obsidian-dev-utils 48.1.2 → 48.1.4

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 (257) hide show
  1. package/CHANGELOG.md +9 -0
  2. package/dist/lib/cjs/Async.cjs +4 -2
  3. package/dist/lib/cjs/Async.d.cts +28 -19
  4. package/dist/lib/cjs/Blob.cjs +3 -4
  5. package/dist/lib/cjs/Debug.cjs +1 -1
  6. package/dist/lib/cjs/DebugController.cjs +1 -1
  7. package/dist/lib/cjs/Enum.cjs +4 -11
  8. package/dist/lib/cjs/Error.cjs +5 -4
  9. package/dist/lib/cjs/Library.cjs +1 -1
  10. package/dist/lib/cjs/ObjectUtils.cjs +15 -7
  11. package/dist/lib/cjs/ObjectUtils.d.cts +17 -13
  12. package/dist/lib/cjs/RegExp.cjs +3 -1
  13. package/dist/lib/cjs/ScriptUtils/ESLint/ESLint.cjs +3 -4
  14. package/dist/lib/cjs/ScriptUtils/ESLint/eslint.config.cjs +4 -2
  15. package/dist/lib/cjs/ScriptUtils/Exec.cjs +1 -1
  16. package/dist/lib/cjs/ScriptUtils/Exec.d.cts +6 -6
  17. package/dist/lib/cjs/ScriptUtils/Fs.cjs +1 -1
  18. package/dist/lib/cjs/ScriptUtils/Fs.d.cts +7 -7
  19. package/dist/lib/cjs/ScriptUtils/JSON.cjs +1 -1
  20. package/dist/lib/cjs/ScriptUtils/JSON.d.cts +1 -1
  21. package/dist/lib/cjs/ScriptUtils/NodeModules.cjs +1 -1
  22. package/dist/lib/cjs/ScriptUtils/Npm.cjs +5 -5
  23. package/dist/lib/cjs/ScriptUtils/Npm.d.cts +2 -2
  24. package/dist/lib/cjs/ScriptUtils/NpmRun.cjs +12 -3
  25. package/dist/lib/cjs/ScriptUtils/NpmRun.d.cts +7 -0
  26. package/dist/lib/cjs/ScriptUtils/cli.cjs +1 -1
  27. package/dist/lib/cjs/ScriptUtils/esbuild/Dependency.cjs +3 -3
  28. package/dist/lib/cjs/ScriptUtils/esbuild/ObsidianPluginBuilder.cjs +11 -11
  29. package/dist/lib/cjs/ScriptUtils/esbuild/ObsidianPluginBuilder.d.cts +4 -4
  30. package/dist/lib/cjs/ScriptUtils/esbuild/changeExtensionPlugin.cjs +1 -1
  31. package/dist/lib/cjs/ScriptUtils/esbuild/copyToObsidianPluginsFolderPlugin.cjs +1 -1
  32. package/dist/lib/cjs/ScriptUtils/esbuild/customEsbuildOptionsPlugin.cjs +1 -1
  33. package/dist/lib/cjs/ScriptUtils/esbuild/fixEsmPlugin.cjs +1 -1
  34. package/dist/lib/cjs/ScriptUtils/esbuild/fixSourceMapsPlugin.cjs +1 -1
  35. package/dist/lib/cjs/ScriptUtils/esbuild/preprocessPlugin.cjs +14 -1
  36. package/dist/lib/cjs/ScriptUtils/esbuild/renameCssPlugin.cjs +1 -1
  37. package/dist/lib/cjs/ScriptUtils/esbuild/svelteWrapperPlugin.cjs +1 -1
  38. package/dist/lib/cjs/ScriptUtils/format.cjs +4 -7
  39. package/dist/lib/cjs/ScriptUtils/markdownlint/markdownlint-cli2-config.cjs +1 -1
  40. package/dist/lib/cjs/ScriptUtils/markdownlint/markdownlint.cjs +3 -4
  41. package/dist/lib/cjs/ScriptUtils/version.cjs +12 -10
  42. package/dist/lib/cjs/String.cjs +1 -1
  43. package/dist/lib/cjs/Transformers/GroupTransformer.cjs +4 -6
  44. package/dist/lib/cjs/Transformers/Transformer.cjs +1 -1
  45. package/dist/lib/cjs/Transformers/Transformer.d.cts +1 -1
  46. package/dist/lib/cjs/Type.cjs +13 -33
  47. package/dist/lib/cjs/Type.d.cts +52 -73
  48. package/dist/lib/cjs/TypeGuards.cjs +156 -0
  49. package/dist/lib/cjs/TypeGuards.d.cts +47 -0
  50. package/dist/lib/cjs/codemirror/StateFieldSpec.cjs +1 -1
  51. package/dist/lib/cjs/index.cjs +4 -1
  52. package/dist/lib/cjs/index.d.cts +1 -0
  53. package/dist/lib/cjs/obsidian/App.cjs +1 -1
  54. package/dist/lib/cjs/obsidian/AsyncWithNotice.cjs +1 -1
  55. package/dist/lib/cjs/obsidian/AsyncWithNotice.d.cts +11 -11
  56. package/dist/lib/cjs/obsidian/AttachmentPath.cjs +1 -1
  57. package/dist/lib/cjs/obsidian/AttachmentPath.d.cts +23 -23
  58. package/dist/lib/cjs/obsidian/Backlink.cjs +3 -3
  59. package/dist/lib/cjs/obsidian/Backlink.d.cts +6 -6
  60. package/dist/lib/cjs/obsidian/Callout.cjs +3 -3
  61. package/dist/lib/cjs/obsidian/Callout.d.cts +6 -6
  62. package/dist/lib/cjs/obsidian/CodeBlockMarkdownInformation.cjs +1 -1
  63. package/dist/lib/cjs/obsidian/Commands/AbstractFileCommandBase.cjs +1 -1
  64. package/dist/lib/cjs/obsidian/Commands/AbstractFileCommandBase.d.cts +7 -7
  65. package/dist/lib/cjs/obsidian/Commands/CommandBase.cjs +3 -4
  66. package/dist/lib/cjs/obsidian/Commands/CommandBase.d.cts +4 -4
  67. package/dist/lib/cjs/obsidian/Commands/EditorCommandBase.cjs +1 -1
  68. package/dist/lib/cjs/obsidian/Commands/EditorCommandBase.d.cts +4 -4
  69. package/dist/lib/cjs/obsidian/Commands/FileCommandBase.cjs +1 -1
  70. package/dist/lib/cjs/obsidian/Commands/FolderCommandBase.cjs +1 -1
  71. package/dist/lib/cjs/obsidian/Commands/NonEditorCommandBase.cjs +1 -1
  72. package/dist/lib/cjs/obsidian/Components/SettingComponents/CodeHighlighterComponent.cjs +13 -2
  73. package/dist/lib/cjs/obsidian/Components/SettingComponents/CodeHighlighterComponent.d.cts +5 -0
  74. package/dist/lib/cjs/obsidian/Components/SettingComponents/MultipleDropdownComponent.cjs +13 -2
  75. package/dist/lib/cjs/obsidian/Components/SettingComponents/MultipleDropdownComponent.d.cts +5 -0
  76. package/dist/lib/cjs/obsidian/Components/SettingComponents/MultipleTextComponent.cjs +13 -2
  77. package/dist/lib/cjs/obsidian/Components/SettingComponents/MultipleTextComponent.d.cts +5 -0
  78. package/dist/lib/cjs/obsidian/Components/SettingComponents/SettingComponentWrapper.cjs +3 -4
  79. package/dist/lib/cjs/obsidian/Components/SettingComponents/TypedDropdownComponent.cjs +13 -2
  80. package/dist/lib/cjs/obsidian/Components/SettingComponents/TypedDropdownComponent.d.cts +5 -0
  81. package/dist/lib/cjs/obsidian/Components/SettingComponents/TypedMultipleDropdownComponent.cjs +13 -2
  82. package/dist/lib/cjs/obsidian/Components/SettingComponents/TypedMultipleDropdownComponent.d.cts +5 -0
  83. package/dist/lib/cjs/obsidian/Components/SettingComponents/ValueComponentWithChangeTracking.cjs +1 -1
  84. package/dist/lib/cjs/obsidian/Dataview.cjs +3 -2
  85. package/dist/lib/cjs/obsidian/Dataview.d.cts +15 -15
  86. package/dist/lib/cjs/obsidian/FileChange.cjs +1 -1
  87. package/dist/lib/cjs/obsidian/FileSystem.cjs +12 -10
  88. package/dist/lib/cjs/obsidian/Frontmatter.cjs +1 -1
  89. package/dist/lib/cjs/obsidian/Frontmatter.d.cts +1 -1
  90. package/dist/lib/cjs/obsidian/Link.cjs +23 -14
  91. package/dist/lib/cjs/obsidian/Link.d.cts +58 -58
  92. package/dist/lib/cjs/obsidian/Loop.cjs +3 -1
  93. package/dist/lib/cjs/obsidian/Loop.d.cts +11 -11
  94. package/dist/lib/cjs/obsidian/Markdown.cjs +3 -4
  95. package/dist/lib/cjs/obsidian/Markdown.d.cts +6 -6
  96. package/dist/lib/cjs/obsidian/MarkdownCodeBlockProcessor.cjs +4 -7
  97. package/dist/lib/cjs/obsidian/MarkdownCodeBlockProcessor.d.cts +12 -12
  98. package/dist/lib/cjs/obsidian/MetadataCache.cjs +3 -5
  99. package/dist/lib/cjs/obsidian/MetadataCache.d.cts +1 -1
  100. package/dist/lib/cjs/obsidian/Modals/Alert.cjs +1 -1
  101. package/dist/lib/cjs/obsidian/Modals/Alert.d.cts +5 -5
  102. package/dist/lib/cjs/obsidian/Modals/Confirm.cjs +1 -1
  103. package/dist/lib/cjs/obsidian/Modals/Confirm.d.cts +6 -6
  104. package/dist/lib/cjs/obsidian/Modals/Prompt.cjs +1 -1
  105. package/dist/lib/cjs/obsidian/Modals/Prompt.d.cts +7 -7
  106. package/dist/lib/cjs/obsidian/Modals/SelectItem.cjs +1 -1
  107. package/dist/lib/cjs/obsidian/Modals/SelectItem.d.cts +5 -5
  108. package/dist/lib/cjs/obsidian/MonkeyAround.cjs +1 -1
  109. package/dist/lib/cjs/obsidian/Pdf.cjs +1 -1
  110. package/dist/lib/cjs/obsidian/Pdf.d.cts +8 -8
  111. package/dist/lib/cjs/obsidian/Plugin/ObsidianPluginRepoPaths.cjs +3 -1
  112. package/dist/lib/cjs/obsidian/Plugin/ObsidianPluginRepoPaths.d.cts +4 -0
  113. package/dist/lib/cjs/obsidian/Plugin/PathSettings.cjs +5 -1
  114. package/dist/lib/cjs/obsidian/Plugin/PluginBase.cjs +1 -1
  115. package/dist/lib/cjs/obsidian/Plugin/PluginSettingsManagerBase.cjs +1 -1
  116. package/dist/lib/cjs/obsidian/Plugin/PluginSettingsManagerBase.d.cts +1 -1
  117. package/dist/lib/cjs/obsidian/Plugin/PluginSettingsTabBase.cjs +1 -1
  118. package/dist/lib/cjs/obsidian/Plugin/PluginSettingsTabBase.d.cts +6 -6
  119. package/dist/lib/cjs/obsidian/Plugin/PluginSettingsWrapper.cjs +1 -1
  120. package/dist/lib/cjs/obsidian/Plugin/PluginTypesBase.cjs +1 -1
  121. package/dist/lib/cjs/obsidian/Queue.cjs +1 -1
  122. package/dist/lib/cjs/obsidian/Queue.d.cts +14 -14
  123. package/dist/lib/cjs/obsidian/React/AppContext.cjs +3 -6
  124. package/dist/lib/cjs/obsidian/Reference.cjs +1 -1
  125. package/dist/lib/cjs/obsidian/RenameDeleteHandler.cjs +1 -1
  126. package/dist/lib/cjs/obsidian/Vault.cjs +1 -1
  127. package/dist/lib/cjs/obsidian/Vault.d.cts +3 -3
  128. package/dist/lib/cjs/obsidian/VaultEx.cjs +1 -1
  129. package/dist/lib/cjs/obsidian/i18n/CustomTypeOptionsBase.cjs +1 -1
  130. package/dist/lib/cjs/obsidian/i18n/DefaultTranslationsBase.cjs +1 -1
  131. package/dist/lib/cjs/obsidian/i18n/i18n.cjs +13 -3
  132. package/dist/lib/esm/Async.d.mts +28 -19
  133. package/dist/lib/esm/Async.mjs +4 -2
  134. package/dist/lib/esm/Blob.mjs +3 -4
  135. package/dist/lib/esm/Debug.mjs +1 -1
  136. package/dist/lib/esm/Enum.mjs +4 -11
  137. package/dist/lib/esm/Error.mjs +5 -4
  138. package/dist/lib/esm/Library.mjs +1 -1
  139. package/dist/lib/esm/ObjectUtils.d.mts +17 -13
  140. package/dist/lib/esm/ObjectUtils.mjs +18 -11
  141. package/dist/lib/esm/RegExp.mjs +3 -1
  142. package/dist/lib/esm/ScriptUtils/ESLint/ESLint.mjs +3 -4
  143. package/dist/lib/esm/ScriptUtils/ESLint/eslint.config.mjs +4 -2
  144. package/dist/lib/esm/ScriptUtils/Exec.d.mts +6 -6
  145. package/dist/lib/esm/ScriptUtils/Exec.mjs +1 -1
  146. package/dist/lib/esm/ScriptUtils/Fs.d.mts +7 -7
  147. package/dist/lib/esm/ScriptUtils/Fs.mjs +1 -1
  148. package/dist/lib/esm/ScriptUtils/JSON.d.mts +1 -1
  149. package/dist/lib/esm/ScriptUtils/JSON.mjs +1 -1
  150. package/dist/lib/esm/ScriptUtils/NodeModules.mjs +1 -1
  151. package/dist/lib/esm/ScriptUtils/Npm.d.mts +2 -2
  152. package/dist/lib/esm/ScriptUtils/Npm.mjs +5 -5
  153. package/dist/lib/esm/ScriptUtils/NpmRun.d.mts +7 -0
  154. package/dist/lib/esm/ScriptUtils/NpmRun.mjs +10 -2
  155. package/dist/lib/esm/ScriptUtils/cli.mjs +1 -1
  156. package/dist/lib/esm/ScriptUtils/esbuild/Dependency.mjs +3 -3
  157. package/dist/lib/esm/ScriptUtils/esbuild/ObsidianPluginBuilder.d.mts +4 -4
  158. package/dist/lib/esm/ScriptUtils/esbuild/ObsidianPluginBuilder.mjs +11 -11
  159. package/dist/lib/esm/ScriptUtils/esbuild/changeExtensionPlugin.mjs +1 -1
  160. package/dist/lib/esm/ScriptUtils/esbuild/copyToObsidianPluginsFolderPlugin.mjs +1 -1
  161. package/dist/lib/esm/ScriptUtils/esbuild/customEsbuildOptionsPlugin.mjs +1 -1
  162. package/dist/lib/esm/ScriptUtils/esbuild/fixEsmPlugin.mjs +1 -1
  163. package/dist/lib/esm/ScriptUtils/esbuild/fixSourceMapsPlugin.mjs +1 -1
  164. package/dist/lib/esm/ScriptUtils/esbuild/preprocessPlugin.mjs +1 -1
  165. package/dist/lib/esm/ScriptUtils/esbuild/renameCssPlugin.mjs +1 -1
  166. package/dist/lib/esm/ScriptUtils/esbuild/svelteWrapperPlugin.mjs +1 -1
  167. package/dist/lib/esm/ScriptUtils/format.mjs +4 -7
  168. package/dist/lib/esm/ScriptUtils/markdownlint/markdownlint-cli2-config.mjs +1 -1
  169. package/dist/lib/esm/ScriptUtils/markdownlint/markdownlint.mjs +3 -4
  170. package/dist/lib/esm/ScriptUtils/version.mjs +19 -11
  171. package/dist/lib/esm/String.mjs +1 -1
  172. package/dist/lib/esm/Transformers/GroupTransformer.mjs +7 -6
  173. package/dist/lib/esm/Transformers/Transformer.d.mts +1 -1
  174. package/dist/lib/esm/Transformers/Transformer.mjs +1 -1
  175. package/dist/lib/esm/Type.d.mts +52 -73
  176. package/dist/lib/esm/Type.mjs +12 -30
  177. package/dist/lib/esm/TypeGuards.d.mts +47 -0
  178. package/dist/lib/esm/TypeGuards.mjs +47 -0
  179. package/dist/lib/esm/index.d.mts +1 -0
  180. package/dist/lib/esm/index.mjs +3 -1
  181. package/dist/lib/esm/obsidian/App.mjs +1 -1
  182. package/dist/lib/esm/obsidian/AsyncWithNotice.d.mts +11 -11
  183. package/dist/lib/esm/obsidian/AsyncWithNotice.mjs +1 -1
  184. package/dist/lib/esm/obsidian/AttachmentPath.d.mts +23 -23
  185. package/dist/lib/esm/obsidian/AttachmentPath.mjs +1 -1
  186. package/dist/lib/esm/obsidian/Backlink.d.mts +6 -6
  187. package/dist/lib/esm/obsidian/Backlink.mjs +3 -3
  188. package/dist/lib/esm/obsidian/Callout.d.mts +6 -6
  189. package/dist/lib/esm/obsidian/Callout.mjs +3 -3
  190. package/dist/lib/esm/obsidian/Commands/AbstractFileCommandBase.d.mts +7 -7
  191. package/dist/lib/esm/obsidian/Commands/AbstractFileCommandBase.mjs +1 -1
  192. package/dist/lib/esm/obsidian/Commands/CommandBase.d.mts +4 -4
  193. package/dist/lib/esm/obsidian/Commands/CommandBase.mjs +3 -4
  194. package/dist/lib/esm/obsidian/Commands/EditorCommandBase.d.mts +4 -4
  195. package/dist/lib/esm/obsidian/Commands/EditorCommandBase.mjs +1 -1
  196. package/dist/lib/esm/obsidian/Commands/FileCommandBase.mjs +1 -1
  197. package/dist/lib/esm/obsidian/Commands/FolderCommandBase.mjs +1 -1
  198. package/dist/lib/esm/obsidian/Commands/NonEditorCommandBase.mjs +1 -1
  199. package/dist/lib/esm/obsidian/Components/SettingComponents/CodeHighlighterComponent.d.mts +5 -0
  200. package/dist/lib/esm/obsidian/Components/SettingComponents/CodeHighlighterComponent.mjs +13 -2
  201. package/dist/lib/esm/obsidian/Components/SettingComponents/MultipleDropdownComponent.d.mts +5 -0
  202. package/dist/lib/esm/obsidian/Components/SettingComponents/MultipleDropdownComponent.mjs +13 -2
  203. package/dist/lib/esm/obsidian/Components/SettingComponents/MultipleTextComponent.d.mts +5 -0
  204. package/dist/lib/esm/obsidian/Components/SettingComponents/MultipleTextComponent.mjs +13 -2
  205. package/dist/lib/esm/obsidian/Components/SettingComponents/SettingComponentWrapper.mjs +3 -4
  206. package/dist/lib/esm/obsidian/Components/SettingComponents/TypedDropdownComponent.d.mts +5 -0
  207. package/dist/lib/esm/obsidian/Components/SettingComponents/TypedDropdownComponent.mjs +13 -2
  208. package/dist/lib/esm/obsidian/Components/SettingComponents/TypedMultipleDropdownComponent.d.mts +5 -0
  209. package/dist/lib/esm/obsidian/Components/SettingComponents/TypedMultipleDropdownComponent.mjs +13 -2
  210. package/dist/lib/esm/obsidian/Dataview.d.mts +15 -15
  211. package/dist/lib/esm/obsidian/Dataview.mjs +4 -6
  212. package/dist/lib/esm/obsidian/FileChange.mjs +1 -1
  213. package/dist/lib/esm/obsidian/FileSystem.mjs +12 -10
  214. package/dist/lib/esm/obsidian/Frontmatter.d.mts +1 -1
  215. package/dist/lib/esm/obsidian/Frontmatter.mjs +1 -1
  216. package/dist/lib/esm/obsidian/Link.d.mts +58 -58
  217. package/dist/lib/esm/obsidian/Link.mjs +26 -14
  218. package/dist/lib/esm/obsidian/Loop.d.mts +11 -11
  219. package/dist/lib/esm/obsidian/Loop.mjs +3 -1
  220. package/dist/lib/esm/obsidian/Markdown.d.mts +6 -6
  221. package/dist/lib/esm/obsidian/Markdown.mjs +3 -4
  222. package/dist/lib/esm/obsidian/MarkdownCodeBlockProcessor.d.mts +12 -12
  223. package/dist/lib/esm/obsidian/MarkdownCodeBlockProcessor.mjs +4 -7
  224. package/dist/lib/esm/obsidian/MetadataCache.d.mts +1 -1
  225. package/dist/lib/esm/obsidian/MetadataCache.mjs +3 -5
  226. package/dist/lib/esm/obsidian/Modals/Alert.d.mts +5 -5
  227. package/dist/lib/esm/obsidian/Modals/Alert.mjs +1 -1
  228. package/dist/lib/esm/obsidian/Modals/Confirm.d.mts +6 -6
  229. package/dist/lib/esm/obsidian/Modals/Confirm.mjs +1 -1
  230. package/dist/lib/esm/obsidian/Modals/Prompt.d.mts +7 -7
  231. package/dist/lib/esm/obsidian/Modals/Prompt.mjs +1 -1
  232. package/dist/lib/esm/obsidian/Modals/SelectItem.d.mts +5 -5
  233. package/dist/lib/esm/obsidian/Modals/SelectItem.mjs +1 -1
  234. package/dist/lib/esm/obsidian/MonkeyAround.mjs +1 -1
  235. package/dist/lib/esm/obsidian/Pdf.d.mts +8 -8
  236. package/dist/lib/esm/obsidian/Pdf.mjs +1 -1
  237. package/dist/lib/esm/obsidian/Plugin/ObsidianPluginRepoPaths.d.mts +4 -0
  238. package/dist/lib/esm/obsidian/Plugin/ObsidianPluginRepoPaths.mjs +3 -1
  239. package/dist/lib/esm/obsidian/Plugin/PathSettings.mjs +5 -1
  240. package/dist/lib/esm/obsidian/Plugin/PluginBase.mjs +1 -1
  241. package/dist/lib/esm/obsidian/Plugin/PluginSettingsManagerBase.d.mts +1 -1
  242. package/dist/lib/esm/obsidian/Plugin/PluginSettingsManagerBase.mjs +1 -1
  243. package/dist/lib/esm/obsidian/Plugin/PluginSettingsTabBase.d.mts +6 -6
  244. package/dist/lib/esm/obsidian/Plugin/PluginSettingsTabBase.mjs +1 -1
  245. package/dist/lib/esm/obsidian/Queue.d.mts +14 -14
  246. package/dist/lib/esm/obsidian/Queue.mjs +1 -1
  247. package/dist/lib/esm/obsidian/React/AppContext.mjs +3 -6
  248. package/dist/lib/esm/obsidian/Reference.mjs +1 -1
  249. package/dist/lib/esm/obsidian/RenameDeleteHandler.mjs +1 -1
  250. package/dist/lib/esm/obsidian/Vault.d.mts +3 -3
  251. package/dist/lib/esm/obsidian/Vault.mjs +1 -1
  252. package/dist/lib/esm/obsidian/VaultEx.mjs +1 -1
  253. package/dist/lib/esm/obsidian/i18n/CustomTypeOptionsBase.mjs +1 -1
  254. package/dist/lib/esm/obsidian/i18n/DefaultTranslationsBase.mjs +1 -1
  255. package/dist/lib/esm/obsidian/i18n/i18n.mjs +2 -3
  256. package/dist/scripts/examples/format.prettier.ts +2 -3
  257. package/package.json +10 -2
@@ -167,4 +167,4 @@ async function selectItem(options) {
167
167
  0 && (module.exports = {
168
168
  selectItem
169
169
  });
170
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL01vZGFscy9TZWxlY3RJdGVtLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBwYWNrYWdlRG9jdW1lbnRhdGlvblxuICpcbiAqIFV0aWxpdHkgZm9yIGRpc3BsYXlpbmcgYSBzZWxlY3Rpb24gbW9kYWwgaW4gT2JzaWRpYW4uXG4gKlxuICogVGhpcyBtb2R1bGUgZXhwb3J0cyBhIGZ1bmN0aW9uIHRvIGRpc3BsYXkgYSBtb2RhbCB0aGF0IGFsbG93cyB0aGUgdXNlciB0byBzZWxlY3QgYW4gaXRlbSBmcm9tIGEgbGlzdC4gVGhlIG1vZGFsIHVzZXMgZnV6enkgc2VhcmNoIHRvIGhlbHAgdGhlIHVzZXIgZmluZCB0aGUgaXRlbS5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7XG4gIEFwcCxcbiAgRnV6enlNYXRjaFxufSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB7IEZ1enp5U3VnZ2VzdE1vZGFsIH0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQgdHlwZSB7IFByb21pc2VSZXNvbHZlIH0gZnJvbSAnLi4vLi4vQXN5bmMudHMnO1xuXG5pbXBvcnQgeyBDc3NDbGFzcyB9IGZyb20gJy4uLy4uL0Nzc0NsYXNzLnRzJztcbmltcG9ydCB7IGFkZFBsdWdpbkNzc0NsYXNzZXMgfSBmcm9tICcuLi9QbHVnaW4vUGx1Z2luQ29udGV4dC50cyc7XG5pbXBvcnQgeyBzaG93TW9kYWwgfSBmcm9tICcuL01vZGFsQmFzZS50cyc7XG5cbi8qKlxuICogT3B0aW9ucyBmb3Ige0BsaW5rIHNlbGVjdEl0ZW19LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFNlbGVjdEl0ZW1PcHRpb25zPFQ+IHtcbiAgLyoqXG4gICAqIEFuIE9ic2lkaWFuIGFwcCBpbnN0YW5jZS5cbiAgICovXG4gIGFwcDogQXBwO1xuXG4gIC8qKlxuICAgKiBBIENTUyBjbGFzcyB0byBhcHBseSB0byB0aGUgbW9kYWwuXG4gICAqL1xuICBjc3NDbGFzcz86IHN0cmluZztcblxuICAvKipcbiAgICogQSBsaXN0IG9mIGl0ZW1zIHRvIGNob29zZSBmcm9tLlxuICAgKi9cbiAgaXRlbXM6IFRbXTtcblxuICAvKipcbiAgICogR2V0IHRoZSBkaXNwbGF5IHRleHQgZm9yIGVhY2ggaXRlbVxuICAgKlxuICAgKiBAcGFyYW0gaXRlbSAtIFRoZSBpdGVtIHRvIGdldCB0aGUgZGlzcGxheSB0ZXh0IGZvci5cbiAgICogQHJldHVybnMgVGhlIGRpc3BsYXkgdGV4dCBmb3IgdGhlIGl0ZW0uXG4gICAqL1xuICBpdGVtVGV4dEZ1bmMoaXRlbTogVCk6IHN0cmluZztcblxuICAvKipcbiAgICogQSBwbGFjZWhvbGRlciB0ZXh0IGZvciB0aGUgaW5wdXQgZmllbGQuXG4gICAqL1xuICBwbGFjZWhvbGRlcj86IHN0cmluZztcbn1cblxuY2xhc3MgSXRlbVNlbGVjdE1vZGFsPFQ+IGV4dGVuZHMgRnV6enlTdWdnZXN0TW9kYWw8VD4ge1xuICBwcml2YXRlIGlzU2VsZWN0ZWQgPSBmYWxzZTtcblxuICBwdWJsaWMgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBvcHRpb25zOiBTZWxlY3RJdGVtT3B0aW9uczxUPiwgcHJpdmF0ZSByZWFkb25seSByZXNvbHZlOiBQcm9taXNlUmVzb2x2ZTxudWxsIHwgVD4pIHtcbiAgICBzdXBlcihvcHRpb25zLmFwcCk7XG4gICAgdGhpcy5zZXRQbGFjZWhvbGRlcihvcHRpb25zLnBsYWNlaG9sZGVyID8/ICcnKTtcbiAgICBhZGRQbHVnaW5Dc3NDbGFzc2VzKHRoaXMuY29udGFpbmVyRWwsIENzc0NsYXNzLlNlbGVjdEl0ZW1Nb2RhbCk7XG4gICAgaWYgKG9wdGlvbnMuY3NzQ2xhc3MpIHtcbiAgICAgIHRoaXMuY29udGFpbmVyRWwuYWRkQ2xhc3Mob3B0aW9ucy5jc3NDbGFzcyk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG92ZXJyaWRlIGdldEl0ZW1zKCk6IFRbXSB7XG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5pdGVtcztcbiAgfVxuXG4gIHB1YmxpYyBvdmVycmlkZSBnZXRJdGVtVGV4dChpdGVtOiBUKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLml0ZW1UZXh0RnVuYyhpdGVtKTtcbiAgfVxuXG4gIHB1YmxpYyBvdmVycmlkZSBvbkNob29zZUl0ZW0oaXRlbTogVCk6IHZvaWQge1xuICAgIHRoaXMucmVzb2x2ZShpdGVtKTtcbiAgfVxuXG4gIHB1YmxpYyBvdmVycmlkZSBvbkNsb3NlKCk6IHZvaWQge1xuICAgIHN1cGVyLm9uQ2xvc2UoKTtcbiAgICBpZiAoIXRoaXMuaXNTZWxlY3RlZCkge1xuICAgICAgdGhpcy5yZXNvbHZlKG51bGwpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBvdmVycmlkZSBzZWxlY3RTdWdnZXN0aW9uKFxuICAgIHZhbHVlOiBGdXp6eU1hdGNoPFQ+LFxuICAgIGV2dDogS2V5Ym9hcmRFdmVudCB8IE1vdXNlRXZlbnRcbiAgKTogdm9pZCB7XG4gICAgdGhpcy5pc1NlbGVjdGVkID0gdHJ1ZTtcbiAgICBzdXBlci5zZWxlY3RTdWdnZXN0aW9uKHZhbHVlLCBldnQpO1xuICB9XG59XG5cbi8qKlxuICogRGlzcGxheXMgYSBzZWxlY3Rpb24gbW9kYWwgaW4gT2JzaWRpYW4gZm9yIGNob29zaW5nIGFuIGl0ZW0gZnJvbSBhIGxpc3QuXG4gKlxuICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgb3B0aW9ucyBmb3IgdGhlIHNlbGVjdGlvbiBtb2RhbC5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgd2l0aCB0aGUgc2VsZWN0ZWQgaXRlbSBvciBudWxsIGlmIG5vIGl0ZW0gd2FzIHNlbGVjdGVkLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gc2VsZWN0SXRlbTxUPihvcHRpb25zOiBTZWxlY3RJdGVtT3B0aW9uczxUPik6IFByb21pc2U8bnVsbCB8IFQ+IHtcbiAgcmV0dXJuIGF3YWl0IHNob3dNb2RhbDxudWxsIHwgVD4oKHJlc29sdmUpID0+IG5ldyBJdGVtU2VsZWN0TW9kYWwob3B0aW9ucywgcmVzb2x2ZSkpO1xufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFhQSxzQkFBa0M7QUFJbEMsc0JBQXlCO0FBQ3pCLDJCQUFvQztBQUNwQyx1QkFBMEI7QUFtQzFCLE1BQU0sd0JBQTJCLGtDQUFxQjtBQUFBLEVBRzdDLFlBQTZCLFNBQWdELFNBQW1DO0FBQ3JILFVBQU0sUUFBUSxHQUFHO0FBRGlCO0FBQWdEO0FBRWxGLFNBQUssZUFBZSxRQUFRLGVBQWUsRUFBRTtBQUM3QyxrREFBb0IsS0FBSyxhQUFhLHlCQUFTLGVBQWU7QUFDOUQsUUFBSSxRQUFRLFVBQVU7QUFDcEIsV0FBSyxZQUFZLFNBQVMsUUFBUSxRQUFRO0FBQUEsSUFDNUM7QUFBQSxFQUNGO0FBQUEsRUFUUSxhQUFhO0FBQUEsRUFXTCxXQUFnQjtBQUM5QixXQUFPLEtBQUssUUFBUTtBQUFBLEVBQ3RCO0FBQUEsRUFFZ0IsWUFBWSxNQUFpQjtBQUMzQyxXQUFPLEtBQUssUUFBUSxhQUFhLElBQUk7QUFBQSxFQUN2QztBQUFBLEVBRWdCLGFBQWEsTUFBZTtBQUMxQyxTQUFLLFFBQVEsSUFBSTtBQUFBLEVBQ25CO0FBQUEsRUFFZ0IsVUFBZ0I7QUFDOUIsVUFBTSxRQUFRO0FBQ2QsUUFBSSxDQUFDLEtBQUssWUFBWTtBQUNwQixXQUFLLFFBQVEsSUFBSTtBQUFBLElBQ25CO0FBQUEsRUFDRjtBQUFBLEVBRWdCLGlCQUNkLE9BQ0EsS0FDTTtBQUNOLFNBQUssYUFBYTtBQUNsQixVQUFNLGlCQUFpQixPQUFPLEdBQUc7QUFBQSxFQUNuQztBQUNGO0FBUUEsZUFBc0IsV0FBYyxTQUFrRDtBQUNwRixTQUFPLFVBQU0sNEJBQW9CLENBQUMsWUFBWSxJQUFJLGdCQUFnQixTQUFTLE9BQU8sQ0FBQztBQUNyRjsiLAogICJuYW1lcyI6IFtdCn0K
170
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL01vZGFscy9TZWxlY3RJdGVtLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBwYWNrYWdlRG9jdW1lbnRhdGlvblxuICpcbiAqIFV0aWxpdHkgZm9yIGRpc3BsYXlpbmcgYSBzZWxlY3Rpb24gbW9kYWwgaW4gT2JzaWRpYW4uXG4gKlxuICogVGhpcyBtb2R1bGUgZXhwb3J0cyBhIGZ1bmN0aW9uIHRvIGRpc3BsYXkgYSBtb2RhbCB0aGF0IGFsbG93cyB0aGUgdXNlciB0byBzZWxlY3QgYW4gaXRlbSBmcm9tIGEgbGlzdC4gVGhlIG1vZGFsIHVzZXMgZnV6enkgc2VhcmNoIHRvIGhlbHAgdGhlIHVzZXIgZmluZCB0aGUgaXRlbS5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7XG4gIEFwcCxcbiAgRnV6enlNYXRjaFxufSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB7IEZ1enp5U3VnZ2VzdE1vZGFsIH0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQgdHlwZSB7IFByb21pc2VSZXNvbHZlIH0gZnJvbSAnLi4vLi4vQXN5bmMudHMnO1xuXG5pbXBvcnQgeyBDc3NDbGFzcyB9IGZyb20gJy4uLy4uL0Nzc0NsYXNzLnRzJztcbmltcG9ydCB7IGFkZFBsdWdpbkNzc0NsYXNzZXMgfSBmcm9tICcuLi9QbHVnaW4vUGx1Z2luQ29udGV4dC50cyc7XG5pbXBvcnQgeyBzaG93TW9kYWwgfSBmcm9tICcuL01vZGFsQmFzZS50cyc7XG5cbi8qKlxuICogT3B0aW9ucyBmb3Ige0BsaW5rIHNlbGVjdEl0ZW19LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFNlbGVjdEl0ZW1PcHRpb25zPFQ+IHtcbiAgLyoqXG4gICAqIEFuIE9ic2lkaWFuIGFwcCBpbnN0YW5jZS5cbiAgICovXG4gIHJlYWRvbmx5IGFwcDogQXBwO1xuXG4gIC8qKlxuICAgKiBBIENTUyBjbGFzcyB0byBhcHBseSB0byB0aGUgbW9kYWwuXG4gICAqL1xuICByZWFkb25seSBjc3NDbGFzcz86IHN0cmluZztcblxuICAvKipcbiAgICogQSBsaXN0IG9mIGl0ZW1zIHRvIGNob29zZSBmcm9tLlxuICAgKi9cbiAgcmVhZG9ubHkgaXRlbXM6IFRbXTtcblxuICAvKipcbiAgICogR2V0IHRoZSBkaXNwbGF5IHRleHQgZm9yIGVhY2ggaXRlbVxuICAgKlxuICAgKiBAcGFyYW0gaXRlbSAtIFRoZSBpdGVtIHRvIGdldCB0aGUgZGlzcGxheSB0ZXh0IGZvci5cbiAgICogQHJldHVybnMgVGhlIGRpc3BsYXkgdGV4dCBmb3IgdGhlIGl0ZW0uXG4gICAqL1xuICByZWFkb25seSBpdGVtVGV4dEZ1bmM6IChpdGVtOiBUKSA9PiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEEgcGxhY2Vob2xkZXIgdGV4dCBmb3IgdGhlIGlucHV0IGZpZWxkLlxuICAgKi9cbiAgcmVhZG9ubHkgcGxhY2Vob2xkZXI/OiBzdHJpbmc7XG59XG5cbmNsYXNzIEl0ZW1TZWxlY3RNb2RhbDxUPiBleHRlbmRzIEZ1enp5U3VnZ2VzdE1vZGFsPFQ+IHtcbiAgcHJpdmF0ZSBpc1NlbGVjdGVkID0gZmFsc2U7XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgb3B0aW9uczogU2VsZWN0SXRlbU9wdGlvbnM8VD4sIHByaXZhdGUgcmVhZG9ubHkgcmVzb2x2ZTogUHJvbWlzZVJlc29sdmU8bnVsbCB8IFQ+KSB7XG4gICAgc3VwZXIob3B0aW9ucy5hcHApO1xuICAgIHRoaXMuc2V0UGxhY2Vob2xkZXIob3B0aW9ucy5wbGFjZWhvbGRlciA/PyAnJyk7XG4gICAgYWRkUGx1Z2luQ3NzQ2xhc3Nlcyh0aGlzLmNvbnRhaW5lckVsLCBDc3NDbGFzcy5TZWxlY3RJdGVtTW9kYWwpO1xuICAgIGlmIChvcHRpb25zLmNzc0NsYXNzKSB7XG4gICAgICB0aGlzLmNvbnRhaW5lckVsLmFkZENsYXNzKG9wdGlvbnMuY3NzQ2xhc3MpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBvdmVycmlkZSBnZXRJdGVtcygpOiBUW10ge1xuICAgIHJldHVybiB0aGlzLm9wdGlvbnMuaXRlbXM7XG4gIH1cblxuICBwdWJsaWMgb3ZlcnJpZGUgZ2V0SXRlbVRleHQoaXRlbTogVCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5pdGVtVGV4dEZ1bmMoaXRlbSk7XG4gIH1cblxuICBwdWJsaWMgb3ZlcnJpZGUgb25DaG9vc2VJdGVtKGl0ZW06IFQpOiB2b2lkIHtcbiAgICB0aGlzLnJlc29sdmUoaXRlbSk7XG4gIH1cblxuICBwdWJsaWMgb3ZlcnJpZGUgb25DbG9zZSgpOiB2b2lkIHtcbiAgICBzdXBlci5vbkNsb3NlKCk7XG4gICAgaWYgKCF0aGlzLmlzU2VsZWN0ZWQpIHtcbiAgICAgIHRoaXMucmVzb2x2ZShudWxsKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb3ZlcnJpZGUgc2VsZWN0U3VnZ2VzdGlvbihcbiAgICB2YWx1ZTogRnV6enlNYXRjaDxUPixcbiAgICBldnQ6IEtleWJvYXJkRXZlbnQgfCBNb3VzZUV2ZW50XG4gICk6IHZvaWQge1xuICAgIHRoaXMuaXNTZWxlY3RlZCA9IHRydWU7XG4gICAgc3VwZXIuc2VsZWN0U3VnZ2VzdGlvbih2YWx1ZSwgZXZ0KTtcbiAgfVxufVxuXG4vKipcbiAqIERpc3BsYXlzIGEgc2VsZWN0aW9uIG1vZGFsIGluIE9ic2lkaWFuIGZvciBjaG9vc2luZyBhbiBpdGVtIGZyb20gYSBsaXN0LlxuICpcbiAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIG9wdGlvbnMgZm9yIHRoZSBzZWxlY3Rpb24gbW9kYWwuXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHdpdGggdGhlIHNlbGVjdGVkIGl0ZW0gb3IgbnVsbCBpZiBubyBpdGVtIHdhcyBzZWxlY3RlZC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHNlbGVjdEl0ZW08VD4ob3B0aW9uczogU2VsZWN0SXRlbU9wdGlvbnM8VD4pOiBQcm9taXNlPG51bGwgfCBUPiB7XG4gIHJldHVybiBhd2FpdCBzaG93TW9kYWw8bnVsbCB8IFQ+KChyZXNvbHZlKSA9PiBuZXcgSXRlbVNlbGVjdE1vZGFsKG9wdGlvbnMsIHJlc29sdmUpKTtcbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBYUEsc0JBQWtDO0FBSWxDLHNCQUF5QjtBQUN6QiwyQkFBb0M7QUFDcEMsdUJBQTBCO0FBbUMxQixNQUFNLHdCQUEyQixrQ0FBcUI7QUFBQSxFQUc3QyxZQUE2QixTQUFnRCxTQUFtQztBQUNySCxVQUFNLFFBQVEsR0FBRztBQURpQjtBQUFnRDtBQUVsRixTQUFLLGVBQWUsUUFBUSxlQUFlLEVBQUU7QUFDN0Msa0RBQW9CLEtBQUssYUFBYSx5QkFBUyxlQUFlO0FBQzlELFFBQUksUUFBUSxVQUFVO0FBQ3BCLFdBQUssWUFBWSxTQUFTLFFBQVEsUUFBUTtBQUFBLElBQzVDO0FBQUEsRUFDRjtBQUFBLEVBVFEsYUFBYTtBQUFBLEVBV0wsV0FBZ0I7QUFDOUIsV0FBTyxLQUFLLFFBQVE7QUFBQSxFQUN0QjtBQUFBLEVBRWdCLFlBQVksTUFBaUI7QUFDM0MsV0FBTyxLQUFLLFFBQVEsYUFBYSxJQUFJO0FBQUEsRUFDdkM7QUFBQSxFQUVnQixhQUFhLE1BQWU7QUFDMUMsU0FBSyxRQUFRLElBQUk7QUFBQSxFQUNuQjtBQUFBLEVBRWdCLFVBQWdCO0FBQzlCLFVBQU0sUUFBUTtBQUNkLFFBQUksQ0FBQyxLQUFLLFlBQVk7QUFDcEIsV0FBSyxRQUFRLElBQUk7QUFBQSxJQUNuQjtBQUFBLEVBQ0Y7QUFBQSxFQUVnQixpQkFDZCxPQUNBLEtBQ007QUFDTixTQUFLLGFBQWE7QUFDbEIsVUFBTSxpQkFBaUIsT0FBTyxHQUFHO0FBQUEsRUFDbkM7QUFDRjtBQVFBLGVBQXNCLFdBQWMsU0FBa0Q7QUFDcEYsU0FBTyxVQUFNLDRCQUFvQixDQUFDLFlBQVksSUFBSSxnQkFBZ0IsU0FBUyxPQUFPLENBQUM7QUFDckY7IiwKICAibmFtZXMiOiBbXQp9Cg==
@@ -13,26 +13,26 @@ export interface SelectItemOptions<T> {
13
13
  /**
14
14
  * An Obsidian app instance.
15
15
  */
16
- app: App;
16
+ readonly app: App;
17
17
  /**
18
18
  * A CSS class to apply to the modal.
19
19
  */
20
- cssClass?: string;
20
+ readonly cssClass?: string;
21
21
  /**
22
22
  * A list of items to choose from.
23
23
  */
24
- items: T[];
24
+ readonly items: T[];
25
25
  /**
26
26
  * Get the display text for each item
27
27
  *
28
28
  * @param item - The item to get the display text for.
29
29
  * @returns The display text for the item.
30
30
  */
31
- itemTextFunc(item: T): string;
31
+ readonly itemTextFunc: (item: T) => string;
32
32
  /**
33
33
  * A placeholder text for the input field.
34
34
  */
35
- placeholder?: string;
35
+ readonly placeholder?: string;
36
36
  }
37
37
  /**
38
38
  * Displays a selection modal in Obsidian for choosing an item from a list.
@@ -170,4 +170,4 @@ function registerPatch(component, obj, factories) {
170
170
  invokeWithPatchAsync,
171
171
  registerPatch
172
172
  });
173
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL01vbmtleUFyb3VuZC50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAcGFja2FnZURvY3VtZW50YXRpb25cbiAqXG4gKiBJbXByb3ZlZCB0eXBlLXNhZmUgd3JhcHBlciBvZiB7QGxpbmsgaHR0cHM6Ly93d3cubnBtanMuY29tL3BhY2thZ2UvbW9ua2V5LWFyb3VuZH0gbGlicmFyeS5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7IENvbXBvbmVudCB9IGZyb20gJ29ic2lkaWFuJztcbmltcG9ydCB0eXBlIHsgQ29uZGl0aW9uYWxLZXlzIH0gZnJvbSAndHlwZS1mZXN0JztcblxuaW1wb3J0IHsgYXJvdW5kIGFzIG9yaWdpbmFsQXJvdW5kIH0gZnJvbSAnbW9ua2V5LWFyb3VuZCc7XG5cbmltcG9ydCB0eXBlIHsgR2VuZXJpY09iamVjdCB9IGZyb20gJy4uL09iamVjdFV0aWxzLnRzJztcblxuLyoqXG4gKiBBIHR5cGUgb2YgdGhlIGZhY3RvcmllcyB0byBhcHBseSB0byB0aGUgb2JqZWN0LlxuICpcbiAqIEB0eXBlUGFyYW0gT2JqIC0gVGhlIG9iamVjdCB0byBwYXRjaC5cbiAqL1xuZXhwb3J0IHR5cGUgRmFjdG9yaWVzPE9iaiBleHRlbmRzIG9iamVjdD4gPSBQYXJ0aWFsPFxuICB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnNhZmUtZnVuY3Rpb24tdHlwZSAtLSBXZSBuZWVkIHRvIHVzZSBgRnVuY3Rpb25gIHR5cGUgYXMgYSBnZW5lcmljIHJlc3RyaWN0aW9uLlxuICAgIFtLZXkgaW4gQ29uZGl0aW9uYWxLZXlzPE9iaiwgRnVuY3Rpb24gfCB1bmRlZmluZWQ+XTogV3JhcHBlckZhY3Rvcnk8RXh0cmFjdDxPYmpbS2V5XSwgRnVuY3Rpb24gfCB1bmRlZmluZWQ+PjtcbiAgfVxuPjtcblxudHlwZSBPcmlnaW5hbEZhY3RvcmllczxPYmogZXh0ZW5kcyBHZW5lcmljT2JqZWN0PiA9IFBhcmFtZXRlcnM8dHlwZW9mIG9yaWdpbmFsQXJvdW5kPE9iaj4+WzFdO1xuXG50eXBlIFVuaW5zdGFsbGVyID0gKCkgPT4gdm9pZDtcblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnNhZmUtZnVuY3Rpb24tdHlwZSAtLSBXZSBuZWVkIHRvIHVzZSBgRnVuY3Rpb25gIHR5cGUgYXMgYSBnZW5lcmljIHJlc3RyaWN0aW9uLlxudHlwZSBXcmFwcGVyRmFjdG9yeTxUIGV4dGVuZHMgRnVuY3Rpb24gfCB1bmRlZmluZWQ+ID0gKG5leHQ6IFQpID0+IFQ7XG5cbi8qKlxuICogQXBwbGllcyBhIHBhdGNoIHRvIHRoZSBvYmplY3QuXG4gKiBCZXR0ZXIgc3Ryb25nbHktdHlwZWQgdmVyc2lvbiBvZiBgbW9ua2V5LWFyb3VuZGAuXG4gKlxuICogQHR5cGVQYXJhbSBPYmogLSBUaGUgb2JqZWN0IHRvIHBhdGNoLlxuICogQHBhcmFtIG9iaiAtIFRoZSBvYmplY3QgdG8gcGF0Y2guXG4gKiBAcGFyYW0gZmFjdG9yaWVzIC0gVGhlIGZhY3RvcmllcyB0byBhcHBseSB0byB0aGUgb2JqZWN0LlxuICogQHJldHVybnMgVGhlIHVuaW5zdGFsbGVyIHRoYXQgcmVtb3ZlcyB0aGUgcGF0Y2ggd2hlbiBjYWxsZWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhcm91bmQ8T2JqIGV4dGVuZHMgb2JqZWN0PihvYmo6IE9iaiwgZmFjdG9yaWVzOiBGYWN0b3JpZXM8T2JqPik6IFVuaW5zdGFsbGVyIHtcbiAgcmV0dXJuIG9yaWdpbmFsQXJvdW5kKG9iaiBhcyBHZW5lcmljT2JqZWN0LCBmYWN0b3JpZXMgYXMgT3JpZ2luYWxGYWN0b3JpZXM8R2VuZXJpY09iamVjdD4pO1xufVxuXG4vKipcbiAqIEludm9rZXMgYSBmdW5jdGlvbiB3aXRoIGEgcGF0Y2ggYXBwbGllZCB0byB0aGUgb2JqZWN0LlxuICogQSBwYXRjaCBpcyBhdXRvbWF0aWNhbGx5IHJlbW92ZWQgd2hlbiB0aGUgZnVuY3Rpb24gcmV0dXJucy5cbiAqXG4gKiBAdHlwZVBhcmFtIE9iaiAtIFRoZSBvYmplY3QgdG8gcGF0Y2guXG4gKiBAdHlwZVBhcmFtIFJlc3VsdCAtIFRoZSB0eXBlIG9mIHRoZSByZXN1bHQgb2YgdGhlIGZ1bmN0aW9uLlxuICogQHBhcmFtIG9iaiAtIFRoZSBvYmplY3QgdG8gcGF0Y2guXG4gKiBAcGFyYW0gZmFjdG9yaWVzIC0gVGhlIGZhY3RvcmllcyB0byBhcHBseSB0byB0aGUgb2JqZWN0LlxuICogQHBhcmFtIGZuIC0gVGhlIGZ1bmN0aW9uIHRvIGludm9rZS5cbiAqIEByZXR1cm5zIFRoZSByZXN1bHQgb2YgdGhlIGZ1bmN0aW9uLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaW52b2tlV2l0aFBhdGNoPE9iaiBleHRlbmRzIG9iamVjdCwgUmVzdWx0PihvYmo6IE9iaiwgZmFjdG9yaWVzOiBGYWN0b3JpZXM8T2JqPiwgZm46ICgpID0+IFJlc3VsdCk6IFJlc3VsdCB7XG4gIGNvbnN0IHVuaW5zdGFsbGVyID0gYXJvdW5kKG9iaiwgZmFjdG9yaWVzKTtcbiAgdHJ5IHtcbiAgICByZXR1cm4gZm4oKTtcbiAgfSBmaW5hbGx5IHtcbiAgICB1bmluc3RhbGxlcigpO1xuICB9XG59XG5cbi8qKlxuICogSW52b2tlcyBhbiBhc3luYyBmdW5jdGlvbiB3aXRoIGEgcGF0Y2ggYXBwbGllZCB0byB0aGUgb2JqZWN0LlxuICogQSBwYXRjaCBpcyBhdXRvbWF0aWNhbGx5IHJlbW92ZWQgd2hlbiB0aGUgZnVuY3Rpb24gcmV0dXJucy5cbiAqXG4gKiBAdHlwZVBhcmFtIE9iaiAtIFRoZSBvYmplY3QgdG8gcGF0Y2guXG4gKiBAdHlwZVBhcmFtIFJlc3VsdCAtIFRoZSB0eXBlIG9mIHRoZSByZXN1bHQgb2YgdGhlIGZ1bmN0aW9uLlxuICogQHBhcmFtIG9iaiAtIFRoZSBvYmplY3QgdG8gcGF0Y2guXG4gKiBAcGFyYW0gZmFjdG9yaWVzIC0gVGhlIGZhY3RvcmllcyB0byBhcHBseSB0byB0aGUgb2JqZWN0LlxuICogQHBhcmFtIGZuIC0gVGhlIGZ1bmN0aW9uIHRvIGludm9rZS5cbiAqIEByZXR1cm5zIFRoZSByZXN1bHQgb2YgdGhlIGZ1bmN0aW9uLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gaW52b2tlV2l0aFBhdGNoQXN5bmM8T2JqIGV4dGVuZHMgb2JqZWN0LCBSZXN1bHQ+KG9iajogT2JqLCBmYWN0b3JpZXM6IEZhY3RvcmllczxPYmo+LCBmbjogKCkgPT4gUHJvbWlzZTxSZXN1bHQ+KTogUHJvbWlzZTxSZXN1bHQ+IHtcbiAgY29uc3QgdW5pbnN0YWxsZXIgPSBhcm91bmQob2JqLCBmYWN0b3JpZXMpO1xuICB0cnkge1xuICAgIHJldHVybiBhd2FpdCBmbigpO1xuICB9IGZpbmFsbHkge1xuICAgIHVuaW5zdGFsbGVyKCk7XG4gIH1cbn1cblxuLyoqXG4gKiBSZWdpc3RlcnMgYSBwYXRjaCB0byB0aGUgb2JqZWN0LlxuICpcbiAqIEB0eXBlUGFyYW0gT2JqIC0gVGhlIG9iamVjdCB0byBwYXRjaC5cbiAqIEBwYXJhbSBjb21wb25lbnQgLSBUaGUgY29tcG9uZW50IHRvIHJlZ2lzdGVyIHRoZSBwYXRjaCB0by5cbiAqIEBwYXJhbSBvYmogLSBUaGUgb2JqZWN0IHRvIHBhdGNoLlxuICogQHBhcmFtIGZhY3RvcmllcyAtIFRoZSBmYWN0b3JpZXMgdG8gYXBwbHkgdG8gdGhlIG9iamVjdC5cbiAqIEByZXR1cm5zIFRoZSB1bmluc3RhbGxlci5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlZ2lzdGVyUGF0Y2g8T2JqIGV4dGVuZHMgb2JqZWN0Pihjb21wb25lbnQ6IENvbXBvbmVudCwgb2JqOiBPYmosIGZhY3RvcmllczogRmFjdG9yaWVzPE9iaj4pOiBVbmluc3RhbGxlciB7XG4gIGNvbnN0IHVuaW5zdGFsbGVyID0gYXJvdW5kKG9iaiwgZmFjdG9yaWVzKTtcbiAgbGV0IGlzVW5pbnN0YWxsZWQgPSBmYWxzZTtcblxuICBmdW5jdGlvbiB1bmluc3RhbGxlcldyYXBwZXIoKTogdm9pZCB7XG4gICAgaWYgKGlzVW5pbnN0YWxsZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgIHVuaW5zdGFsbGVyKCk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGlzVW5pbnN0YWxsZWQgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIGNvbXBvbmVudC5yZWdpc3Rlcih1bmluc3RhbGxlcldyYXBwZXIpO1xuICByZXR1cm4gdW5pbnN0YWxsZXI7XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQVNBLDJCQUF5QztBQWdDbEMsU0FBUyxPQUEyQixLQUFVLFdBQXdDO0FBQzNGLGFBQU8scUJBQUFBLFFBQWUsS0FBc0IsU0FBNkM7QUFDM0Y7QUFhTyxTQUFTLGdCQUE0QyxLQUFVLFdBQTJCLElBQTBCO0FBQ3pILFFBQU0sY0FBYyxPQUFPLEtBQUssU0FBUztBQUN6QyxNQUFJO0FBQ0YsV0FBTyxHQUFHO0FBQUEsRUFDWixVQUFFO0FBQ0EsZ0JBQVk7QUFBQSxFQUNkO0FBQ0Y7QUFhQSxlQUFzQixxQkFBaUQsS0FBVSxXQUEyQixJQUE0QztBQUN0SixRQUFNLGNBQWMsT0FBTyxLQUFLLFNBQVM7QUFDekMsTUFBSTtBQUNGLFdBQU8sTUFBTSxHQUFHO0FBQUEsRUFDbEIsVUFBRTtBQUNBLGdCQUFZO0FBQUEsRUFDZDtBQUNGO0FBV08sU0FBUyxjQUFrQyxXQUFzQixLQUFVLFdBQXdDO0FBQ3hILFFBQU0sY0FBYyxPQUFPLEtBQUssU0FBUztBQUN6QyxNQUFJLGdCQUFnQjtBQUVwQixXQUFTLHFCQUEyQjtBQUNsQyxRQUFJLGVBQWU7QUFDakI7QUFBQSxJQUNGO0FBQ0EsUUFBSTtBQUNGLGtCQUFZO0FBQUEsSUFDZCxVQUFFO0FBQ0Esc0JBQWdCO0FBQUEsSUFDbEI7QUFBQSxFQUNGO0FBRUEsWUFBVSxTQUFTLGtCQUFrQjtBQUNyQyxTQUFPO0FBQ1Q7IiwKICAibmFtZXMiOiBbIm9yaWdpbmFsQXJvdW5kIl0KfQo=
173
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL01vbmtleUFyb3VuZC50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAcGFja2FnZURvY3VtZW50YXRpb25cbiAqXG4gKiBJbXByb3ZlZCB0eXBlLXNhZmUgd3JhcHBlciBvZiB7QGxpbmsgaHR0cHM6Ly93d3cubnBtanMuY29tL3BhY2thZ2UvbW9ua2V5LWFyb3VuZH0gbGlicmFyeS5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7IENvbXBvbmVudCB9IGZyb20gJ29ic2lkaWFuJztcbmltcG9ydCB0eXBlIHsgQ29uZGl0aW9uYWxLZXlzIH0gZnJvbSAndHlwZS1mZXN0JztcblxuaW1wb3J0IHsgYXJvdW5kIGFzIG9yaWdpbmFsQXJvdW5kIH0gZnJvbSAnbW9ua2V5LWFyb3VuZCc7XG5cbmltcG9ydCB0eXBlIHsgR2VuZXJpY09iamVjdCB9IGZyb20gJy4uL1R5cGVHdWFyZHMudHMnO1xuXG4vKipcbiAqIEEgdHlwZSBvZiB0aGUgZmFjdG9yaWVzIHRvIGFwcGx5IHRvIHRoZSBvYmplY3QuXG4gKlxuICogQHR5cGVQYXJhbSBPYmogLSBUaGUgb2JqZWN0IHRvIHBhdGNoLlxuICovXG5leHBvcnQgdHlwZSBGYWN0b3JpZXM8T2JqIGV4dGVuZHMgb2JqZWN0PiA9IFBhcnRpYWw8XG4gIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVuc2FmZS1mdW5jdGlvbi10eXBlIC0tIFdlIG5lZWQgdG8gdXNlIGBGdW5jdGlvbmAgdHlwZSBhcyBhIGdlbmVyaWMgcmVzdHJpY3Rpb24uXG4gICAgW0tleSBpbiBDb25kaXRpb25hbEtleXM8T2JqLCBGdW5jdGlvbiB8IHVuZGVmaW5lZD5dOiBXcmFwcGVyRmFjdG9yeTxFeHRyYWN0PE9ialtLZXldLCBGdW5jdGlvbiB8IHVuZGVmaW5lZD4+O1xuICB9XG4+O1xuXG50eXBlIE9yaWdpbmFsRmFjdG9yaWVzPE9iaiBleHRlbmRzIEdlbmVyaWNPYmplY3Q+ID0gUGFyYW1ldGVyczx0eXBlb2Ygb3JpZ2luYWxBcm91bmQ8T2JqPj5bMV07XG5cbnR5cGUgVW5pbnN0YWxsZXIgPSAoKSA9PiB2b2lkO1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVuc2FmZS1mdW5jdGlvbi10eXBlIC0tIFdlIG5lZWQgdG8gdXNlIGBGdW5jdGlvbmAgdHlwZSBhcyBhIGdlbmVyaWMgcmVzdHJpY3Rpb24uXG50eXBlIFdyYXBwZXJGYWN0b3J5PFQgZXh0ZW5kcyBGdW5jdGlvbiB8IHVuZGVmaW5lZD4gPSAobmV4dDogVCkgPT4gVDtcblxuLyoqXG4gKiBBcHBsaWVzIGEgcGF0Y2ggdG8gdGhlIG9iamVjdC5cbiAqIEJldHRlciBzdHJvbmdseS10eXBlZCB2ZXJzaW9uIG9mIGBtb25rZXktYXJvdW5kYC5cbiAqXG4gKiBAdHlwZVBhcmFtIE9iaiAtIFRoZSBvYmplY3QgdG8gcGF0Y2guXG4gKiBAcGFyYW0gb2JqIC0gVGhlIG9iamVjdCB0byBwYXRjaC5cbiAqIEBwYXJhbSBmYWN0b3JpZXMgLSBUaGUgZmFjdG9yaWVzIHRvIGFwcGx5IHRvIHRoZSBvYmplY3QuXG4gKiBAcmV0dXJucyBUaGUgdW5pbnN0YWxsZXIgdGhhdCByZW1vdmVzIHRoZSBwYXRjaCB3aGVuIGNhbGxlZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFyb3VuZDxPYmogZXh0ZW5kcyBvYmplY3Q+KG9iajogT2JqLCBmYWN0b3JpZXM6IEZhY3RvcmllczxPYmo+KTogVW5pbnN0YWxsZXIge1xuICByZXR1cm4gb3JpZ2luYWxBcm91bmQob2JqIGFzIEdlbmVyaWNPYmplY3QsIGZhY3RvcmllcyBhcyBPcmlnaW5hbEZhY3RvcmllczxHZW5lcmljT2JqZWN0Pik7XG59XG5cbi8qKlxuICogSW52b2tlcyBhIGZ1bmN0aW9uIHdpdGggYSBwYXRjaCBhcHBsaWVkIHRvIHRoZSBvYmplY3QuXG4gKiBBIHBhdGNoIGlzIGF1dG9tYXRpY2FsbHkgcmVtb3ZlZCB3aGVuIHRoZSBmdW5jdGlvbiByZXR1cm5zLlxuICpcbiAqIEB0eXBlUGFyYW0gT2JqIC0gVGhlIG9iamVjdCB0byBwYXRjaC5cbiAqIEB0eXBlUGFyYW0gUmVzdWx0IC0gVGhlIHR5cGUgb2YgdGhlIHJlc3VsdCBvZiB0aGUgZnVuY3Rpb24uXG4gKiBAcGFyYW0gb2JqIC0gVGhlIG9iamVjdCB0byBwYXRjaC5cbiAqIEBwYXJhbSBmYWN0b3JpZXMgLSBUaGUgZmFjdG9yaWVzIHRvIGFwcGx5IHRvIHRoZSBvYmplY3QuXG4gKiBAcGFyYW0gZm4gLSBUaGUgZnVuY3Rpb24gdG8gaW52b2tlLlxuICogQHJldHVybnMgVGhlIHJlc3VsdCBvZiB0aGUgZnVuY3Rpb24uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpbnZva2VXaXRoUGF0Y2g8T2JqIGV4dGVuZHMgb2JqZWN0LCBSZXN1bHQ+KG9iajogT2JqLCBmYWN0b3JpZXM6IEZhY3RvcmllczxPYmo+LCBmbjogKCkgPT4gUmVzdWx0KTogUmVzdWx0IHtcbiAgY29uc3QgdW5pbnN0YWxsZXIgPSBhcm91bmQob2JqLCBmYWN0b3JpZXMpO1xuICB0cnkge1xuICAgIHJldHVybiBmbigpO1xuICB9IGZpbmFsbHkge1xuICAgIHVuaW5zdGFsbGVyKCk7XG4gIH1cbn1cblxuLyoqXG4gKiBJbnZva2VzIGFuIGFzeW5jIGZ1bmN0aW9uIHdpdGggYSBwYXRjaCBhcHBsaWVkIHRvIHRoZSBvYmplY3QuXG4gKiBBIHBhdGNoIGlzIGF1dG9tYXRpY2FsbHkgcmVtb3ZlZCB3aGVuIHRoZSBmdW5jdGlvbiByZXR1cm5zLlxuICpcbiAqIEB0eXBlUGFyYW0gT2JqIC0gVGhlIG9iamVjdCB0byBwYXRjaC5cbiAqIEB0eXBlUGFyYW0gUmVzdWx0IC0gVGhlIHR5cGUgb2YgdGhlIHJlc3VsdCBvZiB0aGUgZnVuY3Rpb24uXG4gKiBAcGFyYW0gb2JqIC0gVGhlIG9iamVjdCB0byBwYXRjaC5cbiAqIEBwYXJhbSBmYWN0b3JpZXMgLSBUaGUgZmFjdG9yaWVzIHRvIGFwcGx5IHRvIHRoZSBvYmplY3QuXG4gKiBAcGFyYW0gZm4gLSBUaGUgZnVuY3Rpb24gdG8gaW52b2tlLlxuICogQHJldHVybnMgVGhlIHJlc3VsdCBvZiB0aGUgZnVuY3Rpb24uXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBpbnZva2VXaXRoUGF0Y2hBc3luYzxPYmogZXh0ZW5kcyBvYmplY3QsIFJlc3VsdD4ob2JqOiBPYmosIGZhY3RvcmllczogRmFjdG9yaWVzPE9iaj4sIGZuOiAoKSA9PiBQcm9taXNlPFJlc3VsdD4pOiBQcm9taXNlPFJlc3VsdD4ge1xuICBjb25zdCB1bmluc3RhbGxlciA9IGFyb3VuZChvYmosIGZhY3Rvcmllcyk7XG4gIHRyeSB7XG4gICAgcmV0dXJuIGF3YWl0IGZuKCk7XG4gIH0gZmluYWxseSB7XG4gICAgdW5pbnN0YWxsZXIoKTtcbiAgfVxufVxuXG4vKipcbiAqIFJlZ2lzdGVycyBhIHBhdGNoIHRvIHRoZSBvYmplY3QuXG4gKlxuICogQHR5cGVQYXJhbSBPYmogLSBUaGUgb2JqZWN0IHRvIHBhdGNoLlxuICogQHBhcmFtIGNvbXBvbmVudCAtIFRoZSBjb21wb25lbnQgdG8gcmVnaXN0ZXIgdGhlIHBhdGNoIHRvLlxuICogQHBhcmFtIG9iaiAtIFRoZSBvYmplY3QgdG8gcGF0Y2guXG4gKiBAcGFyYW0gZmFjdG9yaWVzIC0gVGhlIGZhY3RvcmllcyB0byBhcHBseSB0byB0aGUgb2JqZWN0LlxuICogQHJldHVybnMgVGhlIHVuaW5zdGFsbGVyLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVnaXN0ZXJQYXRjaDxPYmogZXh0ZW5kcyBvYmplY3Q+KGNvbXBvbmVudDogQ29tcG9uZW50LCBvYmo6IE9iaiwgZmFjdG9yaWVzOiBGYWN0b3JpZXM8T2JqPik6IFVuaW5zdGFsbGVyIHtcbiAgY29uc3QgdW5pbnN0YWxsZXIgPSBhcm91bmQob2JqLCBmYWN0b3JpZXMpO1xuICBsZXQgaXNVbmluc3RhbGxlZCA9IGZhbHNlO1xuXG4gIGZ1bmN0aW9uIHVuaW5zdGFsbGVyV3JhcHBlcigpOiB2b2lkIHtcbiAgICBpZiAoaXNVbmluc3RhbGxlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgdW5pbnN0YWxsZXIoKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgaXNVbmluc3RhbGxlZCA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgY29tcG9uZW50LnJlZ2lzdGVyKHVuaW5zdGFsbGVyV3JhcHBlcik7XG4gIHJldHVybiB1bmluc3RhbGxlcjtcbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBU0EsMkJBQXlDO0FBZ0NsQyxTQUFTLE9BQTJCLEtBQVUsV0FBd0M7QUFDM0YsYUFBTyxxQkFBQUEsUUFBZSxLQUFzQixTQUE2QztBQUMzRjtBQWFPLFNBQVMsZ0JBQTRDLEtBQVUsV0FBMkIsSUFBMEI7QUFDekgsUUFBTSxjQUFjLE9BQU8sS0FBSyxTQUFTO0FBQ3pDLE1BQUk7QUFDRixXQUFPLEdBQUc7QUFBQSxFQUNaLFVBQUU7QUFDQSxnQkFBWTtBQUFBLEVBQ2Q7QUFDRjtBQWFBLGVBQXNCLHFCQUFpRCxLQUFVLFdBQTJCLElBQTRDO0FBQ3RKLFFBQU0sY0FBYyxPQUFPLEtBQUssU0FBUztBQUN6QyxNQUFJO0FBQ0YsV0FBTyxNQUFNLEdBQUc7QUFBQSxFQUNsQixVQUFFO0FBQ0EsZ0JBQVk7QUFBQSxFQUNkO0FBQ0Y7QUFXTyxTQUFTLGNBQWtDLFdBQXNCLEtBQVUsV0FBd0M7QUFDeEgsUUFBTSxjQUFjLE9BQU8sS0FBSyxTQUFTO0FBQ3pDLE1BQUksZ0JBQWdCO0FBRXBCLFdBQVMscUJBQTJCO0FBQ2xDLFFBQUksZUFBZTtBQUNqQjtBQUFBLElBQ0Y7QUFDQSxRQUFJO0FBQ0Ysa0JBQVk7QUFBQSxJQUNkLFVBQUU7QUFDQSxzQkFBZ0I7QUFBQSxJQUNsQjtBQUFBLEVBQ0Y7QUFFQSxZQUFVLFNBQVMsa0JBQWtCO0FBQ3JDLFNBQU87QUFDVDsiLAogICJuYW1lcyI6IFsib3JpZ2luYWxBcm91bmQiXQp9Cg==
@@ -159,4 +159,4 @@ async function printToPdf(el, options) {
159
159
  0 && (module.exports = {
160
160
  printToPdf
161
161
  });
162
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL1BkZi50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAcGFja2FnZURvY3VtZW50YXRpb25cbiAqXG4gKiBDb250YWlucyB1dGlsaXR5IGZ1bmN0aW9ucyBmb3IgcHJpbnRpbmcgdG8gUERGLlxuICovXG5cbmltcG9ydCB7IFBsYXRmb3JtIH0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQgeyBlbnN1cmVMb2FkZWQgfSBmcm9tICcuLi9IVE1MRWxlbWVudC50cyc7XG5cbmludGVyZmFjZSBQcmludFRvUGRmT3B0aW9ucyB7XG4gIGZpbGVwYXRoOiBzdHJpbmc7XG4gIGluY2x1ZGVOYW1lOiBib29sZWFuO1xuICBsYW5kc2NhcGU6IGJvb2xlYW47XG4gIG1hcmdpbnNUeXBlOiBudW1iZXI7XG4gIG9wZW46IGJvb2xlYW47XG4gIHBhZ2VTaXplOiBzdHJpbmc7XG4gIHNjYWxlOiBudW1iZXI7XG4gIHNjYWxlRmFjdG9yOiBudW1iZXI7XG59XG5cbmNvbnN0IEVMRUNUUk9OX1BSSU5UX1RPX1BERl9DSEFOTkVMID0gJ3ByaW50LXRvLXBkZic7XG5cbi8qKlxuICogUHJpbnQgdGhlIGdpdmVuIGVsZW1lbnQgdG8gYSBQREYgZmlsZS5cbiAqXG4gKiBXb3JrcyBvbmx5IG9uIGRlc2t0b3AuXG4gKlxuICogQHBhcmFtIGVsIC0gVGhlIGVsZW1lbnQgdG8gcHJpbnQuXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBvcHRpb25zIHRvIHVzZSBmb3IgdGhlIHByaW50LlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcHJpbnRUb1BkZihlbDogSFRNTEVsZW1lbnQsIG9wdGlvbnM6IFBhcnRpYWw8UHJpbnRUb1BkZk9wdGlvbnM+KTogUHJvbWlzZTx2b2lkPiB7XG4gIGlmIChQbGF0Zm9ybS5pc01vYmlsZSkge1xuICAgIHRocm93IG5ldyBFcnJvcignUHJpbnRpbmcgdG8gUERGIGlzIG5vdCBzdXBwb3J0ZWQgb24gbW9iaWxlIGRldmljZXMuJyk7XG4gIH1cblxuICBjb25zdCBwcmludERpdiA9IGRvY3VtZW50LmJvZHkuY3JlYXRlRGl2KCdwcmludCcpO1xuICBwcmludERpdi5hcHBlbmRDaGlsZChlbCk7XG4gIGF3YWl0IGVuc3VyZUxvYWRlZChwcmludERpdik7XG5cbiAgY29uc3QgREVGQVVMVF9TQ0FMRV9GQUNUT1IgPSAxMDA7XG4gIGNvbnN0IERFRkFVTFRfT1BUSU9OUzogUHJpbnRUb1BkZk9wdGlvbnMgPSB7XG4gICAgZmlsZXBhdGg6ICdVbnRpdGxlZC5wZGYnLFxuICAgIGluY2x1ZGVOYW1lOiBmYWxzZSxcbiAgICBsYW5kc2NhcGU6IGZhbHNlLFxuICAgIG1hcmdpbnNUeXBlOiAwLFxuICAgIG9wZW46IHRydWUsXG4gICAgcGFnZVNpemU6ICdBNCcsXG4gICAgc2NhbGU6IDEsXG4gICAgc2NhbGVGYWN0b3I6IERFRkFVTFRfU0NBTEVfRkFDVE9SXG4gIH07XG5cbiAgY29uc3QgZnVsbE9wdGlvbnMgPSB7IC4uLkRFRkFVTFRfT1BUSU9OUywgLi4ub3B0aW9ucyB9O1xuXG4gIHRyeSB7XG4gICAgYXdhaXQgbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcbiAgICAgIHdpbmRvdy5lbGVjdHJvbi5pcGNSZW5kZXJlci5vbmNlKEVMRUNUUk9OX1BSSU5UX1RPX1BERl9DSEFOTkVMLCByZXNvbHZlKTtcbiAgICAgIHdpbmRvdy5lbGVjdHJvbi5pcGNSZW5kZXJlci5zZW5kKEVMRUNUUk9OX1BSSU5UX1RPX1BERl9DSEFOTkVMLCBmdWxsT3B0aW9ucyk7XG4gICAgfSk7XG4gIH0gZmluYWxseSB7XG4gICAgcHJpbnREaXYucmVtb3ZlKCk7XG4gIH1cbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBTUEsc0JBQXlCO0FBRXpCLHlCQUE2QjtBQWE3QixNQUFNLGdDQUFnQztBQVV0QyxlQUFzQixXQUFXLElBQWlCLFNBQW9EO0FBQ3BHLE1BQUkseUJBQVMsVUFBVTtBQUNyQixVQUFNLElBQUksTUFBTSxxREFBcUQ7QUFBQSxFQUN2RTtBQUVBLFFBQU0sV0FBVyxTQUFTLEtBQUssVUFBVSxPQUFPO0FBQ2hELFdBQVMsWUFBWSxFQUFFO0FBQ3ZCLFlBQU0saUNBQWEsUUFBUTtBQUUzQixRQUFNLHVCQUF1QjtBQUM3QixRQUFNLGtCQUFxQztBQUFBLElBQ3pDLFVBQVU7QUFBQSxJQUNWLGFBQWE7QUFBQSxJQUNiLFdBQVc7QUFBQSxJQUNYLGFBQWE7QUFBQSxJQUNiLE1BQU07QUFBQSxJQUNOLFVBQVU7QUFBQSxJQUNWLE9BQU87QUFBQSxJQUNQLGFBQWE7QUFBQSxFQUNmO0FBRUEsUUFBTSxjQUFjLEVBQUUsR0FBRyxpQkFBaUIsR0FBRyxRQUFRO0FBRXJELE1BQUk7QUFDRixVQUFNLElBQUksUUFBUSxDQUFDLFlBQVk7QUFDN0IsYUFBTyxTQUFTLFlBQVksS0FBSywrQkFBK0IsT0FBTztBQUN2RSxhQUFPLFNBQVMsWUFBWSxLQUFLLCtCQUErQixXQUFXO0FBQUEsSUFDN0UsQ0FBQztBQUFBLEVBQ0gsVUFBRTtBQUNBLGFBQVMsT0FBTztBQUFBLEVBQ2xCO0FBQ0Y7IiwKICAibmFtZXMiOiBbXQp9Cg==
162
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL1BkZi50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAcGFja2FnZURvY3VtZW50YXRpb25cbiAqXG4gKiBDb250YWlucyB1dGlsaXR5IGZ1bmN0aW9ucyBmb3IgcHJpbnRpbmcgdG8gUERGLlxuICovXG5cbmltcG9ydCB7IFBsYXRmb3JtIH0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQgeyBlbnN1cmVMb2FkZWQgfSBmcm9tICcuLi9IVE1MRWxlbWVudC50cyc7XG5cbmludGVyZmFjZSBQcmludFRvUGRmT3B0aW9ucyB7XG4gIHJlYWRvbmx5IGZpbGVwYXRoOiBzdHJpbmc7XG4gIHJlYWRvbmx5IGluY2x1ZGVOYW1lOiBib29sZWFuO1xuICByZWFkb25seSBsYW5kc2NhcGU6IGJvb2xlYW47XG4gIHJlYWRvbmx5IG1hcmdpbnNUeXBlOiBudW1iZXI7XG4gIHJlYWRvbmx5IG9wZW46IGJvb2xlYW47XG4gIHJlYWRvbmx5IHBhZ2VTaXplOiBzdHJpbmc7XG4gIHJlYWRvbmx5IHNjYWxlOiBudW1iZXI7XG4gIHJlYWRvbmx5IHNjYWxlRmFjdG9yOiBudW1iZXI7XG59XG5cbmNvbnN0IEVMRUNUUk9OX1BSSU5UX1RPX1BERl9DSEFOTkVMID0gJ3ByaW50LXRvLXBkZic7XG5cbi8qKlxuICogUHJpbnQgdGhlIGdpdmVuIGVsZW1lbnQgdG8gYSBQREYgZmlsZS5cbiAqXG4gKiBXb3JrcyBvbmx5IG9uIGRlc2t0b3AuXG4gKlxuICogQHBhcmFtIGVsIC0gVGhlIGVsZW1lbnQgdG8gcHJpbnQuXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBvcHRpb25zIHRvIHVzZSBmb3IgdGhlIHByaW50LlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcHJpbnRUb1BkZihlbDogSFRNTEVsZW1lbnQsIG9wdGlvbnM6IFBhcnRpYWw8UHJpbnRUb1BkZk9wdGlvbnM+KTogUHJvbWlzZTx2b2lkPiB7XG4gIGlmIChQbGF0Zm9ybS5pc01vYmlsZSkge1xuICAgIHRocm93IG5ldyBFcnJvcignUHJpbnRpbmcgdG8gUERGIGlzIG5vdCBzdXBwb3J0ZWQgb24gbW9iaWxlIGRldmljZXMuJyk7XG4gIH1cblxuICBjb25zdCBwcmludERpdiA9IGRvY3VtZW50LmJvZHkuY3JlYXRlRGl2KCdwcmludCcpO1xuICBwcmludERpdi5hcHBlbmRDaGlsZChlbCk7XG4gIGF3YWl0IGVuc3VyZUxvYWRlZChwcmludERpdik7XG5cbiAgY29uc3QgREVGQVVMVF9TQ0FMRV9GQUNUT1IgPSAxMDA7XG4gIGNvbnN0IERFRkFVTFRfT1BUSU9OUzogUHJpbnRUb1BkZk9wdGlvbnMgPSB7XG4gICAgZmlsZXBhdGg6ICdVbnRpdGxlZC5wZGYnLFxuICAgIGluY2x1ZGVOYW1lOiBmYWxzZSxcbiAgICBsYW5kc2NhcGU6IGZhbHNlLFxuICAgIG1hcmdpbnNUeXBlOiAwLFxuICAgIG9wZW46IHRydWUsXG4gICAgcGFnZVNpemU6ICdBNCcsXG4gICAgc2NhbGU6IDEsXG4gICAgc2NhbGVGYWN0b3I6IERFRkFVTFRfU0NBTEVfRkFDVE9SXG4gIH07XG5cbiAgY29uc3QgZnVsbE9wdGlvbnMgPSB7IC4uLkRFRkFVTFRfT1BUSU9OUywgLi4ub3B0aW9ucyB9O1xuXG4gIHRyeSB7XG4gICAgYXdhaXQgbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcbiAgICAgIHdpbmRvdy5lbGVjdHJvbi5pcGNSZW5kZXJlci5vbmNlKEVMRUNUUk9OX1BSSU5UX1RPX1BERl9DSEFOTkVMLCByZXNvbHZlKTtcbiAgICAgIHdpbmRvdy5lbGVjdHJvbi5pcGNSZW5kZXJlci5zZW5kKEVMRUNUUk9OX1BSSU5UX1RPX1BERl9DSEFOTkVMLCBmdWxsT3B0aW9ucyk7XG4gICAgfSk7XG4gIH0gZmluYWxseSB7XG4gICAgcHJpbnREaXYucmVtb3ZlKCk7XG4gIH1cbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBTUEsc0JBQXlCO0FBRXpCLHlCQUE2QjtBQWE3QixNQUFNLGdDQUFnQztBQVV0QyxlQUFzQixXQUFXLElBQWlCLFNBQW9EO0FBQ3BHLE1BQUkseUJBQVMsVUFBVTtBQUNyQixVQUFNLElBQUksTUFBTSxxREFBcUQ7QUFBQSxFQUN2RTtBQUVBLFFBQU0sV0FBVyxTQUFTLEtBQUssVUFBVSxPQUFPO0FBQ2hELFdBQVMsWUFBWSxFQUFFO0FBQ3ZCLFlBQU0saUNBQWEsUUFBUTtBQUUzQixRQUFNLHVCQUF1QjtBQUM3QixRQUFNLGtCQUFxQztBQUFBLElBQ3pDLFVBQVU7QUFBQSxJQUNWLGFBQWE7QUFBQSxJQUNiLFdBQVc7QUFBQSxJQUNYLGFBQWE7QUFBQSxJQUNiLE1BQU07QUFBQSxJQUNOLFVBQVU7QUFBQSxJQUNWLE9BQU87QUFBQSxJQUNQLGFBQWE7QUFBQSxFQUNmO0FBRUEsUUFBTSxjQUFjLEVBQUUsR0FBRyxpQkFBaUIsR0FBRyxRQUFRO0FBRXJELE1BQUk7QUFDRixVQUFNLElBQUksUUFBUSxDQUFDLFlBQVk7QUFDN0IsYUFBTyxTQUFTLFlBQVksS0FBSywrQkFBK0IsT0FBTztBQUN2RSxhQUFPLFNBQVMsWUFBWSxLQUFLLCtCQUErQixXQUFXO0FBQUEsSUFDN0UsQ0FBQztBQUFBLEVBQ0gsVUFBRTtBQUNBLGFBQVMsT0FBTztBQUFBLEVBQ2xCO0FBQ0Y7IiwKICAibmFtZXMiOiBbXQp9Cg==
@@ -4,14 +4,14 @@
4
4
  * Contains utility functions for printing to PDF.
5
5
  */
6
6
  interface PrintToPdfOptions {
7
- filepath: string;
8
- includeName: boolean;
9
- landscape: boolean;
10
- marginsType: number;
11
- open: boolean;
12
- pageSize: string;
13
- scale: number;
14
- scaleFactor: number;
7
+ readonly filepath: string;
8
+ readonly includeName: boolean;
9
+ readonly landscape: boolean;
10
+ readonly marginsType: number;
11
+ readonly open: boolean;
12
+ readonly pageSize: string;
13
+ readonly scale: number;
14
+ readonly scaleFactor: number;
15
15
  }
16
16
  /**
17
17
  * Print the given element to a PDF file.
@@ -160,12 +160,14 @@ var ObsidianPluginRepoPaths = /* @__PURE__ */ ((ObsidianPluginRepoPaths2) => {
160
160
  ObsidianPluginRepoPaths2["MarkdownlintConfigMjs"] = ".markdownlint.mjs";
161
161
  ObsidianPluginRepoPaths2["MarkdownlintConfigYaml"] = ".markdownlint.yaml";
162
162
  ObsidianPluginRepoPaths2["MarkdownlintConfigYml"] = ".markdownlint.yml";
163
+ ObsidianPluginRepoPaths2["Mocks"] = "__mocks__";
163
164
  ObsidianPluginRepoPaths2["NpmShrinkwrapJson"] = "npm-shrinkwrap.json";
164
165
  ObsidianPluginRepoPaths2["PackageJson"] = "package.json";
165
166
  ObsidianPluginRepoPaths2["PackageLockJson"] = "package-lock.json";
166
167
  ObsidianPluginRepoPaths2["Scripts"] = "scripts";
167
168
  ObsidianPluginRepoPaths2["Src"] = "src";
168
169
  ObsidianPluginRepoPaths2["StylesCss"] = "styles.css";
170
+ ObsidianPluginRepoPaths2["Tests"] = "__tests__";
169
171
  ObsidianPluginRepoPaths2["TsConfigJson"] = "tsconfig.json";
170
172
  ObsidianPluginRepoPaths2["VersionsJson"] = "versions.json";
171
173
  return ObsidianPluginRepoPaths2;
@@ -174,4 +176,4 @@ var ObsidianPluginRepoPaths = /* @__PURE__ */ ((ObsidianPluginRepoPaths2) => {
174
176
  0 && (module.exports = {
175
177
  ObsidianPluginRepoPaths
176
178
  });
177
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL1BsdWdpbi9PYnNpZGlhblBsdWdpblJlcG9QYXRocy50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAcGFja2FnZURvY3VtZW50YXRpb25cbiAqXG4gKiBUaGlzIGZpbGUgZGVmaW5lcyBhbiBlbnVtZXJhdGlvbiBmb3IgY29tbW9uIGZpbGUgYW5kIGZvbGRlciBwYXRocyB1c2VkIGluIE9ic2lkaWFuIHBsdWdpbiBkZXZlbG9wbWVudC5cbiAqL1xuXG4vKipcbiAqIEVudW1lcmF0aW9uIG9mIGNvbW1vbmx5IHVzZWQgZmlsZSBhbmQgZm9sZGVyIHBhdGhzIGluIE9ic2lkaWFuIHBsdWdpbiBkZXZlbG9wbWVudC5cbiAqL1xuZXhwb3J0IGVudW0gT2JzaWRpYW5QbHVnaW5SZXBvUGF0aHMge1xuICAvKiogQ29tbW9uSlMgZmlsZS4gKi9cbiAgQW55Q2pzID0gJyouY2pzJyxcblxuICAvKiogSmF2YVNjcmlwdCBmaWxlLiAqL1xuICBBbnlKcyA9ICcqLmpzJyxcblxuICAvKiogRVNNIEphdmFTY3JpcHQgZmlsZS4gKi9cbiAgQW55TWpzID0gJyoubWpzJyxcblxuICAvKiogQW55IHBhdGggcmVjdXJzaXZlbHkuICovXG4gIEFueVBhdGggPSAnKionLFxuXG4gIC8qKiBUeXBlU2NyaXB0IGZpbGUuICovXG4gIEFueVRzID0gJyoudHMnLFxuXG4gIC8qKiBSZWFjdEpTIFR5cGVTY3JpcHQgZmlsZS4gKi9cbiAgQW55VHN4ID0gJyoudHN4JyxcblxuICAvKiogQ2hhbmdlbG9nIGZpbGUuICovXG4gIENoYW5nZWxvZ01kID0gJ0NIQU5HRUxPRy5tZCcsXG5cbiAgLyoqIENvbW1pdGxpbnQgY29uZmlndXJhdGlvbiBmaWxlLiAqL1xuICBDb21taXRsaW50Q29uZmlnVHMgPSAnY29tbWl0bGludC5jb25maWcudHMnLFxuXG4gIC8qKiBDdXJyZW50IGZvbGRlci4gKi9cbiAgQ3VycmVudEZvbGRlciA9ICcuJyxcblxuICAvKiogRGlzdHJpYnV0aW9uIGZvbGRlci4gKi9cbiAgRGlzdCA9ICdkaXN0JyxcblxuICAvKiogQnVpbGQgZm9sZGVyIHdpdGhpbiB0aGUge0BsaW5rIERpc3R9IGZvbGRlci4gKi9cbiAgRGlzdEJ1aWxkID0gJ2Rpc3QvYnVpbGQnLFxuXG4gIC8qKiBEZXZlbG9wbWVudCBmb2xkZXIgd2l0aGluIHRoZSB7QGxpbmsgRGlzdH0gZm9sZGVyLiAqL1xuICBEaXN0RGV2ID0gJ2Rpc3QvZGV2JyxcblxuICAvKiogQ29tbW9uSlMgRVNMaW50IGNvbmZpZ3VyYXRpb24gZmlsZS4gKi9cbiAgRXNsaW50Q29uZmlnQ2pzID0gJ2VzbGludC5jb25maWcuY2pzJyxcblxuICAvKiogQ29tbW9uSlMgVHlwZVNjcmlwdCBFU0xpbnQgY29uZmlndXJhdGlvbiBmaWxlLiAqL1xuICBFc2xpbnRDb25maWdDdHMgPSAnZXNsaW50LmNvbmZpZy5jdHMnLFxuXG4gIC8qKiBKYXZhU2NyaXB0IEVTTGludCBjb25maWd1cmF0aW9uIGZpbGUuICovXG4gIEVzbGludENvbmZpZ0pzID0gJ2VzbGludC5jb25maWcuanMnLFxuXG4gIC8qKiBFU00gSmF2YVNjcmlwdCBFU0xpbnQgY29uZmlndXJhdGlvbiBmaWxlLiAqL1xuICBFc2xpbnRDb25maWdNanMgPSAnZXNsaW50LmNvbmZpZy5tanMnLFxuXG4gIC8qKiBFU00gVHlwZVNjcmlwdCBFU0xpbnQgY29uZmlndXJhdGlvbiBmaWxlLiAqL1xuICBFc2xpbnRDb25maWdNdHMgPSAnZXNsaW50LmNvbmZpZy5tdHMnLFxuXG4gIC8qKiBUeXBlU2NyaXB0IEVTTGludCBjb25maWd1cmF0aW9uIGZpbGUuICovXG4gIEVzbGludENvbmZpZ1RzID0gJ2VzbGludC5jb25maWcudHMnLFxuXG4gIC8qKiBIb3QgcmVsb2FkIGZpbGUuICovXG4gIEhvdFJlbG9hZCA9ICcuaG90cmVsb2FkJyxcblxuICAvKiogTWFpbiBDU1MgZmlsZS4gKi9cbiAgTWFpbkNzcyA9ICdtYWluLmNzcycsXG5cbiAgLyoqIE1haW4gSmF2YVNjcmlwdCBmaWxlLiAqL1xuICBNYWluSnMgPSAnbWFpbi5qcycsXG5cbiAgLyoqIE1haW4gVHlwZVNjcmlwdCBmaWxlLiAqL1xuICBNYWluVHMgPSAnbWFpbi50cycsXG5cbiAgLyoqIE1hbmlmZXN0IGZpbGUgZm9yIGJldGEgcmVsZWFzZXMuICovXG4gIE1hbmlmZXN0QmV0YUpzb24gPSAnbWFuaWZlc3QtYmV0YS5qc29uJyxcblxuICAvKiogTWFuaWZlc3QgZmlsZS4gKi9cbiAgTWFuaWZlc3RKc29uID0gJ21hbmlmZXN0Lmpzb24nLFxuXG4gIC8qKiBDb21tb25KUyBNYXJrZG93bmxpbnQgQ0xJMiBjb25maWd1cmF0aW9uIGZpbGUuICovXG4gIE1hcmtkb3dubGludENsaTJDb25maWdDanMgPSAnLm1hcmtkb3dubGludC1jbGkyLmNqcycsXG5cbiAgLyoqIEpTT05DIE1hcmtkb3dubGludCBDTEkyIGNvbmZpZ3VyYXRpb24gZmlsZS4gKi9cbiAgTWFya2Rvd25saW50Q2xpMkNvbmZpZ0pzb25jID0gJy5tYXJrZG93bmxpbnQtY2xpMi5qc29uYycsXG5cbiAgLyoqIEVTTSBNYXJrZG93bmxpbnQgQ0xJMiBjb25maWd1cmF0aW9uIGZpbGUuICovXG4gIE1hcmtkb3dubGludENsaTJDb25maWdNanMgPSAnLm1hcmtkb3dubGludC1jbGkyLm1qcycsXG5cbiAgLyoqIEVTTSBUeXBlU2NyaXB0IE1hcmtkb3dubGludCBDTEkyIGNvbmZpZ3VyYXRpb24gZmlsZS4gKi9cbiAgTWFya2Rvd25saW50Q2xpMkNvbmZpZ010cyA9ICcubWFya2Rvd25saW50LWNsaTIubXRzJyxcblxuICAvKiogWUFNTCBNYXJrZG93bmxpbnQgQ0xJMiBjb25maWd1cmF0aW9uIGZpbGUuICovXG4gIE1hcmtkb3dubGludENsaTJDb25maWdZYW1sID0gJy5tYXJrZG93bmxpbnQtY2xpMi55YW1sJyxcblxuICAvKiogQ29tbW9uSlMgTWFya2Rvd25saW50IGNvbmZpZ3VyYXRpb24gZmlsZS4gKi9cbiAgTWFya2Rvd25saW50Q29uZmlnQ2pzID0gJy5tYXJrZG93bmxpbnQuY2pzJyxcblxuICAvKiogSlNPTiBNYXJrZG93bmxpbnQgY29uZmlndXJhdGlvbiBmaWxlLiAqL1xuICBNYXJrZG93bmxpbnRDb25maWdKc29uID0gJy5tYXJrZG93bmxpbnQuanNvbicsXG5cbiAgLyoqIEpTT05DIE1hcmtkb3dubGludCBjb25maWd1cmF0aW9uIGZpbGUuICovXG4gIE1hcmtkb3dubGludENvbmZpZ0pzb25jID0gJy5tYXJrZG93bmxpbnQuanNvbmMnLFxuXG4gIC8qKiBFU00gTWFya2Rvd25saW50IGNvbmZpZ3VyYXRpb24gZmlsZS4gKi9cbiAgTWFya2Rvd25saW50Q29uZmlnTWpzID0gJy5tYXJrZG93bmxpbnQubWpzJyxcblxuICAvKiogWUFNTCBNYXJrZG93bmxpbnQgY29uZmlndXJhdGlvbiBmaWxlLiAqL1xuICBNYXJrZG93bmxpbnRDb25maWdZYW1sID0gJy5tYXJrZG93bmxpbnQueWFtbCcsXG5cbiAgLyoqIFlBTUwgTWFya2Rvd25saW50IGNvbmZpZ3VyYXRpb24gZmlsZS4gKi9cbiAgTWFya2Rvd25saW50Q29uZmlnWW1sID0gJy5tYXJrZG93bmxpbnQueW1sJyxcblxuICAvKiogTlBNIHNocmlua3dyYXAgZmlsZS4gKi9cbiAgTnBtU2hyaW5rd3JhcEpzb24gPSAnbnBtLXNocmlua3dyYXAuanNvbicsXG5cbiAgLyoqIFBhY2thZ2UgSlNPTiBmaWxlLiAqL1xuICBQYWNrYWdlSnNvbiA9ICdwYWNrYWdlLmpzb24nLFxuXG4gIC8qKiBQYWNrYWdlLWxvY2sgSlNPTiBmaWxlLiAqL1xuICBQYWNrYWdlTG9ja0pzb24gPSAncGFja2FnZS1sb2NrLmpzb24nLFxuXG4gIC8qKiBTY3JpcHRzIGZvbGRlci4gKi9cbiAgU2NyaXB0cyA9ICdzY3JpcHRzJyxcblxuICAvKiogU291cmNlIGZvbGRlci4gKi9cbiAgU3JjID0gJ3NyYycsXG5cbiAgLyoqIFN0eWxlcyBDU1MgZmlsZS4gKi9cbiAgU3R5bGVzQ3NzID0gJ3N0eWxlcy5jc3MnLFxuXG4gIC8qKiBUeXBlU2NyaXB0IGNvbmZpZ3VyYXRpb24gZmlsZS4gKi9cbiAgVHNDb25maWdKc29uID0gJ3RzY29uZmlnLmpzb24nLFxuXG4gIC8qKiBWZXJzaW9ucyBKU09OIGZpbGUuICovXG4gIFZlcnNpb25zSnNvbiA9ICd2ZXJzaW9ucy5qc29uJ1xufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFTTyxJQUFLLDBCQUFMLGtCQUFLQSw2QkFBTDtBQUVMLEVBQUFBLHlCQUFBLFlBQVM7QUFHVCxFQUFBQSx5QkFBQSxXQUFRO0FBR1IsRUFBQUEseUJBQUEsWUFBUztBQUdULEVBQUFBLHlCQUFBLGFBQVU7QUFHVixFQUFBQSx5QkFBQSxXQUFRO0FBR1IsRUFBQUEseUJBQUEsWUFBUztBQUdULEVBQUFBLHlCQUFBLGlCQUFjO0FBR2QsRUFBQUEseUJBQUEsd0JBQXFCO0FBR3JCLEVBQUFBLHlCQUFBLG1CQUFnQjtBQUdoQixFQUFBQSx5QkFBQSxVQUFPO0FBR1AsRUFBQUEseUJBQUEsZUFBWTtBQUdaLEVBQUFBLHlCQUFBLGFBQVU7QUFHVixFQUFBQSx5QkFBQSxxQkFBa0I7QUFHbEIsRUFBQUEseUJBQUEscUJBQWtCO0FBR2xCLEVBQUFBLHlCQUFBLG9CQUFpQjtBQUdqQixFQUFBQSx5QkFBQSxxQkFBa0I7QUFHbEIsRUFBQUEseUJBQUEscUJBQWtCO0FBR2xCLEVBQUFBLHlCQUFBLG9CQUFpQjtBQUdqQixFQUFBQSx5QkFBQSxlQUFZO0FBR1osRUFBQUEseUJBQUEsYUFBVTtBQUdWLEVBQUFBLHlCQUFBLFlBQVM7QUFHVCxFQUFBQSx5QkFBQSxZQUFTO0FBR1QsRUFBQUEseUJBQUEsc0JBQW1CO0FBR25CLEVBQUFBLHlCQUFBLGtCQUFlO0FBR2YsRUFBQUEseUJBQUEsK0JBQTRCO0FBRzVCLEVBQUFBLHlCQUFBLGlDQUE4QjtBQUc5QixFQUFBQSx5QkFBQSwrQkFBNEI7QUFHNUIsRUFBQUEseUJBQUEsK0JBQTRCO0FBRzVCLEVBQUFBLHlCQUFBLGdDQUE2QjtBQUc3QixFQUFBQSx5QkFBQSwyQkFBd0I7QUFHeEIsRUFBQUEseUJBQUEsNEJBQXlCO0FBR3pCLEVBQUFBLHlCQUFBLDZCQUEwQjtBQUcxQixFQUFBQSx5QkFBQSwyQkFBd0I7QUFHeEIsRUFBQUEseUJBQUEsNEJBQXlCO0FBR3pCLEVBQUFBLHlCQUFBLDJCQUF3QjtBQUd4QixFQUFBQSx5QkFBQSx1QkFBb0I7QUFHcEIsRUFBQUEseUJBQUEsaUJBQWM7QUFHZCxFQUFBQSx5QkFBQSxxQkFBa0I7QUFHbEIsRUFBQUEseUJBQUEsYUFBVTtBQUdWLEVBQUFBLHlCQUFBLFNBQU07QUFHTixFQUFBQSx5QkFBQSxlQUFZO0FBR1osRUFBQUEseUJBQUEsa0JBQWU7QUFHZixFQUFBQSx5QkFBQSxrQkFBZTtBQWhJTCxTQUFBQTtBQUFBLEdBQUE7IiwKICAibmFtZXMiOiBbIk9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzIl0KfQo=
179
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL1BsdWdpbi9PYnNpZGlhblBsdWdpblJlcG9QYXRocy50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAcGFja2FnZURvY3VtZW50YXRpb25cbiAqXG4gKiBUaGlzIGZpbGUgZGVmaW5lcyBhbiBlbnVtZXJhdGlvbiBmb3IgY29tbW9uIGZpbGUgYW5kIGZvbGRlciBwYXRocyB1c2VkIGluIE9ic2lkaWFuIHBsdWdpbiBkZXZlbG9wbWVudC5cbiAqL1xuXG4vKipcbiAqIEVudW1lcmF0aW9uIG9mIGNvbW1vbmx5IHVzZWQgZmlsZSBhbmQgZm9sZGVyIHBhdGhzIGluIE9ic2lkaWFuIHBsdWdpbiBkZXZlbG9wbWVudC5cbiAqL1xuZXhwb3J0IGVudW0gT2JzaWRpYW5QbHVnaW5SZXBvUGF0aHMge1xuICAvKiogQ29tbW9uSlMgZmlsZS4gKi9cbiAgQW55Q2pzID0gJyouY2pzJyxcblxuICAvKiogSmF2YVNjcmlwdCBmaWxlLiAqL1xuICBBbnlKcyA9ICcqLmpzJyxcblxuICAvKiogRVNNIEphdmFTY3JpcHQgZmlsZS4gKi9cbiAgQW55TWpzID0gJyoubWpzJyxcblxuICAvKiogQW55IHBhdGggcmVjdXJzaXZlbHkuICovXG4gIEFueVBhdGggPSAnKionLFxuXG4gIC8qKiBUeXBlU2NyaXB0IGZpbGUuICovXG4gIEFueVRzID0gJyoudHMnLFxuXG4gIC8qKiBSZWFjdEpTIFR5cGVTY3JpcHQgZmlsZS4gKi9cbiAgQW55VHN4ID0gJyoudHN4JyxcblxuICAvKiogQ2hhbmdlbG9nIGZpbGUuICovXG4gIENoYW5nZWxvZ01kID0gJ0NIQU5HRUxPRy5tZCcsXG5cbiAgLyoqIENvbW1pdGxpbnQgY29uZmlndXJhdGlvbiBmaWxlLiAqL1xuICBDb21taXRsaW50Q29uZmlnVHMgPSAnY29tbWl0bGludC5jb25maWcudHMnLFxuXG4gIC8qKiBDdXJyZW50IGZvbGRlci4gKi9cbiAgQ3VycmVudEZvbGRlciA9ICcuJyxcblxuICAvKiogRGlzdHJpYnV0aW9uIGZvbGRlci4gKi9cbiAgRGlzdCA9ICdkaXN0JyxcblxuICAvKiogQnVpbGQgZm9sZGVyIHdpdGhpbiB0aGUge0BsaW5rIERpc3R9IGZvbGRlci4gKi9cbiAgRGlzdEJ1aWxkID0gJ2Rpc3QvYnVpbGQnLFxuXG4gIC8qKiBEZXZlbG9wbWVudCBmb2xkZXIgd2l0aGluIHRoZSB7QGxpbmsgRGlzdH0gZm9sZGVyLiAqL1xuICBEaXN0RGV2ID0gJ2Rpc3QvZGV2JyxcblxuICAvKiogQ29tbW9uSlMgRVNMaW50IGNvbmZpZ3VyYXRpb24gZmlsZS4gKi9cbiAgRXNsaW50Q29uZmlnQ2pzID0gJ2VzbGludC5jb25maWcuY2pzJyxcblxuICAvKiogQ29tbW9uSlMgVHlwZVNjcmlwdCBFU0xpbnQgY29uZmlndXJhdGlvbiBmaWxlLiAqL1xuICBFc2xpbnRDb25maWdDdHMgPSAnZXNsaW50LmNvbmZpZy5jdHMnLFxuXG4gIC8qKiBKYXZhU2NyaXB0IEVTTGludCBjb25maWd1cmF0aW9uIGZpbGUuICovXG4gIEVzbGludENvbmZpZ0pzID0gJ2VzbGludC5jb25maWcuanMnLFxuXG4gIC8qKiBFU00gSmF2YVNjcmlwdCBFU0xpbnQgY29uZmlndXJhdGlvbiBmaWxlLiAqL1xuICBFc2xpbnRDb25maWdNanMgPSAnZXNsaW50LmNvbmZpZy5tanMnLFxuXG4gIC8qKiBFU00gVHlwZVNjcmlwdCBFU0xpbnQgY29uZmlndXJhdGlvbiBmaWxlLiAqL1xuICBFc2xpbnRDb25maWdNdHMgPSAnZXNsaW50LmNvbmZpZy5tdHMnLFxuXG4gIC8qKiBUeXBlU2NyaXB0IEVTTGludCBjb25maWd1cmF0aW9uIGZpbGUuICovXG4gIEVzbGludENvbmZpZ1RzID0gJ2VzbGludC5jb25maWcudHMnLFxuXG4gIC8qKiBIb3QgcmVsb2FkIGZpbGUuICovXG4gIEhvdFJlbG9hZCA9ICcuaG90cmVsb2FkJyxcblxuICAvKiogTWFpbiBDU1MgZmlsZS4gKi9cbiAgTWFpbkNzcyA9ICdtYWluLmNzcycsXG5cbiAgLyoqIE1haW4gSmF2YVNjcmlwdCBmaWxlLiAqL1xuICBNYWluSnMgPSAnbWFpbi5qcycsXG5cbiAgLyoqIE1haW4gVHlwZVNjcmlwdCBmaWxlLiAqL1xuICBNYWluVHMgPSAnbWFpbi50cycsXG5cbiAgLyoqIE1hbmlmZXN0IGZpbGUgZm9yIGJldGEgcmVsZWFzZXMuICovXG4gIE1hbmlmZXN0QmV0YUpzb24gPSAnbWFuaWZlc3QtYmV0YS5qc29uJyxcblxuICAvKiogTWFuaWZlc3QgZmlsZS4gKi9cbiAgTWFuaWZlc3RKc29uID0gJ21hbmlmZXN0Lmpzb24nLFxuXG4gIC8qKiBDb21tb25KUyBNYXJrZG93bmxpbnQgQ0xJMiBjb25maWd1cmF0aW9uIGZpbGUuICovXG4gIE1hcmtkb3dubGludENsaTJDb25maWdDanMgPSAnLm1hcmtkb3dubGludC1jbGkyLmNqcycsXG5cbiAgLyoqIEpTT05DIE1hcmtkb3dubGludCBDTEkyIGNvbmZpZ3VyYXRpb24gZmlsZS4gKi9cbiAgTWFya2Rvd25saW50Q2xpMkNvbmZpZ0pzb25jID0gJy5tYXJrZG93bmxpbnQtY2xpMi5qc29uYycsXG5cbiAgLyoqIEVTTSBNYXJrZG93bmxpbnQgQ0xJMiBjb25maWd1cmF0aW9uIGZpbGUuICovXG4gIE1hcmtkb3dubGludENsaTJDb25maWdNanMgPSAnLm1hcmtkb3dubGludC1jbGkyLm1qcycsXG5cbiAgLyoqIEVTTSBUeXBlU2NyaXB0IE1hcmtkb3dubGludCBDTEkyIGNvbmZpZ3VyYXRpb24gZmlsZS4gKi9cbiAgTWFya2Rvd25saW50Q2xpMkNvbmZpZ010cyA9ICcubWFya2Rvd25saW50LWNsaTIubXRzJyxcblxuICAvKiogWUFNTCBNYXJrZG93bmxpbnQgQ0xJMiBjb25maWd1cmF0aW9uIGZpbGUuICovXG4gIE1hcmtkb3dubGludENsaTJDb25maWdZYW1sID0gJy5tYXJrZG93bmxpbnQtY2xpMi55YW1sJyxcblxuICAvKiogQ29tbW9uSlMgTWFya2Rvd25saW50IGNvbmZpZ3VyYXRpb24gZmlsZS4gKi9cbiAgTWFya2Rvd25saW50Q29uZmlnQ2pzID0gJy5tYXJrZG93bmxpbnQuY2pzJyxcblxuICAvKiogSlNPTiBNYXJrZG93bmxpbnQgY29uZmlndXJhdGlvbiBmaWxlLiAqL1xuICBNYXJrZG93bmxpbnRDb25maWdKc29uID0gJy5tYXJrZG93bmxpbnQuanNvbicsXG5cbiAgLyoqIEpTT05DIE1hcmtkb3dubGludCBjb25maWd1cmF0aW9uIGZpbGUuICovXG4gIE1hcmtkb3dubGludENvbmZpZ0pzb25jID0gJy5tYXJrZG93bmxpbnQuanNvbmMnLFxuXG4gIC8qKiBFU00gTWFya2Rvd25saW50IGNvbmZpZ3VyYXRpb24gZmlsZS4gKi9cbiAgTWFya2Rvd25saW50Q29uZmlnTWpzID0gJy5tYXJrZG93bmxpbnQubWpzJyxcblxuICAvKiogWUFNTCBNYXJrZG93bmxpbnQgY29uZmlndXJhdGlvbiBmaWxlLiAqL1xuICBNYXJrZG93bmxpbnRDb25maWdZYW1sID0gJy5tYXJrZG93bmxpbnQueWFtbCcsXG5cbiAgLyoqIFlBTUwgTWFya2Rvd25saW50IGNvbmZpZ3VyYXRpb24gZmlsZS4gKi9cbiAgTWFya2Rvd25saW50Q29uZmlnWW1sID0gJy5tYXJrZG93bmxpbnQueW1sJyxcblxuICAvKiogTW9ja3MgZm9sZGVyLiAqL1xuICBNb2NrcyA9ICdfX21vY2tzX18nLFxuXG4gIC8qKiBOUE0gc2hyaW5rd3JhcCBmaWxlLiAqL1xuICBOcG1TaHJpbmt3cmFwSnNvbiA9ICducG0tc2hyaW5rd3JhcC5qc29uJyxcblxuICAvKiogUGFja2FnZSBKU09OIGZpbGUuICovXG4gIFBhY2thZ2VKc29uID0gJ3BhY2thZ2UuanNvbicsXG5cbiAgLyoqIFBhY2thZ2UtbG9jayBKU09OIGZpbGUuICovXG4gIFBhY2thZ2VMb2NrSnNvbiA9ICdwYWNrYWdlLWxvY2suanNvbicsXG5cbiAgLyoqIFNjcmlwdHMgZm9sZGVyLiAqL1xuICBTY3JpcHRzID0gJ3NjcmlwdHMnLFxuXG4gIC8qKiBTb3VyY2UgZm9sZGVyLiAqL1xuICBTcmMgPSAnc3JjJyxcblxuICAvKiogU3R5bGVzIENTUyBmaWxlLiAqL1xuICBTdHlsZXNDc3MgPSAnc3R5bGVzLmNzcycsXG5cbiAgLyoqIFRlc3RzIGZvbGRlci4gKi9cbiAgVGVzdHMgPSAnX190ZXN0c19fJyxcblxuICAvKiogVHlwZVNjcmlwdCBjb25maWd1cmF0aW9uIGZpbGUuICovXG4gIFRzQ29uZmlnSnNvbiA9ICd0c2NvbmZpZy5qc29uJyxcblxuICAvKiogVmVyc2lvbnMgSlNPTiBmaWxlLiAqL1xuICBWZXJzaW9uc0pzb24gPSAndmVyc2lvbnMuanNvbidcbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBU08sSUFBSywwQkFBTCxrQkFBS0EsNkJBQUw7QUFFTCxFQUFBQSx5QkFBQSxZQUFTO0FBR1QsRUFBQUEseUJBQUEsV0FBUTtBQUdSLEVBQUFBLHlCQUFBLFlBQVM7QUFHVCxFQUFBQSx5QkFBQSxhQUFVO0FBR1YsRUFBQUEseUJBQUEsV0FBUTtBQUdSLEVBQUFBLHlCQUFBLFlBQVM7QUFHVCxFQUFBQSx5QkFBQSxpQkFBYztBQUdkLEVBQUFBLHlCQUFBLHdCQUFxQjtBQUdyQixFQUFBQSx5QkFBQSxtQkFBZ0I7QUFHaEIsRUFBQUEseUJBQUEsVUFBTztBQUdQLEVBQUFBLHlCQUFBLGVBQVk7QUFHWixFQUFBQSx5QkFBQSxhQUFVO0FBR1YsRUFBQUEseUJBQUEscUJBQWtCO0FBR2xCLEVBQUFBLHlCQUFBLHFCQUFrQjtBQUdsQixFQUFBQSx5QkFBQSxvQkFBaUI7QUFHakIsRUFBQUEseUJBQUEscUJBQWtCO0FBR2xCLEVBQUFBLHlCQUFBLHFCQUFrQjtBQUdsQixFQUFBQSx5QkFBQSxvQkFBaUI7QUFHakIsRUFBQUEseUJBQUEsZUFBWTtBQUdaLEVBQUFBLHlCQUFBLGFBQVU7QUFHVixFQUFBQSx5QkFBQSxZQUFTO0FBR1QsRUFBQUEseUJBQUEsWUFBUztBQUdULEVBQUFBLHlCQUFBLHNCQUFtQjtBQUduQixFQUFBQSx5QkFBQSxrQkFBZTtBQUdmLEVBQUFBLHlCQUFBLCtCQUE0QjtBQUc1QixFQUFBQSx5QkFBQSxpQ0FBOEI7QUFHOUIsRUFBQUEseUJBQUEsK0JBQTRCO0FBRzVCLEVBQUFBLHlCQUFBLCtCQUE0QjtBQUc1QixFQUFBQSx5QkFBQSxnQ0FBNkI7QUFHN0IsRUFBQUEseUJBQUEsMkJBQXdCO0FBR3hCLEVBQUFBLHlCQUFBLDRCQUF5QjtBQUd6QixFQUFBQSx5QkFBQSw2QkFBMEI7QUFHMUIsRUFBQUEseUJBQUEsMkJBQXdCO0FBR3hCLEVBQUFBLHlCQUFBLDRCQUF5QjtBQUd6QixFQUFBQSx5QkFBQSwyQkFBd0I7QUFHeEIsRUFBQUEseUJBQUEsV0FBUTtBQUdSLEVBQUFBLHlCQUFBLHVCQUFvQjtBQUdwQixFQUFBQSx5QkFBQSxpQkFBYztBQUdkLEVBQUFBLHlCQUFBLHFCQUFrQjtBQUdsQixFQUFBQSx5QkFBQSxhQUFVO0FBR1YsRUFBQUEseUJBQUEsU0FBTTtBQUdOLEVBQUFBLHlCQUFBLGVBQVk7QUFHWixFQUFBQSx5QkFBQSxXQUFRO0FBR1IsRUFBQUEseUJBQUEsa0JBQWU7QUFHZixFQUFBQSx5QkFBQSxrQkFBZTtBQXRJTCxTQUFBQTtBQUFBLEdBQUE7IiwKICAibmFtZXMiOiBbIk9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzIl0KfQo=
@@ -77,6 +77,8 @@ export declare enum ObsidianPluginRepoPaths {
77
77
  MarkdownlintConfigYaml = ".markdownlint.yaml",
78
78
  /** YAML Markdownlint configuration file. */
79
79
  MarkdownlintConfigYml = ".markdownlint.yml",
80
+ /** Mocks folder. */
81
+ Mocks = "__mocks__",
80
82
  /** NPM shrinkwrap file. */
81
83
  NpmShrinkwrapJson = "npm-shrinkwrap.json",
82
84
  /** Package JSON file. */
@@ -89,6 +91,8 @@ export declare enum ObsidianPluginRepoPaths {
89
91
  Src = "src",
90
92
  /** Styles CSS file. */
91
93
  StylesCss = "styles.css",
94
+ /** Tests folder. */
95
+ Tests = "__tests__",
92
96
  /** TypeScript configuration file. */
93
97
  TsConfigJson = "tsconfig.json",
94
98
  /** Versions JSON file. */
@@ -144,10 +144,12 @@ class PathSetting {
144
144
  regExp;
145
145
  isPathIgnored(path) {
146
146
  switch (this.type) {
147
+ /* v8 ignore stop */
147
148
  case "Exclude" /* Exclude */:
148
149
  return this.regExp.test(path);
149
150
  case "Include" /* Include */:
150
151
  return !this.regExp.test(path);
152
+ /* v8 ignore start -- All enum values are handled above. */
151
153
  default:
152
154
  throw new Error(`Invalid path setting type: ${this.type}`);
153
155
  }
@@ -200,10 +202,12 @@ class PathSettings {
200
202
  }
201
203
  function getDefaultRegExp(type) {
202
204
  switch (type) {
205
+ /* v8 ignore stop */
203
206
  case "Exclude" /* Exclude */:
204
207
  return import_RegExp.NEVER_MATCH_REG_EXP;
205
208
  case "Include" /* Include */:
206
209
  return import_RegExp.ALWAYS_MATCH_REG_EXP;
210
+ /* v8 ignore start -- All enum values are handled above. */
207
211
  default:
208
212
  throw new Error(`Invalid path setting type: ${type}`);
209
213
  }
@@ -228,4 +232,4 @@ function makeRegExp(paths, defaultRegExp) {
228
232
  0 && (module.exports = {
229
233
  PathSettings
230
234
  });
231
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL1BsdWdpbi9QYXRoU2V0dGluZ3MudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQHBhY2thZ2VEb2N1bWVudGF0aW9uXG4gKlxuICogVGhpcyBtb2R1bGUgcHJvdmlkZXMgY2xhc3NlcyBmb3IgbWFuYWdpbmcgaW5jbHVkZS9leGNsdWRlIHBhdGggc2V0dGluZ3MuXG4gKi9cblxuaW1wb3J0IHtcbiAgQUxXQVlTX01BVENIX1JFR19FWFAsXG4gIGVzY2FwZVJlZ0V4cCxcbiAgTkVWRVJfTUFUQ0hfUkVHX0VYUFxufSBmcm9tICcuLi8uLi9SZWdFeHAudHMnO1xuaW1wb3J0IHsgdHJpbUVuZCB9IGZyb20gJy4uLy4uL1N0cmluZy50cyc7XG5cbmVudW0gUGF0aFNldHRpbmdUeXBlIHtcbiAgRXhjbHVkZSA9ICdFeGNsdWRlJyxcbiAgSW5jbHVkZSA9ICdJbmNsdWRlJ1xufVxuXG5jbGFzcyBQYXRoU2V0dGluZyB7XG4gIHB1YmxpYyBnZXQgYXJyYXkoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiB0aGlzLl9hcnJheTtcbiAgfVxuXG4gIHB1YmxpYyBzZXQgYXJyYXkodmFsdWU6IHN0cmluZ1tdKSB7XG4gICAgdGhpcy5fYXJyYXkgPSB2YWx1ZS5maWx0ZXIoQm9vbGVhbik7XG4gICAgdGhpcy5yZWdFeHAgPSBtYWtlUmVnRXhwKHRoaXMuX2FycmF5LCB0aGlzLmRlZmF1bHRSZWdFeHApO1xuICB9XG5cbiAgcHJpdmF0ZSBfYXJyYXk6IHN0cmluZ1tdID0gW107XG4gIHByaXZhdGUgcmVhZG9ubHkgZGVmYXVsdFJlZ0V4cDogUmVnRXhwO1xuICBwcml2YXRlIHJlZ0V4cDogUmVnRXhwO1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IHR5cGU6IFBhdGhTZXR0aW5nVHlwZSkge1xuICAgIHRoaXMuZGVmYXVsdFJlZ0V4cCA9IGdldERlZmF1bHRSZWdFeHAodHlwZSk7XG4gICAgdGhpcy5yZWdFeHAgPSB0aGlzLmRlZmF1bHRSZWdFeHA7XG4gIH1cblxuICBwdWJsaWMgaXNQYXRoSWdub3JlZChwYXRoOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBzd2l0Y2ggKHRoaXMudHlwZSkge1xuICAgICAgY2FzZSBQYXRoU2V0dGluZ1R5cGUuRXhjbHVkZTpcbiAgICAgICAgcmV0dXJuIHRoaXMucmVnRXhwLnRlc3QocGF0aCk7XG4gICAgICBjYXNlIFBhdGhTZXR0aW5nVHlwZS5JbmNsdWRlOlxuICAgICAgICByZXR1cm4gIXRoaXMucmVnRXhwLnRlc3QocGF0aCk7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgcGF0aCBzZXR0aW5nIHR5cGU6ICR7dGhpcy50eXBlIGFzIHN0cmluZ31gKTtcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBBIGNsYXNzIGZvciBtYW5hZ2luZyBpbmNsdWRlL2V4Y2x1ZGUgcGF0aCBzZXR0aW5ncy5cbiAqL1xuZXhwb3J0IGNsYXNzIFBhdGhTZXR0aW5ncyB7XG4gIC8qKlxuICAgKiBHZXRzIHRoZSBleGNsdWRlIHBhdGhzLlxuICAgKlxuICAgKiBAcmV0dXJucyBUaGUgZXhjbHVkZSBwYXRocy5cbiAgICovXG4gIHB1YmxpYyBnZXQgZXhjbHVkZVBhdGhzKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gdGhpcy5fZXhjbHVkZVBhdGhzLmFycmF5O1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIGV4Y2x1ZGUgcGF0aHMuXG4gICAqXG4gICAqIEBwYXJhbSB2YWx1ZSAtIFRoZSBleGNsdWRlIHBhdGhzLlxuICAgKi9cbiAgcHVibGljIHNldCBleGNsdWRlUGF0aHModmFsdWU6IHN0cmluZ1tdKSB7XG4gICAgdGhpcy5fZXhjbHVkZVBhdGhzLmFycmF5ID0gdmFsdWU7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgaW5jbHVkZSBwYXRocy5cbiAgICpcbiAgICogQHJldHVybnMgVGhlIGluY2x1ZGUgcGF0aHMuXG4gICAqL1xuICBwdWJsaWMgZ2V0IGluY2x1ZGVQYXRocygpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIHRoaXMuX2luY2x1ZGVQYXRocy5hcnJheTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBpbmNsdWRlIHBhdGhzLlxuICAgKlxuICAgKiBAcGFyYW0gdmFsdWUgLSBUaGUgaW5jbHVkZSBwYXRocy5cbiAgICovXG4gIHB1YmxpYyBzZXQgaW5jbHVkZVBhdGhzKHZhbHVlOiBzdHJpbmdbXSkge1xuICAgIHRoaXMuX2luY2x1ZGVQYXRocy5hcnJheSA9IHZhbHVlO1xuICB9XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfZXhjbHVkZVBhdGhzID0gbmV3IFBhdGhTZXR0aW5nKFBhdGhTZXR0aW5nVHlwZS5FeGNsdWRlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfaW5jbHVkZVBhdGhzID0gbmV3IFBhdGhTZXR0aW5nKFBhdGhTZXR0aW5nVHlwZS5JbmNsdWRlKTtcblxuICAvKipcbiAgICogQ2hlY2tzIGlmIGEgcGF0aCBpcyBpZ25vcmVkIGJ5IHRoZSBpbmNsdWRlL2V4Y2x1ZGUgcGF0aCBzZXR0aW5ncy5cbiAgICpcbiAgICogQHBhcmFtIHBhdGggLSBUaGUgcGF0aCB0byBjaGVjay5cbiAgICogQHJldHVybnMgVHJ1ZSBpZiB0aGUgcGF0aCBpcyBpZ25vcmVkLCBmYWxzZSBvdGhlcndpc2UuXG4gICAqL1xuICBwdWJsaWMgaXNQYXRoSWdub3JlZChwYXRoOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5faW5jbHVkZVBhdGhzLmlzUGF0aElnbm9yZWQocGF0aCkgfHwgdGhpcy5fZXhjbHVkZVBhdGhzLmlzUGF0aElnbm9yZWQocGF0aCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gZ2V0RGVmYXVsdFJlZ0V4cCh0eXBlOiBQYXRoU2V0dGluZ1R5cGUpOiBSZWdFeHAge1xuICBzd2l0Y2ggKHR5cGUpIHtcbiAgICBjYXNlIFBhdGhTZXR0aW5nVHlwZS5FeGNsdWRlOlxuICAgICAgcmV0dXJuIE5FVkVSX01BVENIX1JFR19FWFA7XG4gICAgY2FzZSBQYXRoU2V0dGluZ1R5cGUuSW5jbHVkZTpcbiAgICAgIHJldHVybiBBTFdBWVNfTUFUQ0hfUkVHX0VYUDtcbiAgICBkZWZhdWx0OlxuICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIHBhdGggc2V0dGluZyB0eXBlOiAke3R5cGUgYXMgc3RyaW5nfWApO1xuICB9XG59XG5cbmZ1bmN0aW9uIG1ha2VSZWdFeHAocGF0aHM6IHN0cmluZ1tdLCBkZWZhdWx0UmVnRXhwOiBSZWdFeHApOiBSZWdFeHAge1xuICBpZiAocGF0aHMubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIGRlZmF1bHRSZWdFeHA7XG4gIH1cblxuICBjb25zdCByZWdFeHBTdHJDb21iaW5lZCA9IHBhdGhzLm1hcCgocGF0aCkgPT4ge1xuICAgIGlmIChwYXRoID09PSAnLycpIHtcbiAgICAgIHJldHVybiBkZWZhdWx0UmVnRXhwLnNvdXJjZTtcbiAgICB9XG5cbiAgICBpZiAocGF0aC5zdGFydHNXaXRoKCcvJykgJiYgcGF0aC5lbmRzV2l0aCgnLycpKSB7XG4gICAgICByZXR1cm4gcGF0aC5zbGljZSgxLCAtMSk7XG4gICAgfVxuXG4gICAgcGF0aCA9IHRyaW1FbmQocGF0aCwgJy8nKTtcbiAgICByZXR1cm4gYF4ke2VzY2FwZVJlZ0V4cChwYXRoKX0oL3wkKWA7XG4gIH0pXG4gICAgLm1hcCgocmVnRXhwU3RyKSA9PiBgKCR7cmVnRXhwU3RyfSlgKVxuICAgIC5qb2luKCd8Jyk7XG4gIHJldHVybiBuZXcgUmVnRXhwKHJlZ0V4cFN0ckNvbWJpbmVkKTtcbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtB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
235
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL1BsdWdpbi9QYXRoU2V0dGluZ3MudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQHBhY2thZ2VEb2N1bWVudGF0aW9uXG4gKlxuICogVGhpcyBtb2R1bGUgcHJvdmlkZXMgY2xhc3NlcyBmb3IgbWFuYWdpbmcgaW5jbHVkZS9leGNsdWRlIHBhdGggc2V0dGluZ3MuXG4gKi9cblxuaW1wb3J0IHtcbiAgQUxXQVlTX01BVENIX1JFR19FWFAsXG4gIGVzY2FwZVJlZ0V4cCxcbiAgTkVWRVJfTUFUQ0hfUkVHX0VYUFxufSBmcm9tICcuLi8uLi9SZWdFeHAudHMnO1xuaW1wb3J0IHsgdHJpbUVuZCB9IGZyb20gJy4uLy4uL1N0cmluZy50cyc7XG5cbmVudW0gUGF0aFNldHRpbmdUeXBlIHtcbiAgRXhjbHVkZSA9ICdFeGNsdWRlJyxcbiAgSW5jbHVkZSA9ICdJbmNsdWRlJ1xufVxuXG5jbGFzcyBQYXRoU2V0dGluZyB7XG4gIHB1YmxpYyBnZXQgYXJyYXkoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiB0aGlzLl9hcnJheTtcbiAgfVxuXG4gIHB1YmxpYyBzZXQgYXJyYXkodmFsdWU6IHN0cmluZ1tdKSB7XG4gICAgdGhpcy5fYXJyYXkgPSB2YWx1ZS5maWx0ZXIoQm9vbGVhbik7XG4gICAgdGhpcy5yZWdFeHAgPSBtYWtlUmVnRXhwKHRoaXMuX2FycmF5LCB0aGlzLmRlZmF1bHRSZWdFeHApO1xuICB9XG5cbiAgcHJpdmF0ZSBfYXJyYXk6IHN0cmluZ1tdID0gW107XG4gIHByaXZhdGUgcmVhZG9ubHkgZGVmYXVsdFJlZ0V4cDogUmVnRXhwO1xuICBwcml2YXRlIHJlZ0V4cDogUmVnRXhwO1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IHR5cGU6IFBhdGhTZXR0aW5nVHlwZSkge1xuICAgIHRoaXMuZGVmYXVsdFJlZ0V4cCA9IGdldERlZmF1bHRSZWdFeHAodHlwZSk7XG4gICAgdGhpcy5yZWdFeHAgPSB0aGlzLmRlZmF1bHRSZWdFeHA7XG4gIH1cblxuICBwdWJsaWMgaXNQYXRoSWdub3JlZChwYXRoOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAvKiB2OCBpZ25vcmUgc3RhcnQgLS0gQWxsIGJyYW5jaGVzIGNvdmVyZWQgYnV0IHY4IHJlcG9ydHMgc3dpdGNoIGFzIHBhcnRpYWwuICovXG4gICAgc3dpdGNoICh0aGlzLnR5cGUpIHtcbiAgICAgIC8qIHY4IGlnbm9yZSBzdG9wICovXG4gICAgICBjYXNlIFBhdGhTZXR0aW5nVHlwZS5FeGNsdWRlOlxuICAgICAgICByZXR1cm4gdGhpcy5yZWdFeHAudGVzdChwYXRoKTtcbiAgICAgIGNhc2UgUGF0aFNldHRpbmdUeXBlLkluY2x1ZGU6XG4gICAgICAgIHJldHVybiAhdGhpcy5yZWdFeHAudGVzdChwYXRoKTtcbiAgICAgIC8qIHY4IGlnbm9yZSBzdGFydCAtLSBBbGwgZW51bSB2YWx1ZXMgYXJlIGhhbmRsZWQgYWJvdmUuICovXG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgcGF0aCBzZXR0aW5nIHR5cGU6ICR7dGhpcy50eXBlIGFzIHN0cmluZ31gKTtcbiAgICAgICAgLyogdjggaWdub3JlIHN0b3AgKi9cbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBBIGNsYXNzIGZvciBtYW5hZ2luZyBpbmNsdWRlL2V4Y2x1ZGUgcGF0aCBzZXR0aW5ncy5cbiAqL1xuZXhwb3J0IGNsYXNzIFBhdGhTZXR0aW5ncyB7XG4gIC8qKlxuICAgKiBHZXRzIHRoZSBleGNsdWRlIHBhdGhzLlxuICAgKlxuICAgKiBAcmV0dXJucyBUaGUgZXhjbHVkZSBwYXRocy5cbiAgICovXG4gIHB1YmxpYyBnZXQgZXhjbHVkZVBhdGhzKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gdGhpcy5fZXhjbHVkZVBhdGhzLmFycmF5O1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIGV4Y2x1ZGUgcGF0aHMuXG4gICAqXG4gICAqIEBwYXJhbSB2YWx1ZSAtIFRoZSBleGNsdWRlIHBhdGhzLlxuICAgKi9cbiAgcHVibGljIHNldCBleGNsdWRlUGF0aHModmFsdWU6IHN0cmluZ1tdKSB7XG4gICAgdGhpcy5fZXhjbHVkZVBhdGhzLmFycmF5ID0gdmFsdWU7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgaW5jbHVkZSBwYXRocy5cbiAgICpcbiAgICogQHJldHVybnMgVGhlIGluY2x1ZGUgcGF0aHMuXG4gICAqL1xuICBwdWJsaWMgZ2V0IGluY2x1ZGVQYXRocygpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIHRoaXMuX2luY2x1ZGVQYXRocy5hcnJheTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBpbmNsdWRlIHBhdGhzLlxuICAgKlxuICAgKiBAcGFyYW0gdmFsdWUgLSBUaGUgaW5jbHVkZSBwYXRocy5cbiAgICovXG4gIHB1YmxpYyBzZXQgaW5jbHVkZVBhdGhzKHZhbHVlOiBzdHJpbmdbXSkge1xuICAgIHRoaXMuX2luY2x1ZGVQYXRocy5hcnJheSA9IHZhbHVlO1xuICB9XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfZXhjbHVkZVBhdGhzID0gbmV3IFBhdGhTZXR0aW5nKFBhdGhTZXR0aW5nVHlwZS5FeGNsdWRlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfaW5jbHVkZVBhdGhzID0gbmV3IFBhdGhTZXR0aW5nKFBhdGhTZXR0aW5nVHlwZS5JbmNsdWRlKTtcblxuICAvKipcbiAgICogQ2hlY2tzIGlmIGEgcGF0aCBpcyBpZ25vcmVkIGJ5IHRoZSBpbmNsdWRlL2V4Y2x1ZGUgcGF0aCBzZXR0aW5ncy5cbiAgICpcbiAgICogQHBhcmFtIHBhdGggLSBUaGUgcGF0aCB0byBjaGVjay5cbiAgICogQHJldHVybnMgVHJ1ZSBpZiB0aGUgcGF0aCBpcyBpZ25vcmVkLCBmYWxzZSBvdGhlcndpc2UuXG4gICAqL1xuICBwdWJsaWMgaXNQYXRoSWdub3JlZChwYXRoOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5faW5jbHVkZVBhdGhzLmlzUGF0aElnbm9yZWQocGF0aCkgfHwgdGhpcy5fZXhjbHVkZVBhdGhzLmlzUGF0aElnbm9yZWQocGF0aCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gZ2V0RGVmYXVsdFJlZ0V4cCh0eXBlOiBQYXRoU2V0dGluZ1R5cGUpOiBSZWdFeHAge1xuICAvKiB2OCBpZ25vcmUgc3RhcnQgLS0gQWxsIGJyYW5jaGVzIGNvdmVyZWQgYnV0IHY4IHJlcG9ydHMgc3dpdGNoIGFzIHBhcnRpYWwuICovXG4gIHN3aXRjaCAodHlwZSkge1xuICAgIC8qIHY4IGlnbm9yZSBzdG9wICovXG4gICAgY2FzZSBQYXRoU2V0dGluZ1R5cGUuRXhjbHVkZTpcbiAgICAgIHJldHVybiBORVZFUl9NQVRDSF9SRUdfRVhQO1xuICAgIGNhc2UgUGF0aFNldHRpbmdUeXBlLkluY2x1ZGU6XG4gICAgICByZXR1cm4gQUxXQVlTX01BVENIX1JFR19FWFA7XG4gICAgLyogdjggaWdub3JlIHN0YXJ0IC0tIEFsbCBlbnVtIHZhbHVlcyBhcmUgaGFuZGxlZCBhYm92ZS4gKi9cbiAgICBkZWZhdWx0OlxuICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIHBhdGggc2V0dGluZyB0eXBlOiAke3R5cGUgYXMgc3RyaW5nfWApO1xuICAgICAgLyogdjggaWdub3JlIHN0b3AgKi9cbiAgfVxufVxuXG5mdW5jdGlvbiBtYWtlUmVnRXhwKHBhdGhzOiBzdHJpbmdbXSwgZGVmYXVsdFJlZ0V4cDogUmVnRXhwKTogUmVnRXhwIHtcbiAgaWYgKHBhdGhzLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiBkZWZhdWx0UmVnRXhwO1xuICB9XG5cbiAgY29uc3QgcmVnRXhwU3RyQ29tYmluZWQgPSBwYXRocy5tYXAoKHBhdGgpID0+IHtcbiAgICBpZiAocGF0aCA9PT0gJy8nKSB7XG4gICAgICByZXR1cm4gZGVmYXVsdFJlZ0V4cC5zb3VyY2U7XG4gICAgfVxuXG4gICAgaWYgKHBhdGguc3RhcnRzV2l0aCgnLycpICYmIHBhdGguZW5kc1dpdGgoJy8nKSkge1xuICAgICAgcmV0dXJuIHBhdGguc2xpY2UoMSwgLTEpO1xuICAgIH1cblxuICAgIHBhdGggPSB0cmltRW5kKHBhdGgsICcvJyk7XG4gICAgcmV0dXJuIGBeJHtlc2NhcGVSZWdFeHAocGF0aCl9KC98JClgO1xuICB9KVxuICAgIC5tYXAoKHJlZ0V4cFN0cikgPT4gYCgke3JlZ0V4cFN0cn0pYClcbiAgICAuam9pbignfCcpO1xuICByZXR1cm4gbmV3IFJlZ0V4cChyZWdFeHBTdHJDb21iaW5lZCk7XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQU1BLG9CQUlPO0FBQ1Asb0JBQXdCO0FBT3hCLE1BQU0sWUFBWTtBQUFBLEVBY1QsWUFBNkIsTUFBdUI7QUFBdkI7QUFDbEMsU0FBSyxnQkFBZ0IsaUJBQWlCLElBQUk7QUFDMUMsU0FBSyxTQUFTLEtBQUs7QUFBQSxFQUNyQjtBQUFBLEVBaEJBLElBQVcsUUFBa0I7QUFDM0IsV0FBTyxLQUFLO0FBQUEsRUFDZDtBQUFBLEVBRUEsSUFBVyxNQUFNLE9BQWlCO0FBQ2hDLFNBQUssU0FBUyxNQUFNLE9BQU8sT0FBTztBQUNsQyxTQUFLLFNBQVMsV0FBVyxLQUFLLFFBQVEsS0FBSyxhQUFhO0FBQUEsRUFDMUQ7QUFBQSxFQUVRLFNBQW1CLENBQUM7QUFBQSxFQUNYO0FBQUEsRUFDVDtBQUFBLEVBT0QsY0FBYyxNQUF1QjtBQUUxQyxZQUFRLEtBQUssTUFBTTtBQUFBO0FBQUEsTUFFakIsS0FBSztBQUNILGVBQU8sS0FBSyxPQUFPLEtBQUssSUFBSTtBQUFBLE1BQzlCLEtBQUs7QUFDSCxlQUFPLENBQUMsS0FBSyxPQUFPLEtBQUssSUFBSTtBQUFBO0FBQUEsTUFFL0I7QUFDRSxjQUFNLElBQUksTUFBTSw4QkFBOEIsS0FBSyxJQUFjLEVBQUU7QUFBQSxJQUV2RTtBQUFBLEVBQ0Y7QUFDRjtBQUtPLE1BQU0sYUFBYTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU14QixJQUFXLGVBQXlCO0FBQ2xDLFdBQU8sS0FBSyxjQUFjO0FBQUEsRUFDNUI7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFPQSxJQUFXLGFBQWEsT0FBaUI7QUFDdkMsU0FBSyxjQUFjLFFBQVE7QUFBQSxFQUM3QjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU9BLElBQVcsZUFBeUI7QUFDbEMsV0FBTyxLQUFLLGNBQWM7QUFBQSxFQUM1QjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU9BLElBQVcsYUFBYSxPQUFpQjtBQUN2QyxTQUFLLGNBQWMsUUFBUTtBQUFBLEVBQzdCO0FBQUEsRUFFaUIsZ0JBQWdCLElBQUksWUFBWSx1QkFBdUI7QUFBQSxFQUN2RCxnQkFBZ0IsSUFBSSxZQUFZLHVCQUF1QjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBUWpFLGNBQWMsTUFBdUI7QUFDMUMsV0FBTyxLQUFLLGNBQWMsY0FBYyxJQUFJLEtBQUssS0FBSyxjQUFjLGNBQWMsSUFBSTtBQUFBLEVBQ3hGO0FBQ0Y7QUFFQSxTQUFTLGlCQUFpQixNQUErQjtBQUV2RCxVQUFRLE1BQU07QUFBQTtBQUFBLElBRVosS0FBSztBQUNILGFBQU87QUFBQSxJQUNULEtBQUs7QUFDSCxhQUFPO0FBQUE7QUFBQSxJQUVUO0FBQ0UsWUFBTSxJQUFJLE1BQU0sOEJBQThCLElBQWMsRUFBRTtBQUFBLEVBRWxFO0FBQ0Y7QUFFQSxTQUFTLFdBQVcsT0FBaUIsZUFBK0I7QUFDbEUsTUFBSSxNQUFNLFdBQVcsR0FBRztBQUN0QixXQUFPO0FBQUEsRUFDVDtBQUVBLFFBQU0sb0JBQW9CLE1BQU0sSUFBSSxDQUFDLFNBQVM7QUFDNUMsUUFBSSxTQUFTLEtBQUs7QUFDaEIsYUFBTyxjQUFjO0FBQUEsSUFDdkI7QUFFQSxRQUFJLEtBQUssV0FBVyxHQUFHLEtBQUssS0FBSyxTQUFTLEdBQUcsR0FBRztBQUM5QyxhQUFPLEtBQUssTUFBTSxHQUFHLEVBQUU7QUFBQSxJQUN6QjtBQUVBLGVBQU8sdUJBQVEsTUFBTSxHQUFHO0FBQ3hCLFdBQU8sUUFBSSw0QkFBYSxJQUFJLENBQUM7QUFBQSxFQUMvQixDQUFDLEVBQ0UsSUFBSSxDQUFDLGNBQWMsSUFBSSxTQUFTLEdBQUcsRUFDbkMsS0FBSyxHQUFHO0FBQ1gsU0FBTyxJQUFJLE9BQU8saUJBQWlCO0FBQ3JDOyIsCiAgIm5hbWVzIjogW10KfQo=
@@ -450,4 +450,4 @@ ${message}`);
450
450
  0 && (module.exports = {
451
451
  PluginBase
452
452
  });
453
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL1BsdWdpbi9QbHVnaW5CYXNlLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBwYWNrYWdlRG9jdW1lbnRhdGlvblxuICpcbiAqIEJhc2UgY2xhc3MgZm9yIE9ic2lkaWFuIHBsdWdpbnMgcHJvdmlkaW5nIHV0aWxpdHkgbWV0aG9kcyBmb3Igc2V0dGluZ3MgbWFuYWdlbWVudCwgZXJyb3IgaGFuZGxpbmcsIGFuZCBub3RpZmljYXRpb25zLlxuICpcbiAqIFRoaXMgY2xhc3Mgc2ltcGxpZmllcyB0aGUgcHJvY2VzcyBvZiBtYW5hZ2luZyBwbHVnaW4gc2V0dGluZ3MsIGRpc3BsYXlpbmcgbm90aWZpY2F0aW9ucywgYW5kIGhhbmRsaW5nIGVycm9ycy5cbiAqIFN1YmNsYXNzZXMgc2hvdWxkIGltcGxlbWVudCBtZXRob2RzIHRvIGNyZWF0ZSBkZWZhdWx0IHNldHRpbmdzIGFuZCBzZXR0aW5ncyB0YWJzLCBhbmQgY29tcGxldGUgcGx1Z2luLXNwZWNpZmljXG4gKiBsb2FkaW5nIHRhc2tzLlxuICovXG5cbmltcG9ydCB0eXBlIHsgUmVhZG9ubHlEZWVwIH0gZnJvbSAndHlwZS1mZXN0JztcblxuaW1wb3J0IHtcbiAgTm90aWNlLFxuICBQbHVnaW4gYXMgT2JzaWRpYW5QbHVnaW5cbn0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQgdHlwZSB7IFRyYW5zbGF0aW9uc01hcCB9IGZyb20gJy4uL2kxOG4vaTE4bi50cyc7XG5pbXBvcnQgdHlwZSB7XG4gIEV4dHJhY3RQbHVnaW5TZXR0aW5ncyxcbiAgRXh0cmFjdFBsdWdpblNldHRpbmdzTWFuYWdlcixcbiAgRXh0cmFjdFBsdWdpblNldHRpbmdzVGFiLFxuICBFeHRyYWN0UmVhZG9ubHlQbHVnaW5TZXR0aW5nc1dyYXBwZXIsXG4gIFBsdWdpblR5cGVzQmFzZVxufSBmcm9tICcuL1BsdWdpblR5cGVzQmFzZS50cyc7XG5cbmltcG9ydCB7XG4gIGNvbnZlcnRBc3luY1RvU3luYyxcbiAgaW52b2tlQXN5bmNTYWZlbHksXG4gIGludm9rZUFzeW5jU2FmZWx5QWZ0ZXJEZWxheVxufSBmcm9tICcuLi8uLi9Bc3luYy50cyc7XG5pbXBvcnQgeyBBc3luY0V2ZW50cyB9IGZyb20gJy4uLy4uL0FzeW5jRXZlbnRzLnRzJztcbmltcG9ydCB7IGdldERlYnVnZ2VyIH0gZnJvbSAnLi4vLi4vRGVidWcudHMnO1xuaW1wb3J0IHtcbiAgcmVnaXN0ZXJBc3luY0Vycm9yRXZlbnRIYW5kbGVyLFxuICBTaWxlbnRFcnJvclxufSBmcm9tICcuLi8uLi9FcnJvci50cyc7XG5pbXBvcnQgeyBub29wQXN5bmMgfSBmcm9tICcuLi8uLi9GdW5jdGlvbi50cyc7XG5pbXBvcnQgeyByZWdpc3RlckFzeW5jRXZlbnQgfSBmcm9tICcuLi9Db21wb25lbnRzL0FzeW5jRXZlbnRzQ29tcG9uZW50LnRzJztcbmltcG9ydCB7XG4gIGluaXRJMThOLFxuICB0XG59IGZyb20gJy4uL2kxOG4vaTE4bi50cyc7XG5pbXBvcnQgeyBkZWZhdWx0VHJhbnNsYXRpb25zTWFwIH0gZnJvbSAnLi4vaTE4bi9sb2NhbGVzL3RyYW5zbGF0aW9uc01hcC50cyc7XG5pbXBvcnQgeyBnZXRBbGxEb21XaW5kb3dzIH0gZnJvbSAnLi4vV29ya3NwYWNlLnRzJztcbmltcG9ydCB7XG4gIGluaXREZWJ1Z0NvbnRyb2xsZXIsXG4gIGluaXRQbHVnaW5Db250ZXh0XG59IGZyb20gJy4vUGx1Z2luQ29udGV4dC50cyc7XG5cbnR5cGUgTGlmZWN5Y2xlRXZlbnROYW1lID0gJ2xheW91dFJlYWR5JyB8ICdsb2FkJyB8ICd1bmxvYWQnO1xuXG4vKipcbiAqIEJhc2UgY2xhc3MgZm9yIGNyZWF0aW5nIE9ic2lkaWFuIHBsdWdpbnMgd2l0aCBidWlsdC1pbiBzdXBwb3J0IGZvciBzZXR0aW5ncyBtYW5hZ2VtZW50LCBlcnJvciBoYW5kbGluZywgYW5kIG5vdGlmaWNhdGlvbnMuXG4gKlxuICogQHR5cGVQYXJhbSBQbHVnaW5UeXBlcyAtIFBsdWdpbi1zcGVjaWZpYyB0eXBlcy5cbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFBsdWdpbkJhc2U8UGx1Z2luVHlwZXMgZXh0ZW5kcyBQbHVnaW5UeXBlc0Jhc2U+IGV4dGVuZHMgT2JzaWRpYW5QbHVnaW4ge1xuICAvKipcbiAgICogVGhlIGV2ZW50cyBvZiB0aGUgcGx1Z2luLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGV2ZW50cyA9IG5ldyBBc3luY0V2ZW50cygpO1xuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBBYm9ydFNpZ25hbCB1c2VkIGZvciBhYm9ydGluZyBsb25nLXJ1bm5pbmcgb3BlcmF0aW9ucy5cbiAgICpcbiAgICogQHJldHVybnMgVGhlIGFib3J0IHNpZ25hbC5cbiAgICogQHRocm93cyBJZiB0aGUgYWJvcnQgc2lnbmFsIGlzIG5vdCBkZWZpbmVkLlxuICAgKi9cbiAgcHVibGljIGdldCBhYm9ydFNpZ25hbCgpOiBBYm9ydFNpZ25hbCB7XG4gICAgaWYgKCF0aGlzLl9hYm9ydFNpZ25hbCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdBYm9ydCBzaWduYWwgbm90IGRlZmluZWQnKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX2Fib3J0U2lnbmFsO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIHJlYWRvbmx5IHBsdWdpbiBzZXR0aW5ncy5cbiAgICpcbiAgICogQHJldHVybnMgVGhlIHJlYWRvbmx5IHBsdWdpbiBzZXR0aW5ncy5cbiAgICovXG4gIHB1YmxpYyBnZXQgc2V0dGluZ3MoKTogUmVhZG9ubHlEZWVwPEV4dHJhY3RQbHVnaW5TZXR0aW5nczxQbHVnaW5UeXBlcz4+IHtcbiAgICByZXR1cm4gdGhpcy5zZXR0aW5nc01hbmFnZXIuc2V0dGluZ3NXcmFwcGVyLnNhZmVTZXR0aW5ncyBhcyBSZWFkb25seURlZXA8RXh0cmFjdFBsdWdpblNldHRpbmdzPFBsdWdpblR5cGVzPj47XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgcGx1Z2luIHNldHRpbmdzIG1hbmFnZXIuXG4gICAqXG4gICAqIEByZXR1cm5zIFRoZSBwbHVnaW4gc2V0dGluZ3MgbWFuYWdlci5cbiAgICovXG4gIHB1YmxpYyBnZXQgc2V0dGluZ3NNYW5hZ2VyKCk6IEV4dHJhY3RQbHVnaW5TZXR0aW5nc01hbmFnZXI8UGx1Z2luVHlwZXM+IHtcbiAgICBpZiAoIXRoaXMuX3NldHRpbmdzTWFuYWdlcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdTZXR0aW5ncyBtYW5hZ2VyIG5vdCBkZWZpbmVkJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX3NldHRpbmdzTWFuYWdlcjtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBwbHVnaW4gc2V0dGluZ3MgdGFiLlxuICAgKlxuICAgKiBAcmV0dXJucyBUaGUgcGx1Z2luIHNldHRpbmdzIHRhYi5cbiAgICovXG4gIHB1YmxpYyBnZXQgc2V0dGluZ3NUYWIoKTogRXh0cmFjdFBsdWdpblNldHRpbmdzVGFiPFBsdWdpblR5cGVzPiB7XG4gICAgaWYgKCF0aGlzLl9zZXR0aW5nc1RhYikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdTZXR0aW5ncyB0YWIgbm90IGRlZmluZWQnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fc2V0dGluZ3NUYWI7XG4gIH1cblxuICBwcml2YXRlIF9hYm9ydFNpZ25hbD86IEFib3J0U2lnbmFsO1xuICBwcml2YXRlIF9zZXR0aW5nc01hbmFnZXI6IEV4dHJhY3RQbHVnaW5TZXR0aW5nc01hbmFnZXI8UGx1Z2luVHlwZXM+IHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgX3NldHRpbmdzVGFiOiBFeHRyYWN0UGx1Z2luU2V0dGluZ3NUYWI8UGx1Z2luVHlwZXM+IHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgcmVhZG9ubHkgbGlmZWN5Y2xlRXZlbnROYW1lcyA9IG5ldyBTZXQ8TGlmZWN5Y2xlRXZlbnROYW1lPigpO1xuICBwcml2YXRlIG5vdGljZT86IE5vdGljZTtcblxuICAvKipcbiAgICogTG9ncyBhIG1lc3NhZ2UgdG8gdGhlIGNvbnNvbGUuXG4gICAqXG4gICAqIFVzZSBpbnN0ZWFkIG9mIGBjb25zb2xlLmRlYnVnKClgLlxuICAgKlxuICAgKiBUaG9zZSBtZXNzYWdlcyBhcmUgbm90IHNob3duIGJ5IGRlZmF1bHQsIGJ1dCB0aGV5IGNhbiBiZSBzaG93biBieSBlbmFibGluZyBgeW91ci1wbHVnaW4taWRgIGRlYnVnZ2VyIG5hbWVzcGFjZS5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL21uYW91bW92L29ic2lkaWFuLWRldi11dGlscy9ibG9iL21haW4vZG9jcy9kZWJ1Z2dpbmcubWR9IGZvciBtb3JlIGluZm9ybWF0aW9uLlxuICAgKlxuICAgKiBAcGFyYW0gbWVzc2FnZSAtIFRoZSBtZXNzYWdlIHRvIGxvZy5cbiAgICogQHBhcmFtIGFyZ3MgLSBUaGUgYXJndW1lbnRzIHRvIGxvZy5cbiAgICovXG4gIHB1YmxpYyBjb25zb2xlRGVidWcobWVzc2FnZTogc3RyaW5nLCAuLi5hcmdzOiB1bmtub3duW10pOiB2b2lkIHtcbiAgICAvLyBTa2lwIHRoZSBgY29uc29sZURlYnVnKClgIGNhbGwgaXRzZWxmXG4gICAgY29uc3QgRlJBTUVTX1RPX1NLSVAgPSAxO1xuICAgIGNvbnN0IHBsdWdpbkRlYnVnZ2VyID0gZ2V0RGVidWdnZXIodGhpcy5tYW5pZmVzdC5pZCwgRlJBTUVTX1RPX1NLSVApO1xuICAgIHBsdWdpbkRlYnVnZ2VyKG1lc3NhZ2UsIC4uLmFyZ3MpO1xuICB9XG5cbiAgLyoqXG4gICAqIENhbGxlZCB3aGVuIHRoZSBleHRlcm5hbCBzZXR0aW5ncyBjaGFuZ2UuXG4gICAqXG4gICAqIFVzdWFsbHksIHlvdSBkb24ndCBuZWVkIHRvIG92ZXJyaWRlIHRoaXMgbWV0aG9kLiBDb25zaWRlciB1c2luZyB7QGxpbmsgb25Mb2FkU2V0dGluZ3N9IGluc3RlYWQuXG4gICAqXG4gICAqIElmIHlvdSBzdGlsbCBuZWVkIHRvIG92ZXJyaWRlIHRoaXMgbWV0aG9kLCBtYWtlIHN1cmUgdG8gY2FsbCBgYXdhaXQgc3VwZXIub25FeHRlcm5hbFNldHRpbmdzQ2hhbmdlKClgIGZpcnN0LlxuICAgKi9cbiAgcHVibGljIG92ZXJyaWRlIGFzeW5jIG9uRXh0ZXJuYWxTZXR0aW5nc0NoYW5nZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCBzdXBlci5vbkV4dGVybmFsU2V0dGluZ3NDaGFuZ2U/LigpO1xuICAgIGF3YWl0IHRoaXMuX3NldHRpbmdzTWFuYWdlcj8ubG9hZEZyb21GaWxlKGZhbHNlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxsZWQgd2hlbiB0aGUgcGx1Z2luIGlzIGxvYWRlZFxuICAgKlxuICAgKiBVc3VhbGx5LCB5b3UgZG9uJ3QgbmVlZCB0byBvdmVycmlkZSB0aGlzIG1ldGhvZC4gQ29uc2lkZXIgdXNpbmcge0BsaW5rIG9ubG9hZEltcGx9IGluc3RlYWQuXG4gICAqXG4gICAqIElmIHlvdSBzdGlsbCBuZWVkIHRvIG92ZXJyaWRlIHRoaXMgbWV0aG9kLCBtYWtlIHN1cmUgdG8gY2FsbCBgYXdhaXQgc3VwZXIub25sb2FkKClgIGZpcnN0LlxuICAgKi9cbiAgcHVibGljIG92ZXJyaWRlIGFzeW5jIG9ubG9hZCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCBzdXBlci5vbmxvYWQoKTtcbiAgICBhd2FpdCB0aGlzLm9ubG9hZEltcGwoKTtcbiAgICBpbnZva2VBc3luY1NhZmVseUFmdGVyRGVsYXkodGhpcy5hZnRlckxvYWQuYmluZCh0aGlzKSk7XG4gIH1cblxuICAvKipcbiAgICogQ2FsbGVkIHdoZW4gdGhlIHBsdWdpbiBpcyB1bmxvYWRlZC5cbiAgICpcbiAgICogVXN1YWxseSwgeW91IGRvbid0IG5lZWQgdG8gb3ZlcnJpZGUgdGhpcyBtZXRob2QuIENvbnNpZGVyIHVzaW5nIHtAbGluayBvbnVubG9hZEltcGx9IGluc3RlYWQuXG4gICAqXG4gICAqIElmIHlvdSBzdGlsbCBuZWVkIHRvIG92ZXJyaWRlIHRoaXMgbWV0aG9kLCBtYWtlIHN1cmUgdG8gY2FsbCBgc3VwZXIub251bmxvYWQoKWAgZmlyc3QuXG4gICAqL1xuICBwdWJsaWMgb3ZlcnJpZGUgb251bmxvYWQoKTogdm9pZCB7XG4gICAgc3VwZXIub251bmxvYWQoKTtcbiAgICBpbnZva2VBc3luY1NhZmVseShhc3luYyAoKSA9PiB7XG4gICAgICB0cnkge1xuICAgICAgICBhd2FpdCB0aGlzLm9udW5sb2FkSW1wbCgpO1xuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgYXdhaXQgdGhpcy50cmlnZ2VyTGlmZWN5Y2xlRXZlbnQoJ3VubG9hZCcpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlZ2lzdGVycyBhIERPTSB3aW5kb3cgaGFuZGxlci5cbiAgICpcbiAgICogQHBhcmFtIGRvbVdpbmRvd0hhbmRsZXIgLSBUaGUgRE9NIHdpbmRvdyBoYW5kbGVyLlxuICAgKi9cbiAgcHVibGljIHJlZ2lzdGVyRG9tV2luZG93SGFuZGxlcihkb21XaW5kb3dIYW5kbGVyOiAod2luOiBXaW5kb3cpID0+IHZvaWQpOiB2b2lkIHtcbiAgICBjb25zdCBtYWluV2luZG93ID0gd2luZG93O1xuICAgIGRvbVdpbmRvd0hhbmRsZXIobWFpbldpbmRvdyk7XG5cbiAgICB0aGlzLmFwcC53b3Jrc3BhY2Uub25MYXlvdXRSZWFkeSgoKSA9PiB7XG4gICAgICBmb3IgKGNvbnN0IHdpbiBvZiBnZXRBbGxEb21XaW5kb3dzKHRoaXMuYXBwKSkge1xuICAgICAgICBpZiAod2luID09PSBtYWluV2luZG93KSB7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICBkb21XaW5kb3dIYW5kbGVyKHdpbik7XG4gICAgICB9XG5cbiAgICAgIHRoaXMucmVnaXN0ZXJFdmVudCh0aGlzLmFwcC53b3Jrc3BhY2Uub24oJ3dpbmRvdy1vcGVuJywgKHdvcmtzcGFjZVdpbmRvdykgPT4ge1xuICAgICAgICBkb21XaW5kb3dIYW5kbGVyKHdvcmtzcGFjZVdpbmRvdy53aW4pO1xuICAgICAgfSkpO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlZ2lzdGVycyBhIGNhbGxiYWNrIHRvIGJlIGV4ZWN1dGVkIHdoZW4gYSBsaWZlY3ljbGUgZXZlbnQgaXMgdHJpZ2dlcmVkLlxuICAgKlxuICAgKiBAcGFyYW0gbmFtZSAtIFRoZSBuYW1lIG9mIHRoZSBldmVudC5cbiAgICogQHBhcmFtIGNhbGxiYWNrIC0gVGhlIGNhbGxiYWNrIHRvIGV4ZWN1dGUuXG4gICAqL1xuICBwdWJsaWMgcmVnaXN0ZXJGb3JMaWZlY3ljbGVFdmVudChuYW1lOiBMaWZlY3ljbGVFdmVudE5hbWUsIGNhbGxiYWNrOiAoKSA9PiBQcm9taXNlPHZvaWQ+KTogdm9pZCB7XG4gICAgaW52b2tlQXN5bmNTYWZlbHkoYXN5bmMgKCkgPT4ge1xuICAgICAgYXdhaXQgdGhpcy53YWl0Rm9yTGlmZWN5Y2xlRXZlbnQobmFtZSk7XG4gICAgICBhd2FpdCBjYWxsYmFjaygpO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlZ2lzdGVycyBhIERPTSBldmVudCBmb3IgYWxsIHBvcHVwIHdpbmRvdyBkb2N1bWVudHMuXG4gICAqXG4gICAqIEB0eXBlUGFyYW0gRG9jdW1lbnRFdmVudFR5cGUgLSBUaGUgdHlwZSBvZiB0aGUgZXZlbnQuXG4gICAqIEBwYXJhbSB0eXBlIC0gVGhlIHR5cGUgb2YgdGhlIGV2ZW50LlxuICAgKiBAcGFyYW0gY2FsbGJhY2sgLSBUaGUgY2FsbGJhY2sgdG8gZXhlY3V0ZS5cbiAgICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgb3B0aW9ucyBmb3IgdGhlIGV2ZW50LlxuICAgKi9cbiAgcHVibGljIHJlZ2lzdGVyUG9wdXBEb2N1bWVudERvbUV2ZW50PERvY3VtZW50RXZlbnRUeXBlIGV4dGVuZHMga2V5b2YgRG9jdW1lbnRFdmVudE1hcD4oXG4gICAgdHlwZTogRG9jdW1lbnRFdmVudFR5cGUsXG4gICAgY2FsbGJhY2s6ICh0aGlzOiBIVE1MRWxlbWVudCwgZXZ0OiBEb2N1bWVudEV2ZW50TWFwW0RvY3VtZW50RXZlbnRUeXBlXSkgPT4gdW5rbm93bixcbiAgICBvcHRpb25zPzogQWRkRXZlbnRMaXN0ZW5lck9wdGlvbnMgfCBib29sZWFuXG4gICk6IHZvaWQge1xuICAgIHRoaXMucmVnaXN0ZXJEb21XaW5kb3dIYW5kbGVyKCh3aW4pID0+IHtcbiAgICAgIHRoaXMucmVnaXN0ZXJEb21FdmVudCh3aW4uZG9jdW1lbnQsIHR5cGUsIGNhbGxiYWNrLCBvcHRpb25zKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWdpc3RlcnMgYSBET00gZXZlbnQgZm9yIGFsbCBwb3B1cCB3aW5kb3dzLlxuICAgKlxuICAgKiBAdHlwZVBhcmFtIFdpbmRvd0V2ZW50VHlwZSAtIFRoZSB0eXBlIG9mIHRoZSBldmVudC5cbiAgICogQHBhcmFtIHR5cGUgLSBUaGUgdHlwZSBvZiB0aGUgZXZlbnQuXG4gICAqIEBwYXJhbSBjYWxsYmFjayAtIFRoZSBjYWxsYmFjayB0byBleGVjdXRlLlxuICAgKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBvcHRpb25zIGZvciB0aGUgZXZlbnQuXG4gICAqL1xuICBwdWJsaWMgcmVnaXN0ZXJQb3B1cFdpbmRvd0RvbUV2ZW50PFdpbmRvd0V2ZW50VHlwZSBleHRlbmRzIGtleW9mIFdpbmRvd0V2ZW50TWFwPihcbiAgICB0eXBlOiBXaW5kb3dFdmVudFR5cGUsXG4gICAgY2FsbGJhY2s6ICh0aGlzOiBIVE1MRWxlbWVudCwgZXZ0OiBXaW5kb3dFdmVudE1hcFtXaW5kb3dFdmVudFR5cGVdKSA9PiB1bmtub3duLFxuICAgIG9wdGlvbnM/OiBBZGRFdmVudExpc3RlbmVyT3B0aW9ucyB8IGJvb2xlYW5cbiAgKTogdm9pZCB7XG4gICAgdGhpcy5yZWdpc3RlckRvbVdpbmRvd0hhbmRsZXIoKHdpbikgPT4ge1xuICAgICAgdGhpcy5yZWdpc3RlckRvbUV2ZW50KHdpbiwgdHlwZSwgY2FsbGJhY2ssIG9wdGlvbnMpO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFdhaXRzIGZvciBhIGxpZmVjeWNsZSBldmVudCB0byBiZSB0cmlnZ2VyZWQuXG4gICAqXG4gICAqIElmIHlvdSBgYXdhaXRgIHRoaXMgbWV0aG9kIGR1cmluZyBsaWZlY3ljbGUgZXZlbnQsIGl0IG1pZ2h0IGNhdXNlIGEgZGVhZGxvY2suXG4gICAqXG4gICAqIENvbnNpZGVyIHdyYXBwaW5nIHRoaXMgY2FsbCB3aXRoIHtAbGluayBpbnZva2VBc3luY1NhZmVseX0uXG4gICAqXG4gICAqIEBwYXJhbSBuYW1lIC0gVGhlIG5hbWUgb2YgdGhlIGV2ZW50LlxuICAgKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIGV2ZW50IGlzIHRyaWdnZXJlZC5cbiAgICovXG4gIHB1YmxpYyBhc3luYyB3YWl0Rm9yTGlmZWN5Y2xlRXZlbnQobmFtZTogTGlmZWN5Y2xlRXZlbnROYW1lKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKHRoaXMubGlmZWN5Y2xlRXZlbnROYW1lcy5oYXMobmFtZSkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBhd2FpdCBuZXcgUHJvbWlzZTx2b2lkPigocmVzb2x2ZSkgPT4ge1xuICAgICAgdGhpcy5ldmVudHMub25jZShuYW1lLCAoKSA9PiB7XG4gICAgICAgIHJlc29sdmUoKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgdGhlIHBsdWdpbiBzZXR0aW5ncyBtYW5hZ2VyLiBUaGlzIG1ldGhvZCBtdXN0IGJlIGltcGxlbWVudGVkIGJ5IHN1YmNsYXNzZXMuXG4gICAqXG4gICAqIEByZXR1cm5zIFRoZSBwbHVnaW4gc2V0dGluZ3MgbWFuYWdlci5cbiAgICovXG4gIHByb3RlY3RlZCBjcmVhdGVTZXR0aW5nc01hbmFnZXIoKTogRXh0cmFjdFBsdWdpblNldHRpbmdzTWFuYWdlcjxQbHVnaW5UeXBlcz4gfCBudWxsIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgcGx1Z2luIHNldHRpbmdzIHRhYi5cbiAgICpcbiAgICogQHJldHVybnMgVGhlIHNldHRpbmdzIHRhYiBvciBudWxsIGlmIG5vdCBhcHBsaWNhYmxlLlxuICAgKi9cbiAgcHJvdGVjdGVkIGNyZWF0ZVNldHRpbmdzVGFiKCk6IEV4dHJhY3RQbHVnaW5TZXR0aW5nc1RhYjxQbHVnaW5UeXBlcz4gfCBudWxsIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgdHJhbnNsYXRpb25zIG1hcC5cbiAgICpcbiAgICogQHJldHVybnMgVGhlIHRyYW5zbGF0aW9ucyBtYXAuXG4gICAqL1xuICBwcm90ZWN0ZWQgY3JlYXRlVHJhbnNsYXRpb25zTWFwKCk6IFRyYW5zbGF0aW9uc01hcDxQbHVnaW5UeXBlcz4ge1xuICAgIHJldHVybiBkZWZhdWx0VHJhbnNsYXRpb25zTWFwO1xuICB9XG5cbiAgLyoqXG4gICAqIENhbGxlZCB3aGVuIGFuIGFzeW5jIGVycm9yIG9jY3Vycy5cbiAgICpcbiAgICogQHBhcmFtIF9hc3luY0Vycm9yIC0gVGhlIGFzeW5jIGVycm9yLlxuICAgKi9cbiAgcHJvdGVjdGVkIGhhbmRsZUFzeW5jRXJyb3IoX2FzeW5jRXJyb3I6IHVua25vd24pOiB2b2lkIHtcbiAgICB0aGlzLnNob3dOb3RpY2UodCgoJCkgPT4gJC5vYnNpZGlhbkRldlV0aWxzLm5vdGljZXMudW5oYW5kbGVkRXJyb3IpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxsZWQgd2hlbiB0aGUgbGF5b3V0IGlzIHJlYWR5LlxuICAgKi9cbiAgcHJvdGVjdGVkIGFzeW5jIG9uTGF5b3V0UmVhZHkoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgbm9vcEFzeW5jKCk7XG4gIH1cblxuICAvKipcbiAgICogRXhlY3V0ZWQgd2hlbiB0aGUgcGx1Z2luIGlzIGxvYWRlZC5cbiAgICpcbiAgICogSWYgdGhpcyBtZXRob2QgZmFpbHMsIHRoZSBwbHVnaW4gd2lsbCBiZSBhdXRvbWF0aWNhbGx5IHVubG9hZGVkLlxuICAgKlxuICAgKiBAcmVtYXJrcyBJdCBpcyBpbXBvcnRhbnQgdG8gY2FsbCBgc3VwZXIub25sb2FkSW1wbCgpYCBpbiBvdmVycmlkZGVuIG1ldGhvZC5cbiAgICovXG4gIHByb3RlY3RlZCBhc3luYyBvbmxvYWRJbXBsKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGluaXRQbHVnaW5Db250ZXh0KHRoaXMuYXBwLCB0aGlzLm1hbmlmZXN0LmlkKTtcbiAgICB0aGlzLnJlZ2lzdGVyRG9tV2luZG93SGFuZGxlcigod2luKSA9PiB7XG4gICAgICBpbml0RGVidWdDb250cm9sbGVyKHdpbik7XG4gICAgfSk7XG4gICAgYXdhaXQgaW5pdEkxOE48UGx1Z2luVHlwZXM+KHRoaXMuY3JlYXRlVHJhbnNsYXRpb25zTWFwKCkpO1xuXG4gICAgdGhpcy5yZWdpc3RlcihyZWdpc3RlckFzeW5jRXJyb3JFdmVudEhhbmRsZXIodGhpcy5oYW5kbGVBc3luY0Vycm9yLmJpbmQodGhpcykpKTtcblxuICAgIHRoaXMuX3NldHRpbmdzTWFuYWdlciA9IHRoaXMuY3JlYXRlU2V0dGluZ3NNYW5hZ2VyKCk7XG4gICAgaWYgKHRoaXMuX3NldHRpbmdzTWFuYWdlcikge1xuICAgICAgcmVnaXN0ZXJBc3luY0V2ZW50KHRoaXMsIHRoaXMuX3NldHRpbmdzTWFuYWdlci5vbignbG9hZFNldHRpbmdzJywgdGhpcy5vbkxvYWRTZXR0aW5ncy5iaW5kKHRoaXMpKSk7XG4gICAgICByZWdpc3RlckFzeW5jRXZlbnQodGhpcywgdGhpcy5fc2V0dGluZ3NNYW5hZ2VyLm9uKCdzYXZlU2V0dGluZ3MnLCB0aGlzLm9uU2F2ZVNldHRpbmdzLmJpbmQodGhpcykpKTtcbiAgICB9XG5cbiAgICBhd2FpdCB0aGlzLl9zZXR0aW5nc01hbmFnZXI/LmxvYWRGcm9tRmlsZSh0cnVlKTtcbiAgICB0aGlzLl9zZXR0aW5nc1RhYiA9IHRoaXMuY3JlYXRlU2V0dGluZ3NUYWIoKTtcbiAgICBpZiAodGhpcy5fc2V0dGluZ3NUYWIpIHtcbiAgICAgIHRoaXMuYWRkU2V0dGluZ1RhYih0aGlzLl9zZXR0aW5nc1RhYik7XG4gICAgfVxuXG4gICAgY29uc3QgYWJvcnRDb250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpO1xuICAgIHRoaXMuX2Fib3J0U2lnbmFsID0gYWJvcnRDb250cm9sbGVyLnNpZ25hbDtcbiAgICB0aGlzLnJlZ2lzdGVyKCgpID0+IHtcbiAgICAgIGFib3J0Q29udHJvbGxlci5hYm9ydChuZXcgU2lsZW50RXJyb3IoYFBsdWdpbiAke3RoaXMubWFuaWZlc3QuaWR9IGhhZCBiZWVuIHVubG9hZGVkYCkpO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIENhbGxlZCB3aGVuIHRoZSBwbHVnaW4gc2V0dGluZ3MgYXJlIGxvYWRlZCBvciByZWxvYWRlZC5cbiAgICpcbiAgICogQHBhcmFtIF9sb2FkZWRTZXR0aW5ncyAtIFRoZSBsb2FkZWQgc2V0dGluZ3Mgd3JhcHBlci5cbiAgICogQHBhcmFtIF9pc0luaXRpYWxMb2FkIC0gV2hldGhlciB0aGUgc2V0dGluZ3MgYXJlIGJlaW5nIGxvYWRlZCBmb3IgdGhlIGZpcnN0IHRpbWUuXG4gICAqL1xuICBwcm90ZWN0ZWQgYXN5bmMgb25Mb2FkU2V0dGluZ3MoX2xvYWRlZFNldHRpbmdzOiBFeHRyYWN0UmVhZG9ubHlQbHVnaW5TZXR0aW5nc1dyYXBwZXI8UGx1Z2luVHlwZXM+LCBfaXNJbml0aWFsTG9hZDogYm9vbGVhbik6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IG5vb3BBc3luYygpO1xuICB9XG5cbiAgLyoqXG4gICAqIENhbGxlZCB3aGVuIHRoZSBwbHVnaW4gc2V0dGluZ3MgYXJlIHNhdmVkLlxuICAgKlxuICAgKiBAcGFyYW0gX25ld1NldHRpbmdzIC0gVGhlIG5ldyBzZXR0aW5ncy5cbiAgICogQHBhcmFtIF9vbGRTZXR0aW5ncyAtIFRoZSBvbGQgc2V0dGluZ3MuXG4gICAqIEBwYXJhbSBfY29udGV4dCAtIFRoZSBjb250ZXh0LlxuICAgKi9cbiAgcHJvdGVjdGVkIGFzeW5jIG9uU2F2ZVNldHRpbmdzKFxuICAgIF9uZXdTZXR0aW5nczogRXh0cmFjdFJlYWRvbmx5UGx1Z2luU2V0dGluZ3NXcmFwcGVyPFBsdWdpblR5cGVzPixcbiAgICBfb2xkU2V0dGluZ3M6IEV4dHJhY3RSZWFkb25seVBsdWdpblNldHRpbmdzV3JhcHBlcjxQbHVnaW5UeXBlcz4sXG4gICAgX2NvbnRleHQ6IHVua25vd25cbiAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgbm9vcEFzeW5jKCk7XG4gIH1cblxuICAvKipcbiAgICogQ2FsbGVkIHdoZW4gdGhlIHBsdWdpbiBpcyB1bmxvYWRlZC5cbiAgICovXG4gIHByb3RlY3RlZCBhc3luYyBvbnVubG9hZEltcGwoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgbm9vcEFzeW5jKCk7XG4gIH1cblxuICAvKipcbiAgICogRGlzcGxheXMgYSBub3RpY2UgbWVzc2FnZSB0byB0aGUgdXNlci5cbiAgICpcbiAgICogQHBhcmFtIG1lc3NhZ2UgLSBUaGUgbWVzc2FnZSB0byBkaXNwbGF5LlxuICAgKi9cbiAgcHJvdGVjdGVkIHNob3dOb3RpY2UobWVzc2FnZTogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKHRoaXMubm90aWNlKSB7XG4gICAgICB0aGlzLm5vdGljZS5oaWRlKCk7XG4gICAgfVxuXG4gICAgdGhpcy5ub3RpY2UgPSBuZXcgTm90aWNlKGAke3RoaXMubWFuaWZlc3QubmFtZX1cXG4ke21lc3NhZ2V9YCk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGFmdGVyTG9hZCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAodGhpcy5hYm9ydFNpZ25hbC5hYm9ydGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGF3YWl0IHRoaXMudHJpZ2dlckxpZmVjeWNsZUV2ZW50KCdsb2FkJyk7XG4gICAgdGhpcy5hcHAud29ya3NwYWNlLm9uTGF5b3V0UmVhZHkoY29udmVydEFzeW5jVG9TeW5jKHRoaXMub25MYXlvdXRSZWFkeUJhc2UuYmluZCh0aGlzKSkpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBvbkxheW91dFJlYWR5QmFzZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgdGhpcy5vbkxheW91dFJlYWR5KCk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGF3YWl0IHRoaXMudHJpZ2dlckxpZmVjeWNsZUV2ZW50KCdsYXlvdXRSZWFkeScpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgdHJpZ2dlckxpZmVjeWNsZUV2ZW50KG5hbWU6IExpZmVjeWNsZUV2ZW50TmFtZSk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRoaXMubGlmZWN5Y2xlRXZlbnROYW1lcy5hZGQobmFtZSk7XG4gICAgYXdhaXQgdGhpcy5ldmVudHMudHJpZ2dlckFzeW5jKG5hbWUpO1xuICB9XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQVlBLHNCQUdPO0FBV1AsbUJBSU87QUFDUCx5QkFBNEI7QUFDNUIsbUJBQTRCO0FBQzVCLG1CQUdPO0FBQ1Asc0JBQTBCO0FBQzFCLGtDQUFtQztBQUNuQyxrQkFHTztBQUNQLDZCQUF1QztBQUN2Qyx1QkFBaUM7QUFDakMsMkJBR087QUFTQSxNQUFlLG1CQUF3RCxnQkFBQUEsT0FBZTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBSTNFLFNBQVMsSUFBSSwrQkFBWTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBUXpDLElBQVcsY0FBMkI7QUFDcEMsUUFBSSxDQUFDLEtBQUssY0FBYztBQUN0QixZQUFN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
453
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL1BsdWdpbi9QbHVnaW5CYXNlLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBwYWNrYWdlRG9jdW1lbnRhdGlvblxuICpcbiAqIEJhc2UgY2xhc3MgZm9yIE9ic2lkaWFuIHBsdWdpbnMgcHJvdmlkaW5nIHV0aWxpdHkgbWV0aG9kcyBmb3Igc2V0dGluZ3MgbWFuYWdlbWVudCwgZXJyb3IgaGFuZGxpbmcsIGFuZCBub3RpZmljYXRpb25zLlxuICpcbiAqIFRoaXMgY2xhc3Mgc2ltcGxpZmllcyB0aGUgcHJvY2VzcyBvZiBtYW5hZ2luZyBwbHVnaW4gc2V0dGluZ3MsIGRpc3BsYXlpbmcgbm90aWZpY2F0aW9ucywgYW5kIGhhbmRsaW5nIGVycm9ycy5cbiAqIFN1YmNsYXNzZXMgc2hvdWxkIGltcGxlbWVudCBtZXRob2RzIHRvIGNyZWF0ZSBkZWZhdWx0IHNldHRpbmdzIGFuZCBzZXR0aW5ncyB0YWJzLCBhbmQgY29tcGxldGUgcGx1Z2luLXNwZWNpZmljXG4gKiBsb2FkaW5nIHRhc2tzLlxuICovXG5cbi8qIHY4IGlnbm9yZSBzdGFydCAtLSBEZWVwbHkgY291cGxlZCB0byBPYnNpZGlhbiBydW50aW1lOyByZXF1aXJlcyBydW5uaW5nIHZhdWx0IGZvciBtZWFuaW5nZnVsIHRlc3RpbmcuICovXG5cbmltcG9ydCB0eXBlIHsgUmVhZG9ubHlEZWVwIH0gZnJvbSAndHlwZS1mZXN0JztcblxuaW1wb3J0IHtcbiAgTm90aWNlLFxuICBQbHVnaW4gYXMgT2JzaWRpYW5QbHVnaW5cbn0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQgdHlwZSB7IFRyYW5zbGF0aW9uc01hcCB9IGZyb20gJy4uL2kxOG4vaTE4bi50cyc7XG5pbXBvcnQgdHlwZSB7XG4gIEV4dHJhY3RQbHVnaW5TZXR0aW5ncyxcbiAgRXh0cmFjdFBsdWdpblNldHRpbmdzTWFuYWdlcixcbiAgRXh0cmFjdFBsdWdpblNldHRpbmdzVGFiLFxuICBFeHRyYWN0UmVhZG9ubHlQbHVnaW5TZXR0aW5nc1dyYXBwZXIsXG4gIFBsdWdpblR5cGVzQmFzZVxufSBmcm9tICcuL1BsdWdpblR5cGVzQmFzZS50cyc7XG5cbmltcG9ydCB7XG4gIGNvbnZlcnRBc3luY1RvU3luYyxcbiAgaW52b2tlQXN5bmNTYWZlbHksXG4gIGludm9rZUFzeW5jU2FmZWx5QWZ0ZXJEZWxheVxufSBmcm9tICcuLi8uLi9Bc3luYy50cyc7XG5pbXBvcnQgeyBBc3luY0V2ZW50cyB9IGZyb20gJy4uLy4uL0FzeW5jRXZlbnRzLnRzJztcbmltcG9ydCB7IGdldERlYnVnZ2VyIH0gZnJvbSAnLi4vLi4vRGVidWcudHMnO1xuaW1wb3J0IHtcbiAgcmVnaXN0ZXJBc3luY0Vycm9yRXZlbnRIYW5kbGVyLFxuICBTaWxlbnRFcnJvclxufSBmcm9tICcuLi8uLi9FcnJvci50cyc7XG5pbXBvcnQgeyBub29wQXN5bmMgfSBmcm9tICcuLi8uLi9GdW5jdGlvbi50cyc7XG5pbXBvcnQgeyByZWdpc3RlckFzeW5jRXZlbnQgfSBmcm9tICcuLi9Db21wb25lbnRzL0FzeW5jRXZlbnRzQ29tcG9uZW50LnRzJztcbmltcG9ydCB7XG4gIGluaXRJMThOLFxuICB0XG59IGZyb20gJy4uL2kxOG4vaTE4bi50cyc7XG5pbXBvcnQgeyBkZWZhdWx0VHJhbnNsYXRpb25zTWFwIH0gZnJvbSAnLi4vaTE4bi9sb2NhbGVzL3RyYW5zbGF0aW9uc01hcC50cyc7XG5pbXBvcnQgeyBnZXRBbGxEb21XaW5kb3dzIH0gZnJvbSAnLi4vV29ya3NwYWNlLnRzJztcbmltcG9ydCB7XG4gIGluaXREZWJ1Z0NvbnRyb2xsZXIsXG4gIGluaXRQbHVnaW5Db250ZXh0XG59IGZyb20gJy4vUGx1Z2luQ29udGV4dC50cyc7XG5cbnR5cGUgTGlmZWN5Y2xlRXZlbnROYW1lID0gJ2xheW91dFJlYWR5JyB8ICdsb2FkJyB8ICd1bmxvYWQnO1xuXG4vKipcbiAqIEJhc2UgY2xhc3MgZm9yIGNyZWF0aW5nIE9ic2lkaWFuIHBsdWdpbnMgd2l0aCBidWlsdC1pbiBzdXBwb3J0IGZvciBzZXR0aW5ncyBtYW5hZ2VtZW50LCBlcnJvciBoYW5kbGluZywgYW5kIG5vdGlmaWNhdGlvbnMuXG4gKlxuICogQHR5cGVQYXJhbSBQbHVnaW5UeXBlcyAtIFBsdWdpbi1zcGVjaWZpYyB0eXBlcy5cbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFBsdWdpbkJhc2U8UGx1Z2luVHlwZXMgZXh0ZW5kcyBQbHVnaW5UeXBlc0Jhc2U+IGV4dGVuZHMgT2JzaWRpYW5QbHVnaW4ge1xuICAvKipcbiAgICogVGhlIGV2ZW50cyBvZiB0aGUgcGx1Z2luLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGV2ZW50cyA9IG5ldyBBc3luY0V2ZW50cygpO1xuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBBYm9ydFNpZ25hbCB1c2VkIGZvciBhYm9ydGluZyBsb25nLXJ1bm5pbmcgb3BlcmF0aW9ucy5cbiAgICpcbiAgICogQHJldHVybnMgVGhlIGFib3J0IHNpZ25hbC5cbiAgICogQHRocm93cyBJZiB0aGUgYWJvcnQgc2lnbmFsIGlzIG5vdCBkZWZpbmVkLlxuICAgKi9cbiAgcHVibGljIGdldCBhYm9ydFNpZ25hbCgpOiBBYm9ydFNpZ25hbCB7XG4gICAgaWYgKCF0aGlzLl9hYm9ydFNpZ25hbCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdBYm9ydCBzaWduYWwgbm90IGRlZmluZWQnKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX2Fib3J0U2lnbmFsO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIHJlYWRvbmx5IHBsdWdpbiBzZXR0aW5ncy5cbiAgICpcbiAgICogQHJldHVybnMgVGhlIHJlYWRvbmx5IHBsdWdpbiBzZXR0aW5ncy5cbiAgICovXG4gIHB1YmxpYyBnZXQgc2V0dGluZ3MoKTogUmVhZG9ubHlEZWVwPEV4dHJhY3RQbHVnaW5TZXR0aW5nczxQbHVnaW5UeXBlcz4+IHtcbiAgICByZXR1cm4gdGhpcy5zZXR0aW5nc01hbmFnZXIuc2V0dGluZ3NXcmFwcGVyLnNhZmVTZXR0aW5ncyBhcyBSZWFkb25seURlZXA8RXh0cmFjdFBsdWdpblNldHRpbmdzPFBsdWdpblR5cGVzPj47XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgcGx1Z2luIHNldHRpbmdzIG1hbmFnZXIuXG4gICAqXG4gICAqIEByZXR1cm5zIFRoZSBwbHVnaW4gc2V0dGluZ3MgbWFuYWdlci5cbiAgICovXG4gIHB1YmxpYyBnZXQgc2V0dGluZ3NNYW5hZ2VyKCk6IEV4dHJhY3RQbHVnaW5TZXR0aW5nc01hbmFnZXI8UGx1Z2luVHlwZXM+IHtcbiAgICBpZiAoIXRoaXMuX3NldHRpbmdzTWFuYWdlcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdTZXR0aW5ncyBtYW5hZ2VyIG5vdCBkZWZpbmVkJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX3NldHRpbmdzTWFuYWdlcjtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBwbHVnaW4gc2V0dGluZ3MgdGFiLlxuICAgKlxuICAgKiBAcmV0dXJucyBUaGUgcGx1Z2luIHNldHRpbmdzIHRhYi5cbiAgICovXG4gIHB1YmxpYyBnZXQgc2V0dGluZ3NUYWIoKTogRXh0cmFjdFBsdWdpblNldHRpbmdzVGFiPFBsdWdpblR5cGVzPiB7XG4gICAgaWYgKCF0aGlzLl9zZXR0aW5nc1RhYikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdTZXR0aW5ncyB0YWIgbm90IGRlZmluZWQnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fc2V0dGluZ3NUYWI7XG4gIH1cblxuICBwcml2YXRlIF9hYm9ydFNpZ25hbD86IEFib3J0U2lnbmFsO1xuICBwcml2YXRlIF9zZXR0aW5nc01hbmFnZXI6IEV4dHJhY3RQbHVnaW5TZXR0aW5nc01hbmFnZXI8UGx1Z2luVHlwZXM+IHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgX3NldHRpbmdzVGFiOiBFeHRyYWN0UGx1Z2luU2V0dGluZ3NUYWI8UGx1Z2luVHlwZXM+IHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgcmVhZG9ubHkgbGlmZWN5Y2xlRXZlbnROYW1lcyA9IG5ldyBTZXQ8TGlmZWN5Y2xlRXZlbnROYW1lPigpO1xuICBwcml2YXRlIG5vdGljZT86IE5vdGljZTtcblxuICAvKipcbiAgICogTG9ncyBhIG1lc3NhZ2UgdG8gdGhlIGNvbnNvbGUuXG4gICAqXG4gICAqIFVzZSBpbnN0ZWFkIG9mIGBjb25zb2xlLmRlYnVnKClgLlxuICAgKlxuICAgKiBUaG9zZSBtZXNzYWdlcyBhcmUgbm90IHNob3duIGJ5IGRlZmF1bHQsIGJ1dCB0aGV5IGNhbiBiZSBzaG93biBieSBlbmFibGluZyBgeW91ci1wbHVnaW4taWRgIGRlYnVnZ2VyIG5hbWVzcGFjZS5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL21uYW91bW92L29ic2lkaWFuLWRldi11dGlscy9ibG9iL21haW4vZG9jcy9kZWJ1Z2dpbmcubWR9IGZvciBtb3JlIGluZm9ybWF0aW9uLlxuICAgKlxuICAgKiBAcGFyYW0gbWVzc2FnZSAtIFRoZSBtZXNzYWdlIHRvIGxvZy5cbiAgICogQHBhcmFtIGFyZ3MgLSBUaGUgYXJndW1lbnRzIHRvIGxvZy5cbiAgICovXG4gIHB1YmxpYyBjb25zb2xlRGVidWcobWVzc2FnZTogc3RyaW5nLCAuLi5hcmdzOiB1bmtub3duW10pOiB2b2lkIHtcbiAgICAvLyBTa2lwIHRoZSBgY29uc29sZURlYnVnKClgIGNhbGwgaXRzZWxmXG4gICAgY29uc3QgRlJBTUVTX1RPX1NLSVAgPSAxO1xuICAgIGNvbnN0IHBsdWdpbkRlYnVnZ2VyID0gZ2V0RGVidWdnZXIodGhpcy5tYW5pZmVzdC5pZCwgRlJBTUVTX1RPX1NLSVApO1xuICAgIHBsdWdpbkRlYnVnZ2VyKG1lc3NhZ2UsIC4uLmFyZ3MpO1xuICB9XG5cbiAgLyoqXG4gICAqIENhbGxlZCB3aGVuIHRoZSBleHRlcm5hbCBzZXR0aW5ncyBjaGFuZ2UuXG4gICAqXG4gICAqIFVzdWFsbHksIHlvdSBkb24ndCBuZWVkIHRvIG92ZXJyaWRlIHRoaXMgbWV0aG9kLiBDb25zaWRlciB1c2luZyB7QGxpbmsgb25Mb2FkU2V0dGluZ3N9IGluc3RlYWQuXG4gICAqXG4gICAqIElmIHlvdSBzdGlsbCBuZWVkIHRvIG92ZXJyaWRlIHRoaXMgbWV0aG9kLCBtYWtlIHN1cmUgdG8gY2FsbCBgYXdhaXQgc3VwZXIub25FeHRlcm5hbFNldHRpbmdzQ2hhbmdlKClgIGZpcnN0LlxuICAgKi9cbiAgcHVibGljIG92ZXJyaWRlIGFzeW5jIG9uRXh0ZXJuYWxTZXR0aW5nc0NoYW5nZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCBzdXBlci5vbkV4dGVybmFsU2V0dGluZ3NDaGFuZ2U/LigpO1xuICAgIGF3YWl0IHRoaXMuX3NldHRpbmdzTWFuYWdlcj8ubG9hZEZyb21GaWxlKGZhbHNlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxsZWQgd2hlbiB0aGUgcGx1Z2luIGlzIGxvYWRlZFxuICAgKlxuICAgKiBVc3VhbGx5LCB5b3UgZG9uJ3QgbmVlZCB0byBvdmVycmlkZSB0aGlzIG1ldGhvZC4gQ29uc2lkZXIgdXNpbmcge0BsaW5rIG9ubG9hZEltcGx9IGluc3RlYWQuXG4gICAqXG4gICAqIElmIHlvdSBzdGlsbCBuZWVkIHRvIG92ZXJyaWRlIHRoaXMgbWV0aG9kLCBtYWtlIHN1cmUgdG8gY2FsbCBgYXdhaXQgc3VwZXIub25sb2FkKClgIGZpcnN0LlxuICAgKi9cbiAgcHVibGljIG92ZXJyaWRlIGFzeW5jIG9ubG9hZCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCBzdXBlci5vbmxvYWQoKTtcbiAgICBhd2FpdCB0aGlzLm9ubG9hZEltcGwoKTtcbiAgICBpbnZva2VBc3luY1NhZmVseUFmdGVyRGVsYXkodGhpcy5hZnRlckxvYWQuYmluZCh0aGlzKSk7XG4gIH1cblxuICAvKipcbiAgICogQ2FsbGVkIHdoZW4gdGhlIHBsdWdpbiBpcyB1bmxvYWRlZC5cbiAgICpcbiAgICogVXN1YWxseSwgeW91IGRvbid0IG5lZWQgdG8gb3ZlcnJpZGUgdGhpcyBtZXRob2QuIENvbnNpZGVyIHVzaW5nIHtAbGluayBvbnVubG9hZEltcGx9IGluc3RlYWQuXG4gICAqXG4gICAqIElmIHlvdSBzdGlsbCBuZWVkIHRvIG92ZXJyaWRlIHRoaXMgbWV0aG9kLCBtYWtlIHN1cmUgdG8gY2FsbCBgc3VwZXIub251bmxvYWQoKWAgZmlyc3QuXG4gICAqL1xuICBwdWJsaWMgb3ZlcnJpZGUgb251bmxvYWQoKTogdm9pZCB7XG4gICAgc3VwZXIub251bmxvYWQoKTtcbiAgICBpbnZva2VBc3luY1NhZmVseShhc3luYyAoKSA9PiB7XG4gICAgICB0cnkge1xuICAgICAgICBhd2FpdCB0aGlzLm9udW5sb2FkSW1wbCgpO1xuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgYXdhaXQgdGhpcy50cmlnZ2VyTGlmZWN5Y2xlRXZlbnQoJ3VubG9hZCcpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlZ2lzdGVycyBhIERPTSB3aW5kb3cgaGFuZGxlci5cbiAgICpcbiAgICogQHBhcmFtIGRvbVdpbmRvd0hhbmRsZXIgLSBUaGUgRE9NIHdpbmRvdyBoYW5kbGVyLlxuICAgKi9cbiAgcHVibGljIHJlZ2lzdGVyRG9tV2luZG93SGFuZGxlcihkb21XaW5kb3dIYW5kbGVyOiAod2luOiBXaW5kb3cpID0+IHZvaWQpOiB2b2lkIHtcbiAgICBjb25zdCBtYWluV2luZG93ID0gd2luZG93O1xuICAgIGRvbVdpbmRvd0hhbmRsZXIobWFpbldpbmRvdyk7XG5cbiAgICB0aGlzLmFwcC53b3Jrc3BhY2Uub25MYXlvdXRSZWFkeSgoKSA9PiB7XG4gICAgICBmb3IgKGNvbnN0IHdpbiBvZiBnZXRBbGxEb21XaW5kb3dzKHRoaXMuYXBwKSkge1xuICAgICAgICBpZiAod2luID09PSBtYWluV2luZG93KSB7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICBkb21XaW5kb3dIYW5kbGVyKHdpbik7XG4gICAgICB9XG5cbiAgICAgIHRoaXMucmVnaXN0ZXJFdmVudCh0aGlzLmFwcC53b3Jrc3BhY2Uub24oJ3dpbmRvdy1vcGVuJywgKHdvcmtzcGFjZVdpbmRvdykgPT4ge1xuICAgICAgICBkb21XaW5kb3dIYW5kbGVyKHdvcmtzcGFjZVdpbmRvdy53aW4pO1xuICAgICAgfSkpO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlZ2lzdGVycyBhIGNhbGxiYWNrIHRvIGJlIGV4ZWN1dGVkIHdoZW4gYSBsaWZlY3ljbGUgZXZlbnQgaXMgdHJpZ2dlcmVkLlxuICAgKlxuICAgKiBAcGFyYW0gbmFtZSAtIFRoZSBuYW1lIG9mIHRoZSBldmVudC5cbiAgICogQHBhcmFtIGNhbGxiYWNrIC0gVGhlIGNhbGxiYWNrIHRvIGV4ZWN1dGUuXG4gICAqL1xuICBwdWJsaWMgcmVnaXN0ZXJGb3JMaWZlY3ljbGVFdmVudChuYW1lOiBMaWZlY3ljbGVFdmVudE5hbWUsIGNhbGxiYWNrOiAoKSA9PiBQcm9taXNlPHZvaWQ+KTogdm9pZCB7XG4gICAgaW52b2tlQXN5bmNTYWZlbHkoYXN5bmMgKCkgPT4ge1xuICAgICAgYXdhaXQgdGhpcy53YWl0Rm9yTGlmZWN5Y2xlRXZlbnQobmFtZSk7XG4gICAgICBhd2FpdCBjYWxsYmFjaygpO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlZ2lzdGVycyBhIERPTSBldmVudCBmb3IgYWxsIHBvcHVwIHdpbmRvdyBkb2N1bWVudHMuXG4gICAqXG4gICAqIEB0eXBlUGFyYW0gRG9jdW1lbnRFdmVudFR5cGUgLSBUaGUgdHlwZSBvZiB0aGUgZXZlbnQuXG4gICAqIEBwYXJhbSB0eXBlIC0gVGhlIHR5cGUgb2YgdGhlIGV2ZW50LlxuICAgKiBAcGFyYW0gY2FsbGJhY2sgLSBUaGUgY2FsbGJhY2sgdG8gZXhlY3V0ZS5cbiAgICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgb3B0aW9ucyBmb3IgdGhlIGV2ZW50LlxuICAgKi9cbiAgcHVibGljIHJlZ2lzdGVyUG9wdXBEb2N1bWVudERvbUV2ZW50PERvY3VtZW50RXZlbnRUeXBlIGV4dGVuZHMga2V5b2YgRG9jdW1lbnRFdmVudE1hcD4oXG4gICAgdHlwZTogRG9jdW1lbnRFdmVudFR5cGUsXG4gICAgY2FsbGJhY2s6ICh0aGlzOiBIVE1MRWxlbWVudCwgZXZ0OiBEb2N1bWVudEV2ZW50TWFwW0RvY3VtZW50RXZlbnRUeXBlXSkgPT4gdW5rbm93bixcbiAgICBvcHRpb25zPzogQWRkRXZlbnRMaXN0ZW5lck9wdGlvbnMgfCBib29sZWFuXG4gICk6IHZvaWQge1xuICAgIHRoaXMucmVnaXN0ZXJEb21XaW5kb3dIYW5kbGVyKCh3aW4pID0+IHtcbiAgICAgIHRoaXMucmVnaXN0ZXJEb21FdmVudCh3aW4uZG9jdW1lbnQsIHR5cGUsIGNhbGxiYWNrLCBvcHRpb25zKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWdpc3RlcnMgYSBET00gZXZlbnQgZm9yIGFsbCBwb3B1cCB3aW5kb3dzLlxuICAgKlxuICAgKiBAdHlwZVBhcmFtIFdpbmRvd0V2ZW50VHlwZSAtIFRoZSB0eXBlIG9mIHRoZSBldmVudC5cbiAgICogQHBhcmFtIHR5cGUgLSBUaGUgdHlwZSBvZiB0aGUgZXZlbnQuXG4gICAqIEBwYXJhbSBjYWxsYmFjayAtIFRoZSBjYWxsYmFjayB0byBleGVjdXRlLlxuICAgKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBvcHRpb25zIGZvciB0aGUgZXZlbnQuXG4gICAqL1xuICBwdWJsaWMgcmVnaXN0ZXJQb3B1cFdpbmRvd0RvbUV2ZW50PFdpbmRvd0V2ZW50VHlwZSBleHRlbmRzIGtleW9mIFdpbmRvd0V2ZW50TWFwPihcbiAgICB0eXBlOiBXaW5kb3dFdmVudFR5cGUsXG4gICAgY2FsbGJhY2s6ICh0aGlzOiBIVE1MRWxlbWVudCwgZXZ0OiBXaW5kb3dFdmVudE1hcFtXaW5kb3dFdmVudFR5cGVdKSA9PiB1bmtub3duLFxuICAgIG9wdGlvbnM/OiBBZGRFdmVudExpc3RlbmVyT3B0aW9ucyB8IGJvb2xlYW5cbiAgKTogdm9pZCB7XG4gICAgdGhpcy5yZWdpc3RlckRvbVdpbmRvd0hhbmRsZXIoKHdpbikgPT4ge1xuICAgICAgdGhpcy5yZWdpc3RlckRvbUV2ZW50KHdpbiwgdHlwZSwgY2FsbGJhY2ssIG9wdGlvbnMpO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFdhaXRzIGZvciBhIGxpZmVjeWNsZSBldmVudCB0byBiZSB0cmlnZ2VyZWQuXG4gICAqXG4gICAqIElmIHlvdSBgYXdhaXRgIHRoaXMgbWV0aG9kIGR1cmluZyBsaWZlY3ljbGUgZXZlbnQsIGl0IG1pZ2h0IGNhdXNlIGEgZGVhZGxvY2suXG4gICAqXG4gICAqIENvbnNpZGVyIHdyYXBwaW5nIHRoaXMgY2FsbCB3aXRoIHtAbGluayBpbnZva2VBc3luY1NhZmVseX0uXG4gICAqXG4gICAqIEBwYXJhbSBuYW1lIC0gVGhlIG5hbWUgb2YgdGhlIGV2ZW50LlxuICAgKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIGV2ZW50IGlzIHRyaWdnZXJlZC5cbiAgICovXG4gIHB1YmxpYyBhc3luYyB3YWl0Rm9yTGlmZWN5Y2xlRXZlbnQobmFtZTogTGlmZWN5Y2xlRXZlbnROYW1lKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKHRoaXMubGlmZWN5Y2xlRXZlbnROYW1lcy5oYXMobmFtZSkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBhd2FpdCBuZXcgUHJvbWlzZTx2b2lkPigocmVzb2x2ZSkgPT4ge1xuICAgICAgdGhpcy5ldmVudHMub25jZShuYW1lLCAoKSA9PiB7XG4gICAgICAgIHJlc29sdmUoKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgdGhlIHBsdWdpbiBzZXR0aW5ncyBtYW5hZ2VyLiBUaGlzIG1ldGhvZCBtdXN0IGJlIGltcGxlbWVudGVkIGJ5IHN1YmNsYXNzZXMuXG4gICAqXG4gICAqIEByZXR1cm5zIFRoZSBwbHVnaW4gc2V0dGluZ3MgbWFuYWdlci5cbiAgICovXG4gIHByb3RlY3RlZCBjcmVhdGVTZXR0aW5nc01hbmFnZXIoKTogRXh0cmFjdFBsdWdpblNldHRpbmdzTWFuYWdlcjxQbHVnaW5UeXBlcz4gfCBudWxsIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgcGx1Z2luIHNldHRpbmdzIHRhYi5cbiAgICpcbiAgICogQHJldHVybnMgVGhlIHNldHRpbmdzIHRhYiBvciBudWxsIGlmIG5vdCBhcHBsaWNhYmxlLlxuICAgKi9cbiAgcHJvdGVjdGVkIGNyZWF0ZVNldHRpbmdzVGFiKCk6IEV4dHJhY3RQbHVnaW5TZXR0aW5nc1RhYjxQbHVnaW5UeXBlcz4gfCBudWxsIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgdHJhbnNsYXRpb25zIG1hcC5cbiAgICpcbiAgICogQHJldHVybnMgVGhlIHRyYW5zbGF0aW9ucyBtYXAuXG4gICAqL1xuICBwcm90ZWN0ZWQgY3JlYXRlVHJhbnNsYXRpb25zTWFwKCk6IFRyYW5zbGF0aW9uc01hcDxQbHVnaW5UeXBlcz4ge1xuICAgIHJldHVybiBkZWZhdWx0VHJhbnNsYXRpb25zTWFwO1xuICB9XG5cbiAgLyoqXG4gICAqIENhbGxlZCB3aGVuIGFuIGFzeW5jIGVycm9yIG9jY3Vycy5cbiAgICpcbiAgICogQHBhcmFtIF9hc3luY0Vycm9yIC0gVGhlIGFzeW5jIGVycm9yLlxuICAgKi9cbiAgcHJvdGVjdGVkIGhhbmRsZUFzeW5jRXJyb3IoX2FzeW5jRXJyb3I6IHVua25vd24pOiB2b2lkIHtcbiAgICB0aGlzLnNob3dOb3RpY2UodCgoJCkgPT4gJC5vYnNpZGlhbkRldlV0aWxzLm5vdGljZXMudW5oYW5kbGVkRXJyb3IpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxsZWQgd2hlbiB0aGUgbGF5b3V0IGlzIHJlYWR5LlxuICAgKi9cbiAgcHJvdGVjdGVkIGFzeW5jIG9uTGF5b3V0UmVhZHkoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgbm9vcEFzeW5jKCk7XG4gIH1cblxuICAvKipcbiAgICogRXhlY3V0ZWQgd2hlbiB0aGUgcGx1Z2luIGlzIGxvYWRlZC5cbiAgICpcbiAgICogSWYgdGhpcyBtZXRob2QgZmFpbHMsIHRoZSBwbHVnaW4gd2lsbCBiZSBhdXRvbWF0aWNhbGx5IHVubG9hZGVkLlxuICAgKlxuICAgKiBAcmVtYXJrcyBJdCBpcyBpbXBvcnRhbnQgdG8gY2FsbCBgc3VwZXIub25sb2FkSW1wbCgpYCBpbiBvdmVycmlkZGVuIG1ldGhvZC5cbiAgICovXG4gIHByb3RlY3RlZCBhc3luYyBvbmxvYWRJbXBsKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGluaXRQbHVnaW5Db250ZXh0KHRoaXMuYXBwLCB0aGlzLm1hbmlmZXN0LmlkKTtcbiAgICB0aGlzLnJlZ2lzdGVyRG9tV2luZG93SGFuZGxlcigod2luKSA9PiB7XG4gICAgICBpbml0RGVidWdDb250cm9sbGVyKHdpbik7XG4gICAgfSk7XG4gICAgYXdhaXQgaW5pdEkxOE48UGx1Z2luVHlwZXM+KHRoaXMuY3JlYXRlVHJhbnNsYXRpb25zTWFwKCkpO1xuXG4gICAgdGhpcy5yZWdpc3RlcihyZWdpc3RlckFzeW5jRXJyb3JFdmVudEhhbmRsZXIodGhpcy5oYW5kbGVBc3luY0Vycm9yLmJpbmQodGhpcykpKTtcblxuICAgIHRoaXMuX3NldHRpbmdzTWFuYWdlciA9IHRoaXMuY3JlYXRlU2V0dGluZ3NNYW5hZ2VyKCk7XG4gICAgaWYgKHRoaXMuX3NldHRpbmdzTWFuYWdlcikge1xuICAgICAgcmVnaXN0ZXJBc3luY0V2ZW50KHRoaXMsIHRoaXMuX3NldHRpbmdzTWFuYWdlci5vbignbG9hZFNldHRpbmdzJywgdGhpcy5vbkxvYWRTZXR0aW5ncy5iaW5kKHRoaXMpKSk7XG4gICAgICByZWdpc3RlckFzeW5jRXZlbnQodGhpcywgdGhpcy5fc2V0dGluZ3NNYW5hZ2VyLm9uKCdzYXZlU2V0dGluZ3MnLCB0aGlzLm9uU2F2ZVNldHRpbmdzLmJpbmQodGhpcykpKTtcbiAgICB9XG5cbiAgICBhd2FpdCB0aGlzLl9zZXR0aW5nc01hbmFnZXI/LmxvYWRGcm9tRmlsZSh0cnVlKTtcbiAgICB0aGlzLl9zZXR0aW5nc1RhYiA9IHRoaXMuY3JlYXRlU2V0dGluZ3NUYWIoKTtcbiAgICBpZiAodGhpcy5fc2V0dGluZ3NUYWIpIHtcbiAgICAgIHRoaXMuYWRkU2V0dGluZ1RhYih0aGlzLl9zZXR0aW5nc1RhYik7XG4gICAgfVxuXG4gICAgY29uc3QgYWJvcnRDb250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpO1xuICAgIHRoaXMuX2Fib3J0U2lnbmFsID0gYWJvcnRDb250cm9sbGVyLnNpZ25hbDtcbiAgICB0aGlzLnJlZ2lzdGVyKCgpID0+IHtcbiAgICAgIGFib3J0Q29udHJvbGxlci5hYm9ydChuZXcgU2lsZW50RXJyb3IoYFBsdWdpbiAke3RoaXMubWFuaWZlc3QuaWR9IGhhZCBiZWVuIHVubG9hZGVkYCkpO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIENhbGxlZCB3aGVuIHRoZSBwbHVnaW4gc2V0dGluZ3MgYXJlIGxvYWRlZCBvciByZWxvYWRlZC5cbiAgICpcbiAgICogQHBhcmFtIF9sb2FkZWRTZXR0aW5ncyAtIFRoZSBsb2FkZWQgc2V0dGluZ3Mgd3JhcHBlci5cbiAgICogQHBhcmFtIF9pc0luaXRpYWxMb2FkIC0gV2hldGhlciB0aGUgc2V0dGluZ3MgYXJlIGJlaW5nIGxvYWRlZCBmb3IgdGhlIGZpcnN0IHRpbWUuXG4gICAqL1xuICBwcm90ZWN0ZWQgYXN5bmMgb25Mb2FkU2V0dGluZ3MoX2xvYWRlZFNldHRpbmdzOiBFeHRyYWN0UmVhZG9ubHlQbHVnaW5TZXR0aW5nc1dyYXBwZXI8UGx1Z2luVHlwZXM+LCBfaXNJbml0aWFsTG9hZDogYm9vbGVhbik6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IG5vb3BBc3luYygpO1xuICB9XG5cbiAgLyoqXG4gICAqIENhbGxlZCB3aGVuIHRoZSBwbHVnaW4gc2V0dGluZ3MgYXJlIHNhdmVkLlxuICAgKlxuICAgKiBAcGFyYW0gX25ld1NldHRpbmdzIC0gVGhlIG5ldyBzZXR0aW5ncy5cbiAgICogQHBhcmFtIF9vbGRTZXR0aW5ncyAtIFRoZSBvbGQgc2V0dGluZ3MuXG4gICAqIEBwYXJhbSBfY29udGV4dCAtIFRoZSBjb250ZXh0LlxuICAgKi9cbiAgcHJvdGVjdGVkIGFzeW5jIG9uU2F2ZVNldHRpbmdzKFxuICAgIF9uZXdTZXR0aW5nczogRXh0cmFjdFJlYWRvbmx5UGx1Z2luU2V0dGluZ3NXcmFwcGVyPFBsdWdpblR5cGVzPixcbiAgICBfb2xkU2V0dGluZ3M6IEV4dHJhY3RSZWFkb25seVBsdWdpblNldHRpbmdzV3JhcHBlcjxQbHVnaW5UeXBlcz4sXG4gICAgX2NvbnRleHQ6IHVua25vd25cbiAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgbm9vcEFzeW5jKCk7XG4gIH1cblxuICAvKipcbiAgICogQ2FsbGVkIHdoZW4gdGhlIHBsdWdpbiBpcyB1bmxvYWRlZC5cbiAgICovXG4gIHByb3RlY3RlZCBhc3luYyBvbnVubG9hZEltcGwoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgbm9vcEFzeW5jKCk7XG4gIH1cblxuICAvKipcbiAgICogRGlzcGxheXMgYSBub3RpY2UgbWVzc2FnZSB0byB0aGUgdXNlci5cbiAgICpcbiAgICogQHBhcmFtIG1lc3NhZ2UgLSBUaGUgbWVzc2FnZSB0byBkaXNwbGF5LlxuICAgKi9cbiAgcHJvdGVjdGVkIHNob3dOb3RpY2UobWVzc2FnZTogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKHRoaXMubm90aWNlKSB7XG4gICAgICB0aGlzLm5vdGljZS5oaWRlKCk7XG4gICAgfVxuXG4gICAgdGhpcy5ub3RpY2UgPSBuZXcgTm90aWNlKGAke3RoaXMubWFuaWZlc3QubmFtZX1cXG4ke21lc3NhZ2V9YCk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGFmdGVyTG9hZCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAodGhpcy5hYm9ydFNpZ25hbC5hYm9ydGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGF3YWl0IHRoaXMudHJpZ2dlckxpZmVjeWNsZUV2ZW50KCdsb2FkJyk7XG4gICAgdGhpcy5hcHAud29ya3NwYWNlLm9uTGF5b3V0UmVhZHkoY29udmVydEFzeW5jVG9TeW5jKHRoaXMub25MYXlvdXRSZWFkeUJhc2UuYmluZCh0aGlzKSkpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBvbkxheW91dFJlYWR5QmFzZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgdGhpcy5vbkxheW91dFJlYWR5KCk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGF3YWl0IHRoaXMudHJpZ2dlckxpZmVjeWNsZUV2ZW50KCdsYXlvdXRSZWFkeScpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgdHJpZ2dlckxpZmVjeWNsZUV2ZW50KG5hbWU6IExpZmVjeWNsZUV2ZW50TmFtZSk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRoaXMubGlmZWN5Y2xlRXZlbnROYW1lcy5hZGQobmFtZSk7XG4gICAgYXdhaXQgdGhpcy5ldmVudHMudHJpZ2dlckFzeW5jKG5hbWUpO1xuICB9XG59XG4vKiB2OCBpZ25vcmUgc3RvcCAqL1xuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFjQSxzQkFHTztBQVdQLG1CQUlPO0FBQ1AseUJBQTRCO0FBQzVCLG1CQUE0QjtBQUM1QixtQkFHTztBQUNQLHNCQUEwQjtBQUMxQixrQ0FBbUM7QUFDbkMsa0JBR087QUFDUCw2QkFBdUM7QUFDdkMsdUJBQWlDO0FBQ2pDLDJCQUdPO0FBU0EsTUFBZSxtQkFBd0QsZ0JBQUFBLE9B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
@@ -480,4 +480,4 @@ class PluginSettingsManagerBase extends import_AsyncEvents.AsyncEvents {
480
480
  0 && (module.exports = {
481
481
  PluginSettingsManagerBase
482
482
  });
483
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL1BsdWdpbi9QbHVnaW5TZXR0aW5nc01hbmFnZXJCYXNlLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBwYWNrYWdlRG9jdW1lbnRhdGlvblxuICpcbiAqIFBsdWdpbiBzZXR0aW5ncyBtYW5hZ2VyIGJhc2UgY2xhc3MuXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBBcHAgfSBmcm9tICdvYnNpZGlhbic7XG5pbXBvcnQgdHlwZSB7XG4gIFByb21pc2FibGUsXG4gIFJlYWRvbmx5RGVlcFxufSBmcm9tICd0eXBlLWZlc3QnO1xuXG5pbXBvcnQgdHlwZSB7IEFzeW5jRXZlbnRSZWYgfSBmcm9tICcuLi8uLi9Bc3luY0V2ZW50cy50cyc7XG5pbXBvcnQgdHlwZSB7IEdlbmVyaWNPYmplY3QgfSBmcm9tICcuLi8uLi9PYmplY3RVdGlscy50cyc7XG5pbXBvcnQgdHlwZSB7IFRyYW5zZm9ybWVyIH0gZnJvbSAnLi4vLi4vVHJhbnNmb3JtZXJzL1RyYW5zZm9ybWVyLnRzJztcbmltcG9ydCB0eXBlIHtcbiAgTWF5YmVSZXR1cm4sXG4gIFN0cmluZ0tleXNcbn0gZnJvbSAnLi4vLi4vVHlwZS50cyc7XG5pbXBvcnQgdHlwZSB7IFBsdWdpblNldHRpbmdzV3JhcHBlciB9IGZyb20gJy4vUGx1Z2luU2V0dGluZ3NXcmFwcGVyLnRzJztcbmltcG9ydCB0eXBlIHtcbiAgRXh0cmFjdFBsdWdpbixcbiAgRXh0cmFjdFBsdWdpblNldHRpbmdzLFxuICBFeHRyYWN0UGx1Z2luU2V0dGluZ3NQcm9wZXJ0eU5hbWVzLFxuICBFeHRyYWN0UGx1Z2luU2V0dGluZ3NQcm9wZXJ0eVZhbHVlcyxcbiAgRXh0cmFjdFBsdWdpblNldHRpbmdzV3JhcHBlcixcbiAgRXh0cmFjdFJlYWRvbmx5UGx1Z2luU2V0dGluZ3NXcmFwcGVyLFxuICBQbHVnaW5UeXBlc0Jhc2Vcbn0gZnJvbSAnLi9QbHVnaW5UeXBlc0Jhc2UudHMnO1xuXG5pbXBvcnQgeyBBc3luY0V2ZW50cyB9IGZyb20gJy4uLy4uL0FzeW5jRXZlbnRzLnRzJztcbmltcG9ydCB7IGdldExpYkRlYnVnZ2VyIH0gZnJvbSAnLi4vLi4vRGVidWcudHMnO1xuaW1wb3J0IHtcbiAgbm9vcCxcbiAgbm9vcEFzeW5jXG59IGZyb20gJy4uLy4uL0Z1bmN0aW9uLnRzJztcbmltcG9ydCB7XG4gIGRlZXBFcXVhbCxcbiAgZ2V0QWxsS2V5c1xufSBmcm9tICcuLi8uLi9PYmplY3RVdGlscy50cyc7XG5pbXBvcnQgeyBEYXRlVHJhbnNmb3JtZXIgfSBmcm9tICcuLi8uLi9UcmFuc2Zvcm1lcnMvRGF0ZVRyYW5zZm9ybWVyLnRzJztcbmltcG9ydCB7IER1cmF0aW9uVHJhbnNmb3JtZXIgfSBmcm9tICcuLi8uLi9UcmFuc2Zvcm1lcnMvRHVyYXRpb25UcmFuc2Zvcm1lci50cyc7XG5pbXBvcnQgeyBHcm91cFRyYW5zZm9ybWVyIH0gZnJvbSAnLi4vLi4vVHJhbnNmb3JtZXJzL0dyb3VwVHJhbnNmb3JtZXIudHMnO1xuaW1wb3J0IHsgTWFwVHJhbnNmb3JtZXIgfSBmcm9tICcuLi8uLi9UcmFuc2Zvcm1lcnMvTWFwVHJhbnNmb3JtZXIudHMnO1xuaW1wb3J0IHsgU2V0VHJhbnNmb3JtZXIgfSBmcm9tICcuLi8uLi9UcmFuc2Zvcm1lcnMvU2V0VHJhbnNmb3JtZXIudHMnO1xuaW1wb3J0IHsgU2tpcFByaXZhdGVQcm9wZXJ0eVRyYW5zZm9ybWVyIH0gZnJvbSAnLi4vLi4vVHJhbnNmb3JtZXJzL1NraXBQcml2YXRlUHJvcGVydHlUcmFuc2Zvcm1lci50cyc7XG5pbXBvcnQgeyBUd29XYXlNYXBUcmFuc2Zvcm1lciB9IGZyb20gJy4uLy4uL1RyYW5zZm9ybWVycy9Ud29XYXlNYXBUcmFuc2Zvcm1lci50cyc7XG5cbmNvbnN0IGRlZmF1bHRUcmFuc2Zvcm1lciA9IG5ldyBHcm91cFRyYW5zZm9ybWVyKFtcbiAgbmV3IFNraXBQcml2YXRlUHJvcGVydHlUcmFuc2Zvcm1lcigpLFxuICBuZXcgRGF0ZVRyYW5zZm9ybWVyKCksXG4gIG5ldyBEdXJhdGlvblRyYW5zZm9ybWVyKCksXG4gIG5ldyBNYXBUcmFuc2Zvcm1lcigpLFxuICBuZXcgU2V0VHJhbnNmb3JtZXIoKSxcbiAgbmV3IFR3b1dheU1hcFRyYW5zZm9ybWVyKClcbl0pO1xuXG50eXBlIFZhbGlkYXRpb25SZXN1bHQ8UGx1Z2luU2V0dGluZ3MgZXh0ZW5kcyBvYmplY3Q+ID0gUGFydGlhbDxSZWNvcmQ8U3RyaW5nS2V5czxQbHVnaW5TZXR0aW5ncz4sIHN0cmluZz4+O1xuXG50eXBlIFZhbGlkYXRvcjxQbHVnaW5TZXR0aW5ncyBleHRlbmRzIG9iamVjdCwgUHJvcGVydHlOYW1lIGV4dGVuZHMgU3RyaW5nS2V5czxQbHVnaW5TZXR0aW5ncz4gPSBTdHJpbmdLZXlzPFBsdWdpblNldHRpbmdzPj4gPSAoXG4gIHZhbHVlOiBQbHVnaW5TZXR0aW5nc1tQcm9wZXJ0eU5hbWVdLFxuICBzZXR0aW5nczogUGx1Z2luU2V0dGluZ3NcbikgPT4gUHJvbWlzYWJsZTxNYXliZVJldHVybjxzdHJpbmc+PjtcblxuLyoqXG4gKiBCYXNlIGNsYXNzIGZvciBtYW5hZ2luZyBwbHVnaW4gc2V0dGluZ3MuXG4gKlxuICogQHR5cGVQYXJhbSBQbHVnaW5UeXBlcyAtIFBsdWdpbi1zcGVjaWZpYyB0eXBlcy5cbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFBsdWdpblNldHRpbmdzTWFuYWdlckJhc2U8UGx1Z2luVHlwZXMgZXh0ZW5kcyBQbHVnaW5UeXBlc0Jhc2U+IGV4dGVuZHMgQXN5bmNFdmVudHMge1xuICAvKipcbiAgICogR2V0cyB0aGUgYXBwLlxuICAgKlxuICAgKiBAcmV0dXJucyBUaGUgYXBwLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGFwcDogQXBwO1xuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSByZWFkb25seSBkZWZhdWx0IHNldHRpbmdzLlxuICAgKlxuICAgKiBAcmV0dXJucyBUaGUgZGVmYXVsdCBzZXR0aW5ncyAoYXMgYSByZWFkb25seSBvYmplY3QpLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGRlZmF1bHRTZXR0aW5nczogUmVhZG9ubHlEZWVwPEV4dHJhY3RQbHVnaW5TZXR0aW5nczxQbHVnaW5UeXBlcz4+O1xuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBjdXJyZW50IHNldHRpbmdzIHdyYXBwZXIuXG4gICAqXG4gICAqIEByZXR1cm5zIFRoZSBjdXJyZW50IHNldHRpbmdzIHdyYXBwZXIuXG4gICAqL1xuICBwdWJsaWMgZ2V0IHNldHRpbmdzV3JhcHBlcigpOiBFeHRyYWN0UmVhZG9ubHlQbHVnaW5TZXR0aW5nc1dyYXBwZXI8UGx1Z2luVHlwZXM+IHtcbiAgICByZXR1cm4gdGhpcy5jdXJyZW50U2V0dGluZ3NXcmFwcGVyIGFzIEV4dHJhY3RSZWFkb25seVBsdWdpblNldHRpbmdzV3JhcHBlcjxQbHVnaW5UeXBlcz47XG4gIH1cblxuICBwcml2YXRlIGN1cnJlbnRTZXR0aW5nc1dyYXBwZXI6IEV4dHJhY3RQbHVnaW5TZXR0aW5nc1dyYXBwZXI8UGx1Z2luVHlwZXM+O1xuICBwcml2YXRlIGxhc3RTYXZlZFNldHRpbmdzV3JhcHBlcjogRXh0cmFjdFBsdWdpblNldHRpbmdzV3JhcHBlcjxQbHVnaW5UeXBlcz47XG4gIHByaXZhdGUgcmVhZG9ubHkgbGVnYWN5U2V0dGluZ3NDb252ZXJ0ZXJzOiAoKHJlY29yZDogR2VuZXJpY09iamVjdCkgPT4gdm9pZClbXSA9IFtdO1xuICBwcml2YXRlIHJlYWRvbmx5IHByb3BlcnR5TmFtZXM6IEV4dHJhY3RQbHVnaW5TZXR0aW5nc1Byb3BlcnR5TmFtZXM8UGx1Z2luVHlwZXM+W107XG4gIHByaXZhdGUgcmVhZG9ubHkgdmFsaWRhdG9ycyA9IG5ldyBNYXA8RXh0cmFjdFBsdWdpblNldHRpbmdzUHJvcGVydHlOYW1lczxQbHVnaW5UeXBlcz4sIFZhbGlkYXRvcjxFeHRyYWN0UGx1Z2luU2V0dGluZ3M8UGx1Z2luVHlwZXM+Pj4oKTtcblxuICAvKipcbiAgICogQ3JlYXRlcyBhIG5ldyBwbHVnaW4gc2V0dGluZ3MgbWFuYWdlci5cbiAgICpcbiAgICogQHBhcmFtIHBsdWdpbiAtIFRoZSBwbHVnaW4uXG4gICAqL1xuICBwdWJsaWMgY29uc3RydWN0b3IocHVibGljIHJlYWRvbmx5IHBsdWdpbjogRXh0cmFjdFBsdWdpbjxQbHVnaW5UeXBlcz4pIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuYXBwID0gcGx1Z2luLmFwcDtcbiAgICB0aGlzLmRlZmF1bHRTZXR0aW5ncyA9IHRoaXMuY3JlYXRlRGVmYXVsdFNldHRpbmdzKCkgYXMgUmVhZG9ubHlEZWVwPEV4dHJhY3RQbHVnaW5TZXR0aW5nczxQbHVnaW5UeXBlcz4+O1xuICAgIHRoaXMuY3VycmVudFNldHRpbmdzV3JhcHBlciA9IHRoaXMuY3JlYXRlRGVmYXVsdFNldHRpbmdzV3JhcHBlcigpO1xuICAgIHRoaXMubGFzdFNhdmVkU2V0dGluZ3NXcmFwcGVyID0gdGhpcy5jcmVhdGVEZWZhdWx0U2V0dGluZ3NXcmFwcGVyKCk7XG4gICAgdGhpcy5wcm9wZXJ0eU5hbWVzID0gZ2V0QWxsS2V5cyh0aGlzLmN1cnJlbnRTZXR0aW5nc1dyYXBwZXIuc2V0dGluZ3MpO1xuICAgIHRoaXMucmVnaXN0ZXJWYWxpZGF0b3JzKCk7XG4gICAgdGhpcy5yZWdpc3RlckxlZ2FjeVNldHRpbmdzQ29udmVydGVycygpO1xuICB9XG5cbiAgLyoqXG4gICAqIEVkaXRzIHRoZSBwbHVnaW4gc2V0dGluZ3MgYW5kIHNhdmVzIHRoZW0uXG4gICAqXG4gICAqIEBwYXJhbSBzZXR0aW5nc0VkaXRvciAtIFRoZSBlZGl0b3IuXG4gICAqIEBwYXJhbSBjb250ZXh0IC0gVGhlIGNvbnRleHQuXG4gICAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgc2V0dGluZ3MgYXJlIHNhdmVkLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGVkaXRBbmRTYXZlKHNldHRpbmdzRWRpdG9yOiAoc2V0dGluZ3M6IEV4dHJhY3RQbHVnaW5TZXR0aW5nczxQbHVnaW5UeXBlcz4pID0+IFByb21pc2FibGU8dm9pZD4sIGNvbnRleHQ/OiB1bmtub3duKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgdGhpcy5lZGl0KHNldHRpbmdzRWRpdG9yKTtcbiAgICBhd2FpdCB0aGlzLnNhdmVUb0ZpbGUoY29udGV4dCk7XG4gIH1cblxuICAvKipcbiAgICogRW5zdXJlcyB0aGUgc2V0dGluZ3MgYXJlIHNhZmUuXG4gICAqXG4gICAqIEl0IHJ1bnMgdmFsaWRhdGlvbiBmb3IgZWFjaCBwcm9wZXJ0eSBhbmQgc2V0cyB0aGUgZGVmYXVsdCB2YWx1ZSBpZiB0aGUgdmFsaWRhdGlvbiBmYWlscy5cbiAgICpcbiAgICogQHBhcmFtIHNldHRpbmdzIC0gVGhlIHNldHRpbmdzLlxuICAgKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIHNldHRpbmdzIGFyZSBzYWZlLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGVuc3VyZVNhZmUoc2V0dGluZ3M6IEV4dHJhY3RQbHVnaW5TZXR0aW5nczxQbHVnaW5UeXBlcz4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCB2YWxpZGF0aW9uUmVzdWx0ID0gYXdhaXQgdGhpcy52YWxpZGF0ZShzZXR0aW5ncyk7XG4gICAgZm9yIChjb25zdCBwcm9wZXJ0eU5hbWUgb2YgdGhpcy5wcm9wZXJ0eU5hbWVzKSB7XG4gICAgICBpZiAodmFsaWRhdGlvblJlc3VsdFtwcm9wZXJ0eU5hbWVdKSB7XG4gICAgICAgIHNldHRpbmdzW3Byb3BlcnR5TmFtZV0gPSB0aGlzLmRlZmF1bHRTZXR0aW5nc1twcm9wZXJ0eU5hbWVdO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIGEgc2FmZSBjb3B5IG9mIHRoZSBzZXR0aW5ncy5cbiAgICpcbiAgICogQHBhcmFtIHNldHRpbmdzIC0gVGhlIHNldHRpbmdzLlxuICAgKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHRvIHRoZSBzYWZlIGNvcHkgb2YgdGhlIHNldHRpbmdzLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGdldFNhZmVDb3B5KHNldHRpbmdzOiBFeHRyYWN0UGx1Z2luU2V0dGluZ3M8UGx1Z2luVHlwZXM+KTogUHJvbWlzZTxFeHRyYWN0UGx1Z2luU2V0dGluZ3M8UGx1Z2luVHlwZXM+PiB7XG4gICAgY29uc3Qgc2FmZVNldHRpbmdzID0gYXdhaXQgdGhpcy5jbG9uZVNldHRpbmdzKHNldHRpbmdzKTtcbiAgICBhd2FpdCB0aGlzLmVuc3VyZVNhZmUoc2FmZVNldHRpbmdzKTtcbiAgICByZXR1cm4gc2FmZVNldHRpbmdzO1xuICB9XG5cbiAgLyoqXG4gICAqIExvYWRzIHRoZSBwbHVnaW4gc2V0dGluZ3MgZnJvbSB0aGUgZmlsZS5cbiAgICpcbiAgICogQHBhcmFtIGlzSW5pdGlhbExvYWQgLSBXaGV0aGVyIHRoZSBzZXR0aW5ncyBhcmUgYmVpbmcgbG9hZGVkIGZvciB0aGUgZmlyc3QgdGltZS5cbiAgICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB3aGVuIHRoZSBzZXR0aW5ncyBhcmUgbG9hZGVkLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGxvYWRGcm9tRmlsZShpc0luaXRpYWxMb2FkOiBib29sZWFuKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgZGF0YSA9IGF3YWl0IHRoaXMucGx1Z2luLmxvYWREYXRhKCkgYXMgdW5rbm93bjtcbiAgICB0aGlzLmxhc3RTYXZlZFNldHRpbmdzV3JhcHBlciA9IHRoaXMuY3JlYXRlRGVmYXVsdFNldHRpbmdzV3JhcHBlcigpO1xuICAgIHRoaXMuY3VycmVudFNldHRpbmdzV3JhcHBlciA9IHRoaXMuY3JlYXRlRGVmYXVsdFNldHRpbmdzV3JhcHBlcigpO1xuXG4gICAgdHJ5IHtcbiAgICAgIGlmIChkYXRhID09PSB1bmRlZmluZWQgfHwgZGF0YSA9PT0gbnVsbCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmICh0eXBlb2YgZGF0YSAhPT0gJ29iamVjdCcpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihgSW52YWxpZCBzZXR0aW5ncyBmcm9tIGRhdGEuanNvbi4gRXhwZWN0ZWQgT2JqZWN0LCBnb3Q6ICR7dHlwZW9mIGRhdGF9YCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgY29uc3QgcmF3UmVjb3JkID0gZGF0YSBhcyBHZW5lcmljT2JqZWN0O1xuICAgICAgY29uc3QgcGFyc2VkU2V0dGluZ3MgPSBhd2FpdCB0aGlzLnJhd1JlY29yZFRvU2V0dGluZ3MocmF3UmVjb3JkKTtcbiAgICAgIGNvbnN0IHZhbGlkYXRpb25SZXN1bHQgPSBhd2FpdCB0aGlzLnZhbGlkYXRlKHBhcnNlZFNldHRpbmdzKTtcblxuICAgICAgZm9yIChjb25zdCBwcm9wZXJ0eU5hbWUgb2YgdGhpcy5wcm9wZXJ0eU5hbWVzKSB7XG4gICAgICAgIHRoaXMuc2V0UHJvcGVydHlJbXBsKHByb3BlcnR5TmFtZSwgcGFyc2VkU2V0dGluZ3NbcHJvcGVydHlOYW1lXSwgdmFsaWRhdGlvblJlc3VsdFtwcm9wZXJ0eU5hbWVdKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5sYXN0U2F2ZWRTZXR0aW5nc1dyYXBwZXIgPSBhd2FpdCB0aGlzLmNsb25lU2V0dGluZ3NXcmFwcGVyKHRoaXMuY3VycmVudFNldHRpbmdzV3JhcHBlcik7XG5cbiAgICAgIGNvbnN0IG5ld1JlY29yZCA9IGF3YWl0IHRoaXMuc2V0dGluZ3NUb1Jhd1JlY29yZCh0aGlzLmN1cnJlbnRTZXR0aW5nc1dyYXBwZXIuc2V0dGluZ3MpO1xuXG4gICAgICBpZiAoIWRlZXBFcXVhbChuZXdSZWNvcmQsIGRhdGEpKSB7XG4gICAgICAgIGF3YWl0IHRoaXMuc2F2ZVRvRmlsZUltcGwoKTtcbiAgICAgIH1cbiAgICB9IGZpbmFsbHkge1xuICAgICAgYXdhaXQgdGhpcy50cmlnZ2VyQXN5bmMoJ2xvYWRTZXR0aW5ncycsIHRoaXMuY3VycmVudFNldHRpbmdzV3JhcHBlciwgaXNJbml0aWFsTG9hZCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFN1YnNjcmliZXMgdG8gdGhlIGBsb2FkU2V0dGluZ3NgIGV2ZW50LlxuICAgKlxuICAgKiBAcGFyYW0gbmFtZSAtIEFsd2F5cyBgbG9hZFNldHRpbmdzYC5cbiAgICogQHBhcmFtIGNhbGxiYWNrIC0gVGhlIGNhbGxiYWNrIHRvIGNhbGwgd2hlbiB0aGUgZXZlbnQgaXMgdHJpZ2dlcmVkLlxuICAgKiBAcGFyYW0gdGhpc0FyZyAtIFRoZSBjb250ZXh0IHBhc3NlZCBhcyBgdGhpc2AgdG8gdGhlIGBjYWxsYmFja2AuXG4gICAqIEByZXR1cm5zIEEgcmVmZXJlbmNlIHRvIHRoZSBldmVudCBsaXN0ZW5lci5cbiAgICovXG4gIHB1YmxpYyBvdmVycmlkZSBvbihcbiAgICBuYW1lOiAnbG9hZFNldHRpbmdzJyxcbiAgICBjYWxsYmFjazogKFxuICAgICAgbG9hZGVkU2V0dGluZ3M6IEV4dHJhY3RSZWFkb25seVBsdWdpblNldHRpbmdzV3JhcHBlcjxQbHVnaW5UeXBlcz4sXG4gICAgICBpc0luaXRpYWxMb2FkOiBib29sZWFuXG4gICAgKSA9PiBQcm9taXNhYmxlPHZvaWQ+LFxuICAgIHRoaXNBcmc/OiB1bmtub3duXG4gICk6IEFzeW5jRXZlbnRSZWY7XG4gIC8qKlxuICAgKiBTdWJzY3JpYmVzIHRvIHRoZSBgc2F2ZVNldHRpbmdzYCBldmVudC5cbiAgICpcbiAgICogQHBhcmFtIG5hbWUgLSBBbHdheXMgYHNhdmVTZXR0aW5nc2AuXG4gICAqIEBwYXJhbSBjYWxsYmFjayAtIFRoZSBjYWxsYmFjayB0byBjYWxsIHdoZW4gdGhlIGV2ZW50IGlzIHRyaWdnZXJlZC5cbiAgICogQHBhcmFtIHRoaXNBcmcgLSBUaGUgY29udGV4dCBwYXNzZWQgYXMgYHRoaXNgIHRvIHRoZSBgY2FsbGJhY2tgLlxuICAgKiBAcmV0dXJucyBBIHJlZmVyZW5jZSB0byB0aGUgZXZlbnQgbGlzdGVuZXIuXG4gICAqL1xuICBwdWJsaWMgb3ZlcnJpZGUgb24oXG4gICAgbmFtZTogJ3NhdmVTZXR0aW5ncycsXG4gICAgY2FsbGJhY2s6IChcbiAgICAgIG5ld1NldHRpbmdzOiBFeHRyYWN0UmVhZG9ubHlQbHVnaW5TZXR0aW5nc1dyYXBwZXI8UGx1Z2luVHlwZXM+LFxuICAgICAgb2xkU2V0dGluZ3M6IEV4dHJhY3RSZWFkb25seVBsdWdpblNldHRpbmdzV3JhcHBlcjxQbHVnaW5UeXBlcz4sXG4gICAgICBjb250ZXh0OiB1bmtub3duXG4gICAgKSA9PiBQcm9taXNhYmxlPHZvaWQ+LFxuICAgIHRoaXNBcmc/OiB1bmtub3duXG4gICk6IEFzeW5jRXZlbnRSZWY7XG4gIC8qKlxuICAgKiBTdWJzY3JpYmVzIHRvIGFuIGV2ZW50LlxuICAgKlxuICAgKiBAcGFyYW0gbmFtZSAtIFRoZSBuYW1lIG9mIHRoZSBldmVudC5cbiAgICogQHBhcmFtIGNhbGxiYWNrIC0gVGhlIGNhbGxiYWNrIHRvIGNhbGwgd2hlbiB0aGUgZXZlbnQgaXMgdHJpZ2dlcmVkLlxuICAgKiBAcGFyYW0gdGhpc0FyZyAtIFRoZSBjb250ZXh0IHBhc3NlZCBhcyBgdGhpc2AgdG8gdGhlIGBjYWxsYmFja2AuXG4gICAqIEByZXR1cm5zIEEgcmVmZXJlbmNlIHRvIHRoZSBldmVudCBsaXN0ZW5lci5cbiAgICovXG4gIHB1YmxpYyBvdmVycmlkZSBvbjxBcmdzIGV4dGVuZHMgdW5rbm93bltdPihcbiAgICBuYW1lOiBzdHJpbmcsXG4gICAgY2FsbGJhY2s6ICguLi5hcmdzOiBBcmdzKSA9PiBQcm9taXNhYmxlPHZvaWQ+LFxuICAgIHRoaXNBcmc/OiB1bmtub3duXG4gICk6IEFzeW5jRXZlbnRSZWYge1xuICAgIHJldHVybiBzdXBlci5vbihuYW1lLCBjYWxsYmFjaywgdGhpc0FyZyk7XG4gIH1cblxuICAvKipcbiAgICogUmV2YWxpZGF0ZXMgdGhlIHNldHRpbmdzLlxuICAgKlxuICAgKiBAcmV0dXJucyBUaGUgdmFsaWRhdGlvbiBtZXNzYWdlcy5cbiAgICovXG4gIHB1YmxpYyBhc3luYyByZXZhbGlkYXRlKCk6IFByb21pc2U8UmVjb3JkPEV4dHJhY3RQbHVnaW5TZXR0aW5nc1Byb3BlcnR5TmFtZXM8UGx1Z2luVHlwZXM+LCBzdHJpbmc+PiB7XG4gICAgYXdhaXQgdGhpcy5lZGl0KG5vb3ApO1xuICAgIHJldHVybiB0aGlzLmN1cnJlbnRTZXR0aW5nc1dyYXBwZXIudmFsaWRhdGlvbk1lc3NhZ2VzO1xuICB9XG5cbiAgLyoqXG4gICAqIFNhdmVzIHRoZSBuZXcgcGx1Z2luIHNldHRpbmdzLlxuICAgKlxuICAgKiBAcGFyYW0gY29udGV4dCAtIFRoZSBjb250ZXh0IG9mIHRoZSBzYXZlIHRvIGZpbGUgb3BlcmF0aW9uLlxuICAgKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIHNldHRpbmdzIGFyZSBzYXZlZC5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBzYXZlVG9GaWxlKGNvbnRleHQ/OiB1bmtub3duKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKGRlZXBFcXVhbCh0aGlzLmxhc3RTYXZlZFNldHRpbmdzV3JhcHBlci5zZXR0aW5ncywgdGhpcy5jdXJyZW50U2V0dGluZ3NXcmFwcGVyLnNldHRpbmdzKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGF3YWl0IHRoaXMuc2F2ZVRvRmlsZUltcGwoKTtcbiAgICBhd2FpdCB0aGlzLnRyaWdnZXJBc3luYygnc2F2ZVNldHRpbmdzJywgdGhpcy5jdXJyZW50U2V0dGluZ3NXcmFwcGVyLCB0aGlzLmxhc3RTYXZlZFNldHRpbmdzV3JhcHBlciwgY29udGV4dCk7XG4gICAgdGhpcy5sYXN0U2F2ZWRTZXR0aW5nc1dyYXBwZXIgPSBhd2FpdCB0aGlzLmNsb25lU2V0dGluZ3NXcmFwcGVyKHRoaXMuY3VycmVudFNldHRpbmdzV3JhcHBlcik7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgdmFsdWUgb2YgYSBwcm9wZXJ0eS5cbiAgICpcbiAgICogQHR5cGVQYXJhbSBQcm9wZXJ0eU5hbWUgLSBUaGUgbmFtZSBvZiB0aGUgcHJvcGVydHkuXG4gICAqIEBwYXJhbSBwcm9wZXJ0eU5hbWUgLSBUaGUgbmFtZSBvZiB0aGUgcHJvcGVydHkuXG4gICAqIEBwYXJhbSB2YWx1ZSAtIFRoZSB2YWx1ZSB0byBzZXQuXG4gICAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgdG8gdGhlIHZhbGlkYXRpb24gbWVzc2FnZS5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBzZXRQcm9wZXJ0eTxQcm9wZXJ0eU5hbWUgZXh0ZW5kcyBFeHRyYWN0UGx1Z2luU2V0dGluZ3NQcm9wZXJ0eU5hbWVzPFBsdWdpblR5cGVzPj4oXG4gICAgcHJvcGVydHlOYW1lOiBQcm9wZXJ0eU5hbWUsXG4gICAgdmFsdWU6IEV4dHJhY3RQbHVnaW5TZXR0aW5nczxQbHVnaW5UeXBlcz5bUHJvcGVydHlOYW1lXVxuICApOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIGF3YWl0IHRoaXMuZWRpdCgoc2V0dGluZ3MpID0+IHtcbiAgICAgIHNldHRpbmdzW3Byb3BlcnR5TmFtZV0gPSB2YWx1ZTtcbiAgICB9KTtcbiAgICByZXR1cm4gdGhpcy5jdXJyZW50U2V0dGluZ3NXcmFwcGVyLnZhbGlkYXRpb25NZXNzYWdlc1twcm9wZXJ0eU5hbWVdO1xuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlcyB0aGUgc2V0dGluZ3MuXG4gICAqXG4gICAqIEBwYXJhbSBzZXR0aW5ncyAtIFRoZSBzZXR0aW5ncy5cbiAgICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB0byB0aGUgdmFsaWRhdGlvbiByZXN1bHQuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgdmFsaWRhdGUoc2V0dGluZ3M6IEV4dHJhY3RQbHVnaW5TZXR0aW5nczxQbHVnaW5UeXBlcz4pOiBQcm9taXNlPFZhbGlkYXRpb25SZXN1bHQ8RXh0cmFjdFBsdWdpblNldHRpbmdzPFBsdWdpblR5cGVzPj4+IHtcbiAgICBjb25zdCByZXN1bHQ6IFZhbGlkYXRpb25SZXN1bHQ8RXh0cmFjdFBsdWdpblNldHRpbmdzPFBsdWdpblR5cGVzPj4gPSB7fTtcbiAgICBmb3IgKGNvbnN0IFtwcm9wZXJ0eU5hbWUsIHZhbGlkYXRvcl0gb2YgdGhpcy52YWxpZGF0b3JzLmVudHJpZXMoKSkge1xuICAgICAgY29uc3QgdmFsaWRhdGlvbk1lc3NhZ2UgPSBhd2FpdCB2YWxpZGF0b3Ioc2V0dGluZ3NbcHJvcGVydHlOYW1lXSwgc2V0dGluZ3MpO1xuICAgICAgaWYgKHZhbGlkYXRpb25NZXNzYWdlKSB7XG4gICAgICAgIHJlc3VsdFtwcm9wZXJ0eU5hbWVdID0gdmFsaWRhdGlvbk1lc3NhZ2U7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBjcmVhdGVEZWZhdWx0U2V0dGluZ3MoKTogRXh0cmFjdFBsdWdpblNldHRpbmdzPFBsdWdpblR5cGVzPjtcblxuICAvKipcbiAgICogR2V0cyB0aGUgdHJhbnNmb3JtZXIuXG4gICAqXG4gICAqIEByZXR1cm5zIFRoZSB0cmFuc2Zvcm1lci5cbiAgICovXG4gIHByb3RlY3RlZCBnZXRUcmFuc2Zvcm1lcigpOiBUcmFuc2Zvcm1lciB7XG4gICAgcmV0dXJuIGRlZmF1bHRUcmFuc2Zvcm1lcjtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxsZWQgd2hlbiB0aGUgcGx1Z2luIHNldHRpbmdzIGFyZSBsb2FkZWQuXG4gICAqXG4gICAqIEBwYXJhbSByZWNvcmQgLSBUaGUgcmVjb3JkLlxuICAgKi9cbiAgcHJvdGVjdGVkIGFzeW5jIG9uTG9hZFJlY29yZChyZWNvcmQ6IEdlbmVyaWNPYmplY3QpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBmb3IgKGNvbnN0IGNvbnZlcnRlciBvZiB0aGlzLmxlZ2FjeVNldHRpbmdzQ29udmVydGVycykge1xuICAgICAgY29udmVydGVyKHJlY29yZCk7XG4gICAgfVxuICAgIGF3YWl0IFByb21pc2UucmVzb2x2ZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIENhbGxlZCB3aGVuIHRoZSBwbHVnaW4gc2V0dGluZ3MgYXJlIHNhdmluZy5cbiAgICpcbiAgICogQHBhcmFtIF9yZWNvcmQgLSBUaGUgcmVjb3JkLlxuICAgKi9cbiAgcHJvdGVjdGVkIGFzeW5jIG9uU2F2aW5nUmVjb3JkKF9yZWNvcmQ6IEdlbmVyaWNPYmplY3QpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCBub29wQXN5bmMoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWdpc3RlcnMgYSBsZWdhY3kgc2V0dGluZ3MgY29udmVydGVyLlxuICAgKlxuICAgKiBAdHlwZVBhcmFtIExlZ2FjeVNldHRpbmdzIC0gVGhlIGxlZ2FjeSBzZXR0aW5ncyBjbGFzcy5cbiAgICogQHBhcmFtIGxlZ2FjeVNldHRpbmdzQ2xhc3MgLSBUaGUgbGVnYWN5IHNldHRpbmdzIGNsYXNzLlxuICAgKiBAcGFyYW0gY29udmVydGVyIC0gVGhlIGNvbnZlcnRlci5cbiAgICovXG4gIHByb3RlY3RlZCByZWdpc3RlckxlZ2FjeVNldHRpbmdzQ29udmVydGVyPExlZ2FjeVNldHRpbmdzIGV4dGVuZHMgb2JqZWN0PihcbiAgICBsZWdhY3lTZXR0aW5nc0NsYXNzOiBuZXcgKCkgPT4gTGVnYWN5U2V0dGluZ3MsXG4gICAgY29udmVydGVyOiAobGVnYWN5U2V0dGluZ3M6IFBhcnRpYWw8RXh0cmFjdFBsdWdpblNldHRpbmdzPFBsdWdpblR5cGVzPj4gJiBQYXJ0aWFsPExlZ2FjeVNldHRpbmdzPikgPT4gdm9pZFxuICApOiB2b2lkIHtcbiAgICBjb25zdCB0aGF0ID0gdGhpcztcbiAgICB0aGlzLmxlZ2FjeVNldHRpbmdzQ29udmVydGVycy5wdXNoKGxlZ2FjeVNldHRpbmdzQ29udmVydGVyKTtcblxuICAgIGZ1bmN0aW9uIGxlZ2FjeVNldHRpbmdzQ29udmVydGVyKHJlY29yZDogR2VuZXJpY09iamVjdCk6IHZvaWQge1xuICAgICAgY29uc3QgbGVnYWN5U2V0dGluZ3NLZXlzID0gbmV3IFNldDxzdHJpbmc+KE9iamVjdC5rZXlzKG5ldyBsZWdhY3lTZXR0aW5nc0NsYXNzKCkpKTtcbiAgICAgIGNvbnN0IHBsdWdpblNldHRpbmdLZXlzID0gbmV3IFNldDxzdHJpbmc+KHRoYXQucHJvcGVydHlOYW1lcyk7XG4gICAgICBjb25zdCBsZWdhY3lTZXR0aW5ncyA9IHJlY29yZCBhcyBQYXJ0aWFsPEV4dHJhY3RQbHVnaW5TZXR0aW5nczxQbHVnaW5UeXBlcz4+ICYgUGFydGlhbDxMZWdhY3lTZXR0aW5ncz47XG4gICAgICBjb252ZXJ0ZXIobGVnYWN5U2V0dGluZ3MpO1xuICAgICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMobGVnYWN5U2V0dGluZ3MpKSB7XG4gICAgICAgIGlmIChwbHVnaW5TZXR0aW5nS2V5cy5oYXMoa2V5KSkge1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFsZWdhY3lTZXR0aW5nc0tleXMuaGFzKGtleSkpIHtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZHluYW1pYy1kZWxldGUgLS0gV2UgaGF2ZSBubyBvdGhlciB3YXkgdG8gZGVsZXRlIHRoZSBwcm9wZXJ0eS5cbiAgICAgICAgZGVsZXRlIHJlY29yZFtrZXldO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZWdpc3RlcnMgdGhlIGxlZ2FjeSBzZXR0aW5ncyBjb252ZXJ0ZXJzLlxuICAgKlxuICAgKiBUaGlzIG1ldGhvZCBjYW4gYmUgb3ZlcnJpZGRlbiBieSBzdWJjbGFzc2VzIHRvIHJlZ2lzdGVyIGxlZ2FjeSBzZXR0aW5ncyBjb252ZXJ0ZXJzLlxuICAgKi9cbiAgcHJvdGVjdGVkIHJlZ2lzdGVyTGVnYWN5U2V0dGluZ3NDb252ZXJ0ZXJzKCk6IHZvaWQge1xuICAgIG5vb3AoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWdpc3RlcnMgYSB2YWxpZGF0b3IgZm9yIGEgcHJvcGVydHkuXG4gICAqXG4gICAqIEBwYXJhbSBwcm9wZXJ0eU5hbWUgLSBUaGUgbmFtZSBvZiB0aGUgcHJvcGVydHkuXG4gICAqIEBwYXJhbSB2YWxpZGF0b3IgLSBUaGUgdmFsaWRhdG9yLlxuICAgKi9cbiAgcHJvdGVjdGVkIHJlZ2lzdGVyVmFsaWRhdG9yPFByb3BlcnR5TmFtZSBleHRlbmRzIEV4dHJhY3RQbHVnaW5TZXR0aW5nc1Byb3BlcnR5TmFtZXM8UGx1Z2luVHlwZXM+PihcbiAgICBwcm9wZXJ0eU5hbWU6IFByb3BlcnR5TmFtZSxcbiAgICB2YWxpZGF0b3I6IFZhbGlkYXRvcjxFeHRyYWN0UGx1Z2luU2V0dGluZ3M8UGx1Z2luVHlwZXM+LCBQcm9wZXJ0eU5hbWU+XG4gICk6IHZvaWQge1xuICAgIHRoaXMudmFsaWRhdG9ycy5zZXQocHJvcGVydHlOYW1lLCB2YWxpZGF0b3IgYXMgVmFsaWRhdG9yPEV4dHJhY3RQbHVnaW5TZXR0aW5nczxQbHVnaW5UeXBlcz4+KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWdpc3RlcnMgdGhlIHZhbGlkYXRvcnMuXG4gICAqXG4gICAqIFRoaXMgbWV0aG9kIGNhbiBiZSBvdmVycmlkZGVuIGJ5IHN1YmNsYXNzZXMgdG8gcmVnaXN0ZXIgdmFsaWRhdG9ycyBmb3IgcHJvcGVydGllcy5cbiAgICovXG4gIHByb3RlY3RlZCByZWdpc3RlclZhbGlkYXRvcnMoKTogdm9pZCB7XG4gICAgbm9vcCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBjbG9uZVNldHRpbmdzKHNldHRpbmdzOiBFeHRyYWN0UGx1Z2luU2V0dGluZ3M8UGx1Z2luVHlwZXM+KTogUHJvbWlzZTxFeHRyYWN0UGx1Z2luU2V0dGluZ3M8UGx1Z2luVHlwZXM+PiB7XG4gICAgY29uc3QgcmVjb3JkID0gYXdhaXQgdGhpcy5zZXR0aW5nc1RvUmF3UmVjb3JkKHNldHRpbmdzKTtcbiAgICBjb25zdCBqc29uID0gSlNPTi5zdHJpbmdpZnkocmVjb3JkKTtcbiAgICBjb25zdCBjbG9uZVJlY29yZCA9IEpTT04ucGFyc2UoanNvbikgYXMgR2VuZXJpY09iamVjdDtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5yYXdSZWNvcmRUb1NldHRpbmdzKGNsb25lUmVjb3JkKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgY2xvbmVTZXR0aW5nc1dyYXBwZXIoXG4gICAgc2V0dGluZ3NXcmFwcGVyOiBQbHVnaW5TZXR0aW5nc1dyYXBwZXI8RXh0cmFjdFBsdWdpblNldHRpbmdzPFBsdWdpblR5cGVzPj5cbiAgKTogUHJvbWlzZTxQbHVnaW5TZXR0aW5nc1dyYXBwZXI8RXh0cmFjdFBsdWdpblNldHRpbmdzPFBsdWdpblR5cGVzPj4+IHtcbiAgICByZXR1cm4ge1xuICAgICAgc2FmZVNldHRpbmdzOiBhd2FpdCB0aGlzLmNsb25lU2V0dGluZ3Moc2V0dGluZ3NXcmFwcGVyLnNhZmVTZXR0aW5ncyksXG4gICAgICBzZXR0aW5nczogYXdhaXQgdGhpcy5jbG9uZVNldHRpbmdzKHNldHRpbmdzV3JhcHBlci5zZXR0aW5ncyksXG4gICAgICB2YWxpZGF0aW9uTWVzc2FnZXM6IHsgLi4uc2V0dGluZ3NXcmFwcGVyLnZhbGlkYXRpb25NZXNzYWdlcyB9XG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlRGVmYXVsdFNldHRpbmdzV3JhcHBlcigpOiBQbHVnaW5TZXR0aW5nc1dyYXBwZXI8RXh0cmFjdFBsdWdpblNldHRpbmdzPFBsdWdpblR5cGVzPj4ge1xuICAgIHJldHVybiB7XG4gICAgICBzYWZlU2V0dGluZ3M6IHRoaXMuY3JlYXRlRGVmYXVsdFNldHRpbmdzKCksXG4gICAgICBzZXR0aW5nczogdGhpcy5jcmVhdGVEZWZhdWx0U2V0dGluZ3MoKSxcbiAgICAgIHZhbGlkYXRpb25NZXNzYWdlczoge30gYXMgUmVjb3JkPEV4dHJhY3RQbHVnaW5TZXR0aW5nc1Byb3BlcnR5TmFtZXM8UGx1Z2luVHlwZXM+LCBzdHJpbmc+XG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZWRpdChzZXR0aW5nc0VkaXRvcjogKHNldHRpbmdzOiBFeHRyYWN0UGx1Z2luU2V0dGluZ3M8UGx1Z2luVHlwZXM+KSA9PiBQcm9taXNhYmxlPHZvaWQ+KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHNldHRpbmdzRWRpdG9yKHRoaXMuY3VycmVudFNldHRpbmdzV3JhcHBlci5zZXR0aW5ncyk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGNvbnN0IHZhbGlkYXRpb25SZXN1bHQgPSBhd2FpdCB0aGlzLnZhbGlkYXRlKHRoaXMuY3VycmVudFNldHRpbmdzV3JhcHBlci5zZXR0aW5ncyk7XG4gICAgICBmb3IgKGNvbnN0IHByb3BlcnR5TmFtZSBvZiB0aGlzLnByb3BlcnR5TmFtZXMpIHtcbiAgICAgICAgY29uc3QgdmFsaWRhdGlvbk1lc3NhZ2UgPSB2YWxpZGF0aW9uUmVzdWx0W3Byb3BlcnR5TmFtZV0gPz8gJyc7XG4gICAgICAgIHRoaXMuY3VycmVudFNldHRpbmdzV3JhcHBlci52YWxpZGF0aW9uTWVzc2FnZXNbcHJvcGVydHlOYW1lXSA9IHZhbGlkYXRpb25NZXNzYWdlO1xuICAgICAgICB0aGlzLmN1cnJlbnRTZXR0aW5nc1dyYXBwZXIuc2FmZVNldHRpbmdzW3Byb3BlcnR5TmFtZV0gPSB2YWxpZGF0aW9uTWVzc2FnZVxuICAgICAgICAgID8gdGhpcy5kZWZhdWx0U2V0dGluZ3NbcHJvcGVydHlOYW1lXVxuICAgICAgICAgIDogdGhpcy5jdXJyZW50U2V0dGluZ3NXcmFwcGVyLnNldHRpbmdzW3Byb3BlcnR5TmFtZV07XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBpc1ZhbGlkUHJvcGVydHlOYW1lKHByb3A6IHVua25vd24pOiBwcm9wIGlzIEV4dHJhY3RQbHVnaW5TZXR0aW5nc1Byb3BlcnR5TmFtZXM8UGx1Z2luVHlwZXM+IHtcbiAgICBpZiAodHlwZW9mIHByb3AgIT09ICdzdHJpbmcnKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgcmV0dXJuICh0aGlzLnByb3BlcnR5TmFtZXMgYXMgc3RyaW5nW10pLmluY2x1ZGVzKHByb3ApO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyByYXdSZWNvcmRUb1NldHRpbmdzKHJhd1JlY29yZDogR2VuZXJpY09iamVjdCk6IFByb21pc2U8RXh0cmFjdFBsdWdpblNldHRpbmdzPFBsdWdpblR5cGVzPj4ge1xuICAgIHJhd1JlY29yZCA9IHRoaXMuZ2V0VHJhbnNmb3JtZXIoKS50cmFuc2Zvcm1PYmplY3RSZWN1cnNpdmVseShyYXdSZWNvcmQpO1xuICAgIGF3YWl0IHRoaXMub25Mb2FkUmVjb3JkKHJhd1JlY29yZCk7XG5cbiAgICBjb25zdCBzZXR0aW5ncyA9IHRoaXMuY3JlYXRlRGVmYXVsdFNldHRpbmdzKCk7XG5cbiAgICBmb3IgKGNvbnN0IFtwcm9wZXJ0eU5hbWUsIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhyYXdSZWNvcmQpKSB7XG4gICAgICBpZiAoIXRoaXMuaXNWYWxpZFByb3BlcnR5TmFtZShwcm9wZXJ0eU5hbWUpKSB7XG4gICAgICAgIGdldExpYkRlYnVnZ2VyKCdQbHVnaW5TZXR0aW5nc01hbmFnZXJCYXNlOnJhd1JlY29yZFRvU2V0dGluZ3MnKShgVW5rbm93biBwcm9wZXJ0eTogJHtwcm9wZXJ0eU5hbWV9YCk7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAodHlwZW9mIHZhbHVlICE9PSB0eXBlb2YgdGhpcy5kZWZhdWx0U2V0dGluZ3NbcHJvcGVydHlOYW1lXSkge1xuICAgICAgICBnZXRMaWJEZWJ1Z2dlcignUGx1Z2luU2V0dGluZ3NNYW5hZ2VyQmFzZTpyYXdSZWNvcmRUb1NldHRpbmdzJykoXG4gICAgICAgICAgJ1Bvc3NpYmxlIGludmFsaWQgdmFsdWUgdHlwZS4gSXQgbWlnaHQgbGVhZCB0byBhbiB1bmV4cGVjdGVkIGJlaGF2aW9yIG9mIHRoZSBwbHVnaW4uIFRoZXJlIGlzIGFsc28gYSBjaGFuY2UgaXQgaXMgYSBmYWxzZS1uZWdhdGl2ZSB3YXJuaW5nLCBhcyB3ZSBhcmUgdW5hYmxlIHRvIGRldGVybWluZSB0aGUgZXhhY3QgdHlwZSBvZiB0aGUgdmFsdWUgaW4gcnVudGltZS4nLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGRlZmF1bHRWYWx1ZTogdGhpcy5kZWZhdWx0U2V0dGluZ3NbcHJvcGVydHlOYW1lXSxcbiAgICAgICAgICAgIHByb3BlcnR5TmFtZSxcbiAgICAgICAgICAgIHZhbHVlXG4gICAgICAgICAgfVxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICBzZXR0aW5nc1twcm9wZXJ0eU5hbWVdID0gdmFsdWUgYXMgRXh0cmFjdFBsdWdpblNldHRpbmdzUHJvcGVydHlWYWx1ZXM8UGx1Z2luVHlwZXM+O1xuICAgIH1cblxuICAgIHJldHVybiBzZXR0aW5ncztcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgc2F2ZVRvRmlsZUltcGwoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgdGhpcy5wbHVnaW4uc2F2ZURhdGEoYXdhaXQgdGhpcy5zZXR0aW5nc1RvUmF3UmVjb3JkKHRoaXMuY3VycmVudFNldHRpbmdzV3JhcHBlci5zZXR0aW5ncykpO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRQcm9wZXJ0eUltcGwoXG4gICAgcHJvcGVydHlOYW1lOiBFeHRyYWN0UGx1Z2luU2V0dGluZ3NQcm9wZXJ0eU5hbWVzPFBsdWdpblR5cGVzPixcbiAgICB2YWx1ZTogRXh0cmFjdFBsdWdpblNldHRpbmdzUHJvcGVydHlWYWx1ZXM8UGx1Z2luVHlwZXM+LFxuICAgIHZhbGlkYXRpb25NZXNzYWdlPzogc3RyaW5nXG4gICk6IHZvaWQge1xuICAgIHRoaXMuY3VycmVudFNldHRpbmdzV3JhcHBlci5zZXR0aW5nc1twcm9wZXJ0eU5hbWVdID0gdmFsdWU7XG4gICAgdGhpcy5jdXJyZW50U2V0dGluZ3NXcmFwcGVyLnZhbGlkYXRpb25NZXNzYWdlc1twcm9wZXJ0eU5hbWVdID0gdmFsaWRhdGlvbk1lc3NhZ2UgPz8gJyc7XG4gICAgdGhpcy5jdXJyZW50U2V0dGluZ3NXcmFwcGVyLnNhZmVTZXR0aW5nc1twcm9wZXJ0eU5hbWVdID0gdmFsaWRhdGlvbk1lc3NhZ2UgPyB0aGlzLmRlZmF1bHRTZXR0aW5nc1twcm9wZXJ0eU5hbWVdIDogdmFsdWU7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHNldHRpbmdzVG9SYXdSZWNvcmQoc2V0dGluZ3M6IEV4dHJhY3RQbHVnaW5TZXR0aW5nczxQbHVnaW5UeXBlcz4pOiBQcm9taXNlPEdlbmVyaWNPYmplY3Q+IHtcbiAgICBjb25zdCByYXdSZWNvcmQ6IEdlbmVyaWNPYmplY3QgPSB7fTtcblxuICAgIGZvciAoY29uc3QgcHJvcGVydHlOYW1lIG9mIHRoaXMucHJvcGVydHlOYW1lcykge1xuICAgICAgcmF3UmVjb3JkW3Byb3BlcnR5TmFtZV0gPSBzZXR0aW5nc1twcm9wZXJ0eU5hbWVdO1xuICAgIH1cblxuICAgIGF3YWl0IHRoaXMub25TYXZpbmdSZWNvcmQocmF3UmVjb3JkKTtcblxuICAgIHJldHVybiB0aGlzLmdldFRyYW5zZm9ybWVyKCkudHJhbnNmb3JtT2JqZWN0UmVjdXJzaXZlbHkocmF3UmVjb3JkKTtcbiAgfVxufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUE4QkEseUJBQTRCO0FBQzVCLG1CQUErQjtBQUMvQixzQkFHTztBQUNQLHlCQUdPO0FBQ1AsNkJBQWdDO0FBQ2hDLGlDQUFvQztBQUNwQyw4QkFBaUM7QUFDakMsNEJBQStCO0FBQy9CLDRCQUErQjtBQUMvQiw0Q0FBK0M7QUFDL0Msa0NBQXFDO0FBRXJDLE1BQU0scUJBQXFCLElB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
483
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL1BsdWdpbi9QbHVnaW5TZXR0aW5nc01hbmFnZXJCYXNlLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBwYWNrYWdlRG9jdW1lbnRhdGlvblxuICpcbiAqIFBsdWdpbiBzZXR0aW5ncyBtYW5hZ2VyIGJhc2UgY2xhc3MuXG4gKi9cblxuLyogdjggaWdub3JlIHN0YXJ0IC0tIERlZXBseSBjb3VwbGVkIHRvIE9ic2lkaWFuIHJ1bnRpbWU7IHJlcXVpcmVzIHJ1bm5pbmcgdmF1bHQgZm9yIG1lYW5pbmdmdWwgdGVzdGluZy4gKi9cblxuaW1wb3J0IHR5cGUgeyBBcHAgfSBmcm9tICdvYnNpZGlhbic7XG5pbXBvcnQgdHlwZSB7XG4gIFByb21pc2FibGUsXG4gIFJlYWRvbmx5RGVlcFxufSBmcm9tICd0eXBlLWZlc3QnO1xuXG5pbXBvcnQgdHlwZSB7IEFzeW5jRXZlbnRSZWYgfSBmcm9tICcuLi8uLi9Bc3luY0V2ZW50cy50cyc7XG5pbXBvcnQgdHlwZSB7IFRyYW5zZm9ybWVyIH0gZnJvbSAnLi4vLi4vVHJhbnNmb3JtZXJzL1RyYW5zZm9ybWVyLnRzJztcbmltcG9ydCB0eXBlIHtcbiAgTWF5YmVSZXR1cm4sXG4gIFN0cmluZ0tleXNcbn0gZnJvbSAnLi4vLi4vVHlwZS50cyc7XG5pbXBvcnQgdHlwZSB7IEdlbmVyaWNPYmplY3QgfSBmcm9tICcuLi8uLi9UeXBlR3VhcmRzLnRzJztcbmltcG9ydCB0eXBlIHsgUGx1Z2luU2V0dGluZ3NXcmFwcGVyIH0gZnJvbSAnLi9QbHVnaW5TZXR0aW5nc1dyYXBwZXIudHMnO1xuaW1wb3J0IHR5cGUge1xuICBFeHRyYWN0UGx1Z2luLFxuICBFeHRyYWN0UGx1Z2luU2V0dGluZ3MsXG4gIEV4dHJhY3RQbHVnaW5TZXR0aW5nc1Byb3BlcnR5TmFtZXMsXG4gIEV4dHJhY3RQbHVnaW5TZXR0aW5nc1Byb3BlcnR5VmFsdWVzLFxuICBFeHRyYWN0UGx1Z2luU2V0dGluZ3NXcmFwcGVyLFxuICBFeHRyYWN0UmVhZG9ubHlQbHVnaW5TZXR0aW5nc1dyYXBwZXIsXG4gIFBsdWdpblR5cGVzQmFzZVxufSBmcm9tICcuL1BsdWdpblR5cGVzQmFzZS50cyc7XG5cbmltcG9ydCB7IEFzeW5jRXZlbnRzIH0gZnJvbSAnLi4vLi4vQXN5bmNFdmVudHMudHMnO1xuaW1wb3J0IHsgZ2V0TGliRGVidWdnZXIgfSBmcm9tICcuLi8uLi9EZWJ1Zy50cyc7XG5pbXBvcnQge1xuICBub29wLFxuICBub29wQXN5bmNcbn0gZnJvbSAnLi4vLi4vRnVuY3Rpb24udHMnO1xuaW1wb3J0IHtcbiAgZGVlcEVxdWFsLFxuICBnZXRBbGxLZXlzXG59IGZyb20gJy4uLy4uL09iamVjdFV0aWxzLnRzJztcbmltcG9ydCB7IERhdGVUcmFuc2Zvcm1lciB9IGZyb20gJy4uLy4uL1RyYW5zZm9ybWVycy9EYXRlVHJhbnNmb3JtZXIudHMnO1xuaW1wb3J0IHsgRHVyYXRpb25UcmFuc2Zvcm1lciB9IGZyb20gJy4uLy4uL1RyYW5zZm9ybWVycy9EdXJhdGlvblRyYW5zZm9ybWVyLnRzJztcbmltcG9ydCB7IEdyb3VwVHJhbnNmb3JtZXIgfSBmcm9tICcuLi8uLi9UcmFuc2Zvcm1lcnMvR3JvdXBUcmFuc2Zvcm1lci50cyc7XG5pbXBvcnQgeyBNYXBUcmFuc2Zvcm1lciB9IGZyb20gJy4uLy4uL1RyYW5zZm9ybWVycy9NYXBUcmFuc2Zvcm1lci50cyc7XG5pbXBvcnQgeyBTZXRUcmFuc2Zvcm1lciB9IGZyb20gJy4uLy4uL1RyYW5zZm9ybWVycy9TZXRUcmFuc2Zvcm1lci50cyc7XG5pbXBvcnQgeyBTa2lwUHJpdmF0ZVByb3BlcnR5VHJhbnNmb3JtZXIgfSBmcm9tICcuLi8uLi9UcmFuc2Zvcm1lcnMvU2tpcFByaXZhdGVQcm9wZXJ0eVRyYW5zZm9ybWVyLnRzJztcbmltcG9ydCB7IFR3b1dheU1hcFRyYW5zZm9ybWVyIH0gZnJvbSAnLi4vLi4vVHJhbnNmb3JtZXJzL1R3b1dheU1hcFRyYW5zZm9ybWVyLnRzJztcblxuY29uc3QgZGVmYXVsdFRyYW5zZm9ybWVyID0gbmV3IEdyb3VwVHJhbnNmb3JtZXIoW1xuICBuZXcgU2tpcFByaXZhdGVQcm9wZXJ0eVRyYW5zZm9ybWVyKCksXG4gIG5ldyBEYXRlVHJhbnNmb3JtZXIoKSxcbiAgbmV3IER1cmF0aW9uVHJhbnNmb3JtZXIoKSxcbiAgbmV3IE1hcFRyYW5zZm9ybWVyKCksXG4gIG5ldyBTZXRUcmFuc2Zvcm1lcigpLFxuICBuZXcgVHdvV2F5TWFwVHJhbnNmb3JtZXIoKVxuXSk7XG5cbnR5cGUgVmFsaWRhdGlvblJlc3VsdDxQbHVnaW5TZXR0aW5ncyBleHRlbmRzIG9iamVjdD4gPSBQYXJ0aWFsPFJlY29yZDxTdHJpbmdLZXlzPFBsdWdpblNldHRpbmdzPiwgc3RyaW5nPj47XG5cbnR5cGUgVmFsaWRhdG9yPFBsdWdpblNldHRpbmdzIGV4dGVuZHMgb2JqZWN0LCBQcm9wZXJ0eU5hbWUgZXh0ZW5kcyBTdHJpbmdLZXlzPFBsdWdpblNldHRpbmdzPiA9IFN0cmluZ0tleXM8UGx1Z2luU2V0dGluZ3M+PiA9IChcbiAgdmFsdWU6IFBsdWdpblNldHRpbmdzW1Byb3BlcnR5TmFtZV0sXG4gIHNldHRpbmdzOiBQbHVnaW5TZXR0aW5nc1xuKSA9PiBQcm9taXNhYmxlPE1heWJlUmV0dXJuPHN0cmluZz4+O1xuXG4vKipcbiAqIEJhc2UgY2xhc3MgZm9yIG1hbmFnaW5nIHBsdWdpbiBzZXR0aW5ncy5cbiAqXG4gKiBAdHlwZVBhcmFtIFBsdWdpblR5cGVzIC0gUGx1Z2luLXNwZWNpZmljIHR5cGVzLlxuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgUGx1Z2luU2V0dGluZ3NNYW5hZ2VyQmFzZTxQbHVnaW5UeXBlcyBleHRlbmRzIFBsdWdpblR5cGVzQmFzZT4gZXh0ZW5kcyBBc3luY0V2ZW50cyB7XG4gIC8qKlxuICAgKiBHZXRzIHRoZSBhcHAuXG4gICAqXG4gICAqIEByZXR1cm5zIFRoZSBhcHAuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgYXBwOiBBcHA7XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIHJlYWRvbmx5IGRlZmF1bHQgc2V0dGluZ3MuXG4gICAqXG4gICAqIEByZXR1cm5zIFRoZSBkZWZhdWx0IHNldHRpbmdzIChhcyBhIHJlYWRvbmx5IG9iamVjdCkuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgZGVmYXVsdFNldHRpbmdzOiBSZWFkb25seURlZXA8RXh0cmFjdFBsdWdpblNldHRpbmdzPFBsdWdpblR5cGVzPj47XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIGN1cnJlbnQgc2V0dGluZ3Mgd3JhcHBlci5cbiAgICpcbiAgICogQHJldHVybnMgVGhlIGN1cnJlbnQgc2V0dGluZ3Mgd3JhcHBlci5cbiAgICovXG4gIHB1YmxpYyBnZXQgc2V0dGluZ3NXcmFwcGVyKCk6IEV4dHJhY3RSZWFkb25seVBsdWdpblNldHRpbmdzV3JhcHBlcjxQbHVnaW5UeXBlcz4ge1xuICAgIHJldHVybiB0aGlzLmN1cnJlbnRTZXR0aW5nc1dyYXBwZXIgYXMgRXh0cmFjdFJlYWRvbmx5UGx1Z2luU2V0dGluZ3NXcmFwcGVyPFBsdWdpblR5cGVzPjtcbiAgfVxuXG4gIHByaXZhdGUgY3VycmVudFNldHRpbmdzV3JhcHBlcjogRXh0cmFjdFBsdWdpblNldHRpbmdzV3JhcHBlcjxQbHVnaW5UeXBlcz47XG4gIHByaXZhdGUgbGFzdFNhdmVkU2V0dGluZ3NXcmFwcGVyOiBFeHRyYWN0UGx1Z2luU2V0dGluZ3NXcmFwcGVyPFBsdWdpblR5cGVzPjtcbiAgcHJpdmF0ZSByZWFkb25seSBsZWdhY3lTZXR0aW5nc0NvbnZlcnRlcnM6ICgocmVjb3JkOiBHZW5lcmljT2JqZWN0KSA9PiB2b2lkKVtdID0gW107XG4gIHByaXZhdGUgcmVhZG9ubHkgcHJvcGVydHlOYW1lczogRXh0cmFjdFBsdWdpblNldHRpbmdzUHJvcGVydHlOYW1lczxQbHVnaW5UeXBlcz5bXTtcbiAgcHJpdmF0ZSByZWFkb25seSB2YWxpZGF0b3JzID0gbmV3IE1hcDxFeHRyYWN0UGx1Z2luU2V0dGluZ3NQcm9wZXJ0eU5hbWVzPFBsdWdpblR5cGVzPiwgVmFsaWRhdG9yPEV4dHJhY3RQbHVnaW5TZXR0aW5nczxQbHVnaW5UeXBlcz4+PigpO1xuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgbmV3IHBsdWdpbiBzZXR0aW5ncyBtYW5hZ2VyLlxuICAgKlxuICAgKiBAcGFyYW0gcGx1Z2luIC0gVGhlIHBsdWdpbi5cbiAgICovXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihwdWJsaWMgcmVhZG9ubHkgcGx1Z2luOiBFeHRyYWN0UGx1Z2luPFBsdWdpblR5cGVzPikge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5hcHAgPSBwbHVnaW4uYXBwO1xuICAgIHRoaXMuZGVmYXVsdFNldHRpbmdzID0gdGhpcy5jcmVhdGVEZWZhdWx0U2V0dGluZ3MoKSBhcyBSZWFkb25seURlZXA8RXh0cmFjdFBsdWdpblNldHRpbmdzPFBsdWdpblR5cGVzPj47XG4gICAgdGhpcy5jdXJyZW50U2V0dGluZ3NXcmFwcGVyID0gdGhpcy5jcmVhdGVEZWZhdWx0U2V0dGluZ3NXcmFwcGVyKCk7XG4gICAgdGhpcy5sYXN0U2F2ZWRTZXR0aW5nc1dyYXBwZXIgPSB0aGlzLmNyZWF0ZURlZmF1bHRTZXR0aW5nc1dyYXBwZXIoKTtcbiAgICB0aGlzLnByb3BlcnR5TmFtZXMgPSBnZXRBbGxLZXlzKHRoaXMuY3VycmVudFNldHRpbmdzV3JhcHBlci5zZXR0aW5ncyk7XG4gICAgdGhpcy5yZWdpc3RlclZhbGlkYXRvcnMoKTtcbiAgICB0aGlzLnJlZ2lzdGVyTGVnYWN5U2V0dGluZ3NDb252ZXJ0ZXJzKCk7XG4gIH1cblxuICAvKipcbiAgICogRWRpdHMgdGhlIHBsdWdpbiBzZXR0aW5ncyBhbmQgc2F2ZXMgdGhlbS5cbiAgICpcbiAgICogQHBhcmFtIHNldHRpbmdzRWRpdG9yIC0gVGhlIGVkaXRvci5cbiAgICogQHBhcmFtIGNvbnRleHQgLSBUaGUgY29udGV4dC5cbiAgICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB3aGVuIHRoZSBzZXR0aW5ncyBhcmUgc2F2ZWQuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgZWRpdEFuZFNhdmUoc2V0dGluZ3NFZGl0b3I6IChzZXR0aW5nczogRXh0cmFjdFBsdWdpblNldHRpbmdzPFBsdWdpblR5cGVzPikgPT4gUHJvbWlzYWJsZTx2b2lkPiwgY29udGV4dD86IHVua25vd24pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCB0aGlzLmVkaXQoc2V0dGluZ3NFZGl0b3IpO1xuICAgIGF3YWl0IHRoaXMuc2F2ZVRvRmlsZShjb250ZXh0KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFbnN1cmVzIHRoZSBzZXR0aW5ncyBhcmUgc2FmZS5cbiAgICpcbiAgICogSXQgcnVucyB2YWxpZGF0aW9uIGZvciBlYWNoIHByb3BlcnR5IGFuZCBzZXRzIHRoZSBkZWZhdWx0IHZhbHVlIGlmIHRoZSB2YWxpZGF0aW9uIGZhaWxzLlxuICAgKlxuICAgKiBAcGFyYW0gc2V0dGluZ3MgLSBUaGUgc2V0dGluZ3MuXG4gICAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgc2V0dGluZ3MgYXJlIHNhZmUuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgZW5zdXJlU2FmZShzZXR0aW5nczogRXh0cmFjdFBsdWdpblNldHRpbmdzPFBsdWdpblR5cGVzPik6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHZhbGlkYXRpb25SZXN1bHQgPSBhd2FpdCB0aGlzLnZhbGlkYXRlKHNldHRpbmdzKTtcbiAgICBmb3IgKGNvbnN0IHByb3BlcnR5TmFtZSBvZiB0aGlzLnByb3BlcnR5TmFtZXMpIHtcbiAgICAgIGlmICh2YWxpZGF0aW9uUmVzdWx0W3Byb3BlcnR5TmFtZV0pIHtcbiAgICAgICAgc2V0dGluZ3NbcHJvcGVydHlOYW1lXSA9IHRoaXMuZGVmYXVsdFNldHRpbmdzW3Byb3BlcnR5TmFtZV07XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgYSBzYWZlIGNvcHkgb2YgdGhlIHNldHRpbmdzLlxuICAgKlxuICAgKiBAcGFyYW0gc2V0dGluZ3MgLSBUaGUgc2V0dGluZ3MuXG4gICAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgdG8gdGhlIHNhZmUgY29weSBvZiB0aGUgc2V0dGluZ3MuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgZ2V0U2FmZUNvcHkoc2V0dGluZ3M6IEV4dHJhY3RQbHVnaW5TZXR0aW5nczxQbHVnaW5UeXBlcz4pOiBQcm9taXNlPEV4dHJhY3RQbHVnaW5TZXR0aW5nczxQbHVnaW5UeXBlcz4+IHtcbiAgICBjb25zdCBzYWZlU2V0dGluZ3MgPSBhd2FpdCB0aGlzLmNsb25lU2V0dGluZ3Moc2V0dGluZ3MpO1xuICAgIGF3YWl0IHRoaXMuZW5zdXJlU2FmZShzYWZlU2V0dGluZ3MpO1xuICAgIHJldHVybiBzYWZlU2V0dGluZ3M7XG4gIH1cblxuICAvKipcbiAgICogTG9hZHMgdGhlIHBsdWdpbiBzZXR0aW5ncyBmcm9tIHRoZSBmaWxlLlxuICAgKlxuICAgKiBAcGFyYW0gaXNJbml0aWFsTG9hZCAtIFdoZXRoZXIgdGhlIHNldHRpbmdzIGFyZSBiZWluZyBsb2FkZWQgZm9yIHRoZSBmaXJzdCB0aW1lLlxuICAgKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIHNldHRpbmdzIGFyZSBsb2FkZWQuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgbG9hZEZyb21GaWxlKGlzSW5pdGlhbExvYWQ6IGJvb2xlYW4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBkYXRhID0gYXdhaXQgdGhpcy5wbHVnaW4ubG9hZERhdGEoKSBhcyB1bmtub3duO1xuICAgIHRoaXMubGFzdFNhdmVkU2V0dGluZ3NXcmFwcGVyID0gdGhpcy5jcmVhdGVEZWZhdWx0U2V0dGluZ3NXcmFwcGVyKCk7XG4gICAgdGhpcy5jdXJyZW50U2V0dGluZ3NXcmFwcGVyID0gdGhpcy5jcmVhdGVEZWZhdWx0U2V0dGluZ3NXcmFwcGVyKCk7XG5cbiAgICB0cnkge1xuICAgICAgaWYgKGRhdGEgPT09IHVuZGVmaW5lZCB8fCBkYXRhID09PSBudWxsKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYgKHR5cGVvZiBkYXRhICE9PSAnb2JqZWN0Jykge1xuICAgICAgICBjb25zb2xlLmVycm9yKGBJbnZhbGlkIHNldHRpbmdzIGZyb20gZGF0YS5qc29uLiBFeHBlY3RlZCBPYmplY3QsIGdvdDogJHt0eXBlb2YgZGF0YX1gKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBjb25zdCByYXdSZWNvcmQgPSBkYXRhIGFzIEdlbmVyaWNPYmplY3Q7XG4gICAgICBjb25zdCBwYXJzZWRTZXR0aW5ncyA9IGF3YWl0IHRoaXMucmF3UmVjb3JkVG9TZXR0aW5ncyhyYXdSZWNvcmQpO1xuICAgICAgY29uc3QgdmFsaWRhdGlvblJlc3VsdCA9IGF3YWl0IHRoaXMudmFsaWRhdGUocGFyc2VkU2V0dGluZ3MpO1xuXG4gICAgICBmb3IgKGNvbnN0IHByb3BlcnR5TmFtZSBvZiB0aGlzLnByb3BlcnR5TmFtZXMpIHtcbiAgICAgICAgdGhpcy5zZXRQcm9wZXJ0eUltcGwocHJvcGVydHlOYW1lLCBwYXJzZWRTZXR0aW5nc1twcm9wZXJ0eU5hbWVdLCB2YWxpZGF0aW9uUmVzdWx0W3Byb3BlcnR5TmFtZV0pO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmxhc3RTYXZlZFNldHRpbmdzV3JhcHBlciA9IGF3YWl0IHRoaXMuY2xvbmVTZXR0aW5nc1dyYXBwZXIodGhpcy5jdXJyZW50U2V0dGluZ3NXcmFwcGVyKTtcblxuICAgICAgY29uc3QgbmV3UmVjb3JkID0gYXdhaXQgdGhpcy5zZXR0aW5nc1RvUmF3UmVjb3JkKHRoaXMuY3VycmVudFNldHRpbmdzV3JhcHBlci5zZXR0aW5ncyk7XG5cbiAgICAgIGlmICghZGVlcEVxdWFsKG5ld1JlY29yZCwgZGF0YSkpIHtcbiAgICAgICAgYXdhaXQgdGhpcy5zYXZlVG9GaWxlSW1wbCgpO1xuICAgICAgfVxuICAgIH0gZmluYWxseSB7XG4gICAgICBhd2FpdCB0aGlzLnRyaWdnZXJBc3luYygnbG9hZFNldHRpbmdzJywgdGhpcy5jdXJyZW50U2V0dGluZ3NXcmFwcGVyLCBpc0luaXRpYWxMb2FkKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU3Vic2NyaWJlcyB0byB0aGUgYGxvYWRTZXR0aW5nc2AgZXZlbnQuXG4gICAqXG4gICAqIEBwYXJhbSBuYW1lIC0gQWx3YXlzIGBsb2FkU2V0dGluZ3NgLlxuICAgKiBAcGFyYW0gY2FsbGJhY2sgLSBUaGUgY2FsbGJhY2sgdG8gY2FsbCB3aGVuIHRoZSBldmVudCBpcyB0cmlnZ2VyZWQuXG4gICAqIEBwYXJhbSB0aGlzQXJnIC0gVGhlIGNvbnRleHQgcGFzc2VkIGFzIGB0aGlzYCB0byB0aGUgYGNhbGxiYWNrYC5cbiAgICogQHJldHVybnMgQSByZWZlcmVuY2UgdG8gdGhlIGV2ZW50IGxpc3RlbmVyLlxuICAgKi9cbiAgcHVibGljIG92ZXJyaWRlIG9uKFxuICAgIG5hbWU6ICdsb2FkU2V0dGluZ3MnLFxuICAgIGNhbGxiYWNrOiAoXG4gICAgICBsb2FkZWRTZXR0aW5nczogRXh0cmFjdFJlYWRvbmx5UGx1Z2luU2V0dGluZ3NXcmFwcGVyPFBsdWdpblR5cGVzPixcbiAgICAgIGlzSW5pdGlhbExvYWQ6IGJvb2xlYW5cbiAgICApID0+IFByb21pc2FibGU8dm9pZD4sXG4gICAgdGhpc0FyZz86IHVua25vd25cbiAgKTogQXN5bmNFdmVudFJlZjtcbiAgLyoqXG4gICAqIFN1YnNjcmliZXMgdG8gdGhlIGBzYXZlU2V0dGluZ3NgIGV2ZW50LlxuICAgKlxuICAgKiBAcGFyYW0gbmFtZSAtIEFsd2F5cyBgc2F2ZVNldHRpbmdzYC5cbiAgICogQHBhcmFtIGNhbGxiYWNrIC0gVGhlIGNhbGxiYWNrIHRvIGNhbGwgd2hlbiB0aGUgZXZlbnQgaXMgdHJpZ2dlcmVkLlxuICAgKiBAcGFyYW0gdGhpc0FyZyAtIFRoZSBjb250ZXh0IHBhc3NlZCBhcyBgdGhpc2AgdG8gdGhlIGBjYWxsYmFja2AuXG4gICAqIEByZXR1cm5zIEEgcmVmZXJlbmNlIHRvIHRoZSBldmVudCBsaXN0ZW5lci5cbiAgICovXG4gIHB1YmxpYyBvdmVycmlkZSBvbihcbiAgICBuYW1lOiAnc2F2ZVNldHRpbmdzJyxcbiAgICBjYWxsYmFjazogKFxuICAgICAgbmV3U2V0dGluZ3M6IEV4dHJhY3RSZWFkb25seVBsdWdpblNldHRpbmdzV3JhcHBlcjxQbHVnaW5UeXBlcz4sXG4gICAgICBvbGRTZXR0aW5nczogRXh0cmFjdFJlYWRvbmx5UGx1Z2luU2V0dGluZ3NXcmFwcGVyPFBsdWdpblR5cGVzPixcbiAgICAgIGNvbnRleHQ6IHVua25vd25cbiAgICApID0+IFByb21pc2FibGU8dm9pZD4sXG4gICAgdGhpc0FyZz86IHVua25vd25cbiAgKTogQXN5bmNFdmVudFJlZjtcbiAgLyoqXG4gICAqIFN1YnNjcmliZXMgdG8gYW4gZXZlbnQuXG4gICAqXG4gICAqIEBwYXJhbSBuYW1lIC0gVGhlIG5hbWUgb2YgdGhlIGV2ZW50LlxuICAgKiBAcGFyYW0gY2FsbGJhY2sgLSBUaGUgY2FsbGJhY2sgdG8gY2FsbCB3aGVuIHRoZSBldmVudCBpcyB0cmlnZ2VyZWQuXG4gICAqIEBwYXJhbSB0aGlzQXJnIC0gVGhlIGNvbnRleHQgcGFzc2VkIGFzIGB0aGlzYCB0byB0aGUgYGNhbGxiYWNrYC5cbiAgICogQHJldHVybnMgQSByZWZlcmVuY2UgdG8gdGhlIGV2ZW50IGxpc3RlbmVyLlxuICAgKi9cbiAgcHVibGljIG92ZXJyaWRlIG9uPEFyZ3MgZXh0ZW5kcyB1bmtub3duW10+KFxuICAgIG5hbWU6IHN0cmluZyxcbiAgICBjYWxsYmFjazogKC4uLmFyZ3M6IEFyZ3MpID0+IFByb21pc2FibGU8dm9pZD4sXG4gICAgdGhpc0FyZz86IHVua25vd25cbiAgKTogQXN5bmNFdmVudFJlZiB7XG4gICAgcmV0dXJuIHN1cGVyLm9uKG5hbWUsIGNhbGxiYWNrLCB0aGlzQXJnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXZhbGlkYXRlcyB0aGUgc2V0dGluZ3MuXG4gICAqXG4gICAqIEByZXR1cm5zIFRoZSB2YWxpZGF0aW9uIG1lc3NhZ2VzLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIHJldmFsaWRhdGUoKTogUHJvbWlzZTxSZWNvcmQ8RXh0cmFjdFBsdWdpblNldHRpbmdzUHJvcGVydHlOYW1lczxQbHVnaW5UeXBlcz4sIHN0cmluZz4+IHtcbiAgICBhd2FpdCB0aGlzLmVkaXQobm9vcCk7XG4gICAgcmV0dXJuIHRoaXMuY3VycmVudFNldHRpbmdzV3JhcHBlci52YWxpZGF0aW9uTWVzc2FnZXM7XG4gIH1cblxuICAvKipcbiAgICogU2F2ZXMgdGhlIG5ldyBwbHVnaW4gc2V0dGluZ3MuXG4gICAqXG4gICAqIEBwYXJhbSBjb250ZXh0IC0gVGhlIGNvbnRleHQgb2YgdGhlIHNhdmUgdG8gZmlsZSBvcGVyYXRpb24uXG4gICAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgc2V0dGluZ3MgYXJlIHNhdmVkLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIHNhdmVUb0ZpbGUoY29udGV4dD86IHVua25vd24pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoZGVlcEVxdWFsKHRoaXMubGFzdFNhdmVkU2V0dGluZ3NXcmFwcGVyLnNldHRpbmdzLCB0aGlzLmN1cnJlbnRTZXR0aW5nc1dyYXBwZXIuc2V0dGluZ3MpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgYXdhaXQgdGhpcy5zYXZlVG9GaWxlSW1wbCgpO1xuICAgIGF3YWl0IHRoaXMudHJpZ2dlckFzeW5jKCdzYXZlU2V0dGluZ3MnLCB0aGlzLmN1cnJlbnRTZXR0aW5nc1dyYXBwZXIsIHRoaXMubGFzdFNhdmVkU2V0dGluZ3NXcmFwcGVyLCBjb250ZXh0KTtcbiAgICB0aGlzLmxhc3RTYXZlZFNldHRpbmdzV3JhcHBlciA9IGF3YWl0IHRoaXMuY2xvbmVTZXR0aW5nc1dyYXBwZXIodGhpcy5jdXJyZW50U2V0dGluZ3NXcmFwcGVyKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSB2YWx1ZSBvZiBhIHByb3BlcnR5LlxuICAgKlxuICAgKiBAdHlwZVBhcmFtIFByb3BlcnR5TmFtZSAtIFRoZSBuYW1lIG9mIHRoZSBwcm9wZXJ0eS5cbiAgICogQHBhcmFtIHByb3BlcnR5TmFtZSAtIFRoZSBuYW1lIG9mIHRoZSBwcm9wZXJ0eS5cbiAgICogQHBhcmFtIHZhbHVlIC0gVGhlIHZhbHVlIHRvIHNldC5cbiAgICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB0byB0aGUgdmFsaWRhdGlvbiBtZXNzYWdlLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIHNldFByb3BlcnR5PFByb3BlcnR5TmFtZSBleHRlbmRzIEV4dHJhY3RQbHVnaW5TZXR0aW5nc1Byb3BlcnR5TmFtZXM8UGx1Z2luVHlwZXM+PihcbiAgICBwcm9wZXJ0eU5hbWU6IFByb3BlcnR5TmFtZSxcbiAgICB2YWx1ZTogRXh0cmFjdFBsdWdpblNldHRpbmdzPFBsdWdpblR5cGVzPltQcm9wZXJ0eU5hbWVdXG4gICk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgYXdhaXQgdGhpcy5lZGl0KChzZXR0aW5ncykgPT4ge1xuICAgICAgc2V0dGluZ3NbcHJvcGVydHlOYW1lXSA9IHZhbHVlO1xuICAgIH0pO1xuICAgIHJldHVybiB0aGlzLmN1cnJlbnRTZXR0aW5nc1dyYXBwZXIudmFsaWRhdGlvbk1lc3NhZ2VzW3Byb3BlcnR5TmFtZV07XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdGVzIHRoZSBzZXR0aW5ncy5cbiAgICpcbiAgICogQHBhcmFtIHNldHRpbmdzIC0gVGhlIHNldHRpbmdzLlxuICAgKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHRvIHRoZSB2YWxpZGF0aW9uIHJlc3VsdC5cbiAgICovXG4gIHB1YmxpYyBhc3luYyB2YWxpZGF0ZShzZXR0aW5nczogRXh0cmFjdFBsdWdpblNldHRpbmdzPFBsdWdpblR5cGVzPik6IFByb21pc2U8VmFsaWRhdGlvblJlc3VsdDxFeHRyYWN0UGx1Z2luU2V0dGluZ3M8UGx1Z2luVHlwZXM+Pj4ge1xuICAgIGNvbnN0IHJlc3VsdDogVmFsaWRhdGlvblJlc3VsdDxFeHRyYWN0UGx1Z2luU2V0dGluZ3M8UGx1Z2luVHlwZXM+PiA9IHt9O1xuICAgIGZvciAoY29uc3QgW3Byb3BlcnR5TmFtZSwgdmFsaWRhdG9yXSBvZiB0aGlzLnZhbGlkYXRvcnMuZW50cmllcygpKSB7XG4gICAgICBjb25zdCB2YWxpZGF0aW9uTWVzc2FnZSA9IGF3YWl0IHZhbGlkYXRvcihzZXR0aW5nc1twcm9wZXJ0eU5hbWVdLCBzZXR0aW5ncyk7XG4gICAgICBpZiAodmFsaWRhdGlvbk1lc3NhZ2UpIHtcbiAgICAgICAgcmVzdWx0W3Byb3BlcnR5TmFtZV0gPSB2YWxpZGF0aW9uTWVzc2FnZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgcHJvdGVjdGVkIGFic3RyYWN0IGNyZWF0ZURlZmF1bHRTZXR0aW5ncygpOiBFeHRyYWN0UGx1Z2luU2V0dGluZ3M8UGx1Z2luVHlwZXM+O1xuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSB0cmFuc2Zvcm1lci5cbiAgICpcbiAgICogQHJldHVybnMgVGhlIHRyYW5zZm9ybWVyLlxuICAgKi9cbiAgcHJvdGVjdGVkIGdldFRyYW5zZm9ybWVyKCk6IFRyYW5zZm9ybWVyIHtcbiAgICByZXR1cm4gZGVmYXVsdFRyYW5zZm9ybWVyO1xuICB9XG5cbiAgLyoqXG4gICAqIENhbGxlZCB3aGVuIHRoZSBwbHVnaW4gc2V0dGluZ3MgYXJlIGxvYWRlZC5cbiAgICpcbiAgICogQHBhcmFtIHJlY29yZCAtIFRoZSByZWNvcmQuXG4gICAqL1xuICBwcm90ZWN0ZWQgYXN5bmMgb25Mb2FkUmVjb3JkKHJlY29yZDogR2VuZXJpY09iamVjdCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGZvciAoY29uc3QgY29udmVydGVyIG9mIHRoaXMubGVnYWN5U2V0dGluZ3NDb252ZXJ0ZXJzKSB7XG4gICAgICBjb252ZXJ0ZXIocmVjb3JkKTtcbiAgICB9XG4gICAgYXdhaXQgUHJvbWlzZS5yZXNvbHZlKCk7XG4gIH1cblxuICAvKipcbiAgICogQ2FsbGVkIHdoZW4gdGhlIHBsdWdpbiBzZXR0aW5ncyBhcmUgc2F2aW5nLlxuICAgKlxuICAgKiBAcGFyYW0gX3JlY29yZCAtIFRoZSByZWNvcmQuXG4gICAqL1xuICBwcm90ZWN0ZWQgYXN5bmMgb25TYXZpbmdSZWNvcmQoX3JlY29yZDogR2VuZXJpY09iamVjdCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IG5vb3BBc3luYygpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlZ2lzdGVycyBhIGxlZ2FjeSBzZXR0aW5ncyBjb252ZXJ0ZXIuXG4gICAqXG4gICAqIEB0eXBlUGFyYW0gTGVnYWN5U2V0dGluZ3MgLSBUaGUgbGVnYWN5IHNldHRpbmdzIGNsYXNzLlxuICAgKiBAcGFyYW0gbGVnYWN5U2V0dGluZ3NDbGFzcyAtIFRoZSBsZWdhY3kgc2V0dGluZ3MgY2xhc3MuXG4gICAqIEBwYXJhbSBjb252ZXJ0ZXIgLSBUaGUgY29udmVydGVyLlxuICAgKi9cbiAgcHJvdGVjdGVkIHJlZ2lzdGVyTGVnYWN5U2V0dGluZ3NDb252ZXJ0ZXI8TGVnYWN5U2V0dGluZ3MgZXh0ZW5kcyBvYmplY3Q+KFxuICAgIGxlZ2FjeVNldHRpbmdzQ2xhc3M6IG5ldyAoKSA9PiBMZWdhY3lTZXR0aW5ncyxcbiAgICBjb252ZXJ0ZXI6IChsZWdhY3lTZXR0aW5nczogUGFydGlhbDxFeHRyYWN0UGx1Z2luU2V0dGluZ3M8UGx1Z2luVHlwZXM+PiAmIFBhcnRpYWw8TGVnYWN5U2V0dGluZ3M+KSA9PiB2b2lkXG4gICk6IHZvaWQge1xuICAgIGNvbnN0IHRoYXQgPSB0aGlzO1xuICAgIHRoaXMubGVnYWN5U2V0dGluZ3NDb252ZXJ0ZXJzLnB1c2gobGVnYWN5U2V0dGluZ3NDb252ZXJ0ZXIpO1xuXG4gICAgZnVuY3Rpb24gbGVnYWN5U2V0dGluZ3NDb252ZXJ0ZXIocmVjb3JkOiBHZW5lcmljT2JqZWN0KTogdm9pZCB7XG4gICAgICBjb25zdCBsZWdhY3lTZXR0aW5nc0tleXMgPSBuZXcgU2V0PHN0cmluZz4oT2JqZWN0LmtleXMobmV3IGxlZ2FjeVNldHRpbmdzQ2xhc3MoKSkpO1xuICAgICAgY29uc3QgcGx1Z2luU2V0dGluZ0tleXMgPSBuZXcgU2V0PHN0cmluZz4odGhhdC5wcm9wZXJ0eU5hbWVzKTtcbiAgICAgIGNvbnN0IGxlZ2FjeVNldHRpbmdzID0gcmVjb3JkIGFzIFBhcnRpYWw8RXh0cmFjdFBsdWdpblNldHRpbmdzPFBsdWdpblR5cGVzPj4gJiBQYXJ0aWFsPExlZ2FjeVNldHRpbmdzPjtcbiAgICAgIGNvbnZlcnRlcihsZWdhY3lTZXR0aW5ncyk7XG4gICAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhsZWdhY3lTZXR0aW5ncykpIHtcbiAgICAgICAgaWYgKHBsdWdpblNldHRpbmdLZXlzLmhhcyhrZXkpKSB7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIWxlZ2FjeVNldHRpbmdzS2V5cy5oYXMoa2V5KSkge1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1keW5hbWljLWRlbGV0ZSAtLSBXZSBoYXZlIG5vIG90aGVyIHdheSB0byBkZWxldGUgdGhlIHByb3BlcnR5LlxuICAgICAgICBkZWxldGUgcmVjb3JkW2tleV07XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJlZ2lzdGVycyB0aGUgbGVnYWN5IHNldHRpbmdzIGNvbnZlcnRlcnMuXG4gICAqXG4gICAqIFRoaXMgbWV0aG9kIGNhbiBiZSBvdmVycmlkZGVuIGJ5IHN1YmNsYXNzZXMgdG8gcmVnaXN0ZXIgbGVnYWN5IHNldHRpbmdzIGNvbnZlcnRlcnMuXG4gICAqL1xuICBwcm90ZWN0ZWQgcmVnaXN0ZXJMZWdhY3lTZXR0aW5nc0NvbnZlcnRlcnMoKTogdm9pZCB7XG4gICAgbm9vcCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlZ2lzdGVycyBhIHZhbGlkYXRvciBmb3IgYSBwcm9wZXJ0eS5cbiAgICpcbiAgICogQHBhcmFtIHByb3BlcnR5TmFtZSAtIFRoZSBuYW1lIG9mIHRoZSBwcm9wZXJ0eS5cbiAgICogQHBhcmFtIHZhbGlkYXRvciAtIFRoZSB2YWxpZGF0b3IuXG4gICAqL1xuICBwcm90ZWN0ZWQgcmVnaXN0ZXJWYWxpZGF0b3I8UHJvcGVydHlOYW1lIGV4dGVuZHMgRXh0cmFjdFBsdWdpblNldHRpbmdzUHJvcGVydHlOYW1lczxQbHVnaW5UeXBlcz4+KFxuICAgIHByb3BlcnR5TmFtZTogUHJvcGVydHlOYW1lLFxuICAgIHZhbGlkYXRvcjogVmFsaWRhdG9yPEV4dHJhY3RQbHVnaW5TZXR0aW5nczxQbHVnaW5UeXBlcz4sIFByb3BlcnR5TmFtZT5cbiAgKTogdm9pZCB7XG4gICAgdGhpcy52YWxpZGF0b3JzLnNldChwcm9wZXJ0eU5hbWUsIHZhbGlkYXRvciBhcyBWYWxpZGF0b3I8RXh0cmFjdFBsdWdpblNldHRpbmdzPFBsdWdpblR5cGVzPj4pO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlZ2lzdGVycyB0aGUgdmFsaWRhdG9ycy5cbiAgICpcbiAgICogVGhpcyBtZXRob2QgY2FuIGJlIG92ZXJyaWRkZW4gYnkgc3ViY2xhc3NlcyB0byByZWdpc3RlciB2YWxpZGF0b3JzIGZvciBwcm9wZXJ0aWVzLlxuICAgKi9cbiAgcHJvdGVjdGVkIHJlZ2lzdGVyVmFsaWRhdG9ycygpOiB2b2lkIHtcbiAgICBub29wKCk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGNsb25lU2V0dGluZ3Moc2V0dGluZ3M6IEV4dHJhY3RQbHVnaW5TZXR0aW5nczxQbHVnaW5UeXBlcz4pOiBQcm9taXNlPEV4dHJhY3RQbHVnaW5TZXR0aW5nczxQbHVnaW5UeXBlcz4+IHtcbiAgICBjb25zdCByZWNvcmQgPSBhd2FpdCB0aGlzLnNldHRpbmdzVG9SYXdSZWNvcmQoc2V0dGluZ3MpO1xuICAgIGNvbnN0IGpzb24gPSBKU09OLnN0cmluZ2lmeShyZWNvcmQpO1xuICAgIGNvbnN0IGNsb25lUmVjb3JkID0gSlNPTi5wYXJzZShqc29uKSBhcyBHZW5lcmljT2JqZWN0O1xuICAgIHJldHVybiBhd2FpdCB0aGlzLnJhd1JlY29yZFRvU2V0dGluZ3MoY2xvbmVSZWNvcmQpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBjbG9uZVNldHRpbmdzV3JhcHBlcihcbiAgICBzZXR0aW5nc1dyYXBwZXI6IFBsdWdpblNldHRpbmdzV3JhcHBlcjxFeHRyYWN0UGx1Z2luU2V0dGluZ3M8UGx1Z2luVHlwZXM+PlxuICApOiBQcm9taXNlPFBsdWdpblNldHRpbmdzV3JhcHBlcjxFeHRyYWN0UGx1Z2luU2V0dGluZ3M8UGx1Z2luVHlwZXM+Pj4ge1xuICAgIHJldHVybiB7XG4gICAgICBzYWZlU2V0dGluZ3M6IGF3YWl0IHRoaXMuY2xvbmVTZXR0aW5ncyhzZXR0aW5nc1dyYXBwZXIuc2FmZVNldHRpbmdzKSxcbiAgICAgIHNldHRpbmdzOiBhd2FpdCB0aGlzLmNsb25lU2V0dGluZ3Moc2V0dGluZ3NXcmFwcGVyLnNldHRpbmdzKSxcbiAgICAgIHZhbGlkYXRpb25NZXNzYWdlczogeyAuLi5zZXR0aW5nc1dyYXBwZXIudmFsaWRhdGlvbk1lc3NhZ2VzIH1cbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVEZWZhdWx0U2V0dGluZ3NXcmFwcGVyKCk6IFBsdWdpblNldHRpbmdzV3JhcHBlcjxFeHRyYWN0UGx1Z2luU2V0dGluZ3M8UGx1Z2luVHlwZXM+PiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHNhZmVTZXR0aW5nczogdGhpcy5jcmVhdGVEZWZhdWx0U2V0dGluZ3MoKSxcbiAgICAgIHNldHRpbmdzOiB0aGlzLmNyZWF0ZURlZmF1bHRTZXR0aW5ncygpLFxuICAgICAgdmFsaWRhdGlvbk1lc3NhZ2VzOiB7fSBhcyBSZWNvcmQ8RXh0cmFjdFBsdWdpblNldHRpbmdzUHJvcGVydHlOYW1lczxQbHVnaW5UeXBlcz4sIHN0cmluZz5cbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBlZGl0KHNldHRpbmdzRWRpdG9yOiAoc2V0dGluZ3M6IEV4dHJhY3RQbHVnaW5TZXR0aW5nczxQbHVnaW5UeXBlcz4pID0+IFByb21pc2FibGU8dm9pZD4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgc2V0dGluZ3NFZGl0b3IodGhpcy5jdXJyZW50U2V0dGluZ3NXcmFwcGVyLnNldHRpbmdzKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgY29uc3QgdmFsaWRhdGlvblJlc3VsdCA9IGF3YWl0IHRoaXMudmFsaWRhdGUodGhpcy5jdXJyZW50U2V0dGluZ3NXcmFwcGVyLnNldHRpbmdzKTtcbiAgICAgIGZvciAoY29uc3QgcHJvcGVydHlOYW1lIG9mIHRoaXMucHJvcGVydHlOYW1lcykge1xuICAgICAgICBjb25zdCB2YWxpZGF0aW9uTWVzc2FnZSA9IHZhbGlkYXRpb25SZXN1bHRbcHJvcGVydHlOYW1lXSA/PyAnJztcbiAgICAgICAgdGhpcy5jdXJyZW50U2V0dGluZ3NXcmFwcGVyLnZhbGlkYXRpb25NZXNzYWdlc1twcm9wZXJ0eU5hbWVdID0gdmFsaWRhdGlvbk1lc3NhZ2U7XG4gICAgICAgIHRoaXMuY3VycmVudFNldHRpbmdzV3JhcHBlci5zYWZlU2V0dGluZ3NbcHJvcGVydHlOYW1lXSA9IHZhbGlkYXRpb25NZXNzYWdlXG4gICAgICAgICAgPyB0aGlzLmRlZmF1bHRTZXR0aW5nc1twcm9wZXJ0eU5hbWVdXG4gICAgICAgICAgOiB0aGlzLmN1cnJlbnRTZXR0aW5nc1dyYXBwZXIuc2V0dGluZ3NbcHJvcGVydHlOYW1lXTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGlzVmFsaWRQcm9wZXJ0eU5hbWUocHJvcDogdW5rbm93bik6IHByb3AgaXMgRXh0cmFjdFBsdWdpblNldHRpbmdzUHJvcGVydHlOYW1lczxQbHVnaW5UeXBlcz4ge1xuICAgIGlmICh0eXBlb2YgcHJvcCAhPT0gJ3N0cmluZycpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICByZXR1cm4gKHRoaXMucHJvcGVydHlOYW1lcyBhcyBzdHJpbmdbXSkuaW5jbHVkZXMocHJvcCk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHJhd1JlY29yZFRvU2V0dGluZ3MocmF3UmVjb3JkOiBHZW5lcmljT2JqZWN0KTogUHJvbWlzZTxFeHRyYWN0UGx1Z2luU2V0dGluZ3M8UGx1Z2luVHlwZXM+PiB7XG4gICAgcmF3UmVjb3JkID0gdGhpcy5nZXRUcmFuc2Zvcm1lcigpLnRyYW5zZm9ybU9iamVjdFJlY3Vyc2l2ZWx5KHJhd1JlY29yZCk7XG4gICAgYXdhaXQgdGhpcy5vbkxvYWRSZWNvcmQocmF3UmVjb3JkKTtcblxuICAgIGNvbnN0IHNldHRpbmdzID0gdGhpcy5jcmVhdGVEZWZhdWx0U2V0dGluZ3MoKTtcblxuICAgIGZvciAoY29uc3QgW3Byb3BlcnR5TmFtZSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKHJhd1JlY29yZCkpIHtcbiAgICAgIGlmICghdGhpcy5pc1ZhbGlkUHJvcGVydHlOYW1lKHByb3BlcnR5TmFtZSkpIHtcbiAgICAgICAgZ2V0TGliRGVidWdnZXIoJ1BsdWdpblNldHRpbmdzTWFuYWdlckJhc2U6cmF3UmVjb3JkVG9TZXR0aW5ncycpKGBVbmtub3duIHByb3BlcnR5OiAke3Byb3BlcnR5TmFtZX1gKTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGlmICh0eXBlb2YgdmFsdWUgIT09IHR5cGVvZiB0aGlzLmRlZmF1bHRTZXR0aW5nc1twcm9wZXJ0eU5hbWVdKSB7XG4gICAgICAgIGdldExpYkRlYnVnZ2VyKCdQbHVnaW5TZXR0aW5nc01hbmFnZXJCYXNlOnJhd1JlY29yZFRvU2V0dGluZ3MnKShcbiAgICAgICAgICAnUG9zc2libGUgaW52YWxpZCB2YWx1ZSB0eXBlLiBJdCBtaWdodCBsZWFkIHRvIGFuIHVuZXhwZWN0ZWQgYmVoYXZpb3Igb2YgdGhlIHBsdWdpbi4gVGhlcmUgaXMgYWxzbyBhIGNoYW5jZSBpdCBpcyBhIGZhbHNlLW5lZ2F0aXZlIHdhcm5pbmcsIGFzIHdlIGFyZSB1bmFibGUgdG8gZGV0ZXJtaW5lIHRoZSBleGFjdCB0eXBlIG9mIHRoZSB2YWx1ZSBpbiBydW50aW1lLicsXG4gICAgICAgICAge1xuICAgICAgICAgICAgZGVmYXVsdFZhbHVlOiB0aGlzLmRlZmF1bHRTZXR0aW5nc1twcm9wZXJ0eU5hbWVdLFxuICAgICAgICAgICAgcHJvcGVydHlOYW1lLFxuICAgICAgICAgICAgdmFsdWVcbiAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIHNldHRpbmdzW3Byb3BlcnR5TmFtZV0gPSB2YWx1ZSBhcyBFeHRyYWN0UGx1Z2luU2V0dGluZ3NQcm9wZXJ0eVZhbHVlczxQbHVnaW5UeXBlcz47XG4gICAgfVxuXG4gICAgcmV0dXJuIHNldHRpbmdzO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBzYXZlVG9GaWxlSW1wbCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCB0aGlzLnBsdWdpbi5zYXZlRGF0YShhd2FpdCB0aGlzLnNldHRpbmdzVG9SYXdSZWNvcmQodGhpcy5jdXJyZW50U2V0dGluZ3NXcmFwcGVyLnNldHRpbmdzKSk7XG4gIH1cblxuICBwcml2YXRlIHNldFByb3BlcnR5SW1wbChcbiAgICBwcm9wZXJ0eU5hbWU6IEV4dHJhY3RQbHVnaW5TZXR0aW5nc1Byb3BlcnR5TmFtZXM8UGx1Z2luVHlwZXM+LFxuICAgIHZhbHVlOiBFeHRyYWN0UGx1Z2luU2V0dGluZ3NQcm9wZXJ0eVZhbHVlczxQbHVnaW5UeXBlcz4sXG4gICAgdmFsaWRhdGlvbk1lc3NhZ2U/OiBzdHJpbmdcbiAgKTogdm9pZCB7XG4gICAgdGhpcy5jdXJyZW50U2V0dGluZ3NXcmFwcGVyLnNldHRpbmdzW3Byb3BlcnR5TmFtZV0gPSB2YWx1ZTtcbiAgICB0aGlzLmN1cnJlbnRTZXR0aW5nc1dyYXBwZXIudmFsaWRhdGlvbk1lc3NhZ2VzW3Byb3BlcnR5TmFtZV0gPSB2YWxpZGF0aW9uTWVzc2FnZSA/PyAnJztcbiAgICB0aGlzLmN1cnJlbnRTZXR0aW5nc1dyYXBwZXIuc2FmZVNldHRpbmdzW3Byb3BlcnR5TmFtZV0gPSB2YWxpZGF0aW9uTWVzc2FnZSA/IHRoaXMuZGVmYXVsdFNldHRpbmdzW3Byb3BlcnR5TmFtZV0gOiB2YWx1ZTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgc2V0dGluZ3NUb1Jhd1JlY29yZChzZXR0aW5nczogRXh0cmFjdFBsdWdpblNldHRpbmdzPFBsdWdpblR5cGVzPik6IFByb21pc2U8R2VuZXJpY09iamVjdD4ge1xuICAgIGNvbnN0IHJhd1JlY29yZDogR2VuZXJpY09iamVjdCA9IHt9O1xuXG4gICAgZm9yIChjb25zdCBwcm9wZXJ0eU5hbWUgb2YgdGhpcy5wcm9wZXJ0eU5hbWVzKSB7XG4gICAgICByYXdSZWNvcmRbcHJvcGVydHlOYW1lXSA9IHNldHRpbmdzW3Byb3BlcnR5TmFtZV07XG4gICAgfVxuXG4gICAgYXdhaXQgdGhpcy5vblNhdmluZ1JlY29yZChyYXdSZWNvcmQpO1xuXG4gICAgcmV0dXJuIHRoaXMuZ2V0VHJhbnNmb3JtZXIoKS50cmFuc2Zvcm1PYmplY3RSZWN1cnNpdmVseShyYXdSZWNvcmQpO1xuICB9XG59XG4vKiB2OCBpZ25vcmUgc3RvcCAqL1xuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFnQ0EseUJBQTRCO0FBQzVCLG1CQUErQjtB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
@@ -6,9 +6,9 @@
6
6
  import type { App } from 'obsidian';
7
7
  import type { Promisable, ReadonlyDeep } from 'type-fest';
8
8
  import type { AsyncEventRef } from '../../AsyncEvents.cjs';
9
- import type { GenericObject } from '../../ObjectUtils.cjs';
10
9
  import type { Transformer } from '../../Transformers/Transformer.cjs';
11
10
  import type { MaybeReturn, StringKeys } from '../../Type.cjs';
11
+ import type { GenericObject } from '../../TypeGuards.cjs';
12
12
  import type { ExtractPlugin, ExtractPluginSettings, ExtractPluginSettingsPropertyNames, ExtractReadonlyPluginSettingsWrapper, PluginTypesBase } from './PluginTypesBase.cjs';
13
13
  import { AsyncEvents } from '../../AsyncEvents.cjs';
14
14
  type ValidationResult<PluginSettings extends object> = Partial<Record<StringKeys<PluginSettings>, string>>;