@pwrdrvr/microapps-cdk 0.3.5-alpha.5 → 0.3.5
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 +3 -3
- package/README.md +7 -1
- package/changelog.md +1 -1
- package/lib/MicroApps.js +1 -1
- package/lib/MicroAppsAPIGwy.js +1 -1
- package/lib/MicroAppsCF.js +1 -1
- package/lib/MicroAppsChildDeployer.js +1 -1
- package/lib/MicroAppsEdgeToOrigin.js +1 -1
- package/lib/MicroAppsS3.js +1 -1
- package/lib/MicroAppsSvcs.js +1 -1
- package/lib/MicroAppsTable.js +1 -1
- package/lib/microapps-deployer/index.js +1 -1
- package/lib/microapps-deployer/index.js.map +2 -2
- package/package.json +1 -1
- package/releasetag.txt +1 -1
- package/version.txt +1 -1
package/lib/MicroAppsSvcs.js
CHANGED
|
@@ -434,5 +434,5 @@ class MicroAppsSvcs extends constructs_1.Construct {
|
|
|
434
434
|
}
|
|
435
435
|
exports.MicroAppsSvcs = MicroAppsSvcs;
|
|
436
436
|
_a = JSII_RTTI_SYMBOL_1;
|
|
437
|
-
MicroAppsSvcs[_a] = { fqn: "@pwrdrvr/microapps-cdk.MicroAppsSvcs", version: "0.3.5
|
|
437
|
+
MicroAppsSvcs[_a] = { fqn: "@pwrdrvr/microapps-cdk.MicroAppsSvcs", version: "0.3.5" };
|
|
438
438
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWljcm9BcHBzU3Zjcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9NaWNyb0FwcHNTdmNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsMkJBQWdDO0FBQ2hDLDZCQUE2QjtBQUM3QiwwREFBMEQ7QUFDMUQsMEVBQTBFO0FBQzFFLDBFQUEwRTtBQUMxRSw2Q0FBc0Y7QUFFdEYscURBQXFEO0FBQ3JELDJDQUEyQztBQUMzQyxpREFBaUQ7QUFDakQsOERBQThEO0FBQzlELDZDQUE2QztBQUM3Qyx5Q0FBeUM7QUFDekMsMkNBQXVDO0FBNkx2Qzs7O0dBR0c7QUFDSCxNQUFhLGFBQWMsU0FBUSxzQkFBUztJQWlCMUMsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUEwQjs7UUFDbEUsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVqQixJQUFJLEtBQUssS0FBSyxTQUFTLEVBQUU7WUFDdkIsTUFBTSxJQUFJLEtBQUssQ0FBQywyQkFBMkIsQ0FBQyxDQUFDO1NBQzlDO1FBRUQsTUFBTSxFQUNKLFVBQVUsRUFDVixhQUFhLEVBQ2IsaUJBQWlCLEVBQ2pCLGVBQWUsR0FBRyxzQkFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFDckMsbUJBQW1CLEdBQUcsRUFBRSxFQUN4QiwyQkFBMkIsR0FBRyxFQUFFLEVBQ2hDLG9CQUFvQixHQUFHLEtBQUssRUFDNUIsTUFBTSxFQUNOLE9BQU8sRUFDUCxhQUFhLEVBQ2IsYUFBYSxFQUNiLGVBQWUsRUFDZixjQUFjLEdBQUcsRUFBRSxFQUNuQix1QkFBdUIsR0FBRyxJQUFJLEdBQy9CLEdBQUcsS0FBSyxDQUFDO1FBRVYsSUFBSSxvQkFBb0IsS0FBSyxJQUFJLEVBQUU7WUFDakMsSUFBSSxtQkFBbUIsQ0FBQyxNQUFNLEtBQUssQ0FBQyxJQUFJLDJCQUEyQixDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7Z0JBQ2hGLE1BQU0sSUFBSSxLQUFLLENBQ2Isd0hBQXdILENBQ3pILENBQUM7YUFDSDtTQUNGO1FBRUQsRUFBRTtRQUNGLGlCQUFpQjtRQUNqQixFQUFFO1FBQ0YsSUFBSSxLQUFLLENBQUMsS0FBSyxLQUFLLFNBQVMsRUFBRTtZQUM3Qiw2QkFBNkI7WUFDN0IsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLFFBQVEsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRTtnQkFDbkQsU0FBUyxFQUFFLGFBQWE7b0JBQ3RCLENBQUMsQ0FBQyxHQUFHLGFBQWEsR0FBRyxlQUFlLEVBQUU7b0JBQ3RDLENBQUMsQ0FBQywwQkFBWSxDQUFDLGtCQUFrQjtnQkFDbkMsV0FBVyxFQUFFLFFBQVEsQ0FBQyxXQUFXLENBQUMsZUFBZTtnQkFDakQsWUFBWSxFQUFFO29CQUNaLElBQUksRUFBRSxJQUFJO29CQUNWLElBQUksRUFBRSxRQUFRLENBQUMsYUFBYSxDQUFDLE1BQU07aUJBQ3BDO2dCQUNELE9BQU8sRUFBRTtvQkFDUCxJQUFJLEVBQUUsSUFBSTtvQkFDVixJQUFJLEVBQUUsUUFBUSxDQUFDLGFBQWEsQ0FBQyxNQUFNO2lCQUNwQztnQkFDRCxhQUFhO2FBQ2QsQ0FBQyxDQUFDO1lBQ0gsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDO1NBQ2hDO2FBQU07WUFDTCxJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUM7U0FDM0I7UUFFRCxFQUFFO1FBQ0YsMkJBQTJCO1FBQzNCLEVBQUU7UUFFRixrQ0FBa0M7UUFDbEMsTUFBTSxpQkFBaUIsR0FBRyxhQUFhO1lBQ3JDLENBQUMsQ0FBQyxHQUFHLGFBQWEsbUJBQW1CLGVBQWUsRUFBRTtZQUN0RCxDQUFDLENBQUMsU0FBUyxDQUFDO1FBQ2QsTUFBTSxtQkFBbUIsR0FBRyxhQUFhO1lBQ3ZDLENBQUMsQ0FBQyxHQUFHLGFBQWEsWUFBWSxlQUFlLEVBQUU7WUFDL0MsQ0FBQyxDQUFDLFNBQVMsQ0FBQztRQUNkLE1BQU0sZUFBZSxHQUFHLElBQUksR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsZUFBZSxFQUFFO1lBQzFELFNBQVMsRUFBRSxJQUFJLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxzQkFBc0IsQ0FBQztZQUMzRCxRQUFRLEVBQUUsbUJBQW1CO1lBQzdCLGVBQWUsRUFBRTtnQkFDZixHQUFHLENBQUMsYUFBYSxDQUFDLHdCQUF3QixDQUFDLDBDQUEwQyxDQUFDO2FBQ3ZGO1NBQ0YsQ0FBQyxDQUFDO1FBQ0gsTUFBTSxnQkFBZ0IsR0FBRyxhQUFhO1lBQ3BDLENBQUMsQ0FBQyxHQUFHLGFBQWEsWUFBWSxlQUFlLEVBQUU7WUFDL0MsQ0FBQyxDQUFDLFNBQVMsQ0FBQztRQUNkLE1BQU0saUJBQWlCLEdBQW1EO1lBQ3hFLFlBQVksRUFBRSxnQkFBZ0I7WUFDOUIsSUFBSSxFQUFFLGVBQWU7WUFDckIsVUFBVSxFQUFFLElBQUk7WUFDaEIsWUFBWSxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsU0FBUztZQUMxQyxPQUFPLEVBQUUsTUFBTSxDQUFDLE9BQU8sQ0FBQyxXQUFXO1lBQ25DLE9BQU8sRUFBRSxlQUFlO1lBQ3hCLFdBQVcsRUFBRTtnQkFDWCxRQUFRLEVBQUUsTUFBTTtnQkFDaEIsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxTQUFTLEVBQUUsT0FBTyxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7Z0JBQ3BELG1CQUFtQixFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUztnQkFDMUMsd0JBQXdCLEVBQUUsaUJBQWlCLENBQUMsVUFBVTtnQkFDdEQscUJBQXFCLEVBQUUsVUFBVSxDQUFDLFVBQVU7Z0JBQzVDLG1DQUFtQyxFQUFFLEdBQUc7Z0JBQ3hDLGdCQUFnQixFQUFFLGNBQWM7Z0JBQ2hDLHlCQUF5QixFQUFFLHVCQUF1QixDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE9BQU87YUFDdEU7U0FDRixDQUFDO1FBQ0YsSUFDRSxPQUFPLENBQUMsR0FBRyxDQUFDLFFBQVEsS0FBSyxNQUFNO1lBQy9CLGVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLG9CQUFvQixFQUFFLE1BQU0sRUFBRSxVQUFVLENBQUMsQ0FBQyxFQUN0RjtZQUNBLHdCQUF3QjtZQUN4QixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsZUFBZSxFQUFFO2dCQUM5RCxJQUFJLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxvQkFBb0IsRUFBRSxNQUFNLENBQUMsQ0FBQztnQkFDM0YsT0FBTyxFQUFFLGVBQWU7Z0JBQ3hCLEdBQUcsaUJBQWlCO2FBQ3JCLENBQUMsQ0FBQztTQUNKO2FBQU0sSUFBSSxlQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsb0JBQW9CLEVBQUUsVUFBVSxDQUFDLENBQUMsRUFBRTtZQUM3RSx5REFBeUQ7WUFDekQsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLGVBQWUsRUFBRTtnQkFDOUQsSUFBSSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLG9CQUFvQixDQUFDLENBQUM7Z0JBQ3ZFLE9BQU8sRUFBRSxlQUFlO2dCQUN4QixHQUFHLGlCQUFpQjthQUNyQixDQUFDLENBQUM7U0FDSjthQUFNO1lBQ0wsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLFlBQVksQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLGVBQWUsRUFBRTtnQkFDMUUsS0FBSyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsb0JBQW9CLEVBQUUsS0FBSyxFQUFFLFVBQVUsQ0FBQztnQkFDaEYsT0FBTyxFQUFFLFNBQVM7Z0JBQ2xCLFFBQVEsRUFBRTtvQkFDUixNQUFNLEVBQUUsSUFBSTtvQkFDWixTQUFTLEVBQUUsSUFBSTtpQkFDaEI7Z0JBQ0QsR0FBRyxpQkFBaUI7YUFDckIsQ0FBQyxDQUFDO1NBQ0o7UUFDRCxJQUFJLGFBQWEsS0FBSyxTQUFTLEVBQUU7WUFDL0IsSUFBSSxDQUFDLGFBQWEsQ0FBQyxrQkFBa0IsQ0FBQyxhQUFhLENBQUMsQ0FBQztTQUN0RDtRQUNELDZDQUE2QztRQUM3QyxJQUFJLENBQUMsTUFBTSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUNuRCxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLHdCQUF3QixDQUFDLENBQUM7UUFFaEUsdUJBQXVCO1FBQ3ZCLGtCQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxHQUFHLENBQUMsb0JBQW9CLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFFOUQsRUFBRTtRQUNGLDRCQUE0QjtRQUM1QiwrREFBK0Q7UUFDL0QsbUVBQW1FO1FBQ25FLEVBQUU7UUFDRixNQUFNLGFBQWEsR0FBRyxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLHNCQUFzQixFQUFFO1lBQy9ELFFBQVEsRUFBRSxpQkFBaUI7WUFDM0IsY0FBYyxFQUFFO2dCQUNkLFlBQVksRUFBRSxJQUFJLEdBQUcsQ0FBQyxjQUFjLENBQUM7b0JBQ25DLFVBQVUsRUFBRTt3QkFDVixJQUFJLEdBQUcsQ0FBQyxlQUFlLENBQUM7NEJBQ3RCLE9BQU8sRUFBRSxDQUFDLGVBQWUsQ0FBQzs0QkFDMUIsU0FBUyxFQUFFLENBQUMsaUJBQWlCLENBQUMsU0FBUyxDQUFDO3lCQUN6QyxDQUFDO3dCQUNGLElBQUksR0FBRyxDQUFDLGVBQWUsQ0FBQzs0QkFDdEIsT0FBTyxFQUFFLENBQUMsY0FBYyxFQUFFLGNBQWMsRUFBRSx5QkFBeUIsQ0FBQzs0QkFDcEUsU0FBUyxFQUFFLENBQUMsR0FBRyxpQkFBaUIsQ0FBQyxTQUFTLElBQUksQ0FBQzt5QkFDaEQsQ0FBQztxQkFDSDtpQkFDRixDQUFDO2FBQ0g7WUFDRCxTQUFTLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjO1NBQzdDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLGtCQUFrQixFQUFFLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUU5RSxFQUFFO1FBQ0Ysd0JBQXdCO1FBQ3hCLEVBQUU7UUFDRiwyQkFBMkI7UUFDM0IsTUFBTSwyQkFBMkIsR0FBdUIsRUFBRSxDQUFDO1FBQzNELEtBQUssTUFBTSxZQUFZLElBQUksMkJBQTJCLEVBQUU7WUFDdEQsMkJBQTJCLENBQUMsSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDO1NBQ3RFO1FBQ0QsaURBQWlEO1FBQ2pELE1BQU0seUJBQXlCLEdBQWEsRUFBRSxDQUFDO1FBQy9DLEtBQUssTUFBTSxJQUFJLElBQUksbUJBQW1CLEVBQUU7WUFDdEMseUJBQXlCLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxJQUFJLENBQUMsQ0FBQztTQUM3QztRQUNELDBCQUEwQjtRQUMxQiw4Q0FBOEM7UUFDOUMsd0VBQXdFO1FBQ3hFLE1BQU0sMEJBQTBCLEdBQUcsSUFBSSxHQUFHLENBQUMsZUFBZSxDQUFDO1lBQ3pELEdBQUcsRUFBRSx1Q0FBdUM7WUFDNUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxNQUFNLENBQUMsSUFBSTtZQUN2QixPQUFPLEVBQUUsQ0FBQyxNQUFNLENBQUM7WUFDakIsYUFBYSxFQUFFO2dCQUNiLElBQUksR0FBRyxDQUFDLHNCQUFzQixDQUM1QixhQUFhLENBQUMsK0NBQStDLENBQzlEO2dCQUNELElBQUksR0FBRyxDQUFDLG9CQUFvQixFQUFFO2dCQUM5QixHQUFHLDJCQUEyQjtnQkFDOUIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjO2FBQ2xDO1lBQ0QsWUFBWSxFQUFFO2dCQUNaLEdBQUcsVUFBVSxDQUFDLFNBQVMsdUNBQXVDO2dCQUM5RCxVQUFVLENBQUMsU0FBUzthQUNyQjtZQUNELFVBQVUsRUFBRTtnQkFDVixJQUFJLEVBQUUsRUFBRSxnQ0FBZ0MsRUFBRSxPQUFPLEVBQUU7YUFFcEQ7U0FDRixDQUFDLENBQUM7UUFDSCxJQUFJLGFBQWEsS0FBSyxTQUFTLEVBQUU7WUFDL0IsMEJBQTBCLENBQUMsWUFBWTtZQUNyQyxtRUFBbUU7WUFDbkUsZUFBZSxFQUNmLEVBQUUsOEJBQThCLEVBQUUsR0FBRyxtQkFBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxTQUFTLFFBQVEsRUFBRSxDQUN4RSxDQUFDO1NBQ0g7UUFDRCxNQUFNLG9CQUFvQixHQUFHLElBQUksR0FBRyxDQUFDLGVBQWUsQ0FBQztZQUNuRCxHQUFHLEVBQUUsZ0NBQWdDO1lBQ3JDLE1BQU0sRUFBRSxHQUFHLENBQUMsTUFBTSxDQUFDLElBQUk7WUFDdkIsT0FBTyxFQUFFLENBQUMsTUFBTSxDQUFDO1lBQ2pCLGFBQWEsRUFBRTtnQkFDYixJQUFJLEdBQUcsQ0FBQyxzQkFBc0IsQ0FDNUIsYUFBYSxDQUFDLCtDQUErQyxDQUM5RDtnQkFDRCxJQUFJLEdBQUcsQ0FBQyxvQkFBb0IsRUFBRTtnQkFDOUIseUNBQXlDO2dCQUN6QyxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWM7Z0JBQ2pDLDZEQUE2RDtnQkFDN0QsdURBQXVEO2dCQUN2RCxJQUFJLEdBQUcsQ0FBQyxZQUFZLENBQ2xCLGdCQUFnQixpQkFBRyxDQUFDLFVBQVUsaUJBQWlCLE1BQUEsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLDBDQUFFLFFBQVEsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksRUFBRSxDQUN0SDtnQkFDRCxHQUFHLDJCQUEyQjthQUMvQjtZQUNELFNBQVMsRUFBRSxDQUFDLEdBQUcsVUFBVSxDQUFDLFNBQVMsSUFBSSxFQUFFLFVBQVUsQ0FBQyxTQUFTLENBQUM7WUFDOUQsVUFBVSxFQUFFO2dCQUNWLElBQUksRUFBRSxFQUFFLGdDQUFnQyxFQUFFLE1BQU0sRUFBRTtnQkFDbEQsd0VBQXdFO2dCQUN4RSwwREFBMEQ7Z0JBQzFELDZFQUE2RTtnQkFDN0UsMkVBQTJFO2dCQUMzRSwyREFBMkQ7Z0JBQzNELHNFQUFzRTtnQkFDdEUscUdBQXFHO2dCQUNyRyw4Q0FBOEM7Z0JBQzlDLDZEQUE2RDtnQkFDN0QsZ0RBQWdEO2dCQUNoRCw0Q0FBNEM7Z0JBQzVDLG9HQUFvRztnQkFDcEcsNkRBQTZEO2dCQUM3RCwyREFBMkQ7Z0JBQzNELG9FQUFvRTtnQkFDcEUsRUFBRTtnQkFDRixvQ0FBb0M7Z0JBQ3BDLDJDQUEyQztnQkFDM0MsMkNBQTJDO2dCQUMzQyxhQUFhLEVBQUUsRUFBRSxZQUFZLEVBQUUsQ0FBQyxpQkFBRyxDQUFDLFVBQVUsRUFBRSxHQUFHLHlCQUF5QixDQUFDLEVBQUU7YUFDaEY7U0FDRixDQUFDLENBQUM7UUFDSCxJQUFJLGFBQWEsS0FBSyxTQUFTLEVBQUU7WUFDL0Isb0JBQW9CLENBQUMsWUFBWTtZQUMvQixtRUFBbUU7WUFDbkUsZUFBZSxFQUNmLEVBQUUsOEJBQThCLEVBQUUsR0FBRyxtQkFBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxTQUFTLFFBQVEsRUFBRSxDQUN4RSxDQUFDO1NBQ0g7UUFDRCxNQUFNLHNCQUFzQixHQUFHLElBQUksR0FBRyxDQUFDLGVBQWUsQ0FBQztZQUNyRCxHQUFHLEVBQUUsdUJBQXVCO1lBQzVCLE1BQU0sRUFBRSxHQUFHLENBQUMsTUFBTSxDQUFDLEtBQUs7WUFDeEIsT0FBTyxFQUFFLENBQUMsY0FBYyxFQUFFLGVBQWUsQ0FBQztZQUMxQyxVQUFVLEVBQUU7Z0JBQ1YsSUFBSSxHQUFHLENBQUMsc0JBQXNCLENBQzVCLGFBQWEsQ0FBQywrQ0FBK0MsQ0FDOUQ7YUFDRjtZQUNELFNBQVMsRUFBRSxDQUFDLEdBQUcsVUFBVSxDQUFDLFNBQVMsSUFBSSxFQUFFLFVBQVUsQ0FBQyxTQUFTLENBQUM7U0FDL0QsQ0FBQyxDQUFDO1FBRUgsSUFBSSxVQUFVLENBQUMsTUFBTSxLQUFLLFNBQVMsRUFBRTtZQUNuQyxNQUFNLFFBQVEsR0FBRyxJQUFJLEVBQUUsQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLFdBQVcsRUFBRTtnQkFDdEQsTUFBTSxFQUFFLFVBQVU7YUFDbkIsQ0FBQyxDQUFDLFFBQVEsQ0FBQztZQUNaLFFBQVEsQ0FBQyxhQUFhLENBQUMsc0JBQXNCLENBQUMsQ0FBQztZQUUvQyxJQUFJLG9CQUFvQixFQUFFO2dCQUN4QixRQUFRLENBQUMsYUFBYSxDQUFDLDBCQUEwQixDQUFDLENBQUM7Z0JBQ25ELFFBQVEsQ0FBQyxhQUFhLENBQUMsb0JBQW9CLENBQUMsQ0FBQzthQUM5QztTQUNGO2FBQU07WUFDTCxVQUFVLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsc0JBQXNCLENBQUMsQ0FBQztZQUVqRSxJQUFJLG9CQUFvQixFQUFFO2dCQUN4QixVQUFVLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsMEJBQTBCLENBQUMsQ0FBQztnQkFDckUsVUFBVSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLG9CQUFvQixDQUFDLENBQUM7YUFDaEU7U0FDRjtRQUVELG1EQUFtRDtRQUNuRCxNQUFNLHFCQUFxQixHQUFHLElBQUksR0FBRyxDQUFDLGVBQWUsQ0FBQztZQUNwRCxNQUFNLEVBQUUsR0FBRyxDQUFDLE1BQU0sQ0FBQyxLQUFLO1lBQ3hCLHNEQUFzRDtZQUN0RCxPQUFPLEVBQUUsQ0FBQyxpQkFBaUIsRUFBRSxjQUFjLEVBQUUsZUFBZSxDQUFDO1lBQzdELFNBQVMsRUFBRSxDQUFDLEdBQUcsaUJBQWlCLENBQUMsU0FBUyxJQUFJLEVBQUUsaUJBQWlCLENBQUMsU0FBUyxDQUFDO1NBQzdFLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxhQUFhLENBQUMsZUFBZSxDQUFDLHFCQUFxQixDQUFDLENBQUM7UUFFMUQsNERBQTREO1FBQzVELE1BQU0seUJBQXlCLEdBQUcsSUFBSSxHQUFHLENBQUMsZUFBZSxDQUFDO1lBQ3hELE1BQU0sRUFBRSxHQUFHLENBQUMsTUFBTSxDQUFDLEtBQUs7WUFDeEIsT0FBTyxFQUFFLENBQUMsaUJBQWlCLEVBQUUsY0FBYyxFQUFFLGNBQWMsRUFBRSxlQUFlLENBQUM7WUFDN0UsU0FBUyxFQUFFLENBQUMsR0FBRyxVQUFVLENBQUMsU0FBUyxJQUFJLEVBQUUsVUFBVSxDQUFDLFNBQVMsQ0FBQztTQUMvRCxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsYUFBYSxDQUFDLGVBQWUsQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO1FBRTlELGtEQUFrRDtRQUNsRCxNQUFNLGlCQUFpQixHQUFHLElBQUksR0FBRyxDQUFDLGVBQWUsQ0FBQztZQUNoRCxNQUFNLEVBQUUsR0FBRyxDQUFDLE1BQU0sQ0FBQyxLQUFLO1lBQ3hCLE9BQU8sRUFBRSxDQUFDLHdCQUF3QixDQUFDO1lBQ25DLFNBQVMsRUFBRSxDQUFDLEdBQUcsQ0FBQztTQUNqQixDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsYUFBYSxDQUFDLGVBQWUsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBRXRELCtDQUErQztRQUMvQyxNQUFNLGtCQUFrQixHQUFHLElBQUksR0FBRyxDQUFDLGVBQWUsQ0FBQztZQUNqRCxNQUFNLEVBQUUsR0FBRyxDQUFDLE1BQU0sQ0FBQyxLQUFLO1lBQ3hCLE9BQU8sRUFBRSxDQUFDLGdCQUFnQixDQUFDO1lBQzNCLFNBQVMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUM7U0FDbkMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLGFBQWEsQ0FBQyxlQUFlLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUV2RCxFQUFFO1FBQ0YsOERBQThEO1FBQzlELDBCQUEwQjtRQUMxQixFQUFFO1FBRUYsMERBQTBEO1FBQzFELE1BQU0sYUFBYSxHQUFHLElBQUksR0FBRyxDQUFDLGVBQWUsQ0FBQztZQUM1QyxNQUFNLEVBQUUsR0FBRyxDQUFDLE1BQU0sQ0FBQyxLQUFLO1lBQ3hCLE9BQU8sRUFBRSxDQUFDLGdCQUFnQixDQUFDO1lBQzNCLFNBQVMsRUFBRSxDQUFDLHNCQUFzQixpQkFBRyxDQUFDLE1BQU0sU0FBUyxDQUFDO1NBQ3ZELENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxhQUFhLENBQUMsZUFBZSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBRWxELElBQUksT0FBTyxFQUFFO1lBQ1gsNkNBQTZDO1lBQzdDLE1BQU0sZUFBZSxHQUFHLElBQUksR0FBRyxDQUFDLGVBQWUsQ0FBQztnQkFDOUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxNQUFNLENBQUMsS0FBSztnQkFDeEIsT0FBTyxFQUFFLENBQUMsY0FBYyxDQUFDO2dCQUN6QixTQUFTLEVBQUU7b0JBQ1Qsc0JBQXNCLGlCQUFHLENBQUMsTUFBTSxJQUFJLGlCQUFHLENBQUMsVUFBVSxJQUFJLE9BQU8sQ0FBQyxTQUFTLElBQUk7b0JBQzNFLHNCQUFzQixpQkFBRyxDQUFDLE1BQU0sV0FBVyxPQUFPLENBQUMsU0FBUyxpQkFBaUI7b0JBQzdFLHNCQUFzQixpQkFBRyxDQUFDLE1BQU0sV0FBVyxPQUFPLENBQUMsU0FBUyxlQUFlO29CQUMzRSxzQkFBc0IsaUJBQUcsQ0FBQyxNQUFNLFdBQVcsT0FBTyxDQUFDLFNBQVMsU0FBUztvQkFDckUsc0JBQXNCLGlCQUFHLENBQUMsTUFBTSxXQUFXLE9BQU8sQ0FBQyxTQUFTLFdBQVc7aUJBQ3hFO2FBQ0YsQ0FBQyxDQUFDO1lBQ0gsSUFBSSxDQUFDLGFBQWEsQ0FBQyxlQUFlLENBQUMsZUFBZSxDQUFDLENBQUM7U0FDckQ7UUFFRCxtRUFBbUU7UUFDbkUsTUFBTSxzQkFBc0IsR0FBRyxJQUFJLEdBQUcsQ0FBQyxlQUFlLENBQUM7WUFDckQsTUFBTSxFQUFFLEdBQUcsQ0FBQyxNQUFNLENBQUMsS0FBSztZQUN4QixPQUFPLEVBQUUsQ0FBQyxVQUFVLENBQUM7WUFDckIsU0FBUyxFQUFFO2dCQUNULGtCQUFrQixpQkFBRyxDQUFDLE1BQU0sSUFBSSxpQkFBRyxDQUFDLFVBQVUsYUFBYTtnQkFDM0Qsa0JBQWtCLGlCQUFHLENBQUMsTUFBTSxJQUFJLGlCQUFHLENBQUMsVUFBVSxlQUFlO2FBQzlEO1lBQ0QsVUFBVSxFQUFFO2dCQUNWLG9CQUFvQixFQUFFLEVBQUUsa0NBQWtDLEVBQUUsTUFBTSxFQUFFO2FBQ3JFO1NBQ0YsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLGFBQWEsQ0FBQyxlQUFlLENBQUMsc0JBQXNCLENBQUMsQ0FBQztRQUUzRCxJQUFJLE9BQU8sRUFBRTtZQUNYLEVBQUU7WUFDRix5QkFBeUI7WUFDekIsRUFBRTtZQUVGLGdDQUFnQztZQUNoQyxNQUFNLGVBQWUsR0FBbUQ7Z0JBQ3RFLFlBQVksRUFBRSxhQUFhLENBQUMsQ0FBQyxDQUFDLEdBQUcsYUFBYSxVQUFVLGVBQWUsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTO2dCQUNyRixVQUFVLEVBQUUsSUFBSTtnQkFDaEIsWUFBWSxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsU0FBUztnQkFDMUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxPQUFPLENBQUMsV0FBVztnQkFDbkMsT0FBTyxFQUFFLHNCQUFRLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztnQkFDN0IsV0FBVyxFQUFFO29CQUNYLFFBQVEsRUFBRSxNQUFNO29CQUNoQixtQkFBbUIsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVM7b0JBQzFDLG1DQUFtQyxFQUFFLEdBQUc7b0JBQ3hDLGdCQUFnQixFQUFFLGNBQWM7aUJBQ2pDO2FBQ0YsQ0FBQztZQUNGLElBQ0UsT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEtBQUssTUFBTTtnQkFDL0IsZUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxFQUFFLFVBQVUsQ0FBQyxDQUFDLEVBQ3BGO2dCQUNBLHdCQUF3QjtnQkFDeEIsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLGFBQWEsRUFBRTtvQkFDMUQsSUFBSSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxDQUFDLENBQUM7b0JBQ3pGLE9BQU8sRUFBRSxlQUFlO29CQUN4QixHQUFHLGVBQWU7aUJBQ25CLENBQUMsQ0FBQzthQUNKO2lCQUFNLElBQUksZUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLGtCQUFrQixFQUFFLFVBQVUsQ0FBQyxDQUFDLEVBQUU7Z0JBQzNFLHlEQUF5RDtnQkFDekQsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLGFBQWEsRUFBRTtvQkFDMUQsSUFBSSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLGtCQUFrQixDQUFDLENBQUM7b0JBQ3JFLE9BQU8sRUFBRSxlQUFlO29CQUN4QixHQUFHLGVBQWU7aUJBQ25CLENBQUMsQ0FBQzthQUNKO2lCQUFNO2dCQUNMLDZCQUE2QjtnQkFDN0IsTUFBTSxlQUFlLEdBQUcsSUFBSSxNQUFNLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxrQkFBa0IsRUFBRTtvQkFDeEUsSUFBSSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUN6QixJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLGtCQUFrQixFQUFFLFdBQVcsQ0FBQyxDQUNsRTtvQkFDRCxhQUFhO2lCQUNkLENBQUMsQ0FBQztnQkFFSCxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksWUFBWSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsYUFBYSxFQUFFO29CQUN0RSxLQUFLLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxrQkFBa0IsRUFBRSxLQUFLLEVBQUUsVUFBVSxDQUFDO29CQUM5RSxPQUFPLEVBQUUsU0FBUztvQkFDbEIsUUFBUSxFQUFFO3dCQUNSLE1BQU0sRUFBRSxJQUFJO3dCQUNaLFNBQVMsRUFBRSxJQUFJO3FCQUNoQjtvQkFDRCxNQUFNLEVBQUUsQ0FBQyxlQUFlLENBQUM7b0JBQ3pCLEdBQUcsZUFBZTtpQkFDbkIsQ0FBQyxDQUFDO2FBQ0o7WUFDRCxJQUFJLGFBQWEsS0FBSyxTQUFTLEVBQUU7Z0JBQy9CLElBQUksQ0FBQyxXQUFXLENBQUMsa0JBQWtCLENBQUMsYUFBYSxDQUFDLENBQUM7YUFDcEQ7WUFDRCxNQUFNLGdCQUFnQixHQUFHLElBQUksR0FBRyxDQUFDLGVBQWUsQ0FBQztnQkFDL0MsTUFBTSxFQUFFLEdBQUcsQ0FBQyxNQUFNLENBQUMsS0FBSztnQkFDeEIsT0FBTyxFQUFFLENBQUMsY0FBYyxDQUFDO2dCQUN6QixTQUFTLEVBQUUsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxTQUFTLElBQUksQ0FBQzthQUN6QyxDQUFDLENBQUM7WUFDSCxLQUFLLE1BQU0sTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFFO2dCQUN2QyxNQUFNLENBQUMsZUFBZSxDQUFDLGdCQUFnQixDQUFDLENBQUM7Z0JBQ3pDLDJDQUEyQztnQkFDM0MsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQ2xDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSx3QkFBd0IsQ0FBQyxDQUFDO2FBQ3JEO1lBQ0QsMEJBQTBCO1lBQzFCLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLGdCQUFnQixDQUFDLENBQUM7WUFFaEUsMkNBQTJDO1lBQzNDLE1BQU0sS0FBSyxHQUFHLElBQUksTUFBTSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsZUFBZSxFQUFFO2dCQUN4RCxPQUFPO2dCQUNQLFFBQVEsRUFBRSxNQUFNLENBQUMsWUFBWSxDQUFDLE9BQU87Z0JBQ3JDLFdBQVcsRUFBRSxJQUFJLFNBQVMsQ0FBQyxxQkFBcUIsQ0FBQyxvQkFBb0IsRUFBRSxXQUFXLENBQUM7Z0JBQ25GLFVBQVUsRUFBRSx1QkFBdUIsQ0FBQyxDQUFDLENBQUMsSUFBSSxVQUFVLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUzthQUNyRixDQUFDLENBQUM7WUFFSCxJQUFJLFFBQVEsR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDO1lBQzlCLDJEQUEyRDtZQUMzRCxJQUFJLFFBQVEsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUU7Z0JBQzFCLFFBQVEsR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO2FBQ25EO1lBRUQsb0RBQW9EO1lBQ3BELElBQUksTUFBTSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsZUFBZSxFQUFFO2dCQUM5QyxNQUFNLEVBQUUsdUJBQXVCO2dCQUMvQixZQUFZLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZO2dCQUMzQyxTQUFTLEVBQUUsMEJBQTBCO2dCQUNyQyxTQUFTLEVBQUUsUUFBUTthQUNwQixDQUFDLENBQUM7U0FDSjtJQUNILENBQUM7SUFyZEQsSUFBVyxLQUFLO1FBQ2QsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3JCLENBQUM7SUFHRCxJQUFXLFlBQVk7UUFDckIsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDO0lBQzVCLENBQUM7SUFHRCxJQUFXLFVBQVU7UUFDbkIsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDO0lBQzFCLENBQUM7O0FBZkgsc0NBeWRDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZXhpc3RzU3luYyB9IGZyb20gJ2ZzJztcbmltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgKiBhcyBhcGlnd3kgZnJvbSAnQGF3cy1jZGsvYXdzLWFwaWdhdGV3YXl2Mi1hbHBoYSc7XG5pbXBvcnQgKiBhcyBhcGlnd3lBdXRoIGZyb20gJ0Bhd3MtY2RrL2F3cy1hcGlnYXRld2F5djItYXV0aG9yaXplcnMtYWxwaGEnO1xuaW1wb3J0ICogYXMgYXBpZ3d5aW50IGZyb20gJ0Bhd3MtY2RrL2F3cy1hcGlnYXRld2F5djItaW50ZWdyYXRpb25zLWFscGhhJztcbmltcG9ydCB7IEF3cywgRHVyYXRpb24sIFBoeXNpY2FsTmFtZSwgUmVtb3ZhbFBvbGljeSwgU3RhY2ssIFRhZ3MgfSBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgKiBhcyBjZiBmcm9tICdhd3MtY2RrLWxpYi9hd3MtY2xvdWRmcm9udCc7XG5pbXBvcnQgKiBhcyBkeW5hbW9kYiBmcm9tICdhd3MtY2RrLWxpYi9hd3MtZHluYW1vZGInO1xuaW1wb3J0ICogYXMgaWFtIGZyb20gJ2F3cy1jZGstbGliL2F3cy1pYW0nO1xuaW1wb3J0ICogYXMgbGFtYmRhIGZyb20gJ2F3cy1jZGstbGliL2F3cy1sYW1iZGEnO1xuaW1wb3J0ICogYXMgbGFtYmRhTm9kZWpzIGZyb20gJ2F3cy1jZGstbGliL2F3cy1sYW1iZGEtbm9kZWpzJztcbmltcG9ydCAqIGFzIGxvZ3MgZnJvbSAnYXdzLWNkay1saWIvYXdzLWxvZ3MnO1xuaW1wb3J0ICogYXMgczMgZnJvbSAnYXdzLWNkay1saWIvYXdzLXMzJztcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuXG4vKipcbiAqIFByb3BlcnRpZXMgdG8gaW5pdGlhbGl6ZSBhbiBpbnN0YW5jZSBvZiBgTWljcm9BcHBzU3Zjc2AuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTWljcm9BcHBzU3Zjc1Byb3BzIHtcbiAgLyoqXG4gICAqIFJlbW92YWxQb2xpY3kgb3ZlcnJpZGUgZm9yIGNoaWxkIHJlc291cmNlc1xuICAgKlxuICAgKiBOb3RlOiBpZiBzZXQgdG8gREVTVFJPWSB0aGUgUzMgYnVja2VzIHdpbGwgaGF2ZSBgYXV0b0RlbGV0ZU9iamVjdHNgIHNldCB0byBgdHJ1ZWBcbiAgICpcbiAgICogQGRlZmF1bHQgLSBwZXIgcmVzb3VyY2UgZGVmYXVsdFxuICAgKi9cbiAgcmVhZG9ubHkgcmVtb3ZhbFBvbGljeT86IFJlbW92YWxQb2xpY3k7XG5cbiAgLyoqXG4gICAqIFMzIGJ1Y2tldCBmb3IgZGVwbG95ZWQgYXBwbGljYXRpb25zXG4gICAqL1xuICByZWFkb25seSBidWNrZXRBcHBzOiBzMy5JQnVja2V0O1xuXG4gIC8qKlxuICAgKiBDbG91ZEZyb250IE9yaWdpbiBBY2Nlc3MgSWRlbnRpdHkgZm9yIHRoZSBkZXBsb3llZCBhcHBsaWNhdGlvbnMgYnVja2V0XG4gICAqL1xuICByZWFkb25seSBidWNrZXRBcHBzT0FJOiBjZi5PcmlnaW5BY2Nlc3NJZGVudGl0eTtcblxuICAvKipcbiAgICogUzMgYnVja2V0IGZvciBzdGFnZWQgYXBwbGljYXRpb25zIChwcmlvciB0byBkZXBsb3kpXG4gICAqL1xuICByZWFkb25seSBidWNrZXRBcHBzU3RhZ2luZzogczMuSUJ1Y2tldDtcblxuICAvKipcbiAgICogQVBJIEdhdGV3YXkgdjIgSFRUUCBmb3IgUm91dGVyIGFuZCBhcHBcbiAgICovXG4gIHJlYWRvbmx5IGh0dHBBcGk/OiBhcGlnd3kuSHR0cEFwaTtcblxuICAvKipcbiAgICogQXBwbGljYXRpb24gZW52aXJvbm1lbnQsIHBhc3NlZCBhcyBgTk9ERV9FTlZgXG4gICAqIHRvIHRoZSBSb3V0ZXIgYW5kIERlcGxveWVyIExhbWJkYSBmdW5jdGlvbnNcbiAgICovXG4gIHJlYWRvbmx5IGFwcEVudjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBPcHRpb25hbCBhc3NldCBuYW1lIHJvb3RcbiAgICpcbiAgICogQGV4YW1wbGUgbWljcm9hcHBzXG4gICAqIEBkZWZhdWx0IC0gcmVzb3VyY2UgbmFtZXMgYXV0byBhc3NpZ25lZFxuICAgKi9cbiAgcmVhZG9ubHkgYXNzZXROYW1lUm9vdD86IHN0cmluZztcblxuICAvKipcbiAgICogT3B0aW9uYWwgYXNzZXQgbmFtZSBzdWZmaXhcbiAgICpcbiAgICogQGV4YW1wbGUgLWRldi1wci0xMlxuICAgKiBAZGVmYXVsdCBub25lXG4gICAqL1xuICByZWFkb25seSBhc3NldE5hbWVTdWZmaXg/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFVzZSBhIHN0cmljdCBTMyBCdWNrZXQgUG9saWN5IHRoYXQgcHJldmVudHMgYXBwbGljYXRpb25zXG4gICAqIGZyb20gcmVhZGluZy93cml0aW5nL21vZGlmeWluZy9kZWxldGluZyBmaWxlcyBpbiB0aGUgUzMgQnVja2V0XG4gICAqIG91dHNpZGUgb2YgdGhlIHBhdGggdGhhdCBpcyBzcGVjaWZpYyB0byB0aGVpciBhcHAvdmVyc2lvbi5cbiAgICpcbiAgICogVGhpcyBzZXR0aW5nIHNob3VsZCBiZSB1c2VkIHdoZW4gYXBwbGljYXRpb25zIGFyZSBsZXNzIHRoYW5cbiAgICogZnVsbHkgdHJ1c3RlZC5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IHMzU3RyaWN0QnVja2V0UG9saWN5PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQXBwbGllcyB3aGVuIHVzaW5nIHMzU3RyaWN0QnVja2V0UG9saWN5ID0gdHJ1ZVxuICAgKlxuICAgKiBJQU0gUm9sZSBvciBJQU0gVXNlciBuYW1lcyB0byBleGNsdWRlIGZyb20gdGhlIERFTlkgcnVsZXMgb24gdGhlIFMzIEJ1Y2tldCBQb2xpY3kuXG4gICAqXG4gICAqIFJvbGVzIHRoYXQgYXJlIEFzc3VtZWQgbXVzdCBpbnN0ZWFkIGhhdmUgdGhlaXIgQVJPQSBhZGRlZCB0byBgczNQb2xpY3lCeXBhc3NBUk9Bc2AuXG4gICAqXG4gICAqIFR5cGljYWxseSBhbnkgYWRtaW4gcm9sZXMgLyB1c2VycyB0aGF0IG5lZWQgdG8gdmlldyBvciBtYW5hZ2UgdGhlIFMzIEJ1Y2tldFxuICAgKiB3b3VsZCBiZSBhZGRlZCB0byB0aGlzIGxpc3QuXG4gICAqXG4gICAqIEBleGFtcGxlIFsnYXJuOmF3czppYW06OjEyMzQ1Njc4OTAxMjM6cm9sZS9BZG1pbkFjY2VzcycsICdhcm46YXdzOmlhbTo6MTIzNDU2Nzg5MDEyMzp1c2VyL015QWRtaW5Vc2VyJ11cbiAgICpcbiAgICogQHNlZSBzM1BvbGljeUJ5cGFzc0FST0FzXG4gICAqL1xuICByZWFkb25seSBzM1BvbGljeUJ5cGFzc1ByaW5jaXBhbEFSTnM/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogQXBwbGllcyB3aGVuIHVzaW5nIHMzU3RyaWN0QnVja2V0UG9saWN5ID0gdHJ1ZVxuICAgKlxuICAgKiBBUk9BcyBvZiB0aGUgSUFNIFJvbGUgdG8gZXhjbHVkZSBmcm9tIHRoZSBERU5ZIHJ1bGVzIG9uIHRoZSBTMyBCdWNrZXQgUG9saWN5LlxuICAgKiBUaGlzIGFsbG93cyBzZXNzaW9ucyB0aGF0IGFzc3VtZSB0aGUgSUFNIFJvbGUgdG8gYmUgZXhjbHVkZWQgZnJvbSB0aGVcbiAgICogREVOWSBydWxlcyBvbiB0aGUgUzMgQnVja2V0IFBvbGljeS5cbiAgICpcbiAgICogVHlwaWNhbGx5IGFueSBhZG1pbiByb2xlcyAvIHVzZXJzIHRoYXQgbmVlZCB0byB2aWV3IG9yIG1hbmFnZSB0aGUgUzMgQnVja2V0XG4gICAqIHdvdWxkIGJlIGFkZGVkIHRvIHRoaXMgbGlzdC5cbiAgICpcbiAgICogUm9sZXMgLyB1c2VycyB0aGF0IGFyZSB1c2VkIGRpcmVjdGx5LCBub3QgYXNzdW1lZCwgY2FuIGJlIGFkZGVkIHRvIGBzM1BvbGljeUJ5cGFzc1JvbGVOYW1lc2AgaW5zdGVhZC5cbiAgICpcbiAgICogTm90ZTogVGhpcyBBUk9BIG11c3QgYmUgc3BlY2lmaWVkIHRvIHByZXZlbnQgdGhpcyBwb2xpY3kgZnJvbSBsb2NraW5nXG4gICAqIG91dCBub24tcm9vdCBzZXNzaW9ucyB0aGF0IGhhdmUgYXNzdW1lZCB0aGUgYWRtaW4gcm9sZS5cbiAgICpcbiAgICogVGhlIG5vdFByaW5jaXBhbHMgd2lsbCBvbmx5IG1hdGNoIHRoZSByb2xlIG5hbWUgZXhhY3RseSBhbmQgd2lsbCBub3QgbWF0Y2hcbiAgICogYW55IHNlc3Npb24gdGhhdCBoYXMgYXNzdW1lZCB0aGUgcm9sZSBzaW5jZSBub3RQcmluY2lwYWxzIGRvZXMgbm90IGFsbG93XG4gICAqIHdpbGRjYXJkIG1hdGNoZXMgYW5kIGRvZXMgbm90IGRvIHdpbGRjYXJkIG1hdGNoZXMgaW1wbGljaXRseSBlaXRoZXIuXG4gICAqXG4gICAqIFRoZSBBUk9BIG11c3QgYmUgdXNlZCBiZWNhdXNlIHRoZXJlIGFyZSBvbmx5IDMgUHJpbmNpcGFsIHZhcmlhYmxlcyBhdmFpbGFibGU6XG4gICAqICBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vSUFNL2xhdGVzdC9Vc2VyR3VpZGUvcmVmZXJlbmNlX3BvbGljaWVzX3ZhcmlhYmxlcy5odG1sI3ByaW5jaXBhbHRhYmxlXG4gICAqICBhd3M6dXNlcm5hbWUsIGF3czp1c2VyaWQsIGF3czpQcmluY2lwYWxUYWdcbiAgICpcbiAgICogRm9yIGFuIGFzc3VtZWQgcm9sZSwgYXdzOnVzZXJuYW1lIGlzIGJsYW5rLCBhd3M6dXNlcmlkIGlzOlxuICAgKiAgW3VuaXF1ZSBpZCBBS0EgQVJPQSBmb3IgUm9sZV06W3Nlc3Npb24gbmFtZV1cbiAgICpcbiAgICogVGFibGUgb2YgdW5pcXVlIElEIHByZWZpeGVzIHN1Y2ggYXMgQVJPQTpcbiAgICogIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9JQU0vbGF0ZXN0L1VzZXJHdWlkZS9yZWZlcmVuY2VfaWRlbnRpZmllcnMuaHRtbCNpZGVudGlmaWVycy1wcmVmaXhlc1xuICAgKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgcm9sZSBpcyBzaW1wbHkgbm90IGF2YWlsYWJsZSBmb3IgYW4gYXNzdW1lZCByb2xlIGFuZCwgaWYgaXQgd2FzLFxuICAgKiBhIGNvbXBsaWNhdGVkIGNvbXBhcmlzb24gd291bGQgYmUgcmVxdWllcmQgdG8gcHJldmVudCBleGNsdXNpb25cbiAgICogb2YgYXBwbHlpbmcgdGhlIERlbnkgUnVsZSB0byByb2xlcyBmcm9tIG90aGVyIGFjY291bnRzLlxuICAgKlxuICAgKiBUbyBnZXQgdGhlIEFST0Egd2l0aCB0aGUgQVdTIENMSTpcbiAgICogICBhd3MgaWFtIGdldC1yb2xlIC0tcm9sZS1uYW1lIFJPTEUtTkFNRVxuICAgKiAgIGF3cyBpYW0gZ2V0LXVzZXIgLeKAk3VzZXItbmFtZSBVU0VSLU5BTUVcbiAgICpcbiAgICogQGV4YW1wbGUgWyAnQVJPQTEyMzQ1Njc4OTAxMjMnIF1cbiAgICpcbiAgICogQHNlZSBzM1N0cmljdEJ1Y2tldFBvbGljeVxuICAgKi9cbiAgcmVhZG9ubHkgczNQb2xpY3lCeXBhc3NBUk9Bcz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBQYXRoIHByZWZpeCBvbiB0aGUgcm9vdCBvZiB0aGUgZGVwbG95bWVudFxuICAgKlxuICAgKiBAZXhhbXBsZSBkZXYvXG4gICAqIEBkZWZhdWx0IG5vbmVcbiAgICovXG4gIHJlYWRvbmx5IHJvb3RQYXRoUHJlZml4Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBSZXF1aXJlIElBTSBhdXRoIG9uIEFQSSBHYXRld2F5IGFuZCBMYW1iZGEgRnVuY3Rpb24gVVJMc1xuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSByZXF1aXJlSUFNQXV0aG9yaXphdGlvbj86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEV4aXN0aW5nIHRhYmxlIGZvciBhcHBzL3ZlcnNpb25zL3J1bGVzXG4gICAqXG4gICAqIEB3YXJuaW5nIC0gSXQgaXMgKnN0cm9uZ2x5KiBzdWdnZXN0ZWQgdGhhdCBwcm9kdWN0aW9uIHN0YWNrcyBjcmVhdGVcbiAgICogdGhlaXIgb3duIER5bmFtb0RCIFRhYmxlIGFuZCBwYXNzIGl0IGludG8gdGhpcyBjb25zdHJ1Y3QsIGZvciBwcm90ZWN0aW9uXG4gICAqIGFnYWluc3QgZGF0YSBsb3NzIGR1ZSB0byBsb2dpY2FsIElEIGNoYW5nZXMsIHRoZSBhYmlsaXR5IHRvIGNvbmZpZ3VyZVxuICAgKiBQcm92aXNpb25lZCBjYXBhY2l0eSB3aXRoIEF1dG8gU2NhbGluZywgdGhlIGFiaWxpdHkgdG8gYWRkIGFkZGl0aW9uYWwgaW5kaWNlcywgZXRjLlxuICAgKlxuICAgKiBSZXF1aXJlbWVudHM6XG4gICAqIC0gSGFzaCBLZXk6IGBQS2BcbiAgICogLSBTb3J0IEtleTogYFNLYFxuICAgKlxuICAgKiBAZGVmYXVsdCBjcmVhdGVkIGJ5IGNvbnN0cnVjdFxuICAgKi9cbiAgcmVhZG9ubHkgdGFibGU/OiBkeW5hbW9kYi5JVGFibGU7XG5cbiAgLyoqXG4gICAqIERlcGxveWVyIHRpbWVvdXRcbiAgICpcbiAgICogRm9yIGxhcmdlciBhcHBsaWNhdGlvbnMgdGhpcyBuZWVkcyB0byBiZSBzZXQgdXAgdG8gMi01IG1pbnV0ZXMgZm9yIHRoZSBTMyBjb3B5XG4gICAqXG4gICAqIEBkZWZhdWx0IDIgbWludXRlc1xuICAgKi9cbiAgcmVhZG9ubHkgZGVwbG95ZXJUaW1lb3V0PzogRHVyYXRpb247XG59XG5cbi8qKlxuICogUmVwcmVzZW50cyBhIE1pY3JvQXBwcyBTZXJ2aWNlc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIElNaWNyb0FwcHNTdmNzIHtcbiAgLyoqXG4gICAqIER5bmFtb0RCIHRhYmxlIHVzZWQgYnkgUm91dGVyLCBEZXBsb3llciwgYW5kIFJlbGVhc2UgY29uc29sZSBhcHBcbiAgICovXG4gIHJlYWRvbmx5IHRhYmxlOiBkeW5hbW9kYi5JVGFibGU7XG5cbiAgLyoqXG4gICAqIExhbWJkYSBmdW5jdGlvbiBmb3IgdGhlIERlcGxveWVyXG4gICAqL1xuICByZWFkb25seSBkZXBsb3llckZ1bmM6IGxhbWJkYS5GdW5jdGlvbjtcblxuICAvKipcbiAgICogTGFtYmRhIGZ1bmN0aW9uIGZvciB0aGUgUm91dGVyXG4gICAqL1xuICByZWFkb25seSByb3V0ZXJGdW5jPzogbGFtYmRhLkZ1bmN0aW9uO1xufVxuXG4vKipcbiAqIENyZWF0ZSBhIG5ldyBNaWNyb0FwcHMgU2VydmljZXMgY29uc3RydWN0LCBpbmNsdWRpbmcgdGhlIERlcGxveWVyXG4gKiBhbmQgUm91dGVyIExhbWJkYSBGdW5jdGlvbnMsIGFuZCB0aGUgRHluYW1vREIgVGFibGUgdXNlZCBieSBib3RoLlxuICovXG5leHBvcnQgY2xhc3MgTWljcm9BcHBzU3ZjcyBleHRlbmRzIENvbnN0cnVjdCBpbXBsZW1lbnRzIElNaWNyb0FwcHNTdmNzIHtcbiAgcHJpdmF0ZSBfb3duZWRUYWJsZT86IGR5bmFtb2RiLlRhYmxlO1xuICBwcml2YXRlIF90YWJsZTogZHluYW1vZGIuSVRhYmxlO1xuICBwdWJsaWMgZ2V0IHRhYmxlKCk6IGR5bmFtb2RiLklUYWJsZSB7XG4gICAgcmV0dXJuIHRoaXMuX3RhYmxlO1xuICB9XG5cbiAgcHJpdmF0ZSBfZGVwbG95ZXJGdW5jOiBsYW1iZGEuRnVuY3Rpb247XG4gIHB1YmxpYyBnZXQgZGVwbG95ZXJGdW5jKCk6IGxhbWJkYS5GdW5jdGlvbiB7XG4gICAgcmV0dXJuIHRoaXMuX2RlcGxveWVyRnVuYztcbiAgfVxuXG4gIHByaXZhdGUgX3JvdXRlckZ1bmM/OiBsYW1iZGEuRnVuY3Rpb247XG4gIHB1YmxpYyBnZXQgcm91dGVyRnVuYygpOiBsYW1iZGEuRnVuY3Rpb24gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLl9yb3V0ZXJGdW5jO1xuICB9XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM/OiBNaWNyb0FwcHNTdmNzUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgaWYgKHByb3BzID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcigncHJvcHMgY2Fubm90IGJlIHVuZGVmaW5lZCcpO1xuICAgIH1cblxuICAgIGNvbnN0IHtcbiAgICAgIGJ1Y2tldEFwcHMsXG4gICAgICBidWNrZXRBcHBzT0FJLFxuICAgICAgYnVja2V0QXBwc1N0YWdpbmcsXG4gICAgICBkZXBsb3llclRpbWVvdXQgPSBEdXJhdGlvbi5taW51dGVzKDIpLFxuICAgICAgczNQb2xpY3lCeXBhc3NBUk9BcyA9IFtdLFxuICAgICAgczNQb2xpY3lCeXBhc3NQcmluY2lwYWxBUk5zID0gW10sXG4gICAgICBzM1N0cmljdEJ1Y2tldFBvbGljeSA9IGZhbHNlLFxuICAgICAgYXBwRW52LFxuICAgICAgaHR0cEFwaSxcbiAgICAgIHJlbW92YWxQb2xpY3ksXG4gICAgICBhc3NldE5hbWVSb290LFxuICAgICAgYXNzZXROYW1lU3VmZml4LFxuICAgICAgcm9vdFBhdGhQcmVmaXggPSAnJyxcbiAgICAgIHJlcXVpcmVJQU1BdXRob3JpemF0aW9uID0gdHJ1ZSxcbiAgICB9ID0gcHJvcHM7XG5cbiAgICBpZiAoczNTdHJpY3RCdWNrZXRQb2xpY3kgPT09IHRydWUpIHtcbiAgICAgIGlmIChzM1BvbGljeUJ5cGFzc0FST0FzLmxlbmd0aCA9PT0gMCAmJiBzM1BvbGljeUJ5cGFzc1ByaW5jaXBhbEFSTnMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAnczNTdHJpY3RCdWNrZXRQb2xpY3kgY2Fubm90IGJlIHRydWUgd2l0aG91dCBzcGVjaWZ5aW5nIGF0IGxlYXN0IG9uZSBzM1BvbGljeUJ5cGFzc0FST0FzIG9yIHMzUG9saWN5QnlwYXNzUHJpbmNpcGFsQVJOcycsXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy9cbiAgICAvLyBEeW5hbW9EQiBUYWJsZVxuICAgIC8vXG4gICAgaWYgKHByb3BzLnRhYmxlID09PSB1bmRlZmluZWQpIHtcbiAgICAgIC8vIENyZWF0ZSBhYmxlIGlmIG5vbmUgcGFzc2VkXG4gICAgICB0aGlzLl9vd25lZFRhYmxlID0gbmV3IGR5bmFtb2RiLlRhYmxlKHRoaXMsICd0YWJsZScsIHtcbiAgICAgICAgdGFibGVOYW1lOiBhc3NldE5hbWVSb290XG4gICAgICAgICAgPyBgJHthc3NldE5hbWVSb290fSR7YXNzZXROYW1lU3VmZml4fWBcbiAgICAgICAgICA6IFBoeXNpY2FsTmFtZS5HRU5FUkFURV9JRl9ORUVERUQsXG4gICAgICAgIGJpbGxpbmdNb2RlOiBkeW5hbW9kYi5CaWxsaW5nTW9kZS5QQVlfUEVSX1JFUVVFU1QsXG4gICAgICAgIHBhcnRpdGlvbktleToge1xuICAgICAgICAgIG5hbWU6ICdQSycsXG4gICAgICAgICAgdHlwZTogZHluYW1vZGIuQXR0cmlidXRlVHlwZS5TVFJJTkcsXG4gICAgICAgIH0sXG4gICAgICAgIHNvcnRLZXk6IHtcbiAgICAgICAgICBuYW1lOiAnU0snLFxuICAgICAgICAgIHR5cGU6IGR5bmFtb2RiLkF0dHJpYnV0ZVR5cGUuU1RSSU5HLFxuICAgICAgICB9LFxuICAgICAgICByZW1vdmFsUG9saWN5LFxuICAgICAgfSk7XG4gICAgICB0aGlzLl90YWJsZSA9IHRoaXMuX293bmVkVGFibGU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX3RhYmxlID0gcHJvcHMudGFibGU7XG4gICAgfVxuXG4gICAgLy9cbiAgICAvLyBEZXBsb3llciBMYW1iZGEgRnVuY3Rpb25cbiAgICAvL1xuXG4gICAgLy8gQ3JlYXRlIERlcGxveWVyIExhbWJkYSBGdW5jdGlvblxuICAgIGNvbnN0IGlhbVJvbGVVcGxvYWROYW1lID0gYXNzZXROYW1lUm9vdFxuICAgICAgPyBgJHthc3NldE5hbWVSb290fS1kZXBsb3llci11cGxvYWQke2Fzc2V0TmFtZVN1ZmZpeH1gXG4gICAgICA6IHVuZGVmaW5lZDtcbiAgICBjb25zdCBpYW1Sb2xlRGVwbG95ZXJOYW1lID0gYXNzZXROYW1lUm9vdFxuICAgICAgPyBgJHthc3NldE5hbWVSb290fS1kZXBsb3llciR7YXNzZXROYW1lU3VmZml4fWBcbiAgICAgIDogdW5kZWZpbmVkO1xuICAgIGNvbnN0IGlhbVJvbGVEZXBsb3llciA9IG5ldyBpYW0uUm9sZSh0aGlzLCAnZGVwbG95ZXItcm9sZScsIHtcbiAgICAgIGFzc3VtZWRCeTogbmV3IGlhbS5TZXJ2aWNlUHJpbmNpcGFsKCdsYW1iZGEuYW1hem9uYXdzLmNvbScpLFxuICAgICAgcm9sZU5hbWU6IGlhbVJvbGVEZXBsb3llck5hbWUsXG4gICAgICBtYW5hZ2VkUG9saWNpZXM6IFtcbiAgICAgICAgaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKCdzZXJ2aWNlLXJvbGUvQVdTTGFtYmRhQmFzaWNFeGVjdXRpb25Sb2xlJyksXG4gICAgICBdLFxuICAgIH0pO1xuICAgIGNvbnN0IGRlcGxveWVyRnVuY05hbWUgPSBhc3NldE5hbWVSb290XG4gICAgICA/IGAke2Fzc2V0TmFtZVJvb3R9LWRlcGxveWVyJHthc3NldE5hbWVTdWZmaXh9YFxuICAgICAgOiB1bmRlZmluZWQ7XG4gICAgY29uc3QgZGVwbG95ZXJGdW5jUHJvcHM6IE9taXQ8bGFtYmRhLkZ1bmN0aW9uUHJvcHMsICdoYW5kbGVyJyB8ICdjb2RlJz4gPSB7XG4gICAgICBmdW5jdGlvbk5hbWU6IGRlcGxveWVyRnVuY05hbWUsXG4gICAgICByb2xlOiBpYW1Sb2xlRGVwbG95ZXIsXG4gICAgICBtZW1vcnlTaXplOiAxNzY5LFxuICAgICAgbG9nUmV0ZW50aW9uOiBsb2dzLlJldGVudGlvbkRheXMuT05FX01PTlRILFxuICAgICAgcnVudGltZTogbGFtYmRhLlJ1bnRpbWUuTk9ERUpTXzE2X1gsXG4gICAgICB0aW1lb3V0OiBkZXBsb3llclRpbWVvdXQsXG4gICAgICBlbnZpcm9ubWVudDoge1xuICAgICAgICBOT0RFX0VOVjogYXBwRW52LFxuICAgICAgICAuLi4oaHR0cEFwaSA/IHsgQVBJR1dZX0lEOiBodHRwQXBpLmh0dHBBcGlJZCB9IDoge30pLFxuICAgICAgICBEQVRBQkFTRV9UQUJMRV9OQU1FOiB0aGlzLl90YWJsZS50YWJsZU5hbWUsXG4gICAgICAgIEZJTEVTVE9SRV9TVEFHSU5HX0JVQ0tFVDogYnVja2V0QXBwc1N0YWdpbmcuYnVja2V0TmFtZSxcbiAgICAgICAgRklMRVNUT1JFX0RFU1RfQlVDS0VUOiBidWNrZXRBcHBzLmJ1Y2tldE5hbWUsXG4gICAgICAgIEFXU19OT0RFSlNfQ09OTkVDVElPTl9SRVVTRV9FTkFCTEVEOiAnMScsXG4gICAgICAgIFJPT1RfUEFUSF9QUkVGSVg6IHJvb3RQYXRoUHJlZml4LFxuICAgICAgICBSRVFVSVJFX0lBTV9BVVRIT1JJWkFUSU9OOiByZXF1aXJlSUFNQXV0aG9yaXphdGlvbiA/ICd0cnVlJyA6ICdmYWxzZScsXG4gICAgICB9LFxuICAgIH07XG4gICAgaWYgKFxuICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09ICd0ZXN0JyAmJlxuICAgICAgZXhpc3RzU3luYyhwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi4nLCAnLi4nLCAnbWljcm9hcHBzLWRlcGxveWVyJywgJ2Rpc3QnLCAnaW5kZXguanMnKSlcbiAgICApIHtcbiAgICAgIC8vIFRoaXMgaXMgZm9yIGxvY2FsIGRldlxuICAgICAgdGhpcy5fZGVwbG95ZXJGdW5jID0gbmV3IGxhbWJkYS5GdW5jdGlvbih0aGlzLCAnZGVwbG95ZXItZnVuYycsIHtcbiAgICAgICAgY29kZTogbGFtYmRhLkNvZGUuZnJvbUFzc2V0KHBhdGguam9pbihfX2Rpcm5hbWUsICcuLicsICcuLicsICdtaWNyb2FwcHMtZGVwbG95ZXInLCAnZGlzdCcpKSxcbiAgICAgICAgaGFuZGxlcjogJ2luZGV4LmhhbmRsZXInLFxuICAgICAgICAuLi5kZXBsb3llckZ1bmNQcm9wcyxcbiAgICAgIH0pO1xuICAgIH0gZWxzZSBpZiAoZXhpc3RzU3luYyhwYXRoLmpvaW4oX19kaXJuYW1lLCAnbWljcm9hcHBzLWRlcGxveWVyJywgJ2luZGV4LmpzJykpKSB7XG4gICAgICAvLyBUaGlzIGlzIGZvciBidWlsdCBhcHBzIHBhY2thZ2VkIHdpdGggdGhlIENESyBjb25zdHJ1Y3RcbiAgICAgIHRoaXMuX2RlcGxveWVyRnVuYyA9IG5ldyBsYW1iZGEuRnVuY3Rpb24odGhpcywgJ2RlcGxveWVyLWZ1bmMnLCB7XG4gICAgICAgIGNvZGU6IGxhbWJkYS5Db2RlLmZyb21Bc3NldChwYXRoLmpvaW4oX19kaXJuYW1lLCAnbWljcm9hcHBzLWRlcGxveWVyJykpLFxuICAgICAgICBoYW5kbGVyOiAnaW5kZXguaGFuZGxlcicsXG4gICAgICAgIC4uLmRlcGxveWVyRnVuY1Byb3BzLFxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX2RlcGxveWVyRnVuYyA9IG5ldyBsYW1iZGFOb2RlanMuTm9kZWpzRnVuY3Rpb24odGhpcywgJ2RlcGxveWVyLWZ1bmMnLCB7XG4gICAgICAgIGVudHJ5OiBwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi4nLCAnLi4nLCAnbWljcm9hcHBzLWRlcGxveWVyJywgJ3NyYycsICdpbmRleC50cycpLFxuICAgICAgICBoYW5kbGVyOiAnaGFuZGxlcicsXG4gICAgICAgIGJ1bmRsaW5nOiB7XG4gICAgICAgICAgbWluaWZ5OiB0cnVlLFxuICAgICAgICAgIHNvdXJjZU1hcDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgLi4uZGVwbG95ZXJGdW5jUHJvcHMsXG4gICAgICB9KTtcbiAgICB9XG4gICAgaWYgKHJlbW92YWxQb2xpY3kgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5fZGVwbG95ZXJGdW5jLmFwcGx5UmVtb3ZhbFBvbGljeShyZW1vdmFsUG9saWN5KTtcbiAgICB9XG4gICAgLy8gR2l2ZSB0aGUgRGVwbG95ZXIgYWNjZXNzIHRvIER5bmFtb0RCIHRhYmxlXG4gICAgdGhpcy5fdGFibGUuZ3JhbnRSZWFkV3JpdGVEYXRhKHRoaXMuX2RlcGxveWVyRnVuYyk7XG4gICAgdGhpcy5fdGFibGUuZ3JhbnQodGhpcy5fZGVwbG95ZXJGdW5jLCAnZHluYW1vZGI6RGVzY3JpYmVUYWJsZScpO1xuXG4gICAgLy8gQWRkIFRhZ3MgdG8gRGVwbG95ZXJcbiAgICBUYWdzLm9mKHRoaXMuX2RlcGxveWVyRnVuYykuYWRkKCdtaWNyb2FwcHMtZGVwbG95ZXInLCAndHJ1ZScpO1xuXG4gICAgLy9cbiAgICAvLyBEZXBsb3llciB1cGxvYWQgdGVtcCByb2xlXG4gICAgLy8gRGVwbG95ZXIgYXNzdW1lcyB0aGlzIHJvbGUgd2l0aCBhIGxpbWl0ZWQgcG9saWN5IHRvIGdlbmVyYXRlXG4gICAgLy8gYW4gU1RTIHRlbXAgdG9rZW4gdG8gcmV0dXJuIHRvIG1pY3JvYXBwcy1wdWJsaXNoIGZvciB0aGUgdXBsb2FkLlxuICAgIC8vXG4gICAgY29uc3QgaWFtUm9sZVVwbG9hZCA9IG5ldyBpYW0uUm9sZSh0aGlzLCAnZGVwbG95ZXItdXBsb2FkLXJvbGUnLCB7XG4gICAgICByb2xlTmFtZTogaWFtUm9sZVVwbG9hZE5hbWUsXG4gICAgICBpbmxpbmVQb2xpY2llczoge1xuICAgICAgICB1cGxvYWRQb2xpY3k6IG5ldyBpYW0uUG9saWN5RG9jdW1lbnQoe1xuICAgICAgICAgIHN0YXRlbWVudHM6IFtcbiAgICAgICAgICAgIG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgICAgICAgYWN0aW9uczogWydzMzpMaXN0QnVja2V0J10sXG4gICAgICAgICAgICAgIHJlc291cmNlczogW2J1Y2tldEFwcHNTdGFnaW5nLmJ1Y2tldEFybl0sXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgICAgICAgYWN0aW9uczogWydzMzpQdXRPYmplY3QnLCAnczM6R2V0T2JqZWN0JywgJ3MzOkFib3J0TXVsdGlwYXJ0VXBsb2FkJ10sXG4gICAgICAgICAgICAgIHJlc291cmNlczogW2Ake2J1Y2tldEFwcHNTdGFnaW5nLmJ1Y2tldEFybn0vKmBdLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgXSxcbiAgICAgICAgfSksXG4gICAgICB9LFxuICAgICAgYXNzdW1lZEJ5OiB0aGlzLl9kZXBsb3llckZ1bmMuZ3JhbnRQcmluY2lwYWwsXG4gICAgfSk7XG4gICAgdGhpcy5fZGVwbG95ZXJGdW5jLmFkZEVudmlyb25tZW50KCdVUExPQURfUk9MRV9OQU1FJywgaWFtUm9sZVVwbG9hZC5yb2xlTmFtZSk7XG5cbiAgICAvL1xuICAgIC8vIFVwZGF0ZSBTMyBwZXJtaXNzaW9uc1xuICAgIC8vXG4gICAgLy8gQ3JlYXRlIFByaW5jaXBhbEFSTiBMaXN0XG4gICAgY29uc3QgczNQb2xpY3lCeXBhc3NBcm5QcmluY2lwYWxzOiBpYW0uQXJuUHJpbmNpcGFsW10gPSBbXTtcbiAgICBmb3IgKGNvbnN0IGFyblByaW5jaXBhbCBvZiBzM1BvbGljeUJ5cGFzc1ByaW5jaXBhbEFSTnMpIHtcbiAgICAgIHMzUG9saWN5QnlwYXNzQXJuUHJpbmNpcGFscy5wdXNoKG5ldyBpYW0uQXJuUHJpbmNpcGFsKGFyblByaW5jaXBhbCkpO1xuICAgIH1cbiAgICAvLyBDcmVhdGUgQVJPQSBMaXN0IHRoYXQgbWF0Y2hlcyBhc3N1bWVkIHNlc3Npb25zXG4gICAgY29uc3QgczNQb2xpY3lCeXBhc3NBUk9BTWF0Y2hlczogc3RyaW5nW10gPSBbXTtcbiAgICBmb3IgKGNvbnN0IGFyb2Egb2YgczNQb2xpY3lCeXBhc3NBUk9Bcykge1xuICAgICAgczNQb2xpY3lCeXBhc3NBUk9BTWF0Y2hlcy5wdXNoKGAke2Fyb2F9OipgKTtcbiAgICB9XG4gICAgLy8gRGVueSBhcHBzIGZyb20gcmVhZGluZzpcbiAgICAvLyAtIElmIHRoZXkgYXJlIG1pc3NpbmcgdGhlIG1pY3JvYXBwLW5hbWUgdGFnXG4gICAgLy8gLSBBbnl0aGluZyBvdXRzaWRlIG9mIHRoZSBmb2xkZXIgdGhhdCBtYXRjaGVzIHRoZWlyIG1pY3JvYXBwLW5hbWUgdGFnXG4gICAgY29uc3QgcG9saWN5RGVueVByZWZpeE91dHNpZGVUYWcgPSBuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICBzaWQ6ICdkZW55LXByZWZpeC1vdXRzaWRlLW1pY3JvYXBwLW5hbWUtdGFnJyxcbiAgICAgIGVmZmVjdDogaWFtLkVmZmVjdC5ERU5ZLFxuICAgICAgYWN0aW9uczogWydzMzoqJ10sXG4gICAgICBub3RQcmluY2lwYWxzOiBbXG4gICAgICAgIG5ldyBpYW0uQ2Fub25pY2FsVXNlclByaW5jaXBhbChcbiAgICAgICAgICBidWNrZXRBcHBzT0FJLmNsb3VkRnJvbnRPcmlnaW5BY2Nlc3NJZGVudGl0eVMzQ2Fub25pY2FsVXNlcklkLFxuICAgICAgICApLFxuICAgICAgICBuZXcgaWFtLkFjY291bnRSb290UHJpbmNpcGFsKCksXG4gICAgICAgIC4uLnMzUG9saWN5QnlwYXNzQXJuUHJpbmNpcGFscyxcbiAgICAgICAgdGhpcy5fZGVwbG95ZXJGdW5jLmdyYW50UHJpbmNpcGFsLFxuICAgICAgXSxcbiAgICAgIG5vdFJlc291cmNlczogW1xuICAgICAgICBgJHtidWNrZXRBcHBzLmJ1Y2tldEFybn0vXFwke2F3czpQcmluY2lwYWxUYWcvbWljcm9hcHAtbmFtZX0vKmAsXG4gICAgICAgIGJ1Y2tldEFwcHMuYnVja2V0QXJuLFxuICAgICAgXSxcbiAgICAgIGNvbmRpdGlvbnM6IHtcbiAgICAgICAgTnVsbDogeyAnYXdzOlByaW5jaXBhbFRhZy9taWNyb2FwcC1uYW1lJzogJ2ZhbHNlJyB9LFxuICAgICAgICAvLyBTdHJpbmdOb3RMaWtlOiB7J2F3czonfVxuICAgICAgfSxcbiAgICB9KTtcbiAgICBpZiAocmVtb3ZhbFBvbGljeSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBwb2xpY3lEZW55UHJlZml4T3V0c2lkZVRhZy5hZGRDb25kaXRpb24oXG4gICAgICAgIC8vIEFsbG93cyB0aGUgRGVsZXRhYmxlQnVja2V0IExhbWJkYSB0byBkZWxldGUgaXRlbXMgaW4gdGhlIGJ1Y2tldHNcbiAgICAgICAgJ1N0cmluZ05vdExpa2UnLFxuICAgICAgICB7ICdhd3M6UHJpbmNpcGFsVGFnL2FwcGxpY2F0aW9uJzogYCR7U3RhY2sub2YodGhpcykuc3RhY2tOYW1lfS1jb3JlKmAgfSxcbiAgICAgICk7XG4gICAgfVxuICAgIGNvbnN0IHBvbGljeURlbnlNaXNzaW5nVGFnID0gbmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgc2lkOiAnZGVueS1taXNzaW5nLW1pY3JvYXBwLW5hbWUtdGFnJyxcbiAgICAgIGVmZmVjdDogaWFtLkVmZmVjdC5ERU5ZLFxuICAgICAgYWN0aW9uczogWydzMzoqJ10sXG4gICAgICBub3RQcmluY2lwYWxzOiBbXG4gICAgICAgIG5ldyBpYW0uQ2Fub25pY2FsVXNlclByaW5jaXBhbChcbiAgICAgICAgICBidWNrZXRBcHBzT0FJLmNsb3VkRnJvbnRPcmlnaW5BY2Nlc3NJZGVudGl0eVMzQ2Fub25pY2FsVXNlcklkLFxuICAgICAgICApLFxuICAgICAgICBuZXcgaWFtLkFjY291bnRSb290UHJpbmNpcGFsKCksXG4gICAgICAgIC8vIEV4Y2x1ZGUgdGhlIERlcGxveWVyIEZ1bmN0aW9uIGRpcmVjdGx5XG4gICAgICAgIHRoaXMuX2RlcGxveWVyRnVuYy5ncmFudFByaW5jaXBhbCxcbiAgICAgICAgLy8gMjAyMS0xMi0wNCAtIE5vdCAxMDAlIHN1cmUgdGhhdCB0aGlzIGlzIGFjdHVhbGx5IG5lZWRlZC4uLlxuICAgICAgICAvLyBMZXQncyB0ZXN0IHRoaXMgYW5kIHJlbW92ZSBpZiBhY3R1YWxseSBub3QgbmVjZXNzYXJ5XG4gICAgICAgIG5ldyBpYW0uQXJuUHJpbmNpcGFsKFxuICAgICAgICAgIGBhcm46YXdzOnN0czo6JHtBd3MuQUNDT1VOVF9JRH06YXNzdW1lZC1yb2xlLyR7dGhpcy5fZGVwbG95ZXJGdW5jLnJvbGU/LnJvbGVOYW1lfS8ke3RoaXMuX2RlcGxveWVyRnVuYy5mdW5jdGlvbk5hbWV9YCxcbiAgICAgICAgKSxcbiAgICAgICAgLi4uczNQb2xpY3lCeXBhc3NBcm5QcmluY2lwYWxzLFxuICAgICAgXSxcbiAgICAgIHJlc291cmNlczogW2Ake2J1Y2tldEFwcHMuYnVja2V0QXJufS8qYCwgYnVja2V0QXBwcy5idWNrZXRBcm5dLFxuICAgICAgY29uZGl0aW9uczoge1xuICAgICAgICBOdWxsOiB7ICdhd3M6UHJpbmNpcGFsVGFnL21pY3JvYXBwLW5hbWUnOiAndHJ1ZScgfSxcbiAgICAgICAgLy8gTm90ZTogVGhpcyBBUk9BIG11c3QgYmUgc3BlY2lmaWVkIHRvIHByZXZlbnQgdGhpcyBwb2xpY3kgZnJvbSBsb2NraW5nXG4gICAgICAgIC8vIG91dCBub24tcm9vdCBzZXNzaW9ucyB0aGF0IGhhdmUgYXNzdW1lZCB0aGUgYWRtaW4gcm9sZS5cbiAgICAgICAgLy8gVGhlIG5vdFByaW5jaXBhbHMgd2lsbCBvbmx5IG1hdGNoIHRoZSByb2xlIG5hbWUgZXhhY3RseSBhbmQgd2lsbCBub3QgbWF0Y2hcbiAgICAgICAgLy8gYW55IHNlc3Npb24gdGhhdCBoYXMgYXNzdW1lZCB0aGUgcm9sZSBzaW5jZSBub3RQcmluY2lwYWxzIGRvZXMgbm90IGFsbG93XG4gICAgICAgIC8vIHdpbGRjYXJkIG1hdGNoZXMgYW5kIGRvZXMgbm90IGRvIHRoZW0gaW1wbGljaXRseSBlaXRoZXIuXG4gICAgICAgIC8vIFRoZSBBUk9BIG11c3QgYmUgdXNlZCBiZWNhdXNlIHRoZXJlIGFyZSBvbmx5IDMgUHJpbmNpcGFsIHZhcmlhYmxlczpcbiAgICAgICAgLy8gIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9JQU0vbGF0ZXN0L1VzZXJHdWlkZS9yZWZlcmVuY2VfcG9saWNpZXNfdmFyaWFibGVzLmh0bWwjcHJpbmNpcGFsdGFibGVcbiAgICAgICAgLy8gIGF3czp1c2VybmFtZSwgYXdzOnVzZXJpZCwgYXdzOlByaW5jaXBhbFRhZ1xuICAgICAgICAvLyBGb3IgYW4gYXNzdW1lZCByb2xlLCBhd3M6dXNlcm5hbWUgaXMgYmxhbmssIGF3czp1c2VyaWQgaXM6XG4gICAgICAgIC8vICBbdW5pcXVlIGlkIEFLQSBBUk9BIGZvciBSb2xlXTpbc2Vzc2lvbiBuYW1lXVxuICAgICAgICAvLyBUYWJsZSBvZiB1bmlxdWUgSUQgcHJlZml4ZXMgc3VjaCBhcyBBUk9BOlxuICAgICAgICAvLyAgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0lBTS9sYXRlc3QvVXNlckd1aWRlL3JlZmVyZW5jZV9pZGVudGlmaWVycy5odG1sI2lkZW50aWZpZXJzLXByZWZpeGVzXG4gICAgICAgIC8vIFRoZSBuYW1lIG9mIHRoZSByb2xlIGlzIHNpbXBseSBub3QgYXZhaWxhYmxlIGFuZCBpZiBpdCB3YXNcbiAgICAgICAgLy8gd2UnZCBuZWVkIHRvIHdyaXRlIGEgY29tcGxpY2F0ZWQgY29tcGFyaXNvbiB0byBtYWtlIHN1cmVcbiAgICAgICAgLy8gdGhhdCB3ZSBkaWRuJ3QgZXhjbHVkZSB0aGUgRGVueSB0YWcgZnJvbSByb2xlcyBpbiBvdGhlciBhY2NvdW50cy5cbiAgICAgICAgLy9cbiAgICAgICAgLy8gVG8gZ2V0IHRoZSBBUk9BIHdpdGggdGhlIEFXUyBDTEk6XG4gICAgICAgIC8vICAgYXdzIGlhbSBnZXQtcm9sZSAtLXJvbGUtbmFtZSBST0xFLU5BTUVcbiAgICAgICAgLy8gICBhd3MgaWFtIGdldC11c2VyIC3igJN1c2VyLW5hbWUgVVNFUi1OQU1FXG4gICAgICAgIFN0cmluZ05vdExpa2U6IHsgJ2F3czp1c2VyaWQnOiBbQXdzLkFDQ09VTlRfSUQsIC4uLnMzUG9saWN5QnlwYXNzQVJPQU1hdGNoZXNdIH0sXG4gICAgICB9LFxuICAgIH0pO1xuICAgIGlmIChyZW1vdmFsUG9saWN5ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHBvbGljeURlbnlNaXNzaW5nVGFnLmFkZENvbmRpdGlvbihcbiAgICAgICAgLy8gQWxsb3dzIHRoZSBEZWxldGFibGVCdWNrZXQgTGFtYmRhIHRvIGRlbGV0ZSBpdGVtcyBpbiB0aGUgYnVja2V0c1xuICAgICAgICAnU3RyaW5nTm90TGlrZScsXG4gICAgICAgIHsgJ2F3czpQcmluY2lwYWxUYWcvYXBwbGljYXRpb24nOiBgJHtTdGFjay5vZih0aGlzKS5zdGFja05hbWV9LWNvcmUqYCB9LFxuICAgICAgKTtcbiAgICB9XG4gICAgY29uc3QgcG9saWN5Q2xvdWRGcm9udEFjY2VzcyA9IG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgIHNpZDogJ2Nsb3VkZnJvbnQtb2FpLWFjY2VzcycsXG4gICAgICBlZmZlY3Q6IGlhbS5FZmZlY3QuQUxMT1csXG4gICAgICBhY3Rpb25zOiBbJ3MzOkdldE9iamVjdCcsICdzMzpMaXN0QnVja2V0J10sXG4gICAgICBwcmluY2lwYWxzOiBbXG4gICAgICAgIG5ldyBpYW0uQ2Fub25pY2FsVXNlclByaW5jaXBhbChcbiAgICAgICAgICBidWNrZXRBcHBzT0FJLmNsb3VkRnJvbnRPcmlnaW5BY2Nlc3NJZGVudGl0eVMzQ2Fub25pY2FsVXNlcklkLFxuICAgICAgICApLFxuICAgICAgXSxcbiAgICAgIHJlc291cmNlczogW2Ake2J1Y2tldEFwcHMuYnVja2V0QXJufS8qYCwgYnVja2V0QXBwcy5idWNrZXRBcm5dLFxuICAgIH0pO1xuXG4gICAgaWYgKGJ1Y2tldEFwcHMucG9saWN5ID09PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnN0IGRvY3VtZW50ID0gbmV3IHMzLkJ1Y2tldFBvbGljeSh0aGlzLCAnczMtcG9saWN5Jywge1xuICAgICAgICBidWNrZXQ6IGJ1Y2tldEFwcHMsXG4gICAgICB9KS5kb2N1bWVudDtcbiAgICAgIGRvY3VtZW50LmFkZFN0YXRlbWVudHMocG9saWN5Q2xvdWRGcm9udEFjY2Vzcyk7XG5cbiAgICAgIGlmIChzM1N0cmljdEJ1Y2tldFBvbGljeSkge1xuICAgICAgICBkb2N1bWVudC5hZGRTdGF0ZW1lbnRzKHBvbGljeURlbnlQcmVmaXhPdXRzaWRlVGFnKTtcbiAgICAgICAgZG9jdW1lbnQuYWRkU3RhdGVtZW50cyhwb2xpY3lEZW55TWlzc2luZ1RhZyk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGJ1Y2tldEFwcHMucG9saWN5LmRvY3VtZW50LmFkZFN0YXRlbWVudHMocG9saWN5Q2xvdWRGcm9udEFjY2Vzcyk7XG5cbiAgICAgIGlmIChzM1N0cmljdEJ1Y2tldFBvbGljeSkge1xuICAgICAgICBidWNrZXRBcHBzLnBvbGljeS5kb2N1bWVudC5hZGRTdGF0ZW1lbnRzKHBvbGljeURlbnlQcmVmaXhPdXRzaWRlVGFnKTtcbiAgICAgICAgYnVja2V0QXBwcy5wb2xpY3kuZG9jdW1lbnQuYWRkU3RhdGVtZW50cyhwb2xpY3lEZW55TWlzc2luZ1RhZyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gQWxsb3cgdGhlIExhbWJkYSB0byByZWFkIGZyb20gdGhlIHN0YWdpbmcgYnVja2V0XG4gICAgY29uc3QgcG9saWN5UmVhZExpc3RTdGFnaW5nID0gbmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgZWZmZWN0OiBpYW0uRWZmZWN0LkFMTE9XLFxuICAgICAgLy8gRklYTUU6IEFsbG93IERlcGxveWVyIHRvIGRlbGV0ZSBmcm9tIFN0YWdpbmcgYnVja2V0XG4gICAgICBhY3Rpb25zOiBbJ3MzOkRlbGV0ZU9iamVjdCcsICdzMzpHZXRPYmplY3QnLCAnczM6TGlzdEJ1Y2tldCddLFxuICAgICAgcmVzb3VyY2VzOiBbYCR7YnVja2V0QXBwc1N0YWdpbmcuYnVja2V0QXJufS8qYCwgYnVja2V0QXBwc1N0YWdpbmcuYnVja2V0QXJuXSxcbiAgICB9KTtcbiAgICB0aGlzLl9kZXBsb3llckZ1bmMuYWRkVG9Sb2xlUG9saWN5KHBvbGljeVJlYWRMaXN0U3RhZ2luZyk7XG5cbiAgICAvLyBBbGxvdyB0aGUgTGFtYmRhIHRvIHdyaXRlIHRvIHRoZSB0YXJnZXQgYnVja2V0IGFuZCBkZWxldGVcbiAgICBjb25zdCBwb2xpY3lSZWFkV3JpdGVMaXN0VGFyZ2V0ID0gbmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgZWZmZWN0OiBpYW0uRWZmZWN0LkFMTE9XLFxuICAgICAgYWN0aW9uczogWydzMzpEZWxldGVPYmplY3QnLCAnczM6R2V0T2JqZWN0JywgJ3MzOlB1dE9iamVjdCcsICdzMzpMaXN0QnVja2V0J10sXG4gICAgICByZXNvdXJjZXM6IFtgJHtidWNrZXRBcHBzLmJ1Y2tldEFybn0vKmAsIGJ1Y2tldEFwcHMuYnVja2V0QXJuXSxcbiAgICB9KTtcbiAgICB0aGlzLl9kZXBsb3llckZ1bmMuYWRkVG9Sb2xlUG9saWN5KHBvbGljeVJlYWRXcml0ZUxpc3RUYXJnZXQpO1xuXG4gICAgLy8gQWxsb3cgdGhlIGRlcGxveWVyIHRvIGdldCBhIHRlbXBvcmFyeSBTVFMgdG9rZW5cbiAgICBjb25zdCBwb2xpY3lHZXRTVFNUb2tlbiA9IG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgIGVmZmVjdDogaWFtLkVmZmVjdC5BTExPVyxcbiAgICAgIGFjdGlvbnM6IFsnc3RzOkdldEZlZGVyYXRpb25Ub2tlbiddLFxuICAgICAgcmVzb3VyY2VzOiBbJyonXSxcbiAgICB9KTtcbiAgICB0aGlzLl9kZXBsb3llckZ1bmMuYWRkVG9Sb2xlUG9saWN5KHBvbGljeUdldFNUU1Rva2VuKTtcblxuICAgIC8vIEFsbG93IHRoZSBkZXBsb3llciB0byBhc3N1bWUgdGhlIHVwbG9hZCByb2xlXG4gICAgY29uc3QgcG9saWN5QXNzdW1lVXBsb2FkID0gbmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgZWZmZWN0OiBpYW0uRWZmZWN0LkFMTE9XLFxuICAgICAgYWN0aW9uczogWydzdHM6QXNzdW1lUm9sZSddLFxuICAgICAgcmVzb3VyY2VzOiBbaWFtUm9sZVVwbG9hZC5yb2xlQXJuXSxcbiAgICB9KTtcbiAgICB0aGlzLl9kZXBsb3llckZ1bmMuYWRkVG9Sb2xlUG9saWN5KHBvbGljeUFzc3VtZVVwbG9hZCk7XG5cbiAgICAvL1xuICAgIC8vIEdpdmUgRGVwbG95ZXIgcGVybWlzc2lvbnMgdG8gY3JlYXRlIHJvdXRlcyBhbmQgaW50ZWdyYXRpb25zXG4gICAgLy8gb24gdGhlIEFQSSBHYXRld2F5IEFQSS5cbiAgICAvL1xuXG4gICAgLy8gR3JhbnQgdGhlIGFiaWxpdHkgdG8gTGlzdCBhbGwgQVBJcyAod2UgaGF2ZSB0byBmaW5kIGl0KVxuICAgIGNvbnN0IHBvbGljeUFQSUxpc3QgPSBuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICBlZmZlY3Q6IGlhbS5FZmZlY3QuQUxMT1csXG4gICAgICBhY3Rpb25zOiBbJ2FwaWdhdGV3YXk6R0VUJ10sXG4gICAgICByZXNvdXJjZXM6IFtgYXJuOmF3czphcGlnYXRld2F5OiR7QXdzLlJFR0lPTn06Oi9hcGlzYF0sXG4gICAgfSk7XG4gICAgdGhpcy5fZGVwbG95ZXJGdW5jLmFkZFRvUm9sZVBvbGljeShwb2xpY3lBUElMaXN0KTtcblxuICAgIGlmIChodHRwQXBpKSB7XG4gICAgICAvLyBHcmFudCBmdWxsIGNvbnRyb2wgb3ZlciB0aGUgQVBJIHdlIGNyZWF0ZWRcbiAgICAgIGNvbnN0IHBvbGljeUFQSU1hbmFnZSA9IG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgZWZmZWN0OiBpYW0uRWZmZWN0LkFMTE9XLFxuICAgICAgICBhY3Rpb25zOiBbJ2FwaWdhdGV3YXk6KiddLFxuICAgICAgICByZXNvdXJjZXM6IFtcbiAgICAgICAgICBgYXJuOmF3czphcGlnYXRld2F5OiR7QXdzLlJFR0lPTn06JHtBd3MuQUNDT1VOVF9JRH06JHtodHRwQXBpLmh0dHBBcGlJZH0vKmAsXG4gICAgICAgICAgYGFybjphd3M6YXBpZ2F0ZXdheToke0F3cy5SRUdJT059OjovYXBpcy8ke2h0dHBBcGkuaHR0cEFwaUlkfS9pbnRlZ3JhdGlvbnMvKmAsXG4gICAgICAgICAgYGFybjphd3M6YXBpZ2F0ZXdheToke0F3cy5SRUdJT059OjovYXBpcy8ke2h0dHBBcGkuaHR0cEFwaUlkfS9pbnRlZ3JhdGlvbnNgLFxuICAgICAgICAgIGBhcm46YXdzOmFwaWdhdGV3YXk6JHtBd3MuUkVHSU9OfTo6L2FwaXMvJHtodHRwQXBpLmh0dHBBcGlJZH0vcm91dGVzYCxcbiAgICAgICAgICBgYXJuOmF3czphcGlnYXRld2F5OiR7QXdzLlJFR0lPTn06Oi9hcGlzLyR7aHR0cEFwaS5odHRwQXBpSWR9L3JvdXRlcy8qYCxcbiAgICAgICAgXSxcbiAgICAgIH0pO1xuICAgICAgdGhpcy5fZGVwbG95ZXJGdW5jLmFkZFRvUm9sZVBvbGljeShwb2xpY3lBUElNYW5hZ2UpO1xuICAgIH1cblxuICAgIC8vIEdyYW50IGZ1bGwgY29udHJvbCBvdmVyIGxhbWJkYXMgdGhhdCBpbmRpY2F0ZSB0aGV5IGFyZSBtaWNyb2FwcHNcbiAgICBjb25zdCBwb2xpY3lBUElNYW5hZ2VMYW1iZGFzID0gbmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgZWZmZWN0OiBpYW0uRWZmZWN0LkFMTE9XLFxuICAgICAgYWN0aW9uczogWydsYW1iZGE6KiddLFxuICAgICAgcmVzb3VyY2VzOiBbXG4gICAgICAgIGBhcm46YXdzOmxhbWJkYToke0F3cy5SRUdJT059OiR7QXdzLkFDQ09VTlRfSUR9OmZ1bmN0aW9uOipgLFxuICAgICAgICBgYXJuOmF3czpsYW1iZGE6JHtBd3MuUkVHSU9OfToke0F3cy5BQ0NPVU5UX0lEfTpmdW5jdGlvbjoqOipgLFxuICAgICAgXSxcbiAgICAgIGNvbmRpdGlvbnM6IHtcbiAgICAgICAgU3RyaW5nRXF1YWxzSWZFeGlzdHM6IHsgJ2F3czpSZXNvdXJjZVRhZy9taWNyb2FwcC1tYW5hZ2VkJzogJ3RydWUnIH0sXG4gICAgICB9LFxuICAgIH0pO1xuICAgIHRoaXMuX2RlcGxveWVyRnVuYy5hZGRUb1JvbGVQb2xpY3kocG9saWN5QVBJTWFuYWdlTGFtYmRhcyk7XG5cbiAgICBpZiAoaHR0cEFwaSkge1xuICAgICAgLy9cbiAgICAgIC8vIFJvdXRlciBMYW1iZGEgRnVuY3Rpb25cbiAgICAgIC8vXG5cbiAgICAgIC8vIENyZWF0ZSBSb3V0ZXIgTGFtYmRhIEZ1bmN0aW9uXG4gICAgICBjb25zdCByb3V0ZXJGdW5jUHJvcHM6IE9taXQ8bGFtYmRhLkZ1bmN0aW9uUHJvcHMsICdoYW5kbGVyJyB8ICdjb2RlJz4gPSB7XG4gICAgICAgIGZ1bmN0aW9uTmFtZTogYXNzZXROYW1lUm9vdCA/IGAke2Fzc2V0TmFtZVJvb3R9LXJvdXRlciR7YXNzZXROYW1lU3VmZml4fWAgOiB1bmRlZmluZWQsXG4gICAgICAgIG1lbW9yeVNpemU6IDE3NjksXG4gICAgICAgIGxvZ1JldGVudGlvbjogbG9ncy5SZXRlbnRpb25EYXlzLk9ORV9NT05USCxcbiAgICAgICAgcnVudGltZTogbGFtYmRhLlJ1bnRpbWUuTk9ERUpTXzE2X1gsXG4gICAgICAgIHRpbWVvdXQ6IER1cmF0aW9uLnNlY29uZHMoMTUpLFxuICAgICAgICBlbnZpcm9ubWVudDoge1xuICAgICAgICAgIE5PREVfRU5WOiBhcHBFbnYsXG4gICAgICAgICAgREFUQUJBU0VfVEFCTEVfTkFNRTogdGhpcy5fdGFibGUudGFibGVOYW1lLFxuICAgICAgICAgIEFXU19OT0RFSlNfQ09OTkVDVElPTl9SRVVTRV9FTkFCTEVEOiAnMScsXG4gICAgICAgICAgUk9PVF9QQVRIX1BSRUZJWDogcm9vdFBhdGhQcmVmaXgsXG4gICAgICAgIH0sXG4gICAgICB9O1xuICAgICAgaWYgKFxuICAgICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ3Rlc3QnICYmXG4gICAgICAgIGV4aXN0c1N5bmMocGF0aC5qb2luKF9fZGlybmFtZSwgJy4uJywgJy4uJywgJ21pY3JvYXBwcy1yb3V0ZXInLCAnZGlzdCcsICdpbmRleC5qcycpKVxuICAgICAgKSB7XG4gICAgICAgIC8vIFRoaXMgaXMgZm9yIGxvY2FsIGRldlxuICAgICAgICB0aGlzLl9yb3V0ZXJGdW5jID0gbmV3IGxhbWJkYS5GdW5jdGlvbih0aGlzLCAncm91dGVyLWZ1bmMnLCB7XG4gICAgICAgICAgY29kZTogbGFtYmRhLkNvZGUuZnJvbUFzc2V0KHBhdGguam9pbihfX2Rpcm5hbWUsICcuLicsICcuLicsICdtaWNyb2FwcHMtcm91dGVyJywgJ2Rpc3QnKSksXG4gICAgICAgICAgaGFuZGxlcjogJ2luZGV4LmhhbmRsZXInLFxuICAgICAgICAgIC4uLnJvdXRlckZ1bmNQcm9wcyxcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2UgaWYgKGV4aXN0c1N5bmMocGF0aC5qb2luKF9fZGlybmFtZSwgJ21pY3JvYXBwcy1yb3V0ZXInLCAnaW5kZXguanMnKSkpIHtcbiAgICAgICAgLy8gVGhpcyBpcyBmb3IgYnVpbHQgYXBwcyBwYWNrYWdlZCB3aXRoIHRoZSBDREsgY29uc3RydWN0XG4gICAgICAgIHRoaXMuX3JvdXRlckZ1bmMgPSBuZXcgbGFtYmRhLkZ1bmN0aW9uKHRoaXMsICdyb3V0ZXItZnVuYycsIHtcbiAgICAgICAgICBjb2RlOiBsYW1iZGEuQ29kZS5mcm9tQXNzZXQocGF0aC5qb2luKF9fZGlybmFtZSwgJ21pY3JvYXBwcy1yb3V0ZXInKSksXG4gICAgICAgICAgaGFuZGxlcjogJ2luZGV4LmhhbmRsZXInLFxuICAgICAgICAgIC4uLnJvdXRlckZ1bmNQcm9wcyxcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBDcmVhdGUgUm91dGVyIExhbWJkYSBMYXllclxuICAgICAgICBjb25zdCByb3V0ZXJEYXRhRmlsZXMgPSBuZXcgbGFtYmRhLkxheWVyVmVyc2lvbih0aGlzLCAncm91dGVyLXRlbXBsYXRlcycsIHtcbiAgICAgICAgICBjb2RlOiBsYW1iZGEuQ29kZS5mcm9tQXNzZXQoXG4gICAgICAgICAgICBwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi4nLCAnLi4nLCAnbWljcm9hcHBzLXJvdXRlcicsICd0ZW1wbGF0ZXMnKSxcbiAgICAgICAgICApLFxuICAgICAgICAgIHJlbW92YWxQb2xpY3ksXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuX3JvdXRlckZ1bmMgPSBuZXcgbGFtYmRhTm9kZWpzLk5vZGVqc0Z1bmN0aW9uKHRoaXMsICdyb3V0ZXItZnVuYycsIHtcbiAgICAgICAgICBlbnRyeTogcGF0aC5qb2luKF9fZGlybmFtZSwgJy4uJywgJy4uJywgJ21pY3JvYXBwcy1yb3V0ZXInLCAnc3JjJywgJ2luZGV4LnRzJyksXG4gICAgICAgICAgaGFuZGxlcjogJ2hhbmRsZXInLFxuICAgICAgICAgIGJ1bmRsaW5nOiB7XG4gICAgICAgICAgICBtaW5pZnk6IHRydWUsXG4gICAgICAgICAgICBzb3VyY2VNYXA6IHRydWUsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBsYXllcnM6IFtyb3V0ZXJEYXRhRmlsZXNdLFxuICAgICAgICAgIC4uLnJvdXRlckZ1bmNQcm9wcyxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICBpZiAocmVtb3ZhbFBvbGljeSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHRoaXMuX3JvdXRlckZ1bmMuYXBwbHlSZW1vdmFsUG9saWN5KHJlbW92YWxQb2xpY3kpO1xuICAgICAgfVxuICAgICAgY29uc3QgcG9saWN5UmVhZFRhcmdldCA9IG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgZWZmZWN0OiBpYW0uRWZmZWN0LkFMTE9XLFxuICAgICAgICBhY3Rpb25zOiBbJ3MzOkdldE9iamVjdCddLFxuICAgICAgICByZXNvdXJjZXM6IFtgJHtidWNrZXRBcHBzLmJ1Y2tldEFybn0vKmBdLFxuICAgICAgfSk7XG4gICAgICBmb3IgKGNvbnN0IHJvdXRlciBvZiBbdGhpcy5fcm91dGVyRnVuY10pIHtcbiAgICAgICAgcm91dGVyLmFkZFRvUm9sZVBvbGljeShwb2xpY3lSZWFkVGFyZ2V0KTtcbiAgICAgICAgLy8gR2l2ZSB0aGUgUm91dGVyIGFjY2VzcyB0byBEeW5hbW9EQiB0YWJsZVxuICAgICAgICB0aGlzLl90YWJsZS5ncmFudFJlYWREYXRhKHJvdXRlcik7XG4gICAgICAgIHRoaXMuX3RhYmxlLmdyYW50KHJvdXRlciwgJ2R5bmFtb2RiOkRlc2NyaWJlVGFibGUnKTtcbiAgICAgIH1cbiAgICAgIC8vIENyZWF0ZSBhbGlhcyBmb3IgUm91dGVyXG4gICAgICBjb25zdCByb3V0ZXJBbGlhcyA9IHRoaXMuX3JvdXRlckZ1bmMuYWRkQWxpYXMoJ0N1cnJlbnRWZXJzaW9uJyk7XG5cbiAgICAgIC8vIFRoaXMgY3JlYXRlcyBhbiBpbnRlZ3JhdGlvbiBhbmQgYSByb3V0ZXJcbiAgICAgIGNvbnN0IHJvdXRlID0gbmV3IGFwaWd3eS5IdHRwUm91dGUodGhpcywgJ3JvdXRlLWRlZmF1bHQnLCB7XG4gICAgICAgIGh0dHBBcGksXG4gICAgICAgIHJvdXRlS2V5OiBhcGlnd3kuSHR0cFJvdXRlS2V5LkRFRkFVTFQsXG4gICAgICAgIGludGVncmF0aW9uOiBuZXcgYXBpZ3d5aW50Lkh0dHBMYW1iZGFJbnRlZ3JhdGlvbigncm91dGVyLWludGVncmF0aW9uJywgcm91dGVyQWxpYXMpLFxuICAgICAgICBhdXRob3JpemVyOiByZXF1aXJlSUFNQXV0aG9yaXphdGlvbiA/IG5ldyBhcGlnd3lBdXRoLkh0dHBJYW1BdXRob3JpemVyKCkgOiB1bmRlZmluZWQsXG4gICAgICB9KTtcblxuICAgICAgbGV0IHJvdXRlQXJuID0gcm91dGUucm91dGVBcm47XG4gICAgICAvLyBSZW1vdmUgdGhlIHRyYWlsaW5nIGAvYCBvbiB0aGUgQVJOLCB3aGljaCBpcyBub3QgY29ycmVjdFxuICAgICAgaWYgKHJvdXRlQXJuLmVuZHNXaXRoKCcvJykpIHtcbiAgICAgICAgcm91dGVBcm4gPSByb3V0ZUFybi5zbGljZSgwLCByb3V0ZUFybi5sZW5ndGggLSAxKTtcbiAgICAgIH1cblxuICAgICAgLy8gR3JhbnQgQVBJIEdhdGV3YXkgcGVybWlzc2lvbiB0byBpbnZva2UgdGhlIExhbWJkYVxuICAgICAgbmV3IGxhbWJkYS5DZm5QZXJtaXNzaW9uKHRoaXMsICdyb3V0ZXItaW52b2tlJywge1xuICAgICAgICBhY3Rpb246ICdsYW1iZGE6SW52b2tlRnVuY3Rpb24nLFxuICAgICAgICBmdW5jdGlvbk5hbWU6IHRoaXMuX3JvdXRlckZ1bmMuZnVuY3Rpb25OYW1lLFxuICAgICAgICBwcmluY2lwYWw6ICdhcGlnYXRld2F5LmFtYXpvbmF3cy5jb20nLFxuICAgICAgICBzb3VyY2VBcm46IHJvdXRlQXJuLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG59XG4iXX0=
|
package/lib/MicroAppsTable.js
CHANGED
|
@@ -47,5 +47,5 @@ class MicroAppsTable extends constructs_1.Construct {
|
|
|
47
47
|
}
|
|
48
48
|
exports.MicroAppsTable = MicroAppsTable;
|
|
49
49
|
_a = JSII_RTTI_SYMBOL_1;
|
|
50
|
-
MicroAppsTable[_a] = { fqn: "@pwrdrvr/microapps-cdk.MicroAppsTable", version: "0.3.5
|
|
50
|
+
MicroAppsTable[_a] = { fqn: "@pwrdrvr/microapps-cdk.MicroAppsTable", version: "0.3.5" };
|
|
51
51
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWljcm9BcHBzVGFibGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvTWljcm9BcHBzVGFibGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSw2Q0FBMEQ7QUFDMUQscURBQXFEO0FBQ3JELDJDQUF1QztBQTBDdkM7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFhLGNBQWUsU0FBUSxzQkFBUztJQU0zQyxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQTJCO1FBQ25FLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFakIsSUFBSSxLQUFLLEtBQUssU0FBUyxFQUFFO1lBQ3ZCLE1BQU0sSUFBSSxLQUFLLENBQUMsMkJBQTJCLENBQUMsQ0FBQztTQUM5QztRQUVELE1BQU0sRUFBRSxhQUFhLEVBQUUsYUFBYSxFQUFFLGVBQWUsRUFBRSxHQUFHLEtBQUssQ0FBQztRQUVoRSxFQUFFO1FBQ0YsaUJBQWlCO1FBQ2pCLEVBQUU7UUFDRixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFO1lBQzlDLFNBQVMsRUFBRSxhQUFhO2dCQUN0QixDQUFDLENBQUMsR0FBRyxhQUFhLEdBQUcsZUFBZSxhQUFmLGVBQWUsY0FBZixlQUFlLEdBQUksRUFBRSxFQUFFO2dCQUM1QyxDQUFDLENBQUMsMEJBQVksQ0FBQyxrQkFBa0I7WUFDbkMsV0FBVyxFQUFFLFFBQVEsQ0FBQyxXQUFXLENBQUMsZUFBZTtZQUNqRCxZQUFZLEVBQUU7Z0JBQ1osSUFBSSxFQUFFLElBQUk7Z0JBQ1YsSUFBSSxFQUFFLFFBQVEsQ0FBQyxhQUFhLENBQUMsTUFBTTthQUNwQztZQUNELE9BQU8sRUFBRTtnQkFDUCxJQUFJLEVBQUUsSUFBSTtnQkFDVixJQUFJLEVBQUUsUUFBUSxDQUFDLGFBQWEsQ0FBQyxNQUFNO2FBQ3BDO1lBQ0QsYUFBYTtTQUNkLENBQUMsQ0FBQztJQUNMLENBQUM7SUEvQkQsSUFBVyxLQUFLO1FBQ2QsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3JCLENBQUM7O0FBSkgsd0NBa0NDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGh5c2ljYWxOYW1lLCBSZW1vdmFsUG9saWN5IH0gZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0ICogYXMgZHluYW1vZGIgZnJvbSAnYXdzLWNkay1saWIvYXdzLWR5bmFtb2RiJztcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuXG4vKipcbiAqIFByb3BlcnRpZXMgdG8gaW5pdGlhbGl6ZSBhbiBpbnN0YW5jZSBvZiBgTWljcm9BcHBzVGFibGVgLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE1pY3JvQXBwc1RhYmxlUHJvcHMge1xuICAvKipcbiAgICogUmVtb3ZhbFBvbGljeSBvdmVycmlkZSBmb3IgY2hpbGQgcmVzb3VyY2VzXG4gICAqXG4gICAqIE5vdGU6IGlmIHNldCB0byBERVNUUk9ZIHRoZSBTMyBidWNrZXMgd2lsbCBoYXZlIGBhdXRvRGVsZXRlT2JqZWN0c2Agc2V0IHRvIGB0cnVlYFxuICAgKlxuICAgKiBAZGVmYXVsdCAtIHBlciByZXNvdXJjZSBkZWZhdWx0XG4gICAqL1xuICByZWFkb25seSByZW1vdmFsUG9saWN5PzogUmVtb3ZhbFBvbGljeTtcblxuICAvKipcbiAgICogT3B0aW9uYWwgYXNzZXQgbmFtZSByb290XG4gICAqXG4gICAqIEBleGFtcGxlIG1pY3JvYXBwc1xuICAgKiBAZGVmYXVsdCAtIHJlc291cmNlIG5hbWVzIGF1dG8gYXNzaWduZWRcbiAgICovXG4gIHJlYWRvbmx5IGFzc2V0TmFtZVJvb3Q/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIE9wdGlvbmFsIGFzc2V0IG5hbWUgc3VmZml4XG4gICAqXG4gICAqIEBleGFtcGxlIC1kZXYtcHItMTJcbiAgICogQGRlZmF1bHQgbm9uZVxuICAgKi9cbiAgcmVhZG9ubHkgYXNzZXROYW1lU3VmZml4Pzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFJlcHJlc2VudHMgYSBNaWNyb0FwcHNUYWJsZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIElNaWNyb0FwcHNUYWJsZSB7XG4gIC8qKlxuICAgKiBEeW5hbW9EQiB0YWJsZSB1c2VkIGJ5IFJvdXRlciwgRGVwbG95ZXIsIGFuZCBSZWxlYXNlIGNvbnNvbGUgYXBwXG4gICAqL1xuICByZWFkb25seSB0YWJsZTogZHluYW1vZGIuVGFibGU7XG59XG5cbi8qKlxuICogQ3JlYXRlIGEgbmV3IE1pY3JvQXBwcyBUYWJsZSBmb3IgYXBwcyAvIHZlcnNpb25zIC8gcnVsZXNcbiAqXG4gKiBAd2FybmluZyBUaGlzIGNvbnN0cnVjdCBpcyBub3QgaW50ZW5kZWQgZm9yIHByb2R1Y3Rpb24gdXNlLlxuICogSW4gYSBwcm9kdWN0aW9uIHN0YWNrIHRoZSBEeW5hbW9EQiBUYWJsZSwgQVBJIEdhdGV3YXksIFMzIEJ1Y2tldHMsXG4gKiBldGMuIHNob3VsZCBiZSBjcmVhdGVkIGluIGEgXCJkdXJhYmxlXCIgc3RhY2sgd2hlcmUgdGhlIElEcyB3aWxsIG5vdFxuICogY2hhbmdlIGFuZCB3aGVyZSBjaGFuZ2VzIHRvIHRoZSBNaWNyb0FwcHMgY29uc3RydWN0IHdpbGwgbm90XG4gKiBjYXVzZSBmYWlsdXJlcyB0byBkZXBsb3kgb3IgZGF0YSB0byBiZSBkZWxldGVkLlxuICovXG5leHBvcnQgY2xhc3MgTWljcm9BcHBzVGFibGUgZXh0ZW5kcyBDb25zdHJ1Y3QgaW1wbGVtZW50cyBJTWljcm9BcHBzVGFibGUge1xuICBwcml2YXRlIF90YWJsZTogZHluYW1vZGIuVGFibGU7XG4gIHB1YmxpYyBnZXQgdGFibGUoKTogZHluYW1vZGIuVGFibGUge1xuICAgIHJldHVybiB0aGlzLl90YWJsZTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzPzogTWljcm9BcHBzVGFibGVQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICBpZiAocHJvcHMgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdwcm9wcyBjYW5ub3QgYmUgdW5kZWZpbmVkJyk7XG4gICAgfVxuXG4gICAgY29uc3QgeyByZW1vdmFsUG9saWN5LCBhc3NldE5hbWVSb290LCBhc3NldE5hbWVTdWZmaXggfSA9IHByb3BzO1xuXG4gICAgLy9cbiAgICAvLyBEeW5hbW9EQiBUYWJsZVxuICAgIC8vXG4gICAgdGhpcy5fdGFibGUgPSBuZXcgZHluYW1vZGIuVGFibGUodGhpcywgJ3RhYmxlJywge1xuICAgICAgdGFibGVOYW1lOiBhc3NldE5hbWVSb290XG4gICAgICAgID8gYCR7YXNzZXROYW1lUm9vdH0ke2Fzc2V0TmFtZVN1ZmZpeCA/PyAnJ31gXG4gICAgICAgIDogUGh5c2ljYWxOYW1lLkdFTkVSQVRFX0lGX05FRURFRCxcbiAgICAgIGJpbGxpbmdNb2RlOiBkeW5hbW9kYi5CaWxsaW5nTW9kZS5QQVlfUEVSX1JFUVVFU1QsXG4gICAgICBwYXJ0aXRpb25LZXk6IHtcbiAgICAgICAgbmFtZTogJ1BLJyxcbiAgICAgICAgdHlwZTogZHluYW1vZGIuQXR0cmlidXRlVHlwZS5TVFJJTkcsXG4gICAgICB9LFxuICAgICAgc29ydEtleToge1xuICAgICAgICBuYW1lOiAnU0snLFxuICAgICAgICB0eXBlOiBkeW5hbW9kYi5BdHRyaWJ1dGVUeXBlLlNUUklORyxcbiAgICAgIH0sXG4gICAgICByZW1vdmFsUG9saWN5LFxuICAgIH0pO1xuICB9XG59XG4iXX0=
|
|
@@ -78,7 +78,7 @@ For more information please go to https://github.com/aws/aws-sdk-js-v3#functiona
|
|
|
78
78
|
`+e.slice(i,s),i=s+1),d=a;return c+=`
|
|
79
79
|
`,e.length-i>t&&d>i?c+=e.slice(i,d)+`
|
|
80
80
|
`+e.slice(d+1):c+=e.slice(i),c.slice(1)}function $st(e){for(var t="",n=0,r,i=0;i<e.length;n>=65536?i+=2:i++)n=gf(e,i),r=qn[n],!r&&Sf(n)?(t+=e[i],n>=65536&&(t+=e[i+1])):t+=r||Dst(n);return t}function Hst(e,t,n){var r="",i=e.tag,s,d,a;for(s=0,d=n.length;s<d;s+=1)a=n[s],e.replacer&&(a=e.replacer.call(n,String(s),a)),(ls(e,t,a,!1,!1)||typeof a>"u"&&ls(e,t,null,!1,!1))&&(r!==""&&(r+=","+(e.condenseFlow?"":" ")),r+=e.dump);e.tag=i,e.dump="["+r+"]"}function cne(e,t,n,r){var i="",s=e.tag,d,a,c;for(d=0,a=n.length;d<a;d+=1)c=n[d],e.replacer&&(c=e.replacer.call(n,String(d),c)),(ls(e,t+1,c,!0,!0,!1,!0)||typeof c>"u"&&ls(e,t+1,null,!0,!0,!1,!0))&&((!r||i!=="")&&(i+=fM(e,t)),e.dump&&wf===e.dump.charCodeAt(0)?i+="-":i+="- ",i+=e.dump);e.tag=s,e.dump=i||"[]"}function Jst(e,t,n){var r="",i=e.tag,s=Object.keys(n),d,a,c,l,u;for(d=0,a=s.length;d<a;d+=1)u="",r!==""&&(u+=", "),e.condenseFlow&&(u+='"'),c=s[d],l=n[c],e.replacer&&(l=e.replacer.call(n,c,l)),ls(e,t,c,!1,!1)&&(e.dump.length>1024&&(u+="? "),u+=e.dump+(e.condenseFlow?'"':"")+":"+(e.condenseFlow?"":" "),ls(e,t,l,!1,!1)&&(u+=e.dump,r+=u));e.tag=i,e.dump="{"+r+"}"}function Xst(e,t,n,r){var i="",s=e.tag,d=Object.keys(n),a,c,l,u,w,E;if(e.sortKeys===!0)d.sort();else if(typeof e.sortKeys=="function")d.sort(e.sortKeys);else if(e.sortKeys)throw new Yn("sortKeys must be a boolean or a function");for(a=0,c=d.length;a<c;a+=1)E="",(!r||i!=="")&&(E+=fM(e,t)),l=d[a],u=n[l],e.replacer&&(u=e.replacer.call(n,l,u)),ls(e,t+1,l,!0,!0,!0)&&(w=e.tag!==null&&e.tag!=="?"||e.dump&&e.dump.length>1024,w&&(e.dump&&wf===e.dump.charCodeAt(0)?E+="?":E+="? "),E+=e.dump,w&&(E+=fM(e,t)),ls(e,t+1,u,!0,w)&&(e.dump&&wf===e.dump.charCodeAt(0)?E+=":":E+=": ",E+=e.dump,i+=E));e.tag=s,e.dump=i||"{}"}function lne(e,t,n){var r,i,s,d,a,c;for(i=n?e.explicitTypes:e.implicitTypes,s=0,d=i.length;s<d;s+=1)if(a=i[s],(a.instanceOf||a.predicate)&&(!a.instanceOf||typeof t=="object"&&t instanceof a.instanceOf)&&(!a.predicate||a.predicate(t))){if(n?a.multi&&a.representName?e.tag=a.representName(t):e.tag=a.tag:e.tag="?",a.represent){if(c=e.styleMap[a.tag]||a.defaultStyle,xne.call(a.represent)==="[object Function]")r=a.represent(t,c);else if(bne.call(a.represent,c))r=a.represent[c](t,c);else throw new Yn("!<"+a.tag+'> tag resolver accepts not "'+c+'" style');e.dump=r}return!0}return!1}function ls(e,t,n,r,i,s,d){e.tag=null,e.dump=n,lne(e,n,!1)||lne(e,n,!0);var a=xne.call(e.dump),c=r,l;r&&(r=e.flowLevel<0||e.flowLevel>t);var u=a==="[object Object]"||a==="[object Array]",w,E;if(u&&(w=e.duplicates.indexOf(n),E=w!==-1),(e.tag!==null&&e.tag!=="?"||E||e.indent!==2&&t>0)&&(i=!1),E&&e.usedDuplicates[w])e.dump="*ref_"+w;else{if(u&&E&&!e.usedDuplicates[w]&&(e.usedDuplicates[w]=!0),a==="[object Object]")r&&Object.keys(e.dump).length!==0?(Xst(e,t,e.dump,i),E&&(e.dump="&ref_"+w+e.dump)):(Jst(e,t,e.dump),E&&(e.dump="&ref_"+w+" "+e.dump));else if(a==="[object Array]")r&&e.dump.length!==0?(e.noArrayIndent&&!d&&t>0?cne(e,t-1,e.dump,i):cne(e,t,e.dump,i),E&&(e.dump="&ref_"+w+e.dump)):(Hst(e,t,e.dump),E&&(e.dump="&ref_"+w+" "+e.dump));else if(a==="[object String]")e.tag!=="?"&&Gst(e,e.dump,t,s,c);else{if(a==="[object Undefined]")return!1;if(e.skipInvalid)return!1;throw new Yn("unacceptable kind of an object to dump "+a)}e.tag!==null&&e.tag!=="?"&&(l=encodeURI(e.tag[0]==="!"?e.tag.slice(1):e.tag).replace(/!/g,"%21"),e.tag[0]==="!"?l="!"+l:l.slice(0,18)==="tag:yaml.org,2002:"?l="!!"+l.slice(18):l="!<"+l+">",e.dump=l+" "+e.dump)}return!0}function Kst(e,t){var n=[],r=[],i,s;for(gM(e,n,r),i=0,s=r.length;i<s;i+=1)t.duplicates.push(n[r[i]]);t.usedDuplicates=new Array(s)}function gM(e,t,n){var r,i,s;if(e!==null&&typeof e=="object")if(i=t.indexOf(e),i!==-1)n.indexOf(i)===-1&&n.push(i);else if(t.push(e),Array.isArray(e))for(i=0,s=e.length;i<s;i+=1)gM(e[i],t,n);else for(r=Object.keys(e),i=0,s=r.length;i<s;i+=1)gM(e[r[i]],t,n)}function Wst(e,t){t=t||{};var n=new Bst(t);n.noRefs||Kst(e,n);var r=e;return n.replacer&&(r=n.replacer.call({"":r},"",r)),ls(n,0,r,!0,!0)?n.dump+`
|
|
81
|
-
`:""}var Qst=Wst,Yst={dump:Qst};function _M(e,t){return function(){throw new Error("Function yaml."+e+" is removed in js-yaml 4. Use yaml."+t+" instead, which is now safe by default.")}}var Dne=Ane.load,Z7t=Ane.loadAll,eQt=Yst.dump;var tQt=_M("safeLoad","load"),nQt=_M("safeLoadAll","loadAll"),rQt=_M("safeDump","dump");var pr=Dt(Sc()),roe=Dt(Sc());var iA=Dt(eoe()),rA=class{static async getExistingFiles(t){let n=[];for(let r of t)await(0,iA.pathExists)(r)&&n.push(r);return n}static getExistingFilesSync(t){let n=[];for(let r of t)(0,iA.pathExistsSync)(r)&&n.push(r);return n}};var toe=Dt(Sc()),Mf=class{};mn([(0,toe.Property)({doc:"ID of API Gateway to integrate with",nullable:!1,default:"none",env:"APIGWY_ID"})],Mf.prototype,"apiId",2);var noe=Dt(Sc()),Bf=class{};mn([(0,noe.Property)({doc:"DynamoDB Table Name",default:"MicroApps",env:"DATABASE_TABLE_NAME"})],Bf.prototype,"tableName",2);var gB=Dt(Sc()),bc=class{};mn([(0,gB.Property)({doc:"Staging bucket to copy staged apps from",default:"microapps-staging",env:"FILESTORE_STAGING_BUCKET"})],bc.prototype,"stagingBucket",2),mn([(0,gB.Property)({doc:"Destination bucket to copy staged apps to",default:"microapps",env:"FILESTORE_DEST_BUCKET"})],bc.prototype,"destinationBucket",2);var Bt=class{static configFiles(){let t=["./configs/config.yaml","./configs/config.yml",`./configs/config-${Bt.envLevel}.yaml`,`./configs/config-${Bt.envLevel}.yml`];return rA.getExistingFilesSync(t)}static get instance(){if(Bt._instance===void 0){let t=new roe.TSConvict(Bt);Bt._instance=t.load(Bt.configFiles())}return Bt._instance}static get envLevel(){let t=process.env.NODE_ENV||"dev";return t.startsWith("prod")?"prod":t==="qa"?"qa":t==="local"?"local":"dev"}};mn([pr.Property(Bf)],Bt.prototype,"db",2),mn([pr.Property(Mf)],Bt.prototype,"apigwy",2),mn([pr.Property(bc)],Bt.prototype,"filestore",2),mn([pr.Property({doc:"AWS Account ID for app Lambda function",default:"",env:"AWS_ACCOUNT_ID"})],Bt.prototype,"awsAccountID",2),mn([pr.Property({doc:"AWS Region for app Lambda function",default:"us-east-1",env:"AWS_REGION"})],Bt.prototype,"awsRegion",2),mn([pr.Property({doc:"Role name to be used for temp STS upload tokens",default:"microapps-deployer-upload-dev",env:"UPLOAD_ROLE_NAME"})],Bt.prototype,"uploadRoleName",2),mn([pr.Property({doc:"Path prefix for this deployment",default:"",env:"ROOT_PATH_PREFIX"})],Bt.prototype,"rootPathPrefix",2),mn([pr.Property({doc:"Require IAM Authorization on all created routes",default:!0,env:"REQUIRE_IAM_AUTHORIZATION"})],Bt.prototype,"requireIAMAuthorization",2),mn([pr.Property({doc:"ARN of parent deployer Lambda function",default:"",env:"PARENT_DEPLOYER_LAMBDA_ARN"})],Bt.prototype,"parentDeployerLambdaARN",2),mn([pr.Property({doc:"ARN of the Role used by the Edge to Origin Lambda function to invoke the app",default:"",env:"EDGE_TO_ORIGIN_ROLE_ARN"})],Bt.prototype,"edgeToOriginRoleARN",2),Bt=mn([pr.Config({file:"config.yml",validationMethod:"strict",parser:{extension:["yml","yaml"],parse:Dne},formats:{url:sA.url,ipaddress:sA.ipaddress}})],Bt);var wB=Dt(Ra());function hB(e){return e==null||e===""}var Of=class{static async CreateApp(t){let{dbManager:n,app:r}=t;return hB(r.appName)||hB(r.displayName)||hB(r.type)?{statusCode:400}:await wB.Application.Load({dbManager:n,key:{AppName:r.appName}})!==void 0?{statusCode:200}:(await new wB.Application({AppName:r.appName,DisplayName:r.displayName}).Save(n),{statusCode:201})}};var el=Dt(oj()),Lo=Dt(Qm()),tl=Dt(E2()),R2=Dt(Ra());var Xge=Dt(Jge()),Ce=class{};Ce.Instance=new Xge.LambdaLog({silent:process.env.JEST_WORKER_ID!==void 0});function Zc({lambdaARN:e,config:t}){var d;let n=e,r,i,s="function";return((d=e.match(/:/g))==null?void 0:d.length)===7?/^[0-9]+$/.test(e.substring(e.lastIndexOf(":")+1))?(s="version",n=e==null?void 0:e.substring(0,e.lastIndexOf(":")),r=e.substring(e.lastIndexOf(":")+1),Ce.Instance.info(`Lambda ARN has Version: ${e}`)):(s="alias",n=e==null?void 0:e.substring(0,e.lastIndexOf(":")),i=e.substring(e.lastIndexOf(":")+1),Ce.Instance.info(`Lambda ARN has Alias: ${e}`)):/:/.test(e)?(s="function",n=e,Ce.Instance.info(`Lambda ARN does not have Alias: ${e}`)):(s="function",n=`arn:aws:lambda:${t.awsRegion}:${t.awsAccountID}:function:${e}`,Ce.Instance.info(`Lambda ARN does not have Alias: ${e}`)),{lambdaARNBase:n,lambdaAlias:i,lambdaVersion:r,lambdaARNType:s}}function Kge(e){return e.appName==="[root]"?"":`${e.appName}/`}function Hr(e,t){return`${t.rootPathPrefix===""?"":`${t.rootPathPrefix}/`}${Kge(e)}${e.semVer}`.toLowerCase()}var b2=new Lo.LambdaClient({maxAttempts:8}),Wge=new tl.S3Client({maxAttempts:16}),Qge=new el.ApiGatewayV2Client({maxAttempts:8});async function Yge(e){let{dbManager:t,request:n,config:r}=e;Ce.Instance.debug("Got Body:",n);let i=await R2.Version.LoadVersion({dbManager:t,key:{AppName:n.appName,SemVer:n.semVer}});if(i===void 0)return Ce.Instance.info("Error: App/Version does not exist",{appName:n.appName,semVer:n.semVer}),{statusCode:404};let s=Hr(n,r)+"/";if(await t3t(s,r),i.Type==="lambda"){let d=r.apigwy.apiId;if(i.RouteIDAppVersion===""&&i.RouteIDAppVersionSplat==="")Ce.Instance.warn("no RouteIDs to delete");else{for(let a of[i.RouteIDAppVersion,i.RouteIDAppVersionSplat])try{await Qge.send(new el.DeleteRouteCommand({ApiId:d,RouteId:a}))}catch(c){if(c.name==="AccessDeniedException")return Ce.Instance.error("AccessDeniedException removing route from API Gateway",{error:c,apiId:d,routeId:a}),{statusCode:401};Ce.Instance.error("Caught unexpected error on app/ver route remove",{error:c,apiId:d,routeId:a})}if(i.IntegrationID!==void 0&&i.IntegrationID!=="")try{await Qge.send(new el.DeleteIntegrationCommand({ApiId:d,IntegrationId:i.IntegrationID}))}catch(a){if(a.name==="AccessDeniedException")return Ce.Instance.error("AccessDeniedException removing integration from API Gateway",{error:a,apiId:d,integrationId:i.IntegrationID}),{statusCode:401};Ce.Instance.error("Caught unexpected error removing integration from API Gateway",{error:a,apiId:d,integrationId:i.IntegrationID})}}}if((i.Type==="lambda"||i.Type==="lambda-url")&&i.LambdaARN){let{lambdaARNBase:d,lambdaAlias:a}=Zc({lambdaARN:i.LambdaARN,config:r});try{let c=await b2.send(new Lo.GetAliasCommand({FunctionName:d,Name:a}));if(await b2.send(new Lo.DeleteAliasCommand({FunctionName:d,Name:a})),c.FunctionVersion)try{await b2.send(new Lo.DeleteFunctionCommand({FunctionName:d,Qualifier:c.FunctionVersion}))}catch(l){if(l.name!=="ResourceConflictException")throw l;Ce.Instance.info("Version is still in use by another alias, not deleting")}}catch(c){if(c.name!=="ResourceNotFoundException")throw c}}return await R2.Version.DeleteVersion({dbManager:t,key:{AppName:n.appName,SemVer:n.semVer}}),Ce.Instance.info("finished request"),{statusCode:200}}async function t3t(e,t){var r;let n;do{let i=(n==null?void 0:n.NextContinuationToken)!==void 0?{ContinuationToken:n.NextContinuationToken}:{};n=await Wge.send(new tl.ListObjectsV2Command(o({Bucket:t.filestore.destinationBucket,Prefix:e},i)));let s=[];(r=n.Contents)==null||r.map(d=>{s.push({Key:d.Key})}),s.length>0&&await Wge.send(new tl.DeleteObjectsCommand({Bucket:t.filestore.destinationBucket,Delete:{Objects:s}}))}while(n.IsTruncated)}var ir=Dt(oj()),Un=Dt(Qm()),nl=Dt(Ra());var che=Dt(dhe()),Do=Dt(E2()),I2=new Do.S3Client({maxAttempts:8});async function d3t(e,t,n,r,i){e===void 0||e.Contents===void 0||await(0,che.default)(e.Contents,async s=>{var a;let d=(a=s.Key)==null?void 0:a.slice(n.length);await I2.send(new Do.CopyObjectCommand({CopySource:`${t}/${s.Key}`,Bucket:i.filestore.destinationBucket,Key:`${r}/${d}`})),await I2.send(new Do.DeleteObjectCommand({Bucket:t,Key:s.Key}))},{concurrency:20})}async function WT(e,t,n,r){let i;do{let s=(i==null?void 0:i.NextContinuationToken)!==void 0?{ContinuationToken:i.NextContinuationToken}:{};i=await I2.send(new Do.ListObjectsV2Command(o({Bucket:e,Prefix:t},s))),await d3t(i,e,t,n,r)}while(i.IsTruncated)}var Fa=new Un.LambdaClient({}),N2=new ir.ApiGatewayV2Client({});async function lhe(e){let{dbManager:t,request:n,config:r}=e,{appType:i="lambda",overwrite:s=!1,startupType:d="iframe"}=n;Ce.Instance.debug("Got Body:",n);let a=await nl.Version.LoadVersion({dbManager:t,key:{AppName:n.appName,SemVer:n.semVer}});if(a!==void 0&&a.Status==="routed")if(s)Ce.Instance.info("Warning: App/Version already exists",{appName:n.appName,semVer:n.semVer});else return Ce.Instance.info("Error: App/Version already exists",{appName:n.appName,semVer:n.semVer}),{statusCode:409};if(d==="direct"&&["lambda"].includes(i))return Ce.Instance.info("Error: Incompatible app type and startup type",{appType:i,startupType:d}),{statusCode:400};if(s&&a&&(a.DefaultFile=n.defaultFile,a.Type=i,a.StartupType=d,n.lambdaARN&&(a.LambdaARN=n.lambdaARN)),a===void 0&&(a=new nl.Version(o({AppName:n.appName,SemVer:n.semVer,Type:i,Status:"pending",DefaultFile:n.defaultFile,StartupType:d},n.lambdaARN?{LambdaARN:n.lambdaARN}:{})),await a.Save(t)),(s||a.Status==="pending")&&i!=="url"){let{stagingBucket:l}=r.filestore,u=Hr(n,r)+"/";await WT(l,u,Hr(n,r),r),a.DefaultFile=n.defaultFile,a.Status="assets-copied",await a.Save(t)}if(i==="lambda"){let l=r.apigwy.apiId;if(s||a.Status==="assets-copied"){let w=r.awsAccountID,E=r.awsRegion,T=!0;try{let I=await Fa.send(new Un.GetPolicyCommand({FunctionName:n.lambdaARN}));if(I.Policy!==void 0){let N=JSON.parse(I.Policy);N.Statement!==void 0&&N.Statement.filter(J=>J.Sid==="microapps-version-root"||J.Sid==="microapps-version").length===2&&(T=!1)}}catch(I){if(I.name!=="ResourceNotFoundException")throw I}T&&(await Fa.send(new Un.AddPermissionCommand({Principal:"apigateway.amazonaws.com",StatementId:"microapps-version-root",Action:"lambda:InvokeFunction",FunctionName:n.lambdaARN,SourceArn:`arn:aws:execute-api:${E}:${w}:${l}/*/*/${n.appName}/${n.semVer}`})),await Fa.send(new Un.AddPermissionCommand({Principal:"apigateway.amazonaws.com",StatementId:"microapps-version",Action:"lambda:InvokeFunction",FunctionName:n.lambdaARN,SourceArn:`arn:aws:execute-api:${E}:${w}:${l}/*/*/${n.appName}/${n.semVer}/{proxy+}`}))),a.Status="permissioned",await a.Save(t)}let u="";if(s||a.Status==="permissioned")if(a.IntegrationID!==void 0&&a.IntegrationID!=="")u=a.IntegrationID,Ce.Instance.info("integration already created, skipping creation",{IntegrationId:u});else{try{u=(await N2.send(new ir.CreateIntegrationCommand({ApiId:l,IntegrationType:ir.IntegrationType.AWS_PROXY,IntegrationMethod:"POST",PayloadFormatVersion:"2.0",IntegrationUri:n.lambdaARN}))).IntegrationId}catch(w){if(w.name==="AccessDeniedException")return Ce.Instance.error("AccessDeniedException adding integration to API Gateway",{error:w}),{statusCode:401}}a.IntegrationID=u,a.Status="integrated",await a.Save(t)}if(s||a.Status==="integrated"){if(a.RouteIDAppVersion!==void 0&&a.RouteIDAppVersion!=="")Ce.Instance.info("route app/version already created, skipping creation",{IntegrationId:u,RouteIDAppVersion:a.RouteIDAppVersion});else try{let w=await N2.send(new ir.CreateRouteCommand({ApiId:l,Target:`integrations/${u}`,RouteKey:`ANY /${n.appName}/${n.semVer}`,AuthorizationType:r.requireIAMAuthorization?ir.AuthorizationType.AWS_IAM:ir.AuthorizationType.NONE}));Ce.Instance.info("created RouteIDAppVersion",{result:w}),a.RouteIDAppVersion=`${w.RouteId}`}catch(w){if(w.name==="AccessDeniedException")return Ce.Instance.error("AccessDeniedException adding route to API Gateway",{error:w}),{statusCode:401};Ce.Instance.error("Caught unexpected error on app/ver route add"),Ce.Instance.error(w)}if(a.RouteIDAppVersionSplat!==void 0&&a.RouteIDAppVersionSplat!=="")Ce.Instance.info("route app/version/* already created, skipping creation",{IntegrationId:u,RouteIDAppVersionSplat:a.RouteIDAppVersionSplat});else try{let w=await N2.send(new ir.CreateRouteCommand({ApiId:l,Target:`integrations/${u}`,RouteKey:`ANY /${n.appName}/${n.semVer}/{proxy+}`,AuthorizationType:r.requireIAMAuthorization?ir.AuthorizationType.AWS_IAM:ir.AuthorizationType.NONE}));Ce.Instance.info("created RouteIDAppVersionSplat",{result:w}),a.RouteIDAppVersionSplat=`${w.RouteId}`}catch(w){if(w.name==="AccessDeniedException")return Ce.Instance.error("AccessDeniedException adding route to API Gateway",{error:w}),{statusCode:401};Ce.Instance.error("Caught unexpected error on {proxy+} route add"),Ce.Instance.error(w)}a.Status="routed",await a.Save(t)}}else if(i==="lambda-url"){if(!n.lambdaARN)throw new Error("Missing lambdaARN for lambda-url app type");let{lambdaARNBase:l,lambdaAlias:u}=Zc({lambdaARN:a.LambdaARN,config:r});if(s||a.Status==="assets-copied"){let w=await Fa.send(new Un.ListTagsCommand({Resource:l}));(w.Tags===void 0||w.Tags["microapp-managed"]!=="true")&&await Fa.send(new Un.TagResourceCommand({Resource:l,Tags:{"microapp-managed":"true"}})),a.Status="permissioned",await a.Save(t)}if(s||a.Status==="permissioned"){let w,E;try{E=await Fa.send(new Un.GetFunctionUrlConfigCommand({FunctionName:l,Qualifier:u})),E.FunctionUrl&&(w=E.FunctionUrl)}catch(T){if(T.name!=="ResourceNotFoundException")throw T}E!=null&&E.FunctionUrl||(w=(await Fa.send(new Un.CreateFunctionUrlConfigCommand({FunctionName:l,Qualifier:u,AuthType:"AWS_IAM"}))).FunctionUrl),a.Status="routed",w&&(a.URL=w),await a.Save(t)}}else if(i==="static")a.Status==="assets-copied"&&(a.Status="routed",await a.Save(t));else if(i==="url"){if(!n.url)throw new Error("Missing url for url app type");a.URL=n.url,a.Status="routed",await a.Save(t)}else throw new Error(`Unknown app type: ${i}`);let c=await nl.Rules.Load({dbManager:t,key:{AppName:n.appName}});return c===void 0&&(c=new nl.Rules({AppName:n.appName,RuleSet:{},Version:1}),c.RuleSet.default={SemVer:n.semVer,AttributeName:"",AttributeValue:""},await c.Save(t)),Ce.Instance.info("finished request"),{statusCode:201}}var QT=Dt(bd()),fhe=Dt(Ra());var uhe=Dt(require("crypto"));function mhe(e){return uhe.default.createHash("sha1").update(e).digest("hex")}var c3t=new QT.STSClient({maxAttempts:8});async function phe(e){var u,w,E;let{dbManager:t,request:n,config:r}=e,{appName:i,semVer:s,needS3Creds:d=!0,overwrite:a=!1}=n,c={createAlias:"true"},l=await fhe.Version.LoadVersion({dbManager:t,key:{AppName:i,SemVer:s}});if(l!==void 0&&l.Status!=="pending")if(a)Ce.Instance.info("Warning: App/Version already exists",{appName:n.appName,semVer:n.semVer});else return Ce.Instance.info("Error: App/Version already exists",{appName:n.appName,semVer:n.semVer}),{statusCode:200,capabilities:c};if(Ce.Instance.info("App/Version does not exist",{appName:i,semVer:s}),d){let T={Statement:[{Effect:"Allow",Action:["s3:PutObject","s3:GetObject","s3:AbortMultipartUpload"],Resource:[`arn:aws:s3:::${r.filestore.stagingBucket}/*`]},{Effect:"Allow",Action:["s3:ListBucket"],Resource:[`arn:aws:s3:::${r.filestore.stagingBucket}`]}],Version:"2012-10-17"};Ce.Instance.debug("Temp IAM Policy",{policy:JSON.stringify(T)});let I=await c3t.send(new QT.AssumeRoleCommand({RoleArn:`arn:aws:iam::${r.awsAccountID}:role/${r.uploadRoleName}`,DurationSeconds:60*60,RoleSessionName:mhe(Hr(n,r)),Policy:JSON.stringify(T)}));return Ce.Instance.info("finished request - returning s3 creds"),{statusCode:404,capabilities:c,s3UploadUrl:`s3://${r.filestore.stagingBucket}/${Hr(n,r)}`,awsCredentials:{accessKeyId:(u=I.Credentials)==null?void 0:u.AccessKeyId,secretAccessKey:(w=I.Credentials)==null?void 0:w.SecretAccessKey,sessionToken:(E=I.Credentials)==null?void 0:E.SessionToken}}}else return Ce.Instance.info("finished request - not returning s3 creds"),{capabilities:c,statusCode:404}}var Vt=Dt(Qm()),hhe=require("util");function ghe(e){return{version:e,alias:`v${e.replace(/\./g,"_")}`}}var l3t=(0,hhe.promisify)(setTimeout),Pr=new Vt.LambdaClient({});async function whe(e){var E,T;let{config:t,request:n}=e,{lambdaARN:r,overwrite:i=!1,semVer:s}=n,d=Zc({lambdaARN:r,config:t});if(d.lambdaVersion==="$LATEST")throw new Error(`Lambda version cannot be $LATEST, must be a version number: ${r}`);if(d.lambdaARNType==="alias")throw new Error(`Lambda version cannot be an alias: ${r}`);d.lambdaARNType==="function"&&Ce.Instance.warn("Lambda ARN is a function, not a version - It is safer to publish a version using IaC and to pass that version to `microapps-publish publish`",{lambdaARN:r});let a=d.lambdaVersion;if(d.lambdaARNType==="function"){Ce.Instance.info("Creating version for Lambda $LATEST");let I=await Pr.send(new Vt.PublishVersionCommand({FunctionName:d.lambdaARNBase}));a=I.Version,Ce.Instance.info(`Lambda version created: ${I.Version}`);let N=I.LastUpdateStatus;for(let F=0;F<5;F++){if(N==="Successful"){Ce.Instance.info(`Lambda function updated, version: ${a}`);break}await l3t(1e3*F);let J=await Pr.send(new Vt.GetFunctionCommand({FunctionName:d.lambdaARNBase,Qualifier:a}));N=(E=J==null?void 0:J.Configuration)==null?void 0:E.LastUpdateStatus}}if(!a)throw new Error(`Lambda version not found: ${a}, for lambda: ${r}`);try{if(((T=(await Pr.send(new Vt.GetFunctionCommand({FunctionName:d.lambdaARNBase,Qualifier:a}))).Configuration)==null?void 0:T.FunctionArn)===void 0)return Ce.Instance.error(`Lambda version not found: ${a}, for lambda: ${r}`),{statusCode:404,errorMessage:`Lambda version not found: ${a}, for lambda: ${r}`}}catch(I){return Ce.Instance.error("Error getting Lambda version",I),I.name==="ResourceNotFoundException"?{statusCode:404,errorMessage:I.message}:{statusCode:500,errorMessage:I.message}}let c=ghe(s),l=await f3t({lambdaArnBase:d.lambdaARNBase,lambdaVersion:a,overwrite:i,versions:c});await u3t({lambdaARNBase:d.lambdaARNBase});let{url:u}=await m3t({lambdaARNBase:d.lambdaARNBase,lambdaAlias:c.alias}),w=S(o({},l),{functionUrl:u});return await p3t({config:t,lambdaBaseARN:d.lambdaARNBase,lambdaAlias:c.alias}),w}async function u3t({lambdaARNBase:e}){let t=await Pr.send(new Vt.ListTagsCommand({Resource:e}));(t.Tags===void 0||t.Tags["microapp-managed"]!=="true")&&await Pr.send(new Vt.TagResourceCommand({Resource:e,Tags:{"microapp-managed":"true"}}))}async function m3t({lambdaARNBase:e,lambdaAlias:t}){let n,r;try{r=await Pr.send(new Vt.GetFunctionUrlConfigCommand({FunctionName:e,Qualifier:t})),r.FunctionUrl&&(n=r.FunctionUrl)}catch(i){if(i.name!=="ResourceNotFoundException")throw i}return r!=null&&r.FunctionUrl||(n=(await Pr.send(new Vt.CreateFunctionUrlConfigCommand({FunctionName:e,Qualifier:t,AuthType:"AWS_IAM"}))).FunctionUrl),{url:n}}async function f3t(e){let{lambdaArnBase:t,lambdaVersion:n,overwrite:r,versions:i}=e;try{let d=await Pr.send(new Vt.GetAliasCommand({FunctionName:t,Name:i.alias}));if(n&&d.FunctionVersion===n&&d.AliasArn)return Ce.Instance.info(`Lambda alias already exists and already points to the desired version: ${n}`),{statusCode:200,type:"lambdaAlias",lambdaAliasARN:d.AliasArn,actionTaken:"verified"};if(!r&&d.FunctionVersion!==n)throw Ce.Instance.info(`Lambda alias already exists and does not point to the desired version: ${n}`),new Error("Lambda alias already exists, points to wrong version");Ce.Instance.info(`Updating the lambda alias for the desired version: ${n}`);let a=await Pr.send(new Vt.UpdateAliasCommand({FunctionName:t,Name:i.alias,FunctionVersion:n}));if(Ce.Instance.info(`Lambda alias updated, name: ${a.Name}, arn: ${a.AliasArn}`),!a.AliasArn)throw new Error("AliasArn failed to create");return{statusCode:200,type:"lambdaAlias",lambdaAliasARN:a.AliasArn,actionTaken:"updated"}}catch(d){if(d.name!=="ResourceNotFoundException")throw d}Ce.Instance.info(`Creating the lambda alias for the desired version: ${n}, lambdaArnBase: ${t}`);let s=await Pr.send(new Vt.CreateAliasCommand({FunctionName:t,Name:i.alias,FunctionVersion:n}));if(Ce.Instance.info(`Lambda alias created, name: ${s.Name}, arn: ${s.AliasArn}, points to version: ${s.FunctionVersion}`),!s.AliasArn)throw new Error("AliasArn failed to create");return{statusCode:201,type:"lambdaAlias",lambdaAliasARN:s.AliasArn,actionTaken:"created"}}async function p3t({config:e,lambdaBaseARN:t,lambdaAlias:n}){if(!e.parentDeployerLambdaARN){Ce.Instance.info("No parent account, skipping cross-account permissions");return}let r=!0;try{let i=await Pr.send(new Vt.GetPolicyCommand({FunctionName:t,Qualifier:n}));if(i.Policy!==void 0){let s=JSON.parse(i.Policy);s.Statement!==void 0&&s.Statement.filter(a=>a.Sid==="microapps-edge-to-origin").length===1&&(r=!1)}}catch(i){if(i.name!=="ResourceNotFoundException")throw i}r&&e.edgeToOriginRoleARN&&await Pr.send(new Vt.AddPermissionCommand({Principal:e.edgeToOriginRoleARN,StatementId:"microapps-edge-to-origin",Action:"lambda:InvokeFunctionUrl",FunctionName:t,Qualifier:n}))}var rl=Dt(Ra());async function yhe(e){let{dbManager:t,request:n,config:r}=e,{appType:i="lambda",overwrite:s=!1,startupType:d="iframe"}=n;Ce.Instance.debug("Got Body:",n);let a=await rl.Version.LoadVersion({dbManager:t,key:{AppName:n.appName,SemVer:n.semVer}});if(a!==void 0&&a.Status==="routed")if(s)Ce.Instance.info("Warning: App/Version already exists",{appName:n.appName,semVer:n.semVer});else return Ce.Instance.info("Error: App/Version already exists",{appName:n.appName,semVer:n.semVer}),{statusCode:409};if(d==="direct"&&["lambda"].includes(i))return Ce.Instance.info("Error: Incompatible app type and startup type",{appType:i,startupType:d}),{statusCode:400};if(s&&a&&(a.DefaultFile=n.defaultFile,a.Type=i,a.StartupType=d,n.lambdaARN&&(a.LambdaARN=n.lambdaARN)),a===void 0&&(a=new rl.Version(o({AppName:n.appName,SemVer:n.semVer,Type:i,Status:"pending",DefaultFile:n.defaultFile,StartupType:d},n.lambdaARN?{LambdaARN:n.lambdaARN}:{})),await a.Save(t)),(s||a.Status==="pending")&&i!=="url"){let{stagingBucket:l}=r.filestore,u=Hr(n,r)+"/";await WT(l,u,Hr(n,r),r),a.DefaultFile=n.defaultFile,a.Status="assets-copied",await a.Save(t)}if(i==="lambda")a.Status="routed",await a.Save(t);else if(i==="lambda-url"){if(!n.url)throw new Error("Missing url for lambda-url app type");a.Status="routed",a.URL=n.url,await a.Save(t)}else if(i==="static")a.Status==="assets-copied"&&(a.Status="routed",await a.Save(t));else if(i==="url"){if(!n.url)throw new Error("Missing url for url app type");a.URL=n.url,a.Status="routed",await a.Save(t)}else throw new Error(`Unknown app type: ${i}`);let c=await rl.Rules.Load({dbManager:t,key:{AppName:n.appName}});return c===void 0&&(c=new rl.Rules({AppName:n.appName,RuleSet:{},Version:1}),c.RuleSet.default={SemVer:n.semVer,AttributeName:"",AttributeValue:""},await c.Save(t)),Ce.Instance.info("finished request"),{statusCode:201}}var g3t=Ce.Instance,h3t=new YT.LambdaClient({}),As,k2=new She.DynamoDBClient({maxAttempts:8}),w3t="2023-01-31-01";Ce.Instance.info("Deployer build trigger",{buildTrigger:w3t});function y3t(e){As=e.dbManager,k2=e.dynamoClient}As=new P2.DBManager({dynamoClient:k2,tableName:Bt.instance.db.tableName});var Es=Bt.instance;async function S3t(e,t){if(g3t.options.meta={awsRequestId:t==null?void 0:t.awsRequestId,requestType:e.type},As===void 0&&(As=new P2.DBManager({dynamoClient:k2,tableName:Bt.instance.db.tableName})),Es.awsAccountID===""&&(t==null?void 0:t.invokedFunctionArn)!==void 0){let r=t.invokedFunctionArn.split(":")[4];r!==""&&(Es.awsAccountID=r)}Ce.Instance.info("received request",{request:e});try{if(Es.parentDeployerLambdaARN&&["createApp","deployVersionPreflight","deployVersionLite","deleteVersion"].includes(e.type)){let n=await h3t.send(new YT.InvokeCommand({FunctionName:Es.parentDeployerLambdaARN,Qualifier:"currentVersion",Payload:Buffer.from(JSON.stringify(e))})),r=n.Payload?JSON.parse(Buffer.from(n.Payload).toString()):{statusCode:500};return Ce.Instance.info("response from parent deployer",S(o({},n),{Payload:r})),r}switch(e.type){case"createApp":{let n=e;return await Of.CreateApp({dbManager:As,app:n})}case"deleteVersion":return await Yge({dbManager:As,request:e,config:Es});case"deployVersionPreflight":return await phe({dbManager:As,request:e,config:Es});case"deployVersion":return await lhe({dbManager:As,request:e,config:Es});case"deployVersionLite":return await yhe({dbManager:As,request:e,config:Es});case"lambdaAlias":{let r=await whe({request:e,config:Es});return Ce.Instance.info("lambdaAlias response",{response:r}),r}default:return{statusCode:400}}}catch(n){return Ce.Instance.error("Caught unexpected exception in handler"),Ce.Instance.error(n),{statusCode:500}}}0&&(module.exports={handler,overrideDBManager});
|
|
81
|
+
`:""}var Qst=Wst,Yst={dump:Qst};function _M(e,t){return function(){throw new Error("Function yaml."+e+" is removed in js-yaml 4. Use yaml."+t+" instead, which is now safe by default.")}}var Dne=Ane.load,Z7t=Ane.loadAll,eQt=Yst.dump;var tQt=_M("safeLoad","load"),nQt=_M("safeLoadAll","loadAll"),rQt=_M("safeDump","dump");var pr=Dt(Sc()),roe=Dt(Sc());var iA=Dt(eoe()),rA=class{static async getExistingFiles(t){let n=[];for(let r of t)await(0,iA.pathExists)(r)&&n.push(r);return n}static getExistingFilesSync(t){let n=[];for(let r of t)(0,iA.pathExistsSync)(r)&&n.push(r);return n}};var toe=Dt(Sc()),Mf=class{};mn([(0,toe.Property)({doc:"ID of API Gateway to integrate with",nullable:!1,default:"none",env:"APIGWY_ID"})],Mf.prototype,"apiId",2);var noe=Dt(Sc()),Bf=class{};mn([(0,noe.Property)({doc:"DynamoDB Table Name",default:"MicroApps",env:"DATABASE_TABLE_NAME"})],Bf.prototype,"tableName",2);var gB=Dt(Sc()),bc=class{};mn([(0,gB.Property)({doc:"Staging bucket to copy staged apps from",default:"microapps-staging",env:"FILESTORE_STAGING_BUCKET"})],bc.prototype,"stagingBucket",2),mn([(0,gB.Property)({doc:"Destination bucket to copy staged apps to",default:"microapps",env:"FILESTORE_DEST_BUCKET"})],bc.prototype,"destinationBucket",2);var Bt=class{static configFiles(){let t=["./configs/config.yaml","./configs/config.yml",`./configs/config-${Bt.envLevel}.yaml`,`./configs/config-${Bt.envLevel}.yml`];return rA.getExistingFilesSync(t)}static get instance(){if(Bt._instance===void 0){let t=new roe.TSConvict(Bt);Bt._instance=t.load(Bt.configFiles())}return Bt._instance}static get envLevel(){let t=process.env.NODE_ENV||"dev";return t.startsWith("prod")?"prod":t==="qa"?"qa":t==="local"?"local":"dev"}};mn([pr.Property(Bf)],Bt.prototype,"db",2),mn([pr.Property(Mf)],Bt.prototype,"apigwy",2),mn([pr.Property(bc)],Bt.prototype,"filestore",2),mn([pr.Property({doc:"AWS Account ID for app Lambda function",default:"",env:"AWS_ACCOUNT_ID"})],Bt.prototype,"awsAccountID",2),mn([pr.Property({doc:"AWS Region for app Lambda function",default:"us-east-1",env:"AWS_REGION"})],Bt.prototype,"awsRegion",2),mn([pr.Property({doc:"Role name to be used for temp STS upload tokens",default:"microapps-deployer-upload-dev",env:"UPLOAD_ROLE_NAME"})],Bt.prototype,"uploadRoleName",2),mn([pr.Property({doc:"Path prefix for this deployment",default:"",env:"ROOT_PATH_PREFIX"})],Bt.prototype,"rootPathPrefix",2),mn([pr.Property({doc:"Require IAM Authorization on all created routes",default:!0,env:"REQUIRE_IAM_AUTHORIZATION"})],Bt.prototype,"requireIAMAuthorization",2),mn([pr.Property({doc:"ARN of parent deployer Lambda function",default:"",env:"PARENT_DEPLOYER_LAMBDA_ARN"})],Bt.prototype,"parentDeployerLambdaARN",2),mn([pr.Property({doc:"ARN of the Role used by the Edge to Origin Lambda function to invoke the app",default:"",env:"EDGE_TO_ORIGIN_ROLE_ARN"})],Bt.prototype,"edgeToOriginRoleARN",2),Bt=mn([pr.Config({file:"config.yml",validationMethod:"strict",parser:{extension:["yml","yaml"],parse:Dne},formats:{url:sA.url,ipaddress:sA.ipaddress}})],Bt);var wB=Dt(Ra());function hB(e){return e==null||e===""}var Of=class{static async CreateApp(t){let{dbManager:n,app:r}=t;return hB(r.appName)||hB(r.displayName)||hB(r.type)?{statusCode:400}:await wB.Application.Load({dbManager:n,key:{AppName:r.appName}})!==void 0?{statusCode:200}:(await new wB.Application({AppName:r.appName,DisplayName:r.displayName}).Save(n),{statusCode:201})}};var el=Dt(oj()),Lo=Dt(Qm()),tl=Dt(E2()),R2=Dt(Ra());var Xge=Dt(Jge()),Ce=class{};Ce.Instance=new Xge.LambdaLog({silent:process.env.JEST_WORKER_ID!==void 0});function Zc({lambdaARN:e,config:t}){var d;let n=e,r,i,s="function";return((d=e.match(/:/g))==null?void 0:d.length)===7?/^[0-9]+$/.test(e.substring(e.lastIndexOf(":")+1))?(s="version",n=e==null?void 0:e.substring(0,e.lastIndexOf(":")),r=e.substring(e.lastIndexOf(":")+1),Ce.Instance.info(`Lambda ARN has Version: ${e}`)):(s="alias",n=e==null?void 0:e.substring(0,e.lastIndexOf(":")),i=e.substring(e.lastIndexOf(":")+1),Ce.Instance.info(`Lambda ARN has Alias: ${e}`)):/:/.test(e)?(s="function",n=e,Ce.Instance.info(`Lambda ARN does not have Alias: ${e}`)):(s="function",n=`arn:aws:lambda:${t.awsRegion}:${t.awsAccountID}:function:${e}`,Ce.Instance.info(`Lambda ARN does not have Alias: ${e}`)),{lambdaARNBase:n,lambdaAlias:i,lambdaVersion:r,lambdaARNType:s}}function Kge(e){return e.appName==="[root]"?"":`${e.appName}/`}function Hr(e,t){return`${t.rootPathPrefix===""?"":`${t.rootPathPrefix}/`}${Kge(e)}${e.semVer}`.toLowerCase()}var b2=new Lo.LambdaClient({maxAttempts:8}),Wge=new tl.S3Client({maxAttempts:16}),Qge=new el.ApiGatewayV2Client({maxAttempts:8});async function Yge(e){let{dbManager:t,request:n,config:r}=e;Ce.Instance.debug("Got Body:",n);let i=await R2.Version.LoadVersion({dbManager:t,key:{AppName:n.appName,SemVer:n.semVer}});if(i===void 0)return Ce.Instance.info("Error: App/Version does not exist",{appName:n.appName,semVer:n.semVer}),{statusCode:404};let s=Hr(n,r)+"/";if(await t3t(s,r),i.Type==="lambda"){let d=r.apigwy.apiId;if(i.RouteIDAppVersion===""&&i.RouteIDAppVersionSplat==="")Ce.Instance.warn("no RouteIDs to delete");else{for(let a of[i.RouteIDAppVersion,i.RouteIDAppVersionSplat])try{await Qge.send(new el.DeleteRouteCommand({ApiId:d,RouteId:a}))}catch(c){if(c.name==="AccessDeniedException")return Ce.Instance.error("AccessDeniedException removing route from API Gateway",{error:c,apiId:d,routeId:a}),{statusCode:401};Ce.Instance.error("Caught unexpected error on app/ver route remove",{error:c,apiId:d,routeId:a})}if(i.IntegrationID!==void 0&&i.IntegrationID!=="")try{await Qge.send(new el.DeleteIntegrationCommand({ApiId:d,IntegrationId:i.IntegrationID}))}catch(a){if(a.name==="AccessDeniedException")return Ce.Instance.error("AccessDeniedException removing integration from API Gateway",{error:a,apiId:d,integrationId:i.IntegrationID}),{statusCode:401};Ce.Instance.error("Caught unexpected error removing integration from API Gateway",{error:a,apiId:d,integrationId:i.IntegrationID})}}}if((i.Type==="lambda"||i.Type==="lambda-url")&&i.LambdaARN){let{lambdaARNBase:d,lambdaAlias:a}=Zc({lambdaARN:i.LambdaARN,config:r});try{let c=await b2.send(new Lo.GetAliasCommand({FunctionName:d,Name:a}));if(await b2.send(new Lo.DeleteAliasCommand({FunctionName:d,Name:a})),c.FunctionVersion)try{await b2.send(new Lo.DeleteFunctionCommand({FunctionName:d,Qualifier:c.FunctionVersion}))}catch(l){if(l.name!=="ResourceConflictException")throw l;Ce.Instance.info("Version is still in use by another alias, not deleting")}}catch(c){if(c.name!=="ResourceNotFoundException")throw c}}return await R2.Version.DeleteVersion({dbManager:t,key:{AppName:n.appName,SemVer:n.semVer}}),Ce.Instance.info("finished request"),{statusCode:200}}async function t3t(e,t){var r;let n;do{let i=(n==null?void 0:n.NextContinuationToken)!==void 0?{ContinuationToken:n.NextContinuationToken}:{};n=await Wge.send(new tl.ListObjectsV2Command(o({Bucket:t.filestore.destinationBucket,Prefix:e},i)));let s=[];(r=n.Contents)==null||r.map(d=>{s.push({Key:d.Key})}),s.length>0&&await Wge.send(new tl.DeleteObjectsCommand({Bucket:t.filestore.destinationBucket,Delete:{Objects:s}}))}while(n.IsTruncated)}var ir=Dt(oj()),Un=Dt(Qm()),nl=Dt(Ra());var che=Dt(dhe()),Do=Dt(E2()),I2=new Do.S3Client({maxAttempts:8});async function d3t(e,t,n,r,i){e===void 0||e.Contents===void 0||await(0,che.default)(e.Contents,async s=>{var a;let d=(a=s.Key)==null?void 0:a.slice(n.length);await I2.send(new Do.CopyObjectCommand({CopySource:`${t}/${s.Key}`,Bucket:i.filestore.destinationBucket,Key:`${r}/${d}`})),await I2.send(new Do.DeleteObjectCommand({Bucket:t,Key:s.Key}))},{concurrency:20})}async function WT(e,t,n,r){let i;do{let s=(i==null?void 0:i.NextContinuationToken)!==void 0?{ContinuationToken:i.NextContinuationToken}:{};i=await I2.send(new Do.ListObjectsV2Command(o({Bucket:e,Prefix:t},s))),await d3t(i,e,t,n,r)}while(i.IsTruncated)}var Fa=new Un.LambdaClient({}),N2=new ir.ApiGatewayV2Client({});async function lhe(e){let{dbManager:t,request:n,config:r}=e,{appType:i="lambda",overwrite:s=!1,startupType:d="iframe"}=n;Ce.Instance.debug("Got Body:",n);let a=await nl.Version.LoadVersion({dbManager:t,key:{AppName:n.appName,SemVer:n.semVer}});if(a!==void 0&&a.Status==="routed")if(s)Ce.Instance.info("Warning: App/Version already exists",{appName:n.appName,semVer:n.semVer});else return Ce.Instance.info("Error: App/Version already exists",{appName:n.appName,semVer:n.semVer}),{statusCode:409};if(d==="direct"&&["lambda"].includes(i))return Ce.Instance.info("Error: Incompatible app type and startup type",{appType:i,startupType:d}),{statusCode:400};if(s&&a&&(a.DefaultFile=n.defaultFile,a.Type=i,a.StartupType=d,n.lambdaARN&&(a.LambdaARN=n.lambdaARN)),a===void 0&&(a=new nl.Version(o({AppName:n.appName,SemVer:n.semVer,Type:i,Status:"pending",DefaultFile:n.defaultFile,StartupType:d},n.lambdaARN?{LambdaARN:n.lambdaARN}:{})),await a.Save(t)),(s||a.Status==="pending")&&i!=="url"){let{stagingBucket:l}=r.filestore,u=Hr(n,r)+"/";await WT(l,u,Hr(n,r),r),a.DefaultFile=n.defaultFile,a.Status="assets-copied",await a.Save(t)}if(i==="lambda"){let l=r.apigwy.apiId;if(s||a.Status==="assets-copied"){let w=r.awsAccountID,E=r.awsRegion,T=!0;try{let I=await Fa.send(new Un.GetPolicyCommand({FunctionName:n.lambdaARN}));if(I.Policy!==void 0){let N=JSON.parse(I.Policy);N.Statement!==void 0&&N.Statement.filter(J=>J.Sid==="microapps-version-root"||J.Sid==="microapps-version").length===2&&(T=!1)}}catch(I){if(I.name!=="ResourceNotFoundException")throw I}T&&(await Fa.send(new Un.AddPermissionCommand({Principal:"apigateway.amazonaws.com",StatementId:"microapps-version-root",Action:"lambda:InvokeFunction",FunctionName:n.lambdaARN,SourceArn:`arn:aws:execute-api:${E}:${w}:${l}/*/*/${n.appName}/${n.semVer}`})),await Fa.send(new Un.AddPermissionCommand({Principal:"apigateway.amazonaws.com",StatementId:"microapps-version",Action:"lambda:InvokeFunction",FunctionName:n.lambdaARN,SourceArn:`arn:aws:execute-api:${E}:${w}:${l}/*/*/${n.appName}/${n.semVer}/{proxy+}`}))),a.Status="permissioned",await a.Save(t)}let u="";if(s||a.Status==="permissioned")if(a.IntegrationID!==void 0&&a.IntegrationID!=="")u=a.IntegrationID,Ce.Instance.info("integration already created, skipping creation",{IntegrationId:u});else{try{u=(await N2.send(new ir.CreateIntegrationCommand({ApiId:l,IntegrationType:ir.IntegrationType.AWS_PROXY,IntegrationMethod:"POST",PayloadFormatVersion:"2.0",IntegrationUri:n.lambdaARN}))).IntegrationId}catch(w){if(w.name==="AccessDeniedException")return Ce.Instance.error("AccessDeniedException adding integration to API Gateway",{error:w}),{statusCode:401}}a.IntegrationID=u,a.Status="integrated",await a.Save(t)}if(s||a.Status==="integrated"){if(a.RouteIDAppVersion!==void 0&&a.RouteIDAppVersion!=="")Ce.Instance.info("route app/version already created, skipping creation",{IntegrationId:u,RouteIDAppVersion:a.RouteIDAppVersion});else try{let w=await N2.send(new ir.CreateRouteCommand({ApiId:l,Target:`integrations/${u}`,RouteKey:`ANY /${n.appName}/${n.semVer}`,AuthorizationType:r.requireIAMAuthorization?ir.AuthorizationType.AWS_IAM:ir.AuthorizationType.NONE}));Ce.Instance.info("created RouteIDAppVersion",{result:w}),a.RouteIDAppVersion=`${w.RouteId}`}catch(w){if(w.name==="AccessDeniedException")return Ce.Instance.error("AccessDeniedException adding route to API Gateway",{error:w}),{statusCode:401};Ce.Instance.error("Caught unexpected error on app/ver route add"),Ce.Instance.error(w)}if(a.RouteIDAppVersionSplat!==void 0&&a.RouteIDAppVersionSplat!=="")Ce.Instance.info("route app/version/* already created, skipping creation",{IntegrationId:u,RouteIDAppVersionSplat:a.RouteIDAppVersionSplat});else try{let w=await N2.send(new ir.CreateRouteCommand({ApiId:l,Target:`integrations/${u}`,RouteKey:`ANY /${n.appName}/${n.semVer}/{proxy+}`,AuthorizationType:r.requireIAMAuthorization?ir.AuthorizationType.AWS_IAM:ir.AuthorizationType.NONE}));Ce.Instance.info("created RouteIDAppVersionSplat",{result:w}),a.RouteIDAppVersionSplat=`${w.RouteId}`}catch(w){if(w.name==="AccessDeniedException")return Ce.Instance.error("AccessDeniedException adding route to API Gateway",{error:w}),{statusCode:401};Ce.Instance.error("Caught unexpected error on {proxy+} route add"),Ce.Instance.error(w)}a.Status="routed",await a.Save(t)}}else if(i==="lambda-url"){if(!n.lambdaARN)throw new Error("Missing lambdaARN for lambda-url app type");let{lambdaARNBase:l,lambdaAlias:u}=Zc({lambdaARN:a.LambdaARN,config:r});if(s||a.Status==="assets-copied"){let w=await Fa.send(new Un.ListTagsCommand({Resource:l}));(w.Tags===void 0||w.Tags["microapp-managed"]!=="true")&&await Fa.send(new Un.TagResourceCommand({Resource:l,Tags:{"microapp-managed":"true"}})),a.Status="permissioned",await a.Save(t)}if(s||a.Status==="permissioned"){let w,E;try{E=await Fa.send(new Un.GetFunctionUrlConfigCommand({FunctionName:l,Qualifier:u})),E.FunctionUrl&&(w=E.FunctionUrl)}catch(T){if(T.name!=="ResourceNotFoundException")throw T}E!=null&&E.FunctionUrl||(w=(await Fa.send(new Un.CreateFunctionUrlConfigCommand({FunctionName:l,Qualifier:u,AuthType:"AWS_IAM"}))).FunctionUrl),a.Status="routed",w&&(a.URL=w),await a.Save(t)}}else if(i==="static")a.Status==="assets-copied"&&(a.Status="routed",await a.Save(t));else if(i==="url"){if(!n.url)throw new Error("Missing url for url app type");a.URL=n.url,a.Status="routed",await a.Save(t)}else throw new Error(`Unknown app type: ${i}`);let c=await nl.Rules.Load({dbManager:t,key:{AppName:n.appName}});return c===void 0&&(c=new nl.Rules({AppName:n.appName,RuleSet:{},Version:1}),c.RuleSet.default={SemVer:n.semVer,AttributeName:"",AttributeValue:""},await c.Save(t)),Ce.Instance.info("finished request"),{statusCode:201}}var QT=Dt(bd()),fhe=Dt(Ra());var uhe=Dt(require("crypto"));function mhe(e){return uhe.default.createHash("sha1").update(e).digest("hex")}var c3t=new QT.STSClient({maxAttempts:8});async function phe(e){var u,w,E;let{dbManager:t,request:n,config:r}=e,{appName:i,semVer:s,needS3Creds:d=!0,overwrite:a=!1}=n,c={createAlias:"true"},l=await fhe.Version.LoadVersion({dbManager:t,key:{AppName:i,SemVer:s}});if(l!==void 0&&l.Status!=="pending")if(a)Ce.Instance.info("Warning: App/Version already exists",{appName:n.appName,semVer:n.semVer});else return Ce.Instance.info("Error: App/Version already exists",{appName:n.appName,semVer:n.semVer}),{statusCode:200,capabilities:c};if(Ce.Instance.info("App/Version does not exist",{appName:i,semVer:s}),d){let T={Statement:[{Effect:"Allow",Action:["s3:PutObject","s3:GetObject","s3:AbortMultipartUpload"],Resource:[`arn:aws:s3:::${r.filestore.stagingBucket}/*`]},{Effect:"Allow",Action:["s3:ListBucket"],Resource:[`arn:aws:s3:::${r.filestore.stagingBucket}`]}],Version:"2012-10-17"};Ce.Instance.debug("Temp IAM Policy",{policy:JSON.stringify(T)});let I=await c3t.send(new QT.AssumeRoleCommand({RoleArn:`arn:aws:iam::${r.awsAccountID}:role/${r.uploadRoleName}`,DurationSeconds:60*60,RoleSessionName:mhe(Hr(n,r)),Policy:JSON.stringify(T)}));return Ce.Instance.info("finished request - returning s3 creds"),{statusCode:404,capabilities:c,s3UploadUrl:`s3://${r.filestore.stagingBucket}/${Hr(n,r)}`,awsCredentials:{accessKeyId:(u=I.Credentials)==null?void 0:u.AccessKeyId,secretAccessKey:(w=I.Credentials)==null?void 0:w.SecretAccessKey,sessionToken:(E=I.Credentials)==null?void 0:E.SessionToken}}}else return Ce.Instance.info("finished request - not returning s3 creds"),{capabilities:c,statusCode:404}}var Vt=Dt(Qm()),hhe=require("util");function ghe(e){return{version:e,alias:`v${e.replace(/\./g,"_")}`}}var l3t=(0,hhe.promisify)(setTimeout),Pr=new Vt.LambdaClient({});async function whe(e){var E,T;let{config:t,request:n}=e,{lambdaARN:r,overwrite:i=!1,semVer:s}=n,d=Zc({lambdaARN:r,config:t});if(d.lambdaVersion==="$LATEST")throw new Error(`Lambda version cannot be $LATEST, must be a version number: ${r}`);if(d.lambdaARNType==="alias")throw new Error(`Lambda version cannot be an alias: ${r}`);d.lambdaARNType==="function"&&Ce.Instance.warn("Lambda ARN is a function, not a version - It is safer to publish a version using IaC and to pass that version to `microapps-publish publish`",{lambdaARN:r});let a=d.lambdaVersion;if(d.lambdaARNType==="function"){Ce.Instance.info("Creating version for Lambda $LATEST");let I=await Pr.send(new Vt.PublishVersionCommand({FunctionName:d.lambdaARNBase}));a=I.Version,Ce.Instance.info(`Lambda version created: ${I.Version}`);let N=I.LastUpdateStatus;for(let F=0;F<5;F++){if(N==="Successful"){Ce.Instance.info(`Lambda function updated, version: ${a}`);break}await l3t(1e3*F);let J=await Pr.send(new Vt.GetFunctionCommand({FunctionName:d.lambdaARNBase,Qualifier:a}));N=(E=J==null?void 0:J.Configuration)==null?void 0:E.LastUpdateStatus}}if(!a)throw new Error(`Lambda version not found: ${a}, for lambda: ${r}`);try{if(((T=(await Pr.send(new Vt.GetFunctionCommand({FunctionName:d.lambdaARNBase,Qualifier:a}))).Configuration)==null?void 0:T.FunctionArn)===void 0)return Ce.Instance.error(`Lambda version not found: ${a}, for lambda: ${r}`),{statusCode:404,errorMessage:`Lambda version not found: ${a}, for lambda: ${r}`}}catch(I){return Ce.Instance.error("Error getting Lambda version",I),I.name==="ResourceNotFoundException"?{statusCode:404,errorMessage:I.message}:{statusCode:500,errorMessage:I.message}}let c=ghe(s),l=await f3t({lambdaArnBase:d.lambdaARNBase,lambdaVersion:a,overwrite:i,versions:c});await u3t({lambdaARNBase:d.lambdaARNBase});let{url:u}=await m3t({lambdaARNBase:d.lambdaARNBase,lambdaAlias:c.alias}),w=S(o({},l),{functionUrl:u});return await p3t({config:t,lambdaBaseARN:d.lambdaARNBase,lambdaAlias:c.alias}),w}async function u3t({lambdaARNBase:e}){let t=await Pr.send(new Vt.ListTagsCommand({Resource:e}));(t.Tags===void 0||t.Tags["microapp-managed"]!=="true")&&await Pr.send(new Vt.TagResourceCommand({Resource:e,Tags:{"microapp-managed":"true"}}))}async function m3t({lambdaARNBase:e,lambdaAlias:t}){let n,r;try{r=await Pr.send(new Vt.GetFunctionUrlConfigCommand({FunctionName:e,Qualifier:t})),r.FunctionUrl&&(n=r.FunctionUrl)}catch(i){if(i.name!=="ResourceNotFoundException")throw i}return r!=null&&r.FunctionUrl||(n=(await Pr.send(new Vt.CreateFunctionUrlConfigCommand({FunctionName:e,Qualifier:t,AuthType:"AWS_IAM"}))).FunctionUrl),{url:n}}async function f3t(e){let{lambdaArnBase:t,lambdaVersion:n,overwrite:r,versions:i}=e;try{let d=await Pr.send(new Vt.GetAliasCommand({FunctionName:t,Name:i.alias}));if(n&&d.FunctionVersion===n&&d.AliasArn)return Ce.Instance.info(`Lambda alias already exists and already points to the desired version: ${n}`),{statusCode:200,type:"lambdaAlias",lambdaAliasARN:d.AliasArn,actionTaken:"verified"};if(!r&&d.FunctionVersion!==n)throw Ce.Instance.info(`Lambda alias already exists and does not point to the desired version: ${n}`),new Error("Lambda alias already exists, points to wrong version");Ce.Instance.info(`Updating the lambda alias for the desired version: ${n}`);let a=await Pr.send(new Vt.UpdateAliasCommand({FunctionName:t,Name:i.alias,FunctionVersion:n}));if(Ce.Instance.info(`Lambda alias updated, name: ${a.Name}, arn: ${a.AliasArn}`),!a.AliasArn)throw new Error("AliasArn failed to create");return{statusCode:200,type:"lambdaAlias",lambdaAliasARN:a.AliasArn,actionTaken:"updated"}}catch(d){if(d.name!=="ResourceNotFoundException")throw d}Ce.Instance.info(`Creating the lambda alias for the desired version: ${n}, lambdaArnBase: ${t}`);let s=await Pr.send(new Vt.CreateAliasCommand({FunctionName:t,Name:i.alias,FunctionVersion:n}));if(Ce.Instance.info(`Lambda alias created, name: ${s.Name}, arn: ${s.AliasArn}, points to version: ${s.FunctionVersion}`),!s.AliasArn)throw new Error("AliasArn failed to create");return{statusCode:201,type:"lambdaAlias",lambdaAliasARN:s.AliasArn,actionTaken:"created"}}async function p3t({config:e,lambdaBaseARN:t,lambdaAlias:n}){if(!e.parentDeployerLambdaARN){Ce.Instance.info("No parent account, skipping cross-account permissions");return}let r=!0;try{let i=await Pr.send(new Vt.GetPolicyCommand({FunctionName:t,Qualifier:n}));if(i.Policy!==void 0){let s=JSON.parse(i.Policy);s.Statement!==void 0&&s.Statement.filter(a=>a.Sid==="microapps-edge-to-origin").length===1&&(r=!1)}}catch(i){if(i.name!=="ResourceNotFoundException")throw i}r&&e.edgeToOriginRoleARN&&await Pr.send(new Vt.AddPermissionCommand({Principal:e.edgeToOriginRoleARN,StatementId:"microapps-edge-to-origin",Action:"lambda:InvokeFunctionUrl",FunctionName:t,Qualifier:n}))}var rl=Dt(Ra());async function yhe(e){let{dbManager:t,request:n,config:r}=e,{appType:i="lambda",overwrite:s=!1,startupType:d="iframe"}=n;Ce.Instance.debug("Got Body:",n);let a=await rl.Version.LoadVersion({dbManager:t,key:{AppName:n.appName,SemVer:n.semVer}});if(a!==void 0&&a.Status==="routed")if(s)Ce.Instance.info("Warning: App/Version already exists",{appName:n.appName,semVer:n.semVer});else return Ce.Instance.info("Error: App/Version already exists",{appName:n.appName,semVer:n.semVer}),{statusCode:409};if(d==="direct"&&["lambda"].includes(i))return Ce.Instance.info("Error: Incompatible app type and startup type",{appType:i,startupType:d}),{statusCode:400};if(s&&a&&(a.DefaultFile=n.defaultFile,a.Type=i,a.StartupType=d,n.lambdaARN&&(a.LambdaARN=n.lambdaARN)),a===void 0&&(a=new rl.Version(o({AppName:n.appName,SemVer:n.semVer,Type:i,Status:"pending",DefaultFile:n.defaultFile,StartupType:d},n.lambdaARN?{LambdaARN:n.lambdaARN}:{})),await a.Save(t)),(s||a.Status==="pending")&&i!=="url"){let{stagingBucket:l}=r.filestore,u=Hr(n,r)+"/";await WT(l,u,Hr(n,r),r),a.DefaultFile=n.defaultFile,a.Status="assets-copied",await a.Save(t)}if(i==="lambda")a.Status="routed",await a.Save(t);else if(i==="lambda-url"){if(!n.url)throw new Error("Missing url for lambda-url app type");a.Status="routed",a.URL=n.url,await a.Save(t)}else if(i==="static")a.Status==="assets-copied"&&(a.Status="routed",await a.Save(t));else if(i==="url"){if(!n.url)throw new Error("Missing url for url app type");a.URL=n.url,a.Status="routed",await a.Save(t)}else throw new Error(`Unknown app type: ${i}`);let c=await rl.Rules.Load({dbManager:t,key:{AppName:n.appName}});return c===void 0&&(c=new rl.Rules({AppName:n.appName,RuleSet:{},Version:1}),c.RuleSet.default={SemVer:n.semVer,AttributeName:"",AttributeValue:""},await c.Save(t)),Ce.Instance.info("finished request"),{statusCode:201}}var g3t=Ce.Instance,h3t=new YT.LambdaClient({}),As,k2=new She.DynamoDBClient({maxAttempts:8}),w3t="2023-01-31-01";Ce.Instance.info("Deployer build trigger",{buildTrigger:w3t});function y3t(e){As=e.dbManager,k2=e.dynamoClient}As=new P2.DBManager({dynamoClient:k2,tableName:Bt.instance.db.tableName});var Es=Bt.instance;async function S3t(e,t){if(g3t.options.meta={awsRequestId:t==null?void 0:t.awsRequestId,requestType:e.type},As===void 0&&(As=new P2.DBManager({dynamoClient:k2,tableName:Bt.instance.db.tableName})),Es.awsAccountID===""&&(t==null?void 0:t.invokedFunctionArn)!==void 0){let r=t.invokedFunctionArn.split(":")[4];r!==""&&(Es.awsAccountID=r)}Ce.Instance.info("received request",{request:e});try{if(Es.parentDeployerLambdaARN){if(["createApp","deployVersionPreflight","deployVersionLite","deleteVersion"].includes(e.type)){let n=await h3t.send(new YT.InvokeCommand({FunctionName:Es.parentDeployerLambdaARN,Qualifier:"currentVersion",Payload:Buffer.from(JSON.stringify(e))})),r=n.Payload?JSON.parse(Buffer.from(n.Payload).toString()):{statusCode:500};return Ce.Instance.info("response from parent deployer",S(o({},n),{Payload:r})),r}else if(["deployVersion"].includes(e.type))return{statusCode:400,errorMessage:"Deployer is in proxy mode - `deployVersion` is not allowed"}}switch(e.type){case"createApp":{let n=e;return await Of.CreateApp({dbManager:As,app:n})}case"deleteVersion":return await Yge({dbManager:As,request:e,config:Es});case"deployVersionPreflight":return await phe({dbManager:As,request:e,config:Es});case"deployVersion":return await lhe({dbManager:As,request:e,config:Es});case"deployVersionLite":return await yhe({dbManager:As,request:e,config:Es});case"lambdaAlias":{let r=await whe({request:e,config:Es});return Ce.Instance.info("lambdaAlias response",{response:r}),r}default:return{statusCode:400}}}catch(n){return Ce.Instance.error("Caught unexpected exception in handler"),Ce.Instance.error(n),{statusCode:500}}}0&&(module.exports={handler,overrideDBManager});
|
|
82
82
|
/*! *****************************************************************************
|
|
83
83
|
Copyright (C) Microsoft. All rights reserved.
|
|
84
84
|
Licensed under the Apache License, Version 2.0 (the "License"); you may not use
|