obsidian-dev-utils 57.0.0 → 57.0.2

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 (386) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/dist/lib/cjs/abort-controller.cjs +5 -5
  3. package/dist/lib/cjs/array.cjs +3 -3
  4. package/dist/lib/cjs/async-events.cjs +6 -6
  5. package/dist/lib/cjs/async.cjs +6 -6
  6. package/dist/lib/cjs/blob.cjs +3 -3
  7. package/dist/lib/cjs/codemirror/index.cjs +3 -3
  8. package/dist/lib/cjs/codemirror/state-field-spec.cjs +3 -3
  9. package/dist/lib/cjs/css-class.cjs +3 -3
  10. package/dist/lib/cjs/debug-controller.cjs +3 -3
  11. package/dist/lib/cjs/debug.cjs +3 -3
  12. package/dist/lib/cjs/enum.cjs +4 -4
  13. package/dist/lib/cjs/error.cjs +4 -4
  14. package/dist/lib/cjs/function.cjs +3 -3
  15. package/dist/lib/cjs/html-element.cjs +5 -5
  16. package/dist/lib/cjs/index.cjs +3 -3
  17. package/dist/lib/cjs/library.cjs +4 -4
  18. package/dist/lib/cjs/object-utils.cjs +4 -4
  19. package/dist/lib/cjs/obsidian/app.cjs +4 -4
  20. package/dist/lib/cjs/obsidian/async-with-notice.cjs +7 -7
  21. package/dist/lib/cjs/obsidian/attachment-path.cjs +3 -3
  22. package/dist/lib/cjs/obsidian/backlink.cjs +3 -3
  23. package/dist/lib/cjs/obsidian/callout.cjs +3 -3
  24. package/dist/lib/cjs/obsidian/code-block-markdown-information.cjs +3 -3
  25. package/dist/lib/cjs/obsidian/command-handlers/abstract-file-command-handler.cjs +3 -3
  26. package/dist/lib/cjs/obsidian/command-handlers/app-active-file-provider.cjs +3 -3
  27. package/dist/lib/cjs/obsidian/command-handlers/app-menu-event-registrar.cjs +3 -3
  28. package/dist/lib/cjs/obsidian/command-handlers/command-handler-component.cjs +3 -3
  29. package/dist/lib/cjs/obsidian/command-handlers/command-handler.cjs +3 -3
  30. package/dist/lib/cjs/obsidian/command-handlers/editor-command-handler.cjs +3 -3
  31. package/dist/lib/cjs/obsidian/command-handlers/file-command-handler.cjs +3 -3
  32. package/dist/lib/cjs/obsidian/command-handlers/folder-command-handler.cjs +3 -3
  33. package/dist/lib/cjs/obsidian/command-handlers/global-command-handler.cjs +3 -3
  34. package/dist/lib/cjs/obsidian/command-handlers/index.cjs +3 -3
  35. package/dist/lib/cjs/obsidian/command-handlers/open-settings-command-handler.cjs +3 -3
  36. package/dist/lib/cjs/obsidian/components/all-windows-event-handler.cjs +3 -3
  37. package/dist/lib/cjs/obsidian/components/async-component.cjs +3 -3
  38. package/dist/lib/cjs/obsidian/components/async-events-component.cjs +3 -3
  39. package/dist/lib/cjs/obsidian/components/index.cjs +3 -3
  40. package/dist/lib/cjs/obsidian/components/setting-components/checkbox-component.cjs +3 -3
  41. package/dist/lib/cjs/obsidian/components/setting-components/code-highlighter-component.cjs +5 -5
  42. package/dist/lib/cjs/obsidian/components/setting-components/date-component.cjs +3 -3
  43. package/dist/lib/cjs/obsidian/components/setting-components/date-time-component.cjs +3 -3
  44. package/dist/lib/cjs/obsidian/components/setting-components/email-component.cjs +3 -3
  45. package/dist/lib/cjs/obsidian/components/setting-components/file-component.cjs +3 -3
  46. package/dist/lib/cjs/obsidian/components/setting-components/index.cjs +3 -3
  47. package/dist/lib/cjs/obsidian/components/setting-components/month-component.cjs +3 -3
  48. package/dist/lib/cjs/obsidian/components/setting-components/multiple-dropdown-component.cjs +3 -3
  49. package/dist/lib/cjs/obsidian/components/setting-components/multiple-email-component.cjs +3 -3
  50. package/dist/lib/cjs/obsidian/components/setting-components/multiple-file-component.cjs +3 -3
  51. package/dist/lib/cjs/obsidian/components/setting-components/multiple-text-component.cjs +3 -3
  52. package/dist/lib/cjs/obsidian/components/setting-components/number-component.cjs +3 -3
  53. package/dist/lib/cjs/obsidian/components/setting-components/password-component.cjs +3 -3
  54. package/dist/lib/cjs/obsidian/components/setting-components/setting-component-wrapper.cjs +3 -3
  55. package/dist/lib/cjs/obsidian/components/setting-components/telephone-component.cjs +3 -3
  56. package/dist/lib/cjs/obsidian/components/setting-components/text-based-component.cjs +3 -3
  57. package/dist/lib/cjs/obsidian/components/setting-components/time-component.cjs +3 -3
  58. package/dist/lib/cjs/obsidian/components/setting-components/tri-state-checkbox-component.cjs +3 -3
  59. package/dist/lib/cjs/obsidian/components/setting-components/typed-dropdown-component.cjs +3 -3
  60. package/dist/lib/cjs/obsidian/components/setting-components/typed-multiple-dropdown-component.cjs +3 -3
  61. package/dist/lib/cjs/obsidian/components/setting-components/typed-range-text-component.cjs +3 -3
  62. package/dist/lib/cjs/obsidian/components/setting-components/typed-text-component.cjs +3 -3
  63. package/dist/lib/cjs/obsidian/components/setting-components/url-component.cjs +3 -3
  64. package/dist/lib/cjs/obsidian/components/setting-components/validator-component.cjs +5 -5
  65. package/dist/lib/cjs/obsidian/components/setting-components/value-component-with-change-tracking.cjs +3 -3
  66. package/dist/lib/cjs/obsidian/components/setting-components/week-component.cjs +3 -3
  67. package/dist/lib/cjs/obsidian/constructors/getDomEventsHandlersConstructor.cjs +3 -3
  68. package/dist/lib/cjs/obsidian/constructors/index.cjs +3 -3
  69. package/dist/lib/cjs/obsidian/dataview-link.cjs +3 -3
  70. package/dist/lib/cjs/obsidian/dataview.cjs +3 -3
  71. package/dist/lib/cjs/obsidian/editor.cjs +3 -3
  72. package/dist/lib/cjs/obsidian/file-change.cjs +4 -4
  73. package/dist/lib/cjs/obsidian/file-manager.cjs +3 -3
  74. package/dist/lib/cjs/obsidian/file-system.cjs +4 -4
  75. package/dist/lib/cjs/obsidian/frontmatter-link-cache-with-offsets.cjs +3 -3
  76. package/dist/lib/cjs/obsidian/frontmatter.cjs +3 -3
  77. package/dist/lib/cjs/obsidian/i18n/custom-type-options.cjs +3 -3
  78. package/dist/lib/cjs/obsidian/i18n/default-translations.cjs +3 -3
  79. package/dist/lib/cjs/obsidian/i18n/i18n.cjs +3 -3
  80. package/dist/lib/cjs/obsidian/i18n/index.cjs +3 -3
  81. package/dist/lib/cjs/obsidian/i18n/locales/en.cjs +3 -3
  82. package/dist/lib/cjs/obsidian/i18n/locales/index.cjs +3 -3
  83. package/dist/lib/cjs/obsidian/i18n/locales/translations-map.cjs +3 -3
  84. package/dist/lib/cjs/obsidian/index.cjs +3 -3
  85. package/dist/lib/cjs/obsidian/is-in-obsidian.cjs +3 -3
  86. package/dist/lib/cjs/obsidian/link.cjs +3 -3
  87. package/dist/lib/cjs/obsidian/logger.cjs +3 -3
  88. package/dist/lib/cjs/obsidian/loop.cjs +3 -3
  89. package/dist/lib/cjs/obsidian/markdown-code-block-processor.cjs +3 -3
  90. package/dist/lib/cjs/obsidian/markdown-view.cjs +3 -3
  91. package/dist/lib/cjs/obsidian/markdown.cjs +3 -3
  92. package/dist/lib/cjs/obsidian/metadata-cache.cjs +3 -3
  93. package/dist/lib/cjs/obsidian/modals/alert.cjs +3 -3
  94. package/dist/lib/cjs/obsidian/modals/confirm.cjs +3 -3
  95. package/dist/lib/cjs/obsidian/modals/index.cjs +3 -3
  96. package/dist/lib/cjs/obsidian/modals/modal.cjs +3 -3
  97. package/dist/lib/cjs/obsidian/modals/prompt.cjs +3 -3
  98. package/dist/lib/cjs/obsidian/modals/select-item.cjs +3 -3
  99. package/dist/lib/cjs/obsidian/monkey-around.cjs +3 -3
  100. package/dist/lib/cjs/obsidian/obsidian-settings.cjs +3 -3
  101. package/dist/lib/cjs/obsidian/pdf.cjs +3 -3
  102. package/dist/lib/cjs/obsidian/plugin/components/abort-signal-component.cjs +3 -3
  103. package/dist/lib/cjs/obsidian/plugin/components/async-error-handler-component.cjs +3 -3
  104. package/dist/lib/cjs/obsidian/plugin/components/console-debug-component.cjs +3 -3
  105. package/dist/lib/cjs/obsidian/plugin/components/i18n-component.cjs +3 -3
  106. package/dist/lib/cjs/obsidian/plugin/components/index.cjs +3 -3
  107. package/dist/lib/cjs/obsidian/plugin/components/lifecycle-events-component.cjs +3 -3
  108. package/dist/lib/cjs/obsidian/plugin/components/plugin-context-component.cjs +3 -3
  109. package/dist/lib/cjs/obsidian/plugin/components/plugin-notice-component.cjs +3 -3
  110. package/dist/lib/cjs/obsidian/plugin/components/plugin-settings-component.cjs +4 -4
  111. package/dist/lib/cjs/obsidian/plugin/components/plugin-settings-tab-component.cjs +3 -3
  112. package/dist/lib/cjs/obsidian/plugin/index.cjs +3 -3
  113. package/dist/lib/cjs/obsidian/plugin/obsidian-plugin-repo-paths.cjs +3 -3
  114. package/dist/lib/cjs/obsidian/plugin/path-settings.cjs +3 -3
  115. package/dist/lib/cjs/obsidian/plugin/plugin-context.cjs +6 -6
  116. package/dist/lib/cjs/obsidian/plugin/plugin-id.cjs +3 -3
  117. package/dist/lib/cjs/obsidian/plugin/plugin-settings-tab.cjs +6 -6
  118. package/dist/lib/cjs/obsidian/plugin/plugin.cjs +3 -3
  119. package/dist/lib/cjs/obsidian/queue.cjs +3 -3
  120. package/dist/lib/cjs/obsidian/react/app-context.cjs +3 -3
  121. package/dist/lib/cjs/obsidian/react/index.cjs +3 -3
  122. package/dist/lib/cjs/obsidian/reference.cjs +3 -3
  123. package/dist/lib/cjs/obsidian/rename-delete-handler.cjs +3 -3
  124. package/dist/lib/cjs/obsidian/resource-url.cjs +3 -3
  125. package/dist/lib/cjs/obsidian/setting-ex.cjs +3 -3
  126. package/dist/lib/cjs/obsidian/setting-group-ex.cjs +3 -3
  127. package/dist/lib/cjs/obsidian/validation.cjs +3 -3
  128. package/dist/lib/cjs/obsidian/vault-delete.cjs +3 -3
  129. package/dist/lib/cjs/obsidian/vault.cjs +3 -3
  130. package/dist/lib/cjs/obsidian/workspace.cjs +3 -3
  131. package/dist/lib/cjs/path.cjs +3 -3
  132. package/dist/lib/cjs/reg-exp.cjs +3 -3
  133. package/dist/lib/cjs/script-utils/build.cjs +3 -3
  134. package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/change-extension-plugin.cjs +3 -3
  135. package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/copy-to-obsidian-plugins-folder-plugin.cjs +3 -3
  136. package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/custom-esbuild-options-plugin.cjs +3 -3
  137. package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/dependency.cjs +3 -3
  138. package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/fix-esm-plugin.cjs +3 -3
  139. package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/fix-source-maps-plugin.cjs +3 -3
  140. package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/index.cjs +3 -3
  141. package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/obsidian-plugin-builder.cjs +3 -3
  142. package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/preprocess-plugin.cjs +4 -4
  143. package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/rename-css-plugin.cjs +3 -3
  144. package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/svelte-wrapper-plugin.cjs +3 -3
  145. package/dist/lib/cjs/script-utils/bundlers/esbuild.cjs +3 -3
  146. package/dist/lib/cjs/script-utils/bundlers/index.cjs +3 -3
  147. package/dist/lib/cjs/script-utils/cli-utils.cjs +3 -3
  148. package/dist/lib/cjs/script-utils/code-generator.cjs +3 -3
  149. package/dist/lib/cjs/script-utils/commitlint-config.cjs +3 -3
  150. package/dist/lib/cjs/script-utils/exec.cjs +7 -7
  151. package/dist/lib/cjs/script-utils/exec.d.cts +7 -7
  152. package/dist/lib/cjs/script-utils/formatters/dprint.cjs +3 -3
  153. package/dist/lib/cjs/script-utils/formatters/index.cjs +3 -3
  154. package/dist/lib/cjs/script-utils/fs.cjs +3 -3
  155. package/dist/lib/cjs/script-utils/index.cjs +3 -3
  156. package/dist/lib/cjs/script-utils/json.cjs +3 -3
  157. package/dist/lib/cjs/script-utils/linters/cspell.cjs +3 -3
  158. package/dist/lib/cjs/script-utils/linters/eslint-config.cjs +4 -4
  159. package/dist/lib/cjs/script-utils/linters/eslint-rules/index.cjs +3 -3
  160. package/dist/lib/cjs/script-utils/linters/eslint-rules/no-async-callback-to-unsafe-return.cjs +4 -4
  161. package/dist/lib/cjs/script-utils/linters/eslint-rules/no-used-underscore-variables.cjs +3 -3
  162. package/dist/lib/cjs/script-utils/linters/eslint-rules/obsidian-dev-utils-plugin.cjs +3 -3
  163. package/dist/lib/cjs/script-utils/linters/eslint-rules/rule-tester-helper.cjs +3 -3
  164. package/dist/lib/cjs/script-utils/linters/eslint.cjs +3 -3
  165. package/dist/lib/cjs/script-utils/linters/index.cjs +3 -3
  166. package/dist/lib/cjs/script-utils/linters/markdownlint-cli2-config.cjs +3 -3
  167. package/dist/lib/cjs/script-utils/linters/markdownlint.cjs +3 -3
  168. package/dist/lib/cjs/script-utils/nano-staged-config.cjs +3 -3
  169. package/dist/lib/cjs/script-utils/npm-publish.cjs +3 -3
  170. package/dist/lib/cjs/script-utils/npm-run.cjs +3 -3
  171. package/dist/lib/cjs/script-utils/npm.cjs +3 -3
  172. package/dist/lib/cjs/script-utils/obsidian-dev-utils-repo-paths.cjs +3 -3
  173. package/dist/lib/cjs/script-utils/root.cjs +3 -3
  174. package/dist/lib/cjs/script-utils/test-runners/index.cjs +3 -3
  175. package/dist/lib/cjs/script-utils/test-runners/vitest.cjs +3 -3
  176. package/dist/lib/cjs/script-utils/version.cjs +3 -3
  177. package/dist/lib/cjs/strict-proxy.cjs +3 -3
  178. package/dist/lib/cjs/string.cjs +3 -3
  179. package/dist/lib/cjs/transformers/date-transformer.cjs +3 -3
  180. package/dist/lib/cjs/transformers/duration-transformer.cjs +3 -3
  181. package/dist/lib/cjs/transformers/group-transformer.cjs +3 -3
  182. package/dist/lib/cjs/transformers/index.cjs +3 -3
  183. package/dist/lib/cjs/transformers/map-transformer.cjs +3 -3
  184. package/dist/lib/cjs/transformers/set-transformer.cjs +3 -3
  185. package/dist/lib/cjs/transformers/skip-private-property-transformer.cjs +3 -3
  186. package/dist/lib/cjs/transformers/transformer.cjs +3 -3
  187. package/dist/lib/cjs/transformers/two-way-map-transformer.cjs +3 -3
  188. package/dist/lib/cjs/transformers/typed-transformer.cjs +3 -3
  189. package/dist/lib/cjs/two-way-map.cjs +3 -3
  190. package/dist/lib/cjs/type-guards.cjs +3 -3
  191. package/dist/lib/cjs/type.cjs +3 -3
  192. package/dist/lib/cjs/url.cjs +3 -3
  193. package/dist/lib/cjs/value-provider.cjs +3 -3
  194. package/dist/lib/esm/abort-controller.mjs +4 -4
  195. package/dist/lib/esm/array.mjs +2 -2
  196. package/dist/lib/esm/async-events.mjs +5 -5
  197. package/dist/lib/esm/async.mjs +5 -5
  198. package/dist/lib/esm/blob.mjs +2 -2
  199. package/dist/lib/esm/codemirror/index.mjs +2 -2
  200. package/dist/lib/esm/codemirror/state-field-spec.mjs +2 -2
  201. package/dist/lib/esm/css-class.mjs +2 -2
  202. package/dist/lib/esm/debug-controller.mjs +2 -2
  203. package/dist/lib/esm/debug.mjs +2 -2
  204. package/dist/lib/esm/enum.mjs +3 -3
  205. package/dist/lib/esm/error.mjs +3 -3
  206. package/dist/lib/esm/function.mjs +2 -2
  207. package/dist/lib/esm/html-element.mjs +4 -4
  208. package/dist/lib/esm/index.mjs +2 -2
  209. package/dist/lib/esm/library.mjs +3 -3
  210. package/dist/lib/esm/object-utils.mjs +3 -3
  211. package/dist/lib/esm/obsidian/app.mjs +3 -3
  212. package/dist/lib/esm/obsidian/async-with-notice.mjs +6 -6
  213. package/dist/lib/esm/obsidian/attachment-path.mjs +2 -2
  214. package/dist/lib/esm/obsidian/backlink.mjs +2 -2
  215. package/dist/lib/esm/obsidian/callout.mjs +2 -2
  216. package/dist/lib/esm/obsidian/code-block-markdown-information.mjs +2 -2
  217. package/dist/lib/esm/obsidian/command-handlers/abstract-file-command-handler.mjs +2 -2
  218. package/dist/lib/esm/obsidian/command-handlers/app-active-file-provider.mjs +2 -2
  219. package/dist/lib/esm/obsidian/command-handlers/app-menu-event-registrar.mjs +2 -2
  220. package/dist/lib/esm/obsidian/command-handlers/command-handler-component.mjs +2 -2
  221. package/dist/lib/esm/obsidian/command-handlers/command-handler.mjs +2 -2
  222. package/dist/lib/esm/obsidian/command-handlers/editor-command-handler.mjs +2 -2
  223. package/dist/lib/esm/obsidian/command-handlers/file-command-handler.mjs +2 -2
  224. package/dist/lib/esm/obsidian/command-handlers/folder-command-handler.mjs +2 -2
  225. package/dist/lib/esm/obsidian/command-handlers/global-command-handler.mjs +2 -2
  226. package/dist/lib/esm/obsidian/command-handlers/index.mjs +2 -2
  227. package/dist/lib/esm/obsidian/command-handlers/open-settings-command-handler.mjs +2 -2
  228. package/dist/lib/esm/obsidian/components/all-windows-event-handler.mjs +2 -2
  229. package/dist/lib/esm/obsidian/components/async-component.mjs +2 -2
  230. package/dist/lib/esm/obsidian/components/async-events-component.mjs +2 -2
  231. package/dist/lib/esm/obsidian/components/index.mjs +2 -2
  232. package/dist/lib/esm/obsidian/components/setting-components/checkbox-component.mjs +2 -2
  233. package/dist/lib/esm/obsidian/components/setting-components/code-highlighter-component.mjs +4 -4
  234. package/dist/lib/esm/obsidian/components/setting-components/date-component.mjs +2 -2
  235. package/dist/lib/esm/obsidian/components/setting-components/date-time-component.mjs +2 -2
  236. package/dist/lib/esm/obsidian/components/setting-components/email-component.mjs +2 -2
  237. package/dist/lib/esm/obsidian/components/setting-components/file-component.mjs +2 -2
  238. package/dist/lib/esm/obsidian/components/setting-components/index.mjs +2 -2
  239. package/dist/lib/esm/obsidian/components/setting-components/month-component.mjs +2 -2
  240. package/dist/lib/esm/obsidian/components/setting-components/multiple-dropdown-component.mjs +2 -2
  241. package/dist/lib/esm/obsidian/components/setting-components/multiple-email-component.mjs +2 -2
  242. package/dist/lib/esm/obsidian/components/setting-components/multiple-file-component.mjs +2 -2
  243. package/dist/lib/esm/obsidian/components/setting-components/multiple-text-component.mjs +2 -2
  244. package/dist/lib/esm/obsidian/components/setting-components/number-component.mjs +2 -2
  245. package/dist/lib/esm/obsidian/components/setting-components/password-component.mjs +2 -2
  246. package/dist/lib/esm/obsidian/components/setting-components/setting-component-wrapper.mjs +2 -2
  247. package/dist/lib/esm/obsidian/components/setting-components/telephone-component.mjs +2 -2
  248. package/dist/lib/esm/obsidian/components/setting-components/text-based-component.mjs +2 -2
  249. package/dist/lib/esm/obsidian/components/setting-components/time-component.mjs +2 -2
  250. package/dist/lib/esm/obsidian/components/setting-components/tri-state-checkbox-component.mjs +2 -2
  251. package/dist/lib/esm/obsidian/components/setting-components/typed-dropdown-component.mjs +2 -2
  252. package/dist/lib/esm/obsidian/components/setting-components/typed-multiple-dropdown-component.mjs +2 -2
  253. package/dist/lib/esm/obsidian/components/setting-components/typed-range-text-component.mjs +2 -2
  254. package/dist/lib/esm/obsidian/components/setting-components/typed-text-component.mjs +2 -2
  255. package/dist/lib/esm/obsidian/components/setting-components/url-component.mjs +2 -2
  256. package/dist/lib/esm/obsidian/components/setting-components/validator-component.mjs +4 -4
  257. package/dist/lib/esm/obsidian/components/setting-components/value-component-with-change-tracking.mjs +2 -2
  258. package/dist/lib/esm/obsidian/components/setting-components/week-component.mjs +2 -2
  259. package/dist/lib/esm/obsidian/constructors/getDomEventsHandlersConstructor.mjs +2 -2
  260. package/dist/lib/esm/obsidian/constructors/index.mjs +2 -2
  261. package/dist/lib/esm/obsidian/dataview-link.mjs +2 -2
  262. package/dist/lib/esm/obsidian/dataview.mjs +2 -2
  263. package/dist/lib/esm/obsidian/editor.mjs +2 -2
  264. package/dist/lib/esm/obsidian/file-change.mjs +3 -3
  265. package/dist/lib/esm/obsidian/file-manager.mjs +2 -2
  266. package/dist/lib/esm/obsidian/file-system.mjs +3 -3
  267. package/dist/lib/esm/obsidian/frontmatter-link-cache-with-offsets.mjs +2 -2
  268. package/dist/lib/esm/obsidian/frontmatter.mjs +2 -2
  269. package/dist/lib/esm/obsidian/i18n/custom-type-options.mjs +2 -2
  270. package/dist/lib/esm/obsidian/i18n/default-translations.mjs +2 -2
  271. package/dist/lib/esm/obsidian/i18n/i18n.mjs +2 -2
  272. package/dist/lib/esm/obsidian/i18n/index.mjs +2 -2
  273. package/dist/lib/esm/obsidian/i18n/locales/en.mjs +2 -2
  274. package/dist/lib/esm/obsidian/i18n/locales/index.mjs +2 -2
  275. package/dist/lib/esm/obsidian/i18n/locales/translations-map.mjs +2 -2
  276. package/dist/lib/esm/obsidian/index.mjs +2 -2
  277. package/dist/lib/esm/obsidian/is-in-obsidian.mjs +2 -2
  278. package/dist/lib/esm/obsidian/link.mjs +2 -2
  279. package/dist/lib/esm/obsidian/logger.mjs +2 -2
  280. package/dist/lib/esm/obsidian/loop.mjs +2 -2
  281. package/dist/lib/esm/obsidian/markdown-code-block-processor.mjs +2 -2
  282. package/dist/lib/esm/obsidian/markdown-view.mjs +2 -2
  283. package/dist/lib/esm/obsidian/markdown.mjs +2 -2
  284. package/dist/lib/esm/obsidian/metadata-cache.mjs +2 -2
  285. package/dist/lib/esm/obsidian/modals/alert.mjs +2 -2
  286. package/dist/lib/esm/obsidian/modals/confirm.mjs +2 -2
  287. package/dist/lib/esm/obsidian/modals/index.mjs +2 -2
  288. package/dist/lib/esm/obsidian/modals/modal.mjs +2 -2
  289. package/dist/lib/esm/obsidian/modals/prompt.mjs +2 -2
  290. package/dist/lib/esm/obsidian/modals/select-item.mjs +2 -2
  291. package/dist/lib/esm/obsidian/monkey-around.mjs +2 -2
  292. package/dist/lib/esm/obsidian/obsidian-settings.mjs +2 -2
  293. package/dist/lib/esm/obsidian/pdf.mjs +2 -2
  294. package/dist/lib/esm/obsidian/plugin/components/abort-signal-component.mjs +2 -2
  295. package/dist/lib/esm/obsidian/plugin/components/async-error-handler-component.mjs +2 -2
  296. package/dist/lib/esm/obsidian/plugin/components/console-debug-component.mjs +2 -2
  297. package/dist/lib/esm/obsidian/plugin/components/i18n-component.mjs +2 -2
  298. package/dist/lib/esm/obsidian/plugin/components/index.mjs +2 -2
  299. package/dist/lib/esm/obsidian/plugin/components/lifecycle-events-component.mjs +2 -2
  300. package/dist/lib/esm/obsidian/plugin/components/plugin-context-component.mjs +2 -2
  301. package/dist/lib/esm/obsidian/plugin/components/plugin-notice-component.mjs +2 -2
  302. package/dist/lib/esm/obsidian/plugin/components/plugin-settings-component.mjs +3 -3
  303. package/dist/lib/esm/obsidian/plugin/components/plugin-settings-tab-component.mjs +2 -2
  304. package/dist/lib/esm/obsidian/plugin/index.mjs +2 -2
  305. package/dist/lib/esm/obsidian/plugin/obsidian-plugin-repo-paths.mjs +2 -2
  306. package/dist/lib/esm/obsidian/plugin/path-settings.mjs +2 -2
  307. package/dist/lib/esm/obsidian/plugin/plugin-context.mjs +5 -5
  308. package/dist/lib/esm/obsidian/plugin/plugin-id.mjs +2 -2
  309. package/dist/lib/esm/obsidian/plugin/plugin-settings-tab.mjs +5 -5
  310. package/dist/lib/esm/obsidian/plugin/plugin.mjs +2 -2
  311. package/dist/lib/esm/obsidian/queue.mjs +2 -2
  312. package/dist/lib/esm/obsidian/react/app-context.mjs +2 -2
  313. package/dist/lib/esm/obsidian/react/index.mjs +2 -2
  314. package/dist/lib/esm/obsidian/reference.mjs +2 -2
  315. package/dist/lib/esm/obsidian/rename-delete-handler.mjs +2 -2
  316. package/dist/lib/esm/obsidian/resource-url.mjs +2 -2
  317. package/dist/lib/esm/obsidian/setting-ex.mjs +2 -2
  318. package/dist/lib/esm/obsidian/setting-group-ex.mjs +2 -2
  319. package/dist/lib/esm/obsidian/validation.mjs +2 -2
  320. package/dist/lib/esm/obsidian/vault-delete.mjs +2 -2
  321. package/dist/lib/esm/obsidian/vault.mjs +2 -2
  322. package/dist/lib/esm/obsidian/workspace.mjs +2 -2
  323. package/dist/lib/esm/path.mjs +2 -2
  324. package/dist/lib/esm/reg-exp.mjs +2 -2
  325. package/dist/lib/esm/script-utils/build.mjs +2 -2
  326. package/dist/lib/esm/script-utils/bundlers/esbuild-impl/change-extension-plugin.mjs +2 -2
  327. package/dist/lib/esm/script-utils/bundlers/esbuild-impl/copy-to-obsidian-plugins-folder-plugin.mjs +2 -2
  328. package/dist/lib/esm/script-utils/bundlers/esbuild-impl/custom-esbuild-options-plugin.mjs +2 -2
  329. package/dist/lib/esm/script-utils/bundlers/esbuild-impl/dependency.mjs +2 -2
  330. package/dist/lib/esm/script-utils/bundlers/esbuild-impl/fix-esm-plugin.mjs +2 -2
  331. package/dist/lib/esm/script-utils/bundlers/esbuild-impl/fix-source-maps-plugin.mjs +2 -2
  332. package/dist/lib/esm/script-utils/bundlers/esbuild-impl/index.mjs +2 -2
  333. package/dist/lib/esm/script-utils/bundlers/esbuild-impl/obsidian-plugin-builder.mjs +2 -2
  334. package/dist/lib/esm/script-utils/bundlers/esbuild-impl/preprocess-plugin.mjs +3 -3
  335. package/dist/lib/esm/script-utils/bundlers/esbuild-impl/rename-css-plugin.mjs +2 -2
  336. package/dist/lib/esm/script-utils/bundlers/esbuild-impl/svelte-wrapper-plugin.mjs +2 -2
  337. package/dist/lib/esm/script-utils/bundlers/esbuild.mjs +2 -2
  338. package/dist/lib/esm/script-utils/bundlers/index.mjs +2 -2
  339. package/dist/lib/esm/script-utils/cli-utils.mjs +2 -2
  340. package/dist/lib/esm/script-utils/code-generator.mjs +2 -2
  341. package/dist/lib/esm/script-utils/commitlint-config.mjs +2 -2
  342. package/dist/lib/esm/script-utils/exec.d.mts +7 -7
  343. package/dist/lib/esm/script-utils/exec.mjs +6 -6
  344. package/dist/lib/esm/script-utils/formatters/dprint.mjs +2 -2
  345. package/dist/lib/esm/script-utils/formatters/index.mjs +2 -2
  346. package/dist/lib/esm/script-utils/fs.mjs +2 -2
  347. package/dist/lib/esm/script-utils/index.mjs +2 -2
  348. package/dist/lib/esm/script-utils/json.mjs +2 -2
  349. package/dist/lib/esm/script-utils/linters/cspell.mjs +2 -2
  350. package/dist/lib/esm/script-utils/linters/eslint-config.mjs +3 -3
  351. package/dist/lib/esm/script-utils/linters/eslint-rules/index.mjs +2 -2
  352. package/dist/lib/esm/script-utils/linters/eslint-rules/no-async-callback-to-unsafe-return.mjs +3 -3
  353. package/dist/lib/esm/script-utils/linters/eslint-rules/no-used-underscore-variables.mjs +2 -2
  354. package/dist/lib/esm/script-utils/linters/eslint-rules/obsidian-dev-utils-plugin.mjs +2 -2
  355. package/dist/lib/esm/script-utils/linters/eslint-rules/rule-tester-helper.mjs +2 -2
  356. package/dist/lib/esm/script-utils/linters/eslint.mjs +2 -2
  357. package/dist/lib/esm/script-utils/linters/index.mjs +2 -2
  358. package/dist/lib/esm/script-utils/linters/markdownlint-cli2-config.mjs +2 -2
  359. package/dist/lib/esm/script-utils/linters/markdownlint.mjs +2 -2
  360. package/dist/lib/esm/script-utils/nano-staged-config.mjs +2 -2
  361. package/dist/lib/esm/script-utils/npm-publish.mjs +2 -2
  362. package/dist/lib/esm/script-utils/npm-run.mjs +2 -2
  363. package/dist/lib/esm/script-utils/npm.mjs +2 -2
  364. package/dist/lib/esm/script-utils/obsidian-dev-utils-repo-paths.mjs +2 -2
  365. package/dist/lib/esm/script-utils/root.mjs +2 -2
  366. package/dist/lib/esm/script-utils/test-runners/index.mjs +2 -2
  367. package/dist/lib/esm/script-utils/test-runners/vitest.mjs +2 -2
  368. package/dist/lib/esm/script-utils/version.mjs +2 -2
  369. package/dist/lib/esm/strict-proxy.mjs +2 -2
  370. package/dist/lib/esm/string.mjs +2 -2
  371. package/dist/lib/esm/transformers/date-transformer.mjs +2 -2
  372. package/dist/lib/esm/transformers/duration-transformer.mjs +2 -2
  373. package/dist/lib/esm/transformers/group-transformer.mjs +2 -2
  374. package/dist/lib/esm/transformers/index.mjs +2 -2
  375. package/dist/lib/esm/transformers/map-transformer.mjs +2 -2
  376. package/dist/lib/esm/transformers/set-transformer.mjs +2 -2
  377. package/dist/lib/esm/transformers/skip-private-property-transformer.mjs +2 -2
  378. package/dist/lib/esm/transformers/transformer.mjs +2 -2
  379. package/dist/lib/esm/transformers/two-way-map-transformer.mjs +2 -2
  380. package/dist/lib/esm/transformers/typed-transformer.mjs +2 -2
  381. package/dist/lib/esm/two-way-map.mjs +2 -2
  382. package/dist/lib/esm/type-guards.mjs +2 -2
  383. package/dist/lib/esm/type.mjs +2 -2
  384. package/dist/lib/esm/url.mjs +2 -2
  385. package/dist/lib/esm/value-provider.mjs +2 -2
  386. package/package.json +4 -1
