obsidian-dev-utils 55.4.1 → 56.0.1

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 (542) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/dist/lib/cjs/abort-controller.cjs +6 -4
  3. package/dist/lib/cjs/array.cjs +5 -3
  4. package/dist/lib/cjs/async-events.cjs +7 -5
  5. package/dist/lib/cjs/async.cjs +6 -4
  6. package/dist/lib/cjs/blob.cjs +6 -4
  7. package/dist/lib/cjs/codemirror/index.cjs +5 -3
  8. package/dist/lib/cjs/codemirror/state-field-spec.cjs +5 -3
  9. package/dist/lib/cjs/css-class.cjs +5 -3
  10. package/dist/lib/cjs/debug-controller.cjs +5 -3
  11. package/dist/lib/cjs/debug.cjs +5 -3
  12. package/dist/lib/cjs/enum.cjs +5 -3
  13. package/dist/lib/cjs/error.cjs +5 -3
  14. package/dist/lib/cjs/function.cjs +5 -3
  15. package/dist/lib/cjs/html-element.cjs +18 -16
  16. package/dist/lib/cjs/index.cjs +5 -3
  17. package/dist/lib/cjs/library.cjs +6 -4
  18. package/dist/lib/cjs/object-utils.cjs +5 -3
  19. package/dist/lib/cjs/obsidian/@types/i18next.d.cts +3 -3
  20. package/dist/lib/cjs/obsidian/app.cjs +5 -3
  21. package/dist/lib/cjs/obsidian/async-with-notice.cjs +8 -6
  22. package/dist/lib/cjs/obsidian/attachment-path.cjs +5 -3
  23. package/dist/lib/cjs/obsidian/backlink.cjs +5 -3
  24. package/dist/lib/cjs/obsidian/callout.cjs +5 -3
  25. package/dist/lib/cjs/obsidian/code-block-markdown-information.cjs +5 -3
  26. package/dist/lib/cjs/obsidian/command-handlers/abstract-file-command-handler.cjs +355 -0
  27. package/dist/lib/cjs/obsidian/command-handlers/abstract-file-command-handler.d.cts +178 -0
  28. package/dist/lib/cjs/obsidian/{commands/index.cjs → command-handlers/app-active-file-provider.cjs} +29 -34
  29. package/dist/lib/cjs/obsidian/command-handlers/app-active-file-provider.d.cts +25 -0
  30. package/dist/lib/cjs/obsidian/command-handlers/app-menu-event-registrar.cjs +173 -0
  31. package/dist/lib/cjs/obsidian/command-handlers/app-menu-event-registrar.d.cts +41 -0
  32. package/dist/lib/cjs/obsidian/command-handlers/command-handler-component.cjs +164 -0
  33. package/dist/lib/cjs/obsidian/command-handlers/command-handler-component.d.cts +26 -0
  34. package/dist/lib/cjs/obsidian/command-handlers/command-handler.cjs +174 -0
  35. package/dist/lib/cjs/obsidian/command-handlers/command-handler.d.cts +143 -0
  36. package/dist/lib/cjs/obsidian/command-handlers/editor-command-handler.cjs +269 -0
  37. package/dist/lib/cjs/obsidian/command-handlers/editor-command-handler.d.cts +114 -0
  38. package/dist/lib/cjs/obsidian/command-handlers/file-command-handler.cjs +261 -0
  39. package/dist/lib/cjs/obsidian/command-handlers/file-command-handler.d.cts +112 -0
  40. package/dist/lib/cjs/obsidian/command-handlers/folder-command-handler.cjs +261 -0
  41. package/dist/lib/cjs/obsidian/command-handlers/folder-command-handler.d.cts +112 -0
  42. package/dist/lib/cjs/obsidian/command-handlers/global-command-handler.cjs +177 -0
  43. package/dist/lib/cjs/obsidian/command-handlers/global-command-handler.d.cts +38 -0
  44. package/dist/lib/cjs/obsidian/command-handlers/index.cjs +170 -0
  45. package/dist/lib/cjs/obsidian/command-handlers/index.d.cts +9 -0
  46. package/dist/lib/cjs/obsidian/components/all-windows-event-handler.cjs +6 -4
  47. package/dist/lib/cjs/obsidian/components/async-component.cjs +164 -0
  48. package/dist/lib/cjs/obsidian/components/async-component.d.cts +28 -0
  49. package/dist/lib/cjs/obsidian/components/async-events-component.cjs +5 -3
  50. package/dist/lib/cjs/obsidian/components/index.cjs +8 -3
  51. package/dist/lib/cjs/obsidian/components/index.d.cts +1 -0
  52. package/dist/lib/cjs/obsidian/components/setting-components/checkbox-component.cjs +5 -3
  53. package/dist/lib/cjs/obsidian/components/setting-components/code-highlighter-component.cjs +5 -3
  54. package/dist/lib/cjs/obsidian/components/setting-components/date-component.cjs +5 -3
  55. package/dist/lib/cjs/obsidian/components/setting-components/date-time-component.cjs +5 -3
  56. package/dist/lib/cjs/obsidian/components/setting-components/email-component.cjs +5 -3
  57. package/dist/lib/cjs/obsidian/components/setting-components/file-component.cjs +5 -3
  58. package/dist/lib/cjs/obsidian/components/setting-components/index.cjs +5 -3
  59. package/dist/lib/cjs/obsidian/components/setting-components/month-component.cjs +5 -3
  60. package/dist/lib/cjs/obsidian/components/setting-components/multiple-dropdown-component.cjs +5 -3
  61. package/dist/lib/cjs/obsidian/components/setting-components/multiple-email-component.cjs +5 -3
  62. package/dist/lib/cjs/obsidian/components/setting-components/multiple-file-component.cjs +5 -3
  63. package/dist/lib/cjs/obsidian/components/setting-components/multiple-text-component.cjs +5 -3
  64. package/dist/lib/cjs/obsidian/components/setting-components/number-component.cjs +5 -3
  65. package/dist/lib/cjs/obsidian/components/setting-components/password-component.cjs +5 -3
  66. package/dist/lib/cjs/obsidian/components/setting-components/setting-component-wrapper.cjs +5 -3
  67. package/dist/lib/cjs/obsidian/components/setting-components/telephone-component.cjs +5 -3
  68. package/dist/lib/cjs/obsidian/components/setting-components/text-based-component.cjs +5 -3
  69. package/dist/lib/cjs/obsidian/components/setting-components/time-component.cjs +5 -3
  70. package/dist/lib/cjs/obsidian/components/setting-components/tri-state-checkbox-component.cjs +5 -3
  71. package/dist/lib/cjs/obsidian/components/setting-components/typed-dropdown-component.cjs +5 -3
  72. package/dist/lib/cjs/obsidian/components/setting-components/typed-multiple-dropdown-component.cjs +5 -3
  73. package/dist/lib/cjs/obsidian/components/setting-components/typed-range-text-component.cjs +5 -3
  74. package/dist/lib/cjs/obsidian/components/setting-components/typed-text-component.cjs +5 -3
  75. package/dist/lib/cjs/obsidian/components/setting-components/url-component.cjs +5 -3
  76. package/dist/lib/cjs/obsidian/components/setting-components/validator-component.cjs +7 -5
  77. package/dist/lib/cjs/obsidian/components/setting-components/value-component-with-change-tracking.cjs +5 -3
  78. package/dist/lib/cjs/obsidian/components/setting-components/week-component.cjs +5 -3
  79. package/dist/lib/cjs/obsidian/constructors/getDomEventsHandlersConstructor.cjs +5 -3
  80. package/dist/lib/cjs/obsidian/constructors/index.cjs +5 -3
  81. package/dist/lib/cjs/obsidian/dataview-link.cjs +5 -3
  82. package/dist/lib/cjs/obsidian/dataview.cjs +6 -4
  83. package/dist/lib/cjs/obsidian/editor.cjs +5 -3
  84. package/dist/lib/cjs/obsidian/file-change.cjs +5 -3
  85. package/dist/lib/cjs/obsidian/file-manager.cjs +5 -3
  86. package/dist/lib/cjs/obsidian/file-system.cjs +5 -3
  87. package/dist/lib/cjs/obsidian/frontmatter-link-cache-with-offsets.cjs +5 -3
  88. package/dist/lib/cjs/obsidian/frontmatter.cjs +5 -3
  89. package/dist/lib/cjs/obsidian/i18n/{custom-type-options-base.cjs → custom-type-options.cjs} +7 -5
  90. package/dist/lib/cjs/obsidian/i18n/custom-type-options.d.cts +37 -0
  91. package/dist/lib/cjs/obsidian/{plugin/plugin-settings-wrapper.cjs → i18n/default-translations.cjs} +8 -5
  92. package/dist/lib/cjs/obsidian/i18n/default-translations.d.cts +14 -0
  93. package/dist/lib/cjs/obsidian/i18n/i18n.cjs +5 -3
  94. package/dist/lib/cjs/obsidian/i18n/i18n.d.cts +2 -13
  95. package/dist/lib/cjs/obsidian/i18n/index.cjs +11 -9
  96. package/dist/lib/cjs/obsidian/i18n/index.d.cts +2 -2
  97. package/dist/lib/cjs/obsidian/i18n/locales/en.cjs +5 -3
  98. package/dist/lib/cjs/obsidian/i18n/locales/index.cjs +5 -3
  99. package/dist/lib/cjs/obsidian/i18n/locales/translations-map.cjs +5 -3
  100. package/dist/lib/cjs/obsidian/i18n/locales/translations-map.d.cts +1 -2
  101. package/dist/lib/cjs/obsidian/index.cjs +8 -6
  102. package/dist/lib/cjs/obsidian/index.d.cts +1 -1
  103. package/dist/lib/cjs/obsidian/is-in-obsidian.cjs +5 -3
  104. package/dist/lib/cjs/obsidian/link.cjs +5 -3
  105. package/dist/lib/cjs/obsidian/logger.cjs +5 -3
  106. package/dist/lib/cjs/obsidian/loop.cjs +5 -3
  107. package/dist/lib/cjs/obsidian/markdown-code-block-processor.cjs +5 -3
  108. package/dist/lib/cjs/obsidian/markdown-view.cjs +5 -3
  109. package/dist/lib/cjs/obsidian/markdown.cjs +5 -3
  110. package/dist/lib/cjs/obsidian/metadata-cache.cjs +5 -3
  111. package/dist/lib/cjs/obsidian/modals/alert.cjs +8 -6
  112. package/dist/lib/cjs/obsidian/modals/confirm.cjs +8 -6
  113. package/dist/lib/cjs/obsidian/modals/index.cjs +8 -6
  114. package/dist/lib/cjs/obsidian/modals/index.d.cts +1 -1
  115. package/dist/lib/cjs/obsidian/modals/{modal-base.cjs → modal.cjs} +8 -6
  116. package/dist/lib/cjs/obsidian/modals/prompt.cjs +8 -6
  117. package/dist/lib/cjs/obsidian/modals/select-item.cjs +7 -5
  118. package/dist/lib/cjs/obsidian/monkey-around.cjs +5 -3
  119. package/dist/lib/cjs/obsidian/obsidian-settings.cjs +5 -3
  120. package/dist/lib/cjs/obsidian/pdf.cjs +8 -6
  121. package/dist/lib/cjs/obsidian/plugin/components/abort-signal-component.cjs +162 -0
  122. package/dist/lib/cjs/obsidian/plugin/components/abort-signal-component.d.cts +27 -0
  123. package/dist/lib/cjs/obsidian/plugin/components/async-error-handler-component.cjs +165 -0
  124. package/dist/lib/cjs/obsidian/plugin/components/async-error-handler-component.d.cts +29 -0
  125. package/dist/lib/cjs/obsidian/{commands/non-editor-command-base.cjs → plugin/components/console-debug-component.cjs} +26 -20
  126. package/dist/lib/cjs/obsidian/plugin/components/console-debug-component.d.cts +29 -0
  127. package/dist/lib/cjs/obsidian/{i18n/default-translations-base.cjs → plugin/components/i18n-component.cjs} +39 -6
  128. package/dist/lib/cjs/obsidian/plugin/components/i18n-component.d.cts +23 -0
  129. package/dist/lib/cjs/obsidian/plugin/components/index.cjs +170 -0
  130. package/dist/lib/cjs/obsidian/plugin/components/index.d.cts +9 -0
  131. package/dist/lib/cjs/obsidian/plugin/components/lifecycle-events-component.cjs +207 -0
  132. package/dist/lib/cjs/obsidian/plugin/components/lifecycle-events-component.d.cts +59 -0
  133. package/dist/lib/cjs/obsidian/plugin/components/plugin-context-component.cjs +162 -0
  134. package/dist/lib/cjs/obsidian/plugin/components/plugin-context-component.d.cts +25 -0
  135. package/dist/lib/cjs/obsidian/plugin/components/plugin-notice-component.cjs +161 -0
  136. package/dist/lib/cjs/obsidian/plugin/components/plugin-notice-component.d.cts +25 -0
  137. package/dist/lib/cjs/obsidian/plugin/components/plugin-settings-component.cjs +566 -0
  138. package/dist/lib/cjs/obsidian/plugin/components/plugin-settings-component.d.cts +302 -0
  139. package/dist/lib/cjs/obsidian/plugin/components/plugin-settings-tab-component.cjs +166 -0
  140. package/dist/lib/cjs/obsidian/plugin/components/plugin-settings-tab-component.d.cts +28 -0
  141. package/dist/lib/cjs/obsidian/plugin/index.cjs +11 -18
  142. package/dist/lib/cjs/obsidian/plugin/index.d.cts +2 -5
  143. package/dist/lib/cjs/obsidian/plugin/obsidian-plugin-repo-paths.cjs +5 -3
  144. package/dist/lib/cjs/obsidian/plugin/path-settings.cjs +5 -3
  145. package/dist/lib/cjs/obsidian/plugin/plugin-context.cjs +16 -7
  146. package/dist/lib/cjs/obsidian/plugin/plugin-context.d.cts +3 -2
  147. package/dist/lib/cjs/obsidian/plugin/plugin-id.cjs +5 -3
  148. package/dist/lib/cjs/obsidian/plugin/plugin-settings-tab.cjs +412 -0
  149. package/dist/lib/cjs/obsidian/plugin/{plugin-settings-tab-base.d.cts → plugin-settings-tab.d.cts} +29 -11
  150. package/dist/lib/cjs/obsidian/plugin/plugin.cjs +135 -3
  151. package/dist/lib/cjs/obsidian/plugin/plugin.d.cts +106 -5
  152. package/dist/lib/cjs/obsidian/queue.cjs +5 -3
  153. package/dist/lib/cjs/obsidian/react/app-context.cjs +5 -3
  154. package/dist/lib/cjs/obsidian/react/index.cjs +5 -3
  155. package/dist/lib/cjs/obsidian/reference.cjs +5 -3
  156. package/dist/lib/cjs/obsidian/rename-delete-handler.cjs +5 -3
  157. package/dist/lib/cjs/obsidian/resource-url.cjs +5 -3
  158. package/dist/lib/cjs/obsidian/setting-ex.cjs +5 -3
  159. package/dist/lib/cjs/obsidian/setting-group-ex.cjs +5 -3
  160. package/dist/lib/cjs/obsidian/validation.cjs +5 -3
  161. package/dist/lib/cjs/obsidian/vault-delete.cjs +5 -3
  162. package/dist/lib/cjs/obsidian/vault.cjs +5 -3
  163. package/dist/lib/cjs/obsidian/workspace.cjs +5 -3
  164. package/dist/lib/cjs/path.cjs +5 -3
  165. package/dist/lib/cjs/reg-exp.cjs +5 -3
  166. package/dist/lib/cjs/script-utils/build.cjs +5 -3
  167. package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/change-extension-plugin.cjs +5 -3
  168. package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/copy-to-obsidian-plugins-folder-plugin.cjs +5 -3
  169. package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/custom-esbuild-options-plugin.cjs +5 -3
  170. package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/dependency.cjs +6 -4
  171. package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/fix-esm-plugin.cjs +5 -3
  172. package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/fix-source-maps-plugin.cjs +5 -3
  173. package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/index.cjs +5 -3
  174. package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/obsidian-plugin-builder.cjs +5 -3
  175. package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/preprocess-plugin.cjs +8 -6
  176. package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/rename-css-plugin.cjs +5 -3
  177. package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/svelte-wrapper-plugin.cjs +5 -3
  178. package/dist/lib/cjs/script-utils/bundlers/esbuild.cjs +5 -3
  179. package/dist/lib/cjs/script-utils/bundlers/index.cjs +5 -3
  180. package/dist/lib/cjs/script-utils/cli-utils.cjs +5 -3
  181. package/dist/lib/cjs/script-utils/code-generator.cjs +5 -3
  182. package/dist/lib/cjs/script-utils/commitlint-config.cjs +5 -3
  183. package/dist/lib/cjs/script-utils/exec.cjs +5 -3
  184. package/dist/lib/cjs/script-utils/formatters/dprint.cjs +6 -4
  185. package/dist/lib/cjs/script-utils/formatters/index.cjs +5 -3
  186. package/dist/lib/cjs/script-utils/fs.cjs +5 -3
  187. package/dist/lib/cjs/script-utils/index.cjs +5 -3
  188. package/dist/lib/cjs/script-utils/json.cjs +5 -3
  189. package/dist/lib/cjs/script-utils/linters/cspell.cjs +5 -3
  190. package/dist/lib/cjs/script-utils/linters/eslint-config.cjs +6 -4
  191. package/dist/lib/cjs/script-utils/linters/eslint-rules/index.cjs +5 -3
  192. package/dist/lib/cjs/script-utils/linters/eslint-rules/no-async-callback-to-unsafe-return.cjs +5 -3
  193. package/dist/lib/cjs/script-utils/linters/eslint-rules/no-used-underscore-variables.cjs +5 -3
  194. package/dist/lib/cjs/script-utils/linters/eslint-rules/obsidian-dev-utils-plugin.cjs +5 -3
  195. package/dist/lib/cjs/script-utils/linters/eslint-rules/rule-tester-helper.cjs +5 -3
  196. package/dist/lib/cjs/script-utils/linters/eslint.cjs +6 -4
  197. package/dist/lib/cjs/script-utils/linters/index.cjs +5 -3
  198. package/dist/lib/cjs/script-utils/linters/markdownlint-cli2-config.cjs +5 -3
  199. package/dist/lib/cjs/script-utils/linters/markdownlint.cjs +9 -5
  200. package/dist/lib/cjs/script-utils/nano-staged-config.cjs +5 -3
  201. package/dist/lib/cjs/script-utils/npm-publish.cjs +5 -3
  202. package/dist/lib/cjs/script-utils/npm-run.cjs +5 -3
  203. package/dist/lib/cjs/script-utils/npm.cjs +5 -3
  204. package/dist/lib/cjs/script-utils/obsidian-dev-utils-repo-paths.cjs +5 -3
  205. package/dist/lib/cjs/script-utils/root.cjs +5 -3
  206. package/dist/lib/cjs/script-utils/test-runners/index.cjs +5 -3
  207. package/dist/lib/cjs/script-utils/test-runners/vitest.cjs +5 -3
  208. package/dist/lib/cjs/script-utils/version.cjs +5 -3
  209. package/dist/lib/cjs/strict-proxy.cjs +5 -3
  210. package/dist/lib/cjs/string.cjs +5 -3
  211. package/dist/lib/cjs/transformers/date-transformer.cjs +5 -3
  212. package/dist/lib/cjs/transformers/duration-transformer.cjs +5 -3
  213. package/dist/lib/cjs/transformers/group-transformer.cjs +5 -3
  214. package/dist/lib/cjs/transformers/index.cjs +5 -3
  215. package/dist/lib/cjs/transformers/map-transformer.cjs +5 -3
  216. package/dist/lib/cjs/transformers/set-transformer.cjs +5 -3
  217. package/dist/lib/cjs/transformers/skip-private-property-transformer.cjs +5 -3
  218. package/dist/lib/cjs/transformers/transformer.cjs +5 -3
  219. package/dist/lib/cjs/transformers/two-way-map-transformer.cjs +5 -3
  220. package/dist/lib/cjs/transformers/typed-transformer.cjs +5 -3
  221. package/dist/lib/cjs/two-way-map.cjs +5 -3
  222. package/dist/lib/cjs/type-guards.cjs +5 -3
  223. package/dist/lib/cjs/type.cjs +5 -3
  224. package/dist/lib/cjs/url.cjs +5 -3
  225. package/dist/lib/cjs/value-provider.cjs +5 -3
  226. package/dist/lib/esm/abort-controller.mjs +4 -2
  227. package/dist/lib/esm/array.mjs +3 -1
  228. package/dist/lib/esm/async-events.mjs +5 -3
  229. package/dist/lib/esm/async.mjs +4 -2
  230. package/dist/lib/esm/blob.mjs +4 -2
  231. package/dist/lib/esm/codemirror/index.mjs +3 -1
  232. package/dist/lib/esm/codemirror/state-field-spec.mjs +2 -0
  233. package/dist/lib/esm/css-class.mjs +3 -1
  234. package/dist/lib/esm/debug-controller.mjs +2 -0
  235. package/dist/lib/esm/debug.mjs +3 -1
  236. package/dist/lib/esm/enum.mjs +3 -1
  237. package/dist/lib/esm/error.mjs +3 -1
  238. package/dist/lib/esm/function.mjs +3 -1
  239. package/dist/lib/esm/html-element.mjs +16 -14
  240. package/dist/lib/esm/index.mjs +3 -1
  241. package/dist/lib/esm/library.mjs +4 -2
  242. package/dist/lib/esm/object-utils.mjs +3 -1
  243. package/dist/lib/esm/obsidian/@types/i18next.d.mts +3 -3
  244. package/dist/lib/esm/obsidian/app.mjs +3 -1
  245. package/dist/lib/esm/obsidian/async-with-notice.mjs +6 -4
  246. package/dist/lib/esm/obsidian/attachment-path.mjs +3 -1
  247. package/dist/lib/esm/obsidian/backlink.mjs +3 -1
  248. package/dist/lib/esm/obsidian/callout.mjs +3 -1
  249. package/dist/lib/esm/obsidian/code-block-markdown-information.mjs +2 -0
  250. package/dist/lib/esm/obsidian/command-handlers/abstract-file-command-handler.d.mts +178 -0
  251. package/dist/lib/esm/obsidian/command-handlers/abstract-file-command-handler.mjs +247 -0
  252. package/dist/lib/esm/obsidian/command-handlers/app-active-file-provider.d.mts +25 -0
  253. package/dist/lib/esm/obsidian/command-handlers/app-active-file-provider.mjs +46 -0
  254. package/dist/lib/esm/obsidian/command-handlers/app-menu-event-registrar.d.mts +41 -0
  255. package/dist/lib/esm/obsidian/command-handlers/app-menu-event-registrar.mjs +65 -0
  256. package/dist/lib/esm/obsidian/command-handlers/command-handler-component.d.mts +26 -0
  257. package/dist/lib/esm/obsidian/command-handlers/command-handler-component.mjs +56 -0
  258. package/dist/lib/esm/obsidian/command-handlers/command-handler.d.mts +143 -0
  259. package/dist/lib/esm/obsidian/command-handlers/command-handler.mjs +66 -0
  260. package/dist/lib/esm/obsidian/command-handlers/editor-command-handler.d.mts +114 -0
  261. package/dist/lib/esm/obsidian/command-handlers/editor-command-handler.mjs +161 -0
  262. package/dist/lib/esm/obsidian/command-handlers/file-command-handler.d.mts +112 -0
  263. package/dist/lib/esm/obsidian/command-handlers/file-command-handler.mjs +157 -0
  264. package/dist/lib/esm/obsidian/command-handlers/folder-command-handler.d.mts +112 -0
  265. package/dist/lib/esm/obsidian/command-handlers/folder-command-handler.mjs +157 -0
  266. package/dist/lib/esm/obsidian/command-handlers/global-command-handler.d.mts +38 -0
  267. package/dist/lib/esm/obsidian/command-handlers/global-command-handler.mjs +69 -0
  268. package/dist/lib/esm/obsidian/command-handlers/index.d.mts +9 -0
  269. package/dist/lib/esm/obsidian/command-handlers/index.mjs +44 -0
  270. package/dist/lib/esm/obsidian/components/all-windows-event-handler.mjs +4 -2
  271. package/dist/lib/esm/obsidian/components/async-component.d.mts +28 -0
  272. package/dist/lib/esm/obsidian/components/async-component.mjs +56 -0
  273. package/dist/lib/esm/obsidian/components/async-events-component.mjs +3 -1
  274. package/dist/lib/esm/obsidian/components/index.d.mts +1 -0
  275. package/dist/lib/esm/obsidian/components/index.mjs +5 -1
  276. package/dist/lib/esm/obsidian/components/setting-components/checkbox-component.mjs +3 -1
  277. package/dist/lib/esm/obsidian/components/setting-components/code-highlighter-component.mjs +3 -1
  278. package/dist/lib/esm/obsidian/components/setting-components/date-component.mjs +3 -1
  279. package/dist/lib/esm/obsidian/components/setting-components/date-time-component.mjs +3 -1
  280. package/dist/lib/esm/obsidian/components/setting-components/email-component.mjs +3 -1
  281. package/dist/lib/esm/obsidian/components/setting-components/file-component.mjs +3 -1
  282. package/dist/lib/esm/obsidian/components/setting-components/index.mjs +3 -1
  283. package/dist/lib/esm/obsidian/components/setting-components/month-component.mjs +3 -1
  284. package/dist/lib/esm/obsidian/components/setting-components/multiple-dropdown-component.mjs +3 -1
  285. package/dist/lib/esm/obsidian/components/setting-components/multiple-email-component.mjs +3 -1
  286. package/dist/lib/esm/obsidian/components/setting-components/multiple-file-component.mjs +3 -1
  287. package/dist/lib/esm/obsidian/components/setting-components/multiple-text-component.mjs +3 -1
  288. package/dist/lib/esm/obsidian/components/setting-components/number-component.mjs +3 -1
  289. package/dist/lib/esm/obsidian/components/setting-components/password-component.mjs +3 -1
  290. package/dist/lib/esm/obsidian/components/setting-components/setting-component-wrapper.mjs +3 -1
  291. package/dist/lib/esm/obsidian/components/setting-components/telephone-component.mjs +3 -1
  292. package/dist/lib/esm/obsidian/components/setting-components/text-based-component.mjs +3 -1
  293. package/dist/lib/esm/obsidian/components/setting-components/time-component.mjs +3 -1
  294. package/dist/lib/esm/obsidian/components/setting-components/tri-state-checkbox-component.mjs +3 -1
  295. package/dist/lib/esm/obsidian/components/setting-components/typed-dropdown-component.mjs +3 -1
  296. package/dist/lib/esm/obsidian/components/setting-components/typed-multiple-dropdown-component.mjs +3 -1
  297. package/dist/lib/esm/obsidian/components/setting-components/typed-range-text-component.mjs +3 -1
  298. package/dist/lib/esm/obsidian/components/setting-components/typed-text-component.mjs +3 -1
  299. package/dist/lib/esm/obsidian/components/setting-components/url-component.mjs +3 -1
  300. package/dist/lib/esm/obsidian/components/setting-components/validator-component.mjs +5 -3
  301. package/dist/lib/esm/obsidian/components/setting-components/value-component-with-change-tracking.mjs +2 -0
  302. package/dist/lib/esm/obsidian/components/setting-components/week-component.mjs +3 -1
  303. package/dist/lib/esm/obsidian/constructors/getDomEventsHandlersConstructor.mjs +3 -1
  304. package/dist/lib/esm/obsidian/constructors/index.mjs +3 -1
  305. package/dist/lib/esm/obsidian/dataview-link.mjs +3 -1
  306. package/dist/lib/esm/obsidian/dataview.mjs +4 -2
  307. package/dist/lib/esm/obsidian/editor.mjs +3 -1
  308. package/dist/lib/esm/obsidian/file-change.mjs +3 -1
  309. package/dist/lib/esm/obsidian/file-manager.mjs +3 -1
  310. package/dist/lib/esm/obsidian/file-system.mjs +3 -1
  311. package/dist/lib/esm/obsidian/frontmatter-link-cache-with-offsets.mjs +3 -1
  312. package/dist/lib/esm/obsidian/frontmatter.mjs +3 -1
  313. package/dist/lib/esm/obsidian/i18n/custom-type-options.d.mts +37 -0
  314. package/dist/lib/esm/obsidian/i18n/custom-type-options.mjs +25 -0
  315. package/dist/lib/esm/obsidian/i18n/default-translations.d.mts +14 -0
  316. package/dist/lib/esm/obsidian/i18n/default-translations.mjs +25 -0
  317. package/dist/lib/esm/obsidian/i18n/i18n.d.mts +2 -13
  318. package/dist/lib/esm/obsidian/i18n/i18n.mjs +3 -1
  319. package/dist/lib/esm/obsidian/i18n/index.d.mts +2 -2
  320. package/dist/lib/esm/obsidian/i18n/index.mjs +7 -5
  321. package/dist/lib/esm/obsidian/i18n/locales/en.mjs +3 -1
  322. package/dist/lib/esm/obsidian/i18n/locales/index.mjs +3 -1
  323. package/dist/lib/esm/obsidian/i18n/locales/translations-map.d.mts +1 -2
  324. package/dist/lib/esm/obsidian/i18n/locales/translations-map.mjs +3 -1
  325. package/dist/lib/esm/obsidian/index.d.mts +1 -1
  326. package/dist/lib/esm/obsidian/index.mjs +5 -3
  327. package/dist/lib/esm/obsidian/is-in-obsidian.mjs +3 -1
  328. package/dist/lib/esm/obsidian/link.mjs +3 -1
  329. package/dist/lib/esm/obsidian/logger.mjs +3 -1
  330. package/dist/lib/esm/obsidian/loop.mjs +3 -1
  331. package/dist/lib/esm/obsidian/markdown-code-block-processor.mjs +3 -1
  332. package/dist/lib/esm/obsidian/markdown-view.mjs +3 -1
  333. package/dist/lib/esm/obsidian/markdown.mjs +3 -1
  334. package/dist/lib/esm/obsidian/metadata-cache.mjs +3 -1
  335. package/dist/lib/esm/obsidian/modals/alert.mjs +4 -2
  336. package/dist/lib/esm/obsidian/modals/confirm.mjs +4 -2
  337. package/dist/lib/esm/obsidian/modals/index.d.mts +1 -1
  338. package/dist/lib/esm/obsidian/modals/index.mjs +5 -3
  339. package/dist/lib/esm/obsidian/modals/modal.mjs +54 -0
  340. package/dist/lib/esm/obsidian/modals/prompt.mjs +4 -2
  341. package/dist/lib/esm/obsidian/modals/select-item.mjs +4 -2
  342. package/dist/lib/esm/obsidian/monkey-around.mjs +3 -1
  343. package/dist/lib/esm/obsidian/obsidian-settings.mjs +3 -1
  344. package/dist/lib/esm/obsidian/pdf.mjs +6 -4
  345. package/dist/lib/esm/obsidian/plugin/components/abort-signal-component.d.mts +27 -0
  346. package/dist/lib/esm/obsidian/plugin/components/abort-signal-component.mjs +54 -0
  347. package/dist/lib/esm/obsidian/plugin/components/async-error-handler-component.d.mts +29 -0
  348. package/dist/lib/esm/obsidian/plugin/components/async-error-handler-component.mjs +57 -0
  349. package/dist/lib/esm/obsidian/plugin/components/console-debug-component.d.mts +29 -0
  350. package/dist/lib/esm/obsidian/plugin/components/console-debug-component.mjs +52 -0
  351. package/dist/lib/esm/obsidian/plugin/components/i18n-component.d.mts +23 -0
  352. package/dist/lib/esm/obsidian/plugin/components/i18n-component.mjs +48 -0
  353. package/dist/lib/esm/obsidian/plugin/components/index.d.mts +9 -0
  354. package/dist/lib/esm/obsidian/plugin/components/index.mjs +44 -0
  355. package/dist/lib/esm/obsidian/plugin/components/lifecycle-events-component.d.mts +59 -0
  356. package/dist/lib/esm/obsidian/plugin/components/lifecycle-events-component.mjs +102 -0
  357. package/dist/lib/esm/obsidian/plugin/components/plugin-context-component.d.mts +25 -0
  358. package/dist/lib/esm/obsidian/plugin/components/plugin-context-component.mjs +57 -0
  359. package/dist/lib/esm/obsidian/plugin/components/plugin-notice-component.d.mts +25 -0
  360. package/dist/lib/esm/obsidian/plugin/components/plugin-notice-component.mjs +56 -0
  361. package/dist/lib/esm/obsidian/plugin/components/plugin-settings-component.d.mts +302 -0
  362. package/dist/lib/esm/obsidian/plugin/components/plugin-settings-component.mjs +463 -0
  363. package/dist/lib/esm/obsidian/plugin/components/plugin-settings-tab-component.d.mts +28 -0
  364. package/dist/lib/esm/obsidian/plugin/components/plugin-settings-tab-component.mjs +58 -0
  365. package/dist/lib/esm/obsidian/plugin/index.d.mts +2 -5
  366. package/dist/lib/esm/obsidian/plugin/index.mjs +7 -11
  367. package/dist/lib/esm/obsidian/plugin/obsidian-plugin-repo-paths.mjs +3 -1
  368. package/dist/lib/esm/obsidian/plugin/path-settings.mjs +3 -1
  369. package/dist/lib/esm/obsidian/plugin/plugin-context.d.mts +3 -2
  370. package/dist/lib/esm/obsidian/plugin/plugin-context.mjs +14 -5
  371. package/dist/lib/esm/obsidian/plugin/plugin-id.mjs +3 -1
  372. package/dist/lib/esm/obsidian/plugin/{plugin-settings-tab-base.d.mts → plugin-settings-tab.d.mts} +29 -11
  373. package/dist/lib/esm/obsidian/plugin/plugin-settings-tab.mjs +313 -0
  374. package/dist/lib/esm/obsidian/plugin/plugin.d.mts +106 -5
  375. package/dist/lib/esm/obsidian/plugin/plugin.mjs +140 -2
  376. package/dist/lib/esm/obsidian/queue.mjs +3 -1
  377. package/dist/lib/esm/obsidian/react/app-context.mjs +3 -1
  378. package/dist/lib/esm/obsidian/react/index.mjs +3 -1
  379. package/dist/lib/esm/obsidian/reference.mjs +3 -1
  380. package/dist/lib/esm/obsidian/rename-delete-handler.mjs +3 -1
  381. package/dist/lib/esm/obsidian/resource-url.mjs +3 -1
  382. package/dist/lib/esm/obsidian/setting-ex.mjs +3 -1
  383. package/dist/lib/esm/obsidian/setting-group-ex.mjs +3 -1
  384. package/dist/lib/esm/obsidian/validation.mjs +3 -1
  385. package/dist/lib/esm/obsidian/vault-delete.mjs +3 -1
  386. package/dist/lib/esm/obsidian/vault.mjs +3 -1
  387. package/dist/lib/esm/obsidian/workspace.mjs +3 -1
  388. package/dist/lib/esm/path.mjs +3 -1
  389. package/dist/lib/esm/reg-exp.mjs +3 -1
  390. package/dist/lib/esm/script-utils/build.mjs +3 -1
  391. package/dist/lib/esm/script-utils/bundlers/esbuild-impl/change-extension-plugin.mjs +3 -1
  392. package/dist/lib/esm/script-utils/bundlers/esbuild-impl/copy-to-obsidian-plugins-folder-plugin.mjs +3 -1
  393. package/dist/lib/esm/script-utils/bundlers/esbuild-impl/custom-esbuild-options-plugin.mjs +3 -1
  394. package/dist/lib/esm/script-utils/bundlers/esbuild-impl/dependency.mjs +3 -1
  395. package/dist/lib/esm/script-utils/bundlers/esbuild-impl/fix-esm-plugin.mjs +3 -1
  396. package/dist/lib/esm/script-utils/bundlers/esbuild-impl/fix-source-maps-plugin.mjs +3 -1
  397. package/dist/lib/esm/script-utils/bundlers/esbuild-impl/index.mjs +3 -1
  398. package/dist/lib/esm/script-utils/bundlers/esbuild-impl/obsidian-plugin-builder.mjs +3 -1
  399. package/dist/lib/esm/script-utils/bundlers/esbuild-impl/preprocess-plugin.mjs +5 -3
  400. package/dist/lib/esm/script-utils/bundlers/esbuild-impl/rename-css-plugin.mjs +3 -1
  401. package/dist/lib/esm/script-utils/bundlers/esbuild-impl/svelte-wrapper-plugin.mjs +3 -1
  402. package/dist/lib/esm/script-utils/bundlers/esbuild.mjs +3 -1
  403. package/dist/lib/esm/script-utils/bundlers/index.mjs +3 -1
  404. package/dist/lib/esm/script-utils/cli-utils.mjs +3 -1
  405. package/dist/lib/esm/script-utils/code-generator.mjs +3 -1
  406. package/dist/lib/esm/script-utils/commitlint-config.mjs +3 -1
  407. package/dist/lib/esm/script-utils/exec.mjs +3 -1
  408. package/dist/lib/esm/script-utils/formatters/dprint.mjs +3 -1
  409. package/dist/lib/esm/script-utils/formatters/index.mjs +3 -1
  410. package/dist/lib/esm/script-utils/fs.mjs +3 -1
  411. package/dist/lib/esm/script-utils/index.mjs +3 -1
  412. package/dist/lib/esm/script-utils/json.mjs +3 -1
  413. package/dist/lib/esm/script-utils/linters/cspell.mjs +3 -1
  414. package/dist/lib/esm/script-utils/linters/eslint-config.mjs +4 -2
  415. package/dist/lib/esm/script-utils/linters/eslint-rules/index.mjs +3 -1
  416. package/dist/lib/esm/script-utils/linters/eslint-rules/no-async-callback-to-unsafe-return.mjs +3 -1
  417. package/dist/lib/esm/script-utils/linters/eslint-rules/no-used-underscore-variables.mjs +3 -1
  418. package/dist/lib/esm/script-utils/linters/eslint-rules/obsidian-dev-utils-plugin.mjs +3 -1
  419. package/dist/lib/esm/script-utils/linters/eslint-rules/rule-tester-helper.mjs +3 -1
  420. package/dist/lib/esm/script-utils/linters/eslint.mjs +3 -1
  421. package/dist/lib/esm/script-utils/linters/index.mjs +3 -1
  422. package/dist/lib/esm/script-utils/linters/markdownlint-cli2-config.mjs +3 -1
  423. package/dist/lib/esm/script-utils/linters/markdownlint.mjs +6 -2
  424. package/dist/lib/esm/script-utils/nano-staged-config.mjs +3 -1
  425. package/dist/lib/esm/script-utils/npm-publish.mjs +3 -1
  426. package/dist/lib/esm/script-utils/npm-run.mjs +3 -1
  427. package/dist/lib/esm/script-utils/npm.mjs +3 -1
  428. package/dist/lib/esm/script-utils/obsidian-dev-utils-repo-paths.mjs +3 -1
  429. package/dist/lib/esm/script-utils/root.mjs +3 -1
  430. package/dist/lib/esm/script-utils/test-runners/index.mjs +3 -1
  431. package/dist/lib/esm/script-utils/test-runners/vitest.mjs +3 -1
  432. package/dist/lib/esm/script-utils/version.mjs +3 -1
  433. package/dist/lib/esm/strict-proxy.mjs +3 -1
  434. package/dist/lib/esm/string.mjs +3 -1
  435. package/dist/lib/esm/transformers/date-transformer.mjs +3 -1
  436. package/dist/lib/esm/transformers/duration-transformer.mjs +3 -1
  437. package/dist/lib/esm/transformers/group-transformer.mjs +3 -1
  438. package/dist/lib/esm/transformers/index.mjs +3 -1
  439. package/dist/lib/esm/transformers/map-transformer.mjs +3 -1
  440. package/dist/lib/esm/transformers/set-transformer.mjs +3 -1
  441. package/dist/lib/esm/transformers/skip-private-property-transformer.mjs +3 -1
  442. package/dist/lib/esm/transformers/transformer.mjs +3 -1
  443. package/dist/lib/esm/transformers/two-way-map-transformer.mjs +3 -1
  444. package/dist/lib/esm/transformers/typed-transformer.mjs +3 -1
  445. package/dist/lib/esm/two-way-map.mjs +3 -1
  446. package/dist/lib/esm/type-guards.mjs +3 -1
  447. package/dist/lib/esm/type.mjs +3 -1
  448. package/dist/lib/esm/url.mjs +3 -1
  449. package/dist/lib/esm/value-provider.mjs +3 -1
  450. package/obsidian/Components/async-component/package.json +6 -0
  451. package/obsidian/Modals/modal/package.json +6 -0
  452. package/obsidian/Plugin/components/abort-signal-component/package.json +6 -0
  453. package/obsidian/Plugin/components/async-error-handler-component/package.json +6 -0
  454. package/obsidian/Plugin/components/console-debug-component/package.json +6 -0
  455. package/obsidian/Plugin/components/i18n-component/package.json +6 -0
  456. package/obsidian/Plugin/components/index/package.json +6 -0
  457. package/obsidian/Plugin/components/lifecycle-events-component/package.json +6 -0
  458. package/obsidian/Plugin/components/package.json +6 -0
  459. package/obsidian/Plugin/components/plugin-context-component/package.json +6 -0
  460. package/obsidian/Plugin/components/plugin-notice-component/package.json +6 -0
  461. package/obsidian/Plugin/components/plugin-settings-component/package.json +6 -0
  462. package/obsidian/Plugin/components/plugin-settings-tab-component/package.json +6 -0
  463. package/obsidian/Plugin/{plugin-settings-wrapper → plugin-settings-tab}/package.json +3 -3
  464. package/obsidian/command-handlers/abstract-file-command-handler/package.json +6 -0
  465. package/obsidian/command-handlers/app-active-file-provider/package.json +6 -0
  466. package/obsidian/command-handlers/app-menu-event-registrar/package.json +6 -0
  467. package/obsidian/command-handlers/command-handler/package.json +6 -0
  468. package/obsidian/command-handlers/command-handler-component/package.json +6 -0
  469. package/obsidian/command-handlers/editor-command-handler/package.json +6 -0
  470. package/obsidian/command-handlers/file-command-handler/package.json +6 -0
  471. package/obsidian/command-handlers/folder-command-handler/package.json +6 -0
  472. package/obsidian/command-handlers/global-command-handler/package.json +6 -0
  473. package/obsidian/command-handlers/index/package.json +6 -0
  474. package/obsidian/command-handlers/package.json +6 -0
  475. package/obsidian/i18n/{custom-type-options-base → custom-type-options}/package.json +3 -3
  476. package/obsidian/i18n/{default-translations-base → default-translations}/package.json +3 -3
  477. package/package.json +33 -12
  478. package/dist/lib/cjs/obsidian/commands/abstract-file-command-base.cjs +0 -441
  479. package/dist/lib/cjs/obsidian/commands/abstract-file-command-base.d.cts +0 -264
  480. package/dist/lib/cjs/obsidian/commands/command-base.cjs +0 -255
  481. package/dist/lib/cjs/obsidian/commands/command-base.d.cts +0 -125
  482. package/dist/lib/cjs/obsidian/commands/editor-command-base.cjs +0 -282
  483. package/dist/lib/cjs/obsidian/commands/editor-command-base.d.cts +0 -139
  484. package/dist/lib/cjs/obsidian/commands/file-command-base.cjs +0 -343
  485. package/dist/lib/cjs/obsidian/commands/file-command-base.d.cts +0 -191
  486. package/dist/lib/cjs/obsidian/commands/folder-command-base.cjs +0 -335
  487. package/dist/lib/cjs/obsidian/commands/folder-command-base.d.cts +0 -184
  488. package/dist/lib/cjs/obsidian/commands/index.d.cts +0 -6
  489. package/dist/lib/cjs/obsidian/commands/non-editor-command-base.d.cts +0 -34
  490. package/dist/lib/cjs/obsidian/i18n/custom-type-options-base.d.cts +0 -37
  491. package/dist/lib/cjs/obsidian/i18n/default-translations-base.d.cts +0 -25
  492. package/dist/lib/cjs/obsidian/plugin/plugin-base.cjs +0 -409
  493. package/dist/lib/cjs/obsidian/plugin/plugin-base.d.cts +0 -176
  494. package/dist/lib/cjs/obsidian/plugin/plugin-settings-manager-base.cjs +0 -486
  495. package/dist/lib/cjs/obsidian/plugin/plugin-settings-manager-base.d.cts +0 -186
  496. package/dist/lib/cjs/obsidian/plugin/plugin-settings-tab-base.cjs +0 -401
  497. package/dist/lib/cjs/obsidian/plugin/plugin-settings-wrapper.d.cts +0 -25
  498. package/dist/lib/cjs/obsidian/plugin/plugin-types-base.cjs +0 -122
  499. package/dist/lib/cjs/obsidian/plugin/plugin-types-base.d.cts +0 -87
  500. package/dist/lib/esm/obsidian/commands/abstract-file-command-base.d.mts +0 -264
  501. package/dist/lib/esm/obsidian/commands/abstract-file-command-base.mjs +0 -329
  502. package/dist/lib/esm/obsidian/commands/command-base.d.mts +0 -125
  503. package/dist/lib/esm/obsidian/commands/command-base.mjs +0 -146
  504. package/dist/lib/esm/obsidian/commands/editor-command-base.d.mts +0 -139
  505. package/dist/lib/esm/obsidian/commands/editor-command-base.mjs +0 -176
  506. package/dist/lib/esm/obsidian/commands/file-command-base.d.mts +0 -191
  507. package/dist/lib/esm/obsidian/commands/file-command-base.mjs +0 -240
  508. package/dist/lib/esm/obsidian/commands/folder-command-base.d.mts +0 -184
  509. package/dist/lib/esm/obsidian/commands/folder-command-base.mjs +0 -232
  510. package/dist/lib/esm/obsidian/commands/index.d.mts +0 -6
  511. package/dist/lib/esm/obsidian/commands/index.mjs +0 -36
  512. package/dist/lib/esm/obsidian/commands/non-editor-command-base.d.mts +0 -34
  513. package/dist/lib/esm/obsidian/commands/non-editor-command-base.mjs +0 -46
  514. package/dist/lib/esm/obsidian/i18n/custom-type-options-base.d.mts +0 -37
  515. package/dist/lib/esm/obsidian/i18n/custom-type-options-base.mjs +0 -23
  516. package/dist/lib/esm/obsidian/i18n/default-translations-base.d.mts +0 -25
  517. package/dist/lib/esm/obsidian/i18n/default-translations-base.mjs +0 -23
  518. package/dist/lib/esm/obsidian/modals/modal-base.mjs +0 -52
  519. package/dist/lib/esm/obsidian/plugin/plugin-base.d.mts +0 -176
  520. package/dist/lib/esm/obsidian/plugin/plugin-base.mjs +0 -317
  521. package/dist/lib/esm/obsidian/plugin/plugin-settings-manager-base.d.mts +0 -186
  522. package/dist/lib/esm/obsidian/plugin/plugin-settings-manager-base.mjs +0 -385
  523. package/dist/lib/esm/obsidian/plugin/plugin-settings-tab-base.mjs +0 -302
  524. package/dist/lib/esm/obsidian/plugin/plugin-settings-wrapper.d.mts +0 -25
  525. package/dist/lib/esm/obsidian/plugin/plugin-settings-wrapper.mjs +0 -22
  526. package/dist/lib/esm/obsidian/plugin/plugin-types-base.d.mts +0 -87
  527. package/dist/lib/esm/obsidian/plugin/plugin-types-base.mjs +0 -22
  528. package/obsidian/Commands/abstract-file-command-base/package.json +0 -6
  529. package/obsidian/Commands/command-base/package.json +0 -6
  530. package/obsidian/Commands/editor-command-base/package.json +0 -6
  531. package/obsidian/Commands/file-command-base/package.json +0 -6
  532. package/obsidian/Commands/folder-command-base/package.json +0 -6
  533. package/obsidian/Commands/index/package.json +0 -6
  534. package/obsidian/Commands/non-editor-command-base/package.json +0 -6
  535. package/obsidian/Commands/package.json +0 -6
  536. package/obsidian/Modals/modal-base/package.json +0 -6
  537. package/obsidian/Plugin/plugin-base/package.json +0 -6
  538. package/obsidian/Plugin/plugin-settings-manager-base/package.json +0 -6
  539. package/obsidian/Plugin/plugin-settings-tab-base/package.json +0 -6
  540. package/obsidian/Plugin/plugin-types-base/package.json +0 -6
  541. /package/dist/lib/cjs/obsidian/modals/{modal-base.d.cts → modal.d.cts} +0 -0
  542. /package/dist/lib/esm/obsidian/modals/{modal-base.d.mts → modal.d.mts} +0 -0
@@ -4,6 +4,7 @@ if you want to view the source, please visit the github repository of this plugi
4
4
  */
5
5
 
6
6
  (function initEsm() {
7
+ // eslint-disable-next-line obsidianmd/prefer-active-doc -- Actively use globalThis.
7
8
  if (globalThis.process) {
8
9
  return;
9
10
  }
@@ -16,6 +17,7 @@ if you want to view the source, please visit the github repository of this plugi
16
17
  env: {},
17
18
  platform: 'android'
18
19
  };
20
+ // eslint-disable-next-line obsidianmd/prefer-active-doc -- Actively use globalThis.
19
21
  globalThis.process = browserProcess;
20
22
  })();
21
23
 
@@ -434,4 +436,4 @@ export {
434
436
  setNestedPropertyValue,
435
437
  toJson
436
438
  };
437
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL29iamVjdC11dGlscy50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIENvbnRhaW5zIHV0aWxpdHkgZnVuY3Rpb25zIGZvciBPYmplY3RzLlxuICovXG5cbmltcG9ydCB0eXBlIHtcbiAgQ29uc3RydWN0b3IsXG4gIFJlcXVpcmVkS2V5c09mLFxuICBVbmRlZmluZWRPblBhcnRpYWxEZWVwXG59IGZyb20gJ3R5cGUtZmVzdCc7XG5cbmltcG9ydCB0eXBlIHsgR2VuZXJpY09iamVjdCB9IGZyb20gJy4vdHlwZS1ndWFyZHMudHMnO1xuaW1wb3J0IHR5cGUge1xuICBFeGFjdE1lbWJlcnMsXG4gIE1heWJlUmV0dXJuLFxuICBTdHJpbmdLZXlzXG59IGZyb20gJy4vdHlwZS50cyc7XG5cbmltcG9ydCB7IGVycm9yVG9TdHJpbmcgfSBmcm9tICcuL2Vycm9yLnRzJztcbmltcG9ydCB7IGdldEZ1bmN0aW9uRXhwcmVzc2lvblN0cmluZyB9IGZyb20gJy4vZnVuY3Rpb24udHMnO1xuaW1wb3J0IHsgcmVwbGFjZUFsbCB9IGZyb20gJy4vc3RyaW5nLnRzJztcbmltcG9ydCB7XG4gIGFzc2VydCxcbiAgZW5zdXJlR2VuZXJpY09iamVjdCxcbiAgZW5zdXJlTm9uTnVsbGFibGVcbn0gZnJvbSAnLi90eXBlLWd1YXJkcy50cyc7XG5cbi8qKlxuICogU3BlY2lmaWVzIGhvdyBmdW5jdGlvbnMgc2hvdWxkIGJlIGhhbmRsZWQgaW4gdGhlIEpTT04gb3V0cHV0LlxuICovXG5leHBvcnQgZW51bSBGdW5jdGlvbkhhbmRsaW5nTW9kZSB7XG4gIC8qKlxuICAgKiBFeGNsdWRlcyBmdW5jdGlvbnMgZnJvbSB0aGUgSlNPTiBvdXRwdXQuXG4gICAqL1xuICBFeGNsdWRlID0gJ2V4Y2x1ZGUnLFxuICAvKipcbiAgICogSW5jbHVkZXMgdGhlIGZ1bGwgZnVuY3Rpb24gZGVmaW5pdGlvbiBpbiB0aGUgSlNPTiBvdXRwdXQuXG4gICAqL1xuICBGdWxsID0gJ2Z1bGwnLFxuICAvKipcbiAgICogSW5jbHVkZXMgb25seSB0aGUgZnVuY3Rpb24gbmFtZSBpbiB0aGUgSlNPTiBvdXRwdXQuXG4gICAqL1xuICBOYW1lT25seSA9ICduYW1lT25seSdcbn1cblxuZW51bSBUb2tlblN1YnN0aXR1dGlvbktleSB7XG4gIENpcmN1bGFyUmVmZXJlbmNlID0gJ0NpcmN1bGFyUmVmZXJlbmNlJyxcbiAgRnVuY3Rpb24gPSAnRnVuY3Rpb24nLFxuICBNYXhEZXB0aExpbWl0UmVhY2hlZCA9ICdNYXhEZXB0aExpbWl0UmVhY2hlZCcsXG4gIE1heERlcHRoTGltaXRSZWFjaGVkQXJyYXkgPSAnTWF4RGVwdGhMaW1pdFJlYWNoZWRBcnJheScsXG4gIFRvSlNPTkZhaWxlZCA9ICdUb0pTT05GYWlsZWQnLFxuICBVbmRlZmluZWQgPSAnVW5kZWZpbmVkJ1xufVxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIHtAbGluayB0b0pzb259LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRvSnNvbk9wdGlvbnMge1xuICAvKipcbiAgICogU3BlY2lmaWVzIGhvdyBmdW5jdGlvbnMgc2hvdWxkIGJlIGhhbmRsZWQgaW4gdGhlIEpTT04gb3V0cHV0IChkZWZhdWx0OiBgZXhjbHVkZWApLlxuICAgKi9cbiAgcmVhZG9ubHkgZnVuY3Rpb25IYW5kbGluZ01vZGU6IEZ1bmN0aW9uSGFuZGxpbmdNb2RlO1xuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgdGhlIG1heGltdW0gZGVwdGggb2YgbmVzdGVkIG9iamVjdHMgdG8gaW5jbHVkZSBpbiB0aGUgSlNPTiBvdXRwdXQuXG4gICAqIFVzZSBgLTFgIGZvciBubyBsaW1pdC5cbiAgICogRGVmYXVsdHMgdG8gYC0xYC5cbiAgICovXG4gIHJlYWRvbmx5IG1heERlcHRoOiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFNwZWNpZmllcyB3aGV0aGVyIHRvIGNhdGNoIGVycm9ycyBpbiBgdG9KU09OKClgIGFuZCByZXBsYWNlIHRoZW0gd2l0aCBhIHBsYWNlaG9sZGVyLlxuICAgKiBEZWZhdWx0cyB0byBgZmFsc2VgLlxuICAgKi9cbiAgcmVhZG9ubHkgc2hvdWxkQ2F0Y2hUb0pTT05FcnJvcnM6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFNwZWNpZmllcyB3aGV0aGVyIHRvIGhhbmRsZSBjaXJjdWxhciByZWZlcmVuY2VzIGluIHRoZSBKU09OIG91dHB1dC5cbiAgICogRGVmYXVsdHMgdG8gYGZhbHNlYC5cbiAgICovXG4gIHJlYWRvbmx5IHNob3VsZEhhbmRsZUNpcmN1bGFyUmVmZXJlbmNlczogYm9vbGVhbjtcblxuICAvKipcbiAgICogU3BlY2lmaWVzIHdoZXRoZXIgdG8gaGFuZGxlIGVycm9ycyBpbiB0aGUgSlNPTiBvdXRwdXQuXG4gICAqIERlZmF1bHRzIHRvIGBmYWxzZWAuXG4gICAqL1xuICByZWFkb25seSBzaG91bGRIYW5kbGVFcnJvcnM6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFNwZWNpZmllcyB3aGV0aGVyIHRvIGhhbmRsZSBgdW5kZWZpbmVkYCB2YWx1ZXMgaW4gdGhlIEpTT04gb3V0cHV0LlxuICAgKiBEZWZhdWx0cyB0byBgZmFsc2VgLlxuICAgKi9cbiAgcmVhZG9ubHkgc2hvdWxkSGFuZGxlVW5kZWZpbmVkOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgd2hldGhlciB0byBzb3J0IHRoZSBrZXlzIG9mIHRoZSBKU09OIG91dHB1dC5cbiAgICogRGVmYXVsdHMgdG8gYGZhbHNlYC5cbiAgICovXG4gIHJlYWRvbmx5IHNob3VsZFNvcnRLZXlzOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgdGhlIGluZGVudGF0aW9uIG9mIHRoZSBKU09OIG91dHB1dC4gVGhpcyBjYW4gYmUgYSBudW1iZXIgb2Ygc3BhY2VzIG9yIGEgc3RyaW5nLiBEZWZhdWx0cyB0byBgMmAuXG4gICAqL1xuICByZWFkb25seSBzcGFjZTogbnVtYmVyIHwgc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgdGhlIHN1YnN0aXR1dGlvbnMgdG8gdXNlIGluIHRoZSBKU09OIG91dHB1dC5cbiAgICovXG4gIHJlYWRvbmx5IHRva2VuU3Vic3RpdHV0aW9uczogUGFydGlhbDxUb2tlblN1YnN0aXR1dGlvbnM+O1xufVxuXG5pbnRlcmZhY2UgQXBwbHlTdWJzdGl0dXRpb25zUGFyYW1zIHtcbiAgcmVhZG9ubHkgZnVuY3Rpb25UZXh0czogcmVhZG9ubHkgc3RyaW5nW107XG4gIHJlYWRvbmx5IGluZGV4OiBudW1iZXI7XG4gIHJlYWRvbmx5IGtleTogVG9rZW5TdWJzdGl0dXRpb25LZXk7XG4gIHJlYWRvbmx5IHN1YnN0aXR1dGlvbnM6IFRva2VuU3Vic3RpdHV0aW9ucztcbn1cblxuaW50ZXJmYWNlIEVxdWFsaXR5Q29tcGFyZXJFbnRyeTxUPiB7XG4gIGNvbnN0cnVjdG9yOiBDb25zdHJ1Y3RvcjxUPjtcbiAgZXF1YWxpdHlDb21wYXJlcihhOiBULCBiOiBUKTogYm9vbGVhbjtcbn1cblxuaW50ZXJmYWNlIEpTT05TZXJpYWxpemFibGUge1xuICB0b0pTT04oLi4uYXJnczogdW5rbm93bltdKTogdW5rbm93bjtcbn1cblxuaW50ZXJmYWNlIE1vZHVsZVdpdGhEZWZhdWx0RXhwb3J0PFQ+IHtcbiAgZGVmYXVsdDogVDtcbn1cblxuaW50ZXJmYWNlIFJlc29sdmVkVG9Kc29uT3B0aW9ucyBleHRlbmRzIFRvSnNvbk9wdGlvbnMge1xuICByZWFkb25seSB0b2tlblN1YnN0aXR1dGlvbnM6IFRva2VuU3Vic3RpdHV0aW9ucztcbn1cblxuaW50ZXJmYWNlIFRva2VuU3Vic3RpdHV0aW9ucyB7XG4gIGNpcmN1bGFyUmVmZXJlbmNlOiBzdHJpbmc7XG4gIG1heERlcHRoTGltaXRSZWFjaGVkOiBzdHJpbmc7XG4gIHRvSlNPTkZhaWxlZDogc3RyaW5nO1xufVxuXG5jb25zdCBLRVlfU0VQQVJBVE9SID0gJy4nO1xuY29uc3QgZXF1YWxpdHlDb21wYXJlckVudHJpZXMgPSBjcmVhdGVFcXVhbGl0eUNvbXBhcmVyRW50cmllcyhcbiAgW1xuICAgIHsgY29uc3RydWN0b3I6IEFycmF5QnVmZmVyLCBlcXVhbGl0eUNvbXBhcmVyOiBkZWVwRXF1YWxBcnJheUJ1ZmZlciB9LFxuICAgIHsgY29uc3RydWN0b3I6IERhdGUsIGVxdWFsaXR5Q29tcGFyZXI6IGRlZXBFcXVhbERhdGUgfSxcbiAgICB7IGNvbnN0cnVjdG9yOiBSZWdFeHAsIGVxdWFsaXR5Q29tcGFyZXI6IGRlZXBFcXVhbFJlZ0V4cCB9LFxuICAgIHsgY29uc3RydWN0b3I6IE1hcCwgZXF1YWxpdHlDb21wYXJlcjogZGVlcEVxdWFsTWFwIH0sXG4gICAgeyBjb25zdHJ1Y3RvcjogU2V0LCBlcXVhbGl0eUNvbXBhcmVyOiBkZWVwRXF1YWxTZXQgfVxuICBdIGFzIGNvbnN0XG4pO1xuXG50eXBlIEtleXNXaXRoVW5kZWZpbmVkPFQ+ID0ge1xuICBbSyBpbiBrZXlvZiBUXS0/OiB1bmRlZmluZWQgZXh0ZW5kcyBUW0tdID8gSyA6IG5ldmVyO1xufVtrZXlvZiBUXTtcblxudHlwZSBNYW5kYXRvcnlLZXlzV2l0aFVuZGVmaW5lZDxUIGV4dGVuZHMgb2JqZWN0PiA9IEV4dHJhY3Q8UmVxdWlyZWRLZXlzT2Y8VD4gJiBTdHJpbmdLZXlzPFQ+LCBLZXlzV2l0aFVuZGVmaW5lZDxUPj47XG5cbnR5cGUgUmVtb3ZlVW5kZWZpbmVkT3ZlcmxvYWQ8VCBleHRlbmRzIG9iamVjdD4gPSBNYW5kYXRvcnlLZXlzV2l0aFVuZGVmaW5lZDxUPiBleHRlbmRzIG5ldmVyID8gW29iajogVF1cbiAgOiBuZXZlcjtcblxudHlwZSBSZW1vdmVVbmRlZmluZWRXaXRoS2V5c092ZXJsb2FkPFQgZXh0ZW5kcyBvYmplY3QsIEsgZXh0ZW5kcyByZWFkb25seSBzdHJpbmdbXT4gPSBbb2JqOiBULCBrZXlzVG9LZWVwOiBFeGFjdE1lbWJlcnM8TWFuZGF0b3J5S2V5c1dpdGhVbmRlZmluZWQ8VD4sIEs+XTtcblxuLyoqXG4gKiBBc3NpZ25zIHByb3BlcnRpZXMgZnJvbSBvbmUgb3IgbW9yZSBzb3VyY2Ugb2JqZWN0cyB0byBhIHRhcmdldCBvYmplY3QsIGluY2x1ZGluZyBub24tZW51bWVyYWJsZSBwcm9wZXJ0aWVzLlxuICpcbiAqIEBwYXJhbSB0YXJnZXQgLSBUaGUgdGFyZ2V0IG9iamVjdCB0byBhc3NpZ24gcHJvcGVydGllcyB0by5cbiAqIEBwYXJhbSBzb3VyY2UgLSBUaGUgc291cmNlIG9iamVjdCB0byBhc3NpZ24gcHJvcGVydGllcyBmcm9tLlxuICogQHJldHVybnMgVGhlIHRhcmdldCBvYmplY3Qgd2l0aCB0aGUgYXNzaWduZWQgcHJvcGVydGllcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFzc2lnbldpdGhOb25FbnVtZXJhYmxlUHJvcGVydGllczxUIGV4dGVuZHMgb2JqZWN0LCBVPih0YXJnZXQ6IFQsIHNvdXJjZTogVSk6IFQgJiBVO1xuLyoqXG4gKiBAcGFyYW0gdGFyZ2V0IC0gVGhlIHRhcmdldCBvYmplY3QgdG8gYXNzaWduIHByb3BlcnRpZXMgdG8uXG4gKiBAcGFyYW0gc291cmNlMSAtIFRoZSBmaXJzdCBzb3VyY2Ugb2JqZWN0IHRvIGFzc2lnbiBwcm9wZXJ0aWVzIGZyb20uXG4gKiBAcGFyYW0gc291cmNlMiAtIFRoZSBzZWNvbmQgc291cmNlIG9iamVjdCB0byBhc3NpZ24gcHJvcGVydGllcyBmcm9tLlxuICogQHJldHVybnMgVGhlIHRhcmdldCBvYmplY3Qgd2l0aCB0aGUgYXNzaWduZWQgcHJvcGVydGllcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFzc2lnbldpdGhOb25FbnVtZXJhYmxlUHJvcGVydGllczxUIGV4dGVuZHMgb2JqZWN0LCBVLCBWPih0YXJnZXQ6IFQsIHNvdXJjZTE6IFUsIHNvdXJjZTI6IFYpOiBUICYgVSAmIFY7XG4vKipcbiAqIEFzc2lnbnMgcHJvcGVydGllcyBmcm9tIG9uZSBvciBtb3JlIHNvdXJjZSBvYmplY3RzIHRvIGEgdGFyZ2V0IG9iamVjdCwgaW5jbHVkaW5nIG5vbi1lbnVtZXJhYmxlIHByb3BlcnRpZXMuXG4gKlxuICogQHBhcmFtIHRhcmdldCAtIFRoZSB0YXJnZXQgb2JqZWN0IHRvIGFzc2lnbiBwcm9wZXJ0aWVzIHRvLlxuICogQHBhcmFtIHNvdXJjZTEgLSBUaGUgZmlyc3Qgc291cmNlIG9iamVjdCB0byBhc3NpZ24gcHJvcGVydGllcyBmcm9tLlxuICogQHBhcmFtIHNvdXJjZTIgLSBUaGUgc2Vjb25kIHNvdXJjZSBvYmplY3QgdG8gYXNzaWduIHByb3BlcnRpZXMgZnJvbS5cbiAqIEBwYXJhbSBzb3VyY2UzIC0gVGhlIHRoaXJkIHNvdXJjZSBvYmplY3QgdG8gYXNzaWduIHByb3BlcnRpZXMgZnJvbS5cbiAqIEByZXR1cm5zIFRoZSB0YXJnZXQgb2JqZWN0IHdpdGggdGhlIGFzc2lnbmVkIHByb3BlcnRpZXMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhc3NpZ25XaXRoTm9uRW51bWVyYWJsZVByb3BlcnRpZXM8VCBleHRlbmRzIG9iamVjdCwgVSwgViwgVz4odGFyZ2V0OiBULCBzb3VyY2UxOiBVLCBzb3VyY2UyOiBWLCBzb3VyY2UzOiBXKTogVCAmIFUgJiBWICYgVztcbi8qKlxuICogQXNzaWducyBwcm9wZXJ0aWVzIGZyb20gb25lIG9yIG1vcmUgc291cmNlIG9iamVjdHMgdG8gYSB0YXJnZXQgb2JqZWN0LCBpbmNsdWRpbmcgbm9uLWVudW1lcmFibGUgcHJvcGVydGllcy5cbiAqXG4gKiBAcGFyYW0gdGFyZ2V0IC0gVGhlIHRhcmdldCBvYmplY3QgdG8gYXNzaWduIHByb3BlcnRpZXMgdG8uXG4gKiBAcGFyYW0gc291cmNlcyAtIFRoZSBzb3VyY2Ugb2JqZWN0cyB0byBhc3NpZ24gcHJvcGVydGllcyBmcm9tLlxuICogQHJldHVybnMgVGhlIHRhcmdldCBvYmplY3Qgd2l0aCB0aGUgYXNzaWduZWQgcHJvcGVydGllcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFzc2lnbldpdGhOb25FbnVtZXJhYmxlUHJvcGVydGllcyh0YXJnZXQ6IG9iamVjdCwgLi4uc291cmNlczogb2JqZWN0W10pOiBvYmplY3Qge1xuICByZXR1cm4gYXNzaWduV2l0aE5vbkVudW1lcmFibGVQcm9wZXJ0aWVzSW1wbCh0YXJnZXQsIC4uLnNvdXJjZXMpO1xufVxuLyoqXG4gKiBDYXN0cyBhIHZhbHVlIHRvIGEgc3BlY2lmaWMgdHlwZS5cbiAqXG4gKiBAcGFyYW0gdmFsdWUgLSBUaGUgdmFsdWUgdG8gY2FzdC5cbiAqIEByZXR1cm5zIFRoZSB2YWx1ZSBhcyB0aGUgc3BlY2lmaWVkIHR5cGUuXG4gKi9cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5uZWNlc3NhcnktdHlwZS1wYXJhbWV0ZXJzIC0tIFdlIG5lZWQgdG8gY2FzdC5cbmV4cG9ydCBmdW5jdGlvbiBjYXN0VG88VD4odmFsdWU6IHVua25vd24pOiBUIHtcbiAgcmV0dXJuIHZhbHVlIGFzIFQ7XG59XG4vKipcbiAqIENsb25lcyBhbiBvYmplY3QsIGluY2x1ZGluZyBub24tZW51bWVyYWJsZSBwcm9wZXJ0aWVzLlxuICpcbiAqIEBwYXJhbSBvYmogLSBUaGUgb2JqZWN0IHRvIGNsb25lLlxuICogQHJldHVybnMgQSBuZXcgb2JqZWN0IHdpdGggdGhlIHNhbWUgcHJvcGVydGllcyBhcyB0aGUgb3JpZ2luYWwgb2JqZWN0LCBpbmNsdWRpbmcgbm9uLWVudW1lcmFibGUgcHJvcGVydGllcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNsb25lV2l0aE5vbkVudW1lcmFibGVQcm9wZXJ0aWVzPFQgZXh0ZW5kcyBvYmplY3Q+KG9iajogVCk6IFQge1xuICByZXR1cm4gT2JqZWN0LmNyZWF0ZShnZXRQcm90b3R5cGVPZihvYmopLCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhvYmopKSBhcyBUO1xufVxuLyoqXG4gKiBDb21wYXJlcyB0d28gdmFsdWVzIHRvIGRldGVybWluZSBpZiB0aGV5IGFyZSBkZWVwbHkgZXF1YWwuXG4gKlxuICogQHBhcmFtIGEgLSBUaGUgZmlyc3QgdmFsdWUgdG8gY29tcGFyZS5cbiAqIEBwYXJhbSBiIC0gVGhlIHNlY29uZCB2YWx1ZSB0byBjb21wYXJlLlxuICogQHJldHVybnMgYHRydWVgIGlmIHRoZSB2YWx1ZXMgYXJlIGRlZXBseSBlcXVhbCwgb3RoZXJ3aXNlIGBmYWxzZWAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZWVwRXF1YWwoYTogdW5rbm93biwgYjogdW5rbm93bik6IGJvb2xlYW4ge1xuICBpZiAoYSA9PT0gYikge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgaWYgKHR5cGVvZiBhICE9PSAnb2JqZWN0JyB8fCB0eXBlb2YgYiAhPT0gJ29iamVjdCcgfHwgYSA9PT0gbnVsbCB8fCBiID09PSBudWxsKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgY29uc3QgYUNvbnN0cnVjdG9yID0gYS5jb25zdHJ1Y3RvcjtcbiAgY29uc3QgYkNvbnN0cnVjdG9yID0gYi5jb25zdHJ1Y3RvcjtcblxuICBpZiAoYUNvbnN0cnVjdG9yICE9PSBiQ29uc3RydWN0b3IpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBpZiAoYUNvbnN0cnVjdG9yICE9PSBPYmplY3QpIHtcbiAgICBjb25zdCByZXN1bHQgPSBkZWVwRXF1YWxUeXBlZChhLCBiKTtcbiAgICBpZiAocmVzdWx0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuICB9XG5cbiAgY29uc3Qga2V5c0EgPSBnZXRBbGxLZXlzKGEpO1xuICBjb25zdCBrZXlzQiA9IGdldEFsbEtleXMoYik7XG5cbiAgaWYgKGtleXNBLmxlbmd0aCAhPT0ga2V5c0IubGVuZ3RoKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgY29uc3QgYVJlY29yZCA9IGVuc3VyZUdlbmVyaWNPYmplY3QoYSk7XG4gIGNvbnN0IGJSZWNvcmQgPSBlbnN1cmVHZW5lcmljT2JqZWN0KGIpO1xuXG4gIGZvciAoY29uc3Qga2V5IG9mIGtleXNBKSB7XG4gICAgaWYgKCFrZXlzQi5pbmNsdWRlcyhrZXkpIHx8ICFkZWVwRXF1YWwoYVJlY29yZFtrZXldLCBiUmVjb3JkW2tleV0pKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRydWU7XG59XG5cbi8qKlxuICogRGVsZXRlcyBtdWx0aXBsZSBwcm9wZXJ0aWVzIGZyb20gYW4gb2JqZWN0LlxuICpcbiAqIEB0eXBlUGFyYW0gVCAtIFRoZSB0eXBlIG9mIHRoZSBvYmplY3QuXG4gKiBAcGFyYW0gb2JqIC0gVGhlIG9iamVjdCB0byBkZWxldGUgdGhlIHByb3BlcnRpZXMgZnJvbS5cbiAqIEBwYXJhbSBwcm9wZXJ0eU5hbWVzIC0gVGhlIG5hbWVzIG9mIHRoZSBwcm9wZXJ0aWVzIHRvIGRlbGV0ZS5cbiAqIEByZXR1cm5zIGB0cnVlYCBpZiBhbnkgb2YgdGhlIHByb3BlcnRpZXMgd2VyZSBwcmVzZW50LCBvdGhlcndpc2UgYGZhbHNlYC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRlbGV0ZVByb3BlcnRpZXM8VCBleHRlbmRzIG9iamVjdD4ob2JqOiBULCBwcm9wZXJ0eU5hbWVzOiAoa2V5b2YgVClbXSk6IGJvb2xlYW4ge1xuICBsZXQgYW5zID0gZmFsc2U7XG5cbiAgZm9yIChjb25zdCBwcm9wZXJ0eU5hbWUgb2YgcHJvcGVydHlOYW1lcykge1xuICAgIGFucyA9IGRlbGV0ZVByb3BlcnR5KG9iaiwgcHJvcGVydHlOYW1lKSB8fCBhbnM7XG4gIH1cblxuICByZXR1cm4gYW5zO1xufVxuXG4vKipcbiAqIERlbGV0ZXMgYSBwcm9wZXJ0eSBmcm9tIGFuIG9iamVjdC5cbiAqXG4gKiBAdHlwZVBhcmFtIFQgLSBUaGUgdHlwZSBvZiB0aGUgb2JqZWN0LlxuICogQHBhcmFtIG9iaiAtIFRoZSBvYmplY3QgdG8gZGVsZXRlIHRoZSBwcm9wZXJ0eSBmcm9tLlxuICogQHBhcmFtIHByb3BlcnR5TmFtZSAtIFRoZSBuYW1lIG9mIHRoZSBwcm9wZXJ0eSB0byBkZWxldGUuXG4gKiBAcmV0dXJucyBgdHJ1ZWAgaWYgdGhlIHByb3BlcnR5IHdhcyBwcmVzZW50LCBvdGhlcndpc2UgYGZhbHNlYC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRlbGV0ZVByb3BlcnR5PFQgZXh0ZW5kcyBvYmplY3Q+KG9iajogVCwgcHJvcGVydHlOYW1lOiBrZXlvZiBUKTogYm9vbGVhbiB7XG4gIGlmICghT2JqZWN0Lmhhc093bihvYmosIHByb3BlcnR5TmFtZSkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1keW5hbWljLWRlbGV0ZSAtLSBXZSBoYXZlIG5vIG90aGVyIHdheSB0byBkZWxldGUgdGhlIHByb3BlcnR5LlxuICBkZWxldGUgb2JqW3Byb3BlcnR5TmFtZV07XG4gIHJldHVybiB0cnVlO1xufVxuXG4vKipcbiAqIEV4dHJhY3RzIHRoZSBkZWZhdWx0IGV4cG9ydCBmcm9tIGEgbW9kdWxlLlxuICpcbiAqIFVzZWZ1bCB0byBoYW5kbGUgaW5jb3JyZWN0IGRlZmF1bHQgZXhwb3J0IGludGVyb3AgYmV0d2VlbiBFU00gYW5kIENKUy5cbiAqXG4gKiBAcGFyYW0gbW9kdWxlIC0gVGhlIG1vZHVsZSB0byBleHRyYWN0IHRoZSBkZWZhdWx0IGV4cG9ydCBmcm9tLlxuICogQHJldHVybnMgVGhlIGRlZmF1bHQgZXhwb3J0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gZXh0cmFjdERlZmF1bHRFeHBvcnRJbnRlcm9wPFQ+KG1vZHVsZTogTW9kdWxlV2l0aERlZmF1bHRFeHBvcnQ8VD4gfCBUKTogVCB7XG4gIGlmICh0eXBlb2YgbW9kdWxlICE9PSAnb2JqZWN0JyB8fCBtb2R1bGUgPT09IG51bGwpIHtcbiAgICByZXR1cm4gbW9kdWxlO1xuICB9XG5cbiAgaWYgKCdkZWZhdWx0JyBpbiBtb2R1bGUpIHtcbiAgICByZXR1cm4gbW9kdWxlLmRlZmF1bHQ7XG4gIH1cblxuICByZXR1cm4gbW9kdWxlO1xufVxuXG4vKipcbiAqIEdldHMgYWxsIGVudHJpZXMgb2YgYW4gb2JqZWN0LlxuICpcbiAqIEBwYXJhbSBvYmogLSBUaGUgb2JqZWN0IHRvIGdldCB0aGUgZW50cmllcyBvZi5cbiAqIEByZXR1cm5zIEFuIGFycmF5IG9mIGFsbCBlbnRyaWVzIG9mIHRoZSBvYmplY3QuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRBbGxFbnRyaWVzPFQgZXh0ZW5kcyBvYmplY3Q+KG9iajogVCk6IFtTdHJpbmdLZXlzPFQ+LCBUW1N0cmluZ0tleXM8VD5dXVtdIHtcbiAgcmV0dXJuIGdldEFsbEtleXMob2JqKS5tYXAoKGtleSkgPT4gW2tleSwgb2JqW2tleV1dKTtcbn1cblxuLyoqXG4gKiBHZXRzIGFsbCBrZXlzIG9mIGFuIG9iamVjdC5cbiAqIEluY2x1ZGVzIGZpZWxkcyBhbmQgcHJvcGVydGllcy5cbiAqXG4gKiBAcGFyYW0gb2JqIC0gVGhlIG9iamVjdCB0byBnZXQgdGhlIGtleXMgb2YuXG4gKiBAcmV0dXJucyBBbiBhcnJheSBvZiBhbGwga2V5cyBvZiB0aGUgb2JqZWN0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0QWxsS2V5czxUIGV4dGVuZHMgb2JqZWN0PihvYmo6IFQpOiBTdHJpbmdLZXlzPFQ+W10ge1xuICBjb25zdCBrZXlzOiBTdHJpbmdLZXlzPFQ+W10gPSBbXTtcbiAgbGV0IGN1cnJlbnQ6IG51bGwgfCBvYmplY3QgPSBvYmo7XG4gIHdoaWxlIChjdXJyZW50KSB7XG4gICAgY29uc3QgZGVzY3JpcHRvcnMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhjdXJyZW50KSBhcyBSZWNvcmQ8c3RyaW5nLCBQcm9wZXJ0eURlc2NyaXB0b3I+O1xuICAgIGZvciAoY29uc3QgW2tleSwgZGVzY3JpcHRvcl0gb2YgT2JqZWN0LmVudHJpZXMoZGVzY3JpcHRvcnMpKSB7XG4gICAgICBpZiAoa2V5ID09PSAnX19wcm90b19fJykge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKHR5cGVvZiBkZXNjcmlwdG9yLnZhbHVlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBoYXNHZXR0ZXIgPSB0eXBlb2YgZGVzY3JpcHRvci5nZXQgPT09ICdmdW5jdGlvbic7XG4gICAgICBjb25zdCBoYXNTZXR0ZXIgPSB0eXBlb2YgZGVzY3JpcHRvci5zZXQgPT09ICdmdW5jdGlvbic7XG4gICAgICBpZiAoaGFzR2V0dGVyIHx8IGhhc1NldHRlcikge1xuICAgICAgICBpZiAoaGFzR2V0dGVyICYmIGhhc1NldHRlcikge1xuICAgICAgICAgIGtleXMucHVzaChrZXkgYXMgU3RyaW5nS2V5czxUPik7XG4gICAgICAgIH1cbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGlmIChkZXNjcmlwdG9yLmVudW1lcmFibGUgJiYgZGVzY3JpcHRvci53cml0YWJsZSkge1xuICAgICAgICBrZXlzLnB1c2goa2V5IGFzIFN0cmluZ0tleXM8VD4pO1xuICAgICAgfVxuICAgIH1cblxuICAgIGN1cnJlbnQgPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YoY3VycmVudCkgYXMgbnVsbCB8IG9iamVjdDtcbiAgfVxuICByZXR1cm4ga2V5cy5zb3J0KCk7XG59XG5cbi8qKlxuICogR2V0cyB0aGUgdmFsdWUgb2YgYSBuZXN0ZWQgcHJvcGVydHkgZnJvbSBhbiBvYmplY3QuXG4gKlxuICogQHBhcmFtIG9iaiAtIFRoZSBvYmplY3QgdG8gZ2V0IHRoZSBuZXN0ZWQgcHJvcGVydHkgdmFsdWUgZnJvbS5cbiAqIEBwYXJhbSBwYXRoIC0gVGhlIHBhdGggdG8gdGhlIG5lc3RlZCBwcm9wZXJ0eS5cbiAqIEByZXR1cm5zIFRoZSB2YWx1ZSBvZiB0aGUgbmVzdGVkIHByb3BlcnR5LlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0TmVzdGVkUHJvcGVydHlWYWx1ZShvYmo6IEdlbmVyaWNPYmplY3QsIHBhdGg6IHN0cmluZyk6IHVua25vd24ge1xuICBsZXQgbm9kZTogR2VuZXJpY09iamVjdCB8IHVuZGVmaW5lZCA9IG9iajtcbiAgY29uc3Qga2V5cyA9IHBhdGguc3BsaXQoS0VZX1NFUEFSQVRPUik7XG4gIGZvciAoY29uc3Qga2V5IG9mIGtleXMpIHtcbiAgICBpZiAobm9kZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgICBub2RlID0gbm9kZVtrZXldIGFzIEdlbmVyaWNPYmplY3QgfCB1bmRlZmluZWQ7XG4gIH1cblxuICByZXR1cm4gbm9kZTtcbn1cblxuLyoqXG4gKiBHZXRzIHRoZSBwcm90b3R5cGUgb2YgdGhlIHNwZWNpZmllZCBvYmplY3QuXG4gKlxuICogQHR5cGVQYXJhbSBUIC0gVGhlIHR5cGUgb2YgdGhlIG9iamVjdC5cbiAqIEBwYXJhbSBpbnN0YW5jZSAtIFRoZSBvYmplY3QgaW5zdGFuY2UgdG8gcmV0cmlldmUgdGhlIHByb3RvdHlwZSBvZi5cbiAqIEByZXR1cm5zIFRoZSBwcm90b3R5cGUgb2YgdGhlIG9iamVjdC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFByb3RvdHlwZU9mPFQ+KGluc3RhbmNlOiBUKTogVCB7XG4gIGlmIChpbnN0YW5jZSA9PT0gdW5kZWZpbmVkIHx8IGluc3RhbmNlID09PSBudWxsKSB7XG4gICAgcmV0dXJuIGluc3RhbmNlO1xuICB9XG4gIHJldHVybiBPYmplY3QuZ2V0UHJvdG90eXBlT2YoaW5zdGFuY2UpIGFzIFQ7XG59XG5cbi8qKlxuICogUmV0cmlldmVzIHRoZSBuYW1lIG9mIGEgcHJvcGVydHkgb2YgYSBnaXZlbiB0eXBlIGBUYC5cbiAqXG4gKiBAdHlwZVBhcmFtIFQgLSBUaGUgdHlwZSBvZiB0aGUgb2JqZWN0IGNvbnRhaW5pbmcgdGhlIHByb3BlcnR5LlxuICogQHBhcmFtIG5hbWUgLSBUaGUgbmFtZSBvZiB0aGUgcHJvcGVydHkgYXMgYSBzdHJpbmcuXG4gKiBAcmV0dXJucyBUaGUgbmFtZSBvZiB0aGUgcHJvcGVydHkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBuYW1lb2Y8VCBleHRlbmRzIG9iamVjdD4obmFtZTogU3RyaW5nS2V5czxUPik6IFN0cmluZ0tleXM8VD4ge1xuICByZXR1cm4gbmFtZTtcbn1cblxuLyoqXG4gKiBOb3JtYWxpemVzIG9wdGlvbmFsIHByb3BlcnRpZXMgdG8gYWxsb3cgYHVuZGVmaW5lZGAgYXNzaWdubWVudCBpbiBzdHJpY3QgbW9kZS5cbiAqXG4gKiBUaGlzIHV0aWxpdHkgcHJvdmlkZXMgYSB3b3JrYXJvdW5kIGZvciB0aGUgYGV4YWN0T3B0aW9uYWxQcm9wZXJ0eVR5cGVzYCBUeXBlU2NyaXB0IGZsYWcsXG4gKiB3aGljaCBwcm9oaWJpdHMgZGlyZWN0bHkgYXNzaWduaW5nIGB1bmRlZmluZWRgIHRvIG9wdGlvbmFsIHByb3BlcnRpZXMgd2hlbiB0aGUgdHlwZVxuICogZXhwbGljaXRseSBvbWl0cyBgdW5kZWZpbmVkYC5cbiAqXG4gKiBFeGFtcGxlOlxuICogYGBgdHlwZXNjcmlwdFxuICogLy8gV2l0aCBgZXhhY3RPcHRpb25hbFByb3BlcnR5VHlwZXM6IHRydWVgXG4gKiBjb25zdCB4OiB7IHByb3A/OiBzdHJpbmcgfSA9IHsgcHJvcDogdW5kZWZpbmVkIH07IC8vIENvbXBpbGVyIGVycm9yXG4gKlxuICogLy8gVXNpbmcgdGhpcyB1dGlsaXR5OlxuICogY29uc3QgeTogeyBwcm9wPzogc3RyaW5nIH0gPSBub3JtYWxpemVPcHRpb25hbFByb3BlcnRpZXM8eyBwcm9wPzogc3RyaW5nIH0+KHsgcHJvcDogdW5kZWZpbmVkIH0pOyAvLyBXb3Jrc1xuICogYGBgXG4gKlxuICogQHR5cGVQYXJhbSBUIC0gVGhlIHRhcmdldCB0eXBlIHdpdGggb3B0aW9uYWwgcHJvcGVydGllcyB0byBub3JtYWxpemUuXG4gKiBAcGFyYW0gb2JqIC0gVGhlIG9iamVjdCB0byBub3JtYWxpemUsIGFsbG93aW5nIGV4cGxpY2l0IGB1bmRlZmluZWRgIGZvciBvcHRpb25hbCBwcm9wZXJ0aWVzLlxuICogQHJldHVybnMgVGhlIG5vcm1hbGl6ZWQgb2JqZWN0LCBjb21wYXRpYmxlIHdpdGggYGV4YWN0T3B0aW9uYWxQcm9wZXJ0eVR5cGVzYC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG5vcm1hbGl6ZU9wdGlvbmFsUHJvcGVydGllczxUPihvYmo6IFVuZGVmaW5lZE9uUGFydGlhbERlZXA8VD4pOiBUIHtcbiAgcmV0dXJuIG9iaiBhcyBUO1xufVxuXG4vKipcbiAqIFJlbW92ZXMgYWxsIGB1bmRlZmluZWRgIHByb3BlcnRpZXMgZnJvbSBhbiBvYmplY3Qgd2hlbiB0aGVyZSBhcmUgbm8gbWFuZGF0b3J5IGtleXMgd2l0aCBgdW5kZWZpbmVkYCB2YWx1ZXMuXG4gKlxuICogQHR5cGVQYXJhbSBUeXBlIC0gVGhlIHR5cGUgb2YgdGhlIG9iamVjdC5cbiAqIEBwYXJhbSBhcmdzIC0gVGhlIGFyZ3VtZW50cyB0byB0aGUgZnVuY3Rpb24uXG4gKiBAcmV0dXJucyBUaGUgb2JqZWN0IHdpdGggYWxsIGB1bmRlZmluZWRgIHByb3BlcnRpZXMgcmVtb3ZlZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlbW92ZVVuZGVmaW5lZFByb3BlcnRpZXM8VHlwZSBleHRlbmRzIG9iamVjdD4oXG4gIC4uLmFyZ3M6IFJlbW92ZVVuZGVmaW5lZE92ZXJsb2FkPFR5cGU+XG4pOiBUeXBlO1xuLyoqXG4gKiBSZW1vdmVzIGFsbCBgdW5kZWZpbmVkYCBwcm9wZXJ0aWVzIGZyb20gYW4gb2JqZWN0IHdoZW4gdGhlcmUgYXJlIG1hbmRhdG9yeSBrZXlzIHdpdGggYHVuZGVmaW5lZGAgdmFsdWVzLlxuICpcbiAqIEB0eXBlUGFyYW0gVHlwZSAtIFRoZSB0eXBlIG9mIHRoZSBvYmplY3QuXG4gKiBAdHlwZVBhcmFtIEtleXNUb0tlZXAgLSBUaGUga2V5cyB0byBrZWVwLlxuICogQHBhcmFtIGFyZ3MgLSBUaGUgYXJndW1lbnRzIHRvIHRoZSBmdW5jdGlvbi5cbiAqIEByZXR1cm5zIFRoZSBvYmplY3Qgd2l0aCBhbGwgYHVuZGVmaW5lZGAgcHJvcGVydGllcyByZW1vdmVkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVtb3ZlVW5kZWZpbmVkUHJvcGVydGllczxUeXBlIGV4dGVuZHMgb2JqZWN0LCBjb25zdCBLZXlzVG9LZWVwIGV4dGVuZHMgcmVhZG9ubHkgc3RyaW5nW10+KFxuICAuLi5hcmdzOiBSZW1vdmVVbmRlZmluZWRXaXRoS2V5c092ZXJsb2FkPFR5cGUsIEtleXNUb0tlZXA+XG4pOiBUeXBlO1xuLyoqXG4gKiBSZW1vdmVzIGFsbCBgdW5kZWZpbmVkYCBwcm9wZXJ0aWVzIGZyb20gYW4gb2JqZWN0LlxuICpcbiAqIEB0eXBlUGFyYW0gVHlwZSAtIFRoZSB0eXBlIG9mIHRoZSBvYmplY3QuXG4gKiBAdHlwZVBhcmFtIEtleXNUb0tlZXAgLSBUaGUga2V5cyB0byBrZWVwLlxuICogQHBhcmFtIG9iaiAtIFRoZSBvYmplY3QgdG8gcmVtb3ZlIGB1bmRlZmluZWRgIHByb3BlcnRpZXMgZnJvbS5cbiAqIEBwYXJhbSBrZXlzVG9LZWVwIC0gVGhlIGtleXMgdG8ga2VlcC5cbiAqIEByZXR1cm5zIFRoZSBvYmplY3Qgd2l0aCBhbGwgYHVuZGVmaW5lZGAgcHJvcGVydGllcyByZW1vdmVkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVtb3ZlVW5kZWZpbmVkUHJvcGVydGllczxUeXBlIGV4dGVuZHMgb2JqZWN0PihvYmo6IFR5cGUsIGtleXNUb0tlZXA/OiByZWFkb25seSBzdHJpbmdbXSk6IFR5cGUge1xuICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhvYmopIGFzIFtTdHJpbmdLZXlzPFR5cGU+LCB1bmtub3duXVtdKSB7XG4gICAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQgJiYgIWtleXNUb0tlZXA/LmluY2x1ZGVzKGtleSBhcyBzdHJpbmcpKSB7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWR5bmFtaWMtZGVsZXRlIC0tIFdlIGhhdmUgbm8gb3RoZXIgd2F5IHRvIGRlbGV0ZSB0aGUgcHJvcGVydHkuXG4gICAgICBkZWxldGUgb2JqW2tleV07XG4gICAgfVxuICB9XG4gIHJldHVybiBvYmo7XG59XG5cbi8qKlxuICogU2V0cyB0aGUgdmFsdWUgb2YgYSBuZXN0ZWQgcHJvcGVydHkgaW4gYW4gb2JqZWN0LlxuICpcbiAqIEBwYXJhbSBvYmogLSBUaGUgb2JqZWN0IHRvIHNldCB0aGUgbmVzdGVkIHByb3BlcnR5IHZhbHVlIGluLlxuICogQHBhcmFtIHBhdGggLSBUaGUgcGF0aCB0byB0aGUgbmVzdGVkIHByb3BlcnR5LlxuICogQHBhcmFtIHZhbHVlIC0gVGhlIHZhbHVlIHRvIHNldC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNldE5lc3RlZFByb3BlcnR5VmFsdWUob2JqOiBHZW5lcmljT2JqZWN0LCBwYXRoOiBzdHJpbmcsIHZhbHVlOiB1bmtub3duKTogdm9pZCB7XG4gIGNvbnN0IGVycm9yID0gbmV3IEVycm9yKGBQcm9wZXJ0eSBwYXRoICR7cGF0aH0gbm90IGZvdW5kYCk7XG4gIGxldCBub2RlOiBHZW5lcmljT2JqZWN0IHwgdW5kZWZpbmVkID0gb2JqO1xuICBjb25zdCBrZXlzID0gcGF0aC5zcGxpdChLRVlfU0VQQVJBVE9SKTtcbiAgZm9yIChjb25zdCBrZXkgb2Yga2V5cy5zbGljZSgwLCAtMSkpIHtcbiAgICBpZiAobm9kZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG4gICAgbm9kZSA9IG5vZGVba2V5XSBhcyBHZW5lcmljT2JqZWN0IHwgdW5kZWZpbmVkO1xuICB9XG5cbiAgY29uc3QgbGFzdEtleSA9IGVuc3VyZU5vbk51bGxhYmxlKGtleXMuYXQoLTEpKTtcbiAgaWYgKG5vZGUgPT09IHVuZGVmaW5lZCkge1xuICAgIHRocm93IGVycm9yO1xuICB9XG5cbiAgbm9kZVtsYXN0S2V5XSA9IHZhbHVlO1xufVxuXG4vKipcbiAqIENvbnZlcnRzIGEgZ2l2ZW4gdmFsdWUgdG8gYSBKU09OIHN0cmluZy5cbiAqXG4gKiBAcGFyYW0gdmFsdWUgLSBUaGUgdmFsdWUgdG8gYmUgY29udmVydGVkIHRvIEpTT04uIFRoaXMgY2FuIGJlIG9mIGFueSB0eXBlLlxuICogQHBhcmFtIG9wdGlvbnMgLSBPcHRpb25zIGZvciBjdXN0b21pemluZyB0aGUgSlNPTiBjb252ZXJzaW9uIHByb2Nlc3MuXG4gKiBAcmV0dXJucyBUaGUgSlNPTiBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhlIGlucHV0IHZhbHVlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uKHZhbHVlOiB1bmtub3duLCBvcHRpb25zOiBQYXJ0aWFsPFRvSnNvbk9wdGlvbnM+ID0ge30pOiBzdHJpbmcge1xuICBjb25zdCBERUZBVUxUX09QVElPTlM6IFJlc29sdmVkVG9Kc29uT3B0aW9ucyA9IHtcbiAgICBmdW5jdGlvbkhhbmRsaW5nTW9kZTogRnVuY3Rpb25IYW5kbGluZ01vZGUuRXhjbHVkZSxcbiAgICBtYXhEZXB0aDogLTEsXG4gICAgc2hvdWxkQ2F0Y2hUb0pTT05FcnJvcnM6IGZhbHNlLFxuICAgIHNob3VsZEhhbmRsZUNpcmN1bGFyUmVmZXJlbmNlczogZmFsc2UsXG4gICAgc2hvdWxkSGFuZGxlRXJyb3JzOiBmYWxzZSxcbiAgICBzaG91bGRIYW5kbGVVbmRlZmluZWQ6IGZhbHNlLFxuICAgIHNob3VsZFNvcnRLZXlzOiBmYWxzZSxcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tbWFnaWMtbnVtYmVycyAtLSBFeHRyYWN0aW5nIG1hZ2ljIG51bWJlciBhcyBhIGNvbnN0YW50IHdvdWxkIGJlIHJlcGV0aXRpdmUsIGFzIHRoZSB2YWx1ZSBpcyB1c2VkIG9ubHkgb25jZSBhbmQgaXRzIG5hbWUgd291bGQgYmUgdGhlIHNhbWUgYXMgdGhlIHByb3BlcnR5LlxuICAgIHNwYWNlOiAyLFxuICAgIHRva2VuU3Vic3RpdHV0aW9uczoge1xuICAgICAgY2lyY3VsYXJSZWZlcmVuY2U6IG1ha2VPYmplY3RUb2tlblN1YnN0aXR1dGlvbihUb2tlblN1YnN0aXR1dGlvbktleS5DaXJjdWxhclJlZmVyZW5jZSksXG4gICAgICBtYXhEZXB0aExpbWl0UmVhY2hlZDogbWFrZU9iamVjdFRva2VuU3Vic3RpdHV0aW9uKFRva2VuU3Vic3RpdHV0aW9uS2V5Lk1heERlcHRoTGltaXRSZWFjaGVkKSxcbiAgICAgIHRvSlNPTkZhaWxlZDogbWFrZU9iamVjdFRva2VuU3Vic3RpdHV0aW9uKFRva2VuU3Vic3RpdHV0aW9uS2V5LlRvSlNPTkZhaWxlZClcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgZnVsbE9wdGlvbnMgPSB7XG4gICAgLi4uREVGQVVMVF9PUFRJT05TLFxuICAgIC4uLm9wdGlvbnMsXG4gICAgdG9rZW5TdWJzdGl0dXRpb25zOiB7XG4gICAgICAuLi5ERUZBVUxUX09QVElPTlMudG9rZW5TdWJzdGl0dXRpb25zLFxuICAgICAgLi4ub3B0aW9ucy50b2tlblN1YnN0aXR1dGlvbnNcbiAgICB9XG4gIH07XG5cbiAgaWYgKGZ1bGxPcHRpb25zLm1heERlcHRoID09PSAtMSkge1xuICAgIGZ1bGxPcHRpb25zLm1heERlcHRoID0gSW5maW5pdHk7XG4gIH1cblxuICBjb25zdCBmdW5jdGlvblRleHRzOiBzdHJpbmdbXSA9IFtdO1xuICBjb25zdCB1c2VkT2JqZWN0cyA9IG5ldyBXZWFrU2V0PG9iamVjdD4oKTtcblxuICBjb25zdCBwbGFpbk9iamVjdCA9IHRvUGxhaW5PYmplY3QodmFsdWUsICcnLCAwLCB0cnVlLCBmdWxsT3B0aW9ucywgZnVuY3Rpb25UZXh0cywgdXNlZE9iamVjdHMpO1xuICBsZXQganNvbiA9IGVuc3VyZU5vbk51bGxhYmxlKEpTT04uc3RyaW5naWZ5KHBsYWluT2JqZWN0LCBudWxsLCBmdWxsT3B0aW9ucy5zcGFjZSkpO1xuICBqc29uID0gcmVwbGFjZUFsbChqc29uLCAvXCJcXFtcXFsoPzxLZXk+W0EtWmEtel0rKSg/PEluZGV4PlxcZCopXFxdXFxdXCIvZywgKHsgY2FwdHVyZWRHcm91cEFyZ3M6IFtrZXkgPSAnJywgaW5kZXhTdHIgPSAnJ10gfSkgPT5cbiAgICBhcHBseVN1YnN0aXR1dGlvbnMoe1xuICAgICAgZnVuY3Rpb25UZXh0cyxcbiAgICAgIGluZGV4OiBpbmRleFN0ciA/IHBhcnNlSW50KGluZGV4U3RyLCAxMCkgOiAwLFxuICAgICAga2V5OiBrZXkgYXMgVG9rZW5TdWJzdGl0dXRpb25LZXksXG4gICAgICBzdWJzdGl0dXRpb25zOiBmdWxsT3B0aW9ucy50b2tlblN1YnN0aXR1dGlvbnNcbiAgICB9KSk7XG4gIHJldHVybiBqc29uO1xufVxuXG5mdW5jdGlvbiBhcHBseVN1YnN0aXR1dGlvbnMocGFyYW1zOiBBcHBseVN1YnN0aXR1dGlvbnNQYXJhbXMpOiBNYXliZVJldHVybjxzdHJpbmc+IHtcbiAgc3dpdGNoIChwYXJhbXMua2V5KSB7XG4gICAgY2FzZSBUb2tlblN1YnN0aXR1dGlvbktleS5DaXJjdWxhclJlZmVyZW5jZTpcbiAgICAgIHJldHVybiBwYXJhbXMuc3Vic3RpdHV0aW9ucy5jaXJjdWxhclJlZmVyZW5jZTtcbiAgICBjYXNlIFRva2VuU3Vic3RpdHV0aW9uS2V5LkZ1bmN0aW9uOlxuICAgICAgcmV0dXJuIGVuc3VyZU5vbk51bGxhYmxlKHBhcmFtcy5mdW5jdGlvblRleHRzW3BhcmFtcy5pbmRleF0sIGBGdW5jdGlvbiB3aXRoIGluZGV4ICR7U3RyaW5nKHBhcmFtcy5pbmRleCl9IG5vdCBmb3VuZGApO1xuICAgIGNhc2UgVG9rZW5TdWJzdGl0dXRpb25LZXkuTWF4RGVwdGhMaW1pdFJlYWNoZWQ6XG4gICAgICByZXR1cm4gcGFyYW1zLnN1YnN0aXR1dGlvbnMubWF4RGVwdGhMaW1pdFJlYWNoZWQ7XG4gICAgY2FzZSBUb2tlblN1YnN0aXR1dGlvbktleS5NYXhEZXB0aExpbWl0UmVhY2hlZEFycmF5OlxuICAgICAgcmV0dXJuIGBBcnJheSgke1N0cmluZyhwYXJhbXMuaW5kZXgpfSlgO1xuICAgIGNhc2UgVG9rZW5TdWJzdGl0dXRpb25LZXkuVG9KU09ORmFpbGVkOlxuICAgICAgcmV0dXJuIHBhcmFtcy5zdWJzdGl0dXRpb25zLnRvSlNPTkZhaWxlZDtcbiAgICBjYXNlIFRva2VuU3Vic3RpdHV0aW9uS2V5LlVuZGVmaW5lZDpcbiAgICAgIHJldHVybiAndW5kZWZpbmVkJztcbiAgICAvKiB2OCBpZ25vcmUgc3RhcnQgLS0gRXhoYXVzdGl2ZSBzd2l0Y2ggZ3VhcmQ7IGRlZmF1bHQgYnJhbmNoIGlzIHVucmVhY2hhYmxlLiAqL1xuICAgIGRlZmF1bHQ6XG4gICAgICBhc3NlcnQoZmFsc2UsICdVbmhhbmRsZWQgc3Vic3RpdHV0aW9uIGtleScpO1xuICAgICAgLyogdjggaWdub3JlIHN0b3AgKi9cbiAgfVxufVxuXG5mdW5jdGlvbiBhc3NpZ25XaXRoTm9uRW51bWVyYWJsZVByb3BlcnRpZXNJbXBsKHRhcmdldDogb2JqZWN0LCAuLi5zb3VyY2VzOiBvYmplY3RbXSk6IG9iamVjdCB7XG4gIGZvciAoY29uc3Qgc291cmNlIG9mIHNvdXJjZXMpIHtcbiAgICBjb25zdCBkZXNjcmlwdG9ycyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKHNvdXJjZSk7XG5cbiAgICBmb3IgKGNvbnN0IFtrZXksIGRlc2NyaXB0b3JdIG9mIE9iamVjdC5lbnRyaWVzKGRlc2NyaXB0b3JzKSkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgLy8gQXZvaWQgcmVkZWZpbmluZyByZWFkLW9ubHkgcHJvcGVydGllcyAoZXNwZWNpYWxseSBgcHJvdG90eXBlYClcbiAgICAgICAgaWYgKFxuICAgICAgICAgIGtleSA9PT0gJ3Byb3RvdHlwZSdcbiAgICAgICAgICB8fCAoT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0YXJnZXQsIGtleSk/LndyaXRhYmxlID09PSBmYWxzZVxuICAgICAgICAgICAgJiYgIU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodGFyZ2V0LCBrZXkpPy5jb25maWd1cmFibGUpXG4gICAgICAgICkge1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBkZXNjcmlwdG9yKTtcbiAgICAgIH0gY2F0Y2gge1xuICAgICAgICAvLyBTaWxlbnRseSBpZ25vcmUgaWYgZGVmaW5lUHJvcGVydHkgZmFpbHNcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjb25zdCBzb3VyY2VQcm90b3R5cGVzID0gc291cmNlc1xuICAgIC5tYXAoKHNvdXJjZSkgPT4gZ2V0UHJvdG90eXBlT2Y8b2JqZWN0IHwgdW5kZWZpbmVkPihzb3VyY2UpKVxuICAgIC5maWx0ZXIoKHByb3RvKTogcHJvdG8gaXMgb2JqZWN0ID0+ICEhcHJvdG8pO1xuXG4gIGlmIChzb3VyY2VQcm90b3R5cGVzLmxlbmd0aCA+IDApIHtcbiAgICBjb25zdCB0YXJnZXRQcm90b3R5cGUgPSBhc3NpZ25XaXRoTm9uRW51bWVyYWJsZVByb3BlcnRpZXNJbXBsKHt9LCBnZXRQcm90b3R5cGVPZih0YXJnZXQpLCAuLi5zb3VyY2VQcm90b3R5cGVzKTtcblxuICAgIHRyeSB7XG4gICAgICBPYmplY3Quc2V0UHJvdG90eXBlT2YodGFyZ2V0LCB0YXJnZXRQcm90b3R5cGUpO1xuICAgIH0gY2F0Y2gge1xuICAgICAgLy8gU2lsZW50bHkgaWdub3JlIGlmIHNldFByb3RvdHlwZU9mIGZhaWxzXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRhcmdldDtcbn1cblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgLS0gYHVua25vd25gIGRvZXNuJ3Qgd29yaywgZ2V0dGluZyBjb21waWxlciBlcnJvcnMuXG5mdW5jdGlvbiBjcmVhdGVFcXVhbGl0eUNvbXBhcmVyRW50cmllczxjb25zdCBUIGV4dGVuZHMgcmVhZG9ubHkgRXF1YWxpdHlDb21wYXJlckVudHJ5PGFueT5bXT4oZW50cmllczogVCk6IFQge1xuICByZXR1cm4gZW50cmllcztcbn1cblxuZnVuY3Rpb24gZGVlcEVxdWFsQXJyYXlCdWZmZXIoYTogQXJyYXlCdWZmZXIsIGI6IEFycmF5QnVmZmVyKTogYm9vbGVhbiB7XG4gIGlmIChhLmJ5dGVMZW5ndGggIT09IGIuYnl0ZUxlbmd0aCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGNvbnN0IHZpZXdBID0gbmV3IFVpbnQ4QXJyYXkoYSk7XG4gIGNvbnN0IHZpZXdCID0gbmV3IFVpbnQ4QXJyYXkoYik7XG4gIHJldHVybiBkZWVwRXF1YWwodmlld0EsIHZpZXdCKTtcbn1cblxuZnVuY3Rpb24gZGVlcEVxdWFsRGF0ZShhOiBEYXRlLCBiOiBEYXRlKTogYm9vbGVhbiB7XG4gIHJldHVybiBhLmdldFRpbWUoKSA9PT0gYi5nZXRUaW1lKCk7XG59XG5cbmZ1bmN0aW9uIGRlZXBFcXVhbE1hcChhOiBNYXA8dW5rbm93biwgdW5rbm93bj4sIGI6IE1hcDx1bmtub3duLCB1bmtub3duPik6IGJvb2xlYW4ge1xuICBpZiAoYS5zaXplICE9PSBiLnNpemUpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBhLmVudHJpZXMoKSkge1xuICAgIGlmICghYi5oYXMoa2V5KSB8fCAhZGVlcEVxdWFsKHZhbHVlLCBiLmdldChrZXkpKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufVxuXG5mdW5jdGlvbiBkZWVwRXF1YWxSZWdFeHAoYTogUmVnRXhwLCBiOiBSZWdFeHApOiBib29sZWFuIHtcbiAgcmV0dXJuIGEuc291cmNlID09PSBiLnNvdXJjZSAmJiBhLmZsYWdzID09PSBiLmZsYWdzO1xufVxuXG5mdW5jdGlvbiBkZWVwRXF1YWxTZXQoYTogU2V0PHVua25vd24+LCBiOiBTZXQ8dW5rbm93bj4pOiBib29sZWFuIHtcbiAgaWYgKGEuc2l6ZSAhPT0gYi5zaXplKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgZm9yIChjb25zdCB2YWx1ZUEgb2YgYSkge1xuICAgIGlmIChiLmhhcyh2YWx1ZUEpKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgbGV0IGZvdW5kID0gZmFsc2U7XG4gICAgZm9yIChjb25zdCB2YWx1ZUIgb2YgYikge1xuICAgICAgaWYgKGRlZXBFcXVhbCh2YWx1ZUEsIHZhbHVlQikpIHtcbiAgICAgICAgZm91bmQgPSB0cnVlO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKCFmb3VuZCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufVxuXG5mdW5jdGlvbiBkZWVwRXF1YWxUeXBlZChhOiB1bmtub3duLCBiOiB1bmtub3duKTogYm9vbGVhbiB8IHVuZGVmaW5lZCB7XG4gIGZvciAoY29uc3QgeyBjb25zdHJ1Y3RvciwgZXF1YWxpdHlDb21wYXJlciB9IG9mIGVxdWFsaXR5Q29tcGFyZXJFbnRyaWVzKSB7XG4gICAgaWYgKGEgaW5zdGFuY2VvZiBjb25zdHJ1Y3RvciAmJiBiIGluc3RhbmNlb2YgY29uc3RydWN0b3IpIHtcbiAgICAgIHJldHVybiBlcXVhbGl0eUNvbXBhcmVyKGEgYXMgbmV2ZXIsIGIgYXMgbmV2ZXIpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gdW5kZWZpbmVkO1xufVxuXG5mdW5jdGlvbiBoYW5kbGVBcnJheShcbiAgdmFsdWU6IHVua25vd25bXSxcbiAgZGVwdGg6IG51bWJlcixcbiAgY2FuVXNlVG9KU09OOiBib29sZWFuLFxuICBmdWxsT3B0aW9uczogVG9Kc29uT3B0aW9ucyxcbiAgZnVuY3Rpb25UZXh0czogc3RyaW5nW10sXG4gIHVzZWRPYmplY3RzOiBXZWFrU2V0PG9iamVjdD5cbik6IHVua25vd24ge1xuICBpZiAoZGVwdGggPiBmdWxsT3B0aW9ucy5tYXhEZXB0aCkge1xuICAgIHJldHVybiBtYWtlUGxhY2Vob2xkZXIoVG9rZW5TdWJzdGl0dXRpb25LZXkuTWF4RGVwdGhMaW1pdFJlYWNoZWRBcnJheSwgdmFsdWUubGVuZ3RoKTtcbiAgfVxuXG4gIHJldHVybiB2YWx1ZS5tYXAoKGl0ZW0sIGluZGV4KSA9PiB0b1BsYWluT2JqZWN0KGl0ZW0sIFN0cmluZyhpbmRleCksIGRlcHRoICsgMSwgY2FuVXNlVG9KU09OLCBmdWxsT3B0aW9ucywgZnVuY3Rpb25UZXh0cywgdXNlZE9iamVjdHMpKTtcbn1cblxuZnVuY3Rpb24gaGFuZGxlQ2lyY3VsYXJSZWZlcmVuY2UodmFsdWU6IG9iamVjdCwga2V5OiBzdHJpbmcsIGZ1bGxPcHRpb25zOiBUb0pzb25PcHRpb25zKTogdW5rbm93biB7XG4gIGlmIChmdWxsT3B0aW9ucy5zaG91bGRIYW5kbGVDaXJjdWxhclJlZmVyZW5jZXMpIHtcbiAgICByZXR1cm4gbWFrZVBsYWNlaG9sZGVyKFRva2VuU3Vic3RpdHV0aW9uS2V5LkNpcmN1bGFyUmVmZXJlbmNlKTtcbiAgfVxuICBjb25zdCB2YWx1ZUNvbnN0cnVjdG9yTmFtZSA9IHZhbHVlLmNvbnN0cnVjdG9yLm5hbWUgfHwgJ09iamVjdCc7XG4gIHRocm93IG5ldyBUeXBlRXJyb3IoYENvbnZlcnRpbmcgY2lyY3VsYXIgc3RydWN0dXJlIHRvIEpTT05cbi0tPiBzdGFydGluZyBhdCBvYmplY3Qgd2l0aCBjb25zdHJ1Y3RvciAnJHt2YWx1ZUNvbnN0cnVjdG9yTmFtZX0nXG4tLS0gcHJvcGVydHkgJyR7a2V5fScgY2xvc2VzIHRoZSBjaXJjbGVgKTtcbn1cblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnNhZmUtZnVuY3Rpb24tdHlwZSAtLSBXZSBuZWVkIHRvIHVzZSBgRnVuY3Rpb25gIHR5cGUgdG8gaGFuZGxlIHRoZW0gc2VwYXJhdGVseS5cbmZ1bmN0aW9uIGhhbmRsZUZ1bmN0aW9uKHZhbHVlOiBGdW5jdGlvbiwgZnVuY3Rpb25UZXh0czogc3RyaW5nW10sIGZ1bGxPcHRpb25zOiBUb0pzb25PcHRpb25zKTogdW5rbm93biB7XG4gIGlmIChmdWxsT3B0aW9ucy5mdW5jdGlvbkhhbmRsaW5nTW9kZSA9PT0gRnVuY3Rpb25IYW5kbGluZ01vZGUuRXhjbHVkZSkge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbiAgY29uc3QgaW5kZXggPSBmdW5jdGlvblRleHRzLmxlbmd0aDtcbiAgY29uc3QgZnVuY3Rpb25UZXh0ID0gZnVsbE9wdGlvbnMuZnVuY3Rpb25IYW5kbGluZ01vZGUgPT09IEZ1bmN0aW9uSGFuZGxpbmdNb2RlLkZ1bGxcbiAgICA/IGdldEZ1bmN0aW9uRXhwcmVzc2lvblN0cmluZyh2YWx1ZSlcbiAgICA6IGBmdW5jdGlvbiAke3ZhbHVlLm5hbWUgfHwgJ2Fub255bW91cyd9KCkgeyAvKiAuLi4gKi8gfWA7XG4gIGZ1bmN0aW9uVGV4dHMucHVzaChmdW5jdGlvblRleHQpO1xuICByZXR1cm4gbWFrZVBsYWNlaG9sZGVyKFRva2VuU3Vic3RpdHV0aW9uS2V5LkZ1bmN0aW9uLCBpbmRleCk7XG59XG5cbmZ1bmN0aW9uIGhhbmRsZU9iamVjdChcbiAgdmFsdWU6IG9iamVjdCxcbiAga2V5OiBzdHJpbmcsXG4gIGRlcHRoOiBudW1iZXIsXG4gIGNhblVzZVRvSlNPTjogYm9vbGVhbixcbiAgZnVsbE9wdGlvbnM6IFRvSnNvbk9wdGlvbnMsXG4gIGZ1bmN0aW9uVGV4dHM6IHN0cmluZ1tdLFxuICB1c2VkT2JqZWN0czogV2Vha1NldDxvYmplY3Q+XG4pOiB1bmtub3duIHtcbiAgaWYgKHVzZWRPYmplY3RzLmhhcyh2YWx1ZSkpIHtcbiAgICByZXR1cm4gaGFuZGxlQ2lyY3VsYXJSZWZlcmVuY2UodmFsdWUsIGtleSwgZnVsbE9wdGlvbnMpO1xuICB9XG5cbiAgdXNlZE9iamVjdHMuYWRkKHZhbHVlKTtcblxuICBpZiAoY2FuVXNlVG9KU09OKSB7XG4gICAgY29uc3QgdG9KU09OUmVzdWx0ID0gdHJ5SGFuZGxlVG9KU09OKHZhbHVlLCBrZXksIGRlcHRoLCBmdWxsT3B0aW9ucywgZnVuY3Rpb25UZXh0cywgdXNlZE9iamVjdHMpO1xuICAgIGlmICh0b0pTT05SZXN1bHQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIHRvSlNPTlJlc3VsdDtcbiAgICB9XG4gIH1cblxuICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICByZXR1cm4gaGFuZGxlQXJyYXkodmFsdWUsIGRlcHRoLCBjYW5Vc2VUb0pTT04sIGZ1bGxPcHRpb25zLCBmdW5jdGlvblRleHRzLCB1c2VkT2JqZWN0cyk7XG4gIH1cblxuICBpZiAoZGVwdGggPiBmdWxsT3B0aW9ucy5tYXhEZXB0aCkge1xuICAgIHJldHVybiBtYWtlUGxhY2Vob2xkZXIoVG9rZW5TdWJzdGl0dXRpb25LZXkuTWF4RGVwdGhMaW1pdFJlYWNoZWQpO1xuICB9XG5cbiAgaWYgKHZhbHVlIGluc3RhbmNlb2YgRXJyb3IgJiYgZnVsbE9wdGlvbnMuc2hvdWxkSGFuZGxlRXJyb3JzKSB7XG4gICAgcmV0dXJuIGVycm9yVG9TdHJpbmcodmFsdWUpO1xuICB9XG5cbiAgcmV0dXJuIGhhbmRsZVBsYWluT2JqZWN0KHZhbHVlLCBkZXB0aCwgY2FuVXNlVG9KU09OLCBmdWxsT3B0aW9ucywgZnVuY3Rpb25UZXh0cywgdXNlZE9iamVjdHMpO1xufVxuXG5mdW5jdGlvbiBoYW5kbGVQbGFpbk9iamVjdChcbiAgdmFsdWU6IG9iamVjdCxcbiAgZGVwdGg6IG51bWJlcixcbiAgY2FuVXNlVG9KU09OOiBib29sZWFuLFxuICBmdWxsT3B0aW9uczogVG9Kc29uT3B0aW9ucyxcbiAgZnVuY3Rpb25UZXh0czogc3RyaW5nW10sXG4gIHVzZWRPYmplY3RzOiBXZWFrU2V0PG9iamVjdD5cbik6IHVua25vd24ge1xuICBjb25zdCBlbnRyaWVzID0gT2JqZWN0LmVudHJpZXModmFsdWUpO1xuICBpZiAoZnVsbE9wdGlvbnMuc2hvdWxkU29ydEtleXMpIHtcbiAgICBlbnRyaWVzLnNvcnQoKFtrZXkxXSwgW2tleTJdKSA9PiBrZXkxLmxvY2FsZUNvbXBhcmUoa2V5MikpO1xuICB9XG5cbiAgcmV0dXJuIE9iamVjdC5mcm9tRW50cmllcyhcbiAgICBlbnRyaWVzLm1hcCgoW2tleTIsIHZhbHVlMl0pID0+IFtcbiAgICAgIGtleTIsXG4gICAgICB0b1BsYWluT2JqZWN0KHZhbHVlMiwga2V5MiwgZGVwdGggKyAxLCBjYW5Vc2VUb0pTT04sIGZ1bGxPcHRpb25zLCBmdW5jdGlvblRleHRzLCB1c2VkT2JqZWN0cylcbiAgICBdKVxuICApO1xufVxuXG5mdW5jdGlvbiBtYWtlT2JqZWN0VG9rZW5TdWJzdGl0dXRpb24oa2V5OiBUb2tlblN1YnN0aXR1dGlvbktleSk6IHN0cmluZyB7XG4gIHJldHVybiBgeyBcIltbJHtrZXl9XV1cIjogbnVsbCB9YDtcbn1cblxuZnVuY3Rpb24gbWFrZVBsYWNlaG9sZGVyKGtleTogVG9rZW5TdWJzdGl0dXRpb25LZXksIGluZGV4PzogbnVtYmVyKTogc3RyaW5nIHtcbiAgcmV0dXJuIGBbWyR7a2V5fSR7aW5kZXggPyBTdHJpbmcoaW5kZXgpIDogJyd9XV1gO1xufVxuXG5mdW5jdGlvbiB0b1BsYWluT2JqZWN0KFxuICB2YWx1ZTogdW5rbm93bixcbiAga2V5OiBzdHJpbmcsXG4gIGRlcHRoOiBudW1iZXIsXG4gIGNhblVzZVRvSlNPTjogYm9vbGVhbixcbiAgZnVsbE9wdGlvbnM6IFRvSnNvbk9wdGlvbnMsXG4gIGZ1bmN0aW9uVGV4dHM6IHN0cmluZ1tdLFxuICB1c2VkT2JqZWN0czogV2Vha1NldDxvYmplY3Q+XG4pOiB1bmtub3duIHtcbiAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gKGRlcHRoID09PSAwIHx8IGZ1bGxPcHRpb25zLnNob3VsZEhhbmRsZVVuZGVmaW5lZClcbiAgICAgID8gbWFrZVBsYWNlaG9sZGVyKFRva2VuU3Vic3RpdHV0aW9uS2V5LlVuZGVmaW5lZClcbiAgICAgIDogdW5kZWZpbmVkO1xuICB9XG5cbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHJldHVybiBoYW5kbGVGdW5jdGlvbih2YWx1ZSwgZnVuY3Rpb25UZXh0cywgZnVsbE9wdGlvbnMpO1xuICB9XG5cbiAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ29iamVjdCcgfHwgdmFsdWUgPT09IG51bGwpIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cblxuICByZXR1cm4gaGFuZGxlT2JqZWN0KHZhbHVlLCBrZXksIGRlcHRoLCBjYW5Vc2VUb0pTT04sIGZ1bGxPcHRpb25zLCBmdW5jdGlvblRleHRzLCB1c2VkT2JqZWN0cyk7XG59XG5cbmZ1bmN0aW9uIHRyeUhhbmRsZVRvSlNPTihcbiAgdmFsdWU6IG9iamVjdCxcbiAga2V5OiBzdHJpbmcsXG4gIGRlcHRoOiBudW1iZXIsXG4gIGZ1bGxPcHRpb25zOiBUb0pzb25PcHRpb25zLFxuICBmdW5jdGlvblRleHRzOiBzdHJpbmdbXSxcbiAgdXNlZE9iamVjdHM6IFdlYWtTZXQ8b2JqZWN0PlxuKTogdW5rbm93biB7XG4gIGNvbnN0IHRvSlNPTiA9ICh2YWx1ZSBhcyBQYXJ0aWFsPEpTT05TZXJpYWxpemFibGU+KS50b0pTT047XG4gIGlmICh0eXBlb2YgdG9KU09OID09PSAnZnVuY3Rpb24nKSB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IG5ld1ZhbHVlID0gdG9KU09OLmNhbGwodmFsdWUsIGtleSk7XG4gICAgICByZXR1cm4gdG9QbGFpbk9iamVjdChuZXdWYWx1ZSwga2V5LCBkZXB0aCwgZmFsc2UsIGZ1bGxPcHRpb25zLCBmdW5jdGlvblRleHRzLCB1c2VkT2JqZWN0cyk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgaWYgKGZ1bGxPcHRpb25zLnNob3VsZENhdGNoVG9KU09ORXJyb3JzKSB7XG4gICAgICAgIHJldHVybiBtYWtlUGxhY2Vob2xkZXIoVG9rZW5TdWJzdGl0dXRpb25LZXkuVG9KU09ORmFpbGVkKTtcbiAgICAgIH1cbiAgICAgIHRocm93IGU7XG4gICAgfVxuICB9XG4gIHJldHVybiB1bmRlZmluZWQ7XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFtQkEsU0FBUyxxQkFBcUI7QUFDOUIsU0FBUyxtQ0FB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aUJBQWlCLFNBQVMsWUFBWSxvQkFBb0I7QUFDNUQsV0FBTyxjQUFjLEtBQUs7QUFBQSxFQUM1QjtBQUVBLFNBQU8sa0JBQWtCLE9BQU8sT0FBTyxjQUFjLGFBQWEsZUFBZSxXQUFXO0FBQzlGO0FBRUEsU0FBUyxrQkFDUCxPQUNBLE9BQ0EsY0FDQSxhQUNBLGVBQ0EsYUFDUztBQUNULFFBQU0sVUFBVSxPQUFPLFFBQVEsS0FBSztBQUNwQyxNQUFJLFlBQVksZ0JBQWdCO0FBQzlCLFlBQVEsS0FBSyxDQUFDLENBQUMsSUFBSSxHQUFHLENBQUMsSUFBSSxNQUFNLEtBQUssY0FBYyxJQUFJLENBQUM7QUFBQSxFQUMzRDtBQUVBLFNBQU8sT0FBTztBQUFBLElBQ1osUUFBUSxJQUFJLENBQUMsQ0FBQyxNQUFNLE1BQU0sTUFBTTtBQUFBLE1BQzlCO0FBQUEsTUFDQSxjQUFjLFFBQVEsTUFBTSxRQUFRLEdBQUcsY0FBYyxhQUFhLGVBQWUsV0FBVztBQUFBLElBQzlGLENBQUM7QUFBQSxFQUNIO0FBQ0Y7QUFFQSxTQUFTLDRCQUE0QixLQUFtQztBQUN0RSxTQUFPLFFBQVEsR0FBRztBQUNwQjtBQUVBLFNBQVMsZ0JBQWdCLEtBQTJCLE9BQXdCO0FBQzFFLFNBQU8sS0FBSyxHQUFHLEdBQUcsUUFBUSxPQUFPLEtBQUssSUFBSSxFQUFFO0FBQzlDO0FBRUEsU0FBUyxjQUNQLE9BQ0EsS0FDQSxPQUNBLGNBQ0EsYUFDQSxlQUNBLGFBQ1M7QUFDVCxNQUFJLFVBQVUsUUFBVztBQUN2QixXQUFRLFVBQVUsS0FBSyxZQUFZLHdCQUMvQixnQkFBZ0IsMkJBQThCLElBQzlDO0FBQUEsRUFDTjtBQUVBLE1BQUksT0FBTyxVQUFVLFlBQVk7QUFDL0IsV0FBTyxlQUFlLE9BQU8sZUFBZSxXQUFXO0FBQUEsRUFDekQ7QUFFQSxNQUFJLE9BQU8sVUFBVSxZQUFZLFVBQVUsTUFBTTtBQUMvQyxXQUFPO0FBQUEsRUFDVDtBQUVBLFNBQU8sYUFBYSxPQUFPLEtBQUssT0FBTyxjQUFjLGFBQWEsZUFBZSxXQUFXO0FBQzlGO0FBRUEsU0FBUyxnQkFDUCxPQUNBLEtBQ0EsT0FDQSxhQUNBLGVBQ0EsYUFDUztBQUNULFFBQU0sU0FBVSxNQUFvQztBQUNwRCxNQUFJLE9BQU8sV0FBVyxZQUFZO0FBQ2hDLFFBQUk7QUFDRixZQUFNLFdBQVcsT0FBTyxLQUFLLE9BQU8sR0FBRztBQUN2QyxhQUFPLGNBQWMsVUFBVSxLQUFLLE9BQU8sT0FBTyxhQUFhLGVBQWUsV0FBVztBQUFBLElBQzNGLFNBQVMsR0FBRztBQUNWLFVBQUksWUFBWSx5QkFBeUI7QUFDdkMsZUFBTyxnQkFBZ0IsaUNBQWlDO0FBQUEsTUFDMUQ7QUFDQSxZQUFNO0FBQUEsSUFDUjtBQUFBLEVBQ0Y7QUFDQSxTQUFPO0FBQ1Q7IiwKICAibmFtZXMiOiBbIkZ1bmN0aW9uSGFuZGxpbmdNb2RlIl0KfQo=
439
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL29iamVjdC11dGlscy50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIENvbnRhaW5zIHV0aWxpdHkgZnVuY3Rpb25zIGZvciBPYmplY3RzLlxuICovXG5cbmltcG9ydCB0eXBlIHtcbiAgQ29uc3RydWN0b3IsXG4gIFJlcXVpcmVkS2V5c09mLFxuICBVbmRlZmluZWRPblBhcnRpYWxEZWVwXG59IGZyb20gJ3R5cGUtZmVzdCc7XG5cbmltcG9ydCB0eXBlIHsgR2VuZXJpY09iamVjdCB9IGZyb20gJy4vdHlwZS1ndWFyZHMudHMnO1xuaW1wb3J0IHR5cGUge1xuICBFeGFjdE1lbWJlcnMsXG4gIE1heWJlUmV0dXJuLFxuICBTdHJpbmdLZXlzXG59IGZyb20gJy4vdHlwZS50cyc7XG5cbmltcG9ydCB7IGVycm9yVG9TdHJpbmcgfSBmcm9tICcuL2Vycm9yLnRzJztcbmltcG9ydCB7IGdldEZ1bmN0aW9uRXhwcmVzc2lvblN0cmluZyB9IGZyb20gJy4vZnVuY3Rpb24udHMnO1xuaW1wb3J0IHsgcmVwbGFjZUFsbCB9IGZyb20gJy4vc3RyaW5nLnRzJztcbmltcG9ydCB7XG4gIGFzc2VydCxcbiAgZW5zdXJlR2VuZXJpY09iamVjdCxcbiAgZW5zdXJlTm9uTnVsbGFibGVcbn0gZnJvbSAnLi90eXBlLWd1YXJkcy50cyc7XG5cbi8qKlxuICogU3BlY2lmaWVzIGhvdyBmdW5jdGlvbnMgc2hvdWxkIGJlIGhhbmRsZWQgaW4gdGhlIEpTT04gb3V0cHV0LlxuICovXG5leHBvcnQgZW51bSBGdW5jdGlvbkhhbmRsaW5nTW9kZSB7XG4gIC8qKlxuICAgKiBFeGNsdWRlcyBmdW5jdGlvbnMgZnJvbSB0aGUgSlNPTiBvdXRwdXQuXG4gICAqL1xuICBFeGNsdWRlID0gJ2V4Y2x1ZGUnLFxuICAvKipcbiAgICogSW5jbHVkZXMgdGhlIGZ1bGwgZnVuY3Rpb24gZGVmaW5pdGlvbiBpbiB0aGUgSlNPTiBvdXRwdXQuXG4gICAqL1xuICBGdWxsID0gJ2Z1bGwnLFxuICAvKipcbiAgICogSW5jbHVkZXMgb25seSB0aGUgZnVuY3Rpb24gbmFtZSBpbiB0aGUgSlNPTiBvdXRwdXQuXG4gICAqL1xuICBOYW1lT25seSA9ICduYW1lT25seSdcbn1cblxuZW51bSBUb2tlblN1YnN0aXR1dGlvbktleSB7XG4gIENpcmN1bGFyUmVmZXJlbmNlID0gJ0NpcmN1bGFyUmVmZXJlbmNlJyxcbiAgRnVuY3Rpb24gPSAnRnVuY3Rpb24nLFxuICBNYXhEZXB0aExpbWl0UmVhY2hlZCA9ICdNYXhEZXB0aExpbWl0UmVhY2hlZCcsXG4gIE1heERlcHRoTGltaXRSZWFjaGVkQXJyYXkgPSAnTWF4RGVwdGhMaW1pdFJlYWNoZWRBcnJheScsXG4gIFRvSlNPTkZhaWxlZCA9ICdUb0pTT05GYWlsZWQnLFxuICBVbmRlZmluZWQgPSAnVW5kZWZpbmVkJ1xufVxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIHtAbGluayB0b0pzb259LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRvSnNvbk9wdGlvbnMge1xuICAvKipcbiAgICogU3BlY2lmaWVzIGhvdyBmdW5jdGlvbnMgc2hvdWxkIGJlIGhhbmRsZWQgaW4gdGhlIEpTT04gb3V0cHV0IChkZWZhdWx0OiBgZXhjbHVkZWApLlxuICAgKi9cbiAgcmVhZG9ubHkgZnVuY3Rpb25IYW5kbGluZ01vZGU6IEZ1bmN0aW9uSGFuZGxpbmdNb2RlO1xuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgdGhlIG1heGltdW0gZGVwdGggb2YgbmVzdGVkIG9iamVjdHMgdG8gaW5jbHVkZSBpbiB0aGUgSlNPTiBvdXRwdXQuXG4gICAqIFVzZSBgLTFgIGZvciBubyBsaW1pdC5cbiAgICogRGVmYXVsdHMgdG8gYC0xYC5cbiAgICovXG4gIHJlYWRvbmx5IG1heERlcHRoOiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFNwZWNpZmllcyB3aGV0aGVyIHRvIGNhdGNoIGVycm9ycyBpbiBgdG9KU09OKClgIGFuZCByZXBsYWNlIHRoZW0gd2l0aCBhIHBsYWNlaG9sZGVyLlxuICAgKiBEZWZhdWx0cyB0byBgZmFsc2VgLlxuICAgKi9cbiAgcmVhZG9ubHkgc2hvdWxkQ2F0Y2hUb0pTT05FcnJvcnM6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFNwZWNpZmllcyB3aGV0aGVyIHRvIGhhbmRsZSBjaXJjdWxhciByZWZlcmVuY2VzIGluIHRoZSBKU09OIG91dHB1dC5cbiAgICogRGVmYXVsdHMgdG8gYGZhbHNlYC5cbiAgICovXG4gIHJlYWRvbmx5IHNob3VsZEhhbmRsZUNpcmN1bGFyUmVmZXJlbmNlczogYm9vbGVhbjtcblxuICAvKipcbiAgICogU3BlY2lmaWVzIHdoZXRoZXIgdG8gaGFuZGxlIGVycm9ycyBpbiB0aGUgSlNPTiBvdXRwdXQuXG4gICAqIERlZmF1bHRzIHRvIGBmYWxzZWAuXG4gICAqL1xuICByZWFkb25seSBzaG91bGRIYW5kbGVFcnJvcnM6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFNwZWNpZmllcyB3aGV0aGVyIHRvIGhhbmRsZSBgdW5kZWZpbmVkYCB2YWx1ZXMgaW4gdGhlIEpTT04gb3V0cHV0LlxuICAgKiBEZWZhdWx0cyB0byBgZmFsc2VgLlxuICAgKi9cbiAgcmVhZG9ubHkgc2hvdWxkSGFuZGxlVW5kZWZpbmVkOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgd2hldGhlciB0byBzb3J0IHRoZSBrZXlzIG9mIHRoZSBKU09OIG91dHB1dC5cbiAgICogRGVmYXVsdHMgdG8gYGZhbHNlYC5cbiAgICovXG4gIHJlYWRvbmx5IHNob3VsZFNvcnRLZXlzOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgdGhlIGluZGVudGF0aW9uIG9mIHRoZSBKU09OIG91dHB1dC4gVGhpcyBjYW4gYmUgYSBudW1iZXIgb2Ygc3BhY2VzIG9yIGEgc3RyaW5nLiBEZWZhdWx0cyB0byBgMmAuXG4gICAqL1xuICByZWFkb25seSBzcGFjZTogbnVtYmVyIHwgc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgdGhlIHN1YnN0aXR1dGlvbnMgdG8gdXNlIGluIHRoZSBKU09OIG91dHB1dC5cbiAgICovXG4gIHJlYWRvbmx5IHRva2VuU3Vic3RpdHV0aW9uczogUGFydGlhbDxUb2tlblN1YnN0aXR1dGlvbnM+O1xufVxuXG5pbnRlcmZhY2UgQXBwbHlTdWJzdGl0dXRpb25zUGFyYW1zIHtcbiAgcmVhZG9ubHkgZnVuY3Rpb25UZXh0czogcmVhZG9ubHkgc3RyaW5nW107XG4gIHJlYWRvbmx5IGluZGV4OiBudW1iZXI7XG4gIHJlYWRvbmx5IGtleTogVG9rZW5TdWJzdGl0dXRpb25LZXk7XG4gIHJlYWRvbmx5IHN1YnN0aXR1dGlvbnM6IFRva2VuU3Vic3RpdHV0aW9ucztcbn1cblxuaW50ZXJmYWNlIEVxdWFsaXR5Q29tcGFyZXJFbnRyeTxUPiB7XG4gIGNvbnN0cnVjdG9yOiBDb25zdHJ1Y3RvcjxUPjtcbiAgZXF1YWxpdHlDb21wYXJlcihhOiBULCBiOiBUKTogYm9vbGVhbjtcbn1cblxuaW50ZXJmYWNlIEpTT05TZXJpYWxpemFibGUge1xuICB0b0pTT04oLi4uYXJnczogdW5rbm93bltdKTogdW5rbm93bjtcbn1cblxuaW50ZXJmYWNlIE1vZHVsZVdpdGhEZWZhdWx0RXhwb3J0PFQ+IHtcbiAgZGVmYXVsdDogVDtcbn1cblxuaW50ZXJmYWNlIFJlc29sdmVkVG9Kc29uT3B0aW9ucyBleHRlbmRzIFRvSnNvbk9wdGlvbnMge1xuICByZWFkb25seSB0b2tlblN1YnN0aXR1dGlvbnM6IFRva2VuU3Vic3RpdHV0aW9ucztcbn1cblxuaW50ZXJmYWNlIFRva2VuU3Vic3RpdHV0aW9ucyB7XG4gIGNpcmN1bGFyUmVmZXJlbmNlOiBzdHJpbmc7XG4gIG1heERlcHRoTGltaXRSZWFjaGVkOiBzdHJpbmc7XG4gIHRvSlNPTkZhaWxlZDogc3RyaW5nO1xufVxuXG5jb25zdCBLRVlfU0VQQVJBVE9SID0gJy4nO1xuY29uc3QgZXF1YWxpdHlDb21wYXJlckVudHJpZXMgPSBjcmVhdGVFcXVhbGl0eUNvbXBhcmVyRW50cmllcyhcbiAgW1xuICAgIHsgY29uc3RydWN0b3I6IEFycmF5QnVmZmVyLCBlcXVhbGl0eUNvbXBhcmVyOiBkZWVwRXF1YWxBcnJheUJ1ZmZlciB9LFxuICAgIHsgY29uc3RydWN0b3I6IERhdGUsIGVxdWFsaXR5Q29tcGFyZXI6IGRlZXBFcXVhbERhdGUgfSxcbiAgICB7IGNvbnN0cnVjdG9yOiBSZWdFeHAsIGVxdWFsaXR5Q29tcGFyZXI6IGRlZXBFcXVhbFJlZ0V4cCB9LFxuICAgIHsgY29uc3RydWN0b3I6IE1hcCwgZXF1YWxpdHlDb21wYXJlcjogZGVlcEVxdWFsTWFwIH0sXG4gICAgeyBjb25zdHJ1Y3RvcjogU2V0LCBlcXVhbGl0eUNvbXBhcmVyOiBkZWVwRXF1YWxTZXQgfVxuICBdIGFzIGNvbnN0XG4pO1xuXG50eXBlIEtleXNXaXRoVW5kZWZpbmVkPFQ+ID0ge1xuICBbSyBpbiBrZXlvZiBUXS0/OiB1bmRlZmluZWQgZXh0ZW5kcyBUW0tdID8gSyA6IG5ldmVyO1xufVtrZXlvZiBUXTtcblxudHlwZSBNYW5kYXRvcnlLZXlzV2l0aFVuZGVmaW5lZDxUIGV4dGVuZHMgb2JqZWN0PiA9IEV4dHJhY3Q8UmVxdWlyZWRLZXlzT2Y8VD4gJiBTdHJpbmdLZXlzPFQ+LCBLZXlzV2l0aFVuZGVmaW5lZDxUPj47XG5cbnR5cGUgUmVtb3ZlVW5kZWZpbmVkT3ZlcmxvYWQ8VCBleHRlbmRzIG9iamVjdD4gPSBNYW5kYXRvcnlLZXlzV2l0aFVuZGVmaW5lZDxUPiBleHRlbmRzIG5ldmVyID8gW29iajogVF1cbiAgOiBuZXZlcjtcblxudHlwZSBSZW1vdmVVbmRlZmluZWRXaXRoS2V5c092ZXJsb2FkPFQgZXh0ZW5kcyBvYmplY3QsIEsgZXh0ZW5kcyByZWFkb25seSBzdHJpbmdbXT4gPSBbb2JqOiBULCBrZXlzVG9LZWVwOiBFeGFjdE1lbWJlcnM8TWFuZGF0b3J5S2V5c1dpdGhVbmRlZmluZWQ8VD4sIEs+XTtcblxuLyoqXG4gKiBBc3NpZ25zIHByb3BlcnRpZXMgZnJvbSBvbmUgb3IgbW9yZSBzb3VyY2Ugb2JqZWN0cyB0byBhIHRhcmdldCBvYmplY3QsIGluY2x1ZGluZyBub24tZW51bWVyYWJsZSBwcm9wZXJ0aWVzLlxuICpcbiAqIEBwYXJhbSB0YXJnZXQgLSBUaGUgdGFyZ2V0IG9iamVjdCB0byBhc3NpZ24gcHJvcGVydGllcyB0by5cbiAqIEBwYXJhbSBzb3VyY2UgLSBUaGUgc291cmNlIG9iamVjdCB0byBhc3NpZ24gcHJvcGVydGllcyBmcm9tLlxuICogQHJldHVybnMgVGhlIHRhcmdldCBvYmplY3Qgd2l0aCB0aGUgYXNzaWduZWQgcHJvcGVydGllcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFzc2lnbldpdGhOb25FbnVtZXJhYmxlUHJvcGVydGllczxUIGV4dGVuZHMgb2JqZWN0LCBVPih0YXJnZXQ6IFQsIHNvdXJjZTogVSk6IFQgJiBVO1xuLyoqXG4gKiBAcGFyYW0gdGFyZ2V0IC0gVGhlIHRhcmdldCBvYmplY3QgdG8gYXNzaWduIHByb3BlcnRpZXMgdG8uXG4gKiBAcGFyYW0gc291cmNlMSAtIFRoZSBmaXJzdCBzb3VyY2Ugb2JqZWN0IHRvIGFzc2lnbiBwcm9wZXJ0aWVzIGZyb20uXG4gKiBAcGFyYW0gc291cmNlMiAtIFRoZSBzZWNvbmQgc291cmNlIG9iamVjdCB0byBhc3NpZ24gcHJvcGVydGllcyBmcm9tLlxuICogQHJldHVybnMgVGhlIHRhcmdldCBvYmplY3Qgd2l0aCB0aGUgYXNzaWduZWQgcHJvcGVydGllcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFzc2lnbldpdGhOb25FbnVtZXJhYmxlUHJvcGVydGllczxUIGV4dGVuZHMgb2JqZWN0LCBVLCBWPih0YXJnZXQ6IFQsIHNvdXJjZTE6IFUsIHNvdXJjZTI6IFYpOiBUICYgVSAmIFY7XG4vKipcbiAqIEFzc2lnbnMgcHJvcGVydGllcyBmcm9tIG9uZSBvciBtb3JlIHNvdXJjZSBvYmplY3RzIHRvIGEgdGFyZ2V0IG9iamVjdCwgaW5jbHVkaW5nIG5vbi1lbnVtZXJhYmxlIHByb3BlcnRpZXMuXG4gKlxuICogQHBhcmFtIHRhcmdldCAtIFRoZSB0YXJnZXQgb2JqZWN0IHRvIGFzc2lnbiBwcm9wZXJ0aWVzIHRvLlxuICogQHBhcmFtIHNvdXJjZTEgLSBUaGUgZmlyc3Qgc291cmNlIG9iamVjdCB0byBhc3NpZ24gcHJvcGVydGllcyBmcm9tLlxuICogQHBhcmFtIHNvdXJjZTIgLSBUaGUgc2Vjb25kIHNvdXJjZSBvYmplY3QgdG8gYXNzaWduIHByb3BlcnRpZXMgZnJvbS5cbiAqIEBwYXJhbSBzb3VyY2UzIC0gVGhlIHRoaXJkIHNvdXJjZSBvYmplY3QgdG8gYXNzaWduIHByb3BlcnRpZXMgZnJvbS5cbiAqIEByZXR1cm5zIFRoZSB0YXJnZXQgb2JqZWN0IHdpdGggdGhlIGFzc2lnbmVkIHByb3BlcnRpZXMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhc3NpZ25XaXRoTm9uRW51bWVyYWJsZVByb3BlcnRpZXM8VCBleHRlbmRzIG9iamVjdCwgVSwgViwgVz4odGFyZ2V0OiBULCBzb3VyY2UxOiBVLCBzb3VyY2UyOiBWLCBzb3VyY2UzOiBXKTogVCAmIFUgJiBWICYgVztcbi8qKlxuICogQXNzaWducyBwcm9wZXJ0aWVzIGZyb20gb25lIG9yIG1vcmUgc291cmNlIG9iamVjdHMgdG8gYSB0YXJnZXQgb2JqZWN0LCBpbmNsdWRpbmcgbm9uLWVudW1lcmFibGUgcHJvcGVydGllcy5cbiAqXG4gKiBAcGFyYW0gdGFyZ2V0IC0gVGhlIHRhcmdldCBvYmplY3QgdG8gYXNzaWduIHByb3BlcnRpZXMgdG8uXG4gKiBAcGFyYW0gc291cmNlcyAtIFRoZSBzb3VyY2Ugb2JqZWN0cyB0byBhc3NpZ24gcHJvcGVydGllcyBmcm9tLlxuICogQHJldHVybnMgVGhlIHRhcmdldCBvYmplY3Qgd2l0aCB0aGUgYXNzaWduZWQgcHJvcGVydGllcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFzc2lnbldpdGhOb25FbnVtZXJhYmxlUHJvcGVydGllcyh0YXJnZXQ6IG9iamVjdCwgLi4uc291cmNlczogb2JqZWN0W10pOiBvYmplY3Qge1xuICByZXR1cm4gYXNzaWduV2l0aE5vbkVudW1lcmFibGVQcm9wZXJ0aWVzSW1wbCh0YXJnZXQsIC4uLnNvdXJjZXMpO1xufVxuLyoqXG4gKiBDYXN0cyBhIHZhbHVlIHRvIGEgc3BlY2lmaWMgdHlwZS5cbiAqXG4gKiBAcGFyYW0gdmFsdWUgLSBUaGUgdmFsdWUgdG8gY2FzdC5cbiAqIEByZXR1cm5zIFRoZSB2YWx1ZSBhcyB0aGUgc3BlY2lmaWVkIHR5cGUuXG4gKi9cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5uZWNlc3NhcnktdHlwZS1wYXJhbWV0ZXJzIC0tIFdlIG5lZWQgdG8gY2FzdC5cbmV4cG9ydCBmdW5jdGlvbiBjYXN0VG88VD4odmFsdWU6IHVua25vd24pOiBUIHtcbiAgcmV0dXJuIHZhbHVlIGFzIFQ7XG59XG4vKipcbiAqIENsb25lcyBhbiBvYmplY3QsIGluY2x1ZGluZyBub24tZW51bWVyYWJsZSBwcm9wZXJ0aWVzLlxuICpcbiAqIEBwYXJhbSBvYmogLSBUaGUgb2JqZWN0IHRvIGNsb25lLlxuICogQHJldHVybnMgQSBuZXcgb2JqZWN0IHdpdGggdGhlIHNhbWUgcHJvcGVydGllcyBhcyB0aGUgb3JpZ2luYWwgb2JqZWN0LCBpbmNsdWRpbmcgbm9uLWVudW1lcmFibGUgcHJvcGVydGllcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNsb25lV2l0aE5vbkVudW1lcmFibGVQcm9wZXJ0aWVzPFQgZXh0ZW5kcyBvYmplY3Q+KG9iajogVCk6IFQge1xuICByZXR1cm4gT2JqZWN0LmNyZWF0ZShnZXRQcm90b3R5cGVPZihvYmopLCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhvYmopKSBhcyBUO1xufVxuLyoqXG4gKiBDb21wYXJlcyB0d28gdmFsdWVzIHRvIGRldGVybWluZSBpZiB0aGV5IGFyZSBkZWVwbHkgZXF1YWwuXG4gKlxuICogQHBhcmFtIGEgLSBUaGUgZmlyc3QgdmFsdWUgdG8gY29tcGFyZS5cbiAqIEBwYXJhbSBiIC0gVGhlIHNlY29uZCB2YWx1ZSB0byBjb21wYXJlLlxuICogQHJldHVybnMgYHRydWVgIGlmIHRoZSB2YWx1ZXMgYXJlIGRlZXBseSBlcXVhbCwgb3RoZXJ3aXNlIGBmYWxzZWAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZWVwRXF1YWwoYTogdW5rbm93biwgYjogdW5rbm93bik6IGJvb2xlYW4ge1xuICBpZiAoYSA9PT0gYikge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgaWYgKHR5cGVvZiBhICE9PSAnb2JqZWN0JyB8fCB0eXBlb2YgYiAhPT0gJ29iamVjdCcgfHwgYSA9PT0gbnVsbCB8fCBiID09PSBudWxsKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgY29uc3QgYUNvbnN0cnVjdG9yID0gYS5jb25zdHJ1Y3RvcjtcbiAgY29uc3QgYkNvbnN0cnVjdG9yID0gYi5jb25zdHJ1Y3RvcjtcblxuICBpZiAoYUNvbnN0cnVjdG9yICE9PSBiQ29uc3RydWN0b3IpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBpZiAoYUNvbnN0cnVjdG9yICE9PSBPYmplY3QpIHtcbiAgICBjb25zdCByZXN1bHQgPSBkZWVwRXF1YWxUeXBlZChhLCBiKTtcbiAgICBpZiAocmVzdWx0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuICB9XG5cbiAgY29uc3Qga2V5c0EgPSBnZXRBbGxLZXlzKGEpO1xuICBjb25zdCBrZXlzQiA9IGdldEFsbEtleXMoYik7XG5cbiAgaWYgKGtleXNBLmxlbmd0aCAhPT0ga2V5c0IubGVuZ3RoKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgY29uc3QgYVJlY29yZCA9IGVuc3VyZUdlbmVyaWNPYmplY3QoYSk7XG4gIGNvbnN0IGJSZWNvcmQgPSBlbnN1cmVHZW5lcmljT2JqZWN0KGIpO1xuXG4gIGZvciAoY29uc3Qga2V5IG9mIGtleXNBKSB7XG4gICAgaWYgKCFrZXlzQi5pbmNsdWRlcyhrZXkpIHx8ICFkZWVwRXF1YWwoYVJlY29yZFtrZXldLCBiUmVjb3JkW2tleV0pKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRydWU7XG59XG5cbi8qKlxuICogRGVsZXRlcyBtdWx0aXBsZSBwcm9wZXJ0aWVzIGZyb20gYW4gb2JqZWN0LlxuICpcbiAqIEB0eXBlUGFyYW0gVCAtIFRoZSB0eXBlIG9mIHRoZSBvYmplY3QuXG4gKiBAcGFyYW0gb2JqIC0gVGhlIG9iamVjdCB0byBkZWxldGUgdGhlIHByb3BlcnRpZXMgZnJvbS5cbiAqIEBwYXJhbSBwcm9wZXJ0eU5hbWVzIC0gVGhlIG5hbWVzIG9mIHRoZSBwcm9wZXJ0aWVzIHRvIGRlbGV0ZS5cbiAqIEByZXR1cm5zIGB0cnVlYCBpZiBhbnkgb2YgdGhlIHByb3BlcnRpZXMgd2VyZSBwcmVzZW50LCBvdGhlcndpc2UgYGZhbHNlYC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRlbGV0ZVByb3BlcnRpZXM8VCBleHRlbmRzIG9iamVjdD4ob2JqOiBULCBwcm9wZXJ0eU5hbWVzOiAoa2V5b2YgVClbXSk6IGJvb2xlYW4ge1xuICBsZXQgYW5zID0gZmFsc2U7XG5cbiAgZm9yIChjb25zdCBwcm9wZXJ0eU5hbWUgb2YgcHJvcGVydHlOYW1lcykge1xuICAgIGFucyA9IGRlbGV0ZVByb3BlcnR5KG9iaiwgcHJvcGVydHlOYW1lKSB8fCBhbnM7XG4gIH1cblxuICByZXR1cm4gYW5zO1xufVxuXG4vKipcbiAqIERlbGV0ZXMgYSBwcm9wZXJ0eSBmcm9tIGFuIG9iamVjdC5cbiAqXG4gKiBAdHlwZVBhcmFtIFQgLSBUaGUgdHlwZSBvZiB0aGUgb2JqZWN0LlxuICogQHBhcmFtIG9iaiAtIFRoZSBvYmplY3QgdG8gZGVsZXRlIHRoZSBwcm9wZXJ0eSBmcm9tLlxuICogQHBhcmFtIHByb3BlcnR5TmFtZSAtIFRoZSBuYW1lIG9mIHRoZSBwcm9wZXJ0eSB0byBkZWxldGUuXG4gKiBAcmV0dXJucyBgdHJ1ZWAgaWYgdGhlIHByb3BlcnR5IHdhcyBwcmVzZW50LCBvdGhlcndpc2UgYGZhbHNlYC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRlbGV0ZVByb3BlcnR5PFQgZXh0ZW5kcyBvYmplY3Q+KG9iajogVCwgcHJvcGVydHlOYW1lOiBrZXlvZiBUKTogYm9vbGVhbiB7XG4gIGlmICghT2JqZWN0Lmhhc093bihvYmosIHByb3BlcnR5TmFtZSkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1keW5hbWljLWRlbGV0ZSAtLSBXZSBoYXZlIG5vIG90aGVyIHdheSB0byBkZWxldGUgdGhlIHByb3BlcnR5LlxuICBkZWxldGUgb2JqW3Byb3BlcnR5TmFtZV07XG4gIHJldHVybiB0cnVlO1xufVxuXG4vKipcbiAqIEV4dHJhY3RzIHRoZSBkZWZhdWx0IGV4cG9ydCBmcm9tIGEgbW9kdWxlLlxuICpcbiAqIFVzZWZ1bCB0byBoYW5kbGUgaW5jb3JyZWN0IGRlZmF1bHQgZXhwb3J0IGludGVyb3AgYmV0d2VlbiBFU00gYW5kIENKUy5cbiAqXG4gKiBAcGFyYW0gbW9kdWxlIC0gVGhlIG1vZHVsZSB0byBleHRyYWN0IHRoZSBkZWZhdWx0IGV4cG9ydCBmcm9tLlxuICogQHJldHVybnMgVGhlIGRlZmF1bHQgZXhwb3J0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gZXh0cmFjdERlZmF1bHRFeHBvcnRJbnRlcm9wPFQ+KG1vZHVsZTogTW9kdWxlV2l0aERlZmF1bHRFeHBvcnQ8VD4gfCBUKTogVCB7XG4gIGlmICh0eXBlb2YgbW9kdWxlICE9PSAnb2JqZWN0JyB8fCBtb2R1bGUgPT09IG51bGwpIHtcbiAgICByZXR1cm4gbW9kdWxlO1xuICB9XG5cbiAgaWYgKCdkZWZhdWx0JyBpbiBtb2R1bGUpIHtcbiAgICByZXR1cm4gbW9kdWxlLmRlZmF1bHQ7XG4gIH1cblxuICByZXR1cm4gbW9kdWxlO1xufVxuXG4vKipcbiAqIEdldHMgYWxsIGVudHJpZXMgb2YgYW4gb2JqZWN0LlxuICpcbiAqIEBwYXJhbSBvYmogLSBUaGUgb2JqZWN0IHRvIGdldCB0aGUgZW50cmllcyBvZi5cbiAqIEByZXR1cm5zIEFuIGFycmF5IG9mIGFsbCBlbnRyaWVzIG9mIHRoZSBvYmplY3QuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRBbGxFbnRyaWVzPFQgZXh0ZW5kcyBvYmplY3Q+KG9iajogVCk6IFtTdHJpbmdLZXlzPFQ+LCBUW1N0cmluZ0tleXM8VD5dXVtdIHtcbiAgcmV0dXJuIGdldEFsbEtleXMob2JqKS5tYXAoKGtleSkgPT4gW2tleSwgb2JqW2tleV1dKTtcbn1cblxuLyoqXG4gKiBHZXRzIGFsbCBrZXlzIG9mIGFuIG9iamVjdC5cbiAqIEluY2x1ZGVzIGZpZWxkcyBhbmQgcHJvcGVydGllcy5cbiAqXG4gKiBAcGFyYW0gb2JqIC0gVGhlIG9iamVjdCB0byBnZXQgdGhlIGtleXMgb2YuXG4gKiBAcmV0dXJucyBBbiBhcnJheSBvZiBhbGwga2V5cyBvZiB0aGUgb2JqZWN0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0QWxsS2V5czxUIGV4dGVuZHMgb2JqZWN0PihvYmo6IFQpOiBTdHJpbmdLZXlzPFQ+W10ge1xuICBjb25zdCBrZXlzOiBTdHJpbmdLZXlzPFQ+W10gPSBbXTtcbiAgbGV0IGN1cnJlbnQ6IG51bGwgfCBvYmplY3QgPSBvYmo7XG4gIHdoaWxlIChjdXJyZW50KSB7XG4gICAgY29uc3QgZGVzY3JpcHRvcnMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhjdXJyZW50KSBhcyBSZWNvcmQ8c3RyaW5nLCBQcm9wZXJ0eURlc2NyaXB0b3I+O1xuICAgIGZvciAoY29uc3QgW2tleSwgZGVzY3JpcHRvcl0gb2YgT2JqZWN0LmVudHJpZXMoZGVzY3JpcHRvcnMpKSB7XG4gICAgICBpZiAoa2V5ID09PSAnX19wcm90b19fJykge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKHR5cGVvZiBkZXNjcmlwdG9yLnZhbHVlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBoYXNHZXR0ZXIgPSB0eXBlb2YgZGVzY3JpcHRvci5nZXQgPT09ICdmdW5jdGlvbic7XG4gICAgICBjb25zdCBoYXNTZXR0ZXIgPSB0eXBlb2YgZGVzY3JpcHRvci5zZXQgPT09ICdmdW5jdGlvbic7XG4gICAgICBpZiAoaGFzR2V0dGVyIHx8IGhhc1NldHRlcikge1xuICAgICAgICBpZiAoaGFzR2V0dGVyICYmIGhhc1NldHRlcikge1xuICAgICAgICAgIGtleXMucHVzaChrZXkgYXMgU3RyaW5nS2V5czxUPik7XG4gICAgICAgIH1cbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGlmIChkZXNjcmlwdG9yLmVudW1lcmFibGUgJiYgZGVzY3JpcHRvci53cml0YWJsZSkge1xuICAgICAgICBrZXlzLnB1c2goa2V5IGFzIFN0cmluZ0tleXM8VD4pO1xuICAgICAgfVxuICAgIH1cblxuICAgIGN1cnJlbnQgPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YoY3VycmVudCkgYXMgbnVsbCB8IG9iamVjdDtcbiAgfVxuICByZXR1cm4ga2V5cy5zb3J0KCk7XG59XG5cbi8qKlxuICogR2V0cyB0aGUgdmFsdWUgb2YgYSBuZXN0ZWQgcHJvcGVydHkgZnJvbSBhbiBvYmplY3QuXG4gKlxuICogQHBhcmFtIG9iaiAtIFRoZSBvYmplY3QgdG8gZ2V0IHRoZSBuZXN0ZWQgcHJvcGVydHkgdmFsdWUgZnJvbS5cbiAqIEBwYXJhbSBwYXRoIC0gVGhlIHBhdGggdG8gdGhlIG5lc3RlZCBwcm9wZXJ0eS5cbiAqIEByZXR1cm5zIFRoZSB2YWx1ZSBvZiB0aGUgbmVzdGVkIHByb3BlcnR5LlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0TmVzdGVkUHJvcGVydHlWYWx1ZShvYmo6IEdlbmVyaWNPYmplY3QsIHBhdGg6IHN0cmluZyk6IHVua25vd24ge1xuICBsZXQgbm9kZTogR2VuZXJpY09iamVjdCB8IHVuZGVmaW5lZCA9IG9iajtcbiAgY29uc3Qga2V5cyA9IHBhdGguc3BsaXQoS0VZX1NFUEFSQVRPUik7XG4gIGZvciAoY29uc3Qga2V5IG9mIGtleXMpIHtcbiAgICBpZiAobm9kZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgICBub2RlID0gbm9kZVtrZXldIGFzIEdlbmVyaWNPYmplY3QgfCB1bmRlZmluZWQ7XG4gIH1cblxuICByZXR1cm4gbm9kZTtcbn1cblxuLyoqXG4gKiBHZXRzIHRoZSBwcm90b3R5cGUgb2YgdGhlIHNwZWNpZmllZCBvYmplY3QuXG4gKlxuICogQHR5cGVQYXJhbSBUIC0gVGhlIHR5cGUgb2YgdGhlIG9iamVjdC5cbiAqIEBwYXJhbSBpbnN0YW5jZSAtIFRoZSBvYmplY3QgaW5zdGFuY2UgdG8gcmV0cmlldmUgdGhlIHByb3RvdHlwZSBvZi5cbiAqIEByZXR1cm5zIFRoZSBwcm90b3R5cGUgb2YgdGhlIG9iamVjdC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFByb3RvdHlwZU9mPFQ+KGluc3RhbmNlOiBUKTogVCB7XG4gIGlmIChpbnN0YW5jZSA9PT0gdW5kZWZpbmVkIHx8IGluc3RhbmNlID09PSBudWxsKSB7XG4gICAgcmV0dXJuIGluc3RhbmNlO1xuICB9XG4gIHJldHVybiBPYmplY3QuZ2V0UHJvdG90eXBlT2YoaW5zdGFuY2UpIGFzIFQ7XG59XG5cbi8qKlxuICogUmV0cmlldmVzIHRoZSBuYW1lIG9mIGEgcHJvcGVydHkgb2YgYSBnaXZlbiB0eXBlIGBUYC5cbiAqXG4gKiBAdHlwZVBhcmFtIFQgLSBUaGUgdHlwZSBvZiB0aGUgb2JqZWN0IGNvbnRhaW5pbmcgdGhlIHByb3BlcnR5LlxuICogQHBhcmFtIG5hbWUgLSBUaGUgbmFtZSBvZiB0aGUgcHJvcGVydHkgYXMgYSBzdHJpbmcuXG4gKiBAcmV0dXJucyBUaGUgbmFtZSBvZiB0aGUgcHJvcGVydHkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBuYW1lb2Y8VCBleHRlbmRzIG9iamVjdD4obmFtZTogU3RyaW5nS2V5czxUPik6IFN0cmluZ0tleXM8VD4ge1xuICByZXR1cm4gbmFtZTtcbn1cblxuLyoqXG4gKiBOb3JtYWxpemVzIG9wdGlvbmFsIHByb3BlcnRpZXMgdG8gYWxsb3cgYHVuZGVmaW5lZGAgYXNzaWdubWVudCBpbiBzdHJpY3QgbW9kZS5cbiAqXG4gKiBUaGlzIHV0aWxpdHkgcHJvdmlkZXMgYSB3b3JrYXJvdW5kIGZvciB0aGUgYGV4YWN0T3B0aW9uYWxQcm9wZXJ0eVR5cGVzYCBUeXBlU2NyaXB0IGZsYWcsXG4gKiB3aGljaCBwcm9oaWJpdHMgZGlyZWN0bHkgYXNzaWduaW5nIGB1bmRlZmluZWRgIHRvIG9wdGlvbmFsIHByb3BlcnRpZXMgd2hlbiB0aGUgdHlwZVxuICogZXhwbGljaXRseSBvbWl0cyBgdW5kZWZpbmVkYC5cbiAqXG4gKiBFeGFtcGxlOlxuICogYGBgdHlwZXNjcmlwdFxuICogLy8gV2l0aCBgZXhhY3RPcHRpb25hbFByb3BlcnR5VHlwZXM6IHRydWVgXG4gKiBjb25zdCB4OiB7IHByb3A/OiBzdHJpbmcgfSA9IHsgcHJvcDogdW5kZWZpbmVkIH07IC8vIENvbXBpbGVyIGVycm9yXG4gKlxuICogLy8gVXNpbmcgdGhpcyB1dGlsaXR5OlxuICogY29uc3QgeTogeyBwcm9wPzogc3RyaW5nIH0gPSBub3JtYWxpemVPcHRpb25hbFByb3BlcnRpZXM8eyBwcm9wPzogc3RyaW5nIH0+KHsgcHJvcDogdW5kZWZpbmVkIH0pOyAvLyBXb3Jrc1xuICogYGBgXG4gKlxuICogQHR5cGVQYXJhbSBUIC0gVGhlIHRhcmdldCB0eXBlIHdpdGggb3B0aW9uYWwgcHJvcGVydGllcyB0byBub3JtYWxpemUuXG4gKiBAcGFyYW0gb2JqIC0gVGhlIG9iamVjdCB0byBub3JtYWxpemUsIGFsbG93aW5nIGV4cGxpY2l0IGB1bmRlZmluZWRgIGZvciBvcHRpb25hbCBwcm9wZXJ0aWVzLlxuICogQHJldHVybnMgVGhlIG5vcm1hbGl6ZWQgb2JqZWN0LCBjb21wYXRpYmxlIHdpdGggYGV4YWN0T3B0aW9uYWxQcm9wZXJ0eVR5cGVzYC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG5vcm1hbGl6ZU9wdGlvbmFsUHJvcGVydGllczxUPihvYmo6IFVuZGVmaW5lZE9uUGFydGlhbERlZXA8VD4pOiBUIHtcbiAgcmV0dXJuIG9iaiBhcyBUO1xufVxuXG4vKipcbiAqIFJlbW92ZXMgYWxsIGB1bmRlZmluZWRgIHByb3BlcnRpZXMgZnJvbSBhbiBvYmplY3Qgd2hlbiB0aGVyZSBhcmUgbm8gbWFuZGF0b3J5IGtleXMgd2l0aCBgdW5kZWZpbmVkYCB2YWx1ZXMuXG4gKlxuICogQHR5cGVQYXJhbSBUeXBlIC0gVGhlIHR5cGUgb2YgdGhlIG9iamVjdC5cbiAqIEBwYXJhbSBhcmdzIC0gVGhlIGFyZ3VtZW50cyB0byB0aGUgZnVuY3Rpb24uXG4gKiBAcmV0dXJucyBUaGUgb2JqZWN0IHdpdGggYWxsIGB1bmRlZmluZWRgIHByb3BlcnRpZXMgcmVtb3ZlZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlbW92ZVVuZGVmaW5lZFByb3BlcnRpZXM8VHlwZSBleHRlbmRzIG9iamVjdD4oXG4gIC4uLmFyZ3M6IFJlbW92ZVVuZGVmaW5lZE92ZXJsb2FkPFR5cGU+XG4pOiBUeXBlO1xuLyoqXG4gKiBSZW1vdmVzIGFsbCBgdW5kZWZpbmVkYCBwcm9wZXJ0aWVzIGZyb20gYW4gb2JqZWN0IHdoZW4gdGhlcmUgYXJlIG1hbmRhdG9yeSBrZXlzIHdpdGggYHVuZGVmaW5lZGAgdmFsdWVzLlxuICpcbiAqIEB0eXBlUGFyYW0gVHlwZSAtIFRoZSB0eXBlIG9mIHRoZSBvYmplY3QuXG4gKiBAdHlwZVBhcmFtIEtleXNUb0tlZXAgLSBUaGUga2V5cyB0byBrZWVwLlxuICogQHBhcmFtIGFyZ3MgLSBUaGUgYXJndW1lbnRzIHRvIHRoZSBmdW5jdGlvbi5cbiAqIEByZXR1cm5zIFRoZSBvYmplY3Qgd2l0aCBhbGwgYHVuZGVmaW5lZGAgcHJvcGVydGllcyByZW1vdmVkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVtb3ZlVW5kZWZpbmVkUHJvcGVydGllczxUeXBlIGV4dGVuZHMgb2JqZWN0LCBjb25zdCBLZXlzVG9LZWVwIGV4dGVuZHMgcmVhZG9ubHkgc3RyaW5nW10+KFxuICAuLi5hcmdzOiBSZW1vdmVVbmRlZmluZWRXaXRoS2V5c092ZXJsb2FkPFR5cGUsIEtleXNUb0tlZXA+XG4pOiBUeXBlO1xuLyoqXG4gKiBSZW1vdmVzIGFsbCBgdW5kZWZpbmVkYCBwcm9wZXJ0aWVzIGZyb20gYW4gb2JqZWN0LlxuICpcbiAqIEB0eXBlUGFyYW0gVHlwZSAtIFRoZSB0eXBlIG9mIHRoZSBvYmplY3QuXG4gKiBAdHlwZVBhcmFtIEtleXNUb0tlZXAgLSBUaGUga2V5cyB0byBrZWVwLlxuICogQHBhcmFtIG9iaiAtIFRoZSBvYmplY3QgdG8gcmVtb3ZlIGB1bmRlZmluZWRgIHByb3BlcnRpZXMgZnJvbS5cbiAqIEBwYXJhbSBrZXlzVG9LZWVwIC0gVGhlIGtleXMgdG8ga2VlcC5cbiAqIEByZXR1cm5zIFRoZSBvYmplY3Qgd2l0aCBhbGwgYHVuZGVmaW5lZGAgcHJvcGVydGllcyByZW1vdmVkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVtb3ZlVW5kZWZpbmVkUHJvcGVydGllczxUeXBlIGV4dGVuZHMgb2JqZWN0PihvYmo6IFR5cGUsIGtleXNUb0tlZXA/OiByZWFkb25seSBzdHJpbmdbXSk6IFR5cGUge1xuICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhvYmopIGFzIFtTdHJpbmdLZXlzPFR5cGU+LCB1bmtub3duXVtdKSB7XG4gICAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQgJiYgIWtleXNUb0tlZXA/LmluY2x1ZGVzKGtleSBhcyBzdHJpbmcpKSB7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWR5bmFtaWMtZGVsZXRlIC0tIFdlIGhhdmUgbm8gb3RoZXIgd2F5IHRvIGRlbGV0ZSB0aGUgcHJvcGVydHkuXG4gICAgICBkZWxldGUgb2JqW2tleV07XG4gICAgfVxuICB9XG4gIHJldHVybiBvYmo7XG59XG5cbi8qKlxuICogU2V0cyB0aGUgdmFsdWUgb2YgYSBuZXN0ZWQgcHJvcGVydHkgaW4gYW4gb2JqZWN0LlxuICpcbiAqIEBwYXJhbSBvYmogLSBUaGUgb2JqZWN0IHRvIHNldCB0aGUgbmVzdGVkIHByb3BlcnR5IHZhbHVlIGluLlxuICogQHBhcmFtIHBhdGggLSBUaGUgcGF0aCB0byB0aGUgbmVzdGVkIHByb3BlcnR5LlxuICogQHBhcmFtIHZhbHVlIC0gVGhlIHZhbHVlIHRvIHNldC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNldE5lc3RlZFByb3BlcnR5VmFsdWUob2JqOiBHZW5lcmljT2JqZWN0LCBwYXRoOiBzdHJpbmcsIHZhbHVlOiB1bmtub3duKTogdm9pZCB7XG4gIGNvbnN0IGVycm9yID0gbmV3IEVycm9yKGBQcm9wZXJ0eSBwYXRoICR7cGF0aH0gbm90IGZvdW5kYCk7XG4gIGxldCBub2RlOiBHZW5lcmljT2JqZWN0IHwgdW5kZWZpbmVkID0gb2JqO1xuICBjb25zdCBrZXlzID0gcGF0aC5zcGxpdChLRVlfU0VQQVJBVE9SKTtcbiAgZm9yIChjb25zdCBrZXkgb2Yga2V5cy5zbGljZSgwLCAtMSkpIHtcbiAgICBpZiAobm9kZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG4gICAgbm9kZSA9IG5vZGVba2V5XSBhcyBHZW5lcmljT2JqZWN0IHwgdW5kZWZpbmVkO1xuICB9XG5cbiAgY29uc3QgbGFzdEtleSA9IGVuc3VyZU5vbk51bGxhYmxlKGtleXMuYXQoLTEpKTtcbiAgaWYgKG5vZGUgPT09IHVuZGVmaW5lZCkge1xuICAgIHRocm93IGVycm9yO1xuICB9XG5cbiAgbm9kZVtsYXN0S2V5XSA9IHZhbHVlO1xufVxuXG4vKipcbiAqIENvbnZlcnRzIGEgZ2l2ZW4gdmFsdWUgdG8gYSBKU09OIHN0cmluZy5cbiAqXG4gKiBAcGFyYW0gdmFsdWUgLSBUaGUgdmFsdWUgdG8gYmUgY29udmVydGVkIHRvIEpTT04uIFRoaXMgY2FuIGJlIG9mIGFueSB0eXBlLlxuICogQHBhcmFtIG9wdGlvbnMgLSBPcHRpb25zIGZvciBjdXN0b21pemluZyB0aGUgSlNPTiBjb252ZXJzaW9uIHByb2Nlc3MuXG4gKiBAcmV0dXJucyBUaGUgSlNPTiBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhlIGlucHV0IHZhbHVlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uKHZhbHVlOiB1bmtub3duLCBvcHRpb25zOiBQYXJ0aWFsPFRvSnNvbk9wdGlvbnM+ID0ge30pOiBzdHJpbmcge1xuICBjb25zdCBERUZBVUxUX09QVElPTlM6IFJlc29sdmVkVG9Kc29uT3B0aW9ucyA9IHtcbiAgICBmdW5jdGlvbkhhbmRsaW5nTW9kZTogRnVuY3Rpb25IYW5kbGluZ01vZGUuRXhjbHVkZSxcbiAgICBtYXhEZXB0aDogLTEsXG4gICAgc2hvdWxkQ2F0Y2hUb0pTT05FcnJvcnM6IGZhbHNlLFxuICAgIHNob3VsZEhhbmRsZUNpcmN1bGFyUmVmZXJlbmNlczogZmFsc2UsXG4gICAgc2hvdWxkSGFuZGxlRXJyb3JzOiBmYWxzZSxcbiAgICBzaG91bGRIYW5kbGVVbmRlZmluZWQ6IGZhbHNlLFxuICAgIHNob3VsZFNvcnRLZXlzOiBmYWxzZSxcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tbWFnaWMtbnVtYmVycyAtLSBFeHRyYWN0aW5nIG1hZ2ljIG51bWJlciBhcyBhIGNvbnN0YW50IHdvdWxkIGJlIHJlcGV0aXRpdmUsIGFzIHRoZSB2YWx1ZSBpcyB1c2VkIG9ubHkgb25jZSBhbmQgaXRzIG5hbWUgd291bGQgYmUgdGhlIHNhbWUgYXMgdGhlIHByb3BlcnR5LlxuICAgIHNwYWNlOiAyLFxuICAgIHRva2VuU3Vic3RpdHV0aW9uczoge1xuICAgICAgY2lyY3VsYXJSZWZlcmVuY2U6IG1ha2VPYmplY3RUb2tlblN1YnN0aXR1dGlvbihUb2tlblN1YnN0aXR1dGlvbktleS5DaXJjdWxhclJlZmVyZW5jZSksXG4gICAgICBtYXhEZXB0aExpbWl0UmVhY2hlZDogbWFrZU9iamVjdFRva2VuU3Vic3RpdHV0aW9uKFRva2VuU3Vic3RpdHV0aW9uS2V5Lk1heERlcHRoTGltaXRSZWFjaGVkKSxcbiAgICAgIHRvSlNPTkZhaWxlZDogbWFrZU9iamVjdFRva2VuU3Vic3RpdHV0aW9uKFRva2VuU3Vic3RpdHV0aW9uS2V5LlRvSlNPTkZhaWxlZClcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgZnVsbE9wdGlvbnMgPSB7XG4gICAgLi4uREVGQVVMVF9PUFRJT05TLFxuICAgIC4uLm9wdGlvbnMsXG4gICAgdG9rZW5TdWJzdGl0dXRpb25zOiB7XG4gICAgICAuLi5ERUZBVUxUX09QVElPTlMudG9rZW5TdWJzdGl0dXRpb25zLFxuICAgICAgLi4ub3B0aW9ucy50b2tlblN1YnN0aXR1dGlvbnNcbiAgICB9XG4gIH07XG5cbiAgaWYgKGZ1bGxPcHRpb25zLm1heERlcHRoID09PSAtMSkge1xuICAgIGZ1bGxPcHRpb25zLm1heERlcHRoID0gSW5maW5pdHk7XG4gIH1cblxuICBjb25zdCBmdW5jdGlvblRleHRzOiBzdHJpbmdbXSA9IFtdO1xuICBjb25zdCB1c2VkT2JqZWN0cyA9IG5ldyBXZWFrU2V0PG9iamVjdD4oKTtcblxuICBjb25zdCBwbGFpbk9iamVjdCA9IHRvUGxhaW5PYmplY3QodmFsdWUsICcnLCAwLCB0cnVlLCBmdWxsT3B0aW9ucywgZnVuY3Rpb25UZXh0cywgdXNlZE9iamVjdHMpO1xuICBsZXQganNvbiA9IGVuc3VyZU5vbk51bGxhYmxlKEpTT04uc3RyaW5naWZ5KHBsYWluT2JqZWN0LCBudWxsLCBmdWxsT3B0aW9ucy5zcGFjZSkpO1xuICBqc29uID0gcmVwbGFjZUFsbChqc29uLCAvXCJcXFtcXFsoPzxLZXk+W0EtWmEtel0rKSg/PEluZGV4PlxcZCopXFxdXFxdXCIvZywgKHsgY2FwdHVyZWRHcm91cEFyZ3M6IFtrZXkgPSAnJywgaW5kZXhTdHIgPSAnJ10gfSkgPT5cbiAgICBhcHBseVN1YnN0aXR1dGlvbnMoe1xuICAgICAgZnVuY3Rpb25UZXh0cyxcbiAgICAgIGluZGV4OiBpbmRleFN0ciA/IHBhcnNlSW50KGluZGV4U3RyLCAxMCkgOiAwLFxuICAgICAga2V5OiBrZXkgYXMgVG9rZW5TdWJzdGl0dXRpb25LZXksXG4gICAgICBzdWJzdGl0dXRpb25zOiBmdWxsT3B0aW9ucy50b2tlblN1YnN0aXR1dGlvbnNcbiAgICB9KSk7XG4gIHJldHVybiBqc29uO1xufVxuXG5mdW5jdGlvbiBhcHBseVN1YnN0aXR1dGlvbnMocGFyYW1zOiBBcHBseVN1YnN0aXR1dGlvbnNQYXJhbXMpOiBNYXliZVJldHVybjxzdHJpbmc+IHtcbiAgc3dpdGNoIChwYXJhbXMua2V5KSB7XG4gICAgY2FzZSBUb2tlblN1YnN0aXR1dGlvbktleS5DaXJjdWxhclJlZmVyZW5jZTpcbiAgICAgIHJldHVybiBwYXJhbXMuc3Vic3RpdHV0aW9ucy5jaXJjdWxhclJlZmVyZW5jZTtcbiAgICBjYXNlIFRva2VuU3Vic3RpdHV0aW9uS2V5LkZ1bmN0aW9uOlxuICAgICAgcmV0dXJuIGVuc3VyZU5vbk51bGxhYmxlKHBhcmFtcy5mdW5jdGlvblRleHRzW3BhcmFtcy5pbmRleF0sIGBGdW5jdGlvbiB3aXRoIGluZGV4ICR7U3RyaW5nKHBhcmFtcy5pbmRleCl9IG5vdCBmb3VuZGApO1xuICAgIGNhc2UgVG9rZW5TdWJzdGl0dXRpb25LZXkuTWF4RGVwdGhMaW1pdFJlYWNoZWQ6XG4gICAgICByZXR1cm4gcGFyYW1zLnN1YnN0aXR1dGlvbnMubWF4RGVwdGhMaW1pdFJlYWNoZWQ7XG4gICAgY2FzZSBUb2tlblN1YnN0aXR1dGlvbktleS5NYXhEZXB0aExpbWl0UmVhY2hlZEFycmF5OlxuICAgICAgcmV0dXJuIGBBcnJheSgke1N0cmluZyhwYXJhbXMuaW5kZXgpfSlgO1xuICAgIGNhc2UgVG9rZW5TdWJzdGl0dXRpb25LZXkuVG9KU09ORmFpbGVkOlxuICAgICAgcmV0dXJuIHBhcmFtcy5zdWJzdGl0dXRpb25zLnRvSlNPTkZhaWxlZDtcbiAgICBjYXNlIFRva2VuU3Vic3RpdHV0aW9uS2V5LlVuZGVmaW5lZDpcbiAgICAgIHJldHVybiAndW5kZWZpbmVkJztcbiAgICAvKiB2OCBpZ25vcmUgc3RhcnQgLS0gRXhoYXVzdGl2ZSBzd2l0Y2ggZ3VhcmQ7IGRlZmF1bHQgYnJhbmNoIGlzIHVucmVhY2hhYmxlLiAqL1xuICAgIGRlZmF1bHQ6XG4gICAgICBhc3NlcnQoZmFsc2UsICdVbmhhbmRsZWQgc3Vic3RpdHV0aW9uIGtleScpO1xuICAgICAgLyogdjggaWdub3JlIHN0b3AgKi9cbiAgfVxufVxuXG5mdW5jdGlvbiBhc3NpZ25XaXRoTm9uRW51bWVyYWJsZVByb3BlcnRpZXNJbXBsKHRhcmdldDogb2JqZWN0LCAuLi5zb3VyY2VzOiBvYmplY3RbXSk6IG9iamVjdCB7XG4gIGZvciAoY29uc3Qgc291cmNlIG9mIHNvdXJjZXMpIHtcbiAgICBjb25zdCBkZXNjcmlwdG9ycyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKHNvdXJjZSk7XG5cbiAgICBmb3IgKGNvbnN0IFtrZXksIGRlc2NyaXB0b3JdIG9mIE9iamVjdC5lbnRyaWVzKGRlc2NyaXB0b3JzKSkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgLy8gQXZvaWQgcmVkZWZpbmluZyByZWFkLW9ubHkgcHJvcGVydGllcyAoZXNwZWNpYWxseSBgcHJvdG90eXBlYClcbiAgICAgICAgaWYgKFxuICAgICAgICAgIGtleSA9PT0gJ3Byb3RvdHlwZSdcbiAgICAgICAgICB8fCAoT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0YXJnZXQsIGtleSk/LndyaXRhYmxlID09PSBmYWxzZVxuICAgICAgICAgICAgJiYgIU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodGFyZ2V0LCBrZXkpPy5jb25maWd1cmFibGUpXG4gICAgICAgICkge1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBkZXNjcmlwdG9yKTtcbiAgICAgIH0gY2F0Y2gge1xuICAgICAgICAvLyBTaWxlbnRseSBpZ25vcmUgaWYgZGVmaW5lUHJvcGVydHkgZmFpbHNcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjb25zdCBzb3VyY2VQcm90b3R5cGVzID0gc291cmNlc1xuICAgIC5tYXAoKHNvdXJjZSkgPT4gZ2V0UHJvdG90eXBlT2Y8b2JqZWN0IHwgdW5kZWZpbmVkPihzb3VyY2UpKVxuICAgIC5maWx0ZXIoKHByb3RvKTogcHJvdG8gaXMgb2JqZWN0ID0+ICEhcHJvdG8pO1xuXG4gIGlmIChzb3VyY2VQcm90b3R5cGVzLmxlbmd0aCA+IDApIHtcbiAgICBjb25zdCB0YXJnZXRQcm90b3R5cGUgPSBhc3NpZ25XaXRoTm9uRW51bWVyYWJsZVByb3BlcnRpZXNJbXBsKHt9LCBnZXRQcm90b3R5cGVPZih0YXJnZXQpLCAuLi5zb3VyY2VQcm90b3R5cGVzKTtcblxuICAgIHRyeSB7XG4gICAgICBPYmplY3Quc2V0UHJvdG90eXBlT2YodGFyZ2V0LCB0YXJnZXRQcm90b3R5cGUpO1xuICAgIH0gY2F0Y2gge1xuICAgICAgLy8gU2lsZW50bHkgaWdub3JlIGlmIHNldFByb3RvdHlwZU9mIGZhaWxzXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRhcmdldDtcbn1cblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgLS0gYHVua25vd25gIGRvZXNuJ3Qgd29yaywgZ2V0dGluZyBjb21waWxlciBlcnJvcnMuXG5mdW5jdGlvbiBjcmVhdGVFcXVhbGl0eUNvbXBhcmVyRW50cmllczxjb25zdCBUIGV4dGVuZHMgcmVhZG9ubHkgRXF1YWxpdHlDb21wYXJlckVudHJ5PGFueT5bXT4oZW50cmllczogVCk6IFQge1xuICByZXR1cm4gZW50cmllcztcbn1cblxuZnVuY3Rpb24gZGVlcEVxdWFsQXJyYXlCdWZmZXIoYTogQXJyYXlCdWZmZXIsIGI6IEFycmF5QnVmZmVyKTogYm9vbGVhbiB7XG4gIGlmIChhLmJ5dGVMZW5ndGggIT09IGIuYnl0ZUxlbmd0aCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGNvbnN0IHZpZXdBID0gbmV3IFVpbnQ4QXJyYXkoYSk7XG4gIGNvbnN0IHZpZXdCID0gbmV3IFVpbnQ4QXJyYXkoYik7XG4gIHJldHVybiBkZWVwRXF1YWwodmlld0EsIHZpZXdCKTtcbn1cblxuZnVuY3Rpb24gZGVlcEVxdWFsRGF0ZShhOiBEYXRlLCBiOiBEYXRlKTogYm9vbGVhbiB7XG4gIHJldHVybiBhLmdldFRpbWUoKSA9PT0gYi5nZXRUaW1lKCk7XG59XG5cbmZ1bmN0aW9uIGRlZXBFcXVhbE1hcChhOiBNYXA8dW5rbm93biwgdW5rbm93bj4sIGI6IE1hcDx1bmtub3duLCB1bmtub3duPik6IGJvb2xlYW4ge1xuICBpZiAoYS5zaXplICE9PSBiLnNpemUpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBhLmVudHJpZXMoKSkge1xuICAgIGlmICghYi5oYXMoa2V5KSB8fCAhZGVlcEVxdWFsKHZhbHVlLCBiLmdldChrZXkpKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufVxuXG5mdW5jdGlvbiBkZWVwRXF1YWxSZWdFeHAoYTogUmVnRXhwLCBiOiBSZWdFeHApOiBib29sZWFuIHtcbiAgcmV0dXJuIGEuc291cmNlID09PSBiLnNvdXJjZSAmJiBhLmZsYWdzID09PSBiLmZsYWdzO1xufVxuXG5mdW5jdGlvbiBkZWVwRXF1YWxTZXQoYTogU2V0PHVua25vd24+LCBiOiBTZXQ8dW5rbm93bj4pOiBib29sZWFuIHtcbiAgaWYgKGEuc2l6ZSAhPT0gYi5zaXplKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgZm9yIChjb25zdCB2YWx1ZUEgb2YgYSkge1xuICAgIGlmIChiLmhhcyh2YWx1ZUEpKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgbGV0IGZvdW5kID0gZmFsc2U7XG4gICAgZm9yIChjb25zdCB2YWx1ZUIgb2YgYikge1xuICAgICAgaWYgKGRlZXBFcXVhbCh2YWx1ZUEsIHZhbHVlQikpIHtcbiAgICAgICAgZm91bmQgPSB0cnVlO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKCFmb3VuZCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufVxuXG5mdW5jdGlvbiBkZWVwRXF1YWxUeXBlZChhOiB1bmtub3duLCBiOiB1bmtub3duKTogYm9vbGVhbiB8IHVuZGVmaW5lZCB7XG4gIGZvciAoY29uc3QgeyBjb25zdHJ1Y3RvciwgZXF1YWxpdHlDb21wYXJlciB9IG9mIGVxdWFsaXR5Q29tcGFyZXJFbnRyaWVzKSB7XG4gICAgaWYgKGEgaW5zdGFuY2VvZiBjb25zdHJ1Y3RvciAmJiBiIGluc3RhbmNlb2YgY29uc3RydWN0b3IpIHtcbiAgICAgIHJldHVybiBlcXVhbGl0eUNvbXBhcmVyKGEgYXMgbmV2ZXIsIGIgYXMgbmV2ZXIpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gdW5kZWZpbmVkO1xufVxuXG5mdW5jdGlvbiBoYW5kbGVBcnJheShcbiAgdmFsdWU6IHVua25vd25bXSxcbiAgZGVwdGg6IG51bWJlcixcbiAgY2FuVXNlVG9KU09OOiBib29sZWFuLFxuICBmdWxsT3B0aW9uczogVG9Kc29uT3B0aW9ucyxcbiAgZnVuY3Rpb25UZXh0czogc3RyaW5nW10sXG4gIHVzZWRPYmplY3RzOiBXZWFrU2V0PG9iamVjdD5cbik6IHVua25vd24ge1xuICBpZiAoZGVwdGggPiBmdWxsT3B0aW9ucy5tYXhEZXB0aCkge1xuICAgIHJldHVybiBtYWtlUGxhY2Vob2xkZXIoVG9rZW5TdWJzdGl0dXRpb25LZXkuTWF4RGVwdGhMaW1pdFJlYWNoZWRBcnJheSwgdmFsdWUubGVuZ3RoKTtcbiAgfVxuXG4gIHJldHVybiB2YWx1ZS5tYXAoKGl0ZW0sIGluZGV4KSA9PiB0b1BsYWluT2JqZWN0KGl0ZW0sIFN0cmluZyhpbmRleCksIGRlcHRoICsgMSwgY2FuVXNlVG9KU09OLCBmdWxsT3B0aW9ucywgZnVuY3Rpb25UZXh0cywgdXNlZE9iamVjdHMpKTtcbn1cblxuZnVuY3Rpb24gaGFuZGxlQ2lyY3VsYXJSZWZlcmVuY2UodmFsdWU6IG9iamVjdCwga2V5OiBzdHJpbmcsIGZ1bGxPcHRpb25zOiBUb0pzb25PcHRpb25zKTogdW5rbm93biB7XG4gIGlmIChmdWxsT3B0aW9ucy5zaG91bGRIYW5kbGVDaXJjdWxhclJlZmVyZW5jZXMpIHtcbiAgICByZXR1cm4gbWFrZVBsYWNlaG9sZGVyKFRva2VuU3Vic3RpdHV0aW9uS2V5LkNpcmN1bGFyUmVmZXJlbmNlKTtcbiAgfVxuICBjb25zdCB2YWx1ZUNvbnN0cnVjdG9yTmFtZSA9IHZhbHVlLmNvbnN0cnVjdG9yLm5hbWUgfHwgJ09iamVjdCc7XG4gIHRocm93IG5ldyBUeXBlRXJyb3IoYENvbnZlcnRpbmcgY2lyY3VsYXIgc3RydWN0dXJlIHRvIEpTT05cbi0tPiBzdGFydGluZyBhdCBvYmplY3Qgd2l0aCBjb25zdHJ1Y3RvciAnJHt2YWx1ZUNvbnN0cnVjdG9yTmFtZX0nXG4tLS0gcHJvcGVydHkgJyR7a2V5fScgY2xvc2VzIHRoZSBjaXJjbGVgKTtcbn1cblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnNhZmUtZnVuY3Rpb24tdHlwZSAtLSBXZSBuZWVkIHRvIHVzZSBgRnVuY3Rpb25gIHR5cGUgdG8gaGFuZGxlIHRoZW0gc2VwYXJhdGVseS5cbmZ1bmN0aW9uIGhhbmRsZUZ1bmN0aW9uKHZhbHVlOiBGdW5jdGlvbiwgZnVuY3Rpb25UZXh0czogc3RyaW5nW10sIGZ1bGxPcHRpb25zOiBUb0pzb25PcHRpb25zKTogdW5rbm93biB7XG4gIGlmIChmdWxsT3B0aW9ucy5mdW5jdGlvbkhhbmRsaW5nTW9kZSA9PT0gRnVuY3Rpb25IYW5kbGluZ01vZGUuRXhjbHVkZSkge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbiAgY29uc3QgaW5kZXggPSBmdW5jdGlvblRleHRzLmxlbmd0aDtcbiAgY29uc3QgZnVuY3Rpb25UZXh0ID0gZnVsbE9wdGlvbnMuZnVuY3Rpb25IYW5kbGluZ01vZGUgPT09IEZ1bmN0aW9uSGFuZGxpbmdNb2RlLkZ1bGxcbiAgICA/IGdldEZ1bmN0aW9uRXhwcmVzc2lvblN0cmluZyh2YWx1ZSlcbiAgICA6IGBmdW5jdGlvbiAke3ZhbHVlLm5hbWUgfHwgJ2Fub255bW91cyd9KCkgeyAvKiAuLi4gKi8gfWA7XG4gIGZ1bmN0aW9uVGV4dHMucHVzaChmdW5jdGlvblRleHQpO1xuICByZXR1cm4gbWFrZVBsYWNlaG9sZGVyKFRva2VuU3Vic3RpdHV0aW9uS2V5LkZ1bmN0aW9uLCBpbmRleCk7XG59XG5cbmZ1bmN0aW9uIGhhbmRsZU9iamVjdChcbiAgdmFsdWU6IG9iamVjdCxcbiAga2V5OiBzdHJpbmcsXG4gIGRlcHRoOiBudW1iZXIsXG4gIGNhblVzZVRvSlNPTjogYm9vbGVhbixcbiAgZnVsbE9wdGlvbnM6IFRvSnNvbk9wdGlvbnMsXG4gIGZ1bmN0aW9uVGV4dHM6IHN0cmluZ1tdLFxuICB1c2VkT2JqZWN0czogV2Vha1NldDxvYmplY3Q+XG4pOiB1bmtub3duIHtcbiAgaWYgKHVzZWRPYmplY3RzLmhhcyh2YWx1ZSkpIHtcbiAgICByZXR1cm4gaGFuZGxlQ2lyY3VsYXJSZWZlcmVuY2UodmFsdWUsIGtleSwgZnVsbE9wdGlvbnMpO1xuICB9XG5cbiAgdXNlZE9iamVjdHMuYWRkKHZhbHVlKTtcblxuICBpZiAoY2FuVXNlVG9KU09OKSB7XG4gICAgY29uc3QgdG9KU09OUmVzdWx0ID0gdHJ5SGFuZGxlVG9KU09OKHZhbHVlLCBrZXksIGRlcHRoLCBmdWxsT3B0aW9ucywgZnVuY3Rpb25UZXh0cywgdXNlZE9iamVjdHMpO1xuICAgIGlmICh0b0pTT05SZXN1bHQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIHRvSlNPTlJlc3VsdDtcbiAgICB9XG4gIH1cblxuICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICByZXR1cm4gaGFuZGxlQXJyYXkodmFsdWUsIGRlcHRoLCBjYW5Vc2VUb0pTT04sIGZ1bGxPcHRpb25zLCBmdW5jdGlvblRleHRzLCB1c2VkT2JqZWN0cyk7XG4gIH1cblxuICBpZiAoZGVwdGggPiBmdWxsT3B0aW9ucy5tYXhEZXB0aCkge1xuICAgIHJldHVybiBtYWtlUGxhY2Vob2xkZXIoVG9rZW5TdWJzdGl0dXRpb25LZXkuTWF4RGVwdGhMaW1pdFJlYWNoZWQpO1xuICB9XG5cbiAgaWYgKHZhbHVlIGluc3RhbmNlb2YgRXJyb3IgJiYgZnVsbE9wdGlvbnMuc2hvdWxkSGFuZGxlRXJyb3JzKSB7XG4gICAgcmV0dXJuIGVycm9yVG9TdHJpbmcodmFsdWUpO1xuICB9XG5cbiAgcmV0dXJuIGhhbmRsZVBsYWluT2JqZWN0KHZhbHVlLCBkZXB0aCwgY2FuVXNlVG9KU09OLCBmdWxsT3B0aW9ucywgZnVuY3Rpb25UZXh0cywgdXNlZE9iamVjdHMpO1xufVxuXG5mdW5jdGlvbiBoYW5kbGVQbGFpbk9iamVjdChcbiAgdmFsdWU6IG9iamVjdCxcbiAgZGVwdGg6IG51bWJlcixcbiAgY2FuVXNlVG9KU09OOiBib29sZWFuLFxuICBmdWxsT3B0aW9uczogVG9Kc29uT3B0aW9ucyxcbiAgZnVuY3Rpb25UZXh0czogc3RyaW5nW10sXG4gIHVzZWRPYmplY3RzOiBXZWFrU2V0PG9iamVjdD5cbik6IHVua25vd24ge1xuICBjb25zdCBlbnRyaWVzID0gT2JqZWN0LmVudHJpZXModmFsdWUpO1xuICBpZiAoZnVsbE9wdGlvbnMuc2hvdWxkU29ydEtleXMpIHtcbiAgICBlbnRyaWVzLnNvcnQoKFtrZXkxXSwgW2tleTJdKSA9PiBrZXkxLmxvY2FsZUNvbXBhcmUoa2V5MikpO1xuICB9XG5cbiAgcmV0dXJuIE9iamVjdC5mcm9tRW50cmllcyhcbiAgICBlbnRyaWVzLm1hcCgoW2tleTIsIHZhbHVlMl0pID0+IFtcbiAgICAgIGtleTIsXG4gICAgICB0b1BsYWluT2JqZWN0KHZhbHVlMiwga2V5MiwgZGVwdGggKyAxLCBjYW5Vc2VUb0pTT04sIGZ1bGxPcHRpb25zLCBmdW5jdGlvblRleHRzLCB1c2VkT2JqZWN0cylcbiAgICBdKVxuICApO1xufVxuXG5mdW5jdGlvbiBtYWtlT2JqZWN0VG9rZW5TdWJzdGl0dXRpb24oa2V5OiBUb2tlblN1YnN0aXR1dGlvbktleSk6IHN0cmluZyB7XG4gIHJldHVybiBgeyBcIltbJHtrZXl9XV1cIjogbnVsbCB9YDtcbn1cblxuZnVuY3Rpb24gbWFrZVBsYWNlaG9sZGVyKGtleTogVG9rZW5TdWJzdGl0dXRpb25LZXksIGluZGV4PzogbnVtYmVyKTogc3RyaW5nIHtcbiAgcmV0dXJuIGBbWyR7a2V5fSR7aW5kZXggPyBTdHJpbmcoaW5kZXgpIDogJyd9XV1gO1xufVxuXG5mdW5jdGlvbiB0b1BsYWluT2JqZWN0KFxuICB2YWx1ZTogdW5rbm93bixcbiAga2V5OiBzdHJpbmcsXG4gIGRlcHRoOiBudW1iZXIsXG4gIGNhblVzZVRvSlNPTjogYm9vbGVhbixcbiAgZnVsbE9wdGlvbnM6IFRvSnNvbk9wdGlvbnMsXG4gIGZ1bmN0aW9uVGV4dHM6IHN0cmluZ1tdLFxuICB1c2VkT2JqZWN0czogV2Vha1NldDxvYmplY3Q+XG4pOiB1bmtub3duIHtcbiAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gKGRlcHRoID09PSAwIHx8IGZ1bGxPcHRpb25zLnNob3VsZEhhbmRsZVVuZGVmaW5lZClcbiAgICAgID8gbWFrZVBsYWNlaG9sZGVyKFRva2VuU3Vic3RpdHV0aW9uS2V5LlVuZGVmaW5lZClcbiAgICAgIDogdW5kZWZpbmVkO1xuICB9XG5cbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHJldHVybiBoYW5kbGVGdW5jdGlvbih2YWx1ZSwgZnVuY3Rpb25UZXh0cywgZnVsbE9wdGlvbnMpO1xuICB9XG5cbiAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ29iamVjdCcgfHwgdmFsdWUgPT09IG51bGwpIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cblxuICByZXR1cm4gaGFuZGxlT2JqZWN0KHZhbHVlLCBrZXksIGRlcHRoLCBjYW5Vc2VUb0pTT04sIGZ1bGxPcHRpb25zLCBmdW5jdGlvblRleHRzLCB1c2VkT2JqZWN0cyk7XG59XG5cbmZ1bmN0aW9uIHRyeUhhbmRsZVRvSlNPTihcbiAgdmFsdWU6IG9iamVjdCxcbiAga2V5OiBzdHJpbmcsXG4gIGRlcHRoOiBudW1iZXIsXG4gIGZ1bGxPcHRpb25zOiBUb0pzb25PcHRpb25zLFxuICBmdW5jdGlvblRleHRzOiBzdHJpbmdbXSxcbiAgdXNlZE9iamVjdHM6IFdlYWtTZXQ8b2JqZWN0PlxuKTogdW5rbm93biB7XG4gIGNvbnN0IHRvSlNPTiA9ICh2YWx1ZSBhcyBQYXJ0aWFsPEpTT05TZXJpYWxpemFibGU+KS50b0pTT047XG4gIGlmICh0eXBlb2YgdG9KU09OID09PSAnZnVuY3Rpb24nKSB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IG5ld1ZhbHVlID0gdG9KU09OLmNhbGwodmFsdWUsIGtleSk7XG4gICAgICByZXR1cm4gdG9QbGFpbk9iamVjdChuZXdWYWx1ZSwga2V5LCBkZXB0aCwgZmFsc2UsIGZ1bGxPcHRpb25zLCBmdW5jdGlvblRleHRzLCB1c2VkT2JqZWN0cyk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgaWYgKGZ1bGxPcHRpb25zLnNob3VsZENhdGNoVG9KU09ORXJyb3JzKSB7XG4gICAgICAgIHJldHVybiBtYWtlUGxhY2Vob2xkZXIoVG9rZW5TdWJzdGl0dXRpb25LZXkuVG9KU09ORmFpbGVkKTtcbiAgICAgIH1cbiAgICAgIHRocm93IGU7XG4gICAgfVxuICB9XG4gIHJldHVybiB1bmRlZmluZWQ7XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQW1CQSxTQUFTLHFCQUFxQjtBQUM5QixTQUFTLG1D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SSxpQkFBaUIsU0FBUyxZQUFZLG9CQUFvQjtBQUM1RCxXQUFPLGNBQWMsS0FBSztBQUFBLEVBQzVCO0FBRUEsU0FBTyxrQkFBa0IsT0FBTyxPQUFPLGNBQWMsYUFBYSxlQUFlLFdBQVc7QUFDOUY7QUFFQSxTQUFTLGtCQUNQLE9BQ0EsT0FDQSxjQUNBLGFBQ0EsZUFDQSxhQUNTO0FBQ1QsUUFBTSxVQUFVLE9BQU8sUUFBUSxLQUFLO0FBQ3BDLE1BQUksWUFBWSxnQkFBZ0I7QUFDOUIsWUFBUSxLQUFLLENBQUMsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxJQUFJLE1BQU0sS0FBSyxjQUFjLElBQUksQ0FBQztBQUFBLEVBQzNEO0FBRUEsU0FBTyxPQUFPO0FBQUEsSUFDWixRQUFRLElBQUksQ0FBQyxDQUFDLE1BQU0sTUFBTSxNQUFNO0FBQUEsTUFDOUI7QUFBQSxNQUNBLGNBQWMsUUFBUSxNQUFNLFFBQVEsR0FBRyxjQUFjLGFBQWEsZUFBZSxXQUFXO0FBQUEsSUFDOUYsQ0FBQztBQUFBLEVBQ0g7QUFDRjtBQUVBLFNBQVMsNEJBQTRCLEtBQW1DO0FBQ3RFLFNBQU8sUUFBUSxHQUFHO0FBQ3BCO0FBRUEsU0FBUyxnQkFBZ0IsS0FBMkIsT0FBd0I7QUFDMUUsU0FBTyxLQUFLLEdBQUcsR0FBRyxRQUFRLE9BQU8sS0FBSyxJQUFJLEVBQUU7QUFDOUM7QUFFQSxTQUFTLGNBQ1AsT0FDQSxLQUNBLE9BQ0EsY0FDQSxhQUNBLGVBQ0EsYUFDUztBQUNULE1BQUksVUFBVSxRQUFXO0FBQ3ZCLFdBQVEsVUFBVSxLQUFLLFlBQVksd0JBQy9CLGdCQUFnQiwyQkFBOEIsSUFDOUM7QUFBQSxFQUNOO0FBRUEsTUFBSSxPQUFPLFVBQVUsWUFBWTtBQUMvQixXQUFPLGVBQWUsT0FBTyxlQUFlLFdBQVc7QUFBQSxFQUN6RDtBQUVBLE1BQUksT0FBTyxVQUFVLFlBQVksVUFBVSxNQUFNO0FBQy9DLFdBQU87QUFBQSxFQUNUO0FBRUEsU0FBTyxhQUFhLE9BQU8sS0FBSyxPQUFPLGNBQWMsYUFBYSxlQUFlLFdBQVc7QUFDOUY7QUFFQSxTQUFTLGdCQUNQLE9BQ0EsS0FDQSxPQUNBLGFBQ0EsZUFDQSxhQUNTO0FBQ1QsUUFBTSxTQUFVLE1BQW9DO0FBQ3BELE1BQUksT0FBTyxXQUFXLFlBQVk7QUFDaEMsUUFBSTtBQUNGLFlBQU0sV0FBVyxPQUFPLEtBQUssT0FBTyxHQUFHO0FBQ3ZDLGFBQU8sY0FBYyxVQUFVLEtBQUssT0FBTyxPQUFPLGFBQWEsZUFBZSxXQUFXO0FBQUEsSUFDM0YsU0FBUyxHQUFHO0FBQ1YsVUFBSSxZQUFZLHlCQUF5QjtBQUN2QyxlQUFPLGdCQUFnQixpQ0FBaUM7QUFBQSxNQUMxRDtBQUNBLFlBQU07QUFBQSxJQUNSO0FBQUEsRUFDRjtBQUNBLFNBQU87QUFDVDsiLAogICJuYW1lcyI6IFsiRnVuY3Rpb25IYW5kbGluZ01vZGUiXQp9Cg==
@@ -4,10 +4,10 @@
4
4
  * This file defines the `i18next` type options for the `obsidian` module.
5
5
  */
6
6
 
7
- import type { CustomTypeOptionsBase } from '../i18n/custom-type-options-base.mjs';
8
- import type { DefaultPluginTypes } from '../i18n/default-translations-base.mjs';
7
+ import type { CustomTypeOptionsBase } from '../i18n/custom-type-options.mjs';
8
+ import type { DefaultTranslationsBase } from '../i18n/default-translations.mjs';
9
9
 
10
10
  declare module 'i18next' {
11
11
  // eslint-disable-next-line @typescript-eslint/no-empty-object-type -- We need to use the empty object type, that's how `i18next` module works.
12
- interface CustomTypeOptions extends CustomTypeOptionsBase<DefaultPluginTypes> {}
12
+ interface CustomTypeOptions extends CustomTypeOptionsBase<DefaultTranslationsBase> {}
13
13
  }
@@ -4,6 +4,7 @@ if you want to view the source, please visit the github repository of this plugi
4
4
  */
5
5
 
6
6
  (function initEsm() {
7
+ // eslint-disable-next-line obsidianmd/prefer-active-doc -- Actively use globalThis.
7
8
  if (globalThis.process) {
8
9
  return;
9
10
  }
@@ -16,6 +17,7 @@ if you want to view the source, please visit the github repository of this plugi
16
17
  env: {},
17
18
  platform: 'android'
18
19
  };
20
+ // eslint-disable-next-line obsidianmd/prefer-active-doc -- Actively use globalThis.
19
21
  globalThis.process = browserProcess;
20
22
  })();
21
23
 
@@ -61,4 +63,4 @@ export {
61
63
  getApp,
62
64
  getObsidianDevUtilsState
63
65
  };
64
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL2FwcC50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIFByb3ZpZGVzIGEgdXRpbGl0eSB0byByZXRyaWV2ZSB0aGUgT2JzaWRpYW4gYEFwcGAgaW5zdGFuY2UuXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBBcHAgfSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB0eXBlIHsgR2VuZXJpY09iamVjdCB9IGZyb20gJy4uL3R5cGUtZ3VhcmRzLnRzJztcblxuaW1wb3J0IHsgbm9vcCB9IGZyb20gJy4uL2Z1bmN0aW9uLnRzJztcblxuLyoqXG4gKiBXcmFwcGVyIHR5cGUgZm9yIGFjY2Vzc2luZyB0aGUgYEFwcGAgaW5zdGFuY2UgZ2xvYmFsbHkuXG4gKi9cbmludGVyZmFjZSBBcHBXcmFwcGVyIHtcbiAgLyoqXG4gICAqIEFuIG9wdGlvbmFsIHJlZmVyZW5jZSB0byB0aGUgT2JzaWRpYW4gYEFwcGAgaW5zdGFuY2UuXG4gICAqL1xuICBhcHA6IEFwcDtcbn1cblxuaW50ZXJmYWNlIE9ic2lkaWFuRGV2VXRpbHNTdGF0ZVdyYXBwZXIge1xuICBvYnNpZGlhbkRldlV0aWxzU3RhdGU6IEdlbmVyaWNPYmplY3Q7XG59XG5cbi8qKlxuICogV3JhcHBlciB0eXBlIGZvciBzdG9yaW5nIHNoYXJlZCBzdGF0ZSBpbiB0aGUgT2JzaWRpYW4gYXBwLlxuICovXG5leHBvcnQgY2xhc3MgVmFsdWVXcmFwcGVyPFQ+IHtcbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXcgdmFsdWUgd3JhcHBlci5cbiAgICpcbiAgICogQHBhcmFtIHZhbHVlIC0gVGhlIHZhbHVlIHRvIHdyYXAuXG4gICAqL1xuICBwdWJsaWMgY29uc3RydWN0b3IocHVibGljIHZhbHVlOiBUKSB7XG4gICAgbm9vcCgpO1xuICB9XG59XG5cbi8qKlxuICogUmV0cmlldmVzIHRoZSBPYnNpZGlhbiBgQXBwYCBpbnN0YW5jZS5cbiAqXG4gKiBAcmV0dXJucyBUaGUgYEFwcGAgaW5zdGFuY2UuXG4gKiBAdGhyb3dzIFdpbGwgdGhyb3cgYW4gZXJyb3IgaWYgdGhlIGBBcHBgIGluc3RhbmNlIGNhbm5vdCBiZSBmb3VuZC5cbiAqXG4gKiBAc2VlIHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vbW5hb3Vtb3Yvb2JzaWRpYW4tY29kZXNjcmlwdC10b29sa2l0P3RhYj1yZWFkbWUtb3YtZmlsZSNvYnNpZGlhbmFwcC1tb2R1bGV9XG4gKiBAZGVwcmVjYXRlZCBVc2FnZSBvZiB0aGlzIGZ1bmN0aW9uIGlzIG5vdCByZWNvbW1lbmRlZC4gUGFzcyB0aGUge0BsaW5rIEFwcH0gaW5zdGFuY2UgdG8gdGhlIGZ1bmN0aW9uIGluc3RlYWQgd2hlbiBwb3NzaWJsZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEFwcCgpOiBBcHAge1xuICBjb25zdCBhcHAgPSAoZ2xvYmFsVGhpcyBhcyBQYXJ0aWFsPEFwcFdyYXBwZXI+KS5hcHA7XG5cbiAgaWYgKGFwcCkge1xuICAgIHJldHVybiBhcHA7XG4gIH1cblxuICB0cnkge1xuICAgIHJldHVybiBnbG9iYWxUaGlzLnJlcXVpcmUoJ29ic2lkaWFuL2FwcCcpIGFzIEFwcDtcbiAgfSBjYXRjaCB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdPYnNpZGlhbiBBcHAgZ2xvYmFsIGluc3RhbmNlIG5vdCBmb3VuZCcpO1xuICB9XG59XG5cbi8qKlxuICogUmV0cmlldmVzIG9yIGNyZWF0ZXMgYSBzaGFyZWQgc3RhdGUgd3JhcHBlciBvYmplY3QgZm9yIGEgZ2l2ZW4ga2V5IGluIHRoZSBPYnNpZGlhbiBhcHAuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBPYnNpZGlhbiBhcHAgaW5zdGFuY2UuXG4gKiBAcGFyYW0ga2V5IC0gVGhlIGtleSB0byBzdG9yZSBvciByZXRyaWV2ZSB0aGUgc2hhcmVkIHN0YXRlLlxuICogQHBhcmFtIGRlZmF1bHRWYWx1ZSAtIFRoZSBkZWZhdWx0IHZhbHVlIHRvIHVzZSBpZiB0aGUgc2hhcmVkIHN0YXRlIGRvZXMgbm90IGV4aXN0LlxuICogQHJldHVybnMgVGhlIFZhbHVlV3JhcHBlciBvYmplY3QgdGhhdCBzdG9yZXMgdGhlIHNoYXJlZCBzdGF0ZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldE9ic2lkaWFuRGV2VXRpbHNTdGF0ZTxUPihhcHA6IEFwcCB8IG51bGwsIGtleTogc3RyaW5nLCBkZWZhdWx0VmFsdWU6IFQpOiBWYWx1ZVdyYXBwZXI8VD4ge1xuICBjb25zdCBob2xkZXIgPSBhcHAgPz8gZ2V0QXBwT3JOdWxsKCkgPz8gZ2xvYmFsVGhpcztcbiAgY29uc3Qgc2hhcmVkU3RhdGVXcmFwcGVyID0gaG9sZGVyIGFzIFBhcnRpYWw8T2JzaWRpYW5EZXZVdGlsc1N0YXRlV3JhcHBlcj47XG4gIHNoYXJlZFN0YXRlV3JhcHBlci5vYnNpZGlhbkRldlV0aWxzU3RhdGUgPz89IHt9O1xuICByZXR1cm4gKHNoYXJlZFN0YXRlV3JhcHBlci5vYnNpZGlhbkRldlV0aWxzU3RhdGVba2V5XSA/Pz0gbmV3IFZhbHVlV3JhcHBlcihkZWZhdWx0VmFsdWUpKSBhcyBWYWx1ZVdyYXBwZXI8VD47XG59XG5cbmZ1bmN0aW9uIGdldEFwcE9yTnVsbCgpOiBBcHAgfCBudWxsIHtcbiAgdHJ5IHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWRlcHJlY2F0ZWQgLS0gV2UgbmVlZCB0byB1c2UgdGhlIGRlcHJlY2F0ZWQgZnVuY3Rpb24gdG8gZ2V0IHRoZSBhcHAgaW5zdGFuY2UuXG4gICAgcmV0dXJuIGdldEFwcCgpO1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBVUEsU0FBUyxZQUFZO0FBbUJkLE1BQU0sYUFBZ0I7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFNcEIsWUFBbUIsT0FBVTtBQUFWO0FBQ3hCLFNBQUs7QUFBQSxFQUNQO0FBQUEsRUFGMEI7QUFHNUI7QUFXTyxTQUFTLFNBQWM7QUFDNUIsUUFBTSxNQUFPLFdBQW1DO0FBRWhELE1BQUksS0FBSztBQUNQLFdBQU87QUFBQSxFQUNUO0FBRUEsTUFBSTtBQUNGLFdBQU8sV0FBVyxRQUFRLGNBQWM7QUFBQSxFQUMxQyxRQUFRO0FBQ04sVUFBTSxJQUFJLE1BQU0sd0NBQXdDO0FBQUEsRUFDMUQ7QUFDRjtBQVVPLFNBQVMseUJBQTRCLEtBQWlCLEtBQWEsY0FBa0M7QUFDMUcsUUFBTSxTQUFTLE9BQU8sYUFBYSxLQUFLO0FBQ3hDLFFBQU0scUJBQXFCO0FBQzNCLHFCQUFtQiwwQkFBMEIsQ0FBQztBQUM5QyxTQUFRLG1CQUFtQixzQkFBc0IsR0FBRyxNQUFNLElBQUksYUFBYSxZQUFZO0FBQ3pGO0FBRUEsU0FBUyxlQUEyQjtBQUNsQyxNQUFJO0FBRUYsV0FBTyxPQUFPO0FBQUEsRUFDaEIsUUFBUTtBQUNOLFdBQU87QUFBQSxFQUNUO0FBQ0Y7IiwKICAibmFtZXMiOiBbXQp9Cg==
66
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL2FwcC50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIFByb3ZpZGVzIGEgdXRpbGl0eSB0byByZXRyaWV2ZSB0aGUgT2JzaWRpYW4gYEFwcGAgaW5zdGFuY2UuXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBBcHAgfSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB0eXBlIHsgR2VuZXJpY09iamVjdCB9IGZyb20gJy4uL3R5cGUtZ3VhcmRzLnRzJztcblxuaW1wb3J0IHsgbm9vcCB9IGZyb20gJy4uL2Z1bmN0aW9uLnRzJztcblxuLyoqXG4gKiBXcmFwcGVyIHR5cGUgZm9yIGFjY2Vzc2luZyB0aGUgYEFwcGAgaW5zdGFuY2UgZ2xvYmFsbHkuXG4gKi9cbmludGVyZmFjZSBBcHBXcmFwcGVyIHtcbiAgLyoqXG4gICAqIEFuIG9wdGlvbmFsIHJlZmVyZW5jZSB0byB0aGUgT2JzaWRpYW4gYEFwcGAgaW5zdGFuY2UuXG4gICAqL1xuICBhcHA6IEFwcDtcbn1cblxuaW50ZXJmYWNlIE9ic2lkaWFuRGV2VXRpbHNTdGF0ZVdyYXBwZXIge1xuICBvYnNpZGlhbkRldlV0aWxzU3RhdGU6IEdlbmVyaWNPYmplY3Q7XG59XG5cbi8qKlxuICogV3JhcHBlciB0eXBlIGZvciBzdG9yaW5nIHNoYXJlZCBzdGF0ZSBpbiB0aGUgT2JzaWRpYW4gYXBwLlxuICovXG5leHBvcnQgY2xhc3MgVmFsdWVXcmFwcGVyPFQ+IHtcbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXcgdmFsdWUgd3JhcHBlci5cbiAgICpcbiAgICogQHBhcmFtIHZhbHVlIC0gVGhlIHZhbHVlIHRvIHdyYXAuXG4gICAqL1xuICBwdWJsaWMgY29uc3RydWN0b3IocHVibGljIHZhbHVlOiBUKSB7XG4gICAgbm9vcCgpO1xuICB9XG59XG5cbi8qKlxuICogUmV0cmlldmVzIHRoZSBPYnNpZGlhbiBgQXBwYCBpbnN0YW5jZS5cbiAqXG4gKiBAcmV0dXJucyBUaGUgYEFwcGAgaW5zdGFuY2UuXG4gKiBAdGhyb3dzIFdpbGwgdGhyb3cgYW4gZXJyb3IgaWYgdGhlIGBBcHBgIGluc3RhbmNlIGNhbm5vdCBiZSBmb3VuZC5cbiAqXG4gKiBAc2VlIHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vbW5hb3Vtb3Yvb2JzaWRpYW4tY29kZXNjcmlwdC10b29sa2l0P3RhYj1yZWFkbWUtb3YtZmlsZSNvYnNpZGlhbmFwcC1tb2R1bGV9XG4gKiBAZGVwcmVjYXRlZCBVc2FnZSBvZiB0aGlzIGZ1bmN0aW9uIGlzIG5vdCByZWNvbW1lbmRlZC4gUGFzcyB0aGUge0BsaW5rIEFwcH0gaW5zdGFuY2UgdG8gdGhlIGZ1bmN0aW9uIGluc3RlYWQgd2hlbiBwb3NzaWJsZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEFwcCgpOiBBcHAge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgb2JzaWRpYW5tZC9wcmVmZXItYWN0aXZlLWRvYyAtLSBBY3RpdmVseSB1c2UgZ2xvYmFsVGhpcy5cbiAgY29uc3QgYXBwID0gKGdsb2JhbFRoaXMgYXMgUGFydGlhbDxBcHBXcmFwcGVyPikuYXBwO1xuXG4gIGlmIChhcHApIHtcbiAgICByZXR1cm4gYXBwO1xuICB9XG5cbiAgdHJ5IHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgb2JzaWRpYW5tZC9wcmVmZXItYWN0aXZlLWRvYyAtLSBBY3RpdmVseSB1c2UgZ2xvYmFsVGhpcy5cbiAgICByZXR1cm4gZ2xvYmFsVGhpcy5yZXF1aXJlKCdvYnNpZGlhbi9hcHAnKSBhcyBBcHA7XG4gIH0gY2F0Y2gge1xuICAgIHRocm93IG5ldyBFcnJvcignT2JzaWRpYW4gQXBwIGdsb2JhbCBpbnN0YW5jZSBub3QgZm91bmQnKTtcbiAgfVxufVxuXG4vKipcbiAqIFJldHJpZXZlcyBvciBjcmVhdGVzIGEgc2hhcmVkIHN0YXRlIHdyYXBwZXIgb2JqZWN0IGZvciBhIGdpdmVuIGtleSBpbiB0aGUgT2JzaWRpYW4gYXBwLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgT2JzaWRpYW4gYXBwIGluc3RhbmNlLlxuICogQHBhcmFtIGtleSAtIFRoZSBrZXkgdG8gc3RvcmUgb3IgcmV0cmlldmUgdGhlIHNoYXJlZCBzdGF0ZS5cbiAqIEBwYXJhbSBkZWZhdWx0VmFsdWUgLSBUaGUgZGVmYXVsdCB2YWx1ZSB0byB1c2UgaWYgdGhlIHNoYXJlZCBzdGF0ZSBkb2VzIG5vdCBleGlzdC5cbiAqIEByZXR1cm5zIFRoZSBWYWx1ZVdyYXBwZXIgb2JqZWN0IHRoYXQgc3RvcmVzIHRoZSBzaGFyZWQgc3RhdGUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRPYnNpZGlhbkRldlV0aWxzU3RhdGU8VD4oYXBwOiBBcHAgfCBudWxsLCBrZXk6IHN0cmluZywgZGVmYXVsdFZhbHVlOiBUKTogVmFsdWVXcmFwcGVyPFQ+IHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG9ic2lkaWFubWQvcHJlZmVyLWFjdGl2ZS1kb2MgLS0gQWN0aXZlbHkgdXNlIGdsb2JhbFRoaXMuXG4gIGNvbnN0IGhvbGRlciA9IGFwcCA/PyBnZXRBcHBPck51bGwoKSA/PyBnbG9iYWxUaGlzO1xuICBjb25zdCBzaGFyZWRTdGF0ZVdyYXBwZXIgPSBob2xkZXIgYXMgUGFydGlhbDxPYnNpZGlhbkRldlV0aWxzU3RhdGVXcmFwcGVyPjtcbiAgc2hhcmVkU3RhdGVXcmFwcGVyLm9ic2lkaWFuRGV2VXRpbHNTdGF0ZSA/Pz0ge307XG4gIHJldHVybiAoc2hhcmVkU3RhdGVXcmFwcGVyLm9ic2lkaWFuRGV2VXRpbHNTdGF0ZVtrZXldID8/PSBuZXcgVmFsdWVXcmFwcGVyKGRlZmF1bHRWYWx1ZSkpIGFzIFZhbHVlV3JhcHBlcjxUPjtcbn1cblxuZnVuY3Rpb24gZ2V0QXBwT3JOdWxsKCk6IEFwcCB8IG51bGwge1xuICB0cnkge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZGVwcmVjYXRlZCAtLSBXZSBuZWVkIHRvIHVzZSB0aGUgZGVwcmVjYXRlZCBmdW5jdGlvbiB0byBnZXQgdGhlIGFwcCBpbnN0YW5jZS5cbiAgICByZXR1cm4gZ2V0QXBwKCk7XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiBudWxsO1xuICB9XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQVVBLFNBQVMsWUFBWTtBQW1CZCxNQUFNLGFBQWdCO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBTXBCLFlBQW1CLE9BQVU7QUFBVjtBQUN4QixTQUFLO0FBQUEsRUFDUDtBQUFBLEVBRjBCO0FBRzVCO0FBV08sU0FBUyxTQUFjO0FBRTVCLFFBQU0sTUFBTyxXQUFtQztBQUVoRCxNQUFJLEtBQUs7QUFDUCxXQUFPO0FBQUEsRUFDVDtBQUVBLE1BQUk7QUFFRixXQUFPLFdBQVcsUUFBUSxjQUFjO0FBQUEsRUFDMUMsUUFBUTtBQUNOLFVBQU0sSUFBSSxNQUFNLHdDQUF3QztBQUFBLEVBQzFEO0FBQ0Y7QUFVTyxTQUFTLHlCQUE0QixLQUFpQixLQUFhLGNBQWtDO0FBRTFHLFFBQU0sU0FBUyxPQUFPLGFBQWEsS0FBSztBQUN4QyxRQUFNLHFCQUFxQjtBQUMzQixxQkFBbUIsMEJBQTBCLENBQUM7QUFDOUMsU0FBUSxtQkFBbUIsc0JBQXNCLEdBQUcsTUFBTSxJQUFJLGFBQWEsWUFBWTtBQUN6RjtBQUVBLFNBQVMsZUFBMkI7QUFDbEMsTUFBSTtBQUVGLFdBQU8sT0FBTztBQUFBLEVBQ2hCLFFBQVE7QUFDTixXQUFPO0FBQUEsRUFDVDtBQUNGOyIsCiAgIm5hbWVzIjogW10KfQo=
@@ -4,6 +4,7 @@ if you want to view the source, please visit the github repository of this plugi
4
4
  */
5
5
 
6
6
  (function initEsm() {
7
+ // eslint-disable-next-line obsidianmd/prefer-active-doc -- Actively use globalThis.
7
8
  if (globalThis.process) {
8
9
  return;
9
10
  }
@@ -16,6 +17,7 @@ if you want to view the source, please visit the github repository of this plugi
16
17
  env: {},
17
18
  platform: 'android'
18
19
  };
20
+ // eslint-disable-next-line obsidianmd/prefer-active-doc -- Actively use globalThis.
19
21
  globalThis.process = browserProcess;
20
22
  })();
21
23
 
@@ -65,14 +67,14 @@ function onTimeoutNotice(ctx) {
65
67
  });
66
68
  button.addEventListener("click", () => {
67
69
  ctx.terminateOperation();
68
- clearInterval(cleanup.intervalId);
70
+ activeWindow.clearInterval(cleanup.intervalId);
69
71
  notice.hide();
70
72
  });
71
73
  }));
72
74
  updateRunningTime();
73
- cleanup.intervalId = window.setInterval(updateRunningTime, SECOND_IN_MILLISECONDS);
75
+ cleanup.intervalId = activeWindow.setInterval(updateRunningTime, SECOND_IN_MILLISECONDS);
74
76
  ctx.onOperationCompleted(() => {
75
- clearInterval(cleanup.intervalId);
77
+ activeWindow.clearInterval(cleanup.intervalId);
76
78
  notice.hide();
77
79
  });
78
80
  function updateRunningTime() {
@@ -93,4 +95,4 @@ export {
93
95
  retryWithTimeoutNotice,
94
96
  runWithTimeoutNotice
95
97
  };
96
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL2FzeW5jLXdpdGgtbm90aWNlLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogUHJvdmlkZXMgYSB1dGlsaXR5IHRvIGV4ZWN1dGUgYW4gYXN5bmNocm9ub3VzIGZ1bmN0aW9uIHdpdGggYSBub3RpY2UuXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBQcm9taXNhYmxlIH0gZnJvbSAndHlwZS1mZXN0JztcblxuaW1wb3J0IHsgTm90aWNlIH0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQgdHlwZSB7XG4gIFJldHJ5T3B0aW9ucyxcbiAgVGltZW91dENvbnRleHRcbn0gZnJvbSAnLi4vYXN5bmMudHMnO1xuXG5pbXBvcnQge1xuICByZXRyeVdpdGhUaW1lb3V0LFxuICBydW5XaXRoVGltZW91dFxufSBmcm9tICcuLi9hc3luYy50cyc7XG5pbXBvcnQgeyBnZXREZWJ1Z2dlciB9IGZyb20gJy4uL2RlYnVnLnRzJztcbmltcG9ydCB7IHQgfSBmcm9tICcuL2kxOG4vaTE4bi50cyc7XG5cbi8qKlxuICogT3B0aW9ucyBmb3Ige0BsaW5rIHJldHJ5V2l0aFRpbWVvdXROb3RpY2V9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJldHJ5V2l0aFRpbWVvdXROb3RpY2VQYXJhbXMge1xuICAvKipcbiAgICogVGhlIG9wZXJhdGlvbiBmdW5jdGlvbiB0byBleGVjdXRlLlxuICAgKlxuICAgKiBAcGFyYW0gYWJvcnRTaWduYWwgLSBUaGUgYWJvcnQgc2lnbmFsIHRvIGxpc3RlbiB0by5cbiAgICogQHJldHVybnMgVGhlIHJlc3VsdCBvZiB0aGUgZnVuY3Rpb24uXG4gICAqL1xuICByZWFkb25seSBvcGVyYXRpb25GbjogKHRoaXM6IHZvaWQsIGFib3J0U2lnbmFsOiBBYm9ydFNpZ25hbCkgPT4gUHJvbWlzYWJsZTxib29sZWFuPjtcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIG9wZXJhdGlvbi5cbiAgICovXG4gIHJlYWRvbmx5IG9wZXJhdGlvbk5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSByZXRyeSBvcHRpb25zLlxuICAgKi9cbiAgcmVhZG9ubHkgcmV0cnlPcHRpb25zPzogUmV0cnlPcHRpb25zO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIHNob3cgYSB0aW1lb3V0IG5vdGljZS4gRGVmYXVsdCBpcyBgdHJ1ZWAuXG4gICAqL1xuICByZWFkb25seSBzaG91bGRTaG93VGltZW91dE5vdGljZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBzdGFjayB0cmFjZSBvZiB0aGUgc291cmNlIGZ1bmN0aW9uLlxuICAgKi9cbiAgcmVhZG9ubHkgc3RhY2tUcmFjZT86IHN0cmluZztcbn1cblxuLyoqXG4gKiBPcHRpb25zIGZvciB7QGxpbmsgcnVuV2l0aFRpbWVvdXR9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJ1bldpdGhUaW1lb3V0Tm90aWNlUGFyYW1zPFJlc3VsdD4ge1xuICAvKipcbiAgICogVGhlIGNvbnRleHQgb2YgdGhlIGZ1bmN0aW9uLlxuICAgKi9cbiAgcmVhZG9ubHkgY29udGV4dD86IHVua25vd247XG5cbiAgLyoqXG4gICAqIFRoZSBvcGVyYXRpb24gZnVuY3Rpb24gdG8gZXhlY3V0ZS5cbiAgICpcbiAgICogQHBhcmFtIGFib3J0U2lnbmFsIC0gVGhlIGFib3J0IHNpZ25hbCB0byBsaXN0ZW4gdG8uXG4gICAqIEByZXR1cm5zIFRoZSByZXN1bHQgb2YgdGhlIGZ1bmN0aW9uLlxuICAgKi9cbiAgcmVhZG9ubHkgb3BlcmF0aW9uRm46IChhYm9ydFNpZ25hbDogQWJvcnRTaWduYWwpID0+IFByb21pc2FibGU8UmVzdWx0PjtcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIG9wZXJhdGlvbi5cbiAgICovXG4gIHJlYWRvbmx5IG9wZXJhdGlvbk5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gc2hvdyBhIHRpbWVvdXQgbm90aWNlLiBEZWZhdWx0IGlzIGB0cnVlYC5cbiAgICovXG4gIHJlYWRvbmx5IHNob3VsZFNob3dUaW1lb3V0Tm90aWNlPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIHN0YWNrIHRyYWNlIG9mIHRoZSBzb3VyY2UgZnVuY3Rpb24uXG4gICAqL1xuICByZWFkb25seSBzdGFja1RyYWNlPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbWF4aW11bSB0aW1lIHRvIHdhaXQgaW4gbWlsbGlzZWNvbmRzLlxuICAgKi9cbiAgcmVhZG9ubHkgdGltZW91dEluTWlsbGlzZWNvbmRzOiBudW1iZXI7XG59XG5cbi8qKlxuICogUmV0cmllcyB0aGUgcHJvdmlkZWQgZnVuY3Rpb24gdW50aWwgaXQgcmV0dXJucyBgdHJ1ZWAgb3IgdGhlIHRpbWVvdXQgaXMgcmVhY2hlZCBhbmQgZGlzcGxheXMgYSBub3RpY2UgaWYgdGhlIGZ1bmN0aW9uIHRpbWVzIG91dC5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBmdW5jdGlvbi5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgZnVuY3Rpb24gcmV0dXJucyBgdHJ1ZWAgb3IgcmVqZWN0cyB3aGVuIHRoZSB0aW1lb3V0IGlzIHJlYWNoZWQuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZXRyeVdpdGhUaW1lb3V0Tm90aWNlKHBhcmFtczogUmV0cnlXaXRoVGltZW91dE5vdGljZVBhcmFtcyk6IFByb21pc2U8dm9pZD4ge1xuICByZXR1cm4gcmV0cnlXaXRoVGltZW91dCh7XG4gICAgLi4ucGFyYW1zLFxuICAgIG9uVGltZW91dDogcGFyYW1zLnNob3VsZFNob3dUaW1lb3V0Tm90aWNlID8gb25UaW1lb3V0Tm90aWNlIDogb25UaW1lb3V0V2l0aG91dE5vdGljZVxuICB9KTtcbn1cblxuLyoqXG4gKiBFeGVjdXRlcyBhIGZ1bmN0aW9uIHdpdGggYSB0aW1lb3V0IGFuZCBkaXNwbGF5cyBhIG5vdGljZSBpZiB0aGUgZnVuY3Rpb24gdGltZXMgb3V0LlxuICpcbiAqIEB0eXBlUGFyYW0gUiAtIFRoZSB0eXBlIG9mIHRoZSByZXN1bHQgZnJvbSB0aGUgYXN5bmNocm9ub3VzIGZ1bmN0aW9uLlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgZnVuY3Rpb24uXG4gKiBAcmV0dXJucyBUaGUgcmVzdWx0IG9mIHRoZSBmdW5jdGlvbi5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJ1bldpdGhUaW1lb3V0Tm90aWNlPFJlc3VsdD4ocGFyYW1zOiBSdW5XaXRoVGltZW91dE5vdGljZVBhcmFtczxSZXN1bHQ+KTogUHJvbWlzZTxSZXN1bHQ+IHtcbiAgcmV0dXJuIHJ1bldpdGhUaW1lb3V0KHtcbiAgICAuLi5wYXJhbXMsXG4gICAgb25UaW1lb3V0OiBwYXJhbXMuc2hvdWxkU2hvd1RpbWVvdXROb3RpY2UgPyBvblRpbWVvdXROb3RpY2UgOiBvblRpbWVvdXRXaXRob3V0Tm90aWNlXG4gIH0pO1xufVxuXG5mdW5jdGlvbiBvblRpbWVvdXROb3RpY2UoY3R4OiBUaW1lb3V0Q29udGV4dCk6IHZvaWQge1xuICBjb25zdCBzdGFydFRpbWUgPSBNYXRoLnRydW5jKHBlcmZvcm1hbmNlLm5vdygpIC0gY3R4LmR1cmF0aW9uKTtcbiAgbGV0IHJ1bm5pbmdUaW1lRWw6IEhUTUxTcGFuRWxlbWVudDtcbiAgY29uc3QgU0VDT05EX0lOX01JTExJU0VDT05EUyA9IDEwMDA7XG4gIGNvbnN0IGNsZWFudXAgPSB7IGludGVydmFsSWQ6IDAgfTtcblxuICBjb25zdCBub3RpY2UgPSBuZXcgTm90aWNlKGNyZWF0ZUZyYWdtZW50KChmKSA9PiB7XG4gICAgaWYgKGN0eC5vcGVyYXRpb25OYW1lKSB7XG4gICAgICBmLmFwcGVuZFRleHQodCgoJCkgPT4gJC5vYnNpZGlhbkRldlV0aWxzLmFzeW5jV2l0aE5vdGljZS5vcGVyYXRpb24pKTtcbiAgICAgIGYuYXBwZW5kVGV4dCgnOiAnKTtcbiAgICAgIGYuYXBwZW5kVGV4dChjdHgub3BlcmF0aW9uTmFtZSk7XG4gICAgICBmLmNyZWF0ZUVsKCdicicpO1xuICAgIH1cbiAgICBmLmFwcGVuZFRleHQodCgoJCkgPT4gJC5vYnNpZGlhbkRldlV0aWxzLmFzeW5jV2l0aE5vdGljZS50aW1lZE91dCwgeyBkdXJhdGlvbjogY3R4LmR1cmF0aW9uIH0pKTtcbiAgICBmLmNyZWF0ZUVsKCdicicpO1xuICAgIGYuYXBwZW5kVGV4dCh0KCgkKSA9PiAkLm9ic2lkaWFuRGV2VXRpbHMuYXN5bmNXaXRoTm90aWNlLnJ1bm5pbmdGb3IpKTtcbiAgICBmLmFwcGVuZFRleHQoJyAnKTtcbiAgICBydW5uaW5nVGltZUVsID0gZi5jcmVhdGVTcGFuKCk7XG4gICAgZi5hcHBlbmRUZXh0KCcgJyk7XG4gICAgZi5hcHBlbmRUZXh0KHQoKCQpID0+ICQub2JzaWRpYW5EZXZVdGlscy5hc3luY1dpdGhOb3RpY2UubWlsbGlzZWNvbmRzKSk7XG4gICAgZi5jcmVhdGVFbCgnYnInKTtcbiAgICBmLmFwcGVuZFRleHQodCgoJCkgPT4gJC5vYnNpZGlhbkRldlV0aWxzLmFzeW5jV2l0aE5vdGljZS50ZXJtaW5hdGVPcGVyYXRpb24pKTtcbiAgICBmLmNyZWF0ZUVsKCdicicpO1xuICAgIGNvbnN0IGJ1dHRvbiA9IGYuY3JlYXRlRWwoJ2J1dHRvbicsIHtcbiAgICAgIHRleHQ6IHQoKCQpID0+ICQub2JzaWRpYW5EZXZVdGlscy5idXR0b25zLmNhbmNlbClcbiAgICB9KTtcbiAgICBidXR0b24uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoKSA9PiB7XG4gICAgICBjdHgudGVybWluYXRlT3BlcmF0aW9uKCk7XG4gICAgICBjbGVhckludGVydmFsKGNsZWFudXAuaW50ZXJ2YWxJZCk7XG4gICAgICBub3RpY2UuaGlkZSgpO1xuICAgIH0pO1xuICB9KSk7XG5cbiAgdXBkYXRlUnVubmluZ1RpbWUoKTtcbiAgY2xlYW51cC5pbnRlcnZhbElkID0gd2luZG93LnNldEludGVydmFsKHVwZGF0ZVJ1bm5pbmdUaW1lLCBTRUNPTkRfSU5fTUlMTElTRUNPTkRTKTtcblxuICBjdHgub25PcGVyYXRpb25Db21wbGV0ZWQoKCkgPT4ge1xuICAgIGNsZWFySW50ZXJ2YWwoY2xlYW51cC5pbnRlcnZhbElkKTtcbiAgICBub3RpY2UuaGlkZSgpO1xuICB9KTtcblxuICBmdW5jdGlvbiB1cGRhdGVSdW5uaW5nVGltZSgpOiB2b2lkIHtcbiAgICBjb25zdCBydW5uaW5nVGltZUluTWlsbGlzZWNvbmRzID0gTWF0aC5tYXgoY3R4LmR1cmF0aW9uLCBNYXRoLnJvdW5kKChwZXJmb3JtYW5jZS5ub3coKSAtIHN0YXJ0VGltZSkgLyBTRUNPTkRfSU5fTUlMTElTRUNPTkRTKSAqIFNFQ09ORF9JTl9NSUxMSVNFQ09ORFMpO1xuICAgIHJ1bm5pbmdUaW1lRWwudGV4dENvbnRlbnQgPSBTdHJpbmcocnVubmluZ1RpbWVJbk1pbGxpc2Vjb25kcyk7XG4gIH1cbn1cblxuZnVuY3Rpb24gb25UaW1lb3V0V2l0aG91dE5vdGljZShjdHg6IFRpbWVvdXRDb250ZXh0KTogdm9pZCB7XG4gIGNvbnN0IHN0YXJ0VGltZSA9IE1hdGgudHJ1bmMocGVyZm9ybWFuY2Uubm93KCkgLSBjdHguZHVyYXRpb24pO1xuXG4gIGN0eC5vbk9wZXJhdGlvbkNvbXBsZXRlZCgoKSA9PiB7XG4gICAgZ2V0RGVidWdnZXIoJ0FzeW5jV2l0aE5vdGljZTpvblRpbWVvdXRXaXRob3V0Tm90aWNlJykoJ09wZXJhdGlvbiBjb21wbGV0ZWQgYWZ0ZXIgdGltZW91dCcsIHtcbiAgICAgIG9wZXJhdGlvbk5hbWU6IGN0eC5vcGVyYXRpb25OYW1lLFxuICAgICAgdG90YWxEdXJhdGlvbjogTWF0aC50cnVuYyhwZXJmb3JtYW5jZS5ub3coKSAtIHN0YXJ0VGltZSlcbiAgICB9KTtcbiAgfSk7XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFRQSxTQUFTLGNB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
98
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL2FzeW5jLXdpdGgtbm90aWNlLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogUHJvdmlkZXMgYSB1dGlsaXR5IHRvIGV4ZWN1dGUgYW4gYXN5bmNocm9ub3VzIGZ1bmN0aW9uIHdpdGggYSBub3RpY2UuXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBQcm9taXNhYmxlIH0gZnJvbSAndHlwZS1mZXN0JztcblxuaW1wb3J0IHsgTm90aWNlIH0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQgdHlwZSB7XG4gIFJldHJ5T3B0aW9ucyxcbiAgVGltZW91dENvbnRleHRcbn0gZnJvbSAnLi4vYXN5bmMudHMnO1xuXG5pbXBvcnQge1xuICByZXRyeVdpdGhUaW1lb3V0LFxuICBydW5XaXRoVGltZW91dFxufSBmcm9tICcuLi9hc3luYy50cyc7XG5pbXBvcnQgeyBnZXREZWJ1Z2dlciB9IGZyb20gJy4uL2RlYnVnLnRzJztcbmltcG9ydCB7IHQgfSBmcm9tICcuL2kxOG4vaTE4bi50cyc7XG5cbi8qKlxuICogT3B0aW9ucyBmb3Ige0BsaW5rIHJldHJ5V2l0aFRpbWVvdXROb3RpY2V9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJldHJ5V2l0aFRpbWVvdXROb3RpY2VQYXJhbXMge1xuICAvKipcbiAgICogVGhlIG9wZXJhdGlvbiBmdW5jdGlvbiB0byBleGVjdXRlLlxuICAgKlxuICAgKiBAcGFyYW0gYWJvcnRTaWduYWwgLSBUaGUgYWJvcnQgc2lnbmFsIHRvIGxpc3RlbiB0by5cbiAgICogQHJldHVybnMgVGhlIHJlc3VsdCBvZiB0aGUgZnVuY3Rpb24uXG4gICAqL1xuICByZWFkb25seSBvcGVyYXRpb25GbjogKHRoaXM6IHZvaWQsIGFib3J0U2lnbmFsOiBBYm9ydFNpZ25hbCkgPT4gUHJvbWlzYWJsZTxib29sZWFuPjtcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIG9wZXJhdGlvbi5cbiAgICovXG4gIHJlYWRvbmx5IG9wZXJhdGlvbk5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSByZXRyeSBvcHRpb25zLlxuICAgKi9cbiAgcmVhZG9ubHkgcmV0cnlPcHRpb25zPzogUmV0cnlPcHRpb25zO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIHNob3cgYSB0aW1lb3V0IG5vdGljZS4gRGVmYXVsdCBpcyBgdHJ1ZWAuXG4gICAqL1xuICByZWFkb25seSBzaG91bGRTaG93VGltZW91dE5vdGljZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBzdGFjayB0cmFjZSBvZiB0aGUgc291cmNlIGZ1bmN0aW9uLlxuICAgKi9cbiAgcmVhZG9ubHkgc3RhY2tUcmFjZT86IHN0cmluZztcbn1cblxuLyoqXG4gKiBPcHRpb25zIGZvciB7QGxpbmsgcnVuV2l0aFRpbWVvdXR9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJ1bldpdGhUaW1lb3V0Tm90aWNlUGFyYW1zPFJlc3VsdD4ge1xuICAvKipcbiAgICogVGhlIGNvbnRleHQgb2YgdGhlIGZ1bmN0aW9uLlxuICAgKi9cbiAgcmVhZG9ubHkgY29udGV4dD86IHVua25vd247XG5cbiAgLyoqXG4gICAqIFRoZSBvcGVyYXRpb24gZnVuY3Rpb24gdG8gZXhlY3V0ZS5cbiAgICpcbiAgICogQHBhcmFtIGFib3J0U2lnbmFsIC0gVGhlIGFib3J0IHNpZ25hbCB0byBsaXN0ZW4gdG8uXG4gICAqIEByZXR1cm5zIFRoZSByZXN1bHQgb2YgdGhlIGZ1bmN0aW9uLlxuICAgKi9cbiAgcmVhZG9ubHkgb3BlcmF0aW9uRm46IChhYm9ydFNpZ25hbDogQWJvcnRTaWduYWwpID0+IFByb21pc2FibGU8UmVzdWx0PjtcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIG9wZXJhdGlvbi5cbiAgICovXG4gIHJlYWRvbmx5IG9wZXJhdGlvbk5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gc2hvdyBhIHRpbWVvdXQgbm90aWNlLiBEZWZhdWx0IGlzIGB0cnVlYC5cbiAgICovXG4gIHJlYWRvbmx5IHNob3VsZFNob3dUaW1lb3V0Tm90aWNlPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIHN0YWNrIHRyYWNlIG9mIHRoZSBzb3VyY2UgZnVuY3Rpb24uXG4gICAqL1xuICByZWFkb25seSBzdGFja1RyYWNlPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbWF4aW11bSB0aW1lIHRvIHdhaXQgaW4gbWlsbGlzZWNvbmRzLlxuICAgKi9cbiAgcmVhZG9ubHkgdGltZW91dEluTWlsbGlzZWNvbmRzOiBudW1iZXI7XG59XG5cbi8qKlxuICogUmV0cmllcyB0aGUgcHJvdmlkZWQgZnVuY3Rpb24gdW50aWwgaXQgcmV0dXJucyBgdHJ1ZWAgb3IgdGhlIHRpbWVvdXQgaXMgcmVhY2hlZCBhbmQgZGlzcGxheXMgYSBub3RpY2UgaWYgdGhlIGZ1bmN0aW9uIHRpbWVzIG91dC5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBmdW5jdGlvbi5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgZnVuY3Rpb24gcmV0dXJucyBgdHJ1ZWAgb3IgcmVqZWN0cyB3aGVuIHRoZSB0aW1lb3V0IGlzIHJlYWNoZWQuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZXRyeVdpdGhUaW1lb3V0Tm90aWNlKHBhcmFtczogUmV0cnlXaXRoVGltZW91dE5vdGljZVBhcmFtcyk6IFByb21pc2U8dm9pZD4ge1xuICByZXR1cm4gcmV0cnlXaXRoVGltZW91dCh7XG4gICAgLi4ucGFyYW1zLFxuICAgIG9uVGltZW91dDogcGFyYW1zLnNob3VsZFNob3dUaW1lb3V0Tm90aWNlID8gb25UaW1lb3V0Tm90aWNlIDogb25UaW1lb3V0V2l0aG91dE5vdGljZVxuICB9KTtcbn1cblxuLyoqXG4gKiBFeGVjdXRlcyBhIGZ1bmN0aW9uIHdpdGggYSB0aW1lb3V0IGFuZCBkaXNwbGF5cyBhIG5vdGljZSBpZiB0aGUgZnVuY3Rpb24gdGltZXMgb3V0LlxuICpcbiAqIEB0eXBlUGFyYW0gUiAtIFRoZSB0eXBlIG9mIHRoZSByZXN1bHQgZnJvbSB0aGUgYXN5bmNocm9ub3VzIGZ1bmN0aW9uLlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgZnVuY3Rpb24uXG4gKiBAcmV0dXJucyBUaGUgcmVzdWx0IG9mIHRoZSBmdW5jdGlvbi5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJ1bldpdGhUaW1lb3V0Tm90aWNlPFJlc3VsdD4ocGFyYW1zOiBSdW5XaXRoVGltZW91dE5vdGljZVBhcmFtczxSZXN1bHQ+KTogUHJvbWlzZTxSZXN1bHQ+IHtcbiAgcmV0dXJuIHJ1bldpdGhUaW1lb3V0KHtcbiAgICAuLi5wYXJhbXMsXG4gICAgb25UaW1lb3V0OiBwYXJhbXMuc2hvdWxkU2hvd1RpbWVvdXROb3RpY2UgPyBvblRpbWVvdXROb3RpY2UgOiBvblRpbWVvdXRXaXRob3V0Tm90aWNlXG4gIH0pO1xufVxuXG5mdW5jdGlvbiBvblRpbWVvdXROb3RpY2UoY3R4OiBUaW1lb3V0Q29udGV4dCk6IHZvaWQge1xuICBjb25zdCBzdGFydFRpbWUgPSBNYXRoLnRydW5jKHBlcmZvcm1hbmNlLm5vdygpIC0gY3R4LmR1cmF0aW9uKTtcbiAgbGV0IHJ1bm5pbmdUaW1lRWw6IEhUTUxTcGFuRWxlbWVudDtcbiAgY29uc3QgU0VDT05EX0lOX01JTExJU0VDT05EUyA9IDEwMDA7XG4gIGNvbnN0IGNsZWFudXAgPSB7IGludGVydmFsSWQ6IDAgfTtcblxuICBjb25zdCBub3RpY2UgPSBuZXcgTm90aWNlKGNyZWF0ZUZyYWdtZW50KChmKSA9PiB7XG4gICAgaWYgKGN0eC5vcGVyYXRpb25OYW1lKSB7XG4gICAgICBmLmFwcGVuZFRleHQodCgoJCkgPT4gJC5vYnNpZGlhbkRldlV0aWxzLmFzeW5jV2l0aE5vdGljZS5vcGVyYXRpb24pKTtcbiAgICAgIGYuYXBwZW5kVGV4dCgnOiAnKTtcbiAgICAgIGYuYXBwZW5kVGV4dChjdHgub3BlcmF0aW9uTmFtZSk7XG4gICAgICBmLmNyZWF0ZUVsKCdicicpO1xuICAgIH1cbiAgICBmLmFwcGVuZFRleHQodCgoJCkgPT4gJC5vYnNpZGlhbkRldlV0aWxzLmFzeW5jV2l0aE5vdGljZS50aW1lZE91dCwgeyBkdXJhdGlvbjogY3R4LmR1cmF0aW9uIH0pKTtcbiAgICBmLmNyZWF0ZUVsKCdicicpO1xuICAgIGYuYXBwZW5kVGV4dCh0KCgkKSA9PiAkLm9ic2lkaWFuRGV2VXRpbHMuYXN5bmNXaXRoTm90aWNlLnJ1bm5pbmdGb3IpKTtcbiAgICBmLmFwcGVuZFRleHQoJyAnKTtcbiAgICBydW5uaW5nVGltZUVsID0gZi5jcmVhdGVTcGFuKCk7XG4gICAgZi5hcHBlbmRUZXh0KCcgJyk7XG4gICAgZi5hcHBlbmRUZXh0KHQoKCQpID0+ICQub2JzaWRpYW5EZXZVdGlscy5hc3luY1dpdGhOb3RpY2UubWlsbGlzZWNvbmRzKSk7XG4gICAgZi5jcmVhdGVFbCgnYnInKTtcbiAgICBmLmFwcGVuZFRleHQodCgoJCkgPT4gJC5vYnNpZGlhbkRldlV0aWxzLmFzeW5jV2l0aE5vdGljZS50ZXJtaW5hdGVPcGVyYXRpb24pKTtcbiAgICBmLmNyZWF0ZUVsKCdicicpO1xuICAgIGNvbnN0IGJ1dHRvbiA9IGYuY3JlYXRlRWwoJ2J1dHRvbicsIHtcbiAgICAgIHRleHQ6IHQoKCQpID0+ICQub2JzaWRpYW5EZXZVdGlscy5idXR0b25zLmNhbmNlbClcbiAgICB9KTtcbiAgICBidXR0b24uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoKSA9PiB7XG4gICAgICBjdHgudGVybWluYXRlT3BlcmF0aW9uKCk7XG4gICAgICBhY3RpdmVXaW5kb3cuY2xlYXJJbnRlcnZhbChjbGVhbnVwLmludGVydmFsSWQpO1xuICAgICAgbm90aWNlLmhpZGUoKTtcbiAgICB9KTtcbiAgfSkpO1xuXG4gIHVwZGF0ZVJ1bm5pbmdUaW1lKCk7XG4gIGNsZWFudXAuaW50ZXJ2YWxJZCA9IGFjdGl2ZVdpbmRvdy5zZXRJbnRlcnZhbCh1cGRhdGVSdW5uaW5nVGltZSwgU0VDT05EX0lOX01JTExJU0VDT05EUyk7XG5cbiAgY3R4Lm9uT3BlcmF0aW9uQ29tcGxldGVkKCgpID0+IHtcbiAgICBhY3RpdmVXaW5kb3cuY2xlYXJJbnRlcnZhbChjbGVhbnVwLmludGVydmFsSWQpO1xuICAgIG5vdGljZS5oaWRlKCk7XG4gIH0pO1xuXG4gIGZ1bmN0aW9uIHVwZGF0ZVJ1bm5pbmdUaW1lKCk6IHZvaWQge1xuICAgIGNvbnN0IHJ1bm5pbmdUaW1lSW5NaWxsaXNlY29uZHMgPSBNYXRoLm1heChjdHguZHVyYXRpb24sIE1hdGgucm91bmQoKHBlcmZvcm1hbmNlLm5vdygpIC0gc3RhcnRUaW1lKSAvIFNFQ09ORF9JTl9NSUxMSVNFQ09ORFMpICogU0VDT05EX0lOX01JTExJU0VDT05EUyk7XG4gICAgcnVubmluZ1RpbWVFbC50ZXh0Q29udGVudCA9IFN0cmluZyhydW5uaW5nVGltZUluTWlsbGlzZWNvbmRzKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBvblRpbWVvdXRXaXRob3V0Tm90aWNlKGN0eDogVGltZW91dENvbnRleHQpOiB2b2lkIHtcbiAgY29uc3Qgc3RhcnRUaW1lID0gTWF0aC50cnVuYyhwZXJmb3JtYW5jZS5ub3coKSAtIGN0eC5kdXJhdGlvbik7XG5cbiAgY3R4Lm9uT3BlcmF0aW9uQ29tcGxldGVkKCgpID0+IHtcbiAgICBnZXREZWJ1Z2dlcignQXN5bmNXaXRoTm90aWNlOm9uVGltZW91dFdpdGhvdXROb3RpY2UnKSgnT3BlcmF0aW9uIGNvbXBsZXRlZCBhZnRlciB0aW1lb3V0Jywge1xuICAgICAgb3BlcmF0aW9uTmFtZTogY3R4Lm9wZXJhdGlvbk5hbWUsXG4gICAgICB0b3RhbER1cmF0aW9uOiBNYXRoLnRydW5jKHBlcmZvcm1hbmNlLm5vdygpIC0gc3RhcnRUaW1lKVxuICAgIH0pO1xuICB9KTtcbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBUUEsU0FBUyxjQUFjO0FBT3ZCO0FBQUEsRUFDRTtBQUFBLEVBQ0E7QUFBQSxPQUNLO0FBQ1AsU0FBUyxtQkFBbUI7QUFDNUIsU0FBUyxTQUFTO0FBK0VsQixlQUFzQix1QkFBdUIsUUFBcUQ7QUFDaEcsU0FBTyxpQkFBaUI7QUFBQSxJQUN0QixHQUFHO0FBQUEsSUFDSCxXQUFXLE9BQU8sMEJBQTBCLGtCQUFrQjtBQUFBLEVBQ2hFLENBQUM7QUFDSDtBQVNBLGVBQXNCLHFCQUE2QixRQUE2RDtBQUM5RyxTQUFPLGVBQWU7QUFBQSxJQUNwQixHQUFHO0FBQUEsSUFDSCxXQUFXLE9BQU8sMEJBQTBCLGtCQUFrQjtBQUFBLEVBQ2hFLENBQUM7QUFDSDtBQUVBLFNBQVMsZ0JBQWdCLEtBQTJCO0FBQ2xELFFBQU0sWUFBWSxLQUFLLE1BQU0sWUFBWSxJQUFJLElBQUksSUFBSSxRQUFRO0FBQzdELE1BQUk7QUFDSixRQUFNLHlCQUF5QjtBQUMvQixRQUFNLFVBQVUsRUFBRSxZQUFZLEVBQUU7QUFFaEMsUUFBTSxTQUFTLElBQUksT0FBTyxlQUFlLENBQUMsTUFBTTtBQUM5QyxRQUFJLElBQUksZUFBZTtBQUNyQixRQUFFLFdBQVcsRUFBRSxDQUFDLE1BQU0sRUFBRSxpQkFBaUIsZ0JBQWdCLFNBQVMsQ0FBQztBQUNuRSxRQUFFLFdBQVcsSUFBSTtBQUNqQixRQUFFLFdBQVcsSUFBSSxhQUFhO0FBQzlCLFFBQUUsU0FBUyxJQUFJO0FBQUEsSUFDakI7QUFDQSxNQUFFLFdBQVcsRUFBRSxDQUFDLE1BQU0sRUFBRSxpQkFBaUIsZ0JBQWdCLFVBQVUsRUFBRSxVQUFVLElBQUksU0FBUyxDQUFDLENBQUM7QUFDOUYsTUFBRSxTQUFTLElBQUk7QUFDZixNQUFFLFdBQVcsRUFBRSxDQUFDLE1BQU0sRUFBRSxpQkFBaUIsZ0JBQWdCLFVBQVUsQ0FBQztBQUNwRSxNQUFFLFdBQVcsR0FBRztBQUNoQixvQkFBZ0IsRUFBRSxXQUFXO0FBQzdCLE1BQUUsV0FBVyxHQUFHO0FBQ2hCLE1BQUUsV0FBVyxFQUFFLENBQUMsTUFBTSxFQUFFLGlCQUFpQixnQkFBZ0IsWUFBWSxDQUFDO0FBQ3RFLE1BQUUsU0FBUyxJQUFJO0FBQ2YsTUFBRSxXQUFXLEVBQUUsQ0FBQyxNQUFNLEVBQUUsaUJBQWlCLGdCQUFnQixrQkFBa0IsQ0FBQztBQUM1RSxNQUFFLFNBQVMsSUFBSTtBQUNmLFVBQU0sU0FBUyxFQUFFLFNBQVMsVUFBVTtBQUFBLE1BQ2xDLE1BQU0sRUFBRSxDQUFDLE1BQU0sRUFBRSxpQkFBaUIsUUFBUSxNQUFNO0FBQUEsSUFDbEQsQ0FBQztBQUNELFdBQU8saUJBQWlCLFNBQVMsTUFBTTtBQUNyQyxVQUFJLG1CQUFtQjtBQUN2QixtQkFBYSxjQUFjLFFBQVEsVUFBVTtBQUM3QyxhQUFPLEtBQUs7QUFBQSxJQUNkLENBQUM7QUFBQSxFQUNILENBQUMsQ0FBQztBQUVGLG9CQUFrQjtBQUNsQixVQUFRLGFBQWEsYUFBYSxZQUFZLG1CQUFtQixzQkFBc0I7QUFFdkYsTUFBSSxxQkFBcUIsTUFBTTtBQUM3QixpQkFBYSxjQUFjLFFBQVEsVUFBVTtBQUM3QyxXQUFPLEtBQUs7QUFBQSxFQUNkLENBQUM7QUFFRCxXQUFTLG9CQUEwQjtBQUNqQyxVQUFNLDRCQUE0QixLQUFLLElBQUksSUFBSSxVQUFVLEtBQUssT0FBTyxZQUFZLElBQUksSUFBSSxhQUFhLHNCQUFzQixJQUFJLHNCQUFzQjtBQUN0SixrQkFBYyxjQUFjLE9BQU8seUJBQXlCO0FBQUEsRUFDOUQ7QUFDRjtBQUVBLFNBQVMsdUJBQXVCLEtBQTJCO0FBQ3pELFFBQU0sWUFBWSxLQUFLLE1BQU0sWUFBWSxJQUFJLElBQUksSUFBSSxRQUFRO0FBRTdELE1BQUkscUJBQXFCLE1BQU07QUFDN0IsZ0JBQVksd0NBQXdDLEVBQUUscUNBQXFDO0FBQUEsTUFDekYsZUFBZSxJQUFJO0FBQUEsTUFDbkIsZUFBZSxLQUFLLE1BQU0sWUFBWSxJQUFJLElBQUksU0FBUztBQUFBLElBQ3pELENBQUM7QUFBQSxFQUNILENBQUM7QUFDSDsiLAogICJuYW1lcyI6IFtdCn0K
@@ -4,6 +4,7 @@ if you want to view the source, please visit the github repository of this plugi
4
4
  */
5
5
 
6
6
  (function initEsm() {
7
+ // eslint-disable-next-line obsidianmd/prefer-active-doc -- Actively use globalThis.
7
8
  if (globalThis.process) {
8
9
  return;
9
10
  }
@@ -16,6 +17,7 @@ if you want to view the source, please visit the github repository of this plugi
16
17
  env: {},
17
18
  platform: 'android'
18
19
  };
20
+ // eslint-disable-next-line obsidianmd/prefer-active-doc -- Actively use globalThis.
19
21
  globalThis.process = browserProcess;
20
22
  })();
21
23
 
@@ -136,4 +138,4 @@ export {
136
138
  getAvailablePathForAttachments,
137
139
  hasOwnAttachmentFolder
138
140
  };
139
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL2F0dGFjaG1lbnQtcGF0aC50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIFByb3ZpZGVzIHV0aWxpdHkgZnVuY3Rpb25zIGZvciB3b3JraW5nIHdpdGggYXR0YWNobWVudCBwYXRocy5cbiAqL1xuXG4vKiB2OCBpZ25vcmUgc3RhcnQgLS0gRGVlcGx5IGNvdXBsZWQgdG8gT2JzaWRpYW4gcnVudGltZTsgcmVxdWlyZXMgcnVubmluZyB2YXVsdCBmb3IgbWVhbmluZ2Z1bCB0ZXN0aW5nLiAqL1xuXG5pbXBvcnQgdHlwZSB7XG4gIEFwcCxcbiAgRmlsZVN0YXRzLFxuICBWYXVsdFxufSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB7IHBhcmVudEZvbGRlclBhdGggfSBmcm9tICdvYnNpZGlhbi10eXBpbmdzL2ltcGxlbWVudGF0aW9ucyc7XG5cbmltcG9ydCB0eXBlIHsgUGF0aE9yRmlsZSB9IGZyb20gJy4vZmlsZS1zeXN0ZW0udHMnO1xuXG5pbXBvcnQge1xuICBiYXNlbmFtZSxcbiAgZGlybmFtZSxcbiAgZXh0bmFtZSxcbiAgam9pbixcbiAgbWFrZUZpbGVOYW1lXG59IGZyb20gJy4uL3BhdGgudHMnO1xuaW1wb3J0IHtcbiAgbm9ybWFsaXplLFxuICByZXBsYWNlQWxsLFxuICB0cmltU3RhcnRcbn0gZnJvbSAnLi4vc3RyaW5nLnRzJztcbmltcG9ydCB7XG4gIGdldEZpbGVPck51bGwsXG4gIGdldEZvbGRlcixcbiAgZ2V0Rm9sZGVyT3JOdWxsLFxuICBnZXRQYXRoLFxuICBNQVJLRE9XTl9GSUxFX0VYVEVOU0lPTlxufSBmcm9tICcuL2ZpbGUtc3lzdGVtLnRzJztcblxuLyoqXG4gKiBBIGNvbnRleHQgZm9yIGFuIGF0dGFjaG1lbnQgcGF0aC5cbiAqL1xuZXhwb3J0IGVudW0gQXR0YWNobWVudFBhdGhDb250ZXh0IHtcbiAgLyoqXG4gICAqIEEgY29udGV4dCBmb3IgYSBkZWxldGUgbm90ZS5cbiAgICovXG4gIERlbGV0ZU5vdGUgPSAnRGVsZXRlTm90ZScsXG5cbiAgLyoqXG4gICAqIEEgY29udGV4dCBmb3IgYSByZW5hbWUgbm90ZS5cbiAgICovXG4gIFJlbmFtZU5vdGUgPSAnUmVuYW1lTm90ZScsXG5cbiAgLyoqXG4gICAqIEFuIHVua25vd24gY29udGV4dC5cbiAgICovXG4gIFVua25vd24gPSAnVW5rbm93bidcbn1cblxuLyoqXG4gKiBPcHRpb25zIGZvciB0aGUgZ2V0IGF2YWlsYWJsZSBwYXRoIGZvciBhdHRhY2htZW50cyBleHRlbmRlZCBmdW5jdGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBHZXRBdmFpbGFibGVQYXRoRm9yQXR0YWNobWVudHNFeHRlbmRlZEZuUGFyYW1zIHtcbiAgLyoqXG4gICAqIEEgYmFzZSBuYW1lIG9mIHRoZSBhdHRhY2htZW50LlxuICAgKi9cbiAgcmVhZG9ubHkgYXR0YWNobWVudEZpbGVCYXNlTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBIGNvbnRlbnQgb2YgdGhlIGF0dGFjaG1lbnQgZmlsZS5cbiAgICovXG4gIHJlYWRvbmx5IGF0dGFjaG1lbnRGaWxlQ29udGVudD86IEFycmF5QnVmZmVyIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBBbiBleHRlbnNpb24gb2YgdGhlIGF0dGFjaG1lbnQuXG4gICAqL1xuICByZWFkb25seSBhdHRhY2htZW50RmlsZUV4dGVuc2lvbjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBIHN0YXRzIG9mIHRoZSBhdHRhY2htZW50IGZpbGUuXG4gICAqL1xuICByZWFkb25seSBhdHRhY2htZW50RmlsZVN0YXQ/OiBGaWxlU3RhdHMgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIEEgY29udGV4dC5cbiAgICovXG4gIHJlYWRvbmx5IGNvbnRleHQ6IEF0dGFjaG1lbnRQYXRoQ29udGV4dDtcblxuICAvKipcbiAgICogQSBwYXRoIG9yIGZpbGUgb2YgdGhlIG5vdGUuXG4gICAqL1xuICByZWFkb25seSBub3RlUGF0aE9yRmlsZTogbnVsbCB8IFBhdGhPckZpbGU7XG5cbiAgLyoqXG4gICAqIEEgcGF0aCBvciBmaWxlIG9mIHRoZSBvbGQgYXR0YWNobWVudC5cbiAgICovXG4gIHJlYWRvbmx5IG9sZEF0dGFjaG1lbnRQYXRoT3JGaWxlOiBQYXRoT3JGaWxlO1xuXG4gIC8qKlxuICAgKiBBIHBhdGggb3IgZmlsZSBvZiB0aGUgb2xkIG5vdGUuXG4gICAqL1xuICByZWFkb25seSBvbGROb3RlUGF0aE9yRmlsZT86IFBhdGhPckZpbGUgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFNob3VsZCB0aGUgZHVwbGljYXRlIGNoZWNrIGJlIHNraXBwZWQuXG4gICAqL1xuICByZWFkb25seSBzaG91bGRTa2lwRHVwbGljYXRlQ2hlY2s/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBTaG91bGQgdGhlIGdlbmVyYXRlZCBhdHRhY2htZW50IGZpbGUgbmFtZSBiZSBza2lwcGVkLlxuICAgKi9cbiAgcmVhZG9ubHkgc2hvdWxkU2tpcEdlbmVyYXRlZEF0dGFjaG1lbnRGaWxlTmFtZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFNob3VsZCBtaXNzaW5nIGF0dGFjaG1lbnQgZm9sZGVyIGNyZWF0aW9uIGJlIHNraXBwZWQuXG4gICAqL1xuICByZWFkb25seSBzaG91bGRTa2lwTWlzc2luZ0F0dGFjaG1lbnRGb2xkZXJDcmVhdGlvbjogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbn1cblxuLyoqXG4gKiB7QGxpbmsgVmF1bHQuZ2V0QXZhaWxhYmxlUGF0aEZvckF0dGFjaG1lbnRzfSBleHRlbmRlZCB3cmFwcGVyLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEdldEF2YWlsYWJsZVBhdGhGb3JBdHRhY2htZW50c0ZuRXh0ZW5kZWQgZXh0ZW5kcyBHZXRBdmFpbGFibGVQYXRoRm9yQXR0YWNobWVudHNGbiB7XG4gIC8qKlxuICAgKiBHZXQgYXZhaWxhYmxlIHBhdGggZm9yIGF0dGFjaG1lbnRzIHdpdGggYWRkaXRpb25hbCBwYXJhbXMuXG4gICAqXG4gICAqIEBwYXJhbSBwYXJhbXMgLSBQYXJhbWV0ZXJzIGZvciB0aGUgZ2V0IGF2YWlsYWJsZSBwYXRoIGZvciBhdHRhY2htZW50cy5cbiAgICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB0byB0aGUgYXZhaWxhYmxlIHBhdGggZm9yIGF0dGFjaG1lbnRzLlxuICAgKi9cbiAgZXh0ZW5kZWQocGFyYW1zOiBHZXRBdmFpbGFibGVQYXRoRm9yQXR0YWNobWVudHNFeHRlbmRlZEZuUGFyYW1zKTogUHJvbWlzZTxzdHJpbmc+O1xufVxuXG50eXBlIEdldEF2YWlsYWJsZVBhdGhGb3JBdHRhY2htZW50c0ZuID0gVmF1bHRbJ2dldEF2YWlsYWJsZVBhdGhGb3JBdHRhY2htZW50cyddO1xuXG4vKipcbiAqIER1bW15IHBhdGguXG4gKi9cbmV4cG9ydCBjb25zdCBEVU1NWV9QQVRIID0gJ19fRFVNTVlfXyc7XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgdGhlIGdldEF0dGFjaG1lbnRGaWxlUGF0aCBmdW5jdGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBHZXRBdHRhY2htZW50RmlsZVBhdGhQYXJhbXMge1xuICAvKipcbiAgICogQW4gT2JzaWRpYW4gYXBwbGljYXRpb24gaW5zdGFuY2UuXG4gICAqL1xuICByZWFkb25seSBhcHA6IEFwcDtcblxuICAvKipcbiAgICogQSBjb250ZXh0LlxuICAgKi9cbiAgcmVhZG9ubHkgY29udGV4dDogQXR0YWNobWVudFBhdGhDb250ZXh0O1xuXG4gIC8qKlxuICAgKiBBIHBhdGggb2YgdGhlIG5vdGUuXG4gICAqL1xuICByZWFkb25seSBub3RlUGF0aE9yRmlsZTogUGF0aE9yRmlsZTtcblxuICAvKipcbiAgICogQSBwYXRoIG9mIHRoZSBhdHRhY2htZW50LlxuICAgKi9cbiAgcmVhZG9ubHkgb2xkQXR0YWNobWVudFBhdGhPckZpbGU6IFBhdGhPckZpbGU7XG5cbiAgLyoqXG4gICAqIEEgcGF0aCBvZiB0aGUgb2xkIG5vdGUuXG4gICAqL1xuICByZWFkb25seSBvbGROb3RlUGF0aE9yRmlsZT86IFBhdGhPckZpbGUgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFNob3VsZCB0aGUgZHVwbGljYXRlIGNoZWNrIGJlIHNraXBwZWQuXG4gICAqL1xuICByZWFkb25seSBzaG91bGRTa2lwRHVwbGljYXRlQ2hlY2s6IGJvb2xlYW47XG59XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgdGhlIGdldEF2YWlsYWJsZVBhdGhGb3JBdHRhY2htZW50cyBmdW5jdGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBHZXRBdmFpbGFibGVQYXRoRm9yQXR0YWNobWVudHNQYXJhbXMge1xuICAvKipcbiAgICogQW4gT2JzaWRpYW4gYXBwbGljYXRpb24gaW5zdGFuY2UuXG4gICAqL1xuICByZWFkb25seSBhcHA6IEFwcDtcbiAgLyoqXG4gICAqIEEgYmFzZSBuYW1lIG9mIHRoZSBhdHRhY2htZW50LlxuICAgKi9cbiAgcmVhZG9ubHkgYXR0YWNobWVudEZpbGVCYXNlTmFtZTogc3RyaW5nO1xuICAvKipcbiAgICogQW4gZXh0ZW5zaW9uIG9mIHRoZSBhdHRhY2htZW50LlxuICAgKi9cbiAgcmVhZG9ubHkgYXR0YWNobWVudEZpbGVFeHRlbnNpb246IHN0cmluZztcbiAgLyoqXG4gICAqIEEgZmlsZSB0byBhdHRhY2ggdG8uXG4gICAqL1xuICByZWFkb25seSBub3RlUGF0aE9yRmlsZTogbnVsbCB8IFBhdGhPckZpbGU7XG4gIC8qKlxuICAgKiBTaG91bGQgdGhlIGR1cGxpY2F0ZSBjaGVjayBiZSBza2lwcGVkLlxuICAgKi9cbiAgcmVhZG9ubHkgc2hvdWxkU2tpcER1cGxpY2F0ZUNoZWNrPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFNob3VsZCBtaXNzaW5nIGF0dGFjaG1lbnQgZm9sZGVyIGNyZWF0aW9uIGJlIHNraXBwZWQuXG4gICAqL1xuICByZWFkb25seSBzaG91bGRTa2lwTWlzc2luZ0F0dGFjaG1lbnRGb2xkZXJDcmVhdGlvbj86IGJvb2xlYW47XG59XG5cbi8qKlxuICogUmV0cmlldmVzIHRoZSBmaWxlIHBhdGggZm9yIGFuIGF0dGFjaG1lbnQgd2l0aGluIGEgbm90ZS5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gUGFyYW1ldGVycyBmb3IgdGhlIGdldCBhdHRhY2htZW50IGZpbGUgcGF0aCBmdW5jdGlvbi5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgdG8gdGhlIGZpbGUgcGF0aCBvZiB0aGUgYXR0YWNobWVudC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldEF0dGFjaG1lbnRGaWxlUGF0aChwYXJhbXM6IEdldEF0dGFjaG1lbnRGaWxlUGF0aFBhcmFtcyk6IFByb21pc2U8c3RyaW5nPiB7XG4gIGNvbnN0IHtcbiAgICBhcHAsXG4gICAgbm90ZVBhdGhPckZpbGUsXG4gICAgb2xkQXR0YWNobWVudFBhdGhPckZpbGUsXG4gICAgc2hvdWxkU2tpcER1cGxpY2F0ZUNoZWNrXG4gIH0gPSBwYXJhbXM7XG4gIGNvbnN0IGF0dGFjaG1lbnRQYXRoID0gZ2V0UGF0aChhcHAsIG9sZEF0dGFjaG1lbnRQYXRoT3JGaWxlKTtcbiAgY29uc3QgYXR0YWNobWVudEZpbGVFeHRlbnNpb24gPSBleHRuYW1lKGF0dGFjaG1lbnRQYXRoKTtcbiAgY29uc3QgYXR0YWNobWVudEZpbGVCYXNlTmFtZSA9IGJhc2VuYW1lKGF0dGFjaG1lbnRQYXRoLCBhdHRhY2htZW50RmlsZUV4dGVuc2lvbik7XG4gIGNvbnN0IGF0dGFjaG1lbnRGaWxlID0gZ2V0RmlsZU9yTnVsbChhcHAsIGF0dGFjaG1lbnRQYXRoKTtcblxuICBjb25zdCBleHRlbmRlZEZuID0gKGFwcC52YXVsdC5nZXRBdmFpbGFibGVQYXRoRm9yQXR0YWNobWVudHMgYXMgUGFydGlhbDxHZXRBdmFpbGFibGVQYXRoRm9yQXR0YWNobWVudHNGbkV4dGVuZGVkPikuZXh0ZW5kZWQ7XG4gIGlmIChleHRlbmRlZEZuKSB7XG4gICAgcmV0dXJuIGV4dGVuZGVkRm4oe1xuICAgICAgYXR0YWNobWVudEZpbGVCYXNlTmFtZSxcbiAgICAgIGF0dGFjaG1lbnRGaWxlQ29udGVudDogYXR0YWNobWVudEZpbGUgPyBhd2FpdCBhcHAudmF1bHQucmVhZEJpbmFyeShhdHRhY2htZW50RmlsZSkgOiB1bmRlZmluZWQsXG4gICAgICBhdHRhY2htZW50RmlsZUV4dGVuc2lvbjogYXR0YWNobWVudEZpbGVFeHRlbnNpb24uc2xpY2UoMSksXG4gICAgICBhdHRhY2htZW50RmlsZVN0YXQ6IGF0dGFjaG1lbnRGaWxlPy5zdGF0LFxuICAgICAgY29udGV4dDogcGFyYW1zLmNvbnRleHQsXG4gICAgICBub3RlUGF0aE9yRmlsZSxcbiAgICAgIG9sZEF0dGFjaG1lbnRQYXRoT3JGaWxlOiBwYXJhbXMub2xkQXR0YWNobWVudFBhdGhPckZpbGUsXG4gICAgICBvbGROb3RlUGF0aE9yRmlsZTogcGFyYW1zLm9sZE5vdGVQYXRoT3JGaWxlLFxuICAgICAgc2hvdWxkU2tpcER1cGxpY2F0ZUNoZWNrLFxuICAgICAgc2hvdWxkU2tpcE1pc3NpbmdBdHRhY2htZW50Rm9sZGVyQ3JlYXRpb246IHRydWVcbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiBhd2FpdCBnZXRBdmFpbGFibGVQYXRoRm9yQXR0YWNobWVudHMoe1xuICAgIGFwcCxcbiAgICBhdHRhY2htZW50RmlsZUJhc2VOYW1lLFxuICAgIGF0dGFjaG1lbnRGaWxlRXh0ZW5zaW9uOiBhdHRhY2htZW50RmlsZUV4dGVuc2lvbi5zbGljZSgxKSxcbiAgICBub3RlUGF0aE9yRmlsZSxcbiAgICBzaG91bGRTa2lwRHVwbGljYXRlQ2hlY2ssXG4gICAgc2hvdWxkU2tpcE1pc3NpbmdBdHRhY2htZW50Rm9sZGVyQ3JlYXRpb246IHRydWVcbiAgfSk7XG59XG5cbi8qKlxuICogUmV0cmlldmVzIHRoZSBhdHRhY2htZW50IGZvbGRlciBwYXRoIGZvciBhIGdpdmVuIG5vdGUuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBPYnNpZGlhbiBhcHBsaWNhdGlvbiBpbnN0YW5jZS5cbiAqIEBwYXJhbSBub3RlUGF0aE9yRmlsZSAtIFRoZSBwYXRoIG9mIHRoZSBub3RlLlxuICogQHBhcmFtIGNvbnRleHQgLSBUaGUgY29udGV4dC5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgdG8gdGhlIGF0dGFjaG1lbnQgZm9sZGVyIHBhdGguXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRBdHRhY2htZW50Rm9sZGVyUGF0aChhcHA6IEFwcCwgbm90ZVBhdGhPckZpbGU6IFBhdGhPckZpbGUsIGNvbnRleHQgPSBBdHRhY2htZW50UGF0aENvbnRleHQuVW5rbm93bik6IFByb21pc2U8c3RyaW5nPiB7XG4gIHJldHVybiBwYXJlbnRGb2xkZXJQYXRoKFxuICAgIGF3YWl0IGdldEF0dGFjaG1lbnRGaWxlUGF0aCh7XG4gICAgICBhcHAsXG4gICAgICBjb250ZXh0LFxuICAgICAgbm90ZVBhdGhPckZpbGUsXG4gICAgICBvbGRBdHRhY2htZW50UGF0aE9yRmlsZTogRFVNTVlfUEFUSCxcbiAgICAgIHNob3VsZFNraXBEdXBsaWNhdGVDaGVjazogdHJ1ZVxuICAgIH0pXG4gICk7XG59XG5cbi8qKlxuICogUmV0cmlldmVzIHRoZSBhdmFpbGFibGUgcGF0aCBmb3IgYXR0YWNobWVudHMuXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFBhcmFtZXRlcnMgZm9yIHRoZSBnZXQgYXZhaWxhYmxlIHBhdGggZm9yIGF0dGFjaG1lbnRzIGZ1bmN0aW9uLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB0byB0aGUgYXZhaWxhYmxlIHBhdGggZm9yIGF0dGFjaG1lbnRzLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0QXZhaWxhYmxlUGF0aEZvckF0dGFjaG1lbnRzKHBhcmFtczogR2V0QXZhaWxhYmxlUGF0aEZvckF0dGFjaG1lbnRzUGFyYW1zKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgY29uc3Qge1xuICAgIGFwcCxcbiAgICBhdHRhY2htZW50RmlsZUV4dGVuc2lvbixcbiAgICBub3RlUGF0aE9yRmlsZSxcbiAgICBzaG91bGRTa2lwRHVwbGljYXRlQ2hlY2ssXG4gICAgc2hvdWxkU2tpcE1pc3NpbmdBdHRhY2htZW50Rm9sZGVyQ3JlYXRpb25cbiAgfSA9IHBhcmFtcztcbiAgbGV0IGF0dGFjaG1lbnRGb2xkZXJQYXRoID0gYXBwLnZhdWx0LmdldENvbmZpZygnYXR0YWNobWVudEZvbGRlclBhdGgnKSBhcyBzdHJpbmc7XG4gIGNvbnN0IGlzQ3VycmVudEZvbGRlciA9IGF0dGFjaG1lbnRGb2xkZXJQYXRoID09PSAnLicgfHwgYXR0YWNobWVudEZvbGRlclBhdGggPT09ICcuLyc7XG4gIGNvbnN0IHJlbGF0aXZlUGF0aCA9IGF0dGFjaG1lbnRGb2xkZXJQYXRoLnN0YXJ0c1dpdGgoJy4vJykgPyB0cmltU3RhcnQoYXR0YWNobWVudEZvbGRlclBhdGgsICcuLycpIDogbnVsbDtcblxuICBjb25zdCBub3RlRmlsZU9yTnVsbCA9IGdldEZpbGVPck51bGwoYXBwLCBub3RlUGF0aE9yRmlsZSk7XG5cbiAgaWYgKGlzQ3VycmVudEZvbGRlcikge1xuICAgIGF0dGFjaG1lbnRGb2xkZXJQYXRoID0gbm90ZUZpbGVPck51bGwgPyBub3RlRmlsZU9yTnVsbC5wYXJlbnQ/LnBhdGggPz8gJycgOiAnJztcbiAgfSBlbHNlIGlmIChyZWxhdGl2ZVBhdGgpIHtcbiAgICBhdHRhY2htZW50Rm9sZGVyUGF0aCA9IChub3RlRmlsZU9yTnVsbCA/IG5vdGVGaWxlT3JOdWxsLnBhcmVudD8uZ2V0UGFyZW50UHJlZml4KCkgPz8gJycgOiAnJykgKyByZWxhdGl2ZVBhdGg7XG4gIH1cblxuICBhdHRhY2htZW50Rm9sZGVyUGF0aCA9IG5vcm1hbGl6ZShub3JtYWxpemVTbGFzaGVzKGF0dGFjaG1lbnRGb2xkZXJQYXRoKSk7XG4gIGNvbnN0IGF0dGFjaG1lbnRGaWxlQmFzZU5hbWUgPSBub3JtYWxpemUobm9ybWFsaXplU2xhc2hlcyhwYXJhbXMuYXR0YWNobWVudEZpbGVCYXNlTmFtZSkpO1xuXG4gIGxldCBmb2xkZXIgPSBnZXRGb2xkZXJPck51bGwoYXBwLCBhdHRhY2htZW50Rm9sZGVyUGF0aCwgdHJ1ZSk7XG5cbiAgaWYgKCFmb2xkZXIgJiYgcmVsYXRpdmVQYXRoKSB7XG4gICAgZm9sZGVyID0gc2hvdWxkU2tpcE1pc3NpbmdBdHRhY2htZW50Rm9sZGVyQ3JlYXRpb25cbiAgICAgID8gZ2V0Rm9sZGVyKGFwcCwgYXR0YWNobWVudEZvbGRlclBhdGgsIHRydWUpXG4gICAgICA6IGF3YWl0IGFwcC52YXVsdC5jcmVhdGVGb2xkZXIoYXR0YWNobWVudEZvbGRlclBhdGgpO1xuICB9XG5cbiAgY29uc3QgcHJlZml4ID0gZm9sZGVyPy5nZXRQYXJlbnRQcmVmaXgoKSA/PyAnJztcbiAgcmV0dXJuIHNob3VsZFNraXBEdXBsaWNhdGVDaGVja1xuICAgID8gbWFrZUZpbGVOYW1lKHByZWZpeCArIGF0dGFjaG1lbnRGaWxlQmFzZU5hbWUsIGF0dGFjaG1lbnRGaWxlRXh0ZW5zaW9uKVxuICAgIDogYXBwLnZhdWx0LmdldEF2YWlsYWJsZVBhdGgocHJlZml4ICsgYXR0YWNobWVudEZpbGVCYXNlTmFtZSwgYXR0YWNobWVudEZpbGVFeHRlbnNpb24pO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiBhIG5vdGUgaGFzIGl0cyBvd24gYXR0YWNobWVudCBmb2xkZXIuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBPYnNpZGlhbiBhcHBsaWNhdGlvbiBpbnN0YW5jZS5cbiAqIEBwYXJhbSBwYXRoIC0gVGhlIHBhdGggb2YgdGhlIG5vdGUuXG4gKiBAcGFyYW0gY29udGV4dCAtIFRoZSBjb250ZXh0LlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB0byBhIGJvb2xlYW4gaW5kaWNhdGluZyB3aGV0aGVyIHRoZSBub3RlIGhhcyBpdHMgb3duIGF0dGFjaG1lbnQgZm9sZGVyLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gaGFzT3duQXR0YWNobWVudEZvbGRlcihhcHA6IEFwcCwgcGF0aDogc3RyaW5nLCBjb250ZXh0ID0gQXR0YWNobWVudFBhdGhDb250ZXh0LlVua25vd24pOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgY29uc3QgYXR0YWNobWVudEZvbGRlclBhdGggPSBhd2FpdCBnZXRBdHRhY2htZW50Rm9sZGVyUGF0aChhcHAsIHBhdGgsIGNvbnRleHQpO1xuICBjb25zdCBkdW1teUF0dGFjaG1lbnRGb2xkZXJQYXRoID0gYXdhaXQgZ2V0QXR0YWNobWVudEZvbGRlclBhdGgoYXBwLCBqb2luKGRpcm5hbWUocGF0aCksIGAke0RVTU1ZX1BBVEh9LiR7TUFSS0RPV05fRklMRV9FWFRFTlNJT059YCksIGNvbnRleHQpO1xuICByZXR1cm4gYXR0YWNobWVudEZvbGRlclBhdGggIT09IGR1bW15QXR0YWNobWVudEZvbGRlclBhdGg7XG59XG5cbi8qKlxuICogTm9ybWFsaXplcyBhIHBhdGggYnkgY29tYmluaW5nIG11bHRpcGxlIHNsYXNoZXMgaW50byBhIHNpbmdsZSBzbGFzaCBhbmQgcmVtb3ZpbmcgbGVhZGluZyBhbmQgdHJhaWxpbmcgc2xhc2hlcy5cbiAqXG4gKiBAcGFyYW0gcGF0aCAtIFBhdGggdG8gbm9ybWFsaXplLlxuICogQHJldHVybnMgVGhlIG5vcm1hbGl6ZWQgcGF0aC5cbiAqL1xuZnVuY3Rpb24gbm9ybWFsaXplU2xhc2hlcyhwYXRoOiBzdHJpbmcpOiBzdHJpbmcge1xuICBwYXRoID0gcmVwbGFjZUFsbChwYXRoLCAvKD86W1xcXFwvXSkrL2csICcvJyk7XG4gIHBhdGggPSByZXBsYWNlQWxsKHBhdGgsIC9eXFwvK3xcXC8rJC9nLCAnJyk7XG4gIHJldHVybiBwYXRoIHx8ICcvJztcbn1cblxuLyogdjggaWdub3JlIHN0b3AgKi9cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztB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QWEsb0JBQW9CO0FBQUEsRUFDdkQ7QUFFQSxRQUFNLFNBQVMsUUFBUSxnQkFBZ0IsS0FBSztBQUM1QyxTQUFPLDJCQUNILGFBQWEsU0FBUyx3QkFBd0IsdUJBQXVCLElBQ3JFLElBQUksTUFBTSxpQkFBaUIsU0FBUyx3QkFBd0IsdUJBQXVCO0FBQ3pGO0FBVUEsZUFBc0IsdUJBQXVCLEtBQVUsTUFBYyxVQUFVLHlCQUFpRDtBQUM5SCxRQUFNLHVCQUF1QixNQUFNLHdCQUF3QixLQUFLLE1BQU0sT0FBTztBQUM3RSxRQUFNLDRCQUE0QixNQUFNLHdCQUF3QixLQUFLLEtBQUssUUFBUSxJQUFJLEdBQUcsR0FBRyxVQUFVLElBQUksdUJBQXVCLEVBQUUsR0FBRyxPQUFPO0FBQzdJLFNBQU8seUJBQXlCO0FBQ2xDO0FBUUEsU0FBUyxpQkFBaUIsTUFBc0I7QUFDOUMsU0FBTyxXQUFXLE1BQU0sZUFBZSxHQUFHO0FBQzFDLFNBQU8sV0FBVyxNQUFNLGNBQWMsRUFBRTtBQUN4QyxTQUFPLFFBQVE7QUFDakI7IiwKICAibmFtZXMiOiBbIkF0dGFjaG1lbnRQYXRoQ29udGV4dCJdCn0K
141
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL2F0dGFjaG1lbnQtcGF0aC50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIFByb3ZpZGVzIHV0aWxpdHkgZnVuY3Rpb25zIGZvciB3b3JraW5nIHdpdGggYXR0YWNobWVudCBwYXRocy5cbiAqL1xuXG4vKiB2OCBpZ25vcmUgc3RhcnQgLS0gRGVlcGx5IGNvdXBsZWQgdG8gT2JzaWRpYW4gcnVudGltZTsgcmVxdWlyZXMgcnVubmluZyB2YXVsdCBmb3IgbWVhbmluZ2Z1bCB0ZXN0aW5nLiAqL1xuXG5pbXBvcnQgdHlwZSB7XG4gIEFwcCxcbiAgRmlsZVN0YXRzLFxuICBWYXVsdFxufSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB7IHBhcmVudEZvbGRlclBhdGggfSBmcm9tICdvYnNpZGlhbi10eXBpbmdzL2ltcGxlbWVudGF0aW9ucyc7XG5cbmltcG9ydCB0eXBlIHsgUGF0aE9yRmlsZSB9IGZyb20gJy4vZmlsZS1zeXN0ZW0udHMnO1xuXG5pbXBvcnQge1xuICBiYXNlbmFtZSxcbiAgZGlybmFtZSxcbiAgZXh0bmFtZSxcbiAgam9pbixcbiAgbWFrZUZpbGVOYW1lXG59IGZyb20gJy4uL3BhdGgudHMnO1xuaW1wb3J0IHtcbiAgbm9ybWFsaXplLFxuICByZXBsYWNlQWxsLFxuICB0cmltU3RhcnRcbn0gZnJvbSAnLi4vc3RyaW5nLnRzJztcbmltcG9ydCB7XG4gIGdldEZpbGVPck51bGwsXG4gIGdldEZvbGRlcixcbiAgZ2V0Rm9sZGVyT3JOdWxsLFxuICBnZXRQYXRoLFxuICBNQVJLRE9XTl9GSUxFX0VYVEVOU0lPTlxufSBmcm9tICcuL2ZpbGUtc3lzdGVtLnRzJztcblxuLyoqXG4gKiBBIGNvbnRleHQgZm9yIGFuIGF0dGFjaG1lbnQgcGF0aC5cbiAqL1xuZXhwb3J0IGVudW0gQXR0YWNobWVudFBhdGhDb250ZXh0IHtcbiAgLyoqXG4gICAqIEEgY29udGV4dCBmb3IgYSBkZWxldGUgbm90ZS5cbiAgICovXG4gIERlbGV0ZU5vdGUgPSAnRGVsZXRlTm90ZScsXG5cbiAgLyoqXG4gICAqIEEgY29udGV4dCBmb3IgYSByZW5hbWUgbm90ZS5cbiAgICovXG4gIFJlbmFtZU5vdGUgPSAnUmVuYW1lTm90ZScsXG5cbiAgLyoqXG4gICAqIEFuIHVua25vd24gY29udGV4dC5cbiAgICovXG4gIFVua25vd24gPSAnVW5rbm93bidcbn1cblxuLyoqXG4gKiBPcHRpb25zIGZvciB0aGUgZ2V0IGF2YWlsYWJsZSBwYXRoIGZvciBhdHRhY2htZW50cyBleHRlbmRlZCBmdW5jdGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBHZXRBdmFpbGFibGVQYXRoRm9yQXR0YWNobWVudHNFeHRlbmRlZEZuUGFyYW1zIHtcbiAgLyoqXG4gICAqIEEgYmFzZSBuYW1lIG9mIHRoZSBhdHRhY2htZW50LlxuICAgKi9cbiAgcmVhZG9ubHkgYXR0YWNobWVudEZpbGVCYXNlTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBIGNvbnRlbnQgb2YgdGhlIGF0dGFjaG1lbnQgZmlsZS5cbiAgICovXG4gIHJlYWRvbmx5IGF0dGFjaG1lbnRGaWxlQ29udGVudD86IEFycmF5QnVmZmVyIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBBbiBleHRlbnNpb24gb2YgdGhlIGF0dGFjaG1lbnQuXG4gICAqL1xuICByZWFkb25seSBhdHRhY2htZW50RmlsZUV4dGVuc2lvbjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBIHN0YXRzIG9mIHRoZSBhdHRhY2htZW50IGZpbGUuXG4gICAqL1xuICByZWFkb25seSBhdHRhY2htZW50RmlsZVN0YXQ/OiBGaWxlU3RhdHMgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIEEgY29udGV4dC5cbiAgICovXG4gIHJlYWRvbmx5IGNvbnRleHQ6IEF0dGFjaG1lbnRQYXRoQ29udGV4dDtcblxuICAvKipcbiAgICogQSBwYXRoIG9yIGZpbGUgb2YgdGhlIG5vdGUuXG4gICAqL1xuICByZWFkb25seSBub3RlUGF0aE9yRmlsZTogbnVsbCB8IFBhdGhPckZpbGU7XG5cbiAgLyoqXG4gICAqIEEgcGF0aCBvciBmaWxlIG9mIHRoZSBvbGQgYXR0YWNobWVudC5cbiAgICovXG4gIHJlYWRvbmx5IG9sZEF0dGFjaG1lbnRQYXRoT3JGaWxlOiBQYXRoT3JGaWxlO1xuXG4gIC8qKlxuICAgKiBBIHBhdGggb3IgZmlsZSBvZiB0aGUgb2xkIG5vdGUuXG4gICAqL1xuICByZWFkb25seSBvbGROb3RlUGF0aE9yRmlsZT86IFBhdGhPckZpbGUgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFNob3VsZCB0aGUgZHVwbGljYXRlIGNoZWNrIGJlIHNraXBwZWQuXG4gICAqL1xuICByZWFkb25seSBzaG91bGRTa2lwRHVwbGljYXRlQ2hlY2s/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBTaG91bGQgdGhlIGdlbmVyYXRlZCBhdHRhY2htZW50IGZpbGUgbmFtZSBiZSBza2lwcGVkLlxuICAgKi9cbiAgcmVhZG9ubHkgc2hvdWxkU2tpcEdlbmVyYXRlZEF0dGFjaG1lbnRGaWxlTmFtZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFNob3VsZCBtaXNzaW5nIGF0dGFjaG1lbnQgZm9sZGVyIGNyZWF0aW9uIGJlIHNraXBwZWQuXG4gICAqL1xuICByZWFkb25seSBzaG91bGRTa2lwTWlzc2luZ0F0dGFjaG1lbnRGb2xkZXJDcmVhdGlvbjogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbn1cblxuLyoqXG4gKiB7QGxpbmsgVmF1bHQuZ2V0QXZhaWxhYmxlUGF0aEZvckF0dGFjaG1lbnRzfSBleHRlbmRlZCB3cmFwcGVyLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEdldEF2YWlsYWJsZVBhdGhGb3JBdHRhY2htZW50c0ZuRXh0ZW5kZWQgZXh0ZW5kcyBHZXRBdmFpbGFibGVQYXRoRm9yQXR0YWNobWVudHNGbiB7XG4gIC8qKlxuICAgKiBHZXQgYXZhaWxhYmxlIHBhdGggZm9yIGF0dGFjaG1lbnRzIHdpdGggYWRkaXRpb25hbCBwYXJhbXMuXG4gICAqXG4gICAqIEBwYXJhbSBwYXJhbXMgLSBQYXJhbWV0ZXJzIGZvciB0aGUgZ2V0IGF2YWlsYWJsZSBwYXRoIGZvciBhdHRhY2htZW50cy5cbiAgICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB0byB0aGUgYXZhaWxhYmxlIHBhdGggZm9yIGF0dGFjaG1lbnRzLlxuICAgKi9cbiAgZXh0ZW5kZWQocGFyYW1zOiBHZXRBdmFpbGFibGVQYXRoRm9yQXR0YWNobWVudHNFeHRlbmRlZEZuUGFyYW1zKTogUHJvbWlzZTxzdHJpbmc+O1xufVxuXG50eXBlIEdldEF2YWlsYWJsZVBhdGhGb3JBdHRhY2htZW50c0ZuID0gVmF1bHRbJ2dldEF2YWlsYWJsZVBhdGhGb3JBdHRhY2htZW50cyddO1xuXG4vKipcbiAqIER1bW15IHBhdGguXG4gKi9cbmV4cG9ydCBjb25zdCBEVU1NWV9QQVRIID0gJ19fRFVNTVlfXyc7XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgdGhlIGdldEF0dGFjaG1lbnRGaWxlUGF0aCBmdW5jdGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBHZXRBdHRhY2htZW50RmlsZVBhdGhQYXJhbXMge1xuICAvKipcbiAgICogQW4gT2JzaWRpYW4gYXBwbGljYXRpb24gaW5zdGFuY2UuXG4gICAqL1xuICByZWFkb25seSBhcHA6IEFwcDtcblxuICAvKipcbiAgICogQSBjb250ZXh0LlxuICAgKi9cbiAgcmVhZG9ubHkgY29udGV4dDogQXR0YWNobWVudFBhdGhDb250ZXh0O1xuXG4gIC8qKlxuICAgKiBBIHBhdGggb2YgdGhlIG5vdGUuXG4gICAqL1xuICByZWFkb25seSBub3RlUGF0aE9yRmlsZTogUGF0aE9yRmlsZTtcblxuICAvKipcbiAgICogQSBwYXRoIG9mIHRoZSBhdHRhY2htZW50LlxuICAgKi9cbiAgcmVhZG9ubHkgb2xkQXR0YWNobWVudFBhdGhPckZpbGU6IFBhdGhPckZpbGU7XG5cbiAgLyoqXG4gICAqIEEgcGF0aCBvZiB0aGUgb2xkIG5vdGUuXG4gICAqL1xuICByZWFkb25seSBvbGROb3RlUGF0aE9yRmlsZT86IFBhdGhPckZpbGUgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFNob3VsZCB0aGUgZHVwbGljYXRlIGNoZWNrIGJlIHNraXBwZWQuXG4gICAqL1xuICByZWFkb25seSBzaG91bGRTa2lwRHVwbGljYXRlQ2hlY2s6IGJvb2xlYW47XG59XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgdGhlIGdldEF2YWlsYWJsZVBhdGhGb3JBdHRhY2htZW50cyBmdW5jdGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBHZXRBdmFpbGFibGVQYXRoRm9yQXR0YWNobWVudHNQYXJhbXMge1xuICAvKipcbiAgICogQW4gT2JzaWRpYW4gYXBwbGljYXRpb24gaW5zdGFuY2UuXG4gICAqL1xuICByZWFkb25seSBhcHA6IEFwcDtcbiAgLyoqXG4gICAqIEEgYmFzZSBuYW1lIG9mIHRoZSBhdHRhY2htZW50LlxuICAgKi9cbiAgcmVhZG9ubHkgYXR0YWNobWVudEZpbGVCYXNlTmFtZTogc3RyaW5nO1xuICAvKipcbiAgICogQW4gZXh0ZW5zaW9uIG9mIHRoZSBhdHRhY2htZW50LlxuICAgKi9cbiAgcmVhZG9ubHkgYXR0YWNobWVudEZpbGVFeHRlbnNpb246IHN0cmluZztcbiAgLyoqXG4gICAqIEEgZmlsZSB0byBhdHRhY2ggdG8uXG4gICAqL1xuICByZWFkb25seSBub3RlUGF0aE9yRmlsZTogbnVsbCB8IFBhdGhPckZpbGU7XG4gIC8qKlxuICAgKiBTaG91bGQgdGhlIGR1cGxpY2F0ZSBjaGVjayBiZSBza2lwcGVkLlxuICAgKi9cbiAgcmVhZG9ubHkgc2hvdWxkU2tpcER1cGxpY2F0ZUNoZWNrPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFNob3VsZCBtaXNzaW5nIGF0dGFjaG1lbnQgZm9sZGVyIGNyZWF0aW9uIGJlIHNraXBwZWQuXG4gICAqL1xuICByZWFkb25seSBzaG91bGRTa2lwTWlzc2luZ0F0dGFjaG1lbnRGb2xkZXJDcmVhdGlvbj86IGJvb2xlYW47XG59XG5cbi8qKlxuICogUmV0cmlldmVzIHRoZSBmaWxlIHBhdGggZm9yIGFuIGF0dGFjaG1lbnQgd2l0aGluIGEgbm90ZS5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gUGFyYW1ldGVycyBmb3IgdGhlIGdldCBhdHRhY2htZW50IGZpbGUgcGF0aCBmdW5jdGlvbi5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgdG8gdGhlIGZpbGUgcGF0aCBvZiB0aGUgYXR0YWNobWVudC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldEF0dGFjaG1lbnRGaWxlUGF0aChwYXJhbXM6IEdldEF0dGFjaG1lbnRGaWxlUGF0aFBhcmFtcyk6IFByb21pc2U8c3RyaW5nPiB7XG4gIGNvbnN0IHtcbiAgICBhcHAsXG4gICAgbm90ZVBhdGhPckZpbGUsXG4gICAgb2xkQXR0YWNobWVudFBhdGhPckZpbGUsXG4gICAgc2hvdWxkU2tpcER1cGxpY2F0ZUNoZWNrXG4gIH0gPSBwYXJhbXM7XG4gIGNvbnN0IGF0dGFjaG1lbnRQYXRoID0gZ2V0UGF0aChhcHAsIG9sZEF0dGFjaG1lbnRQYXRoT3JGaWxlKTtcbiAgY29uc3QgYXR0YWNobWVudEZpbGVFeHRlbnNpb24gPSBleHRuYW1lKGF0dGFjaG1lbnRQYXRoKTtcbiAgY29uc3QgYXR0YWNobWVudEZpbGVCYXNlTmFtZSA9IGJhc2VuYW1lKGF0dGFjaG1lbnRQYXRoLCBhdHRhY2htZW50RmlsZUV4dGVuc2lvbik7XG4gIGNvbnN0IGF0dGFjaG1lbnRGaWxlID0gZ2V0RmlsZU9yTnVsbChhcHAsIGF0dGFjaG1lbnRQYXRoKTtcblxuICBjb25zdCBleHRlbmRlZEZuID0gKGFwcC52YXVsdC5nZXRBdmFpbGFibGVQYXRoRm9yQXR0YWNobWVudHMgYXMgUGFydGlhbDxHZXRBdmFpbGFibGVQYXRoRm9yQXR0YWNobWVudHNGbkV4dGVuZGVkPikuZXh0ZW5kZWQ7XG4gIGlmIChleHRlbmRlZEZuKSB7XG4gICAgcmV0dXJuIGV4dGVuZGVkRm4oe1xuICAgICAgYXR0YWNobWVudEZpbGVCYXNlTmFtZSxcbiAgICAgIGF0dGFjaG1lbnRGaWxlQ29udGVudDogYXR0YWNobWVudEZpbGUgPyBhd2FpdCBhcHAudmF1bHQucmVhZEJpbmFyeShhdHRhY2htZW50RmlsZSkgOiB1bmRlZmluZWQsXG4gICAgICBhdHRhY2htZW50RmlsZUV4dGVuc2lvbjogYXR0YWNobWVudEZpbGVFeHRlbnNpb24uc2xpY2UoMSksXG4gICAgICBhdHRhY2htZW50RmlsZVN0YXQ6IGF0dGFjaG1lbnRGaWxlPy5zdGF0LFxuICAgICAgY29udGV4dDogcGFyYW1zLmNvbnRleHQsXG4gICAgICBub3RlUGF0aE9yRmlsZSxcbiAgICAgIG9sZEF0dGFjaG1lbnRQYXRoT3JGaWxlOiBwYXJhbXMub2xkQXR0YWNobWVudFBhdGhPckZpbGUsXG4gICAgICBvbGROb3RlUGF0aE9yRmlsZTogcGFyYW1zLm9sZE5vdGVQYXRoT3JGaWxlLFxuICAgICAgc2hvdWxkU2tpcER1cGxpY2F0ZUNoZWNrLFxuICAgICAgc2hvdWxkU2tpcE1pc3NpbmdBdHRhY2htZW50Rm9sZGVyQ3JlYXRpb246IHRydWVcbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiBhd2FpdCBnZXRBdmFpbGFibGVQYXRoRm9yQXR0YWNobWVudHMoe1xuICAgIGFwcCxcbiAgICBhdHRhY2htZW50RmlsZUJhc2VOYW1lLFxuICAgIGF0dGFjaG1lbnRGaWxlRXh0ZW5zaW9uOiBhdHRhY2htZW50RmlsZUV4dGVuc2lvbi5zbGljZSgxKSxcbiAgICBub3RlUGF0aE9yRmlsZSxcbiAgICBzaG91bGRTa2lwRHVwbGljYXRlQ2hlY2ssXG4gICAgc2hvdWxkU2tpcE1pc3NpbmdBdHRhY2htZW50Rm9sZGVyQ3JlYXRpb246IHRydWVcbiAgfSk7XG59XG5cbi8qKlxuICogUmV0cmlldmVzIHRoZSBhdHRhY2htZW50IGZvbGRlciBwYXRoIGZvciBhIGdpdmVuIG5vdGUuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBPYnNpZGlhbiBhcHBsaWNhdGlvbiBpbnN0YW5jZS5cbiAqIEBwYXJhbSBub3RlUGF0aE9yRmlsZSAtIFRoZSBwYXRoIG9mIHRoZSBub3RlLlxuICogQHBhcmFtIGNvbnRleHQgLSBUaGUgY29udGV4dC5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgdG8gdGhlIGF0dGFjaG1lbnQgZm9sZGVyIHBhdGguXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRBdHRhY2htZW50Rm9sZGVyUGF0aChhcHA6IEFwcCwgbm90ZVBhdGhPckZpbGU6IFBhdGhPckZpbGUsIGNvbnRleHQgPSBBdHRhY2htZW50UGF0aENvbnRleHQuVW5rbm93bik6IFByb21pc2U8c3RyaW5nPiB7XG4gIHJldHVybiBwYXJlbnRGb2xkZXJQYXRoKFxuICAgIGF3YWl0IGdldEF0dGFjaG1lbnRGaWxlUGF0aCh7XG4gICAgICBhcHAsXG4gICAgICBjb250ZXh0LFxuICAgICAgbm90ZVBhdGhPckZpbGUsXG4gICAgICBvbGRBdHRhY2htZW50UGF0aE9yRmlsZTogRFVNTVlfUEFUSCxcbiAgICAgIHNob3VsZFNraXBEdXBsaWNhdGVDaGVjazogdHJ1ZVxuICAgIH0pXG4gICk7XG59XG5cbi8qKlxuICogUmV0cmlldmVzIHRoZSBhdmFpbGFibGUgcGF0aCBmb3IgYXR0YWNobWVudHMuXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFBhcmFtZXRlcnMgZm9yIHRoZSBnZXQgYXZhaWxhYmxlIHBhdGggZm9yIGF0dGFjaG1lbnRzIGZ1bmN0aW9uLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB0byB0aGUgYXZhaWxhYmxlIHBhdGggZm9yIGF0dGFjaG1lbnRzLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0QXZhaWxhYmxlUGF0aEZvckF0dGFjaG1lbnRzKHBhcmFtczogR2V0QXZhaWxhYmxlUGF0aEZvckF0dGFjaG1lbnRzUGFyYW1zKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgY29uc3Qge1xuICAgIGFwcCxcbiAgICBhdHRhY2htZW50RmlsZUV4dGVuc2lvbixcbiAgICBub3RlUGF0aE9yRmlsZSxcbiAgICBzaG91bGRTa2lwRHVwbGljYXRlQ2hlY2ssXG4gICAgc2hvdWxkU2tpcE1pc3NpbmdBdHRhY2htZW50Rm9sZGVyQ3JlYXRpb25cbiAgfSA9IHBhcmFtcztcbiAgbGV0IGF0dGFjaG1lbnRGb2xkZXJQYXRoID0gYXBwLnZhdWx0LmdldENvbmZpZygnYXR0YWNobWVudEZvbGRlclBhdGgnKSBhcyBzdHJpbmc7XG4gIGNvbnN0IGlzQ3VycmVudEZvbGRlciA9IGF0dGFjaG1lbnRGb2xkZXJQYXRoID09PSAnLicgfHwgYXR0YWNobWVudEZvbGRlclBhdGggPT09ICcuLyc7XG4gIGNvbnN0IHJlbGF0aXZlUGF0aCA9IGF0dGFjaG1lbnRGb2xkZXJQYXRoLnN0YXJ0c1dpdGgoJy4vJykgPyB0cmltU3RhcnQoYXR0YWNobWVudEZvbGRlclBhdGgsICcuLycpIDogbnVsbDtcblxuICBjb25zdCBub3RlRmlsZU9yTnVsbCA9IGdldEZpbGVPck51bGwoYXBwLCBub3RlUGF0aE9yRmlsZSk7XG5cbiAgaWYgKGlzQ3VycmVudEZvbGRlcikge1xuICAgIGF0dGFjaG1lbnRGb2xkZXJQYXRoID0gbm90ZUZpbGVPck51bGwgPyBub3RlRmlsZU9yTnVsbC5wYXJlbnQ/LnBhdGggPz8gJycgOiAnJztcbiAgfSBlbHNlIGlmIChyZWxhdGl2ZVBhdGgpIHtcbiAgICBhdHRhY2htZW50Rm9sZGVyUGF0aCA9IChub3RlRmlsZU9yTnVsbCA/IG5vdGVGaWxlT3JOdWxsLnBhcmVudD8uZ2V0UGFyZW50UHJlZml4KCkgPz8gJycgOiAnJykgKyByZWxhdGl2ZVBhdGg7XG4gIH1cblxuICBhdHRhY2htZW50Rm9sZGVyUGF0aCA9IG5vcm1hbGl6ZShub3JtYWxpemVTbGFzaGVzKGF0dGFjaG1lbnRGb2xkZXJQYXRoKSk7XG4gIGNvbnN0IGF0dGFjaG1lbnRGaWxlQmFzZU5hbWUgPSBub3JtYWxpemUobm9ybWFsaXplU2xhc2hlcyhwYXJhbXMuYXR0YWNobWVudEZpbGVCYXNlTmFtZSkpO1xuXG4gIGxldCBmb2xkZXIgPSBnZXRGb2xkZXJPck51bGwoYXBwLCBhdHRhY2htZW50Rm9sZGVyUGF0aCwgdHJ1ZSk7XG5cbiAgaWYgKCFmb2xkZXIgJiYgcmVsYXRpdmVQYXRoKSB7XG4gICAgZm9sZGVyID0gc2hvdWxkU2tpcE1pc3NpbmdBdHRhY2htZW50Rm9sZGVyQ3JlYXRpb25cbiAgICAgID8gZ2V0Rm9sZGVyKGFwcCwgYXR0YWNobWVudEZvbGRlclBhdGgsIHRydWUpXG4gICAgICA6IGF3YWl0IGFwcC52YXVsdC5jcmVhdGVGb2xkZXIoYXR0YWNobWVudEZvbGRlclBhdGgpO1xuICB9XG5cbiAgY29uc3QgcHJlZml4ID0gZm9sZGVyPy5nZXRQYXJlbnRQcmVmaXgoKSA/PyAnJztcbiAgcmV0dXJuIHNob3VsZFNraXBEdXBsaWNhdGVDaGVja1xuICAgID8gbWFrZUZpbGVOYW1lKHByZWZpeCArIGF0dGFjaG1lbnRGaWxlQmFzZU5hbWUsIGF0dGFjaG1lbnRGaWxlRXh0ZW5zaW9uKVxuICAgIDogYXBwLnZhdWx0LmdldEF2YWlsYWJsZVBhdGgocHJlZml4ICsgYXR0YWNobWVudEZpbGVCYXNlTmFtZSwgYXR0YWNobWVudEZpbGVFeHRlbnNpb24pO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiBhIG5vdGUgaGFzIGl0cyBvd24gYXR0YWNobWVudCBmb2xkZXIuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBPYnNpZGlhbiBhcHBsaWNhdGlvbiBpbnN0YW5jZS5cbiAqIEBwYXJhbSBwYXRoIC0gVGhlIHBhdGggb2YgdGhlIG5vdGUuXG4gKiBAcGFyYW0gY29udGV4dCAtIFRoZSBjb250ZXh0LlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB0byBhIGJvb2xlYW4gaW5kaWNhdGluZyB3aGV0aGVyIHRoZSBub3RlIGhhcyBpdHMgb3duIGF0dGFjaG1lbnQgZm9sZGVyLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gaGFzT3duQXR0YWNobWVudEZvbGRlcihhcHA6IEFwcCwgcGF0aDogc3RyaW5nLCBjb250ZXh0ID0gQXR0YWNobWVudFBhdGhDb250ZXh0LlVua25vd24pOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgY29uc3QgYXR0YWNobWVudEZvbGRlclBhdGggPSBhd2FpdCBnZXRBdHRhY2htZW50Rm9sZGVyUGF0aChhcHAsIHBhdGgsIGNvbnRleHQpO1xuICBjb25zdCBkdW1teUF0dGFjaG1lbnRGb2xkZXJQYXRoID0gYXdhaXQgZ2V0QXR0YWNobWVudEZvbGRlclBhdGgoYXBwLCBqb2luKGRpcm5hbWUocGF0aCksIGAke0RVTU1ZX1BBVEh9LiR7TUFSS0RPV05fRklMRV9FWFRFTlNJT059YCksIGNvbnRleHQpO1xuICByZXR1cm4gYXR0YWNobWVudEZvbGRlclBhdGggIT09IGR1bW15QXR0YWNobWVudEZvbGRlclBhdGg7XG59XG5cbi8qKlxuICogTm9ybWFsaXplcyBhIHBhdGggYnkgY29tYmluaW5nIG11bHRpcGxlIHNsYXNoZXMgaW50byBhIHNpbmdsZSBzbGFzaCBhbmQgcmVtb3ZpbmcgbGVhZGluZyBhbmQgdHJhaWxpbmcgc2xhc2hlcy5cbiAqXG4gKiBAcGFyYW0gcGF0aCAtIFBhdGggdG8gbm9ybWFsaXplLlxuICogQHJldHVybnMgVGhlIG5vcm1hbGl6ZWQgcGF0aC5cbiAqL1xuZnVuY3Rpb24gbm9ybWFsaXplU2xhc2hlcyhwYXRoOiBzdHJpbmcpOiBzdHJpbmcge1xuICBwYXRoID0gcmVwbGFjZUFsbChwYXRoLCAvKD86W1xcXFwvXSkrL2csICcvJyk7XG4gIHBhdGggPSByZXBsYWNlQWxsKHBhdGgsIC9eXFwvK3xcXC8rJC9nLCAnJyk7XG4gIHJldHVybiBwYXRoIHx8ICcvJztcbn1cblxuLyogdjggaWdub3JlIHN0b3AgKi9cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBY0EsU0FBUyx3QkFBd0I7QUFJakM7QUFBQSxFQUNFO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLE9BQ0s7QUFDUDtBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLE9BQ0s7QUFDUDtBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsT0FDSztBQUtBLElBQUssd0JBQUwsa0JBQUtBLDJCQUFMO0FBSUwsRUFBQUEsdUJBQUEsZ0JBQWE7QUFLYixFQUFBQSx1QkFBQSxnQkFBYTtBQUtiLEVBQUFBLHVCQUFBLGFBQVU7QUFkQSxTQUFBQTtBQUFBLEdBQUE7QUErRkwsTUFBTSxhQUFhO0FBeUUxQixlQUFzQixzQkFBc0IsUUFBc0Q7QUFDaEcsUUFBTTtBQUFBLElBQ0o7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxFQUNGLElBQUk7QUFDSixRQUFNLGlCQUFpQixRQUFRLEtBQUssdUJBQXVCO0FBQzNELFFBQU0sMEJBQTBCLFFBQVEsY0FBYztBQUN0RCxRQUFNLHlCQUF5QixTQUFTLGdCQUFnQix1QkFBdUI7QUFDL0UsUUFBTSxpQkFBaUIsY0FBYyxLQUFLLGNBQWM7QUFFeEQsUUFBTSxhQUFjLElBQUksTUFBTSwrQkFBcUY7QUFDbkgsTUFBSSxZQUFZO0FBQ2QsV0FBTyxXQUFXO0FBQUEsTUFDaEI7QUFBQSxNQUNBLHVCQUF1QixpQkFBaUIsTUFBTSxJQUFJLE1BQU0sV0FBVyxjQUFjLElBQUk7QUFBQSxNQUNyRix5QkFBeUIsd0JBQXdCLE1BQU0sQ0FBQztBQUFBLE1BQ3hELG9CQUFvQixnQkFBZ0I7QUFBQSxNQUNwQyxTQUFTLE9BQU87QUFBQSxNQUNoQjtBQUFBLE1BQ0EseUJBQXlCLE9BQU87QUFBQSxNQUNoQyxtQkFBbUIsT0FBTztBQUFBLE1BQzFCO0FBQUEsTUFDQSwyQ0FBMkM7QUFBQSxJQUM3QyxDQUFDO0FBQUEsRUFDSDtBQUVBLFNBQU8sTUFBTSwrQkFBK0I7QUFBQSxJQUMxQztBQUFBLElBQ0E7QUFBQSxJQUNBLHlCQUF5Qix3QkFBd0IsTUFBTSxDQUFDO0FBQUEsSUFDeEQ7QUFBQSxJQUNBO0FBQUEsSUFDQSwyQ0FBMkM7QUFBQSxFQUM3QyxDQUFDO0FBQ0g7QUFVQSxlQUFzQix3QkFBd0IsS0FBVSxnQkFBNEIsVUFBVSx5QkFBZ0Q7QUFDNUksU0FBTztBQUFBLElBQ0wsTUFBTSxzQkFBc0I7QUFBQSxNQUMxQjtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQSx5QkFBeUI7QUFBQSxNQUN6QiwwQkFBMEI7QUFBQSxJQUM1QixDQUFDO0FBQUEsRUFDSDtBQUNGO0FBUUEsZUFBc0IsK0JBQStCLFFBQStEO0FBQ2xILFFBQU07QUFBQSxJQUNKO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLEVBQ0YsSUFBSTtBQUNKLE1BQUksdUJBQXVCLElBQUksTUFBTSxVQUFVLHNCQUFzQjtBQUNyRSxRQUFNLGtCQUFrQix5QkFBeUIsT0FBTyx5QkFBeUI7QUFDakYsUUFBTSxlQUFlLHFCQUFxQixXQUFXLElBQUksSUFBSSxVQUFVLHNCQUFzQixJQUFJLElBQUk7QUFFckcsUUFBTSxpQkFBaUIsY0FBYyxLQUFLLGNBQWM7QUFFeEQsTUFBSSxpQkFBaUI7QUFDbkIsMkJBQXVCLGlCQUFpQixlQUFlLFFBQVEsUUFBUSxLQUFLO0FBQUEsRUFDOUUsV0FBVyxjQUFjO0FBQ3ZCLDRCQUF3QixpQkFBaUIsZUFBZSxRQUFRLGdCQUFnQixLQUFLLEtBQUssTUFBTTtBQUFBLEVBQ2xHO0FBRUEseUJBQXVCLFVBQVUsaUJBQWlCLG9CQUFvQixDQUFDO0FBQ3ZFLFFBQU0seUJBQXlCLFVBQVUsaUJBQWlCLE9BQU8sc0JBQXNCLENBQUM7QUFFeEYsTUFBSSxTQUFTLGdCQUFnQixLQUFLLHNCQUFzQixJQUFJO0FBRTVELE1BQUksQ0FBQyxVQUFVLGNBQWM7QUFDM0IsYUFBUyw0Q0FDTCxVQUFVLEtBQUssc0JBQXNCLElBQUksSUFDekMsTUFBTSxJQUFJLE1BQU0sYUFBYSxvQkFBb0I7QUFBQSxFQUN2RDtBQUVBLFFBQU0sU0FBUyxRQUFRLGdCQUFnQixLQUFLO0FBQzVDLFNBQU8sMkJBQ0gsYUFBYSxTQUFTLHdCQUF3Qix1QkFBdUIsSUFDckUsSUFBSSxNQUFNLGlCQUFpQixTQUFTLHdCQUF3Qix1QkFBdUI7QUFDekY7QUFVQSxlQUFzQix1QkFBdUIsS0FBVSxNQUFjLFVBQVUseUJBQWlEO0FBQzlILFFBQU0sdUJBQXVCLE1BQU0sd0JBQXdCLEtBQUssTUFBTSxPQUFPO0FBQzdFLFFBQU0sNEJBQTRCLE1BQU0sd0JBQXdCLEtBQUssS0FBSyxRQUFRLElBQUksR0FBRyxHQUFHLFVBQVUsSUFBSSx1QkFBdUIsRUFBRSxHQUFHLE9BQU87QUFDN0ksU0FBTyx5QkFBeUI7QUFDbEM7QUFRQSxTQUFTLGlCQUFpQixNQUFzQjtBQUM5QyxTQUFPLFdBQVcsTUFBTSxlQUFlLEdBQUc7QUFDMUMsU0FBTyxXQUFXLE1BQU0sY0FBYyxFQUFFO0FBQ3hDLFNBQU8sUUFBUTtBQUNqQjsiLAogICJuYW1lcyI6IFsiQXR0YWNobWVudFBhdGhDb250ZXh0Il0KfQo=
@@ -4,6 +4,7 @@ if you want to view the source, please visit the github repository of this plugi
4
4
  */
5
5
 
6
6
  (function initEsm() {
7
+ // eslint-disable-next-line obsidianmd/prefer-active-doc -- Actively use globalThis.
7
8
  if (globalThis.process) {
8
9
  return;
9
10
  }
@@ -16,6 +17,7 @@ if you want to view the source, please visit the github repository of this plugi
16
17
  env: {},
17
18
  platform: 'android'
18
19
  };
20
+ // eslint-disable-next-line obsidianmd/prefer-active-doc -- Actively use globalThis.
19
21
  globalThis.process = browserProcess;
20
22
  })();
21
23
 
@@ -100,4 +102,4 @@ export {
100
102
  renderDelayedBacklinks,
101
103
  renderDelayedBacklinksForFolder
102
104
  };
103
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL2JhY2tsaW5rLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogUHJvdmlkZXMgdXRpbGl0eSBmdW5jdGlvbnMgZm9yIHdvcmtpbmcgd2l0aCBiYWNrbGlua3MuXG4gKi9cblxuLyogdjggaWdub3JlIHN0YXJ0IC0tIERlZXBseSBjb3VwbGVkIHRvIE9ic2lkaWFuIHJ1bnRpbWU7IHJlcXVpcmVzIHJ1bm5pbmcgdmF1bHQgZm9yIG1lYW5pbmdmdWwgdGVzdGluZy4gKi9cblxuaW1wb3J0IHR5cGUgeyBURmlsZSB9IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHR5cGUge1xuICBEYXRhdmlld0lubGluZUFwaSxcbiAgTGlua1xufSBmcm9tICcuL2RhdGF2aWV3LnRzJztcbmltcG9ydCB0eXBlIHtcbiAgUGF0aE9yQWJzdHJhY3RGaWxlLFxuICBQYXRoT3JGaWxlXG59IGZyb20gJy4vZmlsZS1zeXN0ZW0udHMnO1xuXG5pbXBvcnQgeyBlbnN1cmVOb25OdWxsYWJsZSB9IGZyb20gJy4uL3R5cGUtZ3VhcmRzLnRzJztcbmltcG9ydCB7IHJlbmRlckNhbGxvdXQgfSBmcm9tICcuL2NhbGxvdXQudHMnO1xuaW1wb3J0IHsgZml4VGl0bGUgfSBmcm9tICcuL2RhdGF2aWV3LWxpbmsudHMnO1xuaW1wb3J0IHsgcmVuZGVyUGFnaW5hdGVkVGFibGUgfSBmcm9tICcuL2RhdGF2aWV3LnRzJztcbmltcG9ydCB7XG4gIGdldEFic3RyYWN0RmlsZU9yTnVsbCxcbiAgZ2V0TWFya2Rvd25GaWxlcyxcbiAgaXNGaWxlLFxuICBpc0ZvbGRlclxufSBmcm9tICcuL2ZpbGUtc3lzdGVtLnRzJztcbmltcG9ydCB7IGdlbmVyYXRlTWFya2Rvd25MaW5rIH0gZnJvbSAnLi9saW5rLnRzJztcbmltcG9ydCB7IGdldEJhY2tsaW5rc0ZvckZpbGVTYWZlIH0gZnJvbSAnLi9tZXRhZGF0YS1jYWNoZS50cyc7XG5cbi8qKlxuICogT3B0aW9ucyBmb3Ige0BsaW5rIHJlbmRlckRlbGF5ZWRCYWNrbGlua3NGb3JGb2xkZXJ9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlbmRlckRlbGF5ZWRCYWNrbGlua3NGb3JGb2xkZXJQYXJhbXMge1xuICAvKipcbiAgICogQSB7QGxpbmsgRGF0YXZpZXdJbmxpbmVBcGl9IGluc3RhbmNlLlxuICAgKi9cbiAgcmVhZG9ubHkgZHY6IERhdGF2aWV3SW5saW5lQXBpO1xuXG4gIC8qKlxuICAgKiBBIGZvbGRlciBwYXRoLiBJZiBub3QgcHJvdmlkZWQsIHRoZSBjdXJyZW50IGZpbGUncyBmb2xkZXIgd2lsbCBiZSB1c2VkLlxuICAgKi9cbiAgcmVhZG9ubHkgZm9sZGVyPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBIHRpdGxlIGZvciB0aGUgcmVuZGVyZWQgYmFja2xpbmtzLiBEZWZhdWx0cyB0byBcIkZvbGRlciBCYWNrbGlua3NcIi5cbiAgICovXG4gIHJlYWRvbmx5IHRpdGxlPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIHtAbGluayByZW5kZXJEZWxheWVkQmFja2xpbmtzfS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZW5kZXJEZWxheWVkQmFja2xpbmtzUGFyYW1zIHtcbiAgLyoqXG4gICAqIEEge0BsaW5rIERhdGF2aWV3SW5saW5lQXBpfSBpbnN0YW5jZS5cbiAgICovXG4gIHJlYWRvbmx5IGR2OiBEYXRhdmlld0lubGluZUFwaTtcblxuICAvKipcbiAgICogQW4gYXJyYXkgb2YgUGF0aE9yRmlsZS5cbiAgICovXG4gIHJlYWRvbmx5IGZpbGVzOiBQYXRoT3JGaWxlW107XG5cbiAgLyoqXG4gICAqIEEgdGl0bGUgZm9yIHRoZSByZW5kZXJlZCBiYWNrbGlua3MuIERlZmF1bHRzIHRvIFwiQmFja2xpbmtzXCIuXG4gICAqL1xuICByZWFkb25seSB0aXRsZT86IHN0cmluZztcbn1cblxuLyoqXG4gKiBSZW5kZXJzIGEgYmFja2xpbmtzIHRhYmxlIHVzaW5nIHRoZSBwcm92aWRlZCBEYXRhdmlld0lubGluZUFwaSBhbmQgb3B0aW9uYWwgYXJyYXkgb2YgUGF0aE9yQWJzdHJhY3RGaWxlLlxuICpcbiAqIEBwYXJhbSBkdiAtIFRoZSBEYXRhdmlld0lubGluZUFwaSBpbnN0YW5jZS5cbiAqIEBwYXJhbSBwYXRoT3JGaWxlcyAtIEFuIG9wdGlvbmFsIGFycmF5IG9mIFBhdGhPckFic3RyYWN0RmlsZS5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgYmFja2xpbmtzIHRhYmxlIGhhcyBiZWVuIHJlbmRlcmVkLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVuZGVyQmFja2xpbmtzVGFibGUoZHY6IERhdGF2aWV3SW5saW5lQXBpLCBwYXRoT3JGaWxlcz86IFBhdGhPckFic3RyYWN0RmlsZVtdKTogUHJvbWlzZTx2b2lkPiB7XG4gIHBhdGhPckZpbGVzID8/PSBbXTtcbiAgY29uc3QgZmlsZXM6IFRGaWxlW10gPSBwYXRoT3JGaWxlcy5mbGF0TWFwKChhYnN0cmFjdEZpbGVPclBhdGgpID0+IHtcbiAgICBjb25zdCBhYnN0cmFjdEZpbGUgPSBnZXRBYnN0cmFjdEZpbGVPck51bGwoZHYuYXBwLCBhYnN0cmFjdEZpbGVPclBhdGgpO1xuICAgIGlmICghYWJzdHJhY3RGaWxlKSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgaWYgKGlzRmlsZShhYnN0cmFjdEZpbGUpKSB7XG4gICAgICByZXR1cm4gW2Fic3RyYWN0RmlsZV07XG4gICAgfVxuXG4gICAgaWYgKCFpc0ZvbGRlcihhYnN0cmFjdEZpbGUpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0V4cGVjdGVkIGEgZm9sZGVyJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGdldE1hcmtkb3duRmlsZXMoZHYuYXBwLCBhYnN0cmFjdEZpbGUsIHRydWUpO1xuICB9KTtcblxuICBjb25zdCBiYWNrbGlua1Jvd3M6IFtMaW5rLCBzdHJpbmdbXV1bXSA9IFtdO1xuXG4gIGZvciAoY29uc3QgZmlsZSBvZiBmaWxlcykge1xuICAgIGNvbnN0IGxpbmsgPSBmaXhUaXRsZShkdiwgZmlsZS5wYXRoKTtcbiAgICBjb25zdCBiYWNrbGlua3MgPSBhd2FpdCBnZXRCYWNrbGlua3NGb3JGaWxlU2FmZShkdi5hcHAsIGZpbGUpO1xuICAgIGNvbnN0IGJhY2tsaW5rTGlua3MgPSBiYWNrbGlua3Mua2V5cygpLm1hcCgoYmFja0xpbmtQYXRoKSA9PiB7XG4gICAgICBjb25zdCBtYXJrZG93bkxpbmsgPSBnZW5lcmF0ZU1hcmtkb3duTGluayh7XG4gICAgICAgIGFwcDogZHYuYXBwLFxuICAgICAgICBzb3VyY2VQYXRoT3JGaWxlOiBkdi5jdXJyZW50KCkuZmlsZS5wYXRoLFxuICAgICAgICB0YXJnZXRQYXRoT3JGaWxlOiBlbnN1cmVOb25OdWxsYWJsZShkdi5hcHAubWV0YWRhdGFDYWNoZS5nZXRGaXJzdExpbmtwYXRoRGVzdChiYWNrTGlua1BhdGgsIGZpbGUucGF0aCksICdMaW5rIG5vdCBmb3VuZCcpXG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIGAke21hcmtkb3duTGlua30gKCR7YmFja0xpbmtQYXRofSlgO1xuICAgIH0pO1xuICAgIGlmIChiYWNrbGlua0xpbmtzLmxlbmd0aCkge1xuICAgICAgYmFja2xpbmtSb3dzLnB1c2goW2xpbmssIGJhY2tsaW5rTGlua3NdKTtcbiAgICB9XG4gIH1cblxuICBhd2FpdCByZW5kZXJQYWdpbmF0ZWRUYWJsZSh7XG4gICAgZHYsXG4gICAgaGVhZGVyczogWydOb3RlJywgJ0JhY2tsaW5rcyddLFxuICAgIHJvd3M6IGJhY2tsaW5rUm93c1xuICB9KTtcbn1cblxuLyoqXG4gKiBSZW5kZXJzIGRlbGF5ZWQgYmFja2xpbmtzLlxuICpcbiAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgcGFyYW1ldGVycyBmb3IgcmVuZGVyaW5nIGRlbGF5ZWQgYmFja2xpbmtzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVuZGVyRGVsYXllZEJhY2tsaW5rcyhwYXJhbXM6IFJlbmRlckRlbGF5ZWRCYWNrbGlua3NQYXJhbXMpOiB2b2lkIHtcbiAgY29uc3Qge1xuICAgIGR2LFxuICAgIGZpbGVzLFxuICAgIHRpdGxlID0gJ0JhY2tsaW5rcydcbiAgfSA9IHBhcmFtcztcbiAgcmVuZGVyQ2FsbG91dCh7XG4gICAgYXN5bmMgY29udGVudFByb3ZpZGVyKCkge1xuICAgICAgYXdhaXQgcmVuZGVyQmFja2xpbmtzVGFibGUoZHYsIGZpbGVzKTtcbiAgICB9LFxuICAgIGR2LFxuICAgIGhlYWRlcjogdGl0bGVcbiAgfSk7XG59XG5cbi8qKlxuICogUmVuZGVycyBkZWxheWVkIGJhY2tsaW5rcyBmb3IgYSBzcGVjaWZpYyBmb2xkZXIuXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSBwYXJhbWV0ZXJzIGZvciByZW5kZXJpbmcgZGVsYXllZCBiYWNrbGlua3MuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZW5kZXJEZWxheWVkQmFja2xpbmtzRm9yRm9sZGVyKHBhcmFtczogUmVuZGVyRGVsYXllZEJhY2tsaW5rc0ZvckZvbGRlclBhcmFtcyk6IHZvaWQge1xuICBjb25zdCB7XG4gICAgZHYsXG4gICAgZm9sZGVyLFxuICAgIHRpdGxlID0gJ0ZvbGRlciBCYWNrbGlua3MnXG4gIH0gPSBwYXJhbXM7XG4gIGNvbnN0IGZvbGRlcjIgPSBmb2xkZXIgPz8gZHYuY3VycmVudCgpLmZpbGUuZm9sZGVyO1xuICByZW5kZXJEZWxheWVkQmFja2xpbmtzKHtcbiAgICBkdixcbiAgICBmaWxlczogZ2V0TWFya2Rvd25GaWxlcyhkdi5hcHAsIGZvbGRlcjIsIHRydWUpLFxuICAgIHRpdGxlXG4gIH0pO1xufVxuXG4vKiB2OCBpZ25vcmUgc3RvcCAqL1xuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBbUJBLFNBQVMseUJBQXlCO0FBQ2xDLFNBQVMscUJBQXFCO0FBQzlCLFNBQVMsZ0JBQWdCO0FBQ3pCLFNBQVMsNEJBQTRCO0FBQ3JDO0FBQUEsRUFDRTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLE9BQ0s7QUFDUCxTQUFTLDRCQUE0QjtBQUNyQyxTQUFTLCtCQUErQjtBQWlEeEMsZUFBc0IscUJBQXFCLElBQXVCLGFBQW1EO0FBQ25ILGtCQUFnQixDQUFDO0FBQ2pCLFFBQU0sUUFBaUIsWUFBWSxRQUFRLENBQUMsdUJBQXVCO0FBQ2pFLFVBQU0sZUFBZSxzQkFBc0IsR0FBRyxLQUFLLGtCQUFrQjtBQUNyRSxRQUFJLENBQUMsY0FBYztBQUNqQixhQUFPLENBQUM7QUFBQSxJQUNWO0FBRUEsUUFBSSxPQUFPLFlBQVksR0FBRztBQUN4QixhQUFPLENBQUMsWUFBWTtBQUFBLElBQ3RCO0FBRUEsUUFBSSxDQUFDLFNBQVMsWUFBWSxHQUFHO0FBQzNCLFlBQU0sSUFBSSxNQUFNLG1CQUFtQjtBQUFBLElBQ3JDO0FBRUEsV0FBTyxpQkFBaUIsR0FBRyxLQUFLLGNBQWMsSUFBSTtBQUFBLEVBQ3BELENBQUM7QUFFRCxRQUFNLGVBQW1DLENBQUM7QUFFMUMsYUFBVyxRQUFRLE9BQU87QUFDeEIsVUFBTSxPQUFPLFNBQVMsSUFBSSxLQUFLLElBQUk7QUFDbkMsVUFBTSxZQUFZLE1BQU0sd0JBQXdCLEdBQUcsS0FBSyxJQUFJO0FBQzVELFVBQU0sZ0JBQWdCLFVBQVUsS0FBSyxFQUFFLElBQUksQ0FBQyxpQkFBaUI7QUFDM0QsWUFBTSxlQUFlLHFCQUFxQjtBQUFBLFFBQ3hDLEtBQUssR0FBRztBQUFBLFFBQ1Isa0JBQWtCLEdBQUcsUUFBUSxFQUFFLEtBQUs7QUFBQSxRQUNwQyxrQkFBa0Isa0JBQWtCLEdBQUcsSUFBSSxjQUFjLHFCQUFxQixjQUFjLEtBQUssSUFBSSxHQUFHLGdCQUFnQjtBQUFBLE1BQzFILENBQUM7QUFFRCxhQUFPLEdBQUcsWUFBWSxLQUFLLFlBQVk7QUFBQSxJQUN6QyxDQUFDO0FBQ0QsUUFBSSxjQUFjLFFBQVE7QUFDeEIsbUJBQWEsS0FBSyxDQUFDLE1BQU0sYUFBYSxDQUFDO0FBQUEsSUFDekM7QUFBQSxFQUNGO0FBRUEsUUFBTSxxQkFBcUI7QUFBQSxJQUN6QjtBQUFBLElBQ0EsU0FBUyxDQUFDLFFBQVEsV0FBVztBQUFBLElBQzdCLE1BQU07QUFBQSxFQUNSLENBQUM7QUFDSDtBQU9PLFNBQVMsdUJBQXVCLFFBQTRDO0FBQ2pGLFFBQU07QUFBQSxJQUNKO0FBQUEsSUFDQTtBQUFBLElBQ0EsUUFBUTtBQUFBLEVBQ1YsSUFBSTtBQUNKLGdCQUFjO0FBQUEsSUFDWixNQUFNLGtCQUFrQjtBQUN0QixZQUFNLHFCQUFxQixJQUFJLEtBQUs7QUFBQSxJQUN0QztBQUFBLElBQ0E7QUFBQSxJQUNBLFFBQVE7QUFBQSxFQUNWLENBQUM7QUFDSDtBQU9PLFNBQVMsZ0NBQWdDLFFBQXFEO0FBQ25HLFFBQU07QUFBQSxJQUNKO0FBQUEsSUFDQTtBQUFBLElBQ0EsUUFBUTtBQUFBLEVBQ1YsSUFBSTtBQUNKLFFBQU0sVUFBVSxVQUFVLEdBQUcsUUFBUSxFQUFFLEtBQUs7QUFDNUMseUJBQXVCO0FBQUEsSUFDckI7QUFBQSxJQUNBLE9BQU8saUJBQWlCLEdBQUcsS0FBSyxTQUFTLElBQUk7QUFBQSxJQUM3QztBQUFBLEVBQ0YsQ0FBQztBQUNIOyIsCiAgIm5hbWVzIjogW10KfQo=
105
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL2JhY2tsaW5rLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogUHJvdmlkZXMgdXRpbGl0eSBmdW5jdGlvbnMgZm9yIHdvcmtpbmcgd2l0aCBiYWNrbGlua3MuXG4gKi9cblxuLyogdjggaWdub3JlIHN0YXJ0IC0tIERlZXBseSBjb3VwbGVkIHRvIE9ic2lkaWFuIHJ1bnRpbWU7IHJlcXVpcmVzIHJ1bm5pbmcgdmF1bHQgZm9yIG1lYW5pbmdmdWwgdGVzdGluZy4gKi9cblxuaW1wb3J0IHR5cGUgeyBURmlsZSB9IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHR5cGUge1xuICBEYXRhdmlld0lubGluZUFwaSxcbiAgTGlua1xufSBmcm9tICcuL2RhdGF2aWV3LnRzJztcbmltcG9ydCB0eXBlIHtcbiAgUGF0aE9yQWJzdHJhY3RGaWxlLFxuICBQYXRoT3JGaWxlXG59IGZyb20gJy4vZmlsZS1zeXN0ZW0udHMnO1xuXG5pbXBvcnQgeyBlbnN1cmVOb25OdWxsYWJsZSB9IGZyb20gJy4uL3R5cGUtZ3VhcmRzLnRzJztcbmltcG9ydCB7IHJlbmRlckNhbGxvdXQgfSBmcm9tICcuL2NhbGxvdXQudHMnO1xuaW1wb3J0IHsgZml4VGl0bGUgfSBmcm9tICcuL2RhdGF2aWV3LWxpbmsudHMnO1xuaW1wb3J0IHsgcmVuZGVyUGFnaW5hdGVkVGFibGUgfSBmcm9tICcuL2RhdGF2aWV3LnRzJztcbmltcG9ydCB7XG4gIGdldEFic3RyYWN0RmlsZU9yTnVsbCxcbiAgZ2V0TWFya2Rvd25GaWxlcyxcbiAgaXNGaWxlLFxuICBpc0ZvbGRlclxufSBmcm9tICcuL2ZpbGUtc3lzdGVtLnRzJztcbmltcG9ydCB7IGdlbmVyYXRlTWFya2Rvd25MaW5rIH0gZnJvbSAnLi9saW5rLnRzJztcbmltcG9ydCB7IGdldEJhY2tsaW5rc0ZvckZpbGVTYWZlIH0gZnJvbSAnLi9tZXRhZGF0YS1jYWNoZS50cyc7XG5cbi8qKlxuICogT3B0aW9ucyBmb3Ige0BsaW5rIHJlbmRlckRlbGF5ZWRCYWNrbGlua3NGb3JGb2xkZXJ9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlbmRlckRlbGF5ZWRCYWNrbGlua3NGb3JGb2xkZXJQYXJhbXMge1xuICAvKipcbiAgICogQSB7QGxpbmsgRGF0YXZpZXdJbmxpbmVBcGl9IGluc3RhbmNlLlxuICAgKi9cbiAgcmVhZG9ubHkgZHY6IERhdGF2aWV3SW5saW5lQXBpO1xuXG4gIC8qKlxuICAgKiBBIGZvbGRlciBwYXRoLiBJZiBub3QgcHJvdmlkZWQsIHRoZSBjdXJyZW50IGZpbGUncyBmb2xkZXIgd2lsbCBiZSB1c2VkLlxuICAgKi9cbiAgcmVhZG9ubHkgZm9sZGVyPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBIHRpdGxlIGZvciB0aGUgcmVuZGVyZWQgYmFja2xpbmtzLiBEZWZhdWx0cyB0byBcIkZvbGRlciBCYWNrbGlua3NcIi5cbiAgICovXG4gIHJlYWRvbmx5IHRpdGxlPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIHtAbGluayByZW5kZXJEZWxheWVkQmFja2xpbmtzfS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZW5kZXJEZWxheWVkQmFja2xpbmtzUGFyYW1zIHtcbiAgLyoqXG4gICAqIEEge0BsaW5rIERhdGF2aWV3SW5saW5lQXBpfSBpbnN0YW5jZS5cbiAgICovXG4gIHJlYWRvbmx5IGR2OiBEYXRhdmlld0lubGluZUFwaTtcblxuICAvKipcbiAgICogQW4gYXJyYXkgb2YgUGF0aE9yRmlsZS5cbiAgICovXG4gIHJlYWRvbmx5IGZpbGVzOiBQYXRoT3JGaWxlW107XG5cbiAgLyoqXG4gICAqIEEgdGl0bGUgZm9yIHRoZSByZW5kZXJlZCBiYWNrbGlua3MuIERlZmF1bHRzIHRvIFwiQmFja2xpbmtzXCIuXG4gICAqL1xuICByZWFkb25seSB0aXRsZT86IHN0cmluZztcbn1cblxuLyoqXG4gKiBSZW5kZXJzIGEgYmFja2xpbmtzIHRhYmxlIHVzaW5nIHRoZSBwcm92aWRlZCBEYXRhdmlld0lubGluZUFwaSBhbmQgb3B0aW9uYWwgYXJyYXkgb2YgUGF0aE9yQWJzdHJhY3RGaWxlLlxuICpcbiAqIEBwYXJhbSBkdiAtIFRoZSBEYXRhdmlld0lubGluZUFwaSBpbnN0YW5jZS5cbiAqIEBwYXJhbSBwYXRoT3JGaWxlcyAtIEFuIG9wdGlvbmFsIGFycmF5IG9mIFBhdGhPckFic3RyYWN0RmlsZS5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgYmFja2xpbmtzIHRhYmxlIGhhcyBiZWVuIHJlbmRlcmVkLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVuZGVyQmFja2xpbmtzVGFibGUoZHY6IERhdGF2aWV3SW5saW5lQXBpLCBwYXRoT3JGaWxlcz86IFBhdGhPckFic3RyYWN0RmlsZVtdKTogUHJvbWlzZTx2b2lkPiB7XG4gIHBhdGhPckZpbGVzID8/PSBbXTtcbiAgY29uc3QgZmlsZXM6IFRGaWxlW10gPSBwYXRoT3JGaWxlcy5mbGF0TWFwKChhYnN0cmFjdEZpbGVPclBhdGgpID0+IHtcbiAgICBjb25zdCBhYnN0cmFjdEZpbGUgPSBnZXRBYnN0cmFjdEZpbGVPck51bGwoZHYuYXBwLCBhYnN0cmFjdEZpbGVPclBhdGgpO1xuICAgIGlmICghYWJzdHJhY3RGaWxlKSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgaWYgKGlzRmlsZShhYnN0cmFjdEZpbGUpKSB7XG4gICAgICByZXR1cm4gW2Fic3RyYWN0RmlsZV07XG4gICAgfVxuXG4gICAgaWYgKCFpc0ZvbGRlcihhYnN0cmFjdEZpbGUpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0V4cGVjdGVkIGEgZm9sZGVyJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGdldE1hcmtkb3duRmlsZXMoZHYuYXBwLCBhYnN0cmFjdEZpbGUsIHRydWUpO1xuICB9KTtcblxuICBjb25zdCBiYWNrbGlua1Jvd3M6IFtMaW5rLCBzdHJpbmdbXV1bXSA9IFtdO1xuXG4gIGZvciAoY29uc3QgZmlsZSBvZiBmaWxlcykge1xuICAgIGNvbnN0IGxpbmsgPSBmaXhUaXRsZShkdiwgZmlsZS5wYXRoKTtcbiAgICBjb25zdCBiYWNrbGlua3MgPSBhd2FpdCBnZXRCYWNrbGlua3NGb3JGaWxlU2FmZShkdi5hcHAsIGZpbGUpO1xuICAgIGNvbnN0IGJhY2tsaW5rTGlua3MgPSBiYWNrbGlua3Mua2V5cygpLm1hcCgoYmFja0xpbmtQYXRoKSA9PiB7XG4gICAgICBjb25zdCBtYXJrZG93bkxpbmsgPSBnZW5lcmF0ZU1hcmtkb3duTGluayh7XG4gICAgICAgIGFwcDogZHYuYXBwLFxuICAgICAgICBzb3VyY2VQYXRoT3JGaWxlOiBkdi5jdXJyZW50KCkuZmlsZS5wYXRoLFxuICAgICAgICB0YXJnZXRQYXRoT3JGaWxlOiBlbnN1cmVOb25OdWxsYWJsZShkdi5hcHAubWV0YWRhdGFDYWNoZS5nZXRGaXJzdExpbmtwYXRoRGVzdChiYWNrTGlua1BhdGgsIGZpbGUucGF0aCksICdMaW5rIG5vdCBmb3VuZCcpXG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIGAke21hcmtkb3duTGlua30gKCR7YmFja0xpbmtQYXRofSlgO1xuICAgIH0pO1xuICAgIGlmIChiYWNrbGlua0xpbmtzLmxlbmd0aCkge1xuICAgICAgYmFja2xpbmtSb3dzLnB1c2goW2xpbmssIGJhY2tsaW5rTGlua3NdKTtcbiAgICB9XG4gIH1cblxuICBhd2FpdCByZW5kZXJQYWdpbmF0ZWRUYWJsZSh7XG4gICAgZHYsXG4gICAgaGVhZGVyczogWydOb3RlJywgJ0JhY2tsaW5rcyddLFxuICAgIHJvd3M6IGJhY2tsaW5rUm93c1xuICB9KTtcbn1cblxuLyoqXG4gKiBSZW5kZXJzIGRlbGF5ZWQgYmFja2xpbmtzLlxuICpcbiAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgcGFyYW1ldGVycyBmb3IgcmVuZGVyaW5nIGRlbGF5ZWQgYmFja2xpbmtzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVuZGVyRGVsYXllZEJhY2tsaW5rcyhwYXJhbXM6IFJlbmRlckRlbGF5ZWRCYWNrbGlua3NQYXJhbXMpOiB2b2lkIHtcbiAgY29uc3Qge1xuICAgIGR2LFxuICAgIGZpbGVzLFxuICAgIHRpdGxlID0gJ0JhY2tsaW5rcydcbiAgfSA9IHBhcmFtcztcbiAgcmVuZGVyQ2FsbG91dCh7XG4gICAgYXN5bmMgY29udGVudFByb3ZpZGVyKCkge1xuICAgICAgYXdhaXQgcmVuZGVyQmFja2xpbmtzVGFibGUoZHYsIGZpbGVzKTtcbiAgICB9LFxuICAgIGR2LFxuICAgIGhlYWRlcjogdGl0bGVcbiAgfSk7XG59XG5cbi8qKlxuICogUmVuZGVycyBkZWxheWVkIGJhY2tsaW5rcyBmb3IgYSBzcGVjaWZpYyBmb2xkZXIuXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSBwYXJhbWV0ZXJzIGZvciByZW5kZXJpbmcgZGVsYXllZCBiYWNrbGlua3MuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZW5kZXJEZWxheWVkQmFja2xpbmtzRm9yRm9sZGVyKHBhcmFtczogUmVuZGVyRGVsYXllZEJhY2tsaW5rc0ZvckZvbGRlclBhcmFtcyk6IHZvaWQge1xuICBjb25zdCB7XG4gICAgZHYsXG4gICAgZm9sZGVyLFxuICAgIHRpdGxlID0gJ0ZvbGRlciBCYWNrbGlua3MnXG4gIH0gPSBwYXJhbXM7XG4gIGNvbnN0IGZvbGRlcjIgPSBmb2xkZXIgPz8gZHYuY3VycmVudCgpLmZpbGUuZm9sZGVyO1xuICByZW5kZXJEZWxheWVkQmFja2xpbmtzKHtcbiAgICBkdixcbiAgICBmaWxlczogZ2V0TWFya2Rvd25GaWxlcyhkdi5hcHAsIGZvbGRlcjIsIHRydWUpLFxuICAgIHRpdGxlXG4gIH0pO1xufVxuXG4vKiB2OCBpZ25vcmUgc3RvcCAqL1xuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFtQkEsU0FBUyx5QkFBeUI7QUFDbEMsU0FBUyxxQkFBcUI7QUFDOUIsU0FBUyxnQkFBZ0I7QUFDekIsU0FBUyw0QkFBNEI7QUFDckM7QUFBQSxFQUNFO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsT0FDSztBQUNQLFNBQVMsNEJBQTRCO0FBQ3JDLFNBQVMsK0JBQStCO0FBaUR4QyxlQUFzQixxQkFBcUIsSUFBdUIsYUFBbUQ7QUFDbkgsa0JBQWdCLENBQUM7QUFDakIsUUFBTSxRQUFpQixZQUFZLFFBQVEsQ0FBQyx1QkFBdUI7QUFDakUsVUFBTSxlQUFlLHNCQUFzQixHQUFHLEtBQUssa0JBQWtCO0FBQ3JFLFFBQUksQ0FBQyxjQUFjO0FBQ2pCLGFBQU8sQ0FBQztBQUFBLElBQ1Y7QUFFQSxRQUFJLE9BQU8sWUFBWSxHQUFHO0FBQ3hCLGFBQU8sQ0FBQyxZQUFZO0FBQUEsSUFDdEI7QUFFQSxRQUFJLENBQUMsU0FBUyxZQUFZLEdBQUc7QUFDM0IsWUFBTSxJQUFJLE1BQU0sbUJBQW1CO0FBQUEsSUFDckM7QUFFQSxXQUFPLGlCQUFpQixHQUFHLEtBQUssY0FBYyxJQUFJO0FBQUEsRUFDcEQsQ0FBQztBQUVELFFBQU0sZUFBbUMsQ0FBQztBQUUxQyxhQUFXLFFBQVEsT0FBTztBQUN4QixVQUFNLE9BQU8sU0FBUyxJQUFJLEtBQUssSUFBSTtBQUNuQyxVQUFNLFlBQVksTUFBTSx3QkFBd0IsR0FBRyxLQUFLLElBQUk7QUFDNUQsVUFBTSxnQkFBZ0IsVUFBVSxLQUFLLEVBQUUsSUFBSSxDQUFDLGlCQUFpQjtBQUMzRCxZQUFNLGVBQWUscUJBQXFCO0FBQUEsUUFDeEMsS0FBSyxHQUFHO0FBQUEsUUFDUixrQkFBa0IsR0FBRyxRQUFRLEVBQUUsS0FBSztBQUFBLFFBQ3BDLGtCQUFrQixrQkFBa0IsR0FBRyxJQUFJLGNBQWMscUJBQXFCLGNBQWMsS0FBSyxJQUFJLEdBQUcsZ0JBQWdCO0FBQUEsTUFDMUgsQ0FBQztBQUVELGFBQU8sR0FBRyxZQUFZLEtBQUssWUFBWTtBQUFBLElBQ3pDLENBQUM7QUFDRCxRQUFJLGNBQWMsUUFBUTtBQUN4QixtQkFBYSxLQUFLLENBQUMsTUFBTSxhQUFhLENBQUM7QUFBQSxJQUN6QztBQUFBLEVBQ0Y7QUFFQSxRQUFNLHFCQUFxQjtBQUFBLElBQ3pCO0FBQUEsSUFDQSxTQUFTLENBQUMsUUFBUSxXQUFXO0FBQUEsSUFDN0IsTUFBTTtBQUFBLEVBQ1IsQ0FBQztBQUNIO0FBT08sU0FBUyx1QkFBdUIsUUFBNEM7QUFDakYsUUFBTTtBQUFBLElBQ0o7QUFBQSxJQUNBO0FBQUEsSUFDQSxRQUFRO0FBQUEsRUFDVixJQUFJO0FBQ0osZ0JBQWM7QUFBQSxJQUNaLE1BQU0sa0JBQWtCO0FBQ3RCLFlBQU0scUJBQXFCLElBQUksS0FBSztBQUFBLElBQ3RDO0FBQUEsSUFDQTtBQUFBLElBQ0EsUUFBUTtBQUFBLEVBQ1YsQ0FBQztBQUNIO0FBT08sU0FBUyxnQ0FBZ0MsUUFBcUQ7QUFDbkcsUUFBTTtBQUFBLElBQ0o7QUFBQSxJQUNBO0FBQUEsSUFDQSxRQUFRO0FBQUEsRUFDVixJQUFJO0FBQ0osUUFBTSxVQUFVLFVBQVUsR0FBRyxRQUFRLEVBQUUsS0FBSztBQUM1Qyx5QkFBdUI7QUFBQSxJQUNyQjtBQUFBLElBQ0EsT0FBTyxpQkFBaUIsR0FBRyxLQUFLLFNBQVMsSUFBSTtBQUFBLElBQzdDO0FBQUEsRUFDRixDQUFDO0FBQ0g7IiwKICAibmFtZXMiOiBbXQp9Cg==
@@ -4,6 +4,7 @@ if you want to view the source, please visit the github repository of this plugi
4
4
  */
5
5
 
6
6
  (function initEsm() {
7
+ // eslint-disable-next-line obsidianmd/prefer-active-doc -- Actively use globalThis.
7
8
  if (globalThis.process) {
8
9
  return;
9
10
  }
@@ -16,6 +17,7 @@ if you want to view the source, please visit the github repository of this plugi
16
17
  env: {},
17
18
  platform: 'android'
18
19
  };
20
+ // eslint-disable-next-line obsidianmd/prefer-active-doc -- Actively use globalThis.
19
21
  globalThis.process = browserProcess;
20
22
  })();
21
23
 
@@ -92,4 +94,4 @@ export {
92
94
  renderCallout,
93
95
  wrapForCallout
94
96
  };
95
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL2NhbGxvdXQudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBUaGlzIG1vZHVsZSBwcm92aWRlcyB1dGlsaXR5IGZ1bmN0aW9ucyBmb3IgcmVuZGVyaW5nIGNhbGxvdXRzIGluIERhdGF2aWV3LlxuICovXG5cbmltcG9ydCB0eXBlIHsgTWF5YmVSZXR1cm4gfSBmcm9tICcuLi90eXBlLnRzJztcbmltcG9ydCB0eXBlIHsgVmFsdWVQcm92aWRlciB9IGZyb20gJy4uL3ZhbHVlLXByb3ZpZGVyLnRzJztcbmltcG9ydCB0eXBlIHsgRGF0YXZpZXdJbmxpbmVBcGkgfSBmcm9tICcuL2RhdGF2aWV3LnRzJztcbmltcG9ydCB0eXBlIHsgQWRkVG9RdWV1ZVBhcmFtcyB9IGZyb20gJy4vcXVldWUudHMnO1xuXG5pbXBvcnQgeyBub3JtYWxpemVPcHRpb25hbFByb3BlcnRpZXMgfSBmcm9tICcuLi9vYmplY3QtdXRpbHMudHMnO1xuaW1wb3J0IHsgZW5zdXJlTm9uTnVsbGFibGUgfSBmcm9tICcuLi90eXBlLWd1YXJkcy50cyc7XG5pbXBvcnQgeyByZXNvbHZlVmFsdWUgfSBmcm9tICcuLi92YWx1ZS1wcm92aWRlci50cyc7XG5pbXBvcnQgeyBnZXRSZW5kZXJlZENvbnRhaW5lciB9IGZyb20gJy4vZGF0YXZpZXcudHMnO1xuaW1wb3J0IHsgdCB9IGZyb20gJy4vaTE4bi9pMThuLnRzJztcbmltcG9ydCB7IGFkZFRvUXVldWUgfSBmcm9tICcuL3F1ZXVlLnRzJztcblxuLyoqXG4gKiBFbnVtIHJlcHJlc2VudGluZyB0aGUgbW9kZSBvZiBhIGNhbGxvdXQuXG4gKi9cbmV4cG9ydCBlbnVtIENhbGxvdXRNb2RlIHtcbiAgLyoqIERlZmF1bHQgbW9kZSwgd2l0aCBubyBzcGVjaWFsIGJlaGF2aW9yLiAqL1xuICBEZWZhdWx0LFxuXG4gIC8qKiBGb2xkYWJsZSBtb2RlIHdpdGggdGhlIGNhbGxvdXQgY29sbGFwc2VkLiAqL1xuICBGb2xkYWJsZUNvbGxhcHNlZCxcblxuICAvKiogRm9sZGFibGUgbW9kZSB3aXRoIHRoZSBjYWxsb3V0IGV4cGFuZGVkLiAqL1xuICBGb2xkYWJsZUV4cGFuZGVkXG59XG5cbi8qKlxuICogT3B0aW9ucyBmb3Ige0BsaW5rIHJlbmRlckNhbGxvdXR9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlbmRlckNhbGxvdXRQYXJhbXMge1xuICAvKipcbiAgICogQW4gYWJvcnQgc2lnbmFsLlxuICAgKi9cbiAgcmVhZG9ubHkgYWJvcnRTaWduYWw/OiBBYm9ydFNpZ25hbDtcblxuICAvKipcbiAgICogQW4gb3B0aW9uYWwgcHJvdmlkZXIgZm9yIHRoZSBjb250ZW50LCB3aGljaCBjYW4gYmUgZWl0aGVyIGEgc3RyaW5nIG9yIGEgTm9kZS5cbiAgICovXG4gIHJlYWRvbmx5IGNvbnRlbnRQcm92aWRlcj86IFZhbHVlUHJvdmlkZXI8TWF5YmVSZXR1cm48Tm9kZSB8IHN0cmluZz4+O1xuXG4gIC8qKlxuICAgKiBBIHtAbGluayBEYXRhdmlld0lubGluZUFwaX0gaW5zdGFuY2UuXG4gICAqL1xuICByZWFkb25seSBkdjogRGF0YXZpZXdJbmxpbmVBcGk7XG5cbiAgLyoqXG4gICAqIEEgaGVhZGVyIHRleHQgb2YgdGhlIGNhbGxvdXQsIGRlZmF1bHQgaXMgYW4gZW1wdHkgc3RyaW5nLlxuICAgKi9cbiAgcmVhZG9ubHkgaGVhZGVyPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBIGNhbGxvdXQgbW9kZSwgZGVmYXVsdCBpcyBgQ2FsbG91dE1vZGUuRm9sZGFibGVDb2xsYXBzZWRgLlxuICAgKi9cbiAgcmVhZG9ubHkgbW9kZT86IENhbGxvdXRNb2RlO1xuXG4gIC8qKlxuICAgKiBBIHR5cGUgb2YgdGhlIGNhbGxvdXQsIGRlZmF1bHQgaXMgYFwiTk9URVwiYC5cbiAgICovXG4gIHJlYWRvbmx5IHR5cGU/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogUmVuZGVycyBhIGNhbGxvdXQgYmxvY2sgaW4gRGF0YXZpZXcuXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSBwYXJhbWV0ZXJzIGZvciByZW5kZXJpbmcgdGhlIGNhbGxvdXQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZW5kZXJDYWxsb3V0KHBhcmFtczogUmVuZGVyQ2FsbG91dFBhcmFtcyk6IHZvaWQge1xuICBjb25zdCB7XG4gICAgY29udGVudFByb3ZpZGVyID0gJycsXG4gICAgZHYsXG4gICAgaGVhZGVyID0gJycsXG4gICAgbW9kZSA9IENhbGxvdXRNb2RlLkZvbGRhYmxlQ29sbGFwc2VkLFxuICAgIHR5cGUgPSAnTk9URSdcbiAgfSA9IHBhcmFtcztcbiAgY29uc3QgbW9kaWZpZXIgPSBnZXRNb2RpZmllcihtb2RlKTtcbiAgY29uc3QgY2FsbG91dCA9IGR2LnBhcmFncmFwaChgPiBbISR7dHlwZX1dJHttb2RpZmllcn0gJHtoZWFkZXJ9XFxuPlxcbj4gPGRpdiBjbGFzcz1cImNvbnRlbnRcIj48L2Rpdj5gKTtcbiAgY29uc3QgY29udGVudERpdiA9IGVuc3VyZU5vbk51bGxhYmxlKGNhbGxvdXQucXVlcnlTZWxlY3RvcjxIVE1MRGl2RWxlbWVudD4oJy5jb250ZW50JyksICdDb250ZW50IGRpdiBub3QgZm91bmQnKTtcbiAgZHYucGFyYWdyYXBoKCdMb2FkaW5nLi4uIFx1MjNGMycsIHsgY29udGFpbmVyOiBjb250ZW50RGl2IH0pO1xuXG4gIGNvbnN0IG9ic2VydmVyID0gbmV3IEludGVyc2VjdGlvbk9ic2VydmVyKChlbnRyaWVzOiBJbnRlcnNlY3Rpb25PYnNlcnZlckVudHJ5W10pID0+IHtcbiAgICBmb3IgKGNvbnN0IGVudHJ5IG9mIGVudHJpZXMpIHtcbiAgICAgIGlmIChlbnRyeS5pc0ludGVyc2VjdGluZykge1xuICAgICAgICBvYnNlcnZlci51bm9ic2VydmUoZW50cnkudGFyZ2V0KTtcbiAgICAgICAgYWRkVG9RdWV1ZShub3JtYWxpemVPcHRpb25hbFByb3BlcnRpZXM8QWRkVG9RdWV1ZVBhcmFtcz4oe1xuICAgICAgICAgIGFib3J0U2lnbmFsOiBwYXJhbXMuYWJvcnRTaWduYWwsXG4gICAgICAgICAgYXBwOiBkdi5hcHAsXG4gICAgICAgICAgb3BlcmF0aW9uRm46IGxvYWRDb250ZW50LFxuICAgICAgICAgIG9wZXJhdGlvbk5hbWU6IHQoKCQpID0+ICQub2JzaWRpYW5EZXZVdGlscy5jYWxsb3V0LmxvYWRDb250ZW50KVxuICAgICAgICB9KSk7XG4gICAgICB9XG4gICAgfVxuICB9KTtcbiAgb2JzZXJ2ZXIub2JzZXJ2ZShjb250ZW50RGl2KTtcblxuICBhc3luYyBmdW5jdGlvbiBsb2FkQ29udGVudChhYm9ydFNpZ25hbDogQWJvcnRTaWduYWwpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhYm9ydFNpZ25hbC50aHJvd0lmQWJvcnRlZCgpO1xuICAgIGxldCBjb250ZW50OiBNYXliZVJldHVybjxOb2RlIHwgc3RyaW5nIHwgdW5kZWZpbmVkPjtcblxuICAgIGNvbnN0IHBhcmFncmFwaCA9IGF3YWl0IGdldFJlbmRlcmVkQ29udGFpbmVyKGR2LCBhc3luYyAoKSA9PiB7XG4gICAgICBjb250ZW50ID0gYXdhaXQgcmVzb2x2ZVZhbHVlKGNvbnRlbnRQcm92aWRlciwgYWJvcnRTaWduYWwpO1xuICAgICAgYWJvcnRTaWduYWwudGhyb3dJZkFib3J0ZWQoKTtcbiAgICB9KTtcbiAgICBhYm9ydFNpZ25hbC50aHJvd0lmQWJvcnRlZCgpO1xuXG4gICAgY29udGVudCA/Pz0gcGFyYWdyYXBoO1xuXG4gICAgY29udGVudERpdi5lbXB0eSgpO1xuICAgIGR2LnBhcmFncmFwaChjb250ZW50LCB7IGNvbnRhaW5lcjogY29udGVudERpdiB9KTtcbiAgfVxufVxuXG4vKipcbiAqIFdyYXBzIHRoZSBwcm92aWRlZCBjb250ZW50IGluIGJsb2NrcXVvdGUgc3ludGF4IGZvciBhIGNhbGxvdXQuXG4gKlxuICogQHBhcmFtIGNvbnRlbnQgLSBUaGUgY29udGVudCB0byB3cmFwLlxuICogQHJldHVybnMgVGhlIGNvbnRlbnQgd3JhcHBlZCBpbiBibG9ja3F1b3RlIHN5bnRheC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHdyYXBGb3JDYWxsb3V0KGNvbnRlbnQ6IHN0cmluZyk6IHN0cmluZyB7XG4gIGNvbnN0IGxpbmVzID0gY29udGVudC5zcGxpdCgnXFxuJyk7XG4gIGNvbnN0IHByZWZpeGVkTGluZXMgPSBsaW5lcy5tYXAoKGxpbmUpID0+IGA+ICR7bGluZX1gKTtcbiAgcmV0dXJuIHByZWZpeGVkTGluZXMuam9pbignXFxuJyk7XG59XG5cbi8qKlxuICogUmV0dXJucyB0aGUgbW9kaWZpZXIgc3RyaW5nIGJhc2VkIG9uIHRoZSBjYWxsb3V0IG1vZGUuXG4gKlxuICogQHBhcmFtIG1vZGUgLSBUaGUgbW9kZSBvZiB0aGUgY2FsbG91dC5cbiAqIEByZXR1cm5zIFRoZSBjb3JyZXNwb25kaW5nIG1vZGlmaWVyIHN0cmluZy5cbiAqL1xuZnVuY3Rpb24gZ2V0TW9kaWZpZXIobW9kZTogQ2FsbG91dE1vZGUpOiBzdHJpbmcge1xuICBzd2l0Y2ggKG1vZGUpIHtcbiAgICBjYXNlIENhbGxvdXRNb2RlLkZvbGRhYmxlQ29sbGFwc2VkOlxuICAgICAgcmV0dXJuICctJztcbiAgICBjYXNlIENhbGxvdXRNb2RlLkZvbGRhYmxlRXhwYW5kZWQ6XG4gICAgICByZXR1cm4gJysnO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gJyc7XG4gIH1cbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQVdBLFNBQVMsbUNBQW1DO0FBQzVDLFNBQVMseUJBQXlCO0FBQ2xDLFNBQVMsb0JBQW9CO0FBQzdCLFNBQVMsNEJBQTRCO0FBQ3JDLFNBQVMsU0FBUztBQUNsQixTQUFTLGtCQUFrQjtBQUtwQixJQUFLLGNBQUwsa0JBQUtBLGlCQUFMO0FBRUwsRUFBQUEsMEJBQUE7QUFHQSxFQUFBQSwwQkFBQTtBQUdBLEVBQUFBLDBCQUFBO0FBUlUsU0FBQUE7QUFBQSxHQUFBO0FBbURMLFNBQVMsY0FBYyxRQUFtQztBQUMvRCxRQUFNO0FBQUEsSUFDSixrQkFBa0I7QUFBQSxJQUNsQjtBQUFBLElBQ0EsU0FBUztBQUFBLElBQ1QsT0FBTztBQUFBLElBQ1AsT0FBTztBQUFBLEVBQ1QsSUFBSTtBQUNKLFFBQU0sV0FBVyxZQUFZLElBQUk7QUFDakMsUUFBTSxVQUFVLEdBQUcsVUFBVSxPQUFPLElBQUksSUFBSSxRQUFRLElBQUksTUFBTTtBQUFBO0FBQUEsOEJBQW9DO0FBQ2xHLFFBQU0sYUFBYSxrQkFBa0IsUUFBUSxjQUE4QixVQUFVLEdBQUcsdUJBQXVCO0FBQy9HLEtBQUcsVUFBVSxxQkFBZ0IsRUFBRSxXQUFXLFdBQVcsQ0FBQztBQUV0RCxRQUFNLFdBQVcsSUFBSSxxQkFBcUIsQ0FBQyxZQUF5QztBQUNsRixlQUFXLFNBQVMsU0FBUztBQUMzQixVQUFJLE1BQU0sZ0JBQWdCO0FBQ3hCLGlCQUFTLFVBQVUsTUFBTSxNQUFNO0FBQy9CLG1CQUFXLDRCQUE4QztBQUFBLFVBQ3ZELGFBQWEsT0FBTztBQUFBLFVBQ3BCLEtBQUssR0FBRztBQUFBLFVBQ1IsYUFBYTtBQUFBLFVBQ2IsZUFBZSxFQUFFLENBQUMsTUFBTSxFQUFFLGlCQUFpQixRQUFRLFdBQVc7QUFBQSxRQUNoRSxDQUFDLENBQUM7QUFBQSxNQUNKO0FBQUEsSUFDRjtBQUFBLEVBQ0YsQ0FBQztBQUNELFdBQVMsUUFBUSxVQUFVO0FBRTNCLGlCQUFlLFlBQVksYUFBeUM7QUFDbEUsZ0JBQVksZUFBZTtBQUMzQixRQUFJO0FBRUosVUFBTSxZQUFZLE1BQU0scUJBQXFCLElBQUksWUFBWTtBQUMzRCxnQkFBVSxNQUFNLGFBQWEsaUJBQWlCLFdBQVc7QUFDekQsa0JBQVksZUFBZTtBQUFBLElBQzdCLENBQUM7QUFDRCxnQkFBWSxlQUFlO0FBRTNCLGdCQUFZO0FBRVosZUFBVyxNQUFNO0FBQ2pCLE9BQUcsVUFBVSxTQUFTLEVBQUUsV0FBVyxXQUFXLENBQUM7QUFBQSxFQUNqRDtBQUNGO0FBUU8sU0FBUyxlQUFlLFNBQXlCO0FBQ3RELFFBQU0sUUFBUSxRQUFRLE1BQU0sSUFBSTtBQUNoQyxRQUFNLGdCQUFnQixNQUFNLElBQUksQ0FBQyxTQUFTLEtBQUssSUFBSSxFQUFFO0FBQ3JELFNBQU8sY0FBYyxLQUFLLElBQUk7QUFDaEM7QUFRQSxTQUFTLFlBQVksTUFBMkI7QUFDOUMsVUFBUSxNQUFNO0FBQUEsSUFDWixLQUFLO0FBQ0gsYUFBTztBQUFBLElBQ1QsS0FBSztBQUNILGFBQU87QUFBQSxJQUNUO0FBQ0UsYUFBTztBQUFBLEVBQ1g7QUFDRjsiLAogICJuYW1lcyI6IFsiQ2FsbG91dE1vZGUiXQp9Cg==
97
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL2NhbGxvdXQudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBUaGlzIG1vZHVsZSBwcm92aWRlcyB1dGlsaXR5IGZ1bmN0aW9ucyBmb3IgcmVuZGVyaW5nIGNhbGxvdXRzIGluIERhdGF2aWV3LlxuICovXG5cbmltcG9ydCB0eXBlIHsgTWF5YmVSZXR1cm4gfSBmcm9tICcuLi90eXBlLnRzJztcbmltcG9ydCB0eXBlIHsgVmFsdWVQcm92aWRlciB9IGZyb20gJy4uL3ZhbHVlLXByb3ZpZGVyLnRzJztcbmltcG9ydCB0eXBlIHsgRGF0YXZpZXdJbmxpbmVBcGkgfSBmcm9tICcuL2RhdGF2aWV3LnRzJztcbmltcG9ydCB0eXBlIHsgQWRkVG9RdWV1ZVBhcmFtcyB9IGZyb20gJy4vcXVldWUudHMnO1xuXG5pbXBvcnQgeyBub3JtYWxpemVPcHRpb25hbFByb3BlcnRpZXMgfSBmcm9tICcuLi9vYmplY3QtdXRpbHMudHMnO1xuaW1wb3J0IHsgZW5zdXJlTm9uTnVsbGFibGUgfSBmcm9tICcuLi90eXBlLWd1YXJkcy50cyc7XG5pbXBvcnQgeyByZXNvbHZlVmFsdWUgfSBmcm9tICcuLi92YWx1ZS1wcm92aWRlci50cyc7XG5pbXBvcnQgeyBnZXRSZW5kZXJlZENvbnRhaW5lciB9IGZyb20gJy4vZGF0YXZpZXcudHMnO1xuaW1wb3J0IHsgdCB9IGZyb20gJy4vaTE4bi9pMThuLnRzJztcbmltcG9ydCB7IGFkZFRvUXVldWUgfSBmcm9tICcuL3F1ZXVlLnRzJztcblxuLyoqXG4gKiBFbnVtIHJlcHJlc2VudGluZyB0aGUgbW9kZSBvZiBhIGNhbGxvdXQuXG4gKi9cbmV4cG9ydCBlbnVtIENhbGxvdXRNb2RlIHtcbiAgLyoqIERlZmF1bHQgbW9kZSwgd2l0aCBubyBzcGVjaWFsIGJlaGF2aW9yLiAqL1xuICBEZWZhdWx0LFxuXG4gIC8qKiBGb2xkYWJsZSBtb2RlIHdpdGggdGhlIGNhbGxvdXQgY29sbGFwc2VkLiAqL1xuICBGb2xkYWJsZUNvbGxhcHNlZCxcblxuICAvKiogRm9sZGFibGUgbW9kZSB3aXRoIHRoZSBjYWxsb3V0IGV4cGFuZGVkLiAqL1xuICBGb2xkYWJsZUV4cGFuZGVkXG59XG5cbi8qKlxuICogT3B0aW9ucyBmb3Ige0BsaW5rIHJlbmRlckNhbGxvdXR9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlbmRlckNhbGxvdXRQYXJhbXMge1xuICAvKipcbiAgICogQW4gYWJvcnQgc2lnbmFsLlxuICAgKi9cbiAgcmVhZG9ubHkgYWJvcnRTaWduYWw/OiBBYm9ydFNpZ25hbDtcblxuICAvKipcbiAgICogQW4gb3B0aW9uYWwgcHJvdmlkZXIgZm9yIHRoZSBjb250ZW50LCB3aGljaCBjYW4gYmUgZWl0aGVyIGEgc3RyaW5nIG9yIGEgTm9kZS5cbiAgICovXG4gIHJlYWRvbmx5IGNvbnRlbnRQcm92aWRlcj86IFZhbHVlUHJvdmlkZXI8TWF5YmVSZXR1cm48Tm9kZSB8IHN0cmluZz4+O1xuXG4gIC8qKlxuICAgKiBBIHtAbGluayBEYXRhdmlld0lubGluZUFwaX0gaW5zdGFuY2UuXG4gICAqL1xuICByZWFkb25seSBkdjogRGF0YXZpZXdJbmxpbmVBcGk7XG5cbiAgLyoqXG4gICAqIEEgaGVhZGVyIHRleHQgb2YgdGhlIGNhbGxvdXQsIGRlZmF1bHQgaXMgYW4gZW1wdHkgc3RyaW5nLlxuICAgKi9cbiAgcmVhZG9ubHkgaGVhZGVyPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBIGNhbGxvdXQgbW9kZSwgZGVmYXVsdCBpcyBgQ2FsbG91dE1vZGUuRm9sZGFibGVDb2xsYXBzZWRgLlxuICAgKi9cbiAgcmVhZG9ubHkgbW9kZT86IENhbGxvdXRNb2RlO1xuXG4gIC8qKlxuICAgKiBBIHR5cGUgb2YgdGhlIGNhbGxvdXQsIGRlZmF1bHQgaXMgYFwiTk9URVwiYC5cbiAgICovXG4gIHJlYWRvbmx5IHR5cGU/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogUmVuZGVycyBhIGNhbGxvdXQgYmxvY2sgaW4gRGF0YXZpZXcuXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSBwYXJhbWV0ZXJzIGZvciByZW5kZXJpbmcgdGhlIGNhbGxvdXQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZW5kZXJDYWxsb3V0KHBhcmFtczogUmVuZGVyQ2FsbG91dFBhcmFtcyk6IHZvaWQge1xuICBjb25zdCB7XG4gICAgY29udGVudFByb3ZpZGVyID0gJycsXG4gICAgZHYsXG4gICAgaGVhZGVyID0gJycsXG4gICAgbW9kZSA9IENhbGxvdXRNb2RlLkZvbGRhYmxlQ29sbGFwc2VkLFxuICAgIHR5cGUgPSAnTk9URSdcbiAgfSA9IHBhcmFtcztcbiAgY29uc3QgbW9kaWZpZXIgPSBnZXRNb2RpZmllcihtb2RlKTtcbiAgY29uc3QgY2FsbG91dCA9IGR2LnBhcmFncmFwaChgPiBbISR7dHlwZX1dJHttb2RpZmllcn0gJHtoZWFkZXJ9XFxuPlxcbj4gPGRpdiBjbGFzcz1cImNvbnRlbnRcIj48L2Rpdj5gKTtcbiAgY29uc3QgY29udGVudERpdiA9IGVuc3VyZU5vbk51bGxhYmxlKGNhbGxvdXQucXVlcnlTZWxlY3RvcjxIVE1MRGl2RWxlbWVudD4oJy5jb250ZW50JyksICdDb250ZW50IGRpdiBub3QgZm91bmQnKTtcbiAgZHYucGFyYWdyYXBoKCdMb2FkaW5nLi4uIFx1MjNGMycsIHsgY29udGFpbmVyOiBjb250ZW50RGl2IH0pO1xuXG4gIGNvbnN0IG9ic2VydmVyID0gbmV3IEludGVyc2VjdGlvbk9ic2VydmVyKChlbnRyaWVzOiBJbnRlcnNlY3Rpb25PYnNlcnZlckVudHJ5W10pID0+IHtcbiAgICBmb3IgKGNvbnN0IGVudHJ5IG9mIGVudHJpZXMpIHtcbiAgICAgIGlmIChlbnRyeS5pc0ludGVyc2VjdGluZykge1xuICAgICAgICBvYnNlcnZlci51bm9ic2VydmUoZW50cnkudGFyZ2V0KTtcbiAgICAgICAgYWRkVG9RdWV1ZShub3JtYWxpemVPcHRpb25hbFByb3BlcnRpZXM8QWRkVG9RdWV1ZVBhcmFtcz4oe1xuICAgICAgICAgIGFib3J0U2lnbmFsOiBwYXJhbXMuYWJvcnRTaWduYWwsXG4gICAgICAgICAgYXBwOiBkdi5hcHAsXG4gICAgICAgICAgb3BlcmF0aW9uRm46IGxvYWRDb250ZW50LFxuICAgICAgICAgIG9wZXJhdGlvbk5hbWU6IHQoKCQpID0+ICQub2JzaWRpYW5EZXZVdGlscy5jYWxsb3V0LmxvYWRDb250ZW50KVxuICAgICAgICB9KSk7XG4gICAgICB9XG4gICAgfVxuICB9KTtcbiAgb2JzZXJ2ZXIub2JzZXJ2ZShjb250ZW50RGl2KTtcblxuICBhc3luYyBmdW5jdGlvbiBsb2FkQ29udGVudChhYm9ydFNpZ25hbDogQWJvcnRTaWduYWwpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhYm9ydFNpZ25hbC50aHJvd0lmQWJvcnRlZCgpO1xuICAgIGxldCBjb250ZW50OiBNYXliZVJldHVybjxOb2RlIHwgc3RyaW5nIHwgdW5kZWZpbmVkPjtcblxuICAgIGNvbnN0IHBhcmFncmFwaCA9IGF3YWl0IGdldFJlbmRlcmVkQ29udGFpbmVyKGR2LCBhc3luYyAoKSA9PiB7XG4gICAgICBjb250ZW50ID0gYXdhaXQgcmVzb2x2ZVZhbHVlKGNvbnRlbnRQcm92aWRlciwgYWJvcnRTaWduYWwpO1xuICAgICAgYWJvcnRTaWduYWwudGhyb3dJZkFib3J0ZWQoKTtcbiAgICB9KTtcbiAgICBhYm9ydFNpZ25hbC50aHJvd0lmQWJvcnRlZCgpO1xuXG4gICAgY29udGVudCA/Pz0gcGFyYWdyYXBoO1xuXG4gICAgY29udGVudERpdi5lbXB0eSgpO1xuICAgIGR2LnBhcmFncmFwaChjb250ZW50LCB7IGNvbnRhaW5lcjogY29udGVudERpdiB9KTtcbiAgfVxufVxuXG4vKipcbiAqIFdyYXBzIHRoZSBwcm92aWRlZCBjb250ZW50IGluIGJsb2NrcXVvdGUgc3ludGF4IGZvciBhIGNhbGxvdXQuXG4gKlxuICogQHBhcmFtIGNvbnRlbnQgLSBUaGUgY29udGVudCB0byB3cmFwLlxuICogQHJldHVybnMgVGhlIGNvbnRlbnQgd3JhcHBlZCBpbiBibG9ja3F1b3RlIHN5bnRheC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHdyYXBGb3JDYWxsb3V0KGNvbnRlbnQ6IHN0cmluZyk6IHN0cmluZyB7XG4gIGNvbnN0IGxpbmVzID0gY29udGVudC5zcGxpdCgnXFxuJyk7XG4gIGNvbnN0IHByZWZpeGVkTGluZXMgPSBsaW5lcy5tYXAoKGxpbmUpID0+IGA+ICR7bGluZX1gKTtcbiAgcmV0dXJuIHByZWZpeGVkTGluZXMuam9pbignXFxuJyk7XG59XG5cbi8qKlxuICogUmV0dXJucyB0aGUgbW9kaWZpZXIgc3RyaW5nIGJhc2VkIG9uIHRoZSBjYWxsb3V0IG1vZGUuXG4gKlxuICogQHBhcmFtIG1vZGUgLSBUaGUgbW9kZSBvZiB0aGUgY2FsbG91dC5cbiAqIEByZXR1cm5zIFRoZSBjb3JyZXNwb25kaW5nIG1vZGlmaWVyIHN0cmluZy5cbiAqL1xuZnVuY3Rpb24gZ2V0TW9kaWZpZXIobW9kZTogQ2FsbG91dE1vZGUpOiBzdHJpbmcge1xuICBzd2l0Y2ggKG1vZGUpIHtcbiAgICBjYXNlIENhbGxvdXRNb2RlLkZvbGRhYmxlQ29sbGFwc2VkOlxuICAgICAgcmV0dXJuICctJztcbiAgICBjYXNlIENhbGxvdXRNb2RlLkZvbGRhYmxlRXhwYW5kZWQ6XG4gICAgICByZXR1cm4gJysnO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gJyc7XG4gIH1cbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBV0EsU0FBUyxtQ0FBbUM7QUFDNUMsU0FBUyx5QkFBeUI7QUFDbEMsU0FBUyxvQkFBb0I7QUFDN0IsU0FBUyw0QkFBNEI7QUFDckMsU0FBUyxTQUFTO0FBQ2xCLFNBQVMsa0JBQWtCO0FBS3BCLElBQUssY0FBTCxrQkFBS0EsaUJBQUw7QUFFTCxFQUFBQSwwQkFBQTtBQUdBLEVBQUFBLDBCQUFBO0FBR0EsRUFBQUEsMEJBQUE7QUFSVSxTQUFBQTtBQUFBLEdBQUE7QUFtREwsU0FBUyxjQUFjLFFBQW1DO0FBQy9ELFFBQU07QUFBQSxJQUNKLGtCQUFrQjtBQUFBLElBQ2xCO0FBQUEsSUFDQSxTQUFTO0FBQUEsSUFDVCxPQUFPO0FBQUEsSUFDUCxPQUFPO0FBQUEsRUFDVCxJQUFJO0FBQ0osUUFBTSxXQUFXLFlBQVksSUFBSTtBQUNqQyxRQUFNLFVBQVUsR0FBRyxVQUFVLE9BQU8sSUFBSSxJQUFJLFFBQVEsSUFBSSxNQUFNO0FBQUE7QUFBQSw4QkFBb0M7QUFDbEcsUUFBTSxhQUFhLGtCQUFrQixRQUFRLGNBQThCLFVBQVUsR0FBRyx1QkFBdUI7QUFDL0csS0FBRyxVQUFVLHFCQUFnQixFQUFFLFdBQVcsV0FBVyxDQUFDO0FBRXRELFFBQU0sV0FBVyxJQUFJLHFCQUFxQixDQUFDLFlBQXlDO0FBQ2xGLGVBQVcsU0FBUyxTQUFTO0FBQzNCLFVBQUksTUFBTSxnQkFBZ0I7QUFDeEIsaUJBQVMsVUFBVSxNQUFNLE1BQU07QUFDL0IsbUJBQVcsNEJBQThDO0FBQUEsVUFDdkQsYUFBYSxPQUFPO0FBQUEsVUFDcEIsS0FBSyxHQUFHO0FBQUEsVUFDUixhQUFhO0FBQUEsVUFDYixlQUFlLEVBQUUsQ0FBQyxNQUFNLEVBQUUsaUJBQWlCLFFBQVEsV0FBVztBQUFBLFFBQ2hFLENBQUMsQ0FBQztBQUFBLE1BQ0o7QUFBQSxJQUNGO0FBQUEsRUFDRixDQUFDO0FBQ0QsV0FBUyxRQUFRLFVBQVU7QUFFM0IsaUJBQWUsWUFBWSxhQUF5QztBQUNsRSxnQkFBWSxlQUFlO0FBQzNCLFFBQUk7QUFFSixVQUFNLFlBQVksTUFBTSxxQkFBcUIsSUFBSSxZQUFZO0FBQzNELGdCQUFVLE1BQU0sYUFBYSxpQkFBaUIsV0FBVztBQUN6RCxrQkFBWSxlQUFlO0FBQUEsSUFDN0IsQ0FBQztBQUNELGdCQUFZLGVBQWU7QUFFM0IsZ0JBQVk7QUFFWixlQUFXLE1BQU07QUFDakIsT0FBRyxVQUFVLFNBQVMsRUFBRSxXQUFXLFdBQVcsQ0FBQztBQUFBLEVBQ2pEO0FBQ0Y7QUFRTyxTQUFTLGVBQWUsU0FBeUI7QUFDdEQsUUFBTSxRQUFRLFFBQVEsTUFBTSxJQUFJO0FBQ2hDLFFBQU0sZ0JBQWdCLE1BQU0sSUFBSSxDQUFDLFNBQVMsS0FBSyxJQUFJLEVBQUU7QUFDckQsU0FBTyxjQUFjLEtBQUssSUFBSTtBQUNoQztBQVFBLFNBQVMsWUFBWSxNQUEyQjtBQUM5QyxVQUFRLE1BQU07QUFBQSxJQUNaLEtBQUs7QUFDSCxhQUFPO0FBQUEsSUFDVCxLQUFLO0FBQ0gsYUFBTztBQUFBLElBQ1Q7QUFDRSxhQUFPO0FBQUEsRUFDWDtBQUNGOyIsCiAgIm5hbWVzIjogWyJDYWxsb3V0TW9kZSJdCn0K
@@ -4,6 +4,7 @@ if you want to view the source, please visit the github repository of this plugi
4
4
  */
5
5
 
6
6
  (function initEsm() {
7
+ // eslint-disable-next-line obsidianmd/prefer-active-doc -- Actively use globalThis.
7
8
  if (globalThis.process) {
8
9
  return;
9
10
  }
@@ -16,6 +17,7 @@ if you want to view the source, please visit the github repository of this plugi
16
17
  env: {},
17
18
  platform: 'android'
18
19
  };
20
+ // eslint-disable-next-line obsidianmd/prefer-active-doc -- Actively use globalThis.
19
21
  globalThis.process = browserProcess;
20
22
  })();
21
23