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.
- 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/label-screenshot.cjs +2 -2
- 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/label-screenshot.mjs +2 -2
- 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/IHJlZnVzYWwgOiBgJHtyZWZ1c2FsfS5gO1xufVxuXG4vKipcbiAqIERlY2lkZXMgaG93IHRoZSBsaXN0aW5nIGVuZGVkLCBmcm9tIHdoYXQgYGV4ZWNGaWxlYCByZXBvcnRlZC5cbiAqXG4gKiBUaGUgb3JkZXIgb2YgdGhlIGJyYW5jaGVzIGlzIHRoZSBvcmRlciBvZiBzcGVjaWZpY2l0eTogdGhlIHR3byBmYWlsdXJlcyBOb2RlXG4gKiBuYW1lcyBpdHNlbGYgKGBFTk9FTlRgLCB0aGUgYnVmZmVyIGNlaWxpbmcpIGFyZSByZWNvZ25pemVkIGJlZm9yZSB0aGUgb25lc1xuICogdGhhdCBoYXZlIHRvIGJlIGluZmVycmVkIGZyb20gdGhlIGNoaWxkJ3MgZXhpdCwgYW5kIGBjcmFzaGVkYCBpcyBsYXN0XG4gKiBiZWNhdXNlIGl0IGlzIGRlZmluZWQgYnkgdGhlICphYnNlbmNlKiBvZiBhbiBleHBsYW5hdGlvbiBvbiBzdGRlcnIuXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFdoYXQgYGV4ZWNGaWxlYCByZXBvcnRlZCwgYW5kIGhvdyBtYW55IHJvd3MgdGhlIG91dHB1dCBwYXJzZWQgdG8uXG4gKiBAcmV0dXJucyBUaGUgb3V0Y29tZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmVIb3N0UHJvY2Vzc1F1ZXJ5T3V0Y29tZShwYXJhbXM6IFJlc29sdmVIb3N0UHJvY2Vzc1F1ZXJ5T3V0Y29tZVBhcmFtcyk6IEhvc3RQcm9jZXNzUXVlcnlPdXRjb21lIHtcbiAgaWYgKCFwYXJhbXMuaGFzRmFpbGVkKSB7XG4gICAgLypcbiAgICAgKiBBIGhvc3QgYWx3YXlzIGhhcyBwcm9jZXNzZXMsIHNvIGEgd2hvbGUtaG9zdCBsaXN0aW5nIHRoYXQgcGFyc2VzIHRvIG5vdGhpbmcgaXMgYSBmYWlsZWQgcXVlcnkgaG93ZXZlciBpdFxuICAgICAqIGV4aXRlZC4gQSBmaWx0ZXJlZCBvbmUgbWF5IGxlZ2l0aW1hdGVseSBtYXRjaCBub3RoaW5nIFx1MjAxNCBidXQgb25seSB3aGVuIGl0IHNheXMgc287IHNpbGVuY2UgaXMgc3RpbGwgYSBmYWlsdXJlLlxuICAgICAqL1xuICAgIHJldHVybiBwYXJhbXMucm93Q291bnQgPT09IDAgJiYgIXBhcmFtcy5oYXNSZXBvcnRlZE5vTWF0Y2ggPyAnemVyby1yb3dzJyA6ICdsaXN0ZWQnO1xuICB9XG5cbiAgcmV0dXJuIHJlc29sdmVIb3N0UXVlcnlGYWlsdXJlKHBhcmFtcyk7XG59XG5cbi8qKlxuICogRGVjaWRlcyB3aGljaCB3YXkgYSBob3N0IHF1ZXJ5IHRoYXQgKipkaWQqKiBmYWlsIGZhaWxlZC5cbiAqXG4gKiBTcGxpdCBvdXQgb2Yge0BsaW5rIHJlc29sdmVIb3N0UHJvY2Vzc1F1ZXJ5T3V0Y29tZX0gc28gYSBzaWJsaW5nIHF1ZXJ5IHdob3NlXG4gKiBzdWNjZXNzIHJ1bGVzIGRpZmZlciBcdTIwMTQgdGhlIHBvcnQtb3duZXIgcXVlcnksIHdoZXJlIHplcm8gb3duZXJzIGlzIGFuIGFuc3dlciBcdTIwMTRcbiAqIGNhbiBzaGFyZSBvbmUgZGVmaW5pdGlvbiBvZiBlYWNoIGZhaWx1cmUgd2l0aG91dCBpbmhlcml0aW5nIGBsaXN0ZWRgIGFuZFxuICogYHplcm8tcm93c2AuXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFdoYXQgYGV4ZWNGaWxlYCByZXBvcnRlZCBmb3IgdGhlIGZhaWxlZCBjYWxsLlxuICogQHJldHVybnMgVGhlIGZhaWx1cmUgb3V0Y29tZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmVIb3N0UXVlcnlGYWlsdXJlKHBhcmFtczogUmVzb2x2ZUhvc3RRdWVyeUZhaWx1cmVQYXJhbXMpOiBIb3N0UXVlcnlGYWlsdXJlIHtcbiAgaWYgKHBhcmFtcy5lcnJvckNvZGUgPT09ICdFTk9FTlQnKSB7XG4gICAgcmV0dXJuICdub3QtZm91bmQnO1xuICB9XG5cbiAgaWYgKHBhcmFtcy5lcnJvckNvZGUgPT09ICdFUlJfQ0hJTERfUFJPQ0VTU19TVERJT19NQVhCVUZGRVInKSB7XG4gICAgcmV0dXJuICdvdXRwdXQtb3ZlcnJhbic7XG4gIH1cblxuICBpZiAocGFyYW1zLmlzS2lsbGVkKSB7XG4gICAgcmV0dXJuICd0aW1lZC1vdXQnO1xuICB9XG5cbiAgLy8gYHRhc2tsaXN0YCBhbmQgYHBzYCBib3RoIGV4cGxhaW4gYSByZWZ1c2FsIG9uIHN0ZGVyciwgc28gc2lsZW5jZSBtZWFucyB0aGUgY2hpbGQgbmV2ZXIgZ290IHRvIG9iamVjdC5cbiAgcmV0dXJuIHBhcmFtcy5zdGFuZGFyZEVycm9yLnRyaW0oKSA9PT0gJycgPyAnY3Jhc2hlZCcgOiAncmVmdXNlZCc7XG59XG4iXSwKICAibWFwcGluZ3MiOiAiQUFvREEsU0FBUyxtQkFBbUI7QUFVNUIsTUFBTSx5QkFBeUI7QUFLL0IsTUFBTSxvQkFBb0I7QUFLMUIsTUFBTSwwQkFBMEI7QUFtSHpCLFNBQVMsNkJBQTZCLFFBQWdFO0FBQzNHLFFBQU0sT0FBTyxTQUFTLGVBQWUsT0FBTyxxQkFBcUIsQ0FBQztBQUNsRSxRQUFNLGNBQWMsT0FBTyxlQUFlO0FBRTFDLFVBQVEsT0FBTyxTQUFTO0FBQUEsSUFDdEIsS0FB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
|
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=
|
|
@@ -2,7 +2,7 @@ import { readPngDimensions } from "./capture-screenshot.mjs";
|
|
|
2
2
|
import { importSharp } from "./sharp-loader.mjs";
|
|
3
3
|
const FONT_SIZE_RATIO = 0.034;
|
|
4
4
|
const BAND_HEIGHT_RATIO = 2.2;
|
|
5
|
-
const BAND_OPACITY =
|
|
5
|
+
const BAND_OPACITY = 1;
|
|
6
6
|
const MINIMUM_FONT_SIZE_IN_PIXELS = 18;
|
|
7
7
|
const MINIMUM_HEIGHT_RATIO = 0.075;
|
|
8
8
|
const SIDE_MARGIN_RATIO = 0.04;
|
|
@@ -112,4 +112,4 @@ export {
|
|
|
112
112
|
labelScreenshot,
|
|
113
113
|
measureLabelCaption
|
|
114
114
|
};
|
|
115
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2xhYmVsLXNjcmVlbnNob3QudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBBZGRzIGEgY2FwdGlvbiBiYW5kIHRvIGFuIGFscmVhZHktY2FwdHVyZWQgc2NyZWVuc2hvdC5cbiAqXG4gKiBBIHN0b3JlIGxpc3Rpbmcgc2hvd3Mgc2NyZWVuc2hvdHMgT05FIEFUIEEgVElNRSwgaW4gYSBjYXJvdXNlbCwgd2l0aCBub1xuICogY2FwdGlvbiBvZiBpdHMgb3duIFx1MjAxNCBzbyBhbiBpbWFnZSBoYXMgdG8gc2F5IHdoYXQgaXQgaXMgc2hvd2luZy4gV2l0aG91dCB0aGF0LFxuICogYSBzaG90IG9mIHRoZSBzdGF0ZSBhIHBsdWdpbiByZW1vdmVzIHJlYWRzIGFzIGEgc2hvdCBvZiB0aGUgc3RhdGUgdGhlIHBsdWdpblxuICogY2F1c2VzLCB3aGljaCBpcyB0aGUgb3Bwb3NpdGUgb2YgdGhlIG1lc3NhZ2UuXG4gKlxuICogVGhlIGJhbmQgaXMgZHJhd24gb3ZlciB0aGUgQk9UVE9NIG9mIHRoZSBmcmFtZSwgZm9yIHR3byByZWFzb25zOiB0aGUgdG9wIGlzXG4gKiB3aGVyZSB0aGUgY29udGVudCBiZWluZyBkZW1vbnN0cmF0ZWQgdXN1YWxseSBzdGFydHMsIGFuZCB0aGUgYm90dG9tIG9mIGFuXG4gKiBPYnNpZGlhbiBmcmFtZSBpcyBjaHJvbWUgXHUyMDE0IHN0YXR1cyBiYXIsIHdvcmQgY291bnQsIHN5bmMgaW5kaWNhdG9yIFx1MjAxNCB3aGljaCB0aGVcbiAqIGJhbmQgdGhlbiBjb3ZlcnMgcmF0aGVyIHRoYW4gY29tcGV0aW5nIHdpdGguXG4gKlxuICogVGhpcyBpcyBwb3N0LXByb2Nlc3NpbmcsIGRlbGliZXJhdGVseS4gVGhlIGNhcHR1cmUgc3RheXMgYW4gdW50b3VjaGVkIGRldmljZVxuICogZnJhbWUsIGFuZCByZXdvcmRpbmcgYSBsYWJlbCBuZWVkcyBubyByZS1zaG9vdC5cbiAqXG4gKiBBIGNhcHRpb24gdGhhdCBpcyB0b28gbG9uZyBmb3IgaXRzIGZyYW1lIGlzIE1FQVNVUkVEIGFuZCByZWplY3RlZCByYXRoZXIgdGhhblxuICogZHJhd24uIEFuIFNWRyBgPHRleHQ+YCBpcyBjbGlwcGVkIGJ5IGl0cyB2aWV3cG9ydCBhdCBib3RoIGVuZHMgd2l0aCBub1xuICogZWxsaXBzaXMgYW5kIG5vIGVycm9yLCBzbyBhbiBvdmVybG9uZyBjYXB0aW9uIHNoaXBzIGFzIGEgc2VudGVuY2UgZnJhZ21lbnRcbiAqIHRoYXQgbG9va3MgZGVsaWJlcmF0ZSBcdTIwMTQgYG5hYmxlZCBpbiBTZXR0aW5ncyAtIGEgbGlzdGVuaW5nIHBsdWdpbiBpcyB0b2xkYCBcdTIwMTRcbiAqIGFuZCB0aGUgZnJhbWUgaXMgc3RpbGwgZXhhY3RseSB0aGUgc2l6ZSBpdCBzaG91bGQgYmUsIHNvIGV2ZXJ5IGRpbWVuc2lvblxuICogYXNzZXJ0aW9uIGRvd25zdHJlYW0gc3RpbGwgcGFzc2VzLiBUaGUgb25seSBmZWVkYmFjayBhbnlvbmUgZXZlciBnb3Qgd2FzXG4gKiBsb29raW5nIGF0IHRoZSBQTkcuIFNlZSB7QGxpbmsgbWVhc3VyZUxhYmVsQ2FwdGlvbn0uXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBTaGFycENvbXBvc2l0ZUxheWVyIH0gZnJvbSAnLi9zaGFycC1sb2FkZXIubWpzJztcblxuaW1wb3J0IHsgcmVhZFBuZ0RpbWVuc2lvbnMgfSBmcm9tICcuL2NhcHR1cmUtc2NyZWVuc2hvdC5tanMnO1xuaW1wb3J0IHsgaW1wb3J0U2hhcnAgfSBmcm9tICcuL3NoYXJwLWxvYWRlci5tanMnO1xuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayBjb21wdXRlTGFiZWxCYW5kfS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb21wdXRlTGFiZWxCYW5kUGFyYW1zIHtcbiAgLyoqXG4gICAqIEhlaWdodCBvZiB0aGUgaW1hZ2UgYmVpbmcgbGFiZWxlZCwgaW4gcGl4ZWxzLlxuICAgKi9cbiAgcmVhZG9ubHkgaW1hZ2VIZWlnaHRJblBpeGVsczogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBXaWR0aCBvZiB0aGUgaW1hZ2UgYmVpbmcgbGFiZWxlZCwgaW4gcGl4ZWxzLlxuICAgKi9cbiAgcmVhZG9ubHkgaW1hZ2VXaWR0aEluUGl4ZWxzOiBudW1iZXI7XG59XG5cbi8qKlxuICogVGhlIGdlb21ldHJ5IG9mIHRoZSBjYXB0aW9uIGJhbmQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTGFiZWxCYW5kR2VvbWV0cnkge1xuICAvKipcbiAgICogSG93IG11Y2ggaG9yaXpvbnRhbCByb29tIHRoZSBjYXB0aW9uIGhhcywgaW4gcGl4ZWxzOiB0aGUgaW1hZ2Ugd2lkdGggbGVzc1xuICAgKiB0aGUgbWFyZ2luIGhlbGQgY2xlYXIgYXQgZWFjaCBlbmQsIHNvIGEgY2FwdGlvbiB0aGF0IGZpdHMgZG9lcyBub3QgcmVhZCBhc1xuICAgKiB0aG91Z2ggaXQgd2VyZSBhYm91dCB0byB0b3VjaCB0aGUgZWRnZSBvZiB0aGUgZnJhbWUuXG4gICAqL1xuICByZWFkb25seSBjYXB0aW9uUm9vbUluUGl4ZWxzOiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIEZvbnQgc2l6ZSBmb3IgdGhlIGNhcHRpb24sIGluIHBpeGVscy5cbiAgICovXG4gIHJlYWRvbmx5IGZvbnRTaXplSW5QaXhlbHM6IG51bWJlcjtcblxuICAvKipcbiAgICogSGVpZ2h0IG9mIHRoZSBiYW5kLCBpbiBwaXhlbHMuXG4gICAqL1xuICByZWFkb25seSBoZWlnaHRJblBpeGVsczogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBEaXN0YW5jZSBmcm9tIHRoZSB0b3Agb2YgdGhlIGltYWdlIHRvIHRoZSB0b3Agb2YgdGhlIGJhbmQsIGluIHBpeGVscy5cbiAgICovXG4gIHJlYWRvbmx5IHRvcEluUGl4ZWxzOiBudW1iZXI7XG59XG5cbi8qKlxuICogV2hhdCBhIGNhcHRpb24gbWVhc3VyZXMgYWdhaW5zdCB0aGUgZnJhbWUgaXQgaXMgZGVzdGluZWQgZm9yLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIExhYmVsQ2FwdGlvbk1lYXN1cmVtZW50IHtcbiAgLyoqXG4gICAqIFRoZSByb29tIGF2YWlsYWJsZSwgaW4gcGl4ZWxzIFx1MjAxNCB7QGxpbmsgTGFiZWxCYW5kR2VvbWV0cnkuY2FwdGlvblJvb21JblBpeGVsc30uXG4gICAqL1xuICByZWFkb25seSBjYXB0aW9uUm9vbUluUGl4ZWxzOiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIGNhcHRpb24gZml0cyB0aGF0IHJvb20uXG4gICAqL1xuICByZWFkb25seSBkb2VzRml0OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBIb3cgd2lkZSB0aGUgY2FwdGlvbiBhY3R1YWxseSByZW5kZXJzLCBpbiBwaXhlbHMsIGF0IHRoZSBzaXplIHRoZSBiYW5kXG4gICAqIHdvdWxkIGRyYXcgaXQuXG4gICAqL1xuICByZWFkb25seSB0ZXh0V2lkdGhJblBpeGVsczogbnVtYmVyO1xufVxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIHtAbGluayBsYWJlbFNjcmVlbnNob3R9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIExhYmVsU2NyZWVuc2hvdE9wdGlvbnMge1xuICAvKipcbiAgICogVGhlIGNhcHRpb24uIEtlZXAgaXQgdG8gYSBoYW5kZnVsIG9mIHdvcmRzOiBpdCBpcyByZWFkIGF0IGxpc3RpbmctdGh1bWJuYWlsXG4gICAqIHNpemUsIGFuZCBpdCBpcyBuZWl0aGVyIHdyYXBwZWQgbm9yIHNocnVuayB0byBmaXQgXHUyMDE0IG9uZSB0aGF0IGRvZXMgbm90IGZpdFxuICAgKiBpcyBSRUpFQ1RFRCwgd2l0aCB0aGUgbWVhc3VyZWQgd2lkdGggYW5kIHRoZSByb29tIGF2YWlsYWJsZS4gQ2hlY2sgYVxuICAgKiBjYW5kaWRhdGUgd2l0aCB7QGxpbmsgbWVhc3VyZUxhYmVsQ2FwdGlvbn0gYmVmb3JlIGNvbW1pdHRpbmcgdG8gaXQuXG4gICAqL1xuICByZWFkb25seSB0ZXh0OiBzdHJpbmc7XG59XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3Ige0BsaW5rIG1lYXN1cmVMYWJlbENhcHRpb259LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE1lYXN1cmVMYWJlbENhcHRpb25QYXJhbXMge1xuICAvKipcbiAgICogSGVpZ2h0IG9mIHRoZSBpbWFnZSB0aGUgY2FwdGlvbiBpcyBkZXN0aW5lZCBmb3IsIGluIHBpeGVscy5cbiAgICovXG4gIHJlYWRvbmx5IGltYWdlSGVpZ2h0SW5QaXhlbHM6IG51bWJlcjtcblxuICAvKipcbiAgICogV2lkdGggb2YgdGhlIGltYWdlIHRoZSBjYXB0aW9uIGlzIGRlc3RpbmVkIGZvciwgaW4gcGl4ZWxzLlxuICAgKi9cbiAgcmVhZG9ubHkgaW1hZ2VXaWR0aEluUGl4ZWxzOiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFRoZSBjYXB0aW9uIHRvIG1lYXN1cmUuXG4gICAqL1xuICByZWFkb25seSB0ZXh0OiBzdHJpbmc7XG59XG5cbi8qKlxuICogQ2FwdGlvbiBzaXplIGFzIGEgZnJhY3Rpb24gb2YgaW1hZ2UgV0lEVEgsIG5vdCBoZWlnaHQuXG4gKlxuICogV2lkdGggaXMgd2hhdCBnb3Zlcm5zIGxlZ2liaWxpdHkgaGVyZTogYSA5MDB4MTYwMCBwaG9uZSBmcmFtZSBhbmQgYSAxMjAweDgwMFxuICogZGVza3RvcCBmcmFtZSBhcmUgcmVhZCBhdCBzaW1pbGFyIG9uLXNjcmVlbiB3aWR0aHMgaW4gYSBsaXN0aW5nLCBzbyBzaXppbmcgYnlcbiAqIHdpZHRoIGtlZXBzIHRoZSBjYXB0aW9uIHZpc3VhbGx5IGNvbnNpc3RlbnQgYWNyb3NzIHRoZSB0d28uXG4gKi9cbmNvbnN0IEZPTlRfU0laRV9SQVRJTyA9IDAuMDM0O1xuXG4vKipcbiAqIEJhbmQgaGVpZ2h0IGFzIGEgbXVsdGlwbGUgb2YgdGhlIGZvbnQgc2l6ZSBcdTIwMTQgZW5vdWdoIHRvIHNpdCB0aGUgdGV4dCBvbiB3aXRoXG4gKiBjbGVhciBzcGFjZSBhYm92ZSBhbmQgYmVsb3cuXG4gKi9cbmNvbnN0IEJBTkRfSEVJR0hUX1JBVElPID0gMi4yO1xuXG4vKipcbiAqIE9wYWNpdHkgb2YgdGhlIGJhbmQuIE5lYXItb3BhcXVlIG9uIHB1cnBvc2U6IHRoZSBiYW5kIGV4aXN0cyBwYXJ0bHkgdG8gQ09WRVJcbiAqIHRoZSBjaHJvbWUgYWxvbmcgdGhlIGJvdHRvbSBvZiB0aGUgZnJhbWUsIGFuZCBhdCAwLjgyIGEgc3RhdHVzIGJhciBsZWdpYmx5XG4gKiBibGVkIHRocm91Z2ggYmVoaW5kIHRoZSBjYXB0aW9uLCB3aGljaCBsb29rZWQgbGlrZSBhIG1pc3Rha2UgcmF0aGVyIHRoYW4gYVxuICogZGVzaWduLlxuICovXG5jb25zdCBCQU5EX09QQUNJVFkgPSAwLjk0O1xuXG5jb25zdCBNSU5JTVVNX0ZPTlRfU0laRV9JTl9QSVhFTFMgPSAxODtcblxuLyoqXG4gKiBGbG9vciBvbiBiYW5kIGhlaWdodCBhcyBhIGZyYWN0aW9uIG9mIGltYWdlIEhFSUdIVC5cbiAqXG4gKiBIZWlnaHQgZGVyaXZlZCBmcm9tIHRoZSBjYXB0aW9uIGFsb25lIGlzIHRvbyBzaGFsbG93IG9uIGEgdGFsbCBmcmFtZTogb24gYVxuICogOTAweDE2MDAgcGhvbmUgaXQgY2FtZSB0byA2OHB4IGFuZCBzbGljZWQgdGhyb3VnaCB0aGUgc3RhdHVzIHJvdyBpdCB3YXMgbWVhbnRcbiAqIHRvIGNvdmVyLCBjbGlwcGluZyB0aGUgdGV4dCBtaWQtbGluZS4gVGhpcyBmbG9vciBtYWtlcyB0aGUgYmFuZCBkZWVwIGVub3VnaCB0b1xuICogc3dhbGxvdyB0aGF0IHJvdyB3aG9sZSAoMTIwcHggb24gYSA5MDB4MTYwMCBwaG9uZSksIGFuZCBpcyBpbmVydCBvbiBhIHdpZGUgZnJhbWUgd2hlcmUgdGhlIGNhcHRpb24tZGVyaXZlZFxuICogaGVpZ2h0IGlzIGFscmVhZHkgdGhlIGxhcmdlciBvZiB0aGUgdHdvLlxuICovXG5jb25zdCBNSU5JTVVNX0hFSUdIVF9SQVRJTyA9IDAuMDc1O1xuXG4vKipcbiAqIE1hcmdpbiBoZWxkIGNsZWFyIGF0IEVBQ0ggZW5kIG9mIHRoZSBjYXB0aW9uLCBhcyBhIGZyYWN0aW9uIG9mIGltYWdlIHdpZHRoLlxuICpcbiAqIEEgY2FwdGlvbiB0aGF0IGVuZHMgYSBwaXhlbCBpbnNpZGUgdGhlIGZyYW1lIGlzIGxlZ2FsbHkgdW4tY2xpcHBlZCBhbmQgc3RpbGxcbiAqIGxvb2tzIHdyb25nLCBzbyB0aGUgcm9vbSBhIGNhcHRpb24gaXMgbWVhc3VyZWQgYWdhaW5zdCBpcyB0aGUgZnJhbWUgbGVzcyB0aGlzXG4gKiBhdCBib3RoIGVuZHMgXHUyMDE0IDQ4cHggZWFjaCBzaWRlIG9uIGEgMTIwMHB4IGZyYW1lLlxuICovXG5jb25zdCBTSURFX01BUkdJTl9SQVRJTyA9IDAuMDQ7XG5cbi8qKlxuICogRGl2aXNvciB0aGF0IHR1cm5zIGEgc3BhbiBpbnRvIGl0cyBtaWRwb2ludCwgZm9yIGNlbnRlcmluZyB0aGUgY2FwdGlvbi5cbiAqL1xuY29uc3QgQ0VOVEVSX0RJVklTT1IgPSAyO1xuXG4vKipcbiAqIFRoZSBjYXB0aW9uJ3MgdHlwZWZhY2UgYW5kIHdlaWdodCwgaW4gb25lIHBsYWNlIGJlY2F1c2UgdGhlIGJhbmQgYW5kIHRoZVxuICogbWVhc3VyZW1lbnQgY2FudmFzIE1VU1QgZHJhdyB3aXRoIHRoZSBzYW1lIG9uZXM6IGEgbWVhc3VyZW1lbnQgdGFrZW4gaW4gYVxuICogZGlmZmVyZW50IGZhY2UgaXMgbm90IGEgbWVhc3VyZW1lbnQgb2YgdGhlIHRoaW5nIHRoYXQgc2hpcHMuXG4gKi9cbmNvbnN0IEZPTlRfRkFNSUxZID0gJ1NlZ29lIFVJLCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmJztcblxuY29uc3QgRk9OVF9XRUlHSFQgPSAnNjAwJztcblxuY29uc3QgQ0FQVElPTl9GSUxMID0gJyNmZmZmZmYnO1xuXG4vKipcbiAqIFVwcGVyIGJvdW5kIG9uIG9uZSBnbHlwaCdzIGFkdmFuY2Ugd2lkdGgsIGFzIGEgbXVsdGlwbGUgb2YgdGhlIGZvbnQgc2l6ZS5cbiAqXG4gKiBJdCBzaXplcyB0aGUgb2ZmLXNjcmVlbiBjYW52YXMgdGhlIGNhcHRpb24gaXMgbWVhc3VyZWQgb24sIGFuZCBpdCBvbmx5IGV2ZXJcbiAqIG5lZWRzIHRvIGJlIGFuIG92ZXItZXN0aW1hdGU6IGEgY2FudmFzIHRvbyBuYXJyb3cgd291bGQgY2xpcCB0aGUgdGV4dCBiZWluZ1xuICogbWVhc3VyZWQsIHVuZGVyLXJlcG9ydCBpdHMgd2lkdGgsIGFuZCByZWludHJvZHVjZSB0aGUgZXhhY3Qgc2lsZW50IGNsaXBwaW5nXG4gKiB0aGUgbWVhc3VyZW1lbnQgZXhpc3RzIHRvIGNhdGNoLiBObyBMYXRpbiBnbHlwaCBpbiBhIHByb3BvcnRpb25hbCBzYW5zXG4gKiBhZHZhbmNlcyBhIGZ1bGwgZW0gXHUyMDE0IGFuIGVtIGRhc2gsIHRoZSB3aWRlc3QsIGlzIDEuMCBcdTIwMTQgc28gMS4xIGlzIGhlYWRyb29tIGF0XG4gKiBuZWdsaWdpYmxlIGNvc3QgKG1lYXN1cmVkIHByb3NlIHJ1bnMgYWJvdXQgMC40NSBlbSBwZXIgY2hhcmFjdGVyLCBzbyB0aGVcbiAqIGNhbnZhcyBjb21lcyBvdXQgcm91Z2hseSAyLjV4IHRoZSB0ZXh0KS5cbiAqL1xuY29uc3QgTUFYSU1VTV9HTFlQSF9BRFZBTkNFX1JBVElPID0gMS4xO1xuXG4vKipcbiAqIEhlaWdodCBvZiB0aGUgbWVhc3VyZW1lbnQgY2FudmFzIGFzIGEgbXVsdGlwbGUgb2YgdGhlIGZvbnQgc2l6ZSwgc28gYXNjZW5kZXJzXG4gKiBhbmQgZGVzY2VuZGVycyBoYXZlIHJvb20gYW5kIHRoZSB0cmltIHJlYWRzIHRoZSBnbHlwaHMgcmF0aGVyIHRoYW4gdGhlIGVkZ2UuXG4gKi9cbmNvbnN0IE1FQVNVUkVNRU5UX0NBTlZBU19IRUlHSFRfUkFUSU8gPSAzO1xuXG4vKipcbiAqIEhvdyBmYXIgYSBwaXhlbCBtYXkgZGlmZmVyIGZyb20gdGhlIHRyYW5zcGFyZW50IHN1cnJvdW5kIGJlZm9yZSBgdHJpbWAgY291bnRzXG4gKiBpdCBhcyB0ZXh0LiBEZWxpYmVyYXRlbHkgZmFyIGxvd2VyIHRoYW4gYHNoYXJwYCdzIGRlZmF1bHQgb2YgMTA6IHRoZSBvdXRlcm1vc3RcbiAqIHBpeGVscyBvZiBhbiBhbnRpYWxpYXNlZCBnbHlwaCBhcmUgdmVyeSBmYWludCwgYW5kIHRoZSBkZWZhdWx0IGRpc2NhcmRzIHRoZW0sXG4gKiB1bmRlci1tZWFzdXJpbmcgYSBjYXB0aW9uIGJ5IGEgcGl4ZWwgb3IgdHdvIGF0IGVhY2ggZW5kLlxuICovXG5jb25zdCBUUklNX1RIUkVTSE9MRCA9IDE7XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3Ige0BsaW5rIGJ1aWxkQ2FwdGlvblRleHRFbGVtZW50fS5cbiAqL1xuaW50ZXJmYWNlIENhcHRpb25UZXh0RWxlbWVudFBhcmFtcyB7XG4gIHJlYWRvbmx5IGZvbnRTaXplSW5QaXhlbHM6IG51bWJlcjtcbiAgcmVhZG9ubHkgdGV4dDogc3RyaW5nO1xuICByZWFkb25seSB0ZXh0QW5jaG9yOiAnbWlkZGxlJyB8ICdzdGFydCc7XG4gIHJlYWRvbmx5IHhJblBpeGVsczogbnVtYmVyO1xuICByZWFkb25seSB5SW5QaXhlbHM6IG51bWJlcjtcbn1cblxuLyoqXG4gKiBCdWlsZHMgdGhlIFNWRyBmb3IgdGhlIGNhcHRpb24gYmFuZC5cbiAqXG4gKiBAcGFyYW0gdGV4dCAtIFRoZSBjYXB0aW9uLlxuICogQHBhcmFtIGdlb21ldHJ5IC0gVGhlIGJhbmQgZ2VvbWV0cnkuXG4gKiBAcGFyYW0gaW1hZ2VXaWR0aEluUGl4ZWxzIC0gV2lkdGggb2YgdGhlIGltYWdlLCBzbyB0aGUgYmFuZCBzcGFucyBpdC5cbiAqIEByZXR1cm5zIFRoZSBTVkcgbWFya3VwLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRMYWJlbFN2Zyh0ZXh0OiBzdHJpbmcsIGdlb21ldHJ5OiBMYWJlbEJhbmRHZW9tZXRyeSwgaW1hZ2VXaWR0aEluUGl4ZWxzOiBudW1iZXIpOiBzdHJpbmcge1xuICBjb25zdCB7IGZvbnRTaXplSW5QaXhlbHMsIGhlaWdodEluUGl4ZWxzIH0gPSBnZW9tZXRyeTtcbiAgY29uc3QgY2FwdGlvbkVsZW1lbnQgPSBidWlsZENhcHRpb25UZXh0RWxlbWVudCh7XG4gICAgZm9udFNpemVJblBpeGVscyxcbiAgICB0ZXh0LFxuICAgIHRleHRBbmNob3I6ICdtaWRkbGUnLFxuICAgIHhJblBpeGVsczogaW1hZ2VXaWR0aEluUGl4ZWxzIC8gQ0VOVEVSX0RJVklTT1IsXG4gICAgeUluUGl4ZWxzOiBoZWlnaHRJblBpeGVscyAvIENFTlRFUl9ESVZJU09SXG4gIH0pO1xuXG4gIHJldHVybiBgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIke1N0cmluZyhpbWFnZVdpZHRoSW5QaXhlbHMpfVwiIGhlaWdodD1cIiR7U3RyaW5nKGhlaWdodEluUGl4ZWxzKX1cIj5gXG4gICAgKyBgPHJlY3QgeD1cIjBcIiB5PVwiMFwiIHdpZHRoPVwiJHtTdHJpbmcoaW1hZ2VXaWR0aEluUGl4ZWxzKX1cIiBoZWlnaHQ9XCIke1N0cmluZyhoZWlnaHRJblBpeGVscyl9XCIgYFxuICAgICsgYGZpbGw9XCIjMDAwMDAwXCIgZmlsbC1vcGFjaXR5PVwiJHtTdHJpbmcoQkFORF9PUEFDSVRZKX1cIi8+YFxuICAgICsgYCR7Y2FwdGlvbkVsZW1lbnR9PC9zdmc+YDtcbn1cblxuLyoqXG4gKiBDb21wdXRlcyB0aGUgY2FwdGlvbiBiYW5kJ3Mgc2l6ZSBhbmQgcG9zaXRpb24gZm9yIGEgZ2l2ZW4gaW1hZ2UuXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSBpbWFnZSBkaW1lbnNpb25zLlxuICogQHJldHVybnMgVGhlIGJhbmQgZ2VvbWV0cnkuXG4gKiBAdGhyb3dzIEVycm9yIGlmIGVpdGhlciBkaW1lbnNpb24gaXMgbm90IGEgcG9zaXRpdmUgbnVtYmVyLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY29tcHV0ZUxhYmVsQmFuZChwYXJhbXM6IENvbXB1dGVMYWJlbEJhbmRQYXJhbXMpOiBMYWJlbEJhbmRHZW9tZXRyeSB7XG4gIGNvbnN0IHsgaW1hZ2VIZWlnaHRJblBpeGVscywgaW1hZ2VXaWR0aEluUGl4ZWxzIH0gPSBwYXJhbXM7XG5cbiAgaWYgKCFOdW1iZXIuaXNGaW5pdGUoaW1hZ2VXaWR0aEluUGl4ZWxzKSB8fCBpbWFnZVdpZHRoSW5QaXhlbHMgPD0gMCkge1xuICAgIHRocm93IG5ldyBFcnJvcihgY29tcHV0ZUxhYmVsQmFuZDogaW1hZ2VXaWR0aEluUGl4ZWxzIG11c3QgYmUgYSBwb3NpdGl2ZSBudW1iZXIsIGdvdCAke1N0cmluZyhpbWFnZVdpZHRoSW5QaXhlbHMpfS5gKTtcbiAgfVxuXG4gIGlmICghTnVtYmVyLmlzRmluaXRlKGltYWdlSGVpZ2h0SW5QaXhlbHMpIHx8IGltYWdlSGVpZ2h0SW5QaXhlbHMgPD0gMCkge1xuICAgIHRocm93IG5ldyBFcnJvcihgY29tcHV0ZUxhYmVsQmFuZDogaW1hZ2VIZWlnaHRJblBpeGVscyBtdXN0IGJlIGEgcG9zaXRpdmUgbnVtYmVyLCBnb3QgJHtTdHJpbmcoaW1hZ2VIZWlnaHRJblBpeGVscyl9LmApO1xuICB9XG5cbiAgY29uc3QgZm9udFNpemVJblBpeGVscyA9IE1hdGgubWF4KE1JTklNVU1fRk9OVF9TSVpFX0lOX1BJWEVMUywgTWF0aC5yb3VuZChpbWFnZVdpZHRoSW5QaXhlbHMgKiBGT05UX1NJWkVfUkFUSU8pKTtcbiAgY29uc3QgY2FwdGlvbkhlaWdodEluUGl4ZWxzID0gTWF0aC5yb3VuZChmb250U2l6ZUluUGl4ZWxzICogQkFORF9IRUlHSFRfUkFUSU8pO1xuICBjb25zdCBmbG9vcmVkSGVpZ2h0SW5QaXhlbHMgPSBNYXRoLm1heChjYXB0aW9uSGVpZ2h0SW5QaXhlbHMsIE1hdGgucm91bmQoaW1hZ2VIZWlnaHRJblBpeGVscyAqIE1JTklNVU1fSEVJR0hUX1JBVElPKSk7XG4gIGNvbnN0IGhlaWdodEluUGl4ZWxzID0gTWF0aC5taW4oaW1hZ2VIZWlnaHRJblBpeGVscywgZmxvb3JlZEhlaWdodEluUGl4ZWxzKTtcbiAgY29uc3Qgc2lkZU1hcmdpbkluUGl4ZWxzID0gTWF0aC5yb3VuZChpbWFnZVdpZHRoSW5QaXhlbHMgKiBTSURFX01BUkdJTl9SQVRJTyk7XG5cbiAgcmV0dXJuIHtcbiAgICBjYXB0aW9uUm9vbUluUGl4ZWxzOiBpbWFnZVdpZHRoSW5QaXhlbHMgLSAoc2lkZU1hcmdpbkluUGl4ZWxzICogQ0VOVEVSX0RJVklTT1IpLFxuICAgIGZvbnRTaXplSW5QaXhlbHMsXG4gICAgaGVpZ2h0SW5QaXhlbHMsXG4gICAgdG9wSW5QaXhlbHM6IGltYWdlSGVpZ2h0SW5QaXhlbHMgLSBoZWlnaHRJblBpeGVsc1xuICB9O1xufVxuXG4vKipcbiAqIEVzY2FwZXMgdGV4dCBmb3IgaW5jbHVzaW9uIGluIFNWRyBjaGFyYWN0ZXIgZGF0YS5cbiAqXG4gKiBBIGNhcHRpb24gaXMgYXV0aG9yZWQgcGVyIHNjcmVlbnNob3QgYW5kIGNhbiBsZWdpdGltYXRlbHkgY29udGFpbiBgJmAgb3IgdGhlXG4gKiBhbmdsZSBicmFja2V0cyBPYnNpZGlhbiB1c2VzIGluIGxpbmsgc3ludGF4OyB1bmVzY2FwZWQsIHRob3NlIG1ha2UgdGhlIFNWR1xuICogaW1wb3NzaWJsZSB0byBwYXJzZSBhbmQgYHNoYXJwYCBmYWlscyBvbiBhIGNhcHRpb24gcmF0aGVyIHRoYW4gb24gYW4gaW1hZ2UuXG4gKlxuICogQHBhcmFtIHRleHQgLSBUaGUgcmF3IGNhcHRpb24uXG4gKiBAcmV0dXJucyBUaGUgY2FwdGlvbiwgc2FmZSB0byBlbWJlZCBpbiBTVkcuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBlc2NhcGVTdmdUZXh0KHRleHQ6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiB0ZXh0XG4gICAgLnJlcGxhY2VBbGwoJyYnLCAnJmFtcDsnKVxuICAgIC5yZXBsYWNlQWxsKCc8JywgJyZsdDsnKVxuICAgIC5yZXBsYWNlQWxsKCc+JywgJyZndDsnKVxuICAgIC5yZXBsYWNlQWxsKCdcIicsICcmcXVvdDsnKVxuICAgIC5yZXBsYWNlQWxsKCdcXCcnLCAnJmFwb3M7Jyk7XG59XG5cbi8qKlxuICogRHJhd3MgYSBjYXB0aW9uIGJhbmQgYWNyb3NzIHRoZSBib3R0b20gb2YgYSBzY3JlZW5zaG90LlxuICpcbiAqIFRoZSBpbWFnZSBrZWVwcyBpdHMgZGltZW5zaW9ucyBleGFjdGx5OiB0aGUgYmFuZCBpcyBjb21wb3NpdGVkIE9WRVIgdGhlXG4gKiBmcmFtZSwgbmV2ZXIgYXBwZW5kZWQgdG8gaXQsIGJlY2F1c2UgdGhlIHN0b3JlIGV4cGVjdHMgYSBzcGVjaWZpYyBzaXplLlxuICpcbiAqIEBwYXJhbSBieXRlcyAtIFRoZSBjYXB0dXJlZCBQTkcuXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBjYXB0aW9uLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB0byB0aGUgbGFiZWxlZCBQTkcsIHRoZSBzYW1lIHNpemUgYXMgdGhlIGlucHV0LlxuICogQHRocm93cyBFcnJvciBpZiBgc2hhcnBgIGlzIG5vdCBpbnN0YWxsZWQsIHRoZSBpbWFnZSBkaW1lbnNpb25zIGNhbm5vdCBiZSByZWFkLCBvciB0aGUgY2FwdGlvbiBpcyB0b28gd2lkZSBmb3IgdGhlIGZyYW1lLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gbGFiZWxTY3JlZW5zaG90KGJ5dGVzOiBVaW50OEFycmF5LCBvcHRpb25zOiBMYWJlbFNjcmVlbnNob3RPcHRpb25zKTogUHJvbWlzZTxVaW50OEFycmF5PiB7XG4gIGNvbnN0IHNoYXJwID0gYXdhaXQgaW1wb3J0U2hhcnAoJ2xhYmVsU2NyZWVuc2hvdCcpO1xuICBjb25zdCBtZXRhZGF0YSA9IGF3YWl0IHNoYXJwKGJ5dGVzKS5tZXRhZGF0YSgpO1xuICBjb25zdCBpbWFnZVdpZHRoSW5QaXhlbHMgPSBtZXRhZGF0YS53aWR0aDtcbiAgY29uc3QgaW1hZ2VIZWlnaHRJblBpeGVscyA9IG1ldGFkYXRhLmhlaWdodDtcblxuICAvKiB2OCBpZ25vcmUgbmV4dCAzIC0tIERlZmVuc2l2ZTogYHNoYXJwYCByZWplY3RzIGEgbm9uLWltYWdlIGJlZm9yZSBpdCBjYW4gcmVwb3J0IG1ldGFkYXRhIHdpdGhvdXQgZGltZW5zaW9ucywgc28gdGhpcyBicmFuY2ggaXMgdW5yZWFjaGFibGUgZnJvbSBhIHRlc3QuICovXG4gIGlmIChpbWFnZVdpZHRoSW5QaXhlbHMgPT09IHVuZGVmaW5lZCB8fCBpbWFnZUhlaWdodEluUGl4ZWxzID09PSB1bmRlZmluZWQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2xhYmVsU2NyZWVuc2hvdDogY291bGQgbm90IHJlYWQgdGhlIHNvdXJjZSBpbWFnZSBkaW1lbnNpb25zLicpO1xuICB9XG5cbiAgY29uc3QgZ2VvbWV0cnkgPSBjb21wdXRlTGFiZWxCYW5kKHsgaW1hZ2VIZWlnaHRJblBpeGVscywgaW1hZ2VXaWR0aEluUGl4ZWxzIH0pO1xuICBjb25zdCB0ZXh0V2lkdGhJblBpeGVscyA9IGF3YWl0IG1lYXN1cmVDYXB0aW9uV2lkdGgob3B0aW9ucy50ZXh0LCBnZW9tZXRyeS5mb250U2l6ZUluUGl4ZWxzKTtcblxuICBpZiAodGV4dFdpZHRoSW5QaXhlbHMgPiBnZW9tZXRyeS5jYXB0aW9uUm9vbUluUGl4ZWxzKSB7XG4gICAgY29uc3Qgb3ZlcmZsb3dJblBpeGVscyA9IHRleHRXaWR0aEluUGl4ZWxzIC0gZ2VvbWV0cnkuY2FwdGlvblJvb21JblBpeGVscztcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBgbGFiZWxTY3JlZW5zaG90OiB0aGUgY2FwdGlvbiBpcyAke1N0cmluZyhvdmVyZmxvd0luUGl4ZWxzKX1weCB0b28gd2lkZSBmb3IgdGhlIGZyYW1lLiBgXG4gICAgICAgICsgYEl0IHJlbmRlcnMgJHtTdHJpbmcodGV4dFdpZHRoSW5QaXhlbHMpfXB4IGF0IGZvbnQtc2l6ZSAke1N0cmluZyhnZW9tZXRyeS5mb250U2l6ZUluUGl4ZWxzKX0sIGFuZCBhIGBcbiAgICAgICAgKyBgJHtTdHJpbmcoaW1hZ2VXaWR0aEluUGl4ZWxzKX1weCBmcmFtZSBoYXMgcm9vbSBmb3IgJHtTdHJpbmcoZ2VvbWV0cnkuY2FwdGlvblJvb21JblBpeGVscyl9cHguIGBcbiAgICAgICAgKyAnU2hvcnRlbiBpdDogYSBjYXB0aW9uIHRoYXQgZG9lcyBub3QgZml0IGlzIGNsaXBwZWQgYXQgQk9USCBlbmRzLCB3aXRoIG5vIGVsbGlwc2lzIHRvIHNob3cgaXQgaGFwcGVuZWQuICdcbiAgICAgICAgKyBgQ2FwdGlvbjogJHtKU09OLnN0cmluZ2lmeShvcHRpb25zLnRleHQpfWBcbiAgICApO1xuICB9XG5cbiAgY29uc3Qgc3ZnID0gYnVpbGRMYWJlbFN2ZyhvcHRpb25zLnRleHQsIGdlb21ldHJ5LCBpbWFnZVdpZHRoSW5QaXhlbHMpO1xuICBjb25zdCBsYXllcjogU2hhcnBDb21wb3NpdGVMYXllciA9IHtcbiAgICBpbnB1dDogQnVmZmVyLmZyb20oc3ZnKSxcbiAgICBsZWZ0OiAwLFxuICAgIHRvcDogZ2VvbWV0cnkudG9wSW5QaXhlbHNcbiAgfTtcblxuICBjb25zdCBsYWJlbGVkID0gYXdhaXQgc2hhcnAoYnl0ZXMpXG4gICAgLmNvbXBvc2l0ZShbbGF5ZXJdKVxuICAgIC5wbmcoKVxuICAgIC50b0J1ZmZlcigpO1xuXG4gIHJldHVybiBuZXcgVWludDhBcnJheShsYWJlbGVkKTtcbn1cblxuLyoqXG4gKiBNZWFzdXJlcyBhIGNhcHRpb24gYWdhaW5zdCB0aGUgZnJhbWUgaXQgaXMgZGVzdGluZWQgZm9yLCB3aXRob3V0IGRyYXdpbmdcbiAqIGFueXRoaW5nLlxuICpcbiAqIFRoaXMgaXMgd2hhdCB7QGxpbmsgbGFiZWxTY3JlZW5zaG90fSByZWplY3RzIGFuIG92ZXJsb25nIGNhcHRpb24gd2l0aCwgZXhwb3NlZFxuICogc28gYSBjYXB0aW9uIGNhbiBiZSBjaG9zZW4gd2l0aCB0aGUgbnVtYmVyIGluIGhhbmQgaW5zdGVhZCBvZiBieSBjYXB0dXJpbmcgYVxuICogZnJhbWUgYW5kIGxvb2tpbmcgYXQgaXQuXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSBjYXB0aW9uIGFuZCB0aGUgZGltZW5zaW9ucyBvZiB0aGUgaW1hZ2UgaXQgaXMgZm9yLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB0byB0aGUgbWVhc3VyZW1lbnQuXG4gKiBAdGhyb3dzIEVycm9yIGlmIGBzaGFycGAgaXMgbm90IGluc3RhbGxlZCwgb3IgZWl0aGVyIGRpbWVuc2lvbiBpcyBub3QgYSBwb3NpdGl2ZSBudW1iZXIuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBtZWFzdXJlTGFiZWxDYXB0aW9uKHBhcmFtczogTWVhc3VyZUxhYmVsQ2FwdGlvblBhcmFtcyk6IFByb21pc2U8TGFiZWxDYXB0aW9uTWVhc3VyZW1lbnQ+IHtcbiAgY29uc3QgeyBpbWFnZUhlaWdodEluUGl4ZWxzLCBpbWFnZVdpZHRoSW5QaXhlbHMsIHRleHQgfSA9IHBhcmFtcztcbiAgY29uc3QgZ2VvbWV0cnkgPSBjb21wdXRlTGFiZWxCYW5kKHsgaW1hZ2VIZWlnaHRJblBpeGVscywgaW1hZ2VXaWR0aEluUGl4ZWxzIH0pO1xuICBjb25zdCB0ZXh0V2lkdGhJblBpeGVscyA9IGF3YWl0IG1lYXN1cmVDYXB0aW9uV2lkdGgodGV4dCwgZ2VvbWV0cnkuZm9udFNpemVJblBpeGVscyk7XG5cbiAgcmV0dXJuIHtcbiAgICBjYXB0aW9uUm9vbUluUGl4ZWxzOiBnZW9tZXRyeS5jYXB0aW9uUm9vbUluUGl4ZWxzLFxuICAgIGRvZXNGaXQ6IHRleHRXaWR0aEluUGl4ZWxzIDw9IGdlb21ldHJ5LmNhcHRpb25Sb29tSW5QaXhlbHMsXG4gICAgdGV4dFdpZHRoSW5QaXhlbHNcbiAgfTtcbn1cblxuLyoqXG4gKiBCdWlsZHMgdGhlIGNhcHRpb24ncyBTVkcgYDx0ZXh0PmAgZWxlbWVudC5cbiAqXG4gKiBCb3RoIHRoZSBiYW5kIGFuZCB0aGUgbWVhc3VyZW1lbnQgY2FudmFzIGdvIHRocm91Z2ggaGVyZSwgc28gdGhlIHRoaW5nIHRoYXRcbiAqIGlzIG1lYXN1cmVkIGlzIGRyYXduIHdpdGggdGhlIHNhbWUgZmFjZSwgd2VpZ2h0IGFuZCBzaXplIGFzIHRoZSB0aGluZyB0aGF0XG4gKiBzaGlwcy4gVHdvIGhhbmQtd3JpdHRlbiBjb3BpZXMgd291bGQgYmUgZnJlZSB0byBkcmlmdCwgYW5kIGEgbWVhc3VyZW1lbnQgdGhhdFxuICogaGFzIGRyaWZ0ZWQgZnJvbSB0aGUgZHJhd2luZyBpcyB3b3JzZSB0aGFuIG5vIG1lYXN1cmVtZW50IGF0IGFsbC5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIGNhcHRpb24sIGl0cyBzaXplLCBhbmQgd2hlcmUgdG8gYW5jaG9yIGl0LlxuICogQHJldHVybnMgVGhlIGA8dGV4dD5gIG1hcmt1cC5cbiAqL1xuZnVuY3Rpb24gYnVpbGRDYXB0aW9uVGV4dEVsZW1lbnQocGFyYW1zOiBDYXB0aW9uVGV4dEVsZW1lbnRQYXJhbXMpOiBzdHJpbmcge1xuICBjb25zdCB7IGZvbnRTaXplSW5QaXhlbHMsIHRleHQsIHRleHRBbmNob3IsIHhJblBpeGVscywgeUluUGl4ZWxzIH0gPSBwYXJhbXM7XG5cbiAgcmV0dXJuIGA8dGV4dCB4PVwiJHtTdHJpbmcoeEluUGl4ZWxzKX1cIiB5PVwiJHtTdHJpbmcoeUluUGl4ZWxzKX1cIiBgXG4gICAgKyBgZm9udC1mYW1pbHk9XCIke0ZPTlRfRkFNSUxZfVwiIGZvbnQtc2l6ZT1cIiR7U3RyaW5nKGZvbnRTaXplSW5QaXhlbHMpfVwiIGBcbiAgICArIGBmb250LXdlaWdodD1cIiR7Rk9OVF9XRUlHSFR9XCIgZmlsbD1cIiR7Q0FQVElPTl9GSUxMfVwiIHRleHQtYW5jaG9yPVwiJHt0ZXh0QW5jaG9yfVwiIGRvbWluYW50LWJhc2VsaW5lPVwiY2VudHJhbFwiPmBcbiAgICArIGAke2VzY2FwZVN2Z1RleHQodGV4dCl9PC90ZXh0PmA7XG59XG5cbi8qKlxuICogTWVhc3VyZXMgaG93IHdpZGUgYSBjYXB0aW9uIHJlbmRlcnMgYXQgYSBnaXZlbiBzaXplLlxuICpcbiAqIFRoZSB0ZXh0IGlzIGRyYXduIGFsb25lIG9uIGEgdHJhbnNwYXJlbnQgY2FudmFzIGRlbGliZXJhdGVseSB3aWRlciB0aGFuIGl0IGNhblxuICogcG9zc2libHkgbmVlZCwgdGhlbiBgdHJpbWBtZWQgYmFjayB0byBpdHMgb3duIGluayBcdTIwMTQgdGhlIHNhbWUgbWVhc3VyZW1lbnQgdGhhdFxuICogd2FzIHByZXZpb3VzbHkgZG9uZSBieSBoYW5kLCBvbmNlLCBwZXIgY2FwdGlvbiwgYnkgd2hvZXZlciB0aG91Z2h0IHRvIGRvdWJ0XG4gKiBvbmUuIFRoZSByZW5kZXJlciBkb2luZyB0aGUgbWVhc3VyaW5nIGlzIHRoZSByZW5kZXJlciB0aGF0IGRyYXdzIHRoZSBiYW5kLCBzb1xuICogdGhlIHR3byBjYW5ub3QgZGlzYWdyZWUgYWJvdXQgYSBmb250IHRoZSBob3N0IGRvZXMgb3IgZG9lcyBub3QgaGF2ZS5cbiAqXG4gKiBAcGFyYW0gdGV4dCAtIFRoZSBjYXB0aW9uLlxuICogQHBhcmFtIGZvbnRTaXplSW5QaXhlbHMgLSBUaGUgc2l6ZSB0aGUgYmFuZCB3b3VsZCBkcmF3IGl0IGF0LlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB0byB0aGUgcmVuZGVyZWQgd2lkdGggaW4gcGl4ZWxzLlxuICovXG5hc3luYyBmdW5jdGlvbiBtZWFzdXJlQ2FwdGlvbldpZHRoKHRleHQ6IHN0cmluZywgZm9udFNpemVJblBpeGVsczogbnVtYmVyKTogUHJvbWlzZTxudW1iZXI+IHtcbiAgLy8gQSBjYXB0aW9uIHdpdGggbm8gaW5rIGxlYXZlcyB0aGUgY2FudmFzIHVuaWZvcm1seSB0cmFuc3BhcmVudCwgYW5kIGB0cmltYFxuICAvLyByZXR1cm5zIHN1Y2ggYW4gaW1hZ2UgdW50b3VjaGVkIFx1MjAxNCBpLmUuIHJlcG9ydHMgdGhlIHdob2xlIGNhbnZhcyBhcyB0ZXh0LlxuICBpZiAodGV4dC50cmltKCkgPT09ICcnKSB7XG4gICAgcmV0dXJuIDA7XG4gIH1cblxuICBjb25zdCBzaGFycCA9IGF3YWl0IGltcG9ydFNoYXJwKCdtZWFzdXJlTGFiZWxDYXB0aW9uJyk7XG4gIGNvbnN0IHBhZGRpbmdJblBpeGVscyA9IGZvbnRTaXplSW5QaXhlbHMgKiBDRU5URVJfRElWSVNPUjtcbiAgY29uc3QgY2FudmFzV2lkdGhJblBpeGVscyA9IE1hdGguY2VpbChmb250U2l6ZUluUGl4ZWxzICogTUFYSU1VTV9HTFlQSF9BRFZBTkNFX1JBVElPICogdGV4dC5sZW5ndGgpICsgcGFkZGluZ0luUGl4ZWxzO1xuICBjb25zdCBjYW52YXNIZWlnaHRJblBpeGVscyA9IE1hdGguY2VpbChmb250U2l6ZUluUGl4ZWxzICogTUVBU1VSRU1FTlRfQ0FOVkFTX0hFSUdIVF9SQVRJTyk7XG4gIGNvbnN0IGNhcHRpb25FbGVtZW50ID0gYnVpbGRDYXB0aW9uVGV4dEVsZW1lbnQoe1xuICAgIGZvbnRTaXplSW5QaXhlbHMsXG4gICAgdGV4dCxcbiAgICB0ZXh0QW5jaG9yOiAnc3RhcnQnLFxuICAgIHhJblBpeGVsczogZm9udFNpemVJblBpeGVscyxcbiAgICB5SW5QaXhlbHM6IGNhbnZhc0hlaWdodEluUGl4ZWxzIC8gQ0VOVEVSX0RJVklTT1JcbiAgfSk7XG4gIGNvbnN0IHN2ZyA9IGA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIiR7U3RyaW5nKGNhbnZhc1dpZHRoSW5QaXhlbHMpfVwiIGhlaWdodD1cIiR7U3RyaW5nKGNhbnZhc0hlaWdodEluUGl4ZWxzKX1cIj5gXG4gICAgKyBgJHtjYXB0aW9uRWxlbWVudH08L3N2Zz5gO1xuXG4gIGNvbnN0IHRyaW1tZWQgPSBhd2FpdCBzaGFycChuZXcgVWludDhBcnJheShCdWZmZXIuZnJvbShzdmcpKSlcbiAgICAudHJpbSh7IHRocmVzaG9sZDogVFJJTV9USFJFU0hPTEQgfSlcbiAgICAucG5nKClcbiAgICAudG9CdWZmZXIoKTtcblxuICByZXR1cm4gcmVhZFBuZ0RpbWVuc2lvbnMobmV3IFVpbnQ4QXJyYXkodHJpbW1lZCkpLndpZHRoSW5QaXhlbHM7XG59XG4iXSwKICAibWFwcGluZ3MiOiAiQUE2QkEsU0FBUyx5QkFBeUI7QUFDbEMsU0FBUyxtQkFBbUI7QUF5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
|
|
115
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2xhYmVsLXNjcmVlbnNob3QudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBBZGRzIGEgY2FwdGlvbiBiYW5kIHRvIGFuIGFscmVhZHktY2FwdHVyZWQgc2NyZWVuc2hvdC5cbiAqXG4gKiBBIHN0b3JlIGxpc3Rpbmcgc2hvd3Mgc2NyZWVuc2hvdHMgT05FIEFUIEEgVElNRSwgaW4gYSBjYXJvdXNlbCwgd2l0aCBub1xuICogY2FwdGlvbiBvZiBpdHMgb3duIFx1MjAxNCBzbyBhbiBpbWFnZSBoYXMgdG8gc2F5IHdoYXQgaXQgaXMgc2hvd2luZy4gV2l0aG91dCB0aGF0LFxuICogYSBzaG90IG9mIHRoZSBzdGF0ZSBhIHBsdWdpbiByZW1vdmVzIHJlYWRzIGFzIGEgc2hvdCBvZiB0aGUgc3RhdGUgdGhlIHBsdWdpblxuICogY2F1c2VzLCB3aGljaCBpcyB0aGUgb3Bwb3NpdGUgb2YgdGhlIG1lc3NhZ2UuXG4gKlxuICogVGhlIGJhbmQgaXMgZHJhd24gb3ZlciB0aGUgQk9UVE9NIG9mIHRoZSBmcmFtZSwgZm9yIHR3byByZWFzb25zOiB0aGUgdG9wIGlzXG4gKiB3aGVyZSB0aGUgY29udGVudCBiZWluZyBkZW1vbnN0cmF0ZWQgdXN1YWxseSBzdGFydHMsIGFuZCB0aGUgYm90dG9tIG9mIGFuXG4gKiBPYnNpZGlhbiBmcmFtZSBpcyBjaHJvbWUgXHUyMDE0IHN0YXR1cyBiYXIsIHdvcmQgY291bnQsIHN5bmMgaW5kaWNhdG9yIFx1MjAxNCB3aGljaCB0aGVcbiAqIGJhbmQgdGhlbiBjb3ZlcnMgcmF0aGVyIHRoYW4gY29tcGV0aW5nIHdpdGguXG4gKlxuICogVGhpcyBpcyBwb3N0LXByb2Nlc3NpbmcsIGRlbGliZXJhdGVseS4gVGhlIGNhcHR1cmUgc3RheXMgYW4gdW50b3VjaGVkIGRldmljZVxuICogZnJhbWUsIGFuZCByZXdvcmRpbmcgYSBsYWJlbCBuZWVkcyBubyByZS1zaG9vdC5cbiAqXG4gKiBBIGNhcHRpb24gdGhhdCBpcyB0b28gbG9uZyBmb3IgaXRzIGZyYW1lIGlzIE1FQVNVUkVEIGFuZCByZWplY3RlZCByYXRoZXIgdGhhblxuICogZHJhd24uIEFuIFNWRyBgPHRleHQ+YCBpcyBjbGlwcGVkIGJ5IGl0cyB2aWV3cG9ydCBhdCBib3RoIGVuZHMgd2l0aCBub1xuICogZWxsaXBzaXMgYW5kIG5vIGVycm9yLCBzbyBhbiBvdmVybG9uZyBjYXB0aW9uIHNoaXBzIGFzIGEgc2VudGVuY2UgZnJhZ21lbnRcbiAqIHRoYXQgbG9va3MgZGVsaWJlcmF0ZSBcdTIwMTQgYG5hYmxlZCBpbiBTZXR0aW5ncyAtIGEgbGlzdGVuaW5nIHBsdWdpbiBpcyB0b2xkYCBcdTIwMTRcbiAqIGFuZCB0aGUgZnJhbWUgaXMgc3RpbGwgZXhhY3RseSB0aGUgc2l6ZSBpdCBzaG91bGQgYmUsIHNvIGV2ZXJ5IGRpbWVuc2lvblxuICogYXNzZXJ0aW9uIGRvd25zdHJlYW0gc3RpbGwgcGFzc2VzLiBUaGUgb25seSBmZWVkYmFjayBhbnlvbmUgZXZlciBnb3Qgd2FzXG4gKiBsb29raW5nIGF0IHRoZSBQTkcuIFNlZSB7QGxpbmsgbWVhc3VyZUxhYmVsQ2FwdGlvbn0uXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBTaGFycENvbXBvc2l0ZUxheWVyIH0gZnJvbSAnLi9zaGFycC1sb2FkZXIubWpzJztcblxuaW1wb3J0IHsgcmVhZFBuZ0RpbWVuc2lvbnMgfSBmcm9tICcuL2NhcHR1cmUtc2NyZWVuc2hvdC5tanMnO1xuaW1wb3J0IHsgaW1wb3J0U2hhcnAgfSBmcm9tICcuL3NoYXJwLWxvYWRlci5tanMnO1xuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayBjb21wdXRlTGFiZWxCYW5kfS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb21wdXRlTGFiZWxCYW5kUGFyYW1zIHtcbiAgLyoqXG4gICAqIEhlaWdodCBvZiB0aGUgaW1hZ2UgYmVpbmcgbGFiZWxlZCwgaW4gcGl4ZWxzLlxuICAgKi9cbiAgcmVhZG9ubHkgaW1hZ2VIZWlnaHRJblBpeGVsczogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBXaWR0aCBvZiB0aGUgaW1hZ2UgYmVpbmcgbGFiZWxlZCwgaW4gcGl4ZWxzLlxuICAgKi9cbiAgcmVhZG9ubHkgaW1hZ2VXaWR0aEluUGl4ZWxzOiBudW1iZXI7XG59XG5cbi8qKlxuICogVGhlIGdlb21ldHJ5IG9mIHRoZSBjYXB0aW9uIGJhbmQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTGFiZWxCYW5kR2VvbWV0cnkge1xuICAvKipcbiAgICogSG93IG11Y2ggaG9yaXpvbnRhbCByb29tIHRoZSBjYXB0aW9uIGhhcywgaW4gcGl4ZWxzOiB0aGUgaW1hZ2Ugd2lkdGggbGVzc1xuICAgKiB0aGUgbWFyZ2luIGhlbGQgY2xlYXIgYXQgZWFjaCBlbmQsIHNvIGEgY2FwdGlvbiB0aGF0IGZpdHMgZG9lcyBub3QgcmVhZCBhc1xuICAgKiB0aG91Z2ggaXQgd2VyZSBhYm91dCB0byB0b3VjaCB0aGUgZWRnZSBvZiB0aGUgZnJhbWUuXG4gICAqL1xuICByZWFkb25seSBjYXB0aW9uUm9vbUluUGl4ZWxzOiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIEZvbnQgc2l6ZSBmb3IgdGhlIGNhcHRpb24sIGluIHBpeGVscy5cbiAgICovXG4gIHJlYWRvbmx5IGZvbnRTaXplSW5QaXhlbHM6IG51bWJlcjtcblxuICAvKipcbiAgICogSGVpZ2h0IG9mIHRoZSBiYW5kLCBpbiBwaXhlbHMuXG4gICAqL1xuICByZWFkb25seSBoZWlnaHRJblBpeGVsczogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBEaXN0YW5jZSBmcm9tIHRoZSB0b3Agb2YgdGhlIGltYWdlIHRvIHRoZSB0b3Agb2YgdGhlIGJhbmQsIGluIHBpeGVscy5cbiAgICovXG4gIHJlYWRvbmx5IHRvcEluUGl4ZWxzOiBudW1iZXI7XG59XG5cbi8qKlxuICogV2hhdCBhIGNhcHRpb24gbWVhc3VyZXMgYWdhaW5zdCB0aGUgZnJhbWUgaXQgaXMgZGVzdGluZWQgZm9yLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIExhYmVsQ2FwdGlvbk1lYXN1cmVtZW50IHtcbiAgLyoqXG4gICAqIFRoZSByb29tIGF2YWlsYWJsZSwgaW4gcGl4ZWxzIFx1MjAxNCB7QGxpbmsgTGFiZWxCYW5kR2VvbWV0cnkuY2FwdGlvblJvb21JblBpeGVsc30uXG4gICAqL1xuICByZWFkb25seSBjYXB0aW9uUm9vbUluUGl4ZWxzOiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIGNhcHRpb24gZml0cyB0aGF0IHJvb20uXG4gICAqL1xuICByZWFkb25seSBkb2VzRml0OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBIb3cgd2lkZSB0aGUgY2FwdGlvbiBhY3R1YWxseSByZW5kZXJzLCBpbiBwaXhlbHMsIGF0IHRoZSBzaXplIHRoZSBiYW5kXG4gICAqIHdvdWxkIGRyYXcgaXQuXG4gICAqL1xuICByZWFkb25seSB0ZXh0V2lkdGhJblBpeGVsczogbnVtYmVyO1xufVxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIHtAbGluayBsYWJlbFNjcmVlbnNob3R9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIExhYmVsU2NyZWVuc2hvdE9wdGlvbnMge1xuICAvKipcbiAgICogVGhlIGNhcHRpb24uIEtlZXAgaXQgdG8gYSBoYW5kZnVsIG9mIHdvcmRzOiBpdCBpcyByZWFkIGF0IGxpc3RpbmctdGh1bWJuYWlsXG4gICAqIHNpemUsIGFuZCBpdCBpcyBuZWl0aGVyIHdyYXBwZWQgbm9yIHNocnVuayB0byBmaXQgXHUyMDE0IG9uZSB0aGF0IGRvZXMgbm90IGZpdFxuICAgKiBpcyBSRUpFQ1RFRCwgd2l0aCB0aGUgbWVhc3VyZWQgd2lkdGggYW5kIHRoZSByb29tIGF2YWlsYWJsZS4gQ2hlY2sgYVxuICAgKiBjYW5kaWRhdGUgd2l0aCB7QGxpbmsgbWVhc3VyZUxhYmVsQ2FwdGlvbn0gYmVmb3JlIGNvbW1pdHRpbmcgdG8gaXQuXG4gICAqL1xuICByZWFkb25seSB0ZXh0OiBzdHJpbmc7XG59XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3Ige0BsaW5rIG1lYXN1cmVMYWJlbENhcHRpb259LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE1lYXN1cmVMYWJlbENhcHRpb25QYXJhbXMge1xuICAvKipcbiAgICogSGVpZ2h0IG9mIHRoZSBpbWFnZSB0aGUgY2FwdGlvbiBpcyBkZXN0aW5lZCBmb3IsIGluIHBpeGVscy5cbiAgICovXG4gIHJlYWRvbmx5IGltYWdlSGVpZ2h0SW5QaXhlbHM6IG51bWJlcjtcblxuICAvKipcbiAgICogV2lkdGggb2YgdGhlIGltYWdlIHRoZSBjYXB0aW9uIGlzIGRlc3RpbmVkIGZvciwgaW4gcGl4ZWxzLlxuICAgKi9cbiAgcmVhZG9ubHkgaW1hZ2VXaWR0aEluUGl4ZWxzOiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFRoZSBjYXB0aW9uIHRvIG1lYXN1cmUuXG4gICAqL1xuICByZWFkb25seSB0ZXh0OiBzdHJpbmc7XG59XG5cbi8qKlxuICogQ2FwdGlvbiBzaXplIGFzIGEgZnJhY3Rpb24gb2YgaW1hZ2UgV0lEVEgsIG5vdCBoZWlnaHQuXG4gKlxuICogV2lkdGggaXMgd2hhdCBnb3Zlcm5zIGxlZ2liaWxpdHkgaGVyZTogYSA5MDB4MTYwMCBwaG9uZSBmcmFtZSBhbmQgYSAxMjAweDgwMFxuICogZGVza3RvcCBmcmFtZSBhcmUgcmVhZCBhdCBzaW1pbGFyIG9uLXNjcmVlbiB3aWR0aHMgaW4gYSBsaXN0aW5nLCBzbyBzaXppbmcgYnlcbiAqIHdpZHRoIGtlZXBzIHRoZSBjYXB0aW9uIHZpc3VhbGx5IGNvbnNpc3RlbnQgYWNyb3NzIHRoZSB0d28uXG4gKi9cbmNvbnN0IEZPTlRfU0laRV9SQVRJTyA9IDAuMDM0O1xuXG4vKipcbiAqIEJhbmQgaGVpZ2h0IGFzIGEgbXVsdGlwbGUgb2YgdGhlIGZvbnQgc2l6ZSBcdTIwMTQgZW5vdWdoIHRvIHNpdCB0aGUgdGV4dCBvbiB3aXRoXG4gKiBjbGVhciBzcGFjZSBhYm92ZSBhbmQgYmVsb3cuXG4gKi9cbmNvbnN0IEJBTkRfSEVJR0hUX1JBVElPID0gMi4yO1xuXG4vKipcbiAqIE9wYWNpdHkgb2YgdGhlIGJhbmQuIEZ1bGx5IG9wYXF1ZSwgYW5kIHRoYXQgaXMgYSBkZWNpc2lvbiByYXRoZXIgdGhhbiBhXG4gKiBkZWZhdWx0OiB0aGUgYmFuZCdzIGpvYiBpcyB0byBDT1ZFUiB0aGUgY2hyb21lIGFsb25nIHRoZSBib3R0b20gb2YgdGhlIGZyYW1lLFxuICogc28gbm90aGluZyB1bmRlcm5lYXRoIGl0IG1heSByZWFjaCB0aGUgY2FwdHVyZWQgZnJhbWUgYXQgYWxsLlxuICpcbiAqIEl0IHdhcyAwLjk0LCBhIHZhbHVlIGNob3NlbiBvbmx5IGJlY2F1c2UgMC44MiBsZXQgYSBzdGF0dXMgYmFyIGxlZ2libHkgYmxlZWRcbiAqIHRocm91Z2ggYmVoaW5kIHRoZSBjYXB0aW9uIGFuZCBsb29rIGxpa2UgYSBtaXN0YWtlIHJhdGhlciB0aGFuIGEgZGVzaWduLlxuICogTm90aGluZyBpbiB0aGF0IGFyZ3VlZCBmb3IgMC45NCBvdmVyIGZ1bGwgb3BhY2l0eS4gV2hhdCAwLjk0IGRvZXMgaXMgYXR0ZW51YXRlXG4gKiB3aGF0ZXZlciBpcyB1bmRlciB0aGUgYmFuZCB0byBhYm91dCA2ICUgYnJpZ2h0bmVzcyBcdTIwMTQgaW52aXNpYmxlIHRvIGEgcmVhZGVyLFxuICogYW5kIHN0aWxsIDM0OSBkaWZmZXJpbmcgcGl4ZWxzIHRvIGEgZGlmZiwgbWVhc3VyZWQgb24gYSB0ZW1wb3JhcnkgdmF1bHQncyBuYW1lXG4gKiByZW5kZXJpbmcgdW5kZXIgdGhlIGJhbmQgb2YgYSAxMjAweDgwMCBkZXNrdG9wIGZyYW1lLiBBbnkgdmFsdWUgYmVsb3cgMSBob2xkc1xuICogdGhhdCBjaGFubmVsIG9wZW4gZm9yIGV2ZXJ5IHZhcnlpbmcgdGhpbmcgdGhlIGJvdHRvbSBjaHJvbWUgY2FuIGNhcnJ5IFx1MjAxNCBhXG4gKiBjbG9jaywgYSB3b3JkIGNvdW50LCBhIHN5bmMgaW5kaWNhdG9yIFx1MjAxNCBvbiBhIGZyYW1lIG5vYm9keSBoYXMgY2FwdHVyZWQgeWV0LlxuICpcbiAqIFdyaXR0ZW4gaW50byB0aGUgZW1pdHRlZCBTVkcgZXhwbGljaXRseSwgZXZlbiB0aG91Z2ggMSBpcyB3aGF0IGBmaWxsLW9wYWNpdHlgXG4gKiBkZWZhdWx0cyB0by4gRHJvcHBpbmcgdGhlIGF0dHJpYnV0ZSB3b3VsZCBsZWF2ZSB0aGlzIGNvbnN0YW50IHVudXNlZCBhbmQgdGFrZVxuICogdGhlIGRlY2lzaW9uIGF3YXkgd2l0aCBpdDogdGhlIGJhbmQgd291bGQgdGhlbiBiZSBvcGFxdWUgYnkgYWNjaWRlbnQgb2YgdGhlXG4gKiBmb3JtYXQgcmF0aGVyIHRoYW4gb24gcHVycG9zZSwgd2l0aCBub3RoaW5nIG5hbWVkIHRvIHJlYWQgYW5kIG5vdGhpbmcgdG9cbiAqIGFzc2VydCBvbi5cbiAqL1xuY29uc3QgQkFORF9PUEFDSVRZID0gMTtcblxuY29uc3QgTUlOSU1VTV9GT05UX1NJWkVfSU5fUElYRUxTID0gMTg7XG5cbi8qKlxuICogRmxvb3Igb24gYmFuZCBoZWlnaHQgYXMgYSBmcmFjdGlvbiBvZiBpbWFnZSBIRUlHSFQuXG4gKlxuICogSGVpZ2h0IGRlcml2ZWQgZnJvbSB0aGUgY2FwdGlvbiBhbG9uZSBpcyB0b28gc2hhbGxvdyBvbiBhIHRhbGwgZnJhbWU6IG9uIGFcbiAqIDkwMHgxNjAwIHBob25lIGl0IGNhbWUgdG8gNjhweCBhbmQgc2xpY2VkIHRocm91Z2ggdGhlIHN0YXR1cyByb3cgaXQgd2FzIG1lYW50XG4gKiB0byBjb3ZlciwgY2xpcHBpbmcgdGhlIHRleHQgbWlkLWxpbmUuIFRoaXMgZmxvb3IgbWFrZXMgdGhlIGJhbmQgZGVlcCBlbm91Z2ggdG9cbiAqIHN3YWxsb3cgdGhhdCByb3cgd2hvbGUgKDEyMHB4IG9uIGEgOTAweDE2MDAgcGhvbmUpLCBhbmQgaXMgaW5lcnQgb24gYSB3aWRlIGZyYW1lIHdoZXJlIHRoZSBjYXB0aW9uLWRlcml2ZWRcbiAqIGhlaWdodCBpcyBhbHJlYWR5IHRoZSBsYXJnZXIgb2YgdGhlIHR3by5cbiAqL1xuY29uc3QgTUlOSU1VTV9IRUlHSFRfUkFUSU8gPSAwLjA3NTtcblxuLyoqXG4gKiBNYXJnaW4gaGVsZCBjbGVhciBhdCBFQUNIIGVuZCBvZiB0aGUgY2FwdGlvbiwgYXMgYSBmcmFjdGlvbiBvZiBpbWFnZSB3aWR0aC5cbiAqXG4gKiBBIGNhcHRpb24gdGhhdCBlbmRzIGEgcGl4ZWwgaW5zaWRlIHRoZSBmcmFtZSBpcyBsZWdhbGx5IHVuLWNsaXBwZWQgYW5kIHN0aWxsXG4gKiBsb29rcyB3cm9uZywgc28gdGhlIHJvb20gYSBjYXB0aW9uIGlzIG1lYXN1cmVkIGFnYWluc3QgaXMgdGhlIGZyYW1lIGxlc3MgdGhpc1xuICogYXQgYm90aCBlbmRzIFx1MjAxNCA0OHB4IGVhY2ggc2lkZSBvbiBhIDEyMDBweCBmcmFtZS5cbiAqL1xuY29uc3QgU0lERV9NQVJHSU5fUkFUSU8gPSAwLjA0O1xuXG4vKipcbiAqIERpdmlzb3IgdGhhdCB0dXJucyBhIHNwYW4gaW50byBpdHMgbWlkcG9pbnQsIGZvciBjZW50ZXJpbmcgdGhlIGNhcHRpb24uXG4gKi9cbmNvbnN0IENFTlRFUl9ESVZJU09SID0gMjtcblxuLyoqXG4gKiBUaGUgY2FwdGlvbidzIHR5cGVmYWNlIGFuZCB3ZWlnaHQsIGluIG9uZSBwbGFjZSBiZWNhdXNlIHRoZSBiYW5kIGFuZCB0aGVcbiAqIG1lYXN1cmVtZW50IGNhbnZhcyBNVVNUIGRyYXcgd2l0aCB0aGUgc2FtZSBvbmVzOiBhIG1lYXN1cmVtZW50IHRha2VuIGluIGFcbiAqIGRpZmZlcmVudCBmYWNlIGlzIG5vdCBhIG1lYXN1cmVtZW50IG9mIHRoZSB0aGluZyB0aGF0IHNoaXBzLlxuICovXG5jb25zdCBGT05UX0ZBTUlMWSA9ICdTZWdvZSBVSSwgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZic7XG5cbmNvbnN0IEZPTlRfV0VJR0hUID0gJzYwMCc7XG5cbmNvbnN0IENBUFRJT05fRklMTCA9ICcjZmZmZmZmJztcblxuLyoqXG4gKiBVcHBlciBib3VuZCBvbiBvbmUgZ2x5cGgncyBhZHZhbmNlIHdpZHRoLCBhcyBhIG11bHRpcGxlIG9mIHRoZSBmb250IHNpemUuXG4gKlxuICogSXQgc2l6ZXMgdGhlIG9mZi1zY3JlZW4gY2FudmFzIHRoZSBjYXB0aW9uIGlzIG1lYXN1cmVkIG9uLCBhbmQgaXQgb25seSBldmVyXG4gKiBuZWVkcyB0byBiZSBhbiBvdmVyLWVzdGltYXRlOiBhIGNhbnZhcyB0b28gbmFycm93IHdvdWxkIGNsaXAgdGhlIHRleHQgYmVpbmdcbiAqIG1lYXN1cmVkLCB1bmRlci1yZXBvcnQgaXRzIHdpZHRoLCBhbmQgcmVpbnRyb2R1Y2UgdGhlIGV4YWN0IHNpbGVudCBjbGlwcGluZ1xuICogdGhlIG1lYXN1cmVtZW50IGV4aXN0cyB0byBjYXRjaC4gTm8gTGF0aW4gZ2x5cGggaW4gYSBwcm9wb3J0aW9uYWwgc2Fuc1xuICogYWR2YW5jZXMgYSBmdWxsIGVtIFx1MjAxNCBhbiBlbSBkYXNoLCB0aGUgd2lkZXN0LCBpcyAxLjAgXHUyMDE0IHNvIDEuMSBpcyBoZWFkcm9vbSBhdFxuICogbmVnbGlnaWJsZSBjb3N0IChtZWFzdXJlZCBwcm9zZSBydW5zIGFib3V0IDAuNDUgZW0gcGVyIGNoYXJhY3Rlciwgc28gdGhlXG4gKiBjYW52YXMgY29tZXMgb3V0IHJvdWdobHkgMi41eCB0aGUgdGV4dCkuXG4gKi9cbmNvbnN0IE1BWElNVU1fR0xZUEhfQURWQU5DRV9SQVRJTyA9IDEuMTtcblxuLyoqXG4gKiBIZWlnaHQgb2YgdGhlIG1lYXN1cmVtZW50IGNhbnZhcyBhcyBhIG11bHRpcGxlIG9mIHRoZSBmb250IHNpemUsIHNvIGFzY2VuZGVyc1xuICogYW5kIGRlc2NlbmRlcnMgaGF2ZSByb29tIGFuZCB0aGUgdHJpbSByZWFkcyB0aGUgZ2x5cGhzIHJhdGhlciB0aGFuIHRoZSBlZGdlLlxuICovXG5jb25zdCBNRUFTVVJFTUVOVF9DQU5WQVNfSEVJR0hUX1JBVElPID0gMztcblxuLyoqXG4gKiBIb3cgZmFyIGEgcGl4ZWwgbWF5IGRpZmZlciBmcm9tIHRoZSB0cmFuc3BhcmVudCBzdXJyb3VuZCBiZWZvcmUgYHRyaW1gIGNvdW50c1xuICogaXQgYXMgdGV4dC4gRGVsaWJlcmF0ZWx5IGZhciBsb3dlciB0aGFuIGBzaGFycGAncyBkZWZhdWx0IG9mIDEwOiB0aGUgb3V0ZXJtb3N0XG4gKiBwaXhlbHMgb2YgYW4gYW50aWFsaWFzZWQgZ2x5cGggYXJlIHZlcnkgZmFpbnQsIGFuZCB0aGUgZGVmYXVsdCBkaXNjYXJkcyB0aGVtLFxuICogdW5kZXItbWVhc3VyaW5nIGEgY2FwdGlvbiBieSBhIHBpeGVsIG9yIHR3byBhdCBlYWNoIGVuZC5cbiAqL1xuY29uc3QgVFJJTV9USFJFU0hPTEQgPSAxO1xuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayBidWlsZENhcHRpb25UZXh0RWxlbWVudH0uXG4gKi9cbmludGVyZmFjZSBDYXB0aW9uVGV4dEVsZW1lbnRQYXJhbXMge1xuICByZWFkb25seSBmb250U2l6ZUluUGl4ZWxzOiBudW1iZXI7XG4gIHJlYWRvbmx5IHRleHQ6IHN0cmluZztcbiAgcmVhZG9ubHkgdGV4dEFuY2hvcjogJ21pZGRsZScgfCAnc3RhcnQnO1xuICByZWFkb25seSB4SW5QaXhlbHM6IG51bWJlcjtcbiAgcmVhZG9ubHkgeUluUGl4ZWxzOiBudW1iZXI7XG59XG5cbi8qKlxuICogQnVpbGRzIHRoZSBTVkcgZm9yIHRoZSBjYXB0aW9uIGJhbmQuXG4gKlxuICogQHBhcmFtIHRleHQgLSBUaGUgY2FwdGlvbi5cbiAqIEBwYXJhbSBnZW9tZXRyeSAtIFRoZSBiYW5kIGdlb21ldHJ5LlxuICogQHBhcmFtIGltYWdlV2lkdGhJblBpeGVscyAtIFdpZHRoIG9mIHRoZSBpbWFnZSwgc28gdGhlIGJhbmQgc3BhbnMgaXQuXG4gKiBAcmV0dXJucyBUaGUgU1ZHIG1hcmt1cC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkTGFiZWxTdmcodGV4dDogc3RyaW5nLCBnZW9tZXRyeTogTGFiZWxCYW5kR2VvbWV0cnksIGltYWdlV2lkdGhJblBpeGVsczogbnVtYmVyKTogc3RyaW5nIHtcbiAgY29uc3QgeyBmb250U2l6ZUluUGl4ZWxzLCBoZWlnaHRJblBpeGVscyB9ID0gZ2VvbWV0cnk7XG4gIGNvbnN0IGNhcHRpb25FbGVtZW50ID0gYnVpbGRDYXB0aW9uVGV4dEVsZW1lbnQoe1xuICAgIGZvbnRTaXplSW5QaXhlbHMsXG4gICAgdGV4dCxcbiAgICB0ZXh0QW5jaG9yOiAnbWlkZGxlJyxcbiAgICB4SW5QaXhlbHM6IGltYWdlV2lkdGhJblBpeGVscyAvIENFTlRFUl9ESVZJU09SLFxuICAgIHlJblBpeGVsczogaGVpZ2h0SW5QaXhlbHMgLyBDRU5URVJfRElWSVNPUlxuICB9KTtcblxuICByZXR1cm4gYDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiJHtTdHJpbmcoaW1hZ2VXaWR0aEluUGl4ZWxzKX1cIiBoZWlnaHQ9XCIke1N0cmluZyhoZWlnaHRJblBpeGVscyl9XCI+YFxuICAgICsgYDxyZWN0IHg9XCIwXCIgeT1cIjBcIiB3aWR0aD1cIiR7U3RyaW5nKGltYWdlV2lkdGhJblBpeGVscyl9XCIgaGVpZ2h0PVwiJHtTdHJpbmcoaGVpZ2h0SW5QaXhlbHMpfVwiIGBcbiAgICArIGBmaWxsPVwiIzAwMDAwMFwiIGZpbGwtb3BhY2l0eT1cIiR7U3RyaW5nKEJBTkRfT1BBQ0lUWSl9XCIvPmBcbiAgICArIGAke2NhcHRpb25FbGVtZW50fTwvc3ZnPmA7XG59XG5cbi8qKlxuICogQ29tcHV0ZXMgdGhlIGNhcHRpb24gYmFuZCdzIHNpemUgYW5kIHBvc2l0aW9uIGZvciBhIGdpdmVuIGltYWdlLlxuICpcbiAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgaW1hZ2UgZGltZW5zaW9ucy5cbiAqIEByZXR1cm5zIFRoZSBiYW5kIGdlb21ldHJ5LlxuICogQHRocm93cyBFcnJvciBpZiBlaXRoZXIgZGltZW5zaW9uIGlzIG5vdCBhIHBvc2l0aXZlIG51bWJlci5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbXB1dGVMYWJlbEJhbmQocGFyYW1zOiBDb21wdXRlTGFiZWxCYW5kUGFyYW1zKTogTGFiZWxCYW5kR2VvbWV0cnkge1xuICBjb25zdCB7IGltYWdlSGVpZ2h0SW5QaXhlbHMsIGltYWdlV2lkdGhJblBpeGVscyB9ID0gcGFyYW1zO1xuXG4gIGlmICghTnVtYmVyLmlzRmluaXRlKGltYWdlV2lkdGhJblBpeGVscykgfHwgaW1hZ2VXaWR0aEluUGl4ZWxzIDw9IDApIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYGNvbXB1dGVMYWJlbEJhbmQ6IGltYWdlV2lkdGhJblBpeGVscyBtdXN0IGJlIGEgcG9zaXRpdmUgbnVtYmVyLCBnb3QgJHtTdHJpbmcoaW1hZ2VXaWR0aEluUGl4ZWxzKX0uYCk7XG4gIH1cblxuICBpZiAoIU51bWJlci5pc0Zpbml0ZShpbWFnZUhlaWdodEluUGl4ZWxzKSB8fCBpbWFnZUhlaWdodEluUGl4ZWxzIDw9IDApIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYGNvbXB1dGVMYWJlbEJhbmQ6IGltYWdlSGVpZ2h0SW5QaXhlbHMgbXVzdCBiZSBhIHBvc2l0aXZlIG51bWJlciwgZ290ICR7U3RyaW5nKGltYWdlSGVpZ2h0SW5QaXhlbHMpfS5gKTtcbiAgfVxuXG4gIGNvbnN0IGZvbnRTaXplSW5QaXhlbHMgPSBNYXRoLm1heChNSU5JTVVNX0ZPTlRfU0laRV9JTl9QSVhFTFMsIE1hdGgucm91bmQoaW1hZ2VXaWR0aEluUGl4ZWxzICogRk9OVF9TSVpFX1JBVElPKSk7XG4gIGNvbnN0IGNhcHRpb25IZWlnaHRJblBpeGVscyA9IE1hdGgucm91bmQoZm9udFNpemVJblBpeGVscyAqIEJBTkRfSEVJR0hUX1JBVElPKTtcbiAgY29uc3QgZmxvb3JlZEhlaWdodEluUGl4ZWxzID0gTWF0aC5tYXgoY2FwdGlvbkhlaWdodEluUGl4ZWxzLCBNYXRoLnJvdW5kKGltYWdlSGVpZ2h0SW5QaXhlbHMgKiBNSU5JTVVNX0hFSUdIVF9SQVRJTykpO1xuICBjb25zdCBoZWlnaHRJblBpeGVscyA9IE1hdGgubWluKGltYWdlSGVpZ2h0SW5QaXhlbHMsIGZsb29yZWRIZWlnaHRJblBpeGVscyk7XG4gIGNvbnN0IHNpZGVNYXJnaW5JblBpeGVscyA9IE1hdGgucm91bmQoaW1hZ2VXaWR0aEluUGl4ZWxzICogU0lERV9NQVJHSU5fUkFUSU8pO1xuXG4gIHJldHVybiB7XG4gICAgY2FwdGlvblJvb21JblBpeGVsczogaW1hZ2VXaWR0aEluUGl4ZWxzIC0gKHNpZGVNYXJnaW5JblBpeGVscyAqIENFTlRFUl9ESVZJU09SKSxcbiAgICBmb250U2l6ZUluUGl4ZWxzLFxuICAgIGhlaWdodEluUGl4ZWxzLFxuICAgIHRvcEluUGl4ZWxzOiBpbWFnZUhlaWdodEluUGl4ZWxzIC0gaGVpZ2h0SW5QaXhlbHNcbiAgfTtcbn1cblxuLyoqXG4gKiBFc2NhcGVzIHRleHQgZm9yIGluY2x1c2lvbiBpbiBTVkcgY2hhcmFjdGVyIGRhdGEuXG4gKlxuICogQSBjYXB0aW9uIGlzIGF1dGhvcmVkIHBlciBzY3JlZW5zaG90IGFuZCBjYW4gbGVnaXRpbWF0ZWx5IGNvbnRhaW4gYCZgIG9yIHRoZVxuICogYW5nbGUgYnJhY2tldHMgT2JzaWRpYW4gdXNlcyBpbiBsaW5rIHN5bnRheDsgdW5lc2NhcGVkLCB0aG9zZSBtYWtlIHRoZSBTVkdcbiAqIGltcG9zc2libGUgdG8gcGFyc2UgYW5kIGBzaGFycGAgZmFpbHMgb24gYSBjYXB0aW9uIHJhdGhlciB0aGFuIG9uIGFuIGltYWdlLlxuICpcbiAqIEBwYXJhbSB0ZXh0IC0gVGhlIHJhdyBjYXB0aW9uLlxuICogQHJldHVybnMgVGhlIGNhcHRpb24sIHNhZmUgdG8gZW1iZWQgaW4gU1ZHLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZXNjYXBlU3ZnVGV4dCh0ZXh0OiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gdGV4dFxuICAgIC5yZXBsYWNlQWxsKCcmJywgJyZhbXA7JylcbiAgICAucmVwbGFjZUFsbCgnPCcsICcmbHQ7JylcbiAgICAucmVwbGFjZUFsbCgnPicsICcmZ3Q7JylcbiAgICAucmVwbGFjZUFsbCgnXCInLCAnJnF1b3Q7JylcbiAgICAucmVwbGFjZUFsbCgnXFwnJywgJyZhcG9zOycpO1xufVxuXG4vKipcbiAqIERyYXdzIGEgY2FwdGlvbiBiYW5kIGFjcm9zcyB0aGUgYm90dG9tIG9mIGEgc2NyZWVuc2hvdC5cbiAqXG4gKiBUaGUgaW1hZ2Uga2VlcHMgaXRzIGRpbWVuc2lvbnMgZXhhY3RseTogdGhlIGJhbmQgaXMgY29tcG9zaXRlZCBPVkVSIHRoZVxuICogZnJhbWUsIG5ldmVyIGFwcGVuZGVkIHRvIGl0LCBiZWNhdXNlIHRoZSBzdG9yZSBleHBlY3RzIGEgc3BlY2lmaWMgc2l6ZS5cbiAqXG4gKiBAcGFyYW0gYnl0ZXMgLSBUaGUgY2FwdHVyZWQgUE5HLlxuICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgY2FwdGlvbi5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgdG8gdGhlIGxhYmVsZWQgUE5HLCB0aGUgc2FtZSBzaXplIGFzIHRoZSBpbnB1dC5cbiAqIEB0aHJvd3MgRXJyb3IgaWYgYHNoYXJwYCBpcyBub3QgaW5zdGFsbGVkLCB0aGUgaW1hZ2UgZGltZW5zaW9ucyBjYW5ub3QgYmUgcmVhZCwgb3IgdGhlIGNhcHRpb24gaXMgdG9vIHdpZGUgZm9yIHRoZSBmcmFtZS5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGxhYmVsU2NyZWVuc2hvdChieXRlczogVWludDhBcnJheSwgb3B0aW9uczogTGFiZWxTY3JlZW5zaG90T3B0aW9ucyk6IFByb21pc2U8VWludDhBcnJheT4ge1xuICBjb25zdCBzaGFycCA9IGF3YWl0IGltcG9ydFNoYXJwKCdsYWJlbFNjcmVlbnNob3QnKTtcbiAgY29uc3QgbWV0YWRhdGEgPSBhd2FpdCBzaGFycChieXRlcykubWV0YWRhdGEoKTtcbiAgY29uc3QgaW1hZ2VXaWR0aEluUGl4ZWxzID0gbWV0YWRhdGEud2lkdGg7XG4gIGNvbnN0IGltYWdlSGVpZ2h0SW5QaXhlbHMgPSBtZXRhZGF0YS5oZWlnaHQ7XG5cbiAgLyogdjggaWdub3JlIG5leHQgMyAtLSBEZWZlbnNpdmU6IGBzaGFycGAgcmVqZWN0cyBhIG5vbi1pbWFnZSBiZWZvcmUgaXQgY2FuIHJlcG9ydCBtZXRhZGF0YSB3aXRob3V0IGRpbWVuc2lvbnMsIHNvIHRoaXMgYnJhbmNoIGlzIHVucmVhY2hhYmxlIGZyb20gYSB0ZXN0LiAqL1xuICBpZiAoaW1hZ2VXaWR0aEluUGl4ZWxzID09PSB1bmRlZmluZWQgfHwgaW1hZ2VIZWlnaHRJblBpeGVscyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdsYWJlbFNjcmVlbnNob3Q6IGNvdWxkIG5vdCByZWFkIHRoZSBzb3VyY2UgaW1hZ2UgZGltZW5zaW9ucy4nKTtcbiAgfVxuXG4gIGNvbnN0IGdlb21ldHJ5ID0gY29tcHV0ZUxhYmVsQmFuZCh7IGltYWdlSGVpZ2h0SW5QaXhlbHMsIGltYWdlV2lkdGhJblBpeGVscyB9KTtcbiAgY29uc3QgdGV4dFdpZHRoSW5QaXhlbHMgPSBhd2FpdCBtZWFzdXJlQ2FwdGlvbldpZHRoKG9wdGlvbnMudGV4dCwgZ2VvbWV0cnkuZm9udFNpemVJblBpeGVscyk7XG5cbiAgaWYgKHRleHRXaWR0aEluUGl4ZWxzID4gZ2VvbWV0cnkuY2FwdGlvblJvb21JblBpeGVscykge1xuICAgIGNvbnN0IG92ZXJmbG93SW5QaXhlbHMgPSB0ZXh0V2lkdGhJblBpeGVscyAtIGdlb21ldHJ5LmNhcHRpb25Sb29tSW5QaXhlbHM7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgYGxhYmVsU2NyZWVuc2hvdDogdGhlIGNhcHRpb24gaXMgJHtTdHJpbmcob3ZlcmZsb3dJblBpeGVscyl9cHggdG9vIHdpZGUgZm9yIHRoZSBmcmFtZS4gYFxuICAgICAgICArIGBJdCByZW5kZXJzICR7U3RyaW5nKHRleHRXaWR0aEluUGl4ZWxzKX1weCBhdCBmb250LXNpemUgJHtTdHJpbmcoZ2VvbWV0cnkuZm9udFNpemVJblBpeGVscyl9LCBhbmQgYSBgXG4gICAgICAgICsgYCR7U3RyaW5nKGltYWdlV2lkdGhJblBpeGVscyl9cHggZnJhbWUgaGFzIHJvb20gZm9yICR7U3RyaW5nKGdlb21ldHJ5LmNhcHRpb25Sb29tSW5QaXhlbHMpfXB4LiBgXG4gICAgICAgICsgJ1Nob3J0ZW4gaXQ6IGEgY2FwdGlvbiB0aGF0IGRvZXMgbm90IGZpdCBpcyBjbGlwcGVkIGF0IEJPVEggZW5kcywgd2l0aCBubyBlbGxpcHNpcyB0byBzaG93IGl0IGhhcHBlbmVkLiAnXG4gICAgICAgICsgYENhcHRpb246ICR7SlNPTi5zdHJpbmdpZnkob3B0aW9ucy50ZXh0KX1gXG4gICAgKTtcbiAgfVxuXG4gIGNvbnN0IHN2ZyA9IGJ1aWxkTGFiZWxTdmcob3B0aW9ucy50ZXh0LCBnZW9tZXRyeSwgaW1hZ2VXaWR0aEluUGl4ZWxzKTtcbiAgY29uc3QgbGF5ZXI6IFNoYXJwQ29tcG9zaXRlTGF5ZXIgPSB7XG4gICAgaW5wdXQ6IEJ1ZmZlci5mcm9tKHN2ZyksXG4gICAgbGVmdDogMCxcbiAgICB0b3A6IGdlb21ldHJ5LnRvcEluUGl4ZWxzXG4gIH07XG5cbiAgY29uc3QgbGFiZWxlZCA9IGF3YWl0IHNoYXJwKGJ5dGVzKVxuICAgIC5jb21wb3NpdGUoW2xheWVyXSlcbiAgICAucG5nKClcbiAgICAudG9CdWZmZXIoKTtcblxuICByZXR1cm4gbmV3IFVpbnQ4QXJyYXkobGFiZWxlZCk7XG59XG5cbi8qKlxuICogTWVhc3VyZXMgYSBjYXB0aW9uIGFnYWluc3QgdGhlIGZyYW1lIGl0IGlzIGRlc3RpbmVkIGZvciwgd2l0aG91dCBkcmF3aW5nXG4gKiBhbnl0aGluZy5cbiAqXG4gKiBUaGlzIGlzIHdoYXQge0BsaW5rIGxhYmVsU2NyZWVuc2hvdH0gcmVqZWN0cyBhbiBvdmVybG9uZyBjYXB0aW9uIHdpdGgsIGV4cG9zZWRcbiAqIHNvIGEgY2FwdGlvbiBjYW4gYmUgY2hvc2VuIHdpdGggdGhlIG51bWJlciBpbiBoYW5kIGluc3RlYWQgb2YgYnkgY2FwdHVyaW5nIGFcbiAqIGZyYW1lIGFuZCBsb29raW5nIGF0IGl0LlxuICpcbiAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgY2FwdGlvbiBhbmQgdGhlIGRpbWVuc2lvbnMgb2YgdGhlIGltYWdlIGl0IGlzIGZvci5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgdG8gdGhlIG1lYXN1cmVtZW50LlxuICogQHRocm93cyBFcnJvciBpZiBgc2hhcnBgIGlzIG5vdCBpbnN0YWxsZWQsIG9yIGVpdGhlciBkaW1lbnNpb24gaXMgbm90IGEgcG9zaXRpdmUgbnVtYmVyLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gbWVhc3VyZUxhYmVsQ2FwdGlvbihwYXJhbXM6IE1lYXN1cmVMYWJlbENhcHRpb25QYXJhbXMpOiBQcm9taXNlPExhYmVsQ2FwdGlvbk1lYXN1cmVtZW50PiB7XG4gIGNvbnN0IHsgaW1hZ2VIZWlnaHRJblBpeGVscywgaW1hZ2VXaWR0aEluUGl4ZWxzLCB0ZXh0IH0gPSBwYXJhbXM7XG4gIGNvbnN0IGdlb21ldHJ5ID0gY29tcHV0ZUxhYmVsQmFuZCh7IGltYWdlSGVpZ2h0SW5QaXhlbHMsIGltYWdlV2lkdGhJblBpeGVscyB9KTtcbiAgY29uc3QgdGV4dFdpZHRoSW5QaXhlbHMgPSBhd2FpdCBtZWFzdXJlQ2FwdGlvbldpZHRoKHRleHQsIGdlb21ldHJ5LmZvbnRTaXplSW5QaXhlbHMpO1xuXG4gIHJldHVybiB7XG4gICAgY2FwdGlvblJvb21JblBpeGVsczogZ2VvbWV0cnkuY2FwdGlvblJvb21JblBpeGVscyxcbiAgICBkb2VzRml0OiB0ZXh0V2lkdGhJblBpeGVscyA8PSBnZW9tZXRyeS5jYXB0aW9uUm9vbUluUGl4ZWxzLFxuICAgIHRleHRXaWR0aEluUGl4ZWxzXG4gIH07XG59XG5cbi8qKlxuICogQnVpbGRzIHRoZSBjYXB0aW9uJ3MgU1ZHIGA8dGV4dD5gIGVsZW1lbnQuXG4gKlxuICogQm90aCB0aGUgYmFuZCBhbmQgdGhlIG1lYXN1cmVtZW50IGNhbnZhcyBnbyB0aHJvdWdoIGhlcmUsIHNvIHRoZSB0aGluZyB0aGF0XG4gKiBpcyBtZWFzdXJlZCBpcyBkcmF3biB3aXRoIHRoZSBzYW1lIGZhY2UsIHdlaWdodCBhbmQgc2l6ZSBhcyB0aGUgdGhpbmcgdGhhdFxuICogc2hpcHMuIFR3byBoYW5kLXdyaXR0ZW4gY29waWVzIHdvdWxkIGJlIGZyZWUgdG8gZHJpZnQsIGFuZCBhIG1lYXN1cmVtZW50IHRoYXRcbiAqIGhhcyBkcmlmdGVkIGZyb20gdGhlIGRyYXdpbmcgaXMgd29yc2UgdGhhbiBubyBtZWFzdXJlbWVudCBhdCBhbGwuXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSBjYXB0aW9uLCBpdHMgc2l6ZSwgYW5kIHdoZXJlIHRvIGFuY2hvciBpdC5cbiAqIEByZXR1cm5zIFRoZSBgPHRleHQ+YCBtYXJrdXAuXG4gKi9cbmZ1bmN0aW9uIGJ1aWxkQ2FwdGlvblRleHRFbGVtZW50KHBhcmFtczogQ2FwdGlvblRleHRFbGVtZW50UGFyYW1zKTogc3RyaW5nIHtcbiAgY29uc3QgeyBmb250U2l6ZUluUGl4ZWxzLCB0ZXh0LCB0ZXh0QW5jaG9yLCB4SW5QaXhlbHMsIHlJblBpeGVscyB9ID0gcGFyYW1zO1xuXG4gIHJldHVybiBgPHRleHQgeD1cIiR7U3RyaW5nKHhJblBpeGVscyl9XCIgeT1cIiR7U3RyaW5nKHlJblBpeGVscyl9XCIgYFxuICAgICsgYGZvbnQtZmFtaWx5PVwiJHtGT05UX0ZBTUlMWX1cIiBmb250LXNpemU9XCIke1N0cmluZyhmb250U2l6ZUluUGl4ZWxzKX1cIiBgXG4gICAgKyBgZm9udC13ZWlnaHQ9XCIke0ZPTlRfV0VJR0hUfVwiIGZpbGw9XCIke0NBUFRJT05fRklMTH1cIiB0ZXh0LWFuY2hvcj1cIiR7dGV4dEFuY2hvcn1cIiBkb21pbmFudC1iYXNlbGluZT1cImNlbnRyYWxcIj5gXG4gICAgKyBgJHtlc2NhcGVTdmdUZXh0KHRleHQpfTwvdGV4dD5gO1xufVxuXG4vKipcbiAqIE1lYXN1cmVzIGhvdyB3aWRlIGEgY2FwdGlvbiByZW5kZXJzIGF0IGEgZ2l2ZW4gc2l6ZS5cbiAqXG4gKiBUaGUgdGV4dCBpcyBkcmF3biBhbG9uZSBvbiBhIHRyYW5zcGFyZW50IGNhbnZhcyBkZWxpYmVyYXRlbHkgd2lkZXIgdGhhbiBpdCBjYW5cbiAqIHBvc3NpYmx5IG5lZWQsIHRoZW4gYHRyaW1gbWVkIGJhY2sgdG8gaXRzIG93biBpbmsgXHUyMDE0IHRoZSBzYW1lIG1lYXN1cmVtZW50IHRoYXRcbiAqIHdhcyBwcmV2aW91c2x5IGRvbmUgYnkgaGFuZCwgb25jZSwgcGVyIGNhcHRpb24sIGJ5IHdob2V2ZXIgdGhvdWdodCB0byBkb3VidFxuICogb25lLiBUaGUgcmVuZGVyZXIgZG9pbmcgdGhlIG1lYXN1cmluZyBpcyB0aGUgcmVuZGVyZXIgdGhhdCBkcmF3cyB0aGUgYmFuZCwgc29cbiAqIHRoZSB0d28gY2Fubm90IGRpc2FncmVlIGFib3V0IGEgZm9udCB0aGUgaG9zdCBkb2VzIG9yIGRvZXMgbm90IGhhdmUuXG4gKlxuICogQHBhcmFtIHRleHQgLSBUaGUgY2FwdGlvbi5cbiAqIEBwYXJhbSBmb250U2l6ZUluUGl4ZWxzIC0gVGhlIHNpemUgdGhlIGJhbmQgd291bGQgZHJhdyBpdCBhdC5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgdG8gdGhlIHJlbmRlcmVkIHdpZHRoIGluIHBpeGVscy5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gbWVhc3VyZUNhcHRpb25XaWR0aCh0ZXh0OiBzdHJpbmcsIGZvbnRTaXplSW5QaXhlbHM6IG51bWJlcik6IFByb21pc2U8bnVtYmVyPiB7XG4gIC8vIEEgY2FwdGlvbiB3aXRoIG5vIGluayBsZWF2ZXMgdGhlIGNhbnZhcyB1bmlmb3JtbHkgdHJhbnNwYXJlbnQsIGFuZCBgdHJpbWBcbiAgLy8gcmV0dXJucyBzdWNoIGFuIGltYWdlIHVudG91Y2hlZCBcdTIwMTQgaS5lLiByZXBvcnRzIHRoZSB3aG9sZSBjYW52YXMgYXMgdGV4dC5cbiAgaWYgKHRleHQudHJpbSgpID09PSAnJykge1xuICAgIHJldHVybiAwO1xuICB9XG5cbiAgY29uc3Qgc2hhcnAgPSBhd2FpdCBpbXBvcnRTaGFycCgnbWVhc3VyZUxhYmVsQ2FwdGlvbicpO1xuICBjb25zdCBwYWRkaW5nSW5QaXhlbHMgPSBmb250U2l6ZUluUGl4ZWxzICogQ0VOVEVSX0RJVklTT1I7XG4gIGNvbnN0IGNhbnZhc1dpZHRoSW5QaXhlbHMgPSBNYXRoLmNlaWwoZm9udFNpemVJblBpeGVscyAqIE1BWElNVU1fR0xZUEhfQURWQU5DRV9SQVRJTyAqIHRleHQubGVuZ3RoKSArIHBhZGRpbmdJblBpeGVscztcbiAgY29uc3QgY2FudmFzSGVpZ2h0SW5QaXhlbHMgPSBNYXRoLmNlaWwoZm9udFNpemVJblBpeGVscyAqIE1FQVNVUkVNRU5UX0NBTlZBU19IRUlHSFRfUkFUSU8pO1xuICBjb25zdCBjYXB0aW9uRWxlbWVudCA9IGJ1aWxkQ2FwdGlvblRleHRFbGVtZW50KHtcbiAgICBmb250U2l6ZUluUGl4ZWxzLFxuICAgIHRleHQsXG4gICAgdGV4dEFuY2hvcjogJ3N0YXJ0JyxcbiAgICB4SW5QaXhlbHM6IGZvbnRTaXplSW5QaXhlbHMsXG4gICAgeUluUGl4ZWxzOiBjYW52YXNIZWlnaHRJblBpeGVscyAvIENFTlRFUl9ESVZJU09SXG4gIH0pO1xuICBjb25zdCBzdmcgPSBgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIke1N0cmluZyhjYW52YXNXaWR0aEluUGl4ZWxzKX1cIiBoZWlnaHQ9XCIke1N0cmluZyhjYW52YXNIZWlnaHRJblBpeGVscyl9XCI+YFxuICAgICsgYCR7Y2FwdGlvbkVsZW1lbnR9PC9zdmc+YDtcblxuICBjb25zdCB0cmltbWVkID0gYXdhaXQgc2hhcnAobmV3IFVpbnQ4QXJyYXkoQnVmZmVyLmZyb20oc3ZnKSkpXG4gICAgLnRyaW0oeyB0aHJlc2hvbGQ6IFRSSU1fVEhSRVNIT0xEIH0pXG4gICAgLnBuZygpXG4gICAgLnRvQnVmZmVyKCk7XG5cbiAgcmV0dXJuIHJlYWRQbmdEaW1lbnNpb25zKG5ldyBVaW50OEFycmF5KHRyaW1tZWQpKS53aWR0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
|