@aws-cdk/aws-glue-alpha 2.266.0-alpha.0 → 2.268.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 (52) hide show
  1. package/.jsii +1002 -642
  2. package/.jsii.tabl.json.gz +0 -0
  3. package/.warnings.jsii.js +0 -58
  4. package/README.md +52 -33
  5. package/awslint.json +4 -0
  6. package/lib/catalog.d.ts +2 -2
  7. package/lib/catalog.js +4 -4
  8. package/lib/code.js +3 -3
  9. package/lib/connection.d.ts +41 -1
  10. package/lib/connection.js +48 -9
  11. package/lib/data-format.js +5 -5
  12. package/lib/data-quality-ruleset.d.ts +20 -9
  13. package/lib/data-quality-ruleset.js +33 -6
  14. package/lib/database.d.ts +3 -1
  15. package/lib/database.js +8 -2
  16. package/lib/external-table.js +1 -1
  17. package/lib/index.d.ts +0 -1
  18. package/lib/index.js +1 -2
  19. package/lib/jobs/job.d.ts +1 -1
  20. package/lib/jobs/job.js +3 -3
  21. package/lib/jobs/pyspark-etl-job.d.ts +1 -1
  22. package/lib/jobs/pyspark-etl-job.js +3 -3
  23. package/lib/jobs/pyspark-flex-etl-job.d.ts +1 -1
  24. package/lib/jobs/pyspark-flex-etl-job.js +3 -3
  25. package/lib/jobs/pyspark-streaming-job.d.ts +1 -1
  26. package/lib/jobs/pyspark-streaming-job.js +3 -3
  27. package/lib/jobs/python-shell-job.js +1 -1
  28. package/lib/jobs/ray-job.js +1 -1
  29. package/lib/jobs/scala-spark-etl-job.d.ts +3 -2
  30. package/lib/jobs/scala-spark-etl-job.js +5 -4
  31. package/lib/jobs/scala-spark-flex-etl-job.d.ts +11 -20
  32. package/lib/jobs/scala-spark-flex-etl-job.js +12 -11
  33. package/lib/jobs/scala-spark-streaming-job.d.ts +3 -2
  34. package/lib/jobs/scala-spark-streaming-job.js +5 -4
  35. package/lib/jobs/spark-job.js +1 -1
  36. package/lib/partition-projection.d.ts +8 -8
  37. package/lib/partition-projection.js +49 -2
  38. package/lib/s3-table.d.ts +86 -40
  39. package/lib/s3-table.js +136 -85
  40. package/lib/schema.d.ts +26 -6
  41. package/lib/schema.js +74 -77
  42. package/lib/security-configuration.js +4 -4
  43. package/lib/storage-parameter.d.ts +14 -3
  44. package/lib/storage-parameter.js +16 -6
  45. package/lib/table-base.d.ts +1 -1
  46. package/lib/table-base.js +2 -2
  47. package/lib/triggers/trigger-options.d.ts +1 -1
  48. package/lib/triggers/trigger-options.js +2 -2
  49. package/lib/triggers/workflow.js +2 -2
  50. package/package.json +7 -7
  51. package/lib/table-deprecated.d.ts +0 -13
  52. package/lib/table-deprecated.js +0 -70
package/lib/schema.js CHANGED
@@ -1,93 +1,93 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Schema = void 0;
3
+ exports.Schema = exports.Type = void 0;
4
4
  const jsiiDeprecationWarnings = require("../.warnings.jsii.js");
5
5
  const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
6
6
  const aws_cdk_lib_1 = require("aws-cdk-lib");
7
7
  const helpers_internal_1 = require("aws-cdk-lib/core/lib/helpers-internal");
8
+ /**
9
+ * The type of a column in a table schema.
10
+ *
11
+ * Instances are opaque: obtain one from a `Schema` factory (for example
12
+ * `Schema.STRING`, `Schema.decimal(...)`, `Schema.array(...)`) or, for a type the
13
+ * `Schema` factories don't model, from `Schema.custom(...)`.
14
+ */
15
+ class Type {
16
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-glue-alpha.Type", version: "2.268.0-alpha.0" };
17
+ /**
18
+ * Create a `Type` from its parts.
19
+ *
20
+ * @internal
21
+ */
22
+ static _of(inputString, isPrimitive) {
23
+ return new Type(inputString, isPrimitive);
24
+ }
25
+ /**
26
+ * Indicates whether this type is a primitive data type.
27
+ */
28
+ isPrimitive;
29
+ /**
30
+ * Glue InputString for this type.
31
+ */
32
+ inputString;
33
+ constructor(inputString, isPrimitive) {
34
+ this.inputString = inputString;
35
+ this.isPrimitive = isPrimitive;
36
+ }
37
+ }
38
+ exports.Type = Type;
8
39
  /**
9
40
  * @see https://docs.aws.amazon.com/athena/latest/ug/data-types.html
10
41
  */
11
42
  class Schema {
12
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-glue-alpha.Schema", version: "2.266.0-alpha.0" };
13
- static BOOLEAN = {
14
- isPrimitive: true,
15
- inputString: 'boolean',
16
- };
17
- static BINARY = {
18
- isPrimitive: true,
19
- inputString: 'binary',
20
- };
43
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-glue-alpha.Schema", version: "2.268.0-alpha.0" };
44
+ static BOOLEAN = Type._of('boolean', true);
45
+ static BINARY = Type._of('binary', true);
21
46
  /**
22
47
  * A 64-bit signed INTEGER in two’s complement format, with a minimum value of -2^63 and a maximum value of 2^63-1.
23
48
  */
24
- static BIG_INT = {
25
- isPrimitive: true,
26
- inputString: 'bigint',
27
- };
28
- static DOUBLE = {
29
- isPrimitive: true,
30
- inputString: 'double',
31
- };
32
- static FLOAT = {
33
- isPrimitive: true,
34
- inputString: 'float',
35
- };
49
+ static BIG_INT = Type._of('bigint', true);
50
+ static DOUBLE = Type._of('double', true);
51
+ static FLOAT = Type._of('float', true);
36
52
  /**
37
53
  * A 32-bit signed INTEGER in two’s complement format, with a minimum value of -2^31 and a maximum value of 2^31-1.
38
54
  */
39
- static INTEGER = {
40
- isPrimitive: true,
41
- inputString: 'int',
42
- };
55
+ static INTEGER = Type._of('int', true);
43
56
  /**
44
57
  * A 16-bit signed INTEGER in two’s complement format, with a minimum value of -2^15 and a maximum value of 2^15-1.
45
58
  */
46
- static SMALL_INT = {
47
- isPrimitive: true,
48
- inputString: 'smallint',
49
- };
59
+ static SMALL_INT = Type._of('smallint', true);
50
60
  /**
51
61
  * A 8-bit signed INTEGER in two’s complement format, with a minimum value of -2^7 and a maximum value of 2^7-1
52
62
  */
53
- static TINY_INT = {
54
- isPrimitive: true,
55
- inputString: 'tinyint',
56
- };
63
+ static TINY_INT = Type._of('tinyint', true);
57
64
  /**
58
65
  * Date type.
59
66
  */
60
- static DATE = {
61
- isPrimitive: true,
62
- inputString: 'date',
63
- };
67
+ static DATE = Type._of('date', true);
64
68
  /**
65
69
  * Timestamp type (date and time).
66
70
  */
67
- static TIMESTAMP = {
68
- isPrimitive: true,
69
- inputString: 'timestamp',
70
- };
71
+ static TIMESTAMP = Type._of('timestamp', true);
71
72
  /**
72
73
  * Arbitrary-length string type.
73
74
  */
74
- static STRING = {
75
- isPrimitive: true,
76
- inputString: 'string',
77
- };
75
+ static STRING = Type._of('string', true);
78
76
  /**
79
77
  * Creates a decimal type.
80
78
  *
81
- * TODO: Bounds
82
- *
83
- * @param precision the total number of digits
84
- * @param scale the number of digits in fractional part, the default is 0
79
+ * @param precision the total number of digits, between 1 and 38
80
+ * @param scale the number of digits in the fractional part, between 0 and 38; the default is 0
81
+ * @see https://docs.aws.amazon.com/athena/latest/ug/data-types.html
85
82
  */
86
83
  static decimal(precision, scale) {
87
- return {
88
- isPrimitive: true,
89
- inputString: scale !== undefined ? `decimal(${precision},${scale})` : `decimal(${precision})`,
90
- };
84
+ if (aws_cdk_lib_1.Token.isResolved(precision) && (precision < 1 || precision > 38 || precision % 1 !== 0)) {
85
+ throw new aws_cdk_lib_1.UnscopedValidationError((0, helpers_internal_1.lit) `DecimalPrecisionOutOfRange`, `decimal precision must be a positive integer between 1 and 38, got ${precision}`);
86
+ }
87
+ if (scale !== undefined && aws_cdk_lib_1.Token.isResolved(scale) && (scale < 0 || scale > 38 || scale % 1 !== 0)) {
88
+ throw new aws_cdk_lib_1.UnscopedValidationError((0, helpers_internal_1.lit) `DecimalScaleOutOfRange`, `decimal scale must be an integer between 0 and 38, got ${scale}`);
89
+ }
90
+ return Type._of(scale !== undefined ? `decimal(${precision},${scale})` : `decimal(${precision})`, true);
91
91
  }
92
92
  /**
93
93
  * Fixed length character data, with a specified length between 1 and 255.
@@ -101,10 +101,7 @@ class Schema {
101
101
  if (length % 1 !== 0) {
102
102
  throw new aws_cdk_lib_1.UnscopedValidationError((0, helpers_internal_1.lit) `CharLengthNotInteger`, `char length must be a positive integer, was ${length}`);
103
103
  }
104
- return {
105
- isPrimitive: true,
106
- inputString: `char(${length})`,
107
- };
104
+ return Type._of(`char(${length})`, true);
108
105
  }
109
106
  /**
110
107
  * Variable length character data, with a specified length between 1 and 65535.
@@ -118,10 +115,7 @@ class Schema {
118
115
  if (length % 1 !== 0) {
119
116
  throw new aws_cdk_lib_1.UnscopedValidationError((0, helpers_internal_1.lit) `VarcharLengthNotInteger`, `varchar length must be a positive integer, was ${length}`);
120
117
  }
121
- return {
122
- isPrimitive: true,
123
- inputString: `varchar(${length})`,
124
- };
118
+ return Type._of(`varchar(${length})`, true);
125
119
  }
126
120
  /**
127
121
  * Creates an array of some other type.
@@ -138,10 +132,7 @@ class Schema {
138
132
  }
139
133
  throw error;
140
134
  }
141
- return {
142
- isPrimitive: false,
143
- inputString: `array<${itemType.inputString}>`,
144
- };
135
+ return Type._of(`array<${itemType.inputString}>`, false);
145
136
  }
146
137
  /**
147
138
  * Creates a map of some primitive key type to some value type.
@@ -163,10 +154,7 @@ class Schema {
163
154
  if (!keyType.isPrimitive) {
164
155
  throw new aws_cdk_lib_1.UnscopedValidationError((0, helpers_internal_1.lit) `MapKeyTypeNotPrimitive`, `the key type of a 'map' must be a primitive, but was ${keyType.inputString}`);
165
156
  }
166
- return {
167
- isPrimitive: false,
168
- inputString: `map<${keyType.inputString},${valueType.inputString}>`,
169
- };
157
+ return Type._of(`map<${keyType.inputString},${valueType.inputString}>`, false);
170
158
  }
171
159
  /**
172
160
  * Creates a nested structure containing individually named and typed columns.
@@ -174,13 +162,22 @@ class Schema {
174
162
  * @param columns the columns of the structure.
175
163
  */
176
164
  static struct(columns) {
177
- return {
178
- isPrimitive: false,
179
- inputString: `struct<${columns.map(column => {
180
- return `${column.name}:${column.type.inputString}`;
181
- }).join(',')}>`,
182
- };
165
+ return Type._of(`struct<${columns.map(column => {
166
+ return `${column.name}:${column.type.inputString}`;
167
+ }).join(',')}>`, false);
168
+ }
169
+ /**
170
+ * Creates a custom type from a raw Glue input string.
171
+ *
172
+ * Escape hatch for column types the other `Schema` factories don't model. The
173
+ * `inputString` is emitted verbatim and is not validated.
174
+ *
175
+ * @param inputString the Glue input string for the type (for example `interval_day_to_second`).
176
+ * @param isPrimitive whether the type is a primitive (non-nested) data type. Defaults to true.
177
+ */
178
+ static custom(inputString, isPrimitive) {
179
+ return Type._of(inputString, isPrimitive ?? true);
183
180
  }
184
181
  }
185
182
  exports.Schema = Schema;
