@fjall/components-infrastructure 0.1.37 → 0.1.39
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/lib/patterns/aws/database.d.ts +2 -2
- package/dist/lib/patterns/aws/database.js +2 -2
- package/dist/lib/patterns/aws/ec2.js +13 -9
- package/dist/lib/resources/aws/compute/ecs.js +2 -2
- package/dist/lib/resources/aws/compute/ecsFreeTier.js +2 -2
- package/dist/lib/resources/aws/compute/ecsSpot.js +2 -2
- package/dist/lib/resources/aws/networking/index.d.ts +2 -1
- package/dist/lib/resources/aws/networking/index.js +3 -2
- package/dist/lib/resources/aws/networking/vpcEndpoint.d.ts +20 -0
- package/dist/lib/resources/aws/networking/vpcEndpoint.js +61 -0
- package/package.json +3 -3
- package/dist/lib/config/aws/identityCenterUser.d.ts +0 -16
- package/dist/lib/config/aws/identityCenterUser.js +0 -125
- package/dist/lib/resources/aws/awsStack.d.ts +0 -41
- package/dist/lib/resources/aws/awsStack.js +0 -96
- package/dist/lib/resources/aws/database/rds.d.ts +0 -23
- package/dist/lib/resources/aws/database/rds.js +0 -130
- package/dist/lib/utils/usersConfig.d.ts +0 -7
- package/dist/lib/utils/usersConfig.js +0 -18
|
@@ -51,7 +51,7 @@ class Ec2Cluster extends constructs_1.Construct {
|
|
|
51
51
|
this.cluster = new aws_ecs_1.Cluster(this, `${props.clusterName}`, {
|
|
52
52
|
vpc: props.vpc,
|
|
53
53
|
clusterName: props.clusterName,
|
|
54
|
-
|
|
54
|
+
containerInsightsV2: aws_ecs_1.ContainerInsights.ENABLED
|
|
55
55
|
});
|
|
56
56
|
(0, tagResource_1.default)(this.cluster, props.tags);
|
|
57
57
|
}
|
|
@@ -331,4 +331,4 @@ class Ec2Cluster extends constructs_1.Construct {
|
|
|
331
331
|
}
|
|
332
332
|
}
|
|
333
333
|
exports.default = Ec2Cluster;
|
|
334
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWNzU3BvdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYi9yZXNvdXJjZXMvYXdzL2NvbXB1dGUvZWNzU3BvdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxpREFhNkI7QUFDN0IsaURBTzZCO0FBQzdCLDJDQUF1QztBQUV2Qyw2Q0FBd0Q7QUFDeEQsdUZBS2dEO0FBQ2hELDREQUFxRDtBQUNyRCxpREFRNkI7QUFDN0IsdUZBS2dEO0FBQ2hELGlEQUEwRDtBQUMxRCx1RUFBd0Q7QUFDeEQsK0VBRzRDO0FBQzVDLHlEQUtpQztBQUNqQyx5RUFBcUU7QUFDckUsaURBQWlEO0FBQ2pELGlFQUEyRTtBQUUzRSx3REFBcUQ7QUFDckQsc0VBQW1FO0FBQ25FLG1FQUFrRTtBQUNsRSxzREFBbUQ7QUFFbkQsSUFBWSxXQUdYO0FBSEQsV0FBWSxXQUFXO0lBQ3JCLHNEQUEwRCxDQUFBO0lBQzFELDREQUFnRSxDQUFBO0FBQ2xFLENBQUMsRUFIVyxXQUFXLDJCQUFYLFdBQVcsUUFHdEI7QUFpQ0QsTUFBcUIsVUFBVyxTQUFRLHNCQUFTO0lBdUIvQyxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQXNCO1FBQzlELEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFMWCxZQUFPLEdBRVgsRUFBRSxDQUFDO1FBS0wsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN2QixJQUFJLENBQUMsbUJBQW1CLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDaEMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN2QixJQUFJLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDN0IsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzlCLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNuQyxJQUFJLENBQUMsYUFBYSxD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QztJQUNKLENBQUM7Q0FDRjtBQS9hRCw2QkErYUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBd3NMb2dEcml2ZXIsXG4gIENsdXN0ZXIgYXMgQ2RrQ2x1c3RlcixcbiAgQ29udGFpbmVySW1hZ2UsXG4gIEVjMlNlcnZpY2UsXG4gIEVjMlRhc2tEZWZpbml0aW9uLFxuICBMaXN0ZW5lckNvbmZpZyxcbiAgUmVwb3NpdG9yeUltYWdlLFxuICBDb250YWluZXJEZWZpbml0aW9uLFxuICBQbGFjZW1lbnRTdHJhdGVneSxcbiAgQXNnQ2FwYWNpdHlQcm92aWRlcixcbiAgRWNzT3B0aW1pemVkSW1hZ2UsXG4gIEFtaUhhcmR3YXJlVHlwZVxufSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWVjc1wiO1xuaW1wb3J0IHtcbiAgQ29ubmVjdGlvbnMsXG4gIElDb25uZWN0YWJsZSxcbiAgSW5zdGFuY2VUeXBlLFxuICBJVnBjLFxuICBQb3J0LFxuICBTdWJuZXRUeXBlXG59IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtZWMyXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IHsgU3RhY2tCdWlsZGVyIH0gZnJvbSBcIi4uL2Jhc2UvYXdzU3RhY2tcIjtcbmltcG9ydCB7IER1cmF0aW9uLCBGbiwgU2VjcmV0VmFsdWUgfSBmcm9tIFwiYXdzLWNkay1saWJcIjtcbmltcG9ydCB7XG4gIEFwcGxpY2F0aW9uTGlzdGVuZXIsXG4gIEFwcGxpY2F0aW9uTG9hZEJhbGFuY2VyLFxuICBBcHBsaWNhdGlvblByb3RvY29sLFxuICBCYXNlQXBwbGljYXRpb25MaXN0ZW5lclByb3BzXG59IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtZWxhc3RpY2xvYWRiYWxhbmNpbmd2MlwiO1xuaW1wb3J0IHRhZ1Jlc291cmNlIGZyb20gXCIuLi8uLi8uLi91dGlscy90YWdSZXNvdXJjZVwiO1xuaW1wb3J0IHtcbiAgQ29tcG9zaXRlUHJpbmNpcGFsLFxuICBFZmZlY3QsXG4gIElNYW5hZ2VkUG9saWN5LFxuICBQb2xpY3lEb2N1bWVudCxcbiAgUG9saWN5U3RhdGVtZW50LFxuICBSb2xlLFxuICBTZXJ2aWNlUHJpbmNpcGFsXG59IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtaWFtXCI7XG5pbXBvcnQge1xuICBQcmVkZWZpbmVkTWV0cmljLFxuICBTY2FsYWJsZVRhcmdldCxcbiAgU2VydmljZU5hbWVzcGFjZSxcbiAgVGFyZ2V0VHJhY2tpbmdTY2FsaW5nUG9saWN5XG59IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtYXBwbGljYXRpb25hdXRvc2NhbGluZ1wiO1xuaW1wb3J0IHsgU2VjcmV0IGFzIEVjc1NlY3JldCB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtZWNzXCI7XG5pbXBvcnQgeyBTZWNyZXQgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLXNlY3JldHNtYW5hZ2VyXCI7XG5pbXBvcnQge1xuICBDZXJ0aWZpY2F0ZSxcbiAgQ2VydGlmaWNhdGVWYWxpZGF0aW9uXG59IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtY2VydGlmaWNhdGVtYW5hZ2VyXCI7XG5pbXBvcnQge1xuICBBUmVjb3JkLFxuICBIb3N0ZWRab25lLFxuICBSZWNvcmRUYXJnZXQsXG4gIElIb3N0ZWRab25lXG59IGZyb20gXCJhd3MtY2RrLWxpYi9hd3Mtcm91dGU1M1wiO1xuaW1wb3J0IHsgTG9hZEJhbGFuY2VyVGFyZ2V0IH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1yb3V0ZTUzLXRhcmdldHNcIjtcbmltcG9ydCB7IFJlcG9zaXRvcnkgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWVjclwiO1xuaW1wb3J0IHsgQXV0b1NjYWxpbmdHcm91cCwgTW9uaXRvcmluZyB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtYXV0b3NjYWxpbmdcIjtcbmltcG9ydCB7IEtleVZhbHVlIH0gZnJvbSBcIi4uLy4uLy4uL3R5cGVzXCI7XG5pbXBvcnQgeyBTZWN1cml0eUdyb3VwIH0gZnJvbSBcIi4uL2lhbS9zZWN1cml0eUdyb3VwXCI7XG5pbXBvcnQgeyBBd3NDdXN0b21SZXNvdXJjZSB9IGZyb20gXCIuLi91dGlsaXRpZXMvYXdzQ3VzdG9tUmVzb3VyY2VcIjtcbmltcG9ydCB7IFBoeXNpY2FsUmVzb3VyY2VJZCB9IGZyb20gXCJhd3MtY2RrLWxpYi9jdXN0b20tcmVzb3VyY2VzXCI7XG5pbXBvcnQgeyBDZm5PdXRwdXQgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL2Nmbk91dHB1dFwiO1xuXG5leHBvcnQgZW51bSBTY2FsaW5nVHlwZSB7XG4gIENQVSA9IFByZWRlZmluZWRNZXRyaWMuRUNTX1NFUlZJQ0VfQVZFUkFHRV9DUFVfVVRJTElaQVRJT04sXG4gIE1FTU9SWSA9IFByZWRlZmluZWRNZXRyaWMuRUNTX1NFUlZJQ0VfQVZFUkFHRV9NRU1PUllfVVRJTElaQVRJT05cbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb250YWluZXJTZWNyZXQge1xuICBba2V5OiBzdHJpbmddOiBTZWNyZXRWYWx1ZTtcbn1cblxudHlwZSBFYzJDbHVzdGVyUHJvcHMgPSB7XG4gIGVjclJlcG9zaXRvcnk6IFJlcG9zaXRvcnkgfCBSZXBvc2l0b3J5SW1hZ2UgfCBzdHJpbmc7XG4gIGNsdXN0ZXJOYW1lOiBzdHJpbmc7XG4gIGNvbnRhaW5lckVudHJ5UG9pbnQ/OiBzdHJpbmdbXTtcbiAgY29udGFpbmVyQ29tbWFuZD86IHN0cmluZ1tdO1xuICBjb250YWluZXJFbnZpcm9ubWVudD86IEtleVZhbHVlO1xuICBjb250YWluZXJTZWNyZXRzPzogQ29udGFpbmVyU2VjcmV0O1xuICAvLyBUT0RPOiBDb250YWluZXIgUG9ydCBzaG91bGQgYmUgc2V0IGluIHJhd1Byb3BzXG4gIGNvbnRhaW5lclBvcnQ/OiBudW1iZXI7XG4gIGNwdT86IG51bWJlcjtcbiAgZGF0YWJhc2VDb25uZWN0aW9uOiBJQ29ubmVjdGFibGU7XG4gIHBhcmVudERvbWFpbj86IHN0cmluZzsgLy8gVE9ETzogQnJlYWsgb3V0IGEgSFRUUCBhbmQgSFRUUFMgc2VydmljZSB3aGVyZSB0aGlzIGlzIG9wdGlvbmFsXG4gIGRlc2lyZWRDb3VudD86IG51bWJlcjtcbiAgaGVhbHRoQ2hlY2tQYXRoPzogc3RyaW5nO1xuICBsaXN0ZW5lclBvcnQ/OiBudW1iZXI7XG4gIG1lbW9yeUxpbWl0TWlCPzogbnVtYmVyO1xuICBwdWJsaWNMb2FkQmFsYW5jZXI/OiBib29sZWFuO1xuICBzY2FsaW5nVHlwZT86IFNjYWxpbmdUeXBlO1xuICBzZXJ2aWNlTmFtZTogc3RyaW5nO1xuICB0YWdzOiBLZXlWYWx1ZTtcbiAgdGFza1JvbGVJbmxpbmVQb2xpY2llcz86IHtcbiAgICBbbmFtZTogc3RyaW5nXTogUG9saWN5RG9jdW1lbnQ7XG4gIH07XG4gIHRhc2tSb2xlTWFuYWdlZFBvbGljaWVzPzogSU1hbmFnZWRQb2xpY3lbXTtcbiAgdnBjPzogSVZwYztcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEVjMkNsdXN0ZXIgZXh0ZW5kcyBDb25zdHJ1Y3QgaW1wbGVtZW50cyBJQ29ubmVjdGFibGUge1xuICBwdWJsaWMgY29ubmVjdGlvbnM6IENvbm5lY3Rpb25zO1xuXG4gIHByaXZhdGUgY2x1c3RlcjogQ2RrQ2x1c3RlcjtcbiAgcHJpdmF0ZSBhdXRvU2NhbGluZ0dyb3VwOiBBdXRvU2NhbGluZ0dyb3VwO1xuICBwcml2YXRlIGFzZ1NlY3VyaXR5R3JvdXA6IFNlY3VyaXR5R3JvdXA7XG4gIHByaXZhdGUgYXNnQ2FwYWNpdHlQcm92aWRlcjogQXNnQ2FwYWNpdHlQcm92aWRlcjtcbiAgcHJpdmF0ZSBsb2FkQmFsYW5jZXI6IEFwcGxpY2F0aW9uTG9hZEJhbGFuY2VyO1xuICBwcml2YXRlIGxvYWRCYWxhbmNlclNlY3VyaXR5R3JvdXA6IFNlY3VyaXR5R3JvdXA7XG4gIHByaXZhdGUgbG9hZEJhbGFuY2VyTGlzdGVuZXI6IEFwcGxpY2F0aW9uTGlzdGVuZXI7XG4gIHByaXZhdGUgZXhlY3V0aW9uUm9sZTogUm9sZTtcbiAgcHJpdmF0ZSB0YXNrRGVmaW5pdGlvbjogRWMyVGFza0RlZmluaXRpb247XG4gIHByaXZhdGUgY29udGFpbmVyRGVmaW5pdGlvbjogQ29udGFpbmVyRGVmaW5pdGlvbjtcbiAgcHJpdmF0ZSBlYzJTZXJ2aWNlOiBFYzJTZXJ2aWNlO1xuICBwcml2YXRlIHNjYWxpbmdQb2xpY3k6IFRhcmdldFRyYWNraW5nU2NhbGluZ1BvbGljeTtcbiAgcHJpdmF0ZSBob3N0ZWRab25lOiBJSG9zdGVkWm9uZTtcbiAgcHJpdmF0ZSBjZXJ0aWZpY2F0ZTogQ2VydGlmaWNhdGU7XG4gIHByaXZhdGUgYVJlY29yZDogQVJlY29yZDtcblxuICBwcml2YXRlIHNlY3JldHM6IHtcbiAgICBba2V5OiBzdHJpbmddOiBFY3NTZWNyZXQ7XG4gIH0gPSB7fTtcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogRWMyQ2x1c3RlclByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIHRoaXMuYWRkQ2x1c3Rlcihwcm9wcyk7XG4gICAgdGhpcy5hZGRBdXRvU2NhbGluZ0dyb3VwKHByb3BzKTtcbiAgICB0aGlzLmFkZFNlY3JldHMocHJvcHMpO1xuICAgIHRoaXMuYWRkRXhlY3V0aW9uUm9sZShwcm9wcyk7XG4gICAgdGhpcy5hZGRUYXNrRGVmaW5pdGlvbihwcm9wcyk7XG4gICAgdGhpcy5hZGRDb250YWluZXJEZWZpbml0aW9uKHByb3BzKTtcbiAgICB0aGlzLmFkZEVjMlNlcnZpY2UocHJvcHMpO1xuICAgIHRoaXMuYWRkTG9hZEJhbGFuY2VyKHByb3BzKTtcbiAgICB0aGlzLnJlbW92ZUF1dG9TY2FsaW5nR3JvdXAoKTtcbiAgICB0aGlzLmFkZExvYWRCYWxhbmNlckxpc3RlbmVyKHByb3BzKTtcbiAgICB0aGlzLnJlZ2lzdGVyTG9hZEJhbGFuY2VyVGFyZ2V0cyhwcm9wcyk7XG5cbiAgICBpZiAoISFwcm9wcy5wYXJlbnREb21haW4pIHRoaXMuYWRkSG9zdGVkWm9uZShwcm9wcyk7XG5cbiAgICAvLyB0b2RvOiBmaXggY29ubmVjdGlvbnMgbm90IHdvcmtpbmcgYXV0b21hdGljYWxseVxuICAgIGlmIChwcm9wcy5kYXRhYmFzZUNvbm5lY3Rpb24pIHtcbiAgICAgIHRoaXMuYXV0b1NjYWxpbmdHcm91cC5jb25uZWN0aW9ucy5hbGxvd1RvKFxuICAgICAgICBwcm9wcy5kYXRhYmFzZUNvbm5lY3Rpb24sXG4gICAgICAgIFBvcnQuUE9TVEdSRVNcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgYWRkQ2x1c3Rlcihwcm9wczogRWMyQ2x1c3RlclByb3BzKSB7XG4gICAgdGhpcy5jbHVzdGVyID0gbmV3IENka0NsdXN0ZXIodGhpcywgYCR7cHJvcHMuY2x1c3Rlck5hbWV9YCwge1xuICAgICAgdnBjOiBwcm9wcy52cGMsXG4gICAgICBjbHVzdGVyTmFtZTogcHJvcHMuY2x1c3Rlck5hbWUsXG4gICAgICBjb250YWluZXJJbnNpZ2h0czogdHJ1ZVxuICAgIH0pO1xuICAgIHRhZ1Jlc291cmNlKHRoaXMuY2x1c3RlciwgcHJvcHMudGFncyk7XG4gIH1cblxuICBhZGRBdXRvU2NhbGluZ0dyb3VwKHByb3BzOiBFYzJDbHVzdGVyUHJvcHMpIHtcbiAgICB0aGlzLmFzZ1NlY3VyaXR5R3JvdXAgPSBuZXcgU2VjdXJpdHlHcm91cCh0aGlzLCBgQXNnU2VjdXJpdHlHcm91cGAsIHtcbiAgICAgIHZwYzogdGhpcy5jbHVzdGVyLnZwYyxcbiAgICAgIGRlc2NyaXB0aW9uOiBgU2VjdXJpdHkgZ3JvdXAgZm9yIHRoZSAke3Byb3BzLmNsdXN0ZXJOYW1lfSBhdXRvIHNjYWxpbmcgZ3JvdXBgXG4gICAgfSk7XG5cbiAgICAvLyBBbGxvd3MgdGhlIGFzZ1NlY3VyaXR5R3JvdXAgdG8gdGFsayB0byB0aGUgRGF0YWJhc2Ugb24gcG9ydCA1NDMyXG4gICAgaWYgKHByb3BzLmRhdGFiYXNlQ29ubmVjdGlvbikge1xuICAgICAgdGhpcy5hc2dTZWN1cml0eUdyb3VwLmNvbm5lY3Rpb25zLmFsbG93VG8oXG4gICAgICAgIHByb3BzLmRhdGFiYXNlQ29ubmVjdGlvbixcbiAgICAgICAgUG9ydC5QT1NUR1JFU1xuICAgICAgKTtcbiAgICB9XG5cbiAgICB0aGlzLmF1dG9TY2FsaW5nR3JvdXAgPSBuZXcgQXV0b1NjYWxpbmdHcm91cCh0aGlzLCBcIkF1dG9TY2FsaW5nR3JvdXBcIiwge1xuICAgICAgYXV0b1NjYWxpbmdHcm91cE5hbWU6IGAke3Byb3BzLmNsdXN0ZXJOYW1lfUF1dG9TY2FsaW5nR3JvdXBgLFxuICAgICAgdnBjOiB0aGlzLmNsdXN0ZXIudnBjLFxuICAgICAgdnBjU3VibmV0czoge1xuICAgICAgICBzdWJuZXRUeXBlOiBTdWJuZXRUeXBlLlBVQkxJQ1xuICAgICAgfSxcbiAgICAgIHNlY3VyaXR5R3JvdXA6IHRoaXMuYXNnU2VjdXJpdHlHcm91cCxcbiAgICAgIG1pbkNhcGFjaXR5OiAyLFxuICAgICAgbWF4Q2FwYWNpdHk6IDMsXG4gICAgICBpbnN0YW5jZVR5cGU6IG5ldyBJbnN0YW5jZVR5cGUoXCJtOGcubGFyZ2VcIiksXG4gICAgICBjYXBhY2l0eVJlYmFsYW5jZTogdHJ1ZSxcbiAgICAgIGluc3RhbmNlTW9uaXRvcmluZzogTW9uaXRvcmluZy5CQVNJQyxcbiAgICAgIG1hY2hpbmVJbWFnZTogRWNzT3B0aW1pemVkSW1hZ2UuYW1hem9uTGludXgyKEFtaUhhcmR3YXJlVHlwZS5BUk0pXG4gICAgfSk7XG4gICAgdGFnUmVzb3VyY2UodGhpcy5hdXRvU2NhbGluZ0dyb3VwLCBwcm9wcy50YWdzKTtcblxuICAgIHRoaXMuYXNnQ2FwYWNpdHlQcm92aWRlciA9IG5ldyBBc2dDYXBhY2l0eVByb3ZpZGVyKFxuICAgICAgdGhpcyxcbiAgICAgIFwiQXNnQ2FwYWNpdHlQcm92aWRlclwiLFxuICAgICAge1xuICAgICAgICBhdXRvU2NhbGluZ0dyb3VwOiB0aGlzLmF1dG9TY2FsaW5nR3JvdXBcbiAgICAgIH1cbiAgICApO1xuICAgIHRhZ1Jlc291cmNlKHRoaXMuYXNnQ2FwYWNpdHlQcm92aWRlciwgcHJvcHMudGFncyk7XG5cbiAgICB0aGlzLmNsdXN0ZXIuYWRkQXNnQ2FwYWNpdHlQcm92aWRlcih0aGlzLmFzZ0NhcGFjaXR5UHJvdmlkZXIpO1xuICB9XG5cbiAgYWRkU2VjcmV0cyhwcm9wczogRWMyQ2x1c3RlclByb3BzKSB7XG4gICAgLy8gQ29udGFpbmVyIFNlY3JldHNcbiAgICBjb25zdCBjb250YWluZXJTZWNyZXQgPSBTZWNyZXQuZnJvbVNlY3JldE5hbWVWMihcbiAgICAgIHRoaXMsXG4gICAgICBgJHtwcm9wcy5jbHVzdGVyTmFtZX1TZWNyZXRgLFxuICAgICAgYC8ke3Byb3BzLmNsdXN0ZXJOYW1lfS8ke3Byb3BzLnNlcnZpY2VOYW1lfWBcbiAgICApO1xuXG4gICAgZm9yIChjb25zdCBzZWNyZXRGaWVsZCBpbiBwcm9wcy5jb250YWluZXJTZWNyZXRzKSB7XG4gICAgICB0aGlzLnNlY3JldHNbc2VjcmV0RmllbGRdID0gRWNzU2VjcmV0LmZyb21TZWNyZXRzTWFuYWdlcihcbiAgICAgICAgY29udGFpbmVyU2VjcmV0LFxuICAgICAgICBzZWNyZXRGaWVsZFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBhZGRFeGVjdXRpb25Sb2xlKHByb3BzOiBFYzJDbHVzdGVyUHJvcHMpIHtcbiAgICB0aGlzLmV4ZWN1dGlvblJvbGUgPSBuZXcgUm9sZSh0aGlzLCBgJHtwcm9wcy5zZXJ2aWNlTmFtZX1FeGVjdXRpb25Sb2xlYCwge1xuICAgICAgcm9sZU5hbWU6IGAke3Byb3BzLnNlcnZpY2VOYW1lfUV4ZWN1dGlvblJvbGVgLFxuICAgICAgZGVzY3JpcHRpb246IGAke3Byb3BzLnNlcnZpY2VOYW1lfSBFeGVjdXRpb24gUm9sZWAsXG4gICAgICBtYW5hZ2VkUG9saWNpZXM6IFtcbiAgICAgICAge1xuICAgICAgICAgIG1hbmFnZWRQb2xpY3lBcm46XG4gICAgICAgICAgICBcImFybjphd3M6aWFtOjphd3M6cG9saWN5L3NlcnZpY2Utcm9sZS9BbWF6b25FQ1NUYXNrRXhlY3V0aW9uUm9sZVBvbGljeVwiXG4gICAgICAgIH1cbiAgICAgIF0sXG4gICAgICBpbmxpbmVQb2xpY2llczoge1xuICAgICAgICBbXCJyZWFkU2VjcmV0c1wiXTogbmV3IFBvbGljeURvY3VtZW50KHtcbiAgICAgICAgICBzdGF0ZW1lbnRzOiBbXG4gICAgICAgICAgICBuZXcgUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgICAgICAgYWN0aW9uczogW1xuICAgICAgICAgICAgICAgIFwic2VjcmV0c21hbmFnZXI6R2V0U2VjcmV0VmFsdWVcIixcbiAgICAgICAgICAgICAgICBcInNlY3JldHNtYW5hZ2VyOkRlc2NyaWJlU2VjcmV0XCJcbiAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgcmVzb3VyY2VzOiBbXCIqXCJdIC8vIFRPRE86IFNldCB0aGlzIHRvIHRoZSBzZWNyZXQgQVJOXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIF1cbiAgICAgICAgfSksXG4gICAgICAgIFtcImRlY3J5cHRTZWNyZXRzXCJdOiBuZXcgUG9saWN5RG9jdW1lbnQoe1xuICAgICAgICAgIHN0YXRlbWVudHM6IFtcbiAgICAgICAgICAgIG5ldyBQb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICAgICAgICBhY3Rpb25zOiBbXCJrbXM6RGVjcnlwdFwiXSxcbiAgICAgICAgICAgICAgcmVzb3VyY2VzOiBbXCIqXCJdIC8vIFRPRE86IFNldCB0aGlzIHRvIHRoZSBLTVMgQXJuXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIF1cbiAgICAgICAgfSksXG4gICAgICAgIFtcImVjc0V4ZWN1dGVDb21tYW5kXCJdOiBuZXcgUG9saWN5RG9jdW1lbnQoe1xuICAgICAgICAgIHN0YXRlbWVudHM6IFtcbiAgICAgICAgICAgIG5ldyBQb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgICAgICAgXCJzc21tZXNzYWdlczpDcmVhdGVDb250cm9sQ2hhbm5lbFwiLFxuICAgICAgICAgICAgICAgIFwic3NtbWVzc2FnZXM6Q3JlYXRlRGF0YUNoYW5uZWxcIixcbiAgICAgICAgICAgICAgICBcInNzbW1lc3NhZ2VzOk9wZW5Db250cm9sQ2hhbm5lbFwiLFxuICAgICAgICAgICAgICAgIFwic3NtbWVzc2FnZXM6T3BlbkRhdGFDaGFubmVsXCJcbiAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgZWZmZWN0OiBFZmZlY3QuQUxMT1csXG4gICAgICAgICAgICAgIHJlc291cmNlczogW1wiKlwiXVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICBdXG4gICAgICAgIH0pXG4gICAgICB9LFxuICAgICAgYXNzdW1lZEJ5OiBuZXcgQ29tcG9zaXRlUHJpbmNpcGFsKFxuICAgICAgICBuZXcgU2VydmljZVByaW5jaXBhbChcImVjcy10YXNrcy5hbWF6b25hd3MuY29tXCIpXG4gICAgICApXG4gICAgfSk7XG4gIH1cblxuICBhZGRUYXNrRGVmaW5pdGlvbihwcm9wczogRWMyQ2x1c3RlclByb3BzKSB7XG4gICAgdGhpcy50YXNrRGVmaW5pdGlvbiA9IG5ldyBFYzJUYXNrRGVmaW5pdGlvbihcbiAgICAgIHRoaXMsXG4gICAgICBgJHtwcm9wcy5zZXJ2aWNlTmFtZX1UYXNrRGVmaW5pdGlvbmAsXG4gICAgICB7XG4gICAgICAgIC8vIGlwY01vZGU6IElwY01vZGUuSE9TVCwgVE9ETzogRmlndXJlIG91dCBpZiB3ZSB3YW50IHRoaXMgdG8gYWxsb3cgZWFzeSBpbnRlci1jb250YWluZXIgY29tbXVuaWNhdGlvblxuICAgICAgICBleGVjdXRpb25Sb2xlOiB0aGlzLmV4ZWN1dGlvblJvbGUsXG4gICAgICAgIHRhc2tSb2xlOiBuZXcgUm9sZSh0aGlzLCBgJHtwcm9wcy5zZXJ2aWNlTmFtZX1UYXNrUm9sZWAsIHtcbiAgICAgICAgICByb2xlTmFtZTogYCR7cHJvcHMuc2VydmljZU5hbWV9VGFza1JvbGVgLFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiBgJHtwcm9wcy5zZXJ2aWNlTmFtZX0gVGFzayBSb2xlYCxcbiAgICAgICAgICBpbmxpbmVQb2xpY2llczogcHJvcHMudGFza1JvbGVJbmxpbmVQb2xpY2llcyxcbiAgICAgICAgICBtYW5hZ2VkUG9saWNpZXM6IHByb3BzLnRhc2tSb2xlTWFuYWdlZFBvbGljaWVzLFxuICAgICAgICAgIGFzc3VtZWRCeTogbmV3IENvbXBvc2l0ZVByaW5jaXBhbChcbiAgICAgICAgICAgIG5ldyBTZXJ2aWNlUHJpbmNpcGFsKFwiZWNzLXRhc2tzLmFtYXpvbmF3cy5jb21cIilcbiAgICAgICAgICApXG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgKTtcbiAgICB0YWdSZXNvdXJjZSh0aGlzLnRhc2tEZWZpbml0aW9uLCBwcm9wcy50YWdzKTtcbiAgfVxuXG4gIGFkZENvbnRhaW5lckRlZmluaXRpb24ocHJvcHM6IEVjMkNsdXN0ZXJQcm9wcykge1xuICAgIHRoaXMuY29udGFpbmVyRGVmaW5pdGlvbiA9IHRoaXMudGFza0RlZmluaXRpb24uYWRkQ29udGFpbmVyKFxuICAgICAgYCR7cHJvcHMuc2VydmljZU5hbWV9Q29udGFpbmVyRGVmaW5pdGlvbmAsXG4gICAgICB7XG4gICAgICAgIGltYWdlOiB0aGlzLmdldEltYWdlKHByb3BzKSxcbiAgICAgICAgY3B1OiAxLFxuICAgICAgICBtZW1vcnlMaW1pdE1pQjogMTAyNCxcbiAgICAgICAgY29udGFpbmVyTmFtZTogcHJvcHMuc2VydmljZU5hbWUsXG4gICAgICAgIGVudmlyb25tZW50OiB7XG4gICAgICAgICAgLi4ucHJvcHMuY29udGFpbmVyRW52aXJvbm1lbnRcbiAgICAgICAgfSxcbiAgICAgICAgZW50cnlQb2ludDogcHJvcHMuY29udGFpbmVyRW50cnlQb2ludCB8fCBbXCJub2RlXCIsIFwibWFpbi5qc1wiXSxcbiAgICAgICAgY29tbWFuZDogcHJvcHMuY29udGFpbmVyQ29tbWFuZCB8fCBbYCR7cHJvcHMuY29udGFpbmVyUG9ydH1gXSxcbiAgICAgICAgc2VjcmV0czoge1xuICAgICAgICAgIC4uLnRoaXMuc2VjcmV0c1xuICAgICAgICB9LFxuICAgICAgICAvL3RvZG86IHByb3ZpZGUgaGVhbHRoIGNoZWNrIG9wdGlvbnNcbiAgICAgICAgLy8gaGVhbHRoQ2hlY2s6IHtcbiAgICAgICAgLy8gICBjb21tYW5kOiBbXG4gICAgICAgIC8vICAgICBcIkNNRC1TSEVMTFwiLFxuICAgICAgICAvLyAgICAgYHRpbWVvdXQgMTBzIC9iaW4vc2ggLWMgJzo+IC9kZXYvdGNwLzEyNy4wLjAuMS8ke3Byb3BzLmNvbnRhaW5lclBvcnR9JyB8fCBleGl0IDFgXG4gICAgICAgIC8vICAgXVxuICAgICAgICAvLyB9LFxuICAgICAgICBsb2dnaW5nOiBuZXcgQXdzTG9nRHJpdmVyKHtcbiAgICAgICAgICBzdHJlYW1QcmVmaXg6IGAvZWNzLyR7cHJvcHMuY2x1c3Rlck5hbWV9LyR7cHJvcHMuc2VydmljZU5hbWV9YCxcbiAgICAgICAgICBsb2dSZXRlbnRpb246IDE0XG4gICAgICAgIH0pLFxuICAgICAgICBwb3J0TWFwcGluZ3M6IHByb3BzLmNvbnRhaW5lclBvcnRcbiAgICAgICAgICA/IFt7IGNvbnRhaW5lclBvcnQ6IHByb3BzLmNvbnRhaW5lclBvcnQsIGhvc3RQb3J0OiAwIH1dXG4gICAgICAgICAgOiBbeyBjb250YWluZXJQb3J0OiA4MCwgaG9zdFBvcnQ6IDAgfV1cbiAgICAgIH1cbiAgICApO1xuICAgIHRhZ1Jlc291cmNlKHRoaXMuY29udGFpbmVyRGVmaW5pdGlvbiwgcHJvcHMudGFncyk7XG4gIH1cblxuICBhZGRFYzJTZXJ2aWNlKHByb3BzOiBFYzJDbHVzdGVyUHJvcHMpIHtcbiAgICB0aGlzLmVjMlNlcnZpY2UgPSBuZXcgRWMyU2VydmljZSh0aGlzLCBgJHtwcm9wcy5zZXJ2aWNlTmFtZX1FYzJTZXJ2aWNlYCwge1xuICAgICAgY2lyY3VpdEJyZWFrZXI6IHsgcm9sbGJhY2s6IHRydWUgfSxcbiAgICAgIGNsdXN0ZXI6IHRoaXMuY2x1c3RlcixcbiAgICAgIGRlc2lyZWRDb3VudDogMyxcbiAgICAgIGVuYWJsZUVDU01hbmFnZWRUYWdzOiB0cnVlLFxuICAgICAgZW5hYmxlRXhlY3V0ZUNvbW1hbmQ6IHRydWUsXG4gICAgICBoZWFsdGhDaGVja0dyYWNlUGVyaW9kOiBEdXJhdGlvbi5zZWNvbmRzKDEyMCksXG4gICAgICBzZXJ2aWNlTmFtZTogYCR7cHJvcHMuc2VydmljZU5hbWV9YCxcbiAgICAgIHRhc2tEZWZpbml0aW9uOiB0aGlzLnRhc2tEZWZpbml0aW9uLFxuICAgICAgcGxhY2VtZW50U3RyYXRlZ2llczogW1BsYWNlbWVudFN0cmF0ZWd5LnNwcmVhZEFjcm9zc0luc3RhbmNlcygpXVxuICAgIH0pO1xuICAgIHRhZ1Jlc291cmNlKHRoaXMuZWMyU2VydmljZSwgcHJvcHMudGFncyk7XG4gIH1cblxuICBhZGRTY2FsaW5nUG9saWN5KHByb3BzOiBFYzJDbHVzdGVyUHJvcHMpIHtcbiAgICB0aGlzLnNjYWxpbmdQb2xpY3kgPSBuZXcgVGFyZ2V0VHJhY2tpbmdTY2FsaW5nUG9saWN5KFxuICAgICAgdGhpcyxcbiAgICAgIGAke3Byb3BzLnNlcnZpY2VOYW1lfVNjYWxpbmdQb2xpY3lgLFxuICAgICAge1xuICAgICAgICBwb2xpY3lOYW1lOiBgJHtwcm9wcy5zZXJ2aWNlTmFtZX1TY2FsaW5nUG9saWN5YCxcbiAgICAgICAgc2NhbGluZ1RhcmdldDogbmV3IFNjYWxhYmxlVGFyZ2V0KFxuICAgICAgICAgIHRoaXMsXG4gICAgICAgICAgYCR7cHJvcHMuc2VydmljZU5hbWV9c2NhbGFibGVUYXJnZXRgLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIG1heENhcGFjaXR5OiAxMCxcbiAgICAgICAgICAgIG1pbkNhcGFjaXR5OiAyLFxuICAgICAgICAgICAgcmVzb3VyY2VJZDogYHNlcnZpY2UvJHt0aGlzLmNsdXN0ZXIuY2x1c3Rlck5hbWV9LyR7dGhpcy5lYzJTZXJ2aWNlLnNlcnZpY2VOYW1lfWAsXG4gICAgICAgICAgICBzY2FsYWJsZURpbWVuc2lvbjogXCJlY3M6c2VydmljZTpEZXNpcmVkQ291bnRcIixcbiAgICAgICAgICAgIHNlcnZpY2VOYW1lc3BhY2U6IFNlcnZpY2VOYW1lc3BhY2UuRUNTXG4gICAgICAgICAgfVxuICAgICAgICApLFxuICAgICAgICB0YXJnZXRWYWx1ZTogNTAsXG4gICAgICAgIHNjYWxlT3V0Q29vbGRvd246IER1cmF0aW9uLnNlY29uZHMoNjApLFxuICAgICAgICBzY2FsZUluQ29vbGRvd246IER1cmF0aW9uLnNlY29uZHMoNjApLFxuICAgICAgICBwcmVkZWZpbmVkTWV0cmljOlxuICAgICAgICAgIHByb3BzLnNjYWxpbmdUeXBlID09IFNjYWxpbmdUeXBlLk1FTU9SWVxuICAgICAgICAgICAgPyBQcmVkZWZpbmVkTWV0cmljLkVDU19TRVJWSUNFX0FWRVJBR0VfTUVNT1JZX1VUSUxJWkFUSU9OXG4gICAgICAgICAgICA6IFByZWRlZmluZWRNZXRyaWMuRUNTX1NFUlZJQ0VfQVZFUkFHRV9DUFVfVVRJTElaQVRJT05cbiAgICAgIH1cbiAgICApO1xuICB9XG5cbiAgYWRkTG9hZEJhbGFuY2VyKHByb3BzOiBFYzJDbHVzdGVyUHJvcHMpIHtcbiAgICB0aGlzLmxvYWRCYWxhbmNlclNlY3VyaXR5R3JvdXAgPSBuZXcgU2VjdXJpdHlHcm91cChcbiAgICAgIHRoaXMsXG4gICAgICBgTG9hZEJhbGFuY2VyU2VjdXJpdHlHcm91cGAsXG4gICAgICB7XG4gICAgICAgIHZwYzogdGhpcy5jbHVzdGVyLnZwYyxcbiAgICAgICAgZGVzY3JpcHRpb246IGBTZWN1cml0eSBncm91cCBmb3IgdGhlICR7cHJvcHMuY2x1c3Rlck5hbWV9IGxvYWQgYmFsYW5jZXJgXG4gICAgICB9XG4gICAgKTtcblxuICAgIHRoaXMubG9hZEJhbGFuY2VyU2VjdXJpdHlHcm91cC5jb25uZWN0aW9ucy5hbGxvd1RvKFxuICAgICAgdGhpcy5hc2dTZWN1cml0eUdyb3VwLFxuICAgICAgUG9ydC5hbGxUY3AoKVxuICAgICk7XG5cbiAgICB0aGlzLmxvYWRCYWxhbmNlciA9IG5ldyBBcHBsaWNhdGlvbkxvYWRCYWxhbmNlcihcbiAgICAgIHRoaXMsXG4gICAgICBgJHtwcm9wcy5jbHVzdGVyTmFtZX1Mb2FkQmFsYW5jZXJgLFxuICAgICAge1xuICAgICAgICB2cGM6IHRoaXMuY2x1c3Rlci52cGMsXG4gICAgICAgIGludGVybmV0RmFjaW5nOiB0cnVlLFxuICAgICAgICBzZWN1cml0eUdyb3VwOiB0aGlzLmxvYWRCYWxhbmNlclNlY3VyaXR5R3JvdXAsXG4gICAgICAgIGxvYWRCYWxhbmNlck5hbWU6IGAke3Byb3BzLnNlcnZpY2VOYW1lfUxvYWRCYWxhbmNlcmAsXG4gICAgICAgIHZwY1N1Ym5ldHM6IHtcbiAgICAgICAgICBzdWJuZXRUeXBlOiBTdWJuZXRUeXBlLlBVQkxJQ1xuICAgICAgICB9XG4gICAgICB9XG4gICAgKTtcbiAgICB0YWdSZXNvdXJjZSh0aGlzLmxvYWRCYWxhbmNlciwgcHJvcHMudGFncyk7XG5cbiAgICAvLyBBbGxvdyBjb25uZWN0aW9ucyB0byBlcGhlbWVyYWwgcG9ydHNcbiAgICB0aGlzLmFzZ1NlY3VyaXR5R3JvdXAuY29ubmVjdGlvbnMuYWxsb3dGcm9tKFxuICAgICAgdGhpcy5sb2FkQmFsYW5jZXJTZWN1cml0eUdyb3VwLFxuICAgICAgUG9ydC50Y3BSYW5nZSg0OTE1MiwgNjU1MzUpXG4gICAgKTtcbiAgfVxuXG4gIHJlbW92ZUF1dG9TY2FsaW5nR3JvdXAoKSB7XG4gICAgbmV3IEF3c0N1c3RvbVJlc291cmNlKHRoaXMsIFwiZGVsZXRlQXV0b3NjYWxpbmdHcm91cFwiLCB7XG4gICAgICBmdW5jdGlvbk5hbWU6IFwiZGVsZXRlQXV0b3NjYWxpbmdHcm91cFwiLFxuICAgICAgb25EZWxldGU6IHtcbiAgICAgICAgc2VydmljZTogXCJBdXRvU2NhbGluZ1wiLFxuICAgICAgICBhY3Rpb246IFwiRGVsZXRlQXV0b1NjYWxpbmdHcm91cENvbW1hbmRcIixcbiAgICAgICAgcGFyYW1ldGVyczoge1xuICAgICAgICAgIEF1dG9TY2FsaW5nR3JvdXBOYW1lOiB0aGlzLmF1dG9TY2FsaW5nR3JvdXAuYXV0b1NjYWxpbmdHcm91cE5hbWUsXG4gICAgICAgICAgRm9yY2VEZWxldGU6IHRydWVcbiAgICAgICAgfSxcbiAgICAgICAgcGh5c2ljYWxSZXNvdXJjZUlkOiBQaHlzaWNhbFJlc291cmNlSWQub2YoXCJkZWxldGVBdXRvc2NhbGluZ0dyb3VwXCIpXG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBhZGRMb2FkQmFsYW5jZXJMaXN0ZW5lcihwcm9wczogRWMyQ2x1c3RlclByb3BzKSB7XG4gICAgbGV0IGFkZExpc3RlbmVyUHJvcHM6IEJhc2VBcHBsaWNhdGlvbkxpc3RlbmVyUHJvcHMgPSB7fTtcblxuICAgIGlmICghIXByb3BzLnBhcmVudERvbWFpbikge1xuICAgICAgdGhpcy5jZXJ0aWZpY2F0ZSA9IG5ldyBDZXJ0aWZpY2F0ZShcbiAgICAgICAgdGhpcyxcbiAgICAgICAgYCR7cHJvcHMuc2VydmljZU5hbWV9Q2VydGlmaWNhdGVgLFxuICAgICAgICB7XG4gICAgICAgICAgZG9tYWluTmFtZTogYCR7cHJvcHMuc2VydmljZU5hbWV9LiR7cHJvcHMuY2x1c3Rlck5hbWV9LiR7cHJvcHMucGFyZW50RG9tYWlufWAsXG4gICAgICAgICAgdmFsaWRhdGlvbjogQ2VydGlmaWNhdGVWYWxpZGF0aW9uLmZyb21EbnModGhpcy5ob3N0ZWRab25lKVxuICAgICAgICB9XG4gICAgICApO1xuXG4gICAgICBhZGRMaXN0ZW5lclByb3BzID0ge1xuICAgICAgICBwb3J0OiA0NDMsXG4gICAgICAgIGNlcnRpZmljYXRlczogW3RoaXMuY2VydGlmaWNhdGVdXG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICBhZGRMaXN0ZW5lclByb3BzID0ge1xuICAgICAgICBwb3J0OiA4MFxuICAgICAgfTtcbiAgICB9XG5cbiAgICB0aGlzLmxvYWRCYWxhbmNlckxpc3RlbmVyID0gdGhpcy5sb2FkQmFsYW5jZXIuYWRkTGlzdGVuZXIoXG4gICAgICBgJHtwcm9wcy5zZXJ2aWNlTmFtZX1MaXN0ZW5lcmAsXG4gICAgICBhZGRMaXN0ZW5lclByb3BzXG4gICAgKTtcbiAgICB0YWdSZXNvdXJjZSh0aGlzLmxvYWRCYWxhbmNlckxpc3RlbmVyLCBwcm9wcy50YWdzKTtcbiAgfVxuXG4gIGFkZEhvc3RlZFpvbmUocHJvcHM6IEVjMkNsdXN0ZXJQcm9wcykge1xuICAgIGlmICghcHJvcHMucGFyZW50RG9tYWluKSByZXR1cm47XG5cbiAgICB0aGlzLmhvc3RlZFpvbmUgPSBIb3N0ZWRab25lLmZyb21Ib3N0ZWRab25lQXR0cmlidXRlcyh0aGlzLCBcImhvc3RlZFpvbmVcIiwge1xuICAgICAgaG9zdGVkWm9uZUlkOiBGbi5pbXBvcnRWYWx1ZShcbiAgICAgICAgYCR7cHJvcHMucGFyZW50RG9tYWluLnNwbGl0KFwiLlwiKS5qb2luKFwiXCIpfUhvc3RlZFpvbmVJZGBcbiAgICAgICksXG4gICAgICB6b25lTmFtZTogcHJvcHMucGFyZW50RG9tYWluXG4gICAgfSk7XG5cbiAgICB0aGlzLmFSZWNvcmQgPSBuZXcgQVJlY29yZChcbiAgICAgIHRoaXMsXG4gICAgICBgJHtwcm9wcy5zZXJ2aWNlTmFtZX0uJHtwcm9wcy5jbHVzdGVyTmFtZX0uJHtwcm9wcy5wYXJlbnREb21haW59QVJlY29yZGAsXG4gICAgICB7XG4gICAgICAgIHJlY29yZE5hbWU6IGAke3Byb3BzLnNlcnZpY2VOYW1lfS4ke3Byb3BzLmNsdXN0ZXJOYW1lfS4ke3Byb3BzLnBhcmVudERvbWFpbn1gLFxuICAgICAgICB6b25lOiB0aGlzLmhvc3RlZFpvbmUsXG4gICAgICAgIHRhcmdldDogUmVjb3JkVGFyZ2V0LmZyb21BbGlhcyhcbiAgICAgICAgICBuZXcgTG9hZEJhbGFuY2VyVGFyZ2V0KHRoaXMubG9hZEJhbGFuY2VyKVxuICAgICAgICApXG4gICAgICB9XG4gICAgKTtcblxuICAgIG5ldyBDZm5PdXRwdXQodGhpcywgYCR7cHJvcHMuc2VydmljZU5hbWV9QVJlY29yZGAsIHtcbiAgICAgIGtleTogYCR7cHJvcHMuc2VydmljZU5hbWV9QVJlY29yZGAsXG4gICAgICB2YWx1ZTogdGhpcy5hUmVjb3JkLmRvbWFpbk5hbWUsXG4gICAgICBleHBvcnROYW1lOiBgJHtwcm9wcy5zZXJ2aWNlTmFtZX1BUmVjb3JkYFxuICAgIH0pO1xuICB9XG5cbiAgcmVnaXN0ZXJMb2FkQmFsYW5jZXJUYXJnZXRzKHByb3BzOiBFYzJDbHVzdGVyUHJvcHMpIHtcbiAgICB0aGlzLmVjMlNlcnZpY2UucmVnaXN0ZXJMb2FkQmFsYW5jZXJUYXJnZXRzKHtcbiAgICAgIGNvbnRhaW5lck5hbWU6IHRoaXMuY29udGFpbmVyRGVmaW5pdGlvbi5jb250YWluZXJOYW1lLFxuICAgICAgY29udGFpbmVyUG9ydDogdGhpcy5jb250YWluZXJEZWZpbml0aW9uLmNvbnRhaW5lclBvcnQsXG4gICAgICBuZXdUYXJnZXRHcm91cElkOiBgJHtwcm9wcy5zZXJ2aWNlTmFtZX1UYXJnZXRHcm91cGAsXG4gICAgICBsaXN0ZW5lcjogTGlzdGVuZXJDb25maWcuYXBwbGljYXRpb25MaXN0ZW5lcih0aGlzLmxvYWRCYWxhbmNlckxpc3RlbmVyLCB7XG4gICAgICAgIHBvcnQ6IHByb3BzLmNvbnRhaW5lclBvcnQsXG4gICAgICAgIHByb3RvY29sOiBBcHBsaWNhdGlvblByb3RvY29sLkhUVFAsXG4gICAgICAgIGhlYWx0aENoZWNrOiB7XG4gICAgICAgICAgaW50ZXJ2YWw6IER1cmF0aW9uLnNlY29uZHMoMzApLFxuICAgICAgICAgIGhlYWx0aHlUaHJlc2hvbGRDb3VudDogMyxcbiAgICAgICAgICB1bmhlYWx0aHlUaHJlc2hvbGRDb3VudDogMyxcbiAgICAgICAgICBwYXRoOiBwcm9wcy5oZWFsdGhDaGVja1BhdGggfHwgXCIvXCIsXG4gICAgICAgICAgcG9ydDogXCJ0cmFmZmljLXBvcnRcIixcbiAgICAgICAgICB0aW1lb3V0OiBEdXJhdGlvbi5zZWNvbmRzKDE1KVxuICAgICAgICB9XG4gICAgICB9KVxuICAgIH0pO1xuICB9XG5cbiAgZ2V0SW1hZ2UocHJvcHM6IEVjMkNsdXN0ZXJQcm9wcyk6IENvbnRhaW5lckltYWdlIHtcbiAgICBpZiAoIXByb3BzLmVjclJlcG9zaXRvcnkpXG4gICAgICByZXR1cm4gQ29udGFpbmVySW1hZ2UuZnJvbVJlZ2lzdHJ5KFwiYW1hem9uL2FtYXpvbi1lY3Mtc2FtcGxlXCIpO1xuICAgIGlmICh0eXBlb2YgcHJvcHMuZWNyUmVwb3NpdG9yeSA9PT0gXCJzdHJpbmdcIilcbiAgICAgIHJldHVybiBDb250YWluZXJJbWFnZS5mcm9tRWNyUmVwb3NpdG9yeShcbiAgICAgICAgUmVwb3NpdG9yeS5mcm9tUmVwb3NpdG9yeU5hbWUoXG4gICAgICAgICAgdGhpcyxcbiAgICAgICAgICBcImVjclJlcG9zaXRvcnlcIixcbiAgICAgICAgICBwcm9wcy5lY3JSZXBvc2l0b3J5XG4gICAgICAgICksXG4gICAgICAgIFwibGF0ZXN0XCJcbiAgICAgICk7XG4gICAgaWYgKHByb3BzLmVjclJlcG9zaXRvcnkgaW5zdGFuY2VvZiBDb250YWluZXJJbWFnZSlcbiAgICAgIHJldHVybiBwcm9wcy5lY3JSZXBvc2l0b3J5O1xuICAgIGlmIChwcm9wcy5lY3JSZXBvc2l0b3J5IGluc3RhbmNlb2YgUmVwb3NpdG9yeSkge1xuICAgICAgcmV0dXJuIENvbnRhaW5lckltYWdlLmZyb21FY3JSZXBvc2l0b3J5KHByb3BzLmVjclJlcG9zaXRvcnksIFwibGF0ZXN0XCIpO1xuICAgIH1cbiAgICByZXR1cm4gQ29udGFpbmVySW1hZ2UuZnJvbVJlZ2lzdHJ5KFwiYW1hem9uL2FtYXpvbi1lY3Mtc2FtcGxlXCIpO1xuICB9XG5cbiAgc3RhdGljIGJ1aWxkKFxuICAgIGlkOiBzdHJpbmcsXG4gICAgcHJvcHM6IEVjMkNsdXN0ZXJQcm9wc1xuICApOiAoc2I6IFN0YWNrQnVpbGRlcikgPT4gQ29uc3RydWN0IHtcbiAgICByZXR1cm4gKHNiOiBTdGFja0J1aWxkZXIpID0+IHtcbiAgICAgIGNvbnN0IG5ld1Byb3BzOiBFYzJDbHVzdGVyUHJvcHMgPSB7XG4gICAgICAgIC4uLnByb3BzLFxuICAgICAgICAuLi57XG4gICAgICAgICAgdnBjOiAoc2IuZ2V0TmV0d29yaygpIGFzIElWcGMpIHx8IHByb3BzLnZwY1xuICAgICAgICB9XG4gICAgICB9O1xuICAgICAgcmV0dXJuIG5ldyB0aGlzKHNiLmdldFN0YWNrKCksIGlkLCBuZXdQcm9wcyk7XG4gICAgfTtcbiAgfVxufVxuIl19
|
|
334
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWNzU3BvdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYi9yZXNvdXJjZXMvYXdzL2NvbXB1dGUvZWNzU3BvdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxpREFjNkI7QUFDN0IsaURBTzZCO0FBQzdCLDJDQUF1QztBQUV2Qyw2Q0FBd0Q7QUFDeEQsdUZBS2dEO0FBQ2hELDREQUFxRDtBQUNyRCxpREFRNkI7QUFDN0IsdUZBS2dEO0FBQ2hELGlEQUEwRDtBQUMxRCx1RUFBd0Q7QUFDeEQsK0VBRzRDO0FBQzVDLHlEQUtpQztBQUNqQyx5RUFBcUU7QUFDckUsaURBQWlEO0FBQ2pELGlFQUEyRTtBQUUzRSx3REFBcUQ7QUFDckQsc0VBQW1FO0FBQ25FLG1FQUFrRTtBQUNsRSxzREFBbUQ7QUFFbkQsSUFBWSxXQUdYO0FBSEQsV0FBWSxXQUFXO0lBQ3JCLHNEQUEwRCxDQUFBO0lBQzFELDREQUFnRSxDQUFBO0FBQ2xFLENBQUMsRUFIVyxXQUFXLDJCQUFYLFdBQVcsUUFHdEI7QUFpQ0QsTUFBcUIsVUFBVyxTQUFRLHNCQUFTO0lBdUIvQyxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQXNCO1FBQzlELEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFMWCxZQUFPLEdBRVgsRUFBRSxDQUFDO1FBS0wsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN2QixJQUFJLENBQUMsbUJBQW1CLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDaEMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN2QixJQUFJLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDN0IsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzlCLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNuQyxJQUFJLENBQUMsYUFBYSxD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Qy9DLENBQUMsQ0FBQztJQUNKLENBQUM7Q0FDRjtBQS9hRCw2QkErYUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBd3NMb2dEcml2ZXIsXG4gIENsdXN0ZXIgYXMgQ2RrQ2x1c3RlcixcbiAgQ29udGFpbmVySW1hZ2UsXG4gIEVjMlNlcnZpY2UsXG4gIEVjMlRhc2tEZWZpbml0aW9uLFxuICBMaXN0ZW5lckNvbmZpZyxcbiAgUmVwb3NpdG9yeUltYWdlLFxuICBDb250YWluZXJEZWZpbml0aW9uLFxuICBQbGFjZW1lbnRTdHJhdGVneSxcbiAgQXNnQ2FwYWNpdHlQcm92aWRlcixcbiAgRWNzT3B0aW1pemVkSW1hZ2UsXG4gIEFtaUhhcmR3YXJlVHlwZSxcbiAgQ29udGFpbmVySW5zaWdodHNcbn0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1lY3NcIjtcbmltcG9ydCB7XG4gIENvbm5lY3Rpb25zLFxuICBJQ29ubmVjdGFibGUsXG4gIEluc3RhbmNlVHlwZSxcbiAgSVZwYyxcbiAgUG9ydCxcbiAgU3VibmV0VHlwZVxufSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWVjMlwiO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB7IFN0YWNrQnVpbGRlciB9IGZyb20gXCIuLi9iYXNlL2F3c1N0YWNrXCI7XG5pbXBvcnQgeyBEdXJhdGlvbiwgRm4sIFNlY3JldFZhbHVlIH0gZnJvbSBcImF3cy1jZGstbGliXCI7XG5pbXBvcnQge1xuICBBcHBsaWNhdGlvbkxpc3RlbmVyLFxuICBBcHBsaWNhdGlvbkxvYWRCYWxhbmNlcixcbiAgQXBwbGljYXRpb25Qcm90b2NvbCxcbiAgQmFzZUFwcGxpY2F0aW9uTGlzdGVuZXJQcm9wc1xufSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWVsYXN0aWNsb2FkYmFsYW5jaW5ndjJcIjtcbmltcG9ydCB0YWdSZXNvdXJjZSBmcm9tIFwiLi4vLi4vLi4vdXRpbHMvdGFnUmVzb3VyY2VcIjtcbmltcG9ydCB7XG4gIENvbXBvc2l0ZVByaW5jaXBhbCxcbiAgRWZmZWN0LFxuICBJTWFuYWdlZFBvbGljeSxcbiAgUG9saWN5RG9jdW1lbnQsXG4gIFBvbGljeVN0YXRlbWVudCxcbiAgUm9sZSxcbiAgU2VydmljZVByaW5jaXBhbFxufSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWlhbVwiO1xuaW1wb3J0IHtcbiAgUHJlZGVmaW5lZE1ldHJpYyxcbiAgU2NhbGFibGVUYXJnZXQsXG4gIFNlcnZpY2VOYW1lc3BhY2UsXG4gIFRhcmdldFRyYWNraW5nU2NhbGluZ1BvbGljeVxufSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWFwcGxpY2F0aW9uYXV0b3NjYWxpbmdcIjtcbmltcG9ydCB7IFNlY3JldCBhcyBFY3NTZWNyZXQgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWVjc1wiO1xuaW1wb3J0IHsgU2VjcmV0IH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1zZWNyZXRzbWFuYWdlclwiO1xuaW1wb3J0IHtcbiAgQ2VydGlmaWNhdGUsXG4gIENlcnRpZmljYXRlVmFsaWRhdGlvblxufSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWNlcnRpZmljYXRlbWFuYWdlclwiO1xuaW1wb3J0IHtcbiAgQVJlY29yZCxcbiAgSG9zdGVkWm9uZSxcbiAgUmVjb3JkVGFyZ2V0LFxuICBJSG9zdGVkWm9uZVxufSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLXJvdXRlNTNcIjtcbmltcG9ydCB7IExvYWRCYWxhbmNlclRhcmdldCB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3Mtcm91dGU1My10YXJnZXRzXCI7XG5pbXBvcnQgeyBSZXBvc2l0b3J5IH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1lY3JcIjtcbmltcG9ydCB7IEF1dG9TY2FsaW5nR3JvdXAsIE1vbml0b3JpbmcgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWF1dG9zY2FsaW5nXCI7XG5pbXBvcnQgeyBLZXlWYWx1ZSB9IGZyb20gXCIuLi8uLi8uLi90eXBlc1wiO1xuaW1wb3J0IHsgU2VjdXJpdHlHcm91cCB9IGZyb20gXCIuLi9pYW0vc2VjdXJpdHlHcm91cFwiO1xuaW1wb3J0IHsgQXdzQ3VzdG9tUmVzb3VyY2UgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL2F3c0N1c3RvbVJlc291cmNlXCI7XG5pbXBvcnQgeyBQaHlzaWNhbFJlc291cmNlSWQgfSBmcm9tIFwiYXdzLWNkay1saWIvY3VzdG9tLXJlc291cmNlc1wiO1xuaW1wb3J0IHsgQ2ZuT3V0cHV0IH0gZnJvbSBcIi4uL3V0aWxpdGllcy9jZm5PdXRwdXRcIjtcblxuZXhwb3J0IGVudW0gU2NhbGluZ1R5cGUge1xuICBDUFUgPSBQcmVkZWZpbmVkTWV0cmljLkVDU19TRVJWSUNFX0FWRVJBR0VfQ1BVX1VUSUxJWkFUSU9OLFxuICBNRU1PUlkgPSBQcmVkZWZpbmVkTWV0cmljLkVDU19TRVJWSUNFX0FWRVJBR0VfTUVNT1JZX1VUSUxJWkFUSU9OXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29udGFpbmVyU2VjcmV0IHtcbiAgW2tleTogc3RyaW5nXTogU2VjcmV0VmFsdWU7XG59XG5cbnR5cGUgRWMyQ2x1c3RlclByb3BzID0ge1xuICBlY3JSZXBvc2l0b3J5OiBSZXBvc2l0b3J5IHwgUmVwb3NpdG9yeUltYWdlIHwgc3RyaW5nO1xuICBjbHVzdGVyTmFtZTogc3RyaW5nO1xuICBjb250YWluZXJFbnRyeVBvaW50Pzogc3RyaW5nW107XG4gIGNvbnRhaW5lckNvbW1hbmQ/OiBzdHJpbmdbXTtcbiAgY29udGFpbmVyRW52aXJvbm1lbnQ/OiBLZXlWYWx1ZTtcbiAgY29udGFpbmVyU2VjcmV0cz86IENvbnRhaW5lclNlY3JldDtcbiAgLy8gVE9ETzogQ29udGFpbmVyIFBvcnQgc2hvdWxkIGJlIHNldCBpbiByYXdQcm9wc1xuICBjb250YWluZXJQb3J0PzogbnVtYmVyO1xuICBjcHU/OiBudW1iZXI7XG4gIGRhdGFiYXNlQ29ubmVjdGlvbjogSUNvbm5lY3RhYmxlO1xuICBwYXJlbnREb21haW4/OiBzdHJpbmc7IC8vIFRPRE86IEJyZWFrIG91dCBhIEhUVFAgYW5kIEhUVFBTIHNlcnZpY2Ugd2hlcmUgdGhpcyBpcyBvcHRpb25hbFxuICBkZXNpcmVkQ291bnQ/OiBudW1iZXI7XG4gIGhlYWx0aENoZWNrUGF0aD86IHN0cmluZztcbiAgbGlzdGVuZXJQb3J0PzogbnVtYmVyO1xuICBtZW1vcnlMaW1pdE1pQj86IG51bWJlcjtcbiAgcHVibGljTG9hZEJhbGFuY2VyPzogYm9vbGVhbjtcbiAgc2NhbGluZ1R5cGU/OiBTY2FsaW5nVHlwZTtcbiAgc2VydmljZU5hbWU6IHN0cmluZztcbiAgdGFnczogS2V5VmFsdWU7XG4gIHRhc2tSb2xlSW5saW5lUG9saWNpZXM/OiB7XG4gICAgW25hbWU6IHN0cmluZ106IFBvbGljeURvY3VtZW50O1xuICB9O1xuICB0YXNrUm9sZU1hbmFnZWRQb2xpY2llcz86IElNYW5hZ2VkUG9saWN5W107XG4gIHZwYz86IElWcGM7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBFYzJDbHVzdGVyIGV4dGVuZHMgQ29uc3RydWN0IGltcGxlbWVudHMgSUNvbm5lY3RhYmxlIHtcbiAgcHVibGljIGNvbm5lY3Rpb25zOiBDb25uZWN0aW9ucztcblxuICBwcml2YXRlIGNsdXN0ZXI6IENka0NsdXN0ZXI7XG4gIHByaXZhdGUgYXV0b1NjYWxpbmdHcm91cDogQXV0b1NjYWxpbmdHcm91cDtcbiAgcHJpdmF0ZSBhc2dTZWN1cml0eUdyb3VwOiBTZWN1cml0eUdyb3VwO1xuICBwcml2YXRlIGFzZ0NhcGFjaXR5UHJvdmlkZXI6IEFzZ0NhcGFjaXR5UHJvdmlkZXI7XG4gIHByaXZhdGUgbG9hZEJhbGFuY2VyOiBBcHBsaWNhdGlvbkxvYWRCYWxhbmNlcjtcbiAgcHJpdmF0ZSBsb2FkQmFsYW5jZXJTZWN1cml0eUdyb3VwOiBTZWN1cml0eUdyb3VwO1xuICBwcml2YXRlIGxvYWRCYWxhbmNlckxpc3RlbmVyOiBBcHBsaWNhdGlvbkxpc3RlbmVyO1xuICBwcml2YXRlIGV4ZWN1dGlvblJvbGU6IFJvbGU7XG4gIHByaXZhdGUgdGFza0RlZmluaXRpb246IEVjMlRhc2tEZWZpbml0aW9uO1xuICBwcml2YXRlIGNvbnRhaW5lckRlZmluaXRpb246IENvbnRhaW5lckRlZmluaXRpb247XG4gIHByaXZhdGUgZWMyU2VydmljZTogRWMyU2VydmljZTtcbiAgcHJpdmF0ZSBzY2FsaW5nUG9saWN5OiBUYXJnZXRUcmFja2luZ1NjYWxpbmdQb2xpY3k7XG4gIHByaXZhdGUgaG9zdGVkWm9uZTogSUhvc3RlZFpvbmU7XG4gIHByaXZhdGUgY2VydGlmaWNhdGU6IENlcnRpZmljYXRlO1xuICBwcml2YXRlIGFSZWNvcmQ6IEFSZWNvcmQ7XG5cbiAgcHJpdmF0ZSBzZWNyZXRzOiB7XG4gICAgW2tleTogc3RyaW5nXTogRWNzU2VjcmV0O1xuICB9ID0ge307XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IEVjMkNsdXN0ZXJQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICB0aGlzLmFkZENsdXN0ZXIocHJvcHMpO1xuICAgIHRoaXMuYWRkQXV0b1NjYWxpbmdHcm91cChwcm9wcyk7XG4gICAgdGhpcy5hZGRTZWNyZXRzKHByb3BzKTtcbiAgICB0aGlzLmFkZEV4ZWN1dGlvblJvbGUocHJvcHMpO1xuICAgIHRoaXMuYWRkVGFza0RlZmluaXRpb24ocHJvcHMpO1xuICAgIHRoaXMuYWRkQ29udGFpbmVyRGVmaW5pdGlvbihwcm9wcyk7XG4gICAgdGhpcy5hZGRFYzJTZXJ2aWNlKHByb3BzKTtcbiAgICB0aGlzLmFkZExvYWRCYWxhbmNlcihwcm9wcyk7XG4gICAgdGhpcy5yZW1vdmVBdXRvU2NhbGluZ0dyb3VwKCk7XG4gICAgdGhpcy5hZGRMb2FkQmFsYW5jZXJMaXN0ZW5lcihwcm9wcyk7XG4gICAgdGhpcy5yZWdpc3RlckxvYWRCYWxhbmNlclRhcmdldHMocHJvcHMpO1xuXG4gICAgaWYgKCEhcHJvcHMucGFyZW50RG9tYWluKSB0aGlzLmFkZEhvc3RlZFpvbmUocHJvcHMpO1xuXG4gICAgLy8gdG9kbzogZml4IGNvbm5lY3Rpb25zIG5vdCB3b3JraW5nIGF1dG9tYXRpY2FsbHlcbiAgICBpZiAocHJvcHMuZGF0YWJhc2VDb25uZWN0aW9uKSB7XG4gICAgICB0aGlzLmF1dG9TY2FsaW5nR3JvdXAuY29ubmVjdGlvbnMuYWxsb3dUbyhcbiAgICAgICAgcHJvcHMuZGF0YWJhc2VDb25uZWN0aW9uLFxuICAgICAgICBQb3J0LlBPU1RHUkVTXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIGFkZENsdXN0ZXIocHJvcHM6IEVjMkNsdXN0ZXJQcm9wcykge1xuICAgIHRoaXMuY2x1c3RlciA9IG5ldyBDZGtDbHVzdGVyKHRoaXMsIGAke3Byb3BzLmNsdXN0ZXJOYW1lfWAsIHtcbiAgICAgIHZwYzogcHJvcHMudnBjLFxuICAgICAgY2x1c3Rlck5hbWU6IHByb3BzLmNsdXN0ZXJOYW1lLFxuICAgICAgY29udGFpbmVySW5zaWdodHNWMjogQ29udGFpbmVySW5zaWdodHMuRU5BQkxFRFxuICAgIH0pO1xuICAgIHRhZ1Jlc291cmNlKHRoaXMuY2x1c3RlciwgcHJvcHMudGFncyk7XG4gIH1cblxuICBhZGRBdXRvU2NhbGluZ0dyb3VwKHByb3BzOiBFYzJDbHVzdGVyUHJvcHMpIHtcbiAgICB0aGlzLmFzZ1NlY3VyaXR5R3JvdXAgPSBuZXcgU2VjdXJpdHlHcm91cCh0aGlzLCBgQXNnU2VjdXJpdHlHcm91cGAsIHtcbiAgICAgIHZwYzogdGhpcy5jbHVzdGVyLnZwYyxcbiAgICAgIGRlc2NyaXB0aW9uOiBgU2VjdXJpdHkgZ3JvdXAgZm9yIHRoZSAke3Byb3BzLmNsdXN0ZXJOYW1lfSBhdXRvIHNjYWxpbmcgZ3JvdXBgXG4gICAgfSk7XG5cbiAgICAvLyBBbGxvd3MgdGhlIGFzZ1NlY3VyaXR5R3JvdXAgdG8gdGFsayB0byB0aGUgRGF0YWJhc2Ugb24gcG9ydCA1NDMyXG4gICAgaWYgKHByb3BzLmRhdGFiYXNlQ29ubmVjdGlvbikge1xuICAgICAgdGhpcy5hc2dTZWN1cml0eUdyb3VwLmNvbm5lY3Rpb25zLmFsbG93VG8oXG4gICAgICAgIHByb3BzLmRhdGFiYXNlQ29ubmVjdGlvbixcbiAgICAgICAgUG9ydC5QT1NUR1JFU1xuICAgICAgKTtcbiAgICB9XG5cbiAgICB0aGlzLmF1dG9TY2FsaW5nR3JvdXAgPSBuZXcgQXV0b1NjYWxpbmdHcm91cCh0aGlzLCBcIkF1dG9TY2FsaW5nR3JvdXBcIiwge1xuICAgICAgYXV0b1NjYWxpbmdHcm91cE5hbWU6IGAke3Byb3BzLmNsdXN0ZXJOYW1lfUF1dG9TY2FsaW5nR3JvdXBgLFxuICAgICAgdnBjOiB0aGlzLmNsdXN0ZXIudnBjLFxuICAgICAgdnBjU3VibmV0czoge1xuICAgICAgICBzdWJuZXRUeXBlOiBTdWJuZXRUeXBlLlBVQkxJQ1xuICAgICAgfSxcbiAgICAgIHNlY3VyaXR5R3JvdXA6IHRoaXMuYXNnU2VjdXJpdHlHcm91cCxcbiAgICAgIG1pbkNhcGFjaXR5OiAyLFxuICAgICAgbWF4Q2FwYWNpdHk6IDMsXG4gICAgICBpbnN0YW5jZVR5cGU6IG5ldyBJbnN0YW5jZVR5cGUoXCJtOGcubGFyZ2VcIiksXG4gICAgICBjYXBhY2l0eVJlYmFsYW5jZTogdHJ1ZSxcbiAgICAgIGluc3RhbmNlTW9uaXRvcmluZzogTW9uaXRvcmluZy5CQVNJQyxcbiAgICAgIG1hY2hpbmVJbWFnZTogRWNzT3B0aW1pemVkSW1hZ2UuYW1hem9uTGludXgyKEFtaUhhcmR3YXJlVHlwZS5BUk0pXG4gICAgfSk7XG4gICAgdGFnUmVzb3VyY2UodGhpcy5hdXRvU2NhbGluZ0dyb3VwLCBwcm9wcy50YWdzKTtcblxuICAgIHRoaXMuYXNnQ2FwYWNpdHlQcm92aWRlciA9IG5ldyBBc2dDYXBhY2l0eVByb3ZpZGVyKFxuICAgICAgdGhpcyxcbiAgICAgIFwiQXNnQ2FwYWNpdHlQcm92aWRlclwiLFxuICAgICAge1xuICAgICAgICBhdXRvU2NhbGluZ0dyb3VwOiB0aGlzLmF1dG9TY2FsaW5nR3JvdXBcbiAgICAgIH1cbiAgICApO1xuICAgIHRhZ1Jlc291cmNlKHRoaXMuYXNnQ2FwYWNpdHlQcm92aWRlciwgcHJvcHMudGFncyk7XG5cbiAgICB0aGlzLmNsdXN0ZXIuYWRkQXNnQ2FwYWNpdHlQcm92aWRlcih0aGlzLmFzZ0NhcGFjaXR5UHJvdmlkZXIpO1xuICB9XG5cbiAgYWRkU2VjcmV0cyhwcm9wczogRWMyQ2x1c3RlclByb3BzKSB7XG4gICAgLy8gQ29udGFpbmVyIFNlY3JldHNcbiAgICBjb25zdCBjb250YWluZXJTZWNyZXQgPSBTZWNyZXQuZnJvbVNlY3JldE5hbWVWMihcbiAgICAgIHRoaXMsXG4gICAgICBgJHtwcm9wcy5jbHVzdGVyTmFtZX1TZWNyZXRgLFxuICAgICAgYC8ke3Byb3BzLmNsdXN0ZXJOYW1lfS8ke3Byb3BzLnNlcnZpY2VOYW1lfWBcbiAgICApO1xuXG4gICAgZm9yIChjb25zdCBzZWNyZXRGaWVsZCBpbiBwcm9wcy5jb250YWluZXJTZWNyZXRzKSB7XG4gICAgICB0aGlzLnNlY3JldHNbc2VjcmV0RmllbGRdID0gRWNzU2VjcmV0LmZyb21TZWNyZXRzTWFuYWdlcihcbiAgICAgICAgY29udGFpbmVyU2VjcmV0LFxuICAgICAgICBzZWNyZXRGaWVsZFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBhZGRFeGVjdXRpb25Sb2xlKHByb3BzOiBFYzJDbHVzdGVyUHJvcHMpIHtcbiAgICB0aGlzLmV4ZWN1dGlvblJvbGUgPSBuZXcgUm9sZSh0aGlzLCBgJHtwcm9wcy5zZXJ2aWNlTmFtZX1FeGVjdXRpb25Sb2xlYCwge1xuICAgICAgcm9sZU5hbWU6IGAke3Byb3BzLnNlcnZpY2VOYW1lfUV4ZWN1dGlvblJvbGVgLFxuICAgICAgZGVzY3JpcHRpb246IGAke3Byb3BzLnNlcnZpY2VOYW1lfSBFeGVjdXRpb24gUm9sZWAsXG4gICAgICBtYW5hZ2VkUG9saWNpZXM6IFtcbiAgICAgICAge1xuICAgICAgICAgIG1hbmFnZWRQb2xpY3lBcm46XG4gICAgICAgICAgICBcImFybjphd3M6aWFtOjphd3M6cG9saWN5L3NlcnZpY2Utcm9sZS9BbWF6b25FQ1NUYXNrRXhlY3V0aW9uUm9sZVBvbGljeVwiXG4gICAgICAgIH1cbiAgICAgIF0sXG4gICAgICBpbmxpbmVQb2xpY2llczoge1xuICAgICAgICBbXCJyZWFkU2VjcmV0c1wiXTogbmV3IFBvbGljeURvY3VtZW50KHtcbiAgICAgICAgICBzdGF0ZW1lbnRzOiBbXG4gICAgICAgICAgICBuZXcgUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgICAgICAgYWN0aW9uczogW1xuICAgICAgICAgICAgICAgIFwic2VjcmV0c21hbmFnZXI6R2V0U2VjcmV0VmFsdWVcIixcbiAgICAgICAgICAgICAgICBcInNlY3JldHNtYW5hZ2VyOkRlc2NyaWJlU2VjcmV0XCJcbiAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgcmVzb3VyY2VzOiBbXCIqXCJdIC8vIFRPRE86IFNldCB0aGlzIHRvIHRoZSBzZWNyZXQgQVJOXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIF1cbiAgICAgICAgfSksXG4gICAgICAgIFtcImRlY3J5cHRTZWNyZXRzXCJdOiBuZXcgUG9saWN5RG9jdW1lbnQoe1xuICAgICAgICAgIHN0YXRlbWVudHM6IFtcbiAgICAgICAgICAgIG5ldyBQb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICAgICAgICBhY3Rpb25zOiBbXCJrbXM6RGVjcnlwdFwiXSxcbiAgICAgICAgICAgICAgcmVzb3VyY2VzOiBbXCIqXCJdIC8vIFRPRE86IFNldCB0aGlzIHRvIHRoZSBLTVMgQXJuXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIF1cbiAgICAgICAgfSksXG4gICAgICAgIFtcImVjc0V4ZWN1dGVDb21tYW5kXCJdOiBuZXcgUG9saWN5RG9jdW1lbnQoe1xuICAgICAgICAgIHN0YXRlbWVudHM6IFtcbiAgICAgICAgICAgIG5ldyBQb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgICAgICAgXCJzc21tZXNzYWdlczpDcmVhdGVDb250cm9sQ2hhbm5lbFwiLFxuICAgICAgICAgICAgICAgIFwic3NtbWVzc2FnZXM6Q3JlYXRlRGF0YUNoYW5uZWxcIixcbiAgICAgICAgICAgICAgICBcInNzbW1lc3NhZ2VzOk9wZW5Db250cm9sQ2hhbm5lbFwiLFxuICAgICAgICAgICAgICAgIFwic3NtbWVzc2FnZXM6T3BlbkRhdGFDaGFubmVsXCJcbiAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgZWZmZWN0OiBFZmZlY3QuQUxMT1csXG4gICAgICAgICAgICAgIHJlc291cmNlczogW1wiKlwiXVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICBdXG4gICAgICAgIH0pXG4gICAgICB9LFxuICAgICAgYXNzdW1lZEJ5OiBuZXcgQ29tcG9zaXRlUHJpbmNpcGFsKFxuICAgICAgICBuZXcgU2VydmljZVByaW5jaXBhbChcImVjcy10YXNrcy5hbWF6b25hd3MuY29tXCIpXG4gICAgICApXG4gICAgfSk7XG4gIH1cblxuICBhZGRUYXNrRGVmaW5pdGlvbihwcm9wczogRWMyQ2x1c3RlclByb3BzKSB7XG4gICAgdGhpcy50YXNrRGVmaW5pdGlvbiA9IG5ldyBFYzJUYXNrRGVmaW5pdGlvbihcbiAgICAgIHRoaXMsXG4gICAgICBgJHtwcm9wcy5zZXJ2aWNlTmFtZX1UYXNrRGVmaW5pdGlvbmAsXG4gICAgICB7XG4gICAgICAgIC8vIGlwY01vZGU6IElwY01vZGUuSE9TVCwgVE9ETzogRmlndXJlIG91dCBpZiB3ZSB3YW50IHRoaXMgdG8gYWxsb3cgZWFzeSBpbnRlci1jb250YWluZXIgY29tbXVuaWNhdGlvblxuICAgICAgICBleGVjdXRpb25Sb2xlOiB0aGlzLmV4ZWN1dGlvblJvbGUsXG4gICAgICAgIHRhc2tSb2xlOiBuZXcgUm9sZSh0aGlzLCBgJHtwcm9wcy5zZXJ2aWNlTmFtZX1UYXNrUm9sZWAsIHtcbiAgICAgICAgICByb2xlTmFtZTogYCR7cHJvcHMuc2VydmljZU5hbWV9VGFza1JvbGVgLFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiBgJHtwcm9wcy5zZXJ2aWNlTmFtZX0gVGFzayBSb2xlYCxcbiAgICAgICAgICBpbmxpbmVQb2xpY2llczogcHJvcHMudGFza1JvbGVJbmxpbmVQb2xpY2llcyxcbiAgICAgICAgICBtYW5hZ2VkUG9saWNpZXM6IHByb3BzLnRhc2tSb2xlTWFuYWdlZFBvbGljaWVzLFxuICAgICAgICAgIGFzc3VtZWRCeTogbmV3IENvbXBvc2l0ZVByaW5jaXBhbChcbiAgICAgICAgICAgIG5ldyBTZXJ2aWNlUHJpbmNpcGFsKFwiZWNzLXRhc2tzLmFtYXpvbmF3cy5jb21cIilcbiAgICAgICAgICApXG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgKTtcbiAgICB0YWdSZXNvdXJjZSh0aGlzLnRhc2tEZWZpbml0aW9uLCBwcm9wcy50YWdzKTtcbiAgfVxuXG4gIGFkZENvbnRhaW5lckRlZmluaXRpb24ocHJvcHM6IEVjMkNsdXN0ZXJQcm9wcykge1xuICAgIHRoaXMuY29udGFpbmVyRGVmaW5pdGlvbiA9IHRoaXMudGFza0RlZmluaXRpb24uYWRkQ29udGFpbmVyKFxuICAgICAgYCR7cHJvcHMuc2VydmljZU5hbWV9Q29udGFpbmVyRGVmaW5pdGlvbmAsXG4gICAgICB7XG4gICAgICAgIGltYWdlOiB0aGlzLmdldEltYWdlKHByb3BzKSxcbiAgICAgICAgY3B1OiAxLFxuICAgICAgICBtZW1vcnlMaW1pdE1pQjogMTAyNCxcbiAgICAgICAgY29udGFpbmVyTmFtZTogcHJvcHMuc2VydmljZU5hbWUsXG4gICAgICAgIGVudmlyb25tZW50OiB7XG4gICAgICAgICAgLi4ucHJvcHMuY29udGFpbmVyRW52aXJvbm1lbnRcbiAgICAgICAgfSxcbiAgICAgICAgZW50cnlQb2ludDogcHJvcHMuY29udGFpbmVyRW50cnlQb2ludCB8fCBbXCJub2RlXCIsIFwibWFpbi5qc1wiXSxcbiAgICAgICAgY29tbWFuZDogcHJvcHMuY29udGFpbmVyQ29tbWFuZCB8fCBbYCR7cHJvcHMuY29udGFpbmVyUG9ydH1gXSxcbiAgICAgICAgc2VjcmV0czoge1xuICAgICAgICAgIC4uLnRoaXMuc2VjcmV0c1xuICAgICAgICB9LFxuICAgICAgICAvL3RvZG86IHByb3ZpZGUgaGVhbHRoIGNoZWNrIG9wdGlvbnNcbiAgICAgICAgLy8gaGVhbHRoQ2hlY2s6IHtcbiAgICAgICAgLy8gICBjb21tYW5kOiBbXG4gICAgICAgIC8vICAgICBcIkNNRC1TSEVMTFwiLFxuICAgICAgICAvLyAgICAgYHRpbWVvdXQgMTBzIC9iaW4vc2ggLWMgJzo+IC9kZXYvdGNwLzEyNy4wLjAuMS8ke3Byb3BzLmNvbnRhaW5lclBvcnR9JyB8fCBleGl0IDFgXG4gICAgICAgIC8vICAgXVxuICAgICAgICAvLyB9LFxuICAgICAgICBsb2dnaW5nOiBuZXcgQXdzTG9nRHJpdmVyKHtcbiAgICAgICAgICBzdHJlYW1QcmVmaXg6IGAvZWNzLyR7cHJvcHMuY2x1c3Rlck5hbWV9LyR7cHJvcHMuc2VydmljZU5hbWV9YCxcbiAgICAgICAgICBsb2dSZXRlbnRpb246IDE0XG4gICAgICAgIH0pLFxuICAgICAgICBwb3J0TWFwcGluZ3M6IHByb3BzLmNvbnRhaW5lclBvcnRcbiAgICAgICAgICA/IFt7IGNvbnRhaW5lclBvcnQ6IHByb3BzLmNvbnRhaW5lclBvcnQsIGhvc3RQb3J0OiAwIH1dXG4gICAgICAgICAgOiBbeyBjb250YWluZXJQb3J0OiA4MCwgaG9zdFBvcnQ6IDAgfV1cbiAgICAgIH1cbiAgICApO1xuICAgIHRhZ1Jlc291cmNlKHRoaXMuY29udGFpbmVyRGVmaW5pdGlvbiwgcHJvcHMudGFncyk7XG4gIH1cblxuICBhZGRFYzJTZXJ2aWNlKHByb3BzOiBFYzJDbHVzdGVyUHJvcHMpIHtcbiAgICB0aGlzLmVjMlNlcnZpY2UgPSBuZXcgRWMyU2VydmljZSh0aGlzLCBgJHtwcm9wcy5zZXJ2aWNlTmFtZX1FYzJTZXJ2aWNlYCwge1xuICAgICAgY2lyY3VpdEJyZWFrZXI6IHsgcm9sbGJhY2s6IHRydWUgfSxcbiAgICAgIGNsdXN0ZXI6IHRoaXMuY2x1c3RlcixcbiAgICAgIGRlc2lyZWRDb3VudDogMyxcbiAgICAgIGVuYWJsZUVDU01hbmFnZWRUYWdzOiB0cnVlLFxuICAgICAgZW5hYmxlRXhlY3V0ZUNvbW1hbmQ6IHRydWUsXG4gICAgICBoZWFsdGhDaGVja0dyYWNlUGVyaW9kOiBEdXJhdGlvbi5zZWNvbmRzKDEyMCksXG4gICAgICBzZXJ2aWNlTmFtZTogYCR7cHJvcHMuc2VydmljZU5hbWV9YCxcbiAgICAgIHRhc2tEZWZpbml0aW9uOiB0aGlzLnRhc2tEZWZpbml0aW9uLFxuICAgICAgcGxhY2VtZW50U3RyYXRlZ2llczogW1BsYWNlbWVudFN0cmF0ZWd5LnNwcmVhZEFjcm9zc0luc3RhbmNlcygpXVxuICAgIH0pO1xuICAgIHRhZ1Jlc291cmNlKHRoaXMuZWMyU2VydmljZSwgcHJvcHMudGFncyk7XG4gIH1cblxuICBhZGRTY2FsaW5nUG9saWN5KHByb3BzOiBFYzJDbHVzdGVyUHJvcHMpIHtcbiAgICB0aGlzLnNjYWxpbmdQb2xpY3kgPSBuZXcgVGFyZ2V0VHJhY2tpbmdTY2FsaW5nUG9saWN5KFxuICAgICAgdGhpcyxcbiAgICAgIGAke3Byb3BzLnNlcnZpY2VOYW1lfVNjYWxpbmdQb2xpY3lgLFxuICAgICAge1xuICAgICAgICBwb2xpY3lOYW1lOiBgJHtwcm9wcy5zZXJ2aWNlTmFtZX1TY2FsaW5nUG9saWN5YCxcbiAgICAgICAgc2NhbGluZ1RhcmdldDogbmV3IFNjYWxhYmxlVGFyZ2V0KFxuICAgICAgICAgIHRoaXMsXG4gICAgICAgICAgYCR7cHJvcHMuc2VydmljZU5hbWV9c2NhbGFibGVUYXJnZXRgLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIG1heENhcGFjaXR5OiAxMCxcbiAgICAgICAgICAgIG1pbkNhcGFjaXR5OiAyLFxuICAgICAgICAgICAgcmVzb3VyY2VJZDogYHNlcnZpY2UvJHt0aGlzLmNsdXN0ZXIuY2x1c3Rlck5hbWV9LyR7dGhpcy5lYzJTZXJ2aWNlLnNlcnZpY2VOYW1lfWAsXG4gICAgICAgICAgICBzY2FsYWJsZURpbWVuc2lvbjogXCJlY3M6c2VydmljZTpEZXNpcmVkQ291bnRcIixcbiAgICAgICAgICAgIHNlcnZpY2VOYW1lc3BhY2U6IFNlcnZpY2VOYW1lc3BhY2UuRUNTXG4gICAgICAgICAgfVxuICAgICAgICApLFxuICAgICAgICB0YXJnZXRWYWx1ZTogNTAsXG4gICAgICAgIHNjYWxlT3V0Q29vbGRvd246IER1cmF0aW9uLnNlY29uZHMoNjApLFxuICAgICAgICBzY2FsZUluQ29vbGRvd246IER1cmF0aW9uLnNlY29uZHMoNjApLFxuICAgICAgICBwcmVkZWZpbmVkTWV0cmljOlxuICAgICAgICAgIHByb3BzLnNjYWxpbmdUeXBlID09IFNjYWxpbmdUeXBlLk1FTU9SWVxuICAgICAgICAgICAgPyBQcmVkZWZpbmVkTWV0cmljLkVDU19TRVJWSUNFX0FWRVJBR0VfTUVNT1JZX1VUSUxJWkFUSU9OXG4gICAgICAgICAgICA6IFByZWRlZmluZWRNZXRyaWMuRUNTX1NFUlZJQ0VfQVZFUkFHRV9DUFVfVVRJTElaQVRJT05cbiAgICAgIH1cbiAgICApO1xuICB9XG5cbiAgYWRkTG9hZEJhbGFuY2VyKHByb3BzOiBFYzJDbHVzdGVyUHJvcHMpIHtcbiAgICB0aGlzLmxvYWRCYWxhbmNlclNlY3VyaXR5R3JvdXAgPSBuZXcgU2VjdXJpdHlHcm91cChcbiAgICAgIHRoaXMsXG4gICAgICBgTG9hZEJhbGFuY2VyU2VjdXJpdHlHcm91cGAsXG4gICAgICB7XG4gICAgICAgIHZwYzogdGhpcy5jbHVzdGVyLnZwYyxcbiAgICAgICAgZGVzY3JpcHRpb246IGBTZWN1cml0eSBncm91cCBmb3IgdGhlICR7cHJvcHMuY2x1c3Rlck5hbWV9IGxvYWQgYmFsYW5jZXJgXG4gICAgICB9XG4gICAgKTtcblxuICAgIHRoaXMubG9hZEJhbGFuY2VyU2VjdXJpdHlHcm91cC5jb25uZWN0aW9ucy5hbGxvd1RvKFxuICAgICAgdGhpcy5hc2dTZWN1cml0eUdyb3VwLFxuICAgICAgUG9ydC5hbGxUY3AoKVxuICAgICk7XG5cbiAgICB0aGlzLmxvYWRCYWxhbmNlciA9IG5ldyBBcHBsaWNhdGlvbkxvYWRCYWxhbmNlcihcbiAgICAgIHRoaXMsXG4gICAgICBgJHtwcm9wcy5jbHVzdGVyTmFtZX1Mb2FkQmFsYW5jZXJgLFxuICAgICAge1xuICAgICAgICB2cGM6IHRoaXMuY2x1c3Rlci52cGMsXG4gICAgICAgIGludGVybmV0RmFjaW5nOiB0cnVlLFxuICAgICAgICBzZWN1cml0eUdyb3VwOiB0aGlzLmxvYWRCYWxhbmNlclNlY3VyaXR5R3JvdXAsXG4gICAgICAgIGxvYWRCYWxhbmNlck5hbWU6IGAke3Byb3BzLnNlcnZpY2VOYW1lfUxvYWRCYWxhbmNlcmAsXG4gICAgICAgIHZwY1N1Ym5ldHM6IHtcbiAgICAgICAgICBzdWJuZXRUeXBlOiBTdWJuZXRUeXBlLlBVQkxJQ1xuICAgICAgICB9XG4gICAgICB9XG4gICAgKTtcbiAgICB0YWdSZXNvdXJjZSh0aGlzLmxvYWRCYWxhbmNlciwgcHJvcHMudGFncyk7XG5cbiAgICAvLyBBbGxvdyBjb25uZWN0aW9ucyB0byBlcGhlbWVyYWwgcG9ydHNcbiAgICB0aGlzLmFzZ1NlY3VyaXR5R3JvdXAuY29ubmVjdGlvbnMuYWxsb3dGcm9tKFxuICAgICAgdGhpcy5sb2FkQmFsYW5jZXJTZWN1cml0eUdyb3VwLFxuICAgICAgUG9ydC50Y3BSYW5nZSg0OTE1MiwgNjU1MzUpXG4gICAgKTtcbiAgfVxuXG4gIHJlbW92ZUF1dG9TY2FsaW5nR3JvdXAoKSB7XG4gICAgbmV3IEF3c0N1c3RvbVJlc291cmNlKHRoaXMsIFwiZGVsZXRlQXV0b3NjYWxpbmdHcm91cFwiLCB7XG4gICAgICBmdW5jdGlvbk5hbWU6IFwiZGVsZXRlQXV0b3NjYWxpbmdHcm91cFwiLFxuICAgICAgb25EZWxldGU6IHtcbiAgICAgICAgc2VydmljZTogXCJBdXRvU2NhbGluZ1wiLFxuICAgICAgICBhY3Rpb246IFwiRGVsZXRlQXV0b1NjYWxpbmdHcm91cENvbW1hbmRcIixcbiAgICAgICAgcGFyYW1ldGVyczoge1xuICAgICAgICAgIEF1dG9TY2FsaW5nR3JvdXBOYW1lOiB0aGlzLmF1dG9TY2FsaW5nR3JvdXAuYXV0b1NjYWxpbmdHcm91cE5hbWUsXG4gICAgICAgICAgRm9yY2VEZWxldGU6IHRydWVcbiAgICAgICAgfSxcbiAgICAgICAgcGh5c2ljYWxSZXNvdXJjZUlkOiBQaHlzaWNhbFJlc291cmNlSWQub2YoXCJkZWxldGVBdXRvc2NhbGluZ0dyb3VwXCIpXG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBhZGRMb2FkQmFsYW5jZXJMaXN0ZW5lcihwcm9wczogRWMyQ2x1c3RlclByb3BzKSB7XG4gICAgbGV0IGFkZExpc3RlbmVyUHJvcHM6IEJhc2VBcHBsaWNhdGlvbkxpc3RlbmVyUHJvcHMgPSB7fTtcblxuICAgIGlmICghIXByb3BzLnBhcmVudERvbWFpbikge1xuICAgICAgdGhpcy5jZXJ0aWZpY2F0ZSA9IG5ldyBDZXJ0aWZpY2F0ZShcbiAgICAgICAgdGhpcyxcbiAgICAgICAgYCR7cHJvcHMuc2VydmljZU5hbWV9Q2VydGlmaWNhdGVgLFxuICAgICAgICB7XG4gICAgICAgICAgZG9tYWluTmFtZTogYCR7cHJvcHMuc2VydmljZU5hbWV9LiR7cHJvcHMuY2x1c3Rlck5hbWV9LiR7cHJvcHMucGFyZW50RG9tYWlufWAsXG4gICAgICAgICAgdmFsaWRhdGlvbjogQ2VydGlmaWNhdGVWYWxpZGF0aW9uLmZyb21EbnModGhpcy5ob3N0ZWRab25lKVxuICAgICAgICB9XG4gICAgICApO1xuXG4gICAgICBhZGRMaXN0ZW5lclByb3BzID0ge1xuICAgICAgICBwb3J0OiA0NDMsXG4gICAgICAgIGNlcnRpZmljYXRlczogW3RoaXMuY2VydGlmaWNhdGVdXG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICBhZGRMaXN0ZW5lclByb3BzID0ge1xuICAgICAgICBwb3J0OiA4MFxuICAgICAgfTtcbiAgICB9XG5cbiAgICB0aGlzLmxvYWRCYWxhbmNlckxpc3RlbmVyID0gdGhpcy5sb2FkQmFsYW5jZXIuYWRkTGlzdGVuZXIoXG4gICAgICBgJHtwcm9wcy5zZXJ2aWNlTmFtZX1MaXN0ZW5lcmAsXG4gICAgICBhZGRMaXN0ZW5lclByb3BzXG4gICAgKTtcbiAgICB0YWdSZXNvdXJjZSh0aGlzLmxvYWRCYWxhbmNlckxpc3RlbmVyLCBwcm9wcy50YWdzKTtcbiAgfVxuXG4gIGFkZEhvc3RlZFpvbmUocHJvcHM6IEVjMkNsdXN0ZXJQcm9wcykge1xuICAgIGlmICghcHJvcHMucGFyZW50RG9tYWluKSByZXR1cm47XG5cbiAgICB0aGlzLmhvc3RlZFpvbmUgPSBIb3N0ZWRab25lLmZyb21Ib3N0ZWRab25lQXR0cmlidXRlcyh0aGlzLCBcImhvc3RlZFpvbmVcIiwge1xuICAgICAgaG9zdGVkWm9uZUlkOiBGbi5pbXBvcnRWYWx1ZShcbiAgICAgICAgYCR7cHJvcHMucGFyZW50RG9tYWluLnNwbGl0KFwiLlwiKS5qb2luKFwiXCIpfUhvc3RlZFpvbmVJZGBcbiAgICAgICksXG4gICAgICB6b25lTmFtZTogcHJvcHMucGFyZW50RG9tYWluXG4gICAgfSk7XG5cbiAgICB0aGlzLmFSZWNvcmQgPSBuZXcgQVJlY29yZChcbiAgICAgIHRoaXMsXG4gICAgICBgJHtwcm9wcy5zZXJ2aWNlTmFtZX0uJHtwcm9wcy5jbHVzdGVyTmFtZX0uJHtwcm9wcy5wYXJlbnREb21haW59QVJlY29yZGAsXG4gICAgICB7XG4gICAgICAgIHJlY29yZE5hbWU6IGAke3Byb3BzLnNlcnZpY2VOYW1lfS4ke3Byb3BzLmNsdXN0ZXJOYW1lfS4ke3Byb3BzLnBhcmVudERvbWFpbn1gLFxuICAgICAgICB6b25lOiB0aGlzLmhvc3RlZFpvbmUsXG4gICAgICAgIHRhcmdldDogUmVjb3JkVGFyZ2V0LmZyb21BbGlhcyhcbiAgICAgICAgICBuZXcgTG9hZEJhbGFuY2VyVGFyZ2V0KHRoaXMubG9hZEJhbGFuY2VyKVxuICAgICAgICApXG4gICAgICB9XG4gICAgKTtcblxuICAgIG5ldyBDZm5PdXRwdXQodGhpcywgYCR7cHJvcHMuc2VydmljZU5hbWV9QVJlY29yZGAsIHtcbiAgICAgIGtleTogYCR7cHJvcHMuc2VydmljZU5hbWV9QVJlY29yZGAsXG4gICAgICB2YWx1ZTogdGhpcy5hUmVjb3JkLmRvbWFpbk5hbWUsXG4gICAgICBleHBvcnROYW1lOiBgJHtwcm9wcy5zZXJ2aWNlTmFtZX1BUmVjb3JkYFxuICAgIH0pO1xuICB9XG5cbiAgcmVnaXN0ZXJMb2FkQmFsYW5jZXJUYXJnZXRzKHByb3BzOiBFYzJDbHVzdGVyUHJvcHMpIHtcbiAgICB0aGlzLmVjMlNlcnZpY2UucmVnaXN0ZXJMb2FkQmFsYW5jZXJUYXJnZXRzKHtcbiAgICAgIGNvbnRhaW5lck5hbWU6IHRoaXMuY29udGFpbmVyRGVmaW5pdGlvbi5jb250YWluZXJOYW1lLFxuICAgICAgY29udGFpbmVyUG9ydDogdGhpcy5jb250YWluZXJEZWZpbml0aW9uLmNvbnRhaW5lclBvcnQsXG4gICAgICBuZXdUYXJnZXRHcm91cElkOiBgJHtwcm9wcy5zZXJ2aWNlTmFtZX1UYXJnZXRHcm91cGAsXG4gICAgICBsaXN0ZW5lcjogTGlzdGVuZXJDb25maWcuYXBwbGljYXRpb25MaXN0ZW5lcih0aGlzLmxvYWRCYWxhbmNlckxpc3RlbmVyLCB7XG4gICAgICAgIHBvcnQ6IHByb3BzLmNvbnRhaW5lclBvcnQsXG4gICAgICAgIHByb3RvY29sOiBBcHBsaWNhdGlvblByb3RvY29sLkhUVFAsXG4gICAgICAgIGhlYWx0aENoZWNrOiB7XG4gICAgICAgICAgaW50ZXJ2YWw6IER1cmF0aW9uLnNlY29uZHMoMzApLFxuICAgICAgICAgIGhlYWx0aHlUaHJlc2hvbGRDb3VudDogMyxcbiAgICAgICAgICB1bmhlYWx0aHlUaHJlc2hvbGRDb3VudDogMyxcbiAgICAgICAgICBwYXRoOiBwcm9wcy5oZWFsdGhDaGVja1BhdGggfHwgXCIvXCIsXG4gICAgICAgICAgcG9ydDogXCJ0cmFmZmljLXBvcnRcIixcbiAgICAgICAgICB0aW1lb3V0OiBEdXJhdGlvbi5zZWNvbmRzKDE1KVxuICAgICAgICB9XG4gICAgICB9KVxuICAgIH0pO1xuICB9XG5cbiAgZ2V0SW1hZ2UocHJvcHM6IEVjMkNsdXN0ZXJQcm9wcyk6IENvbnRhaW5lckltYWdlIHtcbiAgICBpZiAoIXByb3BzLmVjclJlcG9zaXRvcnkpXG4gICAgICByZXR1cm4gQ29udGFpbmVySW1hZ2UuZnJvbVJlZ2lzdHJ5KFwiYW1hem9uL2FtYXpvbi1lY3Mtc2FtcGxlXCIpO1xuICAgIGlmICh0eXBlb2YgcHJvcHMuZWNyUmVwb3NpdG9yeSA9PT0gXCJzdHJpbmdcIilcbiAgICAgIHJldHVybiBDb250YWluZXJJbWFnZS5mcm9tRWNyUmVwb3NpdG9yeShcbiAgICAgICAgUmVwb3NpdG9yeS5mcm9tUmVwb3NpdG9yeU5hbWUoXG4gICAgICAgICAgdGhpcyxcbiAgICAgICAgICBcImVjclJlcG9zaXRvcnlcIixcbiAgICAgICAgICBwcm9wcy5lY3JSZXBvc2l0b3J5XG4gICAgICAgICksXG4gICAgICAgIFwibGF0ZXN0XCJcbiAgICAgICk7XG4gICAgaWYgKHByb3BzLmVjclJlcG9zaXRvcnkgaW5zdGFuY2VvZiBDb250YWluZXJJbWFnZSlcbiAgICAgIHJldHVybiBwcm9wcy5lY3JSZXBvc2l0b3J5O1xuICAgIGlmIChwcm9wcy5lY3JSZXBvc2l0b3J5IGluc3RhbmNlb2YgUmVwb3NpdG9yeSkge1xuICAgICAgcmV0dXJuIENvbnRhaW5lckltYWdlLmZyb21FY3JSZXBvc2l0b3J5KHByb3BzLmVjclJlcG9zaXRvcnksIFwibGF0ZXN0XCIpO1xuICAgIH1cbiAgICByZXR1cm4gQ29udGFpbmVySW1hZ2UuZnJvbVJlZ2lzdHJ5KFwiYW1hem9uL2FtYXpvbi1lY3Mtc2FtcGxlXCIpO1xuICB9XG5cbiAgc3RhdGljIGJ1aWxkKFxuICAgIGlkOiBzdHJpbmcsXG4gICAgcHJvcHM6IEVjMkNsdXN0ZXJQcm9wc1xuICApOiAoc2I6IFN0YWNrQnVpbGRlcikgPT4gQ29uc3RydWN0IHtcbiAgICByZXR1cm4gKHNiOiBTdGFja0J1aWxkZXIpID0+IHtcbiAgICAgIGNvbnN0IG5ld1Byb3BzOiBFYzJDbHVzdGVyUHJvcHMgPSB7XG4gICAgICAgIC4uLnByb3BzLFxuICAgICAgICAuLi57XG4gICAgICAgICAgdnBjOiAoc2IuZ2V0TmV0d29yaygpIGFzIElWcGMpIHx8IHByb3BzLnZwY1xuICAgICAgICB9XG4gICAgICB9O1xuICAgICAgcmV0dXJuIG5ldyB0aGlzKHNiLmdldFN0YWNrKCksIGlkLCBuZXdQcm9wcyk7XG4gICAgfTtcbiAgfVxufVxuIl19
|
|
@@ -14,7 +14,8 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
14
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
__exportStar(require("../../../patterns/aws/hostedZone"), exports);
|
|
18
17
|
__exportStar(require("./ipam"), exports);
|
|
19
18
|
__exportStar(require("./ipamPool"), exports);
|
|
20
|
-
|
|
19
|
+
__exportStar(require("./vpc"), exports);
|
|
20
|
+
__exportStar(require("./vpcEndpoint"), exports);
|
|
21
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWIvcmVzb3VyY2VzL2F3cy9uZXR3b3JraW5nL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSx5Q0FBdUI7QUFDdkIsNkNBQTJCO0FBQzNCLHdDQUFzQjtBQUN0QixnREFBOEIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tIFwiLi9pcGFtXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9pcGFtUG9vbFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vdnBjXCI7XG5leHBvcnQgKiBmcm9tIFwiLi92cGNFbmRwb2ludFwiO1xuIl19
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { Construct } from "constructs";
|
|
2
|
+
import { Stack, StackProps } from "aws-cdk-lib";
|
|
3
|
+
import { KeyValue } from "../../../types";
|
|
4
|
+
interface VpcEndpointProps extends StackProps {
|
|
5
|
+
vpcId: string;
|
|
6
|
+
service: string;
|
|
7
|
+
tags: KeyValue;
|
|
8
|
+
}
|
|
9
|
+
export declare class VpcEndpoint extends Construct {
|
|
10
|
+
private vpc;
|
|
11
|
+
private securityGroups;
|
|
12
|
+
constructor(scope: Construct, id: string, props: VpcEndpointProps);
|
|
13
|
+
addVpc(vpcId: string): void;
|
|
14
|
+
addSecurityGroup(service: string): void;
|
|
15
|
+
addEntrypoint(props: VpcEndpointProps): void;
|
|
16
|
+
}
|
|
17
|
+
export declare class VpcEndpointStack extends Stack {
|
|
18
|
+
constructor(scope: Construct, id: string, props: VpcEndpointProps);
|
|
19
|
+
}
|
|
20
|
+
export {};
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.VpcEndpointStack = exports.VpcEndpoint = void 0;
|
|
4
|
+
const constructs_1 = require("constructs");
|
|
5
|
+
const aws_ec2_1 = require("aws-cdk-lib/aws-ec2");
|
|
6
|
+
const securityGroup_1 = require("../iam/securityGroup");
|
|
7
|
+
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
8
|
+
const vpc_1 = require("./vpc");
|
|
9
|
+
class VpcEndpoint extends constructs_1.Construct {
|
|
10
|
+
constructor(scope, id, props) {
|
|
11
|
+
super(scope, id);
|
|
12
|
+
this.securityGroups = [];
|
|
13
|
+
this.addVpc(props.vpcId);
|
|
14
|
+
this.addSecurityGroup(props.service);
|
|
15
|
+
this.addEntrypoint(props);
|
|
16
|
+
}
|
|
17
|
+
addVpc(vpcId) {
|
|
18
|
+
this.vpc = vpc_1.Vpc.fromLookup(this, `Vpc`, {
|
|
19
|
+
vpcId: vpcId
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
addSecurityGroup(service) {
|
|
23
|
+
const securityGroup = new securityGroup_1.SecurityGroup(this, `securityGroup`, {
|
|
24
|
+
vpc: this.vpc,
|
|
25
|
+
description: `Security group for the ${this.vpc.vpcId} VPC endpoint`
|
|
26
|
+
});
|
|
27
|
+
if (service === "com.amazonaws.us-east-1.datasync") {
|
|
28
|
+
const ports = [80, 443, 22, { fromPort: 1024, toPort: 1064 }];
|
|
29
|
+
ports.forEach((port) => {
|
|
30
|
+
if (typeof port === "number") {
|
|
31
|
+
securityGroup.addIngressRule(aws_ec2_1.Peer.anyIpv4(), aws_ec2_1.Port.tcp(port), `Allow traffic on port ${port} from the VPC endpoint`);
|
|
32
|
+
}
|
|
33
|
+
else {
|
|
34
|
+
securityGroup.addIngressRule(aws_ec2_1.Peer.anyIpv4(), aws_ec2_1.Port.tcpRange(port.fromPort, port.toPort), `Allow traffic on port range ${port.fromPort}-${port.toPort} from the VPC endpoint`);
|
|
35
|
+
}
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
this.securityGroups.push(securityGroup);
|
|
39
|
+
}
|
|
40
|
+
addEntrypoint(props) {
|
|
41
|
+
new aws_ec2_1.InterfaceVpcEndpoint(this, "VpcEndpoint", {
|
|
42
|
+
vpc: this.vpc,
|
|
43
|
+
service: new aws_ec2_1.InterfaceVpcEndpointService(props.service),
|
|
44
|
+
lookupSupportedAzs: true,
|
|
45
|
+
securityGroups: this.securityGroups
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
exports.VpcEndpoint = VpcEndpoint;
|
|
50
|
+
class VpcEndpointStack extends aws_cdk_lib_1.Stack {
|
|
51
|
+
constructor(scope, id, props) {
|
|
52
|
+
super(scope, id, props);
|
|
53
|
+
new VpcEndpoint(this, "VpcEndpoint", {
|
|
54
|
+
vpcId: props.vpcId,
|
|
55
|
+
service: props.service,
|
|
56
|
+
tags: props.tags
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
exports.VpcEndpointStack = VpcEndpointStack;
|
|
61
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidnBjRW5kcG9pbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWIvcmVzb3VyY2VzL2F3cy9uZXR3b3JraW5nL3ZwY0VuZHBvaW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDJDQUF1QztBQUN2QyxpREFRNkI7QUFDN0Isd0RBQXFEO0FBQ3JELDZDQUFnRDtBQUVoRCwrQkFBNEI7QUFRNUIsTUFBYSxXQUFZLFNBQVEsc0JBQVM7SUFJeEMsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUF1QjtRQUMvRCxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBSFgsbUJBQWMsR0FBcUIsRUFBRSxDQUFDO1FBSzVDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3pCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDckMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM1QixDQUFDO0lBRUQsTUFBTSxDQUFDLEtBQWE7UUFDbEIsSUFBSSxDQUFDLEdBQUcsR0FBRyxTQUFHLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUU7WUFDckMsS0FBSyxFQUFFLEtBQUs7U0FDYixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsT0FBZTtRQUM5QixNQUFNLGFBQWEsR0FBRyxJQUFJLDZCQUFhLENBQUMsSUFBSSxFQUFFLGVBQWUsRUFBRTtZQUM3RCxHQUFHLEVBQUUsSUFBSSxDQUFDLEdBQUc7WUFDYixXQUFXLEVBQUUsMEJBQTBCLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxlQUFlO1NBQ3JFLENBQUMsQ0FBQztRQUVILElBQUksT0FBTyxLQUFLLGtDQUFrQyxFQUFFLENBQUM7WUFDbkQsTUFBTSxLQUFLLEdBQUcsQ0FBQyxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7WUFFOUQsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO2dCQUNyQixJQUFJLE9BQU8sSUFBSSxLQUFLLFFBQVEsRUFBRSxDQUFDO29CQUM3QixhQUFhLENBQUMsY0FBYyxDQUMxQixjQUFJLENBQUMsT0FBTyxFQUFFLEVBQ2QsY0FBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFDZCx5QkFBeUIsSUFBSSx3QkFBd0IsQ0FDdEQsQ0FBQztnQkFDSixDQUFDO3FCQUFNLENBQUM7b0JBQ04sYUFBYSxDQUFDLGNBQWMsQ0FDMUIsY0FBSSxDQUFDLE9BQU8sRUFBRSxFQUNkLGNBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQ3pDLCtCQUErQixJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxNQUFNLHdCQUF3QixDQUNwRixDQUFDO2dCQUNKLENBQUM7WUFDSCxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUM7UUFDRCxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBRUQsYUFBYSxDQUFDLEtBQXVCO1FBQ25DLElBQUksOEJBQW9CLENBQUMsSUFBSSxFQUFFLGFBQWEsRUFBRTtZQUM1QyxHQUFHLEVBQUUsSUFBSSxDQUFDLEdBQUc7WUFDYixPQUFPLEVBQUUsSUFBSSxxQ0FBMkIsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDO1lBQ3ZELGtCQUFrQixFQUFFLElBQUk7WUFDeEIsY0FBYyxFQUFFLElBQUksQ0FBQyxjQUFjO1NBQ3BDLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRjtBQXRERCxrQ0FzREM7QUFFRCxNQUFhLGdCQUFpQixTQUFRLG1CQUFLO0lBQ3pDLFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBdUI7UUFDL0QsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFFeEIsSUFBSSxXQUFXLENBQUMsSUFBSSxFQUFFLGFBQWEsRUFBRTtZQUNuQyxLQUFLLEVBQUUsS0FBSyxDQUFDLEtBQUs7WUFDbEIsT0FBTyxFQUFFLEtBQUssQ0FBQyxPQUFPO1lBQ3RCLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSTtTQUNqQixDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0Y7QUFWRCw0Q0FVQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQge1xuICBJbnRlcmZhY2VWcGNFbmRwb2ludCxcbiAgSW50ZXJmYWNlVnBjRW5kcG9pbnRTZXJ2aWNlLFxuICBJU2VjdXJpdHlHcm91cCxcbiAgSVZwYyxcbiAgUGVlcixcbiAgUG9ydCxcbiAgUHJvdG9jb2xcbn0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1lYzJcIjtcbmltcG9ydCB7IFNlY3VyaXR5R3JvdXAgfSBmcm9tIFwiLi4vaWFtL3NlY3VyaXR5R3JvdXBcIjtcbmltcG9ydCB7IFN0YWNrLCBTdGFja1Byb3BzIH0gZnJvbSBcImF3cy1jZGstbGliXCI7XG5pbXBvcnQgeyBLZXlWYWx1ZSB9IGZyb20gXCIuLi8uLi8uLi90eXBlc1wiO1xuaW1wb3J0IHsgVnBjIH0gZnJvbSBcIi4vdnBjXCI7XG5cbmludGVyZmFjZSBWcGNFbmRwb2ludFByb3BzIGV4dGVuZHMgU3RhY2tQcm9wcyB7XG4gIHZwY0lkOiBzdHJpbmc7XG4gIHNlcnZpY2U6IHN0cmluZztcbiAgdGFnczogS2V5VmFsdWU7XG59XG5cbmV4cG9ydCBjbGFzcyBWcGNFbmRwb2ludCBleHRlbmRzIENvbnN0cnVjdCB7XG4gIHByaXZhdGUgdnBjOiBJVnBjO1xuICBwcml2YXRlIHNlY3VyaXR5R3JvdXBzOiBJU2VjdXJpdHlHcm91cFtdID0gW107XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IFZwY0VuZHBvaW50UHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgdGhpcy5hZGRWcGMocHJvcHMudnBjSWQpO1xuICAgIHRoaXMuYWRkU2VjdXJpdHlHcm91cChwcm9wcy5zZXJ2aWNlKTtcbiAgICB0aGlzLmFkZEVudHJ5cG9pbnQocHJvcHMpO1xuICB9XG5cbiAgYWRkVnBjKHZwY0lkOiBzdHJpbmcpIHtcbiAgICB0aGlzLnZwYyA9IFZwYy5mcm9tTG9va3VwKHRoaXMsIGBWcGNgLCB7XG4gICAgICB2cGNJZDogdnBjSWRcbiAgICB9KTtcbiAgfVxuXG4gIGFkZFNlY3VyaXR5R3JvdXAoc2VydmljZTogc3RyaW5nKSB7XG4gICAgY29uc3Qgc2VjdXJpdHlHcm91cCA9IG5ldyBTZWN1cml0eUdyb3VwKHRoaXMsIGBzZWN1cml0eUdyb3VwYCwge1xuICAgICAgdnBjOiB0aGlzLnZwYyxcbiAgICAgIGRlc2NyaXB0aW9uOiBgU2VjdXJpdHkgZ3JvdXAgZm9yIHRoZSAke3RoaXMudnBjLnZwY0lkfSBWUEMgZW5kcG9pbnRgXG4gICAgfSk7XG5cbiAgICBpZiAoc2VydmljZSA9PT0gXCJjb20uYW1hem9uYXdzLnVzLWVhc3QtMS5kYXRhc3luY1wiKSB7XG4gICAgICBjb25zdCBwb3J0cyA9IFs4MCwgNDQzLCAyMiwgeyBmcm9tUG9ydDogMTAyNCwgdG9Qb3J0OiAxMDY0IH1dO1xuXG4gICAgICBwb3J0cy5mb3JFYWNoKChwb3J0KSA9PiB7XG4gICAgICAgIGlmICh0eXBlb2YgcG9ydCA9PT0gXCJudW1iZXJcIikge1xuICAgICAgICAgIHNlY3VyaXR5R3JvdXAuYWRkSW5ncmVzc1J1bGUoXG4gICAgICAgICAgICBQZWVyLmFueUlwdjQoKSxcbiAgICAgICAgICAgIFBvcnQudGNwKHBvcnQpLFxuICAgICAgICAgICAgYEFsbG93IHRyYWZmaWMgb24gcG9ydCAke3BvcnR9IGZyb20gdGhlIFZQQyBlbmRwb2ludGBcbiAgICAgICAgICApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHNlY3VyaXR5R3JvdXAuYWRkSW5ncmVzc1J1bGUoXG4gICAgICAgICAgICBQZWVyLmFueUlwdjQoKSxcbiAgICAgICAgICAgIFBvcnQudGNwUmFuZ2UocG9ydC5mcm9tUG9ydCwgcG9ydC50b1BvcnQpLFxuICAgICAgICAgICAgYEFsbG93IHRyYWZmaWMgb24gcG9ydCByYW5nZSAke3BvcnQuZnJvbVBvcnR9LSR7cG9ydC50b1BvcnR9IGZyb20gdGhlIFZQQyBlbmRwb2ludGBcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gICAgdGhpcy5zZWN1cml0eUdyb3Vwcy5wdXNoKHNlY3VyaXR5R3JvdXApO1xuICB9XG5cbiAgYWRkRW50cnlwb2ludChwcm9wczogVnBjRW5kcG9pbnRQcm9wcykge1xuICAgIG5ldyBJbnRlcmZhY2VWcGNFbmRwb2ludCh0aGlzLCBcIlZwY0VuZHBvaW50XCIsIHtcbiAgICAgIHZwYzogdGhpcy52cGMsXG4gICAgICBzZXJ2aWNlOiBuZXcgSW50ZXJmYWNlVnBjRW5kcG9pbnRTZXJ2aWNlKHByb3BzLnNlcnZpY2UpLFxuICAgICAgbG9va3VwU3VwcG9ydGVkQXpzOiB0cnVlLFxuICAgICAgc2VjdXJpdHlHcm91cHM6IHRoaXMuc2VjdXJpdHlHcm91cHNcbiAgICB9KTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgVnBjRW5kcG9pbnRTdGFjayBleHRlbmRzIFN0YWNrIHtcbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IFZwY0VuZHBvaW50UHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHByb3BzKTtcblxuICAgIG5ldyBWcGNFbmRwb2ludCh0aGlzLCBcIlZwY0VuZHBvaW50XCIsIHtcbiAgICAgIHZwY0lkOiBwcm9wcy52cGNJZCxcbiAgICAgIHNlcnZpY2U6IHByb3BzLnNlcnZpY2UsXG4gICAgICB0YWdzOiBwcm9wcy50YWdzXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@fjall/components-infrastructure",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.39",
|
|
4
4
|
"bin": {
|
|
5
5
|
"infrastructure": "bin/infrastructure.js"
|
|
6
6
|
},
|
|
@@ -56,7 +56,7 @@
|
|
|
56
56
|
"dependencies": {
|
|
57
57
|
"@aws-sdk/client-cost-explorer": "^3.717.0",
|
|
58
58
|
"@aws-sdk/client-organizations": "^3.716.0",
|
|
59
|
-
"@fjall/util": "^0.1.
|
|
59
|
+
"@fjall/util": "^0.1.39",
|
|
60
60
|
"@pepperize/cdk-organizations": "^0.7.135",
|
|
61
61
|
"aws-cdk": "^2.146.0",
|
|
62
62
|
"aws-cdk-lib": "^2.146.0",
|
|
@@ -68,5 +68,5 @@
|
|
|
68
68
|
"overrides": {
|
|
69
69
|
"@smithy/core": "2.5.5"
|
|
70
70
|
},
|
|
71
|
-
"gitHead": "
|
|
71
|
+
"gitHead": "1542daf0e61add95459cbfb90607f038b17088de"
|
|
72
72
|
}
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import { Construct } from "constructs";
|
|
2
|
-
import { Group } from "../../resources/aws/iam/identityCenter/group";
|
|
3
|
-
export interface User {
|
|
4
|
-
email: string;
|
|
5
|
-
firstName: string;
|
|
6
|
-
lastName: string;
|
|
7
|
-
groups: string[];
|
|
8
|
-
}
|
|
9
|
-
interface IdentityCenterUserProps {
|
|
10
|
-
identityStoreId: string;
|
|
11
|
-
identityCenterGroups: Group[];
|
|
12
|
-
}
|
|
13
|
-
export declare class IdentityCenterUser extends Construct {
|
|
14
|
-
constructor(scope: Construct, id: string, props: IdentityCenterUserProps);
|
|
15
|
-
}
|
|
16
|
-
export {};
|
|
@@ -1,125 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.IdentityCenterUser = void 0;
|
|
4
|
-
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
5
|
-
const customResources = require("aws-cdk-lib/custom-resources");
|
|
6
|
-
const constructs_1 = require("constructs");
|
|
7
|
-
const awsCustomResource_1 = require("../../resources/aws/utilities/awsCustomResource");
|
|
8
|
-
const usersConfig_1 = require("../../utils/usersConfig");
|
|
9
|
-
const capitalizeString_1 = require("../../utils/capitalizeString");
|
|
10
|
-
class IdentityCenterUser extends constructs_1.Construct {
|
|
11
|
-
constructor(scope, id, props) {
|
|
12
|
-
super(scope, id);
|
|
13
|
-
const users = new usersConfig_1.default().getUsers();
|
|
14
|
-
const identityStoreId = props.identityStoreId;
|
|
15
|
-
const userCount = users.length;
|
|
16
|
-
for (let i = 0; i < userCount; i++) {
|
|
17
|
-
const user = users[i];
|
|
18
|
-
const givenName = (0, capitalizeString_1.capitalizeString)(user.firstName);
|
|
19
|
-
const familyName = (0, capitalizeString_1.capitalizeString)(user.lastName);
|
|
20
|
-
const userParams = {
|
|
21
|
-
IdentityStoreId: identityStoreId,
|
|
22
|
-
UserName: user.email,
|
|
23
|
-
DisplayName: `${givenName} ${familyName}`,
|
|
24
|
-
Name: {
|
|
25
|
-
FamilyName: user.lastName,
|
|
26
|
-
GivenName: user.firstName
|
|
27
|
-
},
|
|
28
|
-
Emails: [
|
|
29
|
-
{
|
|
30
|
-
Primary: true,
|
|
31
|
-
Value: user.email
|
|
32
|
-
}
|
|
33
|
-
]
|
|
34
|
-
};
|
|
35
|
-
const createUser = new awsCustomResource_1.AwsCustomResource(this, `createUser${givenName}${familyName}`, {
|
|
36
|
-
functionName: "createUsers",
|
|
37
|
-
onCreate: {
|
|
38
|
-
service: "IdentityStore",
|
|
39
|
-
action: "createUser",
|
|
40
|
-
parameters: userParams,
|
|
41
|
-
physicalResourceId: customResources.PhysicalResourceId.of("createUsers")
|
|
42
|
-
},
|
|
43
|
-
onUpdate: {
|
|
44
|
-
service: "IdentityStore",
|
|
45
|
-
action: "updateUser",
|
|
46
|
-
parameters: userParams,
|
|
47
|
-
physicalResourceId: customResources.PhysicalResourceId.of("updateUsers")
|
|
48
|
-
},
|
|
49
|
-
resourceType: "Custom::IdentityCenterUsers"
|
|
50
|
-
});
|
|
51
|
-
new awsCustomResource_1.AwsCustomResource(this, `deleteUser${givenName}${familyName}`, {
|
|
52
|
-
functionName: "deleteUsers",
|
|
53
|
-
onDelete: {
|
|
54
|
-
service: "IdentityStore",
|
|
55
|
-
action: "deleteUser",
|
|
56
|
-
parameters: {
|
|
57
|
-
IdentityStoreId: identityStoreId,
|
|
58
|
-
UserId: createUser.getResponseField("UserId")
|
|
59
|
-
}
|
|
60
|
-
},
|
|
61
|
-
resourceType: "Custom::IdentityCenterUsers"
|
|
62
|
-
});
|
|
63
|
-
new aws_cdk_lib_1.CfnOutput(this, `UserId${givenName}${familyName}`, {
|
|
64
|
-
key: `UserId${givenName}${familyName}`,
|
|
65
|
-
value: createUser.getResponseField("UserId"),
|
|
66
|
-
exportName: `UserId${givenName}${familyName}`
|
|
67
|
-
});
|
|
68
|
-
// props.identityCenterGroups.forEach((identityCenterGroup))
|
|
69
|
-
user.groups.forEach((group) => {
|
|
70
|
-
const identityCenterGroup = props.identityCenterGroups.find((identityCenterGroup) => identityCenterGroup.displayName === group);
|
|
71
|
-
if (!identityCenterGroup) {
|
|
72
|
-
throw new Error(`Group ${group} does not exist in Identity Center Groups`);
|
|
73
|
-
}
|
|
74
|
-
const groupId = identityCenterGroup.attrGroupId;
|
|
75
|
-
const groupName = identityCenterGroup.displayName;
|
|
76
|
-
const groupMembershipId = new awsCustomResource_1.AwsCustomResource(this, `createGroupMembership${givenName}${familyName}To${groupName}`, {
|
|
77
|
-
functionName: "createGroupMembership",
|
|
78
|
-
onCreate: {
|
|
79
|
-
service: "IdentityStore",
|
|
80
|
-
action: "createGroupMembership",
|
|
81
|
-
parameters: {
|
|
82
|
-
GroupId: groupId,
|
|
83
|
-
IdentityStoreId: identityStoreId,
|
|
84
|
-
MemberId: {
|
|
85
|
-
UserId: createUser.getResponseField("UserId")
|
|
86
|
-
}
|
|
87
|
-
},
|
|
88
|
-
physicalResourceId: customResources.PhysicalResourceId.of(`createGroupMembership${groupName}`)
|
|
89
|
-
},
|
|
90
|
-
onUpdate: {
|
|
91
|
-
service: "IdentityStore",
|
|
92
|
-
action: "createGroupMembership",
|
|
93
|
-
parameters: {
|
|
94
|
-
GroupId: groupId,
|
|
95
|
-
IdentityStoreId: identityStoreId,
|
|
96
|
-
MemberId: {
|
|
97
|
-
UserId: createUser.getResponseField("UserId")
|
|
98
|
-
}
|
|
99
|
-
},
|
|
100
|
-
physicalResourceId: customResources.PhysicalResourceId.of(`updateGroupMembership${groupName}`)
|
|
101
|
-
}
|
|
102
|
-
});
|
|
103
|
-
new awsCustomResource_1.AwsCustomResource(this, `deleteGroupMembership${givenName}${familyName}From${groupName}`, {
|
|
104
|
-
functionName: "deleteGroupMembership",
|
|
105
|
-
onDelete: {
|
|
106
|
-
service: "IdentityStore",
|
|
107
|
-
action: "deleteGroupMembership",
|
|
108
|
-
parameters: {
|
|
109
|
-
IdentityStoreId: identityStoreId,
|
|
110
|
-
MembershipId: groupMembershipId.getResponseField("MembershipId")
|
|
111
|
-
}
|
|
112
|
-
},
|
|
113
|
-
resourceType: "Custom::IdentityCenterUsers"
|
|
114
|
-
});
|
|
115
|
-
new aws_cdk_lib_1.CfnOutput(this, `GroupMembershipId${givenName}${familyName}${groupName}`, {
|
|
116
|
-
key: `GroupMembershipId${givenName}${familyName}${groupName}`,
|
|
117
|
-
value: groupMembershipId.getResponseField("MembershipId"),
|
|
118
|
-
exportName: `GroupMembershipId${givenName}${familyName}${groupName}`
|
|
119
|
-
});
|
|
120
|
-
});
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
exports.IdentityCenterUser = IdentityCenterUser;
|
|
125
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWRlbnRpdHlDZW50ZXJVc2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vbGliL2NvbmZpZy9hd3MvaWRlbnRpdHlDZW50ZXJVc2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDZDQUF3QztBQUN4QyxnRUFBZ0U7QUFDaEUsMkNBQXVDO0FBQ3ZDLHVGQUFvRjtBQUNwRix5REFBa0Q7QUFFbEQsbUVBQWdFO0FBNEJoRSxNQUFhLGtCQUFtQixTQUFRLHNCQUFTO0lBQy9DLFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBOEI7UUFDdEUsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVqQixNQUFNLEtBQUssR0FBVyxJQUFJLHFCQUFXLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNuRCxNQUFNLGVBQWUsR0FBRyxLQUFLLENBQUMsZUFBZSxDQUFDO1FBRTlDLE1BQU0sU0FBUyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUM7UUFDL0IsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFNBQVMsRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUNsQyxNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDdEIsTUFBTSxTQUFTLEdBQUcsSUFBQSxtQ0FBZ0IsRUFBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDbkQsTUFBTSxVQUFVLEdBQUcsSUFBQSxtQ0FBZ0IsRUFBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDbkQsTUFBTSxVQUFVLEdBQXlCO2dCQUN2QyxlQUFlLEVBQUUsZUFBZTtnQkFDaEMsUUFBUSxFQUFFLElBQUksQ0FBQyxLQUFLO2dCQUNwQixXQUFXLEVBQUUsR0FBRyxTQUFTLElBQUksVUFBVSxFQUFFO2dCQUN6QyxJQUFJLEVBQUU7b0JBQ0osVUFBVSxFQUFFLElBQUksQ0FBQyxRQUFRO29CQUN6QixTQUFTLEVBQUUs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Q0FDRjtBQXZKRCxnREF1SkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDZm5PdXRwdXQgfSBmcm9tIFwiYXdzLWNkay1saWJcIjtcbmltcG9ydCAqIGFzIGN1c3RvbVJlc291cmNlcyBmcm9tIFwiYXdzLWNkay1saWIvY3VzdG9tLXJlc291cmNlc1wiO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB7IEF3c0N1c3RvbVJlc291cmNlIH0gZnJvbSBcIi4uLy4uL3Jlc291cmNlcy9hd3MvdXRpbGl0aWVzL2F3c0N1c3RvbVJlc291cmNlXCI7XG5pbXBvcnQgVXNlcnNDb25maWcgZnJvbSBcIi4uLy4uL3V0aWxzL3VzZXJzQ29uZmlnXCI7XG5pbXBvcnQgeyBHcm91cCB9IGZyb20gXCIuLi8uLi9yZXNvdXJjZXMvYXdzL2lhbS9pZGVudGl0eUNlbnRlci9ncm91cFwiO1xuaW1wb3J0IHsgY2FwaXRhbGl6ZVN0cmluZyB9IGZyb20gXCIuLi8uLi91dGlscy9jYXBpdGFsaXplU3RyaW5nXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVXNlciB7XG4gIGVtYWlsOiBzdHJpbmc7XG4gIGZpcnN0TmFtZTogc3RyaW5nO1xuICBsYXN0TmFtZTogc3RyaW5nO1xuICBncm91cHM6IHN0cmluZ1tdO1xufVxuXG5pbnRlcmZhY2UgY3JlYXRlVXNlclBhcmFtZXRlcnMge1xuICBJZGVudGl0eVN0b3JlSWQ6IHN0cmluZztcbiAgVXNlck5hbWU6IHN0cmluZztcbiAgRGlzcGxheU5hbWU6IHN0cmluZztcbiAgTmFtZToge1xuICAgIEZhbWlseU5hbWU6IHN0cmluZztcbiAgICBHaXZlbk5hbWU6IHN0cmluZztcbiAgfTtcbiAgRW1haWxzOiB7XG4gICAgUHJpbWFyeTogYm9vbGVhbjtcbiAgICBWYWx1ZTogc3RyaW5nO1xuICB9W107XG59XG5cbmludGVyZmFjZSBJZGVudGl0eUNlbnRlclVzZXJQcm9wcyB7XG4gIGlkZW50aXR5U3RvcmVJZDogc3RyaW5nO1xuICBpZGVudGl0eUNlbnRlckdyb3VwczogR3JvdXBbXTtcbn1cblxuZXhwb3J0IGNsYXNzIElkZW50aXR5Q2VudGVyVXNlciBleHRlbmRzIENvbnN0cnVjdCB7XG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBJZGVudGl0eUNlbnRlclVzZXJQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICBjb25zdCB1c2VyczogVXNlcltdID0gbmV3IFVzZXJzQ29uZmlnKCkuZ2V0VXNlcnMoKTtcbiAgICBjb25zdCBpZGVudGl0eVN0b3JlSWQgPSBwcm9wcy5pZGVudGl0eVN0b3JlSWQ7XG5cbiAgICBjb25zdCB1c2VyQ291bnQgPSB1c2Vycy5sZW5ndGg7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB1c2VyQ291bnQ7IGkrKykge1xuICAgICAgY29uc3QgdXNlciA9IHVzZXJzW2ldO1xuICAgICAgY29uc3QgZ2l2ZW5OYW1lID0gY2FwaXRhbGl6ZVN0cmluZyh1c2VyLmZpcnN0TmFtZSk7XG4gICAgICBjb25zdCBmYW1pbHlOYW1lID0gY2FwaXRhbGl6ZVN0cmluZyh1c2VyLmxhc3ROYW1lKTtcbiAgICAgIGNvbnN0IHVzZXJQYXJhbXM6IGNyZWF0ZVVzZXJQYXJhbWV0ZXJzID0ge1xuICAgICAgICBJZGVudGl0eVN0b3JlSWQ6IGlkZW50aXR5U3RvcmVJZCxcbiAgICAgICAgVXNlck5hbWU6IHVzZXIuZW1haWwsXG4gICAgICAgIERpc3BsYXlOYW1lOiBgJHtnaXZlbk5hbWV9ICR7ZmFtaWx5TmFtZX1gLFxuICAgICAgICBOYW1lOiB7XG4gICAgICAgICAgRmFtaWx5TmFtZTogdXNlci5sYXN0TmFtZSxcbiAgICAgICAgICBHaXZlbk5hbWU6IHVzZXIuZmlyc3ROYW1lXG4gICAgICAgIH0sXG4gICAgICAgIEVtYWlsczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIFByaW1hcnk6IHRydWUsXG4gICAgICAgICAgICBWYWx1ZTogdXNlci5lbWFpbFxuICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgICAgfTtcblxuICAgICAgY29uc3QgY3JlYXRlVXNlciA9IG5ldyBBd3NDdXN0b21SZXNvdXJjZShcbiAgICAgICAgdGhpcyxcbiAgICAgICAgYGNyZWF0ZVVzZXIke2dpdmVuTmFtZX0ke2ZhbWlseU5hbWV9YCxcbiAgICAgICAge1xuICAgICAgICAgIGZ1bmN0aW9uTmFtZTogXCJjcmVhdGVVc2Vyc1wiLFxuICAgICAgICAgIG9uQ3JlYXRlOiB7XG4gICAgICAgICAgICBzZXJ2aWNlOiBcIklkZW50aXR5U3RvcmVcIixcbiAgICAgICAgICAgIGFjdGlvbjogXCJjcmVhdGVVc2VyXCIsIC8vIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NKYXZhU2NyaXB0U0RLL2xhdGVzdC9BV1MvSWRlbnRpdHlTdG9yZS5odG1sI2NyZWF0ZVVzZXItcHJvcGVydHlcbiAgICAgICAgICAgIHBhcmFtZXRlcnM6IHVzZXJQYXJhbXMsXG4gICAgICAgICAgICBwaHlzaWNhbFJlc291cmNlSWQ6XG4gICAgICAgICAgICAgIGN1c3RvbVJlc291cmNlcy5QaHlzaWNhbFJlc291cmNlSWQub2YoXCJjcmVhdGVVc2Vyc1wiKVxuICAgICAgICAgIH0sXG4gICAgICAgICAgb25VcGRhdGU6IHtcbiAgICAgICAgICAgIHNlcnZpY2U6IFwiSWRlbnRpdHlTdG9yZVwiLFxuICAgICAgICAgICAgYWN0aW9uOiBcInVwZGF0ZVVzZXJcIixcbiAgICAgICAgICAgIHBhcmFtZXRlcnM6IHVzZXJQYXJhbXMsXG4gICAgICAgICAgICBwaHlzaWNhbFJlc291cmNlSWQ6XG4gICAgICAgICAgICAgIGN1c3RvbVJlc291cmNlcy5QaHlzaWNhbFJlc291cmNlSWQub2YoXCJ1cGRhdGVVc2Vyc1wiKVxuICAgICAgICAgIH0sXG4gICAgICAgICAgcmVzb3VyY2VUeXBlOiBcIkN1c3RvbTo6SWRlbnRpdHlDZW50ZXJVc2Vyc1wiXG4gICAgICAgIH1cbiAgICAgICk7XG5cbiAgICAgIG5ldyBBd3NDdXN0b21SZXNvdXJjZSh0aGlzLCBgZGVsZXRlVXNlciR7Z2l2ZW5OYW1lfSR7ZmFtaWx5TmFtZX1gLCB7XG4gICAgICAgIGZ1bmN0aW9uTmFtZTogXCJkZWxldGVVc2Vyc1wiLFxuICAgICAgICBvbkRlbGV0ZToge1xuICAgICAgICAgIHNlcnZpY2U6IFwiSWRlbnRpdHlTdG9yZVwiLFxuICAgICAgICAgIGFjdGlvbjogXCJkZWxldGVVc2VyXCIsIC8vIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NKYXZhU2NyaXB0U0RLL2xhdGVzdC9BV1MvSWRlbnRpdHlTdG9yZS5odG1sI2RlbGV0ZVVzZXItcHJvcGVydHlcbiAgICAgICAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICAgICAgICBJZGVudGl0eVN0b3JlSWQ6IGlkZW50aXR5U3RvcmVJZCxcbiAgICAgICAgICAgIFVzZXJJZDogY3JlYXRlVXNlci5nZXRSZXNwb25zZUZpZWxkKFwiVXNlcklkXCIpXG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICByZXNvdXJjZVR5cGU6IFwiQ3VzdG9tOjpJZGVudGl0eUNlbnRlclVzZXJzXCJcbiAgICAgIH0pO1xuXG4gICAgICBuZXcgQ2ZuT3V0cHV0KHRoaXMsIGBVc2VySWQke2dpdmVuTmFtZX0ke2ZhbWlseU5hbWV9YCwge1xuICAgICAgICBrZXk6IGBVc2VySWQke2dpdmVuTmFtZX0ke2ZhbWlseU5hbWV9YCxcbiAgICAgICAgdmFsdWU6IGNyZWF0ZVVzZXIuZ2V0UmVzcG9uc2VGaWVsZChcIlVzZXJJZFwiKSxcbiAgICAgICAgZXhwb3J0TmFtZTogYFVzZXJJZCR7Z2l2ZW5OYW1lfSR7ZmFtaWx5TmFtZX1gXG4gICAgICB9KTtcblxuICAgICAgLy8gcHJvcHMuaWRlbnRpdHlDZW50ZXJHcm91cHMuZm9yRWFjaCgoaWRlbnRpdHlDZW50ZXJHcm91cCkpXG5cbiAgICAgIHVzZXIuZ3JvdXBzLmZvckVhY2goKGdyb3VwKSA9PiB7XG4gICAgICAgIGNvbnN0IGlkZW50aXR5Q2VudGVyR3JvdXAgPSBwcm9wcy5pZGVudGl0eUNlbnRlckdyb3Vwcy5maW5kKFxuICAgICAgICAgIChpZGVudGl0eUNlbnRlckdyb3VwKSA9PiBpZGVudGl0eUNlbnRlckdyb3VwLmRpc3BsYXlOYW1lID09PSBncm91cFxuICAgICAgICApO1xuXG4gICAgICAgIGlmICghaWRlbnRpdHlDZW50ZXJHcm91cCkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgIGBHcm91cCAke2dyb3VwfSBkb2VzIG5vdCBleGlzdCBpbiBJZGVudGl0eSBDZW50ZXIgR3JvdXBzYFxuICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBncm91cElkID0gaWRlbnRpdHlDZW50ZXJHcm91cC5hdHRyR3JvdXBJZDtcbiAgICAgICAgY29uc3QgZ3JvdXBOYW1lID0gaWRlbnRpdHlDZW50ZXJHcm91cC5kaXNwbGF5TmFtZTtcblxuICAgICAgICBjb25zdCBncm91cE1lbWJlcnNoaXBJZCA9IG5ldyBBd3NDdXN0b21SZXNvdXJjZShcbiAgICAgICAgICB0aGlzLFxuICAgICAgICAgIGBjcmVhdGVHcm91cE1lbWJlcnNoaXAke2dpdmVuTmFtZX0ke2ZhbWlseU5hbWV9VG8ke2dyb3VwTmFtZX1gLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGZ1bmN0aW9uTmFtZTogXCJjcmVhdGVHcm91cE1lbWJlcnNoaXBcIixcbiAgICAgICAgICAgIG9uQ3JlYXRlOiB7XG4gICAgICAgICAgICAgIHNlcnZpY2U6IFwiSWRlbnRpdHlTdG9yZVwiLFxuICAgICAgICAgICAgICBhY3Rpb246IFwiY3JlYXRlR3JvdXBNZW1iZXJzaGlwXCIsXG4gICAgICAgICAgICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgICAgICAgICAgICBHcm91cElkOiBncm91cElkLFxuICAgICAgICAgICAgICAgIElkZW50aXR5U3RvcmVJZDogaWRlbnRpdHlTdG9yZUlkLFxuICAgICAgICAgICAgICAgIE1lbWJlcklkOiB7XG4gICAgICAgICAgICAgICAgICBVc2VySWQ6IGNyZWF0ZVVzZXIuZ2V0UmVzcG9uc2VGaWVsZChcIlVzZXJJZFwiKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgcGh5c2ljYWxSZXNvdXJjZUlkOiBjdXN0b21SZXNvdXJjZXMuUGh5c2ljYWxSZXNvdXJjZUlkLm9mKFxuICAgICAgICAgICAgICAgIGBjcmVhdGVHcm91cE1lbWJlcnNoaXAke2dyb3VwTmFtZX1gXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBvblVwZGF0ZToge1xuICAgICAgICAgICAgICBzZXJ2aWNlOiBcIklkZW50aXR5U3RvcmVcIixcbiAgICAgICAgICAgICAgYWN0aW9uOiBcImNyZWF0ZUdyb3VwTWVtYmVyc2hpcFwiLFxuICAgICAgICAgICAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICAgICAgICAgICAgR3JvdXBJZDogZ3JvdXBJZCxcbiAgICAgICAgICAgICAgICBJZGVudGl0eVN0b3JlSWQ6IGlkZW50aXR5U3RvcmVJZCxcbiAgICAgICAgICAgICAgICBNZW1iZXJJZDoge1xuICAgICAgICAgICAgICAgICAgVXNlcklkOiBjcmVhdGVVc2VyLmdldFJlc3BvbnNlRmllbGQoXCJVc2VySWRcIilcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHBoeXNpY2FsUmVzb3VyY2VJZDogY3VzdG9tUmVzb3VyY2VzLlBoeXNpY2FsUmVzb3VyY2VJZC5vZihcbiAgICAgICAgICAgICAgICBgdXBkYXRlR3JvdXBNZW1iZXJzaGlwJHtncm91cE5hbWV9YFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICApO1xuXG4gICAgICAgIG5ldyBBd3NDdXN0b21SZXNvdXJjZShcbiAgICAgICAgICB0aGlzLFxuICAgICAgICAgIGBkZWxldGVHcm91cE1lbWJlcnNoaXAke2dpdmVuTmFtZX0ke2ZhbWlseU5hbWV9RnJvbSR7Z3JvdXBOYW1lfWAsXG4gICAgICAgICAge1xuICAgICAgICAgICAgZnVuY3Rpb25OYW1lOiBcImRlbGV0ZUdyb3VwTWVtYmVyc2hpcFwiLFxuICAgICAgICAgICAgb25EZWxldGU6IHtcbiAgICAgICAgICAgICAgc2VydmljZTogXCJJZGVudGl0eVN0b3JlXCIsXG4gICAgICAgICAgICAgIGFjdGlvbjogXCJkZWxldGVHcm91cE1lbWJlcnNoaXBcIixcbiAgICAgICAgICAgICAgcGFyYW1ldGVyczoge1xuICAgICAgICAgICAgICAgIElkZW50aXR5U3RvcmVJZDogaWRlbnRpdHlTdG9yZUlkLFxuICAgICAgICAgICAgICAgIE1lbWJlcnNoaXBJZDogZ3JvdXBNZW1iZXJzaGlwSWQuZ2V0UmVzcG9uc2VGaWVsZChcIk1lbWJlcnNoaXBJZFwiKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcmVzb3VyY2VUeXBlOiBcIkN1c3RvbTo6SWRlbnRpdHlDZW50ZXJVc2Vyc1wiXG4gICAgICAgICAgfVxuICAgICAgICApO1xuXG4gICAgICAgIG5ldyBDZm5PdXRwdXQoXG4gICAgICAgICAgdGhpcyxcbiAgICAgICAgICBgR3JvdXBNZW1iZXJzaGlwSWQke2dpdmVuTmFtZX0ke2ZhbWlseU5hbWV9JHtncm91cE5hbWV9YCxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBrZXk6IGBHcm91cE1lbWJlcnNoaXBJZCR7Z2l2ZW5OYW1lfSR7ZmFtaWx5TmFtZX0ke2dyb3VwTmFtZX1gLFxuICAgICAgICAgICAgdmFsdWU6IGdyb3VwTWVtYmVyc2hpcElkLmdldFJlc3BvbnNlRmllbGQoXCJNZW1iZXJzaGlwSWRcIiksXG4gICAgICAgICAgICBleHBvcnROYW1lOiBgR3JvdXBNZW1iZXJzaGlwSWQke2dpdmVuTmFtZX0ke2ZhbWlseU5hbWV9JHtncm91cE5hbWV9YFxuICAgICAgICAgIH1cbiAgICAgICAgKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxufVxuIl19
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
import { Stack } from "aws-cdk-lib";
|
|
2
|
-
import { Construct } from "constructs";
|
|
3
|
-
import { Repository } from "aws-cdk-lib/aws-ecr";
|
|
4
|
-
export interface StackBuilder {
|
|
5
|
-
addConstruct(resource: Construct): StackBuilder;
|
|
6
|
-
addResource(fn: (stackBuilder: StackBuilder) => Construct): StackBuilder;
|
|
7
|
-
addNetwork(resource: Construct): StackBuilder;
|
|
8
|
-
addNetwork(fn: (stackBuilder: StackBuilder) => Construct): StackBuilder;
|
|
9
|
-
addNetwork(resource: Construct | string): StackBuilder;
|
|
10
|
-
getStack(): Stack;
|
|
11
|
-
getNetwork(): Construct;
|
|
12
|
-
}
|
|
13
|
-
export interface AwsStackProps {
|
|
14
|
-
readonly accountId?: string;
|
|
15
|
-
readonly region?: string;
|
|
16
|
-
accountName?: string;
|
|
17
|
-
}
|
|
18
|
-
export default class AwsStack implements StackBuilder {
|
|
19
|
-
readonly resources: {
|
|
20
|
-
[key: string]: Construct;
|
|
21
|
-
};
|
|
22
|
-
private stack;
|
|
23
|
-
private network;
|
|
24
|
-
private containerRegistry;
|
|
25
|
-
constructor(id: string, dependencies?: AwsStack | AwsStack[], props?: AwsStackProps);
|
|
26
|
-
private addDependencies;
|
|
27
|
-
private getCdkStack;
|
|
28
|
-
private getStackProps;
|
|
29
|
-
private isConnectable;
|
|
30
|
-
addConstruct(construct: Construct): AwsStack;
|
|
31
|
-
addResource(fn: (stackBuilder: StackBuilder) => Construct): AwsStack;
|
|
32
|
-
addNetwork(resource: Construct): AwsStack;
|
|
33
|
-
addNetwork(resource: (stackBuilder: StackBuilder) => Construct): AwsStack;
|
|
34
|
-
addContainerRegistry(resource: Repository): AwsStack;
|
|
35
|
-
addContainerRegistry(resource: (stackBuilder: StackBuilder) => Repository): AwsStack;
|
|
36
|
-
getStack(): Stack;
|
|
37
|
-
getNetwork(): Construct;
|
|
38
|
-
getContainerRegistry(): Repository;
|
|
39
|
-
getResource(identifier: string): Construct;
|
|
40
|
-
connect(from: Construct | string, to: Construct | string, port?: number): this;
|
|
41
|
-
}
|