obsidian-dev-utils 35.0.1 → 36.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (419) hide show
  1. package/CHANGELOG.md +9 -0
  2. package/dist/lib/cjs/AbortController.cjs +1 -1
  3. package/dist/lib/cjs/Array.cjs +1 -1
  4. package/dist/lib/cjs/Async.cjs +2 -2
  5. package/dist/lib/cjs/Async.d.cts +3 -3
  6. package/dist/lib/cjs/AsyncEvents.cjs +2 -2
  7. package/dist/lib/cjs/AsyncEvents.d.cts +4 -4
  8. package/dist/lib/cjs/Blob.cjs +1 -1
  9. package/dist/lib/cjs/CssClass.cjs +2 -2
  10. package/dist/lib/cjs/CssClass.d.cts +35 -35
  11. package/dist/lib/cjs/Debug.cjs +2 -2
  12. package/dist/lib/cjs/DebugController.cjs +1 -1
  13. package/dist/lib/cjs/Enum.cjs +1 -1
  14. package/dist/lib/cjs/Error.cjs +2 -2
  15. package/dist/lib/cjs/Error.d.cts +1 -1
  16. package/dist/lib/cjs/Function.cjs +1 -1
  17. package/dist/lib/cjs/HTMLElement.cjs +2 -2
  18. package/dist/lib/cjs/HTMLElement.d.cts +1 -1
  19. package/dist/lib/cjs/Library.cjs +3 -3
  20. package/dist/lib/cjs/Library.d.cts +3 -3
  21. package/dist/lib/cjs/ObjectUtils.cjs +2 -2
  22. package/dist/lib/cjs/Path.cjs +2 -2
  23. package/dist/lib/cjs/Path.d.cts +2 -2
  24. package/dist/lib/cjs/RegExp.cjs +2 -2
  25. package/dist/lib/cjs/RegExp.d.cts +3 -3
  26. package/dist/lib/cjs/ScriptUtils/CliUtils.cjs +2 -2
  27. package/dist/lib/cjs/ScriptUtils/CodeGenerator.cjs +1 -1
  28. package/dist/lib/cjs/ScriptUtils/ESLint/ESLint.cjs +1 -1
  29. package/dist/lib/cjs/ScriptUtils/ESLint/eslint.config.cjs +2 -2
  30. package/dist/lib/cjs/ScriptUtils/ESLint/eslint.config.d.cts +1 -1
  31. package/dist/lib/cjs/ScriptUtils/ESLint/index.cjs +1 -1
  32. package/dist/lib/cjs/ScriptUtils/Exec.cjs +2 -2
  33. package/dist/lib/cjs/ScriptUtils/Exec.d.cts +8 -8
  34. package/dist/lib/cjs/ScriptUtils/Fs.cjs +1 -1
  35. package/dist/lib/cjs/ScriptUtils/JSON.cjs +1 -1
  36. package/dist/lib/cjs/ScriptUtils/NodeModules.cjs +1 -1
  37. package/dist/lib/cjs/ScriptUtils/Npm.cjs +2 -2
  38. package/dist/lib/cjs/ScriptUtils/Npm.d.cts +4 -4
  39. package/dist/lib/cjs/ScriptUtils/NpmPublish.cjs +1 -1
  40. package/dist/lib/cjs/ScriptUtils/NpmRun.cjs +1 -1
  41. package/dist/lib/cjs/ScriptUtils/ObsidianDevUtilsRepoPaths.cjs +2 -2
  42. package/dist/lib/cjs/ScriptUtils/ObsidianDevUtilsRepoPaths.d.cts +1 -1
  43. package/dist/lib/cjs/ScriptUtils/Root.cjs +1 -1
  44. package/dist/lib/cjs/ScriptUtils/build.cjs +1 -1
  45. package/dist/lib/cjs/ScriptUtils/cli.cjs +2 -2
  46. package/dist/lib/cjs/ScriptUtils/esbuild/Dependency.cjs +1 -1
  47. package/dist/lib/cjs/ScriptUtils/esbuild/ObsidianPluginBuilder.cjs +2 -2
  48. package/dist/lib/cjs/ScriptUtils/esbuild/ObsidianPluginBuilder.d.cts +3 -3
  49. package/dist/lib/cjs/ScriptUtils/esbuild/changeExtensionPlugin.cjs +1 -1
  50. package/dist/lib/cjs/ScriptUtils/esbuild/copyToObsidianPluginsFolderPlugin.cjs +1 -1
  51. package/dist/lib/cjs/ScriptUtils/esbuild/customEsbuildOptionsPlugin.cjs +1 -1
  52. package/dist/lib/cjs/ScriptUtils/esbuild/fixEsmPlugin.cjs +1 -1
  53. package/dist/lib/cjs/ScriptUtils/esbuild/fixSourceMapsPlugin.cjs +2 -2
  54. package/dist/lib/cjs/ScriptUtils/esbuild/fixSourceMapsPlugin.d.cts +1 -1
  55. package/dist/lib/cjs/ScriptUtils/esbuild/index.cjs +1 -1
  56. package/dist/lib/cjs/ScriptUtils/esbuild/preprocessPlugin.cjs +12 -6
  57. package/dist/lib/cjs/ScriptUtils/esbuild/preprocessPlugin.d.cts +0 -3
  58. package/dist/lib/cjs/ScriptUtils/esbuild/renameCssPlugin.cjs +1 -1
  59. package/dist/lib/cjs/ScriptUtils/esbuild/svelteWrapperPlugin.cjs +1 -1
  60. package/dist/lib/cjs/ScriptUtils/format.cjs +1 -1
  61. package/dist/lib/cjs/ScriptUtils/index.cjs +1 -1
  62. package/dist/lib/cjs/ScriptUtils/spellcheck.cjs +2 -2
  63. package/dist/lib/cjs/ScriptUtils/spellcheck.d.cts +1 -1
  64. package/dist/lib/cjs/ScriptUtils/version.cjs +2 -2
  65. package/dist/lib/cjs/ScriptUtils/version.d.cts +3 -8
  66. package/dist/lib/cjs/String.cjs +2 -2
  67. package/dist/lib/cjs/String.d.cts +5 -5
  68. package/dist/lib/cjs/Transformers/DateTransformer.cjs +3 -3
  69. package/dist/lib/cjs/Transformers/DateTransformer.d.cts +1 -1
  70. package/dist/lib/cjs/Transformers/DurationTransformer.cjs +4 -4
  71. package/dist/lib/cjs/Transformers/DurationTransformer.d.cts +2 -2
  72. package/dist/lib/cjs/Transformers/GroupTransformer.cjs +4 -4
  73. package/dist/lib/cjs/Transformers/GroupTransformer.d.cts +2 -2
  74. package/dist/lib/cjs/Transformers/MapTransformer.cjs +3 -3
  75. package/dist/lib/cjs/Transformers/MapTransformer.d.cts +1 -1
  76. package/dist/lib/cjs/Transformers/SetTransformer.cjs +3 -3
  77. package/dist/lib/cjs/Transformers/SetTransformer.d.cts +1 -1
  78. package/dist/lib/cjs/Transformers/SkipPrivatePropertyTransformer.cjs +3 -3
  79. package/dist/lib/cjs/Transformers/SkipPrivatePropertyTransformer.d.cts +1 -1
  80. package/dist/lib/cjs/Transformers/Transformer.cjs +2 -2
  81. package/dist/lib/cjs/Transformers/Transformer.d.cts +1 -1
  82. package/dist/lib/cjs/Transformers/TwoWayMapTransformer.cjs +1 -1
  83. package/dist/lib/cjs/Transformers/TypedTransformer.cjs +1 -1
  84. package/dist/lib/cjs/Transformers/index.cjs +1 -1
  85. package/dist/lib/cjs/TwoWayMap.cjs +1 -1
  86. package/dist/lib/cjs/Type.cjs +2 -2
  87. package/dist/lib/cjs/Type.d.cts +1 -1
  88. package/dist/lib/cjs/ValueProvider.cjs +2 -2
  89. package/dist/lib/cjs/codemirror/StateFieldSpec.cjs +2 -2
  90. package/dist/lib/cjs/codemirror/StateFieldSpec.d.cts +2 -2
  91. package/dist/lib/cjs/codemirror/index.cjs +1 -1
  92. package/dist/lib/cjs/index.cjs +1 -1
  93. package/dist/lib/cjs/obsidian/App.cjs +1 -1
  94. package/dist/lib/cjs/obsidian/AttachmentPath.cjs +1 -1
  95. package/dist/lib/cjs/obsidian/Backlink.cjs +2 -2
  96. package/dist/lib/cjs/obsidian/Backlink.d.cts +5 -5
  97. package/dist/lib/cjs/obsidian/Callout.cjs +2 -2
  98. package/dist/lib/cjs/obsidian/Callout.d.cts +5 -5
  99. package/dist/lib/cjs/obsidian/CodeBlockMarkdownInformation.cjs +24 -0
  100. package/dist/lib/cjs/obsidian/CodeBlockMarkdownInformation.d.cts +43 -0
  101. package/dist/lib/cjs/obsidian/Components/AsyncEventsComponent.cjs +1 -1
  102. package/dist/lib/cjs/obsidian/Components/SettingComponents/CheckboxComponent.cjs +4 -4
  103. package/dist/lib/cjs/obsidian/Components/SettingComponents/CheckboxComponent.d.cts +2 -2
  104. package/dist/lib/cjs/obsidian/Components/SettingComponents/CodeHighlighterComponent.cjs +3 -3
  105. package/dist/lib/cjs/obsidian/Components/SettingComponents/CodeHighlighterComponent.d.cts +1 -1
  106. package/dist/lib/cjs/obsidian/Components/SettingComponents/DateComponent.cjs +1 -1
  107. package/dist/lib/cjs/obsidian/Components/SettingComponents/DateTimeComponent.cjs +1 -1
  108. package/dist/lib/cjs/obsidian/Components/SettingComponents/EmailComponent.cjs +1 -1
  109. package/dist/lib/cjs/obsidian/Components/SettingComponents/FileComponent.cjs +1 -1
  110. package/dist/lib/cjs/obsidian/Components/SettingComponents/MonthComponent.cjs +2 -2
  111. package/dist/lib/cjs/obsidian/Components/SettingComponents/MonthComponent.d.cts +2 -2
  112. package/dist/lib/cjs/obsidian/Components/SettingComponents/MultipleDropdownComponent.cjs +4 -4
  113. package/dist/lib/cjs/obsidian/Components/SettingComponents/MultipleDropdownComponent.d.cts +2 -2
  114. package/dist/lib/cjs/obsidian/Components/SettingComponents/MultipleEmailComponent.cjs +1 -1
  115. package/dist/lib/cjs/obsidian/Components/SettingComponents/MultipleFileComponent.cjs +1 -1
  116. package/dist/lib/cjs/obsidian/Components/SettingComponents/MultipleTextComponent.cjs +3 -3
  117. package/dist/lib/cjs/obsidian/Components/SettingComponents/MultipleTextComponent.d.cts +1 -1
  118. package/dist/lib/cjs/obsidian/Components/SettingComponents/NumberComponent.cjs +1 -1
  119. package/dist/lib/cjs/obsidian/Components/SettingComponents/PasswordComponent.cjs +1 -1
  120. package/dist/lib/cjs/obsidian/Components/SettingComponents/SettingComponentWrapper.cjs +1 -1
  121. package/dist/lib/cjs/obsidian/Components/SettingComponents/TelephoneComponent.cjs +1 -1
  122. package/dist/lib/cjs/obsidian/Components/SettingComponents/TextBasedComponent.cjs +1 -1
  123. package/dist/lib/cjs/obsidian/Components/SettingComponents/TimeComponent.cjs +1 -1
  124. package/dist/lib/cjs/obsidian/Components/SettingComponents/TriStateCheckboxComponent.cjs +4 -4
  125. package/dist/lib/cjs/obsidian/Components/SettingComponents/TriStateCheckboxComponent.d.cts +2 -2
  126. package/dist/lib/cjs/obsidian/Components/SettingComponents/TypedDropdownComponent.cjs +4 -4
  127. package/dist/lib/cjs/obsidian/Components/SettingComponents/TypedDropdownComponent.d.cts +2 -2
  128. package/dist/lib/cjs/obsidian/Components/SettingComponents/TypedMultipleDropdownComponent.cjs +4 -4
  129. package/dist/lib/cjs/obsidian/Components/SettingComponents/TypedMultipleDropdownComponent.d.cts +2 -2
  130. package/dist/lib/cjs/obsidian/Components/SettingComponents/TypedRangeTextComponent.cjs +1 -1
  131. package/dist/lib/cjs/obsidian/Components/SettingComponents/TypedTextComponent.cjs +4 -4
  132. package/dist/lib/cjs/obsidian/Components/SettingComponents/TypedTextComponent.d.cts +2 -2
  133. package/dist/lib/cjs/obsidian/Components/SettingComponents/UrlComponent.cjs +1 -1
  134. package/dist/lib/cjs/obsidian/Components/SettingComponents/ValidatorComponent.cjs +2 -2
  135. package/dist/lib/cjs/obsidian/Components/SettingComponents/ValidatorComponent.d.cts +1 -1
  136. package/dist/lib/cjs/obsidian/Components/SettingComponents/ValueComponentWithChangeTracking.cjs +1 -1
  137. package/dist/lib/cjs/obsidian/Components/SettingComponents/WeekComponent.cjs +2 -2
  138. package/dist/lib/cjs/obsidian/Components/SettingComponents/WeekComponent.d.cts +2 -2
  139. package/dist/lib/cjs/obsidian/Components/SettingComponents/index.cjs +1 -1
  140. package/dist/lib/cjs/obsidian/Components/index.cjs +1 -1
  141. package/dist/lib/cjs/obsidian/Dataview.cjs +3 -4
  142. package/dist/lib/cjs/obsidian/Dataview.d.cts +16 -16
  143. package/dist/lib/cjs/obsidian/DataviewLink.cjs +1 -1
  144. package/dist/lib/cjs/obsidian/FileChange.cjs +2 -2
  145. package/dist/lib/cjs/obsidian/FileChange.d.cts +3 -3
  146. package/dist/lib/cjs/obsidian/FileManager.cjs +1 -1
  147. package/dist/lib/cjs/obsidian/FileSystem.cjs +2 -2
  148. package/dist/lib/cjs/obsidian/FileSystem.d.cts +1 -1
  149. package/dist/lib/cjs/obsidian/Frontmatter.cjs +2 -2
  150. package/dist/lib/cjs/obsidian/Frontmatter.d.cts +4 -4
  151. package/dist/lib/cjs/obsidian/FrontmatterLinkCacheWithOffsets.cjs +2 -2
  152. package/dist/lib/cjs/obsidian/FrontmatterLinkCacheWithOffsets.d.cts +2 -2
  153. package/dist/lib/cjs/obsidian/Link.cjs +2 -2
  154. package/dist/lib/cjs/obsidian/Link.d.cts +44 -43
  155. package/dist/lib/cjs/obsidian/Logger.cjs +2 -2
  156. package/dist/lib/cjs/obsidian/Loop.cjs +2 -2
  157. package/dist/lib/cjs/obsidian/Loop.d.cts +12 -6
  158. package/dist/lib/cjs/obsidian/Markdown.cjs +1 -1
  159. package/dist/lib/cjs/obsidian/MarkdownCodeBlockProcessor.cjs +15 -9
  160. package/dist/lib/cjs/obsidian/MarkdownCodeBlockProcessor.d.cts +11 -47
  161. package/dist/lib/cjs/obsidian/MarkdownView.cjs +1 -1
  162. package/dist/lib/cjs/obsidian/MetadataCache.cjs +4 -16
  163. package/dist/lib/cjs/obsidian/Modals/Alert.cjs +2 -2
  164. package/dist/lib/cjs/obsidian/Modals/Alert.d.cts +6 -6
  165. package/dist/lib/cjs/obsidian/Modals/Confirm.cjs +2 -2
  166. package/dist/lib/cjs/obsidian/Modals/Confirm.d.cts +7 -7
  167. package/dist/lib/cjs/obsidian/Modals/ModalBase.cjs +2 -2
  168. package/dist/lib/cjs/obsidian/Modals/ModalBase.d.cts +3 -3
  169. package/dist/lib/cjs/obsidian/Modals/Prompt.cjs +2 -2
  170. package/dist/lib/cjs/obsidian/Modals/Prompt.d.cts +7 -7
  171. package/dist/lib/cjs/obsidian/Modals/SelectItem.cjs +2 -2
  172. package/dist/lib/cjs/obsidian/Modals/SelectItem.d.cts +7 -7
  173. package/dist/lib/cjs/obsidian/Modals/index.cjs +1 -1
  174. package/dist/lib/cjs/obsidian/MonkeyAround.cjs +2 -2
  175. package/dist/lib/cjs/obsidian/MonkeyAround.d.cts +3 -3
  176. package/dist/lib/cjs/obsidian/ObsidianSettings.cjs +1 -1
  177. package/dist/lib/cjs/obsidian/Pdf.cjs +1 -1
  178. package/dist/lib/cjs/obsidian/Plugin/ObsidianPluginRepoPaths.cjs +1 -1
  179. package/dist/lib/cjs/obsidian/Plugin/Plugin.cjs +1 -1
  180. package/dist/lib/cjs/obsidian/Plugin/PluginBase.cjs +1 -1
  181. package/dist/lib/cjs/obsidian/Plugin/PluginContext.cjs +1 -1
  182. package/dist/lib/cjs/obsidian/Plugin/PluginId.cjs +2 -2
  183. package/dist/lib/cjs/obsidian/Plugin/PluginId.d.cts +1 -1
  184. package/dist/lib/cjs/obsidian/Plugin/PluginSettingsManagerBase.cjs +1 -1
  185. package/dist/lib/cjs/obsidian/Plugin/PluginSettingsTabBase.cjs +3 -3
  186. package/dist/lib/cjs/obsidian/Plugin/PluginSettingsTabBase.d.cts +4 -4
  187. package/dist/lib/cjs/obsidian/Plugin/PluginSettingsWrapper.cjs +2 -2
  188. package/dist/lib/cjs/obsidian/Plugin/PluginSettingsWrapper.d.cts +3 -3
  189. package/dist/lib/cjs/obsidian/Plugin/PluginTypesBase.cjs +2 -2
  190. package/dist/lib/cjs/obsidian/Plugin/PluginTypesBase.d.cts +6 -6
  191. package/dist/lib/cjs/obsidian/Plugin/index.cjs +1 -1
  192. package/dist/lib/cjs/obsidian/Queue.cjs +1 -1
  193. package/dist/lib/cjs/obsidian/React/AppContext.cjs +2 -2
  194. package/dist/lib/cjs/obsidian/React/AppContext.d.cts +2 -2
  195. package/dist/lib/cjs/obsidian/React/index.cjs +1 -1
  196. package/dist/lib/cjs/obsidian/Reference.cjs +2 -2
  197. package/dist/lib/cjs/obsidian/Reference.d.cts +5 -5
  198. package/dist/lib/cjs/obsidian/RenameDeleteHandler.cjs +2 -2
  199. package/dist/lib/cjs/obsidian/RenameDeleteHandler.d.cts +2 -2
  200. package/dist/lib/cjs/obsidian/ResourceUrl.cjs +1 -1
  201. package/dist/lib/cjs/obsidian/SettingEx.cjs +1 -1
  202. package/dist/lib/cjs/obsidian/Validation.cjs +2 -2
  203. package/dist/lib/cjs/obsidian/Validation.d.cts +1 -1
  204. package/dist/lib/cjs/obsidian/Vault.cjs +18 -4
  205. package/dist/lib/cjs/obsidian/Vault.d.cts +8 -0
  206. package/dist/lib/cjs/obsidian/VaultEx.cjs +1 -1
  207. package/dist/lib/cjs/obsidian/index.cjs +5 -2
  208. package/dist/lib/cjs/obsidian/index.d.cts +1 -0
  209. package/dist/lib/cjs/url.cjs +1 -1
  210. package/dist/lib/esm/AbortController.mjs +1 -1
  211. package/dist/lib/esm/Array.mjs +1 -1
  212. package/dist/lib/esm/Async.d.mts +3 -3
  213. package/dist/lib/esm/Async.mjs +2 -2
  214. package/dist/lib/esm/AsyncEvents.d.mts +4 -4
  215. package/dist/lib/esm/AsyncEvents.mjs +2 -2
  216. package/dist/lib/esm/Blob.mjs +1 -1
  217. package/dist/lib/esm/CssClass.d.mts +35 -35
  218. package/dist/lib/esm/CssClass.mjs +2 -2
  219. package/dist/lib/esm/Debug.mjs +2 -2
  220. package/dist/lib/esm/DebugController.mjs +1 -1
  221. package/dist/lib/esm/Enum.mjs +1 -1
  222. package/dist/lib/esm/Error.d.mts +1 -1
  223. package/dist/lib/esm/Error.mjs +2 -2
  224. package/dist/lib/esm/Function.mjs +1 -1
  225. package/dist/lib/esm/HTMLElement.d.mts +1 -1
  226. package/dist/lib/esm/HTMLElement.mjs +2 -2
  227. package/dist/lib/esm/Library.d.mts +3 -3
  228. package/dist/lib/esm/Library.mjs +3 -3
  229. package/dist/lib/esm/ObjectUtils.mjs +2 -2
  230. package/dist/lib/esm/Path.d.mts +2 -2
  231. package/dist/lib/esm/Path.mjs +2 -2
  232. package/dist/lib/esm/RegExp.d.mts +3 -3
  233. package/dist/lib/esm/RegExp.mjs +2 -2
  234. package/dist/lib/esm/ScriptUtils/CliUtils.mjs +2 -2
  235. package/dist/lib/esm/ScriptUtils/CodeGenerator.mjs +1 -1
  236. package/dist/lib/esm/ScriptUtils/ESLint/ESLint.mjs +1 -1
  237. package/dist/lib/esm/ScriptUtils/ESLint/eslint.config.d.mts +1 -1
  238. package/dist/lib/esm/ScriptUtils/ESLint/eslint.config.mjs +2 -2
  239. package/dist/lib/esm/ScriptUtils/ESLint/index.mjs +1 -1
  240. package/dist/lib/esm/ScriptUtils/Exec.d.mts +8 -8
  241. package/dist/lib/esm/ScriptUtils/Exec.mjs +2 -2
  242. package/dist/lib/esm/ScriptUtils/Fs.mjs +1 -1
  243. package/dist/lib/esm/ScriptUtils/JSON.mjs +1 -1
  244. package/dist/lib/esm/ScriptUtils/NodeModules.mjs +1 -1
  245. package/dist/lib/esm/ScriptUtils/Npm.d.mts +4 -4
  246. package/dist/lib/esm/ScriptUtils/Npm.mjs +2 -2
  247. package/dist/lib/esm/ScriptUtils/NpmPublish.mjs +1 -1
  248. package/dist/lib/esm/ScriptUtils/NpmRun.mjs +1 -1
  249. package/dist/lib/esm/ScriptUtils/ObsidianDevUtilsRepoPaths.d.mts +1 -1
  250. package/dist/lib/esm/ScriptUtils/ObsidianDevUtilsRepoPaths.mjs +2 -2
  251. package/dist/lib/esm/ScriptUtils/Root.mjs +1 -1
  252. package/dist/lib/esm/ScriptUtils/build.mjs +1 -1
  253. package/dist/lib/esm/ScriptUtils/cli.mjs +2 -2
  254. package/dist/lib/esm/ScriptUtils/esbuild/Dependency.mjs +1 -1
  255. package/dist/lib/esm/ScriptUtils/esbuild/ObsidianPluginBuilder.d.mts +3 -3
  256. package/dist/lib/esm/ScriptUtils/esbuild/ObsidianPluginBuilder.mjs +2 -2
  257. package/dist/lib/esm/ScriptUtils/esbuild/changeExtensionPlugin.mjs +1 -1
  258. package/dist/lib/esm/ScriptUtils/esbuild/copyToObsidianPluginsFolderPlugin.mjs +1 -1
  259. package/dist/lib/esm/ScriptUtils/esbuild/customEsbuildOptionsPlugin.mjs +1 -1
  260. package/dist/lib/esm/ScriptUtils/esbuild/fixEsmPlugin.mjs +1 -1
  261. package/dist/lib/esm/ScriptUtils/esbuild/fixSourceMapsPlugin.d.mts +1 -1
  262. package/dist/lib/esm/ScriptUtils/esbuild/fixSourceMapsPlugin.mjs +2 -2
  263. package/dist/lib/esm/ScriptUtils/esbuild/index.mjs +1 -1
  264. package/dist/lib/esm/ScriptUtils/esbuild/preprocessPlugin.d.mts +0 -3
  265. package/dist/lib/esm/ScriptUtils/esbuild/preprocessPlugin.mjs +12 -6
  266. package/dist/lib/esm/ScriptUtils/esbuild/renameCssPlugin.mjs +1 -1
  267. package/dist/lib/esm/ScriptUtils/esbuild/svelteWrapperPlugin.mjs +1 -1
  268. package/dist/lib/esm/ScriptUtils/format.mjs +1 -1
  269. package/dist/lib/esm/ScriptUtils/index.mjs +1 -1
  270. package/dist/lib/esm/ScriptUtils/spellcheck.d.mts +1 -1
  271. package/dist/lib/esm/ScriptUtils/spellcheck.mjs +2 -2
  272. package/dist/lib/esm/ScriptUtils/version.d.mts +3 -8
  273. package/dist/lib/esm/ScriptUtils/version.mjs +2 -2
  274. package/dist/lib/esm/String.d.mts +5 -5
  275. package/dist/lib/esm/String.mjs +2 -2
  276. package/dist/lib/esm/Transformers/DateTransformer.d.mts +1 -1
  277. package/dist/lib/esm/Transformers/DateTransformer.mjs +3 -3
  278. package/dist/lib/esm/Transformers/DurationTransformer.d.mts +2 -2
  279. package/dist/lib/esm/Transformers/DurationTransformer.mjs +4 -4
  280. package/dist/lib/esm/Transformers/GroupTransformer.d.mts +2 -2
  281. package/dist/lib/esm/Transformers/GroupTransformer.mjs +4 -4
  282. package/dist/lib/esm/Transformers/MapTransformer.d.mts +1 -1
  283. package/dist/lib/esm/Transformers/MapTransformer.mjs +3 -3
  284. package/dist/lib/esm/Transformers/SetTransformer.d.mts +1 -1
  285. package/dist/lib/esm/Transformers/SetTransformer.mjs +3 -3
  286. package/dist/lib/esm/Transformers/SkipPrivatePropertyTransformer.d.mts +1 -1
  287. package/dist/lib/esm/Transformers/SkipPrivatePropertyTransformer.mjs +3 -3
  288. package/dist/lib/esm/Transformers/Transformer.d.mts +1 -1
  289. package/dist/lib/esm/Transformers/Transformer.mjs +2 -2
  290. package/dist/lib/esm/Transformers/TwoWayMapTransformer.mjs +1 -1
  291. package/dist/lib/esm/Transformers/TypedTransformer.mjs +1 -1
  292. package/dist/lib/esm/Transformers/index.mjs +1 -1
  293. package/dist/lib/esm/TwoWayMap.mjs +1 -1
  294. package/dist/lib/esm/Type.d.mts +1 -1
  295. package/dist/lib/esm/Type.mjs +2 -2
  296. package/dist/lib/esm/ValueProvider.mjs +2 -2
  297. package/dist/lib/esm/codemirror/StateFieldSpec.d.mts +2 -2
  298. package/dist/lib/esm/codemirror/StateFieldSpec.mjs +1 -1
  299. package/dist/lib/esm/codemirror/index.mjs +1 -1
  300. package/dist/lib/esm/index.mjs +1 -1
  301. package/dist/lib/esm/obsidian/App.mjs +1 -1
  302. package/dist/lib/esm/obsidian/AttachmentPath.mjs +1 -1
  303. package/dist/lib/esm/obsidian/Backlink.d.mts +5 -5
  304. package/dist/lib/esm/obsidian/Backlink.mjs +2 -2
  305. package/dist/lib/esm/obsidian/Callout.d.mts +5 -5
  306. package/dist/lib/esm/obsidian/Callout.mjs +2 -2
  307. package/dist/lib/esm/obsidian/CodeBlockMarkdownInformation.d.mts +43 -0
  308. package/dist/lib/esm/obsidian/CodeBlockMarkdownInformation.mjs +8 -0
  309. package/dist/lib/esm/obsidian/Components/AsyncEventsComponent.mjs +1 -1
  310. package/dist/lib/esm/obsidian/Components/SettingComponents/CheckboxComponent.d.mts +2 -2
  311. package/dist/lib/esm/obsidian/Components/SettingComponents/CheckboxComponent.mjs +4 -4
  312. package/dist/lib/esm/obsidian/Components/SettingComponents/CodeHighlighterComponent.d.mts +1 -1
  313. package/dist/lib/esm/obsidian/Components/SettingComponents/CodeHighlighterComponent.mjs +3 -3
  314. package/dist/lib/esm/obsidian/Components/SettingComponents/DateComponent.mjs +1 -1
  315. package/dist/lib/esm/obsidian/Components/SettingComponents/DateTimeComponent.mjs +1 -1
  316. package/dist/lib/esm/obsidian/Components/SettingComponents/EmailComponent.mjs +1 -1
  317. package/dist/lib/esm/obsidian/Components/SettingComponents/FileComponent.mjs +1 -1
  318. package/dist/lib/esm/obsidian/Components/SettingComponents/MonthComponent.d.mts +2 -2
  319. package/dist/lib/esm/obsidian/Components/SettingComponents/MonthComponent.mjs +2 -2
  320. package/dist/lib/esm/obsidian/Components/SettingComponents/MultipleDropdownComponent.d.mts +2 -2
  321. package/dist/lib/esm/obsidian/Components/SettingComponents/MultipleDropdownComponent.mjs +4 -4
  322. package/dist/lib/esm/obsidian/Components/SettingComponents/MultipleEmailComponent.mjs +1 -1
  323. package/dist/lib/esm/obsidian/Components/SettingComponents/MultipleFileComponent.mjs +1 -1
  324. package/dist/lib/esm/obsidian/Components/SettingComponents/MultipleTextComponent.d.mts +1 -1
  325. package/dist/lib/esm/obsidian/Components/SettingComponents/MultipleTextComponent.mjs +3 -3
  326. package/dist/lib/esm/obsidian/Components/SettingComponents/NumberComponent.mjs +1 -1
  327. package/dist/lib/esm/obsidian/Components/SettingComponents/PasswordComponent.mjs +1 -1
  328. package/dist/lib/esm/obsidian/Components/SettingComponents/SettingComponentWrapper.mjs +1 -1
  329. package/dist/lib/esm/obsidian/Components/SettingComponents/TelephoneComponent.mjs +1 -1
  330. package/dist/lib/esm/obsidian/Components/SettingComponents/TextBasedComponent.mjs +1 -1
  331. package/dist/lib/esm/obsidian/Components/SettingComponents/TimeComponent.mjs +1 -1
  332. package/dist/lib/esm/obsidian/Components/SettingComponents/TriStateCheckboxComponent.d.mts +2 -2
  333. package/dist/lib/esm/obsidian/Components/SettingComponents/TriStateCheckboxComponent.mjs +4 -4
  334. package/dist/lib/esm/obsidian/Components/SettingComponents/TypedDropdownComponent.d.mts +2 -2
  335. package/dist/lib/esm/obsidian/Components/SettingComponents/TypedDropdownComponent.mjs +4 -4
  336. package/dist/lib/esm/obsidian/Components/SettingComponents/TypedMultipleDropdownComponent.d.mts +2 -2
  337. package/dist/lib/esm/obsidian/Components/SettingComponents/TypedMultipleDropdownComponent.mjs +4 -4
  338. package/dist/lib/esm/obsidian/Components/SettingComponents/TypedRangeTextComponent.mjs +1 -1
  339. package/dist/lib/esm/obsidian/Components/SettingComponents/TypedTextComponent.d.mts +2 -2
  340. package/dist/lib/esm/obsidian/Components/SettingComponents/TypedTextComponent.mjs +4 -4
  341. package/dist/lib/esm/obsidian/Components/SettingComponents/UrlComponent.mjs +1 -1
  342. package/dist/lib/esm/obsidian/Components/SettingComponents/ValidatorComponent.d.mts +1 -1
  343. package/dist/lib/esm/obsidian/Components/SettingComponents/ValidatorComponent.mjs +2 -2
  344. package/dist/lib/esm/obsidian/Components/SettingComponents/ValueComponentWithChangeTracking.mjs +1 -1
  345. package/dist/lib/esm/obsidian/Components/SettingComponents/WeekComponent.d.mts +2 -2
  346. package/dist/lib/esm/obsidian/Components/SettingComponents/WeekComponent.mjs +2 -2
  347. package/dist/lib/esm/obsidian/Components/SettingComponents/index.mjs +1 -1
  348. package/dist/lib/esm/obsidian/Components/index.mjs +1 -1
  349. package/dist/lib/esm/obsidian/Dataview.d.mts +16 -16
  350. package/dist/lib/esm/obsidian/Dataview.mjs +3 -4
  351. package/dist/lib/esm/obsidian/DataviewLink.mjs +1 -1
  352. package/dist/lib/esm/obsidian/FileChange.d.mts +3 -3
  353. package/dist/lib/esm/obsidian/FileChange.mjs +2 -2
  354. package/dist/lib/esm/obsidian/FileManager.mjs +1 -1
  355. package/dist/lib/esm/obsidian/FileSystem.d.mts +1 -1
  356. package/dist/lib/esm/obsidian/FileSystem.mjs +2 -2
  357. package/dist/lib/esm/obsidian/Frontmatter.d.mts +4 -4
  358. package/dist/lib/esm/obsidian/Frontmatter.mjs +2 -2
  359. package/dist/lib/esm/obsidian/FrontmatterLinkCacheWithOffsets.d.mts +2 -2
  360. package/dist/lib/esm/obsidian/FrontmatterLinkCacheWithOffsets.mjs +2 -2
  361. package/dist/lib/esm/obsidian/Link.d.mts +44 -43
  362. package/dist/lib/esm/obsidian/Link.mjs +2 -2
  363. package/dist/lib/esm/obsidian/Logger.mjs +2 -2
  364. package/dist/lib/esm/obsidian/Loop.d.mts +12 -6
  365. package/dist/lib/esm/obsidian/Loop.mjs +2 -2
  366. package/dist/lib/esm/obsidian/Markdown.mjs +1 -1
  367. package/dist/lib/esm/obsidian/MarkdownCodeBlockProcessor.d.mts +11 -47
  368. package/dist/lib/esm/obsidian/MarkdownCodeBlockProcessor.mjs +19 -10
  369. package/dist/lib/esm/obsidian/MarkdownView.mjs +1 -1
  370. package/dist/lib/esm/obsidian/MetadataCache.mjs +8 -20
  371. package/dist/lib/esm/obsidian/Modals/Alert.d.mts +6 -6
  372. package/dist/lib/esm/obsidian/Modals/Alert.mjs +2 -2
  373. package/dist/lib/esm/obsidian/Modals/Confirm.d.mts +7 -7
  374. package/dist/lib/esm/obsidian/Modals/Confirm.mjs +2 -2
  375. package/dist/lib/esm/obsidian/Modals/ModalBase.d.mts +3 -3
  376. package/dist/lib/esm/obsidian/Modals/ModalBase.mjs +2 -2
  377. package/dist/lib/esm/obsidian/Modals/Prompt.d.mts +7 -7
  378. package/dist/lib/esm/obsidian/Modals/Prompt.mjs +2 -2
  379. package/dist/lib/esm/obsidian/Modals/SelectItem.d.mts +7 -7
  380. package/dist/lib/esm/obsidian/Modals/SelectItem.mjs +2 -2
  381. package/dist/lib/esm/obsidian/Modals/index.mjs +1 -1
  382. package/dist/lib/esm/obsidian/MonkeyAround.d.mts +3 -3
  383. package/dist/lib/esm/obsidian/MonkeyAround.mjs +2 -2
  384. package/dist/lib/esm/obsidian/ObsidianSettings.mjs +1 -1
  385. package/dist/lib/esm/obsidian/Pdf.mjs +1 -1
  386. package/dist/lib/esm/obsidian/Plugin/ObsidianPluginRepoPaths.mjs +1 -1
  387. package/dist/lib/esm/obsidian/Plugin/Plugin.mjs +1 -1
  388. package/dist/lib/esm/obsidian/Plugin/PluginBase.mjs +1 -1
  389. package/dist/lib/esm/obsidian/Plugin/PluginContext.mjs +1 -1
  390. package/dist/lib/esm/obsidian/Plugin/PluginId.d.mts +1 -1
  391. package/dist/lib/esm/obsidian/Plugin/PluginId.mjs +2 -2
  392. package/dist/lib/esm/obsidian/Plugin/PluginSettingsManagerBase.mjs +1 -1
  393. package/dist/lib/esm/obsidian/Plugin/PluginSettingsTabBase.d.mts +4 -4
  394. package/dist/lib/esm/obsidian/Plugin/PluginSettingsTabBase.mjs +3 -3
  395. package/dist/lib/esm/obsidian/Plugin/PluginSettingsWrapper.d.mts +3 -3
  396. package/dist/lib/esm/obsidian/Plugin/PluginSettingsWrapper.mjs +1 -1
  397. package/dist/lib/esm/obsidian/Plugin/PluginTypesBase.d.mts +6 -6
  398. package/dist/lib/esm/obsidian/Plugin/PluginTypesBase.mjs +1 -1
  399. package/dist/lib/esm/obsidian/Plugin/index.mjs +1 -1
  400. package/dist/lib/esm/obsidian/Queue.mjs +1 -1
  401. package/dist/lib/esm/obsidian/React/AppContext.d.mts +2 -2
  402. package/dist/lib/esm/obsidian/React/AppContext.mjs +2 -2
  403. package/dist/lib/esm/obsidian/React/index.mjs +1 -1
  404. package/dist/lib/esm/obsidian/Reference.d.mts +5 -5
  405. package/dist/lib/esm/obsidian/Reference.mjs +2 -2
  406. package/dist/lib/esm/obsidian/RenameDeleteHandler.d.mts +2 -2
  407. package/dist/lib/esm/obsidian/RenameDeleteHandler.mjs +2 -2
  408. package/dist/lib/esm/obsidian/ResourceUrl.mjs +1 -1
  409. package/dist/lib/esm/obsidian/SettingEx.mjs +1 -1
  410. package/dist/lib/esm/obsidian/Validation.d.mts +1 -1
  411. package/dist/lib/esm/obsidian/Validation.mjs +2 -2
  412. package/dist/lib/esm/obsidian/Vault.d.mts +8 -0
  413. package/dist/lib/esm/obsidian/Vault.mjs +21 -4
  414. package/dist/lib/esm/obsidian/VaultEx.mjs +1 -1
  415. package/dist/lib/esm/obsidian/index.d.mts +1 -0
  416. package/dist/lib/esm/obsidian/index.mjs +4 -2
  417. package/dist/lib/esm/url.mjs +1 -1
  418. package/obsidian/CodeBlockMarkdownInformation/package.json +6 -0
  419. package/package.json +1 -1
