cdk-rds-sql 3.2.1 → 3.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.jsii +22 -5
- package/README.md +26 -2
- package/lib/database.js +1 -1
- package/lib/handler.js +4 -2
- package/lib/provider.js +1 -1
- package/lib/role.js +1 -1
- package/lib/schema.js +1 -1
- package/lib/sql.d.ts +4 -0
- package/lib/sql.js +3 -2
- package/package.json +1 -1
package/.jsii
CHANGED
|
@@ -3690,7 +3690,7 @@
|
|
|
3690
3690
|
},
|
|
3691
3691
|
"name": "cdk-rds-sql",
|
|
3692
3692
|
"readme": {
|
|
3693
|
-
"markdown": "# About\n\nThis CDK construct library makes it possible to create databases,\nschemas, and roles in an Aurora Serverless or database cluster created\nin that stack. Both Aurora Serverless v1 and v2 are supported.\n\nThis construct library is intended to be used in enterprise\nenvironments, and works in isolated subnets.\n\n<p align=\"left\">\n <a href=\"https://github.com/semantic-release/semantic-release\"><img src=\"https://img.shields.io/badge/semantic--release-angular-e10079?logo=semantic-release\" alt=semantic-release: angular\"></a>\n <a href=\"https://github.com/berenddeboer/cdk-rds-sql/actions/workflows/release.yml\"><img src=\"https://github.com/berenddeboer/cdk-rds-sql/actions/workflows/release.yml/badge.svg\" alt=\"Release badge\"></a>\n</p>\n\n# Requirements\n\n- CDK v2.\n\n# Installation\n\n npm i cdk-rds-sql\n\n# Usage\n\n## Provider\n\nFirst setup your VPC and create your cluster:\n\n```ts\nimport { Duration, RemovalPolicy } from \"aws-cdk-lib\"\nimport * as ec2 from \"aws-cdk-lib/aws-ec2\"\nimport * as rds from \"aws-cdk-lib/aws-rds\"\n\nconst vpc = ec2.Vpc.fromLookup(this, \"Vpc\", {\n vpcId: this.node.tryGetContext(\"vpc-id\"),\n})\n\nconst cluster = new rds.ServerlessCluster(this, \"Cluster\", {\n vpc: vpc,\n vpcSubnets: {\n subnetType: ec2.SubnetType.PRIVATE_ISOLATED,\n },\n engine: rds.DatabaseClusterEngine.AURORA_POSTGRESQL,\n parameterGroup: rds.ParameterGroup.fromParameterGroupName(\n this,\n \"ParameterGroup\",\n \"default.aurora-postgresql11\"\n ),\n removalPolicy: RemovalPolicy.DESTROY,\n scaling: {\n autoPause: Duration.minutes(60),\n minCapacity: rds.AuroraCapacityUnit.ACU_2,\n maxCapacity: rds.AuroraCapacityUnit.ACU_2,\n },\n})\n```\n\nThen create a provider which will connect to your database:\n\n```ts\nimport { Provider } from \"cdk-rds-sql\"\n\nconst provider = new Provider(this, \"Provider\", {\n vpc: vpc,\n cluster: cluster,\n secret: cluster.secret!,\n})\n```\n\nThe provider will setup a lambda, which normally lives in the same VPC\nas the database. You can give a different VPC, as long as that VPC has\naccess to the VPC of the database. Only the provider lambda will talk\nto your database.\n\nThe provider will by default use the private isolated subnet of the\nVPC. This is a breaking change from the past, where the provider used\nthe default strategy, which may not have been the private isolated\nsubnet. But from an enterprise security point of view having third\nparty code run in an isolated network by default is better.\n\nYour isolated network must have a VPC endpoint to AWS Secrets Manager\nand possibly KMS as well. If you want to use a subnet with egress\naccess in case you have no such VPC endpoints, specify the subnet as\nfollows:\n\n```ts\nimport { Provider } from \"cdk-rds-sql\"\n\nconst provider = new Provider(this, \"Provider\", {\n vpc: vpc,\n vpcSubnet: {\n subnetType: ec2.SubnetType.PRIVATE_WITH_EGRESS,\n },\n cluster: cluster,\n secret: cluster.secret!,\n})\n```\n\n## Roles\n\nCreate a postgres role (user) as follows:\n\n```ts\nimport { Role } from \"cdk-rds-sql\"\n\nconst role = new Role(this, \"Role\", {\n provider: provider,\n roleName: \"myrole\",\n databaseName: \"mydb\",\n})\n```\n\nThis will automatically create a secret just like `ServerlessCluster`\ndoes, with all the connection info needed for this user. It's secret value is a JSON like:\n\n```json\n{\n \"dbClusterIdentifier\": \"teststack-clustereb1186t9-sh4wpqfdyfvu\",\n \"password\": \"very-long-and-boring\",\n \"dbname\": \"mydb\",\n \"engine\": \"postgres\",\n \"port\": 5432,\n \"host\": \"teststack-clustereb1186t9-sh4wpqfdyfvu.cluster-cgudolabssna.us-east-1.rds.amazonaws.com\",\n \"username\": \"myrole\"\n}\n```\n\nYou can access the secret via `role.secret`.\n\nInstead of `databaseName` you can also specify `database` to reference\nan existing database. The role will not be created until the database\nhas been created.\n\n## Database\n\nCreate a database as follows:\n\n```ts\nimport { Database } from \"cdk-rds-sql\"\n\nconst database = new Database(this, \"Database\", {\n provider: provider,\n databaseName: \"mydb\",\n})\n```\n\nYou can provide an owner, which makes it easy to create database owned\nby a new user:\n\n```ts\nconst database = new Database(this, \"Database\", {\n provider: provider,\n databaseName: \"mydb\",\n owner: role,\n})\n```\n\n## Schema\n\nCreate a schema in the default database as follows:\n\n```ts\nimport { Schema } from \"cdk-rds-sql\"\n\nnew Schema(this, \"Schema\", {\n provider: provider,\n schemaName: \"myschema\",\n})\n```\n\nOr in another database:\n\n```ts\nconst database = new Database(this, \"Database\", {\n provider: provider,\n databaseName: \"mydb\",\n})\n\nnew Schema(this, \"Schema\", {\n provider: provider,\n schemaName: \"myschema\",\n databaseName: database.databaseName,\n})\n```\n\n## Sql\n\nYou can insert arbitrary SQL into your database with the `Sql` construct:\n\n```ts\nimport { Sql } from \"cdk-rds-sql\"\n\nconst sql = new Sql(this, \"Sql\", {\n provider: provider,\n database: database,\n statement: \"create table t (i int)\",\n})\n```\n\nCreate a table if it does not exist, and grant a role privileges:\n\n```ts\nconst sql = new Sql(this, \"Sql\", {\n provider: provider,\n database: database,\n statement: `\ncreate table if not exists t (i int);\ngrant select on t to myrole;\n`,\n})\n```\n\nNote that there is no synchronisation between various `Sql`\nconstructs, in particular the order in your code does not determine\nthe order in which your SQL is executed. This happens in parallel,\nunless you specify an explicit dependency via `sql.node.addDepency()`.\n\nThere are a lot of concerns when using `Sql`:\n\n- When you update your Sql, your previous Sql is not \"rolled back\",\n the new Sql is simply executed again.\n-
|
|
3693
|
+
"markdown": "# About\n\nThis CDK construct library makes it possible to create databases,\nschemas, and roles in an Aurora Serverless or database cluster created\nin that stack. Both Aurora Serverless v1 and v2 are supported.\n\nThis construct library is intended to be used in enterprise\nenvironments, and works in isolated subnets.\n\n<p align=\"left\">\n <a href=\"https://github.com/semantic-release/semantic-release\"><img src=\"https://img.shields.io/badge/semantic--release-angular-e10079?logo=semantic-release\" alt=semantic-release: angular\"></a>\n <a href=\"https://github.com/berenddeboer/cdk-rds-sql/actions/workflows/release.yml\"><img src=\"https://github.com/berenddeboer/cdk-rds-sql/actions/workflows/release.yml/badge.svg\" alt=\"Release badge\"></a>\n</p>\n\n# Requirements\n\n- CDK v2.\n\n# Installation\n\n npm i cdk-rds-sql\n\n# Usage\n\n## Provider\n\nFirst setup your VPC and create your cluster:\n\n```ts\nimport { Duration, RemovalPolicy } from \"aws-cdk-lib\"\nimport * as ec2 from \"aws-cdk-lib/aws-ec2\"\nimport * as rds from \"aws-cdk-lib/aws-rds\"\n\nconst vpc = ec2.Vpc.fromLookup(this, \"Vpc\", {\n vpcId: this.node.tryGetContext(\"vpc-id\"),\n})\n\nconst cluster = new rds.ServerlessCluster(this, \"Cluster\", {\n vpc: vpc,\n vpcSubnets: {\n subnetType: ec2.SubnetType.PRIVATE_ISOLATED,\n },\n engine: rds.DatabaseClusterEngine.AURORA_POSTGRESQL,\n parameterGroup: rds.ParameterGroup.fromParameterGroupName(\n this,\n \"ParameterGroup\",\n \"default.aurora-postgresql11\"\n ),\n removalPolicy: RemovalPolicy.DESTROY,\n scaling: {\n autoPause: Duration.minutes(60),\n minCapacity: rds.AuroraCapacityUnit.ACU_2,\n maxCapacity: rds.AuroraCapacityUnit.ACU_2,\n },\n})\n```\n\nThen create a provider which will connect to your database:\n\n```ts\nimport { Provider } from \"cdk-rds-sql\"\n\nconst provider = new Provider(this, \"Provider\", {\n vpc: vpc,\n cluster: cluster,\n secret: cluster.secret!,\n})\n```\n\nThe provider will setup a lambda, which normally lives in the same VPC\nas the database. You can give a different VPC, as long as that VPC has\naccess to the VPC of the database. Only the provider lambda will talk\nto your database.\n\nThe provider will by default use the private isolated subnet of the\nVPC. This is a breaking change from the past, where the provider used\nthe default strategy, which may not have been the private isolated\nsubnet. But from an enterprise security point of view having third\nparty code run in an isolated network by default is better.\n\nYour isolated network must have a VPC endpoint to AWS Secrets Manager\nand possibly KMS as well. If you want to use a subnet with egress\naccess in case you have no such VPC endpoints, specify the subnet as\nfollows:\n\n```ts\nimport { Provider } from \"cdk-rds-sql\"\n\nconst provider = new Provider(this, \"Provider\", {\n vpc: vpc,\n vpcSubnet: {\n subnetType: ec2.SubnetType.PRIVATE_WITH_EGRESS,\n },\n cluster: cluster,\n secret: cluster.secret!,\n})\n```\n\n## Roles\n\nCreate a postgres role (user) as follows:\n\n```ts\nimport { Role } from \"cdk-rds-sql\"\n\nconst role = new Role(this, \"Role\", {\n provider: provider,\n roleName: \"myrole\",\n databaseName: \"mydb\",\n})\n```\n\nThis will automatically create a secret just like `ServerlessCluster`\ndoes, with all the connection info needed for this user. It's secret value is a JSON like:\n\n```json\n{\n \"dbClusterIdentifier\": \"teststack-clustereb1186t9-sh4wpqfdyfvu\",\n \"password\": \"very-long-and-boring\",\n \"dbname\": \"mydb\",\n \"engine\": \"postgres\",\n \"port\": 5432,\n \"host\": \"teststack-clustereb1186t9-sh4wpqfdyfvu.cluster-cgudolabssna.us-east-1.rds.amazonaws.com\",\n \"username\": \"myrole\"\n}\n```\n\nYou can access the secret via `role.secret`.\n\nInstead of `databaseName` you can also specify `database` to reference\nan existing database. The role will not be created until the database\nhas been created.\n\n## Database\n\nCreate a database as follows:\n\n```ts\nimport { Database } from \"cdk-rds-sql\"\n\nconst database = new Database(this, \"Database\", {\n provider: provider,\n databaseName: \"mydb\",\n})\n```\n\nYou can provide an owner, which makes it easy to create database owned\nby a new user:\n\n```ts\nconst database = new Database(this, \"Database\", {\n provider: provider,\n databaseName: \"mydb\",\n owner: role,\n})\n```\n\n## Schema\n\nCreate a schema in the default database as follows:\n\n```ts\nimport { Schema } from \"cdk-rds-sql\"\n\nnew Schema(this, \"Schema\", {\n provider: provider,\n schemaName: \"myschema\",\n})\n```\n\nOr in another database:\n\n```ts\nconst database = new Database(this, \"Database\", {\n provider: provider,\n databaseName: \"mydb\",\n})\n\nnew Schema(this, \"Schema\", {\n provider: provider,\n schemaName: \"myschema\",\n databaseName: database.databaseName,\n})\n```\n\n## Sql\n\nYou can insert arbitrary SQL into your database with the `Sql` construct:\n\n```ts\nimport { Sql } from \"cdk-rds-sql\"\n\nconst sql = new Sql(this, \"Sql\", {\n provider: provider,\n database: database,\n statement: \"create table t (i int)\",\n})\n```\n\nCreate a table if it does not exist, and grant a role privileges:\n\n```ts\nconst sql = new Sql(this, \"Sql\", {\n provider: provider,\n database: database,\n statement: `\ncreate table if not exists t (i int);\ngrant select on t to myrole;\n`,\n})\n```\n\nRollback sql on stack deletion:\n\n```ts\nconst sql = new Sql(this, \"Sql\", {\n provider: provider,\n database: database,\n statement: `\ncreate table if not exists t (i int);\ngrant select on t to myrole;\n`,\n rollback: `\nDO $$BEGIN\n IF EXISTS (select from pg_database WHERE datname = 't') THEN\n IF EXISTS (select from pg_catalog.pg_roles WHERE rolname = 'myrole') THEN\n revoke select t from myrole;\n END IF;\n drop table t;\n END IF;\nEND$$;\n`\n})\n```\n\n\nNote that there is no synchronisation between various `Sql`\nconstructs, in particular the order in your code does not determine\nthe order in which your SQL is executed. This happens in parallel,\nunless you specify an explicit dependency via `sql.node.addDepency()`.\n\nThere are a lot of concerns when using `Sql`:\n\n- When you update your Sql, your previous Sql is not \"rolled back\",\n the new Sql is simply executed again.\n- When you delete your `Sql` construct the rollback is executed if specified\n- When permission are granted via `Sql` they must be removed via rollback to succesfully remove the role\n- Currently the `Sql` constructs has less than 5 minutes to execute\n its work.\n- It is unknown how large your SQL can be.\n\n## Dependencies\n\nThis library manages dependencies, there is no need to specify\ndependencies except possibly for `Sql` constructs.\n\n# Working on this code\n\nThis code is managed by\n[projen](https://github.com/projen/projen/blob/main/README.md). In\naddition [pre-commit](https://pre-commit.com/) is used.\n\nSo after git clone and `npm ci` you would do:\n\n```\npre-commit install --install-hooks --hook-type commit-msg --hook-type pre-commit\n```\n\nto install the pre-commit hooks.\n\n## Testing\n\nTest code via projen with:\n\n npx projen test\n\nYou can run the sample stack with:\n\n npx cdk deploy --context vpc-id=vpc-0123456789 TestServerlessV1Stack\n\nOr for v2:\n\n npx cdk deploy TestServerlessV2Stack\n\nIf you want to use an existing vpc:\n\n npx cdk deploy --context vpc-id=vpc-0123456789 TestServerlessV2Stack\n\n# To do\n\n- Update role: will not revoke connect to previous database if database name has changed.\n- If the cluster is configured for autopausing, wake cluster up before doing any SQL operations.\n- We rename roles and database on update: is that actually the best\n thing? More change to get us into an irrecoverable situation??\n"
|
|
3694
3694
|
},
|
|
3695
3695
|
"repository": {
|
|
3696
3696
|
"type": "git",
|
|
@@ -4583,7 +4583,7 @@
|
|
|
4583
4583
|
},
|
|
4584
4584
|
"locationInModule": {
|
|
4585
4585
|
"filename": "src/sql.ts",
|
|
4586
|
-
"line":
|
|
4586
|
+
"line": 32
|
|
4587
4587
|
},
|
|
4588
4588
|
"parameters": [
|
|
4589
4589
|
{
|
|
@@ -4609,7 +4609,7 @@
|
|
|
4609
4609
|
"kind": "class",
|
|
4610
4610
|
"locationInModule": {
|
|
4611
4611
|
"filename": "src/sql.ts",
|
|
4612
|
-
"line":
|
|
4612
|
+
"line": 31
|
|
4613
4613
|
},
|
|
4614
4614
|
"name": "Sql",
|
|
4615
4615
|
"symbolId": "src/sql:Sql"
|
|
@@ -4662,6 +4662,23 @@
|
|
|
4662
4662
|
"fqn": "cdk-rds-sql.IDatabase"
|
|
4663
4663
|
}
|
|
4664
4664
|
},
|
|
4665
|
+
{
|
|
4666
|
+
"abstract": true,
|
|
4667
|
+
"docs": {
|
|
4668
|
+
"stability": "stable",
|
|
4669
|
+
"summary": "Optional statment to be executed when the resource is deleted."
|
|
4670
|
+
},
|
|
4671
|
+
"immutable": true,
|
|
4672
|
+
"locationInModule": {
|
|
4673
|
+
"filename": "src/sql.ts",
|
|
4674
|
+
"line": 28
|
|
4675
|
+
},
|
|
4676
|
+
"name": "rollback",
|
|
4677
|
+
"optional": true,
|
|
4678
|
+
"type": {
|
|
4679
|
+
"primitive": "string"
|
|
4680
|
+
}
|
|
4681
|
+
},
|
|
4665
4682
|
{
|
|
4666
4683
|
"abstract": true,
|
|
4667
4684
|
"docs": {
|
|
@@ -4683,6 +4700,6 @@
|
|
|
4683
4700
|
"symbolId": "src/sql:SqlProps"
|
|
4684
4701
|
}
|
|
4685
4702
|
},
|
|
4686
|
-
"version": "3.
|
|
4687
|
-
"fingerprint": "
|
|
4703
|
+
"version": "3.3.0",
|
|
4704
|
+
"fingerprint": "CaRJUZ8xZGDl1EEhd9DRLPBws0WxsrfKfee2ShSxKbA="
|
|
4688
4705
|
}
|
package/README.md
CHANGED
|
@@ -210,6 +210,30 @@ grant select on t to myrole;
|
|
|
210
210
|
})
|
|
211
211
|
```
|
|
212
212
|
|
|
213
|
+
Rollback sql on stack deletion:
|
|
214
|
+
|
|
215
|
+
```ts
|
|
216
|
+
const sql = new Sql(this, "Sql", {
|
|
217
|
+
provider: provider,
|
|
218
|
+
database: database,
|
|
219
|
+
statement: `
|
|
220
|
+
create table if not exists t (i int);
|
|
221
|
+
grant select on t to myrole;
|
|
222
|
+
`,
|
|
223
|
+
rollback: `
|
|
224
|
+
DO $$BEGIN
|
|
225
|
+
IF EXISTS (select from pg_database WHERE datname = 't') THEN
|
|
226
|
+
IF EXISTS (select from pg_catalog.pg_roles WHERE rolname = 'myrole') THEN
|
|
227
|
+
revoke select t from myrole;
|
|
228
|
+
END IF;
|
|
229
|
+
drop table t;
|
|
230
|
+
END IF;
|
|
231
|
+
END$$;
|
|
232
|
+
`
|
|
233
|
+
})
|
|
234
|
+
```
|
|
235
|
+
|
|
236
|
+
|
|
213
237
|
Note that there is no synchronisation between various `Sql`
|
|
214
238
|
constructs, in particular the order in your code does not determine
|
|
215
239
|
the order in which your SQL is executed. This happens in parallel,
|
|
@@ -219,8 +243,8 @@ There are a lot of concerns when using `Sql`:
|
|
|
219
243
|
|
|
220
244
|
- When you update your Sql, your previous Sql is not "rolled back",
|
|
221
245
|
the new Sql is simply executed again.
|
|
222
|
-
-
|
|
223
|
-
|
|
246
|
+
- When you delete your `Sql` construct the rollback is executed if specified
|
|
247
|
+
- When permission are granted via `Sql` they must be removed via rollback to succesfully remove the role
|
|
224
248
|
- Currently the `Sql` constructs has less than 5 minutes to execute
|
|
225
249
|
its work.
|
|
226
250
|
- It is unknown how large your SQL can be.
|
package/lib/database.js
CHANGED
|
@@ -40,5 +40,5 @@ class Database extends aws_cdk_lib_1.CustomResource {
|
|
|
40
40
|
}
|
|
41
41
|
exports.Database = Database;
|
|
42
42
|
_a = JSII_RTTI_SYMBOL_1;
|
|
43
|
-
Database[_a] = { fqn: "cdk-rds-sql.Database", version: "3.
|
|
43
|
+
Database[_a] = { fqn: "cdk-rds-sql.Database", version: "3.3.0" };
|
|
44
44
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YWJhc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvZGF0YWJhc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSw2Q0FBNEM7QUFDNUMsMkNBQXNDO0FBQ3RDLGlDQUF1QztBQTJCdkMsTUFBTSxnQkFBaUIsU0FBUSxzQkFBUztJQUd0QyxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQXlCO1FBQ2pFLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUE7UUFDaEIsSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUMsWUFBWSxDQUFBO0lBQ3hDLENBQUM7Q0FDRjtBQUVELE1BQWEsUUFBUyxTQUFRLDRCQUFjO0lBWTFDLFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBb0I7UUFDNUQsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUU7WUFDZixZQUFZLEVBQUUsS0FBSyxDQUFDLFFBQVEsQ0FBQyxZQUFZO1lBQ3pDLFVBQVUsRUFBRTtnQkFDVixRQUFRLEVBQUUscUJBQWMsQ0FBQyxRQUFRO2dCQUNqQyxVQUFVLEVBQUUsS0FBSyxDQUFDLFlBQVk7Z0JBQzlCLFNBQVMsRUFBRSxLQUFLLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxTQUFTO2dCQUMxQyxLQUFLLEVBQUUsS0FBSyxDQUFDLEtBQUssRUFBRSxRQUFRO2FBQzdCO1NBQ0YsQ0FBQyxDQUFBO1FBQ0YsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFBO1FBQ3ZDLElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDLFlBQVksQ0FBQTtRQUN0QyxJQUFJLEtBQUssQ0FBQyxLQUFLLEVBQUU7WUFDZixJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUE7U0FDckM7SUFDSCxDQUFDO0lBMUJEOztPQUVHO0lBQ0gsTUFBTSxDQUFDLGdCQUFnQixDQUFDLEtBQWdCLEVBQUUsRUFBVSxFQUFFLFlBQW9CO1FBQ3hFLE9BQU8sSUFBSSxnQkFBZ0IsQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFO1lBQ3JDLFlBQVksRUFBRSxZQUFZO1NBQzNCLENBQUMsQ0FBQTtJQUNKLENBQUM7O0FBUkgsNEJBNEJDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ3VzdG9tUmVzb3VyY2UgfSBmcm9tIFwiYXdzLWNkay1saWJcIlxuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIlxuaW1wb3J0IHsgUmRzU3FsUmVzb3VyY2UgfSBmcm9tIFwiLi9lbnVtXCJcbmltcG9ydCB7IFByb3ZpZGVyIH0gZnJvbSBcIi4vcHJvdmlkZXJcIlxuaW1wb3J0IHsgUm9sZSB9IGZyb20gXCIuL3JvbGVcIlxuXG5pbnRlcmZhY2UgRGF0YWJhc2VBdHRyaWJ1dGVzIHtcbiAgLyoqXG4gICAqIE5hbWUgb2YgZGF0YWJhc2UgdG8gY3JlYXRlLlxuICAgKi9cbiAgcmVhZG9ubHkgZGF0YWJhc2VOYW1lOiBzdHJpbmdcblxuICAvKipcbiAgICogT3B0aW9uYWwgZGF0YWJhc2Ugb3duZXIuXG4gICAqL1xuICByZWFkb25seSBvd25lcj86IFJvbGVcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEYXRhYmFzZVByb3BzIGV4dGVuZHMgRGF0YWJhc2VBdHRyaWJ1dGVzIHtcbiAgLyoqXG4gICAqIFByb3ZpZGVyLlxuICAgKi9cbiAgcmVhZG9ubHkgcHJvdmlkZXI6IFByb3ZpZGVyXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSURhdGFiYXNlIHtcbiAgcmVhZG9ubHkgZGF0YWJhc2VOYW1lOiBzdHJpbmdcbn1cblxuY2xhc3MgSW1wb3J0ZWREYXRhYmFzZSBleHRlbmRzIENvbnN0cnVjdCBpbXBsZW1lbnRzIElEYXRhYmFzZSB7XG4gIHB1YmxpYyByZWFkb25seSBkYXRhYmFzZU5hbWU6IHN0cmluZ1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBEYXRhYmFzZUF0dHJpYnV0ZXMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpXG4gICAgdGhpcy5kYXRhYmFzZU5hbWUgPSBwcm9wcy5kYXRhYmFzZU5hbWVcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgRGF0YWJhc2UgZXh0ZW5kcyBDdXN0b21SZXNvdXJjZSBpbXBsZW1lbnRzIElEYXRhYmFzZSB7XG4gIC8qKlxuICAgKiBSZXR1cm4gYSBEYXRhYmFzZSBiYXNlZCB1cG9uIG5hbWUgb25seS4gVXNlIGZvciBpbXBvcnRpbmcgZXhpc3RpbmcgZGF0YWJhc2VzLlxuICAgKi9cbiAgc3RhdGljIGZyb21EYXRhYmFzZU5hbWUoc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgZGF0YWJhc2VOYW1lOiBzdHJpbmcpOiBJRGF0YWJhc2Uge1xuICAgIHJldHVybiBuZXcgSW1wb3J0ZWREYXRhYmFzZShzY29wZSwgaWQsIHtcbiAgICAgIGRhdGFiYXNlTmFtZTogZGF0YWJhc2VOYW1lLFxuICAgIH0pXG4gIH1cblxuICBwdWJsaWMgcmVhZG9ubHkgZGF0YWJhc2VOYW1lOiBzdHJpbmdcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogRGF0YWJhc2VQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwge1xuICAgICAgc2VydmljZVRva2VuOiBwcm9wcy5wcm92aWRlci5zZXJ2aWNlVG9rZW4sXG4gICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgIFJlc291cmNlOiBSZHNTcWxSZXNvdXJjZS5EQVRBQkFTRSxcbiAgICAgICAgUmVzb3VyY2VJZDogcHJvcHMuZGF0YWJhc2VOYW1lLFxuICAgICAgICBTZWNyZXRBcm46IHByb3BzLnByb3ZpZGVyLnNlY3JldC5zZWNyZXRBcm4sXG4gICAgICAgIE93bmVyOiBwcm9wcy5vd25lcj8ucm9sZU5hbWUsXG4gICAgICB9LFxuICAgIH0pXG4gICAgdGhpcy5ub2RlLmFkZERlcGVuZGVuY3kocHJvcHMucHJvdmlkZXIpXG4gICAgdGhpcy5kYXRhYmFzZU5hbWUgPSBwcm9wcy5kYXRhYmFzZU5hbWVcbiAgICBpZiAocHJvcHMub3duZXIpIHtcbiAgICAgIHRoaXMubm9kZS5hZGREZXBlbmRlbmN5KHByb3BzLm93bmVyKVxuICAgIH1cbiAgfVxufVxuIl19
|
package/lib/handler.js
CHANGED
|
@@ -15,7 +15,9 @@ const jumpTable = {
|
|
|
15
15
|
Update: (_, __, props) => {
|
|
16
16
|
return props.Statement;
|
|
17
17
|
},
|
|
18
|
-
Delete: (_) => {
|
|
18
|
+
Delete: (_, __, props) => {
|
|
19
|
+
return props.Rollback;
|
|
20
|
+
},
|
|
19
21
|
},
|
|
20
22
|
schema: {
|
|
21
23
|
Create: async (resourceId) => {
|
|
@@ -278,4 +280,4 @@ const getPassword = async (arn) => {
|
|
|
278
280
|
return json.password;
|
|
279
281
|
}
|
|
280
282
|
};
|
|
281
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGFuZGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9oYW5kbGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDRFQUl3QztBQU14Qyw2REFBNkM7QUFDN0MsbURBQXVDO0FBQ3ZDLDJCQUEyQjtBQUMzQixpQ0FBdUM7QUErQ3ZDLE1BQU0sV0FBVyxHQUFHLEVBQUUsQ0FBQTtBQUV0QixNQUFNLFNBQVMsR0FBYztJQUMzQixHQUFHLEVBQUU7UUFDSCxNQUFNLEVBQUUsQ0FBQyxDQUFTLEVBQUUsS0FBVyxFQUFFLEVBQUU7WUFDakMsT0FBTyxLQUFLLENBQUMsU0FBUyxDQUFBO1FBQ3hCLENBQUM7UUFDRCxNQUFNLEVBQUUsQ0FBQyxDQUFTLEVBQUUsRUFBVSxFQUFFLEtBQVcsRUFBRSxFQUFFO1lBQzdDLE9BQU8sS0FBSyxDQUFDLFNBQVMsQ0FBQTtRQUN4QixDQUFDO1FBQ0QsTUFBTSxFQUFFLENBQUMsQ0FBUyxFQUFFLEVBQUUsR0FBRSxDQUFDO0tBQzFCO0lBQ0QsTUFBTSxFQUFFO1FBQ04sTUFBTSxFQUFFLEtBQUssRUFBRSxVQUFrQixFQUFFLEVBQUU7WUFDbkMsT0FBTyx1QkFBTSxDQUFDLGdDQUFnQyxFQUFFLFVBQVUsQ0FBQyxDQUFBO1FBQzdELENBQUM7UUFDRCxNQUFNLEVBQUUsS0FBSyxFQUFFLFVBQWtCLEVBQUUsYUFBcUIsRUFBRSxFQUFFO1lBQzFELE9BQU8sdUJBQU0sQ0FBQyw4QkFBOEIsRUFBRSxhQUFhLEVBQUUsVUFBVSxDQUFDLENBQUE7UUFDMUUsQ0FBQztRQUNELE1BQU0sRUFBRSxDQUFDLFVBQWtCLEVBQUUsRUFBRTtZQUM3QixPQUFPLHVCQUFNLENBQUMsa0NBQWtDLEVBQUUsVUFBVSxDQUFDLENBQUE7UUFDL0QsQ0FBQztLQUNGO0lBQ0QsSUFBSSxFQUFFO1FBQ0osTUFBTSxFQUFFLEtBQUssRUFBRSxVQUFrQixFQUFFLEtBQWdCLEVBQUUsRUFBRTtZQUNyRCxJQUFJLENBQUMsS0FB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QUMsb0JBQW9CLENBQUMsQ0FBQTtJQUM5RCxHQUFHLENBQ0QsMkRBQTJELEVBQzNELGlCQUFpQixHQUFHLENBQUMsRUFDckIsV0FBVyxFQUNYLFNBQVMsRUFDVCxLQUFLLENBQ04sQ0FBQTtJQUNELE9BQU8sU0FBUyxDQUFBO0FBQ2xCLENBQUMsQ0FBQTtBQUVEOztHQUVHO0FBQ0gsTUFBTSxXQUFXLEdBQUcsS0FBSyxFQUFFLEdBQVcsRUFBMEIsRUFBRTtJQUNoRSxNQUFNLGNBQWMsR0FBRyxJQUFJLDZDQUFvQixDQUFDLEVBQUUsQ0FBQyxDQUFBO0lBQ25ELE1BQU0sT0FBTyxHQUFHLElBQUksOENBQXFCLENBQUM7UUFDeEMsUUFBUSxFQUFFLEdBQUc7S0FDZCxDQUFDLENBQUE7SUFDRixNQUFNLE1BQU0sR0FBRyxNQUFNLGNBQWMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUE7SUFDakQsSUFBSSxNQUFNLENBQUMsWUFBWSxFQUFFO1FBQ3ZCLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFBO1FBQzVDLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQTtLQUNyQjtBQUNILENBQUMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIFNlY3JldHNNYW5hZ2VyQ2xpZW50LFxuICBHZXRTZWNyZXRWYWx1ZUNvbW1hbmQsXG4gIEdldFNlY3JldFZhbHVlQ29tbWFuZE91dHB1dCxcbn0gZnJvbSBcIkBhd3Mtc2RrL2NsaWVudC1zZWNyZXRzLW1hbmFnZXJcIlxuaW1wb3J0IHtcbiAgQ2xvdWRGb3JtYXRpb25DdXN0b21SZXNvdXJjZUNyZWF0ZUV2ZW50LFxuICBDbG91ZEZvcm1hdGlvbkN1c3RvbVJlc291cmNlVXBkYXRlRXZlbnQsXG4gIENsb3VkRm9ybWF0aW9uQ3VzdG9tUmVzb3VyY2VEZWxldGVFdmVudCxcbn0gZnJvbSBcImF3cy1sYW1iZGFcIlxuaW1wb3J0IHsgYmFja09mZiB9IGZyb20gXCJleHBvbmVudGlhbC1iYWNrb2ZmXCJcbmltcG9ydCB7IGZvcm1hdCB9IGZyb20gXCJub2RlLXBnLWZvcm1hdFwiXG5pbXBvcnQgeyBDbGllbnQgfSBmcm9tIFwicGdcIlxuaW1wb3J0IHsgUmRzU3FsUmVzb3VyY2UgfSBmcm9tIFwiLi9lbnVtXCJcblxuaW50ZXJmYWNlIEN1c3RvbVJlc291cmNlUmVzcG9uc2Uge1xuICBQaHlzaWNhbFJlc291cmNlSWQ/OiBzdHJpbmdcbiAgRGF0YT86IGFueVxuICBOb0VjaG8/OiBib29sZWFuXG59XG5cbnR5cGUgQ3JlYXRlUmVzb3VyY2VIYW5kbGVyID0gKFxuICByZXNvdXJjZUlkOiBzdHJpbmcsXG4gIHByb3BzPzogYW55XG4pID0+IFByb21pc2U8c3RyaW5nIHwgc3RyaW5nW10+XG50eXBlIFVwZGF0ZVJlc291cmNlSGFuZGxlciA9IChcbiAgcmVzb3VyY2VJZDogc3RyaW5nLFxuICBvbGRSZXNvdXJjZUlkOiBzdHJpbmcsXG4gIHByb3BzPzogYW55XG4pID0+IFByb21pc2U8c3RyaW5nIHwgc3RyaW5nW10gfCB2b2lkPlxudHlwZSBEZWxldGVSZXNvdXJjZUhhbmRsZXIgPSAocmVzb3VyY2VJZDogc3RyaW5nLCBwcm9wcz86IGFueSkgPT4gc3RyaW5nIHwgc3RyaW5nW10gfCB2b2lkXG5cbnR5cGUgSnVtcFRhYmxlID0ge1xuICBba2V5IGluIFJkc1NxbFJlc291cmNlXToge1xuICAgIENyZWF0ZTogQ3JlYXRlUmVzb3VyY2VIYW5kbGVyXG4gICAgVXBkYXRlOiBVcGRhdGVSZXNvdXJjZUhhbmRsZXJcbiAgICBEZWxldGU6IERlbGV0ZVJlc291cmNlSGFuZGxlclxuICB9XG59XG5cbmludGVyZmFjZSBSb2xlUHJvcHMge1xuICAvKipcbiAgICogU2VjcmV0IEFSTi5cbiAgICovXG4gIFBhc3N3b3JkQXJuOiBzdHJpbmdcblxuICAvKipcbiAgICogT3B0aW9uYWwgZGF0YWJhc2UgdG8gd2hpY2ggcm9sZSBpcyBncmFudGVkIGNvbm5lY3QgcGVybWlzc2lvbnMuXG4gICAqL1xuICBEYXRhYmFzZU5hbWU/OiBzdHJpbmdcbn1cblxuaW50ZXJmYWNlIERhdGFiYXNlUHJvcHMge1xuICBPd25lcjogc3RyaW5nXG59XG5cbmludGVyZmFjZSBEYXRhYmFzZVVwZGF0ZVByb3BzIGV4dGVuZHMgRGF0YWJhc2VQcm9wcyB7XG4gIE1hc3Rlck93bmVyOiBzdHJpbmdcbn1cblxuY29uc3QgbWF4QXR0ZW1wdHMgPSAyMFxuXG5jb25zdCBqdW1wVGFibGU6IEp1bXBUYWJsZSA9IHtcbiAgc3FsOiB7XG4gICAgQ3JlYXRlOiAoXzogc3RyaW5nLCBwcm9wcz86IGFueSkgPT4ge1xuICAgICAgcmV0dXJuIHByb3BzLlN0YXRlbWVudFxuICAgIH0sXG4gICAgVXBkYXRlOiAoXzogc3RyaW5nLCBfXzogc3RyaW5nLCBwcm9wcz86IGFueSkgPT4ge1xuICAgICAgcmV0dXJuIHByb3BzLlN0YXRlbWVudFxuICAgIH0sXG4gICAgRGVsZXRlOiAoXzogc3RyaW5nKSA9PiB7fSxcbiAgfSxcbiAgc2NoZW1hOiB7XG4gICAgQ3JlYXRlOiBhc3luYyAocmVzb3VyY2VJZDogc3RyaW5nKSA9PiB7XG4gICAgICByZXR1cm4gZm9ybWF0KFwiY3JlYXRlIHNjaGVtYSBpZiBub3QgZXhpc3RzICVJXCIsIHJlc291cmNlSWQpXG4gICAgfSxcbiAgICBVcGRhdGU6IGFzeW5jIChyZXNvdXJjZUlkOiBzdHJpbmcsIG9sZFJlc291cmNlSWQ6IHN0cmluZykgPT4ge1xuICAgICAgcmV0dXJuIGZvcm1hdChcImFsdGVyIHNjaGVtYSAlSSByZW5hbWUgdG8gJUlcIiwgb2xkUmVzb3VyY2VJZCwgcmVzb3VyY2VJZClcbiAgICB9LFxuICAgIERlbGV0ZTogKHJlc291cmNlSWQ6IHN0cmluZykgPT4ge1xuICAgICAgcmV0dXJuIGZvcm1hdChcImRyb3Agc2NoZW1hIGlmIGV4aXN0cyAlSSBjYXNjYWRlXCIsIHJlc291cmNlSWQpXG4gICAgfSxcbiAgfSxcbiAgcm9sZToge1xuICAgIENyZWF0ZTogYXN5bmMgKHJlc291cmNlSWQ6IHN0cmluZywgcHJvcHM6IFJvbGVQcm9wcykgPT4ge1xuICAgICAgaWYgKCFwcm9wcy5QYXNzd29yZEFybikgdGhyb3cgXCJObyBQYXNzd29yZEFybiBwcm92aWRlZFwiXG4gICAgICBjb25zdCBwYXNzd29yZCA9IGF3YWl0IGdldFBhc3N3b3JkKHByb3BzLlBhc3N3b3JkQXJuKVxuICAgICAgaWYgKHBhc3N3b3JkKSB7XG4gICAgICAgIGNvbnN0IHNxbCA9IFtcbiAgICAgICAgICBcInN0YXJ0IHRyYW5zYWN0aW9uXCIsXG4gICAgICAgICAgZm9ybWF0KFwiY3JlYXRlIHJvbGUgJUkgd2l0aCBsb2dpbiBwYXNzd29yZCAlTFwiLCByZXNvdXJjZUlkLCBwYXNzd29yZCksXG4gICAgICAgIF1cbiAgICAgICAgaWYgKHByb3BzLkRhdGFiYXNlTmFtZSkge1xuICAgICAgICAgIC8vIGdyYW50IGNvbm5lY3QgdG8gZGF0YWJhc2UgaWYgZGF0YWJhc2UgYWxyZWFkeSBleGlzdHNcbiAgICAgICAgICBzcWwucHVzaChcbiAgICAgICAgICAgIGZvcm1hdChcbiAgICAgICAgICAgICAgYERPICQkXG5CRUdJTlxuICBJRiBFWElTVFMgKHNlbGVjdCBmcm9tIHBnX2RhdGFiYXNlIHdoZXJlIGRhdG5hbWUgPSAnJXMnIGFuZCBkYXRpc3RlbXBsYXRlID0gZmFsc2UpIFRIRU5cbiAgICBncmFudCBjb25uZWN0IG9uIGRhdGFiYXNlICVJIHRvICVJO1xuICBFTkQgSUY7XG5FTkQkJDtgLFxuICAgICAgICAgICAgICBwcm9wcy5EYXRhYmFzZU5hbWUsXG4gICAgICAgICAgICAgIHByb3BzLkRhdGFiYXNlTmFtZSxcbiAgICAgICAgICAgICAgcmVzb3VyY2VJZFxuICAgICAgICAgICAgKVxuICAgICAgICAgIClcbiAgICAgICAgfVxuICAgICAgICBzcWwucHVzaChcImNvbW1pdFwiKVxuICAgICAgICByZXR1cm4gc3FsXG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBgQ2Fubm90IHBhcnNlIHBhc3N3b3JkIGZyb20gJHtwcm9wcy5QYXNzd29yZEFybn1gXG4gICAgICB9XG4gICAgfSxcbiAgICBVcGRhdGU6IGFzeW5jIChyZXNvdXJjZUlkOiBzdHJpbmcsIG9sZFJlc291cmNlSWQ6IHN0cmluZywgcHJvcHM6IFJvbGVQcm9wcykgPT4ge1xuICAgICAgLy8gVE9ETzogaWYgZGF0YWJhc2UgbmFtZSBoYXMgY2hhbmdlZCBpbiBPbGRSZXNvdXJjZVByb3BlcnRpZXMsIHJldm9rZSBjb25uZWN0XG4gICAgICBpZiAocHJvcHMgJiYgcHJvcHMuUGFzc3dvcmRBcm4pIHtcbiAgICAgICAgY29uc3QgcGFzc3dvcmQgPSBhd2FpdCBnZXRQYXNzd29yZChwcm9wcy5QYXNzd29yZEFybilcbiAgICAgICAgaWYgKHBhc3N3b3JkKSB7XG4gICAgICAgICAgY29uc3Qgc3FsID0gW1wic3RhcnQgdHJhbnNhY3Rpb25cIl1cbiAgICAgICAgICBpZiAob2xkUmVzb3VyY2VJZCAhPT0gcmVzb3VyY2VJZCkge1xuICAgICAgICAgICAgc3FsLnB1c2goZm9ybWF0KFwiYWx0ZXIgcm9sZSAlSSByZW5hbWUgdG8gJUlcIiwgb2xkUmVzb3VyY2VJZCwgcmVzb3VyY2VJZCkpXG4gICAgICAgICAgfVxuICAgICAgICAgIHNxbC5wdXNoKGZvcm1hdChcImFsdGVyIHJvbGUgJUkgd2l0aCBwYXNzd29yZCAlTFwiLCByZXNvdXJjZUlkLCBwYXNzd29yZCkpXG4gICAgICAgICAgaWYgKHByb3BzLkRhdGFiYXNlTmFtZSkge1xuICAgICAgICAgICAgc3FsLnB1c2goXG4gICAgICAgICAgICAgIGZvcm1hdChcImdyYW50IGNvbm5lY3Qgb24gZGF0YWJhc2UgJUkgdG8gJUlcIiwgcHJvcHMuRGF0YWJhc2VOYW1lLCByZXNvdXJjZUlkKVxuICAgICAgICAgICAgKVxuICAgICAgICAgIH1cbiAgICAgICAgICBzcWwucHVzaChcImNvbW1pdFwiKVxuICAgICAgICAgIHJldHVybiBzcWxcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aHJvdyBgQ2Fubm90IHBhcnNlIHBhc3N3b3JkIGZyb20gJHtwcm9wcy5QYXNzd29yZEFybn1gXG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IHNxbCA9IFtcInN0YXJ0IHRyYW5zYWN0aW9uXCJdXG4gICAgICAgIGlmIChvbGRSZXNvdXJjZUlkICE9PSByZXNvdXJjZUlkKSB7XG4gICAgICAgICAgc3FsLnB1c2goZm9ybWF0KFwiYWx0ZXIgcm9sZSAlSSByZW5hbWUgdG8gJUlcIiwgb2xkUmVzb3VyY2VJZCwgcmVzb3VyY2VJZCkpXG4gICAgICAgIH1cbiAgICAgICAgc3FsLnB1c2goXG4gICAgICAgICAgZm9ybWF0KFxuICAgICAgICAgICAgYERPICQkXG5CRUdJTlxuICBJRiBFWElTVFMgKHNlbGVjdCBmcm9tIHBnX2RhdGFiYXNlIHdoZXJlIGRhdG5hbWUgPSAnJXMnIGFuZCBkYXRpc3RlbXBsYXRlID0gZmFsc2UpIFRIRU5cbiAgICBncmFudCBjb25uZWN0IG9uIGRhdGFiYXNlICVJIHRvICVJO1xuICBFTkQgSUY7XG5FTkQkJDtgLFxuICAgICAgICAgICAgcHJvcHMuRGF0YWJhc2VOYW1lLFxuICAgICAgICAgICAgcHJvcHMuRGF0YWJhc2VOYW1lLFxuICAgICAgICAgICAgcmVzb3VyY2VJZFxuICAgICAgICAgIClcbiAgICAgICAgKVxuICAgICAgICBzcWwucHVzaChcImNvbW1pdFwiKVxuICAgICAgICByZXR1cm4gc3FsXG4gICAgICB9XG4gICAgfSxcbiAgICBEZWxldGU6IChyZXNvdXJjZUlkOiBzdHJpbmcsIHByb3BzOiBSb2xlUHJvcHMpID0+IHtcbiAgICAgIC8vIFRPRE86IGlmIHVzZXIgaXMgb3duZXIgb2YgYSBkYXRhYmFzZSwgYXNzaWduIG93bmVyc2hpcCB0byBtYXN0ZXIgdXNlclxuICAgICAgLy8gVGhpcyB3aWxsIHJlcXVpcmUgYSBzcGVjaWZpZWQgaW5oZXJpdG9yIG9uIHJvbGUgY3JlYXRpb25cbiAgICAgIHJldHVybiBbXG4gICAgICAgIFwic3RhcnQgdHJhbnNhY3Rpb25cIixcbiAgICAgICAgZm9ybWF0KFxuICAgICAgICAgIGBETyAkJFxuQkVHSU5cbiAgSUYgRVhJU1RTIChzZWxlY3QgZnJvbSBwZ19jYXRhbG9nLnBnX3JvbGVzIFdIRVJFIHJvbG5hbWUgPSAnJXMnKSBBTkQgRVhJU1RTIChzZWxlY3QgZnJvbSBwZ19kYXRhYmFzZSBXSEVSRSBkYXRuYW1lID0gJyVzJykgVEhFTlxuICAgIHJldm9rZSBhbGwgcHJpdmlsZWdlcyBvbiBkYXRhYmFzZSAlSSBmcm9tICVJO1xuICBFTkQgSUY7XG5FTkQkJDtgLFxuICAgICAgICAgIHJlc291cmNlSWQsXG4gICAgICAgICAgcHJvcHMuRGF0YWJhc2VOYW1lLFxuICAgICAgICAgIHByb3BzLkRhdGFiYXNlTmFtZSxcbiAgICAgICAgICByZXNvdXJjZUlkXG4gICAgICAgICksXG4gICAgICAgIGZvcm1hdChcImRyb3Agcm9sZSBpZiBleGlzdHMgJUlcIiwgcmVzb3VyY2VJZCksXG4gICAgICAgIFwiY29tbWl0XCIsXG4gICAgICBdXG4gICAgfSxcbiAgfSxcbiAgZGF0YWJhc2U6IHtcbiAgICBDcmVhdGU6IGFzeW5jIChyZXNvdXJjZUlkOiBzdHJpbmcsIHByb3BzOiBEYXRhYmFzZVByb3BzKSA9PiB7XG4gICAgICBjb25zdCBvd25lciA9IHByb3BzLk93bmVyXG4gICAgICBpZiAob3duZXIpIHtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICBmb3JtYXQoXCJjcmVhdGUgZGF0YWJhc2UgJUlcIiwgcmVzb3VyY2VJZCksXG4gICAgICAgICAgZm9ybWF0KFwiYWx0ZXIgZGF0YWJhc2UgJUkgb3duZXIgdG8gJUlcIiwgcmVzb3VyY2VJZCwgb3duZXIpLFxuICAgICAgICBdXG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gZm9ybWF0KFwiY3JlYXRlIGRhdGFiYXNlICVJXCIsIHJlc291cmNlSWQpXG4gICAgICB9XG4gICAgfSxcbiAgICBVcGRhdGU6IGFzeW5jIChcbiAgICAgIHJlc291cmNlSWQ6IHN0cmluZyxcbiAgICAgIG9sZFJlc291cmNlSWQ6IHN0cmluZyxcbiAgICAgIHByb3BzOiBEYXRhYmFzZVVwZGF0ZVByb3BzXG4gICAgKTogUHJvbWlzZTxzdHJpbmdbXT4gPT4ge1xuICAgICAgY29uc3Qgc3RhdGVtZW50czogc3RyaW5nW10gPSBbXVxuICAgICAgaWYgKHJlc291cmNlSWQgIT09IG9sZFJlc291cmNlSWQpIHtcbiAgICAgICAgaWYgKHByb3BzLk1hc3Rlck93bmVyKSB7XG4gICAgICAgICAgc3RhdGVtZW50cy5wdXNoKFxuICAgICAgICAgICAgZm9ybWF0KFwiYWx0ZXIgZGF0YWJhc2UgJUkgb3duZXIgdG8gJUlcIiwgb2xkUmVzb3VyY2VJZCwgcHJvcHMuTWFzdGVyT3duZXIpXG4gICAgICAgICAgKVxuICAgICAgICB9XG4gICAgICAgIHN0YXRlbWVudHMucHVzaChcbiAgICAgICAgICBmb3JtYXQoXCJhbHRlciBkYXRhYmFzZSAlSSByZW5hbWUgdG8gJUlcIiwgb2xkUmVzb3VyY2VJZCwgcmVzb3VyY2VJZClcbiAgICAgICAgKVxuICAgICAgfVxuICAgICAgY29uc3Qgb3duZXIgPSBwcm9wcy5Pd25lclxuICAgICAgaWYgKG93bmVyKSB7XG4gICAgICAgIHN0YXRlbWVudHMucHVzaChmb3JtYXQoXCJhbHRlciBkYXRhYmFzZSAlSSBvd25lciB0byAlSVwiLCByZXNvdXJjZUlkLCBwcm9wcy5Pd25lcikpXG4gICAgICB9XG4gICAgICByZXR1cm4gc3RhdGVtZW50c1xuICAgIH0sXG4gICAgRGVsZXRlOiAocmVzb3VyY2VJZDogc3RyaW5nLCBuZXdPd25lcjogc3RyaW5nKSA9PiB7XG4gICAgICByZXR1cm4gW1xuICAgICAgICBmb3JtYXQoXG4gICAgICAgICAgXCJzZWxlY3QgcGdfdGVybWluYXRlX2JhY2tlbmQocGdfc3RhdF9hY3Rpdml0eS5waWQpIGZyb20gcGdfc3RhdF9hY3Rpdml0eSB3aGVyZSBkYXRuYW1lID0gJUxcIixcbiAgICAgICAgICByZXNvdXJjZUlkXG4gICAgICAgICksXG4gICAgICAgIGZvcm1hdChcbiAgICAgICAgICBcIkRPICQkQkVHSU5cXG5JRiBFWElTVFMgKHNlbGVjdCBmcm9tIHBnX2RhdGFiYXNlIFdIRVJFIGRhdG5hbWUgPSAnJXMnKSBUSEVOIGFsdGVyIGRhdGFiYXNlICVJIG93bmVyIHRvICVJOyBFTkQgSUY7XFxuRU5EJCQ7XCIsXG4gICAgICAgICAgcmVzb3VyY2VJZCxcbiAgICAgICAgICByZXNvdXJjZUlkLFxuICAgICAgICAgIG5ld093bmVyXG4gICAgICAgICksXG4gICAgICAgIGZvcm1hdChcImRyb3AgZGF0YWJhc2UgaWYgZXhpc3RzICVJXCIsIHJlc291cmNlSWQpLFxuICAgICAgXVxuICAgIH0sXG4gIH0sXG59XG5cbmNvbnN0IGxvZyA9XG4gIHByb2Nlc3MuZW52LkxPR0dFUiA9PT0gXCJ0cnVlXCJcbiAgICA/IGNvbnNvbGUuZGVidWdcbiAgICA6IChfbWVzc2FnZT86IGFueSwgLi4uX29wdGlvbmFsUGFyYW1zOiBhbnlbXSkgPT4ge31cblxuZXhwb3J0IGNvbnN0IGhhbmRsZXIgPSBhc3luYyAoXG4gIGV2ZW50OlxuICAgIHwgQ2xvdWRGb3JtYXRpb25DdXN0b21SZXNvdXJjZUNyZWF0ZUV2ZW50XG4gICAgfCBDbG91ZEZvcm1hdGlvbkN1c3RvbVJlc291cmNlVXBkYXRlRXZlbnRcbiAgICB8IENsb3VkRm9ybWF0aW9uQ3VzdG9tUmVzb3VyY2VEZWxldGVFdmVudFxuKTogUHJvbWlzZTxhbnk+ID0+IHtcbiAgbG9nKGV2ZW50KVxuXG4gIGNvbnN0IHJlcXVlc3RUeXBlID0gZXZlbnQuUmVxdWVzdFR5cGVcbiAgY29uc3QgcmVzb3VyY2U6IFJkc1NxbFJlc291cmNlID0gZXZlbnQuUmVzb3VyY2VQcm9wZXJ0aWVzLlJlc291cmNlXG4gIGNvbnN0IHJlc291cmNlSWQgPSBldmVudC5SZXNvdXJjZVByb3BlcnRpZXMuUmVzb3VyY2VJZFxuICBjb25zdCBkYXRhYmFzZU5hbWUgPSBldmVudC5SZXNvdXJjZVByb3BlcnRpZXMuRGF0YWJhc2VOYW1lXG5cbiAgaWYgKCFPYmplY3Qua2V5cyhqdW1wVGFibGUpLmluY2x1ZGVzKGV2ZW50LlJlc291cmNlUHJvcGVydGllcy5SZXNvdXJjZSkpIHtcbiAgICB0aHJvdyBgUmVzb3VyY2UgdHlwZSAnJHtyZXNvdXJjZX0nIG5vdCByZWNvZ25pc2VkLmBcbiAgfVxuXG4gIGNvbnN0IHNlY3JldHNfY2xpZW50ID0gbmV3IFNlY3JldHNNYW5hZ2VyQ2xpZW50KHt9KVxuICBjb25zdCBjb21tYW5kID0gbmV3IEdldFNlY3JldFZhbHVlQ29tbWFuZCh7XG4gICAgU2VjcmV0SWQ6IGV2ZW50LlJlc291cmNlUHJvcGVydGllcy5TZWNyZXRBcm4sXG4gIH0pXG4gIC8vIEFzIHRoZSBJQU0gY3JlZGVudGlhbHMgY2FuIGJlIGNhY2hlZCwgYW4gdXBkYXRlIG1ha2RlIHZlcnkgcmVjZW50XG4gIC8vIGNvdWxkIG5vdCB5ZXQgYmUgYXZhaWxhYmxlLlxuICAvLyBTbyB3ZSByZXRyeSB0aGlzIGEgYml0LlxuICBsb2coXCJGZXRjaGluZyBzZWNyZXRcIilcbiAgY29uc3Qgc2VjcmV0OiBHZXRTZWNyZXRWYWx1ZUNvbW1hbmRPdXRwdXQgPSBhd2FpdCBiYWNrT2ZmKFxuICAgIGFzeW5jICgpID0+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHNlY3JldHNfY2xpZW50LnNlbmQoY29tbWFuZClcbiAgICAgICAgcmV0dXJuIHJlc3VsdFxuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBsb2coXCJFcnJvciBmZXRjaGluZyBzZWNyZXQgJW9cIiwgZSlcbiAgICAgICAgdGhyb3cgZVxuICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgbnVtT2ZBdHRlbXB0czogMTAsXG4gICAgICBzdGFydGluZ0RlbGF5OiA1MDAsXG4gICAgfVxuICApXG4gIGlmICghc2VjcmV0LlNlY3JldFN0cmluZykgdGhyb3cgXCJObyBzZWNyZXQgc3RyaW5nXCJcbiAgY29uc3Qgc2VjcmV0VmFsdWVzID0gSlNPTi5wYXJzZShzZWNyZXQuU2VjcmV0U3RyaW5nKVxuXG4gIGxldCBzcWw6IHN0cmluZyB8IHN0cmluZ1tdIHwgdm9pZFxuICBzd2l0Y2ggKHJlcXVlc3RUeXBlKSB7XG4gICAgY2FzZSBcIkNyZWF0ZVwiOiB7XG4gICAgICBzcWwgPSBhd2FpdCBqdW1wVGFibGVbcmVzb3VyY2VdW3JlcXVlc3RUeXBlXShyZXNvdXJjZUlkLCBldmVudC5SZXNvdXJjZVByb3BlcnRpZXMpXG4gICAgICBicmVha1xuICAgIH1cbiAgICBjYXNlIFwiVXBkYXRlXCI6IHtcbiAgICAgIGNvbnN0IG9sZFJlc291cmNlSWQgPSAoZXZlbnQgYXMgQ2xvdWRGb3JtYXRpb25DdXN0b21SZXNvdXJjZVVwZGF0ZUV2ZW50KVxuICAgICAgICAuUGh5c2ljYWxSZXNvdXJjZUlkXG4gICAgICBzcWwgPSBhd2FpdCBqdW1wVGFibGVbcmVzb3VyY2VdW3JlcXVlc3RUeXBlXShyZXNvdXJjZUlkLCBvbGRSZXNvdXJjZUlkLCB7XG4gICAgICAgIC4uLmV2ZW50LlJlc291cmNlUHJvcGVydGllcyxcbiAgICAgICAgTWFzdGVyT3duZXI6IHNlY3JldFZhbHVlcy51c2VybmFtZSxcbiAgICAgIH0pXG4gICAgICBicmVha1xuICAgIH1cbiAgICBjYXNlIFwiRGVsZXRlXCI6IHtcbiAgICAgIGlmIChyZXNvdXJjZSA9PT0gUmRzU3FsUmVzb3VyY2UuREFUQUJBU0UpIHtcbiAgICAgICAgc3FsID0ganVtcFRhYmxlW3Jlc291cmNlXVtyZXF1ZXN0VHlwZV0ocmVzb3VyY2VJZCwgc2VjcmV0VmFsdWVzLnVzZXJuYW1lKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc3FsID0ganVtcFRhYmxlW3Jlc291cmNlXVtyZXF1ZXN0VHlwZV0ocmVzb3VyY2VJZCwgZXZlbnQuUmVzb3VyY2VQcm9wZXJ0aWVzKVxuICAgICAgfVxuICAgICAgYnJlYWtcbiAgICB9XG4gIH1cblxuICBpZiAoc3FsKSB7XG4gICAgbGV0IGRhdGFiYXNlOiBzdHJpbmdcbiAgICBpZiAocmVzb3VyY2UgPT09IFJkc1NxbFJlc291cmNlLlJPTEUpIHtcbiAgICAgIGRhdGFiYXNlID0gc2VjcmV0VmFsdWVzLmRibmFtZVxuICAgIH0gZWxzZSB7XG4gICAgICBkYXRhYmFzZSA9IGRhdGFiYXNlTmFtZSA/PyBzZWNyZXRWYWx1ZXMuZGJuYW1lIC8vIGNvbm5lY3QgdG8gZ2l2ZW4gZGF0YWJhc2UgaWYgcG9zc2libGUsIGVsc2UgdG8gZGF0YWJhc2UgbWVudGlvbmVkIGluIHNlY3JldFxuICAgIH1cbiAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICBob3N0OiBzZWNyZXRWYWx1ZXMuaG9zdCxcbiAgICAgIHBvcnQ6IHNlY3JldFZhbHVlcy5wb3J0LFxuICAgICAgdXNlcjogc2VjcmV0VmFsdWVzLnVzZXJuYW1lLFxuICAgICAgcGFzc3dvcmQ6IHNlY3JldFZhbHVlcy5wYXNzd29yZCxcbiAgICAgIGRhdGFiYXNlOiBkYXRhYmFzZSxcbiAgICAgIGNvbm5lY3Rpb25UaW1lb3V0TWlsbGlzOiAyMDAwLCAvLyByZXR1cm4gYW4gZXJyb3IgaWYgYSBjb25uZWN0aW9uIGNvdWxkIG5vdCBiZSBlc3RhYmxpc2hlZCB3aXRoaW4gMiBzZWNvbmRzXG4gICAgfVxuICAgIGxvZyhcbiAgICAgIGBDb25uZWN0aW5nIHRvIGhvc3QgJHtwYXJhbXMuaG9zdH06ICR7cGFyYW1zLnBvcnR9LCBkYXRhYmFzZSAke3BhcmFtcy5kYXRhYmFzZX0gYXMgJHtwYXJhbXMudXNlcn1gXG4gICAgKVxuICAgIGxvZyhcIkV4ZWN1dGluZyBTUUxcIiwgc3FsKVxuICAgIGNvbnN0IHBnX2NsaWVudCA9IG5ldyBDbGllbnQocGFyYW1zKVxuICAgIGF3YWl0IHBnX2NsaWVudC5jb25uZWN0KClcbiAgICB0cnkge1xuICAgICAgYXdhaXQgYmFja09mZihcbiAgICAgICAgYXN5bmMgKCkgPT4ge1xuICAgICAgICAgIGlmICh0eXBlb2Ygc3FsID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgICByZXR1cm4gcGdfY2xpZW50LnF1ZXJ5KHNxbClcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKHNxbCkge1xuICAgICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5hbGwoXG4gICAgICAgICAgICAgICAgc3FsLm1hcCgoc3RhdGVtZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgICByZXR1cm4gcGdfY2xpZW50LnF1ZXJ5KHN0YXRlbWVudClcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICByZXR1cm5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICByZXRyeTogZXJyb3JGaWx0ZXIsXG4gICAgICAgICAgbnVtT2ZBdHRlbXB0czogbWF4QXR0ZW1wdHMsXG4gICAgICAgIH1cbiAgICAgIClcbiAgICB9IGZpbmFsbHkge1xuICAgICAgYXdhaXQgcGdfY2xpZW50LmVuZCgpXG4gICAgfVxuICB9XG5cbiAgbGV0IHJlc3BvbnNlOiBDdXN0b21SZXNvdXJjZVJlc3BvbnNlID0ge31cbiAgLy8gRXhjZXB0IGZvciB0aGUgU1FMIHJlc291cmNlLCByZXR1cm4gdGhlIG5ldyByZXNvdXJjZSBpZC4gVGhpc1xuICAvLyB3aWxsIGNhdXNlIGEgZGVsZXRlIHRvIGJlIHNlbmQgZm9yIHRoZSBvbGQgcmVzb3VyY2UuXG4gIGlmIChyZXNvdXJjZSAhPT0gUmRzU3FsUmVzb3VyY2UuU1FMKSB7XG4gICAgcmVzcG9uc2UuUGh5c2ljYWxSZXNvdXJjZUlkID0gcmVzb3VyY2VJZFxuICB9XG5cbiAgcmV0dXJuIHJlc3BvbnNlXG59XG5cbi8vIEN1c3RvbSBlcnJvciBmaWx0ZXIsIG1haW5seSB0byByZXRyeSByb2xlIGNyZWF0aW9uLlxuLy8gRnJlcXVlbnRseSBzZWUgXCJ0dXBsZSBjb25jdXJyZW50bHkgdXBkYXRlZFwiLCBhbmQgYWRkaW5nXG4vLyBkZXBlbmRlbmNpZXMgaXMgdmVyeSBoYXJkIHRvIG1ha2Ugd29yay5cbmNvbnN0IGVycm9yRmlsdGVyID0gKGVycm9yOiBhbnksIG5leHRBdHRlbXB0TnVtYmVyOiBudW1iZXIpID0+IHtcbiAgLy8gUmV0cnkgb25seSBpZiB0aGUgZXJyb3IgbWVzc2FnZSBjb250YWlucyBcInR1cGxlIGNvbmN1cnJlbnRseVwiXG4gIC8vIFRoaXMgd2lsbCBjb3ZlciBjb25jdXJyZW50IHVwZGF0ZXMgYW5kIGRlbGV0ZXNcbiAgY29uc3Qgd2lsbFJldHJ5ID0gZXJyb3IubWVzc2FnZS5pbmNsdWRlcyhcInR1cGxlIGNvbmN1cnJlbnRseVwiKVxuICBsb2coXG4gICAgXCJFbmNvdW50ZXJlZCBhbiBlcnJvciBvbiBhdHRlbXB0ICVkLyVkIHJldHJ5PSVzIGVycm9yPVslb11cIixcbiAgICBuZXh0QXR0ZW1wdE51bWJlciAtIDEsXG4gICAgbWF4QXR0ZW1wdHMsXG4gICAgd2lsbFJldHJ5LFxuICAgIGVycm9yXG4gIClcbiAgcmV0dXJuIHdpbGxSZXRyeVxufVxuXG4vKipcbiAqIFBhcnNlIHBhc3N3b3JkIGZpZWxkIGZyb20gc2VjcmV0LiBSZXR1cm5zIHZvaWQgb24gZXJyb3IuXG4gKi9cbmNvbnN0IGdldFBhc3N3b3JkID0gYXN5bmMgKGFybjogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmcgfCB2b2lkPiA9PiB7XG4gIGNvbnN0IHNlY3JldHNfY2xpZW50ID0gbmV3IFNlY3JldHNNYW5hZ2VyQ2xpZW50KHt9KVxuICBjb25zdCBjb21tYW5kID0gbmV3IEdldFNlY3JldFZhbHVlQ29tbWFuZCh7XG4gICAgU2VjcmV0SWQ6IGFybixcbiAgfSlcbiAgY29uc3Qgc2VjcmV0ID0gYXdhaXQgc2VjcmV0c19jbGllbnQuc2VuZChjb21tYW5kKVxuICBpZiAoc2VjcmV0LlNlY3JldFN0cmluZykge1xuICAgIGNvbnN0IGpzb24gPSBKU09OLnBhcnNlKHNlY3JldC5TZWNyZXRTdHJpbmcpXG4gICAgcmV0dXJuIGpzb24ucGFzc3dvcmRcbiAgfVxufVxuIl19
|
|
283
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGFuZGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9oYW5kbGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDRFQUl3QztBQU14Qyw2REFBNkM7QUFDN0MsbURBQXVDO0FBQ3ZDLDJCQUEyQjtBQUMzQixpQ0FBdUM7QUErQ3ZDLE1BQU0sV0FBVyxHQUFHLEVBQUUsQ0FBQTtBQUV0QixNQUFNLFNBQVMsR0FBYztJQUMzQixHQUFHLEVBQUU7UUFDSCxNQUFNLEVBQUUsQ0FBQyxDQUFTLEVBQUUsS0FBVyxFQUFFLEVBQUU7WUFDakMsT0FBTyxLQUFLLENBQUMsU0FBUyxDQUFBO1FBQ3hCLENBQUM7UUFDRCxNQUFNLEVBQUUsQ0FBQyxDQUFTLEVBQUUsRUFBVSxFQUFFLEtBQVcsRUFBRSxFQUFFO1lBQzdDLE9BQU8sS0FBSyxDQUFDLFNBQVMsQ0FBQTtRQUN4QixDQUFDO1FBQ0QsTUFBTSxFQUFFLENBQUMsQ0FBUyxFQUFFLEVBQVUsRUFBRSxLQUFXLEVBQUUsRUFBRTtZQUM3QyxPQUFPLEtBQUssQ0FBQyxRQUFRLENBQUE7UUFDdkIsQ0FBQztLQUNGO0lBQ0QsTUFBTSxFQUFFO1FBQ04sTUFBTSxFQUFFLEtBQUssRUFBRSxVQUFrQixFQUFFLEVBQUU7WUFDbkMsT0FBTyx1QkFBTSxDQUFDLGdDQUFnQyxFQUFFLFVBQVUsQ0FBQyxDQUFBO1FBQzdELENBQUM7UUFDRCxNQUFNLEVBQUUsS0FBSyxFQUFFLFVBQWtCLEVBQUUsYUFBcUIsRUFBRSxFQUFFO1lBQzFELE9BQU8sdUJBQU0sQ0FBQyw4QkFBOEIsRUFBRSxhQUFhLEVBQUUsVUFBVSxDQUFDLENBQUE7UUFDMUUsQ0FBQztRQUNELE1BQU0sRUFBRSxDQUFDLFVBQWtCLEVBQUUsRUFBRTtZQUM3QixPQUFPLHVCQUFNLENBQUMsa0NBQWtDLEVBQUUsVUFBVSxDQUFDLENBQUE7UUFDL0QsQ0FBQztLQUNGO0lBQ0QsSUFBSSxFQUFFO1FBQ0osTUFBTSxFQUFFLEtBQUssRUFBRSxVQUFrQixFQUFFLEtBQWdCLEVBQUUsRUFBRTtZQUNyRCxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVc7Z0JBQUUsTUFBTSx5QkFBeUIsQ0FBQTtZQUN2RCxNQUFNLFFBQVEsR0FBRyxNQUFNLFdBQVcsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUE7WUFDckQsSUFBSSxRQUFRLEVBQUU7Z0JBQ1osTUFBTSxHQUFHLEdBQUc7b0JBQ1YsbUJBQW1CO29CQUNuQix1QkFBTSxDQUFDLHVDQUF1QyxFQUFFLFVBQVUsRUFBRSxRQUFRLENBQUM7aUJBQ3RFLENBQUE7Z0JBQ0QsSUFBSSxLQUFLLENBQUMsWUFBWSxFQUFFO29CQUN0Qix1REFBdUQ7b0JBQ3ZELEdBQUcsQ0FBQyxJQUFJLENBQ04sdUJBQU0sQ0FDSjs7Ozs7T0FLUCxFQUNPLEtBQUssQ0FBQyxZQUFZLEVBQ2xCLEtBQUssQ0FBQyxZQUFZLEVBQ2xCLFVBQVUsQ0FDWCxDQUNGLENBQUE7aUJBQ0Y7Z0JBQ0QsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQTtnQkFDbEIsT0FBTyxHQUFHLENBQUE7YUFDWDtpQkFBTTtnQkFDTCxNQUFNLDhCQUE4QixLQUFLLENBQUMsV0FBVyxFQUFFLENBQUE7YUFDeEQ7UUFDSCxDQUFDO1FBQ0QsTUFBTSxFQUFFLEtBQUssRUFBRSxVQUFrQixFQUFFLGFBQXFCLEVBQUUsS0FBZ0IsRUFBRSxFQUFFO1lBQzVFLDhFQUE4RTtZQUM5RSxJQUFJLEtBQUssSUFBSSxLQUFLLENBQUMsV0FBVyxFQUFFO2dCQUM5QixNQUFNLFFBQVEsR0FBRyxNQUFNLFdBQVcsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUE7Z0JBQ3JELElBQUksUUFBUSxFQUFFO29CQUNaLE1BQU0sR0FBRyxHQUFHLENBQUMsbUJBQW1CLENBQUMsQ0FBQTtvQkFDakMsSUFBSSxhQUFhLEtBQUssVUFBVSxFQUFFO3dCQUNoQyxHQUFHLENBQUMsSUFBSSxDQUFDLHVCQUFNLENBQUMsNEJBQTRCLEVBQUUsYUFBYSxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUE7cUJBQzFFO29CQUNELEdBQUcsQ0FBQyxJQUFJLENBQUMsdUJBQU0sQ0FBQyxnQ0FBZ0MsRUFBRSxVQUFVLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQTtvQkFDeEUsSUFBSSxLQUFLLENBQUMsWUFBWSxFQUFFO3dCQUN0QixHQUFHLENBQUMsSUFBSSxDQUNOLHVCQUFNLENBQUMsb0NBQW9DLEVBQUUsS0FBSyxDQUFDLFlBQVksRUFBRSxVQUFVLENBQUMsQ0FDN0UsQ0FBQTtxQkFDRjtvQkFDRCxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFBO29CQUNsQixPQUFPLEdBQUcsQ0FBQTtpQkFDWDtxQkFBTTtvQkFDTCxNQUFNLDhCQUE4QixLQUFLLENBQUMsV0FBVyxFQUFFLENBQUE7aUJBQ3hEO2FBQ0Y7aUJBQU07Z0JBQ0wsTUFBTSxHQUFHLEdBQUcsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFBO2dCQUNqQyxJQUFJLGFBQWEsS0FBSyxVQUFVLEVBQUU7b0JBQ2hDLEdBQUcsQ0FBQyxJQUFJLENBQUMsdUJBQU0sQ0FBQyw0QkFBNEIsRUFBRSxhQUFhLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQTtpQkFDMUU7Z0JBQ0QsR0FBRyxDQUFDLElBQUksQ0FDTix1QkFBTSxDQUNKOzs7OztPQUtMLEVBQ0ssS0FBSyxDQUFDLFlBQVksRUFDbEIsS0FBSyxDQUFDLFlBQVksRUFDbEIsVUFBVSxDQUNYLENBQ0YsQ0FBQTtnQkFDRCxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFBO2dCQUNsQixPQUFPLEdBQUcsQ0FBQTthQUNYO1FBQ0gsQ0FBQztRQUNELE1BQU0sRUFBRSxDQUFDLFVBQWtCLEVBQUUsS0FBZ0IsRUFBRSxFQUFFO1lBQy9DLHdFQUF3RTtZQUN4RSwyREFBMkQ7WUFDM0QsT0FBTztnQkFDTCxtQkFBbUI7Z0JBQ25CLHVCQUFNLENBQ0o7Ozs7O09BS0gsRUFDRyxVQUFVLEVBQ1YsS0FBSyxDQUFDLFlBQVksRUFDbEIsS0FBSyxDQUFDLFlBQVksRUFDbEIsVUFBVSxDQUNYO2dCQUNELHVCQUFNLENBQUMsd0JBQXdCLEVBQUUsVUFBVSxDQUFDO2dCQUM1QyxRQUFRO2FBQ1QsQ0FBQTtRQUNILENBQUM7S0FDRjtJQUNELFFBQVEsRUFBRTtRQUNSLE1BQU0sRUFBRSxLQUFLLEVBQUUsVUFBa0IsRUFBRSxLQUFvQixFQUFFLEVBQUU7WUFDekQsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQTtZQUN6QixJQUFJLEtBQUssRUFBRTtnQkFDVCxPQUFPO29CQUNMLHVCQUFNLENBQUMsb0JBQW9CLEVBQUUsVUFBVSxDQUFDO29CQUN4Qyx1QkFBTSxDQUFDLCtCQUErQixFQUFFLFVBQVUsRUFBRSxLQUFLLENBQUM7aUJBQzNELENBQUE7YUFDRjtpQkFBTTtnQkFDTCxPQUFPLHVCQUFNLENBQUMsb0JBQW9CLEVBQUUsVUFBVSxDQUFDLENBQUE7YUFDaEQ7UUFDSCxDQUFDO1FBQ0QsTUFBTSxFQUFFLEtBQUssRUFDWCxVQUFrQixFQUNsQixhQUFxQixFQUNyQixLQUEwQixFQUNQLEVBQUU7WUFDckIsTUFBTSxVQUFVLEdBQWEsRUFBRSxDQUFBO1lBQy9CLElBQUksVUFBVSxLQUFLLGFBQWEsRUFBRTtnQkFDaEMsSUFBSSxLQUFLLENBQUMsV0FBVyxFQUFFO29CQUNyQixVQUFVLENBQUMsSUFBSSxDQUNiLHVCQUFNLENBQUMsK0JBQStCLEVBQUUsYUFBYSxFQUFFLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FDMUUsQ0FBQTtpQkFDRjtnQkFDRCxVQUFVLENBQUMsSUFBSSxDQUNiLHVCQUFNLENBQUMsZ0NBQWdDLEVBQUUsYUFBYSxFQUFFLFVBQVUsQ0FBQyxDQUNwRSxDQUFBO2FBQ0Y7WUFDRCxNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFBO1lBQ3pCLElBQUksS0FBSyxFQUFFO2dCQUNULFVBQVUsQ0FBQyxJQUFJLENBQUMsdUJBQU0sQ0FBQywrQkFBK0IsRUFBRSxVQUFVLEVBQUUsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUE7YUFDbEY7WUFDRCxPQUFPLFVBQVUsQ0FBQTtRQUNuQixDQUFDO1FBQ0QsTUFBTSxFQUFFLENBQUMsVUFBa0IsRUFBRSxRQUFnQixFQUFFLEVBQUU7WUFDL0MsT0FBTztnQkFDTCx1QkFBTSxDQUNKLDRGQUE0RixFQUM1RixVQUFVLENBQ1g7Z0JBQ0QsdUJBQU0sQ0FDSiwwSEFBMEgsRUFDMUgsVUFBVSxFQUNWLFVBQVUsRUFDVixRQUFRLENBQ1Q7Z0JBQ0QsdUJBQU0sQ0FBQyw0QkFBNEIsRUFBRSxVQUFVLENBQUM7YUFDakQsQ0FBQTtRQUNILENBQUM7S0FDRjtDQUNGLENBQUE7QUFFRCxNQUFNLEdBQUcsR0FDUCxPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sS0FBSyxNQUFNO0lBQzNCLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSztJQUNmLENBQUMsQ0FBQyxDQUFDLFFBQWMsRUFBRSxHQUFHLGVBQXNCLEVBQUUsRUFBRSxHQUFFLENBQUMsQ0FBQTtBQUUxQyxRQUFBLE9BQU8sR0FBRyxLQUFLLEVBQzFCLEtBRzJDLEVBQzdCLEVBQUU7SUFDaEIsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFBO0lBRVYsTUFBTSxXQUFXLEdBQUcsS0FBSyxDQUFDLFdBQVcsQ0FBQTtJQUNyQyxNQUFNLFFBQVEsR0FBbUIsS0FBSyxDQUFDLGtCQUFrQixDQUFDLFFBQVEsQ0FBQTtJQUNsRSxNQUFNLFVBQVUsR0FBRyxLQUFLLENBQUMsa0JBQWtCLENBQUMsVUFBVSxDQUFBO0lBQ3RELE1BQU0sWUFBWSxHQUFHLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxZQUFZLENBQUE7SUFFMUQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxRQUFRLENBQUMsRUFBRTtRQUN2RSxNQUFNLGtCQUFrQixRQUFRLG1CQUFtQixDQUFBO0tBQ3BEO0lBRUQsTUFBTSxjQUFjLEdBQUcsSUFBSSw2Q0FBb0IsQ0FBQyxFQUFFLENBQUMsQ0FBQTtJQUNuRCxNQUFNLE9BQU8sR0FBRyxJQUFJLDhDQUFxQixDQUFDO1FBQ3hDLFFBQVEsRUFBRSxLQUFLLENBQUMsa0JBQWtCLENBQUMsU0FBUztLQUM3QyxDQUFDLENBQUE7SUFDRixvRUFBb0U7SUFDcEUsOEJBQThCO0lBQzlCLDBCQUEwQjtJQUMxQixHQUFHLENBQUMsaUJBQWlCLENBQUMsQ0FBQTtJQUN0QixNQUFNLE1BQU0sR0FBZ0MsTUFBTSw2QkFBTyxDQUN2RCxLQUFLLElBQUksRUFBRTtRQUNULElBQUk7WUFDRixNQUFNLE1BQU0sR0FBRyxNQUFNLGNBQWMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUE7WUFDakQsT0FBTyxNQUFNLENBQUE7U0FDZDtRQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ1YsR0FBRyxDQUFDLDBCQUEwQixFQUFFLENBQUMsQ0FBQyxDQUFBO1lBQ2xDLE1BQU0sQ0FBQyxDQUFBO1NBQ1I7SUFDSCxDQUFDLEVBQ0Q7UUFDRSxhQUFhLEVBQUUsRUFBRTtRQUNqQixhQUFhLEVBQUUsR0FBRztLQUNuQixDQUNGLENBQUE7SUFDRCxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVk7UUFBRSxNQUFNLGtCQUFrQixDQUFBO0lBQ2xELE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFBO0lBRXBELElBQUksR0FBNkIsQ0FBQTtJQUNqQyxRQUFRLFdBQVcsRUFBRTtRQUNuQixLQUFLLFFBQVEsQ0FBQyxDQUFDO1lBQ2IsR0FBRyxHQUFHLE1BQU0sU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUMsa0JBQWtCLENBQUMsQ0FBQTtZQUNsRixNQUFLO1NBQ047UUFDRCxLQUFLLFFBQVEsQ0FBQyxDQUFDO1lBQ2IsTUFBTSxhQUFhLEdBQUksS0FBaUQ7aUJBQ3JFLGtCQUFrQixDQUFBO1lBQ3JCLEdBQUcsR0FBRyxNQUFNLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxVQUFVLEVBQUUsYUFBYSxFQUFFO2dCQUN0RSxHQUFHLEtBQUssQ0FBQyxrQkFBa0I7Z0JBQzNCLFdBQVcsRUFBRSxZQUFZLENBQUMsUUFBUTthQUNuQyxDQUFDLENBQUE7WUFDRixNQUFLO1NBQ047UUFDRCxLQUFLLFFBQVEsQ0FBQyxDQUFDO1lBQ2IsSUFBSSxRQUFRLEtBQUsscUJBQWMsQ0FBQyxRQUFRLEVBQUU7Z0JBQ3hDLEdBQUcsR0FBRyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsVUFBVSxFQUFFLFlBQVksQ0FBQyxRQUFRLENBQUMsQ0FBQTthQUMxRTtpQkFBTTtnQkFDTCxHQUFHLEdBQUcsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUMsa0JBQWtCLENBQUMsQ0FBQTthQUM3RTtZQUNELE1BQUs7U0FDTjtLQUNGO0lBRUQsSUFBSSxHQUFHLEVBQUU7UUFDUCxJQUFJLFFBQWdCLENBQUE7UUFDcEIsSUFBSSxRQUFRLEtBQUsscUJBQWMsQ0FBQyxJQUFJLEVBQUU7WUFDcEMsUUFBUSxHQUFHLFlBQVksQ0FBQyxNQUFNLENBQUE7U0FDL0I7YUFBTTtZQUNMLFFBQVEsR0FBRyxZQUFZLElBQUksWUFBWSxDQUFDLE1BQU0sQ0FBQSxDQUFDLDhFQUE4RTtTQUM5SDtRQUNELE1BQU0sTUFBTSxHQUFHO1lBQ2IsSUFBSSxFQUFFLFlBQVksQ0FBQyxJQUFJO1lBQ3ZCLElBQUksRUFBRSxZQUFZLENBQUMsSUFBSTtZQUN2QixJQUFJLEVBQUUsWUFBWSxDQUFDLFFBQVE7WUFDM0IsUUFBUSxFQUFFLFlBQVksQ0FBQyxRQUFRO1lBQy9CLFFBQVEsRUFBRSxRQUFRO1lBQ2xCLHVCQUF1QixFQUFFLElBQUk7U0FDOUIsQ0FBQTtRQUNELEdBQUcsQ0FDRCxzQkFBc0IsTUFBTSxDQUFDLElBQUksS0FBSyxNQUFNLENBQUMsSUFBSSxjQUFjLE1BQU0sQ0FBQyxRQUFRLE9BQU8sTUFBTSxDQUFDLElBQUksRUFBRSxDQUNuRyxDQUFBO1FBQ0QsR0FBRyxDQUFDLGVBQWUsRUFBRSxHQUFHLENBQUMsQ0FBQTtRQUN6QixNQUFNLFNBQVMsR0FBRyxJQUFJLFdBQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQTtRQUNwQyxNQUFNLFNBQVMsQ0FBQyxPQUFPLEVBQUUsQ0FBQTtRQUN6QixJQUFJO1lBQ0YsTUFBTSw2QkFBTyxDQUNYLEtBQUssSUFBSSxFQUFFO2dCQUNULElBQUksT0FBTyxHQUFHLEtBQUssUUFBUSxFQUFFO29CQUMzQixPQUFPLFNBQVMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUE7aUJBQzVCO3FCQUFNO29CQUNMLElBQUksR0FBRyxFQUFFO3dCQUNQLE9BQU8sT0FBTyxDQUFDLEdBQUcsQ0FDaEIsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFOzRCQUNwQixPQUFPLFNBQVMsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUE7d0JBQ25DLENBQUMsQ0FBQyxDQUNILENBQUE7cUJBQ0Y7eUJBQU07d0JBQ0wsT0FBTTtxQkFDUDtpQkFDRjtZQUNILENBQUMsRUFDRDtnQkFDRSxLQUFLLEVBQUUsV0FBVztnQkFDbEIsYUFBYSxFQUFFLFdBQVc7YUFDM0IsQ0FDRixDQUFBO1NBQ0Y7Z0JBQVM7WUFDUixNQUFNLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQTtTQUN0QjtLQUNGO0lBRUQsSUFBSSxRQUFRLEdBQTJCLEVBQUUsQ0FBQTtJQUN6QyxnRUFBZ0U7SUFDaEUsdURBQXVEO0lBQ3ZELElBQUksUUFBUSxLQUFLLHFCQUFjLENBQUMsR0FBRyxFQUFFO1FBQ25DLFFBQVEsQ0FBQyxrQkFBa0IsR0FBRyxVQUFVLENBQUE7S0FDekM7SUFFRCxPQUFPLFFBQVEsQ0FBQTtBQUNqQixDQUFDLENBQUE7QUFFRCxzREFBc0Q7QUFDdEQsMERBQTBEO0FBQzFELDBDQUEwQztBQUMxQyxNQUFNLFdBQVcsR0FBRyxDQUFDLEtBQVUsRUFBRSxpQkFBeUIsRUFBRSxFQUFFO0lBQzVELGdFQUFnRTtJQUNoRSxpREFBaUQ7SUFDakQsTUFBTSxTQUFTLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsb0JBQW9CLENBQUMsQ0FBQTtJQUM5RCxHQUFHLENBQ0QsMkRBQTJELEVBQzNELGlCQUFpQixHQUFHLENBQUMsRUFDckIsV0FBVyxFQUNYLFNBQVMsRUFDVCxLQUFLLENBQ04sQ0FBQTtJQUNELE9BQU8sU0FBUyxDQUFBO0FBQ2xCLENBQUMsQ0FBQTtBQUVEOztHQUVHO0FBQ0gsTUFBTSxXQUFXLEdBQUcsS0FBSyxFQUFFLEdBQVcsRUFBMEIsRUFBRTtJQUNoRSxNQUFNLGNBQWMsR0FBRyxJQUFJLDZDQUFvQixDQUFDLEVBQUUsQ0FBQyxDQUFBO0lBQ25ELE1BQU0sT0FBTyxHQUFHLElBQUksOENBQXFCLENBQUM7UUFDeEMsUUFBUSxFQUFFLEdBQUc7S0FDZCxDQUFDLENBQUE7SUFDRixNQUFNLE1BQU0sR0FBRyxNQUFNLGNBQWMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUE7SUFDakQsSUFBSSxNQUFNLENBQUMsWUFBWSxFQUFFO1FBQ3ZCLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFBO1FBQzVDLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQTtLQUNyQjtBQUNILENBQUMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIFNlY3JldHNNYW5hZ2VyQ2xpZW50LFxuICBHZXRTZWNyZXRWYWx1ZUNvbW1hbmQsXG4gIEdldFNlY3JldFZhbHVlQ29tbWFuZE91dHB1dCxcbn0gZnJvbSBcIkBhd3Mtc2RrL2NsaWVudC1zZWNyZXRzLW1hbmFnZXJcIlxuaW1wb3J0IHtcbiAgQ2xvdWRGb3JtYXRpb25DdXN0b21SZXNvdXJjZUNyZWF0ZUV2ZW50LFxuICBDbG91ZEZvcm1hdGlvbkN1c3RvbVJlc291cmNlVXBkYXRlRXZlbnQsXG4gIENsb3VkRm9ybWF0aW9uQ3VzdG9tUmVzb3VyY2VEZWxldGVFdmVudCxcbn0gZnJvbSBcImF3cy1sYW1iZGFcIlxuaW1wb3J0IHsgYmFja09mZiB9IGZyb20gXCJleHBvbmVudGlhbC1iYWNrb2ZmXCJcbmltcG9ydCB7IGZvcm1hdCB9IGZyb20gXCJub2RlLXBnLWZvcm1hdFwiXG5pbXBvcnQgeyBDbGllbnQgfSBmcm9tIFwicGdcIlxuaW1wb3J0IHsgUmRzU3FsUmVzb3VyY2UgfSBmcm9tIFwiLi9lbnVtXCJcblxuaW50ZXJmYWNlIEN1c3RvbVJlc291cmNlUmVzcG9uc2Uge1xuICBQaHlzaWNhbFJlc291cmNlSWQ/OiBzdHJpbmdcbiAgRGF0YT86IGFueVxuICBOb0VjaG8/OiBib29sZWFuXG59XG5cbnR5cGUgQ3JlYXRlUmVzb3VyY2VIYW5kbGVyID0gKFxuICByZXNvdXJjZUlkOiBzdHJpbmcsXG4gIHByb3BzPzogYW55XG4pID0+IFByb21pc2U8c3RyaW5nIHwgc3RyaW5nW10+XG50eXBlIFVwZGF0ZVJlc291cmNlSGFuZGxlciA9IChcbiAgcmVzb3VyY2VJZDogc3RyaW5nLFxuICBvbGRSZXNvdXJjZUlkOiBzdHJpbmcsXG4gIHByb3BzPzogYW55XG4pID0+IFByb21pc2U8c3RyaW5nIHwgc3RyaW5nW10gfCB2b2lkPlxudHlwZSBEZWxldGVSZXNvdXJjZUhhbmRsZXIgPSAocmVzb3VyY2VJZDogc3RyaW5nLCBwcm9wcz86IGFueSkgPT4gc3RyaW5nIHwgc3RyaW5nW10gfCB2b2lkXG5cbnR5cGUgSnVtcFRhYmxlID0ge1xuICBba2V5IGluIFJkc1NxbFJlc291cmNlXToge1xuICAgIENyZWF0ZTogQ3JlYXRlUmVzb3VyY2VIYW5kbGVyXG4gICAgVXBkYXRlOiBVcGRhdGVSZXNvdXJjZUhhbmRsZXJcbiAgICBEZWxldGU6IERlbGV0ZVJlc291cmNlSGFuZGxlclxuICB9XG59XG5cbmludGVyZmFjZSBSb2xlUHJvcHMge1xuICAvKipcbiAgICogU2VjcmV0IEFSTi5cbiAgICovXG4gIFBhc3N3b3JkQXJuOiBzdHJpbmdcblxuICAvKipcbiAgICogT3B0aW9uYWwgZGF0YWJhc2UgdG8gd2hpY2ggcm9sZSBpcyBncmFudGVkIGNvbm5lY3QgcGVybWlzc2lvbnMuXG4gICAqL1xuICBEYXRhYmFzZU5hbWU/OiBzdHJpbmdcbn1cblxuaW50ZXJmYWNlIERhdGFiYXNlUHJvcHMge1xuICBPd25lcjogc3RyaW5nXG59XG5cbmludGVyZmFjZSBEYXRhYmFzZVVwZGF0ZVByb3BzIGV4dGVuZHMgRGF0YWJhc2VQcm9wcyB7XG4gIE1hc3Rlck93bmVyOiBzdHJpbmdcbn1cblxuY29uc3QgbWF4QXR0ZW1wdHMgPSAyMFxuXG5jb25zdCBqdW1wVGFibGU6IEp1bXBUYWJsZSA9IHtcbiAgc3FsOiB7XG4gICAgQ3JlYXRlOiAoXzogc3RyaW5nLCBwcm9wcz86IGFueSkgPT4ge1xuICAgICAgcmV0dXJuIHByb3BzLlN0YXRlbWVudFxuICAgIH0sXG4gICAgVXBkYXRlOiAoXzogc3RyaW5nLCBfXzogc3RyaW5nLCBwcm9wcz86IGFueSkgPT4ge1xuICAgICAgcmV0dXJuIHByb3BzLlN0YXRlbWVudFxuICAgIH0sXG4gICAgRGVsZXRlOiAoXzogc3RyaW5nLCBfXzogc3RyaW5nLCBwcm9wcz86IGFueSkgPT4ge1xuICAgICAgcmV0dXJuIHByb3BzLlJvbGxiYWNrXG4gICAgfSxcbiAgfSxcbiAgc2NoZW1hOiB7XG4gICAgQ3JlYXRlOiBhc3luYyAocmVzb3VyY2VJZDogc3RyaW5nKSA9PiB7XG4gICAgICByZXR1cm4gZm9ybWF0KFwiY3JlYXRlIHNjaGVtYSBpZiBub3QgZXhpc3RzICVJXCIsIHJlc291cmNlSWQpXG4gICAgfSxcbiAgICBVcGRhdGU6IGFzeW5jIChyZXNvdXJjZUlkOiBzdHJpbmcsIG9sZFJlc291cmNlSWQ6IHN0cmluZykgPT4ge1xuICAgICAgcmV0dXJuIGZvcm1hdChcImFsdGVyIHNjaGVtYSAlSSByZW5hbWUgdG8gJUlcIiwgb2xkUmVzb3VyY2VJZCwgcmVzb3VyY2VJZClcbiAgICB9LFxuICAgIERlbGV0ZTogKHJlc291cmNlSWQ6IHN0cmluZykgPT4ge1xuICAgICAgcmV0dXJuIGZvcm1hdChcImRyb3Agc2NoZW1hIGlmIGV4aXN0cyAlSSBjYXNjYWRlXCIsIHJlc291cmNlSWQpXG4gICAgfSxcbiAgfSxcbiAgcm9sZToge1xuICAgIENyZWF0ZTogYXN5bmMgKHJlc291cmNlSWQ6IHN0cmluZywgcHJvcHM6IFJvbGVQcm9wcykgPT4ge1xuICAgICAgaWYgKCFwcm9wcy5QYXNzd29yZEFybikgdGhyb3cgXCJObyBQYXNzd29yZEFybiBwcm92aWRlZFwiXG4gICAgICBjb25zdCBwYXNzd29yZCA9IGF3YWl0IGdldFBhc3N3b3JkKHByb3BzLlBhc3N3b3JkQXJuKVxuICAgICAgaWYgKHBhc3N3b3JkKSB7XG4gICAgICAgIGNvbnN0IHNxbCA9IFtcbiAgICAgICAgICBcInN0YXJ0IHRyYW5zYWN0aW9uXCIsXG4gICAgICAgICAgZm9ybWF0KFwiY3JlYXRlIHJvbGUgJUkgd2l0aCBsb2dpbiBwYXNzd29yZCAlTFwiLCByZXNvdXJjZUlkLCBwYXNzd29yZCksXG4gICAgICAgIF1cbiAgICAgICAgaWYgKHByb3BzLkRhdGFiYXNlTmFtZSkge1xuICAgICAgICAgIC8vIGdyYW50IGNvbm5lY3QgdG8gZGF0YWJhc2UgaWYgZGF0YWJhc2UgYWxyZWFkeSBleGlzdHNcbiAgICAgICAgICBzcWwucHVzaChcbiAgICAgICAgICAgIGZvcm1hdChcbiAgICAgICAgICAgICAgYERPICQkXG5CRUdJTlxuICBJRiBFWElTVFMgKHNlbGVjdCBmcm9tIHBnX2RhdGFiYXNlIHdoZXJlIGRhdG5hbWUgPSAnJXMnIGFuZCBkYXRpc3RlbXBsYXRlID0gZmFsc2UpIFRIRU5cbiAgICBncmFudCBjb25uZWN0IG9uIGRhdGFiYXNlICVJIHRvICVJO1xuICBFTkQgSUY7XG5FTkQkJDtgLFxuICAgICAgICAgICAgICBwcm9wcy5EYXRhYmFzZU5hbWUsXG4gICAgICAgICAgICAgIHByb3BzLkRhdGFiYXNlTmFtZSxcbiAgICAgICAgICAgICAgcmVzb3VyY2VJZFxuICAgICAgICAgICAgKVxuICAgICAgICAgIClcbiAgICAgICAgfVxuICAgICAgICBzcWwucHVzaChcImNvbW1pdFwiKVxuICAgICAgICByZXR1cm4gc3FsXG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBgQ2Fubm90IHBhcnNlIHBhc3N3b3JkIGZyb20gJHtwcm9wcy5QYXNzd29yZEFybn1gXG4gICAgICB9XG4gICAgfSxcbiAgICBVcGRhdGU6IGFzeW5jIChyZXNvdXJjZUlkOiBzdHJpbmcsIG9sZFJlc291cmNlSWQ6IHN0cmluZywgcHJvcHM6IFJvbGVQcm9wcykgPT4ge1xuICAgICAgLy8gVE9ETzogaWYgZGF0YWJhc2UgbmFtZSBoYXMgY2hhbmdlZCBpbiBPbGRSZXNvdXJjZVByb3BlcnRpZXMsIHJldm9rZSBjb25uZWN0XG4gICAgICBpZiAocHJvcHMgJiYgcHJvcHMuUGFzc3dvcmRBcm4pIHtcbiAgICAgICAgY29uc3QgcGFzc3dvcmQgPSBhd2FpdCBnZXRQYXNzd29yZChwcm9wcy5QYXNzd29yZEFybilcbiAgICAgICAgaWYgKHBhc3N3b3JkKSB7XG4gICAgICAgICAgY29uc3Qgc3FsID0gW1wic3RhcnQgdHJhbnNhY3Rpb25cIl1cbiAgICAgICAgICBpZiAob2xkUmVzb3VyY2VJZCAhPT0gcmVzb3VyY2VJZCkge1xuICAgICAgICAgICAgc3FsLnB1c2goZm9ybWF0KFwiYWx0ZXIgcm9sZSAlSSByZW5hbWUgdG8gJUlcIiwgb2xkUmVzb3VyY2VJZCwgcmVzb3VyY2VJZCkpXG4gICAgICAgICAgfVxuICAgICAgICAgIHNxbC5wdXNoKGZvcm1hdChcImFsdGVyIHJvbGUgJUkgd2l0aCBwYXNzd29yZCAlTFwiLCByZXNvdXJjZUlkLCBwYXNzd29yZCkpXG4gICAgICAgICAgaWYgKHByb3BzLkRhdGFiYXNlTmFtZSkge1xuICAgICAgICAgICAgc3FsLnB1c2goXG4gICAgICAgICAgICAgIGZvcm1hdChcImdyYW50IGNvbm5lY3Qgb24gZGF0YWJhc2UgJUkgdG8gJUlcIiwgcHJvcHMuRGF0YWJhc2VOYW1lLCByZXNvdXJjZUlkKVxuICAgICAgICAgICAgKVxuICAgICAgICAgIH1cbiAgICAgICAgICBzcWwucHVzaChcImNvbW1pdFwiKVxuICAgICAgICAgIHJldHVybiBzcWxcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aHJvdyBgQ2Fubm90IHBhcnNlIHBhc3N3b3JkIGZyb20gJHtwcm9wcy5QYXNzd29yZEFybn1gXG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IHNxbCA9IFtcInN0YXJ0IHRyYW5zYWN0aW9uXCJdXG4gICAgICAgIGlmIChvbGRSZXNvdXJjZUlkICE9PSByZXNvdXJjZUlkKSB7XG4gICAgICAgICAgc3FsLnB1c2goZm9ybWF0KFwiYWx0ZXIgcm9sZSAlSSByZW5hbWUgdG8gJUlcIiwgb2xkUmVzb3VyY2VJZCwgcmVzb3VyY2VJZCkpXG4gICAgICAgIH1cbiAgICAgICAgc3FsLnB1c2goXG4gICAgICAgICAgZm9ybWF0KFxuICAgICAgICAgICAgYERPICQkXG5CRUdJTlxuICBJRiBFWElTVFMgKHNlbGVjdCBmcm9tIHBnX2RhdGFiYXNlIHdoZXJlIGRhdG5hbWUgPSAnJXMnIGFuZCBkYXRpc3RlbXBsYXRlID0gZmFsc2UpIFRIRU5cbiAgICBncmFudCBjb25uZWN0IG9uIGRhdGFiYXNlICVJIHRvICVJO1xuICBFTkQgSUY7XG5FTkQkJDtgLFxuICAgICAgICAgICAgcHJvcHMuRGF0YWJhc2VOYW1lLFxuICAgICAgICAgICAgcHJvcHMuRGF0YWJhc2VOYW1lLFxuICAgICAgICAgICAgcmVzb3VyY2VJZFxuICAgICAgICAgIClcbiAgICAgICAgKVxuICAgICAgICBzcWwucHVzaChcImNvbW1pdFwiKVxuICAgICAgICByZXR1cm4gc3FsXG4gICAgICB9XG4gICAgfSxcbiAgICBEZWxldGU6IChyZXNvdXJjZUlkOiBzdHJpbmcsIHByb3BzOiBSb2xlUHJvcHMpID0+IHtcbiAgICAgIC8vIFRPRE86IGlmIHVzZXIgaXMgb3duZXIgb2YgYSBkYXRhYmFzZSwgYXNzaWduIG93bmVyc2hpcCB0byBtYXN0ZXIgdXNlclxuICAgICAgLy8gVGhpcyB3aWxsIHJlcXVpcmUgYSBzcGVjaWZpZWQgaW5oZXJpdG9yIG9uIHJvbGUgY3JlYXRpb25cbiAgICAgIHJldHVybiBbXG4gICAgICAgIFwic3RhcnQgdHJhbnNhY3Rpb25cIixcbiAgICAgICAgZm9ybWF0KFxuICAgICAgICAgIGBETyAkJFxuQkVHSU5cbiAgSUYgRVhJU1RTIChzZWxlY3QgZnJvbSBwZ19jYXRhbG9nLnBnX3JvbGVzIFdIRVJFIHJvbG5hbWUgPSAnJXMnKSBBTkQgRVhJU1RTIChzZWxlY3QgZnJvbSBwZ19kYXRhYmFzZSBXSEVSRSBkYXRuYW1lID0gJyVzJykgVEhFTlxuICAgIHJldm9rZSBhbGwgcHJpdmlsZWdlcyBvbiBkYXRhYmFzZSAlSSBmcm9tICVJO1xuICBFTkQgSUY7XG5FTkQkJDtgLFxuICAgICAgICAgIHJlc291cmNlSWQsXG4gICAgICAgICAgcHJvcHMuRGF0YWJhc2VOYW1lLFxuICAgICAgICAgIHByb3BzLkRhdGFiYXNlTmFtZSxcbiAgICAgICAgICByZXNvdXJjZUlkXG4gICAgICAgICksXG4gICAgICAgIGZvcm1hdChcImRyb3Agcm9sZSBpZiBleGlzdHMgJUlcIiwgcmVzb3VyY2VJZCksXG4gICAgICAgIFwiY29tbWl0XCIsXG4gICAgICBdXG4gICAgfSxcbiAgfSxcbiAgZGF0YWJhc2U6IHtcbiAgICBDcmVhdGU6IGFzeW5jIChyZXNvdXJjZUlkOiBzdHJpbmcsIHByb3BzOiBEYXRhYmFzZVByb3BzKSA9PiB7XG4gICAgICBjb25zdCBvd25lciA9IHByb3BzLk93bmVyXG4gICAgICBpZiAob3duZXIpIHtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICBmb3JtYXQoXCJjcmVhdGUgZGF0YWJhc2UgJUlcIiwgcmVzb3VyY2VJZCksXG4gICAgICAgICAgZm9ybWF0KFwiYWx0ZXIgZGF0YWJhc2UgJUkgb3duZXIgdG8gJUlcIiwgcmVzb3VyY2VJZCwgb3duZXIpLFxuICAgICAgICBdXG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gZm9ybWF0KFwiY3JlYXRlIGRhdGFiYXNlICVJXCIsIHJlc291cmNlSWQpXG4gICAgICB9XG4gICAgfSxcbiAgICBVcGRhdGU6IGFzeW5jIChcbiAgICAgIHJlc291cmNlSWQ6IHN0cmluZyxcbiAgICAgIG9sZFJlc291cmNlSWQ6IHN0cmluZyxcbiAgICAgIHByb3BzOiBEYXRhYmFzZVVwZGF0ZVByb3BzXG4gICAgKTogUHJvbWlzZTxzdHJpbmdbXT4gPT4ge1xuICAgICAgY29uc3Qgc3RhdGVtZW50czogc3RyaW5nW10gPSBbXVxuICAgICAgaWYgKHJlc291cmNlSWQgIT09IG9sZFJlc291cmNlSWQpIHtcbiAgICAgICAgaWYgKHByb3BzLk1hc3Rlck93bmVyKSB7XG4gICAgICAgICAgc3RhdGVtZW50cy5wdXNoKFxuICAgICAgICAgICAgZm9ybWF0KFwiYWx0ZXIgZGF0YWJhc2UgJUkgb3duZXIgdG8gJUlcIiwgb2xkUmVzb3VyY2VJZCwgcHJvcHMuTWFzdGVyT3duZXIpXG4gICAgICAgICAgKVxuICAgICAgICB9XG4gICAgICAgIHN0YXRlbWVudHMucHVzaChcbiAgICAgICAgICBmb3JtYXQoXCJhbHRlciBkYXRhYmFzZSAlSSByZW5hbWUgdG8gJUlcIiwgb2xkUmVzb3VyY2VJZCwgcmVzb3VyY2VJZClcbiAgICAgICAgKVxuICAgICAgfVxuICAgICAgY29uc3Qgb3duZXIgPSBwcm9wcy5Pd25lclxuICAgICAgaWYgKG93bmVyKSB7XG4gICAgICAgIHN0YXRlbWVudHMucHVzaChmb3JtYXQoXCJhbHRlciBkYXRhYmFzZSAlSSBvd25lciB0byAlSVwiLCByZXNvdXJjZUlkLCBwcm9wcy5Pd25lcikpXG4gICAgICB9XG4gICAgICByZXR1cm4gc3RhdGVtZW50c1xuICAgIH0sXG4gICAgRGVsZXRlOiAocmVzb3VyY2VJZDogc3RyaW5nLCBuZXdPd25lcjogc3RyaW5nKSA9PiB7XG4gICAgICByZXR1cm4gW1xuICAgICAgICBmb3JtYXQoXG4gICAgICAgICAgXCJzZWxlY3QgcGdfdGVybWluYXRlX2JhY2tlbmQocGdfc3RhdF9hY3Rpdml0eS5waWQpIGZyb20gcGdfc3RhdF9hY3Rpdml0eSB3aGVyZSBkYXRuYW1lID0gJUxcIixcbiAgICAgICAgICByZXNvdXJjZUlkXG4gICAgICAgICksXG4gICAgICAgIGZvcm1hdChcbiAgICAgICAgICBcIkRPICQkQkVHSU5cXG5JRiBFWElTVFMgKHNlbGVjdCBmcm9tIHBnX2RhdGFiYXNlIFdIRVJFIGRhdG5hbWUgPSAnJXMnKSBUSEVOIGFsdGVyIGRhdGFiYXNlICVJIG93bmVyIHRvICVJOyBFTkQgSUY7XFxuRU5EJCQ7XCIsXG4gICAgICAgICAgcmVzb3VyY2VJZCxcbiAgICAgICAgICByZXNvdXJjZUlkLFxuICAgICAgICAgIG5ld093bmVyXG4gICAgICAgICksXG4gICAgICAgIGZvcm1hdChcImRyb3AgZGF0YWJhc2UgaWYgZXhpc3RzICVJXCIsIHJlc291cmNlSWQpLFxuICAgICAgXVxuICAgIH0sXG4gIH0sXG59XG5cbmNvbnN0IGxvZyA9XG4gIHByb2Nlc3MuZW52LkxPR0dFUiA9PT0gXCJ0cnVlXCJcbiAgICA/IGNvbnNvbGUuZGVidWdcbiAgICA6IChfbWVzc2FnZT86IGFueSwgLi4uX29wdGlvbmFsUGFyYW1zOiBhbnlbXSkgPT4ge31cblxuZXhwb3J0IGNvbnN0IGhhbmRsZXIgPSBhc3luYyAoXG4gIGV2ZW50OlxuICAgIHwgQ2xvdWRGb3JtYXRpb25DdXN0b21SZXNvdXJjZUNyZWF0ZUV2ZW50XG4gICAgfCBDbG91ZEZvcm1hdGlvbkN1c3RvbVJlc291cmNlVXBkYXRlRXZlbnRcbiAgICB8IENsb3VkRm9ybWF0aW9uQ3VzdG9tUmVzb3VyY2VEZWxldGVFdmVudFxuKTogUHJvbWlzZTxhbnk+ID0+IHtcbiAgbG9nKGV2ZW50KVxuXG4gIGNvbnN0IHJlcXVlc3RUeXBlID0gZXZlbnQuUmVxdWVzdFR5cGVcbiAgY29uc3QgcmVzb3VyY2U6IFJkc1NxbFJlc291cmNlID0gZXZlbnQuUmVzb3VyY2VQcm9wZXJ0aWVzLlJlc291cmNlXG4gIGNvbnN0IHJlc291cmNlSWQgPSBldmVudC5SZXNvdXJjZVByb3BlcnRpZXMuUmVzb3VyY2VJZFxuICBjb25zdCBkYXRhYmFzZU5hbWUgPSBldmVudC5SZXNvdXJjZVByb3BlcnRpZXMuRGF0YWJhc2VOYW1lXG5cbiAgaWYgKCFPYmplY3Qua2V5cyhqdW1wVGFibGUpLmluY2x1ZGVzKGV2ZW50LlJlc291cmNlUHJvcGVydGllcy5SZXNvdXJjZSkpIHtcbiAgICB0aHJvdyBgUmVzb3VyY2UgdHlwZSAnJHtyZXNvdXJjZX0nIG5vdCByZWNvZ25pc2VkLmBcbiAgfVxuXG4gIGNvbnN0IHNlY3JldHNfY2xpZW50ID0gbmV3IFNlY3JldHNNYW5hZ2VyQ2xpZW50KHt9KVxuICBjb25zdCBjb21tYW5kID0gbmV3IEdldFNlY3JldFZhbHVlQ29tbWFuZCh7XG4gICAgU2VjcmV0SWQ6IGV2ZW50LlJlc291cmNlUHJvcGVydGllcy5TZWNyZXRBcm4sXG4gIH0pXG4gIC8vIEFzIHRoZSBJQU0gY3JlZGVudGlhbHMgY2FuIGJlIGNhY2hlZCwgYW4gdXBkYXRlIG1ha2RlIHZlcnkgcmVjZW50XG4gIC8vIGNvdWxkIG5vdCB5ZXQgYmUgYXZhaWxhYmxlLlxuICAvLyBTbyB3ZSByZXRyeSB0aGlzIGEgYml0LlxuICBsb2coXCJGZXRjaGluZyBzZWNyZXRcIilcbiAgY29uc3Qgc2VjcmV0OiBHZXRTZWNyZXRWYWx1ZUNvbW1hbmRPdXRwdXQgPSBhd2FpdCBiYWNrT2ZmKFxuICAgIGFzeW5jICgpID0+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHNlY3JldHNfY2xpZW50LnNlbmQoY29tbWFuZClcbiAgICAgICAgcmV0dXJuIHJlc3VsdFxuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBsb2coXCJFcnJvciBmZXRjaGluZyBzZWNyZXQgJW9cIiwgZSlcbiAgICAgICAgdGhyb3cgZVxuICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgbnVtT2ZBdHRlbXB0czogMTAsXG4gICAgICBzdGFydGluZ0RlbGF5OiA1MDAsXG4gICAgfVxuICApXG4gIGlmICghc2VjcmV0LlNlY3JldFN0cmluZykgdGhyb3cgXCJObyBzZWNyZXQgc3RyaW5nXCJcbiAgY29uc3Qgc2VjcmV0VmFsdWVzID0gSlNPTi5wYXJzZShzZWNyZXQuU2VjcmV0U3RyaW5nKVxuXG4gIGxldCBzcWw6IHN0cmluZyB8IHN0cmluZ1tdIHwgdm9pZFxuICBzd2l0Y2ggKHJlcXVlc3RUeXBlKSB7XG4gICAgY2FzZSBcIkNyZWF0ZVwiOiB7XG4gICAgICBzcWwgPSBhd2FpdCBqdW1wVGFibGVbcmVzb3VyY2VdW3JlcXVlc3RUeXBlXShyZXNvdXJjZUlkLCBldmVudC5SZXNvdXJjZVByb3BlcnRpZXMpXG4gICAgICBicmVha1xuICAgIH1cbiAgICBjYXNlIFwiVXBkYXRlXCI6IHtcbiAgICAgIGNvbnN0IG9sZFJlc291cmNlSWQgPSAoZXZlbnQgYXMgQ2xvdWRGb3JtYXRpb25DdXN0b21SZXNvdXJjZVVwZGF0ZUV2ZW50KVxuICAgICAgICAuUGh5c2ljYWxSZXNvdXJjZUlkXG4gICAgICBzcWwgPSBhd2FpdCBqdW1wVGFibGVbcmVzb3VyY2VdW3JlcXVlc3RUeXBlXShyZXNvdXJjZUlkLCBvbGRSZXNvdXJjZUlkLCB7XG4gICAgICAgIC4uLmV2ZW50LlJlc291cmNlUHJvcGVydGllcyxcbiAgICAgICAgTWFzdGVyT3duZXI6IHNlY3JldFZhbHVlcy51c2VybmFtZSxcbiAgICAgIH0pXG4gICAgICBicmVha1xuICAgIH1cbiAgICBjYXNlIFwiRGVsZXRlXCI6IHtcbiAgICAgIGlmIChyZXNvdXJjZSA9PT0gUmRzU3FsUmVzb3VyY2UuREFUQUJBU0UpIHtcbiAgICAgICAgc3FsID0ganVtcFRhYmxlW3Jlc291cmNlXVtyZXF1ZXN0VHlwZV0ocmVzb3VyY2VJZCwgc2VjcmV0VmFsdWVzLnVzZXJuYW1lKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc3FsID0ganVtcFRhYmxlW3Jlc291cmNlXVtyZXF1ZXN0VHlwZV0ocmVzb3VyY2VJZCwgZXZlbnQuUmVzb3VyY2VQcm9wZXJ0aWVzKVxuICAgICAgfVxuICAgICAgYnJlYWtcbiAgICB9XG4gIH1cblxuICBpZiAoc3FsKSB7XG4gICAgbGV0IGRhdGFiYXNlOiBzdHJpbmdcbiAgICBpZiAocmVzb3VyY2UgPT09IFJkc1NxbFJlc291cmNlLlJPTEUpIHtcbiAgICAgIGRhdGFiYXNlID0gc2VjcmV0VmFsdWVzLmRibmFtZVxuICAgIH0gZWxzZSB7XG4gICAgICBkYXRhYmFzZSA9IGRhdGFiYXNlTmFtZSA/PyBzZWNyZXRWYWx1ZXMuZGJuYW1lIC8vIGNvbm5lY3QgdG8gZ2l2ZW4gZGF0YWJhc2UgaWYgcG9zc2libGUsIGVsc2UgdG8gZGF0YWJhc2UgbWVudGlvbmVkIGluIHNlY3JldFxuICAgIH1cbiAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICBob3N0OiBzZWNyZXRWYWx1ZXMuaG9zdCxcbiAgICAgIHBvcnQ6IHNlY3JldFZhbHVlcy5wb3J0LFxuICAgICAgdXNlcjogc2VjcmV0VmFsdWVzLnVzZXJuYW1lLFxuICAgICAgcGFzc3dvcmQ6IHNlY3JldFZhbHVlcy5wYXNzd29yZCxcbiAgICAgIGRhdGFiYXNlOiBkYXRhYmFzZSxcbiAgICAgIGNvbm5lY3Rpb25UaW1lb3V0TWlsbGlzOiAyMDAwLCAvLyByZXR1cm4gYW4gZXJyb3IgaWYgYSBjb25uZWN0aW9uIGNvdWxkIG5vdCBiZSBlc3RhYmxpc2hlZCB3aXRoaW4gMiBzZWNvbmRzXG4gICAgfVxuICAgIGxvZyhcbiAgICAgIGBDb25uZWN0aW5nIHRvIGhvc3QgJHtwYXJhbXMuaG9zdH06ICR7cGFyYW1zLnBvcnR9LCBkYXRhYmFzZSAke3BhcmFtcy5kYXRhYmFzZX0gYXMgJHtwYXJhbXMudXNlcn1gXG4gICAgKVxuICAgIGxvZyhcIkV4ZWN1dGluZyBTUUxcIiwgc3FsKVxuICAgIGNvbnN0IHBnX2NsaWVudCA9IG5ldyBDbGllbnQocGFyYW1zKVxuICAgIGF3YWl0IHBnX2NsaWVudC5jb25uZWN0KClcbiAgICB0cnkge1xuICAgICAgYXdhaXQgYmFja09mZihcbiAgICAgICAgYXN5bmMgKCkgPT4ge1xuICAgICAgICAgIGlmICh0eXBlb2Ygc3FsID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgICByZXR1cm4gcGdfY2xpZW50LnF1ZXJ5KHNxbClcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKHNxbCkge1xuICAgICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5hbGwoXG4gICAgICAgICAgICAgICAgc3FsLm1hcCgoc3RhdGVtZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgICByZXR1cm4gcGdfY2xpZW50LnF1ZXJ5KHN0YXRlbWVudClcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICByZXR1cm5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICByZXRyeTogZXJyb3JGaWx0ZXIsXG4gICAgICAgICAgbnVtT2ZBdHRlbXB0czogbWF4QXR0ZW1wdHMsXG4gICAgICAgIH1cbiAgICAgIClcbiAgICB9IGZpbmFsbHkge1xuICAgICAgYXdhaXQgcGdfY2xpZW50LmVuZCgpXG4gICAgfVxuICB9XG5cbiAgbGV0IHJlc3BvbnNlOiBDdXN0b21SZXNvdXJjZVJlc3BvbnNlID0ge31cbiAgLy8gRXhjZXB0IGZvciB0aGUgU1FMIHJlc291cmNlLCByZXR1cm4gdGhlIG5ldyByZXNvdXJjZSBpZC4gVGhpc1xuICAvLyB3aWxsIGNhdXNlIGEgZGVsZXRlIHRvIGJlIHNlbmQgZm9yIHRoZSBvbGQgcmVzb3VyY2UuXG4gIGlmIChyZXNvdXJjZSAhPT0gUmRzU3FsUmVzb3VyY2UuU1FMKSB7XG4gICAgcmVzcG9uc2UuUGh5c2ljYWxSZXNvdXJjZUlkID0gcmVzb3VyY2VJZFxuICB9XG5cbiAgcmV0dXJuIHJlc3BvbnNlXG59XG5cbi8vIEN1c3RvbSBlcnJvciBmaWx0ZXIsIG1haW5seSB0byByZXRyeSByb2xlIGNyZWF0aW9uLlxuLy8gRnJlcXVlbnRseSBzZWUgXCJ0dXBsZSBjb25jdXJyZW50bHkgdXBkYXRlZFwiLCBhbmQgYWRkaW5nXG4vLyBkZXBlbmRlbmNpZXMgaXMgdmVyeSBoYXJkIHRvIG1ha2Ugd29yay5cbmNvbnN0IGVycm9yRmlsdGVyID0gKGVycm9yOiBhbnksIG5leHRBdHRlbXB0TnVtYmVyOiBudW1iZXIpID0+IHtcbiAgLy8gUmV0cnkgb25seSBpZiB0aGUgZXJyb3IgbWVzc2FnZSBjb250YWlucyBcInR1cGxlIGNvbmN1cnJlbnRseVwiXG4gIC8vIFRoaXMgd2lsbCBjb3ZlciBjb25jdXJyZW50IHVwZGF0ZXMgYW5kIGRlbGV0ZXNcbiAgY29uc3Qgd2lsbFJldHJ5ID0gZXJyb3IubWVzc2FnZS5pbmNsdWRlcyhcInR1cGxlIGNvbmN1cnJlbnRseVwiKVxuICBsb2coXG4gICAgXCJFbmNvdW50ZXJlZCBhbiBlcnJvciBvbiBhdHRlbXB0ICVkLyVkIHJldHJ5PSVzIGVycm9yPVslb11cIixcbiAgICBuZXh0QXR0ZW1wdE51bWJlciAtIDEsXG4gICAgbWF4QXR0ZW1wdHMsXG4gICAgd2lsbFJldHJ5LFxuICAgIGVycm9yXG4gIClcbiAgcmV0dXJuIHdpbGxSZXRyeVxufVxuXG4vKipcbiAqIFBhcnNlIHBhc3N3b3JkIGZpZWxkIGZyb20gc2VjcmV0LiBSZXR1cm5zIHZvaWQgb24gZXJyb3IuXG4gKi9cbmNvbnN0IGdldFBhc3N3b3JkID0gYXN5bmMgKGFybjogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmcgfCB2b2lkPiA9PiB7XG4gIGNvbnN0IHNlY3JldHNfY2xpZW50ID0gbmV3IFNlY3JldHNNYW5hZ2VyQ2xpZW50KHt9KVxuICBjb25zdCBjb21tYW5kID0gbmV3IEdldFNlY3JldFZhbHVlQ29tbWFuZCh7XG4gICAgU2VjcmV0SWQ6IGFybixcbiAgfSlcbiAgY29uc3Qgc2VjcmV0ID0gYXdhaXQgc2VjcmV0c19jbGllbnQuc2VuZChjb21tYW5kKVxuICBpZiAoc2VjcmV0LlNlY3JldFN0cmluZykge1xuICAgIGNvbnN0IGpzb24gPSBKU09OLnBhcnNlKHNlY3JldC5TZWNyZXRTdHJpbmcpXG4gICAgcmV0dXJuIGpzb24ucGFzc3dvcmRcbiAgfVxufVxuIl19
|
package/lib/provider.js
CHANGED
|
@@ -77,7 +77,7 @@ class Provider extends constructs_1.Construct {
|
|
|
77
77
|
}
|
|
78
78
|
exports.Provider = Provider;
|
|
79
79
|
_a = JSII_RTTI_SYMBOL_1;
|
|
80
|
-
Provider[_a] = { fqn: "cdk-rds-sql.Provider", version: "3.
|
|
80
|
+
Provider[_a] = { fqn: "cdk-rds-sql.Provider", version: "3.3.0" };
|
|
81
81
|
function slugify(x) {
|
|
82
82
|
return x.replace(/[^a-zA-Z0-9]/g, "");
|
|
83
83
|
}
|
package/lib/role.js
CHANGED
|
@@ -50,5 +50,5 @@ class Role extends constructs_1.Construct {
|
|
|
50
50
|
}
|
|
51
51
|
exports.Role = Role;
|
|
52
52
|
_a = JSII_RTTI_SYMBOL_1;
|
|
53
|
-
Role[_a] = { fqn: "cdk-rds-sql.Role", version: "3.
|
|
53
|
+
Role[_a] = { fqn: "cdk-rds-sql.Role", version: "3.3.0" };
|
|
54
54
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm9sZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9yb2xlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsNkNBQTJDO0FBRTNDLHVFQUFnRTtBQUNoRSwyQ0FBc0M7QUFHdEMsaUVBQW1FO0FBa0RuRSxNQUFhLElBQUssU0FBUSxzQkFBUztJQVdqQyxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQWdCO1FBQ3hELElBQ0UsQ0FBQyxLQUFLLENBQUMsUUFBUSxJQUFJLEtBQUssQ0FBQyxZQUFZLENBQUM7WUFDdEMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxRQUFRLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDO1lBRXhDLE1BQU0seUNBQXlDLENBQUE7UUFDakQsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQTtRQUNoQixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksMkJBQU0sQ0FBQyxJQUFJLEVBQUUsUUFBUSxFQUFFO1lBQ3ZDLFVBQVUsRUFBRSxLQUFLLENBQUMsVUFBVTtZQUM1QixhQUFhLEVBQUUsS0FBSyxDQUFDLGFBQWE7WUFDbEMsV0FBVyxFQUFFLHNDQUFzQyxLQUFLLENBQUMsUUFBUSxFQUFFO1lBQ25FLG9CQUFvQixFQUFFO2dCQUNwQixjQUFjLEVBQUUsRUFBRTtnQkFDbEIsb0JBQW9CLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQztvQkFDbkMsbUJBQW1CLEVBQUUsS0FBSyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsaUJBQWlCO29CQUM3RCxNQUFNLEVBQUUsVUFBVTtvQkFDbEIsSUFBSSxFQUFFLEtBQUssQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQyxRQUFRO29CQUNyRCxJQUFJLEVBQUUsS0FBSyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDLElBQUk7b0JBQ2pELFFBQVEsRUFBRSxLQUFLLENBQUMsUUFBUTtvQkFDeEIsTUFBTSxFQUFFLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsWUFBWTtpQkFDMUUsQ0FBQztnQkFDRixpQkFBaUIsRUFBRSxVQUFVO2dCQUM3QixpQkFBaUIsRUFBRSwrQkFBK0I7YUFDbkQ7WUFDRCxhQUFhLEVBQUUsMkJBQWEsQ0FBQyxPQUFPO1NBQ3JDLENBQUMsQ0FBQTtRQUNGLE1BQU0sSUFBSSxHQUFHLElBQUksMkJBQWtCLENBQUMsSUFBSSxFQUFFLGNBQWMsRUFBRTtZQUN4RCxRQUFRLEVBQUUsS0FBSyxDQUFDLFFBQVE7WUFDeEIsUUFBUSxFQUFFLEtBQUssQ0FBQyxRQUFRO1lBQ3hCLFdBQVcsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVM7WUFDbEMsUUFBUSxFQUFFLEtBQUssQ0FBQyxRQUFRO1lBQ3hCLFlBQVksRUFBRSxLQUFLLENBQUMsWUFBWTtTQUNqQyxDQUFDLENBQUE7UUFDRixJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUE7UUFDcEMsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFBO1FBQzlCLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUE7UUFDN0MsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsRUFBRTtZQUM3QixnREFBZ0Q7WUFDaEQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUE7U0FDL0Q7SUFDSCxDQUFDOztBQW5ESCxvQkFvREMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBSZW1vdmFsUG9saWN5IH0gZnJvbSBcImF3cy1jZGstbGliXCJcbmltcG9ydCAqIGFzIGttcyBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWttc1wiXG5pbXBvcnQgeyBJU2VjcmV0LCBTZWNyZXQgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLXNlY3JldHNtYW5hZ2VyXCJcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCJcbmltcG9ydCB7IElEYXRhYmFzZSB9IGZyb20gXCIuL2RhdGFiYXNlXCJcbmltcG9ydCB7IFByb3ZpZGVyIH0gZnJvbSBcIi4vcHJvdmlkZXJcIlxuaW1wb3J0IHsgUm9sZSBhcyBDdXN0b21SZXNvdXJjZVJvbGUgfSBmcm9tIFwiLi9yb2xlLmN1c3RvbS1yZXNvdXJjZVwiXG5cbmV4cG9ydCBpbnRlcmZhY2UgUm9sZVByb3BzIHtcbiAgLyoqXG4gICAqIFByb3ZpZGVyLlxuICAgKi9cbiAgcmVhZG9ubHkgcHJvdmlkZXI6IFByb3ZpZGVyXG5cbiAgLyoqXG4gICAqIFNRTC5cbiAgICovXG4gIHJlYWRvbmx5IHJvbGVOYW1lOiBzdHJpbmdcblxuICAvKipcbiAgICogT3B0aW9uYWwgZGF0YWJhc2UgdGhpcyB1c2VyIGlzIGV4cGVjdGVkIHRvIHVzZS5cbiAgICpcbiAgICogSWYgdGhlIGRhdGFiYXNlIGV4aXN0cywgY29ubmVjdCBwcml2aWxlZ2VzIGFyZSBncmFudGVkLlxuICAgKlxuICAgKiBTcGVjaWZ5IG5vbmUgb2YgYGRhdGFiYXNlYCBvciBgZGF0YWJhc2VOYW1lYCBvciBvbmx5IG9uZSBvZiB0aGVtLlxuICAgKlxuICAgKiBAZGVmYXVsdCBubyBjb25uZWN0aW9uIHRvIGFueSBkYXRhYmFzZSBpcyBncmFudGVkXG4gICAqL1xuICByZWFkb25seSBkYXRhYmFzZT86IElEYXRhYmFzZVxuXG4gIC8qKlxuICAgKiBPcHRpb25hbCBkYXRhYmFzZSBuYW1lIHRoaXMgdXNlciBpcyBleHBlY3RlZCB0byB1c2UuXG4gICAqXG4gICAqIElmIHRoZSBkYXRhYmFzZSBleGlzdHMsIGNvbm5lY3QgcHJpdmlsZWdlcyBhcmUgZ3JhbnRlZC5cbiAgICpcbiAgICogU3BlY2lmeSBub25lIG9mIGBkYXRhYmFzZWAgb3IgYGRhdGFiYXNlTmFtZWAgb3Igb25seSBvbmUgb2YgdGhlbS5cbiAgICpcbiAgICogQGRlZmF1bHQgbm8gY29ubmVjdGlvbiB0byBhbnkgZGF0YWJhc2UgaXMgZ3JhbnRlZFxuICAgKi9cbiAgcmVhZG9ubHkgZGF0YWJhc2VOYW1lPzogc3RyaW5nXG5cbiAgLyoqXG4gICAqIEEgbmV3IHNlY3JldCBpcyBjcmVhdGVkIGZvciB0aGlzIHVzZXIuXG4gICAqXG4gICAqIE9wdGlvbmFsbHkgZW5jcnlwdCBpdCB3aXRoIHRoZSBnaXZlbiBrZXkuXG4gICAqL1xuICByZWFkb25seSBlbmNyeXB0aW9uS2V5Pzoga21zLklLZXlcblxuICAvKipcbiAgICogQSBuZXcgc2VjcmV0IGlzIGNyZWF0ZWQgZm9yIHRoaXMgdXNlci5cbiAgICpcbiAgICogT3B0aW9uYWxseSBhZGQgc2VjcmV0IG5hbWUgdG8gdGhlIHNlY3JldC5cbiAgICovXG4gIHJlYWRvbmx5IHNlY3JldE5hbWU/OiBzdHJpbmdcbn1cblxuZXhwb3J0IGNsYXNzIFJvbGUgZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuICAvKipcbiAgICogVGhlIHJvbGUgbmFtZS5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSByb2xlTmFtZTogc3RyaW5nXG5cbiAgLyoqXG4gICAqIFRoZSBnZW5lcmF0ZWQgc2VjcmV0LlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHNlY3JldDogSVNlY3JldFxuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBSb2xlUHJvcHMpIHtcbiAgICBpZiAoXG4gICAgICAocHJvcHMuZGF0YWJhc2UgJiYgcHJvcHMuZGF0YWJhc2VOYW1lKSB8fFxuICAgICAgKCFwcm9wcy5kYXRhYmFzZSAmJiAhcHJvcHMuZGF0YWJhc2VOYW1lKVxuICAgIClcbiAgICAgIHRocm93IFwiU3BlY2lmeSBlaXRoZXIgZGF0YWJhc2Ugb3IgZGF0YWJhc2VOYW1lXCJcbiAgICBzdXBlcihzY29wZSwgaWQpXG4gICAgdGhpcy5zZWNyZXQgPSBuZXcgU2VjcmV0KHRoaXMsIFwiU2VjcmV0XCIsIHtcbiAgICAgIHNlY3JldE5hbWU6IHByb3BzLnNlY3JldE5hbWUsXG4gICAgICBlbmNyeXB0aW9uS2V5OiBwcm9wcy5lbmNyeXB0aW9uS2V5LFxuICAgICAgZGVzY3JpcHRpb246IGBHZW5lcmF0ZWQgc2VjcmV0IGZvciBwb3N0Z3JlcyByb2xlICR7cHJvcHMucm9sZU5hbWV9YCxcbiAgICAgIGdlbmVyYXRlU2VjcmV0U3RyaW5nOiB7XG4gICAgICAgIHBhc3N3b3JkTGVuZ3RoOiAzMCwgLy8gT3JhY2xlIHBhc3N3b3JkIGNhbm5vdCBoYXZlIG1vcmUgdGhhbiAzMCBjaGFyYWN0ZXJzXG4gICAgICAgIHNlY3JldFN0cmluZ1RlbXBsYXRlOiBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgZGJDbHVzdGVySWRlbnRpZmllcjogcHJvcHMucHJvdmlkZXIuY2x1c3Rlci5jbHVzdGVySWRlbnRpZmllcixcbiAgICAgICAgICBlbmdpbmU6IFwicG9zdGdyZXNcIixcbiAgICAgICAgICBob3N0OiBwcm9wcy5wcm92aWRlci5jbHVzdGVyLmNsdXN0ZXJFbmRwb2ludC5ob3N0bmFtZSxcbiAgICAgICAgICBwb3J0OiBwcm9wcy5wcm92aWRlci5jbHVzdGVyLmNsdXN0ZXJFbmRwb2ludC5wb3J0LFxuICAgICAgICAgIHVzZXJuYW1lOiBwcm9wcy5yb2xlTmFtZSxcbiAgICAgICAgICBkYm5hbWU6IHByb3BzLmRhdGFiYXNlID8gcHJvcHMuZGF0YWJhc2UuZGF0YWJhc2VOYW1lIDogcHJvcHMuZGF0YWJhc2VOYW1lLFxuICAgICAgICB9KSxcbiAgICAgICAgZ2VuZXJhdGVTdHJpbmdLZXk6IFwicGFzc3dvcmRcIixcbiAgICAgICAgZXhjbHVkZUNoYXJhY3RlcnM6IFwiICUrfmAjJCYqKCl8W117fTo7PD4/IScvQFxcXCJcXFxcXCIsXG4gICAgICB9LFxuICAgICAgcmVtb3ZhbFBvbGljeTogUmVtb3ZhbFBvbGljeS5ERVNUUk9ZLFxuICAgIH0pXG4gICAgY29uc3Qgcm9sZSA9IG5ldyBDdXN0b21SZXNvdXJjZVJvbGUodGhpcywgXCJQb3N0Z3Jlc1JvbGVcIiwge1xuICAgICAgcHJvdmlkZXI6IHByb3BzLnByb3ZpZGVyLFxuICAgICAgcm9sZU5hbWU6IHByb3BzLnJvbGVOYW1lLFxuICAgICAgcGFzc3dvcmRBcm46IHRoaXMuc2VjcmV0LnNlY3JldEFybixcbiAgICAgIGRhdGFiYXNlOiBwcm9wcy5kYXRhYmFzZSxcbiAgICAgIGRhdGFiYXNlTmFtZTogcHJvcHMuZGF0YWJhc2VOYW1lLFxuICAgIH0pXG4gICAgcm9sZS5ub2RlLmFkZERlcGVuZGVuY3kodGhpcy5zZWNyZXQpXG4gICAgdGhpcy5yb2xlTmFtZSA9IHByb3BzLnJvbGVOYW1lXG4gICAgdGhpcy5zZWNyZXQuZ3JhbnRSZWFkKHByb3BzLnByb3ZpZGVyLmhhbmRsZXIpXG4gICAgaWYgKHRoaXMuc2VjcmV0LmVuY3J5cHRpb25LZXkpIHtcbiAgICAgIC8vIEl0IHNlZW1zIHdlIG5lZWQgdG8gZ3JhbnQgZXhwbGljaXQgcGVybWlzc2lvblxuICAgICAgdGhpcy5zZWNyZXQuZW5jcnlwdGlvbktleS5ncmFudERlY3J5cHQocHJvcHMucHJvdmlkZXIuaGFuZGxlcilcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
package/lib/schema.js
CHANGED
|
@@ -24,5 +24,5 @@ class Schema extends aws_cdk_lib_1.CustomResource {
|
|
|
24
24
|
}
|
|
25
25
|
exports.Schema = Schema;
|
|
26
26
|
_a = JSII_RTTI_SYMBOL_1;
|
|
27
|
-
Schema[_a] = { fqn: "cdk-rds-sql.Schema", version: "3.
|
|
27
|
+
Schema[_a] = { fqn: "cdk-rds-sql.Schema", version: "3.3.0" };
|
|
28
28
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NoZW1hLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3NjaGVtYS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLDZDQUE0QztBQUc1QyxpQ0FBdUM7QUFzQnZDLE1BQWEsTUFBTyxTQUFRLDRCQUFjO0lBR3hDLFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBa0I7UUFDMUQsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUU7WUFDZixZQUFZLEVBQUUsS0FBSyxDQUFDLFFBQVEsQ0FBQyxZQUFZO1lBQ3pDLFVBQVUsRUFBRTtnQkFDVixRQUFRLEVBQUUscUJBQWMsQ0FBQyxNQUFNO2dCQUMvQixVQUFVLEVBQUUsS0FBSyxDQUFDLFVBQVU7Z0JBQzVCLFNBQVMsRUFBRSxLQUFLLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxTQUFTO2dCQUMxQyxZQUFZLEVBQUUsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLFNBQVM7YUFDdkU7U0FDRixDQUFDLENBQUE7UUFDRixJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUE7UUFDdkMsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUMsVUFBVSxDQUFBO1FBQ2xDLElBQUksS0FBSyxDQUFDLFFBQVE7WUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUE7SUFDN0QsQ0FBQzs7QUFoQkgsd0JBaUJDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ3VzdG9tUmVzb3VyY2UgfSBmcm9tIFwiYXdzLWNkay1saWJcIlxuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIlxuaW1wb3J0IHsgSURhdGFiYXNlIH0gZnJvbSBcIi4vZGF0YWJhc2VcIlxuaW1wb3J0IHsgUmRzU3FsUmVzb3VyY2UgfSBmcm9tIFwiLi9lbnVtXCJcbmltcG9ydCB7IFByb3ZpZGVyIH0gZnJvbSBcIi4vcHJvdmlkZXJcIlxuXG5leHBvcnQgaW50ZXJmYWNlIFNjaGVtYVByb3BzIHtcbiAgLyoqXG4gICAqIFByb3ZpZGVyLlxuICAgKi9cbiAgcmVhZG9ubHkgcHJvdmlkZXI6IFByb3ZpZGVyXG5cbiAgLyoqXG4gICAqIE9wdGlvbmFsIGRhdGFiYXNlLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIHVzZSBkZWZhdWx0IGRhdGFiYXNlXG4gICAqL1xuICByZWFkb25seSBkYXRhYmFzZT86IElEYXRhYmFzZVxuXG4gIC8qKlxuICAgKiBTY2hlbWEgbmFtZS5cbiAgICovXG4gIHJlYWRvbmx5IHNjaGVtYU5hbWU6IHN0cmluZ1xufVxuXG5leHBvcnQgY2xhc3MgU2NoZW1hIGV4dGVuZHMgQ3VzdG9tUmVzb3VyY2Uge1xuICBwdWJsaWMgcmVhZG9ubHkgc2NoZW1hTmFtZTogc3RyaW5nXG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IFNjaGVtYVByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCB7XG4gICAgICBzZXJ2aWNlVG9rZW46IHByb3BzLnByb3ZpZGVyLnNlcnZpY2VUb2tlbixcbiAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgUmVzb3VyY2U6IFJkc1NxbFJlc291cmNlLlNDSEVNQSxcbiAgICAgICAgUmVzb3VyY2VJZDogcHJvcHMuc2NoZW1hTmFtZSxcbiAgICAgICAgU2VjcmV0QXJuOiBwcm9wcy5wcm92aWRlci5zZWNyZXQuc2VjcmV0QXJuLFxuICAgICAgICBEYXRhYmFzZU5hbWU6IHByb3BzLmRhdGFiYXNlID8gcHJvcHMuZGF0YWJhc2UuZGF0YWJhc2VOYW1lIDogdW5kZWZpbmVkLFxuICAgICAgfSxcbiAgICB9KVxuICAgIHRoaXMubm9kZS5hZGREZXBlbmRlbmN5KHByb3BzLnByb3ZpZGVyKVxuICAgIHRoaXMuc2NoZW1hTmFtZSA9IHByb3BzLnNjaGVtYU5hbWVcbiAgICBpZiAocHJvcHMuZGF0YWJhc2UpIHRoaXMubm9kZS5hZGREZXBlbmRlbmN5KHByb3BzLmRhdGFiYXNlKVxuICB9XG59XG4iXX0=
|
package/lib/sql.d.ts
CHANGED
|
@@ -17,6 +17,10 @@ export interface SqlProps {
|
|
|
17
17
|
* SQL.
|
|
18
18
|
*/
|
|
19
19
|
readonly statement?: string;
|
|
20
|
+
/**
|
|
21
|
+
* Optional statment to be executed when the resource is deleted
|
|
22
|
+
*/
|
|
23
|
+
readonly rollback?: string;
|
|
20
24
|
}
|
|
21
25
|
export declare class Sql extends CustomResource {
|
|
22
26
|
constructor(scope: Construct, id: string, props: SqlProps);
|
package/lib/sql.js
CHANGED
|
@@ -14,6 +14,7 @@ class Sql extends aws_cdk_lib_1.CustomResource {
|
|
|
14
14
|
SecretArn: props.provider.secret.secretArn,
|
|
15
15
|
DatabaseName: props.database ? props.database.databaseName : undefined,
|
|
16
16
|
Statement: props.statement,
|
|
17
|
+
Rollback: props.rollback,
|
|
17
18
|
},
|
|
18
19
|
});
|
|
19
20
|
this.node.addDependency(props.provider);
|
|
@@ -23,5 +24,5 @@ class Sql extends aws_cdk_lib_1.CustomResource {
|
|
|
23
24
|
}
|
|
24
25
|
exports.Sql = Sql;
|
|
25
26
|
_a = JSII_RTTI_SYMBOL_1;
|
|
26
|
-
Sql[_a] = { fqn: "cdk-rds-sql.Sql", version: "3.
|
|
27
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
27
|
+
Sql[_a] = { fqn: "cdk-rds-sql.Sql", version: "3.3.0" };
|
|
28
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3FsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3NxbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLDZDQUE0QztBQUc1QyxpQ0FBdUM7QUEyQnZDLE1BQWEsR0FBSSxTQUFRLDRCQUFjO0lBQ3JDLFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBZTtRQUN2RCxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRTtZQUNmLFlBQVksRUFBRSxLQUFLLENBQUMsUUFBUSxDQUFDLFlBQVk7WUFDekMsVUFBVSxFQUFFO2dCQUNWLFFBQVEsRUFBRSxxQkFBYyxDQUFDLEdBQUc7Z0JBQzVCLFNBQVMsRUFBRSxLQUFLLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxTQUFTO2dCQUMxQyxZQUFZLEVBQUUsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLFNBQVM7Z0JBQ3RFLFNBQVMsRUFBRSxLQUFLLENBQUMsU0FBUztnQkFDMUIsUUFBUSxFQUFFLEtBQUssQ0FBQyxRQUFRO2FBQ3pCO1NBQ0YsQ0FBQyxDQUFBO1FBQ0YsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFBO1FBQ3ZDLElBQUksS0FBSyxDQUFDLFFBQVE7WUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUE7SUFDN0QsQ0FBQzs7QUFkSCxrQkFlQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEN1c3RvbVJlc291cmNlIH0gZnJvbSBcImF3cy1jZGstbGliXCJcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCJcbmltcG9ydCB7IElEYXRhYmFzZSB9IGZyb20gXCIuL2RhdGFiYXNlXCJcbmltcG9ydCB7IFJkc1NxbFJlc291cmNlIH0gZnJvbSBcIi4vZW51bVwiXG5pbXBvcnQgeyBQcm92aWRlciB9IGZyb20gXCIuL3Byb3ZpZGVyXCJcblxuZXhwb3J0IGludGVyZmFjZSBTcWxQcm9wcyB7XG4gIC8qKlxuICAgKiBQcm92aWRlci5cbiAgICovXG4gIHJlYWRvbmx5IHByb3ZpZGVyOiBQcm92aWRlclxuXG4gIC8qKlxuICAgKiBPcHRpb25hbCBkYXRhYmFzZS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSB1c2UgZGVmYXVsdCBkYXRhYmFzZVxuICAgKi9cbiAgcmVhZG9ubHkgZGF0YWJhc2U/OiBJRGF0YWJhc2VcblxuICAvKipcbiAgICogU1FMLlxuICAgKi9cbiAgcmVhZG9ubHkgc3RhdGVtZW50Pzogc3RyaW5nXG5cbiAgLyoqXG4gICAqIE9wdGlvbmFsIHN0YXRtZW50IHRvIGJlIGV4ZWN1dGVkIHdoZW4gdGhlIHJlc291cmNlIGlzIGRlbGV0ZWRcbiAgICovXG4gIHJlYWRvbmx5IHJvbGxiYWNrPzogc3RyaW5nXG59XG5cbmV4cG9ydCBjbGFzcyBTcWwgZXh0ZW5kcyBDdXN0b21SZXNvdXJjZSB7XG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBTcWxQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwge1xuICAgICAgc2VydmljZVRva2VuOiBwcm9wcy5wcm92aWRlci5zZXJ2aWNlVG9rZW4sXG4gICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgIFJlc291cmNlOiBSZHNTcWxSZXNvdXJjZS5TUUwsXG4gICAgICAgIFNlY3JldEFybjogcHJvcHMucHJvdmlkZXIuc2VjcmV0LnNlY3JldEFybixcbiAgICAgICAgRGF0YWJhc2VOYW1lOiBwcm9wcy5kYXRhYmFzZSA/IHByb3BzLmRhdGFiYXNlLmRhdGFiYXNlTmFtZSA6IHVuZGVmaW5lZCxcbiAgICAgICAgU3RhdGVtZW50OiBwcm9wcy5zdGF0ZW1lbnQsXG4gICAgICAgIFJvbGxiYWNrOiBwcm9wcy5yb2xsYmFjayxcbiAgICAgIH0sXG4gICAgfSlcbiAgICB0aGlzLm5vZGUuYWRkRGVwZW5kZW5jeShwcm9wcy5wcm92aWRlcilcbiAgICBpZiAocHJvcHMuZGF0YWJhc2UpIHRoaXMubm9kZS5hZGREZXBlbmRlbmN5KHByb3BzLmRhdGFiYXNlKVxuICB9XG59XG4iXX0=
|