@jjrawlins/cdk-deploy-pr-github-action 0.0.7 → 0.0.8
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
|
@@ -3499,7 +3499,7 @@
|
|
|
3499
3499
|
},
|
|
3500
3500
|
"name": "@jjrawlins/cdk-deploy-pr-github-action",
|
|
3501
3501
|
"readme": {
|
|
3502
|
-
"markdown": "#
|
|
3502
|
+
"markdown": "# @jjrawlins/cdk-deploy-pr-github-action\n\nA [projen](https://projen.io/) construct that generates GitHub Actions workflows for AWS CDK deployments.\n\n## Features\n\n- **Automated deploy pipeline** (`deploy.yml`) — synth, publish assets, and deploy on push to main\n- **Manual dispatch workflow** (`deploy-dispatch.yml`) — deploy any previously published version to any environment\n- **Versioned cloud assemblies** — publishes `cdk.out` to GitHub Packages with auto-incrementing versions\n- **GitHub Releases** — each deploy creates a git tag and GitHub Release tied to the assembly version\n- **Multi-stage deployments** — parallel or sequential stages with `dependsOn` ordering\n- **GitHub Environments** — per-stage environment protection rules, secrets scoping, and deployment approvals\n- **Manual approval stages** — exclude stages from auto-deploy, only deployable via dispatch\n- **Per-stage IAM role overrides** — cross-account deployments with per-stage OIDC roles\n- **Concurrency groups** — prevents concurrent deployments to the same stage\n- **Rollback support** — redeploy any previous assembly version via the dispatch workflow\n\n## Installation\n\n```bash\nnpm install @jjrawlins/cdk-deploy-pr-github-action\n```\n\nAlso available on [PyPI](https://pypi.org/project/jjrawlins-cdk-deploy-pr-github-action/), [NuGet](https://www.nuget.org/packages/JJRawlins.CdkDeployPrGithubAction), and [Go](https://pkg.go.dev/github.com/JaysonRawlins/cdk-deploy-pr-github-action).\n\n## Usage\n\nIn your `.projenrc.ts`:\n\n```typescript\nimport { CdkDeployPipeline } from '@jjrawlins/cdk-deploy-pr-github-action';\n\nnew CdkDeployPipeline(project, {\n stackPrefix: 'MyApp',\n pkgNamespace: '@my-org',\n iamRoleArn: 'arn:aws:iam::111111111111:role/GitHubActionsOidcRole',\n iamRoleRegion: 'us-east-1',\n stages: [\n {\n name: 'dev',\n env: { account: '222222222222', region: 'us-east-1' },\n environment: 'development',\n },\n {\n name: 'staging',\n env: { account: '333333333333', region: 'us-east-1' },\n environment: 'staging',\n dependsOn: ['dev'],\n },\n {\n name: 'prod',\n env: { account: '444444444444', region: 'us-east-1' },\n environment: 'production',\n dependsOn: ['staging'],\n manualApproval: true, // Only deployable via dispatch\n },\n ],\n});\n```\n\nRun `npx projen` to generate the workflow files.\n\n## Generated Workflows\n\n### `deploy.yml`\n\nTriggered on push to main. Jobs:\n\n1. **synth** — checks out code, installs dependencies, runs `cdk synth`, uploads cloud assembly artifact\n2. **publish-assets** — publishes Lambda/container assets to AWS, versions and publishes the cloud assembly to GitHub Packages, creates a git tag and GitHub Release\n3. **deploy-{stage}** — one job per non-manual stage, deploys stacks using the cloud assembly artifact\n\n### `deploy-dispatch.yml`\n\nTriggered manually via `workflow_dispatch`. Inputs:\n\n- **environment** — target environment (dropdown of configured stages)\n- **version** — assembly version to deploy (e.g., `0.0.4`)\n\nDownloads the specified assembly version from GitHub Packages and deploys it. This enables:\n\n- Deploying to `manualApproval` stages (e.g., production)\n- Rolling back to any previous version\n- Ad-hoc deployments outside the normal CI/CD flow\n\n## Options\n\n### `CdkDeployPipelineOptions`\n\n| Option | Type | Default | Description |\n|--------|------|---------|-------------|\n| `pkgNamespace` | `string` | *required* | npm scope for assembly packages (e.g., `@my-org`) |\n| `stackPrefix` | `string` | *required* | Stack name prefix (e.g., `MyApp` -> `MyApp-dev`) |\n| `iamRoleArn` | `string` | *required* | Default OIDC role ARN for AWS credential assumption |\n| `stages` | `DeployStageOptions[]` | *required* | Deployment stages |\n| `iamRoleRegion` | `string` | `us-east-1` | Default AWS region for OIDC credential assumption |\n| `nodeVersion` | `string` | `24.x` | Node.js version for workflow runners |\n| `cdkCommand` | `string` | `npx cdk` | CDK CLI command prefix |\n| `installCommand` | `string` | `yarn install --check-files --frozen-lockfile` | Package install command |\n| `manualDeployment` | `boolean` | `true` | Generate the dispatch workflow |\n| `useGithubPackagesForAssembly` | `boolean` | `true` | Publish cloud assembly to GitHub Packages |\n| `branchName` | `string` | `main` | Branch that triggers deployments |\n\n### `DeployStageOptions`\n\n| Option | Type | Default | Description |\n|--------|------|---------|-------------|\n| `name` | `string` | *required* | Stage name (used in job IDs and stack names) |\n| `env` | `{ account, region }` | *required* | AWS target environment |\n| `environment` | `string` | stage name | GitHub Environment name |\n| `iamRoleArn` | `string` | pipeline default | Override OIDC role for this stage |\n| `iamRoleRegion` | `string` | pipeline default | Override AWS region for this stage |\n| `dependsOn` | `string[]` | `[]` | Stages that must complete first |\n| `stacks` | `string[]` | `['{stackPrefix}-{name}']` | CDK stack names to deploy |\n| `manualApproval` | `boolean` | `false` | Exclude from auto-deploy, dispatch only |\n\n## Examples\n\n### Parallel stages\n\nStages without `dependsOn` run in parallel after asset publishing:\n\n```typescript\nstages: [\n { name: 'us-east-1', env: usEast1Env },\n { name: 'eu-west-1', env: euWest1Env },\n]\n```\n\n### Cross-account with per-stage roles\n\n```typescript\nstages: [\n {\n name: 'dev',\n env: { account: '222222222222', region: 'us-east-1' },\n iamRoleArn: 'arn:aws:iam::222222222222:role/DevDeployRole',\n },\n {\n name: 'prod',\n env: { account: '333333333333', region: 'us-east-1' },\n iamRoleArn: 'arn:aws:iam::333333333333:role/ProdDeployRole',\n manualApproval: true,\n },\n]\n```\n\n### Rolling back\n\nEach deploy creates a GitHub Release with the assembly version. To roll back:\n\n```bash\ngh workflow run deploy-dispatch.yml -f environment=production -f version=0.0.3\n```\n\n## Prerequisites\n\n- AWS OIDC identity provider configured for GitHub Actions\n- IAM role with trust policy for GitHub Actions OIDC\n- GitHub Environments configured for deployment protection rules (optional)\n\n## License\n\nApache-2.0\n"
|
|
3503
3503
|
},
|
|
3504
3504
|
"repository": {
|
|
3505
3505
|
"type": "git",
|
|
@@ -4197,6 +4197,6 @@
|
|
|
4197
4197
|
"symbolId": "src/types:DeployStageOptions"
|
|
4198
4198
|
}
|
|
4199
4199
|
},
|
|
4200
|
-
"version": "0.0.
|
|
4201
|
-
"fingerprint": "
|
|
4200
|
+
"version": "0.0.8",
|
|
4201
|
+
"fingerprint": "egbFOWI4RgOQ2mJGGcPSVGdJswsyJ/utU8J8LbVZTt4="
|
|
4202
4202
|
}
|
package/README.md
CHANGED
|
@@ -1 +1,164 @@
|
|
|
1
|
-
#
|
|
1
|
+
# @jjrawlins/cdk-deploy-pr-github-action
|
|
2
|
+
|
|
3
|
+
A [projen](https://projen.io/) construct that generates GitHub Actions workflows for AWS CDK deployments.
|
|
4
|
+
|
|
5
|
+
## Features
|
|
6
|
+
|
|
7
|
+
- **Automated deploy pipeline** (`deploy.yml`) — synth, publish assets, and deploy on push to main
|
|
8
|
+
- **Manual dispatch workflow** (`deploy-dispatch.yml`) — deploy any previously published version to any environment
|
|
9
|
+
- **Versioned cloud assemblies** — publishes `cdk.out` to GitHub Packages with auto-incrementing versions
|
|
10
|
+
- **GitHub Releases** — each deploy creates a git tag and GitHub Release tied to the assembly version
|
|
11
|
+
- **Multi-stage deployments** — parallel or sequential stages with `dependsOn` ordering
|
|
12
|
+
- **GitHub Environments** — per-stage environment protection rules, secrets scoping, and deployment approvals
|
|
13
|
+
- **Manual approval stages** — exclude stages from auto-deploy, only deployable via dispatch
|
|
14
|
+
- **Per-stage IAM role overrides** — cross-account deployments with per-stage OIDC roles
|
|
15
|
+
- **Concurrency groups** — prevents concurrent deployments to the same stage
|
|
16
|
+
- **Rollback support** — redeploy any previous assembly version via the dispatch workflow
|
|
17
|
+
|
|
18
|
+
## Installation
|
|
19
|
+
|
|
20
|
+
```bash
|
|
21
|
+
npm install @jjrawlins/cdk-deploy-pr-github-action
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
Also available on [PyPI](https://pypi.org/project/jjrawlins-cdk-deploy-pr-github-action/), [NuGet](https://www.nuget.org/packages/JJRawlins.CdkDeployPrGithubAction), and [Go](https://pkg.go.dev/github.com/JaysonRawlins/cdk-deploy-pr-github-action).
|
|
25
|
+
|
|
26
|
+
## Usage
|
|
27
|
+
|
|
28
|
+
In your `.projenrc.ts`:
|
|
29
|
+
|
|
30
|
+
```typescript
|
|
31
|
+
import { CdkDeployPipeline } from '@jjrawlins/cdk-deploy-pr-github-action';
|
|
32
|
+
|
|
33
|
+
new CdkDeployPipeline(project, {
|
|
34
|
+
stackPrefix: 'MyApp',
|
|
35
|
+
pkgNamespace: '@my-org',
|
|
36
|
+
iamRoleArn: 'arn:aws:iam::111111111111:role/GitHubActionsOidcRole',
|
|
37
|
+
iamRoleRegion: 'us-east-1',
|
|
38
|
+
stages: [
|
|
39
|
+
{
|
|
40
|
+
name: 'dev',
|
|
41
|
+
env: { account: '222222222222', region: 'us-east-1' },
|
|
42
|
+
environment: 'development',
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
name: 'staging',
|
|
46
|
+
env: { account: '333333333333', region: 'us-east-1' },
|
|
47
|
+
environment: 'staging',
|
|
48
|
+
dependsOn: ['dev'],
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
name: 'prod',
|
|
52
|
+
env: { account: '444444444444', region: 'us-east-1' },
|
|
53
|
+
environment: 'production',
|
|
54
|
+
dependsOn: ['staging'],
|
|
55
|
+
manualApproval: true, // Only deployable via dispatch
|
|
56
|
+
},
|
|
57
|
+
],
|
|
58
|
+
});
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
Run `npx projen` to generate the workflow files.
|
|
62
|
+
|
|
63
|
+
## Generated Workflows
|
|
64
|
+
|
|
65
|
+
### `deploy.yml`
|
|
66
|
+
|
|
67
|
+
Triggered on push to main. Jobs:
|
|
68
|
+
|
|
69
|
+
1. **synth** — checks out code, installs dependencies, runs `cdk synth`, uploads cloud assembly artifact
|
|
70
|
+
2. **publish-assets** — publishes Lambda/container assets to AWS, versions and publishes the cloud assembly to GitHub Packages, creates a git tag and GitHub Release
|
|
71
|
+
3. **deploy-{stage}** — one job per non-manual stage, deploys stacks using the cloud assembly artifact
|
|
72
|
+
|
|
73
|
+
### `deploy-dispatch.yml`
|
|
74
|
+
|
|
75
|
+
Triggered manually via `workflow_dispatch`. Inputs:
|
|
76
|
+
|
|
77
|
+
- **environment** — target environment (dropdown of configured stages)
|
|
78
|
+
- **version** — assembly version to deploy (e.g., `0.0.4`)
|
|
79
|
+
|
|
80
|
+
Downloads the specified assembly version from GitHub Packages and deploys it. This enables:
|
|
81
|
+
|
|
82
|
+
- Deploying to `manualApproval` stages (e.g., production)
|
|
83
|
+
- Rolling back to any previous version
|
|
84
|
+
- Ad-hoc deployments outside the normal CI/CD flow
|
|
85
|
+
|
|
86
|
+
## Options
|
|
87
|
+
|
|
88
|
+
### `CdkDeployPipelineOptions`
|
|
89
|
+
|
|
90
|
+
| Option | Type | Default | Description |
|
|
91
|
+
|--------|------|---------|-------------|
|
|
92
|
+
| `pkgNamespace` | `string` | *required* | npm scope for assembly packages (e.g., `@my-org`) |
|
|
93
|
+
| `stackPrefix` | `string` | *required* | Stack name prefix (e.g., `MyApp` -> `MyApp-dev`) |
|
|
94
|
+
| `iamRoleArn` | `string` | *required* | Default OIDC role ARN for AWS credential assumption |
|
|
95
|
+
| `stages` | `DeployStageOptions[]` | *required* | Deployment stages |
|
|
96
|
+
| `iamRoleRegion` | `string` | `us-east-1` | Default AWS region for OIDC credential assumption |
|
|
97
|
+
| `nodeVersion` | `string` | `24.x` | Node.js version for workflow runners |
|
|
98
|
+
| `cdkCommand` | `string` | `npx cdk` | CDK CLI command prefix |
|
|
99
|
+
| `installCommand` | `string` | `yarn install --check-files --frozen-lockfile` | Package install command |
|
|
100
|
+
| `manualDeployment` | `boolean` | `true` | Generate the dispatch workflow |
|
|
101
|
+
| `useGithubPackagesForAssembly` | `boolean` | `true` | Publish cloud assembly to GitHub Packages |
|
|
102
|
+
| `branchName` | `string` | `main` | Branch that triggers deployments |
|
|
103
|
+
|
|
104
|
+
### `DeployStageOptions`
|
|
105
|
+
|
|
106
|
+
| Option | Type | Default | Description |
|
|
107
|
+
|--------|------|---------|-------------|
|
|
108
|
+
| `name` | `string` | *required* | Stage name (used in job IDs and stack names) |
|
|
109
|
+
| `env` | `{ account, region }` | *required* | AWS target environment |
|
|
110
|
+
| `environment` | `string` | stage name | GitHub Environment name |
|
|
111
|
+
| `iamRoleArn` | `string` | pipeline default | Override OIDC role for this stage |
|
|
112
|
+
| `iamRoleRegion` | `string` | pipeline default | Override AWS region for this stage |
|
|
113
|
+
| `dependsOn` | `string[]` | `[]` | Stages that must complete first |
|
|
114
|
+
| `stacks` | `string[]` | `['{stackPrefix}-{name}']` | CDK stack names to deploy |
|
|
115
|
+
| `manualApproval` | `boolean` | `false` | Exclude from auto-deploy, dispatch only |
|
|
116
|
+
|
|
117
|
+
## Examples
|
|
118
|
+
|
|
119
|
+
### Parallel stages
|
|
120
|
+
|
|
121
|
+
Stages without `dependsOn` run in parallel after asset publishing:
|
|
122
|
+
|
|
123
|
+
```typescript
|
|
124
|
+
stages: [
|
|
125
|
+
{ name: 'us-east-1', env: usEast1Env },
|
|
126
|
+
{ name: 'eu-west-1', env: euWest1Env },
|
|
127
|
+
]
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
### Cross-account with per-stage roles
|
|
131
|
+
|
|
132
|
+
```typescript
|
|
133
|
+
stages: [
|
|
134
|
+
{
|
|
135
|
+
name: 'dev',
|
|
136
|
+
env: { account: '222222222222', region: 'us-east-1' },
|
|
137
|
+
iamRoleArn: 'arn:aws:iam::222222222222:role/DevDeployRole',
|
|
138
|
+
},
|
|
139
|
+
{
|
|
140
|
+
name: 'prod',
|
|
141
|
+
env: { account: '333333333333', region: 'us-east-1' },
|
|
142
|
+
iamRoleArn: 'arn:aws:iam::333333333333:role/ProdDeployRole',
|
|
143
|
+
manualApproval: true,
|
|
144
|
+
},
|
|
145
|
+
]
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
### Rolling back
|
|
149
|
+
|
|
150
|
+
Each deploy creates a GitHub Release with the assembly version. To roll back:
|
|
151
|
+
|
|
152
|
+
```bash
|
|
153
|
+
gh workflow run deploy-dispatch.yml -f environment=production -f version=0.0.3
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
## Prerequisites
|
|
157
|
+
|
|
158
|
+
- AWS OIDC identity provider configured for GitHub Actions
|
|
159
|
+
- IAM role with trust policy for GitHub Actions OIDC
|
|
160
|
+
- GitHub Environments configured for deployment protection rules (optional)
|
|
161
|
+
|
|
162
|
+
## License
|
|
163
|
+
|
|
164
|
+
Apache-2.0
|
|
@@ -13,7 +13,7 @@ import (
|
|
|
13
13
|
constructs "github.com/aws/constructs-go/constructs/v10/jsii"
|
|
14
14
|
)
|
|
15
15
|
|
|
16
|
-
//go:embed jjrawlins-cdk-deploy-pr-github-action-0.0.
|
|
16
|
+
//go:embed jjrawlins-cdk-deploy-pr-github-action-0.0.7.tgz
|
|
17
17
|
var tarball []byte
|
|
18
18
|
|
|
19
19
|
// Initialize loads the necessary packages in the @jsii/kernel to support the enclosing module.
|
|
@@ -24,5 +24,5 @@ func Initialize() {
|
|
|
24
24
|
constructs.Initialize()
|
|
25
25
|
|
|
26
26
|
// Load this library into the kernel
|
|
27
|
-
_jsii_.Load("@jjrawlins/cdk-deploy-pr-github-action", "0.0.
|
|
27
|
+
_jsii_.Load("@jjrawlins/cdk-deploy-pr-github-action", "0.0.7", tarball)
|
|
28
28
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
0.0.
|
|
1
|
+
0.0.7
|
|
@@ -113,5 +113,5 @@ class CdkDeployDispatchWorkflow {
|
|
|
113
113
|
}
|
|
114
114
|
exports.CdkDeployDispatchWorkflow = CdkDeployDispatchWorkflow;
|
|
115
115
|
_a = JSII_RTTI_SYMBOL_1;
|
|
116
|
-
CdkDeployDispatchWorkflow[_a] = { fqn: "@jjrawlins/cdk-deploy-pr-github-action.CdkDeployDispatchWorkflow", version: "0.0.
|
|
116
|
+
CdkDeployDispatchWorkflow[_a] = { fqn: "@jjrawlins/cdk-deploy-pr-github-action.CdkDeployDispatchWorkflow", version: "0.0.8" };
|
|
117
117
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2RrRGVwbG95RGlzcGF0Y2hXb3JrZmxvdy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9DZGtEZXBsb3lEaXNwYXRjaFdvcmtmbG93LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsOENBQTJEO0FBQzNELHVFQUFrRTtBQUVsRSxtQ0FBc0M7QUFFdEMsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUM7QUFDOUIsTUFBTSxrQkFBa0IsR0FBRyxJQUFJLENBQUM7QUFDaEMsTUFBTSx1QkFBdUIsR0FBRyxJQUFJLENBQUM7QUFFckM7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFhLHlCQUF5QjtJQUNwQyxZQUFZLE9BQVksRUFBRSxPQUFzQztRQUM5RCxNQUFNLEVBQ0osTUFBTSxFQUNOLFlBQVksRUFDWixPQUFPLEVBQ1AsV0FBVyxFQUNYLFVBQVUsRUFDVixhQUFhLEVBQ2IsV0FBVyxFQUNYLFVBQVUsRUFDVixjQUFjLEdBQ2YsR0FBRyxPQUFPLENBQUM7UUFFWixNQUFNLEVBQUUsR0FBRyxPQUFPLENBQUMsTUFBTSxJQUFJLElBQUksZUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2pELE1BQU0sUUFBUSxHQUFHLElBQUksdUJBQWMsQ0FBQyxFQUFFLEVBQUUsaUJBQWlCLEVBQUU7WUFDekQsUUFBUSxFQUFFLHFCQUFxQjtTQUNoQyxDQUFDLENBQUM7UUFFSCx3Q0FBd0M7UUFDeEMsTUFBTSxrQkFBa0IsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUNuQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFdBQVcsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUMvQixDQUFDO1FBRUYsUUFBUSxDQUFDLEVBQUUsQ0FBQztZQUNWLGdCQUFnQixFQUFFO2dCQUNoQixNQUFNLEVBQUU7b0JBQ04sV0FBVyxFQUFFO3dCQUNYLFdBQVcsRUFBRSxpQ0FBaUM7d0JBQzlDLFFBQVEsRUFBRSxJQUFJO3dCQUNkLElBQUksRUFBRSxRQUFR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RDt3QkFDRSxJQUFJLEVBQUUsVUFBVSxLQUFLLENBQUMsSUFBSSxFQUFFO3dCQUM1QixHQUFHLEVBQUUsYUFBYTtxQkFDbkI7aUJBQ0Y7YUFDRixDQUFDO1FBQ0osQ0FBQztRQUVELFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDekIsQ0FBQzs7QUFoSEgsOERBaUhDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgR2l0SHViLCBHaXRodWJXb3JrZmxvdyB9IGZyb20gJ3Byb2plbi9saWIvZ2l0aHViJztcbmltcG9ydCB7IEpvYlBlcm1pc3Npb24gfSBmcm9tICdwcm9qZW4vbGliL2dpdGh1Yi93b3JrZmxvd3MtbW9kZWwnO1xuaW1wb3J0IHsgRGVwbG95RGlzcGF0Y2hJbnRlcm5hbE9wdGlvbnMgfSBmcm9tICcuL0Nka0RlcGxveVBpcGVsaW5lJztcbmltcG9ydCB7IHRvS2ViYWJDYXNlIH0gZnJvbSAnLi91dGlscyc7XG5cbmNvbnN0IENIRUNLT1VUX1ZFUlNJT04gPSAndjUnO1xuY29uc3QgU0VUVVBfTk9ERV9WRVJTSU9OID0gJ3Y1JztcbmNvbnN0IEFXU19DUkVERU5USUFMU19WRVJTSU9OID0gJ3Y1JztcblxuLyoqXG4gKiBHZW5lcmF0ZXMgYSB3b3JrZmxvd19kaXNwYXRjaCB3b3JrZmxvdyBmb3IgbWFudWFsIENESyBkZXBsb3ltZW50cyBhbmQgcm9sbGJhY2tzLlxuICpcbiAqIEFsbG93cyBkZXBsb3lpbmcgYW55IHByZXZpb3VzbHkgcHVibGlzaGVkIHZlcnNpb24gb2YgdGhlIGNsb3VkIGFzc2VtYmx5XG4gKiB0byBhbnkgY29uZmlndXJlZCBlbnZpcm9ubWVudC4gVGhpcyBlbmFibGVzOlxuICogLSBNYW51YWwgcHJvbW90aW9uIGJldHdlZW4gZW52aXJvbm1lbnRzXG4gKiAtIFJvbGxiYWNrIHRvIGFueSBwcmV2aW91cyB2ZXJzaW9uXG4gKiAtIEFkLWhvYyBkZXBsb3ltZW50cyBvdXRzaWRlIHRoZSBub3JtYWwgQ0kvQ0QgZmxvd1xuICovXG5leHBvcnQgY2xhc3MgQ2RrRGVwbG95RGlzcGF0Y2hXb3JrZmxvdyB7XG4gIGNvbnN0cnVjdG9yKHByb2plY3Q6IGFueSwgb3B0aW9uczogRGVwbG95RGlzcGF0Y2hJbnRlcm5hbE9wdGlvbnMpIHtcbiAgICBjb25zdCB7XG4gICAgICBzdGFnZXMsXG4gICAgICBwa2dOYW1lc3BhY2UsXG4gICAgICBhcHBOYW1lLFxuICAgICAgc3RhY2tQcmVmaXgsXG4gICAgICBpYW1Sb2xlQXJuLFxuICAgICAgaWFtUm9sZVJlZ2lvbixcbiAgICAgIG5vZGVWZXJzaW9uLFxuICAgICAgY2RrQ29tbWFuZCxcbiAgICAgIGluc3RhbGxDb21tYW5kLFxuICAgIH0gPSBvcHRpb25zO1xuXG4gICAgY29uc3QgZ2ggPSBwcm9qZWN0LmdpdGh1YiA/PyBuZXcgR2l0SHViKHByb2plY3QpO1xuICAgIGNvbnN0IHdvcmtmbG93ID0gbmV3IEdpdGh1YldvcmtmbG93KGdoLCAnZGVwbG95LWRpc3BhdGNoJywge1xuICAgICAgZmlsZU5hbWU6ICdkZXBsb3ktZGlzcGF0Y2gueW1sJyxcbiAgICB9KTtcblxuICAgIC8vIEJ1aWxkIGVudmlyb25tZW50IGNob2ljZXMgZnJvbSBzdGFnZXNcbiAgICBjb25zdCBlbnZpcm9ubWVudENob2ljZXMgPSBzdGFnZXMubWFwKFxuICAgICAgKHMpID0+IHMuZW52aXJvbm1lbnQgPz8gcy5uYW1lLFxuICAgICk7XG5cbiAgICB3b3JrZmxvdy5vbih7XG4gICAgICB3b3JrZmxvd0Rpc3BhdGNoOiB7XG4gICAgICAgIGlucHV0czoge1xuICAgICAgICAgIGVudmlyb25tZW50OiB7XG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogJ1RhcmdldCBlbnZpcm9ubWVudCB0byBkZXBsb3kgdG8nLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgICAgICB0eXBlOiAnY2hvaWNlJyxcbiAgICAgICAgICAgIG9wdGlvbnM6IGVudmlyb25tZW50Q2hvaWNlcyxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHZlcnNpb246IHtcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnQXNzZW1ibHkgdmVyc2lvbiB0byBkZXBsb3kgKGUuZy4sIDEuMy40KScsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgY29uc3Qgam9iczogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9O1xuXG4gICAgZm9yIChjb25zdCBzdGFnZSBvZiBzdGFnZXMpIHtcbiAgICAgIGNvbnN0IGpvYklkID0gYGRlcGxveS0ke3RvS2ViYWJDYXNlKHN0YWdlLm5hbWUpfWA7XG4gICAgICBjb25zdCBzdGFja3MgPSBzdGFnZS5zdGFja3MgPz8gW2Ake3N0YWNrUHJlZml4fS0ke3N0YWdlLm5hbWV9YF07XG4gICAgICBjb25zdCBnaXRodWJFbnYgPSBzdGFnZS5lbnZpcm9ubWVudCA/PyBzdGFnZS5uYW1lO1xuICAgICAgY29uc3Qgcm9sZUFybiA9IHN0YWdlLmlhbVJvbGVBcm4gPz8gaWFtUm9sZUFybjtcbiAgICAgIGNvbnN0IHJvbGVSZWdpb24gPVxuICAgICAgICBzdGFnZS5pYW1Sb2xlUmVnaW9uID8/IGlhbVJvbGVSZWdpb24gPz8gc3RhZ2UuZW52LnJlZ2lvbjtcblxuICAgICAgY29uc3QgZGVwbG95Q29tbWFuZCA9IHN0YWNrc1xuICAgICAgICAubWFwKChzKSA9PiBgJHtjZGtDb21tYW5kfSBkZXBsb3kgJHtzfSAtLXJlcXVpcmUtYXBwcm92YWwgbmV2ZXIgLS1hcHAgY2RrLm91dGApXG4gICAgICAgIC5qb2luKCcgJiYgJyk7XG5cbiAgICAgIGpvYnNbam9iSWRdID0ge1xuICAgICAgICBuYW1lOiBgRGVwbG95ICR7c3RhZ2UubmFtZX0gKG1hbnVhbClgLFxuICAgICAgICBpZjogYGdpdGh1Yi5ldmVudC5pbnB1dHMuZW52aXJvbm1lbnQgPT0gJyR7Z2l0aHViRW52fSdgLFxuICAgICAgICBydW5zT246IFsndWJ1bnR1LWxhdGVzdCddLFxuICAgICAgICBlbnZpcm9ubWVudDogZ2l0aHViRW52LFxuICAgICAgICBjb25jdXJyZW5jeToge1xuICAgICAgICAgICdncm91cCc6IGBkZXBsb3ktJHt0b0tlYmFiQ2FzZShzdGFnZS5uYW1lKX1gLFxuICAgICAgICAgICdjYW5jZWwtaW4tcHJvZ3Jlc3MnOiBmYWxzZSxcbiAgICAgICAgfSxcbiAgICAgICAgcGVybWlzc2lvbnM6IHtcbiAgICAgICAgICBjb250ZW50czogSm9iUGVybWlzc2lvbi5SRUFELFxuICAgICAgICAgIHBhY2thZ2VzOiBKb2JQZXJtaXNzaW9uLlJFQUQsXG4gICAgICAgICAgaWRUb2tlbjogSm9iUGVybWlzc2lvbi5XUklURSxcbiAgICAgICAgfSxcbiAgICAgICAgZW52OiB7IENJOiAndHJ1ZScgfSxcbiAgICAgICAgc3RlcHM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiAnQ2hlY2tvdXQnLFxuICAgICAgICAgICAgdXNlczogYGFjdGlvbnMvY2hlY2tvdXRAJHtDSEVDS09VVF9WRVJTSU9OfWAsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiAnU2V0dXAgTm9kZS5qcycsXG4gICAgICAgICAgICB1c2VzOiBgYWN0aW9ucy9zZXR1cC1ub2RlQCR7U0VUVVBfTk9ERV9WRVJTSU9OfWAsXG4gICAgICAgICAgICB3aXRoOiB7XG4gICAgICAgICAgICAgICdub2RlLXZlcnNpb24nOiBub2RlVmVyc2lvbixcbiAgICAgICAgICAgICAgJ3JlZ2lzdHJ5LXVybCc6ICdodHRwczovL25wbS5wa2cuZ2l0aHViLmNvbScsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogJ0luc3RhbGwgZGVwZW5kZW5jaWVzJyxcbiAgICAgICAgICAgIHJ1bjogaW5zdGFsbENvbW1hbmQsXG4gICAgICAgICAgICBlbnY6IHsgTk9ERV9BVVRIX1RPS0VOOiAnJHt7IHNlY3JldHMuR0lUSFVCX1RPS0VOIH19JywgR0lUSFVCX1RPS0VOOiAnJHt7IHNlY3JldHMuR0lUSFVCX1RPS0VOIH19JyB9LFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogJ0Rvd25sb2FkIHZlcnNpb25lZCBhc3NlbWJseScsXG4gICAgICAgICAgICBydW46IGBucG0gcGFjayAke3BrZ05hbWVzcGFjZX0vJHthcHBOYW1lfUBcXCR7eyBnaXRodWIuZXZlbnQuaW5wdXRzLnZlcnNpb24gfX0gJiYgdGFyIC14emYgKi50Z3ogJiYgbXYgcGFja2FnZSBjZGsub3V0YCxcbiAgICAgICAgICAgIGVudjogeyBOT0RFX0FVVEhfVE9LRU46ICcke3sgc2VjcmV0cy5HSVRIVUJfVE9LRU4gfX0nLCBHSVRIVUJfVE9LRU46ICcke3sgc2VjcmV0cy5HSVRIVUJfVE9LRU4gfX0nIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiAnQVdTIENyZWRlbnRpYWxzJyxcbiAgICAgICAgICAgIHVzZXM6IGBhd3MtYWN0aW9ucy9jb25maWd1cmUtYXdzLWNyZWRlbnRpYWxzQCR7QVdTX0NSRURFTlRJQUxTX1ZFUlNJT059YCxcbiAgICAgICAgICAgIHdpdGg6IHtcbiAgICAgICAgICAgICAgJ3JvbGUtdG8tYXNzdW1lJzogcm9sZUFybixcbiAgICAgICAgICAgICAgJ3JvbGUtc2Vzc2lvbi1uYW1lJzogJ0dpdEh1YkFjdGlvbicsXG4gICAgICAgICAgICAgICdhd3MtcmVnaW9uJzogcm9sZVJlZ2lvbixcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiBgRGVwbG95ICR7c3RhZ2UubmFtZX1gLFxuICAgICAgICAgICAgcnVuOiBkZXBsb3lDb21tYW5kLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9O1xuICAgIH1cblxuICAgIHdvcmtmbG93LmFkZEpvYnMoam9icyk7XG4gIH1cbn1cbiJdfQ==
|
package/lib/CdkDeployPipeline.js
CHANGED
|
@@ -304,5 +304,5 @@ class CdkDeployPipeline {
|
|
|
304
304
|
}
|
|
305
305
|
exports.CdkDeployPipeline = CdkDeployPipeline;
|
|
306
306
|
_a = JSII_RTTI_SYMBOL_1;
|
|
307
|
-
CdkDeployPipeline[_a] = { fqn: "@jjrawlins/cdk-deploy-pr-github-action.CdkDeployPipeline", version: "0.0.
|
|
307
|
+
CdkDeployPipeline[_a] = { fqn: "@jjrawlins/cdk-deploy-pr-github-action.CdkDeployPipeline", version: "0.0.8" };
|
|
308
308
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2RrRGVwbG95UGlwZWxpbmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvQ2RrRGVwbG95UGlwZWxpbmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSw4Q0FBMkQ7QUFDM0QsdUVBQWtFO0FBQ2xFLDJFQUF3RTtBQUV4RSxtQ0FBd0Q7QUFFeEQsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUM7QUFDOUIsTUFBTSxrQkFBa0IsR0FBRyxJQUFJLENBQUM7QUFDaEMsTUFBTSx1QkFBdUIsR0FBRyxJQUFJLENBQUM7QUFDckMsTUFBTSx1QkFBdUIsR0FBRyxJQUFJLENBQUM7QUFDckMsTUFBTSx5QkFBeUIsR0FBRyxJQUFJLENBQUM7QUFFdkM7Ozs7Ozs7OztHQVNHO0FBQ0gsTUFBYSxpQkFBaUI7SUFDNUIsWUFBWSxPQUFZLEVBQUUsT0FBaUM7UUFDekQsTUFBTSxFQUNKLFlBQVksRUFDWixXQUFXLEVBQ1gsVUFBVSxFQUNWLGFBQWEsR0FBRyxXQUFXLEVBQzNCLFdBQVcsR0FBRyxNQUFNLEVBQ3BCLFVBQVUsR0FBRyxTQUFTLEVBQ3RCLGNBQWMsR0FBRyw4Q0FBOEMsRUFDL0QsTUFBTSxFQUNOLGdCQUFnQixHQUFHLElBQUksRUFDdkIsNEJBQTRCLEdBQUcsSUFBSSxFQUNuQyxVQUFVLEdBQUcsTUFBTSxHQUNwQixHQUFHLE9BQU8sQ0FBQztRQUVaLGtCQUFrQjtRQUNsQixJQUFJLE1BQU0sQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDeEIsTUFBTSxJQUFJLEtBQUssQ0FBQywrQ0FBK0MsQ0FBQyxDQUFDO1FBQ25FLENBQUM7UUFFRCxNQUFNLFVBQVUsR0FBRyxJQUFJLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUN0RCxLQUFLLE1BQU0sS0FBSyxJQUFJLE1BQU0sRUFBRSxDQUFDO1lBQzNC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QixHQUFHLEVBQUUsYUFBYTtxQkFDbkI7aUJBQ0Y7YUFDRixDQUFDO1lBRUYscUNBQXFDO1lBQ3JDLE9BQU8sQ0FBQyxPQUFPLENBQUMsVUFBVSxLQUFLLENBQUMsSUFBSSxFQUFFLEVBQUU7Z0JBQ3RDLFdBQVcsRUFBRSxhQUFhLEtBQUssQ0FBQyxJQUFJLEVBQUU7Z0JBQ3RDLElBQUksRUFBRSxNQUFNO3FCQUNULEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxVQUFVLFdBQVcsQ0FBQywyQkFBMkIsQ0FBQztxQkFDaEUsSUFBSSxDQUFDLE1BQU0sQ0FBQzthQUNoQixDQUFDLENBQUM7UUFDTCxDQUFDO1FBRUQsK0JBQStCO1FBQy9CLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFdkIsNEJBQTRCO1FBQzVCLElBQUksZ0JBQWdCLElBQUksNEJBQTRCLEVBQUUsQ0FBQztZQUNyRCxJQUFJLHFEQUF5QixDQUFDLE9BQU8sRUFBRTtnQkFDckMsTUFBTTtnQkFDTixZQUFZO2dCQUNaLE9BQU87Z0JBQ1AsV0FBVztnQkFDWCxVQUFVO2dCQUNWLGFBQWE7Z0JBQ2IsV0FBVztnQkFDWCxVQUFVO2dCQUNWLGNBQWM7YUFDZixDQUFDLENBQUM7UUFDTCxDQUFDO0lBQ0gsQ0FBQzs7QUFwVUgsOENBcVVDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgR2l0SHViLCBHaXRodWJXb3JrZmxvdyB9IGZyb20gJ3Byb2plbi9saWIvZ2l0aHViJztcbmltcG9ydCB7IEpvYlBlcm1pc3Npb24gfSBmcm9tICdwcm9qZW4vbGliL2dpdGh1Yi93b3JrZmxvd3MtbW9kZWwnO1xuaW1wb3J0IHsgQ2RrRGVwbG95RGlzcGF0Y2hXb3JrZmxvdyB9IGZyb20gJy4vQ2RrRGVwbG95RGlzcGF0Y2hXb3JrZmxvdyc7XG5pbXBvcnQgeyBDZGtEZXBsb3lQaXBlbGluZU9wdGlvbnMsIERlcGxveVN0YWdlT3B0aW9ucyB9IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHsgdG9LZWJhYkNhc2UsIHZhbGlkYXRlTm9DeWNsZXMgfSBmcm9tICcuL3V0aWxzJztcblxuY29uc3QgQ0hFQ0tPVVRfVkVSU0lPTiA9ICd2NSc7XG5jb25zdCBTRVRVUF9OT0RFX1ZFUlNJT04gPSAndjUnO1xuY29uc3QgQVdTX0NSRURFTlRJQUxTX1ZFUlNJT04gPSAndjUnO1xuY29uc3QgVVBMT0FEX0FSVElGQUNUX1ZFUlNJT04gPSAndjQnO1xuY29uc3QgRE9XTkxPQURfQVJUSUZBQ1RfVkVSU0lPTiA9ICd2NSc7XG5cbi8qKlxuICogR2VuZXJhdGVzIEdpdEh1YiBBY3Rpb25zIHdvcmtmbG93cyBmb3IgQ0RLIGRlcGxveW1lbnRzLlxuICpcbiAqIENyZWF0ZXMgYSBgZGVwbG95LnltbGAgd29ya2Zsb3cgd2l0aDpcbiAqIC0gU3ludGggam9iIHRvIGNvbXBpbGUgYW5kIHN5bnRoZXNpemUgdGhlIENESyBhcHBcbiAqIC0gQXNzZXQgcHVibGlzaCBqb2IgdG8gdXBsb2FkIExhbWJkYS9jb250YWluZXIgYXNzZXRzIHRvIEFXU1xuICogLSBQZXItc3RhZ2UgZGVwbG95IGpvYnMgd2l0aCBHaXRIdWIgRW52aXJvbm1lbnRzLCBwYXJhbGxlbCBleGVjdXRpb24sIGFuZCBjb25jdXJyZW5jeSBncm91cHNcbiAqXG4gKiBPcHRpb25hbGx5IGNyZWF0ZXMgYSBgZGVwbG95LWRpc3BhdGNoLnltbGAgd29ya2Zsb3cgZm9yIG1hbnVhbCBkZXBsb3ltZW50cyBhbmQgcm9sbGJhY2tzLlxuICovXG5leHBvcnQgY2xhc3MgQ2RrRGVwbG95UGlwZWxpbmUge1xuICBjb25zdHJ1Y3Rvcihwcm9qZWN0OiBhbnksIG9wdGlvbnM6IENka0RlcGxveVBpcGVsaW5lT3B0aW9ucykge1xuICAgIGNvbnN0IHtcbiAgICAgIHBrZ05hbWVzcGFjZSxcbiAgICAgIHN0YWNrUHJlZml4LFxuICAgICAgaWFtUm9sZUFybixcbiAgICAgIGlhbVJvbGVSZWdpb24gPSAndXMtZWFzdC0xJyxcbiAgICAgIG5vZGVWZXJzaW9uID0gJzI0LngnLFxuICAgICAgY2RrQ29tbWFuZCA9ICducHggY2RrJyxcbiAgICAgIGluc3RhbGxDb21tYW5kID0gJ3lhcm4gaW5zdGFsbCAtLWNoZWNrLWZpbGVzIC0tZnJvemVuLWxvY2tmaWxlJyxcbiAgICAgIHN0YWdlcyxcbiAgICAgIG1hbnVhbERlcGxveW1lbnQgPSB0cnVlLFxuICAgICAgdXNlR2l0aHViUGFja2FnZXNGb3JBc3NlbWJseSA9IHRydWUsXG4gICAgICBicmFuY2hOYW1lID0gJ21haW4nLFxuICAgIH0gPSBvcHRpb25zO1xuXG4gICAgLy8gVmFsaWRhdGUgaW5wdXRzXG4gICAgaWYgKHN0YWdlcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQXQgbGVhc3Qgb25lIGRlcGxveW1lbnQgc3RhZ2UgbXVzdCBiZSBkZWZpbmVkJyk7XG4gICAgfVxuXG4gICAgY29uc3Qgc3RhZ2VOYW1lcyA9IG5ldyBTZXQoc3RhZ2VzLm1hcCgocykgPT4gcy5uYW1lKSk7XG4gICAgZm9yIChjb25zdCBzdGFnZSBvZiBzdGFnZXMpIHtcbiAgICAgIGlmIChzdGFnZS5kZXBlbmRzT24pIHtcbiAgICAgICAgZm9yIChjb25zdCBkZXAgb2Ygc3RhZ2UuZGVwZW5kc09uKSB7XG4gICAgICAgICAgaWYgKCFzdGFnZU5hbWVzLmhhcyhkZXApKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICAgIGBTdGFnZSAnJHtzdGFnZS5uYW1lfScgZGVwZW5kcyBvbiAnJHtkZXB9Jywgd2hpY2ggaXMgbm90IGEgZGVmaW5lZCBzdGFnZS4gQXZhaWxhYmxlOiAke1suLi5zdGFnZU5hbWVzXS5qb2luKCcsICcpfWAsXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoZGVwID09PSBzdGFnZS5uYW1lKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFN0YWdlICcke3N0YWdlLm5hbWV9JyBjYW5ub3QgZGVwZW5kIG9uIGl0c2VsZmApO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFZhbGlkYXRlIHRoYXQgYXV0by1kZXBsb3kgc3RhZ2VzIGRvbid0IGRlcGVuZCBvbiBtYW51YWwtYXBwcm92YWwgc3RhZ2VzXG4gICAgZm9yIChjb25zdCBzdGFnZSBvZiBzdGFnZXMpIHtcbiAgICAgIGlmICghc3RhZ2UubWFudWFsQXBwcm92YWwgJiYgc3RhZ2UuZGVwZW5kc09uKSB7XG4gICAgICAgIGZvciAoY29uc3QgZGVwIG9mIHN0YWdlLmRlcGVuZHNPbikge1xuICAgICAgICAgIGNvbnN0IGRlcFN0YWdlID0gc3RhZ2VzLmZpbmQoKHMpID0+IHMubmFtZSA9PT0gZGVwKTtcbiAgICAgICAgICBpZiAoZGVwU3RhZ2U/Lm1hbnVhbEFwcHJvdmFsKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICAgIGBTdGFnZSAnJHtzdGFnZS5uYW1lfScgZGVwZW5kcyBvbiAnJHtkZXB9Jywgd2hpY2ggaGFzIG1hbnVhbEFwcHJvdmFsIGVuYWJsZWQuIEF1dG8tZGVwbG95IHN0YWdlcyBjYW5ub3QgZGVwZW5kIG9uIG1hbnVhbC1hcHByb3ZhbCBzdGFnZXMuYCxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgdmFsaWRhdGVOb0N5Y2xlcyhzdGFnZXMpO1xuXG4gICAgaWYgKHVzZUdpdGh1YlBhY2thZ2VzRm9yQXNzZW1ibHkgJiYgIXBrZ05hbWVzcGFjZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAncGtnTmFtZXNwYWNlIGlzIHJlcXVpcmVkIHdoZW4gdXNlR2l0aHViUGFja2FnZXNGb3JBc3NlbWJseSBpcyBlbmFibGVkJyxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgLy8gQ3JlYXRlIHRoZSBkZXBsb3kgd29ya2Zsb3dcbiAgICBjb25zdCBnaCA9IHByb2plY3QuZ2l0aHViID8/IG5ldyBHaXRIdWIocHJvamVjdCk7XG4gICAgY29uc3Qgd29ya2Zsb3cgPSBuZXcgR2l0aHViV29ya2Zsb3coZ2gsICdkZXBsb3knLCB7XG4gICAgICBmaWxlTmFtZTogJ2RlcGxveS55bWwnLFxuICAgIH0pO1xuXG4gICAgd29ya2Zsb3cub24oe1xuICAgICAgcHVzaDogeyBicmFuY2hlczogW2JyYW5jaE5hbWVdIH0sXG4gICAgICB3b3JrZmxvd0Rpc3BhdGNoOiB7fSxcbiAgICB9KTtcblxuICAgIGNvbnN0IGFwcE5hbWUgPSBwcm9qZWN0Lm5hbWUgPz8gc3RhY2tQcmVmaXgudG9Mb3dlckNhc2UoKTtcblxuICAgIC8vIEJ1aWxkIGpvYnMgb2JqZWN0XG4gICAgY29uc3Qgam9iczogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9O1xuXG4gICAgLy8gLS0tIFN5bnRoIEpvYiAtLS1cbiAgICBqb2JzLnN5bnRoID0ge1xuICAgICAgbmFtZTogJ1N5bnRoZXNpemUgQ0RLIGFwcGxpY2F0aW9uJyxcbiAgICAgIHJ1bnNPbjogWyd1YnVudHUtbGF0ZXN0J10sXG4gICAgICBwZXJtaXNzaW9uczoge1xuICAgICAgICBjb250ZW50czogSm9iUGVybWlzc2lvbi5SRUFELFxuICAgICAgICBwYWNrYWdlczogSm9iUGVybWlzc2lvbi5SRUFELFxuICAgICAgfSxcbiAgICAgIGVudjogeyBDSTogJ3RydWUnIH0sXG4gICAgICBzdGVwczogW1xuICAgICAgICB7XG4gICAgICAgICAgbmFtZTogJ0NoZWNrb3V0JyxcbiAgICAgICAgICB1c2VzOiBgYWN0aW9ucy9jaGVja291dEAke0NIRUNLT1VUX1ZFUlNJT059YCxcbiAgICAgICAgICB3aXRoOiB7ICdmZXRjaC1kZXB0aCc6IDAgfSxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIG5hbWU6ICdTZXR1cCBOb2RlLmpzJyxcbiAgICAgICAgICB1c2VzOiBgYWN0aW9ucy9zZXR1cC1ub2RlQCR7U0VUVVBfTk9ERV9WRVJTSU9OfWAsXG4gICAgICAgICAgd2l0aDoge1xuICAgICAgICAgICAgJ25vZGUtdmVyc2lvbic6IG5vZGVWZXJzaW9uLFxuICAgICAgICAgICAgJ3JlZ2lzdHJ5LXVybCc6ICdodHRwczovL25wbS5wa2cuZ2l0aHViLmNvbScsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIG5hbWU6ICdJbnN0YWxsIGRlcGVuZGVuY2llcycsXG4gICAgICAgICAgcnVuOiBpbnN0YWxsQ29tbWFuZCxcbiAgICAgICAgICBlbnY6IHsgTk9ERV9BVVRIX1RPS0VOOiAnJHt7IHNlY3JldHMuR0lUSFVCX1RPS0VOIH19JywgR0lUSFVCX1RPS0VOOiAnJHt7IHNlY3JldHMuR0lUSFVCX1RPS0VOIH19JyB9LFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgbmFtZTogJ1N5bnRoJyxcbiAgICAgICAgICBydW46IGAke2Nka0NvbW1hbmR9IHN5bnRoYCxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIG5hbWU6ICdVcGxvYWQgY2xvdWQgYXNzZW1ibHknLFxuICAgICAgICAgIHVzZXM6IGBhY3Rpb25zL3VwbG9hZC1hcnRpZmFjdEAke1VQTE9BRF9BUlRJRkFDVF9WRVJTSU9OfWAsXG4gICAgICAgICAgd2l0aDoge1xuICAgICAgICAgICAgbmFtZTogJ2Nsb3VkLWFzc2VtYmx5JyxcbiAgICAgICAgICAgIHBhdGg6ICdjZGsub3V0LycsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfTtcblxuICAgIC8vIC0tLSBQdWJsaXNoIEFzc2V0cyBKb2IgLS0tXG4gICAgY29uc3QgcHVibGlzaFN0ZXBzOiBhbnlbXSA9IFtcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ0NoZWNrb3V0JyxcbiAgICAgICAgdXNlczogYGFjdGlvbnMvY2hlY2tvdXRAJHtDSEVDS09VVF9WRVJTSU9OfWAsXG4gICAgICAgIHdpdGg6IHsgJ2ZldGNoLWRlcHRoJzogMCB9LFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ1NldHVwIE5vZGUuanMnLFxuICAgICAgICB1c2VzOiBgYWN0aW9ucy9zZXR1cC1ub2RlQCR7U0VUVVBfTk9ERV9WRVJTSU9OfWAsXG4gICAgICAgIHdpdGg6IHtcbiAgICAgICAgICAnbm9kZS12ZXJzaW9uJzogbm9kZVZlcnNpb24sXG4gICAgICAgICAgJ3JlZ2lzdHJ5LXVybCc6ICdodHRwczovL25wbS5wa2cuZ2l0aHViLmNvbScsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBuYW1lOiAnSW5zdGFsbCBkZXBlbmRlbmNpZXMnLFxuICAgICAgICBydW46IGluc3RhbGxDb21tYW5kLFxuICAgICAgICBlbnY6IHsgTk9ERV9BVVRIX1RPS0VOOiAnJHt7IHNlY3JldHMuR0lUSFVCX1RPS0VOIH19JywgR0lUSFVCX1RPS0VOOiAnJHt7IHNlY3JldHMuR0lUSFVCX1RPS0VOIH19JyB9LFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ0Rvd25sb2FkIGNsb3VkIGFzc2VtYmx5JyxcbiAgICAgICAgdXNlczogYGFjdGlvbnMvZG93bmxvYWQtYXJ0aWZhY3RAJHtET1dOTE9BRF9BUlRJRkFDVF9WRVJTSU9OfWAsXG4gICAgICAgIHdpdGg6IHsgbmFtZTogJ2Nsb3VkLWFzc2VtYmx5JywgcGF0aDogJ2Nkay5vdXQvJyB9LFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ0FXUyBDcmVkZW50aWFscycsXG4gICAgICAgIHVzZXM6IGBhd3MtYWN0aW9ucy9jb25maWd1cmUtYXdzLWNyZWRlbnRpYWxzQCR7QVdTX0NSRURFTlRJQUxTX1ZFUlNJT059YCxcbiAgICAgICAgd2l0aDoge1xuICAgICAgICAgICdyb2xlLXRvLWFzc3VtZSc6IGlhbVJvbGVBcm4sXG4gICAgICAgICAgJ3JvbGUtc2Vzc2lvbi1uYW1lJzogJ0dpdEh1YkFjdGlvbicsXG4gICAgICAgICAgJ2F3cy1yZWdpb24nOiBpYW1Sb2xlUmVnaW9uLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ1B1Ymxpc2ggYXNzZXRzJyxcbiAgICAgICAgcnVuOiAnZm9yIG1hbmlmZXN0IGluICQoZmluZCBjZGsub3V0IC1uYW1lIFwiKi1hc3NldHMuanNvblwiKTsgZG8gbnB4IGNkay1hc3NldHMgcHVibGlzaCAtcCBcIiRtYW5pZmVzdFwiOyBkb25lJyxcbiAgICAgIH0sXG4gICAgXTtcblxuICAgIGlmICh1c2VHaXRodWJQYWNrYWdlc0ZvckFzc2VtYmx5KSB7XG4gICAgICBwdWJsaXNoU3RlcHMucHVzaChcbiAgICAgICAge1xuICAgICAgICAgIG5hbWU6ICdDb25maWd1cmUgZ2l0IGlkZW50aXR5JyxcbiAgICAgICAgICBydW46IFtcbiAgICAgICAgICAgICdnaXQgY29uZmlnIHVzZXIubmFtZSBcImdpdGh1Yi1hY3Rpb25zW2JvdF1cIicsXG4gICAgICAgICAgICAnZ2l0IGNvbmZpZyB1c2VyLmVtYWlsIFwiNDE4OTgyODIrZ2l0aHViLWFjdGlvbnNbYm90XUB1c2Vycy5ub3JlcGx5LmdpdGh1Yi5jb21cIicsXG4gICAgICAgICAgXS5qb2luKCdcXG4nKSxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIG5hbWU6ICdDcmVhdGUgYXNzZW1ibHkgcGFja2FnZScsXG4gICAgICAgICAgcnVuOiBbXG4gICAgICAgICAgICBgUEtHX05BTUU9XCIke3BrZ05hbWVzcGFjZX0vJHthcHBOYW1lfVwiYCxcbiAgICAgICAgICAgICdMQVRFU1Q9JChucG0gdmlldyBcIiRQS0dfTkFNRVwiIHZlcnNpb24gLS1yZWdpc3RyeT1odHRwczovL25wbS5wa2cuZ2l0aHViLmNvbSAyPi9kZXYvbnVsbCB8fCBlY2hvIFwiMC4wLjBcIiknLFxuICAgICAgICAgICAgYGVjaG8gJyR7SlNPTi5zdHJpbmdpZnkoeyBuYW1lOiBgJHtwa2dOYW1lc3BhY2V9LyR7YXBwTmFtZX1gLCBwdWJsaXNoQ29uZmlnOiB7IHJlZ2lzdHJ5OiAnaHR0cHM6Ly9ucG0ucGtnLmdpdGh1Yi5jb20nIH0gfSl9JyB8IGpxIC0tYXJnIHYgXCIkTEFURVNUXCIgJy4gKyB7dmVyc2lvbjogJHZ9JyA+IGNkay5vdXQvcGFja2FnZS5qc29uYCxcbiAgICAgICAgICAgICdjZCBjZGsub3V0ICYmIG5wbSB2ZXJzaW9uIC0tbm8tZ2l0LXRhZy12ZXJzaW9uIHBhdGNoJyxcbiAgICAgICAgICBdLmpvaW4oJ1xcbicpLFxuICAgICAgICAgIGVudjogeyBOT0RFX0FVVEhfVE9LRU46ICcke3sgc2VjcmV0cy5HSVRIVUJfVE9LRU4gfX0nLCBHSVRIVUJfVE9LRU46ICcke3sgc2VjcmV0cy5HSVRIVUJfVE9LRU4gfX0nIH0sXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBuYW1lOiAnUHVibGlzaCBhc3NlbWJseSB0byBHaXRIdWIgUGFja2FnZXMnLFxuICAgICAgICAgIHJ1bjogW1xuICAgICAgICAgICAgJ2NkIGNkay5vdXQgJiYgbnBtIHB1Ymxpc2ggLS1yZWdpc3RyeT1odHRwczovL25wbS5wa2cuZ2l0aHViLmNvbScsXG4gICAgICAgICAgICAnVkVSU0lPTj0kKG5vZGUgLXAgXCJyZXF1aXJlKFxcJy4vcGFja2FnZS5qc29uXFwnKS52ZXJzaW9uXCIpJyxcbiAgICAgICAgICAgICdlY2hvIFwiQVNTRU1CTFlfVkVSU0lPTj0kVkVSU0lPTlwiID4+ICRHSVRIVUJfRU5WJyxcbiAgICAgICAgICBdLmpvaW4oJ1xcbicpLFxuICAgICAgICAgIGVudjogeyBOT0RFX0FVVEhfVE9LRU46ICcke3sgc2VjcmV0cy5HSVRIVUJfVE9LRU4gfX0nLCBHSVRIVUJfVE9LRU46ICcke3sgc2VjcmV0cy5HSVRIVUJfVE9LRU4gfX0nIH0sXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBuYW1lOiAnVGFnIGFuZCByZWxlYXNlIGFzc2VtYmx5IHZlcnNpb24nLFxuICAgICAgICAgIHJ1bjogW1xuICAgICAgICAgICAgJ2dpdCB0YWcgXCJ2JHtBU1NFTUJMWV9WRVJTSU9OfVwiJyxcbiAgICAgICAgICAgICdnaXQgcHVzaCBvcmlnaW4gXCJ2JHtBU1NFTUJMWV9WRVJTSU9OfVwiJyxcbiAgICAgICAgICBdLmpvaW4oJ1xcbicpLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgbmFtZTogJ0NyZWF0ZSBHaXRIdWIgUmVsZWFzZScsXG4gICAgICAgICAgdXNlczogJ3NvZnRwcm9wcy9hY3Rpb24tZ2gtcmVsZWFzZUB2MicsXG4gICAgICAgICAgd2l0aDoge1xuICAgICAgICAgICAgdGFnX25hbWU6ICd2JHt7IGVudi5BU1NFTUJMWV9WRVJTSU9OIH19JyxcbiAgICAgICAgICAgIG5hbWU6ICd2JHt7IGVudi5BU1NFTUJMWV9WRVJTSU9OIH19JyxcbiAgICAgICAgICAgIGJvZHk6IGBBc3NlbWJseSBcXGAke3BrZ05hbWVzcGFjZX0vJHthcHBOYW1lfUBcXCR7eyBlbnYuQVNTRU1CTFlfVkVSU0lPTiB9fVxcYCBwdWJsaXNoZWQgdG8gR2l0SHViIFBhY2thZ2VzLlxcblxcbkRlcGxveSBtYW51YWxseTpcXG5cXGBcXGBcXGBcXG5naCB3b3JrZmxvdyBydW4gZGVwbG95LWRpc3BhdGNoLnltbCAtZiBlbnZpcm9ubWVudD08ZW52PiAtZiB2ZXJzaW9uPVxcJHt7IGVudi5BU1NFTUJMWV9WRVJTSU9OIH19XFxuXFxgXFxgXFxgYCxcbiAgICAgICAgICAgIGdlbmVyYXRlX3JlbGVhc2Vfbm90ZXM6IHRydWUsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgam9ic1sncHVibGlzaC1hc3NldHMnXSA9IHtcbiAgICAgIG5hbWU6ICdQdWJsaXNoIGFzc2V0cyB0byBBV1MnLFxuICAgICAgbmVlZHM6IFsnc3ludGgnXSxcbiAgICAgIHJ1bnNPbjogWyd1YnVudHUtbGF0ZXN0J10sXG4gICAgICBwZXJtaXNzaW9uczoge1xuICAgICAgICBjb250ZW50czogSm9iUGVybWlzc2lvbi5XUklURSxcbiAgICAgICAgcGFja2FnZXM6IEpvYlBlcm1pc3Npb24uV1JJVEUsXG4gICAgICAgIGlkVG9rZW46IEpvYlBlcm1pc3Npb24uV1JJVEUsXG4gICAgICB9LFxuICAgICAgZW52OiB7IENJOiAndHJ1ZScgfSxcbiAgICAgIHN0ZXBzOiBwdWJsaXNoU3RlcHMsXG4gICAgfTtcblxuICAgIC8vIC0tLSBQZXItU3RhZ2UgRGVwbG95IEpvYnMgLS0tXG4gICAgZm9yIChjb25zdCBzdGFnZSBvZiBzdGFnZXMpIHtcbiAgICAgIGlmIChzdGFnZS5tYW51YWxBcHByb3ZhbCkgY29udGludWU7XG4gICAgICBjb25zdCBqb2JJZCA9IGBkZXBsb3ktJHt0b0tlYmFiQ2FzZShzdGFnZS5uYW1lKX1gO1xuICAgICAgY29uc3Qgc3RhY2tzID1cbiAgICAgICAgc3RhZ2Uuc3RhY2tzID8/IFtgJHtzdGFja1ByZWZpeH0tJHtzdGFnZS5uYW1lfWBdO1xuICAgICAgY29uc3QgZ2l0aHViRW52ID0gc3RhZ2UuZW52aXJvbm1lbnQgPz8gc3RhZ2UubmFtZTtcbiAgICAgIGNvbnN0IHJvbGVBcm4gPSBzdGFnZS5pYW1Sb2xlQXJuID8/IGlhbVJvbGVBcm47XG4gICAgICBjb25zdCByb2xlUmVnaW9uID1cbiAgICAgICAgc3RhZ2UuaWFtUm9sZVJlZ2lvbiA/PyBpYW1Sb2xlUmVnaW9uID8/IHN0YWdlLmVudi5yZWdpb247XG5cbiAgICAgIC8vIENvbXB1dGUgbmVlZHNcbiAgICAgIGxldCBuZWVkczogc3RyaW5nW107XG4gICAgICBpZiAoc3RhZ2UuZGVwZW5kc09uICYmIHN0YWdlLmRlcGVuZHNPbi5sZW5ndGggPiAwKSB7XG4gICAgICAgIG5lZWRzID0gc3RhZ2UuZGVwZW5kc09uLm1hcChcbiAgICAgICAgICAoZGVwKSA9PiBgZGVwbG95LSR7dG9LZWJhYkNhc2UoZGVwKX1gLFxuICAgICAgICApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbmVlZHMgPSBbJ3B1Ymxpc2gtYXNzZXRzJ107XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGRlcGxveUNvbW1hbmQgPSBzdGFja3NcbiAgICAgICAgLm1hcCgocykgPT4gYCR7Y2RrQ29tbWFuZH0gZGVwbG95ICR7c30gLS1yZXF1aXJlLWFwcHJvdmFsIG5ldmVyIC0tYXBwIGNkay5vdXRgKVxuICAgICAgICAuam9pbignICYmICcpO1xuXG4gICAgICBqb2JzW2pvYklkXSA9IHtcbiAgICAgICAgbmFtZTogYERlcGxveSAke3N0YWdlLm5hbWV9YCxcbiAgICAgICAgbmVlZHM6IG5lZWRzLFxuICAgICAgICBydW5zT246IFsndWJ1bnR1LWxhdGVzdCddLFxuICAgICAgICBlbnZpcm9ubWVudDogZ2l0aHViRW52LFxuICAgICAgICBjb25jdXJyZW5jeToge1xuICAgICAgICAgICdncm91cCc6IGBkZXBsb3ktJHt0b0tlYmFiQ2FzZShzdGFnZS5uYW1lKX1gLFxuICAgICAgICAgICdjYW5jZWwtaW4tcHJvZ3Jlc3MnOiBmYWxzZSxcbiAgICAgICAgfSxcbiAgICAgICAgcGVybWlzc2lvbnM6IHtcbiAgICAgICAgICBjb250ZW50czogSm9iUGVybWlzc2lvbi5SRUFELFxuICAgICAgICAgIHBhY2thZ2VzOiBKb2JQZXJtaXNzaW9uLlJFQUQsXG4gICAgICAgICAgaWRUb2tlbjogSm9iUGVybWlzc2lvbi5XUklURSxcbiAgICAgICAgfSxcbiAgICAgICAgZW52OiB7IENJOiAndHJ1ZScgfSxcbiAgICAgICAgc3RlcHM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiAnQ2hlY2tvdXQnLFxuICAgICAgICAgICAgdXNlczogYGFjdGlvbnMvY2hlY2tvdXRAJHtDSEVDS09VVF9WRVJTSU9OfWAsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiAnU2V0dXAgTm9kZS5qcycsXG4gICAgICAgICAgICB1c2VzOiBgYWN0aW9ucy9zZXR1cC1ub2RlQCR7U0VUVVBfTk9ERV9WRVJTSU9OfWAsXG4gICAgICAgICAgICB3aXRoOiB7XG4gICAgICAgICAgICAgICdub2RlLXZlcnNpb24nOiBub2RlVmVyc2lvbixcbiAgICAgICAgICAgICAgJ3JlZ2lzdHJ5LXVybCc6ICdodHRwczovL25wbS5wa2cuZ2l0aHViLmNvbScsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogJ0luc3RhbGwgZGVwZW5kZW5jaWVzJyxcbiAgICAgICAgICAgIHJ1bjogaW5zdGFsbENvbW1hbmQsXG4gICAgICAgICAgICBlbnY6IHsgTk9ERV9BVVRIX1RPS0VOOiAnJHt7IHNlY3JldHMuR0lUSFVCX1RPS0VOIH19JywgR0lUSFVCX1RPS0VOOiAnJHt7IHNlY3JldHMuR0lUSFVCX1RPS0VOIH19JyB9LFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogJ0Rvd25sb2FkIGNsb3VkIGFzc2VtYmx5JyxcbiAgICAgICAgICAgIHVzZXM6IGBhY3Rpb25zL2Rvd25sb2FkLWFydGlmYWN0QCR7RE9XTkxPQURfQVJUSUZBQ1RfVkVSU0lPTn1gLFxuICAgICAgICAgICAgd2l0aDogeyBuYW1lOiAnY2xvdWQtYXNzZW1ibHknLCBwYXRoOiAnY2RrLm91dC8nIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiAnQVdTIENyZWRlbnRpYWxzJyxcbiAgICAgICAgICAgIHVzZXM6IGBhd3MtYWN0aW9ucy9jb25maWd1cmUtYXdzLWNyZWRlbnRpYWxzQCR7QVdTX0NSRURFTlRJQUxTX1ZFUlNJT059YCxcbiAgICAgICAgICAgIHdpdGg6IHtcbiAgICAgICAgICAgICAgJ3JvbGUtdG8tYXNzdW1lJzogcm9sZUFybixcbiAgICAgICAgICAgICAgJ3JvbGUtc2Vzc2lvbi1uYW1lJzogJ0dpdEh1YkFjdGlvbicsXG4gICAgICAgICAgICAgICdhd3MtcmVnaW9uJzogcm9sZVJlZ2lvbixcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiBgRGVwbG95ICR7c3RhZ2UubmFtZX1gLFxuICAgICAgICAgICAgcnVuOiBkZXBsb3lDb21tYW5kLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9O1xuXG4gICAgICAvLyBDcmVhdGUgcHJvamVuIHRhc2sgZm9yIGxvY2FsIHVzYWdlXG4gICAgICBwcm9qZWN0LmFkZFRhc2soYGRlcGxveToke3N0YWdlLm5hbWV9YCwge1xuICAgICAgICBkZXNjcmlwdGlvbjogYERlcGxveSB0byAke3N0YWdlLm5hbWV9YCxcbiAgICAgICAgZXhlYzogc3RhY2tzXG4gICAgICAgICAgLm1hcCgocykgPT4gYCR7Y2RrQ29tbWFuZH0gZGVwbG95ICR7c30gLS1yZXF1aXJlLWFwcHJvdmFsIG5ldmVyYClcbiAgICAgICAgICAuam9pbignICYmICcpLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gQWRkIGFsbCBqb2JzIHRvIHRoZSB3b3JrZmxvd1xuICAgIHdvcmtmbG93LmFkZEpvYnMoam9icyk7XG5cbiAgICAvLyAtLS0gRGlzcGF0Y2ggV29ya2Zsb3cgLS0tXG4gICAgaWYgKG1hbnVhbERlcGxveW1lbnQgJiYgdXNlR2l0aHViUGFja2FnZXNGb3JBc3NlbWJseSkge1xuICAgICAgbmV3IENka0RlcGxveURpc3BhdGNoV29ya2Zsb3cocHJvamVjdCwge1xuICAgICAgICBzdGFnZXMsXG4gICAgICAgIHBrZ05hbWVzcGFjZSxcbiAgICAgICAgYXBwTmFtZSxcbiAgICAgICAgc3RhY2tQcmVmaXgsXG4gICAgICAgIGlhbVJvbGVBcm4sXG4gICAgICAgIGlhbVJvbGVSZWdpb24sXG4gICAgICAgIG5vZGVWZXJzaW9uLFxuICAgICAgICBjZGtDb21tYW5kLFxuICAgICAgICBpbnN0YWxsQ29tbWFuZCxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIEludGVybmFsIGhlbHBlciB0byBidWlsZCBkZXBsb3kgZGlzcGF0Y2ggd29ya2Zsb3cgb3B0aW9ucyBmcm9tIHBpcGVsaW5lIG9wdGlvbnMuXG4gKiBFeHBvcnRlZCBmb3IgdXNlIGJ5IENka0RlcGxveURpc3BhdGNoV29ya2Zsb3cuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRGVwbG95RGlzcGF0Y2hJbnRlcm5hbE9wdGlvbnMge1xuICByZWFkb25seSBzdGFnZXM6IERlcGxveVN0YWdlT3B0aW9uc1tdO1xuICByZWFkb25seSBwa2dOYW1lc3BhY2U6IHN0cmluZztcbiAgcmVhZG9ubHkgYXBwTmFtZTogc3RyaW5nO1xuICByZWFkb25seSBzdGFja1ByZWZpeDogc3RyaW5nO1xuICByZWFkb25seSBpYW1Sb2xlQXJuOiBzdHJpbmc7XG4gIHJlYWRvbmx5IGlhbVJvbGVSZWdpb246IHN0cmluZztcbiAgcmVhZG9ubHkgbm9kZVZlcnNpb246IHN0cmluZztcbiAgcmVhZG9ubHkgY2RrQ29tbWFuZDogc3RyaW5nO1xuICByZWFkb25seSBpbnN0YWxsQ29tbWFuZDogc3RyaW5nO1xufVxuIl19
|