@@ -3,7 +3,7 @@ THIS IS A GENERATED/BUNDLED FILE BY ESBUILD
3
3
  if you want to view the source, please visit the github repository of this plugin
4
4
  */
5
5
 
6
- (function initEsm(){if(globalThis.process){return}const browserProcess={browser:true,cwd:__name(()=>"/","cwd"),env:{},platform:"android"};globalThis.process=browserProcess})();
6
+ (function initEsm(){if(globalThis.process){return}const browserProcess={browser:true,cwd(){return"/"},env:{},platform:"android"};globalThis.process=browserProcess})();
7
7
 
8
8
  import { abortSignalAny } from "../AbortController.mjs";
9
9
  import {
@@ -12,14 +12,23 @@ import {
12
12
  unindent
13
13
  } from "../String.mjs";
14
14
  import { resolveValue } from "../ValueProvider.mjs";
15
- import { process } from "./Vault.mjs";
15
+ import {
16
+ process,
17
+ saveNote
18
+ } from "./Vault.mjs";
16
19
  async function getCodeBlockMarkdownInfo(options) {
17
20
  const { app, ctx, el, source } = options;
18
21
  const sourceFile = app.vault.getFileByPath(ctx.sourcePath);
19
22
  if (!sourceFile) {
20
23
  throw new Error(`Source file ${ctx.sourcePath} not found.`);
21
24
  }
22
- const content = options.noteContent ?? await app.vault.cachedRead(sourceFile);
25
+ let content;
26
+ if (options.noteContent) {
27
+ content = options.noteContent;
28
+ } else {
29
+ await saveNote(app, sourceFile);
30
+ content = await app.vault.read(sourceFile);
31
+ }
23
32
  const approximateSectionInfo = ctx.getSectionInfo(el) ?? {
24
33
  lineEnd: content.split("\n").length - 1,
25
34
  lineStart: 0,
@@ -74,7 +83,7 @@ async function insertAfterCodeBlock(options) {
74
83
  if (!markdownInfo) {
75
84
  throw new Error("Could not uniquely identify the code block.");
76
85
  }
77
- const insertLineIndex = markdownInfo.notePos.end.line + lineOffset + 1;
86
+ const insertLineIndex = markdownInfo.positionInNote.end.line + lineOffset + 1;
78
87
  return insertText(content, insertLineIndex, text, options.shouldPreserveLinePrefix);
79
88
  });
80
89
  }
@@ -88,7 +97,7 @@ async function insertBeforeCodeBlock(options) {
88
97
  if (!markdownInfo) {
89
98
  throw new Error("Could not uniquely identify the code block.");
90
99
  }
91
- const insertLineIndex = markdownInfo.notePos.start.line - lineOffset;
100
+ const insertLineIndex = markdownInfo.positionInNote.start.line - lineOffset;
92
101
  return insertText(content, insertLineIndex, text, options.shouldPreserveLinePrefix);
93
102
  });
94
103
  }
@@ -111,7 +120,7 @@ async function replaceCodeBlock(options) {
111
120
  if (!markdownInfo) {
112
121
  throw new Error("Could not uniquely identify the code block.");
113
122
  }
114
- let oldCodeBlock = content.slice(markdownInfo.notePos.start.offset, markdownInfo.notePos.end.offset);
123
+ let oldCodeBlock = content.slice(markdownInfo.positionInNote.start.offset, markdownInfo.positionInNote.end.offset);
115
124
  if (options.shouldPreserveLinePrefix) {
116
125
  oldCodeBlock = unindent(oldCodeBlock, markdownInfo.linePrefix);
117
126
  }
@@ -119,8 +128,8 @@ async function replaceCodeBlock(options) {
119
128
  if (newCodeBlock && options.shouldPreserveLinePrefix) {
120
129
  newCodeBlock = indent(newCodeBlock, markdownInfo.linePrefix);
121
130
  }
122
- const textBeforeCodeBlock = content.slice(0, markdownInfo.notePos.start.offset);
123
- const textAfterCodeBlock = content.slice(markdownInfo.notePos.end.offset);
131
+ const textBeforeCodeBlock = content.slice(0, markdownInfo.positionInNote.start.offset);
132
+ const textAfterCodeBlock = content.slice(markdownInfo.positionInNote.end.offset);
124
133
  return `${appendNewLine(textBeforeCodeBlock)}${appendNewLine(newCodeBlock)}${textAfterCodeBlock}`;
125
134
  });
126
135
  }