186
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NoZW1hLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsic2NoZW1hLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsNkNBQXNEO0FBQ3RELDRFQUE0RDtBQXVDNUQ7O0dBRUc7QUFDSCxNQUFhLE1BQU07O0lBQ1YsTUFBTSxDQUFVLE9BQU8sR0FBUztRQUNyQyxXQUFXLEVBQUUsSUFBSTtRQUNqQixXQUFXLEVBQUUsU0FBUztLQUN2QixDQUFDO0lBRUssTUFBTSxDQUFVLE1BQU0sR0FBUztRQUNwQyxXQUFXLEVBQUUsSUFBSTtRQUNqQixXQUFXLEVBQUUsUUFBUTtLQUN0QixDQUFDO0lBRUY7O09BRUc7SUFDSSxNQUFNLENBQVUsT0FBTyxHQUFTO1FBQ3JDLFdBQVcsRUFBRSxJQUFJO1FBQ2pCLFdBQVcsRUFBRSxRQUFRO0tBQ3RCLENBQUM7SUFFSyxNQUFNLENBQVUsTUFBTSxHQUFTO1FBQ3BDLFdBQVcsRUFBRSxJQUFJO1FBQ2pCLFdBQVcsRUFBRSxRQUFRO0tBQ3RCLENBQUM7SUFFSyxNQUFNLENBQVUsS0FBSyxHQUFTO1FBQ25DLFdBQVcsRUFBRSxJQUFJO1FBQ2pCLFdBQVcsRUFBRSxPQUFPO0tBQ3JCLENBQUM7SUFFRjs7T0FFRztJQUNJLE1BQU0sQ0FBVSxPQUFPLEdBQVM7UUFDckMsV0FBVyxFQUFFLElBQUk7UUFDakIsV0FBVyxFQUFFLEtBQUs7S0FDbkIsQ0FBQztJQUVGOztPQUVHO0lBQ0ksTUFBTSxDQUFVLFNBQVMsR0FBUztRQUN2QyxXQUFXLEVBQUUsSUFBSTtRQUNqQixXQUFXLEVBQUUsVUFBVTtLQUN4QixDQUFDO0lBRUY7O09BRUc7SUFDSSxNQUFNLENBQVUsUUFBUSxHQUFTO1FBQ3RDLFdBQVcsRUFBRSxJQUFJO1FBQ2pCLFdBQVcsRUFBRSxTQUFTO0tBQ3ZCLENBQUM7SUFFRjs7T0FFRztJQUNJLE1BQU0sQ0FBVSxJQUFJLEdBQVM7UUFDbEMsV0FBVyxFQUFFLElBQUk7UUFDakIsV0FBVyxFQUFFLE1BQU07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QkFDMUMsT0FBTyxHQUFHLE1BQU0sQ0FBQyxJQUFJLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNyRCxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUc7U0FDaEIsQ0FBQztLQUNIOztBQXhLSCx3QkF5S0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBVbnNjb3BlZFZhbGlkYXRpb25FcnJvciB9IGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCB7IGxpdCB9IGZyb20gJ2F3cy1jZGstbGliL2NvcmUvbGliL2hlbHBlcnMtaW50ZXJuYWwnO1xuXG4vKipcbiAqIEEgY29sdW1uIG9mIGEgdGFibGUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29sdW1uIHtcbiAgLyoqXG4gICAqIE5hbWUgb2YgdGhlIGNvbHVtbi5cbiAgICovXG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogVHlwZSBvZiB0aGUgY29sdW1uLlxuICAgKi9cbiAgcmVhZG9ubHkgdHlwZTogVHlwZTtcblxuICAvKipcbiAgICogQ29tZW50IGRlc2NyaWJpbmcgdGhlIGNvbHVtbi5cbiAgICpcbiAgICogQGRlZmF1bHQgbm9uZVxuICAgKi9cbiAgcmVhZG9ubHkgY29tbWVudD86IHN0cmluZztcbn1cblxuLyoqXG4gKiBSZXByZXNlbnRzIGEgdHlwZSBvZiBhIGNvbHVtbiBpbiBhIHRhYmxlIHNjaGVtYS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUeXBlIHtcbiAgLyoqXG4gICAqIEluZGljYXRlcyB3aGV0aGVyIHRoaXMgdHlwZSBpcyBhIHByaW1pdGl2ZSBkYXRhIHR5cGUuXG4gICAqL1xuICByZWFkb25seSBpc1ByaW1pdGl2ZTogYm9vbGVhbjtcblxuICAvKipcbiAgICogR2x1ZSBJbnB1dFN0cmluZyBmb3IgdGhpcyB0eXBlLlxuICAgKi9cbiAgcmVhZG9ubHkgaW5wdXRTdHJpbmc6IHN0cmluZztcbn1cblxuLyoqXG4gKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9hdGhlbmEvbGF0ZXN0L3VnL2RhdGEtdHlwZXMuaHRtbFxuICovXG5leHBvcnQgY2xhc3MgU2NoZW1hIHtcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBCT09MRUFOOiBUeXBlID0ge1xuICAgIGlzUHJpbWl0aXZlOiB0cnVlLFxuICAgIGlucHV0U3RyaW5nOiAnYm9vbGVhbicsXG4gIH07XG5cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBCSU5BUlk6IFR5cGUgPSB7XG4gICAgaXNQcmltaXRpdmU6IHRydWUsXG4gICAgaW5wdXRTdHJpbmc6ICdiaW5hcnknLFxuICB9O1xuXG4gIC8qKlxuICAgKiBBIDY0LWJpdCBzaWduZWQgSU5URUdFUiBpbiB0d2/igJlzIGNvbXBsZW1lbnQgZm9ybWF0LCB3aXRoIGEgbWluaW11bSB2YWx1ZSBvZiAtMl42MyBhbmQgYSBtYXhpbXVtIHZhbHVlIG9mIDJeNjMtMS5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgQklHX0lOVDogVHlwZSA9IHtcbiAgICBpc1ByaW1pdGl2ZTogdHJ1ZSxcbiAgICBpbnB1dFN0cmluZzogJ2JpZ2ludCcsXG4gIH07XG5cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBET1VCTEU6IFR5cGUgPSB7XG4gICAgaXNQcmltaXRpdmU6IHRydWUsXG4gICAgaW5wdXRTdHJpbmc6ICdkb3VibGUnLFxuICB9O1xuXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgRkxPQVQ6IFR5cGUgPSB7XG4gICAgaXNQcmltaXRpdmU6IHRydWUsXG4gICAgaW5wdXRTdHJpbmc6ICdmbG9hdCcsXG4gIH07XG5cbiAgLyoqXG4gICAqIEEgMzItYml0IHNpZ25lZCBJTlRFR0VSIGluIHR3b+KAmXMgY29tcGxlbWVudCBmb3JtYXQsIHdpdGggYSBtaW5pbXVtIHZhbHVlIG9mIC0yXjMxIGFuZCBhIG1heGltdW0gdmFsdWUgb2YgMl4zMS0xLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBJTlRFR0VSOiBUeXBlID0ge1xuICAgIGlzUHJpbWl0aXZlOiB0cnVlLFxuICAgIGlucHV0U3RyaW5nOiAnaW50JyxcbiAgfTtcblxuICAvKipcbiAgICogQSAxNi1iaXQgc2lnbmVkIElOVEVHRVIgaW4gdHdv4oCZcyBjb21wbGVtZW50IGZvcm1hdCwgd2l0aCBhIG1pbmltdW0gdmFsdWUgb2YgLTJeMTUgYW5kIGEgbWF4aW11bSB2YWx1ZSBvZiAyXjE1LTEuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFNNQUxMX0lOVDogVHlwZSA9IHtcbiAgICBpc1ByaW1pdGl2ZTogdHJ1ZSxcbiAgICBpbnB1dFN0cmluZzogJ3NtYWxsaW50JyxcbiAgfTtcblxuICAvKipcbiAgICogQSA4LWJpdCBzaWduZWQgSU5URUdFUiBpbiB0d2/igJlzIGNvbXBsZW1lbnQgZm9ybWF0LCB3aXRoIGEgbWluaW11bSB2YWx1ZSBvZiAtMl43IGFuZCBhIG1heGltdW0gdmFsdWUgb2YgMl43LTFcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgVElOWV9JTlQ6IFR5cGUgPSB7XG4gICAgaXNQcmltaXRpdmU6IHRydWUsXG4gICAgaW5wdXRTdHJpbmc6ICd0aW55aW50JyxcbiAgfTtcblxuICAvKipcbiAgICogRGF0ZSB0eXBlLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBEQVRFOiBUeXBlID0ge1xuICAgIGlzUHJpbWl0aXZlOiB0cnVlLFxuICAgIGlucHV0U3RyaW5nOiAnZGF0ZScsXG4gIH07XG5cbiAgLyoqXG4gICAqIFRpbWVzdGFtcCB0eXBlIChkYXRlIGFuZCB0aW1lKS5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgVElNRVNUQU1QOiBUeXBlID0ge1xuICAgIGlzUHJpbWl0aXZlOiB0cnVlLFxuICAgIGlucHV0U3RyaW5nOiAndGltZXN0YW1wJyxcbiAgfTtcblxuICAvKipcbiAgICogQXJiaXRyYXJ5LWxlbmd0aCBzdHJpbmcgdHlwZS5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgU1RSSU5HOiBUeXBlID0ge1xuICAgIGlzUHJpbWl0aXZlOiB0cnVlLFxuICAgIGlucHV0U3RyaW5nOiAnc3RyaW5nJyxcbiAgfTtcblxuICAvKipcbiAgICogQ3JlYXRlcyBhIGRlY2ltYWwgdHlwZS5cbiAgICpcbiAgICogVE9ETzogQm91bmRzXG4gICAqXG4gICAqIEBwYXJhbSBwcmVjaXNpb24gdGhlIHRvdGFsIG51bWJlciBvZiBkaWdpdHNcbiAgICogQHBhcmFtIHNjYWxlIHRoZSBudW1iZXIgb2YgZGlnaXRzIGluIGZyYWN0aW9uYWwgcGFydCwgdGhlIGRlZmF1bHQgaXMgMFxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBkZWNpbWFsKHByZWNpc2lvbjogbnVtYmVyLCBzY2FsZT86IG51bWJlcik6IFR5cGUge1xuICAgIHJldHVybiB7XG4gICAgICBpc1ByaW1pdGl2ZTogdHJ1ZSxcbiAgICAgIGlucHV0U3RyaW5nOiBzY2FsZSAhPT0gdW5kZWZpbmVkID8gYGRlY2ltYWwoJHtwcmVjaXNpb259LCR7c2NhbGV9KWAgOiBgZGVjaW1hbCgke3ByZWNpc2lvbn0pYCxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEZpeGVkIGxlbmd0aCBjaGFyYWN0ZXIgZGF0YSwgd2l0aCBhIHNwZWNpZmllZCBsZW5ndGggYmV0d2VlbiAxIGFuZCAyNTUuXG4gICAqXG4gICAqIEBwYXJhbSBsZW5ndGggbGVuZ3RoIGJldHdlZW4gMSBhbmQgMjU1XG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGNoYXIobGVuZ3RoOiBudW1iZXIpOiBUeXBlIHtcbiAgICBpZiAobGVuZ3RoIDw9IDAgfHwgbGVuZ3RoID4gMjU1KSB7XG4gICAgICB0aHJvdyBuZXcgVW5zY29wZWRWYWxpZGF0aW9uRXJyb3IobGl0YENoYXJMZW5ndGhPdXRPZlJhbmdlYCwgYGNoYXIgbGVuZ3RoIG11c3QgYmUgKGluY2x1c2l2ZWx5KSBiZXR3ZWVuIDEgYW5kIDI1NSwgYnV0IHdhcyAke2xlbmd0aH1gKTtcbiAgICB9XG4gICAgaWYgKGxlbmd0aCAlIDEgIT09IDApIHtcbiAgICAgIHRocm93IG5ldyBVbnNjb3BlZFZhbGlkYXRpb25FcnJvcihsaXRgQ2hhckxlbmd0aE5vdEludGVnZXJgLCBgY2hhciBsZW5ndGggbXVzdCBiZSBhIHBvc2l0aXZlIGludGVnZXIsIHdhcyAke2xlbmd0aH1gKTtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgIGlzUHJpbWl0aXZlOiB0cnVlLFxuICAgICAgaW5wdXRTdHJpbmc6IGBjaGFyKCR7bGVuZ3RofSlgLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogVmFyaWFibGUgbGVuZ3RoIGNoYXJhY3RlciBkYXRhLCB3aXRoIGEgc3BlY2lmaWVkIGxlbmd0aCBiZXR3ZWVuIDEgYW5kIDY1NTM1LlxuICAgKlxuICAgKiBAcGFyYW0gbGVuZ3RoIGxlbmd0aCBiZXR3ZWVuIDEgYW5kIDY1NTM1LlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyB2YXJjaGFyKGxlbmd0aDogbnVtYmVyKTogVHlwZSB7XG4gICAgaWYgKGxlbmd0aCA8PSAwIHx8IGxlbmd0aCA+IDY1NTM1KSB7XG4gICAgICB0aHJvdyBuZXcgVW5zY29wZWRWYWxpZGF0aW9uRXJyb3IobGl0YFZhcmNoYXJMZW5ndGhPdXRPZlJhbmdlYCwgYHZhcmNoYXIgbGVuZ3RoIG11c3QgYmUgKGluY2x1c2l2ZWx5KSBiZXR3ZWVuIDEgYW5kIDY1NTM1LCBidXQgd2FzICR7bGVuZ3RofWApO1xuICAgIH1cbiAgICBpZiAobGVuZ3RoICUgMSAhPT0gMCkge1xuICAgICAgdGhyb3cgbmV3IFVuc2NvcGVkVmFsaWRhdGlvbkVycm9yKGxpdGBWYXJjaGFyTGVuZ3RoTm90SW50ZWdlcmAsIGB2YXJjaGFyIGxlbmd0aCBtdXN0IGJlIGEgcG9zaXRpdmUgaW50ZWdlciwgd2FzICR7bGVuZ3RofWApO1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgaXNQcmltaXRpdmU6IHRydWUsXG4gICAgICBpbnB1dFN0cmluZzogYHZhcmNoYXIoJHtsZW5ndGh9KWAsXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGFuIGFycmF5IG9mIHNvbWUgb3RoZXIgdHlwZS5cbiAgICpcbiAgICogQHBhcmFtIGl0ZW1UeXBlIHR5cGUgY29udGFpbmVkIGJ5IHRoZSBhcnJheS5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgYXJyYXkoaXRlbVR5cGU6IFR5cGUpOiBUeXBlIHtcbiAgICByZXR1cm4ge1xuICAgICAgaXNQcmltaXRpdmU6IGZhbHNlLFxuICAgICAgaW5wdXRTdHJpbmc6IGBhcnJheTwke2l0ZW1UeXBlLmlucHV0U3RyaW5nfT5gLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIG1hcCBvZiBzb21lIHByaW1pdGl2ZSBrZXkgdHlwZSB0byBzb21lIHZhbHVlIHR5cGUuXG4gICAqXG4gICAqIEBwYXJhbSBrZXlUeXBlIHR5cGUgb2Yga2V5LCBtdXN0IGJlIGEgcHJpbWl0aXZlLlxuICAgKiBAcGFyYW0gdmFsdWVUeXBlIHR5cGUgZm8gdGhlIHZhbHVlIGluZGV4ZWQgYnkgdGhlIGtleS5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgbWFwKGtleVR5cGU6IFR5cGUsIHZhbHVlVHlwZTogVHlwZSk6IFR5cGUge1xuICAgIGlmICgha2V5VHlwZS5pc1ByaW1pdGl2ZSkge1xuICAgICAgdGhyb3cgbmV3IFVuc2NvcGVkVmFsaWRhdGlvbkVycm9yKGxpdGBNYXBLZXlUeXBlTm90UHJpbWl0aXZlYCwgYHRoZSBrZXkgdHlwZSBvZiBhICdtYXAnIG11c3QgYmUgYSBwcmltaXRpdmUsIGJ1dCB3YXMgJHtrZXlUeXBlLmlucHV0U3RyaW5nfWApO1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgaXNQcmltaXRpdmU6IGZhbHNlLFxuICAgICAgaW5wdXRTdHJpbmc6IGBtYXA8JHtrZXlUeXBlLmlucHV0U3RyaW5nfSwke3ZhbHVlVHlwZS5pbnB1dFN0cmluZ30+YCxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXN0ZWQgc3RydWN0dXJlIGNvbnRhaW5pbmcgaW5kaXZpZHVhbGx5IG5hbWVkIGFuZCB0eXBlZCBjb2x1bW5zLlxuICAgKlxuICAgKiBAcGFyYW0gY29sdW1ucyB0aGUgY29sdW1ucyBvZiB0aGUgc3RydWN0dXJlLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBzdHJ1Y3QoY29sdW1uczogQ29sdW1uW10pOiBUeXBlIHtcbiAgICByZXR1cm4ge1xuICAgICAgaXNQcmltaXRpdmU6IGZhbHNlLFxuICAgICAgaW5wdXRTdHJpbmc6IGBzdHJ1Y3Q8JHtjb2x1bW5zLm1hcChjb2x1bW4gPT4ge1xuICAgICAgICByZXR1cm4gYCR7Y29sdW1uLm5hbWV9OiR7Y29sdW1uLnR5cGUuaW5wdXRTdHJpbmd9YDtcbiAgICAgIH0pLmpvaW4oJywnKX0+YCxcbiAgICB9O1xuICB9XG59XG4iXX0=
183
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NoZW1hLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsic2NoZW1hLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsNkNBQTZEO0FBQzdELDRFQUE0RDtBQXdCNUQ7Ozs7OztHQU1HO0FBQ0gsTUFBYSxJQUFJOztJQUNmOzs7O09BSUc7SUFDSSxNQUFNLENBQUMsR0FBRyxDQUFDLFdBQW1CLEVBQUUsV0FBb0I7UUFDekQsT0FBTyxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsV0FBVyxDQUFDLENBQUM7S0FDM0M7SUFFRDs7T0FFRztJQUNhLFdBQVcsQ0FBVTtJQUVyQzs7T0FFRztJQUNhLFdBQVcsQ0FBUztJQUVwQyxZQUFvQixXQUFtQixFQUFFLFdBQW9CO1FBQzNELElBQUksQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUFDO1FBQy9CLElBQUksQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUFDO0tBQ2hDOztBQXZCSCxvQkF3QkM7QUFFRDs7R0FFRztBQUNILE1BQWEsTUFBTTs7SUFDVixNQUFNLENBQVUsT0FBTyxHQUFTLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBRTFELE1BQU0sQ0FBVSxNQUFNLEdBQVMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFFL0Q7O09BRUc7SUFDSSxNQUFNLENBQVUsT0FBTyxHQUFTLElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBRXpELE1BQU0sQ0FBVSxNQUFNLEdBQVMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFFeEQsTUFBTSxDQUFVLEtBQUssR0FBUyxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQztJQUU3RDs7T0FFRztJQUNJLE1BQU0sQ0FBVSxPQUFPLEdBQVMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVB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RUFBRSxXQUFXLElBQUksSUFBSSxDQUFDLENBQUM7S0FDbkQ7O0FBdklILHdCQXdJQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRva2VuLCBVbnNjb3BlZFZhbGlkYXRpb25FcnJvciB9IGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCB7IGxpdCB9IGZyb20gJ2F3cy1jZGstbGliL2NvcmUvbGliL2hlbHBlcnMtaW50ZXJuYWwnO1xuXG4vKipcbiAqIEEgY29sdW1uIG9mIGEgdGFibGUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29sdW1uIHtcbiAgLyoqXG4gICAqIE5hbWUgb2YgdGhlIGNvbHVtbi5cbiAgICovXG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogVHlwZSBvZiB0aGUgY29sdW1uLlxuICAgKi9cbiAgcmVhZG9ubHkgdHlwZTogVHlwZTtcblxuICAvKipcbiAgICogQ29tZW50IGRlc2NyaWJpbmcgdGhlIGNvbHVtbi5cbiAgICpcbiAgICogQGRlZmF1bHQgbm9uZVxuICAgKi9cbiAgcmVhZG9ubHkgY29tbWVudD86IHN0cmluZztcbn1cblxuLyoqXG4gKiBUaGUgdHlwZSBvZiBhIGNvbHVtbiBpbiBhIHRhYmxlIHNjaGVtYS5cbiAqXG4gKiBJbnN0YW5jZXMgYXJlIG9wYXF1ZTogb2J0YWluIG9uZSBmcm9tIGEgYFNjaGVtYWAgZmFjdG9yeSAoZm9yIGV4YW1wbGVcbiAqIGBTY2hlbWEuU1RSSU5HYCwgYFNjaGVtYS5kZWNpbWFsKC4uLilgLCBgU2NoZW1hLmFycmF5KC4uLilgKSBvciwgZm9yIGEgdHlwZSB0aGVcbiAqIGBTY2hlbWFgIGZhY3RvcmllcyBkb24ndCBtb2RlbCwgZnJvbSBgU2NoZW1hLmN1c3RvbSguLi4pYC5cbiAqL1xuZXhwb3J0IGNsYXNzIFR5cGUge1xuICAvKipcbiAgICogQ3JlYXRlIGEgYFR5cGVgIGZyb20gaXRzIHBhcnRzLlxuICAgKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgX29mKGlucHV0U3RyaW5nOiBzdHJpbmcsIGlzUHJpbWl0aXZlOiBib29sZWFuKTogVHlwZSB7XG4gICAgcmV0dXJuIG5ldyBUeXBlKGlucHV0U3RyaW5nLCBpc1ByaW1pdGl2ZSk7XG4gIH1cblxuICAvKipcbiAgICogSW5kaWNhdGVzIHdoZXRoZXIgdGhpcyB0eXBlIGlzIGEgcHJpbWl0aXZlIGRhdGEgdHlwZS5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBpc1ByaW1pdGl2ZTogYm9vbGVhbjtcblxuICAvKipcbiAgICogR2x1ZSBJbnB1dFN0cmluZyBmb3IgdGhpcyB0eXBlLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGlucHV0U3RyaW5nOiBzdHJpbmc7XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcihpbnB1dFN0cmluZzogc3RyaW5nLCBpc1ByaW1pdGl2ZTogYm9vbGVhbikge1xuICAgIHRoaXMuaW5wdXRTdHJpbmcgPSBpbnB1dFN0cmluZztcbiAgICB0aGlzLmlzUHJpbWl0aXZlID0gaXNQcmltaXRpdmU7XG4gIH1cbn1cblxuLyoqXG4gKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9hdGhlbmEvbGF0ZXN0L3VnL2RhdGEtdHlwZXMuaHRtbFxuICovXG5leHBvcnQgY2xhc3MgU2NoZW1hIHtcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBCT09MRUFOOiBUeXBlID0gVHlwZS5fb2YoJ2Jvb2xlYW4nLCB0cnVlKTtcblxuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IEJJTkFSWTogVHlwZSA9IFR5cGUuX29mKCdiaW5hcnknLCB0cnVlKTtcblxuICAvKipcbiAgICogQSA2NC1iaXQgc2lnbmVkIElOVEVHRVIgaW4gdHdv4oCZcyBjb21wbGVtZW50IGZvcm1hdCwgd2l0aCBhIG1pbmltdW0gdmFsdWUgb2YgLTJeNjMgYW5kIGEgbWF4aW11bSB2YWx1ZSBvZiAyXjYzLTEuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IEJJR19JTlQ6IFR5cGUgPSBUeXBlLl9vZignYmlnaW50JywgdHJ1ZSk7XG5cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBET1VCTEU6IFR5cGUgPSBUeXBlLl9vZignZG91YmxlJywgdHJ1ZSk7XG5cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBGTE9BVDogVHlwZSA9IFR5cGUuX29mKCdmbG9hdCcsIHRydWUpO1xuXG4gIC8qKlxuICAgKiBBIDMyLWJpdCBzaWduZWQgSU5URUdFUiBpbiB0d2/igJlzIGNvbXBsZW1lbnQgZm9ybWF0LCB3aXRoIGEgbWluaW11bSB2YWx1ZSBvZiAtMl4zMSBhbmQgYSBtYXhpbXVtIHZhbHVlIG9mIDJeMzEtMS5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgSU5URUdFUjogVHlwZSA9IFR5cGUuX29mKCdpbnQnLCB0cnVlKTtcblxuICAvKipcbiAgICogQSAxNi1iaXQgc2lnbmVkIElOVEVHRVIgaW4gdHdv4oCZcyBjb21wbGVtZW50IGZvcm1hdCwgd2l0aCBhIG1pbmltdW0gdmFsdWUgb2YgLTJeMTUgYW5kIGEgbWF4aW11bSB2YWx1ZSBvZiAyXjE1LTEuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFNNQUxMX0lOVDogVHlwZSA9IFR5cGUuX29mKCdzbWFsbGludCcsIHRydWUpO1xuXG4gIC8qKlxuICAgKiBBIDgtYml0IHNpZ25lZCBJTlRFR0VSIGluIHR3b+KAmXMgY29tcGxlbWVudCBmb3JtYXQsIHdpdGggYSBtaW5pbXVtIHZhbHVlIG9mIC0yXjcgYW5kIGEgbWF4aW11bSB2YWx1ZSBvZiAyXjctMVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBUSU5ZX0lOVDogVHlwZSA9IFR5cGUuX29mKCd0aW55aW50JywgdHJ1ZSk7XG5cbiAgLyoqXG4gICAqIERhdGUgdHlwZS5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgREFURTogVHlwZSA9IFR5cGUuX29mKCdkYXRlJywgdHJ1ZSk7XG5cbiAgLyoqXG4gICAqIFRpbWVzdGFtcCB0eXBlIChkYXRlIGFuZCB0aW1lKS5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgVElNRVNUQU1QOiBUeXBlID0gVHlwZS5fb2YoJ3RpbWVzdGFtcCcsIHRydWUpO1xuXG4gIC8qKlxuICAgKiBBcmJpdHJhcnktbGVuZ3RoIHN0cmluZyB0eXBlLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBTVFJJTkc6IFR5cGUgPSBUeXBlLl9vZignc3RyaW5nJywgdHJ1ZSk7XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBkZWNpbWFsIHR5cGUuXG4gICAqXG4gICAqIEBwYXJhbSBwcmVjaXNpb24gdGhlIHRvdGFsIG51bWJlciBvZiBkaWdpdHMsIGJldHdlZW4gMSBhbmQgMzhcbiAgICogQHBhcmFtIHNjYWxlIHRoZSBudW1iZXIgb2YgZGlnaXRzIGluIHRoZSBmcmFjdGlvbmFsIHBhcnQsIGJldHdlZW4gMCBhbmQgMzg7IHRoZSBkZWZhdWx0IGlzIDBcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYXRoZW5hL2xhdGVzdC91Zy9kYXRhLXR5cGVzLmh0bWxcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZGVjaW1hbChwcmVjaXNpb246IG51bWJlciwgc2NhbGU/OiBudW1iZXIpOiBUeXBlIHtcbiAgICBpZiAoVG9rZW4uaXNSZXNvbHZlZChwcmVjaXNpb24pICYmIChwcmVjaXNpb24gPCAxIHx8IHByZWNpc2lvbiA+IDM4IHx8IHByZWNpc2lvbiAlIDEgIT09IDApKSB7XG4gICAgICB0aHJvdyBuZXcgVW5zY29wZWRWYWxpZGF0aW9uRXJyb3IobGl0YERlY2ltYWxQcmVjaXNpb25PdXRPZlJhbmdlYCwgYGRlY2ltYWwgcHJlY2lzaW9uIG11c3QgYmUgYSBwb3NpdGl2ZSBpbnRlZ2VyIGJldHdlZW4gMSBhbmQgMzgsIGdvdCAke3ByZWNpc2lvbn1gKTtcbiAgICB9XG4gICAgaWYgKHNjYWxlICE9PSB1bmRlZmluZWQgJiYgVG9rZW4uaXNSZXNvbHZlZChzY2FsZSkgJiYgKHNjYWxlIDwgMCB8fCBzY2FsZSA+IDM4IHx8IHNjYWxlICUgMSAhPT0gMCkpIHtcbiAgICAgIHRocm93IG5ldyBVbnNjb3BlZFZhbGlkYXRpb25FcnJvcihsaXRgRGVjaW1hbFNjYWxlT3V0T2ZSYW5nZWAsIGBkZWNpbWFsIHNjYWxlIG11c3QgYmUgYW4gaW50ZWdlciBiZXR3ZWVuIDAgYW5kIDM4LCBnb3QgJHtzY2FsZX1gKTtcbiAgICB9XG4gICAgcmV0dXJuIFR5cGUuX29mKHNjYWxlICE9PSB1bmRlZmluZWQgPyBgZGVjaW1hbCgke3ByZWNpc2lvbn0sJHtzY2FsZX0pYCA6IGBkZWNpbWFsKCR7cHJlY2lzaW9ufSlgLCB0cnVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGaXhlZCBsZW5ndGggY2hhcmFjdGVyIGRhdGEsIHdpdGggYSBzcGVjaWZpZWQgbGVuZ3RoIGJldHdlZW4gMSBhbmQgMjU1LlxuICAgKlxuICAgKiBAcGFyYW0gbGVuZ3RoIGxlbmd0aCBiZXR3ZWVuIDEgYW5kIDI1NVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBjaGFyKGxlbmd0aDogbnVtYmVyKTogVHlwZSB7XG4gICAgaWYgKGxlbmd0aCA8PSAwIHx8IGxlbmd0aCA+IDI1NSkge1xuICAgICAgdGhyb3cgbmV3IFVuc2NvcGVkVmFsaWRhdGlvbkVycm9yKGxpdGBDaGFyTGVuZ3RoT3V0T2ZSYW5nZWAsIGBjaGFyIGxlbmd0aCBtdXN0IGJlIChpbmNsdXNpdmVseSkgYmV0d2VlbiAxIGFuZCAyNTUsIGJ1dCB3YXMgJHtsZW5ndGh9YCk7XG4gICAgfVxuICAgIGlmIChsZW5ndGggJSAxICE9PSAwKSB7XG4gICAgICB0aHJvdyBuZXcgVW5zY29wZWRWYWxpZGF0aW9uRXJyb3IobGl0YENoYXJMZW5ndGhOb3RJbnRlZ2VyYCwgYGNoYXIgbGVuZ3RoIG11c3QgYmUgYSBwb3NpdGl2ZSBpbnRlZ2VyLCB3YXMgJHtsZW5ndGh9YCk7XG4gICAgfVxuICAgIHJldHVybiBUeXBlLl9vZihgY2hhcigke2xlbmd0aH0pYCwgdHJ1ZSk7XG4gIH1cblxuICAvKipcbiAgICogVmFyaWFibGUgbGVuZ3RoIGNoYXJhY3RlciBkYXRhLCB3aXRoIGEgc3BlY2lmaWVkIGxlbmd0aCBiZXR3ZWVuIDEgYW5kIDY1NTM1LlxuICAgKlxuICAgKiBAcGFyYW0gbGVuZ3RoIGxlbmd0aCBiZXR3ZWVuIDEgYW5kIDY1NTM1LlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyB2YXJjaGFyKGxlbmd0aDogbnVtYmVyKTogVHlwZSB7XG4gICAgaWYgKGxlbmd0aCA8PSAwIHx8IGxlbmd0aCA+IDY1NTM1KSB7XG4gICAgICB0aHJvdyBuZXcgVW5zY29wZWRWYWxpZGF0aW9uRXJyb3IobGl0YFZhcmNoYXJMZW5ndGhPdXRPZlJhbmdlYCwgYHZhcmNoYXIgbGVuZ3RoIG11c3QgYmUgKGluY2x1c2l2ZWx5KSBiZXR3ZWVuIDEgYW5kIDY1NTM1LCBidXQgd2FzICR7bGVuZ3RofWApO1xuICAgIH1cbiAgICBpZiAobGVuZ3RoICUgMSAhPT0gMCkge1xuICAgICAgdGhyb3cgbmV3IFVuc2NvcGVkVmFsaWRhdGlvbkVycm9yKGxpdGBWYXJjaGFyTGVuZ3RoTm90SW50ZWdlcmAsIGB2YXJjaGFyIGxlbmd0aCBtdXN0IGJlIGEgcG9zaXRpdmUgaW50ZWdlciwgd2FzICR7bGVuZ3RofWApO1xuICAgIH1cbiAgICByZXR1cm4gVHlwZS5fb2YoYHZhcmNoYXIoJHtsZW5ndGh9KWAsIHRydWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYW4gYXJyYXkgb2Ygc29tZSBvdGhlciB0eXBlLlxuICAgKlxuICAgKiBAcGFyYW0gaXRlbVR5cGUgdHlwZSBjb250YWluZWQgYnkgdGhlIGFycmF5LlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBhcnJheShpdGVtVHlwZTogVHlwZSk6IFR5cGUge1xuICAgIHJldHVybiBUeXBlLl9vZihgYXJyYXk8JHtpdGVtVHlwZS5pbnB1dFN0cmluZ30+YCwgZmFsc2UpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBtYXAgb2Ygc29tZSBwcmltaXRpdmUga2V5IHR5cGUgdG8gc29tZSB2YWx1ZSB0eXBlLlxuICAgKlxuICAgKiBAcGFyYW0ga2V5VHlwZSB0eXBlIG9mIGtleSwgbXVzdCBiZSBhIHByaW1pdGl2ZS5cbiAgICogQHBhcmFtIHZhbHVlVHlwZSB0eXBlIGZvIHRoZSB2YWx1ZSBpbmRleGVkIGJ5IHRoZSBrZXkuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIG1hcChrZXlUeXBlOiBUeXBlLCB2YWx1ZVR5cGU6IFR5cGUpOiBUeXBlIHtcbiAgICBpZiAoIWtleVR5cGUuaXNQcmltaXRpdmUpIHtcbiAgICAgIHRocm93IG5ldyBVbnNjb3BlZFZhbGlkYXRpb25FcnJvcihsaXRgTWFwS2V5VHlwZU5vdFByaW1pdGl2ZWAsIGB0aGUga2V5IHR5cGUgb2YgYSAnbWFwJyBtdXN0IGJlIGEgcHJpbWl0aXZlLCBidXQgd2FzICR7a2V5VHlwZS5pbnB1dFN0cmluZ31gKTtcbiAgICB9XG4gICAgcmV0dXJuIFR5cGUuX29mKGBtYXA8JHtrZXlUeXBlLmlucHV0U3RyaW5nfSwke3ZhbHVlVHlwZS5pbnB1dFN0cmluZ30+YCwgZmFsc2UpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXN0ZWQgc3RydWN0dXJlIGNvbnRhaW5pbmcgaW5kaXZpZHVhbGx5IG5hbWVkIGFuZCB0eXBlZCBjb2x1bW5zLlxuICAgKlxuICAgKiBAcGFyYW0gY29sdW1ucyB0aGUgY29sdW1ucyBvZiB0aGUgc3RydWN0dXJlLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBzdHJ1Y3QoY29sdW1uczogQ29sdW1uW10pOiBUeXBlIHtcbiAgICByZXR1cm4gVHlwZS5fb2YoYHN0cnVjdDwke2NvbHVtbnMubWFwKGNvbHVtbiA9PiB7XG4gICAgICByZXR1cm4gYCR7Y29sdW1uLm5hbWV9OiR7Y29sdW1uLnR5cGUuaW5wdXRTdHJpbmd9YDtcbiAgICB9KS5qb2luKCcsJyl9PmAsIGZhbHNlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgY3VzdG9tIHR5cGUgZnJvbSBhIHJhdyBHbHVlIGlucHV0IHN0cmluZy5cbiAgICpcbiAgICogRXNjYXBlIGhhdGNoIGZvciBjb2x1bW4gdHlwZXMgdGhlIG90aGVyIGBTY2hlbWFgIGZhY3RvcmllcyBkb24ndCBtb2RlbC4gVGhlXG4gICAqIGBpbnB1dFN0cmluZ2AgaXMgZW1pdHRlZCB2ZXJiYXRpbSBhbmQgaXMgbm90IHZhbGlkYXRlZC5cbiAgICpcbiAgICogQHBhcmFtIGlucHV0U3RyaW5nIHRoZSBHbHVlIGlucHV0IHN0cmluZyBmb3IgdGhlIHR5cGUgKGZvciBleGFtcGxlIGBpbnRlcnZhbF9kYXlfdG9fc2Vjb25kYCkuXG4gICAqIEBwYXJhbSBpc1ByaW1pdGl2ZSB3aGV0aGVyIHRoZSB0eXBlIGlzIGEgcHJpbWl0aXZlIChub24tbmVzdGVkKSBkYXRhIHR5cGUuIERlZmF1bHRzIHRvIHRydWUuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGN1c3RvbShpbnB1dFN0cmluZzogc3RyaW5nLCBpc1ByaW1pdGl2ZT86IGJvb2xlYW4pOiBUeXBlIHtcbiAgICByZXR1cm4gVHlwZS5fb2YoaW5wdXRTdHJpbmcsIGlzUHJpbWl0aXZlID8/IHRydWUpO1xuICB9XG59XG4iXX0=
@@ -107,7 +107,7 @@ const JOB_BOOKMARKS_ENCRYPTION_MODE = 'CSE-KMS';
107
107
  * with S3-managed encryption.
