UNPKG

raindancers-network

Version:
116 lines 14.8 kB
"use strict"; var _a; Object.defineProperty(exports, "__esModule", { value: true }); exports.LakeFormation = exports.Permissions = void 0; const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti"); const cdk = require("aws-cdk-lib"); const aws_cdk_lib_1 = require("aws-cdk-lib"); const constructs = require("constructs"); const gluedatabase = require("../glue/database/gluedatabase"); /** * Permissions that can be used as part of a LakeFormation Permissions * refer https://docs.aws.amazon.com/lake-formation/latest/APIReference/API_GrantPermissions.html */ var Permissions; (function (Permissions) { Permissions["ALL"] = "ALL"; Permissions["SELECT"] = "SELECT"; Permissions["ALTER"] = "ALTER"; Permissions["DROP"] = "DROP"; Permissions["DELETE"] = "DELETE"; Permissions["INSERT"] = "INSERT"; Permissions["DESCRIBE"] = "DESCRIBE"; Permissions["CREATE_DATABASE"] = "CREATE_DATABASE"; Permissions["CREATE_TABLE"] = "CREATE_TABLE"; Permissions["DATA_LOCATION_ACCESS"] = "DATA_LOCATION_ACESS"; Permissions["CREATE_TAG"] = "CREATE_TAG"; Permissions["ASSOCIATE"] = "ASSOCIATE"; Permissions["CREATE_TABLE_READ_WRITE"] = "CREATE_TABLE_READ_WRITE"; })(Permissions = exports.Permissions || (exports.Permissions = {})); /** * Create a Class for the methods * the methods that we use to operate on our 'Datalake' */ class LakeFormation extends constructs.Construct { constructor(scope, id, props) { super(scope, id); if (props.nonproduction ?? false) { this.nonproduction = true; } ; } /** * Create a new bucket and associate it to the the Lakeformation. * @param props AddNewBucketToLakeFormationProps * @returns s3.Bucket */ addNewBucketToLakeFormation(props) { var bucket; // this lifecycle policy will be applied to the bucket by default if non is applied. const defaultLifeCycleRules = [ { abortIncompleteMultipartUploadAfter: cdk.Duration.days(90), transitions: [ { storageClass: aws_cdk_lib_1.aws_s3.StorageClass.INFREQUENT_ACCESS, transitionAfter: cdk.Duration.days(30), }, { storageClass: aws_cdk_lib_1.aws_s3.StorageClass.INTELLIGENT_TIERING, transitionAfter: cdk.Duration.days(60), }, { storageClass: aws_cdk_lib_1.aws_s3.StorageClass.GLACIER, transitionAfter: cdk.Duration.days(180), }, { storageClass: aws_cdk_lib_1.aws_s3.StorageClass.DEEP_ARCHIVE, transitionAfter: cdk.Duration.days(365), }, ], }, ]; var autoDeleteObjects = false; var removalPolicy = cdk.RemovalPolicy.RETAIN; if (this.nonproduction ?? false) { autoDeleteObjects = true; removalPolicy = cdk.RemovalPolicy.DESTROY; } const lifecycleRules = (props.lifecycleRules ?? defaultLifeCycleRules); bucket = new aws_cdk_lib_1.aws_s3.Bucket(this, props.name, { bucketName: cdk.PhysicalName.GENERATE_IF_NEEDED, blockPublicAccess: aws_cdk_lib_1.aws_s3.BlockPublicAccess.BLOCK_ALL, encryption: aws_cdk_lib_1.aws_s3.BucketEncryption.S3_MANAGED, autoDeleteObjects: autoDeleteObjects, removalPolicy: removalPolicy, lifecycleRules: lifecycleRules, }); if (props.role) { new aws_cdk_lib_1.aws_lakeformation.CfnResource(this, `associateBucket${props.name}`, { resourceArn: bucket.bucketArn, roleArn: props.role.roleArn, useServiceLinkedRole: false, }); } else { new aws_cdk_lib_1.aws_lakeformation.CfnResource(this, `associateBucket${props.name}`, { resourceArn: bucket.bucketArn, useServiceLinkedRole: true, }); } return bucket; } /** * @param props AddDatabaseProps * @returns gluedatabase.GlueDataBase */ addDatabase(props) { return new gluedatabase.GlueDataBase(this, props.databaseName, { databaseName: props.databaseName, }); } } exports.LakeFormation = LakeFormation; _a = JSII_RTTI_SYMBOL_1; LakeFormation[_a] = { fqn: "raindancers-network.lakeformation.LakeFormation", version: "1.29.3" }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGFrZWZvcm1hdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9sYWtlZm9ybWF0aW9uL2xha2Vmb3JtYXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxtQ0FBbUM7QUFDbkMsNkNBSXFCO0FBRXJCLHlDQUF5QztBQUN6Qyw4REFBOEQ7QUFHOUQ7OztHQUdHO0FBQ0gsSUFBWSxXQWNYO0FBZEQsV0FBWSxXQUFXO0lBQ3JCLDBCQUFXLENBQUE7SUFDWCxnQ0FBaUIsQ0FBQTtJQUNqQiw4QkFBZSxDQUFBO0lBQ2YsNEJBQWEsQ0FBQTtJQUNiLGdDQUFpQixDQUFBO0lBQ2pCLGdDQUFpQixDQUFBO0lBQ2pCLG9DQUFxQixDQUFBO0lBQ3JCLGtEQUFtQyxDQUFBO0lBQ25DLDRDQUE2QixDQUFBO0lBQzdCLDJEQUE0QyxDQUFBO0lBQzVDLHdDQUF5QixDQUFBO0lBQ3pCLHNDQUF1QixDQUFBO0lBQ3ZCLGtFQUFtRCxDQUFBO0FBQ3JELENBQUMsRUFkVyxXQUFXLEdBQVgsbUJBQVcsS0FBWCxtQkFBVyxRQWN0QjtBQThDRDs7O0dBR0c7QUFDSCxNQUFhLGFBQWMsU0FBUSxVQUFVLENBQUMsU0FBUztJQU9yRCxZQUFZLEtBQTJCLEVBQUUsRUFBVSxFQUFFLEtBQXlCO1FBQzVFLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFakIsSUFBSSxLQUFLLENBQUMsYUFBYSxJQUFJLEtBQUssRUFBRTtZQUNoQyxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQztTQUMzQjtRQUFBLENBQUM7SUFDSixDQUFDO0lBR0Q7Ozs7T0FJRztJQUNJLDJCQUEyQixDQUFDLEtBQXVDO1FBRXhFLElBQUksTUFBaUIsQ0FBQztRQUV0QixvRkFBb0Y7UUFDcEYsTUFBTSxxQkFBcUIsR0FBRztZQUM1QjtnQkFDRSxtQ0FBbUMsRUFBRSxHQUFHLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7Z0JBQzFELFdBQVcsRUFBRTtvQkFDWDt3QkFDRSxZQUFZLEVBQUUsb0JBQUUsQ0FBQyxZQUFZLENBQUMsaUJBQWlCO3dCQUMvQyxlQUFlLEVBQUUsR0FBRyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO3FCQUN2QztvQkFDRDt3QkFDRSxZQUFZLEVBQUUsb0JBQUUsQ0FBQyxZQUFZLENBQUMsbUJBQW1CO3dCQUNqRCxlQUFlLEVBQUUsR0FBRyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO3FCQUN2QztvQkFDRDt3QkFDRSxZQUFZLEVBQUUsb0JBQUUsQ0FBQyxZQUFZLENBQUMsT0FBTzt3QkFDckMsZUFBZSxFQUFFLEdBQUcsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQztxQkFDeEM7b0JBQ0Q7d0JBQ0UsWUFBWSxFQUFFLG9CQUFFLENBQUMsWUFBWSxDQUFDLFlBQVk7d0JBQzFDLGVBQWUsRUFBRSxHQUFHLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUM7cUJBQ3hDO2lCQUNGO2FBQ0Y7U0FDRixDQUFDO1FBRUYsSUFBSSxpQkFBaUIsR0FBWSxLQUFLLENBQUM7UUFDdkMsSUFBSSxhQUFhLEdBQXNCLEdBQUcsQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDO1FBRWhFLElBQUksSUFBSSxDQUFDLGFBQWEsSUFBSSxLQUFLLEVBQUU7WUFDL0IsaUJBQWlCLEdBQUcsSUFBSSxDQUFDO1lBQ3pCLGFBQWEsR0FBRyxHQUFHLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQztTQUMzQztRQUVELE1BQU0sY0FBYyxHQUFHLENBQUMsS0FBSyxDQUFDLGNBQWMsSUFBSSxxQkFBcUIsQ0FBQyxDQUFDO1FBRXZFLE1BQU0sR0FBRyxJQUFJLG9CQUFFLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSSxFQUFFO1lBQ3ZDLFVBQVUsRUFBRSxHQUFHLENBQUMsWUFBWSxDQUFDLGtCQUFrQjtZQUMvQyxpQkFBaUIsRUFBRSxvQkFBRSxDQUFDLGlCQUFpQixDQUFDLFNBQVM7WUFDakQsVUFBVSxFQUFFLG9CQUFFLENBQUMsZ0JBQWdCLENBQUMsVUFBVTtZQUMxQyxpQkFBaUIsRUFBRSxpQkFBaUI7WUFDcEMsYUFBYSxFQUFFLGFBQWE7WUFDNUIsY0FBYyxFQUFFLGNBQWM7U0FDL0IsQ0FBQyxDQUFDO1FBRUgsSUFBSSxLQUFLLENBQUMsSUFBSSxFQUFFO1lBQ2QsSUFBSSwrQkFBYSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsa0JBQWtCLEtBQUssQ0FBQyxJQUFJLEVBQUUsRUFBRTtnQkFDbEUsV0FBVyxFQUFFLE1BQU0sQ0FBQyxTQUFTO2dCQUM3QixPQUFPLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPO2dCQUMzQixvQkFBb0IsRUFBRSxLQUFLO2FBQzVCLENBQUMsQ0FBQztTQUNKO2FBQU07WUFDTCxJQUFJLCtCQUFhLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxrQkFBa0IsS0FBSyxDQUFDLElBQUksRUFBRSxFQUFFO2dCQUNsRSxXQUFXLEVBQUUsTUFBTSxDQUFDLFNBQVM7Z0JBQzdCLG9CQUFvQixFQUFFLElBQUk7YUFDM0IsQ0FBQyxDQUFDO1NBQ0o7UUFDRCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksV0FBVyxDQUFDLEtBQXVCO1FBRXhDLE9BQU8sSUFBSSxZQUFZLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsWUFBWSxFQUFFO1lBQzdELFlBQVksRUFBRSxLQUFLLENBQUMsWUFBWTtTQUNqQyxDQUFDLENBQUM7SUFDTCxDQUFDOztBQTdGSCxzQ0E4RkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBjZGsgZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0IHtcbiAgYXdzX3MzIGFzIHMzLFxuICBhd3NfbGFrZWZvcm1hdGlvbiBhcyBsYWtlZm9ybWF0aW9uLFxuICBhd3NfaWFtIGFzIGlhbSxcbn0gZnJvbSAnYXdzLWNkay1saWInO1xuXG5pbXBvcnQgKiBhcyBjb25zdHJ1Y3RzIGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0ICogYXMgZ2x1ZWRhdGFiYXNlIGZyb20gJy4uL2dsdWUvZGF0YWJhc2UvZ2x1ZWRhdGFiYXNlJztcblxuXG4vKipcbiAqIFBlcm1pc3Npb25zIHRoYXQgY2FuIGJlIHVzZWQgYXMgcGFydCBvZiBhIExha2VGb3JtYXRpb24gUGVybWlzc2lvbnNcbiAqIHJlZmVyIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9sYWtlLWZvcm1hdGlvbi9sYXRlc3QvQVBJUmVmZXJlbmNlL0FQSV9HcmFudFBlcm1pc3Npb25zLmh0bWxcbiAqL1xuZXhwb3J0IGVudW0gUGVybWlzc2lvbnMge1xuICBBTEwgPSAnQUxMJyxcbiAgU0VMRUNUID0gJ1NFTEVDVCcsXG4gIEFMVEVSID0gJ0FMVEVSJyxcbiAgRFJPUCA9ICdEUk9QJyxcbiAgREVMRVRFID0gJ0RFTEVURScsXG4gIElOU0VSVCA9ICdJTlNFUlQnLFxuICBERVNDUklCRSA9ICdERVNDUklCRScsXG4gIENSRUFURV9EQVRBQkFTRSA9ICdDUkVBVEVfREFUQUJBU0UnLFxuICBDUkVBVEVfVEFCTEUgPSAnQ1JFQVRFX1RBQkxFJyxcbiAgREFUQV9MT0NBVElPTl9BQ0NFU1MgPSAnREFUQV9MT0NBVElPTl9BQ0VTUycsXG4gIENSRUFURV9UQUcgPSAnQ1JFQVRFX1RBRycsXG4gIEFTU09DSUFURSA9ICdBU1NPQ0lBVEUnLFxuICBDUkVBVEVfVEFCTEVfUkVBRF9XUklURSA9ICdDUkVBVEVfVEFCTEVfUkVBRF9XUklURScsXG59XG5cblxuZXhwb3J0IGludGVyZmFjZSBBZGROZXdCdWNrZXRUb0xha2VGb3JtYXRpb25Qcm9wcyB7XG4gIC8qKlxuICAgKiBOYW1lIG9mIEJ1Y2tldFxuICAgKi9cbiAgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuICAvKipcbiAgICogYW5kIG9wdGlvbmFsIHJvbGUgdG8gdXNlIHRvIGpvaW4gdGhlIExha2UuIFRoaXMgd2lsbCBkZWZhdWx0IHRoZSB0aGUgc3RhbmRhcmQgU2VydmljZSBydWxlLCBpZiBub3RcbiAgICogc3BlY2lmaWVkLCB3aGljaCBpcyB0aGUgcmVjb21tZW5kZWQgYXBwcm9hY2guXG4gICAqL1xuICByZWFkb25seSByb2xlPzogaWFtLlJvbGU7XG4gIC8qKlxuICAgKiBMaWZlY3ljbGUgUnVsZXMgZm9yIG9iamVjdHMgdGhhdCBhcmUgc3RvcmVkIGluIHRoZSBCdWNrZXQuIFRoaXMgd2lsbCBkZWZhdWx0IHRvIGxpZmVjY3lsZSBwYXR0ZXJuIHRoYXQgd2lsbFxuICAgKiBldmVudHVhbGx5IG1vdmUgdW51c2VkIG9iZWplY3RzIHRvIGdsYWNpZXIuXG4gICAqL1xuICByZWFkb25seSBsaWZlY3ljbGVSdWxlcz86IHMzLkxpZmVjeWNsZVJ1bGVbXSB8IHVuZGVmaW5lZDtcbn1cblxuLyoqXG4gKiBHbHVlIERhdGFiYXNlIHRoYXQgaG9sZHMgaW5nZXN0IFRhYmxlcy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBZGREYXRhYmFzZVByb3BzIHtcblxuICAvKipcbiAgICogTmFtZSBmb3IgZGF0YWJhc2VcbiAgICovXG4gIHJlYWRvbmx5IGRhdGFiYXNlTmFtZTogc3RyaW5nO1xufVxuXG5cbmV4cG9ydCBpbnRlcmZhY2UgTGFrZUZvcm1hdGlvblByb3BzIHtcbiAgLyoqXG4gICAqIE9wdCBvdXQgb2YgTWVjaGFuaXNtcyBmb3IgaGlnaCBkYXRhIHByb3RlY3Rpb24sIHRoYXQgYXJlIGFwcHJvcHJpYXRlIGZvciBwcm9kdWN0aW9uXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBub25wcm9kdWN0aW9uPzogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgLyoqXG4gICAqIFRoZSBjZGsgZXhlYyByb2xlIHdpbGwgYmUgY3JlYXRpbmcgRGF0YWxha2UgT2JqZWN0cyBzbyB3aWxsIHJlcXVpcmUgcGVybWlzc2lvblxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBtYWtlQ2RrRXhlY1JvbGVMYWtlQWRtaW4/OiBib29sZWFuIHwgdW5kZWZpbmVkO1xuXG59XG5cbi8qKlxuICogQ3JlYXRlIGEgQ2xhc3MgZm9yIHRoZSBtZXRob2RzXG4gKiB0aGUgbWV0aG9kcyB0aGF0IHdlIHVzZSB0byBvcGVyYXRlIG9uIG91ciAnRGF0YWxha2UnXG4gKi9cbmV4cG9ydCBjbGFzcyBMYWtlRm9ybWF0aW9uIGV4dGVuZHMgY29uc3RydWN0cy5Db25zdHJ1Y3Qge1xuXG4gIC8qKlxuICAgKiBVc2VkIHRvIGRldGVybWluZSBpZiBidWNrZXRzIGFyZSBiYWNrZWR1cCwgYW5kIHByb3RlY3RlZCBmcm9tIFN0YWNrIERlc3RydWN0aW9uLlxuICAgKi9cbiAgbm9ucHJvZHVjdGlvbjogYm9vbGVhbiB8IHVuZGVmaW5lZDtcblxuICBjb25zdHJ1Y3RvcihzY29wZTogY29uc3RydWN0cy5Db25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBMYWtlRm9ybWF0aW9uUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgaWYgKHByb3BzLm5vbnByb2R1Y3Rpb24gPz8gZmFsc2UpIHtcbiAgICAgIHRoaXMubm9ucHJvZHVjdGlvbiA9IHRydWU7XG4gICAgfTtcbiAgfVxuXG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIG5ldyBidWNrZXQgYW5kIGFzc29jaWF0ZSBpdCB0byB0aGUgdGhlIExha2Vmb3JtYXRpb24uXG4gICAqIEBwYXJhbSBwcm9wcyBBZGROZXdCdWNrZXRUb0xha2VGb3JtYXRpb25Qcm9wc1xuICAgKiBAcmV0dXJucyBzMy5CdWNrZXRcbiAgICovXG4gIHB1YmxpYyBhZGROZXdCdWNrZXRUb0xha2VGb3JtYXRpb24ocHJvcHM6IEFkZE5ld0J1Y2tldFRvTGFrZUZvcm1hdGlvblByb3BzKTogczMuQnVja2V0IHtcblxuICAgIHZhciBidWNrZXQ6IHMzLkJ1Y2tldDtcblxuICAgIC8vIHRoaXMgbGlmZWN5Y2xlIHBvbGljeSB3aWxsIGJlIGFwcGxpZWQgdG8gdGhlIGJ1Y2tldCBieSBkZWZhdWx0IGlmIG5vbiBpcyBhcHBsaWVkLlxuICAgIGNvbnN0IGRlZmF1bHRMaWZlQ3ljbGVSdWxlcyA9IFtcbiAgICAgIHtcbiAgICAgICAgYWJvcnRJbmNvbXBsZXRlTXVsdGlwYXJ0VXBsb2FkQWZ0ZXI6IGNkay5EdXJhdGlvbi5kYXlzKDkwKSxcbiAgICAgICAgdHJhbnNpdGlvbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBzdG9yYWdlQ2xhc3M6IHMzLlN0b3JhZ2VDbGFzcy5JTkZSRVFVRU5UX0FDQ0VTUyxcbiAgICAgICAgICAgIHRyYW5zaXRpb25BZnRlcjogY2RrLkR1cmF0aW9uLmRheXMoMzApLFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgc3RvcmFnZUNsYXNzOiBzMy5TdG9yYWdlQ2xhc3MuSU5URUxMSUdFTlRfVElFUklORyxcbiAgICAgICAgICAgIHRyYW5zaXRpb25BZnRlcjogY2RrLkR1cmF0aW9uLmRheXMoNjApLFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgc3RvcmFnZUNsYXNzOiBzMy5TdG9yYWdlQ2xhc3MuR0xBQ0lFUixcbiAgICAgICAgICAgIHRyYW5zaXRpb25BZnRlcjogY2RrLkR1cmF0aW9uLmRheXMoMTgwKSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHN0b3JhZ2VDbGFzczogczMuU3RvcmFnZUNsYXNzLkRFRVBfQVJDSElWRSxcbiAgICAgICAgICAgIHRyYW5zaXRpb25BZnRlcjogY2RrLkR1cmF0aW9uLmRheXMoMzY1KSxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgfSxcbiAgICBdO1xuXG4gICAgdmFyIGF1dG9EZWxldGVPYmplY3RzOiBib29sZWFuID0gZmFsc2U7XG4gICAgdmFyIHJlbW92YWxQb2xpY3k6IGNkay5SZW1vdmFsUG9saWN5ID0gY2RrLlJlbW92YWxQb2xpY3kuUkVUQUlOO1xuXG4gICAgaWYgKHRoaXMubm9ucHJvZHVjdGlvbiA/PyBmYWxzZSkge1xuICAgICAgYXV0b0RlbGV0ZU9iamVjdHMgPSB0cnVlO1xuICAgICAgcmVtb3ZhbFBvbGljeSA9IGNkay5SZW1vdmFsUG9saWN5LkRFU1RST1k7XG4gICAgfVxuXG4gICAgY29uc3QgbGlmZWN5Y2xlUnVsZXMgPSAocHJvcHMubGlmZWN5Y2xlUnVsZXMgPz8gZGVmYXVsdExpZmVDeWNsZVJ1bGVzKTtcblxuICAgIGJ1Y2tldCA9IG5ldyBzMy5CdWNrZXQodGhpcywgcHJvcHMubmFtZSwge1xuICAgICAgYnVja2V0TmFtZTogY2RrLlBoeXNpY2FsTmFtZS5HRU5FUkFURV9JRl9ORUVERUQsXG4gICAgICBibG9ja1B1YmxpY0FjY2VzczogczMuQmxvY2tQdWJsaWNBY2Nlc3MuQkxPQ0tfQUxMLFxuICAgICAgZW5jcnlwdGlvbjogczMuQnVja2V0RW5jcnlwdGlvbi5TM19NQU5BR0VELCAvLyB0aGlzIGlzIHdyb25nLlxuICAgICAgYXV0b0RlbGV0ZU9iamVjdHM6IGF1dG9EZWxldGVPYmplY3RzLFxuICAgICAgcmVtb3ZhbFBvbGljeTogcmVtb3ZhbFBvbGljeSxcbiAgICAgIGxpZmVjeWNsZVJ1bGVzOiBsaWZlY3ljbGVSdWxlcyxcbiAgICB9KTtcblxuICAgIGlmIChwcm9wcy5yb2xlKSB7XG4gICAgICBuZXcgbGFrZWZvcm1hdGlvbi5DZm5SZXNvdXJjZSh0aGlzLCBgYXNzb2NpYXRlQnVja2V0JHtwcm9wcy5uYW1lfWAsIHtcbiAgICAgICAgcmVzb3VyY2VBcm46IGJ1Y2tldC5idWNrZXRBcm4sXG4gICAgICAgIHJvbGVBcm46IHByb3BzLnJvbGUucm9sZUFybixcbiAgICAgICAgdXNlU2VydmljZUxpbmtlZFJvbGU6IGZhbHNlLFxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIG5ldyBsYWtlZm9ybWF0aW9uLkNmblJlc291cmNlKHRoaXMsIGBhc3NvY2lhdGVCdWNrZXQke3Byb3BzLm5hbWV9YCwge1xuICAgICAgICByZXNvdXJjZUFybjogYnVja2V0LmJ1Y2tldEFybixcbiAgICAgICAgdXNlU2VydmljZUxpbmtlZFJvbGU6IHRydWUsXG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIGJ1Y2tldDtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0gcHJvcHMgQWRkRGF0YWJhc2VQcm9wc1xuICAgKiBAcmV0dXJucyBnbHVlZGF0YWJhc2UuR2x1ZURhdGFCYXNlXG4gICAqL1xuICBwdWJsaWMgYWRkRGF0YWJhc2UocHJvcHM6IEFkZERhdGFiYXNlUHJvcHMpOiBnbHVlZGF0YWJhc2UuR2x1ZURhdGFCYXNlIHtcblxuICAgIHJldHVybiBuZXcgZ2x1ZWRhdGFiYXNlLkdsdWVEYXRhQmFzZSh0aGlzLCBwcm9wcy5kYXRhYmFzZU5hbWUsIHtcbiAgICAgIGRhdGFiYXNlTmFtZTogcHJvcHMuZGF0YWJhc2VOYW1lLFxuICAgIH0pO1xuICB9XG59XG4iXX0=