@@ -143,7 +152,7 @@ function createMarkdownInfoFromMatch(potentialCodeBlockText, match, approximateS
143
152
  endDelimiter: codeBlockEndDelimiter,
144
153
  language,
145
154
  linePrefix,
146
- notePos: {
155
+ positionInNote: {
147
156
  end: {
148
157
  col: (textLineOffsets.get(endLine + 1) ?? 0) - (textLineOffsets.get(endLine) ?? 0) - 1,
149
158
  line: endLine,
@@ -204,4 +213,4 @@ export {
204
213
  removeCodeBlock,
205
214
  replaceCodeBlock
206
215
  };
207
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL01hcmtkb3duQ29kZUJsb2NrUHJvY2Vzc29yLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBwYWNrYWdlRG9jdW1lbnRhdGlvblxuICpcbiAqIFRoaXMgbW9kdWxlIHByb3ZpZGVzIHV0aWxpdHkgZnVuY3Rpb25zIGZvciBwcm9jZXNzaW5nIGNvZGUgYmxvY2tzIGluIE9ic2lkaWFuLlxuICovXG5cbmltcG9ydCB0eXBlIHtcbiAgQXBwLFxuICBNYXJrZG93blBvc3RQcm9jZXNzb3JDb250ZXh0LFxuICBNYXJrZG93blNlY3Rpb25JbmZvcm1hdGlvbixcbiAgUG9zXG59IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHR5cGUgeyBWYWx1ZVByb3ZpZGVyIH0gZnJvbSAnLi4vVmFsdWVQcm92aWRlci50cyc7XG5cbmltcG9ydCB7IGFib3J0U2lnbmFsQW55IH0gZnJvbSAnLi4vQWJvcnRDb250cm9sbGVyLnRzJztcbmltcG9ydCB7XG4gIGhhc1NpbmdsZU9jY3VycmVuY2UsXG4gIGluZGVudCxcbiAgdW5pbmRlbnRcbn0gZnJvbSAnLi4vU3RyaW5nLnRzJztcbmltcG9ydCB7IHJlc29sdmVWYWx1ZSB9IGZyb20gJy4uL1ZhbHVlUHJvdmlkZXIudHMnO1xuaW1wb3J0IHsgcHJvY2VzcyB9IGZyb20gJy4vVmF1bHQudHMnO1xuXG4vKipcbiAqIFJlcHJlc2VudHMgdGhlIGluZm9ybWF0aW9uIGFib3V0IGEgY29kZSBibG9jayBpbiBhIE1hcmtkb3duIHNlY3Rpb24uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29kZUJsb2NrTWFya2Rvd25JbmZvcm1hdGlvbiB7XG4gIC8qKlxuICAgKiBUaGUgYXJndW1lbnRzIG9mIHRoZSBjb2RlIGJsb2NrLlxuICAgKi9cbiAgYXJnczogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIFRoZSBlbmQgZGVsaW1pdGVyIG9mIHRoZSBjb2RlIGJsb2NrLlxuICAgKi9cbiAgZW5kRGVsaW1pdGVyOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBsYW5ndWFnZSBvZiB0aGUgY29kZSBibG9jay5cbiAgICovXG4gIGxhbmd1YWdlOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBsaW5lIHByZWZpeCBvZiBlYWNoIGxpbmUgb2YgdGhlIGNvZGUgYmxvY2suXG4gICAqL1xuICBsaW5lUHJlZml4OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBwb3NpdGlvbiBvZiB0aGUgY29kZSBibG9jayBpbiB0aGUgbm90ZS5cbiAgICovXG4gIG5vdGVQb3M6IFBvcztcblxuICAvKipcbiAgICogVGhlIHJhdyBhcmd1bWVudHMgc3RyaW5nIG9mIHRoZSBjb2RlIGJsb2NrLlxuICAgKi9cbiAgcmF3QXJnc1N0cjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgc2VjdGlvbiBpbmZvcm1hdGlvbiBvZiB0aGUgY29kZSBibG9jay5cbiAgICovXG4gIHNlY3Rpb25JbmZvOiBNYXJrZG93blNlY3Rpb25JbmZvcm1hdGlvbjtcblxuICAvKipcbiAgICogVGhlIHN0YXJ0IGRlbGltaXRlciBvZiB0aGUgY29kZSBibG9jay5cbiAgICovXG4gIHN0YXJ0RGVsaW1pdGVyOiBzdHJpbmc7XG59XG5cbi8qKlxuICogUmVwcmVzZW50cyB0aGUgb3B0aW9ucyBmb3IgZ2V0dGluZyB0aGUgaW5mb3JtYXRpb24gYWJvdXQgYSBjb2RlIGJsb2NrIGluIGEgTWFya2Rvd24gc2VjdGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBHZXRDb2RlQmxvY2tTZWN0aW9uSW5mb09wdGlvbnMge1xuICAvKipcbiAgICogVGhlIE9ic2lkaWFuIEFwcCBvYmplY3QuXG4gICAqL1xuICBhcHA6IEFwcDtcblxuICAvKipcbiAgICogVGhlIE1hcmtkb3duUG9zdFByb2Nlc3NvckNvbnRleHQgb2JqZWN0LlxuICAgKi9cbiAgY3R4OiBNYXJrZG93blBvc3RQcm9jZXNzb3JDb250ZXh0O1xuXG4gIC8qKlxuICAgKiBUaGUgSFRNTEVsZW1lbnQgcmVwcmVzZW50aW5nIHRoZSBjb2RlIGJsb2NrLlxuICAgKi9cbiAgZWw6IEhUTUxFbGVtZW50O1xuXG4gIC8qKlxuICAgKiBUaGUgY29udGVudCBvZiB0aGUgbm90ZS5cbiAgICovXG4gIG5vdGVDb250ZW50Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgc291cmNlIG9mIHRoZSBjb2RlIGJsb2NrLlxuICAgKi9cbiAgc291cmNlOiBzdHJpbmc7XG59XG5cbi8qKlxuICogUmVwcmVzZW50cyB0aGUgb3B0aW9ucyBmb3IgaW5zZXJ0aW5nIHRleHQgYWZ0ZXIgYSBjb2RlIGJsb2NrLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEluc2VydENvZGVCbG9ja09wdGlvbnMgZXh0ZW5kcyBHZXRDb2RlQmxvY2tTZWN0aW9uSW5mb09wdGlvbnMge1xuICAvKipcbiAgICogVGhlIG51bWJlciBvZiBsaW5lcyB0byBvZmZzZXQgdGhlIGluc2VydGlvbiBieS4gRGVmYXVsdCBpcyBgMGAuXG4gICAqL1xuICBsaW5lT2Zmc2V0PzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIHByZXNlcnZlIHRoZSBsaW5lIHByZWZpeCBvZiB0aGUgY29kZSBibG9jay4gRGVmYXVsdCBpcyBgZmFsc2VgLlxuICAgKi9cbiAgc2hvdWxkUHJlc2VydmVMaW5lUHJlZml4PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIHRleHQgdG8gaW5zZXJ0IGFmdGVyIHRoZSBjb2RlIGJsb2NrLlxuICAgKi9cbiAgdGV4dDogc3RyaW5nO1xufVxuXG4vKipcbiAqIFJlcHJlc2VudHMgdGhlIG9wdGlvbnMgZm9yIHJlcGxhY2luZyBhIGNvZGUgYmxvY2suXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVwbGFjZUNvZGVCbG9ja09wdGlvbnMgZXh0ZW5kcyBHZXRDb2RlQmxvY2tTZWN0aW9uSW5mb09wdGlvbnMge1xuICAvKipcbiAgICogVGhlIGFib3J0IHNpZ25hbCB0byBjb250cm9sIHRoZSBleGVjdXRpb24gb2YgdGhlIGZ1bmN0aW9uLlxuICAgKi9cbiAgYWJvcnRTaWduYWw/OiBBYm9ydFNpZ25hbDtcblxuICAvKipcbiAgICogVGhlIHByb3ZpZGVyIHRoYXQgcHJvdmlkZXMgdGhlIG5ldyBjb2RlIGJsb2NrLlxuICAgKi9cbiAgY29kZUJsb2NrUHJvdmlkZXI6IFZhbHVlUHJvdmlkZXI8c3RyaW5nLCBbc3RyaW5nXT47XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gcHJlc2VydmUgdGhlIGxpbmUgcHJlZml4IG9mIHRoZSBjb2RlIGJsb2NrLiBEZWZhdWx0IGlzIGBmYWxzZWAuXG4gICAqL1xuICBzaG91bGRQcmVzZXJ2ZUxpbmVQcmVmaXg/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIEdldHMgdGhlIGluZm9ybWF0aW9uIGFib3V0IGEgY29kZSBibG9jayBpbiBhIE1hcmtkb3duIHNlY3Rpb24uXG4gKlxuICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgb3B0aW9ucyBmb3IgdGhlIGZ1bmN0aW9uLlxuICogQHJldHVybnMgVGhlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBjb2RlIGJsb2NrIGluIHRoZSBNYXJrZG93biBzZWN0aW9uLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0Q29kZUJsb2NrTWFya2Rvd25JbmZvKG9wdGlvbnM6IEdldENvZGVCbG9ja1NlY3Rpb25JbmZvT3B0aW9ucyk6IFByb21pc2U8Q29kZUJsb2NrTWFya2Rvd25JbmZvcm1hdGlvbiB8IG51bGw+IHtcbiAgY29uc3QgeyBhcHAsIGN0eCwgZWwsIHNvdXJjZSB9ID0gb3B0aW9ucztcblxuICBjb25zdCBzb3VyY2VGaWxlID0gYXBwLnZhdWx0LmdldEZpbGVCeVBhdGgoY3R4LnNvdXJjZVBhdGgpO1xuICBpZiAoIXNvdXJjZUZpbGUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYFNvdXJjZSBmaWxlICR7Y3R4LnNvdXJjZVBhdGh9IG5vdCBmb3VuZC5gKTtcbiAgfVxuICBjb25zdCBjb250ZW50ID0gb3B0aW9ucy5ub3RlQ29udGVudCA/PyBhd2FpdCBhcHAudmF1bHQuY2FjaGVkUmVhZChzb3VyY2VGaWxlKTtcblxuICBjb25zdCBhcHByb3hpbWF0ZVNlY3Rpb25JbmZvID0gY3R4LmdldFNlY3Rpb25JbmZvKGVsKSA/PyB7XG4gICAgbGluZUVuZDogY29udGVudC5zcGxpdCgnXFxuJykubGVuZ3RoIC0gMSxcbiAgICBsaW5lU3RhcnQ6IDAsXG4gICAgdGV4dDogY29udGVudFxuICB9O1xuXG4gIGlmICghaGFzU2luZ2xlT2NjdXJyZW5jZShjb250ZW50LCBhcHByb3hpbWF0ZVNlY3Rpb25JbmZvLnRleHQpKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBjb25zdCBzZWN0aW9uT2Zmc2V0ID0gY29udGVudC5pbmRleE9mKGFwcHJveGltYXRlU2VjdGlvbkluZm8udGV4dCk7XG4gIGNvbnN0IGxpbmVzQmVmb3JlU2VjdGlvbkNvdW50ID0gY29udGVudC5zbGljZSgwLCBzZWN0aW9uT2Zmc2V0KS5zcGxpdCgnXFxuJykubGVuZ3RoIC0gMTtcblxuICBjb25zdCBpc0luQ2FsbG91dCA9ICEhZWwucGFyZW50RWxlbWVudD8uY2xhc3NMaXN0LmNvbnRhaW5zKCdjYWxsb3V0LWNvbnRlbnQnKTtcblxuICBjb25zdCBsYW5ndWFnZSA9IGdldExhbmd1YWdlRnJvbUVsZW1lbnQoZWwpO1xuICBjb25zdCBzb3VyY2VMaW5lcyA9IHNvdXJjZS5zcGxpdCgnXFxuJyk7XG5cbiAgY29uc3QgdGV4dExpbmVzID0gYXBwcm94aW1hdGVTZWN0aW9uSW5mby50ZXh0LnNwbGl0KCdcXG4nKTtcbiAgY29uc3QgdGV4dExpbmVPZmZzZXRzID0gbmV3IE1hcDxudW1iZXIsIG51bWJlcj4oKTtcbiAgdGV4dExpbmVPZmZzZXRzLnNldChsaW5lc0JlZm9yZVNlY3Rpb25Db3VudCwgc2VjdGlvbk9mZnNldCk7XG5cbiAgbGV0IGxhc3RUZXh0TGluZU9mZnNldCA9IHNlY3Rpb25PZmZzZXQ7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgdGV4dExpbmVzLmxlbmd0aDsgaSsrKSB7XG4gICAgY29uc3QgdGV4dExpbmUgPSB0ZXh0TGluZXNbaV07XG4gICAgY29uc3QgbGluZSA9IHRleHRMaW5lID8/ICcnO1xuICAgIGNvbnN0IGxpbmVPZmZzZXQgPSBsYXN0VGV4dExpbmVPZmZzZXQgKyBsaW5lLmxlbmd0aCArIDE7XG4gICAgdGV4dExpbmVPZmZzZXRzLnNldChsaW5lc0JlZm9yZVNlY3Rpb25Db3VudCArIGkgKyAxLCBsaW5lT2Zmc2V0KTtcbiAgICBsYXN0VGV4dExpbmVPZmZzZXQgPSBsaW5lT2Zmc2V0O1xuICB9XG5cbiAgY29uc3QgcG90ZW50aWFsQ29kZUJsb2NrVGV4dExpbmVzID0gdGV4dExpbmVzLm1hcCgobGluZSwgaW5kZXgpID0+XG4gICAgYXBwcm94aW1hdGVTZWN0aW9uSW5mby5saW5lU3RhcnQgPD0gaW5kZXggJiYgaW5kZXggPD0gYXBwcm94aW1hdGVTZWN0aW9uSW5mby5saW5lRW5kID8gbGluZSA6ICcnXG4gICk7XG4gIGNvbnN0IHBvdGVudGlhbENvZGVCbG9ja1RleHQgPSBwb3RlbnRpYWxDb2RlQmxvY2tUZXh0TGluZXMuam9pbignXFxuJyk7XG5cbiAgY29uc3QgUkVHX0VYUCA9XG4gICAgLyg/PD1efFxcbikoPzxMaW5lUHJlZml4PiB7MCwzfSg/Oj4gezEsM30pKikoPzxDb2RlQmxvY2tTdGFydERlbGltaXRlcj4oPzxDb2RlQmxvY2tTdGFydERlbGltaXRlckNoYXI+W2B+XSkoPzpcXGs8Q29kZUJsb2NrU3RhcnREZWxpbWl0ZXJDaGFyPnsyLH0pKSg/PENvZGVCbG9ja0xhbmd1YWdlPlxcUyopKD86WyBcXHRdKD88Q29kZUJsb2NrQXJncz4uKj8pKT8oPzpcXG4oPzxDb2RlQmxvY2tDb250ZW50Pig/Olxcbj9cXGs8TGluZVByZWZpeD4uKikrPykpP1xcblxcazxMaW5lUHJlZml4Pig/PENvZGVCbG9ja0VuZERlbGltaXRlcj5cXGs8Q29kZUJsb2NrU3RhcnREZWxpbWl0ZXI+XFxrPENvZGVCbG9ja1N0YXJ0RGVsaW1pdGVyQ2hhcj4qKVsgXFx0XSooPz1cXG58JCkvZztcblxuICBsZXQgbWFya2Rvd25JbmZvOiBDb2RlQmxvY2tNYXJrZG93bkluZm9ybWF0aW9uIHwgbnVsbCA9IG51bGw7XG5cbiAgZm9yIChjb25zdCBtYXRjaCBvZiBwb3RlbnRpYWxDb2RlQmxvY2tUZXh0Lm1hdGNoQWxsKFJFR19FWFApKSB7XG4gICAgaWYgKCFpc1N1aXRhYmxlQ29kZUJsb2NrKG1hdGNoLCBsYW5ndWFnZSwgc291cmNlLCBpc0luQ2FsbG91dCkpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGlmIChtYXJrZG93bkluZm8pIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIG1hcmtkb3duSW5mbyA9IGNyZWF0ZU1hcmtkb3duSW5mb0Zyb21NYXRjaChwb3RlbnRpYWxDb2RlQmxvY2tUZXh0LCBtYXRjaCwgYXBwcm94aW1hdGVTZWN0aW9uSW5mbywgc291cmNlTGluZXMsIHRleHRMaW5lT2Zmc2V0cywgbGluZXNCZWZvcmVTZWN0aW9uQ291bnQpO1xuICB9XG5cbiAgaWYgKCFtYXJrZG93bkluZm8pIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHJldHVybiBtYXJrZG93bkluZm87XG59XG5cbi8qKlxuICogSW5zZXJ0cyB0ZXh0IGFmdGVyIHRoZSBjb2RlIGJsb2NrLlxuICpcbiAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIG9wdGlvbnMgZm9yIHRoZSBmdW5jdGlvbi5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGluc2VydEFmdGVyQ29kZUJsb2NrKG9wdGlvbnM6IEluc2VydENvZGVCbG9ja09wdGlvbnMpOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgeyBhcHAsIGN0eCwgbGluZU9mZnNldCA9IDAsIHRleHQgfSA9IG9wdGlvbnM7XG5cbiAgYXdhaXQgcHJvY2VzcyhhcHAsIGN0eC5zb3VyY2VQYXRoLCBhc3luYyAoX2Fib3J0U2lnbmFsLCBjb250ZW50KSA9PiB7XG4gICAgY29uc3QgbWFya2Rvd25JbmZvID0gYXdhaXQgZ2V0Q29kZUJsb2NrTWFya2Rvd25JbmZvKHtcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgICBub3RlQ29udGVudDogY29udGVudFxuICAgIH0pO1xuICAgIGlmICghbWFya2Rvd25JbmZvKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0NvdWxkIG5vdCB1bmlxdWVseSBpZGVudGlmeSB0aGUgY29kZSBibG9jay4nKTtcbiAgICB9XG5cbiAgICBjb25zdCBpbnNlcnRMaW5lSW5kZXggPSBtYXJrZG93bkluZm8ubm90ZVBvcy5lbmQubGluZSArIGxpbmVPZmZzZXQgKyAxO1xuICAgIHJldHVybiBpbnNlcnRUZXh0KGNvbnRlbnQsIGluc2VydExpbmVJbmRleCwgdGV4dCwgb3B0aW9ucy5zaG91bGRQcmVzZXJ2ZUxpbmVQcmVmaXgpO1xuICB9KTtcbn1cblxuLyoqXG4gKiBJbnNlcnRzIHRleHQgYmVmb3JlIHRoZSBjb2RlIGJsb2NrLlxuICpcbiAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIG9wdGlvbnMgZm9yIHRoZSBmdW5jdGlvbi5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGluc2VydEJlZm9yZUNvZGVCbG9jayhvcHRpb25zOiBJbnNlcnRDb2RlQmxvY2tPcHRpb25zKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IHsgYXBwLCBjdHgsIGxpbmVPZmZzZXQgPSAwLCB0ZXh0IH0gPSBvcHRpb25zO1xuXG4gIGF3YWl0IHByb2Nlc3MoYXBwLCBjdHguc291cmNlUGF0aCwgYXN5bmMgKF9hYm9ydFNpZ25hbCwgY29udGVudCkgPT4ge1xuICAgIGNvbnN0IG1hcmtkb3duSW5mbyA9IGF3YWl0IGdldENvZGVCbG9ja01hcmtkb3duSW5mbyh7XG4gICAgICAuLi5vcHRpb25zLFxuICAgICAgbm90ZUNvbnRlbnQ6IGNvbnRlbnRcbiAgICB9KTtcbiAgICBpZiAoIW1hcmtkb3duSW5mbykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdDb3VsZCBub3QgdW5pcXVlbHkgaWRlbnRpZnkgdGhlIGNvZGUgYmxvY2suJyk7XG4gICAgfVxuXG4gICAgY29uc3QgaW5zZXJ0TGluZUluZGV4ID0gbWFya2Rvd25JbmZvLm5vdGVQb3Muc3RhcnQubGluZSAtIGxpbmVPZmZzZXQ7XG4gICAgcmV0dXJuIGluc2VydFRleHQoY29udGVudCwgaW5zZXJ0TGluZUluZGV4LCB0ZXh0LCBvcHRpb25zLnNob3VsZFByZXNlcnZlTGluZVByZWZpeCk7XG4gIH0pO1xufVxuXG4vKipcbiAqIFJlbW92ZXMgdGhlIGNvZGUgYmxvY2suXG4gKlxuICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgb3B0aW9ucyBmb3IgdGhlIGZ1bmN0aW9uLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVtb3ZlQ29kZUJsb2NrKG9wdGlvbnM6IEdldENvZGVCbG9ja1NlY3Rpb25JbmZvT3B0aW9ucyk6IFByb21pc2U8dm9pZD4ge1xuICBhd2FpdCByZXBsYWNlQ29kZUJsb2NrKHtcbiAgICAuLi5vcHRpb25zLFxuICAgIGNvZGVCbG9ja1Byb3ZpZGVyOiAnJ1xuICB9KTtcbn1cblxuLyoqXG4gKiBSZXBsYWNlcyB0aGUgY29kZSBibG9jay5cbiAqXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBvcHRpb25zIGZvciB0aGUgZnVuY3Rpb24uXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZXBsYWNlQ29kZUJsb2NrKG9wdGlvbnM6IFJlcGxhY2VDb2RlQmxvY2tPcHRpb25zKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IHsgYXBwLCBjb2RlQmxvY2tQcm92aWRlciwgY3R4IH0gPSBvcHRpb25zO1xuICBvcHRpb25zLmFib3J0U2lnbmFsPy50aHJvd0lmQWJvcnRlZCgpO1xuXG4gIGF3YWl0IHByb2Nlc3MoYXBwLCBjdHguc291cmNlUGF0aCwgYXN5bmMgKGFib3J0U2lnbmFsLCBjb250ZW50KSA9PiB7XG4gICAgYWJvcnRTaWduYWwgPSBhYm9ydFNpZ25hbEFueShhYm9ydFNpZ25hbCwgb3B0aW9ucy5hYm9ydFNpZ25hbCk7XG4gICAgYWJvcnRTaWduYWwudGhyb3dJZkFib3J0ZWQoKTtcbiAgICBjb25zdCBtYXJrZG93bkluZm8gPSBhd2FpdCBnZXRDb2RlQmxvY2tNYXJrZG93bkluZm8oe1xuICAgICAgLi4ub3B0aW9ucyxcbiAgICAgIG5vdGVDb250ZW50OiBjb250ZW50XG4gICAgfSk7XG4gICAgaWYgKCFtYXJrZG93bkluZm8pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQ291bGQgbm90IHVuaXF1ZWx5IGlkZW50aWZ5IHRoZSBjb2RlIGJsb2NrLicpO1xuICAgIH1cblxuICAgIGxldCBvbGRDb2RlQmxvY2sgPSBjb250ZW50LnNsaWNlKG1hcmtkb3duSW5mby5ub3RlUG9zLnN0YXJ0Lm9mZnNldCwgbWFya2Rvd25JbmZvLm5vdGVQb3MuZW5kLm9mZnNldCk7XG4gICAgaWYgKG9wdGlvbnMuc2hvdWxkUHJlc2VydmVMaW5lUHJlZml4KSB7XG4gICAgICBvbGRDb2RlQmxvY2sgPSB1bmluZGVudChvbGRDb2RlQmxvY2ssIG1hcmtkb3duSW5mby5saW5lUHJlZml4KTtcbiAgICB9XG5cbiAgICBsZXQgbmV3Q29kZUJsb2NrID0gYXdhaXQgcmVzb2x2ZVZhbHVlKGNvZGVCbG9ja1Byb3ZpZGVyLCBhYm9ydFNpZ25hbCwgb2xkQ29kZUJsb2NrKTtcbiAgICBpZiAobmV3Q29kZUJsb2NrICYmIG9wdGlvbnMuc2hvdWxkUHJlc2VydmVMaW5lUHJlZml4KSB7XG4gICAgICBuZXdDb2RlQmxvY2sgPSBpbmRlbnQobmV3Q29kZUJsb2NrLCBtYXJrZG93bkluZm8ubGluZVByZWZpeCk7XG4gICAgfVxuXG4gICAgY29uc3QgdGV4dEJlZm9yZUNvZGVCbG9jayA9IGNvbnRlbnQuc2xpY2UoMCwgbWFya2Rvd25JbmZvLm5vdGVQb3Muc3RhcnQub2Zmc2V0KTtcbiAgICBjb25zdCB0ZXh0QWZ0ZXJDb2RlQmxvY2sgPSBjb250ZW50LnNsaWNlKG1hcmtkb3duSW5mby5ub3RlUG9zLmVuZC5vZmZzZXQpO1xuXG4gICAgcmV0dXJuIGAke2FwcGVuZE5ld0xpbmUodGV4dEJlZm9yZUNvZGVCbG9jayl9JHthcHBlbmROZXdMaW5lKG5ld0NvZGVCbG9jayl9JHt0ZXh0QWZ0ZXJDb2RlQmxvY2t9YDtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIGFwcGVuZE5ld0xpbmUodGV4dDogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIHRleHQgPT09ICcnID8gJycgOiBgJHt0ZXh0fVxcbmA7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZU1hcmtkb3duSW5mb0Zyb21NYXRjaChcbiAgcG90ZW50aWFsQ29kZUJsb2NrVGV4dDogc3RyaW5nLFxuICBtYXRjaDogUmVnRXhwTWF0Y2hBcnJheSxcbiAgYXBwcm94aW1hdGVTZWN0aW9uSW5mbzogTWFya2Rvd25TZWN0aW9uSW5mb3JtYXRpb24sXG4gIHNvdXJjZUxpbmVzOiBzdHJpbmdbXSxcbiAgdGV4dExpbmVPZmZzZXRzOiBNYXA8bnVtYmVyLCBudW1iZXI+LFxuICBsaW5lc0JlZm9yZVNlY3Rpb25Db3VudDogbnVtYmVyXG4pOiBDb2RlQmxvY2tNYXJrZG93bkluZm9ybWF0aW9uIHtcbiAgY29uc3QgbGluZVByZWZpeCA9IG1hdGNoLmdyb3Vwcz8uWydMaW5lUHJlZml4J10gPz8gJyc7XG4gIGNvbnN0IGNvZGVCbG9ja1N0YXJ0RGVsaW1pdGVyID0gbWF0Y2guZ3JvdXBzPy5bJ0NvZGVCbG9ja1N0YXJ0RGVsaW1pdGVyJ10gPz8gJyc7XG4gIGNvbnN0IGNvZGVCbG9ja0VuZERlbGltaXRlciA9IG1hdGNoLmdyb3Vwcz8uWydDb2RlQmxvY2tFbmREZWxpbWl0ZXInXSA/PyAnJztcbiAgY29uc3QgY29kZUJsb2NrQXJnc1N0ciA9IG1hdGNoLmdyb3Vwcz8uWydDb2RlQmxvY2tBcmdzJ10gPz8gJyc7XG4gIGNvbnN0IGxhbmd1YWdlID0gbWF0Y2guZ3JvdXBzPy5bJ0NvZGVCbG9ja0xhbmd1YWdlJ10gPz8gJyc7XG5cbiAgY29uc3QgcHJldmlvdXNUZXh0ID0gcG90ZW50aWFsQ29kZUJsb2NrVGV4dC5zbGljZSgwLCBtYXRjaC5pbmRleCk7XG4gIGNvbnN0IHByZXZpb3VzVGV4dExpbmVzQ291bnQgPSBwcmV2aW91c1RleHQuc3BsaXQoJ1xcbicpLmxlbmd0aCAtIDE7XG5cbiAgY29uc3Qgc3RhcnRMaW5lID0gbGluZXNCZWZvcmVTZWN0aW9uQ291bnQgKyBwcmV2aW91c1RleHRMaW5lc0NvdW50O1xuICBjb25zdCBlbmRMaW5lID0gc3RhcnRMaW5lICsgc291cmNlTGluZXMubGVuZ3RoICsgMTtcblxuICByZXR1cm4ge1xuICAgIGFyZ3M6IGNvZGVCbG9ja0FyZ3NTdHIuc3BsaXQoL1xccysvKS5maWx0ZXIoQm9vbGVhbiksXG4gICAgZW5kRGVsaW1pdGVyOiBjb2RlQmxvY2tFbmREZWxpbWl0ZXIsXG4gICAgbGFuZ3VhZ2UsXG4gICAgbGluZVByZWZpeCxcbiAgICBub3RlUG9zOiB7XG4gICAgICBlbmQ6IHtcbiAgICAgICAgY29sOiAodGV4dExpbmVPZmZzZXRzLmdldChlbmRMaW5lICsgMSkgPz8gMCkgLSAodGV4dExpbmVPZmZzZXRzLmdldChlbmRMaW5lKSA/PyAwKSAtIDEsXG4gICAgICAgIGxpbmU6IGVuZExpbmUsXG4gICAgICAgIG9mZnNldDogKHRleHRMaW5lT2Zmc2V0cy5nZXQoZW5kTGluZSArIDEpID8/IDApIC0gMVxuICAgICAgfSxcbiAgICAgIHN0YXJ0OiB7XG4gICAgICAgIGNvbDogMCxcbiAgICAgICAgbGluZTogc3RhcnRMaW5lLFxuICAgICAgICBvZmZzZXQ6IHRleHRMaW5lT2Zmc2V0cy5nZXQoc3RhcnRMaW5lKSA/PyAwXG4gICAgICB9XG4gICAgfSxcbiAgICByYXdBcmdzU3RyOiBjb2RlQmxvY2tBcmdzU3RyLFxuICAgIHNlY3Rpb25JbmZvOiB7XG4gICAgICBsaW5lRW5kOiBwcmV2aW91c1RleHRMaW5lc0NvdW50ICsgc291cmNlTGluZXMubGVuZ3RoICsgMSxcbiAgICAgIGxpbmVTdGFydDogcHJldmlvdXNUZXh0TGluZXNDb3VudCxcbiAgICAgIHRleHQ6IGFwcHJveGltYXRlU2VjdGlvbkluZm8udGV4dFxuICAgIH0sXG4gICAgc3RhcnREZWxpbWl0ZXI6IGNvZGVCbG9ja1N0YXJ0RGVsaW1pdGVyXG4gIH07XG59XG5cbmZ1bmN0aW9uIGdldExhbmd1YWdlRnJvbUVsZW1lbnQoZWw6IEhUTUxFbGVtZW50KTogc3RyaW5nIHtcbiAgY29uc3QgQkxPQ0tfTEFOR1VBR0VfUFJFRklYID0gJ2Jsb2NrLWxhbmd1YWdlLSc7XG4gIHJldHVybiBBcnJheS5mcm9tKGVsLmNsYXNzTGlzdCkuZmluZCgoY2xzKSA9PiBjbHMuc3RhcnRzV2l0aChCTE9DS19MQU5HVUFHRV9QUkVGSVgpKT8uc2xpY2UoQkxPQ0tfTEFOR1VBR0VfUFJFRklYLmxlbmd0aCkgPz8gJyc7XG59XG5cbmZ1bmN0aW9uIGluc2VydFRleHQoY29udGVudDogc3RyaW5nLCBpbnNlcnRMaW5lSW5kZXg6IG51bWJlciwgdGV4dDogc3RyaW5nLCBzaG91bGRQcmVzZXJ2ZUxpbmVQcmVmaXg/OiBib29sZWFuKTogc3RyaW5nIHtcbiAgY29uc3QgbGluZXMgPSBjb250ZW50LnNwbGl0KCdcXG4nKTtcbiAgY29uc3QgbmV3TGluZXMgPSBsaW5lcy5zbGljZSgpO1xuICBjb25zdCB0ZXh0TGluZXMgPSB0ZXh0LnNwbGl0KCdcXG4nKTtcblxuICBpZiAoaW5zZXJ0TGluZUluZGV4IDwgMCkge1xuICAgIGluc2VydExpbmVJbmRleCA9IDA7XG4gIH1cbiAgaWYgKGluc2VydExpbmVJbmRleCA+IGxpbmVzLmxlbmd0aCkge1xuICAgIGluc2VydExpbmVJbmRleCA9IGxpbmVzLmxlbmd0aDtcbiAgfVxuXG4gIGNvbnN0IFBSRUZJWF9MSU5FX1JFR19FWFAgPSAvXiB7MCwzfSg/Oj4gezEsM30pKi9nO1xuICBjb25zdCBtYXRjaCA9IChsaW5lc1tpbnNlcnRMaW5lSW5kZXhdID8/ICcnKS5tYXRjaChQUkVGSVhfTElORV9SRUdfRVhQKTtcbiAgY29uc3QgbGluZVByZWZpeCA9IG1hdGNoPy5bMF0gPz8gJyc7XG4gIG5ld0xpbmVzLnNwbGljZShpbnNlcnRMaW5lSW5kZXgsIDAsIC4uLihzaG91bGRQcmVzZXJ2ZUxpbmVQcmVmaXggPyB0ZXh0TGluZXMubWFwKChsaW5lKSA9PiBpbmRlbnQobGluZSwgbGluZVByZWZpeCkpIDogdGV4dExpbmVzKSk7XG4gIHJldHVybiBuZXdMaW5lcy5qb2luKCdcXG4nKTtcbn1cblxuZnVuY3Rpb24gaXNTdWl0YWJsZUNvZGVCbG9jayhcbiAgbWF0Y2g6IFJlZ0V4cE1hdGNoQXJyYXksXG4gIGxhbmd1YWdlOiBzdHJpbmcsXG4gIHNvdXJjZTogc3RyaW5nLFxuICBpc0luQ2FsbG91dDogYm9vbGVhblxuKTogYm9vbGVhbiB7XG4gIGNvbnN0IGNvZGVCbG9ja0xhbmd1YWdlID0gbWF0Y2guZ3JvdXBzPy5bJ0NvZGVCbG9ja0xhbmd1YWdlJ10gPz8gJyc7XG4gIGlmIChjb2RlQmxvY2tMYW5ndWFnZSAhPT0gbGFuZ3VhZ2UpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBjb25zdCBsaW5lUHJlZml4ID0gbWF0Y2guZ3JvdXBzPy5bJ0xpbmVQcmVmaXgnXSA/PyAnJztcblxuICBpZiAoaXNJbkNhbGxvdXQgJiYgIWxpbmVQcmVmaXguaW5jbHVkZXMoJz4gJykpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBjb25zdCBjb2RlQmxvY2tDb250ZW50ID0gbWF0Y2guZ3JvdXBzPy5bJ0NvZGVCbG9ja0NvbnRlbnQnXSA/PyAnJztcbiAgY29uc3QgY2xlYW5Db2RlQmxvY2tDb250ZW50ID0gY29kZUJsb2NrQ29udGVudC5zcGxpdCgnXFxuJykubWFwKChsaW5lKSA9PiBsaW5lLnNsaWNlKGxpbmVQcmVmaXgubGVuZ3RoKSkuam9pbignXFxuJyk7XG5cbiAgcmV0dXJuIGNsZWFuQ29kZUJsb2NrQ29udGVudCA9PT0gc291cmNlO1xufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7OztBQWVBLFNBQVMsc0JBQXNCO0FBQy9CO0FBQUEsRUFD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
216
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL01hcmtkb3duQ29kZUJsb2NrUHJvY2Vzc29yLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBwYWNrYWdlRG9jdW1lbnRhdGlvblxuICpcbiAqIFRoaXMgbW9kdWxlIHByb3ZpZGVzIHV0aWxpdHkgZnVuY3Rpb25zIGZvciBwcm9jZXNzaW5nIGNvZGUgYmxvY2tzIGluIE9ic2lkaWFuLlxuICovXG5cbmltcG9ydCB0eXBlIHtcbiAgQXBwLFxuICBNYXJrZG93blBvc3RQcm9jZXNzb3JDb250ZXh0LFxuICBNYXJrZG93blNlY3Rpb25JbmZvcm1hdGlvblxufSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB0eXBlIHsgVmFsdWVQcm92aWRlciB9IGZyb20gJy4uL1ZhbHVlUHJvdmlkZXIudHMnO1xuaW1wb3J0IHR5cGUgeyBDb2RlQmxvY2tNYXJrZG93bkluZm9ybWF0aW9uIH0gZnJvbSAnLi9Db2RlQmxvY2tNYXJrZG93bkluZm9ybWF0aW9uLnRzJztcblxuaW1wb3J0IHsgYWJvcnRTaWduYWxBbnkgfSBmcm9tICcuLi9BYm9ydENvbnRyb2xsZXIudHMnO1xuaW1wb3J0IHtcbiAgaGFzU2luZ2xlT2NjdXJyZW5jZSxcbiAgaW5kZW50LFxuICB1bmluZGVudFxufSBmcm9tICcuLi9TdHJpbmcudHMnO1xuaW1wb3J0IHsgcmVzb2x2ZVZhbHVlIH0gZnJvbSAnLi4vVmFsdWVQcm92aWRlci50cyc7XG5pbXBvcnQge1xuICBwcm9jZXNzLFxuICBzYXZlTm90ZVxufSBmcm9tICcuL1ZhdWx0LnRzJztcblxuLyoqXG4gKiBSZXByZXNlbnRzIHRoZSBvcHRpb25zIGZvciBnZXR0aW5nIHRoZSBpbmZvcm1hdGlvbiBhYm91dCBhIGNvZGUgYmxvY2sgaW4gYSBNYXJrZG93biBzZWN0aW9uLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEdldENvZGVCbG9ja1NlY3Rpb25JbmZvT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBBbiBPYnNpZGlhbiBhcHAgaW5zdGFuY2UuXG4gICAqL1xuICBhcHA6IEFwcDtcblxuICAvKipcbiAgICogQSB7QGxpbmsgTWFya2Rvd25Qb3N0UHJvY2Vzc29yQ29udGV4dH0gb2JqZWN0LlxuICAgKi9cbiAgY3R4OiBNYXJrZG93blBvc3RQcm9jZXNzb3JDb250ZXh0O1xuXG4gIC8qKlxuICAgKiBBIHtAbGluayBIVE1MRWxlbWVudH0gcmVwcmVzZW50aW5nIHRoZSBjb2RlIGJsb2NrLlxuICAgKi9cbiAgZWw6IEhUTUxFbGVtZW50O1xuXG4gIC8qKlxuICAgKiBBIGNvbnRlbnQgb2YgdGhlIG5vdGUuXG4gICAqL1xuICBub3RlQ29udGVudD86IHN0cmluZztcblxuICAvKipcbiAgICogQSBzb3VyY2Ugb2YgdGhlIGNvZGUgYmxvY2suXG4gICAqL1xuICBzb3VyY2U6IHN0cmluZztcbn1cblxuLyoqXG4gKiBSZXByZXNlbnRzIHRoZSBvcHRpb25zIGZvciBpbnNlcnRpbmcgdGV4dCBhZnRlciBhIGNvZGUgYmxvY2suXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSW5zZXJ0Q29kZUJsb2NrT3B0aW9ucyBleHRlbmRzIEdldENvZGVCbG9ja1NlY3Rpb25JbmZvT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBBIG51bWJlciBvZiBsaW5lcyB0byBvZmZzZXQgdGhlIGluc2VydGlvbiBieS4gRGVmYXVsdCBpcyBgMGAuXG4gICAqL1xuICBsaW5lT2Zmc2V0PzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIHByZXNlcnZlIHRoZSBsaW5lIHByZWZpeCBvZiB0aGUgY29kZSBibG9jay4gRGVmYXVsdCBpcyBgZmFsc2VgLlxuICAgKi9cbiAgc2hvdWxkUHJlc2VydmVMaW5lUHJlZml4PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQSB0ZXh0IHRvIGluc2VydCBhZnRlciB0aGUgY29kZSBibG9jay5cbiAgICovXG4gIHRleHQ6IHN0cmluZztcbn1cblxuLyoqXG4gKiBSZXByZXNlbnRzIHRoZSBvcHRpb25zIGZvciByZXBsYWNpbmcgYSBjb2RlIGJsb2NrLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlcGxhY2VDb2RlQmxvY2tPcHRpb25zIGV4dGVuZHMgR2V0Q29kZUJsb2NrU2VjdGlvbkluZm9PcHRpb25zIHtcbiAgLyoqXG4gICAqIEFuIGFib3J0IHNpZ25hbCB0byBjb250cm9sIHRoZSBleGVjdXRpb24gb2YgdGhlIGZ1bmN0aW9uLlxuICAgKi9cbiAgYWJvcnRTaWduYWw/OiBBYm9ydFNpZ25hbDtcblxuICAvKipcbiAgICogUHJvdmlkZXMgYSBuZXcgY29kZSBibG9jay5cbiAgICovXG4gIGNvZGVCbG9ja1Byb3ZpZGVyOiBWYWx1ZVByb3ZpZGVyPHN0cmluZywgW3N0cmluZ10+O1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIHByZXNlcnZlIHRoZSBsaW5lIHByZWZpeCBvZiB0aGUgY29kZSBibG9jay4gRGVmYXVsdCBpcyBgZmFsc2VgLlxuICAgKi9cbiAgc2hvdWxkUHJlc2VydmVMaW5lUHJlZml4PzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBHZXRzIHRoZSBpbmZvcm1hdGlvbiBhYm91dCBhIGNvZGUgYmxvY2sgaW4gYSBNYXJrZG93biBzZWN0aW9uLlxuICpcbiAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIG9wdGlvbnMgZm9yIHRoZSBmdW5jdGlvbi5cbiAqIEByZXR1cm5zIFRoZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgY29kZSBibG9jayBpbiB0aGUgTWFya2Rvd24gc2VjdGlvbi5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldENvZGVCbG9ja01hcmtkb3duSW5mbyhvcHRpb25zOiBHZXRDb2RlQmxvY2tTZWN0aW9uSW5mb09wdGlvbnMpOiBQcm9taXNlPENvZGVCbG9ja01hcmtkb3duSW5mb3JtYXRpb24gfCBudWxsPiB7XG4gIGNvbnN0IHsgYXBwLCBjdHgsIGVsLCBzb3VyY2UgfSA9IG9wdGlvbnM7XG5cbiAgY29uc3Qgc291cmNlRmlsZSA9IGFwcC52YXVsdC5nZXRGaWxlQnlQYXRoKGN0eC5zb3VyY2VQYXRoKTtcbiAgaWYgKCFzb3VyY2VGaWxlKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBTb3VyY2UgZmlsZSAke2N0eC5zb3VyY2VQYXRofSBub3QgZm91bmQuYCk7XG4gIH1cblxuICBsZXQgY29udGVudDogc3RyaW5nO1xuICBpZiAob3B0aW9ucy5ub3RlQ29udGVudCkge1xuICAgIGNvbnRlbnQgPSBvcHRpb25zLm5vdGVDb250ZW50O1xuICB9IGVsc2Uge1xuICAgIGF3YWl0IHNhdmVOb3RlKGFwcCwgc291cmNlRmlsZSk7XG4gICAgY29udGVudCA9IGF3YWl0IGFwcC52YXVsdC5yZWFkKHNvdXJjZUZpbGUpO1xuICB9XG5cbiAgY29uc3QgYXBwcm94aW1hdGVTZWN0aW9uSW5mbyA9IGN0eC5nZXRTZWN0aW9uSW5mbyhlbCkgPz8ge1xuICAgIGxpbmVFbmQ6IGNvbnRlbnQuc3BsaXQoJ1xcbicpLmxlbmd0aCAtIDEsXG4gICAgbGluZVN0YXJ0OiAwLFxuICAgIHRleHQ6IGNvbnRlbnRcbiAgfTtcblxuICBpZiAoIWhhc1NpbmdsZU9jY3VycmVuY2UoY29udGVudCwgYXBwcm94aW1hdGVTZWN0aW9uSW5mby50ZXh0KSkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgY29uc3Qgc2VjdGlvbk9mZnNldCA9IGNvbnRlbnQuaW5kZXhPZihhcHByb3hpbWF0ZVNlY3Rpb25JbmZvLnRleHQpO1xuICBjb25zdCBsaW5lc0JlZm9yZVNlY3Rpb25Db3VudCA9IGNvbnRlbnQuc2xpY2UoMCwgc2VjdGlvbk9mZnNldCkuc3BsaXQoJ1xcbicpLmxlbmd0aCAtIDE7XG5cbiAgY29uc3QgaXNJbkNhbGxvdXQgPSAhIWVsLnBhcmVudEVsZW1lbnQ/LmNsYXNzTGlzdC5jb250YWlucygnY2FsbG91dC1jb250ZW50Jyk7XG5cbiAgY29uc3QgbGFuZ3VhZ2UgPSBnZXRMYW5ndWFnZUZyb21FbGVtZW50KGVsKTtcbiAgY29uc3Qgc291cmNlTGluZXMgPSBzb3VyY2Uuc3BsaXQoJ1xcbicpO1xuXG4gIGNvbnN0IHRleHRMaW5lcyA9IGFwcHJveGltYXRlU2VjdGlvbkluZm8udGV4dC5zcGxpdCgnXFxuJyk7XG4gIGNvbnN0IHRleHRMaW5lT2Zmc2V0cyA9IG5ldyBNYXA8bnVtYmVyLCBudW1iZXI+KCk7XG4gIHRleHRMaW5lT2Zmc2V0cy5zZXQobGluZXNCZWZvcmVTZWN0aW9uQ291bnQsIHNlY3Rpb25PZmZzZXQpO1xuXG4gIGxldCBsYXN0VGV4dExpbmVPZmZzZXQgPSBzZWN0aW9uT2Zmc2V0O1xuICBmb3IgKGxldCBpID0gMDsgaSA8IHRleHRMaW5lcy5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IHRleHRMaW5lID0gdGV4dExpbmVzW2ldO1xuICAgIGNvbnN0IGxpbmUgPSB0ZXh0TGluZSA/PyAnJztcbiAgICBjb25zdCBsaW5lT2Zmc2V0ID0gbGFzdFRleHRMaW5lT2Zmc2V0ICsgbGluZS5sZW5ndGggKyAxO1xuICAgIHRleHRMaW5lT2Zmc2V0cy5zZXQobGluZXNCZWZvcmVTZWN0aW9uQ291bnQgKyBpICsgMSwgbGluZU9mZnNldCk7XG4gICAgbGFzdFRleHRMaW5lT2Zmc2V0ID0gbGluZU9mZnNldDtcbiAgfVxuXG4gIGNvbnN0IHBvdGVudGlhbENvZGVCbG9ja1RleHRMaW5lcyA9IHRleHRMaW5lcy5tYXAoKGxpbmUsIGluZGV4KSA9PlxuICAgIGFwcHJveGltYXRlU2VjdGlvbkluZm8ubGluZVN0YXJ0IDw9IGluZGV4ICYmIGluZGV4IDw9IGFwcHJveGltYXRlU2VjdGlvbkluZm8ubGluZUVuZCA/IGxpbmUgOiAnJ1xuICApO1xuICBjb25zdCBwb3RlbnRpYWxDb2RlQmxvY2tUZXh0ID0gcG90ZW50aWFsQ29kZUJsb2NrVGV4dExpbmVzLmpvaW4oJ1xcbicpO1xuXG4gIGNvbnN0IFJFR19FWFAgPVxuICAgIC8oPzw9XnxcXG4pKD88TGluZVByZWZpeD4gezAsM30oPzo+IHsxLDN9KSopKD88Q29kZUJsb2NrU3RhcnREZWxpbWl0ZXI+KD88Q29kZUJsb2NrU3RhcnREZWxpbWl0ZXJDaGFyPltgfl0pKD86XFxrPENvZGVCbG9ja1N0YXJ0RGVsaW1pdGVyQ2hhcj57Mix9KSkoPzxDb2RlQmxvY2tMYW5ndWFnZT5cXFMqKSg/OlsgXFx0XSg/PENvZGVCbG9ja0FyZ3M+Lio/KSk/KD86XFxuKD88Q29kZUJsb2NrQ29udGVudD4oPzpcXG4/XFxrPExpbmVQcmVmaXg+LiopKz8pKT9cXG5cXGs8TGluZVByZWZpeD4oPzxDb2RlQmxvY2tFbmREZWxpbWl0ZXI+XFxrPENvZGVCbG9ja1N0YXJ0RGVsaW1pdGVyPlxcazxDb2RlQmxvY2tTdGFydERlbGltaXRlckNoYXI+KilbIFxcdF0qKD89XFxufCQpL2c7XG5cbiAgbGV0IG1hcmtkb3duSW5mbzogQ29kZUJsb2NrTWFya2Rvd25JbmZvcm1hdGlvbiB8IG51bGwgPSBudWxsO1xuXG4gIGZvciAoY29uc3QgbWF0Y2ggb2YgcG90ZW50aWFsQ29kZUJsb2NrVGV4dC5tYXRjaEFsbChSRUdfRVhQKSkge1xuICAgIGlmICghaXNTdWl0YWJsZUNvZGVCbG9jayhtYXRjaCwgbGFuZ3VhZ2UsIHNvdXJjZSwgaXNJbkNhbGxvdXQpKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBpZiAobWFya2Rvd25JbmZvKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBtYXJrZG93bkluZm8gPSBjcmVhdGVNYXJrZG93bkluZm9Gcm9tTWF0Y2gocG90ZW50aWFsQ29kZUJsb2NrVGV4dCwgbWF0Y2gsIGFwcHJveGltYXRlU2VjdGlvbkluZm8sIHNvdXJjZUxpbmVzLCB0ZXh0TGluZU9mZnNldHMsIGxpbmVzQmVmb3JlU2VjdGlvbkNvdW50KTtcbiAgfVxuXG4gIGlmICghbWFya2Rvd25JbmZvKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICByZXR1cm4gbWFya2Rvd25JbmZvO1xufVxuXG4vKipcbiAqIEluc2VydHMgdGV4dCBhZnRlciB0aGUgY29kZSBibG9jay5cbiAqXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBvcHRpb25zIGZvciB0aGUgZnVuY3Rpb24uXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBpbnNlcnRBZnRlckNvZGVCbG9jayhvcHRpb25zOiBJbnNlcnRDb2RlQmxvY2tPcHRpb25zKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IHsgYXBwLCBjdHgsIGxpbmVPZmZzZXQgPSAwLCB0ZXh0IH0gPSBvcHRpb25zO1xuXG4gIGF3YWl0IHByb2Nlc3MoYXBwLCBjdHguc291cmNlUGF0aCwgYXN5bmMgKF9hYm9ydFNpZ25hbCwgY29udGVudCkgPT4ge1xuICAgIGNvbnN0IG1hcmtkb3duSW5mbyA9IGF3YWl0IGdldENvZGVCbG9ja01hcmtkb3duSW5mbyh7XG4gICAgICAuLi5vcHRpb25zLFxuICAgICAgbm90ZUNvbnRlbnQ6IGNvbnRlbnRcbiAgICB9KTtcbiAgICBpZiAoIW1hcmtkb3duSW5mbykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdDb3VsZCBub3QgdW5pcXVlbHkgaWRlbnRpZnkgdGhlIGNvZGUgYmxvY2suJyk7XG4gICAgfVxuXG4gICAgY29uc3QgaW5zZXJ0TGluZUluZGV4ID0gbWFya2Rvd25JbmZvLnBvc2l0aW9uSW5Ob3RlLmVuZC5saW5lICsgbGluZU9mZnNldCArIDE7XG4gICAgcmV0dXJuIGluc2VydFRleHQoY29udGVudCwgaW5zZXJ0TGluZUluZGV4LCB0ZXh0LCBvcHRpb25zLnNob3VsZFByZXNlcnZlTGluZVByZWZpeCk7XG4gIH0pO1xufVxuXG4vKipcbiAqIEluc2VydHMgdGV4dCBiZWZvcmUgdGhlIGNvZGUgYmxvY2suXG4gKlxuICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgb3B0aW9ucyBmb3IgdGhlIGZ1bmN0aW9uLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gaW5zZXJ0QmVmb3JlQ29kZUJsb2NrKG9wdGlvbnM6IEluc2VydENvZGVCbG9ja09wdGlvbnMpOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgeyBhcHAsIGN0eCwgbGluZU9mZnNldCA9IDAsIHRleHQgfSA9IG9wdGlvbnM7XG5cbiAgYXdhaXQgcHJvY2VzcyhhcHAsIGN0eC5zb3VyY2VQYXRoLCBhc3luYyAoX2Fib3J0U2lnbmFsLCBjb250ZW50KSA9PiB7XG4gICAgY29uc3QgbWFya2Rvd25JbmZvID0gYXdhaXQgZ2V0Q29kZUJsb2NrTWFya2Rvd25JbmZvKHtcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgICBub3RlQ29udGVudDogY29udGVudFxuICAgIH0pO1xuICAgIGlmICghbWFya2Rvd25JbmZvKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0NvdWxkIG5vdCB1bmlxdWVseSBpZGVudGlmeSB0aGUgY29kZSBibG9jay4nKTtcbiAgICB9XG5cbiAgICBjb25zdCBpbnNlcnRMaW5lSW5kZXggPSBtYXJrZG93bkluZm8ucG9zaXRpb25Jbk5vdGUuc3RhcnQubGluZSAtIGxpbmVPZmZzZXQ7XG4gICAgcmV0dXJuIGluc2VydFRleHQoY29udGVudCwgaW5zZXJ0TGluZUluZGV4LCB0ZXh0LCBvcHRpb25zLnNob3VsZFByZXNlcnZlTGluZVByZWZpeCk7XG4gIH0pO1xufVxuXG4vKipcbiAqIFJlbW92ZXMgdGhlIGNvZGUgYmxvY2suXG4gKlxuICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgb3B0aW9ucyBmb3IgdGhlIGZ1bmN0aW9uLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVtb3ZlQ29kZUJsb2NrKG9wdGlvbnM6IEdldENvZGVCbG9ja1NlY3Rpb25JbmZvT3B0aW9ucyk6IFByb21pc2U8dm9pZD4ge1xuICBhd2FpdCByZXBsYWNlQ29kZUJsb2NrKHtcbiAgICAuLi5vcHRpb25zLFxuICAgIGNvZGVCbG9ja1Byb3ZpZGVyOiAnJ1xuICB9KTtcbn1cblxuLyoqXG4gKiBSZXBsYWNlcyB0aGUgY29kZSBibG9jay5cbiAqXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBvcHRpb25zIGZvciB0aGUgZnVuY3Rpb24uXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZXBsYWNlQ29kZUJsb2NrKG9wdGlvbnM6IFJlcGxhY2VDb2RlQmxvY2tPcHRpb25zKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IHsgYXBwLCBjb2RlQmxvY2tQcm92aWRlciwgY3R4IH0gPSBvcHRpb25zO1xuICBvcHRpb25zLmFib3J0U2lnbmFsPy50aHJvd0lmQWJvcnRlZCgpO1xuXG4gIGF3YWl0IHByb2Nlc3MoYXBwLCBjdHguc291cmNlUGF0aCwgYXN5bmMgKGFib3J0U2lnbmFsLCBjb250ZW50KSA9PiB7XG4gICAgYWJvcnRTaWduYWwgPSBhYm9ydFNpZ25hbEFueShhYm9ydFNpZ25hbCwgb3B0aW9ucy5hYm9ydFNpZ25hbCk7XG4gICAgYWJvcnRTaWduYWwudGhyb3dJZkFib3J0ZWQoKTtcbiAgICBjb25zdCBtYXJrZG93bkluZm8gPSBhd2FpdCBnZXRDb2RlQmxvY2tNYXJrZG93bkluZm8oe1xuICAgICAgLi4ub3B0aW9ucyxcbiAgICAgIG5vdGVDb250ZW50OiBjb250ZW50XG4gICAgfSk7XG4gICAgaWYgKCFtYXJrZG93bkluZm8pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQ291bGQgbm90IHVuaXF1ZWx5IGlkZW50aWZ5IHRoZSBjb2RlIGJsb2NrLicpO1xuICAgIH1cblxuICAgIGxldCBvbGRDb2RlQmxvY2sgPSBjb250ZW50LnNsaWNlKG1hcmtkb3duSW5mby5wb3NpdGlvbkluTm90ZS5zdGFydC5vZmZzZXQsIG1hcmtkb3duSW5mby5wb3NpdGlvbkluTm90ZS5lbmQub2Zmc2V0KTtcbiAgICBpZiAob3B0aW9ucy5zaG91bGRQcmVzZXJ2ZUxpbmVQcmVmaXgpIHtcbiAgICAgIG9sZENvZGVCbG9jayA9IHVuaW5kZW50KG9sZENvZGVCbG9jaywgbWFya2Rvd25JbmZvLmxpbmVQcmVmaXgpO1xuICAgIH1cblxuICAgIGxldCBuZXdDb2RlQmxvY2sgPSBhd2FpdCByZXNvbHZlVmFsdWUoY29kZUJsb2NrUHJvdmlkZXIsIGFib3J0U2lnbmFsLCBvbGRDb2RlQmxvY2spO1xuICAgIGlmIChuZXdDb2RlQmxvY2sgJiYgb3B0aW9ucy5zaG91bGRQcmVzZXJ2ZUxpbmVQcmVmaXgpIHtcbiAgICAgIG5ld0NvZGVCbG9jayA9IGluZGVudChuZXdDb2RlQmxvY2ssIG1hcmtkb3duSW5mby5saW5lUHJlZml4KTtcbiAgICB9XG5cbiAgICBjb25zdCB0ZXh0QmVmb3JlQ29kZUJsb2NrID0gY29udGVudC5zbGljZSgwLCBtYXJrZG93bkluZm8ucG9zaXRpb25Jbk5vdGUuc3RhcnQub2Zmc2V0KTtcbiAgICBjb25zdCB0ZXh0QWZ0ZXJDb2RlQmxvY2sgPSBjb250ZW50LnNsaWNlKG1hcmtkb3duSW5mby5wb3NpdGlvbkluTm90ZS5lbmQub2Zmc2V0KTtcblxuICAgIHJldHVybiBgJHthcHBlbmROZXdMaW5lKHRleHRCZWZvcmVDb2RlQmxvY2spfSR7YXBwZW5kTmV3TGluZShuZXdDb2RlQmxvY2spfSR7dGV4dEFmdGVyQ29kZUJsb2NrfWA7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBhcHBlbmROZXdMaW5lKHRleHQ6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiB0ZXh0ID09PSAnJyA/ICcnIDogYCR7dGV4dH1cXG5gO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVNYXJrZG93bkluZm9Gcm9tTWF0Y2goXG4gIHBvdGVudGlhbENvZGVCbG9ja1RleHQ6IHN0cmluZyxcbiAgbWF0Y2g6IFJlZ0V4cE1hdGNoQXJyYXksXG4gIGFwcHJveGltYXRlU2VjdGlvbkluZm86IE1hcmtkb3duU2VjdGlvbkluZm9ybWF0aW9uLFxuICBzb3VyY2VMaW5lczogc3RyaW5nW10sXG4gIHRleHRMaW5lT2Zmc2V0czogTWFwPG51bWJlciwgbnVtYmVyPixcbiAgbGluZXNCZWZvcmVTZWN0aW9uQ291bnQ6IG51bWJlclxuKTogQ29kZUJsb2NrTWFya2Rvd25JbmZvcm1hdGlvbiB7XG4gIGNvbnN0IGxpbmVQcmVmaXggPSBtYXRjaC5ncm91cHM/LlsnTGluZVByZWZpeCddID8/ICcnO1xuICBjb25zdCBjb2RlQmxvY2tTdGFydERlbGltaXRlciA9IG1hdGNoLmdyb3Vwcz8uWydDb2RlQmxvY2tTdGFydERlbGltaXRlciddID8/ICcnO1xuICBjb25zdCBjb2RlQmxvY2tFbmREZWxpbWl0ZXIgPSBtYXRjaC5ncm91cHM/LlsnQ29kZUJsb2NrRW5kRGVsaW1pdGVyJ10gPz8gJyc7XG4gIGNvbnN0IGNvZGVCbG9ja0FyZ3NTdHIgPSBtYXRjaC5ncm91cHM/LlsnQ29kZUJsb2NrQXJncyddID8/ICcnO1xuICBjb25zdCBsYW5ndWFnZSA9IG1hdGNoLmdyb3Vwcz8uWydDb2RlQmxvY2tMYW5ndWFnZSddID8/ICcnO1xuXG4gIGNvbnN0IHByZXZpb3VzVGV4dCA9IHBvdGVudGlhbENvZGVCbG9ja1RleHQuc2xpY2UoMCwgbWF0Y2guaW5kZXgpO1xuICBjb25zdCBwcmV2aW91c1RleHRMaW5lc0NvdW50ID0gcHJldmlvdXNUZXh0LnNwbGl0KCdcXG4nKS5sZW5ndGggLSAxO1xuXG4gIGNvbnN0IHN0YXJ0TGluZSA9IGxpbmVzQmVmb3JlU2VjdGlvbkNvdW50ICsgcHJldmlvdXNUZXh0TGluZXNDb3VudDtcbiAgY29uc3QgZW5kTGluZSA9IHN0YXJ0TGluZSArIHNvdXJjZUxpbmVzLmxlbmd0aCArIDE7XG5cbiAgcmV0dXJuIHtcbiAgICBhcmdzOiBjb2RlQmxvY2tBcmdzU3RyLnNwbGl0KC9cXHMrLykuZmlsdGVyKEJvb2xlYW4pLFxuICAgIGVuZERlbGltaXRlcjogY29kZUJsb2NrRW5kRGVsaW1pdGVyLFxuICAgIGxhbmd1YWdlLFxuICAgIGxpbmVQcmVmaXgsXG4gICAgcG9zaXRpb25Jbk5vdGU6IHtcbiAgICAgIGVuZDoge1xuICAgICAgICBjb2w6ICh0ZXh0TGluZU9mZnNldHMuZ2V0KGVuZExpbmUgKyAxKSA/PyAwKSAtICh0ZXh0TGluZU9mZnNldHMuZ2V0KGVuZExpbmUpID8/IDApIC0gMSxcbiAgICAgICAgbGluZTogZW5kTGluZSxcbiAgICAgICAgb2Zmc2V0OiAodGV4dExpbmVPZmZzZXRzLmdldChlbmRMaW5lICsgMSkgPz8gMCkgLSAxXG4gICAgICB9LFxuICAgICAgc3RhcnQ6IHtcbiAgICAgICAgY29sOiAwLFxuICAgICAgICBsaW5lOiBzdGFydExpbmUsXG4gICAgICAgIG9mZnNldDogdGV4dExpbmVPZmZzZXRzLmdldChzdGFydExpbmUpID8/IDBcbiAgICAgIH1cbiAgICB9LFxuICAgIHJhd0FyZ3NTdHI6IGNvZGVCbG9ja0FyZ3NTdHIsXG4gICAgc2VjdGlvbkluZm86IHtcbiAgICAgIGxpbmVFbmQ6IHByZXZpb3VzVGV4dExpbmVzQ291bnQgKyBzb3VyY2VMaW5lcy5sZW5ndGggKyAxLFxuICAgICAgbGluZVN0YXJ0OiBwcmV2aW91c1RleHRMaW5lc0NvdW50LFxuICAgICAgdGV4dDogYXBwcm94aW1hdGVTZWN0aW9uSW5mby50ZXh0XG4gICAgfSxcbiAgICBzdGFydERlbGltaXRlcjogY29kZUJsb2NrU3RhcnREZWxpbWl0ZXJcbiAgfTtcbn1cblxuZnVuY3Rpb24gZ2V0TGFuZ3VhZ2VGcm9tRWxlbWVudChlbDogSFRNTEVsZW1lbnQpOiBzdHJpbmcge1xuICBjb25zdCBCTE9DS19MQU5HVUFHRV9QUkVGSVggPSAnYmxvY2stbGFuZ3VhZ2UtJztcbiAgcmV0dXJuIEFycmF5LmZyb20oZWwuY2xhc3NMaXN0KS5maW5kKChjbHMpID0+IGNscy5zdGFydHNXaXRoKEJMT0NLX0xBTkdVQUdFX1BSRUZJWCkpPy5zbGljZShCTE9DS19MQU5HVUFHRV9QUkVGSVgubGVuZ3RoKSA/PyAnJztcbn1cblxuZnVuY3Rpb24gaW5zZXJ0VGV4dChjb250ZW50OiBzdHJpbmcsIGluc2VydExpbmVJbmRleDogbnVtYmVyLCB0ZXh0OiBzdHJpbmcsIHNob3VsZFByZXNlcnZlTGluZVByZWZpeD86IGJvb2xlYW4pOiBzdHJpbmcge1xuICBjb25zdCBsaW5lcyA9IGNvbnRlbnQuc3BsaXQoJ1xcbicpO1xuICBjb25zdCBuZXdMaW5lcyA9IGxpbmVzLnNsaWNlKCk7XG4gIGNvbnN0IHRleHRMaW5lcyA9IHRleHQuc3BsaXQoJ1xcbicpO1xuXG4gIGlmIChpbnNlcnRMaW5lSW5kZXggPCAwKSB7XG4gICAgaW5zZXJ0TGluZUluZGV4ID0gMDtcbiAgfVxuICBpZiAoaW5zZXJ0TGluZUluZGV4ID4gbGluZXMubGVuZ3RoKSB7XG4gICAgaW5zZXJ0TGluZUluZGV4ID0gbGluZXMubGVuZ3RoO1xuICB9XG5cbiAgY29uc3QgUFJFRklYX0xJTkVfUkVHX0VYUCA9IC9eIHswLDN9KD86PiB7MSwzfSkqL2c7XG4gIGNvbnN0IG1hdGNoID0gKGxpbmVzW2luc2VydExpbmVJbmRleF0gPz8gJycpLm1hdGNoKFBSRUZJWF9MSU5FX1JFR19FWFApO1xuICBjb25zdCBsaW5lUHJlZml4ID0gbWF0Y2g/LlswXSA/PyAnJztcbiAgbmV3TGluZXMuc3BsaWNlKGluc2VydExpbmVJbmRleCwgMCwgLi4uKHNob3VsZFByZXNlcnZlTGluZVByZWZpeCA/IHRleHRMaW5lcy5tYXAoKGxpbmUpID0+IGluZGVudChsaW5lLCBsaW5lUHJlZml4KSkgOiB0ZXh0TGluZXMpKTtcbiAgcmV0dXJuIG5ld0xpbmVzLmpvaW4oJ1xcbicpO1xufVxuXG5mdW5jdGlvbiBpc1N1aXRhYmxlQ29kZUJsb2NrKFxuICBtYXRjaDogUmVnRXhwTWF0Y2hBcnJheSxcbiAgbGFuZ3VhZ2U6IHN0cmluZyxcbiAgc291cmNlOiBzdHJpbmcsXG4gIGlzSW5DYWxsb3V0OiBib29sZWFuXG4pOiBib29sZWFuIHtcbiAgY29uc3QgY29kZUJsb2NrTGFuZ3VhZ2UgPSBtYXRjaC5ncm91cHM/LlsnQ29kZUJsb2NrTGFuZ3VhZ2UnXSA/PyAnJztcbiAgaWYgKGNvZGVCbG9ja0xhbmd1YWdlICE9PSBsYW5ndWFnZSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGNvbnN0IGxpbmVQcmVmaXggPSBtYXRjaC5ncm91cHM/LlsnTGluZVByZWZpeCddID8/ICcnO1xuXG4gIGlmIChpc0luQ2FsbG91dCAmJiAhbGluZVByZWZpeC5pbmNsdWRlcygnPiAnKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGNvbnN0IGNvZGVCbG9ja0NvbnRlbnQgPSBtYXRjaC5ncm91cHM/LlsnQ29kZUJsb2NrQ29udGVudCddID8/ICcnO1xuICBjb25zdCBjbGVhbkNvZGVCbG9ja0NvbnRlbnQgPSBjb2RlQmxvY2tDb250ZW50LnNwbGl0KCdcXG4nKS5tYXAoKGxpbmUpID0+IGxpbmUuc2xpY2UobGluZVByZWZpeC5sZW5ndGgpKS5qb2luKCdcXG4nKTtcblxuICByZXR1cm4gY2xlYW5Db2RlQmxvY2tDb250ZW50ID09PSBzb3VyY2U7XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7O0FBZUEsU0FBUyxzQkFBc0I7QUFDL0I7QUFBQSxFQUNFO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxPQUNLO0FBQ1AsU0FBUyxvQkFBb0I7QUFDN0I7QUFBQSxFQUNFO0FBQUEsRUFDQTtBQUFBLE9BQ0s7QUE4RVAsZUFBc0IseUJBQXlCLFNBQXVGO0FBQ3BJLFFBQU0sRUFBRSxLQUFLLEtBQUssSUFBSSxPQUFPLElBQUk7QUFFakMsUUFBTSxhQUFhLElBQUksTUFBTSxjQUFjLElBQUksVUFBVTtBQUN6RCxNQUFJLENBQUMsWUFBWTtBQUNmLFVBQU0sSUFBSSxNQUFNLGVBQWUsSUFBSSxVQUFVLGFBQWE7QUFBQSxFQUM1RDtBQUVBLE1BQUk7QUFDSixNQUFJLFFBQVEsYUFBYTtBQUN2QixjQUFVLFFBQVE7QUFBQSxFQUNwQixPQUFPO0FBQ0wsVUFBTSxTQUFTLEtBQUssVUFBVTtBQUM5QixjQUFVLE1BQU0sSUFBSSxNQUFNLEtBQUssVUFBVTtBQUFBLEVBQzNDO0FBRUEsUUFBTSx5QkFBeUIsSUFBSSxlQUFlLEVBQUUsS0FBSztBQUFBLElBQ3ZELFNBQVMsUUFBUSxNQUFNLElBQUksRUFBRSxTQUFTO0FBQUEsSUFDdEMsV0FBVztBQUFBLElBQ1gsTUFBTTtBQUFBLEVBQ1I7QUFFQSxNQUFJLENBQUMsb0JBQW9CLFNBQVMsdUJBQXVCLElBQUksR0FBRztBQUM5RCxXQUFPO0FBQUEsRUFDVDtBQUVB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
@@ -3,7 +3,7 @@ THIS IS A GENERATED/BUNDLED FILE BY ESBUILD
3
3
  if you want to view the source, please visit the github repository of this plugin
4
4
  */
5
5
 
6
- (function initEsm(){if(globalThis.process){return}const browserProcess={browser:true,cwd:__name(()=>"/","cwd"),env:{},platform:"android"};globalThis.process=browserProcess})();
6
+ (function initEsm(){if(globalThis.process){return}const browserProcess={browser:true,cwd(){return"/"},env:{},platform:"android"};globalThis.process=browserProcess})();
7
7
 
8
8
  function getFullContentHtml(view) {
9
9
  const codeMirror = view.editor.cm;
@@ -3,15 +3,13 @@ THIS IS A GENERATED/BUNDLED FILE BY ESBUILD
3
3
  if you want to view the source, please visit the github repository of this plugin
4
4
  */
5
5
 
6
- (function initEsm(){if(globalThis.process){return}const browserProcess={browser:true,cwd:__name(()=>"/","cwd"),env:{},platform:"android"};globalThis.process=browserProcess})();
6
+ (function initEsm(){if(globalThis.process){return}const browserProcess={browser:true,cwd(){return"/"},env:{},platform:"android"};globalThis.process=browserProcess})();
7
7
 
8
- import { MarkdownView } from "obsidian";
9
8
  import {
10
9
  CustomArrayDictImpl,
11
10
  isFrontmatterLinkCache,
12
11
  isReferenceCache,
13
- parentFolderPath,
14
- ViewType
12
+ parentFolderPath
15
13
  } from "obsidian-typings/implementations";
16
14
  import { retryWithTimeout } from "../Async.mjs";
17
15
  import { getNestedPropertyValue } from "../ObjectUtils.mjs";
@@ -19,14 +17,15 @@ import {
19
17
  getFile,
20
18
  getFileOrNull,
21
19
  getFolder,
22
- getPath,
23
- isFile,
24
- isMarkdownFile
20
+ isFile
25
21
  } from "./FileSystem.mjs";
26
22
  import { parseFrontmatter } from "./Frontmatter.mjs";
27
23
  import { isFrontmatterLinkCacheWithOffsets } from "./FrontmatterLinkCacheWithOffsets.mjs";
28
24
  import { sortReferences } from "./Reference.mjs";
29
- import { readSafe } from "./Vault.mjs";
25
+ import {
26
+ readSafe,
27
+ saveNote
28
+ } from "./Vault.mjs";
30
29
  async function ensureMetadataCacheReady(app) {
31
30
  await new Promise((resolve) => {
32
31
  app.metadataCache.onCleanCache(resolve);
@@ -192,17 +191,6 @@ async function tempRegisterFilesAndRunAsync(app, files, fn) {
192
191
  unregister();
193
192
  }
194
193
  }
195
- async function saveNote(app, pathOrFile) {
196
- if (!isMarkdownFile(app, pathOrFile)) {
197
- return;
198
- }
199
- const path = getPath(app, pathOrFile);
200
- for (const leaf of app.workspace.getLeavesOfType(ViewType.Markdown)) {
201
- if (leaf.view instanceof MarkdownView && leaf.view.file?.path === path && leaf.view.dirty) {
202
- await leaf.view.save();
203
- }
204
- }
205
- }
206
194
  export {
207
195
  ensureMetadataCacheReady,
208
196
  getAllLinks,
@@ -215,4 +203,4 @@ export {
215
203
  tempRegisterFilesAndRun,
216
204
  tempRegisterFilesAndRunAsync
217
205
  };
218
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL01ldGFkYXRhQ2FjaGUudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQHBhY2thZ2VEb2N1bWVudGF0aW9uXG4gKlxuICogVGhpcyBtb2R1bGUgcHJvdmlkZXMgdXRpbGl0eSBmdW5jdGlvbnMgZm9yIHdvcmtpbmcgd2l0aCB0aGUgbWV0YWRhdGEgY2FjaGUgaW4gT2JzaWRpYW4uXG4gKi9cblxuaW1wb3J0IHR5cGUge1xuICBBcHAsXG4gIENhY2hlZE1ldGFkYXRhLFxuICBSZWZlcmVuY2UsXG4gIFRBYnN0cmFjdEZpbGVcbn0gZnJvbSAnb2JzaWRpYW4nO1xuaW1wb3J0IHR5cGUgeyBDdXN0b21BcnJheURpY3QgfSBmcm9tICdvYnNpZGlhbi10eXBpbmdzJztcblxuaW1wb3J0IHsgTWFya2Rvd25WaWV3IH0gZnJvbSAnb2JzaWRpYW4nO1xuaW1wb3J0IHtcbiAgQ3VzdG9tQXJyYXlEaWN0SW1wbCxcbiAgaXNGcm9udG1hdHRlckxpbmtDYWNoZSxcbiAgaXNSZWZlcmVuY2VDYWNoZSxcbiAgcGFyZW50Rm9sZGVyUGF0aCxcbiAgVmlld1R5cGVcbn0gZnJvbSAnb2JzaWRpYW4tdHlwaW5ncy9pbXBsZW1lbnRhdGlvbnMnO1xuXG5pbXBvcnQgdHlwZSB7IFJldHJ5T3B0aW9ucyB9IGZyb20gJy4uL0FzeW5jLnRzJztcbmltcG9ydCB0eXBlIHsgUGF0aE9yRmlsZSB9IGZyb20gJy4vRmlsZVN5c3RlbS50cyc7XG5pbXBvcnQgdHlwZSB7IENvbWJpbmVkRnJvbnRtYXR0ZXIgfSBmcm9tICcuL0Zyb250bWF0dGVyLnRzJztcblxuaW1wb3J0IHsgcmV0cnlXaXRoVGltZW91dCB9IGZyb20gJy4uL0FzeW5jLnRzJztcbmltcG9ydCB7IGdldE5lc3RlZFByb3BlcnR5VmFsdWUgfSBmcm9tICcuLi9PYmplY3RVdGlscy50cyc7XG5pbXBvcnQge1xuICBnZXRGaWxlLFxuICBnZXRGaWxlT3JOdWxsLFxuICBnZXRGb2xkZXIsXG4gIGdldFBhdGgsXG4gIGlzRmlsZSxcbiAgaXNNYXJrZG93bkZpbGVcbn0gZnJvbSAnLi9GaWxlU3lzdGVtLnRzJztcbmltcG9ydCB7IHBhcnNlRnJvbnRtYXR0ZXIgfSBmcm9tICcuL0Zyb250bWF0dGVyLnRzJztcbmltcG9ydCB7IGlzRnJvbnRtYXR0ZXJMaW5rQ2FjaGVXaXRoT2Zmc2V0cyB9IGZyb20gJy4vRnJvbnRtYXR0ZXJMaW5rQ2FjaGVXaXRoT2Zmc2V0cy50cyc7XG5pbXBvcnQgeyBzb3J0UmVmZXJlbmNlcyB9IGZyb20gJy4vUmVmZXJlbmNlLnRzJztcbmltcG9ydCB7IHJlYWRTYWZlIH0gZnJvbSAnLi9WYXVsdC50cyc7XG5cbi8qKlxuICogV3JhcHBlciBmb3IgdGhlIGdldEJhY2tsaW5rc0ZvckZpbGUgbWV0aG9kIHRoYXQgcHJvdmlkZXMgYSBzYWZlIG92ZXJsb2FkLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEdldEJhY2tsaW5rc0ZvckZpbGVTYWZlV3JhcHBlciB7XG4gIC8qKlxuICAgKiBSZXRyaWV2ZXMgdGhlIGJhY2tsaW5rcyBmb3IgYSBmaWxlIHNhZmVseS5cbiAgICpcbiAgICogQHBhcmFtIHBhdGhPckZpbGUgLSBUaGUgcGF0aCBvciBmaWxlIG9iamVjdC5cbiAgICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB0byBhbiBhcnJheSBkaWN0aW9uYXJ5IG9mIGJhY2tsaW5rcy5cbiAgICovXG4gIHNhZmUocGF0aE9yRmlsZTogUGF0aE9yRmlsZSk6IFByb21pc2U8Q3VzdG9tQXJyYXlEaWN0PFJlZmVyZW5jZT4+O1xufVxuXG4vKipcbiAqIEVuc3VyZXMgdGhhdCB0aGUgbWV0YWRhdGEgY2FjaGUgaXMgcmVhZHkgZm9yIGFsbCBmaWxlcy5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIE9ic2lkaWFuIGFwcCBpbnN0YW5jZS5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgbWV0YWRhdGEgY2FjaGUgaXMgcmVhZHkuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBlbnN1cmVNZXRhZGF0YUNhY2hlUmVhZHkoYXBwOiBBcHApOiBQcm9taXNlPHZvaWQ+IHtcbiAgYXdhaXQgbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcbiAgICBhcHAubWV0YWRhdGFDYWNoZS5vbkNsZWFuQ2FjaGUocmVzb2x2ZSk7XG4gIH0pO1xufVxuXG4vKipcbiAqIFJldHJpZXZlcyBhbGwgbGlua3MgZnJvbSB0aGUgcHJvdmlkZWQgY2FjaGUuXG4gKlxuICogQHBhcmFtIGNhY2hlIC0gVGhlIGNhY2hlZCBtZXRhZGF0YS5cbiAqIEByZXR1cm5zIEFuIGFycmF5IG9mIHJlZmVyZW5jZSBjYWNoZXMgcmVwcmVzZW50aW5nIHRoZSBsaW5rcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEFsbExpbmtzKGNhY2hlOiBDYWNoZWRNZXRhZGF0YSk6IFJlZmVyZW5jZVtdIHtcbiAgbGV0IGxpbmtzOiBSZWZlcmVuY2VbXSA9IFtdO1xuXG4gIGlmIChjYWNoZS5saW5rcykge1xuICAgIGxpbmtzLnB1c2goLi4uY2FjaGUubGlua3MpO1xuICB9XG5cbiAgaWYgKGNhY2hlLmVtYmVkcykge1xuICAgIGxpbmtzLnB1c2goLi4uY2FjaGUuZW1iZWRzKTtcbiAgfVxuXG4gIGlmIChjYWNoZS5mcm9udG1hdHRlckxpbmtzKSB7XG4gICAgbGlua3MucHVzaCguLi5jYWNoZS5mcm9udG1hdHRlckxpbmtzKTtcbiAgfVxuXG4gIHNvcnRSZWZlcmVuY2VzKGxpbmtzKTtcblxuICAvLyBCVUc6IGh0dHBzOi8vZm9ydW0ub2JzaWRpYW4ubWQvdC9idWctZHVwbGljYXRlZC1saW5rcy1pbi1tZXRhZGF0YWNhY2hlLWluc2lkZS1mb290bm90ZXMvODU1NTFcbiAgbGlua3MgPSBsaW5rcy5maWx0ZXIoKGxpbmssIGluZGV4KSA9PiB7XG4gICAgaWYgKGluZGV4ID09PSAwKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBjb25zdCBwcmV2aW91c0xpbmsgPSBsaW5rc1tpbmRleCAtIDFdO1xuICAgIGlmICghcHJldmlvdXNMaW5rKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAoaXNSZWZlcmVuY2VDYWNoZShsaW5rKSAmJiBpc1JlZmVyZW5jZUNhY2hlKHByZXZpb3VzTGluaykpIHtcbiAgICAgIHJldHVybiBsaW5rLnBvc2l0aW9uLnN0YXJ0Lm9mZnNldCAhPT0gcHJldmlvdXNMaW5rLnBvc2l0aW9uLnN0YXJ0Lm9mZnNldDtcbiAgICB9XG5cbiAgICBpZiAoaXNGcm9udG1hdHRlckxpbmtDYWNoZShsaW5rKSAmJiBpc0Zyb250bWF0dGVyTGlua0NhY2hlKHByZXZpb3VzTGluaykpIHtcbiAgICAgIGNvbnN0IGxpbmtTdGFydE9mZnNldCA9IGlzRnJvbnRtYXR0ZXJMaW5rQ2FjaGVXaXRoT2Zmc2V0cyhsaW5rKSA/IGxpbmsuc3RhcnRPZmZzZXQgOiAwO1xuICAgICAgY29uc3QgcHJldmlvdXNMaW5rU3RhcnRPZmZzZXQgPSBpc0Zyb250bWF0dGVyTGlua0NhY2hlV2l0aE9mZnNldHMocHJldmlvdXNMaW5rKSA/IHByZXZpb3VzTGluay5zdGFydE9mZnNldCA6IDA7XG4gICAgICByZXR1cm4gbGluay5rZXkgIT09IHByZXZpb3VzTGluay5rZXkgfHwgaXNGcm9udG1hdHRlckxpbmtDYWNoZVdpdGhPZmZzZXRzKGxpbmspICE9PSBpc0Zyb250bWF0dGVyTGlua0NhY2hlV2l0aE9mZnNldHMocHJldmlvdXNMaW5rKVxuICAgICAgICB8fCBsaW5rU3RhcnRPZmZzZXQgIT09IHByZXZpb3VzTGlua1N0YXJ0T2Zmc2V0O1xuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xuICB9KTtcblxuICByZXR1cm4gbGlua3M7XG59XG5cbi8qKlxuICogUmV0cmlldmVzIHRoZSBiYWNrbGlua3MgZm9yIGEgZmlsZSBvciBwYXRoLlxuICogTk9URTogVGhlIGZpbGUgbWF5IGJlIG5vbi1leGlzdGVudC5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIE9ic2lkaWFuIGFwcGxpY2F0aW9uIGluc3RhbmNlLlxuICogQHBhcmFtIHBhdGhPckZpbGUgLSBUaGUgcGF0aCBvciBmaWxlIG9iamVjdC5cbiAqIEByZXR1cm5zIFRoZSBiYWNrbGlua3MgZm9yIHRoZSBmaWxlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0QmFja2xpbmtzRm9yRmlsZU9yUGF0aChhcHA6IEFwcCwgcGF0aE9yRmlsZTogUGF0aE9yRmlsZSk6IEN1c3RvbUFycmF5RGljdDxSZWZlcmVuY2U+IHtcbiAgY29uc3QgZmlsZSA9IGdldEZpbGUoYXBwLCBwYXRoT3JGaWxlLCB0cnVlKTtcbiAgcmV0dXJuIHRlbXBSZWdpc3RlckZpbGVzQW5kUnVuKGFwcCwgW2ZpbGVdLCAoKSA9PiBhcHAubWV0YWRhdGFDYWNoZS5nZXRCYWNrbGlua3NGb3JGaWxlKGZpbGUpKTtcbn1cblxuLyoqXG4gKiBSZXRyaWV2ZXMgdGhlIGJhY2tsaW5rcyBmb3IgYSBmaWxlIHNhZmVseS5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIE9ic2lkaWFuIGFwcGxpY2F0aW9uIGluc3RhbmNlLlxuICogQHBhcmFtIHBhdGhPckZpbGUgLSBUaGUgcGF0aCBvciBmaWxlIG9iamVjdC5cbiAqIEBwYXJhbSByZXRyeU9wdGlvbnMgLSBPcHRpb25hbCByZXRyeSBvcHRpb25zLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB0byBhbiBhcnJheSBkaWN0aW9uYXJ5IG9mIGJhY2tsaW5rcy5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldEJhY2tsaW5rc0ZvckZpbGVTYWZlKGFwcDogQXBwLCBwYXRoT3JGaWxlOiBQYXRoT3JGaWxlLCByZXRyeU9wdGlvbnM6IFJldHJ5T3B0aW9ucyA9IHt9KTogUHJvbWlzZTxDdXN0b21BcnJheURpY3Q8UmVmZXJlbmNlPj4ge1xuICBjb25zdCBzYWZlT3ZlcmxvYWQgPSAoYXBwLm1ldGFkYXRhQ2FjaGUuZ2V0QmFja2xpbmtzRm9yRmlsZSBhcyBQYXJ0aWFsPEdldEJhY2tsaW5rc0ZvckZpbGVTYWZlV3JhcHBlcj4pLnNhZmU7XG4gIGlmIChzYWZlT3ZlcmxvYWQpIHtcbiAgICByZXR1cm4gc2FmZU92ZXJsb2FkKHBhdGhPckZpbGUpO1xuICB9XG4gIGxldCBiYWNrbGlua3M6IEN1c3RvbUFycmF5RGljdDxSZWZlcmVuY2U+ID0gbmV3IEN1c3RvbUFycmF5RGljdEltcGw8UmVmZXJlbmNlPigpO1xuICBhd2FpdCByZXRyeVdpdGhUaW1lb3V0KGFzeW5jIChhYm9ydFNpZ25hbCkgPT4ge1xuICAgIGFib3J0U2lnbmFsLnRocm93SWZBYm9ydGVkKCk7XG4gICAgY29uc3QgZmlsZSA9IGdldEZpbGUoYXBwLCBwYXRoT3JGaWxlKTtcbiAgICBhd2FpdCBlbnN1cmVNZXRhZGF0YUNhY2hlUmVhZHkoYXBwKTtcbiAgICBhYm9ydFNpZ25hbC50aHJvd0lmQWJvcnRlZCgpO1xuICAgIGJhY2tsaW5rcyA9IGdldEJhY2tsaW5rc0ZvckZpbGVPclBhdGgoYXBwLCBmaWxlKTtcbiAgICBmb3IgKGNvbnN0IG5vdGVQYXRoIG9mIGJhY2tsaW5rcy5rZXlzKCkpIHtcbiAgICAgIGFib3J0U2lnbmFsLnRocm93SWZBYm9ydGVkKCk7XG4gICAgICBjb25zdCBub3RlID0gZ2V0RmlsZU9yTnVsbChhcHAsIG5vdGVQYXRoKTtcbiAgICAgIGlmICghbm90ZSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIGF3YWl0IHNhdmVOb3RlKGFwcCwgbm90ZSk7XG4gICAgICBhYm9ydFNpZ25hbC50aHJvd0lmQWJvcnRlZCgpO1xuXG4gICAgICBjb25zdCBjb250ZW50ID0gYXdhaXQgcmVhZFNhZmUoYXBwLCBub3RlKTtcbiAgICAgIGFib3J0U2lnbmFsLnRocm93SWZBYm9ydGVkKCk7XG4gICAgICBpZiAoIWNvbnRlbnQpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgY29uc3QgZnJvbnRtYXR0ZXIgPSBwYXJzZUZyb250bWF0dGVyKGNvbnRlbnQpO1xuICAgICAgY29uc3QgbGlua3MgPSBiYWNrbGlua3MuZ2V0KG5vdGVQYXRoKTtcbiAgICAgIGlmICghbGlua3MpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuXG4gICAgICBmb3IgKGNvbnN0IGxpbmsgb2YgbGlua3MpIHtcbiAgICAgICAgbGV0IGFjdHVhbExpbms6IHN0cmluZztcbiAgICAgICAgaWYgKGlzUmVmZXJlbmNlQ2FjaGUobGluaykpIHtcbiAgICAgICAgICBhY3R1YWxMaW5rID0gY29udGVudC5zbGljZShsaW5rLnBvc2l0aW9uLnN0YXJ0Lm9mZnNldCwgbGluay5wb3NpdGlvbi5lbmQub2Zmc2V0KTtcbiAgICAgICAgfSBlbHNlIGlmIChpc0Zyb250bWF0dGVyTGlua0NhY2hlKGxpbmspKSB7XG4gICAgICAgICAgY29uc3QgbGlua1ZhbHVlID0gZ2V0TmVzdGVkUHJvcGVydHlWYWx1ZShmcm9udG1hdHRlciwgbGluay5rZXkpO1xuICAgICAgICAgIGlmICh0eXBlb2YgbGlua1ZhbHVlICE9PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGxldCBzdGFydE9mZnNldCA9IDA7XG4gICAgICAgICAgbGV0IGVuZE9mZnNldCA9IGxpbmtWYWx1ZS5sZW5ndGg7XG5cbiAgICAgICAgICBpZiAoaXNGcm9udG1hdHRlckxpbmtDYWNoZVdpdGhPZmZzZXRzKGxpbmspKSB7XG4gICAgICAgICAgICBzdGFydE9mZnNldCA9IGxpbmsuc3RhcnRPZmZzZXQ7XG4gICAgICAgICAgICBlbmRPZmZzZXQgPSBsaW5rLmVuZE9mZnNldDtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBhY3R1YWxMaW5rID0gbGlua1ZhbHVlLnNsaWNlKHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChhY3R1YWxMaW5rICE9PSBsaW5rLm9yaWdpbmFsKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWU7XG4gIH0sIHJldHJ5T3B0aW9ucyk7XG5cbiAgcmV0dXJuIGJhY2tsaW5rcztcbn1cblxuLyoqXG4gKiBSZXRyaWV2ZXMgdGhlIGNhY2hlZCBtZXRhZGF0YSBmb3IgYSBnaXZlbiBmaWxlIG9yIHBhdGguXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBPYnNpZGlhbiBhcHAgaW5zdGFuY2UuXG4gKiBAcGFyYW0gZmlsZU9yUGF0aCAtIFRoZSBmaWxlIG9yIHBhdGggdG8gcmV0cmlldmUgdGhlIG1ldGFkYXRhIGZvci5cbiAqIEByZXR1cm5zIFRoZSBjYWNoZWQgbWV0YWRhdGEgZm9yIHRoZSBmaWxlLCBvciBudWxsIGlmIGl0IGRvZXNuJ3QgZXhpc3QuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRDYWNoZVNhZmUoYXBwOiBBcHAsIGZpbGVPclBhdGg6IFBhdGhPckZpbGUpOiBQcm9taXNlPENhY2hlZE1ldGFkYXRhIHwgbnVsbD4ge1xuICBjb25zdCBmaWxlID0gZ2V0RmlsZU9yTnVsbChhcHAsIGZpbGVPclBhdGgpO1xuICBpZiAoIWZpbGUgfHwgZmlsZS5kZWxldGVkKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBhd2FpdCBzYXZlTm90ZShhcHAsIGZpbGUpO1xuXG4gIGNvbnN0IGZpbGVDYWNoZUVudHJ5ID0gYXBwLm1ldGFkYXRhQ2FjaGUuZmlsZUNhY2hlW2ZpbGUucGF0aF07XG4gIGNvbnN0IGlzVXBUb0RhdGUgPSBmaWxlQ2FjaGVFbnRyeVxuICAgICYmIGZpbGVDYWNoZUVudHJ5Lm10aW1lID09PSBmaWxlLnN0YXQubXRpbWVcbiAgICAmJiBmaWxlQ2FjaGVFbnRyeS5zaXplID09PSBmaWxlLnN0YXQuc2l6ZVxuICAgICYmIGFwcC5tZXRhZGF0YUNhY2hlLm1ldGFkYXRhQ2FjaGVbZmlsZUNhY2hlRW50cnkuaGFzaF07XG4gIGlmICghaXNVcFRvRGF0ZSkge1xuICAgIGF3YWl0IGFwcC5tZXRhZGF0YUNhY2hlLmNvbXB1dGVGaWxlTWV0YWRhdGFBc3luYyhmaWxlKTtcbiAgICBhd2FpdCBlbnN1cmVNZXRhZGF0YUNhY2hlUmVhZHkoYXBwKTtcbiAgfVxuICByZXR1cm4gYXBwLm1ldGFkYXRhQ2FjaGUuZ2V0RmlsZUNhY2hlKGZpbGUpO1xufVxuXG4vKipcbiAqIFJldHJpZXZlcyB0aGUgZnJvbnQgbWF0dGVyIGZyb20gdGhlIG1ldGFkYXRhIGNhY2hlIHNhZmVseS5cbiAqXG4gKiBAdHlwZVBhcmFtIEN1c3RvbUZyb250bWF0dGVyIC0gVGhlIHR5cGUgb2YgY3VzdG9tIGZyb250IG1hdHRlci5cbiAqIEBwYXJhbSBhcHAgLSBUaGUgT2JzaWRpYW4gYXBwIGluc3RhbmNlLlxuICogQHBhcmFtIHBhdGhPckZpbGUgLSBUaGUgcGF0aCBvciBmaWxlIHRvIHJldHJpZXZlIHRoZSBmcm9udCBtYXR0ZXIgZnJvbS5cbiAqIEByZXR1cm5zIFRoZSBjb21iaW5lZCBmcm9udCBtYXR0ZXIuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRGcm9udG1hdHRlclNhZmU8Q3VzdG9tRnJvbnRtYXR0ZXIgPSB1bmtub3duPihhcHA6IEFwcCwgcGF0aE9yRmlsZTogUGF0aE9yRmlsZSk6IFByb21pc2U8Q29tYmluZWRGcm9udG1hdHRlcjxDdXN0b21Gcm9udG1hdHRlcj4+IHtcbiAgY29uc3QgY2FjaGUgPSBhd2FpdCBnZXRDYWNoZVNhZmUoYXBwLCBwYXRoT3JGaWxlKTtcbiAgcmV0dXJuIChjYWNoZT8uZnJvbnRtYXR0ZXIgPz8ge30pIGFzIENvbWJpbmVkRnJvbnRtYXR0ZXI8Q3VzdG9tRnJvbnRtYXR0ZXI+O1xufVxuXG4vKipcbiAqIFBhcnNlcyB0aGUgbWV0YWRhdGEgZm9yIGEgZ2l2ZW4gc3RyaW5nLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgT2JzaWRpYW4gYXBwIGluc3RhbmNlLlxuICogQHBhcmFtIHN0ciAtIFRoZSBzdHJpbmcgdG8gcGFyc2UgdGhlIG1ldGFkYXRhIGZvci5cbiAqIEByZXR1cm5zIFRoZSBwYXJzZWQgbWV0YWRhdGEuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBwYXJzZU1ldGFkYXRhKGFwcDogQXBwLCBzdHI6IHN0cmluZyk6IFByb21pc2U8Q2FjaGVkTWV0YWRhdGE+IHtcbiAgY29uc3QgZW5jb2RlciA9IG5ldyBUZXh0RW5jb2RlcigpO1xuICBjb25zdCBidWZmZXIgPSBlbmNvZGVyLmVuY29kZShzdHIpLmJ1ZmZlciBhcyBBcnJheUJ1ZmZlcjtcbiAgcmV0dXJuIGF3YWl0IGFwcC5tZXRhZGF0YUNhY2hlLmNvbXB1dGVNZXRhZGF0YUFzeW5jKGJ1ZmZlcikgPz8ge307XG59XG5cbi8qKlxuICogUmVnaXN0ZXJzIGZpbGVzIGluIHRoZSBPYnNpZGlhbiBhcHAuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBPYnNpZGlhbiBhcHAgaW5zdGFuY2UuXG4gKiBAcGFyYW0gZmlsZXMgLSBUaGUgZmlsZXMgdG8gcmVnaXN0ZXIuXG4gKiBAcmV0dXJucyBBIGZ1bmN0aW9uIHRoYXQgdW5yZWdpc3RlcnMgdGhlIGZpbGVzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVnaXN0ZXJGaWxlcyhhcHA6IEFwcCwgZmlsZXM6IFRBYnN0cmFjdEZpbGVbXSk6ICgpID0+IHZvaWQge1xuICBjb25zdCBkZWxldGVkUGF0aHMgPSBuZXcgU2V0PHN0cmluZz4oKTtcblxuICBmb3IgKGNvbnN0IGZpbGUgb2YgZmlsZXMpIHtcbiAgICBpZiAoIWZpbGUuZGVsZXRlZCkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgbGV0IGRlbGV0ZWRGaWxlOiBUQWJzdHJhY3RGaWxlID0gZmlsZTtcblxuICAgIHdoaWxlIChkZWxldGVkRmlsZS5kZWxldGVkKSB7XG4gICAgICBkZWxldGVkUGF0aHMuYWRkKGRlbGV0ZWRGaWxlLnBhdGgpO1xuICAgICAgYXBwLnZhdWx0LmZpbGVNYXBbZGVsZXRlZEZpbGUucGF0aF0gPSBkZWxldGVkRmlsZTtcbiAgICAgIGRlbGV0ZWRGaWxlID0gZGVsZXRlZEZpbGUucGFyZW50ID8/IGdldEZvbGRlcihhcHAsIHBhcmVudEZvbGRlclBhdGgoZGVsZXRlZEZpbGUucGF0aCksIHRydWUpO1xuICAgIH1cblxuICAgIGlmIChpc0ZpbGUoZmlsZSkpIHtcbiAgICAgIGFwcC5tZXRhZGF0YUNhY2hlLnVuaXF1ZUZpbGVMb29rdXAuYWRkKGZpbGUubmFtZS50b0xvd2VyQ2FzZSgpLCBmaWxlKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gKCkgPT4ge1xuICAgIGZvciAoY29uc3QgcGF0aCBvZiBkZWxldGVkUGF0aHMpIHtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZHluYW1pYy1kZWxldGVcbiAgICAgIGRlbGV0ZSBhcHAudmF1bHQuZmlsZU1hcFtwYXRoXTtcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IGZpbGUgb2YgZmlsZXMpIHtcbiAgICAgIGlmIChmaWxlLmRlbGV0ZWQgJiYgaXNGaWxlKGZpbGUpKSB7XG4gICAgICAgIGFwcC5tZXRhZGF0YUNhY2hlLnVuaXF1ZUZpbGVMb29rdXAucmVtb3ZlKGZpbGUubmFtZS50b0xvd2VyQ2FzZSgpLCBmaWxlKTtcbiAgICAgIH1cbiAgICB9XG4gIH07XG59XG5cbi8qKlxuICogVGVtcG9yYXJpbHkgcmVnaXN0ZXJzIGZpbGVzIGFuZCBydW5zIGEgZnVuY3Rpb24uXG4gKlxuICogQHR5cGVQYXJhbSBUIC0gVGhlIHR5cGUgb2YgdGhlIHJlc3VsdCBvZiB0aGUgZnVuY3Rpb24uXG4gKiBAcGFyYW0gYXBwIC0gVGhlIE9ic2lkaWFuIGFwcCBpbnN0YW5jZS5cbiAqIEBwYXJhbSBmaWxlcyAtIFRoZSBmaWxlcyB0byB0ZW1wb3JhcmlseSByZWdpc3Rlci5cbiAqIEBwYXJhbSBmbiAtIFRoZSBmdW5jdGlvbiB0byBydW4uXG4gKiBAcmV0dXJucyBUaGUgcmVzdWx0IG9mIHRoZSBmdW5jdGlvbi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRlbXBSZWdpc3RlckZpbGVzQW5kUnVuPFQ+KGFwcDogQXBwLCBmaWxlczogVEFic3RyYWN0RmlsZVtdLCBmbjogKCkgPT4gVCk6IFQge1xuICBjb25zdCB1bnJlZ2lzdGVyID0gcmVnaXN0ZXJGaWxlcyhhcHAsIGZpbGVzKTtcblxuICB0cnkge1xuICAgIHJldHVybiBmbigpO1xuICB9IGZpbmFsbHkge1xuICAgIHVucmVnaXN0ZXIoKTtcbiAgfVxufVxuXG4vKipcbiAqIFRlbXBvcmFyaWx5IHJlZ2lzdGVycyBmaWxlcyBhbmQgcnVucyBhbiBhc3luYyBmdW5jdGlvbi5cbiAqXG4gKiBAdHlwZVBhcmFtIFQgLSBUaGUgdHlwZSBvZiB0aGUgcmVzdWx0IG9mIHRoZSBmdW5jdGlvbi5cbiAqIEBwYXJhbSBhcHAgLSBUaGUgT2JzaWRpYW4gYXBwIGluc3RhbmNlLlxuICogQHBhcmFtIGZpbGVzIC0gVGhlIGZpbGVzIHRvIHRlbXBvcmFyaWx5IHJlZ2lzdGVyLlxuICogQHBhcmFtIGZuIC0gVGhlIGZ1bmN0aW9uIHRvIHJ1bi5cbiAqIEByZXR1cm5zIFRoZSByZXN1bHQgb2YgdGhlIGZ1bmN0aW9uLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gdGVtcFJlZ2lzdGVyRmlsZXNBbmRSdW5Bc3luYzxUPihhcHA6IEFwcCwgZmlsZXM6IFRBYnN0cmFjdEZpbGVbXSwgZm46ICgpID0+IFByb21pc2U8VD4pOiBQcm9taXNlPFQ+IHtcbiAgY29uc3QgdW5yZWdpc3RlciA9IHJlZ2lzdGVyRmlsZXMoYXBwLCBmaWxlcyk7XG5cbiAgdHJ5IHtcbiAgICByZXR1cm4gYXdhaXQgZm4oKTtcbiAgfSBmaW5hbGx5IHtcbiAgICB1bnJlZ2lzdGVyKCk7XG4gIH1cbn1cblxuLyoqXG4gKiBTYXZlcyB0aGUgc3BlY2lmaWVkIG5vdGUgaW4gdGhlIE9ic2lkaWFuIGFwcC5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIE9ic2lkaWFuIGFwcCBpbnN0YW5jZS5cbiAqIEBwYXJhbSBwYXRoT3JGaWxlIC0gVGhlIG5vdGUgdG8gYmUgc2F2ZWQuXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIG5vdGUgaXMgc2F2ZWQuXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIHNhdmVOb3RlKGFwcDogQXBwLCBwYXRoT3JGaWxlOiBQYXRoT3JGaWxlKTogUHJvbWlzZTx2b2lkPiB7XG4gIGlmICghaXNNYXJrZG93bkZpbGUoYXBwLCBwYXRoT3JGaWxlKSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHBhdGggPSBnZXRQYXRoKGFwcCwgcGF0aE9yRmlsZSk7XG5cbiAgZm9yIChjb25zdCBsZWFmIG9mIGFwcC53b3Jrc3BhY2UuZ2V0TGVhdmVzT2ZUeXBlKFZpZXdUeXBlLk1hcmtkb3duKSkge1xuICAgIGlmIChsZWFmLnZpZXcgaW5zdGFuY2VvZiBNYXJrZG93blZpZXcgJiYgbGVhZi52aWV3LmZpbGU/LnBhdGggPT09IHBhdGggJiYgbGVhZi52aWV3LmRpcnR5KSB7XG4gICAgICBhd2FpdCBsZWFmLnZpZXcuc2F2ZSgpO1xuICAgIH1cbiAgfVxufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7OztBQWNBLFNBQVMsb0JBQW9CO0FBQzdCO0FBQUEsRUFDRTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxPQUNLO0FBTVAsU0FBUyx3QkFBd0I7QUFDakMsU0FBUyw4QkFBOEI7QUFDdkM7QUFBQSxFQUNFO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxPQUNLO0FBQ1AsU0FBUyx3QkFBd0I7QUFDakMsU0FBUyx5Q0FBeUM7QUFDbEQsU0FBUyxzQkFBc0I7QUFDL0IsU0FBUyxnQkFBZ0I7QUFxQnpCLGVBQXNCLHlCQUF5QixLQUF5QjtBQUN0RSxR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
206
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL01ldGFkYXRhQ2FjaGUudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQHBhY2thZ2VEb2N1bWVudGF0aW9uXG4gKlxuICogVGhpcyBtb2R1bGUgcHJvdmlkZXMgdXRpbGl0eSBmdW5jdGlvbnMgZm9yIHdvcmtpbmcgd2l0aCB0aGUgbWV0YWRhdGEgY2FjaGUgaW4gT2JzaWRpYW4uXG4gKi9cblxuaW1wb3J0IHR5cGUge1xuICBBcHAsXG4gIENhY2hlZE1ldGFkYXRhLFxuICBSZWZlcmVuY2UsXG4gIFRBYnN0cmFjdEZpbGVcbn0gZnJvbSAnb2JzaWRpYW4nO1xuaW1wb3J0IHR5cGUgeyBDdXN0b21BcnJheURpY3QgfSBmcm9tICdvYnNpZGlhbi10eXBpbmdzJztcblxuaW1wb3J0IHtcbiAgQ3VzdG9tQXJyYXlEaWN0SW1wbCxcbiAgaXNGcm9udG1hdHRlckxpbmtDYWNoZSxcbiAgaXNSZWZlcmVuY2VDYWNoZSxcbiAgcGFyZW50Rm9sZGVyUGF0aFxufSBmcm9tICdvYnNpZGlhbi10eXBpbmdzL2ltcGxlbWVudGF0aW9ucyc7XG5cbmltcG9ydCB0eXBlIHsgUmV0cnlPcHRpb25zIH0gZnJvbSAnLi4vQXN5bmMudHMnO1xuaW1wb3J0IHR5cGUgeyBQYXRoT3JGaWxlIH0gZnJvbSAnLi9GaWxlU3lzdGVtLnRzJztcbmltcG9ydCB0eXBlIHsgQ29tYmluZWRGcm9udG1hdHRlciB9IGZyb20gJy4vRnJvbnRtYXR0ZXIudHMnO1xuXG5pbXBvcnQgeyByZXRyeVdpdGhUaW1lb3V0IH0gZnJvbSAnLi4vQXN5bmMudHMnO1xuaW1wb3J0IHsgZ2V0TmVzdGVkUHJvcGVydHlWYWx1ZSB9IGZyb20gJy4uL09iamVjdFV0aWxzLnRzJztcbmltcG9ydCB7XG4gIGdldEZpbGUsXG4gIGdldEZpbGVPck51bGwsXG4gIGdldEZvbGRlcixcbiAgaXNGaWxlXG59IGZyb20gJy4vRmlsZVN5c3RlbS50cyc7XG5pbXBvcnQgeyBwYXJzZUZyb250bWF0dGVyIH0gZnJvbSAnLi9Gcm9udG1hdHRlci50cyc7XG5pbXBvcnQgeyBpc0Zyb250bWF0dGVyTGlua0NhY2hlV2l0aE9mZnNldHMgfSBmcm9tICcuL0Zyb250bWF0dGVyTGlua0NhY2hlV2l0aE9mZnNldHMudHMnO1xuaW1wb3J0IHsgc29ydFJlZmVyZW5jZXMgfSBmcm9tICcuL1JlZmVyZW5jZS50cyc7XG5pbXBvcnQge1xuICByZWFkU2FmZSxcbiAgc2F2ZU5vdGVcbn0gZnJvbSAnLi9WYXVsdC50cyc7XG5cbi8qKlxuICogV3JhcHBlciBmb3IgdGhlIGdldEJhY2tsaW5rc0ZvckZpbGUgbWV0aG9kIHRoYXQgcHJvdmlkZXMgYSBzYWZlIG92ZXJsb2FkLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEdldEJhY2tsaW5rc0ZvckZpbGVTYWZlV3JhcHBlciB7XG4gIC8qKlxuICAgKiBSZXRyaWV2ZXMgdGhlIGJhY2tsaW5rcyBmb3IgYSBmaWxlIHNhZmVseS5cbiAgICpcbiAgICogQHBhcmFtIHBhdGhPckZpbGUgLSBUaGUgcGF0aCBvciBmaWxlIG9iamVjdC5cbiAgICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB0byBhbiBhcnJheSBkaWN0aW9uYXJ5IG9mIGJhY2tsaW5rcy5cbiAgICovXG4gIHNhZmUocGF0aE9yRmlsZTogUGF0aE9yRmlsZSk6IFByb21pc2U8Q3VzdG9tQXJyYXlEaWN0PFJlZmVyZW5jZT4+O1xufVxuXG4vKipcbiAqIEVuc3VyZXMgdGhhdCB0aGUgbWV0YWRhdGEgY2FjaGUgaXMgcmVhZHkgZm9yIGFsbCBmaWxlcy5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIE9ic2lkaWFuIGFwcCBpbnN0YW5jZS5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgbWV0YWRhdGEgY2FjaGUgaXMgcmVhZHkuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBlbnN1cmVNZXRhZGF0YUNhY2hlUmVhZHkoYXBwOiBBcHApOiBQcm9taXNlPHZvaWQ+IHtcbiAgYXdhaXQgbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcbiAgICBhcHAubWV0YWRhdGFDYWNoZS5vbkNsZWFuQ2FjaGUocmVzb2x2ZSk7XG4gIH0pO1xufVxuXG4vKipcbiAqIFJldHJpZXZlcyBhbGwgbGlua3MgZnJvbSB0aGUgcHJvdmlkZWQgY2FjaGUuXG4gKlxuICogQHBhcmFtIGNhY2hlIC0gVGhlIGNhY2hlZCBtZXRhZGF0YS5cbiAqIEByZXR1cm5zIEFuIGFycmF5IG9mIHJlZmVyZW5jZSBjYWNoZXMgcmVwcmVzZW50aW5nIHRoZSBsaW5rcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEFsbExpbmtzKGNhY2hlOiBDYWNoZWRNZXRhZGF0YSk6IFJlZmVyZW5jZVtdIHtcbiAgbGV0IGxpbmtzOiBSZWZlcmVuY2VbXSA9IFtdO1xuXG4gIGlmIChjYWNoZS5saW5rcykge1xuICAgIGxpbmtzLnB1c2goLi4uY2FjaGUubGlua3MpO1xuICB9XG5cbiAgaWYgKGNhY2hlLmVtYmVkcykge1xuICAgIGxpbmtzLnB1c2goLi4uY2FjaGUuZW1iZWRzKTtcbiAgfVxuXG4gIGlmIChjYWNoZS5mcm9udG1hdHRlckxpbmtzKSB7XG4gICAgbGlua3MucHVzaCguLi5jYWNoZS5mcm9udG1hdHRlckxpbmtzKTtcbiAgfVxuXG4gIHNvcnRSZWZlcmVuY2VzKGxpbmtzKTtcblxuICAvLyBCVUc6IGh0dHBzOi8vZm9ydW0ub2JzaWRpYW4ubWQvdC9idWctZHVwbGljYXRlZC1saW5rcy1pbi1tZXRhZGF0YWNhY2hlLWluc2lkZS1mb290bm90ZXMvODU1NTFcbiAgbGlua3MgPSBsaW5rcy5maWx0ZXIoKGxpbmssIGluZGV4KSA9PiB7XG4gICAgaWYgKGluZGV4ID09PSAwKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBjb25zdCBwcmV2aW91c0xpbmsgPSBsaW5rc1tpbmRleCAtIDFdO1xuICAgIGlmICghcHJldmlvdXNMaW5rKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAoaXNSZWZlcmVuY2VDYWNoZShsaW5rKSAmJiBpc1JlZmVyZW5jZUNhY2hlKHByZXZpb3VzTGluaykpIHtcbiAgICAgIHJldHVybiBsaW5rLnBvc2l0aW9uLnN0YXJ0Lm9mZnNldCAhPT0gcHJldmlvdXNMaW5rLnBvc2l0aW9uLnN0YXJ0Lm9mZnNldDtcbiAgICB9XG5cbiAgICBpZiAoaXNGcm9udG1hdHRlckxpbmtDYWNoZShsaW5rKSAmJiBpc0Zyb250bWF0dGVyTGlua0NhY2hlKHByZXZpb3VzTGluaykpIHtcbiAgICAgIGNvbnN0IGxpbmtTdGFydE9mZnNldCA9IGlzRnJvbnRtYXR0ZXJMaW5rQ2FjaGVXaXRoT2Zmc2V0cyhsaW5rKSA/IGxpbmsuc3RhcnRPZmZzZXQgOiAwO1xuICAgICAgY29uc3QgcHJldmlvdXNMaW5rU3RhcnRPZmZzZXQgPSBpc0Zyb250bWF0dGVyTGlua0NhY2hlV2l0aE9mZnNldHMocHJldmlvdXNMaW5rKSA/IHByZXZpb3VzTGluay5zdGFydE9mZnNldCA6IDA7XG4gICAgICByZXR1cm4gbGluay5rZXkgIT09IHByZXZpb3VzTGluay5rZXkgfHwgaXNGcm9udG1hdHRlckxpbmtDYWNoZVdpdGhPZmZzZXRzKGxpbmspICE9PSBpc0Zyb250bWF0dGVyTGlua0NhY2hlV2l0aE9mZnNldHMocHJldmlvdXNMaW5rKVxuICAgICAgICB8fCBsaW5rU3RhcnRPZmZzZXQgIT09IHByZXZpb3VzTGlua1N0YXJ0T2Zmc2V0O1xuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xuICB9KTtcblxuICByZXR1cm4gbGlua3M7XG59XG5cbi8qKlxuICogUmV0cmlldmVzIHRoZSBiYWNrbGlua3MgZm9yIGEgZmlsZSBvciBwYXRoLlxuICogTk9URTogVGhlIGZpbGUgbWF5IGJlIG5vbi1leGlzdGVudC5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIE9ic2lkaWFuIGFwcGxpY2F0aW9uIGluc3RhbmNlLlxuICogQHBhcmFtIHBhdGhPckZpbGUgLSBUaGUgcGF0aCBvciBmaWxlIG9iamVjdC5cbiAqIEByZXR1cm5zIFRoZSBiYWNrbGlua3MgZm9yIHRoZSBmaWxlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0QmFja2xpbmtzRm9yRmlsZU9yUGF0aChhcHA6IEFwcCwgcGF0aE9yRmlsZTogUGF0aE9yRmlsZSk6IEN1c3RvbUFycmF5RGljdDxSZWZlcmVuY2U+IHtcbiAgY29uc3QgZmlsZSA9IGdldEZpbGUoYXBwLCBwYXRoT3JGaWxlLCB0cnVlKTtcbiAgcmV0dXJuIHRlbXBSZWdpc3RlckZpbGVzQW5kUnVuKGFwcCwgW2ZpbGVdLCAoKSA9PiBhcHAubWV0YWRhdGFDYWNoZS5nZXRCYWNrbGlua3NGb3JGaWxlKGZpbGUpKTtcbn1cblxuLyoqXG4gKiBSZXRyaWV2ZXMgdGhlIGJhY2tsaW5rcyBmb3IgYSBmaWxlIHNhZmVseS5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIE9ic2lkaWFuIGFwcGxpY2F0aW9uIGluc3RhbmNlLlxuICogQHBhcmFtIHBhdGhPckZpbGUgLSBUaGUgcGF0aCBvciBmaWxlIG9iamVjdC5cbiAqIEBwYXJhbSByZXRyeU9wdGlvbnMgLSBPcHRpb25hbCByZXRyeSBvcHRpb25zLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB0byBhbiBhcnJheSBkaWN0aW9uYXJ5IG9mIGJhY2tsaW5rcy5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldEJhY2tsaW5rc0ZvckZpbGVTYWZlKGFwcDogQXBwLCBwYXRoT3JGaWxlOiBQYXRoT3JGaWxlLCByZXRyeU9wdGlvbnM6IFJldHJ5T3B0aW9ucyA9IHt9KTogUHJvbWlzZTxDdXN0b21BcnJheURpY3Q8UmVmZXJlbmNlPj4ge1xuICBjb25zdCBzYWZlT3ZlcmxvYWQgPSAoYXBwLm1ldGFkYXRhQ2FjaGUuZ2V0QmFja2xpbmtzRm9yRmlsZSBhcyBQYXJ0aWFsPEdldEJhY2tsaW5rc0ZvckZpbGVTYWZlV3JhcHBlcj4pLnNhZmU7XG4gIGlmIChzYWZlT3ZlcmxvYWQpIHtcbiAgICByZXR1cm4gc2FmZU92ZXJsb2FkKHBhdGhPckZpbGUpO1xuICB9XG4gIGxldCBiYWNrbGlua3M6IEN1c3RvbUFycmF5RGljdDxSZWZlcmVuY2U+ID0gbmV3IEN1c3RvbUFycmF5RGljdEltcGw8UmVmZXJlbmNlPigpO1xuICBhd2FpdCByZXRyeVdpdGhUaW1lb3V0KGFzeW5jIChhYm9ydFNpZ25hbCkgPT4ge1xuICAgIGFib3J0U2lnbmFsLnRocm93SWZBYm9ydGVkKCk7XG4gICAgY29uc3QgZmlsZSA9IGdldEZpbGUoYXBwLCBwYXRoT3JGaWxlKTtcbiAgICBhd2FpdCBlbnN1cmVNZXRhZGF0YUNhY2hlUmVhZHkoYXBwKTtcbiAgICBhYm9ydFNpZ25hbC50aHJvd0lmQWJvcnRlZCgpO1xuICAgIGJhY2tsaW5rcyA9IGdldEJhY2tsaW5rc0ZvckZpbGVPclBhdGgoYXBwLCBmaWxlKTtcbiAgICBmb3IgKGNvbnN0IG5vdGVQYXRoIG9mIGJhY2tsaW5rcy5rZXlzKCkpIHtcbiAgICAgIGFib3J0U2lnbmFsLnRocm93SWZBYm9ydGVkKCk7XG4gICAgICBjb25zdCBub3RlID0gZ2V0RmlsZU9yTnVsbChhcHAsIG5vdGVQYXRoKTtcbiAgICAgIGlmICghbm90ZSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIGF3YWl0IHNhdmVOb3RlKGFwcCwgbm90ZSk7XG4gICAgICBhYm9ydFNpZ25hbC50aHJvd0lmQWJvcnRlZCgpO1xuXG4gICAgICBjb25zdCBjb250ZW50ID0gYXdhaXQgcmVhZFNhZmUoYXBwLCBub3RlKTtcbiAgICAgIGFib3J0U2lnbmFsLnRocm93SWZBYm9ydGVkKCk7XG4gICAgICBpZiAoIWNvbnRlbnQpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgY29uc3QgZnJvbnRtYXR0ZXIgPSBwYXJzZUZyb250bWF0dGVyKGNvbnRlbnQpO1xuICAgICAgY29uc3QgbGlua3MgPSBiYWNrbGlua3MuZ2V0KG5vdGVQYXRoKTtcbiAgICAgIGlmICghbGlua3MpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuXG4gICAgICBmb3IgKGNvbnN0IGxpbmsgb2YgbGlua3MpIHtcbiAgICAgICAgbGV0IGFjdHVhbExpbms6IHN0cmluZztcbiAgICAgICAgaWYgKGlzUmVmZXJlbmNlQ2FjaGUobGluaykpIHtcbiAgICAgICAgICBhY3R1YWxMaW5rID0gY29udGVudC5zbGljZShsaW5rLnBvc2l0aW9uLnN0YXJ0Lm9mZnNldCwgbGluay5wb3NpdGlvbi5lbmQub2Zmc2V0KTtcbiAgICAgICAgfSBlbHNlIGlmIChpc0Zyb250bWF0dGVyTGlua0NhY2hlKGxpbmspKSB7XG4gICAgICAgICAgY29uc3QgbGlua1ZhbHVlID0gZ2V0TmVzdGVkUHJvcGVydHlWYWx1ZShmcm9udG1hdHRlciwgbGluay5rZXkpO1xuICAgICAgICAgIGlmICh0eXBlb2YgbGlua1ZhbHVlICE9PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGxldCBzdGFydE9mZnNldCA9IDA7XG4gICAgICAgICAgbGV0IGVuZE9mZnNldCA9IGxpbmtWYWx1ZS5sZW5ndGg7XG5cbiAgICAgICAgICBpZiAoaXNGcm9udG1hdHRlckxpbmtDYWNoZVdpdGhPZmZzZXRzKGxpbmspKSB7XG4gICAgICAgICAgICBzdGFydE9mZnNldCA9IGxpbmsuc3RhcnRPZmZzZXQ7XG4gICAgICAgICAgICBlbmRPZmZzZXQgPSBsaW5rLmVuZE9mZnNldDtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBhY3R1YWxMaW5rID0gbGlua1ZhbHVlLnNsaWNlKHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChhY3R1YWxMaW5rICE9PSBsaW5rLm9yaWdpbmFsKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWU7XG4gIH0sIHJldHJ5T3B0aW9ucyk7XG5cbiAgcmV0dXJuIGJhY2tsaW5rcztcbn1cblxuLyoqXG4gKiBSZXRyaWV2ZXMgdGhlIGNhY2hlZCBtZXRhZGF0YSBmb3IgYSBnaXZlbiBmaWxlIG9yIHBhdGguXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBPYnNpZGlhbiBhcHAgaW5zdGFuY2UuXG4gKiBAcGFyYW0gZmlsZU9yUGF0aCAtIFRoZSBmaWxlIG9yIHBhdGggdG8gcmV0cmlldmUgdGhlIG1ldGFkYXRhIGZvci5cbiAqIEByZXR1cm5zIFRoZSBjYWNoZWQgbWV0YWRhdGEgZm9yIHRoZSBmaWxlLCBvciBudWxsIGlmIGl0IGRvZXNuJ3QgZXhpc3QuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRDYWNoZVNhZmUoYXBwOiBBcHAsIGZpbGVPclBhdGg6IFBhdGhPckZpbGUpOiBQcm9taXNlPENhY2hlZE1ldGFkYXRhIHwgbnVsbD4ge1xuICBjb25zdCBmaWxlID0gZ2V0RmlsZU9yTnVsbChhcHAsIGZpbGVPclBhdGgpO1xuICBpZiAoIWZpbGUgfHwgZmlsZS5kZWxldGVkKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBhd2FpdCBzYXZlTm90ZShhcHAsIGZpbGUpO1xuXG4gIGNvbnN0IGZpbGVDYWNoZUVudHJ5ID0gYXBwLm1ldGFkYXRhQ2FjaGUuZmlsZUNhY2hlW2ZpbGUucGF0aF07XG4gIGNvbnN0IGlzVXBUb0RhdGUgPSBmaWxlQ2FjaGVFbnRyeVxuICAgICYmIGZpbGVDYWNoZUVudHJ5Lm10aW1lID09PSBmaWxlLnN0YXQubXRpbWVcbiAgICAmJiBmaWxlQ2FjaGVFbnRyeS5zaXplID09PSBmaWxlLnN0YXQuc2l6ZVxuICAgICYmIGFwcC5tZXRhZGF0YUNhY2hlLm1ldGFkYXRhQ2FjaGVbZmlsZUNhY2hlRW50cnkuaGFzaF07XG4gIGlmICghaXNVcFRvRGF0ZSkge1xuICAgIGF3YWl0IGFwcC5tZXRhZGF0YUNhY2hlLmNvbXB1dGVGaWxlTWV0YWRhdGFBc3luYyhmaWxlKTtcbiAgICBhd2FpdCBlbnN1cmVNZXRhZGF0YUNhY2hlUmVhZHkoYXBwKTtcbiAgfVxuICByZXR1cm4gYXBwLm1ldGFkYXRhQ2FjaGUuZ2V0RmlsZUNhY2hlKGZpbGUpO1xufVxuXG4vKipcbiAqIFJldHJpZXZlcyB0aGUgZnJvbnQgbWF0dGVyIGZyb20gdGhlIG1ldGFkYXRhIGNhY2hlIHNhZmVseS5cbiAqXG4gKiBAdHlwZVBhcmFtIEN1c3RvbUZyb250bWF0dGVyIC0gVGhlIHR5cGUgb2YgY3VzdG9tIGZyb250IG1hdHRlci5cbiAqIEBwYXJhbSBhcHAgLSBUaGUgT2JzaWRpYW4gYXBwIGluc3RhbmNlLlxuICogQHBhcmFtIHBhdGhPckZpbGUgLSBUaGUgcGF0aCBvciBmaWxlIHRvIHJldHJpZXZlIHRoZSBmcm9udCBtYXR0ZXIgZnJvbS5cbiAqIEByZXR1cm5zIFRoZSBjb21iaW5lZCBmcm9udCBtYXR0ZXIuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRGcm9udG1hdHRlclNhZmU8Q3VzdG9tRnJvbnRtYXR0ZXIgPSB1bmtub3duPihhcHA6IEFwcCwgcGF0aE9yRmlsZTogUGF0aE9yRmlsZSk6IFByb21pc2U8Q29tYmluZWRGcm9udG1hdHRlcjxDdXN0b21Gcm9udG1hdHRlcj4+IHtcbiAgY29uc3QgY2FjaGUgPSBhd2FpdCBnZXRDYWNoZVNhZmUoYXBwLCBwYXRoT3JGaWxlKTtcbiAgcmV0dXJuIChjYWNoZT8uZnJvbnRtYXR0ZXIgPz8ge30pIGFzIENvbWJpbmVkRnJvbnRtYXR0ZXI8Q3VzdG9tRnJvbnRtYXR0ZXI+O1xufVxuXG4vKipcbiAqIFBhcnNlcyB0aGUgbWV0YWRhdGEgZm9yIGEgZ2l2ZW4gc3RyaW5nLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgT2JzaWRpYW4gYXBwIGluc3RhbmNlLlxuICogQHBhcmFtIHN0ciAtIFRoZSBzdHJpbmcgdG8gcGFyc2UgdGhlIG1ldGFkYXRhIGZvci5cbiAqIEByZXR1cm5zIFRoZSBwYXJzZWQgbWV0YWRhdGEuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBwYXJzZU1ldGFkYXRhKGFwcDogQXBwLCBzdHI6IHN0cmluZyk6IFByb21pc2U8Q2FjaGVkTWV0YWRhdGE+IHtcbiAgY29uc3QgZW5jb2RlciA9IG5ldyBUZXh0RW5jb2RlcigpO1xuICBjb25zdCBidWZmZXIgPSBlbmNvZGVyLmVuY29kZShzdHIpLmJ1ZmZlciBhcyBBcnJheUJ1ZmZlcjtcbiAgcmV0dXJuIGF3YWl0IGFwcC5tZXRhZGF0YUNhY2hlLmNvbXB1dGVNZXRhZGF0YUFzeW5jKGJ1ZmZlcikgPz8ge307XG59XG5cbi8qKlxuICogUmVnaXN0ZXJzIGZpbGVzIGluIHRoZSBPYnNpZGlhbiBhcHAuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBPYnNpZGlhbiBhcHAgaW5zdGFuY2UuXG4gKiBAcGFyYW0gZmlsZXMgLSBUaGUgZmlsZXMgdG8gcmVnaXN0ZXIuXG4gKiBAcmV0dXJucyBBIGZ1bmN0aW9uIHRoYXQgdW5yZWdpc3RlcnMgdGhlIGZpbGVzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVnaXN0ZXJGaWxlcyhhcHA6IEFwcCwgZmlsZXM6IFRBYnN0cmFjdEZpbGVbXSk6ICgpID0+IHZvaWQge1xuICBjb25zdCBkZWxldGVkUGF0aHMgPSBuZXcgU2V0PHN0cmluZz4oKTtcblxuICBmb3IgKGNvbnN0IGZpbGUgb2YgZmlsZXMpIHtcbiAgICBpZiAoIWZpbGUuZGVsZXRlZCkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgbGV0IGRlbGV0ZWRGaWxlOiBUQWJzdHJhY3RGaWxlID0gZmlsZTtcblxuICAgIHdoaWxlIChkZWxldGVkRmlsZS5kZWxldGVkKSB7XG4gICAgICBkZWxldGVkUGF0aHMuYWRkKGRlbGV0ZWRGaWxlLnBhdGgpO1xuICAgICAgYXBwLnZhdWx0LmZpbGVNYXBbZGVsZXRlZEZpbGUucGF0aF0gPSBkZWxldGVkRmlsZTtcbiAgICAgIGRlbGV0ZWRGaWxlID0gZGVsZXRlZEZpbGUucGFyZW50ID8/IGdldEZvbGRlcihhcHAsIHBhcmVudEZvbGRlclBhdGgoZGVsZXRlZEZpbGUucGF0aCksIHRydWUpO1xuICAgIH1cblxuICAgIGlmIChpc0ZpbGUoZmlsZSkpIHtcbiAgICAgIGFwcC5tZXRhZGF0YUNhY2hlLnVuaXF1ZUZpbGVMb29rdXAuYWRkKGZpbGUubmFtZS50b0xvd2VyQ2FzZSgpLCBmaWxlKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gKCkgPT4ge1xuICAgIGZvciAoY29uc3QgcGF0aCBvZiBkZWxldGVkUGF0aHMpIHtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZHluYW1pYy1kZWxldGVcbiAgICAgIGRlbGV0ZSBhcHAudmF1bHQuZmlsZU1hcFtwYXRoXTtcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IGZpbGUgb2YgZmlsZXMpIHtcbiAgICAgIGlmIChmaWxlLmRlbGV0ZWQgJiYgaXNGaWxlKGZpbGUpKSB7XG4gICAgICAgIGFwcC5tZXRhZGF0YUNhY2hlLnVuaXF1ZUZpbGVMb29rdXAucmVtb3ZlKGZpbGUubmFtZS50b0xvd2VyQ2FzZSgpLCBmaWxlKTtcbiAgICAgIH1cbiAgICB9XG4gIH07XG59XG5cbi8qKlxuICogVGVtcG9yYXJpbHkgcmVnaXN0ZXJzIGZpbGVzIGFuZCBydW5zIGEgZnVuY3Rpb24uXG4gKlxuICogQHR5cGVQYXJhbSBUIC0gVGhlIHR5cGUgb2YgdGhlIHJlc3VsdCBvZiB0aGUgZnVuY3Rpb24uXG4gKiBAcGFyYW0gYXBwIC0gVGhlIE9ic2lkaWFuIGFwcCBpbnN0YW5jZS5cbiAqIEBwYXJhbSBmaWxlcyAtIFRoZSBmaWxlcyB0byB0ZW1wb3JhcmlseSByZWdpc3Rlci5cbiAqIEBwYXJhbSBmbiAtIFRoZSBmdW5jdGlvbiB0byBydW4uXG4gKiBAcmV0dXJucyBUaGUgcmVzdWx0IG9mIHRoZSBmdW5jdGlvbi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRlbXBSZWdpc3RlckZpbGVzQW5kUnVuPFQ+KGFwcDogQXBwLCBmaWxlczogVEFic3RyYWN0RmlsZVtdLCBmbjogKCkgPT4gVCk6IFQge1xuICBjb25zdCB1bnJlZ2lzdGVyID0gcmVnaXN0ZXJGaWxlcyhhcHAsIGZpbGVzKTtcblxuICB0cnkge1xuICAgIHJldHVybiBmbigpO1xuICB9IGZpbmFsbHkge1xuICAgIHVucmVnaXN0ZXIoKTtcbiAgfVxufVxuXG4vKipcbiAqIFRlbXBvcmFyaWx5IHJlZ2lzdGVycyBmaWxlcyBhbmQgcnVucyBhbiBhc3luYyBmdW5jdGlvbi5cbiAqXG4gKiBAdHlwZVBhcmFtIFQgLSBUaGUgdHlwZSBvZiB0aGUgcmVzdWx0IG9mIHRoZSBmdW5jdGlvbi5cbiAqIEBwYXJhbSBhcHAgLSBUaGUgT2JzaWRpYW4gYXBwIGluc3RhbmNlLlxuICogQHBhcmFtIGZpbGVzIC0gVGhlIGZpbGVzIHRvIHRlbXBvcmFyaWx5IHJlZ2lzdGVyLlxuICogQHBhcmFtIGZuIC0gVGhlIGZ1bmN0aW9uIHRvIHJ1bi5cbiAqIEByZXR1cm5zIFRoZSByZXN1bHQgb2YgdGhlIGZ1bmN0aW9uLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gdGVtcFJlZ2lzdGVyRmlsZXNBbmRSdW5Bc3luYzxUPihhcHA6IEFwcCwgZmlsZXM6IFRBYnN0cmFjdEZpbGVbXSwgZm46ICgpID0+IFByb21pc2U8VD4pOiBQcm9taXNlPFQ+IHtcbiAgY29uc3QgdW5yZWdpc3RlciA9IHJlZ2lzdGVyRmlsZXMoYXBwLCBmaWxlcyk7XG5cbiAgdHJ5IHtcbiAgICByZXR1cm4gYXdhaXQgZm4oKTtcbiAgfSBmaW5hbGx5IHtcbiAgICB1bnJlZ2lzdGVyKCk7XG4gIH1cbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7QUFjQTtBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxPQUNLO0FBTVAsU0FBUyx3QkFBd0I7QUFDakMsU0FBUyw4QkFBOEI7QUFD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
@@ -7,27 +7,27 @@
7
7
  */
8
8
  import type { App } from 'obsidian';
9
9
  /**
10
- * The options for the alert modal.
10
+ * Options for the alert modal.
11
11
  */
12
12
  export interface AlertOptions {
13
13
  /**
14
- * The Obsidian app instance.
14
+ * An Obsidian app instance.
15
15
  */
16
16
  app: App;
17
17
  /**
18
- * The CSS class to apply to the modal.
18
+ * A CSS class to apply to the modal.
19
19
  */
20
20
  cssClass?: string;
21
21
  /**
22
- * The message to display in the modal.
22
+ * A message to display in the modal.
23
23
  */
24
24
  message: DocumentFragment | string;
25
25
  /**
26
- * The text for the "OK" button.
26
+ * A text for the "OK" button.
27
27
  */
28
28
  okButtonText?: string;
29
29
  /**
30
- * The title of the modal.
30
+ * A title of the modal.
31
31
  */
32
32
  title?: DocumentFragment | string;
33
33
  }
@@ -3,7 +3,7 @@ THIS IS A GENERATED/BUNDLED FILE BY ESBUILD
3
3
  if you want to view the source, please visit the github repository of this plugin
4
4
  */
5
5
 
6
- (function initEsm(){if(globalThis.process){return}const browserProcess={browser:true,cwd:__name(()=>"/","cwd"),env:{},platform:"android"};globalThis.process=browserProcess})();
6
+ (function initEsm(){if(globalThis.process){return}const browserProcess={browser:true,cwd(){return"/"},env:{},platform:"android"};globalThis.process=browserProcess})();
7
7
 
8
8
  import { ButtonComponent } from "obsidian";
9
9
  import { CssClass } from "../../CssClass.mjs";
@@ -45,4 +45,4 @@ async function alert(options) {
45
45
  export {
46
46
  alert
47
47
  };
48
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL01vZGFscy9BbGVydC50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAcGFja2FnZURvY3VtZW50YXRpb25cbiAqXG4gKiBVdGlsaXR5IGZvciBkaXNwbGF5aW5nIGFsZXJ0IG1vZGFscyBpbiBPYnNpZGlhbi5cbiAqXG4gKiBUaGlzIG1vZHVsZSBleHBvcnRzIGEgZnVuY3Rpb24gdG8gZGlzcGxheSBhIG1vZGFsIHdpdGggYSBtZXNzYWdlIGluIE9ic2lkaWFuLiBUaGUgbW9kYWwgaW5jbHVkZXMgYW4gXCJPS1wiIGJ1dHRvbiB0byBjbG9zZSBpdC5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7IEFwcCB9IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHsgQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQgdHlwZSB7IFByb21pc2VSZXNvbHZlIH0gZnJvbSAnLi4vLi4vQXN5bmMudHMnO1xuXG5pbXBvcnQgeyBDc3NDbGFzcyB9IGZyb20gJy4uLy4uL0Nzc0NsYXNzLnRzJztcbmltcG9ydCB7XG4gIE1vZGFsQmFzZSxcbiAgc2hvd01vZGFsXG59IGZyb20gJy4vTW9kYWxCYXNlLnRzJztcblxuLyoqXG4gKiBUaGUgb3B0aW9ucyBmb3IgdGhlIGFsZXJ0IG1vZGFsLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFsZXJ0T3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUaGUgT2JzaWRpYW4gYXBwIGluc3RhbmNlLlxuICAgKi9cbiAgYXBwOiBBcHA7XG5cbiAgLyoqXG4gICAqIFRoZSBDU1MgY2xhc3MgdG8gYXBwbHkgdG8gdGhlIG1vZGFsLlxuICAgKi9cbiAgY3NzQ2xhc3M/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBtZXNzYWdlIHRvIGRpc3BsYXkgaW4gdGhlIG1vZGFsLlxuICAgKi9cbiAgbWVzc2FnZTogRG9jdW1lbnRGcmFnbWVudCB8IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHRleHQgZm9yIHRoZSBcIk9LXCIgYnV0dG9uLlxuICAgKi9cbiAgb2tCdXR0b25UZXh0Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgdGl0bGUgb2YgdGhlIG1vZGFsLlxuICAgKi9cbiAgdGl0bGU/OiBEb2N1bWVudEZyYWdtZW50IHwgc3RyaW5nO1xufVxuXG5jbGFzcyBBbGVydE1vZGFsIGV4dGVuZHMgTW9kYWxCYXNlPHZvaWQsIEFsZXJ0T3B0aW9ucz4ge1xuICBwcml2YXRlIG9wdGlvbnM6IFJlcXVpcmVkPEFsZXJ0T3B0aW9ucz47XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKG9wdGlvbnM6IEFsZXJ0T3B0aW9ucywgcmVzb2x2ZTogUHJvbWlzZVJlc29sdmU8dm9pZD4pIHtcbiAgICBzdXBlcihvcHRpb25zLCByZXNvbHZlLCBDc3NDbGFzcy5BbGVydE1vZGFsKTtcbiAgICBjb25zdCBERUZBVUxUX09QVElPTlM6IFJlcXVpcmVkPEFsZXJ0T3B0aW9ucz4gPSB7XG4gICAgICBhcHA6IG9wdGlvbnMuYXBwLFxuICAgICAgY3NzQ2xhc3M6ICcnLFxuICAgICAgbWVzc2FnZTogb3B0aW9ucy5tZXNzYWdlLFxuICAgICAgb2tCdXR0b25UZXh0OiAnT0snLFxuICAgICAgdGl0bGU6ICcnXG4gICAgfTtcbiAgICB0aGlzLm9wdGlvbnMgPSB7IC4uLkRFRkFVTFRfT1BUSU9OUywgLi4ub3B0aW9ucyB9O1xuICB9XG5cbiAgcHVibGljIG92ZXJyaWRlIG9uQ2xvc2UoKTogdm9pZCB7XG4gICAgc3VwZXIub25DbG9zZSgpO1xuICAgIHRoaXMucmVzb2x2ZSgpO1xuICB9XG5cbiAgcHVibGljIG92ZXJyaWRlIG9uT3BlbigpOiB2b2lkIHtcbiAgICBzdXBlci5vbk9wZW4oKTtcbiAgICB0aGlzLnRpdGxlRWwuc2V0VGV4dCh0aGlzLm9wdGlvbnMudGl0bGUpO1xuICAgIHRoaXMuY29udGVudEVsLmNyZWF0ZUVsKCdwJywgeyB0ZXh0OiB0aGlzLm9wdGlvbnMubWVzc2FnZSB9KTtcbiAgICBjb25zdCBva0J1dHRvbiA9IG5ldyBCdXR0b25Db21wb25lbnQodGhpcy5jb250ZW50RWwpO1xuICAgIG9rQnV0dG9uLnNldEJ1dHRvblRleHQodGhpcy5vcHRpb25zLm9rQnV0dG9uVGV4dCk7XG4gICAgb2tCdXR0b24uc2V0Q3RhKCk7XG4gICAgb2tCdXR0b24ub25DbGljayh0aGlzLmNsb3NlLmJpbmQodGhpcykpO1xuICAgIG9rQnV0dG9uLnNldENsYXNzKENzc0NsYXNzLk9rQnV0dG9uKTtcbiAgfVxufVxuXG4vKipcbiAqIERpc3BsYXlzIGFuIGFsZXJ0IG1vZGFsIGluIE9ic2lkaWFuIHdpdGggYSBzcGVjaWZpZWQgbWVzc2FnZS5cbiAqXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBvcHRpb25zIGZvciB0aGUgYWxlcnQgbW9kYWwuXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIG1vZGFsIGlzIGNsb3NlZC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGFsZXJ0KG9wdGlvbnM6IEFsZXJ0T3B0aW9ucyk6IFByb21pc2U8dm9pZD4ge1xuICBhd2FpdCBzaG93TW9kYWwoKHJlc29sdmUpID0+IG5ldyBBbGVydE1vZGFsKG9wdGlvbnMsIHJlc29sdmUpKTtcbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7QUFVQSxTQUFTLHVCQUF1QjtBQUloQyxTQUFTLGdCQUFnQjtBQUN6QjtBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsT0FDSztBQWdDUCxNQUFNLG1CQUFtQixVQUE4QjtBQUFBLEVBQzdDO0FBQUEsRUFFRCxZQUFZLFNBQXVCLFNBQStCO0FBQ3ZFLFVBQU0sU0FBUyxTQUFTLFNBQVMsVUFBVTtBQUMzQyxVQUFNLGtCQUEwQztBQUFBLE1BQzlDLEtBQUssUUFBUTtBQUFBLE1BQ2IsVUFBVTtBQUFBLE1BQ1YsU0FBUyxRQUFRO0FBQUEsTUFDakIsY0FBYztBQUFBLE1BQ2QsT0FBTztBQUFBLElBQ1Q7QUFDQSxTQUFLLFVBQVUsRUFBRSxHQUFHLGlCQUFpQixHQUFHLFFBQVE7QUFBQSxFQUNsRDtBQUFBLEVBRWdCLFVBQWdCO0FBQzlCLFVBQU0sUUFBUTtBQUNkLFNBQUssUUFBUTtBQUFBLEVBQ2Y7QUFBQSxFQUVnQixTQUFlO0FBQzdCLFVBQU0sT0FBTztBQUNiLFNBQUssUUFBUSxRQUFRLEtBQUssUUFBUSxLQUFLO0FBQ3ZDLFNBQUssVUFBVSxTQUFTLEtBQUssRUFBRSxNQUFNLEtBQUssUUFBUSxRQUFRLENBQUM7QUFDM0QsVUFBTSxXQUFXLElBQUksZ0JBQWdCLEtBQUssU0FBUztBQUNuRCxhQUFTLGNBQWMsS0FBSyxRQUFRLFlBQVk7QUFDaEQsYUFBUyxPQUFPO0FBQ2hCLGFBQVMsUUFBUSxLQUFLLE1BQU0sS0FBSyxJQUFJLENBQUM7QUFDdEMsYUFBUyxTQUFTLFNBQVMsUUFBUTtBQUFBLEVBQ3JDO0FBQ0Y7QUFRQSxlQUFzQixNQUFNLFNBQXNDO0FBQ2hFLFFBQU0sVUFBVSxDQUFDLFlBQVksSUFBSSxXQUFXLFNBQVMsT0FBTyxDQUFDO0FBQy9EOyIsCiAgIm5hbWVzIjogW10KfQo=
48
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL01vZGFscy9BbGVydC50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAcGFja2FnZURvY3VtZW50YXRpb25cbiAqXG4gKiBVdGlsaXR5IGZvciBkaXNwbGF5aW5nIGFsZXJ0IG1vZGFscyBpbiBPYnNpZGlhbi5cbiAqXG4gKiBUaGlzIG1vZHVsZSBleHBvcnRzIGEgZnVuY3Rpb24gdG8gZGlzcGxheSBhIG1vZGFsIHdpdGggYSBtZXNzYWdlIGluIE9ic2lkaWFuLiBUaGUgbW9kYWwgaW5jbHVkZXMgYW4gXCJPS1wiIGJ1dHRvbiB0byBjbG9zZSBpdC5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7IEFwcCB9IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHsgQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQgdHlwZSB7IFByb21pc2VSZXNvbHZlIH0gZnJvbSAnLi4vLi4vQXN5bmMudHMnO1xuXG5pbXBvcnQgeyBDc3NDbGFzcyB9IGZyb20gJy4uLy4uL0Nzc0NsYXNzLnRzJztcbmltcG9ydCB7XG4gIE1vZGFsQmFzZSxcbiAgc2hvd01vZGFsXG59IGZyb20gJy4vTW9kYWxCYXNlLnRzJztcblxuLyoqXG4gKiBPcHRpb25zIGZvciB0aGUgYWxlcnQgbW9kYWwuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQWxlcnRPcHRpb25zIHtcbiAgLyoqXG4gICAqIEFuIE9ic2lkaWFuIGFwcCBpbnN0YW5jZS5cbiAgICovXG4gIGFwcDogQXBwO1xuXG4gIC8qKlxuICAgKiBBIENTUyBjbGFzcyB0byBhcHBseSB0byB0aGUgbW9kYWwuXG4gICAqL1xuICBjc3NDbGFzcz86IHN0cmluZztcblxuICAvKipcbiAgICogQSBtZXNzYWdlIHRvIGRpc3BsYXkgaW4gdGhlIG1vZGFsLlxuICAgKi9cbiAgbWVzc2FnZTogRG9jdW1lbnRGcmFnbWVudCB8IHN0cmluZztcblxuICAvKipcbiAgICogQSB0ZXh0IGZvciB0aGUgXCJPS1wiIGJ1dHRvbi5cbiAgICovXG4gIG9rQnV0dG9uVGV4dD86IHN0cmluZztcblxuICAvKipcbiAgICogQSB0aXRsZSBvZiB0aGUgbW9kYWwuXG4gICAqL1xuICB0aXRsZT86IERvY3VtZW50RnJhZ21lbnQgfCBzdHJpbmc7XG59XG5cbmNsYXNzIEFsZXJ0TW9kYWwgZXh0ZW5kcyBNb2RhbEJhc2U8dm9pZCwgQWxlcnRPcHRpb25zPiB7XG4gIHByaXZhdGUgb3B0aW9uczogUmVxdWlyZWQ8QWxlcnRPcHRpb25zPjtcblxuICBwdWJsaWMgY29uc3RydWN0b3Iob3B0aW9uczogQWxlcnRPcHRpb25zLCByZXNvbHZlOiBQcm9taXNlUmVzb2x2ZTx2b2lkPikge1xuICAgIHN1cGVyKG9wdGlvbnMsIHJlc29sdmUsIENzc0NsYXNzLkFsZXJ0TW9kYWwpO1xuICAgIGNvbnN0IERFRkFVTFRfT1BUSU9OUzogUmVxdWlyZWQ8QWxlcnRPcHRpb25zPiA9IHtcbiAgICAgIGFwcDogb3B0aW9ucy5hcHAsXG4gICAgICBjc3NDbGFzczogJycsXG4gICAgICBtZXNzYWdlOiBvcHRpb25zLm1lc3NhZ2UsXG4gICAgICBva0J1dHRvblRleHQ6ICdPSycsXG4gICAgICB0aXRsZTogJydcbiAgICB9O1xuICAgIHRoaXMub3B0aW9ucyA9IHsgLi4uREVGQVVMVF9PUFRJT05TLCAuLi5vcHRpb25zIH07XG4gIH1cblxuICBwdWJsaWMgb3ZlcnJpZGUgb25DbG9zZSgpOiB2b2lkIHtcbiAgICBzdXBlci5vbkNsb3NlKCk7XG4gICAgdGhpcy5yZXNvbHZlKCk7XG4gIH1cblxuICBwdWJsaWMgb3ZlcnJpZGUgb25PcGVuKCk6IHZvaWQge1xuICAgIHN1cGVyLm9uT3BlbigpO1xuICAgIHRoaXMudGl0bGVFbC5zZXRUZXh0KHRoaXMub3B0aW9ucy50aXRsZSk7XG4gICAgdGhpcy5jb250ZW50RWwuY3JlYXRlRWwoJ3AnLCB7IHRleHQ6IHRoaXMub3B0aW9ucy5tZXNzYWdlIH0pO1xuICAgIGNvbnN0IG9rQnV0dG9uID0gbmV3IEJ1dHRvbkNvbXBvbmVudCh0aGlzLmNvbnRlbnRFbCk7XG4gICAgb2tCdXR0b24uc2V0QnV0dG9uVGV4dCh0aGlzLm9wdGlvbnMub2tCdXR0b25UZXh0KTtcbiAgICBva0J1dHRvbi5zZXRDdGEoKTtcbiAgICBva0J1dHRvbi5vbkNsaWNrKHRoaXMuY2xvc2UuYmluZCh0aGlzKSk7XG4gICAgb2tCdXR0b24uc2V0Q2xhc3MoQ3NzQ2xhc3MuT2tCdXR0b24pO1xuICB9XG59XG5cbi8qKlxuICogRGlzcGxheXMgYW4gYWxlcnQgbW9kYWwgaW4gT2JzaWRpYW4gd2l0aCBhIHNwZWNpZmllZCBtZXNzYWdlLlxuICpcbiAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIG9wdGlvbnMgZm9yIHRoZSBhbGVydCBtb2RhbC5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgbW9kYWwgaXMgY2xvc2VkLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gYWxlcnQob3B0aW9uczogQWxlcnRPcHRpb25zKTogUHJvbWlzZTx2b2lkPiB7XG4gIGF3YWl0IHNob3dNb2RhbCgocmVzb2x2ZSkgPT4gbmV3IEFsZXJ0TW9kYWwob3B0aW9ucywgcmVzb2x2ZSkpO1xufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7OztBQVVBLFNBQVMsdUJBQXVCO0FBSWhDLFNBQVMsZ0JBQWdCO0FBQ3pCO0FBQUEsRUFDRTtBQUFBLEVBQ0E7QUFBQSxPQUNLO0FBZ0NQLE1BQU0sbUJBQW1CLFVBQThCO0FBQUEsRUFDN0M7QUFBQSxFQUVELFlBQVksU0FBdUIsU0FBK0I7QUFDdkUsVUFBTSxTQUFTLFNBQVMsU0FBUyxVQUFVO0FBQzNDLFVBQU0sa0JBQTBDO0FBQUEsTUFDOUMsS0FBSyxRQUFRO0FBQUEsTUFDYixVQUFVO0FBQUEsTUFDVixTQUFTLFFBQVE7QUFBQSxNQUNqQixjQUFjO0FBQUEsTUFDZCxPQUFPO0FBQUEsSUFDVDtBQUNBLFNBQUssVUFBVSxFQUFFLEdBQUcsaUJBQWlCLEdBQUcsUUFBUTtBQUFBLEVBQ2xEO0FBQUEsRUFFZ0IsVUFBZ0I7QUFDOUIsVUFBTSxRQUFRO0FBQ2QsU0FBSyxRQUFRO0FBQUEsRUFDZjtBQUFBLEVBRWdCLFNBQWU7QUFDN0IsVUFBTSxPQUFPO0FBQ2IsU0FBSyxRQUFRLFFBQVEsS0FBSyxRQUFRLEtBQUs7QUFDdkMsU0FBSyxVQUFVLFNBQVMsS0FBSyxFQUFFLE1BQU0sS0FBSyxRQUFRLFFBQVEsQ0FBQztBQUMzRCxVQUFNLFdBQVcsSUFBSSxnQkFBZ0IsS0FBSyxTQUFTO0FBQ25ELGFBQVMsY0FBYyxLQUFLLFFBQVEsWUFBWTtBQUNoRCxhQUFTLE9BQU87QUFDaEIsYUFBUyxRQUFRLEtBQUssTUFBTSxLQUFLLElBQUksQ0FBQztBQUN0QyxhQUFTLFNBQVMsU0FBUyxRQUFRO0FBQUEsRUFDckM7QUFDRjtBQVFBLGVBQXNCLE1BQU0sU0FBc0M7QUFDaEUsUUFBTSxVQUFVLENBQUMsWUFBWSxJQUFJLFdBQVcsU0FBUyxPQUFPLENBQUM7QUFDL0Q7IiwKICAibmFtZXMiOiBbXQp9Cg==
@@ -7,31 +7,31 @@
7
7
  */
8
8
  import type { App } from 'obsidian';
9
9
  /**
10
- * The options for the confirm modal.
10
+ * Options for the confirm modal.
11
11
  */
12
12
  export interface ConfirmOptions {
13
13
  /**
14
- * The Obsidian app instance.
14
+ * An Obsidian app instance.
15
15
  */
16
16
  app: App;
17
17
  /**
18
- * The text for the "Cancel" button.
18
+ * A text for the "Cancel" button.
19
19
  */
20
20
  cancelButtonText?: string;
21
21
  /**
22
- * The CSS class to apply to the modal.
22
+ * A CSS class to apply to the modal.
23
23
  */
24
24
  cssClass?: string;
25
25
  /**
26
- * The message to display in the modal.
26
+ * A message to display in the modal.
27
27
  */
28
28
  message: DocumentFragment | string;
29
29
  /**
30
- * The text for the "OK" button.
30
+ * A text for the "OK" button.
31
31
  */
32
32
  okButtonText?: string;
33
33
  /**
34
- * The title of the modal.
34
+ * A title of the modal.
35
35
  */
36
36
  title?: DocumentFragment | string;
37
37
  }
@@ -3,7 +3,7 @@ THIS IS A GENERATED/BUNDLED FILE BY ESBUILD
3
3
  if you want to view the source, please visit the github repository of this plugin
4
4
  */
5
5
 
6
- (function initEsm(){if(globalThis.process){return}const browserProcess={browser:true,cwd:__name(()=>"/","cwd"),env:{},platform:"android"};globalThis.process=browserProcess})();
6
+ (function initEsm(){if(globalThis.process){return}const browserProcess={browser:true,cwd(){return"/"},env:{},platform:"android"};globalThis.process=browserProcess})();
7
7
 
8
8
  import { ButtonComponent } from "obsidian";
9
9
  import { CssClass } from "../../CssClass.mjs";
@@ -54,4 +54,4 @@ async function confirm(options) {
54
54
  export {
55
55
  confirm
56
56
  };
57
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL01vZGFscy9Db25maXJtLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBwYWNrYWdlRG9jdW1lbnRhdGlvblxuICpcbiAqIFV0aWxpdHkgZm9yIGRpc3BsYXlpbmcgY29uZmlybSBtb2RhbHMgaW4gT2JzaWRpYW4uXG4gKlxuICogVGhpcyBtb2R1bGUgZXhwb3J0cyBhIGZ1bmN0aW9uIHRvIGRpc3BsYXkgYSBtb2RhbCB3aXRoIGEgbWVzc2FnZSBpbiBPYnNpZGlhbi4gVGhlIG1vZGFsIGluY2x1ZGVzIFwiT0tcIiBhbmQgXCJDYW5jZWxcIiBidXR0b25zIHRvIGNvbmZpcm0gb3IgY2FuY2VsIHRoZSBhY3Rpb24uXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBBcHAgfSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB7IEJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHR5cGUgeyBQcm9taXNlUmVzb2x2ZSB9IGZyb20gJy4uLy4uL0FzeW5jLnRzJztcblxuaW1wb3J0IHsgQ3NzQ2xhc3MgfSBmcm9tICcuLi8uLi9Dc3NDbGFzcy50cyc7XG5pbXBvcnQge1xuICBNb2RhbEJhc2UsXG4gIHNob3dNb2RhbFxufSBmcm9tICcuL01vZGFsQmFzZS50cyc7XG5cbi8qKlxuICogVGhlIG9wdGlvbnMgZm9yIHRoZSBjb25maXJtIG1vZGFsLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENvbmZpcm1PcHRpb25zIHtcbiAgLyoqXG4gICAqIFRoZSBPYnNpZGlhbiBhcHAgaW5zdGFuY2UuXG4gICAqL1xuICBhcHA6IEFwcDtcblxuICAvKipcbiAgICogVGhlIHRleHQgZm9yIHRoZSBcIkNhbmNlbFwiIGJ1dHRvbi5cbiAgICovXG4gIGNhbmNlbEJ1dHRvblRleHQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBDU1MgY2xhc3MgdG8gYXBwbHkgdG8gdGhlIG1vZGFsLlxuICAgKi9cbiAgY3NzQ2xhc3M/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBtZXNzYWdlIHRvIGRpc3BsYXkgaW4gdGhlIG1vZGFsLlxuICAgKi9cbiAgbWVzc2FnZTogRG9jdW1lbnRGcmFnbWVudCB8IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHRleHQgZm9yIHRoZSBcIk9LXCIgYnV0dG9uLlxuICAgKi9cbiAgb2tCdXR0b25UZXh0Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgdGl0bGUgb2YgdGhlIG1vZGFsLlxuICAgKi9cbiAgdGl0bGU/OiBEb2N1bWVudEZyYWdtZW50IHwgc3RyaW5nO1xufVxuXG5jbGFzcyBDb25maXJtTW9kYWwgZXh0ZW5kcyBNb2RhbEJhc2U8Ym9vbGVhbiwgQ29uZmlybU9wdGlvbnM+IHtcbiAgcHJpdmF0ZSBpc0NvbmZpcm1lZCA9IGZhbHNlO1xuICBwcml2YXRlIG9wdGlvbnM6IFJlcXVpcmVkPENvbmZpcm1PcHRpb25zPjtcblxuICBwdWJsaWMgY29uc3RydWN0b3Iob3B0aW9uczogQ29uZmlybU9wdGlvbnMsIHJlc29sdmU6IFByb21pc2VSZXNvbHZlPGJvb2xlYW4+KSB7XG4gICAgc3VwZXIob3B0aW9ucywgcmVzb2x2ZSwgQ3NzQ2xhc3MuQ29uZmlybU1vZGFsKTtcbiAgICBjb25zdCBERUZBVUxUX09QVElPTlM6IFJlcXVpcmVkPENvbmZpcm1PcHRpb25zPiA9IHtcbiAgICAgIGFwcDogb3B0aW9ucy5hcHAsXG4gICAgICBjYW5jZWxCdXR0b25UZXh0OiAnQ2FuY2VsJyxcbiAgICAgIGNzc0NsYXNzOiAnJyxcbiAgICAgIG1lc3NhZ2U6IG9wdGlvbnMubWVzc2FnZSxcbiAgICAgIG9rQnV0dG9uVGV4dDogJ09LJyxcbiAgICAgIHRpdGxlOiAnJ1xuICAgIH07XG4gICAgdGhpcy5vcHRpb25zID0geyAuLi5ERUZBVUxUX09QVElPTlMsIC4uLm9wdGlvbnMgfTtcbiAgfVxuXG4gIHB1YmxpYyBvdmVycmlkZSBvbkNsb3NlKCk6IHZvaWQge1xuICAgIHN1cGVyLm9uQ2xvc2UoKTtcbiAgICB0aGlzLnJlc29sdmUodGhpcy5pc0NvbmZpcm1lZCk7XG4gIH1cblxuICBwdWJsaWMgb3ZlcnJpZGUgb25PcGVuKCk6IHZvaWQge1xuICAgIHN1cGVyLm9uT3BlbigpO1xuICAgIHRoaXMudGl0bGVFbC5zZXRUZXh0KHRoaXMub3B0aW9ucy50aXRsZSk7XG4gICAgdGhpcy5jb250ZW50RWwuY3JlYXRlRWwoJ3AnLCB7IHRleHQ6IHRoaXMub3B0aW9ucy5tZXNzYWdlIH0pO1xuICAgIGNvbnN0IG9rQnV0dG9uID0gbmV3IEJ1dHRvbkNvbXBvbmVudCh0aGlzLmNvbnRlbnRFbCk7XG4gICAgb2tCdXR0b24uc2V0QnV0dG9uVGV4dCh0aGlzLm9wdGlvbnMub2tCdXR0b25UZXh0KTtcbiAgICBva0J1dHRvbi5zZXRDdGEoKTtcbiAgICBva0J1dHRvbi5vbkNsaWNrKCgpID0+IHtcbiAgICAgIHRoaXMuaXNDb25maXJtZWQgPSB0cnVlO1xuICAgICAgdGhpcy5jbG9zZSgpO1xuICAgIH0pO1xuICAgIG9rQnV0dG9uLnNldENsYXNzKENzc0NsYXNzLk9rQnV0dG9uKTtcblxuICAgIGNvbnN0IGNhbmNlbEJ1dHRvbiA9IG5ldyBCdXR0b25Db21wb25lbnQodGhpcy5jb250ZW50RWwpO1xuICAgIGNhbmNlbEJ1dHRvbi5zZXRCdXR0b25UZXh0KHRoaXMub3B0aW9ucy5jYW5jZWxCdXR0b25UZXh0KTtcbiAgICBjYW5jZWxCdXR0b24ub25DbGljayh0aGlzLmNsb3NlLmJpbmQodGhpcykpO1xuICAgIGNhbmNlbEJ1dHRvbi5zZXRDbGFzcyhDc3NDbGFzcy5DYW5jZWxCdXR0b24pO1xuICB9XG59XG5cbi8qKlxuICogRGlzcGxheXMgYW4gY29uZmlybSBtb2RhbCBpbiBPYnNpZGlhbiB3aXRoIGEgc3BlY2lmaWVkIG1lc3NhZ2UuXG4gKlxuICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgb3B0aW9ucyBmb3IgdGhlIGNvbmZpcm0gbW9kYWwuXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHdpdGggYSBib29sZWFuIGluZGljYXRpbmcgd2hldGhlciB0aGUgXCJPS1wiIGJ1dHRvbiB3YXMgY2xpY2tlZC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNvbmZpcm0ob3B0aW9uczogQ29uZmlybU9wdGlvbnMpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgcmV0dXJuIGF3YWl0IHNob3dNb2RhbDxib29sZWFuPigocmVzb2x2ZSkgPT4gbmV3IENvbmZpcm1Nb2RhbChvcHRpb25zLCByZXNvbHZlKSk7XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7O0FBVUEsU0FBUyx1QkFBdUI7QUFJaEMsU0FBUyxnQkFBZ0I7QUFDekI7QUFBQSxFQUNFO0FBQUEsRUFDQTtBQUFBLE9BQ0s7QUFxQ1AsTUFBTSxxQkFBcUIsVUFBbUM7QUFBQSxFQUNwRCxjQUFjO0FBQUEsRUFDZDtBQUFBLEVBRUQsWUFBWSxTQUF5QixTQUFrQztBQUM1RSxVQUFNLFNBQVMsU0FBUyxTQUFTLFlBQVk7QUFDN0MsVUFBTSxrQkFBNEM7QUFBQSxNQUNoRCxLQUFLLFFBQVE7QUFBQSxNQUNiLGtCQUFrQjtBQUFBLE1BQ2xCLFVBQVU7QUFBQSxNQUNWLFNBQVMsUUFBUTtBQUFBLE1BQ2pCLGNBQWM7QUFBQSxNQUNkLE9BQU87QUFBQSxJQUNUO0FBQ0EsU0FBSyxVQUFVLEVBQUUsR0FBRyxpQkFBaUIsR0FBRyxRQUFRO0FBQUEsRUFDbEQ7QUFBQSxFQUVnQixVQUFnQjtBQUM5QixVQUFNLFFBQVE7QUFDZCxTQUFLLFFBQVEsS0FBSyxXQUFXO0FBQUEsRUFDL0I7QUFBQSxFQUVnQixTQUFlO0FBQzdCLFVBQU0sT0FBTztBQUNiLFNBQUssUUFBUSxRQUFRLEtBQUssUUFBUSxLQUFLO0FBQ3ZDLFNBQUssVUFBVSxTQUFTLEtBQUssRUFBRSxNQUFNLEtBQUssUUFBUSxRQUFRLENBQUM7QUFDM0QsVUFBTSxXQUFXLElBQUksZ0JBQWdCLEtBQUssU0FBUztBQUNuRCxhQUFTLGNBQWMsS0FBSyxRQUFRLFlBQVk7QUFDaEQsYUFBUyxPQUFPO0FBQ2hCLGFBQVMsUUFBUSxNQUFNO0FBQ3JCLFdBQUssY0FBYztBQUNuQixXQUFLLE1BQU07QUFBQSxJQUNiLENBQUM7QUFDRCxhQUFTLFNBQVMsU0FBUyxRQUFRO0FBRW5DLFVBQU0sZUFBZSxJQUFJLGdCQUFnQixLQUFLLFNBQVM7QUFDdkQsaUJBQWEsY0FBYyxLQUFLLFFBQVEsZ0JBQWdCO0FBQ3hELGlCQUFhLFFBQVEsS0FBSyxNQUFNLEtBQUssSUFBSSxDQUFDO0FBQzFDLGlCQUFhLFNBQVMsU0FBUyxZQUFZO0FBQUEsRUFDN0M7QUFDRjtBQVFBLGVBQXNCLFFBQVEsU0FBMkM7QUFDdkUsU0FBTyxNQUFNLFVBQW1CLENBQUMsWUFBWSxJQUFJLGFBQWEsU0FBUyxPQUFPLENBQUM7QUFDakY7IiwKICAibmFtZXMiOiBbXQp9Cg==
57
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL01vZGFscy9Db25maXJtLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBwYWNrYWdlRG9jdW1lbnRhdGlvblxuICpcbiAqIFV0aWxpdHkgZm9yIGRpc3BsYXlpbmcgY29uZmlybSBtb2RhbHMgaW4gT2JzaWRpYW4uXG4gKlxuICogVGhpcyBtb2R1bGUgZXhwb3J0cyBhIGZ1bmN0aW9uIHRvIGRpc3BsYXkgYSBtb2RhbCB3aXRoIGEgbWVzc2FnZSBpbiBPYnNpZGlhbi4gVGhlIG1vZGFsIGluY2x1ZGVzIFwiT0tcIiBhbmQgXCJDYW5jZWxcIiBidXR0b25zIHRvIGNvbmZpcm0gb3IgY2FuY2VsIHRoZSBhY3Rpb24uXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBBcHAgfSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB7IEJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHR5cGUgeyBQcm9taXNlUmVzb2x2ZSB9IGZyb20gJy4uLy4uL0FzeW5jLnRzJztcblxuaW1wb3J0IHsgQ3NzQ2xhc3MgfSBmcm9tICcuLi8uLi9Dc3NDbGFzcy50cyc7XG5pbXBvcnQge1xuICBNb2RhbEJhc2UsXG4gIHNob3dNb2RhbFxufSBmcm9tICcuL01vZGFsQmFzZS50cyc7XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgdGhlIGNvbmZpcm0gbW9kYWwuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29uZmlybU9wdGlvbnMge1xuICAvKipcbiAgICogQW4gT2JzaWRpYW4gYXBwIGluc3RhbmNlLlxuICAgKi9cbiAgYXBwOiBBcHA7XG5cbiAgLyoqXG4gICAqIEEgdGV4dCBmb3IgdGhlIFwiQ2FuY2VsXCIgYnV0dG9uLlxuICAgKi9cbiAgY2FuY2VsQnV0dG9uVGV4dD86IHN0cmluZztcblxuICAvKipcbiAgICogQSBDU1MgY2xhc3MgdG8gYXBwbHkgdG8gdGhlIG1vZGFsLlxuICAgKi9cbiAgY3NzQ2xhc3M/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEEgbWVzc2FnZSB0byBkaXNwbGF5IGluIHRoZSBtb2RhbC5cbiAgICovXG4gIG1lc3NhZ2U6IERvY3VtZW50RnJhZ21lbnQgfCBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEEgdGV4dCBmb3IgdGhlIFwiT0tcIiBidXR0b24uXG4gICAqL1xuICBva0J1dHRvblRleHQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEEgdGl0bGUgb2YgdGhlIG1vZGFsLlxuICAgKi9cbiAgdGl0bGU/OiBEb2N1bWVudEZyYWdtZW50IHwgc3RyaW5nO1xufVxuXG5jbGFzcyBDb25maXJtTW9kYWwgZXh0ZW5kcyBNb2RhbEJhc2U8Ym9vbGVhbiwgQ29uZmlybU9wdGlvbnM+IHtcbiAgcHJpdmF0ZSBpc0NvbmZpcm1lZCA9IGZhbHNlO1xuICBwcml2YXRlIG9wdGlvbnM6IFJlcXVpcmVkPENvbmZpcm1PcHRpb25zPjtcblxuICBwdWJsaWMgY29uc3RydWN0b3Iob3B0aW9uczogQ29uZmlybU9wdGlvbnMsIHJlc29sdmU6IFByb21pc2VSZXNvbHZlPGJvb2xlYW4+KSB7XG4gICAgc3VwZXIob3B0aW9ucywgcmVzb2x2ZSwgQ3NzQ2xhc3MuQ29uZmlybU1vZGFsKTtcbiAgICBjb25zdCBERUZBVUxUX09QVElPTlM6IFJlcXVpcmVkPENvbmZpcm1PcHRpb25zPiA9IHtcbiAgICAgIGFwcDogb3B0aW9ucy5hcHAsXG4gICAgICBjYW5jZWxCdXR0b25UZXh0OiAnQ2FuY2VsJyxcbiAgICAgIGNzc0NsYXNzOiAnJyxcbiAgICAgIG1lc3NhZ2U6IG9wdGlvbnMubWVzc2FnZSxcbiAgICAgIG9rQnV0dG9uVGV4dDogJ09LJyxcbiAgICAgIHRpdGxlOiAnJ1xuICAgIH07XG4gICAgdGhpcy5vcHRpb25zID0geyAuLi5ERUZBVUxUX09QVElPTlMsIC4uLm9wdGlvbnMgfTtcbiAgfVxuXG4gIHB1YmxpYyBvdmVycmlkZSBvbkNsb3NlKCk6IHZvaWQge1xuICAgIHN1cGVyLm9uQ2xvc2UoKTtcbiAgICB0aGlzLnJlc29sdmUodGhpcy5pc0NvbmZpcm1lZCk7XG4gIH1cblxuICBwdWJsaWMgb3ZlcnJpZGUgb25PcGVuKCk6IHZvaWQge1xuICAgIHN1cGVyLm9uT3BlbigpO1xuICAgIHRoaXMudGl0bGVFbC5zZXRUZXh0KHRoaXMub3B0aW9ucy50aXRsZSk7XG4gICAgdGhpcy5jb250ZW50RWwuY3JlYXRlRWwoJ3AnLCB7IHRleHQ6IHRoaXMub3B0aW9ucy5tZXNzYWdlIH0pO1xuICAgIGNvbnN0IG9rQnV0dG9uID0gbmV3IEJ1dHRvbkNvbXBvbmVudCh0aGlzLmNvbnRlbnRFbCk7XG4gICAgb2tCdXR0b24uc2V0QnV0dG9uVGV4dCh0aGlzLm9wdGlvbnMub2tCdXR0b25UZXh0KTtcbiAgICBva0J1dHRvbi5zZXRDdGEoKTtcbiAgICBva0J1dHRvbi5vbkNsaWNrKCgpID0+IHtcbiAgICAgIHRoaXMuaXNDb25maXJtZWQgPSB0cnVlO1xuICAgICAgdGhpcy5jbG9zZSgpO1xuICAgIH0pO1xuICAgIG9rQnV0dG9uLnNldENsYXNzKENzc0NsYXNzLk9rQnV0dG9uKTtcblxuICAgIGNvbnN0IGNhbmNlbEJ1dHRvbiA9IG5ldyBCdXR0b25Db21wb25lbnQodGhpcy5jb250ZW50RWwpO1xuICAgIGNhbmNlbEJ1dHRvbi5zZXRCdXR0b25UZXh0KHRoaXMub3B0aW9ucy5jYW5jZWxCdXR0b25UZXh0KTtcbiAgICBjYW5jZWxCdXR0b24ub25DbGljayh0aGlzLmNsb3NlLmJpbmQodGhpcykpO1xuICAgIGNhbmNlbEJ1dHRvbi5zZXRDbGFzcyhDc3NDbGFzcy5DYW5jZWxCdXR0b24pO1xuICB9XG59XG5cbi8qKlxuICogRGlzcGxheXMgYW4gY29uZmlybSBtb2RhbCBpbiBPYnNpZGlhbiB3aXRoIGEgc3BlY2lmaWVkIG1lc3NhZ2UuXG4gKlxuICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgb3B0aW9ucyBmb3IgdGhlIGNvbmZpcm0gbW9kYWwuXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHdpdGggYSBib29sZWFuIGluZGljYXRpbmcgd2hldGhlciB0aGUgXCJPS1wiIGJ1dHRvbiB3YXMgY2xpY2tlZC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNvbmZpcm0ob3B0aW9uczogQ29uZmlybU9wdGlvbnMpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgcmV0dXJuIGF3YWl0IHNob3dNb2RhbDxib29sZWFuPigocmVzb2x2ZSkgPT4gbmV3IENvbmZpcm1Nb2RhbChvcHRpb25zLCByZXNvbHZlKSk7XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7O0FBVUEsU0FBUyx1QkFBdUI7QUFJaEMsU0FBUyxnQkFBZ0I7QUFDekI7QUFBQSxFQUNFO0FBQUEsRUFDQTtBQUFBLE9BQ0s7QUFxQ1AsTUFBTSxxQkFBcUIsVUFBbUM7QUFBQSxFQUNwRCxjQUFjO0FBQUEsRUFDZDtBQUFBLEVBRUQsWUFBWSxTQUF5QixTQUFrQztBQUM1RSxVQUFNLFNBQVMsU0FBUyxTQUFTLFlBQVk7QUFDN0MsVUFBTSxrQkFBNEM7QUFBQSxNQUNoRCxLQUFLLFFBQVE7QUFBQSxNQUNiLGtCQUFrQjtBQUFBLE1BQ2xCLFVBQVU7QUFBQSxNQUNWLFNBQVMsUUFBUTtBQUFBLE1BQ2pCLGNBQWM7QUFBQSxNQUNkLE9BQU87QUFBQSxJQUNUO0FBQ0EsU0FBSyxVQUFVLEVBQUUsR0FBRyxpQkFBaUIsR0FBRyxRQUFRO0FBQUEsRUFDbEQ7QUFBQSxFQUVnQixVQUFnQjtBQUM5QixVQUFNLFFBQVE7QUFDZCxTQUFLLFFBQVEsS0FBSyxXQUFXO0FBQUEsRUFDL0I7QUFBQSxFQUVnQixTQUFlO0FBQzdCLFVBQU0sT0FBTztBQUNiLFNBQUssUUFBUSxRQUFRLEtBQUssUUFBUSxLQUFLO0FBQ3ZDLFNBQUssVUFBVSxTQUFTLEtBQUssRUFBRSxNQUFNLEtBQUssUUFBUSxRQUFRLENBQUM7QUFDM0QsVUFBTSxXQUFXLElBQUksZ0JBQWdCLEtBQUssU0FBUztBQUNuRCxhQUFTLGNBQWMsS0FBSyxRQUFRLFlBQVk7QUFDaEQsYUFBUyxPQUFPO0FBQ2hCLGFBQVMsUUFBUSxNQUFNO0FBQ3JCLFdBQUssY0FBYztBQUNuQixXQUFLLE1BQU07QUFBQSxJQUNiLENBQUM7QUFDRCxhQUFTLFNBQVMsU0FBUyxRQUFRO0FBRW5DLFVBQU0sZUFBZSxJQUFJLGdCQUFnQixLQUFLLFNBQVM7QUFDdkQsaUJBQWEsY0FBYyxLQUFLLFFBQVEsZ0JBQWdCO0FBQ3hELGlCQUFhLFFBQVEsS0FBSyxNQUFNLEtBQUssSUFBSSxDQUFDO0FBQzFDLGlCQUFhLFNBQVMsU0FBUyxZQUFZO0FBQUEsRUFDN0M7QUFDRjtBQVFBLGVBQXNCLFFBQVEsU0FBMkM7QUFDdkUsU0FBTyxNQUFNLFVBQW1CLENBQUMsWUFBWSxJQUFJLGFBQWEsU0FBUyxPQUFPLENBQUM7QUFDakY7IiwKICAibmFtZXMiOiBbXQp9Cg==
@@ -7,15 +7,15 @@ import type { App } from 'obsidian';
7
7
  import { Modal } from 'obsidian';
8
8
  import type { PromiseResolve } from '../../Async.mjs';
9
9
  /**
10
- * The base options for a modal.
10
+ * Base options for a modal.
11
11
  */
12
12
  export interface ModalOptionsBase {
13
13
  /**
14
- * The application instance.
14
+ * An Obsidian app instance.
15
15
  */
16
16
  app: App;
17
17
  /**
18
- * The CSS class to apply to the modal.
18
+ * A CSS class to apply to the modal.
19
19
  */
20
20
  cssClass?: string;
21
21
  }
@@ -3,7 +3,7 @@ THIS IS A GENERATED/BUNDLED FILE BY ESBUILD
3
3
  if you want to view the source, please visit the github repository of this plugin
4
4
  */
5
5
 
6
- (function initEsm(){if(globalThis.process){return}const browserProcess={browser:true,cwd:__name(()=>"/","cwd"),env:{},platform:"android"};globalThis.process=browserProcess})();
6
+ (function initEsm(){if(globalThis.process){return}const browserProcess={browser:true,cwd(){return"/"},env:{},platform:"android"};globalThis.process=browserProcess})();
7
7
 
8
8
  import { Modal } from "obsidian";
9
9
  import { addPluginCssClasses } from "../Plugin/PluginContext.mjs";
@@ -34,4 +34,4 @@ export {
34
34
  ModalBase,
35
35
  showModal
36
36
  };
37
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL01vZGFscy9Nb2RhbEJhc2UudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQHBhY2thZ2VEb2N1bWVudGF0aW9uXG4gKlxuICogVGhpcyBtb2R1bGUgZXhwb3J0cyBhIGJhc2UgY2xhc3MgZm9yIGRpc3BsYXlpbmcgbW9kYWxzIGluIE9ic2lkaWFuLlxuICovXG5cbmltcG9ydCB0eXBlIHsgQXBwIH0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQgeyBNb2RhbCB9IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHR5cGUgeyBQcm9taXNlUmVzb2x2ZSB9IGZyb20gJy4uLy4uL0FzeW5jLnRzJztcblxuaW1wb3J0IHsgYWRkUGx1Z2luQ3NzQ2xhc3NlcyB9IGZyb20gJy4uL1BsdWdpbi9QbHVnaW5Db250ZXh0LnRzJztcblxuLyoqXG4gKiBUaGUgYmFzZSBvcHRpb25zIGZvciBhIG1vZGFsLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE1vZGFsT3B0aW9uc0Jhc2Uge1xuICAvKipcbiAgICogVGhlIGFwcGxpY2F0aW9uIGluc3RhbmNlLlxuICAgKi9cbiAgYXBwOiBBcHA7XG5cbiAgLyoqXG4gICAqIFRoZSBDU1MgY2xhc3MgdG8gYXBwbHkgdG8gdGhlIG1vZGFsLlxuICAgKi9cbiAgY3NzQ2xhc3M/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogQSBiYXNlIGNsYXNzIGZvciBkaXNwbGF5aW5nIG1vZGFscyBpbiBPYnNpZGlhbi5cbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIE1vZGFsQmFzZTxWYWx1ZSwgT3B0aW9ucyBleHRlbmRzIE1vZGFsT3B0aW9uc0Jhc2U+IGV4dGVuZHMgTW9kYWwge1xuICAvKipcbiAgICogQ3JlYXRlcyBhIG5ldyBtb2RhbC5cbiAgICpcbiAgICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgb3B0aW9ucy5cbiAgICogQHBhcmFtIHJlc29sdmUgLSBUaGUgcmVzb2x2ZSBmdW5jdGlvbi5cbiAgICogQHBhcmFtIG1vZGFsQ3NzQ2xhc3MgLSBUaGUgbW9kYWwgQ1NTIGNsYXNzLlxuICAgKi9cbiAgcHVibGljIGNvbnN0cnVjdG9yKG9wdGlvbnM6IE9wdGlvbnMsIHByb3RlY3RlZCByZXNvbHZlOiBQcm9taXNlUmVzb2x2ZTxWYWx1ZT4sIG1vZGFsQ3NzQ2xhc3M6IHN0cmluZykge1xuICAgIHN1cGVyKG9wdGlvbnMuYXBwKTtcbiAgICBhZGRQbHVnaW5Dc3NDbGFzc2VzKHRoaXMuY29udGFpbmVyRWwsIG1vZGFsQ3NzQ2xhc3MpO1xuICAgIGlmIChvcHRpb25zLmNzc0NsYXNzKSB7XG4gICAgICB0aGlzLmNvbnRhaW5lckVsLmFkZENsYXNzKG9wdGlvbnMuY3NzQ2xhc3MpO1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIERpc3BsYXlzIGEgbW9kYWwgaW4gT2JzaWRpYW4uXG4gKlxuICogQHBhcmFtIG1vZGFsQ3JlYXRvciAtIEEgZnVuY3Rpb24gdGhhdCBjcmVhdGVzIGEgbW9kYWwuXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIG1vZGFsIGlzIGNsb3NlZC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHNob3dNb2RhbDxUPihtb2RhbENyZWF0b3I6IChyZXNvbHZlOiBQcm9taXNlUmVzb2x2ZTxUPikgPT4gTW9kYWwpOiBQcm9taXNlPFQ+IHtcbiAgcmV0dXJuIGF3YWl0IG5ldyBQcm9taXNlPFQ+KChyZXNvbHZlKSA9PiB7XG4gICAgY29uc3QgbW9kYWwgPSBtb2RhbENyZWF0b3IocmVzb2x2ZSk7XG4gICAgbW9kYWwub3BlbigpO1xuICB9KTtcbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7QUFRQSxTQUFTLGFBQWE7QUFJdEIsU0FBUywyQkFBMkI7QUFvQjdCLE1BQWUsa0JBQTJELE1BQU07QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBUTlFLFlBQVksU0FBNEIsU0FBZ0MsZUFBdUI7QUFDcEcsVUFBTSxRQUFRLEdBQUc7QUFENEI7QUFFN0Msd0JBQW9CLEtBQUssYUFBYSxhQUFhO0FBQ25ELFFBQUksUUFBUSxVQUFVO0FBQ3BCLFdBQUssWUFBWSxTQUFTLFFBQVEsUUFBUTtBQUFBLElBQzVDO0FBQUEsRUFDRjtBQUNGO0FBUUEsZUFBc0IsVUFBYSxjQUFpRTtBQUNsRyxTQUFPLE1BQU0sSUFBSSxRQUFXLENBQUMsWUFBWTtBQUN2QyxVQUFNLFFBQVEsYUFBYSxPQUFPO0FBQ2xDLFVBQU0sS0FBSztBQUFBLEVBQ2IsQ0FBQztBQUNIOyIsCiAgIm5hbWVzIjogW10KfQo=
37
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL01vZGFscy9Nb2RhbEJhc2UudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQHBhY2thZ2VEb2N1bWVudGF0aW9uXG4gKlxuICogVGhpcyBtb2R1bGUgZXhwb3J0cyBhIGJhc2UgY2xhc3MgZm9yIGRpc3BsYXlpbmcgbW9kYWxzIGluIE9ic2lkaWFuLlxuICovXG5cbmltcG9ydCB0eXBlIHsgQXBwIH0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQgeyBNb2RhbCB9IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHR5cGUgeyBQcm9taXNlUmVzb2x2ZSB9IGZyb20gJy4uLy4uL0FzeW5jLnRzJztcblxuaW1wb3J0IHsgYWRkUGx1Z2luQ3NzQ2xhc3NlcyB9IGZyb20gJy4uL1BsdWdpbi9QbHVnaW5Db250ZXh0LnRzJztcblxuLyoqXG4gKiBCYXNlIG9wdGlvbnMgZm9yIGEgbW9kYWwuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTW9kYWxPcHRpb25zQmFzZSB7XG4gIC8qKlxuICAgKiBBbiBPYnNpZGlhbiBhcHAgaW5zdGFuY2UuXG4gICAqL1xuICBhcHA6IEFwcDtcblxuICAvKipcbiAgICogQSBDU1MgY2xhc3MgdG8gYXBwbHkgdG8gdGhlIG1vZGFsLlxuICAgKi9cbiAgY3NzQ2xhc3M/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogQSBiYXNlIGNsYXNzIGZvciBkaXNwbGF5aW5nIG1vZGFscyBpbiBPYnNpZGlhbi5cbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIE1vZGFsQmFzZTxWYWx1ZSwgT3B0aW9ucyBleHRlbmRzIE1vZGFsT3B0aW9uc0Jhc2U+IGV4dGVuZHMgTW9kYWwge1xuICAvKipcbiAgICogQ3JlYXRlcyBhIG5ldyBtb2RhbC5cbiAgICpcbiAgICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgb3B0aW9ucy5cbiAgICogQHBhcmFtIHJlc29sdmUgLSBUaGUgcmVzb2x2ZSBmdW5jdGlvbi5cbiAgICogQHBhcmFtIG1vZGFsQ3NzQ2xhc3MgLSBUaGUgbW9kYWwgQ1NTIGNsYXNzLlxuICAgKi9cbiAgcHVibGljIGNvbnN0cnVjdG9yKG9wdGlvbnM6IE9wdGlvbnMsIHByb3RlY3RlZCByZXNvbHZlOiBQcm9taXNlUmVzb2x2ZTxWYWx1ZT4sIG1vZGFsQ3NzQ2xhc3M6IHN0cmluZykge1xuICAgIHN1cGVyKG9wdGlvbnMuYXBwKTtcbiAgICBhZGRQbHVnaW5Dc3NDbGFzc2VzKHRoaXMuY29udGFpbmVyRWwsIG1vZGFsQ3NzQ2xhc3MpO1xuICAgIGlmIChvcHRpb25zLmNzc0NsYXNzKSB7XG4gICAgICB0aGlzLmNvbnRhaW5lckVsLmFkZENsYXNzKG9wdGlvbnMuY3NzQ2xhc3MpO1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIERpc3BsYXlzIGEgbW9kYWwgaW4gT2JzaWRpYW4uXG4gKlxuICogQHBhcmFtIG1vZGFsQ3JlYXRvciAtIEEgZnVuY3Rpb24gdGhhdCBjcmVhdGVzIGEgbW9kYWwuXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIG1vZGFsIGlzIGNsb3NlZC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHNob3dNb2RhbDxUPihtb2RhbENyZWF0b3I6IChyZXNvbHZlOiBQcm9taXNlUmVzb2x2ZTxUPikgPT4gTW9kYWwpOiBQcm9taXNlPFQ+IHtcbiAgcmV0dXJuIGF3YWl0IG5ldyBQcm9taXNlPFQ+KChyZXNvbHZlKSA9PiB7XG4gICAgY29uc3QgbW9kYWwgPSBtb2RhbENyZWF0b3IocmVzb2x2ZSk7XG4gICAgbW9kYWwub3BlbigpO1xuICB9KTtcbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7QUFRQSxTQUFTLGFBQWE7QUFJdEIsU0FBUywyQkFBMkI7QUFvQjdCLE1BQWUsa0JBQTJELE1BQU07QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBUTlFLFlBQVksU0FBNEIsU0FBZ0MsZUFBdUI7QUFDcEcsVUFBTSxRQUFRLEdBQUc7QUFENEI7QUFFN0Msd0JBQW9CLEtBQUssYUFBYSxhQUFhO0FBQ25ELFFBQUksUUFBUSxVQUFVO0FBQ3BCLFdBQUssWUFBWSxTQUFTLFFBQVEsUUFBUTtBQUFBLElBQzVDO0FBQUEsRUFDRjtBQUNGO0FBUUEsZUFBc0IsVUFBYSxjQUFpRTtBQUNsRyxTQUFPLE1BQU0sSUFBSSxRQUFXLENBQUMsWUFBWTtBQUN2QyxVQUFNLFFBQVEsYUFBYSxPQUFPO0FBQ2xDLFVBQU0sS0FBSztBQUFBLEVBQ2IsQ0FBQztBQUNIOyIsCiAgIm5hbWVzIjogW10KfQo=
@@ -9,31 +9,31 @@ import type { App } from 'obsidian';
9
9
  import type { Promisable } from 'type-fest';
10
10
  import type { MaybeReturn } from '../../Type.mjs';
11
11
  /**
12
- * The options for the prompt modal.
12
+ * Options for the prompt modal.
13
13
  */
14
14
  export interface PromptOptions {
15
15
  /**
16
- * The Obsidian app instance.
16
+ * An Obsidian app instance.
17
17
  */
18
18
  app: App;
19
19
  /**
20
- * The text for the "Cancel" button.
20
+ * A text for the "Cancel" button.
21
21
  */
22
22
  cancelButtonText?: string;
23
23
  /**
24
- * The default value to pre-fill the input field.
24
+ * A default value to pre-fill the input field.
25
25
  */
26
26
  defaultValue?: string;
27
27
  /**
28
- * The text for the "OK" button.
28
+ * A text for the "OK" button.
29
29
  */
30
30
  okButtonText?: string;
31
31
  /**
32
- * The placeholder text for the input field.
32
+ * A placeholder text for the input field.
33
33
  */
34
34
  placeholder?: string;
35
35
  /**
36
- * The title of the modal.
36
+ * A title of the modal.
37
37
  */
38
38
  title?: DocumentFragment | string;
39
39
  /**