obsidian-integration-testing 15.0.0 → 17.0.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 (73) hide show
  1. package/dist/lib/cjs/adb.cjs +2 -2
  2. package/dist/lib/cjs/adb.d.cts +10 -0
  3. package/dist/lib/cjs/avd-name-channel.cjs +74 -0
  4. package/dist/lib/cjs/avd-name-channel.d.cts +152 -0
  5. package/dist/lib/cjs/avd-probe-verdict.cjs +11 -4
  6. package/dist/lib/cjs/avd-probe-verdict.d.cts +7 -0
  7. package/dist/lib/cjs/device-screenshot.cjs +1 -1
  8. package/dist/lib/cjs/device-screenshot.d.cts +3 -1
  9. package/dist/lib/cjs/emulator-backend.cjs +22 -1
  10. package/dist/lib/cjs/emulator-backend.d.cts +81 -0
  11. package/dist/lib/cjs/emulator-reclaim.cjs +78 -34
  12. package/dist/lib/cjs/emulator-reclaim.d.cts +57 -9
  13. package/dist/lib/cjs/enable-plugin.cjs +17 -8
  14. package/dist/lib/cjs/enable-plugin.d.cts +3 -1
  15. package/dist/lib/cjs/host-process-query-verdict.cjs +103 -0
  16. package/dist/lib/cjs/host-process-query-verdict.d.cts +196 -0
  17. package/dist/lib/cjs/index.cjs +14 -1
  18. package/dist/lib/cjs/index.d.cts +3 -1
  19. package/dist/lib/cjs/label-screenshot.cjs +2 -2
  20. package/dist/lib/cjs/launched-device-selection.cjs +46 -0
  21. package/dist/lib/cjs/launched-device-selection.d.cts +112 -0
  22. package/dist/lib/cjs/library.cjs +1 -1
  23. package/dist/lib/cjs/paint-out-status-bar.cjs +170 -0
  24. package/dist/lib/cjs/paint-out-status-bar.d.cts +236 -0
  25. package/dist/lib/cjs/port-owner-query-verdict.cjs +94 -0
  26. package/dist/lib/cjs/port-owner-query-verdict.d.cts +161 -0
  27. package/dist/lib/cjs/resolve-emulator-device-id.cjs +27 -4
  28. package/dist/lib/cjs/sharp-loader.cjs +1 -1
  29. package/dist/lib/cjs/sharp-loader.d.cts +67 -2
  30. package/dist/lib/cjs/soft-keyboard-geometry.cjs +12 -2
  31. package/dist/lib/cjs/soft-keyboard-geometry.d.cts +17 -2
  32. package/dist/lib/cjs/soft-keyboard.cjs +130 -28
  33. package/dist/lib/cjs/soft-keyboard.d.cts +65 -6
  34. package/dist/lib/cjs/transport-appium.cjs +74 -4
  35. package/dist/lib/cjs/transport-appium.d.cts +49 -2
  36. package/dist/lib/cjs/transport-factory.cjs +162 -42
  37. package/dist/lib/esm/adb.d.mts +10 -0
  38. package/dist/lib/esm/adb.mjs +2 -2
  39. package/dist/lib/esm/avd-name-channel.d.mts +152 -0
  40. package/dist/lib/esm/avd-name-channel.mjs +45 -0
  41. package/dist/lib/esm/avd-probe-verdict.d.mts +7 -0
  42. package/dist/lib/esm/avd-probe-verdict.mjs +15 -4
  43. package/dist/lib/esm/device-screenshot.d.mts +3 -1
  44. package/dist/lib/esm/device-screenshot.mjs +1 -1
  45. package/dist/lib/esm/emulator-backend.d.mts +81 -0
  46. package/dist/lib/esm/emulator-backend.mjs +19 -1
  47. package/dist/lib/esm/emulator-reclaim.d.mts +57 -9
  48. package/dist/lib/esm/emulator-reclaim.mjs +84 -36
  49. package/dist/lib/esm/enable-plugin.d.mts +3 -1
  50. package/dist/lib/esm/enable-plugin.mjs +17 -8
  51. package/dist/lib/esm/host-process-query-verdict.d.mts +196 -0
  52. package/dist/lib/esm/host-process-query-verdict.mjs +74 -0
  53. package/dist/lib/esm/index.d.mts +3 -1
  54. package/dist/lib/esm/index.mjs +15 -1
  55. package/dist/lib/esm/label-screenshot.mjs +2 -2
  56. package/dist/lib/esm/launched-device-selection.d.mts +112 -0
  57. package/dist/lib/esm/launched-device-selection.mjs +21 -0
  58. package/dist/lib/esm/library.mjs +1 -1
  59. package/dist/lib/esm/paint-out-status-bar.d.mts +236 -0
  60. package/dist/lib/esm/paint-out-status-bar.mjs +142 -0
  61. package/dist/lib/esm/port-owner-query-verdict.d.mts +161 -0
  62. package/dist/lib/esm/port-owner-query-verdict.mjs +73 -0
  63. package/dist/lib/esm/resolve-emulator-device-id.mjs +32 -4
  64. package/dist/lib/esm/sharp-loader.d.mts +67 -2
  65. package/dist/lib/esm/sharp-loader.mjs +1 -1
  66. package/dist/lib/esm/soft-keyboard-geometry.d.mts +17 -2
  67. package/dist/lib/esm/soft-keyboard-geometry.mjs +11 -2
  68. package/dist/lib/esm/soft-keyboard.d.mts +65 -6
  69. package/dist/lib/esm/soft-keyboard.mjs +131 -28
  70. package/dist/lib/esm/transport-appium.d.mts +49 -2
  71. package/dist/lib/esm/transport-appium.mjs +74 -4
  72. package/dist/lib/esm/transport-factory.mjs +176 -44
  73. package/package.json +1 -1
