obsidian-dev-utils 48.1.3 → 49.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (244) hide show
  1. package/CHANGELOG.md +10 -0
  2. package/dist/lib/cjs/AbortController.cjs +1 -1
  3. package/dist/lib/cjs/Array.cjs +1 -1
  4. package/dist/lib/cjs/Async.cjs +25 -25
  5. package/dist/lib/cjs/Async.d.cts +6 -6
  6. package/dist/lib/cjs/AsyncEvents.cjs +1 -1
  7. package/dist/lib/cjs/Blob.cjs +1 -1
  8. package/dist/lib/cjs/CssClass.cjs +1 -1
  9. package/dist/lib/cjs/Debug.cjs +1 -1
  10. package/dist/lib/cjs/DebugController.cjs +1 -1
  11. package/dist/lib/cjs/Enum.cjs +1 -1
  12. package/dist/lib/cjs/Error.cjs +1 -1
  13. package/dist/lib/cjs/Function.cjs +1 -1
  14. package/dist/lib/cjs/HTMLElement.cjs +1 -1
  15. package/dist/lib/cjs/Library.cjs +2 -2
  16. package/dist/lib/cjs/ObjectUtils.cjs +9 -10
  17. package/dist/lib/cjs/Path.cjs +1 -1
  18. package/dist/lib/cjs/RegExp.cjs +1 -1
  19. package/dist/lib/cjs/ScriptUtils/CliUtils.cjs +1 -1
  20. package/dist/lib/cjs/ScriptUtils/CodeGenerator.cjs +1 -1
  21. package/dist/lib/cjs/ScriptUtils/ESLint/ESLint.cjs +1 -1
  22. package/dist/lib/cjs/ScriptUtils/ESLint/eslint.config.cjs +14 -2
  23. package/dist/lib/cjs/ScriptUtils/ESLint/index.cjs +1 -1
  24. package/dist/lib/cjs/ScriptUtils/Exec.cjs +1 -1
  25. package/dist/lib/cjs/ScriptUtils/Fs.cjs +1 -1
  26. package/dist/lib/cjs/ScriptUtils/JSON.cjs +1 -1
  27. package/dist/lib/cjs/ScriptUtils/NodeModules.cjs +1 -1
  28. package/dist/lib/cjs/ScriptUtils/Npm.cjs +1 -1
  29. package/dist/lib/cjs/ScriptUtils/NpmPublish.cjs +1 -1
  30. package/dist/lib/cjs/ScriptUtils/NpmRun.cjs +1 -1
  31. package/dist/lib/cjs/ScriptUtils/ObsidianDevUtilsRepoPaths.cjs +1 -1
  32. package/dist/lib/cjs/ScriptUtils/Root.cjs +1 -1
  33. package/dist/lib/cjs/ScriptUtils/build.cjs +1 -1
  34. package/dist/lib/cjs/ScriptUtils/cli.cjs +1 -1
  35. package/dist/lib/cjs/ScriptUtils/esbuild/Dependency.cjs +1 -1
  36. package/dist/lib/cjs/ScriptUtils/esbuild/ObsidianPluginBuilder.cjs +7 -7
  37. package/dist/lib/cjs/ScriptUtils/esbuild/ObsidianPluginBuilder.d.cts +3 -3
  38. package/dist/lib/cjs/ScriptUtils/esbuild/changeExtensionPlugin.cjs +1 -1
  39. package/dist/lib/cjs/ScriptUtils/esbuild/copyToObsidianPluginsFolderPlugin.cjs +1 -1
  40. package/dist/lib/cjs/ScriptUtils/esbuild/customEsbuildOptionsPlugin.cjs +1 -1
  41. package/dist/lib/cjs/ScriptUtils/esbuild/fixEsmPlugin.cjs +1 -1
  42. package/dist/lib/cjs/ScriptUtils/esbuild/fixSourceMapsPlugin.cjs +1 -1
  43. package/dist/lib/cjs/ScriptUtils/esbuild/index.cjs +1 -1
  44. package/dist/lib/cjs/ScriptUtils/esbuild/preprocessPlugin.cjs +3 -3
  45. package/dist/lib/cjs/ScriptUtils/esbuild/renameCssPlugin.cjs +1 -1
  46. package/dist/lib/cjs/ScriptUtils/esbuild/svelteWrapperPlugin.cjs +1 -1
  47. package/dist/lib/cjs/ScriptUtils/format.cjs +1 -1
  48. package/dist/lib/cjs/ScriptUtils/index.cjs +1 -1
  49. package/dist/lib/cjs/ScriptUtils/markdownlint/index.cjs +1 -1
  50. package/dist/lib/cjs/ScriptUtils/markdownlint/markdownlint-cli2-config.cjs +1 -1
  51. package/dist/lib/cjs/ScriptUtils/markdownlint/markdownlint.cjs +1 -1
  52. package/dist/lib/cjs/ScriptUtils/spellcheck.cjs +1 -1
  53. package/dist/lib/cjs/ScriptUtils/version.cjs +2 -2
  54. package/dist/lib/cjs/String.cjs +1 -1
  55. package/dist/lib/cjs/Transformers/DateTransformer.cjs +1 -1
  56. package/dist/lib/cjs/Transformers/DurationTransformer.cjs +1 -1
  57. package/dist/lib/cjs/Transformers/GroupTransformer.cjs +1 -1
  58. package/dist/lib/cjs/Transformers/MapTransformer.cjs +1 -1
  59. package/dist/lib/cjs/Transformers/SetTransformer.cjs +1 -1
  60. package/dist/lib/cjs/Transformers/SkipPrivatePropertyTransformer.cjs +1 -1
  61. package/dist/lib/cjs/Transformers/Transformer.cjs +1 -1
  62. package/dist/lib/cjs/Transformers/TwoWayMapTransformer.cjs +1 -1
  63. package/dist/lib/cjs/Transformers/TypedTransformer.cjs +1 -1
  64. package/dist/lib/cjs/Transformers/index.cjs +1 -1
  65. package/dist/lib/cjs/TwoWayMap.cjs +1 -1
  66. package/dist/lib/cjs/Type.cjs +1 -1
  67. package/dist/lib/cjs/TypeGuards.cjs +1 -1
  68. package/dist/lib/cjs/ValueProvider.cjs +1 -1
  69. package/dist/lib/cjs/codemirror/StateFieldSpec.cjs +1 -1
  70. package/dist/lib/cjs/codemirror/index.cjs +1 -1
  71. package/dist/lib/cjs/index.cjs +1 -1
  72. package/dist/lib/cjs/obsidian/App.cjs +1 -1
  73. package/dist/lib/cjs/obsidian/AsyncWithNotice.cjs +8 -8
  74. package/dist/lib/cjs/obsidian/AsyncWithNotice.d.cts +6 -6
  75. package/dist/lib/cjs/obsidian/AttachmentPath.cjs +10 -10
  76. package/dist/lib/cjs/obsidian/AttachmentPath.d.cts +10 -10
  77. package/dist/lib/cjs/obsidian/Backlink.cjs +6 -6
  78. package/dist/lib/cjs/obsidian/Backlink.d.cts +6 -6
  79. package/dist/lib/cjs/obsidian/Callout.cjs +5 -5
  80. package/dist/lib/cjs/obsidian/Callout.d.cts +3 -3
  81. package/dist/lib/cjs/obsidian/CodeBlockMarkdownInformation.cjs +1 -1
  82. package/dist/lib/cjs/obsidian/Commands/AbstractFileCommandBase.cjs +12 -12
  83. package/dist/lib/cjs/obsidian/Commands/AbstractFileCommandBase.d.cts +4 -4
  84. package/dist/lib/cjs/obsidian/Commands/CommandBase.cjs +8 -8
  85. package/dist/lib/cjs/obsidian/Commands/CommandBase.d.cts +3 -3
  86. package/dist/lib/cjs/obsidian/Commands/EditorCommandBase.cjs +9 -9
  87. package/dist/lib/cjs/obsidian/Commands/EditorCommandBase.d.cts +4 -4
  88. package/dist/lib/cjs/obsidian/Commands/FileCommandBase.cjs +5 -5
  89. package/dist/lib/cjs/obsidian/Commands/FileCommandBase.d.cts +3 -3
  90. package/dist/lib/cjs/obsidian/Commands/FolderCommandBase.cjs +5 -5
  91. package/dist/lib/cjs/obsidian/Commands/FolderCommandBase.d.cts +3 -3
  92. package/dist/lib/cjs/obsidian/Commands/NonEditorCommandBase.cjs +5 -5
  93. package/dist/lib/cjs/obsidian/Commands/NonEditorCommandBase.d.cts +3 -3
  94. package/dist/lib/cjs/obsidian/Commands/index.cjs +1 -1
  95. package/dist/lib/cjs/obsidian/Components/AsyncEventsComponent.cjs +1 -1
  96. package/dist/lib/cjs/obsidian/Components/SettingComponents/CheckboxComponent.cjs +1 -1
  97. package/dist/lib/cjs/obsidian/Components/SettingComponents/CodeHighlighterComponent.cjs +1 -1
  98. package/dist/lib/cjs/obsidian/Components/SettingComponents/DateComponent.cjs +1 -1
  99. package/dist/lib/cjs/obsidian/Components/SettingComponents/DateTimeComponent.cjs +1 -1
  100. package/dist/lib/cjs/obsidian/Components/SettingComponents/EmailComponent.cjs +1 -1
  101. package/dist/lib/cjs/obsidian/Components/SettingComponents/FileComponent.cjs +1 -1
  102. package/dist/lib/cjs/obsidian/Components/SettingComponents/MonthComponent.cjs +1 -1
  103. package/dist/lib/cjs/obsidian/Components/SettingComponents/MultipleDropdownComponent.cjs +1 -1
  104. package/dist/lib/cjs/obsidian/Components/SettingComponents/MultipleEmailComponent.cjs +1 -1
  105. package/dist/lib/cjs/obsidian/Components/SettingComponents/MultipleFileComponent.cjs +1 -1
  106. package/dist/lib/cjs/obsidian/Components/SettingComponents/MultipleTextComponent.cjs +1 -1
  107. package/dist/lib/cjs/obsidian/Components/SettingComponents/NumberComponent.cjs +1 -1
  108. package/dist/lib/cjs/obsidian/Components/SettingComponents/PasswordComponent.cjs +1 -1
  109. package/dist/lib/cjs/obsidian/Components/SettingComponents/SettingComponentWrapper.cjs +1 -1
  110. package/dist/lib/cjs/obsidian/Components/SettingComponents/TelephoneComponent.cjs +1 -1
  111. package/dist/lib/cjs/obsidian/Components/SettingComponents/TextBasedComponent.cjs +1 -1
  112. package/dist/lib/cjs/obsidian/Components/SettingComponents/TimeComponent.cjs +1 -1
  113. package/dist/lib/cjs/obsidian/Components/SettingComponents/TriStateCheckboxComponent.cjs +1 -1
  114. package/dist/lib/cjs/obsidian/Components/SettingComponents/TypedDropdownComponent.cjs +1 -1
  115. package/dist/lib/cjs/obsidian/Components/SettingComponents/TypedMultipleDropdownComponent.cjs +1 -1
  116. package/dist/lib/cjs/obsidian/Components/SettingComponents/TypedRangeTextComponent.cjs +1 -1
  117. package/dist/lib/cjs/obsidian/Components/SettingComponents/TypedTextComponent.cjs +1 -1
  118. package/dist/lib/cjs/obsidian/Components/SettingComponents/UrlComponent.cjs +1 -1
  119. package/dist/lib/cjs/obsidian/Components/SettingComponents/ValidatorComponent.cjs +1 -1
  120. package/dist/lib/cjs/obsidian/Components/SettingComponents/ValueComponentWithChangeTracking.cjs +1 -1
  121. package/dist/lib/cjs/obsidian/Components/SettingComponents/WeekComponent.cjs +1 -1
  122. package/dist/lib/cjs/obsidian/Components/SettingComponents/index.cjs +1 -1
  123. package/dist/lib/cjs/obsidian/Components/index.cjs +1 -1
  124. package/dist/lib/cjs/obsidian/Dataview.cjs +11 -11
  125. package/dist/lib/cjs/obsidian/Dataview.d.cts +10 -10
  126. package/dist/lib/cjs/obsidian/DataviewLink.cjs +1 -1
  127. package/dist/lib/cjs/obsidian/Editor.cjs +1 -1
  128. package/dist/lib/cjs/obsidian/FileChange.cjs +1 -1
  129. package/dist/lib/cjs/obsidian/FileManager.cjs +1 -1
  130. package/dist/lib/cjs/obsidian/FileSystem.cjs +1 -1
  131. package/dist/lib/cjs/obsidian/Frontmatter.cjs +1 -1
  132. package/dist/lib/cjs/obsidian/FrontmatterLinkCacheWithOffsets.cjs +1 -1
  133. package/dist/lib/cjs/obsidian/Link.cjs +59 -59
  134. package/dist/lib/cjs/obsidian/Link.d.cts +22 -22
  135. package/dist/lib/cjs/obsidian/Logger.cjs +1 -1
  136. package/dist/lib/cjs/obsidian/Loop.cjs +5 -5
  137. package/dist/lib/cjs/obsidian/Loop.d.cts +3 -3
  138. package/dist/lib/cjs/obsidian/Markdown.cjs +10 -10
  139. package/dist/lib/cjs/obsidian/Markdown.d.cts +4 -4
  140. package/dist/lib/cjs/obsidian/MarkdownCodeBlockProcessor.cjs +25 -25
  141. package/dist/lib/cjs/obsidian/MarkdownCodeBlockProcessor.d.cts +14 -14
  142. package/dist/lib/cjs/obsidian/MarkdownView.cjs +1 -1
  143. package/dist/lib/cjs/obsidian/MetadataCache.cjs +1 -1
  144. package/dist/lib/cjs/obsidian/Modals/Alert.cjs +13 -13
  145. package/dist/lib/cjs/obsidian/Modals/Alert.d.cts +3 -3
  146. package/dist/lib/cjs/obsidian/Modals/Confirm.cjs +14 -14
  147. package/dist/lib/cjs/obsidian/Modals/Confirm.d.cts +3 -3
  148. package/dist/lib/cjs/obsidian/Modals/ModalBase.cjs +2 -2
  149. package/dist/lib/cjs/obsidian/Modals/ModalBase.d.cts +2 -2
  150. package/dist/lib/cjs/obsidian/Modals/Prompt.cjs +15 -15
  151. package/dist/lib/cjs/obsidian/Modals/Prompt.d.cts +3 -3
  152. package/dist/lib/cjs/obsidian/Modals/SelectItem.cjs +12 -12
  153. package/dist/lib/cjs/obsidian/Modals/SelectItem.d.cts +3 -3
  154. package/dist/lib/cjs/obsidian/Modals/index.cjs +1 -1
  155. package/dist/lib/cjs/obsidian/MonkeyAround.cjs +1 -1
  156. package/dist/lib/cjs/obsidian/ObsidianSettings.cjs +1 -1
  157. package/dist/lib/cjs/obsidian/Pdf.cjs +1 -1
  158. package/dist/lib/cjs/obsidian/Plugin/ObsidianPluginRepoPaths.cjs +1 -1
  159. package/dist/lib/cjs/obsidian/Plugin/PathSettings.cjs +1 -1
  160. package/dist/lib/cjs/obsidian/Plugin/Plugin.cjs +1 -1
  161. package/dist/lib/cjs/obsidian/Plugin/PluginBase.cjs +1 -1
  162. package/dist/lib/cjs/obsidian/Plugin/PluginContext.cjs +1 -1
  163. package/dist/lib/cjs/obsidian/Plugin/PluginId.cjs +1 -1
  164. package/dist/lib/cjs/obsidian/Plugin/PluginSettingsManagerBase.cjs +1 -1
  165. package/dist/lib/cjs/obsidian/Plugin/PluginSettingsTabBase.cjs +1 -1
  166. package/dist/lib/cjs/obsidian/Plugin/PluginSettingsWrapper.cjs +1 -1
  167. package/dist/lib/cjs/obsidian/Plugin/PluginTypesBase.cjs +1 -1
  168. package/dist/lib/cjs/obsidian/Plugin/index.cjs +1 -1
  169. package/dist/lib/cjs/obsidian/Queue.cjs +14 -14
  170. package/dist/lib/cjs/obsidian/Queue.d.cts +6 -6
  171. package/dist/lib/cjs/obsidian/React/AppContext.cjs +1 -1
  172. package/dist/lib/cjs/obsidian/React/index.cjs +1 -1
  173. package/dist/lib/cjs/obsidian/Reference.cjs +1 -1
  174. package/dist/lib/cjs/obsidian/RenameDeleteHandler.cjs +20 -20
  175. package/dist/lib/cjs/obsidian/ResourceUrl.cjs +1 -1
  176. package/dist/lib/cjs/obsidian/SettingEx.cjs +1 -1
  177. package/dist/lib/cjs/obsidian/SettingGroupEx.cjs +1 -1
  178. package/dist/lib/cjs/obsidian/Validation.cjs +1 -1
  179. package/dist/lib/cjs/obsidian/Vault.cjs +1 -1
  180. package/dist/lib/cjs/obsidian/VaultEx.cjs +1 -1
  181. package/dist/lib/cjs/obsidian/Workspace.cjs +1 -1
  182. package/dist/lib/cjs/obsidian/i18n/CustomTypeOptionsBase.cjs +1 -1
  183. package/dist/lib/cjs/obsidian/i18n/DefaultTranslationsBase.cjs +1 -1
  184. package/dist/lib/cjs/obsidian/i18n/i18n.cjs +2 -2
  185. package/dist/lib/cjs/obsidian/i18n/index.cjs +1 -1
  186. package/dist/lib/cjs/obsidian/i18n/locales/en.cjs +1 -1
  187. package/dist/lib/cjs/obsidian/i18n/locales/index.cjs +1 -1
  188. package/dist/lib/cjs/obsidian/i18n/locales/translationsMap.cjs +1 -1
  189. package/dist/lib/cjs/obsidian/index.cjs +1 -1
  190. package/dist/lib/cjs/url.cjs +1 -1
  191. package/dist/lib/esm/Async.d.mts +6 -6
  192. package/dist/lib/esm/Async.mjs +24 -24
  193. package/dist/lib/esm/Library.mjs +1 -1
  194. package/dist/lib/esm/ObjectUtils.mjs +8 -9
  195. package/dist/lib/esm/ScriptUtils/ESLint/eslint.config.mjs +13 -1
  196. package/dist/lib/esm/ScriptUtils/esbuild/ObsidianPluginBuilder.d.mts +3 -3
  197. package/dist/lib/esm/ScriptUtils/esbuild/ObsidianPluginBuilder.mjs +6 -6
  198. package/dist/lib/esm/ScriptUtils/esbuild/preprocessPlugin.mjs +2 -3
  199. package/dist/lib/esm/ScriptUtils/version.mjs +1 -1
  200. package/dist/lib/esm/obsidian/AsyncWithNotice.d.mts +6 -6
  201. package/dist/lib/esm/obsidian/AsyncWithNotice.mjs +7 -7
  202. package/dist/lib/esm/obsidian/AttachmentPath.d.mts +10 -10
  203. package/dist/lib/esm/obsidian/AttachmentPath.mjs +9 -9
  204. package/dist/lib/esm/obsidian/Backlink.d.mts +6 -6
  205. package/dist/lib/esm/obsidian/Backlink.mjs +5 -5
  206. package/dist/lib/esm/obsidian/Callout.d.mts +3 -3
  207. package/dist/lib/esm/obsidian/Callout.mjs +4 -4
  208. package/dist/lib/esm/obsidian/Commands/AbstractFileCommandBase.d.mts +4 -4
  209. package/dist/lib/esm/obsidian/Commands/AbstractFileCommandBase.mjs +11 -11
  210. package/dist/lib/esm/obsidian/Commands/CommandBase.d.mts +3 -3
  211. package/dist/lib/esm/obsidian/Commands/CommandBase.mjs +7 -7
  212. package/dist/lib/esm/obsidian/Commands/EditorCommandBase.d.mts +4 -4
  213. package/dist/lib/esm/obsidian/Commands/EditorCommandBase.mjs +8 -8
  214. package/dist/lib/esm/obsidian/Commands/FileCommandBase.d.mts +3 -3
  215. package/dist/lib/esm/obsidian/Commands/FileCommandBase.mjs +4 -4
  216. package/dist/lib/esm/obsidian/Commands/FolderCommandBase.d.mts +3 -3
  217. package/dist/lib/esm/obsidian/Commands/FolderCommandBase.mjs +4 -4
  218. package/dist/lib/esm/obsidian/Commands/NonEditorCommandBase.d.mts +3 -3
  219. package/dist/lib/esm/obsidian/Commands/NonEditorCommandBase.mjs +4 -4
  220. package/dist/lib/esm/obsidian/Dataview.d.mts +10 -10
  221. package/dist/lib/esm/obsidian/Dataview.mjs +10 -10
  222. package/dist/lib/esm/obsidian/Link.d.mts +22 -22
  223. package/dist/lib/esm/obsidian/Link.mjs +58 -58
  224. package/dist/lib/esm/obsidian/Loop.d.mts +3 -3
  225. package/dist/lib/esm/obsidian/Loop.mjs +4 -4
  226. package/dist/lib/esm/obsidian/Markdown.d.mts +4 -4
  227. package/dist/lib/esm/obsidian/Markdown.mjs +9 -9
  228. package/dist/lib/esm/obsidian/MarkdownCodeBlockProcessor.d.mts +14 -14
  229. package/dist/lib/esm/obsidian/MarkdownCodeBlockProcessor.mjs +24 -24
  230. package/dist/lib/esm/obsidian/Modals/Alert.d.mts +3 -3
  231. package/dist/lib/esm/obsidian/Modals/Alert.mjs +12 -12
  232. package/dist/lib/esm/obsidian/Modals/Confirm.d.mts +3 -3
  233. package/dist/lib/esm/obsidian/Modals/Confirm.mjs +13 -13
  234. package/dist/lib/esm/obsidian/Modals/ModalBase.d.mts +2 -2
  235. package/dist/lib/esm/obsidian/Modals/ModalBase.mjs +1 -1
  236. package/dist/lib/esm/obsidian/Modals/Prompt.d.mts +3 -3
  237. package/dist/lib/esm/obsidian/Modals/Prompt.mjs +14 -14
  238. package/dist/lib/esm/obsidian/Modals/SelectItem.d.mts +3 -3
  239. package/dist/lib/esm/obsidian/Modals/SelectItem.mjs +11 -11
  240. package/dist/lib/esm/obsidian/Queue.d.mts +6 -6
  241. package/dist/lib/esm/obsidian/Queue.mjs +13 -13
  242. package/dist/lib/esm/obsidian/RenameDeleteHandler.mjs +19 -19
  243. package/dist/lib/esm/obsidian/i18n/i18n.mjs +1 -1
  244. package/package.json +1 -1
