@aws-cdk/aws-glue-alpha 2.265.0-alpha.0 → 2.266.0-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (44) hide show
  1. package/.jsii +504 -436
  2. package/.jsii.tabl.json.gz +0 -0
  3. package/.warnings.jsii.js +25 -33
  4. package/README.md +111 -43
  5. package/awslint.json +2 -1
  6. package/lib/catalog.js +3 -3
  7. package/lib/code.js +3 -3
  8. package/lib/connection.js +2 -2
  9. package/lib/data-format.d.ts +2 -2
  10. package/lib/data-format.js +8 -8
  11. package/lib/data-quality-ruleset.d.ts +28 -3
  12. package/lib/data-quality-ruleset.js +37 -5
  13. package/lib/database.d.ts +1 -1
  14. package/lib/database.js +2 -2
  15. package/lib/external-table.js +6 -4
  16. package/lib/jobs/job.d.ts +1 -24
  17. package/lib/jobs/job.js +3 -3
  18. package/lib/jobs/pyspark-etl-job.d.ts +2 -1
  19. package/lib/jobs/pyspark-etl-job.js +10 -5
  20. package/lib/jobs/pyspark-flex-etl-job.d.ts +3 -2
  21. package/lib/jobs/pyspark-flex-etl-job.js +7 -6
  22. package/lib/jobs/pyspark-streaming-job.d.ts +2 -1
  23. package/lib/jobs/pyspark-streaming-job.js +6 -5
  24. package/lib/jobs/python-shell-job.js +1 -1
  25. package/lib/jobs/ray-job.d.ts +8 -0
  26. package/lib/jobs/ray-job.js +3 -7
  27. package/lib/jobs/scala-spark-etl-job.js +4 -8
  28. package/lib/jobs/scala-spark-flex-etl-job.js +4 -4
  29. package/lib/jobs/scala-spark-streaming-job.js +4 -8
  30. package/lib/jobs/spark-job.d.ts +26 -0
  31. package/lib/jobs/spark-job.js +2 -2
  32. package/lib/partition-projection.js +1 -1
  33. package/lib/s3-table.d.ts +2 -1
  34. package/lib/s3-table.js +5 -3
  35. package/lib/schema.js +3 -8
  36. package/lib/security-configuration.d.ts +41 -47
  37. package/lib/security-configuration.js +83 -25
  38. package/lib/storage-parameter.js +1 -1
  39. package/lib/table-base.d.ts +33 -0
  40. package/lib/table-base.js +33 -2
  41. package/lib/table-deprecated.js +1 -1
  42. package/lib/triggers/trigger-options.js +1 -1
  43. package/lib/triggers/workflow.js +2 -2
  44. package/package.json +7 -7
package/lib/schema.js CHANGED
@@ -9,7 +9,7 @@ const helpers_internal_1 = require("aws-cdk-lib/core/lib/helpers-internal");
9
9
  * @see https://docs.aws.amazon.com/athena/latest/ug/data-types.html
10
10
  */