@@ -4,7 +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
+ // eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
8
8
  if (globalThis.process) {
9
9
  return;
10
10
  }
@@ -17,7 +17,7 @@ if you want to view the source, please visit the github repository of this plugi
17
17
  env: {},
18
18
  platform: 'android'
19
19
  };
20
- // eslint-disable-next-line obsidianmd/prefer-active-doc -- Actively use globalThis.
20
+ // eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
21
21
  globalThis.process = browserProcess;
22
22
  })();
23
23
 
@@ -4,7 +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
+ // eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
8
8
  if (globalThis.process) {
9
9
  return;
10
10
  }
@@ -17,7 +17,7 @@ if you want to view the source, please visit the github repository of this plugi
17
17
  env: {},
18
18
  platform: 'android'
19
19
  };
20
- // eslint-disable-next-line obsidianmd/prefer-active-doc -- Actively use globalThis.
20
+ // eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
21
21
  globalThis.process = browserProcess;
22
22
  })();
23
23
 
@@ -4,7 +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
+ // eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
8
8
  if (globalThis.process) {
9
9
  return;
10
10
  }
@@ -17,7 +17,7 @@ if you want to view the source, please visit the github repository of this plugi
17
17
  env: {},
18
18
  platform: 'android'
19
19
  };
20
- // eslint-disable-next-line obsidianmd/prefer-active-doc -- Actively use globalThis.
20
+ // eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
21
21
  globalThis.process = browserProcess;
22
22
  })();
23
23
 
@@ -4,7 +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
+ // eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
8
8
  if (globalThis.process) {
9
9
  return;
10
10
  }
@@ -17,7 +17,7 @@ if you want to view the source, please visit the github repository of this plugi
17
17
  env: {},
18
18
  platform: 'android'
19
19
  };
20
- // eslint-disable-next-line obsidianmd/prefer-active-doc -- Actively use globalThis.
20
+ // eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
21
21
  globalThis.process = browserProcess;
22
22
  })();
23
23
 
@@ -4,7 +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
+ // eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
8
8
  if (globalThis.process) {
9
9
  return;
10
10
  }
@@ -17,7 +17,7 @@ if you want to view the source, please visit the github repository of this plugi
17
17
  env: {},
18
18
  platform: 'android'
19
19
  };
20
- // eslint-disable-next-line obsidianmd/prefer-active-doc -- Actively use globalThis.
20
+ // eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
21
21
  globalThis.process = browserProcess;
22
22
  })();
23
23
 
@@ -4,7 +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
+ // eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
8
8
  if (globalThis.process) {
9
9
  return;
10
10
  }
@@ -17,7 +17,7 @@ if you want to view the source, please visit the github repository of this plugi
17
17
  env: {},
18
18
  platform: 'android'
19
19
  };
20
- // eslint-disable-next-line obsidianmd/prefer-active-doc -- Actively use globalThis.
20
+ // eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
21
21
  globalThis.process = browserProcess;
22
22
  })();
23
23
 
@@ -4,7 +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
+ // eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
8
8
  if (globalThis.process) {
9
9
  return;
10
10
  }
@@ -17,7 +17,7 @@ if you want to view the source, please visit the github repository of this plugi
17
17
  env: {},
18
18
  platform: 'android'
19
19
  };
20
- // eslint-disable-next-line obsidianmd/prefer-active-doc -- Actively use globalThis.
20
+ // eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
21
21
  globalThis.process = browserProcess;
22
22
  })();
23
23
 
@@ -4,7 +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
+ // eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
8
8
  if (globalThis.process) {
9
9
  return;
10
10
  }
@@ -17,7 +17,7 @@ if you want to view the source, please visit the github repository of this plugi
17
17
  env: {},
18
18
  platform: 'android'
19
19
  };
20
- // eslint-disable-next-line obsidianmd/prefer-active-doc -- Actively use globalThis.
20
+ // eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
21
21
  globalThis.process = browserProcess;
22
22
  })();
23
23
 
@@ -4,7 +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
+ // eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
8
8
  if (globalThis.process) {
9
9
  return;
10
10
  }
@@ -17,7 +17,7 @@ if you want to view the source, please visit the github repository of this plugi
17
17
  env: {},
18
18
  platform: 'android'
19
19
  };
20
- // eslint-disable-next-line obsidianmd/prefer-active-doc -- Actively use globalThis.
20
+ // eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
21
21
  globalThis.process = browserProcess;
22
22
  })();
23
23
 
