obsidian-integration-testing 16.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.
- package/dist/lib/cjs/adb.cjs +2 -2
- package/dist/lib/cjs/adb.d.cts +10 -0
- package/dist/lib/cjs/avd-name-channel.cjs +74 -0
- package/dist/lib/cjs/avd-name-channel.d.cts +152 -0
- package/dist/lib/cjs/avd-probe-verdict.cjs +11 -4
- package/dist/lib/cjs/avd-probe-verdict.d.cts +7 -0
- package/dist/lib/cjs/device-screenshot.cjs +1 -1
- package/dist/lib/cjs/device-screenshot.d.cts +3 -1
- package/dist/lib/cjs/emulator-backend.cjs +22 -1
- package/dist/lib/cjs/emulator-backend.d.cts +81 -0
- package/dist/lib/cjs/emulator-reclaim.cjs +78 -34
- package/dist/lib/cjs/emulator-reclaim.d.cts +57 -9
- package/dist/lib/cjs/enable-plugin.cjs +17 -8
- package/dist/lib/cjs/enable-plugin.d.cts +3 -1
- package/dist/lib/cjs/host-process-query-verdict.cjs +103 -0
- package/dist/lib/cjs/host-process-query-verdict.d.cts +196 -0
- package/dist/lib/cjs/index.cjs +14 -1
- package/dist/lib/cjs/index.d.cts +3 -1
- package/dist/lib/cjs/launched-device-selection.cjs +46 -0
- package/dist/lib/cjs/launched-device-selection.d.cts +112 -0
- package/dist/lib/cjs/library.cjs +1 -1
- package/dist/lib/cjs/paint-out-status-bar.cjs +170 -0
- package/dist/lib/cjs/paint-out-status-bar.d.cts +236 -0
- package/dist/lib/cjs/port-owner-query-verdict.cjs +94 -0
- package/dist/lib/cjs/port-owner-query-verdict.d.cts +161 -0
- package/dist/lib/cjs/resolve-emulator-device-id.cjs +27 -4
- package/dist/lib/cjs/sharp-loader.cjs +1 -1
- package/dist/lib/cjs/sharp-loader.d.cts +67 -2
- package/dist/lib/cjs/soft-keyboard-geometry.cjs +12 -2
- package/dist/lib/cjs/soft-keyboard-geometry.d.cts +17 -2
- package/dist/lib/cjs/soft-keyboard.cjs +130 -28
- package/dist/lib/cjs/soft-keyboard.d.cts +65 -6
- package/dist/lib/cjs/transport-appium.cjs +74 -4
- package/dist/lib/cjs/transport-appium.d.cts +49 -2
- package/dist/lib/cjs/transport-factory.cjs +162 -42
- package/dist/lib/esm/adb.d.mts +10 -0
- package/dist/lib/esm/adb.mjs +2 -2
- package/dist/lib/esm/avd-name-channel.d.mts +152 -0
- package/dist/lib/esm/avd-name-channel.mjs +45 -0
- package/dist/lib/esm/avd-probe-verdict.d.mts +7 -0
- package/dist/lib/esm/avd-probe-verdict.mjs +15 -4
- package/dist/lib/esm/device-screenshot.d.mts +3 -1
- package/dist/lib/esm/device-screenshot.mjs +1 -1
- package/dist/lib/esm/emulator-backend.d.mts +81 -0
- package/dist/lib/esm/emulator-backend.mjs +19 -1
- package/dist/lib/esm/emulator-reclaim.d.mts +57 -9
- package/dist/lib/esm/emulator-reclaim.mjs +84 -36
- package/dist/lib/esm/enable-plugin.d.mts +3 -1
- package/dist/lib/esm/enable-plugin.mjs +17 -8
- package/dist/lib/esm/host-process-query-verdict.d.mts +196 -0
- package/dist/lib/esm/host-process-query-verdict.mjs +74 -0
- package/dist/lib/esm/index.d.mts +3 -1
- package/dist/lib/esm/index.mjs +15 -1
- package/dist/lib/esm/launched-device-selection.d.mts +112 -0
- package/dist/lib/esm/launched-device-selection.mjs +21 -0
- package/dist/lib/esm/library.mjs +1 -1
- package/dist/lib/esm/paint-out-status-bar.d.mts +236 -0
- package/dist/lib/esm/paint-out-status-bar.mjs +142 -0
- package/dist/lib/esm/port-owner-query-verdict.d.mts +161 -0
- package/dist/lib/esm/port-owner-query-verdict.mjs +73 -0
- package/dist/lib/esm/resolve-emulator-device-id.mjs +32 -4
- package/dist/lib/esm/sharp-loader.d.mts +67 -2
- package/dist/lib/esm/sharp-loader.mjs +1 -1
- package/dist/lib/esm/soft-keyboard-geometry.d.mts +17 -2
- package/dist/lib/esm/soft-keyboard-geometry.mjs +11 -2
- package/dist/lib/esm/soft-keyboard.d.mts +65 -6
- package/dist/lib/esm/soft-keyboard.mjs +131 -28
- package/dist/lib/esm/transport-appium.d.mts +49 -2
- package/dist/lib/esm/transport-appium.mjs +74 -4
- package/dist/lib/esm/transport-factory.mjs +176 -44
- package/package.json +1 -1
|
@@ -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;
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { assertNever } from "./type-guards.mjs";
|
|
2
|
+
const NTSTATUS_FAILURE_FLOOR = 3221225472;
|
|
3
|
+
const HEXADECIMAL_RADIX = 16;
|
|
4
|
+
const MILLISECONDS_PER_SECOND = 1e3;
|
|
5
|
+
function buildHostProcessQueryMessage(params) {
|
|
6
|
+
const cost = `after ${formatDuration(params.elapsedInMilliseconds)}`;
|
|
7
|
+
const consequence = params.consequence ?? "Teardown falls back to `adb devices` alone and has no PID to escalate to.";
|
|
8
|
+
switch (params.outcome) {
|
|
9
|
+
case "crashed": {
|
|
10
|
+
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}`;
|
|
11
|
+
}
|
|
12
|
+
case "listed": {
|
|
13
|
+
return void 0;
|
|
14
|
+
}
|
|
15
|
+
case "not-found": {
|
|
16
|
+
return `Warning: \`${params.command}\` could not be run at all ${cost}: the executable was not found on PATH. ${consequence}`;
|
|
17
|
+
}
|
|
18
|
+
case "output-overran": {
|
|
19
|
+
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}`;
|
|
20
|
+
}
|
|
21
|
+
case "refused": {
|
|
22
|
+
return `Warning: \`${params.command}\` refused the request ${cost} (exit ${formatExitCode(params.exitCode)}): ${formatRefusal(params.standardError)} ${consequence}`;
|
|
23
|
+
}
|
|
24
|
+
case "timed-out": {
|
|
25
|
+
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}`;
|
|
26
|
+
}
|
|
27
|
+
case "zero-rows": {
|
|
28
|
+
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}`;
|
|
29
|
+
}
|
|
30
|
+
default: {
|
|
31
|
+
return assertNever(params.outcome);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
function formatDuration(durationInMilliseconds) {
|
|
36
|
+
return durationInMilliseconds < MILLISECONDS_PER_SECOND ? `${String(durationInMilliseconds)}ms` : `${(durationInMilliseconds / MILLISECONDS_PER_SECOND).toFixed(1)}s`;
|
|
37
|
+
}
|
|
38
|
+
function formatExitCode(exitCode) {
|
|
39
|
+
if (exitCode === null) {
|
|
40
|
+
return "unknown";
|
|
41
|
+
}
|
|
42
|
+
return exitCode >= NTSTATUS_FAILURE_FLOOR ? `0x${exitCode.toString(HEXADECIMAL_RADIX).toUpperCase()}` : String(exitCode);
|
|
43
|
+
}
|
|
44
|
+
function formatRefusal(standardError) {
|
|
45
|
+
const refusal = standardError.trim();
|
|
46
|
+
return refusal.endsWith(".") ? refusal : `${refusal}.`;
|
|
47
|
+
}
|
|
48
|
+
function resolveHostProcessQueryOutcome(params) {
|
|
49
|
+
if (!params.hasFailed) {
|
|
50
|
+
return params.rowCount === 0 && !params.hasReportedNoMatch ? "zero-rows" : "listed";
|
|
51
|
+
}
|
|
52
|
+
return resolveHostQueryFailure(params);
|
|
53
|
+
}
|
|
54
|
+
function resolveHostQueryFailure(params) {
|
|
55
|
+
if (params.errorCode === "ENOENT") {
|
|
56
|
+
return "not-found";
|
|
57
|
+
}
|
|
58
|
+
if (params.errorCode === "ERR_CHILD_PROCESS_STDIO_MAXBUFFER") {
|
|
59
|
+
return "output-overran";
|
|
60
|
+
}
|
|
61
|
+
if (params.isKilled) {
|
|
62
|
+
return "timed-out";
|
|
63
|
+
}
|
|
64
|
+
return params.standardError.trim() === "" ? "crashed" : "refused";
|
|
65
|
+
}
|
|
66
|
+
export {
|
|
67
|
+
buildHostProcessQueryMessage,
|
|
68
|
+
formatDuration,
|
|
69
|
+
formatExitCode,
|
|
70
|
+
formatRefusal,
|
|
71
|
+
resolveHostProcessQueryOutcome,
|
|
72
|
+
resolveHostQueryFailure
|
|
73
|
+
};
|
|
74
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2hvc3QtcHJvY2Vzcy1xdWVyeS12ZXJkaWN0LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogUHVyZSBjbGFzc2lmaWNhdGlvbiBvZiB0aGUgaG9zdCBwcm9jZXNzIGxpc3RpbmcgXHUyMDE0IGRlY2lkaW5nLCBmcm9tIGhvd1xuICogYHRhc2tsaXN0YCAvIGBwc2AgZW5kZWQsICp3aGljaCogd2F5IGl0IGZhaWxlZCwgYW5kIHNheWluZyBzbyBpbiBvbmUgbGluZS5cbiAqXG4gKiBUaGUgbGlzdGluZyBpcyB3aGF0IG5hbWVzIHRoZSBlbXVsYXRvciBiYWNrZW5kIGEgcnVuIG93bnMsIGFuZCB0aGVyZWZvcmUgdGhlXG4gKiBvbmx5IFBJRCB0ZWFyZG93biBjYW4gZXNjYWxhdGUgdG8gKCoqTDU2KiopLiBJdCBpcyBiZXN0LWVmZm9ydCBieSBkZXNpZ246IGFcbiAqIGxpc3RpbmcgdGhhdCBjYW5ub3QgYmUgcHJvZHVjZWQgeWllbGRzIG5vIFBJRHMgcmF0aGVyIHRoYW4gZmFpbGluZyB0aGUgcnVuLlxuICogV2hhdCBpdCBtdXN0IG5ldmVyIGJlIGlzICoqdW5leHBsYWluZWQqKiwgYW5kIGZvciB0aHJlZSB3ZWVrcyBpdCB3YXM6XG4gKlxuICogYGBgdGV4dFxuICogV2FybmluZzogY291bGQgbm90IGxpc3QgaG9zdCBwcm9jZXNzZXMgKGB0YXNrbGlzdGApOiBDb21tYW5kIGZhaWxlZDogdGFza2xpc3QgL0ZPIENTViAvTkhcbiAqXG4gKiBXYXJuaW5nOiBgdGFza2xpc3RgIGxpc3RlZCBubyBwcm9jZXNzZXMuXG4gKiBgYGBcbiAqXG4gKiBUd28gZGVmZWN0cyBpbiBmb3VyIGxpbmVzLiBUaGUgcGFpciBpcyAqY29udHJhZGljdG9yeSogXHUyMDE0IHRoZSBmaXJzdCBzYXlzIHRoZVxuICogY29tbWFuZCBmYWlsZWQsIHRoZSBzZWNvbmQgc2F5cyBpdCByYW4gYW5kIGZvdW5kIG5vdGhpbmcgXHUyMDE0IGFuZCB0aGV5IHdlcmVcbiAqIGVtaXR0ZWQgdG9nZXRoZXIgZm9yIGEgc2luZ2xlIGZhaWx1cmUsIGJlY2F1c2UgYSBmYWlsZWQgY2FsbCByZXNvbHZlcyBgJydgXG4gKiBhbmQgYW4gZW1wdHkgc3RyaW5nIHBhcnNlcyB0byB6ZXJvIHJvd3MuIGB6ZXJvLXJvd3NgIGV4aXN0cyB0byBjYXRjaCBhXG4gKiBsaXN0aW5nIHRoYXQgc3VjY2VlZGVkIGFuZCB5ZXQgcmV0dXJuZWQgbm90aGluZywgd2hpY2ggb24gYSByZWFsIGhvc3QgY2FuXG4gKiBvbmx5IGJlIGEgZmFpbGVkIHF1ZXJ5OyBpdCBpcyBub3QgYSBzZWNvbmQgb3BpbmlvbiBvbiBhIGNhbGwgdGhhdCBhbHJlYWR5XG4gKiByZXBvcnRlZCBhbiBlcnJvci5cbiAqXG4gKiBBbmQgdGhlIHN1cnZpdmluZyBkaWFnbm9zdGljIGlzIGBlcnJvci5tZXNzYWdlYCBhbG9uZSwgd2hpY2ggZm9yIGBleGVjRmlsZWBcbiAqIGlzIGBDb21tYW5kIGZhaWxlZDogPGNtZD5cXG48c3RkZXJyPmAgXHUyMDE0IHNvIHRoZSBsb2cgY2FycmllZCB0aGUgY29tbWFuZCBiYWNrXG4gKiB0byB0aGUgcmVhZGVyIGFuZCB0aHJldyBhd2F5IGV2ZXJ5dGhpbmcgdGhhdCBpZGVudGlmaWVzIHRoZSBmYWlsdXJlOlxuICogYGVycm9yLmNvZGVgLCBgZXJyb3Iua2lsbGVkYCwgYGVycm9yLnNpZ25hbGAsIGFuZCBob3cgbG9uZyB0aGUgY2FsbCB0b29rLlxuICogTWVhc3VyZWQgMjAyNi0wOS0yMyBvbiB0aGlzIGhvc3QsIHRoYXQgZGlzY2FyZGVkIGV2aWRlbmNlIGlzIGRlY2lzaXZlOlxuICpcbiAqIC0gYHRhc2tsaXN0YCAqKmFsd2F5cyoqIHdyaXRlcyBgRVJST1I6IDxyZWFzb24+YCB0byBzdGRlcnIgd2hlbiBpdCBvYmplY3RzIFx1MjAxNFxuICogICBhIGJhZCBmaWx0ZXIsIGFuIHVucmVhY2hhYmxlIGhvc3QgXHUyMDE0IGFuZCBleGl0cyAxLiBTbyBhIG5vbi16ZXJvIGV4aXQgd2l0aFxuICogICAqKmVtcHR5Kiogc3RkZXJyIGlzIG5vdCBgdGFza2xpc3RgIHJlZnVzaW5nOyBpdCBpcyB0aGUgaG9zdCBraWxsaW5nIHRoZVxuICogICBjaGlsZCwgYW5kIGBjcmFzaGVkYCBzYXlzIHNvLlxuICogLSBUaGUgZXhhY3Qgc3Bhd24gdGhlIGhhcm5lc3MgbWFrZXMgc3VjY2VlZHMgMzkgdGltZXMgb3V0IG9mIDM5IGZyb20gYW4gaWRsZVxuICogICBOb2RlIHByb2Nlc3MgKDAuNi00LjNzLCAyNiBLQiwgfjUzMCByb3dzLCBhZ2FpbnN0IGEgMzBzIGJ1ZGdldCBhbmQgYW4gOCBNQlxuICogICBjZWlsaW5nKS4gU28gXCJ0aGUgc3Bhd24gaXMgd3JvbmdcIiBcdTIwMTQgYSBtaXNzaW5nIHNoZWxsLCBhIFBBVEggdGhlIGNoaWxkIGRpZFxuICogICBub3QgaW5oZXJpdCwgYW4gdW5kZXJzaXplZCBidWZmZXIgXHUyMDE0IGlzIHJ1bGVkIG91dDogZWFjaCBoYXMgaXRzICoqb3duKiogbWVzc2FnZVxuICogICAoYHNwYXduIHRhc2tsaXN0IEVOT0VOVGAsIGBzdGRvdXQgbWF4QnVmZmVyIGxlbmd0aCBleGNlZWRlZGApLCBhbmQgbm9uZSBvZlxuICogICB0aGVtIGlzIHRoZSBvbmUgb2JzZXJ2ZWQuXG4gKiAtIFVuZGVyIGFuIGVtdWxhdG9yIGJvb3QgdGhlIHNhbWUgY2FsbCBpbmZsYXRlcyB0byB+OXggaXRzIGlkbGUgY29zdCwgd2hpY2hcbiAqICAgaXMgdGhlIGNvbnRlbnRpb24gYEhPU1RfUFJPQ0VTU19RVUVSWV9USU1FT1VUX0lOX01JTExJU0VDT05EU2AgaXMgc2l6ZWRcbiAqICAgZm9yIGFuZCB0aGUgZmFpbHVyZSB0aGUgb2xkIGxpbmUgY291bGQgbm90IGRpc3Rpbmd1aXNoIGZyb20gYSBjcmFzaC5cbiAqXG4gKiBUaGlzIGlzIHRoZSBzYW1lIGZhdWx0IGBhdmQtcHJvYmUtdmVyZGljdC50c2Agd2FzIHdyaXR0ZW4gZm9yIFx1MjAxNCBhIHByb2JlIHRoYXRcbiAqIGRpc2NhcmRlZCBpdHMgZXJyb3IsIGxlYXZpbmcgXCJuZXZlciBhbnN3ZXJlZFwiIGluZGlzdGluZ3Vpc2hhYmxlIGZyb20gXCJ0aGVcbiAqIGFuc3dlciBpcyBub1wiIFx1MjAxNCBhbmQgaXQgaXMgZml4ZWQgdGhlIHNhbWUgd2F5OiBjbGFzc2lmeSwgbmFtZSB0aGVcbiAqIGNvbnNlcXVlbmNlLCBhbmQga2VlcCB0aGUgY2xhc3NpZmljYXRpb24gcHVyZSBzbyBpdCBpcyB1bml0LXRlc3RhYmxlIHdoaWxlXG4gKiB0aGUgYGV4ZWNGaWxlYCBnbHVlIHN0YXlzIGluIHRoZSBpbnRlZ3JhdGlvbi1vbmx5IGNhbGxlci5cbiAqL1xuXG5pbXBvcnQgeyBhc3NlcnROZXZlciB9IGZyb20gJy4vdHlwZS1ndWFyZHMubWpzJztcblxuLyoqXG4gKiBUaGUgbG93ZXN0IGV4aXQgY29kZSBXaW5kb3dzIHJlc2VydmVzIGZvciBhbiBgTlRTVEFUVVNgIGZhaWx1cmUuXG4gKlxuICogQSBjaGlsZCBraWxsZWQgYnkgdGhlIE9TIFx1MjAxNCBhbiBhY2Nlc3MgdmlvbGF0aW9uLCBhIHN0YWNrIG92ZXJmbG93IFx1MjAxNCBleGl0cyB3aXRoXG4gKiBpdHMgYE5UU1RBVFVTYCBhcyB0aGUgY29kZSwgYW5kIGAweEMwMDAwMDA1YCBpcyB1bnJlYWRhYmxlIGluIGRlY2ltYWxcbiAqIChgMzIyMTIyNTQ3N2ApLiBDb2RlcyBhdCBvciBhYm92ZSB0aGlzIGFyZSB0aGVyZWZvcmUgcmVwb3J0ZWQgaW4gaGV4LCB3aGljaFxuICogaXMgdGhlIG9ubHkgZm9ybSBhIHJlYWRlciBjYW4gbG9vayB1cC5cbiAqL1xuY29uc3QgTlRTVEFUVVNfRkFJTFVSRV9GTE9PUiA9IDB4QzBfMDBfMDBfMDA7XG5cbi8qKlxuICogVGhlIGJhc2UgYW4gYE5UU1RBVFVTYCBleGl0IGNvZGUgaXMgcmVuZGVyZWQgaW4uXG4gKi9cbmNvbnN0IEhFWEFERUNJTUFMX1JBRElYID0gMTY7XG5cbi8qKlxuICogTWlsbGlzZWNvbmRzIGluIGEgc2Vjb25kLCBmb3IgcmVuZGVyaW5nIGEgZHVyYXRpb24uXG4gKi9cbmNvbnN0IE1JTExJU0VDT05EU19QRVJfU0VDT05EID0gMTAwMDtcblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgYnVpbGRIb3N0UHJvY2Vzc1F1ZXJ5TWVzc2FnZX0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQnVpbGRIb3N0UHJvY2Vzc1F1ZXJ5TWVzc2FnZVBhcmFtcyB7XG4gIC8qKlxuICBUaGUgY29tbWFuZCB0aGF0IHdhcyBydW4sIGZvciB0aGUgcmVhZGVyIHRvIHRyeSBieSBoYW5kIFx1MjAxNCBlLmcuIGB0YXNrbGlzdCAvRk8gQ1NWIC9OSGAuXG4gICAqL1xuICByZWFkb25seSBjb21tYW5kOiBzdHJpbmc7XG5cbiAgLyoqXG4gIFdoYXQgdGhlIGZhaWx1cmUgY29zdHMgdGhlIGNhbGxlciwgY2xvc2luZyB0aGUgbGluZS4gRGVmYXVsdHMgdG8gdGhlIHRlYXJkb3duIGNvbnNlcXVlbmNlLCB3aGljaCBpcyB3aGF0IHRoZSBoYXJuZXNzJ3Mgb3duIGxpc3RpbmcgbG9zZXM7IHRoZSB3ZWRnZSBwcm9iZSBzdGF0ZXMgd2hhdCAqaXQqIGxvc2VzIGluc3RlYWQuXG4gICAqL1xuICByZWFkb25seSBjb25zZXF1ZW5jZT86IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgSG93IGxvbmcgdGhlIGNhbGwgdG9vayBiZWZvcmUgaXQgZW5kZWQsIGluIG1pbGxpc2Vjb25kcy5cbiAgICovXG4gIHJlYWRvbmx5IGVsYXBzZWRJbk1pbGxpc2Vjb25kczogbnVtYmVyO1xuXG4gIC8qKlxuICBUaGUgY2hpbGQncyBleGl0IGNvZGUsIHdoZW4gaXQgZXhpdGVkIHJhdGhlciB0aGFuIGZhaWxpbmcgdG8gc3RhcnQgb3IgYmVpbmcga2lsbGVkLlxuICAgKi9cbiAgcmVhZG9ubHkgZXhpdENvZGU6IG51bGwgfCBudW1iZXI7XG5cbiAgLyoqXG4gIFRoZSB2ZXJkaWN0IGZyb20ge0BsaW5rIHJlc29sdmVIb3N0UHJvY2Vzc1F1ZXJ5T3V0Y29tZX0uXG4gICAqL1xuICByZWFkb25seSBvdXRjb21lOiBIb3N0UHJvY2Vzc1F1ZXJ5T3V0Y29tZTtcblxuICAvKipcbiAgSG93IG1hbnkgcHJvY2Vzc2VzIHRoZSBvdXRwdXQgcGFyc2VkIHRvIFx1MjAxNCB0aGUgKnBhcnRpYWwqIGxpc3Rpbmcgb24gYSBmYWlsdXJlLCB3aGljaCBpcyB0aGUgZXZpZGVuY2UgdGhhdCB0aGUgY29tbWFuZCB3YXMgd29ya2luZyB3aGVuIGl0IGRpZWQuXG4gICAqL1xuICByZWFkb25seSBwYXJ0aWFsUm93Q291bnQ6IG51bWJlcjtcblxuICAvKipcbiAgVGhlIHNpZ25hbCB0aGUgY2hpbGQgd2FzIGtpbGxlZCB3aXRoLCB3aGVuIGl0IHdhcyBraWxsZWQuXG4gICAqL1xuICByZWFkb25seSBzaWduYWw6IG51bGwgfCBzdHJpbmc7XG5cbiAgLyoqXG4gIFdoYXRldmVyIHRoZSBjaGlsZCB3cm90ZSB0byBzdGRlcnIgXHUyMDE0IHF1b3RlZCBmb3IgYHJlZnVzZWRgLCBhbmQgdGhlIGVtcHRpbmVzcyB0aGF0IGlkZW50aWZpZXMgYGNyYXNoZWRgLlxuICAgKi9cbiAgcmVhZG9ubHkgc3RhbmRhcmRFcnJvcjogc3RyaW5nO1xuXG4gIC8qKlxuICBUaGUgYnVkZ2V0IHRoZSBjYWxsIHdhcyBnaXZlbiwgaW4gbWlsbGlzZWNvbmRzLlxuICAgKi9cbiAgcmVhZG9ubHkgdGltZW91dEluTWlsbGlzZWNvbmRzOiBudW1iZXI7XG59XG5cbi8qKlxuICogSG93IHRoZSBob3N0IHByb2Nlc3MgbGlzdGluZyBlbmRlZC5cbiAqXG4gKiBgbGlzdGVkYCBpcyB0aGUgb25seSBzdWNjZXNzLiBUaGUgcmVzdCBhcmUgZGlzdGluY3QgZmFpbHVyZXMgb24gcHVycG9zZTogdGhleVxuICogbmVlZCBkaWZmZXJlbnQgZml4ZXMsIGFuZCB0aGUgbGluZSB0aGV5IHVzZWQgdG8gc2hhcmUgbmFtZWQgbm9uZSBvZiB0aGVtLlxuICovXG5leHBvcnQgdHlwZSBIb3N0UHJvY2Vzc1F1ZXJ5T3V0Y29tZSA9ICdsaXN0ZWQnIHwgJ3plcm8tcm93cycgfCBIb3N0UXVlcnlGYWlsdXJlO1xuXG4vKipcbiAqIFRoZSB3YXlzIGEgaG9zdCBxdWVyeSBjYW4gZmFpbCwgc2hhcmVkIGJ5IGV2ZXJ5IHF1ZXJ5IHRoYXQgY2xhc3NpZmllcyBpdHMgZW5kaW5nLlxuICovXG5leHBvcnQgdHlwZSBIb3N0UXVlcnlGYWlsdXJlID0gJ2NyYXNoZWQnIHwgJ25vdC1mb3VuZCcgfCAnb3V0cHV0LW92ZXJyYW4nIHwgJ3JlZnVzZWQnIHwgJ3RpbWVkLW91dCc7XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3Ige0BsaW5rIHJlc29sdmVIb3N0UHJvY2Vzc1F1ZXJ5T3V0Y29tZX0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVzb2x2ZUhvc3RQcm9jZXNzUXVlcnlPdXRjb21lUGFyYW1zIHtcbiAgLyoqXG4gIGBleGVjRmlsZWAncyBgZXJyb3IuY29kZWA6IHRoZSBudW1lcmljIGV4aXQgY29kZSwgb3IgYSBzdHJpbmcgbGlrZSBgRU5PRU5UYCB3aGVuIHRoZSBjaGlsZCBuZXZlciByYW4uXG4gICAqL1xuICByZWFkb25seSBlcnJvckNvZGU6IG51bGwgfCBudW1iZXIgfCBzdHJpbmc7XG5cbiAgLyoqXG4gIFdoZXRoZXIgYGV4ZWNGaWxlYCByZXBvcnRlZCBhbiBlcnJvciBhdCBhbGwuXG4gICAqL1xuICByZWFkb25seSBoYXNGYWlsZWQ6IGJvb2xlYW47XG5cbiAgLyoqXG4gIFdoZXRoZXIgYSAqKmZpbHRlcmVkKiogcXVlcnkgYWZmaXJtYXRpdmVseSByZXBvcnRlZCB0aGF0IG5vdGhpbmcgbWF0Y2hlZCAoYGNoZWNrSXNOb01hdGNoUmVwb3J0ZWRgKSBcdTIwMTQgdGhlIG9uZSB3YXkgYW4gZW1wdHkgYW5zd2VyIGlzIGFuIGFuc3dlci5cbiAgICovXG4gIHJlYWRvbmx5IGhhc1JlcG9ydGVkTm9NYXRjaDogYm9vbGVhbjtcblxuICAvKipcbiAgYGV4ZWNGaWxlYCdzIGBlcnJvci5raWxsZWRgOiB3aGV0aGVyIHRoZSBidWRnZXQgZXhwaXJlZCBhbmQgdGhlIGNoaWxkIHdhcyBraWxsZWQuXG4gICAqL1xuICByZWFkb25seSBpc0tpbGxlZDogYm9vbGVhbjtcblxuICAvKipcbiAgSG93IG1hbnkgcHJvY2Vzc2VzIHRoZSBvdXRwdXQgcGFyc2VkIHRvLlxuICAgKi9cbiAgcmVhZG9ubHkgcm93Q291bnQ6IG51bWJlcjtcblxuICAvKipcbiAgV2hhdGV2ZXIgdGhlIGNoaWxkIHdyb3RlIHRvIHN0ZGVyci5cbiAgICovXG4gIHJlYWRvbmx5IHN0YW5kYXJkRXJyb3I6IHN0cmluZztcbn1cblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgcmVzb2x2ZUhvc3RRdWVyeUZhaWx1cmV9LlxuICovXG5leHBvcnQgdHlwZSBSZXNvbHZlSG9zdFF1ZXJ5RmFpbHVyZVBhcmFtcyA9IFBpY2s8UmVzb2x2ZUhvc3RQcm9jZXNzUXVlcnlPdXRjb21lUGFyYW1zLCAnZXJyb3JDb2RlJyB8ICdpc0tpbGxlZCcgfCAnc3RhbmRhcmRFcnJvcic+O1xuXG4vKipcbiAqIEJ1aWxkcyB0aGUgc2luZ2xlIGxpbmUgdGhlIGxpc3RpbmcgbG9ncyBmb3IgYW4gb3V0Y29tZS5cbiAqXG4gKiBPbmUgbGluZSwgbmV2ZXIgdHdvOiB0aGUgY29udHJhZGljdG9yeSBwYWlyIGluIHRoaXMgZmlsZSdzIGhlYWRlciBpcyB0aGVcbiAqIGRlZmVjdCB0aGlzIHJlcGxhY2VzLiBgbGlzdGVkYCBoYXMgbm90aGluZyB0byByZXBvcnQsIHNvIGl0IHJldHVybnNcbiAqIGB1bmRlZmluZWRgIHJhdGhlciB0aGFuIGEgY2hlZXJmdWwgbGluZSBvbiB0aGUgaG90IHBhdGguXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSBvdXRjb21lIHBsdXMgdGhlIGNvbW1hbmQsIHRoZSBidWRnZXQgYW5kIHdoYXQgdGhlIGNoaWxkIGxlZnQgYmVoaW5kLlxuICogQHJldHVybnMgVGhlIHdhcm5pbmcgdG8gbG9nLCBvciBgdW5kZWZpbmVkYCB3aGVuIHRoZSBsaXN0aW5nIHN1Y2NlZWRlZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkSG9zdFByb2Nlc3NRdWVyeU1lc3NhZ2UocGFyYW1zOiBCdWlsZEhvc3RQcm9jZXNzUXVlcnlNZXNzYWdlUGFyYW1zKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgY29uc3QgY29zdCA9IGBhZnRlciAke2Zvcm1hdER1cmF0aW9uKHBhcmFtcy5lbGFwc2VkSW5NaWxsaXNlY29uZHMpfWA7XG4gIGNvbnN0IGNvbnNlcXVlbmNlID0gcGFyYW1zLmNvbnNlcXVlbmNlID8/ICdUZWFyZG93biBmYWxscyBiYWNrIHRvIGBhZGIgZGV2aWNlc2AgYWxvbmUgYW5kIGhhcyBubyBQSUQgdG8gZXNjYWxhdGUgdG8uJztcblxuICBzd2l0Y2ggKHBhcmFtcy5vdXRjb21lKSB7XG4gICAgY2FzZSAnY3Jhc2hlZCc6IHtcbiAgICAgIHJldHVybiBgV2FybmluZzogXFxgJHtwYXJhbXMuY29tbWFuZH1cXGAgZGllZCAke2Nvc3R9IHdpdGhvdXQgZXhwbGFpbmluZyBpdHNlbGYgKGV4aXQgJHtmb3JtYXRFeGl0Q29kZShwYXJhbXMuZXhpdENvZGUpfSwgbm90aGluZyBvbiBzdGRlcnIsICR7U3RyaW5nKHBhcmFtcy5wYXJ0aWFsUm93Q291bnQpfSBwcm9jZXNzKGVzKSBsaXN0ZWQpIFx1MjAxNCBpdCBkaWQgbm90IHJlZnVzZSB0aGUgcmVxdWVzdCwgc2luY2UgaXQgYWx3YXlzIGV4cGxhaW5zIGEgcmVmdXNhbCBvbiBzdGRlcnIuIFN1c3BlY3QgYSBjcmFzaCBvciBhbiBpbnRlcmZlcmluZyBzZWN1cml0eSBwcm9kdWN0LCBhbmQgdHJ5IHRoZSBjb21tYW5kIGJ5IGhhbmQuICR7Y29uc2VxdWVuY2V9YDtcbiAgICB9XG4gICAgY2FzZSAnbGlzdGVkJzoge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gICAgY2FzZSAnbm90LWZvdW5kJzoge1xuICAgICAgcmV0dXJuIGBXYXJuaW5nOiBcXGAke3BhcmFtcy5jb21tYW5kfVxcYCBjb3VsZCBub3QgYmUgcnVuIGF0IGFsbCAke2Nvc3R9OiB0aGUgZXhlY3V0YWJsZSB3YXMgbm90IGZvdW5kIG9uIFBBVEguICR7Y29uc2VxdWVuY2V9YDtcbiAgICB9XG4gICAgY2FzZSAnb3V0cHV0LW92ZXJyYW4nOiB7XG4gICAgICByZXR1cm4gYFdhcm5pbmc6IFxcYCR7cGFyYW1zLmNvbW1hbmR9XFxgIHByb2R1Y2VkIG1vcmUgb3V0cHV0ICR7Y29zdH0gdGhhbiB0aGUgbGlzdGluZydzIGJ1ZmZlciBhbGxvd3MsIHNvIG5vbmUgb2YgaXQgY291bGQgYmUgcmVhZC4gUmFpc2UgdGhlIGJ1ZmZlci4gJHtjb25zZXF1ZW5jZX1gO1xuICAgIH1cbiAgICBjYXNlICdyZWZ1c2VkJzoge1xuICAgICAgcmV0dXJuIGBXYXJuaW5nOiBcXGAke3BhcmFtcy5jb21tYW5kfVxcYCByZWZ1c2VkIHRoZSByZXF1ZXN0ICR7Y29zdH0gKGV4aXQgJHtmb3JtYXRFeGl0Q29kZShwYXJhbXMuZXhpdENvZGUpfSk6ICR7Zm9ybWF0UmVmdXNhbChwYXJhbXMuc3RhbmRhcmRFcnJvcil9ICR7Y29uc2VxdWVuY2V9YDtcbiAgICB9XG4gICAgY2FzZSAndGltZWQtb3V0Jzoge1xuICAgICAgcmV0dXJuIGBXYXJuaW5nOiBcXGAke3BhcmFtcy5jb21tYW5kfVxcYCBkaWQgbm90IGZpbmlzaCB3aXRoaW4gaXRzICR7Zm9ybWF0RHVyYXRpb24ocGFyYW1zLnRpbWVvdXRJbk1pbGxpc2Vjb25kcyl9IGJ1ZGdldCBhbmQgd2FzIGtpbGxlZCAke2Nvc3R9JHtwYXJhbXMuc2lnbmFsID09PSBudWxsID8gJycgOiBgICgke3BhcmFtcy5zaWduYWx9KWB9LCBoYXZpbmcgbGlzdGVkICR7U3RyaW5nKHBhcmFtcy5wYXJ0aWFsUm93Q291bnQpfSBwcm9jZXNzKGVzKSBieSB0aGVuIFx1MjAxNCBzbyBpdCB3YXMgd29ya2luZywgbm90IHJlZnVzaW5nLCBhbmQgdGhlIGJ1ZGdldCBpcyB3aGF0IHJhbiBvdXQuIFRoZSBwYXJ0aWFsIGxpc3RpbmcgaXMgZGlzY2FyZGVkIHJhdGhlciB0aGFuIHVzZWQ6IHRoZSBvd25lZCBzZXQgaXMgYSAqZGlmZmVyZW5jZSogYmV0d2VlbiB0d28gbGlzdGluZ3MsIGFuZCBhIHRydW5jYXRlZCBvbmUgb24gZWl0aGVyIHNpZGUgd291bGQgYm90aCBtaXNzIGEgcHJvY2VzcyB0aGlzIHJ1biBvd25zIGFuZCBjbGFpbSBvbmUgaXQgZG9lcyBub3QuICR7Y29uc2VxdWVuY2V9YDtcbiAgICB9XG4gICAgY2FzZSAnemVyby1yb3dzJzoge1xuICAgICAgcmV0dXJuIGBXYXJuaW5nOiBcXGAke3BhcmFtcy5jb21tYW5kfVxcYCBleGl0ZWQgY2xlYW5seSAke2Nvc3R9IGJ1dCBpdHMgb3V0cHV0IHBhcnNlZCB0byBubyBwcm9jZXNzZXMgYW5kIGNhcnJpZWQgbm8gbm8tbWF0Y2ggbm90aWNlIFx1MjAxNCBhIHdob2xlLWhvc3QgbGlzdGluZyBjYW5ub3QgYmUgZW1wdHkgb24gYSBydW5uaW5nIGhvc3QsIGFuZCBhIGZpbHRlcmVkIG9uZSBzYXlzIHNvIHdoZW4gbm90aGluZyBtYXRjaGVzLiBUcmVhdGluZyBpdCBhcyBhIGZhaWxlZCBxdWVyeS4gJHtjb25zZXF1ZW5jZX1gO1xuICAgIH1cbiAgICBkZWZhdWx0OiB7XG4gICAgICByZXR1cm4gYXNzZXJ0TmV2ZXIocGFyYW1zLm91dGNvbWUpO1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIFJlbmRlcnMgYSBtaWxsaXNlY29uZCBkdXJhdGlvbiBmb3IgYSBsb2cgbGluZS5cbiAqXG4gKiBAcGFyYW0gZHVyYXRpb25Jbk1pbGxpc2Vjb25kcyAtIFRoZSBkdXJhdGlvbi5cbiAqIEByZXR1cm5zIFdob2xlIG1pbGxpc2Vjb25kcyB1bmRlciBhIHNlY29uZCwgYW5kIHNlY29uZHMgdG8gb25lIGRlY2ltYWwgYWJvdmUgaXQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXREdXJhdGlvbihkdXJhdGlvbkluTWlsbGlzZWNvbmRzOiBudW1iZXIpOiBzdHJpbmcge1xuICByZXR1cm4gZHVyYXRpb25Jbk1pbGxpc2Vjb25kcyA8IE1JTExJU0VDT05EU19QRVJfU0VDT05EXG4gICAgPyBgJHtTdHJpbmcoZHVyYXRpb25Jbk1pbGxpc2Vjb25kcyl9bXNgXG4gICAgOiBgJHsoZHVyYXRpb25Jbk1pbGxpc2Vjb25kcyAvIE1JTExJU0VDT05EU19QRVJfU0VDT05EKS50b0ZpeGVkKDEpfXNgO1xufVxuXG4vKipcbiAqIFJlbmRlcnMgYSBjaGlsZCdzIGV4aXQgY29kZSwgaW4gdGhlIGJhc2UgYSByZWFkZXIgY2FuIGxvb2sgaXQgdXAgaW4uXG4gKlxuICogQHBhcmFtIGV4aXRDb2RlIC0gVGhlIGV4aXQgY29kZSwgb3IgYG51bGxgIHdoZW4gdGhlIGNoaWxkIHdhcyBraWxsZWQgYmVmb3JlIGV4aXRpbmcuXG4gKiBAcmV0dXJucyBUaGUgY29kZSBpbiBoZXggd2hlbiBpdCBpcyBhbiBgTlRTVEFUVVNgIGZhaWx1cmUsIGluIGRlY2ltYWwgb3RoZXJ3aXNlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZm9ybWF0RXhpdENvZGUoZXhpdENvZGU6IG51bGwgfCBudW1iZXIpOiBzdHJpbmcge1xuICBpZiAoZXhpdENvZGUgPT09IG51bGwpIHtcbiAgICByZXR1cm4gJ3Vua25vd24nO1xuICB9XG5cbiAgcmV0dXJuIGV4aXRDb2RlID49IE5UU1RBVFVTX0ZBSUxVUkVfRkxPT1IgPyBgMHgke2V4aXRDb2RlLnRvU3RyaW5nKEhFWEFERUNJTUFMX1JBRElYKS50b1VwcGVyQ2FzZSgpfWAgOiBTdHJpbmcoZXhpdENvZGUpO1xufVxuXG4vKipcbiAqIFJlbmRlcnMgd2hhdCB0aGUgY29tbWFuZCBzYWlkIHdoZW4gaXQgcmVmdXNlZCwgYXMgb25lIHNlbnRlbmNlLlxuICpcbiAqIGB0YXNrbGlzdGAgZW5kcyBpdHMgb3duIGBFUlJPUjogXHUyMDI2YCB3aXRoIGEgcGVyaW9kIGFuZCBhIGBcXHJcXHJcXG5gLCBzbyBxdW90aW5nIGl0XG4gKiB2ZXJiYXRpbSBhbmQgYWRkaW5nIHRoZSBzZW50ZW5jZSBicmVhayB0aGlzIGxpbmUgbmVlZHMgcHJvZHVjZWQgYHJlY29nbml6ZWQuLmBcbiAqIFx1MjAxNCB0aGUgdGVybWluYXRvciBpcyBzdXBwbGllZCBvbmx5IHdoZW4gdGhlIHRvb2wgZGlkIG5vdCBzdXBwbHkgb25lLlxuICpcbiAqIEBwYXJhbSBzdGFuZGFyZEVycm9yIC0gV2hhdGV2ZXIgdGhlIGNoaWxkIHdyb3RlIHRvIHN0ZGVyci5cbiAqIEByZXR1cm5zIFRoZSByZWZ1c2FsLCB0cmltbWVkLCBlbmRpbmcgaW4gZXhhY3RseSBvbmUgcGVyaW9kLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZm9ybWF0UmVmdXNhbChzdGFuZGFyZEVycm9yOiBzdHJpbmcpOiBzdHJpbmcge1xuICBjb25zdCByZWZ1c2FsID0gc3RhbmRhcmRFcnJvci50cmltKCk7XG5cbiAgcmV0dXJuIHJlZnVzYWwuZW5kc1dpdGgoJy4nKSA/IHJlZnVzYWwgOiBgJHtyZWZ1c2FsfS5gO1xufVxuXG4vKipcbiAqIERlY2lkZXMgaG93IHRoZSBsaXN0aW5nIGVuZGVkLCBmcm9tIHdoYXQgYGV4ZWNGaWxlYCByZXBvcnRlZC5cbiAqXG4gKiBUaGUgb3JkZXIgb2YgdGhlIGJyYW5jaGVzIGlzIHRoZSBvcmRlciBvZiBzcGVjaWZpY2l0eTogdGhlIHR3byBmYWlsdXJlcyBOb2RlXG4gKiBuYW1lcyBpdHNlbGYgKGBFTk9FTlRgLCB0aGUgYnVmZmVyIGNlaWxpbmcpIGFyZSByZWNvZ25pemVkIGJlZm9yZSB0aGUgb25lc1xuICogdGhhdCBoYXZlIHRvIGJlIGluZmVycmVkIGZyb20gdGhlIGNoaWxkJ3MgZXhpdCwgYW5kIGBjcmFzaGVkYCBpcyBsYXN0XG4gKiBiZWNhdXNlIGl0IGlzIGRlZmluZWQgYnkgdGhlICphYnNlbmNlKiBvZiBhbiBleHBsYW5hdGlvbiBvbiBzdGRlcnIuXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFdoYXQgYGV4ZWNGaWxlYCByZXBvcnRlZCwgYW5kIGhvdyBtYW55IHJvd3MgdGhlIG91dHB1dCBwYXJzZWQgdG8uXG4gKiBAcmV0dXJucyBUaGUgb3V0Y29tZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmVIb3N0UHJvY2Vzc1F1ZXJ5T3V0Y29tZShwYXJhbXM6IFJlc29sdmVIb3N0UHJvY2Vzc1F1ZXJ5T3V0Y29tZVBhcmFtcyk6IEhvc3RQcm9jZXNzUXVlcnlPdXRjb21lIHtcbiAgaWYgKCFwYXJhbXMuaGFzRmFpbGVkKSB7XG4gICAgLypcbiAgICAgKiBBIGhvc3QgYWx3YXlzIGhhcyBwcm9jZXNzZXMsIHNvIGEgd2hvbGUtaG9zdCBsaXN0aW5nIHRoYXQgcGFyc2VzIHRvIG5vdGhpbmcgaXMgYSBmYWlsZWQgcXVlcnkgaG93ZXZlciBpdFxuICAgICAqIGV4aXRlZC4gQSBmaWx0ZXJlZCBvbmUgbWF5IGxlZ2l0aW1hdGVseSBtYXRjaCBub3RoaW5nIFx1MjAxNCBidXQgb25seSB3aGVuIGl0IHNheXMgc287IHNpbGVuY2UgaXMgc3RpbGwgYSBmYWlsdXJlLlxuICAgICAqL1xuICAgIHJldHVybiBwYXJhbXMucm93Q291bnQgPT09IDAgJiYgIXBhcmFtcy5oYXNSZXBvcnRlZE5vTWF0Y2ggPyAnemVyby1yb3dzJyA6ICdsaXN0ZWQnO1xuICB9XG5cbiAgcmV0dXJuIHJlc29sdmVIb3N0UXVlcnlGYWlsdXJlKHBhcmFtcyk7XG59XG5cbi8qKlxuICogRGVjaWRlcyB3aGljaCB3YXkgYSBob3N0IHF1ZXJ5IHRoYXQgKipkaWQqKiBmYWlsIGZhaWxlZC5cbiAqXG4gKiBTcGxpdCBvdXQgb2Yge0BsaW5rIHJlc29sdmVIb3N0UHJvY2Vzc1F1ZXJ5T3V0Y29tZX0gc28gYSBzaWJsaW5nIHF1ZXJ5IHdob3NlXG4gKiBzdWNjZXNzIHJ1bGVzIGRpZmZlciBcdTIwMTQgdGhlIHBvcnQtb3duZXIgcXVlcnksIHdoZXJlIHplcm8gb3duZXJzIGlzIGFuIGFuc3dlciBcdTIwMTRcbiAqIGNhbiBzaGFyZSBvbmUgZGVmaW5pdGlvbiBvZiBlYWNoIGZhaWx1cmUgd2l0aG91dCBpbmhlcml0aW5nIGBsaXN0ZWRgIGFuZFxuICogYHplcm8tcm93c2AuXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFdoYXQgYGV4ZWNGaWxlYCByZXBvcnRlZCBmb3IgdGhlIGZhaWxlZCBjYWxsLlxuICogQHJldHVybnMgVGhlIGZhaWx1cmUgb3V0Y29tZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmVIb3N0UXVlcnlGYWlsdXJlKHBhcmFtczogUmVzb2x2ZUhvc3RRdWVyeUZhaWx1cmVQYXJhbXMpOiBIb3N0UXVlcnlGYWlsdXJlIHtcbiAgaWYgKHBhcmFtcy5lcnJvckNvZGUgPT09ICdFTk9FTlQnKSB7XG4gICAgcmV0dXJuICdub3QtZm91bmQnO1xuICB9XG5cbiAgaWYgKHBhcmFtcy5lcnJvckNvZGUgPT09ICdFUlJfQ0hJTERfUFJPQ0VTU19TVERJT19NQVhCVUZGRVInKSB7XG4gICAgcmV0dXJuICdvdXRwdXQtb3ZlcnJhbic7XG4gIH1cblxuICBpZiAocGFyYW1zLmlzS2lsbGVkKSB7XG4gICAgcmV0dXJuICd0aW1lZC1vdXQnO1xuICB9XG5cbiAgLy8gYHRhc2tsaXN0YCBhbmQgYHBzYCBib3RoIGV4cGxhaW4gYSByZWZ1c2FsIG9uIHN0ZGVyciwgc28gc2lsZW5jZSBtZWFucyB0aGUgY2hpbGQgbmV2ZXIgZ290IHRvIG9iamVjdC5cbiAgcmV0dXJuIHBhcmFtcy5zdGFuZGFyZEVycm9yLnRyaW0oKSA9PT0gJycgPyAnY3Jhc2hlZCcgOiAncmVmdXNlZCc7XG59XG4iXSwKICAibWFwcGluZ3MiOiAiQUFvREEsU0FBUyxtQkFBbUI7QUFVNUIsTUFBTSx5QkFBeUI7QUFLL0IsTUFBTSxvQkFBb0I7QUFLMUIsTUFBTSwwQkFBMEI7QUFtSHpCLFNBQVMsNkJBQTZCLFFBQWdFO0FBQzNHLFFBQU0sT0FBTyxTQUFTLGVBQWUsT0FBTyxxQkFBcUIsQ0FBQztBQUNsRSxRQUFNLGNBQWMsT0FBTyxlQUFlO0FBRTFDLFVBQVEsT0FBTyxTQUFTO0FBQUEsSUFDdEIsS0FBSyxXQUFXO0FBQ2QsYUFBTyxjQUFjLE9BQU8sT0FBTyxXQUFXLElBQUksb0NBQW9DLGVBQWUsT0FBTyxRQUFRLENBQUMsd0JBQXdCLE9BQU8sT0FBTyxlQUFlLENBQUMsNkxBQXdMLFdBQVc7QUFBQSxJQUNoWDtBQUFBLElBQ0EsS0FBSyxVQUFVO0FBQ2IsYUFBTztBQUFBLElBQ1Q7QUFBQSxJQUNBLEtBQUssYUFBYTtBQUNoQixhQUFPLGNBQWMsT0FBTyxPQUFPLDhCQUE4QixJQUFJLDJDQUEyQyxXQUFXO0FBQUEsSUFDN0g7QUFBQSxJQUNBLEtBQUssa0JBQWtCO0FBQ3JCLGFBQU8sY0FBYyxPQUFPLE9BQU8sMkJBQTJCLElBQUkscUZBQXFGLFdBQVc7QUFBQSxJQUNwSztBQUFBLElBQ0EsS0FBSyxXQUFXO0FBQ2QsYUFBTyxjQUFjLE9BQU8sT0FBTywwQkFBMEIsSUFBSSxVQUFVLGVBQWUsT0FBTyxRQUFRLENBQUMsTUFBTSxjQUFjLE9BQU8sYUFBYSxDQUFDLElBQUksV0FBVztBQUFBLElBQ3BLO0FBQUEsSUFDQSxLQUFLLGFBQWE7QUFDaEIsYUFBTyxjQUFjLE9BQU8sT0FBTyxnQ0FBZ0MsZUFBZSxPQUFPLHFCQUFxQixDQUFDLDBCQUEwQixJQUFJLEdBQUcsT0FBTyxXQUFXLE9BQU8sS0FBSyxLQUFLLE9BQU8sTUFBTSxHQUFHLG1CQUFtQixPQUFPLE9BQU8sZUFBZSxDQUFDLCtTQUEwUyxXQUFXO0FBQUEsSUFDM2lCO0FBQUEsSUFDQSxLQUFLLGFBQWE7QUFDaEIsYUFBTyxjQUFjLE9BQU8sT0FBTyxxQkFBcUIsSUFBSSx3TkFBbU4sV0FBVztBQUFBLElBQzVSO0FBQUEsSUFDQSxTQUFTO0FBQ1AsYUFBTyxZQUFZLE9BQU8sT0FBTztBQUFBLElBQ25DO0FBQUEsRUFDRjtBQUNGO0FBUU8sU0FBUyxlQUFlLHdCQUF3QztBQUNyRSxTQUFPLHlCQUF5QiwwQkFDNUIsR0FBRyxPQUFPLHNCQUFzQixDQUFDLE9BQ2pDLElBQUkseUJBQXlCLHlCQUF5QixRQUFRLENBQUMsQ0FBQztBQUN0RTtBQVFPLFNBQVMsZUFBZSxVQUFpQztBQUM5RCxNQUFJLGFBQWEsTUFBTTtBQUNyQixXQUFPO0FBQUEsRUFDVDtBQUVBLFNBQU8sWUFBWSx5QkFBeUIsS0FBSyxTQUFTLFNBQVMsaUJBQWlCLEVBQUUsWUFBWSxDQUFDLEtBQUssT0FBTyxRQUFRO0FBQ3pIO0FBWU8sU0FBUyxjQUFjLGVBQStCO0FBQzNELFFBQU0sVUFBVSxjQUFjLEtBQUs7QUFFbkMsU0FBTyxRQUFRLFNBQVMsR0FBRyxJQUFJLFVBQVUsR0FBRyxPQUFPO0FBQ3JEO0FBYU8sU0FBUywrQkFBK0IsUUFBdUU7QUFDcEgsTUFBSSxDQUFDLE9BQU8sV0FBVztBQUtyQixXQUFPLE9BQU8sYUFBYSxLQUFLLENBQUMsT0FBTyxxQkFBcUIsY0FBYztBQUFBLEVBQzdFO0FBRUEsU0FBTyx3QkFBd0IsTUFBTTtBQUN2QztBQWFPLFNBQVMsd0JBQXdCLFFBQXlEO0FBQy9GLE1BQUksT0FBTyxjQUFjLFVBQVU7QUFDakMsV0FBTztBQUFBLEVBQ1Q7QUFFQSxNQUFJLE9BQU8sY0FBYyxxQ0FBcUM7QUFDNUQsV0FBTztBQUFBLEVBQ1Q7QUFFQSxNQUFJLE9BQU8sVUFBVTtBQUNuQixXQUFPO0FBQUEsRUFDVDtBQUdBLFNBQU8sT0FBTyxjQUFjLEtBQUssTUFBTSxLQUFLLFlBQVk7QUFDMUQ7IiwKICAibmFtZXMiOiBbXQp9Cg==
|
package/dist/lib/esm/index.d.mts
CHANGED
|
@@ -69,6 +69,8 @@ export type { OpenObsidianSettingsTabParams } from './open-obsidian-settings-tab
|
|
|
69
69
|
export { openObsidianSettingsTab } from './open-obsidian-settings-tab.mjs';
|
|
70
70
|
export type { OwnedInstanceExitedErrorConstructorParams } from './owned-instance-exited-error.mjs';
|
|
71
71
|
export { OwnedInstanceExitedError } from './owned-instance-exited-error.mjs';
|
|
72
|
+
export type { BuildStatusBarBandFailureMessageParams, PaintOutStatusBarOptions, ResolveStatusBarBandParams, StatusBarBandColor, StatusBarBandVerdict } from './paint-out-status-bar.mjs';
|
|
73
|
+
export { buildStatusBarBandFailureMessage, DEFAULT_STATUS_BAR_EDGE_MARGIN_IN_PIXELS, DEFAULT_STATUS_BAR_SAMPLE_INSET_IN_PIXELS, paintOutStatusBar, resolveStatusBarBand } from './paint-out-status-bar.mjs';
|
|
72
74
|
export type { PollInObsidianParams } from './poll-in-obsidian.mjs';
|
|
73
75
|
export { pollInObsidian } from './poll-in-obsidian.mjs';
|
|
74
76
|
export { RendererFailedToInitializeError } from './renderer-failed-to-initialize-error.mjs';
|
|
@@ -79,7 +81,7 @@ export { runObsidianVersionMatrix } from './run-version-matrix.mjs';
|
|
|
79
81
|
export type { SilentAsarFallbackErrorConstructorParams } from './silent-asar-fallback-error.mjs';
|
|
80
82
|
export { SilentAsarFallbackError } from './silent-asar-fallback-error.mjs';
|
|
81
83
|
export type { BuildSoftKeyboardDiagnosticMessageParams, CheckIsSoftKeyboardUpParams, ElementRect, ResolveSoftKeyboardTapPointsParams, SoftKeyboardTapPoint, SoftKeyboardViewportSnapshot } from './soft-keyboard-geometry.mjs';
|
|
82
|
-
export { buildSoftKeyboardDiagnosticMessage, checkIsSoftKeyboardUp, DEFAULT_MINIMUM_KEYBOARD_HEIGHT_IN_PIXELS, parseInputMethodState, resolveSoftKeyboardTapPoints } from './soft-keyboard-geometry.mjs';
|
|
84
|
+
export { buildSoftKeyboardDiagnosticMessage, checkIsInputMethodShown, checkIsSoftKeyboardUp, DEFAULT_MINIMUM_KEYBOARD_HEIGHT_IN_PIXELS, parseInputMethodState, resolveSoftKeyboardTapPoints } from './soft-keyboard-geometry.mjs';
|
|
83
85
|
export type { RaiseSoftKeyboardParams, TapDeviceParams } from './soft-keyboard.mjs';
|
|
84
86
|
export { raiseSoftKeyboard, tapDevice } from './soft-keyboard.mjs';
|
|
85
87
|
export type { StaleBuildErrorConstructorParams } from './stale-build-error.mjs';
|
package/dist/lib/esm/index.mjs
CHANGED
|
@@ -87,6 +87,13 @@ import {
|
|
|
87
87
|
} from "./obsidian-version.mjs";
|
|
88
88
|
import { openObsidianSettingsTab } from "./open-obsidian-settings-tab.mjs";
|
|
89
89
|
import { OwnedInstanceExitedError } from "./owned-instance-exited-error.mjs";
|
|
90
|
+
import {
|
|
91
|
+
buildStatusBarBandFailureMessage,
|
|
92
|
+
DEFAULT_STATUS_BAR_EDGE_MARGIN_IN_PIXELS,
|
|
93
|
+
DEFAULT_STATUS_BAR_SAMPLE_INSET_IN_PIXELS,
|
|
94
|
+
paintOutStatusBar,
|
|
95
|
+
resolveStatusBarBand
|
|
96
|
+
} from "./paint-out-status-bar.mjs";
|
|
90
97
|
import { pollInObsidian } from "./poll-in-obsidian.mjs";
|
|
91
98
|
import { RendererFailedToInitializeError } from "./renderer-failed-to-initialize-error.mjs";
|
|
92
99
|
import { resolveEmulatorDeviceId } from "./resolve-emulator-device-id.mjs";
|
|
@@ -94,6 +101,7 @@ import { runObsidianVersionMatrix } from "./run-version-matrix.mjs";
|
|
|
94
101
|
import { SilentAsarFallbackError } from "./silent-asar-fallback-error.mjs";
|
|
95
102
|
import {
|
|
96
103
|
buildSoftKeyboardDiagnosticMessage,
|
|
104
|
+
checkIsInputMethodShown,
|
|
97
105
|
checkIsSoftKeyboardUp,
|
|
98
106
|
DEFAULT_MINIMUM_KEYBOARD_HEIGHT_IN_PIXELS,
|
|
99
107
|
parseInputMethodState,
|
|
@@ -124,6 +132,8 @@ export {
|
|
|
124
132
|
DEFAULT_EVAL_CAP_IN_MILLISECONDS,
|
|
125
133
|
DEFAULT_MINIMUM_KEYBOARD_HEIGHT_IN_PIXELS,
|
|
126
134
|
DEFAULT_OBSIDIAN_VERSION_SPECS,
|
|
135
|
+
DEFAULT_STATUS_BAR_EDGE_MARGIN_IN_PIXELS,
|
|
136
|
+
DEFAULT_STATUS_BAR_SAMPLE_INSET_IN_PIXELS,
|
|
127
137
|
DesktopCdpTransport,
|
|
128
138
|
DesktopOnlyPluginSkipError,
|
|
129
139
|
DeviceSettingNamespace,
|
|
@@ -146,8 +156,10 @@ export {
|
|
|
146
156
|
buildDeviceSettingsCommandArguments,
|
|
147
157
|
buildLabelSvg,
|
|
148
158
|
buildSoftKeyboardDiagnosticMessage,
|
|
159
|
+
buildStatusBarBandFailureMessage,
|
|
149
160
|
captureDeviceScreenshot,
|
|
150
161
|
captureObsidianScreenshot,
|
|
162
|
+
checkIsInputMethodShown,
|
|
151
163
|
checkIsMobileTransport,
|
|
152
164
|
checkIsSoftKeyboardUp,
|
|
153
165
|
computeFitToCanvas,
|
|
@@ -167,6 +179,7 @@ export {
|
|
|
167
179
|
labelScreenshot,
|
|
168
180
|
measureLabelCaption,
|
|
169
181
|
openObsidianSettingsTab,
|
|
182
|
+
paintOutStatusBar,
|
|
170
183
|
parseInputMethodState,
|
|
171
184
|
pollInObsidian,
|
|
172
185
|
raiseSoftKeyboard,
|
|
@@ -182,6 +195,7 @@ export {
|
|
|
182
195
|
resolveInstallerCompatibility,
|
|
183
196
|
resolveMissingInjectedPlugins,
|
|
184
197
|
resolveSoftKeyboardTapPoints,
|
|
198
|
+
resolveStatusBarBand,
|
|
185
199
|
restoreAppConfig,
|
|
186
200
|
runAdbBinary,
|
|
187
201
|
runAdbText,
|
|
@@ -198,4 +212,4 @@ export {
|
|
|
198
212
|
withSoftKeyboardEnabled,
|
|
199
213
|
writeDeviceSetting
|
|
200
214
|
};
|
|
201
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2luZGV4LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogQ29udGFpbnMgdGhlIGVudHJ5IHBvaW50IGZvciB0aGUgaW50ZWdyYXRpb24gdGVzdGluZyBtb2R1bGUuXG4gKi9cblxuZXhwb3J0IHR5cGUgeyBSdW5BZGJQYXJhbXMgfSBmcm9tICcuL2FkYi5tanMnO1xuZXhwb3J0IHtcbiAgcnVuQWRiQmluYXJ5LFxuICBydW5BZGJUZXh0LFxuICBydW5BZGJUZXh0V2l0aG91dERldmljZVxufSBmcm9tICcuL2FkYi5tanMnO1xuZXhwb3J0IHR5cGUge1xuICBBcHBDb25maWdSZXN0b3JlLFxuICBHZXRBcHBDb25maWdQYXJhbXMsXG4gIFNldEFwcENvbmZpZ1BhcmFtcyxcbiAgV2l0aEFwcENvbmZpZ1BhcmFtc1xufSBmcm9tICcuL2FwcC1jb25maWcubWpzJztcbmV4cG9ydCB7XG4gIGdldEFwcENvbmZpZyxcbiAgcmVzdG9yZUFwcENvbmZpZyxcbiAgc2V0QXBwQ29uZmlnLFxuICB3aXRoQXBwQ29uZmlnXG59IGZyb20gJy4vYXBwLWNvbmZpZy5tanMnO1xuZXhwb3J0IHR5cGUge1xuICBBc2FyRmFsbGJhY2ssXG4gIEFzYXJGYWxsYmFja1RpZXIsXG4gIFJlc29sdmVBc2FyRmFsbGJhY2tQYXJhbXNcbn0gZnJvbSAnLi9hc2FyLWZhbGxiYWNrLWRldGVjdGlvbi5tanMnO1xuZXhwb3J0IHsgcmVzb2x2ZUFzYXJGYWxsYmFjayB9IGZyb20gJy4vYXNhci1mYWxsYmFjay1kZXRlY3Rpb24ubWpzJztcbmV4cG9ydCB0eXBlIHsgQ2FwdHVyZU9ic2lkaWFuU2NyZWVuc2hvdE9wdGlvbnMgfSBmcm9tICcuL2NhcHR1cmUtb2JzaWRpYW4tc2NyZWVuc2hvdC5tanMnO1xuZXhwb3J0IHsgY2FwdHVyZU9ic2lkaWFuU2NyZWVuc2hvdCB9IGZyb20gJy4vY2FwdHVyZS1vYnNpZGlhbi1zY3JlZW5zaG90Lm1qcyc7XG5leHBvcnQgdHlwZSB7XG4gIENhcHR1cmVTY3JlZW5zaG90UGFyYW1zLFxuICBQbmdEaW1lbnNpb25zXG59IGZyb20gJy4vY2FwdHVyZS1zY3JlZW5zaG90Lm1qcyc7XG5leHBvcnQge1xuICBidWlsZERldmljZU1ldHJpY3NPdmVycmlkZSxcbiAgZGVjb2RlQmFzZTY0UG5nLFxuICBpc1BuZyxcbiAgcmVhZFBuZ0RpbWVuc2lvbnNcbn0gZnJvbSAnLi9jYXB0dXJlLXNjcmVlbnNob3QubWpzJztcbmV4cG9ydCB0eXBlIHsgQ2RwQ29tbWFuZFRpbWVvdXRFcnJvckNvbnN0cnVjdG9yUGFyYW1zIH0gZnJvbSAnLi9jZHAtY29tbWFuZC10aW1lb3V0LWVycm9yLm1qcyc7XG5leHBvcnQgeyBDZHBDb21tYW5kVGltZW91dEVycm9yIH0gZnJvbSAnLi9jZHAtY29tbWFuZC10aW1lb3V0LWVycm9yLm1qcyc7XG5leHBvcnQgdHlwZSB7IENvbmZpZ0RpcmVjdG9yeUZhbGxiYWNrRXJyb3JDb25zdHJ1Y3RvclBhcmFtcyB9IGZyb20gJy4vY29uZmlnLWRpcmVjdG9yeS1mYWxsYmFjay1lcnJvci5tanMnO1xuZXhwb3J0IHsgQ29uZmlnRGlyZWN0b3J5RmFsbGJhY2tFcnJvciB9IGZyb20gJy4vY29uZmlnLWRpcmVjdG9yeS1mYWxsYmFjay1lcnJvci5tanMnO1xuZXhwb3J0IHtcbiAgYXNzZXJ0VmFsaWRDb25maWdEaXJlY3RvcnksXG4gIERFRkFVTFRfQ09ORklHX0RJUkVDVE9SWVxufSBmcm9tICcuL2NvbmZpZy1kaXJlY3RvcnkubWpzJztcbmV4cG9ydCB0eXBlIHtcbiAgQ2RwQ29ubmVjdGlvbixcbiAgQ29ubmVjdFRvQ2RwT3B0aW9uc1xufSBmcm9tICcuL2Nvbm5lY3QtdG8tY2RwLm1qcyc7XG5leHBvcnQgeyBjb25uZWN0VG9DZHAgfSBmcm9tICcuL2Nvbm5lY3QtdG8tY2RwLm1qcyc7XG5leHBvcnQgdHlwZSB7XG4gIENvbnRleHRBcmd1bWVudHMsXG4gIENvbnRleHRPZlxufSBmcm9tICcuL2NvbnRleHQtaWQubWpzJztcbmV4cG9ydCB7IENvbnRleHRJZCB9IGZyb20gJy4vY29udGV4dC1pZC5tanMnO1xuZXhwb3J0IHR5cGUge1xuICBTZXR1cEVycm9yUmVzb2x2ZXIsXG4gIFRyYW5zcG9ydE9wdGlvbnNSZXNvbHZlcixcbiAgVmF1bHRQYXRoUmVzb2x2ZXJcbn0gZnJvbSAnLi9jb250ZXh0LXByb3ZpZGVyLm1qcyc7XG5leHBvcnQge1xuICBzZXRTZXR1cEVycm9yUmVzb2x2ZXIsXG4gIHNldFRyYW5zcG9ydE9wdGlvbnNSZXNvbHZlcixcbiAgc2V0VmF1bHRQYXRoUmVzb2x2ZXJcbn0gZnJvbSAnLi9jb250ZXh0LXByb3ZpZGVyLm1qcyc7XG5leHBvcnQgdHlwZSB7XG4gIEJvb3RzdHJhcERlbW9WYXVsdFBsdWdpbnNQYXJhbXMsXG4gIEJvb3RzdHJhcERlbW9WYXVsdFBsdWdpbnNSZXN1bHQsXG4gIEJ1aWxkRGVtb1ZhdWx0UG9wdWxhdGVBc3luY1BhcmFtcyxcbiAgSW5zdGFsbGVkUGx1Z2luSW5mb1xufSBmcm9tICcuL2RlbW8tdmF1bHQtYm9vdHN0cmFwLm1qcyc7XG5leHBvcnQge1xuICBib290c3RyYXBEZW1vVmF1bHRQbHVnaW5zLFxuICBidWlsZERlbW9WYXVsdFBvcHVsYXRlQXN5bmNcbn0gZnJvbSAnLi9kZW1vLXZhdWx0LWJvb3RzdHJhcC5tanMnO1xuZXhwb3J0IHR5cGUge1xuICBCdWlsZERlbW9WYXVsdFBvcHVsYXRlUGFyYW1zLFxuICBJbmplY3RQbHVnaW5QYXJhbXMsXG4gIFJlc29sdmVNaXNzaW5nSW5qZWN0ZWRQbHVnaW5zUGFyYW1zXG59IGZyb20gJy4vZGVtby12YXVsdC1wb3B1bGF0ZS5tanMnO1xuZXhwb3J0IHtcbiAgYnVpbGREZW1vVmF1bHRQb3B1bGF0ZSxcbiAgcmVzb2x2ZU1pc3NpbmdJbmplY3RlZFBsdWdpbnNcbn0gZnJvbSAnLi9kZW1vLXZhdWx0LXBvcHVsYXRlLm1qcyc7XG5leHBvcnQgdHlwZSB7IFJlYWREZW1vVmF1bHRUcmVlUGFyYW1zIH0gZnJvbSAnLi9kZW1vLXZhdWx0LXRyZWUubWpzJztcbmV4cG9ydCB7IHJlYWREZW1vVmF1bHRUcmVlIH0gZnJvbSAnLi9kZW1vLXZhdWx0LXRyZWUubWpzJztcbmV4cG9ydCB7IERlc2t0b3BPbmx5UGx1Z2luU2tpcEVycm9yIH0gZnJvbSAnLi9kZXNrdG9wLW9ubHktcGx1Z2luLXNraXAtZXJyb3IubWpzJztcbmV4cG9ydCB0eXBlIHsgQ2FwdHVyZURldmljZVNjcmVlbnNob3RQYXJhbXMgfSBmcm9tICcuL2RldmljZS1zY3JlZW5zaG90Lm1qcyc7XG5leHBvcnQgeyBjYXB0dXJlRGV2aWNlU2NyZWVuc2hvdCB9IGZyb20gJy4vZGV2aWNlLXNjcmVlbnNob3QubWpzJztcbmV4cG9ydCB0eXBlIHtcbiAgRGV2aWNlU2V0dGluZ1Jlc3RvcmUsXG4gIERldmljZVNldHRpbmdSZXN0b3JlRGVsZXRlLFxuICBEZXZpY2VTZXR0aW5nUmVzdG9yZVdyaXRlXG59IGZyb20gJy4vZGV2aWNlLXNldHRpbmctcmVzdG9yZS5tanMnO1xuZXhwb3J0IHtcbiAgRGV2aWNlU2V0dGluZ1Jlc3RvcmVLaW5kLFxuICByZXNvbHZlRGV2aWNlU2V0dGluZ1Jlc3RvcmVcbn0gZnJvbSAnLi9kZXZpY2Utc2V0dGluZy1yZXN0b3JlLm1qcyc7XG5leHBvcnQgdHlwZSB7IEJ1aWxkRGV2aWNlU2V0dGluZ3NDb21tYW5kQXJndW1lbnRzUGFyYW1zIH0gZnJvbSAnLi9kZXZpY2Utc2V0dGluZ3MtY29tbWFuZC5tanMnO1xuZXhwb3J0IHtcbiAgYnVpbGREZXZpY2VTZXR0aW5nc0NvbW1hbmRBcmd1bWVudHMsXG4gIERldmljZVNldHRpbmdOYW1lc3BhY2UsXG4gIERldmljZVNldHRpbmdWZXJiXG59IGZyb20gJy4vZGV2aWNlLXNldHRpbmdzLWNvbW1hbmQubWpzJztcbmV4cG9ydCB0eXBlIHtcbiAgRGV2aWNlU2V0dGluZ1BhcmFtcyxcbiAgV2l0aFNvZnRLZXlib2FyZEVuYWJsZWRQYXJhbXMsXG4gIFdyaXRlRGV2aWNlU2V0dGluZ1BhcmFtc1xufSBmcm9tICcuL2RldmljZS1zZXR0aW5ncy5tanMnO1xuZXhwb3J0IHtcbiAgZGVsZXRlRGV2aWNlU2V0dGluZyxcbiAgcmVhZERldmljZVNldHRpbmcsXG4gIHdpdGhTb2Z0S2V5Ym9hcmRFbmFibGVkLFxuICB3cml0ZURldmljZVNldHRpbmdcbn0gZnJvbSAnLi9kZXZpY2Utc2V0dGluZ3MubWpzJztcbmV4cG9ydCB0eXBlIHtcbiAgRWxlY3Ryb25Db21wYXRpYmlsaXR5LFxuICBFbGVjdHJvbkNvbXBhdGliaWxpdHlUaWVyLFxuICBSZXNvbHZlRWxlY3Ryb25Db21wYXRpYmlsaXR5UGFyYW1zXG59IGZyb20gJy4vZWxlY3Ryb24tY29tcGF0aWJpbGl0eS5tanMnO1xuZXhwb3J0IHsgcmVzb2x2ZUVsZWN0cm9uQ29tcGF0aWJpbGl0eSB9IGZyb20gJy4vZWxlY3Ryb24tY29tcGF0aWJpbGl0eS5tanMnO1xuZXhwb3J0IHR5cGUge1xuICBFbXVsYXRvckRldmljZUNhbmRpZGF0ZSxcbiAgU2VsZWN0RW11bGF0b3JEZXZpY2VJZFBhcmFtc1xufSBmcm9tICcuL2VtdWxhdG9yLWRldmljZS1pZC5tanMnO1xuZXhwb3J0IHsgc2VsZWN0RW11bGF0b3JEZXZpY2VJZCB9IGZyb20gJy4vZW11bGF0b3ItZGV2aWNlLWlkLm1qcyc7XG5leHBvcnQgdHlwZSB7IEV2YWxDYXBFeGNlZWRlZEVycm9yQ29uc3RydWN0b3JQYXJhbXMgfSBmcm9tICcuL2V2YWwtY2FwLWV4Y2VlZGVkLWVycm9yLm1qcyc7XG5leHBvcnQge1xuICBFdmFsQ2FwRXhjZWVkZWRFcnJvcixcbiAgaXNTY3JpcHRUaW1lb3V0RXJyb3Jcbn0gZnJvbSAnLi9ldmFsLWNhcC1leGNlZWRlZC1lcnJvci5tanMnO1xuZXhwb3J0IHsgREVGQVVMVF9FVkFMX0NBUF9JTl9NSUxMSVNFQ09ORFMgfSBmcm9tICcuL2V2YWwtY2FwLm1qcyc7XG5leHBvcnQgdHlwZSB7XG4gIENsaWNrRWxlbWVudFBhcmFtcyxcbiAgQ2xpY2tNb3VzZVBhcmFtcyxcbiAgQ29tbW9uQXJndW1lbnRzLFxuICBDcmVhdGVOb3RlUGFyYW1zLFxuICBFdmFsSW5PYnNpZGlhblBhcmFtcyxcbiAgR2VuZXJpY09iamVjdCxcbiAgSG92ZXJFbGVtZW50UGFyYW1zLFxuICBMaWIsXG4gIE1vdXNlQnV0dG9uLFxuICBNb3ZlTW91c2VQYXJhbXMsXG4gIE9wZW5TZXR0aW5nc1RhYlBhcmFtcyxcbiAgUHJlc3NLZXlQYXJhbXMsXG4gIFR5cGVJbnRvRWRpdG9yUGFyYW1zLFxuICBVbmhvdmVyRWxlbWVudFBhcmFtcyxcbiAgV2FpdFVudGlsUGFyYW1zXG59IGZyb20gJy4vZXZhbC1pbi1vYnNpZGlhbi5tanMnO1xuZXhwb3J0IHsgZXZhbEluT2JzaWRpYW4gfSBmcm9tICcuL2V2YWwtaW4tb2JzaWRpYW4ubWpzJztcbmV4cG9ydCB0eXBlIHtcbiAgQ29tcHV0ZUZpdFRvQ2FudmFzUGFyYW1zLFxuICBGaXRTY3JlZW5zaG90VG9DYW52YXNPcHRpb25zLFxuICBGaXRUb0NhbnZhc0dlb21ldHJ5XG59IGZyb20gJy4vZml0LXNjcmVlbnNob3QubWpzJztcbmV4cG9ydCB7XG4gIGNvbXB1dGVGaXRUb0NhbnZhcyxcbiAgZml0U2NyZWVuc2hvdFRvQ2FudmFzXG59IGZyb20gJy4vZml0LXNjcmVlbnNob3QubWpzJztcbmV4cG9ydCB0eXBlIHsgSGlkZVZhdWx0TmFtZU9wdGlvbnMgfSBmcm9tICcuL2hpZGUtdmF1bHQtbmFtZS5tanMnO1xuZXhwb3J0IHsgaGlkZVZhdWx0TmFtZSB9IGZyb20gJy4vaGlkZS12YXVsdC1uYW1lLm1qcyc7XG5leHBvcnQgdHlwZSB7IEluY29tcGF0aWJsZUluc3RhbGxlclZlcnNpb25FcnJvckNvbnN0cnVjdG9yUGFyYW1zIH0gZnJvbSAnLi9pbmNvbXBhdGlibGUtaW5zdGFsbGVyLXZlcnNpb24tZXJyb3IubWpzJztcbmV4cG9ydCB7IEluY29tcGF0aWJsZUluc3RhbGxlclZlcnNpb25FcnJvciB9IGZyb20gJy4vaW5jb21wYXRpYmxlLWluc3RhbGxlci12ZXJzaW9uLWVycm9yLm1qcyc7XG5leHBvcnQgdHlwZSB7XG4gIEluc3RhbGxlckNvbXBhdGliaWxpdHksXG4gIEluc3RhbGxlckNvbXBhdGliaWxpdHlUaWVyLFxuICBSZXNvbHZlSW5zdGFsbGVyQ29tcGF0aWJpbGl0eVBhcmFtc1xufSBmcm9tICcuL2luc3RhbGxlci1jb21wYXRpYmlsaXR5Lm1qcyc7XG5leHBvcnQgeyByZXNvbHZlSW5zdGFsbGVyQ29tcGF0aWJpbGl0eSB9IGZyb20gJy4vaW5zdGFsbGVyLWNvbXBhdGliaWxpdHkubWpzJztcbmV4cG9ydCB0eXBlIHsgSW50ZWdyYXRpb25TZXR1cEZhaWxlZEVycm9yQ29uc3RydWN0b3JQYXJhbXMgfSBmcm9tICcuL2ludGVncmF0aW9uLXNldHVwLWZhaWxlZC1lcnJvci5tanMnO1xuZXhwb3J0IHsgSW50ZWdyYXRpb25TZXR1cEZhaWxlZEVycm9yIH0gZnJvbSAnLi9pbnRlZ3JhdGlvbi1zZXR1cC1mYWlsZWQtZXJyb3IubWpzJztcbmV4cG9ydCB0eXBlIHtcbiAgQ29tcHV0ZUxhYmVsQmFuZFBhcmFtcyxcbiAgTGFiZWxCYW5kR2VvbWV0cnksXG4gIExhYmVsQ2FwdGlvbk1lYXN1cmVtZW50LFxuICBMYWJlbFNjcmVlbnNob3RPcHRpb25zLFxuICBNZWFzdXJlTGFiZWxDYXB0aW9uUGFyYW1zXG59IGZyb20gJy4vbGFiZWwtc2NyZWVuc2hvdC5tanMnO1xuZXhwb3J0IHtcbiAgYnVpbGRMYWJlbFN2ZyxcbiAgY29tcHV0ZUxhYmVsQmFuZCxcbiAgZXNjYXBlU3ZnVGV4dCxcbiAgbGFiZWxTY3JlZW5zaG90LFxuICBtZWFzdXJlTGFiZWxDYXB0aW9uXG59IGZyb20gJy4vbGFiZWwtc2NyZWVuc2hvdC5tanMnO1xuZXhwb3J0IHR5cGUgeyBMaWJSZXNvbHZlciB9IGZyb20gJy4vbGliLXJlZ2lzdHJ5Lm1qcyc7XG5leHBvcnQgeyByZWdpc3RlckxpYlJlc29sdmVyIH0gZnJvbSAnLi9saWItcmVnaXN0cnkubWpzJztcbmV4cG9ydCB0eXBlIHtcbiAgT2JzaWRpYW5SdW50aW1lVmVyc2lvbnMsXG4gIE9ic2lkaWFuVmVyc2lvbkNoYW5nZWxvZ1VybHMsXG4gIE9ic2lkaWFuVmVyc2lvbkRvd25sb2FkcyxcbiAgT2JzaWRpYW5WZXJzaW9uTWV0YWRhdGFcbn0gZnJvbSAnLi9vYnNpZGlhbi1tZXRhZGF0YS5tanMnO1xuZXhwb3J0IHsgZ2V0VmVyc2lvbk1ldGFkYXRhIH0gZnJvbSAnLi9vYnNpZGlhbi1tZXRhZGF0YS5tanMnO1xuZXhwb3J0IHtcbiAgQ0FUQUxZU1RfTEFURVNULFxuICBQVUJMSUNfTEFURVNUXG59IGZyb20gJy4vb2JzaWRpYW4tdmVyc2lvbi5tanMnO1xuZXhwb3J0IHR5cGUgeyBPcGVuT2JzaWRpYW5TZXR0aW5nc1RhYlBhcmFtcyB9IGZyb20gJy4vb3Blbi1vYnNpZGlhbi1zZXR0aW5ncy10YWIubWpzJztcbmV4cG9ydCB7IG9wZW5PYnNpZGlhblNldHRpbmdzVGFiIH0gZnJvbSAnLi9vcGVuLW9ic2lkaWFuLXNldHRpbmdzLXRhYi5tanMnO1xuZXhwb3J0IHR5cGUgeyBPd25lZEluc3RhbmNlRXhpdGVkRXJyb3JDb25zdHJ1Y3RvclBhcmFtcyB9IGZyb20gJy4vb3duZWQtaW5zdGFuY2UtZXhpdGVkLWVycm9yLm1qcyc7XG5leHBvcnQgeyBPd25lZEluc3RhbmNlRXhpdGVkRXJyb3IgfSBmcm9tICcuL293bmVkLWluc3RhbmNlLWV4aXRlZC1lcnJvci5tanMnO1xuZXhwb3J0IHR5cGUgeyBQb2xsSW5PYnNpZGlhblBhcmFtcyB9IGZyb20gJy4vcG9sbC1pbi1vYnNpZGlhbi5tanMnO1xuZXhwb3J0IHsgcG9sbEluT2JzaWRpYW4gfSBmcm9tICcuL3BvbGwtaW4tb2JzaWRpYW4ubWpzJztcbmV4cG9ydCB7IFJlbmRlcmVyRmFpbGVkVG9Jbml0aWFsaXplRXJyb3IgfSBmcm9tICcuL3JlbmRlcmVyLWZhaWxlZC10by1pbml0aWFsaXplLWVycm9yLm1qcyc7XG5leHBvcnQgdHlwZSB7IFJlc29sdmVFbXVsYXRvckRldmljZUlkUGFyYW1zIH0gZnJvbSAnLi9yZXNvbHZlLWVtdWxhdG9yLWRldmljZS1pZC5tanMnO1xuZXhwb3J0IHsgcmVzb2x2ZUVtdWxhdG9yRGV2aWNlSWQgfSBmcm9tICcuL3Jlc29sdmUtZW11bGF0b3ItZGV2aWNlLWlkLm1qcyc7XG5leHBvcnQgdHlwZSB7IFJ1bk9ic2lkaWFuVmVyc2lvbk1hdHJpeFBhcmFtcyB9IGZyb20gJy4vcnVuLXZlcnNpb24tbWF0cml4Lm1qcyc7XG5leHBvcnQgeyBydW5PYnNpZGlhblZlcnNpb25NYXRyaXggfSBmcm9tICcuL3J1bi12ZXJzaW9uLW1hdHJpeC5tanMnO1xuZXhwb3J0IHR5cGUgeyBTaWxlbnRBc2FyRmFsbGJhY2tFcnJvckNvbnN0cnVjdG9yUGFyYW1zIH0gZnJvbSAnLi9zaWxlbnQtYXNhci1mYWxsYmFjay1lcnJvci5tanMnO1xuZXhwb3J0IHsgU2lsZW50QXNhckZhbGxiYWNrRXJyb3IgfSBmcm9tICcuL3NpbGVudC1hc2FyLWZhbGxiYWNrLWVycm9yLm1qcyc7XG5leHBvcnQgdHlwZSB7XG4gIEJ1aWxkU29mdEtleWJvYXJkRGlhZ25vc3RpY01lc3NhZ2VQYXJhbXMsXG4gIENoZWNrSXNTb2Z0S2V5Ym9hcmRVcFBhcmFtcyxcbiAgRWxlbWVudFJlY3QsXG4gIFJlc29sdmVTb2Z0S2V5Ym9hcmRUYXBQb2ludHNQYXJhbXMsXG4gIFNvZnRLZXlib2FyZFRhcFBvaW50LFxuICBTb2Z0S2V5Ym9hcmRWaWV3cG9ydFNuYXBzaG90XG59IGZyb20gJy4vc29mdC1rZXlib2FyZC1nZW9tZXRyeS5tanMnO1xuZXhwb3J0IHtcbiAgYnVpbGRTb2Z0S2V5Ym9hcmREaWFnbm9zdGljTWVzc2FnZSxcbiAgY2hlY2tJc1NvZnRLZXlib2FyZFVwLFxuICBERUZBVUxUX01JTklNVU1fS0VZQk9BUkRfSEVJR0hUX0lOX1BJWEVMUyxcbiAgcGFyc2VJbnB1dE1ldGhvZFN0YXRlLFxuICByZXNvbHZlU29mdEtleWJvYXJkVGFwUG9pbnRzXG59IGZyb20gJy4vc29mdC1rZXlib2FyZC1nZW9tZXRyeS5tanMnO1xuZXhwb3J0IHR5cGUge1xuICBSYWlzZVNvZnRLZXlib2FyZFBhcmFtcyxcbiAgVGFwRGV2aWNlUGFyYW1zXG59IGZyb20gJy4vc29mdC1rZXlib2FyZC5tanMnO1xuZXhwb3J0IHtcbiAgcmFpc2VTb2Z0S2V5Ym9hcmQsXG4gIHRhcERldmljZVxufSBmcm9tICcuL3NvZnQta2V5Ym9hcmQubWpzJztcbmV4cG9ydCB0eXBlIHsgU3RhbGVCdWlsZEVycm9yQ29uc3RydWN0b3JQYXJhbXMgfSBmcm9tICcuL3N0YWxlLWJ1aWxkLWVycm9yLm1qcyc7XG5leHBvcnQgeyBTdGFsZUJ1aWxkRXJyb3IgfSBmcm9tICcuL3N0YWxlLWJ1aWxkLWVycm9yLm1qcyc7XG5leHBvcnQgdHlwZSB7XG4gIFBvcHVsYXRlRmlsZUNvbnRlbnQsXG4gIFBvcHVsYXRlRmlsZXNQYXJhbXMsXG4gIFRlbXBvcmFyeVZhdWx0Q29uc3RydWN0b3JPcHRpb25zXG59IGZyb20gJy4vdGVtcG9yYXJ5LXZhdWx0Lm1qcyc7XG5leHBvcnQgeyBUZW1wb3JhcnlWYXVsdCB9IGZyb20gJy4vdGVtcG9yYXJ5LXZhdWx0Lm1qcyc7XG5leHBvcnQgdHlwZSB7XG4gIEFwcGl1bVNlc3Npb25JbmZvLFxuICBBcHBpdW1UcmFuc3BvcnRDb25maWdcbn0gZnJvbSAnLi90cmFuc3BvcnQtYXBwaXVtLm1qcyc7XG5leHBvcnQgeyBBcHBpdW1UcmFuc3BvcnQgfSBmcm9tICcuL3RyYW5zcG9ydC1hcHBpdW0ubWpzJztcbmV4cG9ydCB0eXBlIHtcbiAgRGVza3RvcENkcFRyYW5zcG9ydENvbmZpZyxcbiAgT3duZWRJbnN0YW5jZUFzYXIsXG4gIE93bmVkSW5zdGFuY2VDb25maWcsXG4gIE93bmVkSW5zdGFuY2VFbmRwb2ludFxufSBmcm9tICcuL3RyYW5zcG9ydC1kZXNrdG9wLWNkcC5tanMnO1xuZXhwb3J0IHsgRGVza3RvcENkcFRyYW5zcG9ydCB9IGZyb20gJy4vdHJhbnNwb3J0LWRlc2t0b3AtY2RwLm1qcyc7XG5leHBvcnQgeyBjcmVhdGVUcmFuc3BvcnRGcm9tT3B0aW9ucyB9IGZyb20gJy4vdHJhbnNwb3J0LWZhY3RvcnkubWpzJztcbmV4cG9ydCB0eXBlIHtcbiAgT2JzaWRpYW5BbmRyb2lkQXBwaXVtVHJhbnNwb3J0T3B0aW9ucyxcbiAgT2JzaWRpYW5DZHBUcmFuc3BvcnRPcHRpb25zLFxuICBPYnNpZGlhblRyYW5zcG9ydE9wdGlvbnNcbn0gZnJvbSAnLi90cmFuc3BvcnQtb3B0aW9ucy5tanMnO1xuZXhwb3J0IHsgY2hlY2tJc01vYmlsZVRyYW5zcG9ydCB9IGZyb20gJy4vdHJhbnNwb3J0LW9wdGlvbnMubWpzJztcbmV4cG9ydCB0eXBlIHtcbiAgQ29uc29sZUNhcHR1cmVIYW5kbGUsXG4gIE9ic2lkaWFuVHJhbnNwb3J0LFxuICBUcmFuc3BvcnRFdmFsT3B0aW9uc1xufSBmcm9tICcuL3RyYW5zcG9ydC5tanMnO1xuZXhwb3J0IHtcbiAgcmVnaXN0ZXJWYXVsdCxcbiAgdW5yZWdpc3RlclZhdWx0XG59IGZyb20gJy4vdmF1bHQtcmVnaXN0cnkubWpzJztcbmV4cG9ydCB0eXBlIHsgT2JzaWRpYW5WZXJzaW9uTWF0cml4RW50cnkgfSBmcm9tICcuL3ZlcnNpb24tbWF0cml4Lm1qcyc7XG5leHBvcnQgeyBERUZBVUxUX09CU0lESUFOX1ZFUlNJT05fU1BFQ1MgfSBmcm9tICcuL3ZlcnNpb24tbWF0cml4Lm1qcyc7XG4iXSwKICAibWFwcGluZ3MiOiAiQUFPQTtBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLE9BQ0s7QUFPUDtBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxPQUNLO0FBTVAsU0FBUywyQkFBMkI7QUFFcEMsU0FBUyxpQ0FBaUM7QUFLMUM7QUFBQSxFQUNFO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsT0FDSztBQUVQLFNBQVMsOEJBQThCO0FBRXZDLFNBQVMsb0NBQW9DO0FBQzdDO0FBQUEsRUFDRTtBQUFBLEVBQ0E7QUFBQSxPQUNLO0FBS1AsU0FBUyxvQkFBb0I7QUFLN0IsU0FBUyxpQkFBaUI7QUFNMUI7QUFBQSxFQUNFO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxPQUNLO0FBT1A7QUFBQSxFQUNFO0FBQUEsRUFDQTtBQUFBLE9BQ0s7QUFNUDtBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsT0FDSztBQUVQLFNBQVMseUJBQXlCO0FBQ2xDLFNBQVMsa0NBQWtDO0FBRTNDLFNBQVMsK0JBQStCO0FBTXhDO0FBQUEsRUFDRTtBQUFBLEVBQ0E7QUFBQSxPQUNLO0FBRVA7QUFBQSxFQUNFO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxPQUNLO0FBTVA7QUFBQSxFQUNFO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsT0FDSztBQU1QLFNBQVMsb0NBQW9DO0FBSzdDLFNBQVMsOEJBQThCO0FBRXZDO0FBQUEsRUFDRTtBQUFBLEVBQ0E7QUFBQSxPQUNLO0FBQ1AsU0FBUyx3Q0FBd0M7QUFrQmpELFNBQVMsc0JBQXNCO0FBTS9CO0FBQUEsRUFDRTtBQUFBLEVBQ0E7QUFBQSxPQUNLO0FBRVAsU0FBUyxxQkFBcUI7QUFFOUIsU0FBUyx5Q0FBeUM7QUFNbEQsU0FBUyxxQ0FBcUM7QUFFOUMsU0FBUyxtQ0FBbUM7QUFRNUM7QUFBQSxFQUNFO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLE9BQ0s7QUFFUCxTQUFTLDJCQUEyQjtBQU9wQyxTQUFTLDBCQUEwQjtBQUNuQztBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsT0FDSztBQUVQLFNBQVMsK0JBQStCO0FBRXhDLFNBQVMsZ0NBQWdDO0FBRXpDLFNBQVMsc0JBQXNCO0FBQy9CLFNBQVMsdUNBQXVDO0FBRWhELFNBQVMsK0JBQStCO0FBRXhDLFNBQVMsZ0NBQWdDO0FBRXpDLFNBQVMsK0JBQStCO0FBU3hDO0FBQUEsRUFDRTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxPQUNLO0FBS1A7QUFBQSxFQUNFO0FBQUEsRUFDQTtBQUFBLE9BQ0s7QUFFUCxTQUFTLHVCQUF1QjtBQU1oQyxTQUFTLHNCQUFzQjtBQUsvQixTQUFTLHVCQUF1QjtBQU9oQyxTQUFTLDJCQUEyQjtBQUNwQyxTQUFTLGtDQUFrQztBQU0zQyxTQUFTLDhCQUE4QjtBQU12QztBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsT0FDSztBQUVQLFNBQVMsc0NBQXNDOyIsCiAgIm5hbWVzIjogW10KfQo=
|
|
215
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2luZGV4LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogQ29udGFpbnMgdGhlIGVudHJ5IHBvaW50IGZvciB0aGUgaW50ZWdyYXRpb24gdGVzdGluZyBtb2R1bGUuXG4gKi9cblxuZXhwb3J0IHR5cGUgeyBSdW5BZGJQYXJhbXMgfSBmcm9tICcuL2FkYi5tanMnO1xuZXhwb3J0IHtcbiAgcnVuQWRiQmluYXJ5LFxuICBydW5BZGJUZXh0LFxuICBydW5BZGJUZXh0V2l0aG91dERldmljZVxufSBmcm9tICcuL2FkYi5tanMnO1xuZXhwb3J0IHR5cGUge1xuICBBcHBDb25maWdSZXN0b3JlLFxuICBHZXRBcHBDb25maWdQYXJhbXMsXG4gIFNldEFwcENvbmZpZ1BhcmFtcyxcbiAgV2l0aEFwcENvbmZpZ1BhcmFtc1xufSBmcm9tICcuL2FwcC1jb25maWcubWpzJztcbmV4cG9ydCB7XG4gIGdldEFwcENvbmZpZyxcbiAgcmVzdG9yZUFwcENvbmZpZyxcbiAgc2V0QXBwQ29uZmlnLFxuICB3aXRoQXBwQ29uZmlnXG59IGZyb20gJy4vYXBwLWNvbmZpZy5tanMnO1xuZXhwb3J0IHR5cGUge1xuICBBc2FyRmFsbGJhY2ssXG4gIEFzYXJGYWxsYmFja1RpZXIsXG4gIFJlc29sdmVBc2FyRmFsbGJhY2tQYXJhbXNcbn0gZnJvbSAnLi9hc2FyLWZhbGxiYWNrLWRldGVjdGlvbi5tanMnO1xuZXhwb3J0IHsgcmVzb2x2ZUFzYXJGYWxsYmFjayB9IGZyb20gJy4vYXNhci1mYWxsYmFjay1kZXRlY3Rpb24ubWpzJztcbmV4cG9ydCB0eXBlIHsgQ2FwdHVyZU9ic2lkaWFuU2NyZWVuc2hvdE9wdGlvbnMgfSBmcm9tICcuL2NhcHR1cmUtb2JzaWRpYW4tc2NyZWVuc2hvdC5tanMnO1xuZXhwb3J0IHsgY2FwdHVyZU9ic2lkaWFuU2NyZWVuc2hvdCB9IGZyb20gJy4vY2FwdHVyZS1vYnNpZGlhbi1zY3JlZW5zaG90Lm1qcyc7XG5leHBvcnQgdHlwZSB7XG4gIENhcHR1cmVTY3JlZW5zaG90UGFyYW1zLFxuICBQbmdEaW1lbnNpb25zXG59IGZyb20gJy4vY2FwdHVyZS1zY3JlZW5zaG90Lm1qcyc7XG5leHBvcnQge1xuICBidWlsZERldmljZU1ldHJpY3NPdmVycmlkZSxcbiAgZGVjb2RlQmFzZTY0UG5nLFxuICBpc1BuZyxcbiAgcmVhZFBuZ0RpbWVuc2lvbnNcbn0gZnJvbSAnLi9jYXB0dXJlLXNjcmVlbnNob3QubWpzJztcbmV4cG9ydCB0eXBlIHsgQ2RwQ29tbWFuZFRpbWVvdXRFcnJvckNvbnN0cnVjdG9yUGFyYW1zIH0gZnJvbSAnLi9jZHAtY29tbWFuZC10aW1lb3V0LWVycm9yLm1qcyc7XG5leHBvcnQgeyBDZHBDb21tYW5kVGltZW91dEVycm9yIH0gZnJvbSAnLi9jZHAtY29tbWFuZC10aW1lb3V0LWVycm9yLm1qcyc7XG5leHBvcnQgdHlwZSB7IENvbmZpZ0RpcmVjdG9yeUZhbGxiYWNrRXJyb3JDb25zdHJ1Y3RvclBhcmFtcyB9IGZyb20gJy4vY29uZmlnLWRpcmVjdG9yeS1mYWxsYmFjay1lcnJvci5tanMnO1xuZXhwb3J0IHsgQ29uZmlnRGlyZWN0b3J5RmFsbGJhY2tFcnJvciB9IGZyb20gJy4vY29uZmlnLWRpcmVjdG9yeS1mYWxsYmFjay1lcnJvci5tanMnO1xuZXhwb3J0IHtcbiAgYXNzZXJ0VmFsaWRDb25maWdEaXJlY3RvcnksXG4gIERFRkFVTFRfQ09ORklHX0RJUkVDVE9SWVxufSBmcm9tICcuL2NvbmZpZy1kaXJlY3RvcnkubWpzJztcbmV4cG9ydCB0eXBlIHtcbiAgQ2RwQ29ubmVjdGlvbixcbiAgQ29ubmVjdFRvQ2RwT3B0aW9uc1xufSBmcm9tICcuL2Nvbm5lY3QtdG8tY2RwLm1qcyc7XG5leHBvcnQgeyBjb25uZWN0VG9DZHAgfSBmcm9tICcuL2Nvbm5lY3QtdG8tY2RwLm1qcyc7XG5leHBvcnQgdHlwZSB7XG4gIENvbnRleHRBcmd1bWVudHMsXG4gIENvbnRleHRPZlxufSBmcm9tICcuL2NvbnRleHQtaWQubWpzJztcbmV4cG9ydCB7IENvbnRleHRJZCB9IGZyb20gJy4vY29udGV4dC1pZC5tanMnO1xuZXhwb3J0IHR5cGUge1xuICBTZXR1cEVycm9yUmVzb2x2ZXIsXG4gIFRyYW5zcG9ydE9wdGlvbnNSZXNvbHZlcixcbiAgVmF1bHRQYXRoUmVzb2x2ZXJcbn0gZnJvbSAnLi9jb250ZXh0LXByb3ZpZGVyLm1qcyc7XG5leHBvcnQge1xuICBzZXRTZXR1cEVycm9yUmVzb2x2ZXIsXG4gIHNldFRyYW5zcG9ydE9wdGlvbnNSZXNvbHZlcixcbiAgc2V0VmF1bHRQYXRoUmVzb2x2ZXJcbn0gZnJvbSAnLi9jb250ZXh0LXByb3ZpZGVyLm1qcyc7XG5leHBvcnQgdHlwZSB7XG4gIEJvb3RzdHJhcERlbW9WYXVsdFBsdWdpbnNQYXJhbXMsXG4gIEJvb3RzdHJhcERlbW9WYXVsdFBsdWdpbnNSZXN1bHQsXG4gIEJ1aWxkRGVtb1ZhdWx0UG9wdWxhdGVBc3luY1BhcmFtcyxcbiAgSW5zdGFsbGVkUGx1Z2luSW5mb1xufSBmcm9tICcuL2RlbW8tdmF1bHQtYm9vdHN0cmFwLm1qcyc7XG5leHBvcnQge1xuICBib290c3RyYXBEZW1vVmF1bHRQbHVnaW5zLFxuICBidWlsZERlbW9WYXVsdFBvcHVsYXRlQXN5bmNcbn0gZnJvbSAnLi9kZW1vLXZhdWx0LWJvb3RzdHJhcC5tanMnO1xuZXhwb3J0IHR5cGUge1xuICBCdWlsZERlbW9WYXVsdFBvcHVsYXRlUGFyYW1zLFxuICBJbmplY3RQbHVnaW5QYXJhbXMsXG4gIFJlc29sdmVNaXNzaW5nSW5qZWN0ZWRQbHVnaW5zUGFyYW1zXG59IGZyb20gJy4vZGVtby12YXVsdC1wb3B1bGF0ZS5tanMnO1xuZXhwb3J0IHtcbiAgYnVpbGREZW1vVmF1bHRQb3B1bGF0ZSxcbiAgcmVzb2x2ZU1pc3NpbmdJbmplY3RlZFBsdWdpbnNcbn0gZnJvbSAnLi9kZW1vLXZhdWx0LXBvcHVsYXRlLm1qcyc7XG5leHBvcnQgdHlwZSB7IFJlYWREZW1vVmF1bHRUcmVlUGFyYW1zIH0gZnJvbSAnLi9kZW1vLXZhdWx0LXRyZWUubWpzJztcbmV4cG9ydCB7IHJlYWREZW1vVmF1bHRUcmVlIH0gZnJvbSAnLi9kZW1vLXZhdWx0LXRyZWUubWpzJztcbmV4cG9ydCB7IERlc2t0b3BPbmx5UGx1Z2luU2tpcEVycm9yIH0gZnJvbSAnLi9kZXNrdG9wLW9ubHktcGx1Z2luLXNraXAtZXJyb3IubWpzJztcbmV4cG9ydCB0eXBlIHsgQ2FwdHVyZURldmljZVNjcmVlbnNob3RQYXJhbXMgfSBmcm9tICcuL2RldmljZS1zY3JlZW5zaG90Lm1qcyc7XG5leHBvcnQgeyBjYXB0dXJlRGV2aWNlU2NyZWVuc2hvdCB9IGZyb20gJy4vZGV2aWNlLXNjcmVlbnNob3QubWpzJztcbmV4cG9ydCB0eXBlIHtcbiAgRGV2aWNlU2V0dGluZ1Jlc3RvcmUsXG4gIERldmljZVNldHRpbmdSZXN0b3JlRGVsZXRlLFxuICBEZXZpY2VTZXR0aW5nUmVzdG9yZVdyaXRlXG59IGZyb20gJy4vZGV2aWNlLXNldHRpbmctcmVzdG9yZS5tanMnO1xuZXhwb3J0IHtcbiAgRGV2aWNlU2V0dGluZ1Jlc3RvcmVLaW5kLFxuICByZXNvbHZlRGV2aWNlU2V0dGluZ1Jlc3RvcmVcbn0gZnJvbSAnLi9kZXZpY2Utc2V0dGluZy1yZXN0b3JlLm1qcyc7XG5leHBvcnQgdHlwZSB7IEJ1aWxkRGV2aWNlU2V0dGluZ3NDb21tYW5kQXJndW1lbnRzUGFyYW1zIH0gZnJvbSAnLi9kZXZpY2Utc2V0dGluZ3MtY29tbWFuZC5tanMnO1xuZXhwb3J0IHtcbiAgYnVpbGREZXZpY2VTZXR0aW5nc0NvbW1hbmRBcmd1bWVudHMsXG4gIERldmljZVNldHRpbmdOYW1lc3BhY2UsXG4gIERldmljZVNldHRpbmdWZXJiXG59IGZyb20gJy4vZGV2aWNlLXNldHRpbmdzLWNvbW1hbmQubWpzJztcbmV4cG9ydCB0eXBlIHtcbiAgRGV2aWNlU2V0dGluZ1BhcmFtcyxcbiAgV2l0aFNvZnRLZXlib2FyZEVuYWJsZWRQYXJhbXMsXG4gIFdyaXRlRGV2aWNlU2V0dGluZ1BhcmFtc1xufSBmcm9tICcuL2RldmljZS1zZXR0aW5ncy5tanMnO1xuZXhwb3J0IHtcbiAgZGVsZXRlRGV2aWNlU2V0dGluZyxcbiAgcmVhZERldmljZVNldHRpbmcsXG4gIHdpdGhTb2Z0S2V5Ym9hcmRFbmFibGVkLFxuICB3cml0ZURldmljZVNldHRpbmdcbn0gZnJvbSAnLi9kZXZpY2Utc2V0dGluZ3MubWpzJztcbmV4cG9ydCB0eXBlIHtcbiAgRWxlY3Ryb25Db21wYXRpYmlsaXR5LFxuICBFbGVjdHJvbkNvbXBhdGliaWxpdHlUaWVyLFxuICBSZXNvbHZlRWxlY3Ryb25Db21wYXRpYmlsaXR5UGFyYW1zXG59IGZyb20gJy4vZWxlY3Ryb24tY29tcGF0aWJpbGl0eS5tanMnO1xuZXhwb3J0IHsgcmVzb2x2ZUVsZWN0cm9uQ29tcGF0aWJpbGl0eSB9IGZyb20gJy4vZWxlY3Ryb24tY29tcGF0aWJpbGl0eS5tanMnO1xuZXhwb3J0IHR5cGUge1xuICBFbXVsYXRvckRldmljZUNhbmRpZGF0ZSxcbiAgU2VsZWN0RW11bGF0b3JEZXZpY2VJZFBhcmFtc1xufSBmcm9tICcuL2VtdWxhdG9yLWRldmljZS1pZC5tanMnO1xuZXhwb3J0IHsgc2VsZWN0RW11bGF0b3JEZXZpY2VJZCB9IGZyb20gJy4vZW11bGF0b3ItZGV2aWNlLWlkLm1qcyc7XG5leHBvcnQgdHlwZSB7IEV2YWxDYXBFeGNlZWRlZEVycm9yQ29uc3RydWN0b3JQYXJhbXMgfSBmcm9tICcuL2V2YWwtY2FwLWV4Y2VlZGVkLWVycm9yLm1qcyc7XG5leHBvcnQge1xuICBFdmFsQ2FwRXhjZWVkZWRFcnJvcixcbiAgaXNTY3JpcHRUaW1lb3V0RXJyb3Jcbn0gZnJvbSAnLi9ldmFsLWNhcC1leGNlZWRlZC1lcnJvci5tanMnO1xuZXhwb3J0IHsgREVGQVVMVF9FVkFMX0NBUF9JTl9NSUxMSVNFQ09ORFMgfSBmcm9tICcuL2V2YWwtY2FwLm1qcyc7XG5leHBvcnQgdHlwZSB7XG4gIENsaWNrRWxlbWVudFBhcmFtcyxcbiAgQ2xpY2tNb3VzZVBhcmFtcyxcbiAgQ29tbW9uQXJndW1lbnRzLFxuICBDcmVhdGVOb3RlUGFyYW1zLFxuICBFdmFsSW5PYnNpZGlhblBhcmFtcyxcbiAgR2VuZXJpY09iamVjdCxcbiAgSG92ZXJFbGVtZW50UGFyYW1zLFxuICBMaWIsXG4gIE1vdXNlQnV0dG9uLFxuICBNb3ZlTW91c2VQYXJhbXMsXG4gIE9wZW5TZXR0aW5nc1RhYlBhcmFtcyxcbiAgUHJlc3NLZXlQYXJhbXMsXG4gIFR5cGVJbnRvRWRpdG9yUGFyYW1zLFxuICBVbmhvdmVyRWxlbWVudFBhcmFtcyxcbiAgV2FpdFVudGlsUGFyYW1zXG59IGZyb20gJy4vZXZhbC1pbi1vYnNpZGlhbi5tanMnO1xuZXhwb3J0IHsgZXZhbEluT2JzaWRpYW4gfSBmcm9tICcuL2V2YWwtaW4tb2JzaWRpYW4ubWpzJztcbmV4cG9ydCB0eXBlIHtcbiAgQ29tcHV0ZUZpdFRvQ2FudmFzUGFyYW1zLFxuICBGaXRTY3JlZW5zaG90VG9DYW52YXNPcHRpb25zLFxuICBGaXRUb0NhbnZhc0dlb21ldHJ5XG59IGZyb20gJy4vZml0LXNjcmVlbnNob3QubWpzJztcbmV4cG9ydCB7XG4gIGNvbXB1dGVGaXRUb0NhbnZhcyxcbiAgZml0U2NyZWVuc2hvdFRvQ2FudmFzXG59IGZyb20gJy4vZml0LXNjcmVlbnNob3QubWpzJztcbmV4cG9ydCB0eXBlIHsgSGlkZVZhdWx0TmFtZU9wdGlvbnMgfSBmcm9tICcuL2hpZGUtdmF1bHQtbmFtZS5tanMnO1xuZXhwb3J0IHsgaGlkZVZhdWx0TmFtZSB9IGZyb20gJy4vaGlkZS12YXVsdC1uYW1lLm1qcyc7XG5leHBvcnQgdHlwZSB7IEluY29tcGF0aWJsZUluc3RhbGxlclZlcnNpb25FcnJvckNvbnN0cnVjdG9yUGFyYW1zIH0gZnJvbSAnLi9pbmNvbXBhdGlibGUtaW5zdGFsbGVyLXZlcnNpb24tZXJyb3IubWpzJztcbmV4cG9ydCB7IEluY29tcGF0aWJsZUluc3RhbGxlclZlcnNpb25FcnJvciB9IGZyb20gJy4vaW5jb21wYXRpYmxlLWluc3RhbGxlci12ZXJzaW9uLWVycm9yLm1qcyc7XG5leHBvcnQgdHlwZSB7XG4gIEluc3RhbGxlckNvbXBhdGliaWxpdHksXG4gIEluc3RhbGxlckNvbXBhdGliaWxpdHlUaWVyLFxuICBSZXNvbHZlSW5zdGFsbGVyQ29tcGF0aWJpbGl0eVBhcmFtc1xufSBmcm9tICcuL2luc3RhbGxlci1jb21wYXRpYmlsaXR5Lm1qcyc7XG5leHBvcnQgeyByZXNvbHZlSW5zdGFsbGVyQ29tcGF0aWJpbGl0eSB9IGZyb20gJy4vaW5zdGFsbGVyLWNvbXBhdGliaWxpdHkubWpzJztcbmV4cG9ydCB0eXBlIHsgSW50ZWdyYXRpb25TZXR1cEZhaWxlZEVycm9yQ29uc3RydWN0b3JQYXJhbXMgfSBmcm9tICcuL2ludGVncmF0aW9uLXNldHVwLWZhaWxlZC1lcnJvci5tanMnO1xuZXhwb3J0IHsgSW50ZWdyYXRpb25TZXR1cEZhaWxlZEVycm9yIH0gZnJvbSAnLi9pbnRlZ3JhdGlvbi1zZXR1cC1mYWlsZWQtZXJyb3IubWpzJztcbmV4cG9ydCB0eXBlIHtcbiAgQ29tcHV0ZUxhYmVsQmFuZFBhcmFtcyxcbiAgTGFiZWxCYW5kR2VvbWV0cnksXG4gIExhYmVsQ2FwdGlvbk1lYXN1cmVtZW50LFxuICBMYWJlbFNjcmVlbnNob3RPcHRpb25zLFxuICBNZWFzdXJlTGFiZWxDYXB0aW9uUGFyYW1zXG59IGZyb20gJy4vbGFiZWwtc2NyZWVuc2hvdC5tanMnO1xuZXhwb3J0IHtcbiAgYnVpbGRMYWJlbFN2ZyxcbiAgY29tcHV0ZUxhYmVsQmFuZCxcbiAgZXNjYXBlU3ZnVGV4dCxcbiAgbGFiZWxTY3JlZW5zaG90LFxuICBtZWFzdXJlTGFiZWxDYXB0aW9uXG59IGZyb20gJy4vbGFiZWwtc2NyZWVuc2hvdC5tanMnO1xuZXhwb3J0IHR5cGUgeyBMaWJSZXNvbHZlciB9IGZyb20gJy4vbGliLXJlZ2lzdHJ5Lm1qcyc7XG5leHBvcnQgeyByZWdpc3RlckxpYlJlc29sdmVyIH0gZnJvbSAnLi9saWItcmVnaXN0cnkubWpzJztcbmV4cG9ydCB0eXBlIHtcbiAgT2JzaWRpYW5SdW50aW1lVmVyc2lvbnMsXG4gIE9ic2lkaWFuVmVyc2lvbkNoYW5nZWxvZ1VybHMsXG4gIE9ic2lkaWFuVmVyc2lvbkRvd25sb2FkcyxcbiAgT2JzaWRpYW5WZXJzaW9uTWV0YWRhdGFcbn0gZnJvbSAnLi9vYnNpZGlhbi1tZXRhZGF0YS5tanMnO1xuZXhwb3J0IHsgZ2V0VmVyc2lvbk1ldGFkYXRhIH0gZnJvbSAnLi9vYnNpZGlhbi1tZXRhZGF0YS5tanMnO1xuZXhwb3J0IHtcbiAgQ0FUQUxZU1RfTEFURVNULFxuICBQVUJMSUNfTEFURVNUXG59IGZyb20gJy4vb2JzaWRpYW4tdmVyc2lvbi5tanMnO1xuZXhwb3J0IHR5cGUgeyBPcGVuT2JzaWRpYW5TZXR0aW5nc1RhYlBhcmFtcyB9IGZyb20gJy4vb3Blbi1vYnNpZGlhbi1zZXR0aW5ncy10YWIubWpzJztcbmV4cG9ydCB7IG9wZW5PYnNpZGlhblNldHRpbmdzVGFiIH0gZnJvbSAnLi9vcGVuLW9ic2lkaWFuLXNldHRpbmdzLXRhYi5tanMnO1xuZXhwb3J0IHR5cGUgeyBPd25lZEluc3RhbmNlRXhpdGVkRXJyb3JDb25zdHJ1Y3RvclBhcmFtcyB9IGZyb20gJy4vb3duZWQtaW5zdGFuY2UtZXhpdGVkLWVycm9yLm1qcyc7XG5leHBvcnQgeyBPd25lZEluc3RhbmNlRXhpdGVkRXJyb3IgfSBmcm9tICcuL293bmVkLWluc3RhbmNlLWV4aXRlZC1lcnJvci5tanMnO1xuZXhwb3J0IHR5cGUge1xuICBCdWlsZFN0YXR1c0JhckJhbmRGYWlsdXJlTWVzc2FnZVBhcmFtcyxcbiAgUGFpbnRPdXRTdGF0dXNCYXJPcHRpb25zLFxuICBSZXNvbHZlU3RhdHVzQmFyQmFuZFBhcmFtcyxcbiAgU3RhdHVzQmFyQmFuZENvbG9yLFxuICBTdGF0dXNCYXJCYW5kVmVyZGljdFxufSBmcm9tICcuL3BhaW50LW91dC1zdGF0dXMtYmFyLm1qcyc7XG5leHBvcnQge1xuICBidWlsZFN0YXR1c0JhckJhbmRGYWlsdXJlTWVzc2FnZSxcbiAgREVGQVVMVF9TVEFUVVNfQkFSX0VER0VfTUFSR0lOX0lOX1BJWEVMUyxcbiAgREVGQVVMVF9TVEFUVVNfQkFSX1NBTVBMRV9JTlNFVF9JTl9QSVhFTFMsXG4gIHBhaW50T3V0U3RhdHVzQmFyLFxuICByZXNvbHZlU3RhdHVzQmFyQmFuZFxufSBmcm9tICcuL3BhaW50LW91dC1zdGF0dXMtYmFyLm1qcyc7XG5leHBvcnQgdHlwZSB7IFBvbGxJbk9ic2lkaWFuUGFyYW1zIH0gZnJvbSAnLi9wb2xsLWluLW9ic2lkaWFuLm1qcyc7XG5leHBvcnQgeyBwb2xsSW5PYnNpZGlhbiB9IGZyb20gJy4vcG9sbC1pbi1vYnNpZGlhbi5tanMnO1xuZXhwb3J0IHsgUmVuZGVyZXJGYWlsZWRUb0luaXRpYWxpemVFcnJvciB9IGZyb20gJy4vcmVuZGVyZXItZmFpbGVkLXRvLWluaXRpYWxpemUtZXJyb3IubWpzJztcbmV4cG9ydCB0eXBlIHsgUmVzb2x2ZUVtdWxhdG9yRGV2aWNlSWRQYXJhbXMgfSBmcm9tICcuL3Jlc29sdmUtZW11bGF0b3ItZGV2aWNlLWlkLm1qcyc7XG5leHBvcnQgeyByZXNvbHZlRW11bGF0b3JEZXZpY2VJZCB9IGZyb20gJy4vcmVzb2x2ZS1lbXVsYXRvci1kZXZpY2UtaWQubWpzJztcbmV4cG9ydCB0eXBlIHsgUnVuT2JzaWRpYW5WZXJzaW9uTWF0cml4UGFyYW1zIH0gZnJvbSAnLi9ydW4tdmVyc2lvbi1tYXRyaXgubWpzJztcbmV4cG9ydCB7IHJ1bk9ic2lkaWFuVmVyc2lvbk1hdHJpeCB9IGZyb20gJy4vcnVuLXZlcnNpb24tbWF0cml4Lm1qcyc7XG5leHBvcnQgdHlwZSB7IFNpbGVudEFzYXJGYWxsYmFja0Vycm9yQ29uc3RydWN0b3JQYXJhbXMgfSBmcm9tICcuL3NpbGVudC1hc2FyLWZhbGxiYWNrLWVycm9yLm1qcyc7XG5leHBvcnQgeyBTaWxlbnRBc2FyRmFsbGJhY2tFcnJvciB9IGZyb20gJy4vc2lsZW50LWFzYXItZmFsbGJhY2stZXJyb3IubWpzJztcbmV4cG9ydCB0eXBlIHtcbiAgQnVpbGRTb2Z0S2V5Ym9hcmREaWFnbm9zdGljTWVzc2FnZVBhcmFtcyxcbiAgQ2hlY2tJc1NvZnRLZXlib2FyZFVwUGFyYW1zLFxuICBFbGVtZW50UmVjdCxcbiAgUmVzb2x2ZVNvZnRLZXlib2FyZFRhcFBvaW50c1BhcmFtcyxcbiAgU29mdEtleWJvYXJkVGFwUG9pbnQsXG4gIFNvZnRLZXlib2FyZFZpZXdwb3J0U25hcHNob3Rcbn0gZnJvbSAnLi9zb2Z0LWtleWJvYXJkLWdlb21ldHJ5Lm1qcyc7XG5leHBvcnQge1xuICBidWlsZFNvZnRLZXlib2FyZERpYWdub3N0aWNNZXNzYWdlLFxuICBjaGVja0lzSW5wdXRNZXRob2RTaG93bixcbiAgY2hlY2tJc1NvZnRLZXlib2FyZFVwLFxuICBERUZBVUxUX01JTklNVU1fS0VZQk9BUkRfSEVJR0hUX0lOX1BJWEVMUyxcbiAgcGFyc2VJbnB1dE1ldGhvZFN0YXRlLFxuICByZXNvbHZlU29mdEtleWJvYXJkVGFwUG9pbnRzXG59IGZyb20gJy4vc29mdC1rZXlib2FyZC1nZW9tZXRyeS5tanMnO1xuZXhwb3J0IHR5cGUge1xuICBSYWlzZVNvZnRLZXlib2FyZFBhcmFtcyxcbiAgVGFwRGV2aWNlUGFyYW1zXG59IGZyb20gJy4vc29mdC1rZXlib2FyZC5tanMnO1xuZXhwb3J0IHtcbiAgcmFpc2VTb2Z0S2V5Ym9hcmQsXG4gIHRhcERldmljZVxufSBmcm9tICcuL3NvZnQta2V5Ym9hcmQubWpzJztcbmV4cG9ydCB0eXBlIHsgU3RhbGVCdWlsZEVycm9yQ29uc3RydWN0b3JQYXJhbXMgfSBmcm9tICcuL3N0YWxlLWJ1aWxkLWVycm9yLm1qcyc7XG5leHBvcnQgeyBTdGFsZUJ1aWxkRXJyb3IgfSBmcm9tICcuL3N0YWxlLWJ1aWxkLWVycm9yLm1qcyc7XG5leHBvcnQgdHlwZSB7XG4gIFBvcHVsYXRlRmlsZUNvbnRlbnQsXG4gIFBvcHVsYXRlRmlsZXNQYXJhbXMsXG4gIFRlbXBvcmFyeVZhdWx0Q29uc3RydWN0b3JPcHRpb25zXG59IGZyb20gJy4vdGVtcG9yYXJ5LXZhdWx0Lm1qcyc7XG5leHBvcnQgeyBUZW1wb3JhcnlWYXVsdCB9IGZyb20gJy4vdGVtcG9yYXJ5LXZhdWx0Lm1qcyc7XG5leHBvcnQgdHlwZSB7XG4gIEFwcGl1bVNlc3Npb25JbmZvLFxuICBBcHBpdW1UcmFuc3BvcnRDb25maWdcbn0gZnJvbSAnLi90cmFuc3BvcnQtYXBwaXVtLm1qcyc7XG5leHBvcnQgeyBBcHBpdW1UcmFuc3BvcnQgfSBmcm9tICcuL3RyYW5zcG9ydC1hcHBpdW0ubWpzJztcbmV4cG9ydCB0eXBlIHtcbiAgRGVza3RvcENkcFRyYW5zcG9ydENvbmZpZyxcbiAgT3duZWRJbnN0YW5jZUFzYXIsXG4gIE93bmVkSW5zdGFuY2VDb25maWcsXG4gIE93bmVkSW5zdGFuY2VFbmRwb2ludFxufSBmcm9tICcuL3RyYW5zcG9ydC1kZXNrdG9wLWNkcC5tanMnO1xuZXhwb3J0IHsgRGVza3RvcENkcFRyYW5zcG9ydCB9IGZyb20gJy4vdHJhbnNwb3J0LWRlc2t0b3AtY2RwLm1qcyc7XG5leHBvcnQgeyBjcmVhdGVUcmFuc3BvcnRGcm9tT3B0aW9ucyB9IGZyb20gJy4vdHJhbnNwb3J0LWZhY3RvcnkubWpzJztcbmV4cG9ydCB0eXBlIHtcbiAgT2JzaWRpYW5BbmRyb2lkQXBwaXVtVHJhbnNwb3J0T3B0aW9ucyxcbiAgT2JzaWRpYW5DZHBUcmFuc3BvcnRPcHRpb25zLFxuICBPYnNpZGlhblRyYW5zcG9ydE9wdGlvbnNcbn0gZnJvbSAnLi90cmFuc3BvcnQtb3B0aW9ucy5tanMnO1xuZXhwb3J0IHsgY2hlY2tJc01vYmlsZVRyYW5zcG9ydCB9IGZyb20gJy4vdHJhbnNwb3J0LW9wdGlvbnMubWpzJztcbmV4cG9ydCB0eXBlIHtcbiAgQ29uc29sZUNhcHR1cmVIYW5kbGUsXG4gIE9ic2lkaWFuVHJhbnNwb3J0LFxuICBUcmFuc3BvcnRFdmFsT3B0aW9uc1xufSBmcm9tICcuL3RyYW5zcG9ydC5tanMnO1xuZXhwb3J0IHtcbiAgcmVnaXN0ZXJWYXVsdCxcbiAgdW5yZWdpc3RlclZhdWx0XG59IGZyb20gJy4vdmF1bHQtcmVnaXN0cnkubWpzJztcbmV4cG9ydCB0eXBlIHsgT2JzaWRpYW5WZXJzaW9uTWF0cml4RW50cnkgfSBmcm9tICcuL3ZlcnNpb24tbWF0cml4Lm1qcyc7XG5leHBvcnQgeyBERUZBVUxUX09CU0lESUFOX1ZFUlNJT05fU1BFQ1MgfSBmcm9tICcuL3ZlcnNpb24tbWF0cml4Lm1qcyc7XG4iXSwKICAibWFwcGluZ3MiOiAiQUFPQTtBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLE9BQ0s7QUFPUDtBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxPQUNLO0FBTVAsU0FBUywyQkFBMkI7QUFFcEMsU0FBUyxpQ0FBaUM7QUFLMUM7QUFBQSxFQUNFO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsT0FDSztBQUVQLFNBQVMsOEJBQThCO0FBRXZDLFNBQVMsb0NBQW9DO0FBQzdDO0FBQUEsRUFDRTtBQUFBLEVBQ0E7QUFBQSxPQUNLO0FBS1AsU0FBUyxvQkFBb0I7QUFLN0IsU0FBUyxpQkFBaUI7QUFNMUI7QUFBQSxFQUNFO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxPQUNLO0FBT1A7QUFBQSxFQUNFO0FBQUEsRUFDQTtBQUFBLE9BQ0s7QUFNUDtBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsT0FDSztBQUVQLFNBQVMseUJBQXlCO0FBQ2xDLFNBQVMsa0NBQWtDO0FBRTNDLFNBQVMsK0JBQStCO0FBTXhDO0FBQUEsRUFDRTtBQUFBLEVBQ0E7QUFBQSxPQUNLO0FBRVA7QUFBQSxFQUNFO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxPQUNLO0FBTVA7QUFBQSxFQUNFO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsT0FDSztBQU1QLFNBQVMsb0NBQW9DO0FBSzdDLFNBQVMsOEJBQThCO0FBRXZDO0FBQUEsRUFDRTtBQUFBLEVBQ0E7QUFBQSxPQUNLO0FBQ1AsU0FBUyx3Q0FBd0M7QUFrQmpELFNBQVMsc0JBQXNCO0FBTS9CO0FBQUEsRUFDRTtBQUFBLEVBQ0E7QUFBQSxPQUNLO0FBRVAsU0FBUyxxQkFBcUI7QUFFOUIsU0FBUyx5Q0FBeUM7QUFNbEQsU0FBUyxxQ0FBcUM7QUFFOUMsU0FBUyxtQ0FBbUM7QUFRNUM7QUFBQSxFQUNFO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLE9BQ0s7QUFFUCxTQUFTLDJCQUEyQjtBQU9wQyxTQUFTLDBCQUEwQjtBQUNuQztBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsT0FDSztBQUVQLFNBQVMsK0JBQStCO0FBRXhDLFNBQVMsZ0NBQWdDO0FBUXpDO0FBQUEsRUFDRTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxPQUNLO0FBRVAsU0FBUyxzQkFBc0I7QUFDL0IsU0FBUyx1Q0FBdUM7QUFFaEQsU0FBUywrQkFBK0I7QUFFeEMsU0FBUyxnQ0FBZ0M7QUFFekMsU0FBUywrQkFBK0I7QUFTeEM7QUFBQSxFQUNFO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxPQUNLO0FBS1A7QUFBQSxFQUNFO0FBQUEsRUFDQTtBQUFBLE9BQ0s7QUFFUCxTQUFTLHVCQUF1QjtBQU1oQyxTQUFTLHNCQUFzQjtBQUsvQixTQUFTLHVCQUF1QjtBQU9oQyxTQUFTLDJCQUEyQjtBQUNwQyxTQUFTLGtDQUFrQztBQU0zQyxTQUFTLDhCQUE4QjtBQU12QztBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsT0FDSztBQUVQLFNBQVMsc0NBQXNDOyIsCiAgIm5hbWVzIjogW10KfQo=
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file
|
|
3
|
+
*
|
|
4
|
+
* Pure selection of the device an emulator this run just launched produced.
|
|
5
|
+
*
|
|
6
|
+
* The wait used to take the first online device that was not listed before the
|
|
7
|
+
* launch. The "before" snapshot lists online devices only, so a handset that was
|
|
8
|
+
* `unauthorized`, `offline` or unplugged at that moment — and came online during
|
|
9
|
+
* the boot, which a USB reconnect or accepting the debugging prompt is enough
|
|
10
|
+
* for — looked new, and was adopted as the emulator:
|
|
11
|
+
*
|
|
12
|
+
* ```text
|
|
13
|
+
* AVD "obsidian_test" not found on any existing device, starting a new emulator...
|
|
14
|
+
* Waiting for a new device to appear in ADB ...
|
|
15
|
+
* Device 3C15BN001Y900000 appeared in ADB, waiting for boot to complete...
|
|
16
|
+
* Emulator "obsidian_test" started, device 3C15BN001Y900000 is connected (owned emulator PIDs: [])
|
|
17
|
+
* ```
|
|
18
|
+
*
|
|
19
|
+
* The suite then ran on the phone, and the emulator really launched was owned by
|
|
20
|
+
* nobody. So a new device is the launched emulator only when it is an emulator
|
|
21
|
+
* **and** it says it is serving the launched AVD — which also keeps a second
|
|
22
|
+
* emulator another project started concurrently from being adopted.
|
|
23
|
+
*
|
|
24
|
+
* Kept separate from the integration-only `transport-factory` so the decision is
|
|
25
|
+
* unit-testable; the factory does the `adb` round-trips.
|
|
26
|
+
*/
|
|
27
|
+
/**
|
|
28
|
+
* One new emulator device, with what it answered when asked for its AVD name.
|
|
29
|
+
*/
|
|
30
|
+
export interface LaunchedDeviceCandidate {
|
|
31
|
+
/**
|
|
32
|
+
* The device UDID, e.g. `emulator-5554`.
|
|
33
|
+
*/
|
|
34
|
+
readonly deviceId: string;
|
|
35
|
+
/**
|
|
36
|
+
* The AVD the device reported, or `undefined` when it did not answer.
|
|
37
|
+
*/
|
|
38
|
+
readonly probedAvdName: string | undefined;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* The new devices a poll found, split by whether they can be the launched emulator.
|
|
42
|
+
*/
|
|
43
|
+
export interface NewDeviceSplit {
|
|
44
|
+
/**
|
|
45
|
+
* New emulator devices, to be asked which AVD they serve.
|
|
46
|
+
*/
|
|
47
|
+
readonly emulatorDeviceIds: string[];
|
|
48
|
+
/**
|
|
49
|
+
* New devices that are not emulators (a handset, a TCP-attached device) and are never adopted.
|
|
50
|
+
*/
|
|
51
|
+
readonly nonEmulatorDeviceIds: string[];
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Parameters for {@link resolveLaunchedDevice}.
|
|
55
|
+
*/
|
|
56
|
+
export interface ResolveLaunchedDeviceParams {
|
|
57
|
+
/**
|
|
58
|
+
* The AVD this run launched.
|
|
59
|
+
*/
|
|
60
|
+
readonly avdName: string;
|
|
61
|
+
/**
|
|
62
|
+
* The new emulator devices, with their probe answers.
|
|
63
|
+
*/
|
|
64
|
+
readonly candidates: readonly LaunchedDeviceCandidate[];
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* What the probe answers say about the launched emulator's device.
|
|
68
|
+
*/
|
|
69
|
+
export interface ResolveLaunchedDeviceResult {
|
|
70
|
+
/**
|
|
71
|
+
* The device serving the launched AVD, or `undefined` when none does yet.
|
|
72
|
+
*/
|
|
73
|
+
readonly deviceId: string | undefined;
|
|
74
|
+
/**
|
|
75
|
+
* Devices that answered with a different AVD: another emulator, never this run's.
|
|
76
|
+
*/
|
|
77
|
+
readonly otherAvdDeviceIds: string[];
|
|
78
|
+
/**
|
|
79
|
+
* Devices that did not answer yet, to be asked again on the next poll.
|
|
80
|
+
*/
|
|
81
|
+
readonly unansweredDeviceIds: string[];
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Parameters for {@link splitNewDevices}.
|
|
85
|
+
*/
|
|
86
|
+
export interface SplitNewDevicesParams {
|
|
87
|
+
/**
|
|
88
|
+
* The devices online now.
|
|
89
|
+
*/
|
|
90
|
+
readonly connectedDeviceIds: readonly string[];
|
|
91
|
+
/**
|
|
92
|
+
* The devices online before the launch.
|
|
93
|
+
*/
|
|
94
|
+
readonly deviceIdsBefore: readonly string[];
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Picks the new emulator device that serves the launched AVD.
|
|
98
|
+
*
|
|
99
|
+
* Silence is not a match: a device that did not answer is asked again, never adopted
|
|
100
|
+
* on the strength of being new.
|
|
101
|
+
*
|
|
102
|
+
* @param params - The launched AVD and the probed candidates.
|
|
103
|
+
* @returns The matching device, plus the ones ruled out and the ones still unknown.
|
|
104
|
+
*/
|
|
105
|
+
export declare function resolveLaunchedDevice(params: ResolveLaunchedDeviceParams): ResolveLaunchedDeviceResult;
|
|
106
|
+
/**
|
|
107
|
+
* Splits the devices that were not online before the launch into emulators and everything else.
|
|
108
|
+
*
|
|
109
|
+
* @param params - The devices online now and before the launch.
|
|
110
|
+
* @returns The new devices, split.
|
|
111
|
+
*/
|
|
112
|
+
export declare function splitNewDevices(params: SplitNewDevicesParams): NewDeviceSplit;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { checkIsEmulatorDeviceId } from "./avd-probe-verdict.mjs";
|
|
2
|
+
function resolveLaunchedDevice(params) {
|
|
3
|
+
const match = params.candidates.find((candidate) => candidate.probedAvdName === params.avdName);
|
|
4
|
+
return {
|
|
5
|
+
deviceId: match?.deviceId,
|
|
6
|
+
otherAvdDeviceIds: params.candidates.filter((candidate) => candidate.probedAvdName !== void 0 && candidate.probedAvdName !== params.avdName).map((candidate) => candidate.deviceId),
|
|
7
|
+
unansweredDeviceIds: params.candidates.filter((candidate) => candidate.probedAvdName === void 0).map((candidate) => candidate.deviceId)
|
|
8
|
+
};
|
|
9
|
+
}
|
|
10
|
+
function splitNewDevices(params) {
|
|
11
|
+
const newDeviceIds = params.connectedDeviceIds.filter((deviceId) => !params.deviceIdsBefore.includes(deviceId));
|
|
12
|
+
return {
|
|
13
|
+
emulatorDeviceIds: newDeviceIds.filter((deviceId) => checkIsEmulatorDeviceId(deviceId)),
|
|
14
|
+
nonEmulatorDeviceIds: newDeviceIds.filter((deviceId) => !checkIsEmulatorDeviceId(deviceId))
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
export {
|
|
18
|
+
resolveLaunchedDevice,
|
|
19
|
+
splitNewDevices
|
|
20
|
+
};
|
|
21
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2xhdW5jaGVkLWRldmljZS1zZWxlY3Rpb24udHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBQdXJlIHNlbGVjdGlvbiBvZiB0aGUgZGV2aWNlIGFuIGVtdWxhdG9yIHRoaXMgcnVuIGp1c3QgbGF1bmNoZWQgcHJvZHVjZWQuXG4gKlxuICogVGhlIHdhaXQgdXNlZCB0byB0YWtlIHRoZSBmaXJzdCBvbmxpbmUgZGV2aWNlIHRoYXQgd2FzIG5vdCBsaXN0ZWQgYmVmb3JlIHRoZVxuICogbGF1bmNoLiBUaGUgXCJiZWZvcmVcIiBzbmFwc2hvdCBsaXN0cyBvbmxpbmUgZGV2aWNlcyBvbmx5LCBzbyBhIGhhbmRzZXQgdGhhdCB3YXNcbiAqIGB1bmF1dGhvcml6ZWRgLCBgb2ZmbGluZWAgb3IgdW5wbHVnZ2VkIGF0IHRoYXQgbW9tZW50IFx1MjAxNCBhbmQgY2FtZSBvbmxpbmUgZHVyaW5nXG4gKiB0aGUgYm9vdCwgd2hpY2ggYSBVU0IgcmVjb25uZWN0IG9yIGFjY2VwdGluZyB0aGUgZGVidWdnaW5nIHByb21wdCBpcyBlbm91Z2hcbiAqIGZvciBcdTIwMTQgbG9va2VkIG5ldywgYW5kIHdhcyBhZG9wdGVkIGFzIHRoZSBlbXVsYXRvcjpcbiAqXG4gKiBgYGB0ZXh0XG4gKiBBVkQgXCJvYnNpZGlhbl90ZXN0XCIgbm90IGZvdW5kIG9uIGFueSBleGlzdGluZyBkZXZpY2UsIHN0YXJ0aW5nIGEgbmV3IGVtdWxhdG9yLi4uXG4gKiBXYWl0aW5nIGZvciBhIG5ldyBkZXZpY2UgdG8gYXBwZWFyIGluIEFEQiAuLi5cbiAqIERldmljZSAzQzE1Qk4wMDFZOTAwMDAwIGFwcGVhcmVkIGluIEFEQiwgd2FpdGluZyBmb3IgYm9vdCB0byBjb21wbGV0ZS4uLlxuICogRW11bGF0b3IgXCJvYnNpZGlhbl90ZXN0XCIgc3RhcnRlZCwgZGV2aWNlIDNDMTVCTjAwMVk5MDAwMDAgaXMgY29ubmVjdGVkIChvd25lZCBlbXVsYXRvciBQSURzOiBbXSlcbiAqIGBgYFxuICpcbiAqIFRoZSBzdWl0ZSB0aGVuIHJhbiBvbiB0aGUgcGhvbmUsIGFuZCB0aGUgZW11bGF0b3IgcmVhbGx5IGxhdW5jaGVkIHdhcyBvd25lZCBieVxuICogbm9ib2R5LiBTbyBhIG5ldyBkZXZpY2UgaXMgdGhlIGxhdW5jaGVkIGVtdWxhdG9yIG9ubHkgd2hlbiBpdCBpcyBhbiBlbXVsYXRvclxuICogKiphbmQqKiBpdCBzYXlzIGl0IGlzIHNlcnZpbmcgdGhlIGxhdW5jaGVkIEFWRCBcdTIwMTQgd2hpY2ggYWxzbyBrZWVwcyBhIHNlY29uZFxuICogZW11bGF0b3IgYW5vdGhlciBwcm9qZWN0IHN0YXJ0ZWQgY29uY3VycmVudGx5IGZyb20gYmVpbmcgYWRvcHRlZC5cbiAqXG4gKiBLZXB0IHNlcGFyYXRlIGZyb20gdGhlIGludGVncmF0aW9uLW9ubHkgYHRyYW5zcG9ydC1mYWN0b3J5YCBzbyB0aGUgZGVjaXNpb24gaXNcbiAqIHVuaXQtdGVzdGFibGU7IHRoZSBmYWN0b3J5IGRvZXMgdGhlIGBhZGJgIHJvdW5kLXRyaXBzLlxuICovXG5cbmltcG9ydCB7IGNoZWNrSXNFbXVsYXRvckRldmljZUlkIH0gZnJvbSAnLi9hdmQtcHJvYmUtdmVyZGljdC5tanMnO1xuXG4vKipcbiAqIE9uZSBuZXcgZW11bGF0b3IgZGV2aWNlLCB3aXRoIHdoYXQgaXQgYW5zd2VyZWQgd2hlbiBhc2tlZCBmb3IgaXRzIEFWRCBuYW1lLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIExhdW5jaGVkRGV2aWNlQ2FuZGlkYXRlIHtcbiAgLyoqXG4gICAqIFRoZSBkZXZpY2UgVURJRCwgZS5nLiBgZW11bGF0b3ItNTU1NGAuXG4gICAqL1xuICByZWFkb25seSBkZXZpY2VJZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgQVZEIHRoZSBkZXZpY2UgcmVwb3J0ZWQsIG9yIGB1bmRlZmluZWRgIHdoZW4gaXQgZGlkIG5vdCBhbnN3ZXIuXG4gICAqL1xuICByZWFkb25seSBwcm9iZWRBdmROYW1lOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG59XG5cbi8qKlxuICogVGhlIG5ldyBkZXZpY2VzIGEgcG9sbCBmb3VuZCwgc3BsaXQgYnkgd2hldGhlciB0aGV5IGNhbiBiZSB0aGUgbGF1bmNoZWQgZW11bGF0b3IuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTmV3RGV2aWNlU3BsaXQge1xuICAvKipcbiAgICogTmV3IGVtdWxhdG9yIGRldmljZXMsIHRvIGJlIGFza2VkIHdoaWNoIEFWRCB0aGV5IHNlcnZlLlxuICAgKi9cbiAgcmVhZG9ubHkgZW11bGF0b3JEZXZpY2VJZHM6IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBOZXcgZGV2aWNlcyB0aGF0IGFyZSBub3QgZW11bGF0b3JzIChhIGhhbmRzZXQsIGEgVENQLWF0dGFjaGVkIGRldmljZSkgYW5kIGFyZSBuZXZlciBhZG9wdGVkLlxuICAgKi9cbiAgcmVhZG9ubHkgbm9uRW11bGF0b3JEZXZpY2VJZHM6IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayByZXNvbHZlTGF1bmNoZWREZXZpY2V9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlc29sdmVMYXVuY2hlZERldmljZVBhcmFtcyB7XG4gIC8qKlxuICAgKiBUaGUgQVZEIHRoaXMgcnVuIGxhdW5jaGVkLlxuICAgKi9cbiAgcmVhZG9ubHkgYXZkTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbmV3IGVtdWxhdG9yIGRldmljZXMsIHdpdGggdGhlaXIgcHJvYmUgYW5zd2Vycy5cbiAgICovXG4gIHJlYWRvbmx5IGNhbmRpZGF0ZXM6IHJlYWRvbmx5IExhdW5jaGVkRGV2aWNlQ2FuZGlkYXRlW107XG59XG5cbi8qKlxuICogV2hhdCB0aGUgcHJvYmUgYW5zd2VycyBzYXkgYWJvdXQgdGhlIGxhdW5jaGVkIGVtdWxhdG9yJ3MgZGV2aWNlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlc29sdmVMYXVuY2hlZERldmljZVJlc3VsdCB7XG4gIC8qKlxuICAgKiBUaGUgZGV2aWNlIHNlcnZpbmcgdGhlIGxhdW5jaGVkIEFWRCwgb3IgYHVuZGVmaW5lZGAgd2hlbiBub25lIGRvZXMgeWV0LlxuICAgKi9cbiAgcmVhZG9ubHkgZGV2aWNlSWQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogRGV2aWNlcyB0aGF0IGFuc3dlcmVkIHdpdGggYSBkaWZmZXJlbnQgQVZEOiBhbm90aGVyIGVtdWxhdG9yLCBuZXZlciB0aGlzIHJ1bidzLlxuICAgKi9cbiAgcmVhZG9ubHkgb3RoZXJBdmREZXZpY2VJZHM6IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBEZXZpY2VzIHRoYXQgZGlkIG5vdCBhbnN3ZXIgeWV0LCB0byBiZSBhc2tlZCBhZ2FpbiBvbiB0aGUgbmV4dCBwb2xsLlxuICAgKi9cbiAgcmVhZG9ubHkgdW5hbnN3ZXJlZERldmljZUlkczogc3RyaW5nW107XG59XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3Ige0BsaW5rIHNwbGl0TmV3RGV2aWNlc30uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3BsaXROZXdEZXZpY2VzUGFyYW1zIHtcbiAgLyoqXG4gICAqIFRoZSBkZXZpY2VzIG9ubGluZSBub3cuXG4gICAqL1xuICByZWFkb25seSBjb25uZWN0ZWREZXZpY2VJZHM6IHJlYWRvbmx5IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBUaGUgZGV2aWNlcyBvbmxpbmUgYmVmb3JlIHRoZSBsYXVuY2guXG4gICAqL1xuICByZWFkb25seSBkZXZpY2VJZHNCZWZvcmU6IHJlYWRvbmx5IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIFBpY2tzIHRoZSBuZXcgZW11bGF0b3IgZGV2aWNlIHRoYXQgc2VydmVzIHRoZSBsYXVuY2hlZCBBVkQuXG4gKlxuICogU2lsZW5jZSBpcyBub3QgYSBtYXRjaDogYSBkZXZpY2UgdGhhdCBkaWQgbm90IGFuc3dlciBpcyBhc2tlZCBhZ2FpbiwgbmV2ZXIgYWRvcHRlZFxuICogb24gdGhlIHN0cmVuZ3RoIG9mIGJlaW5nIG5ldy5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIGxhdW5jaGVkIEFWRCBhbmQgdGhlIHByb2JlZCBjYW5kaWRhdGVzLlxuICogQHJldHVybnMgVGhlIG1hdGNoaW5nIGRldmljZSwgcGx1cyB0aGUgb25lcyBydWxlZCBvdXQgYW5kIHRoZSBvbmVzIHN0aWxsIHVua25vd24uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlTGF1bmNoZWREZXZpY2UocGFyYW1zOiBSZXNvbHZlTGF1bmNoZWREZXZpY2VQYXJhbXMpOiBSZXNvbHZlTGF1bmNoZWREZXZpY2VSZXN1bHQge1xuICBjb25zdCBtYXRjaCA9IHBhcmFtcy5jYW5kaWRhdGVzLmZpbmQoKGNhbmRpZGF0ZSkgPT4gY2FuZGlkYXRlLnByb2JlZEF2ZE5hbWUgPT09IHBhcmFtcy5hdmROYW1lKTtcbiAgcmV0dXJuIHtcbiAgICBkZXZpY2VJZDogbWF0Y2g/LmRldmljZUlkLFxuICAgIG90aGVyQXZkRGV2aWNlSWRzOiBwYXJhbXMuY2FuZGlkYXRlc1xuICAgICAgLmZpbHRlcigoY2FuZGlkYXRlKSA9PiBjYW5kaWRhdGUucHJvYmVkQXZkTmFtZSAhPT0gdW5kZWZpbmVkICYmIGNhbmRpZGF0ZS5wcm9iZWRBdmROYW1lICE9PSBwYXJhbXMuYXZkTmFtZSlcbiAgICAgIC5tYXAoKGNhbmRpZGF0ZSkgPT4gY2FuZGlkYXRlLmRldmljZUlkKSxcbiAgICB1bmFuc3dlcmVkRGV2aWNlSWRzOiBwYXJhbXMuY2FuZGlkYXRlcy5maWx0ZXIoKGNhbmRpZGF0ZSkgPT4gY2FuZGlkYXRlLnByb2JlZEF2ZE5hbWUgPT09IHVuZGVmaW5lZCkubWFwKChjYW5kaWRhdGUpID0+IGNhbmRpZGF0ZS5kZXZpY2VJZClcbiAgfTtcbn1cblxuLyoqXG4gKiBTcGxpdHMgdGhlIGRldmljZXMgdGhhdCB3ZXJlIG5vdCBvbmxpbmUgYmVmb3JlIHRoZSBsYXVuY2ggaW50byBlbXVsYXRvcnMgYW5kIGV2ZXJ5dGhpbmcgZWxzZS5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIGRldmljZXMgb25saW5lIG5vdyBhbmQgYmVmb3JlIHRoZSBsYXVuY2guXG4gKiBAcmV0dXJucyBUaGUgbmV3IGRldmljZXMsIHNwbGl0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gc3BsaXROZXdEZXZpY2VzKHBhcmFtczogU3BsaXROZXdEZXZpY2VzUGFyYW1zKTogTmV3RGV2aWNlU3BsaXQge1xuICBjb25zdCBuZXdEZXZpY2VJZHMgPSBwYXJhbXMuY29ubmVjdGVkRGV2aWNlSWRzLmZpbHRlcigoZGV2aWNlSWQpID0+ICFwYXJhbXMuZGV2aWNlSWRzQmVmb3JlLmluY2x1ZGVzKGRldmljZUlkKSk7XG4gIHJldHVybiB7XG4gICAgZW11bGF0b3JEZXZpY2VJZHM6IG5ld0RldmljZUlkcy5maWx0ZXIoKGRldmljZUlkKSA9PiBjaGVja0lzRW11bGF0b3JEZXZpY2VJZChkZXZpY2VJZCkpLFxuICAgIG5vbkVtdWxhdG9yRGV2aWNlSWRzOiBuZXdEZXZpY2VJZHMuZmlsdGVyKChkZXZpY2VJZCkgPT4gIWNoZWNrSXNFbXVsYXRvckRldmljZUlkKGRldmljZUlkKSlcbiAgfTtcbn1cbiJdLAogICJtYXBwaW5ncyI6ICJBQTJCQSxTQUFTLCtCQUErQjtBQTJGakMsU0FBUyxzQkFBc0IsUUFBa0U7QUFDdEcsUUFBTSxRQUFRLE9BQU8sV0FBVyxLQUFLLENBQUMsY0FBYyxVQUFVLGtCQUFrQixPQUFPLE9BQU87QUFDOUYsU0FBTztBQUFBLElBQ0wsVUFBVSxPQUFPO0FBQUEsSUFDakIsbUJBQW1CLE9BQU8sV0FDdkIsT0FBTyxDQUFDLGNBQWMsVUFBVSxrQkFBa0IsVUFBYSxVQUFVLGtCQUFrQixPQUFPLE9BQU8sRUFDekcsSUFBSSxDQUFDLGNBQWMsVUFBVSxRQUFRO0FBQUEsSUFDeEMscUJBQXFCLE9BQU8sV0FBVyxPQUFPLENBQUMsY0FBYyxVQUFVLGtCQUFrQixNQUFTLEVBQUUsSUFBSSxDQUFDLGNBQWMsVUFBVSxRQUFRO0FBQUEsRUFDM0k7QUFDRjtBQVFPLFNBQVMsZ0JBQWdCLFFBQStDO0FBQzdFLFFBQU0sZUFBZSxPQUFPLG1CQUFtQixPQUFPLENBQUMsYUFBYSxDQUFDLE9BQU8sZ0JBQWdCLFNBQVMsUUFBUSxDQUFDO0FBQzlHLFNBQU87QUFBQSxJQUNMLG1CQUFtQixhQUFhLE9BQU8sQ0FBQyxhQUFhLHdCQUF3QixRQUFRLENBQUM7QUFBQSxJQUN0RixzQkFBc0IsYUFBYSxPQUFPLENBQUMsYUFBYSxDQUFDLHdCQUF3QixRQUFRLENBQUM7QUFBQSxFQUM1RjtBQUNGOyIsCiAgIm5hbWVzIjogW10KfQo=
|
package/dist/lib/esm/library.mjs
CHANGED