11
11
  class Schema {
12
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-glue-alpha.Schema", version: "2.265.0-alpha.0" };
12
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-glue-alpha.Schema", version: "2.266.0-alpha.0" };
13
13
  static BOOLEAN = {
14
14
  isPrimitive: true,
15
15
  inputString: 'boolean',
@@ -177,15 +177,10 @@ class Schema {
177
177
  return {
178
178
  isPrimitive: false,
179
179
  inputString: `struct<${columns.map(column => {
180
- if (column.comment === undefined) {
181
- return `${column.name}:${column.type.inputString}`;
182
- }
183
- else {
184
- return `${column.name}:${column.type.inputString} COMMENT '${column.comment}'`;
185
- }
180
+ return `${column.name}:${column.type.inputString}`;
186
181
  }).join(',')}>`,
187
182
  };
188
183
  }
189
184
  }
190
185
  exports.Schema = Schema;
191
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NoZW1hLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsic2NoZW1hLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsNkNBQXNEO0FBQ3RELDRFQUE0RDtBQXVDNUQ7O0dBRUc7QUFDSCxNQUFhLE1BQU07O0lBQ1YsTUFBTSxDQUFVLE9BQU8sR0FBUztRQUNyQyxXQUFXLEVBQUUsSUFBSTtRQUNqQixXQUFXLEVBQUUsU0FBUztLQUN2QixDQUFDO0lBRUssTUFBTSxDQUFVLE1BQU0sR0FBUztRQUNwQyxXQUFXLEVBQUUsSUFBSTtRQUNqQixXQUFXLEVBQUUsUUFBUTtLQUN0QixDQUFDO0lBRUY7O09BRUc7SUFDSSxNQUFNLENBQVUsT0FBTyxHQUFTO1FBQ3JDLFdBQVcsRUFBRSxJQUFJO1FBQ2pCLFdBQVcsRUFBRSxRQUFRO0tBQ3RCLENBQUM7SUFFSyxNQUFNLENBQVUsTUFBTSxHQUFTO1FBQ3BDLFdBQVcsRUFBRSxJQUFJO1FBQ2pCLFdBQVcsRUFBRSxRQUFRO0tBQ3RCLENBQUM7SUFFSyxNQUFNLENBQVUsS0FBSyxHQUFTO1FBQ25DLFdBQVcsRUFBRSxJQUFJO1FBQ2pCLFdBQVcsRUFBRSxPQUFPO0tBQ3JCLENBQUM7SUFFRjs7T0FFRztJQUNJLE1BQU0sQ0FBVSxPQUFPLEdBQVM7UUFDckMsV0FBVyxFQUFFLElBQUk7UUFDakIsV0FBVyxFQUFFLEtBQUs7S0FDbkIsQ0FBQztJQUVGOztPQUVHO0lBQ0ksTUFBTSxDQUFVLFNBQVMsR0FBUztRQUN2QyxXQUFXLEVBQUUsSUFBSTtRQUNqQixXQUFXLEVBQUUsVUFBVTtLQUN4QixDQUFDO0lBRUY7O09BRUc7SUFDSSxNQUFNLENBQVUsUUFBUSxHQUFTO1FBQ3RDLFdBQVcsRUFBRSxJQUFJO1FBQ2pCLFdBQVcsRUFBRSxTQUFTO0tBQ3ZCLENBQUM7SUFFRjs7T0FFRztJQUNJLE1BQU0sQ0FBVSxJQUFJLEdBQVM7UUFDbEMsV0FBVyxFQUFFLElBQUk7UUFDakIsV0FBVyxFQUFFLE1BQU07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QkFDMUMsSUFBSSxNQUFNLENBQUMsT0FBTyxLQUFLLFNBQVMsRUFBRSxDQUFDO29CQUNqQyxPQUFPLEdBQUcsTUFBTSxDQUFDLElBQUksSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO2dCQUNyRCxDQUFDO3FCQUFNLENBQUM7b0JBQ04sT0FBTyxHQUFHLE1BQU0sQ0FBQyxJQUFJLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLGFBQWEsTUFBTSxDQUFDLE9BQU8sR0FBRyxDQUFDO2dCQUNqRixDQUFDO1lBQ0gsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHO1NBQ2hCLENBQUM7S0FDSDs7QUE1S0gsd0JBNktDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVW5zY29wZWRWYWxpZGF0aW9uRXJyb3IgfSBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgeyBsaXQgfSBmcm9tICdhd3MtY2RrLWxpYi9jb3JlL2xpYi9oZWxwZXJzLWludGVybmFsJztcblxuLyoqXG4gKiBBIGNvbHVtbiBvZiBhIHRhYmxlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENvbHVtbiB7XG4gIC8qKlxuICAgKiBOYW1lIG9mIHRoZSBjb2x1bW4uXG4gICAqL1xuICByZWFkb25seSBuYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFR5cGUgb2YgdGhlIGNvbHVtbi5cbiAgICovXG4gIHJlYWRvbmx5IHR5cGU6IFR5cGU7XG5cbiAgLyoqXG4gICAqIENvbWVudCBkZXNjcmliaW5nIHRoZSBjb2x1bW4uXG4gICAqXG4gICAqIEBkZWZhdWx0IG5vbmVcbiAgICovXG4gIHJlYWRvbmx5IGNvbW1lbnQ/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogUmVwcmVzZW50cyBhIHR5cGUgb2YgYSBjb2x1bW4gaW4gYSB0YWJsZSBzY2hlbWEuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVHlwZSB7XG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgd2hldGhlciB0aGlzIHR5cGUgaXMgYSBwcmltaXRpdmUgZGF0YSB0eXBlLlxuICAgKi9cbiAgcmVhZG9ubHkgaXNQcmltaXRpdmU6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEdsdWUgSW5wdXRTdHJpbmcgZm9yIHRoaXMgdHlwZS5cbiAgICovXG4gIHJlYWRvbmx5IGlucHV0U3RyaW5nOiBzdHJpbmc7XG59XG5cbi8qKlxuICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYXRoZW5hL2xhdGVzdC91Zy9kYXRhLXR5cGVzLmh0bWxcbiAqL1xuZXhwb3J0IGNsYXNzIFNjaGVtYSB7XG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgQk9PTEVBTjogVHlwZSA9IHtcbiAgICBpc1ByaW1pdGl2ZTogdHJ1ZSxcbiAgICBpbnB1dFN0cmluZzogJ2Jvb2xlYW4nLFxuICB9O1xuXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgQklOQVJZOiBUeXBlID0ge1xuICAgIGlzUHJpbWl0aXZlOiB0cnVlLFxuICAgIGlucHV0U3RyaW5nOiAnYmluYXJ5JyxcbiAgfTtcblxuICAvKipcbiAgICogQSA2NC1iaXQgc2lnbmVkIElOVEVHRVIgaW4gdHdv4oCZcyBjb21wbGVtZW50IGZvcm1hdCwgd2l0aCBhIG1pbmltdW0gdmFsdWUgb2YgLTJeNjMgYW5kIGEgbWF4aW11bSB2YWx1ZSBvZiAyXjYzLTEuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IEJJR19JTlQ6IFR5cGUgPSB7XG4gICAgaXNQcmltaXRpdmU6IHRydWUsXG4gICAgaW5wdXRTdHJpbmc6ICdiaWdpbnQnLFxuICB9O1xuXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgRE9VQkxFOiBUeXBlID0ge1xuICAgIGlzUHJpbWl0aXZlOiB0cnVlLFxuICAgIGlucHV0U3RyaW5nOiAnZG91YmxlJyxcbiAgfTtcblxuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IEZMT0FUOiBUeXBlID0ge1xuICAgIGlzUHJpbWl0aXZlOiB0cnVlLFxuICAgIGlucHV0U3RyaW5nOiAnZmxvYXQnLFxuICB9O1xuXG4gIC8qKlxuICAgKiBBIDMyLWJpdCBzaWduZWQgSU5URUdFUiBpbiB0d2/igJlzIGNvbXBsZW1lbnQgZm9ybWF0LCB3aXRoIGEgbWluaW11bSB2YWx1ZSBvZiAtMl4zMSBhbmQgYSBtYXhpbXVtIHZhbHVlIG9mIDJeMzEtMS5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgSU5URUdFUjogVHlwZSA9IHtcbiAgICBpc1ByaW1pdGl2ZTogdHJ1ZSxcbiAgICBpbnB1dFN0cmluZzogJ2ludCcsXG4gIH07XG5cbiAgLyoqXG4gICAqIEEgMTYtYml0IHNpZ25lZCBJTlRFR0VSIGluIHR3b+KAmXMgY29tcGxlbWVudCBmb3JtYXQsIHdpdGggYSBtaW5pbXVtIHZhbHVlIG9mIC0yXjE1IGFuZCBhIG1heGltdW0gdmFsdWUgb2YgMl4xNS0xLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBTTUFMTF9JTlQ6IFR5cGUgPSB7XG4gICAgaXNQcmltaXRpdmU6IHRydWUsXG4gICAgaW5wdXRTdHJpbmc6ICdzbWFsbGludCcsXG4gIH07XG5cbiAgLyoqXG4gICAqIEEgOC1iaXQgc2lnbmVkIElOVEVHRVIgaW4gdHdv4oCZcyBjb21wbGVtZW50IGZvcm1hdCwgd2l0aCBhIG1pbmltdW0gdmFsdWUgb2YgLTJeNyBhbmQgYSBtYXhpbXVtIHZhbHVlIG9mIDJeNy0xXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFRJTllfSU5UOiBUeXBlID0ge1xuICAgIGlzUHJpbWl0aXZlOiB0cnVlLFxuICAgIGlucHV0U3RyaW5nOiAndGlueWludCcsXG4gIH07XG5cbiAgLyoqXG4gICAqIERhdGUgdHlwZS5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgREFURTogVHlwZSA9IHtcbiAgICBpc1ByaW1pdGl2ZTogdHJ1ZSxcbiAgICBpbnB1dFN0cmluZzogJ2RhdGUnLFxuICB9O1xuXG4gIC8qKlxuICAgKiBUaW1lc3RhbXAgdHlwZSAoZGF0ZSBhbmQgdGltZSkuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFRJTUVTVEFNUDogVHlwZSA9IHtcbiAgICBpc1ByaW1pdGl2ZTogdHJ1ZSxcbiAgICBpbnB1dFN0cmluZzogJ3RpbWVzdGFtcCcsXG4gIH07XG5cbiAgLyoqXG4gICAqIEFyYml0cmFyeS1sZW5ndGggc3RyaW5nIHR5cGUuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFNUUklORzogVHlwZSA9IHtcbiAgICBpc1ByaW1pdGl2ZTogdHJ1ZSxcbiAgICBpbnB1dFN0cmluZzogJ3N0cmluZycsXG4gIH07XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBkZWNpbWFsIHR5cGUuXG4gICAqXG4gICAqIFRPRE86IEJvdW5kc1xuICAgKlxuICAgKiBAcGFyYW0gcHJlY2lzaW9uIHRoZSB0b3RhbCBudW1iZXIgb2YgZGlnaXRzXG4gICAqIEBwYXJhbSBzY2FsZSB0aGUgbnVtYmVyIG9mIGRpZ2l0cyBpbiBmcmFjdGlvbmFsIHBhcnQsIHRoZSBkZWZhdWx0IGlzIDBcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZGVjaW1hbChwcmVjaXNpb246IG51bWJlciwgc2NhbGU/OiBudW1iZXIpOiBUeXBlIHtcbiAgICByZXR1cm4ge1xuICAgICAgaXNQcmltaXRpdmU6IHRydWUsXG4gICAgICBpbnB1dFN0cmluZzogc2NhbGUgIT09IHVuZGVmaW5lZCA/IGBkZWNpbWFsKCR7cHJlY2lzaW9ufSwke3NjYWxlfSlgIDogYGRlY2ltYWwoJHtwcmVjaXNpb259KWAsXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGaXhlZCBsZW5ndGggY2hhcmFjdGVyIGRhdGEsIHdpdGggYSBzcGVjaWZpZWQgbGVuZ3RoIGJldHdlZW4gMSBhbmQgMjU1LlxuICAgKlxuICAgKiBAcGFyYW0gbGVuZ3RoIGxlbmd0aCBiZXR3ZWVuIDEgYW5kIDI1NVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBjaGFyKGxlbmd0aDogbnVtYmVyKTogVHlwZSB7XG4gICAgaWYgKGxlbmd0aCA8PSAwIHx8IGxlbmd0aCA+IDI1NSkge1xuICAgICAgdGhyb3cgbmV3IFVuc2NvcGVkVmFsaWRhdGlvbkVycm9yKGxpdGBDaGFyTGVuZ3RoT3V0T2ZSYW5nZWAsIGBjaGFyIGxlbmd0aCBtdXN0IGJlIChpbmNsdXNpdmVseSkgYmV0d2VlbiAxIGFuZCAyNTUsIGJ1dCB3YXMgJHtsZW5ndGh9YCk7XG4gICAgfVxuICAgIGlmIChsZW5ndGggJSAxICE9PSAwKSB7XG4gICAgICB0aHJvdyBuZXcgVW5zY29wZWRWYWxpZGF0aW9uRXJyb3IobGl0YENoYXJMZW5ndGhOb3RJbnRlZ2VyYCwgYGNoYXIgbGVuZ3RoIG11c3QgYmUgYSBwb3NpdGl2ZSBpbnRlZ2VyLCB3YXMgJHtsZW5ndGh9YCk7XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICBpc1ByaW1pdGl2ZTogdHJ1ZSxcbiAgICAgIGlucHV0U3RyaW5nOiBgY2hhcigke2xlbmd0aH0pYCxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIFZhcmlhYmxlIGxlbmd0aCBjaGFyYWN0ZXIgZGF0YSwgd2l0aCBhIHNwZWNpZmllZCBsZW5ndGggYmV0d2VlbiAxIGFuZCA2NTUzNS5cbiAgICpcbiAgICogQHBhcmFtIGxlbmd0aCBsZW5ndGggYmV0d2VlbiAxIGFuZCA2NTUzNS5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgdmFyY2hhcihsZW5ndGg6IG51bWJlcik6IFR5cGUge1xuICAgIGlmIChsZW5ndGggPD0gMCB8fCBsZW5ndGggPiA2NTUzNSkge1xuICAgICAgdGhyb3cgbmV3IFVuc2NvcGVkVmFsaWRhdGlvbkVycm9yKGxpdGBWYXJjaGFyTGVuZ3RoT3V0T2ZSYW5nZWAsIGB2YXJjaGFyIGxlbmd0aCBtdXN0IGJlIChpbmNsdXNpdmVseSkgYmV0d2VlbiAxIGFuZCA2NTUzNSwgYnV0IHdhcyAke2xlbmd0aH1gKTtcbiAgICB9XG4gICAgaWYgKGxlbmd0aCAlIDEgIT09IDApIHtcbiAgICAgIHRocm93IG5ldyBVbnNjb3BlZFZhbGlkYXRpb25FcnJvcihsaXRgVmFyY2hhckxlbmd0aE5vdEludGVnZXJgLCBgdmFyY2hhciBsZW5ndGggbXVzdCBiZSBhIHBvc2l0aXZlIGludGVnZXIsIHdhcyAke2xlbmd0aH1gKTtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgIGlzUHJpbWl0aXZlOiB0cnVlLFxuICAgICAgaW5wdXRTdHJpbmc6IGB2YXJjaGFyKCR7bGVuZ3RofSlgLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhbiBhcnJheSBvZiBzb21lIG90aGVyIHR5cGUuXG4gICAqXG4gICAqIEBwYXJhbSBpdGVtVHlwZSB0eXBlIGNvbnRhaW5lZCBieSB0aGUgYXJyYXkuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGFycmF5KGl0ZW1UeXBlOiBUeXBlKTogVHlwZSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGlzUHJpbWl0aXZlOiBmYWxzZSxcbiAgICAgIGlucHV0U3RyaW5nOiBgYXJyYXk8JHtpdGVtVHlwZS5pbnB1dFN0cmluZ30+YCxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBtYXAgb2Ygc29tZSBwcmltaXRpdmUga2V5IHR5cGUgdG8gc29tZSB2YWx1ZSB0eXBlLlxuICAgKlxuICAgKiBAcGFyYW0ga2V5VHlwZSB0eXBlIG9mIGtleSwgbXVzdCBiZSBhIHByaW1pdGl2ZS5cbiAgICogQHBhcmFtIHZhbHVlVHlwZSB0eXBlIGZvIHRoZSB2YWx1ZSBpbmRleGVkIGJ5IHRoZSBrZXkuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIG1hcChrZXlUeXBlOiBUeXBlLCB2YWx1ZVR5cGU6IFR5cGUpOiBUeXBlIHtcbiAgICBpZiAoIWtleVR5cGUuaXNQcmltaXRpdmUpIHtcbiAgICAgIHRocm93IG5ldyBVbnNjb3BlZFZhbGlkYXRpb25FcnJvcihsaXRgTWFwS2V5VHlwZU5vdFByaW1pdGl2ZWAsIGB0aGUga2V5IHR5cGUgb2YgYSAnbWFwJyBtdXN0IGJlIGEgcHJpbWl0aXZlLCBidXQgd2FzICR7a2V5VHlwZS5pbnB1dFN0cmluZ31gKTtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgIGlzUHJpbWl0aXZlOiBmYWxzZSxcbiAgICAgIGlucHV0U3RyaW5nOiBgbWFwPCR7a2V5VHlwZS5pbnB1dFN0cmluZ30sJHt2YWx1ZVR5cGUuaW5wdXRTdHJpbmd9PmAsXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgbmVzdGVkIHN0cnVjdHVyZSBjb250YWluaW5nIGluZGl2aWR1YWxseSBuYW1lZCBhbmQgdHlwZWQgY29sdW1ucy5cbiAgICpcbiAgICogQHBhcmFtIGNvbHVtbnMgdGhlIGNvbHVtbnMgb2YgdGhlIHN0cnVjdHVyZS5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgc3RydWN0KGNvbHVtbnM6IENvbHVtbltdKTogVHlwZSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGlzUHJpbWl0aXZlOiBmYWxzZSxcbiAgICAgIGlucHV0U3RyaW5nOiBgc3RydWN0PCR7Y29sdW1ucy5tYXAoY29sdW1uID0+IHtcbiAgICAgICAgaWYgKGNvbHVtbi5jb21tZW50ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICByZXR1cm4gYCR7Y29sdW1uLm5hbWV9OiR7Y29sdW1uLnR5cGUuaW5wdXRTdHJpbmd9YDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gYCR7Y29sdW1uLm5hbWV9OiR7Y29sdW1uLnR5cGUuaW5wdXRTdHJpbmd9IENPTU1FTlQgJyR7Y29sdW1uLmNvbW1lbnR9J2A7XG4gICAgICAgIH1cbiAgICAgIH0pLmpvaW4oJywnKX0+YCxcbiAgICB9O1xuICB9XG59XG4iXX0=
186
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NoZW1hLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsic2NoZW1hLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsNkNBQXNEO0FBQ3RELDRFQUE0RDtBQXVDNUQ7O0dBRUc7QUFDSCxNQUFhLE1BQU07O0lBQ1YsTUFBTSxDQUFVLE9BQU8sR0FBUztRQUNyQyxXQUFXLEVBQUUsSUFBSTtRQUNqQixXQUFXLEVBQUUsU0FBUztLQUN2QixDQUFDO0lBRUssTUFBTSxDQUFVLE1BQU0sR0FBUztRQUNwQyxXQUFXLEVBQUUsSUFBSTtRQUNqQixXQUFXLEVBQUUsUUFBUTtLQUN0QixDQUFDO0lBRUY7O09BRUc7SUFDSSxNQUFNLENBQVUsT0FBTyxHQUFTO1FBQ3JDLFdBQVcsRUFBRSxJQUFJO1FBQ2pCLFdBQVcsRUFBRSxRQUFRO0tBQ3RCLENBQUM7SUFFSyxNQUFNLENBQVUsTUFBTSxHQUFTO1FBQ3BDLFdBQVcsRUFBRSxJQUFJO1FBQ2pCLFdBQVcsRUFBRSxRQUFRO0tBQ3RCLENBQUM7SUFFSyxNQUFNLENBQVUsS0FBSyxHQUFTO1FBQ25DLFdBQVcsRUFBRSxJQUFJO1FBQ2pCLFdBQVcsRUFBRSxPQUFPO0tBQ3JCLENBQUM7SUFFRjs7T0FFRztJQUNJLE1BQU0sQ0FBVSxPQUFPLEdBQVM7UUFDckMsV0FBVyxFQUFFLElBQUk7UUFDakIsV0FBVyxFQUFFLEtBQUs7S0FDbkIsQ0FBQztJQUVGOztPQUVHO0lBQ0ksTUFBTSxDQUFVLFNBQVMsR0FBUztRQUN2QyxXQUFXLEVBQUUsSUFBSTtRQUNqQixXQUFXLEVBQUUsVUFBVTtLQUN4QixDQUFDO0lBRUY7O09BRUc7SUFDSSxNQUFNLENBQVUsUUFBUSxHQUFTO1FBQ3RDLFdBQVcsRUFBRSxJQUFJO1FBQ2pCLFdBQVcsRUFBRSxTQUFTO0tBQ3ZCLENBQUM7SUFFRjs7T0FFRztJQUNJLE1BQU0sQ0FBVSxJQUFJLEdBQVM7UUFDbEMsV0FBVyxFQUFFLElBQUk7UUFDakIsV0FBVyxFQUFFLE1BQU07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QkFDMUMsT0FBTyxHQUFHLE1BQU0sQ0FBQyxJQUFJLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNyRCxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUc7U0FDaEIsQ0FBQztLQUNIOztBQXhLSCx3QkF5S0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBVbnNjb3BlZFZhbGlkYXRpb25FcnJvciB9IGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCB7IGxpdCB9IGZyb20gJ2F3cy1jZGstbGliL2NvcmUvbGliL2hlbHBlcnMtaW50ZXJuYWwnO1xuXG4vKipcbiAqIEEgY29sdW1uIG9mIGEgdGFibGUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29sdW1uIHtcbiAgLyoqXG4gICAqIE5hbWUgb2YgdGhlIGNvbHVtbi5cbiAgICovXG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogVHlwZSBvZiB0aGUgY29sdW1uLlxuICAgKi9cbiAgcmVhZG9ubHkgdHlwZTogVHlwZTtcblxuICAvKipcbiAgICogQ29tZW50IGRlc2NyaWJpbmcgdGhlIGNvbHVtbi5cbiAgICpcbiAgICogQGRlZmF1bHQgbm9uZVxuICAgKi9cbiAgcmVhZG9ubHkgY29tbWVudD86IHN0cmluZztcbn1cblxuLyoqXG4gKiBSZXByZXNlbnRzIGEgdHlwZSBvZiBhIGNvbHVtbiBpbiBhIHRhYmxlIHNjaGVtYS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUeXBlIHtcbiAgLyoqXG4gICAqIEluZGljYXRlcyB3aGV0aGVyIHRoaXMgdHlwZSBpcyBhIHByaW1pdGl2ZSBkYXRhIHR5cGUuXG4gICAqL1xuICByZWFkb25seSBpc1ByaW1pdGl2ZTogYm9vbGVhbjtcblxuICAvKipcbiAgICogR2x1ZSBJbnB1dFN0cmluZyBmb3IgdGhpcyB0eXBlLlxuICAgKi9cbiAgcmVhZG9ubHkgaW5wdXRTdHJpbmc6IHN0cmluZztcbn1cblxuLyoqXG4gKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9hdGhlbmEvbGF0ZXN0L3VnL2RhdGEtdHlwZXMuaHRtbFxuICovXG5leHBvcnQgY2xhc3MgU2NoZW1hIHtcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBCT09MRUFOOiBUeXBlID0ge1xuICAgIGlzUHJpbWl0aXZlOiB0cnVlLFxuICAgIGlucHV0U3RyaW5nOiAnYm9vbGVhbicsXG4gIH07XG5cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBCSU5BUlk6IFR5cGUgPSB7XG4gICAgaXNQcmltaXRpdmU6IHRydWUsXG4gICAgaW5wdXRTdHJpbmc6ICdiaW5hcnknLFxuICB9O1xuXG4gIC8qKlxuICAgKiBBIDY0LWJpdCBzaWduZWQgSU5URUdFUiBpbiB0d2/igJlzIGNvbXBsZW1lbnQgZm9ybWF0LCB3aXRoIGEgbWluaW11bSB2YWx1ZSBvZiAtMl42MyBhbmQgYSBtYXhpbXVtIHZhbHVlIG9mIDJeNjMtMS5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgQklHX0lOVDogVHlwZSA9IHtcbiAgICBpc1ByaW1pdGl2ZTogdHJ1ZSxcbiAgICBpbnB1dFN0cmluZzogJ2JpZ2ludCcsXG4gIH07XG5cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBET1VCTEU6IFR5cGUgPSB7XG4gICAgaXNQcmltaXRpdmU6IHRydWUsXG4gICAgaW5wdXRTdHJpbmc6ICdkb3VibGUnLFxuICB9O1xuXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgRkxPQVQ6IFR5cGUgPSB7XG4gICAgaXNQcmltaXRpdmU6IHRydWUsXG4gICAgaW5wdXRTdHJpbmc6ICdmbG9hdCcsXG4gIH07XG5cbiAgLyoqXG4gICAqIEEgMzItYml0IHNpZ25lZCBJTlRFR0VSIGluIHR3b+KAmXMgY29tcGxlbWVudCBmb3JtYXQsIHdpdGggYSBtaW5pbXVtIHZhbHVlIG9mIC0yXjMxIGFuZCBhIG1heGltdW0gdmFsdWUgb2YgMl4zMS0xLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBJTlRFR0VSOiBUeXBlID0ge1xuICAgIGlzUHJpbWl0aXZlOiB0cnVlLFxuICAgIGlucHV0U3RyaW5nOiAnaW50JyxcbiAgfTtcblxuICAvKipcbiAgICogQSAxNi1iaXQgc2lnbmVkIElOVEVHRVIgaW4gdHdv4oCZcyBjb21wbGVtZW50IGZvcm1hdCwgd2l0aCBhIG1pbmltdW0gdmFsdWUgb2YgLTJeMTUgYW5kIGEgbWF4aW11bSB2YWx1ZSBvZiAyXjE1LTEuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFNNQUxMX0lOVDogVHlwZSA9IHtcbiAgICBpc1ByaW1pdGl2ZTogdHJ1ZSxcbiAgICBpbnB1dFN0cmluZzogJ3NtYWxsaW50JyxcbiAgfTtcblxuICAvKipcbiAgICogQSA4LWJpdCBzaWduZWQgSU5URUdFUiBpbiB0d2/igJlzIGNvbXBsZW1lbnQgZm9ybWF0LCB3aXRoIGEgbWluaW11bSB2YWx1ZSBvZiAtMl43IGFuZCBhIG1heGltdW0gdmFsdWUgb2YgMl43LTFcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgVElOWV9JTlQ6IFR5cGUgPSB7XG4gICAgaXNQcmltaXRpdmU6IHRydWUsXG4gICAgaW5wdXRTdHJpbmc6ICd0aW55aW50JyxcbiAgfTtcblxuICAvKipcbiAgICogRGF0ZSB0eXBlLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBEQVRFOiBUeXBlID0ge1xuICAgIGlzUHJpbWl0aXZlOiB0cnVlLFxuICAgIGlucHV0U3RyaW5nOiAnZGF0ZScsXG4gIH07XG5cbiAgLyoqXG4gICAqIFRpbWVzdGFtcCB0eXBlIChkYXRlIGFuZCB0aW1lKS5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgVElNRVNUQU1QOiBUeXBlID0ge1xuICAgIGlzUHJpbWl0aXZlOiB0cnVlLFxuICAgIGlucHV0U3RyaW5nOiAndGltZXN0YW1wJyxcbiAgfTtcblxuICAvKipcbiAgICogQXJiaXRyYXJ5LWxlbmd0aCBzdHJpbmcgdHlwZS5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgU1RSSU5HOiBUeXBlID0ge1xuICAgIGlzUHJpbWl0aXZlOiB0cnVlLFxuICAgIGlucHV0U3RyaW5nOiAnc3RyaW5nJyxcbiAgfTtcblxuICAvKipcbiAgICogQ3JlYXRlcyBhIGRlY2ltYWwgdHlwZS5cbiAgICpcbiAgICogVE9ETzogQm91bmRzXG4gICAqXG4gICAqIEBwYXJhbSBwcmVjaXNpb24gdGhlIHRvdGFsIG51bWJlciBvZiBkaWdpdHNcbiAgICogQHBhcmFtIHNjYWxlIHRoZSBudW1iZXIgb2YgZGlnaXRzIGluIGZyYWN0aW9uYWwgcGFydCwgdGhlIGRlZmF1bHQgaXMgMFxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBkZWNpbWFsKHByZWNpc2lvbjogbnVtYmVyLCBzY2FsZT86IG51bWJlcik6IFR5cGUge1xuICAgIHJldHVybiB7XG4gICAgICBpc1ByaW1pdGl2ZTogdHJ1ZSxcbiAgICAgIGlucHV0U3RyaW5nOiBzY2FsZSAhPT0gdW5kZWZpbmVkID8gYGRlY2ltYWwoJHtwcmVjaXNpb259LCR7c2NhbGV9KWAgOiBgZGVjaW1hbCgke3ByZWNpc2lvbn0pYCxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEZpeGVkIGxlbmd0aCBjaGFyYWN0ZXIgZGF0YSwgd2l0aCBhIHNwZWNpZmllZCBsZW5ndGggYmV0d2VlbiAxIGFuZCAyNTUuXG4gICAqXG4gICAqIEBwYXJhbSBsZW5ndGggbGVuZ3RoIGJldHdlZW4gMSBhbmQgMjU1XG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGNoYXIobGVuZ3RoOiBudW1iZXIpOiBUeXBlIHtcbiAgICBpZiAobGVuZ3RoIDw9IDAgfHwgbGVuZ3RoID4gMjU1KSB7XG4gICAgICB0aHJvdyBuZXcgVW5zY29wZWRWYWxpZGF0aW9uRXJyb3IobGl0YENoYXJMZW5ndGhPdXRPZlJhbmdlYCwgYGNoYXIgbGVuZ3RoIG11c3QgYmUgKGluY2x1c2l2ZWx5KSBiZXR3ZWVuIDEgYW5kIDI1NSwgYnV0IHdhcyAke2xlbmd0aH1gKTtcbiAgICB9XG4gICAgaWYgKGxlbmd0aCAlIDEgIT09IDApIHtcbiAgICAgIHRocm93IG5ldyBVbnNjb3BlZFZhbGlkYXRpb25FcnJvcihsaXRgQ2hhckxlbmd0aE5vdEludGVnZXJgLCBgY2hhciBsZW5ndGggbXVzdCBiZSBhIHBvc2l0aXZlIGludGVnZXIsIHdhcyAke2xlbmd0aH1gKTtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgIGlzUHJpbWl0aXZlOiB0cnVlLFxuICAgICAgaW5wdXRTdHJpbmc6IGBjaGFyKCR7bGVuZ3RofSlgLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogVmFyaWFibGUgbGVuZ3RoIGNoYXJhY3RlciBkYXRhLCB3aXRoIGEgc3BlY2lmaWVkIGxlbmd0aCBiZXR3ZWVuIDEgYW5kIDY1NTM1LlxuICAgKlxuICAgKiBAcGFyYW0gbGVuZ3RoIGxlbmd0aCBiZXR3ZWVuIDEgYW5kIDY1NTM1LlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyB2YXJjaGFyKGxlbmd0aDogbnVtYmVyKTogVHlwZSB7XG4gICAgaWYgKGxlbmd0aCA8PSAwIHx8IGxlbmd0aCA+IDY1NTM1KSB7XG4gICAgICB0aHJvdyBuZXcgVW5zY29wZWRWYWxpZGF0aW9uRXJyb3IobGl0YFZhcmNoYXJMZW5ndGhPdXRPZlJhbmdlYCwgYHZhcmNoYXIgbGVuZ3RoIG11c3QgYmUgKGluY2x1c2l2ZWx5KSBiZXR3ZWVuIDEgYW5kIDY1NTM1LCBidXQgd2FzICR7bGVuZ3RofWApO1xuICAgIH1cbiAgICBpZiAobGVuZ3RoICUgMSAhPT0gMCkge1xuICAgICAgdGhyb3cgbmV3IFVuc2NvcGVkVmFsaWRhdGlvbkVycm9yKGxpdGBWYXJjaGFyTGVuZ3RoTm90SW50ZWdlcmAsIGB2YXJjaGFyIGxlbmd0aCBtdXN0IGJlIGEgcG9zaXRpdmUgaW50ZWdlciwgd2FzICR7bGVuZ3RofWApO1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgaXNQcmltaXRpdmU6IHRydWUsXG4gICAgICBpbnB1dFN0cmluZzogYHZhcmNoYXIoJHtsZW5ndGh9KWAsXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGFuIGFycmF5IG9mIHNvbWUgb3RoZXIgdHlwZS5cbiAgICpcbiAgICogQHBhcmFtIGl0ZW1UeXBlIHR5cGUgY29udGFpbmVkIGJ5IHRoZSBhcnJheS5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgYXJyYXkoaXRlbVR5cGU6IFR5cGUpOiBUeXBlIHtcbiAgICByZXR1cm4ge1xuICAgICAgaXNQcmltaXRpdmU6IGZhbHNlLFxuICAgICAgaW5wdXRTdHJpbmc6IGBhcnJheTwke2l0ZW1UeXBlLmlucHV0U3RyaW5nfT5gLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIG1hcCBvZiBzb21lIHByaW1pdGl2ZSBrZXkgdHlwZSB0byBzb21lIHZhbHVlIHR5cGUuXG4gICAqXG4gICAqIEBwYXJhbSBrZXlUeXBlIHR5cGUgb2Yga2V5LCBtdXN0IGJlIGEgcHJpbWl0aXZlLlxuICAgKiBAcGFyYW0gdmFsdWVUeXBlIHR5cGUgZm8gdGhlIHZhbHVlIGluZGV4ZWQgYnkgdGhlIGtleS5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgbWFwKGtleVR5cGU6IFR5cGUsIHZhbHVlVHlwZTogVHlwZSk6IFR5cGUge1xuICAgIGlmICgha2V5VHlwZS5pc1ByaW1pdGl2ZSkge1xuICAgICAgdGhyb3cgbmV3IFVuc2NvcGVkVmFsaWRhdGlvbkVycm9yKGxpdGBNYXBLZXlUeXBlTm90UHJpbWl0aXZlYCwgYHRoZSBrZXkgdHlwZSBvZiBhICdtYXAnIG11c3QgYmUgYSBwcmltaXRpdmUsIGJ1dCB3YXMgJHtrZXlUeXBlLmlucHV0U3RyaW5nfWApO1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgaXNQcmltaXRpdmU6IGZhbHNlLFxuICAgICAgaW5wdXRTdHJpbmc6IGBtYXA8JHtrZXlUeXBlLmlucHV0U3RyaW5nfSwke3ZhbHVlVHlwZS5pbnB1dFN0cmluZ30+YCxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXN0ZWQgc3RydWN0dXJlIGNvbnRhaW5pbmcgaW5kaXZpZHVhbGx5IG5hbWVkIGFuZCB0eXBlZCBjb2x1bW5zLlxuICAgKlxuICAgKiBAcGFyYW0gY29sdW1ucyB0aGUgY29sdW1ucyBvZiB0aGUgc3RydWN0dXJlLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBzdHJ1Y3QoY29sdW1uczogQ29sdW1uW10pOiBUeXBlIHtcbiAgICByZXR1cm4ge1xuICAgICAgaXNQcmltaXRpdmU6IGZhbHNlLFxuICAgICAgaW5wdXRTdHJpbmc6IGBzdHJ1Y3Q8JHtjb2x1bW5zLm1hcChjb2x1bW4gPT4ge1xuICAgICAgICByZXR1cm4gYCR7Y29sdW1uLm5hbWV9OiR7Y29sdW1uLnR5cGUuaW5wdXRTdHJpbmd9YDtcbiAgICAgIH0pLmpvaW4oJywnKX0+YCxcbiAgICB9O1xuICB9XG59XG4iXX0=
@@ -30,70 +30,64 @@ export declare enum S3EncryptionMode {
30
30
  KMS = "SSE-KMS"
31
31
  }
32
32
  /**
33
- * Encryption mode for CloudWatch Logs.
34
- * @see https://docs.aws.amazon.com/glue/latest/webapi/API_CloudWatchEncryption.html#Glue-Type-CloudWatchEncryption-CloudWatchEncryptionMode
33
+ * S3 encryption configuration for a `SecurityConfiguration`.
34
+ *
35
+ * Use {@link S3Encryption.s3Managed} for SSE-S3 or {@link S3Encryption.kms} for
36
+ * SSE-KMS. Because these are separate factories, a KMS key can never be paired
37
+ * with S3-managed encryption.
35
38
  */
36
- export declare enum CloudWatchEncryptionMode {
39
+ export declare class S3Encryption {
37
40
  /**
38
- * Server-side encryption (SSE) with an AWS KMS key managed by the account owner.
41
+ * Server-side encryption (SSE) with an Amazon S3-managed key.
39
42
  *
40
- * @see https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingKMSEncryption.html
43
+ * @see https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingServerSideEncryption.html
41
44
  */
42
- KMS = "SSE-KMS"
43
- }
44
- /**
45
- * Encryption mode for Job Bookmarks.
46
- * @see https://docs.aws.amazon.com/glue/latest/webapi/API_JobBookmarksEncryption.html#Glue-Type-JobBookmarksEncryption-JobBookmarksEncryptionMode
47
- */
48
- export declare enum JobBookmarksEncryptionMode {
45
+ static s3Managed(): S3Encryption;
49
46
  /**
50
- * Client-side encryption (CSE) with an AWS KMS key managed by the account owner.
47
+ * Server-side encryption (SSE) with an AWS KMS key managed by the account owner.
51
48
  *
52
- * @see https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingClientSideEncryption.html
53
- */
54
- CLIENT_SIDE_KMS = "CSE-KMS"
55
- }
56
- /**
57
- * S3 encryption configuration.
58
- */
59
- export interface S3Encryption {
60
- /**
61
- * Encryption mode.
62
- */
63
- readonly mode: S3EncryptionMode;
64
- /**
65
- * The KMS key to be used to encrypt the data.
66
- * @default no kms key if mode = S3_MANAGED. A key will be created if one is not provided and mode = KMS.
49
+ * @param kmsKey the KMS key used to encrypt the data. A key is created if one is not provided.
50
+ * @see https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingKMSEncryption.html
67
51
  */
68
- readonly kmsKey?: kms.IKeyRef;
52
+ static kms(kmsKey?: kms.IKeyRef): S3Encryption;
53
+ /** @internal */
54
+ readonly _mode: S3EncryptionMode;
55
+ /** @internal */
56
+ readonly _kmsKey?: kms.IKeyRef;
57
+ private constructor();
69
58
  }
70
59
  /**
71
- * CloudWatch Logs encryption configuration.
60
+ * CloudWatch Logs encryption configuration for a `SecurityConfiguration`.
61
+ *
62
+ * CloudWatch Logs support only server-side encryption with a KMS key.
72
63
  */
73
- export interface CloudWatchEncryption {
74
- /**
75
- * Encryption mode
76
- */
77
- readonly mode: CloudWatchEncryptionMode;
64
+ export declare class CloudWatchEncryption {
78
65
  /**
79
- * The KMS key to be used to encrypt the data.
80
- * @default A key will be created if one is not provided.
66
+ * Server-side encryption (SSE) with an AWS KMS key managed by the account owner.
67
+ *
68
+ * @param kmsKey the KMS key used to encrypt the data. A key is created if one is not provided.
81
69
  */
82
- readonly kmsKey?: kms.IKeyRef;
70
+ static kms(kmsKey?: kms.IKeyRef): CloudWatchEncryption;
71
+ /** @internal */
72
+ readonly _kmsKey?: kms.IKeyRef;
73
+ private constructor();
83
74
  }
84
75
  /**
85
- * Job bookmarks encryption configuration.
76
+ * Job bookmarks encryption configuration for a `SecurityConfiguration`.
77
+ *
78
+ * Job bookmarks support only client-side encryption with a KMS key.
86
79
  */
87
- export interface JobBookmarksEncryption {
88
- /**
89
- * Encryption mode.
90
- */
91
- readonly mode: JobBookmarksEncryptionMode;
80
+ export declare class JobBookmarksEncryption {
92
81
  /**
93
- * The KMS key to be used to encrypt the data.
94
- * @default A key will be created if one is not provided.
82
+ * Client-side encryption (CSE) with an AWS KMS key managed by the account owner.
83
+ *
84
+ * @param kmsKey the KMS key used to encrypt the data. A key is created if one is not provided.
85
+ * @see https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingClientSideEncryption.html
95
86
  */
96
- readonly kmsKey?: kms.IKeyRef;
87
+ static clientSideKms(kmsKey?: kms.IKeyRef): JobBookmarksEncryption;
88
+ /** @internal */
89
+ readonly _kmsKey?: kms.IKeyRef;
90
+ private constructor();
97
91
  }
98
92
  /**
99
93
  * Constructions properties of `SecurityConfiguration`.
@@ -67,7 +67,7 @@ var __importStar = (this && this.__importStar) || (function () {
67
67
  };
68
68
  })();
69
69
  Object.defineProperty(exports, "__esModule", { value: true });
70
- exports.SecurityConfiguration = exports.JobBookmarksEncryptionMode = exports.CloudWatchEncryptionMode = exports.S3EncryptionMode = void 0;
70
+ exports.SecurityConfiguration = exports.JobBookmarksEncryption = exports.CloudWatchEncryption = exports.S3Encryption = exports.S3EncryptionMode = void 0;
71
71
  const jsiiDeprecationWarnings = require("../.warnings.jsii.js");
72
72
  const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
73
73
  const aws_glue_1 = require("aws-cdk-lib/aws-glue");
@@ -96,32 +96,90 @@ var S3EncryptionMode;
96
96
  */
97
97
  S3EncryptionMode["KMS"] = "SSE-KMS";
98
98
  })(S3EncryptionMode || (exports.S3EncryptionMode = S3EncryptionMode = {}));
99
+ // CloudWatch Logs support only SSE-KMS; Job Bookmarks support only CSE-KMS.
100
+ const CLOUD_WATCH_ENCRYPTION_MODE = 'SSE-KMS';
101
+ const JOB_BOOKMARKS_ENCRYPTION_MODE = 'CSE-KMS';
99
102
  /**
100
- * Encryption mode for CloudWatch Logs.
101
- * @see https://docs.aws.amazon.com/glue/latest/webapi/API_CloudWatchEncryption.html#Glue-Type-CloudWatchEncryption-CloudWatchEncryptionMode
103
+ * S3 encryption configuration for a `SecurityConfiguration`.
104
+ *
105
+ * Use {@link S3Encryption.s3Managed} for SSE-S3 or {@link S3Encryption.kms} for
106
+ * SSE-KMS. Because these are separate factories, a KMS key can never be paired
107
+ * with S3-managed encryption.
102
108
  */
103
- var CloudWatchEncryptionMode;
104
- (function (CloudWatchEncryptionMode) {
109
+ class S3Encryption {
110
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-glue-alpha.S3Encryption", version: "2.266.0-alpha.0" };
111
+ /**
112
+ * Server-side encryption (SSE) with an Amazon S3-managed key.
113
+ *
114
+ * @see https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingServerSideEncryption.html
115
+ */
116
+ static s3Managed() {
117
+ return new S3Encryption(S3EncryptionMode.S3_MANAGED, undefined);
118
+ }
105
119
  /**
106
120
  * Server-side encryption (SSE) with an AWS KMS key managed by the account owner.
107
121
  *
122
+ * @param kmsKey the KMS key used to encrypt the data. A key is created if one is not provided.
108
123
  * @see https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingKMSEncryption.html
109
124
  */
110
- CloudWatchEncryptionMode["KMS"] = "SSE-KMS";
111
- })(CloudWatchEncryptionMode || (exports.CloudWatchEncryptionMode = CloudWatchEncryptionMode = {}));
125
+ static kms(kmsKey) {
126
+ return new S3Encryption(S3EncryptionMode.KMS, kmsKey);
127
+ }
128
+ /** @internal */
129
+ _mode;
130
+ /** @internal */
131
+ _kmsKey;
132
+ constructor(mode, kmsKey) {
133
+ this._mode = mode;
134
+ this._kmsKey = kmsKey;
135
+ }
136
+ }
137
+ exports.S3Encryption = S3Encryption;
138
+ /**
139
+ * CloudWatch Logs encryption configuration for a `SecurityConfiguration`.
140
+ *
141
+ * CloudWatch Logs support only server-side encryption with a KMS key.
142
+ */
143
+ class CloudWatchEncryption {
144
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-glue-alpha.CloudWatchEncryption", version: "2.266.0-alpha.0" };
145
+ /**
146
+ * Server-side encryption (SSE) with an AWS KMS key managed by the account owner.
147
+ *
148
+ * @param kmsKey the KMS key used to encrypt the data. A key is created if one is not provided.
149
+ */
150
+ static kms(kmsKey) {
151
+ return new CloudWatchEncryption(kmsKey);
152
+ }
153
+ /** @internal */
154
+ _kmsKey;
155
+ constructor(kmsKey) {
156
+ this._kmsKey = kmsKey;
157
+ }
158
+ }
159
+ exports.CloudWatchEncryption = CloudWatchEncryption;
112
160
  /**
113
- * Encryption mode for Job Bookmarks.
114
- * @see https://docs.aws.amazon.com/glue/latest/webapi/API_JobBookmarksEncryption.html#Glue-Type-JobBookmarksEncryption-JobBookmarksEncryptionMode
161
+ * Job bookmarks encryption configuration for a `SecurityConfiguration`.
162
+ *
163
+ * Job bookmarks support only client-side encryption with a KMS key.
115
164
  */
116
- var JobBookmarksEncryptionMode;
117
- (function (JobBookmarksEncryptionMode) {
165
+ class JobBookmarksEncryption {
166
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-glue-alpha.JobBookmarksEncryption", version: "2.266.0-alpha.0" };
118
167
  /**
119
168
  * Client-side encryption (CSE) with an AWS KMS key managed by the account owner.
120
169
  *
170
+ * @param kmsKey the KMS key used to encrypt the data. A key is created if one is not provided.
121
171
  * @see https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingClientSideEncryption.html
122
172
  */
123
- JobBookmarksEncryptionMode["CLIENT_SIDE_KMS"] = "CSE-KMS";
124
- })(JobBookmarksEncryptionMode || (exports.JobBookmarksEncryptionMode = JobBookmarksEncryptionMode = {}));
173
+ static clientSideKms(kmsKey) {
174
+ return new JobBookmarksEncryption(kmsKey);
175
+ }
176
+ /** @internal */
177
+ _kmsKey;
178
+ constructor(kmsKey) {
179
+ this._kmsKey = kmsKey;
180
+ }
181
+ }
182
+ exports.JobBookmarksEncryption = JobBookmarksEncryption;
125
183
  /**
126
184
  * A security configuration is a set of security properties that can be used by AWS Glue to encrypt data at rest.
127
185
  *
@@ -149,7 +207,7 @@ let SecurityConfiguration = (() => {
149
207
  SecurityConfiguration = _classThis = _classDescriptor.value;
150
208
  if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
151
209
  }
152
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-glue-alpha.SecurityConfiguration", version: "2.265.0-alpha.0" };
210
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-glue-alpha.SecurityConfiguration", version: "2.266.0-alpha.0" };
153
211
  /** Uniquely identifies this class. */
154
212
  static PROPERTY_INJECTION_ID = '@aws-cdk.aws-glue-alpha.SecurityConfiguration';
155
213
  /**
@@ -199,34 +257,34 @@ let SecurityConfiguration = (() => {
199
257
  if (!props.s3Encryption && !props.cloudWatchEncryption && !props.jobBookmarksEncryption) {
200
258
  throw new cdk.ValidationError((0, helpers_internal_1.lit) `EncryptionRequired`, 'One of cloudWatchEncryption, jobBookmarksEncryption or s3Encryption must be defined', this);
201
259
  }
202
- const kmsKeyCreationRequired = (props.s3Encryption && props.s3Encryption.mode === S3EncryptionMode.KMS && !props.s3Encryption.kmsKey) ||
203
- (props.cloudWatchEncryption && !props.cloudWatchEncryption.kmsKey) ||
204
- (props.jobBookmarksEncryption && !props.jobBookmarksEncryption.kmsKey);
260
+ const kmsKeyCreationRequired = (props.s3Encryption && props.s3Encryption._mode === S3EncryptionMode.KMS && !props.s3Encryption._kmsKey) ||
261
+ (props.cloudWatchEncryption && !props.cloudWatchEncryption._kmsKey) ||
262
+ (props.jobBookmarksEncryption && !props.jobBookmarksEncryption._kmsKey);
205
263
  const autoCreatedKmsKey = kmsKeyCreationRequired ? new kms.Key(this, 'Key', { enableKeyRotation: true }) : undefined;
206
264
  let cloudWatchEncryption;
207
265
  if (props.cloudWatchEncryption) {
208
- this.cloudWatchEncryptionKey = props.cloudWatchEncryption.kmsKey || autoCreatedKmsKey;
266
+ this.cloudWatchEncryptionKey = props.cloudWatchEncryption._kmsKey || autoCreatedKmsKey;
209
267
  cloudWatchEncryption = {
210
- cloudWatchEncryptionMode: props.cloudWatchEncryption.mode,
268
+ cloudWatchEncryptionMode: CLOUD_WATCH_ENCRYPTION_MODE,
211
269
  kmsKeyArn: this.cloudWatchEncryptionKey?.keyRef.keyArn,
212
270
  };
213
271
  }
214
272
  let jobBookmarksEncryption;
215
273
  if (props.jobBookmarksEncryption) {
216
- this.jobBookmarksEncryptionKey = props.jobBookmarksEncryption.kmsKey || autoCreatedKmsKey;
274
+ this.jobBookmarksEncryptionKey = props.jobBookmarksEncryption._kmsKey || autoCreatedKmsKey;
217
275
  jobBookmarksEncryption = {
218
- jobBookmarksEncryptionMode: props.jobBookmarksEncryption.mode,
276
+ jobBookmarksEncryptionMode: JOB_BOOKMARKS_ENCRYPTION_MODE,
219
277
  kmsKeyArn: this.jobBookmarksEncryptionKey?.keyRef.keyArn,
220
278
  };
221
279
  }
222
280
  let s3Encryptions;
223
281
  if (props.s3Encryption) {
224
- if (props.s3Encryption.mode === S3EncryptionMode.KMS) {
225
- this.s3EncryptionKey = props.s3Encryption.kmsKey || autoCreatedKmsKey;
282
+ if (props.s3Encryption._mode === S3EncryptionMode.KMS) {
283
+ this.s3EncryptionKey = props.s3Encryption._kmsKey || autoCreatedKmsKey;
226
284
  }
227
285
  // NOTE: CloudFormations errors out if array is of length > 1. That's why the props don't expose an array
228
286
  s3Encryptions = [{
229
- s3EncryptionMode: props.s3Encryption.mode,
287
+ s3EncryptionMode: props.s3Encryption._mode,
230
288
  kmsKeyArn: this.s3EncryptionKey?.keyRef.keyArn,
231
289
  }];
232
290
  }
@@ -251,4 +309,4 @@ let SecurityConfiguration = (() => {
251
309
  return SecurityConfiguration = _classThis;
252
310
  })();
253
311
  exports.SecurityConfiguration = SecurityConfiguration;
254
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VjdXJpdHktY29uZmlndXJhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInNlY3VyaXR5LWNvbmZpZ3VyYXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsbURBQWdFO0FBQ2hFLHlEQUEyQztBQUMzQyxzREFBd0M7QUFDeEMsMkNBQStDO0FBQy9DLDRFQUE0RTtBQUM1RSw4RUFBOEU7QUFDOUUsMEVBQTBFO0FBYzFFOzs7R0FHRztBQUNILElBQVksZ0JBY1g7QUFkRCxXQUFZLGdCQUFnQjtJQUMxQjs7OztPQUlHO0lBQ0gseUNBQXFCLENBQUE7SUFFckI7Ozs7T0FJRztJQUNILG1DQUFlLENBQUE7QUFDakIsQ0FBQyxFQWRXLGdCQUFnQixnQ0FBaEIsZ0JBQWdCLFFBYzNCO0FBRUQ7OztHQUdHO0FBQ0gsSUFBWSx3QkFPWDtBQVBELFdBQVksd0JBQXdCO0lBQ2xDOzs7O09BSUc7SUFDSCwyQ0FBZSxDQUFBO0FBQ2pCLENBQUMsRUFQVyx3QkFBd0Isd0NBQXhCLHdCQUF3QixRQU9uQztBQUVEOzs7R0FHRztBQUNILElBQVksMEJBT1g7QUFQRCxXQUFZLDBCQUEwQjtJQUNwQzs7OztPQUlHO0lBQ0gseURBQTJCLENBQUE7QUFDN0IsQ0FBQyxFQVBXLDBCQUEwQiwwQ0FBMUIsMEJBQTBCLFFBT3JDO0FBdUZEOzs7Ozs7OztHQVFHO0lBRVUscUJBQXFCOzRCQURqQyxvQ0FBa0I7Ozs7c0JBQ3dCLEdBQUcsQ0FBQyxRQUFROzs7cUNBQXBCLFNBQVEsV0FBWTs7Ozt5REFvR3BELGlDQUFjO1lBQ2Ysa09BQVcseUJBQXlCLDZEQUVuQztZQXZHSCw2S0F3R0M7Ozs7O1FBdkdDLHNDQUFzQztRQUMvQixNQUFNLENBQVUscUJBQXFCLEdBQVcsK0NBQStDLENBQUM7UUFFdkc7Ozs7OztXQU1HO1FBQ0ksTUFB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SSxhQUFhLENBQUM7WUFDbEIsSUFBSSxLQUFLLENBQUMsWUFBWSxFQUFFLENBQUM7Z0JBQ3ZCLElBQUksS0FBSyxDQUFDLFlBQVksQ0FBQyxJQUFJLEtBQUssZ0JBQWdCLENBQUMsR0FBRyxFQUFFLENBQUM7b0JBQ3JELElBQUksQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFDLFlBQVksQ0FBQyxNQUFNLElBQUksaUJBQWlCLENBQUM7Z0JBQ3hFLENBQUM7Z0JBQ0QseUdBQXlHO2dCQUN6RyxhQUFhLEdBQUcsQ0FBQzt3QkFDZixnQkFBZ0IsRUFBRSxLQUFLLENBQUMsWUFBWSxDQUFDLElBQUk7d0JBQ3pDLFNBQVMsRUFBRSxJQUFJLENBQUMsZUFBZSxFQUFFLE1BQU0sQ0FBQyxNQUFNO3FCQUMvQyxDQUFDLENBQUM7WUFDTCxDQUFDO1lBRUQsTUFBTSxRQUFRLEdBQUcsSUFBSSxtQ0FBd0IsQ0FBQyxJQUFJLEVBQUUsVUFBVSxFQUFFO2dCQUM5RCxJQUFJLEVBQUUsSUFBSSxDQUFDLFlBQVk7Z0JBQ3ZCLHVCQUF1QixFQUFFO29CQUN2QixvQkFBb0I7b0JBQ3BCLHNCQUFzQjtvQkFDdEIsYUFBYTtpQkFDZDthQUNGLENBQUMsQ0FBQztZQUVILElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO1lBRXpCLElBQUksQ0FBQyxRQUFRLENBQUMsa0JBQWtCLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1NBQ3ZEO1FBR0QsSUFBVyx5QkFBeUI7WUFDbEMsT0FBTyxJQUFJLENBQUMsd0JBQXdCLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUN6RDs7WUF2R1UsdURBQXFCOzs7OztBQUFyQixzREFBcUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDZm5TZWN1cml0eUNvbmZpZ3VyYXRpb24gfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtZ2x1ZSc7XG5pbXBvcnQgKiBhcyBrbXMgZnJvbSAnYXdzLWNkay1saWIvYXdzLWttcyc7XG5pbXBvcnQgKiBhcyBjZGsgZnJvbSAnYXdzLWNkay1saWIvY29yZSc7XG5pbXBvcnQgeyBMYXp5LCBOYW1lcyB9IGZyb20gJ2F3cy1jZGstbGliL2NvcmUnO1xuaW1wb3J0IHsgbWVtb2l6ZWRHZXR0ZXIsIGxpdCB9IGZyb20gJ2F3cy1jZGstbGliL2NvcmUvbGliL2hlbHBlcnMtaW50ZXJuYWwnO1xuaW1wb3J0IHsgYWRkQ29uc3RydWN0TWV0YWRhdGEgfSBmcm9tICdhd3MtY2RrLWxpYi9jb3JlL2xpYi9tZXRhZGF0YS1yZXNvdXJjZSc7XG5pbXBvcnQgeyBwcm9wZXJ0eUluamVjdGFibGUgfSBmcm9tICdhd3MtY2RrLWxpYi9jb3JlL2xpYi9wcm9wLWluamVjdGFibGUnO1xuaW1wb3J0IHR5cGUgKiBhcyBjb25zdHJ1Y3RzIGZyb20gJ2NvbnN0cnVjdHMnO1xuXG4vKipcbiAqIEludGVyZmFjZSByZXByZXNlbnRpbmcgYSBjcmVhdGVkIG9yIGFuIGltcG9ydGVkIGBTZWN1cml0eUNvbmZpZ3VyYXRpb25gLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIElTZWN1cml0eUNvbmZpZ3VyYXRpb24gZXh0ZW5kcyBjZGsuSVJlc291cmNlIHtcbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBzZWN1cml0eSBjb25maWd1cmF0aW9uLlxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICByZWFkb25seSBzZWN1cml0eUNvbmZpZ3VyYXRpb25OYW1lOiBzdHJpbmc7XG59XG5cbi8qKlxuICogRW5jcnlwdGlvbiBtb2RlIGZvciBTMy5cbiAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2dsdWUvbGF0ZXN0L3dlYmFwaS9BUElfUzNFbmNyeXB0aW9uLmh0bWwjR2x1ZS1UeXBlLVMzRW5jcnlwdGlvbi1TM0VuY3J5cHRpb25Nb2RlXG4gKi9cbmV4cG9ydCBlbnVtIFMzRW5jcnlwdGlvbk1vZGUge1xuICAvKipcbiAgICogU2VydmVyIHNpZGUgZW5jcnlwdGlvbiAoU1NFKSB3aXRoIGFuIEFtYXpvbiBTMy1tYW5hZ2VkIGtleS5cbiAgICpcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUzMvbGF0ZXN0L2Rldi9Vc2luZ1NlcnZlclNpZGVFbmNyeXB0aW9uLmh0bWxcbiAgICovXG4gIFMzX01BTkFHRUQgPSAnU1NFLVMzJyxcblxuICAvKipcbiAgICogU2VydmVyLXNpZGUgZW5jcnlwdGlvbiAoU1NFKSB3aXRoIGFuIEFXUyBLTVMga2V5IG1hbmFnZWQgYnkgdGhlIGFjY291bnQgb3duZXIuXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvblMzL2xhdGVzdC9kZXYvVXNpbmdLTVNFbmNyeXB0aW9uLmh0bWxcbiAgICovXG4gIEtNUyA9ICdTU0UtS01TJyxcbn1cblxuLyoqXG4gKiBFbmNyeXB0aW9uIG1vZGUgZm9yIENsb3VkV2F0Y2ggTG9ncy5cbiAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2dsdWUvbGF0ZXN0L3dlYmFwaS9BUElfQ2xvdWRXYXRjaEVuY3J5cHRpb24uaHRtbCNHbHVlLVR5cGUtQ2xvdWRXYXRjaEVuY3J5cHRpb24tQ2xvdWRXYXRjaEVuY3J5cHRpb25Nb2RlXG4gKi9cbmV4cG9ydCBlbnVtIENsb3VkV2F0Y2hFbmNyeXB0aW9uTW9kZSB7XG4gIC8qKlxuICAgKiBTZXJ2ZXItc2lkZSBlbmNyeXB0aW9uIChTU0UpIHdpdGggYW4gQVdTIEtNUyBrZXkgbWFuYWdlZCBieSB0aGUgYWNjb3VudCBvd25lci5cbiAgICpcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUzMvbGF0ZXN0L2Rldi9Vc2luZ0tNU0VuY3J5cHRpb24uaHRtbFxuICAgKi9cbiAgS01TID0gJ1NTRS1LTVMnLFxufVxuXG4vKipcbiAqIEVuY3J5cHRpb24gbW9kZSBmb3IgSm9iIEJvb2ttYXJrcy5cbiAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2dsdWUvbGF0ZXN0L3dlYmFwaS9BUElfSm9iQm9va21hcmtzRW5jcnlwdGlvbi5odG1sI0dsdWUtVHlwZS1Kb2JCb29rbWFya3NFbmNyeXB0aW9uLUpvYkJvb2ttYXJrc0VuY3J5cHRpb25Nb2RlXG4gKi9cbmV4cG9ydCBlbnVtIEpvYkJvb2ttYXJrc0VuY3J5cHRpb25Nb2RlIHtcbiAgLyoqXG4gICAqIENsaWVudC1zaWRlIGVuY3J5cHRpb24gKENTRSkgd2l0aCBhbiBBV1MgS01TIGtleSBtYW5hZ2VkIGJ5IHRoZSBhY2NvdW50IG93bmVyLlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25TMy9sYXRlc3QvZGV2L1VzaW5nQ2xpZW50U2lkZUVuY3J5cHRpb24uaHRtbFxuICAgKi9cbiAgQ0xJRU5UX1NJREVfS01TID0gJ0NTRS1LTVMnLFxufVxuXG4vKipcbiAqIFMzIGVuY3J5cHRpb24gY29uZmlndXJhdGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTM0VuY3J5cHRpb24ge1xuICAvKipcbiAgICogRW5jcnlwdGlvbiBtb2RlLlxuICAgKi9cbiAgcmVhZG9ubHkgbW9kZTogUzNFbmNyeXB0aW9uTW9kZTtcblxuICAvKipcbiAgICogVGhlIEtNUyBrZXkgdG8gYmUgdXNlZCB0byBlbmNyeXB0IHRoZSBkYXRhLlxuICAgKiBAZGVmYXVsdCBubyBrbXMga2V5IGlmIG1vZGUgPSBTM19NQU5BR0VELiBBIGtleSB3aWxsIGJlIGNyZWF0ZWQgaWYgb25lIGlzIG5vdCBwcm92aWRlZCBhbmQgbW9kZSA9IEtNUy5cbiAgICovXG4gIHJlYWRvbmx5IGttc0tleT86IGttcy5JS2V5UmVmO1xufVxuXG4vKipcbiAqIENsb3VkV2F0Y2ggTG9ncyBlbmNyeXB0aW9uIGNvbmZpZ3VyYXRpb24uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ2xvdWRXYXRjaEVuY3J5cHRpb24ge1xuICAvKipcbiAgICogRW5jcnlwdGlvbiBtb2RlXG4gICAqL1xuICByZWFkb25seSBtb2RlOiBDbG91ZFdhdGNoRW5jcnlwdGlvbk1vZGU7XG5cbiAgLyoqXG4gICAqIFRoZSBLTVMga2V5IHRvIGJlIHVzZWQgdG8gZW5jcnlwdCB0aGUgZGF0YS5cbiAgICogQGRlZmF1bHQgQSBrZXkgd2lsbCBiZSBjcmVhdGVkIGlmIG9uZSBpcyBub3QgcHJvdmlkZWQuXG4gICAqL1xuICByZWFkb25seSBrbXNLZXk/OiBrbXMuSUtleVJlZjtcbn1cblxuLyoqXG4gKiBKb2IgYm9va21hcmtzIGVuY3J5cHRpb24gY29uZmlndXJhdGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBKb2JCb29rbWFya3NFbmNyeXB0aW9uIHtcbiAgLyoqXG4gICAqIEVuY3J5cHRpb24gbW9kZS5cbiAgICovXG4gIHJlYWRvbmx5IG1vZGU6IEpvYkJvb2ttYXJrc0VuY3J5cHRpb25Nb2RlO1xuXG4gIC8qKlxuICAgKiBUaGUgS01TIGtleSB0byBiZSB1c2VkIHRvIGVuY3J5cHQgdGhlIGRhdGEuXG4gICAqIEBkZWZhdWx0IEEga2V5IHdpbGwgYmUgY3JlYXRlZCBpZiBvbmUgaXMgbm90IHByb3ZpZGVkLlxuICAgKi9cbiAgcmVhZG9ubHkga21zS2V5Pzoga21zLklLZXlSZWY7XG59XG5cbi8qKlxuICogQ29uc3RydWN0aW9ucyBwcm9wZXJ0aWVzIG9mIGBTZWN1cml0eUNvbmZpZ3VyYXRpb25gLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFNlY3VyaXR5Q29uZmlndXJhdGlvblByb3BzIHtcbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBzZWN1cml0eSBjb25maWd1cmF0aW9uLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGdlbmVyYXRlZCBieSBDREsuXG4gICAqL1xuICByZWFkb25seSBzZWN1cml0eUNvbmZpZ3VyYXRpb25OYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgZW5jcnlwdGlvbiBjb25maWd1cmF0aW9uIGZvciBBbWF6b24gQ2xvdWRXYXRjaCBMb2dzLlxuICAgKiBAZGVmYXVsdCBubyBjbG91ZHdhdGNoIGxvZ3MgZW5jcnlwdGlvbi5cbiAgICovXG4gIHJlYWRvbmx5IGNsb3VkV2F0Y2hFbmNyeXB0aW9uPzogQ2xvdWRXYXRjaEVuY3J5cHRpb247XG5cbiAgLyoqXG4gICAqIFRoZSBlbmNyeXB0aW9uIGNvbmZpZ3VyYXRpb24gZm9yIEdsdWUgSm9iIEJvb2ttYXJrcy5cbiAgICogQGRlZmF1bHQgbm8gam9iIGJvb2ttYXJrcyBlbmNyeXB0aW9uLlxuICAgKi9cbiAgcmVhZG9ubHkgam9iQm9va21hcmtzRW5jcnlwdGlvbj86IEpvYkJvb2ttYXJrc0VuY3J5cHRpb247XG5cbiAgLyoqXG4gICAqIFRoZSBlbmNyeXB0aW9uIGNvbmZpZ3VyYXRpb24gZm9yIEFtYXpvbiBTaW1wbGUgU3RvcmFnZSBTZXJ2aWNlIChBbWF6b24gUzMpIGRhdGEuXG4gICAqIEBkZWZhdWx0IG5vIHMzIGVuY3J5cHRpb24uXG4gICAqL1xuICByZWFkb25seSBzM0VuY3J5cHRpb24/OiBTM0VuY3J5cHRpb247XG5cbiAgLyoqXG4gICAqIFBvbGljeSB0byBhcHBseSB3aGVuIHRoZSBzZWN1cml0eSBjb25maWd1cmF0aW9uIGlzIHJlbW92ZWQgZnJvbSB0aGUgc3RhY2suXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gcmVzb3VyY2Ugd2lsbCBiZSBkZXN0cm95ZWRcbiAgICovXG4gIHJlYWRvbmx5IHJlbW92YWxQb2xpY3k/OiBjZGsuUmVtb3ZhbFBvbGljeTtcbn1cblxuLyoqXG4gKiBBIHNlY3VyaXR5IGNvbmZpZ3VyYXRpb24gaXMgYSBzZXQgb2Ygc2VjdXJpdHkgcHJvcGVydGllcyB0aGF0IGNhbiBiZSB1c2VkIGJ5IEFXUyBHbHVlIHRvIGVuY3J5cHQgZGF0YSBhdCByZXN0LlxuICpcbiAqIFRoZSBmb2xsb3dpbmcgc2NlbmFyaW9zIHNob3cgc29tZSBvZiB0aGUgd2F5cyB0aGF0IHlvdSBjYW4gdXNlIGEgc2VjdXJpdHkgY29uZmlndXJhdGlvbi5cbiAqIC0gQXR0YWNoIGEgc2VjdXJpdHkgY29uZmlndXJhdGlvbiB0byBhbiBBV1MgR2x1ZSBjcmF3bGVyIHRvIHdyaXRlIGVuY3J5cHRlZCBBbWF6b24gQ2xvdWRXYXRjaCBMb2dzLlxuICogLSBBdHRhY2ggYSBzZWN1cml0eSBjb25maWd1cmF0aW9uIHRvIGFuIGV4dHJhY3QsIHRyYW5zZm9ybSwgYW5kIGxvYWQgKEVUTCkgam9iIHRvIHdyaXRlIGVuY3J5cHRlZCBBbWF6b24gU2ltcGxlIFN0b3JhZ2UgU2VydmljZSAoQW1hem9uIFMzKSB0YXJnZXRzIGFuZCBlbmNyeXB0ZWQgQ2xvdWRXYXRjaCBMb2dzLlxuICogLSBBdHRhY2ggYSBzZWN1cml0eSBjb25maWd1cmF0aW9uIHRvIGFuIEVUTCBqb2IgdG8gd3JpdGUgaXRzIGpvYnMgYm9va21hcmtzIGFzIGVuY3J5cHRlZCBBbWF6b24gUzMgZGF0YS5cbiAqIC0gQXR0YWNoIGEgc2VjdXJpdHkgY29uZmlndXJhdGlvbiB0byBhIGRldmVsb3BtZW50IGVuZHBvaW50IHRvIHdyaXRlIGVuY3J5cHRlZCBBbWF6b24gUzMgdGFyZ2V0cy5cbiAqL1xuQHByb3BlcnR5SW5qZWN0YWJsZVxuZXhwb3J0IGNsYXNzIFNlY3VyaXR5Q29uZmlndXJhdGlvbiBleHRlbmRzIGNkay5SZXNvdXJjZSBpbXBsZW1lbnRzIElTZWN1cml0eUNvbmZpZ3VyYXRpb24ge1xuICAvKiogVW5pcXVlbHkgaWRlbnRpZmllcyB0aGlzIGNsYXNzLiAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFBST1BFUlRZX0lOSkVDVElPTl9JRDogc3RyaW5nID0gJ0Bhd3MtY2RrLmF3cy1nbHVlLWFscGhhLlNlY3VyaXR5Q29uZmlndXJhdGlvbic7XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBDb25uZWN0aW9uIGNvbnN0cnVjdCB0aGF0IHJlcHJlc2VudHMgYW4gZXh0ZXJuYWwgc2VjdXJpdHkgY29uZmlndXJhdGlvbi5cbiAgICpcbiAgICogQHBhcmFtIHNjb3BlIFRoZSBzY29wZSBjcmVhdGluZyBjb25zdHJ1Y3QgKHVzdWFsbHkgYHRoaXNgKS5cbiAgICogQHBhcmFtIGlkIFRoZSBjb25zdHJ1Y3QncyBpZC5cbiAgICogQHBhcmFtIHNlY3VyaXR5Q29uZmlndXJhdGlvbk5hbWUgbmFtZSBvZiBleHRlcm5hbCBzZWN1cml0eSBjb25maWd1cmF0aW9uLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBmcm9tU2VjdXJpdHlDb25maWd1cmF0aW9uTmFtZShzY29wZTogY29uc3RydWN0cy5Db25zdHJ1Y3QsIGlkOiBzdHJpbmcsXG4gICAgc2VjdXJpdHlDb25maWd1cmF0aW9uTmFtZTogc3RyaW5nKTogSVNlY3VyaXR5Q29uZmlndXJhdGlvbiB7XG4gICAgY2xhc3MgSW1wb3J0IGV4dGVuZHMgY2RrLlJlc291cmNlIGltcGxlbWVudHMgSVNlY3VyaXR5Q29uZmlndXJhdGlvbiB7XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgc2VjdXJpdHlDb25maWd1cmF0aW9uTmFtZSA9IHNlY3VyaXR5Q29uZmlndXJhdGlvbk5hbWU7XG4gICAgfVxuICAgIHJldHVybiBuZXcgSW1wb3J0KHNjb3BlLCBpZCk7XG4gIH1cblxuICAvKipcbiAgICogVGhlIEtNUyBrZXkgdXNlZCBpbiBDbG91ZFdhdGNoIGVuY3J5cHRpb24gaWYgaXQgcmVxdWlyZXMgYSBrbXMga2V5LlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGNsb3VkV2F0Y2hFbmNyeXB0aW9uS2V5Pzoga21zLklLZXlSZWY7XG5cbiAgLyoqXG4gICAqIFRoZSBLTVMga2V5IHVzZWQgaW4gam9iIGJvb2ttYXJrcyBlbmNyeXB0aW9uIGlmIGl0IHJlcXVpcmVzIGEga21zIGtleS5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBqb2JCb29rbWFya3NFbmNyeXB0aW9uS2V5Pzoga21zLklLZXlSZWY7XG5cbiAgLyoqXG4gICAqIFRoZSBLTVMga2V5IHVzZWQgaW4gUzMgZW5jcnlwdGlvbiBpZiBpdCByZXF1aXJlcyBhIGttcyBrZXkuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgczNFbmNyeXB0aW9uS2V5Pzoga21zLklLZXlSZWY7XG5cbiAgcHJpdmF0ZSByZXNvdXJjZTogQ2ZuU2VjdXJpdHlDb25maWd1cmF0aW9uO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBjb25zdHJ1Y3RzLkNvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IFNlY3VyaXR5Q29uZmlndXJhdGlvblByb3BzID0ge30pIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHtcbiAgICAgIHBoeXNpY2FsTmFtZTogcHJvcHMuc2VjdXJpdHlDb25maWd1cmF0aW9uTmFtZSA/P1xuICAgICAgICBMYXp5LnN0cmluZyh7XG4gICAgICAgICAgcHJvZHVjZTogKCkgPT4gTmFtZXMudW5pcXVlUmVzb3VyY2VOYW1lKHRoaXMsIHt9KSxcbiAgICAgICAgfSksXG4gICAgfSk7XG4gICAgLy8gRW5oYW5jZWQgQ0RLIEFuYWx5dGljcyBUZWxlbWV0cnlcbiAgICBhZGRDb25zdHJ1Y3RNZXRhZGF0YSh0aGlzLCBwcm9wcyk7XG5cbiAgICBpZiAoIXByb3BzLnMzRW5jcnlwdGlvbiAmJiAhcHJvcHMuY2xvdWRXYXRjaEVuY3J5cHRpb24gJiYgIXByb3BzLmpvYkJvb2ttYXJrc0VuY3J5cHRpb24pIHtcbiAgICAgIHRocm93IG5ldyBjZGsuVmFsaWRhdGlvbkVycm9yKGxpdGBFbmNyeXB0aW9uUmVxdWlyZWRgLCAnT25lIG9mIGNsb3VkV2F0Y2hFbmNyeXB0aW9uLCBqb2JCb29rbWFya3NFbmNyeXB0aW9uIG9yIHMzRW5jcnlwdGlvbiBtdXN0IGJlIGRlZmluZWQnLCB0aGlzKTtcbiAgICB9XG5cbiAgICBjb25zdCBrbXNLZXlDcmVhdGlvblJlcXVpcmVkID1cbiAgICAgIChwcm9wcy5zM0VuY3J5cHRpb24gJiYgcHJvcHMuczNFbmNyeXB0aW9uLm1vZGUgPT09IFMzRW5jcnlwdGlvbk1vZGUuS01TICYmICFwcm9wcy5zM0VuY3J5cHRpb24ua21zS2V5KSB8fFxuICAgICAgKHByb3BzLmNsb3VkV2F0Y2hFbmNyeXB0aW9uICYmICFwcm9wcy5jbG91ZFdhdGNoRW5jcnlwdGlvbi5rbXNLZXkpIHx8XG4gICAgICAocHJvcHMuam9iQm9va21hcmtzRW5jcnlwdGlvbiAmJiAhcHJvcHMuam9iQm9va21hcmtzRW5jcnlwdGlvbi5rbXNLZXkpO1xuICAgIGNvbnN0IGF1dG9DcmVhdGVkS21zS2V5ID0ga21zS2V5Q3JlYXRpb25SZXF1aXJlZCA/IG5ldyBrbXMuS2V5KHRoaXMsICdLZXknLCB7IGVuYWJsZUtleVJvdGF0aW9uOiB0cnVlIH0pIDogdW5kZWZpbmVkO1xuXG4gICAgbGV0IGNsb3VkV2F0Y2hFbmNyeXB0aW9uO1xuICAgIGlmIChwcm9wcy5jbG91ZFdhdGNoRW5jcnlwdGlvbikge1xuICAgICAgdGhpcy5jbG91ZFdhdGNoRW5jcnlwdGlvbktleSA9IHByb3BzLmNsb3VkV2F0Y2hFbmNyeXB0aW9uLmttc0tleSB8fCBhdXRvQ3JlYXRlZEttc0tleTtcbiAgICAgIGNsb3VkV2F0Y2hFbmNyeXB0aW9uID0ge1xuICAgICAgICBjbG91ZFdhdGNoRW5jcnlwdGlvbk1vZGU6IHByb3BzLmNsb3VkV2F0Y2hFbmNyeXB0aW9uLm1vZGUsXG4gICAgICAgIGttc0tleUFybjogdGhpcy5jbG91ZFdhdGNoRW5jcnlwdGlvbktleT8ua2V5UmVmLmtleUFybixcbiAgICAgIH07XG4gICAgfVxuXG4gICAgbGV0IGpvYkJvb2ttYXJrc0VuY3J5cHRpb247XG4gICAgaWYgKHByb3BzLmpvYkJvb2ttYXJrc0VuY3J5cHRpb24pIHtcbiAgICAgIHRoaXMuam9iQm9va21hcmtzRW5jcnlwdGlvbktleSA9IHByb3BzLmpvYkJvb2ttYXJrc0VuY3J5cHRpb24ua21zS2V5IHx8IGF1dG9DcmVhdGVkS21zS2V5O1xuICAgICAgam9iQm9va21hcmtzRW5jcnlwdGlvbiA9IHtcbiAgICAgICAgam9iQm9va21hcmtzRW5jcnlwdGlvbk1vZGU6IHByb3BzLmpvYkJvb2ttYXJrc0VuY3J5cHRpb24ubW9kZSxcbiAgICAgICAga21zS2V5QXJuOiB0aGlzLmpvYkJvb2ttYXJrc0VuY3J5cHRpb25LZXk/LmtleVJlZi5rZXlBcm4sXG4gICAgICB9O1xuICAgIH1cblxuICAgIGxldCBzM0VuY3J5cHRpb25zO1xuICAgIGlmIChwcm9wcy5zM0VuY3J5cHRpb24pIHtcbiAgICAgIGlmIChwcm9wcy5zM0VuY3J5cHRpb24ubW9kZSA9PT0gUzNFbmNyeXB0aW9uTW9kZS5LTVMpIHtcbiAgICAgICAgdGhpcy5zM0VuY3J5cHRpb25LZXkgPSBwcm9wcy5zM0VuY3J5cHRpb24ua21zS2V5IHx8IGF1dG9DcmVhdGVkS21zS2V5O1xuICAgICAgfVxuICAgICAgLy8gTk9URTogQ2xvdWRGb3JtYXRpb25zIGVycm9ycyBvdXQgaWYgYXJyYXkgaXMgb2YgbGVuZ3RoID4gMS4gVGhhdCdzIHdoeSB0aGUgcHJvcHMgZG9uJ3QgZXhwb3NlIGFuIGFycmF5XG4gICAgICBzM0VuY3J5cHRpb25zID0gW3tcbiAgICAgICAgczNFbmNyeXB0aW9uTW9kZTogcHJvcHMuczNFbmNyeXB0aW9uLm1vZGUsXG4gICAgICAgIGttc0tleUFybjogdGhpcy5zM0VuY3J5cHRpb25LZXk/LmtleVJlZi5rZXlBcm4sXG4gICAgICB9XTtcbiAgICB9XG5cbiAgICBjb25zdCByZXNvdXJjZSA9IG5ldyBDZm5TZWN1cml0eUNvbmZpZ3VyYXRpb24odGhpcywgJ1Jlc291cmNlJywge1xuICAgICAgbmFtZTogdGhpcy5waHlzaWNhbE5hbWUsXG4gICAgICBlbmNyeXB0aW9uQ29uZmlndXJhdGlvbjoge1xuICAgICAgICBjbG91ZFdhdGNoRW5jcnlwdGlvbixcbiAgICAgICAgam9iQm9va21hcmtzRW5jcnlwdGlvbixcbiAgICAgICAgczNFbmNyeXB0aW9ucyxcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICB0aGlzLnJlc291cmNlID0gcmVzb3VyY2U7XG5cbiAgICB0aGlzLnJlc291cmNlLmFwcGx5UmVtb3ZhbFBvbGljeShwcm9wcy5yZW1vdmFsUG9saWN5KTtcbiAgfVxuXG4gIEBtZW1vaXplZEdldHRlclxuICBwdWJsaWMgZ2V0IHNlY3VyaXR5Q29uZmlndXJhdGlvbk5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5nZXRSZXNvdXJjZU5hbWVBdHRyaWJ1dGUodGhpcy5yZXNvdXJjZS5yZWYpO1xuICB9XG59XG4iXX0=
312
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VjdXJpdHktY29uZmlndXJhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInNlY3VyaXR5LWNvbmZpZ3VyYXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsbURBQWdFO0FBQ2hFLHlEQUEyQztBQUMzQyxzREFBd0M7QUFDeEMsMkNBQStDO0FBQy9DLDRFQUE0RTtBQUM1RSw4RUFBOEU7QUFDOUUsMEVBQTBFO0FBYzFFOzs7R0FHRztBQUNILElBQVksZ0JBY1g7QUFkRCxXQUFZLGdCQUFnQjtJQUMxQjs7OztPQUlHO0lBQ0gseUNBQXFCLENBQUE7SUFFckI7Ozs7T0FJRztJQUNILG1DQUFlLENBQUE7QUFDakIsQ0FBQyxFQWRXLGdCQUFnQixnQ0FBaEIsZ0JBQWdCLFFBYzNCO0FBRUQsNEVBQTRFO0FBQzVFLE1BQU0sMkJBQTJCLEdBQUcsU0FBUyxDQUFDO0FBQzlDLE1BQU0sNkJBQTZCLEdBQUcsU0FBUyxDQUFDO0FBRWhEOzs7Ozs7R0FNRztBQUNILE1BQWEsWUFBWTs7SUFDdkI7Ozs7T0FJRztJQUNJLE1BQU0sQ0FBQyxTQUFTO1FBQ3JCLE9BQU8sSUFBSSxZQUFZLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0tBQ2pFO0lBRUQ7Ozs7O09BS0c7SUFDSSxNQUFNLENBQUMsR0FBRyxDQUFDLE1BQW9CO1FBQ3BDLE9BQU8sSUFBSSxZQUFZLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0tBQ3ZEO0lBRUQsZ0JBQWdCO0lBQ0EsS0FBSyxDQUFtQjtJQUV4QyxnQkFBZ0I7SUFDQSxPQUFPLENBQWU7SUFFdEMsWUFBb0IsSUFBc0IsRUFBRSxNQUFvQjtRQUM5RCxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztRQUNsQixJQUFJLENB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YSxHQUFHLENBQUM7d0JBQ2YsZ0JBQWdCLEVBQUUsS0FBSyxDQUFDLFlBQVksQ0FBQyxLQUFLO3dCQUMxQyxTQUFTLEVBQUUsSUFBSSxDQUFDLGVBQWUsRUFBRSxNQUFNLENBQUMsTUFBTTtxQkFDL0MsQ0FBQyxDQUFDO1lBQ0wsQ0FBQztZQUVELE1BQU0sUUFBUSxHQUFHLElBQUksbUNBQXdCLENBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRTtnQkFDOUQsSUFBSSxFQUFFLElBQUksQ0FBQyxZQUFZO2dCQUN2Qix1QkFBdUIsRUFBRTtvQkFDdkIsb0JBQW9CO29CQUNwQixzQkFBc0I7b0JBQ3RCLGFBQWE7aUJBQ2Q7YUFDRixDQUFDLENBQUM7WUFFSCxJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztZQUV6QixJQUFJLENBQUMsUUFBUSxDQUFDLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsQ0FBQztTQUN2RDtRQUdELElBQVcseUJBQXlCO1lBQ2xDLE9BQU8sSUFBSSxDQUFDLHdCQUF3QixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDekQ7O1lBdkdVLHVEQUFxQjs7Ozs7QUFBckIsc0RBQXFCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2ZuU2VjdXJpdHlDb25maWd1cmF0aW9uIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWdsdWUnO1xuaW1wb3J0ICogYXMga21zIGZyb20gJ2F3cy1jZGstbGliL2F3cy1rbXMnO1xuaW1wb3J0ICogYXMgY2RrIGZyb20gJ2F3cy1jZGstbGliL2NvcmUnO1xuaW1wb3J0IHsgTGF6eSwgTmFtZXMgfSBmcm9tICdhd3MtY2RrLWxpYi9jb3JlJztcbmltcG9ydCB7IG1lbW9pemVkR2V0dGVyLCBsaXQgfSBmcm9tICdhd3MtY2RrLWxpYi9jb3JlL2xpYi9oZWxwZXJzLWludGVybmFsJztcbmltcG9ydCB7IGFkZENvbnN0cnVjdE1ldGFkYXRhIH0gZnJvbSAnYXdzLWNkay1saWIvY29yZS9saWIvbWV0YWRhdGEtcmVzb3VyY2UnO1xuaW1wb3J0IHsgcHJvcGVydHlJbmplY3RhYmxlIH0gZnJvbSAnYXdzLWNkay1saWIvY29yZS9saWIvcHJvcC1pbmplY3RhYmxlJztcbmltcG9ydCB0eXBlICogYXMgY29uc3RydWN0cyBmcm9tICdjb25zdHJ1Y3RzJztcblxuLyoqXG4gKiBJbnRlcmZhY2UgcmVwcmVzZW50aW5nIGEgY3JlYXRlZCBvciBhbiBpbXBvcnRlZCBgU2VjdXJpdHlDb25maWd1cmF0aW9uYC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJU2VjdXJpdHlDb25maWd1cmF0aW9uIGV4dGVuZHMgY2RrLklSZXNvdXJjZSB7XG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgc2VjdXJpdHkgY29uZmlndXJhdGlvbi5cbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcmVhZG9ubHkgc2VjdXJpdHlDb25maWd1cmF0aW9uTmFtZTogc3RyaW5nO1xufVxuXG4vKipcbiAqIEVuY3J5cHRpb24gbW9kZSBmb3IgUzMuXG4gKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9nbHVlL2xhdGVzdC93ZWJhcGkvQVBJX1MzRW5jcnlwdGlvbi5odG1sI0dsdWUtVHlwZS1TM0VuY3J5cHRpb24tUzNFbmNyeXB0aW9uTW9kZVxuICovXG5leHBvcnQgZW51bSBTM0VuY3J5cHRpb25Nb2RlIHtcbiAgLyoqXG4gICAqIFNlcnZlciBzaWRlIGVuY3J5cHRpb24gKFNTRSkgd2l0aCBhbiBBbWF6b24gUzMtbWFuYWdlZCBrZXkuXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvblMzL2xhdGVzdC9kZXYvVXNpbmdTZXJ2ZXJTaWRlRW5jcnlwdGlvbi5odG1sXG4gICAqL1xuICBTM19NQU5BR0VEID0gJ1NTRS1TMycsXG5cbiAgLyoqXG4gICAqIFNlcnZlci1zaWRlIGVuY3J5cHRpb24gKFNTRSkgd2l0aCBhbiBBV1MgS01TIGtleSBtYW5hZ2VkIGJ5IHRoZSBhY2NvdW50IG93bmVyLlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25TMy9sYXRlc3QvZGV2L1VzaW5nS01TRW5jcnlwdGlvbi5odG1sXG4gICAqL1xuICBLTVMgPSAnU1NFLUtNUycsXG59XG5cbi8vIENsb3VkV2F0Y2ggTG9ncyBzdXBwb3J0IG9ubHkgU1NFLUtNUzsgSm9iIEJvb2ttYXJrcyBzdXBwb3J0IG9ubHkgQ1NFLUtNUy5cbmNvbnN0IENMT1VEX1dBVENIX0VOQ1JZUFRJT05fTU9ERSA9ICdTU0UtS01TJztcbmNvbnN0IEpPQl9CT09LTUFSS1NfRU5DUllQVElPTl9NT0RFID0gJ0NTRS1LTVMnO1xuXG4vKipcbiAqIFMzIGVuY3J5cHRpb24gY29uZmlndXJhdGlvbiBmb3IgYSBgU2VjdXJpdHlDb25maWd1cmF0aW9uYC5cbiAqXG4gKiBVc2Uge0BsaW5rIFMzRW5jcnlwdGlvbi5zM01hbmFnZWR9IGZvciBTU0UtUzMgb3Ige0BsaW5rIFMzRW5jcnlwdGlvbi5rbXN9IGZvclxuICogU1NFLUtNUy4gQmVjYXVzZSB0aGVzZSBhcmUgc2VwYXJhdGUgZmFjdG9yaWVzLCBhIEtNUyBrZXkgY2FuIG5ldmVyIGJlIHBhaXJlZFxuICogd2l0aCBTMy1tYW5hZ2VkIGVuY3J5cHRpb24uXG4gKi9cbmV4cG9ydCBjbGFzcyBTM0VuY3J5cHRpb24ge1xuICAvKipcbiAgICogU2VydmVyLXNpZGUgZW5jcnlwdGlvbiAoU1NFKSB3aXRoIGFuIEFtYXpvbiBTMy1tYW5hZ2VkIGtleS5cbiAgICpcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUzMvbGF0ZXN0L2Rldi9Vc2luZ1NlcnZlclNpZGVFbmNyeXB0aW9uLmh0bWxcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgczNNYW5hZ2VkKCk6IFMzRW5jcnlwdGlvbiB7XG4gICAgcmV0dXJuIG5ldyBTM0VuY3J5cHRpb24oUzNFbmNyeXB0aW9uTW9kZS5TM19NQU5BR0VELCB1bmRlZmluZWQpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNlcnZlci1zaWRlIGVuY3J5cHRpb24gKFNTRSkgd2l0aCBhbiBBV1MgS01TIGtleSBtYW5hZ2VkIGJ5IHRoZSBhY2NvdW50IG93bmVyLlxuICAgKlxuICAgKiBAcGFyYW0ga21zS2V5IHRoZSBLTVMga2V5IHVzZWQgdG8gZW5jcnlwdCB0aGUgZGF0YS4gQSBrZXkgaXMgY3JlYXRlZCBpZiBvbmUgaXMgbm90IHByb3ZpZGVkLlxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25TMy9sYXRlc3QvZGV2L1VzaW5nS01TRW5jcnlwdGlvbi5odG1sXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGttcyhrbXNLZXk/OiBrbXMuSUtleVJlZik6IFMzRW5jcnlwdGlvbiB7XG4gICAgcmV0dXJuIG5ldyBTM0VuY3J5cHRpb24oUzNFbmNyeXB0aW9uTW9kZS5LTVMsIGttc0tleSk7XG4gIH1cblxuICAvKiogQGludGVybmFsICovXG4gIHB1YmxpYyByZWFkb25seSBfbW9kZTogUzNFbmNyeXB0aW9uTW9kZTtcblxuICAvKiogQGludGVybmFsICovXG4gIHB1YmxpYyByZWFkb25seSBfa21zS2V5Pzoga21zLklLZXlSZWY7XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3Rvcihtb2RlOiBTM0VuY3J5cHRpb25Nb2RlLCBrbXNLZXk/OiBrbXMuSUtleVJlZikge1xuICAgIHRoaXMuX21vZGUgPSBtb2RlO1xuICAgIHRoaXMuX2ttc0tleSA9IGttc0tleTtcbiAgfVxufVxuXG4vKipcbiAqIENsb3VkV2F0Y2ggTG9ncyBlbmNyeXB0aW9uIGNvbmZpZ3VyYXRpb24gZm9yIGEgYFNlY3VyaXR5Q29uZmlndXJhdGlvbmAuXG4gKlxuICogQ2xvdWRXYXRjaCBMb2dzIHN1cHBvcnQgb25seSBzZXJ2ZXItc2lkZSBlbmNyeXB0aW9uIHdpdGggYSBLTVMga2V5LlxuICovXG5leHBvcnQgY2xhc3MgQ2xvdWRXYXRjaEVuY3J5cHRpb24ge1xuICAvKipcbiAgICogU2VydmVyLXNpZGUgZW5jcnlwdGlvbiAoU1NFKSB3aXRoIGFuIEFXUyBLTVMga2V5IG1hbmFnZWQgYnkgdGhlIGFjY291bnQgb3duZXIuXG4gICAqXG4gICAqIEBwYXJhbSBrbXNLZXkgdGhlIEtNUyBrZXkgdXNlZCB0byBlbmNyeXB0IHRoZSBkYXRhLiBBIGtleSBpcyBjcmVhdGVkIGlmIG9uZSBpcyBub3QgcHJvdmlkZWQuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGttcyhrbXNLZXk/OiBrbXMuSUtleVJlZik6IENsb3VkV2F0Y2hFbmNyeXB0aW9uIHtcbiAgICByZXR1cm4gbmV3IENsb3VkV2F0Y2hFbmNyeXB0aW9uKGttc0tleSk7XG4gIH1cblxuICAvKiogQGludGVybmFsICovXG4gIHB1YmxpYyByZWFkb25seSBfa21zS2V5Pzoga21zLklLZXlSZWY7XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcihrbXNLZXk/OiBrbXMuSUtleVJlZikge1xuICAgIHRoaXMuX2ttc0tleSA9IGttc0tleTtcbiAgfVxufVxuXG4vKipcbiAqIEpvYiBib29rbWFya3MgZW5jcnlwdGlvbiBjb25maWd1cmF0aW9uIGZvciBhIGBTZWN1cml0eUNvbmZpZ3VyYXRpb25gLlxuICpcbiAqIEpvYiBib29rbWFya3Mgc3VwcG9ydCBvbmx5IGNsaWVudC1zaWRlIGVuY3J5cHRpb24gd2l0aCBhIEtNUyBrZXkuXG4gKi9cbmV4cG9ydCBjbGFzcyBKb2JCb29rbWFya3NFbmNyeXB0aW9uIHtcbiAgLyoqXG4gICAqIENsaWVudC1zaWRlIGVuY3J5cHRpb24gKENTRSkgd2l0aCBhbiBBV1MgS01TIGtleSBtYW5hZ2VkIGJ5IHRoZSBhY2NvdW50IG93bmVyLlxuICAgKlxuICAgKiBAcGFyYW0ga21zS2V5IHRoZSBLTVMga2V5IHVzZWQgdG8gZW5jcnlwdCB0aGUgZGF0YS4gQSBrZXkgaXMgY3JlYXRlZCBpZiBvbmUgaXMgbm90IHByb3ZpZGVkLlxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25TMy9sYXRlc3QvZGV2L1VzaW5nQ2xpZW50U2lkZUVuY3J5cHRpb24uaHRtbFxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBjbGllbnRTaWRlS21zKGttc0tleT86IGttcy5JS2V5UmVmKTogSm9iQm9va21hcmtzRW5jcnlwdGlvbiB7XG4gICAgcmV0dXJuIG5ldyBKb2JCb29rbWFya3NFbmNyeXB0aW9uKGttc0tleSk7XG4gIH1cblxuICAvKiogQGludGVybmFsICovXG4gIHB1YmxpYyByZWFkb25seSBfa21zS2V5Pzoga21zLklLZXlSZWY7XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcihrbXNLZXk/OiBrbXMuSUtleVJlZikge1xuICAgIHRoaXMuX2ttc0tleSA9IGttc0tleTtcbiAgfVxufVxuXG4vKipcbiAqIENvbnN0cnVjdGlvbnMgcHJvcGVydGllcyBvZiBgU2VjdXJpdHlDb25maWd1cmF0aW9uYC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTZWN1cml0eUNvbmZpZ3VyYXRpb25Qcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgc2VjdXJpdHkgY29uZmlndXJhdGlvbi5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBnZW5lcmF0ZWQgYnkgQ0RLLlxuICAgKi9cbiAgcmVhZG9ubHkgc2VjdXJpdHlDb25maWd1cmF0aW9uTmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGVuY3J5cHRpb24gY29uZmlndXJhdGlvbiBmb3IgQW1hem9uIENsb3VkV2F0Y2ggTG9ncy5cbiAgICogQGRlZmF1bHQgbm8gY2xvdWR3YXRjaCBsb2dzIGVuY3J5cHRpb24uXG4gICAqL1xuICByZWFkb25seSBjbG91ZFdhdGNoRW5jcnlwdGlvbj86IENsb3VkV2F0Y2hFbmNyeXB0aW9uO1xuXG4gIC8qKlxuICAgKiBUaGUgZW5jcnlwdGlvbiBjb25maWd1cmF0aW9uIGZvciBHbHVlIEpvYiBCb29rbWFya3MuXG4gICAqIEBkZWZhdWx0IG5vIGpvYiBib29rbWFya3MgZW5jcnlwdGlvbi5cbiAgICovXG4gIHJlYWRvbmx5IGpvYkJvb2ttYXJrc0VuY3J5cHRpb24/OiBKb2JCb29rbWFya3NFbmNyeXB0aW9uO1xuXG4gIC8qKlxuICAgKiBUaGUgZW5jcnlwdGlvbiBjb25maWd1cmF0aW9uIGZvciBBbWF6b24gU2ltcGxlIFN0b3JhZ2UgU2VydmljZSAoQW1hem9uIFMzKSBkYXRhLlxuICAgKiBAZGVmYXVsdCBubyBzMyBlbmNyeXB0aW9uLlxuICAgKi9cbiAgcmVhZG9ubHkgczNFbmNyeXB0aW9uPzogUzNFbmNyeXB0aW9uO1xuXG4gIC8qKlxuICAgKiBQb2xpY3kgdG8gYXBwbHkgd2hlbiB0aGUgc2VjdXJpdHkgY29uZmlndXJhdGlvbiBpcyByZW1vdmVkIGZyb20gdGhlIHN0YWNrLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIHJlc291cmNlIHdpbGwgYmUgZGVzdHJveWVkXG4gICAqL1xuICByZWFkb25seSByZW1vdmFsUG9saWN5PzogY2RrLlJlbW92YWxQb2xpY3k7XG59XG5cbi8qKlxuICogQSBzZWN1cml0eSBjb25maWd1cmF0aW9uIGlzIGEgc2V0IG9mIHNlY3VyaXR5IHByb3BlcnRpZXMgdGhhdCBjYW4gYmUgdXNlZCBieSBBV1MgR2x1ZSB0byBlbmNyeXB0IGRhdGEgYXQgcmVzdC5cbiAqXG4gKiBUaGUgZm9sbG93aW5nIHNjZW5hcmlvcyBzaG93IHNvbWUgb2YgdGhlIHdheXMgdGhhdCB5b3UgY2FuIHVzZSBhIHNlY3VyaXR5IGNvbmZpZ3VyYXRpb24uXG4gKiAtIEF0dGFjaCBhIHNlY3VyaXR5IGNvbmZpZ3VyYXRpb24gdG8gYW4gQVdTIEdsdWUgY3Jhd2xlciB0byB3cml0ZSBlbmNyeXB0ZWQgQW1hem9uIENsb3VkV2F0Y2ggTG9ncy5cbiAqIC0gQXR0YWNoIGEgc2VjdXJpdHkgY29uZmlndXJhdGlvbiB0byBhbiBleHRyYWN0LCB0cmFuc2Zvcm0sIGFuZCBsb2FkIChFVEwpIGpvYiB0byB3cml0ZSBlbmNyeXB0ZWQgQW1hem9uIFNpbXBsZSBTdG9yYWdlIFNlcnZpY2UgKEFtYXpvbiBTMykgdGFyZ2V0cyBhbmQgZW5jcnlwdGVkIENsb3VkV2F0Y2ggTG9ncy5cbiAqIC0gQXR0YWNoIGEgc2VjdXJpdHkgY29uZmlndXJhdGlvbiB0byBhbiBFVEwgam9iIHRvIHdyaXRlIGl0cyBqb2JzIGJvb2ttYXJrcyBhcyBlbmNyeXB0ZWQgQW1hem9uIFMzIGRhdGEuXG4gKiAtIEF0dGFjaCBhIHNlY3VyaXR5IGNvbmZpZ3VyYXRpb24gdG8gYSBkZXZlbG9wbWVudCBlbmRwb2ludCB0byB3cml0ZSBlbmNyeXB0ZWQgQW1hem9uIFMzIHRhcmdldHMuXG4gKi9cbkBwcm9wZXJ0eUluamVjdGFibGVcbmV4cG9ydCBjbGFzcyBTZWN1cml0eUNvbmZpZ3VyYXRpb24gZXh0ZW5kcyBjZGsuUmVzb3VyY2UgaW1wbGVtZW50cyBJU2VjdXJpdHlDb25maWd1cmF0aW9uIHtcbiAgLyoqIFVuaXF1ZWx5IGlkZW50aWZpZXMgdGhpcyBjbGFzcy4gKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBQUk9QRVJUWV9JTkpFQ1RJT05fSUQ6IHN0cmluZyA9ICdAYXdzLWNkay5hd3MtZ2x1ZS1hbHBoYS5TZWN1cml0eUNvbmZpZ3VyYXRpb24nO1xuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgQ29ubmVjdGlvbiBjb25zdHJ1Y3QgdGhhdCByZXByZXNlbnRzIGFuIGV4dGVybmFsIHNlY3VyaXR5IGNvbmZpZ3VyYXRpb24uXG4gICAqXG4gICAqIEBwYXJhbSBzY29wZSBUaGUgc2NvcGUgY3JlYXRpbmcgY29uc3RydWN0ICh1c3VhbGx5IGB0aGlzYCkuXG4gICAqIEBwYXJhbSBpZCBUaGUgY29uc3RydWN0J3MgaWQuXG4gICAqIEBwYXJhbSBzZWN1cml0eUNvbmZpZ3VyYXRpb25OYW1lIG5hbWUgb2YgZXh0ZXJuYWwgc2VjdXJpdHkgY29uZmlndXJhdGlvbi5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZnJvbVNlY3VyaXR5Q29uZmlndXJhdGlvbk5hbWUoc2NvcGU6IGNvbnN0cnVjdHMuQ29uc3RydWN0LCBpZDogc3RyaW5nLFxuICAgIHNlY3VyaXR5Q29uZmlndXJhdGlvbk5hbWU6IHN0cmluZyk6IElTZWN1cml0eUNvbmZpZ3VyYXRpb24ge1xuICAgIGNsYXNzIEltcG9ydCBleHRlbmRzIGNkay5SZXNvdXJjZSBpbXBsZW1lbnRzIElTZWN1cml0eUNvbmZpZ3VyYXRpb24ge1xuICAgICAgcHVibGljIHJlYWRvbmx5IHNlY3VyaXR5Q29uZmlndXJhdGlvbk5hbWUgPSBzZWN1cml0eUNvbmZpZ3VyYXRpb25OYW1lO1xuICAgIH1cbiAgICByZXR1cm4gbmV3IEltcG9ydChzY29wZSwgaWQpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBLTVMga2V5IHVzZWQgaW4gQ2xvdWRXYXRjaCBlbmNyeXB0aW9uIGlmIGl0IHJlcXVpcmVzIGEga21zIGtleS5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBjbG91ZFdhdGNoRW5jcnlwdGlvbktleT86IGttcy5JS2V5UmVmO1xuXG4gIC8qKlxuICAgKiBUaGUgS01TIGtleSB1c2VkIGluIGpvYiBib29rbWFya3MgZW5jcnlwdGlvbiBpZiBpdCByZXF1aXJlcyBhIGttcyBrZXkuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgam9iQm9va21hcmtzRW5jcnlwdGlvbktleT86IGttcy5JS2V5UmVmO1xuXG4gIC8qKlxuICAgKiBUaGUgS01TIGtleSB1c2VkIGluIFMzIGVuY3J5cHRpb24gaWYgaXQgcmVxdWlyZXMgYSBrbXMga2V5LlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHMzRW5jcnlwdGlvbktleT86IGttcy5JS2V5UmVmO1xuXG4gIHByaXZhdGUgcmVzb3VyY2U6IENmblNlY3VyaXR5Q29uZmlndXJhdGlvbjtcblxuICBjb25zdHJ1Y3RvcihzY29wZTogY29uc3RydWN0cy5Db25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBTZWN1cml0eUNvbmZpZ3VyYXRpb25Qcm9wcyA9IHt9KSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCB7XG4gICAgICBwaHlzaWNhbE5hbWU6IHByb3BzLnNlY3VyaXR5Q29uZmlndXJhdGlvbk5hbWUgPz9cbiAgICAgICAgTGF6eS5zdHJpbmcoe1xuICAgICAgICAgIHByb2R1Y2U6ICgpID0+IE5hbWVzLnVuaXF1ZVJlc291cmNlTmFtZSh0aGlzLCB7fSksXG4gICAgICAgIH0pLFxuICAgIH0pO1xuICAgIC8vIEVuaGFuY2VkIENESyBBbmFseXRpY3MgVGVsZW1ldHJ5XG4gICAgYWRkQ29uc3RydWN0TWV0YWRhdGEodGhpcywgcHJvcHMpO1xuXG4gICAgaWYgKCFwcm9wcy5zM0VuY3J5cHRpb24gJiYgIXByb3BzLmNsb3VkV2F0Y2hFbmNyeXB0aW9uICYmICFwcm9wcy5qb2JCb29rbWFya3NFbmNyeXB0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgY2RrLlZhbGlkYXRpb25FcnJvcihsaXRgRW5jcnlwdGlvblJlcXVpcmVkYCwgJ09uZSBvZiBjbG91ZFdhdGNoRW5jcnlwdGlvbiwgam9iQm9va21hcmtzRW5jcnlwdGlvbiBvciBzM0VuY3J5cHRpb24gbXVzdCBiZSBkZWZpbmVkJywgdGhpcyk7XG4gICAgfVxuXG4gICAgY29uc3Qga21zS2V5Q3JlYXRpb25SZXF1aXJlZCA9XG4gICAgICAocHJvcHMuczNFbmNyeXB0aW9uICYmIHByb3BzLnMzRW5jcnlwdGlvbi5fbW9kZSA9PT0gUzNFbmNyeXB0aW9uTW9kZS5LTVMgJiYgIXByb3BzLnMzRW5jcnlwdGlvbi5fa21zS2V5KSB8fFxuICAgICAgKHByb3BzLmNsb3VkV2F0Y2hFbmNyeXB0aW9uICYmICFwcm9wcy5jbG91ZFdhdGNoRW5jcnlwdGlvbi5fa21zS2V5KSB8fFxuICAgICAgKHByb3BzLmpvYkJvb2ttYXJrc0VuY3J5cHRpb24gJiYgIXByb3BzLmpvYkJvb2ttYXJrc0VuY3J5cHRpb24uX2ttc0tleSk7XG4gICAgY29uc3QgYXV0b0NyZWF0ZWRLbXNLZXkgPSBrbXNLZXlDcmVhdGlvblJlcXVpcmVkID8gbmV3IGttcy5LZXkodGhpcywgJ0tleScsIHsgZW5hYmxlS2V5Um90YXRpb246IHRydWUgfSkgOiB1bmRlZmluZWQ7XG5cbiAgICBsZXQgY2xvdWRXYXRjaEVuY3J5cHRpb247XG4gICAgaWYgKHByb3BzLmNsb3VkV2F0Y2hFbmNyeXB0aW9uKSB7XG4gICAgICB0aGlzLmNsb3VkV2F0Y2hFbmNyeXB0aW9uS2V5ID0gcHJvcHMuY2xvdWRXYXRjaEVuY3J5cHRpb24uX2ttc0tleSB8fCBhdXRvQ3JlYXRlZEttc0tleTtcbiAgICAgIGNsb3VkV2F0Y2hFbmNyeXB0aW9uID0ge1xuICAgICAgICBjbG91ZFdhdGNoRW5jcnlwdGlvbk1vZGU6IENMT1VEX1dBVENIX0VOQ1JZUFRJT05fTU9ERSxcbiAgICAgICAga21zS2V5QXJuOiB0aGlzLmNsb3VkV2F0Y2hFbmNyeXB0aW9uS2V5Py5rZXlSZWYua2V5QXJuLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICBsZXQgam9iQm9va21hcmtzRW5jcnlwdGlvbjtcbiAgICBpZiAocHJvcHMuam9iQm9va21hcmtzRW5jcnlwdGlvbikge1xuICAgICAgdGhpcy5qb2JCb29rbWFya3NFbmNyeXB0aW9uS2V5ID0gcHJvcHMuam9iQm9va21hcmtzRW5jcnlwdGlvbi5fa21zS2V5IHx8IGF1dG9DcmVhdGVkS21zS2V5O1xuICAgICAgam9iQm9va21hcmtzRW5jcnlwdGlvbiA9IHtcbiAgICAgICAgam9iQm9va21hcmtzRW5jcnlwdGlvbk1vZGU6IEpPQl9CT09LTUFSS1NfRU5DUllQVElPTl9NT0RFLFxuICAgICAgICBrbXNLZXlBcm46IHRoaXMuam9iQm9va21hcmtzRW5jcnlwdGlvbktleT8ua2V5UmVmLmtleUFybixcbiAgICAgIH07XG4gICAgfVxuXG4gICAgbGV0IHMzRW5jcnlwdGlvbnM7XG4gICAgaWYgKHByb3BzLnMzRW5jcnlwdGlvbikge1xuICAgICAgaWYgKHByb3BzLnMzRW5jcnlwdGlvbi5fbW9kZSA9PT0gUzNFbmNyeXB0aW9uTW9kZS5LTVMpIHtcbiAgICAgICAgdGhpcy5zM0VuY3J5cHRpb25LZXkgPSBwcm9wcy5zM0VuY3J5cHRpb24uX2ttc0tleSB8fCBhdXRvQ3JlYXRlZEttc0tleTtcbiAgICAgIH1cbiAgICAgIC8vIE5PVEU6IENsb3VkRm9ybWF0aW9ucyBlcnJvcnMgb3V0IGlmIGFycmF5IGlzIG9mIGxlbmd0aCA+IDEuIFRoYXQncyB3aHkgdGhlIHByb3BzIGRvbid0IGV4cG9zZSBhbiBhcnJheVxuICAgICAgczNFbmNyeXB0aW9ucyA9IFt7XG4gICAgICAgIHMzRW5jcnlwdGlvbk1vZGU6IHByb3BzLnMzRW5jcnlwdGlvbi5fbW9kZSxcbiAgICAgICAga21zS2V5QXJuOiB0aGlzLnMzRW5jcnlwdGlvbktleT8ua2V5UmVmLmtleUFybixcbiAgICAgIH1dO1xuICAgIH1cblxuICAgIGNvbnN0IHJlc291cmNlID0gbmV3IENmblNlY3VyaXR5Q29uZmlndXJhdGlvbih0aGlzLCAnUmVzb3VyY2UnLCB7XG4gICAgICBuYW1lOiB0aGlzLnBoeXNpY2FsTmFtZSxcbiAgICAgIGVuY3J5cHRpb25Db25maWd1cmF0aW9uOiB7XG4gICAgICAgIGNsb3VkV2F0Y2hFbmNyeXB0aW9uLFxuICAgICAgICBqb2JCb29rbWFya3NFbmNyeXB0aW9uLFxuICAgICAgICBzM0VuY3J5cHRpb25zLFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIHRoaXMucmVzb3VyY2UgPSByZXNvdXJjZTtcblxuICAgIHRoaXMucmVzb3VyY2UuYXBwbHlSZW1vdmFsUG9saWN5KHByb3BzLnJlbW92YWxQb2xpY3kpO1xuICB9XG5cbiAgQG1lbW9pemVkR2V0dGVyXG4gIHB1YmxpYyBnZXQgc2VjdXJpdHlDb25maWd1cmF0aW9uTmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmdldFJlc291cmNlTmFtZUF0dHJpYnV0ZSh0aGlzLnJlc291cmNlLnJlZik7XG4gIH1cbn1cbiJdfQ==
@@ -271,7 +271,7 @@ var StorageParameters;
271
271
  class StorageParameter {
272
272
  key;
273
273
  value;
274
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-glue-alpha.StorageParameter", version: "2.265.0-alpha.0" };
274
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-glue-alpha.StorageParameter", version: "2.266.0-alpha.0" };
275
275
  /**
276
276
  * The number of rows to skip at the top of a CSV file when the table is being created.
277
277
  */
@@ -143,6 +143,22 @@ export interface TableBaseProps {
143
143
  readonly parameters?: {
144
144
  [key: string]: string;
145
145
  };
146
+ /**
147
+ * Whether the data stored in the table is encrypted.
148
+ *
149
+ * This sets the `has_encrypted_data` table parameter. Athena reads it when
150
+ * querying client-side (CSE-KMS) encrypted datasets; for server-side
151
+ * encrypted (SSE-S3 / SSE-KMS) or unencrypted data it has no effect, since
152
+ * Amazon S3 decrypts server-side encrypted objects transparently.
153
+ *
154
+ * Do not also set `has_encrypted_data` through `parameters` - use this
155
+ * property instead. A conflicting value in `parameters` is rejected.
156
+ *
157
+ * @see https://docs.aws.amazon.com/athena/latest/ug/creating-tables-based-on-encrypted-datasets-in-s3.html
158
+ *
159
+ * @default true
160
+ */
161
+ readonly hasEncryptedData?: boolean;
146
162
  /**
147
163
  * Partition projection configuration for this table.
148
164
  *
@@ -207,6 +223,11 @@ export declare abstract class TableBase extends Resource implements ITable {
207
223
  protected readonly parameters: {
208
224
  [key: string]: string;
209
225
  };
226
+ /**
227
+ * Whether the data stored in the table is encrypted. Emitted as the
228
+ * `has_encrypted_data` table parameter.
229
+ */
230
+ protected readonly hasEncryptedData: boolean;
210
231
  /**
211
232
  * Partition indexes must be created one at a time. To avoid
212
233
  * race conditions, we store the resource and add dependencies
@@ -226,6 +247,18 @@ export declare abstract class TableBase extends Resource implements ITable {
226
247
  */
227
248
  addPartitionIndex(index: PartitionIndex): void;
228
249
  private generateIndexName;
250
+ /**
251
+ * Reconcile a `has_encrypted_data` value supplied through the free-form
252
+ * `parameters` map with the typed `hasEncryptedData` property.
253
+ *
254
+ * `has_encrypted_data` is managed by this construct and emitted authoritatively
255
+ * from `hasEncryptedData`. Supplying it through `parameters` as well is only
256
+ * tolerated when the value is identical; a differing (or unresolved) value is
257
+ * rejected so the two inputs can never silently disagree. On success the key is
258
+ * removed from the free-form map so the managed value is the single source of
259
+ * truth.
260
+ */
261
+ private reconcileHasEncryptedData;
229
262
  private validatePartitionIndex;
230
263
  /**
231
264
  * Validate partition projection configuration and merge generated parameters into this.parameters.