@@ -184,4 +184,4 @@ function initEsm() {
184
184
  export {
185
185
  preprocessPlugin
186
186
  };
187
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL3NjcmlwdC11dGlscy9idW5kbGVycy9lc2J1aWxkLWltcGwvcHJlcHJvY2Vzcy1wbHVnaW4udHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBUaGlzIG1vZHVsZSBkZWZpbmVzIGEgY3VzdG9tIGVzYnVpbGQgcGx1Z2luIHRoYXQgcHJlcHJvY2Vzc2VzIEphdmFTY3JpcHQgYW5kIFR5cGVTY3JpcHQgZmlsZXMuXG4gKlxuICogQHJlbWFya3NcbiAqIFdlIGNhbm5vdCB1c2UgYC5gIGluc3RlYWQgb2YgYChkb3QpYCBpbiB0aGUgYWJvdmUgZGVzY3JpcHRpb24gYmVjYXVzZSB0aGUgZmlsZSBpdHNlbGYgaXMgcHJlcHJvY2Vzc2VkIHdpdGggdGhlIHNhbWUgcnVsZS5cbiAqL1xuXG4vKiB2OCBpZ25vcmUgc3RhcnQgLS0gZXNidWlsZCBwbHVnaW4gdGhhdCBwcmVwcm9jZXNzZXMgc291cmNlIGZpbGVzIHdpdGggaW1wb3J0Lm1ldGEudXJsIHNoaW1zIGFuZCBwcm9jZXNzIHBvbHlmaWxsczsgcmVxdWlyZXMgYSBsaXZlIGVzYnVpbGQgY29udGV4dC4gKi9cblxuaW1wb3J0IHR5cGUgeyBQbHVnaW4gfSBmcm9tICdlc2J1aWxkJztcbmltcG9ydCB0eXBlIHsgcGF0aFRvRmlsZVVSTCB9IGZyb20gJ25vZGU6dXJsJztcblxuaW1wb3J0IHsgcmVhZEZpbGUgfSBmcm9tICdub2RlOmZzL3Byb21pc2VzJztcblxuaW1wb3J0IHR5cGUgeyBHZW5lcmljT2JqZWN0IH0gZnJvbSAnLi4vLi4vLi4vdHlwZS1ndWFyZHMudHMnO1xuXG5pbXBvcnQge1xuICBGdW5jdGlvbkhhbmRsaW5nTW9kZSxcbiAgdG9Kc29uXG59IGZyb20gJy4uLy4uLy4uL29iamVjdC11dGlscy50cyc7XG5pbXBvcnQge1xuICBtYWtlVmFsaWRWYXJpYWJsZU5hbWUsXG4gIHJlcGxhY2VBbGxcbn0gZnJvbSAnLi4vLi4vLi4vc3RyaW5nLnRzJztcblxuaW50ZXJmYWNlIEJyb3dzZXJQcm9jZXNzIGV4dGVuZHMgUGFydGlhbDxOb2RlSlMuUHJvY2Vzcz4ge1xuICBicm93c2VyOiBib29sZWFuO1xufVxuXG5pbnRlcmZhY2UgRXNtTW9kdWxlIHtcbiAgX19lc01vZHVsZTogYm9vbGVhbjtcbiAgZGVmYXVsdDogdW5rbm93bjtcbn1cblxuaW50ZXJmYWNlIFJlcXVpcmVQYXRjaGVkIGV4dGVuZHMgTm9kZUpTLlJlcXVpcmUge1xuICBfX2lzUGF0Y2hlZDogYm9vbGVhbjtcbn1cblxuaW50ZXJmYWNlIFVybE1vZHVsZSB7XG4gIHBhdGhUb0ZpbGVVUkw6IHR5cGVvZiBwYXRoVG9GaWxlVVJMO1xufVxuXG4vKipcbiAqIENyZWF0ZXMgYW4gZXNidWlsZCBwbHVnaW4gdGhhdCBwcmVwcm9jZXNzZXMgSmF2YVNjcmlwdCBhbmQgVHlwZVNjcmlwdCBmaWxlcy5cbiAqXG4gKiBUaGlzIHBsdWdpbiBwZXJmb3JtcyB0aGUgZm9sbG93aW5nIHRhc2tzOlxuICogLSBSZXBsYWNlcyBpbnN0YW5jZXMgb2YgYGltcG9ydChkb3QpbWV0YShkb3QpdXJsYCB3aXRoIGEgTm9kZS5qcy1jb21wYXRpYmxlIGBfX2ZpbGVuYW1lYCBhbHRlcm5hdGl2ZS5cbiAqIC0gTW9kaWZpZXMgdGhlIGBzb3VyY2VNYXBwaW5nVVJMYCBjb21tZW50IHRvIGVuc3VyZSBjb21wYXRpYmlsaXR5IHdpdGggT2JzaWRpYW4ncyBwbHVnaW4gc3lzdGVtLlxuICogLSBBZGRzIGEgYmFzaWMgYHByb2Nlc3NgIG9iamVjdCB0byB0aGUgZ2xvYmFsIHNjb3BlIGlmIGBwcm9jZXNzYCBpcyByZWZlcmVuY2VkIGJ1dCBub3QgZGVmaW5lZC5cbiAqXG4gKiBAcGFyYW0gaXNFc20gLSBXaGV0aGVyIHRoZSBidWlsZCBpcyBmb3IgYW4gRVNNIGZvcm1hdC5cbiAqIEByZXR1cm5zIEFuIGVzYnVpbGQgYFBsdWdpbmAgb2JqZWN0IHRoYXQgaGFuZGxlcyB0aGUgcHJlcHJvY2Vzc2luZy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHByZXByb2Nlc3NQbHVnaW4oaXNFc20/OiBib29sZWFuKTogUGx1Z2luIHtcbiAgY29uc3QgcmVwbGFjZW1lbnRzID0gaXNFc21cbiAgICA/IHt9XG4gICAgOiB7XG4gICAgICBbcmVwbGFjZUFsbCgnaW1wb3J0KGRvdCltZXRhKGRvdCl1cmwnLCAnKGRvdCknLCAnLicpXTogKCk6IHN0cmluZyA9PiB7XG4gICAgICAgIGlmICh0eXBlb2YgX19maWxlbmFtZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICBjb25zdCBsb2NhbFJlcXVpcmUgPSByZXF1aXJlO1xuICAgICAgICAgIGNvbnN0IHVybCA9IGxvY2FsUmVxdWlyZSgnbm9kZTp1cmwnKSBhcyBVcmxNb2R1bGU7XG4gICAgICAgICAgaWYgKHR5cGVvZiB1cmwucGF0aFRvRmlsZVVSTCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgcmV0dXJuIHVybC5wYXRoVG9GaWxlVVJMKF9fZmlsZW5hbWUpLmhyZWY7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgcmV0dXJuIGFjdGl2ZVdpbmRvdy5sb2NhdGlvbi5ocmVmO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gRmFsbGJhY2sgdG8gYW4gZW1wdHkgc3RyaW5nIGlmIHRoZSBlbnZpcm9ubWVudCBpcyB1bmtub3duXG4gICAgICAgIHJldHVybiAnJztcbiAgICAgIH1cbiAgICB9O1xuXG4gIHJldHVybiB7XG4gICAgbmFtZTogJ3ByZXByb2Nlc3MnLFxuICAgIHNldHVwKGJ1aWxkKTogdm9pZCB7XG4gICAgICBidWlsZC5pbml0aWFsT3B0aW9ucy5kZWZpbmUgPz89IHt9O1xuXG4gICAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhyZXBsYWNlbWVudHMpKSB7XG4gICAgICAgIGJ1aWxkLmluaXRpYWxPcHRpb25zLmRlZmluZVtrZXldID0gYF9fJHttYWtlVmFsaWRWYXJpYWJsZU5hbWUoa2V5KX1gO1xuICAgICAgfVxuXG4gICAgICBidWlsZC5pbml0aWFsT3B0aW9ucy5iYW5uZXIgPz89IHt9O1xuICAgICAgYnVpbGQuaW5pdGlhbE9wdGlvbnMuYmFubmVyWydqcyddID8/PSAnJztcbiAgICAgIGJ1aWxkLmluaXRpYWxPcHRpb25zLmJhbm5lclsnanMnXSArPSBgXFxuKCR7U3RyaW5nKGlzRXNtID8gaW5pdEVzbSA6IGluaXRDanMpfSkoKTtcXG5gO1xuXG4gICAgICBidWlsZC5vbkxvYWQoeyBmaWx0ZXI6IC9cXC4oPzpqc3x0c3xjanN8bWpzfGN0c3xtdHMpJC8gfSwgYXN5bmMgKGFyZ3MpID0+IHtcbiAgICAgICAgbGV0IGNvbnRlbnRzID0gYXdhaXQgcmVhZEZpbGUoYXJncy5wYXRoLCAndXRmLTgnKTtcblxuICAgICAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhyZXBsYWNlbWVudHMpKSB7XG4gICAgICAgICAgY29uc3QgdmFyaWFibGUgPSBgX18ke21ha2VWYWxpZFZhcmlhYmxlTmFtZShrZXkpfWA7XG4gICAgICAgICAgaWYgKCFjb250ZW50cy5pbmNsdWRlcyhrZXkpKSB7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgY29uc3QgdmFsdWVTdHIgPSB0eXBlb2YgdmFsdWUgPT09ICdmdW5jdGlvbicgPyBgKCR7U3RyaW5nKHZhbHVlKX0pKClgIDogdG9Kc29uKHZhbHVlLCB7IGZ1bmN0aW9uSGFuZGxpbmdNb2RlOiBGdW5jdGlvbkhhbmRsaW5nTW9kZS5GdWxsIH0pO1xuICAgICAgICAgIGlmIChjb250ZW50cy5pbmNsdWRlcyhgdmFyICR7dmFyaWFibGV9YCkpIHtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjb250ZW50cyA9IGB2YXIgJHt2YXJpYWJsZX0gPSBnbG9iYWxUaGlzWycke2tleX0nXSA/PyAke3ZhbHVlU3RyfTtcXG4ke2NvbnRlbnRzfWA7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBIQUNLOiBUaGUgJHsnJ30gcGFydCBpcyB1c2VkIHRvIGVuc3VyZSBPYnNpZGlhbiBsb2FkcyB0aGUgcGx1Z2luIHByb3Blcmx5LFxuICAgICAgICAvLyBPdGhlcndpc2UsIGl0IHN0b3BzIGxvYWRpbmcgYWZ0ZXIgdGhlIGZpcnN0IGxpbmUgb2YgdGhlIHNvdXJjZU1hcHBpbmdVUkwgY29tbWVudC5cbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXRlbXBsYXRlLWN1cmx5LWluLXN0cmluZyAtLSBJdCBpcyBpbnRlbnRpb25hbCwgdGhlIHN0cmluZyBsb29rcyBsaWtlIGEgdGVtcGxhdGUgbGl0ZXJhbCwgYnV0IGl0IGlzIG5vdC5cbiAgICAgICAgY29udGVudHMgPSByZXBsYWNlQWxsKGNvbnRlbnRzLCAvYFxccj9cXG5cXC9cXC8jIHNvdXJjZU1hcHBpbmdVUkwvZywgJ2BcXG4vLyMke1xcJ1xcJ30gc291cmNlTWFwcGluZ1VSTCcpO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgY29udGVudHMsXG4gICAgICAgICAgbG9hZGVyOiAndHMnXG4gICAgICAgIH07XG4gICAgICB9KTtcbiAgICB9XG4gIH07XG59XG5cbmZ1bmN0aW9uIGluaXRDanMoKTogdm9pZCB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBvYnNpZGlhbm1kL3ByZWZlci1hY3RpdmUtZG9jIC0tIEFjdGl2ZWx5IHVzZSBnbG9iYWxUaGlzLlxuICBjb25zdCBnbG9iYWxUaGlzUmVjb3JkID0gZ2xvYmFsVGhpcyBhcyBHZW5lcmljT2JqZWN0O1xuICBnbG9iYWxUaGlzUmVjb3JkWydfX25hbWUnXSA/Pz0gbmFtZTtcbiAgY29uc3Qgb3JpZ2luYWxSZXF1aXJlID0gcmVxdWlyZSBhcyAoTm9kZUpTLlJlcXVpcmUgJiBQYXJ0aWFsPFJlcXVpcmVQYXRjaGVkPiB8IHVuZGVmaW5lZCk7XG4gIGlmIChvcmlnaW5hbFJlcXVpcmUgJiYgIW9yaWdpbmFsUmVxdWlyZS5fX2lzUGF0Y2hlZCkge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1nbG9iYWwtYXNzaWduLCBuby1pbXBsaWNpdC1nbG9iYWxzIC0tIFdlIG5lZWQgdG8gcGF0Y2ggdGhlIGByZXF1aXJlKClgIGZ1bmN0aW9uLlxuICAgIHJlcXVpcmUgPSBPYmplY3QuYXNzaWduKFxuICAgICAgKGlkOiBzdHJpbmcpID0+IHJlcXVpcmVQYXRjaGVkKGlkKSxcbiAgICAgIG9yaWdpbmFsUmVxdWlyZSxcbiAgICAgIHtcbiAgICAgICAgX19pc1BhdGNoZWQ6IHRydWVcbiAgICAgIH1cbiAgICApIGFzIFJlcXVpcmVQYXRjaGVkO1xuICB9XG5cbiAgY29uc3QgbmV3RnVuY3M6IFJlY29yZDxzdHJpbmcsICgpID0+IHVua25vd24+ID0ge1xuICAgIF9fZXh0cmFjdERlZmF1bHQoKSB7XG4gICAgICByZXR1cm4gZXh0cmFjdERlZmF1bHQ7XG4gICAgfSxcbiAgICBwcm9jZXNzKCkge1xuICAgICAgY29uc3QgYnJvd3NlclByb2Nlc3M6IEJyb3dzZXJQcm9jZXNzID0ge1xuICAgICAgICBicm93c2VyOiB0cnVlLFxuICAgICAgICBjd2QoKSB7XG4gICAgICAgICAgcmV0dXJuICcvJztcbiAgICAgICAgfSxcbiAgICAgICAgZW52OiB7fSxcbiAgICAgICAgcGxhdGZvcm06ICdhbmRyb2lkJ1xuICAgICAgfTtcbiAgICAgIHJldHVybiBicm93c2VyUHJvY2VzcztcbiAgICB9XG4gIH07XG5cbiAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMobmV3RnVuY3MpKSB7XG4gICAgZ2xvYmFsVGhpc1JlY29yZFtrZXldID8/PSBuZXdGdW5jc1trZXldPy4oKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIG5hbWUob2JqOiB1bmtub3duKTogdW5rbm93biB7XG4gICAgcmV0dXJuIG9iajtcbiAgfVxuXG4gIGZ1bmN0aW9uIGV4dHJhY3REZWZhdWx0KG1vZHVsZTogUGFydGlhbDxFc21Nb2R1bGU+IHwgdW5kZWZpbmVkKTogdW5rbm93biB7XG4gICAgcmV0dXJuIG1vZHVsZSAmJiBtb2R1bGUuX19lc01vZHVsZSAmJiAnZGVmYXVsdCcgaW4gbW9kdWxlID8gbW9kdWxlLmRlZmF1bHQgOiBtb2R1bGU7XG4gIH1cblxuICBjb25zdCBPQlNJRElBTl9CVUlMVF9JTl9NT0RVTEVfTkFNRVMgPSBbXG4gICAgJ29ic2lkaWFuJyxcbiAgICAnQGNvZGVtaXJyb3IvYXV0b2NvbXBsZXRlJyxcbiAgICAnQGNvZGVtaXJyb3IvY29sbGFiJyxcbiAgICAnQGNvZGVtaXJyb3IvY29tbWFuZHMnLFxuICAgICdAY29kZW1pcnJvci9sYW5ndWFnZScsXG4gICAgJ0Bjb2RlbWlycm9yL2xpbnQnLFxuICAgICdAY29kZW1pcnJvci9zZWFyY2gnLFxuICAgICdAY29kZW1pcnJvci9zdGF0ZScsXG4gICAgJ0Bjb2RlbWlycm9yL3RleHQnLFxuICAgICdAY29kZW1pcnJvci92aWV3JyxcbiAgICAnQGxlemVyL2NvbW1vbicsXG4gICAgJ0BsZXplci9scicsXG4gICAgJ0BsZXplci9oaWdobGlnaHQnXG4gIF07XG5cbiAgY29uc3QgREVQUkVDQVRFRF9PQlNJRElBTl9CVUlMVF9JTl9NT0RVTEVfTkFNRVMgPSBbXG4gICAgJ0Bjb2RlbWlycm9yL2Nsb3NlYnJhY2tldHMnLFxuICAgICdAY29kZW1pcnJvci9jb21tZW50JyxcbiAgICAnQGNvZGVtaXJyb3IvZm9sZCcsXG4gICAgJ0Bjb2RlbWlycm9yL2d1dHRlcicsXG4gICAgJ0Bjb2RlbWlycm9yL2hpZ2hsaWdodCcsXG4gICAgJ0Bjb2RlbWlycm9yL2hpc3RvcnknLFxuICAgICdAY29kZW1pcnJvci9tYXRjaGJyYWNrZXRzJyxcbiAgICAnQGNvZGVtaXJyb3IvcGFuZWwnLFxuICAgICdAY29kZW1pcnJvci9yYW5nZXNldCcsXG4gICAgJ0Bjb2RlbWlycm9yL3JlY3Rhbmd1bGFyLXNlbGVjdGlvbicsXG4gICAgJ0Bjb2RlbWlycm9yL3N0cmVhbS1wYXJzZXInLFxuICAgICdAY29kZW1pcnJvci90b29sdGlwJ1xuICBdO1xuXG4gIGZ1bmN0aW9uIHJlcXVpcmVQYXRjaGVkKGlkOiBzdHJpbmcpOiB1bmtub3duIHtcbiAgICBpZiAoT0JTSURJQU5fQlVJTFRfSU5fTU9EVUxFX05BTUVTLmluY2x1ZGVzKGlkKSB8fCBERVBSRUNBVEVEX09CU0lESUFOX0JVSUxUX0lOX01PRFVMRV9OQU1FUy5pbmNsdWRlcyhpZCkpIHtcbiAgICAgIHJldHVybiBvcmlnaW5hbFJlcXVpcmU/LihpZCk7XG4gICAgfVxuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1kZXByZWNhdGVkLCBvYnNpZGlhbm1kL3ByZWZlci1hY3RpdmUtZG9jICAtLSBOZWVkIGFjY2VzcyB0byBhcHAuIEFjdGl2ZWx5IHVzZSBnbG9iYWxUaGlzLlxuICAgIGlmIChnbG9iYWxUaGlzLmFwcC5pc01vYmlsZSkge1xuICAgICAgaWYgKGlkID09PSAncHJvY2VzcycgfHwgaWQgPT09ICdub2RlOnByb2Nlc3MnKSB7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlIC0tIFZhbGlkIHVzYWdlLlxuICAgICAgICBjb25zb2xlLmRlYnVnKGBUaGUgbW9zdCBsaWtlbHkgeW91IGNhbiBzYWZlbHkgaWdub3JlIHRoaXMgZXJyb3IuIE1vZHVsZSBub3QgZm91bmQ6ICR7aWR9LiBGYWtlIHByb2Nlc3Mgb2JqZWN0IGlzIHJldHVybmVkIGluc3RlYWQuYCk7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBvYnNpZGlhbm1kL3ByZWZlci1hY3RpdmUtZG9jIC0tIEFjdGl2ZWx5IHVzZSBnbG9iYWxUaGlzLlxuICAgICAgICByZXR1cm4gZ2xvYmFsVGhpcy5wcm9jZXNzO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBtb2R1bGUgPSBvcmlnaW5hbFJlcXVpcmU/LihpZCkgYXMgKFBhcnRpYWw8RXNtTW9kdWxlPiB8IHVuZGVmaW5lZCk7XG4gICAgICBpZiAobW9kdWxlKSB7XG4gICAgICAgIHJldHVybiBleHRyYWN0RGVmYXVsdChtb2R1bGUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlIC0tIFZhbGlkIHVzYWdlLlxuICAgIGNvbnNvbGUuZGVidWcoYFRoZSBtb3N0IGxpa2VseSB5b3UgY2FuIHNhZmVseSBpZ25vcmUgdGhpcyBlcnJvci4gTW9kdWxlIG5vdCBmb3VuZDogJHtpZH0uIEVtcHR5IG9iamVjdCBpcyByZXR1cm5lZCBpbnN0ZWFkLmApO1xuICAgIHJldHVybiB7fTtcbiAgfVxufVxuXG5mdW5jdGlvbiBpbml0RXNtKCk6IHZvaWQge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgb2JzaWRpYW5tZC9wcmVmZXItYWN0aXZlLWRvYyAtLSBBY3RpdmVseSB1c2UgZ2xvYmFsVGhpcy5cbiAgaWYgKChnbG9iYWxUaGlzLnByb2Nlc3MgYXMgTm9kZUpTLlByb2Nlc3MgfCB1bmRlZmluZWQpKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgYnJvd3NlclByb2Nlc3M6IEJyb3dzZXJQcm9jZXNzID0ge1xuICAgIGJyb3dzZXI6IHRydWUsXG4gICAgY3dkKCkge1xuICAgICAgcmV0dXJuICcvJztcbiAgICB9LFxuICAgIGVudjoge30sXG4gICAgcGxhdGZvcm06ICdhbmRyb2lkJ1xuICB9O1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgb2JzaWRpYW5tZC9wcmVmZXItYWN0aXZlLWRvYyAtLSBBY3RpdmVseSB1c2UgZ2xvYmFsVGhpcy5cbiAgZ2xvYmFsVGhpcy5wcm9jZXNzID0gYnJvd3NlclByb2Nlc3MgYXMgTm9kZUpTLlByb2Nlc3M7XG59XG5cbi8qIHY4IGlnbm9yZSBzdG9wICovXG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7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LHFCQUFpQixHQUFHLE1BQU0sU0FBUyxHQUFHLElBQUk7QUFBQSxFQUM1QztBQUVBLFdBQVMsS0FBSyxLQUF1QjtBQUNuQyxXQUFPO0FBQUEsRUFDVDtBQUVBLFdBQVMsZUFBZSxRQUFpRDtBQUN2RSxXQUFPLFVBQVUsT0FBTyxjQUFjLGFBQWEsU0FBUyxPQUFPLFVBQVU7QUFBQSxFQUMvRTtBQUVBLFFBQU0saUNBQWlDO0FBQUEsSUFDckM7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxFQUNGO0FBRUEsUUFBTSw0Q0FBNEM7QUFBQSxJQUNoRDtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsRUFDRjtBQUVBLFdBQVMsZUFBZSxJQUFxQjtBQUMzQyxRQUFJLCtCQUErQixTQUFTLEVBQUUsS0FBSywwQ0FBMEMsU0FBUyxFQUFFLEdBQUc7QUFDekcsYUFBTyxrQkFBa0IsRUFBRTtBQUFBLElBQzdCO0FBR0EsUUFBSSxXQUFXLElBQUksVUFBVTtBQUMzQixVQUFJLE9BQU8sYUFBYSxPQUFPLGdCQUFnQjtBQUU3QyxnQkFBUSxNQUFNLHVFQUF1RSxFQUFFLDRDQUE0QztBQUVuSSxlQUFPLFdBQVc7QUFBQSxNQUNwQjtBQUFBLElBQ0YsT0FBTztBQUNMLFlBQU0sU0FBUyxrQkFBa0IsRUFBRTtBQUNuQyxVQUFJLFFBQVE7QUFDVixlQUFPLGVBQWUsTUFBTTtBQUFBLE1BQzlCO0FBQUEsSUFDRjtBQUdBLFlBQVEsTUFBTSx1RUFBdUUsRUFBRSxxQ0FBcUM7QUFDNUgsV0FBTyxDQUFDO0FBQUEsRUFDVjtBQUNGO0FBRUEsU0FBUyxVQUFnQjtBQUV2QixNQUFLLFdBQVcsU0FBd0M7QUFDdEQ7QUFBQSxFQUNGO0FBRUEsUUFBTSxpQkFBaUM7QUFBQSxJQUNyQyxTQUFTO0FBQUEsSUFDVCxNQUFNO0FBQ0osYUFBTztBQUFBLElBQ1Q7QUFBQSxJQUNBLEtBQUssQ0FBQztBQUFBLElBQ04sVUFBVTtBQUFBLEVBQ1o7QUFFQSxhQUFXLFVBQVU7QUFDdkI7IiwKICAibmFtZXMiOiBbXQp9Cg==
187
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL3NjcmlwdC11dGlscy9idW5kbGVycy9lc2J1aWxkLWltcGwvcHJlcHJvY2Vzcy1wbHVnaW4udHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBUaGlzIG1vZHVsZSBkZWZpbmVzIGEgY3VzdG9tIGVzYnVpbGQgcGx1Z2luIHRoYXQgcHJlcHJvY2Vzc2VzIEphdmFTY3JpcHQgYW5kIFR5cGVTY3JpcHQgZmlsZXMuXG4gKlxuICogQHJlbWFya3NcbiAqIFdlIGNhbm5vdCB1c2UgYC5gIGluc3RlYWQgb2YgYChkb3QpYCBpbiB0aGUgYWJvdmUgZGVzY3JpcHRpb24gYmVjYXVzZSB0aGUgZmlsZSBpdHNlbGYgaXMgcHJlcHJvY2Vzc2VkIHdpdGggdGhlIHNhbWUgcnVsZS5cbiAqL1xuXG4vKiB2OCBpZ25vcmUgc3RhcnQgLS0gZXNidWlsZCBwbHVnaW4gdGhhdCBwcmVwcm9jZXNzZXMgc291cmNlIGZpbGVzIHdpdGggaW1wb3J0Lm1ldGEudXJsIHNoaW1zIGFuZCBwcm9jZXNzIHBvbHlmaWxsczsgcmVxdWlyZXMgYSBsaXZlIGVzYnVpbGQgY29udGV4dC4gKi9cblxuaW1wb3J0IHR5cGUgeyBQbHVnaW4gfSBmcm9tICdlc2J1aWxkJztcbmltcG9ydCB0eXBlIHsgcGF0aFRvRmlsZVVSTCB9IGZyb20gJ25vZGU6dXJsJztcblxuaW1wb3J0IHsgcmVhZEZpbGUgfSBmcm9tICdub2RlOmZzL3Byb21pc2VzJztcblxuaW1wb3J0IHR5cGUgeyBHZW5lcmljT2JqZWN0IH0gZnJvbSAnLi4vLi4vLi4vdHlwZS1ndWFyZHMudHMnO1xuXG5pbXBvcnQge1xuICBGdW5jdGlvbkhhbmRsaW5nTW9kZSxcbiAgdG9Kc29uXG59IGZyb20gJy4uLy4uLy4uL29iamVjdC11dGlscy50cyc7XG5pbXBvcnQge1xuICBtYWtlVmFsaWRWYXJpYWJsZU5hbWUsXG4gIHJlcGxhY2VBbGxcbn0gZnJvbSAnLi4vLi4vLi4vc3RyaW5nLnRzJztcblxuaW50ZXJmYWNlIEJyb3dzZXJQcm9jZXNzIGV4dGVuZHMgUGFydGlhbDxOb2RlSlMuUHJvY2Vzcz4ge1xuICBicm93c2VyOiBib29sZWFuO1xufVxuXG5pbnRlcmZhY2UgRXNtTW9kdWxlIHtcbiAgX19lc01vZHVsZTogYm9vbGVhbjtcbiAgZGVmYXVsdDogdW5rbm93bjtcbn1cblxuaW50ZXJmYWNlIFJlcXVpcmVQYXRjaGVkIGV4dGVuZHMgTm9kZUpTLlJlcXVpcmUge1xuICBfX2lzUGF0Y2hlZDogYm9vbGVhbjtcbn1cblxuaW50ZXJmYWNlIFVybE1vZHVsZSB7XG4gIHBhdGhUb0ZpbGVVUkw6IHR5cGVvZiBwYXRoVG9GaWxlVVJMO1xufVxuXG4vKipcbiAqIENyZWF0ZXMgYW4gZXNidWlsZCBwbHVnaW4gdGhhdCBwcmVwcm9jZXNzZXMgSmF2YVNjcmlwdCBhbmQgVHlwZVNjcmlwdCBmaWxlcy5cbiAqXG4gKiBUaGlzIHBsdWdpbiBwZXJmb3JtcyB0aGUgZm9sbG93aW5nIHRhc2tzOlxuICogLSBSZXBsYWNlcyBpbnN0YW5jZXMgb2YgYGltcG9ydChkb3QpbWV0YShkb3QpdXJsYCB3aXRoIGEgTm9kZS5qcy1jb21wYXRpYmxlIGBfX2ZpbGVuYW1lYCBhbHRlcm5hdGl2ZS5cbiAqIC0gTW9kaWZpZXMgdGhlIGBzb3VyY2VNYXBwaW5nVVJMYCBjb21tZW50IHRvIGVuc3VyZSBjb21wYXRpYmlsaXR5IHdpdGggT2JzaWRpYW4ncyBwbHVnaW4gc3lzdGVtLlxuICogLSBBZGRzIGEgYmFzaWMgYHByb2Nlc3NgIG9iamVjdCB0byB0aGUgZ2xvYmFsIHNjb3BlIGlmIGBwcm9jZXNzYCBpcyByZWZlcmVuY2VkIGJ1dCBub3QgZGVmaW5lZC5cbiAqXG4gKiBAcGFyYW0gaXNFc20gLSBXaGV0aGVyIHRoZSBidWlsZCBpcyBmb3IgYW4gRVNNIGZvcm1hdC5cbiAqIEByZXR1cm5zIEFuIGVzYnVpbGQgYFBsdWdpbmAgb2JqZWN0IHRoYXQgaGFuZGxlcyB0aGUgcHJlcHJvY2Vzc2luZy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHByZXByb2Nlc3NQbHVnaW4oaXNFc20/OiBib29sZWFuKTogUGx1Z2luIHtcbiAgY29uc3QgcmVwbGFjZW1lbnRzID0gaXNFc21cbiAgICA/IHt9XG4gICAgOiB7XG4gICAgICBbcmVwbGFjZUFsbCgnaW1wb3J0KGRvdCltZXRhKGRvdCl1cmwnLCAnKGRvdCknLCAnLicpXTogKCk6IHN0cmluZyA9PiB7XG4gICAgICAgIGlmICh0eXBlb2YgX19maWxlbmFtZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICBjb25zdCBsb2NhbFJlcXVpcmUgPSByZXF1aXJlO1xuICAgICAgICAgIGNvbnN0IHVybCA9IGxvY2FsUmVxdWlyZSgnbm9kZTp1cmwnKSBhcyBVcmxNb2R1bGU7XG4gICAgICAgICAgaWYgKHR5cGVvZiB1cmwucGF0aFRvRmlsZVVSTCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgcmV0dXJuIHVybC5wYXRoVG9GaWxlVVJMKF9fZmlsZW5hbWUpLmhyZWY7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgcmV0dXJuIGFjdGl2ZVdpbmRvdy5sb2NhdGlvbi5ocmVmO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gRmFsbGJhY2sgdG8gYW4gZW1wdHkgc3RyaW5nIGlmIHRoZSBlbnZpcm9ubWVudCBpcyB1bmtub3duXG4gICAgICAgIHJldHVybiAnJztcbiAgICAgIH1cbiAgICB9O1xuXG4gIHJldHVybiB7XG4gICAgbmFtZTogJ3ByZXByb2Nlc3MnLFxuICAgIHNldHVwKGJ1aWxkKTogdm9pZCB7XG4gICAgICBidWlsZC5pbml0aWFsT3B0aW9ucy5kZWZpbmUgPz89IHt9O1xuXG4gICAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhyZXBsYWNlbWVudHMpKSB7XG4gICAgICAgIGJ1aWxkLmluaXRpYWxPcHRpb25zLmRlZmluZVtrZXldID0gYF9fJHttYWtlVmFsaWRWYXJpYWJsZU5hbWUoa2V5KX1gO1xuICAgICAgfVxuXG4gICAgICBidWlsZC5pbml0aWFsT3B0aW9ucy5iYW5uZXIgPz89IHt9O1xuICAgICAgYnVpbGQuaW5pdGlhbE9wdGlvbnMuYmFubmVyWydqcyddID8/PSAnJztcbiAgICAgIGJ1aWxkLmluaXRpYWxPcHRpb25zLmJhbm5lclsnanMnXSArPSBgXFxuKCR7U3RyaW5nKGlzRXNtID8gaW5pdEVzbSA6IGluaXRDanMpfSkoKTtcXG5gO1xuXG4gICAgICBidWlsZC5vbkxvYWQoeyBmaWx0ZXI6IC9cXC4oPzpqc3x0c3xjanN8bWpzfGN0c3xtdHMpJC8gfSwgYXN5bmMgKGFyZ3MpID0+IHtcbiAgICAgICAgbGV0IGNvbnRlbnRzID0gYXdhaXQgcmVhZEZpbGUoYXJncy5wYXRoLCAndXRmLTgnKTtcblxuICAgICAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhyZXBsYWNlbWVudHMpKSB7XG4gICAgICAgICAgY29uc3QgdmFyaWFibGUgPSBgX18ke21ha2VWYWxpZFZhcmlhYmxlTmFtZShrZXkpfWA7XG4gICAgICAgICAgaWYgKCFjb250ZW50cy5pbmNsdWRlcyhrZXkpKSB7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgY29uc3QgdmFsdWVTdHIgPSB0eXBlb2YgdmFsdWUgPT09ICdmdW5jdGlvbicgPyBgKCR7U3RyaW5nKHZhbHVlKX0pKClgIDogdG9Kc29uKHZhbHVlLCB7IGZ1bmN0aW9uSGFuZGxpbmdNb2RlOiBGdW5jdGlvbkhhbmRsaW5nTW9kZS5GdWxsIH0pO1xuICAgICAgICAgIGlmIChjb250ZW50cy5pbmNsdWRlcyhgdmFyICR7dmFyaWFibGV9YCkpIHtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjb250ZW50cyA9IGB2YXIgJHt2YXJpYWJsZX0gPSBnbG9iYWxUaGlzWycke2tleX0nXSA/PyAke3ZhbHVlU3RyfTtcXG4ke2NvbnRlbnRzfWA7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBIQUNLOiBUaGUgJHsnJ30gcGFydCBpcyB1c2VkIHRvIGVuc3VyZSBPYnNpZGlhbiBsb2FkcyB0aGUgcGx1Z2luIHByb3Blcmx5LFxuICAgICAgICAvLyBPdGhlcndpc2UsIGl0IHN0b3BzIGxvYWRpbmcgYWZ0ZXIgdGhlIGZpcnN0IGxpbmUgb2YgdGhlIHNvdXJjZU1hcHBpbmdVUkwgY29tbWVudC5cbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXRlbXBsYXRlLWN1cmx5LWluLXN0cmluZyAtLSBJdCBpcyBpbnRlbnRpb25hbCwgdGhlIHN0cmluZyBsb29rcyBsaWtlIGEgdGVtcGxhdGUgbGl0ZXJhbCwgYnV0IGl0IGlzIG5vdC5cbiAgICAgICAgY29udGVudHMgPSByZXBsYWNlQWxsKGNvbnRlbnRzLCAvYFxccj9cXG5cXC9cXC8jIHNvdXJjZU1hcHBpbmdVUkwvZywgJ2BcXG4vLyMke1xcJ1xcJ30gc291cmNlTWFwcGluZ1VSTCcpO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgY29udGVudHMsXG4gICAgICAgICAgbG9hZGVyOiAndHMnXG4gICAgICAgIH07XG4gICAgICB9KTtcbiAgICB9XG4gIH07XG59XG5cbmZ1bmN0aW9uIGluaXRDanMoKTogdm9pZCB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBvYnNpZGlhbm1kL25vLWdsb2JhbC10aGlzIC0tIEFjdGl2ZWx5IHVzZSBnbG9iYWxUaGlzLlxuICBjb25zdCBnbG9iYWxUaGlzUmVjb3JkID0gZ2xvYmFsVGhpcyBhcyBHZW5lcmljT2JqZWN0O1xuICBnbG9iYWxUaGlzUmVjb3JkWydfX25hbWUnXSA/Pz0gbmFtZTtcbiAgY29uc3Qgb3JpZ2luYWxSZXF1aXJlID0gcmVxdWlyZSBhcyAoTm9kZUpTLlJlcXVpcmUgJiBQYXJ0aWFsPFJlcXVpcmVQYXRjaGVkPiB8IHVuZGVmaW5lZCk7XG4gIGlmIChvcmlnaW5hbFJlcXVpcmUgJiYgIW9yaWdpbmFsUmVxdWlyZS5fX2lzUGF0Y2hlZCkge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1nbG9iYWwtYXNzaWduLCBuby1pbXBsaWNpdC1nbG9iYWxzIC0tIFdlIG5lZWQgdG8gcGF0Y2ggdGhlIGByZXF1aXJlKClgIGZ1bmN0aW9uLlxuICAgIHJlcXVpcmUgPSBPYmplY3QuYXNzaWduKFxuICAgICAgKGlkOiBzdHJpbmcpID0+IHJlcXVpcmVQYXRjaGVkKGlkKSxcbiAgICAgIG9yaWdpbmFsUmVxdWlyZSxcbiAgICAgIHtcbiAgICAgICAgX19pc1BhdGNoZWQ6IHRydWVcbiAgICAgIH1cbiAgICApIGFzIFJlcXVpcmVQYXRjaGVkO1xuICB9XG5cbiAgY29uc3QgbmV3RnVuY3M6IFJlY29yZDxzdHJpbmcsICgpID0+IHVua25vd24+ID0ge1xuICAgIF9fZXh0cmFjdERlZmF1bHQoKSB7XG4gICAgICByZXR1cm4gZXh0cmFjdERlZmF1bHQ7XG4gICAgfSxcbiAgICBwcm9jZXNzKCkge1xuICAgICAgY29uc3QgYnJvd3NlclByb2Nlc3M6IEJyb3dzZXJQcm9jZXNzID0ge1xuICAgICAgICBicm93c2VyOiB0cnVlLFxuICAgICAgICBjd2QoKSB7XG4gICAgICAgICAgcmV0dXJuICcvJztcbiAgICAgICAgfSxcbiAgICAgICAgZW52OiB7fSxcbiAgICAgICAgcGxhdGZvcm06ICdhbmRyb2lkJ1xuICAgICAgfTtcbiAgICAgIHJldHVybiBicm93c2VyUHJvY2VzcztcbiAgICB9XG4gIH07XG5cbiAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMobmV3RnVuY3MpKSB7XG4gICAgZ2xvYmFsVGhpc1JlY29yZFtrZXldID8/PSBuZXdGdW5jc1trZXldPy4oKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIG5hbWUob2JqOiB1bmtub3duKTogdW5rbm93biB7XG4gICAgcmV0dXJuIG9iajtcbiAgfVxuXG4gIGZ1bmN0aW9uIGV4dHJhY3REZWZhdWx0KG1vZHVsZTogUGFydGlhbDxFc21Nb2R1bGU+IHwgdW5kZWZpbmVkKTogdW5rbm93biB7XG4gICAgcmV0dXJuIG1vZHVsZSAmJiBtb2R1bGUuX19lc01vZHVsZSAmJiAnZGVmYXVsdCcgaW4gbW9kdWxlID8gbW9kdWxlLmRlZmF1bHQgOiBtb2R1bGU7XG4gIH1cblxuICBjb25zdCBPQlNJRElBTl9CVUlMVF9JTl9NT0RVTEVfTkFNRVMgPSBbXG4gICAgJ29ic2lkaWFuJyxcbiAgICAnQGNvZGVtaXJyb3IvYXV0b2NvbXBsZXRlJyxcbiAgICAnQGNvZGVtaXJyb3IvY29sbGFiJyxcbiAgICAnQGNvZGVtaXJyb3IvY29tbWFuZHMnLFxuICAgICdAY29kZW1pcnJvci9sYW5ndWFnZScsXG4gICAgJ0Bjb2RlbWlycm9yL2xpbnQnLFxuICAgICdAY29kZW1pcnJvci9zZWFyY2gnLFxuICAgICdAY29kZW1pcnJvci9zdGF0ZScsXG4gICAgJ0Bjb2RlbWlycm9yL3RleHQnLFxuICAgICdAY29kZW1pcnJvci92aWV3JyxcbiAgICAnQGxlemVyL2NvbW1vbicsXG4gICAgJ0BsZXplci9scicsXG4gICAgJ0BsZXplci9oaWdobGlnaHQnXG4gIF07XG5cbiAgY29uc3QgREVQUkVDQVRFRF9PQlNJRElBTl9CVUlMVF9JTl9NT0RVTEVfTkFNRVMgPSBbXG4gICAgJ0Bjb2RlbWlycm9yL2Nsb3NlYnJhY2tldHMnLFxuICAgICdAY29kZW1pcnJvci9jb21tZW50JyxcbiAgICAnQGNvZGVtaXJyb3IvZm9sZCcsXG4gICAgJ0Bjb2RlbWlycm9yL2d1dHRlcicsXG4gICAgJ0Bjb2RlbWlycm9yL2hpZ2hsaWdodCcsXG4gICAgJ0Bjb2RlbWlycm9yL2hpc3RvcnknLFxuICAgICdAY29kZW1pcnJvci9tYXRjaGJyYWNrZXRzJyxcbiAgICAnQGNvZGVtaXJyb3IvcGFuZWwnLFxuICAgICdAY29kZW1pcnJvci9yYW5nZXNldCcsXG4gICAgJ0Bjb2RlbWlycm9yL3JlY3Rhbmd1bGFyLXNlbGVjdGlvbicsXG4gICAgJ0Bjb2RlbWlycm9yL3N0cmVhbS1wYXJzZXInLFxuICAgICdAY29kZW1pcnJvci90b29sdGlwJ1xuICBdO1xuXG4gIGZ1bmN0aW9uIHJlcXVpcmVQYXRjaGVkKGlkOiBzdHJpbmcpOiB1bmtub3duIHtcbiAgICBpZiAoT0JTSURJQU5fQlVJTFRfSU5fTU9EVUxFX05BTUVTLmluY2x1ZGVzKGlkKSB8fCBERVBSRUNBVEVEX09CU0lESUFOX0JVSUxUX0lOX01PRFVMRV9OQU1FUy5pbmNsdWRlcyhpZCkpIHtcbiAgICAgIHJldHVybiBvcmlnaW5hbFJlcXVpcmU/LihpZCk7XG4gICAgfVxuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1kZXByZWNhdGVkLCBvYnNpZGlhbm1kL25vLWdsb2JhbC10aGlzICAtLSBOZWVkIGFjY2VzcyB0byBhcHAuIEFjdGl2ZWx5IHVzZSBnbG9iYWxUaGlzLlxuICAgIGlmIChnbG9iYWxUaGlzLmFwcC5pc01vYmlsZSkge1xuICAgICAgaWYgKGlkID09PSAncHJvY2VzcycgfHwgaWQgPT09ICdub2RlOnByb2Nlc3MnKSB7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlIC0tIFZhbGlkIHVzYWdlLlxuICAgICAgICBjb25zb2xlLmRlYnVnKGBUaGUgbW9zdCBsaWtlbHkgeW91IGNhbiBzYWZlbHkgaWdub3JlIHRoaXMgZXJyb3IuIE1vZHVsZSBub3QgZm91bmQ6ICR7aWR9LiBGYWtlIHByb2Nlc3Mgb2JqZWN0IGlzIHJldHVybmVkIGluc3RlYWQuYCk7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBvYnNpZGlhbm1kL25vLWdsb2JhbC10aGlzIC0tIEFjdGl2ZWx5IHVzZSBnbG9iYWxUaGlzLlxuICAgICAgICByZXR1cm4gZ2xvYmFsVGhpcy5wcm9jZXNzO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBtb2R1bGUgPSBvcmlnaW5hbFJlcXVpcmU/LihpZCkgYXMgKFBhcnRpYWw8RXNtTW9kdWxlPiB8IHVuZGVmaW5lZCk7XG4gICAgICBpZiAobW9kdWxlKSB7XG4gICAgICAgIHJldHVybiBleHRyYWN0RGVmYXVsdChtb2R1bGUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlIC0tIFZhbGlkIHVzYWdlLlxuICAgIGNvbnNvbGUuZGVidWcoYFRoZSBtb3N0IGxpa2VseSB5b3UgY2FuIHNhZmVseSBpZ25vcmUgdGhpcyBlcnJvci4gTW9kdWxlIG5vdCBmb3VuZDogJHtpZH0uIEVtcHR5IG9iamVjdCBpcyByZXR1cm5lZCBpbnN0ZWFkLmApO1xuICAgIHJldHVybiB7fTtcbiAgfVxufVxuXG5mdW5jdGlvbiBpbml0RXNtKCk6IHZvaWQge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgb2JzaWRpYW5tZC9uby1nbG9iYWwtdGhpcyAtLSBBY3RpdmVseSB1c2UgZ2xvYmFsVGhpcy5cbiAgaWYgKChnbG9iYWxUaGlzLnByb2Nlc3MgYXMgTm9kZUpTLlByb2Nlc3MgfCB1bmRlZmluZWQpKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgYnJvd3NlclByb2Nlc3M6IEJyb3dzZXJQcm9jZXNzID0ge1xuICAgIGJyb3dzZXI6IHRydWUsXG4gICAgY3dkKCkge1xuICAgICAgcmV0dXJuICcvJztcbiAgICB9LFxuICAgIGVudjoge30sXG4gICAgcGxhdGZvcm06ICdhbmRyb2lkJ1xuICB9O1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgb2JzaWRpYW5tZC9uby1nbG9iYWwtdGhpcyAtLSBBY3RpdmVseSB1c2UgZ2xvYmFsVGhpcy5cbiAgZ2xvYmFsVGhpcy5wcm9jZXNzID0gYnJvd3NlclByb2Nlc3MgYXMgTm9kZUpTLlByb2Nlc3M7XG59XG5cbi8qIHY4IGlnbm9yZSBzdG9wICovXG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztB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QU0sU0FBUyxHQUFHLElBQUk7QUFBQSxFQUM1QztBQUVBLFdBQVMsS0FBSyxLQUF1QjtBQUNuQyxXQUFPO0FBQUEsRUFDVDtBQUVBLFdBQVMsZUFBZSxRQUFpRDtBQUN2RSxXQUFPLFVBQVUsT0FBTyxjQUFjLGFBQWEsU0FBUyxPQUFPLFVBQVU7QUFBQSxFQUMvRTtBQUVBLFFBQU0saUNBQWlDO0FBQUEsSUFDckM7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxFQUNGO0FBRUEsUUFBTSw0Q0FBNEM7QUFBQSxJQUNoRDtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsRUFDRjtBQUVBLFdBQVMsZUFBZSxJQUFxQjtBQUMzQyxRQUFJLCtCQUErQixTQUFTLEVBQUUsS0FBSywwQ0FBMEMsU0FBUyxFQUFFLEdBQUc7QUFDekcsYUFBTyxrQkFBa0IsRUFBRTtBQUFBLElBQzdCO0FBR0EsUUFBSSxXQUFXLElBQUksVUFBVTtBQUMzQixVQUFJLE9BQU8sYUFBYSxPQUFPLGdCQUFnQjtBQUU3QyxnQkFBUSxNQUFNLHVFQUF1RSxFQUFFLDRDQUE0QztBQUVuSSxlQUFPLFdBQVc7QUFBQSxNQUNwQjtBQUFBLElBQ0YsT0FBTztBQUNMLFlBQU0sU0FBUyxrQkFBa0IsRUFBRTtBQUNuQyxVQUFJLFFBQVE7QUFDVixlQUFPLGVBQWUsTUFBTTtBQUFBLE1BQzlCO0FBQUEsSUFDRjtBQUdBLFlBQVEsTUFBTSx1RUFBdUUsRUFBRSxxQ0FBcUM7QUFDNUgsV0FBTyxDQUFDO0FBQUEsRUFDVjtBQUNGO0FBRUEsU0FBUyxVQUFnQjtBQUV2QixNQUFLLFdBQVcsU0FBd0M7QUFDdEQ7QUFBQSxFQUNGO0FBRUEsUUFBTSxpQkFBaUM7QUFBQSxJQUNyQyxTQUFTO0FBQUEsSUFDVCxNQUFNO0FBQ0osYUFBTztBQUFBLElBQ1Q7QUFBQSxJQUNBLEtBQUssQ0FBQztBQUFBLElBQ04sVUFBVTtBQUFBLEVBQ1o7QUFFQSxhQUFXLFVBQVU7QUFDdkI7IiwKICAibmFtZXMiOiBbXQp9Cg==
@@ -4,7 +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
+ // eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
8
8
  if (globalThis.process) {
9
9
  return;
10
10
  }
@@ -17,7 +17,7 @@ if you want to view the source, please visit the github repository of this plugi
17
17
  env: {},
18
18
  platform: 'android'
19
19
  };
