@pipeline-builder/pipeline-manager 4.5.2 → 4.5.3
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/README.md +3 -2
- package/dist/agent/post-steps.d.ts +5 -4
- package/dist/agent/post-steps.d.ts.map +1 -1
- package/dist/agent/post-steps.js +19 -7
- package/dist/agent/targets.d.ts +12 -2
- package/dist/agent/targets.d.ts.map +1 -1
- package/dist/agent/targets.js +20 -4
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +4 -1
- package/dist/commands/deploy.d.ts.map +1 -1
- package/dist/commands/deploy.js +15 -2
- package/dist/commands/new-plugin.js +5 -5
- package/dist/commands/provision-steps.d.ts.map +1 -1
- package/dist/commands/provision-steps.js +1 -2
- package/dist/commands/provision.d.ts.map +1 -1
- package/dist/commands/provision.js +6 -5
- package/dist/commands/toolchain.d.ts +21 -0
- package/dist/commands/toolchain.d.ts.map +1 -0
- package/dist/commands/toolchain.js +69 -0
- package/dist/utils/pipeline-config.d.ts +5 -2
- package/dist/utils/pipeline-config.d.ts.map +1 -1
- package/dist/utils/pipeline-config.js +12 -3
- package/dist/utils/plugin-resolver.d.ts +23 -6
- package/dist/utils/plugin-resolver.d.ts.map +1 -1
- package/dist/utils/plugin-resolver.js +50 -9
- package/dist/utils/toolchain.d.ts +80 -0
- package/dist/utils/toolchain.d.ts.map +1 -0
- package/dist/utils/toolchain.js +196 -0
- package/package.json +4 -4
package/README.md
CHANGED
|
@@ -62,7 +62,7 @@ pipeline-manager infra provision --target docker --repo --with-all --with-smoke-
|
|
|
62
62
|
- **AI-optional.** Set `ANTHROPIC_API_KEY` (or `AI_PROVIDER` + its key) to parse a natural-language `--prompt` and add free-form failure diagnosis; without a key it falls back to the deterministic issue matcher.
|
|
63
63
|
- **Bootstrap a fresh machine (`--repo`).** Without a checkout, `--repo` git-clones the platform repo first, then runs from it. The clone is **sparse + partial** (`--filter=blob:none` + cone `sparse-checkout`, git ≥ 2.27 — else a full-clone fallback): it materializes only the deploy folders the selected target + options need. The common base is just `deploy/bin`; each target adds its own folder (e.g. `deploy/local/docker`; minikube is self-contained), and each post-install load adds its folder. Re-syncs are **additive** — a single `--workdir` can accumulate multiple targets. Override with `--repo <url>`, `--ref <branch|tag>`, `--workdir <dir>`.
|
|
64
64
|
- **Run in Docker, zero host installs.** Don't want `git`/`yq`/AWS CLI on your machine? [`deploy/bin/provision-docker.sh`](../../deploy/bin/provision-docker.sh) runs `provision` inside a throwaway `node:26-slim` container, installing only the tools the chosen target needs: **ec2** → git + AWS CLI (mounts `~/.aws` read-only); **eks** → + openssl + envsubst + eksctl + kubectl (mounts `~/.aws` + `~/.kube`); **local** → git + yq + openssl, with **Docker + Docker Compose used *externally*** from the host via the mounted socket (Docker Desktop already provides them — they're never installed in the image). Host footprint = just Docker. Args pass straight through: `deploy/bin/provision-docker.sh --target eks --repo --domain … --yes`. (On macOS the container can't drive Docker Desktop's CLI, so run **local** on the host instead — the wrapper shines for the AWS targets.)
|
|
65
|
-
- **Post-install steps.** After deploy + health, `provision` registers the admin (non-interactive with `--admin-email`/`--admin-password`) and runs the opt-in loads — passed as flags, or **offered interactively after the clone** when none are given (each picked load is then fetched via an additive sparse re-sync): `--with-plugins` (adds `deploy/plugins`
|
|
65
|
+
- **Post-install steps.** After deploy + health, `provision` registers the admin (non-interactive with `--admin-email`/`--admin-password`) and runs the opt-in loads — passed as flags, or **offered interactively after the clone** when none are given (each picked load is then fetched via an additive sparse re-sync): `--with-plugins` (adds `deploy/plugins`), `--with-compliance` (`deploy/compliance`), `--with-samples` (`deploy/samples`), or `--with-all`. Plus `--with-smoke-test` (read-only API check), **`--with-events`** (AWS event ingestion — a two-step bundle: **`store-token`** writes a platform JWT to Secrets Manager at pipeline-builder's own pattern `pipeline-builder/{orgId}/platform`, then **`setup-events`** deploys the EventBridge → SQS → Lambda that reads it), and repeatable `--post-step "<cmd>"`. Default is register-only; `--init skip` skips even that. All steps are idempotent, so re-running with more options just layers them on.
|
|
66
66
|
|
|
67
67
|
The underlying `bin/setup.sh` / `bin/shutdown.sh` scripts (and `aws cloudformation delete-stack` for ec2) remain the source of truth and can always be run directly. Full guide: [AWS deployment → AI-assisted install](https://mwashburn160.github.io/pipeline-builder/docs/aws-deployment#ai-assisted-install-provision).
|
|
68
68
|
|
|
@@ -80,7 +80,8 @@ The underlying `bin/setup.sh` / `bin/shutdown.sh` scripts (and `aws cloudformati
|
|
|
80
80
|
| --- | --- |
|
|
81
81
|
| `bootstrap` | Scaffold a new pipeline project with `cdk.json` and starter config |
|
|
82
82
|
| `synth` | Run CDK synth to emit the CloudFormation template for the pipeline |
|
|
83
|
-
| `deploy` | Deploy the synthesized pipeline stack to AWS (also registers the pipeline with the platform by its `pipelineId`) |
|
|
83
|
+
| `deploy` | Deploy the synthesized pipeline stack to AWS (also registers the pipeline with the platform by its `pipelineId`). `--local-spec <pipeline.json>` deploys without the platform and requires `--toolchain-file` (from `toolchain export`) |
|
|
84
|
+
| `toolchain export` | Write the pipeline toolchain release your org resolves to (or `--release <V>`) as JSON: both images' repositories and signed digests, the release and its tool versions. The input to `deploy --local-spec --toolchain-file` |
|
|
84
85
|
| `register` | Re-register a deployed pipeline with the platform and drain pending intents queued by prior failed deploys (recovery path; exits non-zero if any registration still fails) |
|
|
85
86
|
| `status` | Report the current deployment and execution status |
|
|
86
87
|
|
|
@@ -2,7 +2,8 @@
|
|
|
2
2
|
* Post-install steps.
|
|
3
3
|
*
|
|
4
4
|
* After the platform is deployed + health-checked, provision runs an ordered set
|
|
5
|
-
* of post-install steps: **
|
|
5
|
+
* of post-install steps: an optional **build-bootstrap** (`--build-bootstrap`:
|
|
6
|
+
* `build-plugin-images.sh --only pipeline-bootstrap`), **register** (the admin, via `init-platform.sh`, driven
|
|
6
7
|
* non-interactively by env — which also performs any opt-in plugin/compliance/
|
|
7
8
|
* sample loads), then an optional **smoke-test**, **events** (AWS), and any
|
|
8
9
|
* operator **--post-step** commands. Pure, deterministic assembly here — provision
|
|
@@ -36,7 +37,7 @@ export interface PostStepOptions {
|
|
|
36
37
|
readonly region?: string;
|
|
37
38
|
/** Load-step ids enabled via `--with-*` (drive init-platform's LOAD_* envs + sparse paths). */
|
|
38
39
|
readonly enabledLoadIds: readonly string[];
|
|
39
|
-
/** `--build-bootstrap`: build
|
|
40
|
+
/** `--build-bootstrap`: build + publish pipeline-bootstrap before register. */
|
|
40
41
|
readonly buildBootstrap: boolean;
|
|
41
42
|
/** False when `--no-init` — skips the register step entirely. */
|
|
42
43
|
readonly init: boolean;
|
|
@@ -52,8 +53,8 @@ export interface PostStepOptions {
|
|
|
52
53
|
readonly steps: readonly string[];
|
|
53
54
|
}
|
|
54
55
|
/**
|
|
55
|
-
* Resolve the ordered post-install step list:
|
|
56
|
-
* custom. `register` carries the
|
|
56
|
+
* Resolve the ordered post-install step list: build-bootstrap → register →
|
|
57
|
+
* smoke-test → events → custom. `register` carries the LOAD_* env so init-platform runs
|
|
57
58
|
* the enabled loads non-interactively. Requested-but-inapplicable steps land in
|
|
58
59
|
* `skipped` so the caller can warn rather than silently drop them.
|
|
59
60
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"post-steps.d.ts","sources":["../../src/agent/post-steps.ts"],"names":[],"mappings":"AAGA
|
|
1
|
+
{"version":3,"file":"post-steps.d.ts","sources":["../../src/agent/post-steps.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;GAUG;AAEH,OAAO,EAAc,KAAK,QAAQ,EAAE,MAAM,cAAc,CAAC;AAEzD,MAAM,WAAW,QAAQ;IACvB,sEAAsE;IACtE,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,qCAAqC;IACrC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,gCAAgC;IAChC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,oFAAoF;IACpF,QAAQ,CAAC,GAAG,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CACjD;AAED,gEAAgE;AAChE,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,KAAK,EAAE,QAAQ,EAAE,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,WAAW,EAAE,CAAC;CACjC;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC;IAC1B,yEAAyE;IACzE,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,yCAAyC;IACzC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,+FAA+F;IAC/F,QAAQ,CAAC,cAAc,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3C,+EAA+E;IAC/E,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC;IACjC,iEAAiE;IACjE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB;;;qDAGiD;IACjD,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,oFAAoF;IACpF,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,qDAAqD;IACrD,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;CACnC;AASD;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,eAAe,GAAG,iBAAiB,CA0IzE"}
|
package/dist/agent/post-steps.js
CHANGED
|
@@ -4,7 +4,8 @@
|
|
|
4
4
|
* Post-install steps.
|
|
5
5
|
*
|
|
6
6
|
* After the platform is deployed + health-checked, provision runs an ordered set
|
|
7
|
-
* of post-install steps: **
|
|
7
|
+
* of post-install steps: an optional **build-bootstrap** (`--build-bootstrap`:
|
|
8
|
+
* `build-plugin-images.sh --only pipeline-bootstrap`), **register** (the admin, via `init-platform.sh`, driven
|
|
8
9
|
* non-interactively by env — which also performs any opt-in plugin/compliance/
|
|
9
10
|
* sample loads), then an optional **smoke-test**, **events** (AWS), and any
|
|
10
11
|
* operator **--post-step** commands. Pure, deterministic assembly here — provision
|
|
@@ -12,21 +13,32 @@
|
|
|
12
13
|
*/
|
|
13
14
|
import { LOAD_STEPS } from './targets.js';
|
|
14
15
|
/** Compute the non-interactive env that drives init-platform's prompts. */
|
|
15
|
-
function registerEnv(enabledLoadIds
|
|
16
|
-
const env = {
|
|
16
|
+
function registerEnv(enabledLoadIds) {
|
|
17
|
+
const env = {};
|
|
17
18
|
for (const step of LOAD_STEPS)
|
|
18
19
|
env[step.env] = enabledLoadIds.includes(step.id) ? 'y' : 'n';
|
|
19
20
|
return env;
|
|
20
21
|
}
|
|
21
22
|
/**
|
|
22
|
-
* Resolve the ordered post-install step list:
|
|
23
|
-
* custom. `register` carries the
|
|
23
|
+
* Resolve the ordered post-install step list: build-bootstrap → register →
|
|
24
|
+
* smoke-test → events → custom. `register` carries the LOAD_* env so init-platform runs
|
|
24
25
|
* the enabled loads non-interactively. Requested-but-inapplicable steps land in
|
|
25
26
|
* `skipped` so the caller can warn rather than silently drop them.
|
|
26
27
|
*/
|
|
27
28
|
export function resolvePostSteps(opts) {
|
|
28
29
|
const steps = [];
|
|
29
30
|
const skipped = [];
|
|
31
|
+
// Runs from the clone (TOOLCHAIN_SPARSE_PATHS), with the target's push transport.
|
|
32
|
+
// init-platform.sh builds the whole release (both halves) itself; this is the
|
|
33
|
+
// explicit bootstrap-only build, e.g. with `--init skip`.
|
|
34
|
+
if (opts.buildBootstrap) {
|
|
35
|
+
steps.push({
|
|
36
|
+
id: 'build-bootstrap',
|
|
37
|
+
label: 'Build + publish the pipeline-bootstrap image',
|
|
38
|
+
command: './deploy/bin/build-plugin-images.sh --only pipeline-bootstrap',
|
|
39
|
+
env: { DEPLOY_TARGET: opts.target },
|
|
40
|
+
});
|
|
41
|
+
}
|
|
30
42
|
// `--init auto` (the default) on the AWS targets: the deploy runs init-platform itself —
|
|
31
43
|
// ec2 on the instance on first boot, eks in setup.sh's final phase — so DON'T add a register
|
|
32
44
|
// step here; it would duplicate the deploy-managed run. (minikube/local run init via provision.)
|
|
@@ -46,7 +58,7 @@ export function resolvePostSteps(opts) {
|
|
|
46
58
|
id: 'register',
|
|
47
59
|
label: `Register admin${loads}`,
|
|
48
60
|
command: registerCommand,
|
|
49
|
-
env: registerEnv(opts.enabledLoadIds
|
|
61
|
+
env: registerEnv(opts.enabledLoadIds),
|
|
50
62
|
});
|
|
51
63
|
}
|
|
52
64
|
if (opts.smokeTest) {
|
|
@@ -148,4 +160,4 @@ export function resolvePostSteps(opts) {
|
|
|
148
160
|
});
|
|
149
161
|
return { steps, skipped };
|
|
150
162
|
}
|
|
151
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9zdC1zdGVwcy5qcyIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2FnZW50L3Bvc3Qtc3RlcHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQUV0Qzs7Ozs7Ozs7O0dBU0c7QUFFSCxPQUFPLEVBQUUsVUFBVSxFQUFpQixNQUFNLGNBQWMsQ0FBQztBQWdEekQsMkVBQTJFO0FBQzNFLFNBQVMsV0FBVyxDQUFDLGNBQWlDLEVBQUUsY0FBdUI7SUFDN0UsTUFBTSxHQUFHLEdBQTJCLEVBQUUsZUFBZSxFQUFFLGNBQWMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUNwRixLQUFLLE1BQU0sSUFBSSxJQUFJLFVBQVU7UUFBRSxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLGNBQWMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQztJQUM1RixPQUFPLEdBQUcsQ0FBQztBQUNiLENBQUM7QUFFRDs7Ozs7R0FLRztBQUNILE1BQU0sVUFBVSxnQkFBZ0IsQ0FBQyxJQUFxQjtJQUNwRCxNQUFNLEtBQUssR0FBZSxFQUFFLENBQUM7SUFDN0IsTUFBTSxPQUFPLEdBQWtCLEVBQUUsQ0FBQztJQUVsQyx5RkFBeUY7SUFDekYsNkZBQTZGO0lBQzdGLGlHQUFpRztJQUNqRyxNQUFNLGVBQWUsR0FDbkIsSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsUUFBUSxLQUFLLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEtBQUssS0FBSyxJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssS0FBSyxDQUFDLENBQUM7SUFDMUYsSUFBSSxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDbEMsTUFBTSxPQUFPLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDOUYsTUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDckUsNkZBQTZGO1FBQzdGLHdHQUF3RztRQUN4RyxtR0FBbUc7UUFDbkcsOEZBQThGO1FBQzlGLDJEQUEyRDtRQUMzRCxNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsTUFBTSxLQUFLLEtBQUssSUFBSSxJQUFJLENBQUMsR0FBRztZQUN2RCxDQUFDLENBQUMscUJBQXFCLElBQUksQ0FBQyxHQUFHLG9DQUFvQztZQUNuRSxDQUFDLENBQUMsaUNBQWlDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNuRCxLQUFLLENBQUMsSUFBSSxDQUFDO1lBQ1QsRUFBRSxFQUFFLFVBQVU7WUFDZCxLQUFLLEVBQUUsaUJBQWlCLEtBQUssRUFBRTtZQUMvQixPQUFPLEVBQUUsZUFBZTtZQUN4QixHQUFHLEVBQUUsV0FBVyxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQztTQUMzRCxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDbkIsSUFBSSxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDYixvRkFBb0Y7WUFDcEYsOEVBQThFO1lBQzlFLDhFQUE4RTtZQUM5RSwwRUFBMEU7WUFDMUUsS0FBSyxDQUFDLElBQUksQ0FBQztnQkFDVCxFQUFFLEVBQUUsWUFBWTtnQkFDaEIsS0FBSyxFQUFFLHVDQUF1QztnQkFDOUMsT0FBTyxFQUFFLGNBQWMsSUFBSSxDQUFDLEdBQUcsNkNBQTZDO2FBQzdFLENBQUMsQ0FBQztRQUNMLENBQUM7YUFBTSxDQUFDO1lBQ04sT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLDBDQUEwQyxFQUFFLENBQUMsQ0FBQztRQUN6RixDQUFDO0lBQ0gsQ0FBQztJQUVELElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ2hCLElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxLQUFLLElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxLQUFLLEVBQUUsQ0FBQztZQUNuRCx5REFBeUQ7WUFDekQsMkVBQTJFO1lBQzNFLCtFQUErRTtZQUMvRSxnRkFBZ0Y7WUFDaEYsdURBQXVEO1lBQ3ZELDZFQUE2RTtZQUM3RSw4RUFBOEU7WUFDOUUsK0VBQStFO1lBQy9FLDBFQUEwRTtZQUMxRSw2RUFBNkU7WUFDN0UsMkVBQTJFO1lBQzNFLGtGQUFrRjtZQUNsRiwrRUFBK0U7WUFDL0UsOEVBQThFO1lBQzlFLCtFQUErRTtZQUMvRSx3RUFBd0U7WUFDeEUscURBQXFEO1lBQ3JELDRFQUE0RTtZQUM1RSx5REFBeUQ7WUFDekQsMkVBQTJFO1lBQzNFLDJFQUEyRTtZQUMzRSx1RUFBdUU7WUFDdkUsb0NBQW9DO1lBQ3BDLGdGQUFnRjtZQUNoRixpRkFBaUY7WUFDakYsMkVBQTJFO1lBQzNFLG9FQUFvRTtZQUNwRSxpRkFBaUY7WUFDakYseUVBQXlFO1lBQ3pFLHNFQUFzRTtZQUN0RSx3RUFBd0U7WUFDeEUsK0JBQStCO1lBQy9CLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLGFBQWEsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDN0QsMkVBQTJFO1lBQzNFLDRFQUE0RTtZQUM1RSxrRUFBa0U7WUFDbEUsMkVBQTJFO1lBQzNFLDBDQUEwQztZQUMxQyxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsTUFBTSxLQUFLLEtBQUssSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLGlCQUFpQixFQUFFLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO1lBQzVGLEtBQUssQ0FBQyxJQUFJLENBQUM7Z0JBQ1QsRUFBRSxFQUFFLGFBQWE7Z0JBQ2pCLEtBQUssRUFBRSx1RkFBdUY7Z0JBQzlGLG1FQUFtRTtnQkFDbkUsaUZBQWlGO2dCQUNqRixPQUFPLEVBQUUsZ0RBQWdELE1BQU0sRUFBRTtnQkFDakUsR0FBRzthQUNKLENBQUMsQ0FBQztZQUNILEtBQUssQ0FBQyxJQUFJLENBQUM7Z0JBQ1QsRUFBRSxFQUFFLHNCQUFzQjtnQkFDMUIsS0FBSyxFQUFFLCtGQUErRjtnQkFDdEcscUVBQXFFO2dCQUNyRSx1RUFBdUU7Z0JBQ3ZFLHlFQUF5RTtnQkFDekUsd0VBQXdFO2dCQUN4RSxvQ0FBb0M7Z0JBQ3BDLE9BQU8sRUFBRSxzRUFBc0UsTUFBTSxFQUFFO2dCQUN2RixHQUFHO2FBQ0osQ0FBQyxDQUFDO1lBQ0gsS0FBSyxDQUFDLElBQUksQ0FBQztnQkFDVCxFQUFFLEVBQUUsb0JBQW9CO2dCQUN4QixLQUFLLEVBQUUsa0dBQWtHO2dCQUN6RyxPQUFPLEVBQUUseUVBQXlFLE1BQU0sRUFBRTtnQkFDMUYsR0FBRzthQUNKLENBQUMsQ0FBQztZQUNILEtBQUssQ0FBQyxJQUFJLENBQUM7Z0JBQ1QsRUFBRSxFQUFFLFFBQVE7Z0JBQ1osS0FBSyxFQUFFLHFEQUFxRDtnQkFDNUQsT0FBTyxFQUFFLHNEQUFzRCxNQUFNLEVBQUU7Z0JBQ3ZFLEdBQUc7YUFDSixDQUFDLENBQUM7UUFDTCxDQUFDO2FBQU0sQ0FBQztZQUNOLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSw2QkFBNkIsSUFBSSxDQUFDLE1BQU0sa0JBQWtCLEVBQUUsQ0FBQyxDQUFDO1FBQ3JHLENBQUM7SUFDSCxDQUFDO0lBRUQsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxFQUFFLEVBQUU7UUFDaEMsSUFBSSxPQUFPLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRTtZQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLEVBQUUsVUFBVSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsS0FBSyxFQUFFLGVBQWUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUM7SUFDM0csQ0FBQyxDQUFDLENBQUM7SUFFSCxPQUFPLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxDQUFDO0FBQzVCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuLyoqXG4gKiBQb3N0LWluc3RhbGwgc3RlcHMuXG4gKlxuICogQWZ0ZXIgdGhlIHBsYXRmb3JtIGlzIGRlcGxveWVkICsgaGVhbHRoLWNoZWNrZWQsIHByb3Zpc2lvbiBydW5zIGFuIG9yZGVyZWQgc2V0XG4gKiBvZiBwb3N0LWluc3RhbGwgc3RlcHM6ICoqcmVnaXN0ZXIqKiAodGhlIGFkbWluLCB2aWEgYGluaXQtcGxhdGZvcm0uc2hgLCBkcml2ZW5cbiAqIG5vbi1pbnRlcmFjdGl2ZWx5IGJ5IGVudiDigJQgd2hpY2ggYWxzbyBwZXJmb3JtcyBhbnkgb3B0LWluIHBsdWdpbi9jb21wbGlhbmNlL1xuICogc2FtcGxlIGxvYWRzKSwgdGhlbiBhbiBvcHRpb25hbCAqKnNtb2tlLXRlc3QqKiwgKipldmVudHMqKiAoQVdTKSwgYW5kIGFueVxuICogb3BlcmF0b3IgKiotLXBvc3Qtc3RlcCoqIGNvbW1hbmRzLiBQdXJlLCBkZXRlcm1pbmlzdGljIGFzc2VtYmx5IGhlcmUg4oCUIHByb3Zpc2lvblxuICogcnVucyBlYWNoIHZpYSB0aGUgc2FtZSBnYXRlZCBgcnVuU2NyaXB0KClgIGFzIHRoZSBkZXBsb3kuXG4gKi9cblxuaW1wb3J0IHsgTE9BRF9TVEVQUywgdHlwZSBUYXJnZXRJZCB9IGZyb20gJy4vdGFyZ2V0cy5qcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUG9zdFN0ZXAge1xuICAvKiogU3RhYmxlIGlkIChgcmVnaXN0ZXJgIC8gYHNtb2tlLXRlc3RgIC8gYGV2ZW50c2ApIG9yIGBjdXN0b20tTmAuICovXG4gIHJlYWRvbmx5IGlkOiBzdHJpbmc7XG4gIC8qKiBIdW1hbiBsYWJlbCBzaG93biBpbiB0aGUgcGxhbi4gKi9cbiAgcmVhZG9ubHkgbGFiZWw6IHN0cmluZztcbiAgLyoqIFRoZSBleGFjdCBjb21tYW5kIHRvIHJ1bi4gKi9cbiAgcmVhZG9ubHkgY29tbWFuZDogc3RyaW5nO1xuICAvKiogTm9uLXNlY3JldCBlbnYgYXBwbGllZCB0byB0aGUgY2hpbGQgZm9yIHRoaXMgc3RlcCAoZS5nLiBMT0FEXyogZm9yIHJlZ2lzdGVyKS4gKi9cbiAgcmVhZG9ubHkgZW52PzogUmVhZG9ubHk8UmVjb3JkPHN0cmluZywgc3RyaW5nPj47XG59XG5cbi8qKiBBIHJlcXVlc3RlZCBzdGVwIHRoYXQgZG9lc24ndCBhcHBseSB0byB0aGUgY2hvc2VuIHRhcmdldC4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2tpcHBlZFN0ZXAge1xuICByZWFkb25seSBpZDogc3RyaW5nO1xuICByZWFkb25seSByZWFzb246IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZXNvbHZlZFBvc3RTdGVwcyB7XG4gIHJlYWRvbmx5IHN0ZXBzOiBQb3N0U3RlcFtdO1xuICByZWFkb25seSBza2lwcGVkOiBTa2lwcGVkU3RlcFtdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFBvc3RTdGVwT3B0aW9ucyB7XG4gIHJlYWRvbmx5IHRhcmdldDogVGFyZ2V0SWQ7XG4gIC8qKiBCYXNlIFVSTCBvZiB0aGUgZGVwbG95ZWQgcGxhdGZvcm0gKGZyb20gZGVyaXZlSGVhbHRoVXJsKSwgb3IgbnVsbC4gKi9cbiAgcmVhZG9ubHkgdXJsOiBzdHJpbmcgfCBudWxsO1xuICAvKiogQVdTIHJlZ2lvbiAoZWMyL2VrcyksIGlmIHByb3ZpZGVkLiAqL1xuICByZWFkb25seSByZWdpb24/OiBzdHJpbmc7XG4gIC8qKiBMb2FkLXN0ZXAgaWRzIGVuYWJsZWQgdmlhIGAtLXdpdGgtKmAgKGRyaXZlIGluaXQtcGxhdGZvcm0ncyBMT0FEXyogZW52cyArIHNwYXJzZSBwYXRocykuICovXG4gIHJlYWRvbmx5IGVuYWJsZWRMb2FkSWRzOiByZWFkb25seSBzdHJpbmdbXTtcbiAgLyoqIGAtLWJ1aWxkLWJvb3RzdHJhcGA6IGJ1aWxkIHRoZSBDb2RlQnVpbGQgYm9vdHN0cmFwIGltYWdlIGR1cmluZyByZWdpc3Rlci4gKi9cbiAgcmVhZG9ubHkgYnVpbGRCb290c3RyYXA6IGJvb2xlYW47XG4gIC8qKiBGYWxzZSB3aGVuIGAtLW5vLWluaXRgIOKAlCBza2lwcyB0aGUgcmVnaXN0ZXIgc3RlcCBlbnRpcmVseS4gKi9cbiAgcmVhZG9ubHkgaW5pdDogYm9vbGVhbjtcbiAgLyoqIFRydWUgZm9yIGAtLWluaXQgYXV0b2AgKHRoZSBkZWZhdWx0IG1vZGUpLiBPbiB0aGUgQVdTIHRhcmdldHMgdGhlIGRlcGxveSBzZWxmLXJ1bnNcbiAgICogIGluaXQtcGxhdGZvcm0gKGVjMiBvbiBmaXJzdCBib290LCBla3MgaW4gc2V0dXAuc2gncyBmaW5hbCBwaGFzZSksIHNvIHRoZSByZWdpc3RlciBzdGVwIGlzXG4gICAqICBOT1Qgc3VyZmFjZWQgaGVyZSDigJQgaXQgd291bGQgZHVwbGljYXRlIHRoYXQgZGVwbG95LW1hbmFnZWQgcnVuLiAobWluaWt1YmUvbG9jYWwgcnVuIGluaXRcbiAgICogIHZpYSBwcm92aXNpb24sIG5vdCBhIGRlcGxveS1tYW5hZ2VkIGluaXQuKSAqL1xuICByZWFkb25seSBhdXRvSW5pdD86IGJvb2xlYW47XG4gIHJlYWRvbmx5IHNtb2tlVGVzdDogYm9vbGVhbjtcbiAgLyoqIGAtLXdpdGgtZXZlbnRzYDogdGhlIEFXUyBldmVudC1pbmdlc3Rpb24gYnVuZGxlIChzdG9yZS10b2tlbiDihpIgc2V0dXAtZXZlbnRzKS4gKi9cbiAgcmVhZG9ubHkgZXZlbnRzOiBib29sZWFuO1xuICAvKiogUmF3IG9wZXJhdG9yIGAtLXBvc3Qtc3RlcGAgY29tbWFuZHMsIGluIG9yZGVyLiAqL1xuICByZWFkb25seSBzdGVwczogcmVhZG9ubHkgc3RyaW5nW107XG59XG5cbi8qKiBDb21wdXRlIHRoZSBub24taW50ZXJhY3RpdmUgZW52IHRoYXQgZHJpdmVzIGluaXQtcGxhdGZvcm0ncyBwcm9tcHRzLiAqL1xuZnVuY3Rpb24gcmVnaXN0ZXJFbnYoZW5hYmxlZExvYWRJZHM6IHJlYWRvbmx5IHN0cmluZ1tdLCBidWlsZEJvb3RzdHJhcDogYm9vbGVhbik6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4ge1xuICBjb25zdCBlbnY6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7IEJVSUxEX0JPT1RTVFJBUDogYnVpbGRCb290c3RyYXAgPyAneScgOiAnbicgfTtcbiAgZm9yIChjb25zdCBzdGVwIG9mIExPQURfU1RFUFMpIGVudltzdGVwLmVudl0gPSBlbmFibGVkTG9hZElkcy5pbmNsdWRlcyhzdGVwLmlkKSA/ICd5JyA6ICduJztcbiAgcmV0dXJuIGVudjtcbn1cblxuLyoqXG4gKiBSZXNvbHZlIHRoZSBvcmRlcmVkIHBvc3QtaW5zdGFsbCBzdGVwIGxpc3Q6IHJlZ2lzdGVyIOKGkiBzbW9rZS10ZXN0IOKGkiBldmVudHMg4oaSXG4gKiBjdXN0b20uIGByZWdpc3RlcmAgY2FycmllcyB0aGUgbG9hZCArIEJVSUxEX0JPT1RTVFJBUCBlbnYgc28gaW5pdC1wbGF0Zm9ybSBydW5zXG4gKiB0aGUgZW5hYmxlZCBsb2FkcyBub24taW50ZXJhY3RpdmVseS4gUmVxdWVzdGVkLWJ1dC1pbmFwcGxpY2FibGUgc3RlcHMgbGFuZCBpblxuICogYHNraXBwZWRgIHNvIHRoZSBjYWxsZXIgY2FuIHdhcm4gcmF0aGVyIHRoYW4gc2lsZW50bHkgZHJvcCB0aGVtLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZVBvc3RTdGVwcyhvcHRzOiBQb3N0U3RlcE9wdGlvbnMpOiBSZXNvbHZlZFBvc3RTdGVwcyB7XG4gIGNvbnN0IHN0ZXBzOiBQb3N0U3RlcFtdID0gW107XG4gIGNvbnN0IHNraXBwZWQ6IFNraXBwZWRTdGVwW10gPSBbXTtcblxuICAvLyBgLS1pbml0IGF1dG9gICh0aGUgZGVmYXVsdCkgb24gdGhlIEFXUyB0YXJnZXRzOiB0aGUgZGVwbG95IHJ1bnMgaW5pdC1wbGF0Zm9ybSBpdHNlbGYg4oCUXG4gIC8vIGVjMiBvbiB0aGUgaW5zdGFuY2Ugb24gZmlyc3QgYm9vdCwgZWtzIGluIHNldHVwLnNoJ3MgZmluYWwgcGhhc2Ug4oCUIHNvIERPTidUIGFkZCBhIHJlZ2lzdGVyXG4gIC8vIHN0ZXAgaGVyZTsgaXQgd291bGQgZHVwbGljYXRlIHRoZSBkZXBsb3ktbWFuYWdlZCBydW4uIChtaW5pa3ViZS9sb2NhbCBydW4gaW5pdCB2aWEgcHJvdmlzaW9uLilcbiAgY29uc3QgYXV0b0luaXRNYW5hZ2VkID1cbiAgICBvcHRzLmluaXQgJiYgb3B0cy5hdXRvSW5pdCA9PT0gdHJ1ZSAmJiAob3B0cy50YXJnZXQgPT09ICdlYzInIHx8IG9wdHMudGFyZ2V0ID09PSAnZWtzJyk7XG4gIGlmIChvcHRzLmluaXQgJiYgIWF1dG9Jbml0TWFuYWdlZCkge1xuICAgIGNvbnN0IGVuYWJsZWQgPSBMT0FEX1NURVBTLmZpbHRlcigocykgPT4gb3B0cy5lbmFibGVkTG9hZElkcy5pbmNsdWRlcyhzLmlkKSkubWFwKChzKSA9PiBzLmlkKTtcbiAgICBjb25zdCBsb2FkcyA9IGVuYWJsZWQubGVuZ3RoID4gMCA/IGAgKCsgJHtlbmFibGVkLmpvaW4oJywgJyl9KWAgOiAnJztcbiAgICAvLyBSZWdpc3RlciBpcyBzdXJmYWNlZCBhcyBhIG1hbnVhbCBuZXh0LXN0ZXAgb24gQVdTIChzZWUgcnVuUG9zdFN0ZXBzKS4gVGhlIGNvbW1hbmQgZGlmZmVyczpcbiAgICAvLyAgLSBlYzI6IHJ1bnMgT04gdGhlIGJveCBhcyB0aGUgbWluaWt1YmUgdXNlciwgd2hlcmUgdGhlIGluLVZQQyBVUkwgcmVzb2x2ZXMg4oaSIGJha2UgUExBVEZPUk1fQkFTRV9VUkwuXG4gICAgLy8gIC0gZWtzOiBpbml0LXBsYXRmb3JtIHBvcnQtZm9yd2FyZHMgdG8gc3ZjL25naW54LCBzbyBpdCBydW5zIGZyb20gYW55d2hlcmUgd2l0aCBrdWJlY3RsIGFjY2VzcyDigJRcbiAgICAvLyAgICBkbyBOT1QgYmFrZSBQTEFURk9STV9CQVNFX1VSTCAodGhhdCB3b3VsZCBmb3JjZSB0aGUgcHVibGljIFVSTCBhbmQgd2FpdCBvbiB0aGUgQUxCL0ROUykuXG4gICAgLy8gIC0gbG9jYWwvbWluaWt1YmU6IHBsYWluIGNvbW1hbmQgKHRoZSBVUkwgaXMgbG9jYWxob3N0KS5cbiAgICBjb25zdCByZWdpc3RlckNvbW1hbmQgPSBvcHRzLnRhcmdldCA9PT0gJ2VjMicgJiYgb3B0cy51cmxcbiAgICAgID8gYFBMQVRGT1JNX0JBU0VfVVJMPSR7b3B0cy51cmx9IC4vZGVwbG95L2Jpbi9pbml0LXBsYXRmb3JtLnNoIGVjMmBcbiAgICAgIDogYC4vZGVwbG95L2Jpbi9pbml0LXBsYXRmb3JtLnNoICR7b3B0cy50YXJnZXR9YDtcbiAgICBzdGVwcy5wdXNoKHtcbiAgICAgIGlkOiAncmVnaXN0ZXInLFxuICAgICAgbGFiZWw6IGBSZWdpc3RlciBhZG1pbiR7bG9hZHN9YCxcbiAgICAgIGNvbW1hbmQ6IHJlZ2lzdGVyQ29tbWFuZCxcbiAgICAgIGVudjogcmVnaXN0ZXJFbnYob3B0cy5lbmFibGVkTG9hZElkcywgb3B0cy5idWlsZEJvb3RzdHJhcCksXG4gICAgfSk7XG4gIH1cblxuICBpZiAob3B0cy5zbW9rZVRlc3QpIHtcbiAgICBpZiAob3B0cy51cmwpIHtcbiAgICAgIC8vIC1rOiBsb2NhbC9taW5pa3ViZSBmcm9udCBhIHNlbGYtc2lnbmVkIGNlcnQ7IGhhcm1sZXNzIGFnYWluc3QgcmVhbC1jZXJ0IEFXUyBVUkxzLlxuICAgICAgLy8gUHJvYmUgL2hlYWx0aCDigJQgdGhlIG9uZSByb3V0ZSBndWFyYW50ZWVkIHRvIGV4aXN0IGFuZCBzZXJ2ZSB1bmF1dGhlbnRpY2F0ZWRcbiAgICAgIC8vIHRocm91Z2ggbmdpbnggKGV2ZXJ5IC9hcGkvKiByb3V0ZSByZXF1aXJlcyBhdXRoIOKGkiA0MDE7IC9hcGkvdmVyc2lvbiBkb2Vzbid0XG4gICAgICAvLyBleGlzdCBhbmQgd291bGQgZmFsbCB0aHJvdWdoIHRvIHRoZSBTUEEsIG1ha2luZyBgY3VybCAtZmAgbWVhbmluZ2xlc3MpLlxuICAgICAgc3RlcHMucHVzaCh7XG4gICAgICAgIGlkOiAnc21va2UtdGVzdCcsXG4gICAgICAgIGxhYmVsOiAnU21va2UgdGVzdCDigJQgZ2F0ZXdheS9BUEkgcmVhY2hhYmlsaXR5JyxcbiAgICAgICAgY29tbWFuZDogYGN1cmwgLWZzU2sgJHtvcHRzLnVybH0vaGVhbHRoICYmIGVjaG8gJ3Ntb2tlLXRlc3Q6IEFQSSByZWFjaGFibGUnYCxcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBza2lwcGVkLnB1c2goeyBpZDogJ3Ntb2tlLXRlc3QnLCByZWFzb246ICdubyBwbGF0Zm9ybSBVUkwgdG8gcHJvYmUgZm9yIHRoaXMgdGFyZ2V0JyB9KTtcbiAgICB9XG4gIH1cblxuICBpZiAob3B0cy5ldmVudHMpIHtcbiAgICBpZiAob3B0cy50YXJnZXQgPT09ICdlYzInIHx8IG9wdHMudGFyZ2V0ID09PSAnZWtzJykge1xuICAgICAgLy8gRXZlbnQgaW5nZXN0aW9uIGlzIGEgVEhSRUUtc3RlcCBidW5kbGUsIGluIHRoaXMgb3JkZXI6XG4gICAgICAvLyAgIDEuIHN0b3JlLXRva2VuICAgICAgICAgIOKAlCB0aGUgb3JnJ3MgZnVsbC1wcml2aWxlZ2UgU0VSVklDRS1BQ0NPVU5UIGtleVxuICAgICAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzeW50aC9kZXBsb3kgY2FsbGJhY2tzIGFuZCBDb2RlQnVpbGQncyByZWdpc3RyeVxuICAgICAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWRlbnRpYWxzIHJlYWQgaXQ7IC0tc2NoZWR1bGUgYXV0by1yb3RhdGVzIGl0KS5cbiAgICAgIC8vICAgMi4gc3RvcmUtdG9rZW4gLS1zY29wZSByZXBvcnRpbmc6aW5nZXN0IC0tc2NoZWR1bGVcbiAgICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAg4oCUIGEgRElTVElOQ1QgbGVhc3QtcHJpdmlsZWdlIEtFWSB3aG9zZSBleGNoYW5nZWRcbiAgICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2tlbiBjYXJyaWVzIGV4YWN0bHkgYHJlcG9ydGluZzppbmdlc3RgIGFuZCBub1xuICAgICAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlcm1pc3Npb25zIGF0IGFsbC4gVGhlIGluZ2VzdCBlbmRwb2ludCByZXF1aXJlc1xuICAgICAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQgc2NvcGUgYW5kIGBoYXNTY29wZWAgaXMgYSBzaW5nbGUtdmFsdWVcbiAgICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcXVhbGl0eSBjaGVjaywgc28gdGhlIHBsYXRmb3JtIGtleSAobm8gc2NvcGUpXG4gICAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FuIE5FVkVSIGluZ2VzdCDigJQgdGhlIExhbWJkYSBtdXN0IHJlYWQgdGhpc1xuICAgICAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZGljYXRlZCBzZWNyZXQuIFN0b3JlZCBhdCBgLi4uL3JlcG9ydGluZy1pbmdlc3RgLlxuICAgICAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tc2NoZWR1bGUgZGVwbG95cyBpdHMgT1dOIHJvdGF0aW9uIHN0YWNrIChuYW1lZFxuICAgICAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGAtcmVwb3J0aW5nLWluZ2VzdGAsIGRpc3RpbmN0IGZyb20gdGhlIHBsYXRmb3JtXG4gICAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25lKSwgd2hpY2ggcm90YXRlcyB0aGUga2V5IGluIHBsYWNlIHNvIGl0IG5ldmVyXG4gICAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFwc2VzLiBTZWUgc2V0dXAtZXZlbnRzIC0tc2NvcGVkLWluZ2VzdC5cbiAgICAgIC8vICAgMmIuIHN0b3JlLXRva2VuIC0tc2NvcGUgcmVnaXN0cnk6cHVzaCAtLXNjaGVkdWxlXG4gICAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgIOKAlCB0aGUgQ0kgcmVnaXN0cnkgY3JlZGVudGlhbCBDb2RlQnVpbGQgcHJlc2VudHNcbiAgICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcyBCYXNpYyBhdXRoLiBTeW50aCB3aXJlc1xuICAgICAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGAuLi4vcmVnaXN0cnktcHVzaGAgaW50byBldmVyeSBidWlsZCBpbWFnZSdzXG4gICAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYHNlY3JldHNNYW5hZ2VyQ3JlZGVudGlhbHNgLCBzbyBhIGRlcGxveW1lbnRcbiAgICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRob3V0IGl0IGNhbm5vdCBwdWxsIGl0cyBidWlsZCBpbWFnZXMuXG4gICAgICAvLyAgIDMuIHNldHVwLWV2ZW50cyAtLXNjb3BlZC1pbmdlc3RcbiAgICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAg4oCUIGRlcGxveXMgdGhlIEV2ZW50QnJpZGdlIOKGkiBTUVMg4oaSIExhbWJkYSBhbmQgcG9pbnRzXG4gICAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIExhbWJkYSBhdCB0aGUgcmVwb3J0aW5nLWluZ2VzdCBzZWNyZXQgZnJvbSAjMi5cbiAgICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXSVRIT1VUIC0tc2NvcGVkLWluZ2VzdCB0aGUgTGFtYmRhIHJlYWRzIHRoZVxuICAgICAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYXRmb3JtIHNlY3JldCBhbmQgZXZlcnkgaW5nZXN0IDQwM3NcbiAgICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXCJUb2tlbiBtdXN0IGNhcnJ5IHRoZSAncmVwb3J0aW5nOmluZ2VzdCcgc2NvcGVcIikuXG4gICAgICAvLyBCb3RoIHN0b3JlLXRva2VuIHN0ZXBzIGFyZSBzdGVwLXVwIGdhdGVkIG9uIHRoZSBwbGF0Zm9ybSwgc28gdGhleSBuZWVkXG4gICAgICAvLyBQTEFURk9STV9QQVNTV09SRCBpbiB0aGUgZW52aXJvbm1lbnQgKHByb3Zpc2lvbiBhbHJlYWR5IHBhc3NlcyBpdCkuXG4gICAgICAvLyBwcm92aXNpb24gc3VyZmFjZXMgKGRvZXMgbm90IGF1dG8tcnVuKSB0aGUgYnVuZGxlIG9uIEFXUyDigJQgaXQgbmVlZHMgYVxuICAgICAgLy8gcmVnaXN0ZXJlZCwgaW4tVlBDIHBsYXRmb3JtLlxuICAgICAgY29uc3QgcmVnaW9uID0gb3B0cy5yZWdpb24gPyBgIC0tcmVnaW9uICR7b3B0cy5yZWdpb259YCA6ICcnO1xuICAgICAgLy8gTWlycm9yIHRoZSByZWdpc3RlciBicmFuY2gncyB0YXJnZXQgcnVsZTogYmFrZSBQTEFURk9STV9CQVNFX1VSTCBvbmx5IG9uXG4gICAgICAvLyBlYzIgKHRoZSBpbi1WUEMgVVJMIHJlc29sdmVzIG9uIHRoZSBib3gpLiBPbiBla3MgdGhlIHB1YmxpYyBBTEIvRE5TIGlzbid0XG4gICAgICAvLyB1cCB5ZXQsIHNvIGJha2luZyBpdCB3b3VsZCBwb2ludCBzdG9yZS10b2tlbi9zZXR1cC1ldmVudHMgYXQgYW5cbiAgICAgIC8vIHVucmVzb2x2YWJsZSBob3N0IOKAlCB0aGUgb3BlcmF0b3Igc2V0cyBQTEFURk9STV9CQVNFX1VSTCB3aGVuIHJ1bm5pbmcgdGhlXG4gICAgICAvLyBzdXJmYWNlZCBidW5kbGUsIG9uY2UgdGhlIEFMQiBpcyByZWFkeS5cbiAgICAgIGNvbnN0IGVudiA9IG9wdHMudGFyZ2V0ID09PSAnZWMyJyAmJiBvcHRzLnVybCA/IHsgUExBVEZPUk1fQkFTRV9VUkw6IG9wdHMudXJsIH0gOiB1bmRlZmluZWQ7XG4gICAgICBzdGVwcy5wdXNoKHtcbiAgICAgICAgaWQ6ICdzdG9yZS10b2tlbicsXG4gICAgICAgIGxhYmVsOiAnU3RvcmUgdGhlIHBsYXRmb3JtIHNlcnZpY2UtYWNjb3VudCBrZXkgaW4gQVdTIFNlY3JldHMgTWFuYWdlciAoKyBkYWlseSBhdXRvLXJvdGF0aW9uKScsXG4gICAgICAgIC8vIC0tc2NoZWR1bGU6IHN5bnRoL2RlcGxveSBjYWxsYmFja3MgcmVhZCB0aGlzIGtleSwgc28gaW5zdGFsbCB0aGVcbiAgICAgICAgLy8gcm90YXRpb24gc3RhY2sgc28gaXQgbmV2ZXIgbGFwc2VzIChzdG9yZS10b2tlbiBkb2VzIG5vdCBkZXBsb3kgaXQgYnkgZGVmYXVsdCkuXG4gICAgICAgIGNvbW1hbmQ6IGBwaXBlbGluZS1tYW5hZ2VyIGluZnJhIHN0b3JlLXRva2VuIC0tc2NoZWR1bGUke3JlZ2lvbn1gLFxuICAgICAgICBlbnYsXG4gICAgICB9KTtcbiAgICAgIHN0ZXBzLnB1c2goe1xuICAgICAgICBpZDogJ3N0b3JlLXRva2VuLXJlZ2lzdHJ5JyxcbiAgICAgICAgbGFiZWw6ICdTdG9yZSB0aGUgcmVnaXN0cnktcHVzaCAoc2NvcGVkKSBzZXJ2aWNlLWFjY291bnQga2V5IGluIEFXUyBTZWNyZXRzIE1hbmFnZXIgKCsgYXV0by1yb3RhdGlvbiknLFxuICAgICAgICAvLyBDb2RlQnVpbGQncyBgc2VjcmV0c01hbmFnZXJDcmVkZW50aWFsc2AgcmVhZHMgVEhJUyBzZWNyZXQsIG5vdCB0aGVcbiAgICAgICAgLy8gcGxhdGZvcm0gb25lOiBpdHMgZXhjaGFuZ2VkIHRva2VuIGNhcnJpZXMgb25seSBgcmVnaXN0cnk6cHVzaGAsIHNvIGFcbiAgICAgICAgLy8gbGVha2VkIGJ1aWxkIGNyZWRlbnRpYWwgY2FuIG1vdmUgaW1hZ2VzIGluc2lkZSB0aGUgb3JnJ3MgbmFtZXNwYWNlIGFuZFxuICAgICAgICAvLyBub3RoaW5nIGVsc2UuIFN5bnRoIHBvaW50cyBhdCBgLi4uL3JlZ2lzdHJ5LXB1c2hgIHVuY29uZGl0aW9uYWxseSwgc29cbiAgICAgICAgLy8gdGhpcyBzdGVwIGlzIG5vdCBvcHRpb25hbCBvbiBBV1MuXG4gICAgICAgIGNvbW1hbmQ6IGBwaXBlbGluZS1tYW5hZ2VyIGluZnJhIHN0b3JlLXRva2VuIC0tc2NvcGUgcmVnaXN0cnk6cHVzaCAtLXNjaGVkdWxlJHtyZWdpb259YCxcbiAgICAgICAgZW52LFxuICAgICAgfSk7XG4gICAgICBzdGVwcy5wdXNoKHtcbiAgICAgICAgaWQ6ICdzdG9yZS10b2tlbi1pbmdlc3QnLFxuICAgICAgICBsYWJlbDogJ1N0b3JlIHRoZSByZXBvcnRpbmctaW5nZXN0IChzY29wZWQpIHNlcnZpY2UtYWNjb3VudCBrZXkgaW4gQVdTIFNlY3JldHMgTWFuYWdlciAoKyBhdXRvLXJvdGF0aW9uKScsXG4gICAgICAgIGNvbW1hbmQ6IGBwaXBlbGluZS1tYW5hZ2VyIGluZnJhIHN0b3JlLXRva2VuIC0tc2NvcGUgcmVwb3J0aW5nOmluZ2VzdCAtLXNjaGVkdWxlJHtyZWdpb259YCxcbiAgICAgICAgZW52LFxuICAgICAgfSk7XG4gICAgICBzdGVwcy5wdXNoKHtcbiAgICAgICAgaWQ6ICdldmVudHMnLFxuICAgICAgICBsYWJlbDogJ0V2ZW50QnJpZGdlIGluZ2VzdGlvbiAoc2V0dXAtZXZlbnRzLCBzY29wZWQtaW5nZXN0KScsXG4gICAgICAgIGNvbW1hbmQ6IGBwaXBlbGluZS1tYW5hZ2VyIGluZnJhIHNldHVwLWV2ZW50cyAtLXNjb3BlZC1pbmdlc3Qke3JlZ2lvbn1gLFxuICAgICAgICBlbnYsXG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgc2tpcHBlZC5wdXNoKHsgaWQ6ICdldmVudHMnLCByZWFzb246IGBub3QgYXBwbGljYWJsZSB0byB0YXJnZXQgJyR7b3B0cy50YXJnZXR9JyAoZWMyL2VrcyBvbmx5KWAgfSk7XG4gICAgfVxuICB9XG5cbiAgb3B0cy5zdGVwcy5mb3JFYWNoKChjb21tYW5kLCBpKSA9PiB7XG4gICAgaWYgKGNvbW1hbmQudHJpbSgpICE9PSAnJykgc3RlcHMucHVzaCh7IGlkOiBgY3VzdG9tLSR7aSArIDF9YCwgbGFiZWw6IGBDdXN0b20gc3RlcCAke2kgKyAxfWAsIGNvbW1hbmQgfSk7XG4gIH0pO1xuXG4gIHJldHVybiB7IHN0ZXBzLCBza2lwcGVkIH07XG59XG4iXX0=
|
|
163
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9zdC1zdGVwcy5qcyIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2FnZW50L3Bvc3Qtc3RlcHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQUV0Qzs7Ozs7Ozs7OztHQVVHO0FBRUgsT0FBTyxFQUFFLFVBQVUsRUFBaUIsTUFBTSxjQUFjLENBQUM7QUFnRHpELDJFQUEyRTtBQUMzRSxTQUFTLFdBQVcsQ0FBQyxjQUFpQztJQUNwRCxNQUFNLEdBQUcsR0FBMkIsRUFBRSxDQUFDO0lBQ3ZDLEtBQUssTUFBTSxJQUFJLElBQUksVUFBVTtRQUFFLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsY0FBYyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO0lBQzVGLE9BQU8sR0FBRyxDQUFDO0FBQ2IsQ0FBQztBQUVEOzs7OztHQUtHO0FBQ0gsTUFBTSxVQUFVLGdCQUFnQixDQUFDLElBQXFCO0lBQ3BELE1BQU0sS0FBSyxHQUFlLEVBQUUsQ0FBQztJQUM3QixNQUFNLE9BQU8sR0FBa0IsRUFBRSxDQUFDO0lBRWxDLGtGQUFrRjtJQUNsRiw4RUFBOEU7SUFDOUUsMERBQTBEO0lBQzFELElBQUksSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3hCLEtBQUssQ0FBQyxJQUFJLENBQUM7WUFDVCxFQUFFLEVBQUUsaUJBQWlCO1lBQ3JCLEtBQUssRUFBRSw4Q0FBOEM7WUFDckQsT0FBTyxFQUFFLCtEQUErRDtZQUN4RSxHQUFHLEVBQUUsRUFBRSxhQUFhLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRTtTQUNwQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQseUZBQXlGO0lBQ3pGLDZGQUE2RjtJQUM3RixpR0FBaUc7SUFDakcsTUFBTSxlQUFlLEdBQ25CLElBQUksQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLFFBQVEs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O1lBQ04sT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLDZCQUE2QixJQUFJLENBQUMsTUFBTSxrQkFBa0IsRUFBRSxDQUFDLENBQUM7UUFDckcsQ0FBQztJQUNILENBQUM7SUFFRCxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLEVBQUUsRUFBRTtRQUNoQyxJQUFJLE9BQU8sQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFO1lBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsRUFBRSxVQUFVLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxLQUFLLEVBQUUsZUFBZSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQztJQUMzRyxDQUFDLENBQUMsQ0FBQztJQUVILE9BQU8sRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLENBQUM7QUFDNUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG4vKipcbiAqIFBvc3QtaW5zdGFsbCBzdGVwcy5cbiAqXG4gKiBBZnRlciB0aGUgcGxhdGZvcm0gaXMgZGVwbG95ZWQgKyBoZWFsdGgtY2hlY2tlZCwgcHJvdmlzaW9uIHJ1bnMgYW4gb3JkZXJlZCBzZXRcbiAqIG9mIHBvc3QtaW5zdGFsbCBzdGVwczogYW4gb3B0aW9uYWwgKipidWlsZC1ib290c3RyYXAqKiAoYC0tYnVpbGQtYm9vdHN0cmFwYDpcbiAqIGBidWlsZC1wbHVnaW4taW1hZ2VzLnNoIC0tb25seSBwaXBlbGluZS1ib290c3RyYXBgKSwgKipyZWdpc3RlcioqICh0aGUgYWRtaW4sIHZpYSBgaW5pdC1wbGF0Zm9ybS5zaGAsIGRyaXZlblxuICogbm9uLWludGVyYWN0aXZlbHkgYnkgZW52IOKAlCB3aGljaCBhbHNvIHBlcmZvcm1zIGFueSBvcHQtaW4gcGx1Z2luL2NvbXBsaWFuY2UvXG4gKiBzYW1wbGUgbG9hZHMpLCB0aGVuIGFuIG9wdGlvbmFsICoqc21va2UtdGVzdCoqLCAqKmV2ZW50cyoqIChBV1MpLCBhbmQgYW55XG4gKiBvcGVyYXRvciAqKi0tcG9zdC1zdGVwKiogY29tbWFuZHMuIFB1cmUsIGRldGVybWluaXN0aWMgYXNzZW1ibHkgaGVyZSDigJQgcHJvdmlzaW9uXG4gKiBydW5zIGVhY2ggdmlhIHRoZSBzYW1lIGdhdGVkIGBydW5TY3JpcHQoKWAgYXMgdGhlIGRlcGxveS5cbiAqL1xuXG5pbXBvcnQgeyBMT0FEX1NURVBTLCB0eXBlIFRhcmdldElkIH0gZnJvbSAnLi90YXJnZXRzLmpzJztcblxuZXhwb3J0IGludGVyZmFjZSBQb3N0U3RlcCB7XG4gIC8qKiBTdGFibGUgaWQgKGByZWdpc3RlcmAgLyBgc21va2UtdGVzdGAgLyBgZXZlbnRzYCkgb3IgYGN1c3RvbS1OYC4gKi9cbiAgcmVhZG9ubHkgaWQ6IHN0cmluZztcbiAgLyoqIEh1bWFuIGxhYmVsIHNob3duIGluIHRoZSBwbGFuLiAqL1xuICByZWFkb25seSBsYWJlbDogc3RyaW5nO1xuICAvKiogVGhlIGV4YWN0IGNvbW1hbmQgdG8gcnVuLiAqL1xuICByZWFkb25seSBjb21tYW5kOiBzdHJpbmc7XG4gIC8qKiBOb24tc2VjcmV0IGVudiBhcHBsaWVkIHRvIHRoZSBjaGlsZCBmb3IgdGhpcyBzdGVwIChlLmcuIExPQURfKiBmb3IgcmVnaXN0ZXIpLiAqL1xuICByZWFkb25seSBlbnY/OiBSZWFkb25seTxSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+Pjtcbn1cblxuLyoqIEEgcmVxdWVzdGVkIHN0ZXAgdGhhdCBkb2Vzbid0IGFwcGx5IHRvIHRoZSBjaG9zZW4gdGFyZ2V0LiAqL1xuZXhwb3J0IGludGVyZmFjZSBTa2lwcGVkU3RlcCB7XG4gIHJlYWRvbmx5IGlkOiBzdHJpbmc7XG4gIHJlYWRvbmx5IHJlYXNvbjogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJlc29sdmVkUG9zdFN0ZXBzIHtcbiAgcmVhZG9ubHkgc3RlcHM6IFBvc3RTdGVwW107XG4gIHJlYWRvbmx5IHNraXBwZWQ6IFNraXBwZWRTdGVwW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUG9zdFN0ZXBPcHRpb25zIHtcbiAgcmVhZG9ubHkgdGFyZ2V0OiBUYXJnZXRJZDtcbiAgLyoqIEJhc2UgVVJMIG9mIHRoZSBkZXBsb3llZCBwbGF0Zm9ybSAoZnJvbSBkZXJpdmVIZWFsdGhVcmwpLCBvciBudWxsLiAqL1xuICByZWFkb25seSB1cmw6IHN0cmluZyB8IG51bGw7XG4gIC8qKiBBV1MgcmVnaW9uIChlYzIvZWtzKSwgaWYgcHJvdmlkZWQuICovXG4gIHJlYWRvbmx5IHJlZ2lvbj86IHN0cmluZztcbiAgLyoqIExvYWQtc3RlcCBpZHMgZW5hYmxlZCB2aWEgYC0td2l0aC0qYCAoZHJpdmUgaW5pdC1wbGF0Zm9ybSdzIExPQURfKiBlbnZzICsgc3BhcnNlIHBhdGhzKS4gKi9cbiAgcmVhZG9ubHkgZW5hYmxlZExvYWRJZHM6IHJlYWRvbmx5IHN0cmluZ1tdO1xuICAvKiogYC0tYnVpbGQtYm9vdHN0cmFwYDogYnVpbGQgKyBwdWJsaXNoIHBpcGVsaW5lLWJvb3RzdHJhcCBiZWZvcmUgcmVnaXN0ZXIuICovXG4gIHJlYWRvbmx5IGJ1aWxkQm9vdHN0cmFwOiBib29sZWFuO1xuICAvKiogRmFsc2Ugd2hlbiBgLS1uby1pbml0YCDigJQgc2tpcHMgdGhlIHJlZ2lzdGVyIHN0ZXAgZW50aXJlbHkuICovXG4gIHJlYWRvbmx5IGluaXQ6IGJvb2xlYW47XG4gIC8qKiBUcnVlIGZvciBgLS1pbml0IGF1dG9gICh0aGUgZGVmYXVsdCBtb2RlKS4gT24gdGhlIEFXUyB0YXJnZXRzIHRoZSBkZXBsb3kgc2VsZi1ydW5zXG4gICAqICBpbml0LXBsYXRmb3JtIChlYzIgb24gZmlyc3QgYm9vdCwgZWtzIGluIHNldHVwLnNoJ3MgZmluYWwgcGhhc2UpLCBzbyB0aGUgcmVnaXN0ZXIgc3RlcCBpc1xuICAgKiAgTk9UIHN1cmZhY2VkIGhlcmUg4oCUIGl0IHdvdWxkIGR1cGxpY2F0ZSB0aGF0IGRlcGxveS1tYW5hZ2VkIHJ1bi4gKG1pbmlrdWJlL2xvY2FsIHJ1biBpbml0XG4gICAqICB2aWEgcHJvdmlzaW9uLCBub3QgYSBkZXBsb3ktbWFuYWdlZCBpbml0LikgKi9cbiAgcmVhZG9ubHkgYXV0b0luaXQ/OiBib29sZWFuO1xuICByZWFkb25seSBzbW9rZVRlc3Q6IGJvb2xlYW47XG4gIC8qKiBgLS13aXRoLWV2ZW50c2A6IHRoZSBBV1MgZXZlbnQtaW5nZXN0aW9uIGJ1bmRsZSAoc3RvcmUtdG9rZW4g4oaSIHNldHVwLWV2ZW50cykuICovXG4gIHJlYWRvbmx5IGV2ZW50czogYm9vbGVhbjtcbiAgLyoqIFJhdyBvcGVyYXRvciBgLS1wb3N0LXN0ZXBgIGNvbW1hbmRzLCBpbiBvcmRlci4gKi9cbiAgcmVhZG9ubHkgc3RlcHM6IHJlYWRvbmx5IHN0cmluZ1tdO1xufVxuXG4vKiogQ29tcHV0ZSB0aGUgbm9uLWludGVyYWN0aXZlIGVudiB0aGF0IGRyaXZlcyBpbml0LXBsYXRmb3JtJ3MgcHJvbXB0cy4gKi9cbmZ1bmN0aW9uIHJlZ2lzdGVyRW52KGVuYWJsZWRMb2FkSWRzOiByZWFkb25seSBzdHJpbmdbXSk6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4ge1xuICBjb25zdCBlbnY6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7fTtcbiAgZm9yIChjb25zdCBzdGVwIG9mIExPQURfU1RFUFMpIGVudltzdGVwLmVudl0gPSBlbmFibGVkTG9hZElkcy5pbmNsdWRlcyhzdGVwLmlkKSA/ICd5JyA6ICduJztcbiAgcmV0dXJuIGVudjtcbn1cblxuLyoqXG4gKiBSZXNvbHZlIHRoZSBvcmRlcmVkIHBvc3QtaW5zdGFsbCBzdGVwIGxpc3Q6IGJ1aWxkLWJvb3RzdHJhcCDihpIgcmVnaXN0ZXIg4oaSXG4gKiBzbW9rZS10ZXN0IOKGkiBldmVudHMg4oaSIGN1c3RvbS4gYHJlZ2lzdGVyYCBjYXJyaWVzIHRoZSBMT0FEXyogZW52IHNvIGluaXQtcGxhdGZvcm0gcnVuc1xuICogdGhlIGVuYWJsZWQgbG9hZHMgbm9uLWludGVyYWN0aXZlbHkuIFJlcXVlc3RlZC1idXQtaW5hcHBsaWNhYmxlIHN0ZXBzIGxhbmQgaW5cbiAqIGBza2lwcGVkYCBzbyB0aGUgY2FsbGVyIGNhbiB3YXJuIHJhdGhlciB0aGFuIHNpbGVudGx5IGRyb3AgdGhlbS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmVQb3N0U3RlcHMob3B0czogUG9zdFN0ZXBPcHRpb25zKTogUmVzb2x2ZWRQb3N0U3RlcHMge1xuICBjb25zdCBzdGVwczogUG9zdFN0ZXBbXSA9IFtdO1xuICBjb25zdCBza2lwcGVkOiBTa2lwcGVkU3RlcFtdID0gW107XG5cbiAgLy8gUnVucyBmcm9tIHRoZSBjbG9uZSAoVE9PTENIQUlOX1NQQVJTRV9QQVRIUyksIHdpdGggdGhlIHRhcmdldCdzIHB1c2ggdHJhbnNwb3J0LlxuICAvLyBpbml0LXBsYXRmb3JtLnNoIGJ1aWxkcyB0aGUgd2hvbGUgcmVsZWFzZSAoYm90aCBoYWx2ZXMpIGl0c2VsZjsgdGhpcyBpcyB0aGVcbiAgLy8gZXhwbGljaXQgYm9vdHN0cmFwLW9ubHkgYnVpbGQsIGUuZy4gd2l0aCBgLS1pbml0IHNraXBgLlxuICBpZiAob3B0cy5idWlsZEJvb3RzdHJhcCkge1xuICAgIHN0ZXBzLnB1c2goe1xuICAgICAgaWQ6ICdidWlsZC1ib290c3RyYXAnLFxuICAgICAgbGFiZWw6ICdCdWlsZCArIHB1Ymxpc2ggdGhlIHBpcGVsaW5lLWJvb3RzdHJhcCBpbWFnZScsXG4gICAgICBjb21tYW5kOiAnLi9kZXBsb3kvYmluL2J1aWxkLXBsdWdpbi1pbWFnZXMuc2ggLS1vbmx5IHBpcGVsaW5lLWJvb3RzdHJhcCcsXG4gICAgICBlbnY6IHsgREVQTE9ZX1RBUkdFVDogb3B0cy50YXJnZXQgfSxcbiAgICB9KTtcbiAgfVxuXG4gIC8vIGAtLWluaXQgYXV0b2AgKHRoZSBkZWZhdWx0KSBvbiB0aGUgQVdTIHRhcmdldHM6IHRoZSBkZXBsb3kgcnVucyBpbml0LXBsYXRmb3JtIGl0c2VsZiDigJRcbiAgLy8gZWMyIG9uIHRoZSBpbnN0YW5jZSBvbiBmaXJzdCBib290LCBla3MgaW4gc2V0dXAuc2gncyBmaW5hbCBwaGFzZSDigJQgc28gRE9OJ1QgYWRkIGEgcmVnaXN0ZXJcbiAgLy8gc3RlcCBoZXJlOyBpdCB3b3VsZCBkdXBsaWNhdGUgdGhlIGRlcGxveS1tYW5hZ2VkIHJ1bi4gKG1pbmlrdWJlL2xvY2FsIHJ1biBpbml0IHZpYSBwcm92aXNpb24uKVxuICBjb25zdCBhdXRvSW5pdE1hbmFnZWQgPVxuICAgIG9wdHMuaW5pdCAmJiBvcHRzLmF1dG9Jbml0ID09PSB0cnVlICYmIChvcHRzLnRhcmdldCA9PT0gJ2VjMicgfHwgb3B0cy50YXJnZXQgPT09ICdla3MnKTtcbiAgaWYgKG9wdHMuaW5pdCAmJiAhYXV0b0luaXRNYW5hZ2VkKSB7XG4gICAgY29uc3QgZW5hYmxlZCA9IExPQURfU1RFUFMuZmlsdGVyKChzKSA9PiBvcHRzLmVuYWJsZWRMb2FkSWRzLmluY2x1ZGVzKHMuaWQpKS5tYXAoKHMpID0+IHMuaWQpO1xuICAgIGNvbnN0IGxvYWRzID0gZW5hYmxlZC5sZW5ndGggPiAwID8gYCAoKyAke2VuYWJsZWQuam9pbignLCAnKX0pYCA6ICcnO1xuICAgIC8vIFJlZ2lzdGVyIGlzIHN1cmZhY2VkIGFzIGEgbWFudWFsIG5leHQtc3RlcCBvbiBBV1MgKHNlZSBydW5Qb3N0U3RlcHMpLiBUaGUgY29tbWFuZCBkaWZmZXJzOlxuICAgIC8vICAtIGVjMjogcnVucyBPTiB0aGUgYm94IGFzIHRoZSBtaW5pa3ViZSB1c2VyLCB3aGVyZSB0aGUgaW4tVlBDIFVSTCByZXNvbHZlcyDihpIgYmFrZSBQTEFURk9STV9CQVNFX1VSTC5cbiAgICAvLyAgLSBla3M6IGluaXQtcGxhdGZvcm0gcG9ydC1mb3J3YXJkcyB0byBzdmMvbmdpbngsIHNvIGl0IHJ1bnMgZnJvbSBhbnl3aGVyZSB3aXRoIGt1YmVjdGwgYWNjZXNzIOKAlFxuICAgIC8vICAgIGRvIE5PVCBiYWtlIFBMQVRGT1JNX0JBU0VfVVJMICh0aGF0IHdvdWxkIGZvcmNlIHRoZSBwdWJsaWMgVVJMIGFuZCB3YWl0IG9uIHRoZSBBTEIvRE5TKS5cbiAgICAvLyAgLSBsb2NhbC9taW5pa3ViZTogcGxhaW4gY29tbWFuZCAodGhlIFVSTCBpcyBsb2NhbGhvc3QpLlxuICAgIGNvbnN0IHJlZ2lzdGVyQ29tbWFuZCA9IG9wdHMudGFyZ2V0ID09PSAnZWMyJyAmJiBvcHRzLnVybFxuICAgICAgPyBgUExBVEZPUk1fQkFTRV9VUkw9JHtvcHRzLnVybH0gLi9kZXBsb3kvYmluL2luaXQtcGxhdGZvcm0uc2ggZWMyYFxuICAgICAgOiBgLi9kZXBsb3kvYmluL2luaXQtcGxhdGZvcm0uc2ggJHtvcHRzLnRhcmdldH1gO1xuICAgIHN0ZXBzLnB1c2goe1xuICAgICAgaWQ6ICdyZWdpc3RlcicsXG4gICAgICBsYWJlbDogYFJlZ2lzdGVyIGFkbWluJHtsb2Fkc31gLFxuICAgICAgY29tbWFuZDogcmVnaXN0ZXJDb21tYW5kLFxuICAgICAgZW52OiByZWdpc3RlckVudihvcHRzLmVuYWJsZWRMb2FkSWRzKSxcbiAgICB9KTtcbiAgfVxuXG4gIGlmIChvcHRzLnNtb2tlVGVzdCkge1xuICAgIGlmIChvcHRzLnVybCkge1xuICAgICAgLy8gLWs6IGxvY2FsL21pbmlrdWJlIGZyb250IGEgc2VsZi1zaWduZWQgY2VydDsgaGFybWxlc3MgYWdhaW5zdCByZWFsLWNlcnQgQVdTIFVSTHMuXG4gICAgICAvLyBQcm9iZSAvaGVhbHRoIOKAlCB0aGUgb25lIHJvdXRlIGd1YXJhbnRlZWQgdG8gZXhpc3QgYW5kIHNlcnZlIHVuYXV0aGVudGljYXRlZFxuICAgICAgLy8gdGhyb3VnaCBuZ2lueCAoZXZlcnkgL2FwaS8qIHJvdXRlIHJlcXVpcmVzIGF1dGgg4oaSIDQwMTsgL2FwaS92ZXJzaW9uIGRvZXNuJ3RcbiAgICAgIC8vIGV4aXN0IGFuZCB3b3VsZCBmYWxsIHRocm91Z2ggdG8gdGhlIFNQQSwgbWFraW5nIGBjdXJsIC1mYCBtZWFuaW5nbGVzcykuXG4gICAgICBzdGVwcy5wdXNoKHtcbiAgICAgICAgaWQ6ICdzbW9rZS10ZXN0JyxcbiAgICAgICAgbGFiZWw6ICdTbW9rZSB0ZXN0IOKAlCBnYXRld2F5L0FQSSByZWFjaGFiaWxpdHknLFxuICAgICAgICBjb21tYW5kOiBgY3VybCAtZnNTayAke29wdHMudXJsfS9oZWFsdGggJiYgZWNobyAnc21va2UtdGVzdDogQVBJIHJlYWNoYWJsZSdgLFxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHNraXBwZWQucHVzaCh7IGlkOiAnc21va2UtdGVzdCcsIHJlYXNvbjogJ25vIHBsYXRmb3JtIFVSTCB0byBwcm9iZSBmb3IgdGhpcyB0YXJnZXQnIH0pO1xuICAgIH1cbiAgfVxuXG4gIGlmIChvcHRzLmV2ZW50cykge1xuICAgIGlmIChvcHRzLnRhcmdldCA9PT0gJ2VjMicgfHwgb3B0cy50YXJnZXQgPT09ICdla3MnKSB7XG4gICAgICAvLyBFdmVudCBpbmdlc3Rpb24gaXMgYSBUSFJFRS1zdGVwIGJ1bmRsZSwgaW4gdGhpcyBvcmRlcjpcbiAgICAgIC8vICAgMS4gc3RvcmUtdG9rZW4gICAgICAgICAg4oCUIHRoZSBvcmcncyBmdWxsLXByaXZpbGVnZSBTRVJWSUNFLUFDQ09VTlQga2V5XG4gICAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN5bnRoL2RlcGxveSBjYWxsYmFja3MgYW5kIENvZGVCdWlsZCdzIHJlZ2lzdHJ5XG4gICAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlZGVudGlhbHMgcmVhZCBpdDsgLS1zY2hlZHVsZSBhdXRvLXJvdGF0ZXMgaXQpLlxuICAgICAgLy8gICAyLiBzdG9yZS10b2tlbiAtLXNjb3BlIHJlcG9ydGluZzppbmdlc3QgLS1zY2hlZHVsZVxuICAgICAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgICDigJQgYSBESVNUSU5DVCBsZWFzdC1wcml2aWxlZ2UgS0VZIHdob3NlIGV4Y2hhbmdlZFxuICAgICAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRva2VuIGNhcnJpZXMgZXhhY3RseSBgcmVwb3J0aW5nOmluZ2VzdGAgYW5kIG5vXG4gICAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVybWlzc2lvbnMgYXQgYWxsLiBUaGUgaW5nZXN0IGVuZHBvaW50IHJlcXVpcmVzXG4gICAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhhdCBzY29wZSBhbmQgYGhhc1Njb3BlYCBpcyBhIHNpbmdsZS12YWx1ZVxuICAgICAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVxdWFsaXR5IGNoZWNrLCBzbyB0aGUgcGxhdGZvcm0ga2V5IChubyBzY29wZSlcbiAgICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW4gTkVWRVIgaW5nZXN0IOKAlCB0aGUgTGFtYmRhIG11c3QgcmVhZCB0aGlzXG4gICAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVkaWNhdGVkIHNlY3JldC4gU3RvcmVkIGF0IGAuLi4vcmVwb3J0aW5nLWluZ2VzdGAuXG4gICAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS1zY2hlZHVsZSBkZXBsb3lzIGl0cyBPV04gcm90YXRpb24gc3RhY2sgKG5hbWVkXG4gICAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYC1yZXBvcnRpbmctaW5nZXN0YCwgZGlzdGluY3QgZnJvbSB0aGUgcGxhdGZvcm1cbiAgICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbmUpLCB3aGljaCByb3RhdGVzIHRoZSBrZXkgaW4gcGxhY2Ugc28gaXQgbmV2ZXJcbiAgICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXBzZXMuIFNlZSBzZXR1cC1ldmVudHMgLS1zY29wZWQtaW5nZXN0LlxuICAgICAgLy8gICAyYi4gc3RvcmUtdG9rZW4gLS1zY29wZSByZWdpc3RyeTpwdXNoIC0tc2NoZWR1bGVcbiAgICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAg4oCUIHRoZSBDSSByZWdpc3RyeSBjcmVkZW50aWFsIENvZGVCdWlsZCBwcmVzZW50c1xuICAgICAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzIEJhc2ljIGF1dGguIFN5bnRoIHdpcmVzXG4gICAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYC4uLi9yZWdpc3RyeS1wdXNoYCBpbnRvIGV2ZXJ5IGJ1aWxkIGltYWdlJ3NcbiAgICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgc2VjcmV0c01hbmFnZXJDcmVkZW50aWFsc2AsIHNvIGEgZGVwbG95bWVudFxuICAgICAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhvdXQgaXQgY2Fubm90IHB1bGwgaXRzIGJ1aWxkIGltYWdlcy5cbiAgICAgIC8vICAgMy4gc2V0dXAtZXZlbnRzIC0tc2NvcGVkLWluZ2VzdFxuICAgICAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgICDigJQgZGVwbG95cyB0aGUgRXZlbnRCcmlkZ2Ug4oaSIFNRUyDihpIgTGFtYmRhIGFuZCBwb2ludHNcbiAgICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgTGFtYmRhIGF0IHRoZSByZXBvcnRpbmctaW5nZXN0IHNlY3JldCBmcm9tICMyLlxuICAgICAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdJVEhPVVQgLS1zY29wZWQtaW5nZXN0IHRoZSBMYW1iZGEgcmVhZHMgdGhlXG4gICAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhdGZvcm0gc2VjcmV0IGFuZCBldmVyeSBpbmdlc3QgNDAzc1xuICAgICAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChcIlRva2VuIG11c3QgY2FycnkgdGhlICdyZXBvcnRpbmc6aW5nZXN0JyBzY29wZVwiKS5cbiAgICAgIC8vIEJvdGggc3RvcmUtdG9rZW4gc3RlcHMgYXJlIHN0ZXAtdXAgZ2F0ZWQgb24gdGhlIHBsYXRmb3JtLCBzbyB0aGV5IG5lZWRcbiAgICAgIC8vIFBMQVRGT1JNX1BBU1NXT1JEIGluIHRoZSBlbnZpcm9ubWVudCAocHJvdmlzaW9uIGFscmVhZHkgcGFzc2VzIGl0KS5cbiAgICAgIC8vIHByb3Zpc2lvbiBzdXJmYWNlcyAoZG9lcyBub3QgYXV0by1ydW4pIHRoZSBidW5kbGUgb24gQVdTIOKAlCBpdCBuZWVkcyBhXG4gICAgICAvLyByZWdpc3RlcmVkLCBpbi1WUEMgcGxhdGZvcm0uXG4gICAgICBjb25zdCByZWdpb24gPSBvcHRzLnJlZ2lvbiA/IGAgLS1yZWdpb24gJHtvcHRzLnJlZ2lvbn1gIDogJyc7XG4gICAgICAvLyBNaXJyb3IgdGhlIHJlZ2lzdGVyIGJyYW5jaCdzIHRhcmdldCBydWxlOiBiYWtlIFBMQVRGT1JNX0JBU0VfVVJMIG9ubHkgb25cbiAgICAgIC8vIGVjMiAodGhlIGluLVZQQyBVUkwgcmVzb2x2ZXMgb24gdGhlIGJveCkuIE9uIGVrcyB0aGUgcHVibGljIEFMQi9ETlMgaXNuJ3RcbiAgICAgIC8vIHVwIHlldCwgc28gYmFraW5nIGl0IHdvdWxkIHBvaW50IHN0b3JlLXRva2VuL3NldHVwLWV2ZW50cyBhdCBhblxuICAgICAgLy8gdW5yZXNvbHZhYmxlIGhvc3Qg4oCUIHRoZSBvcGVyYXRvciBzZXRzIFBMQVRGT1JNX0JBU0VfVVJMIHdoZW4gcnVubmluZyB0aGVcbiAgICAgIC8vIHN1cmZhY2VkIGJ1bmRsZSwgb25jZSB0aGUgQUxCIGlzIHJlYWR5LlxuICAgICAgY29uc3QgZW52ID0gb3B0cy50YXJnZXQgPT09ICdlYzInICYmIG9wdHMudXJsID8geyBQTEFURk9STV9CQVNFX1VSTDogb3B0cy51cmwgfSA6IHVuZGVmaW5lZDtcbiAgICAgIHN0ZXBzLnB1c2goe1xuICAgICAgICBpZDogJ3N0b3JlLXRva2VuJyxcbiAgICAgICAgbGFiZWw6ICdTdG9yZSB0aGUgcGxhdGZvcm0gc2VydmljZS1hY2NvdW50IGtleSBpbiBBV1MgU2VjcmV0cyBNYW5hZ2VyICgrIGRhaWx5IGF1dG8tcm90YXRpb24pJyxcbiAgICAgICAgLy8gLS1zY2hlZHVsZTogc3ludGgvZGVwbG95IGNhbGxiYWNrcyByZWFkIHRoaXMga2V5LCBzbyBpbnN0YWxsIHRoZVxuICAgICAgICAvLyByb3RhdGlvbiBzdGFjayBzbyBpdCBuZXZlciBsYXBzZXMgKHN0b3JlLXRva2VuIGRvZXMgbm90IGRlcGxveSBpdCBieSBkZWZhdWx0KS5cbiAgICAgICAgY29tbWFuZDogYHBpcGVsaW5lLW1hbmFnZXIgaW5mcmEgc3RvcmUtdG9rZW4gLS1zY2hlZHVsZSR7cmVnaW9ufWAsXG4gICAgICAgIGVudixcbiAgICAgIH0pO1xuICAgICAgc3RlcHMucHVzaCh7XG4gICAgICAgIGlkOiAnc3RvcmUtdG9rZW4tcmVnaXN0cnknLFxuICAgICAgICBsYWJlbDogJ1N0b3JlIHRoZSByZWdpc3RyeS1wdXNoIChzY29wZWQpIHNlcnZpY2UtYWNjb3VudCBrZXkgaW4gQVdTIFNlY3JldHMgTWFuYWdlciAoKyBhdXRvLXJvdGF0aW9uKScsXG4gICAgICAgIC8vIENvZGVCdWlsZCdzIGBzZWNyZXRzTWFuYWdlckNyZWRlbnRpYWxzYCByZWFkcyBUSElTIHNlY3JldCwgbm90IHRoZVxuICAgICAgICAvLyBwbGF0Zm9ybSBvbmU6IGl0cyBleGNoYW5nZWQgdG9rZW4gY2FycmllcyBvbmx5IGByZWdpc3RyeTpwdXNoYCwgc28gYVxuICAgICAgICAvLyBsZWFrZWQgYnVpbGQgY3JlZGVudGlhbCBjYW4gbW92ZSBpbWFnZXMgaW5zaWRlIHRoZSBvcmcncyBuYW1lc3BhY2UgYW5kXG4gICAgICAgIC8vIG5vdGhpbmcgZWxzZS4gU3ludGggcG9pbnRzIGF0IGAuLi4vcmVnaXN0cnktcHVzaGAgdW5jb25kaXRpb25hbGx5LCBzb1xuICAgICAgICAvLyB0aGlzIHN0ZXAgaXMgbm90IG9wdGlvbmFsIG9uIEFXUy5cbiAgICAgICAgY29tbWFuZDogYHBpcGVsaW5lLW1hbmFnZXIgaW5mcmEgc3RvcmUtdG9rZW4gLS1zY29wZSByZWdpc3RyeTpwdXNoIC0tc2NoZWR1bGUke3JlZ2lvbn1gLFxuICAgICAgICBlbnYsXG4gICAgICB9KTtcbiAgICAgIHN0ZXBzLnB1c2goe1xuICAgICAgICBpZDogJ3N0b3JlLXRva2VuLWluZ2VzdCcsXG4gICAgICAgIGxhYmVsOiAnU3RvcmUgdGhlIHJlcG9ydGluZy1pbmdlc3QgKHNjb3BlZCkgc2VydmljZS1hY2NvdW50IGtleSBpbiBBV1MgU2VjcmV0cyBNYW5hZ2VyICgrIGF1dG8tcm90YXRpb24pJyxcbiAgICAgICAgY29tbWFuZDogYHBpcGVsaW5lLW1hbmFnZXIgaW5mcmEgc3RvcmUtdG9rZW4gLS1zY29wZSByZXBvcnRpbmc6aW5nZXN0IC0tc2NoZWR1bGUke3JlZ2lvbn1gLFxuICAgICAgICBlbnYsXG4gICAgICB9KTtcbiAgICAgIHN0ZXBzLnB1c2goe1xuICAgICAgICBpZDogJ2V2ZW50cycsXG4gICAgICAgIGxhYmVsOiAnRXZlbnRCcmlkZ2UgaW5nZXN0aW9uIChzZXR1cC1ldmVudHMsIHNjb3BlZC1pbmdlc3QpJyxcbiAgICAgICAgY29tbWFuZDogYHBpcGVsaW5lLW1hbmFnZXIgaW5mcmEgc2V0dXAtZXZlbnRzIC0tc2NvcGVkLWluZ2VzdCR7cmVnaW9ufWAsXG4gICAgICAgIGVudixcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBza2lwcGVkLnB1c2goeyBpZDogJ2V2ZW50cycsIHJlYXNvbjogYG5vdCBhcHBsaWNhYmxlIHRvIHRhcmdldCAnJHtvcHRzLnRhcmdldH0nIChlYzIvZWtzIG9ubHkpYCB9KTtcbiAgICB9XG4gIH1cblxuICBvcHRzLnN0ZXBzLmZvckVhY2goKGNvbW1hbmQsIGkpID0+IHtcbiAgICBpZiAoY29tbWFuZC50cmltKCkgIT09ICcnKSBzdGVwcy5wdXNoKHsgaWQ6IGBjdXN0b20tJHtpICsgMX1gLCBsYWJlbDogYEN1c3RvbSBzdGVwICR7aSArIDF9YCwgY29tbWFuZCB9KTtcbiAgfSk7XG5cbiAgcmV0dXJuIHsgc3RlcHMsIHNraXBwZWQgfTtcbn1cbiJdfQ==
|
package/dist/agent/targets.d.ts
CHANGED
|
@@ -60,6 +60,15 @@ export declare function isTargetId(value: unknown): value is TargetId;
|
|
|
60
60
|
* in only when their post-install option is selected (see LOAD_STEPS).
|
|
61
61
|
*/
|
|
62
62
|
export declare const COMMON_SPARSE_PATHS: readonly string[];
|
|
63
|
+
/**
|
|
64
|
+
* The managed toolchain release's build inputs: init-platform.sh always builds
|
|
65
|
+
* `build-plugin-images.sh --only pipeline-bootstrap,cdk-synth` (after the `_base`
|
|
66
|
+
* images), and `--build-bootstrap` runs `--only pipeline-bootstrap`, so every
|
|
67
|
+
* clone that runs either needs these folders — with or without `--with-plugins`.
|
|
68
|
+
* The release has its own source root, `deploy/toolchain` (both halves), beside
|
|
69
|
+
* the plugin catalog; of the catalog it needs only the `_base` images.
|
|
70
|
+
*/
|
|
71
|
+
export declare const TOOLCHAIN_SPARSE_PATHS: readonly string[];
|
|
63
72
|
/**
|
|
64
73
|
* Opt-in post-install load steps. Each maps a provision `--with-*` flag to the
|
|
65
74
|
* init-platform env var that enables it AND the repo folder(s) it reads — so the
|
|
@@ -69,7 +78,7 @@ export declare const LOAD_STEPS: readonly [{
|
|
|
69
78
|
readonly id: 'plugins';
|
|
70
79
|
readonly flag: 'withPlugins';
|
|
71
80
|
readonly env: 'LOAD_PLUGINS';
|
|
72
|
-
readonly paths: readonly ['deploy/plugins'
|
|
81
|
+
readonly paths: readonly ['deploy/plugins'];
|
|
73
82
|
}, {
|
|
74
83
|
readonly id: 'compliance';
|
|
75
84
|
readonly flag: 'withCompliance';
|
|
@@ -84,7 +93,8 @@ export declare const LOAD_STEPS: readonly [{
|
|
|
84
93
|
export type LoadStepId = (typeof LOAD_STEPS)[number]['id'];
|
|
85
94
|
/**
|
|
86
95
|
* The de-duplicated set of sparse paths for a target plus the enabled load
|
|
87
|
-
* steps: common base ∪ target folder(s) ∪
|
|
96
|
+
* steps: common base ∪ target folder(s) ∪ the toolchain build inputs ∪ each
|
|
97
|
+
* enabled step's folder(s).
|
|
88
98
|
*/
|
|
89
99
|
export declare function sparsePathsFor(target: TargetId, enabledLoadIds: readonly string[]): string[];
|
|
90
100
|
export interface AssembleResult {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"targets.d.ts","sources":["../../src/agent/targets.ts"],"names":[],"mappings":"AAgBA,MAAM,MAAM,QAAQ,GAAG,QAAQ,GAAG,UAAU,GAAG,KAAK,GAAG,KAAK,CAAC;AAE7D,2DAA2D;AAC3D,MAAM,WAAW,SAAS;IACxB,iEAAiE;IACjE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,0CAA0C;IAC1C,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,kEAAkE;IAClE,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,yEAAyE;IACzE,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAC1B,mDAAmD;IACnD,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,EAAE,EAAE,QAAQ,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,kEAAkE;IAClE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,6CAA6C;IAC7C,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,6EAA6E;IAC7E,QAAQ,CAAC,QAAQ,EAAE,SAAS,SAAS,EAAE,CAAC;IACxC,0DAA0D;IAC1D,QAAQ,CAAC,QAAQ,EAAE,SAAS,SAAS,EAAE,CAAC;IACxC;;;OAGG;IACH,QAAQ,CAAC,WAAW,EAAE,SAAS,MAAM,EAAE,CAAC;IACxC,qEAAqE;IACrE,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,sCAAsC;IACtC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,2BAA2B;IAC3B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,kFAAkF;IAClF,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,iFAAiF;IACjF,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B;;;;;;OAMG;IACH,QAAQ,CAAC,SAAS,EAAE,SAAS;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CAClE;AA4CD,eAAO,MAAM,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,QAAQ,EAAE,UAAU,CAAC,CA0E1D,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,SAAS,QAAQ,EAAyC,CAAC;AAEpF,wBAAgB,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,QAAQ,CAE5D;AAID;;;;;GAKG;AACH,eAAO,MAAM,mBAAmB,EAAE,SAAS,MAAM,EAAmB,CAAC;AAErE;;;;GAIG;AACH,eAAO,MAAM,UAAU;
|
|
1
|
+
{"version":3,"file":"targets.d.ts","sources":["../../src/agent/targets.ts"],"names":[],"mappings":"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"}
|
package/dist/agent/targets.js
CHANGED
|
@@ -136,25 +136,41 @@ export function isTargetId(value) {
|
|
|
136
136
|
* in only when their post-install option is selected (see LOAD_STEPS).
|
|
137
137
|
*/
|
|
138
138
|
export const COMMON_SPARSE_PATHS = ['deploy/bin'];
|
|
139
|
+
/**
|
|
140
|
+
* The managed toolchain release's build inputs: init-platform.sh always builds
|
|
141
|
+
* `build-plugin-images.sh --only pipeline-bootstrap,cdk-synth` (after the `_base`
|
|
142
|
+
* images), and `--build-bootstrap` runs `--only pipeline-bootstrap`, so every
|
|
143
|
+
* clone that runs either needs these folders — with or without `--with-plugins`.
|
|
144
|
+
* The release has its own source root, `deploy/toolchain` (both halves), beside
|
|
145
|
+
* the plugin catalog; of the catalog it needs only the `_base` images.
|
|
146
|
+
*/
|
|
147
|
+
export const TOOLCHAIN_SPARSE_PATHS = [
|
|
148
|
+
'deploy/plugins/_base',
|
|
149
|
+
'deploy/toolchain',
|
|
150
|
+
];
|
|
139
151
|
/**
|
|
140
152
|
* Opt-in post-install load steps. Each maps a provision `--with-*` flag to the
|
|
141
153
|
* init-platform env var that enables it AND the repo folder(s) it reads — so the
|
|
142
154
|
* sparse checkout grows exactly with the selected options.
|
|
143
155
|
*/
|
|
144
156
|
export const LOAD_STEPS = [
|
|
145
|
-
// The
|
|
146
|
-
|
|
157
|
+
// The catalog. The toolchain release (deploy/toolchain) and the _base images it
|
|
158
|
+
// builds on are always in the clone (TOOLCHAIN_SPARSE_PATHS).
|
|
159
|
+
{ id: 'plugins', flag: 'withPlugins', env: 'LOAD_PLUGINS', paths: ['deploy/plugins'] },
|
|
147
160
|
{ id: 'compliance', flag: 'withCompliance', env: 'LOAD_COMPLIANCE', paths: ['deploy/compliance'] },
|
|
148
161
|
{ id: 'samples', flag: 'withSamples', env: 'LOAD_TEMPLATES', paths: ['deploy/samples'] },
|
|
149
162
|
];
|
|
150
163
|
/**
|
|
151
164
|
* The de-duplicated set of sparse paths for a target plus the enabled load
|
|
152
|
-
* steps: common base ∪ target folder(s) ∪
|
|
165
|
+
* steps: common base ∪ target folder(s) ∪ the toolchain build inputs ∪ each
|
|
166
|
+
* enabled step's folder(s).
|
|
153
167
|
*/
|
|
154
168
|
export function sparsePathsFor(target, enabledLoadIds) {
|
|
155
169
|
const paths = new Set(COMMON_SPARSE_PATHS);
|
|
156
170
|
for (const p of TARGETS[target].sparsePaths)
|
|
157
171
|
paths.add(p);
|
|
172
|
+
for (const p of TOOLCHAIN_SPARSE_PATHS)
|
|
173
|
+
paths.add(p);
|
|
158
174
|
for (const step of LOAD_STEPS) {
|
|
159
175
|
if (enabledLoadIds.includes(step.id))
|
|
160
176
|
for (const p of step.paths)
|
|
@@ -262,4 +278,4 @@ export function teardownCommand(target, opts = {}) {
|
|
|
262
278
|
}
|
|
263
279
|
}
|
|
264
280
|
}
|
|
265
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFyZ2V0cy5qcyIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2FnZW50L3RhcmdldHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQUV0Qzs7Ozs7Ozs7R0FRRztBQUVILE9BQU8sRUFBRSxlQUFlLEVBQUUsVUFBVSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDekUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFzRHZELCtFQUErRTtBQUUvRSxNQUFNLE1BQU0sR0FBYyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUUsdURBQXVELEVBQUUsQ0FBQztBQUNsSSxNQUFNLFdBQVcsR0FBYyxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRSxHQUFHLEVBQUUsY0FBYyxFQUFFLFdBQVcsRUFBRSw2REFBNkQsRUFBRSxDQUFDO0FBQzNKLE1BQU0sVUFBVSxHQUFjLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRSxHQUFHLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxzRUFBc0UsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLENBQUM7QUFDMUssTUFBTSxNQUFNLEdBQWMsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxDQUFDO0FBQ3ZGLE1BQU0sV0FBVyxHQUFjLEVBQUUsSUFBSSxFQUFFLGFBQWEsRUFBRSxHQUFHLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSw2REFBNkQsRUFBRSxDQUFDO0FBQ3RKLE1BQU0sUUFBUSxHQUFjLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxnRkFBZ0YsRUFBRSxDQUFDO0FBQ2hLLE1BQU0sYUFBYSxHQUFjLEVBQUUsSUFBSSxFQUFFLGVBQWUsRUFBRSxHQUFHLEVBQUUsY0FBYyxFQUFFLFdBQVcsRUFBRSx3Q0FBd0MsRUFBRSxDQUFDO0FBQ3ZJLDRGQUE0RjtBQUM1RixrRkFBa0Y7QUFDbEYsTUFBTSxVQUFVLEdBQWMsRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFLEdBQUcsRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLDRGQUE0RixFQUFFLENBQUM7QUFDbEwsaUZBQWlGO0FBQ2pGLE1BQU0sWUFBWSxHQUFjLEVBQUUsSUFBSSxFQUFFLGNBQWMsRUFBRSxHQUFHLEVBQUUsYUFBYSxFQUFFLFdBQVcsRUFBRSw2Q0FBNkMsRUFBRSxDQUFDO0FBQ3pJLDZGQUE2RjtBQUM3RiwwRkFBMEY7QUFDMUYsOEZBQThGO0FBQzlGLCtGQUErRjtBQUMvRiw2RkFBNkY7QUFDN0YsZ0dBQWdHO0FBQ2hHLHVEQUF1RDtBQUN2RCxNQUFNLFNBQVMsR0FBYyxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsR0FBRyxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUseUZBQXlGLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxDQUFDO0FBQzNMLE1BQU0sWUFBWSxHQUFjLEVBQUUsSUFBSSxFQUFFLGNBQWMsRUFBRSxHQUFHLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxtRkFBbUYsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUM7QUFDN0wscUZBQXFGO0FBQ3JGLHVGQUF1RjtBQUN2RiwwRkFBMEY7QUFDMUYsTUFBTSxJQUFJLEdBQWMsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLHFIQUFxSCxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsQ0FBQztBQUV6TSwwRUFBMEU7QUFDMUUsa0ZBQWtGO0FBQ2xGLG9CQUFvQjtBQUNwQixNQUFNLEtBQUssR0FBeUI7SUFDbEMsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLHdEQUF3RCxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUU7SUFDckgsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLDBEQUEwRCxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUU7SUFDNUgsRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFLEdBQUcsRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLHlDQUF5QyxFQUFFO0lBQ2hHLEVBQUUsSUFBSSxFQUFFLGlCQUFpQixFQUFFLEdBQUcsRUFBRSxlQUFlLEVBQUUsV0FBVyxFQUFFLGdDQUFnQyxFQUFFO0lBQ2hHLEVBQUUsSUFBSSxFQUFFLGFBQWEsRUFBRSxHQUFHLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSx3REFBd0QsRUFBRTtJQUNqSCxFQUFFLElBQUksRUFBRSx3QkFBd0IsRUFBRSxHQUFHLEVBQUUscUJBQXFCLEVBQUUsV0FBVyxFQUFFLHNEQUFzRCxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUU7Q0FDbkosQ0FBQztBQUVGLCtFQUErRTtBQUUvRSxNQUFNLENBQUMsTUFBTSxPQUFPLEdBQTJDO0lBQzdELE1BQU0sRUFBRTtRQUNOLEVBQUUsRUFBRSxRQUFRO1FBQ1osS0FBSyxFQUFFLHdCQUF3QjtRQUMvQixHQUFHLEVBQUUscUJBQXFCO1FBQzFCLFVBQVUsRUFBRSxjQUFjO1FBQzFCLFdBQVcsRUFBRSxDQUFDLHFCQUFxQixDQUFDO1FBQ3BDLFFBQVEsRUFBRSxFQUFFO1FBQ1osUUFBUSxFQUFFLEVBQUU7UUFDWixVQUFVLEVBQUUsc0NBQXNDO1FBQ2xELElBQUksRUFBRSxNQUFNO1FBQ1osT0FBTyxFQUFFLGFBQWE7UUFDdEIsT0FBTyxFQUFFLDRTQUE0UztRQUNyVCxRQUFRLEVBQUUsb0hBQW9IO1FBQzlILHlFQUF5RTtRQUN6RSxTQUFTLEVBQUU7WUFDVCxFQUFFLE9BQU8sRUFBRSxnQ0FBZ0MsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFO1lBQ3pELEVBQUUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLElBQUksRUFBRSxJQUFJLEVBQUU7WUFDaEQsRUFBRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRTtZQUNoRCxFQUFFLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFO1lBQ3BELEVBQUUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLElBQUksRUFBRSxJQUFJLEVBQUU7WUFDMUMsRUFBRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRTtTQUNoRDtLQUNGO0lBQ0QsUUFBUSxFQUFFO1FBQ1IsRUFBRSxFQUFFLFVBQVU7UUFDZCxLQUFLLEVBQUUsNkJBQTZCO1FBQ3BDLEdBQUcsRUFBRSx1QkFBdUI7UUFDNUIsVUFBVSxFQUFFLGNBQWM7UUFDMUIsV0FBVyxFQUFFLENBQUMsdUJBQXVCLENBQUM7UUFDdEMsUUFBUSxFQUFFLEVBQUU7UUFDWixRQUFRLEVBQUUsRUFBRTtRQUNaLFVBQVUsRUFBRSx3Q0FBd0M7UUFDcEQsSUFBSSxFQUFFLE1BQU07UUFDWixPQUFPLEVBQUUsa0JBQWtCO1FBQzNCLE9BQU8sRUFBRSx3UEFBd1A7UUFDalEsUUFBUSxFQUFFLDhGQUE4RjtRQUN4RyxtRkFBbUY7UUFDbkYsU0FBUyxFQUFFO1lBQ1QsRUFBRSxPQUFPLEVBQUUsZ0NBQWdDLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRTtZQUN6RCxFQUFFLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFO1lBQ25ELEVBQUUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLElBQUksRUFBRSxJQUFJLEVBQUU7U0FDakQ7S0FDRjtJQUNELEdBQUcsRUFBRTtRQUNILEVBQUUsRUFBRSxLQUFLO1FBQ1QsS0FBSyxFQUFFLGtEQUFrRDtRQUN6RCxHQUFHLEVBQUUsZ0JBQWdCO1FBQ3JCLFVBQVUsRUFBRSxjQUFjO1FBQzFCLFdBQVcsRUFBRSxDQUFDLGdCQUFnQixDQUFDO1FBQy9CLFFBQVEsRUFBRSxDQUFDLFFBQVEsRUFBRSxNQUFNLEVBQUUsV0FBVyxDQUFDO1FBQ3pDLFFBQVEsRUFBRSxDQUFDLE1BQU0sRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLGFBQWEsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsR0FBRyxLQUFLLENBQUM7UUFDL0csVUFBVSxFQUFFLDZHQUE2RztRQUN6SCxJQUFJLEVBQUUsY0FBYztRQUNwQixPQUFPLEVBQUUsZUFBZTtRQUN4QixPQUFPLEVBQUUsd09BQXdPO1FBQ2pQLFFBQVEsRUFBRSxzSUFBc0k7UUFDaEosU0FBUyxFQUFFLEVBQUUsRUFBRSx5REFBeUQ7S0FDekU7SUFDRCxHQUFHLEVBQUU7UUFDSCxFQUFFLEVBQUUsS0FBSztRQUNULEtBQUssRUFBRSx3Q0FBd0M7UUFDL0MsR0FBRyxFQUFFLGdCQUFnQjtRQUNyQixVQUFVLEVBQUUsY0FBYztRQUMxQixXQUFXLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQztRQUMvQixRQUFRLEVBQUUsQ0FBQyxNQUFNLEVBQUUsV0FBVyxDQUFDO1FBQy9CLFFBQVEsRUFBRSxDQUFDLE1BQU0sRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEdBQUcsS0FBSyxDQUFDO1FBQzVGLFVBQVUsRUFBRSxvSEFBb0g7UUFDaEksSUFBSSxFQUFFLGNBQWM7UUFDcEIsT0FBTyxFQUFFLFlBQVk7UUFDckIsT0FBTyxFQUFFLHlWQUF5VjtRQUNsVyxRQUFRLEVBQUUsa1BBQWtQO1FBQzVQLFNBQVMsRUFBRSxFQUFFLEVBQUUseURBQXlEO0tBQ3pFO0NBQ0YsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBd0IsQ0FBQyxRQUFRLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztBQUVwRixNQUFNLFVBQVUsVUFBVSxDQUFDLEtBQWM7SUFDdkMsT0FBTyxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUssVUFBZ0MsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDeEYsQ0FBQztBQUVELCtFQUErRTtBQUUvRTs7Ozs7R0FLRztBQUNILE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFzQixDQUFDLFlBQVksQ0FBQyxDQUFDO0FBRXJFOzs7O0dBSUc7QUFDSCxNQUFNLENBQUMsTUFBTSxVQUFVLEdBQUc7SUFDeEIsOEVBQThFO0lBQzlFLEVBQUUsRUFBRSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsYUFBYSxFQUFFLEdBQUcsRUFBRSxjQUFjLEVBQUUsS0FBSyxFQUFFLENBQUMsZ0JBQWdCLEVBQUUsa0JBQWtCLENBQUMsRUFBRTtJQUMxRyxFQUFFLEVBQUUsRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFLEdBQUcsRUFBRSxpQkFBaUIsRUFBRSxLQUFLLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFO0lBQ2xHLEVBQUUsRUFBRSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsYUFBYSxFQUFFLEdBQUcsRUFBRSxnQkFBZ0IsRUFBRSxLQUFLLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFO0NBQ2hGLENBQUM7QUFJWDs7O0dBR0c7QUFDSCxNQUFNLFVBQVUsY0FBYyxDQUFDLE1BQWdCLEVBQUUsY0FBaUM7SUFDaEYsTUFBTSxLQUFLLEdBQUcsSUFBSSxHQUFHLENBQVMsbUJBQW1CLENBQUMsQ0FBQztJQUNuRCxLQUFLLE1BQU0sQ0FBQyxJQUFJLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxXQUFXO1FBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMxRCxLQUFLLE1BQU0sSUFBSSxJQUFJLFVBQVUsRUFBRSxDQUFDO1FBQzlCLElBQUksY0FBYyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQUUsS0FBSyxNQUFNLENBQUMsSUFBSSxJQUFJLENBQUMsS0FBSztnQkFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2pGLENBQUM7SUFDRCxPQUFPLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQztBQUNwQixDQUFDO0FBU0Q7Ozs7R0FJRztBQUNILFNBQVMsZUFBZSxDQUFDLEtBQWE7SUFDcEMsT0FBTyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztBQUMxRCxDQUFDO0FBRUQ7Ozs7OztHQU1HO0FBQ0gsTUFBTSxVQUFVLGVBQWUsQ0FDN0IsTUFBa0IsRUFDbEIsTUFBK0IsRUFDL0IsSUFBSSxHQUF1QixFQUFFO0lBRTdCLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDO0lBQy9CLE1BQU0sUUFBUSxHQUFHLENBQUMsSUFBZSxFQUFXLEVBQUU7UUFDNUMsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUMzQixPQUFPLENBQUMsS0FBSyxTQUFTLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUssS0FBSyxDQUFDO0lBQ3BELENBQUMsQ0FBQztJQUVGLE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBRWxFLE1BQU0sS0FBSyxHQUFhLENBQUMsTUFBTSxNQUFNLENBQUMsR0FBRyxZQUFZLE1BQU0sQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDO0lBQzFFLEtBQUssTUFBTSxJQUFJLElBQUksQ0FBQyxHQUFHLE1BQU0sQ0FBQyxRQUFRLEVBQUUsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztRQUM1RCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQztZQUFFLFNBQVM7UUFDOUIsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDakIsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1lBQzdCLFNBQVM7UUFDWCxDQUFDO1FBQ0QsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUNyQyx3RUFBd0U7UUFDeEUsMkVBQTJFO1FBQzNFLDJFQUEyRTtRQUMzRSx3RUFBd0U7UUFDeEUsZUFBZSxDQUFDLEdBQUcsRUFBRSxLQUFLLElBQUksQ0FBQyxJQUFJLEVBQUUsRUFBRSxFQUFFLFdBQVcsRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztRQUNyRSwwRUFBMEU7UUFDMUUsNkVBQTZFO1FBQzdFLG9FQUFvRTtRQUNwRSxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDakUsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLElBQUksQ0FBQyxJQUFJLElBQUksS0FBSyxFQUFFLENBQUMsQ0FBQztJQUN4QyxDQUFDO0lBRUQsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDO0FBQ3JELENBQUM7QUFTRCw4REFBOEQ7QUFDOUQsTUFBTSxpQkFBaUIsR0FBRyxrQkFBa0IsQ0FBQztBQUM3QywyQ0FBMkM7QUFDM0MsTUFBTSxtQkFBbUIsR0FBRyxrQkFBa0IsQ0FBQztBQUUvQzs7Ozs7OztHQU9HO0FBQ0gsTUFBTSxVQUFVLGVBQWUsQ0FDN0IsTUFBZ0IsRUFDaEIsSUFBSSxHQUErSCxFQUFFO0lBRXJJLE1BQU0sTUFBTSxHQUFHLGdCQUFnQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUM3QywrRUFBK0U7SUFDL0Usc0RBQXNEO0lBQ3RELGVBQWUsQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDbEMsSUFBSSxJQUFJLENBQUMsU0FBUztRQUFFLGVBQWUsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLFlBQVksQ0FBQyxDQUFDO0lBQ2xFLElBQUksSUFBSSxDQUFDLFdBQVc7UUFBRSxlQUFlLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxjQUFjLENBQUMsQ0FBQztJQUN4RSxJQUFJLElBQUksQ0FBQyxNQUFNO1FBQUUsZUFBZSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDeEQsSUFBSSxJQUFJLENBQUMsWUFBWTtRQUFFLGVBQWUsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLGdCQUFnQixDQUFDLENBQUM7SUFDNUUsUUFBUSxNQUFNLEVBQUUsQ0FBQztRQUNmLEtBQUssUUFBUTtZQUNYLE9BQU8sRUFBRSxPQUFPLEVBQUUsZ0RBQWdELEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxDQUFDO1FBQzNGLEtBQUssVUFBVTtZQUNiLE9BQU8sRUFBRSxPQUFPLEVBQUUsa0RBQWtELEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxDQUFDO1FBQzdGLEtBQUssS0FBSyxFQUFFLENBQUM7WUFDWCxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsU0FBUyxJQUFJLGlCQUFpQixDQUFDO1lBQ2xELE9BQU87Z0JBQ0wsT0FBTyxFQUNMLGdEQUFnRCxLQUFLLGFBQWEsTUFBTSxNQUFNO29CQUM5RSw4REFBOEQsS0FBSyxhQUFhLE1BQU0sRUFBRTtnQkFDMUYsV0FBVyxFQUFFLElBQUk7YUFDbEIsQ0FBQztRQUNKLENBQUM7UUFDRCxLQUFLLEtBQUssRUFBRSxDQUFDO1lBQ1gsZ0ZBQWdGO1lBQ2hGLCtFQUErRTtZQUMvRSw2RUFBNkU7WUFDN0UseUVBQXlFO1lBQ3pFLHVCQUF1QjtZQUN2QixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsV0FBVyxJQUFJLG1CQUFtQixDQUFDO1lBQ3hELElBQUksT0FBTyxHQUFHLDREQUE0RCxPQUFPLGFBQWEsTUFBTSxFQUFFLENBQUM7WUFDdkcsSUFBSSxJQUFJLENBQUMsTUFBTTtnQkFBRSxPQUFPLElBQUksYUFBYSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDdkQsSUFBSSxJQUFJLENBQUMsWUFBWTtnQkFBRSxPQUFPLElBQUkscUJBQXFCLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUMzRSxJQUFJLElBQUksQ0FBQyxTQUFTO2dCQUFFLE9BQU8sSUFBSSxRQUFRLENBQUM7WUFDeEMsT0FBTyxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFLENBQUM7UUFDeEMsQ0FBQztJQUNILENBQUM7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbi8qKlxuICogRGV0ZXJtaW5pc3RpYyByZWdpc3RyeSBvZiBwbGF0Zm9ybSBkZXBsb3kgdGFyZ2V0cyDigJQgdGhlIHNvdXJjZSBvZiB0cnV0aCB0aGVcbiAqIGBwcm92aXNpb25gIGFkdmlzb3IgdXNlcyB0byBhc3NlbWJsZSB0aGUgRVhBQ1QgZGVwbG95IGNvbW1hbmQuIFRoZSBhZ2VudCBpcyBhXG4gKiB0aGluIHdyYXBwZXIgb3ZlciB0aGUgZXhpc3RpbmcgZGVwbG95IHNjcmlwdHM7IGl0IG5ldmVyIHJlaW1wbGVtZW50c1xuICogZGVwbG95bWVudCwgb25seSB2YWxpZGF0ZXMgaW5wdXRzIGFuZCBhc3NlbWJsZXMgdGhlIGNvbW1hbmQgdG8gcnVuLlxuICpcbiAqIEtlZXAgdGhpcyBpbiBsb2NrLXN0ZXAgd2l0aCB0aGUgZmxhZ3MgdGhlIHNjcmlwdHMgYWNjZXB0IOKAlCBldmVyeSB0YXJnZXQnc1xuICogb3BlcmF0b3IgZW50cnlwb2ludCBpcyBgYmluL3NldHVwLnNoYCAoZGVwbG95Lzx0YXJnZXQ+L2Jpbi9zZXR1cC5zaCkuXG4gKi9cblxuaW1wb3J0IHsgYXNzZXJ0U2hlbGxTYWZlLCBzaGVsbFF1b3RlIH0gZnJvbSAnLi4vY29uZmlnL2NsaS5jb25zdGFudHMuanMnO1xuaW1wb3J0IHsgcmVzb2x2ZUF3c1JlZ2lvbiB9IGZyb20gJy4uL3V0aWxzL2F3cy1lbnYuanMnO1xuXG5leHBvcnQgdHlwZSBUYXJnZXRJZCA9ICdkb2NrZXInIHwgJ21pbmlrdWJlJyB8ICdlYzInIHwgJ2Vrcyc7XG5cbi8qKiBBIHNpbmdsZSBpbnB1dCB0aGUgdW5kZXJseWluZyBkZXBsb3kgc2NyaXB0IGFjY2VwdHMuICovXG5leHBvcnQgaW50ZXJmYWNlIElucHV0U3BlYyB7XG4gIC8qKiBGbGFnIG5hbWUgcGFzc2VkIHRvIHRoZSBzY3JpcHQgKHdpdGhvdXQgdGhlIGxlYWRpbmcgYC0tYCkuICovXG4gIHJlYWRvbmx5IGZsYWc6IHN0cmluZztcbiAgLyoqIEtleSBvbiB0aGUgcHJvdmlzaW9uIHBhcmFtcyBvYmplY3QuICovXG4gIHJlYWRvbmx5IGtleTogc3RyaW5nO1xuICAvKiogSHVtYW4gZGVzY3JpcHRpb24g4oCUIHNob3duIHdoZW4gYSByZXF1aXJlZCBpbnB1dCBpcyBtaXNzaW5nLiAqL1xuICByZWFkb25seSBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICAvKiogU2VjcmV0IOKAlCBuZXZlciBwcmludGVkIGluIHRoZSBhc3NlbWJsZWQgY29tbWFuZCAobWFza2VkIGFzIGAqKipgKS4gKi9cbiAgcmVhZG9ubHkgc2VjcmV0PzogYm9vbGVhbjtcbiAgLyoqIEJvb2xlYW4gZmxhZyB3aXRoIG5vIHZhbHVlIChlLmcuIGAtLWVtYWlsYCkuICovXG4gIHJlYWRvbmx5IGJvb2xlYW4/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRhcmdldFNwZWMge1xuICByZWFkb25seSBpZDogVGFyZ2V0SWQ7XG4gIHJlYWRvbmx5IGxhYmVsOiBzdHJpbmc7XG4gIC8qKiBEaXJlY3RvcnkgdGhlIGVudHJ5cG9pbnQgcnVucyBmcm9tIChyZWxhdGl2ZSB0byByZXBvIHJvb3QpLiAqL1xuICByZWFkb25seSBkaXI6IHN0cmluZztcbiAgLyoqIEVudHJ5cG9pbnQgc2NyaXB0IChyZWxhdGl2ZSB0byBgZGlyYCkuICovXG4gIHJlYWRvbmx5IGVudHJ5cG9pbnQ6IHN0cmluZztcbiAgLyoqIElucHV0cyB0aGUgc2NyaXB0IFJFUVVJUkVTIOKAlCB0aGUgYWR2aXNvciByZXBvcnRzIGFueSB0aGF0IGFyZSBtaXNzaW5nLiAqL1xuICByZWFkb25seSByZXF1aXJlZDogcmVhZG9ubHkgSW5wdXRTcGVjW107XG4gIC8qKiBPcHRpb25hbCBpbnB1dHMsIHBhc3NlZCB0aHJvdWdoIG9ubHkgd2hlbiBwcm92aWRlZC4gKi9cbiAgcmVhZG9ubHkgb3B0aW9uYWw6IHJlYWRvbmx5IElucHV0U3BlY1tdO1xuICAvKipcbiAgICogUmVwbyBmb2xkZXIocykgdGhpcyB0YXJnZXQncyBkZXBsb3kgbmVlZHMsIGZvciBhIHNwYXJzZSBgLS1yZXBvYCBib290c3RyYXAuXG4gICAqIENvbWJpbmVkIHdpdGggQ09NTU9OX1NQQVJTRV9QQVRIUyBhbmQgYW55IHNlbGVjdGVkIGxvYWQgc3RlcHMnIHBhdGhzLlxuICAgKi9cbiAgcmVhZG9ubHkgc3BhcnNlUGF0aHM6IHJlYWRvbmx5IHN0cmluZ1tdO1xuICAvKiogUG9zdC1kZXBsb3kgc3RlcCB0byBzdXJmYWNlIChyZWdpc3RlcnMgYWRtaW4gKyBsb2FkcyBwbHVnaW5zKS4gKi9cbiAgcmVhZG9ubHkgcG9zdERlcGxveT86IHN0cmluZztcbiAgLyoqIFJvdWdoIG1vbnRobHkgY29zdCAoZnJvbSBkb2NzKS4gKi9cbiAgcmVhZG9ubHkgY29zdDogc3RyaW5nO1xuICAvKiogT25lLWxpbmUgXCJiZXN0IGZvclwiLiAqL1xuICByZWFkb25seSBiZXN0Rm9yOiBzdHJpbmc7XG4gIC8qKiBXaGF0IHRoZSBkZXBsb3kgY3JlYXRlcyDigJQgc2hvd24gd2hlbiBkZXBsb3lpbmcgc28gXCJEZXBsb3lpbmdcIiBpc24ndCBvcGFxdWUuICovXG4gIHJlYWRvbmx5IGRlcGxveXM6IHN0cmluZztcbiAgLyoqIFdoYXQgYSB0ZWFyZG93biBvZiB0aGlzIHRhcmdldCBkZXN0cm95cyDigJQgc2hvd24gYmVmb3JlIGEgKGdhdGVkKSB0ZWFyZG93bi4gKi9cbiAgcmVhZG9ubHkgZGVzdHJveXM6IHN0cmluZztcbiAgLyoqXG4gICAqIEhvc3QgcG9ydHMgdGhlIGRlcGxveSBiaW5kcyDigJQgYSBGQUxMQkFDSyBvbmx5LiBUaGUgbGl2ZSBsaXN0IGlzIERFUklWRUQgZnJvbSB0aGVcbiAgICogY2xvbmVkIGRlcGxveSBzb3VyY2UgYXQgcnVudGltZSAocG9ydHMudHMgYGRpc2NvdmVySG9zdFBvcnRzYCk6IGxvY2FsIGZyb21cbiAgICogZG9ja2VyLWNvbXBvc2UueW1sJ3MgcHVibGlzaGVkIHBvcnRzLCBtaW5pa3ViZSBmcm9tIHNldHVwLnNoJ3MgcG9ydC1mb3J3YXJkcy4gVGhpc1xuICAgKiBzdGF0aWMgY29weSBpcyB1c2VkIG9ubHkgd2hlbiB0aGF0IHNvdXJjZSBjYW4ndCBiZSByZWFkLiBFbXB0eSBmb3IgcmVtb3RlIHRhcmdldHNcbiAgICogKGVjMi9la3MgYmluZCBub3RoaW5nIG9uIHRoZSBvcGVyYXRvcidzIG1hY2hpbmUpLlxuICAgKi9cbiAgcmVhZG9ubHkgaG9zdFBvcnRzOiByZWFkb25seSB7IHNlcnZpY2U6IHN0cmluZzsgcG9ydDogbnVtYmVyIH1bXTtcbn1cblxuLy8gLS0tIFNoYXJlZCBpbnB1dCBzcGVjcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5jb25zdCBET01BSU46IElucHV0U3BlYyA9IHsgZmxhZzogJ2RvbWFpbicsIGtleTogJ2RvbWFpbicsIGRlc2NyaXB0aW9uOiAnRnVsbHktcXVhbGlmaWVkIGRvbWFpbiBuYW1lIChBTEIgQUNNIGNlcnQgKyBTRVMgREtJTSknIH07XG5jb25zdCBIT1NURURfWk9ORTogSW5wdXRTcGVjID0geyBmbGFnOiAnaG9zdGVkLXpvbmUtaWQnLCBrZXk6ICdob3N0ZWRab25lSWQnLCBkZXNjcmlwdGlvbjogJ1B1YmxpYyBSb3V0ZSA1MyBob3N0ZWQgem9uZSBJRCBhdXRob3JpdGF0aXZlIGZvciB0aGUgZG9tYWluJyB9O1xuY29uc3QgR0hDUl9UT0tFTjogSW5wdXRTcGVjID0geyBmbGFnOiAnZ2hjci10b2tlbicsIGtleTogJ2doY3JUb2tlbicsIGRlc2NyaXB0aW9uOiAnR2l0SHViIFBBVCB3aXRoIHJlYWQ6cGFja2FnZXMgKGF2b2lkcyBnaGNyLmlvIGFub255bW91cyByYXRlIGxpbWl0cyknLCBzZWNyZXQ6IHRydWUgfTtcbmNvbnN0IFJFR0lPTjogSW5wdXRTcGVjID0geyBmbGFnOiAncmVnaW9uJywga2V5OiAncmVnaW9uJywgZGVzY3JpcHRpb246ICdBV1MgcmVnaW9uJyB9O1xuY29uc3QgREVQTE9ZX01PREU6IElucHV0U3BlYyA9IHsgZmxhZzogJ2RlcGxveS1tb2RlJywga2V5OiAnZGVwbG95TW9kZScsIGRlc2NyaXB0aW9uOiAncHVibGljIChpbnRlcm5ldC1mYWNpbmcgQUxCKSBvciBwcml2YXRlIChpbnRlcm5hbCwgZGVmYXVsdCknIH07XG5jb25zdCBLRVlfUEFJUjogSW5wdXRTcGVjID0geyBmbGFnOiAna2V5LXBhaXInLCBrZXk6ICdrZXlQYWlyJywgZGVzY3JpcHRpb246ICdFQzIga2V5IHBhaXIgaW4gdGhlIHJlZ2lvbiAoYnJlYWstZ2xhc3Mgc2VyaWFsIGNvbnNvbGU7IHJvdXRpbmUgYWNjZXNzIGlzIFNTTSknIH07XG5jb25zdCBJTlNUQU5DRV9UWVBFOiBJbnB1dFNwZWMgPSB7IGZsYWc6ICdpbnN0YW5jZS10eXBlJywga2V5OiAnaW5zdGFuY2VUeXBlJywgZGVzY3JpcHRpb246ICdFQzIgaW5zdGFuY2UgdHlwZSAoZGVmYXVsdCB0My4yeGxhcmdlKScgfTtcbi8vIGVjMiBkZXBsb3kvdGVhcmRvd24gc3RhY2sgbmFtZSAoQ2xvdWRGb3JtYXRpb24pLiBUaGUgYHN0YWNrTmFtZWAgcGFyYW0ga2V5IGlzIGFsc28gcmV1c2VkXG4vLyBieSB0aGUgdGVhcmRvd24gcGF0aCBhcyB0aGUgcmVzb3VyY2UgaWRlbnRpZmllciAoZWMyIHN0YWNrIC8gZWtzIGNsdXN0ZXIgbmFtZSkuXG5jb25zdCBTVEFDS19OQU1FOiBJbnB1dFNwZWMgPSB7IGZsYWc6ICdzdGFjay1uYW1lJywga2V5OiAnc3RhY2tOYW1lJywgZGVzY3JpcHRpb246ICdDbG91ZEZvcm1hdGlvbiBzdGFjayBuYW1lIChkZWZhdWx0IHBpcGVsaW5lLWJ1aWxkZXIpIOKAlCBzZXQgdG8gcnVuIGEgc2Vjb25kIGVjMiBlbnZpcm9ubWVudCcgfTtcbi8vIGVrcyBjbHVzdGVyIG5hbWUgKGVrc2N0bCkuIFNldCB0byBydW4gYSBzZWNvbmQgRUtTIGVudmlyb25tZW50IGluIG9uZSBhY2NvdW50LlxuY29uc3QgQ0xVU1RFUl9OQU1FOiBJbnB1dFNwZWMgPSB7IGZsYWc6ICdjbHVzdGVyLW5hbWUnLCBrZXk6ICdjbHVzdGVyTmFtZScsIGRlc2NyaXB0aW9uOiAnRUtTIGNsdXN0ZXIgbmFtZSAoZGVmYXVsdCBwaXBlbGluZS1idWlsZGVyKScgfTtcbi8vIEF1dG8taW5pdCBpcyBPTiBCWSBERUZBVUxUIG9uIHRoZSBBV1MgdGFyZ2V0cyAoZWMyICsgZWtzIHNldHVwLnNoIGRlZmF1bHQgQVVUT19JTklUPXRydWUpLFxuLy8gc28gYC0tbm8tYXV0by1pbml0YCBpcyB0aGUgbG9hZC1iZWFyaW5nIG9wdC1vdXQgYW5kIGAtLWF1dG8taW5pdGAgaXMgYSBuby1vcCByZWFmZmlybSDigJRcbi8vIG1pcnJvcnMgLS1lbWFpbC8tLW5vLWVtYWlsLiBlYzIgc2VsZi1pbml0cyBvbiB0aGUgaW5zdGFuY2Ugb24gZmlyc3QgYm9vdDsgZWtzIHNlbGYtaW5pdHMgaW5cbi8vIHNldHVwLnNoJ3MgZmluYWwgcGhhc2UgKG92ZXIgYSBrdWJlY3RsIHBvcnQtZm9yd2FyZCkuIG1pbmlrdWJlL2xvY2FsIHJ1biBpbml0IHZpYSBwcm92aXNpb24uXG4vLyBOT1RFOiBgLS1uby1hdXRvLWluaXRgJ3Mga2V5IChub0F1dG9Jbml0KSBpcyBOT1QgZGVyaXZhYmxlIGZyb20gaXRzIGZsYWcgdGhlIHdheSB0aGUgb3RoZXJcbi8vIHNwZWNzJyBrZXlzIGFyZSAoY29tbWFuZGVyIGZvbGRzIC0teC8tLW5vLXggaW50byBhIHNpbmdsZSBgeGAgb3B0aW9uKTsgcHJvdmlzaW9uLnRzIGFzc2VtYmxlc1xuLy8gYm90aCBrZXlzIGV4cGxpY2l0bHkg4oCUIHNlZSB0aGUgcGFyYW0tYXNzZW1ibHkgdGhlcmUuXG5jb25zdCBBVVRPX0lOSVQ6IElucHV0U3BlYyA9IHsgZmxhZzogJ2F1dG8taW5pdCcsIGtleTogJ2F1dG9Jbml0JywgZGVzY3JpcHRpb246ICdlYzIvZWtzOiB0aGUgZGVwbG95IHNlbGYtcnVucyBpbml0LXBsYXRmb3JtIChyZWdpc3RlciArIGFsbCBsb2Fkcykg4oCUIHRoZSBERUZBVUxUIG9uIEFXUycsIGJvb2xlYW46IHRydWUgfTtcbmNvbnN0IE5PX0FVVE9fSU5JVDogSW5wdXRTcGVjID0geyBmbGFnOiAnbm8tYXV0by1pbml0Jywga2V5OiAnbm9BdXRvSW5pdCcsIGRlc2NyaXB0aW9uOiAnZWMyL2Vrczogc2tpcCB0aGUgZGVwbG95LW1hbmFnZWQgYXV0by1pbml0IGFuZCBydW4gaW5pdC1wbGF0Zm9ybSBtYW51YWxseSBpbnN0ZWFkJywgYm9vbGVhbjogdHJ1ZSB9O1xuLy8gZWMyIG9ubHk6IExFQU4gZHJvcHMgdGhlIG9wdGlvbmFsIG9ic2VydmFiaWxpdHkvYWRtaW4gc2VydmljZXMgc28gdGhlIGNvcmUgc3RhY2sgK1xuLy8gbWVzaCBmaXRzIGEgdDMueGxhcmdlIGluc3RlYWQgb2YgdDMuMnhsYXJnZS4gRmxvd3MgdGhyb3VnaCB0aGUgQ0ZOIGBMZWFuYCBwYXJhbSBpbnRvXG4vLyB0aGUgaW5zdGFuY2UncyBzdGFydHVwLnNoLiAobWluaWt1YmUgcmVhZHMgTEVBTiBhcyBhbiBlbnYgdmFyOyBla3MgZG9lc24ndCBzdXBwb3J0IGl0LilcbmNvbnN0IExFQU46IElucHV0U3BlYyA9IHsgZmxhZzogJ2xlYW4nLCBrZXk6ICdsZWFuJywgZGVzY3JpcHRpb246ICdlYzI6IHRyaW0gb3B0aW9uYWwgb2JzZXJ2YWJpbGl0eS9hZG1pbiBzZXJ2aWNlcyBzbyB0aGUgc3RhY2sgZml0cyBhIHQzLnhsYXJnZSAocGFpciB3aXRoIC0taW5zdGFuY2UtdHlwZSB0My54bGFyZ2UpJywgYm9vbGVhbjogdHJ1ZSB9O1xuXG4vLyBTRVMgLyBlbWFpbCBmYW1pbHkg4oCUIHNoYXJlZCBieSBlYzIgKyBla3MuIFNFUyBpcyBwcm92aXNpb25lZCBCWSBERUZBVUxUXG4vLyBvbiBBV1MgZGVwbG95czsgYC0tbm8tZW1haWxgIGlzIHRoZSBvcHQtb3V0IChgLS1lbWFpbGAgaXMgYSBoYXJtbGVzcyBuby1vcCBrZXB0XG4vLyBmb3IgYmFjay1jb21wYXQpLlxuY29uc3QgRU1BSUw6IHJlYWRvbmx5IElucHV0U3BlY1tdID0gW1xuICB7IGZsYWc6ICdlbWFpbCcsIGtleTogJ2VtYWlsJywgZGVzY3JpcHRpb246ICdFbmFibGUgU0VTIHRyYW5zYWN0aW9uYWwgZW1haWwgKG9uIGJ5IGRlZmF1bHQgZm9yIEFXUyknLCBib29sZWFuOiB0cnVlIH0sXG4gIHsgZmxhZzogJ25vLWVtYWlsJywga2V5OiAnbm9FbWFpbCcsIGRlc2NyaXB0aW9uOiAnU2tpcCBTRVMgKHRyYW5zYWN0aW9uYWwgZW1haWwgaXMgcHJvdmlzaW9uZWQgYnkgZGVmYXVsdCknLCBib29sZWFuOiB0cnVlIH0sXG4gIHsgZmxhZzogJ2VtYWlsLWZyb20nLCBrZXk6ICdlbWFpbEZyb20nLCBkZXNjcmlwdGlvbjogJ0Zyb20gYWRkcmVzcyAoZGVmYXVsdCBub3JlcGx5QDxkb21haW4+KScgfSxcbiAgeyBmbGFnOiAnZW1haWwtZnJvbS1uYW1lJywga2V5OiAnZW1haWxGcm9tTmFtZScsIGRlc2NyaXB0aW9uOiAnRGlzcGxheSBuYW1lIG9uIG91dGJvdW5kIGVtYWlsJyB9LFxuICB7IGZsYWc6ICdhbGVydC1lbWFpbCcsIGtleTogJ2FsZXJ0RW1haWwnLCBkZXNjcmlwdGlvbjogJ1N1YnNjcmliZSBhbiBhZGRyZXNzIHRvIHRoZSBib3VuY2UvY29tcGxhaW50IFNOUyB0b3BpYycgfSxcbiAgeyBmbGFnOiAnbm8tY3JlYXRlLXNlcy1pZGVudGl0eScsIGtleTogJ25vQ3JlYXRlU2VzSWRlbnRpdHknLCBkZXNjcmlwdGlvbjogJ1NraXAgU0VTIGlkZW50aXR5IGNyZWF0aW9uIChkb21haW4gYWxyZWFkeSB2ZXJpZmllZCknLCBib29sZWFuOiB0cnVlIH0sXG5dO1xuXG4vLyAtLS0gVGFyZ2V0cyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbmV4cG9ydCBjb25zdCBUQVJHRVRTOiBSZWFkb25seTxSZWNvcmQ8VGFyZ2V0SWQsIFRhcmdldFNwZWM+PiA9IHtcbiAgZG9ja2VyOiB7XG4gICAgaWQ6ICdkb2NrZXInLFxuICAgIGxhYmVsOiAnTG9jYWwgKERvY2tlciBDb21wb3NlKScsXG4gICAgZGlyOiAnZGVwbG95L2xvY2FsL2RvY2tlcicsXG4gICAgZW50cnlwb2ludDogJ2Jpbi9zZXR1cC5zaCcsXG4gICAgc3BhcnNlUGF0aHM6IFsnZGVwbG95L2xvY2FsL2RvY2tlciddLFxuICAgIHJlcXVpcmVkOiBbXSxcbiAgICBvcHRpb25hbDogW10sXG4gICAgcG9zdERlcGxveTogJy4vZGVwbG95L2Jpbi9pbml0LXBsYXRmb3JtLnNoIGRvY2tlcicsXG4gICAgY29zdDogJ0ZyZWUnLFxuICAgIGJlc3RGb3I6ICdEZXZlbG9wbWVudCcsXG4gICAgZGVwbG95czogJ3RoZSBwbGF0Zm9ybSBhcyBhIERvY2tlciBDb21wb3NlIHN0YWNrIOKAlCBhbiBuZ2lueCBUTFMgcHJveHksIHRoZSBBUEkgc2VydmljZXMgKHBsYXRmb3JtLCBwbHVnaW4sIHBpcGVsaW5lLCBtZXNzYWdlLCByZXBvcnRpbmcsIGNvbXBsaWFuY2UsIHF1b3RhLCBiaWxsaW5nLCBpbWFnZS1yZWdpc3RyeSksIHRoZSBmcm9udGVuZCwgYW5kIHBvc3RncmVzICsgbW9uZ28gKyByZWRpcy4gRmlyc3QgcnVuIHB1bGxzIHRoZSBnaGNyLmlvIGltYWdlcyBhbmQgZ2VuZXJhdGVzIGEgbG9jYWwgVExTIGNlcnQgKGEgZmV3IG1pbnV0ZXMpLicsXG4gICAgZGVzdHJveXM6ICdzdG9wcyBhbGwgY29udGFpbmVycyDigJQgZGF0YSB1bmRlciBkZXBsb3kvbG9jYWwvZG9ja2VyL2RhdGEgcGVyc2lzdHMgb24gZGlzayAoZGVsZXRlIGl0IG1hbnVhbGx5IGZvciBhIGNsZWFuIHNsYXRlKScsXG4gICAgLy8gTWlycm9ycyB0aGUgcHVibGlzaGVkIHBvcnRzIGluIGRlcGxveS9sb2NhbC9kb2NrZXIvZG9ja2VyLWNvbXBvc2UueW1sLlxuICAgIGhvc3RQb3J0czogW1xuICAgICAgeyBzZXJ2aWNlOiAnbmdpbngg4oCUIEhUVFBTIGdhdGV3YXkgKFVJL0FQSSknLCBwb3J0OiA4NDQzIH0sXG4gICAgICB7IHNlcnZpY2U6ICduZ2lueCDigJQgSFRUUCByZWRpcmVjdCcsIHBvcnQ6IDgwODAgfSxcbiAgICAgIHsgc2VydmljZTogJ3BnQWRtaW4gKFBvc3RncmVzIFVJKScsIHBvcnQ6IDU0ODAgfSxcbiAgICAgIHsgc2VydmljZTogJ01vbmdvIEV4cHJlc3MgKE1vbmdvIFVJKScsIHBvcnQ6IDI3MDgxIH0sXG4gICAgICB7IHNlcnZpY2U6ICdEb2NrZXIgcmVnaXN0cnknLCBwb3J0OiA1MDAwIH0sXG4gICAgICB7IHNlcnZpY2U6ICdKYWVnZXIgKHRyYWNpbmcgVUkpJywgcG9ydDogMTY2ODYgfSxcbiAgICBdLFxuICB9LFxuICBtaW5pa3ViZToge1xuICAgIGlkOiAnbWluaWt1YmUnLFxuICAgIGxhYmVsOiAnTWluaWt1YmUgKGxvY2FsIEt1YmVybmV0ZXMpJyxcbiAgICBkaXI6ICdkZXBsb3kvbG9jYWwvbWluaWt1YmUnLFxuICAgIGVudHJ5cG9pbnQ6ICdiaW4vc2V0dXAuc2gnLFxuICAgIHNwYXJzZVBhdGhzOiBbJ2RlcGxveS9sb2NhbC9taW5pa3ViZSddLFxuICAgIHJlcXVpcmVkOiBbXSxcbiAgICBvcHRpb25hbDogW10sXG4gICAgcG9zdERlcGxveTogJy4vZGVwbG95L2Jpbi9pbml0LXBsYXRmb3JtLnNoIG1pbmlrdWJlJyxcbiAgICBjb3N0OiAnRnJlZScsXG4gICAgYmVzdEZvcjogJ0xvY2FsIEt1YmVybmV0ZXMnLFxuICAgIGRlcGxveXM6ICd0aGUgcGxhdGZvcm0gb250byBhIGxvY2FsIE1pbmlrdWJlIGNsdXN0ZXIg4oCUIHRoZSBzYW1lIHNlcnZpY2VzIGFzIEt1YmVybmV0ZXMgRGVwbG95bWVudHMvU2VydmljZXMgYmVoaW5kIGFuIGluZ3Jlc3MsIHBsdXMgaW4tY2x1c3RlciBwb3N0Z3JlcyArIG1vbmdvICsgcmVkaXMuIEZpcnN0IHJ1biBwdWxscyBpbWFnZXMsIGJ1aWxkcyB0aGUgY2x1c3RlciwgYW5kIGdlbmVyYXRlcyBhIFRMUyBjZXJ0IChzZXZlcmFsIG1pbnV0ZXMpLicsXG4gICAgZGVzdHJveXM6ICdzdG9wcyB0aGUgbWluaWt1YmUgc3RhY2sg4oCUIHBlcnNpc3RlbnQgdm9sdW1lcyAoUFZDIGRhdGEpIHJlbWFpbiB1bnRpbCB0aGUgY2x1c3RlciBpcyBkZWxldGVkJyxcbiAgICAvLyBNaXJyb3JzIHRoZSBrdWJlY3RsIHBvcnQtZm9yd2FyZHMgc3RhcnRlZCBpbiBkZXBsb3kvbG9jYWwvbWluaWt1YmUvYmluL3NldHVwLnNoLlxuICAgIGhvc3RQb3J0czogW1xuICAgICAgeyBzZXJ2aWNlOiAnbmdpbngg4oCUIEhUVFBTIGdhdGV3YXkgKFVJL0FQSSknLCBwb3J0OiA4NDQzIH0sXG4gICAgICB7IHNlcnZpY2U6ICdNb25nbyBFeHByZXNzIChNb25nbyBVSSknLCBwb3J0OiA4MDgxIH0sXG4gICAgICB7IHNlcnZpY2U6ICdwZ0FkbWluIChQb3N0Z3JlcyBVSSknLCBwb3J0OiA1NDgwIH0sXG4gICAgXSxcbiAgfSxcbiAgZWMyOiB7XG4gICAgaWQ6ICdlYzInLFxuICAgIGxhYmVsOiAnQVdTIEVDMiAoc2luZ2xlIE1pbmlrdWJlIGluc3RhbmNlIGJlaGluZCBhbiBBTEIpJyxcbiAgICBkaXI6ICdkZXBsb3kvYXdzL2VjMicsXG4gICAgZW50cnlwb2ludDogJ2Jpbi9zZXR1cC5zaCcsXG4gICAgc3BhcnNlUGF0aHM6IFsnZGVwbG95L2F3cy9lYzInXSxcbiAgICByZXF1aXJlZDogW0tFWV9QQUlSLCBET01BSU4sIEhPU1RFRF9aT05FXSxcbiAgICBvcHRpb25hbDogW1JFR0lPTiwgREVQTE9ZX01PREUsIEdIQ1JfVE9LRU4sIElOU1RBTkNFX1RZUEUsIFNUQUNLX05BTUUsIEFVVE9fSU5JVCwgTk9fQVVUT19JTklULCBMRUFOLCAuLi5FTUFJTF0sXG4gICAgcG9zdERlcGxveTogJy4vZGVwbG95L2Jpbi9pbml0LXBsYXRmb3JtLnNoIGVjMiAgIyBhdXRvLXJ1bnMgb24gdGhlIGluc3RhbmNlIGJ5IGRlZmF1bHQ7IC0tbm8tYXV0by1pbml0IHRvIGRvIGl0IG1hbnVhbGx5JyxcbiAgICBjb3N0OiAnfiQxNDAtMjY1L21vJyxcbiAgICBiZXN0Rm9yOiAnRGV2IC8gc3RhZ2luZycsXG4gICAgZGVwbG95czogJ3RoZSBwbGF0Zm9ybSBvbiBhIHNpbmdsZSBFQzIgaW5zdGFuY2UgdmlhIENsb3VkRm9ybWF0aW9uIOKAlCBhIFZQQywgdGhlIGluc3RhbmNlIChydW5uaW5nIHRoZSBNaW5pa3ViZSBzdGFjayksIGFuIEFMQiwgYSBSb3V0ZSA1MyByZWNvcmQgKyBBQ00gY2VydCBmb3IgdGhlIGRvbWFpbiwgYW5kIChieSBkZWZhdWx0KSBTRVMgZW1haWwuIFRoZSBpbnN0YW5jZSBwdWxscyBpbWFnZXMgb24gZmlyc3QgYm9vdC4nLFxuICAgIGRlc3Ryb3lzOiAnREVMRVRFUyB0aGUgQ2xvdWRGb3JtYXRpb24gc3RhY2s6IHRoZSBWUEMsIEVDMiBpbnN0YW5jZSwgYW5kIGl0cyBFQlMgZGF0YSB2b2x1bWUgKGRhdGFiYXNlcywgcmVnaXN0cnksIHBsdWdpbiBidWlsZHMpLiBJcnJldmVyc2libGUuJyxcbiAgICBob3N0UG9ydHM6IFtdLCAvLyByZW1vdGUgKEFXUykg4oCUIGJpbmRzIG5vdGhpbmcgb24gdGhlIG9wZXJhdG9yJ3MgbWFjaGluZVxuICB9LFxuICBla3M6IHtcbiAgICBpZDogJ2VrcycsXG4gICAgbGFiZWw6ICdBV1MgRUtTIEF1dG8gTW9kZSAobWFuYWdlZCBLdWJlcm5ldGVzKScsXG4gICAgZGlyOiAnZGVwbG95L2F3cy9la3MnLFxuICAgIGVudHJ5cG9pbnQ6ICdiaW4vc2V0dXAuc2gnLFxuICAgIHNwYXJzZVBhdGhzOiBbJ2RlcGxveS9hd3MvZWtzJ10sXG4gICAgcmVxdWlyZWQ6IFtET01BSU4sIEhPU1RFRF9aT05FXSxcbiAgICBvcHRpb25hbDogW1JFR0lPTiwgREVQTE9ZX01PREUsIEdIQ1JfVE9LRU4sIENMVVNURVJfTkFNRSwgQVVUT19JTklULCBOT19BVVRPX0lOSVQsIC4uLkVNQUlMXSxcbiAgICBwb3N0RGVwbG95OiAnLi9kZXBsb3kvYmluL2luaXQtcGxhdGZvcm0uc2ggZWtzICAjIGF1dG8tcnVucyBhdCB0aGUgZW5kIG9mIHNldHVwLnNoIGJ5IGRlZmF1bHQ7IC0tbm8tYXV0by1pbml0IHRvIGRvIGl0IG1hbnVhbGx5JyxcbiAgICBjb3N0OiAnfiQxNTAtNDAwL21vJyxcbiAgICBiZXN0Rm9yOiAnUHJvZHVjdGlvbicsXG4gICAgZGVwbG95czogJ3RoZSBwbGF0Zm9ybSBvbiBBbWF6b24gRUtTIEF1dG8gTW9kZSDigJQgYW4gQVdTLW1hbmFnZWQgS3ViZXJuZXRlcyBjbHVzdGVyIChLYXJwZW50ZXItc2NhbGVkIEVDMiBub2RlcywgQVdTIExvYWQgQmFsYW5jZXIgQ29udHJvbGxlciwgRUJTL0VGUyBDU0kpLCB0aGUgc2FtZSBLdWJlcm5ldGVzIHdvcmtsb2FkcyBhcyB0aGUgb3RoZXIgazhzIHRhcmdldHMsIGFuIEFMQiBJbmdyZXNzICsgQUNNIGZvciB0aGUgZG9tYWluLCBhbmQgKGJ5IGRlZmF1bHQpIFNFUyBlbWFpbC4gUGx1Z2luIGJ1aWxkcyBydW4gb24gdGhlIGluLWNsdXN0ZXIgcm9vdGxlc3MgYnVpbGRraXRkIChFQzIgbm9kZXMgYWxsb3cgaXQpLicsXG4gICAgZGVzdHJveXM6ICdSdW5zIGJpbi9zaHV0ZG93bi5zaDogREVMRVRFUyB0aGUgRUtTIGNsdXN0ZXIgKyBub2RlcyAoZWtzY3RsKSwgdGhlIEVGUyBmaWxlc3lzdGVtLCBhbmQg4oCUIHdoZW4gLS1kb21haW4gaXMgc2V0IOKAlCB0aGUgQUNNIGNlcnQgKyBSb3V0ZSA1MyBhbGlhcy4gRUJTIHZvbHVtZXMgb24gdGhlIFJldGFpbiBTdG9yYWdlQ2xhc3MgYXJlIE5PVCBhdXRvLWRlbGV0ZWQgKHJlcG9ydGVkIGF0IHRoZSBlbmQpLiBJcnJldmVyc2libGUuJyxcbiAgICBob3N0UG9ydHM6IFtdLCAvLyByZW1vdGUgKEFXUykg4oCUIGJpbmRzIG5vdGhpbmcgb24gdGhlIG9wZXJhdG9yJ3MgbWFjaGluZVxuICB9LFxufTtcblxuZXhwb3J0IGNvbnN0IFRBUkdFVF9JRFM6IHJlYWRvbmx5IFRhcmdldElkW10gPSBbJ2RvY2tlcicsICdtaW5pa3ViZScsICdlYzInLCAnZWtzJ107XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1RhcmdldElkKHZhbHVlOiB1bmtub3duKTogdmFsdWUgaXMgVGFyZ2V0SWQge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyAmJiAoVEFSR0VUX0lEUyBhcyByZWFkb25seSBzdHJpbmdbXSkuaW5jbHVkZXModmFsdWUpO1xufVxuXG4vLyAtLS0gU3BhcnNlIGJvb3RzdHJhcCBwYXRocyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8qKlxuICogRm9sZGVycyBldmVyeSBgLS1yZXBvYCBib290c3RyYXAgbmVlZHMgcmVnYXJkbGVzcyBvZiB0YXJnZXQ6IHRoZSBvcmNoZXN0cmF0aW9uXG4gKiBzY3JpcHRzLiBFYWNoIHRhcmdldCdzIHNldHVwLnNoICsgaW5pdC1wbGF0Zm9ybS5zaCBsaXZlIGluIC8gZHJpdmUgdGhlc2UuXG4gKiBEZWxpYmVyYXRlbHkgbWluaW1hbCDigJQgaGVhdmllciBmb2xkZXJzIChwbHVnaW5zL2NvbXBsaWFuY2Uvc2FtcGxlcykgYXJlIHB1bGxlZFxuICogaW4gb25seSB3aGVuIHRoZWlyIHBvc3QtaW5zdGFsbCBvcHRpb24gaXMgc2VsZWN0ZWQgKHNlZSBMT0FEX1NURVBTKS5cbiAqL1xuZXhwb3J0IGNvbnN0IENPTU1PTl9TUEFSU0VfUEFUSFM6IHJlYWRvbmx5IHN0cmluZ1tdID0gWydkZXBsb3kvYmluJ107XG5cbi8qKlxuICogT3B0LWluIHBvc3QtaW5zdGFsbCBsb2FkIHN0ZXBzLiBFYWNoIG1hcHMgYSBwcm92aXNpb24gYC0td2l0aC0qYCBmbGFnIHRvIHRoZVxuICogaW5pdC1wbGF0Zm9ybSBlbnYgdmFyIHRoYXQgZW5hYmxlcyBpdCBBTkQgdGhlIHJlcG8gZm9sZGVyKHMpIGl0IHJlYWRzIOKAlCBzbyB0aGVcbiAqIHNwYXJzZSBjaGVja291dCBncm93cyBleGFjdGx5IHdpdGggdGhlIHNlbGVjdGVkIG9wdGlvbnMuXG4gKi9cbmV4cG9ydCBjb25zdCBMT0FEX1NURVBTID0gW1xuICAvLyBUaGUgcGx1Z2luIGJ1aWxkIHJlYWRzIGRlcGxveS9wbHVnaW5zL19iYXNlIEFORCBkZXBsb3kvY29kZWJ1aWxkL2Jvb3RzdHJhcC5cbiAgeyBpZDogJ3BsdWdpbnMnLCBmbGFnOiAnd2l0aFBsdWdpbnMnLCBlbnY6ICdMT0FEX1BMVUdJTlMnLCBwYXRoczogWydkZXBsb3kvcGx1Z2lucycsICdkZXBsb3kvY29kZWJ1aWxkJ10gfSxcbiAgeyBpZDogJ2NvbXBsaWFuY2UnLCBmbGFnOiAnd2l0aENvbXBsaWFuY2UnLCBlbnY6ICdMT0FEX0NPTVBMSUFOQ0UnLCBwYXRoczogWydkZXBsb3kvY29tcGxpYW5jZSddIH0sXG4gIHsgaWQ6ICdzYW1wbGVzJywgZmxhZzogJ3dpdGhTYW1wbGVzJywgZW52OiAnTE9BRF9URU1QTEFURVMnLCBwYXRoczogWydkZXBsb3kvc2FtcGxlcyddIH0sXG5dIGFzIGNvbnN0O1xuXG5leHBvcnQgdHlwZSBMb2FkU3RlcElkID0gKHR5cGVvZiBMT0FEX1NURVBTKVtudW1iZXJdWydpZCddO1xuXG4vKipcbiAqIFRoZSBkZS1kdXBsaWNhdGVkIHNldCBvZiBzcGFyc2UgcGF0aHMgZm9yIGEgdGFyZ2V0IHBsdXMgdGhlIGVuYWJsZWQgbG9hZFxuICogc3RlcHM6IGNvbW1vbiBiYXNlIOKIqiB0YXJnZXQgZm9sZGVyKHMpIOKIqiBlYWNoIGVuYWJsZWQgc3RlcCdzIGZvbGRlcihzKS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNwYXJzZVBhdGhzRm9yKHRhcmdldDogVGFyZ2V0SWQsIGVuYWJsZWRMb2FkSWRzOiByZWFkb25seSBzdHJpbmdbXSk6IHN0cmluZ1tdIHtcbiAgY29uc3QgcGF0aHMgPSBuZXcgU2V0PHN0cmluZz4oQ09NTU9OX1NQQVJTRV9QQVRIUyk7XG4gIGZvciAoY29uc3QgcCBvZiBUQVJHRVRTW3RhcmdldF0uc3BhcnNlUGF0aHMpIHBhdGhzLmFkZChwKTtcbiAgZm9yIChjb25zdCBzdGVwIG9mIExPQURfU1RFUFMpIHtcbiAgICBpZiAoZW5hYmxlZExvYWRJZHMuaW5jbHVkZXMoc3RlcC5pZCkpIGZvciAoY29uc3QgcCBvZiBzdGVwLnBhdGhzKSBwYXRocy5hZGQocCk7XG4gIH1cbiAgcmV0dXJuIFsuLi5wYXRoc107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXNzZW1ibGVSZXN1bHQge1xuICAvKiogVGhlIGV4YWN0IGNvbW1hbmQgdG8gcnVuIOKAlCBzZWNyZXRzIG1hc2tlZCBhcyBgKioqYC4gKi9cbiAgcmVhZG9ubHkgY29tbWFuZDogc3RyaW5nO1xuICAvKiogUmVxdWlyZWQgaW5wdXRzIHRoYXQgd2VyZSBub3Qgc3VwcGxpZWQuICovXG4gIHJlYWRvbmx5IG1pc3Npbmc6IHJlYWRvbmx5IElucHV0U3BlY1tdO1xufVxuXG4vKipcbiAqIFF1b3RlIG9ubHkgd2hlbiB0aGUgdmFsdWUgd291bGQgb3RoZXJ3aXNlIGJlIHdvcmQtc3BsaXQgb3IgbWlzLXBhcnNlZCBieSB0aGVcbiAqIHNoZWxsICh3aGl0ZXNwYWNlIG9yIGVtYmVkZGVkIHF1b3RlcykuIGBhc3NlcnRTaGVsbFNhZmVgIGFscmVhZHkgcmVqZWN0cyB0aGVcbiAqIGRhbmdlcm91cyBtZXRhY2hhcmFjdGVycywgc28gc2ltcGxlIHRva2VucyBzdGF5IHVucXVvdGVkIGZvciByZWFkYWJpbGl0eS5cbiAqL1xuZnVuY3Rpb24gbWF5YmVTaGVsbFF1b3RlKHZhbHVlOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gL1tcXHMnXCJdLy50ZXN0KHZhbHVlKSA/IHNoZWxsUXVvdGUodmFsdWUpIDogdmFsdWU7XG59XG5cbi8qKlxuICogQXNzZW1ibGUgdGhlIGRlcGxveSBjb21tYW5kIGZvciBhIHRhcmdldCBmcm9tIHRoZSBwcm92aWRlZCBwYXJhbXMuIFB1cmUgYW5kXG4gKiBkZXRlcm1pbmlzdGljIOKAlCBubyBzaGVsbCwgbm8gTExNLiBNaXNzaW5nIHJlcXVpcmVkIGlucHV0cyBhcmUgcmVwb3J0ZWQgKG5ldmVyXG4gKiBndWVzc2VkKS4gQnkgZGVmYXVsdCBzZWNyZXRzIGFyZSBtYXNrZWQgKGAqKipgKSBmb3IgRElTUExBWTsgcGFzcyBgbWFzazogZmFsc2VgXG4gKiB0byBidWlsZCB0aGUgcmVhbCBjb21tYW5kIGZvciBFWEVDVVRJT04g4oCUIHRoYXQgc3RyaW5nIG11c3QgbmV2ZXIgYmUgbG9nZ2VkIG9yXG4gKiBzaG93biB0byB0aGUgbW9kZWwuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhc3NlbWJsZUNvbW1hbmQoXG4gIHRhcmdldDogVGFyZ2V0U3BlYyxcbiAgcGFyYW1zOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbiAgb3B0czogeyBtYXNrPzogYm9vbGVhbiB9ID0ge30sXG4pOiBBc3NlbWJsZVJlc3VsdCB7XG4gIGNvbnN0IG1hc2sgPSBvcHRzLm1hc2sgPz8gdHJ1ZTtcbiAgY29uc3QgcHJvdmlkZWQgPSAoc3BlYzogSW5wdXRTcGVjKTogYm9vbGVhbiA9PiB7XG4gICAgY29uc3QgdiA9IHBhcmFtc1tzcGVjLmtleV07XG4gICAgcmV0dXJuIHYgIT09IHVuZGVmaW5lZCAmJiB2ICE9PSAnJyAmJiB2ICE9PSBmYWxzZTtcbiAgfTtcblxuICBjb25zdCBtaXNzaW5nID0gdGFyZ2V0LnJlcXVpcmVkLmZpbHRlcigoc3BlYykgPT4gIXByb3ZpZGVkKHNwZWMpKTtcblxuICBjb25zdCBwYXJ0czogc3RyaW5nW10gPSBbYGNkICR7dGFyZ2V0LmRpcn0gJiYgYmFzaCAke3RhcmdldC5lbnRyeXBvaW50fWBdO1xuICBmb3IgKGNvbnN0IHNwZWMgb2YgWy4uLnRhcmdldC5yZXF1aXJlZCwgLi4udGFyZ2V0Lm9wdGlvbmFsXSkge1xuICAgIGlmICghcHJvdmlkZWQoc3BlYykpIGNvbnRpbnVlO1xuICAgIGlmIChzcGVjLmJvb2xlYW4pIHtcbiAgICAgIHBhcnRzLnB1c2goYC0tJHtzcGVjLmZsYWd9YCk7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgY29uc3QgcmF3ID0gU3RyaW5nKHBhcmFtc1tzcGVjLmtleV0pO1xuICAgIC8vIFRoZSBhc3NlbWJsZWQgY29tbWFuZCBpcyBleGVjdXRlZCB2aWEgYSBzaGVsbCAocnVuU2NyaXB0KSwgc28gYSBwYXJhbVxuICAgIC8vIHZhbHVlIGNhcnJ5aW5nIHNoZWxsIG1ldGFjaGFyYWN0ZXJzIHdvdWxkIGJlIGNvbW1hbmQgaW5qZWN0aW9uLiBWYWxpZGF0ZVxuICAgIC8vIHRoZSBSRUFMIHZhbHVlIGV2ZW4gd2hlbiBtYXNraW5nIGZvciBkaXNwbGF5IOKAlCB0aGUgZXhlY3V0ZWQgY29tbWFuZCB1c2VzXG4gICAgLy8gdGhlIHVubWFza2VkIHZhbHVlLiBSZWRhY3Qgc2VjcmV0cyBzbyB0aGUgZXJyb3IgbmV2ZXIgZWNob2VzIGEgdG9rZW4uXG4gICAgYXNzZXJ0U2hlbGxTYWZlKHJhdywgYC0tJHtzcGVjLmZsYWd9YCwgeyByZWRhY3RWYWx1ZTogc3BlYy5zZWNyZXQgfSk7XG4gICAgLy8gYXNzZXJ0U2hlbGxTYWZlIHN0aWxsIHBlcm1pdHMgc3BhY2VzIGFuZCBxdW90ZXMgKGUuZy4gLS1lbWFpbC1mcm9tLW5hbWVcbiAgICAvLyBcIlBpcGVsaW5lIEJ1aWxkZXJcIiwgb3IgTydCcmllbiksIHdoaWNoIHdvdWxkIHdvcmQtc3BsaXQgd2hlbiBlbWl0dGVkIGJhcmU7XG4gICAgLy8gcXVvdGUgdGhvc2Ugc28gdGhlIHZhbHVlIHJlYWNoZXMgdGhlIHNjcmlwdCBhcyBhIHNpbmdsZSBhcmd1bWVudC5cbiAgICBjb25zdCB2YWx1ZSA9IHNwZWMuc2VjcmV0ICYmIG1hc2sgPyAnKioqJyA6IG1heWJlU2hlbGxRdW90ZShyYXcpO1xuICAgIHBhcnRzLnB1c2goYC0tJHtzcGVjLmZsYWd9ICR7dmFsdWV9YCk7XG4gIH1cblxuICByZXR1cm4geyBjb21tYW5kOiBwYXJ0cy5qb2luKCcgXFxcXFxcbiAgJyksIG1pc3NpbmcgfTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUZWFyZG93blJlc3VsdCB7XG4gIC8qKiBUaGUgZXhhY3QgdGVhcmRvd24gY29tbWFuZCB0byBydW4uICovXG4gIHJlYWRvbmx5IGNvbW1hbmQ6IHN0cmluZztcbiAgLyoqIFdoZXRoZXIgdGhpcyB0ZWFyZG93biBpcnJldmVyc2libHkgZGVzdHJveXMgZGF0YSAoQVdTIHRhcmdldHMpLiAqL1xuICByZWFkb25seSBkZXN0cnVjdGl2ZTogYm9vbGVhbjtcbn1cblxuLyoqIENsb3VkRm9ybWF0aW9uIHN0YWNrIG5hbWUgdGhlIEVDMiBzZXR1cC5zaCBkZWZhdWx0cyB0by4gKi9cbmNvbnN0IERFRkFVTFRfRUMyX1NUQUNLID0gJ3BpcGVsaW5lLWJ1aWxkZXInO1xuLyoqIEVLUyBjbHVzdGVyIG5hbWUgZWtzY3RsIGRlZmF1bHRzIHRvLiAqL1xuY29uc3QgREVGQVVMVF9FS1NfQ0xVU1RFUiA9ICdwaXBlbGluZS1idWlsZGVyJztcblxuLyoqXG4gKiBBc3NlbWJsZSB0aGUgdGVhcmRvd24gY29tbWFuZCBmb3IgYSB0YXJnZXQuIFB1cmUgYW5kIGRldGVybWluaXN0aWMg4oCUIG1pcnJvcnNcbiAqIGBhc3NlbWJsZUNvbW1hbmRgIGZvciB0aGUgZGVzdHJveSBwYXRoLiBsb2NhbC9taW5pa3ViZSBTVE9QIHRoZSBzdGFja1xuICogKG5vbi1kZXN0cnVjdGl2ZSDigJQgb24tZGlzayAvIFBWQyBkYXRhIHN1cnZpdmVzKTsgZWMyIERFTEVURXMgaXRzIENsb3VkRm9ybWF0aW9uXG4gKiBzdGFjayBhbmQgZWtzIERFTEVURXMgaXRzIGNsdXN0ZXIgKGVrc2N0bCkg4oCUIGJvdGggaXJyZXZlcnNpYmxlLiBFQzIgYGRlbGV0ZS1zdGFja2BcbiAqIGFuZCBgZWtzY3RsIGRlbGV0ZSBjbHVzdGVyYCBoYXZlIG5vIG5hdGl2ZSBwcm9tcHQsIHdoaWNoIGlzIGV4YWN0bHkgd2h5IHRoZSBhZ2VudCdzXG4gKiB0eXBlZC1jb25maXJtYXRpb24gZ2F0ZSBpcyBtYW5kYXRvcnkgdGhlcmUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0ZWFyZG93bkNvbW1hbmQoXG4gIHRhcmdldDogVGFyZ2V0SWQsXG4gIG9wdHM6IHsgc3RhY2tOYW1lPzogc3RyaW5nOyBjbHVzdGVyTmFtZT86IHN0cmluZzsgcmVnaW9uPzogc3RyaW5nOyBkb21haW4/OiBzdHJpbmc7IGhvc3RlZFpvbmVJZD86IHN0cmluZzsgYXNzdW1lWWVzPzogYm9vbGVhbiB9ID0ge30sXG4pOiBUZWFyZG93blJlc3VsdCB7XG4gIGNvbnN0IHJlZ2lvbiA9IHJlc29sdmVBd3NSZWdpb24ob3B0cy5yZWdpb24pO1xuICAvLyBBbnl0aGluZyBmbG93aW5nIHVucXVvdGVkIGludG8gYSBzaGVsbC1leGVjdXRlZCB0ZWFyZG93biBjb21tYW5kIGlzIHJlamVjdGVkXG4gIC8vIGZvciBzaGVsbCBtZXRhY2hhcmFjdGVycyAobWlycm9ycyBhc3NlbWJsZUNvbW1hbmQpLlxuICBhc3NlcnRTaGVsbFNhZmUocmVnaW9uLCAncmVnaW9uJyk7XG4gIGlmIChvcHRzLnN0YWNrTmFtZSkgYXNzZXJ0U2hlbGxTYWZlKG9wdHMuc3RhY2tOYW1lLCAnc3RhY2stbmFtZScpO1xuICBpZiAob3B0cy5jbHVzdGVyTmFtZSkgYXNzZXJ0U2hlbGxTYWZlKG9wdHMuY2x1c3Rlck5hbWUsICdjbHVzdGVyLW5hbWUnKTtcbiAgaWYgKG9wdHMuZG9tYWluKSBhc3NlcnRTaGVsbFNhZmUob3B0cy5kb21haW4sICdkb21haW4nKTtcbiAgaWYgKG9wdHMuaG9zdGVkWm9uZUlkKSBhc3NlcnRTaGVsbFNhZmUob3B0cy5ob3N0ZWRab25lSWQsICdob3N0ZWQtem9uZS1pZCcpO1xuICBzd2l0Y2ggKHRhcmdldCkge1xuICAgIGNhc2UgJ2RvY2tlcic6XG4gICAgICByZXR1cm4geyBjb21tYW5kOiAnY2QgZGVwbG95L2xvY2FsL2RvY2tlciAmJiBiYXNoIGJpbi9zaHV0ZG93bi5zaCcsIGRlc3RydWN0aXZlOiBmYWxzZSB9O1xuICAgIGNhc2UgJ21pbmlrdWJlJzpcbiAgICAgIHJldHVybiB7IGNvbW1hbmQ6ICdjZCBkZXBsb3kvbG9jYWwvbWluaWt1YmUgJiYgYmFzaCBiaW4vc2h1dGRvd24uc2gnLCBkZXN0cnVjdGl2ZTogZmFsc2UgfTtcbiAgICBjYXNlICdlYzInOiB7XG4gICAgICBjb25zdCBzdGFjayA9IG9wdHMuc3RhY2tOYW1lIHx8IERFRkFVTFRfRUMyX1NUQUNLO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgY29tbWFuZDpcbiAgICAgICAgICBgYXdzIGNsb3VkZm9ybWF0aW9uIGRlbGV0ZS1zdGFjayAtLXN0YWNrLW5hbWUgJHtzdGFja30gLS1yZWdpb24gJHtyZWdpb259ICYmIGAgK1xuICAgICAgICAgIGBhd3MgY2xvdWRmb3JtYXRpb24gd2FpdCBzdGFjay1kZWxldGUtY29tcGxldGUgLS1zdGFjay1uYW1lICR7c3RhY2t9IC0tcmVnaW9uICR7cmVnaW9ufWAsXG4gICAgICAgIGRlc3RydWN0aXZlOiB0cnVlLFxuICAgICAgfTtcbiAgICB9XG4gICAgY2FzZSAnZWtzJzoge1xuICAgICAgLy8gZWtzIHRlYXJzIGRvd24gdmlhIGJpbi9zaHV0ZG93bi5zaCAobGlrZSBsb2NhbC9taW5pa3ViZSB1c2UgYmluL3NodXRkb3duLnNoKTpcbiAgICAgIC8vIGl0IGRlbGV0ZXMgdGhlIGNsdXN0ZXIgQU5EIHRoZSByZXNvdXJjZXMgZWtzY3RsIGFsb25lIHdvdWxkIG9ycGhhbiDigJQgdGhlIEVGU1xuICAgICAgLy8gZmlsZXN5c3RlbSBhbmQsIHdoZW4gLS1kb21haW4gaXMgZ2l2ZW4sIHRoZSBBQ00gY2VydCArIFJvdXRlIDUzIGFsaWFzLiBUaGVcbiAgICAgIC8vIGFnZW50J3MgdHlwZWQtY29uZmlybWF0aW9uIGdhdGUgYWxyZWFkeSByYW4sIHNvIHBhc3MgLS15ZXMgdG8gc2tpcCB0aGVcbiAgICAgIC8vIHNjcmlwdCdzIG93biBwcm9tcHQuXG4gICAgICBjb25zdCBjbHVzdGVyID0gb3B0cy5jbHVzdGVyTmFtZSB8fCBERUZBVUxUX0VLU19DTFVTVEVSO1xuICAgICAgbGV0IGNvbW1hbmQgPSBgY2QgZGVwbG95L2F3cy9la3MgJiYgYmFzaCBiaW4vc2h1dGRvd24uc2ggLS1jbHVzdGVyLW5hbWUgJHtjbHVzdGVyfSAtLXJlZ2lvbiAke3JlZ2lvbn1gO1xuICAgICAgaWYgKG9wdHMuZG9tYWluKSBjb21tYW5kICs9IGAgLS1kb21haW4gJHtvcHRzLmRvbWFpbn1gO1xuICAgICAgaWYgKG9wdHMuaG9zdGVkWm9uZUlkKSBjb21tYW5kICs9IGAgLS1ob3N0ZWQtem9uZS1pZCAke29wdHMuaG9zdGVkWm9uZUlkfWA7XG4gICAgICBpZiAob3B0cy5hc3N1bWVZZXMpIGNvbW1hbmQgKz0gJyAtLXllcyc7XG4gICAgICByZXR1cm4geyBjb21tYW5kLCBkZXN0cnVjdGl2ZTogdHJ1ZSB9O1xuICAgIH1cbiAgfVxufVxuIl19
|
|
281
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFyZ2V0cy5qcyIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2FnZW50L3RhcmdldHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQUV0Qzs7Ozs7Ozs7R0FRRztBQUVILE9BQU8sRUFBRSxlQUFlLEVBQUUsVUFBVSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDekUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFzRHZELCtFQUErRTtBQUUvRSxNQUFNLE1BQU0sR0FBYyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUUsdURBQXVELEVBQUUsQ0FBQztBQUNsSSxNQUFNLFdBQVcsR0FBYyxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRSxHQUFHLEVBQUUsY0FBYyxFQUFFLFdBQVcsRUFBRSw2REFBNkQsRUFBRSxDQUFDO0FBQzNKLE1BQU0sVUFBVSxHQUFjLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRSxHQUFHLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxzRUFBc0UsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLENBQUM7QUFDMUssTUFBTSxNQUFNLEdBQWMsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxDQUFDO0FBQ3ZGLE1BQU0sV0FBVyxHQUFjLEVBQUUsSUFBSSxFQUFFLGFBQWEsRUFBRSxHQUFHLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSw2REFBNkQsRUFBRSxDQUFDO0FBQ3RKLE1BQU0sUUFBUSxHQUFjLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxnRkFBZ0YsRUFBRSxDQUFDO0FBQ2hLLE1BQU0sYUFBYSxHQUFjLEVBQUUsSUFBSSxFQUFFLGVBQWUsRUFBRSxHQUFHLEVBQUUsY0FBYyxFQUFFLFdBQVcs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LEdBQUcsNERBQTRELE9BQU8sYUFBYSxNQUFNLEVBQUUsQ0FBQztZQUN2RyxJQUFJLElBQUksQ0FBQyxNQUFNO2dCQUFFLE9BQU8sSUFBSSxhQUFhLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUN2RCxJQUFJLElBQUksQ0FBQyxZQUFZO2dCQUFFLE9BQU8sSUFBSSxxQkFBcUIsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQzNFLElBQUksSUFBSSxDQUFDLFNBQVM7Z0JBQUUsT0FBTyxJQUFJLFFBQVEsQ0FBQztZQUN4QyxPQUFPLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsQ0FBQztRQUN4QyxDQUFDO0lBQ0gsQ0FBQztBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuLyoqXG4gKiBEZXRlcm1pbmlzdGljIHJlZ2lzdHJ5IG9mIHBsYXRmb3JtIGRlcGxveSB0YXJnZXRzIOKAlCB0aGUgc291cmNlIG9mIHRydXRoIHRoZVxuICogYHByb3Zpc2lvbmAgYWR2aXNvciB1c2VzIHRvIGFzc2VtYmxlIHRoZSBFWEFDVCBkZXBsb3kgY29tbWFuZC4gVGhlIGFnZW50IGlzIGFcbiAqIHRoaW4gd3JhcHBlciBvdmVyIHRoZSBleGlzdGluZyBkZXBsb3kgc2NyaXB0czsgaXQgbmV2ZXIgcmVpbXBsZW1lbnRzXG4gKiBkZXBsb3ltZW50LCBvbmx5IHZhbGlkYXRlcyBpbnB1dHMgYW5kIGFzc2VtYmxlcyB0aGUgY29tbWFuZCB0byBydW4uXG4gKlxuICogS2VlcCB0aGlzIGluIGxvY2stc3RlcCB3aXRoIHRoZSBmbGFncyB0aGUgc2NyaXB0cyBhY2NlcHQg4oCUIGV2ZXJ5IHRhcmdldCdzXG4gKiBvcGVyYXRvciBlbnRyeXBvaW50IGlzIGBiaW4vc2V0dXAuc2hgIChkZXBsb3kvPHRhcmdldD4vYmluL3NldHVwLnNoKS5cbiAqL1xuXG5pbXBvcnQgeyBhc3NlcnRTaGVsbFNhZmUsIHNoZWxsUXVvdGUgfSBmcm9tICcuLi9jb25maWcvY2xpLmNvbnN0YW50cy5qcyc7XG5pbXBvcnQgeyByZXNvbHZlQXdzUmVnaW9uIH0gZnJvbSAnLi4vdXRpbHMvYXdzLWVudi5qcyc7XG5cbmV4cG9ydCB0eXBlIFRhcmdldElkID0gJ2RvY2tlcicgfCAnbWluaWt1YmUnIHwgJ2VjMicgfCAnZWtzJztcblxuLyoqIEEgc2luZ2xlIGlucHV0IHRoZSB1bmRlcmx5aW5nIGRlcGxveSBzY3JpcHQgYWNjZXB0cy4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSW5wdXRTcGVjIHtcbiAgLyoqIEZsYWcgbmFtZSBwYXNzZWQgdG8gdGhlIHNjcmlwdCAod2l0aG91dCB0aGUgbGVhZGluZyBgLS1gKS4gKi9cbiAgcmVhZG9ubHkgZmxhZzogc3RyaW5nO1xuICAvKiogS2V5IG9uIHRoZSBwcm92aXNpb24gcGFyYW1zIG9iamVjdC4gKi9cbiAgcmVhZG9ubHkga2V5OiBzdHJpbmc7XG4gIC8qKiBIdW1hbiBkZXNjcmlwdGlvbiDigJQgc2hvd24gd2hlbiBhIHJlcXVpcmVkIGlucHV0IGlzIG1pc3NpbmcuICovXG4gIHJlYWRvbmx5IGRlc2NyaXB0aW9uOiBzdHJpbmc7XG4gIC8qKiBTZWNyZXQg4oCUIG5ldmVyIHByaW50ZWQgaW4gdGhlIGFzc2VtYmxlZCBjb21tYW5kIChtYXNrZWQgYXMgYCoqKmApLiAqL1xuICByZWFkb25seSBzZWNyZXQ/OiBib29sZWFuO1xuICAvKiogQm9vbGVhbiBmbGFnIHdpdGggbm8gdmFsdWUgKGUuZy4gYC0tZW1haWxgKS4gKi9cbiAgcmVhZG9ubHkgYm9vbGVhbj86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGFyZ2V0U3BlYyB7XG4gIHJlYWRvbmx5IGlkOiBUYXJnZXRJZDtcbiAgcmVhZG9ubHkgbGFiZWw6IHN0cmluZztcbiAgLyoqIERpcmVjdG9yeSB0aGUgZW50cnlwb2ludCBydW5zIGZyb20gKHJlbGF0aXZlIHRvIHJlcG8gcm9vdCkuICovXG4gIHJlYWRvbmx5IGRpcjogc3RyaW5nO1xuICAvKiogRW50cnlwb2ludCBzY3JpcHQgKHJlbGF0aXZlIHRvIGBkaXJgKS4gKi9cbiAgcmVhZG9ubHkgZW50cnlwb2ludDogc3RyaW5nO1xuICAvKiogSW5wdXRzIHRoZSBzY3JpcHQgUkVRVUlSRVMg4oCUIHRoZSBhZHZpc29yIHJlcG9ydHMgYW55IHRoYXQgYXJlIG1pc3NpbmcuICovXG4gIHJlYWRvbmx5IHJlcXVpcmVkOiByZWFkb25seSBJbnB1dFNwZWNbXTtcbiAgLyoqIE9wdGlvbmFsIGlucHV0cywgcGFzc2VkIHRocm91Z2ggb25seSB3aGVuIHByb3ZpZGVkLiAqL1xuICByZWFkb25seSBvcHRpb25hbDogcmVhZG9ubHkgSW5wdXRTcGVjW107XG4gIC8qKlxuICAgKiBSZXBvIGZvbGRlcihzKSB0aGlzIHRhcmdldCdzIGRlcGxveSBuZWVkcywgZm9yIGEgc3BhcnNlIGAtLXJlcG9gIGJvb3RzdHJhcC5cbiAgICogQ29tYmluZWQgd2l0aCBDT01NT05fU1BBUlNFX1BBVEhTIGFuZCBhbnkgc2VsZWN0ZWQgbG9hZCBzdGVwcycgcGF0aHMuXG4gICAqL1xuICByZWFkb25seSBzcGFyc2VQYXRoczogcmVhZG9ubHkgc3RyaW5nW107XG4gIC8qKiBQb3N0LWRlcGxveSBzdGVwIHRvIHN1cmZhY2UgKHJlZ2lzdGVycyBhZG1pbiArIGxvYWRzIHBsdWdpbnMpLiAqL1xuICByZWFkb25seSBwb3N0RGVwbG95Pzogc3RyaW5nO1xuICAvKiogUm91Z2ggbW9udGhseSBjb3N0IChmcm9tIGRvY3MpLiAqL1xuICByZWFkb25seSBjb3N0OiBzdHJpbmc7XG4gIC8qKiBPbmUtbGluZSBcImJlc3QgZm9yXCIuICovXG4gIHJlYWRvbmx5IGJlc3RGb3I6IHN0cmluZztcbiAgLyoqIFdoYXQgdGhlIGRlcGxveSBjcmVhdGVzIOKAlCBzaG93biB3aGVuIGRlcGxveWluZyBzbyBcIkRlcGxveWluZ1wiIGlzbid0IG9wYXF1ZS4gKi9cbiAgcmVhZG9ubHkgZGVwbG95czogc3RyaW5nO1xuICAvKiogV2hhdCBhIHRlYXJkb3duIG9mIHRoaXMgdGFyZ2V0IGRlc3Ryb3lzIOKAlCBzaG93biBiZWZvcmUgYSAoZ2F0ZWQpIHRlYXJkb3duLiAqL1xuICByZWFkb25seSBkZXN0cm95czogc3RyaW5nO1xuICAvKipcbiAgICogSG9zdCBwb3J0cyB0aGUgZGVwbG95IGJpbmRzIOKAlCBhIEZBTExCQUNLIG9ubHkuIFRoZSBsaXZlIGxpc3QgaXMgREVSSVZFRCBmcm9tIHRoZVxuICAgKiBjbG9uZWQgZGVwbG95IHNvdXJjZSBhdCBydW50aW1lIChwb3J0cy50cyBgZGlzY292ZXJIb3N0UG9ydHNgKTogbG9jYWwgZnJvbVxuICAgKiBkb2NrZXItY29tcG9zZS55bWwncyBwdWJsaXNoZWQgcG9ydHMsIG1pbmlrdWJlIGZyb20gc2V0dXAuc2gncyBwb3J0LWZvcndhcmRzLiBUaGlzXG4gICAqIHN0YXRpYyBjb3B5IGlzIHVzZWQgb25seSB3aGVuIHRoYXQgc291cmNlIGNhbid0IGJlIHJlYWQuIEVtcHR5IGZvciByZW1vdGUgdGFyZ2V0c1xuICAgKiAoZWMyL2VrcyBiaW5kIG5vdGhpbmcgb24gdGhlIG9wZXJhdG9yJ3MgbWFjaGluZSkuXG4gICAqL1xuICByZWFkb25seSBob3N0UG9ydHM6IHJlYWRvbmx5IHsgc2VydmljZTogc3RyaW5nOyBwb3J0OiBudW1iZXIgfVtdO1xufVxuXG4vLyAtLS0gU2hhcmVkIGlucHV0IHNwZWNzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbmNvbnN0IERPTUFJTjogSW5wdXRTcGVjID0geyBmbGFnOiAnZG9tYWluJywga2V5OiAnZG9tYWluJywgZGVzY3JpcHRpb246ICdGdWxseS1xdWFsaWZpZWQgZG9tYWluIG5hbWUgKEFMQiBBQ00gY2VydCArIFNFUyBES0lNKScgfTtcbmNvbnN0IEhPU1RFRF9aT05FOiBJbnB1dFNwZWMgPSB7IGZsYWc6ICdob3N0ZWQtem9uZS1pZCcsIGtleTogJ2hvc3RlZFpvbmVJZCcsIGRlc2NyaXB0aW9uOiAnUHVibGljIFJvdXRlIDUzIGhvc3RlZCB6b25lIElEIGF1dGhvcml0YXRpdmUgZm9yIHRoZSBkb21haW4nIH07XG5jb25zdCBHSENSX1RPS0VOOiBJbnB1dFNwZWMgPSB7IGZsYWc6ICdnaGNyLXRva2VuJywga2V5OiAnZ2hjclRva2VuJywgZGVzY3JpcHRpb246ICdHaXRIdWIgUEFUIHdpdGggcmVhZDpwYWNrYWdlcyAoYXZvaWRzIGdoY3IuaW8gYW5vbnltb3VzIHJhdGUgbGltaXRzKScsIHNlY3JldDogdHJ1ZSB9O1xuY29uc3QgUkVHSU9OOiBJbnB1dFNwZWMgPSB7IGZsYWc6ICdyZWdpb24nLCBrZXk6ICdyZWdpb24nLCBkZXNjcmlwdGlvbjogJ0FXUyByZWdpb24nIH07XG5jb25zdCBERVBMT1lfTU9ERTogSW5wdXRTcGVjID0geyBmbGFnOiAnZGVwbG95LW1vZGUnLCBrZXk6ICdkZXBsb3lNb2RlJywgZGVzY3JpcHRpb246ICdwdWJsaWMgKGludGVybmV0LWZhY2luZyBBTEIpIG9yIHByaXZhdGUgKGludGVybmFsLCBkZWZhdWx0KScgfTtcbmNvbnN0IEtFWV9QQUlSOiBJbnB1dFNwZWMgPSB7IGZsYWc6ICdrZXktcGFpcicsIGtleTogJ2tleVBhaXInLCBkZXNjcmlwdGlvbjogJ0VDMiBrZXkgcGFpciBpbiB0aGUgcmVnaW9uIChicmVhay1nbGFzcyBzZXJpYWwgY29uc29sZTsgcm91dGluZSBhY2Nlc3MgaXMgU1NNKScgfTtcbmNvbnN0IElOU1RBTkNFX1RZUEU6IElucHV0U3BlYyA9IHsgZmxhZzogJ2luc3RhbmNlLXR5cGUnLCBrZXk6ICdpbnN0YW5jZVR5cGUnLCBkZXNjcmlwdGlvbjogJ0VDMiBpbnN0YW5jZSB0eXBlIChkZWZhdWx0IHQzLjJ4bGFyZ2UpJyB9O1xuLy8gZWMyIGRlcGxveS90ZWFyZG93biBzdGFjayBuYW1lIChDbG91ZEZvcm1hdGlvbikuIFRoZSBgc3RhY2tOYW1lYCBwYXJhbSBrZXkgaXMgYWxzbyByZXVzZWRcbi8vIGJ5IHRoZSB0ZWFyZG93biBwYXRoIGFzIHRoZSByZXNvdXJjZSBpZGVudGlmaWVyIChlYzIgc3RhY2sgLyBla3MgY2x1c3RlciBuYW1lKS5cbmNvbnN0IFNUQUNLX05BTUU6IElucHV0U3BlYyA9IHsgZmxhZzogJ3N0YWNrLW5hbWUnLCBrZXk6ICdzdGFja05hbWUnLCBkZXNjcmlwdGlvbjogJ0Nsb3VkRm9ybWF0aW9uIHN0YWNrIG5hbWUgKGRlZmF1bHQgcGlwZWxpbmUtYnVpbGRlcikg4oCUIHNldCB0byBydW4gYSBzZWNvbmQgZWMyIGVudmlyb25tZW50JyB9O1xuLy8gZWtzIGNsdXN0ZXIgbmFtZSAoZWtzY3RsKS4gU2V0IHRvIHJ1biBhIHNlY29uZCBFS1MgZW52aXJvbm1lbnQgaW4gb25lIGFjY291bnQuXG5jb25zdCBDTFVTVEVSX05BTUU6IElucHV0U3BlYyA9IHsgZmxhZzogJ2NsdXN0ZXItbmFtZScsIGtleTogJ2NsdXN0ZXJOYW1lJywgZGVzY3JpcHRpb246ICdFS1MgY2x1c3RlciBuYW1lIChkZWZhdWx0IHBpcGVsaW5lLWJ1aWxkZXIpJyB9O1xuLy8gQXV0by1pbml0IGlzIE9OIEJZIERFRkFVTFQgb24gdGhlIEFXUyB0YXJnZXRzIChlYzIgKyBla3Mgc2V0dXAuc2ggZGVmYXVsdCBBVVRPX0lOSVQ9dHJ1ZSksXG4vLyBzbyBgLS1uby1hdXRvLWluaXRgIGlzIHRoZSBsb2FkLWJlYXJpbmcgb3B0LW91dCBhbmQgYC0tYXV0by1pbml0YCBpcyBhIG5vLW9wIHJlYWZmaXJtIOKAlFxuLy8gbWlycm9ycyAtLWVtYWlsLy0tbm8tZW1haWwuIGVjMiBzZWxmLWluaXRzIG9uIHRoZSBpbnN0YW5jZSBvbiBmaXJzdCBib290OyBla3Mgc2VsZi1pbml0cyBpblxuLy8gc2V0dXAuc2gncyBmaW5hbCBwaGFzZSAob3ZlciBhIGt1YmVjdGwgcG9ydC1mb3J3YXJkKS4gbWluaWt1YmUvbG9jYWwgcnVuIGluaXQgdmlhIHByb3Zpc2lvbi5cbi8vIE5PVEU6IGAtLW5vLWF1dG8taW5pdGAncyBrZXkgKG5vQXV0b0luaXQpIGlzIE5PVCBkZXJpdmFibGUgZnJvbSBpdHMgZmxhZyB0aGUgd2F5IHRoZSBvdGhlclxuLy8gc3BlY3MnIGtleXMgYXJlIChjb21tYW5kZXIgZm9sZHMgLS14Ly0tbm8teCBpbnRvIGEgc2luZ2xlIGB4YCBvcHRpb24pOyBwcm92aXNpb24udHMgYXNzZW1ibGVzXG4vLyBib3RoIGtleXMgZXhwbGljaXRseSDigJQgc2VlIHRoZSBwYXJhbS1hc3NlbWJseSB0aGVyZS5cbmNvbnN0IEFVVE9fSU5JVDogSW5wdXRTcGVjID0geyBmbGFnOiAnYXV0by1pbml0Jywga2V5OiAnYXV0b0luaXQnLCBkZXNjcmlwdGlvbjogJ2VjMi9la3M6IHRoZSBkZXBsb3kgc2VsZi1ydW5zIGluaXQtcGxhdGZvcm0gKHJlZ2lzdGVyICsgYWxsIGxvYWRzKSDigJQgdGhlIERFRkFVTFQgb24gQVdTJywgYm9vbGVhbjogdHJ1ZSB9O1xuY29uc3QgTk9fQVVUT19JTklUOiBJbnB1dFNwZWMgPSB7IGZsYWc6ICduby1hdXRvLWluaXQnLCBrZXk6ICdub0F1dG9Jbml0JywgZGVzY3JpcHRpb246ICdlYzIvZWtzOiBza2lwIHRoZSBkZXBsb3ktbWFuYWdlZCBhdXRvLWluaXQgYW5kIHJ1biBpbml0LXBsYXRmb3JtIG1hbnVhbGx5IGluc3RlYWQnLCBib29sZWFuOiB0cnVlIH07XG4vLyBlYzIgb25seTogTEVBTiBkcm9wcyB0aGUgb3B0aW9uYWwgb2JzZXJ2YWJpbGl0eS9hZG1pbiBzZXJ2aWNlcyBzbyB0aGUgY29yZSBzdGFjayArXG4vLyBtZXNoIGZpdHMgYSB0My54bGFyZ2UgaW5zdGVhZCBvZiB0My4yeGxhcmdlLiBGbG93cyB0aHJvdWdoIHRoZSBDRk4gYExlYW5gIHBhcmFtIGludG9cbi8vIHRoZSBpbnN0YW5jZSdzIHN0YXJ0dXAuc2guIChtaW5pa3ViZSByZWFkcyBMRUFOIGFzIGFuIGVudiB2YXI7IGVrcyBkb2Vzbid0IHN1cHBvcnQgaXQuKVxuY29uc3QgTEVBTjogSW5wdXRTcGVjID0geyBmbGFnOiAnbGVhbicsIGtleTogJ2xlYW4nLCBkZXNjcmlwdGlvbjogJ2VjMjogdHJpbSBvcHRpb25hbCBvYnNlcnZhYmlsaXR5L2FkbWluIHNlcnZpY2VzIHNvIHRoZSBzdGFjayBmaXRzIGEgdDMueGxhcmdlIChwYWlyIHdpdGggLS1pbnN0YW5jZS10eXBlIHQzLnhsYXJnZSknLCBib29sZWFuOiB0cnVlIH07XG5cbi8vIFNFUyAvIGVtYWlsIGZhbWlseSDigJQgc2hhcmVkIGJ5IGVjMiArIGVrcy4gU0VTIGlzIHByb3Zpc2lvbmVkIEJZIERFRkFVTFRcbi8vIG9uIEFXUyBkZXBsb3lzOyBgLS1uby1lbWFpbGAgaXMgdGhlIG9wdC1vdXQgKGAtLWVtYWlsYCBpcyBhIGhhcm1sZXNzIG5vLW9wIGtlcHRcbi8vIGZvciBiYWNrLWNvbXBhdCkuXG5jb25zdCBFTUFJTDogcmVhZG9ubHkgSW5wdXRTcGVjW10gPSBbXG4gIHsgZmxhZzogJ2VtYWlsJywga2V5OiAnZW1haWwnLCBkZXNjcmlwdGlvbjogJ0VuYWJsZSBTRVMgdHJhbnNhY3Rpb25hbCBlbWFpbCAob24gYnkgZGVmYXVsdCBmb3IgQVdTKScsIGJvb2xlYW46IHRydWUgfSxcbiAgeyBmbGFnOiAnbm8tZW1haWwnLCBrZXk6ICdub0VtYWlsJywgZGVzY3JpcHRpb246ICdTa2lwIFNFUyAodHJhbnNhY3Rpb25hbCBlbWFpbCBpcyBwcm92aXNpb25lZCBieSBkZWZhdWx0KScsIGJvb2xlYW46IHRydWUgfSxcbiAgeyBmbGFnOiAnZW1haWwtZnJvbScsIGtleTogJ2VtYWlsRnJvbScsIGRlc2NyaXB0aW9uOiAnRnJvbSBhZGRyZXNzIChkZWZhdWx0IG5vcmVwbHlAPGRvbWFpbj4pJyB9LFxuICB7IGZsYWc6ICdlbWFpbC1mcm9tLW5hbWUnLCBrZXk6ICdlbWFpbEZyb21OYW1lJywgZGVzY3JpcHRpb246ICdEaXNwbGF5IG5hbWUgb24gb3V0Ym91bmQgZW1haWwnIH0sXG4gIHsgZmxhZzogJ2FsZXJ0LWVtYWlsJywga2V5OiAnYWxlcnRFbWFpbCcsIGRlc2NyaXB0aW9uOiAnU3Vic2NyaWJlIGFuIGFkZHJlc3MgdG8gdGhlIGJvdW5jZS9jb21wbGFpbnQgU05TIHRvcGljJyB9LFxuICB7IGZsYWc6ICduby1jcmVhdGUtc2VzLWlkZW50aXR5Jywga2V5OiAnbm9DcmVhdGVTZXNJZGVudGl0eScsIGRlc2NyaXB0aW9uOiAnU2tpcCBTRVMgaWRlbnRpdHkgY3JlYXRpb24gKGRvbWFpbiBhbHJlYWR5IHZlcmlmaWVkKScsIGJvb2xlYW46IHRydWUgfSxcbl07XG5cbi8vIC0tLSBUYXJnZXRzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuZXhwb3J0IGNvbnN0IFRBUkdFVFM6IFJlYWRvbmx5PFJlY29yZDxUYXJnZXRJZCwgVGFyZ2V0U3BlYz4+ID0ge1xuICBkb2NrZXI6IHtcbiAgICBpZDogJ2RvY2tlcicsXG4gICAgbGFiZWw6ICdMb2NhbCAoRG9ja2VyIENvbXBvc2UpJyxcbiAgICBkaXI6ICdkZXBsb3kvbG9jYWwvZG9ja2VyJyxcbiAgICBlbnRyeXBvaW50OiAnYmluL3NldHVwLnNoJyxcbiAgICBzcGFyc2VQYXRoczogWydkZXBsb3kvbG9jYWwvZG9ja2VyJ10sXG4gICAgcmVxdWlyZWQ6IFtdLFxuICAgIG9wdGlvbmFsOiBbXSxcbiAgICBwb3N0RGVwbG95OiAnLi9kZXBsb3kvYmluL2luaXQtcGxhdGZvcm0uc2ggZG9ja2VyJyxcbiAgICBjb3N0OiAnRnJlZScsXG4gICAgYmVzdEZvcjogJ0RldmVsb3BtZW50JyxcbiAgICBkZXBsb3lzOiAndGhlIHBsYXRmb3JtIGFzIGEgRG9ja2VyIENvbXBvc2Ugc3RhY2sg4oCUIGFuIG5naW54IFRMUyBwcm94eSwgdGhlIEFQSSBzZXJ2aWNlcyAocGxhdGZvcm0sIHBsdWdpbiwgcGlwZWxpbmUsIG1lc3NhZ2UsIHJlcG9ydGluZywgY29tcGxpYW5jZSwgcXVvdGEsIGJpbGxpbmcsIGltYWdlLXJlZ2lzdHJ5KSwgdGhlIGZyb250ZW5kLCBhbmQgcG9zdGdyZXMgKyBtb25nbyArIHJlZGlzLiBGaXJzdCBydW4gcHVsbHMgdGhlIGdoY3IuaW8gaW1hZ2VzIGFuZCBnZW5lcmF0ZXMgYSBsb2NhbCBUTFMgY2VydCAoYSBmZXcgbWludXRlcykuJyxcbiAgICBkZXN0cm95czogJ3N0b3BzIGFsbCBjb250YWluZXJzIOKAlCBkYXRhIHVuZGVyIGRlcGxveS9sb2NhbC9kb2NrZXIvZGF0YSBwZXJzaXN0cyBvbiBkaXNrIChkZWxldGUgaXQgbWFudWFsbHkgZm9yIGEgY2xlYW4gc2xhdGUpJyxcbiAgICAvLyBNaXJyb3JzIHRoZSBwdWJsaXNoZWQgcG9ydHMgaW4gZGVwbG95L2xvY2FsL2RvY2tlci9kb2NrZXItY29tcG9zZS55bWwuXG4gICAgaG9zdFBvcnRzOiBbXG4gICAgICB7IHNlcnZpY2U6ICduZ2lueCDigJQgSFRUUFMgZ2F0ZXdheSAoVUkvQVBJKScsIHBvcnQ6IDg0NDMgfSxcbiAgICAgIHsgc2VydmljZTogJ25naW54IOKAlCBIVFRQIHJlZGlyZWN0JywgcG9ydDogODA4MCB9LFxuICAgICAgeyBzZXJ2aWNlOiAncGdBZG1pbiAoUG9zdGdyZXMgVUkpJywgcG9ydDogNTQ4MCB9LFxuICAgICAgeyBzZXJ2aWNlOiAnTW9uZ28gRXhwcmVzcyAoTW9uZ28gVUkpJywgcG9ydDogMjcwODEgfSxcbiAgICAgIHsgc2VydmljZTogJ0RvY2tlciByZWdpc3RyeScsIHBvcnQ6IDUwMDAgfSxcbiAgICAgIHsgc2VydmljZTogJ0phZWdlciAodHJhY2luZyBVSSknLCBwb3J0OiAxNjY4NiB9LFxuICAgIF0sXG4gIH0sXG4gIG1pbmlrdWJlOiB7XG4gICAgaWQ6ICdtaW5pa3ViZScsXG4gICAgbGFiZWw6ICdNaW5pa3ViZSAobG9jYWwgS3ViZXJuZXRlcyknLFxuICAgIGRpcjogJ2RlcGxveS9sb2NhbC9taW5pa3ViZScsXG4gICAgZW50cnlwb2ludDogJ2Jpbi9zZXR1cC5zaCcsXG4gICAgc3BhcnNlUGF0aHM6IFsnZGVwbG95L2xvY2FsL21pbmlrdWJlJ10sXG4gICAgcmVxdWlyZWQ6IFtdLFxuICAgIG9wdGlvbmFsOiBbXSxcbiAgICBwb3N0RGVwbG95OiAnLi9kZXBsb3kvYmluL2luaXQtcGxhdGZvcm0uc2ggbWluaWt1YmUnLFxuICAgIGNvc3Q6ICdGcmVlJyxcbiAgICBiZXN0Rm9yOiAnTG9jYWwgS3ViZXJuZXRlcycsXG4gICAgZGVwbG95czogJ3RoZSBwbGF0Zm9ybSBvbnRvIGEgbG9jYWwgTWluaWt1YmUgY2x1c3RlciDigJQgdGhlIHNhbWUgc2VydmljZXMgYXMgS3ViZXJuZXRlcyBEZXBsb3ltZW50cy9TZXJ2aWNlcyBiZWhpbmQgYW4gaW5ncmVzcywgcGx1cyBpbi1jbHVzdGVyIHBvc3RncmVzICsgbW9uZ28gKyByZWRpcy4gRmlyc3QgcnVuIHB1bGxzIGltYWdlcywgYnVpbGRzIHRoZSBjbHVzdGVyLCBhbmQgZ2VuZXJhdGVzIGEgVExTIGNlcnQgKHNldmVyYWwgbWludXRlcykuJyxcbiAgICBkZXN0cm95czogJ3N0b3BzIHRoZSBtaW5pa3ViZSBzdGFjayDigJQgcGVyc2lzdGVudCB2b2x1bWVzIChQVkMgZGF0YSkgcmVtYWluIHVudGlsIHRoZSBjbHVzdGVyIGlzIGRlbGV0ZWQnLFxuICAgIC8vIE1pcnJvcnMgdGhlIGt1YmVjdGwgcG9ydC1mb3J3YXJkcyBzdGFydGVkIGluIGRlcGxveS9sb2NhbC9taW5pa3ViZS9iaW4vc2V0dXAuc2guXG4gICAgaG9zdFBvcnRzOiBbXG4gICAgICB7IHNlcnZpY2U6ICduZ2lueCDigJQgSFRUUFMgZ2F0ZXdheSAoVUkvQVBJKScsIHBvcnQ6IDg0NDMgfSxcbiAgICAgIHsgc2VydmljZTogJ01vbmdvIEV4cHJlc3MgKE1vbmdvIFVJKScsIHBvcnQ6IDgwODEgfSxcbiAgICAgIHsgc2VydmljZTogJ3BnQWRtaW4gKFBvc3RncmVzIFVJKScsIHBvcnQ6IDU0ODAgfSxcbiAgICBdLFxuICB9LFxuICBlYzI6IHtcbiAgICBpZDogJ2VjMicsXG4gICAgbGFiZWw6ICdBV1MgRUMyIChzaW5nbGUgTWluaWt1YmUgaW5zdGFuY2UgYmVoaW5kIGFuIEFMQiknLFxuICAgIGRpcjogJ2RlcGxveS9hd3MvZWMyJyxcbiAgICBlbnRyeXBvaW50OiAnYmluL3NldHVwLnNoJyxcbiAgICBzcGFyc2VQYXRoczogWydkZXBsb3kvYXdzL2VjMiddLFxuICAgIHJlcXVpcmVkOiBbS0VZX1BBSVIsIERPTUFJTiwgSE9TVEVEX1pPTkVdLFxuICAgIG9wdGlvbmFsOiBbUkVHSU9OLCBERVBMT1lfTU9ERSwgR0hDUl9UT0tFTiwgSU5TVEFOQ0VfVFlQRSwgU1RBQ0tfTkFNRSwgQVVUT19JTklULCBOT19BVVRPX0lOSVQsIExFQU4sIC4uLkVNQUlMXSxcbiAgICBwb3N0RGVwbG95OiAnLi9kZXBsb3kvYmluL2luaXQtcGxhdGZvcm0uc2ggZWMyICAjIGF1dG8tcnVucyBvbiB0aGUgaW5zdGFuY2UgYnkgZGVmYXVsdDsgLS1uby1hdXRvLWluaXQgdG8gZG8gaXQgbWFudWFsbHknLFxuICAgIGNvc3Q6ICd+JDE0MC0yNjUvbW8nLFxuICAgIGJlc3RGb3I6ICdEZXYgLyBzdGFnaW5nJyxcbiAgICBkZXBsb3lzOiAndGhlIHBsYXRmb3JtIG9uIGEgc2luZ2xlIEVDMiBpbnN0YW5jZSB2aWEgQ2xvdWRGb3JtYXRpb24g4oCUIGEgVlBDLCB0aGUgaW5zdGFuY2UgKHJ1bm5pbmcgdGhlIE1pbmlrdWJlIHN0YWNrKSwgYW4gQUxCLCBhIFJvdXRlIDUzIHJlY29yZCArIEFDTSBjZXJ0IGZvciB0aGUgZG9tYWluLCBhbmQgKGJ5IGRlZmF1bHQpIFNFUyBlbWFpbC4gVGhlIGluc3RhbmNlIHB1bGxzIGltYWdlcyBvbiBmaXJzdCBib290LicsXG4gICAgZGVzdHJveXM6ICdERUxFVEVTIHRoZSBDbG91ZEZvcm1hdGlvbiBzdGFjazogdGhlIFZQQywgRUMyIGluc3RhbmNlLCBhbmQgaXRzIEVCUyBkYXRhIHZvbHVtZSAoZGF0YWJhc2VzLCByZWdpc3RyeSwgcGx1Z2luIGJ1aWxkcykuIElycmV2ZXJzaWJsZS4nLFxuICAgIGhvc3RQb3J0czogW10sIC8vIHJlbW90ZSAoQVdTKSDigJQgYmluZHMgbm90aGluZyBvbiB0aGUgb3BlcmF0b3IncyBtYWNoaW5lXG4gIH0sXG4gIGVrczoge1xuICAgIGlkOiAnZWtzJyxcbiAgICBsYWJlbDogJ0FXUyBFS1MgQXV0byBNb2RlIChtYW5hZ2VkIEt1YmVybmV0ZXMpJyxcbiAgICBkaXI6ICdkZXBsb3kvYXdzL2VrcycsXG4gICAgZW50cnlwb2ludDogJ2Jpbi9zZXR1cC5zaCcsXG4gICAgc3BhcnNlUGF0aHM6IFsnZGVwbG95L2F3cy9la3MnXSxcbiAgICByZXF1aXJlZDogW0RPTUFJTiwgSE9TVEVEX1pPTkVdLFxuICAgIG9wdGlvbmFsOiBbUkVHSU9OLCBERVBMT1lfTU9ERSwgR0hDUl9UT0tFTiwgQ0xVU1RFUl9OQU1FLCBBVVRPX0lOSVQsIE5PX0FVVE9fSU5JVCwgLi4uRU1BSUxdLFxuICAgIHBvc3REZXBsb3k6ICcuL2RlcGxveS9iaW4vaW5pdC1wbGF0Zm9ybS5zaCBla3MgICMgYXV0by1ydW5zIGF0IHRoZSBlbmQgb2Ygc2V0dXAuc2ggYnkgZGVmYXVsdDsgLS1uby1hdXRvLWluaXQgdG8gZG8gaXQgbWFudWFsbHknLFxuICAgIGNvc3Q6ICd+JDE1MC00MDAvbW8nLFxuICAgIGJlc3RGb3I6ICdQcm9kdWN0aW9uJyxcbiAgICBkZXBsb3lzOiAndGhlIHBsYXRmb3JtIG9uIEFtYXpvbiBFS1MgQXV0byBNb2RlIOKAlCBhbiBBV1MtbWFuYWdlZCBLdWJlcm5ldGVzIGNsdXN0ZXIgKEthcnBlbnRlci1zY2FsZWQgRUMyIG5vZGVzLCBBV1MgTG9hZCBCYWxhbmNlciBDb250cm9sbGVyLCBFQlMvRUZTIENTSSksIHRoZSBzYW1lIEt1YmVybmV0ZXMgd29ya2xvYWRzIGFzIHRoZSBvdGhlciBrOHMgdGFyZ2V0cywgYW4gQUxCIEluZ3Jlc3MgKyBBQ00gZm9yIHRoZSBkb21haW4sIGFuZCAoYnkgZGVmYXVsdCkgU0VTIGVtYWlsLiBQbHVnaW4gYnVpbGRzIHJ1biBvbiB0aGUgaW4tY2x1c3RlciByb290bGVzcyBidWlsZGtpdGQgKEVDMiBub2RlcyBhbGxvdyBpdCkuJyxcbiAgICBkZXN0cm95czogJ1J1bnMgYmluL3NodXRkb3duLnNoOiBERUxFVEVTIHRoZSBFS1MgY2x1c3RlciArIG5vZGVzIChla3NjdGwpLCB0aGUgRUZTIGZpbGVzeXN0ZW0sIGFuZCDigJQgd2hlbiAtLWRvbWFpbiBpcyBzZXQg4oCUIHRoZSBBQ00gY2VydCArIFJvdXRlIDUzIGFsaWFzLiBFQlMgdm9sdW1lcyBvbiB0aGUgUmV0YWluIFN0b3JhZ2VDbGFzcyBhcmUgTk9UIGF1dG8tZGVsZXRlZCAocmVwb3J0ZWQgYXQgdGhlIGVuZCkuIElycmV2ZXJzaWJsZS4nLFxuICAgIGhvc3RQb3J0czogW10sIC8vIHJlbW90ZSAoQVdTKSDigJQgYmluZHMgbm90aGluZyBvbiB0aGUgb3BlcmF0b3IncyBtYWNoaW5lXG4gIH0sXG59O1xuXG5leHBvcnQgY29uc3QgVEFSR0VUX0lEUzogcmVhZG9ubHkgVGFyZ2V0SWRbXSA9IFsnZG9ja2VyJywgJ21pbmlrdWJlJywgJ2VjMicsICdla3MnXTtcblxuZXhwb3J0IGZ1bmN0aW9uIGlzVGFyZ2V0SWQodmFsdWU6IHVua25vd24pOiB2YWx1ZSBpcyBUYXJnZXRJZCB7XG4gIHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnICYmIChUQVJHRVRfSURTIGFzIHJlYWRvbmx5IHN0cmluZ1tdKS5pbmNsdWRlcyh2YWx1ZSk7XG59XG5cbi8vIC0tLSBTcGFyc2UgYm9vdHN0cmFwIHBhdGhzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuLyoqXG4gKiBGb2xkZXJzIGV2ZXJ5IGAtLXJlcG9gIGJvb3RzdHJhcCBuZWVkcyByZWdhcmRsZXNzIG9mIHRhcmdldDogdGhlIG9yY2hlc3RyYXRpb25cbiAqIHNjcmlwdHMuIEVhY2ggdGFyZ2V0J3Mgc2V0dXAuc2ggKyBpbml0LXBsYXRmb3JtLnNoIGxpdmUgaW4gLyBkcml2ZSB0aGVzZS5cbiAqIERlbGliZXJhdGVseSBtaW5pbWFsIOKAlCBoZWF2aWVyIGZvbGRlcnMgKHBsdWdpbnMvY29tcGxpYW5jZS9zYW1wbGVzKSBhcmUgcHVsbGVkXG4gKiBpbiBvbmx5IHdoZW4gdGhlaXIgcG9zdC1pbnN0YWxsIG9wdGlvbiBpcyBzZWxlY3RlZCAoc2VlIExPQURfU1RFUFMpLlxuICovXG5leHBvcnQgY29uc3QgQ09NTU9OX1NQQVJTRV9QQVRIUzogcmVhZG9ubHkgc3RyaW5nW10gPSBbJ2RlcGxveS9iaW4nXTtcblxuLyoqXG4gKiBUaGUgbWFuYWdlZCB0b29sY2hhaW4gcmVsZWFzZSdzIGJ1aWxkIGlucHV0czogaW5pdC1wbGF0Zm9ybS5zaCBhbHdheXMgYnVpbGRzXG4gKiBgYnVpbGQtcGx1Z2luLWltYWdlcy5zaCAtLW9ubHkgcGlwZWxpbmUtYm9vdHN0cmFwLGNkay1zeW50aGAgKGFmdGVyIHRoZSBgX2Jhc2VgXG4gKiBpbWFnZXMpLCBhbmQgYC0tYnVpbGQtYm9vdHN0cmFwYCBydW5zIGAtLW9ubHkgcGlwZWxpbmUtYm9vdHN0cmFwYCwgc28gZXZlcnlcbiAqIGNsb25lIHRoYXQgcnVucyBlaXRoZXIgbmVlZHMgdGhlc2UgZm9sZGVycyDigJQgd2l0aCBvciB3aXRob3V0IGAtLXdpdGgtcGx1Z2luc2AuXG4gKiBUaGUgcmVsZWFzZSBoYXMgaXRzIG93biBzb3VyY2Ugcm9vdCwgYGRlcGxveS90b29sY2hhaW5gIChib3RoIGhhbHZlcyksIGJlc2lkZVxuICogdGhlIHBsdWdpbiBjYXRhbG9nOyBvZiB0aGUgY2F0YWxvZyBpdCBuZWVkcyBvbmx5IHRoZSBgX2Jhc2VgIGltYWdlcy5cbiAqL1xuZXhwb3J0IGNvbnN0IFRPT0xDSEFJTl9TUEFSU0VfUEFUSFM6IHJlYWRvbmx5IHN0cmluZ1tdID0gW1xuICAnZGVwbG95L3BsdWdpbnMvX2Jhc2UnLFxuICAnZGVwbG95L3Rvb2xjaGFpbicsXG5dO1xuXG4vKipcbiAqIE9wdC1pbiBwb3N0LWluc3RhbGwgbG9hZCBzdGVwcy4gRWFjaCBtYXBzIGEgcHJvdmlzaW9uIGAtLXdpdGgtKmAgZmxhZyB0byB0aGVcbiAqIGluaXQtcGxhdGZvcm0gZW52IHZhciB0aGF0IGVuYWJsZXMgaXQgQU5EIHRoZSByZXBvIGZvbGRlcihzKSBpdCByZWFkcyDigJQgc28gdGhlXG4gKiBzcGFyc2UgY2hlY2tvdXQgZ3Jvd3MgZXhhY3RseSB3aXRoIHRoZSBzZWxlY3RlZCBvcHRpb25zLlxuICovXG5leHBvcnQgY29uc3QgTE9BRF9TVEVQUyA9IFtcbiAgLy8gVGhlIGNhdGFsb2cuIFRoZSB0b29sY2hhaW4gcmVsZWFzZSAoZGVwbG95L3Rvb2xjaGFpbikgYW5kIHRoZSBfYmFzZSBpbWFnZXMgaXRcbiAgLy8gYnVpbGRzIG9uIGFyZSBhbHdheXMgaW4gdGhlIGNsb25lIChUT09MQ0hBSU5fU1BBUlNFX1BBVEhTKS5cbiAgeyBpZDogJ3BsdWdpbnMnLCBmbGFnOiAnd2l0aFBsdWdpbnMnLCBlbnY6ICdMT0FEX1BMVUdJTlMnLCBwYXRoczogWydkZXBsb3kvcGx1Z2lucyddIH0sXG4gIHsgaWQ6ICdjb21wbGlhbmNlJywgZmxhZzogJ3dpdGhDb21wbGlhbmNlJywgZW52OiAnTE9BRF9DT01QTElBTkNFJywgcGF0aHM6IFsnZGVwbG95L2NvbXBsaWFuY2UnXSB9LFxuICB7IGlkOiAnc2FtcGxlcycsIGZsYWc6ICd3aXRoU2FtcGxlcycsIGVudjogJ0xPQURfVEVNUExBVEVTJywgcGF0aHM6IFsnZGVwbG95L3NhbXBsZXMnXSB9LFxuXSBhcyBjb25zdDtcblxuZXhwb3J0IHR5cGUgTG9hZFN0ZXBJZCA9ICh0eXBlb2YgTE9BRF9TVEVQUylbbnVtYmVyXVsnaWQnXTtcblxuLyoqXG4gKiBUaGUgZGUtZHVwbGljYXRlZCBzZXQgb2Ygc3BhcnNlIHBhdGhzIGZvciBhIHRhcmdldCBwbHVzIHRoZSBlbmFibGVkIGxvYWRcbiAqIHN0ZXBzOiBjb21tb24gYmFzZSDiiKogdGFyZ2V0IGZvbGRlcihzKSDiiKogdGhlIHRvb2xjaGFpbiBidWlsZCBpbnB1dHMg4oiqIGVhY2hcbiAqIGVuYWJsZWQgc3RlcCdzIGZvbGRlcihzKS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNwYXJzZVBhdGhzRm9yKHRhcmdldDogVGFyZ2V0SWQsIGVuYWJsZWRMb2FkSWRzOiByZWFkb25seSBzdHJpbmdbXSk6IHN0cmluZ1tdIHtcbiAgY29uc3QgcGF0aHMgPSBuZXcgU2V0PHN0cmluZz4oQ09NTU9OX1NQQVJTRV9QQVRIUyk7XG4gIGZvciAoY29uc3QgcCBvZiBUQVJHRVRTW3RhcmdldF0uc3BhcnNlUGF0aHMpIHBhdGhzLmFkZChwKTtcbiAgZm9yIChjb25zdCBwIG9mIFRPT0xDSEFJTl9TUEFSU0VfUEFUSFMpIHBhdGhzLmFkZChwKTtcbiAgZm9yIChjb25zdCBzdGVwIG9mIExPQURfU1RFUFMpIHtcbiAgICBpZiAoZW5hYmxlZExvYWRJZHMuaW5jbHVkZXMoc3RlcC5pZCkpIGZvciAoY29uc3QgcCBvZiBzdGVwLnBhdGhzKSBwYXRocy5hZGQocCk7XG4gIH1cbiAgcmV0dXJuIFsuLi5wYXRoc107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXNzZW1ibGVSZXN1bHQge1xuICAvKiogVGhlIGV4YWN0IGNvbW1hbmQgdG8gcnVuIOKAlCBzZWNyZXRzIG1hc2tlZCBhcyBgKioqYC4gKi9cbiAgcmVhZG9ubHkgY29tbWFuZDogc3RyaW5nO1xuICAvKiogUmVxdWlyZWQgaW5wdXRzIHRoYXQgd2VyZSBub3Qgc3VwcGxpZWQuICovXG4gIHJlYWRvbmx5IG1pc3Npbmc6IHJlYWRvbmx5IElucHV0U3BlY1tdO1xufVxuXG4vKipcbiAqIFF1b3RlIG9ubHkgd2hlbiB0aGUgdmFsdWUgd291bGQgb3RoZXJ3aXNlIGJlIHdvcmQtc3BsaXQgb3IgbWlzLXBhcnNlZCBieSB0aGVcbiAqIHNoZWxsICh3aGl0ZXNwYWNlIG9yIGVtYmVkZGVkIHF1b3RlcykuIGBhc3NlcnRTaGVsbFNhZmVgIGFscmVhZHkgcmVqZWN0cyB0aGVcbiAqIGRhbmdlcm91cyBtZXRhY2hhcmFjdGVycywgc28gc2ltcGxlIHRva2VucyBzdGF5IHVucXVvdGVkIGZvciByZWFkYWJpbGl0eS5cbiAqL1xuZnVuY3Rpb24gbWF5YmVTaGVsbFF1b3RlKHZhbHVlOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gL1tcXHMnXCJdLy50ZXN0KHZhbHVlKSA/IHNoZWxsUXVvdGUodmFsdWUpIDogdmFsdWU7XG59XG5cbi8qKlxuICogQXNzZW1ibGUgdGhlIGRlcGxveSBjb21tYW5kIGZvciBhIHRhcmdldCBmcm9tIHRoZSBwcm92aWRlZCBwYXJhbXMuIFB1cmUgYW5kXG4gKiBkZXRlcm1pbmlzdGljIOKAlCBubyBzaGVsbCwgbm8gTExNLiBNaXNzaW5nIHJlcXVpcmVkIGlucHV0cyBhcmUgcmVwb3J0ZWQgKG5ldmVyXG4gKiBndWVzc2VkKS4gQnkgZGVmYXVsdCBzZWNyZXRzIGFyZSBtYXNrZWQgKGAqKipgKSBmb3IgRElTUExBWTsgcGFzcyBgbWFzazogZmFsc2VgXG4gKiB0byBidWlsZCB0aGUgcmVhbCBjb21tYW5kIGZvciBFWEVDVVRJT04g4oCUIHRoYXQgc3RyaW5nIG11c3QgbmV2ZXIgYmUgbG9nZ2VkIG9yXG4gKiBzaG93biB0byB0aGUgbW9kZWwuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhc3NlbWJsZUNvbW1hbmQoXG4gIHRhcmdldDogVGFyZ2V0U3BlYyxcbiAgcGFyYW1zOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbiAgb3B0czogeyBtYXNrPzogYm9vbGVhbiB9ID0ge30sXG4pOiBBc3NlbWJsZVJlc3VsdCB7XG4gIGNvbnN0IG1hc2sgPSBvcHRzLm1hc2sgPz8gdHJ1ZTtcbiAgY29uc3QgcHJvdmlkZWQgPSAoc3BlYzogSW5wdXRTcGVjKTogYm9vbGVhbiA9PiB7XG4gICAgY29uc3QgdiA9IHBhcmFtc1tzcGVjLmtleV07XG4gICAgcmV0dXJuIHYgIT09IHVuZGVmaW5lZCAmJiB2ICE9PSAnJyAmJiB2ICE9PSBmYWxzZTtcbiAgfTtcblxuICBjb25zdCBtaXNzaW5nID0gdGFyZ2V0LnJlcXVpcmVkLmZpbHRlcigoc3BlYykgPT4gIXByb3ZpZGVkKHNwZWMpKTtcblxuICBjb25zdCBwYXJ0czogc3RyaW5nW10gPSBbYGNkICR7dGFyZ2V0LmRpcn0gJiYgYmFzaCAke3RhcmdldC5lbnRyeXBvaW50fWBdO1xuICBmb3IgKGNvbnN0IHNwZWMgb2YgWy4uLnRhcmdldC5yZXF1aXJlZCwgLi4udGFyZ2V0Lm9wdGlvbmFsXSkge1xuICAgIGlmICghcHJvdmlkZWQoc3BlYykpIGNvbnRpbnVlO1xuICAgIGlmIChzcGVjLmJvb2xlYW4pIHtcbiAgICAgIHBhcnRzLnB1c2goYC0tJHtzcGVjLmZsYWd9YCk7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgY29uc3QgcmF3ID0gU3RyaW5nKHBhcmFtc1tzcGVjLmtleV0pO1xuICAgIC8vIFRoZSBhc3NlbWJsZWQgY29tbWFuZCBpcyBleGVjdXRlZCB2aWEgYSBzaGVsbCAocnVuU2NyaXB0KSwgc28gYSBwYXJhbVxuICAgIC8vIHZhbHVlIGNhcnJ5aW5nIHNoZWxsIG1ldGFjaGFyYWN0ZXJzIHdvdWxkIGJlIGNvbW1hbmQgaW5qZWN0aW9uLiBWYWxpZGF0ZVxuICAgIC8vIHRoZSBSRUFMIHZhbHVlIGV2ZW4gd2hlbiBtYXNraW5nIGZvciBkaXNwbGF5IOKAlCB0aGUgZXhlY3V0ZWQgY29tbWFuZCB1c2VzXG4gICAgLy8gdGhlIHVubWFza2VkIHZhbHVlLiBSZWRhY3Qgc2VjcmV0cyBzbyB0aGUgZXJyb3IgbmV2ZXIgZWNob2VzIGEgdG9rZW4uXG4gICAgYXNzZXJ0U2hlbGxTYWZlKHJhdywgYC0tJHtzcGVjLmZsYWd9YCwgeyByZWRhY3RWYWx1ZTogc3BlYy5zZWNyZXQgfSk7XG4gICAgLy8gYXNzZXJ0U2hlbGxTYWZlIHN0aWxsIHBlcm1pdHMgc3BhY2VzIGFuZCBxdW90ZXMgKGUuZy4gLS1lbWFpbC1mcm9tLW5hbWVcbiAgICAvLyBcIlBpcGVsaW5lIEJ1aWxkZXJcIiwgb3IgTydCcmllbiksIHdoaWNoIHdvdWxkIHdvcmQtc3BsaXQgd2hlbiBlbWl0dGVkIGJhcmU7XG4gICAgLy8gcXVvdGUgdGhvc2Ugc28gdGhlIHZhbHVlIHJlYWNoZXMgdGhlIHNjcmlwdCBhcyBhIHNpbmdsZSBhcmd1bWVudC5cbiAgICBjb25zdCB2YWx1ZSA9IHNwZWMuc2VjcmV0ICYmIG1hc2sgPyAnKioqJyA6IG1heWJlU2hlbGxRdW90ZShyYXcpO1xuICAgIHBhcnRzLnB1c2goYC0tJHtzcGVjLmZsYWd9ICR7dmFsdWV9YCk7XG4gIH1cblxuICByZXR1cm4geyBjb21tYW5kOiBwYXJ0cy5qb2luKCcgXFxcXFxcbiAgJyksIG1pc3NpbmcgfTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUZWFyZG93blJlc3VsdCB7XG4gIC8qKiBUaGUgZXhhY3QgdGVhcmRvd24gY29tbWFuZCB0byBydW4uICovXG4gIHJlYWRvbmx5IGNvbW1hbmQ6IHN0cmluZztcbiAgLyoqIFdoZXRoZXIgdGhpcyB0ZWFyZG93biBpcnJldmVyc2libHkgZGVzdHJveXMgZGF0YSAoQVdTIHRhcmdldHMpLiAqL1xuICByZWFkb25seSBkZXN0cnVjdGl2ZTogYm9vbGVhbjtcbn1cblxuLyoqIENsb3VkRm9ybWF0aW9uIHN0YWNrIG5hbWUgdGhlIEVDMiBzZXR1cC5zaCBkZWZhdWx0cyB0by4gKi9cbmNvbnN0IERFRkFVTFRfRUMyX1NUQUNLID0gJ3BpcGVsaW5lLWJ1aWxkZXInO1xuLyoqIEVLUyBjbHVzdGVyIG5hbWUgZWtzY3RsIGRlZmF1bHRzIHRvLiAqL1xuY29uc3QgREVGQVVMVF9FS1NfQ0xVU1RFUiA9ICdwaXBlbGluZS1idWlsZGVyJztcblxuLyoqXG4gKiBBc3NlbWJsZSB0aGUgdGVhcmRvd24gY29tbWFuZCBmb3IgYSB0YXJnZXQuIFB1cmUgYW5kIGRldGVybWluaXN0aWMg4oCUIG1pcnJvcnNcbiAqIGBhc3NlbWJsZUNvbW1hbmRgIGZvciB0aGUgZGVzdHJveSBwYXRoLiBsb2NhbC9taW5pa3ViZSBTVE9QIHRoZSBzdGFja1xuICogKG5vbi1kZXN0cnVjdGl2ZSDigJQgb24tZGlzayAvIFBWQyBkYXRhIHN1cnZpdmVzKTsgZWMyIERFTEVURXMgaXRzIENsb3VkRm9ybWF0aW9uXG4gKiBzdGFjayBhbmQgZWtzIERFTEVURXMgaXRzIGNsdXN0ZXIgKGVrc2N0bCkg4oCUIGJvdGggaXJyZXZlcnNpYmxlLiBFQzIgYGRlbGV0ZS1zdGFja2BcbiAqIGFuZCBgZWtzY3RsIGRlbGV0ZSBjbHVzdGVyYCBoYXZlIG5vIG5hdGl2ZSBwcm9tcHQsIHdoaWNoIGlzIGV4YWN0bHkgd2h5IHRoZSBhZ2VudCdzXG4gKiB0eXBlZC1jb25maXJtYXRpb24gZ2F0ZSBpcyBtYW5kYXRvcnkgdGhlcmUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0ZWFyZG93bkNvbW1hbmQoXG4gIHRhcmdldDogVGFyZ2V0SWQsXG4gIG9wdHM6IHsgc3RhY2tOYW1lPzogc3RyaW5nOyBjbHVzdGVyTmFtZT86IHN0cmluZzsgcmVnaW9uPzogc3RyaW5nOyBkb21haW4/OiBzdHJpbmc7IGhvc3RlZFpvbmVJZD86IHN0cmluZzsgYXNzdW1lWWVzPzogYm9vbGVhbiB9ID0ge30sXG4pOiBUZWFyZG93blJlc3VsdCB7XG4gIGNvbnN0IHJlZ2lvbiA9IHJlc29sdmVBd3NSZWdpb24ob3B0cy5yZWdpb24pO1xuICAvLyBBbnl0aGluZyBmbG93aW5nIHVucXVvdGVkIGludG8gYSBzaGVsbC1leGVjdXRlZCB0ZWFyZG93biBjb21tYW5kIGlzIHJlamVjdGVkXG4gIC8vIGZvciBzaGVsbCBtZXRhY2hhcmFjdGVycyAobWlycm9ycyBhc3NlbWJsZUNvbW1hbmQpLlxuICBhc3NlcnRTaGVsbFNhZmUocmVnaW9uLCAncmVnaW9uJyk7XG4gIGlmIChvcHRzLnN0YWNrTmFtZSkgYXNzZXJ0U2hlbGxTYWZlKG9wdHMuc3RhY2tOYW1lLCAnc3RhY2stbmFtZScpO1xuICBpZiAob3B0cy5jbHVzdGVyTmFtZSkgYXNzZXJ0U2hlbGxTYWZlKG9wdHMuY2x1c3Rlck5hbWUsICdjbHVzdGVyLW5hbWUnKTtcbiAgaWYgKG9wdHMuZG9tYWluKSBhc3NlcnRTaGVsbFNhZmUob3B0cy5kb21haW4sICdkb21haW4nKTtcbiAgaWYgKG9wdHMuaG9zdGVkWm9uZUlkKSBhc3NlcnRTaGVsbFNhZmUob3B0cy5ob3N0ZWRab25lSWQsICdob3N0ZWQtem9uZS1pZCcpO1xuICBzd2l0Y2ggKHRhcmdldCkge1xuICAgIGNhc2UgJ2RvY2tlcic6XG4gICAgICByZXR1cm4geyBjb21tYW5kOiAnY2QgZGVwbG95L2xvY2FsL2RvY2tlciAmJiBiYXNoIGJpbi9zaHV0ZG93bi5zaCcsIGRlc3RydWN0aXZlOiBmYWxzZSB9O1xuICAgIGNhc2UgJ21pbmlrdWJlJzpcbiAgICAgIHJldHVybiB7IGNvbW1hbmQ6ICdjZCBkZXBsb3kvbG9jYWwvbWluaWt1YmUgJiYgYmFzaCBiaW4vc2h1dGRvd24uc2gnLCBkZXN0cnVjdGl2ZTogZmFsc2UgfTtcbiAgICBjYXNlICdlYzInOiB7XG4gICAgICBjb25zdCBzdGFjayA9IG9wdHMuc3RhY2tOYW1lIHx8IERFRkFVTFRfRUMyX1NUQUNLO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgY29tbWFuZDpcbiAgICAgICAgICBgYXdzIGNsb3VkZm9ybWF0aW9uIGRlbGV0ZS1zdGFjayAtLXN0YWNrLW5hbWUgJHtzdGFja30gLS1yZWdpb24gJHtyZWdpb259ICYmIGAgK1xuICAgICAgICAgIGBhd3MgY2xvdWRmb3JtYXRpb24gd2FpdCBzdGFjay1kZWxldGUtY29tcGxldGUgLS1zdGFjay1uYW1lICR7c3RhY2t9IC0tcmVnaW9uICR7cmVnaW9ufWAsXG4gICAgICAgIGRlc3RydWN0aXZlOiB0cnVlLFxuICAgICAgfTtcbiAgICB9XG4gICAgY2FzZSAnZWtzJzoge1xuICAgICAgLy8gZWtzIHRlYXJzIGRvd24gdmlhIGJpbi9zaHV0ZG93bi5zaCAobGlrZSBsb2NhbC9taW5pa3ViZSB1c2UgYmluL3NodXRkb3duLnNoKTpcbiAgICAgIC8vIGl0IGRlbGV0ZXMgdGhlIGNsdXN0ZXIgQU5EIHRoZSByZXNvdXJjZXMgZWtzY3RsIGFsb25lIHdvdWxkIG9ycGhhbiDigJQgdGhlIEVGU1xuICAgICAgLy8gZmlsZXN5c3RlbSBhbmQsIHdoZW4gLS1kb21haW4gaXMgZ2l2ZW4sIHRoZSBBQ00gY2VydCArIFJvdXRlIDUzIGFsaWFzLiBUaGVcbiAgICAgIC8vIGFnZW50J3MgdHlwZWQtY29uZmlybWF0aW9uIGdhdGUgYWxyZWFkeSByYW4sIHNvIHBhc3MgLS15ZXMgdG8gc2tpcCB0aGVcbiAgICAgIC8vIHNjcmlwdCdzIG93biBwcm9tcHQuXG4gICAgICBjb25zdCBjbHVzdGVyID0gb3B0cy5jbHVzdGVyTmFtZSB8fCBERUZBVUxUX0VLU19DTFVTVEVSO1xuICAgICAgbGV0IGNvbW1hbmQgPSBgY2QgZGVwbG95L2F3cy9la3MgJiYgYmFzaCBiaW4vc2h1dGRvd24uc2ggLS1jbHVzdGVyLW5hbWUgJHtjbHVzdGVyfSAtLXJlZ2lvbiAke3JlZ2lvbn1gO1xuICAgICAgaWYgKG9wdHMuZG9tYWluKSBjb21tYW5kICs9IGAgLS1kb21haW4gJHtvcHRzLmRvbWFpbn1gO1xuICAgICAgaWYgKG9wdHMuaG9zdGVkWm9uZUlkKSBjb21tYW5kICs9IGAgLS1ob3N0ZWQtem9uZS1pZCAke29wdHMuaG9zdGVkWm9uZUlkfWA7XG4gICAgICBpZiAob3B0cy5hc3N1bWVZZXMpIGNvbW1hbmQgKz0gJyAtLXllcyc7XG4gICAgICByZXR1cm4geyBjb21tYW5kLCBkZXN0cnVjdGl2ZTogdHJ1ZSB9O1xuICAgIH1cbiAgfVxufVxuIl19
|
package/dist/cli.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.d.ts","sources":["../src/cli.ts"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sources":["../src/cli.ts"],"names":[],"mappings":";AAyDA;;GAEG;AACH,UAAU,UAAU;IAClB;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IAExB;;;OAGG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;IAEhB;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB;;;OAGG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;IAEhB;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,wGAAwG;AACxG,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAEpD;AAyVD;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,OAAO,GAAE,UAAe,GAAG,IAAI,CA0D5D;AAiDD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,IAAI,CAAC,OAAO,GAAE,UAAe,GAAG,IAAI,CA0BnD"}
|