obsidian-integration-testing 11.0.0 → 12.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (234) hide show
  1. package/dist/lib/cjs/adb-device-list.cjs +54 -0
  2. package/dist/lib/cjs/adb-device-list.d.cts +72 -0
  3. package/dist/lib/cjs/android-sdk.cjs +52 -0
  4. package/dist/lib/cjs/android-sdk.d.cts +29 -0
  5. package/dist/lib/cjs/app-startup-progress.cjs +87 -0
  6. package/dist/lib/cjs/app-startup-progress.d.cts +128 -0
  7. package/dist/lib/cjs/appium-server-marker.cjs +112 -0
  8. package/dist/lib/cjs/appium-server-marker.d.cts +103 -0
  9. package/dist/lib/cjs/avd-probe-verdict.cjs +90 -0
  10. package/dist/lib/cjs/avd-probe-verdict.d.cts +175 -0
  11. package/dist/lib/cjs/cli.cjs +104 -19
  12. package/dist/lib/cjs/cli.d.cts +16 -8
  13. package/dist/lib/cjs/community-plugin-registry.cjs +52 -0
  14. package/dist/lib/cjs/community-plugin-registry.d.cts +116 -0
  15. package/dist/lib/cjs/config-directory-fallback-error.cjs +57 -0
  16. package/dist/lib/cjs/config-directory-fallback-error.d.cts +64 -0
  17. package/dist/lib/cjs/config-directory.cjs +46 -0
  18. package/dist/lib/cjs/config-directory.d.cts +45 -0
  19. package/dist/lib/cjs/connect-to-cdp.cjs +13 -7
  20. package/dist/lib/cjs/connect-to-cdp.d.cts +19 -0
  21. package/dist/lib/cjs/context-provider.cjs +12 -1
  22. package/dist/lib/cjs/context-provider.d.cts +26 -3
  23. package/dist/lib/cjs/demo-vault-bootstrap.cjs +148 -0
  24. package/dist/lib/cjs/demo-vault-bootstrap.d.cts +114 -0
  25. package/dist/lib/cjs/demo-vault-populate.cjs +38 -10
  26. package/dist/lib/cjs/demo-vault-populate.d.cts +70 -0
  27. package/dist/lib/cjs/device-readiness.cjs +38 -3
  28. package/dist/lib/cjs/device-readiness.d.cts +83 -9
  29. package/dist/lib/cjs/emulator-arguments.cjs +6 -2
  30. package/dist/lib/cjs/emulator-arguments.d.cts +26 -0
  31. package/dist/lib/cjs/emulator-backend.cjs +71 -0
  32. package/dist/lib/cjs/emulator-backend.d.cts +76 -0
  33. package/dist/lib/cjs/emulator-liveness.cjs +72 -0
  34. package/dist/lib/cjs/emulator-liveness.d.cts +158 -0
  35. package/dist/lib/cjs/emulator-snapshot.cjs +57 -0
  36. package/dist/lib/cjs/emulator-snapshot.d.cts +68 -0
  37. package/dist/lib/cjs/eval-in-obsidian.cjs +1 -1
  38. package/dist/lib/cjs/eval-in-obsidian.d.cts +42 -13
  39. package/dist/lib/cjs/global-setup-core.cjs +30 -30
  40. package/dist/lib/cjs/global-setup-core.d.cts +27 -2
  41. package/dist/lib/cjs/headless-vault-config.cjs +51 -0
  42. package/dist/lib/cjs/headless-vault-config.d.cts +67 -0
  43. package/dist/lib/cjs/index.cjs +24 -1
  44. package/dist/lib/cjs/index.d.cts +14 -5
  45. package/dist/lib/cjs/installer-asset.cjs +1 -1
  46. package/dist/lib/cjs/installer-asset.d.cts +1 -1
  47. package/dist/lib/cjs/integration-setup-failed-error.cjs +62 -0
  48. package/dist/lib/cjs/integration-setup-failed-error.d.cts +66 -0
  49. package/dist/lib/cjs/jest/global-setup.cjs +2 -2
  50. package/dist/lib/cjs/jest/global-setup.d.cts +5 -1
  51. package/dist/lib/cjs/kill-process-tree.cjs +18 -7
  52. package/dist/lib/cjs/kill-process-tree.d.cts +10 -2
  53. package/dist/lib/cjs/library.cjs +1 -1
  54. package/dist/lib/cjs/mobile-input.cjs +173 -0
  55. package/dist/lib/cjs/mobile-input.d.cts +156 -0
  56. package/dist/lib/cjs/namespace-bootstrap.cjs +92 -9
  57. package/dist/lib/cjs/obsidian-installer.cjs +1 -1
  58. package/dist/lib/cjs/obsidian-instance.cjs +52 -3
  59. package/dist/lib/cjs/obsidian-instance.d.cts +12 -0
  60. package/dist/lib/cjs/obsidian-metadata.cjs +123 -17
  61. package/dist/lib/cjs/obsidian-metadata.d.cts +17 -6
  62. package/dist/lib/cjs/obsidian-version-switch.cjs +3 -3
  63. package/dist/lib/cjs/open-obsidian-settings-tab.cjs +1 -1
  64. package/dist/lib/cjs/open-obsidian-settings-tab.d.cts +3 -2
  65. package/dist/lib/cjs/owned-instance-exit-marker.cjs +99 -0
  66. package/dist/lib/cjs/owned-instance-exit-marker.d.cts +106 -0
  67. package/dist/lib/cjs/owned-instance-exited-error.cjs +106 -0
  68. package/dist/lib/cjs/owned-instance-exited-error.d.cts +98 -0
  69. package/dist/lib/cjs/owned-vault-seed.cjs +9 -5
  70. package/dist/lib/cjs/owned-vault-seed.d.cts +24 -3
  71. package/dist/lib/cjs/parent-liveness.cjs +42 -5
  72. package/dist/lib/cjs/parent-liveness.d.cts +37 -5
  73. package/dist/lib/cjs/port-owner.cjs +61 -0
  74. package/dist/lib/cjs/port-owner.d.cts +47 -0
  75. package/dist/lib/cjs/process-capture.cjs +62 -0
  76. package/dist/lib/cjs/process-capture.d.cts +83 -0
  77. package/dist/lib/cjs/process-exit-message.cjs +14 -8
  78. package/dist/lib/cjs/process-exit-message.d.cts +37 -3
  79. package/dist/lib/cjs/process-liveness.cjs +51 -0
  80. package/dist/lib/cjs/process-liveness.d.cts +18 -0
  81. package/dist/lib/cjs/release-catalog.cjs +73 -0
  82. package/dist/lib/cjs/release-catalog.d.cts +125 -0
  83. package/dist/lib/cjs/run-version-matrix.cjs +1 -1
  84. package/dist/lib/cjs/run-version-matrix.d.cts +1 -1
  85. package/dist/lib/cjs/teardown-verdict.cjs +53 -0
  86. package/dist/lib/cjs/teardown-verdict.d.cts +69 -0
  87. package/dist/lib/cjs/temporary-vault.cjs +43 -8
  88. package/dist/lib/cjs/temporary-vault.d.cts +47 -5
  89. package/dist/lib/cjs/transport-appium.cjs +223 -17
  90. package/dist/lib/cjs/transport-appium.d.cts +104 -3
  91. package/dist/lib/cjs/transport-desktop-cdp.cjs +201 -6
  92. package/dist/lib/cjs/transport-desktop-cdp.d.cts +100 -0
  93. package/dist/lib/cjs/transport-factory.cjs +1165 -142
  94. package/dist/lib/cjs/transport-factory.d.cts +10 -1
  95. package/dist/lib/cjs/transport-options.cjs +11 -3
  96. package/dist/lib/cjs/transport-options.d.cts +131 -12
  97. package/dist/lib/cjs/transport.cjs +1 -1
  98. package/dist/lib/cjs/transport.d.cts +7 -1
  99. package/dist/lib/cjs/vault-plugin-install.cjs +40 -0
  100. package/dist/lib/cjs/vault-plugin-install.d.cts +64 -0
  101. package/dist/lib/cjs/vault-teardown-verdict.cjs +42 -0
  102. package/dist/lib/cjs/vault-teardown-verdict.d.cts +57 -0
  103. package/dist/lib/cjs/version-matrix.cjs +1 -1
  104. package/dist/lib/cjs/version-matrix.d.cts +2 -2
  105. package/dist/lib/cjs/vitest/global-setup.cjs +13 -7
  106. package/dist/lib/cjs/vitest/global-setup.d.cts +5 -1
  107. package/dist/lib/cjs/vitest/setup.cjs +2 -1
  108. package/dist/lib/cjs/vitest/setup.d.cts +5 -0
  109. package/dist/lib/cjs/vitest/typings.d.cts +6 -4
  110. package/dist/lib/cjs/webview-cdp.cjs +263 -0
  111. package/dist/lib/cjs/webview-cdp.d.cts +156 -0
  112. package/dist/lib/cjs/wedged-appium-server.cjs +113 -0
  113. package/dist/lib/cjs/wedged-appium-server.d.cts +187 -0
  114. package/dist/lib/esm/adb-device-list.d.mts +72 -0
  115. package/dist/lib/esm/adb-device-list.mjs +28 -0
  116. package/dist/lib/esm/android-sdk.d.mts +29 -0
  117. package/dist/lib/esm/android-sdk.mjs +18 -0
  118. package/dist/lib/esm/app-startup-progress.d.mts +128 -0
  119. package/dist/lib/esm/app-startup-progress.mjs +59 -0
  120. package/dist/lib/esm/appium-server-marker.d.mts +103 -0
  121. package/dist/lib/esm/appium-server-marker.mjs +89 -0
  122. package/dist/lib/esm/avd-probe-verdict.d.mts +175 -0
  123. package/dist/lib/esm/avd-probe-verdict.mjs +62 -0
  124. package/dist/lib/esm/cli.d.mts +16 -8
  125. package/dist/lib/esm/cli.mjs +110 -19
  126. package/dist/lib/esm/community-plugin-registry.d.mts +116 -0
  127. package/dist/lib/esm/community-plugin-registry.mjs +23 -0
  128. package/dist/lib/esm/config-directory-fallback-error.d.mts +64 -0
  129. package/dist/lib/esm/config-directory-fallback-error.mjs +33 -0
  130. package/dist/lib/esm/config-directory.d.mts +45 -0
  131. package/dist/lib/esm/config-directory.mjs +21 -0
  132. package/dist/lib/esm/connect-to-cdp.d.mts +19 -0
  133. package/dist/lib/esm/connect-to-cdp.mjs +13 -7
  134. package/dist/lib/esm/context-provider.d.mts +26 -3
  135. package/dist/lib/esm/context-provider.mjs +10 -1
  136. package/dist/lib/esm/demo-vault-bootstrap.d.mts +114 -0
  137. package/dist/lib/esm/demo-vault-bootstrap.mjs +127 -0
  138. package/dist/lib/esm/demo-vault-populate.d.mts +70 -0
  139. package/dist/lib/esm/demo-vault-populate.mjs +35 -9
  140. package/dist/lib/esm/device-readiness.d.mts +83 -9
  141. package/dist/lib/esm/device-readiness.mjs +34 -2
  142. package/dist/lib/esm/emulator-arguments.d.mts +26 -0
  143. package/dist/lib/esm/emulator-arguments.mjs +6 -2
  144. package/dist/lib/esm/emulator-backend.d.mts +76 -0
  145. package/dist/lib/esm/emulator-backend.mjs +45 -0
  146. package/dist/lib/esm/emulator-liveness.d.mts +158 -0
  147. package/dist/lib/esm/emulator-liveness.mjs +47 -0
  148. package/dist/lib/esm/emulator-snapshot.d.mts +68 -0
  149. package/dist/lib/esm/emulator-snapshot.mjs +32 -0
  150. package/dist/lib/esm/eval-in-obsidian.d.mts +42 -13
  151. package/dist/lib/esm/eval-in-obsidian.mjs +1 -1
  152. package/dist/lib/esm/global-setup-core.d.mts +27 -2
  153. package/dist/lib/esm/global-setup-core.mjs +34 -35
  154. package/dist/lib/esm/headless-vault-config.d.mts +67 -0
  155. package/dist/lib/esm/headless-vault-config.mjs +31 -0
  156. package/dist/lib/esm/index.d.mts +14 -5
  157. package/dist/lib/esm/index.mjs +26 -2
  158. package/dist/lib/esm/installer-asset.d.mts +1 -1
  159. package/dist/lib/esm/installer-asset.mjs +1 -1
  160. package/dist/lib/esm/integration-setup-failed-error.d.mts +66 -0
  161. package/dist/lib/esm/integration-setup-failed-error.mjs +38 -0
  162. package/dist/lib/esm/jest/global-setup.d.mts +5 -1
  163. package/dist/lib/esm/jest/global-setup.mjs +2 -2
  164. package/dist/lib/esm/kill-process-tree.d.mts +10 -2
  165. package/dist/lib/esm/kill-process-tree.mjs +16 -6
  166. package/dist/lib/esm/library.mjs +1 -1
  167. package/dist/lib/esm/mobile-input.d.mts +156 -0
  168. package/dist/lib/esm/mobile-input.mjs +144 -0
  169. package/dist/lib/esm/namespace-bootstrap.mjs +95 -9
  170. package/dist/lib/esm/obsidian-installer.mjs +1 -1
  171. package/dist/lib/esm/obsidian-instance.d.mts +12 -0
  172. package/dist/lib/esm/obsidian-instance.mjs +55 -3
  173. package/dist/lib/esm/obsidian-metadata.d.mts +17 -6
  174. package/dist/lib/esm/obsidian-metadata.mjs +123 -17
  175. package/dist/lib/esm/obsidian-version-switch.mjs +3 -3
  176. package/dist/lib/esm/open-obsidian-settings-tab.d.mts +3 -2
  177. package/dist/lib/esm/open-obsidian-settings-tab.mjs +1 -1
  178. package/dist/lib/esm/owned-instance-exit-marker.d.mts +106 -0
  179. package/dist/lib/esm/owned-instance-exit-marker.mjs +78 -0
  180. package/dist/lib/esm/owned-instance-exited-error.d.mts +98 -0
  181. package/dist/lib/esm/owned-instance-exited-error.mjs +81 -0
  182. package/dist/lib/esm/owned-vault-seed.d.mts +24 -3
  183. package/dist/lib/esm/owned-vault-seed.mjs +9 -5
  184. package/dist/lib/esm/parent-liveness.d.mts +37 -5
  185. package/dist/lib/esm/parent-liveness.mjs +42 -5
  186. package/dist/lib/esm/port-owner.d.mts +47 -0
  187. package/dist/lib/esm/port-owner.mjs +36 -0
  188. package/dist/lib/esm/process-capture.d.mts +83 -0
  189. package/dist/lib/esm/process-capture.mjs +38 -0
  190. package/dist/lib/esm/process-exit-message.d.mts +37 -3
  191. package/dist/lib/esm/process-exit-message.mjs +13 -8
  192. package/dist/lib/esm/process-liveness.d.mts +18 -0
  193. package/dist/lib/esm/process-liveness.mjs +17 -0
  194. package/dist/lib/esm/release-catalog.d.mts +125 -0
  195. package/dist/lib/esm/release-catalog.mjs +46 -0
  196. package/dist/lib/esm/run-version-matrix.d.mts +1 -1
  197. package/dist/lib/esm/run-version-matrix.mjs +1 -1
  198. package/dist/lib/esm/teardown-verdict.d.mts +69 -0
  199. package/dist/lib/esm/teardown-verdict.mjs +28 -0
  200. package/dist/lib/esm/temporary-vault.d.mts +47 -5
  201. package/dist/lib/esm/temporary-vault.mjs +43 -8
  202. package/dist/lib/esm/transport-appium.d.mts +104 -3
  203. package/dist/lib/esm/transport-appium.mjs +233 -17
  204. package/dist/lib/esm/transport-desktop-cdp.d.mts +100 -0
  205. package/dist/lib/esm/transport-desktop-cdp.mjs +208 -7
  206. package/dist/lib/esm/transport-factory.d.mts +10 -1
  207. package/dist/lib/esm/transport-factory.mjs +1220 -149
  208. package/dist/lib/esm/transport-options.d.mts +131 -12
  209. package/dist/lib/esm/transport-options.mjs +9 -2
  210. package/dist/lib/esm/transport.d.mts +7 -1
  211. package/dist/lib/esm/vault-plugin-install.d.mts +64 -0
  212. package/dist/lib/esm/vault-plugin-install.mjs +20 -0
  213. package/dist/lib/esm/vault-teardown-verdict.d.mts +57 -0
  214. package/dist/lib/esm/vault-teardown-verdict.mjs +18 -0
  215. package/dist/lib/esm/version-matrix.d.mts +2 -2
  216. package/dist/lib/esm/version-matrix.mjs +1 -1
  217. package/dist/lib/esm/vitest/global-setup.d.mts +5 -1
  218. package/dist/lib/esm/vitest/global-setup.mjs +14 -7
  219. package/dist/lib/esm/vitest/setup.d.mts +5 -0
  220. package/dist/lib/esm/vitest/setup.mjs +3 -1
  221. package/dist/lib/esm/vitest/typings.d.mts +6 -4
  222. package/dist/lib/esm/webview-cdp.d.mts +156 -0
  223. package/dist/lib/esm/webview-cdp.mjs +235 -0
  224. package/dist/lib/esm/wedged-appium-server.d.mts +187 -0
  225. package/dist/lib/esm/wedged-appium-server.mjs +86 -0
  226. package/package.json +25 -23
  227. package/dist/lib/cjs/native-dialog-monitor.cjs +0 -192
  228. package/dist/lib/cjs/native-dialog-monitor.d.cts +0 -66
  229. package/dist/lib/cjs/obsidian-namespace.cjs +0 -17
  230. package/dist/lib/cjs/obsidian-namespace.d.cts +0 -128
  231. package/dist/lib/esm/native-dialog-monitor.d.mts +0 -66
  232. package/dist/lib/esm/native-dialog-monitor.mjs +0 -158
  233. package/dist/lib/esm/obsidian-namespace.d.mts +0 -128
  234. package/dist/lib/esm/obsidian-namespace.mjs +0 -1
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var headless_vault_config_exports = {};
20
+ __export(headless_vault_config_exports, {
21
+ ensureHeadlessVaultConfig: () => ensureHeadlessVaultConfig
22
+ });
23
+ module.exports = __toCommonJS(headless_vault_config_exports);
24
+ var import_promises = require("node:fs/promises");
25
+ var import_node_path = require("node:path");
26
+ var import_config_directory = require("./config-directory.cjs");
27
+ var import_log = require("./log.cjs");
28
+ const APP_JSON = "app.json";
29
+ const APP_JSON_INDENT = 2;
30
+ async function ensureHeadlessVaultConfig(params) {
31
+ const { configDirectory = import_config_directory.DEFAULT_CONFIG_DIRECTORY, label, vaultPath } = params;
32
+ const configDirectoryPath = (0, import_node_path.join)(vaultPath, configDirectory);
33
+ const appJsonPath = (0, import_node_path.join)(configDirectoryPath, APP_JSON);
34
+ let appConfig = {};
35
+ try {
36
+ appConfig = JSON.parse(await (0, import_promises.readFile)(appJsonPath, "utf-8"));
37
+ } catch {
38
+ }
39
+ appConfig["alwaysUpdateLinks"] = true;
40
+ appConfig["settingsPopoutWindow"] = false;
41
+ await (0, import_promises.mkdir)(configDirectoryPath, { recursive: true });
42
+ await (0, import_promises.writeFile)(appJsonPath, JSON.stringify(appConfig, null, APP_JSON_INDENT));
43
+ (0, import_log.log)(
44
+ `[integration-setup:${label}] Wrote headless defaults to ${configDirectory}/${APP_JSON} (alwaysUpdateLinks: rename support; settingsPopoutWindow off: settings stay in the driven window).`
45
+ );
46
+ }
47
+ // Annotate the CommonJS export names for ESM import in node:
48
+ 0 && (module.exports = {
49
+ ensureHeadlessVaultConfig
50
+ });
51
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2hlYWRsZXNzLXZhdWx0LWNvbmZpZy50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIFdyaXRlcyB0aGUgdmF1bHQtbGV2ZWwgT2JzaWRpYW4gc2V0dGluZ3MgYSAqKmhlYWRsZXNzKiogcnVuIG5lZWRzIGludG8gYVxuICogaGFybmVzcy1vd25lZCB2YXVsdCdzIGBhcHAuanNvbmAsIGJlZm9yZSB0aGF0IHZhdWx0IGlzIGV2ZXIgb3BlbmVkLlxuICpcbiAqIEJvdGgga2V5cyBoZXJlIGFyZSBkZWZhdWx0cyByYXRoZXIgdGhhbiBrbm9iczogdGhleSBhcmUgd2hhdCBhIHJ1biB3aXRoIG5vXG4gKiB1c2VyIGluIGZyb250IG9mIGl0IHdhbnRzIHVuY29uZGl0aW9uYWxseSwgc28gbm8gY29uc3VtZXIgaGFzIHRvIGtub3cgdGhlXG4gKiBpbnRlcm5hbCBleGlzdHMuIE5laXRoZXIgaXMgZXhwcmVzc2libGUgdGhyb3VnaCB0aGUgdHJhbnNwb3J0IG9wdGlvbnMsIGFuZFxuICogbmVpdGhlciBpcyBzb21ldGhpbmcgYSBwbHVnaW4gdW5kZXIgdGVzdCBzaG91bGQgaGF2ZSB0byBzZXQgZm9yIGl0c2VsZi5cbiAqXG4gKiAtICoqYGFsd2F5c1VwZGF0ZUxpbmtzOiB0cnVlYCoqIFx1MjAxNCB3aXRob3V0IGl0LCBhbnkgcmVuYW1lIG9yIG1vdmUgdGhhdCBhZmZlY3RzXG4gKiAgIGxpbmtzIG1ha2VzIE9ic2lkaWFuJ3MgYEZpbGVNYW5hZ2VyLnVwZGF0ZUFsbExpbmtzYCBwb3AgYW4gaW50ZXJhY3RpdmVcbiAqICAgXCJVcGRhdGUgbGlua3M/XCIgY29uZmlybWF0aW9uIG1vZGFsIChpdCBvbmx5IHNraXBzIHRoZSBtb2RhbCB3aGVuIHRoaXMgaXNcbiAqICAgb24pLiBIZWFkbGVzcyB0aGVyZSBpcyBubyB1c2VyIHRvIGFuc3dlciBpdCwgc28gdGhlIFByb21pc2UgbmV2ZXIgcmVzb2x2ZXMgXHUyMDE0XG4gKiAgIHRoZSByZW5hbWUncyBpbnRlcm5hbCBgRmlsZU1hbmFnZXIudXBkYXRlUXVldWVgIHRhc2sgaGFuZ3MgZm9yZXZlciwgYW5kXG4gKiAgIGJlY2F1c2UgdGhhdCBxdWV1ZSBpcyBhIHNpbmdsZXRvbiBldmVyeSBzdWJzZXF1ZW50IGByZW5hbWVGaWxlYCBpbiB0aGVcbiAqICAgc2hhcmVkIGluc3RhbmNlIGhhbmdzIHRvbyAodGhlIGxvbmctb2JzZXJ2ZWQgXCJyZW5hbWUgd2FsbFwiKS5cbiAqIC0gKipgc2V0dGluZ3NQb3BvdXRXaW5kb3c6IGZhbHNlYCoqIFx1MjAxNCBPYnNpZGlhbiBzaGlwcyB0aGlzIGB0cnVlYCAodmVyaWZpZWQgaW5cbiAqICAgdGhlIHNoaXBwZWQgYnVuZGxlcyBvZiBib3RoIDEuMTMuNyBhbmQgdGhlIDEuMTQuMCBhc2FyIHRoZSBoYXJuZXNzXG4gKiAgIHByb3Zpc2lvbnMpLCBhbmQgYGFwcC5zZXR0aW5nLnNob3VsZFVzZVBvcG91dCgpYCByZXR1cm5zIGl0IGRpcmVjdGx5LiBUaGVcbiAqICAgcG9wb3V0IGJyYW5jaCBpcyB0YWtlbiB3aGVuZXZlciBgUGxhdGZvcm0uY2FuUG9wb3V0V2luZG93YCBcdTIwMTQgYGlzRGVza3RvcEFwcFxuICogICAmJiBpc0Rlc2t0b3BgLCBzbyBldmVyeSBkZXNrdG9wIHJ1biBcdTIwMTQgYW5kIGl0IHB1dHMgdGhlIHNldHRpbmdzIG1vZGFsIGluIGFcbiAqICAgKipzZWNvbmQqKiBFbGVjdHJvbiB3aW5kb3csIHJlYXNzaWduaW5nIHRoZSBgYWN0aXZlV2luZG93YCAvXG4gKiAgIGBhY3RpdmVEb2N1bWVudGAgZ2xvYmFscyB0byBpdC4gQSB0ZXN0IHRoYXQgb25seSBhc3NlcnRzIGNhbiBzdGlsbCByZWFjaCB0aGVcbiAqICAgcm93cyB0aHJvdWdoIGBzZXR0aW5nVGFiLmNvbnRhaW5lckVsYCAoYW4gb2JqZWN0IHJlZmVyZW5jZSwgd2hlcmV2ZXIgaXRcbiAqICAgbGl2ZXMpLCBidXQgYSBzY3JlZW5zaG90IGNhbm5vdDogYGNhcHR1cmVPYnNpZGlhblNjcmVlbnNob3RgIHBob3RvZ3JhcGhzIHRoZVxuICogICBtYWluIHdpbmRvdywgd2hpY2ggaG9sZHMgbm9uZSBvZiB0aGUgc2V0dGluZ3MgVUksIGFuZCBub3RoaW5nIHRocm93cyB0byBzYXlcbiAqICAgc28uIFR1cm5pbmcgaXQgb2ZmIGtlZXBzIHRoZSBtb2RhbCBpbiB0aGUgd2luZG93IHRoZSBoYXJuZXNzIGRyaXZlcy5cbiAqXG4gKiBUaGUgd3JpdGUgKiptZXJnZXMqKiBpbnRvIGFueSBleGlzdGluZyBgYXBwLmpzb25gIFx1MjAxNCBvbmUgY2FycmllZCBpbiBieVxuICogYHBvcHVsYXRlYCwgb3Igc2VlZGVkIGJ5IGEgZGVtbyB2YXVsdCBcdTIwMTQgc28gdW5yZWxhdGVkIGNvbmZpZyBzdXJ2aXZlcywgYW5kIGl0XG4gKiBydW5zIGJlZm9yZSB0aGUgdmF1bHQgaXMgc3luY2VkIHRvIHRoZSBkZXZpY2Ugc28gdGhlIHZhbHVlcyByZWFjaCBtb2JpbGUgdG9vLlxuICovXG5cbmltcG9ydCB7XG4gIG1rZGlyLFxuICByZWFkRmlsZSxcbiAgd3JpdGVGaWxlXG59IGZyb20gJ25vZGU6ZnMvcHJvbWlzZXMnO1xuaW1wb3J0IHsgam9pbiB9IGZyb20gJ25vZGU6cGF0aCc7XG5cbmltcG9ydCB7IERFRkFVTFRfQ09ORklHX0RJUkVDVE9SWSB9IGZyb20gJy4vY29uZmlnLWRpcmVjdG9yeS5janMnO1xuaW1wb3J0IHsgbG9nIH0gZnJvbSAnLi9sb2cuY2pzJztcblxuY29uc3QgQVBQX0pTT04gPSAnYXBwLmpzb24nO1xuY29uc3QgQVBQX0pTT05fSU5ERU5UID0gMjtcblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgZW5zdXJlSGVhZGxlc3NWYXVsdENvbmZpZ30uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRW5zdXJlSGVhZGxlc3NWYXVsdENvbmZpZ1BhcmFtcyB7XG4gIC8qKlxuICAgKiBUaGUgdmF1bHQncyBjb25maWcgZm9sZGVyIG5hbWUsIHdoZW4gaXQgaXMgb3ZlcnJpZGRlbiBhd2F5IGZyb21cbiAgICoge0BsaW5rIERFRkFVTFRfQ09ORklHX0RJUkVDVE9SWX0uIFdyaXRpbmcgaW50byBgLm9ic2lkaWFuYCB3aGlsZSB0aGUgdmF1bHRcbiAgICogcmVhZHMgYC5vYnNpZGlhbi1kZXNrdG9wYCBkcm9wcyBib3RoIGRlZmF1bHRzIHNpbGVudGx5LCBzbyB0aGUgb3ZlcnJpZGUgaGFzXG4gICAqIHRvIHJlYWNoIHRoaXMgZmFyLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgJy5vYnNpZGlhbidgXG4gICAqL1xuICByZWFkb25seSBjb25maWdEaXJlY3Rvcnk/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFRoZSB0cmFuc3BvcnQgbGFiZWwsIGZvciBsb2dnaW5nLlxuICAgKi9cbiAgcmVhZG9ubHkgbGFiZWw6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGFic29sdXRlIHBhdGggb2YgdGhlIGhhcm5lc3Mtb3duZWQgdmF1bHQgdG8gY29uZmlndXJlLlxuICAgKi9cbiAgcmVhZG9ubHkgdmF1bHRQYXRoOiBzdHJpbmc7XG59XG5cbi8qKlxuICogTWVyZ2VzIHRoZSBoZWFkbGVzcyBkZWZhdWx0cyBpbnRvIGBhcHAuanNvbmAsIGNyZWF0aW5nIHRoZSBjb25maWcgZm9sZGVyIGFuZFxuICogdGhlIGZpbGUgd2hlbiB0aGV5IGRvIG5vdCBleGlzdCB5ZXQuXG4gKlxuICogT25seSBldmVyIGNhbGwgdGhpcyBvbiBhIHZhdWx0IHRoZSBoYXJuZXNzIG93bnMuIEEgY2FsbGVyLXN1cHBsaWVkIHZhdWx0IGlzIGFcbiAqIHJlYWwgb25lIHRoZSB1c2VyIGtlZXBzLCBhbmQgc2lsZW50bHkgcmV3cml0aW5nIGl0cyBzZXR0aW5ncyBpcyBub3QgdGhlXG4gKiBoYXJuZXNzJ3MgdG8gZG8uXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSB2YXVsdCB0byBjb25maWd1cmUsIGl0cyBjb25maWcgZm9sZGVyLCBhbmQgdGhlIGxvZyBsYWJlbC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGVuc3VyZUhlYWRsZXNzVmF1bHRDb25maWcocGFyYW1zOiBFbnN1cmVIZWFkbGVzc1ZhdWx0Q29uZmlnUGFyYW1zKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IHsgY29uZmlnRGlyZWN0b3J5ID0gREVGQVVMVF9DT05GSUdfRElSRUNUT1JZLCBsYWJlbCwgdmF1bHRQYXRoIH0gPSBwYXJhbXM7XG5cbiAgY29uc3QgY29uZmlnRGlyZWN0b3J5UGF0aCA9IGpvaW4odmF1bHRQYXRoLCBjb25maWdEaXJlY3RvcnkpO1xuICBjb25zdCBhcHBKc29uUGF0aCA9IGpvaW4oY29uZmlnRGlyZWN0b3J5UGF0aCwgQVBQX0pTT04pO1xuXG4gIGxldCBhcHBDb25maWc6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0ge307XG4gIHRyeSB7XG4gICAgYXBwQ29uZmlnID0gSlNPTi5wYXJzZShhd2FpdCByZWFkRmlsZShhcHBKc29uUGF0aCwgJ3V0Zi04JykpIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICB9IGNhdGNoIHtcbiAgICAvLyBObyBleGlzdGluZyBhcHAuanNvbiAob3IgdW5yZWFkYWJsZSkgXHUyMDE0IHN0YXJ0IGZyb20gYW4gZW1wdHkgY29uZmlnLlxuICB9XG5cbiAgYXBwQ29uZmlnWydhbHdheXNVcGRhdGVMaW5rcyddID0gdHJ1ZTtcbiAgYXBwQ29uZmlnWydzZXR0aW5nc1BvcG91dFdpbmRvdyddID0gZmFsc2U7XG5cbiAgYXdhaXQgbWtkaXIoY29uZmlnRGlyZWN0b3J5UGF0aCwgeyByZWN1cnNpdmU6IHRydWUgfSk7XG4gIGF3YWl0IHdyaXRlRmlsZShhcHBKc29uUGF0aCwgSlNPTi5zdHJpbmdpZnkoYXBwQ29uZmlnLCBudWxsLCBBUFBfSlNPTl9JTkRFTlQpKTtcbiAgbG9nKFxuICAgIGBbaW50ZWdyYXRpb24tc2V0dXA6JHtsYWJlbH1dIFdyb3RlIGhlYWRsZXNzIGRlZmF1bHRzIHRvICR7Y29uZmlnRGlyZWN0b3J5fS8ke0FQUF9KU09OfWBcbiAgICAgICsgJyAoYWx3YXlzVXBkYXRlTGlua3M6IHJlbmFtZSBzdXBwb3J0OyBzZXR0aW5nc1BvcG91dFdpbmRvdyBvZmY6IHNldHRpbmdzIHN0YXkgaW4gdGhlIGRyaXZlbiB3aW5kb3cpLidcbiAgKTtcbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFtQ0Esc0JBSU87QUFDUCx1QkFBcUI7QUFFckIsOEJBQXlDO0FBQ3pDLGlCQUFvQjtBQUVwQixNQUFNLFdBQVc7QUFDakIsTUFBTSxrQkFBa0I7QUFxQ3hCLGVBQXNCLDBCQUEwQixRQUF3RDtBQUN0RyxRQUFNLEVBQUUsa0JBQWtCLGtEQUEwQixPQUFPLFVBQVUsSUFBSTtBQUV6RSxRQUFNLDBCQUFzQix1QkFBSyxXQUFXLGVBQWU7QUFDM0QsUUFBTSxrQkFBYyx1QkFBSyxxQkFBcUIsUUFBUTtBQUV0RCxNQUFJLFlBQXFDLENBQUM7QUFDMUMsTUFBSTtBQUNGLGdCQUFZLEtBQUssTUFBTSxVQUFNLDBCQUFTLGFBQWEsT0FBTyxDQUFDO0FBQUEsRUFDN0QsUUFBUTtBQUFBLEVBRVI7QUFFQSxZQUFVLG1CQUFtQixJQUFJO0FBQ2pDLFlBQVUsc0JBQXNCLElBQUk7QUFFcEMsWUFBTSx1QkFBTSxxQkFBcUIsRUFBRSxXQUFXLEtBQUssQ0FBQztBQUNwRCxZQUFNLDJCQUFVLGFBQWEsS0FBSyxVQUFVLFdBQVcsTUFBTSxlQUFlLENBQUM7QUFDN0U7QUFBQSxJQUNFLHNCQUFzQixLQUFLLGdDQUFnQyxlQUFlLElBQUksUUFBUTtBQUFBLEVBRXhGO0FBQ0Y7IiwKICAibmFtZXMiOiBbXQp9Cg==
@@ -0,0 +1,67 @@
1
+ /**
2
+ * @file
3
+ *
4
+ * Writes the vault-level Obsidian settings a **headless** run needs into a
5
+ * harness-owned vault's `app.json`, before that vault is ever opened.
6
+ *
7
+ * Both keys here are defaults rather than knobs: they are what a run with no
8
+ * user in front of it wants unconditionally, so no consumer has to know the
9
+ * internal exists. Neither is expressible through the transport options, and
10
+ * neither is something a plugin under test should have to set for itself.
11
+ *
12
+ * - **`alwaysUpdateLinks: true`** — without it, any rename or move that affects
13
+ * links makes Obsidian's `FileManager.updateAllLinks` pop an interactive
14
+ * "Update links?" confirmation modal (it only skips the modal when this is
15
+ * on). Headless there is no user to answer it, so the Promise never resolves —
16
+ * the rename's internal `FileManager.updateQueue` task hangs forever, and
17
+ * because that queue is a singleton every subsequent `renameFile` in the
18
+ * shared instance hangs too (the long-observed "rename wall").
19
+ * - **`settingsPopoutWindow: false`** — Obsidian ships this `true` (verified in
20
+ * the shipped bundles of both 1.13.7 and the 1.14.0 asar the harness
21
+ * provisions), and `app.setting.shouldUsePopout()` returns it directly. The
22
+ * popout branch is taken whenever `Platform.canPopoutWindow` — `isDesktopApp
23
+ * && isDesktop`, so every desktop run — and it puts the settings modal in a
24
+ * **second** Electron window, reassigning the `activeWindow` /
25
+ * `activeDocument` globals to it. A test that only asserts can still reach the
26
+ * rows through `settingTab.containerEl` (an object reference, wherever it
27
+ * lives), but a screenshot cannot: `captureObsidianScreenshot` photographs the
28
+ * main window, which holds none of the settings UI, and nothing throws to say
29
+ * so. Turning it off keeps the modal in the window the harness drives.
30
+ *
31
+ * The write **merges** into any existing `app.json` — one carried in by
32
+ * `populate`, or seeded by a demo vault — so unrelated config survives, and it
33
+ * runs before the vault is synced to the device so the values reach mobile too.
34
+ */
35
+ /**
36
+ * Parameters for {@link ensureHeadlessVaultConfig}.
37
+ */
38
+ export interface EnsureHeadlessVaultConfigParams {
39
+ /**
40
+ * The vault's config folder name, when it is overridden away from
41
+ * {@link DEFAULT_CONFIG_DIRECTORY}. Writing into `.obsidian` while the vault
42
+ * reads `.obsidian-desktop` drops both defaults silently, so the override has
43
+ * to reach this far.
44
+ *
45
+ * @default `'.obsidian'`
46
+ */
47
+ readonly configDirectory?: string | undefined;
48
+ /**
49
+ * The transport label, for logging.
50
+ */
51
+ readonly label: string;
52
+ /**
53
+ * The absolute path of the harness-owned vault to configure.
54
+ */
55
+ readonly vaultPath: string;
56
+ }
57
+ /**
58
+ * Merges the headless defaults into `app.json`, creating the config folder and
59
+ * the file when they do not exist yet.
60
+ *
61
+ * Only ever call this on a vault the harness owns. A caller-supplied vault is a
62
+ * real one the user keeps, and silently rewriting its settings is not the
63
+ * harness's to do.
64
+ *
65
+ * @param params - The vault to configure, its config folder, and the log label.
66
+ */
67
+ export declare function ensureHeadlessVaultConfig(params: EnsureHeadlessVaultConfigParams): Promise<void>;
@@ -20,16 +20,23 @@ var index_exports = {};
20
20
  __export(index_exports, {
21
21
  AppiumTransport: () => import_transport_appium.AppiumTransport,
22
22
  CATALYST_LATEST: () => import_obsidian_version.CATALYST_LATEST,
23
+ ConfigDirectoryFallbackError: () => import_config_directory_fallback_error.ConfigDirectoryFallbackError,
23
24
  ContextId: () => import_context_id.ContextId,
25
+ DEFAULT_CONFIG_DIRECTORY: () => import_config_directory.DEFAULT_CONFIG_DIRECTORY,
24
26
  DEFAULT_OBSIDIAN_VERSION_SPECS: () => import_version_matrix.DEFAULT_OBSIDIAN_VERSION_SPECS,
25
27
  DesktopCdpTransport: () => import_transport_desktop_cdp.DesktopCdpTransport,
26
28
  DesktopOnlyPluginSkipError: () => import_desktop_only_plugin_skip_error.DesktopOnlyPluginSkipError,
27
29
  IncompatibleInstallerVersionError: () => import_incompatible_installer_version_error.IncompatibleInstallerVersionError,
30
+ IntegrationSetupFailedError: () => import_integration_setup_failed_error.IntegrationSetupFailedError,
31
+ OwnedInstanceExitedError: () => import_owned_instance_exited_error.OwnedInstanceExitedError,
28
32
  PUBLIC_LATEST: () => import_obsidian_version.PUBLIC_LATEST,
29
33
  RendererFailedToInitializeError: () => import_renderer_failed_to_initialize_error.RendererFailedToInitializeError,
30
34
  SilentAsarFallbackError: () => import_silent_asar_fallback_error.SilentAsarFallbackError,
31
35
  TemporaryVault: () => import_temporary_vault.TemporaryVault,
36
+ assertValidConfigDirectory: () => import_config_directory.assertValidConfigDirectory,
37
+ bootstrapDemoVaultPlugins: () => import_demo_vault_bootstrap.bootstrapDemoVaultPlugins,
32
38
  buildDemoVaultPopulate: () => import_demo_vault_populate.buildDemoVaultPopulate,
39
+ buildDemoVaultPopulateAsync: () => import_demo_vault_bootstrap.buildDemoVaultPopulateAsync,
33
40
  buildDeviceMetricsOverride: () => import_capture_screenshot.buildDeviceMetricsOverride,
34
41
  buildLabelSvg: () => import_label_screenshot.buildLabelSvg,
35
42
  captureObsidianScreenshot: () => import_capture_obsidian_screenshot.captureObsidianScreenshot,
@@ -54,7 +61,9 @@ __export(index_exports, {
54
61
  resolveAsarFallback: () => import_asar_fallback_detection.resolveAsarFallback,
55
62
  resolveElectronCompatibility: () => import_electron_compatibility.resolveElectronCompatibility,
56
63
  resolveInstallerCompatibility: () => import_installer_compatibility.resolveInstallerCompatibility,
64
+ resolveMissingInjectedPlugins: () => import_demo_vault_populate.resolveMissingInjectedPlugins,
57
65
  runObsidianVersionMatrix: () => import_run_version_matrix.runObsidianVersionMatrix,
66
+ setSetupErrorResolver: () => import_context_provider.setSetupErrorResolver,
58
67
  setTransportOptionsResolver: () => import_context_provider.setTransportOptionsResolver,
59
68
  setVaultPathResolver: () => import_context_provider.setVaultPathResolver,
60
69
  unregisterVault: () => import_vault_registry.unregisterVault
@@ -63,9 +72,12 @@ module.exports = __toCommonJS(index_exports);
63
72
  var import_asar_fallback_detection = require("./asar-fallback-detection.cjs");
64
73
  var import_capture_obsidian_screenshot = require("./capture-obsidian-screenshot.cjs");
65
74
  var import_capture_screenshot = require("./capture-screenshot.cjs");
75
+ var import_config_directory_fallback_error = require("./config-directory-fallback-error.cjs");
76
+ var import_config_directory = require("./config-directory.cjs");
66
77
  var import_connect_to_cdp = require("./connect-to-cdp.cjs");
67
78
  var import_context_id = require("./context-id.cjs");
68
79
  var import_context_provider = require("./context-provider.cjs");
80
+ var import_demo_vault_bootstrap = require("./demo-vault-bootstrap.cjs");
69
81
  var import_demo_vault_populate = require("./demo-vault-populate.cjs");
70
82
  var import_demo_vault_tree = require("./demo-vault-tree.cjs");
71
83
  var import_desktop_only_plugin_skip_error = require("./desktop-only-plugin-skip-error.cjs");
@@ -74,11 +86,13 @@ var import_eval_in_obsidian = require("./eval-in-obsidian.cjs");
74
86
  var import_fit_screenshot = require("./fit-screenshot.cjs");
75
87
  var import_incompatible_installer_version_error = require("./incompatible-installer-version-error.cjs");
76
88
  var import_installer_compatibility = require("./installer-compatibility.cjs");
89
+ var import_integration_setup_failed_error = require("./integration-setup-failed-error.cjs");
77
90
  var import_label_screenshot = require("./label-screenshot.cjs");
78
91
  var import_lib_registry = require("./lib-registry.cjs");
79
92
  var import_obsidian_metadata = require("./obsidian-metadata.cjs");
80
93
  var import_obsidian_version = require("./obsidian-version.cjs");
81
94
  var import_open_obsidian_settings_tab = require("./open-obsidian-settings-tab.cjs");
95
+ var import_owned_instance_exited_error = require("./owned-instance-exited-error.cjs");
82
96
  var import_poll_in_obsidian = require("./poll-in-obsidian.cjs");
83
97
  var import_renderer_failed_to_initialize_error = require("./renderer-failed-to-initialize-error.cjs");
84
98
  var import_run_version_matrix = require("./run-version-matrix.cjs");
@@ -94,16 +108,23 @@ var import_version_matrix = require("./version-matrix.cjs");
94
108
  0 && (module.exports = {
95
109
  AppiumTransport,
96
110
  CATALYST_LATEST,
111
+ ConfigDirectoryFallbackError,
97
112
  ContextId,
113
+ DEFAULT_CONFIG_DIRECTORY,
98
114
  DEFAULT_OBSIDIAN_VERSION_SPECS,
99
115
  DesktopCdpTransport,
100
116
  DesktopOnlyPluginSkipError,
101
117
  IncompatibleInstallerVersionError,
118
+ IntegrationSetupFailedError,
119
+ OwnedInstanceExitedError,
102
120
  PUBLIC_LATEST,
103
121
  RendererFailedToInitializeError,
104
122
  SilentAsarFallbackError,
105
123
  TemporaryVault,
124
+ assertValidConfigDirectory,
125
+ bootstrapDemoVaultPlugins,
106
126
  buildDemoVaultPopulate,
127
+ buildDemoVaultPopulateAsync,
107
128
  buildDeviceMetricsOverride,
108
129
  buildLabelSvg,
109
130
  captureObsidianScreenshot,
@@ -128,9 +149,11 @@ var import_version_matrix = require("./version-matrix.cjs");
128
149
  resolveAsarFallback,
129
150
  resolveElectronCompatibility,
130
151
  resolveInstallerCompatibility,
152
+ resolveMissingInjectedPlugins,
131
153
  runObsidianVersionMatrix,
154
+ setSetupErrorResolver,
132
155
  setTransportOptionsResolver,
133
156
  setVaultPathResolver,
134
157
  unregisterVault
135
158
  });
136
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2luZGV4LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogQ29udGFpbnMgdGhlIGVudHJ5IHBvaW50IGZvciB0aGUgaW50ZWdyYXRpb24gdGVzdGluZyBtb2R1bGUuXG4gKi9cblxuZXhwb3J0IHR5cGUge1xuICBBc2FyRmFsbGJhY2ssXG4gIEFzYXJGYWxsYmFja1RpZXIsXG4gIFJlc29sdmVBc2FyRmFsbGJhY2tQYXJhbXNcbn0gZnJvbSAnLi9hc2FyLWZhbGxiYWNrLWRldGVjdGlvbi5janMnO1xuZXhwb3J0IHsgcmVzb2x2ZUFzYXJGYWxsYmFjayB9IGZyb20gJy4vYXNhci1mYWxsYmFjay1kZXRlY3Rpb24uY2pzJztcbmV4cG9ydCB0eXBlIHsgQ2FwdHVyZU9ic2lkaWFuU2NyZWVuc2hvdE9wdGlvbnMgfSBmcm9tICcuL2NhcHR1cmUtb2JzaWRpYW4tc2NyZWVuc2hvdC5janMnO1xuZXhwb3J0IHsgY2FwdHVyZU9ic2lkaWFuU2NyZWVuc2hvdCB9IGZyb20gJy4vY2FwdHVyZS1vYnNpZGlhbi1zY3JlZW5zaG90LmNqcyc7XG5leHBvcnQgdHlwZSB7XG4gIENhcHR1cmVTY3JlZW5zaG90UGFyYW1zLFxuICBQbmdEaW1lbnNpb25zXG59IGZyb20gJy4vY2FwdHVyZS1zY3JlZW5zaG90LmNqcyc7XG5leHBvcnQge1xuICBidWlsZERldmljZU1ldHJpY3NPdmVycmlkZSxcbiAgZGVjb2RlQmFzZTY0UG5nLFxuICBpc1BuZyxcbiAgcmVhZFBuZ0RpbWVuc2lvbnNcbn0gZnJvbSAnLi9jYXB0dXJlLXNjcmVlbnNob3QuY2pzJztcbmV4cG9ydCB0eXBlIHtcbiAgQ2RwQ29ubmVjdGlvbixcbiAgQ29ubmVjdFRvQ2RwT3B0aW9uc1xufSBmcm9tICcuL2Nvbm5lY3QtdG8tY2RwLmNqcyc7XG5leHBvcnQgeyBjb25uZWN0VG9DZHAgfSBmcm9tICcuL2Nvbm5lY3QtdG8tY2RwLmNqcyc7XG5leHBvcnQgdHlwZSB7XG4gIENvbnRleHRBcmd1bWVudHMsXG4gIENvbnRleHRPZlxufSBmcm9tICcuL2NvbnRleHQtaWQuY2pzJztcbmV4cG9ydCB7IENvbnRleHRJZCB9IGZyb20gJy4vY29udGV4dC1pZC5janMnO1xuZXhwb3J0IHR5cGUge1xuICBUcmFuc3BvcnRPcHRpb25zUmVzb2x2ZXIsXG4gIFZhdWx0UGF0aFJlc29sdmVyXG59IGZyb20gJy4vY29udGV4dC1wcm92aWRlci5janMnO1xuZXhwb3J0IHtcbiAgc2V0VHJhbnNwb3J0T3B0aW9uc1Jlc29sdmVyLFxuICBzZXRWYXVsdFBhdGhSZXNvbHZlclxufSBmcm9tICcuL2NvbnRleHQtcHJvdmlkZXIuY2pzJztcbmV4cG9ydCB0eXBlIHtcbiAgQnVpbGREZW1vVmF1bHRQb3B1bGF0ZVBhcmFtcyxcbiAgSW5qZWN0UGx1Z2luUGFyYW1zXG59IGZyb20gJy4vZGVtby12YXVsdC1wb3B1bGF0ZS5janMnO1xuZXhwb3J0IHsgYnVpbGREZW1vVmF1bHRQb3B1bGF0ZSB9IGZyb20gJy4vZGVtby12YXVsdC1wb3B1bGF0ZS5janMnO1xuZXhwb3J0IHR5cGUgeyBSZWFkRGVtb1ZhdWx0VHJlZVBhcmFtcyB9IGZyb20gJy4vZGVtby12YXVsdC10cmVlLmNqcyc7XG5leHBvcnQgeyByZWFkRGVtb1ZhdWx0VHJlZSB9IGZyb20gJy4vZGVtby12YXVsdC10cmVlLmNqcyc7XG5leHBvcnQgeyBEZXNrdG9wT25seVBsdWdpblNraXBFcnJvciB9IGZyb20gJy4vZGVza3RvcC1vbmx5LXBsdWdpbi1za2lwLWVycm9yLmNqcyc7XG5leHBvcnQgdHlwZSB7XG4gIEVsZWN0cm9uQ29tcGF0aWJpbGl0eSxcbiAgRWxlY3Ryb25Db21wYXRpYmlsaXR5VGllcixcbiAgUmVzb2x2ZUVsZWN0cm9uQ29tcGF0aWJpbGl0eVBhcmFtc1xufSBmcm9tICcuL2VsZWN0cm9uLWNvbXBhdGliaWxpdHkuY2pzJztcbmV4cG9ydCB7IHJlc29sdmVFbGVjdHJvbkNvbXBhdGliaWxpdHkgfSBmcm9tICcuL2VsZWN0cm9uLWNvbXBhdGliaWxpdHkuY2pzJztcbmV4cG9ydCB0eXBlIHtcbiAgQ2xpY2tFbGVtZW50UGFyYW1zLFxuICBDbGlja01vdXNlUGFyYW1zLFxuICBDb21tb25Bcmd1bWVudHMsXG4gIENyZWF0ZU5vdGVQYXJhbXMsXG4gIEV2YWxJbk9ic2lkaWFuUGFyYW1zLFxuICBHZW5lcmljT2JqZWN0LFxuICBIb3ZlckVsZW1lbnRQYXJhbXMsXG4gIExpYixcbiAgTW91c2VCdXR0b24sXG4gIE1vdmVNb3VzZVBhcmFtcyxcbiAgT3BlblNldHRpbmdzVGFiUGFyYW1zLFxuICBQcmVzc0tleVBhcmFtcyxcbiAgVHlwZUludG9FZGl0b3JQYXJhbXMsXG4gIFVuaG92ZXJFbGVtZW50UGFyYW1zLFxuICBXYWl0VW50aWxQYXJhbXNcbn0gZnJvbSAnLi9ldmFsLWluLW9ic2lkaWFuLmNqcyc7XG5leHBvcnQgeyBldmFsSW5PYnNpZGlhbiB9IGZyb20gJy4vZXZhbC1pbi1vYnNpZGlhbi5janMnO1xuZXhwb3J0IHR5cGUge1xuICBDb21wdXRlRml0VG9DYW52YXNQYXJhbXMsXG4gIEZpdFNjcmVlbnNob3RUb0NhbnZhc09wdGlvbnMsXG4gIEZpdFRvQ2FudmFzR2VvbWV0cnlcbn0gZnJvbSAnLi9maXQtc2NyZWVuc2hvdC5janMnO1xuZXhwb3J0IHtcbiAgY29tcHV0ZUZpdFRvQ2FudmFzLFxuICBmaXRTY3JlZW5zaG90VG9DYW52YXNcbn0gZnJvbSAnLi9maXQtc2NyZWVuc2hvdC5janMnO1xuZXhwb3J0IHR5cGUgeyBJbmNvbXBhdGlibGVJbnN0YWxsZXJWZXJzaW9uRXJyb3JDb25zdHJ1Y3RvclBhcmFtcyB9IGZyb20gJy4vaW5jb21wYXRpYmxlLWluc3RhbGxlci12ZXJzaW9uLWVycm9yLmNqcyc7XG5leHBvcnQgeyBJbmNvbXBhdGlibGVJbnN0YWxsZXJWZXJzaW9uRXJyb3IgfSBmcm9tICcuL2luY29tcGF0aWJsZS1pbnN0YWxsZXItdmVyc2lvbi1lcnJvci5janMnO1xuZXhwb3J0IHR5cGUge1xuICBJbnN0YWxsZXJDb21wYXRpYmlsaXR5LFxuICBJbnN0YWxsZXJDb21wYXRpYmlsaXR5VGllcixcbiAgUmVzb2x2ZUluc3RhbGxlckNvbXBhdGliaWxpdHlQYXJhbXNcbn0gZnJvbSAnLi9pbnN0YWxsZXItY29tcGF0aWJpbGl0eS5janMnO1xuZXhwb3J0IHsgcmVzb2x2ZUluc3RhbGxlckNvbXBhdGliaWxpdHkgfSBmcm9tICcuL2luc3RhbGxlci1jb21wYXRpYmlsaXR5LmNqcyc7XG5leHBvcnQgdHlwZSB7XG4gIENvbXB1dGVMYWJlbEJhbmRQYXJhbXMsXG4gIExhYmVsQmFuZEdlb21ldHJ5LFxuICBMYWJlbFNjcmVlbnNob3RPcHRpb25zXG59IGZyb20gJy4vbGFiZWwtc2NyZWVuc2hvdC5janMnO1xuZXhwb3J0IHtcbiAgYnVpbGRMYWJlbFN2ZyxcbiAgY29tcHV0ZUxhYmVsQmFuZCxcbiAgZXNjYXBlU3ZnVGV4dCxcbiAgbGFiZWxTY3JlZW5zaG90XG59IGZyb20gJy4vbGFiZWwtc2NyZWVuc2hvdC5janMnO1xuZXhwb3J0IHR5cGUgeyBMaWJSZXNvbHZlciB9IGZyb20gJy4vbGliLXJlZ2lzdHJ5LmNqcyc7XG5leHBvcnQgeyByZWdpc3RlckxpYlJlc29sdmVyIH0gZnJvbSAnLi9saWItcmVnaXN0cnkuY2pzJztcbmV4cG9ydCB0eXBlIHtcbiAgT2JzaWRpYW5SdW50aW1lVmVyc2lvbnMsXG4gIE9ic2lkaWFuVmVyc2lvbkNoYW5nZWxvZ1VybHMsXG4gIE9ic2lkaWFuVmVyc2lvbkRvd25sb2FkcyxcbiAgT2JzaWRpYW5WZXJzaW9uTWV0YWRhdGFcbn0gZnJvbSAnLi9vYnNpZGlhbi1tZXRhZGF0YS5janMnO1xuZXhwb3J0IHsgZ2V0VmVyc2lvbk1ldGFkYXRhIH0gZnJvbSAnLi9vYnNpZGlhbi1tZXRhZGF0YS5janMnO1xuZXhwb3J0IHtcbiAgQ0FUQUxZU1RfTEFURVNULFxuICBQVUJMSUNfTEFURVNUXG59IGZyb20gJy4vb2JzaWRpYW4tdmVyc2lvbi5janMnO1xuZXhwb3J0IHR5cGUgeyBPcGVuT2JzaWRpYW5TZXR0aW5nc1RhYk9wdGlvbnMgfSBmcm9tICcuL29wZW4tb2JzaWRpYW4tc2V0dGluZ3MtdGFiLmNqcyc7XG5leHBvcnQgeyBvcGVuT2JzaWRpYW5TZXR0aW5nc1RhYiB9IGZyb20gJy4vb3Blbi1vYnNpZGlhbi1zZXR0aW5ncy10YWIuY2pzJztcbmV4cG9ydCB0eXBlIHsgUG9sbEluT2JzaWRpYW5QYXJhbXMgfSBmcm9tICcuL3BvbGwtaW4tb2JzaWRpYW4uY2pzJztcbmV4cG9ydCB7IHBvbGxJbk9ic2lkaWFuIH0gZnJvbSAnLi9wb2xsLWluLW9ic2lkaWFuLmNqcyc7XG5leHBvcnQgeyBSZW5kZXJlckZhaWxlZFRvSW5pdGlhbGl6ZUVycm9yIH0gZnJvbSAnLi9yZW5kZXJlci1mYWlsZWQtdG8taW5pdGlhbGl6ZS1lcnJvci5janMnO1xuZXhwb3J0IHR5cGUgeyBSdW5PYnNpZGlhblZlcnNpb25NYXRyaXhQYXJhbXMgfSBmcm9tICcuL3J1bi12ZXJzaW9uLW1hdHJpeC5janMnO1xuZXhwb3J0IHsgcnVuT2JzaWRpYW5WZXJzaW9uTWF0cml4IH0gZnJvbSAnLi9ydW4tdmVyc2lvbi1tYXRyaXguY2pzJztcbmV4cG9ydCB0eXBlIHsgU2lsZW50QXNhckZhbGxiYWNrRXJyb3JDb25zdHJ1Y3RvclBhcmFtcyB9IGZyb20gJy4vc2lsZW50LWFzYXItZmFsbGJhY2stZXJyb3IuY2pzJztcbmV4cG9ydCB7IFNpbGVudEFzYXJGYWxsYmFja0Vycm9yIH0gZnJvbSAnLi9zaWxlbnQtYXNhci1mYWxsYmFjay1lcnJvci5janMnO1xuZXhwb3J0IHR5cGUge1xuICBQb3B1bGF0ZUZpbGVDb250ZW50LFxuICBQb3B1bGF0ZUZpbGVzUGFyYW1zXG59IGZyb20gJy4vdGVtcG9yYXJ5LXZhdWx0LmNqcyc7XG5leHBvcnQgeyBUZW1wb3JhcnlWYXVsdCB9IGZyb20gJy4vdGVtcG9yYXJ5LXZhdWx0LmNqcyc7XG5leHBvcnQgdHlwZSB7XG4gIEFwcGl1bVNlc3Npb25JbmZvLFxuICBBcHBpdW1UcmFuc3BvcnRDb25maWdcbn0gZnJvbSAnLi90cmFuc3BvcnQtYXBwaXVtLmNqcyc7XG5leHBvcnQgeyBBcHBpdW1UcmFuc3BvcnQgfSBmcm9tICcuL3RyYW5zcG9ydC1hcHBpdW0uY2pzJztcbmV4cG9ydCB0eXBlIHtcbiAgRGVza3RvcENkcFRyYW5zcG9ydENvbmZpZyxcbiAgT3duZWRJbnN0YW5jZUFzYXIsXG4gIE93bmVkSW5zdGFuY2VDb25maWcsXG4gIE93bmVkSW5zdGFuY2VFbmRwb2ludFxufSBmcm9tICcuL3RyYW5zcG9ydC1kZXNrdG9wLWNkcC5janMnO1xuZXhwb3J0IHsgRGVza3RvcENkcFRyYW5zcG9ydCB9IGZyb20gJy4vdHJhbnNwb3J0LWRlc2t0b3AtY2RwLmNqcyc7XG5leHBvcnQgeyBjcmVhdGVUcmFuc3BvcnRGcm9tT3B0aW9ucyB9IGZyb20gJy4vdHJhbnNwb3J0LWZhY3RvcnkuY2pzJztcbmV4cG9ydCB0eXBlIHtcbiAgT2JzaWRpYW5BbmRyb2lkQXBwaXVtVHJhbnNwb3J0T3B0aW9ucyxcbiAgT2JzaWRpYW5DZHBUcmFuc3BvcnRPcHRpb25zLFxuICBPYnNpZGlhblRyYW5zcG9ydE9wdGlvbnNcbn0gZnJvbSAnLi90cmFuc3BvcnQtb3B0aW9ucy5janMnO1xuZXhwb3J0IHsgY2hlY2tJc01vYmlsZVRyYW5zcG9ydCB9IGZyb20gJy4vdHJhbnNwb3J0LW9wdGlvbnMuY2pzJztcbmV4cG9ydCB0eXBlIHtcbiAgQ29uc29sZUNhcHR1cmVIYW5kbGUsXG4gIE9ic2lkaWFuVHJhbnNwb3J0LFxuICBUcmFuc3BvcnRFdmFsT3B0aW9uc1xufSBmcm9tICcuL3RyYW5zcG9ydC5janMnO1xuZXhwb3J0IHtcbiAgcmVnaXN0ZXJWYXVsdCxcbiAgdW5yZWdpc3RlclZhdWx0XG59IGZyb20gJy4vdmF1bHQtcmVnaXN0cnkuY2pzJztcbmV4cG9ydCB0eXBlIHsgT2JzaWRpYW5WZXJzaW9uTWF0cml4RW50cnkgfSBmcm9tICcuL3ZlcnNpb24tbWF0cml4LmNqcyc7XG5leHBvcnQgeyBERUZBVUxUX09CU0lESUFOX1ZFUlNJT05fU1BFQ1MgfSBmcm9tICcuL3ZlcnNpb24tbWF0cml4LmNqcyc7XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBV0EscUNBQW9DO0FBRXBDLHlDQUEwQztBQUsxQyxnQ0FLTztBQUtQLDRCQUE2QjtBQUs3Qix3QkFBMEI7QUFLMUIsOEJBR087QUFLUCxpQ0FBdUM7QUFFdkMsNkJBQWtDO0FBQ2xDLDRDQUEyQztBQU0zQyxvQ0FBNkM7QUFrQjdDLDhCQUErQjtBQU0vQiw0QkFHTztBQUVQLGtEQUFrRDtBQU1sRCxxQ0FBOEM7QUFNOUMsOEJBS087QUFFUCwwQkFBb0M7QUFPcEMsK0JBQW1DO0FBQ25DLDhCQUdPO0FBRVAsd0NBQXdDO0FBRXhDLDhCQUErQjtBQUMvQixpREFBZ0Q7QUFFaEQsZ0NBQXlDO0FBRXpDLHdDQUF3QztBQUt4Qyw2QkFBK0I7QUFLL0IsOEJBQWdDO0FBT2hDLG1DQUFvQztBQUNwQywrQkFBMkM7QUFNM0MsK0JBQXVDO0FBTXZDLDRCQUdPO0FBRVAsNEJBQStDOyIsCiAgIm5hbWVzIjogW10KfQo=
159
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2luZGV4LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogQ29udGFpbnMgdGhlIGVudHJ5IHBvaW50IGZvciB0aGUgaW50ZWdyYXRpb24gdGVzdGluZyBtb2R1bGUuXG4gKi9cblxuZXhwb3J0IHR5cGUge1xuICBBc2FyRmFsbGJhY2ssXG4gIEFzYXJGYWxsYmFja1RpZXIsXG4gIFJlc29sdmVBc2FyRmFsbGJhY2tQYXJhbXNcbn0gZnJvbSAnLi9hc2FyLWZhbGxiYWNrLWRldGVjdGlvbi5janMnO1xuZXhwb3J0IHsgcmVzb2x2ZUFzYXJGYWxsYmFjayB9IGZyb20gJy4vYXNhci1mYWxsYmFjay1kZXRlY3Rpb24uY2pzJztcbmV4cG9ydCB0eXBlIHsgQ2FwdHVyZU9ic2lkaWFuU2NyZWVuc2hvdE9wdGlvbnMgfSBmcm9tICcuL2NhcHR1cmUtb2JzaWRpYW4tc2NyZWVuc2hvdC5janMnO1xuZXhwb3J0IHsgY2FwdHVyZU9ic2lkaWFuU2NyZWVuc2hvdCB9IGZyb20gJy4vY2FwdHVyZS1vYnNpZGlhbi1zY3JlZW5zaG90LmNqcyc7XG5leHBvcnQgdHlwZSB7XG4gIENhcHR1cmVTY3JlZW5zaG90UGFyYW1zLFxuICBQbmdEaW1lbnNpb25zXG59IGZyb20gJy4vY2FwdHVyZS1zY3JlZW5zaG90LmNqcyc7XG5leHBvcnQge1xuICBidWlsZERldmljZU1ldHJpY3NPdmVycmlkZSxcbiAgZGVjb2RlQmFzZTY0UG5nLFxuICBpc1BuZyxcbiAgcmVhZFBuZ0RpbWVuc2lvbnNcbn0gZnJvbSAnLi9jYXB0dXJlLXNjcmVlbnNob3QuY2pzJztcbmV4cG9ydCB0eXBlIHsgQ29uZmlnRGlyZWN0b3J5RmFsbGJhY2tFcnJvckNvbnN0cnVjdG9yUGFyYW1zIH0gZnJvbSAnLi9jb25maWctZGlyZWN0b3J5LWZhbGxiYWNrLWVycm9yLmNqcyc7XG5leHBvcnQgeyBDb25maWdEaXJlY3RvcnlGYWxsYmFja0Vycm9yIH0gZnJvbSAnLi9jb25maWctZGlyZWN0b3J5LWZhbGxiYWNrLWVycm9yLmNqcyc7XG5leHBvcnQge1xuICBhc3NlcnRWYWxpZENvbmZpZ0RpcmVjdG9yeSxcbiAgREVGQVVMVF9DT05GSUdfRElSRUNUT1JZXG59IGZyb20gJy4vY29uZmlnLWRpcmVjdG9yeS5janMnO1xuZXhwb3J0IHR5cGUge1xuICBDZHBDb25uZWN0aW9uLFxuICBDb25uZWN0VG9DZHBPcHRpb25zXG59IGZyb20gJy4vY29ubmVjdC10by1jZHAuY2pzJztcbmV4cG9ydCB7IGNvbm5lY3RUb0NkcCB9IGZyb20gJy4vY29ubmVjdC10by1jZHAuY2pzJztcbmV4cG9ydCB0eXBlIHtcbiAgQ29udGV4dEFyZ3VtZW50cyxcbiAgQ29udGV4dE9mXG59IGZyb20gJy4vY29udGV4dC1pZC5janMnO1xuZXhwb3J0IHsgQ29udGV4dElkIH0gZnJvbSAnLi9jb250ZXh0LWlkLmNqcyc7XG5leHBvcnQgdHlwZSB7XG4gIFNldHVwRXJyb3JSZXNvbHZlcixcbiAgVHJhbnNwb3J0T3B0aW9uc1Jlc29sdmVyLFxuICBWYXVsdFBhdGhSZXNvbHZlclxufSBmcm9tICcuL2NvbnRleHQtcHJvdmlkZXIuY2pzJztcbmV4cG9ydCB7XG4gIHNldFNldHVwRXJyb3JSZXNvbHZlcixcbiAgc2V0VHJhbnNwb3J0T3B0aW9uc1Jlc29sdmVyLFxuICBzZXRWYXVsdFBhdGhSZXNvbHZlclxufSBmcm9tICcuL2NvbnRleHQtcHJvdmlkZXIuY2pzJztcbmV4cG9ydCB0eXBlIHtcbiAgQm9vdHN0cmFwRGVtb1ZhdWx0UGx1Z2luc1BhcmFtcyxcbiAgQm9vdHN0cmFwRGVtb1ZhdWx0UGx1Z2luc1Jlc3VsdCxcbiAgSW5zdGFsbGVkUGx1Z2luSW5mb1xufSBmcm9tICcuL2RlbW8tdmF1bHQtYm9vdHN0cmFwLmNqcyc7XG5leHBvcnQge1xuICBib290c3RyYXBEZW1vVmF1bHRQbHVnaW5zLFxuICBidWlsZERlbW9WYXVsdFBvcHVsYXRlQXN5bmNcbn0gZnJvbSAnLi9kZW1vLXZhdWx0LWJvb3RzdHJhcC5janMnO1xuZXhwb3J0IHR5cGUge1xuICBCdWlsZERlbW9WYXVsdFBvcHVsYXRlUGFyYW1zLFxuICBJbmplY3RQbHVnaW5QYXJhbXMsXG4gIFJlc29sdmVNaXNzaW5nSW5qZWN0ZWRQbHVnaW5zUGFyYW1zXG59IGZyb20gJy4vZGVtby12YXVsdC1wb3B1bGF0ZS5janMnO1xuZXhwb3J0IHtcbiAgYnVpbGREZW1vVmF1bHRQb3B1bGF0ZSxcbiAgcmVzb2x2ZU1pc3NpbmdJbmplY3RlZFBsdWdpbnNcbn0gZnJvbSAnLi9kZW1vLXZhdWx0LXBvcHVsYXRlLmNqcyc7XG5leHBvcnQgdHlwZSB7IFJlYWREZW1vVmF1bHRUcmVlUGFyYW1zIH0gZnJvbSAnLi9kZW1vLXZhdWx0LXRyZWUuY2pzJztcbmV4cG9ydCB7IHJlYWREZW1vVmF1bHRUcmVlIH0gZnJvbSAnLi9kZW1vLXZhdWx0LXRyZWUuY2pzJztcbmV4cG9ydCB7IERlc2t0b3BPbmx5UGx1Z2luU2tpcEVycm9yIH0gZnJvbSAnLi9kZXNrdG9wLW9ubHktcGx1Z2luLXNraXAtZXJyb3IuY2pzJztcbmV4cG9ydCB0eXBlIHtcbiAgRWxlY3Ryb25Db21wYXRpYmlsaXR5LFxuICBFbGVjdHJvbkNvbXBhdGliaWxpdHlUaWVyLFxuICBSZXNvbHZlRWxlY3Ryb25Db21wYXRpYmlsaXR5UGFyYW1zXG59IGZyb20gJy4vZWxlY3Ryb24tY29tcGF0aWJpbGl0eS5janMnO1xuZXhwb3J0IHsgcmVzb2x2ZUVsZWN0cm9uQ29tcGF0aWJpbGl0eSB9IGZyb20gJy4vZWxlY3Ryb24tY29tcGF0aWJpbGl0eS5janMnO1xuZXhwb3J0IHR5cGUge1xuICBDbGlja0VsZW1lbnRQYXJhbXMsXG4gIENsaWNrTW91c2VQYXJhbXMsXG4gIENvbW1vbkFyZ3VtZW50cyxcbiAgQ3JlYXRlTm90ZVBhcmFtcyxcbiAgRXZhbEluT2JzaWRpYW5QYXJhbXMsXG4gIEdlbmVyaWNPYmplY3QsXG4gIEhvdmVyRWxlbWVudFBhcmFtcyxcbiAgTGliLFxuICBNb3VzZUJ1dHRvbixcbiAgTW92ZU1vdXNlUGFyYW1zLFxuICBPcGVuU2V0dGluZ3NUYWJQYXJhbXMsXG4gIFByZXNzS2V5UGFyYW1zLFxuICBUeXBlSW50b0VkaXRvclBhcmFtcyxcbiAgVW5ob3ZlckVsZW1lbnRQYXJhbXMsXG4gIFdhaXRVbnRpbFBhcmFtc1xufSBmcm9tICcuL2V2YWwtaW4tb2JzaWRpYW4uY2pzJztcbmV4cG9ydCB7IGV2YWxJbk9ic2lkaWFuIH0gZnJvbSAnLi9ldmFsLWluLW9ic2lkaWFuLmNqcyc7XG5leHBvcnQgdHlwZSB7XG4gIENvbXB1dGVGaXRUb0NhbnZhc1BhcmFtcyxcbiAgRml0U2NyZWVuc2hvdFRvQ2FudmFzT3B0aW9ucyxcbiAgRml0VG9DYW52YXNHZW9tZXRyeVxufSBmcm9tICcuL2ZpdC1zY3JlZW5zaG90LmNqcyc7XG5leHBvcnQge1xuICBjb21wdXRlRml0VG9DYW52YXMsXG4gIGZpdFNjcmVlbnNob3RUb0NhbnZhc1xufSBmcm9tICcuL2ZpdC1zY3JlZW5zaG90LmNqcyc7XG5leHBvcnQgdHlwZSB7IEluY29tcGF0aWJsZUluc3RhbGxlclZlcnNpb25FcnJvckNvbnN0cnVjdG9yUGFyYW1zIH0gZnJvbSAnLi9pbmNvbXBhdGlibGUtaW5zdGFsbGVyLXZlcnNpb24tZXJyb3IuY2pzJztcbmV4cG9ydCB7IEluY29tcGF0aWJsZUluc3RhbGxlclZlcnNpb25FcnJvciB9IGZyb20gJy4vaW5jb21wYXRpYmxlLWluc3RhbGxlci12ZXJzaW9uLWVycm9yLmNqcyc7XG5leHBvcnQgdHlwZSB7XG4gIEluc3RhbGxlckNvbXBhdGliaWxpdHksXG4gIEluc3RhbGxlckNvbXBhdGliaWxpdHlUaWVyLFxuICBSZXNvbHZlSW5zdGFsbGVyQ29tcGF0aWJpbGl0eVBhcmFtc1xufSBmcm9tICcuL2luc3RhbGxlci1jb21wYXRpYmlsaXR5LmNqcyc7XG5leHBvcnQgeyByZXNvbHZlSW5zdGFsbGVyQ29tcGF0aWJpbGl0eSB9IGZyb20gJy4vaW5zdGFsbGVyLWNvbXBhdGliaWxpdHkuY2pzJztcbmV4cG9ydCB0eXBlIHsgSW50ZWdyYXRpb25TZXR1cEZhaWxlZEVycm9yQ29uc3RydWN0b3JQYXJhbXMgfSBmcm9tICcuL2ludGVncmF0aW9uLXNldHVwLWZhaWxlZC1lcnJvci5janMnO1xuZXhwb3J0IHsgSW50ZWdyYXRpb25TZXR1cEZhaWxlZEVycm9yIH0gZnJvbSAnLi9pbnRlZ3JhdGlvbi1zZXR1cC1mYWlsZWQtZXJyb3IuY2pzJztcbmV4cG9ydCB0eXBlIHtcbiAgQ29tcHV0ZUxhYmVsQmFuZFBhcmFtcyxcbiAgTGFiZWxCYW5kR2VvbWV0cnksXG4gIExhYmVsU2NyZWVuc2hvdE9wdGlvbnNcbn0gZnJvbSAnLi9sYWJlbC1zY3JlZW5zaG90LmNqcyc7XG5leHBvcnQge1xuICBidWlsZExhYmVsU3ZnLFxuICBjb21wdXRlTGFiZWxCYW5kLFxuICBlc2NhcGVTdmdUZXh0LFxuICBsYWJlbFNjcmVlbnNob3Rcbn0gZnJvbSAnLi9sYWJlbC1zY3JlZW5zaG90LmNqcyc7XG5leHBvcnQgdHlwZSB7IExpYlJlc29sdmVyIH0gZnJvbSAnLi9saWItcmVnaXN0cnkuY2pzJztcbmV4cG9ydCB7IHJlZ2lzdGVyTGliUmVzb2x2ZXIgfSBmcm9tICcuL2xpYi1yZWdpc3RyeS5janMnO1xuZXhwb3J0IHR5cGUge1xuICBPYnNpZGlhblJ1bnRpbWVWZXJzaW9ucyxcbiAgT2JzaWRpYW5WZXJzaW9uQ2hhbmdlbG9nVXJscyxcbiAgT2JzaWRpYW5WZXJzaW9uRG93bmxvYWRzLFxuICBPYnNpZGlhblZlcnNpb25NZXRhZGF0YVxufSBmcm9tICcuL29ic2lkaWFuLW1ldGFkYXRhLmNqcyc7XG5leHBvcnQgeyBnZXRWZXJzaW9uTWV0YWRhdGEgfSBmcm9tICcuL29ic2lkaWFuLW1ldGFkYXRhLmNqcyc7XG5leHBvcnQge1xuICBDQVRBTFlTVF9MQVRFU1QsXG4gIFBVQkxJQ19MQVRFU1Rcbn0gZnJvbSAnLi9vYnNpZGlhbi12ZXJzaW9uLmNqcyc7XG5leHBvcnQgdHlwZSB7IE9wZW5PYnNpZGlhblNldHRpbmdzVGFiT3B0aW9ucyB9IGZyb20gJy4vb3Blbi1vYnNpZGlhbi1zZXR0aW5ncy10YWIuY2pzJztcbmV4cG9ydCB7IG9wZW5PYnNpZGlhblNldHRpbmdzVGFiIH0gZnJvbSAnLi9vcGVuLW9ic2lkaWFuLXNldHRpbmdzLXRhYi5janMnO1xuZXhwb3J0IHR5cGUgeyBPd25lZEluc3RhbmNlRXhpdGVkRXJyb3JDb25zdHJ1Y3RvclBhcmFtcyB9IGZyb20gJy4vb3duZWQtaW5zdGFuY2UtZXhpdGVkLWVycm9yLmNqcyc7XG5leHBvcnQgeyBPd25lZEluc3RhbmNlRXhpdGVkRXJyb3IgfSBmcm9tICcuL293bmVkLWluc3RhbmNlLWV4aXRlZC1lcnJvci5janMnO1xuZXhwb3J0IHR5cGUgeyBQb2xsSW5PYnNpZGlhblBhcmFtcyB9IGZyb20gJy4vcG9sbC1pbi1vYnNpZGlhbi5janMnO1xuZXhwb3J0IHsgcG9sbEluT2JzaWRpYW4gfSBmcm9tICcuL3BvbGwtaW4tb2JzaWRpYW4uY2pzJztcbmV4cG9ydCB7IFJlbmRlcmVyRmFpbGVkVG9Jbml0aWFsaXplRXJyb3IgfSBmcm9tICcuL3JlbmRlcmVyLWZhaWxlZC10by1pbml0aWFsaXplLWVycm9yLmNqcyc7XG5leHBvcnQgdHlwZSB7IFJ1bk9ic2lkaWFuVmVyc2lvbk1hdHJpeFBhcmFtcyB9IGZyb20gJy4vcnVuLXZlcnNpb24tbWF0cml4LmNqcyc7XG5leHBvcnQgeyBydW5PYnNpZGlhblZlcnNpb25NYXRyaXggfSBmcm9tICcuL3J1bi12ZXJzaW9uLW1hdHJpeC5janMnO1xuZXhwb3J0IHR5cGUgeyBTaWxlbnRBc2FyRmFsbGJhY2tFcnJvckNvbnN0cnVjdG9yUGFyYW1zIH0gZnJvbSAnLi9zaWxlbnQtYXNhci1mYWxsYmFjay1lcnJvci5janMnO1xuZXhwb3J0IHsgU2lsZW50QXNhckZhbGxiYWNrRXJyb3IgfSBmcm9tICcuL3NpbGVudC1hc2FyLWZhbGxiYWNrLWVycm9yLmNqcyc7XG5leHBvcnQgdHlwZSB7XG4gIFBvcHVsYXRlRmlsZUNvbnRlbnQsXG4gIFBvcHVsYXRlRmlsZXNQYXJhbXMsXG4gIFRlbXBvcmFyeVZhdWx0T3B0aW9uc1xufSBmcm9tICcuL3RlbXBvcmFyeS12YXVsdC5janMnO1xuZXhwb3J0IHsgVGVtcG9yYXJ5VmF1bHQgfSBmcm9tICcuL3RlbXBvcmFyeS12YXVsdC5janMnO1xuZXhwb3J0IHR5cGUge1xuICBBcHBpdW1TZXNzaW9uSW5mbyxcbiAgQXBwaXVtVHJhbnNwb3J0Q29uZmlnXG59IGZyb20gJy4vdHJhbnNwb3J0LWFwcGl1bS5janMnO1xuZXhwb3J0IHsgQXBwaXVtVHJhbnNwb3J0IH0gZnJvbSAnLi90cmFuc3BvcnQtYXBwaXVtLmNqcyc7XG5leHBvcnQgdHlwZSB7XG4gIERlc2t0b3BDZHBUcmFuc3BvcnRDb25maWcsXG4gIE93bmVkSW5zdGFuY2VBc2FyLFxuICBPd25lZEluc3RhbmNlQ29uZmlnLFxuICBPd25lZEluc3RhbmNlRW5kcG9pbnRcbn0gZnJvbSAnLi90cmFuc3BvcnQtZGVza3RvcC1jZHAuY2pzJztcbmV4cG9ydCB7IERlc2t0b3BDZHBUcmFuc3BvcnQgfSBmcm9tICcuL3RyYW5zcG9ydC1kZXNrdG9wLWNkcC5janMnO1xuZXhwb3J0IHsgY3JlYXRlVHJhbnNwb3J0RnJvbU9wdGlvbnMgfSBmcm9tICcuL3RyYW5zcG9ydC1mYWN0b3J5LmNqcyc7XG5leHBvcnQgdHlwZSB7XG4gIE9ic2lkaWFuQW5kcm9pZEFwcGl1bVRyYW5zcG9ydE9wdGlvbnMsXG4gIE9ic2lkaWFuQ2RwVHJhbnNwb3J0T3B0aW9ucyxcbiAgT2JzaWRpYW5UcmFuc3BvcnRPcHRpb25zXG59IGZyb20gJy4vdHJhbnNwb3J0LW9wdGlvbnMuY2pzJztcbmV4cG9ydCB7IGNoZWNrSXNNb2JpbGVUcmFuc3BvcnQgfSBmcm9tICcuL3RyYW5zcG9ydC1vcHRpb25zLmNqcyc7XG5leHBvcnQgdHlwZSB7XG4gIENvbnNvbGVDYXB0dXJlSGFuZGxlLFxuICBPYnNpZGlhblRyYW5zcG9ydCxcbiAgVHJhbnNwb3J0RXZhbE9wdGlvbnNcbn0gZnJvbSAnLi90cmFuc3BvcnQuY2pzJztcbmV4cG9ydCB7XG4gIHJlZ2lzdGVyVmF1bHQsXG4gIHVucmVnaXN0ZXJWYXVsdFxufSBmcm9tICcuL3ZhdWx0LXJlZ2lzdHJ5LmNqcyc7XG5leHBvcnQgdHlwZSB7IE9ic2lkaWFuVmVyc2lvbk1hdHJpeEVudHJ5IH0gZnJvbSAnLi92ZXJzaW9uLW1hdHJpeC5janMnO1xuZXhwb3J0IHsgREVGQVVMVF9PQlNJRElBTl9WRVJTSU9OX1NQRUNTIH0gZnJvbSAnLi92ZXJzaW9uLW1hdHJpeC5janMnO1xuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQVdBLHFDQUFvQztBQUVwQyx5Q0FBMEM7QUFLMUMsZ0NBS087QUFFUCw2Q0FBNkM7QUFDN0MsOEJBR087QUFLUCw0QkFBNkI7QUFLN0Isd0JBQTBCO0FBTTFCLDhCQUlPO0FBTVAsa0NBR087QUFNUCxpQ0FHTztBQUVQLDZCQUFrQztBQUNsQyw0Q0FBMkM7QUFNM0Msb0NBQTZDO0FBa0I3Qyw4QkFBK0I7QUFNL0IsNEJBR087QUFFUCxrREFBa0Q7QUFNbEQscUNBQThDO0FBRTlDLDRDQUE0QztBQU01Qyw4QkFLTztBQUVQLDBCQUFvQztBQU9wQywrQkFBbUM7QUFDbkMsOEJBR087QUFFUCx3Q0FBd0M7QUFFeEMseUNBQXlDO0FBRXpDLDhCQUErQjtBQUMvQixpREFBZ0Q7QUFFaEQsZ0NBQXlDO0FBRXpDLHdDQUF3QztBQU14Qyw2QkFBK0I7QUFLL0IsOEJBQWdDO0FBT2hDLG1DQUFvQztBQUNwQywrQkFBMkM7QUFNM0MsK0JBQXVDO0FBTXZDLDRCQUdPO0FBRVAsNEJBQStDOyIsCiAgIm5hbWVzIjogW10KfQo=
@@ -9,14 +9,19 @@ export type { CaptureObsidianScreenshotOptions } from './capture-obsidian-screen
9
9
  export { captureObsidianScreenshot } from './capture-obsidian-screenshot.cjs';
10
10
  export type { CaptureScreenshotParams, PngDimensions } from './capture-screenshot.cjs';
11
11
  export { buildDeviceMetricsOverride, decodeBase64Png, isPng, readPngDimensions } from './capture-screenshot.cjs';
12
+ export type { ConfigDirectoryFallbackErrorConstructorParams } from './config-directory-fallback-error.cjs';
13
+ export { ConfigDirectoryFallbackError } from './config-directory-fallback-error.cjs';
14
+ export { assertValidConfigDirectory, DEFAULT_CONFIG_DIRECTORY } from './config-directory.cjs';
12
15
  export type { CdpConnection, ConnectToCdpOptions } from './connect-to-cdp.cjs';
13
16
  export { connectToCdp } from './connect-to-cdp.cjs';
14
17
  export type { ContextArguments, ContextOf } from './context-id.cjs';
15
18
  export { ContextId } from './context-id.cjs';
16
- export type { TransportOptionsResolver, VaultPathResolver } from './context-provider.cjs';
17
- export { setTransportOptionsResolver, setVaultPathResolver } from './context-provider.cjs';
18
- export type { BuildDemoVaultPopulateParams, InjectPluginParams } from './demo-vault-populate.cjs';
19
- export { buildDemoVaultPopulate } from './demo-vault-populate.cjs';
19
+ export type { SetupErrorResolver, TransportOptionsResolver, VaultPathResolver } from './context-provider.cjs';
20
+ export { setSetupErrorResolver, setTransportOptionsResolver, setVaultPathResolver } from './context-provider.cjs';
21
+ export type { BootstrapDemoVaultPluginsParams, BootstrapDemoVaultPluginsResult, InstalledPluginInfo } from './demo-vault-bootstrap.cjs';
22
+ export { bootstrapDemoVaultPlugins, buildDemoVaultPopulateAsync } from './demo-vault-bootstrap.cjs';
23
+ export type { BuildDemoVaultPopulateParams, InjectPluginParams, ResolveMissingInjectedPluginsParams } from './demo-vault-populate.cjs';
24
+ export { buildDemoVaultPopulate, resolveMissingInjectedPlugins } from './demo-vault-populate.cjs';
20
25
  export type { ReadDemoVaultTreeParams } from './demo-vault-tree.cjs';
21
26
  export { readDemoVaultTree } from './demo-vault-tree.cjs';
22
27
  export { DesktopOnlyPluginSkipError } from './desktop-only-plugin-skip-error.cjs';
@@ -30,6 +35,8 @@ export type { IncompatibleInstallerVersionErrorConstructorParams } from './incom
30
35
  export { IncompatibleInstallerVersionError } from './incompatible-installer-version-error.cjs';
31
36
  export type { InstallerCompatibility, InstallerCompatibilityTier, ResolveInstallerCompatibilityParams } from './installer-compatibility.cjs';
32
37
  export { resolveInstallerCompatibility } from './installer-compatibility.cjs';
38
+ export type { IntegrationSetupFailedErrorConstructorParams } from './integration-setup-failed-error.cjs';
39
+ export { IntegrationSetupFailedError } from './integration-setup-failed-error.cjs';
33
40
  export type { ComputeLabelBandParams, LabelBandGeometry, LabelScreenshotOptions } from './label-screenshot.cjs';
34
41
  export { buildLabelSvg, computeLabelBand, escapeSvgText, labelScreenshot } from './label-screenshot.cjs';
35
42
  export type { LibResolver } from './lib-registry.cjs';
@@ -39,6 +46,8 @@ export { getVersionMetadata } from './obsidian-metadata.cjs';
39
46
  export { CATALYST_LATEST, PUBLIC_LATEST } from './obsidian-version.cjs';
40
47
  export type { OpenObsidianSettingsTabOptions } from './open-obsidian-settings-tab.cjs';
41
48
  export { openObsidianSettingsTab } from './open-obsidian-settings-tab.cjs';
49
+ export type { OwnedInstanceExitedErrorConstructorParams } from './owned-instance-exited-error.cjs';
50
+ export { OwnedInstanceExitedError } from './owned-instance-exited-error.cjs';
42
51
  export type { PollInObsidianParams } from './poll-in-obsidian.cjs';
43
52
  export { pollInObsidian } from './poll-in-obsidian.cjs';
44
53
  export { RendererFailedToInitializeError } from './renderer-failed-to-initialize-error.cjs';
@@ -46,7 +55,7 @@ export type { RunObsidianVersionMatrixParams } from './run-version-matrix.cjs';
46
55
  export { runObsidianVersionMatrix } from './run-version-matrix.cjs';
47
56
  export type { SilentAsarFallbackErrorConstructorParams } from './silent-asar-fallback-error.cjs';
48
57
  export { SilentAsarFallbackError } from './silent-asar-fallback-error.cjs';
49
- export type { PopulateFileContent, PopulateFilesParams } from './temporary-vault.cjs';
58
+ export type { PopulateFileContent, PopulateFilesParams, TemporaryVaultOptions } from './temporary-vault.cjs';
50
59
  export { TemporaryVault } from './temporary-vault.cjs';
51
60
  export type { AppiumSessionInfo, AppiumTransportConfig } from './transport-appium.cjs';
52
61
  export { AppiumTransport } from './transport-appium.cjs';
@@ -91,4 +91,4 @@ function getPlatformAssetShape(platform) {
91
91
  selectInstallerAssetName,
92
92
  selectInstallerDownloadUrl
93
93
  });
94
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2luc3RhbGxlci1hc3NldC50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIFB1cmUgaGVscGVycyBmb3IgcmVzb2x2aW5nIHdoaWNoIEdpdEh1YiByZWxlYXNlIGFzc2V0IGlzIHRoZSBkZXNrdG9wXG4gKiAqKmluc3RhbGxlcioqIGZvciBhIGdpdmVuIE9ic2lkaWFuIHZlcnNpb24gYW5kIHBsYXRmb3JtLlxuICpcbiAqIE9ic2lkaWFuIGNoYW5nZWQgaXRzIGluc3RhbGxlciBhc3NldCBuYW1pbmcgY29udmVudGlvbiBwYXJ0d2F5IHRocm91Z2ggaXRzXG4gKiBoaXN0b3J5LCBzbyBhIHZlcnNpb24gY2Fubm90IGJlIHR1cm5lZCBpbnRvIGFuIGFzc2V0IG5hbWUgYnkgc3RyaW5nXG4gKiB0ZW1wbGF0aW5nIGFsb25lOlxuICpcbiAqIC0gKipEb3QqKiBzZXBhcmF0b3Igb24gb2xkZXIgcmVsZWFzZXM6IGBPYnNpZGlhbi48dmVyPi5leGVgICh2ZXJpZmllZCAwLjE0LjVcbiAqICAgdGhyb3VnaCAxLjUuMTIpLCB3aXRoIGEgYC11bml2ZXJzYWxgIGluZml4IG9uIHRoZSBtYWNPUyBkbWdcbiAqICAgKGBPYnNpZGlhbi08dmVyPi11bml2ZXJzYWwuZG1nYCkuXG4gKiAtICoqSHlwaGVuKiogc2VwYXJhdG9yIG9uIG5ld2VyIHJlbGVhc2VzOiBgT2JzaWRpYW4tPHZlcj4uZXhlYCxcbiAqICAgYE9ic2lkaWFuLTx2ZXI+LmRtZ2AgKHZlcmlmaWVkIDEuNi43IG9ud2FyZDsgdGhlIHRyYW5zaXRpb24gaXMgYXJvdW5kIDEuNi4wKS5cbiAqXG4gKiBUaGUgaW50ZWdyYXRpb24tdGltZSBkb3dubG9hZGVyIChgb2JzaWRpYW4taW5zdGFsbGVyLnRzYCkgcXVlcmllcyB0aGVcbiAqIHJlbGVhc2UncyByZWFsIGFzc2V0IGxpc3QgYW5kIHBpY2tzIHRoZSBwbGF0Zm9ybS1jb3JyZWN0IG9uZSB3aXRoXG4gKiB7QGxpbmsgc2VsZWN0SW5zdGFsbGVyQXNzZXROYW1lfTsgaWYgdGhhdCBuZXR3b3JrIGNhbGwgaXMgdW5hdmFpbGFibGUgaXRcbiAqIGZhbGxzIGJhY2sgdG8gdHJ5aW5nIGV2ZXJ5IHtAbGluayBidWlsZEluc3RhbGxlckFzc2V0TmFtZUNhbmRpZGF0ZXN9IGZvcm0uXG4gKiBCb3RoIGhlbHBlcnMgYXJlIHB1cmUgc28gdGhlIHNlcGFyYXRvci9hcmNoIG1hdHJpeCBzdGF5cyB1bml0LXRlc3RlZCAodGhlXG4gKiBkb3dubG9hZGVyIGl0c2VsZiBuZWVkcyB0aGUgbmV0d29yayBhbmQgaXMgZXhjbHVkZWQgZnJvbSB1bml0IHRlc3RzKS5cbiAqXG4gKiBPbmx5IHRoZSB4NjQgaW5zdGFsbGVyIGlzIHJlc29sdmVkIFx1MjAxNCB0aGUgZXh0cmFjdGlvbiBwYXRoIGlzIHg2NC1vbmx5IFx1MjAxNCBzbyB0aGVcbiAqIDMyLWJpdCAvIGFybTY0IC8gYWxsLXVzZXJzIHNpYmxpbmcgYXNzZXRzIGFyZSBkZWxpYmVyYXRlbHkgcmVqZWN0ZWQuXG4gKlxuICogV2hlbiB0aGUgdmVyc2lvbiBpcyBwcmVzZW50IGluIHRoZSBiYWtlZCBgbWV0YWRhdGEuanNvbmAgY2F0YWxvZyAoZnJvbVxuICogdXBzdHJlYW0gYG9ic2lkaWFuLXZlcnNpb25zLmpzb25gKSwgaXRzIGV4YWN0IGluc3RhbGxlciBVUkwgaXMgYWxyZWFkeSBrbm93bjtcbiAqIHtAbGluayBzZWxlY3RJbnN0YWxsZXJEb3dubG9hZFVybH0gcGlja3MgdGhlIHBsYXRmb3JtLWNvcnJlY3Qgb25lIGFuZCB0aGVcbiAqIGRvd25sb2FkZXIgdXNlcyBpdCBkaXJlY3RseSwgc2tpcHBpbmcgdGhlIHJlbGVhc2UtQVBJIGxvb2t1cCBhbmQgdGhlXG4gKiBuYW1lLXRlbXBsYXRpbmcgZmFsbGJhY2sgZW50aXJlbHkuXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBPYnNpZGlhblZlcnNpb25Eb3dubG9hZHMgfSBmcm9tICcuL29ic2lkaWFuLW1ldGFkYXRhLmNqcyc7XG5cbi8qKlxuICogVGhlIHBsYXRmb3JtLXNwZWNpZmljIHNoYXBlIG9mIGFuIE9ic2lkaWFuIGluc3RhbGxlciBhc3NldCBuYW1lLlxuICovXG5pbnRlcmZhY2UgUGxhdGZvcm1JbnN0YWxsZXJBc3NldFNoYXBlIHtcbiAgLyoqXG4gIExlYWRpbmcgdG9rZW4gb2YgdGhlIGFzc2V0IG5hbWU6IGBPYnNpZGlhbmAgKFdpbmRvd3MvbWFjT1MpIG9yIGBvYnNpZGlhbmAgKExpbnV4KS5cbiAgICovXG4gIHJlYWRvbmx5IGJhc2VOYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gIEZpbGUgZXh0ZW5zaW9uIHdpdGhvdXQgdGhlIGxlYWRpbmcgZG90LCBlLmcuIGBleGVgLCBgZG1nYCwgYHRhci5nemAuXG4gICAqL1xuICByZWFkb25seSBleHRlbnNpb246IHN0cmluZztcblxuICAvKipcbiAgICogSW5maXhlcyBwZXJtaXR0ZWQgYmV0d2VlbiB0aGUgdmVyc2lvbiBhbmQgdGhlIGV4dGVuc2lvbiBmb3IgdGhlIHByaW1hcnlcbiAgICogKG5vbi1hcmNoKSBhc3NldCwgZS5nLiBgLXVuaXZlcnNhbGAgb24gdGhlIG9sZGVyIG1hY09TIGRtZy4gQW4gZW1wdHkgYXJyYXlcbiAgICogbWVhbnMgdGhlIHZlcnNpb24gaXMgaW1tZWRpYXRlbHkgZm9sbG93ZWQgYnkgdGhlIGV4dGVuc2lvbi5cbiAgICovXG4gIHJlYWRvbmx5IG9wdGlvbmFsSW5maXhlczogcmVhZG9ubHkgc3RyaW5nW107XG59XG5cbmNvbnN0IFdJTkRPV1NfQVNTRVRfU0hBUEU6IFBsYXRmb3JtSW5zdGFsbGVyQXNzZXRTaGFwZSA9IHtcbiAgYmFzZU5hbWU6ICdPYnNpZGlhbicsXG4gIGV4dGVuc2lvbjogJ2V4ZScsXG4gIG9wdGlvbmFsSW5maXhlczogW11cbn07XG5cbmNvbnN0IE1BQ19BU1NFVF9TSEFQRTogUGxhdGZvcm1JbnN0YWxsZXJBc3NldFNoYXBlID0ge1xuICBiYXNlTmFtZTogJ09ic2lkaWFuJyxcbiAgZXh0ZW5zaW9uOiAnZG1nJyxcbiAgb3B0aW9uYWxJbmZpeGVzOiBbJy11bml2ZXJzYWwnXVxufTtcblxuY29uc3QgTElOVVhfQVNTRVRfU0hBUEU6IFBsYXRmb3JtSW5zdGFsbGVyQXNzZXRTaGFwZSA9IHtcbiAgYmFzZU5hbWU6ICdvYnNpZGlhbicsXG4gIGV4dGVuc2lvbjogJ3Rhci5neicsXG4gIG9wdGlvbmFsSW5maXhlczogW11cbn07XG5cbi8qKlxuU2VwYXJhdG9yIGZvcm1zIHRyaWVkLCBoeXBoZW4gKG5ld2VyKSBmaXJzdCwgd2hlbiBmYWxsaW5nIGJhY2sgdG8gdGVtcGxhdGVkIG5hbWVzLlxuICovXG5jb25zdCBBU1NFVF9OQU1FX1NFUEFSQVRPUlMgPSBbJy0nLCAnLiddIGFzIGNvbnN0O1xuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayBidWlsZEluc3RhbGxlckFzc2V0TmFtZUNhbmRpZGF0ZXN9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEJ1aWxkSW5zdGFsbGVyQXNzZXROYW1lQ2FuZGlkYXRlc1BhcmFtcyB7XG4gIC8qKlxuICBUaGUgcGxhdGZvcm0gdG8gYnVpbGQgY2FuZGlkYXRlIG5hbWVzIGZvci5cbiAgICovXG4gIHJlYWRvbmx5IHBsYXRmb3JtOiBOb2RlSlMuUGxhdGZvcm07XG5cbiAgLyoqXG4gIFRoZSBjb25jcmV0ZSBgeC55LnpgIHZlcnNpb24uXG4gICAqL1xuICByZWFkb25seSB2ZXJzaW9uOiBzdHJpbmc7XG59XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3Ige0BsaW5rIHNlbGVjdEluc3RhbGxlckFzc2V0TmFtZX0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2VsZWN0SW5zdGFsbGVyQXNzZXROYW1lUGFyYW1zIHtcbiAgLyoqXG4gIFRoZSByZWxlYXNlJ3MgYXNzZXQgbmFtZXMgKGUuZy4gZnJvbSB0aGUgR2l0SHViIHJlbGVhc2UgQVBJKS5cbiAgICovXG4gIHJlYWRvbmx5IGFzc2V0TmFtZXM6IHJlYWRvbmx5IHN0cmluZ1tdO1xuXG4gIC8qKlxuICBUaGUgcGxhdGZvcm0gd2hvc2UgaW5zdGFsbGVyIGFzc2V0IHRvIHNlbGVjdC5cbiAgICovXG4gIHJlYWRvbmx5IHBsYXRmb3JtOiBOb2RlSlMuUGxhdGZvcm07XG5cbiAgLyoqXG4gIFRoZSBjb25jcmV0ZSBgeC55LnpgIHZlcnNpb24uXG4gICAqL1xuICByZWFkb25seSB2ZXJzaW9uOiBzdHJpbmc7XG59XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3Ige0BsaW5rIHNlbGVjdEluc3RhbGxlckRvd25sb2FkVXJsfS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTZWxlY3RJbnN0YWxsZXJEb3dubG9hZFVybFBhcmFtcyB7XG4gIC8qKlxuICBUaGUgdmVyc2lvbidzIGJha2VkIGRvd25sb2FkIFVSTHMsIG9yIGB1bmRlZmluZWRgIHdoZW4gaXQgaXMgYWJzZW50IGZyb20gdGhlIGNhdGFsb2cuXG4gICAqL1xuICByZWFkb25seSBkb3dubG9hZHM6IE9ic2lkaWFuVmVyc2lvbkRvd25sb2FkcyB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgVGhlIHBsYXRmb3JtIHdob3NlIGluc3RhbGxlciBVUkwgdG8gc2VsZWN0LlxuICAgKi9cbiAgcmVhZG9ubHkgcGxhdGZvcm06IE5vZGVKUy5QbGF0Zm9ybTtcbn1cblxuLyoqXG4gKiBCdWlsZHMgdGhlIGZhbGxiYWNrIGxpc3Qgb2YgaW5zdGFsbGVyIGFzc2V0IG5hbWVzIHRvIHRyeSB3aGVuIHRoZSByZWxlYXNlJ3NcbiAqIHJlYWwgYXNzZXQgbGlzdCBjYW5ub3QgYmUgZmV0Y2hlZCwgY292ZXJpbmcgYm90aCBzZXBhcmF0b3IgZm9ybXMgKGFuZCwgb25cbiAqIG1hY09TLCB0aGUgYC11bml2ZXJzYWxgIGluZml4KS5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHBsYXRmb3JtIGFuZCB2ZXJzaW9uLlxuICogQHJldHVybnMgQ2FuZGlkYXRlIGFzc2V0IG5hbWVzLCBoeXBoZW4tc2VwYXJhdGVkIGZvcm1zIGZpcnN0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRJbnN0YWxsZXJBc3NldE5hbWVDYW5kaWRhdGVzKHBhcmFtczogQnVpbGRJbnN0YWxsZXJBc3NldE5hbWVDYW5kaWRhdGVzUGFyYW1zKTogc3RyaW5nW10ge1xuICBjb25zdCBzaGFwZSA9IGdldFBsYXRmb3JtQXNzZXRTaGFwZShwYXJhbXMucGxhdGZvcm0pO1xuICBjb25zdCBpbmZpeGVzID0gc2hhcGUub3B0aW9uYWxJbmZpeGVzLmxlbmd0aCA+IDAgPyBbJycsIC4uLnNoYXBlLm9wdGlvbmFsSW5maXhlc10gOiBbJyddO1xuICBjb25zdCBjYW5kaWRhdGVzOiBzdHJpbmdbXSA9IFtdO1xuICBmb3IgKGNvbnN0IHNlcGFyYXRvciBvZiBBU1NFVF9OQU1FX1NFUEFSQVRPUlMpIHtcbiAgICBmb3IgKGNvbnN0IGluZml4IG9mIGluZml4ZXMpIHtcbiAgICAgIGNhbmRpZGF0ZXMucHVzaChgJHtzaGFwZS5iYXNlTmFtZX0ke3NlcGFyYXRvcn0ke3BhcmFtcy52ZXJzaW9ufSR7aW5maXh9LiR7c2hhcGUuZXh0ZW5zaW9ufWApO1xuICAgIH1cbiAgfVxuICByZXR1cm4gY2FuZGlkYXRlcztcbn1cblxuLyoqXG4gKiBTZWxlY3RzIHRoZSBwbGF0Zm9ybS1jb3JyZWN0IHg2NCBpbnN0YWxsZXIgYXNzZXQgbmFtZSBmcm9tIGEgcmVsZWFzZSdzIGFzc2V0XG4gKiBsaXN0LCB0b2xlcmF0aW5nIGJvdGggdGhlIGRvdC0gYW5kIGh5cGhlbi1zZXBhcmF0ZWQgbmFtaW5nIGNvbnZlbnRpb25zIGFuZFxuICogcmVqZWN0aW5nIHRoZSAzMi1iaXQgLyBhcm02NCAvIGFsbC11c2VycyBzaWJsaW5nIGFzc2V0cy5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIGFzc2V0IGxpc3QsIHBsYXRmb3JtLCBhbmQgdmVyc2lvbi5cbiAqIEByZXR1cm5zIFRoZSBtYXRjaGluZyBhc3NldCBuYW1lLCBvciBgdW5kZWZpbmVkYCBpZiBub25lIG1hdGNoZXMgKGUuZy4gYVxuICogICBjYXRhbHlzdCByZWxlYXNlIHRoYXQgc2hpcHMgbm8gaW5zdGFsbGVyKS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNlbGVjdEluc3RhbGxlckFzc2V0TmFtZShwYXJhbXM6IFNlbGVjdEluc3RhbGxlckFzc2V0TmFtZVBhcmFtcyk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IHBhdHRlcm4gPSBidWlsZEFzc2V0TmFtZVBhdHRlcm4oZ2V0UGxhdGZvcm1Bc3NldFNoYXBlKHBhcmFtcy5wbGF0Zm9ybSksIHBhcmFtcy52ZXJzaW9uKTtcbiAgcmV0dXJuIHBhcmFtcy5hc3NldE5hbWVzLmZpbmQoKG5hbWUpID0+IHBhdHRlcm4udGVzdChuYW1lKSk7XG59XG5cbi8qKlxuICogU2VsZWN0cyB0aGUgcGxhdGZvcm0tY29ycmVjdCB4NjQgaW5zdGFsbGVyIGRvd25sb2FkIFVSTCBmcm9tIGEgdmVyc2lvbidzXG4gKiBiYWtlZCBjYXRhbG9nIGVudHJ5LlxuICpcbiAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgYmFrZWQgZG93bmxvYWQgVVJMcyBhbmQgdGhlIHBsYXRmb3JtLlxuICogQHJldHVybnMgVGhlIGluc3RhbGxlciBVUkwgZm9yIHRoZSBwbGF0Zm9ybSwgb3IgYHVuZGVmaW5lZGAgd2hlbiB0aGUgdmVyc2lvblxuICogICBoYXMgbm8gY2F0YWxvZyBlbnRyeSBvciBzaGlwcyBubyBkZXNrdG9wIGluc3RhbGxlciBmb3IgaXQgKGUuZy4gYSBjYXRhbHlzdFxuICogICBidWlsZCwgb3IgYSBMaW51eCBgLnRhci5nemAgdGhhdCB3YXMgbmV2ZXIgcHVibGlzaGVkKS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNlbGVjdEluc3RhbGxlckRvd25sb2FkVXJsKHBhcmFtczogU2VsZWN0SW5zdGFsbGVyRG93bmxvYWRVcmxQYXJhbXMpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICBjb25zdCB7IGRvd25sb2FkcyB9ID0gcGFyYW1zO1xuICBpZiAoIWRvd25sb2Fkcykge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICBpZiAocGFyYW1zLnBsYXRmb3JtID09PSAnd2luMzInKSB7XG4gICAgcmV0dXJuIGRvd25sb2Fkcy5leGU7XG4gIH1cblxuICBpZiAocGFyYW1zLnBsYXRmb3JtID09PSAnZGFyd2luJykge1xuICAgIHJldHVybiBkb3dubG9hZHMuZG1nO1xuICB9XG5cbiAgcmV0dXJuIGRvd25sb2Fkcy50YXI7XG59XG5cbi8qKlxuICogQnVpbGRzIGFuIGFuY2hvcmVkIHJlZ3VsYXIgZXhwcmVzc2lvbiBtYXRjaGluZyB0aGUgcHJpbWFyeSBpbnN0YWxsZXIgYXNzZXRcbiAqIGZvciBhIHBsYXRmb3JtIHNoYXBlIGFuZCB2ZXJzaW9uLCBhY3Jvc3MgYm90aCBzZXBhcmF0b3IgY29udmVudGlvbnMuXG4gKlxuICogQHBhcmFtIHNoYXBlIC0gVGhlIHBsYXRmb3JtIGFzc2V0IHNoYXBlLlxuICogQHBhcmFtIHZlcnNpb24gLSBUaGUgY29uY3JldGUgYHgueS56YCB2ZXJzaW9uLlxuICogQHJldHVybnMgVGhlIG1hdGNoaW5nIHBhdHRlcm4uXG4gKi9cbmZ1bmN0aW9uIGJ1aWxkQXNzZXROYW1lUGF0dGVybihzaGFwZTogUGxhdGZvcm1JbnN0YWxsZXJBc3NldFNoYXBlLCB2ZXJzaW9uOiBzdHJpbmcpOiBSZWdFeHAge1xuICBjb25zdCBpbmZpeEdyb3VwID0gc2hhcGUub3B0aW9uYWxJbmZpeGVzLmxlbmd0aCA+IDBcbiAgICA/IGAoPzoke3NoYXBlLm9wdGlvbmFsSW5maXhlcy5tYXAoKGluZml4KSA9PiBlc2NhcGVSZWdFeHAoaW5maXgpKS5qb2luKCd8Jyl9KT9gXG4gICAgOiAnJztcbiAgcmV0dXJuIG5ldyBSZWdFeHAoXG4gICAgU3RyaW5nLnJhd2BeJHtlc2NhcGVSZWdFeHAoc2hhcGUuYmFzZU5hbWUpfVsuLV0ke2VzY2FwZVJlZ0V4cCh2ZXJzaW9uKX0ke2luZml4R3JvdXB9XFwuJHtlc2NhcGVSZWdFeHAoc2hhcGUuZXh0ZW5zaW9uKX0kYFxuICApO1xufVxuXG4vKipcbiAqIEVzY2FwZXMgYSBzdHJpbmcgZm9yIGxpdGVyYWwgdXNlIGluc2lkZSBhIHJlZ3VsYXIgZXhwcmVzc2lvbi5cbiAqXG4gKiBAcGFyYW0gdmFsdWUgLSBUaGUgcmF3IHN0cmluZy5cbiAqIEByZXR1cm5zIFRoZSBlc2NhcGVkIHN0cmluZy5cbiAqL1xuZnVuY3Rpb24gZXNjYXBlUmVnRXhwKHZhbHVlOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gdmFsdWUucmVwbGFjZUFsbCgvWy4qKz9eJHt9KCl8W1xcXVxcXFxdL2csIFN0cmluZy5yYXdgXFwkJmApO1xufVxuXG4vKipcbiAqIFJlc29sdmVzIHRoZSBpbnN0YWxsZXIgYXNzZXQgc2hhcGUgZm9yIGEgcGxhdGZvcm0uXG4gKlxuICogQHBhcmFtIHBsYXRmb3JtIC0gVGhlIE5vZGUuanMgcGxhdGZvcm0gaWRlbnRpZmllci5cbiAqIEByZXR1cm5zIFRoZSBhc3NldCBzaGFwZSAoTGludXggYC50YXIuZ3pgIGZvciBhbnkgbm9uLVdpbmRvd3MvbWFjT1MgcGxhdGZvcm0pLlxuICovXG5mdW5jdGlvbiBnZXRQbGF0Zm9ybUFzc2V0U2hhcGUocGxhdGZvcm06IE5vZGVKUy5QbGF0Zm9ybSk6IFBsYXRmb3JtSW5zdGFsbGVyQXNzZXRTaGFwZSB7XG4gIGlmIChwbGF0Zm9ybSA9PT0gJ3dpbjMyJykge1xuICAgIHJldHVybiBXSU5ET1dTX0FTU0VUX1NIQVBFO1xuICB9XG5cbiAgaWYgKHBsYXRmb3JtID09PSAnZGFyd2luJykge1xuICAgIHJldHVybiBNQUNfQVNTRVRfU0hBUEU7XG4gIH1cblxuICByZXR1cm4gTElOVVhfQVNTRVRfU0hBUEU7XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQXlEQSxNQUFNLHNCQUFtRDtBQUFBLEVBQ3ZELFVBQVU7QUFBQSxFQUNWLFdBQVc7QUFBQSxFQUNYLGlCQUFpQixDQUFDO0FBQ3BCO0FBRUEsTUFBTSxrQkFBK0M7QUFBQSxFQUNuRCxVQUFVO0FBQUEsRUFDVixXQUFXO0FBQUEsRUFDWCxpQkFBaUIsQ0FBQyxZQUFZO0FBQ2hDO0FBRUEsTUFBTSxvQkFBaUQ7QUFBQSxFQUNyRCxVQUFVO0FBQUEsRUFDVixXQUFXO0FBQUEsRUFDWCxpQkFBaUIsQ0FBQztBQUNwQjtBQUtBLE1BQU0sd0JBQXdCLENBQUMsS0FBSyxHQUFHO0FBNERoQyxTQUFTLGtDQUFrQyxRQUEyRDtBQUMzRyxRQUFNLFFBQVEsc0JBQXNCLE9BQU8sUUFBUTtBQUNuRCxRQUFNLFVBQVUsTUFBTSxnQkFBZ0IsU0FBUyxJQUFJLENBQUMsSUFBSSxHQUFHLE1BQU0sZUFBZSxJQUFJLENBQUMsRUFBRTtBQUN2RixRQUFNLGFBQXVCLENBQUM7QUFDOUIsYUFBVyxhQUFhLHVCQUF1QjtBQUM3QyxlQUFXLFNBQVMsU0FBUztBQUMzQixpQkFBVyxLQUFLLEdBQUcsTUFBTSxRQUFRLEdBQUcsU0FBUyxHQUFHLE9BQU8sT0FBTyxHQUFHLEtBQUssSUFBSSxNQUFNLFNBQVMsRUFBRTtBQUFBLElBQzdGO0FBQUEsRUFDRjtBQUNBLFNBQU87QUFDVDtBQVdPLFNBQVMseUJBQXlCLFFBQTREO0FBQ25HLFFBQU0sVUFBVSxzQkFBc0Isc0JBQXNCLE9BQU8sUUFBUSxHQUFHLE9BQU8sT0FBTztBQUM1RixTQUFPLE9BQU8sV0FBVyxLQUFLLENBQUMsU0FBUyxRQUFRLEtBQUssSUFBSSxDQUFDO0FBQzVEO0FBV08sU0FBUywyQkFBMkIsUUFBOEQ7QUFDdkcsUUFBTSxFQUFFLFVBQVUsSUFBSTtBQUN0QixNQUFJLENBQUMsV0FBVztBQUNkLFdBQU87QUFBQSxFQUNUO0FBRUEsTUFBSSxPQUFPLGFBQWEsU0FBUztBQUMvQixXQUFPLFVBQVU7QUFBQSxFQUNuQjtBQUVBLE1BQUksT0FBTyxhQUFhLFVBQVU7QUFDaEMsV0FBTyxVQUFVO0FBQUEsRUFDbkI7QUFFQSxTQUFPLFVBQVU7QUFDbkI7QUFVQSxTQUFTLHNCQUFzQixPQUFvQyxTQUF5QjtBQUMxRixRQUFNLGFBQWEsTUFBTSxnQkFBZ0IsU0FBUyxJQUM5QyxNQUFNLE1BQU0sZ0JBQWdCLElBQUksQ0FBQyxVQUFVLGFBQWEsS0FBSyxDQUFDLEVBQUUsS0FBSyxHQUFHLENBQUMsT0FDekU7QUFDSixTQUFPLElBQUk7QUFBQSxJQUNULE9BQU8sT0FBTyxhQUFhLE1BQU0sUUFBUSxDQUFDLE9BQU8sYUFBYSxPQUFPLENBQUMsR0FBRyxVQUFVLEtBQUssYUFBYSxNQUFNLFNBQVMsQ0FBQztBQUFBLEVBQ3ZIO0FBQ0Y7QUFRQSxTQUFTLGFBQWEsT0FBdUI7QUFDM0MsU0FBTyxNQUFNLFdBQVcsdUJBQXVCLE9BQU8sUUFBUTtBQUNoRTtBQVFBLFNBQVMsc0JBQXNCLFVBQXdEO0FBQ3JGLE1BQUksYUFBYSxTQUFTO0FBQ3hCLFdBQU87QUFBQSxFQUNUO0FBRUEsTUFBSSxhQUFhLFVBQVU7QUFDekIsV0FBTztBQUFBLEVBQ1Q7QUFFQSxTQUFPO0FBQ1Q7IiwKICAibmFtZXMiOiBbXQp9Cg==
94
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2luc3RhbGxlci1hc3NldC50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIFB1cmUgaGVscGVycyBmb3IgcmVzb2x2aW5nIHdoaWNoIEdpdEh1YiByZWxlYXNlIGFzc2V0IGlzIHRoZSBkZXNrdG9wXG4gKiAqKmluc3RhbGxlcioqIGZvciBhIGdpdmVuIE9ic2lkaWFuIHZlcnNpb24gYW5kIHBsYXRmb3JtLlxuICpcbiAqIE9ic2lkaWFuIGNoYW5nZWQgaXRzIGluc3RhbGxlciBhc3NldCBuYW1pbmcgY29udmVudGlvbiBwYXJ0d2F5IHRocm91Z2ggaXRzXG4gKiBoaXN0b3J5LCBzbyBhIHZlcnNpb24gY2Fubm90IGJlIHR1cm5lZCBpbnRvIGFuIGFzc2V0IG5hbWUgYnkgc3RyaW5nXG4gKiB0ZW1wbGF0aW5nIGFsb25lOlxuICpcbiAqIC0gKipEb3QqKiBzZXBhcmF0b3Igb24gb2xkZXIgcmVsZWFzZXM6IGBPYnNpZGlhbi48dmVyPi5leGVgICh2ZXJpZmllZCAwLjE0LjVcbiAqICAgdGhyb3VnaCAxLjUuMTIpLCB3aXRoIGEgYC11bml2ZXJzYWxgIGluZml4IG9uIHRoZSBtYWNPUyBkbWdcbiAqICAgKGBPYnNpZGlhbi08dmVyPi11bml2ZXJzYWwuZG1nYCkuXG4gKiAtICoqSHlwaGVuKiogc2VwYXJhdG9yIG9uIG5ld2VyIHJlbGVhc2VzOiBgT2JzaWRpYW4tPHZlcj4uZXhlYCxcbiAqICAgYE9ic2lkaWFuLTx2ZXI+LmRtZ2AgKHZlcmlmaWVkIDEuNi43IG9ud2FyZDsgdGhlIHRyYW5zaXRpb24gaXMgYXJvdW5kIDEuNi4wKS5cbiAqXG4gKiBUaGUgaW50ZWdyYXRpb24tdGltZSBkb3dubG9hZGVyIChgb2JzaWRpYW4taW5zdGFsbGVyLnRzYCkgcXVlcmllcyB0aGVcbiAqIHJlbGVhc2UncyByZWFsIGFzc2V0IGxpc3QgYW5kIHBpY2tzIHRoZSBwbGF0Zm9ybS1jb3JyZWN0IG9uZSB3aXRoXG4gKiB7QGxpbmsgc2VsZWN0SW5zdGFsbGVyQXNzZXROYW1lfTsgaWYgdGhhdCBuZXR3b3JrIGNhbGwgaXMgdW5hdmFpbGFibGUgaXRcbiAqIGZhbGxzIGJhY2sgdG8gdHJ5aW5nIGV2ZXJ5IHtAbGluayBidWlsZEluc3RhbGxlckFzc2V0TmFtZUNhbmRpZGF0ZXN9IGZvcm0uXG4gKiBCb3RoIGhlbHBlcnMgYXJlIHB1cmUgc28gdGhlIHNlcGFyYXRvci9hcmNoIG1hdHJpeCBzdGF5cyB1bml0LXRlc3RlZCAodGhlXG4gKiBkb3dubG9hZGVyIGl0c2VsZiBuZWVkcyB0aGUgbmV0d29yayBhbmQgaXMgZXhjbHVkZWQgZnJvbSB1bml0IHRlc3RzKS5cbiAqXG4gKiBPbmx5IHRoZSB4NjQgaW5zdGFsbGVyIGlzIHJlc29sdmVkIFx1MjAxNCB0aGUgZXh0cmFjdGlvbiBwYXRoIGlzIHg2NC1vbmx5IFx1MjAxNCBzbyB0aGVcbiAqIDMyLWJpdCAvIGFybTY0IC8gYWxsLXVzZXJzIHNpYmxpbmcgYXNzZXRzIGFyZSBkZWxpYmVyYXRlbHkgcmVqZWN0ZWQuXG4gKlxuICogV2hlbiB0aGUgdmVyc2lvbiBpcyBwcmVzZW50IGluIHRoZSBiYWtlZCBgbWV0YWRhdGEuanNvbmAgY2F0YWxvZyAoZnJvbVxuICogdGhlIGBvYnNpZGlhbm1kL29ic2lkaWFuLXJlbGVhc2VzYCByZWxlYXNlIGFzc2V0cyksIGl0cyBleGFjdCBpbnN0YWxsZXIgVVJMIGlzIGFscmVhZHkga25vd247XG4gKiB7QGxpbmsgc2VsZWN0SW5zdGFsbGVyRG93bmxvYWRVcmx9IHBpY2tzIHRoZSBwbGF0Zm9ybS1jb3JyZWN0IG9uZSBhbmQgdGhlXG4gKiBkb3dubG9hZGVyIHVzZXMgaXQgZGlyZWN0bHksIHNraXBwaW5nIHRoZSByZWxlYXNlLUFQSSBsb29rdXAgYW5kIHRoZVxuICogbmFtZS10ZW1wbGF0aW5nIGZhbGxiYWNrIGVudGlyZWx5LlxuICovXG5cbmltcG9ydCB0eXBlIHsgT2JzaWRpYW5WZXJzaW9uRG93bmxvYWRzIH0gZnJvbSAnLi9vYnNpZGlhbi1tZXRhZGF0YS5janMnO1xuXG4vKipcbiAqIFRoZSBwbGF0Zm9ybS1zcGVjaWZpYyBzaGFwZSBvZiBhbiBPYnNpZGlhbiBpbnN0YWxsZXIgYXNzZXQgbmFtZS5cbiAqL1xuaW50ZXJmYWNlIFBsYXRmb3JtSW5zdGFsbGVyQXNzZXRTaGFwZSB7XG4gIC8qKlxuICBMZWFkaW5nIHRva2VuIG9mIHRoZSBhc3NldCBuYW1lOiBgT2JzaWRpYW5gIChXaW5kb3dzL21hY09TKSBvciBgb2JzaWRpYW5gIChMaW51eCkuXG4gICAqL1xuICByZWFkb25seSBiYXNlTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICBGaWxlIGV4dGVuc2lvbiB3aXRob3V0IHRoZSBsZWFkaW5nIGRvdCwgZS5nLiBgZXhlYCwgYGRtZ2AsIGB0YXIuZ3pgLlxuICAgKi9cbiAgcmVhZG9ubHkgZXh0ZW5zaW9uOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEluZml4ZXMgcGVybWl0dGVkIGJldHdlZW4gdGhlIHZlcnNpb24gYW5kIHRoZSBleHRlbnNpb24gZm9yIHRoZSBwcmltYXJ5XG4gICAqIChub24tYXJjaCkgYXNzZXQsIGUuZy4gYC11bml2ZXJzYWxgIG9uIHRoZSBvbGRlciBtYWNPUyBkbWcuIEFuIGVtcHR5IGFycmF5XG4gICAqIG1lYW5zIHRoZSB2ZXJzaW9uIGlzIGltbWVkaWF0ZWx5IGZvbGxvd2VkIGJ5IHRoZSBleHRlbnNpb24uXG4gICAqL1xuICByZWFkb25seSBvcHRpb25hbEluZml4ZXM6IHJlYWRvbmx5IHN0cmluZ1tdO1xufVxuXG5jb25zdCBXSU5ET1dTX0FTU0VUX1NIQVBFOiBQbGF0Zm9ybUluc3RhbGxlckFzc2V0U2hhcGUgPSB7XG4gIGJhc2VOYW1lOiAnT2JzaWRpYW4nLFxuICBleHRlbnNpb246ICdleGUnLFxuICBvcHRpb25hbEluZml4ZXM6IFtdXG59O1xuXG5jb25zdCBNQUNfQVNTRVRfU0hBUEU6IFBsYXRmb3JtSW5zdGFsbGVyQXNzZXRTaGFwZSA9IHtcbiAgYmFzZU5hbWU6ICdPYnNpZGlhbicsXG4gIGV4dGVuc2lvbjogJ2RtZycsXG4gIG9wdGlvbmFsSW5maXhlczogWyctdW5pdmVyc2FsJ11cbn07XG5cbmNvbnN0IExJTlVYX0FTU0VUX1NIQVBFOiBQbGF0Zm9ybUluc3RhbGxlckFzc2V0U2hhcGUgPSB7XG4gIGJhc2VOYW1lOiAnb2JzaWRpYW4nLFxuICBleHRlbnNpb246ICd0YXIuZ3onLFxuICBvcHRpb25hbEluZml4ZXM6IFtdXG59O1xuXG4vKipcblNlcGFyYXRvciBmb3JtcyB0cmllZCwgaHlwaGVuIChuZXdlcikgZmlyc3QsIHdoZW4gZmFsbGluZyBiYWNrIHRvIHRlbXBsYXRlZCBuYW1lcy5cbiAqL1xuY29uc3QgQVNTRVRfTkFNRV9TRVBBUkFUT1JTID0gWyctJywgJy4nXSBhcyBjb25zdDtcblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgYnVpbGRJbnN0YWxsZXJBc3NldE5hbWVDYW5kaWRhdGVzfS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBCdWlsZEluc3RhbGxlckFzc2V0TmFtZUNhbmRpZGF0ZXNQYXJhbXMge1xuICAvKipcbiAgVGhlIHBsYXRmb3JtIHRvIGJ1aWxkIGNhbmRpZGF0ZSBuYW1lcyBmb3IuXG4gICAqL1xuICByZWFkb25seSBwbGF0Zm9ybTogTm9kZUpTLlBsYXRmb3JtO1xuXG4gIC8qKlxuICBUaGUgY29uY3JldGUgYHgueS56YCB2ZXJzaW9uLlxuICAgKi9cbiAgcmVhZG9ubHkgdmVyc2lvbjogc3RyaW5nO1xufVxuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayBzZWxlY3RJbnN0YWxsZXJBc3NldE5hbWV9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFNlbGVjdEluc3RhbGxlckFzc2V0TmFtZVBhcmFtcyB7XG4gIC8qKlxuICBUaGUgcmVsZWFzZSdzIGFzc2V0IG5hbWVzIChlLmcuIGZyb20gdGhlIEdpdEh1YiByZWxlYXNlIEFQSSkuXG4gICAqL1xuICByZWFkb25seSBhc3NldE5hbWVzOiByZWFkb25seSBzdHJpbmdbXTtcblxuICAvKipcbiAgVGhlIHBsYXRmb3JtIHdob3NlIGluc3RhbGxlciBhc3NldCB0byBzZWxlY3QuXG4gICAqL1xuICByZWFkb25seSBwbGF0Zm9ybTogTm9kZUpTLlBsYXRmb3JtO1xuXG4gIC8qKlxuICBUaGUgY29uY3JldGUgYHgueS56YCB2ZXJzaW9uLlxuICAgKi9cbiAgcmVhZG9ubHkgdmVyc2lvbjogc3RyaW5nO1xufVxuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayBzZWxlY3RJbnN0YWxsZXJEb3dubG9hZFVybH0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2VsZWN0SW5zdGFsbGVyRG93bmxvYWRVcmxQYXJhbXMge1xuICAvKipcbiAgVGhlIHZlcnNpb24ncyBiYWtlZCBkb3dubG9hZCBVUkxzLCBvciBgdW5kZWZpbmVkYCB3aGVuIGl0IGlzIGFic2VudCBmcm9tIHRoZSBjYXRhbG9nLlxuICAgKi9cbiAgcmVhZG9ubHkgZG93bmxvYWRzOiBPYnNpZGlhblZlcnNpb25Eb3dubG9hZHMgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gIFRoZSBwbGF0Zm9ybSB3aG9zZSBpbnN0YWxsZXIgVVJMIHRvIHNlbGVjdC5cbiAgICovXG4gIHJlYWRvbmx5IHBsYXRmb3JtOiBOb2RlSlMuUGxhdGZvcm07XG59XG5cbi8qKlxuICogQnVpbGRzIHRoZSBmYWxsYmFjayBsaXN0IG9mIGluc3RhbGxlciBhc3NldCBuYW1lcyB0byB0cnkgd2hlbiB0aGUgcmVsZWFzZSdzXG4gKiByZWFsIGFzc2V0IGxpc3QgY2Fubm90IGJlIGZldGNoZWQsIGNvdmVyaW5nIGJvdGggc2VwYXJhdG9yIGZvcm1zIChhbmQsIG9uXG4gKiBtYWNPUywgdGhlIGAtdW5pdmVyc2FsYCBpbmZpeCkuXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSBwbGF0Zm9ybSBhbmQgdmVyc2lvbi5cbiAqIEByZXR1cm5zIENhbmRpZGF0ZSBhc3NldCBuYW1lcywgaHlwaGVuLXNlcGFyYXRlZCBmb3JtcyBmaXJzdC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkSW5zdGFsbGVyQXNzZXROYW1lQ2FuZGlkYXRlcyhwYXJhbXM6IEJ1aWxkSW5zdGFsbGVyQXNzZXROYW1lQ2FuZGlkYXRlc1BhcmFtcyk6IHN0cmluZ1tdIHtcbiAgY29uc3Qgc2hhcGUgPSBnZXRQbGF0Zm9ybUFzc2V0U2hhcGUocGFyYW1zLnBsYXRmb3JtKTtcbiAgY29uc3QgaW5maXhlcyA9IHNoYXBlLm9wdGlvbmFsSW5maXhlcy5sZW5ndGggPiAwID8gWycnLCAuLi5zaGFwZS5vcHRpb25hbEluZml4ZXNdIDogWycnXTtcbiAgY29uc3QgY2FuZGlkYXRlczogc3RyaW5nW10gPSBbXTtcbiAgZm9yIChjb25zdCBzZXBhcmF0b3Igb2YgQVNTRVRfTkFNRV9TRVBBUkFUT1JTKSB7XG4gICAgZm9yIChjb25zdCBpbmZpeCBvZiBpbmZpeGVzKSB7XG4gICAgICBjYW5kaWRhdGVzLnB1c2goYCR7c2hhcGUuYmFzZU5hbWV9JHtzZXBhcmF0b3J9JHtwYXJhbXMudmVyc2lvbn0ke2luZml4fS4ke3NoYXBlLmV4dGVuc2lvbn1gKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGNhbmRpZGF0ZXM7XG59XG5cbi8qKlxuICogU2VsZWN0cyB0aGUgcGxhdGZvcm0tY29ycmVjdCB4NjQgaW5zdGFsbGVyIGFzc2V0IG5hbWUgZnJvbSBhIHJlbGVhc2UncyBhc3NldFxuICogbGlzdCwgdG9sZXJhdGluZyBib3RoIHRoZSBkb3QtIGFuZCBoeXBoZW4tc2VwYXJhdGVkIG5hbWluZyBjb252ZW50aW9ucyBhbmRcbiAqIHJlamVjdGluZyB0aGUgMzItYml0IC8gYXJtNjQgLyBhbGwtdXNlcnMgc2libGluZyBhc3NldHMuXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSBhc3NldCBsaXN0LCBwbGF0Zm9ybSwgYW5kIHZlcnNpb24uXG4gKiBAcmV0dXJucyBUaGUgbWF0Y2hpbmcgYXNzZXQgbmFtZSwgb3IgYHVuZGVmaW5lZGAgaWYgbm9uZSBtYXRjaGVzIChlLmcuIGFcbiAqICAgY2F0YWx5c3QgcmVsZWFzZSB0aGF0IHNoaXBzIG5vIGluc3RhbGxlcikuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZWxlY3RJbnN0YWxsZXJBc3NldE5hbWUocGFyYW1zOiBTZWxlY3RJbnN0YWxsZXJBc3NldE5hbWVQYXJhbXMpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICBjb25zdCBwYXR0ZXJuID0gYnVpbGRBc3NldE5hbWVQYXR0ZXJuKGdldFBsYXRmb3JtQXNzZXRTaGFwZShwYXJhbXMucGxhdGZvcm0pLCBwYXJhbXMudmVyc2lvbik7XG4gIHJldHVybiBwYXJhbXMuYXNzZXROYW1lcy5maW5kKChuYW1lKSA9PiBwYXR0ZXJuLnRlc3QobmFtZSkpO1xufVxuXG4vKipcbiAqIFNlbGVjdHMgdGhlIHBsYXRmb3JtLWNvcnJlY3QgeDY0IGluc3RhbGxlciBkb3dubG9hZCBVUkwgZnJvbSBhIHZlcnNpb24nc1xuICogYmFrZWQgY2F0YWxvZyBlbnRyeS5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIGJha2VkIGRvd25sb2FkIFVSTHMgYW5kIHRoZSBwbGF0Zm9ybS5cbiAqIEByZXR1cm5zIFRoZSBpbnN0YWxsZXIgVVJMIGZvciB0aGUgcGxhdGZvcm0sIG9yIGB1bmRlZmluZWRgIHdoZW4gdGhlIHZlcnNpb25cbiAqICAgaGFzIG5vIGNhdGFsb2cgZW50cnkgb3Igc2hpcHMgbm8gZGVza3RvcCBpbnN0YWxsZXIgZm9yIGl0IChlLmcuIGEgY2F0YWx5c3RcbiAqICAgYnVpbGQsIG9yIGEgTGludXggYC50YXIuZ3pgIHRoYXQgd2FzIG5ldmVyIHB1Ymxpc2hlZCkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZWxlY3RJbnN0YWxsZXJEb3dubG9hZFVybChwYXJhbXM6IFNlbGVjdEluc3RhbGxlckRvd25sb2FkVXJsUGFyYW1zKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgY29uc3QgeyBkb3dubG9hZHMgfSA9IHBhcmFtcztcbiAgaWYgKCFkb3dubG9hZHMpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgaWYgKHBhcmFtcy5wbGF0Zm9ybSA9PT0gJ3dpbjMyJykge1xuICAgIHJldHVybiBkb3dubG9hZHMuZXhlO1xuICB9XG5cbiAgaWYgKHBhcmFtcy5wbGF0Zm9ybSA9PT0gJ2RhcndpbicpIHtcbiAgICByZXR1cm4gZG93bmxvYWRzLmRtZztcbiAgfVxuXG4gIHJldHVybiBkb3dubG9hZHMudGFyO1xufVxuXG4vKipcbiAqIEJ1aWxkcyBhbiBhbmNob3JlZCByZWd1bGFyIGV4cHJlc3Npb24gbWF0Y2hpbmcgdGhlIHByaW1hcnkgaW5zdGFsbGVyIGFzc2V0XG4gKiBmb3IgYSBwbGF0Zm9ybSBzaGFwZSBhbmQgdmVyc2lvbiwgYWNyb3NzIGJvdGggc2VwYXJhdG9yIGNvbnZlbnRpb25zLlxuICpcbiAqIEBwYXJhbSBzaGFwZSAtIFRoZSBwbGF0Zm9ybSBhc3NldCBzaGFwZS5cbiAqIEBwYXJhbSB2ZXJzaW9uIC0gVGhlIGNvbmNyZXRlIGB4LnkuemAgdmVyc2lvbi5cbiAqIEByZXR1cm5zIFRoZSBtYXRjaGluZyBwYXR0ZXJuLlxuICovXG5mdW5jdGlvbiBidWlsZEFzc2V0TmFtZVBhdHRlcm4oc2hhcGU6IFBsYXRmb3JtSW5zdGFsbGVyQXNzZXRTaGFwZSwgdmVyc2lvbjogc3RyaW5nKTogUmVnRXhwIHtcbiAgY29uc3QgaW5maXhHcm91cCA9IHNoYXBlLm9wdGlvbmFsSW5maXhlcy5sZW5ndGggPiAwXG4gICAgPyBgKD86JHtzaGFwZS5vcHRpb25hbEluZml4ZXMubWFwKChpbmZpeCkgPT4gZXNjYXBlUmVnRXhwKGluZml4KSkuam9pbignfCcpfSk/YFxuICAgIDogJyc7XG4gIHJldHVybiBuZXcgUmVnRXhwKFxuICAgIFN0cmluZy5yYXdgXiR7ZXNjYXBlUmVnRXhwKHNoYXBlLmJhc2VOYW1lKX1bLi1dJHtlc2NhcGVSZWdFeHAodmVyc2lvbil9JHtpbmZpeEdyb3VwfVxcLiR7ZXNjYXBlUmVnRXhwKHNoYXBlLmV4dGVuc2lvbil9JGBcbiAgKTtcbn1cblxuLyoqXG4gKiBFc2NhcGVzIGEgc3RyaW5nIGZvciBsaXRlcmFsIHVzZSBpbnNpZGUgYSByZWd1bGFyIGV4cHJlc3Npb24uXG4gKlxuICogQHBhcmFtIHZhbHVlIC0gVGhlIHJhdyBzdHJpbmcuXG4gKiBAcmV0dXJucyBUaGUgZXNjYXBlZCBzdHJpbmcuXG4gKi9cbmZ1bmN0aW9uIGVzY2FwZVJlZ0V4cCh2YWx1ZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIHZhbHVlLnJlcGxhY2VBbGwoL1suKis/XiR7fSgpfFtcXF1cXFxcXS9nLCBTdHJpbmcucmF3YFxcJCZgKTtcbn1cblxuLyoqXG4gKiBSZXNvbHZlcyB0aGUgaW5zdGFsbGVyIGFzc2V0IHNoYXBlIGZvciBhIHBsYXRmb3JtLlxuICpcbiAqIEBwYXJhbSBwbGF0Zm9ybSAtIFRoZSBOb2RlLmpzIHBsYXRmb3JtIGlkZW50aWZpZXIuXG4gKiBAcmV0dXJucyBUaGUgYXNzZXQgc2hhcGUgKExpbnV4IGAudGFyLmd6YCBmb3IgYW55IG5vbi1XaW5kb3dzL21hY09TIHBsYXRmb3JtKS5cbiAqL1xuZnVuY3Rpb24gZ2V0UGxhdGZvcm1Bc3NldFNoYXBlKHBsYXRmb3JtOiBOb2RlSlMuUGxhdGZvcm0pOiBQbGF0Zm9ybUluc3RhbGxlckFzc2V0U2hhcGUge1xuICBpZiAocGxhdGZvcm0gPT09ICd3aW4zMicpIHtcbiAgICByZXR1cm4gV0lORE9XU19BU1NFVF9TSEFQRTtcbiAgfVxuXG4gIGlmIChwbGF0Zm9ybSA9PT0gJ2RhcndpbicpIHtcbiAgICByZXR1cm4gTUFDX0FTU0VUX1NIQVBFO1xuICB9XG5cbiAgcmV0dXJuIExJTlVYX0FTU0VUX1NIQVBFO1xufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUF5REEsTUFBTSxzQkFBbUQ7QUFBQSxFQUN2RCxVQUFVO0FBQUEsRUFDVixXQUFXO0FBQUEsRUFDWCxpQkFBaUIsQ0FBQztBQUNwQjtBQUVBLE1BQU0sa0JBQStDO0FBQUEsRUFDbkQsVUFBVTtBQUFBLEVBQ1YsV0FBVztBQUFBLEVBQ1gsaUJBQWlCLENBQUMsWUFBWTtBQUNoQztBQUVBLE1BQU0sb0JBQWlEO0FBQUEsRUFDckQsVUFBVTtBQUFBLEVBQ1YsV0FBVztBQUFBLEVBQ1gsaUJBQWlCLENBQUM7QUFDcEI7QUFLQSxNQUFNLHdCQUF3QixDQUFDLEtBQUssR0FBRztBQTREaEMsU0FBUyxrQ0FBa0MsUUFBMkQ7QUFDM0csUUFBTSxRQUFRLHNCQUFzQixPQUFPLFFBQVE7QUFDbkQsUUFBTSxVQUFVLE1BQU0sZ0JBQWdCLFNBQVMsSUFBSSxDQUFDLElBQUksR0FBRyxNQUFNLGVBQWUsSUFBSSxDQUFDLEVBQUU7QUFDdkYsUUFBTSxhQUF1QixDQUFDO0FBQzlCLGFBQVcsYUFBYSx1QkFBdUI7QUFDN0MsZUFBVyxTQUFTLFNBQVM7QUFDM0IsaUJBQVcsS0FBSyxHQUFHLE1BQU0sUUFBUSxHQUFHLFNBQVMsR0FBRyxPQUFPLE9BQU8sR0FBRyxLQUFLLElBQUksTUFBTSxTQUFTLEVBQUU7QUFBQSxJQUM3RjtBQUFBLEVBQ0Y7QUFDQSxTQUFPO0FBQ1Q7QUFXTyxTQUFTLHlCQUF5QixRQUE0RDtBQUNuRyxRQUFNLFVBQVUsc0JBQXNCLHNCQUFzQixPQUFPLFFBQVEsR0FBRyxPQUFPLE9BQU87QUFDNUYsU0FBTyxPQUFPLFdBQVcsS0FBSyxDQUFDLFNBQVMsUUFBUSxLQUFLLElBQUksQ0FBQztBQUM1RDtBQVdPLFNBQVMsMkJBQTJCLFFBQThEO0FBQ3ZHLFFBQU0sRUFBRSxVQUFVLElBQUk7QUFDdEIsTUFBSSxDQUFDLFdBQVc7QUFDZCxXQUFPO0FBQUEsRUFDVDtBQUVBLE1BQUksT0FBTyxhQUFhLFNBQVM7QUFDL0IsV0FBTyxVQUFVO0FBQUEsRUFDbkI7QUFFQSxNQUFJLE9BQU8sYUFBYSxVQUFVO0FBQ2hDLFdBQU8sVUFBVTtBQUFBLEVBQ25CO0FBRUEsU0FBTyxVQUFVO0FBQ25CO0FBVUEsU0FBUyxzQkFBc0IsT0FBb0MsU0FBeUI7QUFDMUYsUUFBTSxhQUFhLE1BQU0sZ0JBQWdCLFNBQVMsSUFDOUMsTUFBTSxNQUFNLGdCQUFnQixJQUFJLENBQUMsVUFBVSxhQUFhLEtBQUssQ0FBQyxFQUFFLEtBQUssR0FBRyxDQUFDLE9BQ3pFO0FBQ0osU0FBTyxJQUFJO0FBQUEsSUFDVCxPQUFPLE9BQU8sYUFBYSxNQUFNLFFBQVEsQ0FBQyxPQUFPLGFBQWEsT0FBTyxDQUFDLEdBQUcsVUFBVSxLQUFLLGFBQWEsTUFBTSxTQUFTLENBQUM7QUFBQSxFQUN2SDtBQUNGO0FBUUEsU0FBUyxhQUFhLE9BQXVCO0FBQzNDLFNBQU8sTUFBTSxXQUFXLHVCQUF1QixPQUFPLFFBQVE7QUFDaEU7QUFRQSxTQUFTLHNCQUFzQixVQUF3RDtBQUNyRixNQUFJLGFBQWEsU0FBUztBQUN4QixXQUFPO0FBQUEsRUFDVDtBQUVBLE1BQUksYUFBYSxVQUFVO0FBQ3pCLFdBQU87QUFBQSxFQUNUO0FBRUEsU0FBTztBQUNUOyIsCiAgIm5hbWVzIjogW10KfQo=
@@ -25,7 +25,7 @@
25
25
  * 32-bit / arm64 / all-users sibling assets are deliberately rejected.
26
26
  *
27
27
  * When the version is present in the baked `metadata.json` catalog (from
28
- * upstream `obsidian-versions.json`), its exact installer URL is already known;
28
+ * the `obsidianmd/obsidian-releases` release assets), its exact installer URL is already known;
29
29
  * {@link selectInstallerDownloadUrl} picks the platform-correct one and the
30
30
  * downloader uses it directly, skipping the release-API lookup and the
31
31
  * name-templating fallback entirely.
@@ -0,0 +1,62 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var integration_setup_failed_error_exports = {};
20
+ __export(integration_setup_failed_error_exports, {
21
+ IntegrationSetupFailedError: () => IntegrationSetupFailedError
22
+ });
23
+ module.exports = __toCommonJS(integration_setup_failed_error_exports);
24
+ class IntegrationSetupFailedError extends Error {
25
+ /**
26
+ The `name` of the original error the global setup threw.
27
+ */
28
+ errorName;
29
+ /**
30
+ The original setup failure, as stringified by the adapter that caught it.
31
+ */
32
+ originalMessage;
33
+ /**
34
+ The transport the failed project is configured for.
35
+ */
36
+ transportLabel;
37
+ /**
38
+ * Creates the error from the failure the global setup published to its workers.
39
+ *
40
+ * @param params - The configured transport plus the original error's name and message.
41
+ */
42
+ constructor(params) {
43
+ const {
44
+ errorName,
45
+ message,
46
+ transportLabel
47
+ } = params;
48
+ super(
49
+ `Integration setup for transport "${transportLabel}" failed, so its tests cannot run. Original error: ${message}`
50
+ );
51
+ this.name = "IntegrationSetupFailedError";
52
+ this.errorName = errorName;
53
+ this.originalMessage = message;
54
+ this.transportLabel = transportLabel;
55
+ this.stack = `${this.name}: ${this.message}`;
56
+ }
57
+ }
58
+ // Annotate the CommonJS export names for ESM import in node:
59
+ 0 && (module.exports = {
60
+ IntegrationSetupFailedError
61
+ });
62
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2ludGVncmF0aW9uLXNldHVwLWZhaWxlZC1lcnJvci50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIFRoZSBkaXN0aW5jdCBlcnJvciB0aHJvd24gaW4gYSAqKnRlc3Qgd29ya2VyKiogd2hlbiB0aGF0IHByb2plY3QncyBpbnRlZ3JhdGlvblxuICogZ2xvYmFsIHNldHVwIGFscmVhZHkgZmFpbGVkIGluIHRoZSBtYWluIHByb2Nlc3MuXG4gKlxuICogV2l0aG91dCBpdCBhIHdvcmtlciB3aG9zZSBzZXR1cCBmYWlsZWQgZ2V0cyBubyB0cmFuc3BvcnQgb3B0aW9ucyBhdCBhbGwsIGFuZFxuICogc2lsZW50bHkgcmVidWlsZHMgdGhlIG93bmVkICoqZGVza3RvcCoqIENEUCBkZWZhdWx0IFx1MjAxNCBzbyBhbiBBbmRyb2lkIHByb2plY3Qnc1xuICogc3VpdGUgd291bGQgcnVuIG9uIGRlc2t0b3AsIGFuZCB0aGVuIGRpZSBvbiBgRmFpbGVkIHRvIHBhcnNlIFVSTCBmcm9tIC9qc29uYFxuICogKGFuIG93bmVkIGluc3RhbmNlIG5vYm9keSBsYXVuY2hlZCBoYXMgbm8gQ0RQIGVuZHBvaW50KS4gRXZlcnkgZmlsZSBpbiB0aGVcbiAqIHByb2plY3QgcmVwb3J0ZWQgdGhhdCBtYXNrIHdoaWxlIHRoZSByZWFsIGNhdXNlIGFwcGVhcmVkIG9uY2UsIGZhciBhYm92ZSwgaW5cbiAqIHRoZSBzZXR1cCBsb2cuIFRoaXMgZXJyb3IgcmVwbGFjZXMgdGhlIG1hc2s6IGl0IGlzIHJhaXNlZCBiZWZvcmUgYW55IHRyYW5zcG9ydFxuICogaXMgY29uc3RydWN0ZWQsIGFuZCBpdCBjYXJyaWVzIHRoZSBvcmlnaW5hbCBzZXR1cCBmYWlsdXJlIHZlcmJhdGltLCBzbyBlYWNoXG4gKiByZXBvcnQgbmFtZXMgdGhlIGFjdHVhbCBjYXVzZS5cbiAqXG4gKiBJdCBkZWxpYmVyYXRlbHkgY2FycmllcyBubyBzdGFjayB0cmFjZTogdGhlIGZhaWx1cmUgaGFwcGVuZWQgaW4gdGhlIGdsb2JhbFxuICogc2V0dXAsIHdoaWNoIGFscmVhZHkgbG9nZ2VkIGl0cyBvd24gdHJhY2UsIGFuZCBhIHNlY29uZCB0cmFjZSBwb2ludGluZyBpbnRvXG4gKiB0aGUgaGFybmVzcyBvbmx5IHN1Z2dlc3RzIHRoZSBoYXJuZXNzIGJyb2tlLlxuICovXG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3IgdGhlIHtAbGluayBJbnRlZ3JhdGlvblNldHVwRmFpbGVkRXJyb3J9IGNvbnN0cnVjdG9yLiBUaGlzIGlzIGFsc28gdGhlXG4gKiBzaGFwZSB0aGUgZnJhbWV3b3JrIGFkYXB0ZXIgcHVibGlzaGVzIHRvIGl0cyB3b3JrZXJzIChWaXRlc3Q6IGBwcm92aWRlKCdzZXR1cEVycm9yJylgKS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJbnRlZ3JhdGlvblNldHVwRmFpbGVkRXJyb3JDb25zdHJ1Y3RvclBhcmFtcyB7XG4gIC8qKlxuICBUaGUgYG5hbWVgIG9mIHRoZSBvcmlnaW5hbCBlcnJvciB0aGUgZ2xvYmFsIHNldHVwIHRocmV3LCBzbyBhIGNhbGxlciBjYW4gdGVsbCBhblxuICBleHBlY3RlZCBza2lwIChgRGVza3RvcE9ubHlQbHVnaW5Ta2lwRXJyb3JgKSBmcm9tIGEgcmVhbCBicmVha2FnZSB3aXRob3V0IHRoZVxuICBvcmlnaW5hbCBlcnJvciBvYmplY3QsIHdoaWNoIGRvZXMgbm90IHN1cnZpdmUgdGhlIHRyaXAgdG8gYSB3b3JrZXIuXG4gICAqL1xuICByZWFkb25seSBlcnJvck5hbWU6IHN0cmluZztcblxuICAvKipcbiAgVGhlIG9yaWdpbmFsIHNldHVwIGZhaWx1cmUsIGFscmVhZHkgc3RyaW5naWZpZWQgYnkgdGhlIGFkYXB0ZXIgdGhhdCBjYXVnaHQgaXQuXG4gICAqL1xuICByZWFkb25seSBtZXNzYWdlOiBzdHJpbmc7XG5cbiAgLyoqXG4gIFRoZSB0cmFuc3BvcnQgdGhlIGZhaWxlZCBwcm9qZWN0IGlzIGNvbmZpZ3VyZWQgZm9yIChlLmcuIGBvYnNpZGlhbi1hbmRyb2lkLWFwcGl1bWApLFxuICBzbyB0aGUgcmVwb3J0IG5hbWVzIHRoZSBwbGF0Zm9ybSB0aGUgc3VpdGUgd2FzIG1lYW50IHRvIHJ1biBvbi5cbiAgICovXG4gIHJlYWRvbmx5IHRyYW5zcG9ydExhYmVsOiBzdHJpbmc7XG59XG5cbi8qKlxuICogVGhyb3duIHdoZW4gYSB0ZXN0IHdvcmtlciBhc2tzIGZvciB0aGUgYW1iaWVudCB0cmFuc3BvcnQgb2YgYSBwcm9qZWN0IHdob3NlXG4gKiBnbG9iYWwgc2V0dXAgZmFpbGVkLiBDYXJyaWVzIHRoZSBjb25maWd1cmVkIHRyYW5zcG9ydCwgdGhlIG9yaWdpbmFsIGVycm9yJ3NcbiAqIGBuYW1lYCwgYW5kIGl0cyBtZXNzYWdlLCBzbyBjYWxsZXJzIGNhbiBgaW5zdGFuY2VvZmAtbWF0Y2ggYW5kIHJlcG9ydCB0aGUgcmVhbFxuICogY2F1c2UgaW5zdGVhZCBvZiBhIGRvd25zdHJlYW0gdHJhbnNwb3J0IGVycm9yLlxuICovXG5leHBvcnQgY2xhc3MgSW50ZWdyYXRpb25TZXR1cEZhaWxlZEVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICAvKipcbiAgVGhlIGBuYW1lYCBvZiB0aGUgb3JpZ2luYWwgZXJyb3IgdGhlIGdsb2JhbCBzZXR1cCB0aHJldy5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBlcnJvck5hbWU6IHN0cmluZztcblxuICAvKipcbiAgVGhlIG9yaWdpbmFsIHNldHVwIGZhaWx1cmUsIGFzIHN0cmluZ2lmaWVkIGJ5IHRoZSBhZGFwdGVyIHRoYXQgY2F1Z2h0IGl0LlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IG9yaWdpbmFsTWVzc2FnZTogc3RyaW5nO1xuXG4gIC8qKlxuICBUaGUgdHJhbnNwb3J0IHRoZSBmYWlsZWQgcHJvamVjdCBpcyBjb25maWd1cmVkIGZvci5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSB0cmFuc3BvcnRMYWJlbDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBDcmVhdGVzIHRoZSBlcnJvciBmcm9tIHRoZSBmYWlsdXJlIHRoZSBnbG9iYWwgc2V0dXAgcHVibGlzaGVkIHRvIGl0cyB3b3JrZXJzLlxuICAgKlxuICAgKiBAcGFyYW0gcGFyYW1zIC0gVGhlIGNvbmZpZ3VyZWQgdHJhbnNwb3J0IHBsdXMgdGhlIG9yaWdpbmFsIGVycm9yJ3MgbmFtZSBhbmQgbWVzc2FnZS5cbiAgICovXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihwYXJhbXM6IEludGVncmF0aW9uU2V0dXBGYWlsZWRFcnJvckNvbnN0cnVjdG9yUGFyYW1zKSB7XG4gICAgY29uc3Qge1xuICAgICAgZXJyb3JOYW1lLFxuICAgICAgbWVzc2FnZSxcbiAgICAgIHRyYW5zcG9ydExhYmVsXG4gICAgfSA9IHBhcmFtcztcbiAgICBzdXBlcihcbiAgICAgIGBJbnRlZ3JhdGlvbiBzZXR1cCBmb3IgdHJhbnNwb3J0IFwiJHt0cmFuc3BvcnRMYWJlbH1cIiBmYWlsZWQsIHNvIGl0cyB0ZXN0cyBjYW5ub3QgcnVuLiBgXG4gICAgICAgICsgYE9yaWdpbmFsIGVycm9yOiAke21lc3NhZ2V9YFxuICAgICk7XG4gICAgdGhpcy5uYW1lID0gJ0ludGVncmF0aW9uU2V0dXBGYWlsZWRFcnJvcic7XG4gICAgdGhpcy5lcnJvck5hbWUgPSBlcnJvck5hbWU7XG4gICAgdGhpcy5vcmlnaW5hbE1lc3NhZ2UgPSBtZXNzYWdlO1xuICAgIHRoaXMudHJhbnNwb3J0TGFiZWwgPSB0cmFuc3BvcnRMYWJlbDtcbiAgICAvLyBUaGUgZ2xvYmFsIHNldHVwIGFscmVhZHkgbG9nZ2VkIHRoZSBvcmlnaW5hbCBmYWlsdXJlIHdpdGggaXRzIG93biB0cmFjZS4gQSBzZWNvbmQgdHJhY2UsIHBvaW50aW5nXG4gICAgLy8gQXQgdGhlIGhhcm5lc3MgaW50ZXJuYWxzIHRoYXQgbWVyZWx5IHJlLXJhaXNlZCBpdCwgaXMgd2hhdCBtYWtlcyB0aGUgcmVhbCBjYXVzZSBoYXJkIHRvIGZpbmQuXG4gICAgdGhpcy5zdGFjayA9IGAke3RoaXMubmFtZX06ICR7dGhpcy5tZXNzYWdlfWA7XG4gIH1cbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFrRE8sTUFBTSxvQ0FBb0MsTUFBTTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBSXJDO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFLQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBS0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFPVCxZQUFZLFFBQXNEO0FBQ3ZFLFVBQU07QUFBQSxNQUNKO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxJQUNGLElBQUk7QUFDSjtBQUFBLE1BQ0Usb0NBQW9DLGNBQWMsc0RBQzNCLE9BQU87QUFBQSxJQUNoQztBQUNBLFNBQUssT0FBTztBQUNaLFNBQUssWUFBWTtBQUNqQixTQUFLLGtCQUFrQjtBQUN2QixTQUFLLGlCQUFpQjtBQUd0QixTQUFLLFFBQVEsR0FBRyxLQUFLLElBQUksS0FBSyxLQUFLLE9BQU87QUFBQSxFQUM1QztBQUNGOyIsCiAgIm5hbWVzIjogW10KfQo=
@@ -0,0 +1,66 @@
1
+ /**
2
+ * @file
3
+ *
4
+ * The distinct error thrown in a **test worker** when that project's integration
5
+ * global setup already failed in the main process.
6
+ *
7
+ * Without it a worker whose setup failed gets no transport options at all, and
8
+ * silently rebuilds the owned **desktop** CDP default — so an Android project's
9
+ * suite would run on desktop, and then die on `Failed to parse URL from /json`
10
+ * (an owned instance nobody launched has no CDP endpoint). Every file in the
11
+ * project reported that mask while the real cause appeared once, far above, in
12
+ * the setup log. This error replaces the mask: it is raised before any transport
13
+ * is constructed, and it carries the original setup failure verbatim, so each
14
+ * report names the actual cause.
15
+ *
16
+ * It deliberately carries no stack trace: the failure happened in the global
17
+ * setup, which already logged its own trace, and a second trace pointing into
18
+ * the harness only suggests the harness broke.
19
+ */
20
+ /**
21
+ * Parameters for the {@link IntegrationSetupFailedError} constructor. This is also the
22
+ * shape the framework adapter publishes to its workers (Vitest: `provide('setupError')`).
23
+ */
24
+ export interface IntegrationSetupFailedErrorConstructorParams {
25
+ /**
26
+ The `name` of the original error the global setup threw, so a caller can tell an
27
+ expected skip (`DesktopOnlyPluginSkipError`) from a real breakage without the
28
+ original error object, which does not survive the trip to a worker.
29
+ */
30
+ readonly errorName: string;
31
+ /**
32
+ The original setup failure, already stringified by the adapter that caught it.
33
+ */
34
+ readonly message: string;
35
+ /**
36
+ The transport the failed project is configured for (e.g. `obsidian-android-appium`),
37
+ so the report names the platform the suite was meant to run on.
38
+ */
39
+ readonly transportLabel: string;
40
+ }
41
+ /**
42
+ * Thrown when a test worker asks for the ambient transport of a project whose
43
+ * global setup failed. Carries the configured transport, the original error's
44
+ * `name`, and its message, so callers can `instanceof`-match and report the real
45
+ * cause instead of a downstream transport error.
46
+ */
47
+ export declare class IntegrationSetupFailedError extends Error {
48
+ /**
49
+ The `name` of the original error the global setup threw.
50
+ */
51
+ readonly errorName: string;
52
+ /**
53
+ The original setup failure, as stringified by the adapter that caught it.
54
+ */
55
+ readonly originalMessage: string;
56
+ /**
57
+ The transport the failed project is configured for.
58
+ */
59
+ readonly transportLabel: string;
60
+ /**
61
+ * Creates the error from the failure the global setup published to its workers.
62
+ *
63
+ * @param params - The configured transport plus the original error's name and message.
64
+ */
65
+ constructor(params: IntegrationSetupFailedErrorConstructorParams);
66
+ }
@@ -39,7 +39,7 @@ function createSetup(options) {
39
39
  setupResult = await (0, import_global_setup_core.coreSetup)({
40
40
  enableCommunityPlugins: options?.enableCommunityPlugins,
41
41
  installPlugin: options?.installPlugin,
42
- populate: options?.populate?.(),
42
+ populate: await options?.populate?.(),
43
43
  transportOptions
44
44
  });
45
45
  globalThis.__obsidianIntegrationTesting = {
@@ -76,4 +76,4 @@ var global_setup_default = setup;
76
76
  setup,
77
77
  teardown
78
78
  });
79
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL2plc3QvZ2xvYmFsLXNldHVwLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogSmVzdCBnbG9iYWwgc2V0dXAgYW5kIHRlYXJkb3duIGFkYXB0ZXIuXG4gKlxuICogRGVsZWdhdGVzIHRvIHRoZSBmcmFtZXdvcmstYWdub3N0aWMgY29yZSBhbmQgYnJpZGdlcyBjb250ZXh0XG4gKiB0byB0ZXN0IHdvcmtlcnMgdmlhIGBnbG9iYWxUaGlzLl9fb2JzaWRpYW5JbnRlZ3JhdGlvblRlc3RpbmdgLlxuICovXG5cbi8qIHY4IGlnbm9yZSBzdGFydCAtLSBJbnRlZ3JhdGlvbi10aW1lIHNldHVwIGNvdmVyZWQgYnkgaW50ZWdyYXRpb24gdGVzdHMsIG5vdCB1bml0IHRlc3RzLiAqL1xuXG5pbXBvcnQgdHlwZSB7IENvcmVTZXR1cFJlc3VsdCB9IGZyb20gJy4uL2dsb2JhbC1zZXR1cC1jb3JlLmNqcyc7XG5pbXBvcnQgdHlwZSB7IFBvcHVsYXRlRmlsZXNQYXJhbXMgfSBmcm9tICcuLi90ZW1wb3JhcnktdmF1bHQuY2pzJztcbmltcG9ydCB0eXBlIHsgT2JzaWRpYW5UcmFuc3BvcnRPcHRpb25zIH0gZnJvbSAnLi4vdHJhbnNwb3J0LW9wdGlvbnMuY2pzJztcblxuaW1wb3J0IHtcbiAgc2V0VHJhbnNwb3J0T3B0aW9uc1Jlc29sdmVyLFxuICBzZXRWYXVsdFBhdGhSZXNvbHZlclxufSBmcm9tICcuLi9jb250ZXh0LXByb3ZpZGVyLmNqcyc7XG5pbXBvcnQge1xuICBjb3JlU2V0dXAsXG4gIGNvcmVUZWFyZG93blxufSBmcm9tICcuLi9nbG9iYWwtc2V0dXAtY29yZS5janMnO1xuaW1wb3J0IHsgVGVtcG9yYXJ5VmF1bHQgfSBmcm9tICcuLi90ZW1wb3JhcnktdmF1bHQuY2pzJztcblxuLyoqXG4gKiBTaGFwZSBvZiBgZ2xvYmFsVGhpcy5fX29ic2lkaWFuSW50ZWdyYXRpb25UZXN0aW5nYC5cbiAqXG4gKiBDb25zdW1lcnMgbWF5IHByZS1wb3B1bGF0ZSBgdHJhbnNwb3J0T3B0aW9uc2AgYmVmb3JlIHRoZSBnbG9iYWwgc2V0dXAgcnVuc1xuICogKGUuZy4sIHZpYSBKZXN0IGNvbmZpZyBgZ2xvYmFsc2ApLiBUaGUgc2V0dXAgdGhlbiBhZGRzIGB0ZW1wb3JhcnlWYXVsdFBhdGhgLlxuICovXG5pbnRlcmZhY2UgT2JzaWRpYW5JbnRlZ3JhdGlvblRlc3RpbmdHbG9iYWwge1xuICAvKipcbiAgVGVtcCB2YXVsdCBwYXRoLCBzZXQgYnkgdGhlIGdsb2JhbCBzZXR1cCBmb3IgdGVzdCB3b3JrZXJzLlxuICAgKi9cbiAgdGVtcG9yYXJ5VmF1bHRQYXRoPzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICBUcmFuc3BvcnQgb3B0aW9ucy4gU2V0IGJ5IHRoZSBjb25zdW1lciBiZWZvcmUgc2V0dXAsIG9yIGJ5IHRoZSBzZXR1cCBpdHNlbGYuXG4gICAqL1xuICB0cmFuc3BvcnRPcHRpb25zPzogT2JzaWRpYW5UcmFuc3BvcnRPcHRpb25zIHwgdW5kZWZpbmVkO1xufVxuXG4vKiBlc2xpbnQtZGlzYWJsZSB2YXJzLW9uLXRvcCAtLSBSZXF1aXJlZCBmb3IgYGRlY2xhcmUgZ2xvYmFsYCBhdWdtZW50YXRpb24uICovXG5kZWNsYXJlIGdsb2JhbCB7XG4gIC8qKlxuICAgKiBOYW1lc3BhY2UgZm9yIGFsbCBgb2JzaWRpYW4taW50ZWdyYXRpb24tdGVzdGluZ2AgZ2xvYmFsIHN0YXRlLlxuICAgKiBDb25zdW1lcnMgY29uZmlndXJlIHRyYW5zcG9ydCBvcHRpb25zIGhlcmU7IHRoZSBzZXR1cCBwb3B1bGF0ZXMgdGhlIHJlc3QuXG4gICAqL1xuICB2YXIgX19vYnNpZGlhbkludGVncmF0aW9uVGVzdGluZzogT2JzaWRpYW5JbnRlZ3JhdGlvblRlc3RpbmdHbG9iYWwgfCB1bmRlZmluZWQ7XG59XG4vKiBlc2xpbnQtZW5hYmxlIHZhcnMtb24tdG9wIC0tIEVuZCBvZiBgZGVjbGFyZSBnbG9iYWxgIGJsb2NrLiAqL1xuXG5zZXRUcmFuc3BvcnRPcHRpb25zUmVzb2x2ZXIoKCkgPT4gZ2xvYmFsVGhpcy5fX29ic2lkaWFuSW50ZWdyYXRpb25UZXN0aW5nPy50cmFuc3BvcnRPcHRpb25zKTtcbnNldFZhdWx0UGF0aFJlc29sdmVyKCgpID0+IGdsb2JhbFRoaXMuX19vYnNpZGlhbkludGVncmF0aW9uVGVzdGluZz8udGVtcG9yYXJ5VmF1bHRQYXRoKTtcblxuLyoqXG4gKiBPcHRpb25zIGZvciB7QGxpbmsgY3JlYXRlU2V0dXB9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENyZWF0ZVNldHVwT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBDb21tdW5pdHktcGx1Z2luIGlkcyB0byBlbmFibGUgaW4gdGhlIHZhdWx0IGluIGFkZGl0aW9uIHRvIHRoZSBwbHVnaW4tdW5kZXItdGVzdCxcbiAgICogYWZ0ZXIgaXQgaXMgZW5hYmxlZCAoc2VlIHtAbGluayBDb3JlU2V0dXBQYXJhbXMuZW5hYmxlQ29tbXVuaXR5UGx1Z2luc30pLiBTZWVkIGVhY2hcbiAgICogcGx1Z2luJ3MgYnVpbHQgZmlsZXMgdmlhIHtAbGluayBDcmVhdGVTZXR1cE9wdGlvbnMucG9wdWxhdGV9IChlLmcuIHdpdGggYGJ1aWxkRGVtb1ZhdWx0UG9wdWxhdGVgKVxuICAgKiBzbyB0aGUgZW5hYmxlIGZpbmRzIHRoZW0gb24gZGlzay5cbiAgICovXG4gIHJlYWRvbmx5IGVuYWJsZUNvbW11bml0eVBsdWdpbnM/OiByZWFkb25seSBzdHJpbmdbXTtcblxuICAvKipcbiAgICogV2hldGhlciB0byBpbnN0YWxsIGFuZCBlbmFibGUgdGhlIGJ1aWx0IHBsdWdpbiBpbiB0aGUgdGVtcCB2YXVsdC4gRGVmYXVsdHNcbiAgICogdG8gYHRydWVgLiBTZXQgdG8gYGZhbHNlYCBmb3IgYSAqKm5vbi1wbHVnaW4qKiBjb25zdW1lciB0aGF0IG9ubHkgbmVlZHMgYVxuICAgKiByZWdpc3RlcmVkLCBlbXB0eSB2YXVsdCB0byBgZXZhbEluT2JzaWRpYW5gIGFnYWluc3QgXHUyMDE0IHRoZSBvd25lZCBpbnN0YW5jZSBpc1xuICAgKiBzdGlsbCBsYXVuY2hlZCBhbmQgaXRzIGVuZHBvaW50IHB1Ymxpc2hlZCB0byB3b3JrZXJzLCBzbyByZS1leHBvcnRpbmdcbiAgICogYGNyZWF0ZVNldHVwKHsgaW5zdGFsbFBsdWdpbjogZmFsc2UgfSlgIHJldXNlcyB0aGUgc2FtZSBhdHRhY2ggd2lyaW5nIHdpdGggbm9cbiAgICogcGx1Z2luIGNvcHkvZW5hYmxlLiBTZWUge0BsaW5rIENvcmVTZXR1cFBhcmFtcy5pbnN0YWxsUGx1Z2lufS5cbiAgICovXG4gIHJlYWRvbmx5IGluc3RhbGxQbHVnaW4/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGZpbGVzL2ZvbGRlcnMgdG8gd3JpdGUgaW50byB0aGUgdmF1bHQgYmVmb3JlIE9ic2lkaWFuIG9wZW5zIGl0IChzZWVcbiAgICoge0BsaW5rIENvcmVTZXR1cFBhcmFtcy5wb3B1bGF0ZX0pLiBBIHRodW5rIHNvIGxhcmdlIGZpeHR1cmVzIGFyZSBidWlsdCBsYXppbHksXG4gICAqIG9uY2UsIGluIHRoZSBzZXR1cCBwcm9jZXNzLlxuICAgKi9cbiAgcG9wdWxhdGU/KHRoaXM6IHZvaWQpOiBQb3B1bGF0ZUZpbGVzUGFyYW1zO1xufVxuXG4vKipcbiAqIEEgSmVzdCBgZ2xvYmFsU2V0dXBgIC8gYGdsb2JhbFRlYXJkb3duYCBtb2R1bGUncyBgc2V0dXBgIC8gYHRlYXJkb3duYCBwYWlyLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEplc3RHbG9iYWxTZXR1cCB7XG4gIHNldHVwKHRoaXM6IHZvaWQpOiBQcm9taXNlPHZvaWQ+O1xuICB0ZWFyZG93bih0aGlzOiB2b2lkKTogUHJvbWlzZTx2b2lkPjtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgSmVzdCBnbG9iYWwgc2V0dXAvdGVhcmRvd24gcGFpciwgb3B0aW9uYWxseSBwcmUtcG9wdWxhdGluZyB0aGUgdmF1bHRcbiAqIGJlZm9yZSBPYnNpZGlhbiBvcGVucyBpdCBcdTIwMTQgdXNlIHRoaXMgZm9yIGEgZGVkaWNhdGVkIGxhcmdlLXZhdWx0L3BlcmZvcm1hbmNlXG4gKiBzZXR1cC4gVGhlIHBsYWluIHtAbGluayBzZXR1cH0gLyB7QGxpbmsgdGVhcmRvd259IGV4cG9ydHMgYXJlIHRoZSBuby1wb3B1bGF0ZVxuICogY2FzZSAoYGNyZWF0ZVNldHVwKClgKS4gUGFzcyBgeyBpbnN0YWxsUGx1Z2luOiBmYWxzZSB9YCBmb3IgYSBub24tcGx1Z2luIGNvbnN1bWVyXG4gKiB0aGF0IG9ubHkgbmVlZHMgYSByZWdpc3RlcmVkLCBlbXB0eSB2YXVsdCAoc2VlIHtAbGluayBDcmVhdGVTZXR1cE9wdGlvbnMuaW5zdGFsbFBsdWdpbn0pLlxuICpcbiAqIEBwYXJhbSBvcHRpb25zIC0gU2V0dXAgb3B0aW9ucy5cbiAqIEByZXR1cm5zIFRoZSBgc2V0dXBgIGFuZCBgdGVhcmRvd25gIGZ1bmN0aW9ucyB0byByZS1leHBvcnQgZnJvbSBhIGBnbG9iYWxTZXR1cGAgbW9kdWxlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlU2V0dXAob3B0aW9ucz86IENyZWF0ZVNldHVwT3B0aW9ucyk6IEplc3RHbG9iYWxTZXR1cCB7XG4gIGxldCBzZXR1cFJlc3VsdDogQ29yZVNldHVwUmVzdWx0IHwgdW5kZWZpbmVkO1xuXG4gIHJldHVybiB7IHNldHVwLCB0ZWFyZG93biB9O1xuXG4gIGFzeW5jIGZ1bmN0aW9uIHNldHVwKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHRyYW5zcG9ydE9wdGlvbnMgPSBnbG9iYWxUaGlzLl9fb2JzaWRpYW5JbnRlZ3JhdGlvblRlc3Rpbmc/LnRyYW5zcG9ydE9wdGlvbnM7XG5cbiAgICBzZXR1cFJlc3VsdCA9IGF3YWl0IGNvcmVTZXR1cCh7XG4gICAgICBlbmFibGVDb21tdW5pdHlQbHVnaW5zOiBvcHRpb25zPy5lbmFibGVDb21tdW5pdHlQbHVnaW5zLFxuICAgICAgaW5zdGFsbFBsdWdpbjogb3B0aW9ucz8uaW5zdGFsbFBsdWdpbixcbiAgICAgIHBvcHVsYXRlOiBvcHRpb25zPy5wb3B1bGF0ZT8uKCksXG4gICAgICB0cmFuc3BvcnRPcHRpb25zXG4gICAgfSk7XG5cbiAgICBnbG9iYWxUaGlzLl9fb2JzaWRpYW5JbnRlZ3JhdGlvblRlc3RpbmcgPSB7XG4gICAgICAuLi5nbG9iYWxUaGlzLl9fb2JzaWRpYW5JbnRlZ3JhdGlvblRlc3RpbmcsXG4gICAgICB0ZW1wb3JhcnlWYXVsdFBhdGg6IHNldHVwUmVzdWx0LnRlbXBvcmFyeVZhdWx0LnBhdGgsXG4gICAgICB0cmFuc3BvcnRPcHRpb25zOiBzZXR1cFJlc3VsdC50cmFuc3BvcnRPcHRpb25zXG4gICAgfTtcbiAgfVxuXG4gIGFzeW5jIGZ1bmN0aW9uIHRlYXJkb3duKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IGNvcmVUZWFyZG93bihzZXR1cFJlc3VsdCk7XG4gIH1cbn1cblxuLyoqXG4gKiBSZXR1cm5zIHRoZSB0ZW1wb3JhcnkgdmF1bHQgcHJvdmlkZWQgYnkgdGhlIGdsb2JhbCBzZXR1cC5cbiAqXG4gKiBSZWFkcyB0aGUgdmF1bHQgcGF0aCBmcm9tIGBnbG9iYWxUaGlzLl9fb2JzaWRpYW5JbnRlZ3JhdGlvblRlc3RpbmcudGVtcG9yYXJ5VmF1bHRQYXRoYCxcbiAqIHdoaWNoIGlzIHNldCBieSB0aGUgSmVzdCBnbG9iYWwgc2V0dXAuXG4gKlxuICogQHJldHVybnMgVGhlIHRlbXBvcmFyeSB2YXVsdC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFRlbXBvcmFyeVZhdWx0KCk6IFRlbXBvcmFyeVZhdWx0IHtcbiAgY29uc3QgdGVtcG9yYXJ5VmF1bHRQYXRoID0gZ2xvYmFsVGhpcy5fX29ic2lkaWFuSW50ZWdyYXRpb25UZXN0aW5nPy50ZW1wb3JhcnlWYXVsdFBhdGg7XG4gIGlmICghdGVtcG9yYXJ5VmF1bHRQYXRoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgJ2dsb2JhbFRoaXMuX19vYnNpZGlhbkludGVncmF0aW9uVGVzdGluZy50ZW1wb3JhcnlWYXVsdFBhdGggaXMgbm90IHNldC4gRGlkIHlvdSBjb25maWd1cmUgb2JzaWRpYW4taW50ZWdyYXRpb24tdGVzdGluZy9qZXN0LWdsb2JhbC1zZXR1cCBhcyBhIEplc3QgZ2xvYmFsU2V0dXA/J1xuICAgICk7XG4gIH1cbiAgcmV0dXJuIG5ldyBUZW1wb3JhcnlWYXVsdCh0ZW1wb3JhcnlWYXVsdFBhdGgpO1xufVxuXG4vKipcbiAqIFJldHVybnMgdGhlIHRyYW5zcG9ydCBvcHRpb25zIHByb3ZpZGVkIGJ5IHRoZSBnbG9iYWwgc2V0dXAuXG4gKlxuICogQHJldHVybnMgVGhlIHRyYW5zcG9ydCBvcHRpb25zLCBvciBgdW5kZWZpbmVkYCBpZiBub3QgY29uZmlndXJlZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFRyYW5zcG9ydE9wdGlvbnMoKTogT2JzaWRpYW5UcmFuc3BvcnRPcHRpb25zIHwgdW5kZWZpbmVkIHtcbiAgcmV0dXJuIGdsb2JhbFRoaXMuX19vYnNpZGlhbkludGVncmF0aW9uVGVzdGluZz8udHJhbnNwb3J0T3B0aW9ucztcbn1cblxuY29uc3QgZGVmYXVsdEdsb2JhbFNldHVwID0gY3JlYXRlU2V0dXAoKTtcblxuLyoqXG4gKiBKZXN0IGdsb2JhbCBzZXR1cCBmdW5jdGlvbiAobm8gcHJlLXBvcHVsYXRpb24pLlxuICpcbiAqIENvcGllcyB0aGUgYnVpbHQgcGx1Z2luIGludG8gYSB0ZW1wb3JhcnkgdmF1bHQsIGVuYWJsZXMgaXQgdmlhIGEgcmVuZGVyZXIgZXZhbFxuICogb3ZlciB0aGUgdHJhbnNwb3J0LCBhbmQgcG9wdWxhdGVzIGBnbG9iYWxUaGlzLl9fb2JzaWRpYW5JbnRlZ3JhdGlvblRlc3RpbmdgIGZvciB0ZXN0cy5cbiAqXG4gKiBUcmFuc3BvcnQgb3B0aW9ucyBhcmUgcmVhZCBmcm9tIGBnbG9iYWxUaGlzLl9fb2JzaWRpYW5JbnRlZ3JhdGlvblRlc3RpbmcudHJhbnNwb3J0T3B0aW9uc2AuXG4gKiBTZXQgdGhpcyBpbiB5b3VyIEplc3QgY29uZmlnIHZpYSB0aGUgYGdsb2JhbHNgIG9wdGlvbi5cbiAqXG4gKiBAcmV0dXJucyBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB3aGVuIHNldHVwIGNvbXBsZXRlcy5cbiAqL1xuZXhwb3J0IGNvbnN0IHNldHVwID0gZGVmYXVsdEdsb2JhbFNldHVwLnNldHVwO1xuXG4vKipcbiAqIEplc3QgZ2xvYmFsIHRlYXJkb3duIGZ1bmN0aW9uLlxuICpcbiAqIFJlbW92ZXMgdGhlIHRlbXBvcmFyeSB2YXVsdCBjcmVhdGVkIGR1cmluZyBzZXR1cC5cbiAqXG4gKiBAcmV0dXJucyBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB3aGVuIHRlYXJkb3duIGNvbXBsZXRlcy5cbiAqL1xuZXhwb3J0IGNvbnN0IHRlYXJkb3duID0gZGVmYXVsdEdsb2JhbFNldHVwLnRlYXJkb3duO1xuXG4vLyBKZXN0J3MgYGdsb2JhbFNldHVwYCBjb25maWcgY2FuIHJlZmVyZW5jZSB0aGlzIG1vZHVsZSBkaXJlY3RseSBiZWNhdXNlIGl0cyBkZWZhdWx0IGV4cG9ydCBpcyB0aGUgc2V0dXAgZnVuY3Rpb24uXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0LXgvbm8tZGVmYXVsdC1leHBvcnQgLS0gSmVzdCdzIGdsb2JhbFNldHVwIGxvYWRlciByZXF1aXJlcyBhIGRlZmF1bHQtZXhwb3J0IGZ1bmN0aW9uLlxuZXhwb3J0IGRlZmF1bHQgc2V0dXA7XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQWVBLDhCQUdPO0FBQ1AsK0JBR087QUFDUCw2QkFBK0I7QUFBQSxJQThCL0IscURBQTRCLE1BQU0sV0FBVyw4QkFBOEIsZ0JBQWdCO0FBQUEsSUFDM0YsOENBQXFCLE1BQU0sV0FBVyw4QkFBOEIsa0JBQWtCO0FBa0QvRSxTQUFTLFlBQVksU0FBK0M7QUFDekUsTUFBSTtBQUVKLFNBQU8sRUFBRSxPQUFBQSxRQUFPLFVBQUFDLFVBQVM7QUFFekIsaUJBQWVELFNBQXVCO0FBQ3BDLFVBQU0sbUJBQW1CLFdBQVcsOEJBQThCO0FBRWxFLGtCQUFjLFVBQU0sb0NBQVU7QUFBQSxNQUM1Qix3QkFBd0IsU0FBUztBQUFBLE1BQ2pDLGVBQWUsU0FBUztBQUFBLE1BQ3hCLFVBQVUsU0FBUyxXQUFXO0FBQUEsTUFDOUI7QUFBQSxJQUNGLENBQUM7QUFFRCxlQUFXLCtCQUErQjtBQUFBLE1BQ3hDLEdBQUcsV0FBVztBQUFBLE1BQ2Qsb0JBQW9CLFlBQVksZUFBZTtBQUFBLE1BQy9DLGtCQUFrQixZQUFZO0FBQUEsSUFDaEM7QUFBQSxFQUNGO0FBRUEsaUJBQWVDLFlBQTBCO0FBQ3ZDLGNBQU0sdUNBQWEsV0FBVztBQUFBLEVBQ2hDO0FBQ0Y7QUFVTyxTQUFTLG9CQUFvQztBQUNsRCxRQUFNLHFCQUFxQixXQUFXLDhCQUE4QjtBQUNwRSxNQUFJLENBQUMsb0JBQW9CO0FBQ3ZCLFVBQU0sSUFBSTtBQUFBLE1BQ1I7QUFBQSxJQUNGO0FBQUEsRUFDRjtBQUNBLFNBQU8sSUFBSSxzQ0FBZSxrQkFBa0I7QUFDOUM7QUFPTyxTQUFTLHNCQUE0RDtBQUMxRSxTQUFPLFdBQVcsOEJBQThCO0FBQ2xEO0FBRUEsTUFBTSxxQkFBcUIsWUFBWTtBQWFoQyxNQUFNLFFBQVEsbUJBQW1CO0FBU2pDLE1BQU0sV0FBVyxtQkFBbUI7QUFJM0MsSUFBTyx1QkFBUTsiLAogICJuYW1lcyI6IFsic2V0dXAiLCAidGVhcmRvd24iXQp9Cg==
79
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL2plc3QvZ2xvYmFsLXNldHVwLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogSmVzdCBnbG9iYWwgc2V0dXAgYW5kIHRlYXJkb3duIGFkYXB0ZXIuXG4gKlxuICogRGVsZWdhdGVzIHRvIHRoZSBmcmFtZXdvcmstYWdub3N0aWMgY29yZSBhbmQgYnJpZGdlcyBjb250ZXh0XG4gKiB0byB0ZXN0IHdvcmtlcnMgdmlhIGBnbG9iYWxUaGlzLl9fb2JzaWRpYW5JbnRlZ3JhdGlvblRlc3RpbmdgLlxuICovXG5cbi8qIHY4IGlnbm9yZSBzdGFydCAtLSBJbnRlZ3JhdGlvbi10aW1lIHNldHVwIGNvdmVyZWQgYnkgaW50ZWdyYXRpb24gdGVzdHMsIG5vdCB1bml0IHRlc3RzLiAqL1xuXG5pbXBvcnQgdHlwZSB7IENvcmVTZXR1cFJlc3VsdCB9IGZyb20gJy4uL2dsb2JhbC1zZXR1cC1jb3JlLmNqcyc7XG5pbXBvcnQgdHlwZSB7IFBvcHVsYXRlRmlsZXNQYXJhbXMgfSBmcm9tICcuLi90ZW1wb3JhcnktdmF1bHQuY2pzJztcbmltcG9ydCB0eXBlIHsgT2JzaWRpYW5UcmFuc3BvcnRPcHRpb25zIH0gZnJvbSAnLi4vdHJhbnNwb3J0LW9wdGlvbnMuY2pzJztcblxuaW1wb3J0IHtcbiAgc2V0VHJhbnNwb3J0T3B0aW9uc1Jlc29sdmVyLFxuICBzZXRWYXVsdFBhdGhSZXNvbHZlclxufSBmcm9tICcuLi9jb250ZXh0LXByb3ZpZGVyLmNqcyc7XG5pbXBvcnQge1xuICBjb3JlU2V0dXAsXG4gIGNvcmVUZWFyZG93blxufSBmcm9tICcuLi9nbG9iYWwtc2V0dXAtY29yZS5janMnO1xuaW1wb3J0IHsgVGVtcG9yYXJ5VmF1bHQgfSBmcm9tICcuLi90ZW1wb3JhcnktdmF1bHQuY2pzJztcblxuLyoqXG4gKiBTaGFwZSBvZiBgZ2xvYmFsVGhpcy5fX29ic2lkaWFuSW50ZWdyYXRpb25UZXN0aW5nYC5cbiAqXG4gKiBDb25zdW1lcnMgbWF5IHByZS1wb3B1bGF0ZSBgdHJhbnNwb3J0T3B0aW9uc2AgYmVmb3JlIHRoZSBnbG9iYWwgc2V0dXAgcnVuc1xuICogKGUuZy4sIHZpYSBKZXN0IGNvbmZpZyBgZ2xvYmFsc2ApLiBUaGUgc2V0dXAgdGhlbiBhZGRzIGB0ZW1wb3JhcnlWYXVsdFBhdGhgLlxuICovXG5pbnRlcmZhY2UgT2JzaWRpYW5JbnRlZ3JhdGlvblRlc3RpbmdHbG9iYWwge1xuICAvKipcbiAgVGVtcCB2YXVsdCBwYXRoLCBzZXQgYnkgdGhlIGdsb2JhbCBzZXR1cCBmb3IgdGVzdCB3b3JrZXJzLlxuICAgKi9cbiAgdGVtcG9yYXJ5VmF1bHRQYXRoPzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICBUcmFuc3BvcnQgb3B0aW9ucy4gU2V0IGJ5IHRoZSBjb25zdW1lciBiZWZvcmUgc2V0dXAsIG9yIGJ5IHRoZSBzZXR1cCBpdHNlbGYuXG4gICAqL1xuICB0cmFuc3BvcnRPcHRpb25zPzogT2JzaWRpYW5UcmFuc3BvcnRPcHRpb25zIHwgdW5kZWZpbmVkO1xufVxuXG4vKiBlc2xpbnQtZGlzYWJsZSB2YXJzLW9uLXRvcCAtLSBSZXF1aXJlZCBmb3IgYGRlY2xhcmUgZ2xvYmFsYCBhdWdtZW50YXRpb24uICovXG5kZWNsYXJlIGdsb2JhbCB7XG4gIC8qKlxuICAgKiBOYW1lc3BhY2UgZm9yIGFsbCBgb2JzaWRpYW4taW50ZWdyYXRpb24tdGVzdGluZ2AgZ2xvYmFsIHN0YXRlLlxuICAgKiBDb25zdW1lcnMgY29uZmlndXJlIHRyYW5zcG9ydCBvcHRpb25zIGhlcmU7IHRoZSBzZXR1cCBwb3B1bGF0ZXMgdGhlIHJlc3QuXG4gICAqL1xuICB2YXIgX19vYnNpZGlhbkludGVncmF0aW9uVGVzdGluZzogT2JzaWRpYW5JbnRlZ3JhdGlvblRlc3RpbmdHbG9iYWwgfCB1bmRlZmluZWQ7XG59XG4vKiBlc2xpbnQtZW5hYmxlIHZhcnMtb24tdG9wIC0tIEVuZCBvZiBgZGVjbGFyZSBnbG9iYWxgIGJsb2NrLiAqL1xuXG5zZXRUcmFuc3BvcnRPcHRpb25zUmVzb2x2ZXIoKCkgPT4gZ2xvYmFsVGhpcy5fX29ic2lkaWFuSW50ZWdyYXRpb25UZXN0aW5nPy50cmFuc3BvcnRPcHRpb25zKTtcbnNldFZhdWx0UGF0aFJlc29sdmVyKCgpID0+IGdsb2JhbFRoaXMuX19vYnNpZGlhbkludGVncmF0aW9uVGVzdGluZz8udGVtcG9yYXJ5VmF1bHRQYXRoKTtcblxuLyoqXG4gKiBPcHRpb25zIGZvciB7QGxpbmsgY3JlYXRlU2V0dXB9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENyZWF0ZVNldHVwT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBDb21tdW5pdHktcGx1Z2luIGlkcyB0byBlbmFibGUgaW4gdGhlIHZhdWx0IGluIGFkZGl0aW9uIHRvIHRoZSBwbHVnaW4tdW5kZXItdGVzdCxcbiAgICogYWZ0ZXIgaXQgaXMgZW5hYmxlZCAoc2VlIHtAbGluayBDb3JlU2V0dXBQYXJhbXMuZW5hYmxlQ29tbXVuaXR5UGx1Z2luc30pLiBTZWVkIGVhY2hcbiAgICogcGx1Z2luJ3MgYnVpbHQgZmlsZXMgdmlhIHtAbGluayBDcmVhdGVTZXR1cE9wdGlvbnMucG9wdWxhdGV9IChlLmcuIHdpdGggYGJ1aWxkRGVtb1ZhdWx0UG9wdWxhdGVgKVxuICAgKiBzbyB0aGUgZW5hYmxlIGZpbmRzIHRoZW0gb24gZGlzay5cbiAgICovXG4gIHJlYWRvbmx5IGVuYWJsZUNvbW11bml0eVBsdWdpbnM/OiByZWFkb25seSBzdHJpbmdbXTtcblxuICAvKipcbiAgICogV2hldGhlciB0byBpbnN0YWxsIGFuZCBlbmFibGUgdGhlIGJ1aWx0IHBsdWdpbiBpbiB0aGUgdGVtcCB2YXVsdC4gRGVmYXVsdHNcbiAgICogdG8gYHRydWVgLiBTZXQgdG8gYGZhbHNlYCBmb3IgYSAqKm5vbi1wbHVnaW4qKiBjb25zdW1lciB0aGF0IG9ubHkgbmVlZHMgYVxuICAgKiByZWdpc3RlcmVkLCBlbXB0eSB2YXVsdCB0byBgZXZhbEluT2JzaWRpYW5gIGFnYWluc3QgXHUyMDE0IHRoZSBvd25lZCBpbnN0YW5jZSBpc1xuICAgKiBzdGlsbCBsYXVuY2hlZCBhbmQgaXRzIGVuZHBvaW50IHB1Ymxpc2hlZCB0byB3b3JrZXJzLCBzbyByZS1leHBvcnRpbmdcbiAgICogYGNyZWF0ZVNldHVwKHsgaW5zdGFsbFBsdWdpbjogZmFsc2UgfSlgIHJldXNlcyB0aGUgc2FtZSBhdHRhY2ggd2lyaW5nIHdpdGggbm9cbiAgICogcGx1Z2luIGNvcHkvZW5hYmxlLiBTZWUge0BsaW5rIENvcmVTZXR1cFBhcmFtcy5pbnN0YWxsUGx1Z2lufS5cbiAgICovXG4gIHJlYWRvbmx5IGluc3RhbGxQbHVnaW4/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGZpbGVzL2ZvbGRlcnMgdG8gd3JpdGUgaW50byB0aGUgdmF1bHQgYmVmb3JlIE9ic2lkaWFuIG9wZW5zIGl0IChzZWVcbiAgICoge0BsaW5rIENvcmVTZXR1cFBhcmFtcy5wb3B1bGF0ZX0pLiBBIHRodW5rIHNvIGxhcmdlIGZpeHR1cmVzIGFyZSBidWlsdCBsYXppbHksXG4gICAqIG9uY2UsIGluIHRoZSBzZXR1cCBwcm9jZXNzLlxuICAgKlxuICAgKiBNYXkgcmV0dXJuIGEgcHJvbWlzZSwgc28gdGhlIG1hcCBjYW4gYmUgYnVpbHQgYnkgc29tZXRoaW5nIHRoYXQgbmVlZHMgdGhlIG5ldHdvcmsgXHUyMDE0IG5vdGFibHlcbiAgICogYGJ1aWxkRGVtb1ZhdWx0UG9wdWxhdGVBc3luY2AsIHdoaWNoIGluc3RhbGxzIGEgZGVtbyB2YXVsdCdzIG1pc3NpbmcgY29tbXVuaXR5IHBsdWdpbnMgYmVmb3JlXG4gICAqIHJlYWRpbmcgdGhlbS4gQSBzeW5jaHJvbm91cyB0aHVuayAoZS5nLiBgYnVpbGREZW1vVmF1bHRQb3B1bGF0ZWApIGlzIHVuY2hhbmdlZC5cbiAgICovXG4gIHBvcHVsYXRlPyh0aGlzOiB2b2lkKTogUG9wdWxhdGVGaWxlc1BhcmFtcyB8IFByb21pc2U8UG9wdWxhdGVGaWxlc1BhcmFtcz47XG59XG5cbi8qKlxuICogQSBKZXN0IGBnbG9iYWxTZXR1cGAgLyBgZ2xvYmFsVGVhcmRvd25gIG1vZHVsZSdzIGBzZXR1cGAgLyBgdGVhcmRvd25gIHBhaXIuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSmVzdEdsb2JhbFNldHVwIHtcbiAgc2V0dXAodGhpczogdm9pZCk6IFByb21pc2U8dm9pZD47XG4gIHRlYXJkb3duKHRoaXM6IHZvaWQpOiBQcm9taXNlPHZvaWQ+O1xufVxuXG4vKipcbiAqIENyZWF0ZXMgYSBKZXN0IGdsb2JhbCBzZXR1cC90ZWFyZG93biBwYWlyLCBvcHRpb25hbGx5IHByZS1wb3B1bGF0aW5nIHRoZSB2YXVsdFxuICogYmVmb3JlIE9ic2lkaWFuIG9wZW5zIGl0IFx1MjAxNCB1c2UgdGhpcyBmb3IgYSBkZWRpY2F0ZWQgbGFyZ2UtdmF1bHQvcGVyZm9ybWFuY2VcbiAqIHNldHVwLiBUaGUgcGxhaW4ge0BsaW5rIHNldHVwfSAvIHtAbGluayB0ZWFyZG93bn0gZXhwb3J0cyBhcmUgdGhlIG5vLXBvcHVsYXRlXG4gKiBjYXNlIChgY3JlYXRlU2V0dXAoKWApLiBQYXNzIGB7IGluc3RhbGxQbHVnaW46IGZhbHNlIH1gIGZvciBhIG5vbi1wbHVnaW4gY29uc3VtZXJcbiAqIHRoYXQgb25seSBuZWVkcyBhIHJlZ2lzdGVyZWQsIGVtcHR5IHZhdWx0IChzZWUge0BsaW5rIENyZWF0ZVNldHVwT3B0aW9ucy5pbnN0YWxsUGx1Z2lufSkuXG4gKlxuICogQHBhcmFtIG9wdGlvbnMgLSBTZXR1cCBvcHRpb25zLlxuICogQHJldHVybnMgVGhlIGBzZXR1cGAgYW5kIGB0ZWFyZG93bmAgZnVuY3Rpb25zIHRvIHJlLWV4cG9ydCBmcm9tIGEgYGdsb2JhbFNldHVwYCBtb2R1bGUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVTZXR1cChvcHRpb25zPzogQ3JlYXRlU2V0dXBPcHRpb25zKTogSmVzdEdsb2JhbFNldHVwIHtcbiAgbGV0IHNldHVwUmVzdWx0OiBDb3JlU2V0dXBSZXN1bHQgfCB1bmRlZmluZWQ7XG5cbiAgcmV0dXJuIHsgc2V0dXAsIHRlYXJkb3duIH07XG5cbiAgYXN5bmMgZnVuY3Rpb24gc2V0dXAoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgdHJhbnNwb3J0T3B0aW9ucyA9IGdsb2JhbFRoaXMuX19vYnNpZGlhbkludGVncmF0aW9uVGVzdGluZz8udHJhbnNwb3J0T3B0aW9ucztcblxuICAgIHNldHVwUmVzdWx0ID0gYXdhaXQgY29yZVNldHVwKHtcbiAgICAgIGVuYWJsZUNvbW11bml0eVBsdWdpbnM6IG9wdGlvbnM/LmVuYWJsZUNvbW11bml0eVBsdWdpbnMsXG4gICAgICBpbnN0YWxsUGx1Z2luOiBvcHRpb25zPy5pbnN0YWxsUGx1Z2luLFxuICAgICAgcG9wdWxhdGU6IGF3YWl0IG9wdGlvbnM/LnBvcHVsYXRlPy4oKSxcbiAgICAgIHRyYW5zcG9ydE9wdGlvbnNcbiAgICB9KTtcblxuICAgIGdsb2JhbFRoaXMuX19vYnNpZGlhbkludGVncmF0aW9uVGVzdGluZyA9IHtcbiAgICAgIC4uLmdsb2JhbFRoaXMuX19vYnNpZGlhbkludGVncmF0aW9uVGVzdGluZyxcbiAgICAgIHRlbXBvcmFyeVZhdWx0UGF0aDogc2V0dXBSZXN1bHQudGVtcG9yYXJ5VmF1bHQucGF0aCxcbiAgICAgIHRyYW5zcG9ydE9wdGlvbnM6IHNldHVwUmVzdWx0LnRyYW5zcG9ydE9wdGlvbnNcbiAgICB9O1xuICB9XG5cbiAgYXN5bmMgZnVuY3Rpb24gdGVhcmRvd24oKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgY29yZVRlYXJkb3duKHNldHVwUmVzdWx0KTtcbiAgfVxufVxuXG4vKipcbiAqIFJldHVybnMgdGhlIHRlbXBvcmFyeSB2YXVsdCBwcm92aWRlZCBieSB0aGUgZ2xvYmFsIHNldHVwLlxuICpcbiAqIFJlYWRzIHRoZSB2YXVsdCBwYXRoIGZyb20gYGdsb2JhbFRoaXMuX19vYnNpZGlhbkludGVncmF0aW9uVGVzdGluZy50ZW1wb3JhcnlWYXVsdFBhdGhgLFxuICogd2hpY2ggaXMgc2V0IGJ5IHRoZSBKZXN0IGdsb2JhbCBzZXR1cC5cbiAqXG4gKiBAcmV0dXJucyBUaGUgdGVtcG9yYXJ5IHZhdWx0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0VGVtcG9yYXJ5VmF1bHQoKTogVGVtcG9yYXJ5VmF1bHQge1xuICBjb25zdCB0ZW1wb3JhcnlWYXVsdFBhdGggPSBnbG9iYWxUaGlzLl9fb2JzaWRpYW5JbnRlZ3JhdGlvblRlc3Rpbmc/LnRlbXBvcmFyeVZhdWx0UGF0aDtcbiAgaWYgKCF0ZW1wb3JhcnlWYXVsdFBhdGgpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAnZ2xvYmFsVGhpcy5fX29ic2lkaWFuSW50ZWdyYXRpb25UZXN0aW5nLnRlbXBvcmFyeVZhdWx0UGF0aCBpcyBub3Qgc2V0LiBEaWQgeW91IGNvbmZpZ3VyZSBvYnNpZGlhbi1pbnRlZ3JhdGlvbi10ZXN0aW5nL2plc3QtZ2xvYmFsLXNldHVwIGFzIGEgSmVzdCBnbG9iYWxTZXR1cD8nXG4gICAgKTtcbiAgfVxuICByZXR1cm4gbmV3IFRlbXBvcmFyeVZhdWx0KHRlbXBvcmFyeVZhdWx0UGF0aCk7XG59XG5cbi8qKlxuICogUmV0dXJucyB0aGUgdHJhbnNwb3J0IG9wdGlvbnMgcHJvdmlkZWQgYnkgdGhlIGdsb2JhbCBzZXR1cC5cbiAqXG4gKiBAcmV0dXJucyBUaGUgdHJhbnNwb3J0IG9wdGlvbnMsIG9yIGB1bmRlZmluZWRgIGlmIG5vdCBjb25maWd1cmVkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0VHJhbnNwb3J0T3B0aW9ucygpOiBPYnNpZGlhblRyYW5zcG9ydE9wdGlvbnMgfCB1bmRlZmluZWQge1xuICByZXR1cm4gZ2xvYmFsVGhpcy5fX29ic2lkaWFuSW50ZWdyYXRpb25UZXN0aW5nPy50cmFuc3BvcnRPcHRpb25zO1xufVxuXG5jb25zdCBkZWZhdWx0R2xvYmFsU2V0dXAgPSBjcmVhdGVTZXR1cCgpO1xuXG4vKipcbiAqIEplc3QgZ2xvYmFsIHNldHVwIGZ1bmN0aW9uIChubyBwcmUtcG9wdWxhdGlvbikuXG4gKlxuICogQ29waWVzIHRoZSBidWlsdCBwbHVnaW4gaW50byBhIHRlbXBvcmFyeSB2YXVsdCwgZW5hYmxlcyBpdCB2aWEgYSByZW5kZXJlciBldmFsXG4gKiBvdmVyIHRoZSB0cmFuc3BvcnQsIGFuZCBwb3B1bGF0ZXMgYGdsb2JhbFRoaXMuX19vYnNpZGlhbkludGVncmF0aW9uVGVzdGluZ2AgZm9yIHRlc3RzLlxuICpcbiAqIFRyYW5zcG9ydCBvcHRpb25zIGFyZSByZWFkIGZyb20gYGdsb2JhbFRoaXMuX19vYnNpZGlhbkludGVncmF0aW9uVGVzdGluZy50cmFuc3BvcnRPcHRpb25zYC5cbiAqIFNldCB0aGlzIGluIHlvdXIgSmVzdCBjb25maWcgdmlhIHRoZSBgZ2xvYmFsc2Agb3B0aW9uLlxuICpcbiAqIEByZXR1cm5zIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHdoZW4gc2V0dXAgY29tcGxldGVzLlxuICovXG5leHBvcnQgY29uc3Qgc2V0dXAgPSBkZWZhdWx0R2xvYmFsU2V0dXAuc2V0dXA7XG5cbi8qKlxuICogSmVzdCBnbG9iYWwgdGVhcmRvd24gZnVuY3Rpb24uXG4gKlxuICogUmVtb3ZlcyB0aGUgdGVtcG9yYXJ5IHZhdWx0IGNyZWF0ZWQgZHVyaW5nIHNldHVwLlxuICpcbiAqIEByZXR1cm5zIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHdoZW4gdGVhcmRvd24gY29tcGxldGVzLlxuICovXG5leHBvcnQgY29uc3QgdGVhcmRvd24gPSBkZWZhdWx0R2xvYmFsU2V0dXAudGVhcmRvd247XG5cbi8vIEplc3QncyBgZ2xvYmFsU2V0dXBgIGNvbmZpZyBjYW4gcmVmZXJlbmNlIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGJlY2F1c2UgaXRzIGRlZmF1bHQgZXhwb3J0IGlzIHRoZSBzZXR1cCBmdW5jdGlvbi5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQteC9uby1kZWZhdWx0LWV4cG9ydCAtLSBKZXN0J3MgZ2xvYmFsU2V0dXAgbG9hZGVyIHJlcXVpcmVzIGEgZGVmYXVsdC1leHBvcnQgZnVuY3Rpb24uXG5leHBvcnQgZGVmYXVsdCBzZXR1cDtcbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBZUEsOEJBR087QUFDUCwrQkFHTztBQUNQLDZCQUErQjtBQUFBLElBOEIvQixxREFBNEIsTUFBTSxXQUFXLDhCQUE4QixnQkFBZ0I7QUFBQSxJQUMzRiw4Q0FBcUIsTUFBTSxXQUFXLDhCQUE4QixrQkFBa0I7QUFzRC9FLFNBQVMsWUFBWSxTQUErQztBQUN6RSxNQUFJO0FBRUosU0FBTyxFQUFFLE9BQUFBLFFBQU8sVUFBQUMsVUFBUztBQUV6QixpQkFBZUQsU0FBdUI7QUFDcEMsVUFBTSxtQkFBbUIsV0FBVyw4QkFBOEI7QUFFbEUsa0JBQWMsVUFBTSxvQ0FBVTtBQUFBLE1BQzVCLHdCQUF3QixTQUFTO0FBQUEsTUFDakMsZUFBZSxTQUFTO0FBQUEsTUFDeEIsVUFBVSxNQUFNLFNBQVMsV0FBVztBQUFBLE1BQ3BDO0FBQUEsSUFDRixDQUFDO0FBRUQsZUFBVywrQkFBK0I7QUFBQSxNQUN4QyxHQUFHLFdBQVc7QUFBQSxNQUNkLG9CQUFvQixZQUFZLGVBQWU7QUFBQSxNQUMvQyxrQkFBa0IsWUFBWTtBQUFBLElBQ2hDO0FBQUEsRUFDRjtBQUVBLGlCQUFlQyxZQUEwQjtBQUN2QyxjQUFNLHVDQUFhLFdBQVc7QUFBQSxFQUNoQztBQUNGO0FBVU8sU0FBUyxvQkFBb0M7QUFDbEQsUUFBTSxxQkFBcUIsV0FBVyw4QkFBOEI7QUFDcEUsTUFBSSxDQUFDLG9CQUFvQjtBQUN2QixVQUFNLElBQUk7QUFBQSxNQUNSO0FBQUEsSUFDRjtBQUFBLEVBQ0Y7QUFDQSxTQUFPLElBQUksc0NBQWUsa0JBQWtCO0FBQzlDO0FBT08sU0FBUyxzQkFBNEQ7QUFDMUUsU0FBTyxXQUFXLDhCQUE4QjtBQUNsRDtBQUVBLE1BQU0scUJBQXFCLFlBQVk7QUFhaEMsTUFBTSxRQUFRLG1CQUFtQjtBQVNqQyxNQUFNLFdBQVcsbUJBQW1CO0FBSTNDLElBQU8sdUJBQVE7IiwKICAibmFtZXMiOiBbInNldHVwIiwgInRlYXJkb3duIl0KfQo=
@@ -56,8 +56,12 @@ export interface CreateSetupOptions {
56
56
  * Returns files/folders to write into the vault before Obsidian opens it (see
57
57
  * {@link CoreSetupParams.populate}). A thunk so large fixtures are built lazily,
58
58
  * once, in the setup process.
59
+ *
60
+ * May return a promise, so the map can be built by something that needs the network — notably
61
+ * `buildDemoVaultPopulateAsync`, which installs a demo vault's missing community plugins before
62
+ * reading them. A synchronous thunk (e.g. `buildDemoVaultPopulate`) is unchanged.
59
63
  */
60
- populate?(this: void): PopulateFilesParams;
64
+ populate?(this: void): PopulateFilesParams | Promise<PopulateFilesParams>;
61
65
  }
62
66
  /**
63
67
  * A Jest `globalSetup` / `globalTeardown` module's `setup` / `teardown` pair.