20
- // eslint-disable-next-line obsidianmd/prefer-active-doc -- Actively use globalThis.
20
+ // eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
21
21
  globalThis.process = browserProcess;
22
22
  })();
23
23
 
@@ -4,7 +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
+ // eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
8
8
  if (globalThis.process) {
9
9
  return;
10
10
  }
@@ -17,7 +17,7 @@ if you want to view the source, please visit the github repository of this plugi
17
17
  env: {},
18
18
  platform: 'android'
19
19
  };
20
- // eslint-disable-next-line obsidianmd/prefer-active-doc -- Actively use globalThis.
20
+ // eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
21
21
  globalThis.process = browserProcess;
22
22
  })();
23
23
 
@@ -4,7 +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
+ // eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
8
8
  if (globalThis.process) {
9
9
  return;
10
10
  }
@@ -17,7 +17,7 @@ if you want to view the source, please visit the github repository of this plugi
17
17
  env: {},
18
18
  platform: 'android'
19
19
  };
20
- // eslint-disable-next-line obsidianmd/prefer-active-doc -- Actively use globalThis.
20
+ // eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
21
21
  globalThis.process = browserProcess;
22
22
  })();
23
23
 
@@ -4,7 +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
+ // eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
8
8
  if (globalThis.process) {
9
9
  return;
10
10
  }
@@ -17,7 +17,7 @@ if you want to view the source, please visit the github repository of this plugi
17
17
  env: {},
18
18
  platform: 'android'
19
19
  };
20
- // eslint-disable-next-line obsidianmd/prefer-active-doc -- Actively use globalThis.
20
+ // eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
21
21
  globalThis.process = browserProcess;
22
22
  })();
23
23
 
@@ -4,7 +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
+ // eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
8
8
  if (globalThis.process) {
9
9
  return;
10
10
  }
@@ -17,7 +17,7 @@ if you want to view the source, please visit the github repository of this plugi
17
17
  env: {},
18
18
  platform: 'android'
19
19
  };
20
- // eslint-disable-next-line obsidianmd/prefer-active-doc -- Actively use globalThis.
20
+ // eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
21
21
  globalThis.process = browserProcess;
22
22
  })();
23
23
 
@@ -4,7 +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
+ // eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
8
8
  if (globalThis.process) {
9
9
  return;
10
10
  }
@@ -17,7 +17,7 @@ if you want to view the source, please visit the github repository of this plugi
17
17
  env: {},
18
18
  platform: 'android'
19
19
  };
20
- // eslint-disable-next-line obsidianmd/prefer-active-doc -- Actively use globalThis.
20
+ // eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
21
21
  globalThis.process = browserProcess;
22
22
  })();
23
23
 
@@ -4,7 +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
+ // eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
8
8
  if (globalThis.process) {
9
9
  return;
10
10
  }
@@ -17,7 +17,7 @@ if you want to view the source, please visit the github repository of this plugi
17
17
  env: {},
18
18
  platform: 'android'
19
19
  };
20
- // eslint-disable-next-line obsidianmd/prefer-active-doc -- Actively use globalThis.
20
+ // eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
21
21
  globalThis.process = browserProcess;
22
22
  })();
23
23
 
@@ -16,7 +16,7 @@ export interface ExecArg {
16
16
  /**
17
17
  * The arguments to batch.
18
18
  */
19
- batchedArgs: string[];
19
+ readonly batchedArgs: readonly string[];
20
20
  }
21
21
  /**
22
22
  * Options for {@link exec} that return detailed results.
@@ -25,7 +25,7 @@ export interface ExecDetailedOptions extends ExecOption {
25
25
  /**
26
26
  * Must be `true` to receive detailed results.
27
27
  */
28
- withDetails: true;
28
+ readonly shouldIncludeDetails: true;
29
29
  }
30
30
  /**
31
31
  * Options for executing a command.
@@ -63,19 +63,19 @@ export interface ExecResult {
63
63
  /**
64
64
  * An exit code of the command. A value of `null` indicates that the process did not exit normally.
65
65
  */
66
- exitCode: null | number;
66
+ readonly exitCode: null | number;
67
67
  /**
68
68
  * A signal that caused the process to be terminated. A value of `null` indicates that no signal was received.
69
69
  */
70
- exitSignal: NodeJS.Signals | null;
70
+ readonly exitSignal: NodeJS.Signals | null;
71
71
  /**
72
72
  * A standard error output from the command.
73
73
  */
74
- stderr: string;
74
+ readonly stderr: string;
75
75
  /**
76
76
  * A standard output from the command.
77
77
  */
78
- stdout: string;
78
+ readonly stdout: string;
79
79
  }
80
80
  /**
81
81
  * Options for {@link exec} that return only stdout.
@@ -84,7 +84,7 @@ export interface ExecSimpleOptions extends ExecOption {
84
84
  /**
85
85
  * Must be `false` or omitted to receive only stdout.
86
86
  */
87
- withDetails?: false;
87
+ readonly shouldIncludeDetails?: false;
88
88
  }
