obsidian-dev-utils 22.1.1-beta.23 → 22.1.1-beta.25

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 (482) hide show
  1. package/CHANGELOG.md +26 -0
  2. package/dist/lib/cjs/@types/debug.d.cts +1 -0
  3. package/dist/lib/cjs/Array.cjs +1 -1
  4. package/dist/lib/cjs/Array.d.cts +5 -0
  5. package/dist/lib/cjs/Async.cjs +1 -1
  6. package/dist/lib/cjs/Async.d.cts +2 -1
  7. package/dist/lib/cjs/AsyncEvents.cjs +1 -1
  8. package/dist/lib/cjs/AsyncEvents.d.cts +7 -2
  9. package/dist/lib/cjs/Blob.cjs +1 -1
  10. package/dist/lib/cjs/Blob.d.cts +2 -1
  11. package/dist/lib/cjs/CssClass.cjs +5 -1
  12. package/dist/lib/cjs/CssClass.d.cts +18 -1
  13. package/dist/lib/cjs/Debug.cjs +1 -1
  14. package/dist/lib/cjs/Debug.d.cts +2 -1
  15. package/dist/lib/cjs/DebugController.cjs +1 -1
  16. package/dist/lib/cjs/DebugController.d.cts +1 -0
  17. package/dist/lib/cjs/Enum.cjs +1 -1
  18. package/dist/lib/cjs/Enum.d.cts +2 -1
  19. package/dist/lib/cjs/Error.cjs +1 -1
  20. package/dist/lib/cjs/Error.d.cts +3 -2
  21. package/dist/lib/cjs/Function.cjs +1 -1
  22. package/dist/lib/cjs/Function.d.cts +2 -1
  23. package/dist/lib/cjs/HTMLElement.cjs +1 -1
  24. package/dist/lib/cjs/HTMLElement.d.cts +3 -1
  25. package/dist/lib/cjs/Library.cjs +2 -2
  26. package/dist/lib/cjs/Library.d.cts +2 -1
  27. package/dist/lib/cjs/Object.cjs +1 -1
  28. package/dist/lib/cjs/Object.d.cts +2 -1
  29. package/dist/lib/cjs/Path.cjs +1 -1
  30. package/dist/lib/cjs/Path.d.cts +2 -1
  31. package/dist/lib/cjs/RegExp.cjs +1 -1
  32. package/dist/lib/cjs/RegExp.d.cts +2 -1
  33. package/dist/lib/cjs/ScriptUtils/CliUtils.cjs +1 -1
  34. package/dist/lib/cjs/ScriptUtils/CliUtils.d.cts +2 -1
  35. package/dist/lib/cjs/ScriptUtils/CodeGenerator.cjs +1 -1
  36. package/dist/lib/cjs/ScriptUtils/CodeGenerator.d.cts +2 -1
  37. package/dist/lib/cjs/ScriptUtils/ESLint/@types/@guardian__eslint-plugin-tsdoc-required.d.cts +1 -0
  38. package/dist/lib/cjs/ScriptUtils/ESLint/@types/eslint-plugin-modules-newlines.d.cts +1 -0
  39. package/dist/lib/cjs/ScriptUtils/ESLint/@types/eslint-plugin-verify-tsdoc.d.cts +1 -0
  40. package/dist/lib/cjs/ScriptUtils/ESLint/ESLint.cjs +1 -1
  41. package/dist/lib/cjs/ScriptUtils/ESLint/ESLint.d.cts +2 -1
  42. package/dist/lib/cjs/ScriptUtils/ESLint/eslint.config.cjs +13 -10
  43. package/dist/lib/cjs/ScriptUtils/ESLint/eslint.config.d.cts +2 -3
  44. package/dist/lib/cjs/ScriptUtils/Exec.cjs +1 -1
  45. package/dist/lib/cjs/ScriptUtils/Exec.d.cts +2 -1
  46. package/dist/lib/cjs/ScriptUtils/Fs.cjs +1 -1
  47. package/dist/lib/cjs/ScriptUtils/Fs.d.cts +2 -1
  48. package/dist/lib/cjs/ScriptUtils/JSON.cjs +1 -1
  49. package/dist/lib/cjs/ScriptUtils/JSON.d.cts +2 -1
  50. package/dist/lib/cjs/ScriptUtils/NodeModules.cjs +1 -1
  51. package/dist/lib/cjs/ScriptUtils/NodeModules.d.cts +2 -1
  52. package/dist/lib/cjs/ScriptUtils/Npm.cjs +1 -1
  53. package/dist/lib/cjs/ScriptUtils/Npm.d.cts +2 -3
  54. package/dist/lib/cjs/ScriptUtils/NpmPublish.cjs +1 -1
  55. package/dist/lib/cjs/ScriptUtils/NpmPublish.d.cts +3 -1
  56. package/dist/lib/cjs/ScriptUtils/NpmRun.cjs +1 -1
  57. package/dist/lib/cjs/ScriptUtils/NpmRun.d.cts +5 -0
  58. package/dist/lib/cjs/ScriptUtils/ObsidianDevUtilsRepoPaths.cjs +1 -10
  59. package/dist/lib/cjs/ScriptUtils/ObsidianDevUtilsRepoPaths.d.cts +42 -61
  60. package/dist/lib/cjs/ScriptUtils/Root.cjs +1 -1
  61. package/dist/lib/cjs/ScriptUtils/Root.d.cts +2 -1
  62. package/dist/lib/cjs/ScriptUtils/build.cjs +1 -1
  63. package/dist/lib/cjs/ScriptUtils/build.d.cts +2 -1
  64. package/dist/lib/cjs/ScriptUtils/cli.cjs +1 -1
  65. package/dist/lib/cjs/ScriptUtils/cli.d.cts +2 -1
  66. package/dist/lib/cjs/ScriptUtils/esbuild/Dependency.cjs +1 -1
  67. package/dist/lib/cjs/ScriptUtils/esbuild/Dependency.d.cts +2 -1
  68. package/dist/lib/cjs/ScriptUtils/esbuild/ObsidianPluginBuilder.cjs +1 -1
  69. package/dist/lib/cjs/ScriptUtils/esbuild/ObsidianPluginBuilder.d.cts +2 -1
  70. package/dist/lib/cjs/ScriptUtils/esbuild/changeExtensionPlugin.cjs +1 -1
  71. package/dist/lib/cjs/ScriptUtils/esbuild/changeExtensionPlugin.d.cts +2 -1
  72. package/dist/lib/cjs/ScriptUtils/esbuild/copyToObsidianPluginsFolderPlugin.cjs +1 -1
  73. package/dist/lib/cjs/ScriptUtils/esbuild/copyToObsidianPluginsFolderPlugin.d.cts +2 -1
  74. package/dist/lib/cjs/ScriptUtils/esbuild/customEsbuildOptionsPlugin.cjs +1 -1
  75. package/dist/lib/cjs/ScriptUtils/esbuild/customEsbuildOptionsPlugin.d.cts +2 -1
  76. package/dist/lib/cjs/ScriptUtils/esbuild/fixEsmPlugin.cjs +1 -1
  77. package/dist/lib/cjs/ScriptUtils/esbuild/fixEsmPlugin.d.cts +2 -1
  78. package/dist/lib/cjs/ScriptUtils/esbuild/fixSourceMapsPlugin.cjs +1 -1
  79. package/dist/lib/cjs/ScriptUtils/esbuild/fixSourceMapsPlugin.d.cts +2 -1
  80. package/dist/lib/cjs/ScriptUtils/esbuild/preprocessPlugin.cjs +1 -1
  81. package/dist/lib/cjs/ScriptUtils/esbuild/preprocessPlugin.d.cts +2 -1
  82. package/dist/lib/cjs/ScriptUtils/esbuild/renameCssPlugin.cjs +1 -1
  83. package/dist/lib/cjs/ScriptUtils/esbuild/renameCssPlugin.d.cts +5 -0
  84. package/dist/lib/cjs/ScriptUtils/esbuild/svelteWrapperPlugin.cjs +1 -1
  85. package/dist/lib/cjs/ScriptUtils/esbuild/svelteWrapperPlugin.d.cts +5 -0
  86. package/dist/lib/cjs/ScriptUtils/format.cjs +1 -1
  87. package/dist/lib/cjs/ScriptUtils/format.d.cts +3 -1
  88. package/dist/lib/cjs/ScriptUtils/spellcheck.cjs +1 -1
  89. package/dist/lib/cjs/ScriptUtils/spellcheck.d.cts +2 -1
  90. package/dist/lib/cjs/ScriptUtils/version.cjs +1 -1
  91. package/dist/lib/cjs/ScriptUtils/version.d.cts +2 -1
  92. package/dist/lib/cjs/String.cjs +1 -1
  93. package/dist/lib/cjs/String.d.cts +2 -1
  94. package/dist/lib/cjs/Transformers/DateTransformer.cjs +3 -1
  95. package/dist/lib/cjs/Transformers/DateTransformer.d.cts +4 -1
  96. package/dist/lib/cjs/Transformers/DurationTransformer.cjs +5 -1
  97. package/dist/lib/cjs/Transformers/DurationTransformer.d.cts +6 -1
  98. package/dist/lib/cjs/Transformers/GroupTransformer.cjs +7 -4
  99. package/dist/lib/cjs/Transformers/GroupTransformer.d.cts +9 -5
  100. package/dist/lib/cjs/Transformers/SkipPrivatePropertyTransformer.cjs +3 -1
  101. package/dist/lib/cjs/Transformers/SkipPrivatePropertyTransformer.d.cts +4 -1
  102. package/dist/lib/cjs/Transformers/Transformer.cjs +1 -1
  103. package/dist/lib/cjs/Transformers/Transformer.d.cts +2 -1
  104. package/dist/lib/cjs/Transformers/TypedTransformer.cjs +1 -1
  105. package/dist/lib/cjs/Transformers/TypedTransformer.d.cts +2 -1
  106. package/dist/lib/cjs/Type.cjs +1 -1
  107. package/dist/lib/cjs/Type.d.cts +5 -0
  108. package/dist/lib/cjs/ValueProvider.cjs +1 -1
  109. package/dist/lib/cjs/ValueProvider.d.cts +2 -1
  110. package/dist/lib/cjs/codemirror/StateFieldSpec.cjs +1 -1
  111. package/dist/lib/cjs/codemirror/StateFieldSpec.d.cts +2 -1
  112. package/dist/lib/cjs/obsidian/App.cjs +1 -1
  113. package/dist/lib/cjs/obsidian/App.d.cts +2 -1
  114. package/dist/lib/cjs/obsidian/AttachmentPath.cjs +1 -1
  115. package/dist/lib/cjs/obsidian/AttachmentPath.d.cts +3 -1
  116. package/dist/lib/cjs/obsidian/Backlink.cjs +1 -1
  117. package/dist/lib/cjs/obsidian/Backlink.d.cts +2 -1
  118. package/dist/lib/cjs/obsidian/Callout.cjs +1 -1
  119. package/dist/lib/cjs/obsidian/Callout.d.cts +2 -1
  120. package/dist/lib/cjs/obsidian/Components/CheckboxComponent.cjs +96 -0
  121. package/dist/lib/cjs/obsidian/Components/CheckboxComponent.d.cts +56 -0
  122. package/dist/lib/cjs/obsidian/Components/DateComponent.cjs +1 -1
  123. package/dist/lib/cjs/obsidian/Components/DateComponent.d.cts +2 -1
  124. package/dist/lib/cjs/obsidian/Components/DateTimeComponent.cjs +1 -1
  125. package/dist/lib/cjs/obsidian/Components/DateTimeComponent.d.cts +2 -1
  126. package/dist/lib/cjs/obsidian/Components/EmailComponent.cjs +1 -1
  127. package/dist/lib/cjs/obsidian/Components/EmailComponent.d.cts +2 -1
  128. package/dist/lib/cjs/obsidian/Components/FileComponent.cjs +1 -1
  129. package/dist/lib/cjs/obsidian/Components/FileComponent.d.cts +2 -1
  130. package/dist/lib/cjs/obsidian/Components/MonthComponent.cjs +1 -1
  131. package/dist/lib/cjs/obsidian/Components/MonthComponent.d.cts +2 -1
  132. package/dist/lib/cjs/obsidian/Components/MultipleDropdownComponent.cjs +4 -2
  133. package/dist/lib/cjs/obsidian/Components/MultipleDropdownComponent.d.cts +4 -1
  134. package/dist/lib/cjs/obsidian/Components/MultipleEmailComponent.cjs +1 -1
  135. package/dist/lib/cjs/obsidian/Components/MultipleEmailComponent.d.cts +2 -1
  136. package/dist/lib/cjs/obsidian/Components/MultipleFileComponent.cjs +1 -1
  137. package/dist/lib/cjs/obsidian/Components/MultipleFileComponent.d.cts +2 -1
  138. package/dist/lib/cjs/obsidian/Components/MultipleTextComponent.cjs +2 -2
  139. package/dist/lib/cjs/obsidian/Components/MultipleTextComponent.d.cts +2 -1
  140. package/dist/lib/cjs/obsidian/Components/NumberComponent.cjs +1 -1
  141. package/dist/lib/cjs/obsidian/Components/NumberComponent.d.cts +2 -1
  142. package/dist/lib/cjs/obsidian/Components/TextBasedComponent.cjs +1 -1
  143. package/dist/lib/cjs/obsidian/Components/TextBasedComponent.d.cts +8 -0
  144. package/dist/lib/cjs/obsidian/Components/TimeComponent.cjs +1 -1
  145. package/dist/lib/cjs/obsidian/Components/TimeComponent.d.cts +2 -1
  146. package/dist/lib/cjs/obsidian/Components/TriStateCheckboxComponent.cjs +97 -0
  147. package/dist/lib/cjs/obsidian/Components/TriStateCheckboxComponent.d.cts +56 -0
  148. package/dist/lib/cjs/obsidian/Components/TypedDropdownComponent.cjs +129 -0
  149. package/dist/lib/cjs/obsidian/Components/TypedDropdownComponent.d.cts +78 -0
  150. package/dist/lib/cjs/obsidian/Components/TypedMultipleDropdownComponent.cjs +131 -0
  151. package/dist/lib/cjs/obsidian/Components/TypedMultipleDropdownComponent.d.cts +79 -0
  152. package/dist/lib/cjs/obsidian/Components/TypedRangeTextComponent.cjs +1 -1
  153. package/dist/lib/cjs/obsidian/Components/TypedRangeTextComponent.d.cts +4 -1
  154. package/dist/lib/cjs/obsidian/Components/TypedTextComponent.cjs +4 -2
  155. package/dist/lib/cjs/obsidian/Components/TypedTextComponent.d.cts +6 -1
  156. package/dist/lib/cjs/obsidian/Components/UrlComponent.cjs +1 -1
  157. package/dist/lib/cjs/obsidian/Components/UrlComponent.d.cts +2 -1
  158. package/dist/lib/cjs/obsidian/Components/ValidatorComponent.cjs +1 -1
  159. package/dist/lib/cjs/obsidian/Components/ValidatorComponent.d.cts +2 -1
  160. package/dist/lib/cjs/obsidian/Components/ValueComponentWithChangeTracking.cjs +1 -1
  161. package/dist/lib/cjs/obsidian/Components/ValueComponentWithChangeTracking.d.cts +4 -1
  162. package/dist/lib/cjs/obsidian/Components/WeekComponent.cjs +1 -1
  163. package/dist/lib/cjs/obsidian/Components/WeekComponent.d.cts +2 -1
  164. package/dist/lib/cjs/obsidian/Components/index.cjs +13 -1
  165. package/dist/lib/cjs/obsidian/Components/index.d.cts +4 -0
  166. package/dist/lib/cjs/obsidian/Dataview.cjs +1 -1
  167. package/dist/lib/cjs/obsidian/Dataview.d.cts +3 -4
  168. package/dist/lib/cjs/obsidian/DataviewLink.cjs +1 -1
  169. package/dist/lib/cjs/obsidian/DataviewLink.d.cts +2 -1
  170. package/dist/lib/cjs/obsidian/FileChange.cjs +1 -1
  171. package/dist/lib/cjs/obsidian/FileChange.d.cts +2 -1
  172. package/dist/lib/cjs/obsidian/FileManager.cjs +1 -1
  173. package/dist/lib/cjs/obsidian/FileManager.d.cts +2 -1
  174. package/dist/lib/cjs/obsidian/FileSystem.cjs +1 -1
  175. package/dist/lib/cjs/obsidian/FileSystem.d.cts +3 -1
  176. package/dist/lib/cjs/obsidian/Frontmatter.cjs +1 -1
  177. package/dist/lib/cjs/obsidian/Frontmatter.d.cts +5 -1
  178. package/dist/lib/cjs/obsidian/Link.cjs +1 -1
  179. package/dist/lib/cjs/obsidian/Link.d.cts +2 -1
  180. package/dist/lib/cjs/obsidian/Logger.cjs +1 -1
  181. package/dist/lib/cjs/obsidian/Logger.d.cts +2 -1
  182. package/dist/lib/cjs/obsidian/Loop.cjs +1 -1
  183. package/dist/lib/cjs/obsidian/Loop.d.cts +2 -1
  184. package/dist/lib/cjs/obsidian/Markdown.cjs +1 -1
  185. package/dist/lib/cjs/obsidian/Markdown.d.cts +2 -1
  186. package/dist/lib/cjs/obsidian/MarkdownCodeBlockProcessor.cjs +1 -1
  187. package/dist/lib/cjs/obsidian/MarkdownCodeBlockProcessor.d.cts +2 -1
  188. package/dist/lib/cjs/obsidian/MarkdownView.cjs +1 -1
  189. package/dist/lib/cjs/obsidian/MarkdownView.d.cts +2 -1
  190. package/dist/lib/cjs/obsidian/MetadataCache.cjs +1 -1
  191. package/dist/lib/cjs/obsidian/MetadataCache.d.cts +4 -2
  192. package/dist/lib/cjs/obsidian/Modals/Alert.cjs +1 -1
  193. package/dist/lib/cjs/obsidian/Modals/Alert.d.cts +2 -1
  194. package/dist/lib/cjs/obsidian/Modals/Confirm.cjs +1 -1
  195. package/dist/lib/cjs/obsidian/Modals/Confirm.d.cts +2 -1
  196. package/dist/lib/cjs/obsidian/Modals/ModalBase.cjs +1 -1
  197. package/dist/lib/cjs/obsidian/Modals/ModalBase.d.cts +1 -1
  198. package/dist/lib/cjs/obsidian/Modals/Prompt.cjs +1 -1
  199. package/dist/lib/cjs/obsidian/Modals/Prompt.d.cts +3 -1
  200. package/dist/lib/cjs/obsidian/Modals/SelectItem.cjs +1 -1
  201. package/dist/lib/cjs/obsidian/Modals/SelectItem.d.cts +3 -1
  202. package/dist/lib/cjs/obsidian/MonkeyAround.cjs +1 -1
  203. package/dist/lib/cjs/obsidian/MonkeyAround.d.cts +3 -1
  204. package/dist/lib/cjs/obsidian/ObsidianSettings.cjs +1 -1
  205. package/dist/lib/cjs/obsidian/ObsidianSettings.d.cts +3 -0
  206. package/dist/lib/cjs/obsidian/Pdf.cjs +1 -1
  207. package/dist/lib/cjs/obsidian/Pdf.d.cts +2 -1
  208. package/dist/lib/cjs/obsidian/Plugin/ObsidianPluginRepoPaths.cjs +6 -2
  209. package/dist/lib/cjs/obsidian/Plugin/ObsidianPluginRepoPaths.d.cts +38 -29
  210. package/dist/lib/cjs/obsidian/Plugin/Plugin.cjs +1 -1
  211. package/dist/lib/cjs/obsidian/Plugin/Plugin.d.cts +2 -1
  212. package/dist/lib/cjs/obsidian/Plugin/PluginBase.cjs +21 -25
  213. package/dist/lib/cjs/obsidian/Plugin/PluginBase.d.cts +13 -16
  214. package/dist/lib/cjs/obsidian/Plugin/PluginContext.cjs +1 -1
  215. package/dist/lib/cjs/obsidian/Plugin/PluginContext.d.cts +2 -1
  216. package/dist/lib/cjs/obsidian/Plugin/PluginId.cjs +1 -1
  217. package/dist/lib/cjs/obsidian/Plugin/PluginId.d.cts +2 -1
  218. package/dist/lib/cjs/obsidian/Plugin/PluginSettingsManagerBase.cjs +1 -3
  219. package/dist/lib/cjs/obsidian/Plugin/PluginSettingsManagerBase.d.cts +5 -2
  220. package/dist/lib/cjs/obsidian/Plugin/PluginSettingsTabBase.cjs +1 -1
  221. package/dist/lib/cjs/obsidian/Plugin/PluginSettingsTabBase.d.cts +4 -1
  222. package/dist/lib/cjs/obsidian/Queue.cjs +1 -1
  223. package/dist/lib/cjs/obsidian/Queue.d.cts +2 -1
  224. package/dist/lib/cjs/obsidian/React/AppContext.cjs +3 -3
  225. package/dist/lib/cjs/obsidian/React/AppContext.d.cts +8 -1
  226. package/dist/lib/cjs/obsidian/Reference.cjs +1 -1
  227. package/dist/lib/cjs/obsidian/Reference.d.cts +2 -1
  228. package/dist/lib/cjs/obsidian/RenameDeleteHandler.cjs +1 -1
  229. package/dist/lib/cjs/obsidian/RenameDeleteHandler.d.cts +3 -2
  230. package/dist/lib/cjs/obsidian/ResourceUrl.cjs +1 -1
  231. package/dist/lib/cjs/obsidian/ResourceUrl.d.cts +2 -1
  232. package/dist/lib/cjs/obsidian/SettingEx.cjs +41 -1
  233. package/dist/lib/cjs/obsidian/SettingEx.d.cts +35 -2
  234. package/dist/lib/cjs/obsidian/ValidationMessage.cjs +1 -1
  235. package/dist/lib/cjs/obsidian/ValidationMessage.d.cts +5 -0
  236. package/dist/lib/cjs/obsidian/Vault.cjs +1 -1
  237. package/dist/lib/cjs/obsidian/Vault.d.cts +6 -1
  238. package/dist/lib/cjs/obsidian/VaultEx.cjs +1 -1
  239. package/dist/lib/cjs/obsidian/VaultEx.d.cts +2 -1
  240. package/dist/lib/cjs/url.cjs +1 -1
  241. package/dist/lib/cjs/url.d.cts +2 -1
  242. package/dist/lib/esm/@types/debug.d.mts +1 -0
  243. package/dist/lib/esm/Array.d.mts +5 -0
  244. package/dist/lib/esm/Array.mjs +1 -1
  245. package/dist/lib/esm/Async.d.mts +2 -1
  246. package/dist/lib/esm/Async.mjs +1 -1
  247. package/dist/lib/esm/AsyncEvents.d.mts +7 -2
  248. package/dist/lib/esm/AsyncEvents.mjs +1 -1
  249. package/dist/lib/esm/Blob.d.mts +2 -1
  250. package/dist/lib/esm/Blob.mjs +1 -1
  251. package/dist/lib/esm/CssClass.d.mts +18 -1
  252. package/dist/lib/esm/CssClass.mjs +5 -1
  253. package/dist/lib/esm/Debug.d.mts +2 -1
  254. package/dist/lib/esm/Debug.mjs +1 -1
  255. package/dist/lib/esm/DebugController.d.mts +1 -0
  256. package/dist/lib/esm/Enum.d.mts +2 -1
  257. package/dist/lib/esm/Enum.mjs +1 -1
  258. package/dist/lib/esm/Error.d.mts +3 -2
  259. package/dist/lib/esm/Error.mjs +1 -1
  260. package/dist/lib/esm/Function.d.mts +2 -1
  261. package/dist/lib/esm/Function.mjs +1 -1
  262. package/dist/lib/esm/HTMLElement.d.mts +3 -1
  263. package/dist/lib/esm/HTMLElement.mjs +1 -1
  264. package/dist/lib/esm/Library.d.mts +2 -1
  265. package/dist/lib/esm/Library.mjs +2 -2
  266. package/dist/lib/esm/Object.d.mts +2 -1
  267. package/dist/lib/esm/Object.mjs +1 -1
  268. package/dist/lib/esm/Path.d.mts +2 -1
  269. package/dist/lib/esm/Path.mjs +1 -1
  270. package/dist/lib/esm/RegExp.d.mts +2 -1
  271. package/dist/lib/esm/RegExp.mjs +1 -1
  272. package/dist/lib/esm/ScriptUtils/CliUtils.d.mts +2 -1
  273. package/dist/lib/esm/ScriptUtils/CliUtils.mjs +1 -1
  274. package/dist/lib/esm/ScriptUtils/CodeGenerator.d.mts +2 -1
  275. package/dist/lib/esm/ScriptUtils/CodeGenerator.mjs +1 -1
  276. package/dist/lib/esm/ScriptUtils/ESLint/@types/@guardian__eslint-plugin-tsdoc-required.d.mts +1 -0
  277. package/dist/lib/esm/ScriptUtils/ESLint/@types/eslint-plugin-modules-newlines.d.mts +1 -0
  278. package/dist/lib/esm/ScriptUtils/ESLint/@types/eslint-plugin-verify-tsdoc.d.mts +1 -0
  279. package/dist/lib/esm/ScriptUtils/ESLint/ESLint.d.mts +2 -1
  280. package/dist/lib/esm/ScriptUtils/ESLint/ESLint.mjs +1 -1
  281. package/dist/lib/esm/ScriptUtils/ESLint/eslint.config.d.mts +2 -3
  282. package/dist/lib/esm/ScriptUtils/ESLint/eslint.config.mjs +13 -10
  283. package/dist/lib/esm/ScriptUtils/Exec.d.mts +2 -1
  284. package/dist/lib/esm/ScriptUtils/Exec.mjs +1 -1
  285. package/dist/lib/esm/ScriptUtils/Fs.d.mts +2 -1
  286. package/dist/lib/esm/ScriptUtils/Fs.mjs +1 -1
  287. package/dist/lib/esm/ScriptUtils/JSON.d.mts +2 -1
  288. package/dist/lib/esm/ScriptUtils/JSON.mjs +1 -1
  289. package/dist/lib/esm/ScriptUtils/NodeModules.d.mts +2 -1
  290. package/dist/lib/esm/ScriptUtils/NodeModules.mjs +1 -1
  291. package/dist/lib/esm/ScriptUtils/Npm.d.mts +2 -3
  292. package/dist/lib/esm/ScriptUtils/Npm.mjs +1 -1
  293. package/dist/lib/esm/ScriptUtils/NpmPublish.d.mts +3 -1
  294. package/dist/lib/esm/ScriptUtils/NpmPublish.mjs +1 -1
  295. package/dist/lib/esm/ScriptUtils/NpmRun.d.mts +5 -0
  296. package/dist/lib/esm/ScriptUtils/NpmRun.mjs +1 -1
  297. package/dist/lib/esm/ScriptUtils/ObsidianDevUtilsRepoPaths.d.mts +42 -61
  298. package/dist/lib/esm/ScriptUtils/ObsidianDevUtilsRepoPaths.mjs +1 -10
  299. package/dist/lib/esm/ScriptUtils/Root.d.mts +2 -1
  300. package/dist/lib/esm/ScriptUtils/Root.mjs +1 -1
  301. package/dist/lib/esm/ScriptUtils/build.d.mts +2 -1
  302. package/dist/lib/esm/ScriptUtils/build.mjs +1 -1
  303. package/dist/lib/esm/ScriptUtils/cli.d.mts +2 -1
  304. package/dist/lib/esm/ScriptUtils/cli.mjs +1 -1
  305. package/dist/lib/esm/ScriptUtils/esbuild/Dependency.d.mts +2 -1
  306. package/dist/lib/esm/ScriptUtils/esbuild/Dependency.mjs +1 -1
  307. package/dist/lib/esm/ScriptUtils/esbuild/ObsidianPluginBuilder.d.mts +2 -1
  308. package/dist/lib/esm/ScriptUtils/esbuild/ObsidianPluginBuilder.mjs +1 -1
  309. package/dist/lib/esm/ScriptUtils/esbuild/changeExtensionPlugin.d.mts +2 -1
  310. package/dist/lib/esm/ScriptUtils/esbuild/changeExtensionPlugin.mjs +1 -1
  311. package/dist/lib/esm/ScriptUtils/esbuild/copyToObsidianPluginsFolderPlugin.d.mts +2 -1
  312. package/dist/lib/esm/ScriptUtils/esbuild/copyToObsidianPluginsFolderPlugin.mjs +1 -1
  313. package/dist/lib/esm/ScriptUtils/esbuild/customEsbuildOptionsPlugin.d.mts +2 -1
  314. package/dist/lib/esm/ScriptUtils/esbuild/customEsbuildOptionsPlugin.mjs +1 -1
  315. package/dist/lib/esm/ScriptUtils/esbuild/fixEsmPlugin.d.mts +2 -1
  316. package/dist/lib/esm/ScriptUtils/esbuild/fixEsmPlugin.mjs +1 -1
  317. package/dist/lib/esm/ScriptUtils/esbuild/fixSourceMapsPlugin.d.mts +2 -1
  318. package/dist/lib/esm/ScriptUtils/esbuild/fixSourceMapsPlugin.mjs +1 -1
  319. package/dist/lib/esm/ScriptUtils/esbuild/preprocessPlugin.d.mts +2 -1
  320. package/dist/lib/esm/ScriptUtils/esbuild/preprocessPlugin.mjs +1 -1
  321. package/dist/lib/esm/ScriptUtils/esbuild/renameCssPlugin.d.mts +5 -0
  322. package/dist/lib/esm/ScriptUtils/esbuild/renameCssPlugin.mjs +1 -1
  323. package/dist/lib/esm/ScriptUtils/esbuild/svelteWrapperPlugin.d.mts +5 -0
  324. package/dist/lib/esm/ScriptUtils/esbuild/svelteWrapperPlugin.mjs +1 -1
  325. package/dist/lib/esm/ScriptUtils/format.d.mts +3 -1
  326. package/dist/lib/esm/ScriptUtils/format.mjs +1 -1
  327. package/dist/lib/esm/ScriptUtils/spellcheck.d.mts +2 -1
  328. package/dist/lib/esm/ScriptUtils/spellcheck.mjs +1 -1
  329. package/dist/lib/esm/ScriptUtils/version.d.mts +2 -1
  330. package/dist/lib/esm/ScriptUtils/version.mjs +1 -1
  331. package/dist/lib/esm/String.d.mts +2 -1
  332. package/dist/lib/esm/String.mjs +1 -1
  333. package/dist/lib/esm/Transformers/DateTransformer.d.mts +4 -1
  334. package/dist/lib/esm/Transformers/DateTransformer.mjs +3 -1
  335. package/dist/lib/esm/Transformers/DurationTransformer.d.mts +6 -1
  336. package/dist/lib/esm/Transformers/DurationTransformer.mjs +5 -1
  337. package/dist/lib/esm/Transformers/GroupTransformer.d.mts +9 -5
  338. package/dist/lib/esm/Transformers/GroupTransformer.mjs +7 -4
  339. package/dist/lib/esm/Transformers/SkipPrivatePropertyTransformer.d.mts +4 -1
  340. package/dist/lib/esm/Transformers/SkipPrivatePropertyTransformer.mjs +3 -1
  341. package/dist/lib/esm/Transformers/Transformer.d.mts +2 -1
  342. package/dist/lib/esm/Transformers/Transformer.mjs +1 -1
  343. package/dist/lib/esm/Transformers/TypedTransformer.d.mts +2 -1
  344. package/dist/lib/esm/Transformers/TypedTransformer.mjs +1 -1
  345. package/dist/lib/esm/Type.d.mts +5 -0
  346. package/dist/lib/esm/ValueProvider.d.mts +2 -1
  347. package/dist/lib/esm/ValueProvider.mjs +1 -1
  348. package/dist/lib/esm/codemirror/StateFieldSpec.d.mts +2 -1
  349. package/dist/lib/esm/obsidian/App.d.mts +2 -1
  350. package/dist/lib/esm/obsidian/App.mjs +1 -1
  351. package/dist/lib/esm/obsidian/AttachmentPath.d.mts +3 -1
  352. package/dist/lib/esm/obsidian/AttachmentPath.mjs +1 -1
  353. package/dist/lib/esm/obsidian/Backlink.d.mts +2 -1
  354. package/dist/lib/esm/obsidian/Backlink.mjs +1 -1
  355. package/dist/lib/esm/obsidian/Callout.d.mts +2 -1
  356. package/dist/lib/esm/obsidian/Callout.mjs +1 -1
  357. package/dist/lib/esm/obsidian/Components/CheckboxComponent.d.mts +56 -0
  358. package/dist/lib/esm/obsidian/Components/CheckboxComponent.mjs +72 -0
  359. package/dist/lib/esm/obsidian/Components/DateComponent.d.mts +2 -1
  360. package/dist/lib/esm/obsidian/Components/DateComponent.mjs +1 -1
  361. package/dist/lib/esm/obsidian/Components/DateTimeComponent.d.mts +2 -1
  362. package/dist/lib/esm/obsidian/Components/DateTimeComponent.mjs +1 -1
  363. package/dist/lib/esm/obsidian/Components/EmailComponent.d.mts +2 -1
  364. package/dist/lib/esm/obsidian/Components/EmailComponent.mjs +1 -1
  365. package/dist/lib/esm/obsidian/Components/FileComponent.d.mts +2 -1
  366. package/dist/lib/esm/obsidian/Components/FileComponent.mjs +1 -1
  367. package/dist/lib/esm/obsidian/Components/MonthComponent.d.mts +2 -1
  368. package/dist/lib/esm/obsidian/Components/MonthComponent.mjs +1 -1
  369. package/dist/lib/esm/obsidian/Components/MultipleDropdownComponent.d.mts +4 -1
  370. package/dist/lib/esm/obsidian/Components/MultipleDropdownComponent.mjs +4 -2
  371. package/dist/lib/esm/obsidian/Components/MultipleEmailComponent.d.mts +2 -1
  372. package/dist/lib/esm/obsidian/Components/MultipleEmailComponent.mjs +1 -1
  373. package/dist/lib/esm/obsidian/Components/MultipleFileComponent.d.mts +2 -1
  374. package/dist/lib/esm/obsidian/Components/MultipleFileComponent.mjs +1 -1
  375. package/dist/lib/esm/obsidian/Components/MultipleTextComponent.d.mts +2 -1
  376. package/dist/lib/esm/obsidian/Components/MultipleTextComponent.mjs +2 -2
  377. package/dist/lib/esm/obsidian/Components/NumberComponent.d.mts +2 -1
  378. package/dist/lib/esm/obsidian/Components/NumberComponent.mjs +1 -1
  379. package/dist/lib/esm/obsidian/Components/TextBasedComponent.d.mts +8 -0
  380. package/dist/lib/esm/obsidian/Components/TextBasedComponent.mjs +1 -1
  381. package/dist/lib/esm/obsidian/Components/TimeComponent.d.mts +2 -1
  382. package/dist/lib/esm/obsidian/Components/TimeComponent.mjs +1 -1
  383. package/dist/lib/esm/obsidian/Components/TriStateCheckboxComponent.d.mts +56 -0
  384. package/dist/lib/esm/obsidian/Components/TriStateCheckboxComponent.mjs +73 -0
  385. package/dist/lib/esm/obsidian/Components/TypedDropdownComponent.d.mts +78 -0
  386. package/dist/lib/esm/obsidian/Components/TypedDropdownComponent.mjs +108 -0
  387. package/dist/lib/esm/obsidian/Components/TypedMultipleDropdownComponent.d.mts +79 -0
  388. package/dist/lib/esm/obsidian/Components/TypedMultipleDropdownComponent.mjs +110 -0
  389. package/dist/lib/esm/obsidian/Components/TypedRangeTextComponent.d.mts +4 -1
  390. package/dist/lib/esm/obsidian/Components/TypedRangeTextComponent.mjs +1 -1
  391. package/dist/lib/esm/obsidian/Components/TypedTextComponent.d.mts +6 -1
  392. package/dist/lib/esm/obsidian/Components/TypedTextComponent.mjs +4 -2
  393. package/dist/lib/esm/obsidian/Components/UrlComponent.d.mts +2 -1
  394. package/dist/lib/esm/obsidian/Components/UrlComponent.mjs +1 -1
  395. package/dist/lib/esm/obsidian/Components/ValidatorComponent.d.mts +2 -1
  396. package/dist/lib/esm/obsidian/Components/ValidatorComponent.mjs +1 -1
  397. package/dist/lib/esm/obsidian/Components/ValueComponentWithChangeTracking.d.mts +4 -1
  398. package/dist/lib/esm/obsidian/Components/WeekComponent.d.mts +2 -1
  399. package/dist/lib/esm/obsidian/Components/WeekComponent.mjs +1 -1
  400. package/dist/lib/esm/obsidian/Components/index.d.mts +4 -0
  401. package/dist/lib/esm/obsidian/Components/index.mjs +9 -1
  402. package/dist/lib/esm/obsidian/Dataview.d.mts +3 -4
  403. package/dist/lib/esm/obsidian/Dataview.mjs +1 -1
  404. package/dist/lib/esm/obsidian/DataviewLink.d.mts +2 -1
  405. package/dist/lib/esm/obsidian/DataviewLink.mjs +1 -1
  406. package/dist/lib/esm/obsidian/FileChange.d.mts +2 -1
  407. package/dist/lib/esm/obsidian/FileChange.mjs +1 -1
  408. package/dist/lib/esm/obsidian/FileManager.d.mts +2 -1
  409. package/dist/lib/esm/obsidian/FileManager.mjs +1 -1
  410. package/dist/lib/esm/obsidian/FileSystem.d.mts +3 -1
  411. package/dist/lib/esm/obsidian/FileSystem.mjs +1 -1
  412. package/dist/lib/esm/obsidian/Frontmatter.d.mts +5 -1
  413. package/dist/lib/esm/obsidian/Frontmatter.mjs +1 -1
  414. package/dist/lib/esm/obsidian/Link.d.mts +2 -1
  415. package/dist/lib/esm/obsidian/Link.mjs +1 -1
  416. package/dist/lib/esm/obsidian/Logger.d.mts +2 -1
  417. package/dist/lib/esm/obsidian/Logger.mjs +1 -1
  418. package/dist/lib/esm/obsidian/Loop.d.mts +2 -1
  419. package/dist/lib/esm/obsidian/Loop.mjs +1 -1
  420. package/dist/lib/esm/obsidian/Markdown.d.mts +2 -1
  421. package/dist/lib/esm/obsidian/Markdown.mjs +1 -1
  422. package/dist/lib/esm/obsidian/MarkdownCodeBlockProcessor.d.mts +2 -1
  423. package/dist/lib/esm/obsidian/MarkdownCodeBlockProcessor.mjs +1 -1
  424. package/dist/lib/esm/obsidian/MarkdownView.d.mts +2 -1
  425. package/dist/lib/esm/obsidian/MarkdownView.mjs +1 -1
  426. package/dist/lib/esm/obsidian/MetadataCache.d.mts +4 -2
  427. package/dist/lib/esm/obsidian/MetadataCache.mjs +1 -1
  428. package/dist/lib/esm/obsidian/Modals/Alert.d.mts +2 -1
  429. package/dist/lib/esm/obsidian/Modals/Alert.mjs +1 -1
  430. package/dist/lib/esm/obsidian/Modals/Confirm.d.mts +2 -1
  431. package/dist/lib/esm/obsidian/Modals/Confirm.mjs +1 -1
  432. package/dist/lib/esm/obsidian/Modals/ModalBase.d.mts +1 -1
  433. package/dist/lib/esm/obsidian/Modals/ModalBase.mjs +1 -1
  434. package/dist/lib/esm/obsidian/Modals/Prompt.d.mts +3 -1
  435. package/dist/lib/esm/obsidian/Modals/Prompt.mjs +1 -1
  436. package/dist/lib/esm/obsidian/Modals/SelectItem.d.mts +3 -1
  437. package/dist/lib/esm/obsidian/Modals/SelectItem.mjs +1 -1
  438. package/dist/lib/esm/obsidian/MonkeyAround.d.mts +3 -1
  439. package/dist/lib/esm/obsidian/MonkeyAround.mjs +1 -1
  440. package/dist/lib/esm/obsidian/ObsidianSettings.d.mts +3 -0
  441. package/dist/lib/esm/obsidian/ObsidianSettings.mjs +1 -1
  442. package/dist/lib/esm/obsidian/Pdf.d.mts +2 -1
  443. package/dist/lib/esm/obsidian/Pdf.mjs +1 -1
  444. package/dist/lib/esm/obsidian/Plugin/ObsidianPluginRepoPaths.d.mts +38 -29
  445. package/dist/lib/esm/obsidian/Plugin/ObsidianPluginRepoPaths.mjs +6 -2
  446. package/dist/lib/esm/obsidian/Plugin/Plugin.d.mts +2 -1
  447. package/dist/lib/esm/obsidian/Plugin/Plugin.mjs +1 -1
  448. package/dist/lib/esm/obsidian/Plugin/PluginBase.d.mts +13 -16
  449. package/dist/lib/esm/obsidian/Plugin/PluginBase.mjs +21 -25
  450. package/dist/lib/esm/obsidian/Plugin/PluginContext.d.mts +2 -1
  451. package/dist/lib/esm/obsidian/Plugin/PluginContext.mjs +1 -1
  452. package/dist/lib/esm/obsidian/Plugin/PluginId.d.mts +2 -1
  453. package/dist/lib/esm/obsidian/Plugin/PluginId.mjs +1 -1
  454. package/dist/lib/esm/obsidian/Plugin/PluginSettingsManagerBase.d.mts +5 -2
  455. package/dist/lib/esm/obsidian/Plugin/PluginSettingsManagerBase.mjs +1 -3
  456. package/dist/lib/esm/obsidian/Plugin/PluginSettingsTabBase.d.mts +4 -1
  457. package/dist/lib/esm/obsidian/Plugin/PluginSettingsTabBase.mjs +1 -1
  458. package/dist/lib/esm/obsidian/Queue.d.mts +2 -1
  459. package/dist/lib/esm/obsidian/Queue.mjs +1 -1
  460. package/dist/lib/esm/obsidian/React/AppContext.d.mts +8 -1
  461. package/dist/lib/esm/obsidian/React/AppContext.mjs +3 -3
  462. package/dist/lib/esm/obsidian/Reference.d.mts +2 -1
  463. package/dist/lib/esm/obsidian/Reference.mjs +1 -1
  464. package/dist/lib/esm/obsidian/RenameDeleteHandler.d.mts +3 -2
  465. package/dist/lib/esm/obsidian/RenameDeleteHandler.mjs +1 -1
  466. package/dist/lib/esm/obsidian/ResourceUrl.d.mts +2 -1
  467. package/dist/lib/esm/obsidian/ResourceUrl.mjs +1 -1
  468. package/dist/lib/esm/obsidian/SettingEx.d.mts +35 -2
  469. package/dist/lib/esm/obsidian/SettingEx.mjs +41 -1
  470. package/dist/lib/esm/obsidian/ValidationMessage.d.mts +5 -0
  471. package/dist/lib/esm/obsidian/ValidationMessage.mjs +1 -1
  472. package/dist/lib/esm/obsidian/Vault.d.mts +6 -1
  473. package/dist/lib/esm/obsidian/Vault.mjs +1 -1
  474. package/dist/lib/esm/obsidian/VaultEx.d.mts +2 -1
  475. package/dist/lib/esm/obsidian/VaultEx.mjs +1 -1
  476. package/dist/lib/esm/url.d.mts +2 -1
  477. package/dist/lib/esm/url.mjs +1 -1
  478. package/obsidian/Components/CheckboxComponent/package.json +6 -0
  479. package/obsidian/Components/TriStateCheckboxComponent/package.json +6 -0
  480. package/obsidian/Components/TypedDropdownComponent/package.json +6 -0
  481. package/obsidian/Components/TypedMultipleDropdownComponent/package.json +6 -0
  482. package/package.json +2 -2
@@ -1,11 +1,14 @@
1
1
  /**
2
- * @packageDocumentation ValueComponentWithChangeTracking
2
+ * @packageDocumentation
3
+ *
3
4
  * Contains a type that extends ValueComponent to allow for change tracking.
4
5
  */
5
6
  import type { ValueComponent } from 'obsidian';
6
7
  import type { Promisable } from 'type-fest';
7
8
  /**
8
9
  * A ValueComponent that can track changes.
10
+ *
11
+ * @typeParam T - The type of the value to set.
9
12
  */
10
13
  export interface ValueComponentWithChangeTracking<T> extends ValueComponent<T> {
11
14
  /**
@@ -1,5 +1,6 @@
1
1
  /**
2
- * @packageDocumentation WeekComponent
2
+ * @packageDocumentation
3
+ *
3
4
  * Contains a component that displays and edits a week.
4
5
  */
5
6
  import { TypedRangeTextComponent } from './TypedRangeTextComponent.mjs';
@@ -48,4 +48,4 @@ class WeekComponent extends TypedRangeTextComponent {
48
48
  export {
49
49
  WeekComponent
50
50
  };
51
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL0NvbXBvbmVudHMvV2Vla0NvbXBvbmVudC50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAcGFja2FnZURvY3VtZW50YXRpb24gV2Vla0NvbXBvbmVudFxuICogQ29udGFpbnMgYSBjb21wb25lbnQgdGhhdCBkaXNwbGF5cyBhbmQgZWRpdHMgYSB3ZWVrLlxuICovXG5cbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50JztcblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuaW1wb3J0IHR5cGUgeyBpbml0UGx1Z2luQ29udGV4dCB9IGZyb20gJy4uL1BsdWdpbi9QbHVnaW5Db250ZXh0LnRzJztcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbmltcG9ydCB0eXBlIHsgU2V0dGluZ0V4IH0gZnJvbSAnLi4vU2V0dGluZ0V4LnRzJztcblxuaW1wb3J0IHsgQ3NzQ2xhc3MgfSBmcm9tICcuLi8uLi9Dc3NDbGFzcy50cyc7XG5pbXBvcnQgeyBUeXBlZFJhbmdlVGV4dENvbXBvbmVudCB9IGZyb20gJy4vVHlwZWRSYW5nZVRleHRDb21wb25lbnQudHMnO1xuXG5jb25zdCBEQVRFX0ZPUk1BVCA9ICdZWVlZLVtXXVdXJztcblxuLyoqXG4gKiBSZXByZXNlbnRzIGFuIElTTyA4NjAxIHdlZWsgZGF0ZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJc29XZWVrIHtcbiAgLyoqXG4gICAqIFRoZSBJU08gODYwMSB3ZWVrIG51bWJlciAoMS01MykuXG4gICAqL1xuICB3ZWVrTnVtYmVyOiBudW1iZXI7XG4gIC8qKlxuICAgKiBUaGUgeWVhciAoMS05OTk5KS5cbiAgICovXG4gIHllYXI6IG51bWJlcjtcbn1cblxuLyoqXG4gKiBBIGNvbXBvbmVudCB0aGF0IGRpc3BsYXlzIGFuZCBlZGl0cyBhIFdlZWsuXG4gKlxuICogWW91IGNhbiBhZGQgdGhpcyBjb21wb25lbnQgdXNpbmcge0BsaW5rIFNldHRpbmdFeC5hZGRXZWVrfS5cbiAqXG4gKiBJbiBvcmRlciB0byBhZGQgdGhlIHN0eWxlcyBmb3IgdGhlIGNvbXBvbmVudCwgdXNlIHtAbGluayBpbml0UGx1Z2luQ29udGV4dH0gaW4geW91ciBwbHVnaW4ncyBgb25sb2FkKClgIGZ1bmN0aW9uLlxuICpcbiAqIEFsdGVybmF0aXZlbHksIHlvdSBjYW4gY29weSBzdHlsZXMgZnJvbSB7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL21uYW91bW92L29ic2lkaWFuLWRldi11dGlscy9yZWxlYXNlcy9sYXRlc3QvZG93bmxvYWQvc3R5bGVzLmNzc30uXG4gKi9cbmV4cG9ydCBjbGFzcyBXZWVrQ29tcG9uZW50IGV4dGVuZHMgVHlwZWRSYW5nZVRleHRDb21wb25lbnQ8SXNvV2Vlaz4ge1xuICAvKipcbiAgICogQ3JlYXRlcyBhIG5ldyBXZWVrIGNvbXBvbmVudC5cbiAgICpcbiAgICogQHBhcmFtIGNvbnRhaW5lckVsIC0gVGhlIGNvbnRhaW5lciBlbGVtZW50IG9mIHRoZSBjb21wb25lbnQuXG4gICAqL1xuICBwdWJsaWMgY29uc3RydWN0b3IoY29udGFpbmVyRWw6IEhUTUxFbGVtZW50KSB7XG4gICAgc3VwZXIoY29udGFpbmVyRWwsICd3ZWVrJywgQ3NzQ2xhc3MuV2Vla0NvbXBvbmVudCk7XG4gIH1cblxuICAvKipcbiAgICogQ29udmVydHMgYSBzdHJpbmcgdG8gYSBXZWVrLlxuICAgKlxuICAgKiBAcGFyYW0gc3RyIC0gVGhlIHN0cmluZyB0byBjb252ZXJ0LlxuICAgKiBAcmV0dXJucyBUaGUgd2Vlay5cbiAgICovXG4gIHB1YmxpYyBvdmVycmlkZSB2YWx1ZUZyb21TdHJpbmcoc3RyOiBzdHJpbmcpOiBJc29XZWVrIHtcbiAgICBjb25zdCBwYXJzZWQgPSBtb21lbnQoc3RyLCBEQVRFX0ZPUk1BVCk7XG5cbiAgICBpZiAoIXBhcnNlZC5pc1ZhbGlkKCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCB3ZWVrJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIHdlZWtOdW1iZXI6IHBhcnNlZC5pc29XZWVrKCksXG4gICAgICB5ZWFyOiBwYXJzZWQueWVhcigpXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb252ZXJ0cyBhIHdlZWsgdG8gYSBzdHJpbmcuXG4gICAqXG4gICAqIEBwYXJhbSB2YWx1ZSAtIFRoZSB3ZWVrIHRvIGNvbnZlcnQuXG4gICAqIEByZXR1cm5zIFRoZSBzdHJpbmcuXG4gICAqL1xuICBwdWJsaWMgb3ZlcnJpZGUgdmFsdWVUb1N0cmluZyh2YWx1ZTogSXNvV2Vlayk6IHN0cmluZyB7XG4gICAgY29uc3QgZGF0ZSA9IG1vbWVudCgpLnllYXIodmFsdWUueWVhcikuaXNvV2Vlayh2YWx1ZS53ZWVrTnVtYmVyKTtcbiAgICByZXR1cm4gZGF0ZS5mb3JtYXQoREFURV9GT1JNQVQpO1xuICB9XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7O0FBS0EsT0FBTyxZQUFZO0FBT25CLFNBQVMsZ0JBQWdCO0FBQ3pCLFNBQVMsK0JBQStCO0FBRXhDLE1BQU0sY0FBYztBQXlCYixNQUFNLHNCQUFzQix3QkFBaUM7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFNM0QsWUFBWSxhQUEwQjtBQUMzQyxVQUFNLGFBQWEsUUFBUSxTQUFTLGFBQWE7QUFBQSxFQUNuRDtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBUWdCLGdCQUFnQixLQUFzQjtBQUNwRCxVQUFNLFNBQVMsT0FBTyxLQUFLLFdBQVc7QUFFdEMsUUFBSSxDQUFDLE9BQU8sUUFBUSxHQUFHO0FBQ3JCLFlBQU0sSUFBSSxNQUFNLGNBQWM7QUFBQSxJQUNoQztBQUVBLFdBQU87QUFBQSxNQUNMLFlBQVksT0FBTyxRQUFRO0FBQUEsTUFDM0IsTUFBTSxPQUFPLEtBQUs7QUFBQSxJQUNwQjtBQUFBLEVBQ0Y7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQVFnQixjQUFjLE9BQXdCO0FBQ3BELFVBQU0sT0FBTyxPQUFPLEVBQUUsS0FBSyxNQUFNLElBQUksRUFBRSxRQUFRLE1BQU0sVUFBVTtBQUMvRCxXQUFPLEtBQUssT0FBTyxXQUFXO0FBQUEsRUFDaEM7QUFDRjsiLAogICJuYW1lcyI6IFtdCn0K
51
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL0NvbXBvbmVudHMvV2Vla0NvbXBvbmVudC50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAcGFja2FnZURvY3VtZW50YXRpb25cbiAqXG4gKiBDb250YWlucyBhIGNvbXBvbmVudCB0aGF0IGRpc3BsYXlzIGFuZCBlZGl0cyBhIHdlZWsuXG4gKi9cblxuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnO1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG5pbXBvcnQgdHlwZSB7IGluaXRQbHVnaW5Db250ZXh0IH0gZnJvbSAnLi4vUGx1Z2luL1BsdWdpbkNvbnRleHQudHMnO1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuaW1wb3J0IHR5cGUgeyBTZXR0aW5nRXggfSBmcm9tICcuLi9TZXR0aW5nRXgudHMnO1xuXG5pbXBvcnQgeyBDc3NDbGFzcyB9IGZyb20gJy4uLy4uL0Nzc0NsYXNzLnRzJztcbmltcG9ydCB7IFR5cGVkUmFuZ2VUZXh0Q29tcG9uZW50IH0gZnJvbSAnLi9UeXBlZFJhbmdlVGV4dENvbXBvbmVudC50cyc7XG5cbmNvbnN0IERBVEVfRk9STUFUID0gJ1lZWVktW1ddV1cnO1xuXG4vKipcbiAqIFJlcHJlc2VudHMgYW4gSVNPIDg2MDEgd2VlayBkYXRlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIElzb1dlZWsge1xuICAvKipcbiAgICogVGhlIElTTyA4NjAxIHdlZWsgbnVtYmVyICgxLTUzKS5cbiAgICovXG4gIHdlZWtOdW1iZXI6IG51bWJlcjtcbiAgLyoqXG4gICAqIFRoZSB5ZWFyICgxLTk5OTkpLlxuICAgKi9cbiAgeWVhcjogbnVtYmVyO1xufVxuXG4vKipcbiAqIEEgY29tcG9uZW50IHRoYXQgZGlzcGxheXMgYW5kIGVkaXRzIGEgV2Vlay5cbiAqXG4gKiBZb3UgY2FuIGFkZCB0aGlzIGNvbXBvbmVudCB1c2luZyB7QGxpbmsgU2V0dGluZ0V4LmFkZFdlZWt9LlxuICpcbiAqIEluIG9yZGVyIHRvIGFkZCB0aGUgc3R5bGVzIGZvciB0aGUgY29tcG9uZW50LCB1c2Uge0BsaW5rIGluaXRQbHVnaW5Db250ZXh0fSBpbiB5b3VyIHBsdWdpbidzIGBvbmxvYWQoKWAgZnVuY3Rpb24uXG4gKlxuICogQWx0ZXJuYXRpdmVseSwgeW91IGNhbiBjb3B5IHN0eWxlcyBmcm9tIHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vbW5hb3Vtb3Yvb2JzaWRpYW4tZGV2LXV0aWxzL3JlbGVhc2VzL2xhdGVzdC9kb3dubG9hZC9zdHlsZXMuY3NzfS5cbiAqL1xuZXhwb3J0IGNsYXNzIFdlZWtDb21wb25lbnQgZXh0ZW5kcyBUeXBlZFJhbmdlVGV4dENvbXBvbmVudDxJc29XZWVrPiB7XG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgbmV3IFdlZWsgY29tcG9uZW50LlxuICAgKlxuICAgKiBAcGFyYW0gY29udGFpbmVyRWwgLSBUaGUgY29udGFpbmVyIGVsZW1lbnQgb2YgdGhlIGNvbXBvbmVudC5cbiAgICovXG4gIHB1YmxpYyBjb25zdHJ1Y3Rvcihjb250YWluZXJFbDogSFRNTEVsZW1lbnQpIHtcbiAgICBzdXBlcihjb250YWluZXJFbCwgJ3dlZWsnLCBDc3NDbGFzcy5XZWVrQ29tcG9uZW50KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb252ZXJ0cyBhIHN0cmluZyB0byBhIFdlZWsuXG4gICAqXG4gICAqIEBwYXJhbSBzdHIgLSBUaGUgc3RyaW5nIHRvIGNvbnZlcnQuXG4gICAqIEByZXR1cm5zIFRoZSB3ZWVrLlxuICAgKi9cbiAgcHVibGljIG92ZXJyaWRlIHZhbHVlRnJvbVN0cmluZyhzdHI6IHN0cmluZyk6IElzb1dlZWsge1xuICAgIGNvbnN0IHBhcnNlZCA9IG1vbWVudChzdHIsIERBVEVfRk9STUFUKTtcblxuICAgIGlmICghcGFyc2VkLmlzVmFsaWQoKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIHdlZWsnKTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgd2Vla051bWJlcjogcGFyc2VkLmlzb1dlZWsoKSxcbiAgICAgIHllYXI6IHBhcnNlZC55ZWFyKClcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnRzIGEgd2VlayB0byBhIHN0cmluZy5cbiAgICpcbiAgICogQHBhcmFtIHZhbHVlIC0gVGhlIHdlZWsgdG8gY29udmVydC5cbiAgICogQHJldHVybnMgVGhlIHN0cmluZy5cbiAgICovXG4gIHB1YmxpYyBvdmVycmlkZSB2YWx1ZVRvU3RyaW5nKHZhbHVlOiBJc29XZWVrKTogc3RyaW5nIHtcbiAgICBjb25zdCBkYXRlID0gbW9tZW50KCkueWVhcih2YWx1ZS55ZWFyKS5pc29XZWVrKHZhbHVlLndlZWtOdW1iZXIpO1xuICAgIHJldHVybiBkYXRlLmZvcm1hdChEQVRFX0ZPUk1BVCk7XG4gIH1cbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7QUFNQSxPQUFPLFlBQVk7QUFPbkIsU0FBUyxnQkFBZ0I7QUFDekIsU0FBUywrQkFBK0I7QUFFeEMsTUFBTSxjQUFjO0FBeUJiLE1BQU0sc0JBQXNCLHdCQUFpQztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU0zRCxZQUFZLGFBQTBCO0FBQzNDLFVBQU0sYUFBYSxRQUFRLFNBQVMsYUFBYTtBQUFBLEVBQ25EO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFRZ0IsZ0JBQWdCLEtBQXNCO0FBQ3BELFVBQU0sU0FBUyxPQUFPLEtBQUssV0FBVztBQUV0QyxRQUFJLENBQUMsT0FBTyxRQUFRLEdBQUc7QUFDckIsWUFBTSxJQUFJLE1BQU0sY0FBYztBQUFBLElBQ2hDO0FBRUEsV0FBTztBQUFBLE1BQ0wsWUFBWSxPQUFPLFFBQVE7QUFBQSxNQUMzQixNQUFNLE9BQU8sS0FBSztBQUFBLElBQ3BCO0FBQUEsRUFDRjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBUWdCLGNBQWMsT0FBd0I7QUFDcEQsVUFBTSxPQUFPLE9BQU8sRUFBRSxLQUFLLE1BQU0sSUFBSSxFQUFFLFFBQVEsTUFBTSxVQUFVO0FBQy9ELFdBQU8sS0FBSyxPQUFPLFdBQVc7QUFBQSxFQUNoQztBQUNGOyIsCiAgIm5hbWVzIjogW10KfQo=
@@ -1,3 +1,4 @@
1
+ export * as CheckboxComponent from './CheckboxComponent.mjs';
1
2
  export * as DateComponent from './DateComponent.mjs';
2
3
  export * as DateTimeComponent from './DateTimeComponent.mjs';
3
4
  export * as EmailComponent from './EmailComponent.mjs';
@@ -10,6 +11,9 @@ export * as MultipleTextComponent from './MultipleTextComponent.mjs';
10
11
  export * as NumberComponent from './NumberComponent.mjs';
11
12
  export * as TextBasedComponent from './TextBasedComponent.mjs';
12
13
  export * as TimeComponent from './TimeComponent.mjs';
14
+ export * as TriStateCheckboxComponent from './TriStateCheckboxComponent.mjs';
15
+ export * as TypedDropdownComponent from './TypedDropdownComponent.mjs';
16
+ export * as TypedMultipleDropdownComponent from './TypedMultipleDropdownComponent.mjs';
13
17
  export * as TypedRangeTextComponent from './TypedRangeTextComponent.mjs';
14
18
  export * as TypedTextComponent from './TypedTextComponent.mjs';
15
19
  export * as UrlComponent from './UrlComponent.mjs';
@@ -5,6 +5,7 @@ if you want to view the source, please visit the github repository of this plugi
5
5
 
6
6
  (function initEsm(){if(globalThis.process){return}const browserProcess={browser:true,cwd:__name(()=>"/","cwd"),env:{},platform:"android"};globalThis.process=browserProcess})();
7
7
 
8
+ import * as CheckboxComponent from "./CheckboxComponent.mjs";
8
9
  import * as DateComponent from "./DateComponent.mjs";
9
10
  import * as DateTimeComponent from "./DateTimeComponent.mjs";
10
11
  import * as EmailComponent from "./EmailComponent.mjs";
@@ -17,6 +18,9 @@ import * as MultipleTextComponent from "./MultipleTextComponent.mjs";
17
18
  import * as NumberComponent from "./NumberComponent.mjs";
18
19
  import * as TextBasedComponent from "./TextBasedComponent.mjs";
19
20
  import * as TimeComponent from "./TimeComponent.mjs";
21
+ import * as TriStateCheckboxComponent from "./TriStateCheckboxComponent.mjs";
22
+ import * as TypedDropdownComponent from "./TypedDropdownComponent.mjs";
23
+ import * as TypedMultipleDropdownComponent from "./TypedMultipleDropdownComponent.mjs";
20
24
  import * as TypedRangeTextComponent from "./TypedRangeTextComponent.mjs";
21
25
  import * as TypedTextComponent from "./TypedTextComponent.mjs";
22
26
  import * as UrlComponent from "./UrlComponent.mjs";
@@ -24,6 +28,7 @@ import * as ValidatorComponent from "./ValidatorComponent.mjs";
24
28
  import * as ValueComponentWithChangeTracking from "./ValueComponentWithChangeTracking.mjs";
25
29
  import * as WeekComponent from "./WeekComponent.mjs";
26
30
  export {
31
+ CheckboxComponent,
27
32
  DateComponent,
28
33
  DateTimeComponent,
29
34
  EmailComponent,
@@ -36,6 +41,9 @@ export {
36
41
  NumberComponent,
37
42
  TextBasedComponent,
38
43
  TimeComponent,
44
+ TriStateCheckboxComponent,
45
+ TypedDropdownComponent,
46
+ TypedMultipleDropdownComponent,
39
47
  TypedRangeTextComponent,
40
48
  TypedTextComponent,
41
49
  UrlComponent,
@@ -43,4 +51,4 @@ export {
43
51
  ValueComponentWithChangeTracking,
44
52
  WeekComponent
45
53
  };
46
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL0NvbXBvbmVudHMvaW5kZXgudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qIFRISVMgSVMgQSBHRU5FUkFURUQvQlVORExFRCBGSUxFIEJZIEJVSUxEIFNDUklQVCAqL1xuXG5leHBvcnQgKiBhcyBEYXRlQ29tcG9uZW50IGZyb20gJy4vRGF0ZUNvbXBvbmVudC50cyc7XG5leHBvcnQgKiBhcyBEYXRlVGltZUNvbXBvbmVudCBmcm9tICcuL0RhdGVUaW1lQ29tcG9uZW50LnRzJztcbmV4cG9ydCAqIGFzIEVtYWlsQ29tcG9uZW50IGZyb20gJy4vRW1haWxDb21wb25lbnQudHMnO1xuZXhwb3J0ICogYXMgRmlsZUNvbXBvbmVudCBmcm9tICcuL0ZpbGVDb21wb25lbnQudHMnO1xuZXhwb3J0ICogYXMgTW9udGhDb21wb25lbnQgZnJvbSAnLi9Nb250aENvbXBvbmVudC50cyc7XG5leHBvcnQgKiBhcyBNdWx0aXBsZURyb3Bkb3duQ29tcG9uZW50IGZyb20gJy4vTXVsdGlwbGVEcm9wZG93bkNvbXBvbmVudC50cyc7XG5leHBvcnQgKiBhcyBNdWx0aXBsZUVtYWlsQ29tcG9uZW50IGZyb20gJy4vTXVsdGlwbGVFbWFpbENvbXBvbmVudC50cyc7XG5leHBvcnQgKiBhcyBNdWx0aXBsZUZpbGVDb21wb25lbnQgZnJvbSAnLi9NdWx0aXBsZUZpbGVDb21wb25lbnQudHMnO1xuZXhwb3J0ICogYXMgTXVsdGlwbGVUZXh0Q29tcG9uZW50IGZyb20gJy4vTXVsdGlwbGVUZXh0Q29tcG9uZW50LnRzJztcbmV4cG9ydCAqIGFzIE51bWJlckNvbXBvbmVudCBmcm9tICcuL051bWJlckNvbXBvbmVudC50cyc7XG5leHBvcnQgKiBhcyBUZXh0QmFzZWRDb21wb25lbnQgZnJvbSAnLi9UZXh0QmFzZWRDb21wb25lbnQudHMnO1xuZXhwb3J0ICogYXMgVGltZUNvbXBvbmVudCBmcm9tICcuL1RpbWVDb21wb25lbnQudHMnO1xuZXhwb3J0ICogYXMgVHlwZWRSYW5nZVRleHRDb21wb25lbnQgZnJvbSAnLi9UeXBlZFJhbmdlVGV4dENvbXBvbmVudC50cyc7XG5leHBvcnQgKiBhcyBUeXBlZFRleHRDb21wb25lbnQgZnJvbSAnLi9UeXBlZFRleHRDb21wb25lbnQudHMnO1xuZXhwb3J0ICogYXMgVXJsQ29tcG9uZW50IGZyb20gJy4vVXJsQ29tcG9uZW50LnRzJztcbmV4cG9ydCAqIGFzIFZhbGlkYXRvckNvbXBvbmVudCBmcm9tICcuL1ZhbGlkYXRvckNvbXBvbmVudC50cyc7XG5leHBvcnQgKiBhcyBWYWx1ZUNvbXBvbmVudFdpdGhDaGFuZ2VUcmFja2luZyBmcm9tICcuL1ZhbHVlQ29tcG9uZW50V2l0aENoYW5nZVRyYWNraW5nLnRzJztcbmV4cG9ydCAqIGFzIFdlZWtDb21wb25lbnQgZnJvbSAnLi9XZWVrQ29tcG9uZW50LnRzJztcbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7QUFFQSxZQUFZLG1CQUFtQjtBQUMvQixZQUFZLHVCQUF1QjtBQUNuQyxZQUFZLG9CQUFvQjtBQUNoQyxZQUFZLG1CQUFtQjtBQUMvQixZQUFZLG9CQUFvQjtBQUNoQyxZQUFZLCtCQUErQjtBQUMzQyxZQUFZLDRCQUE0QjtBQUN4QyxZQUFZLDJCQUEyQjtBQUN2QyxZQUFZLDJCQUEyQjtBQUN2QyxZQUFZLHFCQUFxQjtBQUNqQyxZQUFZLHdCQUF3QjtBQUNwQyxZQUFZLG1CQUFtQjtBQUMvQixZQUFZLDZCQUE2QjtBQUN6QyxZQUFZLHdCQUF3QjtBQUNwQyxZQUFZLGtCQUFrQjtBQUM5QixZQUFZLHdCQUF3QjtBQUNwQyxZQUFZLHNDQUFzQztBQUNsRCxZQUFZLG1CQUFtQjsiLAogICJuYW1lcyI6IFtdCn0K
54
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL0NvbXBvbmVudHMvaW5kZXgudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qIFRISVMgSVMgQSBHRU5FUkFURUQvQlVORExFRCBGSUxFIEJZIEJVSUxEIFNDUklQVCAqL1xuXG5leHBvcnQgKiBhcyBDaGVja2JveENvbXBvbmVudCBmcm9tICcuL0NoZWNrYm94Q29tcG9uZW50LnRzJztcbmV4cG9ydCAqIGFzIERhdGVDb21wb25lbnQgZnJvbSAnLi9EYXRlQ29tcG9uZW50LnRzJztcbmV4cG9ydCAqIGFzIERhdGVUaW1lQ29tcG9uZW50IGZyb20gJy4vRGF0ZVRpbWVDb21wb25lbnQudHMnO1xuZXhwb3J0ICogYXMgRW1haWxDb21wb25lbnQgZnJvbSAnLi9FbWFpbENvbXBvbmVudC50cyc7XG5leHBvcnQgKiBhcyBGaWxlQ29tcG9uZW50IGZyb20gJy4vRmlsZUNvbXBvbmVudC50cyc7XG5leHBvcnQgKiBhcyBNb250aENvbXBvbmVudCBmcm9tICcuL01vbnRoQ29tcG9uZW50LnRzJztcbmV4cG9ydCAqIGFzIE11bHRpcGxlRHJvcGRvd25Db21wb25lbnQgZnJvbSAnLi9NdWx0aXBsZURyb3Bkb3duQ29tcG9uZW50LnRzJztcbmV4cG9ydCAqIGFzIE11bHRpcGxlRW1haWxDb21wb25lbnQgZnJvbSAnLi9NdWx0aXBsZUVtYWlsQ29tcG9uZW50LnRzJztcbmV4cG9ydCAqIGFzIE11bHRpcGxlRmlsZUNvbXBvbmVudCBmcm9tICcuL011bHRpcGxlRmlsZUNvbXBvbmVudC50cyc7XG5leHBvcnQgKiBhcyBNdWx0aXBsZVRleHRDb21wb25lbnQgZnJvbSAnLi9NdWx0aXBsZVRleHRDb21wb25lbnQudHMnO1xuZXhwb3J0ICogYXMgTnVtYmVyQ29tcG9uZW50IGZyb20gJy4vTnVtYmVyQ29tcG9uZW50LnRzJztcbmV4cG9ydCAqIGFzIFRleHRCYXNlZENvbXBvbmVudCBmcm9tICcuL1RleHRCYXNlZENvbXBvbmVudC50cyc7XG5leHBvcnQgKiBhcyBUaW1lQ29tcG9uZW50IGZyb20gJy4vVGltZUNvbXBvbmVudC50cyc7XG5leHBvcnQgKiBhcyBUcmlTdGF0ZUNoZWNrYm94Q29tcG9uZW50IGZyb20gJy4vVHJpU3RhdGVDaGVja2JveENvbXBvbmVudC50cyc7XG5leHBvcnQgKiBhcyBUeXBlZERyb3Bkb3duQ29tcG9uZW50IGZyb20gJy4vVHlwZWREcm9wZG93bkNvbXBvbmVudC50cyc7XG5leHBvcnQgKiBhcyBUeXBlZE11bHRpcGxlRHJvcGRvd25Db21wb25lbnQgZnJvbSAnLi9UeXBlZE11bHRpcGxlRHJvcGRvd25Db21wb25lbnQudHMnO1xuZXhwb3J0ICogYXMgVHlwZWRSYW5nZVRleHRDb21wb25lbnQgZnJvbSAnLi9UeXBlZFJhbmdlVGV4dENvbXBvbmVudC50cyc7XG5leHBvcnQgKiBhcyBUeXBlZFRleHRDb21wb25lbnQgZnJvbSAnLi9UeXBlZFRleHRDb21wb25lbnQudHMnO1xuZXhwb3J0ICogYXMgVXJsQ29tcG9uZW50IGZyb20gJy4vVXJsQ29tcG9uZW50LnRzJztcbmV4cG9ydCAqIGFzIFZhbGlkYXRvckNvbXBvbmVudCBmcm9tICcuL1ZhbGlkYXRvckNvbXBvbmVudC50cyc7XG5leHBvcnQgKiBhcyBWYWx1ZUNvbXBvbmVudFdpdGhDaGFuZ2VUcmFja2luZyBmcm9tICcuL1ZhbHVlQ29tcG9uZW50V2l0aENoYW5nZVRyYWNraW5nLnRzJztcbmV4cG9ydCAqIGFzIFdlZWtDb21wb25lbnQgZnJvbSAnLi9XZWVrQ29tcG9uZW50LnRzJztcbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7QUFFQSxZQUFZLHVCQUF1QjtBQUNuQyxZQUFZLG1CQUFtQjtBQUMvQixZQUFZLHVCQUF1QjtBQUNuQyxZQUFZLG9CQUFvQjtBQUNoQyxZQUFZLG1CQUFtQjtBQUMvQixZQUFZLG9CQUFvQjtBQUNoQyxZQUFZLCtCQUErQjtBQUMzQyxZQUFZLDRCQUE0QjtBQUN4QyxZQUFZLDJCQUEyQjtBQUN2QyxZQUFZLDJCQUEyQjtBQUN2QyxZQUFZLHFCQUFxQjtBQUNqQyxZQUFZLHdCQUF3QjtBQUNwQyxZQUFZLG1CQUFtQjtBQUMvQixZQUFZLCtCQUErQjtBQUMzQyxZQUFZLDRCQUE0QjtBQUN4QyxZQUFZLG9DQUFvQztBQUNoRCxZQUFZLDZCQUE2QjtBQUN6QyxZQUFZLHdCQUF3QjtBQUNwQyxZQUFZLGtCQUFrQjtBQUM5QixZQUFZLHdCQUF3QjtBQUNwQyxZQUFZLHNDQUFzQztBQUNsRCxZQUFZLG1CQUFtQjsiLAogICJuYW1lcyI6IFtdCn0K
@@ -1,5 +1,6 @@
1
1
  /**
2
- * @packageDocumentation Dataview
2
+ * @packageDocumentation
3
+ *
3
4
  * This module provides utility functions for working with Dataview in Obsidian.
4
5
  */
5
6
  import type { Promisable } from 'type-fest';
@@ -136,6 +137,7 @@ export interface RenderPaginatedOptions<T> {
136
137
  itemsPerPageOptions: number[];
137
138
  /**
138
139
  * The renderer function to display the paginated content.
140
+ *
139
141
  * @param rowsForOnePage - The rows to render.
140
142
  * @returns A {@link Promise} that resolves when the content is rendered.
141
143
  */
@@ -182,15 +184,12 @@ export declare function getRenderedContainer(dv: DataviewInlineApi, renderer: ()
182
184
  * @param dv - The DataviewInlineApi instance to insert the code block into.
183
185
  * @param language - The language identifier for the code block.
184
186
  * @param code - The code content to be inserted into the code block.
185
- * @returns This function does not return a value.
186
187
  */
187
188
  export declare function insertCodeBlock(dv: DataviewInlineApi, language: string, code: string): void;
188
189
  /**
189
190
  * Renders an iframe in the Dataview container with the specified relative path, width, and height.
190
191
  *
191
192
  * @param options - The options for rendering the iframe.
192
- *
193
- * @returns This function does not return a value.
194
193
  */
195
194
  export declare function renderIframe(options: RenderIframeOptions): void;
196
195
  /**
@@ -229,4 +229,4 @@ export {
229
229
  renderPaginatedList,
230
230
  renderPaginatedTable
231
231
  };
232
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL0RhdGF2aWV3LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBwYWNrYWdlRG9jdW1lbnRhdGlvbiBEYXRhdmlld1xuICogVGhpcyBtb2R1bGUgcHJvdmlkZXMgdXRpbGl0eSBmdW5jdGlvbnMgZm9yIHdvcmtpbmcgd2l0aCBEYXRhdmlldyBpbiBPYnNpZGlhbi5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7IFByb21pc2FibGUgfSBmcm9tICd0eXBlLWZlc3QnO1xuXG5pbXBvcnQgdHlwZSB7IERhdGF2aWV3SW5saW5lQXBpIGFzIERhdGF2aWV3SW5saW5lQXBpT3JpZ2luYWwgfSBmcm9tICcuL0B0eXBlcy9EYXRhdmlldy9hcGkvaW5saW5lLWFwaS5kLnRzJztcbmltcG9ydCB0eXBlIHtcbiAgRGF0YUFycmF5LFxuICBEYXRhdmlld0FwaSxcbiAgU01hcmtkb3duUGFnZVxufSBmcm9tICcuL0B0eXBlcy9EYXRhdmlldy9pbmRleC5kLnRzJztcbmltcG9ydCB0eXBlIHsgUGF0aE9yRmlsZSB9IGZyb20gJy4vRmlsZVN5c3RlbS50cyc7XG5pbXBvcnQgdHlwZSB7IENvbWJpbmVkRnJvbnRtYXR0ZXIgfSBmcm9tICcuL0Zyb250bWF0dGVyLnRzJztcblxuaW1wb3J0IHsgY29udmVydEFzeW5jVG9TeW5jIH0gZnJvbSAnLi4vQXN5bmMudHMnO1xuaW1wb3J0IHtcbiAgZXJyb3JUb1N0cmluZyxcbiAgdGhyb3dFeHByZXNzaW9uXG59IGZyb20gJy4uL0Vycm9yLnRzJztcbmltcG9ydCB7XG4gIGdldEZpbGUsXG4gIGdldFBhdGhcbn0gZnJvbSAnLi9GaWxlU3lzdGVtLnRzJztcbmltcG9ydCB7IHJlbGF0aXZlUGF0aFRvUmVzb3VyY2VVcmwgfSBmcm9tICcuL1Jlc291cmNlVXJsLnRzJztcblxuLyoqXG4gKiBFeHBvcnQgRGF0ZVRpbWUgYW5kIExpbmsgdHlwZXMgZnJvbSB0aGUgRGF0YXZpZXcgQVBJLlxuICovXG5leHBvcnQgdHlwZSB7XG4gIERhdGVUaW1lLFxuICBMaW5rXG59IGZyb20gJy4vQHR5cGVzL0RhdGF2aWV3L2luZGV4LmQudHMnO1xuXG5kZWNsYXJlIGdsb2JhbCB7XG4gIC8qKlxuICAgKiBUaGUgRGF0YXZpZXdBUEkgb2JqZWN0IHJlcHJlc2VudHMgdGhlIEFQSSBmb3IgaW50ZXJhY3Rpbmcgd2l0aCBEYXRhdmlldyBpbiBPYnNpZGlhbi5cbiAgICovXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby12YXIsIHZhcnMtb24tdG9wXG4gIHZhciBEYXRhdmlld0FQSTogRGF0YXZpZXdBcGkgfCB1bmRlZmluZWQ7XG59XG5cbi8qKlxuICogVGhlIGNvbWJpbmVkIHBhZ2UgdHlwZSwgd2hpY2ggaW5jbHVkZXMgdGhlIGZyb250IG1hdHRlciBhbmQgdGhlIFNNYXJrZG93blBhZ2UuXG4gKi9cbmV4cG9ydCB0eXBlIENvbWJpbmVkUGFnZTxDdXN0b21Gcm9udG1hdHRlciA9IHVua25vd24+ID0gQ29tYmluZWRGcm9udG1hdHRlcjxDdXN0b21Gcm9udG1hdHRlcj4gJiBTTWFya2Rvd25QYWdlO1xuXG4vKipcbiAqIEV4dGVuZGVkIGludGVyZmFjZSBmb3IgdGhlIERhdGF2aWV3IElubGluZSBBUEksIHByb3ZpZGluZyBhZGRpdGlvbmFsIG1ldGhvZHMgZm9yIGN1c3RvbSBwYWdlIHR5cGVzIGFuZCBhcnJheSBoYW5kbGluZy5cbiAqXG4gKiBAdHlwZVBhcmFtIEN1c3RvbVBhZ2UgLSBUaGUgdHlwZSBvZiB0aGUgY3VzdG9tIHBhZ2UuIERlZmF1bHRzIHRvIGBTTWFya2Rvd25QYWdlYC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBEYXRhdmlld0lubGluZUFwaSBleHRlbmRzIERhdGF2aWV3SW5saW5lQXBpT3JpZ2luYWwge1xuICAvKipcbiAgICogV3JhcHMgYW4gYXJyYXkgb2YgaXRlbXMgaW50byBhIHtAbGluayBEYXRhQXJyYXl9IG9iamVjdC5cbiAgICpcbiAgICogQHR5cGVQYXJhbSBUIC0gVGhlIHR5cGUgb2YgdGhlIGl0ZW1zIGluIHRoZSBhcnJheS5cbiAgICogQHBhcmFtIGFyciAtIFRoZSBhcnJheSBvZiBpdGVtcyB0byB3cmFwLlxuICAgKiBAcmV0dXJucyBBIHtAbGluayBEYXRhQXJyYXl9IGNvbnRhaW5pbmcgdGhlIGl0ZW1zLlxuICAgKi9cbiAgYXJyYXk8VD4oYXJyOiBUW10pOiBEYXRhQXJyYXk8VD47XG5cbiAgLyoqXG4gICAqIFJldHJpZXZlcyB0aGUgY3VycmVudCBwYWdlLCB3aXRoIGFuIG9wdGlvbmFsIGN1c3RvbSBwYWdlIHR5cGUuXG4gICAqXG4gICAqIEB0eXBlUGFyYW0gQ3VzdG9tUGFnZSAtIFRoZSB0eXBlIG9mIHRoZSBjdXN0b20gcGFnZS4gRGVmYXVsdHMgdG8gYFNNYXJrZG93blBhZ2VgLlxuICAgKiBAcmV0dXJucyBUaGUgY3VycmVudCBwYWdlLlxuICAgKi9cbiAgY3VycmVudDxDdXN0b21Gcm9udG1hdHRlciA9IHVua25vd24+KCk6IENvbWJpbmVkUGFnZTxDdXN0b21Gcm9udG1hdHRlcj47XG5cbiAgLyoqXG4gICAqIFJldHJpZXZlcyBwYWdlcyBiYXNlZCBvbiBhbiBvcHRpb25hbCBxdWVyeSwgd2l0aCBhbiBvcHRpb25hbCBjdXN0b20gcGFnZSB0eXBlLlxuICAgKlxuICAgKiBAdHlwZVBhcmFtIEN1c3RvbVBhZ2UgLSBUaGUgdHlwZSBvZiB0aGUgY3VzdG9tIHBhZ2UuIERlZmF1bHRzIHRvIGBTTWFya2Rvd25QYWdlYC5cbiAgICogQHBhcmFtIHF1ZXJ5IC0gQW4gb3B0aW9uYWwgc3RyaW5nIHF1ZXJ5IHRvIGZpbHRlciB0aGUgcGFnZXMuXG4gICAqIEByZXR1cm5zIEEge0BsaW5rIERhdGFBcnJheX0gb2YgcGFnZXMgbWF0Y2hpbmcgdGhlIHF1ZXJ5LlxuICAgKi9cbiAgcGFnZXM8Q3VzdG9tRnJvbnRtYXR0ZXIgPSB1bmtub3duPihxdWVyeT86IHN0cmluZyk6IERhdGFBcnJheTxDb21iaW5lZFBhZ2U8Q3VzdG9tRnJvbnRtYXR0ZXI+PjtcblxuICAvKipcbiAgICogQ3JlYXRlcyBhIHBhcmFncmFwaCBIVE1MIGVsZW1lbnQgd2l0aCB0aGUgcHJvdmlkZWQgdGV4dCBhbmQgb3B0aW9uYWwgRE9NIGVsZW1lbnQgb3B0aW9ucy5cbiAgICpcbiAgICogQHBhcmFtIHRleHQgLSBUaGUgY29udGVudCBvZiB0aGUgcGFyYWdyYXBoLlxuICAgKiBAcGFyYW0gb3B0aW9ucyAtIE9wdGlvbmFsIERPTSBlbGVtZW50IG9wdGlvbnMsIGluY2x1ZGluZyBhbiBvcHRpb25hbCBjb250YWluZXIuXG4gICAqIEByZXR1cm5zIFRoZSBjcmVhdGVkIEhUTUwgcGFyYWdyYXBoIGVsZW1lbnQuXG4gICAqL1xuICBwYXJhZ3JhcGgoXG4gICAgdGV4dDogdW5rbm93bixcbiAgICBvcHRpb25zPzogRG9tRWxlbWVudEluZm9XaXRoQ29udGFpbmVyXG4gICk6IEhUTUxQYXJhZ3JhcGhFbGVtZW50O1xufVxuXG4vKipcbiAqIERvbUVsZW1lbnRJbmZvIHdpdGggYW4gb3B0aW9uYWwgY29udGFpbmVyLlxuICovXG5leHBvcnQgdHlwZSBEb21FbGVtZW50SW5mb1dpdGhDb250YWluZXIgPSB7IGNvbnRhaW5lcj86IEhUTUxFbGVtZW50IH0gJiBEb21FbGVtZW50SW5mbztcblxuLyoqXG4gKiBUaGUgY29tYmluZWQgZmlsZSB0eXBlLCB3aGljaCBpbmNsdWRlcyB0aGUgZnJvbnQgbWF0dGVyIGFuZCB0aGUgU01hcmtkb3duRmlsZS5cbiAqL1xuZXhwb3J0IHR5cGUgUGFnZUZpbGUgPSBTTWFya2Rvd25QYWdlWydmaWxlJ107XG5cbi8qKlxuICogTGlzdCBvZiBwYWdlIGZpbGVzLlxuICovXG5leHBvcnQgdHlwZSBQYWdlRmlsZXMgPSBBcnJheU9yRGF0YUFycmF5PFBhZ2VGaWxlPjtcblxuLyoqXG4gKiBSZWxvYWRzIHRoZSBjdXJyZW50IGZpbGUgY2FjaGUgdXNpbmcgdGhlIERhdGF2aWV3IEFQSS5cbiAqXG4gKiBAcGFyYW0gZHYgLSBUaGUgRGF0YXZpZXdJbmxpbmVBcGkgaW5zdGFuY2UuXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIGNhY2hlIGlzIHJlbG9hZGVkLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVsb2FkQ3VycmVudEZpbGVDYWNoZShkdjogRGF0YXZpZXdJbmxpbmVBcGkpOiBQcm9taXNlPHZvaWQ+IHtcbiAgYXdhaXQgRGF0YXZpZXdBUEk/LmluZGV4LnJlbG9hZChnZXRGaWxlKGR2LmFwcCwgZHYuY3VycmVudCgpLmZpbGUucGF0aCkpO1xufVxuXG5jb25zdCBwYWdpbmF0aW9uQ3NzID0gYFxuLnBhZ2luYXRpb24gLnBhZ2UtbGluay5kaXNhYmxlZCB7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICBjb2xvcjogZ3JheTtcbn1cblxuLnBhZ2luYXRpb24gLnBhZ2UtbGluayB7XG4gIG1hcmdpbjogMCA1cHg7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICBjb2xvcjogYmx1ZTtcbn1cblxuLnBhZ2luYXRpb24gLnBhZ2UtbGluazpob3Zlcjpub3QoLmRpc2FibGVkKSB7XG4gIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xufVxuLnBhZ2luYXRpb24gLnBhZ2UtbGluay5jdXJyZW50IHtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xufVxuXG4ucGFnaW5hdGlvbiBzZWxlY3QsXG4ucGFnaW5hdGlvbiBpbnB1dCB7XG4gIG1hcmdpbjogMCA1cHg7XG59XG5gO1xuXG4vKipcbiAqIEFycmF5IG9yIERhdGFBcnJheSB0eXBlLlxuICovXG5leHBvcnQgdHlwZSBBcnJheU9yRGF0YUFycmF5PFQ+ID0gRGF0YUFycmF5PFQ+IHwgVFtdO1xuXG4vKipcbiAqIE9wdGlvbnMgZm9yIHJlbmRlcmluZyBhbiBpZnJhbWUgaW4gdGhlIERhdGF2aWV3IGNvbnRhaW5lci5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZW5kZXJJZnJhbWVPcHRpb25zIHtcbiAgLyoqXG4gICAqIFRoZSBEYXRhdmlld0lubGluZUFwaSBpbnN0YW5jZS5cbiAgICovXG4gIGR2OiBEYXRhdmlld0lubGluZUFwaTtcblxuICAvKipcbiAgICogVGhlIGhlaWdodCBvZiB0aGUgaWZyYW1lLlxuICAgKi9cbiAgaGVpZ2h0OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSByZWxhdGl2ZSBwYXRoIHRvIHRoZSByZXNvdXJjZSB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIGlmcmFtZS5cbiAgICovXG4gIHJlbGF0aXZlUGF0aE9yRmlsZTogUGF0aE9yRmlsZTtcblxuICAvKipcbiAgICogVGhlIHdpZHRoIG9mIHRoZSBpZnJhbWUuXG4gICAqL1xuICB3aWR0aDogc3RyaW5nO1xufVxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIHJlbmRlcmluZyBhIHBhZ2luYXRlZCBsaXN0IHVzaW5nIHRoZSBEYXRhdmlldyBBUEkuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVuZGVyUGFnaW5hdGVkTGlzdE9wdGlvbnM8VD4ge1xuICAvKipcbiAgICogVGhlIERhdGF2aWV3SW5saW5lQXBpIGluc3RhbmNlLlxuICAgKi9cbiAgZHY6IERhdGF2aWV3SW5saW5lQXBpO1xuXG4gIC8qKlxuICAgKiBPcHRpb25zIGZvciBpdGVtcyBwZXIgcGFnZS4gRGVmYXVsdHMgdG8gYFsxMCwgMjAsIDUwLCAxMDBdYC5cbiAgICovXG4gIGl0ZW1zUGVyUGFnZU9wdGlvbnM/OiBudW1iZXJbXTtcblxuICAvKipcbiAgICogVGhlIGxpc3Qgb2YgaXRlbXMgdG8gcGFnaW5hdGUuXG4gICAqL1xuICByb3dzOiBBcnJheU9yRGF0YUFycmF5PFQ+O1xufVxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIHJlbmRlcmluZyBhIHBhZ2luYXRlZCBlbGVtZW50IHVzaW5nIHRoZSBEYXRhdmlldyBBUEkuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVuZGVyUGFnaW5hdGVkT3B0aW9uczxUPiB7XG4gIC8qKlxuICAgKiBUaGUgRGF0YXZpZXdJbmxpbmVBcGkgaW5zdGFuY2UuXG4gICAqL1xuICBkdjogRGF0YXZpZXdJbmxpbmVBcGk7XG5cbiAgLyoqXG4gICAqIE9wdGlvbnMgZm9yIGl0ZW1zIHBlciBwYWdlLlxuICAgKi9cbiAgaXRlbXNQZXJQYWdlT3B0aW9uczogbnVtYmVyW107XG5cbiAgLyoqXG4gICAqIFRoZSByZW5kZXJlciBmdW5jdGlvbiB0byBkaXNwbGF5IHRoZSBwYWdpbmF0ZWQgY29udGVudC5cbiAgICogQHBhcmFtIHJvd3NGb3JPbmVQYWdlIC0gVGhlIHJvd3MgdG8gcmVuZGVyLlxuICAgKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIGNvbnRlbnQgaXMgcmVuZGVyZWQuXG4gICAqL1xuICByZW5kZXJlcjogKHJvd3NGb3JPbmVQYWdlOiBBcnJheU9yRGF0YUFycmF5PFQ+KSA9PiBQcm9taXNhYmxlPHZvaWQ+O1xuXG4gIC8qKlxuICAgKiBUaGUgcm93cyB0byBwYWdpbmF0ZS5cbiAgICovXG4gIHJvd3M6IEFycmF5T3JEYXRhQXJyYXk8VD47XG59XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgcmVuZGVyaW5nIGEgcGFnaW5hdGVkIHRhYmxlIHVzaW5nIHRoZSBEYXRhdmlldyBBUEkuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVuZGVyUGFnaW5hdGVkVGFibGVPcHRpb25zPFQ+IHtcbiAgLyoqXG4gICAqIFRoZSBEYXRhdmlld0lubGluZUFwaSBpbnN0YW5jZS5cbiAgICovXG4gIGR2OiBEYXRhdmlld0lubGluZUFwaTtcblxuICAvKipcbiAgICogVGhlIGhlYWRlcnMgb2YgdGhlIHRhYmxlLlxuICAgKi9cbiAgaGVhZGVyczogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIE9wdGlvbnMgZm9yIGl0ZW1zIHBlciBwYWdlLiBEZWZhdWx0cyB0byBgWzEwLCAyMCwgNTAsIDEwMF1gLlxuICAgKi9cbiAgaXRlbXNQZXJQYWdlT3B0aW9ucz86IG51bWJlcltdO1xuXG4gIC8qKlxuICAgKiBUaGUgcm93cyBvZiB0aGUgdGFibGUgdG8gcGFnaW5hdGUuXG4gICAqL1xuICByb3dzOiBBcnJheU9yRGF0YUFycmF5PFQ+O1xufVxuXG4vKipcbiAqIFJlbmRlcnMgdGhlIGNvbnRlbnQgdXNpbmcgdGhlIHByb3ZpZGVkIHJlbmRlcmVyIGZ1bmN0aW9uIGluIGEgdGVtcG9yYXJ5IGNvbnRhaW5lcixcbiAqIGFuZCB0aGVuIHJldHVybnMgdGhlIGNvbnRhaW5lci5cbiAqXG4gKiBAcGFyYW0gZHYgLSBUaGUgRGF0YXZpZXdJbmxpbmVBcGkgaW5zdGFuY2UuXG4gKiBAcGFyYW0gcmVuZGVyZXIgLSBUaGUgZnVuY3Rpb24gcmVzcG9uc2libGUgZm9yIHJlbmRlcmluZyB0aGUgY29udGVudC5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgdG8gdGhlIEhUTUwgcGFyYWdyYXBoIGVsZW1lbnRcbiAqIHRoYXQgd2FzIHVzZWQgYXMgdGhlIHRlbXBvcmFyeSBjb250YWluZXIuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRSZW5kZXJlZENvbnRhaW5lcihkdjogRGF0YXZpZXdJbmxpbmVBcGksIHJlbmRlcmVyOiAoKSA9PiBQcm9taXNhYmxlPHZvaWQ+KTogUHJvbWlzZTxIVE1MUGFyYWdyYXBoRWxlbWVudD4ge1xuICBjb25zdCB0ZW1wQ29udGFpbmVyID0gZHYucGFyYWdyYXBoKCcnKTtcbiAgZHYuY29udGFpbmVyID0gdGVtcENvbnRhaW5lcjtcbiAgZHYuY29udGFpbmVyLmVtcHR5KCk7XG5cbiAgdHJ5IHtcbiAgICBhd2FpdCByZW5kZXJlcigpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgZHYucGFyYWdyYXBoKGBcdTI3NEMke2Vycm9yVG9TdHJpbmcoZSl9YCk7XG4gIH0gZmluYWxseSB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlcXVpcmUtYXRvbWljLXVwZGF0ZXNcbiAgICBkdi5jb250YWluZXIgPSB0ZW1wQ29udGFpbmVyLnBhcmVudEVsZW1lbnQgPz8gdGhyb3dFeHByZXNzaW9uKG5ldyBFcnJvcignQ29udGFpbmVyIHBhcmVudCBub3QgZm91bmQnKSk7XG4gICAgdGVtcENvbnRhaW5lci5yZW1vdmUoKTtcbiAgfVxuXG4gIHJldHVybiB0ZW1wQ29udGFpbmVyO1xufVxuXG4vKipcbiAqIEluc2VydHMgYSBjb2RlIGJsb2NrIGludG8gdGhlIHNwZWNpZmllZCBEYXRhdmlldyBpbnN0YW5jZSB1c2luZyB0aGUgcHJvdmlkZWQgbGFuZ3VhZ2UgYW5kIGNvZGUuXG4gKlxuICogQHBhcmFtIGR2IC0gVGhlIERhdGF2aWV3SW5saW5lQXBpIGluc3RhbmNlIHRvIGluc2VydCB0aGUgY29kZSBibG9jayBpbnRvLlxuICogQHBhcmFtIGxhbmd1YWdlIC0gVGhlIGxhbmd1YWdlIGlkZW50aWZpZXIgZm9yIHRoZSBjb2RlIGJsb2NrLlxuICogQHBhcmFtIGNvZGUgLSBUaGUgY29kZSBjb250ZW50IHRvIGJlIGluc2VydGVkIGludG8gdGhlIGNvZGUgYmxvY2suXG4gKiBAcmV0dXJucyBUaGlzIGZ1bmN0aW9uIGRvZXMgbm90IHJldHVybiBhIHZhbHVlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaW5zZXJ0Q29kZUJsb2NrKGR2OiBEYXRhdmlld0lubGluZUFwaSwgbGFuZ3VhZ2U6IHN0cmluZywgY29kZTogc3RyaW5nKTogdm9pZCB7XG4gIGNvbnN0IE1JTl9GRU5DRV9MRU5HVEggPSAzO1xuICBjb25zdCBmZW5jZVJlZ0V4cCA9IG5ldyBSZWdFeHAoYF5cXGB7JHtNSU5fRkVOQ0VfTEVOR1RILnRvU3RyaW5nKCl9LH1gLCAnZ20nKTtcbiAgY29uc3QgZmVuY2VNYXRjaGVzID0gY29kZS5tYXRjaEFsbChmZW5jZVJlZ0V4cCk7XG4gIGNvbnN0IGZlbmNlTGVuZ3RocyA9IEFycmF5LmZyb20oZmVuY2VNYXRjaGVzKS5tYXAoKGZlbmNlTWF0Y2gpID0+IGZlbmNlTWF0Y2hbMF0ubGVuZ3RoKTtcbiAgY29uc3QgbWF4RmVuY2VMZW5ndGggPSBNYXRoLm1heCgwLCAuLi5mZW5jZUxlbmd0aHMpO1xuICBjb25zdCByZXN1bHRGZW5jZUxlbmd0aCA9IE1hdGgubWF4KE1JTl9GRU5DRV9MRU5HVEgsIG1heEZlbmNlTGVuZ3RoICsgMSk7XG4gIGNvbnN0IHJlc3VsdEZlbmNlID0gJ2AnLnJlcGVhdChyZXN1bHRGZW5jZUxlbmd0aCk7XG5cbiAgZHYucGFyYWdyYXBoKGAke3Jlc3VsdEZlbmNlfSR7bGFuZ3VhZ2V9XG4ke2NvZGV9XG4ke3Jlc3VsdEZlbmNlfWApO1xufVxuXG4vKipcbiAqIFJlbmRlcnMgYW4gaWZyYW1lIGluIHRoZSBEYXRhdmlldyBjb250YWluZXIgd2l0aCB0aGUgc3BlY2lmaWVkIHJlbGF0aXZlIHBhdGgsIHdpZHRoLCBhbmQgaGVpZ2h0LlxuICpcbiAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIG9wdGlvbnMgZm9yIHJlbmRlcmluZyB0aGUgaWZyYW1lLlxuICpcbiAqIEByZXR1cm5zIFRoaXMgZnVuY3Rpb24gZG9lcyBub3QgcmV0dXJuIGEgdmFsdWUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZW5kZXJJZnJhbWUob3B0aW9uczogUmVuZGVySWZyYW1lT3B0aW9ucyk6IHZvaWQge1xuICBjb25zdCB7XG4gICAgZHYsXG4gICAgaGVpZ2h0ID0gJzYwMHB4JyxcbiAgICByZWxhdGl2ZVBhdGhPckZpbGUsXG4gICAgd2lkdGggPSAnMTAwJSdcbiAgfSA9IG9wdGlvbnM7XG4gIGR2LmVsKCdpZnJhbWUnLCAnJywge1xuICAgIGF0dHI6IHtcbiAgICAgIGhlaWdodCxcbiAgICAgIHNyYzogcmVsYXRpdmVQYXRoVG9SZXNvdXJjZVVybChkdi5hcHAsIGdldFBhdGgoZHYuYXBwLCByZWxhdGl2ZVBhdGhPckZpbGUpLCBkdi5jdXJyZW50KCkuZmlsZS5wYXRoKSxcbiAgICAgIHdpZHRoXG4gICAgfVxuICB9KTtcbn1cblxuLyoqXG4gKiBSZW5kZXJzIGEgcGFnaW5hdGVkIGxpc3QgdXNpbmcgdGhlIHByb3ZpZGVkIERhdGF2aWV3SW5saW5lQXBpIGluc3RhbmNlLlxuICpcbiAqIEB0eXBlUGFyYW0gVCAtIFRoZSB0eXBlIG9mIGl0ZW1zIGluIHRoZSBsaXN0LlxuICpcbiAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIG9wdGlvbnMgZm9yIHJlbmRlcmluZyB0aGUgcGFnaW5hdGVkIGxpc3QuXG4gKlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB3aGVuIHRoZSBsaXN0IGlzIHJlbmRlcmVkLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVuZGVyUGFnaW5hdGVkTGlzdDxUPihvcHRpb25zOiBSZW5kZXJQYWdpbmF0ZWRMaXN0T3B0aW9uczxUPik6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCB7XG4gICAgZHYsXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLW1hZ2ljLW51bWJlcnNcbiAgICBpdGVtc1BlclBhZ2VPcHRpb25zID0gWzEwLCAyMCwgNTAsIDEwMF0sXG4gICAgcm93c1xuICB9ID0gb3B0aW9ucztcbiAgYXdhaXQgcmVuZGVyUGFnaW5hdGVkKHtcbiAgICBkdixcbiAgICBpdGVtc1BlclBhZ2VPcHRpb25zLFxuICAgIHJlbmRlcmVyOiBhc3luYyAocm93c0Zvck9uZVBhZ2U6IEFycmF5T3JEYXRhQXJyYXk8VD4pOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgICAgIGF3YWl0IGR2Lmxpc3Qocm93c0Zvck9uZVBhZ2UpO1xuICAgIH0sXG4gICAgcm93c1xuICB9KTtcbn1cblxuLyoqXG4gKiBSZW5kZXJzIGEgcGFnaW5hdGVkIHRhYmxlIHVzaW5nIHRoZSBwcm92aWRlZCBEYXRhdmlld0lubGluZUFwaSBpbnN0YW5jZS5cbiAqXG4gKiBAdHlwZVBhcmFtIFQgLSBUaGUgdHlwZSBvZiBpdGVtcyBpbiB0aGUgdGFibGUgcm93cy5cbiAqXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBvcHRpb25zIGZvciByZW5kZXJpbmcgdGhlIHBhZ2luYXRlZCB0YWJsZS5cbiAqXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIHRhYmxlIGlzIHJlbmRlcmVkLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVuZGVyUGFnaW5hdGVkVGFibGU8VCBleHRlbmRzIHVua25vd25bXT4ob3B0aW9uczogUmVuZGVyUGFnaW5hdGVkVGFibGVPcHRpb25zPFQ+KTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IHtcbiAgICBkdixcbiAgICBoZWFkZXJzLFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1tYWdpYy1udW1iZXJzXG4gICAgaXRlbXNQZXJQYWdlT3B0aW9ucyA9IFsxMCwgMjAsIDUwLCAxMDBdLFxuICAgIHJvd3NcbiAgfSA9IG9wdGlvbnM7XG4gIGF3YWl0IHJlbmRlclBhZ2luYXRlZCh7XG4gICAgZHYsXG4gICAgaXRlbXNQZXJQYWdlT3B0aW9ucyxcbiAgICByZW5kZXJlcjogYXN5bmMgKHJvd3NGb3JPbmVQYWdlOiBBcnJheU9yRGF0YUFycmF5PFQ+KTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gICAgICBhd2FpdCBkdi50YWJsZShoZWFkZXJzLCByb3dzRm9yT25lUGFnZSk7XG4gICAgfSxcbiAgICByb3dzXG4gIH0pO1xufVxuXG4vKipcbiAqIEhlbHBlciBmdW5jdGlvbiB0byByZW5kZXIgcGFnaW5hdGVkIGNvbnRlbnQgdXNpbmcgdGhlIHNwZWNpZmllZCByZW5kZXJlci5cbiAqXG4gKiBAdHlwZVBhcmFtIFQgLSBUaGUgdHlwZSBvZiBpdGVtcyB0byBwYWdpbmF0ZS5cbiAqXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBvcHRpb25zIGZvciByZW5kZXJpbmcgdGhlIHBhZ2luYXRlZCBjb250ZW50LlxuICpcbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgY29udGVudCBpcyByZW5kZXJlZC5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gcmVuZGVyUGFnaW5hdGVkPFQ+KG9wdGlvbnM6IFJlbmRlclBhZ2luYXRlZE9wdGlvbnM8VD4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgU0VDT05EX1BBR0VfTlVNQkVSID0gMjtcbiAgY29uc3QgTU9SRV9QQUdFX05VTUJFUiA9IDM7XG4gIGNvbnN0IHtcbiAgICBkdixcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tbWFnaWMtbnVtYmVyc1xuICAgIGl0ZW1zUGVyUGFnZU9wdGlvbnMgPSBbMTAsIDIwLCA1MCwgMTAwXSxcbiAgICByZW5kZXJlcixcbiAgICByb3dzXG4gIH0gPSBvcHRpb25zO1xuICBpZiAocm93cy5sZW5ndGggPT09IDApIHtcbiAgICBkdi5wYXJhZ3JhcGgoJ05vIGl0ZW1zIGZvdW5kJyk7XG4gICAgcmV0dXJuO1xuICB9XG4gIGNvbnN0IGNvbnRhaW5lciA9IGR2LmNvbnRhaW5lcjtcbiAgbGV0IGl0ZW1zUGVyUGFnZSA9IGl0ZW1zUGVyUGFnZU9wdGlvbnNbMF0gPz8gdGhyb3dFeHByZXNzaW9uKG5ldyBFcnJvcignSXRlbXMgcGVyIHBhZ2Ugb3B0aW9ucyBhcmUgZW1wdHknKSk7XG4gIGxldCB0b3RhbFBhZ2VzID0gTWF0aC5jZWlsKHJvd3MubGVuZ3RoIC8gaXRlbXNQZXJQYWdlKTtcbiAgYXdhaXQgcmVuZGVyUGFnZSgxKTtcblxuICBmdW5jdGlvbiBjcmVhdGVQYWdpbmF0aW9uQ29udHJvbHMocGFnZU51bWJlcjogbnVtYmVyKTogdm9pZCB7XG4gICAgY29uc3QgcGFnaW5hdGlvbkRpdiA9IGNvbnRhaW5lci5jcmVhdGVFbCgnZGl2JywgeyBjbHM6ICdwYWdpbmF0aW9uJyB9KTtcbiAgICBjb25zdCBwYWdpbmF0aW9uUm93MURpdiA9IHBhZ2luYXRpb25EaXYuY3JlYXRlRGl2KCk7XG5cbiAgICBjcmVhdGVQYWdlTGluaygnRmlyc3QnLCAxLCBwYWdlTnVtYmVyID09PSAxKTtcbiAgICBjcmVhdGVQYWdlTGluaygnUHJldicsIHBhZ2VOdW1iZXIgLSAxLCBwYWdlTnVtYmVyID09PSAxKTtcblxuICAgIGlmIChwYWdlTnVtYmVyID4gTU9SRV9QQUdFX05VTUJFUikge1xuICAgICAgcGFnaW5hdGlvblJvdzFEaXYuY3JlYXRlRWwoJ3NwYW4nLCB7IHRleHQ6ICcuLi4nIH0pO1xuICAgIH1cblxuICAgIGZvciAobGV0IGkgPSBNYXRoLm1heCgxLCBwYWdlTnVtYmVyIC0gU0VDT05EX1BBR0VfTlVNQkVSKTsgaSA8PSBNYXRoLm1pbih0b3RhbFBhZ2VzLCBwYWdlTnVtYmVyICsgU0VDT05EX1BBR0VfTlVNQkVSKTsgaSsrKSB7XG4gICAgICBjb25zdCBwYWdlTGluayA9IGNyZWF0ZVBhZ2VMaW5rKGkudG9TdHJpbmcoKSwgaSwgaSA9PT0gcGFnZU51bWJlcik7XG4gICAgICBpZiAoaSA9PT0gcGFnZU51bWJlcikge1xuICAgICAgICBwYWdlTGluay5hZGRDbGFzcygnY3VycmVudCcpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChwYWdlTnVtYmVyIDwgdG90YWxQYWdlcyAtIFNFQ09ORF9QQUdFX05VTUJFUikge1xuICAgICAgcGFnaW5hdGlvblJvdzFEaXYuY3JlYXRlRWwoJ3NwYW4nLCB7IHRleHQ6ICcuLi4nIH0pO1xuICAgIH1cblxuICAgIGNyZWF0ZVBhZ2VMaW5rKCdOZXh0JywgcGFnZU51bWJlciArIDEsIHBhZ2VOdW1iZXIgPT09IHRvdGFsUGFnZXMpO1xuICAgIGNyZWF0ZVBhZ2VMaW5rKCdMYXN0JywgdG90YWxQYWdlcywgcGFnZU51bWJlciA9PT0gdG90YWxQYWdlcyk7XG5cbiAgICBjb25zdCBwYWdpbmF0aW9uUm93MkRpdiA9IHBhZ2luYXRpb25EaXYuY3JlYXRlRGl2KCk7XG5cbiAgICBwYWdpbmF0aW9uUm93MkRpdi5jcmVhdGVFbCgnc3BhbicsIHsgdGV4dDogJyBJdGVtcyBwZXIgcGFnZTogJyB9KTtcblxuICAgIGNvbnN0IGl0ZW1zUGVyUGFnZVNlbGVjdCA9IHBhZ2luYXRpb25Sb3cyRGl2LmNyZWF0ZUVsKCdzZWxlY3QnKTtcbiAgICBpdGVtc1BlclBhZ2VPcHRpb25zLmZvckVhY2goKG9wdGlvbjogbnVtYmVyKTogdm9pZCA9PiB7XG4gICAgICBpdGVtc1BlclBhZ2VTZWxlY3QuY3JlYXRlRWwoJ29wdGlvbicsIHsgdGV4dDogb3B0aW9uLnRvU3RyaW5nKCksIHZhbHVlOiBvcHRpb24udG9TdHJpbmcoKSB9KTtcbiAgICB9KTtcbiAgICBpdGVtc1BlclBhZ2VTZWxlY3QudmFsdWUgPSBpdGVtc1BlclBhZ2UudG9TdHJpbmcoKTtcbiAgICBpdGVtc1BlclBhZ2VTZWxlY3QuYWRkRXZlbnRMaXN0ZW5lcihcbiAgICAgICdjaGFuZ2UnLFxuICAgICAgY29udmVydEFzeW5jVG9TeW5jKGFzeW5jICgpOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgICAgICAgaXRlbXNQZXJQYWdlID0gcGFyc2VJbnQoaXRlbXNQZXJQYWdlU2VsZWN0LnZhbHVlLCAxMCk7XG4gICAgICAgIHRvdGFsUGFnZXMgPSBNYXRoLmNlaWwocm93cy5sZW5ndGggLyBpdGVtc1BlclBhZ2UpO1xuICAgICAgICBhd2FpdCByZW5kZXJQYWdlKDEpO1xuICAgICAgfSlcbiAgICApO1xuXG4gICAgcGFnaW5hdGlvblJvdzJEaXYuY3JlYXRlRWwoJ3NwYW4nLCB7IHRleHQ6ICcgIEp1bXAgdG8gcGFnZTogJyB9KTtcblxuICAgIGNvbnN0IGp1bXBUb1BhZ2VJbnB1dCA9IHBhZ2luYXRpb25Sb3cyRGl2LmNyZWF0ZUVsKCdpbnB1dCcsIHsgYXR0cjogeyBtYXg6IHRvdGFsUGFnZXMsIG1pbjogMSB9LCB0eXBlOiAnbnVtYmVyJyB9KTtcbiAgICBqdW1wVG9QYWdlSW5wdXQuYWRkRXZlbnRMaXN0ZW5lcihcbiAgICAgICdrZXlkb3duJyxcbiAgICAgIGNvbnZlcnRBc3luY1RvU3luYyhhc3luYyAoZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgICAgICAgaWYgKGV2ZW50LmtleSA9PT0gJ0VudGVyJykge1xuICAgICAgICAgIGNvbnN0IHBhZ2UgPSBwYXJzZUludChqdW1wVG9QYWdlSW5wdXQudmFsdWUsIDEwKTtcbiAgICAgICAgICBpZiAocGFnZSA+PSAxICYmIHBhZ2UgPD0gdG90YWxQYWdlcykge1xuICAgICAgICAgICAgYXdhaXQgcmVuZGVyUGFnZShwYWdlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgKTtcblxuICAgIHBhZ2luYXRpb25Sb3cyRGl2LmNyZWF0ZUVsKCdzcGFuJywgeyB0ZXh0OiBgICBQYWdlICR7cGFnZU51bWJlci50b1N0cmluZygpfSBvZiAke3RvdGFsUGFnZXMudG9TdHJpbmcoKX0sIFRvdGFsIGl0ZW1zOiAke3Jvd3MubGVuZ3RoLnRvU3RyaW5nKCl9YCB9KTtcblxuICAgIGZ1bmN0aW9uIGNyZWF0ZVBhZ2VMaW5rKHRleHQ6IHN0cmluZywgY3VycmVudFBhZ2VOdW1iZXI6IG51bWJlciwgZGlzYWJsZWQgPSBmYWxzZSk6IEhUTUxBbmNob3JFbGVtZW50IHtcbiAgICAgIGNvbnN0IGxpbmsgPSBwYWdpbmF0aW9uUm93MURpdi5jcmVhdGVFbCgnYScsIHsgY2xzOiAncGFnZS1saW5rJywgaHJlZjogYCMke2N1cnJlbnRQYWdlTnVtYmVyLnRvU3RyaW5nKCl9YCwgdGV4dCB9KTtcbiAgICAgIGlmIChkaXNhYmxlZCkge1xuICAgICAgICBsaW5rLmFkZENsYXNzKCdkaXNhYmxlZCcpO1xuICAgICAgICBsaW5rLm9uY2xpY2sgPSAoZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkID0+IHtcbiAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB9O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbGluay5hZGRFdmVudExpc3RlbmVyKFxuICAgICAgICAgICdjbGljaycsXG4gICAgICAgICAgY29udmVydEFzeW5jVG9TeW5jKGFzeW5jIChldmVudDogTW91c2VFdmVudCk6IFByb21pc2U8dm9pZD4gPT4ge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIGF3YWl0IHJlbmRlclBhZ2UoY3VycmVudFBhZ2VOdW1iZXIpO1xuICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICByZXR1cm4gbGluaztcbiAgICB9XG4gIH1cblxuICBhc3luYyBmdW5jdGlvbiByZW5kZXJQYWdlKHBhZ2VOdW1iZXI6IG51bWJlcik6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnRhaW5lci5lbXB0eSgpO1xuICAgIGNvbnRhaW5lci5jcmVhdGVFbCgnc3R5bGUnLCB7IHRleHQ6IHBhZ2luYXRpb25Dc3MgfSk7XG5cbiAgICBjb25zdCBzdGFydEluZGV4ID0gKHBhZ2VOdW1iZXIgLSAxKSAqIGl0ZW1zUGVyUGFnZTtcbiAgICBjb25zdCBlbmRJbmRleCA9IHN0YXJ0SW5kZXggKyBpdGVtc1BlclBhZ2U7XG4gICAgY29uc3Qgcm93c0ZvckN1cnJlbnRQYWdlID0gcm93cy5zbGljZShzdGFydEluZGV4LCBlbmRJbmRleCk7XG5cbiAgICBjb25zdCBvbGRDb250YWluZXIgPSBkdi5jb250YWluZXI7XG5cbiAgICBkdi5jb250YWluZXIgPSBjb250YWluZXI7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHJlbmRlcmVyKHJvd3NGb3JDdXJyZW50UGFnZSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgZHYucGFyYWdyYXBoKGBcdTI3NEMke2Vycm9yVG9TdHJpbmcoZSl9YCk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZXF1aXJlLWF0b21pYy11cGRhdGVzXG4gICAgICBkdi5jb250YWluZXIgPSBvbGRDb250YWluZXI7XG4gICAgfVxuXG4gICAgY3JlYXRlUGFnaW5hdGlvbkNvbnRyb2xzKHBhZ2VOdW1iZXIpO1xuICB9XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7O0FBZ0JBLFNBQVMsMEJBQTBCO0FBQ25DO0FBQUEsRUFDRTtBQUFBLEVB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
232
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL0RhdGF2aWV3LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBwYWNrYWdlRG9jdW1lbnRhdGlvblxuICpcbiAqIFRoaXMgbW9kdWxlIHByb3ZpZGVzIHV0aWxpdHkgZnVuY3Rpb25zIGZvciB3b3JraW5nIHdpdGggRGF0YXZpZXcgaW4gT2JzaWRpYW4uXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBQcm9taXNhYmxlIH0gZnJvbSAndHlwZS1mZXN0JztcblxuaW1wb3J0IHR5cGUgeyBEYXRhdmlld0lubGluZUFwaSBhcyBEYXRhdmlld0lubGluZUFwaU9yaWdpbmFsIH0gZnJvbSAnLi9AdHlwZXMvRGF0YXZpZXcvYXBpL2lubGluZS1hcGkuZC50cyc7XG5pbXBvcnQgdHlwZSB7XG4gIERhdGFBcnJheSxcbiAgRGF0YXZpZXdBcGksXG4gIFNNYXJrZG93blBhZ2Vcbn0gZnJvbSAnLi9AdHlwZXMvRGF0YXZpZXcvaW5kZXguZC50cyc7XG5pbXBvcnQgdHlwZSB7IFBhdGhPckZpbGUgfSBmcm9tICcuL0ZpbGVTeXN0ZW0udHMnO1xuaW1wb3J0IHR5cGUgeyBDb21iaW5lZEZyb250bWF0dGVyIH0gZnJvbSAnLi9Gcm9udG1hdHRlci50cyc7XG5cbmltcG9ydCB7IGNvbnZlcnRBc3luY1RvU3luYyB9IGZyb20gJy4uL0FzeW5jLnRzJztcbmltcG9ydCB7XG4gIGVycm9yVG9TdHJpbmcsXG4gIHRocm93RXhwcmVzc2lvblxufSBmcm9tICcuLi9FcnJvci50cyc7XG5pbXBvcnQge1xuICBnZXRGaWxlLFxuICBnZXRQYXRoXG59IGZyb20gJy4vRmlsZVN5c3RlbS50cyc7XG5pbXBvcnQgeyByZWxhdGl2ZVBhdGhUb1Jlc291cmNlVXJsIH0gZnJvbSAnLi9SZXNvdXJjZVVybC50cyc7XG5cbi8qKlxuICogRXhwb3J0IERhdGVUaW1lIGFuZCBMaW5rIHR5cGVzIGZyb20gdGhlIERhdGF2aWV3IEFQSS5cbiAqL1xuZXhwb3J0IHR5cGUge1xuICBEYXRlVGltZSxcbiAgTGlua1xufSBmcm9tICcuL0B0eXBlcy9EYXRhdmlldy9pbmRleC5kLnRzJztcblxuZGVjbGFyZSBnbG9iYWwge1xuICAvKipcbiAgICogVGhlIERhdGF2aWV3QVBJIG9iamVjdCByZXByZXNlbnRzIHRoZSBBUEkgZm9yIGludGVyYWN0aW5nIHdpdGggRGF0YXZpZXcgaW4gT2JzaWRpYW4uXG4gICAqL1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdmFyLCB2YXJzLW9uLXRvcFxuICB2YXIgRGF0YXZpZXdBUEk6IERhdGF2aWV3QXBpIHwgdW5kZWZpbmVkO1xufVxuXG4vKipcbiAqIFRoZSBjb21iaW5lZCBwYWdlIHR5cGUsIHdoaWNoIGluY2x1ZGVzIHRoZSBmcm9udCBtYXR0ZXIgYW5kIHRoZSBTTWFya2Rvd25QYWdlLlxuICovXG5leHBvcnQgdHlwZSBDb21iaW5lZFBhZ2U8Q3VzdG9tRnJvbnRtYXR0ZXIgPSB1bmtub3duPiA9IENvbWJpbmVkRnJvbnRtYXR0ZXI8Q3VzdG9tRnJvbnRtYXR0ZXI+ICYgU01hcmtkb3duUGFnZTtcblxuLyoqXG4gKiBFeHRlbmRlZCBpbnRlcmZhY2UgZm9yIHRoZSBEYXRhdmlldyBJbmxpbmUgQVBJLCBwcm92aWRpbmcgYWRkaXRpb25hbCBtZXRob2RzIGZvciBjdXN0b20gcGFnZSB0eXBlcyBhbmQgYXJyYXkgaGFuZGxpbmcuXG4gKlxuICogQHR5cGVQYXJhbSBDdXN0b21QYWdlIC0gVGhlIHR5cGUgb2YgdGhlIGN1c3RvbSBwYWdlLiBEZWZhdWx0cyB0byBgU01hcmtkb3duUGFnZWAuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRGF0YXZpZXdJbmxpbmVBcGkgZXh0ZW5kcyBEYXRhdmlld0lubGluZUFwaU9yaWdpbmFsIHtcbiAgLyoqXG4gICAqIFdyYXBzIGFuIGFycmF5IG9mIGl0ZW1zIGludG8gYSB7QGxpbmsgRGF0YUFycmF5fSBvYmplY3QuXG4gICAqXG4gICAqIEB0eXBlUGFyYW0gVCAtIFRoZSB0eXBlIG9mIHRoZSBpdGVtcyBpbiB0aGUgYXJyYXkuXG4gICAqIEBwYXJhbSBhcnIgLSBUaGUgYXJyYXkgb2YgaXRlbXMgdG8gd3JhcC5cbiAgICogQHJldHVybnMgQSB7QGxpbmsgRGF0YUFycmF5fSBjb250YWluaW5nIHRoZSBpdGVtcy5cbiAgICovXG4gIGFycmF5PFQ+KGFycjogVFtdKTogRGF0YUFycmF5PFQ+O1xuXG4gIC8qKlxuICAgKiBSZXRyaWV2ZXMgdGhlIGN1cnJlbnQgcGFnZSwgd2l0aCBhbiBvcHRpb25hbCBjdXN0b20gcGFnZSB0eXBlLlxuICAgKlxuICAgKiBAdHlwZVBhcmFtIEN1c3RvbVBhZ2UgLSBUaGUgdHlwZSBvZiB0aGUgY3VzdG9tIHBhZ2UuIERlZmF1bHRzIHRvIGBTTWFya2Rvd25QYWdlYC5cbiAgICogQHJldHVybnMgVGhlIGN1cnJlbnQgcGFnZS5cbiAgICovXG4gIGN1cnJlbnQ8Q3VzdG9tRnJvbnRtYXR0ZXIgPSB1bmtub3duPigpOiBDb21iaW5lZFBhZ2U8Q3VzdG9tRnJvbnRtYXR0ZXI+O1xuXG4gIC8qKlxuICAgKiBSZXRyaWV2ZXMgcGFnZXMgYmFzZWQgb24gYW4gb3B0aW9uYWwgcXVlcnksIHdpdGggYW4gb3B0aW9uYWwgY3VzdG9tIHBhZ2UgdHlwZS5cbiAgICpcbiAgICogQHR5cGVQYXJhbSBDdXN0b21QYWdlIC0gVGhlIHR5cGUgb2YgdGhlIGN1c3RvbSBwYWdlLiBEZWZhdWx0cyB0byBgU01hcmtkb3duUGFnZWAuXG4gICAqIEBwYXJhbSBxdWVyeSAtIEFuIG9wdGlvbmFsIHN0cmluZyBxdWVyeSB0byBmaWx0ZXIgdGhlIHBhZ2VzLlxuICAgKiBAcmV0dXJucyBBIHtAbGluayBEYXRhQXJyYXl9IG9mIHBhZ2VzIG1hdGNoaW5nIHRoZSBxdWVyeS5cbiAgICovXG4gIHBhZ2VzPEN1c3RvbUZyb250bWF0dGVyID0gdW5rbm93bj4ocXVlcnk/OiBzdHJpbmcpOiBEYXRhQXJyYXk8Q29tYmluZWRQYWdlPEN1c3RvbUZyb250bWF0dGVyPj47XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBwYXJhZ3JhcGggSFRNTCBlbGVtZW50IHdpdGggdGhlIHByb3ZpZGVkIHRleHQgYW5kIG9wdGlvbmFsIERPTSBlbGVtZW50IG9wdGlvbnMuXG4gICAqXG4gICAqIEBwYXJhbSB0ZXh0IC0gVGhlIGNvbnRlbnQgb2YgdGhlIHBhcmFncmFwaC5cbiAgICogQHBhcmFtIG9wdGlvbnMgLSBPcHRpb25hbCBET00gZWxlbWVudCBvcHRpb25zLCBpbmNsdWRpbmcgYW4gb3B0aW9uYWwgY29udGFpbmVyLlxuICAgKiBAcmV0dXJucyBUaGUgY3JlYXRlZCBIVE1MIHBhcmFncmFwaCBlbGVtZW50LlxuICAgKi9cbiAgcGFyYWdyYXBoKFxuICAgIHRleHQ6IHVua25vd24sXG4gICAgb3B0aW9ucz86IERvbUVsZW1lbnRJbmZvV2l0aENvbnRhaW5lclxuICApOiBIVE1MUGFyYWdyYXBoRWxlbWVudDtcbn1cblxuLyoqXG4gKiBEb21FbGVtZW50SW5mbyB3aXRoIGFuIG9wdGlvbmFsIGNvbnRhaW5lci5cbiAqL1xuZXhwb3J0IHR5cGUgRG9tRWxlbWVudEluZm9XaXRoQ29udGFpbmVyID0geyBjb250YWluZXI/OiBIVE1MRWxlbWVudCB9ICYgRG9tRWxlbWVudEluZm87XG5cbi8qKlxuICogVGhlIGNvbWJpbmVkIGZpbGUgdHlwZSwgd2hpY2ggaW5jbHVkZXMgdGhlIGZyb250IG1hdHRlciBhbmQgdGhlIFNNYXJrZG93bkZpbGUuXG4gKi9cbmV4cG9ydCB0eXBlIFBhZ2VGaWxlID0gU01hcmtkb3duUGFnZVsnZmlsZSddO1xuXG4vKipcbiAqIExpc3Qgb2YgcGFnZSBmaWxlcy5cbiAqL1xuZXhwb3J0IHR5cGUgUGFnZUZpbGVzID0gQXJyYXlPckRhdGFBcnJheTxQYWdlRmlsZT47XG5cbi8qKlxuICogUmVsb2FkcyB0aGUgY3VycmVudCBmaWxlIGNhY2hlIHVzaW5nIHRoZSBEYXRhdmlldyBBUEkuXG4gKlxuICogQHBhcmFtIGR2IC0gVGhlIERhdGF2aWV3SW5saW5lQXBpIGluc3RhbmNlLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB3aGVuIHRoZSBjYWNoZSBpcyByZWxvYWRlZC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlbG9hZEN1cnJlbnRGaWxlQ2FjaGUoZHY6IERhdGF2aWV3SW5saW5lQXBpKTogUHJvbWlzZTx2b2lkPiB7XG4gIGF3YWl0IERhdGF2aWV3QVBJPy5pbmRleC5yZWxvYWQoZ2V0RmlsZShkdi5hcHAsIGR2LmN1cnJlbnQoKS5maWxlLnBhdGgpKTtcbn1cblxuY29uc3QgcGFnaW5hdGlvbkNzcyA9IGBcbi5wYWdpbmF0aW9uIC5wYWdlLWxpbmsuZGlzYWJsZWQge1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgY29sb3I6IGdyYXk7XG59XG5cbi5wYWdpbmF0aW9uIC5wYWdlLWxpbmsge1xuICBtYXJnaW46IDAgNXB4O1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgY29sb3I6IGJsdWU7XG59XG5cbi5wYWdpbmF0aW9uIC5wYWdlLWxpbms6aG92ZXI6bm90KC5kaXNhYmxlZCkge1xuICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcbn1cbi5wYWdpbmF0aW9uIC5wYWdlLWxpbmsuY3VycmVudCB7XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xuICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcbn1cblxuLnBhZ2luYXRpb24gc2VsZWN0LFxuLnBhZ2luYXRpb24gaW5wdXQge1xuICBtYXJnaW46IDAgNXB4O1xufVxuYDtcblxuLyoqXG4gKiBBcnJheSBvciBEYXRhQXJyYXkgdHlwZS5cbiAqL1xuZXhwb3J0IHR5cGUgQXJyYXlPckRhdGFBcnJheTxUPiA9IERhdGFBcnJheTxUPiB8IFRbXTtcblxuLyoqXG4gKiBPcHRpb25zIGZvciByZW5kZXJpbmcgYW4gaWZyYW1lIGluIHRoZSBEYXRhdmlldyBjb250YWluZXIuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVuZGVySWZyYW1lT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUaGUgRGF0YXZpZXdJbmxpbmVBcGkgaW5zdGFuY2UuXG4gICAqL1xuICBkdjogRGF0YXZpZXdJbmxpbmVBcGk7XG5cbiAgLyoqXG4gICAqIFRoZSBoZWlnaHQgb2YgdGhlIGlmcmFtZS5cbiAgICovXG4gIGhlaWdodDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgcmVsYXRpdmUgcGF0aCB0byB0aGUgcmVzb3VyY2UgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBpZnJhbWUuXG4gICAqL1xuICByZWxhdGl2ZVBhdGhPckZpbGU6IFBhdGhPckZpbGU7XG5cbiAgLyoqXG4gICAqIFRoZSB3aWR0aCBvZiB0aGUgaWZyYW1lLlxuICAgKi9cbiAgd2lkdGg6IHN0cmluZztcbn1cblxuLyoqXG4gKiBPcHRpb25zIGZvciByZW5kZXJpbmcgYSBwYWdpbmF0ZWQgbGlzdCB1c2luZyB0aGUgRGF0YXZpZXcgQVBJLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlbmRlclBhZ2luYXRlZExpc3RPcHRpb25zPFQ+IHtcbiAgLyoqXG4gICAqIFRoZSBEYXRhdmlld0lubGluZUFwaSBpbnN0YW5jZS5cbiAgICovXG4gIGR2OiBEYXRhdmlld0lubGluZUFwaTtcblxuICAvKipcbiAgICogT3B0aW9ucyBmb3IgaXRlbXMgcGVyIHBhZ2UuIERlZmF1bHRzIHRvIGBbMTAsIDIwLCA1MCwgMTAwXWAuXG4gICAqL1xuICBpdGVtc1BlclBhZ2VPcHRpb25zPzogbnVtYmVyW107XG5cbiAgLyoqXG4gICAqIFRoZSBsaXN0IG9mIGl0ZW1zIHRvIHBhZ2luYXRlLlxuICAgKi9cbiAgcm93czogQXJyYXlPckRhdGFBcnJheTxUPjtcbn1cblxuLyoqXG4gKiBPcHRpb25zIGZvciByZW5kZXJpbmcgYSBwYWdpbmF0ZWQgZWxlbWVudCB1c2luZyB0aGUgRGF0YXZpZXcgQVBJLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlbmRlclBhZ2luYXRlZE9wdGlvbnM8VD4ge1xuICAvKipcbiAgICogVGhlIERhdGF2aWV3SW5saW5lQXBpIGluc3RhbmNlLlxuICAgKi9cbiAgZHY6IERhdGF2aWV3SW5saW5lQXBpO1xuXG4gIC8qKlxuICAgKiBPcHRpb25zIGZvciBpdGVtcyBwZXIgcGFnZS5cbiAgICovXG4gIGl0ZW1zUGVyUGFnZU9wdGlvbnM6IG51bWJlcltdO1xuXG4gIC8qKlxuICAgKiBUaGUgcmVuZGVyZXIgZnVuY3Rpb24gdG8gZGlzcGxheSB0aGUgcGFnaW5hdGVkIGNvbnRlbnQuXG4gICAqXG4gICAqIEBwYXJhbSByb3dzRm9yT25lUGFnZSAtIFRoZSByb3dzIHRvIHJlbmRlci5cbiAgICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB3aGVuIHRoZSBjb250ZW50IGlzIHJlbmRlcmVkLlxuICAgKi9cbiAgcmVuZGVyZXI6IChyb3dzRm9yT25lUGFnZTogQXJyYXlPckRhdGFBcnJheTxUPikgPT4gUHJvbWlzYWJsZTx2b2lkPjtcblxuICAvKipcbiAgICogVGhlIHJvd3MgdG8gcGFnaW5hdGUuXG4gICAqL1xuICByb3dzOiBBcnJheU9yRGF0YUFycmF5PFQ+O1xufVxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIHJlbmRlcmluZyBhIHBhZ2luYXRlZCB0YWJsZSB1c2luZyB0aGUgRGF0YXZpZXcgQVBJLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlbmRlclBhZ2luYXRlZFRhYmxlT3B0aW9uczxUPiB7XG4gIC8qKlxuICAgKiBUaGUgRGF0YXZpZXdJbmxpbmVBcGkgaW5zdGFuY2UuXG4gICAqL1xuICBkdjogRGF0YXZpZXdJbmxpbmVBcGk7XG5cbiAgLyoqXG4gICAqIFRoZSBoZWFkZXJzIG9mIHRoZSB0YWJsZS5cbiAgICovXG4gIGhlYWRlcnM6IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBPcHRpb25zIGZvciBpdGVtcyBwZXIgcGFnZS4gRGVmYXVsdHMgdG8gYFsxMCwgMjAsIDUwLCAxMDBdYC5cbiAgICovXG4gIGl0ZW1zUGVyUGFnZU9wdGlvbnM/OiBudW1iZXJbXTtcblxuICAvKipcbiAgICogVGhlIHJvd3Mgb2YgdGhlIHRhYmxlIHRvIHBhZ2luYXRlLlxuICAgKi9cbiAgcm93czogQXJyYXlPckRhdGFBcnJheTxUPjtcbn1cblxuLyoqXG4gKiBSZW5kZXJzIHRoZSBjb250ZW50IHVzaW5nIHRoZSBwcm92aWRlZCByZW5kZXJlciBmdW5jdGlvbiBpbiBhIHRlbXBvcmFyeSBjb250YWluZXIsXG4gKiBhbmQgdGhlbiByZXR1cm5zIHRoZSBjb250YWluZXIuXG4gKlxuICogQHBhcmFtIGR2IC0gVGhlIERhdGF2aWV3SW5saW5lQXBpIGluc3RhbmNlLlxuICogQHBhcmFtIHJlbmRlcmVyIC0gVGhlIGZ1bmN0aW9uIHJlc3BvbnNpYmxlIGZvciByZW5kZXJpbmcgdGhlIGNvbnRlbnQuXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHRvIHRoZSBIVE1MIHBhcmFncmFwaCBlbGVtZW50XG4gKiB0aGF0IHdhcyB1c2VkIGFzIHRoZSB0ZW1wb3JhcnkgY29udGFpbmVyLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0UmVuZGVyZWRDb250YWluZXIoZHY6IERhdGF2aWV3SW5saW5lQXBpLCByZW5kZXJlcjogKCkgPT4gUHJvbWlzYWJsZTx2b2lkPik6IFByb21pc2U8SFRNTFBhcmFncmFwaEVsZW1lbnQ+IHtcbiAgY29uc3QgdGVtcENvbnRhaW5lciA9IGR2LnBhcmFncmFwaCgnJyk7XG4gIGR2LmNvbnRhaW5lciA9IHRlbXBDb250YWluZXI7XG4gIGR2LmNvbnRhaW5lci5lbXB0eSgpO1xuXG4gIHRyeSB7XG4gICAgYXdhaXQgcmVuZGVyZXIoKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIGR2LnBhcmFncmFwaChgXHUyNzRDJHtlcnJvclRvU3RyaW5nKGUpfWApO1xuICB9IGZpbmFsbHkge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZXF1aXJlLWF0b21pYy11cGRhdGVzXG4gICAgZHYuY29udGFpbmVyID0gdGVtcENvbnRhaW5lci5wYXJlbnRFbGVtZW50ID8/IHRocm93RXhwcmVzc2lvbihuZXcgRXJyb3IoJ0NvbnRhaW5lciBwYXJlbnQgbm90IGZvdW5kJykpO1xuICAgIHRlbXBDb250YWluZXIucmVtb3ZlKCk7XG4gIH1cblxuICByZXR1cm4gdGVtcENvbnRhaW5lcjtcbn1cblxuLyoqXG4gKiBJbnNlcnRzIGEgY29kZSBibG9jayBpbnRvIHRoZSBzcGVjaWZpZWQgRGF0YXZpZXcgaW5zdGFuY2UgdXNpbmcgdGhlIHByb3ZpZGVkIGxhbmd1YWdlIGFuZCBjb2RlLlxuICpcbiAqIEBwYXJhbSBkdiAtIFRoZSBEYXRhdmlld0lubGluZUFwaSBpbnN0YW5jZSB0byBpbnNlcnQgdGhlIGNvZGUgYmxvY2sgaW50by5cbiAqIEBwYXJhbSBsYW5ndWFnZSAtIFRoZSBsYW5ndWFnZSBpZGVudGlmaWVyIGZvciB0aGUgY29kZSBibG9jay5cbiAqIEBwYXJhbSBjb2RlIC0gVGhlIGNvZGUgY29udGVudCB0byBiZSBpbnNlcnRlZCBpbnRvIHRoZSBjb2RlIGJsb2NrLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaW5zZXJ0Q29kZUJsb2NrKGR2OiBEYXRhdmlld0lubGluZUFwaSwgbGFuZ3VhZ2U6IHN0cmluZywgY29kZTogc3RyaW5nKTogdm9pZCB7XG4gIGNvbnN0IE1JTl9GRU5DRV9MRU5HVEggPSAzO1xuICBjb25zdCBmZW5jZVJlZ0V4cCA9IG5ldyBSZWdFeHAoYF5cXGB7JHtNSU5fRkVOQ0VfTEVOR1RILnRvU3RyaW5nKCl9LH1gLCAnZ20nKTtcbiAgY29uc3QgZmVuY2VNYXRjaGVzID0gY29kZS5tYXRjaEFsbChmZW5jZVJlZ0V4cCk7XG4gIGNvbnN0IGZlbmNlTGVuZ3RocyA9IEFycmF5LmZyb20oZmVuY2VNYXRjaGVzKS5tYXAoKGZlbmNlTWF0Y2gpID0+IGZlbmNlTWF0Y2hbMF0ubGVuZ3RoKTtcbiAgY29uc3QgbWF4RmVuY2VMZW5ndGggPSBNYXRoLm1heCgwLCAuLi5mZW5jZUxlbmd0aHMpO1xuICBjb25zdCByZXN1bHRGZW5jZUxlbmd0aCA9IE1hdGgubWF4KE1JTl9GRU5DRV9MRU5HVEgsIG1heEZlbmNlTGVuZ3RoICsgMSk7XG4gIGNvbnN0IHJlc3VsdEZlbmNlID0gJ2AnLnJlcGVhdChyZXN1bHRGZW5jZUxlbmd0aCk7XG5cbiAgZHYucGFyYWdyYXBoKGAke3Jlc3VsdEZlbmNlfSR7bGFuZ3VhZ2V9XG4ke2NvZGV9XG4ke3Jlc3VsdEZlbmNlfWApO1xufVxuXG4vKipcbiAqIFJlbmRlcnMgYW4gaWZyYW1lIGluIHRoZSBEYXRhdmlldyBjb250YWluZXIgd2l0aCB0aGUgc3BlY2lmaWVkIHJlbGF0aXZlIHBhdGgsIHdpZHRoLCBhbmQgaGVpZ2h0LlxuICpcbiAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIG9wdGlvbnMgZm9yIHJlbmRlcmluZyB0aGUgaWZyYW1lLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVuZGVySWZyYW1lKG9wdGlvbnM6IFJlbmRlcklmcmFtZU9wdGlvbnMpOiB2b2lkIHtcbiAgY29uc3Qge1xuICAgIGR2LFxuICAgIGhlaWdodCA9ICc2MDBweCcsXG4gICAgcmVsYXRpdmVQYXRoT3JGaWxlLFxuICAgIHdpZHRoID0gJzEwMCUnXG4gIH0gPSBvcHRpb25zO1xuICBkdi5lbCgnaWZyYW1lJywgJycsIHtcbiAgICBhdHRyOiB7XG4gICAgICBoZWlnaHQsXG4gICAgICBzcmM6IHJlbGF0aXZlUGF0aFRvUmVzb3VyY2VVcmwoZHYuYXBwLCBnZXRQYXRoKGR2LmFwcCwgcmVsYXRpdmVQYXRoT3JGaWxlKSwgZHYuY3VycmVudCgpLmZpbGUucGF0aCksXG4gICAgICB3aWR0aFxuICAgIH1cbiAgfSk7XG59XG5cbi8qKlxuICogUmVuZGVycyBhIHBhZ2luYXRlZCBsaXN0IHVzaW5nIHRoZSBwcm92aWRlZCBEYXRhdmlld0lubGluZUFwaSBpbnN0YW5jZS5cbiAqXG4gKiBAdHlwZVBhcmFtIFQgLSBUaGUgdHlwZSBvZiBpdGVtcyBpbiB0aGUgbGlzdC5cbiAqXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBvcHRpb25zIGZvciByZW5kZXJpbmcgdGhlIHBhZ2luYXRlZCBsaXN0LlxuICpcbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgbGlzdCBpcyByZW5kZXJlZC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlbmRlclBhZ2luYXRlZExpc3Q8VD4ob3B0aW9uczogUmVuZGVyUGFnaW5hdGVkTGlzdE9wdGlvbnM8VD4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3Qge1xuICAgIGR2LFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1tYWdpYy1udW1iZXJzXG4gICAgaXRlbXNQZXJQYWdlT3B0aW9ucyA9IFsxMCwgMjAsIDUwLCAxMDBdLFxuICAgIHJvd3NcbiAgfSA9IG9wdGlvbnM7XG4gIGF3YWl0IHJlbmRlclBhZ2luYXRlZCh7XG4gICAgZHYsXG4gICAgaXRlbXNQZXJQYWdlT3B0aW9ucyxcbiAgICByZW5kZXJlcjogYXN5bmMgKHJvd3NGb3JPbmVQYWdlOiBBcnJheU9yRGF0YUFycmF5PFQ+KTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gICAgICBhd2FpdCBkdi5saXN0KHJvd3NGb3JPbmVQYWdlKTtcbiAgICB9LFxuICAgIHJvd3NcbiAgfSk7XG59XG5cbi8qKlxuICogUmVuZGVycyBhIHBhZ2luYXRlZCB0YWJsZSB1c2luZyB0aGUgcHJvdmlkZWQgRGF0YXZpZXdJbmxpbmVBcGkgaW5zdGFuY2UuXG4gKlxuICogQHR5cGVQYXJhbSBUIC0gVGhlIHR5cGUgb2YgaXRlbXMgaW4gdGhlIHRhYmxlIHJvd3MuXG4gKlxuICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgb3B0aW9ucyBmb3IgcmVuZGVyaW5nIHRoZSBwYWdpbmF0ZWQgdGFibGUuXG4gKlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB3aGVuIHRoZSB0YWJsZSBpcyByZW5kZXJlZC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlbmRlclBhZ2luYXRlZFRhYmxlPFQgZXh0ZW5kcyB1bmtub3duW10+KG9wdGlvbnM6IFJlbmRlclBhZ2luYXRlZFRhYmxlT3B0aW9uczxUPik6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCB7XG4gICAgZHYsXG4gICAgaGVhZGVycyxcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tbWFnaWMtbnVtYmVyc1xuICAgIGl0ZW1zUGVyUGFnZU9wdGlvbnMgPSBbMTAsIDIwLCA1MCwgMTAwXSxcbiAgICByb3dzXG4gIH0gPSBvcHRpb25zO1xuICBhd2FpdCByZW5kZXJQYWdpbmF0ZWQoe1xuICAgIGR2LFxuICAgIGl0ZW1zUGVyUGFnZU9wdGlvbnMsXG4gICAgcmVuZGVyZXI6IGFzeW5jIChyb3dzRm9yT25lUGFnZTogQXJyYXlPckRhdGFBcnJheTxUPik6IFByb21pc2U8dm9pZD4gPT4ge1xuICAgICAgYXdhaXQgZHYudGFibGUoaGVhZGVycywgcm93c0Zvck9uZVBhZ2UpO1xuICAgIH0sXG4gICAgcm93c1xuICB9KTtcbn1cblxuLyoqXG4gKiBIZWxwZXIgZnVuY3Rpb24gdG8gcmVuZGVyIHBhZ2luYXRlZCBjb250ZW50IHVzaW5nIHRoZSBzcGVjaWZpZWQgcmVuZGVyZXIuXG4gKlxuICogQHR5cGVQYXJhbSBUIC0gVGhlIHR5cGUgb2YgaXRlbXMgdG8gcGFnaW5hdGUuXG4gKlxuICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgb3B0aW9ucyBmb3IgcmVuZGVyaW5nIHRoZSBwYWdpbmF0ZWQgY29udGVudC5cbiAqXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIGNvbnRlbnQgaXMgcmVuZGVyZWQuXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIHJlbmRlclBhZ2luYXRlZDxUPihvcHRpb25zOiBSZW5kZXJQYWdpbmF0ZWRPcHRpb25zPFQ+KTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IFNFQ09ORF9QQUdFX05VTUJFUiA9IDI7XG4gIGNvbnN0IE1PUkVfUEFHRV9OVU1CRVIgPSAzO1xuICBjb25zdCB7XG4gICAgZHYsXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLW1hZ2ljLW51bWJlcnNcbiAgICBpdGVtc1BlclBhZ2VPcHRpb25zID0gWzEwLCAyMCwgNTAsIDEwMF0sXG4gICAgcmVuZGVyZXIsXG4gICAgcm93c1xuICB9ID0gb3B0aW9ucztcbiAgaWYgKHJvd3MubGVuZ3RoID09PSAwKSB7XG4gICAgZHYucGFyYWdyYXBoKCdObyBpdGVtcyBmb3VuZCcpO1xuICAgIHJldHVybjtcbiAgfVxuICBjb25zdCBjb250YWluZXIgPSBkdi5jb250YWluZXI7XG4gIGxldCBpdGVtc1BlclBhZ2UgPSBpdGVtc1BlclBhZ2VPcHRpb25zWzBdID8/IHRocm93RXhwcmVzc2lvbihuZXcgRXJyb3IoJ0l0ZW1zIHBlciBwYWdlIG9wdGlvbnMgYXJlIGVtcHR5JykpO1xuICBsZXQgdG90YWxQYWdlcyA9IE1hdGguY2VpbChyb3dzLmxlbmd0aCAvIGl0ZW1zUGVyUGFnZSk7XG4gIGF3YWl0IHJlbmRlclBhZ2UoMSk7XG5cbiAgZnVuY3Rpb24gY3JlYXRlUGFnaW5hdGlvbkNvbnRyb2xzKHBhZ2VOdW1iZXI6IG51bWJlcik6IHZvaWQge1xuICAgIGNvbnN0IHBhZ2luYXRpb25EaXYgPSBjb250YWluZXIuY3JlYXRlRWwoJ2RpdicsIHsgY2xzOiAncGFnaW5hdGlvbicgfSk7XG4gICAgY29uc3QgcGFnaW5hdGlvblJvdzFEaXYgPSBwYWdpbmF0aW9uRGl2LmNyZWF0ZURpdigpO1xuXG4gICAgY3JlYXRlUGFnZUxpbmsoJ0ZpcnN0JywgMSwgcGFnZU51bWJlciA9PT0gMSk7XG4gICAgY3JlYXRlUGFnZUxpbmsoJ1ByZXYnLCBwYWdlTnVtYmVyIC0gMSwgcGFnZU51bWJlciA9PT0gMSk7XG5cbiAgICBpZiAocGFnZU51bWJlciA+IE1PUkVfUEFHRV9OVU1CRVIpIHtcbiAgICAgIHBhZ2luYXRpb25Sb3cxRGl2LmNyZWF0ZUVsKCdzcGFuJywgeyB0ZXh0OiAnLi4uJyB9KTtcbiAgICB9XG5cbiAgICBmb3IgKGxldCBpID0gTWF0aC5tYXgoMSwgcGFnZU51bWJlciAtIFNFQ09ORF9QQUdFX05VTUJFUik7IGkgPD0gTWF0aC5taW4odG90YWxQYWdlcywgcGFnZU51bWJlciArIFNFQ09ORF9QQUdFX05VTUJFUik7IGkrKykge1xuICAgICAgY29uc3QgcGFnZUxpbmsgPSBjcmVhdGVQYWdlTGluayhpLnRvU3RyaW5nKCksIGksIGkgPT09IHBhZ2VOdW1iZXIpO1xuICAgICAgaWYgKGkgPT09IHBhZ2VOdW1iZXIpIHtcbiAgICAgICAgcGFnZUxpbmsuYWRkQ2xhc3MoJ2N1cnJlbnQnKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAocGFnZU51bWJlciA8IHRvdGFsUGFnZXMgLSBTRUNPTkRfUEFHRV9OVU1CRVIpIHtcbiAgICAgIHBhZ2luYXRpb25Sb3cxRGl2LmNyZWF0ZUVsKCdzcGFuJywgeyB0ZXh0OiAnLi4uJyB9KTtcbiAgICB9XG5cbiAgICBjcmVhdGVQYWdlTGluaygnTmV4dCcsIHBhZ2VOdW1iZXIgKyAxLCBwYWdlTnVtYmVyID09PSB0b3RhbFBhZ2VzKTtcbiAgICBjcmVhdGVQYWdlTGluaygnTGFzdCcsIHRvdGFsUGFnZXMsIHBhZ2VOdW1iZXIgPT09IHRvdGFsUGFnZXMpO1xuXG4gICAgY29uc3QgcGFnaW5hdGlvblJvdzJEaXYgPSBwYWdpbmF0aW9uRGl2LmNyZWF0ZURpdigpO1xuXG4gICAgcGFnaW5hdGlvblJvdzJEaXYuY3JlYXRlRWwoJ3NwYW4nLCB7IHRleHQ6ICcgSXRlbXMgcGVyIHBhZ2U6ICcgfSk7XG5cbiAgICBjb25zdCBpdGVtc1BlclBhZ2VTZWxlY3QgPSBwYWdpbmF0aW9uUm93MkRpdi5jcmVhdGVFbCgnc2VsZWN0Jyk7XG4gICAgaXRlbXNQZXJQYWdlT3B0aW9ucy5mb3JFYWNoKChvcHRpb246IG51bWJlcik6IHZvaWQgPT4ge1xuICAgICAgaXRlbXNQZXJQYWdlU2VsZWN0LmNyZWF0ZUVsKCdvcHRpb24nLCB7IHRleHQ6IG9wdGlvbi50b1N0cmluZygpLCB2YWx1ZTogb3B0aW9uLnRvU3RyaW5nKCkgfSk7XG4gICAgfSk7XG4gICAgaXRlbXNQZXJQYWdlU2VsZWN0LnZhbHVlID0gaXRlbXNQZXJQYWdlLnRvU3RyaW5nKCk7XG4gICAgaXRlbXNQZXJQYWdlU2VsZWN0LmFkZEV2ZW50TGlzdGVuZXIoXG4gICAgICAnY2hhbmdlJyxcbiAgICAgIGNvbnZlcnRBc3luY1RvU3luYyhhc3luYyAoKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gICAgICAgIGl0ZW1zUGVyUGFnZSA9IHBhcnNlSW50KGl0ZW1zUGVyUGFnZVNlbGVjdC52YWx1ZSwgMTApO1xuICAgICAgICB0b3RhbFBhZ2VzID0gTWF0aC5jZWlsKHJvd3MubGVuZ3RoIC8gaXRlbXNQZXJQYWdlKTtcbiAgICAgICAgYXdhaXQgcmVuZGVyUGFnZSgxKTtcbiAgICAgIH0pXG4gICAgKTtcblxuICAgIHBhZ2luYXRpb25Sb3cyRGl2LmNyZWF0ZUVsKCdzcGFuJywgeyB0ZXh0OiAnICBKdW1wIHRvIHBhZ2U6ICcgfSk7XG5cbiAgICBjb25zdCBqdW1wVG9QYWdlSW5wdXQgPSBwYWdpbmF0aW9uUm93MkRpdi5jcmVhdGVFbCgnaW5wdXQnLCB7IGF0dHI6IHsgbWF4OiB0b3RhbFBhZ2VzLCBtaW46IDEgfSwgdHlwZTogJ251bWJlcicgfSk7XG4gICAganVtcFRvUGFnZUlucHV0LmFkZEV2ZW50TGlzdGVuZXIoXG4gICAgICAna2V5ZG93bicsXG4gICAgICBjb252ZXJ0QXN5bmNUb1N5bmMoYXN5bmMgKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gICAgICAgIGlmIChldmVudC5rZXkgPT09ICdFbnRlcicpIHtcbiAgICAgICAgICBjb25zdCBwYWdlID0gcGFyc2VJbnQoanVtcFRvUGFnZUlucHV0LnZhbHVlLCAxMCk7XG4gICAgICAgICAgaWYgKHBhZ2UgPj0gMSAmJiBwYWdlIDw9IHRvdGFsUGFnZXMpIHtcbiAgICAgICAgICAgIGF3YWl0IHJlbmRlclBhZ2UocGFnZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KVxuICAgICk7XG5cbiAgICBwYWdpbmF0aW9uUm93MkRpdi5jcmVhdGVFbCgnc3BhbicsIHsgdGV4dDogYCAgUGFnZSAke3BhZ2VOdW1iZXIudG9TdHJpbmcoKX0gb2YgJHt0b3RhbFBhZ2VzLnRvU3RyaW5nKCl9LCBUb3RhbCBpdGVtczogJHtyb3dzLmxlbmd0aC50b1N0cmluZygpfWAgfSk7XG5cbiAgICBmdW5jdGlvbiBjcmVhdGVQYWdlTGluayh0ZXh0OiBzdHJpbmcsIGN1cnJlbnRQYWdlTnVtYmVyOiBudW1iZXIsIGRpc2FibGVkID0gZmFsc2UpOiBIVE1MQW5jaG9yRWxlbWVudCB7XG4gICAgICBjb25zdCBsaW5rID0gcGFnaW5hdGlvblJvdzFEaXYuY3JlYXRlRWwoJ2EnLCB7IGNsczogJ3BhZ2UtbGluaycsIGhyZWY6IGAjJHtjdXJyZW50UGFnZU51bWJlci50b1N0cmluZygpfWAsIHRleHQgfSk7XG4gICAgICBpZiAoZGlzYWJsZWQpIHtcbiAgICAgICAgbGluay5hZGRDbGFzcygnZGlzYWJsZWQnKTtcbiAgICAgICAgbGluay5vbmNsaWNrID0gKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCA9PiB7XG4gICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGxpbmsuYWRkRXZlbnRMaXN0ZW5lcihcbiAgICAgICAgICAnY2xpY2snLFxuICAgICAgICAgIGNvbnZlcnRBc3luY1RvU3luYyhhc3luYyAoZXZlbnQ6IE1vdXNlRXZlbnQpOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICBhd2FpdCByZW5kZXJQYWdlKGN1cnJlbnRQYWdlTnVtYmVyKTtcbiAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGxpbms7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgZnVuY3Rpb24gcmVuZGVyUGFnZShwYWdlTnVtYmVyOiBudW1iZXIpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb250YWluZXIuZW1wdHkoKTtcbiAgICBjb250YWluZXIuY3JlYXRlRWwoJ3N0eWxlJywgeyB0ZXh0OiBwYWdpbmF0aW9uQ3NzIH0pO1xuXG4gICAgY29uc3Qgc3RhcnRJbmRleCA9IChwYWdlTnVtYmVyIC0gMSkgKiBpdGVtc1BlclBhZ2U7XG4gICAgY29uc3QgZW5kSW5kZXggPSBzdGFydEluZGV4ICsgaXRlbXNQZXJQYWdlO1xuICAgIGNvbnN0IHJvd3NGb3JDdXJyZW50UGFnZSA9IHJvd3Muc2xpY2Uoc3RhcnRJbmRleCwgZW5kSW5kZXgpO1xuXG4gICAgY29uc3Qgb2xkQ29udGFpbmVyID0gZHYuY29udGFpbmVyO1xuXG4gICAgZHYuY29udGFpbmVyID0gY29udGFpbmVyO1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCByZW5kZXJlcihyb3dzRm9yQ3VycmVudFBhZ2UpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGR2LnBhcmFncmFwaChgXHUyNzRDJHtlcnJvclRvU3RyaW5nKGUpfWApO1xuICAgIH0gZmluYWxseSB7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVxdWlyZS1hdG9taWMtdXBkYXRlc1xuICAgICAgZHYuY29udGFpbmVyID0gb2xkQ29udGFpbmVyO1xuICAgIH1cblxuICAgIGNyZWF0ZVBhZ2luYXRpb25Db250cm9scyhwYWdlTnVtYmVyKTtcbiAgfVxufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7OztBQWlCQSxTQUFTLDBCQUEwQjtBQUNuQztBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsT0FDSztBQUNQO0FBQUEsRUFDRTtBQUFBLEVBQ0E7QUFBQSxPQUNLO0FBQ1AsU0FBUyxpQ0FBaUM7QUF5RjFDLGVBQXNCLHVCQUF1QixJQUFzQztBQUNqRixRQUFNLGFBQWEs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
@@ -1,5 +1,6 @@
1
1
  /**
2
- * @packageDocumentation DataviewLink
2
+ * @packageDocumentation
3
+ *
3
4
  * This module provides utility functions for working with Dataview links in Obsidian
4
5
  */
5
6
  import type { DataviewInlineApi, Link } from './Dataview.mjs';
@@ -24,4 +24,4 @@ export {
24
24
  fixTitle,
25
25
  makeLinkWithPath
26
26
  };
27
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL0RhdGF2aWV3TGluay50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAcGFja2FnZURvY3VtZW50YXRpb24gRGF0YXZpZXdMaW5rXG4gKiBUaGlzIG1vZHVsZSBwcm92aWRlcyB1dGlsaXR5IGZ1bmN0aW9ucyBmb3Igd29ya2luZyB3aXRoIERhdGF2aWV3IGxpbmtzIGluIE9ic2lkaWFuXG4gKi9cblxuaW1wb3J0IHR5cGUge1xuICBEYXRhdmlld0lubGluZUFwaSxcbiAgTGlua1xufSBmcm9tICcuL0RhdGF2aWV3LnRzJztcbmltcG9ydCB0eXBlIHsgUGF0aE9yRmlsZSB9IGZyb20gJy4vRmlsZVN5c3RlbS50cyc7XG5cbmltcG9ydCB7XG4gIGJhc2VuYW1lLFxuICBkaXJuYW1lLFxuICBleHRuYW1lXG59IGZyb20gJy4uL1BhdGgudHMnO1xuaW1wb3J0IHsgZ2V0UGF0aCB9IGZyb20gJy4vRmlsZVN5c3RlbS50cyc7XG5cbi8qKlxuICogRml4ZXMgdGhlIHRpdGxlIG9mIGEgZmlsZSBvciBmb2xkZXIgbm90ZSBieSBnZW5lcmF0aW5nIGEge0BsaW5rIExpbmt9IG9iamVjdCB3aXRoIGEgcHJvcGVyIHRpdGxlLlxuICpcbiAqIEBwYXJhbSBkdiAtIFRoZSBEYXRhdmlld0lubGluZUFwaSBpbnN0YW5jZSB1c2VkIHRvIGNyZWF0ZSB0aGUgZmlsZSBsaW5rLlxuICogQHBhcmFtIHBhdGhPckZpbGUgLSBUaGUgZmlsZSBwYXRoIGZvciB3aGljaCB0aGUgdGl0bGUgaXMgdG8gYmUgZml4ZWQuXG4gKiBAcGFyYW0gaXNGb2xkZXJOb3RlIC0gQSBib29sZWFuIGluZGljYXRpbmcgd2hldGhlciB0aGUgZmlsZSBpcyBhIGZvbGRlciBub3RlLiBEZWZhdWx0cyB0byBgZmFsc2VgLlxuICogSWYgdHJ1ZSwgdGhlIHRpdGxlIGlzIGRlcml2ZWQgZnJvbSB0aGUgZm9sZGVyIG5hbWUuIERlZmF1bHRzIHRvIGBmYWxzZWAuXG4gKiBAcmV0dXJucyBBIExpbmsgb2JqZWN0IHdpdGggdGhlIGNvcnJlY3RlZCB0aXRsZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZpeFRpdGxlKGR2OiBEYXRhdmlld0lubGluZUFwaSwgcGF0aE9yRmlsZTogUGF0aE9yRmlsZSwgaXNGb2xkZXJOb3RlPzogYm9vbGVhbik6IExpbmsge1xuICBjb25zdCBwYXRoID0gZ2V0UGF0aChkdi5hcHAsIHBhdGhPckZpbGUpO1xuICBjb25zdCBleHQgPSBleHRuYW1lKHBhdGgpO1xuICBjb25zdCB0aXRsZSA9IGlzRm9sZGVyTm90ZSA/IGJhc2VuYW1lKGRpcm5hbWUocGF0aCkpIDogYmFzZW5hbWUocGF0aCwgZXh0KTtcbiAgcmV0dXJuIGR2LmZpbGVMaW5rKHBhdGgsIGZhbHNlLCB0aXRsZSk7XG59XG5cbi8qKlxuICogR2VuZXJhdGVzIGEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGEge0BsaW5rIExpbmt9IG9iamVjdCB0aGF0IGluY2x1ZGVzIGJvdGggdGhlIGxpbmsgdGV4dCBhbmQgdGhlIGZpbGUgcGF0aC5cbiAqXG4gKiBAcGFyYW0gbGluayAtIFRoZSBMaW5rIG9iamVjdCB0byBiZSBjb252ZXJ0ZWQgdG8gYSBzdHJpbmcgd2l0aCBpdHMgcGF0aC5cbiAqIEByZXR1cm5zIEEgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgbGluayBpbiB0aGUgZm9ybWF0OiBcImxpbmtUZXh0IChsaW5rUGF0aClcIi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1ha2VMaW5rV2l0aFBhdGgobGluazogTGluayk6IHN0cmluZyB7XG4gIHJldHVybiBgJHtsaW5rLnRvU3RyaW5nKCl9ICgke2xpbmsucGF0aH0pYDtcbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7QUFXQTtBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLE9BQ0s7QUFDUCxTQUFTLGVBQWU7QUFXakIsU0FBUyxTQUFTLElBQXVCLFlBQXdCLGNBQThCO0FBQ3BHLFFBQU0sT0FBTyxRQUFRLEdBQUcsS0FBSyxVQUFVO0FBQ3ZDLFFBQU0sTUFBTSxRQUFRLElBQUk7QUFDeEIsUUFBTSxRQUFRLGVBQWUsU0FBUyxRQUFRLElBQUksQ0FBQyxJQUFJLFNBQVMsTUFBTSxHQUFHO0FBQ3pFLFNBQU8sR0FBRyxTQUFTLE1BQU0sT0FBTyxLQUFLO0FBQ3ZDO0FBUU8sU0FBUyxpQkFBaUIsTUFBb0I7QUFDbkQsU0FBTyxHQUFHLEtBQUssU0FBUyxDQUFDLEtBQUssS0FBSyxJQUFJO0FBQ3pDOyIsCiAgIm5hbWVzIjogW10KfQo=
27
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL0RhdGF2aWV3TGluay50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAcGFja2FnZURvY3VtZW50YXRpb25cbiAqXG4gKiBUaGlzIG1vZHVsZSBwcm92aWRlcyB1dGlsaXR5IGZ1bmN0aW9ucyBmb3Igd29ya2luZyB3aXRoIERhdGF2aWV3IGxpbmtzIGluIE9ic2lkaWFuXG4gKi9cblxuaW1wb3J0IHR5cGUge1xuICBEYXRhdmlld0lubGluZUFwaSxcbiAgTGlua1xufSBmcm9tICcuL0RhdGF2aWV3LnRzJztcbmltcG9ydCB0eXBlIHsgUGF0aE9yRmlsZSB9IGZyb20gJy4vRmlsZVN5c3RlbS50cyc7XG5cbmltcG9ydCB7XG4gIGJhc2VuYW1lLFxuICBkaXJuYW1lLFxuICBleHRuYW1lXG59IGZyb20gJy4uL1BhdGgudHMnO1xuaW1wb3J0IHsgZ2V0UGF0aCB9IGZyb20gJy4vRmlsZVN5c3RlbS50cyc7XG5cbi8qKlxuICogRml4ZXMgdGhlIHRpdGxlIG9mIGEgZmlsZSBvciBmb2xkZXIgbm90ZSBieSBnZW5lcmF0aW5nIGEge0BsaW5rIExpbmt9IG9iamVjdCB3aXRoIGEgcHJvcGVyIHRpdGxlLlxuICpcbiAqIEBwYXJhbSBkdiAtIFRoZSBEYXRhdmlld0lubGluZUFwaSBpbnN0YW5jZSB1c2VkIHRvIGNyZWF0ZSB0aGUgZmlsZSBsaW5rLlxuICogQHBhcmFtIHBhdGhPckZpbGUgLSBUaGUgZmlsZSBwYXRoIGZvciB3aGljaCB0aGUgdGl0bGUgaXMgdG8gYmUgZml4ZWQuXG4gKiBAcGFyYW0gaXNGb2xkZXJOb3RlIC0gQSBib29sZWFuIGluZGljYXRpbmcgd2hldGhlciB0aGUgZmlsZSBpcyBhIGZvbGRlciBub3RlLiBEZWZhdWx0cyB0byBgZmFsc2VgLlxuICogSWYgdHJ1ZSwgdGhlIHRpdGxlIGlzIGRlcml2ZWQgZnJvbSB0aGUgZm9sZGVyIG5hbWUuIERlZmF1bHRzIHRvIGBmYWxzZWAuXG4gKiBAcmV0dXJucyBBIExpbmsgb2JqZWN0IHdpdGggdGhlIGNvcnJlY3RlZCB0aXRsZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZpeFRpdGxlKGR2OiBEYXRhdmlld0lubGluZUFwaSwgcGF0aE9yRmlsZTogUGF0aE9yRmlsZSwgaXNGb2xkZXJOb3RlPzogYm9vbGVhbik6IExpbmsge1xuICBjb25zdCBwYXRoID0gZ2V0UGF0aChkdi5hcHAsIHBhdGhPckZpbGUpO1xuICBjb25zdCBleHQgPSBleHRuYW1lKHBhdGgpO1xuICBjb25zdCB0aXRsZSA9IGlzRm9sZGVyTm90ZSA/IGJhc2VuYW1lKGRpcm5hbWUocGF0aCkpIDogYmFzZW5hbWUocGF0aCwgZXh0KTtcbiAgcmV0dXJuIGR2LmZpbGVMaW5rKHBhdGgsIGZhbHNlLCB0aXRsZSk7XG59XG5cbi8qKlxuICogR2VuZXJhdGVzIGEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGEge0BsaW5rIExpbmt9IG9iamVjdCB0aGF0IGluY2x1ZGVzIGJvdGggdGhlIGxpbmsgdGV4dCBhbmQgdGhlIGZpbGUgcGF0aC5cbiAqXG4gKiBAcGFyYW0gbGluayAtIFRoZSBMaW5rIG9iamVjdCB0byBiZSBjb252ZXJ0ZWQgdG8gYSBzdHJpbmcgd2l0aCBpdHMgcGF0aC5cbiAqIEByZXR1cm5zIEEgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgbGluayBpbiB0aGUgZm9ybWF0OiBcImxpbmtUZXh0IChsaW5rUGF0aClcIi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1ha2VMaW5rV2l0aFBhdGgobGluazogTGluayk6IHN0cmluZyB7XG4gIHJldHVybiBgJHtsaW5rLnRvU3RyaW5nKCl9ICgke2xpbmsucGF0aH0pYDtcbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7QUFZQTtBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLE9BQ0s7QUFDUCxTQUFTLGVBQWU7QUFXakIsU0FBUyxTQUFTLElBQXVCLFlBQXdCLGNBQThCO0FBQ3BHLFFBQU0sT0FBTyxRQUFRLEdBQUcsS0FBSyxVQUFVO0FBQ3ZDLFFBQU0sTUFBTSxRQUFRLElBQUk7QUFDeEIsUUFBTSxRQUFRLGVBQWUsU0FBUyxRQUFRLElBQUksQ0FBQyxJQUFJLFNBQVMsTUFBTSxHQUFHO0FBQ3pFLFNBQU8sR0FBRyxTQUFTLE1BQU0sT0FBTyxLQUFLO0FBQ3ZDO0FBUU8sU0FBUyxpQkFBaUIsTUFBb0I7QUFDbkQsU0FBTyxHQUFHLEtBQUssU0FBUyxDQUFDLEtBQUssS0FBSyxJQUFJO0FBQ3pDOyIsCiAgIm5hbWVzIjogW10KfQo=
@@ -1,5 +1,6 @@
1
1
  /**
2
- * @packageDocumentation FileChange
2
+ * @packageDocumentation
3
+ *
3
4
  * Contains utility types and functions for handling file changes in Obsidian.
4
5
  */
5
6
  import type { App, Reference } from 'obsidian';
@@ -210,4 +210,4 @@ export {
210
210
  isContentChange,
211
211
  isFrontmatterChange
212
212
  };
213
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL0ZpbGVDaGFuZ2UudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQHBhY2thZ2VEb2N1bWVudGF0aW9uIEZpbGVDaGFuZ2VcbiAqIENvbnRhaW5zIHV0aWxpdHkgdHlwZXMgYW5kIGZ1bmN0aW9ucyBmb3IgaGFuZGxpbmcgZmlsZSBjaGFuZ2VzIGluIE9ic2lkaWFuLlxuICovXG5cbmltcG9ydCB0eXBlIHtcbiAgQXBwLFxuICBSZWZlcmVuY2Vcbn0gZnJvbSAnb2JzaWRpYW4nO1xuaW1wb3J0IHR5cGUgeyBDYW52YXNEYXRhIH0gZnJvbSAnb2JzaWRpYW4vQ2FudmFzLmQudHMnO1xuXG5pbXBvcnQgdHlwZSB7IFZhbHVlUHJvdmlkZXIgfSBmcm9tICcuLi9WYWx1ZVByb3ZpZGVyLnRzJztcbmltcG9ydCB0eXBlIHsgUGF0aE9yRmlsZSB9IGZyb20gJy4vRmlsZVN5c3RlbS50cyc7XG5pbXBvcnQgdHlwZSB7IFByb2Nlc3NPcHRpb25zIH0gZnJvbSAnLi9WYXVsdC50cyc7XG5cbmltcG9ydCB7XG4gIGRlZXBFcXVhbCxcbiAgZ2V0TmVzdGVkUHJvcGVydHlWYWx1ZSxcbiAgc2V0TmVzdGVkUHJvcGVydHlWYWx1ZVxufSBmcm9tICcuLi9PYmplY3QudHMnO1xuaW1wb3J0IHsgcmVzb2x2ZVZhbHVlIH0gZnJvbSAnLi4vVmFsdWVQcm92aWRlci50cyc7XG5pbXBvcnQge1xuICBnZXRQYXRoLFxuICBpc0NhbnZhc0ZpbGVcbn0gZnJvbSAnLi9GaWxlU3lzdGVtLnRzJztcbmltcG9ydCB7XG4gIHBhcnNlRnJvbnRtYXR0ZXIsXG4gIHNldEZyb250bWF0dGVyXG59IGZyb20gJy4vRnJvbnRtYXR0ZXIudHMnO1xuaW1wb3J0IHsgcmVmZXJlbmNlVG9GaWxlQ2hhbmdlIH0gZnJvbSAnLi9SZWZlcmVuY2UudHMnO1xuaW1wb3J0IHsgcHJvY2VzcyB9IGZyb20gJy4vVmF1bHQudHMnO1xuXG4vKipcbiAqIFJlcHJlc2VudHMgYSBjYW52YXMgY2hhbmdlIGluIHRoZSBWYXVsdC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDYW52YXNDaGFuZ2UgZXh0ZW5kcyBGaWxlQ2hhbmdlIHtcbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIGNoYW5nZSBpcyBhIGNhbnZhcyBjaGFuZ2UuXG4gICAqL1xuICBpc0NhbnZhczogdHJ1ZTtcblxuICAvKipcbiAgICogVGhlIGluZGV4IG9mIHRoZSBub2RlIGluIHRoZSBjYW52YXMuXG4gICAqL1xuICBub2RlSW5kZXg6IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIHR5cGUgb2YgbGluay5cbiAgICovXG4gIHR5cGU6ICdmaWxlJyB8ICd0ZXh0Jztcbn1cblxuLyoqXG4gKiBSZXByZXNlbnRzIGEgY2hhbmdlIGluIGEgZmlsZSBub2RlIGluIGEgY2FudmFzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENhbnZhc0ZpbGVOb2RlQ2hhbmdlIGV4dGVuZHMgQ2FudmFzQ2hhbmdlIHtcbiAgLyoqXG4gICAqIFRoZSB0eXBlIG9mIGxpbmsuXG4gICAqL1xuICB0eXBlOiAnZmlsZSc7XG59XG5cbi8qKlxuICogUmVwcmVzZW50cyBhIGNoYW5nZSBpbiBhIHRleHQgbm9kZSBpbiBhIGNhbnZhcy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDYW52YXNUZXh0Tm9kZUNoYW5nZSBleHRlbmRzIENhbnZhc0NoYW5nZSB7XG4gIC8qKlxuICAgKiBUaGUgb3JpZ2luYWwgcmVmZXJlbmNlLlxuICAgKi9cbiAgb3JpZ2luYWxSZWZlcmVuY2U6IFJlZmVyZW5jZTtcblxuICAvKipcbiAgICogVGhlIHR5cGUgb2YgbGluay5cbiAgICovXG4gIHR5cGU6ICd0ZXh0Jztcbn1cblxuLyoqXG4gKiBSZXByZXNlbnRzIGEgY29udGVudCBib2R5IGNoYW5nZSBpbiB0aGUgVmF1bHQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29udGVudENoYW5nZSBleHRlbmRzIEZpbGVDaGFuZ2Uge1xuICAvKipcbiAgICogVGhlIGVuZCBpbmRleCBvZiB0aGUgY2hhbmdlIGluIHRoZSBmaWxlIGNvbnRlbnQuXG4gICAqL1xuICBlbmRJbmRleDogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBUaGUgc3RhcnQgaW5kZXggb2YgdGhlIGNoYW5nZSBpbiB0aGUgZmlsZSBjb250ZW50LlxuICAgKi9cbiAgc3RhcnRJbmRleDogbnVtYmVyO1xufVxuXG4vKipcbiAqIFJlcHJlc2VudHMgYSBmaWxlIGNoYW5nZSBpbiB0aGUgVmF1bHQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmlsZUNoYW5nZSB7XG4gIC8qKlxuICAgKiBUaGUgbmV3IGNvbnRlbnQgdG8gcmVwbGFjZSB0aGUgb2xkIGNvbnRlbnQuXG4gICAqL1xuICBuZXdDb250ZW50OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBvbGQgY29udGVudCB0aGF0IHdpbGwgYmUgcmVwbGFjZWQuXG4gICAqL1xuICBvbGRDb250ZW50OiBzdHJpbmc7XG59XG5cbi8qKlxuICogUmVwcmVzZW50cyBhIGZyb250bWF0dGVyIGNoYW5nZSBpbiB0aGUgVmF1bHQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRnJvbnRtYXR0ZXJDaGFuZ2UgZXh0ZW5kcyBGaWxlQ2hhbmdlIHtcbiAgLyoqXG4gICAqIFRoZSBrZXkgaW4gdGhlIGZyb250bWF0dGVyIHRvIHVzZSBmb3IgdGhlIGxpbmsuXG4gICAqL1xuICBmcm9udG1hdHRlcktleTogc3RyaW5nO1xufVxuXG4vKipcbiAqIEFwcGxpZXMgYSBzZXJpZXMgb2YgY29udGVudCBjaGFuZ2VzIHRvIHRoZSBzcGVjaWZpZWQgY29udGVudC5cbiAqXG4gKiBAcGFyYW0gY29udGVudCAtIFRoZSBjb250ZW50IHRvIHdoaWNoIHRoZSBjaGFuZ2VzIHNob3VsZCBiZSBhcHBsaWVkLlxuICogQHBhcmFtIHBhdGggLSBUaGUgcGF0aCB0byB3aGljaCB0aGUgY2hhbmdlcyBzaG91bGQgYmUgYXBwbGllZC5cbiAqIEBwYXJhbSBjaGFuZ2VzUHJvdmlkZXIgLSBBIHByb3ZpZGVyIHRoYXQgcmV0dXJucyBhbiBhcnJheSBvZiBjb250ZW50IGNoYW5nZXMgdG8gYXBwbHkuXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHRvIHRoZSB1cGRhdGVkIGNvbnRlbnQgb3IgdG8gYG51bGxgIGlmIHVwZGF0ZSBkaWRuJ3Qgc3VjY2VlZC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGFwcGx5Q29udGVudENoYW5nZXMoY29udGVudDogc3RyaW5nLCBwYXRoOiBzdHJpbmcsIGNoYW5nZXNQcm92aWRlcjogVmFsdWVQcm92aWRlcjxGaWxlQ2hhbmdlW10+KTogUHJvbWlzZTxudWxsIHwgc3RyaW5nPiB7XG4gIGxldCBjaGFuZ2VzID0gYXdhaXQgcmVzb2x2ZVZhbHVlKGNoYW5nZXNQcm92aWRlcik7XG4gIGNvbnN0IGZyb250bWF0dGVyID0gcGFyc2VGcm9udG1hdHRlcihjb250ZW50KTtcblxuICBmb3IgKGNvbnN0IGNoYW5nZSBvZiBjaGFuZ2VzKSB7XG4gICAgaWYgKGlzQ29udGVudENoYW5nZShjaGFuZ2UpKSB7XG4gICAgICBjb25zdCBhY3R1YWxDb250ZW50ID0gY29udGVudC5zbGljZShjaGFuZ2Uuc3RhcnRJbmRleCwgY2hhbmdlLmVuZEluZGV4KTtcbiAgICAgIGlmIChhY3R1YWxDb250ZW50ICE9PSBjaGFuZ2Uub2xkQ29udGVudCkge1xuICAgICAgICBjb25zb2xlLndhcm4oJ0NvbnRlbnQgbWlzbWF0Y2gnLCB7XG4gICAgICAgICAgYWN0dWFsQ29udGVudCxcbiAgICAgICAgICBlbmRJbmRleDogY2hhbmdlLmVuZEluZGV4LFxuICAgICAgICAgIGV4cGVjdGVkQ29udGVudDogY2hhbmdlLm9sZENvbnRlbnQsXG4gICAgICAgICAgcGF0aCxcbiAgICAgICAgICBzdGFydEluZGV4OiBjaGFuZ2Uuc3RhcnRJbmRleFxuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGlzRnJvbnRtYXR0ZXJDaGFuZ2UoY2hhbmdlKSkge1xuICAgICAgY29uc3QgYWN0dWFsQ29udGVudCA9IGdldE5lc3RlZFByb3BlcnR5VmFsdWUoZnJvbnRtYXR0ZXIsIGNoYW5nZS5mcm9udG1hdHRlcktleSk7XG4gICAgICBpZiAoYWN0dWFsQ29udGVudCAhPT0gY2hhbmdlLm9sZENvbnRlbnQpIHtcbiAgICAgICAgY29uc29sZS53YXJuKCdDb250ZW50IG1pc21hdGNoJywge1xuICAgICAgICAgIGFjdHVhbENvbnRlbnQsXG4gICAgICAgICAgZXhwZWN0ZWRDb250ZW50OiBjaGFuZ2Uub2xkQ29udGVudCxcbiAgICAgICAgICBmcm9udG1hdHRlcktleTogY2hhbmdlLmZyb250bWF0dGVyS2V5LFxuICAgICAgICAgIHBhdGhcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgY2hhbmdlcy5zb3J0KChhLCBiKSA9PiB7XG4gICAgaWYgKGlzQ29udGVudENoYW5nZShhKSAmJiBpc0NvbnRlbnRDaGFuZ2UoYikpIHtcbiAgICAgIHJldHVybiBhLnN0YXJ0SW5kZXggLSBiLnN0YXJ0SW5kZXg7XG4gICAgfVxuXG4gICAgaWYgKGlzRnJvbnRtYXR0ZXJDaGFuZ2UoYSkgJiYgaXNGcm9udG1hdHRlckNoYW5nZShiKSkge1xuICAgICAgcmV0dXJuIGEuZnJvbnRtYXR0ZXJLZXkubG9jYWxlQ29tcGFyZShiLmZyb250bWF0dGVyS2V5KTtcbiAgICB9XG5cbiAgICByZXR1cm4gaXNDb250ZW50Q2hhbmdlKGEpID8gLTEgOiAxO1xuICB9KTtcblxuICAvLyBCVUc6IGh0dHBzOi8vZm9ydW0ub2JzaWRpYW4ubWQvdC9idWctZHVwbGljYXRlZC1saW5rcy1pbi1tZXRhZGF0YWNhY2hlLWluc2lkZS1mb290bm90ZXMvODU1NTFcbiAgY2hhbmdlcyA9IGNoYW5nZXMuZmlsdGVyKChjaGFuZ2UsIGluZGV4KSA9PiB7XG4gICAgaWYgKGNoYW5nZS5vbGRDb250ZW50ID09PSBjaGFuZ2UubmV3Q29udGVudCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBpZiAoaW5kZXggPT09IDApIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gIWRlZXBFcXVhbChjaGFuZ2UsIGNoYW5nZXNbaW5kZXggLSAxXSk7XG4gIH0pO1xuXG4gIGZvciAobGV0IGkgPSAxOyBpIDwgY2hhbmdlcy5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IGNoYW5nZSA9IGNoYW5nZXNbaV07XG4gICAgaWYgKCFjaGFuZ2UpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICBjb25zdCBwcmV2aW91c0NoYW5nZSA9IGNoYW5nZXNbaSAtIDFdO1xuICAgIGlmICghcHJldmlvdXNDaGFuZ2UpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGlmIChcbiAgICAgIGlzQ29udGVudENoYW5nZShwcmV2aW91c0NoYW5nZSkgJiYgaXNDb250ZW50Q2hhbmdlKGNoYW5nZSkgJiYgcHJldmlvdXNDaGFuZ2UuZW5kSW5kZXggJiYgY2hhbmdlLnN0YXJ0SW5kZXhcbiAgICAgICYmIHByZXZpb3VzQ2hhbmdlLmVuZEluZGV4ID4gY2hhbmdlLnN0YXJ0SW5kZXhcbiAgICApIHtcbiAgICAgIGNvbnNvbGUud2FybignT3ZlcmxhcHBpbmcgY2hhbmdlcycsIHtcbiAgICAgICAgY2hhbmdlLFxuICAgICAgICBwcmV2aW91c0NoYW5nZVxuICAgICAgfSk7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1cblxuICBsZXQgbmV3Q29udGVudCA9ICcnO1xuICBsZXQgbGFzdEluZGV4ID0gMDtcbiAgbGV0IGZyb250bWF0dGVyQ2hhbmdlZCA9IGZhbHNlO1xuXG4gIGZvciAoY29uc3QgY2hhbmdlIG9mIGNoYW5nZXMpIHtcbiAgICBpZiAoaXNDb250ZW50Q2hhbmdlKGNoYW5nZSkpIHtcbiAgICAgIG5ld0NvbnRlbnQgKz0gY29udGVudC5zbGljZShsYXN0SW5kZXgsIGNoYW5nZS5zdGFydEluZGV4KTtcbiAgICAgIG5ld0NvbnRlbnQgKz0gY2hhbmdlLm5ld0NvbnRlbnQ7XG4gICAgICBsYXN0SW5kZXggPSBjaGFuZ2UuZW5kSW5kZXg7XG4gICAgfSBlbHNlIGlmIChpc0Zyb250bWF0dGVyQ2hhbmdlKGNoYW5nZSkpIHtcbiAgICAgIHNldE5lc3RlZFByb3BlcnR5VmFsdWUoZnJvbnRtYXR0ZXIsIGNoYW5nZS5mcm9udG1hdHRlcktleSwgY2hhbmdlLm5ld0NvbnRlbnQpO1xuICAgICAgZnJvbnRtYXR0ZXJDaGFuZ2VkID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBuZXdDb250ZW50ICs9IGNvbnRlbnQuc2xpY2UobGFzdEluZGV4KTtcbiAgaWYgKGZyb250bWF0dGVyQ2hhbmdlZCkge1xuICAgIG5ld0NvbnRlbnQgPSBzZXRGcm9udG1hdHRlcihuZXdDb250ZW50LCBmcm9udG1hdHRlcik7XG4gIH1cblxuICByZXR1cm4gbmV3Q29udGVudDtcbn1cblxuLyoqXG4gKiBBcHBsaWVzIGEgc2VyaWVzIG9mIGZpbGUgY2hhbmdlcyB0byB0aGUgc3BlY2lmaWVkIGZpbGUgb3IgcGF0aCB3aXRoaW4gdGhlIGFwcGxpY2F0aW9uLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgYXBwbGljYXRpb24gaW5zdGFuY2Ugd2hlcmUgdGhlIGZpbGUgY2hhbmdlcyB3aWxsIGJlIGFwcGxpZWQuXG4gKiBAcGFyYW0gcGF0aE9yRmlsZSAtIFRoZSBwYXRoIG9yIGZpbGUgdG8gd2hpY2ggdGhlIGNoYW5nZXMgc2hvdWxkIGJlIGFwcGxpZWQuXG4gKiBAcGFyYW0gY2hhbmdlc1Byb3ZpZGVyIC0gQSBwcm92aWRlciB0aGF0IHJldHVybnMgYW4gYXJyYXkgb2YgZmlsZSBjaGFuZ2VzIHRvIGFwcGx5LlxuICogQHBhcmFtIHByb2Nlc3NPcHRpb25zIC0gT3B0aW9uYWwgb3B0aW9ucyBmb3IgcHJvY2Vzc2luZy9yZXRyeWluZyB0aGUgb3BlcmF0aW9uLlxuICpcbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgZmlsZSBjaGFuZ2VzIGhhdmUgYmVlbiBzdWNjZXNzZnVsbHkgYXBwbGllZC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGFwcGx5RmlsZUNoYW5nZXMoXG4gIGFwcDogQXBwLFxuICBwYXRoT3JGaWxlOiBQYXRoT3JGaWxlLFxuICBjaGFuZ2VzUHJvdmlkZXI6IFZhbHVlUHJvdmlkZXI8RmlsZUNoYW5nZVtdPixcbiAgcHJvY2Vzc09wdGlvbnM6IFByb2Nlc3NPcHRpb25zID0ge31cbik6IFByb21pc2U8dm9pZD4ge1xuICBhd2FpdCBwcm9jZXNzKGFwcCwgcGF0aE9yRmlsZSwgYXN5bmMgKGNvbnRlbnQpID0+IHtcbiAgICBpZiAoaXNDYW52YXNGaWxlKGFwcCwgcGF0aE9yRmlsZSkpIHtcbiAgICAgIHJldHVybiBhcHBseUNhbnZhc0NoYW5nZXMoY29udGVudCwgZ2V0UGF0aChhcHAsIHBhdGhPckZpbGUpLCBjaGFuZ2VzUHJvdmlkZXIpO1xuICAgIH1cblxuICAgIHJldHVybiBhd2FpdCBhcHBseUNvbnRlbnRDaGFuZ2VzKGNvbnRlbnQsIGdldFBhdGgoYXBwLCBwYXRoT3JGaWxlKSwgY2hhbmdlc1Byb3ZpZGVyKTtcbiAgfSwgcHJvY2Vzc09wdGlvbnMpO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiBhIGZpbGUgY2hhbmdlIGlzIGEgY2FudmFzIGNoYW5nZS5cbiAqXG4gKiBAcGFyYW0gY2hhbmdlIC0gVGhlIGZpbGUgY2hhbmdlIHRvIGNoZWNrLlxuICogQHJldHVybnMgV2hldGhlciB0aGUgZmlsZSBjaGFuZ2UgaXMgYSBjYW52YXMgY2hhbmdlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNDYW52YXNDaGFuZ2UoY2hhbmdlOiBGaWxlQ2hhbmdlKTogY2hhbmdlIGlzIENhbnZhc0NoYW5nZSB7XG4gIHJldHVybiAhIShjaGFuZ2UgYXMgUGFydGlhbDxDYW52YXNDaGFuZ2U+KS5pc0NhbnZhcztcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgYSBmaWxlIGNoYW5nZSBpcyBhIGNhbnZhcyBmaWxlIG5vZGUgY2hhbmdlLlxuICpcbiAqIEBwYXJhbSBjaGFuZ2UgLSBUaGUgZmlsZSBjaGFuZ2UgdG8gY2hlY2suXG4gKiBAcmV0dXJucyBXaGV0aGVyIHRoZSBmaWxlIGNoYW5nZSBpcyBhIGNhbnZhcyBmaWxlIG5vZGUgY2hhbmdlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNDYW52YXNGaWxlTm9kZUNoYW5nZShjaGFuZ2U6IEZpbGVDaGFuZ2UpOiBjaGFuZ2UgaXMgQ2FudmFzRmlsZU5vZGVDaGFuZ2Uge1xuICByZXR1cm4gaXNDYW52YXNDaGFuZ2UoY2hhbmdlKSAmJiBjaGFuZ2UudHlwZSA9PT0gJ2ZpbGUnO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiBhIGZpbGUgY2hhbmdlIGlzIGEgY2FudmFzIHRleHQgbm9kZSBjaGFuZ2UuXG4gKlxuICogQHBhcmFtIGNoYW5nZSAtIFRoZSBmaWxlIGNoYW5nZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIFdoZXRoZXIgdGhlIGZpbGUgY2hhbmdlIGlzIGEgY2FudmFzIHRleHQgbm9kZSBjaGFuZ2UuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0NhbnZhc1RleHROb2RlQ2hhbmdlKGNoYW5nZTogRmlsZUNoYW5nZSk6IGNoYW5nZSBpcyBDYW52YXNUZXh0Tm9kZUNoYW5nZSB7XG4gIHJldHVybiBpc0NhbnZhc0NoYW5nZShjaGFuZ2UpICYmIGNoYW5nZS50eXBlID09PSAndGV4dCc7XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIGEgZmlsZSBjaGFuZ2UgaXMgYSBjb250ZW50IGNoYW5nZS5cbiAqXG4gKiBAcGFyYW0gZmlsZUNoYW5nZSAtIFRoZSBmaWxlIGNoYW5nZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIEEgYm9vbGVhbiBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIGZpbGUgY2hhbmdlIGlzIGEgY29udGVudCBjaGFuZ2UuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0NvbnRlbnRDaGFuZ2UoZmlsZUNoYW5nZTogRmlsZUNoYW5nZSk6IGZpbGVDaGFuZ2UgaXMgQ29udGVudENoYW5nZSB7XG4gIHJldHVybiAoZmlsZUNoYW5nZSBhcyBQYXJ0aWFsPENvbnRlbnRDaGFuZ2U+KS5zdGFydEluZGV4ICE9PSB1bmRlZmluZWQ7XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIGEgZmlsZSBjaGFuZ2UgaXMgYSBmcm9udG1hdHRlciBjaGFuZ2UuXG4gKlxuICogQHBhcmFtIGZpbGVDaGFuZ2UgLSBUaGUgZmlsZSBjaGFuZ2UgdG8gY2hlY2suXG4gKiBAcmV0dXJucyBBIGJvb2xlYW4gaW5kaWNhdGluZyB3aGV0aGVyIHRoZSBmaWxlIGNoYW5nZSBpcyBhIGZyb250bWF0dGVyIGNoYW5nZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzRnJvbnRtYXR0ZXJDaGFuZ2UoZmlsZUNoYW5nZTogRmlsZUNoYW5nZSk6IGZpbGVDaGFuZ2UgaXMgRnJvbnRtYXR0ZXJDaGFuZ2Uge1xuICByZXR1cm4gKGZpbGVDaGFuZ2UgYXMgUGFydGlhbDxGcm9udG1hdHRlckNoYW5nZT4pLmZyb250bWF0dGVyS2V5ICE9PSB1bmRlZmluZWQ7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGFwcGx5Q2FudmFzQ2hhbmdlcyhjb250ZW50OiBzdHJpbmcsIHBhdGg6IHN0cmluZywgY2hhbmdlc1Byb3ZpZGVyOiBWYWx1ZVByb3ZpZGVyPEZpbGVDaGFuZ2VbXT4pOiBQcm9taXNlPG51bGwgfCBzdHJpbmc+IHtcbiAgY29uc3QgY2hhbmdlcyA9IGF3YWl0IHJlc29sdmVWYWx1ZShjaGFuZ2VzUHJvdmlkZXIpO1xuICBjb25zdCBjYW52YXNEYXRhID0gcGFyc2VKc29uU2FmZShjb250ZW50KSBhcyBDYW52YXNEYXRhO1xuXG4gIGNvbnN0IGNhbnZhc1RleHRDaGFuZ2VzID0gbmV3IE1hcDxudW1iZXIsIENhbnZhc1RleHROb2RlQ2hhbmdlW10+KCk7XG5cbiAgZm9yIChjb25zdCBjaGFuZ2Ugb2YgY2hhbmdlcykge1xuICAgIGlmICghaXNDYW52YXNDaGFuZ2UoY2hhbmdlKSkge1xuICAgICAgY29uc29sZS53YXJuKCdPbmx5IGNhbnZhcyBjaGFuZ2VzIGFyZSBzdXBwb3J0ZWQgZm9yIGNhbnZhcyBmaWxlcycsIHtcbiAgICAgICAgY2hhbmdlLFxuICAgICAgICBwYXRoXG4gICAgICB9KTtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGNvbnN0IG5vZGUgPSBjYW52YXNEYXRhLm5vZGVzW2NoYW5nZS5ub2RlSW5kZXhdO1xuICAgIGlmICghbm9kZSkge1xuICAgICAgY29uc29sZS53YXJuKCdOb2RlIG5vdCBmb3VuZCcsIHtcbiAgICAgICAgbm9kZUluZGV4OiBjaGFuZ2Uubm9kZUluZGV4LFxuICAgICAgICBwYXRoXG4gICAgICB9KTtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGlmIChpc0NhbnZhc0ZpbGVOb2RlQ2hhbmdlKGNoYW5nZSkpIHtcbiAgICAgIGlmIChub2RlLmZpbGUgIT09IGNoYW5nZS5vbGRDb250ZW50KSB7XG4gICAgICAgIGNvbnNvbGUud2FybignQ29udGVudCBtaXNtYXRjaCcsIHtcbiAgICAgICAgICBhY3R1YWxDb250ZW50OiBub2RlLmZpbGUgYXMgc3RyaW5nIHwgdW5kZWZpbmVkLFxuICAgICAgICAgIGV4cGVjdGVkQ29udGVudDogY2hhbmdlLm9sZENvbnRlbnQsXG4gICAgICAgICAgbm9kZUluZGV4OiBjaGFuZ2Uubm9kZUluZGV4LFxuICAgICAgICAgIHBhdGgsXG4gICAgICAgICAgdHlwZTogJ2ZpbGUnXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuICAgICAgbm9kZS5maWxlID0gY2hhbmdlLm5ld0NvbnRlbnQ7XG4gICAgfSBlbHNlIGlmIChpc0NhbnZhc1RleHROb2RlQ2hhbmdlKGNoYW5nZSkpIHtcbiAgICAgIGxldCBjYW52YXNUZXh0Q2hhbmdlc0Zvck5vZGUgPSBjYW52YXNUZXh0Q2hhbmdlcy5nZXQoY2hhbmdlLm5vZGVJbmRleCk7XG4gICAgICBpZiAoIWNhbnZhc1RleHRDaGFuZ2VzRm9yTm9kZSkge1xuICAgICAgICBjYW52YXNUZXh0Q2hhbmdlc0Zvck5vZGUgPSBbXTtcbiAgICAgICAgY2FudmFzVGV4dENoYW5nZXMuc2V0KGNoYW5nZS5ub2RlSW5kZXgsIGNhbnZhc1RleHRDaGFuZ2VzRm9yTm9kZSk7XG4gICAgICB9XG5cbiAgICAgIGNhbnZhc1RleHRDaGFuZ2VzRm9yTm9kZS5wdXNoKGNoYW5nZSk7XG4gICAgfVxuICB9XG5cbiAgZm9yIChjb25zdCBbbm9kZUluZGV4LCBjYW52YXNUZXh0Q2hhbmdlc0Zvck5vZGVdIG9mIGNhbnZhc1RleHRDaGFuZ2VzLmVudHJpZXMoKSkge1xuICAgIGNvbnN0IG5vZGUgPSBjYW52YXNEYXRhLm5vZGVzW25vZGVJbmRleF07XG4gICAgaWYgKCFub2RlKSB7XG4gICAgICBjb25zb2xlLndhcm4oJ05vZGUgbm90IGZvdW5kJywge1xuICAgICAgICBub2RlSW5kZXgsXG4gICAgICAgIHBhdGhcbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIG5vZGUudGV4dCAhPT0gJ3N0cmluZycpIHtcbiAgICAgIGNvbnNvbGUud2FybignTm9kZSB0ZXh0IGlzIG5vdCBhIHN0cmluZycsIHtcbiAgICAgICAgbm9kZUluZGV4LFxuICAgICAgICBwYXRoXG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgY29uc3QgY29udGVudENoYW5nZXMgPSBjYW52YXNUZXh0Q2hhbmdlc0Zvck5vZGUubWFwKChjaGFuZ2UpID0+IHJlZmVyZW5jZVRvRmlsZUNoYW5nZShjaGFuZ2Uub3JpZ2luYWxSZWZlcmVuY2UsIGNoYW5nZS5uZXdDb250ZW50KSk7XG4gICAgbm9kZS50ZXh0ID0gYXdhaXQgYXBwbHlDb250ZW50Q2hhbmdlcyhub2RlLnRleHQsIGAke3BhdGh9Lm5vZGUke25vZGVJbmRleC50b1N0cmluZygpfS5WSVJUVUFMX0ZJTEUubWRgLCBjb250ZW50Q2hhbmdlcyk7XG4gIH1cblxuICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoY2FudmFzRGF0YSwgbnVsbCwgJ1xcdCcpO1xufVxuXG5mdW5jdGlvbiBwYXJzZUpzb25TYWZlKGNvbnRlbnQ6IHN0cmluZyk6IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHtcbiAgbGV0IHBhcnNlZDogdW5rbm93bjtcbiAgdHJ5IHtcbiAgICBwYXJzZWQgPSBKU09OLnBhcnNlKGNvbnRlbnQpO1xuICB9IGNhdGNoIHtcbiAgICBwYXJzZWQgPSBudWxsO1xuICB9XG5cbiAgaWYgKHBhcnNlZCA9PT0gbnVsbCB8fCB0eXBlb2YgcGFyc2VkICE9PSAnb2JqZWN0Jykge1xuICAgIHBhcnNlZCA9IHt9O1xuICB9XG5cbiAgcmV0dXJuIHBhcnNlZCBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7QUFlQTtBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLE9BQ0s7QUFDUCxTQUFTLG9CQUFvQjtBQUM3QjtBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsT0FDSztBQUNQO0FBQUEsRUFDRTtBQUFBLEVBQ0E7QUFBQSxPQUNLO0FBQ1AsU0FBUyw2QkFBNkI7QUFDdEMsU0FBUyxlQUFlO0FBK0Z4QixlQUFzQixvQkFBb0IsU0FBaUIsTUFBYyxpQkFBc0U7QUFDN0ksTUFBSSxVQUFVLE1BQU0sYUFBYSxlQUFlO0FBQ2hELFFBQU0sY0FBYyxpQkFBaUIsT0FBTztBQUU1QyxhQUFXLFVBQVUsU0FBUztBQUM1QixRQUFJLGdCQUFnQixNQUFNLEdBQUc7QUFDM0IsWUFBTSxnQkFBZ0IsUUFBUSxNQUFNLE9BQU8sWUFBWSxPQUFPLFFBQVE7QUFDdEUsVUFBSSxrQkFBa0IsT0FBTyxZQUFZO0FBQ3ZDLGdCQUFRLEtBQUssb0JBQW9CO0FBQUEsVUFDL0I7QUFBQSxVQUNBLFVBQVUsT0FBTztBQUFBLFVBQ2pC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
213
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL0ZpbGVDaGFuZ2UudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQHBhY2thZ2VEb2N1bWVudGF0aW9uXG4gKlxuICogQ29udGFpbnMgdXRpbGl0eSB0eXBlcyBhbmQgZnVuY3Rpb25zIGZvciBoYW5kbGluZyBmaWxlIGNoYW5nZXMgaW4gT2JzaWRpYW4uXG4gKi9cblxuaW1wb3J0IHR5cGUge1xuICBBcHAsXG4gIFJlZmVyZW5jZVxufSBmcm9tICdvYnNpZGlhbic7XG5pbXBvcnQgdHlwZSB7IENhbnZhc0RhdGEgfSBmcm9tICdvYnNpZGlhbi9DYW52YXMuZC50cyc7XG5cbmltcG9ydCB0eXBlIHsgVmFsdWVQcm92aWRlciB9IGZyb20gJy4uL1ZhbHVlUHJvdmlkZXIudHMnO1xuaW1wb3J0IHR5cGUgeyBQYXRoT3JGaWxlIH0gZnJvbSAnLi9GaWxlU3lzdGVtLnRzJztcbmltcG9ydCB0eXBlIHsgUHJvY2Vzc09wdGlvbnMgfSBmcm9tICcuL1ZhdWx0LnRzJztcblxuaW1wb3J0IHtcbiAgZGVlcEVxdWFsLFxuICBnZXROZXN0ZWRQcm9wZXJ0eVZhbHVlLFxuICBzZXROZXN0ZWRQcm9wZXJ0eVZhbHVlXG59IGZyb20gJy4uL09iamVjdC50cyc7XG5pbXBvcnQgeyByZXNvbHZlVmFsdWUgfSBmcm9tICcuLi9WYWx1ZVByb3ZpZGVyLnRzJztcbmltcG9ydCB7XG4gIGdldFBhdGgsXG4gIGlzQ2FudmFzRmlsZVxufSBmcm9tICcuL0ZpbGVTeXN0ZW0udHMnO1xuaW1wb3J0IHtcbiAgcGFyc2VGcm9udG1hdHRlcixcbiAgc2V0RnJvbnRtYXR0ZXJcbn0gZnJvbSAnLi9Gcm9udG1hdHRlci50cyc7XG5pbXBvcnQgeyByZWZlcmVuY2VUb0ZpbGVDaGFuZ2UgfSBmcm9tICcuL1JlZmVyZW5jZS50cyc7XG5pbXBvcnQgeyBwcm9jZXNzIH0gZnJvbSAnLi9WYXVsdC50cyc7XG5cbi8qKlxuICogUmVwcmVzZW50cyBhIGNhbnZhcyBjaGFuZ2UgaW4gdGhlIFZhdWx0LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENhbnZhc0NoYW5nZSBleHRlbmRzIEZpbGVDaGFuZ2Uge1xuICAvKipcbiAgICogV2hldGhlciB0aGUgY2hhbmdlIGlzIGEgY2FudmFzIGNoYW5nZS5cbiAgICovXG4gIGlzQ2FudmFzOiB0cnVlO1xuXG4gIC8qKlxuICAgKiBUaGUgaW5kZXggb2YgdGhlIG5vZGUgaW4gdGhlIGNhbnZhcy5cbiAgICovXG4gIG5vZGVJbmRleDogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBUaGUgdHlwZSBvZiBsaW5rLlxuICAgKi9cbiAgdHlwZTogJ2ZpbGUnIHwgJ3RleHQnO1xufVxuXG4vKipcbiAqIFJlcHJlc2VudHMgYSBjaGFuZ2UgaW4gYSBmaWxlIG5vZGUgaW4gYSBjYW52YXMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ2FudmFzRmlsZU5vZGVDaGFuZ2UgZXh0ZW5kcyBDYW52YXNDaGFuZ2Uge1xuICAvKipcbiAgICogVGhlIHR5cGUgb2YgbGluay5cbiAgICovXG4gIHR5cGU6ICdmaWxlJztcbn1cblxuLyoqXG4gKiBSZXByZXNlbnRzIGEgY2hhbmdlIGluIGEgdGV4dCBub2RlIGluIGEgY2FudmFzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENhbnZhc1RleHROb2RlQ2hhbmdlIGV4dGVuZHMgQ2FudmFzQ2hhbmdlIHtcbiAgLyoqXG4gICAqIFRoZSBvcmlnaW5hbCByZWZlcmVuY2UuXG4gICAqL1xuICBvcmlnaW5hbFJlZmVyZW5jZTogUmVmZXJlbmNlO1xuXG4gIC8qKlxuICAgKiBUaGUgdHlwZSBvZiBsaW5rLlxuICAgKi9cbiAgdHlwZTogJ3RleHQnO1xufVxuXG4vKipcbiAqIFJlcHJlc2VudHMgYSBjb250ZW50IGJvZHkgY2hhbmdlIGluIHRoZSBWYXVsdC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb250ZW50Q2hhbmdlIGV4dGVuZHMgRmlsZUNoYW5nZSB7XG4gIC8qKlxuICAgKiBUaGUgZW5kIGluZGV4IG9mIHRoZSBjaGFuZ2UgaW4gdGhlIGZpbGUgY29udGVudC5cbiAgICovXG4gIGVuZEluZGV4OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFRoZSBzdGFydCBpbmRleCBvZiB0aGUgY2hhbmdlIGluIHRoZSBmaWxlIGNvbnRlbnQuXG4gICAqL1xuICBzdGFydEluZGV4OiBudW1iZXI7XG59XG5cbi8qKlxuICogUmVwcmVzZW50cyBhIGZpbGUgY2hhbmdlIGluIHRoZSBWYXVsdC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGaWxlQ2hhbmdlIHtcbiAgLyoqXG4gICAqIFRoZSBuZXcgY29udGVudCB0byByZXBsYWNlIHRoZSBvbGQgY29udGVudC5cbiAgICovXG4gIG5ld0NvbnRlbnQ6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIG9sZCBjb250ZW50IHRoYXQgd2lsbCBiZSByZXBsYWNlZC5cbiAgICovXG4gIG9sZENvbnRlbnQ6IHN0cmluZztcbn1cblxuLyoqXG4gKiBSZXByZXNlbnRzIGEgZnJvbnRtYXR0ZXIgY2hhbmdlIGluIHRoZSBWYXVsdC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGcm9udG1hdHRlckNoYW5nZSBleHRlbmRzIEZpbGVDaGFuZ2Uge1xuICAvKipcbiAgICogVGhlIGtleSBpbiB0aGUgZnJvbnRtYXR0ZXIgdG8gdXNlIGZvciB0aGUgbGluay5cbiAgICovXG4gIGZyb250bWF0dGVyS2V5OiBzdHJpbmc7XG59XG5cbi8qKlxuICogQXBwbGllcyBhIHNlcmllcyBvZiBjb250ZW50IGNoYW5nZXMgdG8gdGhlIHNwZWNpZmllZCBjb250ZW50LlxuICpcbiAqIEBwYXJhbSBjb250ZW50IC0gVGhlIGNvbnRlbnQgdG8gd2hpY2ggdGhlIGNoYW5nZXMgc2hvdWxkIGJlIGFwcGxpZWQuXG4gKiBAcGFyYW0gcGF0aCAtIFRoZSBwYXRoIHRvIHdoaWNoIHRoZSBjaGFuZ2VzIHNob3VsZCBiZSBhcHBsaWVkLlxuICogQHBhcmFtIGNoYW5nZXNQcm92aWRlciAtIEEgcHJvdmlkZXIgdGhhdCByZXR1cm5zIGFuIGFycmF5IG9mIGNvbnRlbnQgY2hhbmdlcyB0byBhcHBseS5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgdG8gdGhlIHVwZGF0ZWQgY29udGVudCBvciB0byBgbnVsbGAgaWYgdXBkYXRlIGRpZG4ndCBzdWNjZWVkLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gYXBwbHlDb250ZW50Q2hhbmdlcyhjb250ZW50OiBzdHJpbmcsIHBhdGg6IHN0cmluZywgY2hhbmdlc1Byb3ZpZGVyOiBWYWx1ZVByb3ZpZGVyPEZpbGVDaGFuZ2VbXT4pOiBQcm9taXNlPG51bGwgfCBzdHJpbmc+IHtcbiAgbGV0IGNoYW5nZXMgPSBhd2FpdCByZXNvbHZlVmFsdWUoY2hhbmdlc1Byb3ZpZGVyKTtcbiAgY29uc3QgZnJvbnRtYXR0ZXIgPSBwYXJzZUZyb250bWF0dGVyKGNvbnRlbnQpO1xuXG4gIGZvciAoY29uc3QgY2hhbmdlIG9mIGNoYW5nZXMpIHtcbiAgICBpZiAoaXNDb250ZW50Q2hhbmdlKGNoYW5nZSkpIHtcbiAgICAgIGNvbnN0IGFjdHVhbENvbnRlbnQgPSBjb250ZW50LnNsaWNlKGNoYW5nZS5zdGFydEluZGV4LCBjaGFuZ2UuZW5kSW5kZXgpO1xuICAgICAgaWYgKGFjdHVhbENvbnRlbnQgIT09IGNoYW5nZS5vbGRDb250ZW50KSB7XG4gICAgICAgIGNvbnNvbGUud2FybignQ29udGVudCBtaXNtYXRjaCcsIHtcbiAgICAgICAgICBhY3R1YWxDb250ZW50LFxuICAgICAgICAgIGVuZEluZGV4OiBjaGFuZ2UuZW5kSW5kZXgsXG4gICAgICAgICAgZXhwZWN0ZWRDb250ZW50OiBjaGFuZ2Uub2xkQ29udGVudCxcbiAgICAgICAgICBwYXRoLFxuICAgICAgICAgIHN0YXJ0SW5kZXg6IGNoYW5nZS5zdGFydEluZGV4XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoaXNGcm9udG1hdHRlckNoYW5nZShjaGFuZ2UpKSB7XG4gICAgICBjb25zdCBhY3R1YWxDb250ZW50ID0gZ2V0TmVzdGVkUHJvcGVydHlWYWx1ZShmcm9udG1hdHRlciwgY2hhbmdlLmZyb250bWF0dGVyS2V5KTtcbiAgICAgIGlmIChhY3R1YWxDb250ZW50ICE9PSBjaGFuZ2Uub2xkQ29udGVudCkge1xuICAgICAgICBjb25zb2xlLndhcm4oJ0NvbnRlbnQgbWlzbWF0Y2gnLCB7XG4gICAgICAgICAgYWN0dWFsQ29udGVudCxcbiAgICAgICAgICBleHBlY3RlZENvbnRlbnQ6IGNoYW5nZS5vbGRDb250ZW50LFxuICAgICAgICAgIGZyb250bWF0dGVyS2V5OiBjaGFuZ2UuZnJvbnRtYXR0ZXJLZXksXG4gICAgICAgICAgcGF0aFxuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjaGFuZ2VzLnNvcnQoKGEsIGIpID0+IHtcbiAgICBpZiAoaXNDb250ZW50Q2hhbmdlKGEpICYmIGlzQ29udGVudENoYW5nZShiKSkge1xuICAgICAgcmV0dXJuIGEuc3RhcnRJbmRleCAtIGIuc3RhcnRJbmRleDtcbiAgICB9XG5cbiAgICBpZiAoaXNGcm9udG1hdHRlckNoYW5nZShhKSAmJiBpc0Zyb250bWF0dGVyQ2hhbmdlKGIpKSB7XG4gICAgICByZXR1cm4gYS5mcm9udG1hdHRlcktleS5sb2NhbGVDb21wYXJlKGIuZnJvbnRtYXR0ZXJLZXkpO1xuICAgIH1cblxuICAgIHJldHVybiBpc0NvbnRlbnRDaGFuZ2UoYSkgPyAtMSA6IDE7XG4gIH0pO1xuXG4gIC8vIEJVRzogaHR0cHM6Ly9mb3J1bS5vYnNpZGlhbi5tZC90L2J1Zy1kdXBsaWNhdGVkLWxpbmtzLWluLW1ldGFkYXRhY2FjaGUtaW5zaWRlLWZvb3Rub3Rlcy84NTU1MVxuICBjaGFuZ2VzID0gY2hhbmdlcy5maWx0ZXIoKGNoYW5nZSwgaW5kZXgpID0+IHtcbiAgICBpZiAoY2hhbmdlLm9sZENvbnRlbnQgPT09IGNoYW5nZS5uZXdDb250ZW50KSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGlmIChpbmRleCA9PT0gMCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiAhZGVlcEVxdWFsKGNoYW5nZSwgY2hhbmdlc1tpbmRleCAtIDFdKTtcbiAgfSk7XG5cbiAgZm9yIChsZXQgaSA9IDE7IGkgPCBjaGFuZ2VzLmxlbmd0aDsgaSsrKSB7XG4gICAgY29uc3QgY2hhbmdlID0gY2hhbmdlc1tpXTtcbiAgICBpZiAoIWNoYW5nZSkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIGNvbnN0IHByZXZpb3VzQ2hhbmdlID0gY2hhbmdlc1tpIC0gMV07XG4gICAgaWYgKCFwcmV2aW91c0NoYW5nZSkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgaWYgKFxuICAgICAgaXNDb250ZW50Q2hhbmdlKHByZXZpb3VzQ2hhbmdlKSAmJiBpc0NvbnRlbnRDaGFuZ2UoY2hhbmdlKSAmJiBwcmV2aW91c0NoYW5nZS5lbmRJbmRleCAmJiBjaGFuZ2Uuc3RhcnRJbmRleFxuICAgICAgJiYgcHJldmlvdXNDaGFuZ2UuZW5kSW5kZXggPiBjaGFuZ2Uuc3RhcnRJbmRleFxuICAgICkge1xuICAgICAgY29uc29sZS53YXJuKCdPdmVybGFwcGluZyBjaGFuZ2VzJywge1xuICAgICAgICBjaGFuZ2UsXG4gICAgICAgIHByZXZpb3VzQ2hhbmdlXG4gICAgICB9KTtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfVxuXG4gIGxldCBuZXdDb250ZW50ID0gJyc7XG4gIGxldCBsYXN0SW5kZXggPSAwO1xuICBsZXQgZnJvbnRtYXR0ZXJDaGFuZ2VkID0gZmFsc2U7XG5cbiAgZm9yIChjb25zdCBjaGFuZ2Ugb2YgY2hhbmdlcykge1xuICAgIGlmIChpc0NvbnRlbnRDaGFuZ2UoY2hhbmdlKSkge1xuICAgICAgbmV3Q29udGVudCArPSBjb250ZW50LnNsaWNlKGxhc3RJbmRleCwgY2hhbmdlLnN0YXJ0SW5kZXgpO1xuICAgICAgbmV3Q29udGVudCArPSBjaGFuZ2UubmV3Q29udGVudDtcbiAgICAgIGxhc3RJbmRleCA9IGNoYW5nZS5lbmRJbmRleDtcbiAgICB9IGVsc2UgaWYgKGlzRnJvbnRtYXR0ZXJDaGFuZ2UoY2hhbmdlKSkge1xuICAgICAgc2V0TmVzdGVkUHJvcGVydHlWYWx1ZShmcm9udG1hdHRlciwgY2hhbmdlLmZyb250bWF0dGVyS2V5LCBjaGFuZ2UubmV3Q29udGVudCk7XG4gICAgICBmcm9udG1hdHRlckNoYW5nZWQgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIG5ld0NvbnRlbnQgKz0gY29udGVudC5zbGljZShsYXN0SW5kZXgpO1xuICBpZiAoZnJvbnRtYXR0ZXJDaGFuZ2VkKSB7XG4gICAgbmV3Q29udGVudCA9IHNldEZyb250bWF0dGVyKG5ld0NvbnRlbnQsIGZyb250bWF0dGVyKTtcbiAgfVxuXG4gIHJldHVybiBuZXdDb250ZW50O1xufVxuXG4vKipcbiAqIEFwcGxpZXMgYSBzZXJpZXMgb2YgZmlsZSBjaGFuZ2VzIHRvIHRoZSBzcGVjaWZpZWQgZmlsZSBvciBwYXRoIHdpdGhpbiB0aGUgYXBwbGljYXRpb24uXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBhcHBsaWNhdGlvbiBpbnN0YW5jZSB3aGVyZSB0aGUgZmlsZSBjaGFuZ2VzIHdpbGwgYmUgYXBwbGllZC5cbiAqIEBwYXJhbSBwYXRoT3JGaWxlIC0gVGhlIHBhdGggb3IgZmlsZSB0byB3aGljaCB0aGUgY2hhbmdlcyBzaG91bGQgYmUgYXBwbGllZC5cbiAqIEBwYXJhbSBjaGFuZ2VzUHJvdmlkZXIgLSBBIHByb3ZpZGVyIHRoYXQgcmV0dXJucyBhbiBhcnJheSBvZiBmaWxlIGNoYW5nZXMgdG8gYXBwbHkuXG4gKiBAcGFyYW0gcHJvY2Vzc09wdGlvbnMgLSBPcHRpb25hbCBvcHRpb25zIGZvciBwcm9jZXNzaW5nL3JldHJ5aW5nIHRoZSBvcGVyYXRpb24uXG4gKlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB3aGVuIHRoZSBmaWxlIGNoYW5nZXMgaGF2ZSBiZWVuIHN1Y2Nlc3NmdWxseSBhcHBsaWVkLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gYXBwbHlGaWxlQ2hhbmdlcyhcbiAgYXBwOiBBcHAsXG4gIHBhdGhPckZpbGU6IFBhdGhPckZpbGUsXG4gIGNoYW5nZXNQcm92aWRlcjogVmFsdWVQcm92aWRlcjxGaWxlQ2hhbmdlW10+LFxuICBwcm9jZXNzT3B0aW9uczogUHJvY2Vzc09wdGlvbnMgPSB7fVxuKTogUHJvbWlzZTx2b2lkPiB7XG4gIGF3YWl0IHByb2Nlc3MoYXBwLCBwYXRoT3JGaWxlLCBhc3luYyAoY29udGVudCkgPT4ge1xuICAgIGlmIChpc0NhbnZhc0ZpbGUoYXBwLCBwYXRoT3JGaWxlKSkge1xuICAgICAgcmV0dXJuIGFwcGx5Q2FudmFzQ2hhbmdlcyhjb250ZW50LCBnZXRQYXRoKGFwcCwgcGF0aE9yRmlsZSksIGNoYW5nZXNQcm92aWRlcik7XG4gICAgfVxuXG4gICAgcmV0dXJuIGF3YWl0IGFwcGx5Q29udGVudENoYW5nZXMoY29udGVudCwgZ2V0UGF0aChhcHAsIHBhdGhPckZpbGUpLCBjaGFuZ2VzUHJvdmlkZXIpO1xuICB9LCBwcm9jZXNzT3B0aW9ucyk7XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIGEgZmlsZSBjaGFuZ2UgaXMgYSBjYW52YXMgY2hhbmdlLlxuICpcbiAqIEBwYXJhbSBjaGFuZ2UgLSBUaGUgZmlsZSBjaGFuZ2UgdG8gY2hlY2suXG4gKiBAcmV0dXJucyBXaGV0aGVyIHRoZSBmaWxlIGNoYW5nZSBpcyBhIGNhbnZhcyBjaGFuZ2UuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0NhbnZhc0NoYW5nZShjaGFuZ2U6IEZpbGVDaGFuZ2UpOiBjaGFuZ2UgaXMgQ2FudmFzQ2hhbmdlIHtcbiAgcmV0dXJuICEhKGNoYW5nZSBhcyBQYXJ0aWFsPENhbnZhc0NoYW5nZT4pLmlzQ2FudmFzO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiBhIGZpbGUgY2hhbmdlIGlzIGEgY2FudmFzIGZpbGUgbm9kZSBjaGFuZ2UuXG4gKlxuICogQHBhcmFtIGNoYW5nZSAtIFRoZSBmaWxlIGNoYW5nZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIFdoZXRoZXIgdGhlIGZpbGUgY2hhbmdlIGlzIGEgY2FudmFzIGZpbGUgbm9kZSBjaGFuZ2UuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0NhbnZhc0ZpbGVOb2RlQ2hhbmdlKGNoYW5nZTogRmlsZUNoYW5nZSk6IGNoYW5nZSBpcyBDYW52YXNGaWxlTm9kZUNoYW5nZSB7XG4gIHJldHVybiBpc0NhbnZhc0NoYW5nZShjaGFuZ2UpICYmIGNoYW5nZS50eXBlID09PSAnZmlsZSc7XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIGEgZmlsZSBjaGFuZ2UgaXMgYSBjYW52YXMgdGV4dCBub2RlIGNoYW5nZS5cbiAqXG4gKiBAcGFyYW0gY2hhbmdlIC0gVGhlIGZpbGUgY2hhbmdlIHRvIGNoZWNrLlxuICogQHJldHVybnMgV2hldGhlciB0aGUgZmlsZSBjaGFuZ2UgaXMgYSBjYW52YXMgdGV4dCBub2RlIGNoYW5nZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzQ2FudmFzVGV4dE5vZGVDaGFuZ2UoY2hhbmdlOiBGaWxlQ2hhbmdlKTogY2hhbmdlIGlzIENhbnZhc1RleHROb2RlQ2hhbmdlIHtcbiAgcmV0dXJuIGlzQ2FudmFzQ2hhbmdlKGNoYW5nZSkgJiYgY2hhbmdlLnR5cGUgPT09ICd0ZXh0Jztcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgYSBmaWxlIGNoYW5nZSBpcyBhIGNvbnRlbnQgY2hhbmdlLlxuICpcbiAqIEBwYXJhbSBmaWxlQ2hhbmdlIC0gVGhlIGZpbGUgY2hhbmdlIHRvIGNoZWNrLlxuICogQHJldHVybnMgQSBib29sZWFuIGluZGljYXRpbmcgd2hldGhlciB0aGUgZmlsZSBjaGFuZ2UgaXMgYSBjb250ZW50IGNoYW5nZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzQ29udGVudENoYW5nZShmaWxlQ2hhbmdlOiBGaWxlQ2hhbmdlKTogZmlsZUNoYW5nZSBpcyBDb250ZW50Q2hhbmdlIHtcbiAgcmV0dXJuIChmaWxlQ2hhbmdlIGFzIFBhcnRpYWw8Q29udGVudENoYW5nZT4pLnN0YXJ0SW5kZXggIT09IHVuZGVmaW5lZDtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgYSBmaWxlIGNoYW5nZSBpcyBhIGZyb250bWF0dGVyIGNoYW5nZS5cbiAqXG4gKiBAcGFyYW0gZmlsZUNoYW5nZSAtIFRoZSBmaWxlIGNoYW5nZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIEEgYm9vbGVhbiBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIGZpbGUgY2hhbmdlIGlzIGEgZnJvbnRtYXR0ZXIgY2hhbmdlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNGcm9udG1hdHRlckNoYW5nZShmaWxlQ2hhbmdlOiBGaWxlQ2hhbmdlKTogZmlsZUNoYW5nZSBpcyBGcm9udG1hdHRlckNoYW5nZSB7XG4gIHJldHVybiAoZmlsZUNoYW5nZSBhcyBQYXJ0aWFsPEZyb250bWF0dGVyQ2hhbmdlPikuZnJvbnRtYXR0ZXJLZXkgIT09IHVuZGVmaW5lZDtcbn1cblxuYXN5bmMgZnVuY3Rpb24gYXBwbHlDYW52YXNDaGFuZ2VzKGNvbnRlbnQ6IHN0cmluZywgcGF0aDogc3RyaW5nLCBjaGFuZ2VzUHJvdmlkZXI6IFZhbHVlUHJvdmlkZXI8RmlsZUNoYW5nZVtdPik6IFByb21pc2U8bnVsbCB8IHN0cmluZz4ge1xuICBjb25zdCBjaGFuZ2VzID0gYXdhaXQgcmVzb2x2ZVZhbHVlKGNoYW5nZXNQcm92aWRlcik7XG4gIGNvbnN0IGNhbnZhc0RhdGEgPSBwYXJzZUpzb25TYWZlKGNvbnRlbnQpIGFzIENhbnZhc0RhdGE7XG5cbiAgY29uc3QgY2FudmFzVGV4dENoYW5nZXMgPSBuZXcgTWFwPG51bWJlciwgQ2FudmFzVGV4dE5vZGVDaGFuZ2VbXT4oKTtcblxuICBmb3IgKGNvbnN0IGNoYW5nZSBvZiBjaGFuZ2VzKSB7XG4gICAgaWYgKCFpc0NhbnZhc0NoYW5nZShjaGFuZ2UpKSB7XG4gICAgICBjb25zb2xlLndhcm4oJ09ubHkgY2FudmFzIGNoYW5nZXMgYXJlIHN1cHBvcnRlZCBmb3IgY2FudmFzIGZpbGVzJywge1xuICAgICAgICBjaGFuZ2UsXG4gICAgICAgIHBhdGhcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgY29uc3Qgbm9kZSA9IGNhbnZhc0RhdGEubm9kZXNbY2hhbmdlLm5vZGVJbmRleF07XG4gICAgaWYgKCFub2RlKSB7XG4gICAgICBjb25zb2xlLndhcm4oJ05vZGUgbm90IGZvdW5kJywge1xuICAgICAgICBub2RlSW5kZXg6IGNoYW5nZS5ub2RlSW5kZXgsXG4gICAgICAgIHBhdGhcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgaWYgKGlzQ2FudmFzRmlsZU5vZGVDaGFuZ2UoY2hhbmdlKSkge1xuICAgICAgaWYgKG5vZGUuZmlsZSAhPT0gY2hhbmdlLm9sZENvbnRlbnQpIHtcbiAgICAgICAgY29uc29sZS53YXJuKCdDb250ZW50IG1pc21hdGNoJywge1xuICAgICAgICAgIGFjdHVhbENvbnRlbnQ6IG5vZGUuZmlsZSBhcyBzdHJpbmcgfCB1bmRlZmluZWQsXG4gICAgICAgICAgZXhwZWN0ZWRDb250ZW50OiBjaGFuZ2Uub2xkQ29udGVudCxcbiAgICAgICAgICBub2RlSW5kZXg6IGNoYW5nZS5ub2RlSW5kZXgsXG4gICAgICAgICAgcGF0aCxcbiAgICAgICAgICB0eXBlOiAnZmlsZSdcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgICBub2RlLmZpbGUgPSBjaGFuZ2UubmV3Q29udGVudDtcbiAgICB9IGVsc2UgaWYgKGlzQ2FudmFzVGV4dE5vZGVDaGFuZ2UoY2hhbmdlKSkge1xuICAgICAgbGV0IGNhbnZhc1RleHRDaGFuZ2VzRm9yTm9kZSA9IGNhbnZhc1RleHRDaGFuZ2VzLmdldChjaGFuZ2Uubm9kZUluZGV4KTtcbiAgICAgIGlmICghY2FudmFzVGV4dENoYW5nZXNGb3JOb2RlKSB7XG4gICAgICAgIGNhbnZhc1RleHRDaGFuZ2VzRm9yTm9kZSA9IFtdO1xuICAgICAgICBjYW52YXNUZXh0Q2hhbmdlcy5zZXQoY2hhbmdlLm5vZGVJbmRleCwgY2FudmFzVGV4dENoYW5nZXNGb3JOb2RlKTtcbiAgICAgIH1cblxuICAgICAgY2FudmFzVGV4dENoYW5nZXNGb3JOb2RlLnB1c2goY2hhbmdlKTtcbiAgICB9XG4gIH1cblxuICBmb3IgKGNvbnN0IFtub2RlSW5kZXgsIGNhbnZhc1RleHRDaGFuZ2VzRm9yTm9kZV0gb2YgY2FudmFzVGV4dENoYW5nZXMuZW50cmllcygpKSB7XG4gICAgY29uc3Qgbm9kZSA9IGNhbnZhc0RhdGEubm9kZXNbbm9kZUluZGV4XTtcbiAgICBpZiAoIW5vZGUpIHtcbiAgICAgIGNvbnNvbGUud2FybignTm9kZSBub3QgZm91bmQnLCB7XG4gICAgICAgIG5vZGVJbmRleCxcbiAgICAgICAgcGF0aFxuICAgICAgfSk7XG5cbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2Ygbm9kZS50ZXh0ICE9PSAnc3RyaW5nJykge1xuICAgICAgY29uc29sZS53YXJuKCdOb2RlIHRleHQgaXMgbm90IGEgc3RyaW5nJywge1xuICAgICAgICBub2RlSW5kZXgsXG4gICAgICAgIHBhdGhcbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBjb25zdCBjb250ZW50Q2hhbmdlcyA9IGNhbnZhc1RleHRDaGFuZ2VzRm9yTm9kZS5tYXAoKGNoYW5nZSkgPT4gcmVmZXJlbmNlVG9GaWxlQ2hhbmdlKGNoYW5nZS5vcmlnaW5hbFJlZmVyZW5jZSwgY2hhbmdlLm5ld0NvbnRlbnQpKTtcbiAgICBub2RlLnRleHQgPSBhd2FpdCBhcHBseUNvbnRlbnRDaGFuZ2VzKG5vZGUudGV4dCwgYCR7cGF0aH0ubm9kZSR7bm9kZUluZGV4LnRvU3RyaW5nKCl9LlZJUlRVQUxfRklMRS5tZGAsIGNvbnRlbnRDaGFuZ2VzKTtcbiAgfVxuXG4gIHJldHVybiBKU09OLnN0cmluZ2lmeShjYW52YXNEYXRhLCBudWxsLCAnXFx0Jyk7XG59XG5cbmZ1bmN0aW9uIHBhcnNlSnNvblNhZmUoY29udGVudDogc3RyaW5nKTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4ge1xuICBsZXQgcGFyc2VkOiB1bmtub3duO1xuICB0cnkge1xuICAgIHBhcnNlZCA9IEpTT04ucGFyc2UoY29udGVudCk7XG4gIH0gY2F0Y2gge1xuICAgIHBhcnNlZCA9IG51bGw7XG4gIH1cblxuICBpZiAocGFyc2VkID09PSBudWxsIHx8IHR5cGVvZiBwYXJzZWQgIT09ICdvYmplY3QnKSB7XG4gICAgcGFyc2VkID0ge307XG4gIH1cblxuICByZXR1cm4gcGFyc2VkIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7OztBQWdCQTtBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLE9BQ0s7QUFDUCxTQUFTLG9CQUFvQjtBQUM3QjtBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsT0FDSztBQUNQO0FBQUEsRUFDRTtBQUFBLEVBQ0E7QUFBQSxPQUNLO0FBQ1AsU0FBUyw2QkFBNkI7QUFDdEMsU0FBUyxlQUFlO0FBK0Z4QixlQUFzQixvQkFBb0IsU0FBaUIsTUFBYyxpQkFBc0U7QUFDN0ksTUFBSSxVQUFVLE1BQU0sYUFBYSxlQUFlO0FBQ2hELFFBQU0sY0FBYyxpQkFBaUIsT0FBTztBQUU1QyxhQUFXLFVBQVUsU0FBUztBQUM1QixRQUFJLGdCQUFnQixNQUFNLEdBQUc7QUFDM0IsWUFBTSxnQkFBZ0IsUUFBUSxNQUFNLE9BQU8sWUFBWSxPQUFPLFFBQVE7QUFDdEUsVUFBSSxrQkFBa0IsT0FBTyxZQUFZO0FBQ3ZDLGdCQUFRLEtBQUssb0JBQW9CO0FBQUEsVUFDL0I7QUFBQSxVQUNBLFVBQVUsT0FBTztBQUFBLFVBQ2pCLGlCQUFp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
@@ -1,5 +1,6 @@
1
1
  /**
2
- * @packageDocumentation FileManager
2
+ * @packageDocumentation
3
+ *
3
4
  * Contains utility functions for managing files in Obsidian.
4
5
  */
5
6
  import type { App } from 'obsidian';
@@ -61,4 +61,4 @@ export {
61
61
  deleteAlias,
62
62
  processFrontmatter
63
63
  };
64
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL0ZpbGVNYW5hZ2VyLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBwYWNrYWdlRG9jdW1lbnRhdGlvbiBGaWxlTWFuYWdlclxuICogQ29udGFpbnMgdXRpbGl0eSBmdW5jdGlvbnMgZm9yIG1hbmFnaW5nIGZpbGVzIGluIE9ic2lkaWFuLlxuICovXG5cbmltcG9ydCB0eXBlIHsgQXBwIH0gZnJvbSAnb2JzaWRpYW4nO1xuaW1wb3J0IHR5cGUgeyBQcm9taXNhYmxlIH0gZnJvbSAndHlwZS1mZXN0JztcblxuaW1wb3J0IHR5cGUgeyBNYXliZVJldHVybiB9IGZyb20gJy4uL1R5cGUudHMnO1xuaW1wb3J0IHR5cGUgeyBQYXRoT3JGaWxlIH0gZnJvbSAnLi9GaWxlU3lzdGVtLnRzJztcbmltcG9ydCB0eXBlIHsgQ29tYmluZWRGcm9udG1hdHRlciB9IGZyb20gJy4vRnJvbnRtYXR0ZXIudHMnO1xuaW1wb3J0IHR5cGUgeyBQcm9jZXNzT3B0aW9ucyB9IGZyb20gJy4vVmF1bHQudHMnO1xuXG5pbXBvcnQgeyBkZWVwRXF1YWwgfSBmcm9tICcuLi9PYmplY3QudHMnO1xuaW1wb3J0IHsgZ2V0RmlsZSB9IGZyb20gJy4vRmlsZVN5c3RlbS50cyc7XG5pbXBvcnQge1xuICBwYXJzZUZyb250bWF0dGVyLFxuICBzZXRGcm9udG1hdHRlclxufSBmcm9tICcuL0Zyb250bWF0dGVyLnRzJztcbmltcG9ydCB7IHByb2Nlc3MgfSBmcm9tICcuL1ZhdWx0LnRzJztcblxuLyoqXG4gKiBBZGRzIGFuIGFsaWFzIHRvIHRoZSBmcm9udCBtYXR0ZXIgb2YgYSBnaXZlbiBmaWxlIGlmIGl0IGRvZXMgbm90IGFscmVhZHkgZXhpc3QuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBPYnNpZGlhbiBhcHAgaW5zdGFuY2UuXG4gKiBAcGFyYW0gcGF0aE9yRmlsZSAtIFRoZSBwYXRoIG9yIFRGaWxlIG9iamVjdCByZXByZXNlbnRpbmcgdGhlIG5vdGUuXG4gKiBAcGFyYW0gYWxpYXMgLSBUaGUgYWxpYXMgdG8gYWRkLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB3aGVuIHRoZSBhbGlhcyBoYXMgYmVlbiBhZGRlZC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGFkZEFsaWFzKGFwcDogQXBwLCBwYXRoT3JGaWxlOiBQYXRoT3JGaWxlLCBhbGlhcz86IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICBpZiAoIWFsaWFzKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgZmlsZSA9IGdldEZpbGUoYXBwLCBwYXRoT3JGaWxlKTtcbiAgaWYgKGFsaWFzID09PSBmaWxlLmJhc2VuYW1lKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgYXdhaXQgcHJvY2Vzc0Zyb250bWF0dGVyKGFwcCwgcGF0aE9yRmlsZSwgKGZyb250bWF0dGVyKSA9PiB7XG4gICAgZnJvbnRtYXR0ZXIuYWxpYXNlcyA/Pz0gW107XG5cbiAgICBpZiAoIWZyb250bWF0dGVyLmFsaWFzZXMuaW5jbHVkZXMoYWxpYXMpKSB7XG4gICAgICBmcm9udG1hdHRlci5hbGlhc2VzLnB1c2goYWxpYXMpO1xuICAgIH1cbiAgfSk7XG59XG5cbi8qKlxuICogRGVsZXRlcyBhbiBhbGlhcyBmcm9tIHRoZSBmcm9udCBtYXR0ZXIgb2YgYSBnaXZlbiBmaWxlIGlmIGl0IGV4aXN0cy5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIE9ic2lkaWFuIGFwcCBpbnN0YW5jZS5cbiAqIEBwYXJhbSBwYXRoT3JGaWxlIC0gVGhlIHBhdGggb3IgVEZpbGUgb2JqZWN0IHJlcHJlc2VudGluZyB0aGUgbm90ZS5cbiAqIEBwYXJhbSBhbGlhcyAtIFRoZSBhbGlhcyB0byBkZWxldGUuXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIGFsaWFzIGhhcyBiZWVuIGRlbGV0ZWQuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBkZWxldGVBbGlhcyhhcHA6IEFwcCwgcGF0aE9yRmlsZTogUGF0aE9yRmlsZSwgYWxpYXM/OiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgaWYgKCFhbGlhcykge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGF3YWl0IHByb2Nlc3NGcm9udG1hdHRlcihhcHAsIHBhdGhPckZpbGUsIChmcm9udG1hdHRlcikgPT4ge1xuICAgIGlmICghZnJvbnRtYXR0ZXIuYWxpYXNlcykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGZyb250bWF0dGVyLmFsaWFzZXMgPSBmcm9udG1hdHRlci5hbGlhc2VzLmZpbHRlcigoYSkgPT4gYSAhPT0gYWxpYXMpO1xuXG4gICAgaWYgKGZyb250bWF0dGVyLmFsaWFzZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICBkZWxldGUgZnJvbnRtYXR0ZXIuYWxpYXNlcztcbiAgICB9XG4gIH0pO1xufVxuXG4vKipcbiAqIFByb2Nlc3NlcyB0aGUgZnJvbnQgbWF0dGVyIG9mIGEgZ2l2ZW4gZmlsZSwgYWxsb3dpbmcgbW9kaWZpY2F0aW9ucyB2aWEgYSBwcm92aWRlZCBmdW5jdGlvbi5cbiAqXG4gKiBAdHlwZVBhcmFtIEN1c3RvbUZyb250bWF0dGVyIC0gVGhlIHR5cGUgb2YgY3VzdG9tIGZyb250IG1hdHRlci5cbiAqIEBwYXJhbSBhcHAgLSBUaGUgT2JzaWRpYW4gYXBwIGluc3RhbmNlLlxuICogQHBhcmFtIHBhdGhPckZpbGUgLSBUaGUgcGF0aCBvciBURmlsZSBvYmplY3QgcmVwcmVzZW50aW5nIHRoZSBub3RlLlxuICogQHBhcmFtIGZyb250bWF0dGVyRm4gLSBBIGZ1bmN0aW9uIHRoYXQgbW9kaWZpZXMgdGhlIGZyb250IG1hdHRlci5cbiAqIEBwYXJhbSBwcm9jZXNzT3B0aW9ucyAtIE9wdGlvbmFsLiBDb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHJldHJ5aW5nIHRoZSBwcm9jZXNzLiBJZiBub3QgcHJvdmlkZWQsIGRlZmF1bHQgb3B0aW9ucyB3aWxsIGJlIHVzZWQuXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIGZyb250IG1hdHRlciBoYXMgYmVlbiBwcm9jZXNzZWQgYW5kIHNhdmVkLlxuICovXG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBwcm9jZXNzRnJvbnRtYXR0ZXI8Q3VzdG9tRnJvbnRtYXR0ZXIgPSB1bmtub3duPihcbiAgYXBwOiBBcHAsXG4gIHBhdGhPckZpbGU6IFBhdGhPckZpbGUsXG4gIGZyb250bWF0dGVyRm46IChmcm9udG1hdHRlcjogQ29tYmluZWRGcm9udG1hdHRlcjxDdXN0b21Gcm9udG1hdHRlcj4pID0+IFByb21pc2FibGU8TWF5YmVSZXR1cm48bnVsbD4+LFxuICBwcm9jZXNzT3B0aW9uczogUHJvY2Vzc09wdGlvbnMgPSB7fVxuKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IGZpbGUgPSBnZXRGaWxlKGFwcCwgcGF0aE9yRmlsZSk7XG5cbiAgYXdhaXQgcHJvY2VzcyhhcHAsIGZpbGUsIGFzeW5jIChjb250ZW50KSA9PiB7XG4gICAgY29uc3Qgb2xkRnJvbnRtYXR0ZXIgPSBwYXJzZUZyb250bWF0dGVyPEN1c3RvbUZyb250bWF0dGVyPihjb250ZW50KTtcbiAgICBjb25zdCBuZXdGcm9udG1hdHRlciA9IHBhcnNlRnJvbnRtYXR0ZXI8Q3VzdG9tRnJvbnRtYXR0ZXI+KGNvbnRlbnQpO1xuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGZyb250bWF0dGVyRm4obmV3RnJvbnRtYXR0ZXIpO1xuICAgIGlmIChyZXN1bHQgPT09IG51bGwpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGlmIChkZWVwRXF1YWwob2xkRnJvbnRtYXR0ZXIsIG5ld0Zyb250bWF0dGVyKSkge1xuICAgICAgcmV0dXJuIGNvbnRlbnQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIHNldEZyb250bWF0dGVyKGNvbnRlbnQsIG5ld0Zyb250bWF0dGVyKTtcbiAgfSwgcHJvY2Vzc09wdGlvbnMpO1xufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7OztBQWFBLFNBQVMsaUJBQWlCO0FBQzFCLFNBQVMsZUFBZTtBQUN4QjtBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsT0FDSztBQUNQLFNBQVMsZUFBZTtBQVV4QixlQUFzQixTQUFTLEtBQVUsWUFBd0IsT0FBK0I7QUFDOUYsTUFBSSxDQUFDLE9BQU87QUFDVjtBQUFBLEVBQ0Y7QUFFQSxRQUFNLE9BQU8sUUFBUSxLQUFLLFVBQVU7QUFDcEMsTUFBSSxVQUFVLEtBQUssVUFBVTtBQUMzQjtBQUFBLEVBQ0Y7QUFFQSxRQUFNLG1CQUFtQixLQUFLLFlBQVksQ0FBQyxnQkFBZ0I7QUFDekQsZ0JBQVksWUFBWSxDQUFDO0FBRXpCLFFBQUksQ0FBQyxZQUFZLFFBQVEsU0FBUyxLQUFLLEdBQUc7QUFDeEMsa0JBQVksUUFBUSxLQUFLLEtBQUs7QUFBQSxJQUNoQztBQUFBLEVBQ0YsQ0FBQztBQUNIO0FBVUEsZUFBc0IsWUFBWSxLQUFVLFlBQXdCLE9BQStCO0FBQ2pHLE1BQUksQ0FBQyxPQUFPO0FBQ1Y7QUFBQSxFQUNGO0FBRUEsUUFBTSxtQkFBbUIsS0FBSyxZQUFZLENBQUMsZ0JBQWdCO0FBQ3pELFFBQUksQ0FBQyxZQUFZLFNBQVM7QUFDeEI7QUFBQSxJQUNGO0FBRUEsZ0JBQVksVUFBVSxZQUFZLFFBQVEsT0FBTyxDQUFDLE1BQU0sTUFBTSxLQUFLO0FBRW5FLFFBQUksWUFBWSxRQUFRLFdBQVcsR0FBRztBQUNwQyxhQUFPLFlBQVk7QUFBQSxJQUNyQjtBQUFBLEVBQ0YsQ0FBQztBQUNIO0FBYUEsZUFBc0IsbUJBQ3BCLEtBQ0EsWUFDQSxlQUNBLGlCQUFpQyxDQUFDLEdBQ25CO0FBQ2YsUUFBTSxPQUFPLFFBQVEsS0FBSyxVQUFVO0FBRXBDLFFBQU0sUUFBUSxLQUFLLE1BQU0sT0FBTyxZQUFZO0FBQzFDLFVBQU0saUJBQWlCLGlCQUFvQyxPQUFPO0FBQ2xFLFVBQU0saUJBQWlCLGlCQUFvQyxPQUFPO0FBQ2xFLFVBQU0sU0FBUyxNQUFNLGNBQWMsY0FBYztBQUNqRCxRQUFJLFdBQVcsTUFBTTtBQUNuQixhQUFPO0FBQUEsSUFDVDtBQUVBLFFBQUksVUFBVSxnQkFBZ0IsY0FBYyxHQUFHO0FBQzdDLGFBQU87QUFBQSxJQUNUO0FBRUEsV0FBTyxlQUFlLFNBQVMsY0FBYztBQUFBLEVBQy9DLEdBQUcsY0FBYztBQUNuQjsiLAogICJuYW1lcyI6IFtdCn0K
64
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL0ZpbGVNYW5hZ2VyLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBwYWNrYWdlRG9jdW1lbnRhdGlvblxuICpcbiAqIENvbnRhaW5zIHV0aWxpdHkgZnVuY3Rpb25zIGZvciBtYW5hZ2luZyBmaWxlcyBpbiBPYnNpZGlhbi5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7IEFwcCB9IGZyb20gJ29ic2lkaWFuJztcbmltcG9ydCB0eXBlIHsgUHJvbWlzYWJsZSB9IGZyb20gJ3R5cGUtZmVzdCc7XG5cbmltcG9ydCB0eXBlIHsgTWF5YmVSZXR1cm4gfSBmcm9tICcuLi9UeXBlLnRzJztcbmltcG9ydCB0eXBlIHsgUGF0aE9yRmlsZSB9IGZyb20gJy4vRmlsZVN5c3RlbS50cyc7XG5pbXBvcnQgdHlwZSB7IENvbWJpbmVkRnJvbnRtYXR0ZXIgfSBmcm9tICcuL0Zyb250bWF0dGVyLnRzJztcbmltcG9ydCB0eXBlIHsgUHJvY2Vzc09wdGlvbnMgfSBmcm9tICcuL1ZhdWx0LnRzJztcblxuaW1wb3J0IHsgZGVlcEVxdWFsIH0gZnJvbSAnLi4vT2JqZWN0LnRzJztcbmltcG9ydCB7IGdldEZpbGUgfSBmcm9tICcuL0ZpbGVTeXN0ZW0udHMnO1xuaW1wb3J0IHtcbiAgcGFyc2VGcm9udG1hdHRlcixcbiAgc2V0RnJvbnRtYXR0ZXJcbn0gZnJvbSAnLi9Gcm9udG1hdHRlci50cyc7XG5pbXBvcnQgeyBwcm9jZXNzIH0gZnJvbSAnLi9WYXVsdC50cyc7XG5cbi8qKlxuICogQWRkcyBhbiBhbGlhcyB0byB0aGUgZnJvbnQgbWF0dGVyIG9mIGEgZ2l2ZW4gZmlsZSBpZiBpdCBkb2VzIG5vdCBhbHJlYWR5IGV4aXN0LlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgT2JzaWRpYW4gYXBwIGluc3RhbmNlLlxuICogQHBhcmFtIHBhdGhPckZpbGUgLSBUaGUgcGF0aCBvciBURmlsZSBvYmplY3QgcmVwcmVzZW50aW5nIHRoZSBub3RlLlxuICogQHBhcmFtIGFsaWFzIC0gVGhlIGFsaWFzIHRvIGFkZC5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgYWxpYXMgaGFzIGJlZW4gYWRkZWQuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBhZGRBbGlhcyhhcHA6IEFwcCwgcGF0aE9yRmlsZTogUGF0aE9yRmlsZSwgYWxpYXM/OiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgaWYgKCFhbGlhcykge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IGZpbGUgPSBnZXRGaWxlKGFwcCwgcGF0aE9yRmlsZSk7XG4gIGlmIChhbGlhcyA9PT0gZmlsZS5iYXNlbmFtZSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGF3YWl0IHByb2Nlc3NGcm9udG1hdHRlcihhcHAsIHBhdGhPckZpbGUsIChmcm9udG1hdHRlcikgPT4ge1xuICAgIGZyb250bWF0dGVyLmFsaWFzZXMgPz89IFtdO1xuXG4gICAgaWYgKCFmcm9udG1hdHRlci5hbGlhc2VzLmluY2x1ZGVzKGFsaWFzKSkge1xuICAgICAgZnJvbnRtYXR0ZXIuYWxpYXNlcy5wdXNoKGFsaWFzKTtcbiAgICB9XG4gIH0pO1xufVxuXG4vKipcbiAqIERlbGV0ZXMgYW4gYWxpYXMgZnJvbSB0aGUgZnJvbnQgbWF0dGVyIG9mIGEgZ2l2ZW4gZmlsZSBpZiBpdCBleGlzdHMuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBPYnNpZGlhbiBhcHAgaW5zdGFuY2UuXG4gKiBAcGFyYW0gcGF0aE9yRmlsZSAtIFRoZSBwYXRoIG9yIFRGaWxlIG9iamVjdCByZXByZXNlbnRpbmcgdGhlIG5vdGUuXG4gKiBAcGFyYW0gYWxpYXMgLSBUaGUgYWxpYXMgdG8gZGVsZXRlLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB3aGVuIHRoZSBhbGlhcyBoYXMgYmVlbiBkZWxldGVkLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZGVsZXRlQWxpYXMoYXBwOiBBcHAsIHBhdGhPckZpbGU6IFBhdGhPckZpbGUsIGFsaWFzPzogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gIGlmICghYWxpYXMpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBhd2FpdCBwcm9jZXNzRnJvbnRtYXR0ZXIoYXBwLCBwYXRoT3JGaWxlLCAoZnJvbnRtYXR0ZXIpID0+IHtcbiAgICBpZiAoIWZyb250bWF0dGVyLmFsaWFzZXMpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBmcm9udG1hdHRlci5hbGlhc2VzID0gZnJvbnRtYXR0ZXIuYWxpYXNlcy5maWx0ZXIoKGEpID0+IGEgIT09IGFsaWFzKTtcblxuICAgIGlmIChmcm9udG1hdHRlci5hbGlhc2VzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgZGVsZXRlIGZyb250bWF0dGVyLmFsaWFzZXM7XG4gICAgfVxuICB9KTtcbn1cblxuLyoqXG4gKiBQcm9jZXNzZXMgdGhlIGZyb250IG1hdHRlciBvZiBhIGdpdmVuIGZpbGUsIGFsbG93aW5nIG1vZGlmaWNhdGlvbnMgdmlhIGEgcHJvdmlkZWQgZnVuY3Rpb24uXG4gKlxuICogQHR5cGVQYXJhbSBDdXN0b21Gcm9udG1hdHRlciAtIFRoZSB0eXBlIG9mIGN1c3RvbSBmcm9udCBtYXR0ZXIuXG4gKiBAcGFyYW0gYXBwIC0gVGhlIE9ic2lkaWFuIGFwcCBpbnN0YW5jZS5cbiAqIEBwYXJhbSBwYXRoT3JGaWxlIC0gVGhlIHBhdGggb3IgVEZpbGUgb2JqZWN0IHJlcHJlc2VudGluZyB0aGUgbm90ZS5cbiAqIEBwYXJhbSBmcm9udG1hdHRlckZuIC0gQSBmdW5jdGlvbiB0aGF0IG1vZGlmaWVzIHRoZSBmcm9udCBtYXR0ZXIuXG4gKiBAcGFyYW0gcHJvY2Vzc09wdGlvbnMgLSBPcHRpb25hbC4gQ29uZmlndXJhdGlvbiBvcHRpb25zIGZvciByZXRyeWluZyB0aGUgcHJvY2Vzcy4gSWYgbm90IHByb3ZpZGVkLCBkZWZhdWx0IG9wdGlvbnMgd2lsbCBiZSB1c2VkLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB3aGVuIHRoZSBmcm9udCBtYXR0ZXIgaGFzIGJlZW4gcHJvY2Vzc2VkIGFuZCBzYXZlZC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHByb2Nlc3NGcm9udG1hdHRlcjxDdXN0b21Gcm9udG1hdHRlciA9IHVua25vd24+KFxuICBhcHA6IEFwcCxcbiAgcGF0aE9yRmlsZTogUGF0aE9yRmlsZSxcbiAgZnJvbnRtYXR0ZXJGbjogKGZyb250bWF0dGVyOiBDb21iaW5lZEZyb250bWF0dGVyPEN1c3RvbUZyb250bWF0dGVyPikgPT4gUHJvbWlzYWJsZTxNYXliZVJldHVybjxudWxsPj4sXG4gIHByb2Nlc3NPcHRpb25zOiBQcm9jZXNzT3B0aW9ucyA9IHt9XG4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgZmlsZSA9IGdldEZpbGUoYXBwLCBwYXRoT3JGaWxlKTtcblxuICBhd2FpdCBwcm9jZXNzKGFwcCwgZmlsZSwgYXN5bmMgKGNvbnRlbnQpID0+IHtcbiAgICBjb25zdCBvbGRGcm9udG1hdHRlciA9IHBhcnNlRnJvbnRtYXR0ZXI8Q3VzdG9tRnJvbnRtYXR0ZXI+KGNvbnRlbnQpO1xuICAgIGNvbnN0IG5ld0Zyb250bWF0dGVyID0gcGFyc2VGcm9udG1hdHRlcjxDdXN0b21Gcm9udG1hdHRlcj4oY29udGVudCk7XG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgZnJvbnRtYXR0ZXJGbihuZXdGcm9udG1hdHRlcik7XG4gICAgaWYgKHJlc3VsdCA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgaWYgKGRlZXBFcXVhbChvbGRGcm9udG1hdHRlciwgbmV3RnJvbnRtYXR0ZXIpKSB7XG4gICAgICByZXR1cm4gY29udGVudDtcbiAgICB9XG5cbiAgICByZXR1cm4gc2V0RnJvbnRtYXR0ZXIoY29udGVudCwgbmV3RnJvbnRtYXR0ZXIpO1xuICB9LCBwcm9jZXNzT3B0aW9ucyk7XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7O0FBY0EsU0FBUyxpQkFBaUI7QUFDMUIsU0FBUyxlQUFlO0FBQ3hCO0FBQUEsRUFDRTtBQUFBLEVBQ0E7QUFBQSxPQUNLO0FBQ1AsU0FBUyxlQUFlO0FBVXhCLGVBQXNCLFNBQVMsS0FBVSxZQUF3QixPQUErQjtBQUM5RixNQUFJLENBQUMsT0FBTztBQUNWO0FBQUEsRUFDRjtBQUVBLFFBQU0sT0FBTyxRQUFRLEtBQUssVUFBVTtBQUNwQyxNQUFJLFVBQVUsS0FBSyxVQUFVO0FBQzNCO0FBQUEsRUFDRjtBQUVBLFFBQU0sbUJBQW1CLEtBQUssWUFBWSxDQUFDLGdCQUFnQjtBQUN6RCxnQkFBWSxZQUFZLENBQUM7QUFFekIsUUFBSSxDQUFDLFlBQVksUUFBUSxTQUFTLEtBQUssR0FBRztBQUN4QyxrQkFBWSxRQUFRLEtBQUssS0FBSztBQUFBLElBQ2hDO0FBQUEsRUFDRixDQUFDO0FBQ0g7QUFVQSxlQUFzQixZQUFZLEtBQVUsWUFBd0IsT0FBK0I7QUFDakcsTUFBSSxDQUFDLE9BQU87QUFDVjtBQUFBLEVBQ0Y7QUFFQSxRQUFNLG1CQUFtQixLQUFLLFlBQVksQ0FBQyxnQkFBZ0I7QUFDekQsUUFBSSxDQUFDLFlBQVksU0FBUztBQUN4QjtBQUFBLElBQ0Y7QUFFQSxnQkFBWSxVQUFVLFlBQVksUUFBUSxPQUFPLENBQUMsTUFBTSxNQUFNLEtBQUs7QUFFbkUsUUFBSSxZQUFZLFFBQVEsV0FBVyxHQUFHO0FBQ3BDLGFBQU8sWUFBWTtBQUFBLElBQ3JCO0FBQUEsRUFDRixDQUFDO0FBQ0g7QUFZQSxlQUFzQixtQkFDcEIsS0FDQSxZQUNBLGVBQ0EsaUJBQWlDLENBQUMsR0FDbkI7QUFDZixRQUFNLE9BQU8sUUFBUSxLQUFLLFVBQVU7QUFFcEMsUUFBTSxRQUFRLEtBQUssTUFBTSxPQUFPLFlBQVk7QUFDMUMsVUFBTSxpQkFBaUIsaUJBQW9DLE9BQU87QUFDbEUsVUFBTSxpQkFBaUIsaUJBQW9DLE9BQU87QUFDbEUsVUFBTSxTQUFTLE1BQU0sY0FBYyxjQUFjO0FBQ2pELFFBQUksV0FBVyxNQUFNO0FBQ25CLGFBQU87QUFBQSxJQUNUO0FBRUEsUUFBSSxVQUFVLGdCQUFnQixjQUFjLEdBQUc7QUFDN0MsYUFBTztBQUFBLElBQ1Q7QUFFQSxXQUFPLGVBQWUsU0FBUyxjQUFjO0FBQUEsRUFDL0MsR0FBRyxjQUFjO0FBQ25COyIsCiAgIm5hbWVzIjogW10KfQo=
@@ -1,5 +1,6 @@
1
1
  /**
2
- * @packageDocumentation FileSystem
2
+ * @packageDocumentation
3
+ *
3
4
  * This module provides utility functions for working with TAbstractFile, TFile, and TFolder instances in Obsidian.
4
5
  */
5
6
  import type { App } from 'obsidian';
@@ -69,6 +70,7 @@ export declare function getFile(app: App, pathOrFile: PathOrFile, shouldIncludeN
69
70
  * Retrieves a TFile object based on the provided path or file.
70
71
  * If the provided argument is already a TFile object, it is returned as is.
71
72
  * Otherwise, the function uses the app's vault to retrieve the TFile object by its path.
73
+ *
72
74
  * @param app - The Obsidian App instance.
73
75
  * @param pathOrFile - The path or TFile object.
74
76
  * @param isCaseInsensitive - Specifies whether to perform a case-insensitive search. Default is `false`.
@@ -193,4 +193,4 @@ export {
193
193
  isNote,
194
194
  trimMarkdownExtension
195
195
  };
196
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL0ZpbGVTeXN0ZW0udHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQHBhY2thZ2VEb2N1bWVudGF0aW9uIEZpbGVTeXN0ZW1cbiAqIFRoaXMgbW9kdWxlIHByb3ZpZGVzIHV0aWxpdHkgZnVuY3Rpb25zIGZvciB3b3JraW5nIHdpdGggVEFic3RyYWN0RmlsZSwgVEZpbGUsIGFuZCBURm9sZGVyIGluc3RhbmNlcyBpbiBPYnNpZGlhbi5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7IEFwcCB9IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHtcbiAgbm9ybWFsaXplUGF0aCxcbiAgVEFic3RyYWN0RmlsZSxcbiAgVEZpbGUsXG4gIFRGb2xkZXIsXG4gIFZhdWx0XG59IGZyb20gJ29ic2lkaWFuJztcbmltcG9ydCB7XG4gIGNyZWF0ZVRGaWxlSW5zdGFuY2UsXG4gIGNyZWF0ZVRGb2xkZXJJbnN0YW5jZSxcbiAgcGFyZW50Rm9sZGVyUGF0aFxufSBmcm9tICdvYnNpZGlhbi10eXBpbmdzL2ltcGxlbWVudGF0aW9ucyc7XG5cbmltcG9ydCB7XG4gIGV4dG5hbWUsXG4gIHJlc29sdmVcbn0gZnJvbSAnLi4vUGF0aC50cyc7XG5pbXBvcnQgeyB0cmltRW5kIH0gZnJvbSAnLi4vU3RyaW5nLnRzJztcblxuLyoqXG4gKiBUaGUgZmlsZSBleHRlbnNpb24gZm9yIE1hcmtkb3duIGZpbGVzLlxuICovXG5leHBvcnQgY29uc3QgTUFSS0RPV05fRklMRV9FWFRFTlNJT04gPSAnbWQnO1xuXG4vKipcbiAqIFJlcHJlc2VudHMgdGhlIGZpbGUgZXh0ZW5zaW9uIGZvciBjYW52YXMgZmlsZXMuXG4gKi9cbmV4cG9ydCBjb25zdCBDQU5WQVNfRklMRV9FWFRFTlNJT04gPSAnY2FudmFzJztcblxuLyoqXG4gKiBSZXByZXNlbnRzIGEgcGF0aCBvciBhbiBpbnN0YW5jZSBvZiBUQWJzdHJhY3RGaWxlLlxuICovXG5leHBvcnQgdHlwZSBQYXRoT3JBYnN0cmFjdEZpbGUgPSBzdHJpbmcgfCBUQWJzdHJhY3RGaWxlO1xuXG4vKipcbiAqIFJlcHJlc2VudHMgYSBwYXRoIG9yIGEgZmlsZS5cbiAqL1xuZXhwb3J0IHR5cGUgUGF0aE9yRmlsZSA9IHN0cmluZyB8IFRGaWxlO1xuXG4vKipcbiAqIFJlcHJlc2VudHMgYSBwYXRoIG9yIGFuIGluc3RhbmNlIG9mIFRGb2xkZXIuXG4gKi9cbmV4cG9ydCB0eXBlIFBhdGhPckZvbGRlciA9IHN0cmluZyB8IFRGb2xkZXI7XG5cbi8qKlxuICogQ2hlY2tzIGlmIHRoZSBnaXZlbiBwYXRoIG9yIGZpbGUgaGFzIHRoZSBzcGVjaWZpZWQgZXh0ZW5zaW9uLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgT2JzaWRpYW4gQXBwIGluc3RhbmNlLlxuICogQHBhcmFtIHBhdGhPckZpbGUgLSBUaGUgcGF0aCBvciBhYnN0cmFjdCBmaWxlIHRvIGNoZWNrLlxuICogQHBhcmFtIGV4dGVuc2lvbiAtIFRoZSBleHRlbnNpb24gdG8gY29tcGFyZSBhZ2FpbnN0LlxuICogQHJldHVybnMgUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIHBhdGggb3IgZmlsZSBoYXMgdGhlIHNwZWNpZmllZCBleHRlbnNpb24sIGBmYWxzZWAgb3RoZXJ3aXNlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY2hlY2tFeHRlbnNpb24oYXBwOiBBcHAsIHBhdGhPckZpbGU6IG51bGwgfCBQYXRoT3JBYnN0cmFjdEZpbGUsIGV4dGVuc2lvbjogc3RyaW5nKTogYm9vbGVhbiB7XG4gIGlmIChpc0ZpbGUocGF0aE9yRmlsZSkpIHtcbiAgICByZXR1cm4gcGF0aE9yRmlsZS5leHRlbnNpb24gPT09IGV4dGVuc2lvbjtcbiAgfVxuXG4gIGlmICh0eXBlb2YgcGF0aE9yRmlsZSA9PT0gJ3N0cmluZycpIHtcbiAgICBjb25zdCBmaWxlID0gZ2V0RmlsZU9yTnVsbChhcHAsIHBhdGhPckZpbGUpO1xuICAgIGlmIChmaWxlKSB7XG4gICAgICByZXR1cm4gZmlsZS5leHRlbnNpb24gPT09IGV4dGVuc2lvbjtcbiAgICB9XG5cbiAgICByZXR1cm4gZXh0bmFtZShwYXRoT3JGaWxlKS5zbGljZSgxKSA9PT0gZXh0ZW5zaW9uO1xuICB9XG5cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG4vKipcbiAqIFJldHJpZXZlcyB0aGUgVEFic3RyYWN0RmlsZSBvYmplY3QgZm9yIHRoZSBnaXZlbiBwYXRoIG9yIGFic3RyYWN0IGZpbGUuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBBcHAgaW5zdGFuY2UuXG4gKiBAcGFyYW0gcGF0aE9yRmlsZSAtIFRoZSBwYXRoIG9yIGFic3RyYWN0IGZpbGUgdG8gcmV0cmlldmUgdGhlIFRBYnN0cmFjdEZpbGUgZm9yLlxuICogQHBhcmFtIGlzQ2FzZUluc2Vuc2l0aXZlIC0gU3BlY2lmaWVzIHdoZXRoZXIgdG8gcGVyZm9ybSBhIGNhc2UtaW5zZW5zaXRpdmUgc2VhcmNoLiBEZWZhdWx0IGlzIGBmYWxzZWAuXG4gKiBAcmV0dXJucyBUaGUgVEFic3RyYWN0RmlsZSBvYmplY3QuXG4gKiBAdGhyb3dzIEVycm9yIGlmIHRoZSBhYnN0cmFjdCBmaWxlIGlzIG5vdCBmb3VuZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEFic3RyYWN0RmlsZShhcHA6IEFwcCwgcGF0aE9yRmlsZTogUGF0aE9yQWJzdHJhY3RGaWxlLCBpc0Nhc2VJbnNlbnNpdGl2ZT86IGJvb2xlYW4pOiBUQWJzdHJhY3RGaWxlIHtcbiAgY29uc3QgZmlsZSA9IGdldEFic3RyYWN0RmlsZU9yTnVsbChhcHAsIHBhdGhPckZpbGUsIGlzQ2FzZUluc2Vuc2l0aXZlKTtcbiAgaWYgKCFmaWxlKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBBYnN0cmFjdCBmaWxlIG5vdCBmb3VuZDogJHtwYXRoT3JGaWxlIGFzIHN0cmluZ31gKTtcbiAgfVxuXG4gIHJldHVybiBmaWxlO1xufVxuXG4vKipcbiAqIFJldHJpZXZlcyBhbiBpbnN0YW5jZSBvZiBUQWJzdHJhY3RGaWxlIG9yIG51bGwgYmFzZWQgb24gdGhlIHByb3ZpZGVkIHBhdGggb3IgYWJzdHJhY3QgZmlsZS5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIGFwcGxpY2F0aW9uIGluc3RhbmNlLlxuICogQHBhcmFtIHBhdGhPckZpbGUgLSBUaGUgcGF0aCBvciBhYnN0cmFjdCBmaWxlIHRvIHJldHJpZXZlLlxuICogQHBhcmFtIGlzQ2FzZUluc2Vuc2l0aXZlIC0gU3BlY2lmaWVzIHdoZXRoZXIgdG8gcGVyZm9ybSBhIGNhc2UtaW5zZW5zaXRpdmUgc2VhcmNoLiBEZWZhdWx0IGlzIGBmYWxzZWAuXG4gKiBAcmV0dXJucyBUaGUgaW5zdGFuY2Ugb2YgVEFic3RyYWN0RmlsZSBpZiBmb3VuZCwgb3RoZXJ3aXNlIG51bGwuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRBYnN0cmFjdEZpbGVPck51bGwoYXBwOiBBcHAsIHBhdGhPckZpbGU6IG51bGwgfCBQYXRoT3JBYnN0cmFjdEZpbGUsIGlzQ2FzZUluc2Vuc2l0aXZlPzogYm9vbGVhbik6IG51bGwgfCBUQWJzdHJhY3RGaWxlIHtcbiAgaWYgKHBhdGhPckZpbGUgPT09IG51bGwpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGlmIChpc0Fic3RyYWN0RmlsZShwYXRoT3JGaWxlKSkge1xuICAgIHJldHVybiBwYXRoT3JGaWxlO1xuICB9XG5cbiAgY29uc3QgZmlsZSA9IGdldEZpbGVJbnRlcm5hbChhcHAsIHBhdGhPckZpbGUsIGlzQ2FzZUluc2Vuc2l0aXZlKTtcblxuICBpZiAoZmlsZSkge1xuICAgIHJldHVybiBmaWxlO1xuICB9XG5cbiAgY29uc3QgcmVzb2x2ZWRQYXRoID0gZ2V0UmVzb2x2ZWRQYXRoKHBhdGhPckZpbGUpO1xuXG4gIGlmIChyZXNvbHZlZFBhdGggPT09IHBhdGhPckZpbGUpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHJldHVybiBnZXRGaWxlSW50ZXJuYWwoYXBwLCByZXNvbHZlZFBhdGgsIGlzQ2FzZUluc2Vuc2l0aXZlKTtcbn1cblxuLyoqXG4gKiBSZXRyaWV2ZXMgYSBURmlsZSBvYmplY3QgYmFzZWQgb24gdGhlIHByb3ZpZGVkIHBhdGggb3IgZmlsZS5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIE9ic2lkaWFuIEFwcCBpbnN0YW5jZS5cbiAqIEBwYXJhbSBwYXRoT3JGaWxlIC0gVGhlIHBhdGggb3IgZmlsZSB0byByZXRyaWV2ZSB0aGUgVEZpbGUgb2JqZWN0IGZvci5cbiAqIEBwYXJhbSBzaG91bGRJbmNsdWRlTm9uRXhpc3RpbmcgLSBXaGV0aGVyIHRvIGluY2x1ZGUgYSBub24tZXhpc3RpbmcgZmlsZS5cbiAqICBJZiBgdHJ1ZWAsIGEgbmV3IFRGaWxlIG9iamVjdCBpcyBjcmVhdGVkIGZvciB0aGUgcHJvdmlkZWQgcGF0aC5cbiAqICBJZiBgZmFsc2VgLCBhbiBlcnJvciBpcyB0aHJvd24gaWYgdGhlIGZpbGUgaXMgbm90IGZvdW5kLlxuICogQHBhcmFtIGlzQ2FzZUluc2Vuc2l0aXZlIC0gU3BlY2lmaWVzIHdoZXRoZXIgdG8gcGVyZm9ybSBhIGNhc2UtaW5zZW5zaXRpdmUgc2VhcmNoLiBEZWZhdWx0IGlzIGBmYWxzZWAuXG4gKiBAcmV0dXJucyBUaGUgVEZpbGUgb2JqZWN0IGNvcnJlc3BvbmRpbmcgdG8gdGhlIHByb3ZpZGVkIHBhdGggb3IgZmlsZS5cbiAqIEB0aHJvd3MgRXJyb3IgaWYgdGhlIGZpbGUgaXMgbm90IGZvdW5kLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0RmlsZShhcHA6IEFwcCwgcGF0aE9yRmlsZTogUGF0aE9yRmlsZSwgc2hvdWxkSW5jbHVkZU5vbkV4aXN0aW5nPzogYm9vbGVhbiwgaXNDYXNlSW5zZW5zaXRpdmU/OiBib29sZWFuKTogVEZpbGUge1xuICBsZXQgZmlsZSA9IGdldEZpbGVPck51bGwoYXBwLCBwYXRoT3JGaWxlLCBpc0Nhc2VJbnNlbnNpdGl2ZSk7XG4gIGlmICghZmlsZSkge1xuICAgIGlmIChzaG91bGRJbmNsdWRlTm9uRXhpc3RpbmcpIHtcbiAgICAgIGZpbGUgPSBjcmVhdGVURmlsZUluc3RhbmNlKGFwcCwgcGF0aE9yRmlsZSBhcyBzdHJpbmcpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEZpbGUgbm90IGZvdW5kOiAke3BhdGhPckZpbGUgYXMgc3RyaW5nfWApO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBmaWxlO1xufVxuXG4vKipcbiAqIFJldHJpZXZlcyBhIFRGaWxlIG9iamVjdCBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgcGF0aCBvciBmaWxlLlxuICogSWYgdGhlIHByb3ZpZGVkIGFyZ3VtZW50IGlzIGFscmVhZHkgYSBURmlsZSBvYmplY3QsIGl0IGlzIHJldHVybmVkIGFzIGlzLlxuICogT3RoZXJ3aXNlLCB0aGUgZnVuY3Rpb24gdXNlcyB0aGUgYXBwJ3MgdmF1bHQgdG8gcmV0cmlldmUgdGhlIFRGaWxlIG9iamVjdCBieSBpdHMgcGF0aC5cbiAqIEBwYXJhbSBhcHAgLSBUaGUgT2JzaWRpYW4gQXBwIGluc3RhbmNlLlxuICogQHBhcmFtIHBhdGhPckZpbGUgLSBUaGUgcGF0aCBvciBURmlsZSBvYmplY3QuXG4gKiBAcGFyYW0gaXNDYXNlSW5zZW5zaXRpdmUgLSBTcGVjaWZpZXMgd2hldGhlciB0byBwZXJmb3JtIGEgY2FzZS1pbnNlbnNpdGl2ZSBzZWFyY2guIERlZmF1bHQgaXMgYGZhbHNlYC5cbiAqIEByZXR1cm5zIFRoZSBURmlsZSBvYmplY3QgaWYgZm91bmQsIG90aGVyd2lzZSBudWxsLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0RmlsZU9yTnVsbChhcHA6IEFwcCwgcGF0aE9yRmlsZTogbnVsbCB8IFBhdGhPckZpbGUsIGlzQ2FzZUluc2Vuc2l0aXZlPzogYm9vbGVhbik6IG51bGwgfCBURmlsZSB7XG4gIGNvbnN0IGZpbGUgPSBnZXRBYnN0cmFjdEZpbGVPck51bGwoYXBwLCBwYXRoT3JGaWxlLCBpc0Nhc2VJbnNlbnNpdGl2ZSk7XG4gIGlmIChpc0ZpbGUoZmlsZSkpIHtcbiAgICByZXR1cm4gZmlsZTtcbiAgfVxuICByZXR1cm4gbnVsbDtcbn1cblxuLyoqXG4gKiBSZXRyaWV2ZXMgYSBURm9sZGVyIG9iamVjdCBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgYXBwIGFuZCBwYXRoT3JGb2xkZXIuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBPYnNpZGlhbiBhcHAgaW5zdGFuY2UuXG4gKiBAcGFyYW0gcGF0aE9yRm9sZGVyIC0gVGhlIHBhdGggb3IgZm9sZGVyIGlkZW50aWZpZXIuXG4gKiBAcGFyYW0gc2hvdWxkSW5jbHVkZU5vbkV4aXN0aW5nIC0gV2hldGhlciB0byBhbGxvdyB0aGUgZm9sZGVyIHRvIG5vdCBleGlzdC5cbiAqICBJZiBgdHJ1ZWAsIGEgbmV3IFRGb2xkZXIgb2JqZWN0IGlzIGNyZWF0ZWQgZm9yIHRoZSBwcm92aWRlZCBwYXRoLlxuICogIElmIGBmYWxzZWAsIGFuIGVycm9yIGlzIHRocm93biBpZiB0aGUgZm9sZGVyIGlzIG5vdCBmb3VuZC5cbiAqIEBwYXJhbSBpc0Nhc2VJbnNlbnNpdGl2ZSAtIFNwZWNpZmllcyB3aGV0aGVyIHRvIHBlcmZvcm0gYSBjYXNlLWluc2Vuc2l0aXZlIHNlYXJjaC4gRGVmYXVsdCBpcyBgZmFsc2VgLlxuICogQHJldHVybnMgVGhlIHJldHJpZXZlZCBURm9sZGVyIG9iamVjdC5cbiAqIEB0aHJvd3MgSWYgdGhlIGZvbGRlciBpcyBub3QgZm91bmQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRGb2xkZXIoYXBwOiBBcHAsIHBhdGhPckZvbGRlcjogUGF0aE9yRm9sZGVyLCBzaG91bGRJbmNsdWRlTm9uRXhpc3Rpbmc/OiBib29sZWFuLCBpc0Nhc2VJbnNlbnNpdGl2ZT86IGJvb2xlYW4pOiBURm9sZGVyIHtcbiAgbGV0IGZvbGRlciA9IGdldEZvbGRlck9yTnVsbChhcHAsIHBhdGhPckZvbGRlciwgaXNDYXNlSW5zZW5zaXRpdmUpO1xuICBpZiAoIWZvbGRlcikge1xuICAgIGlmIChzaG91bGRJbmNsdWRlTm9uRXhpc3RpbmcpIHtcbiAgICAgIGZvbGRlciA9IGNyZWF0ZVRGb2xkZXJJbnN0YW5jZShhcHAsIHBhdGhPckZvbGRlciBhcyBzdHJpbmcpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEZvbGRlciBub3QgZm91bmQ6ICR7cGF0aE9yRm9sZGVyIGFzIHN0cmluZ31gKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gZm9sZGVyO1xufVxuXG4vKipcbiAqIFJldHJpZXZlcyBhIFRGb2xkZXIgb2JqZWN0IG9yIG51bGwgYmFzZWQgb24gdGhlIHByb3ZpZGVkIHBhdGggb3IgZm9sZGVyLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgT2JzaWRpYW4gYXBwbGljYXRpb24gaW5zdGFuY2UuXG4gKiBAcGFyYW0gcGF0aE9yRm9sZGVyIC0gVGhlIHBhdGggb3IgZm9sZGVyIHRvIHJldHJpZXZlIHRoZSBURm9sZGVyIGZyb20uXG4gKiBAcGFyYW0gaXNDYXNlSW5zZW5zaXRpdmUgLSBTcGVjaWZpZXMgd2hldGhlciB0byBwZXJmb3JtIGEgY2FzZS1pbnNlbnNpdGl2ZSBzZWFyY2guIERlZmF1bHQgaXMgYGZhbHNlYC5cbiAqIEByZXR1cm5zIFRoZSBURm9sZGVyIG9iamVjdCBpZiBmb3VuZCwgb3RoZXJ3aXNlIG51bGwuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRGb2xkZXJPck51bGwoYXBwOiBBcHAsIHBhdGhPckZvbGRlcjogbnVsbCB8IFBhdGhPckZvbGRlciwgaXNDYXNlSW5zZW5zaXRpdmU/OiBib29sZWFuKTogbnVsbCB8IFRGb2xkZXIge1xuICBjb25zdCBmb2xkZXIgPSBnZXRBYnN0cmFjdEZpbGVPck51bGwoYXBwLCBwYXRoT3JGb2xkZXIsIGlzQ2FzZUluc2Vuc2l0aXZlKTtcbiAgaWYgKGlzRm9sZGVyKGZvbGRlcikpIHtcbiAgICByZXR1cm4gZm9sZGVyO1xuICB9XG4gIHJldHVybiBudWxsO1xufVxuXG4vKipcbiAqIFJldHJpZXZlcyBhbiBhcnJheSBvZiBURmlsZSBvYmplY3RzIHJlcHJlc2VudGluZyB0aGUgbWFya2Rvd24gZmlsZXMgd2l0aGluIGEgc3BlY2lmaWVkIGZvbGRlciBvciBwYXRoLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgT2JzaWRpYW4gQXBwIGluc3RhbmNlLlxuICogQHBhcmFtIHBhdGhPckZvbGRlciAtIFRoZSBwYXRoIG9yIGZvbGRlciB0byByZXRyaWV2ZSB0aGUgbWFya2Rvd24gZmlsZXMgZnJvbS5cbiAqIEBwYXJhbSBpc1JlY3Vyc2l2ZSAtIE9wdGlvbmFsLiBTcGVjaWZpZXMgd2hldGhlciB0byByZWN1cnNpdmVseSBzZWFyY2ggZm9yIG1hcmtkb3duIGZpbGVzIHdpdGhpbiBzdWJmb2xkZXJzLiBEZWZhdWx0IGlzIGZhbHNlLlxuICogQHJldHVybnMgQW4gYXJyYXkgb2YgVEZpbGUgb2JqZWN0cyByZXByZXNlbnRpbmcgdGhlIG1hcmtkb3duIGZpbGVzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0TWFya2Rvd25GaWxlcyhhcHA6IEFwcCwgcGF0aE9yRm9sZGVyOiBQYXRoT3JGb2xkZXIsIGlzUmVjdXJzaXZlPzogYm9vbGVhbik6IFRGaWxlW10ge1xuICBjb25zdCBmb2xkZXIgPSBnZXRGb2xkZXIoYXBwLCBwYXRoT3JGb2xkZXIpO1xuXG4gIGxldCBtYXJrZG93bkZpbGVzOiBURmlsZVtdID0gW107XG5cbiAgaWYgKGlzUmVjdXJzaXZlKSB7XG4gICAgVmF1bHQucmVjdXJzZUNoaWxkcmVuKGZvbGRlciwgKGFic3RyYWN0RmlsZSkgPT4ge1xuICAgICAgaWYgKGlzTWFya2Rvd25GaWxlKGFwcCwgYWJzdHJhY3RGaWxlKSkge1xuICAgICAgICBtYXJrZG93bkZpbGVzLnB1c2goYWJzdHJhY3RGaWxlIGFzIFRGaWxlKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSBlbHNlIHtcbiAgICBtYXJrZG93bkZpbGVzID0gZm9sZGVyLmNoaWxkcmVuLmZpbHRlcigoZmlsZSkgPT4gaXNNYXJrZG93bkZpbGUoYXBwLCBmaWxlKSkgYXMgVEZpbGVbXTtcbiAgfVxuXG4gIG1hcmtkb3duRmlsZXMgPSBtYXJrZG93bkZpbGVzLnNvcnQoKGEsIGIpID0+IGEucGF0aC5sb2NhbGVDb21wYXJlKGIucGF0aCkpO1xuICByZXR1cm4gbWFya2Rvd25GaWxlcztcbn1cblxuLyoqXG4gKiBSZXRyaWV2ZXMgdGhlIFRGaWxlIG9iamVjdCBmb3IgdGhlIGdpdmVuIHBhdGggb3IgY3JlYXRlcyBhIG5ldyBvbmUgaWYgaXQgZG9lcyBub3QgZXhpc3QuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBPYnNpZGlhbiBBcHAgaW5zdGFuY2UuXG4gKiBAcGFyYW0gcGF0aCAtIFRoZSBwYXRoIG9mIHRoZSBmaWxlIHRvIHJldHJpZXZlIG9yIGNyZWF0ZS5cbiAqIEByZXR1cm5zIFRoZSBURmlsZSBvYmplY3QgcmVwcmVzZW50aW5nIHRoZSBmaWxlXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRPckNyZWF0ZUZpbGUoYXBwOiBBcHAsIHBhdGg6IHN0cmluZyk6IFByb21pc2U8VEZpbGU+IHtcbiAgY29uc3QgZmlsZSA9IGdldEZpbGVPck51bGwoYXBwLCBwYXRoKTtcbiAgaWYgKGZpbGUpIHtcbiAgICByZXR1cm4gZmlsZTtcbiAgfVxuXG4gIGNvbnN0IGZvbGRlclBhdGggPSBwYXJlbnRGb2xkZXJQYXRoKHBhdGgpO1xuICBhd2FpdCBnZXRPckNyZWF0ZUZvbGRlcihhcHAsIGZvbGRlclBhdGgpO1xuXG4gIHJldHVybiBhd2FpdCBhcHAudmF1bHQuY3JlYXRlKHBhdGgsICcnKTtcbn1cblxuLyoqXG4gKiBSZXRyaWV2ZXMgdGhlIFRGb2xkZXIgb2JqZWN0IGZvciB0aGUgZ2l2ZW4gcGF0aCBvciBjcmVhdGVzIGEgbmV3IG9uZSBpZiBpdCBkb2VzIG5vdCBleGlzdC5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIE9ic2lkaWFuIEFwcCBpbnN0YW5jZS5cbiAqIEBwYXJhbSBwYXRoIC0gVGhlIHBhdGggb2YgdGhlIGZvbGRlciB0byByZXRyaWV2ZSBvciBjcmVhdGUuXG4gKiBAcmV0dXJucyBUaGUgVEZvbGRlciBvYmplY3QgcmVwcmVzZW50aW5nIHRoZSBmb2xkZXIuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRPckNyZWF0ZUZvbGRlcihhcHA6IEFwcCwgcGF0aDogc3RyaW5nKTogUHJvbWlzZTxURm9sZGVyPiB7XG4gIGNvbnN0IGZvbGRlciA9IGdldEZvbGRlck9yTnVsbChhcHAsIHBhdGgpO1xuICBpZiAoZm9sZGVyKSB7XG4gICAgcmV0dXJuIGZvbGRlcjtcbiAgfVxuXG4gIHJldHVybiBhd2FpdCBhcHAudmF1bHQuY3JlYXRlRm9sZGVyKHBhdGgpO1xufVxuXG4vKipcbiAqIFJldHVybnMgdGhlIHBhdGggb2YgdGhlIGdpdmVuIGBwYXRoT3JGaWxlYC5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIE9ic2lkaWFuIEFwcCBpbnN0YW5jZS5cbiAqIEBwYXJhbSBwYXRoT3JGaWxlIC0gVGhlIHBhdGggb3IgYWJzdHJhY3QgZmlsZS5cbiAqIEByZXR1cm5zIFRoZSBwYXRoIG9mIHRoZSBgcGF0aE9yRmlsZWAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRQYXRoKGFwcDogQXBwLCBwYXRoT3JGaWxlOiBQYXRoT3JBYnN0cmFjdEZpbGUpOiBzdHJpbmcge1xuICBpZiAoaXNBYnN0cmFjdEZpbGUocGF0aE9yRmlsZSkpIHtcbiAgICByZXR1cm4gcGF0aE9yRmlsZS5wYXRoO1xuICB9XG5cbiAgY29uc3QgZmlsZSA9IGdldEFic3RyYWN0RmlsZU9yTnVsbChhcHAsIHBhdGhPckZpbGUpO1xuICBpZiAoZmlsZSkge1xuICAgIHJldHVybiBmaWxlLnBhdGg7XG4gIH1cblxuICByZXR1cm4gZ2V0UmVzb2x2ZWRQYXRoKHBhdGhPckZpbGUpO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiB0aGUgZ2l2ZW4gZmlsZSBpcyBhbiBpbnN0YW5jZSBvZiBUQWJzdHJhY3RGaWxlLlxuICpcbiAqIEBwYXJhbSBmaWxlIC0gVGhlIGZpbGUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyBBIGJvb2xlYW4gaW5kaWNhdGluZyB3aGV0aGVyIHRoZSBmaWxlIGlzIGFuIGluc3RhbmNlIG9mIFRBYnN0cmFjdEZpbGUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0Fic3RyYWN0RmlsZShmaWxlOiB1bmtub3duKTogZmlsZSBpcyBUQWJzdHJhY3RGaWxlIHtcbiAgcmV0dXJuIGZpbGUgaW5zdGFuY2VvZiBUQWJzdHJhY3RGaWxlO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiB0aGUgZ2l2ZW4gZmlsZSBpcyBhIGNhbnZhcyBmaWxlLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgT2JzaWRpYW4gQXBwIGluc3RhbmNlLlxuICogQHBhcmFtIHBhdGhPckZpbGUgLSBUaGUgcGF0aCBvciBmaWxlIHRvIGNoZWNrLlxuICogQHJldHVybnMgQSBib29sZWFuIGluZGljYXRpbmcgd2hldGhlciB0aGUgZmlsZSBpcyBhIGNhbnZhcyBmaWxlIG9yIG5vdC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzQ2FudmFzRmlsZShhcHA6IEFwcCwgcGF0aE9yRmlsZTogbnVsbCB8IFBhdGhPckFic3RyYWN0RmlsZSk6IGJvb2xlYW4ge1xuICByZXR1cm4gY2hlY2tFeHRlbnNpb24oYXBwLCBwYXRoT3JGaWxlLCBDQU5WQVNfRklMRV9FWFRFTlNJT04pO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiB0aGUgZ2l2ZW4gZmlsZSBpcyBhbiBpbnN0YW5jZSBvZiBURmlsZS5cbiAqXG4gKiBAcGFyYW0gZmlsZSAtIFRoZSBmaWxlIHRvIGNoZWNrLlxuICogQHJldHVybnMgQSBib29sZWFuIGluZGljYXRpbmcgd2hldGhlciB0aGUgZmlsZSBpcyBhbiBpbnN0YW5jZSBvZiBURmlsZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzRmlsZShmaWxlOiB1bmtub3duKTogZmlsZSBpcyBURmlsZSB7XG4gIHJldHVybiBmaWxlIGluc3RhbmNlb2YgVEZpbGU7XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIHRoZSBnaXZlbiBmaWxlIGlzIGEgZm9sZGVyLlxuICpcbiAqIEBwYXJhbSBmaWxlIC0gVGhlIGZpbGUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyBgdHJ1ZWAgaWYgdGhlIGZpbGUgaXMgYSBmb2xkZXIsIGBmYWxzZWAgb3RoZXJ3aXNlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNGb2xkZXIoZmlsZTogdW5rbm93bik6IGZpbGUgaXMgVEZvbGRlciB7XG4gIHJldHVybiBmaWxlIGluc3RhbmNlb2YgVEZvbGRlcjtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgdGhlIGdpdmVuIGZpbGUgaXMgYSBNYXJrZG93biBmaWxlLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgT2JzaWRpYW4gQXBwIGluc3RhbmNlLlxuICogQHBhcmFtIHBhdGhPckZpbGUgLSBUaGUgcGF0aCBvciBmaWxlIHRvIGNoZWNrLlxuICogQHJldHVybnMgQSBib29sZWFuIGluZGljYXRpbmcgd2hldGhlciB0aGUgZmlsZSBpcyBhIE1hcmtkb3duIGZpbGUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc01hcmtkb3duRmlsZShhcHA6IEFwcCwgcGF0aE9yRmlsZTogbnVsbCB8IFBhdGhPckFic3RyYWN0RmlsZSk6IGJvb2xlYW4ge1xuICByZXR1cm4gY2hlY2tFeHRlbnNpb24oYXBwLCBwYXRoT3JGaWxlLCBNQVJLRE9XTl9GSUxFX0VYVEVOU0lPTik7XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIHRoZSBnaXZlbiBmaWxlIGlzIGEgbm90ZS5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIE9ic2lkaWFuIEFwcCBpbnN0YW5jZS5cbiAqIEBwYXJhbSBwYXRoT3JGaWxlIC0gVGhlIHBhdGggb3IgZmlsZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIEEgYm9vbGVhbiBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIGZpbGUgaXMgYSBub3RlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNOb3RlKGFwcDogQXBwLCBwYXRoT3JGaWxlOiBudWxsIHwgUGF0aE9yQWJzdHJhY3RGaWxlKTogYm9vbGVhbiB7XG4gIHJldHVybiBpc01hcmtkb3duRmlsZShhcHAsIHBhdGhPckZpbGUpIHx8IGlzQ2FudmFzRmlsZShhcHAsIHBhdGhPckZpbGUpO1xufVxuXG4vKipcbiAqIFRyaW1zIHRoZSBtYXJrZG93biBleHRlbnNpb24gZnJvbSB0aGUgZmlsZSBwYXRoIGlmIHRoZSBmaWxlIGlzIGEgbWFya2Rvd24gZmlsZS5cbiAqIElmIHRoZSBmaWxlIGlzIG5vdCBhIG1hcmtkb3duIGZpbGUsIHRoZSBvcmlnaW5hbCBmaWxlIHBhdGggaXMgcmV0dXJuZWQuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBPYnNpZGlhbiBBcHAgaW5zdGFuY2UuXG4gKiBAcGFyYW0gZmlsZSAtIFRoZSBmaWxlIHRvIHRyaW0gdGhlIG1hcmtkb3duIGV4dGVuc2lvbiBmcm9tLlxuICogQHJldHVybnMgVGhlIGZpbGUgcGF0aCB3aXRoIHRoZSBtYXJrZG93biBleHRlbnNpb24gdHJpbW1lZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRyaW1NYXJrZG93bkV4dGVuc2lvbihhcHA6IEFwcCwgZmlsZTogVEFic3RyYWN0RmlsZSk6IHN0cmluZyB7XG4gIGlmICghaXNNYXJrZG93bkZpbGUoYXBwLCBmaWxlKSkge1xuICAgIHJldHVybiBmaWxlLnBhdGg7XG4gIH1cblxuICByZXR1cm4gdHJpbUVuZChmaWxlLnBhdGgsIGAuJHtNQVJLRE9XTl9GSUxFX0VYVEVOU0lPTn1gKTtcbn1cblxuZnVuY3Rpb24gZ2V0RmlsZUludGVybmFsKGFwcDogQXBwLCBwYXRoOiBzdHJpbmcsIGlzQ2FzZUluc2Vuc2l0aXZlPzogYm9vbGVhbik6IG51bGwgfCBUQWJzdHJhY3RGaWxlIHtcbiAgaWYgKGlzQ2FzZUluc2Vuc2l0aXZlKSB7XG4gICAgcmV0dXJuIGFwcC52YXVsdC5nZXRBYnN0cmFjdEZpbGVCeVBhdGhJbnNlbnNpdGl2ZShwYXRoKTtcbiAgfVxuXG4gIHJldHVybiBhcHAudmF1bHQuZ2V0QWJzdHJhY3RGaWxlQnlQYXRoKHBhdGgpIGFzIG51bGwgfCBURmlsZTtcbn1cblxuZnVuY3Rpb24gZ2V0UmVzb2x2ZWRQYXRoKHBhdGg6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBub3JtYWxpemVQYXRoKHJlc29sdmUoJy8nLCBwYXRoKSk7XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7O0FBT0E7QUFBQSxFQUNFO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLE9BQ0s7QUFDUDtBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLE9BQ0s7QUFFUDtBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsT0FDSztBQUNQLFNBQVMsZUFBZTtBQUtqQixNQUFNLDBCQUEwQjtBQUtoQyxNQUFNLHdCQUF3QjtBQXlCOUIsU0FBUyxlQUFlLEtBQVUsWUFBdUMsV0FBNEI7QUFDMUcsTUFBSSxPQUFPLFVBQVUsR0FBRztBQUN0QixXQUFPLFdBQVcsY0FBYztBQUFBLEVBQ2xDO0FBRUEsTUFBSSxPQUFPLGVBQWUsVUFBVTtBQUNsQyxVQUFNLE9BQU8sY0FBYyxLQUFLLFVBQVU7QUFDMUMsUUFBSSxNQUFNO0FBQ1IsYUFBTyxLQUFLLGNBQWM7QUFBQSxJQUM1QjtBQUVBLFdBQU8sUUFBUSxVQUFVLEVBQUUsTUFBTSxDQUFDLE1BQU07QUFBQSxFQUMxQztBQUVBLFNBQU87QUFDVDtBQVdPLFNBQVMsZ0JBQWdCLEtBQVUsWUFBZ0MsbUJBQTRDO0FBQ3BILFFBQU0sT0FBTyxzQkFBc0IsS0FBSyxZQUFZLGlCQUFpQjtBQUNyRSxNQUFJLENBQUMsTUFBTTtBQUNULFVBQU0sSUFBSSxNQUFNLDRCQUE0QixVQUFvQixFQUFFO0FBQUEsRUFDcEU7QUFFQSxTQUFPO0FBQ1Q7QUFVTyxTQUFTLHNCQUFzQixLQUFVLFlBQXVDLG1CQUFtRDtBQUN4SSxNQUFJLGVBQWUsTUFBTTtBQUN2QixXQUFPO0FBQUEsRUFDVDtBQUVBLE1BQUksZUFBZSxVQUFVLEdBQUc7QUFDOUIsV0FBTztBQUFBLEVBQ1Q7QUFFQSxRQUFNLE9BQU8sZ0JBQWdCLEtBQUss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
196
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL0ZpbGVTeXN0ZW0udHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQHBhY2thZ2VEb2N1bWVudGF0aW9uXG4gKlxuICogVGhpcyBtb2R1bGUgcHJvdmlkZXMgdXRpbGl0eSBmdW5jdGlvbnMgZm9yIHdvcmtpbmcgd2l0aCBUQWJzdHJhY3RGaWxlLCBURmlsZSwgYW5kIFRGb2xkZXIgaW5zdGFuY2VzIGluIE9ic2lkaWFuLlxuICovXG5cbmltcG9ydCB0eXBlIHsgQXBwIH0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQge1xuICBub3JtYWxpemVQYXRoLFxuICBUQWJzdHJhY3RGaWxlLFxuICBURmlsZSxcbiAgVEZvbGRlcixcbiAgVmF1bHRcbn0gZnJvbSAnb2JzaWRpYW4nO1xuaW1wb3J0IHtcbiAgY3JlYXRlVEZpbGVJbnN0YW5jZSxcbiAgY3JlYXRlVEZvbGRlckluc3RhbmNlLFxuICBwYXJlbnRGb2xkZXJQYXRoXG59IGZyb20gJ29ic2lkaWFuLXR5cGluZ3MvaW1wbGVtZW50YXRpb25zJztcblxuaW1wb3J0IHtcbiAgZXh0bmFtZSxcbiAgcmVzb2x2ZVxufSBmcm9tICcuLi9QYXRoLnRzJztcbmltcG9ydCB7IHRyaW1FbmQgfSBmcm9tICcuLi9TdHJpbmcudHMnO1xuXG4vKipcbiAqIFRoZSBmaWxlIGV4dGVuc2lvbiBmb3IgTWFya2Rvd24gZmlsZXMuXG4gKi9cbmV4cG9ydCBjb25zdCBNQVJLRE9XTl9GSUxFX0VYVEVOU0lPTiA9ICdtZCc7XG5cbi8qKlxuICogUmVwcmVzZW50cyB0aGUgZmlsZSBleHRlbnNpb24gZm9yIGNhbnZhcyBmaWxlcy5cbiAqL1xuZXhwb3J0IGNvbnN0IENBTlZBU19GSUxFX0VYVEVOU0lPTiA9ICdjYW52YXMnO1xuXG4vKipcbiAqIFJlcHJlc2VudHMgYSBwYXRoIG9yIGFuIGluc3RhbmNlIG9mIFRBYnN0cmFjdEZpbGUuXG4gKi9cbmV4cG9ydCB0eXBlIFBhdGhPckFic3RyYWN0RmlsZSA9IHN0cmluZyB8IFRBYnN0cmFjdEZpbGU7XG5cbi8qKlxuICogUmVwcmVzZW50cyBhIHBhdGggb3IgYSBmaWxlLlxuICovXG5leHBvcnQgdHlwZSBQYXRoT3JGaWxlID0gc3RyaW5nIHwgVEZpbGU7XG5cbi8qKlxuICogUmVwcmVzZW50cyBhIHBhdGggb3IgYW4gaW5zdGFuY2Ugb2YgVEZvbGRlci5cbiAqL1xuZXhwb3J0IHR5cGUgUGF0aE9yRm9sZGVyID0gc3RyaW5nIHwgVEZvbGRlcjtcblxuLyoqXG4gKiBDaGVja3MgaWYgdGhlIGdpdmVuIHBhdGggb3IgZmlsZSBoYXMgdGhlIHNwZWNpZmllZCBleHRlbnNpb24uXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBPYnNpZGlhbiBBcHAgaW5zdGFuY2UuXG4gKiBAcGFyYW0gcGF0aE9yRmlsZSAtIFRoZSBwYXRoIG9yIGFic3RyYWN0IGZpbGUgdG8gY2hlY2suXG4gKiBAcGFyYW0gZXh0ZW5zaW9uIC0gVGhlIGV4dGVuc2lvbiB0byBjb21wYXJlIGFnYWluc3QuXG4gKiBAcmV0dXJucyBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgcGF0aCBvciBmaWxlIGhhcyB0aGUgc3BlY2lmaWVkIGV4dGVuc2lvbiwgYGZhbHNlYCBvdGhlcndpc2UuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjaGVja0V4dGVuc2lvbihhcHA6IEFwcCwgcGF0aE9yRmlsZTogbnVsbCB8IFBhdGhPckFic3RyYWN0RmlsZSwgZXh0ZW5zaW9uOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgaWYgKGlzRmlsZShwYXRoT3JGaWxlKSkge1xuICAgIHJldHVybiBwYXRoT3JGaWxlLmV4dGVuc2lvbiA9PT0gZXh0ZW5zaW9uO1xuICB9XG5cbiAgaWYgKHR5cGVvZiBwYXRoT3JGaWxlID09PSAnc3RyaW5nJykge1xuICAgIGNvbnN0IGZpbGUgPSBnZXRGaWxlT3JOdWxsKGFwcCwgcGF0aE9yRmlsZSk7XG4gICAgaWYgKGZpbGUpIHtcbiAgICAgIHJldHVybiBmaWxlLmV4dGVuc2lvbiA9PT0gZXh0ZW5zaW9uO1xuICAgIH1cblxuICAgIHJldHVybiBleHRuYW1lKHBhdGhPckZpbGUpLnNsaWNlKDEpID09PSBleHRlbnNpb247XG4gIH1cblxuICByZXR1cm4gZmFsc2U7XG59XG5cbi8qKlxuICogUmV0cmlldmVzIHRoZSBUQWJzdHJhY3RGaWxlIG9iamVjdCBmb3IgdGhlIGdpdmVuIHBhdGggb3IgYWJzdHJhY3QgZmlsZS5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIEFwcCBpbnN0YW5jZS5cbiAqIEBwYXJhbSBwYXRoT3JGaWxlIC0gVGhlIHBhdGggb3IgYWJzdHJhY3QgZmlsZSB0byByZXRyaWV2ZSB0aGUgVEFic3RyYWN0RmlsZSBmb3IuXG4gKiBAcGFyYW0gaXNDYXNlSW5zZW5zaXRpdmUgLSBTcGVjaWZpZXMgd2hldGhlciB0byBwZXJmb3JtIGEgY2FzZS1pbnNlbnNpdGl2ZSBzZWFyY2guIERlZmF1bHQgaXMgYGZhbHNlYC5cbiAqIEByZXR1cm5zIFRoZSBUQWJzdHJhY3RGaWxlIG9iamVjdC5cbiAqIEB0aHJvd3MgRXJyb3IgaWYgdGhlIGFic3RyYWN0IGZpbGUgaXMgbm90IGZvdW5kLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0QWJzdHJhY3RGaWxlKGFwcDogQXBwLCBwYXRoT3JGaWxlOiBQYXRoT3JBYnN0cmFjdEZpbGUsIGlzQ2FzZUluc2Vuc2l0aXZlPzogYm9vbGVhbik6IFRBYnN0cmFjdEZpbGUge1xuICBjb25zdCBmaWxlID0gZ2V0QWJzdHJhY3RGaWxlT3JOdWxsKGFwcCwgcGF0aE9yRmlsZSwgaXNDYXNlSW5zZW5zaXRpdmUpO1xuICBpZiAoIWZpbGUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYEFic3RyYWN0IGZpbGUgbm90IGZvdW5kOiAke3BhdGhPckZpbGUgYXMgc3RyaW5nfWApO1xuICB9XG5cbiAgcmV0dXJuIGZpbGU7XG59XG5cbi8qKlxuICogUmV0cmlldmVzIGFuIGluc3RhbmNlIG9mIFRBYnN0cmFjdEZpbGUgb3IgbnVsbCBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgcGF0aCBvciBhYnN0cmFjdCBmaWxlLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgYXBwbGljYXRpb24gaW5zdGFuY2UuXG4gKiBAcGFyYW0gcGF0aE9yRmlsZSAtIFRoZSBwYXRoIG9yIGFic3RyYWN0IGZpbGUgdG8gcmV0cmlldmUuXG4gKiBAcGFyYW0gaXNDYXNlSW5zZW5zaXRpdmUgLSBTcGVjaWZpZXMgd2hldGhlciB0byBwZXJmb3JtIGEgY2FzZS1pbnNlbnNpdGl2ZSBzZWFyY2guIERlZmF1bHQgaXMgYGZhbHNlYC5cbiAqIEByZXR1cm5zIFRoZSBpbnN0YW5jZSBvZiBUQWJzdHJhY3RGaWxlIGlmIGZvdW5kLCBvdGhlcndpc2UgbnVsbC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEFic3RyYWN0RmlsZU9yTnVsbChhcHA6IEFwcCwgcGF0aE9yRmlsZTogbnVsbCB8IFBhdGhPckFic3RyYWN0RmlsZSwgaXNDYXNlSW5zZW5zaXRpdmU/OiBib29sZWFuKTogbnVsbCB8IFRBYnN0cmFjdEZpbGUge1xuICBpZiAocGF0aE9yRmlsZSA9PT0gbnVsbCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgaWYgKGlzQWJzdHJhY3RGaWxlKHBhdGhPckZpbGUpKSB7XG4gICAgcmV0dXJuIHBhdGhPckZpbGU7XG4gIH1cblxuICBjb25zdCBmaWxlID0gZ2V0RmlsZUludGVybmFsKGFwcCwgcGF0aE9yRmlsZSwgaXNDYXNlSW5zZW5zaXRpdmUpO1xuXG4gIGlmIChmaWxlKSB7XG4gICAgcmV0dXJuIGZpbGU7XG4gIH1cblxuICBjb25zdCByZXNvbHZlZFBhdGggPSBnZXRSZXNvbHZlZFBhdGgocGF0aE9yRmlsZSk7XG5cbiAgaWYgKHJlc29sdmVkUGF0aCA9PT0gcGF0aE9yRmlsZSkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgcmV0dXJuIGdldEZpbGVJbnRlcm5hbChhcHAsIHJlc29sdmVkUGF0aCwgaXNDYXNlSW5zZW5zaXRpdmUpO1xufVxuXG4vKipcbiAqIFJldHJpZXZlcyBhIFRGaWxlIG9iamVjdCBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgcGF0aCBvciBmaWxlLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgT2JzaWRpYW4gQXBwIGluc3RhbmNlLlxuICogQHBhcmFtIHBhdGhPckZpbGUgLSBUaGUgcGF0aCBvciBmaWxlIHRvIHJldHJpZXZlIHRoZSBURmlsZSBvYmplY3QgZm9yLlxuICogQHBhcmFtIHNob3VsZEluY2x1ZGVOb25FeGlzdGluZyAtIFdoZXRoZXIgdG8gaW5jbHVkZSBhIG5vbi1leGlzdGluZyBmaWxlLlxuICogIElmIGB0cnVlYCwgYSBuZXcgVEZpbGUgb2JqZWN0IGlzIGNyZWF0ZWQgZm9yIHRoZSBwcm92aWRlZCBwYXRoLlxuICogIElmIGBmYWxzZWAsIGFuIGVycm9yIGlzIHRocm93biBpZiB0aGUgZmlsZSBpcyBub3QgZm91bmQuXG4gKiBAcGFyYW0gaXNDYXNlSW5zZW5zaXRpdmUgLSBTcGVjaWZpZXMgd2hldGhlciB0byBwZXJmb3JtIGEgY2FzZS1pbnNlbnNpdGl2ZSBzZWFyY2guIERlZmF1bHQgaXMgYGZhbHNlYC5cbiAqIEByZXR1cm5zIFRoZSBURmlsZSBvYmplY3QgY29ycmVzcG9uZGluZyB0byB0aGUgcHJvdmlkZWQgcGF0aCBvciBmaWxlLlxuICogQHRocm93cyBFcnJvciBpZiB0aGUgZmlsZSBpcyBub3QgZm91bmQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRGaWxlKGFwcDogQXBwLCBwYXRoT3JGaWxlOiBQYXRoT3JGaWxlLCBzaG91bGRJbmNsdWRlTm9uRXhpc3Rpbmc/OiBib29sZWFuLCBpc0Nhc2VJbnNlbnNpdGl2ZT86IGJvb2xlYW4pOiBURmlsZSB7XG4gIGxldCBmaWxlID0gZ2V0RmlsZU9yTnVsbChhcHAsIHBhdGhPckZpbGUsIGlzQ2FzZUluc2Vuc2l0aXZlKTtcbiAgaWYgKCFmaWxlKSB7XG4gICAgaWYgKHNob3VsZEluY2x1ZGVOb25FeGlzdGluZykge1xuICAgICAgZmlsZSA9IGNyZWF0ZVRGaWxlSW5zdGFuY2UoYXBwLCBwYXRoT3JGaWxlIGFzIHN0cmluZyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgRmlsZSBub3QgZm91bmQ6ICR7cGF0aE9yRmlsZSBhcyBzdHJpbmd9YCk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGZpbGU7XG59XG5cbi8qKlxuICogUmV0cmlldmVzIGEgVEZpbGUgb2JqZWN0IGJhc2VkIG9uIHRoZSBwcm92aWRlZCBwYXRoIG9yIGZpbGUuXG4gKiBJZiB0aGUgcHJvdmlkZWQgYXJndW1lbnQgaXMgYWxyZWFkeSBhIFRGaWxlIG9iamVjdCwgaXQgaXMgcmV0dXJuZWQgYXMgaXMuXG4gKiBPdGhlcndpc2UsIHRoZSBmdW5jdGlvbiB1c2VzIHRoZSBhcHAncyB2YXVsdCB0byByZXRyaWV2ZSB0aGUgVEZpbGUgb2JqZWN0IGJ5IGl0cyBwYXRoLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgT2JzaWRpYW4gQXBwIGluc3RhbmNlLlxuICogQHBhcmFtIHBhdGhPckZpbGUgLSBUaGUgcGF0aCBvciBURmlsZSBvYmplY3QuXG4gKiBAcGFyYW0gaXNDYXNlSW5zZW5zaXRpdmUgLSBTcGVjaWZpZXMgd2hldGhlciB0byBwZXJmb3JtIGEgY2FzZS1pbnNlbnNpdGl2ZSBzZWFyY2guIERlZmF1bHQgaXMgYGZhbHNlYC5cbiAqIEByZXR1cm5zIFRoZSBURmlsZSBvYmplY3QgaWYgZm91bmQsIG90aGVyd2lzZSBudWxsLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0RmlsZU9yTnVsbChhcHA6IEFwcCwgcGF0aE9yRmlsZTogbnVsbCB8IFBhdGhPckZpbGUsIGlzQ2FzZUluc2Vuc2l0aXZlPzogYm9vbGVhbik6IG51bGwgfCBURmlsZSB7XG4gIGNvbnN0IGZpbGUgPSBnZXRBYnN0cmFjdEZpbGVPck51bGwoYXBwLCBwYXRoT3JGaWxlLCBpc0Nhc2VJbnNlbnNpdGl2ZSk7XG4gIGlmIChpc0ZpbGUoZmlsZSkpIHtcbiAgICByZXR1cm4gZmlsZTtcbiAgfVxuICByZXR1cm4gbnVsbDtcbn1cblxuLyoqXG4gKiBSZXRyaWV2ZXMgYSBURm9sZGVyIG9iamVjdCBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgYXBwIGFuZCBwYXRoT3JGb2xkZXIuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBPYnNpZGlhbiBhcHAgaW5zdGFuY2UuXG4gKiBAcGFyYW0gcGF0aE9yRm9sZGVyIC0gVGhlIHBhdGggb3IgZm9sZGVyIGlkZW50aWZpZXIuXG4gKiBAcGFyYW0gc2hvdWxkSW5jbHVkZU5vbkV4aXN0aW5nIC0gV2hldGhlciB0byBhbGxvdyB0aGUgZm9sZGVyIHRvIG5vdCBleGlzdC5cbiAqICBJZiBgdHJ1ZWAsIGEgbmV3IFRGb2xkZXIgb2JqZWN0IGlzIGNyZWF0ZWQgZm9yIHRoZSBwcm92aWRlZCBwYXRoLlxuICogIElmIGBmYWxzZWAsIGFuIGVycm9yIGlzIHRocm93biBpZiB0aGUgZm9sZGVyIGlzIG5vdCBmb3VuZC5cbiAqIEBwYXJhbSBpc0Nhc2VJbnNlbnNpdGl2ZSAtIFNwZWNpZmllcyB3aGV0aGVyIHRvIHBlcmZvcm0gYSBjYXNlLWluc2Vuc2l0aXZlIHNlYXJjaC4gRGVmYXVsdCBpcyBgZmFsc2VgLlxuICogQHJldHVybnMgVGhlIHJldHJpZXZlZCBURm9sZGVyIG9iamVjdC5cbiAqIEB0aHJvd3MgSWYgdGhlIGZvbGRlciBpcyBub3QgZm91bmQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRGb2xkZXIoYXBwOiBBcHAsIHBhdGhPckZvbGRlcjogUGF0aE9yRm9sZGVyLCBzaG91bGRJbmNsdWRlTm9uRXhpc3Rpbmc/OiBib29sZWFuLCBpc0Nhc2VJbnNlbnNpdGl2ZT86IGJvb2xlYW4pOiBURm9sZGVyIHtcbiAgbGV0IGZvbGRlciA9IGdldEZvbGRlck9yTnVsbChhcHAsIHBhdGhPckZvbGRlciwgaXNDYXNlSW5zZW5zaXRpdmUpO1xuICBpZiAoIWZvbGRlcikge1xuICAgIGlmIChzaG91bGRJbmNsdWRlTm9uRXhpc3RpbmcpIHtcbiAgICAgIGZvbGRlciA9IGNyZWF0ZVRGb2xkZXJJbnN0YW5jZShhcHAsIHBhdGhPckZvbGRlciBhcyBzdHJpbmcpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEZvbGRlciBub3QgZm91bmQ6ICR7cGF0aE9yRm9sZGVyIGFzIHN0cmluZ31gKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gZm9sZGVyO1xufVxuXG4vKipcbiAqIFJldHJpZXZlcyBhIFRGb2xkZXIgb2JqZWN0IG9yIG51bGwgYmFzZWQgb24gdGhlIHByb3ZpZGVkIHBhdGggb3IgZm9sZGVyLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgT2JzaWRpYW4gYXBwbGljYXRpb24gaW5zdGFuY2UuXG4gKiBAcGFyYW0gcGF0aE9yRm9sZGVyIC0gVGhlIHBhdGggb3IgZm9sZGVyIHRvIHJldHJpZXZlIHRoZSBURm9sZGVyIGZyb20uXG4gKiBAcGFyYW0gaXNDYXNlSW5zZW5zaXRpdmUgLSBTcGVjaWZpZXMgd2hldGhlciB0byBwZXJmb3JtIGEgY2FzZS1pbnNlbnNpdGl2ZSBzZWFyY2guIERlZmF1bHQgaXMgYGZhbHNlYC5cbiAqIEByZXR1cm5zIFRoZSBURm9sZGVyIG9iamVjdCBpZiBmb3VuZCwgb3RoZXJ3aXNlIG51bGwuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRGb2xkZXJPck51bGwoYXBwOiBBcHAsIHBhdGhPckZvbGRlcjogbnVsbCB8IFBhdGhPckZvbGRlciwgaXNDYXNlSW5zZW5zaXRpdmU/OiBib29sZWFuKTogbnVsbCB8IFRGb2xkZXIge1xuICBjb25zdCBmb2xkZXIgPSBnZXRBYnN0cmFjdEZpbGVPck51bGwoYXBwLCBwYXRoT3JGb2xkZXIsIGlzQ2FzZUluc2Vuc2l0aXZlKTtcbiAgaWYgKGlzRm9sZGVyKGZvbGRlcikpIHtcbiAgICByZXR1cm4gZm9sZGVyO1xuICB9XG4gIHJldHVybiBudWxsO1xufVxuXG4vKipcbiAqIFJldHJpZXZlcyBhbiBhcnJheSBvZiBURmlsZSBvYmplY3RzIHJlcHJlc2VudGluZyB0aGUgbWFya2Rvd24gZmlsZXMgd2l0aGluIGEgc3BlY2lmaWVkIGZvbGRlciBvciBwYXRoLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgT2JzaWRpYW4gQXBwIGluc3RhbmNlLlxuICogQHBhcmFtIHBhdGhPckZvbGRlciAtIFRoZSBwYXRoIG9yIGZvbGRlciB0byByZXRyaWV2ZSB0aGUgbWFya2Rvd24gZmlsZXMgZnJvbS5cbiAqIEBwYXJhbSBpc1JlY3Vyc2l2ZSAtIE9wdGlvbmFsLiBTcGVjaWZpZXMgd2hldGhlciB0byByZWN1cnNpdmVseSBzZWFyY2ggZm9yIG1hcmtkb3duIGZpbGVzIHdpdGhpbiBzdWJmb2xkZXJzLiBEZWZhdWx0IGlzIGZhbHNlLlxuICogQHJldHVybnMgQW4gYXJyYXkgb2YgVEZpbGUgb2JqZWN0cyByZXByZXNlbnRpbmcgdGhlIG1hcmtkb3duIGZpbGVzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0TWFya2Rvd25GaWxlcyhhcHA6IEFwcCwgcGF0aE9yRm9sZGVyOiBQYXRoT3JGb2xkZXIsIGlzUmVjdXJzaXZlPzogYm9vbGVhbik6IFRGaWxlW10ge1xuICBjb25zdCBmb2xkZXIgPSBnZXRGb2xkZXIoYXBwLCBwYXRoT3JGb2xkZXIpO1xuXG4gIGxldCBtYXJrZG93bkZpbGVzOiBURmlsZVtdID0gW107XG5cbiAgaWYgKGlzUmVjdXJzaXZlKSB7XG4gICAgVmF1bHQucmVjdXJzZUNoaWxkcmVuKGZvbGRlciwgKGFic3RyYWN0RmlsZSkgPT4ge1xuICAgICAgaWYgKGlzTWFya2Rvd25GaWxlKGFwcCwgYWJzdHJhY3RGaWxlKSkge1xuICAgICAgICBtYXJrZG93bkZpbGVzLnB1c2goYWJzdHJhY3RGaWxlIGFzIFRGaWxlKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSBlbHNlIHtcbiAgICBtYXJrZG93bkZpbGVzID0gZm9sZGVyLmNoaWxkcmVuLmZpbHRlcigoZmlsZSkgPT4gaXNNYXJrZG93bkZpbGUoYXBwLCBmaWxlKSkgYXMgVEZpbGVbXTtcbiAgfVxuXG4gIG1hcmtkb3duRmlsZXMgPSBtYXJrZG93bkZpbGVzLnNvcnQoKGEsIGIpID0+IGEucGF0aC5sb2NhbGVDb21wYXJlKGIucGF0aCkpO1xuICByZXR1cm4gbWFya2Rvd25GaWxlcztcbn1cblxuLyoqXG4gKiBSZXRyaWV2ZXMgdGhlIFRGaWxlIG9iamVjdCBmb3IgdGhlIGdpdmVuIHBhdGggb3IgY3JlYXRlcyBhIG5ldyBvbmUgaWYgaXQgZG9lcyBub3QgZXhpc3QuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBPYnNpZGlhbiBBcHAgaW5zdGFuY2UuXG4gKiBAcGFyYW0gcGF0aCAtIFRoZSBwYXRoIG9mIHRoZSBmaWxlIHRvIHJldHJpZXZlIG9yIGNyZWF0ZS5cbiAqIEByZXR1cm5zIFRoZSBURmlsZSBvYmplY3QgcmVwcmVzZW50aW5nIHRoZSBmaWxlXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRPckNyZWF0ZUZpbGUoYXBwOiBBcHAsIHBhdGg6IHN0cmluZyk6IFByb21pc2U8VEZpbGU+IHtcbiAgY29uc3QgZmlsZSA9IGdldEZpbGVPck51bGwoYXBwLCBwYXRoKTtcbiAgaWYgKGZpbGUpIHtcbiAgICByZXR1cm4gZmlsZTtcbiAgfVxuXG4gIGNvbnN0IGZvbGRlclBhdGggPSBwYXJlbnRGb2xkZXJQYXRoKHBhdGgpO1xuICBhd2FpdCBnZXRPckNyZWF0ZUZvbGRlcihhcHAsIGZvbGRlclBhdGgpO1xuXG4gIHJldHVybiBhd2FpdCBhcHAudmF1bHQuY3JlYXRlKHBhdGgsICcnKTtcbn1cblxuLyoqXG4gKiBSZXRyaWV2ZXMgdGhlIFRGb2xkZXIgb2JqZWN0IGZvciB0aGUgZ2l2ZW4gcGF0aCBvciBjcmVhdGVzIGEgbmV3IG9uZSBpZiBpdCBkb2VzIG5vdCBleGlzdC5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIE9ic2lkaWFuIEFwcCBpbnN0YW5jZS5cbiAqIEBwYXJhbSBwYXRoIC0gVGhlIHBhdGggb2YgdGhlIGZvbGRlciB0byByZXRyaWV2ZSBvciBjcmVhdGUuXG4gKiBAcmV0dXJucyBUaGUgVEZvbGRlciBvYmplY3QgcmVwcmVzZW50aW5nIHRoZSBmb2xkZXIuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRPckNyZWF0ZUZvbGRlcihhcHA6IEFwcCwgcGF0aDogc3RyaW5nKTogUHJvbWlzZTxURm9sZGVyPiB7XG4gIGNvbnN0IGZvbGRlciA9IGdldEZvbGRlck9yTnVsbChhcHAsIHBhdGgpO1xuICBpZiAoZm9sZGVyKSB7XG4gICAgcmV0dXJuIGZvbGRlcjtcbiAgfVxuXG4gIHJldHVybiBhd2FpdCBhcHAudmF1bHQuY3JlYXRlRm9sZGVyKHBhdGgpO1xufVxuXG4vKipcbiAqIFJldHVybnMgdGhlIHBhdGggb2YgdGhlIGdpdmVuIGBwYXRoT3JGaWxlYC5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIE9ic2lkaWFuIEFwcCBpbnN0YW5jZS5cbiAqIEBwYXJhbSBwYXRoT3JGaWxlIC0gVGhlIHBhdGggb3IgYWJzdHJhY3QgZmlsZS5cbiAqIEByZXR1cm5zIFRoZSBwYXRoIG9mIHRoZSBgcGF0aE9yRmlsZWAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRQYXRoKGFwcDogQXBwLCBwYXRoT3JGaWxlOiBQYXRoT3JBYnN0cmFjdEZpbGUpOiBzdHJpbmcge1xuICBpZiAoaXNBYnN0cmFjdEZpbGUocGF0aE9yRmlsZSkpIHtcbiAgICByZXR1cm4gcGF0aE9yRmlsZS5wYXRoO1xuICB9XG5cbiAgY29uc3QgZmlsZSA9IGdldEFic3RyYWN0RmlsZU9yTnVsbChhcHAsIHBhdGhPckZpbGUpO1xuICBpZiAoZmlsZSkge1xuICAgIHJldHVybiBmaWxlLnBhdGg7XG4gIH1cblxuICByZXR1cm4gZ2V0UmVzb2x2ZWRQYXRoKHBhdGhPckZpbGUpO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiB0aGUgZ2l2ZW4gZmlsZSBpcyBhbiBpbnN0YW5jZSBvZiBUQWJzdHJhY3RGaWxlLlxuICpcbiAqIEBwYXJhbSBmaWxlIC0gVGhlIGZpbGUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyBBIGJvb2xlYW4gaW5kaWNhdGluZyB3aGV0aGVyIHRoZSBmaWxlIGlzIGFuIGluc3RhbmNlIG9mIFRBYnN0cmFjdEZpbGUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0Fic3RyYWN0RmlsZShmaWxlOiB1bmtub3duKTogZmlsZSBpcyBUQWJzdHJhY3RGaWxlIHtcbiAgcmV0dXJuIGZpbGUgaW5zdGFuY2VvZiBUQWJzdHJhY3RGaWxlO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiB0aGUgZ2l2ZW4gZmlsZSBpcyBhIGNhbnZhcyBmaWxlLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgT2JzaWRpYW4gQXBwIGluc3RhbmNlLlxuICogQHBhcmFtIHBhdGhPckZpbGUgLSBUaGUgcGF0aCBvciBmaWxlIHRvIGNoZWNrLlxuICogQHJldHVybnMgQSBib29sZWFuIGluZGljYXRpbmcgd2hldGhlciB0aGUgZmlsZSBpcyBhIGNhbnZhcyBmaWxlIG9yIG5vdC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzQ2FudmFzRmlsZShhcHA6IEFwcCwgcGF0aE9yRmlsZTogbnVsbCB8IFBhdGhPckFic3RyYWN0RmlsZSk6IGJvb2xlYW4ge1xuICByZXR1cm4gY2hlY2tFeHRlbnNpb24oYXBwLCBwYXRoT3JGaWxlLCBDQU5WQVNfRklMRV9FWFRFTlNJT04pO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiB0aGUgZ2l2ZW4gZmlsZSBpcyBhbiBpbnN0YW5jZSBvZiBURmlsZS5cbiAqXG4gKiBAcGFyYW0gZmlsZSAtIFRoZSBmaWxlIHRvIGNoZWNrLlxuICogQHJldHVybnMgQSBib29sZWFuIGluZGljYXRpbmcgd2hldGhlciB0aGUgZmlsZSBpcyBhbiBpbnN0YW5jZSBvZiBURmlsZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzRmlsZShmaWxlOiB1bmtub3duKTogZmlsZSBpcyBURmlsZSB7XG4gIHJldHVybiBmaWxlIGluc3RhbmNlb2YgVEZpbGU7XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIHRoZSBnaXZlbiBmaWxlIGlzIGEgZm9sZGVyLlxuICpcbiAqIEBwYXJhbSBmaWxlIC0gVGhlIGZpbGUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyBgdHJ1ZWAgaWYgdGhlIGZpbGUgaXMgYSBmb2xkZXIsIGBmYWxzZWAgb3RoZXJ3aXNlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNGb2xkZXIoZmlsZTogdW5rbm93bik6IGZpbGUgaXMgVEZvbGRlciB7XG4gIHJldHVybiBmaWxlIGluc3RhbmNlb2YgVEZvbGRlcjtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgdGhlIGdpdmVuIGZpbGUgaXMgYSBNYXJrZG93biBmaWxlLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgT2JzaWRpYW4gQXBwIGluc3RhbmNlLlxuICogQHBhcmFtIHBhdGhPckZpbGUgLSBUaGUgcGF0aCBvciBmaWxlIHRvIGNoZWNrLlxuICogQHJldHVybnMgQSBib29sZWFuIGluZGljYXRpbmcgd2hldGhlciB0aGUgZmlsZSBpcyBhIE1hcmtkb3duIGZpbGUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc01hcmtkb3duRmlsZShhcHA6IEFwcCwgcGF0aE9yRmlsZTogbnVsbCB8IFBhdGhPckFic3RyYWN0RmlsZSk6IGJvb2xlYW4ge1xuICByZXR1cm4gY2hlY2tFeHRlbnNpb24oYXBwLCBwYXRoT3JGaWxlLCBNQVJLRE9XTl9GSUxFX0VYVEVOU0lPTik7XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIHRoZSBnaXZlbiBmaWxlIGlzIGEgbm90ZS5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIE9ic2lkaWFuIEFwcCBpbnN0YW5jZS5cbiAqIEBwYXJhbSBwYXRoT3JGaWxlIC0gVGhlIHBhdGggb3IgZmlsZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIEEgYm9vbGVhbiBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIGZpbGUgaXMgYSBub3RlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNOb3RlKGFwcDogQXBwLCBwYXRoT3JGaWxlOiBudWxsIHwgUGF0aE9yQWJzdHJhY3RGaWxlKTogYm9vbGVhbiB7XG4gIHJldHVybiBpc01hcmtkb3duRmlsZShhcHAsIHBhdGhPckZpbGUpIHx8IGlzQ2FudmFzRmlsZShhcHAsIHBhdGhPckZpbGUpO1xufVxuXG4vKipcbiAqIFRyaW1zIHRoZSBtYXJrZG93biBleHRlbnNpb24gZnJvbSB0aGUgZmlsZSBwYXRoIGlmIHRoZSBmaWxlIGlzIGEgbWFya2Rvd24gZmlsZS5cbiAqIElmIHRoZSBmaWxlIGlzIG5vdCBhIG1hcmtkb3duIGZpbGUsIHRoZSBvcmlnaW5hbCBmaWxlIHBhdGggaXMgcmV0dXJuZWQuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBPYnNpZGlhbiBBcHAgaW5zdGFuY2UuXG4gKiBAcGFyYW0gZmlsZSAtIFRoZSBmaWxlIHRvIHRyaW0gdGhlIG1hcmtkb3duIGV4dGVuc2lvbiBmcm9tLlxuICogQHJldHVybnMgVGhlIGZpbGUgcGF0aCB3aXRoIHRoZSBtYXJrZG93biBleHRlbnNpb24gdHJpbW1lZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRyaW1NYXJrZG93bkV4dGVuc2lvbihhcHA6IEFwcCwgZmlsZTogVEFic3RyYWN0RmlsZSk6IHN0cmluZyB7XG4gIGlmICghaXNNYXJrZG93bkZpbGUoYXBwLCBmaWxlKSkge1xuICAgIHJldHVybiBmaWxlLnBhdGg7XG4gIH1cblxuICByZXR1cm4gdHJpbUVuZChmaWxlLnBhdGgsIGAuJHtNQVJLRE9XTl9GSUxFX0VYVEVOU0lPTn1gKTtcbn1cblxuZnVuY3Rpb24gZ2V0RmlsZUludGVybmFsKGFwcDogQXBwLCBwYXRoOiBzdHJpbmcsIGlzQ2FzZUluc2Vuc2l0aXZlPzogYm9vbGVhbik6IG51bGwgfCBUQWJzdHJhY3RGaWxlIHtcbiAgaWYgKGlzQ2FzZUluc2Vuc2l0aXZlKSB7XG4gICAgcmV0dXJuIGFwcC52YXVsdC5nZXRBYnN0cmFjdEZpbGVCeVBhdGhJbnNlbnNpdGl2ZShwYXRoKTtcbiAgfVxuXG4gIHJldHVybiBhcHAudmF1bHQuZ2V0QWJzdHJhY3RGaWxlQnlQYXRoKHBhdGgpIGFzIG51bGwgfCBURmlsZTtcbn1cblxuZnVuY3Rpb24gZ2V0UmVzb2x2ZWRQYXRoKHBhdGg6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBub3JtYWxpemVQYXRoKHJlc29sdmUoJy8nLCBwYXRoKSk7XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7O0FBUUE7QUFBQSxFQUNFO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLE9BQ0s7QUFDUDtBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLE9BQ0s7QUFFUDtBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsT0FDSztBQUNQLFNBQVMsZUFBZTtBQUtqQixNQUFNLDBCQUEwQjtBQUtoQyxNQUFNLHdCQUF3QjtBQXlCOUIsU0FBUyxlQUFlLEtBQVUsWUFBdUMsV0FBNEI7QUFDMUcsTUFBSSxPQUFPLFVBQVUsR0FBRztBQUN0QixXQUFPLFdBQVcsY0FBYztBQUFBLEVBQ2xDO0FBRUEsTUFBSSxPQUFPLGVBQWUsVUFBVTtBQUNsQyxVQUFNLE9BQU8sY0FBYyxLQUFLLFVBQVU7QUFDMUMsUUFBSSxNQUFNO0FBQ1IsYUFBTyxLQUFLLGNBQWM7QUFBQSxJQUM1QjtBQUVBLFdBQU8sUUFBUSxVQUFVLEVBQUUsTUFBTSxDQUFDLE1BQU07QUFBQSxFQUMxQztBQUVBLFNBQU87QUFDVDtBQVdPLFNBQVMsZ0JBQWdCLEtBQVUsWUFBZ0MsbUJBQTRDO0FBQ3BILFFBQU0sT0FBTyxzQkFBc0IsS0FBSyxZQUFZLGlCQUFpQjtBQUNyRSxNQUFJLENBQUMsTUFBTTtBQUNULFVBQU0sSUFBSSxNQUFNLDRCQUE0QixVQUFvQixFQUFFO0FBQUEsRUFDcEU7QUFFQSxTQUFPO0FBQ1Q7QUFVTyxTQUFTLHNCQUFzQixLQUFVLFlBQXVDLG1CQUFtRDtBQUN4SSxNQUFJLGVBQWUsTUFBTTtBQUN2QixXQUFPO0FBQUEsRUFDVDtBQUVBLE1BQUksZUFBZSxVQUFVLEdBQUc7QUFDOUIsV0FBTztBQUFBLEVBQ1Q7QUFFQSxRQUFNLE9BQU8sZ0JBQWdCLEtBQUssWUFB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
@@ -1,15 +1,18 @@
1
1
  /**
2
- * @packageDocumentation Frontmatter
2
+ * @packageDocumentation
3
+ *
3
4
  * This module provides utility functions for processing and managing YAML front matter in Obsidian notes.
4
5
  */
5
6
  /**
6
7
  * Represents the combined front matter of a document.
7
8
  * It is a union of custom front matter, Obsidian front matter, and additional properties.
9
+ *
8
10
  * @typeParam CustomFrontmatter - The type of custom front matter.
9
11
  */
10
12
  export type CombinedFrontmatter<CustomFrontmatter> = CustomFrontmatter & ObsidianFrontmatter & Record<string, unknown>;
11
13
  /**
12
14
  * Represents the front matter of an Obsidian file.
15
+ *
13
16
  * @see {@link https://help.obsidian.md/Editing+and+formatting/Properties#Default+properties}
14
17
  */
15
18
  export interface ObsidianFrontmatter {
@@ -28,6 +31,7 @@ export interface ObsidianFrontmatter {
28
31
  }
29
32
  /**
30
33
  * Represents the front matter for publishing in Obsidian.
34
+ *
31
35
  * @see {@link https://help.obsidian.md/Editing+and+formatting/Properties#Properties+for+Obsidian+Publish}
32
36
  */
33
37
  export interface ObsidianPublishFrontmatter {