108
108
  */
109
109
  class S3Encryption {
110
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-glue-alpha.S3Encryption", version: "2.266.0-alpha.0" };
110
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-glue-alpha.S3Encryption", version: "2.268.0-alpha.0" };
111
111
  /**
112
112
  * Server-side encryption (SSE) with an Amazon S3-managed key.
113
113
  *
@@ -141,7 +141,7 @@ exports.S3Encryption = S3Encryption;
141
141
  * CloudWatch Logs support only server-side encryption with a KMS key.
142
142
  */
143
143
  class CloudWatchEncryption {
144
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-glue-alpha.CloudWatchEncryption", version: "2.266.0-alpha.0" };
144
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-glue-alpha.CloudWatchEncryption", version: "2.268.0-alpha.0" };
145
145
  /**
146
146
  * Server-side encryption (SSE) with an AWS KMS key managed by the account owner.
147
147
  *
@@ -163,7 +163,7 @@ exports.CloudWatchEncryption = CloudWatchEncryption;
163
163
  * Job bookmarks support only client-side encryption with a KMS key.
164
164
  */
165
165
  class JobBookmarksEncryption {
166
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-glue-alpha.JobBookmarksEncryption", version: "2.266.0-alpha.0" };
166
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-glue-alpha.JobBookmarksEncryption", version: "2.268.0-alpha.0" };
167
167
  /**
168
168
  * Client-side encryption (CSE) with an AWS KMS key managed by the account owner.
169
169
  *
@@ -207,7 +207,7 @@ let SecurityConfiguration = (() => {
207
207
  SecurityConfiguration = _classThis = _classDescriptor.value;
208
208
  if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
209
209
  }
210
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-glue-alpha.SecurityConfiguration", version: "2.266.0-alpha.0" };
210
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-glue-alpha.SecurityConfiguration", version: "2.268.0-alpha.0" };
211
211
  /** Uniquely identifies this class. */
212
212
  static PROPERTY_INJECTION_ID = '@aws-cdk.aws-glue-alpha.SecurityConfiguration';
213
213
  /**
@@ -1,3 +1,4 @@
1
+ import type * as kms from 'aws-cdk-lib/aws-kms';
1
2
  /**
2
3
  * The compression type.
3
4
  *
@@ -318,14 +319,24 @@ export declare class StorageParameter {
318
319
  */
319
320
  static writeMaxFileSizeMb(value: number): StorageParameter;
320
321
  /**
321
- * You can specify an AWS Key Management Service key to enable Server–Side Encryption (SSE) for Amazon S3 objects.
322
+ * Enables server-side encryption (SSE-KMS) with the given AWS KMS key on the
323
+ * files Redshift Spectrum writes for this table (via `CREATE EXTERNAL TABLE AS`
324
+ * or `INSERT`).
325
+ *
326
+ * Redshift Spectrum accepts either the key's ARN or its bare key ID for the
327
+ * `write.kms.key.id` property, and encrypts the written objects with that key;
328
+ * this renders the ARN. To use the S3 bucket's default KMS key instead, set the
329
+ * literal value `auto` via `StorageParameter.custom('write.kms.key.id', 'auto')` —
330
+ * this typed factory cannot express `auto`.
331
+ *
332
+ * @see https://docs.aws.amazon.com/redshift/latest/dg/r_CREATE_EXTERNAL_TABLE.html
322
333
  */
323
- static writeKmsKeyId(value: string): StorageParameter;
334
+ static writeKmsKeyId(key: kms.IKeyRef): StorageParameter;
324
335
  /**
325
336
  * A custom storage parameter.
326
337
  * @param key - The key of the storage parameter.
327
338
  * @param value - The value of the storage parameter.
328
339
  */
329
- static custom(key: string, value: any): StorageParameter;
340
+ static custom(key: string, value: string): StorageParameter;
330
341
  protected constructor(key: string, value: string);
331
342
  }
@@ -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.266.0-alpha.0" };
274
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-glue-alpha.StorageParameter", version: "2.268.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
  */
@@ -433,10 +433,20 @@ class StorageParameter {
433
433
  return new StorageParameter('write.maxfilesize.mb', value.toString());
434
434
  }
435
435
  /**
436
- * You can specify an AWS Key Management Service key to enable Server–Side Encryption (SSE) for Amazon S3 objects.
436
+ * Enables server-side encryption (SSE-KMS) with the given AWS KMS key on the
437
+ * files Redshift Spectrum writes for this table (via `CREATE EXTERNAL TABLE AS`
438
+ * or `INSERT`).
439
+ *
440
+ * Redshift Spectrum accepts either the key's ARN or its bare key ID for the
441
+ * `write.kms.key.id` property, and encrypts the written objects with that key;
442
+ * this renders the ARN. To use the S3 bucket's default KMS key instead, set the
443
+ * literal value `auto` via `StorageParameter.custom('write.kms.key.id', 'auto')` —
444
+ * this typed factory cannot express `auto`.
445
+ *
446
+ * @see https://docs.aws.amazon.com/redshift/latest/dg/r_CREATE_EXTERNAL_TABLE.html
437
447
  */
438
- static writeKmsKeyId(value) {
439
- return new StorageParameter('write.kms.key.id', value);
448
+ static writeKmsKeyId(key) {
449
+ return new StorageParameter('write.kms.key.id', key.keyRef.keyArn);
440
450
  }
441
451
  /**
442
452
  * A custom storage parameter.
@@ -444,7 +454,7 @@ class StorageParameter {
444
454
  * @param value - The value of the storage parameter.
445
455
  */
446
456
  static custom(key, value) {
447
- return new StorageParameter(key, value.toString());
457
+ return new StorageParameter(key, value);
448
458
  }
449
459
  constructor(key, value) {
450
460
  this.key = key;
@@ -452,4 +462,4 @@ class StorageParameter {
452
462
  }
453
463
  }
454
464
  exports.StorageParameter = StorageParameter;
455
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmFnZS1wYXJhbWV0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJzdG9yYWdlLXBhcmFtZXRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBOzs7O0dBSUc7QUFDSCxJQUFZLGVBb0JYO0FBcEJELFdBQVksZUFBZTtJQUN6Qjs7T0FFRztJQUNILGdDQUFhLENBQUE7SUFFYjs7T0FFRztJQUNILGtDQUFlLENBQUE7SUFFZjs7T0FFRztJQUNILGdDQUFhLENBQUE7SUFFYjs7T0FFRztJQUNILG9DQUFpQixDQUFBO0FBQ25CLENBQUMsRUFwQlcsZUFBZSwrQkFBZixlQUFlLFFBb0IxQjtBQUVEOzs7O0dBSUc7QUFDSCxJQUFZLHlCQXlCWDtBQXpCRCxXQUFZLHlCQUF5QjtJQUNuQzs7T0FFRztJQUNILGtEQUFxQixDQUFBO0lBRXJCOztPQUVHO0lBQ0gsMENBQWEsQ0FBQTtJQUViOztPQUVHO0lBQ0gsd0RBQTJCLENBQUE7SUFFM0I7O09BRUc7SUFDSCxrREFBcUIsQ0FBQTtJQUVyQjs7T0FFRztJQUNILGdEQUFtQixDQUFBO0FBQ3JCLENBQUMsRUF6QlcseUJBQXlCLHlDQUF6Qix5QkFBeUIsUUF5QnBDO0FBRUQ7Ozs7R0FJRztBQUNILElBQVksNkJBb0JYO0FBcEJELFdBQVksNkJBQTZCO0lBQ3ZDOztPQUVHO0lBQ0gsc0RBQXFCLENBQUE7SUFFckI7O09BRUc7SUFDSCw4Q0FBYSxDQUFBO0lBRWI7O09BRUc7SUFDSCw0REFBMkIsQ0FBQTtJQUUzQjs7T0FFRztJQUNILHNEQUFxQixDQUFBO0FBQ3ZCLENBQUMsRUFwQlcsNkJBQTZCLDZDQUE3Qiw2QkFBNkIsUUFvQnhDO0FBRUQ7Ozs7R0FJRztBQUNILElBQVksMEJBeUJYO0FBekJELFdBQVksMEJBQTBCO0lBQ3BDOztPQUVHO0lBQ0gseURBQTJCLENBQUE7SUFFM0I7O09BRUc7SUFDSCxtREFBcUIsQ0FBQTtJQUVyQjs7T0FFRztJQUNILDJDQUFhLENBQUE7SUFFYjs7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QU8sSUFBSSxnQkFBZ0IsQ0FBQyx1QkFBdUIsRUFBRSxLQUFLLENBQUMsQ0FBQztLQUM3RDtJQUVEOzs7O09BSUc7SUFDSSxNQUFNLENBQUMsYUFBYSxDQUFDLEtBQW9COzs7Ozs7Ozs7O1FBQzlDLE9BQU8sSUFBSSxnQkFBZ0IsQ0FBQyxnQkFBZ0IsRUFBRSxLQUFLLENBQUMsQ0FBQztLQUN0RDtJQUVEOztPQUVHO0lBQ0ksTUFBTSxDQUFDLGtCQUFrQixDQUFDLEtBQWE7UUFDNUMsT0FBTyxJQUFJLGdCQUFnQixDQUFDLHNCQUFzQixFQUFFLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO0tBQ3ZFO0lBRUQ7O09BRUc7SUFDSSxNQUFNLENBQUMsYUFBYSxDQUFDLEtBQWE7UUFDdkMsT0FBTyxJQUFJLGdCQUFnQixDQUFDLGtCQUFrQixFQUFFLEtBQUssQ0FBQyxDQUFDO0tBQ3hEO0lBRUQ7Ozs7T0FJRztJQUNJLE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBVyxFQUFFLEtBQVU7UUFDMUMsT0FBTyxJQUFJLGdCQUFnQixDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztLQUNwRDtJQUVELFlBQXNDLEdBQVcsRUFBa0IsS0FBYTtRQUExQyxRQUFHLEdBQUgsR0FBRyxDQUFRO1FBQWtCLFVBQUssR0FBTCxLQUFLLENBQVE7S0FBSTs7QUF2SHRGLDRDQXdIQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogVGhlIGNvbXByZXNzaW9uIHR5cGUuXG4gKlxuICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vcmVkc2hpZnQvbGF0ZXN0L2RnL3JfQ1JFQVRFX0VYVEVSTkFMX1RBQkxFLmh0bWwjcl9DUkVBVEVfRVhURVJOQUxfVEFCTEUtcGFyYW1ldGVycyAtIHVuZGVyIF9cIlRBQkxFIFBST1BFUlRJRVNcIl8gPiBfXCJjb21wcmVzc2lvbl90eXBlXCJfXG4gKi9cbmV4cG9ydCBlbnVtIENvbXByZXNzaW9uVHlwZSB7XG4gIC8qKlxuICAgKiBObyBjb21wcmVzc2lvbi5cbiAgICovXG4gIE5PTkUgPSAnbm9uZScsXG5cbiAgLyoqXG4gICAqIEJ1cnJvd3MtV2hlZWxlciBjb21wcmVzc2lvbi5cbiAgICovXG4gIEJaSVAyID0gJ2J6aXAyJyxcblxuICAvKipcbiAgICogRGVmbGF0ZSBjb21wcmVzc2lvbi5cbiAgICovXG4gIEdaSVAgPSAnZ3ppcCcsXG5cbiAgLyoqXG4gICAqIENvbXByZXNzaW9uIGFsZ29yaXRobSBmb2N1c2VkIG9uIGhpZ2ggY29tcHJlc3Npb24gYW5kIGRlY29tcHJlc3Npb24gc3BlZWRzLCByYXRoZXIgdGhhbiB0aGUgbWF4aW11bSBwb3NzaWJsZSBjb21wcmVzc2lvbi5cbiAgICovXG4gIFNOQVBQWSA9ICdzbmFwcHknLFxufVxuXG4vKipcbiAqIFNwZWNpZmllcyB0aGUgYWN0aW9uIHRvIHBlcmZvcm0gd2hlbiBxdWVyeSByZXN1bHRzIGNvbnRhaW4gaW52YWxpZCBVVEYtOCBjaGFyYWN0ZXIgdmFsdWVzLlxuICpcbiAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL3JlZHNoaWZ0L2xhdGVzdC9kZy9yX0NSRUFURV9FWFRFUk5BTF9UQUJMRS5odG1sI3JfQ1JFQVRFX0VYVEVSTkFMX1RBQkxFLXBhcmFtZXRlcnMgLSB1bmRlciBfXCJUQUJMRSBQUk9QRVJUSUVTXCJfID4gX1wiaW52YWxpZF9jaGFyX2hhbmRsaW5nXCJfXG4gKi9cbmV4cG9ydCBlbnVtIEludmFsaWRDaGFySGFuZGxpbmdBY3Rpb24ge1xuICAvKipcbiAgICogRG9lc24ndCBwZXJmb3JtIGludmFsaWQgY2hhcmFjdGVyIGhhbmRsaW5nLlxuICAgKi9cbiAgRElTQUJMRUQgPSAnRElTQUJMRUQnLFxuXG4gIC8qKlxuICAgKiBDYW5jZWxzIHF1ZXJpZXMgdGhhdCByZXR1cm4gZGF0YSBjb250YWluaW5nIGludmFsaWQgVVRGLTggdmFsdWVzLlxuICAgKi9cbiAgRkFJTCA9ICdGQUlMJyxcblxuICAvKipcbiAgICogUmVwbGFjZXMgaW52YWxpZCBVVEYtOCB2YWx1ZXMgd2l0aCBudWxsLlxuICAgKi9cbiAgU0VUX1RPX05VTEwgPSAnU0VUX1RPX05VTEwnLFxuXG4gIC8qKlxuICAgKiBSZXBsYWNlcyBlYWNoIHZhbHVlIGluIHRoZSByb3cgd2l0aCBudWxsLlxuICAgKi9cbiAgRFJPUF9ST1cgPSAnRFJPUF9ST1cnLFxuXG4gIC8qKlxuICAgKiBSZXBsYWNlcyB0aGUgaW52YWxpZCBjaGFyYWN0ZXIgd2l0aCB0aGUgcmVwbGFjZW1lbnQgY2hhcmFjdGVyIHlvdSBzcGVjaWZ5IHVzaW5nIGBSRVBMQUNFTUVOVF9DSEFSYC5cbiAgICovXG4gIFJFUExBQ0UgPSAnUkVQTEFDRScsXG59XG5cbi8qKlxuICogU3BlY2lmaWVzIHRoZSBhY3Rpb24gdG8gcGVyZm9ybSB3aGVuIE9SQyBkYXRhIGNvbnRhaW5zIGFuIGludGVnZXIgKGZvciBleGFtcGxlLCBCSUdJTlQgb3IgaW50NjQpIHRoYXQgaXMgbGFyZ2VyIHRoYW4gdGhlIGNvbHVtbiBkZWZpbml0aW9uIChmb3IgZXhhbXBsZSwgU01BTExJTlQgb3IgaW50MTYpLlxuICpcbiAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL3JlZHNoaWZ0L2xhdGVzdC9kZy9yX0NSRUFURV9FWFRFUk5BTF9UQUJMRS5odG1sI3JfQ1JFQVRFX0VYVEVSTkFMX1RBQkxFLXBhcmFtZXRlcnMgLSB1bmRlciBfXCJUQUJMRSBQUk9QRVJUSUVTXCJfID4gX1wibnVtZXJpY19vdmVyZmxvd19oYW5kbGluZ1wiX1xuICovXG5leHBvcnQgZW51bSBOdW1lcmljT3ZlcmZsb3dIYW5kbGluZ0FjdGlvbiB7XG4gIC8qKlxuICAgKiBJbnZhbGlkIGNoYXJhY3RlciBoYW5kbGluZyBpcyB0dXJuZWQgb2ZmLlxuICAgKi9cbiAgRElTQUJMRUQgPSAnRElTQUJMRUQnLFxuXG4gIC8qKlxuICAgKiBDYW5jZWwgdGhlIHF1ZXJ5IHdoZW4gdGhlIGRhdGEgaW5jbHVkZXMgaW52YWxpZCBjaGFyYWN0ZXJzLlxuICAgKi9cbiAgRkFJTCA9ICdGQUlMJyxcblxuICAvKipcbiAgICogU2V0IGludmFsaWQgY2hhcmFjdGVycyB0byBudWxsLlxuICAgKi9cbiAgU0VUX1RPX05VTEwgPSAnU0VUX1RPX05VTEwnLFxuXG4gIC8qKlxuICAgKiBTZXQgZWFjaCB2YWx1ZSBpbiB0aGUgcm93IHRvIG51bGwuXG4gICAqL1xuICBEUk9QX1JPVyA9ICdEUk9QX1JPVycsXG59XG5cbi8qKlxuICogU3BlY2lmaWVzIGhvdyB0byBoYW5kbGUgZGF0YSBiZWluZyBsb2FkZWQgdGhhdCBleGNlZWRzIHRoZSBsZW5ndGggb2YgdGhlIGRhdGEgdHlwZSBkZWZpbmVkIGZvciBjb2x1bW5zIGNvbnRhaW5pbmcgVkFSQllURSBkYXRhLiBCeSBkZWZhdWx0LCBSZWRzaGlmdCBTcGVjdHJ1bSBzZXRzIHRoZSB2YWx1ZSB0byBudWxsIGZvciBkYXRhIHRoYXQgZXhjZWVkcyB0aGUgd2lkdGggb2YgdGhlIGNvbHVtbi5cbiAqXG4gKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9yZWRzaGlmdC9sYXRlc3QvZGcvcl9DUkVBVEVfRVhURVJOQUxfVEFCTEUuaHRtbCNyX0NSRUFURV9FWFRFUk5BTF9UQUJMRS1wYXJhbWV0ZXJzIC0gdW5kZXIgX1wiVEFCTEUgUFJPUEVSVElFU1wiXyA+IF9cInN1cnBsdXNfYnl0ZXNfaGFuZGxpbmdcIl9cbiAqL1xuZXhwb3J0IGVudW0gU3VycGx1c0J5dGVzSGFuZGxpbmdBY3Rpb24ge1xuICAvKipcbiAgICogUmVwbGFjZXMgZGF0YSB0aGF0IGV4Y2VlZHMgdGhlIGNvbHVtbiB3aWR0aCB3aXRoIG51bGwuXG4gICAqL1xuICBTRVRfVE9fTlVMTCA9ICdTRVRfVE9fTlVMTCcsXG5cbiAgLyoqXG4gICAqIERvZXNuJ3QgcGVyZm9ybSBzdXJwbHVzIGJ5dGUgaGFuZGxpbmcuXG4gICAqL1xuICBESVNBQkxFRCA9ICdESVNBQkxFRCcsXG5cbiAgLyoqXG4gICAqIENhbmNlbHMgcXVlcmllcyB0aGF0IHJldHVybiBkYXRhIGV4Y2VlZGluZyB0aGUgY29sdW1uIHdpZHRoLlxuICAgKi9cbiAgRkFJTCA9ICdGQUlMJyxcblxuICAvKipcbiAgICogRHJvcCBhbGwgcm93cyB0aGF0IGNvbnRhaW4gZGF0YSBleGNlZWRpbmcgY29sdW1uIHdpZHRoLlxuICAgKi9cbiAgRFJPUF9ST1cgPSAnRFJPUF9ST1cnLFxuXG4gIC8qKlxuICAgKiBSZW1vdmVzIHRoZSBjaGFyYWN0ZXJzIHRoYXQgZXhjZWVkIHRoZSBtYXhpbXVtIG51bWJlciBvZiBjaGFyYWN0ZXJzIGRlZmluZWQgZm9yIHRoZSBjb2x1bW4uXG4gICAqL1xuICBUUlVOQ0FURSA9ICdUUlVOQ0FURScsXG59XG5cbi8qKlxuICogU3BlY2lmaWVzIGhvdyB0byBoYW5kbGUgZGF0YSBiZWluZyBsb2FkZWQgdGhhdCBleGNlZWRzIHRoZSBsZW5ndGggb2YgdGhlIGRhdGEgdHlwZSBkZWZpbmVkIGZvciBjb2x1bW5zIGNvbnRhaW5pbmcgVkFSQ0hBUiwgQ0hBUiwgb3Igc3RyaW5nIGRhdGEuIEJ5IGRlZmF1bHQsIFJlZHNoaWZ0IFNwZWN0cnVtIHNldHMgdGhlIHZhbHVlIHRvIG51bGwgZm9yIGRhdGEgdGhhdCBleGNlZWRzIHRoZSB3aWR0aCBvZiB0aGUgY29sdW1uLlxuICpcbiAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL3JlZHNoaWZ0L2xhdGVzdC9kZy9yX0NSRUFURV9FWFRFUk5BTF9UQUJMRS5odG1sI3JfQ1JFQVRFX0VYVEVSTkFMX1RBQkxFLXBhcmFtZXRlcnMgLSB1bmRlciBfXCJUQUJMRSBQUk9QRVJUSUVTXCJfID4gX1wic3VycGx1c19jaGFyX2hhbmRsaW5nXCJfXG4gKi9cbmV4cG9ydCBlbnVtIFN1cnBsdXNDaGFySGFuZGxpbmdBY3Rpb24ge1xuICAvKipcbiAgICogUmVwbGFjZXMgZGF0YSB0aGF0IGV4Y2VlZHMgdGhlIGNvbHVtbiB3aWR0aCB3aXRoIG51bGwuXG4gICAqL1xuICBTRVRfVE9fTlVMTCA9ICdTRVRfVE9fTlVMTCcsXG5cbiAgLyoqXG4gICAqIERvZXNuJ3QgcGVyZm9ybSBzdXJwbHVzIGNoYXJhY3RlciBoYW5kbGluZy5cbiAgICovXG4gIERJU0FCTEVEID0gJ0RJU0FCTEVEJyxcblxuICAvKipcbiAgICogQ2FuY2VscyBxdWVyaWVzIHRoYXQgcmV0dXJuIGRhdGEgZXhjZWVkaW5nIHRoZSBjb2x1bW4gd2lkdGguXG4gICAqL1xuICBGQUlMID0gJ0ZBSUwnLFxuXG4gIC8qKlxuICAgKiBSZXBsYWNlcyBlYWNoIHZhbHVlIGluIHRoZSByb3cgd2l0aCBudWxsLlxuICAgKi9cbiAgRFJPUF9ST1cgPSAnRFJPUF9ST1cnLFxuXG4gIC8qKlxuICAgKiBSZW1vdmVzIHRoZSBjaGFyYWN0ZXJzIHRoYXQgZXhjZWVkIHRoZSBtYXhpbXVtIG51bWJlciBvZiBjaGFyYWN0ZXJzIGRlZmluZWQgZm9yIHRoZSBjb2x1bW4uXG4gICAqL1xuICBUUlVOQ0FURSA9ICdUUlVOQ0FURScsXG59XG5cbi8qKlxuICogSWRlbnRpZmllcyBpZiB0aGUgZmlsZSBjb250YWlucyBsZXNzIG9yIG1vcmUgdmFsdWVzIGZvciBhIHJvdyB0aGFuIHRoZSBudW1iZXIgb2YgY29sdW1ucyBzcGVjaWZpZWQgaW4gdGhlIGV4dGVybmFsIHRhYmxlIGRlZmluaXRpb24uIFRoaXMgcHJvcGVydHkgaXMgb25seSBhdmFpbGFibGUgZm9yIGFuIHVuY29tcHJlc3NlZCB0ZXh0IGZpbGUgZm9ybWF0LlxuICpcbiAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL3JlZHNoaWZ0L2xhdGVzdC9kZy9yX0NSRUFURV9FWFRFUk5BTF9UQUJMRS5odG1sI3JfQ1JFQVRFX0VYVEVSTkFMX1RBQkxFLXBhcmFtZXRlcnMgLSB1bmRlciBfXCJUQUJMRSBQUk9QRVJUSUVTXCJfID4gX1wiY29sdW1uX2NvdW50X21pc21hdGNoX2hhbmRsaW5nXCJfXG4gKi9cbmV4cG9ydCBlbnVtIENvbHVtbkNvdW50TWlzbWF0Y2hIYW5kbGluZ0FjdGlvbiB7XG4gIC8qKlxuICAgKiBDb2x1bW4gY291bnQgbWlzbWF0Y2ggaGFuZGxpbmcgaXMgdHVybmVkIG9mZi5cbiAgICovXG4gIERJU0FCTEVEID0gJ0RJU0FCTEVEJyxcblxuICAvKipcbiAgICogRmFpbCB0aGUgcXVlcnkgaWYgdGhlIGNvbHVtbiBjb3VudCBtaXNtYXRjaCBpcyBkZXRlY3RlZC5cbiAgICovXG4gIEZBSUwgPSAnRkFJTCcsXG5cbiAgLyoqXG4gICAqIEZpbGwgbWlzc2luZyB2YWx1ZXMgd2l0aCBOVUxMIGFuZCBpZ25vcmUgdGhlIGFkZGl0aW9uYWwgdmFsdWVzIGluIGVhY2ggcm93LlxuICAgKi9cbiAgU0VUX1RPX05VTEwgPSAnU0VUX1RPX05VTEwnLFxuXG4gIC8qKlxuICAgKiBEcm9wIGFsbCByb3dzIHRoYXQgY29udGFpbiBjb2x1bW4gY291bnQgbWlzbWF0Y2ggZXJyb3IgZnJvbSB0aGUgc2Nhbi5cbiAgICovXG4gIERST1BfUk9XID0gJ0RST1BfUk9XJyxcbn1cblxuLyoqXG4gKiBTcGVjaWZpZXMgaG93IHRvIGhhbmRsZSBkYXRhIGJlaW5nIGxvYWRlZCB0aGF0IGV4Y2VlZHMgdGhlIGxlbmd0aCBvZiB0aGUgZGF0YSB0eXBlIGRlZmluZWQgZm9yIGNvbHVtbnMgY29udGFpbmluZyBWQVJDSEFSLCBDSEFSLCBvciBzdHJpbmcgZGF0YS4gQnkgZGVmYXVsdCwgUmVkc2hpZnQgU3BlY3RydW0gc2V0cyB0aGUgdmFsdWUgdG8gbnVsbCBmb3IgZGF0YSB0aGF0IGV4Y2VlZHMgdGhlIHdpZHRoIG9mIHRoZSBjb2x1bW4uXG4gKlxuICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vcmVkc2hpZnQvbGF0ZXN0L2RnL3JfQ1JFQVRFX0VYVEVSTkFMX1RBQkxFLmh0bWwjcl9DUkVBVEVfRVhURVJOQUxfVEFCTEUtcGFyYW1ldGVycyAtIHVuZGVyIF9cIlRBQkxFIFBST1BFUlRJRVNcIl8gPiBfXCJzdXJwbHVzX2NoYXJfaGFuZGxpbmdcIl9cbiAqL1xuZXhwb3J0IGVudW0gV3JpdGVQYXJhbGxlbCB7XG4gIC8qKlxuICAgKiBXcml0ZSBkYXRhIGluIHBhcmFsbGVsLlxuICAgKi9cbiAgT04gPSAnb24nLFxuXG4gIC8qKlxuICAgKiBXcml0ZSBkYXRhIHNlcmlhbGx5LlxuICAgKi9cbiAgT0ZGID0gJ29mZicsXG59XG5cbi8qKlxuICogU3BlY2lmaWVzIGhvdyB0byBtYXAgY29sdW1ucyB3aGVuIHRoZSB0YWJsZSB1c2VzIE9SQyBkYXRhIGZvcm1hdC5cbiAqXG4gKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9yZWRzaGlmdC9sYXRlc3QvZGcvcl9DUkVBVEVfRVhURVJOQUxfVEFCTEUuaHRtbCNyX0NSRUFURV9FWFRFUk5BTF9UQUJMRS1wYXJhbWV0ZXJzIC0gdW5kZXIgX1wiVEFCTEUgUFJPUEVSVElFU1wiXyA+IF9cIm9yYy5zY2hlbWEucmVzb2x1dGlvblwiX1xuICovXG5leHBvcnQgZW51bSBPcmNDb2x1bW5NYXBwaW5nVHlwZSB7XG4gIC8qKlxuICAgKiBNYXAgY29sdW1ucyBieSBuYW1lLlxuICAgKi9cbiAgTkFNRSA9ICduYW1lJyxcblxuICAvKipcbiAgICogTWFwIGNvbHVtbnMgYnkgcG9zaXRpb24uXG4gICAqL1xuICBQT1NJVElPTiA9ICdwb3NpdGlvbicsXG59XG5cbi8qKlxuICogVGhlIHN0b3JhZ2UgcGFyYW1ldGVyIGtleXMgdGhhdCBhcmUgY3VycmVudGx5IGtub3duLCB0aGlzIGxpc3QgaXMgbm90IGV4aGF1c3RpdmUgYW5kIG90aGVyIGtleXMgbWF5IGJlIHVzZWQuXG4gKi9cbmV4cG9ydCBlbnVtIFN0b3JhZ2VQYXJhbWV0ZXJzIHtcbiAgLyoqXG4gICAqIFRoZSBudW1iZXIgb2Ygcm93cyB0byBza2lwIGF0IHRoZSB0b3Agb2YgYSBDU1YgZmlsZSB3aGVuIHRoZSB0YWJsZSBpcyBiZWluZyBjcmVhdGVkLlxuICAgKi9cbiAgU0tJUF9IRUFERVJfTElORV9DT1VOVCA9ICdza2lwLmhlYWRlci5saW5lLmNvdW50JyxcblxuICAvKipcbiAgICogRGV0ZXJtaW5lcyB3aGV0aGVyIGRhdGEgaGFuZGxpbmcgaXMgb24gZm9yIHRoZSB0YWJsZS5cbiAgICovXG4gIERBVEFfQ0xFQU5TSU5HX0VOQUJMRUQgPSAnZGF0YV9jbGVhbnNpbmdfZW5hYmxlZCcsXG5cbiAgLyoqXG4gICAqIFRoZSB0eXBlIG9mIGNvbXByZXNzaW9uIHVzZWQgb24gdGhlIHRhYmxlLCB3aGVuIHRoZSBmaWxlIG5hbWUgZG9lcyBub3QgY29udGFpbiBhbiBleHRlbnNpb24uIFRoaXMgdmFsdWUgb3ZlcnJpZGVzIHRoZSBjb21wcmVzc2lvbiB0eXBlIHNwZWNpZmllZCB0aHJvdWdoIHRoZSBleHRlbnNpb24uXG4gICAqL1xuICBDT01QUkVTU0lPTl9UWVBFID0gJ2NvbXByZXNzaW9uX3R5cGUnLFxuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgdGhlIGFjdGlvbiB0byBwZXJmb3JtIHdoZW4gcXVlcnkgcmVzdWx0cyBjb250YWluIGludmFsaWQgVVRGLTggY2hhcmFjdGVyIHZhbHVlcy5cbiAgICovXG4gIElOVkFMSURfQ0hBUl9IQU5ETElORyA9ICdpbnZhbGlkX2NoYXJfaGFuZGxpbmcnLFxuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgdGhlIHJlcGxhY2VtZW50IGNoYXJhY3RlciB0byB1c2Ugd2hlbiB5b3Ugc2V0IGBJTlZBTElEX0NIQVJfSEFORExJTkdgIHRvIGBSRVBMQUNFYC5cbiAgICovXG4gIFJFUExBQ0VNRU5UX0NIQVIgPSAncmVwbGFjZW1lbnRfY2hhcicsXG5cbiAgLyoqXG4gICAqIFNwZWNpZmllcyB0aGUgYWN0aW9uIHRvIHBlcmZvcm0gd2hlbiBPUkMgZGF0YSBjb250YWlucyBhbiBpbnRlZ2VyIChmb3IgZXhhbXBsZSwgQklHSU5UIG9yIGludDY0KSB0aGF0IGlzIGxhcmdlciB0aGFuIHRoZSBjb2x1bW4gZGVmaW5pdGlvbiAoZm9yIGV4YW1wbGUsIFNNQUxMSU5UIG9yIGludDE2KS5cbiAgICovXG4gIE5VTUVSSUNfT1ZFUkZMT1dfSEFORExJTkcgPSAnbnVtZXJpY19vdmVyZmxvd19oYW5kbGluZycsXG5cbiAgLyoqXG4gICAqIFNwZWNpZmllcyBob3cgdG8gaGFuZGxlIGRhdGEgYmVpbmcgbG9hZGVkIHRoYXQgZXhjZWVkcyB0aGUgbGVuZ3RoIG9mIHRoZSBkYXRhIHR5cGUgZGVmaW5lZCBmb3IgY29sdW1ucyBjb250YWluaW5nIFZBUkJZVEUgZGF0YS4gQnkgZGVmYXVsdCwgUmVkc2hpZnQgU3BlY3RydW0gc2V0cyB0aGUgdmFsdWUgdG8gbnVsbCBmb3IgZGF0YSB0aGF0IGV4Y2VlZHMgdGhlIHdpZHRoIG9mIHRoZSBjb2x1bW4uXG4gICAqL1xuICBTVVJQTFVTX0JZVEVTX0hBTkRMSU5HID0gJ3N1cnBsdXNfYnl0ZXNfaGFuZGxpbmcnLFxuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgaG93IHRvIGhhbmRsZSBkYXRhIGJlaW5nIGxvYWRlZCB0aGF0IGV4Y2VlZHMgdGhlIGxlbmd0aCBvZiB0aGUgZGF0YSB0eXBlIGRlZmluZWQgZm9yIGNvbHVtbnMgY29udGFpbmluZyBWQVJDSEFSLCBDSEFSLCBvciBzdHJpbmcgZGF0YS4gQnkgZGVmYXVsdCwgUmVkc2hpZnQgU3BlY3RydW0gc2V0cyB0aGUgdmFsdWUgdG8gbnVsbCBmb3IgZGF0YSB0aGF0IGV4Y2VlZHMgdGhlIHdpZHRoIG9mIHRoZSBjb2x1bW4uXG4gICAqL1xuICBTVVJQTFVTX0NIQVJfSEFORExJTkcgPSAnc3VycGx1c19jaGFyX2hhbmRsaW5nJyxcblxuICAvKipcbiAgICogSWRlbnRpZmllcyBpZiB0aGUgZmlsZSBjb250YWlucyBsZXNzIG9yIG1vcmUgdmFsdWVzIGZvciBhIHJvdyB0aGFuIHRoZSBudW1iZXIgb2YgY29sdW1ucyBzcGVjaWZpZWQgaW4gdGhlIGV4dGVybmFsIHRhYmxlIGRlZmluaXRpb24uIFRoaXMgcHJvcGVydHkgaXMgb25seSBhdmFpbGFibGUgZm9yIGFuIHVuY29tcHJlc3NlZCB0ZXh0IGZpbGUgZm9ybWF0LlxuICAgKi9cbiAgQ09MVU1OX0NPVU5UX01JU01BVENIX0hBTkRMSU5HID0gJ2NvbHVtbl9jb3VudF9taXNtYXRjaF9oYW5kbGluZycsXG5cbiAgLyoqXG4gICAqIEEgcHJvcGVydHkgdGhhdCBzZXRzIHRoZSBudW1Sb3dzIHZhbHVlIGZvciB0aGUgdGFibGUgZGVmaW5pdGlvbi4gVG8gZXhwbGljaXRseSB1cGRhdGUgYW4gZXh0ZXJuYWwgdGFibGUncyBzdGF0aXN0aWNzLCBzZXQgdGhlIG51bVJvd3MgcHJvcGVydHkgdG8gaW5kaWNhdGUgdGhlIHNpemUgb2YgdGhlIHRhYmxlLiBBbWF6b24gUmVkc2hpZnQgZG9lc24ndCBhbmFseXplIGV4dGVybmFsIHRhYmxlcyB0byBnZW5lcmF0ZSB0aGUgdGFibGUgc3RhdGlzdGljcyB0aGF0IHRoZSBxdWVyeSBvcHRpbWl6ZXIgdXNlcyB0byBnZW5lcmF0ZSBhIHF1ZXJ5IHBsYW4uIElmIHRhYmxlIHN0YXRpc3RpY3MgYXJlbid0IHNldCBmb3IgYW4gZXh0ZXJuYWwgdGFibGUsIEFtYXpvbiBSZWRzaGlmdCBnZW5lcmF0ZXMgYSBxdWVyeSBleGVjdXRpb24gcGxhbiBiYXNlZCBvbiBhbiBhc3N1bXB0aW9uIHRoYXQgZXh0ZXJuYWwgdGFibGVzIGFyZSB0aGUgbGFyZ2VyIHRhYmxlcyBhbmQgbG9jYWwgdGFibGVzIGFyZSB0aGUgc21hbGxlciB0YWJsZXMuXG4gICAqL1xuICBOVU1fUk9XUyA9ICdudW1fcm93cycsXG5cbiAgLyoqXG4gICAqIEEgcHJvcGVydHkgdGhhdCBzZXRzIG51bWJlciBvZiByb3dzIHRvIHNraXAgYXQgdGhlIGJlZ2lubmluZyBvZiBlYWNoIHNvdXJjZSBmaWxlLlxuICAgKi9cbiAgU0VSSUFMSVpBVElPTl9OVUxMX0ZPUk1BVCA9ICdzZXJpYWxpemF0aW9uLm51bGwuZm9ybWF0JyxcblxuICAvKipcbiAgICogQSBwcm9wZXJ0eSB0aGF0IHNldHMgdGhlIGNvbHVtbiBtYXBwaW5nIHR5cGUgZm9yIHRhYmxlcyB0aGF0IHVzZSBPUkMgZGF0YSBmb3JtYXQuIFRoaXMgcHJvcGVydHkgaXMgaWdub3JlZCBmb3Igb3RoZXIgZGF0YSBmb3JtYXRzLlxuICAgKi9cbiAgT1JDX1NDSEVNQV9SRVNPTFVUSU9OID0gJ29yYy5zY2hlbWEucmVzb2x1dGlvbicsXG5cbiAgLyoqXG4gICAqIEEgcHJvcGVydHkgdGhhdCBzZXRzIHdoZXRoZXIgQ1JFQVRFIEVYVEVSTkFMIFRBQkxFIEFTIHNob3VsZCB3cml0ZSBkYXRhIGluIHBhcmFsbGVsLiBXaGVuICd3cml0ZS5wYXJhbGxlbCcgaXMgc2V0IHRvIG9mZiwgQ1JFQVRFIEVYVEVSTkFMIFRBQkxFIEFTIHdyaXRlcyB0byBvbmUgb3IgbW9yZSBkYXRhIGZpbGVzIHNlcmlhbGx5IG9udG8gQW1hem9uIFMzLiBUaGlzIHRhYmxlIHByb3BlcnR5IGFsc28gYXBwbGllcyB0byBhbnkgc3Vic2VxdWVudCBJTlNFUlQgc3RhdGVtZW50IGludG8gdGhlIHNhbWUgZXh0ZXJuYWwgdGFibGUuXG4gICAqL1xuICBXUklURV9QQVJBTExFTCA9ICd3cml0ZS5wYXJhbGxlbCcsXG5cbiAgLyoqXG4gICAqIEEgcHJvcGVydHkgdGhhdCBzZXRzIHRoZSBtYXhpbXVtIHNpemUgKGluIE1CKSBvZiBlYWNoIGZpbGUgd3JpdHRlbiB0byBBbWF6b24gUzMgYnkgQ1JFQVRFIEVYVEVSTkFMIFRBQkxFIEFTLiBUaGUgc2l6ZSBtdXN0IGJlIGEgdmFsaWQgaW50ZWdlciBiZXR3ZWVuIDUgYW5kIDYyMDAuIFRoZSBkZWZhdWx0IG1heGltdW0gZmlsZSBzaXplIGlzIDYsMjAwIE1CLiBUaGlzIHRhYmxlIHByb3BlcnR5IGFsc28gYXBwbGllcyB0byBhbnkgc3Vic2VxdWVudCBJTlNFUlQgc3RhdGVtZW50IGludG8gdGhlIHNhbWUgZXh0ZXJuYWwgdGFibGUuXG4gICAqL1xuICBXUklURV9NQVhfRklMRVNJWkVfTUIgPSAnd3JpdGUubWF4ZmlsZXNpemUubWInLFxuXG4gIC8qKlxuICAgKiBZb3UgY2FuIHNwZWNpZnkgYW4gQVdTIEtleSBNYW5hZ2VtZW50IFNlcnZpY2Uga2V5IHRvIGVuYWJsZSBTZXJ2ZXLigJNTaWRlIEVuY3J5cHRpb24gKFNTRSkgZm9yIEFtYXpvbiBTMyBvYmplY3RzLlxuICAgKi9cbiAgV1JJVEVfS01TX0tFWV9JRCA9ICd3cml0ZS5rbXMua2V5LmlkJyxcbn1cblxuLyoqXG4gKiBBIHN0b3JhZ2UgcGFyYW1ldGVyLiBUaGUgbGlzdCBvZiBzdG9yYWdlIHBhcmFtZXRlcnMgYXZhaWxhYmxlIGlzIG5vdCBleGhhdXN0aXZlIGFuZCBvdGhlciBrZXlzIG1heSBiZSB1c2VkLlxuICpcbiAqIElmIHlvdSB3b3VsZCBsaWtlIHRvIHNwZWNpZnkgYSBzdG9yYWdlIHBhcmFtZXRlciB0aGF0IGlzIG5vdCBhdmFpbGFibGUgYXMgYSBzdGF0aWMgbWVtYmVyIG9mIHRoaXMgY2xhc3MsIHVzZSB0aGUgYFN0b3JhZ2VQYXJhbWV0ZXIuY3VzdG9tYCBtZXRob2QuXG4gKlxuICogVGhlIGxpc3Qgb2Ygc3RvcmFnZSBwYXJhbWV0ZXJzIGN1cnJlbnRseSBrbm93biB3aXRoaW4gdGhlIENESyBpcyBsaXN0ZWQuXG4gKlxuICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vZ2x1ZS9sYXRlc3QvZGcvdGFibGUtcHJvcGVydGllcy1jcmF3bGVyLmh0bWxcbiAqXG4gKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9yZWRzaGlmdC9sYXRlc3QvZGcvcl9DUkVBVEVfRVhURVJOQUxfVEFCTEUuaHRtbCNyX0NSRUFURV9FWFRFUk5BTF9UQUJMRS1wYXJhbWV0ZXJzIC0gdW5kZXIgX1wiVEFCTEUgUFJPUEVSVElFU1wiX1xuICovXG5leHBvcnQgY2xhc3MgU3RvcmFnZVBhcmFtZXRlciB7XG4gIC8qKlxuICAgKiBUaGUgbnVtYmVyIG9mIHJvd3MgdG8gc2tpcCBhdCB0aGUgdG9wIG9mIGEgQ1NWIGZpbGUgd2hlbiB0aGUgdGFibGUgaXMgYmVpbmcgY3JlYXRlZC5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgc2tpcEhlYWRlckxpbmVDb3VudCh2YWx1ZTogbnVtYmVyKTogU3RvcmFnZVBhcmFtZXRlciB7XG4gICAgcmV0dXJuIG5ldyBTdG9yYWdlUGFyYW1ldGVyKCdza2lwLmhlYWRlci5saW5lLmNvdW50JywgdmFsdWUudG9TdHJpbmcoKSk7XG4gIH1cblxuICAvKipcbiAgICogRGV0ZXJtaW5lcyB3aGV0aGVyIGRhdGEgaGFuZGxpbmcgaXMgb24gZm9yIHRoZSB0YWJsZS5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZGF0YUNsZWFuc2luZ0VuYWJsZWQodmFsdWU6IGJvb2xlYW4pOiBTdG9yYWdlUGFyYW1ldGVyIHtcbiAgICByZXR1cm4gbmV3IFN0b3JhZ2VQYXJhbWV0ZXIoJ2RhdGFfY2xlYW5zaW5nX2VuYWJsZWQnLCB2YWx1ZS50b1N0cmluZygpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgdHlwZSBvZiBjb21wcmVzc2lvbiB1c2VkIG9uIHRoZSB0YWJsZSwgd2hlbiB0aGUgZmlsZSBuYW1lIGRvZXMgbm90IGNvbnRhaW4gYW4gZXh0ZW5zaW9uLiBUaGlzIHZhbHVlIG92ZXJyaWRlcyB0aGUgY29tcHJlc3Npb24gdHlwZSBzcGVjaWZpZWQgdGhyb3VnaCB0aGUgZXh0ZW5zaW9uLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBjb21wcmVzc2lvblR5cGUodmFsdWU6IENvbXByZXNzaW9uVHlwZSk6IFN0b3JhZ2VQYXJhbWV0ZXIge1xuICAgIHJldHVybiBuZXcgU3RvcmFnZVBhcmFtZXRlcignY29tcHJlc3Npb25fdHlwZScsIHZhbHVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgdGhlIGFjdGlvbiB0byBwZXJmb3JtIHdoZW4gcXVlcnkgcmVzdWx0cyBjb250YWluIGludmFsaWQgVVRGLTggY2hhcmFjdGVyIHZhbHVlcy5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgaW52YWxpZENoYXJIYW5kbGluZyh2YWx1ZTogSW52YWxpZENoYXJIYW5kbGluZ0FjdGlvbik6IFN0b3JhZ2VQYXJhbWV0ZXIge1xuICAgIHJldHVybiBuZXcgU3RvcmFnZVBhcmFtZXRlcignaW52YWxpZF9jaGFyX2hhbmRsaW5nJywgdmFsdWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNwZWNpZmllcyB0aGUgcmVwbGFjZW1lbnQgY2hhcmFjdGVyIHRvIHVzZSB3aGVuIHlvdSBzZXQgYElOVkFMSURfQ0hBUl9IQU5ETElOR2AgdG8gYFJFUExBQ0VgLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyByZXBsYWNlbWVudENoYXIodmFsdWU6IHN0cmluZyk6IFN0b3JhZ2VQYXJhbWV0ZXIge1xuICAgIHJldHVybiBuZXcgU3RvcmFnZVBhcmFtZXRlcigncmVwbGFjZW1lbnRfY2hhcicsIHZhbHVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgdGhlIGFjdGlvbiB0byBwZXJmb3JtIHdoZW4gT1JDIGRhdGEgY29udGFpbnMgYW4gaW50ZWdlciAoZm9yIGV4YW1wbGUsIEJJR0lOVCBvciBpbnQ2NCkgdGhhdCBpcyBsYXJnZXIgdGhhbiB0aGUgY29sdW1uIGRlZmluaXRpb24gKGZvciBleGFtcGxlLCBTTUFMTElOVCBvciBpbnQxNikuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIG51bWVyaWNPdmVyZmxvd0hhbmRsaW5nKHZhbHVlOiBOdW1lcmljT3ZlcmZsb3dIYW5kbGluZ0FjdGlvbik6IFN0b3JhZ2VQYXJhbWV0ZXIge1xuICAgIHJldHVybiBuZXcgU3RvcmFnZVBhcmFtZXRlcignbnVtZXJpY19vdmVyZmxvd19oYW5kbGluZycsIHZhbHVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgaG93IHRvIGhhbmRsZSBkYXRhIGJlaW5nIGxvYWRlZCB0aGF0IGV4Y2VlZHMgdGhlIGxlbmd0aCBvZiB0aGUgZGF0YSB0eXBlIGRlZmluZWQgZm9yIGNvbHVtbnMgY29udGFpbmluZyBWQVJCWVRFIGRhdGEuIEJ5IGRlZmF1bHQsIFJlZHNoaWZ0IFNwZWN0cnVtIHNldHMgdGhlIHZhbHVlIHRvIG51bGwgZm9yIGRhdGEgdGhhdCBleGNlZWRzIHRoZSB3aWR0aCBvZiB0aGUgY29sdW1uLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBzdXJwbHVzQnl0ZXNIYW5kbGluZyh2YWx1ZTogU3VycGx1c0J5dGVzSGFuZGxpbmdBY3Rpb24pOiBTdG9yYWdlUGFyYW1ldGVyIHtcbiAgICByZXR1cm4gbmV3IFN0b3JhZ2VQYXJhbWV0ZXIoJ3N1cnBsdXNfYnl0ZXNfaGFuZGxpbmcnLCB2YWx1ZSk7XG4gIH1cblxuICAvKipcbiAgICogU3BlY2lmaWVzIGhvdyB0byBoYW5kbGUgZGF0YSBiZWluZyBsb2FkZWQgdGhhdCBleGNlZWRzIHRoZSBsZW5ndGggb2YgdGhlIGRhdGEgdHlwZSBkZWZpbmVkIGZvciBjb2x1bW5zIGNvbnRhaW5pbmcgVkFSQ0hBUiwgQ0hBUiwgb3Igc3RyaW5nIGRhdGEuIEJ5IGRlZmF1bHQsIFJlZHNoaWZ0IFNwZWN0cnVtIHNldHMgdGhlIHZhbHVlIHRvIG51bGwgZm9yIGRhdGEgdGhhdCBleGNlZWRzIHRoZSB3aWR0aCBvZiB0aGUgY29sdW1uLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBzdXJwbHVzQ2hhckhhbmRsaW5nKHZhbHVlOiBTdXJwbHVzQ2hhckhhbmRsaW5nQWN0aW9uKTogU3RvcmFnZVBhcmFtZXRlciB7XG4gICAgcmV0dXJuIG5ldyBTdG9yYWdlUGFyYW1ldGVyKCdzdXJwbHVzX2NoYXJfaGFuZGxpbmcnLCB2YWx1ZSk7XG4gIH1cblxuICAvKipcbiAgICogSWRlbnRpZmllcyBpZiB0aGUgZmlsZSBjb250YWlucyBsZXNzIG9yIG1vcmUgdmFsdWVzIGZvciBhIHJvdyB0aGFuIHRoZSBudW1iZXIgb2YgY29sdW1ucyBzcGVjaWZpZWQgaW4gdGhlIGV4dGVybmFsIHRhYmxlIGRlZmluaXRpb24uIFRoaXMgcHJvcGVydHkgaXMgb25seSBhdmFpbGFibGUgZm9yIGFuIHVuY29tcHJlc3NlZCB0ZXh0IGZpbGUgZm9ybWF0LlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBjb2x1bW5Db3VudE1pc21hdGNoSGFuZGxpbmcodmFsdWU6IENvbHVtbkNvdW50TWlzbWF0Y2hIYW5kbGluZ0FjdGlvbik6IFN0b3JhZ2VQYXJhbWV0ZXIge1xuICAgIHJldHVybiBuZXcgU3RvcmFnZVBhcmFtZXRlcignY29sdW1uX2NvdW50X21pc21hdGNoX2hhbmRsaW5nJywgdmFsdWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIEEgcHJvcGVydHkgdGhhdCBzZXRzIHRoZSBudW1Sb3dzIHZhbHVlIGZvciB0aGUgdGFibGUgZGVmaW5pdGlvbi4gVG8gZXhwbGljaXRseSB1cGRhdGUgYW4gZXh0ZXJuYWwgdGFibGUncyBzdGF0aXN0aWNzLCBzZXQgdGhlIG51bVJvd3MgcHJvcGVydHkgdG8gaW5kaWNhdGUgdGhlIHNpemUgb2YgdGhlIHRhYmxlLiBBbWF6b24gUmVkc2hpZnQgZG9lc24ndCBhbmFseXplIGV4dGVybmFsIHRhYmxlcyB0byBnZW5lcmF0ZSB0aGUgdGFibGUgc3RhdGlzdGljcyB0aGF0IHRoZSBxdWVyeSBvcHRpbWl6ZXIgdXNlcyB0byBnZW5lcmF0ZSBhIHF1ZXJ5IHBsYW4uIElmIHRhYmxlIHN0YXRpc3RpY3MgYXJlbid0IHNldCBmb3IgYW4gZXh0ZXJuYWwgdGFibGUsIEFtYXpvbiBSZWRzaGlmdCBnZW5lcmF0ZXMgYSBxdWVyeSBleGVjdXRpb24gcGxhbiBiYXNlZCBvbiBhbiBhc3N1bXB0aW9uIHRoYXQgZXh0ZXJuYWwgdGFibGVzIGFyZSB0aGUgbGFyZ2VyIHRhYmxlcyBhbmQgbG9jYWwgdGFibGVzIGFyZSB0aGUgc21hbGxlciB0YWJsZXMuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIG51bVJvd3ModmFsdWU6IG51bWJlcik6IFN0b3JhZ2VQYXJhbWV0ZXIge1xuICAgIHJldHVybiBuZXcgU3RvcmFnZVBhcmFtZXRlcignbnVtX3Jvd3MnLCB2YWx1ZS50b1N0cmluZygpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBIHByb3BlcnR5IHRoYXQgc2V0cyBudW1iZXIgb2Ygcm93cyB0byBza2lwIGF0IHRoZSBiZWdpbm5pbmcgb2YgZWFjaCBzb3VyY2UgZmlsZS5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgc2VyaWFsaXphdGlvbk51bGxGb3JtYXQodmFsdWU6IHN0cmluZyk6IFN0b3JhZ2VQYXJhbWV0ZXIge1xuICAgIHJldHVybiBuZXcgU3RvcmFnZVBhcmFtZXRlcignc2VyaWFsaXphdGlvbi5udWxsLmZvcm1hdCcsIHZhbHVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBIHByb3BlcnR5IHRoYXQgc2V0cyB0aGUgY29sdW1uIG1hcHBpbmcgdHlwZSBmb3IgdGFibGVzIHRoYXQgdXNlIE9SQyBkYXRhIGZvcm1hdC4gVGhpcyBwcm9wZXJ0eSBpcyBpZ25vcmVkIGZvciBvdGhlciBkYXRhIGZvcm1hdHMuIElmIHRoaXMgcHJvcGVydHkgaXMgb21pdHRlZCwgY29sdW1ucyBhcmUgbWFwcGVkIGJ5IGBPcmNDb2x1bW5NYXBwaW5nVHlwZS5OQU1FYCBieSBkZWZhdWx0LlxuICAgKlxuICAgKiBAZGVmYXVsdCBPcmNDb2x1bW5NYXBwaW5nVHlwZS5OQU1FXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIG9yY1NjaGVtYVJlc29sdXRpb24odmFsdWU6IE9yY0NvbHVtbk1hcHBpbmdUeXBlKTogU3RvcmFnZVBhcmFtZXRlciB7XG4gICAgcmV0dXJuIG5ldyBTdG9yYWdlUGFyYW1ldGVyKCdvcmMuc2NoZW1hLnJlc29sdXRpb24nLCB2YWx1ZSk7XG4gIH1cblxuICAvKipcbiAgICogQSBwcm9wZXJ0eSB0aGF0IHNldHMgd2hldGhlciBDUkVBVEUgRVhURVJOQUwgVEFCTEUgQVMgc2hvdWxkIHdyaXRlIGRhdGEgaW4gcGFyYWxsZWwuIFdoZW4gJ3dyaXRlLnBhcmFsbGVsJyBpcyBzZXQgdG8gb2ZmLCBDUkVBVEUgRVhURVJOQUwgVEFCTEUgQVMgd3JpdGVzIHRvIG9uZSBvciBtb3JlIGRhdGEgZmlsZXMgc2VyaWFsbHkgb250byBBbWF6b24gUzMuIFRoaXMgdGFibGUgcHJvcGVydHkgYWxzbyBhcHBsaWVzIHRvIGFueSBzdWJzZXF1ZW50IElOU0VSVCBzdGF0ZW1lbnQgaW50byB0aGUgc2FtZSBleHRlcm5hbCB0YWJsZS5cbiAgICpcbiAgICogQGRlZmF1bHQgV3JpdGVQYXJhbGxlbC5PTlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyB3cml0ZVBhcmFsbGVsKHZhbHVlOiBXcml0ZVBhcmFsbGVsKTogU3RvcmFnZVBhcmFtZXRlciB7XG4gICAgcmV0dXJuIG5ldyBTdG9yYWdlUGFyYW1ldGVyKCd3cml0ZS5wYXJhbGxlbCcsIHZhbHVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBIHByb3BlcnR5IHRoYXQgc2V0cyB0aGUgbWF4aW11bSBzaXplIChpbiBNQikgb2YgZWFjaCBmaWxlIHdyaXR0ZW4gdG8gQW1hem9uIFMzIGJ5IENSRUFURSBFWFRFUk5BTCBUQUJMRSBBUy4gVGhlIHNpemUgbXVzdCBiZSBhIHZhbGlkIGludGVnZXIgYmV0d2VlbiA1IGFuZCA2MjAwLiBUaGUgZGVmYXVsdCBtYXhpbXVtIGZpbGUgc2l6ZSBpcyA2LDIwMCBNQi4gVGhpcyB0YWJsZSBwcm9wZXJ0eSBhbHNvIGFwcGxpZXMgdG8gYW55IHN1YnNlcXVlbnQgSU5TRVJUIHN0YXRlbWVudCBpbnRvIHRoZSBzYW1lIGV4dGVybmFsIHRhYmxlLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyB3cml0ZU1heEZpbGVTaXplTWIodmFsdWU6IG51bWJlcik6IFN0b3JhZ2VQYXJhbWV0ZXIge1xuICAgIHJldHVybiBuZXcgU3RvcmFnZVBhcmFtZXRlcignd3JpdGUubWF4ZmlsZXNpemUubWInLCB2YWx1ZS50b1N0cmluZygpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBZb3UgY2FuIHNwZWNpZnkgYW4gQVdTIEtleSBNYW5hZ2VtZW50IFNlcnZpY2Uga2V5IHRvIGVuYWJsZSBTZXJ2ZXLigJNTaWRlIEVuY3J5cHRpb24gKFNTRSkgZm9yIEFtYXpvbiBTMyBvYmplY3RzLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyB3cml0ZUttc0tleUlkKHZhbHVlOiBzdHJpbmcpOiBTdG9yYWdlUGFyYW1ldGVyIHtcbiAgICByZXR1cm4gbmV3IFN0b3JhZ2VQYXJhbWV0ZXIoJ3dyaXRlLmttcy5rZXkuaWQnLCB2YWx1ZSk7XG4gIH1cblxuICAvKipcbiAgICogQSBjdXN0b20gc3RvcmFnZSBwYXJhbWV0ZXIuXG4gICAqIEBwYXJhbSBrZXkgLSBUaGUga2V5IG9mIHRoZSBzdG9yYWdlIHBhcmFtZXRlci5cbiAgICogQHBhcmFtIHZhbHVlIC0gVGhlIHZhbHVlIG9mIHRoZSBzdG9yYWdlIHBhcmFtZXRlci5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgY3VzdG9tKGtleTogc3RyaW5nLCB2YWx1ZTogYW55KTogU3RvcmFnZVBhcmFtZXRlciB7XG4gICAgcmV0dXJuIG5ldyBTdG9yYWdlUGFyYW1ldGVyKGtleSwgdmFsdWUudG9TdHJpbmcoKSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgY29uc3RydWN0b3IocHVibGljIHJlYWRvbmx5IGtleTogc3RyaW5nLCBwdWJsaWMgcmVhZG9ubHkgdmFsdWU6IHN0cmluZykge31cbn1cbiJdfQ==
465
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmFnZS1wYXJhbWV0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJzdG9yYWdlLXBhcmFtZXRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUVBOzs7O0dBSUc7QUFDSCxJQUFZLGVBb0JYO0FBcEJELFdBQVksZUFBZTtJQUN6Qjs7T0FFRztJQUNILGdDQUFhLENBQUE7SUFFYjs7T0FFRztJQUNILGtDQUFlLENBQUE7SUFFZjs7T0FFRztJQUNILGdDQUFhLENBQUE7SUFFYjs7T0FFRztJQUNILG9DQUFpQixDQUFBO0FBQ25CLENBQUMsRUFwQlcsZUFBZSwrQkFBZixlQUFlLFFBb0IxQjtBQUVEOzs7O0dBSUc7QUFDSCxJQUFZLHlCQXlCWDtBQXpCRCxXQUFZLHlCQUF5QjtJQUNuQzs7T0FFRztJQUNILGtEQUFxQixDQUFBO0lBRXJCOztPQUVHO0lBQ0gsMENBQWEsQ0FBQTtJQUViOztPQUVHO0lBQ0gsd0RBQTJCLENBQUE7SUFFM0I7O09BRUc7SUFDSCxrREFBcUIsQ0FBQTtJQUVyQjs7T0FFRztJQUNILGdEQUFtQixDQUFBO0FBQ3JCLENBQUMsRUF6QlcseUJBQXlCLHlDQUF6Qix5QkFBeUIsUUF5QnBDO0FBRUQ7Ozs7R0FJRztBQUNILElBQVksNkJBb0JYO0FBcEJELFdBQVksNkJBQTZCO0lBQ3ZDOztPQUVHO0lBQ0gsc0RBQXFCLENBQUE7SUFFckI7O09BRUc7SUFDSCw4Q0FBYSxDQUFBO0lBRWI7O09BRUc7SUFDSCw0REFBMkIsQ0FBQTtJQUUzQjs7T0FFRztJQUNILHNEQUFxQixDQUFBO0FBQ3ZCLENBQUMsRUFwQlcsNkJBQTZCLDZDQUE3Qiw2QkFBNkIsUUFvQnhDO0FBRUQ7Ozs7R0FJRztBQUNILElBQVksMEJBeUJYO0FBekJELFdBQVksMEJBQTBCO0lBQ3BDOztPQUVHO0lBQ0gseURBQTJCLENBQUE7SUFFM0I7O09BRUc7SUFDSCxtREFBcUIsQ0FBQTtJQUVyQjs7T0FFRztJQUNILDJDQUFhLENBQUE7SUFFYjs7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QU8sSUFBSSxnQkFBZ0IsQ0FBQyx1QkFBdUIsRUFBRSxLQUFLLENBQUMsQ0FBQztLQUM3RDtJQUVEOzs7O09BSUc7SUFDSSxNQUFNLENBQUMsYUFBYSxDQUFDLEtBQW9COzs7Ozs7Ozs7O1FBQzlDLE9BQU8sSUFBSSxnQkFBZ0IsQ0FBQyxnQkFBZ0IsRUFBRSxLQUFLLENBQUMsQ0FBQztLQUN0RDtJQUVEOztPQUVHO0lBQ0ksTUFBTSxDQUFDLGtCQUFrQixDQUFDLEtBQWE7UUFDNUMsT0FBTyxJQUFJLGdCQUFnQixDQUFDLHNCQUFzQixFQUFFLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO0tBQ3ZFO0lBRUQ7Ozs7Ozs7Ozs7OztPQVlHO0lBQ0ksTUFBTSxDQUFDLGFBQWEsQ0FBQyxHQUFnQjtRQUMxQyxPQUFPLElBQUksZ0JBQWdCLENBQUMsa0JBQWtCLEVBQUUsR0FBRyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztLQUNwRTtJQUVEOzs7O09BSUc7SUFDSSxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQVcsRUFBRSxLQUFhO1FBQzdDLE9BQU8sSUFBSSxnQkFBZ0IsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7S0FDekM7SUFFRCxZQUFzQyxHQUFXLEVBQWtCLEtBQWE7UUFBMUMsUUFBRyxHQUFILEdBQUcsQ0FBUTtRQUFrQixVQUFLLEdBQUwsS0FBSyxDQUFRO0tBQUk7O0FBakl0Riw0Q0FrSUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSAqIGFzIGttcyBmcm9tICdhd3MtY2RrLWxpYi9hd3Mta21zJztcblxuLyoqXG4gKiBUaGUgY29tcHJlc3Npb24gdHlwZS5cbiAqXG4gKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9yZWRzaGlmdC9sYXRlc3QvZGcvcl9DUkVBVEVfRVhURVJOQUxfVEFCTEUuaHRtbCNyX0NSRUFURV9FWFRFUk5BTF9UQUJMRS1wYXJhbWV0ZXJzIC0gdW5kZXIgX1wiVEFCTEUgUFJPUEVSVElFU1wiXyA+IF9cImNvbXByZXNzaW9uX3R5cGVcIl9cbiAqL1xuZXhwb3J0IGVudW0gQ29tcHJlc3Npb25UeXBlIHtcbiAgLyoqXG4gICAqIE5vIGNvbXByZXNzaW9uLlxuICAgKi9cbiAgTk9ORSA9ICdub25lJyxcblxuICAvKipcbiAgICogQnVycm93cy1XaGVlbGVyIGNvbXByZXNzaW9uLlxuICAgKi9cbiAgQlpJUDIgPSAnYnppcDInLFxuXG4gIC8qKlxuICAgKiBEZWZsYXRlIGNvbXByZXNzaW9uLlxuICAgKi9cbiAgR1pJUCA9ICdnemlwJyxcblxuICAvKipcbiAgICogQ29tcHJlc3Npb24gYWxnb3JpdGhtIGZvY3VzZWQgb24gaGlnaCBjb21wcmVzc2lvbiBhbmQgZGVjb21wcmVzc2lvbiBzcGVlZHMsIHJhdGhlciB0aGFuIHRoZSBtYXhpbXVtIHBvc3NpYmxlIGNvbXByZXNzaW9uLlxuICAgKi9cbiAgU05BUFBZID0gJ3NuYXBweScsXG59XG5cbi8qKlxuICogU3BlY2lmaWVzIHRoZSBhY3Rpb24gdG8gcGVyZm9ybSB3aGVuIHF1ZXJ5IHJlc3VsdHMgY29udGFpbiBpbnZhbGlkIFVURi04IGNoYXJhY3RlciB2YWx1ZXMuXG4gKlxuICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vcmVkc2hpZnQvbGF0ZXN0L2RnL3JfQ1JFQVRFX0VYVEVSTkFMX1RBQkxFLmh0bWwjcl9DUkVBVEVfRVhURVJOQUxfVEFCTEUtcGFyYW1ldGVycyAtIHVuZGVyIF9cIlRBQkxFIFBST1BFUlRJRVNcIl8gPiBfXCJpbnZhbGlkX2NoYXJfaGFuZGxpbmdcIl9cbiAqL1xuZXhwb3J0IGVudW0gSW52YWxpZENoYXJIYW5kbGluZ0FjdGlvbiB7XG4gIC8qKlxuICAgKiBEb2Vzbid0IHBlcmZvcm0gaW52YWxpZCBjaGFyYWN0ZXIgaGFuZGxpbmcuXG4gICAqL1xuICBESVNBQkxFRCA9ICdESVNBQkxFRCcsXG5cbiAgLyoqXG4gICAqIENhbmNlbHMgcXVlcmllcyB0aGF0IHJldHVybiBkYXRhIGNvbnRhaW5pbmcgaW52YWxpZCBVVEYtOCB2YWx1ZXMuXG4gICAqL1xuICBGQUlMID0gJ0ZBSUwnLFxuXG4gIC8qKlxuICAgKiBSZXBsYWNlcyBpbnZhbGlkIFVURi04IHZhbHVlcyB3aXRoIG51bGwuXG4gICAqL1xuICBTRVRfVE9fTlVMTCA9ICdTRVRfVE9fTlVMTCcsXG5cbiAgLyoqXG4gICAqIFJlcGxhY2VzIGVhY2ggdmFsdWUgaW4gdGhlIHJvdyB3aXRoIG51bGwuXG4gICAqL1xuICBEUk9QX1JPVyA9ICdEUk9QX1JPVycsXG5cbiAgLyoqXG4gICAqIFJlcGxhY2VzIHRoZSBpbnZhbGlkIGNoYXJhY3RlciB3aXRoIHRoZSByZXBsYWNlbWVudCBjaGFyYWN0ZXIgeW91IHNwZWNpZnkgdXNpbmcgYFJFUExBQ0VNRU5UX0NIQVJgLlxuICAgKi9cbiAgUkVQTEFDRSA9ICdSRVBMQUNFJyxcbn1cblxuLyoqXG4gKiBTcGVjaWZpZXMgdGhlIGFjdGlvbiB0byBwZXJmb3JtIHdoZW4gT1JDIGRhdGEgY29udGFpbnMgYW4gaW50ZWdlciAoZm9yIGV4YW1wbGUsIEJJR0lOVCBvciBpbnQ2NCkgdGhhdCBpcyBsYXJnZXIgdGhhbiB0aGUgY29sdW1uIGRlZmluaXRpb24gKGZvciBleGFtcGxlLCBTTUFMTElOVCBvciBpbnQxNikuXG4gKlxuICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vcmVkc2hpZnQvbGF0ZXN0L2RnL3JfQ1JFQVRFX0VYVEVSTkFMX1RBQkxFLmh0bWwjcl9DUkVBVEVfRVhURVJOQUxfVEFCTEUtcGFyYW1ldGVycyAtIHVuZGVyIF9cIlRBQkxFIFBST1BFUlRJRVNcIl8gPiBfXCJudW1lcmljX292ZXJmbG93X2hhbmRsaW5nXCJfXG4gKi9cbmV4cG9ydCBlbnVtIE51bWVyaWNPdmVyZmxvd0hhbmRsaW5nQWN0aW9uIHtcbiAgLyoqXG4gICAqIEludmFsaWQgY2hhcmFjdGVyIGhhbmRsaW5nIGlzIHR1cm5lZCBvZmYuXG4gICAqL1xuICBESVNBQkxFRCA9ICdESVNBQkxFRCcsXG5cbiAgLyoqXG4gICAqIENhbmNlbCB0aGUgcXVlcnkgd2hlbiB0aGUgZGF0YSBpbmNsdWRlcyBpbnZhbGlkIGNoYXJhY3RlcnMuXG4gICAqL1xuICBGQUlMID0gJ0ZBSUwnLFxuXG4gIC8qKlxuICAgKiBTZXQgaW52YWxpZCBjaGFyYWN0ZXJzIHRvIG51bGwuXG4gICAqL1xuICBTRVRfVE9fTlVMTCA9ICdTRVRfVE9fTlVMTCcsXG5cbiAgLyoqXG4gICAqIFNldCBlYWNoIHZhbHVlIGluIHRoZSByb3cgdG8gbnVsbC5cbiAgICovXG4gIERST1BfUk9XID0gJ0RST1BfUk9XJyxcbn1cblxuLyoqXG4gKiBTcGVjaWZpZXMgaG93IHRvIGhhbmRsZSBkYXRhIGJlaW5nIGxvYWRlZCB0aGF0IGV4Y2VlZHMgdGhlIGxlbmd0aCBvZiB0aGUgZGF0YSB0eXBlIGRlZmluZWQgZm9yIGNvbHVtbnMgY29udGFpbmluZyBWQVJCWVRFIGRhdGEuIEJ5IGRlZmF1bHQsIFJlZHNoaWZ0IFNwZWN0cnVtIHNldHMgdGhlIHZhbHVlIHRvIG51bGwgZm9yIGRhdGEgdGhhdCBleGNlZWRzIHRoZSB3aWR0aCBvZiB0aGUgY29sdW1uLlxuICpcbiAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL3JlZHNoaWZ0L2xhdGVzdC9kZy9yX0NSRUFURV9FWFRFUk5BTF9UQUJMRS5odG1sI3JfQ1JFQVRFX0VYVEVSTkFMX1RBQkxFLXBhcmFtZXRlcnMgLSB1bmRlciBfXCJUQUJMRSBQUk9QRVJUSUVTXCJfID4gX1wic3VycGx1c19ieXRlc19oYW5kbGluZ1wiX1xuICovXG5leHBvcnQgZW51bSBTdXJwbHVzQnl0ZXNIYW5kbGluZ0FjdGlvbiB7XG4gIC8qKlxuICAgKiBSZXBsYWNlcyBkYXRhIHRoYXQgZXhjZWVkcyB0aGUgY29sdW1uIHdpZHRoIHdpdGggbnVsbC5cbiAgICovXG4gIFNFVF9UT19OVUxMID0gJ1NFVF9UT19OVUxMJyxcblxuICAvKipcbiAgICogRG9lc24ndCBwZXJmb3JtIHN1cnBsdXMgYnl0ZSBoYW5kbGluZy5cbiAgICovXG4gIERJU0FCTEVEID0gJ0RJU0FCTEVEJyxcblxuICAvKipcbiAgICogQ2FuY2VscyBxdWVyaWVzIHRoYXQgcmV0dXJuIGRhdGEgZXhjZWVkaW5nIHRoZSBjb2x1bW4gd2lkdGguXG4gICAqL1xuICBGQUlMID0gJ0ZBSUwnLFxuXG4gIC8qKlxuICAgKiBEcm9wIGFsbCByb3dzIHRoYXQgY29udGFpbiBkYXRhIGV4Y2VlZGluZyBjb2x1bW4gd2lkdGguXG4gICAqL1xuICBEUk9QX1JPVyA9ICdEUk9QX1JPVycsXG5cbiAgLyoqXG4gICAqIFJlbW92ZXMgdGhlIGNoYXJhY3RlcnMgdGhhdCBleGNlZWQgdGhlIG1heGltdW0gbnVtYmVyIG9mIGNoYXJhY3RlcnMgZGVmaW5lZCBmb3IgdGhlIGNvbHVtbi5cbiAgICovXG4gIFRSVU5DQVRFID0gJ1RSVU5DQVRFJyxcbn1cblxuLyoqXG4gKiBTcGVjaWZpZXMgaG93IHRvIGhhbmRsZSBkYXRhIGJlaW5nIGxvYWRlZCB0aGF0IGV4Y2VlZHMgdGhlIGxlbmd0aCBvZiB0aGUgZGF0YSB0eXBlIGRlZmluZWQgZm9yIGNvbHVtbnMgY29udGFpbmluZyBWQVJDSEFSLCBDSEFSLCBvciBzdHJpbmcgZGF0YS4gQnkgZGVmYXVsdCwgUmVkc2hpZnQgU3BlY3RydW0gc2V0cyB0aGUgdmFsdWUgdG8gbnVsbCBmb3IgZGF0YSB0aGF0IGV4Y2VlZHMgdGhlIHdpZHRoIG9mIHRoZSBjb2x1bW4uXG4gKlxuICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vcmVkc2hpZnQvbGF0ZXN0L2RnL3JfQ1JFQVRFX0VYVEVSTkFMX1RBQkxFLmh0bWwjcl9DUkVBVEVfRVhURVJOQUxfVEFCTEUtcGFyYW1ldGVycyAtIHVuZGVyIF9cIlRBQkxFIFBST1BFUlRJRVNcIl8gPiBfXCJzdXJwbHVzX2NoYXJfaGFuZGxpbmdcIl9cbiAqL1xuZXhwb3J0IGVudW0gU3VycGx1c0NoYXJIYW5kbGluZ0FjdGlvbiB7XG4gIC8qKlxuICAgKiBSZXBsYWNlcyBkYXRhIHRoYXQgZXhjZWVkcyB0aGUgY29sdW1uIHdpZHRoIHdpdGggbnVsbC5cbiAgICovXG4gIFNFVF9UT19OVUxMID0gJ1NFVF9UT19OVUxMJyxcblxuICAvKipcbiAgICogRG9lc24ndCBwZXJmb3JtIHN1cnBsdXMgY2hhcmFjdGVyIGhhbmRsaW5nLlxuICAgKi9cbiAgRElTQUJMRUQgPSAnRElTQUJMRUQnLFxuXG4gIC8qKlxuICAgKiBDYW5jZWxzIHF1ZXJpZXMgdGhhdCByZXR1cm4gZGF0YSBleGNlZWRpbmcgdGhlIGNvbHVtbiB3aWR0aC5cbiAgICovXG4gIEZBSUwgPSAnRkFJTCcsXG5cbiAgLyoqXG4gICAqIFJlcGxhY2VzIGVhY2ggdmFsdWUgaW4gdGhlIHJvdyB3aXRoIG51bGwuXG4gICAqL1xuICBEUk9QX1JPVyA9ICdEUk9QX1JPVycsXG5cbiAgLyoqXG4gICAqIFJlbW92ZXMgdGhlIGNoYXJhY3RlcnMgdGhhdCBleGNlZWQgdGhlIG1heGltdW0gbnVtYmVyIG9mIGNoYXJhY3RlcnMgZGVmaW5lZCBmb3IgdGhlIGNvbHVtbi5cbiAgICovXG4gIFRSVU5DQVRFID0gJ1RSVU5DQVRFJyxcbn1cblxuLyoqXG4gKiBJZGVudGlmaWVzIGlmIHRoZSBmaWxlIGNvbnRhaW5zIGxlc3Mgb3IgbW9yZSB2YWx1ZXMgZm9yIGEgcm93IHRoYW4gdGhlIG51bWJlciBvZiBjb2x1bW5zIHNwZWNpZmllZCBpbiB0aGUgZXh0ZXJuYWwgdGFibGUgZGVmaW5pdGlvbi4gVGhpcyBwcm9wZXJ0eSBpcyBvbmx5IGF2YWlsYWJsZSBmb3IgYW4gdW5jb21wcmVzc2VkIHRleHQgZmlsZSBmb3JtYXQuXG4gKlxuICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vcmVkc2hpZnQvbGF0ZXN0L2RnL3JfQ1JFQVRFX0VYVEVSTkFMX1RBQkxFLmh0bWwjcl9DUkVBVEVfRVhURVJOQUxfVEFCTEUtcGFyYW1ldGVycyAtIHVuZGVyIF9cIlRBQkxFIFBST1BFUlRJRVNcIl8gPiBfXCJjb2x1bW5fY291bnRfbWlzbWF0Y2hfaGFuZGxpbmdcIl9cbiAqL1xuZXhwb3J0IGVudW0gQ29sdW1uQ291bnRNaXNtYXRjaEhhbmRsaW5nQWN0aW9uIHtcbiAgLyoqXG4gICAqIENvbHVtbiBjb3VudCBtaXNtYXRjaCBoYW5kbGluZyBpcyB0dXJuZWQgb2ZmLlxuICAgKi9cbiAgRElTQUJMRUQgPSAnRElTQUJMRUQnLFxuXG4gIC8qKlxuICAgKiBGYWlsIHRoZSBxdWVyeSBpZiB0aGUgY29sdW1uIGNvdW50IG1pc21hdGNoIGlzIGRldGVjdGVkLlxuICAgKi9cbiAgRkFJTCA9ICdGQUlMJyxcblxuICAvKipcbiAgICogRmlsbCBtaXNzaW5nIHZhbHVlcyB3aXRoIE5VTEwgYW5kIGlnbm9yZSB0aGUgYWRkaXRpb25hbCB2YWx1ZXMgaW4gZWFjaCByb3cuXG4gICAqL1xuICBTRVRfVE9fTlVMTCA9ICdTRVRfVE9fTlVMTCcsXG5cbiAgLyoqXG4gICAqIERyb3AgYWxsIHJvd3MgdGhhdCBjb250YWluIGNvbHVtbiBjb3VudCBtaXNtYXRjaCBlcnJvciBmcm9tIHRoZSBzY2FuLlxuICAgKi9cbiAgRFJPUF9ST1cgPSAnRFJPUF9ST1cnLFxufVxuXG4vKipcbiAqIFNwZWNpZmllcyBob3cgdG8gaGFuZGxlIGRhdGEgYmVpbmcgbG9hZGVkIHRoYXQgZXhjZWVkcyB0aGUgbGVuZ3RoIG9mIHRoZSBkYXRhIHR5cGUgZGVmaW5lZCBmb3IgY29sdW1ucyBjb250YWluaW5nIFZBUkNIQVIsIENIQVIsIG9yIHN0cmluZyBkYXRhLiBCeSBkZWZhdWx0LCBSZWRzaGlmdCBTcGVjdHJ1bSBzZXRzIHRoZSB2YWx1ZSB0byBudWxsIGZvciBkYXRhIHRoYXQgZXhjZWVkcyB0aGUgd2lkdGggb2YgdGhlIGNvbHVtbi5cbiAqXG4gKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9yZWRzaGlmdC9sYXRlc3QvZGcvcl9DUkVBVEVfRVhURVJOQUxfVEFCTEUuaHRtbCNyX0NSRUFURV9FWFRFUk5BTF9UQUJMRS1wYXJhbWV0ZXJzIC0gdW5kZXIgX1wiVEFCTEUgUFJPUEVSVElFU1wiXyA+IF9cInN1cnBsdXNfY2hhcl9oYW5kbGluZ1wiX1xuICovXG5leHBvcnQgZW51bSBXcml0ZVBhcmFsbGVsIHtcbiAgLyoqXG4gICAqIFdyaXRlIGRhdGEgaW4gcGFyYWxsZWwuXG4gICAqL1xuICBPTiA9ICdvbicsXG5cbiAgLyoqXG4gICAqIFdyaXRlIGRhdGEgc2VyaWFsbHkuXG4gICAqL1xuICBPRkYgPSAnb2ZmJyxcbn1cblxuLyoqXG4gKiBTcGVjaWZpZXMgaG93IHRvIG1hcCBjb2x1bW5zIHdoZW4gdGhlIHRhYmxlIHVzZXMgT1JDIGRhdGEgZm9ybWF0LlxuICpcbiAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL3JlZHNoaWZ0L2xhdGVzdC9kZy9yX0NSRUFURV9FWFRFUk5BTF9UQUJMRS5odG1sI3JfQ1JFQVRFX0VYVEVSTkFMX1RBQkxFLXBhcmFtZXRlcnMgLSB1bmRlciBfXCJUQUJMRSBQUk9QRVJUSUVTXCJfID4gX1wib3JjLnNjaGVtYS5yZXNvbHV0aW9uXCJfXG4gKi9cbmV4cG9ydCBlbnVtIE9yY0NvbHVtbk1hcHBpbmdUeXBlIHtcbiAgLyoqXG4gICAqIE1hcCBjb2x1bW5zIGJ5IG5hbWUuXG4gICAqL1xuICBOQU1FID0gJ25hbWUnLFxuXG4gIC8qKlxuICAgKiBNYXAgY29sdW1ucyBieSBwb3NpdGlvbi5cbiAgICovXG4gIFBPU0lUSU9OID0gJ3Bvc2l0aW9uJyxcbn1cblxuLyoqXG4gKiBUaGUgc3RvcmFnZSBwYXJhbWV0ZXIga2V5cyB0aGF0IGFyZSBjdXJyZW50bHkga25vd24sIHRoaXMgbGlzdCBpcyBub3QgZXhoYXVzdGl2ZSBhbmQgb3RoZXIga2V5cyBtYXkgYmUgdXNlZC5cbiAqL1xuZXhwb3J0IGVudW0gU3RvcmFnZVBhcmFtZXRlcnMge1xuICAvKipcbiAgICogVGhlIG51bWJlciBvZiByb3dzIHRvIHNraXAgYXQgdGhlIHRvcCBvZiBhIENTViBmaWxlIHdoZW4gdGhlIHRhYmxlIGlzIGJlaW5nIGNyZWF0ZWQuXG4gICAqL1xuICBTS0lQX0hFQURFUl9MSU5FX0NPVU5UID0gJ3NraXAuaGVhZGVyLmxpbmUuY291bnQnLFxuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmVzIHdoZXRoZXIgZGF0YSBoYW5kbGluZyBpcyBvbiBmb3IgdGhlIHRhYmxlLlxuICAgKi9cbiAgREFUQV9DTEVBTlNJTkdfRU5BQkxFRCA9ICdkYXRhX2NsZWFuc2luZ19lbmFibGVkJyxcblxuICAvKipcbiAgICogVGhlIHR5cGUgb2YgY29tcHJlc3Npb24gdXNlZCBvbiB0aGUgdGFibGUsIHdoZW4gdGhlIGZpbGUgbmFtZSBkb2VzIG5vdCBjb250YWluIGFuIGV4dGVuc2lvbi4gVGhpcyB2YWx1ZSBvdmVycmlkZXMgdGhlIGNvbXByZXNzaW9uIHR5cGUgc3BlY2lmaWVkIHRocm91Z2ggdGhlIGV4dGVuc2lvbi5cbiAgICovXG4gIENPTVBSRVNTSU9OX1RZUEUgPSAnY29tcHJlc3Npb25fdHlwZScsXG5cbiAgLyoqXG4gICAqIFNwZWNpZmllcyB0aGUgYWN0aW9uIHRvIHBlcmZvcm0gd2hlbiBxdWVyeSByZXN1bHRzIGNvbnRhaW4gaW52YWxpZCBVVEYtOCBjaGFyYWN0ZXIgdmFsdWVzLlxuICAgKi9cbiAgSU5WQUxJRF9DSEFSX0hBTkRMSU5HID0gJ2ludmFsaWRfY2hhcl9oYW5kbGluZycsXG5cbiAgLyoqXG4gICAqIFNwZWNpZmllcyB0aGUgcmVwbGFjZW1lbnQgY2hhcmFjdGVyIHRvIHVzZSB3aGVuIHlvdSBzZXQgYElOVkFMSURfQ0hBUl9IQU5ETElOR2AgdG8gYFJFUExBQ0VgLlxuICAgKi9cbiAgUkVQTEFDRU1FTlRfQ0hBUiA9ICdyZXBsYWNlbWVudF9jaGFyJyxcblxuICAvKipcbiAgICogU3BlY2lmaWVzIHRoZSBhY3Rpb24gdG8gcGVyZm9ybSB3aGVuIE9SQyBkYXRhIGNvbnRhaW5zIGFuIGludGVnZXIgKGZvciBleGFtcGxlLCBCSUdJTlQgb3IgaW50NjQpIHRoYXQgaXMgbGFyZ2VyIHRoYW4gdGhlIGNvbHVtbiBkZWZpbml0aW9uIChmb3IgZXhhbXBsZSwgU01BTExJTlQgb3IgaW50MTYpLlxuICAgKi9cbiAgTlVNRVJJQ19PVkVSRkxPV19IQU5ETElORyA9ICdudW1lcmljX292ZXJmbG93X2hhbmRsaW5nJyxcblxuICAvKipcbiAgICogU3BlY2lmaWVzIGhvdyB0byBoYW5kbGUgZGF0YSBiZWluZyBsb2FkZWQgdGhhdCBleGNlZWRzIHRoZSBsZW5ndGggb2YgdGhlIGRhdGEgdHlwZSBkZWZpbmVkIGZvciBjb2x1bW5zIGNvbnRhaW5pbmcgVkFSQllURSBkYXRhLiBCeSBkZWZhdWx0LCBSZWRzaGlmdCBTcGVjdHJ1bSBzZXRzIHRoZSB2YWx1ZSB0byBudWxsIGZvciBkYXRhIHRoYXQgZXhjZWVkcyB0aGUgd2lkdGggb2YgdGhlIGNvbHVtbi5cbiAgICovXG4gIFNVUlBMVVNfQllURVNfSEFORExJTkcgPSAnc3VycGx1c19ieXRlc19oYW5kbGluZycsXG5cbiAgLyoqXG4gICAqIFNwZWNpZmllcyBob3cgdG8gaGFuZGxlIGRhdGEgYmVpbmcgbG9hZGVkIHRoYXQgZXhjZWVkcyB0aGUgbGVuZ3RoIG9mIHRoZSBkYXRhIHR5cGUgZGVmaW5lZCBmb3IgY29sdW1ucyBjb250YWluaW5nIFZBUkNIQVIsIENIQVIsIG9yIHN0cmluZyBkYXRhLiBCeSBkZWZhdWx0LCBSZWRzaGlmdCBTcGVjdHJ1bSBzZXRzIHRoZSB2YWx1ZSB0byBudWxsIGZvciBkYXRhIHRoYXQgZXhjZWVkcyB0aGUgd2lkdGggb2YgdGhlIGNvbHVtbi5cbiAgICovXG4gIFNVUlBMVVNfQ0hBUl9IQU5ETElORyA9ICdzdXJwbHVzX2NoYXJfaGFuZGxpbmcnLFxuXG4gIC8qKlxuICAgKiBJZGVudGlmaWVzIGlmIHRoZSBmaWxlIGNvbnRhaW5zIGxlc3Mgb3IgbW9yZSB2YWx1ZXMgZm9yIGEgcm93IHRoYW4gdGhlIG51bWJlciBvZiBjb2x1bW5zIHNwZWNpZmllZCBpbiB0aGUgZXh0ZXJuYWwgdGFibGUgZGVmaW5pdGlvbi4gVGhpcyBwcm9wZXJ0eSBpcyBvbmx5IGF2YWlsYWJsZSBmb3IgYW4gdW5jb21wcmVzc2VkIHRleHQgZmlsZSBmb3JtYXQuXG4gICAqL1xuICBDT0xVTU5fQ09VTlRfTUlTTUFUQ0hfSEFORExJTkcgPSAnY29sdW1uX2NvdW50X21pc21hdGNoX2hhbmRsaW5nJyxcblxuICAvKipcbiAgICogQSBwcm9wZXJ0eSB0aGF0IHNldHMgdGhlIG51bVJvd3MgdmFsdWUgZm9yIHRoZSB0YWJsZSBkZWZpbml0aW9uLiBUbyBleHBsaWNpdGx5IHVwZGF0ZSBhbiBleHRlcm5hbCB0YWJsZSdzIHN0YXRpc3RpY3MsIHNldCB0aGUgbnVtUm93cyBwcm9wZXJ0eSB0byBpbmRpY2F0ZSB0aGUgc2l6ZSBvZiB0aGUgdGFibGUuIEFtYXpvbiBSZWRzaGlmdCBkb2Vzbid0IGFuYWx5emUgZXh0ZXJuYWwgdGFibGVzIHRvIGdlbmVyYXRlIHRoZSB0YWJsZSBzdGF0aXN0aWNzIHRoYXQgdGhlIHF1ZXJ5IG9wdGltaXplciB1c2VzIHRvIGdlbmVyYXRlIGEgcXVlcnkgcGxhbi4gSWYgdGFibGUgc3RhdGlzdGljcyBhcmVuJ3Qgc2V0IGZvciBhbiBleHRlcm5hbCB0YWJsZSwgQW1hem9uIFJlZHNoaWZ0IGdlbmVyYXRlcyBhIHF1ZXJ5IGV4ZWN1dGlvbiBwbGFuIGJhc2VkIG9uIGFuIGFzc3VtcHRpb24gdGhhdCBleHRlcm5hbCB0YWJsZXMgYXJlIHRoZSBsYXJnZXIgdGFibGVzIGFuZCBsb2NhbCB0YWJsZXMgYXJlIHRoZSBzbWFsbGVyIHRhYmxlcy5cbiAgICovXG4gIE5VTV9ST1dTID0gJ251bV9yb3dzJyxcblxuICAvKipcbiAgICogQSBwcm9wZXJ0eSB0aGF0IHNldHMgbnVtYmVyIG9mIHJvd3MgdG8gc2tpcCBhdCB0aGUgYmVnaW5uaW5nIG9mIGVhY2ggc291cmNlIGZpbGUuXG4gICAqL1xuICBTRVJJQUxJWkFUSU9OX05VTExfRk9STUFUID0gJ3NlcmlhbGl6YXRpb24ubnVsbC5mb3JtYXQnLFxuXG4gIC8qKlxuICAgKiBBIHByb3BlcnR5IHRoYXQgc2V0cyB0aGUgY29sdW1uIG1hcHBpbmcgdHlwZSBmb3IgdGFibGVzIHRoYXQgdXNlIE9SQyBkYXRhIGZvcm1hdC4gVGhpcyBwcm9wZXJ0eSBpcyBpZ25vcmVkIGZvciBvdGhlciBkYXRhIGZvcm1hdHMuXG4gICAqL1xuICBPUkNfU0NIRU1BX1JFU09MVVRJT04gPSAnb3JjLnNjaGVtYS5yZXNvbHV0aW9uJyxcblxuICAvKipcbiAgICogQSBwcm9wZXJ0eSB0aGF0IHNldHMgd2hldGhlciBDUkVBVEUgRVhURVJOQUwgVEFCTEUgQVMgc2hvdWxkIHdyaXRlIGRhdGEgaW4gcGFyYWxsZWwuIFdoZW4gJ3dyaXRlLnBhcmFsbGVsJyBpcyBzZXQgdG8gb2ZmLCBDUkVBVEUgRVhURVJOQUwgVEFCTEUgQVMgd3JpdGVzIHRvIG9uZSBvciBtb3JlIGRhdGEgZmlsZXMgc2VyaWFsbHkgb250byBBbWF6b24gUzMuIFRoaXMgdGFibGUgcHJvcGVydHkgYWxzbyBhcHBsaWVzIHRvIGFueSBzdWJzZXF1ZW50IElOU0VSVCBzdGF0ZW1lbnQgaW50byB0aGUgc2FtZSBleHRlcm5hbCB0YWJsZS5cbiAgICovXG4gIFdSSVRFX1BBUkFMTEVMID0gJ3dyaXRlLnBhcmFsbGVsJyxcblxuICAvKipcbiAgICogQSBwcm9wZXJ0eSB0aGF0IHNldHMgdGhlIG1heGltdW0gc2l6ZSAoaW4gTUIpIG9mIGVhY2ggZmlsZSB3cml0dGVuIHRvIEFtYXpvbiBTMyBieSBDUkVBVEUgRVhURVJOQUwgVEFCTEUgQVMuIFRoZSBzaXplIG11c3QgYmUgYSB2YWxpZCBpbnRlZ2VyIGJldHdlZW4gNSBhbmQgNjIwMC4gVGhlIGRlZmF1bHQgbWF4aW11bSBmaWxlIHNpemUgaXMgNiwyMDAgTUIuIFRoaXMgdGFibGUgcHJvcGVydHkgYWxzbyBhcHBsaWVzIHRvIGFueSBzdWJzZXF1ZW50IElOU0VSVCBzdGF0ZW1lbnQgaW50byB0aGUgc2FtZSBleHRlcm5hbCB0YWJsZS5cbiAgICovXG4gIFdSSVRFX01BWF9GSUxFU0laRV9NQiA9ICd3cml0ZS5tYXhmaWxlc2l6ZS5tYicsXG5cbiAgLyoqXG4gICAqIFlvdSBjYW4gc3BlY2lmeSBhbiBBV1MgS2V5IE1hbmFnZW1lbnQgU2VydmljZSBrZXkgdG8gZW5hYmxlIFNlcnZlcuKAk1NpZGUgRW5jcnlwdGlvbiAoU1NFKSBmb3IgQW1hem9uIFMzIG9iamVjdHMuXG4gICAqL1xuICBXUklURV9LTVNfS0VZX0lEID0gJ3dyaXRlLmttcy5rZXkuaWQnLFxufVxuXG4vKipcbiAqIEEgc3RvcmFnZSBwYXJhbWV0ZXIuIFRoZSBsaXN0IG9mIHN0b3JhZ2UgcGFyYW1ldGVycyBhdmFpbGFibGUgaXMgbm90IGV4aGF1c3RpdmUgYW5kIG90aGVyIGtleXMgbWF5IGJlIHVzZWQuXG4gKlxuICogSWYgeW91IHdvdWxkIGxpa2UgdG8gc3BlY2lmeSBhIHN0b3JhZ2UgcGFyYW1ldGVyIHRoYXQgaXMgbm90IGF2YWlsYWJsZSBhcyBhIHN0YXRpYyBtZW1iZXIgb2YgdGhpcyBjbGFzcywgdXNlIHRoZSBgU3RvcmFnZVBhcmFtZXRlci5jdXN0b21gIG1ldGhvZC5cbiAqXG4gKiBUaGUgbGlzdCBvZiBzdG9yYWdlIHBhcmFtZXRlcnMgY3VycmVudGx5IGtub3duIHdpdGhpbiB0aGUgQ0RLIGlzIGxpc3RlZC5cbiAqXG4gKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9nbHVlL2xhdGVzdC9kZy90YWJsZS1wcm9wZXJ0aWVzLWNyYXdsZXIuaHRtbFxuICpcbiAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL3JlZHNoaWZ0L2xhdGVzdC9kZy9yX0NSRUFURV9FWFRFUk5BTF9UQUJMRS5odG1sI3JfQ1JFQVRFX0VYVEVSTkFMX1RBQkxFLXBhcmFtZXRlcnMgLSB1bmRlciBfXCJUQUJMRSBQUk9QRVJUSUVTXCJfXG4gKi9cbmV4cG9ydCBjbGFzcyBTdG9yYWdlUGFyYW1ldGVyIHtcbiAgLyoqXG4gICAqIFRoZSBudW1iZXIgb2Ygcm93cyB0byBza2lwIGF0IHRoZSB0b3Agb2YgYSBDU1YgZmlsZSB3aGVuIHRoZSB0YWJsZSBpcyBiZWluZyBjcmVhdGVkLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBza2lwSGVhZGVyTGluZUNvdW50KHZhbHVlOiBudW1iZXIpOiBTdG9yYWdlUGFyYW1ldGVyIHtcbiAgICByZXR1cm4gbmV3IFN0b3JhZ2VQYXJhbWV0ZXIoJ3NraXAuaGVhZGVyLmxpbmUuY291bnQnLCB2YWx1ZS50b1N0cmluZygpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmVzIHdoZXRoZXIgZGF0YSBoYW5kbGluZyBpcyBvbiBmb3IgdGhlIHRhYmxlLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBkYXRhQ2xlYW5zaW5nRW5hYmxlZCh2YWx1ZTogYm9vbGVhbik6IFN0b3JhZ2VQYXJhbWV0ZXIge1xuICAgIHJldHVybiBuZXcgU3RvcmFnZVBhcmFtZXRlcignZGF0YV9jbGVhbnNpbmdfZW5hYmxlZCcsIHZhbHVlLnRvU3RyaW5nKCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSB0eXBlIG9mIGNvbXByZXNzaW9uIHVzZWQgb24gdGhlIHRhYmxlLCB3aGVuIHRoZSBmaWxlIG5hbWUgZG9lcyBub3QgY29udGFpbiBhbiBleHRlbnNpb24uIFRoaXMgdmFsdWUgb3ZlcnJpZGVzIHRoZSBjb21wcmVzc2lvbiB0eXBlIHNwZWNpZmllZCB0aHJvdWdoIHRoZSBleHRlbnNpb24uXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGNvbXByZXNzaW9uVHlwZSh2YWx1ZTogQ29tcHJlc3Npb25UeXBlKTogU3RvcmFnZVBhcmFtZXRlciB7XG4gICAgcmV0dXJuIG5ldyBTdG9yYWdlUGFyYW1ldGVyKCdjb21wcmVzc2lvbl90eXBlJywgdmFsdWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNwZWNpZmllcyB0aGUgYWN0aW9uIHRvIHBlcmZvcm0gd2hlbiBxdWVyeSByZXN1bHRzIGNvbnRhaW4gaW52YWxpZCBVVEYtOCBjaGFyYWN0ZXIgdmFsdWVzLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBpbnZhbGlkQ2hhckhhbmRsaW5nKHZhbHVlOiBJbnZhbGlkQ2hhckhhbmRsaW5nQWN0aW9uKTogU3RvcmFnZVBhcmFtZXRlciB7XG4gICAgcmV0dXJuIG5ldyBTdG9yYWdlUGFyYW1ldGVyKCdpbnZhbGlkX2NoYXJfaGFuZGxpbmcnLCB2YWx1ZSk7XG4gIH1cblxuICAvKipcbiAgICogU3BlY2lmaWVzIHRoZSByZXBsYWNlbWVudCBjaGFyYWN0ZXIgdG8gdXNlIHdoZW4geW91IHNldCBgSU5WQUxJRF9DSEFSX0hBTkRMSU5HYCB0byBgUkVQTEFDRWAuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHJlcGxhY2VtZW50Q2hhcih2YWx1ZTogc3RyaW5nKTogU3RvcmFnZVBhcmFtZXRlciB7XG4gICAgcmV0dXJuIG5ldyBTdG9yYWdlUGFyYW1ldGVyKCdyZXBsYWNlbWVudF9jaGFyJywgdmFsdWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNwZWNpZmllcyB0aGUgYWN0aW9uIHRvIHBlcmZvcm0gd2hlbiBPUkMgZGF0YSBjb250YWlucyBhbiBpbnRlZ2VyIChmb3IgZXhhbXBsZSwgQklHSU5UIG9yIGludDY0KSB0aGF0IGlzIGxhcmdlciB0aGFuIHRoZSBjb2x1bW4gZGVmaW5pdGlvbiAoZm9yIGV4YW1wbGUsIFNNQUxMSU5UIG9yIGludDE2KS5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgbnVtZXJpY092ZXJmbG93SGFuZGxpbmcodmFsdWU6IE51bWVyaWNPdmVyZmxvd0hhbmRsaW5nQWN0aW9uKTogU3RvcmFnZVBhcmFtZXRlciB7XG4gICAgcmV0dXJuIG5ldyBTdG9yYWdlUGFyYW1ldGVyKCdudW1lcmljX292ZXJmbG93X2hhbmRsaW5nJywgdmFsdWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNwZWNpZmllcyBob3cgdG8gaGFuZGxlIGRhdGEgYmVpbmcgbG9hZGVkIHRoYXQgZXhjZWVkcyB0aGUgbGVuZ3RoIG9mIHRoZSBkYXRhIHR5cGUgZGVmaW5lZCBmb3IgY29sdW1ucyBjb250YWluaW5nIFZBUkJZVEUgZGF0YS4gQnkgZGVmYXVsdCwgUmVkc2hpZnQgU3BlY3RydW0gc2V0cyB0aGUgdmFsdWUgdG8gbnVsbCBmb3IgZGF0YSB0aGF0IGV4Y2VlZHMgdGhlIHdpZHRoIG9mIHRoZSBjb2x1bW4uXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHN1cnBsdXNCeXRlc0hhbmRsaW5nKHZhbHVlOiBTdXJwbHVzQnl0ZXNIYW5kbGluZ0FjdGlvbik6IFN0b3JhZ2VQYXJhbWV0ZXIge1xuICAgIHJldHVybiBuZXcgU3RvcmFnZVBhcmFtZXRlcignc3VycGx1c19ieXRlc19oYW5kbGluZycsIHZhbHVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgaG93IHRvIGhhbmRsZSBkYXRhIGJlaW5nIGxvYWRlZCB0aGF0IGV4Y2VlZHMgdGhlIGxlbmd0aCBvZiB0aGUgZGF0YSB0eXBlIGRlZmluZWQgZm9yIGNvbHVtbnMgY29udGFpbmluZyBWQVJDSEFSLCBDSEFSLCBvciBzdHJpbmcgZGF0YS4gQnkgZGVmYXVsdCwgUmVkc2hpZnQgU3BlY3RydW0gc2V0cyB0aGUgdmFsdWUgdG8gbnVsbCBmb3IgZGF0YSB0aGF0IGV4Y2VlZHMgdGhlIHdpZHRoIG9mIHRoZSBjb2x1bW4uXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHN1cnBsdXNDaGFySGFuZGxpbmcodmFsdWU6IFN1cnBsdXNDaGFySGFuZGxpbmdBY3Rpb24pOiBTdG9yYWdlUGFyYW1ldGVyIHtcbiAgICByZXR1cm4gbmV3IFN0b3JhZ2VQYXJhbWV0ZXIoJ3N1cnBsdXNfY2hhcl9oYW5kbGluZycsIHZhbHVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJZGVudGlmaWVzIGlmIHRoZSBmaWxlIGNvbnRhaW5zIGxlc3Mgb3IgbW9yZSB2YWx1ZXMgZm9yIGEgcm93IHRoYW4gdGhlIG51bWJlciBvZiBjb2x1bW5zIHNwZWNpZmllZCBpbiB0aGUgZXh0ZXJuYWwgdGFibGUgZGVmaW5pdGlvbi4gVGhpcyBwcm9wZXJ0eSBpcyBvbmx5IGF2YWlsYWJsZSBmb3IgYW4gdW5jb21wcmVzc2VkIHRleHQgZmlsZSBmb3JtYXQuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGNvbHVtbkNvdW50TWlzbWF0Y2hIYW5kbGluZyh2YWx1ZTogQ29sdW1uQ291bnRNaXNtYXRjaEhhbmRsaW5nQWN0aW9uKTogU3RvcmFnZVBhcmFtZXRlciB7XG4gICAgcmV0dXJuIG5ldyBTdG9yYWdlUGFyYW1ldGVyKCdjb2x1bW5fY291bnRfbWlzbWF0Y2hfaGFuZGxpbmcnLCB2YWx1ZSk7XG4gIH1cblxuICAvKipcbiAgICogQSBwcm9wZXJ0eSB0aGF0IHNldHMgdGhlIG51bVJvd3MgdmFsdWUgZm9yIHRoZSB0YWJsZSBkZWZpbml0aW9uLiBUbyBleHBsaWNpdGx5IHVwZGF0ZSBhbiBleHRlcm5hbCB0YWJsZSdzIHN0YXRpc3RpY3MsIHNldCB0aGUgbnVtUm93cyBwcm9wZXJ0eSB0byBpbmRpY2F0ZSB0aGUgc2l6ZSBvZiB0aGUgdGFibGUuIEFtYXpvbiBSZWRzaGlmdCBkb2Vzbid0IGFuYWx5emUgZXh0ZXJuYWwgdGFibGVzIHRvIGdlbmVyYXRlIHRoZSB0YWJsZSBzdGF0aXN0aWNzIHRoYXQgdGhlIHF1ZXJ5IG9wdGltaXplciB1c2VzIHRvIGdlbmVyYXRlIGEgcXVlcnkgcGxhbi4gSWYgdGFibGUgc3RhdGlzdGljcyBhcmVuJ3Qgc2V0IGZvciBhbiBleHRlcm5hbCB0YWJsZSwgQW1hem9uIFJlZHNoaWZ0IGdlbmVyYXRlcyBhIHF1ZXJ5IGV4ZWN1dGlvbiBwbGFuIGJhc2VkIG9uIGFuIGFzc3VtcHRpb24gdGhhdCBleHRlcm5hbCB0YWJsZXMgYXJlIHRoZSBsYXJnZXIgdGFibGVzIGFuZCBsb2NhbCB0YWJsZXMgYXJlIHRoZSBzbWFsbGVyIHRhYmxlcy5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgbnVtUm93cyh2YWx1ZTogbnVtYmVyKTogU3RvcmFnZVBhcmFtZXRlciB7XG4gICAgcmV0dXJuIG5ldyBTdG9yYWdlUGFyYW1ldGVyKCdudW1fcm93cycsIHZhbHVlLnRvU3RyaW5nKCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEEgcHJvcGVydHkgdGhhdCBzZXRzIG51bWJlciBvZiByb3dzIHRvIHNraXAgYXQgdGhlIGJlZ2lubmluZyBvZiBlYWNoIHNvdXJjZSBmaWxlLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBzZXJpYWxpemF0aW9uTnVsbEZvcm1hdCh2YWx1ZTogc3RyaW5nKTogU3RvcmFnZVBhcmFtZXRlciB7XG4gICAgcmV0dXJuIG5ldyBTdG9yYWdlUGFyYW1ldGVyKCdzZXJpYWxpemF0aW9uLm51bGwuZm9ybWF0JywgdmFsdWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIEEgcHJvcGVydHkgdGhhdCBzZXRzIHRoZSBjb2x1bW4gbWFwcGluZyB0eXBlIGZvciB0YWJsZXMgdGhhdCB1c2UgT1JDIGRhdGEgZm9ybWF0LiBUaGlzIHByb3BlcnR5IGlzIGlnbm9yZWQgZm9yIG90aGVyIGRhdGEgZm9ybWF0cy4gSWYgdGhpcyBwcm9wZXJ0eSBpcyBvbWl0dGVkLCBjb2x1bW5zIGFyZSBtYXBwZWQgYnkgYE9yY0NvbHVtbk1hcHBpbmdUeXBlLk5BTUVgIGJ5IGRlZmF1bHQuXG4gICAqXG4gICAqIEBkZWZhdWx0IE9yY0NvbHVtbk1hcHBpbmdUeXBlLk5BTUVcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgb3JjU2NoZW1hUmVzb2x1dGlvbih2YWx1ZTogT3JjQ29sdW1uTWFwcGluZ1R5cGUpOiBTdG9yYWdlUGFyYW1ldGVyIHtcbiAgICByZXR1cm4gbmV3IFN0b3JhZ2VQYXJhbWV0ZXIoJ29yYy5zY2hlbWEucmVzb2x1dGlvbicsIHZhbHVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBIHByb3BlcnR5IHRoYXQgc2V0cyB3aGV0aGVyIENSRUFURSBFWFRFUk5BTCBUQUJMRSBBUyBzaG91bGQgd3JpdGUgZGF0YSBpbiBwYXJhbGxlbC4gV2hlbiAnd3JpdGUucGFyYWxsZWwnIGlzIHNldCB0byBvZmYsIENSRUFURSBFWFRFUk5BTCBUQUJMRSBBUyB3cml0ZXMgdG8gb25lIG9yIG1vcmUgZGF0YSBmaWxlcyBzZXJpYWxseSBvbnRvIEFtYXpvbiBTMy4gVGhpcyB0YWJsZSBwcm9wZXJ0eSBhbHNvIGFwcGxpZXMgdG8gYW55IHN1YnNlcXVlbnQgSU5TRVJUIHN0YXRlbWVudCBpbnRvIHRoZSBzYW1lIGV4dGVybmFsIHRhYmxlLlxuICAgKlxuICAgKiBAZGVmYXVsdCBXcml0ZVBhcmFsbGVsLk9OXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHdyaXRlUGFyYWxsZWwodmFsdWU6IFdyaXRlUGFyYWxsZWwpOiBTdG9yYWdlUGFyYW1ldGVyIHtcbiAgICByZXR1cm4gbmV3IFN0b3JhZ2VQYXJhbWV0ZXIoJ3dyaXRlLnBhcmFsbGVsJywgdmFsdWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIEEgcHJvcGVydHkgdGhhdCBzZXRzIHRoZSBtYXhpbXVtIHNpemUgKGluIE1CKSBvZiBlYWNoIGZpbGUgd3JpdHRlbiB0byBBbWF6b24gUzMgYnkgQ1JFQVRFIEVYVEVSTkFMIFRBQkxFIEFTLiBUaGUgc2l6ZSBtdXN0IGJlIGEgdmFsaWQgaW50ZWdlciBiZXR3ZWVuIDUgYW5kIDYyMDAuIFRoZSBkZWZhdWx0IG1heGltdW0gZmlsZSBzaXplIGlzIDYsMjAwIE1CLiBUaGlzIHRhYmxlIHByb3BlcnR5IGFsc28gYXBwbGllcyB0byBhbnkgc3Vic2VxdWVudCBJTlNFUlQgc3RhdGVtZW50IGludG8gdGhlIHNhbWUgZXh0ZXJuYWwgdGFibGUuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHdyaXRlTWF4RmlsZVNpemVNYih2YWx1ZTogbnVtYmVyKTogU3RvcmFnZVBhcmFtZXRlciB7XG4gICAgcmV0dXJuIG5ldyBTdG9yYWdlUGFyYW1ldGVyKCd3cml0ZS5tYXhmaWxlc2l6ZS5tYicsIHZhbHVlLnRvU3RyaW5nKCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEVuYWJsZXMgc2VydmVyLXNpZGUgZW5jcnlwdGlvbiAoU1NFLUtNUykgd2l0aCB0aGUgZ2l2ZW4gQVdTIEtNUyBrZXkgb24gdGhlXG4gICAqIGZpbGVzIFJlZHNoaWZ0IFNwZWN0cnVtIHdyaXRlcyBmb3IgdGhpcyB0YWJsZSAodmlhIGBDUkVBVEUgRVhURVJOQUwgVEFCTEUgQVNgXG4gICAqIG9yIGBJTlNFUlRgKS5cbiAgICpcbiAgICogUmVkc2hpZnQgU3BlY3RydW0gYWNjZXB0cyBlaXRoZXIgdGhlIGtleSdzIEFSTiBvciBpdHMgYmFyZSBrZXkgSUQgZm9yIHRoZVxuICAgKiBgd3JpdGUua21zLmtleS5pZGAgcHJvcGVydHksIGFuZCBlbmNyeXB0cyB0aGUgd3JpdHRlbiBvYmplY3RzIHdpdGggdGhhdCBrZXk7XG4gICAqIHRoaXMgcmVuZGVycyB0aGUgQVJOLiBUbyB1c2UgdGhlIFMzIGJ1Y2tldCdzIGRlZmF1bHQgS01TIGtleSBpbnN0ZWFkLCBzZXQgdGhlXG4gICAqIGxpdGVyYWwgdmFsdWUgYGF1dG9gIHZpYSBgU3RvcmFnZVBhcmFtZXRlci5jdXN0b20oJ3dyaXRlLmttcy5rZXkuaWQnLCAnYXV0bycpYCDigJRcbiAgICogdGhpcyB0eXBlZCBmYWN0b3J5IGNhbm5vdCBleHByZXNzIGBhdXRvYC5cbiAgICpcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vcmVkc2hpZnQvbGF0ZXN0L2RnL3JfQ1JFQVRFX0VYVEVSTkFMX1RBQkxFLmh0bWxcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgd3JpdGVLbXNLZXlJZChrZXk6IGttcy5JS2V5UmVmKTogU3RvcmFnZVBhcmFtZXRlciB7XG4gICAgcmV0dXJuIG5ldyBTdG9yYWdlUGFyYW1ldGVyKCd3cml0ZS5rbXMua2V5LmlkJywga2V5LmtleVJlZi5rZXlBcm4pO1xuICB9XG5cbiAgLyoqXG4gICAqIEEgY3VzdG9tIHN0b3JhZ2UgcGFyYW1ldGVyLlxuICAgKiBAcGFyYW0ga2V5IC0gVGhlIGtleSBvZiB0aGUgc3RvcmFnZSBwYXJhbWV0ZXIuXG4gICAqIEBwYXJhbSB2YWx1ZSAtIFRoZSB2YWx1ZSBvZiB0aGUgc3RvcmFnZSBwYXJhbWV0ZXIuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGN1c3RvbShrZXk6IHN0cmluZywgdmFsdWU6IHN0cmluZyk6IFN0b3JhZ2VQYXJhbWV0ZXIge1xuICAgIHJldHVybiBuZXcgU3RvcmFnZVBhcmFtZXRlcihrZXksIHZhbHVlKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBjb25zdHJ1Y3RvcihwdWJsaWMgcmVhZG9ubHkga2V5OiBzdHJpbmcsIHB1YmxpYyByZWFkb25seSB2YWx1ZTogc3RyaW5nKSB7fVxufVxuIl19
@@ -112,7 +112,7 @@ export interface TableBaseProps {
112
112
  * @example
113
113
  *
114
114
  * declare const glueDatabase: glue.IDatabase;
115
- * const table = new glue.Table(this, 'Table', {
115
+ * const table = new glue.S3Table(this, 'Table', {
116
116
  * storageParameters: [
117
117
  * glue.StorageParameter.skipHeaderLineCount(1),
118
118
  * glue.StorageParameter.compressionType(glue.CompressionType.GZIP),