89
89
  /**
90
90
  * Executes a command.
@@ -4,7 +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
+ // eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
8
8
  if (globalThis.process) {
9
9
  return;
10
10
  }
@@ -17,7 +17,7 @@ if you want to view the source, please visit the github repository of this plugi
17
17
  env: {},
18
18
  platform: 'android'
19
19
  };
20
- // eslint-disable-next-line obsidianmd/prefer-active-doc -- Actively use globalThis.
20
+ // eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
21
21
  globalThis.process = browserProcess;
22
22
  })();
23
23
 
@@ -63,7 +63,7 @@ function execString(command, options = {}, rawArgs) {
63
63
  cwd = process.cwd(),
64
64
  isQuiet: quiet = false,
65
65
  shouldIgnoreExitCode: ignoreExitCode = false,
66
- shouldIncludeDetails: withDetails = false,
66
+ shouldIncludeDetails = false,
67
67
  stdin = ""
68
68
  } = options;
69
69
  return new Promise((resolve, reject) => {
@@ -97,7 +97,7 @@ function execString(command, options = {}, rawArgs) {
97
97
  ${stderr}`));
98
98
  return;
99
99
  }
100
- if (!withDetails) {
100
+ if (!shouldIncludeDetails) {
101
101
  resolve(stdout);
102
102
  return;
103
103
  }
@@ -113,7 +113,7 @@ ${stderr}`));
113
113
  reject(err);
114
114
  return;
115
115
  }
116
- if (!withDetails) {
116
+ if (!shouldIncludeDetails) {
117
117
  resolve(stdout);
118
118
  return;
119
119
  }
@@ -216,4 +216,4 @@ function spawnViaShell(command, cwd, rawArgs) {
216
216
  export {
217
217
  exec
218
218
  };
219
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL3NjcmlwdC11dGlscy9leGVjLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogQ29udGFpbnMgdXRpbGl0eSBmdW5jdGlvbnMgZm9yIGV4ZWN1dGluZyBjb21tYW5kcy5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7IENoaWxkUHJvY2Vzc1dpdGhvdXROdWxsU3RyZWFtcyB9IGZyb20gJ25vZGU6Y2hpbGRfcHJvY2Vzcyc7XG5cbmltcG9ydCB7IHNwYXduIH0gZnJvbSAnbm9kZTpjaGlsZF9wcm9jZXNzJztcbmltcG9ydCBwcm9jZXNzIGZyb20gJ25vZGU6cHJvY2Vzcyc7XG5cbmltcG9ydCB7IGdldExpYkRlYnVnZ2VyIH0gZnJvbSAnLi4vZGVidWcudHMnO1xuaW1wb3J0IHsgdHJpbUVuZCB9IGZyb20gJy4uL3N0cmluZy50cyc7XG5pbXBvcnQgeyBhc3NlcnROb25OdWxsYWJsZSB9IGZyb20gJy4uL3R5cGUtZ3VhcmRzLnRzJztcbmltcG9ydCB7XG4gIGNtZEVzY2FwZUNvbW1hbmRMaW5lLFxuICB0b0NvbW1hbmRMaW5lXG59IGZyb20gJy4vY2xpLXV0aWxzLnRzJztcblxuLyoqXG4gKiBBIGNvbW1hbmQgcGFydDogZWl0aGVyIGEgcGxhaW4gc3RyaW5nIG9yIGFuIHtAbGluayBFeGVjQXJnfSB3aXRoIGJhdGNoZWQgYXJndW1lbnRzLlxuICovXG5leHBvcnQgdHlwZSBDb21tYW5kUGFydCA9IEV4ZWNBcmcgfCBzdHJpbmc7XG5cbi8qKlxuICogQSBjb21tYW5kIGFyZ3VtZW50IHRoYXQgY29udGFpbnMgYSBsaXN0IG9mIGFyZ3MgdG8gYmUgYmF0Y2hlZC5cbiAqIElmIHRoZSBleHBhbmRlZCBjb21tYW5kIGV4Y2VlZHMgdGhlIHBsYXRmb3JtJ3MgbWF4IGNvbW1hbmQgbGVuZ3RoLFxuICogdGhlIGJhdGNoZWQgYXJncyBhcmUgc3BsaXQgaW50byBzZXF1ZW50aWFsIGV4ZWN1dGlvbnMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRXhlY0FyZyB7XG4gIC8qKlxuICAgKiBUaGUgYXJndW1lbnRzIHRvIGJhdGNoLlxuICAgKi9cbiAgYmF0Y2hlZEFyZ3M6IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIHtAbGluayBleGVjfSB0aGF0IHJldHVybiBkZXRhaWxlZCByZXN1bHRzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEV4ZWNEZXRhaWxlZE9wdGlvbnMgZXh0ZW5kcyBFeGVjT3B0aW9uIHtcbiAgLyoqXG4gICAqIE11c3QgYmUgYHRydWVgIHRvIHJlY2VpdmUgZGV0YWlsZWQgcmVzdWx0cy5cbiAgICovXG4gIHdpdGhEZXRhaWxzOiB0cnVlO1xufVxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIGV4ZWN1dGluZyBhIGNvbW1hbmQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRXhlY09wdGlvbiB7XG4gIC8qKlxuICAgKiBBIGN1cnJlbnQgd29ya2luZyBmb2xkZXIgZm9yIHRoZSBjb21tYW5kIGV4ZWN1dGlvbi5cbiAgICovXG4gIHJlYWRvbmx5IGN3ZD86IHN0cmluZztcblxuICAvKipcbiAgICogSWYgYHRydWVgLCBzdXBwcmVzc2VzIHRoZSBvdXRwdXQgb2YgdGhlIGNvbW1hbmQuXG4gICAqL1xuICByZWFkb25seSBpc1F1aWV0PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogSWYgYHRydWVgLCB0aHJvd3MgYW4gZXJyb3IgaWYgdGhlIGNvbW1hbmQgZmFpbHMuXG4gICAqL1xuICByZWFkb25seSBzaG91bGRGYWlsSWZDYWxsZWRGcm9tT3V0c2lkZVJvb3Q/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAsIGlnbm9yZXMgdGhlIGV4aXQgY29kZSBvZiB0aGUgY29tbWFuZC5cbiAgICovXG4gIHJlYWRvbmx5IHNob3VsZElnbm9yZUV4aXRDb2RlPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogSWYgYGZhbHNlYCwgb25seSByZXR1cm5zIHRoZSBvdXRwdXQgb2YgdGhlIGNvbW1hbmQuXG4gICAqL1xuICByZWFkb25seSBzaG91bGRJbmNsdWRlRGV0YWlscz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEFuIGlucHV0IHRvIGJlIHBhc3NlZCB0byB0aGUgY29tbWFuZC5cbiAgICovXG4gIHJlYWRvbmx5IHN0ZGluPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIEEgcmVzdWx0IG9mIHtAbGluayBleGVjfS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFeGVjUmVzdWx0IHtcbiAgLyoqXG4gICAqIEFuIGV4aXQgY29kZSBvZiB0aGUgY29tbWFuZC4gQSB2YWx1ZSBvZiBgbnVsbGAgaW5kaWNhdGVzIHRoYXQgdGhlIHByb2Nlc3MgZGlkIG5vdCBleGl0IG5vcm1hbGx5LlxuICAgKi9cbiAgZXhpdENvZGU6IG51bGwgfCBudW1iZXI7XG5cbiAgLyoqXG4gICAqIEEgc2lnbmFsIHRoYXQgY2F1c2VkIHRoZSBwcm9jZXNzIHRvIGJlIHRlcm1pbmF0ZWQuIEEgdmFsdWUgb2YgYG51bGxgIGluZGljYXRlcyB0aGF0IG5vIHNpZ25hbCB3YXMgcmVjZWl2ZWQuXG4gICAqL1xuICBleGl0U2lnbmFsOiBOb2RlSlMuU2lnbmFscyB8IG51bGw7XG5cbiAgLyoqXG4gICAqIEEgc3RhbmRhcmQgZXJyb3Igb3V0cHV0IGZyb20gdGhlIGNvbW1hbmQuXG4gICAqL1xuICBzdGRlcnI6IHN0cmluZztcblxuICAvKipcbiAgICogQSBzdGFuZGFyZCBvdXRwdXQgZnJvbSB0aGUgY29tbWFuZC5cbiAgICovXG4gIHN0ZG91dDogc3RyaW5nO1xufVxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIHtAbGluayBleGVjfSB0aGF0IHJldHVybiBvbmx5IHN0ZG91dC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFeGVjU2ltcGxlT3B0aW9ucyBleHRlbmRzIEV4ZWNPcHRpb24ge1xuICAvKipcbiAgICogTXVzdCBiZSBgZmFsc2VgIG9yIG9taXR0ZWQgdG8gcmVjZWl2ZSBvbmx5IHN0ZG91dC5cbiAgICovXG4gIHdpdGhEZXRhaWxzPzogZmFsc2U7XG59XG5cbi8qKlxuICogRXhlY3V0ZXMgYSBjb21tYW5kLlxuICpcbiAqIEBwYXJhbSBjb21tYW5kIC0gVGhlIGNvbW1hbmQgdG8gZXhlY3V0ZS4gSXQgY2FuIGJlIGEgc3RyaW5nIG9yIGFuIGFycmF5IG9mIHN0cmluZ3MuXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBvcHRpb25zIGZvciB0aGUgZXhlY3V0aW9uLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB3aXRoIHRoZSBvdXRwdXQgb2YgdGhlIGNvbW1hbmQuXG4gKiBAdGhyb3dzIElmIHRoZSBjb21tYW5kIGZhaWxzIHdpdGggYSBub24temVybyBleGl0IGNvZGUgYW5kIGlnbm9yZUV4aXRDb2RlIGlzIGBmYWxzZWAuXG4gKiAgICAgICAgIFRoZSBlcnJvciBtZXNzYWdlIGluY2x1ZGVzIHRoZSBleGl0IGNvZGUgYW5kIHN0ZGVyci5cbiAqICAgICAgICAgSWYgYW4gZXJyb3Igb2NjdXJzIGR1cmluZyB0aGUgZXhlY3V0aW9uIGFuZCBpZ25vcmVFeGl0Q29kZSBpcyBgdHJ1ZWAsXG4gKiAgICAgICAgIHRoZSBlcnJvciBpcyByZXNvbHZlZCB3aXRoIHRoZSBzdGRvdXQgYW5kIHN0ZGVyci5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGV4ZWMoY29tbWFuZDogQ29tbWFuZFBhcnRbXSB8IHN0cmluZywgb3B0aW9ucz86IEV4ZWNTaW1wbGVPcHRpb25zKTogUHJvbWlzZTxzdHJpbmc+O1xuLyoqXG4gKiBFeGVjdXRlcyBhIGNvbW1hbmQuXG4gKlxuICogQHBhcmFtIGNvbW1hbmQgLSBUaGUgY29tbWFuZCB0byBleGVjdXRlLiBJdCBjYW4gYmUgYSBzdHJpbmcgb3IgYW4gYXJyYXkgb2Ygc3RyaW5ncy5cbiAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIG9wdGlvbnMgZm9yIHRoZSBleGVjdXRpb24uXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHdpdGggRXhlY1Jlc3VsdCBvYmplY3QuXG4gKiAgICAgICAgICBUaGUgRXhlY1Jlc3VsdCBvYmplY3QgY29udGFpbnMgdGhlIGV4aXQgY29kZSwgZXhpdCBzaWduYWwsIHN0ZGVyciwgYW5kIHN0ZG91dC5cbiAqIEB0aHJvd3MgSWYgdGhlIGNvbW1hbmQgZmFpbHMgd2l0aCBhIG5vbi16ZXJvIGV4aXQgY29kZSBhbmQgaWdub3JlRXhpdENvZGUgaXMgYGZhbHNlYC5cbiAqICAgICAgICAgVGhlIGVycm9yIG1lc3NhZ2UgaW5jbHVkZXMgdGhlIGV4aXQgY29kZSBhbmQgc3RkZXJyLlxuICogICAgICAgICBJZiBhbiBlcnJvciBvY2N1cnMgZHVyaW5nIHRoZSBleGVjdXRpb24gYW5kIGlnbm9yZUV4aXRDb2RlIGlzIGB0cnVlYCxcbiAqICAgICAgICAgdGhlIGVycm9yIGlzIHJlc29sdmVkIHdpdGggdGhlIHN0ZG91dCBhbmQgc3RkZXJyLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZXhlYyhjb21tYW5kOiBDb21tYW5kUGFydFtdIHwgc3RyaW5nLCBvcHRpb25zOiBFeGVjRGV0YWlsZWRPcHRpb25zKTogUHJvbWlzZTxFeGVjUmVzdWx0Pjtcbi8qKlxuICogRXhlY3V0ZXMgYSBjb21tYW5kLlxuICpcbiAqIEBwYXJhbSBjb21tYW5kIC0gVGhlIGNvbW1hbmQgdG8gZXhlY3V0ZS4gSXQgY2FuIGJlIGEgc3RyaW5nIG9yIGFuIGFycmF5IG9mIHN0cmluZ3MuXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBvcHRpb25zIGZvciB0aGUgZXhlY3V0aW9uLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB3aXRoIHRoZSBvdXRwdXQgb2YgdGhlIGNvbW1hbmQgb3IgYW4gRXhlY1Jlc3VsdCBvYmplY3QuXG4gKiAgICAgICAgICBUaGUgRXhlY1Jlc3VsdCBvYmplY3QgY29udGFpbnMgdGhlIGV4aXQgY29kZSwgZXhpdCBzaWduYWwsIHN0ZGVyciwgYW5kIHN0ZG91dC5cbiAqIEB0aHJvd3MgSWYgdGhlIGNvbW1hbmQgZmFpbHMgd2l0aCBhIG5vbi16ZXJvIGV4aXQgY29kZSBhbmQgaWdub3JlRXhpdENvZGUgaXMgYGZhbHNlYC5cbiAqICAgICAgICAgVGhlIGVycm9yIG1lc3NhZ2UgaW5jbHVkZXMgdGhlIGV4aXQgY29kZSBhbmQgc3RkZXJyLlxuICogICAgICAgICBJZiBhbiBlcnJvciBvY2N1cnMgZHVyaW5nIHRoZSBleGVjdXRpb24gYW5kIGlnbm9yZUV4aXRDb2RlIGlzIGB0cnVlYCxcbiAqICAgICAgICAgdGhlIGVycm9yIGlzIHJlc29sdmVkIHdpdGggdGhlIHN0ZG91dCBhbmQgc3RkZXJyLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZXhlYyhjb21tYW5kOiBDb21tYW5kUGFydFtdIHwgc3RyaW5nLCBvcHRpb25zOiBFeGVjT3B0aW9uID0ge30pOiBQcm9taXNlPEV4ZWNSZXN1bHQgfCBzdHJpbmc+IHtcbiAgaWYgKEFycmF5LmlzQXJyYXkoY29tbWFuZCkpIHtcbiAgICBjb25zdCBiYXRjaFJlc3VsdCA9IGhhbmRsZUJhdGNoZWRDb21tYW5kKGNvbW1hbmQsIG9wdGlvbnMpO1xuICAgIGlmIChiYXRjaFJlc3VsdCkge1xuICAgICAgcmV0dXJuIGJhdGNoUmVzdWx0O1xuICAgIH1cbiAgICBjb25zdCBhcmdzID0gY29tbWFuZC5maWx0ZXIoKHBhcnQpOiBwYXJ0IGlzIHN0cmluZyA9PiB0eXBlb2YgcGFydCA9PT0gJ3N0cmluZycpO1xuICAgIGNvbnN0IGNvbW1hbmRMaW5lID0gdG9Db21tYW5kTGluZShhcmdzKTtcblxuICAgIGNvbnN0IG1heENvbW1hbmRMZW5ndGggPSBnZXRNYXhDb21tYW5kTGVuZ3RoKCk7XG4gICAgaWYgKGNvbW1hbmRMaW5lLmxlbmd0aCA+IG1heENvbW1hbmRMZW5ndGgpIHtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChcbiAgICAgICAgbmV3IEVycm9yKFxuICAgICAgICAgIGBDb21tYW5kIGxpbmUgaXMgdG9vIGxvbmcgKCR7U3RyaW5nKGNvbW1hbmRMaW5lLmxlbmd0aCl9IGNoYXJzLCBtYXggJHtcbiAgICAgICAgICAgIFN0cmluZyhtYXhDb21tYW5kTGVuZ3RoKVxuICAgICAgICAgIH0gb24gJHtwcm9jZXNzLnBsYXRmb3JtfSkuIENvbnNpZGVyIHNwbGl0dGluZyBpbnRvIHNtYWxsZXIgYmF0Y2hlcyBvciB1c2UgRXhlY0FyZy5gXG4gICAgICAgIClcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGV4ZWNTdHJpbmcoY29tbWFuZExpbmUsIG9wdGlvbnMsIGFyZ3MpO1xuICB9XG5cbiAgY29uc3QgbWF4Q29tbWFuZExlbmd0aCA9IGdldE1heENvbW1hbmRMZW5ndGgoKTtcbiAgaWYgKGNvbW1hbmQubGVuZ3RoID4gbWF4Q29tbWFuZExlbmd0aCkge1xuICAgIHJldHVybiBQcm9taXNlLnJlamVjdChcbiAgICAgIG5ldyBFcnJvcihcbiAgICAgICAgYENvbW1hbmQgbGluZSBpcyB0b28gbG9uZyAoJHtTdHJpbmcoY29tbWFuZC5sZW5ndGgpfSBjaGFycywgbWF4ICR7XG4gICAgICAgICAgU3RyaW5nKG1heENvbW1hbmRMZW5ndGgpXG4gICAgICAgIH0gb24gJHtwcm9jZXNzLnBsYXRmb3JtfSkuIENvbnNpZGVyIHNwbGl0dGluZyBpbnRvIHNtYWxsZXIgYmF0Y2hlcyBvciB1c2UgRXhlY0FyZy5gXG4gICAgICApXG4gICAgKTtcbiAgfVxuXG4gIHJldHVybiBleGVjU3RyaW5nKGNvbW1hbmQsIG9wdGlvbnMpO1xufVxuXG4vKipcbiAqIEV4ZWN1dGVzIGEgc2luZ2xlIHN0cmluZyBjb21tYW5kLlxuICpcbiAqIEBwYXJhbSBjb21tYW5kIC0gVGhlIGNvbW1hbmQgc3RyaW5nLlxuICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgZXhlYyBvcHRpb25zLlxuICogQHBhcmFtIHJhd0FyZ3MgLSBUaGUgb3JpZ2luYWwgYXJndW1lbnQgYXJyYXkgKGlmIGF2YWlsYWJsZSksIHVzZWQgYnkgdGhlIFBvd2VyU2hlbGxcbiAqICAgZmFsbGJhY2sgcGF0aCB0byBxdW90ZSBhcmd1bWVudHMgd2l0aCBQb3dlclNoZWxsLW5hdGl2ZSBzaW5nbGUgcXVvdGVzLlxuICogQHJldHVybnMgQSBQcm9taXNlIHJlc29sdmluZyB0byB0aGUgcmVzdWx0LlxuICovXG5mdW5jdGlvbiBleGVjU3RyaW5nKGNvbW1hbmQ6IHN0cmluZywgb3B0aW9uczogRXhlY09wdGlvbiA9IHt9LCByYXdBcmdzPzogc3RyaW5nW10pOiBQcm9taXNlPEV4ZWNSZXN1bHQgfCBzdHJpbmc+IHtcbiAgY29uc3Qge1xuICAgIGN3ZCA9IHByb2Nlc3MuY3dkKCksXG4gICAgaXNRdWlldDogcXVpZXQgPSBmYWxzZSxcbiAgICBzaG91bGRJZ25vcmVFeGl0Q29kZTogaWdub3JlRXhpdENvZGUgPSBmYWxzZSxcbiAgICBzaG91bGRJbmNsdWRlRGV0YWlsczogd2l0aERldGFpbHMgPSBmYWxzZSxcbiAgICBzdGRpbiA9ICcnXG4gIH0gPSBvcHRpb25zO1xuXG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgZ2V0TGliRGVidWdnZXIoJ0V4ZWMnKShgRXhlY3V0aW5nIGNvbW1hbmQ6ICR7Y29tbWFuZH1gKTtcblxuICAgIGNvbnN0IGNoaWxkID0gc3Bhd25WaWFTaGVsbChjb21tYW5kLCBjd2QsIHJhd0FyZ3MpO1xuXG4gICAgbGV0IHN0ZG91dCA9ICcnO1xuICAgIGxldCBzdGRlcnIgPSAnJztcblxuICAgIGNoaWxkLnN0ZGluLndyaXRlKHN0ZGluKTtcbiAgICBjaGlsZC5zdGRpbi5lbmQoKTtcblxuICAgIGNoaWxkLnN0ZG91dC5vbignZGF0YScsIChkYXRhOiBCdWZmZXIpID0+IHtcbiAgICAgIGlmICghcXVpZXQpIHtcbiAgICAgICAgcHJvY2Vzcy5zdGRvdXQud3JpdGUoZGF0YSk7XG4gICAgICB9XG4gICAgICBzdGRvdXQgKz0gZGF0YS50b1N0cmluZygndXRmLTgnKTtcbiAgICB9KTtcblxuICAgIGNoaWxkLnN0ZG91dC5vbignZW5kJywgKCkgPT4ge1xuICAgICAgc3Rkb3V0ID0gdHJpbUVuZChzdGRvdXQsICdcXG4nKTtcbiAgICB9KTtcblxuICAgIGNoaWxkLnN0ZGVyci5vbignZGF0YScsIChkYXRhOiBCdWZmZXIpID0+IHtcbiAgICAgIGlmICghcXVpZXQpIHtcbiAgICAgICAgcHJvY2Vzcy5zdGRlcnIud3JpdGUoZGF0YSk7XG4gICAgICB9XG4gICAgICBzdGRlcnIgKz0gZGF0YS50b1N0cmluZygndXRmLTgnKTtcbiAgICB9KTtcblxuICAgIGNoaWxkLnN0ZGVyci5vbignZW5kJywgKCkgPT4ge1xuICAgICAgc3RkZXJyID0gdHJpbUVuZChzdGRlcnIsICdcXG4nKTtcbiAgICB9KTtcblxuICAgIGNoaWxkLm9uKCdjbG9zZScsIChleGl0Q29kZSwgZXhpdFNpZ25hbCkgPT4ge1xuICAgICAgaWYgKGV4aXRDb2RlICE9PSAwICYmICFpZ25vcmVFeGl0Q29kZSkge1xuICAgICAgICByZWplY3QobmV3IEVycm9yKGBDb21tYW5kIGZhaWxlZCB3aXRoIGV4aXQgY29kZSAke2V4aXRDb2RlID8gU3RyaW5nKGV4aXRDb2RlKSA6ICcobnVsbCknfVxcbiR7c3RkZXJyfWApKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAoIXdpdGhEZXRhaWxzKSB7XG4gICAgICAgIHJlc29sdmUoc3Rkb3V0KTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgcmVzb2x2ZSh7XG4gICAgICAgIGV4aXRDb2RlLFxuICAgICAgICBleGl0U2lnbmFsLFxuICAgICAgICBzdGRlcnIsXG4gICAgICAgIHN0ZG91dFxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBjaGlsZC5vbignZXJyb3InLCAoZXJyKSA9PiB7XG4gICAgICBpZiAoIWlnbm9yZUV4aXRDb2RlKSB7XG4gICAgICAgIHJlamVjdChlcnIpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmICghd2l0aERldGFpbHMpIHtcbiAgICAgICAgcmVzb2x2ZShzdGRvdXQpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHJlc29sdmUoe1xuICAgICAgICBleGl0Q29kZTogbnVsbCxcbiAgICAgICAgZXhpdFNpZ25hbDogbnVsbCxcbiAgICAgICAgc3RkZXJyLFxuICAgICAgICBzdGRvdXRcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9KTtcbn1cblxuLyoqXG4gKiBEZWZhdWx0IGVudmlyb25tZW50IHZhcmlhYmxlcyBwYXNzZWQgdG8gY2hpbGQgcHJvY2Vzc2VzLlxuICovXG5jb25zdCBDSElMRF9FTlYgPSB7XG4gIERFQlVHX0NPTE9SUzogJzEnLFxuICAuLi5wcm9jZXNzLmVudlxufTtcblxuLyoqXG4gKiBFeGVjdXRlcyBiYXRjaGVkIGNvbW1hbmRzIHNlcXVlbnRpYWxseSBhbmQgY29uY2F0ZW5hdGVzIHN0ZG91dC5cbiAqXG4gKiBAcGFyYW0gYmFzZUNvbW1hbmQgLSBUaGUgYmFzZSBjb21tYW5kIHdpdGhvdXQgYmF0Y2hlZCBhcmdzLlxuICogQHBhcmFtIGJhdGNoZXMgLSBUaGUgYmF0Y2hlcyBvZiBhcmdzLlxuICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgZXhlYyBvcHRpb25zLlxuICogQHJldHVybnMgQSBQcm9taXNlIHJlc29sdmluZyB0byB0aGUgY29uY2F0ZW5hdGVkIHJlc3VsdC5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gZXhlY3V0ZUJhdGNoZXMoYmFzZUNvbW1hbmQ6IHN0cmluZywgYmF0Y2hlczogc3RyaW5nW11bXSwgb3B0aW9uczogRXhlY09wdGlvbik6IFByb21pc2U8RXhlY1Jlc3VsdCB8IHN0cmluZz4ge1xuICBjb25zdCByZXN1bHRzOiBzdHJpbmdbXSA9IFtdO1xuXG4gIGZvciAoY29uc3QgYmF0Y2ggb2YgYmF0Y2hlcykge1xuICAgIGNvbnN0IGJhdGNoQ29tbWFuZCA9IGAke2Jhc2VDb21tYW5kfSAke2JhdGNoLmpvaW4oJyAnKX1gO1xuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGV4ZWNTdHJpbmcoYmF0Y2hDb21tYW5kLCBvcHRpb25zKTtcbiAgICBpZiAodHlwZW9mIHJlc3VsdCA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHJlc3VsdHMucHVzaChyZXN1bHQpO1xuICAgIH1cbiAgfVxuXG4gIGlmIChvcHRpb25zLnNob3VsZEluY2x1ZGVEZXRhaWxzKSB7XG4gICAgcmV0dXJuIHsgZXhpdENvZGU6IDAsIGV4aXRTaWduYWw6IG51bGwsIHN0ZGVycjogJycsIHN0ZG91dDogcmVzdWx0cy5qb2luKCdcXG4nKSB9O1xuICB9XG5cbiAgcmV0dXJuIHJlc3VsdHMuam9pbignXFxuJyk7XG59XG5cbi8qKlxuICogUmV0dXJucyB0aGUgcGxhdGZvcm0tc3BlY2lmaWMgbWF4IGNvbW1hbmQgbGluZSBsZW5ndGguXG4gKlxuICogQHJldHVybnMgVGhlIG1heCBjb21tYW5kIGxlbmd0aCBpbiBjaGFyYWN0ZXJzLlxuICovXG5mdW5jdGlvbiBnZXRNYXhDb21tYW5kTGVuZ3RoKCk6IG51bWJlciB7XG4gIGNvbnN0IFdJTkRPV1NfTUFYX0NPTU1BTkRfTEVOR1RIID0gODE5MTtcbiAgY29uc3QgVU5JWF9NQVhfQ09NTUFORF9MRU5HVEggPSAxMzEwNzI7XG4gIHJldHVybiBwcm9jZXNzLnBsYXRmb3JtID09PSAnd2luMzInID8gV0lORE9XU19NQVhfQ09NTUFORF9MRU5HVEggOiBVTklYX01BWF9DT01NQU5EX0xFTkdUSDtcbn1cblxuLyoqXG4gKiBIYW5kbGVzIGEgY29tbWFuZCBhcnJheSB0aGF0IG1heSBjb250YWluIGFuIHtAbGluayBFeGVjQXJnfS5cbiAqIFJldHVybnMgYSBQcm9taXNlIGlmIGJhdGNoaW5nIGlzIG5lZWRlZCwgb3IgYHVuZGVmaW5lZGAgaWYgdGhlIGNvbW1hbmRcbiAqIGhhcyBubyBFeGVjQXJnIGFuZCBzaG91bGQgYmUgcHJvY2Vzc2VkIG5vcm1hbGx5LlxuICpcbiAqIEBwYXJhbSBwYXJ0cyAtIFRoZSBjb21tYW5kIHBhcnRzLlxuICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgZXhlYyBvcHRpb25zLlxuICogQHJldHVybnMgQSBQcm9taXNlIGlmIGJhdGNoaW5nIGlzIGhhbmRsZWQsIG9yIGB1bmRlZmluZWRgLlxuICovXG5mdW5jdGlvbiBoYW5kbGVCYXRjaGVkQ29tbWFuZChwYXJ0czogQ29tbWFuZFBhcnRbXSwgb3B0aW9uczogRXhlY09wdGlvbik6IFByb21pc2U8RXhlY1Jlc3VsdCB8IHN0cmluZz4gfCB1bmRlZmluZWQge1xuICBjb25zdCBleGVjQXJncyA9IHBhcnRzLmZpbHRlcihpc0V4ZWNBcmcpO1xuICBpZiAoZXhlY0FyZ3MubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuICBpZiAoZXhlY0FyZ3MubGVuZ3RoID4gMSkge1xuICAgIHJldHVybiBQcm9taXNlLnJlamVjdChuZXcgRXJyb3IoJ09ubHkgb25lIEV4ZWNBcmcgd2l0aCBiYXRjaGVkQXJncyBpcyBhbGxvd2VkIHBlciBjb21tYW5kJykpO1xuICB9XG5cbiAgY29uc3QgZXhlY0FyZyA9IGV4ZWNBcmdzWzBdO1xuICBhc3NlcnROb25OdWxsYWJsZShleGVjQXJnKTtcbiAgY29uc3Qgc3RhdGljUGFydHMgPSBwYXJ0cy5maWx0ZXIoKHBhcnQpOiBwYXJ0IGlzIHN0cmluZyA9PiB0eXBlb2YgcGFydCA9PT0gJ3N0cmluZycpO1xuICBjb25zdCBiYXNlQ29tbWFuZCA9IHRvQ29tbWFuZExpbmUoc3RhdGljUGFydHMpO1xuICBjb25zdCBtYXhDb21tYW5kTGVuZ3RoID0gZ2V0TWF4Q29tbWFuZExlbmd0aCgpO1xuXG4gIC8vIFRyeSBleHBhbmRpbmcgYWxsIGFyZ3MgaW5saW5lXG4gIGNvbnN0IGZ1bGxDb21tYW5kID0gYCR7YmFzZUNvbW1hbmR9ICR7ZXhlY0FyZy5iYXRjaGVkQXJncy5qb2luKCcgJyl9YDtcbiAgaWYgKGZ1bGxDb21tYW5kLmxlbmd0aCA8PSBtYXhDb21tYW5kTGVuZ3RoKSB7XG4gICAgcmV0dXJuIGV4ZWNTdHJpbmcoZnVsbENvbW1hbmQsIG9wdGlvbnMpO1xuICB9XG5cbiAgLy8gU3BsaXQgaW50byBiYXRjaGVzXG4gIGNvbnN0IGJhdGNoZXM6IHN0cmluZ1tdW10gPSBbXTtcbiAgbGV0IGN1cnJlbnRCYXRjaDogc3RyaW5nW10gPSBbXTtcblxuICBmb3IgKGNvbnN0IGFyZyBvZiBleGVjQXJnLmJhdGNoZWRBcmdzKSB7XG4gICAgY29uc3QgdGVudGF0aXZlID0gYCR7YmFzZUNvbW1hbmR9ICR7Wy4uLmN1cnJlbnRCYXRjaCwgYXJnXS5qb2luKCcgJyl9YDtcbiAgICBpZiAodGVudGF0aXZlLmxlbmd0aCA+IG1heENvbW1hbmRMZW5ndGgpIHtcbiAgICAgIGlmIChjdXJyZW50QmF0Y2gubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChcbiAgICAgICAgICBuZXcgRXJyb3IoXG4gICAgICAgICAgICBgQ2Fubm90IHNwbGl0IGNvbW1hbmQgaW50byBiYXRjaGVzOiBhIHNpbmdsZSBhcmd1bWVudCAoJHtTdHJpbmcoYXJnLmxlbmd0aCl9IGNoYXJzKSBwbHVzIHRoZSBiYXNlIGNvbW1hbmQgKCR7XG4gICAgICAgICAgICAgIFN0cmluZyhiYXNlQ29tbWFuZC5sZW5ndGgpXG4gICAgICAgICAgICB9IGNoYXJzKSBleGNlZWRzIHRoZSBtYXggY29tbWFuZCBsZW5ndGggKCR7U3RyaW5nKG1heENvbW1hbmRMZW5ndGgpfSkuYFxuICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIGJhdGNoZXMucHVzaChjdXJyZW50QmF0Y2gpO1xuICAgICAgY3VycmVudEJhdGNoID0gW2FyZ107XG4gICAgfSBlbHNlIHtcbiAgICAgIGN1cnJlbnRCYXRjaC5wdXNoKGFyZyk7XG4gICAgfVxuICB9XG4gIC8qIHY4IGlnbm9yZSBzdGFydCAtLSBBbHdheXMgdHJ1ZSBhZnRlciB0aGUgbG9vcDsgYmF0Y2hlZEFyZ3MgaXMgbm9uLWVtcHR5IGF0IHRoaXMgcG9pbnQuICovXG4gIGlmIChjdXJyZW50QmF0Y2gubGVuZ3RoID4gMCkge1xuICAgIC8qIHY4IGlnbm9yZSBzdG9wICovXG4gICAgYmF0Y2hlcy5wdXNoKGN1cnJlbnRCYXRjaCk7XG4gIH1cblxuICByZXR1cm4gZXhlY3V0ZUJhdGNoZXMoYmFzZUNvbW1hbmQsIGJhdGNoZXMsIG9wdGlvbnMpO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiBhIGNvbW1hbmQgcGFydCBpcyBhbiB7QGxpbmsgRXhlY0FyZ30uXG4gKlxuICogQHBhcmFtIHBhcnQgLSBUaGUgY29tbWFuZCBwYXJ0IHRvIGNoZWNrLlxuICogQHJldHVybnMgV2hldGhlciB0aGUgcGFydCBpcyBhbiBFeGVjQXJnLlxuICovXG5mdW5jdGlvbiBpc0V4ZWNBcmcocGFydDogQ29tbWFuZFBhcnQpOiBwYXJ0IGlzIEV4ZWNBcmcge1xuICByZXR1cm4gdHlwZW9mIHBhcnQgPT09ICdvYmplY3QnICYmICdiYXRjaGVkQXJncycgaW4gcGFydDtcbn1cblxuLyoqXG4gKiBTcGF3bnMgYSBjaGlsZCBwcm9jZXNzIHZpYSB0aGUgYXBwcm9wcmlhdGUgc2hlbGwuXG4gKlxuICogT24gV2luZG93cywgaWYgdGhlIGNvbW1hbmQgY29udGFpbnMgbmV3bGluZXMgKHdoaWNoIGBjbWQuZXhlYCBjYW5ub3QgaGFuZGxlKVxuICogYW5kIHRoZSByYXcgYXJncyBhcnJheSBpcyBhdmFpbGFibGUsIHNwYXducyB0aGUgcHJvY2VzcyBkaXJlY3RseSB3aXRob3V0XG4gKiBhbnkgc2hlbGwgXHUyMDE0IHBhc3NpbmcgYXJncyB2aWEgYENyZWF0ZVByb2Nlc3NgLCB3aGljaCBhdm9pZHMgYWxsIHF1b3RpbmcgaXNzdWVzLlxuICpcbiAqIE9uIFdpbmRvd3MgKGNtZC5leGUgcGF0aCksIGFwcGxpZXMgYF5gLWVzY2FwaW5nIGZvciBjbWQgbWV0YWNoYXJhY3RlcnMuXG4gKlxuICogQHBhcmFtIGNvbW1hbmQgLSBUaGUgY29tbWFuZCBzdHJpbmcgdG8gZXhlY3V0ZS5cbiAqIEBwYXJhbSBjd2QgLSBUaGUgd29ya2luZyBkaXJlY3RvcnkuXG4gKiBAcGFyYW0gcmF3QXJncyAtIFRoZSBvcmlnaW5hbCBhcmd1bWVudCBhcnJheSAoaWYgYXZhaWxhYmxlKS5cbiAqIEByZXR1cm5zIFRoZSBzcGF3bmVkIGNoaWxkIHByb2Nlc3MuXG4gKi9cbmZ1bmN0aW9uIHNwYXduVmlhU2hlbGwoY29tbWFuZDogc3RyaW5nLCBjd2Q6IHN0cmluZywgcmF3QXJncz86IHN0cmluZ1tdKTogQ2hpbGRQcm9jZXNzV2l0aG91dE51bGxTdHJlYW1zIHtcbiAgaWYgKHByb2Nlc3MucGxhdGZvcm0gPT09ICd3aW4zMicgJiYgY29tbWFuZC5pbmNsdWRlcygnXFxuJykpIHtcbiAgICBpZiAoIXJhd0FyZ3MpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQ29tbWFuZHMgY29udGFpbmluZyBuZXdsaW5lcyBjYW5ub3QgYmUgZXhlY3V0ZWQgdGhyb3VnaCBjbWQuZXhlIG9uIFdpbmRvd3MuIFBhc3MgYW4gYXJndW1lbnQgYXJyYXkgaW5zdGVhZCBvZiBhIHN0cmluZy4nKTtcbiAgICB9XG4gICAgY29uc3QgW3Byb2dyYW0sIC4uLmFyZ3NdID0gcmF3QXJncztcbiAgICBhc3NlcnROb25OdWxsYWJsZShwcm9ncmFtLCAnQ29tbWFuZCBhcnJheSBtdXN0IG5vdCBiZSBlbXB0eScpO1xuICAgIHJldHVybiBzcGF3bihwcm9ncmFtLCBhcmdzLCB7XG4gICAgICBjd2QsXG4gICAgICBlbnY6IENISUxEX0VOVixcbiAgICAgIHN0ZGlvOiAncGlwZSdcbiAgICB9KTtcbiAgfVxuXG4gIGNvbnN0IHNoZWxsQ29tbWFuZCA9IHByb2Nlc3MucGxhdGZvcm0gPT09ICd3aW4zMicgPyBjbWRFc2NhcGVDb21tYW5kTGluZShjb21tYW5kKSA6IGNvbW1hbmQ7XG4gIHJldHVybiBzcGF3bihzaGVsbENvbW1hbmQsIFtdLCB7XG4gICAgY3dkLFxuICAgIGVudjogQ0hJTERfRU5WLFxuICAgIHNoZWxsOiB0cnVlLFxuICAgIHN0ZGlvOiAncGlwZSdcbiAgfSk7XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQVFBLFNBQVMsYUFBYTtBQUN0QixPQUFPLGFBQWE7QUFFcEIsU0FBUyxzQkFBc0I7QUFDL0IsU0FBUyxlQUFlO0FBQ3hCLFNBQVMseUJBQXlCO0FBQ2xDO0FBQUEsRUFDRTtBQUFBLEVBQ0E7QUFBQSxPQUNLO0FBd0lBLFNBQVMsS0FBSyxTQUFpQyxVQUFzQixDQUFDLEdBQWlDO0FBQzVHLE1BQUksTUFBTSxRQUFRLE9BQU8sR0FBRztBQUMxQixVQUFNLGNBQWMscUJBQXFCLFNBQVMsT0FBTztBQUN6RCxRQUFJLGFBQWE7QUFDZixhQUFPO0FBQUEsSUFDVDtBQUNBLFVBQU0sT0FBTyxRQUFRLE9BQU8sQ0FBQyxTQUF5QixPQUFPLFNBQVMsUUFBUTtBQUM5RSxVQUFNLGNBQWMsY0FBYyxJQUFJO0FBRXRDLFVBQU1BLG9CQUFtQixvQkFBb0I7QUFDN0MsUUFBSSxZQUFZLFNBQVNBLG1CQUFrQjtBQUN6QyxhQUFPLFFBQVE7QUFBQSxRQUNiLElBQUk7QUFBQSxVQUNGLDZCQUE2QixPQUFPLFlBQVksTUFBTSxDQUFDLGVBQ3JELE9BQU9BLGlCQUFnQixDQUN6QixPQUFPLFFBQVEsUUFBUTtBQUFBLFFBQ3pCO0FBQUEsTUFDRjtBQUFBLElBQ0Y7QUFFQSxXQUFPLFdBQVcsYUFBYSxTQUFTLElBQUk7QUFBQSxFQUM5QztBQUVBLFFBQU0sbUJBQW1CLG9CQUFvQjtBQUM3QyxNQUFJLFFBQVEsU0FBUyxrQkFBa0I7QUFDckMsV0FBTyxRQUFRO0FBQUEsTUFDYixJQUFJO0FBQUEsUUFDRiw2QkFBNkIsT0FBTyxRQUFRLE1BQU0sQ0FBQyxlQUNqRCxPQUFPLGdCQUFnQixDQUN6QixPQUFPLFFBQVEsUUFBUTtBQUFBLE1BQ3pCO0FBQUEsSUFDRjtBQUFBLEVBQ0Y7QUFFQSxTQUFPLFdBQVcsU0FBUyxPQUFPO0FBQ3BDO0FBV0EsU0FBUyxXQUFXLFNBQWlCLFVBQXNCLENBQUMsR0FBRyxTQUFrRDtBQUMvRyxRQUFNO0FBQUEsSUFDSixNQUFNLFFBQVEsSUFBSTtBQUFBLElBQ2xCLFNBQVMsUUFBUTtBQUFBLElBQ2pCLHNCQUFzQixpQkFBaUI7QUFBQSxJQUN2QyxzQkFBc0IsY0FBYztBQUFBLElBQ3BDLFFBQVE7QUFBQSxFQUNWLElBQUk7QUFFSixTQUFPLElBQUksUUFBUSxDQUFDLFNBQVMsV0FBVztBQUN0QyxtQkFBZSxNQUFNLEVBQUUsc0JBQXNCLE9BQU8sRUFBRTtBQUV0RCxVQUFNLFFBQVEsY0FBYyxTQUFTLEtBQUssT0FBTztBQUVqRCxRQUFJLFNBQVM7QUFDYixRQUFJLFNBQVM7QUFFYixVQUFNLE1BQU0sTUFBTSxLQUFLO0FBQ3ZCLFVBQU0sTUFBTSxJQUFJO0FBRWhCLFVBQU0sT0FBTyxHQUFHLFFBQVEsQ0FBQyxTQUFpQjtBQUN4QyxVQUFJLENBQUMsT0FBTztBQUNWLGdCQUFRLE9BQU8sTUFBTSxJQUFJO0FBQUEsTUFDM0I7QUFDQSxnQkFBVSxLQUFLLFNBQVMsT0FBTztBQUFBLElBQ2pDLENBQUM7QUFFRCxVQUFNLE9BQU8sR0FBRyxPQUFPLE1BQU07QUFDM0IsZUFBUyxRQUFRLFFBQVEsSUFBSTtBQUFBLElBQy9CLENBQUM7QUFFRCxVQUFNLE9BQU8sR0FBRyxRQUFRLENBQUMsU0FBaUI7QUFDeEMsVUFBSSxDQUFDLE9BQU87QUFDVixnQkFBUSxPQUFPLE1BQU0sSUFBSTtBQUFBLE1BQzNCO0FBQ0EsZ0JBQVUsS0FBSyxTQUFTLE9BQU87QUFBQSxJQUNqQyxDQUFDO0FBRUQsVUFBTSxPQUFPLEdBQUcsT0FBTyxNQUFNO0FBQzNCLGVBQVMsUUFBUSxRQUFRLElBQUk7QUFBQSxJQUMvQixDQUFDO0FBRUQsVUFBTSxHQUFHLFNBQVMsQ0FBQyxVQUFVLGVBQWU7QUFDMUMsVUFBSSxhQUFhLEtBQUssQ0FBQyxnQkFBZ0I7QUFDckMsZUFBTyxJQUFJLE1BQU0saUNBQWlDLFdBQVcsT0FBTyxRQUFRLElBQUksUUFBUTtBQUFBLEVBQUssTUFBTSxFQUFFLENBQUM7QUFDdEc7QUFBQSxNQUNGO0FBRUEsVUFBSSxDQUFDLGFBQWE7QUFDaEIsZ0JBQVEsTUFBTTtBQUNkO0FBQUEsTUFDRjtBQUNBLGNBQVE7QUFBQSxRQUNOO0FBQUEsUUFDQTtBQUFBLFFBQ0E7QUFBQSxRQUNBO0FBQUEsTUFDRixDQUFDO0FBQUEsSUFDSCxDQUFDO0FBRUQsVUFBTSxHQUFHLFNBQVMsQ0FBQyxRQUFRO0FBQ3pCLFVBQUksQ0FBQyxnQkFBZ0I7QUFDbkIsZUFBTyxHQUFHO0FBQ1Y7QUFBQSxNQUNGO0FBRUEsVUFBSSxDQUFDLGFBQWE7QUFDaEIsZ0JBQVEsTUFBTTtBQUNkO0FBQUEsTUFDRjtBQUVBLGNBQVE7QUFBQSxRQUNOLFVBQVU7QUFBQSxRQUNWLFlBQVk7QUFBQSxRQUNaO0FBQUEsUUFDQTtBQUFBLE1BQ0YsQ0FBQztBQUFBLElBQ0gsQ0FBQztBQUFBLEVBQ0gsQ0FBQztBQUNIO0FBS0EsTUFBTSxZQUFZO0FBQUEsRUFDaEIsY0FBYztBQUFBLEVBQ2QsR0FBRyxRQUFRO0FBQ2I7QUFVQSxlQUFlLGVBQWUsYUFBcUIsU0FBcUIsU0FBbUQ7QUFDekgsUUFBTSxVQUFvQixDQUFDO0FBRTNCLGFBQVcsU0FBUyxTQUFTO0FBQzNCLFVBQU0sZUFBZSxHQUFHLFdBQVcsSUFBSSxNQUFNLEtBQUssR0FBRyxDQUFDO0FBQ3RELFVBQU0sU0FBUyxNQUFNLFdBQVcsY0FBYyxPQUFPO0FBQ3JELFFBQUksT0FBTyxXQUFXLFVBQVU7QUFDOUIsY0FBUSxLQUFLLE1BQU07QUFBQSxJQUNyQjtBQUFBLEVBQ0Y7QUFFQSxNQUFJLFFBQVEsc0JBQXNCO0FBQ2hDLFdBQU8sRUFBRSxVQUFVLEdBQUcsWUFBWSxNQUFNLFFBQVEsSUFBSSxRQUFRLFFBQVEsS0FBSyxJQUFJLEVBQUU7QUFBQSxFQUNqRjtBQUVBLFNBQU8sUUFBUSxLQUFLLElBQUk7QUFDMUI7QUFPQSxTQUFTLHNCQUE4QjtBQUNyQyxRQUFNLDZCQUE2QjtBQUNuQyxRQUFNLDBCQUEwQjtBQUNoQyxTQUFPLFFBQVEsYUFBYSxVQUFVLDZCQUE2QjtBQUNyRTtBQVdBLFNBQVMscUJBQXFCLE9BQXNCLFNBQStEO0FBQ2pILFFBQU0sV0FBVyxNQUFNLE9BQU8sU0FBUztBQUN2QyxNQUFJLFNBQVMsV0FBVyxHQUFHO0FBQ3pCLFdBQU87QUFBQSxFQUNUO0FBQ0EsTUFBSSxTQUFTLFNBQVMsR0FBRztBQUN2QixXQUFPLFFBQVEsT0FBTyxJQUFJLE1BQU0sMERBQTBELENBQUM7QUFBQSxFQUM3RjtBQUVBLFFBQU0sVUFBVSxTQUFTLENBQUM7QUFDMUIsb0JBQWtCLE9BQU87QUFDekIsUUFBTSxjQUFjLE1BQU0sT0FBTyxDQUFDLFNBQXlCLE9BQU8sU0FBUyxRQUFRO0FBQ25GLFFBQU0sY0FBYyxjQUFjLFdBQVc7QUFDN0MsUUFBTSxtQkFBbUIsb0JBQW9CO0FBRzdDLFFBQU0sY0FBYyxHQUFHLFdBQVcsSUFBSSxRQUFRLFlBQVksS0FBSyxHQUFHLENBQUM7QUFDbkUsTUFBSSxZQUFZLFVBQVUsa0JBQWtCO0FBQzFDLFdBQU8sV0FBVyxhQUFhLE9BQU87QUFBQSxFQUN4QztBQUdBLFFBQU0sVUFBc0IsQ0FBQztBQUM3QixNQUFJLGVBQXlCLENBQUM7QUFFOUIsYUFBVyxPQUFPLFFBQVEsYUFBYTtBQUNyQyxVQUFNLFlBQVksR0FBRyxXQUFXLElBQUksQ0FBQyxHQUFHLGNBQWMsR0FBRyxFQUFFLEtBQUssR0FBRyxDQUFDO0FBQ3BFLFFBQUksVUFBVSxTQUFTLGtCQUFrQjtBQUN2QyxVQUFJLGFBQWEsV0FBVyxHQUFHO0FBQzdCLGVBQU8sUUFBUTtBQUFBLFVBQ2IsSUFBSTtBQUFBLFlBQ0YseURBQXlELE9BQU8sSUFBSSxNQUFNLENBQUMsa0NBQ3pFLE9BQU8sWUFBWSxNQUFNLENBQzNCLDJDQUEyQyxPQUFPLGdCQUFnQixDQUFDO0FBQUEsVUFDckU7QUFBQSxRQUNGO0FBQUEsTUFDRjtBQUNBLGNBQVEsS0FBSyxZQUFZO0FBQ3pCLHFCQUFlLENBQUMsR0FBRztBQUFBLElBQ3JCLE9BQU87QUFDTCxtQkFBYSxLQUFLLEdBQUc7QUFBQSxJQUN2QjtBQUFBLEVBQ0Y7QUFFQSxNQUFJLGFBQWEsU0FBUyxHQUFHO0FBRTNCLFlBQVEsS0FBSyxZQUFZO0FBQUEsRUFDM0I7QUFFQSxTQUFPLGVBQWUsYUFBYSxTQUFTLE9BQU87QUFDckQ7QUFRQSxTQUFTLFVBQVUsTUFBb0M7QUFDckQsU0FBTyxPQUFPLFNBQVMsWUFBWSxpQkFBaUI7QUFDdEQ7QUFnQkEsU0FBUyxjQUFjLFNBQWlCLEtBQWEsU0FBb0Q7QUFDdkcsTUFBSSxRQUFRLGFBQWEsV0FBVyxRQUFRLFNBQVMsSUFBSSxHQUFHO0FBQzFELFFBQUksQ0FBQyxTQUFTO0FBQ1osWUFBTSxJQUFJLE1BQU0seUhBQXlIO0FBQUEsSUFDM0k7QUFDQSxVQUFNLENBQUMsU0FBUyxHQUFHLElBQUksSUFBSTtBQUMzQixzQkFBa0IsU0FBUyxpQ0FBaUM7QUFDNUQsV0FBTyxNQUFNLFNBQVMsTUFBTTtBQUFBLE1BQzFCO0FBQUEsTUFDQSxLQUFLO0FBQUEsTUFDTCxPQUFPO0FBQUEsSUFDVCxDQUFDO0FBQUEsRUFDSDtBQUVBLFFBQU0sZUFBZSxRQUFRLGFBQWEsVUFBVSxxQkFBcUIsT0FBTyxJQUFJO0FBQ3BGLFNBQU8sTUFBTSxjQUFjLENBQUMsR0FBRztBQUFBLElBQzdCO0FBQUEsSUFDQSxLQUFLO0FBQUEsSUFDTCxPQUFPO0FBQUEsSUFDUCxPQUFPO0FBQUEsRUFDVCxDQUFDO0FBQ0g7IiwKICAibmFtZXMiOiBbIm1heENvbW1hbmRMZW5ndGgiXQp9Cg==
219
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL3NjcmlwdC11dGlscy9leGVjLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogQ29udGFpbnMgdXRpbGl0eSBmdW5jdGlvbnMgZm9yIGV4ZWN1dGluZyBjb21tYW5kcy5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7IENoaWxkUHJvY2Vzc1dpdGhvdXROdWxsU3RyZWFtcyB9IGZyb20gJ25vZGU6Y2hpbGRfcHJvY2Vzcyc7XG5cbmltcG9ydCB7IHNwYXduIH0gZnJvbSAnbm9kZTpjaGlsZF9wcm9jZXNzJztcbmltcG9ydCBwcm9jZXNzIGZyb20gJ25vZGU6cHJvY2Vzcyc7XG5cbmltcG9ydCB7IGdldExpYkRlYnVnZ2VyIH0gZnJvbSAnLi4vZGVidWcudHMnO1xuaW1wb3J0IHsgdHJpbUVuZCB9IGZyb20gJy4uL3N0cmluZy50cyc7XG5pbXBvcnQgeyBhc3NlcnROb25OdWxsYWJsZSB9IGZyb20gJy4uL3R5cGUtZ3VhcmRzLnRzJztcbmltcG9ydCB7XG4gIGNtZEVzY2FwZUNvbW1hbmRMaW5lLFxuICB0b0NvbW1hbmRMaW5lXG59IGZyb20gJy4vY2xpLXV0aWxzLnRzJztcblxuLyoqXG4gKiBBIGNvbW1hbmQgcGFydDogZWl0aGVyIGEgcGxhaW4gc3RyaW5nIG9yIGFuIHtAbGluayBFeGVjQXJnfSB3aXRoIGJhdGNoZWQgYXJndW1lbnRzLlxuICovXG5leHBvcnQgdHlwZSBDb21tYW5kUGFydCA9IEV4ZWNBcmcgfCBzdHJpbmc7XG5cbi8qKlxuICogQSBjb21tYW5kIGFyZ3VtZW50IHRoYXQgY29udGFpbnMgYSBsaXN0IG9mIGFyZ3MgdG8gYmUgYmF0Y2hlZC5cbiAqIElmIHRoZSBleHBhbmRlZCBjb21tYW5kIGV4Y2VlZHMgdGhlIHBsYXRmb3JtJ3MgbWF4IGNvbW1hbmQgbGVuZ3RoLFxuICogdGhlIGJhdGNoZWQgYXJncyBhcmUgc3BsaXQgaW50byBzZXF1ZW50aWFsIGV4ZWN1dGlvbnMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRXhlY0FyZyB7XG4gIC8qKlxuICAgKiBUaGUgYXJndW1lbnRzIHRvIGJhdGNoLlxuICAgKi9cbiAgcmVhZG9ubHkgYmF0Y2hlZEFyZ3M6IHJlYWRvbmx5IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIHtAbGluayBleGVjfSB0aGF0IHJldHVybiBkZXRhaWxlZCByZXN1bHRzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEV4ZWNEZXRhaWxlZE9wdGlvbnMgZXh0ZW5kcyBFeGVjT3B0aW9uIHtcbiAgLyoqXG4gICAqIE11c3QgYmUgYHRydWVgIHRvIHJlY2VpdmUgZGV0YWlsZWQgcmVzdWx0cy5cbiAgICovXG4gIHJlYWRvbmx5IHNob3VsZEluY2x1ZGVEZXRhaWxzOiB0cnVlO1xufVxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIGV4ZWN1dGluZyBhIGNvbW1hbmQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRXhlY09wdGlvbiB7XG4gIC8qKlxuICAgKiBBIGN1cnJlbnQgd29ya2luZyBmb2xkZXIgZm9yIHRoZSBjb21tYW5kIGV4ZWN1dGlvbi5cbiAgICovXG4gIHJlYWRvbmx5IGN3ZD86IHN0cmluZztcblxuICAvKipcbiAgICogSWYgYHRydWVgLCBzdXBwcmVzc2VzIHRoZSBvdXRwdXQgb2YgdGhlIGNvbW1hbmQuXG4gICAqL1xuICByZWFkb25seSBpc1F1aWV0PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogSWYgYHRydWVgLCB0aHJvd3MgYW4gZXJyb3IgaWYgdGhlIGNvbW1hbmQgZmFpbHMuXG4gICAqL1xuICByZWFkb25seSBzaG91bGRGYWlsSWZDYWxsZWRGcm9tT3V0c2lkZVJvb3Q/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAsIGlnbm9yZXMgdGhlIGV4aXQgY29kZSBvZiB0aGUgY29tbWFuZC5cbiAgICovXG4gIHJlYWRvbmx5IHNob3VsZElnbm9yZUV4aXRDb2RlPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogSWYgYGZhbHNlYCwgb25seSByZXR1cm5zIHRoZSBvdXRwdXQgb2YgdGhlIGNvbW1hbmQuXG4gICAqL1xuICByZWFkb25seSBzaG91bGRJbmNsdWRlRGV0YWlscz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEFuIGlucHV0IHRvIGJlIHBhc3NlZCB0byB0aGUgY29tbWFuZC5cbiAgICovXG4gIHJlYWRvbmx5IHN0ZGluPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIEEgcmVzdWx0IG9mIHtAbGluayBleGVjfS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFeGVjUmVzdWx0IHtcbiAgLyoqXG4gICAqIEFuIGV4aXQgY29kZSBvZiB0aGUgY29tbWFuZC4gQSB2YWx1ZSBvZiBgbnVsbGAgaW5kaWNhdGVzIHRoYXQgdGhlIHByb2Nlc3MgZGlkIG5vdCBleGl0IG5vcm1hbGx5LlxuICAgKi9cbiAgcmVhZG9ubHkgZXhpdENvZGU6IG51bGwgfCBudW1iZXI7XG5cbiAgLyoqXG4gICAqIEEgc2lnbmFsIHRoYXQgY2F1c2VkIHRoZSBwcm9jZXNzIHRvIGJlIHRlcm1pbmF0ZWQuIEEgdmFsdWUgb2YgYG51bGxgIGluZGljYXRlcyB0aGF0IG5vIHNpZ25hbCB3YXMgcmVjZWl2ZWQuXG4gICAqL1xuICByZWFkb25seSBleGl0U2lnbmFsOiBOb2RlSlMuU2lnbmFscyB8IG51bGw7XG5cbiAgLyoqXG4gICAqIEEgc3RhbmRhcmQgZXJyb3Igb3V0cHV0IGZyb20gdGhlIGNvbW1hbmQuXG4gICAqL1xuICByZWFkb25seSBzdGRlcnI6IHN0cmluZztcblxuICAvKipcbiAgICogQSBzdGFuZGFyZCBvdXRwdXQgZnJvbSB0aGUgY29tbWFuZC5cbiAgICovXG4gIHJlYWRvbmx5IHN0ZG91dDogc3RyaW5nO1xufVxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIHtAbGluayBleGVjfSB0aGF0IHJldHVybiBvbmx5IHN0ZG91dC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFeGVjU2ltcGxlT3B0aW9ucyBleHRlbmRzIEV4ZWNPcHRpb24ge1xuICAvKipcbiAgICogTXVzdCBiZSBgZmFsc2VgIG9yIG9taXR0ZWQgdG8gcmVjZWl2ZSBvbmx5IHN0ZG91dC5cbiAgICovXG4gIHJlYWRvbmx5IHNob3VsZEluY2x1ZGVEZXRhaWxzPzogZmFsc2U7XG59XG5cbi8qKlxuICogRXhlY3V0ZXMgYSBjb21tYW5kLlxuICpcbiAqIEBwYXJhbSBjb21tYW5kIC0gVGhlIGNvbW1hbmQgdG8gZXhlY3V0ZS4gSXQgY2FuIGJlIGEgc3RyaW5nIG9yIGFuIGFycmF5IG9mIHN0cmluZ3MuXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBvcHRpb25zIGZvciB0aGUgZXhlY3V0aW9uLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB3aXRoIHRoZSBvdXRwdXQgb2YgdGhlIGNvbW1hbmQuXG4gKiBAdGhyb3dzIElmIHRoZSBjb21tYW5kIGZhaWxzIHdpdGggYSBub24temVybyBleGl0IGNvZGUgYW5kIGlnbm9yZUV4aXRDb2RlIGlzIGBmYWxzZWAuXG4gKiAgICAgICAgIFRoZSBlcnJvciBtZXNzYWdlIGluY2x1ZGVzIHRoZSBleGl0IGNvZGUgYW5kIHN0ZGVyci5cbiAqICAgICAgICAgSWYgYW4gZXJyb3Igb2NjdXJzIGR1cmluZyB0aGUgZXhlY3V0aW9uIGFuZCBpZ25vcmVFeGl0Q29kZSBpcyBgdHJ1ZWAsXG4gKiAgICAgICAgIHRoZSBlcnJvciBpcyByZXNvbHZlZCB3aXRoIHRoZSBzdGRvdXQgYW5kIHN0ZGVyci5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGV4ZWMoY29tbWFuZDogQ29tbWFuZFBhcnRbXSB8IHN0cmluZywgb3B0aW9ucz86IEV4ZWNTaW1wbGVPcHRpb25zKTogUHJvbWlzZTxzdHJpbmc+O1xuLyoqXG4gKiBFeGVjdXRlcyBhIGNvbW1hbmQuXG4gKlxuICogQHBhcmFtIGNvbW1hbmQgLSBUaGUgY29tbWFuZCB0byBleGVjdXRlLiBJdCBjYW4gYmUgYSBzdHJpbmcgb3IgYW4gYXJyYXkgb2Ygc3RyaW5ncy5cbiAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIG9wdGlvbnMgZm9yIHRoZSBleGVjdXRpb24uXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHdpdGggRXhlY1Jlc3VsdCBvYmplY3QuXG4gKiAgICAgICAgICBUaGUgRXhlY1Jlc3VsdCBvYmplY3QgY29udGFpbnMgdGhlIGV4aXQgY29kZSwgZXhpdCBzaWduYWwsIHN0ZGVyciwgYW5kIHN0ZG91dC5cbiAqIEB0aHJvd3MgSWYgdGhlIGNvbW1hbmQgZmFpbHMgd2l0aCBhIG5vbi16ZXJvIGV4aXQgY29kZSBhbmQgaWdub3JlRXhpdENvZGUgaXMgYGZhbHNlYC5cbiAqICAgICAgICAgVGhlIGVycm9yIG1lc3NhZ2UgaW5jbHVkZXMgdGhlIGV4aXQgY29kZSBhbmQgc3RkZXJyLlxuICogICAgICAgICBJZiBhbiBlcnJvciBvY2N1cnMgZHVyaW5nIHRoZSBleGVjdXRpb24gYW5kIGlnbm9yZUV4aXRDb2RlIGlzIGB0cnVlYCxcbiAqICAgICAgICAgdGhlIGVycm9yIGlzIHJlc29sdmVkIHdpdGggdGhlIHN0ZG91dCBhbmQgc3RkZXJyLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZXhlYyhjb21tYW5kOiBDb21tYW5kUGFydFtdIHwgc3RyaW5nLCBvcHRpb25zOiBFeGVjRGV0YWlsZWRPcHRpb25zKTogUHJvbWlzZTxFeGVjUmVzdWx0Pjtcbi8qKlxuICogRXhlY3V0ZXMgYSBjb21tYW5kLlxuICpcbiAqIEBwYXJhbSBjb21tYW5kIC0gVGhlIGNvbW1hbmQgdG8gZXhlY3V0ZS4gSXQgY2FuIGJlIGEgc3RyaW5nIG9yIGFuIGFycmF5IG9mIHN0cmluZ3MuXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBvcHRpb25zIGZvciB0aGUgZXhlY3V0aW9uLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB3aXRoIHRoZSBvdXRwdXQgb2YgdGhlIGNvbW1hbmQgb3IgYW4gRXhlY1Jlc3VsdCBvYmplY3QuXG4gKiAgICAgICAgICBUaGUgRXhlY1Jlc3VsdCBvYmplY3QgY29udGFpbnMgdGhlIGV4aXQgY29kZSwgZXhpdCBzaWduYWwsIHN0ZGVyciwgYW5kIHN0ZG91dC5cbiAqIEB0aHJvd3MgSWYgdGhlIGNvbW1hbmQgZmFpbHMgd2l0aCBhIG5vbi16ZXJvIGV4aXQgY29kZSBhbmQgaWdub3JlRXhpdENvZGUgaXMgYGZhbHNlYC5cbiAqICAgICAgICAgVGhlIGVycm9yIG1lc3NhZ2UgaW5jbHVkZXMgdGhlIGV4aXQgY29kZSBhbmQgc3RkZXJyLlxuICogICAgICAgICBJZiBhbiBlcnJvciBvY2N1cnMgZHVyaW5nIHRoZSBleGVjdXRpb24gYW5kIGlnbm9yZUV4aXRDb2RlIGlzIGB0cnVlYCxcbiAqICAgICAgICAgdGhlIGVycm9yIGlzIHJlc29sdmVkIHdpdGggdGhlIHN0ZG91dCBhbmQgc3RkZXJyLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZXhlYyhjb21tYW5kOiBDb21tYW5kUGFydFtdIHwgc3RyaW5nLCBvcHRpb25zOiBFeGVjT3B0aW9uID0ge30pOiBQcm9taXNlPEV4ZWNSZXN1bHQgfCBzdHJpbmc+IHtcbiAgaWYgKEFycmF5LmlzQXJyYXkoY29tbWFuZCkpIHtcbiAgICBjb25zdCBiYXRjaFJlc3VsdCA9IGhhbmRsZUJhdGNoZWRDb21tYW5kKGNvbW1hbmQsIG9wdGlvbnMpO1xuICAgIGlmIChiYXRjaFJlc3VsdCkge1xuICAgICAgcmV0dXJuIGJhdGNoUmVzdWx0O1xuICAgIH1cbiAgICBjb25zdCBhcmdzID0gY29tbWFuZC5maWx0ZXIoKHBhcnQpOiBwYXJ0IGlzIHN0cmluZyA9PiB0eXBlb2YgcGFydCA9PT0gJ3N0cmluZycpO1xuICAgIGNvbnN0IGNvbW1hbmRMaW5lID0gdG9Db21tYW5kTGluZShhcmdzKTtcblxuICAgIGNvbnN0IG1heENvbW1hbmRMZW5ndGggPSBnZXRNYXhDb21tYW5kTGVuZ3RoKCk7XG4gICAgaWYgKGNvbW1hbmRMaW5lLmxlbmd0aCA+IG1heENvbW1hbmRMZW5ndGgpIHtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChcbiAgICAgICAgbmV3IEVycm9yKFxuICAgICAgICAgIGBDb21tYW5kIGxpbmUgaXMgdG9vIGxvbmcgKCR7U3RyaW5nKGNvbW1hbmRMaW5lLmxlbmd0aCl9IGNoYXJzLCBtYXggJHtcbiAgICAgICAgICAgIFN0cmluZyhtYXhDb21tYW5kTGVuZ3RoKVxuICAgICAgICAgIH0gb24gJHtwcm9jZXNzLnBsYXRmb3JtfSkuIENvbnNpZGVyIHNwbGl0dGluZyBpbnRvIHNtYWxsZXIgYmF0Y2hlcyBvciB1c2UgRXhlY0FyZy5gXG4gICAgICAgIClcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGV4ZWNTdHJpbmcoY29tbWFuZExpbmUsIG9wdGlvbnMsIGFyZ3MpO1xuICB9XG5cbiAgY29uc3QgbWF4Q29tbWFuZExlbmd0aCA9IGdldE1heENvbW1hbmRMZW5ndGgoKTtcbiAgaWYgKGNvbW1hbmQubGVuZ3RoID4gbWF4Q29tbWFuZExlbmd0aCkge1xuICAgIHJldHVybiBQcm9taXNlLnJlamVjdChcbiAgICAgIG5ldyBFcnJvcihcbiAgICAgICAgYENvbW1hbmQgbGluZSBpcyB0b28gbG9uZyAoJHtTdHJpbmcoY29tbWFuZC5sZW5ndGgpfSBjaGFycywgbWF4ICR7XG4gICAgICAgICAgU3RyaW5nKG1heENvbW1hbmRMZW5ndGgpXG4gICAgICAgIH0gb24gJHtwcm9jZXNzLnBsYXRmb3JtfSkuIENvbnNpZGVyIHNwbGl0dGluZyBpbnRvIHNtYWxsZXIgYmF0Y2hlcyBvciB1c2UgRXhlY0FyZy5gXG4gICAgICApXG4gICAgKTtcbiAgfVxuXG4gIHJldHVybiBleGVjU3RyaW5nKGNvbW1hbmQsIG9wdGlvbnMpO1xufVxuXG4vKipcbiAqIEV4ZWN1dGVzIGEgc2luZ2xlIHN0cmluZyBjb21tYW5kLlxuICpcbiAqIEBwYXJhbSBjb21tYW5kIC0gVGhlIGNvbW1hbmQgc3RyaW5nLlxuICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgZXhlYyBvcHRpb25zLlxuICogQHBhcmFtIHJhd0FyZ3MgLSBUaGUgb3JpZ2luYWwgYXJndW1lbnQgYXJyYXkgKGlmIGF2YWlsYWJsZSksIHVzZWQgYnkgdGhlIFBvd2VyU2hlbGxcbiAqICAgZmFsbGJhY2sgcGF0aCB0byBxdW90ZSBhcmd1bWVudHMgd2l0aCBQb3dlclNoZWxsLW5hdGl2ZSBzaW5nbGUgcXVvdGVzLlxuICogQHJldHVybnMgQSBQcm9taXNlIHJlc29sdmluZyB0byB0aGUgcmVzdWx0LlxuICovXG5mdW5jdGlvbiBleGVjU3RyaW5nKGNvbW1hbmQ6IHN0cmluZywgb3B0aW9uczogRXhlY09wdGlvbiA9IHt9LCByYXdBcmdzPzogc3RyaW5nW10pOiBQcm9taXNlPEV4ZWNSZXN1bHQgfCBzdHJpbmc+IHtcbiAgY29uc3Qge1xuICAgIGN3ZCA9IHByb2Nlc3MuY3dkKCksXG4gICAgaXNRdWlldDogcXVpZXQgPSBmYWxzZSxcbiAgICBzaG91bGRJZ25vcmVFeGl0Q29kZTogaWdub3JlRXhpdENvZGUgPSBmYWxzZSxcbiAgICBzaG91bGRJbmNsdWRlRGV0YWlscyA9IGZhbHNlLFxuICAgIHN0ZGluID0gJydcbiAgfSA9IG9wdGlvbnM7XG5cbiAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBnZXRMaWJEZWJ1Z2dlcignRXhlYycpKGBFeGVjdXRpbmcgY29tbWFuZDogJHtjb21tYW5kfWApO1xuXG4gICAgY29uc3QgY2hpbGQgPSBzcGF3blZpYVNoZWxsKGNvbW1hbmQsIGN3ZCwgcmF3QXJncyk7XG5cbiAgICBsZXQgc3Rkb3V0ID0gJyc7XG4gICAgbGV0IHN0ZGVyciA9ICcnO1xuXG4gICAgY2hpbGQuc3RkaW4ud3JpdGUoc3RkaW4pO1xuICAgIGNoaWxkLnN0ZGluLmVuZCgpO1xuXG4gICAgY2hpbGQuc3Rkb3V0Lm9uKCdkYXRhJywgKGRhdGE6IEJ1ZmZlcikgPT4ge1xuICAgICAgaWYgKCFxdWlldCkge1xuICAgICAgICBwcm9jZXNzLnN0ZG91dC53cml0ZShkYXRhKTtcbiAgICAgIH1cbiAgICAgIHN0ZG91dCArPSBkYXRhLnRvU3RyaW5nKCd1dGYtOCcpO1xuICAgIH0pO1xuXG4gICAgY2hpbGQuc3Rkb3V0Lm9uKCdlbmQnLCAoKSA9PiB7XG4gICAgICBzdGRvdXQgPSB0cmltRW5kKHN0ZG91dCwgJ1xcbicpO1xuICAgIH0pO1xuXG4gICAgY2hpbGQuc3RkZXJyLm9uKCdkYXRhJywgKGRhdGE6IEJ1ZmZlcikgPT4ge1xuICAgICAgaWYgKCFxdWlldCkge1xuICAgICAgICBwcm9jZXNzLnN0ZGVyci53cml0ZShkYXRhKTtcbiAgICAgIH1cbiAgICAgIHN0ZGVyciArPSBkYXRhLnRvU3RyaW5nKCd1dGYtOCcpO1xuICAgIH0pO1xuXG4gICAgY2hpbGQuc3RkZXJyLm9uKCdlbmQnLCAoKSA9PiB7XG4gICAgICBzdGRlcnIgPSB0cmltRW5kKHN0ZGVyciwgJ1xcbicpO1xuICAgIH0pO1xuXG4gICAgY2hpbGQub24oJ2Nsb3NlJywgKGV4aXRDb2RlLCBleGl0U2lnbmFsKSA9PiB7XG4gICAgICBpZiAoZXhpdENvZGUgIT09IDAgJiYgIWlnbm9yZUV4aXRDb2RlKSB7XG4gICAgICAgIHJlamVjdChuZXcgRXJyb3IoYENvbW1hbmQgZmFpbGVkIHdpdGggZXhpdCBjb2RlICR7ZXhpdENvZGUgPyBTdHJpbmcoZXhpdENvZGUpIDogJyhudWxsKSd9XFxuJHtzdGRlcnJ9YCkpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmICghc2hvdWxkSW5jbHVkZURldGFpbHMpIHtcbiAgICAgICAgcmVzb2x2ZShzdGRvdXQpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICByZXNvbHZlKHtcbiAgICAgICAgZXhpdENvZGUsXG4gICAgICAgIGV4aXRTaWduYWwsXG4gICAgICAgIHN0ZGVycixcbiAgICAgICAgc3Rkb3V0XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGNoaWxkLm9uKCdlcnJvcicsIChlcnIpID0+IHtcbiAgICAgIGlmICghaWdub3JlRXhpdENvZGUpIHtcbiAgICAgICAgcmVqZWN0KGVycik7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYgKCFzaG91bGRJbmNsdWRlRGV0YWlscykge1xuICAgICAgICByZXNvbHZlKHN0ZG91dCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgcmVzb2x2ZSh7XG4gICAgICAgIGV4aXRDb2RlOiBudWxsLFxuICAgICAgICBleGl0U2lnbmFsOiBudWxsLFxuICAgICAgICBzdGRlcnIsXG4gICAgICAgIHN0ZG91dFxuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xufVxuXG4vKipcbiAqIERlZmF1bHQgZW52aXJvbm1lbnQgdmFyaWFibGVzIHBhc3NlZCB0byBjaGlsZCBwcm9jZXNzZXMuXG4gKi9cbmNvbnN0IENISUxEX0VOViA9IHtcbiAgREVCVUdfQ09MT1JTOiAnMScsXG4gIC4uLnByb2Nlc3MuZW52XG59O1xuXG4vKipcbiAqIEV4ZWN1dGVzIGJhdGNoZWQgY29tbWFuZHMgc2VxdWVudGlhbGx5IGFuZCBjb25jYXRlbmF0ZXMgc3Rkb3V0LlxuICpcbiAqIEBwYXJhbSBiYXNlQ29tbWFuZCAtIFRoZSBiYXNlIGNvbW1hbmQgd2l0aG91dCBiYXRjaGVkIGFyZ3MuXG4gKiBAcGFyYW0gYmF0Y2hlcyAtIFRoZSBiYXRjaGVzIG9mIGFyZ3MuXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBleGVjIG9wdGlvbnMuXG4gKiBAcmV0dXJucyBBIFByb21pc2UgcmVzb2x2aW5nIHRvIHRoZSBjb25jYXRlbmF0ZWQgcmVzdWx0LlxuICovXG5hc3luYyBmdW5jdGlvbiBleGVjdXRlQmF0Y2hlcyhiYXNlQ29tbWFuZDogc3RyaW5nLCBiYXRjaGVzOiBzdHJpbmdbXVtdLCBvcHRpb25zOiBFeGVjT3B0aW9uKTogUHJvbWlzZTxFeGVjUmVzdWx0IHwgc3RyaW5nPiB7XG4gIGNvbnN0IHJlc3VsdHM6IHN0cmluZ1tdID0gW107XG5cbiAgZm9yIChjb25zdCBiYXRjaCBvZiBiYXRjaGVzKSB7XG4gICAgY29uc3QgYmF0Y2hDb21tYW5kID0gYCR7YmFzZUNvbW1hbmR9ICR7YmF0Y2guam9pbignICcpfWA7XG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgZXhlY1N0cmluZyhiYXRjaENvbW1hbmQsIG9wdGlvbnMpO1xuICAgIGlmICh0eXBlb2YgcmVzdWx0ID09PSAnc3RyaW5nJykge1xuICAgICAgcmVzdWx0cy5wdXNoKHJlc3VsdCk7XG4gICAgfVxuICB9XG5cbiAgaWYgKG9wdGlvbnMuc2hvdWxkSW5jbHVkZURldGFpbHMpIHtcbiAgICByZXR1cm4geyBleGl0Q29kZTogMCwgZXhpdFNpZ25hbDogbnVsbCwgc3RkZXJyOiAnJywgc3Rkb3V0OiByZXN1bHRzLmpvaW4oJ1xcbicpIH07XG4gIH1cblxuICByZXR1cm4gcmVzdWx0cy5qb2luKCdcXG4nKTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBwbGF0Zm9ybS1zcGVjaWZpYyBtYXggY29tbWFuZCBsaW5lIGxlbmd0aC5cbiAqXG4gKiBAcmV0dXJucyBUaGUgbWF4IGNvbW1hbmQgbGVuZ3RoIGluIGNoYXJhY3RlcnMuXG4gKi9cbmZ1bmN0aW9uIGdldE1heENvbW1hbmRMZW5ndGgoKTogbnVtYmVyIHtcbiAgY29uc3QgV0lORE9XU19NQVhfQ09NTUFORF9MRU5HVEggPSA4MTkxO1xuICBjb25zdCBVTklYX01BWF9DT01NQU5EX0xFTkdUSCA9IDEzMTA3MjtcbiAgcmV0dXJuIHByb2Nlc3MucGxhdGZvcm0gPT09ICd3aW4zMicgPyBXSU5ET1dTX01BWF9DT01NQU5EX0xFTkdUSCA6IFVOSVhfTUFYX0NPTU1BTkRfTEVOR1RIO1xufVxuXG4vKipcbiAqIEhhbmRsZXMgYSBjb21tYW5kIGFycmF5IHRoYXQgbWF5IGNvbnRhaW4gYW4ge0BsaW5rIEV4ZWNBcmd9LlxuICogUmV0dXJucyBhIFByb21pc2UgaWYgYmF0Y2hpbmcgaXMgbmVlZGVkLCBvciBgdW5kZWZpbmVkYCBpZiB0aGUgY29tbWFuZFxuICogaGFzIG5vIEV4ZWNBcmcgYW5kIHNob3VsZCBiZSBwcm9jZXNzZWQgbm9ybWFsbHkuXG4gKlxuICogQHBhcmFtIHBhcnRzIC0gVGhlIGNvbW1hbmQgcGFydHMuXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBleGVjIG9wdGlvbnMuXG4gKiBAcmV0dXJucyBBIFByb21pc2UgaWYgYmF0Y2hpbmcgaXMgaGFuZGxlZCwgb3IgYHVuZGVmaW5lZGAuXG4gKi9cbmZ1bmN0aW9uIGhhbmRsZUJhdGNoZWRDb21tYW5kKHBhcnRzOiBDb21tYW5kUGFydFtdLCBvcHRpb25zOiBFeGVjT3B0aW9uKTogUHJvbWlzZTxFeGVjUmVzdWx0IHwgc3RyaW5nPiB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IGV4ZWNBcmdzID0gcGFydHMuZmlsdGVyKGlzRXhlY0FyZyk7XG4gIGlmIChleGVjQXJncy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG4gIGlmIChleGVjQXJncy5sZW5ndGggPiAxKSB7XG4gICAgcmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyBFcnJvcignT25seSBvbmUgRXhlY0FyZyB3aXRoIGJhdGNoZWRBcmdzIGlzIGFsbG93ZWQgcGVyIGNvbW1hbmQnKSk7XG4gIH1cblxuICBjb25zdCBleGVjQXJnID0gZXhlY0FyZ3NbMF07XG4gIGFzc2VydE5vbk51bGxhYmxlKGV4ZWNBcmcpO1xuICBjb25zdCBzdGF0aWNQYXJ0cyA9IHBhcnRzLmZpbHRlcigocGFydCk6IHBhcnQgaXMgc3RyaW5nID0+IHR5cGVvZiBwYXJ0ID09PSAnc3RyaW5nJyk7XG4gIGNvbnN0IGJhc2VDb21tYW5kID0gdG9Db21tYW5kTGluZShzdGF0aWNQYXJ0cyk7XG4gIGNvbnN0IG1heENvbW1hbmRMZW5ndGggPSBnZXRNYXhDb21tYW5kTGVuZ3RoKCk7XG5cbiAgLy8gVHJ5IGV4cGFuZGluZyBhbGwgYXJncyBpbmxpbmVcbiAgY29uc3QgZnVsbENvbW1hbmQgPSBgJHtiYXNlQ29tbWFuZH0gJHtleGVjQXJnLmJhdGNoZWRBcmdzLmpvaW4oJyAnKX1gO1xuICBpZiAoZnVsbENvbW1hbmQubGVuZ3RoIDw9IG1heENvbW1hbmRMZW5ndGgpIHtcbiAgICByZXR1cm4gZXhlY1N0cmluZyhmdWxsQ29tbWFuZCwgb3B0aW9ucyk7XG4gIH1cblxuICAvLyBTcGxpdCBpbnRvIGJhdGNoZXNcbiAgY29uc3QgYmF0Y2hlczogc3RyaW5nW11bXSA9IFtdO1xuICBsZXQgY3VycmVudEJhdGNoOiBzdHJpbmdbXSA9IFtdO1xuXG4gIGZvciAoY29uc3QgYXJnIG9mIGV4ZWNBcmcuYmF0Y2hlZEFyZ3MpIHtcbiAgICBjb25zdCB0ZW50YXRpdmUgPSBgJHtiYXNlQ29tbWFuZH0gJHtbLi4uY3VycmVudEJhdGNoLCBhcmddLmpvaW4oJyAnKX1gO1xuICAgIGlmICh0ZW50YXRpdmUubGVuZ3RoID4gbWF4Q29tbWFuZExlbmd0aCkge1xuICAgICAgaWYgKGN1cnJlbnRCYXRjaC5sZW5ndGggPT09IDApIHtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KFxuICAgICAgICAgIG5ldyBFcnJvcihcbiAgICAgICAgICAgIGBDYW5ub3Qgc3BsaXQgY29tbWFuZCBpbnRvIGJhdGNoZXM6IGEgc2luZ2xlIGFyZ3VtZW50ICgke1N0cmluZyhhcmcubGVuZ3RoKX0gY2hhcnMpIHBsdXMgdGhlIGJhc2UgY29tbWFuZCAoJHtcbiAgICAgICAgICAgICAgU3RyaW5nKGJhc2VDb21tYW5kLmxlbmd0aClcbiAgICAgICAgICAgIH0gY2hhcnMpIGV4Y2VlZHMgdGhlIG1heCBjb21tYW5kIGxlbmd0aCAoJHtTdHJpbmcobWF4Q29tbWFuZExlbmd0aCl9KS5gXG4gICAgICAgICAgKVxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgYmF0Y2hlcy5wdXNoKGN1cnJlbnRCYXRjaCk7XG4gICAgICBjdXJyZW50QmF0Y2ggPSBbYXJnXTtcbiAgICB9IGVsc2Uge1xuICAgICAgY3VycmVudEJhdGNoLnB1c2goYXJnKTtcbiAgICB9XG4gIH1cbiAgLyogdjggaWdub3JlIHN0YXJ0IC0tIEFsd2F5cyB0cnVlIGFmdGVyIHRoZSBsb29wOyBiYXRjaGVkQXJncyBpcyBub24tZW1wdHkgYXQgdGhpcyBwb2ludC4gKi9cbiAgaWYgKGN1cnJlbnRCYXRjaC5sZW5ndGggPiAwKSB7XG4gICAgLyogdjggaWdub3JlIHN0b3AgKi9cbiAgICBiYXRjaGVzLnB1c2goY3VycmVudEJhdGNoKTtcbiAgfVxuXG4gIHJldHVybiBleGVjdXRlQmF0Y2hlcyhiYXNlQ29tbWFuZCwgYmF0Y2hlcywgb3B0aW9ucyk7XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIGEgY29tbWFuZCBwYXJ0IGlzIGFuIHtAbGluayBFeGVjQXJnfS5cbiAqXG4gKiBAcGFyYW0gcGFydCAtIFRoZSBjb21tYW5kIHBhcnQgdG8gY2hlY2suXG4gKiBAcmV0dXJucyBXaGV0aGVyIHRoZSBwYXJ0IGlzIGFuIEV4ZWNBcmcuXG4gKi9cbmZ1bmN0aW9uIGlzRXhlY0FyZyhwYXJ0OiBDb21tYW5kUGFydCk6IHBhcnQgaXMgRXhlY0FyZyB7XG4gIHJldHVybiB0eXBlb2YgcGFydCA9PT0gJ29iamVjdCcgJiYgJ2JhdGNoZWRBcmdzJyBpbiBwYXJ0O1xufVxuXG4vKipcbiAqIFNwYXducyBhIGNoaWxkIHByb2Nlc3MgdmlhIHRoZSBhcHByb3ByaWF0ZSBzaGVsbC5cbiAqXG4gKiBPbiBXaW5kb3dzLCBpZiB0aGUgY29tbWFuZCBjb250YWlucyBuZXdsaW5lcyAod2hpY2ggYGNtZC5leGVgIGNhbm5vdCBoYW5kbGUpXG4gKiBhbmQgdGhlIHJhdyBhcmdzIGFycmF5IGlzIGF2YWlsYWJsZSwgc3Bhd25zIHRoZSBwcm9jZXNzIGRpcmVjdGx5IHdpdGhvdXRcbiAqIGFueSBzaGVsbCBcdTIwMTQgcGFzc2luZyBhcmdzIHZpYSBgQ3JlYXRlUHJvY2Vzc2AsIHdoaWNoIGF2b2lkcyBhbGwgcXVvdGluZyBpc3N1ZXMuXG4gKlxuICogT24gV2luZG93cyAoY21kLmV4ZSBwYXRoKSwgYXBwbGllcyBgXmAtZXNjYXBpbmcgZm9yIGNtZCBtZXRhY2hhcmFjdGVycy5cbiAqXG4gKiBAcGFyYW0gY29tbWFuZCAtIFRoZSBjb21tYW5kIHN0cmluZyB0byBleGVjdXRlLlxuICogQHBhcmFtIGN3ZCAtIFRoZSB3b3JraW5nIGRpcmVjdG9yeS5cbiAqIEBwYXJhbSByYXdBcmdzIC0gVGhlIG9yaWdpbmFsIGFyZ3VtZW50IGFycmF5IChpZiBhdmFpbGFibGUpLlxuICogQHJldHVybnMgVGhlIHNwYXduZWQgY2hpbGQgcHJvY2Vzcy5cbiAqL1xuZnVuY3Rpb24gc3Bhd25WaWFTaGVsbChjb21tYW5kOiBzdHJpbmcsIGN3ZDogc3RyaW5nLCByYXdBcmdzPzogc3RyaW5nW10pOiBDaGlsZFByb2Nlc3NXaXRob3V0TnVsbFN0cmVhbXMge1xuICBpZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ3dpbjMyJyAmJiBjb21tYW5kLmluY2x1ZGVzKCdcXG4nKSkge1xuICAgIGlmICghcmF3QXJncykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdDb21tYW5kcyBjb250YWluaW5nIG5ld2xpbmVzIGNhbm5vdCBiZSBleGVjdXRlZCB0aHJvdWdoIGNtZC5leGUgb24gV2luZG93cy4gUGFzcyBhbiBhcmd1bWVudCBhcnJheSBpbnN0ZWFkIG9mIGEgc3RyaW5nLicpO1xuICAgIH1cbiAgICBjb25zdCBbcHJvZ3JhbSwgLi4uYXJnc10gPSByYXdBcmdzO1xuICAgIGFzc2VydE5vbk51bGxhYmxlKHByb2dyYW0sICdDb21tYW5kIGFycmF5IG11c3Qgbm90IGJlIGVtcHR5Jyk7XG4gICAgcmV0dXJuIHNwYXduKHByb2dyYW0sIGFyZ3MsIHtcbiAgICAgIGN3ZCxcbiAgICAgIGVudjogQ0hJTERfRU5WLFxuICAgICAgc3RkaW86ICdwaXBlJ1xuICAgIH0pO1xuICB9XG5cbiAgY29uc3Qgc2hlbGxDb21tYW5kID0gcHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ3dpbjMyJyA/IGNtZEVzY2FwZUNvbW1hbmRMaW5lKGNvbW1hbmQpIDogY29tbWFuZDtcbiAgcmV0dXJuIHNwYXduKHNoZWxsQ29tbWFuZCwgW10sIHtcbiAgICBjd2QsXG4gICAgZW52OiBDSElMRF9FTlYsXG4gICAgc2hlbGw6IHRydWUsXG4gICAgc3RkaW86ICdwaXBlJ1xuICB9KTtcbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBUUEsU0FBUyxhQUFhO0FBQ3RCLE9BQU8sYUFBYTtBQUVwQixTQUFTLHNCQUFzQjtBQUMvQixTQUFTLGVBQWU7QUFDeEIsU0FBUyx5QkFBeUI7QUFDbEM7QUFBQSxFQUNFO0FBQUEsRUFDQTtBQUFBLE9BQ0s7QUF3SUEsU0FBUyxLQUFLLFNBQWlDLFVBQXNCLENBQUMsR0FBaUM7QUFDNUcsTUFBSSxNQUFNLFFBQVEsT0FBTyxHQUFHO0FBQzFCLFVBQU0sY0FBYyxxQkFBcUIsU0FBUyxPQUFPO0FBQ3pELFFBQUksYUFBYTtBQUNmLGFBQU87QUFBQSxJQUNUO0FBQ0EsVUFBTSxPQUFPLFFBQVEsT0FBTyxDQUFDLFNBQXlCLE9BQU8sU0FBUyxRQUFRO0FBQzlFLFVBQU0sY0FBYyxjQUFjLElBQUk7QUFFdEMsVUFBTUEsb0JBQW1CLG9CQUFvQjtBQUM3QyxRQUFJLFlBQVksU0FBU0EsbUJBQWtCO0FBQ3pDLGFBQU8sUUFBUTtBQUFBLFFBQ2IsSUFBSTtBQUFBLFVBQ0YsNkJBQTZCLE9BQU8sWUFBWSxNQUFNLENBQUMsZUFDckQsT0FBT0EsaUJBQWdCLENBQ3pCLE9BQU8sUUFBUSxRQUFRO0FBQUEsUUFDekI7QUFBQSxNQUNGO0FBQUEsSUFDRjtBQUVBLFdBQU8sV0FBVyxhQUFhLFNBQVMsSUFBSTtBQUFBLEVBQzlDO0FBRUEsUUFBTSxtQkFBbUIsb0JBQW9CO0FBQzdDLE1BQUksUUFBUSxTQUFTLGtCQUFrQjtBQUNyQyxXQUFPLFFBQVE7QUFBQSxNQUNiLElBQUk7QUFBQSxRQUNGLDZCQUE2QixPQUFPLFFBQVEsTUFBTSxDQUFDLGVBQ2pELE9BQU8sZ0JBQWdCLENBQ3pCLE9BQU8sUUFBUSxRQUFRO0FBQUEsTUFDekI7QUFBQSxJQUNGO0FBQUEsRUFDRjtBQUVBLFNBQU8sV0FB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
@@ -4,7 +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
+ // eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
8
8
  if (globalThis.process) {
9
9
  return;
10
10
  }
@@ -17,7 +17,7 @@ if you want to view the source, please visit the github repository of this plugi
17
17
  env: {},
18
18
  platform: 'android'
19
19
  };
20
- // eslint-disable-next-line obsidianmd/prefer-active-doc -- Actively use globalThis.
20
+ // eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
21
21
  globalThis.process = browserProcess;
22
22
  })();
23
23
 
@@ -4,7 +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
+ // eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
8
8
  if (globalThis.process) {
9
9
  return;
10
10
  }
@@ -17,7 +17,7 @@ if you want to view the source, please visit the github repository of this plugi
17
17
  env: {},
18
18
  platform: 'android'
19
19
  };
20
- // eslint-disable-next-line obsidianmd/prefer-active-doc -- Actively use globalThis.
20
+ // eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
21
21
  globalThis.process = browserProcess;
22
22
  })();
23
23
 
@@ -4,7 +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
+ // eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
8
8
  if (globalThis.process) {
9
9
  return;
10
10
  }
@@ -17,7 +17,7 @@ if you want to view the source, please visit the github repository of this plugi
17
17
  env: {},
18
18
  platform: 'android'
19
19
  };
20
- // eslint-disable-next-line obsidianmd/prefer-active-doc -- Actively use globalThis.
20
+ // eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
21
21
  globalThis.process = browserProcess;
22
22
  })();
23
23