@cdktn/provider-project 0.7.32 → 0.7.34

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/.jsii CHANGED
@@ -100,7 +100,7 @@
100
100
  },
101
101
  "name": "@cdktn/provider-project",
102
102
  "readme": {
103
- "markdown": "# The Future of Terraform CDK\n\n> [!IMPORTANT]\n>\n> [OCF](https://the-ocf.org/) - [github.com/open-constructs](https://github.com/open-constructs) has stepped up to fork under the new name of [CDK Terrain - cdktn.io](http://cdktn.io)\n\n---\n\n# Terraform CDK Provider Project\n\nA project template for [projen](https://projen.io) to create repositories for prebuilt provider packages for [CDK Terrain](https://cdktn.io).\n\n## Usage\n\nThe provider repos are entirely auto generated from the configuration contained in this repo here. There's no manual interaction necessary, except for creating the initial repository - using this repo. The `cdktn get` command is executed as part of the build pipeline in Github Actions. These jobs are executed on a schedule. Hence, new provider changes will be picked up automatically.\n\n### Creating a new provider\n\n> [!NOTE]\n> Only Offical Terraform Providers or Hashicorp partner Terraform Poviders will be accepted for pre-built provider generation.\n\nAdd a new repository [over here](https://github.com/cdktn-io/repository-manager).\n\nIn the newly created repository, all we need is a `.projenrc.js` file like this:\n\n```js\nconst { CdktnProviderProject } = require('@cdktn/provider-project');\nconst { Semver } = require('projen');\n\nconst project = new CdktnProviderProject({\n terraformProvider: \"aws@~> 2.0\"\n});\n\nproject.synth();\n```\n\nAdjust the `terraformProvider` attribute as required and run the following commands:\n\n```\nnpm install @cdktn/provider-project@latest\nnpx projen\nyarn install\n```\n\nThis will generate an entire repository ready to be published, including Github Workflows for publishing NPM, Pypi and maven packages. The only thing which is needed to be set manually are the tokens for these registries:\n\n- `NPM_TOKEN`\n- `TWINE_PASSWORD`\n- `TWINE_USERNAME`\n\n<!-- TODO: Re-enable Maven\n- `MAVEN_GPG_PRIVATE_KEY`\n- `MAVEN_GPG_PRIVATE_KEY_PASSPHRASE`\n- `MAVEN_PASSWORD`\n- `MAVEN_USERNAME`\n- `MAVEN_STAGING_PROFILE_ID`\n-->\n\n### Updating an existing Provider\n\nCommit and push the required changes to this repository here and wait for the auto-release to happen. Once released, you can run the following commands in the target provider repository:\n\n```\nnpm install @cdktn/provider-project@latest\nnpx projen\nyarn install\n```\n\nCommit, push and check for the auto-released version.\n\n## Development\n\nWhatever needs to be changed in the downstream [provider repositories](https://github.com/cdktn-io/repository-manager) should be done via the [code definitions](./src/index.ts) here.\n\nFor local development, [yarn link](https://classic.yarnpkg.com/en/docs/cli/link/) might be quite helpful for testing.\n\n## CAVEATS\n\n1. Maven publishing is disabled (TODO: re-enable when requested and infra available)\n1. NuGet publishing is disabled (TODO: re-enable when requested and infra available)\n"
103
+ "markdown": "# The Future of Terraform CDK\n\n> [!IMPORTANT]\n>\n> [OCF](https://the-ocf.org/) - [github.com/open-constructs](https://github.com/open-constructs) has stepped up to fork under the new name of [CDK Terrain - cdktn.io](http://cdktn.io)\n\n---\n\n# Terraform CDK Provider Project\n\nA project template for [projen](https://projen.io) to create repositories for prebuilt provider packages for [CDK Terrain](https://cdktn.io).\n\n## Usage\n\nThe provider repos are entirely auto generated from the configuration contained in this repo here. There's no manual interaction necessary, except for creating the initial repository - using this repo. The `cdktn get` command is executed as part of the build pipeline in Github Actions. These jobs are executed on a schedule. Hence, new provider changes will be picked up automatically.\n\n### Creating a new provider\n\n> [!NOTE]\n> Only Offical Terraform Providers or Hashicorp partner Terraform Poviders will be accepted for pre-built provider generation.\n\nAdd a new repository [over here](https://github.com/cdktn-io/cdktn-repository-manager).\n\nIn the newly created repository, all we need is a `.projenrc.js` file like this:\n\n```js\nconst { CdktnProviderProject } = require('@cdktn/provider-project');\nconst { Semver } = require('projen');\n\nconst project = new CdktnProviderProject({\n terraformProvider: \"aws@~> 2.0\"\n});\n\nproject.synth();\n```\n\nAdjust the `terraformProvider` attribute as required and run the following commands:\n\n```\nnpm install @cdktn/provider-project@latest\nnpx projen\nyarn install\n```\n\nThis will generate an entire repository ready to be published, including Github Workflows for publishing NPM, Pypi and maven packages. The only thing which is needed to be set manually are the tokens for these registries:\n\n- `NPM_TOKEN`\n- `TWINE_PASSWORD`\n- `TWINE_USERNAME`\n\n<!-- TODO: Re-enable Maven\n- `MAVEN_GPG_PRIVATE_KEY`\n- `MAVEN_GPG_PRIVATE_KEY_PASSPHRASE`\n- `MAVEN_PASSWORD`\n- `MAVEN_USERNAME`\n- `MAVEN_STAGING_PROFILE_ID`\n-->\n\n### Updating an existing Provider\n\nCommit and push the required changes to this repository here and wait for the auto-release to happen. Once released, you can run the following commands in the target provider repository:\n\n```\nnpm install @cdktn/provider-project@latest\nnpx projen\nyarn install\n```\n\nCommit, push and check for the auto-released version.\n\n## Development\n\nWhatever needs to be changed in the downstream [provider repositories](https://github.com/cdktn-io/cdktn-repository-manager) should be done via the [code definitions](./src/index.ts) here.\n\nFor local development, [yarn link](https://classic.yarnpkg.com/en/docs/cli/link/) might be quite helpful for testing.\n\n## CAVEATS\n\n1. Maven publishing is disabled (TODO: re-enable when requested and infra available)\n"
104
104
  },
105
105
  "repository": {
106
106
  "type": "git",
@@ -433,6 +433,6 @@
433
433
  "symbolId": "src/index:CdktnProviderProjectOptions"
434
434
  }
435
435
  },
436
- "version": "0.7.32",
437
- "fingerprint": "AvGFpHOVm7POsNzAxCSmkYTvlZja7TyLOsnED4wJ7tQ="
436
+ "version": "0.7.34",
437
+ "fingerprint": "X+fUjRTpeOtU8ejlQTwyz08vlHYKg/W4UcmG59GFdys="
438
438
  }
package/CLAUDE.md CHANGED
@@ -6,7 +6,7 @@ This file provides guidance to Claude Code (claude.ai/code) when working with co
6
6
 