@@ -92,10 +92,10 @@ class FileCommandBase extends AbstractFileCommandBase {
92
92
  /**
93
93
  * Creates a new file command.
94
94
  *
95
- * @param options - The options for the file command.
95
+ * @param params - The parameters for the file command.
96
96
  */
97
- constructor(options) {
98
- super(options);
97
+ constructor(params) {
98
+ super(params);
99
99
  }
100
100
  /**
101
101
  * Creates a new abstract file command invocation.
@@ -234,4 +234,4 @@ export {
234
234
  FilesCommandInvocationBase,
235
235
  SequentialFilesCommandInvocationBase
236
236
  };
237
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL0NvbW1hbmRzL0ZpbGVDb21tYW5kQmFzZS50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAcGFja2FnZURvY3VtZW50YXRpb25cbiAqXG4gKiBCYXNlIGNsYXNzZXMgZm9yIGZpbGUgY29tbWFuZHMuXG4gKi9cblxuLyogdjggaWdub3JlIHN0YXJ0IC0tIERlZXBseSBjb3VwbGVkIHRvIE9ic2lkaWFuIHJ1bnRpbWU7IHJlcXVpcmVzIHJ1bm5pbmcgdmF1bHQgZm9yIG1lYW5pbmdmdWwgdGVzdGluZy4gKi9cblxuaW1wb3J0IHR5cGUge1xuICBQbHVnaW4sXG4gIFRBYnN0cmFjdEZpbGUsXG4gIFdvcmtzcGFjZUxlYWZcbn0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQgeyBURmlsZSB9IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHR5cGUgeyBBYnN0cmFjdEZpbGVDb21tYW5kQmFzZU9wdGlvbnMgfSBmcm9tICcuL0Fic3RyYWN0RmlsZUNvbW1hbmRCYXNlLnRzJztcblxuaW1wb3J0IHtcbiAgYXNBcnJheU9mRmlsZXMsXG4gIGFzRmlsZSxcbiAgYXNGaWxlT3JOdWxsLFxuICBpc0ZpbGVcbn0gZnJvbSAnLi4vRmlsZVN5c3RlbS50cyc7XG5pbXBvcnQge1xuICBBYnN0cmFjdEZpbGVDb21tYW5kQmFzZSxcbiAgQWJzdHJhY3RGaWxlQ29tbWFuZEludm9jYXRpb25CYXNlLFxuICBBYnN0cmFjdEZpbGVzQ29tbWFuZEludm9jYXRpb25CYXNlXG59IGZyb20gJy4vQWJzdHJhY3RGaWxlQ29tbWFuZEJhc2UudHMnO1xuXG4vKipcbiAqIEJhc2UgY2xhc3MgZm9yIGZpbGUgY29tbWFuZCBpbnZvY2F0aW9ucy5cbiAqXG4gKiBAdHlwZVBhcmFtIFRQbHVnaW4gLSBUaGUgdHlwZSBvZiB0aGUgcGx1Z2luIHRoYXQgdGhlIGNvbW1hbmQgYmVsb25ncyB0by5cbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEZpbGVDb21tYW5kSW52b2NhdGlvbkJhc2U8VFBsdWdpbiBleHRlbmRzIFBsdWdpbj4gZXh0ZW5kcyBBYnN0cmFjdEZpbGVDb21tYW5kSW52b2NhdGlvbkJhc2U8VFBsdWdpbj4ge1xuICAvKipcbiAgICogR2V0cyB0aGUgZmlsZSB0aGF0IHRoZSBjb21tYW5kIGludm9jYXRpb24gYmVsb25ncyB0by5cbiAgICpcbiAgICogQHJldHVybnMgVGhlIGZpbGUgdGhhdCB0aGUgY29tbWFuZCBpbnZvY2F0aW9uIGJlbG9uZ3MgdG8uXG4gICAqIEB0aHJvd3MgSWYgdGhlIGFic3RyYWN0IGZpbGUgaXMgbm90IGEgZmlsZS5cbiAgICovXG4gIHByb3RlY3RlZCBnZXQgZmlsZSgpOiBURmlsZSB7XG4gICAgcmV0dXJuIGFzRmlsZSh0aGlzLl9hYnN0cmFjdEZpbGUpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXcgZmlsZSBjb21tYW5kIGludm9jYXRpb24uXG4gICAqXG4gICAqIEBwYXJhbSBwbHVnaW4gLSBUaGUgcGx1Z2luIHRoYXQgdGhlIGNvbW1hbmQgaW52b2NhdGlvbiBiZWxvbmdzIHRvLlxuICAgKiBAcGFyYW0gZmlsZSAtIFRoZSBmaWxlIHRvIGludm9rZSB0aGUgY29tbWFuZCBmb3IuXG4gICAqL1xuICBwdWJsaWMgY29uc3RydWN0b3IocGx1Z2luOiBUUGx1Z2luLCBmaWxlOiBudWxsIHwgVEZpbGUpIHtcbiAgICBzdXBlcihwbHVnaW4sIGZpbGUpO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyBpZiB0aGUgY29tbWFuZCBjYW4gZXhlY3V0ZS5cbiAgICpcbiAgICogQHJldHVybnMgV2hldGhlciB0aGUgY29tbWFuZCBjYW4gZXhlY3V0ZS5cbiAgICovXG4gIHByb3RlY3RlZCBvdmVycmlkZSBjYW5FeGVjdXRlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBzdXBlci5jYW5FeGVjdXRlKCkgJiYgISF0aGlzLl9hYnN0cmFjdEZpbGU7XG4gIH1cbn1cblxuLyoqXG4gKiBCYXNlIGNsYXNzIGZvciBhcnJheS1kZWxlZ2F0aW5nIGZpbGUgY29tbWFuZCBpbnZvY2F0aW9ucy5cbiAqXG4gKiBAdHlwZVBhcmFtIFRQbHVnaW4gLSBUaGUgdHlwZSBvZiB0aGUgcGx1Z2luIHRoYXQgdGhlIGNvbW1hbmQgYmVsb25ncyB0by5cbiAqL1xuZXhwb3J0IGNsYXNzIEFycmF5RGVsZWdhdGluZ0ZpbGVDb21tYW5kSW52b2NhdGlvbjxUUGx1Z2luIGV4dGVuZHMgUGx1Z2luPiBleHRlbmRzIEZpbGVDb21tYW5kSW52b2NhdGlvbkJhc2U8VFBsdWdpbj4ge1xuICAvKipcbiAgICogQ3JlYXRlcyBhIG5ldyBhcnJheS1kZWxlZ2F0aW5nIGZpbGUgY29tbWFuZCBpbnZvY2F0aW9uLlxuICAgKlxuICAgKiBAcGFyYW0gcGx1Z2luIC0gVGhlIHBsdWdpbiB0aGF0IHRoZSBjb21tYW5kIGludm9jYXRpb24gYmVsb25ncyB0by5cbiAgICogQHBhcmFtIGZpbGUgLSBUaGUgZmlsZSB0byBpbnZva2UgdGhlIGNvbW1hbmQgZm9yLlxuICAgKiBAcGFyYW0gY3JlYXRlQ29tbWFuZEludm9jYXRpb25Gb3JGaWxlcyAtIFRoZSBmdW5jdGlvbiB0byBjcmVhdGUgYSBjb21tYW5kIGludm9jYXRpb24gZm9yIGZpbGVzLlxuICAgKi9cbiAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgIHBsdWdpbjogVFBsdWdpbixcbiAgICBmaWxlOiBudWxsIHwgVEZpbGUsXG4gICAgcHJpdmF0ZSByZWFkb25seSBjcmVhdGVDb21tYW5kSW52b2NhdGlvbkZvckZpbGVzOiAoZmlsZXM6IFRGaWxlW10pID0+IEZpbGVzQ29tbWFuZEludm9jYXRpb25CYXNlPFRQbHVnaW4+XG4gICkge1xuICAgIHN1cGVyKHBsdWdpbiwgZmlsZSk7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIGlmIHRoZSBjb21tYW5kIGNhbiBleGVjdXRlLlxuICAgKlxuICAgKiBAcmV0dXJucyBXaGV0aGVyIHRoZSBjb21tYW5kIGNhbiBleGVjdXRlLlxuICAgKi9cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIGNhbkV4ZWN1dGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHN1cGVyLmNhbkV4ZWN1dGUoKSAmJiB0aGlzLmNyZWF0ZUNvbW1hbmRJbnZvY2F0aW9uRm9yRmlsZXMoW3RoaXMuZmlsZV0pLmludm9rZSh0cnVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFeGVjdXRlcyB0aGUgY29tbWFuZC5cbiAgICpcbiAgICogQHJldHVybnMgQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgY29tbWFuZCBoYXMgYmVlbiBleGVjdXRlZC5cbiAgICovXG4gIHByb3RlY3RlZCBvdmVycmlkZSBhc3luYyBleGVjdXRlKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IHRoaXMuY3JlYXRlQ29tbWFuZEludm9jYXRpb25Gb3JGaWxlcyhbdGhpcy5maWxlXSkuaW52b2tlQXN5bmMoZmFsc2UpO1xuICB9XG59XG5cbi8qKlxuICogQmFzZSBjbGFzcyBmb3IgZmlsZSBjb21tYW5kcy5cbiAqXG4gKiBAdHlwZVBhcmFtIFRQbHVnaW4gLSBUaGUgdHlwZSBvZiB0aGUgcGx1Z2luIHRoYXQgdGhlIGNvbW1hbmQgYmVsb25ncyB0by5cbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEZpbGVDb21tYW5kQmFzZTxUUGx1Z2luIGV4dGVuZHMgUGx1Z2luID0gUGx1Z2luPiBleHRlbmRzIEFic3RyYWN0RmlsZUNvbW1hbmRCYXNlPFRQbHVnaW4+IHtcbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXcgZmlsZSBjb21tYW5kLlxuICAgKlxuICAgKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBvcHRpb25zIGZvciB0aGUgZmlsZSBjb21tYW5kLlxuICAgKi9cbiAgcHVibGljIGNvbnN0cnVjdG9yKG9wdGlvbnM6IEFic3RyYWN0RmlsZUNvbW1hbmRCYXNlT3B0aW9uczxUUGx1Z2luPikge1xuICAgIHN1cGVyKG9wdGlvbnMpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXcgYWJzdHJhY3QgZmlsZSBjb21tYW5kIGludm9jYXRpb24uXG4gICAqXG4gICAqIEBwYXJhbSBhYnN0cmFjdEZpbGUgLSBUaGUgYWJzdHJhY3QgZmlsZSB0byBpbnZva2UgdGhlIGNvbW1hbmQgZm9yLlxuICAgKiBAcmV0dXJucyBUaGUgY29tbWFuZCBpbnZvY2F0aW9uLlxuICAgKi9cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIGNyZWF0ZUNvbW1hbmRJbnZvY2F0aW9uKGFic3RyYWN0RmlsZT86IFRBYnN0cmFjdEZpbGUpOiBBYnN0cmFjdEZpbGVDb21tYW5kSW52b2NhdGlvbkJhc2U8VFBsdWdpbj4ge1xuICAgIHJldHVybiB0aGlzLmNyZWF0ZUNvbW1hbmRJbnZvY2F0aW9uRm9yQWJzdHJhY3RGaWxlKGFic3RyYWN0RmlsZSA/PyB0aGlzLmFwcC53b3Jrc3BhY2UuZ2V0QWN0aXZlRmlsZSgpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgbmV3IGFic3RyYWN0IGZpbGUgY29tbWFuZCBpbnZvY2F0aW9uIGZvciBhbiBhYnN0cmFjdCBmaWxlLlxuICAgKlxuICAgKiBAcGFyYW0gYWJzdHJhY3RGaWxlIC0gVGhlIGFic3RyYWN0IGZpbGUgdG8gaW52b2tlIHRoZSBjb21tYW5kIGZvci4gSWYgYG51bGxgLCB0aGUgYWN0aXZlIGZpbGUgaXMgdXNlZC5cbiAgICogQHJldHVybnMgVGhlIGNvbW1hbmQgaW52b2NhdGlvbi5cbiAgICovXG4gIHByb3RlY3RlZCBvdmVycmlkZSBjcmVhdGVDb21tYW5kSW52b2NhdGlvbkZvckFic3RyYWN0RmlsZShhYnN0cmFjdEZpbGU6IG51bGwgfCBUQWJzdHJhY3RGaWxlKTogQWJzdHJhY3RGaWxlQ29tbWFuZEludm9jYXRpb25CYXNlPFRQbHVnaW4+IHtcbiAgICByZXR1cm4gdGhpcy5jcmVhdGVDb21tYW5kSW52b2NhdGlvbkZvckZpbGUoYXNGaWxlT3JOdWxsKGFic3RyYWN0RmlsZSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXcgYWJzdHJhY3QgZmlsZXMgY29tbWFuZCBpbnZvY2F0aW9uIGZvciBhYnN0cmFjdCBmaWxlcy5cbiAgICpcbiAgICogQHBhcmFtIGFic3RyYWN0RmlsZXMgLSBUaGUgYWJzdHJhY3QgZmlsZXMgdG8gaW52b2tlIHRoZSBjb21tYW5kIGZvci5cbiAgICogQHJldHVybnMgQSBuZXcgYWJzdHJhY3QgZmlsZXMgY29tbWFuZCBpbnZvY2F0aW9uLlxuICAgKi9cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIGNyZWF0ZUNvbW1hbmRJbnZvY2F0aW9uRm9yQWJzdHJhY3RGaWxlcyhhYnN0cmFjdEZpbGVzOiBUQWJzdHJhY3RGaWxlW10pOiBBYnN0cmFjdEZpbGVzQ29tbWFuZEludm9jYXRpb25CYXNlPFRQbHVnaW4+IHtcbiAgICByZXR1cm4gdGhpcy5jcmVhdGVDb21tYW5kSW52b2NhdGlvbkZvckZpbGVzKGFzQXJyYXlPZkZpbGVzKGFic3RyYWN0RmlsZXMpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgbmV3IGZpbGUgY29tbWFuZCBpbnZvY2F0aW9uIGZvciBhIGZpbGUuXG4gICAqXG4gICAqIEBwYXJhbSBmaWxlIC0gVGhlIGZpbGUgdG8gaW52b2tlIHRoZSBjb21tYW5kIGZvci5cbiAgICogQHJldHVybnMgQSBuZXcgZmlsZSBjb21tYW5kIGludm9jYXRpb24uXG4gICAqL1xuICBwcm90ZWN0ZWQgYWJzdHJhY3QgY3JlYXRlQ29tbWFuZEludm9jYXRpb25Gb3JGaWxlKGZpbGU6IG51bGwgfCBURmlsZSk6IEZpbGVDb21tYW5kSW52b2NhdGlvbkJhc2U8VFBsdWdpbj47XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXcgZmlsZXMgY29tbWFuZCBpbnZvY2F0aW9uIGZvciBmaWxlcy5cbiAgICpcbiAgICogQHBhcmFtIGZpbGVzIC0gVGhlIGZpbGVzIHRvIGludm9rZSB0aGUgY29tbWFuZCBmb3IuXG4gICAqIEByZXR1cm5zIEEgbmV3IGZpbGVzIGNvbW1hbmQgaW52b2NhdGlvbi5cbiAgICovXG4gIHByb3RlY3RlZCBjcmVhdGVDb21tYW5kSW52b2NhdGlvbkZvckZpbGVzKGZpbGVzOiBURmlsZVtdKTogRmlsZXNDb21tYW5kSW52b2NhdGlvbkJhc2U8VFBsdWdpbj4ge1xuICAgIHJldHVybiBuZXcgU2VxdWVudGlhbEZpbGVzQ29tbWFuZEludm9jYXRpb25CYXNlKHRoaXMucGx1Z2luLCBmaWxlcywgdGhpcy5jcmVhdGVDb21tYW5kSW52b2NhdGlvbkZvckZpbGUuYmluZCh0aGlzKSk7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIGlmIHRoZSBjb21tYW5kIHNob3VsZCBiZSBhZGRlZCB0byB0aGUgYWJzdHJhY3QgZmlsZSBtZW51LlxuICAgKlxuICAgKiBAcGFyYW0gYWJzdHJhY3RGaWxlIC0gVGhlIGFic3RyYWN0IGZpbGUgdG8gY2hlY2suXG4gICAqIEBwYXJhbSBzb3VyY2UgLSBUaGUgc291cmNlIG9mIHRoZSBhYnN0cmFjdCBmaWxlLlxuICAgKiBAcGFyYW0gbGVhZiAtIFRoZSBsZWFmIHRvIGNoZWNrLlxuICAgKiBAcmV0dXJucyBXaGV0aGVyIHRoZSBjb21tYW5kIHNob3VsZCBiZSBhZGRlZCB0byB0aGUgYWJzdHJhY3QgZmlsZSBtZW51LlxuICAgKi9cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHNob3VsZEFkZFRvQWJzdHJhY3RGaWxlTWVudShhYnN0cmFjdEZpbGU6IFRBYnN0cmFjdEZpbGUsIHNvdXJjZTogc3RyaW5nLCBsZWFmPzogV29ya3NwYWNlTGVhZik6IGJvb2xlYW4ge1xuICAgIGlmICghaXNGaWxlKGFic3RyYWN0RmlsZSkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuc2hvdWxkQWRkVG9GaWxlTWVudShhYnN0cmFjdEZpbGUsIHNvdXJjZSwgbGVhZik7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIGlmIHRoZSBjb21tYW5kIHNob3VsZCBiZSBhZGRlZCB0byB0aGUgYWJzdHJhY3QgZmlsZXMgbWVudS5cbiAgICpcbiAgICogQHBhcmFtIGFic3RyYWN0RmlsZXMgLSBUaGUgYWJzdHJhY3QgZmlsZXMgdG8gY2hlY2suXG4gICAqIEBwYXJhbSBzb3VyY2UgLSBUaGUgc291cmNlIG9mIHRoZSBhYnN0cmFjdCBmaWxlcy5cbiAgICogQHBhcmFtIGxlYWYgLSBUaGUgbGVhZiB0byBjaGVjay5cbiAgICogQHJldHVybnMgV2hldGhlciB0aGUgY29tbWFuZCBzaG91bGQgYmUgYWRkZWQgdG8gdGhlIGFic3RyYWN0IGZpbGVzIG1lbnUuXG4gICAqL1xuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgc2hvdWxkQWRkVG9BYnN0cmFjdEZpbGVzTWVudShhYnN0cmFjdEZpbGVzOiBUQWJzdHJhY3RGaWxlW10sIHNvdXJjZTogc3RyaW5nLCBsZWFmPzogV29ya3NwYWNlTGVhZik6IGJvb2xlYW4ge1xuICAgIGlmICghYWJzdHJhY3RGaWxlcy5ldmVyeSgoYWJzdHJhY3RGaWxlKSA9PiBpc0ZpbGUoYWJzdHJhY3RGaWxlKSkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuc2hvdWxkQWRkVG9GaWxlc01lbnUoYXNBcnJheU9mRmlsZXMoYWJzdHJhY3RGaWxlcyksIHNvdXJjZSwgbGVhZik7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIGlmIHRoZSBjb21tYW5kIHNob3VsZCBiZSBhZGRlZCB0byB0aGUgZmlsZSBtZW51LlxuICAgKlxuICAgKiBAcGFyYW0gX2ZpbGUgLSBUaGUgZmlsZSB0byBjaGVjay5cbiAgICogQHBhcmFtIF9zb3VyY2UgLSBUaGUgc291cmNlIG9mIHRoZSBmaWxlLlxuICAgKiBAcGFyYW0gX2xlYWYgLSBUaGUgbGVhZiB0byBjaGVjay5cbiAgICogQHJldHVybnMgV2hldGhlciB0aGUgY29tbWFuZCBzaG91bGQgYmUgYWRkZWQgdG8gdGhlIGZpbGUgbWVudS5cbiAgICovXG4gIHByb3RlY3RlZCBzaG91bGRBZGRUb0ZpbGVNZW51KF9maWxlOiBURmlsZSwgX3NvdXJjZTogc3RyaW5nLCBfbGVhZj86IFdvcmtzcGFjZUxlYWYpOiBib29sZWFuIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIGlmIHRoZSBjb21tYW5kIHNob3VsZCBiZSBhZGRlZCB0byB0aGUgZmlsZXMgbWVudS5cbiAgICpcbiAgICogQHBhcmFtIF9maWxlcyAtIFRoZSBmaWxlcyB0byBjaGVjay5cbiAgICogQHBhcmFtIF9zb3VyY2UgLSBUaGUgc291cmNlIG9mIHRoZSBmaWxlcy5cbiAgICogQHBhcmFtIF9sZWFmIC0gVGhlIGxlYWYgdG8gY2hlY2suXG4gICAqIEByZXR1cm5zIFdoZXRoZXIgdGhlIGNvbW1hbmQgc2hvdWxkIGJlIGFkZGVkIHRvIHRoZSBmaWxlcyBtZW51LlxuICAgKi9cbiAgcHJvdGVjdGVkIHNob3VsZEFkZFRvRmlsZXNNZW51KF9maWxlczogVEZpbGVbXSwgX3NvdXJjZTogc3RyaW5nLCBfbGVhZj86IFdvcmtzcGFjZUxlYWYpOiBib29sZWFuIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn1cblxuLyoqXG4gKiBCYXNlIGNsYXNzIGZvciBmaWxlcyBjb21tYW5kIGludm9jYXRpb25zLlxuICpcbiAqIEB0eXBlUGFyYW0gVFBsdWdpbiAtIFRoZSB0eXBlIG9mIHRoZSBwbHVnaW4gdGhhdCB0aGUgY29tbWFuZCBiZWxvbmdzIHRvLlxuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgRmlsZXNDb21tYW5kSW52b2NhdGlvbkJhc2U8VFBsdWdpbiBleHRlbmRzIFBsdWdpbj4gZXh0ZW5kcyBBYnN0cmFjdEZpbGVzQ29tbWFuZEludm9jYXRpb25CYXNlPFRQbHVnaW4+IHtcbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXcgZmlsZXMgY29tbWFuZCBpbnZvY2F0aW9uLlxuICAgKlxuICAgKiBAcGFyYW0gcGx1Z2luIC0gVGhlIHBsdWdpbiB0aGF0IHRoZSBjb21tYW5kIGludm9jYXRpb24gYmVsb25ncyB0by5cbiAgICogQHBhcmFtIGZpbGVzIC0gVGhlIGZpbGVzIHRvIGludm9rZSB0aGUgY29tbWFuZCBmb3IuXG4gICAqL1xuICBwdWJsaWMgY29uc3RydWN0b3IocGx1Z2luOiBUUGx1Z2luLCBwdWJsaWMgcmVhZG9ubHkgZmlsZXM6IFRGaWxlW10pIHtcbiAgICBzdXBlcihwbHVnaW4sIGZpbGVzKTtcbiAgfVxufVxuXG4vKipcbiAqIEJhc2UgY2xhc3MgZm9yIHNlcXVlbnRpYWwgZmlsZXMgY29tbWFuZCBpbnZvY2F0aW9ucy5cbiAqXG4gKiBAdHlwZVBhcmFtIFRQbHVnaW4gLSBUaGUgdHlwZSBvZiB0aGUgcGx1Z2luIHRoYXQgdGhlIGNvbW1hbmQgYmVsb25ncyB0by5cbiAqL1xuZXhwb3J0IGNsYXNzIFNlcXVlbnRpYWxGaWxlc0NvbW1hbmRJbnZvY2F0aW9uQmFzZTxUUGx1Z2luIGV4dGVuZHMgUGx1Z2luPiBleHRlbmRzIEZpbGVzQ29tbWFuZEludm9jYXRpb25CYXNlPFRQbHVnaW4+IHtcbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXcgc2VxdWVudGlhbCBmaWxlcyBjb21tYW5kIGludm9jYXRpb24uXG4gICAqXG4gICAqIEBwYXJhbSBwbHVnaW4gLSBUaGUgcGx1Z2luIHRoYXQgdGhlIGNvbW1hbmQgaW52b2NhdGlvbiBiZWxvbmdzIHRvLlxuICAgKiBAcGFyYW0gZmlsZXMgLSBUaGUgZmlsZXMgdG8gaW52b2tlIHRoZSBjb21tYW5kIGZvci5cbiAgICogQHBhcmFtIGNyZWF0ZUNvbW1hbmRJbnZvY2F0aW9uRm9yRmlsZSAtIFRoZSBmdW5jdGlvbiB0byBjcmVhdGUgYSBjb21tYW5kIGludm9jYXRpb24gZm9yIGEgZmlsZS5cbiAgICovXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihwbHVnaW46IFRQbHVnaW4sIGZpbGVzOiBURmlsZVtdLCBwcml2YXRlIHJlYWRvbmx5IGNyZWF0ZUNvbW1hbmRJbnZvY2F0aW9uRm9yRmlsZTogKGZpbGU6IFRGaWxlKSA9PiBGaWxlQ29tbWFuZEludm9jYXRpb25CYXNlPFRQbHVnaW4+KSB7XG4gICAgc3VwZXIocGx1Z2luLCBmaWxlcyk7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIGlmIHRoZSBjb21tYW5kIGNhbiBleGVjdXRlLlxuICAgKlxuICAgKiBAcmV0dXJucyBXaGV0aGVyIHRoZSBjb21tYW5kIGNhbiBleGVjdXRlLlxuICAgKi9cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIGNhbkV4ZWN1dGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHN1cGVyLmNhbkV4ZWN1dGUoKSAmJiB0aGlzLmZpbGVzLmxlbmd0aCA+IDAgJiYgdGhpcy5maWxlcy5ldmVyeSgoZmlsZSkgPT4gdGhpcy5jcmVhdGVDb21tYW5kSW52b2NhdGlvbkZvckZpbGUoZmlsZSkuaW52b2tlKHRydWUpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFeGVjdXRlcyB0aGUgY29tbWFuZC5cbiAgICpcbiAgICogQHJldHVybnMgQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgY29tbWFuZCBoYXMgYmVlbiBleGVjdXRlZC5cbiAgICovXG4gIHByb3RlY3RlZCBvdmVycmlkZSBhc3luYyBleGVjdXRlKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGZvciAoY29uc3QgZmlsZSBvZiB0aGlzLmZpbGVzKSB7XG4gICAgICBhd2FpdCB0aGlzLmNyZWF0ZUNvbW1hbmRJbnZvY2F0aW9uRm9yRmlsZShmaWxlKS5pbnZva2VBc3luYyhmYWxzZSk7XG4gICAgfVxuICB9XG59XG4vKiB2OCBpZ25vcmUgc3RvcCAqL1xuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBY0EsU0FBUyxhQUFhO0FBSXRCO0FBQUEsRUFDRTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLE9BQ0s7QUFDUDtBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLE9BQ0s7QUFPQSxNQUFlLGtDQUEwRCxrQ0FBMkM7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU96SCxJQUFjLE9BQWM7QUFD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
237
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL0NvbW1hbmRzL0ZpbGVDb21tYW5kQmFzZS50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAcGFja2FnZURvY3VtZW50YXRpb25cbiAqXG4gKiBCYXNlIGNsYXNzZXMgZm9yIGZpbGUgY29tbWFuZHMuXG4gKi9cblxuLyogdjggaWdub3JlIHN0YXJ0IC0tIERlZXBseSBjb3VwbGVkIHRvIE9ic2lkaWFuIHJ1bnRpbWU7IHJlcXVpcmVzIHJ1bm5pbmcgdmF1bHQgZm9yIG1lYW5pbmdmdWwgdGVzdGluZy4gKi9cblxuaW1wb3J0IHR5cGUge1xuICBQbHVnaW4sXG4gIFRBYnN0cmFjdEZpbGUsXG4gIFdvcmtzcGFjZUxlYWZcbn0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQgeyBURmlsZSB9IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHR5cGUgeyBBYnN0cmFjdEZpbGVDb21tYW5kQmFzZVBhcmFtcyB9IGZyb20gJy4vQWJzdHJhY3RGaWxlQ29tbWFuZEJhc2UudHMnO1xuXG5pbXBvcnQge1xuICBhc0FycmF5T2ZGaWxlcyxcbiAgYXNGaWxlLFxuICBhc0ZpbGVPck51bGwsXG4gIGlzRmlsZVxufSBmcm9tICcuLi9GaWxlU3lzdGVtLnRzJztcbmltcG9ydCB7XG4gIEFic3RyYWN0RmlsZUNvbW1hbmRCYXNlLFxuICBBYnN0cmFjdEZpbGVDb21tYW5kSW52b2NhdGlvbkJhc2UsXG4gIEFic3RyYWN0RmlsZXNDb21tYW5kSW52b2NhdGlvbkJhc2Vcbn0gZnJvbSAnLi9BYnN0cmFjdEZpbGVDb21tYW5kQmFzZS50cyc7XG5cbi8qKlxuICogQmFzZSBjbGFzcyBmb3IgZmlsZSBjb21tYW5kIGludm9jYXRpb25zLlxuICpcbiAqIEB0eXBlUGFyYW0gVFBsdWdpbiAtIFRoZSB0eXBlIG9mIHRoZSBwbHVnaW4gdGhhdCB0aGUgY29tbWFuZCBiZWxvbmdzIHRvLlxuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgRmlsZUNvbW1hbmRJbnZvY2F0aW9uQmFzZTxUUGx1Z2luIGV4dGVuZHMgUGx1Z2luPiBleHRlbmRzIEFic3RyYWN0RmlsZUNvbW1hbmRJbnZvY2F0aW9uQmFzZTxUUGx1Z2luPiB7XG4gIC8qKlxuICAgKiBHZXRzIHRoZSBmaWxlIHRoYXQgdGhlIGNvbW1hbmQgaW52b2NhdGlvbiBiZWxvbmdzIHRvLlxuICAgKlxuICAgKiBAcmV0dXJucyBUaGUgZmlsZSB0aGF0IHRoZSBjb21tYW5kIGludm9jYXRpb24gYmVsb25ncyB0by5cbiAgICogQHRocm93cyBJZiB0aGUgYWJzdHJhY3QgZmlsZSBpcyBub3QgYSBmaWxlLlxuICAgKi9cbiAgcHJvdGVjdGVkIGdldCBmaWxlKCk6IFRGaWxlIHtcbiAgICByZXR1cm4gYXNGaWxlKHRoaXMuX2Fic3RyYWN0RmlsZSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIG5ldyBmaWxlIGNvbW1hbmQgaW52b2NhdGlvbi5cbiAgICpcbiAgICogQHBhcmFtIHBsdWdpbiAtIFRoZSBwbHVnaW4gdGhhdCB0aGUgY29tbWFuZCBpbnZvY2F0aW9uIGJlbG9uZ3MgdG8uXG4gICAqIEBwYXJhbSBmaWxlIC0gVGhlIGZpbGUgdG8gaW52b2tlIHRoZSBjb21tYW5kIGZvci5cbiAgICovXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihwbHVnaW46IFRQbHVnaW4sIGZpbGU6IG51bGwgfCBURmlsZSkge1xuICAgIHN1cGVyKHBsdWdpbiwgZmlsZSk7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIGlmIHRoZSBjb21tYW5kIGNhbiBleGVjdXRlLlxuICAgKlxuICAgKiBAcmV0dXJucyBXaGV0aGVyIHRoZSBjb21tYW5kIGNhbiBleGVjdXRlLlxuICAgKi9cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIGNhbkV4ZWN1dGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHN1cGVyLmNhbkV4ZWN1dGUoKSAmJiAhIXRoaXMuX2Fic3RyYWN0RmlsZTtcbiAgfVxufVxuXG4vKipcbiAqIEJhc2UgY2xhc3MgZm9yIGFycmF5LWRlbGVnYXRpbmcgZmlsZSBjb21tYW5kIGludm9jYXRpb25zLlxuICpcbiAqIEB0eXBlUGFyYW0gVFBsdWdpbiAtIFRoZSB0eXBlIG9mIHRoZSBwbHVnaW4gdGhhdCB0aGUgY29tbWFuZCBiZWxvbmdzIHRvLlxuICovXG5leHBvcnQgY2xhc3MgQXJyYXlEZWxlZ2F0aW5nRmlsZUNvbW1hbmRJbnZvY2F0aW9uPFRQbHVnaW4gZXh0ZW5kcyBQbHVnaW4+IGV4dGVuZHMgRmlsZUNvbW1hbmRJbnZvY2F0aW9uQmFzZTxUUGx1Z2luPiB7XG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgbmV3IGFycmF5LWRlbGVnYXRpbmcgZmlsZSBjb21tYW5kIGludm9jYXRpb24uXG4gICAqXG4gICAqIEBwYXJhbSBwbHVnaW4gLSBUaGUgcGx1Z2luIHRoYXQgdGhlIGNvbW1hbmQgaW52b2NhdGlvbiBiZWxvbmdzIHRvLlxuICAgKiBAcGFyYW0gZmlsZSAtIFRoZSBmaWxlIHRvIGludm9rZSB0aGUgY29tbWFuZCBmb3IuXG4gICAqIEBwYXJhbSBjcmVhdGVDb21tYW5kSW52b2NhdGlvbkZvckZpbGVzIC0gVGhlIGZ1bmN0aW9uIHRvIGNyZWF0ZSBhIGNvbW1hbmQgaW52b2NhdGlvbiBmb3IgZmlsZXMuXG4gICAqL1xuICBwdWJsaWMgY29uc3RydWN0b3IoXG4gICAgcGx1Z2luOiBUUGx1Z2luLFxuICAgIGZpbGU6IG51bGwgfCBURmlsZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNyZWF0ZUNvbW1hbmRJbnZvY2F0aW9uRm9yRmlsZXM6IChmaWxlczogVEZpbGVbXSkgPT4gRmlsZXNDb21tYW5kSW52b2NhdGlvbkJhc2U8VFBsdWdpbj5cbiAgKSB7XG4gICAgc3VwZXIocGx1Z2luLCBmaWxlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgdGhlIGNvbW1hbmQgY2FuIGV4ZWN1dGUuXG4gICAqXG4gICAqIEByZXR1cm5zIFdoZXRoZXIgdGhlIGNvbW1hbmQgY2FuIGV4ZWN1dGUuXG4gICAqL1xuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgY2FuRXhlY3V0ZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gc3VwZXIuY2FuRXhlY3V0ZSgpICYmIHRoaXMuY3JlYXRlQ29tbWFuZEludm9jYXRpb25Gb3JGaWxlcyhbdGhpcy5maWxlXSkuaW52b2tlKHRydWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIEV4ZWN1dGVzIHRoZSBjb21tYW5kLlxuICAgKlxuICAgKiBAcmV0dXJucyBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB3aGVuIHRoZSBjb21tYW5kIGhhcyBiZWVuIGV4ZWN1dGVkLlxuICAgKi9cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIGFzeW5jIGV4ZWN1dGUoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgdGhpcy5jcmVhdGVDb21tYW5kSW52b2NhdGlvbkZvckZpbGVzKFt0aGlzLmZpbGVdKS5pbnZva2VBc3luYyhmYWxzZSk7XG4gIH1cbn1cblxuLyoqXG4gKiBCYXNlIGNsYXNzIGZvciBmaWxlIGNvbW1hbmRzLlxuICpcbiAqIEB0eXBlUGFyYW0gVFBsdWdpbiAtIFRoZSB0eXBlIG9mIHRoZSBwbHVnaW4gdGhhdCB0aGUgY29tbWFuZCBiZWxvbmdzIHRvLlxuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgRmlsZUNvbW1hbmRCYXNlPFRQbHVnaW4gZXh0ZW5kcyBQbHVnaW4gPSBQbHVnaW4+IGV4dGVuZHMgQWJzdHJhY3RGaWxlQ29tbWFuZEJhc2U8VFBsdWdpbj4ge1xuICAvKipcbiAgICogQ3JlYXRlcyBhIG5ldyBmaWxlIGNvbW1hbmQuXG4gICAqXG4gICAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgcGFyYW1ldGVycyBmb3IgdGhlIGZpbGUgY29tbWFuZC5cbiAgICovXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihwYXJhbXM6IEFic3RyYWN0RmlsZUNvbW1hbmRCYXNlUGFyYW1zPFRQbHVnaW4+KSB7XG4gICAgc3VwZXIocGFyYW1zKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgbmV3IGFic3RyYWN0IGZpbGUgY29tbWFuZCBpbnZvY2F0aW9uLlxuICAgKlxuICAgKiBAcGFyYW0gYWJzdHJhY3RGaWxlIC0gVGhlIGFic3RyYWN0IGZpbGUgdG8gaW52b2tlIHRoZSBjb21tYW5kIGZvci5cbiAgICogQHJldHVybnMgVGhlIGNvbW1hbmQgaW52b2NhdGlvbi5cbiAgICovXG4gIHByb3RlY3RlZCBvdmVycmlkZSBjcmVhdGVDb21tYW5kSW52b2NhdGlvbihhYnN0cmFjdEZpbGU/OiBUQWJzdHJhY3RGaWxlKTogQWJzdHJhY3RGaWxlQ29tbWFuZEludm9jYXRpb25CYXNlPFRQbHVnaW4+IHtcbiAgICByZXR1cm4gdGhpcy5jcmVhdGVDb21tYW5kSW52b2NhdGlvbkZvckFic3RyYWN0RmlsZShhYnN0cmFjdEZpbGUgPz8gdGhpcy5hcHAud29ya3NwYWNlLmdldEFjdGl2ZUZpbGUoKSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIG5ldyBhYnN0cmFjdCBmaWxlIGNvbW1hbmQgaW52b2NhdGlvbiBmb3IgYW4gYWJzdHJhY3QgZmlsZS5cbiAgICpcbiAgICogQHBhcmFtIGFic3RyYWN0RmlsZSAtIFRoZSBhYnN0cmFjdCBmaWxlIHRvIGludm9rZSB0aGUgY29tbWFuZCBmb3IuIElmIGBudWxsYCwgdGhlIGFjdGl2ZSBmaWxlIGlzIHVzZWQuXG4gICAqIEByZXR1cm5zIFRoZSBjb21tYW5kIGludm9jYXRpb24uXG4gICAqL1xuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgY3JlYXRlQ29tbWFuZEludm9jYXRpb25Gb3JBYnN0cmFjdEZpbGUoYWJzdHJhY3RGaWxlOiBudWxsIHwgVEFic3RyYWN0RmlsZSk6IEFic3RyYWN0RmlsZUNvbW1hbmRJbnZvY2F0aW9uQmFzZTxUUGx1Z2luPiB7XG4gICAgcmV0dXJuIHRoaXMuY3JlYXRlQ29tbWFuZEludm9jYXRpb25Gb3JGaWxlKGFzRmlsZU9yTnVsbChhYnN0cmFjdEZpbGUpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgbmV3IGFic3RyYWN0IGZpbGVzIGNvbW1hbmQgaW52b2NhdGlvbiBmb3IgYWJzdHJhY3QgZmlsZXMuXG4gICAqXG4gICAqIEBwYXJhbSBhYnN0cmFjdEZpbGVzIC0gVGhlIGFic3RyYWN0IGZpbGVzIHRvIGludm9rZSB0aGUgY29tbWFuZCBmb3IuXG4gICAqIEByZXR1cm5zIEEgbmV3IGFic3RyYWN0IGZpbGVzIGNvbW1hbmQgaW52b2NhdGlvbi5cbiAgICovXG4gIHByb3RlY3RlZCBvdmVycmlkZSBjcmVhdGVDb21tYW5kSW52b2NhdGlvbkZvckFic3RyYWN0RmlsZXMoYWJzdHJhY3RGaWxlczogVEFic3RyYWN0RmlsZVtdKTogQWJzdHJhY3RGaWxlc0NvbW1hbmRJbnZvY2F0aW9uQmFzZTxUUGx1Z2luPiB7XG4gICAgcmV0dXJuIHRoaXMuY3JlYXRlQ29tbWFuZEludm9jYXRpb25Gb3JGaWxlcyhhc0FycmF5T2ZGaWxlcyhhYnN0cmFjdEZpbGVzKSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIG5ldyBmaWxlIGNvbW1hbmQgaW52b2NhdGlvbiBmb3IgYSBmaWxlLlxuICAgKlxuICAgKiBAcGFyYW0gZmlsZSAtIFRoZSBmaWxlIHRvIGludm9rZSB0aGUgY29tbWFuZCBmb3IuXG4gICAqIEByZXR1cm5zIEEgbmV3IGZpbGUgY29tbWFuZCBpbnZvY2F0aW9uLlxuICAgKi9cbiAgcHJvdGVjdGVkIGFic3RyYWN0IGNyZWF0ZUNvbW1hbmRJbnZvY2F0aW9uRm9yRmlsZShmaWxlOiBudWxsIHwgVEZpbGUpOiBGaWxlQ29tbWFuZEludm9jYXRpb25CYXNlPFRQbHVnaW4+O1xuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgbmV3IGZpbGVzIGNvbW1hbmQgaW52b2NhdGlvbiBmb3IgZmlsZXMuXG4gICAqXG4gICAqIEBwYXJhbSBmaWxlcyAtIFRoZSBmaWxlcyB0byBpbnZva2UgdGhlIGNvbW1hbmQgZm9yLlxuICAgKiBAcmV0dXJucyBBIG5ldyBmaWxlcyBjb21tYW5kIGludm9jYXRpb24uXG4gICAqL1xuICBwcm90ZWN0ZWQgY3JlYXRlQ29tbWFuZEludm9jYXRpb25Gb3JGaWxlcyhmaWxlczogVEZpbGVbXSk6IEZpbGVzQ29tbWFuZEludm9jYXRpb25CYXNlPFRQbHVnaW4+IHtcbiAgICByZXR1cm4gbmV3IFNlcXVlbnRpYWxGaWxlc0NvbW1hbmRJbnZvY2F0aW9uQmFzZSh0aGlzLnBsdWdpbiwgZmlsZXMsIHRoaXMuY3JlYXRlQ29tbWFuZEludm9jYXRpb25Gb3JGaWxlLmJpbmQodGhpcykpO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyBpZiB0aGUgY29tbWFuZCBzaG91bGQgYmUgYWRkZWQgdG8gdGhlIGFic3RyYWN0IGZpbGUgbWVudS5cbiAgICpcbiAgICogQHBhcmFtIGFic3RyYWN0RmlsZSAtIFRoZSBhYnN0cmFjdCBmaWxlIHRvIGNoZWNrLlxuICAgKiBAcGFyYW0gc291cmNlIC0gVGhlIHNvdXJjZSBvZiB0aGUgYWJzdHJhY3QgZmlsZS5cbiAgICogQHBhcmFtIGxlYWYgLSBUaGUgbGVhZiB0byBjaGVjay5cbiAgICogQHJldHVybnMgV2hldGhlciB0aGUgY29tbWFuZCBzaG91bGQgYmUgYWRkZWQgdG8gdGhlIGFic3RyYWN0IGZpbGUgbWVudS5cbiAgICovXG4gIHByb3RlY3RlZCBvdmVycmlkZSBzaG91bGRBZGRUb0Fic3RyYWN0RmlsZU1lbnUoYWJzdHJhY3RGaWxlOiBUQWJzdHJhY3RGaWxlLCBzb3VyY2U6IHN0cmluZywgbGVhZj86IFdvcmtzcGFjZUxlYWYpOiBib29sZWFuIHtcbiAgICBpZiAoIWlzRmlsZShhYnN0cmFjdEZpbGUpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnNob3VsZEFkZFRvRmlsZU1lbnUoYWJzdHJhY3RGaWxlLCBzb3VyY2UsIGxlYWYpO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyBpZiB0aGUgY29tbWFuZCBzaG91bGQgYmUgYWRkZWQgdG8gdGhlIGFic3RyYWN0IGZpbGVzIG1lbnUuXG4gICAqXG4gICAqIEBwYXJhbSBhYnN0cmFjdEZpbGVzIC0gVGhlIGFic3RyYWN0IGZpbGVzIHRvIGNoZWNrLlxuICAgKiBAcGFyYW0gc291cmNlIC0gVGhlIHNvdXJjZSBvZiB0aGUgYWJzdHJhY3QgZmlsZXMuXG4gICAqIEBwYXJhbSBsZWFmIC0gVGhlIGxlYWYgdG8gY2hlY2suXG4gICAqIEByZXR1cm5zIFdoZXRoZXIgdGhlIGNvbW1hbmQgc2hvdWxkIGJlIGFkZGVkIHRvIHRoZSBhYnN0cmFjdCBmaWxlcyBtZW51LlxuICAgKi9cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHNob3VsZEFkZFRvQWJzdHJhY3RGaWxlc01lbnUoYWJzdHJhY3RGaWxlczogVEFic3RyYWN0RmlsZVtdLCBzb3VyY2U6IHN0cmluZywgbGVhZj86IFdvcmtzcGFjZUxlYWYpOiBib29sZWFuIHtcbiAgICBpZiAoIWFic3RyYWN0RmlsZXMuZXZlcnkoKGFic3RyYWN0RmlsZSkgPT4gaXNGaWxlKGFic3RyYWN0RmlsZSkpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnNob3VsZEFkZFRvRmlsZXNNZW51KGFzQXJyYXlPZkZpbGVzKGFic3RyYWN0RmlsZXMpLCBzb3VyY2UsIGxlYWYpO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyBpZiB0aGUgY29tbWFuZCBzaG91bGQgYmUgYWRkZWQgdG8gdGhlIGZpbGUgbWVudS5cbiAgICpcbiAgICogQHBhcmFtIF9maWxlIC0gVGhlIGZpbGUgdG8gY2hlY2suXG4gICAqIEBwYXJhbSBfc291cmNlIC0gVGhlIHNvdXJjZSBvZiB0aGUgZmlsZS5cbiAgICogQHBhcmFtIF9sZWFmIC0gVGhlIGxlYWYgdG8gY2hlY2suXG4gICAqIEByZXR1cm5zIFdoZXRoZXIgdGhlIGNvbW1hbmQgc2hvdWxkIGJlIGFkZGVkIHRvIHRoZSBmaWxlIG1lbnUuXG4gICAqL1xuICBwcm90ZWN0ZWQgc2hvdWxkQWRkVG9GaWxlTWVudShfZmlsZTogVEZpbGUsIF9zb3VyY2U6IHN0cmluZywgX2xlYWY/OiBXb3Jrc3BhY2VMZWFmKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyBpZiB0aGUgY29tbWFuZCBzaG91bGQgYmUgYWRkZWQgdG8gdGhlIGZpbGVzIG1lbnUuXG4gICAqXG4gICAqIEBwYXJhbSBfZmlsZXMgLSBUaGUgZmlsZXMgdG8gY2hlY2suXG4gICAqIEBwYXJhbSBfc291cmNlIC0gVGhlIHNvdXJjZSBvZiB0aGUgZmlsZXMuXG4gICAqIEBwYXJhbSBfbGVhZiAtIFRoZSBsZWFmIHRvIGNoZWNrLlxuICAgKiBAcmV0dXJucyBXaGV0aGVyIHRoZSBjb21tYW5kIHNob3VsZCBiZSBhZGRlZCB0byB0aGUgZmlsZXMgbWVudS5cbiAgICovXG4gIHByb3RlY3RlZCBzaG91bGRBZGRUb0ZpbGVzTWVudShfZmlsZXM6IFRGaWxlW10sIF9zb3VyY2U6IHN0cmluZywgX2xlYWY/OiBXb3Jrc3BhY2VMZWFmKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbi8qKlxuICogQmFzZSBjbGFzcyBmb3IgZmlsZXMgY29tbWFuZCBpbnZvY2F0aW9ucy5cbiAqXG4gKiBAdHlwZVBhcmFtIFRQbHVnaW4gLSBUaGUgdHlwZSBvZiB0aGUgcGx1Z2luIHRoYXQgdGhlIGNvbW1hbmQgYmVsb25ncyB0by5cbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEZpbGVzQ29tbWFuZEludm9jYXRpb25CYXNlPFRQbHVnaW4gZXh0ZW5kcyBQbHVnaW4+IGV4dGVuZHMgQWJzdHJhY3RGaWxlc0NvbW1hbmRJbnZvY2F0aW9uQmFzZTxUUGx1Z2luPiB7XG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgbmV3IGZpbGVzIGNvbW1hbmQgaW52b2NhdGlvbi5cbiAgICpcbiAgICogQHBhcmFtIHBsdWdpbiAtIFRoZSBwbHVnaW4gdGhhdCB0aGUgY29tbWFuZCBpbnZvY2F0aW9uIGJlbG9uZ3MgdG8uXG4gICAqIEBwYXJhbSBmaWxlcyAtIFRoZSBmaWxlcyB0byBpbnZva2UgdGhlIGNvbW1hbmQgZm9yLlxuICAgKi9cbiAgcHVibGljIGNvbnN0cnVjdG9yKHBsdWdpbjogVFBsdWdpbiwgcHVibGljIHJlYWRvbmx5IGZpbGVzOiBURmlsZVtdKSB7XG4gICAgc3VwZXIocGx1Z2luLCBmaWxlcyk7XG4gIH1cbn1cblxuLyoqXG4gKiBCYXNlIGNsYXNzIGZvciBzZXF1ZW50aWFsIGZpbGVzIGNvbW1hbmQgaW52b2NhdGlvbnMuXG4gKlxuICogQHR5cGVQYXJhbSBUUGx1Z2luIC0gVGhlIHR5cGUgb2YgdGhlIHBsdWdpbiB0aGF0IHRoZSBjb21tYW5kIGJlbG9uZ3MgdG8uXG4gKi9cbmV4cG9ydCBjbGFzcyBTZXF1ZW50aWFsRmlsZXNDb21tYW5kSW52b2NhdGlvbkJhc2U8VFBsdWdpbiBleHRlbmRzIFBsdWdpbj4gZXh0ZW5kcyBGaWxlc0NvbW1hbmRJbnZvY2F0aW9uQmFzZTxUUGx1Z2luPiB7XG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgbmV3IHNlcXVlbnRpYWwgZmlsZXMgY29tbWFuZCBpbnZvY2F0aW9uLlxuICAgKlxuICAgKiBAcGFyYW0gcGx1Z2luIC0gVGhlIHBsdWdpbiB0aGF0IHRoZSBjb21tYW5kIGludm9jYXRpb24gYmVsb25ncyB0by5cbiAgICogQHBhcmFtIGZpbGVzIC0gVGhlIGZpbGVzIHRvIGludm9rZSB0aGUgY29tbWFuZCBmb3IuXG4gICAqIEBwYXJhbSBjcmVhdGVDb21tYW5kSW52b2NhdGlvbkZvckZpbGUgLSBUaGUgZnVuY3Rpb24gdG8gY3JlYXRlIGEgY29tbWFuZCBpbnZvY2F0aW9uIGZvciBhIGZpbGUuXG4gICAqL1xuICBwdWJsaWMgY29uc3RydWN0b3IocGx1Z2luOiBUUGx1Z2luLCBmaWxlczogVEZpbGVbXSwgcHJpdmF0ZSByZWFkb25seSBjcmVhdGVDb21tYW5kSW52b2NhdGlvbkZvckZpbGU6IChmaWxlOiBURmlsZSkgPT4gRmlsZUNvbW1hbmRJbnZvY2F0aW9uQmFzZTxUUGx1Z2luPikge1xuICAgIHN1cGVyKHBsdWdpbiwgZmlsZXMpO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyBpZiB0aGUgY29tbWFuZCBjYW4gZXhlY3V0ZS5cbiAgICpcbiAgICogQHJldHVybnMgV2hldGhlciB0aGUgY29tbWFuZCBjYW4gZXhlY3V0ZS5cbiAgICovXG4gIHByb3RlY3RlZCBvdmVycmlkZSBjYW5FeGVjdXRlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBzdXBlci5jYW5FeGVjdXRlKCkgJiYgdGhpcy5maWxlcy5sZW5ndGggPiAwICYmIHRoaXMuZmlsZXMuZXZlcnkoKGZpbGUpID0+IHRoaXMuY3JlYXRlQ29tbWFuZEludm9jYXRpb25Gb3JGaWxlKGZpbGUpLmludm9rZSh0cnVlKSk7XG4gIH1cblxuICAvKipcbiAgICogRXhlY3V0ZXMgdGhlIGNvbW1hbmQuXG4gICAqXG4gICAqIEByZXR1cm5zIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIGNvbW1hbmQgaGFzIGJlZW4gZXhlY3V0ZWQuXG4gICAqL1xuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgYXN5bmMgZXhlY3V0ZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBmb3IgKGNvbnN0IGZpbGUgb2YgdGhpcy5maWxlcykge1xuICAgICAgYXdhaXQgdGhpcy5jcmVhdGVDb21tYW5kSW52b2NhdGlvbkZvckZpbGUoZmlsZSkuaW52b2tlQXN5bmMoZmFsc2UpO1xuICAgIH1cbiAgfVxufVxuLyogdjggaWdub3JlIHN0b3AgKi9cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQWNBLFNBQVMsYUFBYTtBQUl0QjtBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxPQUNLO0FBQ1A7QUFBQSxFQUNFO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxPQUNLO0FBT0EsTUFBZSxrQ0FBMEQsa0NBQTJDO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFPekgsSUFBYyxPQUFjO0FBQzFC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
@@ -5,7 +5,7 @@
5
5
  */
6
6
  import type { Plugin, TAbstractFile, WorkspaceLeaf } from 'obsidian';
7
7
  import { TFolder } from 'obsidian';
8
- import type { AbstractFileCommandBaseOptions } from './AbstractFileCommandBase.mjs';
8
+ import type { AbstractFileCommandBaseParams } from './AbstractFileCommandBase.mjs';
9
9
  import { AbstractFileCommandBase, AbstractFileCommandInvocationBase, AbstractFilesCommandInvocationBase } from './AbstractFileCommandBase.mjs';
10
10
  /**
11
11
  * Base class for folder command invocations.
@@ -64,9 +64,9 @@ export declare abstract class FolderCommandBase<TPlugin extends Plugin = Plugin>
64
64
  /**
65
65
  * Creates a new folder command.
66
66
  *
67
- * @param options - The options for the folder command.
67
+ * @param params - The parameters for the folder command.
68
68
  */
69
- constructor(options: AbstractFileCommandBaseOptions<TPlugin>);
69
+ constructor(params: AbstractFileCommandBaseParams<TPlugin>);
70
70
  /**
71
71
  * Creates a new abstract file command invocation.
72
72
  *
@@ -83,10 +83,10 @@ class FolderCommandBase extends AbstractFileCommandBase {
83
83
  /**
84
84
  * Creates a new folder command.
85
85
  *
86
- * @param options - The options for the folder command.
86
+ * @param params - The parameters for the folder command.
87
87
  */
88
- constructor(options) {
89
- super(options);
88
+ constructor(params) {
89
+ super(params);
90
90
  }
91
91
  /**
92
92
  * Creates a new abstract file command invocation.
@@ -226,4 +226,4 @@ export {
226
226
  FoldersCommandInvocationBase,
227
227
  SequentialFoldersCommandInvocationBase
228
228
  };
229
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL0NvbW1hbmRzL0ZvbGRlckNvbW1hbmRCYXNlLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBwYWNrYWdlRG9jdW1lbnRhdGlvblxuICpcbiAqIEJhc2UgY2xhc3NlcyBmb3IgZm9sZGVyIGNvbW1hbmRzLlxuICovXG5cbi8qIHY4IGlnbm9yZSBzdGFydCAtLSBEZWVwbHkgY291cGxlZCB0byBPYnNpZGlhbiBydW50aW1lOyByZXF1aXJlcyBydW5uaW5nIHZhdWx0IGZvciBtZWFuaW5nZnVsIHRlc3RpbmcuICovXG5cbmltcG9ydCB0eXBlIHtcbiAgUGx1Z2luLFxuICBUQWJzdHJhY3RGaWxlLFxuICBXb3Jrc3BhY2VMZWFmXG59IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHsgVEZvbGRlciB9IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHR5cGUgeyBBYnN0cmFjdEZpbGVDb21tYW5kQmFzZU9wdGlvbnMgfSBmcm9tICcuL0Fic3RyYWN0RmlsZUNvbW1hbmRCYXNlLnRzJztcblxuaW1wb3J0IHtcbiAgYXNBcnJheU9mRm9sZGVycyxcbiAgYXNGb2xkZXIsXG4gIGFzRm9sZGVyT3JOdWxsLFxuICBpc0ZvbGRlclxufSBmcm9tICcuLi9GaWxlU3lzdGVtLnRzJztcbmltcG9ydCB7XG4gIEFic3RyYWN0RmlsZUNvbW1hbmRCYXNlLFxuICBBYnN0cmFjdEZpbGVDb21tYW5kSW52b2NhdGlvbkJhc2UsXG4gIEFic3RyYWN0RmlsZXNDb21tYW5kSW52b2NhdGlvbkJhc2Vcbn0gZnJvbSAnLi9BYnN0cmFjdEZpbGVDb21tYW5kQmFzZS50cyc7XG5cbi8qKlxuICogQmFzZSBjbGFzcyBmb3IgZm9sZGVyIGNvbW1hbmQgaW52b2NhdGlvbnMuXG4gKlxuICogQHR5cGVQYXJhbSBUUGx1Z2luIC0gVGhlIHR5cGUgb2YgdGhlIHBsdWdpbiB0aGF0IHRoZSBjb21tYW5kIGJlbG9uZ3MgdG8uXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBGb2xkZXJDb21tYW5kSW52b2NhdGlvbkJhc2U8VFBsdWdpbiBleHRlbmRzIFBsdWdpbj4gZXh0ZW5kcyBBYnN0cmFjdEZpbGVDb21tYW5kSW52b2NhdGlvbkJhc2U8VFBsdWdpbj4ge1xuICAvKipcbiAgICogR2V0cyB0aGUgZm9sZGVyIHRoYXQgdGhlIGNvbW1hbmQgaW52b2NhdGlvbiBiZWxvbmdzIHRvLlxuICAgKlxuICAgKiBAcmV0dXJucyBUaGUgZm9sZGVyIHRoYXQgdGhlIGNvbW1hbmQgaW52b2NhdGlvbiBiZWxvbmdzIHRvLlxuICAgKiBAdGhyb3dzIElmIHRoZSBhYnN0cmFjdCBmaWxlIGlzIG5vdCBhIGZvbGRlci5cbiAgICovXG4gIHByb3RlY3RlZCBnZXQgZm9sZGVyKCk6IFRGb2xkZXIge1xuICAgIHJldHVybiBhc0ZvbGRlcih0aGlzLl9hYnN0cmFjdEZpbGUpO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyBpZiB0aGUgY29tbWFuZCBjYW4gZXhlY3V0ZS5cbiAgICpcbiAgICogQHJldHVybnMgV2hldGhlciB0aGUgY29tbWFuZCBjYW4gZXhlY3V0ZS5cbiAgICovXG4gIHByb3RlY3RlZCBvdmVycmlkZSBjYW5FeGVjdXRlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBzdXBlci5jYW5FeGVjdXRlKCkgJiYgISF0aGlzLmZvbGRlcjtcbiAgfVxufVxuXG4vKipcbiAqIEJhc2UgY2xhc3MgZm9yIGFycmF5LWRlbGVnYXRpbmcgZmlsZSBjb21tYW5kIGludm9jYXRpb25zLlxuICpcbiAqIEB0eXBlUGFyYW0gVFBsdWdpbiAtIFRoZSB0eXBlIG9mIHRoZSBwbHVnaW4gdGhhdCB0aGUgY29tbWFuZCBiZWxvbmdzIHRvLlxuICovXG5leHBvcnQgY2xhc3MgQXJyYXlEZWxlZ2F0aW5nRm9sZGVyQ29tbWFuZEludm9jYXRpb248VFBsdWdpbiBleHRlbmRzIFBsdWdpbj4gZXh0ZW5kcyBGb2xkZXJDb21tYW5kSW52b2NhdGlvbkJhc2U8VFBsdWdpbj4ge1xuICAvKipcbiAgICogQ3JlYXRlcyBhIG5ldyBhcnJheS1kZWxlZ2F0aW5nIGZvbGRlciBjb21tYW5kIGludm9jYXRpb24uXG4gICAqXG4gICAqIEBwYXJhbSBwbHVnaW4gLSBUaGUgcGx1Z2luIHRoYXQgdGhlIGNvbW1hbmQgaW52b2NhdGlvbiBiZWxvbmdzIHRvLlxuICAgKiBAcGFyYW0gZm9sZGVyIC0gVGhlIGZpbGUgdG8gaW52b2tlIHRoZSBjb21tYW5kIGZvci5cbiAgICogQHBhcmFtIGNyZWF0ZUNvbW1hbmRJbnZvY2F0aW9uRm9yRmlsZXMgLSBUaGUgZnVuY3Rpb24gdG8gY3JlYXRlIGEgY29tbWFuZCBpbnZvY2F0aW9uIGZvciBmaWxlcy5cbiAgICovXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihcbiAgICBwbHVnaW46IFRQbHVnaW4sXG4gICAgZm9sZGVyOiBudWxsIHwgVEZvbGRlcixcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNyZWF0ZUNvbW1hbmRJbnZvY2F0aW9uRm9yRmlsZXM6IChmb2xkZXJzOiBURm9sZGVyW10pID0+IEZvbGRlcnNDb21tYW5kSW52b2NhdGlvbkJhc2U8VFBsdWdpbj5cbiAgKSB7XG4gICAgc3VwZXIocGx1Z2luLCBmb2xkZXIpO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyBpZiB0aGUgY29tbWFuZCBjYW4gZXhlY3V0ZS5cbiAgICpcbiAgICogQHJldHVybnMgV2hldGhlciB0aGUgY29tbWFuZCBjYW4gZXhlY3V0ZS5cbiAgICovXG4gIHByb3RlY3RlZCBvdmVycmlkZSBjYW5FeGVjdXRlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBzdXBlci5jYW5FeGVjdXRlKCkgJiYgdGhpcy5jcmVhdGVDb21tYW5kSW52b2NhdGlvbkZvckZpbGVzKFt0aGlzLmZvbGRlcl0pLmludm9rZSh0cnVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFeGVjdXRlcyB0aGUgY29tbWFuZC5cbiAgICpcbiAgICogQHJldHVybnMgQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgY29tbWFuZCBoYXMgYmVlbiBleGVjdXRlZC5cbiAgICovXG4gIHByb3RlY3RlZCBvdmVycmlkZSBhc3luYyBleGVjdXRlKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IHRoaXMuY3JlYXRlQ29tbWFuZEludm9jYXRpb25Gb3JGaWxlcyhbdGhpcy5mb2xkZXJdKS5pbnZva2VBc3luYyhmYWxzZSk7XG4gIH1cbn1cblxuLyoqXG4gKiBCYXNlIGNsYXNzIGZvciBmb2xkZXIgY29tbWFuZHMuXG4gKlxuICogQHR5cGVQYXJhbSBUUGx1Z2luIC0gVGhlIHR5cGUgb2YgdGhlIHBsdWdpbiB0aGF0IHRoZSBjb21tYW5kIGJlbG9uZ3MgdG8uXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBGb2xkZXJDb21tYW5kQmFzZTxUUGx1Z2luIGV4dGVuZHMgUGx1Z2luID0gUGx1Z2luPiBleHRlbmRzIEFic3RyYWN0RmlsZUNvbW1hbmRCYXNlPFRQbHVnaW4+IHtcbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXcgZm9sZGVyIGNvbW1hbmQuXG4gICAqXG4gICAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIG9wdGlvbnMgZm9yIHRoZSBmb2xkZXIgY29tbWFuZC5cbiAgICovXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihvcHRpb25zOiBBYnN0cmFjdEZpbGVDb21tYW5kQmFzZU9wdGlvbnM8VFBsdWdpbj4pIHtcbiAgICBzdXBlcihvcHRpb25zKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgbmV3IGFic3RyYWN0IGZpbGUgY29tbWFuZCBpbnZvY2F0aW9uLlxuICAgKlxuICAgKiBAcGFyYW0gYWJzdHJhY3RGaWxlIC0gVGhlIGFic3RyYWN0IGZpbGUgdG8gaW52b2tlIHRoZSBjb21tYW5kIGZvci5cbiAgICogQHJldHVybnMgQSBuZXcgYWJzdHJhY3QgZmlsZSBjb21tYW5kIGludm9jYXRpb24uXG4gICAqL1xuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgY3JlYXRlQ29tbWFuZEludm9jYXRpb24oYWJzdHJhY3RGaWxlPzogVEFic3RyYWN0RmlsZSk6IEFic3RyYWN0RmlsZUNvbW1hbmRJbnZvY2F0aW9uQmFzZTxUUGx1Z2luPiB7XG4gICAgY29uc3QgZm9sZGVyID0gYXNGb2xkZXJPck51bGwoYWJzdHJhY3RGaWxlID8/IG51bGwpID8/IHRoaXMuYXBwLndvcmtzcGFjZS5nZXRBY3RpdmVGaWxlKCk/LnBhcmVudCA/PyBudWxsO1xuICAgIHJldHVybiB0aGlzLmNyZWF0ZUNvbW1hbmRJbnZvY2F0aW9uRm9yRm9sZGVyKGZvbGRlcik7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIG5ldyBhYnN0cmFjdCBmaWxlIGNvbW1hbmQgaW52b2NhdGlvbiBmb3IgYW4gYWJzdHJhY3QgZmlsZS5cbiAgICpcbiAgICogQHBhcmFtIGFic3RyYWN0RmlsZSAtIFRoZSBhYnN0cmFjdCBmaWxlIHRvIGludm9rZSB0aGUgY29tbWFuZCBmb3IuXG4gICAqIEByZXR1cm5zIEEgbmV3IGFic3RyYWN0IGZpbGUgY29tbWFuZCBpbnZvY2F0aW9uLlxuICAgKi9cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIGNyZWF0ZUNvbW1hbmRJbnZvY2F0aW9uRm9yQWJzdHJhY3RGaWxlKGFic3RyYWN0RmlsZTogbnVsbCB8IFRBYnN0cmFjdEZpbGUpOiBBYnN0cmFjdEZpbGVDb21tYW5kSW52b2NhdGlvbkJhc2U8VFBsdWdpbj4ge1xuICAgIHJldHVybiB0aGlzLmNyZWF0ZUNvbW1hbmRJbnZvY2F0aW9uRm9yRm9sZGVyKGFzRm9sZGVyT3JOdWxsKGFic3RyYWN0RmlsZSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXcgYWJzdHJhY3QgZmlsZXMgY29tbWFuZCBpbnZvY2F0aW9uIGZvciBhYnN0cmFjdCBmaWxlcy5cbiAgICpcbiAgICogQHBhcmFtIGFic3RyYWN0RmlsZXMgLSBUaGUgYWJzdHJhY3QgZmlsZXMgdG8gaW52b2tlIHRoZSBjb21tYW5kIGZvci5cbiAgICogQHJldHVybnMgQSBuZXcgYWJzdHJhY3QgZmlsZXMgY29tbWFuZCBpbnZvY2F0aW9uLlxuICAgKi9cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIGNyZWF0ZUNvbW1hbmRJbnZvY2F0aW9uRm9yQWJzdHJhY3RGaWxlcyhhYnN0cmFjdEZpbGVzOiBUQWJzdHJhY3RGaWxlW10pOiBBYnN0cmFjdEZpbGVzQ29tbWFuZEludm9jYXRpb25CYXNlPFRQbHVnaW4+IHtcbiAgICByZXR1cm4gdGhpcy5jcmVhdGVDb21tYW5kSW52b2NhdGlvbkZvckZvbGRlcnMoYXNBcnJheU9mRm9sZGVycyhhYnN0cmFjdEZpbGVzKSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIG5ldyBhYnN0cmFjdCBmaWxlIGNvbW1hbmQgaW52b2NhdGlvbiBmb3IgYSBmb2xkZXIuXG4gICAqXG4gICAqIEBwYXJhbSBmb2xkZXIgLSBUaGUgZm9sZGVyIHRvIGludm9rZSB0aGUgY29tbWFuZCBmb3IuXG4gICAqIEByZXR1cm5zIEEgbmV3IGZvbGRlciBjb21tYW5kIGludm9jYXRpb24uXG4gICAqL1xuICBwcm90ZWN0ZWQgYWJzdHJhY3QgY3JlYXRlQ29tbWFuZEludm9jYXRpb25Gb3JGb2xkZXIoZm9sZGVyOiBudWxsIHwgVEZvbGRlcik6IEZvbGRlckNvbW1hbmRJbnZvY2F0aW9uQmFzZTxUUGx1Z2luPjtcblxuICAvKipcbiAgICogQ3JlYXRlcyBhIG5ldyBmb2xkZXJzIGNvbW1hbmQgaW52b2NhdGlvbiBmb3IgZm9sZGVycy5cbiAgICpcbiAgICogQHBhcmFtIGZvbGRlcnMgLSBUaGUgZm9sZGVycyB0byBpbnZva2UgdGhlIGNvbW1hbmQgZm9yLlxuICAgKiBAcmV0dXJucyBBIG5ldyBmb2xkZXJzIGNvbW1hbmQgaW52b2NhdGlvbi5cbiAgICovXG4gIHByb3RlY3RlZCBjcmVhdGVDb21tYW5kSW52b2NhdGlvbkZvckZvbGRlcnMoZm9sZGVyczogVEZvbGRlcltdKTogRm9sZGVyc0NvbW1hbmRJbnZvY2F0aW9uQmFzZTxUUGx1Z2luPiB7XG4gICAgcmV0dXJuIG5ldyBTZXF1ZW50aWFsRm9sZGVyc0NvbW1hbmRJbnZvY2F0aW9uQmFzZSh0aGlzLnBsdWdpbiwgZm9sZGVycywgdGhpcy5jcmVhdGVDb21tYW5kSW52b2NhdGlvbkZvckZvbGRlci5iaW5kKHRoaXMpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgdGhlIGNvbW1hbmQgc2hvdWxkIGJlIGFkZGVkIHRvIHRoZSBhYnN0cmFjdCBmaWxlIG1lbnUuXG4gICAqXG4gICAqIEBwYXJhbSBhYnN0cmFjdEZpbGUgLSBUaGUgYWJzdHJhY3QgZmlsZSB0byBjaGVjay5cbiAgICogQHBhcmFtIHNvdXJjZSAtIFRoZSBzb3VyY2Ugb2YgdGhlIGFic3RyYWN0IGZpbGUuXG4gICAqIEBwYXJhbSBsZWFmIC0gVGhlIGxlYWYgdG8gY2hlY2suXG4gICAqIEByZXR1cm5zIFdoZXRoZXIgdGhlIGNvbW1hbmQgc2hvdWxkIGJlIGFkZGVkIHRvIHRoZSBhYnN0cmFjdCBmaWxlIG1lbnUuXG4gICAqL1xuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgc2hvdWxkQWRkVG9BYnN0cmFjdEZpbGVNZW51KGFic3RyYWN0RmlsZTogVEFic3RyYWN0RmlsZSwgc291cmNlOiBzdHJpbmcsIGxlYWY/OiBXb3Jrc3BhY2VMZWFmKTogYm9vbGVhbiB7XG4gICAgaWYgKCFpc0ZvbGRlcihhYnN0cmFjdEZpbGUpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnNob3VsZEFkZFRvRm9sZGVyTWVudShhYnN0cmFjdEZpbGUsIHNvdXJjZSwgbGVhZik7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIGlmIHRoZSBjb21tYW5kIHNob3VsZCBiZSBhZGRlZCB0byB0aGUgYWJzdHJhY3QgZmlsZXMgbWVudS5cbiAgICpcbiAgICogQHBhcmFtIGFic3RyYWN0RmlsZXMgLSBUaGUgYWJzdHJhY3QgZmlsZXMgdG8gY2hlY2suXG4gICAqIEBwYXJhbSBzb3VyY2UgLSBUaGUgc291cmNlIG9mIHRoZSBhYnN0cmFjdCBmaWxlcy5cbiAgICogQHBhcmFtIGxlYWYgLSBUaGUgbGVhZiB0byBjaGVjay5cbiAgICogQHJldHVybnMgV2hldGhlciB0aGUgY29tbWFuZCBzaG91bGQgYmUgYWRkZWQgdG8gdGhlIGFic3RyYWN0IGZpbGVzIG1lbnUuXG4gICAqL1xuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgc2hvdWxkQWRkVG9BYnN0cmFjdEZpbGVzTWVudShhYnN0cmFjdEZpbGVzOiBUQWJzdHJhY3RGaWxlW10sIHNvdXJjZTogc3RyaW5nLCBsZWFmPzogV29ya3NwYWNlTGVhZik6IGJvb2xlYW4ge1xuICAgIGlmICghYWJzdHJhY3RGaWxlcy5ldmVyeSgoYWJzdHJhY3RGaWxlKSA9PiBpc0ZvbGRlcihhYnN0cmFjdEZpbGUpKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5zaG91bGRBZGRUb0ZvbGRlcnNNZW51KGFzQXJyYXlPZkZvbGRlcnMoYWJzdHJhY3RGaWxlcyksIHNvdXJjZSwgbGVhZik7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIGlmIHRoZSBjb21tYW5kIHNob3VsZCBiZSBhZGRlZCB0byB0aGUgZm9sZGVyIG1lbnUuXG4gICAqXG4gICAqIEBwYXJhbSBfZm9sZGVyIC0gVGhlIGZvbGRlciB0byBjaGVjay5cbiAgICogQHBhcmFtIF9zb3VyY2UgLSBUaGUgc291cmNlIG9mIHRoZSBmb2xkZXIuXG4gICAqIEBwYXJhbSBfbGVhZiAtIFRoZSBsZWFmIHRvIGNoZWNrLlxuICAgKiBAcmV0dXJucyBXaGV0aGVyIHRoZSBjb21tYW5kIHNob3VsZCBiZSBhZGRlZCB0byB0aGUgZm9sZGVyIG1lbnUuXG4gICAqL1xuICBwcm90ZWN0ZWQgc2hvdWxkQWRkVG9Gb2xkZXJNZW51KF9mb2xkZXI6IFRGb2xkZXIsIF9zb3VyY2U6IHN0cmluZywgX2xlYWY/OiBXb3Jrc3BhY2VMZWFmKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyBpZiB0aGUgY29tbWFuZCBzaG91bGQgYmUgYWRkZWQgdG8gdGhlIGZvbGRlcnMgbWVudS5cbiAgICpcbiAgICogQHBhcmFtIF9mb2xkZXJzIC0gVGhlIGZvbGRlcnMgdG8gY2hlY2suXG4gICAqIEBwYXJhbSBfc291cmNlIC0gVGhlIHNvdXJjZSBvZiB0aGUgZm9sZGVycy5cbiAgICogQHBhcmFtIF9sZWFmIC0gVGhlIGxlYWYgdG8gY2hlY2suXG4gICAqIEByZXR1cm5zIFdoZXRoZXIgdGhlIGNvbW1hbmQgc2hvdWxkIGJlIGFkZGVkIHRvIHRoZSBmb2xkZXJzIG1lbnUuXG4gICAqL1xuICBwcm90ZWN0ZWQgc2hvdWxkQWRkVG9Gb2xkZXJzTWVudShfZm9sZGVyczogVEZvbGRlcltdLCBfc291cmNlOiBzdHJpbmcsIF9sZWFmPzogV29ya3NwYWNlTGVhZik6IGJvb2xlYW4ge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG4vKipcbiAqIEJhc2UgY2xhc3MgZm9yIGZvbGRlcnMgY29tbWFuZCBpbnZvY2F0aW9ucy5cbiAqXG4gKiBAdHlwZVBhcmFtIFRQbHVnaW4gLSBUaGUgdHlwZSBvZiB0aGUgcGx1Z2luIHRoYXQgdGhlIGNvbW1hbmQgYmVsb25ncyB0by5cbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEZvbGRlcnNDb21tYW5kSW52b2NhdGlvbkJhc2U8VFBsdWdpbiBleHRlbmRzIFBsdWdpbj4gZXh0ZW5kcyBBYnN0cmFjdEZpbGVzQ29tbWFuZEludm9jYXRpb25CYXNlPFRQbHVnaW4+IHtcbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXcgZm9sZGVycyBjb21tYW5kIGludm9jYXRpb24uXG4gICAqXG4gICAqIEBwYXJhbSBwbHVnaW4gLSBUaGUgcGx1Z2luIHRoYXQgdGhlIGNvbW1hbmQgaW52b2NhdGlvbiBiZWxvbmdzIHRvLlxuICAgKiBAcGFyYW0gZm9sZGVycyAtIFRoZSBmb2xkZXJzIHRvIGludm9rZSB0aGUgY29tbWFuZCBmb3IuXG4gICAqL1xuICBwdWJsaWMgY29uc3RydWN0b3IocGx1Z2luOiBUUGx1Z2luLCBwdWJsaWMgcmVhZG9ubHkgZm9sZGVyczogVEZvbGRlcltdKSB7XG4gICAgc3VwZXIocGx1Z2luLCBmb2xkZXJzKTtcbiAgfVxufVxuXG4vKipcbiAqIEJhc2UgY2xhc3MgZm9yIHNlcXVlbnRpYWwgZm9sZGVycyBjb21tYW5kIGludm9jYXRpb25zLlxuICpcbiAqIEB0eXBlUGFyYW0gVFBsdWdpbiAtIFRoZSB0eXBlIG9mIHRoZSBwbHVnaW4gdGhhdCB0aGUgY29tbWFuZCBiZWxvbmdzIHRvLlxuICovXG5leHBvcnQgY2xhc3MgU2VxdWVudGlhbEZvbGRlcnNDb21tYW5kSW52b2NhdGlvbkJhc2U8VFBsdWdpbiBleHRlbmRzIFBsdWdpbj4gZXh0ZW5kcyBGb2xkZXJzQ29tbWFuZEludm9jYXRpb25CYXNlPFRQbHVnaW4+IHtcbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXcgc2VxdWVudGlhbCBmb2xkZXJzIGNvbW1hbmQgaW52b2NhdGlvbi5cbiAgICpcbiAgICogQHBhcmFtIHBsdWdpbiAtIFRoZSBwbHVnaW4gdGhhdCB0aGUgY29tbWFuZCBpbnZvY2F0aW9uIGJlbG9uZ3MgdG8uXG4gICAqIEBwYXJhbSBmb2xkZXJzIC0gVGhlIGZvbGRlcnMgdG8gaW52b2tlIHRoZSBjb21tYW5kIGZvci5cbiAgICogQHBhcmFtIGNyZWF0ZUNvbW1hbmRJbnZvY2F0aW9uRm9yRm9sZGVyIC0gVGhlIGZ1bmN0aW9uIHRvIGNyZWF0ZSBhIGNvbW1hbmQgaW52b2NhdGlvbiBmb3IgYSBmb2xkZXIuXG4gICAqL1xuICBwdWJsaWMgY29uc3RydWN0b3IoXG4gICAgcGx1Z2luOiBUUGx1Z2luLFxuICAgIGZvbGRlcnM6IFRGb2xkZXJbXSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNyZWF0ZUNvbW1hbmRJbnZvY2F0aW9uRm9yRm9sZGVyOiAoZm9sZGVyOiBURm9sZGVyKSA9PiBGb2xkZXJDb21tYW5kSW52b2NhdGlvbkJhc2U8VFBsdWdpbj5cbiAgKSB7XG4gICAgc3VwZXIocGx1Z2luLCBmb2xkZXJzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgdGhlIGNvbW1hbmQgY2FuIGV4ZWN1dGUuXG4gICAqXG4gICAqIEByZXR1cm5zIFdoZXRoZXIgdGhlIGNvbW1hbmQgY2FuIGV4ZWN1dGUuXG4gICAqL1xuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgY2FuRXhlY3V0ZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gc3VwZXIuY2FuRXhlY3V0ZSgpICYmIHRoaXMuZm9sZGVycy5sZW5ndGggPiAwICYmIHRoaXMuZm9sZGVycy5ldmVyeSgoZm9sZGVyKSA9PiB0aGlzLmNyZWF0ZUNvbW1hbmRJbnZvY2F0aW9uRm9yRm9sZGVyKGZvbGRlcikuaW52b2tlKHRydWUpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFeGVjdXRlcyB0aGUgY29tbWFuZC5cbiAgICpcbiAgICogQHJldHVybnMgQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgY29tbWFuZCBoYXMgYmVlbiBleGVjdXRlZC5cbiAgICovXG4gIHByb3RlY3RlZCBvdmVycmlkZSBhc3luYyBleGVjdXRlKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGZvciAoY29uc3QgZm9sZGVyIG9mIHRoaXMuZm9sZGVycykge1xuICAgICAgYXdhaXQgdGhpcy5jcmVhdGVDb21tYW5kSW52b2NhdGlvbkZvckZvbGRlcihmb2xkZXIpLmludm9rZUFzeW5jKGZhbHNlKTtcbiAgICB9XG4gIH1cbn1cbi8qIHY4IGlnbm9yZSBzdG9wICovXG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFjQSxTQUFTLGVBQWU7QUFJeEI7QUFBQSxFQUNFO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsT0FDSztBQUNQO0FBQUEsRUFDRTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsT0FDSztBQU9BLE1BQWUsb0NBQTRELGtDQUEyQztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBTzNILElBQWMs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
229
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL0NvbW1hbmRzL0ZvbGRlckNvbW1hbmRCYXNlLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBwYWNrYWdlRG9jdW1lbnRhdGlvblxuICpcbiAqIEJhc2UgY2xhc3NlcyBmb3IgZm9sZGVyIGNvbW1hbmRzLlxuICovXG5cbi8qIHY4IGlnbm9yZSBzdGFydCAtLSBEZWVwbHkgY291cGxlZCB0byBPYnNpZGlhbiBydW50aW1lOyByZXF1aXJlcyBydW5uaW5nIHZhdWx0IGZvciBtZWFuaW5nZnVsIHRlc3RpbmcuICovXG5cbmltcG9ydCB0eXBlIHtcbiAgUGx1Z2luLFxuICBUQWJzdHJhY3RGaWxlLFxuICBXb3Jrc3BhY2VMZWFmXG59IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHsgVEZvbGRlciB9IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHR5cGUgeyBBYnN0cmFjdEZpbGVDb21tYW5kQmFzZVBhcmFtcyB9IGZyb20gJy4vQWJzdHJhY3RGaWxlQ29tbWFuZEJhc2UudHMnO1xuXG5pbXBvcnQge1xuICBhc0FycmF5T2ZGb2xkZXJzLFxuICBhc0ZvbGRlcixcbiAgYXNGb2xkZXJPck51bGwsXG4gIGlzRm9sZGVyXG59IGZyb20gJy4uL0ZpbGVTeXN0ZW0udHMnO1xuaW1wb3J0IHtcbiAgQWJzdHJhY3RGaWxlQ29tbWFuZEJhc2UsXG4gIEFic3RyYWN0RmlsZUNvbW1hbmRJbnZvY2F0aW9uQmFzZSxcbiAgQWJzdHJhY3RGaWxlc0NvbW1hbmRJbnZvY2F0aW9uQmFzZVxufSBmcm9tICcuL0Fic3RyYWN0RmlsZUNvbW1hbmRCYXNlLnRzJztcblxuLyoqXG4gKiBCYXNlIGNsYXNzIGZvciBmb2xkZXIgY29tbWFuZCBpbnZvY2F0aW9ucy5cbiAqXG4gKiBAdHlwZVBhcmFtIFRQbHVnaW4gLSBUaGUgdHlwZSBvZiB0aGUgcGx1Z2luIHRoYXQgdGhlIGNvbW1hbmQgYmVsb25ncyB0by5cbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEZvbGRlckNvbW1hbmRJbnZvY2F0aW9uQmFzZTxUUGx1Z2luIGV4dGVuZHMgUGx1Z2luPiBleHRlbmRzIEFic3RyYWN0RmlsZUNvbW1hbmRJbnZvY2F0aW9uQmFzZTxUUGx1Z2luPiB7XG4gIC8qKlxuICAgKiBHZXRzIHRoZSBmb2xkZXIgdGhhdCB0aGUgY29tbWFuZCBpbnZvY2F0aW9uIGJlbG9uZ3MgdG8uXG4gICAqXG4gICAqIEByZXR1cm5zIFRoZSBmb2xkZXIgdGhhdCB0aGUgY29tbWFuZCBpbnZvY2F0aW9uIGJlbG9uZ3MgdG8uXG4gICAqIEB0aHJvd3MgSWYgdGhlIGFic3RyYWN0IGZpbGUgaXMgbm90IGEgZm9sZGVyLlxuICAgKi9cbiAgcHJvdGVjdGVkIGdldCBmb2xkZXIoKTogVEZvbGRlciB7XG4gICAgcmV0dXJuIGFzRm9sZGVyKHRoaXMuX2Fic3RyYWN0RmlsZSk7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIGlmIHRoZSBjb21tYW5kIGNhbiBleGVjdXRlLlxuICAgKlxuICAgKiBAcmV0dXJucyBXaGV0aGVyIHRoZSBjb21tYW5kIGNhbiBleGVjdXRlLlxuICAgKi9cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIGNhbkV4ZWN1dGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHN1cGVyLmNhbkV4ZWN1dGUoKSAmJiAhIXRoaXMuZm9sZGVyO1xuICB9XG59XG5cbi8qKlxuICogQmFzZSBjbGFzcyBmb3IgYXJyYXktZGVsZWdhdGluZyBmaWxlIGNvbW1hbmQgaW52b2NhdGlvbnMuXG4gKlxuICogQHR5cGVQYXJhbSBUUGx1Z2luIC0gVGhlIHR5cGUgb2YgdGhlIHBsdWdpbiB0aGF0IHRoZSBjb21tYW5kIGJlbG9uZ3MgdG8uXG4gKi9cbmV4cG9ydCBjbGFzcyBBcnJheURlbGVnYXRpbmdGb2xkZXJDb21tYW5kSW52b2NhdGlvbjxUUGx1Z2luIGV4dGVuZHMgUGx1Z2luPiBleHRlbmRzIEZvbGRlckNvbW1hbmRJbnZvY2F0aW9uQmFzZTxUUGx1Z2luPiB7XG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgbmV3IGFycmF5LWRlbGVnYXRpbmcgZm9sZGVyIGNvbW1hbmQgaW52b2NhdGlvbi5cbiAgICpcbiAgICogQHBhcmFtIHBsdWdpbiAtIFRoZSBwbHVnaW4gdGhhdCB0aGUgY29tbWFuZCBpbnZvY2F0aW9uIGJlbG9uZ3MgdG8uXG4gICAqIEBwYXJhbSBmb2xkZXIgLSBUaGUgZmlsZSB0byBpbnZva2UgdGhlIGNvbW1hbmQgZm9yLlxuICAgKiBAcGFyYW0gY3JlYXRlQ29tbWFuZEludm9jYXRpb25Gb3JGaWxlcyAtIFRoZSBmdW5jdGlvbiB0byBjcmVhdGUgYSBjb21tYW5kIGludm9jYXRpb24gZm9yIGZpbGVzLlxuICAgKi9cbiAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgIHBsdWdpbjogVFBsdWdpbixcbiAgICBmb2xkZXI6IG51bGwgfCBURm9sZGVyLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgY3JlYXRlQ29tbWFuZEludm9jYXRpb25Gb3JGaWxlczogKGZvbGRlcnM6IFRGb2xkZXJbXSkgPT4gRm9sZGVyc0NvbW1hbmRJbnZvY2F0aW9uQmFzZTxUUGx1Z2luPlxuICApIHtcbiAgICBzdXBlcihwbHVnaW4sIGZvbGRlcik7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIGlmIHRoZSBjb21tYW5kIGNhbiBleGVjdXRlLlxuICAgKlxuICAgKiBAcmV0dXJucyBXaGV0aGVyIHRoZSBjb21tYW5kIGNhbiBleGVjdXRlLlxuICAgKi9cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIGNhbkV4ZWN1dGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHN1cGVyLmNhbkV4ZWN1dGUoKSAmJiB0aGlzLmNyZWF0ZUNvbW1hbmRJbnZvY2F0aW9uRm9yRmlsZXMoW3RoaXMuZm9sZGVyXSkuaW52b2tlKHRydWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIEV4ZWN1dGVzIHRoZSBjb21tYW5kLlxuICAgKlxuICAgKiBAcmV0dXJucyBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB3aGVuIHRoZSBjb21tYW5kIGhhcyBiZWVuIGV4ZWN1dGVkLlxuICAgKi9cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIGFzeW5jIGV4ZWN1dGUoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgdGhpcy5jcmVhdGVDb21tYW5kSW52b2NhdGlvbkZvckZpbGVzKFt0aGlzLmZvbGRlcl0pLmludm9rZUFzeW5jKGZhbHNlKTtcbiAgfVxufVxuXG4vKipcbiAqIEJhc2UgY2xhc3MgZm9yIGZvbGRlciBjb21tYW5kcy5cbiAqXG4gKiBAdHlwZVBhcmFtIFRQbHVnaW4gLSBUaGUgdHlwZSBvZiB0aGUgcGx1Z2luIHRoYXQgdGhlIGNvbW1hbmQgYmVsb25ncyB0by5cbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEZvbGRlckNvbW1hbmRCYXNlPFRQbHVnaW4gZXh0ZW5kcyBQbHVnaW4gPSBQbHVnaW4+IGV4dGVuZHMgQWJzdHJhY3RGaWxlQ29tbWFuZEJhc2U8VFBsdWdpbj4ge1xuICAvKipcbiAgICogQ3JlYXRlcyBhIG5ldyBmb2xkZXIgY29tbWFuZC5cbiAgICpcbiAgICogQHBhcmFtIHBhcmFtcyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgZm9sZGVyIGNvbW1hbmQuXG4gICAqL1xuICBwdWJsaWMgY29uc3RydWN0b3IocGFyYW1zOiBBYnN0cmFjdEZpbGVDb21tYW5kQmFzZVBhcmFtczxUUGx1Z2luPikge1xuICAgIHN1cGVyKHBhcmFtcyk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIG5ldyBhYnN0cmFjdCBmaWxlIGNvbW1hbmQgaW52b2NhdGlvbi5cbiAgICpcbiAgICogQHBhcmFtIGFic3RyYWN0RmlsZSAtIFRoZSBhYnN0cmFjdCBmaWxlIHRvIGludm9rZSB0aGUgY29tbWFuZCBmb3IuXG4gICAqIEByZXR1cm5zIEEgbmV3IGFic3RyYWN0IGZpbGUgY29tbWFuZCBpbnZvY2F0aW9uLlxuICAgKi9cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIGNyZWF0ZUNvbW1hbmRJbnZvY2F0aW9uKGFic3RyYWN0RmlsZT86IFRBYnN0cmFjdEZpbGUpOiBBYnN0cmFjdEZpbGVDb21tYW5kSW52b2NhdGlvbkJhc2U8VFBsdWdpbj4ge1xuICAgIGNvbnN0IGZvbGRlciA9IGFzRm9sZGVyT3JOdWxsKGFic3RyYWN0RmlsZSA/PyBudWxsKSA/PyB0aGlzLmFwcC53b3Jrc3BhY2UuZ2V0QWN0aXZlRmlsZSgpPy5wYXJlbnQgPz8gbnVsbDtcbiAgICByZXR1cm4gdGhpcy5jcmVhdGVDb21tYW5kSW52b2NhdGlvbkZvckZvbGRlcihmb2xkZXIpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXcgYWJzdHJhY3QgZmlsZSBjb21tYW5kIGludm9jYXRpb24gZm9yIGFuIGFic3RyYWN0IGZpbGUuXG4gICAqXG4gICAqIEBwYXJhbSBhYnN0cmFjdEZpbGUgLSBUaGUgYWJzdHJhY3QgZmlsZSB0byBpbnZva2UgdGhlIGNvbW1hbmQgZm9yLlxuICAgKiBAcmV0dXJucyBBIG5ldyBhYnN0cmFjdCBmaWxlIGNvbW1hbmQgaW52b2NhdGlvbi5cbiAgICovXG4gIHByb3RlY3RlZCBvdmVycmlkZSBjcmVhdGVDb21tYW5kSW52b2NhdGlvbkZvckFic3RyYWN0RmlsZShhYnN0cmFjdEZpbGU6IG51bGwgfCBUQWJzdHJhY3RGaWxlKTogQWJzdHJhY3RGaWxlQ29tbWFuZEludm9jYXRpb25CYXNlPFRQbHVnaW4+IHtcbiAgICByZXR1cm4gdGhpcy5jcmVhdGVDb21tYW5kSW52b2NhdGlvbkZvckZvbGRlcihhc0ZvbGRlck9yTnVsbChhYnN0cmFjdEZpbGUpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgbmV3IGFic3RyYWN0IGZpbGVzIGNvbW1hbmQgaW52b2NhdGlvbiBmb3IgYWJzdHJhY3QgZmlsZXMuXG4gICAqXG4gICAqIEBwYXJhbSBhYnN0cmFjdEZpbGVzIC0gVGhlIGFic3RyYWN0IGZpbGVzIHRvIGludm9rZSB0aGUgY29tbWFuZCBmb3IuXG4gICAqIEByZXR1cm5zIEEgbmV3IGFic3RyYWN0IGZpbGVzIGNvbW1hbmQgaW52b2NhdGlvbi5cbiAgICovXG4gIHByb3RlY3RlZCBvdmVycmlkZSBjcmVhdGVDb21tYW5kSW52b2NhdGlvbkZvckFic3RyYWN0RmlsZXMoYWJzdHJhY3RGaWxlczogVEFic3RyYWN0RmlsZVtdKTogQWJzdHJhY3RGaWxlc0NvbW1hbmRJbnZvY2F0aW9uQmFzZTxUUGx1Z2luPiB7XG4gICAgcmV0dXJuIHRoaXMuY3JlYXRlQ29tbWFuZEludm9jYXRpb25Gb3JGb2xkZXJzKGFzQXJyYXlPZkZvbGRlcnMoYWJzdHJhY3RGaWxlcykpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXcgYWJzdHJhY3QgZmlsZSBjb21tYW5kIGludm9jYXRpb24gZm9yIGEgZm9sZGVyLlxuICAgKlxuICAgKiBAcGFyYW0gZm9sZGVyIC0gVGhlIGZvbGRlciB0byBpbnZva2UgdGhlIGNvbW1hbmQgZm9yLlxuICAgKiBAcmV0dXJucyBBIG5ldyBmb2xkZXIgY29tbWFuZCBpbnZvY2F0aW9uLlxuICAgKi9cbiAgcHJvdGVjdGVkIGFic3RyYWN0IGNyZWF0ZUNvbW1hbmRJbnZvY2F0aW9uRm9yRm9sZGVyKGZvbGRlcjogbnVsbCB8IFRGb2xkZXIpOiBGb2xkZXJDb21tYW5kSW52b2NhdGlvbkJhc2U8VFBsdWdpbj47XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXcgZm9sZGVycyBjb21tYW5kIGludm9jYXRpb24gZm9yIGZvbGRlcnMuXG4gICAqXG4gICAqIEBwYXJhbSBmb2xkZXJzIC0gVGhlIGZvbGRlcnMgdG8gaW52b2tlIHRoZSBjb21tYW5kIGZvci5cbiAgICogQHJldHVybnMgQSBuZXcgZm9sZGVycyBjb21tYW5kIGludm9jYXRpb24uXG4gICAqL1xuICBwcm90ZWN0ZWQgY3JlYXRlQ29tbWFuZEludm9jYXRpb25Gb3JGb2xkZXJzKGZvbGRlcnM6IFRGb2xkZXJbXSk6IEZvbGRlcnNDb21tYW5kSW52b2NhdGlvbkJhc2U8VFBsdWdpbj4ge1xuICAgIHJldHVybiBuZXcgU2VxdWVudGlhbEZvbGRlcnNDb21tYW5kSW52b2NhdGlvbkJhc2UodGhpcy5wbHVnaW4sIGZvbGRlcnMsIHRoaXMuY3JlYXRlQ29tbWFuZEludm9jYXRpb25Gb3JGb2xkZXIuYmluZCh0aGlzKSk7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIGlmIHRoZSBjb21tYW5kIHNob3VsZCBiZSBhZGRlZCB0byB0aGUgYWJzdHJhY3QgZmlsZSBtZW51LlxuICAgKlxuICAgKiBAcGFyYW0gYWJzdHJhY3RGaWxlIC0gVGhlIGFic3RyYWN0IGZpbGUgdG8gY2hlY2suXG4gICAqIEBwYXJhbSBzb3VyY2UgLSBUaGUgc291cmNlIG9mIHRoZSBhYnN0cmFjdCBmaWxlLlxuICAgKiBAcGFyYW0gbGVhZiAtIFRoZSBsZWFmIHRvIGNoZWNrLlxuICAgKiBAcmV0dXJucyBXaGV0aGVyIHRoZSBjb21tYW5kIHNob3VsZCBiZSBhZGRlZCB0byB0aGUgYWJzdHJhY3QgZmlsZSBtZW51LlxuICAgKi9cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHNob3VsZEFkZFRvQWJzdHJhY3RGaWxlTWVudShhYnN0cmFjdEZpbGU6IFRBYnN0cmFjdEZpbGUsIHNvdXJjZTogc3RyaW5nLCBsZWFmPzogV29ya3NwYWNlTGVhZik6IGJvb2xlYW4ge1xuICAgIGlmICghaXNGb2xkZXIoYWJzdHJhY3RGaWxlKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5zaG91bGRBZGRUb0ZvbGRlck1lbnUoYWJzdHJhY3RGaWxlLCBzb3VyY2UsIGxlYWYpO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyBpZiB0aGUgY29tbWFuZCBzaG91bGQgYmUgYWRkZWQgdG8gdGhlIGFic3RyYWN0IGZpbGVzIG1lbnUuXG4gICAqXG4gICAqIEBwYXJhbSBhYnN0cmFjdEZpbGVzIC0gVGhlIGFic3RyYWN0IGZpbGVzIHRvIGNoZWNrLlxuICAgKiBAcGFyYW0gc291cmNlIC0gVGhlIHNvdXJjZSBvZiB0aGUgYWJzdHJhY3QgZmlsZXMuXG4gICAqIEBwYXJhbSBsZWFmIC0gVGhlIGxlYWYgdG8gY2hlY2suXG4gICAqIEByZXR1cm5zIFdoZXRoZXIgdGhlIGNvbW1hbmQgc2hvdWxkIGJlIGFkZGVkIHRvIHRoZSBhYnN0cmFjdCBmaWxlcyBtZW51LlxuICAgKi9cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHNob3VsZEFkZFRvQWJzdHJhY3RGaWxlc01lbnUoYWJzdHJhY3RGaWxlczogVEFic3RyYWN0RmlsZVtdLCBzb3VyY2U6IHN0cmluZywgbGVhZj86IFdvcmtzcGFjZUxlYWYpOiBib29sZWFuIHtcbiAgICBpZiAoIWFic3RyYWN0RmlsZXMuZXZlcnkoKGFic3RyYWN0RmlsZSkgPT4gaXNGb2xkZXIoYWJzdHJhY3RGaWxlKSkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuc2hvdWxkQWRkVG9Gb2xkZXJzTWVudShhc0FycmF5T2ZGb2xkZXJzKGFic3RyYWN0RmlsZXMpLCBzb3VyY2UsIGxlYWYpO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyBpZiB0aGUgY29tbWFuZCBzaG91bGQgYmUgYWRkZWQgdG8gdGhlIGZvbGRlciBtZW51LlxuICAgKlxuICAgKiBAcGFyYW0gX2ZvbGRlciAtIFRoZSBmb2xkZXIgdG8gY2hlY2suXG4gICAqIEBwYXJhbSBfc291cmNlIC0gVGhlIHNvdXJjZSBvZiB0aGUgZm9sZGVyLlxuICAgKiBAcGFyYW0gX2xlYWYgLSBUaGUgbGVhZiB0byBjaGVjay5cbiAgICogQHJldHVybnMgV2hldGhlciB0aGUgY29tbWFuZCBzaG91bGQgYmUgYWRkZWQgdG8gdGhlIGZvbGRlciBtZW51LlxuICAgKi9cbiAgcHJvdGVjdGVkIHNob3VsZEFkZFRvRm9sZGVyTWVudShfZm9sZGVyOiBURm9sZGVyLCBfc291cmNlOiBzdHJpbmcsIF9sZWFmPzogV29ya3NwYWNlTGVhZik6IGJvb2xlYW4ge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgdGhlIGNvbW1hbmQgc2hvdWxkIGJlIGFkZGVkIHRvIHRoZSBmb2xkZXJzIG1lbnUuXG4gICAqXG4gICAqIEBwYXJhbSBfZm9sZGVycyAtIFRoZSBmb2xkZXJzIHRvIGNoZWNrLlxuICAgKiBAcGFyYW0gX3NvdXJjZSAtIFRoZSBzb3VyY2Ugb2YgdGhlIGZvbGRlcnMuXG4gICAqIEBwYXJhbSBfbGVhZiAtIFRoZSBsZWFmIHRvIGNoZWNrLlxuICAgKiBAcmV0dXJucyBXaGV0aGVyIHRoZSBjb21tYW5kIHNob3VsZCBiZSBhZGRlZCB0byB0aGUgZm9sZGVycyBtZW51LlxuICAgKi9cbiAgcHJvdGVjdGVkIHNob3VsZEFkZFRvRm9sZGVyc01lbnUoX2ZvbGRlcnM6IFRGb2xkZXJbXSwgX3NvdXJjZTogc3RyaW5nLCBfbGVhZj86IFdvcmtzcGFjZUxlYWYpOiBib29sZWFuIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn1cblxuLyoqXG4gKiBCYXNlIGNsYXNzIGZvciBmb2xkZXJzIGNvbW1hbmQgaW52b2NhdGlvbnMuXG4gKlxuICogQHR5cGVQYXJhbSBUUGx1Z2luIC0gVGhlIHR5cGUgb2YgdGhlIHBsdWdpbiB0aGF0IHRoZSBjb21tYW5kIGJlbG9uZ3MgdG8uXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBGb2xkZXJzQ29tbWFuZEludm9jYXRpb25CYXNlPFRQbHVnaW4gZXh0ZW5kcyBQbHVnaW4+IGV4dGVuZHMgQWJzdHJhY3RGaWxlc0NvbW1hbmRJbnZvY2F0aW9uQmFzZTxUUGx1Z2luPiB7XG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgbmV3IGZvbGRlcnMgY29tbWFuZCBpbnZvY2F0aW9uLlxuICAgKlxuICAgKiBAcGFyYW0gcGx1Z2luIC0gVGhlIHBsdWdpbiB0aGF0IHRoZSBjb21tYW5kIGludm9jYXRpb24gYmVsb25ncyB0by5cbiAgICogQHBhcmFtIGZvbGRlcnMgLSBUaGUgZm9sZGVycyB0byBpbnZva2UgdGhlIGNvbW1hbmQgZm9yLlxuICAgKi9cbiAgcHVibGljIGNvbnN0cnVjdG9yKHBsdWdpbjogVFBsdWdpbiwgcHVibGljIHJlYWRvbmx5IGZvbGRlcnM6IFRGb2xkZXJbXSkge1xuICAgIHN1cGVyKHBsdWdpbiwgZm9sZGVycyk7XG4gIH1cbn1cblxuLyoqXG4gKiBCYXNlIGNsYXNzIGZvciBzZXF1ZW50aWFsIGZvbGRlcnMgY29tbWFuZCBpbnZvY2F0aW9ucy5cbiAqXG4gKiBAdHlwZVBhcmFtIFRQbHVnaW4gLSBUaGUgdHlwZSBvZiB0aGUgcGx1Z2luIHRoYXQgdGhlIGNvbW1hbmQgYmVsb25ncyB0by5cbiAqL1xuZXhwb3J0IGNsYXNzIFNlcXVlbnRpYWxGb2xkZXJzQ29tbWFuZEludm9jYXRpb25CYXNlPFRQbHVnaW4gZXh0ZW5kcyBQbHVnaW4+IGV4dGVuZHMgRm9sZGVyc0NvbW1hbmRJbnZvY2F0aW9uQmFzZTxUUGx1Z2luPiB7XG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgbmV3IHNlcXVlbnRpYWwgZm9sZGVycyBjb21tYW5kIGludm9jYXRpb24uXG4gICAqXG4gICAqIEBwYXJhbSBwbHVnaW4gLSBUaGUgcGx1Z2luIHRoYXQgdGhlIGNvbW1hbmQgaW52b2NhdGlvbiBiZWxvbmdzIHRvLlxuICAgKiBAcGFyYW0gZm9sZGVycyAtIFRoZSBmb2xkZXJzIHRvIGludm9rZSB0aGUgY29tbWFuZCBmb3IuXG4gICAqIEBwYXJhbSBjcmVhdGVDb21tYW5kSW52b2NhdGlvbkZvckZvbGRlciAtIFRoZSBmdW5jdGlvbiB0byBjcmVhdGUgYSBjb21tYW5kIGludm9jYXRpb24gZm9yIGEgZm9sZGVyLlxuICAgKi9cbiAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgIHBsdWdpbjogVFBsdWdpbixcbiAgICBmb2xkZXJzOiBURm9sZGVyW10sXG4gICAgcHJpdmF0ZSByZWFkb25seSBjcmVhdGVDb21tYW5kSW52b2NhdGlvbkZvckZvbGRlcjogKGZvbGRlcjogVEZvbGRlcikgPT4gRm9sZGVyQ29tbWFuZEludm9jYXRpb25CYXNlPFRQbHVnaW4+XG4gICkge1xuICAgIHN1cGVyKHBsdWdpbiwgZm9sZGVycyk7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIGlmIHRoZSBjb21tYW5kIGNhbiBleGVjdXRlLlxuICAgKlxuICAgKiBAcmV0dXJucyBXaGV0aGVyIHRoZSBjb21tYW5kIGNhbiBleGVjdXRlLlxuICAgKi9cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIGNhbkV4ZWN1dGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHN1cGVyLmNhbkV4ZWN1dGUoKSAmJiB0aGlzLmZvbGRlcnMubGVuZ3RoID4gMCAmJiB0aGlzLmZvbGRlcnMuZXZlcnkoKGZvbGRlcikgPT4gdGhpcy5jcmVhdGVDb21tYW5kSW52b2NhdGlvbkZvckZvbGRlcihmb2xkZXIpLmludm9rZSh0cnVlKSk7XG4gIH1cblxuICAvKipcbiAgICogRXhlY3V0ZXMgdGhlIGNvbW1hbmQuXG4gICAqXG4gICAqIEByZXR1cm5zIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIGNvbW1hbmQgaGFzIGJlZW4gZXhlY3V0ZWQuXG4gICAqL1xuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgYXN5bmMgZXhlY3V0ZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBmb3IgKGNvbnN0IGZvbGRlciBvZiB0aGlzLmZvbGRlcnMpIHtcbiAgICAgIGF3YWl0IHRoaXMuY3JlYXRlQ29tbWFuZEludm9jYXRpb25Gb3JGb2xkZXIoZm9sZGVyKS5pbnZva2VBc3luYyhmYWxzZSk7XG4gICAgfVxuICB9XG59XG4vKiB2OCBpZ25vcmUgc3RvcCAqL1xuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBY0EsU0FBUyxlQUFlO0FBSXhCO0FBQUEsRUFDRTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLE9BQ0s7QUFDUDtBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLE9BQ0s7QUFPQSxNQUFlLG9DQUE0RCxrQ0FBMkM7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU8zSCxJQUFjLFNB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
@@ -4,7 +4,7 @@
4
4
  * Base classes for non-editor commands.
5
5
  */
6
6
  import type { Plugin } from 'obsidian';
7
- import type { CommandBaseOptions, CommandInvocationBase } from './CommandBase.mjs';
7
+ import type { CommandBaseParams, CommandInvocationBase } from './CommandBase.mjs';
8
8
  import { CommandBase } from './CommandBase.mjs';
9
9
  /**
10
10
  * Base class for non-editor commands.
@@ -15,9 +15,9 @@ export declare abstract class NonEditorCommandBase<TPlugin extends Plugin> exten
15
15
  /**
16
16
  * Creates a new non-editor command.
17
17
  *
18
- * @param options - The options for the non-editor command.
18
+ * @param params - The parameters for the non-editor command.
19
19
  */
20
- constructor(options: CommandBaseOptions<TPlugin>);
20
+ constructor(params: CommandBaseParams<TPlugin>);
21
21
  /**
22
22
  * Checks if the command can execute or executes it.
23
23
  *
@@ -24,10 +24,10 @@ class NonEditorCommandBase extends CommandBase {
24
24
  /**
25
25
  * Creates a new non-editor command.
26
26
  *
27
- * @param options - The options for the non-editor command.
27
+ * @param params - The parameters for the non-editor command.
28
28
  */
29
- constructor(options) {
30
- super(options);
29
+ constructor(params) {
30
+ super(params);
31
31
  this.checkCallback = this.checkCallback.bind(this);
32
32
  }
33
33
  /**
@@ -43,4 +43,4 @@ class NonEditorCommandBase extends CommandBase {
43
43
  export {
44
44
  NonEditorCommandBase
45
45
  };
46
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL0NvbW1hbmRzL05vbkVkaXRvckNvbW1hbmRCYXNlLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBwYWNrYWdlRG9jdW1lbnRhdGlvblxuICpcbiAqIEJhc2UgY2xhc3NlcyBmb3Igbm9uLWVkaXRvciBjb21tYW5kcy5cbiAqL1xuXG4vKiB2OCBpZ25vcmUgc3RhcnQgLS0gRGVlcGx5IGNvdXBsZWQgdG8gT2JzaWRpYW4gcnVudGltZTsgcmVxdWlyZXMgcnVubmluZyB2YXVsdCBmb3IgbWVhbmluZ2Z1bCB0ZXN0aW5nLiAqL1xuXG5pbXBvcnQgdHlwZSB7IFBsdWdpbiB9IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHR5cGUge1xuICBDb21tYW5kQmFzZU9wdGlvbnMsXG4gIENvbW1hbmRJbnZvY2F0aW9uQmFzZVxufSBmcm9tICcuL0NvbW1hbmRCYXNlLnRzJztcblxuaW1wb3J0IHsgQ29tbWFuZEJhc2UgfSBmcm9tICcuL0NvbW1hbmRCYXNlLnRzJztcblxuLyoqXG4gKiBCYXNlIGNsYXNzIGZvciBub24tZWRpdG9yIGNvbW1hbmRzLlxuICpcbiAqIEB0eXBlUGFyYW0gVFBsdWdpbiAtIFRoZSB0eXBlIG9mIHRoZSBwbHVnaW4gdGhhdCB0aGUgY29tbWFuZCBiZWxvbmdzIHRvLlxuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgTm9uRWRpdG9yQ29tbWFuZEJhc2U8VFBsdWdpbiBleHRlbmRzIFBsdWdpbj4gZXh0ZW5kcyBDb21tYW5kQmFzZTxUUGx1Z2luPiB7XG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgbmV3IG5vbi1lZGl0b3IgY29tbWFuZC5cbiAgICpcbiAgICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgb3B0aW9ucyBmb3IgdGhlIG5vbi1lZGl0b3IgY29tbWFuZC5cbiAgICovXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihvcHRpb25zOiBDb21tYW5kQmFzZU9wdGlvbnM8VFBsdWdpbj4pIHtcbiAgICBzdXBlcihvcHRpb25zKTtcblxuICAgIHRoaXMuY2hlY2tDYWxsYmFjayA9IHRoaXMuY2hlY2tDYWxsYmFjay5iaW5kKHRoaXMpO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyBpZiB0aGUgY29tbWFuZCBjYW4gZXhlY3V0ZSBvciBleGVjdXRlcyBpdC5cbiAgICpcbiAgICogQHBhcmFtIGNoZWNraW5nIC0gSXMgY2hlY2tpbmcgbW9kZSBvbmx5LiBJZiBgdHJ1ZWAsIG9ubHkgdGhlIGNoZWNrIGlmIHRoZSBjb21tYW5kIGNhbiBleGVjdXRlIGlzIHBlcmZvcm1lZC4gSWYgYGZhbHNlYCwgdGhlIGNvbW1hbmQgaXMgZXhlY3V0ZWQuXG4gICAqIEByZXR1cm5zIFdoZXRoZXIgdGhlIGNvbW1hbmQgY2FuIGV4ZWN1dGUuXG4gICAqL1xuICBwdWJsaWMgY2hlY2tDYWxsYmFjayhjaGVja2luZzogYm9vbGVhbik6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmNyZWF0ZUNvbW1hbmRJbnZvY2F0aW9uKCkuaW52b2tlKGNoZWNraW5nKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgbmV3IGNvbW1hbmQgaW52b2NhdGlvbi5cbiAgICpcbiAgICogQHJldHVybnMgVGhlIGNvbW1hbmQgaW52b2NhdGlvbi5cbiAgICovXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBjcmVhdGVDb21tYW5kSW52b2NhdGlvbigpOiBDb21tYW5kSW52b2NhdGlvbkJhc2U7XG59XG4vKiB2OCBpZ25vcmUgc3RvcCAqL1xuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBZUEsU0FBUyxtQkFBbUI7QUFPckIsTUFBZSw2QkFBcUQsWUFBcUI7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFNdkYsWUFBWSxTQUFzQztBQUN2RCxVQUFNLE9BQU87QUFFYixTQUFLLGdCQUFnQixLQUFLLGNBQWMsS0FBSyxJQUFJO0FBQUEsRUFDbkQ7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQVFPLGNBQWMsVUFBNEI7QUFDL0MsV0FBTyxLQUFLLHdCQUF3QixFQUFFLE9BQU8sUUFBUTtBQUFBLEVBQ3ZEO0FBUUY7IiwKICAibmFtZXMiOiBbXQp9Cg==
46
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL0NvbW1hbmRzL05vbkVkaXRvckNvbW1hbmRCYXNlLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBwYWNrYWdlRG9jdW1lbnRhdGlvblxuICpcbiAqIEJhc2UgY2xhc3NlcyBmb3Igbm9uLWVkaXRvciBjb21tYW5kcy5cbiAqL1xuXG4vKiB2OCBpZ25vcmUgc3RhcnQgLS0gRGVlcGx5IGNvdXBsZWQgdG8gT2JzaWRpYW4gcnVudGltZTsgcmVxdWlyZXMgcnVubmluZyB2YXVsdCBmb3IgbWVhbmluZ2Z1bCB0ZXN0aW5nLiAqL1xuXG5pbXBvcnQgdHlwZSB7IFBsdWdpbiB9IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHR5cGUge1xuICBDb21tYW5kQmFzZVBhcmFtcyxcbiAgQ29tbWFuZEludm9jYXRpb25CYXNlXG59IGZyb20gJy4vQ29tbWFuZEJhc2UudHMnO1xuXG5pbXBvcnQgeyBDb21tYW5kQmFzZSB9IGZyb20gJy4vQ29tbWFuZEJhc2UudHMnO1xuXG4vKipcbiAqIEJhc2UgY2xhc3MgZm9yIG5vbi1lZGl0b3IgY29tbWFuZHMuXG4gKlxuICogQHR5cGVQYXJhbSBUUGx1Z2luIC0gVGhlIHR5cGUgb2YgdGhlIHBsdWdpbiB0aGF0IHRoZSBjb21tYW5kIGJlbG9uZ3MgdG8uXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBOb25FZGl0b3JDb21tYW5kQmFzZTxUUGx1Z2luIGV4dGVuZHMgUGx1Z2luPiBleHRlbmRzIENvbW1hbmRCYXNlPFRQbHVnaW4+IHtcbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXcgbm9uLWVkaXRvciBjb21tYW5kLlxuICAgKlxuICAgKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBub24tZWRpdG9yIGNvbW1hbmQuXG4gICAqL1xuICBwdWJsaWMgY29uc3RydWN0b3IocGFyYW1zOiBDb21tYW5kQmFzZVBhcmFtczxUUGx1Z2luPikge1xuICAgIHN1cGVyKHBhcmFtcyk7XG5cbiAgICB0aGlzLmNoZWNrQ2FsbGJhY2sgPSB0aGlzLmNoZWNrQ2FsbGJhY2suYmluZCh0aGlzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgdGhlIGNvbW1hbmQgY2FuIGV4ZWN1dGUgb3IgZXhlY3V0ZXMgaXQuXG4gICAqXG4gICAqIEBwYXJhbSBjaGVja2luZyAtIElzIGNoZWNraW5nIG1vZGUgb25seS4gSWYgYHRydWVgLCBvbmx5IHRoZSBjaGVjayBpZiB0aGUgY29tbWFuZCBjYW4gZXhlY3V0ZSBpcyBwZXJmb3JtZWQuIElmIGBmYWxzZWAsIHRoZSBjb21tYW5kIGlzIGV4ZWN1dGVkLlxuICAgKiBAcmV0dXJucyBXaGV0aGVyIHRoZSBjb21tYW5kIGNhbiBleGVjdXRlLlxuICAgKi9cbiAgcHVibGljIGNoZWNrQ2FsbGJhY2soY2hlY2tpbmc6IGJvb2xlYW4pOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5jcmVhdGVDb21tYW5kSW52b2NhdGlvbigpLmludm9rZShjaGVja2luZyk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIG5ldyBjb21tYW5kIGludm9jYXRpb24uXG4gICAqXG4gICAqIEByZXR1cm5zIFRoZSBjb21tYW5kIGludm9jYXRpb24uXG4gICAqL1xuICBwcm90ZWN0ZWQgYWJzdHJhY3QgY3JlYXRlQ29tbWFuZEludm9jYXRpb24oKTogQ29tbWFuZEludm9jYXRpb25CYXNlO1xufVxuLyogdjggaWdub3JlIHN0b3AgKi9cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQWVBLFNBQVMsbUJBQW1CO0FBT3JCLE1BQWUsNkJBQXFELFlBQXFCO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBTXZGLFlBQVksUUFBb0M7QUFDckQsVUFBTSxNQUFNO0FBRVosU0FBSyxnQkFBZ0IsS0FBSyxjQUFjLEtBQUssSUFBSTtBQUFBLEVBQ25EO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFRTyxjQUFjLFVBQTRCO0FBQy9DLFdBQU8sS0FBSyx3QkFBd0IsRUFBRSxPQUFPLFFBQVE7QUFBQSxFQUN2RDtBQVFGOyIsCiAgIm5hbWVzIjogW10KfQo=
@@ -88,7 +88,7 @@ export type ArrayOrDataArray<T> = DataArray<T> | T[];
88
88
  /**
89
89
  * Options for {@link renderIframe}.
90
90
  */
91
- export interface RenderIframeOptions {
91
+ export interface RenderIframeParams {
92
92
  /**
93
93
  * A {@link DataviewInlineApi} instance.
94
94
  */
@@ -109,7 +109,7 @@ export interface RenderIframeOptions {
109
109
  /**
110
110
  * Options for {@link renderPaginatedList}.
111
111
  */
112
- export interface RenderPaginatedListOptions<T> {
112
+ export interface RenderPaginatedListParams<T> {
113
113
  /**
114
114
  * A {@link DataviewInlineApi} instance.
115
115
  */
@@ -126,7 +126,7 @@ export interface RenderPaginatedListOptions<T> {
126
126
  /**
127
127
  * Options for {@link renderPaginated}.
128
128
  */
129
- export interface RenderPaginatedOptions<T> {
129
+ export interface RenderPaginatedParams<T> {
130
130
  /**
131
131
  * A {@link DataviewInlineApi} instance.
132
132
  */
@@ -150,7 +150,7 @@ export interface RenderPaginatedOptions<T> {
150
150
  /**
151
151
  * Options for {@link renderPaginatedTable}.
152
152
  */
153
- export interface RenderPaginatedTableOptions<T> {
153
+ export interface RenderPaginatedTableParams<T> {
154
154
  /**
155
155
  * A {@link DataviewInlineApi} instance.
156
156
  */
@@ -189,26 +189,26 @@ export declare function insertCodeBlock(dv: DataviewInlineApi, language: string,
189
189
  /**
190
190
  * Renders an iframe in the Dataview container with the specified relative path, width, and height.
191
191
  *
192
- * @param options - The options for rendering the iframe.
192
+ * @param params - The parameters for rendering the iframe.
193
193
  */
194
- export declare function renderIframe(options: RenderIframeOptions): void;
194
+ export declare function renderIframe(params: RenderIframeParams): void;
195
195
  /**
196
196
  * Renders a paginated list using the provided DataviewInlineApi instance.
197
197
  *
198
198
  * @typeParam T - The type of items in the list.
199
199
  *
200
- * @param options - The options for rendering the paginated list.
200
+ * @param params - The parameters for rendering the paginated list.
201
201
  *
202
202
  * @returns A {@link Promise} that resolves when the list is rendered.
203
203
  */
204
- export declare function renderPaginatedList<T>(options: RenderPaginatedListOptions<T>): Promise<void>;
204
+ export declare function renderPaginatedList<T>(params: RenderPaginatedListParams<T>): Promise<void>;
205
205
  /**
206
206
  * Renders a paginated table using the provided DataviewInlineApi instance.
207
207
  *
208
208
  * @typeParam T - The type of items in the table rows.
209
209
  *
210
- * @param options - The options for rendering the paginated table.
210
+ * @param params - The parameters for rendering the paginated table.
211
211
  *
212
212
  * @returns A {@link Promise} that resolves when the table is rendered.
213
213
  */
214
- export declare function renderPaginatedTable<T extends unknown[]>(options: RenderPaginatedTableOptions<T>): Promise<void>;
214
+ export declare function renderPaginatedTable<T extends unknown[]>(params: RenderPaginatedTableParams<T>): Promise<void>;
@@ -84,13 +84,13 @@ function insertCodeBlock(dv, language, code) {
84
84
  ${code}
85
85
  ${resultFence}`);
86
86
  }
87
- function renderIframe(options) {
87
+ function renderIframe(params) {
88
88
  const {
89
89
  dv,
90
90
  height = "600px",
91
91
  relativePathOrFile,
92
92
  width = "100%"
93
- } = options;
93
+ } = params;
94
94
  dv.el("iframe", "", {
95
95
  attr: {
96
96
  height,
@@ -99,13 +99,13 @@ function renderIframe(options) {
99
99
  }
100
100
  });
101
101
  }
102
- async function renderPaginatedList(options) {
102
+ async function renderPaginatedList(params) {
103
103
  const {
104
104
  dv,
105
105
  // eslint-disable-next-line no-magic-numbers -- Extracting magic number as a constant would be repetitive, as the value is used only once and its name would be the same as the property.
106
106
  itemsPerPageOptions = [10, 20, 50, 100],
107
107
  rows
108
- } = options;
108
+ } = params;
109
109
  await renderPaginated({
110
110
  dv,
111
111
  itemsPerPageOptions,
@@ -115,14 +115,14 @@ async function renderPaginatedList(options) {
115
115
  rows
116
116
  });
117
117
  }
118
- async function renderPaginatedTable(options) {
118
+ async function renderPaginatedTable(params) {
119
119
  const {
120
120
  dv,
121
121
  headers,
122
122
  // eslint-disable-next-line no-magic-numbers -- Extracting magic number as a constant would be repetitive, as the value is used only once and its name would be the same as the property.
123
123
  itemsPerPageOptions = [10, 20, 50, 100],
124
124
  rows
125
- } = options;
125
+ } = params;
126
126
  await renderPaginated({
127
127
  dv,
128
128
  itemsPerPageOptions,
@@ -132,7 +132,7 @@ async function renderPaginatedTable(options) {
132
132
  rows
133
133
  });
134
134
  }
135
- async function renderPaginated(options) {
135
+ async function renderPaginated(params) {
136
136
  const SECOND_PAGE_NUMBER = 2;
137
137
  const MORE_PAGE_NUMBER = 3;
138
138
  const {
@@ -140,7 +140,7 @@ async function renderPaginated(options) {
140
140
  // eslint-disable-next-line no-magic-numbers -- Extracting magic number as a constant would be repetitive, as the value is used only once and its name would be the same as the property.
141
141
  itemsPerPageOptions = [10, 20, 50, 100],
142
142
  rows
143
- } = options;
143
+ } = params;
144
144
  if (rows.length === 0) {
145
145
  dv.paragraph("No items found");
146
146
  return;
@@ -225,7 +225,7 @@ async function renderPaginated(options) {
225
225
  const oldContainer = dv.container;
226
226
  dv.container = container;
227
227
  try {
228
- await options.renderer(rowsForCurrentPage);
228
+ await params.renderer(rowsForCurrentPage);
229
229
  } catch (e) {
230
230
  dv.paragraph(`\u274C${errorToString(e)}`);
231
231
  } finally {
@@ -242,4 +242,4 @@ export {
242
242
  renderPaginatedList,
243
243
  renderPaginatedTable
244
244
  };
245
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL0RhdGF2aWV3LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBwYWNrYWdlRG9jdW1lbnRhdGlvblxuICpcbiAqIFRoaXMgbW9kdWxlIHByb3ZpZGVzIHV0aWxpdHkgZnVuY3Rpb25zIGZvciB3b3JraW5nIHdpdGggRGF0YXZpZXcgaW4gT2JzaWRpYW4uXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBQcm9taXNhYmxlIH0gZnJvbSAndHlwZS1mZXN0JztcblxuaW1wb3J0IHR5cGUgeyBEYXRhdmlld0lubGluZUFwaSBhcyBEYXRhdmlld0lubGluZUFwaU9yaWdpbmFsIH0gZnJvbSAnLi9AdHlwZXMvRGF0YXZpZXcvYXBpL2lubGluZS1hcGkuZC50cyc7XG5pbXBvcnQgdHlwZSB7XG4gIERhdGFBcnJheSxcbiAgRGF0YXZpZXdBcGksXG4gIFNNYXJrZG93blBhZ2Vcbn0gZnJvbSAnLi9AdHlwZXMvRGF0YXZpZXcvaW5kZXguZC50cyc7XG5pbXBvcnQgdHlwZSB7IFBhdGhPckZpbGUgfSBmcm9tICcuL0ZpbGVTeXN0ZW0udHMnO1xuaW1wb3J0IHR5cGUgeyBDb21iaW5lZEZyb250bWF0dGVyIH0gZnJvbSAnLi9Gcm9udG1hdHRlci50cyc7XG5cbmltcG9ydCB7IGNvbnZlcnRBc3luY1RvU3luYyB9IGZyb20gJy4uL0FzeW5jLnRzJztcbmltcG9ydCB7IGVycm9yVG9TdHJpbmcgfSBmcm9tICcuLi9FcnJvci50cyc7XG5pbXBvcnQgeyBlbnN1cmVOb25OdWxsYWJsZSB9IGZyb20gJy4uL1R5cGVHdWFyZHMudHMnO1xuaW1wb3J0IHtcbiAgZ2V0RmlsZSxcbiAgZ2V0UGF0aFxufSBmcm9tICcuL0ZpbGVTeXN0ZW0udHMnO1xuaW1wb3J0IHsgdCB9IGZyb20gJy4vaTE4bi9pMThuLnRzJztcbmltcG9ydCB7IHJlbGF0aXZlUGF0aFRvUmVzb3VyY2VVcmwgfSBmcm9tICcuL1Jlc291cmNlVXJsLnRzJztcblxuLyoqXG4gKiBFeHBvcnQgRGF0ZVRpbWUgYW5kIExpbmsgdHlwZXMgZnJvbSB0aGUgRGF0YXZpZXcgQVBJLlxuICovXG5leHBvcnQgdHlwZSB7XG4gIERhdGVUaW1lLFxuICBMaW5rXG59IGZyb20gJy4vQHR5cGVzL0RhdGF2aWV3L2luZGV4LmQudHMnO1xuXG5kZWNsYXJlIGdsb2JhbCB7XG4gIC8qKlxuICAgKiBBIHtAbGluayBEYXRhdmlld0FwaX0gb2JqZWN0IHJlcHJlc2VudHMgdGhlIEFQSSBmb3IgaW50ZXJhY3Rpbmcgd2l0aCBEYXRhdmlldyBpbiBPYnNpZGlhbi5cbiAgICovXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSB2YXJzLW9uLXRvcCAtLSBJdCBpcyBhIGB2YXJgIGluIG1vZHVsZSBkZWNsYXJhdGlvbi4gRVNMaW50IG1pc3Rha2VubHkgY29uZnVzZXMgaXQgd2l0aCBgdmFyYCBhcyBhIHZhcmlhYmxlIGRlY2xhcmF0aW9uLlxuICB2YXIgRGF0YXZpZXdBUEk6IERhdGF2aWV3QXBpIHwgdW5kZWZpbmVkO1xufVxuXG4vKipcbiAqIEEgY29tYmluZWQgcGFnZSB0eXBlLCB3aGljaCBpbmNsdWRlcyB0aGUgZnJvbnQgbWF0dGVyIGFuZCB0aGUgU01hcmtkb3duUGFnZS5cbiAqL1xuZXhwb3J0IHR5cGUgQ29tYmluZWRQYWdlPEN1c3RvbUZyb250bWF0dGVyID0gdW5rbm93bj4gPSBDb21iaW5lZEZyb250bWF0dGVyPEN1c3RvbUZyb250bWF0dGVyPiAmIFNNYXJrZG93blBhZ2U7XG5cbi8qKlxuICogRXh0ZW5kZWQgaW50ZXJmYWNlIGZvciB0aGUgRGF0YXZpZXcgSW5saW5lIEFQSSwgcHJvdmlkaW5nIGFkZGl0aW9uYWwgbWV0aG9kcyBmb3IgY3VzdG9tIHBhZ2UgdHlwZXMgYW5kIGFycmF5IGhhbmRsaW5nLlxuICpcbiAqIEB0eXBlUGFyYW0gQ3VzdG9tUGFnZSAtIFRoZSB0eXBlIG9mIHRoZSBjdXN0b20gcGFnZS4gRGVmYXVsdHMgdG8gYFNNYXJrZG93blBhZ2VgLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIERhdGF2aWV3SW5saW5lQXBpIGV4dGVuZHMgRGF0YXZpZXdJbmxpbmVBcGlPcmlnaW5hbCB7XG4gIC8qKlxuICAgKiBXcmFwcyBhbiBhcnJheSBvZiBpdGVtcyBpbnRvIGEge0BsaW5rIERhdGFBcnJheX0gb2JqZWN0LlxuICAgKlxuICAgKiBAdHlwZVBhcmFtIFQgLSBUaGUgdHlwZSBvZiB0aGUgaXRlbXMgaW4gdGhlIGFycmF5LlxuICAgKiBAcGFyYW0gYXJyIC0gVGhlIGFycmF5IG9mIGl0ZW1zIHRvIHdyYXAuXG4gICAqIEByZXR1cm5zIEEge0BsaW5rIERhdGFBcnJheX0gY29udGFpbmluZyB0aGUgaXRlbXMuXG4gICAqL1xuICBhcnJheTxUPihhcnI6IFRbXSk6IERhdGFBcnJheTxUPjtcblxuICAvKipcbiAgICogUmV0cmlldmVzIHRoZSBjdXJyZW50IHBhZ2UsIHdpdGggYW4gb3B0aW9uYWwgY3VzdG9tIHBhZ2UgdHlwZS5cbiAgICpcbiAgICogQHR5cGVQYXJhbSBDdXN0b21QYWdlIC0gVGhlIHR5cGUgb2YgdGhlIGN1c3RvbSBwYWdlLiBEZWZhdWx0cyB0byBgU01hcmtkb3duUGFnZWAuXG4gICAqIEByZXR1cm5zIFRoZSBjdXJyZW50IHBhZ2UuXG4gICAqL1xuICBjdXJyZW50PEN1c3RvbUZyb250bWF0dGVyID0gdW5rbm93bj4oKTogQ29tYmluZWRQYWdlPEN1c3RvbUZyb250bWF0dGVyPjtcblxuICAvKipcbiAgICogUmV0cmlldmVzIHBhZ2VzIGJhc2VkIG9uIGFuIG9wdGlvbmFsIHF1ZXJ5LCB3aXRoIGFuIG9wdGlvbmFsIGN1c3RvbSBwYWdlIHR5cGUuXG4gICAqXG4gICAqIEB0eXBlUGFyYW0gQ3VzdG9tUGFnZSAtIFRoZSB0eXBlIG9mIHRoZSBjdXN0b20gcGFnZS4gRGVmYXVsdHMgdG8gYFNNYXJrZG93blBhZ2VgLlxuICAgKiBAcGFyYW0gcXVlcnkgLSBBbiBvcHRpb25hbCBzdHJpbmcgcXVlcnkgdG8gZmlsdGVyIHRoZSBwYWdlcy5cbiAgICogQHJldHVybnMgQSB7QGxpbmsgRGF0YUFycmF5fSBvZiBwYWdlcyBtYXRjaGluZyB0aGUgcXVlcnkuXG4gICAqL1xuICBwYWdlczxDdXN0b21Gcm9udG1hdHRlciA9IHVua25vd24+KHF1ZXJ5Pzogc3RyaW5nKTogRGF0YUFycmF5PENvbWJpbmVkUGFnZTxDdXN0b21Gcm9udG1hdHRlcj4+O1xuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgcGFyYWdyYXBoIEhUTUwgZWxlbWVudCB3aXRoIHRoZSBwcm92aWRlZCB0ZXh0IGFuZCBvcHRpb25hbCBET00gZWxlbWVudCBvcHRpb25zLlxuICAgKlxuICAgKiBAcGFyYW0gdGV4dCAtIFRoZSBjb250ZW50IG9mIHRoZSBwYXJhZ3JhcGguXG4gICAqIEBwYXJhbSBvcHRpb25zIC0gT3B0aW9uYWwgRE9NIGVsZW1lbnQgb3B0aW9ucywgaW5jbHVkaW5nIGFuIG9wdGlvbmFsIGNvbnRhaW5lci5cbiAgICogQHJldHVybnMgVGhlIGNyZWF0ZWQgSFRNTCBwYXJhZ3JhcGggZWxlbWVudC5cbiAgICovXG4gIHBhcmFncmFwaChcbiAgICB0ZXh0OiB1bmtub3duLFxuICAgIG9wdGlvbnM/OiBEb21FbGVtZW50SW5mb1dpdGhDb250YWluZXJcbiAgKTogSFRNTFBhcmFncmFwaEVsZW1lbnQ7XG59XG5cbi8qKlxuICogRG9tRWxlbWVudEluZm8gd2l0aCBhbiBvcHRpb25hbCBjb250YWluZXIuXG4gKi9cbmV4cG9ydCB0eXBlIERvbUVsZW1lbnRJbmZvV2l0aENvbnRhaW5lciA9IHsgY29udGFpbmVyPzogSFRNTEVsZW1lbnQgfSAmIERvbUVsZW1lbnRJbmZvO1xuXG4vKipcbiAqIEEgY29tYmluZWQgZmlsZSB0eXBlLCB3aGljaCBpbmNsdWRlcyB0aGUgZnJvbnQgbWF0dGVyIGFuZCB0aGUgU01hcmtkb3duRmlsZS5cbiAqL1xuZXhwb3J0IHR5cGUgUGFnZUZpbGUgPSBTTWFya2Rvd25QYWdlWydmaWxlJ107XG5cbi8qKlxuICogTGlzdCBvZiBwYWdlIGZpbGVzLlxuICovXG5leHBvcnQgdHlwZSBQYWdlRmlsZXMgPSBBcnJheU9yRGF0YUFycmF5PFBhZ2VGaWxlPjtcblxuLyoqXG4gKiBSZWxvYWRzIHRoZSBjdXJyZW50IGZpbGUgY2FjaGUgdXNpbmcgdGhlIERhdGF2aWV3IEFQSS5cbiAqXG4gKiBAcGFyYW0gZHYgLSBUaGUgRGF0YXZpZXdJbmxpbmVBcGkgaW5zdGFuY2UuXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIGNhY2hlIGlzIHJlbG9hZGVkLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVsb2FkQ3VycmVudEZpbGVDYWNoZShkdjogRGF0YXZpZXdJbmxpbmVBcGkpOiBQcm9taXNlPHZvaWQ+IHtcbiAgYXdhaXQgd2luZG93LkRhdGF2aWV3QVBJPy5pbmRleC5yZWxvYWQoZ2V0RmlsZShkdi5hcHAsIGR2LmN1cnJlbnQoKS5maWxlLnBhdGgpKTtcbn1cblxuY29uc3QgcGFnaW5hdGlvbkNzcyA9IGBcbi5wYWdpbmF0aW9uIC5wYWdlLWxpbmsuZGlzYWJsZWQge1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgY29sb3I6IGdyYXk7XG59XG5cbi5wYWdpbmF0aW9uIC5wYWdlLWxpbmsge1xuICBtYXJnaW46IDAgNXB4O1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgY29sb3I6IGJsdWU7XG59XG5cbi5wYWdpbmF0aW9uIC5wYWdlLWxpbms6aG92ZXI6bm90KC5kaXNhYmxlZCkge1xuICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcbn1cbi5wYWdpbmF0aW9uIC5wYWdlLWxpbmsuY3VycmVudCB7XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xuICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcbn1cblxuLnBhZ2luYXRpb24gc2VsZWN0LFxuLnBhZ2luYXRpb24gaW5wdXQge1xuICBtYXJnaW46IDAgNXB4O1xufVxuYDtcblxuLyoqXG4gKiBBcnJheSBvciBEYXRhQXJyYXkgdHlwZS5cbiAqL1xuZXhwb3J0IHR5cGUgQXJyYXlPckRhdGFBcnJheTxUPiA9IERhdGFBcnJheTxUPiB8IFRbXTtcblxuLyoqXG4gKiBPcHRpb25zIGZvciB7QGxpbmsgcmVuZGVySWZyYW1lfS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZW5kZXJJZnJhbWVPcHRpb25zIHtcbiAgLyoqXG4gICAqIEEge0BsaW5rIERhdGF2aWV3SW5saW5lQXBpfSBpbnN0YW5jZS5cbiAgICovXG4gIHJlYWRvbmx5IGR2OiBEYXRhdmlld0lubGluZUFwaTtcblxuICAvKipcbiAgICogQSBoZWlnaHQgb2YgdGhlIGlmcmFtZS5cbiAgICovXG4gIHJlYWRvbmx5IGhlaWdodD86IHN0cmluZztcblxuICAvKipcbiAgICogQSByZWxhdGl2ZSBwYXRoIHRvIHRoZSByZXNvdXJjZSB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIGlmcmFtZS5cbiAgICovXG4gIHJlYWRvbmx5IHJlbGF0aXZlUGF0aE9yRmlsZTogUGF0aE9yRmlsZTtcblxuICAvKipcbiAgICogQSB3aWR0aCBvZiB0aGUgaWZyYW1lLlxuICAgKi9cbiAgcmVhZG9ubHkgd2lkdGg/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogT3B0aW9ucyBmb3Ige0BsaW5rIHJlbmRlclBhZ2luYXRlZExpc3R9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlbmRlclBhZ2luYXRlZExpc3RPcHRpb25zPFQ+IHtcbiAgLyoqXG4gICAqIEEge0BsaW5rIERhdGF2aWV3SW5saW5lQXBpfSBpbnN0YW5jZS5cbiAgICovXG4gIHJlYWRvbmx5IGR2OiBEYXRhdmlld0lubGluZUFwaTtcblxuICAvKipcbiAgICogT3B0aW9ucyBmb3IgaXRlbXMgcGVyIHBhZ2UuIERlZmF1bHRzIHRvIGBbMTAsIDIwLCA1MCwgMTAwXWAuXG4gICAqL1xuICByZWFkb25seSBpdGVtc1BlclBhZ2VPcHRpb25zPzogbnVtYmVyW107XG5cbiAgLyoqXG4gICAqIEEgbGlzdCBvZiBpdGVtcyB0byBwYWdpbmF0ZS5cbiAgICovXG4gIHJlYWRvbmx5IHJvd3M6IEFycmF5T3JEYXRhQXJyYXk8VD47XG59XG5cbi8qKlxuICogT3B0aW9ucyBmb3Ige0BsaW5rIHJlbmRlclBhZ2luYXRlZH0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVuZGVyUGFnaW5hdGVkT3B0aW9uczxUPiB7XG4gIC8qKlxuICAgKiBBIHtAbGluayBEYXRhdmlld0lubGluZUFwaX0gaW5zdGFuY2UuXG4gICAqL1xuICByZWFkb25seSBkdjogRGF0YXZpZXdJbmxpbmVBcGk7XG5cbiAgLyoqXG4gICAqIE9wdGlvbnMgZm9yIGl0ZW1zIHBlciBwYWdlLlxuICAgKi9cbiAgcmVhZG9ubHkgaXRlbXNQZXJQYWdlT3B0aW9ucz86IG51bWJlcltdO1xuXG4gIC8qKlxuICAgKiBEaXNwbGF5IHRoZSBwYWdpbmF0ZWQgY29udGVudC5cbiAgICpcbiAgICogQHBhcmFtIHJvd3NGb3JPbmVQYWdlIC0gVGhlIHJvd3MgdG8gcmVuZGVyLlxuICAgKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIGNvbnRlbnQgaXMgcmVuZGVyZWQuXG4gICAqL1xuICByZWFkb25seSByZW5kZXJlcjogKHJvd3NGb3JPbmVQYWdlOiBBcnJheU9yRGF0YUFycmF5PFQ+KSA9PiBQcm9taXNhYmxlPHZvaWQ+O1xuXG4gIC8qKlxuICAgKiBSb3dzIHRvIHBhZ2luYXRlLlxuICAgKi9cbiAgcmVhZG9ubHkgcm93czogQXJyYXlPckRhdGFBcnJheTxUPjtcbn1cblxuLyoqXG4gKiBPcHRpb25zIGZvciB7QGxpbmsgcmVuZGVyUGFnaW5hdGVkVGFibGV9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlbmRlclBhZ2luYXRlZFRhYmxlT3B0aW9uczxUPiB7XG4gIC8qKlxuICAgKiBBIHtAbGluayBEYXRhdmlld0lubGluZUFwaX0gaW5zdGFuY2UuXG4gICAqL1xuICByZWFkb25seSBkdjogRGF0YXZpZXdJbmxpbmVBcGk7XG5cbiAgLyoqXG4gICAqIEEgaGVhZGVycyBvZiB0aGUgdGFibGUuXG4gICAqL1xuICByZWFkb25seSBoZWFkZXJzOiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogT3B0aW9ucyBmb3IgaXRlbXMgcGVyIHBhZ2UuIERlZmF1bHRzIHRvIGBbMTAsIDIwLCA1MCwgMTAwXWAuXG4gICAqL1xuICByZWFkb25seSBpdGVtc1BlclBhZ2VPcHRpb25zPzogbnVtYmVyW107XG5cbiAgLyoqXG4gICAqIFJvd3Mgb2YgdGhlIHRhYmxlIHRvIHBhZ2luYXRlLlxuICAgKi9cbiAgcmVhZG9ubHkgcm93czogQXJyYXlPckRhdGFBcnJheTxUPjtcbn1cblxuLyoqXG4gKiBSZW5kZXJzIHRoZSBjb250ZW50IHVzaW5nIHRoZSBwcm92aWRlZCByZW5kZXJlciBmdW5jdGlvbiBpbiBhIHRlbXBvcmFyeSBjb250YWluZXIsXG4gKiBhbmQgdGhlbiByZXR1cm5zIHRoZSBjb250YWluZXIuXG4gKlxuICogQHBhcmFtIGR2IC0gVGhlIERhdGF2aWV3SW5saW5lQXBpIGluc3RhbmNlLlxuICogQHBhcmFtIHJlbmRlcmVyIC0gVGhlIGZ1bmN0aW9uIHJlc3BvbnNpYmxlIGZvciByZW5kZXJpbmcgdGhlIGNvbnRlbnQuXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHRvIHRoZSBIVE1MIHBhcmFncmFwaCBlbGVtZW50XG4gKiB0aGF0IHdhcyB1c2VkIGFzIHRoZSB0ZW1wb3JhcnkgY29udGFpbmVyLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0UmVuZGVyZWRDb250YWluZXIoZHY6IERhdGF2aWV3SW5saW5lQXBpLCByZW5kZXJlcjogKCkgPT4gUHJvbWlzYWJsZTx2b2lkPik6IFByb21pc2U8SFRNTFBhcmFncmFwaEVsZW1lbnQ+IHtcbiAgY29uc3Qgb2xkQ29udGFpbmVyID0gZHYuY29udGFpbmVyO1xuICBjb25zdCB0ZW1wQ29udGFpbmVyID0gZHYucGFyYWdyYXBoKCcnKTtcbiAgZHYuY29udGFpbmVyID0gdGVtcENvbnRhaW5lcjtcbiAgZHYuY29udGFpbmVyLmVtcHR5KCk7XG5cbiAgdHJ5IHtcbiAgICBhd2FpdCByZW5kZXJlcigpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgZHYucGFyYWdyYXBoKGBcdTI3NEMke2Vycm9yVG9TdHJpbmcoZSl9YCk7XG4gIH0gZmluYWxseSB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlcXVpcmUtYXRvbWljLXVwZGF0ZXMgLS0gWWVzLCBpdCBpcyBhIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbiwgYnV0IEkgZG9uJ3QgYW4gZWxlZ2FudCB3YXkgdG8gZml4IGl0LlxuICAgIGR2LmNvbnRhaW5lciA9IG9sZENvbnRhaW5lcjtcbiAgICB0ZW1wQ29udGFpbmVyLnJlbW92ZSgpO1xuICB9XG5cbiAgcmV0dXJuIHRlbXBDb250YWluZXI7XG59XG5cbi8qKlxuICogSW5zZXJ0cyBhIGNvZGUgYmxvY2sgaW50byB0aGUgc3BlY2lmaWVkIERhdGF2aWV3IGluc3RhbmNlIHVzaW5nIHRoZSBwcm92aWRlZCBsYW5ndWFnZSBhbmQgY29kZS5cbiAqXG4gKiBAcGFyYW0gZHYgLSBUaGUgRGF0YXZpZXdJbmxpbmVBcGkgaW5zdGFuY2UgdG8gaW5zZXJ0IHRoZSBjb2RlIGJsb2NrIGludG8uXG4gKiBAcGFyYW0gbGFuZ3VhZ2UgLSBUaGUgbGFuZ3VhZ2UgaWRlbnRpZmllciBmb3IgdGhlIGNvZGUgYmxvY2suXG4gKiBAcGFyYW0gY29kZSAtIFRoZSBjb2RlIGNvbnRlbnQgdG8gYmUgaW5zZXJ0ZWQgaW50byB0aGUgY29kZSBibG9jay5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGluc2VydENvZGVCbG9jayhkdjogRGF0YXZpZXdJbmxpbmVBcGksIGxhbmd1YWdlOiBzdHJpbmcsIGNvZGU6IHN0cmluZyk6IHZvaWQge1xuICBjb25zdCBNSU5fRkVOQ0VfTEVOR1RIID0gMztcbiAgY29uc3QgZmVuY2VSZWdFeHAgPSBuZXcgUmVnRXhwKGBeXFxgeyR7U3RyaW5nKE1JTl9GRU5DRV9MRU5HVEgpfSx9YCwgJ2dtJyk7XG4gIGNvbnN0IGZlbmNlTWF0Y2hlcyA9IGNvZGUubWF0Y2hBbGwoZmVuY2VSZWdFeHApO1xuICBjb25zdCBmZW5jZUxlbmd0aHMgPSBBcnJheS5mcm9tKGZlbmNlTWF0Y2hlcykubWFwKChmZW5jZU1hdGNoKSA9PiBmZW5jZU1hdGNoWzBdLmxlbmd0aCk7XG4gIGNvbnN0IG1heEZlbmNlTGVuZ3RoID0gTWF0aC5tYXgoMCwgLi4uZmVuY2VMZW5ndGhzKTtcbiAgY29uc3QgcmVzdWx0RmVuY2VMZW5ndGggPSBNYXRoLm1heChNSU5fRkVOQ0VfTEVOR1RILCBtYXhGZW5jZUxlbmd0aCArIDEpO1xuICBjb25zdCByZXN1bHRGZW5jZSA9ICdgJy5yZXBlYXQocmVzdWx0RmVuY2VMZW5ndGgpO1xuXG4gIGR2LnBhcmFncmFwaChgJHtyZXN1bHRGZW5jZX0ke2xhbmd1YWdlfVxuJHtjb2RlfVxuJHtyZXN1bHRGZW5jZX1gKTtcbn1cblxuLyoqXG4gKiBSZW5kZXJzIGFuIGlmcmFtZSBpbiB0aGUgRGF0YXZpZXcgY29udGFpbmVyIHdpdGggdGhlIHNwZWNpZmllZCByZWxhdGl2ZSBwYXRoLCB3aWR0aCwgYW5kIGhlaWdodC5cbiAqXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBvcHRpb25zIGZvciByZW5kZXJpbmcgdGhlIGlmcmFtZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlbmRlcklmcmFtZShvcHRpb25zOiBSZW5kZXJJZnJhbWVPcHRpb25zKTogdm9pZCB7XG4gIGNvbnN0IHtcbiAgICBkdixcbiAgICBoZWlnaHQgPSAnNjAwcHgnLFxuICAgIHJlbGF0aXZlUGF0aE9yRmlsZSxcbiAgICB3aWR0aCA9ICcxMDAlJ1xuICB9ID0gb3B0aW9ucztcbiAgZHYuZWwoJ2lmcmFtZScsICcnLCB7XG4gICAgYXR0cjoge1xuICAgICAgaGVpZ2h0LFxuICAgICAgc3JjOiByZWxhdGl2ZVBhdGhUb1Jlc291cmNlVXJsKGR2LmFwcCwgZ2V0UGF0aChkdi5hcHAsIHJlbGF0aXZlUGF0aE9yRmlsZSksIGR2LmN1cnJlbnQoKS5maWxlLnBhdGgpLFxuICAgICAgd2lkdGhcbiAgICB9XG4gIH0pO1xufVxuXG4vKipcbiAqIFJlbmRlcnMgYSBwYWdpbmF0ZWQgbGlzdCB1c2luZyB0aGUgcHJvdmlkZWQgRGF0YXZpZXdJbmxpbmVBcGkgaW5zdGFuY2UuXG4gKlxuICogQHR5cGVQYXJhbSBUIC0gVGhlIHR5cGUgb2YgaXRlbXMgaW4gdGhlIGxpc3QuXG4gKlxuICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgb3B0aW9ucyBmb3IgcmVuZGVyaW5nIHRoZSBwYWdpbmF0ZWQgbGlzdC5cbiAqXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIGxpc3QgaXMgcmVuZGVyZWQuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZW5kZXJQYWdpbmF0ZWRMaXN0PFQ+KG9wdGlvbnM6IFJlbmRlclBhZ2luYXRlZExpc3RPcHRpb25zPFQ+KTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IHtcbiAgICBkdixcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tbWFnaWMtbnVtYmVycyAtLSBFeHRyYWN0aW5nIG1hZ2ljIG51bWJlciBhcyBhIGNvbnN0YW50IHdvdWxkIGJlIHJlcGV0aXRpdmUsIGFzIHRoZSB2YWx1ZSBpcyB1c2VkIG9ubHkgb25jZSBhbmQgaXRzIG5hbWUgd291bGQgYmUgdGhlIHNhbWUgYXMgdGhlIHByb3BlcnR5LlxuICAgIGl0ZW1zUGVyUGFnZU9wdGlvbnMgPSBbMTAsIDIwLCA1MCwgMTAwXSxcbiAgICByb3dzXG4gIH0gPSBvcHRpb25zO1xuICBhd2FpdCByZW5kZXJQYWdpbmF0ZWQoe1xuICAgIGR2LFxuICAgIGl0ZW1zUGVyUGFnZU9wdGlvbnMsXG4gICAgcmVuZGVyZXI6IGFzeW5jIChyb3dzRm9yT25lUGFnZTogQXJyYXlPckRhdGFBcnJheTxUPik6IFByb21pc2U8dm9pZD4gPT4ge1xuICAgICAgYXdhaXQgZHYubGlzdChyb3dzRm9yT25lUGFnZSk7XG4gICAgfSxcbiAgICByb3dzXG4gIH0pO1xufVxuXG4vKipcbiAqIFJlbmRlcnMgYSBwYWdpbmF0ZWQgdGFibGUgdXNpbmcgdGhlIHByb3ZpZGVkIERhdGF2aWV3SW5saW5lQXBpIGluc3RhbmNlLlxuICpcbiAqIEB0eXBlUGFyYW0gVCAtIFRoZSB0eXBlIG9mIGl0ZW1zIGluIHRoZSB0YWJsZSByb3dzLlxuICpcbiAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIG9wdGlvbnMgZm9yIHJlbmRlcmluZyB0aGUgcGFnaW5hdGVkIHRhYmxlLlxuICpcbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgdGFibGUgaXMgcmVuZGVyZWQuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZW5kZXJQYWdpbmF0ZWRUYWJsZTxUIGV4dGVuZHMgdW5rbm93bltdPihvcHRpb25zOiBSZW5kZXJQYWdpbmF0ZWRUYWJsZU9wdGlvbnM8VD4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3Qge1xuICAgIGR2LFxuICAgIGhlYWRlcnMsXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLW1hZ2ljLW51bWJlcnMgLS0gRXh0cmFjdGluZyBtYWdpYyBudW1iZXIgYXMgYSBjb25zdGFudCB3b3VsZCBiZSByZXBldGl0aXZlLCBhcyB0aGUgdmFsdWUgaXMgdXNlZCBvbmx5IG9uY2UgYW5kIGl0cyBuYW1lIHdvdWxkIGJlIHRoZSBzYW1lIGFzIHRoZSBwcm9wZXJ0eS5cbiAgICBpdGVtc1BlclBhZ2VPcHRpb25zID0gWzEwLCAyMCwgNTAsIDEwMF0sXG4gICAgcm93c1xuICB9ID0gb3B0aW9ucztcbiAgYXdhaXQgcmVuZGVyUGFnaW5hdGVkKHtcbiAgICBkdixcbiAgICBpdGVtc1BlclBhZ2VPcHRpb25zLFxuICAgIHJlbmRlcmVyOiBhc3luYyAocm93c0Zvck9uZVBhZ2U6IEFycmF5T3JEYXRhQXJyYXk8VD4pOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgICAgIGF3YWl0IGR2LnRhYmxlKGhlYWRlcnMsIHJvd3NGb3JPbmVQYWdlKTtcbiAgICB9LFxuICAgIHJvd3NcbiAgfSk7XG59XG5cbi8qKlxuICogSGVscGVyIGZ1bmN0aW9uIHRvIHJlbmRlciBwYWdpbmF0ZWQgY29udGVudCB1c2luZyB0aGUgc3BlY2lmaWVkIHJlbmRlcmVyLlxuICpcbiAqIEB0eXBlUGFyYW0gVCAtIFRoZSB0eXBlIG9mIGl0ZW1zIHRvIHBhZ2luYXRlLlxuICpcbiAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIG9wdGlvbnMgZm9yIHJlbmRlcmluZyB0aGUgcGFnaW5hdGVkIGNvbnRlbnQuXG4gKlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB3aGVuIHRoZSBjb250ZW50IGlzIHJlbmRlcmVkLlxuICovXG5hc3luYyBmdW5jdGlvbiByZW5kZXJQYWdpbmF0ZWQ8VD4ob3B0aW9uczogUmVuZGVyUGFnaW5hdGVkT3B0aW9uczxUPik6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCBTRUNPTkRfUEFHRV9OVU1CRVIgPSAyO1xuICBjb25zdCBNT1JFX1BBR0VfTlVNQkVSID0gMztcbiAgY29uc3Qge1xuICAgIGR2LFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1tYWdpYy1udW1iZXJzIC0tIEV4dHJhY3RpbmcgbWFnaWMgbnVtYmVyIGFzIGEgY29uc3RhbnQgd291bGQgYmUgcmVwZXRpdGl2ZSwgYXMgdGhlIHZhbHVlIGlzIHVzZWQgb25seSBvbmNlIGFuZCBpdHMgbmFtZSB3b3VsZCBiZSB0aGUgc2FtZSBhcyB0aGUgcHJvcGVydHkuXG4gICAgaXRlbXNQZXJQYWdlT3B0aW9ucyA9IFsxMCwgMjAsIDUwLCAxMDBdLFxuICAgIHJvd3NcbiAgfSA9IG9wdGlvbnM7XG4gIGlmIChyb3dzLmxlbmd0aCA9PT0gMCkge1xuICAgIGR2LnBhcmFncmFwaCgnTm8gaXRlbXMgZm91bmQnKTtcbiAgICByZXR1cm47XG4gIH1cbiAgY29uc3QgY29udGFpbmVyID0gZHYuY29udGFpbmVyO1xuICBsZXQgaXRlbXNQZXJQYWdlID0gZW5zdXJlTm9uTnVsbGFibGUoaXRlbXNQZXJQYWdlT3B0aW9uc1swXSwgJ0l0ZW1zIHBlciBwYWdlIG9wdGlvbnMgYXJlIGVtcHR5Jyk7XG4gIGxldCB0b3RhbFBhZ2VzID0gTWF0aC5jZWlsKHJvd3MubGVuZ3RoIC8gaXRlbXNQZXJQYWdlKTtcbiAgYXdhaXQgcmVuZGVyUGFnZSgxKTtcblxuICBmdW5jdGlvbiBjcmVhdGVQYWdpbmF0aW9uQ29udHJvbHMocGFnZU51bWJlcjogbnVtYmVyKTogdm9pZCB7XG4gICAgY29uc3QgcGFnaW5hdGlvbkRpdiA9IGNvbnRhaW5lci5jcmVhdGVEaXYoeyBjbHM6ICdwYWdpbmF0aW9uJyB9KTtcbiAgICBjb25zdCBwYWdpbmF0aW9uUm93MURpdiA9IHBhZ2luYXRpb25EaXYuY3JlYXRlRGl2KCk7XG5cbiAgICBjcmVhdGVQYWdlTGluaygnRmlyc3QnLCAxLCBwYWdlTnVtYmVyID09PSAxKTtcbiAgICBjcmVhdGVQYWdlTGluaygnUHJldicsIHBhZ2VOdW1iZXIgLSAxLCBwYWdlTnVtYmVyID09PSAxKTtcblxuICAgIGlmIChwYWdlTnVtYmVyID4gTU9SRV9QQUdFX05VTUJFUikge1xuICAgICAgcGFnaW5hdGlvblJvdzFEaXYuY3JlYXRlU3Bhbih7IHRleHQ6ICcuLi4nIH0pO1xuICAgIH1cblxuICAgIGZvciAobGV0IGkgPSBNYXRoLm1heCgxLCBwYWdlTnVtYmVyIC0gU0VDT05EX1BBR0VfTlVNQkVSKTsgaSA8PSBNYXRoLm1pbih0b3RhbFBhZ2VzLCBwYWdlTnVtYmVyICsgU0VDT05EX1BBR0VfTlVNQkVSKTsgaSsrKSB7XG4gICAgICBjb25zdCBwYWdlTGluayA9IGNyZWF0ZVBhZ2VMaW5rKFN0cmluZyhpKSwgaSwgaSA9PT0gcGFnZU51bWJlcik7XG4gICAgICBpZiAoaSA9PT0gcGFnZU51bWJlcikge1xuICAgICAgICBwYWdlTGluay5hZGRDbGFzcygnY3VycmVudCcpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChwYWdlTnVtYmVyIDwgdG90YWxQYWdlcyAtIFNFQ09ORF9QQUdFX05VTUJFUikge1xuICAgICAgcGFnaW5hdGlvblJvdzFEaXYuY3JlYXRlU3Bhbih7IHRleHQ6ICcuLi4nIH0pO1xuICAgIH1cblxuICAgIGNyZWF0ZVBhZ2VMaW5rKCdOZXh0JywgcGFnZU51bWJlciArIDEsIHBhZ2VOdW1iZXIgPT09IHRvdGFsUGFnZXMpO1xuICAgIGNyZWF0ZVBhZ2VMaW5rKCdMYXN0JywgdG90YWxQYWdlcywgcGFnZU51bWJlciA9PT0gdG90YWxQYWdlcyk7XG5cbiAgICBjb25zdCBwYWdpbmF0aW9uUm93MkRpdiA9IHBhZ2luYXRpb25EaXYuY3JlYXRlRGl2KCk7XG5cbiAgICBwYWdpbmF0aW9uUm93MkRpdi5jcmVhdGVTcGFuKHsgdGV4dDogYCAke3QoKCQpID0+ICQub2JzaWRpYW5EZXZVdGlscy5kYXRhdmlldy5pdGVtc1BlclBhZ2UpfSBgIH0pO1xuXG4gICAgY29uc3QgaXRlbXNQZXJQYWdlU2VsZWN0ID0gcGFnaW5hdGlvblJvdzJEaXYuY3JlYXRlRWwoJ3NlbGVjdCcpO1xuICAgIGl0ZW1zUGVyUGFnZU9wdGlvbnMuZm9yRWFjaCgob3B0aW9uOiBudW1iZXIpOiB2b2lkID0+IHtcbiAgICAgIGl0ZW1zUGVyUGFnZVNlbGVjdC5jcmVhdGVFbCgnb3B0aW9uJywgeyB0ZXh0OiBTdHJpbmcob3B0aW9uKSwgdmFsdWU6IFN0cmluZyhvcHRpb24pIH0pO1xuICAgIH0pO1xuICAgIGl0ZW1zUGVyUGFnZVNlbGVjdC52YWx1ZSA9IFN0cmluZyhpdGVtc1BlclBhZ2UpO1xuICAgIGl0ZW1zUGVyUGFnZVNlbGVjdC5hZGRFdmVudExpc3RlbmVyKFxuICAgICAgJ2NoYW5nZScsXG4gICAgICBjb252ZXJ0QXN5bmNUb1N5bmMoYXN5bmMgKCk6IFByb21pc2U8dm9pZD4gPT4ge1xuICAgICAgICBpdGVtc1BlclBhZ2UgPSBwYXJzZUludChpdGVtc1BlclBhZ2VTZWxlY3QudmFsdWUsIDEwKTtcbiAgICAgICAgdG90YWxQYWdlcyA9IE1hdGguY2VpbChyb3dzLmxlbmd0aCAvIGl0ZW1zUGVyUGFnZSk7XG4gICAgICAgIGF3YWl0IHJlbmRlclBhZ2UoMSk7XG4gICAgICB9KVxuICAgICk7XG5cbiAgICBwYWdpbmF0aW9uUm93MkRpdi5jcmVhdGVTcGFuKHsgdGV4dDogYCAke3QoKCQpID0+ICQub2JzaWRpYW5EZXZVdGlscy5kYXRhdmlldy5qdW1wVG9QYWdlKX0gYCB9KTtcblxuICAgIGNvbnN0IGp1bXBUb1BhZ2VJbnB1dCA9IHBhZ2luYXRpb25Sb3cyRGl2LmNyZWF0ZUVsKCdpbnB1dCcsIHsgYXR0cjogeyBtYXg6IHRvdGFsUGFnZXMsIG1pbjogMSB9LCB0eXBlOiAnbnVtYmVyJyB9KTtcbiAgICBqdW1wVG9QYWdlSW5wdXQuYWRkRXZlbnRMaXN0ZW5lcihcbiAgICAgICdrZXlkb3duJyxcbiAgICAgIGNvbnZlcnRBc3luY1RvU3luYyhhc3luYyAoZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgICAgICAgaWYgKGV2ZW50LmtleSA9PT0gJ0VudGVyJykge1xuICAgICAgICAgIGNvbnN0IHBhZ2UgPSBwYXJzZUludChqdW1wVG9QYWdlSW5wdXQudmFsdWUsIDEwKTtcbiAgICAgICAgICBpZiAocGFnZSA+PSAxICYmIHBhZ2UgPD0gdG90YWxQYWdlcykge1xuICAgICAgICAgICAgYXdhaXQgcmVuZGVyUGFnZShwYWdlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgKTtcblxuICAgIHBhZ2luYXRpb25Sb3cyRGl2LmNyZWF0ZVNwYW4oeyB0ZXh0OiB0KCgkKSA9PiAkLm9ic2lkaWFuRGV2VXRpbHMuZGF0YXZpZXcucGFnZUhlYWRlciwgeyBwYWdlTnVtYmVyLCB0b3RhbEl0ZW1zOiByb3dzLmxlbmd0aCwgdG90YWxQYWdlcyB9KSB9KTtcblxuICAgIGZ1bmN0aW9uIGNyZWF0ZVBhZ2VMaW5rKHRleHQ6IHN0cmluZywgY3VycmVudFBhZ2VOdW1iZXI6IG51bWJlciwgZGlzYWJsZWQgPSBmYWxzZSk6IEhUTUxBbmNob3JFbGVtZW50IHtcbiAgICAgIGNvbnN0IGxpbmsgPSBwYWdpbmF0aW9uUm93MURpdi5jcmVhdGVFbCgnYScsIHsgY2xzOiAncGFnZS1saW5rJywgaHJlZjogYCMke1N0cmluZyhjdXJyZW50UGFnZU51bWJlcil9YCwgdGV4dCB9KTtcbiAgICAgIGlmIChkaXNhYmxlZCkge1xuICAgICAgICBsaW5rLmFkZENsYXNzKCdkaXNhYmxlZCcpO1xuICAgICAgICBsaW5rLm9uY2xpY2sgPSAoZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkID0+IHtcbiAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB9O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbGluay5hZGRFdmVudExpc3RlbmVyKFxuICAgICAgICAgICdjbGljaycsXG4gICAgICAgICAgY29udmVydEFzeW5jVG9TeW5jKGFzeW5jIChldmVudDogTW91c2VFdmVudCk6IFByb21pc2U8dm9pZD4gPT4ge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIGF3YWl0IHJlbmRlclBhZ2UoY3VycmVudFBhZ2VOdW1iZXIpO1xuICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICByZXR1cm4gbGluaztcbiAgICB9XG4gIH1cblxuICBhc3luYyBmdW5jdGlvbiByZW5kZXJQYWdlKHBhZ2VOdW1iZXI6IG51bWJlcik6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnRhaW5lci5lbXB0eSgpO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBvYnNpZGlhbm1kL25vLWZvcmJpZGRlbi1lbGVtZW50cyAtLSBXZSBuZWVkIHRvIGNyZWF0ZSBhIHN0eWxlIGVsZW1lbnQgdG8gYXBwbHkgdGhlIHBhZ2luYXRpb24gQ1NTLlxuICAgIGNvbnRhaW5lci5jcmVhdGVFbCgnc3R5bGUnLCB7IHRleHQ6IHBhZ2luYXRpb25Dc3MgfSk7XG5cbiAgICBjb25zdCBzdGFydEluZGV4ID0gKHBhZ2VOdW1iZXIgLSAxKSAqIGl0ZW1zUGVyUGFnZTtcbiAgICBjb25zdCBlbmRJbmRleCA9IHN0YXJ0SW5kZXggKyBpdGVtc1BlclBhZ2U7XG4gICAgY29uc3Qgcm93c0ZvckN1cnJlbnRQYWdlID0gcm93cy5zbGljZShzdGFydEluZGV4LCBlbmRJbmRleCk7XG5cbiAgICBjb25zdCBvbGRDb250YWluZXIgPSBkdi5jb250YWluZXI7XG5cbiAgICBkdi5jb250YWluZXIgPSBjb250YWluZXI7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IG9wdGlvbnMucmVuZGVyZXIocm93c0ZvckN1cnJlbnRQYWdlKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBkdi5wYXJhZ3JhcGgoYFx1Mjc0QyR7ZXJyb3JUb1N0cmluZyhlKX1gKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlcXVpcmUtYXRvbWljLXVwZGF0ZXMgLS0gWWVzLCBpdCBpcyBhIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbiwgYnV0IEkgZG9uJ3QgYW4gZWxlZ2FudCB3YXkgdG8gZml4IGl0LlxuICAgICAgZHYuY29udGFpbmVyID0gb2xkQ29udGFpbmVyO1xuICAgIH1cblxuICAgIGNyZWF0ZVBhZ2luYXRpb25Db250cm9scyhwYWdlTnVtYmVyKTtcbiAgfVxufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBaUJBLFNBQVMsMEJBQTBCO0FBQ25DLFNBQVMscUJBQXFCO0FBQzlCLFNBQVMseUJBQXlCO0FBQ2xDO0FBQUEsRUFDRTtBQUFBLEVBQ0E7QUFBQSxPQUNLO0FBQ1AsU0FBUyxTQUFTO0FBQ2xCLFNBQVMsaUNBQWlDO0FBeUYxQyxlQUFzQix1QkFBdUIsSUFBc0M7QUFDakYs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
245
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL0RhdGF2aWV3LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBwYWNrYWdlRG9jdW1lbnRhdGlvblxuICpcbiAqIFRoaXMgbW9kdWxlIHByb3ZpZGVzIHV0aWxpdHkgZnVuY3Rpb25zIGZvciB3b3JraW5nIHdpdGggRGF0YXZpZXcgaW4gT2JzaWRpYW4uXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBQcm9taXNhYmxlIH0gZnJvbSAndHlwZS1mZXN0JztcblxuaW1wb3J0IHR5cGUgeyBEYXRhdmlld0lubGluZUFwaSBhcyBEYXRhdmlld0lubGluZUFwaU9yaWdpbmFsIH0gZnJvbSAnLi9AdHlwZXMvRGF0YXZpZXcvYXBpL2lubGluZS1hcGkuZC50cyc7XG5pbXBvcnQgdHlwZSB7XG4gIERhdGFBcnJheSxcbiAgRGF0YXZpZXdBcGksXG4gIFNNYXJrZG93blBhZ2Vcbn0gZnJvbSAnLi9AdHlwZXMvRGF0YXZpZXcvaW5kZXguZC50cyc7XG5pbXBvcnQgdHlwZSB7IFBhdGhPckZpbGUgfSBmcm9tICcuL0ZpbGVTeXN0ZW0udHMnO1xuaW1wb3J0IHR5cGUgeyBDb21iaW5lZEZyb250bWF0dGVyIH0gZnJvbSAnLi9Gcm9udG1hdHRlci50cyc7XG5cbmltcG9ydCB7IGNvbnZlcnRBc3luY1RvU3luYyB9IGZyb20gJy4uL0FzeW5jLnRzJztcbmltcG9ydCB7IGVycm9yVG9TdHJpbmcgfSBmcm9tICcuLi9FcnJvci50cyc7XG5pbXBvcnQgeyBlbnN1cmVOb25OdWxsYWJsZSB9IGZyb20gJy4uL1R5cGVHdWFyZHMudHMnO1xuaW1wb3J0IHtcbiAgZ2V0RmlsZSxcbiAgZ2V0UGF0aFxufSBmcm9tICcuL0ZpbGVTeXN0ZW0udHMnO1xuaW1wb3J0IHsgdCB9IGZyb20gJy4vaTE4bi9pMThuLnRzJztcbmltcG9ydCB7IHJlbGF0aXZlUGF0aFRvUmVzb3VyY2VVcmwgfSBmcm9tICcuL1Jlc291cmNlVXJsLnRzJztcblxuLyoqXG4gKiBFeHBvcnQgRGF0ZVRpbWUgYW5kIExpbmsgdHlwZXMgZnJvbSB0aGUgRGF0YXZpZXcgQVBJLlxuICovXG5leHBvcnQgdHlwZSB7XG4gIERhdGVUaW1lLFxuICBMaW5rXG59IGZyb20gJy4vQHR5cGVzL0RhdGF2aWV3L2luZGV4LmQudHMnO1xuXG5kZWNsYXJlIGdsb2JhbCB7XG4gIC8qKlxuICAgKiBBIHtAbGluayBEYXRhdmlld0FwaX0gb2JqZWN0IHJlcHJlc2VudHMgdGhlIEFQSSBmb3IgaW50ZXJhY3Rpbmcgd2l0aCBEYXRhdmlldyBpbiBPYnNpZGlhbi5cbiAgICovXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSB2YXJzLW9uLXRvcCAtLSBJdCBpcyBhIGB2YXJgIGluIG1vZHVsZSBkZWNsYXJhdGlvbi4gRVNMaW50IG1pc3Rha2VubHkgY29uZnVzZXMgaXQgd2l0aCBgdmFyYCBhcyBhIHZhcmlhYmxlIGRlY2xhcmF0aW9uLlxuICB2YXIgRGF0YXZpZXdBUEk6IERhdGF2aWV3QXBpIHwgdW5kZWZpbmVkO1xufVxuXG4vKipcbiAqIEEgY29tYmluZWQgcGFnZSB0eXBlLCB3aGljaCBpbmNsdWRlcyB0aGUgZnJvbnQgbWF0dGVyIGFuZCB0aGUgU01hcmtkb3duUGFnZS5cbiAqL1xuZXhwb3J0IHR5cGUgQ29tYmluZWRQYWdlPEN1c3RvbUZyb250bWF0dGVyID0gdW5rbm93bj4gPSBDb21iaW5lZEZyb250bWF0dGVyPEN1c3RvbUZyb250bWF0dGVyPiAmIFNNYXJrZG93blBhZ2U7XG5cbi8qKlxuICogRXh0ZW5kZWQgaW50ZXJmYWNlIGZvciB0aGUgRGF0YXZpZXcgSW5saW5lIEFQSSwgcHJvdmlkaW5nIGFkZGl0aW9uYWwgbWV0aG9kcyBmb3IgY3VzdG9tIHBhZ2UgdHlwZXMgYW5kIGFycmF5IGhhbmRsaW5nLlxuICpcbiAqIEB0eXBlUGFyYW0gQ3VzdG9tUGFnZSAtIFRoZSB0eXBlIG9mIHRoZSBjdXN0b20gcGFnZS4gRGVmYXVsdHMgdG8gYFNNYXJrZG93blBhZ2VgLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIERhdGF2aWV3SW5saW5lQXBpIGV4dGVuZHMgRGF0YXZpZXdJbmxpbmVBcGlPcmlnaW5hbCB7XG4gIC8qKlxuICAgKiBXcmFwcyBhbiBhcnJheSBvZiBpdGVtcyBpbnRvIGEge0BsaW5rIERhdGFBcnJheX0gb2JqZWN0LlxuICAgKlxuICAgKiBAdHlwZVBhcmFtIFQgLSBUaGUgdHlwZSBvZiB0aGUgaXRlbXMgaW4gdGhlIGFycmF5LlxuICAgKiBAcGFyYW0gYXJyIC0gVGhlIGFycmF5IG9mIGl0ZW1zIHRvIHdyYXAuXG4gICAqIEByZXR1cm5zIEEge0BsaW5rIERhdGFBcnJheX0gY29udGFpbmluZyB0aGUgaXRlbXMuXG4gICAqL1xuICBhcnJheTxUPihhcnI6IFRbXSk6IERhdGFBcnJheTxUPjtcblxuICAvKipcbiAgICogUmV0cmlldmVzIHRoZSBjdXJyZW50IHBhZ2UsIHdpdGggYW4gb3B0aW9uYWwgY3VzdG9tIHBhZ2UgdHlwZS5cbiAgICpcbiAgICogQHR5cGVQYXJhbSBDdXN0b21QYWdlIC0gVGhlIHR5cGUgb2YgdGhlIGN1c3RvbSBwYWdlLiBEZWZhdWx0cyB0byBgU01hcmtkb3duUGFnZWAuXG4gICAqIEByZXR1cm5zIFRoZSBjdXJyZW50IHBhZ2UuXG4gICAqL1xuICBjdXJyZW50PEN1c3RvbUZyb250bWF0dGVyID0gdW5rbm93bj4oKTogQ29tYmluZWRQYWdlPEN1c3RvbUZyb250bWF0dGVyPjtcblxuICAvKipcbiAgICogUmV0cmlldmVzIHBhZ2VzIGJhc2VkIG9uIGFuIG9wdGlvbmFsIHF1ZXJ5LCB3aXRoIGFuIG9wdGlvbmFsIGN1c3RvbSBwYWdlIHR5cGUuXG4gICAqXG4gICAqIEB0eXBlUGFyYW0gQ3VzdG9tUGFnZSAtIFRoZSB0eXBlIG9mIHRoZSBjdXN0b20gcGFnZS4gRGVmYXVsdHMgdG8gYFNNYXJrZG93blBhZ2VgLlxuICAgKiBAcGFyYW0gcXVlcnkgLSBBbiBvcHRpb25hbCBzdHJpbmcgcXVlcnkgdG8gZmlsdGVyIHRoZSBwYWdlcy5cbiAgICogQHJldHVybnMgQSB7QGxpbmsgRGF0YUFycmF5fSBvZiBwYWdlcyBtYXRjaGluZyB0aGUgcXVlcnkuXG4gICAqL1xuICBwYWdlczxDdXN0b21Gcm9udG1hdHRlciA9IHVua25vd24+KHF1ZXJ5Pzogc3RyaW5nKTogRGF0YUFycmF5PENvbWJpbmVkUGFnZTxDdXN0b21Gcm9udG1hdHRlcj4+O1xuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgcGFyYWdyYXBoIEhUTUwgZWxlbWVudCB3aXRoIHRoZSBwcm92aWRlZCB0ZXh0IGFuZCBvcHRpb25hbCBET00gZWxlbWVudCBvcHRpb25zLlxuICAgKlxuICAgKiBAcGFyYW0gdGV4dCAtIFRoZSBjb250ZW50IG9mIHRoZSBwYXJhZ3JhcGguXG4gICAqIEBwYXJhbSBvcHRpb25zIC0gT3B0aW9uYWwgRE9NIGVsZW1lbnQgb3B0aW9ucywgaW5jbHVkaW5nIGFuIG9wdGlvbmFsIGNvbnRhaW5lci5cbiAgICogQHJldHVybnMgVGhlIGNyZWF0ZWQgSFRNTCBwYXJhZ3JhcGggZWxlbWVudC5cbiAgICovXG4gIHBhcmFncmFwaChcbiAgICB0ZXh0OiB1bmtub3duLFxuICAgIG9wdGlvbnM/OiBEb21FbGVtZW50SW5mb1dpdGhDb250YWluZXJcbiAgKTogSFRNTFBhcmFncmFwaEVsZW1lbnQ7XG59XG5cbi8qKlxuICogRG9tRWxlbWVudEluZm8gd2l0aCBhbiBvcHRpb25hbCBjb250YWluZXIuXG4gKi9cbmV4cG9ydCB0eXBlIERvbUVsZW1lbnRJbmZvV2l0aENvbnRhaW5lciA9IHsgY29udGFpbmVyPzogSFRNTEVsZW1lbnQgfSAmIERvbUVsZW1lbnRJbmZvO1xuXG4vKipcbiAqIEEgY29tYmluZWQgZmlsZSB0eXBlLCB3aGljaCBpbmNsdWRlcyB0aGUgZnJvbnQgbWF0dGVyIGFuZCB0aGUgU01hcmtkb3duRmlsZS5cbiAqL1xuZXhwb3J0IHR5cGUgUGFnZUZpbGUgPSBTTWFya2Rvd25QYWdlWydmaWxlJ107XG5cbi8qKlxuICogTGlzdCBvZiBwYWdlIGZpbGVzLlxuICovXG5leHBvcnQgdHlwZSBQYWdlRmlsZXMgPSBBcnJheU9yRGF0YUFycmF5PFBhZ2VGaWxlPjtcblxuLyoqXG4gKiBSZWxvYWRzIHRoZSBjdXJyZW50IGZpbGUgY2FjaGUgdXNpbmcgdGhlIERhdGF2aWV3IEFQSS5cbiAqXG4gKiBAcGFyYW0gZHYgLSBUaGUgRGF0YXZpZXdJbmxpbmVBcGkgaW5zdGFuY2UuXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIGNhY2hlIGlzIHJlbG9hZGVkLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVsb2FkQ3VycmVudEZpbGVDYWNoZShkdjogRGF0YXZpZXdJbmxpbmVBcGkpOiBQcm9taXNlPHZvaWQ+IHtcbiAgYXdhaXQgd2luZG93LkRhdGF2aWV3QVBJPy5pbmRleC5yZWxvYWQoZ2V0RmlsZShkdi5hcHAsIGR2LmN1cnJlbnQoKS5maWxlLnBhdGgpKTtcbn1cblxuY29uc3QgcGFnaW5hdGlvbkNzcyA9IGBcbi5wYWdpbmF0aW9uIC5wYWdlLWxpbmsuZGlzYWJsZWQge1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgY29sb3I6IGdyYXk7XG59XG5cbi5wYWdpbmF0aW9uIC5wYWdlLWxpbmsge1xuICBtYXJnaW46IDAgNXB4O1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgY29sb3I6IGJsdWU7XG59XG5cbi5wYWdpbmF0aW9uIC5wYWdlLWxpbms6aG92ZXI6bm90KC5kaXNhYmxlZCkge1xuICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcbn1cbi5wYWdpbmF0aW9uIC5wYWdlLWxpbmsuY3VycmVudCB7XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xuICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcbn1cblxuLnBhZ2luYXRpb24gc2VsZWN0LFxuLnBhZ2luYXRpb24gaW5wdXQge1xuICBtYXJnaW46IDAgNXB4O1xufVxuYDtcblxuLyoqXG4gKiBBcnJheSBvciBEYXRhQXJyYXkgdHlwZS5cbiAqL1xuZXhwb3J0IHR5cGUgQXJyYXlPckRhdGFBcnJheTxUPiA9IERhdGFBcnJheTxUPiB8IFRbXTtcblxuLyoqXG4gKiBPcHRpb25zIGZvciB7QGxpbmsgcmVuZGVySWZyYW1lfS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZW5kZXJJZnJhbWVQYXJhbXMge1xuICAvKipcbiAgICogQSB7QGxpbmsgRGF0YXZpZXdJbmxpbmVBcGl9IGluc3RhbmNlLlxuICAgKi9cbiAgcmVhZG9ubHkgZHY6IERhdGF2aWV3SW5saW5lQXBpO1xuXG4gIC8qKlxuICAgKiBBIGhlaWdodCBvZiB0aGUgaWZyYW1lLlxuICAgKi9cbiAgcmVhZG9ubHkgaGVpZ2h0Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBIHJlbGF0aXZlIHBhdGggdG8gdGhlIHJlc291cmNlIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgaWZyYW1lLlxuICAgKi9cbiAgcmVhZG9ubHkgcmVsYXRpdmVQYXRoT3JGaWxlOiBQYXRoT3JGaWxlO1xuXG4gIC8qKlxuICAgKiBBIHdpZHRoIG9mIHRoZSBpZnJhbWUuXG4gICAqL1xuICByZWFkb25seSB3aWR0aD86IHN0cmluZztcbn1cblxuLyoqXG4gKiBPcHRpb25zIGZvciB7QGxpbmsgcmVuZGVyUGFnaW5hdGVkTGlzdH0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVuZGVyUGFnaW5hdGVkTGlzdFBhcmFtczxUPiB7XG4gIC8qKlxuICAgKiBBIHtAbGluayBEYXRhdmlld0lubGluZUFwaX0gaW5zdGFuY2UuXG4gICAqL1xuICByZWFkb25seSBkdjogRGF0YXZpZXdJbmxpbmVBcGk7XG5cbiAgLyoqXG4gICAqIE9wdGlvbnMgZm9yIGl0ZW1zIHBlciBwYWdlLiBEZWZhdWx0cyB0byBgWzEwLCAyMCwgNTAsIDEwMF1gLlxuICAgKi9cbiAgcmVhZG9ubHkgaXRlbXNQZXJQYWdlT3B0aW9ucz86IG51bWJlcltdO1xuXG4gIC8qKlxuICAgKiBBIGxpc3Qgb2YgaXRlbXMgdG8gcGFnaW5hdGUuXG4gICAqL1xuICByZWFkb25seSByb3dzOiBBcnJheU9yRGF0YUFycmF5PFQ+O1xufVxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIHtAbGluayByZW5kZXJQYWdpbmF0ZWR9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlbmRlclBhZ2luYXRlZFBhcmFtczxUPiB7XG4gIC8qKlxuICAgKiBBIHtAbGluayBEYXRhdmlld0lubGluZUFwaX0gaW5zdGFuY2UuXG4gICAqL1xuICByZWFkb25seSBkdjogRGF0YXZpZXdJbmxpbmVBcGk7XG5cbiAgLyoqXG4gICAqIE9wdGlvbnMgZm9yIGl0ZW1zIHBlciBwYWdlLlxuICAgKi9cbiAgcmVhZG9ubHkgaXRlbXNQZXJQYWdlT3B0aW9ucz86IG51bWJlcltdO1xuXG4gIC8qKlxuICAgKiBEaXNwbGF5IHRoZSBwYWdpbmF0ZWQgY29udGVudC5cbiAgICpcbiAgICogQHBhcmFtIHJvd3NGb3JPbmVQYWdlIC0gVGhlIHJvd3MgdG8gcmVuZGVyLlxuICAgKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIGNvbnRlbnQgaXMgcmVuZGVyZWQuXG4gICAqL1xuICByZWFkb25seSByZW5kZXJlcjogKHJvd3NGb3JPbmVQYWdlOiBBcnJheU9yRGF0YUFycmF5PFQ+KSA9PiBQcm9taXNhYmxlPHZvaWQ+O1xuXG4gIC8qKlxuICAgKiBSb3dzIHRvIHBhZ2luYXRlLlxuICAgKi9cbiAgcmVhZG9ubHkgcm93czogQXJyYXlPckRhdGFBcnJheTxUPjtcbn1cblxuLyoqXG4gKiBPcHRpb25zIGZvciB7QGxpbmsgcmVuZGVyUGFnaW5hdGVkVGFibGV9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlbmRlclBhZ2luYXRlZFRhYmxlUGFyYW1zPFQ+IHtcbiAgLyoqXG4gICAqIEEge0BsaW5rIERhdGF2aWV3SW5saW5lQXBpfSBpbnN0YW5jZS5cbiAgICovXG4gIHJlYWRvbmx5IGR2OiBEYXRhdmlld0lubGluZUFwaTtcblxuICAvKipcbiAgICogQSBoZWFkZXJzIG9mIHRoZSB0YWJsZS5cbiAgICovXG4gIHJlYWRvbmx5IGhlYWRlcnM6IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBPcHRpb25zIGZvciBpdGVtcyBwZXIgcGFnZS4gRGVmYXVsdHMgdG8gYFsxMCwgMjAsIDUwLCAxMDBdYC5cbiAgICovXG4gIHJlYWRvbmx5IGl0ZW1zUGVyUGFnZU9wdGlvbnM/OiBudW1iZXJbXTtcblxuICAvKipcbiAgICogUm93cyBvZiB0aGUgdGFibGUgdG8gcGFnaW5hdGUuXG4gICAqL1xuICByZWFkb25seSByb3dzOiBBcnJheU9yRGF0YUFycmF5PFQ+O1xufVxuXG4vKipcbiAqIFJlbmRlcnMgdGhlIGNvbnRlbnQgdXNpbmcgdGhlIHByb3ZpZGVkIHJlbmRlcmVyIGZ1bmN0aW9uIGluIGEgdGVtcG9yYXJ5IGNvbnRhaW5lcixcbiAqIGFuZCB0aGVuIHJldHVybnMgdGhlIGNvbnRhaW5lci5cbiAqXG4gKiBAcGFyYW0gZHYgLSBUaGUgRGF0YXZpZXdJbmxpbmVBcGkgaW5zdGFuY2UuXG4gKiBAcGFyYW0gcmVuZGVyZXIgLSBUaGUgZnVuY3Rpb24gcmVzcG9uc2libGUgZm9yIHJlbmRlcmluZyB0aGUgY29udGVudC5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgdG8gdGhlIEhUTUwgcGFyYWdyYXBoIGVsZW1lbnRcbiAqIHRoYXQgd2FzIHVzZWQgYXMgdGhlIHRlbXBvcmFyeSBjb250YWluZXIuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRSZW5kZXJlZENvbnRhaW5lcihkdjogRGF0YXZpZXdJbmxpbmVBcGksIHJlbmRlcmVyOiAoKSA9PiBQcm9taXNhYmxlPHZvaWQ+KTogUHJvbWlzZTxIVE1MUGFyYWdyYXBoRWxlbWVudD4ge1xuICBjb25zdCBvbGRDb250YWluZXIgPSBkdi5jb250YWluZXI7XG4gIGNvbnN0IHRlbXBDb250YWluZXIgPSBkdi5wYXJhZ3JhcGgoJycpO1xuICBkdi5jb250YWluZXIgPSB0ZW1wQ29udGFpbmVyO1xuICBkdi5jb250YWluZXIuZW1wdHkoKTtcblxuICB0cnkge1xuICAgIGF3YWl0IHJlbmRlcmVyKCk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBkdi5wYXJhZ3JhcGgoYFx1Mjc0QyR7ZXJyb3JUb1N0cmluZyhlKX1gKTtcbiAgfSBmaW5hbGx5IHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVxdWlyZS1hdG9taWMtdXBkYXRlcyAtLSBZZXMsIGl0IGlzIGEgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9uLCBidXQgSSBkb24ndCBhbiBlbGVnYW50IHdheSB0byBmaXggaXQuXG4gICAgZHYuY29udGFpbmVyID0gb2xkQ29udGFpbmVyO1xuICAgIHRlbXBDb250YWluZXIucmVtb3ZlKCk7XG4gIH1cblxuICByZXR1cm4gdGVtcENvbnRhaW5lcjtcbn1cblxuLyoqXG4gKiBJbnNlcnRzIGEgY29kZSBibG9jayBpbnRvIHRoZSBzcGVjaWZpZWQgRGF0YXZpZXcgaW5zdGFuY2UgdXNpbmcgdGhlIHByb3ZpZGVkIGxhbmd1YWdlIGFuZCBjb2RlLlxuICpcbiAqIEBwYXJhbSBkdiAtIFRoZSBEYXRhdmlld0lubGluZUFwaSBpbnN0YW5jZSB0byBpbnNlcnQgdGhlIGNvZGUgYmxvY2sgaW50by5cbiAqIEBwYXJhbSBsYW5ndWFnZSAtIFRoZSBsYW5ndWFnZSBpZGVudGlmaWVyIGZvciB0aGUgY29kZSBibG9jay5cbiAqIEBwYXJhbSBjb2RlIC0gVGhlIGNvZGUgY29udGVudCB0byBiZSBpbnNlcnRlZCBpbnRvIHRoZSBjb2RlIGJsb2NrLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaW5zZXJ0Q29kZUJsb2NrKGR2OiBEYXRhdmlld0lubGluZUFwaSwgbGFuZ3VhZ2U6IHN0cmluZywgY29kZTogc3RyaW5nKTogdm9pZCB7XG4gIGNvbnN0IE1JTl9GRU5DRV9MRU5HVEggPSAzO1xuICBjb25zdCBmZW5jZVJlZ0V4cCA9IG5ldyBSZWdFeHAoYF5cXGB7JHtTdHJpbmcoTUlOX0ZFTkNFX0xFTkdUSCl9LH1gLCAnZ20nKTtcbiAgY29uc3QgZmVuY2VNYXRjaGVzID0gY29kZS5tYXRjaEFsbChmZW5jZVJlZ0V4cCk7XG4gIGNvbnN0IGZlbmNlTGVuZ3RocyA9IEFycmF5LmZyb20oZmVuY2VNYXRjaGVzKS5tYXAoKGZlbmNlTWF0Y2gpID0+IGZlbmNlTWF0Y2hbMF0ubGVuZ3RoKTtcbiAgY29uc3QgbWF4RmVuY2VMZW5ndGggPSBNYXRoLm1heCgwLCAuLi5mZW5jZUxlbmd0aHMpO1xuICBjb25zdCByZXN1bHRGZW5jZUxlbmd0aCA9IE1hdGgubWF4KE1JTl9GRU5DRV9MRU5HVEgsIG1heEZlbmNlTGVuZ3RoICsgMSk7XG4gIGNvbnN0IHJlc3VsdEZlbmNlID0gJ2AnLnJlcGVhdChyZXN1bHRGZW5jZUxlbmd0aCk7XG5cbiAgZHYucGFyYWdyYXBoKGAke3Jlc3VsdEZlbmNlfSR7bGFuZ3VhZ2V9XG4ke2NvZGV9XG4ke3Jlc3VsdEZlbmNlfWApO1xufVxuXG4vKipcbiAqIFJlbmRlcnMgYW4gaWZyYW1lIGluIHRoZSBEYXRhdmlldyBjb250YWluZXIgd2l0aCB0aGUgc3BlY2lmaWVkIHJlbGF0aXZlIHBhdGgsIHdpZHRoLCBhbmQgaGVpZ2h0LlxuICpcbiAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgcGFyYW1ldGVycyBmb3IgcmVuZGVyaW5nIHRoZSBpZnJhbWUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZW5kZXJJZnJhbWUocGFyYW1zOiBSZW5kZXJJZnJhbWVQYXJhbXMpOiB2b2lkIHtcbiAgY29uc3Qge1xuICAgIGR2LFxuICAgIGhlaWdodCA9ICc2MDBweCcsXG4gICAgcmVsYXRpdmVQYXRoT3JGaWxlLFxuICAgIHdpZHRoID0gJzEwMCUnXG4gIH0gPSBwYXJhbXM7XG4gIGR2LmVsKCdpZnJhbWUnLCAnJywge1xuICAgIGF0dHI6IHtcbiAgICAgIGhlaWdodCxcbiAgICAgIHNyYzogcmVsYXRpdmVQYXRoVG9SZXNvdXJjZVVybChkdi5hcHAsIGdldFBhdGgoZHYuYXBwLCByZWxhdGl2ZVBhdGhPckZpbGUpLCBkdi5jdXJyZW50KCkuZmlsZS5wYXRoKSxcbiAgICAgIHdpZHRoXG4gICAgfVxuICB9KTtcbn1cblxuLyoqXG4gKiBSZW5kZXJzIGEgcGFnaW5hdGVkIGxpc3QgdXNpbmcgdGhlIHByb3ZpZGVkIERhdGF2aWV3SW5saW5lQXBpIGluc3RhbmNlLlxuICpcbiAqIEB0eXBlUGFyYW0gVCAtIFRoZSB0eXBlIG9mIGl0ZW1zIGluIHRoZSBsaXN0LlxuICpcbiAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgcGFyYW1ldGVycyBmb3IgcmVuZGVyaW5nIHRoZSBwYWdpbmF0ZWQgbGlzdC5cbiAqXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIGxpc3QgaXMgcmVuZGVyZWQuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZW5kZXJQYWdpbmF0ZWRMaXN0PFQ+KHBhcmFtczogUmVuZGVyUGFnaW5hdGVkTGlzdFBhcmFtczxUPik6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCB7XG4gICAgZHYsXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLW1hZ2ljLW51bWJlcnMgLS0gRXh0cmFjdGluZyBtYWdpYyBudW1iZXIgYXMgYSBjb25zdGFudCB3b3VsZCBiZSByZXBldGl0aXZlLCBhcyB0aGUgdmFsdWUgaXMgdXNlZCBvbmx5IG9uY2UgYW5kIGl0cyBuYW1lIHdvdWxkIGJlIHRoZSBzYW1lIGFzIHRoZSBwcm9wZXJ0eS5cbiAgICBpdGVtc1BlclBhZ2VPcHRpb25zID0gWzEwLCAyMCwgNTAsIDEwMF0sXG4gICAgcm93c1xuICB9ID0gcGFyYW1zO1xuICBhd2FpdCByZW5kZXJQYWdpbmF0ZWQoe1xuICAgIGR2LFxuICAgIGl0ZW1zUGVyUGFnZU9wdGlvbnMsXG4gICAgcmVuZGVyZXI6IGFzeW5jIChyb3dzRm9yT25lUGFnZTogQXJyYXlPckRhdGFBcnJheTxUPik6IFByb21pc2U8dm9pZD4gPT4ge1xuICAgICAgYXdhaXQgZHYubGlzdChyb3dzRm9yT25lUGFnZSk7XG4gICAgfSxcbiAgICByb3dzXG4gIH0pO1xufVxuXG4vKipcbiAqIFJlbmRlcnMgYSBwYWdpbmF0ZWQgdGFibGUgdXNpbmcgdGhlIHByb3ZpZGVkIERhdGF2aWV3SW5saW5lQXBpIGluc3RhbmNlLlxuICpcbiAqIEB0eXBlUGFyYW0gVCAtIFRoZSB0eXBlIG9mIGl0ZW1zIGluIHRoZSB0YWJsZSByb3dzLlxuICpcbiAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgcGFyYW1ldGVycyBmb3IgcmVuZGVyaW5nIHRoZSBwYWdpbmF0ZWQgdGFibGUuXG4gKlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB3aGVuIHRoZSB0YWJsZSBpcyByZW5kZXJlZC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlbmRlclBhZ2luYXRlZFRhYmxlPFQgZXh0ZW5kcyB1bmtub3duW10+KHBhcmFtczogUmVuZGVyUGFnaW5hdGVkVGFibGVQYXJhbXM8VD4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3Qge1xuICAgIGR2LFxuICAgIGhlYWRlcnMsXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLW1hZ2ljLW51bWJlcnMgLS0gRXh0cmFjdGluZyBtYWdpYyBudW1iZXIgYXMgYSBjb25zdGFudCB3b3VsZCBiZSByZXBldGl0aXZlLCBhcyB0aGUgdmFsdWUgaXMgdXNlZCBvbmx5IG9uY2UgYW5kIGl0cyBuYW1lIHdvdWxkIGJlIHRoZSBzYW1lIGFzIHRoZSBwcm9wZXJ0eS5cbiAgICBpdGVtc1BlclBhZ2VPcHRpb25zID0gWzEwLCAyMCwgNTAsIDEwMF0sXG4gICAgcm93c1xuICB9ID0gcGFyYW1zO1xuICBhd2FpdCByZW5kZXJQYWdpbmF0ZWQoe1xuICAgIGR2LFxuICAgIGl0ZW1zUGVyUGFnZU9wdGlvbnMsXG4gICAgcmVuZGVyZXI6IGFzeW5jIChyb3dzRm9yT25lUGFnZTogQXJyYXlPckRhdGFBcnJheTxUPik6IFByb21pc2U8dm9pZD4gPT4ge1xuICAgICAgYXdhaXQgZHYudGFibGUoaGVhZGVycywgcm93c0Zvck9uZVBhZ2UpO1xuICAgIH0sXG4gICAgcm93c1xuICB9KTtcbn1cblxuLyoqXG4gKiBIZWxwZXIgZnVuY3Rpb24gdG8gcmVuZGVyIHBhZ2luYXRlZCBjb250ZW50IHVzaW5nIHRoZSBzcGVjaWZpZWQgcmVuZGVyZXIuXG4gKlxuICogQHR5cGVQYXJhbSBUIC0gVGhlIHR5cGUgb2YgaXRlbXMgdG8gcGFnaW5hdGUuXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSBwYXJhbWV0ZXJzIGZvciByZW5kZXJpbmcgdGhlIHBhZ2luYXRlZCBjb250ZW50LlxuICpcbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgY29udGVudCBpcyByZW5kZXJlZC5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gcmVuZGVyUGFnaW5hdGVkPFQ+KHBhcmFtczogUmVuZGVyUGFnaW5hdGVkUGFyYW1zPFQ+KTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IFNFQ09ORF9QQUdFX05VTUJFUiA9IDI7XG4gIGNvbnN0IE1PUkVfUEFHRV9OVU1CRVIgPSAzO1xuICBjb25zdCB7XG4gICAgZHYsXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLW1hZ2ljLW51bWJlcnMgLS0gRXh0cmFjdGluZyBtYWdpYyBudW1iZXIgYXMgYSBjb25zdGFudCB3b3VsZCBiZSByZXBldGl0aXZlLCBhcyB0aGUgdmFsdWUgaXMgdXNlZCBvbmx5IG9uY2UgYW5kIGl0cyBuYW1lIHdvdWxkIGJlIHRoZSBzYW1lIGFzIHRoZSBwcm9wZXJ0eS5cbiAgICBpdGVtc1BlclBhZ2VPcHRpb25zID0gWzEwLCAyMCwgNTAsIDEwMF0sXG4gICAgcm93c1xuICB9ID0gcGFyYW1zO1xuICBpZiAocm93cy5sZW5ndGggPT09IDApIHtcbiAgICBkdi5wYXJhZ3JhcGgoJ05vIGl0ZW1zIGZvdW5kJyk7XG4gICAgcmV0dXJuO1xuICB9XG4gIGNvbnN0IGNvbnRhaW5lciA9IGR2LmNvbnRhaW5lcjtcbiAgbGV0IGl0ZW1zUGVyUGFnZSA9IGVuc3VyZU5vbk51bGxhYmxlKGl0ZW1zUGVyUGFnZU9wdGlvbnNbMF0sICdJdGVtcyBwZXIgcGFnZSBvcHRpb25zIGFyZSBlbXB0eScpO1xuICBsZXQgdG90YWxQYWdlcyA9IE1hdGguY2VpbChyb3dzLmxlbmd0aCAvIGl0ZW1zUGVyUGFnZSk7XG4gIGF3YWl0IHJlbmRlclBhZ2UoMSk7XG5cbiAgZnVuY3Rpb24gY3JlYXRlUGFnaW5hdGlvbkNvbnRyb2xzKHBhZ2VOdW1iZXI6IG51bWJlcik6IHZvaWQge1xuICAgIGNvbnN0IHBhZ2luYXRpb25EaXYgPSBjb250YWluZXIuY3JlYXRlRGl2KHsgY2xzOiAncGFnaW5hdGlvbicgfSk7XG4gICAgY29uc3QgcGFnaW5hdGlvblJvdzFEaXYgPSBwYWdpbmF0aW9uRGl2LmNyZWF0ZURpdigpO1xuXG4gICAgY3JlYXRlUGFnZUxpbmsoJ0ZpcnN0JywgMSwgcGFnZU51bWJlciA9PT0gMSk7XG4gICAgY3JlYXRlUGFnZUxpbmsoJ1ByZXYnLCBwYWdlTnVtYmVyIC0gMSwgcGFnZU51bWJlciA9PT0gMSk7XG5cbiAgICBpZiAocGFnZU51bWJlciA+IE1PUkVfUEFHRV9OVU1CRVIpIHtcbiAgICAgIHBhZ2luYXRpb25Sb3cxRGl2LmNyZWF0ZVNwYW4oeyB0ZXh0OiAnLi4uJyB9KTtcbiAgICB9XG5cbiAgICBmb3IgKGxldCBpID0gTWF0aC5tYXgoMSwgcGFnZU51bWJlciAtIFNFQ09ORF9QQUdFX05VTUJFUik7IGkgPD0gTWF0aC5taW4odG90YWxQYWdlcywgcGFnZU51bWJlciArIFNFQ09ORF9QQUdFX05VTUJFUik7IGkrKykge1xuICAgICAgY29uc3QgcGFnZUxpbmsgPSBjcmVhdGVQYWdlTGluayhTdHJpbmcoaSksIGksIGkgPT09IHBhZ2VOdW1iZXIpO1xuICAgICAgaWYgKGkgPT09IHBhZ2VOdW1iZXIpIHtcbiAgICAgICAgcGFnZUxpbmsuYWRkQ2xhc3MoJ2N1cnJlbnQnKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAocGFnZU51bWJlciA8IHRvdGFsUGFnZXMgLSBTRUNPTkRfUEFHRV9OVU1CRVIpIHtcbiAgICAgIHBhZ2luYXRpb25Sb3cxRGl2LmNyZWF0ZVNwYW4oeyB0ZXh0OiAnLi4uJyB9KTtcbiAgICB9XG5cbiAgICBjcmVhdGVQYWdlTGluaygnTmV4dCcsIHBhZ2VOdW1iZXIgKyAxLCBwYWdlTnVtYmVyID09PSB0b3RhbFBhZ2VzKTtcbiAgICBjcmVhdGVQYWdlTGluaygnTGFzdCcsIHRvdGFsUGFnZXMsIHBhZ2VOdW1iZXIgPT09IHRvdGFsUGFnZXMpO1xuXG4gICAgY29uc3QgcGFnaW5hdGlvblJvdzJEaXYgPSBwYWdpbmF0aW9uRGl2LmNyZWF0ZURpdigpO1xuXG4gICAgcGFnaW5hdGlvblJvdzJEaXYuY3JlYXRlU3Bhbih7IHRleHQ6IGAgJHt0KCgkKSA9PiAkLm9ic2lkaWFuRGV2VXRpbHMuZGF0YXZpZXcuaXRlbXNQZXJQYWdlKX0gYCB9KTtcblxuICAgIGNvbnN0IGl0ZW1zUGVyUGFnZVNlbGVjdCA9IHBhZ2luYXRpb25Sb3cyRGl2LmNyZWF0ZUVsKCdzZWxlY3QnKTtcbiAgICBpdGVtc1BlclBhZ2VPcHRpb25zLmZvckVhY2goKG9wdGlvbjogbnVtYmVyKTogdm9pZCA9PiB7XG4gICAgICBpdGVtc1BlclBhZ2VTZWxlY3QuY3JlYXRlRWwoJ29wdGlvbicsIHsgdGV4dDogU3RyaW5nKG9wdGlvbiksIHZhbHVlOiBTdHJpbmcob3B0aW9uKSB9KTtcbiAgICB9KTtcbiAgICBpdGVtc1BlclBhZ2VTZWxlY3QudmFsdWUgPSBTdHJpbmcoaXRlbXNQZXJQYWdlKTtcbiAgICBpdGVtc1BlclBhZ2VTZWxlY3QuYWRkRXZlbnRMaXN0ZW5lcihcbiAgICAgICdjaGFuZ2UnLFxuICAgICAgY29udmVydEFzeW5jVG9TeW5jKGFzeW5jICgpOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgICAgICAgaXRlbXNQZXJQYWdlID0gcGFyc2VJbnQoaXRlbXNQZXJQYWdlU2VsZWN0LnZhbHVlLCAxMCk7XG4gICAgICAgIHRvdGFsUGFnZXMgPSBNYXRoLmNlaWwocm93cy5sZW5ndGggLyBpdGVtc1BlclBhZ2UpO1xuICAgICAgICBhd2FpdCByZW5kZXJQYWdlKDEpO1xuICAgICAgfSlcbiAgICApO1xuXG4gICAgcGFnaW5hdGlvblJvdzJEaXYuY3JlYXRlU3Bhbih7IHRleHQ6IGAgJHt0KCgkKSA9PiAkLm9ic2lkaWFuRGV2VXRpbHMuZGF0YXZpZXcuanVtcFRvUGFnZSl9IGAgfSk7XG5cbiAgICBjb25zdCBqdW1wVG9QYWdlSW5wdXQgPSBwYWdpbmF0aW9uUm93MkRpdi5jcmVhdGVFbCgnaW5wdXQnLCB7IGF0dHI6IHsgbWF4OiB0b3RhbFBhZ2VzLCBtaW46IDEgfSwgdHlwZTogJ251bWJlcicgfSk7XG4gICAganVtcFRvUGFnZUlucHV0LmFkZEV2ZW50TGlzdGVuZXIoXG4gICAgICAna2V5ZG93bicsXG4gICAgICBjb252ZXJ0QXN5bmNUb1N5bmMoYXN5bmMgKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gICAgICAgIGlmIChldmVudC5rZXkgPT09ICdFbnRlcicpIHtcbiAgICAgICAgICBjb25zdCBwYWdlID0gcGFyc2VJbnQoanVtcFRvUGFnZUlucHV0LnZhbHVlLCAxMCk7XG4gICAgICAgICAgaWYgKHBhZ2UgPj0gMSAmJiBwYWdlIDw9IHRvdGFsUGFnZXMpIHtcbiAgICAgICAgICAgIGF3YWl0IHJlbmRlclBhZ2UocGFnZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KVxuICAgICk7XG5cbiAgICBwYWdpbmF0aW9uUm93MkRpdi5jcmVhdGVTcGFuKHsgdGV4dDogdCgoJCkgPT4gJC5vYnNpZGlhbkRldlV0aWxzLmRhdGF2aWV3LnBhZ2VIZWFkZXIsIHsgcGFnZU51bWJlciwgdG90YWxJdGVtczogcm93cy5sZW5ndGgsIHRvdGFsUGFnZXMgfSkgfSk7XG5cbiAgICBmdW5jdGlvbiBjcmVhdGVQYWdlTGluayh0ZXh0OiBzdHJpbmcsIGN1cnJlbnRQYWdlTnVtYmVyOiBudW1iZXIsIGRpc2FibGVkID0gZmFsc2UpOiBIVE1MQW5jaG9yRWxlbWVudCB7XG4gICAgICBjb25zdCBsaW5rID0gcGFnaW5hdGlvblJvdzFEaXYuY3JlYXRlRWwoJ2EnLCB7IGNsczogJ3BhZ2UtbGluaycsIGhyZWY6IGAjJHtTdHJpbmcoY3VycmVudFBhZ2VOdW1iZXIpfWAsIHRleHQgfSk7XG4gICAgICBpZiAoZGlzYWJsZWQpIHtcbiAgICAgICAgbGluay5hZGRDbGFzcygnZGlzYWJsZWQnKTtcbiAgICAgICAgbGluay5vbmNsaWNrID0gKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCA9PiB7XG4gICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGxpbmsuYWRkRXZlbnRMaXN0ZW5lcihcbiAgICAgICAgICAnY2xpY2snLFxuICAgICAgICAgIGNvbnZlcnRBc3luY1RvU3luYyhhc3luYyAoZXZlbnQ6IE1vdXNlRXZlbnQpOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICBhd2FpdCByZW5kZXJQYWdlKGN1cnJlbnRQYWdlTnVtYmVyKTtcbiAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGxpbms7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgZnVuY3Rpb24gcmVuZGVyUGFnZShwYWdlTnVtYmVyOiBudW1iZXIpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb250YWluZXIuZW1wdHkoKTtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgb2JzaWRpYW5tZC9uby1mb3JiaWRkZW4tZWxlbWVudHMgLS0gV2UgbmVlZCB0byBjcmVhdGUgYSBzdHlsZSBlbGVtZW50IHRvIGFwcGx5IHRoZSBwYWdpbmF0aW9uIENTUy5cbiAgICBjb250YWluZXIuY3JlYXRlRWwoJ3N0eWxlJywgeyB0ZXh0OiBwYWdpbmF0aW9uQ3NzIH0pO1xuXG4gICAgY29uc3Qgc3RhcnRJbmRleCA9IChwYWdlTnVtYmVyIC0gMSkgKiBpdGVtc1BlclBhZ2U7XG4gICAgY29uc3QgZW5kSW5kZXggPSBzdGFydEluZGV4ICsgaXRlbXNQZXJQYWdlO1xuICAgIGNvbnN0IHJvd3NGb3JDdXJyZW50UGFnZSA9IHJvd3Muc2xpY2Uoc3RhcnRJbmRleCwgZW5kSW5kZXgpO1xuXG4gICAgY29uc3Qgb2xkQ29udGFpbmVyID0gZHYuY29udGFpbmVyO1xuXG4gICAgZHYuY29udGFpbmVyID0gY29udGFpbmVyO1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCBwYXJhbXMucmVuZGVyZXIocm93c0ZvckN1cnJlbnRQYWdlKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBkdi5wYXJhZ3JhcGgoYFx1Mjc0QyR7ZXJyb3JUb1N0cmluZyhlKX1gKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlcXVpcmUtYXRvbWljLXVwZGF0ZXMgLS0gWWVzLCBpdCBpcyBhIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbiwgYnV0IEkgZG9uJ3QgYW4gZWxlZ2FudCB3YXkgdG8gZml4IGl0LlxuICAgICAgZHYuY29udGFpbmVyID0gb2xkQ29udGFpbmVyO1xuICAgIH1cblxuICAgIGNyZWF0ZVBhZ2luYXRpb25Db250cm9scyhwYWdlTnVtYmVyKTtcbiAgfVxufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBaUJBLFNBQVMsMEJBQTBCO0FBQ25DLFNBQVMscUJBQXFCO0FBQzlCLFNBQVMseUJBQXlCO0FBQ2xDO0FBQUEsRUFDRTtBQUFBLEVBQ0E7QUFBQSxPQUNLO0FBQ1AsU0FBUyxTQUFTO0FBQ2xCLFNBQVMsaUNBQWlDO0FBeUYxQyxlQUFzQix1QkFBdUIsSUFBc0M7QUFDakYsUUFBTSxPQUFP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