@@ -49,7 +49,9 @@ export interface EnablePluginResult {
49
49
  *
50
50
  * Monkey-patches `app.plugins.loadPlugin` to intercept errors before
51
51
  * Obsidian's `enablePlugin` try-catch swallows them. The original method
52
- * is always restored in a `finally` block.
52
+ * is restored in a `finally` block — but only while the patch this function
53
+ * installed is still the one in place, so a plugin that patched the same slot
54
+ * during its own load keeps its patch.
53
55
  *
54
56
  * Designed to be passed as the `callback` argument to {@link evalInObsidian}.
55
57
  *
@@ -0,0 +1,103 @@
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 host_process_query_verdict_exports = {};
20
+ __export(host_process_query_verdict_exports, {
21
+ buildHostProcessQueryMessage: () => buildHostProcessQueryMessage,
22
+ formatDuration: () => formatDuration,
23
+ formatExitCode: () => formatExitCode,
24
+ formatRefusal: () => formatRefusal,
25
+ resolveHostProcessQueryOutcome: () => resolveHostProcessQueryOutcome,
26
+ resolveHostQueryFailure: () => resolveHostQueryFailure
27
+ });
28
+ module.exports = __toCommonJS(host_process_query_verdict_exports);
29
+ var import_type_guards = require("./type-guards.cjs");
30
+ const NTSTATUS_FAILURE_FLOOR = 3221225472;
31
+ const HEXADECIMAL_RADIX = 16;
32
+ const MILLISECONDS_PER_SECOND = 1e3;
33
+ function buildHostProcessQueryMessage(params) {
34
+ const cost = `after ${formatDuration(params.elapsedInMilliseconds)}`;
35
+ const consequence = params.consequence ?? "Teardown falls back to `adb devices` alone and has no PID to escalate to.";
36
+ switch (params.outcome) {
37
+ case "crashed": {
38
+ return `Warning: \`${params.command}\` died ${cost} without explaining itself (exit ${formatExitCode(params.exitCode)}, nothing on stderr, ${String(params.partialRowCount)} process(es) listed) \u2014 it did not refuse the request, since it always explains a refusal on stderr. Suspect a crash or an interfering security product, and try the command by hand. ${consequence}`;
39
+ }
40
+ case "listed": {
41
+ return void 0;
42
+ }
43
+ case "not-found": {
44
+ return `Warning: \`${params.command}\` could not be run at all ${cost}: the executable was not found on PATH. ${consequence}`;
45
+ }
46
+ case "output-overran": {
47
+ return `Warning: \`${params.command}\` produced more output ${cost} than the listing's buffer allows, so none of it could be read. Raise the buffer. ${consequence}`;
48
+ }
49
+ case "refused": {
50
+ return `Warning: \`${params.command}\` refused the request ${cost} (exit ${formatExitCode(params.exitCode)}): ${formatRefusal(params.standardError)} ${consequence}`;
51
+ }
52
+ case "timed-out": {
53
+ return `Warning: \`${params.command}\` did not finish within its ${formatDuration(params.timeoutInMilliseconds)} budget and was killed ${cost}${params.signal === null ? "" : ` (${params.signal})`}, having listed ${String(params.partialRowCount)} process(es) by then \u2014 so it was working, not refusing, and the budget is what ran out. The partial listing is discarded rather than used: the owned set is a *difference* between two listings, and a truncated one on either side would both miss a process this run owns and claim one it does not. ${consequence}`;
54
+ }
55
+ case "zero-rows": {
56
+ return `Warning: \`${params.command}\` exited cleanly ${cost} but its output parsed to no processes and carried no no-match notice \u2014 a whole-host listing cannot be empty on a running host, and a filtered one says so when nothing matches. Treating it as a failed query. ${consequence}`;
57
+ }
58
+ default: {
59
+ return (0, import_type_guards.assertNever)(params.outcome);
60
+ }
61
+ }
62
+ }
63
+ function formatDuration(durationInMilliseconds) {
64
+ return durationInMilliseconds < MILLISECONDS_PER_SECOND ? `${String(durationInMilliseconds)}ms` : `${(durationInMilliseconds / MILLISECONDS_PER_SECOND).toFixed(1)}s`;
65
+ }
66
+ function formatExitCode(exitCode) {
67
+ if (exitCode === null) {
68
+ return "unknown";
69
+ }
70
+ return exitCode >= NTSTATUS_FAILURE_FLOOR ? `0x${exitCode.toString(HEXADECIMAL_RADIX).toUpperCase()}` : String(exitCode);
71
+ }
72
+ function formatRefusal(standardError) {
73
+ const refusal = standardError.trim();
74
+ return refusal.endsWith(".") ? refusal : `${refusal}.`;
75
+ }
76
+ function resolveHostProcessQueryOutcome(params) {
77
+ if (!params.hasFailed) {
78
+ return params.rowCount === 0 && !params.hasReportedNoMatch ? "zero-rows" : "listed";
79
+ }
80
+ return resolveHostQueryFailure(params);
81
+ }
82
+ function resolveHostQueryFailure(params) {
83
+ if (params.errorCode === "ENOENT") {
84
+ return "not-found";
85
+ }
86
+ if (params.errorCode === "ERR_CHILD_PROCESS_STDIO_MAXBUFFER") {
87
+ return "output-overran";
88
+ }
89
+ if (params.isKilled) {
90
+ return "timed-out";
91
+ }
92
+ return params.standardError.trim() === "" ? "crashed" : "refused";
93
+ }
94
+ // Annotate the CommonJS export names for ESM import in node:
95
+ 0 && (module.exports = {
96
+ buildHostProcessQueryMessage,
97
+ formatDuration,
98
+ formatExitCode,
99
+ formatRefusal,
100
+ resolveHostProcessQueryOutcome,
101
+ resolveHostQueryFailure
102
+ });
103
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2hvc3QtcHJvY2Vzcy1xdWVyeS12ZXJkaWN0LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogUHVyZSBjbGFzc2lmaWNhdGlvbiBvZiB0aGUgaG9zdCBwcm9jZXNzIGxpc3RpbmcgXHUyMDE0IGRlY2lkaW5nLCBmcm9tIGhvd1xuICogYHRhc2tsaXN0YCAvIGBwc2AgZW5kZWQsICp3aGljaCogd2F5IGl0IGZhaWxlZCwgYW5kIHNheWluZyBzbyBpbiBvbmUgbGluZS5cbiAqXG4gKiBUaGUgbGlzdGluZyBpcyB3aGF0IG5hbWVzIHRoZSBlbXVsYXRvciBiYWNrZW5kIGEgcnVuIG93bnMsIGFuZCB0aGVyZWZvcmUgdGhlXG4gKiBvbmx5IFBJRCB0ZWFyZG93biBjYW4gZXNjYWxhdGUgdG8gKCoqTDU2KiopLiBJdCBpcyBiZXN0LWVmZm9ydCBieSBkZXNpZ246IGFcbiAqIGxpc3RpbmcgdGhhdCBjYW5ub3QgYmUgcHJvZHVjZWQgeWllbGRzIG5vIFBJRHMgcmF0aGVyIHRoYW4gZmFpbGluZyB0aGUgcnVuLlxuICogV2hhdCBpdCBtdXN0IG5ldmVyIGJlIGlzICoqdW5leHBsYWluZWQqKiwgYW5kIGZvciB0aHJlZSB3ZWVrcyBpdCB3YXM6XG4gKlxuICogYGBgdGV4dFxuICogV2FybmluZzogY291bGQgbm90IGxpc3QgaG9zdCBwcm9jZXNzZXMgKGB0YXNrbGlzdGApOiBDb21tYW5kIGZhaWxlZDogdGFza2xpc3QgL0ZPIENTViAvTkhcbiAqXG4gKiBXYXJuaW5nOiBgdGFza2xpc3RgIGxpc3RlZCBubyBwcm9jZXNzZXMuXG4gKiBgYGBcbiAqXG4gKiBUd28gZGVmZWN0cyBpbiBmb3VyIGxpbmVzLiBUaGUgcGFpciBpcyAqY29udHJhZGljdG9yeSogXHUyMDE0IHRoZSBmaXJzdCBzYXlzIHRoZVxuICogY29tbWFuZCBmYWlsZWQsIHRoZSBzZWNvbmQgc2F5cyBpdCByYW4gYW5kIGZvdW5kIG5vdGhpbmcgXHUyMDE0IGFuZCB0aGV5IHdlcmVcbiAqIGVtaXR0ZWQgdG9nZXRoZXIgZm9yIGEgc2luZ2xlIGZhaWx1cmUsIGJlY2F1c2UgYSBmYWlsZWQgY2FsbCByZXNvbHZlcyBgJydgXG4gKiBhbmQgYW4gZW1wdHkgc3RyaW5nIHBhcnNlcyB0byB6ZXJvIHJvd3MuIGB6ZXJvLXJvd3NgIGV4aXN0cyB0byBjYXRjaCBhXG4gKiBsaXN0aW5nIHRoYXQgc3VjY2VlZGVkIGFuZCB5ZXQgcmV0dXJuZWQgbm90aGluZywgd2hpY2ggb24gYSByZWFsIGhvc3QgY2FuXG4gKiBvbmx5IGJlIGEgZmFpbGVkIHF1ZXJ5OyBpdCBpcyBub3QgYSBzZWNvbmQgb3BpbmlvbiBvbiBhIGNhbGwgdGhhdCBhbHJlYWR5XG4gKiByZXBvcnRlZCBhbiBlcnJvci5cbiAqXG4gKiBBbmQgdGhlIHN1cnZpdmluZyBkaWFnbm9zdGljIGlzIGBlcnJvci5tZXNzYWdlYCBhbG9uZSwgd2hpY2ggZm9yIGBleGVjRmlsZWBcbiAqIGlzIGBDb21tYW5kIGZhaWxlZDogPGNtZD5cXG48c3RkZXJyPmAgXHUyMDE0IHNvIHRoZSBsb2cgY2FycmllZCB0aGUgY29tbWFuZCBiYWNrXG4gKiB0byB0aGUgcmVhZGVyIGFuZCB0aHJldyBhd2F5IGV2ZXJ5dGhpbmcgdGhhdCBpZGVudGlmaWVzIHRoZSBmYWlsdXJlOlxuICogYGVycm9yLmNvZGVgLCBgZXJyb3Iua2lsbGVkYCwgYGVycm9yLnNpZ25hbGAsIGFuZCBob3cgbG9uZyB0aGUgY2FsbCB0b29rLlxuICogTWVhc3VyZWQgMjAyNi0wOS0yMyBvbiB0aGlzIGhvc3QsIHRoYXQgZGlzY2FyZGVkIGV2aWRlbmNlIGlzIGRlY2lzaXZlOlxuICpcbiAqIC0gYHRhc2tsaXN0YCAqKmFsd2F5cyoqIHdyaXRlcyBgRVJST1I6IDxyZWFzb24+YCB0byBzdGRlcnIgd2hlbiBpdCBvYmplY3RzIFx1MjAxNFxuICogICBhIGJhZCBmaWx0ZXIsIGFuIHVucmVhY2hhYmxlIGhvc3QgXHUyMDE0IGFuZCBleGl0cyAxLiBTbyBhIG5vbi16ZXJvIGV4aXQgd2l0aFxuICogICAqKmVtcHR5Kiogc3RkZXJyIGlzIG5vdCBgdGFza2xpc3RgIHJlZnVzaW5nOyBpdCBpcyB0aGUgaG9zdCBraWxsaW5nIHRoZVxuICogICBjaGlsZCwgYW5kIGBjcmFzaGVkYCBzYXlzIHNvLlxuICogLSBUaGUgZXhhY3Qgc3Bhd24gdGhlIGhhcm5lc3MgbWFrZXMgc3VjY2VlZHMgMzkgdGltZXMgb3V0IG9mIDM5IGZyb20gYW4gaWRsZVxuICogICBOb2RlIHByb2Nlc3MgKDAuNi00LjNzLCAyNiBLQiwgfjUzMCByb3dzLCBhZ2FpbnN0IGEgMzBzIGJ1ZGdldCBhbmQgYW4gOCBNQlxuICogICBjZWlsaW5nKS4gU28gXCJ0aGUgc3Bhd24gaXMgd3JvbmdcIiBcdTIwMTQgYSBtaXNzaW5nIHNoZWxsLCBhIFBBVEggdGhlIGNoaWxkIGRpZFxuICogICBub3QgaW5oZXJpdCwgYW4gdW5kZXJzaXplZCBidWZmZXIgXHUyMDE0IGlzIHJ1bGVkIG91dDogZWFjaCBoYXMgaXRzICoqb3duKiogbWVzc2FnZVxuICogICAoYHNwYXduIHRhc2tsaXN0IEVOT0VOVGAsIGBzdGRvdXQgbWF4QnVmZmVyIGxlbmd0aCBleGNlZWRlZGApLCBhbmQgbm9uZSBvZlxuICogICB0aGVtIGlzIHRoZSBvbmUgb2JzZXJ2ZWQuXG4gKiAtIFVuZGVyIGFuIGVtdWxhdG9yIGJvb3QgdGhlIHNhbWUgY2FsbCBpbmZsYXRlcyB0byB+OXggaXRzIGlkbGUgY29zdCwgd2hpY2hcbiAqICAgaXMgdGhlIGNvbnRlbnRpb24gYEhPU1RfUFJPQ0VTU19RVUVSWV9USU1FT1VUX0lOX01JTExJU0VDT05EU2AgaXMgc2l6ZWRcbiAqICAgZm9yIGFuZCB0aGUgZmFpbHVyZSB0aGUgb2xkIGxpbmUgY291bGQgbm90IGRpc3Rpbmd1aXNoIGZyb20gYSBjcmFzaC5cbiAqXG4gKiBUaGlzIGlzIHRoZSBzYW1lIGZhdWx0IGBhdmQtcHJvYmUtdmVyZGljdC50c2Agd2FzIHdyaXR0ZW4gZm9yIFx1MjAxNCBhIHByb2JlIHRoYXRcbiAqIGRpc2NhcmRlZCBpdHMgZXJyb3IsIGxlYXZpbmcgXCJuZXZlciBhbnN3ZXJlZFwiIGluZGlzdGluZ3Vpc2hhYmxlIGZyb20gXCJ0aGVcbiAqIGFuc3dlciBpcyBub1wiIFx1MjAxNCBhbmQgaXQgaXMgZml4ZWQgdGhlIHNhbWUgd2F5OiBjbGFzc2lmeSwgbmFtZSB0aGVcbiAqIGNvbnNlcXVlbmNlLCBhbmQga2VlcCB0aGUgY2xhc3NpZmljYXRpb24gcHVyZSBzbyBpdCBpcyB1bml0LXRlc3RhYmxlIHdoaWxlXG4gKiB0aGUgYGV4ZWNGaWxlYCBnbHVlIHN0YXlzIGluIHRoZSBpbnRlZ3JhdGlvbi1vbmx5IGNhbGxlci5cbiAqL1xuXG5pbXBvcnQgeyBhc3NlcnROZXZlciB9IGZyb20gJy4vdHlwZS1ndWFyZHMuY2pzJztcblxuLyoqXG4gKiBUaGUgbG93ZXN0IGV4aXQgY29kZSBXaW5kb3dzIHJlc2VydmVzIGZvciBhbiBgTlRTVEFUVVNgIGZhaWx1cmUuXG4gKlxuICogQSBjaGlsZCBraWxsZWQgYnkgdGhlIE9TIFx1MjAxNCBhbiBhY2Nlc3MgdmlvbGF0aW9uLCBhIHN0YWNrIG92ZXJmbG93IFx1MjAxNCBleGl0cyB3aXRoXG4gKiBpdHMgYE5UU1RBVFVTYCBhcyB0aGUgY29kZSwgYW5kIGAweEMwMDAwMDA1YCBpcyB1bnJlYWRhYmxlIGluIGRlY2ltYWxcbiAqIChgMzIyMTIyNTQ3N2ApLiBDb2RlcyBhdCBvciBhYm92ZSB0aGlzIGFyZSB0aGVyZWZvcmUgcmVwb3J0ZWQgaW4gaGV4LCB3aGljaFxuICogaXMgdGhlIG9ubHkgZm9ybSBhIHJlYWRlciBjYW4gbG9vayB1cC5cbiAqL1xuY29uc3QgTlRTVEFUVVNfRkFJTFVSRV9GTE9PUiA9IDB4QzBfMDBfMDBfMDA7XG5cbi8qKlxuICogVGhlIGJhc2UgYW4gYE5UU1RBVFVTYCBleGl0IGNvZGUgaXMgcmVuZGVyZWQgaW4uXG4gKi9cbmNvbnN0IEhFWEFERUNJTUFMX1JBRElYID0gMTY7XG5cbi8qKlxuICogTWlsbGlzZWNvbmRzIGluIGEgc2Vjb25kLCBmb3IgcmVuZGVyaW5nIGEgZHVyYXRpb24uXG4gKi9cbmNvbnN0IE1JTExJU0VDT05EU19QRVJfU0VDT05EID0gMTAwMDtcblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgYnVpbGRIb3N0UHJvY2Vzc1F1ZXJ5TWVzc2FnZX0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQnVpbGRIb3N0UHJvY2Vzc1F1ZXJ5TWVzc2FnZVBhcmFtcyB7XG4gIC8qKlxuICBUaGUgY29tbWFuZCB0aGF0IHdhcyBydW4sIGZvciB0aGUgcmVhZGVyIHRvIHRyeSBieSBoYW5kIFx1MjAxNCBlLmcuIGB0YXNrbGlzdCAvRk8gQ1NWIC9OSGAuXG4gICAqL1xuICByZWFkb25seSBjb21tYW5kOiBzdHJpbmc7XG5cbiAgLyoqXG4gIFdoYXQgdGhlIGZhaWx1cmUgY29zdHMgdGhlIGNhbGxlciwgY2xvc2luZyB0aGUgbGluZS4gRGVmYXVsdHMgdG8gdGhlIHRlYXJkb3duIGNvbnNlcXVlbmNlLCB3aGljaCBpcyB3aGF0IHRoZSBoYXJuZXNzJ3Mgb3duIGxpc3RpbmcgbG9zZXM7IHRoZSB3ZWRnZSBwcm9iZSBzdGF0ZXMgd2hhdCAqaXQqIGxvc2VzIGluc3RlYWQuXG4gICAqL1xuICByZWFkb25seSBjb25zZXF1ZW5jZT86IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgSG93IGxvbmcgdGhlIGNhbGwgdG9vayBiZWZvcmUgaXQgZW5kZWQsIGluIG1pbGxpc2Vjb25kcy5cbiAgICovXG4gIHJlYWRvbmx5IGVsYXBzZWRJbk1pbGxpc2Vjb25kczogbnVtYmVyO1xuXG4gIC8qKlxuICBUaGUgY2hpbGQncyBleGl0IGNvZGUsIHdoZW4gaXQgZXhpdGVkIHJhdGhlciB0aGFuIGZhaWxpbmcgdG8gc3RhcnQgb3IgYmVpbmcga2lsbGVkLlxuICAgKi9cbiAgcmVhZG9ubHkgZXhpdENvZGU6IG51bGwgfCBudW1iZXI7XG5cbiAgLyoqXG4gIFRoZSB2ZXJkaWN0IGZyb20ge0BsaW5rIHJlc29sdmVIb3N0UHJvY2Vzc1F1ZXJ5T3V0Y29tZX0uXG4gICAqL1xuICByZWFkb25seSBvdXRjb21lOiBIb3N0UHJvY2Vzc1F1ZXJ5T3V0Y29tZTtcblxuICAvKipcbiAgSG93IG1hbnkgcHJvY2Vzc2VzIHRoZSBvdXRwdXQgcGFyc2VkIHRvIFx1MjAxNCB0aGUgKnBhcnRpYWwqIGxpc3Rpbmcgb24gYSBmYWlsdXJlLCB3aGljaCBpcyB0aGUgZXZpZGVuY2UgdGhhdCB0aGUgY29tbWFuZCB3YXMgd29ya2luZyB3aGVuIGl0IGRpZWQuXG4gICAqL1xuICByZWFkb25seSBwYXJ0aWFsUm93Q291bnQ6IG51bWJlcjtcblxuICAvKipcbiAgVGhlIHNpZ25hbCB0aGUgY2hpbGQgd2FzIGtpbGxlZCB3aXRoLCB3aGVuIGl0IHdhcyBraWxsZWQuXG4gICAqL1xuICByZWFkb25seSBzaWduYWw6IG51bGwgfCBzdHJpbmc7XG5cbiAgLyoqXG4gIFdoYXRldmVyIHRoZSBjaGlsZCB3cm90ZSB0byBzdGRlcnIgXHUyMDE0IHF1b3RlZCBmb3IgYHJlZnVzZWRgLCBhbmQgdGhlIGVtcHRpbmVzcyB0aGF0IGlkZW50aWZpZXMgYGNyYXNoZWRgLlxuICAgKi9cbiAgcmVhZG9ubHkgc3RhbmRhcmRFcnJvcjogc3RyaW5nO1xuXG4gIC8qKlxuICBUaGUgYnVkZ2V0IHRoZSBjYWxsIHdhcyBnaXZlbiwgaW4gbWlsbGlzZWNvbmRzLlxuICAgKi9cbiAgcmVhZG9ubHkgdGltZW91dEluTWlsbGlzZWNvbmRzOiBudW1iZXI7XG59XG5cbi8qKlxuICogSG93IHRoZSBob3N0IHByb2Nlc3MgbGlzdGluZyBlbmRlZC5cbiAqXG4gKiBgbGlzdGVkYCBpcyB0aGUgb25seSBzdWNjZXNzLiBUaGUgcmVzdCBhcmUgZGlzdGluY3QgZmFpbHVyZXMgb24gcHVycG9zZTogdGhleVxuICogbmVlZCBkaWZmZXJlbnQgZml4ZXMsIGFuZCB0aGUgbGluZSB0aGV5IHVzZWQgdG8gc2hhcmUgbmFtZWQgbm9uZSBvZiB0aGVtLlxuICovXG5leHBvcnQgdHlwZSBIb3N0UHJvY2Vzc1F1ZXJ5T3V0Y29tZSA9ICdsaXN0ZWQnIHwgJ3plcm8tcm93cycgfCBIb3N0UXVlcnlGYWlsdXJlO1xuXG4vKipcbiAqIFRoZSB3YXlzIGEgaG9zdCBxdWVyeSBjYW4gZmFpbCwgc2hhcmVkIGJ5IGV2ZXJ5IHF1ZXJ5IHRoYXQgY2xhc3NpZmllcyBpdHMgZW5kaW5nLlxuICovXG5leHBvcnQgdHlwZSBIb3N0UXVlcnlGYWlsdXJlID0gJ2NyYXNoZWQnIHwgJ25vdC1mb3VuZCcgfCAnb3V0cHV0LW92ZXJyYW4nIHwgJ3JlZnVzZWQnIHwgJ3RpbWVkLW91dCc7XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3Ige0BsaW5rIHJlc29sdmVIb3N0UHJvY2Vzc1F1ZXJ5T3V0Y29tZX0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVzb2x2ZUhvc3RQcm9jZXNzUXVlcnlPdXRjb21lUGFyYW1zIHtcbiAgLyoqXG4gIGBleGVjRmlsZWAncyBgZXJyb3IuY29kZWA6IHRoZSBudW1lcmljIGV4aXQgY29kZSwgb3IgYSBzdHJpbmcgbGlrZSBgRU5PRU5UYCB3aGVuIHRoZSBjaGlsZCBuZXZlciByYW4uXG4gICAqL1xuICByZWFkb25seSBlcnJvckNvZGU6IG51bGwgfCBudW1iZXIgfCBzdHJpbmc7XG5cbiAgLyoqXG4gIFdoZXRoZXIgYGV4ZWNGaWxlYCByZXBvcnRlZCBhbiBlcnJvciBhdCBhbGwuXG4gICAqL1xuICByZWFkb25seSBoYXNGYWlsZWQ6IGJvb2xlYW47XG5cbiAgLyoqXG4gIFdoZXRoZXIgYSAqKmZpbHRlcmVkKiogcXVlcnkgYWZmaXJtYXRpdmVseSByZXBvcnRlZCB0aGF0IG5vdGhpbmcgbWF0Y2hlZCAoYGNoZWNrSXNOb01hdGNoUmVwb3J0ZWRgKSBcdTIwMTQgdGhlIG9uZSB3YXkgYW4gZW1wdHkgYW5zd2VyIGlzIGFuIGFuc3dlci5cbiAgICovXG4gIHJlYWRvbmx5IGhhc1JlcG9ydGVkTm9NYXRjaDogYm9vbGVhbjtcblxuICAvKipcbiAgYGV4ZWNGaWxlYCdzIGBlcnJvci5raWxsZWRgOiB3aGV0aGVyIHRoZSBidWRnZXQgZXhwaXJlZCBhbmQgdGhlIGNoaWxkIHdhcyBraWxsZWQuXG4gICAqL1xuICByZWFkb25seSBpc0tpbGxlZDogYm9vbGVhbjtcblxuICAvKipcbiAgSG93IG1hbnkgcHJvY2Vzc2VzIHRoZSBvdXRwdXQgcGFyc2VkIHRvLlxuICAgKi9cbiAgcmVhZG9ubHkgcm93Q291bnQ6IG51bWJlcjtcblxuICAvKipcbiAgV2hhdGV2ZXIgdGhlIGNoaWxkIHdyb3RlIHRvIHN0ZGVyci5cbiAgICovXG4gIHJlYWRvbmx5IHN0YW5kYXJkRXJyb3I6IHN0cmluZztcbn1cblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgcmVzb2x2ZUhvc3RRdWVyeUZhaWx1cmV9LlxuICovXG5leHBvcnQgdHlwZSBSZXNvbHZlSG9zdFF1ZXJ5RmFpbHVyZVBhcmFtcyA9IFBpY2s8UmVzb2x2ZUhvc3RQcm9jZXNzUXVlcnlPdXRjb21lUGFyYW1zLCAnZXJyb3JDb2RlJyB8ICdpc0tpbGxlZCcgfCAnc3RhbmRhcmRFcnJvcic+O1xuXG4vKipcbiAqIEJ1aWxkcyB0aGUgc2luZ2xlIGxpbmUgdGhlIGxpc3RpbmcgbG9ncyBmb3IgYW4gb3V0Y29tZS5cbiAqXG4gKiBPbmUgbGluZSwgbmV2ZXIgdHdvOiB0aGUgY29udHJhZGljdG9yeSBwYWlyIGluIHRoaXMgZmlsZSdzIGhlYWRlciBpcyB0aGVcbiAqIGRlZmVjdCB0aGlzIHJlcGxhY2VzLiBgbGlzdGVkYCBoYXMgbm90aGluZyB0byByZXBvcnQsIHNvIGl0IHJldHVybnNcbiAqIGB1bmRlZmluZWRgIHJhdGhlciB0aGFuIGEgY2hlZXJmdWwgbGluZSBvbiB0aGUgaG90IHBhdGguXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSBvdXRjb21lIHBsdXMgdGhlIGNvbW1hbmQsIHRoZSBidWRnZXQgYW5kIHdoYXQgdGhlIGNoaWxkIGxlZnQgYmVoaW5kLlxuICogQHJldHVybnMgVGhlIHdhcm5pbmcgdG8gbG9nLCBvciBgdW5kZWZpbmVkYCB3aGVuIHRoZSBsaXN0aW5nIHN1Y2NlZWRlZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkSG9zdFByb2Nlc3NRdWVyeU1lc3NhZ2UocGFyYW1zOiBCdWlsZEhvc3RQcm9jZXNzUXVlcnlNZXNzYWdlUGFyYW1zKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgY29uc3QgY29zdCA9IGBhZnRlciAke2Zvcm1hdER1cmF0aW9uKHBhcmFtcy5lbGFwc2VkSW5NaWxsaXNlY29uZHMpfWA7XG4gIGNvbnN0IGNvbnNlcXVlbmNlID0gcGFyYW1zLmNvbnNlcXVlbmNlID8/ICdUZWFyZG93biBmYWxscyBiYWNrIHRvIGBhZGIgZGV2aWNlc2AgYWxvbmUgYW5kIGhhcyBubyBQSUQgdG8gZXNjYWxhdGUgdG8uJztcblxuICBzd2l0Y2ggKHBhcmFtcy5vdXRjb21lKSB7XG4gICAgY2FzZSAnY3Jhc2hlZCc6IHtcbiAgICAgIHJldHVybiBgV2FybmluZzogXFxgJHtwYXJhbXMuY29tbWFuZH1cXGAgZGllZCAke2Nvc3R9IHdpdGhvdXQgZXhwbGFpbmluZyBpdHNlbGYgKGV4aXQgJHtmb3JtYXRFeGl0Q29kZShwYXJhbXMuZXhpdENvZGUpfSwgbm90aGluZyBvbiBzdGRlcnIsICR7U3RyaW5nKHBhcmFtcy5wYXJ0aWFsUm93Q291bnQpfSBwcm9jZXNzKGVzKSBsaXN0ZWQpIFx1MjAxNCBpdCBkaWQgbm90IHJlZnVzZSB0aGUgcmVxdWVzdCwgc2luY2UgaXQgYWx3YXlzIGV4cGxhaW5zIGEgcmVmdXNhbCBvbiBzdGRlcnIuIFN1c3BlY3QgYSBjcmFzaCBvciBhbiBpbnRlcmZlcmluZyBzZWN1cml0eSBwcm9kdWN0LCBhbmQgdHJ5IHRoZSBjb21tYW5kIGJ5IGhhbmQuICR7Y29uc2VxdWVuY2V9YDtcbiAgICB9XG4gICAgY2FzZSAnbGlzdGVkJzoge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gICAgY2FzZSAnbm90LWZvdW5kJzoge1xuICAgICAgcmV0dXJuIGBXYXJuaW5nOiBcXGAke3BhcmFtcy5jb21tYW5kfVxcYCBjb3VsZCBub3QgYmUgcnVuIGF0IGFsbCAke2Nvc3R9OiB0aGUgZXhlY3V0YWJsZSB3YXMgbm90IGZvdW5kIG9uIFBBVEguICR7Y29uc2VxdWVuY2V9YDtcbiAgICB9XG4gICAgY2FzZSAnb3V0cHV0LW92ZXJyYW4nOiB7XG4gICAgICByZXR1cm4gYFdhcm5pbmc6IFxcYCR7cGFyYW1zLmNvbW1hbmR9XFxgIHByb2R1Y2VkIG1vcmUgb3V0cHV0ICR7Y29zdH0gdGhhbiB0aGUgbGlzdGluZydzIGJ1ZmZlciBhbGxvd3MsIHNvIG5vbmUgb2YgaXQgY291bGQgYmUgcmVhZC4gUmFpc2UgdGhlIGJ1ZmZlci4gJHtjb25zZXF1ZW5jZX1gO1xuICAgIH1cbiAgICBjYXNlICdyZWZ1c2VkJzoge1xuICAgICAgcmV0dXJuIGBXYXJuaW5nOiBcXGAke3BhcmFtcy5jb21tYW5kfVxcYCByZWZ1c2VkIHRoZSByZXF1ZXN0ICR7Y29zdH0gKGV4aXQgJHtmb3JtYXRFeGl0Q29kZShwYXJhbXMuZXhpdENvZGUpfSk6ICR7Zm9ybWF0UmVmdXNhbChwYXJhbXMuc3RhbmRhcmRFcnJvcil9ICR7Y29uc2VxdWVuY2V9YDtcbiAgICB9XG4gICAgY2FzZSAndGltZWQtb3V0Jzoge1xuICAgICAgcmV0dXJuIGBXYXJuaW5nOiBcXGAke3BhcmFtcy5jb21tYW5kfVxcYCBkaWQgbm90IGZpbmlzaCB3aXRoaW4gaXRzICR7Zm9ybWF0RHVyYXRpb24ocGFyYW1zLnRpbWVvdXRJbk1pbGxpc2Vjb25kcyl9IGJ1ZGdldCBhbmQgd2FzIGtpbGxlZCAke2Nvc3R9JHtwYXJhbXMuc2lnbmFsID09PSBudWxsID8gJycgOiBgICgke3BhcmFtcy5zaWduYWx9KWB9LCBoYXZpbmcgbGlzdGVkICR7U3RyaW5nKHBhcmFtcy5wYXJ0aWFsUm93Q291bnQpfSBwcm9jZXNzKGVzKSBieSB0aGVuIFx1MjAxNCBzbyBpdCB3YXMgd29ya2luZywgbm90IHJlZnVzaW5nLCBhbmQgdGhlIGJ1ZGdldCBpcyB3aGF0IHJhbiBvdXQuIFRoZSBwYXJ0aWFsIGxpc3RpbmcgaXMgZGlzY2FyZGVkIHJhdGhlciB0aGFuIHVzZWQ6IHRoZSBvd25lZCBzZXQgaXMgYSAqZGlmZmVyZW5jZSogYmV0d2VlbiB0d28gbGlzdGluZ3MsIGFuZCBhIHRydW5jYXRlZCBvbmUgb24gZWl0aGVyIHNpZGUgd291bGQgYm90aCBtaXNzIGEgcHJvY2VzcyB0aGlzIHJ1biBvd25zIGFuZCBjbGFpbSBvbmUgaXQgZG9lcyBub3QuICR7Y29uc2VxdWVuY2V9YDtcbiAgICB9XG4gICAgY2FzZSAnemVyby1yb3dzJzoge1xuICAgICAgcmV0dXJuIGBXYXJuaW5nOiBcXGAke3BhcmFtcy5jb21tYW5kfVxcYCBleGl0ZWQgY2xlYW5seSAke2Nvc3R9IGJ1dCBpdHMgb3V0cHV0IHBhcnNlZCB0byBubyBwcm9jZXNzZXMgYW5kIGNhcnJpZWQgbm8gbm8tbWF0Y2ggbm90aWNlIFx1MjAxNCBhIHdob2xlLWhvc3QgbGlzdGluZyBjYW5ub3QgYmUgZW1wdHkgb24gYSBydW5uaW5nIGhvc3QsIGFuZCBhIGZpbHRlcmVkIG9uZSBzYXlzIHNvIHdoZW4gbm90aGluZyBtYXRjaGVzLiBUcmVhdGluZyBpdCBhcyBhIGZhaWxlZCBxdWVyeS4gJHtjb25zZXF1ZW5jZX1gO1xuICAgIH1cbiAgICBkZWZhdWx0OiB7XG4gICAgICByZXR1cm4gYXNzZXJ0TmV2ZXIocGFyYW1zLm91dGNvbWUpO1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIFJlbmRlcnMgYSBtaWxsaXNlY29uZCBkdXJhdGlvbiBmb3IgYSBsb2cgbGluZS5cbiAqXG4gKiBAcGFyYW0gZHVyYXRpb25Jbk1pbGxpc2Vjb25kcyAtIFRoZSBkdXJhdGlvbi5cbiAqIEByZXR1cm5zIFdob2xlIG1pbGxpc2Vjb25kcyB1bmRlciBhIHNlY29uZCwgYW5kIHNlY29uZHMgdG8gb25lIGRlY2ltYWwgYWJvdmUgaXQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXREdXJhdGlvbihkdXJhdGlvbkluTWlsbGlzZWNvbmRzOiBudW1iZXIpOiBzdHJpbmcge1xuICByZXR1cm4gZHVyYXRpb25Jbk1pbGxpc2Vjb25kcyA8IE1JTExJU0VDT05EU19QRVJfU0VDT05EXG4gICAgPyBgJHtTdHJpbmcoZHVyYXRpb25Jbk1pbGxpc2Vjb25kcyl9bXNgXG4gICAgOiBgJHsoZHVyYXRpb25Jbk1pbGxpc2Vjb25kcyAvIE1JTExJU0VDT05EU19QRVJfU0VDT05EKS50b0ZpeGVkKDEpfXNgO1xufVxuXG4vKipcbiAqIFJlbmRlcnMgYSBjaGlsZCdzIGV4aXQgY29kZSwgaW4gdGhlIGJhc2UgYSByZWFkZXIgY2FuIGxvb2sgaXQgdXAgaW4uXG4gKlxuICogQHBhcmFtIGV4aXRDb2RlIC0gVGhlIGV4aXQgY29kZSwgb3IgYG51bGxgIHdoZW4gdGhlIGNoaWxkIHdhcyBraWxsZWQgYmVmb3JlIGV4aXRpbmcuXG4gKiBAcmV0dXJucyBUaGUgY29kZSBpbiBoZXggd2hlbiBpdCBpcyBhbiBgTlRTVEFUVVNgIGZhaWx1cmUsIGluIGRlY2ltYWwgb3RoZXJ3aXNlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZm9ybWF0RXhpdENvZGUoZXhpdENvZGU6IG51bGwgfCBudW1iZXIpOiBzdHJpbmcge1xuICBpZiAoZXhpdENvZGUgPT09IG51bGwpIHtcbiAgICByZXR1cm4gJ3Vua25vd24nO1xuICB9XG5cbiAgcmV0dXJuIGV4aXRDb2RlID49IE5UU1RBVFVTX0ZBSUxVUkVfRkxPT1IgPyBgMHgke2V4aXRDb2RlLnRvU3RyaW5nKEhFWEFERUNJTUFMX1JBRElYKS50b1VwcGVyQ2FzZSgpfWAgOiBTdHJpbmcoZXhpdENvZGUpO1xufVxuXG4vKipcbiAqIFJlbmRlcnMgd2hhdCB0aGUgY29tbWFuZCBzYWlkIHdoZW4gaXQgcmVmdXNlZCwgYXMgb25lIHNlbnRlbmNlLlxuICpcbiAqIGB0YXNrbGlzdGAgZW5kcyBpdHMgb3duIGBFUlJPUjogXHUyMDI2YCB3aXRoIGEgcGVyaW9kIGFuZCBhIGBcXHJcXHJcXG5gLCBzbyBxdW90aW5nIGl0XG4gKiB2ZXJiYXRpbSBhbmQgYWRkaW5nIHRoZSBzZW50ZW5jZSBicmVhayB0aGlzIGxpbmUgbmVlZHMgcHJvZHVjZWQgYHJlY29nbml6ZWQuLmBcbiAqIFx1MjAxNCB0aGUgdGVybWluYXRvciBpcyBzdXBwbGllZCBvbmx5IHdoZW4gdGhlIHRvb2wgZGlkIG5vdCBzdXBwbHkgb25lLlxuICpcbiAqIEBwYXJhbSBzdGFuZGFyZEVycm9yIC0gV2hhdGV2ZXIgdGhlIGNoaWxkIHdyb3RlIHRvIHN0ZGVyci5cbiAqIEByZXR1cm5zIFRoZSByZWZ1c2FsLCB0cmltbWVkLCBlbmRpbmcgaW4gZXhhY3RseSBvbmUgcGVyaW9kLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZm9ybWF0UmVmdXNhbChzdGFuZGFyZEVycm9yOiBzdHJpbmcpOiBzdHJpbmcge1xuICBjb25zdCByZWZ1c2FsID0gc3RhbmRhcmRFcnJvci50cmltKCk7XG5cbiAgcmV0dXJuIHJlZnVzYWwuZW5kc1dpdGgoJy4nKSA/IHJlZnVzYWwgOiBgJHtyZWZ1c2FsfS5gO1xufVxuXG4vKipcbiAqIERlY2lkZXMgaG93IHRoZSBsaXN0aW5nIGVuZGVkLCBmcm9tIHdoYXQgYGV4ZWNGaWxlYCByZXBvcnRlZC5cbiAqXG4gKiBUaGUgb3JkZXIgb2YgdGhlIGJyYW5jaGVzIGlzIHRoZSBvcmRlciBvZiBzcGVjaWZpY2l0eTogdGhlIHR3byBmYWlsdXJlcyBOb2RlXG4gKiBuYW1lcyBpdHNlbGYgKGBFTk9FTlRgLCB0aGUgYnVmZmVyIGNlaWxpbmcpIGFyZSByZWNvZ25pemVkIGJlZm9yZSB0aGUgb25lc1xuICogdGhhdCBoYXZlIHRvIGJlIGluZmVycmVkIGZyb20gdGhlIGNoaWxkJ3MgZXhpdCwgYW5kIGBjcmFzaGVkYCBpcyBsYXN0XG4gKiBiZWNhdXNlIGl0IGlzIGRlZmluZWQgYnkgdGhlICphYnNlbmNlKiBvZiBhbiBleHBsYW5hdGlvbiBvbiBzdGRlcnIuXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFdoYXQgYGV4ZWNGaWxlYCByZXBvcnRlZCwgYW5kIGhvdyBtYW55IHJvd3MgdGhlIG91dHB1dCBwYXJzZWQgdG8uXG4gKiBAcmV0dXJucyBUaGUgb3V0Y29tZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmVIb3N0UHJvY2Vzc1F1ZXJ5T3V0Y29tZShwYXJhbXM6IFJlc29sdmVIb3N0UHJvY2Vzc1F1ZXJ5T3V0Y29tZVBhcmFtcyk6IEhvc3RQcm9jZXNzUXVlcnlPdXRjb21lIHtcbiAgaWYgKCFwYXJhbXMuaGFzRmFpbGVkKSB7XG4gICAgLypcbiAgICAgKiBBIGhvc3QgYWx3YXlzIGhhcyBwcm9jZXNzZXMsIHNvIGEgd2hvbGUtaG9zdCBsaXN0aW5nIHRoYXQgcGFyc2VzIHRvIG5vdGhpbmcgaXMgYSBmYWlsZWQgcXVlcnkgaG93ZXZlciBpdFxuICAgICAqIGV4aXRlZC4gQSBmaWx0ZXJlZCBvbmUgbWF5IGxlZ2l0aW1hdGVseSBtYXRjaCBub3RoaW5nIFx1MjAxNCBidXQgb25seSB3aGVuIGl0IHNheXMgc287IHNpbGVuY2UgaXMgc3RpbGwgYSBmYWlsdXJlLlxuICAgICAqL1xuICAgIHJldHVybiBwYXJhbXMucm93Q291bnQgPT09IDAgJiYgIXBhcmFtcy5oYXNSZXBvcnRlZE5vTWF0Y2ggPyAnemVyby1yb3dzJyA6ICdsaXN0ZWQnO1xuICB9XG5cbiAgcmV0dXJuIHJlc29sdmVIb3N0UXVlcnlGYWlsdXJlKHBhcmFtcyk7XG59XG5cbi8qKlxuICogRGVjaWRlcyB3aGljaCB3YXkgYSBob3N0IHF1ZXJ5IHRoYXQgKipkaWQqKiBmYWlsIGZhaWxlZC5cbiAqXG4gKiBTcGxpdCBvdXQgb2Yge0BsaW5rIHJlc29sdmVIb3N0UHJvY2Vzc1F1ZXJ5T3V0Y29tZX0gc28gYSBzaWJsaW5nIHF1ZXJ5IHdob3NlXG4gKiBzdWNjZXNzIHJ1bGVzIGRpZmZlciBcdTIwMTQgdGhlIHBvcnQtb3duZXIgcXVlcnksIHdoZXJlIHplcm8gb3duZXJzIGlzIGFuIGFuc3dlciBcdTIwMTRcbiAqIGNhbiBzaGFyZSBvbmUgZGVmaW5pdGlvbiBvZiBlYWNoIGZhaWx1cmUgd2l0aG91dCBpbmhlcml0aW5nIGBsaXN0ZWRgIGFuZFxuICogYHplcm8tcm93c2AuXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFdoYXQgYGV4ZWNGaWxlYCByZXBvcnRlZCBmb3IgdGhlIGZhaWxlZCBjYWxsLlxuICogQHJldHVybnMgVGhlIGZhaWx1cmUgb3V0Y29tZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmVIb3N0UXVlcnlGYWlsdXJlKHBhcmFtczogUmVzb2x2ZUhvc3RRdWVyeUZhaWx1cmVQYXJhbXMpOiBIb3N0UXVlcnlGYWlsdXJlIHtcbiAgaWYgKHBhcmFtcy5lcnJvckNvZGUgPT09ICdFTk9FTlQnKSB7XG4gICAgcmV0dXJuICdub3QtZm91bmQnO1xuICB9XG5cbiAgaWYgKHBhcmFtcy5lcnJvckNvZGUgPT09ICdFUlJfQ0hJTERfUFJPQ0VTU19TVERJT19NQVhCVUZGRVInKSB7XG4gICAgcmV0dXJuICdvdXRwdXQtb3ZlcnJhbic7XG4gIH1cblxuICBpZiAocGFyYW1zLmlzS2lsbGVkKSB7XG4gICAgcmV0dXJuICd0aW1lZC1vdXQnO1xuICB9XG5cbiAgLy8gYHRhc2tsaXN0YCBhbmQgYHBzYCBib3RoIGV4cGxhaW4gYSByZWZ1c2FsIG9uIHN0ZGVyciwgc28gc2lsZW5jZSBtZWFucyB0aGUgY2hpbGQgbmV2ZXIgZ290IHRvIG9iamVjdC5cbiAgcmV0dXJuIHBhcmFtcy5zdGFuZGFyZEVycm9yLnRyaW0oKSA9PT0gJycgPyAnY3Jhc2hlZCcgOiAncmVmdXNlZCc7XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQW9EQSx5QkFBNEI7QUFVNUIsTUFBTSx5QkFBeUI7QUFLL0IsTUFBTSxvQkFBb0I7QUFLMUIsTUFBTSwwQkFBMEI7QUFtSHpCLFNBQVMsNkJBQTZCLFFBQWdFO0FBQzNHLFFBQU0sT0FBTyxTQUFTLGVBQWUsT0FBTyxxQkFBcUIsQ0FBQztBQUNsRSxRQUFNLGNBQWMsT0FBTyxlQUFlO0FBRTFDLFVBQVEsT0FBTyxTQUFTO0FBQUEsSUFDdEIsS0FBSyxXQUFXO0FBQ2QsYUFBTyxjQUFjLE9BQU8sT0FBTyxXQUFXLElBQUksb0NBQW9DLGVBQWUsT0FBTyxRQUFRLENBQUMsd0JBQXdCLE9BQU8sT0FBTyxlQUFlLENBQUMsNkxBQXdMLFdBQVc7QUFBQSxJQUNoWDtBQUFBLElBQ0EsS0FBSyxVQUFVO0FBQ2IsYUFBTztBQUFBLElBQ1Q7QUFBQSxJQUNBLEtBQUssYUFBYTtBQUNoQixhQUFPLGNBQWMsT0FBTyxPQUFPLDhCQUE4QixJQUFJLDJDQUEyQyxXQUFXO0FBQUEsSUFDN0g7QUFBQSxJQUNBLEtBQUssa0JBQWtCO0FBQ3JCLGFBQU8sY0FBYyxPQUFPLE9BQU8sMkJBQTJCLElBQUkscUZBQXFGLFdBQVc7QUFBQSxJQUNwSztBQUFBLElBQ0EsS0FBSyxXQUFXO0FBQ2QsYUFBTyxjQUFjLE9BQU8sT0FBTywwQkFBMEIsSUFBSSxVQUFVLGVBQWUsT0FBTyxRQUFRLENBQUMsTUFBTSxjQUFjLE9BQU8sYUFBYSxDQUFDLElBQUksV0FBVztBQUFBLElBQ3BLO0FBQUEsSUFDQSxLQUFLLGFBQWE7QUFDaEIsYUFBTyxjQUFjLE9BQU8sT0FBTyxnQ0FBZ0MsZUFBZSxPQUFPLHFCQUFxQixDQUFDLDBCQUEwQixJQUFJLEdBQUcsT0FBTyxXQUFXLE9BQU8sS0FBSyxLQUFLLE9BQU8sTUFBTSxHQUFHLG1CQUFtQixPQUFPLE9BQU8sZUFBZSxDQUFDLCtTQUEwUyxXQUFXO0FBQUEsSUFDM2lCO0FBQUEsSUFDQSxLQUFLLGFBQWE7QUFDaEIsYUFBTyxjQUFjLE9BQU8sT0FBTyxxQkFBcUIsSUFBSSx3TkFBbU4sV0FBVztBQUFBLElBQzVSO0FBQUEsSUFDQSxTQUFTO0FBQ1AsaUJBQU8sZ0NBQVksT0FBTyxPQUFPO0FBQUEsSUFDbkM7QUFBQSxFQUNGO0FBQ0Y7QUFRTyxTQUFTLGVBQWUsd0JBQXdDO0FBQ3JFLFNBQU8seUJBQXlCLDBCQUM1QixHQUFHLE9BQU8sc0JBQXNCLENBQUMsT0FDakMsSUFBSSx5QkFBeUIseUJBQXlCLFFBQVEsQ0FBQyxDQUFDO0FBQ3RFO0FBUU8sU0FBUyxlQUFlLFVBQWlDO0FBQzlELE1BQUksYUFBYSxNQUFNO0FBQ3JCLFdBQU87QUFBQSxFQUNUO0FBRUEsU0FBTyxZQUFZLHlCQUF5QixLQUFLLFNBQVMsU0FBUyxpQkFBaUIsRUFBRSxZQUFZLENBQUMsS0FBSyxPQUFPLFFBQVE7QUFDekg7QUFZTyxTQUFTLGNBQWMsZUFBK0I7QUFDM0QsUUFBTSxVQUFVLGNBQWMsS0FBSztBQUVuQyxTQUFPLFFBQVEsU0FBUyxHQUFHLElBQUksVUFBVSxHQUFHLE9BQU87QUFDckQ7QUFhTyxTQUFTLCtCQUErQixRQUF1RTtBQUNwSCxNQUFJLENBQUMsT0FBTyxXQUFXO0FBS3JCLFdBQU8sT0FBTyxhQUFhLEtBQUssQ0FBQyxPQUFPLHFCQUFxQixjQUFjO0FBQUEsRUFDN0U7QUFFQSxTQUFPLHdCQUF3QixNQUFNO0FBQ3ZDO0FBYU8sU0FBUyx3QkFBd0IsUUFBeUQ7QUFDL0YsTUFBSSxPQUFPLGNBQWMsVUFBVTtBQUNqQyxXQUFPO0FBQUEsRUFDVDtBQUVBLE1BQUksT0FBTyxjQUFjLHFDQUFxQztBQUM1RCxXQUFPO0FBQUEsRUFDVDtBQUVBLE1BQUksT0FBTyxVQUFVO0FBQ25CLFdBQU87QUFBQSxFQUNUO0FBR0EsU0FBTyxPQUFPLGNBQWMsS0FBSyxNQUFNLEtBQUssWUFBWTtBQUMxRDsiLAogICJuYW1lcyI6IFtdCn0K
@@ -0,0 +1,196 @@
1
+ /**
2
+ * @file
3
+ *
4
+ * Pure classification of the host process listing — deciding, from how
5
+ * `tasklist` / `ps` ended, *which* way it failed, and saying so in one line.
6
+ *
7
+ * The listing is what names the emulator backend a run owns, and therefore the
8
+ * only PID teardown can escalate to (**L56**). It is best-effort by design: a
9
+ * listing that cannot be produced yields no PIDs rather than failing the run.
10
+ * What it must never be is **unexplained**, and for three weeks it was:
11
+ *
12
+ * ```text
13
+ * Warning: could not list host processes (`tasklist`): Command failed: tasklist /FO CSV /NH
14
+ *
15
+ * Warning: `tasklist` listed no processes.
16
+ * ```
17
+ *
18
+ * Two defects in four lines. The pair is *contradictory* — the first says the
19
+ * command failed, the second says it ran and found nothing — and they were
20
+ * emitted together for a single failure, because a failed call resolves `''`
21
+ * and an empty string parses to zero rows. `zero-rows` exists to catch a
22
+ * listing that succeeded and yet returned nothing, which on a real host can
23
+ * only be a failed query; it is not a second opinion on a call that already
24
+ * reported an error.
25
+ *
26
+ * And the surviving diagnostic is `error.message` alone, which for `execFile`
27
+ * is `Command failed: <cmd>\n<stderr>` — so the log carried the command back
28
+ * to the reader and threw away everything that identifies the failure:
29
+ * `error.code`, `error.killed`, `error.signal`, and how long the call took.
30
+ * Measured 2026-09-23 on this host, that discarded evidence is decisive:
31
+ *
32
+ * - `tasklist` **always** writes `ERROR: <reason>` to stderr when it objects —
33
+ * a bad filter, an unreachable host — and exits 1. So a non-zero exit with
34
+ * **empty** stderr is not `tasklist` refusing; it is the host killing the
35
+ * child, and `crashed` says so.
36
+ * - The exact spawn the harness makes succeeds 39 times out of 39 from an idle
37
+ * Node process (0.6-4.3s, 26 KB, ~530 rows, against a 30s budget and an 8 MB
38
+ * ceiling). So "the spawn is wrong" — a missing shell, a PATH the child did
39
+ * not inherit, an undersized buffer — is ruled out: each has its **own** message
40
+ * (`spawn tasklist ENOENT`, `stdout maxBuffer length exceeded`), and none of
41
+ * them is the one observed.
42
+ * - Under an emulator boot the same call inflates to ~9x its idle cost, which
43
+ * is the contention `HOST_PROCESS_QUERY_TIMEOUT_IN_MILLISECONDS` is sized
44
+ * for and the failure the old line could not distinguish from a crash.
45
+ *
46
+ * This is the same fault `avd-probe-verdict.ts` was written for — a probe that
47
+ * discarded its error, leaving "never answered" indistinguishable from "the
48
+ * answer is no" — and it is fixed the same way: classify, name the
49
+ * consequence, and keep the classification pure so it is unit-testable while
50
+ * the `execFile` glue stays in the integration-only caller.
51
+ */
52
+ /**
53
+ * Parameters for {@link buildHostProcessQueryMessage}.
54
+ */
55
+ export interface BuildHostProcessQueryMessageParams {
56
+ /**
57
+ The command that was run, for the reader to try by hand — e.g. `tasklist /FO CSV /NH`.
58
+ */
59
+ readonly command: string;
60
+ /**
61
+ What the failure costs the caller, closing the line. Defaults to the teardown consequence, which is what the harness's own listing loses; the wedge probe states what *it* loses instead.
62
+ */
63
+ readonly consequence?: string | undefined;
64
+ /**
65
+ How long the call took before it ended, in milliseconds.
66
+ */
67
+ readonly elapsedInMilliseconds: number;
68
+ /**
69
+ The child's exit code, when it exited rather than failing to start or being killed.
70
+ */
71
+ readonly exitCode: null | number;
72
+ /**
73
+ The verdict from {@link resolveHostProcessQueryOutcome}.
74
+ */
75
+ readonly outcome: HostProcessQueryOutcome;
76
+ /**
77
+ How many processes the output parsed to — the *partial* listing on a failure, which is the evidence that the command was working when it died.
78
+ */
79
+ readonly partialRowCount: number;
80
+ /**
81
+ The signal the child was killed with, when it was killed.
82
+ */
83
+ readonly signal: null | string;
84
+ /**
85
+ Whatever the child wrote to stderr — quoted for `refused`, and the emptiness that identifies `crashed`.
86
+ */
87
+ readonly standardError: string;
88
+ /**
89
+ The budget the call was given, in milliseconds.
90
+ */
91
+ readonly timeoutInMilliseconds: number;
92
+ }
93
+ /**
94
+ * How the host process listing ended.
95
+ *
96
+ * `listed` is the only success. The rest are distinct failures on purpose: they
97
+ * need different fixes, and the line they used to share named none of them.
98
+ */
99
+ export type HostProcessQueryOutcome = 'listed' | 'zero-rows' | HostQueryFailure;
100
+ /**
101
+ * The ways a host query can fail, shared by every query that classifies its ending.
102
+ */
103
+ export type HostQueryFailure = 'crashed' | 'not-found' | 'output-overran' | 'refused' | 'timed-out';
104
+ /**
105
+ * Parameters for {@link resolveHostProcessQueryOutcome}.
106
+ */
107
+ export interface ResolveHostProcessQueryOutcomeParams {
108
+ /**
109
+ `execFile`'s `error.code`: the numeric exit code, or a string like `ENOENT` when the child never ran.
110
+ */
111
+ readonly errorCode: null | number | string;
112
+ /**
113
+ Whether `execFile` reported an error at all.
114
+ */
115
+ readonly hasFailed: boolean;
116
+ /**
117
+ Whether a **filtered** query affirmatively reported that nothing matched (`checkIsNoMatchReported`) — the one way an empty answer is an answer.
118
+ */
119
+ readonly hasReportedNoMatch: boolean;
120
+ /**
121
+ `execFile`'s `error.killed`: whether the budget expired and the child was killed.
122
+ */
123
+ readonly isKilled: boolean;
124
+ /**
125
+ How many processes the output parsed to.
126
+ */
127
+ readonly rowCount: number;
128
+ /**
129
+ Whatever the child wrote to stderr.
130
+ */
131
+ readonly standardError: string;
132
+ }
133
+ /**
134
+ * Parameters for {@link resolveHostQueryFailure}.
135
+ */
136
+ export type ResolveHostQueryFailureParams = Pick<ResolveHostProcessQueryOutcomeParams, 'errorCode' | 'isKilled' | 'standardError'>;
137
+ /**
138
+ * Builds the single line the listing logs for an outcome.
139
+ *
140
+ * One line, never two: the contradictory pair in this file's header is the
141
+ * defect this replaces. `listed` has nothing to report, so it returns
142
+ * `undefined` rather than a cheerful line on the hot path.
143
+ *
144
+ * @param params - The outcome plus the command, the budget and what the child left behind.
145
+ * @returns The warning to log, or `undefined` when the listing succeeded.
146
+ */
147
+ export declare function buildHostProcessQueryMessage(params: BuildHostProcessQueryMessageParams): string | undefined;
148
+ /**
149
+ * Renders a millisecond duration for a log line.
150
+ *
151
+ * @param durationInMilliseconds - The duration.
152
+ * @returns Whole milliseconds under a second, and seconds to one decimal above it.
153
+ */
154
+ export declare function formatDuration(durationInMilliseconds: number): string;
155
+ /**
156
+ * Renders a child's exit code, in the base a reader can look it up in.
157
+ *
158
+ * @param exitCode - The exit code, or `null` when the child was killed before exiting.
159
+ * @returns The code in hex when it is an `NTSTATUS` failure, in decimal otherwise.
160
+ */
161
+ export declare function formatExitCode(exitCode: null | number): string;
162
+ /**
163
+ * Renders what the command said when it refused, as one sentence.
164
+ *
165
+ * `tasklist` ends its own `ERROR: …` with a period and a `\r\r\n`, so quoting it
166
+ * verbatim and adding the sentence break this line needs produced `recognized..`
167
+ * — the terminator is supplied only when the tool did not supply one.
168
+ *
169
+ * @param standardError - Whatever the child wrote to stderr.
170
+ * @returns The refusal, trimmed, ending in exactly one period.
171
+ */
172
+ export declare function formatRefusal(standardError: string): string;
173
+ /**
174
+ * Decides how the listing ended, from what `execFile` reported.
175
+ *
176
+ * The order of the branches is the order of specificity: the two failures Node
177
+ * names itself (`ENOENT`, the buffer ceiling) are recognized before the ones
178
+ * that have to be inferred from the child's exit, and `crashed` is last
179
+ * because it is defined by the *absence* of an explanation on stderr.
180
+ *
181
+ * @param params - What `execFile` reported, and how many rows the output parsed to.
182
+ * @returns The outcome.
183
+ */
184
+ export declare function resolveHostProcessQueryOutcome(params: ResolveHostProcessQueryOutcomeParams): HostProcessQueryOutcome;
185
+ /**
186
+ * Decides which way a host query that **did** fail failed.
187
+ *
188
+ * Split out of {@link resolveHostProcessQueryOutcome} so a sibling query whose
189
+ * success rules differ — the port-owner query, where zero owners is an answer —
190
+ * can share one definition of each failure without inheriting `listed` and
191
+ * `zero-rows`.
192
+ *
193
+ * @param params - What `execFile` reported for the failed call.
194
+ * @returns The failure outcome.
195
+ */
196
+ export declare function resolveHostQueryFailure(params: ResolveHostQueryFailureParams): HostQueryFailure;
@@ -27,6 +27,8 @@ __export(index_exports, {
27
27
  DEFAULT_EVAL_CAP_IN_MILLISECONDS: () => import_eval_cap.DEFAULT_EVAL_CAP_IN_MILLISECONDS,
28
28
  DEFAULT_MINIMUM_KEYBOARD_HEIGHT_IN_PIXELS: () => import_soft_keyboard_geometry.DEFAULT_MINIMUM_KEYBOARD_HEIGHT_IN_PIXELS,
29
29
  DEFAULT_OBSIDIAN_VERSION_SPECS: () => import_version_matrix.DEFAULT_OBSIDIAN_VERSION_SPECS,
30
+ DEFAULT_STATUS_BAR_EDGE_MARGIN_IN_PIXELS: () => import_paint_out_status_bar.DEFAULT_STATUS_BAR_EDGE_MARGIN_IN_PIXELS,
31
+ DEFAULT_STATUS_BAR_SAMPLE_INSET_IN_PIXELS: () => import_paint_out_status_bar.DEFAULT_STATUS_BAR_SAMPLE_INSET_IN_PIXELS,
30
32
  DesktopCdpTransport: () => import_transport_desktop_cdp.DesktopCdpTransport,
31
33
  DesktopOnlyPluginSkipError: () => import_desktop_only_plugin_skip_error.DesktopOnlyPluginSkipError,
32
34
  DeviceSettingNamespace: () => import_device_settings_command.DeviceSettingNamespace,
@@ -49,8 +51,10 @@ __export(index_exports, {
49
51
  buildDeviceSettingsCommandArguments: () => import_device_settings_command.buildDeviceSettingsCommandArguments,
50
52
  buildLabelSvg: () => import_label_screenshot.buildLabelSvg,
51
53
  buildSoftKeyboardDiagnosticMessage: () => import_soft_keyboard_geometry.buildSoftKeyboardDiagnosticMessage,
54
+ buildStatusBarBandFailureMessage: () => import_paint_out_status_bar.buildStatusBarBandFailureMessage,
52
55
  captureDeviceScreenshot: () => import_device_screenshot.captureDeviceScreenshot,
53
56
  captureObsidianScreenshot: () => import_capture_obsidian_screenshot.captureObsidianScreenshot,
57
+ checkIsInputMethodShown: () => import_soft_keyboard_geometry.checkIsInputMethodShown,
54
58
  checkIsMobileTransport: () => import_transport_options.checkIsMobileTransport,
55
59
  checkIsSoftKeyboardUp: () => import_soft_keyboard_geometry.checkIsSoftKeyboardUp,
56
60
  computeFitToCanvas: () => import_fit_screenshot.computeFitToCanvas,
@@ -70,6 +74,7 @@ __export(index_exports, {
70
74
  labelScreenshot: () => import_label_screenshot.labelScreenshot,
71
75
  measureLabelCaption: () => import_label_screenshot.measureLabelCaption,
72
76
  openObsidianSettingsTab: () => import_open_obsidian_settings_tab.openObsidianSettingsTab,
77
+ paintOutStatusBar: () => import_paint_out_status_bar.paintOutStatusBar,
73
78
  parseInputMethodState: () => import_soft_keyboard_geometry.parseInputMethodState,
74
79
  pollInObsidian: () => import_poll_in_obsidian.pollInObsidian,
75
80
  raiseSoftKeyboard: () => import_soft_keyboard.raiseSoftKeyboard,
@@ -85,6 +90,7 @@ __export(index_exports, {
85
90
  resolveInstallerCompatibility: () => import_installer_compatibility.resolveInstallerCompatibility,
86
91
  resolveMissingInjectedPlugins: () => import_demo_vault_populate.resolveMissingInjectedPlugins,
87
92
  resolveSoftKeyboardTapPoints: () => import_soft_keyboard_geometry.resolveSoftKeyboardTapPoints,
93
+ resolveStatusBarBand: () => import_paint_out_status_bar.resolveStatusBarBand,
88
94
  restoreAppConfig: () => import_app_config.restoreAppConfig,
89
95
  runAdbBinary: () => import_adb.runAdbBinary,
90
96
  runAdbText: () => import_adb.runAdbText,
@@ -137,6 +143,7 @@ var import_obsidian_metadata = require("./obsidian-metadata.cjs");
137
143
  var import_obsidian_version = require("./obsidian-version.cjs");
138
144
  var import_open_obsidian_settings_tab = require("./open-obsidian-settings-tab.cjs");
139
145
  var import_owned_instance_exited_error = require("./owned-instance-exited-error.cjs");
146
+ var import_paint_out_status_bar = require("./paint-out-status-bar.cjs");
140
147
  var import_poll_in_obsidian = require("./poll-in-obsidian.cjs");
141
148
  var import_renderer_failed_to_initialize_error = require("./renderer-failed-to-initialize-error.cjs");
142
149
  var import_resolve_emulator_device_id = require("./resolve-emulator-device-id.cjs");
@@ -163,6 +170,8 @@ var import_version_matrix = require("./version-matrix.cjs");
163
170
  DEFAULT_EVAL_CAP_IN_MILLISECONDS,
164
171
  DEFAULT_MINIMUM_KEYBOARD_HEIGHT_IN_PIXELS,
165
172
  DEFAULT_OBSIDIAN_VERSION_SPECS,
173
+ DEFAULT_STATUS_BAR_EDGE_MARGIN_IN_PIXELS,
174
+ DEFAULT_STATUS_BAR_SAMPLE_INSET_IN_PIXELS,
166
175
  DesktopCdpTransport,
167
176
  DesktopOnlyPluginSkipError,
168
177
  DeviceSettingNamespace,
@@ -185,8 +194,10 @@ var import_version_matrix = require("./version-matrix.cjs");
185
194
  buildDeviceSettingsCommandArguments,
186
195
  buildLabelSvg,
187
196
  buildSoftKeyboardDiagnosticMessage,
197
+ buildStatusBarBandFailureMessage,
188
198
  captureDeviceScreenshot,
189
199
  captureObsidianScreenshot,
200
+ checkIsInputMethodShown,
190
201
  checkIsMobileTransport,
191
202
  checkIsSoftKeyboardUp,
192
203
  computeFitToCanvas,
@@ -206,6 +217,7 @@ var import_version_matrix = require("./version-matrix.cjs");
206
217
  labelScreenshot,
207
218
  measureLabelCaption,
208
219
  openObsidianSettingsTab,
220
+ paintOutStatusBar,
209
221
  parseInputMethodState,
210
222
  pollInObsidian,
211
223
  raiseSoftKeyboard,
@@ -221,6 +233,7 @@ var import_version_matrix = require("./version-matrix.cjs");
221
233
  resolveInstallerCompatibility,
222
234
  resolveMissingInjectedPlugins,
223
235
  resolveSoftKeyboardTapPoints,
236
+ resolveStatusBarBand,
224
237
  restoreAppConfig,
225
238
  runAdbBinary,
226
239
  runAdbText,
@@ -237,4 +250,4 @@ var import_version_matrix = require("./version-matrix.cjs");
237
250
  withSoftKeyboardEnabled,
238
251
  writeDeviceSetting
239
252
  });
240
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2luZGV4LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogQ29udGFpbnMgdGhlIGVudHJ5IHBvaW50IGZvciB0aGUgaW50ZWdyYXRpb24gdGVzdGluZyBtb2R1bGUuXG4gKi9cblxuZXhwb3J0IHR5cGUgeyBSdW5BZGJQYXJhbXMgfSBmcm9tICcuL2FkYi5janMnO1xuZXhwb3J0IHtcbiAgcnVuQWRiQmluYXJ5LFxuICBydW5BZGJUZXh0LFxuICBydW5BZGJUZXh0V2l0aG91dERldmljZVxufSBmcm9tICcuL2FkYi5janMnO1xuZXhwb3J0IHR5cGUge1xuICBBcHBDb25maWdSZXN0b3JlLFxuICBHZXRBcHBDb25maWdQYXJhbXMsXG4gIFNldEFwcENvbmZpZ1BhcmFtcyxcbiAgV2l0aEFwcENvbmZpZ1BhcmFtc1xufSBmcm9tICcuL2FwcC1jb25maWcuY2pzJztcbmV4cG9ydCB7XG4gIGdldEFwcENvbmZpZyxcbiAgcmVzdG9yZUFwcENvbmZpZyxcbiAgc2V0QXBwQ29uZmlnLFxuICB3aXRoQXBwQ29uZmlnXG59IGZyb20gJy4vYXBwLWNvbmZpZy5janMnO1xuZXhwb3J0IHR5cGUge1xuICBBc2FyRmFsbGJhY2ssXG4gIEFzYXJGYWxsYmFja1RpZXIsXG4gIFJlc29sdmVBc2FyRmFsbGJhY2tQYXJhbXNcbn0gZnJvbSAnLi9hc2FyLWZhbGxiYWNrLWRldGVjdGlvbi5janMnO1xuZXhwb3J0IHsgcmVzb2x2ZUFzYXJGYWxsYmFjayB9IGZyb20gJy4vYXNhci1mYWxsYmFjay1kZXRlY3Rpb24uY2pzJztcbmV4cG9ydCB0eXBlIHsgQ2FwdHVyZU9ic2lkaWFuU2NyZWVuc2hvdE9wdGlvbnMgfSBmcm9tICcuL2NhcHR1cmUtb2JzaWRpYW4tc2NyZWVuc2hvdC5janMnO1xuZXhwb3J0IHsgY2FwdHVyZU9ic2lkaWFuU2NyZWVuc2hvdCB9IGZyb20gJy4vY2FwdHVyZS1vYnNpZGlhbi1zY3JlZW5zaG90LmNqcyc7XG5leHBvcnQgdHlwZSB7XG4gIENhcHR1cmVTY3JlZW5zaG90UGFyYW1zLFxuICBQbmdEaW1lbnNpb25zXG59IGZyb20gJy4vY2FwdHVyZS1zY3JlZW5zaG90LmNqcyc7XG5leHBvcnQge1xuICBidWlsZERldmljZU1ldHJpY3NPdmVycmlkZSxcbiAgZGVjb2RlQmFzZTY0UG5nLFxuICBpc1BuZyxcbiAgcmVhZFBuZ0RpbWVuc2lvbnNcbn0gZnJvbSAnLi9jYXB0dXJlLXNjcmVlbnNob3QuY2pzJztcbmV4cG9ydCB0eXBlIHsgQ2RwQ29tbWFuZFRpbWVvdXRFcnJvckNvbnN0cnVjdG9yUGFyYW1zIH0gZnJvbSAnLi9jZHAtY29tbWFuZC10aW1lb3V0LWVycm9yLmNqcyc7XG5leHBvcnQgeyBDZHBDb21tYW5kVGltZW91dEVycm9yIH0gZnJvbSAnLi9jZHAtY29tbWFuZC10aW1lb3V0LWVycm9yLmNqcyc7XG5leHBvcnQgdHlwZSB7IENvbmZpZ0RpcmVjdG9yeUZhbGxiYWNrRXJyb3JDb25zdHJ1Y3RvclBhcmFtcyB9IGZyb20gJy4vY29uZmlnLWRpcmVjdG9yeS1mYWxsYmFjay1lcnJvci5janMnO1xuZXhwb3J0IHsgQ29uZmlnRGlyZWN0b3J5RmFsbGJhY2tFcnJvciB9IGZyb20gJy4vY29uZmlnLWRpcmVjdG9yeS1mYWxsYmFjay1lcnJvci5janMnO1xuZXhwb3J0IHtcbiAgYXNzZXJ0VmFsaWRDb25maWdEaXJlY3RvcnksXG4gIERFRkFVTFRfQ09ORklHX0RJUkVDVE9SWVxufSBmcm9tICcuL2NvbmZpZy1kaXJlY3RvcnkuY2pzJztcbmV4cG9ydCB0eXBlIHtcbiAgQ2RwQ29ubmVjdGlvbixcbiAgQ29ubmVjdFRvQ2RwT3B0aW9uc1xufSBmcm9tICcuL2Nvbm5lY3QtdG8tY2RwLmNqcyc7XG5leHBvcnQgeyBjb25uZWN0VG9DZHAgfSBmcm9tICcuL2Nvbm5lY3QtdG8tY2RwLmNqcyc7XG5leHBvcnQgdHlwZSB7XG4gIENvbnRleHRBcmd1bWVudHMsXG4gIENvbnRleHRPZlxufSBmcm9tICcuL2NvbnRleHQtaWQuY2pzJztcbmV4cG9ydCB7IENvbnRleHRJZCB9IGZyb20gJy4vY29udGV4dC1pZC5janMnO1xuZXhwb3J0IHR5cGUge1xuICBTZXR1cEVycm9yUmVzb2x2ZXIsXG4gIFRyYW5zcG9ydE9wdGlvbnNSZXNvbHZlcixcbiAgVmF1bHRQYXRoUmVzb2x2ZXJcbn0gZnJvbSAnLi9jb250ZXh0LXByb3ZpZGVyLmNqcyc7XG5leHBvcnQge1xuICBzZXRTZXR1cEVycm9yUmVzb2x2ZXIsXG4gIHNldFRyYW5zcG9ydE9wdGlvbnNSZXNvbHZlcixcbiAgc2V0VmF1bHRQYXRoUmVzb2x2ZXJcbn0gZnJvbSAnLi9jb250ZXh0LXByb3ZpZGVyLmNqcyc7XG5leHBvcnQgdHlwZSB7XG4gIEJvb3RzdHJhcERlbW9WYXVsdFBsdWdpbnNQYXJhbXMsXG4gIEJvb3RzdHJhcERlbW9WYXVsdFBsdWdpbnNSZXN1bHQsXG4gIEJ1aWxkRGVtb1ZhdWx0UG9wdWxhdGVBc3luY1BhcmFtcyxcbiAgSW5zdGFsbGVkUGx1Z2luSW5mb1xufSBmcm9tICcuL2RlbW8tdmF1bHQtYm9vdHN0cmFwLmNqcyc7XG5leHBvcnQge1xuICBib290c3RyYXBEZW1vVmF1bHRQbHVnaW5zLFxuICBidWlsZERlbW9WYXVsdFBvcHVsYXRlQXN5bmNcbn0gZnJvbSAnLi9kZW1vLXZhdWx0LWJvb3RzdHJhcC5janMnO1xuZXhwb3J0IHR5cGUge1xuICBCdWlsZERlbW9WYXVsdFBvcHVsYXRlUGFyYW1zLFxuICBJbmplY3RQbHVnaW5QYXJhbXMsXG4gIFJlc29sdmVNaXNzaW5nSW5qZWN0ZWRQbHVnaW5zUGFyYW1zXG59IGZyb20gJy4vZGVtby12YXVsdC1wb3B1bGF0ZS5janMnO1xuZXhwb3J0IHtcbiAgYnVpbGREZW1vVmF1bHRQb3B1bGF0ZSxcbiAgcmVzb2x2ZU1pc3NpbmdJbmplY3RlZFBsdWdpbnNcbn0gZnJvbSAnLi9kZW1vLXZhdWx0LXBvcHVsYXRlLmNqcyc7XG5leHBvcnQgdHlwZSB7IFJlYWREZW1vVmF1bHRUcmVlUGFyYW1zIH0gZnJvbSAnLi9kZW1vLXZhdWx0LXRyZWUuY2pzJztcbmV4cG9ydCB7IHJlYWREZW1vVmF1bHRUcmVlIH0gZnJvbSAnLi9kZW1vLXZhdWx0LXRyZWUuY2pzJztcbmV4cG9ydCB7IERlc2t0b3BPbmx5UGx1Z2luU2tpcEVycm9yIH0gZnJvbSAnLi9kZXNrdG9wLW9ubHktcGx1Z2luLXNraXAtZXJyb3IuY2pzJztcbmV4cG9ydCB0eXBlIHsgQ2FwdHVyZURldmljZVNjcmVlbnNob3RQYXJhbXMgfSBmcm9tICcuL2RldmljZS1zY3JlZW5zaG90LmNqcyc7XG5leHBvcnQgeyBjYXB0dXJlRGV2aWNlU2NyZWVuc2hvdCB9IGZyb20gJy4vZGV2aWNlLXNjcmVlbnNob3QuY2pzJztcbmV4cG9ydCB0eXBlIHtcbiAgRGV2aWNlU2V0dGluZ1Jlc3RvcmUsXG4gIERldmljZVNldHRpbmdSZXN0b3JlRGVsZXRlLFxuICBEZXZpY2VTZXR0aW5nUmVzdG9yZVdyaXRlXG59IGZyb20gJy4vZGV2aWNlLXNldHRpbmctcmVzdG9yZS5janMnO1xuZXhwb3J0IHtcbiAgRGV2aWNlU2V0dGluZ1Jlc3RvcmVLaW5kLFxuICByZXNvbHZlRGV2aWNlU2V0dGluZ1Jlc3RvcmVcbn0gZnJvbSAnLi9kZXZpY2Utc2V0dGluZy1yZXN0b3JlLmNqcyc7XG5leHBvcnQgdHlwZSB7IEJ1aWxkRGV2aWNlU2V0dGluZ3NDb21tYW5kQXJndW1lbnRzUGFyYW1zIH0gZnJvbSAnLi9kZXZpY2Utc2V0dGluZ3MtY29tbWFuZC5janMnO1xuZXhwb3J0IHtcbiAgYnVpbGREZXZpY2VTZXR0aW5nc0NvbW1hbmRBcmd1bWVudHMsXG4gIERldmljZVNldHRpbmdOYW1lc3BhY2UsXG4gIERldmljZVNldHRpbmdWZXJiXG59IGZyb20gJy4vZGV2aWNlLXNldHRpbmdzLWNvbW1hbmQuY2pzJztcbmV4cG9ydCB0eXBlIHtcbiAgRGV2aWNlU2V0dGluZ1BhcmFtcyxcbiAgV2l0aFNvZnRLZXlib2FyZEVuYWJsZWRQYXJhbXMsXG4gIFdyaXRlRGV2aWNlU2V0dGluZ1BhcmFtc1xufSBmcm9tICcuL2RldmljZS1zZXR0aW5ncy5janMnO1xuZXhwb3J0IHtcbiAgZGVsZXRlRGV2aWNlU2V0dGluZyxcbiAgcmVhZERldmljZVNldHRpbmcsXG4gIHdpdGhTb2Z0S2V5Ym9hcmRFbmFibGVkLFxuICB3cml0ZURldmljZVNldHRpbmdcbn0gZnJvbSAnLi9kZXZpY2Utc2V0dGluZ3MuY2pzJztcbmV4cG9ydCB0eXBlIHtcbiAgRWxlY3Ryb25Db21wYXRpYmlsaXR5LFxuICBFbGVjdHJvbkNvbXBhdGliaWxpdHlUaWVyLFxuICBSZXNvbHZlRWxlY3Ryb25Db21wYXRpYmlsaXR5UGFyYW1zXG59IGZyb20gJy4vZWxlY3Ryb24tY29tcGF0aWJpbGl0eS5janMnO1xuZXhwb3J0IHsgcmVzb2x2ZUVsZWN0cm9uQ29tcGF0aWJpbGl0eSB9IGZyb20gJy4vZWxlY3Ryb24tY29tcGF0aWJpbGl0eS5janMnO1xuZXhwb3J0IHR5cGUge1xuICBFbXVsYXRvckRldmljZUNhbmRpZGF0ZSxcbiAgU2VsZWN0RW11bGF0b3JEZXZpY2VJZFBhcmFtc1xufSBmcm9tICcuL2VtdWxhdG9yLWRldmljZS1pZC5janMnO1xuZXhwb3J0IHsgc2VsZWN0RW11bGF0b3JEZXZpY2VJZCB9IGZyb20gJy4vZW11bGF0b3ItZGV2aWNlLWlkLmNqcyc7XG5leHBvcnQgdHlwZSB7IEV2YWxDYXBFeGNlZWRlZEVycm9yQ29uc3RydWN0b3JQYXJhbXMgfSBmcm9tICcuL2V2YWwtY2FwLWV4Y2VlZGVkLWVycm9yLmNqcyc7XG5leHBvcnQge1xuICBFdmFsQ2FwRXhjZWVkZWRFcnJvcixcbiAgaXNTY3JpcHRUaW1lb3V0RXJyb3Jcbn0gZnJvbSAnLi9ldmFsLWNhcC1leGNlZWRlZC1lcnJvci5janMnO1xuZXhwb3J0IHsgREVGQVVMVF9FVkFMX0NBUF9JTl9NSUxMSVNFQ09ORFMgfSBmcm9tICcuL2V2YWwtY2FwLmNqcyc7XG5leHBvcnQgdHlwZSB7XG4gIENsaWNrRWxlbWVudFBhcmFtcyxcbiAgQ2xpY2tNb3VzZVBhcmFtcyxcbiAgQ29tbW9uQXJndW1lbnRzLFxuICBDcmVhdGVOb3RlUGFyYW1zLFxuICBFdmFsSW5PYnNpZGlhblBhcmFtcyxcbiAgR2VuZXJpY09iamVjdCxcbiAgSG92ZXJFbGVtZW50UGFyYW1zLFxuICBMaWIsXG4gIE1vdXNlQnV0dG9uLFxuICBNb3ZlTW91c2VQYXJhbXMsXG4gIE9wZW5TZXR0aW5nc1RhYlBhcmFtcyxcbiAgUHJlc3NLZXlQYXJhbXMsXG4gIFR5cGVJbnRvRWRpdG9yUGFyYW1zLFxuICBVbmhvdmVyRWxlbWVudFBhcmFtcyxcbiAgV2FpdFVudGlsUGFyYW1zXG59IGZyb20gJy4vZXZhbC1pbi1vYnNpZGlhbi5janMnO1xuZXhwb3J0IHsgZXZhbEluT2JzaWRpYW4gfSBmcm9tICcuL2V2YWwtaW4tb2JzaWRpYW4uY2pzJztcbmV4cG9ydCB0eXBlIHtcbiAgQ29tcHV0ZUZpdFRvQ2FudmFzUGFyYW1zLFxuICBGaXRTY3JlZW5zaG90VG9DYW52YXNPcHRpb25zLFxuICBGaXRUb0NhbnZhc0dlb21ldHJ5XG59IGZyb20gJy4vZml0LXNjcmVlbnNob3QuY2pzJztcbmV4cG9ydCB7XG4gIGNvbXB1dGVGaXRUb0NhbnZhcyxcbiAgZml0U2NyZWVuc2hvdFRvQ2FudmFzXG59IGZyb20gJy4vZml0LXNjcmVlbnNob3QuY2pzJztcbmV4cG9ydCB0eXBlIHsgSGlkZVZhdWx0TmFtZU9wdGlvbnMgfSBmcm9tICcuL2hpZGUtdmF1bHQtbmFtZS5janMnO1xuZXhwb3J0IHsgaGlkZVZhdWx0TmFtZSB9IGZyb20gJy4vaGlkZS12YXVsdC1uYW1lLmNqcyc7XG5leHBvcnQgdHlwZSB7IEluY29tcGF0aWJsZUluc3RhbGxlclZlcnNpb25FcnJvckNvbnN0cnVjdG9yUGFyYW1zIH0gZnJvbSAnLi9pbmNvbXBhdGlibGUtaW5zdGFsbGVyLXZlcnNpb24tZXJyb3IuY2pzJztcbmV4cG9ydCB7IEluY29tcGF0aWJsZUluc3RhbGxlclZlcnNpb25FcnJvciB9IGZyb20gJy4vaW5jb21wYXRpYmxlLWluc3RhbGxlci12ZXJzaW9uLWVycm9yLmNqcyc7XG5leHBvcnQgdHlwZSB7XG4gIEluc3RhbGxlckNvbXBhdGliaWxpdHksXG4gIEluc3RhbGxlckNvbXBhdGliaWxpdHlUaWVyLFxuICBSZXNvbHZlSW5zdGFsbGVyQ29tcGF0aWJpbGl0eVBhcmFtc1xufSBmcm9tICcuL2luc3RhbGxlci1jb21wYXRpYmlsaXR5LmNqcyc7XG5leHBvcnQgeyByZXNvbHZlSW5zdGFsbGVyQ29tcGF0aWJpbGl0eSB9IGZyb20gJy4vaW5zdGFsbGVyLWNvbXBhdGliaWxpdHkuY2pzJztcbmV4cG9ydCB0eXBlIHsgSW50ZWdyYXRpb25TZXR1cEZhaWxlZEVycm9yQ29uc3RydWN0b3JQYXJhbXMgfSBmcm9tICcuL2ludGVncmF0aW9uLXNldHVwLWZhaWxlZC1lcnJvci5janMnO1xuZXhwb3J0IHsgSW50ZWdyYXRpb25TZXR1cEZhaWxlZEVycm9yIH0gZnJvbSAnLi9pbnRlZ3JhdGlvbi1zZXR1cC1mYWlsZWQtZXJyb3IuY2pzJztcbmV4cG9ydCB0eXBlIHtcbiAgQ29tcHV0ZUxhYmVsQmFuZFBhcmFtcyxcbiAgTGFiZWxCYW5kR2VvbWV0cnksXG4gIExhYmVsQ2FwdGlvbk1lYXN1cmVtZW50LFxuICBMYWJlbFNjcmVlbnNob3RPcHRpb25zLFxuICBNZWFzdXJlTGFiZWxDYXB0aW9uUGFyYW1zXG59IGZyb20gJy4vbGFiZWwtc2NyZWVuc2hvdC5janMnO1xuZXhwb3J0IHtcbiAgYnVpbGRMYWJlbFN2ZyxcbiAgY29tcHV0ZUxhYmVsQmFuZCxcbiAgZXNjYXBlU3ZnVGV4dCxcbiAgbGFiZWxTY3JlZW5zaG90LFxuICBtZWFzdXJlTGFiZWxDYXB0aW9uXG59IGZyb20gJy4vbGFiZWwtc2NyZWVuc2hvdC5janMnO1xuZXhwb3J0IHR5cGUgeyBMaWJSZXNvbHZlciB9IGZyb20gJy4vbGliLXJlZ2lzdHJ5LmNqcyc7XG5leHBvcnQgeyByZWdpc3RlckxpYlJlc29sdmVyIH0gZnJvbSAnLi9saWItcmVnaXN0cnkuY2pzJztcbmV4cG9ydCB0eXBlIHtcbiAgT2JzaWRpYW5SdW50aW1lVmVyc2lvbnMsXG4gIE9ic2lkaWFuVmVyc2lvbkNoYW5nZWxvZ1VybHMsXG4gIE9ic2lkaWFuVmVyc2lvbkRvd25sb2FkcyxcbiAgT2JzaWRpYW5WZXJzaW9uTWV0YWRhdGFcbn0gZnJvbSAnLi9vYnNpZGlhbi1tZXRhZGF0YS5janMnO1xuZXhwb3J0IHsgZ2V0VmVyc2lvbk1ldGFkYXRhIH0gZnJvbSAnLi9vYnNpZGlhbi1tZXRhZGF0YS5janMnO1xuZXhwb3J0IHtcbiAgQ0FUQUxZU1RfTEFURVNULFxuICBQVUJMSUNfTEFURVNUXG59IGZyb20gJy4vb2JzaWRpYW4tdmVyc2lvbi5janMnO1xuZXhwb3J0IHR5cGUgeyBPcGVuT2JzaWRpYW5TZXR0aW5nc1RhYlBhcmFtcyB9IGZyb20gJy4vb3Blbi1vYnNpZGlhbi1zZXR0aW5ncy10YWIuY2pzJztcbmV4cG9ydCB7IG9wZW5PYnNpZGlhblNldHRpbmdzVGFiIH0gZnJvbSAnLi9vcGVuLW9ic2lkaWFuLXNldHRpbmdzLXRhYi5janMnO1xuZXhwb3J0IHR5cGUgeyBPd25lZEluc3RhbmNlRXhpdGVkRXJyb3JDb25zdHJ1Y3RvclBhcmFtcyB9IGZyb20gJy4vb3duZWQtaW5zdGFuY2UtZXhpdGVkLWVycm9yLmNqcyc7XG5leHBvcnQgeyBPd25lZEluc3RhbmNlRXhpdGVkRXJyb3IgfSBmcm9tICcuL293bmVkLWluc3RhbmNlLWV4aXRlZC1lcnJvci5janMnO1xuZXhwb3J0IHR5cGUgeyBQb2xsSW5PYnNpZGlhblBhcmFtcyB9IGZyb20gJy4vcG9sbC1pbi1vYnNpZGlhbi5janMnO1xuZXhwb3J0IHsgcG9sbEluT2JzaWRpYW4gfSBmcm9tICcuL3BvbGwtaW4tb2JzaWRpYW4uY2pzJztcbmV4cG9ydCB7IFJlbmRlcmVyRmFpbGVkVG9Jbml0aWFsaXplRXJyb3IgfSBmcm9tICcuL3JlbmRlcmVyLWZhaWxlZC10by1pbml0aWFsaXplLWVycm9yLmNqcyc7XG5leHBvcnQgdHlwZSB7IFJlc29sdmVFbXVsYXRvckRldmljZUlkUGFyYW1zIH0gZnJvbSAnLi9yZXNvbHZlLWVtdWxhdG9yLWRldmljZS1pZC5janMnO1xuZXhwb3J0IHsgcmVzb2x2ZUVtdWxhdG9yRGV2aWNlSWQgfSBmcm9tICcuL3Jlc29sdmUtZW11bGF0b3ItZGV2aWNlLWlkLmNqcyc7XG5leHBvcnQgdHlwZSB7IFJ1bk9ic2lkaWFuVmVyc2lvbk1hdHJpeFBhcmFtcyB9IGZyb20gJy4vcnVuLXZlcnNpb24tbWF0cml4LmNqcyc7XG5leHBvcnQgeyBydW5PYnNpZGlhblZlcnNpb25NYXRyaXggfSBmcm9tICcuL3J1bi12ZXJzaW9uLW1hdHJpeC5janMnO1xuZXhwb3J0IHR5cGUgeyBTaWxlbnRBc2FyRmFsbGJhY2tFcnJvckNvbnN0cnVjdG9yUGFyYW1zIH0gZnJvbSAnLi9zaWxlbnQtYXNhci1mYWxsYmFjay1lcnJvci5janMnO1xuZXhwb3J0IHsgU2lsZW50QXNhckZhbGxiYWNrRXJyb3IgfSBmcm9tICcuL3NpbGVudC1hc2FyLWZhbGxiYWNrLWVycm9yLmNqcyc7XG5leHBvcnQgdHlwZSB7XG4gIEJ1aWxkU29mdEtleWJvYXJkRGlhZ25vc3RpY01lc3NhZ2VQYXJhbXMsXG4gIENoZWNrSXNTb2Z0S2V5Ym9hcmRVcFBhcmFtcyxcbiAgRWxlbWVudFJlY3QsXG4gIFJlc29sdmVTb2Z0S2V5Ym9hcmRUYXBQb2ludHNQYXJhbXMsXG4gIFNvZnRLZXlib2FyZFRhcFBvaW50LFxuICBTb2Z0S2V5Ym9hcmRWaWV3cG9ydFNuYXBzaG90XG59IGZyb20gJy4vc29mdC1rZXlib2FyZC1nZW9tZXRyeS5janMnO1xuZXhwb3J0IHtcbiAgYnVpbGRTb2Z0S2V5Ym9hcmREaWFnbm9zdGljTWVzc2FnZSxcbiAgY2hlY2tJc1NvZnRLZXlib2FyZFVwLFxuICBERUZBVUxUX01JTklNVU1fS0VZQk9BUkRfSEVJR0hUX0lOX1BJWEVMUyxcbiAgcGFyc2VJbnB1dE1ldGhvZFN0YXRlLFxuICByZXNvbHZlU29mdEtleWJvYXJkVGFwUG9pbnRzXG59IGZyb20gJy4vc29mdC1rZXlib2FyZC1nZW9tZXRyeS5janMnO1xuZXhwb3J0IHR5cGUge1xuICBSYWlzZVNvZnRLZXlib2FyZFBhcmFtcyxcbiAgVGFwRGV2aWNlUGFyYW1zXG59IGZyb20gJy4vc29mdC1rZXlib2FyZC5janMnO1xuZXhwb3J0IHtcbiAgcmFpc2VTb2Z0S2V5Ym9hcmQsXG4gIHRhcERldmljZVxufSBmcm9tICcuL3NvZnQta2V5Ym9hcmQuY2pzJztcbmV4cG9ydCB0eXBlIHsgU3RhbGVCdWlsZEVycm9yQ29uc3RydWN0b3JQYXJhbXMgfSBmcm9tICcuL3N0YWxlLWJ1aWxkLWVycm9yLmNqcyc7XG5leHBvcnQgeyBTdGFsZUJ1aWxkRXJyb3IgfSBmcm9tICcuL3N0YWxlLWJ1aWxkLWVycm9yLmNqcyc7XG5leHBvcnQgdHlwZSB7XG4gIFBvcHVsYXRlRmlsZUNvbnRlbnQsXG4gIFBvcHVsYXRlRmlsZXNQYXJhbXMsXG4gIFRlbXBvcmFyeVZhdWx0Q29uc3RydWN0b3JPcHRpb25zXG59IGZyb20gJy4vdGVtcG9yYXJ5LXZhdWx0LmNqcyc7XG5leHBvcnQgeyBUZW1wb3JhcnlWYXVsdCB9IGZyb20gJy4vdGVtcG9yYXJ5LXZhdWx0LmNqcyc7XG5leHBvcnQgdHlwZSB7XG4gIEFwcGl1bVNlc3Npb25JbmZvLFxuICBBcHBpdW1UcmFuc3BvcnRDb25maWdcbn0gZnJvbSAnLi90cmFuc3BvcnQtYXBwaXVtLmNqcyc7XG5leHBvcnQgeyBBcHBpdW1UcmFuc3BvcnQgfSBmcm9tICcuL3RyYW5zcG9ydC1hcHBpdW0uY2pzJztcbmV4cG9ydCB0eXBlIHtcbiAgRGVza3RvcENkcFRyYW5zcG9ydENvbmZpZyxcbiAgT3duZWRJbnN0YW5jZUFzYXIsXG4gIE93bmVkSW5zdGFuY2VDb25maWcsXG4gIE93bmVkSW5zdGFuY2VFbmRwb2ludFxufSBmcm9tICcuL3RyYW5zcG9ydC1kZXNrdG9wLWNkcC5janMnO1xuZXhwb3J0IHsgRGVza3RvcENkcFRyYW5zcG9ydCB9IGZyb20gJy4vdHJhbnNwb3J0LWRlc2t0b3AtY2RwLmNqcyc7XG5leHBvcnQgeyBjcmVhdGVUcmFuc3BvcnRGcm9tT3B0aW9ucyB9IGZyb20gJy4vdHJhbnNwb3J0LWZhY3RvcnkuY2pzJztcbmV4cG9ydCB0eXBlIHtcbiAgT2JzaWRpYW5BbmRyb2lkQXBwaXVtVHJhbnNwb3J0T3B0aW9ucyxcbiAgT2JzaWRpYW5DZHBUcmFuc3BvcnRPcHRpb25zLFxuICBPYnNpZGlhblRyYW5zcG9ydE9wdGlvbnNcbn0gZnJvbSAnLi90cmFuc3BvcnQtb3B0aW9ucy5janMnO1xuZXhwb3J0IHsgY2hlY2tJc01vYmlsZVRyYW5zcG9ydCB9IGZyb20gJy4vdHJhbnNwb3J0LW9wdGlvbnMuY2pzJztcbmV4cG9ydCB0eXBlIHtcbiAgQ29uc29sZUNhcHR1cmVIYW5kbGUsXG4gIE9ic2lkaWFuVHJhbnNwb3J0LFxuICBUcmFuc3BvcnRFdmFsT3B0aW9uc1xufSBmcm9tICcuL3RyYW5zcG9ydC5janMnO1xuZXhwb3J0IHtcbiAgcmVnaXN0ZXJWYXVsdCxcbiAgdW5yZWdpc3RlclZhdWx0XG59IGZyb20gJy4vdmF1bHQtcmVnaXN0cnkuY2pzJztcbmV4cG9ydCB0eXBlIHsgT2JzaWRpYW5WZXJzaW9uTWF0cml4RW50cnkgfSBmcm9tICcuL3ZlcnNpb24tbWF0cml4LmNqcyc7XG5leHBvcnQgeyBERUZBVUxUX09CU0lESUFOX1ZFUlNJT05fU1BFQ1MgfSBmcm9tICcuL3ZlcnNpb24tbWF0cml4LmNqcyc7XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBT0EsaUJBSU87QUFPUCx3QkFLTztBQU1QLHFDQUFvQztBQUVwQyx5Q0FBMEM7QUFLMUMsZ0NBS087QUFFUCx1Q0FBdUM7QUFFdkMsNkNBQTZDO0FBQzdDLDhCQUdPO0FBS1AsNEJBQTZCO0FBSzdCLHdCQUEwQjtBQU0xQiw4QkFJTztBQU9QLGtDQUdPO0FBTVAsaUNBR087QUFFUCw2QkFBa0M7QUFDbEMsNENBQTJDO0FBRTNDLCtCQUF3QztBQU14QyxvQ0FHTztBQUVQLHFDQUlPO0FBTVAsNkJBS087QUFNUCxvQ0FBNkM7QUFLN0MsZ0NBQXVDO0FBRXZDLHFDQUdPO0FBQ1Asc0JBQWlEO0FBa0JqRCw4QkFBK0I7QUFNL0IsNEJBR087QUFFUCw2QkFBOEI7QUFFOUIsa0RBQWtEO0FBTWxELHFDQUE4QztBQUU5Qyw0Q0FBNEM7QUFRNUMsOEJBTU87QUFFUCwwQkFBb0M7QUFPcEMsK0JBQW1DO0FBQ25DLDhCQUdPO0FBRVAsd0NBQXdDO0FBRXhDLHlDQUF5QztBQUV6Qyw4QkFBK0I7QUFDL0IsaURBQWdEO0FBRWhELHdDQUF3QztBQUV4QyxnQ0FBeUM7QUFFekMsd0NBQXdDO0FBU3hDLG9DQU1PO0FBS1AsMkJBR087QUFFUCwrQkFBZ0M7QUFNaEMsNkJBQStCO0FBSy9CLDhCQUFnQztBQU9oQyxtQ0FBb0M7QUFDcEMsK0JBQTJDO0FBTTNDLCtCQUF1QztBQU12Qyw0QkFHTztBQUVQLDRCQUErQzsiLAogICJuYW1lcyI6IFtdCn0K
253
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2luZGV4LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogQ29udGFpbnMgdGhlIGVudHJ5IHBvaW50IGZvciB0aGUgaW50ZWdyYXRpb24gdGVzdGluZyBtb2R1bGUuXG4gKi9cblxuZXhwb3J0IHR5cGUgeyBSdW5BZGJQYXJhbXMgfSBmcm9tICcuL2FkYi5janMnO1xuZXhwb3J0IHtcbiAgcnVuQWRiQmluYXJ5LFxuICBydW5BZGJUZXh0LFxuICBydW5BZGJUZXh0V2l0aG91dERldmljZVxufSBmcm9tICcuL2FkYi5janMnO1xuZXhwb3J0IHR5cGUge1xuICBBcHBDb25maWdSZXN0b3JlLFxuICBHZXRBcHBDb25maWdQYXJhbXMsXG4gIFNldEFwcENvbmZpZ1BhcmFtcyxcbiAgV2l0aEFwcENvbmZpZ1BhcmFtc1xufSBmcm9tICcuL2FwcC1jb25maWcuY2pzJztcbmV4cG9ydCB7XG4gIGdldEFwcENvbmZpZyxcbiAgcmVzdG9yZUFwcENvbmZpZyxcbiAgc2V0QXBwQ29uZmlnLFxuICB3aXRoQXBwQ29uZmlnXG59IGZyb20gJy4vYXBwLWNvbmZpZy5janMnO1xuZXhwb3J0IHR5cGUge1xuICBBc2FyRmFsbGJhY2ssXG4gIEFzYXJGYWxsYmFja1RpZXIsXG4gIFJlc29sdmVBc2FyRmFsbGJhY2tQYXJhbXNcbn0gZnJvbSAnLi9hc2FyLWZhbGxiYWNrLWRldGVjdGlvbi5janMnO1xuZXhwb3J0IHsgcmVzb2x2ZUFzYXJGYWxsYmFjayB9IGZyb20gJy4vYXNhci1mYWxsYmFjay1kZXRlY3Rpb24uY2pzJztcbmV4cG9ydCB0eXBlIHsgQ2FwdHVyZU9ic2lkaWFuU2NyZWVuc2hvdE9wdGlvbnMgfSBmcm9tICcuL2NhcHR1cmUtb2JzaWRpYW4tc2NyZWVuc2hvdC5janMnO1xuZXhwb3J0IHsgY2FwdHVyZU9ic2lkaWFuU2NyZWVuc2hvdCB9IGZyb20gJy4vY2FwdHVyZS1vYnNpZGlhbi1zY3JlZW5zaG90LmNqcyc7XG5leHBvcnQgdHlwZSB7XG4gIENhcHR1cmVTY3JlZW5zaG90UGFyYW1zLFxuICBQbmdEaW1lbnNpb25zXG59IGZyb20gJy4vY2FwdHVyZS1zY3JlZW5zaG90LmNqcyc7XG5leHBvcnQge1xuICBidWlsZERldmljZU1ldHJpY3NPdmVycmlkZSxcbiAgZGVjb2RlQmFzZTY0UG5nLFxuICBpc1BuZyxcbiAgcmVhZFBuZ0RpbWVuc2lvbnNcbn0gZnJvbSAnLi9jYXB0dXJlLXNjcmVlbnNob3QuY2pzJztcbmV4cG9ydCB0eXBlIHsgQ2RwQ29tbWFuZFRpbWVvdXRFcnJvckNvbnN0cnVjdG9yUGFyYW1zIH0gZnJvbSAnLi9jZHAtY29tbWFuZC10aW1lb3V0LWVycm9yLmNqcyc7XG5leHBvcnQgeyBDZHBDb21tYW5kVGltZW91dEVycm9yIH0gZnJvbSAnLi9jZHAtY29tbWFuZC10aW1lb3V0LWVycm9yLmNqcyc7XG5leHBvcnQgdHlwZSB7IENvbmZpZ0RpcmVjdG9yeUZhbGxiYWNrRXJyb3JDb25zdHJ1Y3RvclBhcmFtcyB9IGZyb20gJy4vY29uZmlnLWRpcmVjdG9yeS1mYWxsYmFjay1lcnJvci5janMnO1xuZXhwb3J0IHsgQ29uZmlnRGlyZWN0b3J5RmFsbGJhY2tFcnJvciB9IGZyb20gJy4vY29uZmlnLWRpcmVjdG9yeS1mYWxsYmFjay1lcnJvci5janMnO1xuZXhwb3J0IHtcbiAgYXNzZXJ0VmFsaWRDb25maWdEaXJlY3RvcnksXG4gIERFRkFVTFRfQ09ORklHX0RJUkVDVE9SWVxufSBmcm9tICcuL2NvbmZpZy1kaXJlY3RvcnkuY2pzJztcbmV4cG9ydCB0eXBlIHtcbiAgQ2RwQ29ubmVjdGlvbixcbiAgQ29ubmVjdFRvQ2RwT3B0aW9uc1xufSBmcm9tICcuL2Nvbm5lY3QtdG8tY2RwLmNqcyc7XG5leHBvcnQgeyBjb25uZWN0VG9DZHAgfSBmcm9tICcuL2Nvbm5lY3QtdG8tY2RwLmNqcyc7XG5leHBvcnQgdHlwZSB7XG4gIENvbnRleHRBcmd1bWVudHMsXG4gIENvbnRleHRPZlxufSBmcm9tICcuL2NvbnRleHQtaWQuY2pzJztcbmV4cG9ydCB7IENvbnRleHRJZCB9IGZyb20gJy4vY29udGV4dC1pZC5janMnO1xuZXhwb3J0IHR5cGUge1xuICBTZXR1cEVycm9yUmVzb2x2ZXIsXG4gIFRyYW5zcG9ydE9wdGlvbnNSZXNvbHZlcixcbiAgVmF1bHRQYXRoUmVzb2x2ZXJcbn0gZnJvbSAnLi9jb250ZXh0LXByb3ZpZGVyLmNqcyc7XG5leHBvcnQge1xuICBzZXRTZXR1cEVycm9yUmVzb2x2ZXIsXG4gIHNldFRyYW5zcG9ydE9wdGlvbnNSZXNvbHZlcixcbiAgc2V0VmF1bHRQYXRoUmVzb2x2ZXJcbn0gZnJvbSAnLi9jb250ZXh0LXByb3ZpZGVyLmNqcyc7XG5leHBvcnQgdHlwZSB7XG4gIEJvb3RzdHJhcERlbW9WYXVsdFBsdWdpbnNQYXJhbXMsXG4gIEJvb3RzdHJhcERlbW9WYXVsdFBsdWdpbnNSZXN1bHQsXG4gIEJ1aWxkRGVtb1ZhdWx0UG9wdWxhdGVBc3luY1BhcmFtcyxcbiAgSW5zdGFsbGVkUGx1Z2luSW5mb1xufSBmcm9tICcuL2RlbW8tdmF1bHQtYm9vdHN0cmFwLmNqcyc7XG5leHBvcnQge1xuICBib290c3RyYXBEZW1vVmF1bHRQbHVnaW5zLFxuICBidWlsZERlbW9WYXVsdFBvcHVsYXRlQXN5bmNcbn0gZnJvbSAnLi9kZW1vLXZhdWx0LWJvb3RzdHJhcC5janMnO1xuZXhwb3J0IHR5cGUge1xuICBCdWlsZERlbW9WYXVsdFBvcHVsYXRlUGFyYW1zLFxuICBJbmplY3RQbHVnaW5QYXJhbXMsXG4gIFJlc29sdmVNaXNzaW5nSW5qZWN0ZWRQbHVnaW5zUGFyYW1zXG59IGZyb20gJy4vZGVtby12YXVsdC1wb3B1bGF0ZS5janMnO1xuZXhwb3J0IHtcbiAgYnVpbGREZW1vVmF1bHRQb3B1bGF0ZSxcbiAgcmVzb2x2ZU1pc3NpbmdJbmplY3RlZFBsdWdpbnNcbn0gZnJvbSAnLi9kZW1vLXZhdWx0LXBvcHVsYXRlLmNqcyc7XG5leHBvcnQgdHlwZSB7IFJlYWREZW1vVmF1bHRUcmVlUGFyYW1zIH0gZnJvbSAnLi9kZW1vLXZhdWx0LXRyZWUuY2pzJztcbmV4cG9ydCB7IHJlYWREZW1vVmF1bHRUcmVlIH0gZnJvbSAnLi9kZW1vLXZhdWx0LXRyZWUuY2pzJztcbmV4cG9ydCB7IERlc2t0b3BPbmx5UGx1Z2luU2tpcEVycm9yIH0gZnJvbSAnLi9kZXNrdG9wLW9ubHktcGx1Z2luLXNraXAtZXJyb3IuY2pzJztcbmV4cG9ydCB0eXBlIHsgQ2FwdHVyZURldmljZVNjcmVlbnNob3RQYXJhbXMgfSBmcm9tICcuL2RldmljZS1zY3JlZW5zaG90LmNqcyc7XG5leHBvcnQgeyBjYXB0dXJlRGV2aWNlU2NyZWVuc2hvdCB9IGZyb20gJy4vZGV2aWNlLXNjcmVlbnNob3QuY2pzJztcbmV4cG9ydCB0eXBlIHtcbiAgRGV2aWNlU2V0dGluZ1Jlc3RvcmUsXG4gIERldmljZVNldHRpbmdSZXN0b3JlRGVsZXRlLFxuICBEZXZpY2VTZXR0aW5nUmVzdG9yZVdyaXRlXG59IGZyb20gJy4vZGV2aWNlLXNldHRpbmctcmVzdG9yZS5janMnO1xuZXhwb3J0IHtcbiAgRGV2aWNlU2V0dGluZ1Jlc3RvcmVLaW5kLFxuICByZXNvbHZlRGV2aWNlU2V0dGluZ1Jlc3RvcmVcbn0gZnJvbSAnLi9kZXZpY2Utc2V0dGluZy1yZXN0b3JlLmNqcyc7XG5leHBvcnQgdHlwZSB7IEJ1aWxkRGV2aWNlU2V0dGluZ3NDb21tYW5kQXJndW1lbnRzUGFyYW1zIH0gZnJvbSAnLi9kZXZpY2Utc2V0dGluZ3MtY29tbWFuZC5janMnO1xuZXhwb3J0IHtcbiAgYnVpbGREZXZpY2VTZXR0aW5nc0NvbW1hbmRBcmd1bWVudHMsXG4gIERldmljZVNldHRpbmdOYW1lc3BhY2UsXG4gIERldmljZVNldHRpbmdWZXJiXG59IGZyb20gJy4vZGV2aWNlLXNldHRpbmdzLWNvbW1hbmQuY2pzJztcbmV4cG9ydCB0eXBlIHtcbiAgRGV2aWNlU2V0dGluZ1BhcmFtcyxcbiAgV2l0aFNvZnRLZXlib2FyZEVuYWJsZWRQYXJhbXMsXG4gIFdyaXRlRGV2aWNlU2V0dGluZ1BhcmFtc1xufSBmcm9tICcuL2RldmljZS1zZXR0aW5ncy5janMnO1xuZXhwb3J0IHtcbiAgZGVsZXRlRGV2aWNlU2V0dGluZyxcbiAgcmVhZERldmljZVNldHRpbmcsXG4gIHdpdGhTb2Z0S2V5Ym9hcmRFbmFibGVkLFxuICB3cml0ZURldmljZVNldHRpbmdcbn0gZnJvbSAnLi9kZXZpY2Utc2V0dGluZ3MuY2pzJztcbmV4cG9ydCB0eXBlIHtcbiAgRWxlY3Ryb25Db21wYXRpYmlsaXR5LFxuICBFbGVjdHJvbkNvbXBhdGliaWxpdHlUaWVyLFxuICBSZXNvbHZlRWxlY3Ryb25Db21wYXRpYmlsaXR5UGFyYW1zXG59IGZyb20gJy4vZWxlY3Ryb24tY29tcGF0aWJpbGl0eS5janMnO1xuZXhwb3J0IHsgcmVzb2x2ZUVsZWN0cm9uQ29tcGF0aWJpbGl0eSB9IGZyb20gJy4vZWxlY3Ryb24tY29tcGF0aWJpbGl0eS5janMnO1xuZXhwb3J0IHR5cGUge1xuICBFbXVsYXRvckRldmljZUNhbmRpZGF0ZSxcbiAgU2VsZWN0RW11bGF0b3JEZXZpY2VJZFBhcmFtc1xufSBmcm9tICcuL2VtdWxhdG9yLWRldmljZS1pZC5janMnO1xuZXhwb3J0IHsgc2VsZWN0RW11bGF0b3JEZXZpY2VJZCB9IGZyb20gJy4vZW11bGF0b3ItZGV2aWNlLWlkLmNqcyc7XG5leHBvcnQgdHlwZSB7IEV2YWxDYXBFeGNlZWRlZEVycm9yQ29uc3RydWN0b3JQYXJhbXMgfSBmcm9tICcuL2V2YWwtY2FwLWV4Y2VlZGVkLWVycm9yLmNqcyc7XG5leHBvcnQge1xuICBFdmFsQ2FwRXhjZWVkZWRFcnJvcixcbiAgaXNTY3JpcHRUaW1lb3V0RXJyb3Jcbn0gZnJvbSAnLi9ldmFsLWNhcC1leGNlZWRlZC1lcnJvci5janMnO1xuZXhwb3J0IHsgREVGQVVMVF9FVkFMX0NBUF9JTl9NSUxMSVNFQ09ORFMgfSBmcm9tICcuL2V2YWwtY2FwLmNqcyc7XG5leHBvcnQgdHlwZSB7XG4gIENsaWNrRWxlbWVudFBhcmFtcyxcbiAgQ2xpY2tNb3VzZVBhcmFtcyxcbiAgQ29tbW9uQXJndW1lbnRzLFxuICBDcmVhdGVOb3RlUGFyYW1zLFxuICBFdmFsSW5PYnNpZGlhblBhcmFtcyxcbiAgR2VuZXJpY09iamVjdCxcbiAgSG92ZXJFbGVtZW50UGFyYW1zLFxuICBMaWIsXG4gIE1vdXNlQnV0dG9uLFxuICBNb3ZlTW91c2VQYXJhbXMsXG4gIE9wZW5TZXR0aW5nc1RhYlBhcmFtcyxcbiAgUHJlc3NLZXlQYXJhbXMsXG4gIFR5cGVJbnRvRWRpdG9yUGFyYW1zLFxuICBVbmhvdmVyRWxlbWVudFBhcmFtcyxcbiAgV2FpdFVudGlsUGFyYW1zXG59IGZyb20gJy4vZXZhbC1pbi1vYnNpZGlhbi5janMnO1xuZXhwb3J0IHsgZXZhbEluT2JzaWRpYW4gfSBmcm9tICcuL2V2YWwtaW4tb2JzaWRpYW4uY2pzJztcbmV4cG9ydCB0eXBlIHtcbiAgQ29tcHV0ZUZpdFRvQ2FudmFzUGFyYW1zLFxuICBGaXRTY3JlZW5zaG90VG9DYW52YXNPcHRpb25zLFxuICBGaXRUb0NhbnZhc0dlb21ldHJ5XG59IGZyb20gJy4vZml0LXNjcmVlbnNob3QuY2pzJztcbmV4cG9ydCB7XG4gIGNvbXB1dGVGaXRUb0NhbnZhcyxcbiAgZml0U2NyZWVuc2hvdFRvQ2FudmFzXG59IGZyb20gJy4vZml0LXNjcmVlbnNob3QuY2pzJztcbmV4cG9ydCB0eXBlIHsgSGlkZVZhdWx0TmFtZU9wdGlvbnMgfSBmcm9tICcuL2hpZGUtdmF1bHQtbmFtZS5janMnO1xuZXhwb3J0IHsgaGlkZVZhdWx0TmFtZSB9IGZyb20gJy4vaGlkZS12YXVsdC1uYW1lLmNqcyc7XG5leHBvcnQgdHlwZSB7IEluY29tcGF0aWJsZUluc3RhbGxlclZlcnNpb25FcnJvckNvbnN0cnVjdG9yUGFyYW1zIH0gZnJvbSAnLi9pbmNvbXBhdGlibGUtaW5zdGFsbGVyLXZlcnNpb24tZXJyb3IuY2pzJztcbmV4cG9ydCB7IEluY29tcGF0aWJsZUluc3RhbGxlclZlcnNpb25FcnJvciB9IGZyb20gJy4vaW5jb21wYXRpYmxlLWluc3RhbGxlci12ZXJzaW9uLWVycm9yLmNqcyc7XG5leHBvcnQgdHlwZSB7XG4gIEluc3RhbGxlckNvbXBhdGliaWxpdHksXG4gIEluc3RhbGxlckNvbXBhdGliaWxpdHlUaWVyLFxuICBSZXNvbHZlSW5zdGFsbGVyQ29tcGF0aWJpbGl0eVBhcmFtc1xufSBmcm9tICcuL2luc3RhbGxlci1jb21wYXRpYmlsaXR5LmNqcyc7XG5leHBvcnQgeyByZXNvbHZlSW5zdGFsbGVyQ29tcGF0aWJpbGl0eSB9IGZyb20gJy4vaW5zdGFsbGVyLWNvbXBhdGliaWxpdHkuY2pzJztcbmV4cG9ydCB0eXBlIHsgSW50ZWdyYXRpb25TZXR1cEZhaWxlZEVycm9yQ29uc3RydWN0b3JQYXJhbXMgfSBmcm9tICcuL2ludGVncmF0aW9uLXNldHVwLWZhaWxlZC1lcnJvci5janMnO1xuZXhwb3J0IHsgSW50ZWdyYXRpb25TZXR1cEZhaWxlZEVycm9yIH0gZnJvbSAnLi9pbnRlZ3JhdGlvbi1zZXR1cC1mYWlsZWQtZXJyb3IuY2pzJztcbmV4cG9ydCB0eXBlIHtcbiAgQ29tcHV0ZUxhYmVsQmFuZFBhcmFtcyxcbiAgTGFiZWxCYW5kR2VvbWV0cnksXG4gIExhYmVsQ2FwdGlvbk1lYXN1cmVtZW50LFxuICBMYWJlbFNjcmVlbnNob3RPcHRpb25zLFxuICBNZWFzdXJlTGFiZWxDYXB0aW9uUGFyYW1zXG59IGZyb20gJy4vbGFiZWwtc2NyZWVuc2hvdC5janMnO1xuZXhwb3J0IHtcbiAgYnVpbGRMYWJlbFN2ZyxcbiAgY29tcHV0ZUxhYmVsQmFuZCxcbiAgZXNjYXBlU3ZnVGV4dCxcbiAgbGFiZWxTY3JlZW5zaG90LFxuICBtZWFzdXJlTGFiZWxDYXB0aW9uXG59IGZyb20gJy4vbGFiZWwtc2NyZWVuc2hvdC5janMnO1xuZXhwb3J0IHR5cGUgeyBMaWJSZXNvbHZlciB9IGZyb20gJy4vbGliLXJlZ2lzdHJ5LmNqcyc7XG5leHBvcnQgeyByZWdpc3RlckxpYlJlc29sdmVyIH0gZnJvbSAnLi9saWItcmVnaXN0cnkuY2pzJztcbmV4cG9ydCB0eXBlIHtcbiAgT2JzaWRpYW5SdW50aW1lVmVyc2lvbnMsXG4gIE9ic2lkaWFuVmVyc2lvbkNoYW5nZWxvZ1VybHMsXG4gIE9ic2lkaWFuVmVyc2lvbkRvd25sb2FkcyxcbiAgT2JzaWRpYW5WZXJzaW9uTWV0YWRhdGFcbn0gZnJvbSAnLi9vYnNpZGlhbi1tZXRhZGF0YS5janMnO1xuZXhwb3J0IHsgZ2V0VmVyc2lvbk1ldGFkYXRhIH0gZnJvbSAnLi9vYnNpZGlhbi1tZXRhZGF0YS5janMnO1xuZXhwb3J0IHtcbiAgQ0FUQUxZU1RfTEFURVNULFxuICBQVUJMSUNfTEFURVNUXG59IGZyb20gJy4vb2JzaWRpYW4tdmVyc2lvbi5janMnO1xuZXhwb3J0IHR5cGUgeyBPcGVuT2JzaWRpYW5TZXR0aW5nc1RhYlBhcmFtcyB9IGZyb20gJy4vb3Blbi1vYnNpZGlhbi1zZXR0aW5ncy10YWIuY2pzJztcbmV4cG9ydCB7IG9wZW5PYnNpZGlhblNldHRpbmdzVGFiIH0gZnJvbSAnLi9vcGVuLW9ic2lkaWFuLXNldHRpbmdzLXRhYi5janMnO1xuZXhwb3J0IHR5cGUgeyBPd25lZEluc3RhbmNlRXhpdGVkRXJyb3JDb25zdHJ1Y3RvclBhcmFtcyB9IGZyb20gJy4vb3duZWQtaW5zdGFuY2UtZXhpdGVkLWVycm9yLmNqcyc7XG5leHBvcnQgeyBPd25lZEluc3RhbmNlRXhpdGVkRXJyb3IgfSBmcm9tICcuL293bmVkLWluc3RhbmNlLWV4aXRlZC1lcnJvci5janMnO1xuZXhwb3J0IHR5cGUge1xuICBCdWlsZFN0YXR1c0JhckJhbmRGYWlsdXJlTWVzc2FnZVBhcmFtcyxcbiAgUGFpbnRPdXRTdGF0dXNCYXJPcHRpb25zLFxuICBSZXNvbHZlU3RhdHVzQmFyQmFuZFBhcmFtcyxcbiAgU3RhdHVzQmFyQmFuZENvbG9yLFxuICBTdGF0dXNCYXJCYW5kVmVyZGljdFxufSBmcm9tICcuL3BhaW50LW91dC1zdGF0dXMtYmFyLmNqcyc7XG5leHBvcnQge1xuICBidWlsZFN0YXR1c0JhckJhbmRGYWlsdXJlTWVzc2FnZSxcbiAgREVGQVVMVF9TVEFUVVNfQkFSX0VER0VfTUFSR0lOX0lOX1BJWEVMUyxcbiAgREVGQVVMVF9TVEFUVVNfQkFSX1NBTVBMRV9JTlNFVF9JTl9QSVhFTFMsXG4gIHBhaW50T3V0U3RhdHVzQmFyLFxuICByZXNvbHZlU3RhdHVzQmFyQmFuZFxufSBmcm9tICcuL3BhaW50LW91dC1zdGF0dXMtYmFyLmNqcyc7XG5leHBvcnQgdHlwZSB7IFBvbGxJbk9ic2lkaWFuUGFyYW1zIH0gZnJvbSAnLi9wb2xsLWluLW9ic2lkaWFuLmNqcyc7XG5leHBvcnQgeyBwb2xsSW5PYnNpZGlhbiB9IGZyb20gJy4vcG9sbC1pbi1vYnNpZGlhbi5janMnO1xuZXhwb3J0IHsgUmVuZGVyZXJGYWlsZWRUb0luaXRpYWxpemVFcnJvciB9IGZyb20gJy4vcmVuZGVyZXItZmFpbGVkLXRvLWluaXRpYWxpemUtZXJyb3IuY2pzJztcbmV4cG9ydCB0eXBlIHsgUmVzb2x2ZUVtdWxhdG9yRGV2aWNlSWRQYXJhbXMgfSBmcm9tICcuL3Jlc29sdmUtZW11bGF0b3ItZGV2aWNlLWlkLmNqcyc7XG5leHBvcnQgeyByZXNvbHZlRW11bGF0b3JEZXZpY2VJZCB9IGZyb20gJy4vcmVzb2x2ZS1lbXVsYXRvci1kZXZpY2UtaWQuY2pzJztcbmV4cG9ydCB0eXBlIHsgUnVuT2JzaWRpYW5WZXJzaW9uTWF0cml4UGFyYW1zIH0gZnJvbSAnLi9ydW4tdmVyc2lvbi1tYXRyaXguY2pzJztcbmV4cG9ydCB7IHJ1bk9ic2lkaWFuVmVyc2lvbk1hdHJpeCB9IGZyb20gJy4vcnVuLXZlcnNpb24tbWF0cml4LmNqcyc7XG5leHBvcnQgdHlwZSB7IFNpbGVudEFzYXJGYWxsYmFja0Vycm9yQ29uc3RydWN0b3JQYXJhbXMgfSBmcm9tICcuL3NpbGVudC1hc2FyLWZhbGxiYWNrLWVycm9yLmNqcyc7XG5leHBvcnQgeyBTaWxlbnRBc2FyRmFsbGJhY2tFcnJvciB9IGZyb20gJy4vc2lsZW50LWFzYXItZmFsbGJhY2stZXJyb3IuY2pzJztcbmV4cG9ydCB0eXBlIHtcbiAgQnVpbGRTb2Z0S2V5Ym9hcmREaWFnbm9zdGljTWVzc2FnZVBhcmFtcyxcbiAgQ2hlY2tJc1NvZnRLZXlib2FyZFVwUGFyYW1zLFxuICBFbGVtZW50UmVjdCxcbiAgUmVzb2x2ZVNvZnRLZXlib2FyZFRhcFBvaW50c1BhcmFtcyxcbiAgU29mdEtleWJvYXJkVGFwUG9pbnQsXG4gIFNvZnRLZXlib2FyZFZpZXdwb3J0U25hcHNob3Rcbn0gZnJvbSAnLi9zb2Z0LWtleWJvYXJkLWdlb21ldHJ5LmNqcyc7XG5leHBvcnQge1xuICBidWlsZFNvZnRLZXlib2FyZERpYWdub3N0aWNNZXNzYWdlLFxuICBjaGVja0lzSW5wdXRNZXRob2RTaG93bixcbiAgY2hlY2tJc1NvZnRLZXlib2FyZFVwLFxuICBERUZBVUxUX01JTklNVU1fS0VZQk9BUkRfSEVJR0hUX0lOX1BJWEVMUyxcbiAgcGFyc2VJbnB1dE1ldGhvZFN0YXRlLFxuICByZXNvbHZlU29mdEtleWJvYXJkVGFwUG9pbnRzXG59IGZyb20gJy4vc29mdC1rZXlib2FyZC1nZW9tZXRyeS5janMnO1xuZXhwb3J0IHR5cGUge1xuICBSYWlzZVNvZnRLZXlib2FyZFBhcmFtcyxcbiAgVGFwRGV2aWNlUGFyYW1zXG59IGZyb20gJy4vc29mdC1rZXlib2FyZC5janMnO1xuZXhwb3J0IHtcbiAgcmFpc2VTb2Z0S2V5Ym9hcmQsXG4gIHRhcERldmljZVxufSBmcm9tICcuL3NvZnQta2V5Ym9hcmQuY2pzJztcbmV4cG9ydCB0eXBlIHsgU3RhbGVCdWlsZEVycm9yQ29uc3RydWN0b3JQYXJhbXMgfSBmcm9tICcuL3N0YWxlLWJ1aWxkLWVycm9yLmNqcyc7XG5leHBvcnQgeyBTdGFsZUJ1aWxkRXJyb3IgfSBmcm9tICcuL3N0YWxlLWJ1aWxkLWVycm9yLmNqcyc7XG5leHBvcnQgdHlwZSB7XG4gIFBvcHVsYXRlRmlsZUNvbnRlbnQsXG4gIFBvcHVsYXRlRmlsZXNQYXJhbXMsXG4gIFRlbXBvcmFyeVZhdWx0Q29uc3RydWN0b3JPcHRpb25zXG59IGZyb20gJy4vdGVtcG9yYXJ5LXZhdWx0LmNqcyc7XG5leHBvcnQgeyBUZW1wb3JhcnlWYXVsdCB9IGZyb20gJy4vdGVtcG9yYXJ5LXZhdWx0LmNqcyc7XG5leHBvcnQgdHlwZSB7XG4gIEFwcGl1bVNlc3Npb25JbmZvLFxuICBBcHBpdW1UcmFuc3BvcnRDb25maWdcbn0gZnJvbSAnLi90cmFuc3BvcnQtYXBwaXVtLmNqcyc7XG5leHBvcnQgeyBBcHBpdW1UcmFuc3BvcnQgfSBmcm9tICcuL3RyYW5zcG9ydC1hcHBpdW0uY2pzJztcbmV4cG9ydCB0eXBlIHtcbiAgRGVza3RvcENkcFRyYW5zcG9ydENvbmZpZyxcbiAgT3duZWRJbnN0YW5jZUFzYXIsXG4gIE93bmVkSW5zdGFuY2VDb25maWcsXG4gIE93bmVkSW5zdGFuY2VFbmRwb2ludFxufSBmcm9tICcuL3RyYW5zcG9ydC1kZXNrdG9wLWNkcC5janMnO1xuZXhwb3J0IHsgRGVza3RvcENkcFRyYW5zcG9ydCB9IGZyb20gJy4vdHJhbnNwb3J0LWRlc2t0b3AtY2RwLmNqcyc7XG5leHBvcnQgeyBjcmVhdGVUcmFuc3BvcnRGcm9tT3B0aW9ucyB9IGZyb20gJy4vdHJhbnNwb3J0LWZhY3RvcnkuY2pzJztcbmV4cG9ydCB0eXBlIHtcbiAgT2JzaWRpYW5BbmRyb2lkQXBwaXVtVHJhbnNwb3J0T3B0aW9ucyxcbiAgT2JzaWRpYW5DZHBUcmFuc3BvcnRPcHRpb25zLFxuICBPYnNpZGlhblRyYW5zcG9ydE9wdGlvbnNcbn0gZnJvbSAnLi90cmFuc3BvcnQtb3B0aW9ucy5janMnO1xuZXhwb3J0IHsgY2hlY2tJc01vYmlsZVRyYW5zcG9ydCB9IGZyb20gJy4vdHJhbnNwb3J0LW9wdGlvbnMuY2pzJztcbmV4cG9ydCB0eXBlIHtcbiAgQ29uc29sZUNhcHR1cmVIYW5kbGUsXG4gIE9ic2lkaWFuVHJhbnNwb3J0LFxuICBUcmFuc3BvcnRFdmFsT3B0aW9uc1xufSBmcm9tICcuL3RyYW5zcG9ydC5janMnO1xuZXhwb3J0IHtcbiAgcmVnaXN0ZXJWYXVsdCxcbiAgdW5yZWdpc3RlclZhdWx0XG59IGZyb20gJy4vdmF1bHQtcmVnaXN0cnkuY2pzJztcbmV4cG9ydCB0eXBlIHsgT2JzaWRpYW5WZXJzaW9uTWF0cml4RW50cnkgfSBmcm9tICcuL3ZlcnNpb24tbWF0cml4LmNqcyc7XG5leHBvcnQgeyBERUZBVUxUX09CU0lESUFOX1ZFUlNJT05fU1BFQ1MgfSBmcm9tICcuL3ZlcnNpb24tbWF0cml4LmNqcyc7XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBT0EsaUJBSU87QUFPUCx3QkFLTztBQU1QLHFDQUFvQztBQUVwQyx5Q0FBMEM7QUFLMUMsZ0NBS087QUFFUCx1Q0FBdUM7QUFFdkMsNkNBQTZDO0FBQzdDLDhCQUdPO0FBS1AsNEJBQTZCO0FBSzdCLHdCQUEwQjtBQU0xQiw4QkFJTztBQU9QLGtDQUdPO0FBTVAsaUNBR087QUFFUCw2QkFBa0M7QUFDbEMsNENBQTJDO0FBRTNDLCtCQUF3QztBQU14QyxvQ0FHTztBQUVQLHFDQUlPO0FBTVAsNkJBS087QUFNUCxvQ0FBNkM7QUFLN0MsZ0NBQXVDO0FBRXZDLHFDQUdPO0FBQ1Asc0JBQWlEO0FBa0JqRCw4QkFBK0I7QUFNL0IsNEJBR087QUFFUCw2QkFBOEI7QUFFOUIsa0RBQWtEO0FBTWxELHFDQUE4QztBQUU5Qyw0Q0FBNEM7QUFRNUMsOEJBTU87QUFFUCwwQkFBb0M7QUFPcEMsK0JBQW1DO0FBQ25DLDhCQUdPO0FBRVAsd0NBQXdDO0FBRXhDLHlDQUF5QztBQVF6QyxrQ0FNTztBQUVQLDhCQUErQjtBQUMvQixpREFBZ0Q7QUFFaEQsd0NBQXdDO0FBRXhDLGdDQUF5QztBQUV6Qyx3Q0FBd0M7QUFTeEMsb0NBT087QUFLUCwyQkFHTztBQUVQLCtCQUFnQztBQU1oQyw2QkFBK0I7QUFLL0IsOEJBQWdDO0FBT2hDLG1DQUFvQztBQUNwQywrQkFBMkM7QUFNM0MsK0JBQXVDO0FBTXZDLDRCQUdPO0FBRVAsNEJBQStDOyIsCiAgIm5hbWVzIjogW10KfQo=
@@ -69,6 +69,8 @@ export type { OpenObsidianSettingsTabParams } from './open-obsidian-settings-tab
69
69
  export { openObsidianSettingsTab } from './open-obsidian-settings-tab.cjs';
70
70
  export type { OwnedInstanceExitedErrorConstructorParams } from './owned-instance-exited-error.cjs';
71
71
  export { OwnedInstanceExitedError } from './owned-instance-exited-error.cjs';
72
+ export type { BuildStatusBarBandFailureMessageParams, PaintOutStatusBarOptions, ResolveStatusBarBandParams, StatusBarBandColor, StatusBarBandVerdict } from './paint-out-status-bar.cjs';
73
+ export { buildStatusBarBandFailureMessage, DEFAULT_STATUS_BAR_EDGE_MARGIN_IN_PIXELS, DEFAULT_STATUS_BAR_SAMPLE_INSET_IN_PIXELS, paintOutStatusBar, resolveStatusBarBand } from './paint-out-status-bar.cjs';
72
74
  export type { PollInObsidianParams } from './poll-in-obsidian.cjs';
73
75
  export { pollInObsidian } from './poll-in-obsidian.cjs';
74
76
  export { RendererFailedToInitializeError } from './renderer-failed-to-initialize-error.cjs';
@@ -79,7 +81,7 @@ export { runObsidianVersionMatrix } from './run-version-matrix.cjs';
79
81
  export type { SilentAsarFallbackErrorConstructorParams } from './silent-asar-fallback-error.cjs';
80
82
  export { SilentAsarFallbackError } from './silent-asar-fallback-error.cjs';
81
83
  export type { BuildSoftKeyboardDiagnosticMessageParams, CheckIsSoftKeyboardUpParams, ElementRect, ResolveSoftKeyboardTapPointsParams, SoftKeyboardTapPoint, SoftKeyboardViewportSnapshot } from './soft-keyboard-geometry.cjs';
82
- export { buildSoftKeyboardDiagnosticMessage, checkIsSoftKeyboardUp, DEFAULT_MINIMUM_KEYBOARD_HEIGHT_IN_PIXELS, parseInputMethodState, resolveSoftKeyboardTapPoints } from './soft-keyboard-geometry.cjs';
84
+ export { buildSoftKeyboardDiagnosticMessage, checkIsInputMethodShown, checkIsSoftKeyboardUp, DEFAULT_MINIMUM_KEYBOARD_HEIGHT_IN_PIXELS, parseInputMethodState, resolveSoftKeyboardTapPoints } from './soft-keyboard-geometry.cjs';
83
85
  export type { RaiseSoftKeyboardParams, TapDeviceParams } from './soft-keyboard.cjs';
84
86
  export { raiseSoftKeyboard, tapDevice } from './soft-keyboard.cjs';
85
87
  export type { StaleBuildErrorConstructorParams } from './stale-build-error.cjs';