7
7
  This is a Projen (https://projen.io) project template for creating CDKTF (CDK for Terraform) pre-built provider binding repositories. This is a fork maintained by CDK Terrain (cdktn.io) after HashiCorp's sunset announcement on December 10, 2025.
8
8
 
9
- **Purpose**: This repository generates the structure and workflows for individual provider repositories. Changes made here propagate to all downstream provider repos (managed at cdktn-io/repository-manager).
9
+ **Purpose**: This repository generates the structure and workflows for individual provider repositories. Changes made here propagate to all downstream provider repos (managed at cdktn-io/cdktn-repository-manager).
10
10
 
11
11
  ## Key Concepts
12
12
 
@@ -114,11 +114,11 @@ Generated packages follow this pattern:
114
114
  - **npm**: `@{namespace}/provider-{providerName}`
115
115
  - **Python**: `{namespace}-provider-{providerName}`
116
116
  - **Go**: `github.com/{githubNamespace}/cdktn-provider-{providerName}-go`
117
+ - **NuGet**: `{NuGetOrg}.Providers.{ProviderName}`
117
118
 
118
119
  ### For Future
119
120
 
120
121
  - **Maven**: `{mavenOrg}.providers.{providerName}`
121
- - **NuGet**: `{NuGetOrg}.Providers.{ProviderName}`
122
122
 
123
123
  Special cases: `null` and `random` providers get `_provider` suffix in Maven to avoid keyword conflicts.
124
124
 
@@ -166,7 +166,7 @@ This fork (cdktn.io) continues development after HashiCorp's sunset. With a Phas
166
166
  ## Common Gotchas
167
167
 
168
168
  - **Don't manually edit workflow YAML files** - Modify the Projen components in `src/` instead
169
- - **Provider repos need secrets** - NPM_TOKEN, TWINE_*, MAVEN_*, GH_TOKEN for publishing (this is managed by a separate project called the "cdkn-repository-manager")
169
+ - **Provider repos need secrets** - NPM_TOKEN, TWINE_*, MAVEN_*, GH_TOKEN for publishing (this is managed by a separate project called the "cdktn-repository-manager")
170
170
  - **Fetch nukes src/ directory** - Copyright headers must be re-added after `cdktf get`
171
171
  - **version.json has exactly one entry** - Multi-provider projects are not supported
172
172
  - **Release task is conditional** - Controlled by `should-release.js`, use `unconditional-release` to force
package/README.md CHANGED
@@ -19,7 +19,7 @@ The provider repos are entirely auto generated from the configuration contained
19
19
  > [!NOTE]
20
20
  > Only Offical Terraform Providers or Hashicorp partner Terraform Poviders will be accepted for pre-built provider generation.
21
21
 
22
- Add a new repository [over here](https://github.com/cdktn-io/repository-manager).
22
+ Add a new repository [over here](https://github.com/cdktn-io/cdktn-repository-manager).
23
23
 
24
24
  In the newly created repository, all we need is a `.projenrc.js` file like this:
25
25
 
@@ -70,11 +70,10 @@ Commit, push and check for the auto-released version.
70
70
 
71
71
  ## Development
72
72
 
73
- Whatever needs to be changed in the downstream [provider repositories](https://github.com/cdktn-io/repository-manager) should be done via the [code definitions](./src/index.ts) here.
73
+ Whatever needs to be changed in the downstream [provider repositories](https://github.com/cdktn-io/cdktn-repository-manager) should be done via the [code definitions](./src/index.ts) here.
74
74
 
75
75
  For local development, [yarn link](https://classic.yarnpkg.com/en/docs/cli/link/) might be quite helpful for testing.
76
76
 
77
77
  ## CAVEATS
78
78
 
79
79
  1. Maven publishing is disabled (TODO: re-enable when requested and infra available)
80
- 1. NuGet publishing is disabled (TODO: re-enable when requested and infra available)
package/lib/index.js CHANGED
@@ -58,8 +58,7 @@ class CdktnProviderProject extends projen_1.cdk.JsiiProject {
58
58
  const { terraformProvider, workflowContainerImage, constructsVersion, minNodeVersion, jsiiVersion, typescriptVersion, isDeprecated, deprecationDate,
59
59
  // TODO: Confirm default Author Name
60
60
  authorName = "CDK Terrain Maintainers", authorAddress = "https://cdktn.io", namespace = "cdktn", githubNamespace = "cdktn-io", mavenEndpoint = "https://central.sonatype.com", // TODO
61
- nugetOrg = "Io.Cdktn", // TODO
62
- mavenOrg = "cdktn", // TODO
61
+ nugetOrg = "Io.Cdktn", mavenOrg = "cdktn", // TODO
63
62
  npmTrustedPublishing, } = options;
64
63
  const [fqproviderName, providerVersion] = terraformProvider.split("@");
65
64
  const providerName = fqproviderName.split("/").pop();
@@ -207,8 +206,8 @@ class CdktnProviderProject extends projen_1.cdk.JsiiProject {
207
206
  },
208
207
  },
209
208
  python: packageInfo.python,
209
+ publishToNuget: packageInfo.publishToNuget,
210
210
  // TODO: Re-enable if requested and when available
211
- // publishToNuget: packageInfo.publishToNuget,
212
211
  // publishToMaven: packageInfo.publishToMaven,
213
212
  publishToGo: packageInfo.publishToGo,
214
213
  releaseFailureIssue: true,
@@ -460,10 +459,10 @@ class CdktnProviderProject extends projen_1.cdk.JsiiProject {
460
459
  }
461
460
  exports.CdktnProviderProject = CdktnProviderProject;
462
461
  _a = JSII_RTTI_SYMBOL_1;
463
- CdktnProviderProject[_a] = { fqn: "@cdktn/provider-project.CdktnProviderProject", version: "0.7.32" };
462
+ CdktnProviderProject[_a] = { fqn: "@cdktn/provider-project.CdktnProviderProject", version: "0.7.34" };
464
463
  function prettyAssertEqual(subject, expected, message) {
465
464
  if (subject !== expected) {
466
465
  throw new Error(`${message ?? "Assertion failed"}: expected ${JSON.stringify(expected)} but got ${JSON.stringify(subject)}`);
467
466
  }
468
467
  }
469
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSwwREFBMEQ7QUFDMUQsaUNBQWtDO0FBQ2xDLDZDQUF5QztBQUN6QyxtQ0FBMEQ7QUFFMUQsc0RBQW9FO0FBQ3BFLHFEQUFnRDtBQUNoRCxpREFBNkM7QUFDN0MsK0VBQXlFO0FBQ3pFLDJDQUF3QztBQUN4QyxpREFBNkM7QUFDN0MsMkRBQXVEO0FBQ3ZELDZEQUF5RDtBQUN6RCw2Q0FBMEM7QUFDMUMsNkRBQXlEO0FBQ3pELG1EQUErQztBQUMvQyxtREFBK0M7QUFDL0MsK0NBQTJDO0FBRTNDLHlEQUFxRDtBQUNyRCxxRUFBMEU7QUFDMUUsNkRBQW1FO0FBQ25FLG9EQUFrRTtBQUVsRSxtSEFBbUg7QUFDbkgsTUFBTSxpQkFBaUIsR0FBRyxDQUFDLENBQUM7QUF1RDVCLE1BQU0sWUFBWSxHQUFHLENBQUMsWUFBb0IsRUFBVSxFQUFFO0lBQ3BELE9BQU8sQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQztRQUM5QyxDQUFDLENBQUMsR0FBRyxZQUFZLFdBQVc7UUFDNUIsQ0FBQyxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBQ3ZDLENBQUMsQ0FBQztBQUVGLE1BQU0sMEJBQTBCLEdBQUc7SUFDakMsa0JBQWtCLEVBQUUsMENBQTBDLEVBQUUsU0FBUztJQUN6RSwyQkFBMkIsRUFBRSwwQ0FBMEMsRUFBRSxTQUFTO0lBQ2xGLHVCQUF1QixFQUFFLDBDQUEwQyxFQUFFLFNBQVM7SUFDOUUsc0JBQXNCLEVBQUUsMENBQTBDLEVBQUUsU0FBUztJQUM3RSxrQkFBa0IsRUFBRSwwQ0FBMEMsRUFBRSxTQUFTO0lBQ3pFLG9CQUFvQixFQUFFLDBDQUEwQyxFQUFFLFNBQVM7SUFDM0Usb0JBQW9CLEVBQUUsMENBQTBDLEVBQUUsU0FB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QUMsSUFBSSxFQUFFO1lBQzFCLFlBQVk7WUFDWixXQUFXO1lBQ1gsWUFBWSxFQUFFLENBQUMsQ0FBQyxZQUFZO1NBQzdCLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUNsQixJQUFJLDRCQUFZLENBQUMsSUFBSSxFQUFFLEVBQUUsY0FBYyxFQUFFLENBQUMsQ0FBQztRQUM3QyxDQUFDO0lBQ0gsQ0FBQztJQUVPLHVCQUF1QixDQUFDLGNBQXNDO1FBQ3BFLHdDQUF3QztRQUN4QyxNQUFNLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxFQUFFLEVBQUU7WUFDckQsSUFBSSxDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxHQUFHLElBQUksSUFBSSxHQUFHLEVBQUUsQ0FBQyxDQUFDO1FBQ25ELENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7QUF2Zkgsb0RBd2ZDOzs7QUFFRCxTQUFTLGlCQUFpQixDQUFJLE9BQVUsRUFBRSxRQUFXLEVBQUUsT0FBZ0I7SUFDckUsSUFBSSxPQUFPLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDekIsTUFBTSxJQUFJLEtBQUssQ0FDYixHQUFHLE9BQU8sSUFBSSxrQkFBa0IsY0FBYyxJQUFJLENBQUMsU0FBUyxDQUMxRCxRQUFRLENBQ1QsWUFBWSxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQ3ZDLENBQUM7SUFDSixDQUFDO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1yZXF1aXJlLWltcG9ydHMgKi9cbmltcG9ydCBhc3NlcnQgPSByZXF1aXJlKFwiYXNzZXJ0XCIpO1xuaW1wb3J0IHsgcGFzY2FsQ2FzZSB9IGZyb20gXCJjaGFuZ2UtY2FzZVwiO1xuaW1wb3J0IHsgVGV4dEZpbGUsIGNkaywgZ2l0aHViLCBKc29uUGF0Y2ggfSBmcm9tIFwicHJvamVuXCI7XG5pbXBvcnQgeyBKb2JTdGVwIH0gZnJvbSBcInByb2plbi9saWIvZ2l0aHViL3dvcmtmbG93cy1tb2RlbFwiO1xuaW1wb3J0IHsgVXBncmFkZURlcGVuZGVuY2llc1NjaGVkdWxlIH0gZnJvbSBcInByb2plbi9saWIvamF2YXNjcmlwdFwiO1xuaW1wb3J0IHsgQWxlcnRPcGVuUHJzIH0gZnJvbSBcIi4vYWxlcnQtb3Blbi1wcnNcIjtcbmltcG9ydCB7IEF1dG9BcHByb3ZlIH0gZnJvbSBcIi4vYXV0by1hcHByb3ZlXCI7XG5pbXBvcnQgeyBBdXRvQ2xvc2VDb21tdW5pdHlJc3N1ZXMgfSBmcm9tIFwiLi9hdXRvLWNsb3NlLWNvbW11bml0eS1pc3N1ZXNcIjtcbmltcG9ydCB7IEF1dG9tZXJnZSB9IGZyb20gXCIuL2F1dG9tZXJnZVwiO1xuaW1wb3J0IHsgQ2RrdGZDb25maWcgfSBmcm9tIFwiLi9jZGt0Zi1jb25maWdcIjtcbmltcG9ydCB7IENvcHlyaWdodEhlYWRlcnMgfSBmcm9tIFwiLi9jb3B5cmlnaHQtaGVhZGVyc1wiO1xuaW1wb3J0IHsgQ3VzdG9taXplZExpY2Vuc2UgfSBmcm9tIFwiLi9jdXN0b21pemVkLWxpY2Vuc2VcIjtcbmltcG9ydCB7IERlcGVuZGFib3QgfSBmcm9tIFwiLi9kZXBlbmRhYm90XCI7XG5pbXBvcnQgeyBEZXByZWNhdGVQYWNrYWdlcyB9IGZyb20gXCIuL2RlcHJlY2F0ZS1wYWNrYWdlc1wiO1xuaW1wb3J0IHsgRm9yY2VSZWxlYXNlIH0gZnJvbSBcIi4vZm9yY2UtcmVsZWFzZVwiO1xuaW1wb3J0IHsgR2l0aHViSXNzdWVzIH0gZnJvbSBcIi4vZ2l0aHViLWlzc3Vlc1wiO1xuaW1wb3J0IHsgTG9ja0lzc3VlcyB9IGZyb20gXCIuL2xvY2staXNzdWVzXCI7XG5pbXBvcnQgeyBQYWNrYWdlSW5mbyB9IGZyb20gXCIuL3BhY2thZ2UtaW5mb1wiO1xuaW1wb3J0IHsgUHJvdmlkZXJVcGdyYWRlIH0gZnJvbSBcIi4vcHJvdmlkZXItdXBncmFkZVwiO1xuaW1wb3J0IHsgQ2hlY2tGb3JVcGdyYWRlc1NjcmlwdEZpbGUgfSBmcm9tIFwiLi9zY3JpcHRzL2NoZWNrLWZvci11cGdyYWRlc1wiO1xuaW1wb3J0IHsgU2hvdWxkUmVsZWFzZVNjcmlwdEZpbGUgfSBmcm9tIFwiLi9zY3JpcHRzL3Nob3VsZC1yZWxlYXNlXCI7XG5pbXBvcnQgeyBnZW5lcmF0ZVJhbmRvbUNyb24sIFNjaGVkdWxlIH0gZnJvbSBcIi4vdXRpbC9yYW5kb20tY3JvblwiO1xuXG4vLyBlbnN1cmUgbmV3IHByb2plY3RzIHN0YXJ0IHdpdGggMS4wLjAgc28gdGhhdCBldmVyeSBmb2xsb3dpbmcgYnJlYWtpbmcgY2hhbmdlIGxlYWRzIHRvIGFuIGluY3JlYXNlZCBtYWpvciB2ZXJzaW9uXG5jb25zdCBNSU5fTUFKT1JfVkVSU0lPTiA9IDE7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2RrdG5Qcm92aWRlclByb2plY3RPcHRpb25zIGV4dGVuZHMgY2RrLkpzaWlQcm9qZWN0T3B0aW9ucyB7XG4gIHJlYWRvbmx5IHVzZUN1c3RvbUdpdGh1YlJ1bm5lcj86IGJvb2xlYW47XG4gIHJlYWRvbmx5IHRlcnJhZm9ybVByb3ZpZGVyOiBzdHJpbmc7XG4gIHJlYWRvbmx5IGNka3RuVmVyc2lvbjogc3RyaW5nO1xuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgVXNlIGBjZGt0blZlcnNpb25gIGluc3RlYWQuIFRoaXMgYWxpYXMgaXMgcHJvdmlkZWQgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkuXG4gICAqL1xuICByZWFkb25seSBjZGt0ZlZlcnNpb24/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IGNvbnN0cnVjdHNWZXJzaW9uOiBzdHJpbmc7XG4gIHJlYWRvbmx5IGZvcmNlTWFqb3JWZXJzaW9uPzogbnVtYmVyO1xuICAvKipcbiAgICogZGVmYXVsdHMgdG8gXCJjZGt0blwiXG4gICAqL1xuICByZWFkb25seSBuYW1lc3BhY2U/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBkZWZhdWx0cyB0byBcImNka3RuLWlvXCJcbiAgICogcHJldmlvdXNseSB3YXMgXCJjZGt0ZlwiLiBVc2VkIGZvciBHaXRIdWIgb3JnIG5hbWUgYW5kIHBhY2thZ2Ugc2NvcGluZ1xuICAgKi9cbiAgcmVhZG9ubHkgZ2l0aHViTmFtZXNwYWNlPzogc3RyaW5nO1xuICByZWFkb25seSBtYXZlbkVuZHBvaW50Pzogc3RyaW5nO1xuICAvKipcbiAgICogZGVmYXVsdHMgdG8gXCJJby5DZGt0blwiXG4gICAqL1xuICByZWFkb25seSBudWdldE9yZz86IHN0cmluZztcbiAgLyoqXG4gICAqIGRlZmF1bHRzIHRvIFwiY2RrdG5cIlxuICAgKi9cbiAgcmVhZG9ubHkgbWF2ZW5Pcmc/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBkZWZhdWx0cyB0byBcImlvLiR7bWF2ZW5Pcmd9XCJcbiAgICovXG4gIHJlYWRvbmx5IG1hdmVuR3JvdXBJZD86IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSB5ZWFyIG9mIHRoZSBjcmVhdGlvbiBvZiB0aGUgcmVwb3NpdG9yeSwgZm9yIGNvcHlyaWdodCBwdXJwb3Nlcy5cbiAgICogV2lsbCBmYWxsIGJhY2sgdG8gdGhlIGN1cnJlbnQgeWVhciBpZiBub3Qgc3BlY2lmaWVkLlxuICAgKi9cbiAgcmVhZG9ubHkgY3JlYXRpb25ZZWFyPzogbnVtYmVyO1xuICAvKipcbiAgICogV2hldGhlciBvciBub3QgdGhpcyBwcmVidWlsdCBwcm92aWRlciBpcyBkZXByZWNhdGVkLlxuICAgKiBJZiB0cnVlLCBubyBuZXcgdmVyc2lvbnMgd2lsbCBiZSBwdWJsaXNoZWQuXG4gICAqL1xuICByZWFkb25seSBpc0RlcHJlY2F0ZWQ/OiBib29sZWFuO1xuICAvKipcbiAgICogQW4gb3B0aW9uYWwgZGF0ZSB3aGVuIHRoZSBwcm9qZWN0IHNob3VsZCBiZSBjb25zaWRlcmVkIGRlcHJlY2F0ZWQsIHRvIGJlIHVzZWQgaW4gdGhlIFJFQURNRSB0ZXh0LlxuICAgKiBJZiBubyBkYXRlIGlzIHByb3ZpZGVkLCB0aGVuIHRoZSBkYXRlIG9mIHRoZSBidWlsZCB3aWxsIGJlIHVzZWQgYnkgZGVmYXVsdC5cbiAgICovXG4gIHJlYWRvbmx5IGRlcHJlY2F0aW9uRGF0ZT86IHN0cmluZztcbiAgLyoqXG4gICAqIGRlZmF1bHRzIHRvIFwiSGFzaGlDb3JwLCBJbmMuXCJcbiAgICovXG4gIHJlYWRvbmx5IGxpY2Vuc2VlPzogc3RyaW5nO1xufVxuXG5jb25zdCBnZXRNYXZlbk5hbWUgPSAocHJvdmlkZXJOYW1lOiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICByZXR1cm4gW1wibnVsbFwiLCBcInJhbmRvbVwiXS5pbmNsdWRlcyhwcm92aWRlck5hbWUpXG4gICAgPyBgJHtwcm92aWRlck5hbWV9X3Byb3ZpZGVyYFxuICAgIDogcHJvdmlkZXJOYW1lLnJlcGxhY2UoLy0vZ2ksIFwiX1wiKTtcbn07XG5cbmNvbnN0IGdpdGh1YkFjdGlvblBpbm5lZFZlcnNpb25zID0ge1xuICBcImFjdGlvbnMvY2hlY2tvdXRcIjogXCIxMWJkNzE5MDFiYmU1YjE2MzBjZWVhNzNkMjc1OTczNjRjOWFmNjgzXCIsIC8vIHY0LjIuMlxuICBcImFjdGlvbnMvZG93bmxvYWQtYXJ0aWZhY3RcIjogXCI5NTgxNWMzOGNmMmZmMjE2NDg2OWNiYWI3OWRhOGQxZjQyMmJjODllXCIsIC8vIHY0LjIuMVxuICBcImFjdGlvbnMvZ2l0aHViLXNjcmlwdFwiOiBcIjYwYTBkODMwMzljNzRhNGFlZTU0MzUwOGQyZmZjYjFjMzc5OWNkZWFcIiwgLy8gdjcuMC4xXG4gIFwiYWN0aW9ucy9zZXR1cC1kb3RuZXRcIjogXCI2N2EzNTczYzlhOTg2YTNmOWM1OTQ1MzlmNGFiNTExZDU3YmIzY2U5XCIsIC8vIHY0LjMuMVxuICBcImFjdGlvbnMvc2V0dXAtZ29cIjogXCIwYWFjY2ZkMTUwZDUwY2NhZWI1OGViZDg4ZDM2ZTkxOTY3YTVmMzViXCIsIC8vIHY1LjQuMFxuICBcImFjdGlvbnMvc2V0dXAtamF2YVwiOiBcIjNhNGY2ZTFhZjUwNGNmNmEzMTg1NWZhODk5YzZhYTUzNTViYTZjMTJcIiwgLy8gdjQuNy4wXG4gIFwiYWN0aW9ucy9zZXR1cC1ub2RlXCI6IFwiY2RjYTczNjViMmRhZGI4YWFkMGEzM2JjNzYwMTg1NmZmYWJjYzQ4ZVwiLCAvLyB2NC4zLjBcbiAgXCJhY3Rpb25zL3NldHVwLXB5dGhvblwiOiBcIjQyMzc1NTI0ZTIzYzQxMmQ5M2ZiNjdiNDk5NThiNDkxZmNlNzFjMzhcIiwgLy8gdjUuNC4wXG4gIFwiYWN0aW9ucy9zdGFsZVwiOiBcIjViZWY2NGYxOWQ3ZmFjZmIyNWIzN2I0MTQ0ODJjNzE2NGQ2Mzk2MzlcIiwgLy8gdjkuMS4wXG4gIFwiYWN0aW9ucy91cGxvYWQtYXJ0aWZhY3RcIjogXCJlYTE2NWY4ZDY1YjZlNzViNTQwNDQ5ZTkyYjQ4ODZmNDM2MDdmYTAyXCIsIC8vIHY0LjYuMlxuICBcImFtYW5ubi9hY3Rpb24tc2VtYW50aWMtcHVsbC1yZXF1ZXN0XCI6XG4gICAgXCIwNzIzMzg3ZmFhZjliMzhhZGVmNDc3NWNkNDJjZmQ1MTU1ZWQ2MDE3XCIsIC8vIHY1LjUuM1xuICBcImRlc3NhbnQvbG9jay10aHJlYWRzXCI6IFwiMWJmN2VjMjUwNTFmZTdjMDBiZGQxN2U2YTdjZjNkN2JmYjdkYzc3MVwiLCAvLyB2NS4wLjFcbiAgXCJoYXNoaWNvcnAvc2V0dXAtY29weXdyaXRlXCI6IFwiMzI2MzhkYTJkNGU4MWQ1NmEwNzY0YWExNTQ3ODgyZmM0ZDIwOTYzNlwiLCAvLyB2MS4xLjNcbiAgXCJoYXNoaWNvcnAvc2V0dXAtdGVycmFmb3JtXCI6IFwiYjljZDU0YTNjMzQ5ZDNmMzhlODg4MTU1NWQ2MTZjZWQyNjk4NjJkZFwiLCAvLyB2My4xLjJcbiAgXCJpbWpvaG5iby9pc3N1ZS1ib3RcIjogXCI1NzJlZWQxNDQyMmM0ZDZjYTM3ZTg3MGY5N2U3ZGEyMDk0MjJmNWJkXCIsIC8vIHYzLjQuNFxuICBcInBldGVyLWV2YW5zL2NyZWF0ZS1wdWxsLXJlcXVlc3RcIjogXCIyNzFhOGQwMzQwMjY1ZjcwNWIxNGI2ZDMyYjk4MjljMWNiMzNkNDVlXCIsIC8vIHY3LjAuOFxuICBcInNsYWNrYXBpL3NsYWNrLWdpdGh1Yi1hY3Rpb25cIjogXCI0ODVhOWQ0MmQzYTczMDMxZjEyZWMyMDFjNDU3ZTIxNjJjNDVkMDJkXCIsIC8vIHYyLjAuMFxuICBcImFjdGlvbnMvY3JlYXRlLWdpdGh1Yi1hcHAtdG9rZW5cIjogXCIyOTgyNGU2OWY1NDYxMjEzM2U3NmY3ZWFhYzcyNmVlZjZjODc1YmFmXCIsIC8vIHYyLjIuMVxufTtcblxuZXhwb3J0IGNsYXNzIENka3RuUHJvdmlkZXJQcm9qZWN0IGV4dGVuZHMgY2RrLkpzaWlQcm9qZWN0IHtcbiAgY29uc3RydWN0b3Iob3B0aW9uczogQ2RrdG5Qcm92aWRlclByb2plY3RPcHRpb25zKSB7XG4gICAgY29uc3QgY2RrdG5WZXJzaW9uID0gb3B0aW9ucy5jZGt0blZlcnNpb24gPz8gb3B0aW9ucy5jZGt0ZlZlcnNpb247XG4gICAgYXNzZXJ0KFxuICAgICAgY2RrdG5WZXJzaW9uLFxuICAgICAgXCJFaXRoZXIgY2RrdG5WZXJzaW9uIG9yIGNka3RmVmVyc2lvbiBtdXN0IGJlIHByb3ZpZGVkXCJcbiAgICApO1xuXG4gICAgY29uc3Qge1xuICAgICAgdGVycmFmb3JtUHJvdmlkZXIsXG4gICAgICB3b3JrZmxvd0NvbnRhaW5lckltYWdlLFxuICAgICAgY29uc3RydWN0c1ZlcnNpb24sXG4gICAgICBtaW5Ob2RlVmVyc2lvbixcbiAgICAgIGpzaWlWZXJzaW9uLFxuICAgICAgdHlwZXNjcmlwdFZlcnNpb24sXG4gICAgICBpc0RlcHJlY2F0ZWQsXG4gICAgICBkZXByZWNhdGlvbkRhdGUsXG4gICAgICAvLyBUT0RPOiBDb25maXJtIGRlZmF1bHQgQXV0aG9yIE5hbWVcbiAgICAgIGF1dGhvck5hbWUgPSBcIkNESyBUZXJyYWluIE1haW50YWluZXJzXCIsXG4gICAgICBhdXRob3JBZGRyZXNzID0gXCJodHRwczovL2Nka3RuLmlvXCIsXG4gICAgICBuYW1lc3BhY2UgPSBcImNka3RuXCIsXG4gICAgICBnaXRodWJOYW1lc3BhY2UgPSBcImNka3RuLWlvXCIsXG4gICAgICBtYXZlbkVuZHBvaW50ID0gXCJodHRwczovL2NlbnRyYWwuc29uYXR5cGUuY29tXCIsIC8vIFRPRE9cbiAgICAgIG51Z2V0T3JnID0gXCJJby5DZGt0blwiLCAvLyBUT0RPXG4gICAgICBtYXZlbk9yZyA9IFwiY2RrdG5cIiwgLy8gVE9ET1xuICAgICAgbnBtVHJ1c3RlZFB1Ymxpc2hpbmcsXG4gICAgfSA9IG9wdGlvbnM7XG5cbiAgICBjb25zdCBbZnFwcm92aWRlck5hbWUsIHByb3ZpZGVyVmVyc2lvbl0gPSB0ZXJyYWZvcm1Qcm92aWRlci5zcGxpdChcIkBcIik7XG4gICAgY29uc3QgcHJvdmlkZXJOYW1lID0gZnFwcm92aWRlck5hbWUuc3BsaXQoXCIvXCIpLnBvcCgpO1xuICAgIGFzc2VydChwcm92aWRlck5hbWUsIGAke3RlcnJhZm9ybVByb3ZpZGVyfSBkb2Vzbid0IHNlZW0gdG8gYmUgdmFsaWRgKTtcbiAgICBhc3NlcnQoXG4gICAgICAhcHJvdmlkZXJOYW1lLmVuZHNXaXRoKFwiLWdvXCIpLFxuICAgICAgXCJwcm92aWRlck5hbWUgbWF5IG5vdCBlbmQgd2l0aCAnLWdvJyBhcyB0aGlzIGNhbiBjb25mbGljdCB3aXRoIHJlcG9zIGZvciBnbyBwYWNrYWdlc1wiXG4gICAgKTtcblxuICAgIGNvbnN0IG51Z2V0TmFtZSA9IGAke251Z2V0T3JnfS5Qcm92aWRlcnMuJHtwYXNjYWxDYXNlKHByb3ZpZGVyTmFtZSl9YDtcbiAgICBjb25zdCBtYXZlbkdyb3VwSWQgPSBvcHRpb25zLm1hdmVuR3JvdXBJZCA/PyBgaW8uJHttYXZlbk9yZ31gO1xuICAgIGNvbnN0IG1hdmVuTmFtZSA9IGAke21hdmVuR3JvdXBJZH0ucHJvdmlkZXJzLiR7Z2V0TWF2ZW5OYW1lKHByb3ZpZGVyTmFtZSl9YDtcbiAgICBjb25zdCByZXBvc2l0b3J5ID0gYCR7Z2l0aHViTmFtZXNwYWNlfS8ke25hbWVzcGFjZX0tcHJvdmlkZXItJHtwcm92aWRlck5hbWUucmVwbGFjZShcbiAgICAgIC8tL2csXG4gICAgICBcIlwiXG4gICAgKX1gO1xuICAgIGNvbnN0IHJlcG9zaXRvcnlVcmwgPSBgZ2l0aHViLmNvbS8ke3JlcG9zaXRvcnl9YDtcblxuICAgIGNvbnN0IHBhY2thZ2VJbmZvOiBQYWNrYWdlSW5mbyA9IHtcbiAgICAgIG5wbToge1xuICAgICAgICBuYW1lOiBgQCR7bmFtZXNwYWNlfS9wcm92aWRlci0ke3Byb3ZpZGVyTmFtZX1gLFxuICAgICAgfSxcbiAgICAgIHB5dGhvbjoge1xuICAgICAgICAvLyBkaXN0TmFtZTogYCR7Z2l0aHViTmFtZXNwYWNlfS0ke25hbWVzcGFjZX0tcHJvdmlkZXItJHtwcm92aWRlck5hbWUucmVwbGFjZShcbiAgICAgICAgZGlzdE5hbWU6IGAke25hbWVzcGFjZX0tcHJvdmlkZXItJHtwcm92aWRlck5hbWUucmVwbGFjZSgvLS9naSwgXCJfXCIpfWAsXG4gICAgICAgIC8vIG1vZHVsZTogYCR7Z2l0aHViTmFtZXNwYWNlfV8ke25hbWVzcGFjZX1fcHJvdmlkZXJfJHtwcm92aWRlck5hbWUucmVwbGFjZShcbiAgICAgICAgbW9kdWxlOiBgJHtuYW1lc3BhY2V9X3Byb3ZpZGVyXyR7cHJvdmlkZXJOYW1lLnJlcGxhY2UoLy0vZ2ksIFwiX1wiKX1gLFxuICAgICAgfSxcbiAgICAgIHB1Ymxpc2hUb051Z2V0OiB7XG4gICAgICAgIGRvdE5ldE5hbWVzcGFjZTogbnVnZXROYW1lLFxuICAgICAgICBwYWNrYWdlSWQ6IG51Z2V0TmFtZSxcbiAgICAgIH0sXG4gICAgICBwdWJsaXNoVG9NYXZlbjoge1xuICAgICAgICBqYXZhUGFja2FnZTogbWF2ZW5OYW1lLFxuICAgICAgICBtYXZlbkdyb3VwSWQ6IG1hdmVuR3JvdXBJZCxcbiAgICAgICAgbWF2ZW5BcnRpZmFjdElkOiBgJHtuYW1lc3BhY2V9LXByb3ZpZGVyLSR7cHJvdmlkZXJOYW1lfWAsXG4gICAgICAgIG1hdmVuRW5kcG9pbnQsXG4gICAgICB9LFxuICAgICAgcHVibGlzaFRvR286IHtcbiAgICAgICAgbW9kdWxlTmFtZTogYCR7cmVwb3NpdG9yeVVybH0tZ29gLFxuICAgICAgICBnaXRVc2VyRW1haWw6IFwiZ2l0aHViLXRlYW0tY2RrLXRlcnJhaW5AY2RrdG4uaW9cIixcbiAgICAgICAgZ2l0VXNlck5hbWU6IFwidGVhbS1jZGstdGVycmFpblwiLFxuICAgICAgICBwYWNrYWdlTmFtZTogcHJvdmlkZXJOYW1lLnJlcGxhY2UoLy0vZywgXCJcIiksXG4gICAgICAgIC8vIEluIG9yZGVyIHRvIHVzZSB0aGUgY29weXdyaXRlIGFjdGlvbiwgd2UgbmVlZCB0byByZWJ1aWxkIHRoZSBmdWxsIHByZS1wdWJsaXNoIHN0ZXBzIHdvcmtmbG93IHVuZm9ydHVuYXRlbHlcbiAgICAgICAgLy8gSWYgc29tZW9uZSBrbm93cyBhIGJldHRlciB3YXkgdG8gZG8gdGhpcyBtdXRhdGlvbiB3aXRoIG1pbmltYWwgY3VzdG9tIGNvZGUsIHBsZWFzZSBkbyBzb1xuICAgICAgICBwcmVQdWJsaXNoU3RlcHM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiBcIkNoZWNrb3V0XCIsXG4gICAgICAgICAgICB1c2VzOiBcImFjdGlvbnMvY2hlY2tvdXRcIixcbiAgICAgICAgICAgIHdpdGg6IHtcbiAgICAgICAgICAgICAgcGF0aDogXCIucmVwb1wiLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6IFwiSW5zdGFsbCBEZXBlbmRlbmNpZXNcIixcbiAgICAgICAgICAgIHJ1bjogXCJjZCAucmVwbyAmJiB5YXJuIGluc3RhbGwgLS1jaGVjay1maWxlcyAtLWZyb3plbi1sb2NrZmlsZVwiLFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogXCJFeHRyYWN0IGJ1aWxkIGFydGlmYWN0XCIsXG4gICAgICAgICAgICBydW46IFwidGFyIC0tc3RyaXAtY29tcG9uZW50cz0xIC14enZmIGRpc3QvanMvKi50Z3ogLUMgLnJlcG9cIixcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6IFwiTW92ZSBidWlsZCBhcnRpZmFjdCBvdXQgb2YgdGhlIHdheVwiLFxuICAgICAgICAgICAgcnVuOiBcIm12IGRpc3QgZGlzdC5vbGRcIixcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6IFwiQ3JlYXRlIGdvIGFydGlmYWN0XCIsXG4gICAgICAgICAgICBydW46IFwiY2QgLnJlcG8gJiYgbnB4IHByb2plbiBwYWNrYWdlOmdvXCIsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiBcIlNldHVwIENvcHl3cml0ZSB0b29sXCIsXG4gICAgICAgICAgICB1c2VzOiBcImhhc2hpY29ycC9zZXR1cC1jb3B5d3JpdGVcIixcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6IFwiQ29weSBjb3B5d3JpdGUgaGNsIGZpbGVcIixcbiAgICAgICAgICAgIHJ1bjogXCJjcCAucmVwby8uY29weXdyaXRlLmhjbCAucmVwby9kaXN0L2dvLy5jb3B5d3JpdGUuaGNsXCIsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiBcIkFkZCBoZWFkZXJzIHVzaW5nIENvcHl3cml0ZSB0b29sXCIsXG4gICAgICAgICAgICBydW46IFwiY2QgLnJlcG8vZGlzdC9nbyAmJiBjb3B5d3JpdGUgaGVhZGVyc1wiLFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogXCJSZW1vdmUgY29weXdyaXRlIGhjbCBmaWxlXCIsXG4gICAgICAgICAgICBydW46IFwicm0gLWYgLnJlcG8vZGlzdC9nby8uY29weXdyaXRlLmhjbFwiLFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogXCJSZW1vdmUgc29tZSB0ZXh0IGZyb20gdGhlIFJFQURNRSB0aGF0IGRvZXNuJ3QgYXBwbHkgdG8gR29cIixcbiAgICAgICAgICAgIHJ1bjogW1xuICAgICAgICAgICAgICBcInNlZCAtaSAncy8jIENES1ROIHByZWJ1aWx0IGJpbmRpbmdzIGZvci8jIENES1ROIEdvIGJpbmRpbmdzIGZvci8nIC5yZXBvL2Rpc3QvZ28vKi9SRUFETUUubWRcIixcbiAgICAgICAgICAgICAgLy8gQHNlZSBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL2EvNDk1MTE5NDlcbiAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHByZXR0aWVyL3ByZXR0aWVyXG4gICAgICAgICAgICAgIC8vIHByZXR0aWVyLWlnbm9yZVxuICAgICAgICAgICAgICBgc2VkIC1pIC1lICcvIyMgJHtpc0RlcHJlY2F0ZWQgPyBcIkRlcHJlY2F0ZWRcIiA6IFwiQXZhaWxhYmxlXCJ9IFBhY2thZ2VzLywvIyMjIEdvLyFiJyAtZSAnLyMjIyBHby8hZDtwOyBzLyMjIyBHby8jIyBHbyBQYWNrYWdlLycgLWUgJ2QnIC5yZXBvL2Rpc3QvZ28vKi9SRUFETUUubWRgLFxuICAgICAgICAgICAgICAvLyBzZWQgLWUgaXMgYmxhY2sgbWFnaWMgYW5kIGZvciB3aGF0ZXZlciByZWFzb24gdGhlIHN0cmluZyByZXBsYWNlIGRvZXNuJ3Qgd29yayBzbyBsZXQncyB0cnkgaXQgYWdhaW46XG4gICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBwcmV0dGllci9wcmV0dGllclxuICAgICAgICAgICAgICAvLyBwcmV0dGllci1pZ25vcmVcbiAgICAgICAgICAgICAgYHNlZCAtaSAncy8jIyMgR28vIyMgJHtpc0RlcHJlY2F0ZWQgPyBcIkRlcHJlY2F0ZWRcIiA6IFwiR29cIn0gUGFja2FnZS8nIC5yZXBvL2Rpc3QvZ28vKi9SRUFETUUubWRgLFxuICAgICAgICAgICAgICAvLyBKdXN0IHN0cmFpZ2h0IHVwIGRlbGV0ZSB0aGVzZSBmdWxsIGxpbmVzIGFuZCBldmVyeXRoaW5nIGluIGJldHdlZW4gdGhlbTpcbiAgICAgICAgICAgICAgXCJzZWQgLWkgLWUgJy9BUEkudHlwZXNjcmlwdC5tZC8sL1lvdSBjYW4gYWxzbyB2aXNpdCBhIGhvc3RlZCB2ZXJzaW9uLyFiJyAtZSAnZCcgLnJlcG8vZGlzdC9nby8qL1JFQURNRS5tZFwiLFxuICAgICAgICAgICAgICBgc2VkIC1pICdzfEZpbmQgYXV0by1nZW5lcmF0ZWQgZG9jcyBmb3IgdGhpcyBwcm92aWRlciBoZXJlOnxGaW5kIGF1dG8tZ2VuZXJhdGVkIGRvY3MgZm9yIHRoaXMgcHJvdmlkZXIgW2hlcmVdKGh0dHBzOi8vJHtyZXBvc2l0b3J5VXJsfS9ibG9iL21haW4vZG9jcy9BUEkuZ28ubWQpLnwnIC5yZXBvL2Rpc3QvZ28vKi9SRUFETUUubWRgLFxuICAgICAgICAgICAgICAvLyBKdXN0IHN0cmFpZ2h0IHVwIGRlbGV0ZSB0aGVzZSBmdWxsIGxpbmVzIGFuZCBldmVyeXRoaW5nIGluIGJldHdlZW4gdGhlbTpcbiAgICAgICAgICAgICAgXCJzZWQgLWkgLWUgJy8jIyMgUHJvdmlkZXIgVmVyc2lvbi8sL1RoZSBwcm92aWRlciB2ZXJzaW9uIGNhbiBiZSBhZGp1c3RlZC8hYicgLWUgJ2QnIC5yZXBvL2Rpc3QvZ28vKi9SRUFETUUubWRcIixcbiAgICAgICAgICAgIF0uam9pbihcIlxcblwiKSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6IFwiQ29weSB0aGUgUkVBRE1FIGZpbGUgdG8gdGhlIHBhcmVudCBkaXJlY3RvcnlcIixcbiAgICAgICAgICAgIHJ1bjogXCJjcCAucmVwby9kaXN0L2dvLyovUkVBRE1FLm1kIC5yZXBvL2Rpc3QvZ28vUkVBRE1FLm1kXCIsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiBcIkNvbGxlY3QgZ28gQXJ0aWZhY3RcIixcbiAgICAgICAgICAgIHJ1bjogXCJtdiAucmVwby9kaXN0IGRpc3RcIixcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgfSxcbiAgICB9O1xuXG4gICAgY29uc3Qgd29ya2Zsb3dSdW5zT24gPSBvcHRpb25zLnVzZUN1c3RvbUdpdGh1YlJ1bm5lclxuICAgICAgPyBbXCJkZXBvdC11YnVudHUtMjQuMDQtOFwiXSAvLyA4IGNvcmUsIDMyIEdCXG4gICAgICA6IFtcInVidW50dS1sYXRlc3RcIl07IC8vIDcgR0JcblxuICAgIHN1cGVyKHtcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgICBhdXRob3JBZGRyZXNzLFxuICAgICAgYXV0aG9yTmFtZSxcbiAgICAgIG1pbk5vZGVWZXJzaW9uLFxuICAgICAgd29ya2Zsb3dDb250YWluZXJJbWFnZSxcbiAgICAgIHdvcmtmbG93UnVuc09uLFxuICAgICAgbGljZW5zZWQ6IGZhbHNlLCAvLyB3ZSBkbyBzdXBwbHkgb3VyIG93biBsaWNlbnNlIGZpbGUgd2l0aCBhIGN1c3RvbSBoZWFkZXJcbiAgICAgIHJlbGVhc2VUb05wbTogdHJ1ZSxcbiAgICAgIG5wbVRydXN0ZWRQdWJsaXNoaW5nOiBucG1UcnVzdGVkUHVibGlzaGluZyA/PyBmYWxzZSxcbiAgICAgIG5hbWU6IHBhY2thZ2VJbmZvLm5wbS5uYW1lLFxuICAgICAgZGVzY3JpcHRpb246IGBQcmVidWlsdCAke3Byb3ZpZGVyTmFtZX0gUHJvdmlkZXIgZm9yIENESyBUZXJyYWluIChjZGt0bilgLFxuICAgICAga2V5d29yZHM6IFtcbiAgICAgICAgXCJjZGt0blwiLFxuICAgICAgICBcImNkay10ZXJyYWluXCIsXG4gICAgICAgIFwiY2RrdGZcIixcbiAgICAgICAgXCJ0ZXJyYWZvcm1cIixcbiAgICAgICAgXCJvcGVudG9mdVwiLFxuICAgICAgICBcImNka1wiLFxuICAgICAgICBcInByb3ZpZGVyXCIsXG4gICAgICAgIHByb3ZpZGVyTmFtZSxcbiAgICAgIF0sXG4gICAgICBzYW1wbGVDb2RlOiBmYWxzZSxcbiAgICAgIGplc3Q6IGZhbHNlLFxuICAgICAgYXV0aG9yT3JnYW5pemF0aW9uOiB0cnVlLFxuICAgICAgZGVmYXVsdFJlbGVhc2VCcmFuY2g6IFwibWFpblwiLFxuICAgICAgcmVwb3NpdG9yeTogYGh0dHBzOi8vZ2l0aHViLmNvbS8ke3JlcG9zaXRvcnl9LmdpdGAsXG4gICAgICBtZXJnaWZ5OiBmYWxzZSxcbiAgICAgIGVzbGludDogZmFsc2UsXG4gICAgICBkZXBzVXBncmFkZTogIWlzRGVwcmVjYXRlZCxcbiAgICAgIGRlcHNVcGdyYWRlT3B0aW9uczoge1xuICAgICAgICB3b3JrZmxvd09wdGlvbnM6IHtcbiAgICAgICAgICBsYWJlbHM6IFtcImF1dG9tZXJnZVwiLCBcImF1dG8tYXBwcm92ZVwiLCBcImRlcGVuZGVuY2llc1wiXSxcbiAgICAgICAgICBzY2hlZHVsZTogVXBncmFkZURlcGVuZGVuY2llc1NjaGVkdWxlLldFRUtMWSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBweXRob246IHBhY2thZ2VJbmZvLnB5dGhvbixcbiAgICAgIC8vIFRPRE86IFJlLWVuYWJsZSBpZiByZXF1ZXN0ZWQgYW5kIHdoZW4gYXZhaWxhYmxlXG4gICAgICAvLyBwdWJsaXNoVG9OdWdldDogcGFja2FnZUluZm8ucHVibGlzaFRvTnVnZXQsXG4gICAgICAvLyBwdWJsaXNoVG9NYXZlbjogcGFja2FnZUluZm8ucHVibGlzaFRvTWF2ZW4sXG4gICAgICBwdWJsaXNoVG9HbzogcGFja2FnZUluZm8ucHVibGlzaFRvR28sXG4gICAgICByZWxlYXNlRmFpbHVyZUlzc3VlOiB0cnVlLFxuICAgICAgcGVlckRlcGVuZGVuY3lPcHRpb25zOiB7XG4gICAgICAgIHBpbm5lZERldkRlcGVuZGVuY3k6IGZhbHNlLFxuICAgICAgfSxcbiAgICAgIHdvcmtmbG93R2l0SWRlbnRpdHk6IHtcbiAgICAgICAgbmFtZTogXCJ0ZWFtLWNkay10ZXJyYWluXCIsXG4gICAgICAgIGVtYWlsOiBcImdpdGh1Yi10ZWFtLWNkay10ZXJyYWluQGNka3RuLmlvXCIsXG4gICAgICB9LFxuICAgICAgbWluTWFqb3JWZXJzaW9uOiBNSU5fTUFKT1JfVkVSU0lPTixcbiAgICAgIHN0YWxlOiB0cnVlLFxuICAgICAgc3RhbGVPcHRpb25zOiB7XG4gICAgICAgIGlzc3Vlczoge1xuICAgICAgICAgIHN0YWxlTGFiZWw6IFwic3RhbGVcIixcbiAgICAgICAgICBkYXlzQmVmb3JlU3RhbGU6IDQ1LFxuICAgICAgICAgIHN0YWxlTWVzc2FnZTpcbiAgICAgICAgICAgIFwiNDUgZGF5cyBoYXZlIHBhc3NlZCBzaW5jZSB0aGlzIGlzc3VlIHdhcyBvcGVuZWQsIGFuZCBJIGFzc3VtZSBvdGhlciBwdWJsaXNoZXMgaGF2ZSBzdWNjZWVkZWQgaW4gdGhlIG1lYW50aW1lLiBcIiArXG4gICAgICAgICAgICBcIklmIG5vIG9uZSByZW1vdmVzIHRoZSBgc3RhbGVgIGxhYmVsIG9yIGNvbW1lbnRzLCBJJ20gZ29pbmcgdG8gYXV0by1jbG9zZSB0aGlzIGlzc3VlIGluIDE0IGRheXMuXCIsXG4gICAgICAgICAgZGF5c0JlZm9yZUNsb3NlOiAxNCxcbiAgICAgICAgICBjbG9zZU1lc3NhZ2U6XG4gICAgICAgICAgICBcIjIgbW9udGhzIGhhdmUgcGFzc2VkLCBzbyBJJ20gY2xvc2luZyB0aGlzIGlzc3VlIHdpdGggdGhlIGFzc3VtcHRpb24gdGhhdCBvdGhlciBwdWJsaXNoZXMgaGF2ZSBzdWNjZWVkZWQgaW4gdGhlIG1lYW50aW1lLlwiLFxuICAgICAgICB9LFxuICAgICAgICBwdWxsUmVxdWVzdDoge1xuICAgICAgICAgIHN0YWxlTGFiZWw6IFwic3RhbGVcIixcbiAgICAgICAgICBkYXlzQmVmb3JlU3RhbGU6IDEsXG4gICAgICAgICAgc3RhbGVNZXNzYWdlOiBgQ2xvc2luZyB0aGlzIFBSLCBpZiBpdCBoYXMgbm90IG1lcmdlZCB0aGVyZSBpcyBtb3N0IGxpa2VseSBhIENJIG9yIENES1ROIGlzc3VlIHByZXZlbnRpbmcgaXQgZnJvbSBtZXJnaW5nLiBJZiB0aGlzIGhhcyBiZWVuIGEgbWFudWFsIFBSLCBwbGVhc2UgcmVvcGVuIGl0IGFuZCBhZGQgdGhlIFxcYG5vLWF1dG8tY2xvc2VcXGAgbGFiZWwgdG8gcHJldmVudCB0aGlzIGZyb20gaGFwcGVuaW5nIGFnYWluLmAsXG4gICAgICAgICAgZGF5c0JlZm9yZUNsb3NlOiAwLFxuICAgICAgICAgIGV4ZW1wdExhYmVsczogW1wibm8tYXV0by1jbG9zZVwiXSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBwdWxsUmVxdWVzdFRlbXBsYXRlOiBmYWxzZSxcbiAgICAgIGRvY2dlbjogZmFsc2UsXG4gICAgICBnaXRodWJPcHRpb25zOiB7XG4gICAgICAgIHByb2plbkNyZWRlbnRpYWxzOiBnaXRodWIuR2l0aHViQ3JlZGVudGlhbHMuZnJvbUFwcCgpLFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIHRoaXMuYWRkRGV2RGVwcyhcbiAgICAgIFwiZG90LXByb3BAXjUuMi4wXCIsXG4gICAgICBcIkBhY3Rpb25zL2NvcmVAXjEuMS4wXCIsXG4gICAgICBcIkBhY3Rpb24tdmFsaWRhdG9yL2NvcmVcIixcbiAgICAgIFwiQGFjdGlvbi12YWxpZGF0b3IvY2xpXCJcbiAgICApO1xuXG4gICAgLy8gRGVmYXVsdCBtZW1vcnkgaXMgN0dCOiBodHRwczovL2RvY3MuZ2l0aHViLmNvbS9lbi9hY3Rpb25zL3VzaW5nLWdpdGh1Yi1ob3N0ZWQtcnVubmVycy9hYm91dC1naXRodWItaG9zdGVkLXJ1bm5lcnMjc3VwcG9ydGVkLXJ1bm5lcnMtYW5kLWhhcmR3YXJlLXJlc291cmNlc1xuICAgIC8vIEN1c3RvbSBSdW5uZXJzIHdlIHVzZSBoYXZlIDMyR0Igb2YgbWVtb3J5XG4gICAgLy8gVGhlIGJlbG93IG51bWJlcnMgc2V0IGhlYXAgbGltaXRzIHRoYXQgYXJlIH4xZ2IgYW5kIH4wLjVnYiBsZXNzLCByZXNwZWN0aXZlbHksIHRoYW4gdGhlIHRvdGFsIGF2YWlsYWJsZSBtZW1vcnlcbiAgICBjb25zdCBtYXhPbGRTcGFjZVNpemUgPSBvcHRpb25zLnVzZUN1c3RvbUdpdGh1YlJ1bm5lciA/IFwiMzE3NDRcIiA6IFwiNjY1NlwiO1xuXG4gICAgLy8gR29sYW5nIG5lZWRzIG1vcmUgbWVtb3J5IHRvIGJ1aWxkXG4gICAgdGhpcy50YXNrcy5hZGRFbnZpcm9ubWVudChcbiAgICAgIFwiTk9ERV9PUFRJT05TXCIsXG4gICAgICBgLS1tYXgtb2xkLXNwYWNlLXNpemU9JHttYXhPbGRTcGFjZVNpemV9YFxuICAgICk7XG5cbiAgICB0aGlzLnRhc2tzLmFkZEVudmlyb25tZW50KFwiQ0hFQ0tQT0lOVF9ESVNBQkxFXCIsIFwiMVwiKTtcblxuICAgIGNvbnN0IHZhbGlkYXRlVGFzayA9IHRoaXMuYWRkVGFzayhcInZhbGlkYXRlLXdvcmtmbG93c1wiLCB7XG4gICAgICBleGVjOiBgZmluZCAuLy5naXRodWIvd29ya2Zsb3dzIC10eXBlIGYgLW5hbWUgXCIqLnltbFwiIC1wcmludDAgfCB4YXJncyAtMCAtbiAxIG5weCBhY3Rpb24tdmFsaWRhdG9yYCxcbiAgICB9KTtcbiAgICB2YWxpZGF0ZVRhc2suZGVzY3JpcHRpb24gPVxuICAgICAgXCJMaW50IHRoZSBZQU1MIGZpbGVzIGdlbmVyYXRlZCBieSBQcm9qZW4gdG8gZGVmaW5lIEdpdEh1YiBBY3Rpb25zIGFuZCBXb3JrZmxvd3MsIGNoZWNraW5nIHRoZW0gYWdhaW5zdCBwdWJsaXNoZWQgSlNPTiBzY2hlbWFzXCI7XG4gICAgdGhpcy5wb3N0Q29tcGlsZVRhc2suc3Bhd24odmFsaWRhdGVUYXNrKTtcblxuICAgIHRoaXMucGFja2FnZS5hZGRQYWNrYWdlUmVzb2x1dGlvbnMoXCJAdHlwZXMveWFyZ3NAMTcuMC4xM1wiKTtcblxuICAgIGNvbnN0IHNldFNhZmVEaXJlY3RvcnkgPSB7XG4gICAgICBuYW1lOiBcIlNldCBnaXQgY29uZmlnIHNhZmUuZGlyZWN0b3J5XCIsXG4gICAgICBydW46IFwiZ2l0IGNvbmZpZyAtLWdsb2JhbCAtLWFkZCBzYWZlLmRpcmVjdG9yeSAkKHB3ZClcIixcbiAgICB9O1xuXG4gICAgKCh0aGlzLmJ1aWxkV29ya2Zsb3cgYXMgYW55KS5wcmVCdWlsZFN0ZXBzIGFzIEpvYlN0ZXBbXSkucHVzaChcbiAgICAgIHNldFNhZmVEaXJlY3RvcnlcbiAgICApO1xuICAgICh0aGlzLnJlbGVhc2UgYXMgYW55KS5kZWZhdWx0QnJhbmNoLndvcmtmbG93LmpvYnMucmVsZWFzZS5zdGVwcy5zcGxpY2UoXG4gICAgICAxLFxuICAgICAgMCxcbiAgICAgIHNldFNhZmVEaXJlY3RvcnlcbiAgICApO1xuXG4gICAgLy8gYWx3YXlzIHB1Ymxpc2ggYSBuZXcgR2l0SHViIHJlbGVhc2UsIGV2ZW4gd2hlbiBwdWJsaXNoaW5nIHRvIGEgcGFydGljdWxhciBwYWNrYWdlIG1hbmFnZXIgZmFpbHNcbiAgICBjb25zdCByZWxlYXNlV29ya2Zsb3cgPSB0aGlzLnRyeUZpbmRPYmplY3RGaWxlKFxuICAgICAgXCIuZ2l0aHViL3dvcmtmbG93cy9yZWxlYXNlLnltbFwiXG4gICAgKTtcbiAgICByZWxlYXNlV29ya2Zsb3c/LmFkZE92ZXJyaWRlKFwiam9icy5yZWxlYXNlX2dpdGh1Yi5uZWVkc1wiLCBcInJlbGVhc2VcIik7XG5cbiAgICAvLyBUcnVzdGVkIHB1Ymxpc2hpbmcgcmVxdWlyZXMgbnBtID49MTEuNS4xIHdoaWNoIHNoaXBzIHdpdGggTm9kZSAyNFxuICAgIGlmIChucG1UcnVzdGVkUHVibGlzaGluZykge1xuICAgICAgdGhpcy5naXRodWJcbiAgICAgICAgPy50cnlGaW5kV29ya2Zsb3coXCJyZWxlYXNlXCIpXG4gICAgICAgID8uZmlsZT8ucGF0Y2goXG4gICAgICAgICAgSnNvblBhdGNoLnJlcGxhY2UoXG4gICAgICAgICAgICBcIi9qb2JzL3JlbGVhc2VfbnBtL3N0ZXBzLzAvd2l0aC9ub2RlLXZlcnNpb25cIixcbiAgICAgICAgICAgIFwiMjQueFwiXG4gICAgICAgICAgKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8vIGVuc3VyZSB3ZSBkb24ndCBmYWlsIGlmIHRoZSByZWxlYXNlIGZpbGUgaXMgbm90IHByZXNlbnRcbiAgICBjb25zdCBjaGVja0V4aXN0aW5nVGFnU3RlcCA9IChcbiAgICAgIHRoaXMucmVsZWFzZSBhcyBhbnlcbiAgICApLmRlZmF1bHRCcmFuY2gud29ya2Zsb3cuam9icy5yZWxlYXNlLnN0ZXBzLmZpbmQoXG4gICAgICAoczogb2JqZWN0KSA9PiBcImlkXCIgaW4gcyAmJiBzLmlkID09PSBcImNoZWNrX3RhZ19leGlzdHNcIlxuICAgICk7XG4gICAgY29uc3Qgb2xkRXhpc3RpbmdUYWdSdW46IHN0cmluZyA9IGNoZWNrRXhpc3RpbmdUYWdTdGVwLnJ1bjtcbiAgICBwcmV0dHlBc3NlcnRFcXVhbChcbiAgICAgIG9sZEV4aXN0aW5nVGFnUnVuLnNwbGl0KFwiXFxuXCIpWzBdLFxuICAgICAgXCJUQUc9JChjYXQgZGlzdC9yZWxlYXNldGFnLnR4dClcIixcbiAgICAgIFwicmVsZWFzZSBzdGVwIGNoYW5nZWQsIHBsZWFzZSBjaGVjayBpZiB0aGUgd29ya2Fyb3VuZCBzdGlsbCB3b3JrcyFcIlxuICAgICk7XG4gICAgY2hlY2tFeGlzdGluZ1RhZ1N0ZXAucnVuID0gYGlmIFsgISAtZiBkaXN0L3JlbGVhc2V0YWcudHh0IF07IHRoZW4gKGVjaG8gXCJleGlzdHM9dHJ1ZVwiID4+ICRHSVRIVUJfT1VUUFVUKSAmJiBleGl0IDA7IGZpXFxuJHtvbGRFeGlzdGluZ1RhZ1J1bn1gO1xuXG4gICAgaWYgKCFpc0RlcHJlY2F0ZWQpIHtcbiAgICAgIGNvbnN0IHsgdXBncmFkZSwgcHIgfSA9ICh0aGlzLnVwZ3JhZGVXb3JrZmxvdyBhcyBhbnkpLndvcmtmbG93c1swXS5qb2JzO1xuICAgICAgdXBncmFkZS5zdGVwcy5zcGxpY2UoMSwgMCwgc2V0U2FmZURpcmVjdG9yeSk7XG4gICAgICBwci5zdGVwcy5zcGxpY2UoMSwgMCwgc2V0U2FmZURpcmVjdG9yeSk7XG4gICAgfVxuXG4gICAgLy8gLy8gVE9ETzogUmUtZW5hYmxlIHdoZW4gTWF2ZW4gcmVxdWVzdGVkIGFuZCBpbmZyYSBhdmFpbGFibGVcbiAgICAvLyAvLyBGaXggbWF2ZW4gaXNzdWUgKGh0dHBzOi8vZ2l0aHViLmNvbS9jZGtsYWJzL3B1YmxpYi9wdWxsLzc3NylcbiAgICAvLyBnaXRodWIuR2l0SHViLm9mKHRoaXMpPy50cnlGaW5kV29ya2Zsb3coXCJyZWxlYXNlXCIpPy5maWxlPy5wYXRjaChcbiAgICAvLyAgIEpzb25QYXRjaC5hZGQoXG4gICAgLy8gICAgIFwiL2pvYnMvcmVsZWFzZV9tYXZlbi9zdGVwcy8xMC9lbnYvTUFWRU5fT1BUU1wiLFxuICAgIC8vICAgICAvLyBTZWUgaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvNzAxNTM5NjIvbmV4dXMtc3RhZ2luZy1tYXZlbi1wbHVnaW4tbWF2ZW4tZGVwbG95LWZhaWxlZC1hbi1hcGktaW5jb21wYXRpYmlsaXR5LXdhcy1lbmNvXG4gICAgLy8gICAgIFwiLS1hZGQtb3BlbnM9amF2YS5iYXNlL2phdmEudXRpbD1BTEwtVU5OQU1FRCAtLWFkZC1vcGVucz1qYXZhLmJhc2UvamF2YS5sYW5nLnJlZmxlY3Q9QUxMLVVOTkFNRUQgLS1hZGQtb3BlbnM9amF2YS5iYXNlL2phdmEudGV4dD1BTEwtVU5OQU1FRCAtLWFkZC1vcGVucz1qYXZhLmRlc2t0b3AvamF2YS5hd3QuZm9udD1BTEwtVU5OQU1FRFwiXG4gICAgLy8gICApXG4gICAgLy8gKTtcblxuICAgIHRoaXMucGluR2l0aHViQWN0aW9uVmVyc2lvbnMoZ2l0aHViQWN0aW9uUGlubmVkVmVyc2lvbnMpO1xuXG4gICAgbmV3IENka3RmQ29uZmlnKHRoaXMsIHtcbiAgICAgIHRlcnJhZm9ybVByb3ZpZGVyLFxuICAgICAgcHJvdmlkZXJOYW1lLFxuICAgICAgZnFwcm92aWRlck5hbWUsXG4gICAgICBwcm92aWRlclZlcnNpb24sXG4gICAgICBjZGt0blZlcnNpb24sXG4gICAgICBjb25zdHJ1Y3RzVmVyc2lvbixcbiAgICAgIGpzaWlWZXJzaW9uLFxuICAgICAgdHlwZXNjcmlwdFZlcnNpb24sXG4gICAgICBwYWNrYWdlSW5mbyxcbiAgICAgIGdpdGh1Yk5hbWVzcGFjZSxcbiAgICAgIGRlcHJlY2F0aW9uRGF0ZSxcbiAgICAgIGlzRGVwcmVjYXRlZDogISFpc0RlcHJlY2F0ZWQsXG4gICAgfSk7XG4gICAgbmV3IEN1c3RvbWl6ZWRMaWNlbnNlKHRoaXMsIG9wdGlvbnMuY3JlYXRpb25ZZWFyLCBvcHRpb25zLmxpY2Vuc2VlKTtcbiAgICBuZXcgR2l0aHViSXNzdWVzKHRoaXMsIHsgcHJvdmlkZXJOYW1lIH0pO1xuICAgIG5ldyBBdXRvQXBwcm92ZSh0aGlzKTtcbiAgICBuZXcgQXV0b0Nsb3NlQ29tbXVuaXR5SXNzdWVzKHRoaXMsIHsgcHJvdmlkZXJOYW1lIH0pO1xuICAgIG5ldyBBdXRvbWVyZ2UodGhpcyk7XG4gICAgbmV3IExvY2tJc3N1ZXModGhpcyk7XG5cbiAgICBpZiAoIWlzRGVwcmVjYXRlZCkge1xuICAgICAgY29uc3QgdXBncmFkZVNjcmlwdCA9IG5ldyBDaGVja0ZvclVwZ3JhZGVzU2NyaXB0RmlsZSh0aGlzLCB7XG4gICAgICAgIHByb3ZpZGVyVmVyc2lvbixcbiAgICAgICAgZnFwcm92aWRlck5hbWUsXG4gICAgICB9KTtcbiAgICAgIG5ldyBQcm92aWRlclVwZ3JhZGUodGhpcywge1xuICAgICAgICBjaGVja0ZvclVwZ3JhZGVzU2NyaXB0UGF0aDogdXBncmFkZVNjcmlwdC5wYXRoLFxuICAgICAgICB3b3JrZmxvd1J1bnNPbixcbiAgICAgICAgbm9kZUhlYXBTaXplOiBtYXhPbGRTcGFjZVNpemUsXG4gICAgICB9KTtcbiAgICAgIG5ldyBBbGVydE9wZW5QcnModGhpcywge1xuICAgICAgICBzbGFja1dlYmhvb2tVcmw6IFwiJHt7IHNlY3JldHMuQUxFUlRfUFJTX1NMQUNLX1dFQkhPT0tfVVJMIH19XCIsXG4gICAgICAgIHJlcG9zaXRvcnksXG4gICAgICB9KTtcbiAgICAgIG5ldyBEZXBlbmRhYm90KHRoaXMpO1xuICAgIH1cblxuICAgIG5ldyBUZXh0RmlsZSh0aGlzLCBcIi5naXRodWIvQ09ERU9XTkVSU1wiLCB7XG4gICAgICBsaW5lczogW1xuICAgICAgICBcIiMgVGhlc2Ugb3duZXJzIHdpbGwgYmUgdGhlIGRlZmF1bHQgb3duZXJzIGZvciBldmVyeXRoaW5nIGluIFwiLFxuICAgICAgICBcIiMgdGhlIHJlcG8uIFVubGVzcyBhIGxhdGVyIG1hdGNoIHRha2VzIHByZWNlZGVuY2UsIFwiLFxuICAgICAgICBcIiMgdGhleSB3aWxsIGJlIHJlcXVlc3RlZCBmb3IgcmV2aWV3IHdoZW4gc29tZW9uZSBvcGVucyBhIFwiLFxuICAgICAgICBcIiMgcHVsbCByZXF1ZXN0LlwiLFxuICAgICAgICBcIiogICAgICAgQGNka3RuLWlvL3RlYW0tY2RrLXRlcnJhaW5cIixcbiAgICAgIF0sXG4gICAgfSk7XG5cbiAgICBpZiAoIWlzRGVwcmVjYXRlZCkge1xuICAgICAgbmV3IFNob3VsZFJlbGVhc2VTY3JpcHRGaWxlKHRoaXMsIHt9KTtcblxuICAgICAgY29uc3QgcmVsZWFzZVRhc2sgPSB0aGlzLnRhc2tzLnRyeUZpbmQoXCJyZWxlYXNlXCIpITtcbiAgICAgIHRoaXMucmVtb3ZlVGFzayhcInJlbGVhc2VcIik7XG4gICAgICB0aGlzLmFkZFRhc2soXCJyZWxlYXNlXCIsIHtcbiAgICAgICAgZGVzY3JpcHRpb246IHJlbGVhc2VUYXNrLmRlc2NyaXB0aW9uLFxuICAgICAgICBzdGVwczogcmVsZWFzZVRhc2suc3RlcHMsXG4gICAgICAgIGVudjogKHJlbGVhc2VUYXNrIGFzIGFueSkuX2VudixcbiAgICAgICAgY29uZGl0aW9uOiBcIm5vZGUgLi9zY3JpcHRzL3Nob3VsZC1yZWxlYXNlLmpzXCIsXG4gICAgICB9KTtcbiAgICAgIHRoaXMuYWRkVGFzayhcInVuY29uZGl0aW9uYWwtcmVsZWFzZVwiLCB7XG4gICAgICAgIGRlc2NyaXB0aW9uOiByZWxlYXNlVGFzay5kZXNjcmlwdGlvbixcbiAgICAgICAgc3RlcHM6IHJlbGVhc2VUYXNrLnN0ZXBzLFxuICAgICAgICBlbnY6IChyZWxlYXNlVGFzayBhcyBhbnkpLl9lbnYsXG4gICAgICB9KTtcblxuICAgICAgY29uc3QgcmVsZWFzZUpvYlN0ZXBzOiBhbnlbXSA9IChcbiAgICAgICAgdGhpcy5naXRodWI/LnRyeUZpbmRXb3JrZmxvdyhcInJlbGVhc2VcIikgYXMgYW55XG4gICAgICApLmpvYnMucmVsZWFzZS5zdGVwcztcbiAgICAgIGNvbnN0IGdpdFJlbW90ZUpvYiA9IHJlbGVhc2VKb2JTdGVwcy5maW5kKChpdCkgPT4gaXQuaWQgPT09IFwiZ2l0X3JlbW90ZVwiKTtcbiAgICAgIHByZXR0eUFzc2VydEVxdWFsKFxuICAgICAgICBnaXRSZW1vdGVKb2IucnVuLFxuICAgICAgICAnZWNobyBcImxhdGVzdF9jb21taXQ9JChnaXQgbHMtcmVtb3RlIG9yaWdpbiAtaCAke3sgZ2l0aHViLnJlZiB9fSB8IGN1dCAtZjEpXCIgPj4gJEdJVEhVQl9PVVRQVVRcXG5jYXQgJEdJVEhVQl9PVVRQVVQnLFxuICAgICAgICBcImdpdF9yZW1vdGUgc3RlcCBpbiByZWxlYXNlIHdvcmtmbG93IGRpZCBub3QgbWF0Y2ggZXhwZWN0ZWQgc3RyaW5nLCBwbGVhc2UgY2hlY2sgaWYgdGhlIHdvcmthcm91bmQgc3RpbGwgd29ya3MhXCJcbiAgICAgICk7XG4gICAgICBjb25zdCBwcmV2aW91c0NvbW1hbmQgPSBnaXRSZW1vdGVKb2IucnVuLnJlcGxhY2UoXCJcXG5cIiwgXCIgJiYgXCIpO1xuXG4gICAgICBjb25zdCBjYW5jZWxDb21tYW5kID1cbiAgICAgICAgJ2VjaG8gXCJsYXRlc3RfY29tbWl0PXJlbGVhc2VfY2FuY2VsbGVkXCIgPj4gJEdJVEhVQl9PVVRQVVQnOyAvLyB0aGlzIGNhbmNlbHMgdGhlIHJlbGVhc2UgdmlhIGEgbm9uLW1hdGNoaW5nIFNIQTtcbiAgICAgIGdpdFJlbW90ZUpvYi5ydW4gPSBgbm9kZSAuL3NjcmlwdHMvc2hvdWxkLXJlbGVhc2UuanMgJiYgKCR7cHJldmlvdXNDb21tYW5kfSkgfHwgJHtjYW5jZWxDb21tYW5kfWA7XG4gICAgICBnaXRSZW1vdGVKb2IubmFtZSArPVxuICAgICAgICBcIiBvciBjYW5jZWwgdmlhIGZha2luZyBhIFNIQSBpZiByZWxlYXNlIHdhcyBjYW5jZWxsZWRcIjtcbiAgICB9XG5cbiAgICBjb25zdCBzdGFsZVdvcmtmbG93ID0gdGhpcy50cnlGaW5kT2JqZWN0RmlsZShcIi5naXRodWIvd29ya2Zsb3dzL3N0YWxlLnltbFwiKTtcbiAgICBzdGFsZVdvcmtmbG93Py5hZGRPdmVycmlkZShcIm9uLnNjaGVkdWxlXCIsIFtcbiAgICAgIHtcbiAgICAgICAgY3JvbjogZ2VuZXJhdGVSYW5kb21Dcm9uKHsgcHJvamVjdDogdGhpcywgbWF4SG91cjogNCwgaG91ck9mZnNldDogMSB9KSxcbiAgICAgIH0sXG4gICAgXSk7XG5cbiAgICBjb25zdCB1cGdyYWRlV29ya2Zsb3cgPSB0aGlzLnRyeUZpbmRPYmplY3RGaWxlKFxuICAgICAgXCIuZ2l0aHViL3dvcmtmbG93cy91cGdyYWRlLW1haW4ueW1sXCJcbiAgICApO1xuICAgIHVwZ3JhZGVXb3JrZmxvdz8uYWRkT3ZlcnJpZGUoXCJvbi5zY2hlZHVsZVwiLCBbXG4gICAgICB7XG4gICAgICAgIGNyb246IGdlbmVyYXRlUmFuZG9tQ3Jvbih7XG4gICAgICAgICAgcHJvamVjdDogdGhpcyxcbiAgICAgICAgICBtYXhIb3VyOiAwLFxuICAgICAgICAgIGhvdXJPZmZzZXQ6IDEsXG4gICAgICAgICAgc2NoZWR1bGU6IFNjaGVkdWxlLldlZWtseSxcbiAgICAgICAgfSksXG4gICAgICB9LFxuICAgIF0pO1xuXG4gICAgLy8gU3VibW9kdWxlIGRvY3VtZW50YXRpb24gZ2VuZXJhdGlvblxuICAgIHRoaXMuZ2l0aWdub3JlLmV4Y2x1ZGUoXCJBUEkubWRcIik7IC8vIGlnbm9yZSB0aGUgb2xkIGZpbGUsIHdlIG5vdyBnZW5lcmF0ZSBpdCBpbiB0aGUgZG9jcyBmb2xkZXJcbiAgICB0aGlzLmFkZERldkRlcHMoXCJqc2lpLWRvY2dlbkBeMTAuMi4zXCIpO1xuICAgIGlmIChqc2lpVmVyc2lvbikge1xuICAgICAgLy8gTk9URTogdGhlIGJlbG93IGlzIG1ha2luZyBhIGJyb2FkIGFzc3VtcHRpb24gdGhhdCB5b3UncmUgcGFzc2luZyBhIHJhbmdlIGxpa2UgXCJ+NS4zLjBcIiB0byBqc2lpVmVyc2lvblxuICAgICAgLy8gSWYgeW91IHVzZSB0aGF0IGZpZWxkIHRvIHBhc3MgYSB2ZXJ5IHNwZWNpZmljIHZlcnNpb24gKGUuZy4gXCI1LjMuMTFcIikgdGhlbiB0aGlzIG1pZ2h0IGJyZWFrXG4gICAgICB0aGlzLmFkZERldkRlcHMoYGpzaWktcm9zZXR0YUAke2pzaWlWZXJzaW9ufWApO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmFkZERldkRlcHMoYGpzaWktcm9zZXR0YWApO1xuICAgIH1cblxuICAgIGNvbnN0IGRvY2dlbiA9IHRoaXMuYWRkVGFzayhcImRvY2dlblwiLCB7XG4gICAgICBkZXNjcmlwdGlvbjogXCJHZW5lcmF0ZSBkb2N1bWVudGF0aW9uIGZvciB0aGUgcHJvamVjdFwiLFxuICAgICAgc3RlcHM6IFtcbiAgICAgICAge1xuICAgICAgICAgIGV4ZWM6IFtcbiAgICAgICAgICAgIFwicm0gLXJmIGRvY3NcIixcbiAgICAgICAgICAgIFwicm0gLWYgQVBJLm1kXCIsXG4gICAgICAgICAgICBcIm1rZGlyIGRvY3NcIixcbiAgICAgICAgICAgIC8vIFRPRE86IFJlLWVuYWJsZSBqYXZhIC8gY3NoYXJwXG4gICAgICAgICAgICAvLyBcImpzaWktZG9jZ2VuIC0tc3BsaXQtYnktc3VibW9kdWxlIC1sIHR5cGVzY3JpcHQgLWwgcHl0aG9uIC1sIGphdmEgLWwgY3NoYXJwIC1sIGdvXCIsXG4gICAgICAgICAgICBcImpzaWktZG9jZ2VuIC0tc3BsaXQtYnktc3VibW9kdWxlIC1sIHR5cGVzY3JpcHQgLWwgcHl0aG9uIC1sIGdvXCIsXG4gICAgICAgICAgICAvLyBUaGVyZSBpcyBubyBuaWNlIHdheSB0byB0ZWxsIGpzaWktZG9jZ2VuIHRvIGdlbmVyYXRlIGRvY3MgaW50byBhIGZvbGRlciBzbyBJIHdlbnQgdGhpcyByb3V0ZVxuICAgICAgICAgICAgXCJtdiAqLioubWQgZG9jc1wiLFxuICAgICAgICAgICAgLy8gU29tZSBwYXJ0IG9mIHRoZSBkb2N1bWVudGF0aW9uIGFyZSB0b28gbG9uZywgd2UgbmVlZCB0byB0cnVuY2F0ZSB0aGVtIHRvIH4xME1CXG4gICAgICAgICAgICBcImNkIGRvY3NcIixcbiAgICAgICAgICAgIFwibHMgLi8gfCB4YXJncyBzZWQgLWkgJzE1MDAwMCwkIGQnICQxXCIsXG4gICAgICAgICAgXS5qb2luKFwiICYmIFwiKSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfSk7XG4gICAgdGhpcy5wb3N0Q29tcGlsZVRhc2suc3Bhd24oZG9jZ2VuKTtcbiAgICB0aGlzLmdpdGlnbm9yZS5pbmNsdWRlKGAvZG9jcy8qLm1kYCk7XG4gICAgdGhpcy5hbm5vdGF0ZUdlbmVyYXRlZChgL2RvY3MvKi5tZGApO1xuXG4gICAgLy8gU2V0dGluZyB0aGUgdmVyc2lvbiBpbiBwYWNrYWdlLmpzb24gc28gdGhlIGdvbGFuZyBkb2NzIGhhdmUgdGhlIGNvcnJlY3QgdmVyc2lvblxuICAgIGNvbnN0IHVuY29uZGl0aW9uYWxCdW1wID0gdGhpcy5hZGRUYXNrKFwidW5jb25kaXRpb25hbC1idW1wXCIsIHtcbiAgICAgIGRlc2NyaXB0aW9uOiBcIlNldCB0aGUgdmVyc2lvbiBpbiBwYWNrYWdlLmpzb24gdG8gdGhlIGN1cnJlbnQgdmVyc2lvblwiLFxuICAgICAgc3RlcHM6IFtcbiAgICAgICAge1xuICAgICAgICAgIG5hbWU6IFwiQ2xlYXIgdGhlIGNoYW5nZWxvZyBzbyB0aGF0IGl0IGRvZXNuJ3QgZ2V0IHB1Ymxpc2hlZCB0d2ljZVwiLFxuICAgICAgICAgIGV4ZWM6IFwicm0gLWYgJENIQU5HRUxPR1wiLFxuICAgICAgICB9LFxuICAgICAgICB7IGJ1aWx0aW46IFwicmVsZWFzZS9idW1wLXZlcnNpb25cIiB9LFxuICAgICAgXSxcbiAgICAgIGVudjoge1xuICAgICAgICBPVVRGSUxFOiBcInBhY2thZ2UuanNvblwiLFxuICAgICAgICBDSEFOR0VMT0c6IFwiZGlzdC9jaGFuZ2Vsb2cubWRcIixcbiAgICAgICAgQlVNUEZJTEU6IFwiZGlzdC92ZXJzaW9uLnR4dFwiLFxuICAgICAgICBSRUxFQVNFVEFHOiBcImRpc3QvcmVsZWFzZXRhZy50eHRcIixcbiAgICAgICAgUkVMRUFTRV9UQUdfUFJFRklYOiBcIlwiLFxuICAgICAgICBNSU5fTUFKT1I6IFN0cmluZyhNSU5fTUFKT1JfVkVSU0lPTiksXG4gICAgICB9LFxuICAgIH0pO1xuICAgIHRoaXMucHJlQ29tcGlsZVRhc2suc3Bhd24odW5jb25kaXRpb25hbEJ1bXApO1xuICAgIC8vIFRvIGJ1bXAgY29ycmVjdGx5IHdlIG5lZWQgdG8gaGF2ZSB0aGUgY29tcGxldGVseSBjbG9uZWQgcmVwb1xuICAgICh0aGlzLmJ1aWxkV29ya2Zsb3cgYXMgYW55KS53b3JrZmxvdy5maWxlLmFkZE92ZXJyaWRlKFxuICAgICAgXCJqb2JzLmJ1aWxkLnN0ZXBzLjAud2l0aC5mZXRjaC1kZXB0aFwiLFxuICAgICAgMFxuICAgICk7XG4gICAgLy8gVW5kbyB0aGUgY2hhbmdlcyBhZnRlciBjb21waWxhdGlvblxuICAgIHRoaXMuYnVpbGRXb3JrZmxvdz8uYWRkUG9zdEJ1aWxkU3RlcHMoe1xuICAgICAgbmFtZTogXCJSZXZlcnQgcGFja2FnZS5qc29uIHZlcnNpb24gYnVtcFwiLFxuICAgICAgcnVuOiBcImdpdCBjaGVja291dCBwYWNrYWdlLmpzb25cIixcbiAgICB9KTtcblxuICAgIG5ldyBDb3B5cmlnaHRIZWFkZXJzKHRoaXMpO1xuICAgIG5ldyBEZXByZWNhdGVQYWNrYWdlcyh0aGlzLCB7XG4gICAgICBwcm92aWRlck5hbWUsXG4gICAgICBwYWNrYWdlSW5mbyxcbiAgICAgIGlzRGVwcmVjYXRlZDogISFpc0RlcHJlY2F0ZWQsXG4gICAgfSk7XG4gICAgaWYgKCFpc0RlcHJlY2F0ZWQpIHtcbiAgICAgIG5ldyBGb3JjZVJlbGVhc2UodGhpcywgeyB3b3JrZmxvd1J1bnNPbiB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHBpbkdpdGh1YkFjdGlvblZlcnNpb25zKHBpbm5lZFZlcnNpb25zOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+KSB7XG4gICAgLy8gVXNlIHBpbm5lZCB2ZXJzaW9ucyBvZiBnaXRodWIgYWN0aW9uc1xuICAgIE9iamVjdC5lbnRyaWVzKHBpbm5lZFZlcnNpb25zKS5mb3JFYWNoKChbbmFtZSwgc2hhXSkgPT4ge1xuICAgICAgdGhpcy5naXRodWI/LmFjdGlvbnMuc2V0KG5hbWUsIGAke25hbWV9QCR7c2hhfWApO1xuICAgIH0pO1xuICB9XG59XG5cbmZ1bmN0aW9uIHByZXR0eUFzc2VydEVxdWFsPFQ+KHN1YmplY3Q6IFQsIGV4cGVjdGVkOiBULCBtZXNzYWdlPzogc3RyaW5nKTogdm9pZCB7XG4gIGlmIChzdWJqZWN0ICE9PSBleHBlY3RlZCkge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIGAke21lc3NhZ2UgPz8gXCJBc3NlcnRpb24gZmFpbGVkXCJ9OiBleHBlY3RlZCAke0pTT04uc3RyaW5naWZ5KFxuICAgICAgICBleHBlY3RlZFxuICAgICAgKX0gYnV0IGdvdCAke0pTT04uc3RyaW5naWZ5KHN1YmplY3QpfWBcbiAgICApO1xuICB9XG59XG4iXX0=
468
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSwwREFBMEQ7QUFDMUQsaUNBQWtDO0FBQ2xDLDZDQUF5QztBQUN6QyxtQ0FBMEQ7QUFFMUQsc0RBQW9FO0FBQ3BFLHFEQUFnRDtBQUNoRCxpREFBNkM7QUFDN0MsK0VBQXlFO0FBQ3pFLDJDQUF3QztBQUN4QyxpREFBNkM7QUFDN0MsMkRBQXVEO0FBQ3ZELDZEQUF5RDtBQUN6RCw2Q0FBMEM7QUFDMUMsNkRBQXlEO0FBQ3pELG1EQUErQztBQUMvQyxtREFBK0M7QUFDL0MsK0NBQTJDO0FBRTNDLHlEQUFxRDtBQUNyRCxxRUFBMEU7QUFDMUUsNkRBQW1FO0FBQ25FLG9EQUFrRTtBQUVsRSxtSEFBbUg7QUFDbkgsTUFBTSxpQkFBaUIsR0FBRyxDQUFDLENBQUM7QUF1RDVCLE1BQU0sWUFBWSxHQUFHLENBQUMsWUFBb0IsRUFBVSxFQUFFO0lBQ3BELE9BQU8sQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQztRQUM5QyxDQUFDLENBQUMsR0FBRyxZQUFZLFdBQVc7UUFDNUIsQ0FBQyxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBQ3ZDLENBQUMsQ0FBQztBQUVGLE1BQU0sMEJBQTBCLEdBQUc7SUFDakMsa0JBQWtCLEVBQUUsMENBQTBDLEVBQUUsU0FBUztJQUN6RSwyQkFBMkIsRUFBRSwwQ0FBMEMsRUFBRSxTQUFTO0lBQ2xGLHVCQUF1QixFQUFFLDBDQUEwQyxFQUFFLFNBQVM7SUFDOUUsc0JBQXNCLEVBQUUsMENBQTBDLEVBQUUsU0FBUztJQUM3RSxrQkFBa0IsRUFBRSwwQ0FBMEMsRUFBRSxTQUFTO0lBQ3pFLG9CQUFvQixFQUFFLDBDQUEwQyxFQUFFLFNBQVM7SUFDM0Usb0JBQW9CLEVBQUUsMENBQTBDLEVBQUUsU0FB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Q0FBaUIsQ0FBQyxJQUFJLEVBQUU7WUFDMUIsWUFBWTtZQUNaLFdBQVc7WUFDWCxZQUFZLEVBQUUsQ0FBQyxDQUFDLFlBQVk7U0FDN0IsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ2xCLElBQUksNEJBQVksQ0FBQyxJQUFJLEVBQUUsRUFBRSxjQUFjLEVBQUUsQ0FBQyxDQUFDO1FBQzdDLENBQUM7SUFDSCxDQUFDO0lBRU8sdUJBQXVCLENBQUMsY0FBc0M7UUFDcEUsd0NBQXdDO1FBQ3hDLE1BQU0sQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLEVBQUUsRUFBRTtZQUNyRCxJQUFJLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLEdBQUcsSUFBSSxJQUFJLEdBQUcsRUFBRSxDQUFDLENBQUM7UUFDbkQsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOztBQXZmSCxvREF3ZkM7OztBQUVELFNBQVMsaUJBQWlCLENBQUksT0FBVSxFQUFFLFFBQVcsRUFBRSxPQUFnQjtJQUNyRSxJQUFJLE9BQU8sS0FBSyxRQUFRLEVBQUUsQ0FBQztRQUN6QixNQUFNLElBQUksS0FBSyxDQUNiLEdBQUcsT0FBTyxJQUFJLGtCQUFrQixjQUFjLElBQUksQ0FBQyxTQUFTLENBQzFELFFBQVEsQ0FDVCxZQUFZLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FDdkMsQ0FBQztJQUNKLENBQUM7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXJlcXVpcmUtaW1wb3J0cyAqL1xuaW1wb3J0IGFzc2VydCA9IHJlcXVpcmUoXCJhc3NlcnRcIik7XG5pbXBvcnQgeyBwYXNjYWxDYXNlIH0gZnJvbSBcImNoYW5nZS1jYXNlXCI7XG5pbXBvcnQgeyBUZXh0RmlsZSwgY2RrLCBnaXRodWIsIEpzb25QYXRjaCB9IGZyb20gXCJwcm9qZW5cIjtcbmltcG9ydCB7IEpvYlN0ZXAgfSBmcm9tIFwicHJvamVuL2xpYi9naXRodWIvd29ya2Zsb3dzLW1vZGVsXCI7XG5pbXBvcnQgeyBVcGdyYWRlRGVwZW5kZW5jaWVzU2NoZWR1bGUgfSBmcm9tIFwicHJvamVuL2xpYi9qYXZhc2NyaXB0XCI7XG5pbXBvcnQgeyBBbGVydE9wZW5QcnMgfSBmcm9tIFwiLi9hbGVydC1vcGVuLXByc1wiO1xuaW1wb3J0IHsgQXV0b0FwcHJvdmUgfSBmcm9tIFwiLi9hdXRvLWFwcHJvdmVcIjtcbmltcG9ydCB7IEF1dG9DbG9zZUNvbW11bml0eUlzc3VlcyB9IGZyb20gXCIuL2F1dG8tY2xvc2UtY29tbXVuaXR5LWlzc3Vlc1wiO1xuaW1wb3J0IHsgQXV0b21lcmdlIH0gZnJvbSBcIi4vYXV0b21lcmdlXCI7XG5pbXBvcnQgeyBDZGt0ZkNvbmZpZyB9IGZyb20gXCIuL2Nka3RmLWNvbmZpZ1wiO1xuaW1wb3J0IHsgQ29weXJpZ2h0SGVhZGVycyB9IGZyb20gXCIuL2NvcHlyaWdodC1oZWFkZXJzXCI7XG5pbXBvcnQgeyBDdXN0b21pemVkTGljZW5zZSB9IGZyb20gXCIuL2N1c3RvbWl6ZWQtbGljZW5zZVwiO1xuaW1wb3J0IHsgRGVwZW5kYWJvdCB9IGZyb20gXCIuL2RlcGVuZGFib3RcIjtcbmltcG9ydCB7IERlcHJlY2F0ZVBhY2thZ2VzIH0gZnJvbSBcIi4vZGVwcmVjYXRlLXBhY2thZ2VzXCI7XG5pbXBvcnQgeyBGb3JjZVJlbGVhc2UgfSBmcm9tIFwiLi9mb3JjZS1yZWxlYXNlXCI7XG5pbXBvcnQgeyBHaXRodWJJc3N1ZXMgfSBmcm9tIFwiLi9naXRodWItaXNzdWVzXCI7XG5pbXBvcnQgeyBMb2NrSXNzdWVzIH0gZnJvbSBcIi4vbG9jay1pc3N1ZXNcIjtcbmltcG9ydCB7IFBhY2thZ2VJbmZvIH0gZnJvbSBcIi4vcGFja2FnZS1pbmZvXCI7XG5pbXBvcnQgeyBQcm92aWRlclVwZ3JhZGUgfSBmcm9tIFwiLi9wcm92aWRlci11cGdyYWRlXCI7XG5pbXBvcnQgeyBDaGVja0ZvclVwZ3JhZGVzU2NyaXB0RmlsZSB9IGZyb20gXCIuL3NjcmlwdHMvY2hlY2stZm9yLXVwZ3JhZGVzXCI7XG5pbXBvcnQgeyBTaG91bGRSZWxlYXNlU2NyaXB0RmlsZSB9IGZyb20gXCIuL3NjcmlwdHMvc2hvdWxkLXJlbGVhc2VcIjtcbmltcG9ydCB7IGdlbmVyYXRlUmFuZG9tQ3JvbiwgU2NoZWR1bGUgfSBmcm9tIFwiLi91dGlsL3JhbmRvbS1jcm9uXCI7XG5cbi8vIGVuc3VyZSBuZXcgcHJvamVjdHMgc3RhcnQgd2l0aCAxLjAuMCBzbyB0aGF0IGV2ZXJ5IGZvbGxvd2luZyBicmVha2luZyBjaGFuZ2UgbGVhZHMgdG8gYW4gaW5jcmVhc2VkIG1ham9yIHZlcnNpb25cbmNvbnN0IE1JTl9NQUpPUl9WRVJTSU9OID0gMTtcblxuZXhwb3J0IGludGVyZmFjZSBDZGt0blByb3ZpZGVyUHJvamVjdE9wdGlvbnMgZXh0ZW5kcyBjZGsuSnNpaVByb2plY3RPcHRpb25zIHtcbiAgcmVhZG9ubHkgdXNlQ3VzdG9tR2l0aHViUnVubmVyPzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgdGVycmFmb3JtUHJvdmlkZXI6IHN0cmluZztcbiAgcmVhZG9ubHkgY2RrdG5WZXJzaW9uOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBVc2UgYGNka3RuVmVyc2lvbmAgaW5zdGVhZC4gVGhpcyBhbGlhcyBpcyBwcm92aWRlZCBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eS5cbiAgICovXG4gIHJlYWRvbmx5IGNka3RmVmVyc2lvbj86IHN0cmluZztcbiAgcmVhZG9ubHkgY29uc3RydWN0c1ZlcnNpb246IHN0cmluZztcbiAgcmVhZG9ubHkgZm9yY2VNYWpvclZlcnNpb24/OiBudW1iZXI7XG4gIC8qKlxuICAgKiBkZWZhdWx0cyB0byBcImNka3RuXCJcbiAgICovXG4gIHJlYWRvbmx5IG5hbWVzcGFjZT86IHN0cmluZztcbiAgLyoqXG4gICAqIGRlZmF1bHRzIHRvIFwiY2RrdG4taW9cIlxuICAgKiBwcmV2aW91c2x5IHdhcyBcImNka3RmXCIuIFVzZWQgZm9yIEdpdEh1YiBvcmcgbmFtZSBhbmQgcGFja2FnZSBzY29waW5nXG4gICAqL1xuICByZWFkb25seSBnaXRodWJOYW1lc3BhY2U/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IG1hdmVuRW5kcG9pbnQ/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBkZWZhdWx0cyB0byBcIklvLkNka3RuXCJcbiAgICovXG4gIHJlYWRvbmx5IG51Z2V0T3JnPzogc3RyaW5nO1xuICAvKipcbiAgICogZGVmYXVsdHMgdG8gXCJjZGt0blwiXG4gICAqL1xuICByZWFkb25seSBtYXZlbk9yZz86IHN0cmluZztcbiAgLyoqXG4gICAqIGRlZmF1bHRzIHRvIFwiaW8uJHttYXZlbk9yZ31cIlxuICAgKi9cbiAgcmVhZG9ubHkgbWF2ZW5Hcm91cElkPzogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIHllYXIgb2YgdGhlIGNyZWF0aW9uIG9mIHRoZSByZXBvc2l0b3J5LCBmb3IgY29weXJpZ2h0IHB1cnBvc2VzLlxuICAgKiBXaWxsIGZhbGwgYmFjayB0byB0aGUgY3VycmVudCB5ZWFyIGlmIG5vdCBzcGVjaWZpZWQuXG4gICAqL1xuICByZWFkb25seSBjcmVhdGlvblllYXI/OiBudW1iZXI7XG4gIC8qKlxuICAgKiBXaGV0aGVyIG9yIG5vdCB0aGlzIHByZWJ1aWx0IHByb3ZpZGVyIGlzIGRlcHJlY2F0ZWQuXG4gICAqIElmIHRydWUsIG5vIG5ldyB2ZXJzaW9ucyB3aWxsIGJlIHB1Ymxpc2hlZC5cbiAgICovXG4gIHJlYWRvbmx5IGlzRGVwcmVjYXRlZD86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBBbiBvcHRpb25hbCBkYXRlIHdoZW4gdGhlIHByb2plY3Qgc2hvdWxkIGJlIGNvbnNpZGVyZWQgZGVwcmVjYXRlZCwgdG8gYmUgdXNlZCBpbiB0aGUgUkVBRE1FIHRleHQuXG4gICAqIElmIG5vIGRhdGUgaXMgcHJvdmlkZWQsIHRoZW4gdGhlIGRhdGUgb2YgdGhlIGJ1aWxkIHdpbGwgYmUgdXNlZCBieSBkZWZhdWx0LlxuICAgKi9cbiAgcmVhZG9ubHkgZGVwcmVjYXRpb25EYXRlPzogc3RyaW5nO1xuICAvKipcbiAgICogZGVmYXVsdHMgdG8gXCJIYXNoaUNvcnAsIEluYy5cIlxuICAgKi9cbiAgcmVhZG9ubHkgbGljZW5zZWU/OiBzdHJpbmc7XG59XG5cbmNvbnN0IGdldE1hdmVuTmFtZSA9IChwcm92aWRlck5hbWU6IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gIHJldHVybiBbXCJudWxsXCIsIFwicmFuZG9tXCJdLmluY2x1ZGVzKHByb3ZpZGVyTmFtZSlcbiAgICA/IGAke3Byb3ZpZGVyTmFtZX1fcHJvdmlkZXJgXG4gICAgOiBwcm92aWRlck5hbWUucmVwbGFjZSgvLS9naSwgXCJfXCIpO1xufTtcblxuY29uc3QgZ2l0aHViQWN0aW9uUGlubmVkVmVyc2lvbnMgPSB7XG4gIFwiYWN0aW9ucy9jaGVja291dFwiOiBcIjExYmQ3MTkwMWJiZTViMTYzMGNlZWE3M2QyNzU5NzM2NGM5YWY2ODNcIiwgLy8gdjQuMi4yXG4gIFwiYWN0aW9ucy9kb3dubG9hZC1hcnRpZmFjdFwiOiBcIjk1ODE1YzM4Y2YyZmYyMTY0ODY5Y2JhYjc5ZGE4ZDFmNDIyYmM4OWVcIiwgLy8gdjQuMi4xXG4gIFwiYWN0aW9ucy9naXRodWItc2NyaXB0XCI6IFwiNjBhMGQ4MzAzOWM3NGE0YWVlNTQzNTA4ZDJmZmNiMWMzNzk5Y2RlYVwiLCAvLyB2Ny4wLjFcbiAgXCJhY3Rpb25zL3NldHVwLWRvdG5ldFwiOiBcIjY3YTM1NzNjOWE5ODZhM2Y5YzU5NDUzOWY0YWI1MTFkNTdiYjNjZTlcIiwgLy8gdjQuMy4xXG4gIFwiYWN0aW9ucy9zZXR1cC1nb1wiOiBcIjBhYWNjZmQxNTBkNTBjY2FlYjU4ZWJkODhkMzZlOTE5NjdhNWYzNWJcIiwgLy8gdjUuNC4wXG4gIFwiYWN0aW9ucy9zZXR1cC1qYXZhXCI6IFwiM2E0ZjZlMWFmNTA0Y2Y2YTMxODU1ZmE4OTljNmFhNTM1NWJhNmMxMlwiLCAvLyB2NC43LjBcbiAgXCJhY3Rpb25zL3NldHVwLW5vZGVcIjogXCJjZGNhNzM2NWIyZGFkYjhhYWQwYTMzYmM3NjAxODU2ZmZhYmNjNDhlXCIsIC8vIHY0LjMuMFxuICBcImFjdGlvbnMvc2V0dXAtcHl0aG9uXCI6IFwiNDIzNzU1MjRlMjNjNDEyZDkzZmI2N2I0OTk1OGI0OTFmY2U3MWMzOFwiLCAvLyB2NS40LjBcbiAgXCJhY3Rpb25zL3N0YWxlXCI6IFwiNWJlZjY0ZjE5ZDdmYWNmYjI1YjM3YjQxNDQ4MmM3MTY0ZDYzOTYzOVwiLCAvLyB2OS4xLjBcbiAgXCJhY3Rpb25zL3VwbG9hZC1hcnRpZmFjdFwiOiBcImVhMTY1ZjhkNjViNmU3NWI1NDA0NDllOTJiNDg4NmY0MzYwN2ZhMDJcIiwgLy8gdjQuNi4yXG4gIFwiYW1hbm5uL2FjdGlvbi1zZW1hbnRpYy1wdWxsLXJlcXVlc3RcIjpcbiAgICBcIjA3MjMzODdmYWFmOWIzOGFkZWY0Nzc1Y2Q0MmNmZDUxNTVlZDYwMTdcIiwgLy8gdjUuNS4zXG4gIFwiZGVzc2FudC9sb2NrLXRocmVhZHNcIjogXCIxYmY3ZWMyNTA1MWZlN2MwMGJkZDE3ZTZhN2NmM2Q3YmZiN2RjNzcxXCIsIC8vIHY1LjAuMVxuICBcImhhc2hpY29ycC9zZXR1cC1jb3B5d3JpdGVcIjogXCIzMjYzOGRhMmQ0ZTgxZDU2YTA3NjRhYTE1NDc4ODJmYzRkMjA5NjM2XCIsIC8vIHYxLjEuM1xuICBcImhhc2hpY29ycC9zZXR1cC10ZXJyYWZvcm1cIjogXCJiOWNkNTRhM2MzNDlkM2YzOGU4ODgxNTU1ZDYxNmNlZDI2OTg2MmRkXCIsIC8vIHYzLjEuMlxuICBcImltam9obmJvL2lzc3VlLWJvdFwiOiBcIjU3MmVlZDE0NDIyYzRkNmNhMzdlODcwZjk3ZTdkYTIwOTQyMmY1YmRcIiwgLy8gdjMuNC40XG4gIFwicGV0ZXItZXZhbnMvY3JlYXRlLXB1bGwtcmVxdWVzdFwiOiBcIjI3MWE4ZDAzNDAyNjVmNzA1YjE0YjZkMzJiOTgyOWMxY2IzM2Q0NWVcIiwgLy8gdjcuMC44XG4gIFwic2xhY2thcGkvc2xhY2stZ2l0aHViLWFjdGlvblwiOiBcIjQ4NWE5ZDQyZDNhNzMwMzFmMTJlYzIwMWM0NTdlMjE2MmM0NWQwMmRcIiwgLy8gdjIuMC4wXG4gIFwiYWN0aW9ucy9jcmVhdGUtZ2l0aHViLWFwcC10b2tlblwiOiBcIjI5ODI0ZTY5ZjU0NjEyMTMzZTc2ZjdlYWFjNzI2ZWVmNmM4NzViYWZcIiwgLy8gdjIuMi4xXG59O1xuXG5leHBvcnQgY2xhc3MgQ2RrdG5Qcm92aWRlclByb2plY3QgZXh0ZW5kcyBjZGsuSnNpaVByb2plY3Qge1xuICBjb25zdHJ1Y3RvcihvcHRpb25zOiBDZGt0blByb3ZpZGVyUHJvamVjdE9wdGlvbnMpIHtcbiAgICBjb25zdCBjZGt0blZlcnNpb24gPSBvcHRpb25zLmNka3RuVmVyc2lvbiA/PyBvcHRpb25zLmNka3RmVmVyc2lvbjtcbiAgICBhc3NlcnQoXG4gICAgICBjZGt0blZlcnNpb24sXG4gICAgICBcIkVpdGhlciBjZGt0blZlcnNpb24gb3IgY2RrdGZWZXJzaW9uIG11c3QgYmUgcHJvdmlkZWRcIlxuICAgICk7XG5cbiAgICBjb25zdCB7XG4gICAgICB0ZXJyYWZvcm1Qcm92aWRlcixcbiAgICAgIHdvcmtmbG93Q29udGFpbmVySW1hZ2UsXG4gICAgICBjb25zdHJ1Y3RzVmVyc2lvbixcbiAgICAgIG1pbk5vZGVWZXJzaW9uLFxuICAgICAganNpaVZlcnNpb24sXG4gICAgICB0eXBlc2NyaXB0VmVyc2lvbixcbiAgICAgIGlzRGVwcmVjYXRlZCxcbiAgICAgIGRlcHJlY2F0aW9uRGF0ZSxcbiAgICAgIC8vIFRPRE86IENvbmZpcm0gZGVmYXVsdCBBdXRob3IgTmFtZVxuICAgICAgYXV0aG9yTmFtZSA9IFwiQ0RLIFRlcnJhaW4gTWFpbnRhaW5lcnNcIixcbiAgICAgIGF1dGhvckFkZHJlc3MgPSBcImh0dHBzOi8vY2RrdG4uaW9cIixcbiAgICAgIG5hbWVzcGFjZSA9IFwiY2RrdG5cIixcbiAgICAgIGdpdGh1Yk5hbWVzcGFjZSA9IFwiY2RrdG4taW9cIixcbiAgICAgIG1hdmVuRW5kcG9pbnQgPSBcImh0dHBzOi8vY2VudHJhbC5zb25hdHlwZS5jb21cIiwgLy8gVE9ET1xuICAgICAgbnVnZXRPcmcgPSBcIklvLkNka3RuXCIsXG4gICAgICBtYXZlbk9yZyA9IFwiY2RrdG5cIiwgLy8gVE9ET1xuICAgICAgbnBtVHJ1c3RlZFB1Ymxpc2hpbmcsXG4gICAgfSA9IG9wdGlvbnM7XG5cbiAgICBjb25zdCBbZnFwcm92aWRlck5hbWUsIHByb3ZpZGVyVmVyc2lvbl0gPSB0ZXJyYWZvcm1Qcm92aWRlci5zcGxpdChcIkBcIik7XG4gICAgY29uc3QgcHJvdmlkZXJOYW1lID0gZnFwcm92aWRlck5hbWUuc3BsaXQoXCIvXCIpLnBvcCgpO1xuICAgIGFzc2VydChwcm92aWRlck5hbWUsIGAke3RlcnJhZm9ybVByb3ZpZGVyfSBkb2Vzbid0IHNlZW0gdG8gYmUgdmFsaWRgKTtcbiAgICBhc3NlcnQoXG4gICAgICAhcHJvdmlkZXJOYW1lLmVuZHNXaXRoKFwiLWdvXCIpLFxuICAgICAgXCJwcm92aWRlck5hbWUgbWF5IG5vdCBlbmQgd2l0aCAnLWdvJyBhcyB0aGlzIGNhbiBjb25mbGljdCB3aXRoIHJlcG9zIGZvciBnbyBwYWNrYWdlc1wiXG4gICAgKTtcblxuICAgIGNvbnN0IG51Z2V0TmFtZSA9IGAke251Z2V0T3JnfS5Qcm92aWRlcnMuJHtwYXNjYWxDYXNlKHByb3ZpZGVyTmFtZSl9YDtcbiAgICBjb25zdCBtYXZlbkdyb3VwSWQgPSBvcHRpb25zLm1hdmVuR3JvdXBJZCA/PyBgaW8uJHttYXZlbk9yZ31gO1xuICAgIGNvbnN0IG1hdmVuTmFtZSA9IGAke21hdmVuR3JvdXBJZH0ucHJvdmlkZXJzLiR7Z2V0TWF2ZW5OYW1lKHByb3ZpZGVyTmFtZSl9YDtcbiAgICBjb25zdCByZXBvc2l0b3J5ID0gYCR7Z2l0aHViTmFtZXNwYWNlfS8ke25hbWVzcGFjZX0tcHJvdmlkZXItJHtwcm92aWRlck5hbWUucmVwbGFjZShcbiAgICAgIC8tL2csXG4gICAgICBcIlwiXG4gICAgKX1gO1xuICAgIGNvbnN0IHJlcG9zaXRvcnlVcmwgPSBgZ2l0aHViLmNvbS8ke3JlcG9zaXRvcnl9YDtcblxuICAgIGNvbnN0IHBhY2thZ2VJbmZvOiBQYWNrYWdlSW5mbyA9IHtcbiAgICAgIG5wbToge1xuICAgICAgICBuYW1lOiBgQCR7bmFtZXNwYWNlfS9wcm92aWRlci0ke3Byb3ZpZGVyTmFtZX1gLFxuICAgICAgfSxcbiAgICAgIHB5dGhvbjoge1xuICAgICAgICAvLyBkaXN0TmFtZTogYCR7Z2l0aHViTmFtZXNwYWNlfS0ke25hbWVzcGFjZX0tcHJvdmlkZXItJHtwcm92aWRlck5hbWUucmVwbGFjZShcbiAgICAgICAgZGlzdE5hbWU6IGAke25hbWVzcGFjZX0tcHJvdmlkZXItJHtwcm92aWRlck5hbWUucmVwbGFjZSgvLS9naSwgXCJfXCIpfWAsXG4gICAgICAgIC8vIG1vZHVsZTogYCR7Z2l0aHViTmFtZXNwYWNlfV8ke25hbWVzcGFjZX1fcHJvdmlkZXJfJHtwcm92aWRlck5hbWUucmVwbGFjZShcbiAgICAgICAgbW9kdWxlOiBgJHtuYW1lc3BhY2V9X3Byb3ZpZGVyXyR7cHJvdmlkZXJOYW1lLnJlcGxhY2UoLy0vZ2ksIFwiX1wiKX1gLFxuICAgICAgfSxcbiAgICAgIHB1Ymxpc2hUb051Z2V0OiB7XG4gICAgICAgIGRvdE5ldE5hbWVzcGFjZTogbnVnZXROYW1lLFxuICAgICAgICBwYWNrYWdlSWQ6IG51Z2V0TmFtZSxcbiAgICAgIH0sXG4gICAgICBwdWJsaXNoVG9NYXZlbjoge1xuICAgICAgICBqYXZhUGFja2FnZTogbWF2ZW5OYW1lLFxuICAgICAgICBtYXZlbkdyb3VwSWQ6IG1hdmVuR3JvdXBJZCxcbiAgICAgICAgbWF2ZW5BcnRpZmFjdElkOiBgJHtuYW1lc3BhY2V9LXByb3ZpZGVyLSR7cHJvdmlkZXJOYW1lfWAsXG4gICAgICAgIG1hdmVuRW5kcG9pbnQsXG4gICAgICB9LFxuICAgICAgcHVibGlzaFRvR286IHtcbiAgICAgICAgbW9kdWxlTmFtZTogYCR7cmVwb3NpdG9yeVVybH0tZ29gLFxuICAgICAgICBnaXRVc2VyRW1haWw6IFwiZ2l0aHViLXRlYW0tY2RrLXRlcnJhaW5AY2RrdG4uaW9cIixcbiAgICAgICAgZ2l0VXNlck5hbWU6IFwidGVhbS1jZGstdGVycmFpblwiLFxuICAgICAgICBwYWNrYWdlTmFtZTogcHJvdmlkZXJOYW1lLnJlcGxhY2UoLy0vZywgXCJcIiksXG4gICAgICAgIC8vIEluIG9yZGVyIHRvIHVzZSB0aGUgY29weXdyaXRlIGFjdGlvbiwgd2UgbmVlZCB0byByZWJ1aWxkIHRoZSBmdWxsIHByZS1wdWJsaXNoIHN0ZXBzIHdvcmtmbG93IHVuZm9ydHVuYXRlbHlcbiAgICAgICAgLy8gSWYgc29tZW9uZSBrbm93cyBhIGJldHRlciB3YXkgdG8gZG8gdGhpcyBtdXRhdGlvbiB3aXRoIG1pbmltYWwgY3VzdG9tIGNvZGUsIHBsZWFzZSBkbyBzb1xuICAgICAgICBwcmVQdWJsaXNoU3RlcHM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiBcIkNoZWNrb3V0XCIsXG4gICAgICAgICAgICB1c2VzOiBcImFjdGlvbnMvY2hlY2tvdXRcIixcbiAgICAgICAgICAgIHdpdGg6IHtcbiAgICAgICAgICAgICAgcGF0aDogXCIucmVwb1wiLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6IFwiSW5zdGFsbCBEZXBlbmRlbmNpZXNcIixcbiAgICAgICAgICAgIHJ1bjogXCJjZCAucmVwbyAmJiB5YXJuIGluc3RhbGwgLS1jaGVjay1maWxlcyAtLWZyb3plbi1sb2NrZmlsZVwiLFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogXCJFeHRyYWN0IGJ1aWxkIGFydGlmYWN0XCIsXG4gICAgICAgICAgICBydW46IFwidGFyIC0tc3RyaXAtY29tcG9uZW50cz0xIC14enZmIGRpc3QvanMvKi50Z3ogLUMgLnJlcG9cIixcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6IFwiTW92ZSBidWlsZCBhcnRpZmFjdCBvdXQgb2YgdGhlIHdheVwiLFxuICAgICAgICAgICAgcnVuOiBcIm12IGRpc3QgZGlzdC5vbGRcIixcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6IFwiQ3JlYXRlIGdvIGFydGlmYWN0XCIsXG4gICAgICAgICAgICBydW46IFwiY2QgLnJlcG8gJiYgbnB4IHByb2plbiBwYWNrYWdlOmdvXCIsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiBcIlNldHVwIENvcHl3cml0ZSB0b29sXCIsXG4gICAgICAgICAgICB1c2VzOiBcImhhc2hpY29ycC9zZXR1cC1jb3B5d3JpdGVcIixcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6IFwiQ29weSBjb3B5d3JpdGUgaGNsIGZpbGVcIixcbiAgICAgICAgICAgIHJ1bjogXCJjcCAucmVwby8uY29weXdyaXRlLmhjbCAucmVwby9kaXN0L2dvLy5jb3B5d3JpdGUuaGNsXCIsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiBcIkFkZCBoZWFkZXJzIHVzaW5nIENvcHl3cml0ZSB0b29sXCIsXG4gICAgICAgICAgICBydW46IFwiY2QgLnJlcG8vZGlzdC9nbyAmJiBjb3B5d3JpdGUgaGVhZGVyc1wiLFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogXCJSZW1vdmUgY29weXdyaXRlIGhjbCBmaWxlXCIsXG4gICAgICAgICAgICBydW46IFwicm0gLWYgLnJlcG8vZGlzdC9nby8uY29weXdyaXRlLmhjbFwiLFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogXCJSZW1vdmUgc29tZSB0ZXh0IGZyb20gdGhlIFJFQURNRSB0aGF0IGRvZXNuJ3QgYXBwbHkgdG8gR29cIixcbiAgICAgICAgICAgIHJ1bjogW1xuICAgICAgICAgICAgICBcInNlZCAtaSAncy8jIENES1ROIHByZWJ1aWx0IGJpbmRpbmdzIGZvci8jIENES1ROIEdvIGJpbmRpbmdzIGZvci8nIC5yZXBvL2Rpc3QvZ28vKi9SRUFETUUubWRcIixcbiAgICAgICAgICAgICAgLy8gQHNlZSBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL2EvNDk1MTE5NDlcbiAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHByZXR0aWVyL3ByZXR0aWVyXG4gICAgICAgICAgICAgIC8vIHByZXR0aWVyLWlnbm9yZVxuICAgICAgICAgICAgICBgc2VkIC1pIC1lICcvIyMgJHtpc0RlcHJlY2F0ZWQgPyBcIkRlcHJlY2F0ZWRcIiA6IFwiQXZhaWxhYmxlXCJ9IFBhY2thZ2VzLywvIyMjIEdvLyFiJyAtZSAnLyMjIyBHby8hZDtwOyBzLyMjIyBHby8jIyBHbyBQYWNrYWdlLycgLWUgJ2QnIC5yZXBvL2Rpc3QvZ28vKi9SRUFETUUubWRgLFxuICAgICAgICAgICAgICAvLyBzZWQgLWUgaXMgYmxhY2sgbWFnaWMgYW5kIGZvciB3aGF0ZXZlciByZWFzb24gdGhlIHN0cmluZyByZXBsYWNlIGRvZXNuJ3Qgd29yayBzbyBsZXQncyB0cnkgaXQgYWdhaW46XG4gICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBwcmV0dGllci9wcmV0dGllclxuICAgICAgICAgICAgICAvLyBwcmV0dGllci1pZ25vcmVcbiAgICAgICAgICAgICAgYHNlZCAtaSAncy8jIyMgR28vIyMgJHtpc0RlcHJlY2F0ZWQgPyBcIkRlcHJlY2F0ZWRcIiA6IFwiR29cIn0gUGFja2FnZS8nIC5yZXBvL2Rpc3QvZ28vKi9SRUFETUUubWRgLFxuICAgICAgICAgICAgICAvLyBKdXN0IHN0cmFpZ2h0IHVwIGRlbGV0ZSB0aGVzZSBmdWxsIGxpbmVzIGFuZCBldmVyeXRoaW5nIGluIGJldHdlZW4gdGhlbTpcbiAgICAgICAgICAgICAgXCJzZWQgLWkgLWUgJy9BUEkudHlwZXNjcmlwdC5tZC8sL1lvdSBjYW4gYWxzbyB2aXNpdCBhIGhvc3RlZCB2ZXJzaW9uLyFiJyAtZSAnZCcgLnJlcG8vZGlzdC9nby8qL1JFQURNRS5tZFwiLFxuICAgICAgICAgICAgICBgc2VkIC1pICdzfEZpbmQgYXV0by1nZW5lcmF0ZWQgZG9jcyBmb3IgdGhpcyBwcm92aWRlciBoZXJlOnxGaW5kIGF1dG8tZ2VuZXJhdGVkIGRvY3MgZm9yIHRoaXMgcHJvdmlkZXIgW2hlcmVdKGh0dHBzOi8vJHtyZXBvc2l0b3J5VXJsfS9ibG9iL21haW4vZG9jcy9BUEkuZ28ubWQpLnwnIC5yZXBvL2Rpc3QvZ28vKi9SRUFETUUubWRgLFxuICAgICAgICAgICAgICAvLyBKdXN0IHN0cmFpZ2h0IHVwIGRlbGV0ZSB0aGVzZSBmdWxsIGxpbmVzIGFuZCBldmVyeXRoaW5nIGluIGJldHdlZW4gdGhlbTpcbiAgICAgICAgICAgICAgXCJzZWQgLWkgLWUgJy8jIyMgUHJvdmlkZXIgVmVyc2lvbi8sL1RoZSBwcm92aWRlciB2ZXJzaW9uIGNhbiBiZSBhZGp1c3RlZC8hYicgLWUgJ2QnIC5yZXBvL2Rpc3QvZ28vKi9SRUFETUUubWRcIixcbiAgICAgICAgICAgIF0uam9pbihcIlxcblwiKSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6IFwiQ29weSB0aGUgUkVBRE1FIGZpbGUgdG8gdGhlIHBhcmVudCBkaXJlY3RvcnlcIixcbiAgICAgICAgICAgIHJ1bjogXCJjcCAucmVwby9kaXN0L2dvLyovUkVBRE1FLm1kIC5yZXBvL2Rpc3QvZ28vUkVBRE1FLm1kXCIsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiBcIkNvbGxlY3QgZ28gQXJ0aWZhY3RcIixcbiAgICAgICAgICAgIHJ1bjogXCJtdiAucmVwby9kaXN0IGRpc3RcIixcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgfSxcbiAgICB9O1xuXG4gICAgY29uc3Qgd29ya2Zsb3dSdW5zT24gPSBvcHRpb25zLnVzZUN1c3RvbUdpdGh1YlJ1bm5lclxuICAgICAgPyBbXCJkZXBvdC11YnVudHUtMjQuMDQtOFwiXSAvLyA4IGNvcmUsIDMyIEdCXG4gICAgICA6IFtcInVidW50dS1sYXRlc3RcIl07IC8vIDcgR0JcblxuICAgIHN1cGVyKHtcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgICBhdXRob3JBZGRyZXNzLFxuICAgICAgYXV0aG9yTmFtZSxcbiAgICAgIG1pbk5vZGVWZXJzaW9uLFxuICAgICAgd29ya2Zsb3dDb250YWluZXJJbWFnZSxcbiAgICAgIHdvcmtmbG93UnVuc09uLFxuICAgICAgbGljZW5zZWQ6IGZhbHNlLCAvLyB3ZSBkbyBzdXBwbHkgb3VyIG93biBsaWNlbnNlIGZpbGUgd2l0aCBhIGN1c3RvbSBoZWFkZXJcbiAgICAgIHJlbGVhc2VUb05wbTogdHJ1ZSxcbiAgICAgIG5wbVRydXN0ZWRQdWJsaXNoaW5nOiBucG1UcnVzdGVkUHVibGlzaGluZyA/PyBmYWxzZSxcbiAgICAgIG5hbWU6IHBhY2thZ2VJbmZvLm5wbS5uYW1lLFxuICAgICAgZGVzY3JpcHRpb246IGBQcmVidWlsdCAke3Byb3ZpZGVyTmFtZX0gUHJvdmlkZXIgZm9yIENESyBUZXJyYWluIChjZGt0bilgLFxuICAgICAga2V5d29yZHM6IFtcbiAgICAgICAgXCJjZGt0blwiLFxuICAgICAgICBcImNkay10ZXJyYWluXCIsXG4gICAgICAgIFwiY2RrdGZcIixcbiAgICAgICAgXCJ0ZXJyYWZvcm1cIixcbiAgICAgICAgXCJvcGVudG9mdVwiLFxuICAgICAgICBcImNka1wiLFxuICAgICAgICBcInByb3ZpZGVyXCIsXG4gICAgICAgIHByb3ZpZGVyTmFtZSxcbiAgICAgIF0sXG4gICAgICBzYW1wbGVDb2RlOiBmYWxzZSxcbiAgICAgIGplc3Q6IGZhbHNlLFxuICAgICAgYXV0aG9yT3JnYW5pemF0aW9uOiB0cnVlLFxuICAgICAgZGVmYXVsdFJlbGVhc2VCcmFuY2g6IFwibWFpblwiLFxuICAgICAgcmVwb3NpdG9yeTogYGh0dHBzOi8vZ2l0aHViLmNvbS8ke3JlcG9zaXRvcnl9LmdpdGAsXG4gICAgICBtZXJnaWZ5OiBmYWxzZSxcbiAgICAgIGVzbGludDogZmFsc2UsXG4gICAgICBkZXBzVXBncmFkZTogIWlzRGVwcmVjYXRlZCxcbiAgICAgIGRlcHNVcGdyYWRlT3B0aW9uczoge1xuICAgICAgICB3b3JrZmxvd09wdGlvbnM6IHtcbiAgICAgICAgICBsYWJlbHM6IFtcImF1dG9tZXJnZVwiLCBcImF1dG8tYXBwcm92ZVwiLCBcImRlcGVuZGVuY2llc1wiXSxcbiAgICAgICAgICBzY2hlZHVsZTogVXBncmFkZURlcGVuZGVuY2llc1NjaGVkdWxlLldFRUtMWSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBweXRob246IHBhY2thZ2VJbmZvLnB5dGhvbixcbiAgICAgIHB1Ymxpc2hUb051Z2V0OiBwYWNrYWdlSW5mby5wdWJsaXNoVG9OdWdldCxcbiAgICAgIC8vIFRPRE86IFJlLWVuYWJsZSBpZiByZXF1ZXN0ZWQgYW5kIHdoZW4gYXZhaWxhYmxlXG4gICAgICAvLyBwdWJsaXNoVG9NYXZlbjogcGFja2FnZUluZm8ucHVibGlzaFRvTWF2ZW4sXG4gICAgICBwdWJsaXNoVG9HbzogcGFja2FnZUluZm8ucHVibGlzaFRvR28sXG4gICAgICByZWxlYXNlRmFpbHVyZUlzc3VlOiB0cnVlLFxuICAgICAgcGVlckRlcGVuZGVuY3lPcHRpb25zOiB7XG4gICAgICAgIHBpbm5lZERldkRlcGVuZGVuY3k6IGZhbHNlLFxuICAgICAgfSxcbiAgICAgIHdvcmtmbG93R2l0SWRlbnRpdHk6IHtcbiAgICAgICAgbmFtZTogXCJ0ZWFtLWNkay10ZXJyYWluXCIsXG4gICAgICAgIGVtYWlsOiBcImdpdGh1Yi10ZWFtLWNkay10ZXJyYWluQGNka3RuLmlvXCIsXG4gICAgICB9LFxuICAgICAgbWluTWFqb3JWZXJzaW9uOiBNSU5fTUFKT1JfVkVSU0lPTixcbiAgICAgIHN0YWxlOiB0cnVlLFxuICAgICAgc3RhbGVPcHRpb25zOiB7XG4gICAgICAgIGlzc3Vlczoge1xuICAgICAgICAgIHN0YWxlTGFiZWw6IFwic3RhbGVcIixcbiAgICAgICAgICBkYXlzQmVmb3JlU3RhbGU6IDQ1LFxuICAgICAgICAgIHN0YWxlTWVzc2FnZTpcbiAgICAgICAgICAgIFwiNDUgZGF5cyBoYXZlIHBhc3NlZCBzaW5jZSB0aGlzIGlzc3VlIHdhcyBvcGVuZWQsIGFuZCBJIGFzc3VtZSBvdGhlciBwdWJsaXNoZXMgaGF2ZSBzdWNjZWVkZWQgaW4gdGhlIG1lYW50aW1lLiBcIiArXG4gICAgICAgICAgICBcIklmIG5vIG9uZSByZW1vdmVzIHRoZSBgc3RhbGVgIGxhYmVsIG9yIGNvbW1lbnRzLCBJJ20gZ29pbmcgdG8gYXV0by1jbG9zZSB0aGlzIGlzc3VlIGluIDE0IGRheXMuXCIsXG4gICAgICAgICAgZGF5c0JlZm9yZUNsb3NlOiAxNCxcbiAgICAgICAgICBjbG9zZU1lc3NhZ2U6XG4gICAgICAgICAgICBcIjIgbW9udGhzIGhhdmUgcGFzc2VkLCBzbyBJJ20gY2xvc2luZyB0aGlzIGlzc3VlIHdpdGggdGhlIGFzc3VtcHRpb24gdGhhdCBvdGhlciBwdWJsaXNoZXMgaGF2ZSBzdWNjZWVkZWQgaW4gdGhlIG1lYW50aW1lLlwiLFxuICAgICAgICB9LFxuICAgICAgICBwdWxsUmVxdWVzdDoge1xuICAgICAgICAgIHN0YWxlTGFiZWw6IFwic3RhbGVcIixcbiAgICAgICAgICBkYXlzQmVmb3JlU3RhbGU6IDEsXG4gICAgICAgICAgc3RhbGVNZXNzYWdlOiBgQ2xvc2luZyB0aGlzIFBSLCBpZiBpdCBoYXMgbm90IG1lcmdlZCB0aGVyZSBpcyBtb3N0IGxpa2VseSBhIENJIG9yIENES1ROIGlzc3VlIHByZXZlbnRpbmcgaXQgZnJvbSBtZXJnaW5nLiBJZiB0aGlzIGhhcyBiZWVuIGEgbWFudWFsIFBSLCBwbGVhc2UgcmVvcGVuIGl0IGFuZCBhZGQgdGhlIFxcYG5vLWF1dG8tY2xvc2VcXGAgbGFiZWwgdG8gcHJldmVudCB0aGlzIGZyb20gaGFwcGVuaW5nIGFnYWluLmAsXG4gICAgICAgICAgZGF5c0JlZm9yZUNsb3NlOiAwLFxuICAgICAgICAgIGV4ZW1wdExhYmVsczogW1wibm8tYXV0by1jbG9zZVwiXSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBwdWxsUmVxdWVzdFRlbXBsYXRlOiBmYWxzZSxcbiAgICAgIGRvY2dlbjogZmFsc2UsXG4gICAgICBnaXRodWJPcHRpb25zOiB7XG4gICAgICAgIHByb2plbkNyZWRlbnRpYWxzOiBnaXRodWIuR2l0aHViQ3JlZGVudGlhbHMuZnJvbUFwcCgpLFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIHRoaXMuYWRkRGV2RGVwcyhcbiAgICAgIFwiZG90LXByb3BAXjUuMi4wXCIsXG4gICAgICBcIkBhY3Rpb25zL2NvcmVAXjEuMS4wXCIsXG4gICAgICBcIkBhY3Rpb24tdmFsaWRhdG9yL2NvcmVcIixcbiAgICAgIFwiQGFjdGlvbi12YWxpZGF0b3IvY2xpXCJcbiAgICApO1xuXG4gICAgLy8gRGVmYXVsdCBtZW1vcnkgaXMgN0dCOiBodHRwczovL2RvY3MuZ2l0aHViLmNvbS9lbi9hY3Rpb25zL3VzaW5nLWdpdGh1Yi1ob3N0ZWQtcnVubmVycy9hYm91dC1naXRodWItaG9zdGVkLXJ1bm5lcnMjc3VwcG9ydGVkLXJ1bm5lcnMtYW5kLWhhcmR3YXJlLXJlc291cmNlc1xuICAgIC8vIEN1c3RvbSBSdW5uZXJzIHdlIHVzZSBoYXZlIDMyR0Igb2YgbWVtb3J5XG4gICAgLy8gVGhlIGJlbG93IG51bWJlcnMgc2V0IGhlYXAgbGltaXRzIHRoYXQgYXJlIH4xZ2IgYW5kIH4wLjVnYiBsZXNzLCByZXNwZWN0aXZlbHksIHRoYW4gdGhlIHRvdGFsIGF2YWlsYWJsZSBtZW1vcnlcbiAgICBjb25zdCBtYXhPbGRTcGFjZVNpemUgPSBvcHRpb25zLnVzZUN1c3RvbUdpdGh1YlJ1bm5lciA/IFwiMzE3NDRcIiA6IFwiNjY1NlwiO1xuXG4gICAgLy8gR29sYW5nIG5lZWRzIG1vcmUgbWVtb3J5IHRvIGJ1aWxkXG4gICAgdGhpcy50YXNrcy5hZGRFbnZpcm9ubWVudChcbiAgICAgIFwiTk9ERV9PUFRJT05TXCIsXG4gICAgICBgLS1tYXgtb2xkLXNwYWNlLXNpemU9JHttYXhPbGRTcGFjZVNpemV9YFxuICAgICk7XG5cbiAgICB0aGlzLnRhc2tzLmFkZEVudmlyb25tZW50KFwiQ0hFQ0tQT0lOVF9ESVNBQkxFXCIsIFwiMVwiKTtcblxuICAgIGNvbnN0IHZhbGlkYXRlVGFzayA9IHRoaXMuYWRkVGFzayhcInZhbGlkYXRlLXdvcmtmbG93c1wiLCB7XG4gICAgICBleGVjOiBgZmluZCAuLy5naXRodWIvd29ya2Zsb3dzIC10eXBlIGYgLW5hbWUgXCIqLnltbFwiIC1wcmludDAgfCB4YXJncyAtMCAtbiAxIG5weCBhY3Rpb24tdmFsaWRhdG9yYCxcbiAgICB9KTtcbiAgICB2YWxpZGF0ZVRhc2suZGVzY3JpcHRpb24gPVxuICAgICAgXCJMaW50IHRoZSBZQU1MIGZpbGVzIGdlbmVyYXRlZCBieSBQcm9qZW4gdG8gZGVmaW5lIEdpdEh1YiBBY3Rpb25zIGFuZCBXb3JrZmxvd3MsIGNoZWNraW5nIHRoZW0gYWdhaW5zdCBwdWJsaXNoZWQgSlNPTiBzY2hlbWFzXCI7XG4gICAgdGhpcy5wb3N0Q29tcGlsZVRhc2suc3Bhd24odmFsaWRhdGVUYXNrKTtcblxuICAgIHRoaXMucGFja2FnZS5hZGRQYWNrYWdlUmVzb2x1dGlvbnMoXCJAdHlwZXMveWFyZ3NAMTcuMC4xM1wiKTtcblxuICAgIGNvbnN0IHNldFNhZmVEaXJlY3RvcnkgPSB7XG4gICAgICBuYW1lOiBcIlNldCBnaXQgY29uZmlnIHNhZmUuZGlyZWN0b3J5XCIsXG4gICAgICBydW46IFwiZ2l0IGNvbmZpZyAtLWdsb2JhbCAtLWFkZCBzYWZlLmRpcmVjdG9yeSAkKHB3ZClcIixcbiAgICB9O1xuXG4gICAgKCh0aGlzLmJ1aWxkV29ya2Zsb3cgYXMgYW55KS5wcmVCdWlsZFN0ZXBzIGFzIEpvYlN0ZXBbXSkucHVzaChcbiAgICAgIHNldFNhZmVEaXJlY3RvcnlcbiAgICApO1xuICAgICh0aGlzLnJlbGVhc2UgYXMgYW55KS5kZWZhdWx0QnJhbmNoLndvcmtmbG93LmpvYnMucmVsZWFzZS5zdGVwcy5zcGxpY2UoXG4gICAgICAxLFxuICAgICAgMCxcbiAgICAgIHNldFNhZmVEaXJlY3RvcnlcbiAgICApO1xuXG4gICAgLy8gYWx3YXlzIHB1Ymxpc2ggYSBuZXcgR2l0SHViIHJlbGVhc2UsIGV2ZW4gd2hlbiBwdWJsaXNoaW5nIHRvIGEgcGFydGljdWxhciBwYWNrYWdlIG1hbmFnZXIgZmFpbHNcbiAgICBjb25zdCByZWxlYXNlV29ya2Zsb3cgPSB0aGlzLnRyeUZpbmRPYmplY3RGaWxlKFxuICAgICAgXCIuZ2l0aHViL3dvcmtmbG93cy9yZWxlYXNlLnltbFwiXG4gICAgKTtcbiAgICByZWxlYXNlV29ya2Zsb3c/LmFkZE92ZXJyaWRlKFwiam9icy5yZWxlYXNlX2dpdGh1Yi5uZWVkc1wiLCBcInJlbGVhc2VcIik7XG5cbiAgICAvLyBUcnVzdGVkIHB1Ymxpc2hpbmcgcmVxdWlyZXMgbnBtID49MTEuNS4xIHdoaWNoIHNoaXBzIHdpdGggTm9kZSAyNFxuICAgIGlmIChucG1UcnVzdGVkUHVibGlzaGluZykge1xuICAgICAgdGhpcy5naXRodWJcbiAgICAgICAgPy50cnlGaW5kV29ya2Zsb3coXCJyZWxlYXNlXCIpXG4gICAgICAgID8uZmlsZT8ucGF0Y2goXG4gICAgICAgICAgSnNvblBhdGNoLnJlcGxhY2UoXG4gICAgICAgICAgICBcIi9qb2JzL3JlbGVhc2VfbnBtL3N0ZXBzLzAvd2l0aC9ub2RlLXZlcnNpb25cIixcbiAgICAgICAgICAgIFwiMjQueFwiXG4gICAgICAgICAgKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8vIGVuc3VyZSB3ZSBkb24ndCBmYWlsIGlmIHRoZSByZWxlYXNlIGZpbGUgaXMgbm90IHByZXNlbnRcbiAgICBjb25zdCBjaGVja0V4aXN0aW5nVGFnU3RlcCA9IChcbiAgICAgIHRoaXMucmVsZWFzZSBhcyBhbnlcbiAgICApLmRlZmF1bHRCcmFuY2gud29ya2Zsb3cuam9icy5yZWxlYXNlLnN0ZXBzLmZpbmQoXG4gICAgICAoczogb2JqZWN0KSA9PiBcImlkXCIgaW4gcyAmJiBzLmlkID09PSBcImNoZWNrX3RhZ19leGlzdHNcIlxuICAgICk7XG4gICAgY29uc3Qgb2xkRXhpc3RpbmdUYWdSdW46IHN0cmluZyA9IGNoZWNrRXhpc3RpbmdUYWdTdGVwLnJ1bjtcbiAgICBwcmV0dHlBc3NlcnRFcXVhbChcbiAgICAgIG9sZEV4aXN0aW5nVGFnUnVuLnNwbGl0KFwiXFxuXCIpWzBdLFxuICAgICAgXCJUQUc9JChjYXQgZGlzdC9yZWxlYXNldGFnLnR4dClcIixcbiAgICAgIFwicmVsZWFzZSBzdGVwIGNoYW5nZWQsIHBsZWFzZSBjaGVjayBpZiB0aGUgd29ya2Fyb3VuZCBzdGlsbCB3b3JrcyFcIlxuICAgICk7XG4gICAgY2hlY2tFeGlzdGluZ1RhZ1N0ZXAucnVuID0gYGlmIFsgISAtZiBkaXN0L3JlbGVhc2V0YWcudHh0IF07IHRoZW4gKGVjaG8gXCJleGlzdHM9dHJ1ZVwiID4+ICRHSVRIVUJfT1VUUFVUKSAmJiBleGl0IDA7IGZpXFxuJHtvbGRFeGlzdGluZ1RhZ1J1bn1gO1xuXG4gICAgaWYgKCFpc0RlcHJlY2F0ZWQpIHtcbiAgICAgIGNvbnN0IHsgdXBncmFkZSwgcHIgfSA9ICh0aGlzLnVwZ3JhZGVXb3JrZmxvdyBhcyBhbnkpLndvcmtmbG93c1swXS5qb2JzO1xuICAgICAgdXBncmFkZS5zdGVwcy5zcGxpY2UoMSwgMCwgc2V0U2FmZURpcmVjdG9yeSk7XG4gICAgICBwci5zdGVwcy5zcGxpY2UoMSwgMCwgc2V0U2FmZURpcmVjdG9yeSk7XG4gICAgfVxuXG4gICAgLy8gLy8gVE9ETzogUmUtZW5hYmxlIHdoZW4gTWF2ZW4gcmVxdWVzdGVkIGFuZCBpbmZyYSBhdmFpbGFibGVcbiAgICAvLyAvLyBGaXggbWF2ZW4gaXNzdWUgKGh0dHBzOi8vZ2l0aHViLmNvbS9jZGtsYWJzL3B1YmxpYi9wdWxsLzc3NylcbiAgICAvLyBnaXRodWIuR2l0SHViLm9mKHRoaXMpPy50cnlGaW5kV29ya2Zsb3coXCJyZWxlYXNlXCIpPy5maWxlPy5wYXRjaChcbiAgICAvLyAgIEpzb25QYXRjaC5hZGQoXG4gICAgLy8gICAgIFwiL2pvYnMvcmVsZWFzZV9tYXZlbi9zdGVwcy8xMC9lbnYvTUFWRU5fT1BUU1wiLFxuICAgIC8vICAgICAvLyBTZWUgaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvNzAxNTM5NjIvbmV4dXMtc3RhZ2luZy1tYXZlbi1wbHVnaW4tbWF2ZW4tZGVwbG95LWZhaWxlZC1hbi1hcGktaW5jb21wYXRpYmlsaXR5LXdhcy1lbmNvXG4gICAgLy8gICAgIFwiLS1hZGQtb3BlbnM9amF2YS5iYXNlL2phdmEudXRpbD1BTEwtVU5OQU1FRCAtLWFkZC1vcGVucz1qYXZhLmJhc2UvamF2YS5sYW5nLnJlZmxlY3Q9QUxMLVVOTkFNRUQgLS1hZGQtb3BlbnM9amF2YS5iYXNlL2phdmEudGV4dD1BTEwtVU5OQU1FRCAtLWFkZC1vcGVucz1qYXZhLmRlc2t0b3AvamF2YS5hd3QuZm9udD1BTEwtVU5OQU1FRFwiXG4gICAgLy8gICApXG4gICAgLy8gKTtcblxuICAgIHRoaXMucGluR2l0aHViQWN0aW9uVmVyc2lvbnMoZ2l0aHViQWN0aW9uUGlubmVkVmVyc2lvbnMpO1xuXG4gICAgbmV3IENka3RmQ29uZmlnKHRoaXMsIHtcbiAgICAgIHRlcnJhZm9ybVByb3ZpZGVyLFxuICAgICAgcHJvdmlkZXJOYW1lLFxuICAgICAgZnFwcm92aWRlck5hbWUsXG4gICAgICBwcm92aWRlclZlcnNpb24sXG4gICAgICBjZGt0blZlcnNpb24sXG4gICAgICBjb25zdHJ1Y3RzVmVyc2lvbixcbiAgICAgIGpzaWlWZXJzaW9uLFxuICAgICAgdHlwZXNjcmlwdFZlcnNpb24sXG4gICAgICBwYWNrYWdlSW5mbyxcbiAgICAgIGdpdGh1Yk5hbWVzcGFjZSxcbiAgICAgIGRlcHJlY2F0aW9uRGF0ZSxcbiAgICAgIGlzRGVwcmVjYXRlZDogISFpc0RlcHJlY2F0ZWQsXG4gICAgfSk7XG4gICAgbmV3IEN1c3RvbWl6ZWRMaWNlbnNlKHRoaXMsIG9wdGlvbnMuY3JlYXRpb25ZZWFyLCBvcHRpb25zLmxpY2Vuc2VlKTtcbiAgICBuZXcgR2l0aHViSXNzdWVzKHRoaXMsIHsgcHJvdmlkZXJOYW1lIH0pO1xuICAgIG5ldyBBdXRvQXBwcm92ZSh0aGlzKTtcbiAgICBuZXcgQXV0b0Nsb3NlQ29tbXVuaXR5SXNzdWVzKHRoaXMsIHsgcHJvdmlkZXJOYW1lIH0pO1xuICAgIG5ldyBBdXRvbWVyZ2UodGhpcyk7XG4gICAgbmV3IExvY2tJc3N1ZXModGhpcyk7XG5cbiAgICBpZiAoIWlzRGVwcmVjYXRlZCkge1xuICAgICAgY29uc3QgdXBncmFkZVNjcmlwdCA9IG5ldyBDaGVja0ZvclVwZ3JhZGVzU2NyaXB0RmlsZSh0aGlzLCB7XG4gICAgICAgIHByb3ZpZGVyVmVyc2lvbixcbiAgICAgICAgZnFwcm92aWRlck5hbWUsXG4gICAgICB9KTtcbiAgICAgIG5ldyBQcm92aWRlclVwZ3JhZGUodGhpcywge1xuICAgICAgICBjaGVja0ZvclVwZ3JhZGVzU2NyaXB0UGF0aDogdXBncmFkZVNjcmlwdC5wYXRoLFxuICAgICAgICB3b3JrZmxvd1J1bnNPbixcbiAgICAgICAgbm9kZUhlYXBTaXplOiBtYXhPbGRTcGFjZVNpemUsXG4gICAgICB9KTtcbiAgICAgIG5ldyBBbGVydE9wZW5QcnModGhpcywge1xuICAgICAgICBzbGFja1dlYmhvb2tVcmw6IFwiJHt7IHNlY3JldHMuQUxFUlRfUFJTX1NMQUNLX1dFQkhPT0tfVVJMIH19XCIsXG4gICAgICAgIHJlcG9zaXRvcnksXG4gICAgICB9KTtcbiAgICAgIG5ldyBEZXBlbmRhYm90KHRoaXMpO1xuICAgIH1cblxuICAgIG5ldyBUZXh0RmlsZSh0aGlzLCBcIi5naXRodWIvQ09ERU9XTkVSU1wiLCB7XG4gICAgICBsaW5lczogW1xuICAgICAgICBcIiMgVGhlc2Ugb3duZXJzIHdpbGwgYmUgdGhlIGRlZmF1bHQgb3duZXJzIGZvciBldmVyeXRoaW5nIGluIFwiLFxuICAgICAgICBcIiMgdGhlIHJlcG8uIFVubGVzcyBhIGxhdGVyIG1hdGNoIHRha2VzIHByZWNlZGVuY2UsIFwiLFxuICAgICAgICBcIiMgdGhleSB3aWxsIGJlIHJlcXVlc3RlZCBmb3IgcmV2aWV3IHdoZW4gc29tZW9uZSBvcGVucyBhIFwiLFxuICAgICAgICBcIiMgcHVsbCByZXF1ZXN0LlwiLFxuICAgICAgICBcIiogICAgICAgQGNka3RuLWlvL3RlYW0tY2RrLXRlcnJhaW5cIixcbiAgICAgIF0sXG4gICAgfSk7XG5cbiAgICBpZiAoIWlzRGVwcmVjYXRlZCkge1xuICAgICAgbmV3IFNob3VsZFJlbGVhc2VTY3JpcHRGaWxlKHRoaXMsIHt9KTtcblxuICAgICAgY29uc3QgcmVsZWFzZVRhc2sgPSB0aGlzLnRhc2tzLnRyeUZpbmQoXCJyZWxlYXNlXCIpITtcbiAgICAgIHRoaXMucmVtb3ZlVGFzayhcInJlbGVhc2VcIik7XG4gICAgICB0aGlzLmFkZFRhc2soXCJyZWxlYXNlXCIsIHtcbiAgICAgICAgZGVzY3JpcHRpb246IHJlbGVhc2VUYXNrLmRlc2NyaXB0aW9uLFxuICAgICAgICBzdGVwczogcmVsZWFzZVRhc2suc3RlcHMsXG4gICAgICAgIGVudjogKHJlbGVhc2VUYXNrIGFzIGFueSkuX2VudixcbiAgICAgICAgY29uZGl0aW9uOiBcIm5vZGUgLi9zY3JpcHRzL3Nob3VsZC1yZWxlYXNlLmpzXCIsXG4gICAgICB9KTtcbiAgICAgIHRoaXMuYWRkVGFzayhcInVuY29uZGl0aW9uYWwtcmVsZWFzZVwiLCB7XG4gICAgICAgIGRlc2NyaXB0aW9uOiByZWxlYXNlVGFzay5kZXNjcmlwdGlvbixcbiAgICAgICAgc3RlcHM6IHJlbGVhc2VUYXNrLnN0ZXBzLFxuICAgICAgICBlbnY6IChyZWxlYXNlVGFzayBhcyBhbnkpLl9lbnYsXG4gICAgICB9KTtcblxuICAgICAgY29uc3QgcmVsZWFzZUpvYlN0ZXBzOiBhbnlbXSA9IChcbiAgICAgICAgdGhpcy5naXRodWI/LnRyeUZpbmRXb3JrZmxvdyhcInJlbGVhc2VcIikgYXMgYW55XG4gICAgICApLmpvYnMucmVsZWFzZS5zdGVwcztcbiAgICAgIGNvbnN0IGdpdFJlbW90ZUpvYiA9IHJlbGVhc2VKb2JTdGVwcy5maW5kKChpdCkgPT4gaXQuaWQgPT09IFwiZ2l0X3JlbW90ZVwiKTtcbiAgICAgIHByZXR0eUFzc2VydEVxdWFsKFxuICAgICAgICBnaXRSZW1vdGVKb2IucnVuLFxuICAgICAgICAnZWNobyBcImxhdGVzdF9jb21taXQ9JChnaXQgbHMtcmVtb3RlIG9yaWdpbiAtaCAke3sgZ2l0aHViLnJlZiB9fSB8IGN1dCAtZjEpXCIgPj4gJEdJVEhVQl9PVVRQVVRcXG5jYXQgJEdJVEhVQl9PVVRQVVQnLFxuICAgICAgICBcImdpdF9yZW1vdGUgc3RlcCBpbiByZWxlYXNlIHdvcmtmbG93IGRpZCBub3QgbWF0Y2ggZXhwZWN0ZWQgc3RyaW5nLCBwbGVhc2UgY2hlY2sgaWYgdGhlIHdvcmthcm91bmQgc3RpbGwgd29ya3MhXCJcbiAgICAgICk7XG4gICAgICBjb25zdCBwcmV2aW91c0NvbW1hbmQgPSBnaXRSZW1vdGVKb2IucnVuLnJlcGxhY2UoXCJcXG5cIiwgXCIgJiYgXCIpO1xuXG4gICAgICBjb25zdCBjYW5jZWxDb21tYW5kID1cbiAgICAgICAgJ2VjaG8gXCJsYXRlc3RfY29tbWl0PXJlbGVhc2VfY2FuY2VsbGVkXCIgPj4gJEdJVEhVQl9PVVRQVVQnOyAvLyB0aGlzIGNhbmNlbHMgdGhlIHJlbGVhc2UgdmlhIGEgbm9uLW1hdGNoaW5nIFNIQTtcbiAgICAgIGdpdFJlbW90ZUpvYi5ydW4gPSBgbm9kZSAuL3NjcmlwdHMvc2hvdWxkLXJlbGVhc2UuanMgJiYgKCR7cHJldmlvdXNDb21tYW5kfSkgfHwgJHtjYW5jZWxDb21tYW5kfWA7XG4gICAgICBnaXRSZW1vdGVKb2IubmFtZSArPVxuICAgICAgICBcIiBvciBjYW5jZWwgdmlhIGZha2luZyBhIFNIQSBpZiByZWxlYXNlIHdhcyBjYW5jZWxsZWRcIjtcbiAgICB9XG5cbiAgICBjb25zdCBzdGFsZVdvcmtmbG93ID0gdGhpcy50cnlGaW5kT2JqZWN0RmlsZShcIi5naXRodWIvd29ya2Zsb3dzL3N0YWxlLnltbFwiKTtcbiAgICBzdGFsZVdvcmtmbG93Py5hZGRPdmVycmlkZShcIm9uLnNjaGVkdWxlXCIsIFtcbiAgICAgIHtcbiAgICAgICAgY3JvbjogZ2VuZXJhdGVSYW5kb21Dcm9uKHsgcHJvamVjdDogdGhpcywgbWF4SG91cjogNCwgaG91ck9mZnNldDogMSB9KSxcbiAgICAgIH0sXG4gICAgXSk7XG5cbiAgICBjb25zdCB1cGdyYWRlV29ya2Zsb3cgPSB0aGlzLnRyeUZpbmRPYmplY3RGaWxlKFxuICAgICAgXCIuZ2l0aHViL3dvcmtmbG93cy91cGdyYWRlLW1haW4ueW1sXCJcbiAgICApO1xuICAgIHVwZ3JhZGVXb3JrZmxvdz8uYWRkT3ZlcnJpZGUoXCJvbi5zY2hlZHVsZVwiLCBbXG4gICAgICB7XG4gICAgICAgIGNyb246IGdlbmVyYXRlUmFuZG9tQ3Jvbih7XG4gICAgICAgICAgcHJvamVjdDogdGhpcyxcbiAgICAgICAgICBtYXhIb3VyOiAwLFxuICAgICAgICAgIGhvdXJPZmZzZXQ6IDEsXG4gICAgICAgICAgc2NoZWR1bGU6IFNjaGVkdWxlLldlZWtseSxcbiAgICAgICAgfSksXG4gICAgICB9LFxuICAgIF0pO1xuXG4gICAgLy8gU3VibW9kdWxlIGRvY3VtZW50YXRpb24gZ2VuZXJhdGlvblxuICAgIHRoaXMuZ2l0aWdub3JlLmV4Y2x1ZGUoXCJBUEkubWRcIik7IC8vIGlnbm9yZSB0aGUgb2xkIGZpbGUsIHdlIG5vdyBnZW5lcmF0ZSBpdCBpbiB0aGUgZG9jcyBmb2xkZXJcbiAgICB0aGlzLmFkZERldkRlcHMoXCJqc2lpLWRvY2dlbkBeMTAuMi4zXCIpO1xuICAgIGlmIChqc2lpVmVyc2lvbikge1xuICAgICAgLy8gTk9URTogdGhlIGJlbG93IGlzIG1ha2luZyBhIGJyb2FkIGFzc3VtcHRpb24gdGhhdCB5b3UncmUgcGFzc2luZyBhIHJhbmdlIGxpa2UgXCJ+NS4zLjBcIiB0byBqc2lpVmVyc2lvblxuICAgICAgLy8gSWYgeW91IHVzZSB0aGF0IGZpZWxkIHRvIHBhc3MgYSB2ZXJ5IHNwZWNpZmljIHZlcnNpb24gKGUuZy4gXCI1LjMuMTFcIikgdGhlbiB0aGlzIG1pZ2h0IGJyZWFrXG4gICAgICB0aGlzLmFkZERldkRlcHMoYGpzaWktcm9zZXR0YUAke2pzaWlWZXJzaW9ufWApO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmFkZERldkRlcHMoYGpzaWktcm9zZXR0YWApO1xuICAgIH1cblxuICAgIGNvbnN0IGRvY2dlbiA9IHRoaXMuYWRkVGFzayhcImRvY2dlblwiLCB7XG4gICAgICBkZXNjcmlwdGlvbjogXCJHZW5lcmF0ZSBkb2N1bWVudGF0aW9uIGZvciB0aGUgcHJvamVjdFwiLFxuICAgICAgc3RlcHM6IFtcbiAgICAgICAge1xuICAgICAgICAgIGV4ZWM6IFtcbiAgICAgICAgICAgIFwicm0gLXJmIGRvY3NcIixcbiAgICAgICAgICAgIFwicm0gLWYgQVBJLm1kXCIsXG4gICAgICAgICAgICBcIm1rZGlyIGRvY3NcIixcbiAgICAgICAgICAgIC8vIFRPRE86IFJlLWVuYWJsZSBqYXZhIC8gY3NoYXJwXG4gICAgICAgICAgICAvLyBcImpzaWktZG9jZ2VuIC0tc3BsaXQtYnktc3VibW9kdWxlIC1sIHR5cGVzY3JpcHQgLWwgcHl0aG9uIC1sIGphdmEgLWwgY3NoYXJwIC1sIGdvXCIsXG4gICAgICAgICAgICBcImpzaWktZG9jZ2VuIC0tc3BsaXQtYnktc3VibW9kdWxlIC1sIHR5cGVzY3JpcHQgLWwgcHl0aG9uIC1sIGdvXCIsXG4gICAgICAgICAgICAvLyBUaGVyZSBpcyBubyBuaWNlIHdheSB0byB0ZWxsIGpzaWktZG9jZ2VuIHRvIGdlbmVyYXRlIGRvY3MgaW50byBhIGZvbGRlciBzbyBJIHdlbnQgdGhpcyByb3V0ZVxuICAgICAgICAgICAgXCJtdiAqLioubWQgZG9jc1wiLFxuICAgICAgICAgICAgLy8gU29tZSBwYXJ0IG9mIHRoZSBkb2N1bWVudGF0aW9uIGFyZSB0b28gbG9uZywgd2UgbmVlZCB0byB0cnVuY2F0ZSB0aGVtIHRvIH4xME1CXG4gICAgICAgICAgICBcImNkIGRvY3NcIixcbiAgICAgICAgICAgIFwibHMgLi8gfCB4YXJncyBzZWQgLWkgJzE1MDAwMCwkIGQnICQxXCIsXG4gICAgICAgICAgXS5qb2luKFwiICYmIFwiKSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfSk7XG4gICAgdGhpcy5wb3N0Q29tcGlsZVRhc2suc3Bhd24oZG9jZ2VuKTtcbiAgICB0aGlzLmdpdGlnbm9yZS5pbmNsdWRlKGAvZG9jcy8qLm1kYCk7XG4gICAgdGhpcy5hbm5vdGF0ZUdlbmVyYXRlZChgL2RvY3MvKi5tZGApO1xuXG4gICAgLy8gU2V0dGluZyB0aGUgdmVyc2lvbiBpbiBwYWNrYWdlLmpzb24gc28gdGhlIGdvbGFuZyBkb2NzIGhhdmUgdGhlIGNvcnJlY3QgdmVyc2lvblxuICAgIGNvbnN0IHVuY29uZGl0aW9uYWxCdW1wID0gdGhpcy5hZGRUYXNrKFwidW5jb25kaXRpb25hbC1idW1wXCIsIHtcbiAgICAgIGRlc2NyaXB0aW9uOiBcIlNldCB0aGUgdmVyc2lvbiBpbiBwYWNrYWdlLmpzb24gdG8gdGhlIGN1cnJlbnQgdmVyc2lvblwiLFxuICAgICAgc3RlcHM6IFtcbiAgICAgICAge1xuICAgICAgICAgIG5hbWU6IFwiQ2xlYXIgdGhlIGNoYW5nZWxvZyBzbyB0aGF0IGl0IGRvZXNuJ3QgZ2V0IHB1Ymxpc2hlZCB0d2ljZVwiLFxuICAgICAgICAgIGV4ZWM6IFwicm0gLWYgJENIQU5HRUxPR1wiLFxuICAgICAgICB9LFxuICAgICAgICB7IGJ1aWx0aW46IFwicmVsZWFzZS9idW1wLXZlcnNpb25cIiB9LFxuICAgICAgXSxcbiAgICAgIGVudjoge1xuICAgICAgICBPVVRGSUxFOiBcInBhY2thZ2UuanNvblwiLFxuICAgICAgICBDSEFOR0VMT0c6IFwiZGlzdC9jaGFuZ2Vsb2cubWRcIixcbiAgICAgICAgQlVNUEZJTEU6IFwiZGlzdC92ZXJzaW9uLnR4dFwiLFxuICAgICAgICBSRUxFQVNFVEFHOiBcImRpc3QvcmVsZWFzZXRhZy50eHRcIixcbiAgICAgICAgUkVMRUFTRV9UQUdfUFJFRklYOiBcIlwiLFxuICAgICAgICBNSU5fTUFKT1I6IFN0cmluZyhNSU5fTUFKT1JfVkVSU0lPTiksXG4gICAgICB9LFxuICAgIH0pO1xuICAgIHRoaXMucHJlQ29tcGlsZVRhc2suc3Bhd24odW5jb25kaXRpb25hbEJ1bXApO1xuICAgIC8vIFRvIGJ1bXAgY29ycmVjdGx5IHdlIG5lZWQgdG8gaGF2ZSB0aGUgY29tcGxldGVseSBjbG9uZWQgcmVwb1xuICAgICh0aGlzLmJ1aWxkV29ya2Zsb3cgYXMgYW55KS53b3JrZmxvdy5maWxlLmFkZE92ZXJyaWRlKFxuICAgICAgXCJqb2JzLmJ1aWxkLnN0ZXBzLjAud2l0aC5mZXRjaC1kZXB0aFwiLFxuICAgICAgMFxuICAgICk7XG4gICAgLy8gVW5kbyB0aGUgY2hhbmdlcyBhZnRlciBjb21waWxhdGlvblxuICAgIHRoaXMuYnVpbGRXb3JrZmxvdz8uYWRkUG9zdEJ1aWxkU3RlcHMoe1xuICAgICAgbmFtZTogXCJSZXZlcnQgcGFja2FnZS5qc29uIHZlcnNpb24gYnVtcFwiLFxuICAgICAgcnVuOiBcImdpdCBjaGVja291dCBwYWNrYWdlLmpzb25cIixcbiAgICB9KTtcblxuICAgIG5ldyBDb3B5cmlnaHRIZWFkZXJzKHRoaXMpO1xuICAgIG5ldyBEZXByZWNhdGVQYWNrYWdlcyh0aGlzLCB7XG4gICAgICBwcm92aWRlck5hbWUsXG4gICAgICBwYWNrYWdlSW5mbyxcbiAgICAgIGlzRGVwcmVjYXRlZDogISFpc0RlcHJlY2F0ZWQsXG4gICAgfSk7XG4gICAgaWYgKCFpc0RlcHJlY2F0ZWQpIHtcbiAgICAgIG5ldyBGb3JjZVJlbGVhc2UodGhpcywgeyB3b3JrZmxvd1J1bnNPbiB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHBpbkdpdGh1YkFjdGlvblZlcnNpb25zKHBpbm5lZFZlcnNpb25zOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+KSB7XG4gICAgLy8gVXNlIHBpbm5lZCB2ZXJzaW9ucyBvZiBnaXRodWIgYWN0aW9uc1xuICAgIE9iamVjdC5lbnRyaWVzKHBpbm5lZFZlcnNpb25zKS5mb3JFYWNoKChbbmFtZSwgc2hhXSkgPT4ge1xuICAgICAgdGhpcy5naXRodWI/LmFjdGlvbnMuc2V0KG5hbWUsIGAke25hbWV9QCR7c2hhfWApO1xuICAgIH0pO1xuICB9XG59XG5cbmZ1bmN0aW9uIHByZXR0eUFzc2VydEVxdWFsPFQ+KHN1YmplY3Q6IFQsIGV4cGVjdGVkOiBULCBtZXNzYWdlPzogc3RyaW5nKTogdm9pZCB7XG4gIGlmIChzdWJqZWN0ICE9PSBleHBlY3RlZCkge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIGAke21lc3NhZ2UgPz8gXCJBc3NlcnRpb24gZmFpbGVkXCJ9OiBleHBlY3RlZCAke0pTT04uc3RyaW5naWZ5KFxuICAgICAgICBleHBlY3RlZFxuICAgICAgKX0gYnV0IGdvdCAke0pTT04uc3RyaW5naWZ5KHN1YmplY3QpfWBcbiAgICApO1xuICB9XG59XG4iXX0=
package/package.json CHANGED
@@ -85,7 +85,7 @@
85
85
  "publishConfig": {
86
86
  "access": "public"
87
87
  },
88
- "version": "0.7.32",
88
+ "version": "0.7.34",
89
89
  "jest": {
90
90
  "coverageProvider": "v8",
91
91
  "testMatch": [