@aws-cdk/aws-s3tables-alpha 2.265.0-alpha.0 → 2.267.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.
- package/.jsii +203 -127
- package/.jsii.tabl.json.gz +0 -0
- package/README.md +32 -0
- package/lib/namespace.js +1 -1
- package/lib/table-bucket-policy.js +1 -1
- package/lib/table-bucket.d.ts +30 -0
- package/lib/table-bucket.js +26 -3
- package/lib/table-policy.js +1 -1
- package/lib/table.d.ts +12 -0
- package/lib/table.js +4 -3
- package/package.json +6 -6
- package/rosetta/default.ts-fixture +1 -1
package/lib/table.js
CHANGED
|
@@ -156,7 +156,7 @@ var Status;
|
|
|
156
156
|
* Iceberg transform values for partition and sort fields.
|
|
157
157
|
*/
|
|
158
158
|
class IcebergTransform {
|
|
159
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-s3tables-alpha.IcebergTransform", version: "2.
|
|
159
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-s3tables-alpha.IcebergTransform", version: "2.267.0-alpha.0" };
|
|
160
160
|
/**
|
|
161
161
|
* Use the column value as the transform value without transformation.
|
|
162
162
|
*/
|
|
@@ -267,7 +267,7 @@ let Table = (() => {
|
|
|
267
267
|
Table = _classThis = _classDescriptor.value;
|
|
268
268
|
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
269
269
|
}
|
|
270
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-s3tables-alpha.Table", version: "2.
|
|
270
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-s3tables-alpha.Table", version: "2.267.0-alpha.0" };
|
|
271
271
|
/** Uniquely identifies this class. */
|
|
272
272
|
static PROPERTY_INJECTION_ID = '@aws-cdk.aws-s3tables-alpha.Table';
|
|
273
273
|
/**
|
|
@@ -392,6 +392,7 @@ let Table = (() => {
|
|
|
392
392
|
icebergMetadata: this.buildIcebergMetadata(props.icebergMetadata),
|
|
393
393
|
snapshotManagement: props.snapshotManagement,
|
|
394
394
|
withoutMetadata: props.withoutMetadata ? 'Yes' : undefined,
|
|
395
|
+
storageClassConfiguration: props.storageClass ? { storageClass: props.storageClass } : undefined,
|
|
395
396
|
});
|
|
396
397
|
this.namespace = props.namespace;
|
|
397
398
|
this.tableName = props.tableName;
|
|
@@ -482,4 +483,4 @@ let Table = (() => {
|
|
|
482
483
|
return Table = _classThis;
|
|
483
484
|
})();
|
|
484
485
|
exports.Table = Table;
|
|
485
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJ0YWJsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwyQkFBeUI7QUFDekIseURBQTJDO0FBQzNDLDJEQUFvRTtBQU9wRSwyQ0FJMEI7QUFDMUIsNEVBQTREO0FBQzVELDhFQUE4RTtBQUM5RSwwRUFBMEU7QUFHMUUscURBQXVDO0FBbUZ2Qzs7R0FFRztBQUNILE1BQWUsU0FBVSxTQUFRLGVBQVE7SUFrQmhDLG1CQUFtQixDQUN4QixTQUE4QjtRQUU5QixJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztZQUMvQyxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksNkJBQWMsQ0FBQyxJQUFJLEVBQUUsZUFBZSxFQUFFO2dCQUMzRCxRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVE7Z0JBQ3ZCLGNBQWMsRUFBRSxJQUFJLEdBQUcsQ0FBQyxjQUFjLENBQUMsRUFBRSxDQUFDO2FBQzNDLENBQUMsQ0FBQztRQUNMLENBQUM7UUFFRCxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNyQixJQUFJLENBQUMsV0FBVyxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDekQsT0FBTyxFQUFFLGNBQWMsRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3RFLENBQUM7UUFFRCxPQUFPLEVBQUUsY0FBYyxFQUFFLEtBQUssRUFBRSxDQUFDO0tBQ2xDO0lBRUQ7O09BRUc7SUFDSSxTQUFTLENBQUMsUUFBd0I7UUFDdkMsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUNmLFFBQVEsRUFDUixLQUFLLENBQUMsaUJBQWlCLEVBQ3ZCLElBQUksQ0FBQyxR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TSxhQUFhLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssS0FBSyxDQUFDLENBQUM7WUFDL0UsSUFBSSxhQUFhLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUM3QixNQUFNLElBQUksOEJBQXVCLENBQy9CLElBQUEsc0JBQUcsRUFBQSwyQkFBMkIsRUFDOUIsa0RBQWtELENBQUMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUMzRixDQUFDO1lBQ0osQ0FBQztZQUVELE9BQU8sZUFBZSxDQUFDLE1BQU0sQ0FDM0IsQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO2dCQUNmLEdBQUcsR0FBRztnQkFDTixDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxLQUFLLENBQUMsS0FBSzthQUN6QixDQUFDLEVBQ0YsRUFBNEIsQ0FDN0IsQ0FBQztTQUNIOztZQXRQVSx1REFBSzs7Ozs7QUFBTCxzQkFBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVPTCB9IGZyb20gJ29zJztcbmltcG9ydCAqIGFzIGlhbSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtaWFtJztcbmltcG9ydCB7IENmblRhYmxlLCBDZm5UYWJsZVBvbGljeSB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1zM3RhYmxlcyc7XG5pbXBvcnQgdHlwZSB7XG4gIElSZXNvdXJjZSxcbiAgSVRhZ2dhYmxlVjIsXG4gIFJlbW92YWxQb2xpY3ksXG4gIFRhZ01hbmFnZXIsXG59IGZyb20gJ2F3cy1jZGstbGliL2NvcmUnO1xuaW1wb3J0IHtcbiAgUmVzb3VyY2UsXG4gIFVuc2NvcGVkVmFsaWRhdGlvbkVycm9yLFxuICBUb2tlbixcbn0gZnJvbSAnYXdzLWNkay1saWIvY29yZSc7XG5pbXBvcnQgeyBsaXQgfSBmcm9tICdhd3MtY2RrLWxpYi9jb3JlL2xpYi9oZWxwZXJzLWludGVybmFsJztcbmltcG9ydCB7IGFkZENvbnN0cnVjdE1ldGFkYXRhIH0gZnJvbSAnYXdzLWNkay1saWIvY29yZS9saWIvbWV0YWRhdGEtcmVzb3VyY2UnO1xuaW1wb3J0IHsgcHJvcGVydHlJbmplY3RhYmxlIH0gZnJvbSAnYXdzLWNkay1saWIvY29yZS9saWIvcHJvcC1pbmplY3RhYmxlJztcbmltcG9ydCB0eXBlIHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgdHlwZSB7IElOYW1lc3BhY2UgfSBmcm9tICcuL25hbWVzcGFjZSc7XG5pbXBvcnQgKiBhcyBwZXJtcyBmcm9tICcuL3Blcm1pc3Npb25zJztcblxuLyoqXG4gKiBSZXByZXNlbnRzIGFuIFMzIFRhYmxlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIElUYWJsZSBleHRlbmRzIElSZXNvdXJjZSB7XG4gIC8qKlxuICAgKiBUaGUgQVJOIG9mIHRoaXMgdGFibGUuXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHJlYWRvbmx5IHRhYmxlQXJuOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoaXMgdGFibGUuXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHJlYWRvbmx5IHRhYmxlTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgYWNjb3VudElkIGNvbnRhaW5pbmcgdGhpcyB0YWJsZS5cbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcmVhZG9ubHkgYWNjb3VudD86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHJlZ2lvbiBjb250YWluaW5nIHRoaXMgdGFibGUuXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHJlYWRvbmx5IHJlZ2lvbj86IHN0cmluZztcblxuICAvKipcbiAgICogQWRkcyBhIHN0YXRlbWVudCB0byB0aGUgcmVzb3VyY2UgcG9saWN5IGZvciBhIHByaW5jaXBhbCAoaS5lLlxuICAgKiBhY2NvdW50L3JvbGUvc2VydmljZSkgdG8gcGVyZm9ybSBhY3Rpb25zIG9uIHRoaXMgdGFibGUuXG4gICAqXG4gICAqIE5vdGUgdGhhdCB0aGUgcG9saWN5IHN0YXRlbWVudCBtYXkgb3IgbWF5IG5vdCBiZSBhZGRlZCB0byB0aGUgcG9saWN5LlxuICAgKiBGb3IgZXhhbXBsZSwgd2hlbiBhbiBgSVRhYmxlYCBpcyBjcmVhdGVkIGZyb20gYW4gZXhpc3RpbmcgdGFibGUsXG4gICAqIGl0J3Mgbm90IHBvc3NpYmxlIHRvIHRlbGwgd2hldGhlciB0aGUgdGFibGUgYWxyZWFkeSBoYXMgYSBwb2xpY3lcbiAgICogYXR0YWNoZWQsIGxldCBhbG9uZSB0byByZS11c2UgdGhhdCBwb2xpY3kgdG8gYWRkIG1vcmUgc3RhdGVtZW50cyB0byBpdC5cbiAgICogU28gaXQncyBzYWZlc3QgdG8gZG8gbm90aGluZyBpbiB0aGVzZSBjYXNlcy5cbiAgICpcbiAgICogQHBhcmFtIHN0YXRlbWVudCB0aGUgcG9saWN5IHN0YXRlbWVudCB0byBiZSBhZGRlZCB0byB0aGUgdGFibGUnc1xuICAgKiBwb2xpY3kuXG4gICAqIEByZXR1cm5zIG1ldGFkYXRhIGFib3V0IHRoZSBleGVjdXRpb24gb2YgdGhpcyBtZXRob2QuIElmIHRoZSBwb2xpY3lcbiAgICogd2FzIG5vdCBhZGRlZCwgdGhlIHZhbHVlIG9mIGBzdGF0ZW1lbnRBZGRlZGAgd2lsbCBiZSBgZmFsc2VgLiBZb3VcbiAgICogc2hvdWxkIGFsd2F5cyBjaGVjayB0aGlzIHZhbHVlIHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSBvcGVyYXRpb24gd2FzXG4gICAqIGFjdHVhbGx5IGNhcnJpZWQgb3V0LiBPdGhlcndpc2UsIHN5bnRoZXNpcyBhbmQgZGVwbG95IHdpbGwgdGVybWluYXRlXG4gICAqIHNpbGVudGx5LCB3aGljaCBtYXkgYmUgY29uZnVzaW5nLlxuICAgKi9cbiAgYWRkVG9SZXNvdXJjZVBvbGljeShzdGF0ZW1lbnQ6IGlhbS5Qb2xpY3lTdGF0ZW1lbnQpOiBpYW0uQWRkVG9SZXNvdXJjZVBvbGljeVJlc3VsdDtcblxuICAvKipcbiAgICogR3JhbnQgcmVhZCBwZXJtaXNzaW9ucyBmb3IgdGhpcyB0YWJsZSB0byBhbiBJQU0gcHJpbmNpcGFsIChSb2xlL0dyb3VwL1VzZXIpLlxuICAgKlxuICAgKiBJZiB0aGUgcGFyZW50IFRhYmxlQnVja2V0IG9mIHRoaXMgdGFibGUgaGFzIGVuY3J5cHRpb24sXG4gICAqIHlvdSBzaG91bGQgZ3JhbnQga21zOkRlY3J5cHQgcGVybWlzc2lvbiB0byB1c2UgdGhpcyBrZXkgdG8gdGhlIHNhbWUgcHJpbmNpcGFsLlxuICAgKlxuICAgKiBAcGFyYW0gaWRlbnRpdHkgVGhlIHByaW5jaXBhbCB0byBhbGxvdyByZWFkIHBlcm1pc3Npb25zIHRvXG4gICAqL1xuICBncmFudFJlYWQoaWRlbnRpdHk6IGlhbS5JR3JhbnRhYmxlKTogaWFtLkdyYW50O1xuXG4gIC8qKlxuICAgKiBHcmFudCB3cml0ZSBwZXJtaXNzaW9ucyBmb3IgdGhpcyB0YWJsZSB0byBhbiBJQU0gcHJpbmNpcGFsIChSb2xlL0dyb3VwL1VzZXIpLlxuICAgKlxuICAgKiBJZiB0aGUgcGFyZW50IFRhYmxlQnVja2V0IG9mIHRoaXMgdGFibGUgaGFzIGVuY3J5cHRpb24sXG4gICAqIHlvdSBzaG91bGQgZ3JhbnQga21zOkdlbmVyYXRlRGF0YUtleSBhbmQga21zOkRlY3J5cHQgcGVybWlzc2lvblxuICAgKiB0byB1c2UgdGhpcyBrZXkgdG8gdGhlIHNhbWUgcHJpbmNpcGFsLlxuICAgKlxuICAgKiBAcGFyYW0gaWRlbnRpdHkgVGhlIHByaW5jaXBhbCB0byBhbGxvdyB3cml0ZSBwZXJtaXNzaW9ucyB0b1xuICAgKi9cbiAgZ3JhbnRXcml0ZShpZGVudGl0eTogaWFtLklHcmFudGFibGUpOiBpYW0uR3JhbnQ7XG5cbiAgLyoqXG4gICAqIEdyYW50IHJlYWQgYW5kIHdyaXRlIHBlcm1pc3Npb25zIGZvciB0aGlzIHRhYmxlIHRvIGFuIElBTSBwcmluY2lwYWwgKFJvbGUvR3JvdXAvVXNlcikuXG4gICAqXG4gICAqIElmIHRoZSBwYXJlbnQgVGFibGVCdWNrZXQgb2YgdGhpcyB0YWJsZSBoYXMgZW5jcnlwdGlvbixcbiAgICogeW91IHNob3VsZCBncmFudCBrbXM6R2VuZXJhdGVEYXRhS2V5IGFuZCBrbXM6RGVjcnlwdCBwZXJtaXNzaW9uXG4gICAqIHRvIHVzZSB0aGlzIGtleSB0byB0aGUgc2FtZSBwcmluY2lwYWwuXG4gICAqXG4gICAqIEBwYXJhbSBpZGVudGl0eSBUaGUgcHJpbmNpcGFsIHRvIGFsbG93IHJlYWQgYW5kIHdyaXRlIHBlcm1pc3Npb25zIHRvXG4gICAqL1xuICBncmFudFJlYWRXcml0ZShpZGVudGl0eTogaWFtLklHcmFudGFibGUpOiBpYW0uR3JhbnQ7XG59XG5cbi8qKlxuICogQmFzZSBjbGFzcyBmb3IgVGFibGUgaW1wbGVtZW50YXRpb25zLlxuICovXG5hYnN0cmFjdCBjbGFzcyBUYWJsZUJhc2UgZXh0ZW5kcyBSZXNvdXJjZSBpbXBsZW1lbnRzIElUYWJsZSB7XG4gIHB1YmxpYyBhYnN0cmFjdCByZWFkb25seSB0YWJsZU5hbWU6IHN0cmluZztcbiAgcHVibGljIGFic3RyYWN0IHJlYWRvbmx5IHRhYmxlQXJuOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSByZXNvdXJjZSBwb2xpY3kgYXNzb2NpYXRlZCB3aXRoIHRoaXMgdGFibGUuXG4gICAqXG4gICAqIElmIGBhdXRvQ3JlYXRlUG9saWN5YCBpcyB0cnVlLCBhIGBUYWJsZVBvbGljeWAgd2lsbCBiZSBjcmVhdGVkIHVwb24gdGhlXG4gICAqIGZpcnN0IGNhbGwgdG8gYWRkVG9SZXNvdXJjZVBvbGljeShzKS5cbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCB0YWJsZVBvbGljeT86IENmblRhYmxlUG9saWN5O1xuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgaWYgYSB0YWJsZSByZXNvdXJjZSBwb2xpY3kgc2hvdWxkIGF1dG9tYXRpY2FsbHkgY3JlYXRlZCB1cG9uXG4gICAqIHRoZSBmaXJzdCBjYWxsIHRvIGBhZGRUb1Jlc291cmNlUG9saWN5YC5cbiAgICovXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBhdXRvQ3JlYXRlUG9saWN5OiBib29sZWFuO1xuXG4gIHB1YmxpYyBhZGRUb1Jlc291cmNlUG9saWN5KFxuICAgIHN0YXRlbWVudDogaWFtLlBvbGljeVN0YXRlbWVudCxcbiAgKTogaWFtLkFkZFRvUmVzb3VyY2VQb2xpY3lSZXN1bHQge1xuICAgIGlmICghdGhpcy50YWJsZVBvbGljeSAmJiB0aGlzLmF1dG9DcmVhdGVQb2xpY3kpIHtcbiAgICAgIHRoaXMudGFibGVQb2xpY3kgPSBuZXcgQ2ZuVGFibGVQb2xpY3kodGhpcywgJ0RlZmF1bHRQb2xpY3knLCB7XG4gICAgICAgIHRhYmxlQXJuOiB0aGlzLnRhYmxlQXJuLFxuICAgICAgICByZXNvdXJjZVBvbGljeTogbmV3IGlhbS5Qb2xpY3lEb2N1bWVudCh7fSksXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy50YWJsZVBvbGljeSkge1xuICAgICAgdGhpcy50YWJsZVBvbGljeS5yZXNvdXJjZVBvbGljeS5hZGRTdGF0ZW1lbnRzKHN0YXRlbWVudCk7XG4gICAgICByZXR1cm4geyBzdGF0ZW1lbnRBZGRlZDogdHJ1ZSwgcG9saWN5RGVwZW5kYWJsZTogdGhpcy50YWJsZVBvbGljeSB9O1xuICAgIH1cblxuICAgIHJldHVybiB7IHN0YXRlbWVudEFkZGVkOiBmYWxzZSB9O1xuICB9XG5cbiAgLyoqXG4gICAqIFtkaXNhYmxlLWF3c2xpbnQ6bm8tZ3JhbnRzXVxuICAgKi9cbiAgcHVibGljIGdyYW50UmVhZChpZGVudGl0eTogaWFtLklHcmFudGFibGUpIHtcbiAgICByZXR1cm4gdGhpcy5ncmFudChcbiAgICAgIGlkZW50aXR5LFxuICAgICAgcGVybXMuVEFCTEVfUkVBRF9BQ0NFU1MsXG4gICAgICB0aGlzLnRhYmxlQXJuLFxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogW2Rpc2FibGUtYXdzbGludDpuby1ncmFudHNdXG4gICAqL1xuICBwdWJsaWMgZ3JhbnRXcml0ZShpZGVudGl0eTogaWFtLklHcmFudGFibGUpIHtcbiAgICByZXR1cm4gdGhpcy5ncmFudChcbiAgICAgIGlkZW50aXR5LFxuICAgICAgcGVybXMuVEFCTEVfV1JJVEVfQUNDRVNTLFxuICAgICAgdGhpcy50YWJsZUFybixcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFtkaXNhYmxlLWF3c2xpbnQ6bm8tZ3JhbnRzXVxuICAgKi9cbiAgcHVibGljIGdyYW50UmVhZFdyaXRlKGlkZW50aXR5OiBpYW0uSUdyYW50YWJsZSkge1xuICAgIHJldHVybiB0aGlzLmdyYW50KFxuICAgICAgaWRlbnRpdHksXG4gICAgICBwZXJtcy5UQUJMRV9SRUFEX1dSSVRFX0FDQ0VTUyxcbiAgICAgIHRoaXMudGFibGVBcm4sXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudHMgdGhlIGdpdmVuIHMzdGFibGVzIHBlcm1pc3Npb25zIHRvIHRoZSBwcm92aWRlZCBwcmluY2lwYWxcbiAgICogQHJldHVybnMgR3JhbnQgb2JqZWN0XG4gICAqL1xuICBwcml2YXRlIGdyYW50KFxuICAgIGdyYW50ZWU6IGlhbS5JR3JhbnRhYmxlLFxuICAgIHRhYmxlQWN0aW9uczogc3RyaW5nW10sXG4gICAgcmVzb3VyY2VBcm46IHN0cmluZyxcbiAgICAuLi5vdGhlclJlc291cmNlQXJuczogKHN0cmluZyB8IHVuZGVmaW5lZClbXSkge1xuICAgIGNvbnN0IHJlc291cmNlcyA9IFtyZXNvdXJjZUFybiwgLi4ub3RoZXJSZXNvdXJjZUFybnNdLmZpbHRlcihhcm4gPT4gYXJuICE9IHVuZGVmaW5lZCk7XG5cbiAgICBjb25zdCBncmFudCA9IGlhbS5HcmFudC5hZGRUb1ByaW5jaXBhbE9yUmVzb3VyY2Uoe1xuICAgICAgZ3JhbnRlZSxcbiAgICAgIGFjdGlvbnM6IHRhYmxlQWN0aW9ucyxcbiAgICAgIHJlc291cmNlQXJuczogcmVzb3VyY2VzLFxuICAgICAgcmVzb3VyY2U6IHRoaXMsXG4gICAgfSk7XG5cbiAgICByZXR1cm4gZ3JhbnQ7XG4gIH1cbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBjcmVhdGluZyBhIG5ldyBTMyBUYWJsZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUYWJsZVByb3BzIHtcbiAgLyoqXG4gICAqIE5hbWUgb2YgdGhpcyB0YWJsZSwgdW5pcXVlIHdpdGhpbiB0aGUgbmFtZXNwYWNlXG4gICAqL1xuICByZWFkb25seSB0YWJsZU5hbWU6IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBuYW1lc3BhY2UgdW5kZXIgd2hpY2ggdGhpcyB0YWJsZSBpcyBjcmVhdGVkXG4gICAqL1xuICByZWFkb25seSBuYW1lc3BhY2U6IElOYW1lc3BhY2U7XG4gIC8qKlxuICAgKiBGb3JtYXQgb2YgdGhpcyB0YWJsZS4gQ3VycmVudGx5LCB0aGUgb25seSBzdXBwb3J0ZWQgdmFsdWUgaXMgT3BlblRhYmxlRm9ybWF0LklDRUJFUkcuXG4gICAqL1xuICByZWFkb25seSBvcGVuVGFibGVGb3JtYXQ6IE9wZW5UYWJsZUZvcm1hdDtcbiAgLyoqXG4gICAqIFNldHRpbmdzIGdvdmVybmluZyB0aGUgQ29tcGFjdGlvbiBtYWludGVuYW5jZSBhY3Rpb24uXG4gICAqIEBkZWZhdWx0IEFtYXpvbiBTMyBzZWxlY3RzIHRoZSBiZXN0IGNvbXBhY3Rpb24gc3RyYXRlZ3kgYmFzZWQgb24geW91ciB0YWJsZSBzb3J0IG9yZGVyLlxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25TMy9sYXRlc3QvdXNlcmd1aWRlL3MzLXRhYmxlcy1tYWludGVuYW5jZS5odG1sXG4gICAqL1xuICByZWFkb25seSBjb21wYWN0aW9uPzogQ29tcGFjdGlvblByb3BlcnR5O1xuICAvKipcbiAgICogQ29udGFpbnMgZGV0YWlscyBhYm91dCB0aGUgbWV0YWRhdGEgZm9yIGFuIEljZWJlcmcgdGFibGUuXG4gICAqIEBkZWZhdWx0IHRhYmxlIGlzIGNyZWF0ZWQgd2l0aG91dCBhbnkgbWV0YWRhdGFcbiAgICovXG4gIHJlYWRvbmx5IGljZWJlcmdNZXRhZGF0YT86IEljZWJlcmdNZXRhZGF0YVByb3BlcnR5O1xuICAvKipcbiAgICogQ29udGFpbnMgZGV0YWlscyBhYm91dCB0aGUgc25hcHNob3QgbWFuYWdlbWVudCBzZXR0aW5ncyBmb3IgYW4gSWNlYmVyZyB0YWJsZS5cbiAgICogQGRlZmF1bHQgZW5hYmxlZDogTWluaW11bVNuYXBzaG90cyBpcyAxIGJ5IGRlZmF1bHQgYW5kIE1heGltdW1TbmFwc2hvdEFnZSBpcyAxMjAgaG91cnMgYnkgZGVmYXVsdC5cbiAgICovXG4gIHJlYWRvbmx5IHNuYXBzaG90TWFuYWdlbWVudD86IFNuYXBzaG90TWFuYWdlbWVudFByb3BlcnR5O1xuICAvKipcbiAgICogQ29udHJvbHMgd2hhdCBoYXBwZW5zIHRvIHRoaXMgdGFibGUgaXQgaXQgc3RvcGVkIGJlaW5nIG1hbmFnZWQgYnkgY2xvdWRmb3JtYXRpb24uXG4gICAqXG4gICAqIEBkZWZhdWx0IFJFVEFJTlxuICAgKi9cbiAgcmVhZG9ubHkgcmVtb3ZhbFBvbGljeT86IFJlbW92YWxQb2xpY3k7XG4gIC8qKlxuICAgKiBJZiB0cnVlLCBpbmRpY2F0ZXMgdGhhdCB5b3UgZG9uJ3Qgd2FudCB0byBzcGVjaWZ5IGEgc2NoZW1hIGZvciB0aGUgdGFibGUuXG4gICAqXG4gICAqIFRoaXMgcHJvcGVydHkgaXMgbXV0dWFsbHkgZXhjbHVzaXZlIHRvICdJY2ViZXJnTWV0YWRhdGEnLlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgd2l0aG91dE1ldGFkYXRhPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBTdXBwb3J0ZWQgb3BlbiB0YWJsZSBmb3JtYXRzLlxuICovXG5leHBvcnQgZW51bSBPcGVuVGFibGVGb3JtYXQge1xuICAvKipcbiAgICogQXBhY2hlIEljZWJlcmcgdGFibGUgZm9ybWF0LlxuICAgKi9cbiAgSUNFQkVSRyA9ICdJQ0VCRVJHJyxcbn1cblxuLyoqXG4gKiBTZXR0aW5ncyBnb3Zlcm5pbmcgdGhlIENvbXBhY3Rpb24gbWFpbnRlbmFuY2UgYWN0aW9uLlxuICpcbiAqIEBkZWZhdWx0IC0gTm8gY29tcGFjdGlvbiBzZXR0aW5nc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIENvbXBhY3Rpb25Qcm9wZXJ0eSB7XG4gIC8qKlxuICAgKiBTdGF0dXMgb2YgdGhlIGNvbXBhY3Rpb24gbWFpbnRlbmFuY2UgYWN0aW9uLlxuICAgKi9cbiAgcmVhZG9ubHkgc3RhdHVzOiBTdGF0dXM7XG4gIC8qKlxuICAgKiBUYXJnZXQgZmlsZSBzaXplIGluIG1lZ2FieXRlcyBmb3IgY29tcGFjdGlvbi5cbiAgICovXG4gIHJlYWRvbmx5IHRhcmdldEZpbGVTaXplTWI6IG51bWJlcjtcbn1cblxuLyoqXG4gKiBTdGF0dXMgdmFsdWVzIGZvciBtYWludGVuYW5jZSBhY3Rpb25zLlxuICovXG5leHBvcnQgZW51bSBTdGF0dXMge1xuICAvKipcbiAgICogRW5hYmxlIHRoZSBtYWludGVuYW5jZSBhY3Rpb24uXG4gICAqL1xuICBFTkFCTEVEID0gJ2VuYWJsZWQnLFxuICAvKipcbiAgICogRGlzYWJsZSB0aGUgbWFpbnRlbmFuY2UgYWN0aW9uLlxuICAgKi9cbiAgRElTQUJMRUQgPSAnZGlzYWJsZWQnLFxufVxuXG4vKipcbiAqIEljZWJlcmcgdHJhbnNmb3JtIHZhbHVlcyBmb3IgcGFydGl0aW9uIGFuZCBzb3J0IGZpZWxkcy5cbiAqL1xuZXhwb3J0IGNsYXNzIEljZWJlcmdUcmFuc2Zvcm0ge1xuICAvKipcbiAgICogVXNlIHRoZSBjb2x1bW4gdmFsdWUgYXMgdGhlIHRyYW5zZm9ybSB2YWx1ZSB3aXRob3V0IHRyYW5zZm9ybWF0aW9uLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBJREVOVElUWSA9IG5ldyBJY2ViZXJnVHJhbnNmb3JtKCdpZGVudGl0eScpO1xuXG4gIC8qKlxuICAgKiBUcmFuc2Zvcm0gYSB0aW1lc3RhbXAvZGF0ZSBmaWVsZCB0byB5ZWFyLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBZRUFSID0gbmV3IEljZWJlcmdUcmFuc2Zvcm0oJ3llYXInKTtcblxuICAvKipcbiAgICogVHJhbnNmb3JtIGEgdGltZXN0YW1wL2RhdGUgZmllbGQgdG8gbW9udGguXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IE1PTlRIID0gbmV3IEljZWJlcmdUcmFuc2Zvcm0oJ21vbnRoJyk7XG5cbiAgLyoqXG4gICAqIFRyYW5zZm9ybSBhIHRpbWVzdGFtcC9kYXRlIGZpZWxkIHRvIGRheS5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgREFZID0gbmV3IEljZWJlcmdUcmFuc2Zvcm0oJ2RheScpO1xuXG4gIC8qKlxuICAgKiBUcmFuc2Zvcm0gYSB0aW1lc3RhbXAgZmllbGQgdG8gaG91ci5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgSE9VUiA9IG5ldyBJY2ViZXJnVHJhbnNmb3JtKCdob3VyJyk7XG5cbiAgLyoqXG4gICAqIFRyYW5zZm9ybSB2YWx1ZXMgaW50byBhIGZpeGVkIG51bWJlciBvZiBidWNrZXRzLlxuICAgKlxuICAgKiBAcGFyYW0gbiBUaGUgbnVtYmVyIG9mIGJ1Y2tldHMgKG11c3QgYmUgYSBwb3NpdGl2ZSBpbnRlZ2VyKVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBidWNrZXQobjogbnVtYmVyKTogSWNlYmVyZ1RyYW5zZm9ybSB7XG4gICAgaWYgKG4gPD0gMCB8fCAhTnVtYmVyLmlzSW50ZWdlcihuKSkge1xuICAgICAgdGhyb3cgbmV3IFVuc2NvcGVkVmFsaWRhdGlvbkVycm9yKFxuICAgICAgICBsaXRgSW52YWxpZEJ1Y2tldENvdW50YCxcbiAgICAgICAgJ0J1Y2tldCBjb3VudCBtdXN0IGJlIGEgcG9zaXRpdmUgaW50ZWdlci4nLFxuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIG5ldyBJY2ViZXJnVHJhbnNmb3JtKGBidWNrZXRbJHtufV1gKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUcnVuY2F0ZSB2YWx1ZXMgdG8gYSBmaXhlZCB3aWR0aC5cbiAgICpcbiAgICogQHBhcmFtIHdpZHRoIFRoZSB0cnVuY2F0aW9uIHdpZHRoIChtdXN0IGJlIGEgcG9zaXRpdmUgaW50ZWdlcilcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgdHJ1bmNhdGUod2lkdGg6IG51bWJlcik6IEljZWJlcmdUcmFuc2Zvcm0ge1xuICAgIGlmICh3aWR0aCA8PSAwIHx8ICFOdW1iZXIuaXNJbnRlZ2VyKHdpZHRoKSkge1xuICAgICAgdGhyb3cgbmV3IFVuc2NvcGVkVmFsaWRhdGlvbkVycm9yKFxuICAgICAgICBsaXRgSW52YWxpZFRydW5jYXRlV2lkdGhgLFxuICAgICAgICAnVHJ1bmNhdGUgd2lkdGggbXVzdCBiZSBhIHBvc2l0aXZlIGludGVnZXIuJyxcbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiBuZXcgSWNlYmVyZ1RyYW5zZm9ybShgdHJ1bmNhdGVbJHt3aWR0aH1dYCk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGEgY3VzdG9tIHRyYW5zZm9ybSBmcm9tIGEgc3RyaW5nIHZhbHVlLlxuICAgKlxuICAgKiBAcGFyYW0gdmFsdWUgVGhlIHRyYW5zZm9ybSBzdHJpbmcgdmFsdWVcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgb2YodmFsdWU6IHN0cmluZyk6IEljZWJlcmdUcmFuc2Zvcm0ge1xuICAgIHJldHVybiBuZXcgSWNlYmVyZ1RyYW5zZm9ybSh2YWx1ZSk7XG4gIH1cblxuICAvKipcbiAgICogVGhlIHN0cmluZyB2YWx1ZSBvZiB0aGUgdHJhbnNmb3JtLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHZhbHVlOiBzdHJpbmc7XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3Rvcih2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgdHJhbnNmb3JtLlxuICAgKi9cbiAgcHVibGljIHRvU3RyaW5nKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMudmFsdWU7XG4gIH1cbn1cblxuLyoqXG4gKiBTb3J0IGRpcmVjdGlvbiB2YWx1ZXMgZm9yIEljZWJlcmcgc29ydCBmaWVsZHMuXG4gKi9cbmV4cG9ydCBlbnVtIFNvcnREaXJlY3Rpb24ge1xuICAvKipcbiAgICogU29ydCB2YWx1ZXMgaW4gYXNjZW5kaW5nIG9yZGVyLlxuICAgKi9cbiAgQVNDID0gJ2FzYycsXG4gIC8qKlxuICAgKiBTb3J0IHZhbHVlcyBpbiBkZXNjZW5kaW5nIG9yZGVyLlxuICAgKi9cbiAgREVTQyA9ICdkZXNjJyxcbn1cblxuLyoqXG4gKiBOdWxsIG9yZGVyaW5nIHZhbHVlcyBmb3IgSWNlYmVyZyBzb3J0IGZpZWxkcy5cbiAqL1xuZXhwb3J0IGVudW0gTnVsbE9yZGVyIHtcbiAgLyoqXG4gICAqIFBsYWNlIG51bGwgdmFsdWVzIGJlZm9yZSBub24tbnVsbCB2YWx1ZXMuXG4gICAqL1xuICBOVUxMU19GSVJTVCA9ICdudWxscy1maXJzdCcsXG4gIC8qKlxuICAgKiBQbGFjZSBudWxsIHZhbHVlcyBhZnRlciBub24tbnVsbCB2YWx1ZXMuXG4gICAqL1xuICBOVUxMU19MQVNUID0gJ251bGxzLWxhc3QnLFxufVxuXG4vKipcbiAqIFBhcnRpdGlvbiBmaWVsZCBkZWZpbml0aW9uIGZvciBJY2ViZXJnIHRhYmxlLlxuICpcbiAqIERlZmluZXMgYSBzaW5nbGUgcGFydGl0aW9uIGNvbHVtbi4gTXVsdGlwbGUgcGFydGl0aW9uIGZpZWxkcyBjYW4gYmUgY29tYmluZWRcbiAqIGluIGFuIEljZWJlcmdQYXJ0aXRpb25TcGVjIHRvIGNyZWF0ZSBtdWx0aS1sZXZlbCBwYXJ0aXRpb25pbmcuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSWNlYmVyZ1BhcnRpdGlvbkZpZWxkIHtcbiAgLyoqXG4gICAqIFRoZSBzb3VyY2UgZmllbGQgSUQgZnJvbSB0aGUgc2NoZW1hLlxuICAgKi9cbiAgcmVhZG9ubHkgc291cmNlSWQ6IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIHBhcnRpdGlvbiB0cmFuc2Zvcm0gZnVuY3Rpb24uXG4gICAqXG4gICAqIFVzZSBgSWNlYmVyZ1RyYW5zZm9ybWAgc3RhdGljIHByb3BlcnRpZXMgZm9yIGNvbW1vbiB0cmFuc2Zvcm1zIChlLmcuLCBgSWNlYmVyZ1RyYW5zZm9ybS5JREVOVElUWWApXG4gICAqIG9yIG1ldGhvZHMgZm9yIHBhcmFtZXRlcml6ZWQgdHJhbnNmb3JtcyAoZS5nLiwgYEljZWJlcmdUcmFuc2Zvcm0uYnVja2V0KDE2KWApLlxuICAgKi9cbiAgcmVhZG9ubHkgdHJhbnNmb3JtOiBJY2ViZXJnVHJhbnNmb3JtO1xuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIHBhcnRpdGlvbiBmaWVsZC5cbiAgICovXG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgcGFydGl0aW9uIGZpZWxkLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIEF1dG8tYXNzaWduZWQgc3RhcnRpbmcgZnJvbSAxMDAwXG4gICAqL1xuICByZWFkb25seSBmaWVsZElkPzogbnVtYmVyO1xufVxuXG4vKipcbiAqIFBhcnRpdGlvbiBzcGVjaWZpY2F0aW9uIGZvciBJY2ViZXJnIHRhYmxlLlxuICpcbiAqIENvbnRhaW5zIHRoZSBjb21wbGV0ZSBwYXJ0aXRpb25pbmcgY29uZmlndXJhdGlvbiBmb3IgYSB0YWJsZSwgaW5jbHVkaW5nIGFsbCBwYXJ0aXRpb24gZmllbGRzLlxuICogVXNlIHRoaXMgdG8gZGVmaW5lIG11bHRpLWxldmVsIHBhcnRpdGlvbmluZyAoZS5nLiwgcGFydGl0aW9uIGJ5IGRhdGUsIHRoZW4gYnkgcmVnaW9uKS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJY2ViZXJnUGFydGl0aW9uU3BlYyB7XG4gIC8qKlxuICAgKiBUaGUgbGlzdCBvZiBwYXJ0aXRpb24gZmllbGRzLlxuICAgKi9cbiAgcmVhZG9ubHkgZmllbGRzOiBJY2ViZXJnUGFydGl0aW9uRmllbGRbXTtcblxuICAvKipcbiAgICogVGhlIHVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgcGFydGl0aW9uIHNwZWNpZmljYXRpb24uXG4gICAqXG4gICAqIEBkZWZhdWx0IDBcbiAgICovXG4gIHJlYWRvbmx5IHNwZWNJZD86IG51bWJlcjtcbn1cblxuLyoqXG4gKiBTb3J0IGZpZWxkIGRlZmluaXRpb24gZm9yIEljZWJlcmcgdGFibGUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSWNlYmVyZ1NvcnRGaWVsZCB7XG4gIC8qKlxuICAgKiBUaGUgc291cmNlIGZpZWxkIElEIGZyb20gdGhlIHNjaGVtYS5cbiAgICovXG4gIHJlYWRvbmx5IHNvdXJjZUlkOiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFRoZSBzb3J0IHRyYW5zZm9ybSBmdW5jdGlvbi5cbiAgICpcbiAgICogVXNlIGBJY2ViZXJnVHJhbnNmb3JtYCBzdGF0aWMgcHJvcGVydGllcyBmb3IgY29tbW9uIHRyYW5zZm9ybXMgKGUuZy4sIGBJY2ViZXJnVHJhbnNmb3JtLklERU5USVRZYClcbiAgICogb3IgbWV0aG9kcyBmb3IgcGFyYW1ldGVyaXplZCB0cmFuc2Zvcm1zIChlLmcuLCBgSWNlYmVyZ1RyYW5zZm9ybS5idWNrZXQoMTYpYCkuXG4gICAqL1xuICByZWFkb25seSB0cmFuc2Zvcm06IEljZWJlcmdUcmFuc2Zvcm07XG5cbiAgLyoqXG4gICAqIFRoZSBzb3J0IGRpcmVjdGlvbi5cbiAgICovXG4gIHJlYWRvbmx5IGRpcmVjdGlvbjogU29ydERpcmVjdGlvbjtcblxuICAvKipcbiAgICogVGhlIG51bGwgb3JkZXJpbmcuXG4gICAqL1xuICByZWFkb25seSBudWxsT3JkZXI6IE51bGxPcmRlcjtcbn1cblxuLyoqXG4gKiBTb3J0IG9yZGVyIHNwZWNpZmljYXRpb24gZm9yIEljZWJlcmcgdGFibGUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSWNlYmVyZ1NvcnRPcmRlciB7XG4gIC8qKlxuICAgKiBUaGUgbGlzdCBvZiBzb3J0IGZpZWxkcy5cbiAgICovXG4gIHJlYWRvbmx5IGZpZWxkczogSWNlYmVyZ1NvcnRGaWVsZFtdO1xuXG4gIC8qKlxuICAgKiBUaGUgdW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSBzb3J0IG9yZGVyLlxuICAgKlxuICAgKiBAZGVmYXVsdCAxXG4gICAqL1xuICByZWFkb25seSBvcmRlcklkPzogbnVtYmVyO1xufVxuXG4vKipcbiAqIEEgc2luZ2xlIHRhYmxlIHByb3BlcnR5IGtleS12YWx1ZSBwYWlyIGZvciBJY2ViZXJnIHRhYmxlIGNvbmZpZ3VyYXRpb24uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVGFibGVQcm9wZXJ0eUVudHJ5IHtcbiAgLyoqXG4gICAqIFRoZSBwcm9wZXJ0eSBrZXkuXG4gICAqL1xuICByZWFkb25seSBrZXk6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHByb3BlcnR5IHZhbHVlLlxuICAgKi9cbiAgcmVhZG9ubHkgdmFsdWU6IHN0cmluZztcbn1cblxuLyoqXG4gKiBDb250YWlucyBkZXRhaWxzIGFib3V0IHRoZSBtZXRhZGF0YSBmb3IgYW4gSWNlYmVyZyB0YWJsZS5cbiAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0Nsb3VkRm9ybWF0aW9uL2xhdGVzdC9Vc2VyR3VpZGUvYXdzLXByb3BlcnRpZXMtczN0YWJsZXMtdGFibGUtaWNlYmVyZ21ldGFkYXRhLmh0bWxcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJY2ViZXJnTWV0YWRhdGFQcm9wZXJ0eSB7XG4gIC8qKlxuICAgKiBDb250YWlucyBkZXRhaWxzIGFib3V0IHRoZSBzY2hlbWEgZm9yIGFuIEljZWJlcmcgdGFibGUuXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0Nsb3VkRm9ybWF0aW9uL2xhdGVzdC9Vc2VyR3VpZGUvYXdzLXByb3BlcnRpZXMtczN0YWJsZXMtdGFibGUtaWNlYmVyZ21ldGFkYXRhLmh0bWwjY2ZuLXMzdGFibGVzLXRhYmxlLWljZWJlcmdtZXRhZGF0YS1pY2ViZXJnc2NoZW1hXG4gICAqL1xuICByZWFkb25seSBpY2ViZXJnU2NoZW1hOiBJY2ViZXJnU2NoZW1hUHJvcGVydHk7XG5cbiAgLyoqXG4gICAqIFRoZSBwYXJ0aXRpb24gc3BlY2lmaWNhdGlvbiBmb3IgdGhlIEljZWJlcmcgdGFibGUuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm8gcGFydGl0aW9uIHNwZWNpZmljYXRpb25cbiAgICovXG4gIHJlYWRvbmx5IGljZWJlcmdQYXJ0aXRpb25TcGVjPzogSWNlYmVyZ1BhcnRpdGlvblNwZWM7XG5cbiAgLyoqXG4gICAqIFRoZSBzb3J0IG9yZGVyIGZvciB0aGUgSWNlYmVyZyB0YWJsZS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBObyBzb3J0IG9yZGVyXG4gICAqL1xuICByZWFkb25seSBpY2ViZXJnU29ydE9yZGVyPzogSWNlYmVyZ1NvcnRPcmRlcjtcblxuICAvKipcbiAgICogQ3VzdG9tIHByb3BlcnRpZXMgZm9yIHRoZSBJY2ViZXJnIHRhYmxlLlxuICAgKiBFYWNoIGVudHJ5IHJlcHJlc2VudHMgYSBrZXktdmFsdWUgcGFpciBmb3IgSWNlYmVyZyB0YWJsZSBjb25maWd1cmF0aW9uLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIE5vIGN1c3RvbSBwcm9wZXJ0aWVzXG4gICAqL1xuICByZWFkb25seSB0YWJsZVByb3BlcnRpZXM/OiBUYWJsZVByb3BlcnR5RW50cnlbXTtcbn1cblxuLyoqXG4gKiBDb250YWlucyBkZXRhaWxzIGFib3V0IHRoZSBzY2hlbWEgZm9yIGFuIEljZWJlcmcgdGFibGUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSWNlYmVyZ1NjaGVtYVByb3BlcnR5IHtcbiAgLyoqXG4gICAqIENvbnRhaW5zIGRldGFpbHMgYWJvdXQgdGhlIHNjaGVtYSBmb3IgYW4gSWNlYmVyZyB0YWJsZS5cbiAgICovXG4gIHJlYWRvbmx5IHNjaGVtYUZpZWxkTGlzdDogU2NoZW1hRmllbGRQcm9wZXJ0eVtdO1xufVxuXG4vKipcbiAqIENvbnRhaW5zIGRldGFpbHMgYWJvdXQgYSBzY2hlbWEgZmllbGQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2NoZW1hRmllbGRQcm9wZXJ0eSB7XG4gIC8qKlxuICAgKiBUaGUgdW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSBmaWVsZC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBBdXRvLWFzc2lnbmVkIGJ5IFMzIFRhYmxlc1xuICAgKi9cbiAgcmVhZG9ubHkgaWQ/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBmaWVsZC5cbiAgICovXG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogQSBCb29sZWFuIHZhbHVlIHRoYXQgc3BlY2lmaWVzIHdoZXRoZXIgdmFsdWVzIGFyZSByZXF1aXJlZCBmb3IgZWFjaCByb3cgaW4gdGhpcyBmaWVsZC5cbiAgICpcbiAgICogQnkgZGVmYXVsdCwgdGhpcyBpcyBgZmFsc2VgIGFuZCBudWxsIHZhbHVlcyBhcmUgYWxsb3dlZCBpbiB0aGUgZmllbGQuIElmIHRoaXMgaXMgYHRydWVgLCB0aGUgZmllbGQgZG9lcyBub3QgYWxsb3cgbnVsbCB2YWx1ZXMuXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSByZXF1aXJlZD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBmaWVsZCB0eXBlLlxuICAgKlxuICAgKiBTMyBUYWJsZXMgc3VwcG9ydHMgYWxsIEFwYWNoZSBJY2ViZXJnIHByaW1pdGl2ZSB0eXBlcy4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSB0aGUgW0FwYWNoZSBJY2ViZXJnIGRvY3VtZW50YXRpb25dKGh0dHBzOi8vaWNlYmVyZy5hcGFjaGUub3JnL3NwZWMvI3ByaW1pdGl2ZS10eXBlcykuXG4gICAqL1xuICByZWFkb25seSB0eXBlOiBzdHJpbmc7XG59XG5cbi8qKlxuICogQ29udGFpbnMgZGV0YWlscyBhYm91dCB0aGUgc25hcHNob3QgbWFuYWdlbWVudCBzZXR0aW5ncyBmb3IgYW4gSWNlYmVyZyB0YWJsZS5cbiAqXG4gKiBBIHNuYXBzaG90IGlzIGV4cGlyZWQgd2hlbiBpdCBleGNlZWRzIE1pblNuYXBzaG90c1RvS2VlcCBhbmQgTWF4U25hcHNob3RBZ2VIb3Vycy5cbiAqXG4gKiBAZGVmYXVsdCAtIE5vIHNuYXBzaG90IG1hbmFnZW1lbnQgc2V0dGluZ3NcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTbmFwc2hvdE1hbmFnZW1lbnRQcm9wZXJ0eSB7XG4gIC8qKlxuICAgKiBUaGUgbWF4aW11bSBhZ2Ugb2YgYSBzbmFwc2hvdCBiZWZvcmUgaXQgY2FuIGJlIGV4cGlyZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm8gbWF4aW11bSBhZ2VcbiAgICovXG4gIHJlYWRvbmx5IG1heFNuYXBzaG90QWdlSG91cnM/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFRoZSBtaW5pbXVtIG51bWJlciBvZiBzbmFwc2hvdHMgdG8ga2VlcC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBObyBtaW5pbXVtIG51bWJlclxuICAgKi9cbiAgcmVhZG9ubHkgbWluU25hcHNob3RzVG9LZWVwPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgd2hldGhlciB0aGUgU25hcHNob3RNYW5hZ2VtZW50IG1haW50ZW5hbmNlIGFjdGlvbiBpcyBlbmFibGVkLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIE5vdCBzcGVjaWZpZWRcbiAgICovXG4gIHJlYWRvbmx5IHN0YXR1cz86IFN0YXR1cztcbn1cblxuLyoqXG4gKiBBIHJlZmVyZW5jZSB0byBhIHRhYmxlIG91dHNpZGUgdGhpcyBzdGFja1xuICpcbiAqIFRoZSB0YWJsZU5hbWUsIHJlZ2lvbiwgYW5kIGFjY291bnQgY2FuIGJlIHByb3ZpZGVkIGV4cGxpY2l0bHlcbiAqIG9yIHdpbGwgYmUgaW5mZXJyZWQgZnJvbSB0aGUgdGFibGVBcm5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUYWJsZUF0dHJpYnV0ZXMge1xuICAvKipcbiAgICogTmFtZSBvZiB0aGlzIHRhYmxlXG4gICAqL1xuICByZWFkb25seSB0YWJsZU5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHRhYmxlJ3MgQVJOLlxuICAgKi9cbiAgcmVhZG9ubHkgdGFibGVBcm46IHN0cmluZztcbn1cblxuLyoqXG4gKiBBbiBTMyBUYWJsZSB3aXRoIGhlbHBlcnMuXG4gKi9cbkBwcm9wZXJ0eUluamVjdGFibGVcbmV4cG9ydCBjbGFzcyBUYWJsZSBleHRlbmRzIFRhYmxlQmFzZSBpbXBsZW1lbnRzIElUYWdnYWJsZVYyIHtcbiAgLyoqIFVuaXF1ZWx5IGlkZW50aWZpZXMgdGhpcyBjbGFzcy4gKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBQUk9QRVJUWV9JTkpFQ1RJT05fSUQ6IHN0cmluZyA9ICdAYXdzLWNkay5hd3MtczN0YWJsZXMtYWxwaGEuVGFibGUnO1xuXG4gIC8qKlxuICAgKiBEZWZpbmVzIGEgVGFibGUgY29uc3RydWN0IHRoYXQgcmVwcmVzZW50cyBhbiBleHRlcm5hbCB0YWJsZS5cbiAgICpcbiAgICogQHBhcmFtIHNjb3BlIFRoZSBwYXJlbnQgY3JlYXRpbmcgY29uc3RydWN0ICh1c3VhbGx5IGB0aGlzYCkuXG4gICAqIEBwYXJhbSBpZCBUaGUgY29uc3RydWN0J3MgbmFtZS5cbiAgICogQHBhcmFtIGF0dHJzIEEgYFRhYmxlQXR0cmlidXRlc2Agb2JqZWN0IGNvbnRhaW5pbmcgdGhlIHRhYmxlIG5hbWUgYW5kIEFSTi5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZnJvbVRhYmxlQXR0cmlidXRlcyhcbiAgICBzY29wZTogQ29uc3RydWN0LFxuICAgIGlkOiBzdHJpbmcsXG4gICAgYXR0cnM6IFRhYmxlQXR0cmlidXRlcyxcbiAgKTogSVRhYmxlIHtcbiAgICBjb25zdCB0YWJsZUFybiA9IGF0dHJzLnRhYmxlQXJuO1xuICAgIFRhYmxlLnZhbGlkYXRlVGFibGVOYW1lKGF0dHJzLnRhYmxlTmFtZSk7XG5cbiAgICBjbGFzcyBJbXBvcnQgZXh0ZW5kcyBUYWJsZUJhc2Uge1xuICAgICAgcHVibGljIHJlYWRvbmx5IHRhYmxlTmFtZSA9IGF0dHJzLnRhYmxlTmFtZTtcbiAgICAgIHB1YmxpYyByZWFkb25seSB0YWJsZUFybiA9IHRhYmxlQXJuO1xuICAgICAgcHVibGljIHJlYWRvbmx5IHRhYmxlUG9saWN5PzogQ2ZuVGFibGVQb2xpY3k7XG4gICAgICBwcm90ZWN0ZWQgYXV0b0NyZWF0ZVBvbGljeTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgICAvKipcbiAgICAgICAqIEV4cG9ydHMgdGhpcyAgZnJvbSB0aGUgc3RhY2suXG4gICAgICAgKi9cbiAgICAgIHB1YmxpYyBleHBvcnQoKSB7XG4gICAgICAgIHJldHVybiBhdHRycztcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IEltcG9ydChzY29wZSwgaWQsIHtcbiAgICAgIGVudmlyb25tZW50RnJvbUFybjogdGFibGVBcm4sXG4gICAgICBwaHlzaWNhbE5hbWU6IHRhYmxlQXJuLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUzMvbGF0ZXN0L3VzZXJndWlkZS9zMy10YWJsZXMtYnVja2V0cy1uYW1pbmcuaHRtbFxuICAgKiBAcGFyYW0gdGFibGVOYW1lIE5hbWUgb2YgdGhlIHRhYmxlXG4gICAqIEB0aHJvd3MgVW5zY29wZWRWYWxpZGF0aW9uRXJyb3IgaWYgYW55IG5hbWluZyBlcnJvcnMgYXJlIGRldGVjdGVkXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHZhbGlkYXRlVGFibGVOYW1lKHRhYmxlTmFtZTogc3RyaW5nKSB7XG4gICAgaWYgKHRhYmxlTmFtZSA9PSB1bmRlZmluZWQgfHwgVG9rZW4uaXNVbnJlc29sdmVkKHRhYmxlTmFtZSkpIHtcbiAgICAgIC8vIHRoZSBuYW1lIGlzIGEgbGF0ZS1ib3VuZCB2YWx1ZSwgbm90IGEgZGVmaW5lZCBzdHJpbmcsIHNvIHNraXAgdmFsaWRhdGlvblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGVycm9yczogc3RyaW5nW10gPSBbXTtcblxuICAgIC8vIExlbmd0aCB2YWxpZGF0aW9uXG4gICAgaWYgKHRhYmxlTmFtZS5sZW5ndGggPCAxIHx8IHRhYmxlTmFtZS5sZW5ndGggPiAyNTUpIHtcbiAgICAgIGVycm9ycy5wdXNoKFxuICAgICAgICAnVGFibGUgbmFtZSBtdXN0IGJlIGF0IGxlYXN0IDEgYW5kIG5vIG1vcmUgdGhhbiAyNTUgY2hhcmFjdGVycycsXG4gICAgICApO1xuICAgIH1cblxuICAgIC8vIENoYXJhY3RlciBzZXQgdmFsaWRhdGlvblxuICAgIGNvbnN0IGlsbGVnYWxDaGFyc2V0UmVnRXggPSAvW15hLXowLTlfXS87XG4gICAgY29uc3QgYWxsb3dlZEVkZ2VDaGFyc2V0UmVnRXggPSAvW2EtejAtOV0vO1xuXG4gICAgY29uc3QgaWxsZWdhbENoYXJNYXRjaCA9IHRhYmxlTmFtZS5tYXRjaChpbGxlZ2FsQ2hhcnNldFJlZ0V4KTtcbiAgICBpZiAoaWxsZWdhbENoYXJNYXRjaCkge1xuICAgICAgZXJyb3JzLnB1c2goXG4gICAgICAgICdUYWJsZSBuYW1lIG11c3Qgb25seSBjb250YWluIGxvd2VyY2FzZSBjaGFyYWN0ZXJzLCBudW1iZXJzLCBhbmQgdW5kZXJzY29yZXMgKF8pJyArXG4gICAgICAgICAgYCAob2Zmc2V0OiAke2lsbGVnYWxDaGFyTWF0Y2guaW5kZXh9KWAsXG4gICAgICApO1xuICAgIH1cblxuICAgIC8vIEVkZ2UgY2hhcmFjdGVyIHZhbGlkYXRpb25cbiAgICBpZiAoIWFsbG93ZWRFZGdlQ2hhcnNldFJlZ0V4LnRlc3QodGFibGVOYW1lLmNoYXJBdCgwKSkpIHtcbiAgICAgIGVycm9ycy5wdXNoKFxuICAgICAgICAnVGFibGUgbmFtZSBtdXN0IHN0YXJ0IHdpdGggYSBsb3dlcmNhc2UgbGV0dGVyIG9yIG51bWJlciAob2Zmc2V0OiAwKScsXG4gICAgICApO1xuICAgIH1cbiAgICBpZiAoIWFsbG93ZWRFZGdlQ2hhcnNldFJlZ0V4LnRlc3QodGFibGVOYW1lLmNoYXJBdCh0YWJsZU5hbWUubGVuZ3RoIC0gMSkpKSB7XG4gICAgICBlcnJvcnMucHVzaChcbiAgICAgICAgYFRhYmxlIG5hbWUgbXVzdCBlbmQgd2l0aCBhIGxvd2VyY2FzZSBsZXR0ZXIgb3IgbnVtYmVyIChvZmZzZXQ6ICR7XG4gICAgICAgICAgdGFibGVOYW1lLmxlbmd0aCAtIDFcbiAgICAgICAgfSlgLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAoZXJyb3JzLmxlbmd0aCA+IDApIHtcbiAgICAgIHRocm93IG5ldyBVbnNjb3BlZFZhbGlkYXRpb25FcnJvcihcbiAgICAgICAgbGl0YEludmFsaWRUYWJsZU5hbWVgLFxuICAgICAgICBgSW52YWxpZCBTMyB0YWJsZSBuYW1lICh2YWx1ZTogJHt0YWJsZU5hbWV9KSR7RU9MfSR7ZXJyb3JzLmpvaW4oRU9MKX1gLFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVGhlIHVuaXF1ZSBBbWF6b24gUmVzb3VyY2UgTmFtZSAoYXJuKSBvZiB0aGlzIHRhYmxlXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgdGFibGVBcm46IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHVuZGVybHlpbmcgQ2ZuVGFibGUgTDEgcmVzb3VyY2VcbiAgICogQGludGVybmFsXG4gICAqL1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZXNvdXJjZTogQ2ZuVGFibGU7XG5cbiAgLyoqXG4gICAqIFRoZSB0YWcgbWFuYWdlciBmb3IgdGhpcyByZXNvdXJjZS5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBjZGtUYWdNYW5hZ2VyOiBUYWdNYW5hZ2VyO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGlzIHRhYmxlXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgdGFibGVOYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lc3BhY2UgY29udGFpbmluZyB0aGlzIHRhYmxlXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgbmFtZXNwYWNlOiBJTmFtZXNwYWNlO1xuXG4gIC8qKlxuICAgKiBUaGUgcmVzb3VyY2UgcG9saWN5IGZvciB0aGlzIHRhYmxlLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHRhYmxlUG9saWN5PzogQ2ZuVGFibGVQb2xpY3k7XG5cbiAgcHJvdGVjdGVkIGF1dG9DcmVhdGVQb2xpY3k6IGJvb2xlYW4gPSB0cnVlO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBUYWJsZVByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCB7fSk7XG5cbiAgICAvLyBFbmhhbmNlZCBDREsgQW5hbHl0aWNzIFRlbGVtZXRyeVxuICAgIGFkZENvbnN0cnVjdE1ldGFkYXRhKHRoaXMsIHByb3BzKTtcblxuICAgIGlmIChwcm9wcy53aXRob3V0TWV0YWRhdGEgJiYgcHJvcHMuaWNlYmVyZ01ldGFkYXRhKSB7XG4gICAgICB0aHJvdyBuZXcgVW5zY29wZWRWYWxpZGF0aW9uRXJyb3IoXG4gICAgICAgIGxpdGBNdXR1YWxseUV4Y2x1c2l2ZVByb3BzYCxcbiAgICAgICAgXCJUYWJsZVByb3BzOiAnd2l0aG91dE1ldGFkYXRhJyBhbmQgJ2ljZWJlcmdNZXRhZGF0YScgYXJlIG11dHVhbGx5IGV4Y2x1c2l2ZS4gU3BlY2lmeSBvbmx5IG9uZS5cIixcbiAgICAgICk7XG4gICAgfVxuXG4gICAgVGFibGUudmFsaWRhdGVUYWJsZU5hbWUocHJvcHMudGFibGVOYW1lKTtcblxuICAgIHRoaXMuX3Jlc291cmNlID0gbmV3IENmblRhYmxlKHRoaXMsIGlkLCB7XG4gICAgICB0YWJsZU5hbWU6IHByb3BzLnRhYmxlTmFtZSxcbiAgICAgIG9wZW5UYWJsZUZvcm1hdDogcHJvcHMub3BlblRhYmxlRm9ybWF0LFxuICAgICAgdGFibGVCdWNrZXRBcm46IHByb3BzLm5hbWVzcGFjZS50YWJsZUJ1Y2tldC50YWJsZUJ1Y2tldEFybixcbiAgICAgIG5hbWVzcGFjZTogcHJvcHMubmFtZXNwYWNlLm5hbWVzcGFjZU5hbWUsXG4gICAgICBjb21wYWN0aW9uOiBwcm9wcy5jb21wYWN0aW9uLFxuICAgICAgaWNlYmVyZ01ldGFkYXRhOiB0aGlzLmJ1aWxkSWNlYmVyZ01ldGFkYXRhKHByb3BzLmljZWJlcmdNZXRhZGF0YSksXG4gICAgICBzbmFwc2hvdE1hbmFnZW1lbnQ6IHByb3BzLnNuYXBzaG90TWFuYWdlbWVudCxcbiAgICAgIHdpdGhvdXRNZXRhZGF0YTogcHJvcHMud2l0aG91dE1ldGFkYXRhID8gJ1llcycgOiB1bmRlZmluZWQsXG4gICAgfSk7XG5cbiAgICB0aGlzLm5hbWVzcGFjZSA9IHByb3BzLm5hbWVzcGFjZTtcbiAgICB0aGlzLnRhYmxlTmFtZSA9IHByb3BzLnRhYmxlTmFtZTtcbiAgICB0aGlzLnRhYmxlQXJuID0gdGhpcy5fcmVzb3VyY2UuYXR0clRhYmxlQXJuO1xuICAgIHRoaXMuY2RrVGFnTWFuYWdlciA9IHRoaXMuX3Jlc291cmNlLmNka1RhZ01hbmFnZXI7XG4gICAgdGhpcy5fcmVzb3VyY2UuYXBwbHlSZW1vdmFsUG9saWN5KHByb3BzLnJlbW92YWxQb2xpY3kpO1xuICAgIHRoaXMubm9kZS5hZGREZXBlbmRlbmN5KHRoaXMubmFtZXNwYWNlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBCdWlsZHMgdGhlIENsb3VkRm9ybWF0aW9uIEljZWJlcmcgbWV0YWRhdGEgcHJvcGVydHkgZnJvbSB0aGUgQ0RLIG1ldGFkYXRhIG1vZGVsLlxuICAgKi9cbiAgcHJpdmF0ZSBidWlsZEljZWJlcmdNZXRhZGF0YShtZXRhZGF0YT86IEljZWJlcmdNZXRhZGF0YVByb3BlcnR5KTogQ2ZuVGFibGUuSWNlYmVyZ01ldGFkYXRhUHJvcGVydHkgfCB1bmRlZmluZWQge1xuICAgIGlmICghbWV0YWRhdGEpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGljZWJlcmdTY2hlbWE6IHRoaXMuYnVpbGRJY2ViZXJnU2NoZW1hKG1ldGFkYXRhLmljZWJlcmdTY2hlbWEpLFxuICAgICAgaWNlYmVyZ1BhcnRpdGlvblNwZWM6IG1ldGFkYXRhLmljZWJlcmdQYXJ0aXRpb25TcGVjXG4gICAgICAgID8gdGhpcy5idWlsZEljZWJlcmdQYXJ0aXRpb25TcGVjKG1ldGFkYXRhLmljZWJlcmdQYXJ0aXRpb25TcGVjKVxuICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgIGljZWJlcmdTb3J0T3JkZXI6IG1ldGFkYXRhLmljZWJlcmdTb3J0T3JkZXJcbiAgICAgICAgPyB0aGlzLmJ1aWxkSWNlYmVyZ1NvcnRPcmRlcihtZXRhZGF0YS5pY2ViZXJnU29ydE9yZGVyKVxuICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgIHRhYmxlUHJvcGVydGllczogbWV0YWRhdGEudGFibGVQcm9wZXJ0aWVzXG4gICAgICAgID8gdGhpcy5idWlsZFRhYmxlUHJvcGVydGllcyhtZXRhZGF0YS50YWJsZVByb3BlcnRpZXMpXG4gICAgICAgIDogdW5kZWZpbmVkLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogQnVpbGRzIHRoZSBDbG91ZEZvcm1hdGlvbiBJY2ViZXJnIHNjaGVtYSBwcm9wZXJ0eS5cbiAgICovXG4gIHByaXZhdGUgYnVpbGRJY2ViZXJnU2NoZW1hKHNjaGVtYTogSWNlYmVyZ1NjaGVtYVByb3BlcnR5KTogQ2ZuVGFibGUuSWNlYmVyZ1NjaGVtYVByb3BlcnR5IHtcbiAgICByZXR1cm4ge1xuICAgICAgc2NoZW1hRmllbGRMaXN0OiBzY2hlbWEuc2NoZW1hRmllbGRMaXN0Lm1hcChmaWVsZCA9PiAoe1xuICAgICAgICBuYW1lOiBmaWVsZC5uYW1lLFxuICAgICAgICB0eXBlOiBmaWVsZC50eXBlLFxuICAgICAgICAuLi4oZmllbGQucmVxdWlyZWQgIT09IHVuZGVmaW5lZCAmJiB7IHJlcXVpcmVkOiBmaWVsZC5yZXF1aXJlZCB9KSxcbiAgICAgICAgLi4uKGZpZWxkLmlkICE9PSB1bmRlZmluZWQgJiYgeyBpZDogZmllbGQuaWQgfSksXG4gICAgICB9KSksXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBCdWlsZHMgdGhlIENsb3VkRm9ybWF0aW9uIEljZWJlcmcgcGFydGl0aW9uIHNwZWNpZmljYXRpb24gcHJvcGVydHkuXG4gICAqL1xuICBwcml2YXRlIGJ1aWxkSWNlYmVyZ1BhcnRpdGlvblNwZWMoc3BlYzogSWNlYmVyZ1BhcnRpdGlvblNwZWMpOiBDZm5UYWJsZS5JY2ViZXJnUGFydGl0aW9uU3BlY1Byb3BlcnR5IHtcbiAgICByZXR1cm4ge1xuICAgICAgLi4uKHNwZWMuc3BlY0lkICE9PSB1bmRlZmluZWQgJiYgeyBzcGVjSWQ6IHNwZWMuc3BlY0lkIH0pLFxuICAgICAgZmllbGRzOiBzcGVjLmZpZWxkcy5tYXAoZmllbGQgPT4gKHtcbiAgICAgICAgc291cmNlSWQ6IGZpZWxkLnNvdXJjZUlkLFxuICAgICAgICB0cmFuc2Zvcm06IGZpZWxkLnRyYW5zZm9ybS52YWx1ZSxcbiAgICAgICAgbmFtZTogZmllbGQubmFtZSxcbiAgICAgICAgLi4uKGZpZWxkLmZpZWxkSWQgIT09IHVuZGVmaW5lZCAmJiB7IGZpZWxkSWQ6IGZpZWxkLmZpZWxkSWQgfSksXG4gICAgICB9KSksXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBCdWlsZHMgdGhlIENsb3VkRm9ybWF0aW9uIEljZWJlcmcgc29ydCBvcmRlciBwcm9wZXJ0eS5cbiAgICovXG4gIHByaXZhdGUgYnVpbGRJY2ViZXJnU29ydE9yZGVyKHNvcnRPcmRlcjogSWNlYmVyZ1NvcnRPcmRlcik6IENmblRhYmxlLkljZWJlcmdTb3J0T3JkZXJQcm9wZXJ0eSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLihzb3J0T3JkZXIub3JkZXJJZCAhPT0gdW5kZWZpbmVkICYmIHsgb3JkZXJJZDogc29ydE9yZGVyLm9yZGVySWQgfSksXG4gICAgICBmaWVsZHM6IHNvcnRPcmRlci5maWVsZHMubWFwKGZpZWxkID0+ICh7XG4gICAgICAgIHNvdXJjZUlkOiBmaWVsZC5zb3VyY2VJZCxcbiAgICAgICAgdHJhbnNmb3JtOiBmaWVsZC50cmFuc2Zvcm0udmFsdWUsXG4gICAgICAgIGRpcmVjdGlvbjogZmllbGQuZGlyZWN0aW9uLFxuICAgICAgICBudWxsT3JkZXI6IGZpZWxkLm51bGxPcmRlcixcbiAgICAgIH0pKSxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEJ1aWxkcyB0aGUgQ2xvdWRGb3JtYXRpb24gdGFibGUgcHJvcGVydGllcyBtYXAgZnJvbSBrZXktdmFsdWUgZW50cmllcy5cbiAgICovXG4gIHByaXZhdGUgYnVpbGRUYWJsZVByb3BlcnRpZXModGFibGVQcm9wZXJ0aWVzOiBUYWJsZVByb3BlcnR5RW50cnlbXSk6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4ge1xuICAgIGNvbnN0IGtleXMgPSB0YWJsZVByb3BlcnRpZXMubWFwKGVudHJ5ID0+IGVudHJ5LmtleSk7XG4gICAgY29uc3QgZHVwbGljYXRlS2V5cyA9IGtleXMuZmlsdGVyKChrZXksIGluZGV4KSA9PiBrZXlzLmluZGV4T2Yoa2V5KSAhPT0gaW5kZXgpO1xuICAgIGlmIChkdXBsaWNhdGVLZXlzLmxlbmd0aCA+IDApIHtcbiAgICAgIHRocm93IG5ldyBVbnNjb3BlZFZhbGlkYXRpb25FcnJvcihcbiAgICAgICAgbGl0YER1cGxpY2F0ZVRhYmxlUHJvcGVydHlLZXlgLFxuICAgICAgICBgRHVwbGljYXRlIHRhYmxlIHByb3BlcnR5IGtleXMgYXJlIG5vdCBhbGxvd2VkOiAke1suLi5uZXcgU2V0KGR1cGxpY2F0ZUtleXMpXS5qb2luKCcsICcpfWAsXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiB0YWJsZVByb3BlcnRpZXMucmVkdWNlKFxuICAgICAgKGFjYywgZW50cnkpID0+ICh7XG4gICAgICAgIC4uLmFjYyxcbiAgICAgICAgW2VudHJ5LmtleV06IGVudHJ5LnZhbHVlLFxuICAgICAgfSksXG4gICAgICB7fSBhcyBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+LFxuICAgICk7XG4gIH1cbn1cbiJdfQ==
|
|
486
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJ0YWJsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwyQkFBeUI7QUFDekIseURBQTJDO0FBQzNDLDJEQUFvRTtBQU9wRSwyQ0FJMEI7QUFDMUIsNEVBQTREO0FBQzVELDhFQUE4RTtBQUM5RSwwRUFBMEU7QUFHMUUscURBQXVDO0FBb0Z2Qzs7R0FFRztBQUNILE1BQWUsU0FBVSxTQUFRLGVBQVE7SUFrQmhDLG1CQUFtQixDQUN4QixTQUE4QjtRQUU5QixJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztZQUMvQyxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksNkJBQWMsQ0FBQyxJQUFJLEVBQUUsZUFBZSxFQUFFO2dCQUMzRCxRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVE7Z0JBQ3ZCLGNBQWMsRUFBRSxJQUFJLEdBQUcsQ0FBQyxjQUFjLENBQUMsRUFBRSxDQUFDO2FBQzNDLENBQUMsQ0FBQztRQUNMLENBQUM7UUFFRCxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNyQixJQUFJLENBQUMsV0FBVyxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDekQsT0FBTyxFQUFFLGNBQWMsRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3RFLENBQUM7UUFFRCxPQUFPLEVBQUUsY0FBYyxFQUFFLEtBQUssRUFBRSxDQUFDO0tBQ2xDO0lBRUQ7O09BRUc7SUFDSSxTQUFTLENBQUMsUUFBd0I7UUFDdkMsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUNmLFFBQVEsRUFDUixLQUFLLENBQUMsaUJBQWlCLEVBQ3ZCLElBQUksQ0FBQyxR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QUMsZUFBcUM7WUFDaEUsTUFBTSxJQUFJLEdBQUcsZUFBZSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNyRCxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxLQUFLLENBQUMsQ0FBQztZQUMvRSxJQUFJLGFBQWEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQzdCLE1BQU0sSUFBSSw4QkFBdUIsQ0FDL0IsSUFBQSxzQkFBRyxFQUFBLDJCQUEyQixFQUM5QixrREFBa0QsQ0FBQyxHQUFHLElBQUksR0FBRyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQzNGLENBQUM7WUFDSixDQUFDO1lBRUQsT0FBTyxlQUFlLENBQUMsTUFBTSxDQUMzQixDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7Z0JBQ2YsR0FBRyxHQUFHO2dCQUNOLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEtBQUssQ0FBQyxLQUFLO2FBQ3pCLENBQUMsRUFDRixFQUE0QixDQUM3QixDQUFDO1NBQ0g7O1lBdlBVLHVEQUFLOzs7OztBQUFMLHNCQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRU9MIH0gZnJvbSAnb3MnO1xuaW1wb3J0ICogYXMgaWFtIGZyb20gJ2F3cy1jZGstbGliL2F3cy1pYW0nO1xuaW1wb3J0IHsgQ2ZuVGFibGUsIENmblRhYmxlUG9saWN5IH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLXMzdGFibGVzJztcbmltcG9ydCB0eXBlIHtcbiAgSVJlc291cmNlLFxuICBJVGFnZ2FibGVWMixcbiAgUmVtb3ZhbFBvbGljeSxcbiAgVGFnTWFuYWdlcixcbn0gZnJvbSAnYXdzLWNkay1saWIvY29yZSc7XG5pbXBvcnQge1xuICBSZXNvdXJjZSxcbiAgVW5zY29wZWRWYWxpZGF0aW9uRXJyb3IsXG4gIFRva2VuLFxufSBmcm9tICdhd3MtY2RrLWxpYi9jb3JlJztcbmltcG9ydCB7IGxpdCB9IGZyb20gJ2F3cy1jZGstbGliL2NvcmUvbGliL2hlbHBlcnMtaW50ZXJuYWwnO1xuaW1wb3J0IHsgYWRkQ29uc3RydWN0TWV0YWRhdGEgfSBmcm9tICdhd3MtY2RrLWxpYi9jb3JlL2xpYi9tZXRhZGF0YS1yZXNvdXJjZSc7XG5pbXBvcnQgeyBwcm9wZXJ0eUluamVjdGFibGUgfSBmcm9tICdhd3MtY2RrLWxpYi9jb3JlL2xpYi9wcm9wLWluamVjdGFibGUnO1xuaW1wb3J0IHR5cGUgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCB0eXBlIHsgSU5hbWVzcGFjZSB9IGZyb20gJy4vbmFtZXNwYWNlJztcbmltcG9ydCAqIGFzIHBlcm1zIGZyb20gJy4vcGVybWlzc2lvbnMnO1xuaW1wb3J0IHR5cGUgeyBTdG9yYWdlQ2xhc3MgfSBmcm9tICcuL3RhYmxlLWJ1Y2tldCc7XG5cbi8qKlxuICogUmVwcmVzZW50cyBhbiBTMyBUYWJsZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJVGFibGUgZXh0ZW5kcyBJUmVzb3VyY2Uge1xuICAvKipcbiAgICogVGhlIEFSTiBvZiB0aGlzIHRhYmxlLlxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICByZWFkb25seSB0YWJsZUFybjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGlzIHRhYmxlLlxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICByZWFkb25seSB0YWJsZU5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGFjY291bnRJZCBjb250YWluaW5nIHRoaXMgdGFibGUuXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHJlYWRvbmx5IGFjY291bnQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSByZWdpb24gY29udGFpbmluZyB0aGlzIHRhYmxlLlxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICByZWFkb25seSByZWdpb24/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEFkZHMgYSBzdGF0ZW1lbnQgdG8gdGhlIHJlc291cmNlIHBvbGljeSBmb3IgYSBwcmluY2lwYWwgKGkuZS5cbiAgICogYWNjb3VudC9yb2xlL3NlcnZpY2UpIHRvIHBlcmZvcm0gYWN0aW9ucyBvbiB0aGlzIHRhYmxlLlxuICAgKlxuICAgKiBOb3RlIHRoYXQgdGhlIHBvbGljeSBzdGF0ZW1lbnQgbWF5IG9yIG1heSBub3QgYmUgYWRkZWQgdG8gdGhlIHBvbGljeS5cbiAgICogRm9yIGV4YW1wbGUsIHdoZW4gYW4gYElUYWJsZWAgaXMgY3JlYXRlZCBmcm9tIGFuIGV4aXN0aW5nIHRhYmxlLFxuICAgKiBpdCdzIG5vdCBwb3NzaWJsZSB0byB0ZWxsIHdoZXRoZXIgdGhlIHRhYmxlIGFscmVhZHkgaGFzIGEgcG9saWN5XG4gICAqIGF0dGFjaGVkLCBsZXQgYWxvbmUgdG8gcmUtdXNlIHRoYXQgcG9saWN5IHRvIGFkZCBtb3JlIHN0YXRlbWVudHMgdG8gaXQuXG4gICAqIFNvIGl0J3Mgc2FmZXN0IHRvIGRvIG5vdGhpbmcgaW4gdGhlc2UgY2FzZXMuXG4gICAqXG4gICAqIEBwYXJhbSBzdGF0ZW1lbnQgdGhlIHBvbGljeSBzdGF0ZW1lbnQgdG8gYmUgYWRkZWQgdG8gdGhlIHRhYmxlJ3NcbiAgICogcG9saWN5LlxuICAgKiBAcmV0dXJucyBtZXRhZGF0YSBhYm91dCB0aGUgZXhlY3V0aW9uIG9mIHRoaXMgbWV0aG9kLiBJZiB0aGUgcG9saWN5XG4gICAqIHdhcyBub3QgYWRkZWQsIHRoZSB2YWx1ZSBvZiBgc3RhdGVtZW50QWRkZWRgIHdpbGwgYmUgYGZhbHNlYC4gWW91XG4gICAqIHNob3VsZCBhbHdheXMgY2hlY2sgdGhpcyB2YWx1ZSB0byBtYWtlIHN1cmUgdGhhdCB0aGUgb3BlcmF0aW9uIHdhc1xuICAgKiBhY3R1YWxseSBjYXJyaWVkIG91dC4gT3RoZXJ3aXNlLCBzeW50aGVzaXMgYW5kIGRlcGxveSB3aWxsIHRlcm1pbmF0ZVxuICAgKiBzaWxlbnRseSwgd2hpY2ggbWF5IGJlIGNvbmZ1c2luZy5cbiAgICovXG4gIGFkZFRvUmVzb3VyY2VQb2xpY3koc3RhdGVtZW50OiBpYW0uUG9saWN5U3RhdGVtZW50KTogaWFtLkFkZFRvUmVzb3VyY2VQb2xpY3lSZXN1bHQ7XG5cbiAgLyoqXG4gICAqIEdyYW50IHJlYWQgcGVybWlzc2lvbnMgZm9yIHRoaXMgdGFibGUgdG8gYW4gSUFNIHByaW5jaXBhbCAoUm9sZS9Hcm91cC9Vc2VyKS5cbiAgICpcbiAgICogSWYgdGhlIHBhcmVudCBUYWJsZUJ1Y2tldCBvZiB0aGlzIHRhYmxlIGhhcyBlbmNyeXB0aW9uLFxuICAgKiB5b3Ugc2hvdWxkIGdyYW50IGttczpEZWNyeXB0IHBlcm1pc3Npb24gdG8gdXNlIHRoaXMga2V5IHRvIHRoZSBzYW1lIHByaW5jaXBhbC5cbiAgICpcbiAgICogQHBhcmFtIGlkZW50aXR5IFRoZSBwcmluY2lwYWwgdG8gYWxsb3cgcmVhZCBwZXJtaXNzaW9ucyB0b1xuICAgKi9cbiAgZ3JhbnRSZWFkKGlkZW50aXR5OiBpYW0uSUdyYW50YWJsZSk6IGlhbS5HcmFudDtcblxuICAvKipcbiAgICogR3JhbnQgd3JpdGUgcGVybWlzc2lvbnMgZm9yIHRoaXMgdGFibGUgdG8gYW4gSUFNIHByaW5jaXBhbCAoUm9sZS9Hcm91cC9Vc2VyKS5cbiAgICpcbiAgICogSWYgdGhlIHBhcmVudCBUYWJsZUJ1Y2tldCBvZiB0aGlzIHRhYmxlIGhhcyBlbmNyeXB0aW9uLFxuICAgKiB5b3Ugc2hvdWxkIGdyYW50IGttczpHZW5lcmF0ZURhdGFLZXkgYW5kIGttczpEZWNyeXB0IHBlcm1pc3Npb25cbiAgICogdG8gdXNlIHRoaXMga2V5IHRvIHRoZSBzYW1lIHByaW5jaXBhbC5cbiAgICpcbiAgICogQHBhcmFtIGlkZW50aXR5IFRoZSBwcmluY2lwYWwgdG8gYWxsb3cgd3JpdGUgcGVybWlzc2lvbnMgdG9cbiAgICovXG4gIGdyYW50V3JpdGUoaWRlbnRpdHk6IGlhbS5JR3JhbnRhYmxlKTogaWFtLkdyYW50O1xuXG4gIC8qKlxuICAgKiBHcmFudCByZWFkIGFuZCB3cml0ZSBwZXJtaXNzaW9ucyBmb3IgdGhpcyB0YWJsZSB0byBhbiBJQU0gcHJpbmNpcGFsIChSb2xlL0dyb3VwL1VzZXIpLlxuICAgKlxuICAgKiBJZiB0aGUgcGFyZW50IFRhYmxlQnVja2V0IG9mIHRoaXMgdGFibGUgaGFzIGVuY3J5cHRpb24sXG4gICAqIHlvdSBzaG91bGQgZ3JhbnQga21zOkdlbmVyYXRlRGF0YUtleSBhbmQga21zOkRlY3J5cHQgcGVybWlzc2lvblxuICAgKiB0byB1c2UgdGhpcyBrZXkgdG8gdGhlIHNhbWUgcHJpbmNpcGFsLlxuICAgKlxuICAgKiBAcGFyYW0gaWRlbnRpdHkgVGhlIHByaW5jaXBhbCB0byBhbGxvdyByZWFkIGFuZCB3cml0ZSBwZXJtaXNzaW9ucyB0b1xuICAgKi9cbiAgZ3JhbnRSZWFkV3JpdGUoaWRlbnRpdHk6IGlhbS5JR3JhbnRhYmxlKTogaWFtLkdyYW50O1xufVxuXG4vKipcbiAqIEJhc2UgY2xhc3MgZm9yIFRhYmxlIGltcGxlbWVudGF0aW9ucy5cbiAqL1xuYWJzdHJhY3QgY2xhc3MgVGFibGVCYXNlIGV4dGVuZHMgUmVzb3VyY2UgaW1wbGVtZW50cyBJVGFibGUge1xuICBwdWJsaWMgYWJzdHJhY3QgcmVhZG9ubHkgdGFibGVOYW1lOiBzdHJpbmc7XG4gIHB1YmxpYyBhYnN0cmFjdCByZWFkb25seSB0YWJsZUFybjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgcmVzb3VyY2UgcG9saWN5IGFzc29jaWF0ZWQgd2l0aCB0aGlzIHRhYmxlLlxuICAgKlxuICAgKiBJZiBgYXV0b0NyZWF0ZVBvbGljeWAgaXMgdHJ1ZSwgYSBgVGFibGVQb2xpY3lgIHdpbGwgYmUgY3JlYXRlZCB1cG9uIHRoZVxuICAgKiBmaXJzdCBjYWxsIHRvIGFkZFRvUmVzb3VyY2VQb2xpY3kocykuXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgdGFibGVQb2xpY3k/OiBDZm5UYWJsZVBvbGljeTtcblxuICAvKipcbiAgICogSW5kaWNhdGVzIGlmIGEgdGFibGUgcmVzb3VyY2UgcG9saWN5IHNob3VsZCBhdXRvbWF0aWNhbGx5IGNyZWF0ZWQgdXBvblxuICAgKiB0aGUgZmlyc3QgY2FsbCB0byBgYWRkVG9SZXNvdXJjZVBvbGljeWAuXG4gICAqL1xuICBwcm90ZWN0ZWQgYWJzdHJhY3QgYXV0b0NyZWF0ZVBvbGljeTogYm9vbGVhbjtcblxuICBwdWJsaWMgYWRkVG9SZXNvdXJjZVBvbGljeShcbiAgICBzdGF0ZW1lbnQ6IGlhbS5Qb2xpY3lTdGF0ZW1lbnQsXG4gICk6IGlhbS5BZGRUb1Jlc291cmNlUG9saWN5UmVzdWx0IHtcbiAgICBpZiAoIXRoaXMudGFibGVQb2xpY3kgJiYgdGhpcy5hdXRvQ3JlYXRlUG9saWN5KSB7XG4gICAgICB0aGlzLnRhYmxlUG9saWN5ID0gbmV3IENmblRhYmxlUG9saWN5KHRoaXMsICdEZWZhdWx0UG9saWN5Jywge1xuICAgICAgICB0YWJsZUFybjogdGhpcy50YWJsZUFybixcbiAgICAgICAgcmVzb3VyY2VQb2xpY3k6IG5ldyBpYW0uUG9saWN5RG9jdW1lbnQoe30pLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMudGFibGVQb2xpY3kpIHtcbiAgICAgIHRoaXMudGFibGVQb2xpY3kucmVzb3VyY2VQb2xpY3kuYWRkU3RhdGVtZW50cyhzdGF0ZW1lbnQpO1xuICAgICAgcmV0dXJuIHsgc3RhdGVtZW50QWRkZWQ6IHRydWUsIHBvbGljeURlcGVuZGFibGU6IHRoaXMudGFibGVQb2xpY3kgfTtcbiAgICB9XG5cbiAgICByZXR1cm4geyBzdGF0ZW1lbnRBZGRlZDogZmFsc2UgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBbZGlzYWJsZS1hd3NsaW50Om5vLWdyYW50c11cbiAgICovXG4gIHB1YmxpYyBncmFudFJlYWQoaWRlbnRpdHk6IGlhbS5JR3JhbnRhYmxlKSB7XG4gICAgcmV0dXJuIHRoaXMuZ3JhbnQoXG4gICAgICBpZGVudGl0eSxcbiAgICAgIHBlcm1zLlRBQkxFX1JFQURfQUNDRVNTLFxuICAgICAgdGhpcy50YWJsZUFybixcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFtkaXNhYmxlLWF3c2xpbnQ6bm8tZ3JhbnRzXVxuICAgKi9cbiAgcHVibGljIGdyYW50V3JpdGUoaWRlbnRpdHk6IGlhbS5JR3JhbnRhYmxlKSB7XG4gICAgcmV0dXJuIHRoaXMuZ3JhbnQoXG4gICAgICBpZGVudGl0eSxcbiAgICAgIHBlcm1zLlRBQkxFX1dSSVRFX0FDQ0VTUyxcbiAgICAgIHRoaXMudGFibGVBcm4sXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBbZGlzYWJsZS1hd3NsaW50Om5vLWdyYW50c11cbiAgICovXG4gIHB1YmxpYyBncmFudFJlYWRXcml0ZShpZGVudGl0eTogaWFtLklHcmFudGFibGUpIHtcbiAgICByZXR1cm4gdGhpcy5ncmFudChcbiAgICAgIGlkZW50aXR5LFxuICAgICAgcGVybXMuVEFCTEVfUkVBRF9XUklURV9BQ0NFU1MsXG4gICAgICB0aGlzLnRhYmxlQXJuLFxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnRzIHRoZSBnaXZlbiBzM3RhYmxlcyBwZXJtaXNzaW9ucyB0byB0aGUgcHJvdmlkZWQgcHJpbmNpcGFsXG4gICAqIEByZXR1cm5zIEdyYW50IG9iamVjdFxuICAgKi9cbiAgcHJpdmF0ZSBncmFudChcbiAgICBncmFudGVlOiBpYW0uSUdyYW50YWJsZSxcbiAgICB0YWJsZUFjdGlvbnM6IHN0cmluZ1tdLFxuICAgIHJlc291cmNlQXJuOiBzdHJpbmcsXG4gICAgLi4ub3RoZXJSZXNvdXJjZUFybnM6IChzdHJpbmcgfCB1bmRlZmluZWQpW10pIHtcbiAgICBjb25zdCByZXNvdXJjZXMgPSBbcmVzb3VyY2VBcm4sIC4uLm90aGVyUmVzb3VyY2VBcm5zXS5maWx0ZXIoYXJuID0+IGFybiAhPSB1bmRlZmluZWQpO1xuXG4gICAgY29uc3QgZ3JhbnQgPSBpYW0uR3JhbnQuYWRkVG9QcmluY2lwYWxPclJlc291cmNlKHtcbiAgICAgIGdyYW50ZWUsXG4gICAgICBhY3Rpb25zOiB0YWJsZUFjdGlvbnMsXG4gICAgICByZXNvdXJjZUFybnM6IHJlc291cmNlcyxcbiAgICAgIHJlc291cmNlOiB0aGlzLFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGdyYW50O1xuICB9XG59XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgY3JlYXRpbmcgYSBuZXcgUzMgVGFibGUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVGFibGVQcm9wcyB7XG4gIC8qKlxuICAgKiBOYW1lIG9mIHRoaXMgdGFibGUsIHVuaXF1ZSB3aXRoaW4gdGhlIG5hbWVzcGFjZVxuICAgKi9cbiAgcmVhZG9ubHkgdGFibGVOYW1lOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgbmFtZXNwYWNlIHVuZGVyIHdoaWNoIHRoaXMgdGFibGUgaXMgY3JlYXRlZFxuICAgKi9cbiAgcmVhZG9ubHkgbmFtZXNwYWNlOiBJTmFtZXNwYWNlO1xuICAvKipcbiAgICogRm9ybWF0IG9mIHRoaXMgdGFibGUuIEN1cnJlbnRseSwgdGhlIG9ubHkgc3VwcG9ydGVkIHZhbHVlIGlzIE9wZW5UYWJsZUZvcm1hdC5JQ0VCRVJHLlxuICAgKi9cbiAgcmVhZG9ubHkgb3BlblRhYmxlRm9ybWF0OiBPcGVuVGFibGVGb3JtYXQ7XG4gIC8qKlxuICAgKiBTZXR0aW5ncyBnb3Zlcm5pbmcgdGhlIENvbXBhY3Rpb24gbWFpbnRlbmFuY2UgYWN0aW9uLlxuICAgKiBAZGVmYXVsdCBBbWF6b24gUzMgc2VsZWN0cyB0aGUgYmVzdCBjb21wYWN0aW9uIHN0cmF0ZWd5IGJhc2VkIG9uIHlvdXIgdGFibGUgc29ydCBvcmRlci5cbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUzMvbGF0ZXN0L3VzZXJndWlkZS9zMy10YWJsZXMtbWFpbnRlbmFuY2UuaHRtbFxuICAgKi9cbiAgcmVhZG9ubHkgY29tcGFjdGlvbj86IENvbXBhY3Rpb25Qcm9wZXJ0eTtcbiAgLyoqXG4gICAqIENvbnRhaW5zIGRldGFpbHMgYWJvdXQgdGhlIG1ldGFkYXRhIGZvciBhbiBJY2ViZXJnIHRhYmxlLlxuICAgKiBAZGVmYXVsdCB0YWJsZSBpcyBjcmVhdGVkIHdpdGhvdXQgYW55IG1ldGFkYXRhXG4gICAqL1xuICByZWFkb25seSBpY2ViZXJnTWV0YWRhdGE/OiBJY2ViZXJnTWV0YWRhdGFQcm9wZXJ0eTtcbiAgLyoqXG4gICAqIENvbnRhaW5zIGRldGFpbHMgYWJvdXQgdGhlIHNuYXBzaG90IG1hbmFnZW1lbnQgc2V0dGluZ3MgZm9yIGFuIEljZWJlcmcgdGFibGUuXG4gICAqIEBkZWZhdWx0IGVuYWJsZWQ6IE1pbmltdW1TbmFwc2hvdHMgaXMgMSBieSBkZWZhdWx0IGFuZCBNYXhpbXVtU25hcHNob3RBZ2UgaXMgMTIwIGhvdXJzIGJ5IGRlZmF1bHQuXG4gICAqL1xuICByZWFkb25seSBzbmFwc2hvdE1hbmFnZW1lbnQ/OiBTbmFwc2hvdE1hbmFnZW1lbnRQcm9wZXJ0eTtcbiAgLyoqXG4gICAqIENvbnRyb2xzIHdoYXQgaGFwcGVucyB0byB0aGlzIHRhYmxlIGl0IGl0IHN0b3BlZCBiZWluZyBtYW5hZ2VkIGJ5IGNsb3VkZm9ybWF0aW9uLlxuICAgKlxuICAgKiBAZGVmYXVsdCBSRVRBSU5cbiAgICovXG4gIHJlYWRvbmx5IHJlbW92YWxQb2xpY3k/OiBSZW1vdmFsUG9saWN5O1xuICAvKipcbiAgICogSWYgdHJ1ZSwgaW5kaWNhdGVzIHRoYXQgeW91IGRvbid0IHdhbnQgdG8gc3BlY2lmeSBhIHNjaGVtYSBmb3IgdGhlIHRhYmxlLlxuICAgKlxuICAgKiBUaGlzIHByb3BlcnR5IGlzIG11dHVhbGx5IGV4Y2x1c2l2ZSB0byAnSWNlYmVyZ01ldGFkYXRhJy5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IHdpdGhvdXRNZXRhZGF0YT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBzdG9yYWdlIGNsYXNzIGZvciB0aGUgdGFibGUuXG4gICAqXG4gICAqIERldGVybWluZXMgdGhlIHN0b3JhZ2UgdGllciB1c2VkIGZvciB0YWJsZSBkYXRhLCBhbGxvd2luZyBvcHRpbWl6YXRpb25cbiAgICogZm9yIGRpZmZlcmVudCBhY2Nlc3MgcGF0dGVybnMgYW5kIGNvc3QgcHJvZmlsZXMuXG4gICAqXG4gICAqIE5vdGU6IFRoaXMgaXMgYSBjcmVhdGUtb25seSBwcm9wZXJ0eSBhbmQgY2Fubm90IGJlIGNoYW5nZWQgYWZ0ZXIgdGhlIHRhYmxlIGlzIGNyZWF0ZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gSW5oZXJpdHMgZnJvbSB0aGUgdGFibGUgYnVja2V0J3Mgc3RvcmFnZSBjbGFzcyBjb25maWd1cmF0aW9uXG4gICAqL1xuICByZWFkb25seSBzdG9yYWdlQ2xhc3M/OiBTdG9yYWdlQ2xhc3M7XG59XG5cbi8qKlxuICogU3VwcG9ydGVkIG9wZW4gdGFibGUgZm9ybWF0cy5cbiAqL1xuZXhwb3J0IGVudW0gT3BlblRhYmxlRm9ybWF0IHtcbiAgLyoqXG4gICAqIEFwYWNoZSBJY2ViZXJnIHRhYmxlIGZvcm1hdC5cbiAgICovXG4gIElDRUJFUkcgPSAnSUNFQkVSRycsXG59XG5cbi8qKlxuICogU2V0dGluZ3MgZ292ZXJuaW5nIHRoZSBDb21wYWN0aW9uIG1haW50ZW5hbmNlIGFjdGlvbi5cbiAqXG4gKiBAZGVmYXVsdCAtIE5vIGNvbXBhY3Rpb24gc2V0dGluZ3NcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb21wYWN0aW9uUHJvcGVydHkge1xuICAvKipcbiAgICogU3RhdHVzIG9mIHRoZSBjb21wYWN0aW9uIG1haW50ZW5hbmNlIGFjdGlvbi5cbiAgICovXG4gIHJlYWRvbmx5IHN0YXR1czogU3RhdHVzO1xuICAvKipcbiAgICogVGFyZ2V0IGZpbGUgc2l6ZSBpbiBtZWdhYnl0ZXMgZm9yIGNvbXBhY3Rpb24uXG4gICAqL1xuICByZWFkb25seSB0YXJnZXRGaWxlU2l6ZU1iOiBudW1iZXI7XG59XG5cbi8qKlxuICogU3RhdHVzIHZhbHVlcyBmb3IgbWFpbnRlbmFuY2UgYWN0aW9ucy5cbiAqL1xuZXhwb3J0IGVudW0gU3RhdHVzIHtcbiAgLyoqXG4gICAqIEVuYWJsZSB0aGUgbWFpbnRlbmFuY2UgYWN0aW9uLlxuICAgKi9cbiAgRU5BQkxFRCA9ICdlbmFibGVkJyxcbiAgLyoqXG4gICAqIERpc2FibGUgdGhlIG1haW50ZW5hbmNlIGFjdGlvbi5cbiAgICovXG4gIERJU0FCTEVEID0gJ2Rpc2FibGVkJyxcbn1cblxuLyoqXG4gKiBJY2ViZXJnIHRyYW5zZm9ybSB2YWx1ZXMgZm9yIHBhcnRpdGlvbiBhbmQgc29ydCBmaWVsZHMuXG4gKi9cbmV4cG9ydCBjbGFzcyBJY2ViZXJnVHJhbnNmb3JtIHtcbiAgLyoqXG4gICAqIFVzZSB0aGUgY29sdW1uIHZhbHVlIGFzIHRoZSB0cmFuc2Zvcm0gdmFsdWUgd2l0aG91dCB0cmFuc2Zvcm1hdGlvbi5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgSURFTlRJVFkgPSBuZXcgSWNlYmVyZ1RyYW5zZm9ybSgnaWRlbnRpdHknKTtcblxuICAvKipcbiAgICogVHJhbnNmb3JtIGEgdGltZXN0YW1wL2RhdGUgZmllbGQgdG8geWVhci5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgWUVBUiA9IG5ldyBJY2ViZXJnVHJhbnNmb3JtKCd5ZWFyJyk7XG5cbiAgLyoqXG4gICAqIFRyYW5zZm9ybSBhIHRpbWVzdGFtcC9kYXRlIGZpZWxkIHRvIG1vbnRoLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBNT05USCA9IG5ldyBJY2ViZXJnVHJhbnNmb3JtKCdtb250aCcpO1xuXG4gIC8qKlxuICAgKiBUcmFuc2Zvcm0gYSB0aW1lc3RhbXAvZGF0ZSBmaWVsZCB0byBkYXkuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IERBWSA9IG5ldyBJY2ViZXJnVHJhbnNmb3JtKCdkYXknKTtcblxuICAvKipcbiAgICogVHJhbnNmb3JtIGEgdGltZXN0YW1wIGZpZWxkIHRvIGhvdXIuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IEhPVVIgPSBuZXcgSWNlYmVyZ1RyYW5zZm9ybSgnaG91cicpO1xuXG4gIC8qKlxuICAgKiBUcmFuc2Zvcm0gdmFsdWVzIGludG8gYSBmaXhlZCBudW1iZXIgb2YgYnVja2V0cy5cbiAgICpcbiAgICogQHBhcmFtIG4gVGhlIG51bWJlciBvZiBidWNrZXRzIChtdXN0IGJlIGEgcG9zaXRpdmUgaW50ZWdlcilcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgYnVja2V0KG46IG51bWJlcik6IEljZWJlcmdUcmFuc2Zvcm0ge1xuICAgIGlmIChuIDw9IDAgfHwgIU51bWJlci5pc0ludGVnZXIobikpIHtcbiAgICAgIHRocm93IG5ldyBVbnNjb3BlZFZhbGlkYXRpb25FcnJvcihcbiAgICAgICAgbGl0YEludmFsaWRCdWNrZXRDb3VudGAsXG4gICAgICAgICdCdWNrZXQgY291bnQgbXVzdCBiZSBhIHBvc2l0aXZlIGludGVnZXIuJyxcbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiBuZXcgSWNlYmVyZ1RyYW5zZm9ybShgYnVja2V0WyR7bn1dYCk7XG4gIH1cblxuICAvKipcbiAgICogVHJ1bmNhdGUgdmFsdWVzIHRvIGEgZml4ZWQgd2lkdGguXG4gICAqXG4gICAqIEBwYXJhbSB3aWR0aCBUaGUgdHJ1bmNhdGlvbiB3aWR0aCAobXVzdCBiZSBhIHBvc2l0aXZlIGludGVnZXIpXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHRydW5jYXRlKHdpZHRoOiBudW1iZXIpOiBJY2ViZXJnVHJhbnNmb3JtIHtcbiAgICBpZiAod2lkdGggPD0gMCB8fCAhTnVtYmVyLmlzSW50ZWdlcih3aWR0aCkpIHtcbiAgICAgIHRocm93IG5ldyBVbnNjb3BlZFZhbGlkYXRpb25FcnJvcihcbiAgICAgICAgbGl0YEludmFsaWRUcnVuY2F0ZVdpZHRoYCxcbiAgICAgICAgJ1RydW5jYXRlIHdpZHRoIG11c3QgYmUgYSBwb3NpdGl2ZSBpbnRlZ2VyLicsXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gbmV3IEljZWJlcmdUcmFuc2Zvcm0oYHRydW5jYXRlWyR7d2lkdGh9XWApO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIGN1c3RvbSB0cmFuc2Zvcm0gZnJvbSBhIHN0cmluZyB2YWx1ZS5cbiAgICpcbiAgICogQHBhcmFtIHZhbHVlIFRoZSB0cmFuc2Zvcm0gc3RyaW5nIHZhbHVlXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIG9mKHZhbHVlOiBzdHJpbmcpOiBJY2ViZXJnVHJhbnNmb3JtIHtcbiAgICByZXR1cm4gbmV3IEljZWJlcmdUcmFuc2Zvcm0odmFsdWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBzdHJpbmcgdmFsdWUgb2YgdGhlIHRyYW5zZm9ybS5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSB2YWx1ZTogc3RyaW5nO1xuXG4gIHByaXZhdGUgY29uc3RydWN0b3IodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhlIHRyYW5zZm9ybS5cbiAgICovXG4gIHB1YmxpYyB0b1N0cmluZygpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnZhbHVlO1xuICB9XG59XG5cbi8qKlxuICogU29ydCBkaXJlY3Rpb24gdmFsdWVzIGZvciBJY2ViZXJnIHNvcnQgZmllbGRzLlxuICovXG5leHBvcnQgZW51bSBTb3J0RGlyZWN0aW9uIHtcbiAgLyoqXG4gICAqIFNvcnQgdmFsdWVzIGluIGFzY2VuZGluZyBvcmRlci5cbiAgICovXG4gIEFTQyA9ICdhc2MnLFxuICAvKipcbiAgICogU29ydCB2YWx1ZXMgaW4gZGVzY2VuZGluZyBvcmRlci5cbiAgICovXG4gIERFU0MgPSAnZGVzYycsXG59XG5cbi8qKlxuICogTnVsbCBvcmRlcmluZyB2YWx1ZXMgZm9yIEljZWJlcmcgc29ydCBmaWVsZHMuXG4gKi9cbmV4cG9ydCBlbnVtIE51bGxPcmRlciB7XG4gIC8qKlxuICAgKiBQbGFjZSBudWxsIHZhbHVlcyBiZWZvcmUgbm9uLW51bGwgdmFsdWVzLlxuICAgKi9cbiAgTlVMTFNfRklSU1QgPSAnbnVsbHMtZmlyc3QnLFxuICAvKipcbiAgICogUGxhY2UgbnVsbCB2YWx1ZXMgYWZ0ZXIgbm9uLW51bGwgdmFsdWVzLlxuICAgKi9cbiAgTlVMTFNfTEFTVCA9ICdudWxscy1sYXN0Jyxcbn1cblxuLyoqXG4gKiBQYXJ0aXRpb24gZmllbGQgZGVmaW5pdGlvbiBmb3IgSWNlYmVyZyB0YWJsZS5cbiAqXG4gKiBEZWZpbmVzIGEgc2luZ2xlIHBhcnRpdGlvbiBjb2x1bW4uIE11bHRpcGxlIHBhcnRpdGlvbiBmaWVsZHMgY2FuIGJlIGNvbWJpbmVkXG4gKiBpbiBhbiBJY2ViZXJnUGFydGl0aW9uU3BlYyB0byBjcmVhdGUgbXVsdGktbGV2ZWwgcGFydGl0aW9uaW5nLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEljZWJlcmdQYXJ0aXRpb25GaWVsZCB7XG4gIC8qKlxuICAgKiBUaGUgc291cmNlIGZpZWxkIElEIGZyb20gdGhlIHNjaGVtYS5cbiAgICovXG4gIHJlYWRvbmx5IHNvdXJjZUlkOiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFRoZSBwYXJ0aXRpb24gdHJhbnNmb3JtIGZ1bmN0aW9uLlxuICAgKlxuICAgKiBVc2UgYEljZWJlcmdUcmFuc2Zvcm1gIHN0YXRpYyBwcm9wZXJ0aWVzIGZvciBjb21tb24gdHJhbnNmb3JtcyAoZS5nLiwgYEljZWJlcmdUcmFuc2Zvcm0uSURFTlRJVFlgKVxuICAgKiBvciBtZXRob2RzIGZvciBwYXJhbWV0ZXJpemVkIHRyYW5zZm9ybXMgKGUuZy4sIGBJY2ViZXJnVHJhbnNmb3JtLmJ1Y2tldCgxNilgKS5cbiAgICovXG4gIHJlYWRvbmx5IHRyYW5zZm9ybTogSWNlYmVyZ1RyYW5zZm9ybTtcbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBwYXJ0aXRpb24gZmllbGQuXG4gICAqL1xuICByZWFkb25seSBuYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSB1bmlxdWUgaWRlbnRpZmllciBmb3IgdGhlIHBhcnRpdGlvbiBmaWVsZC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBBdXRvLWFzc2lnbmVkIHN0YXJ0aW5nIGZyb20gMTAwMFxuICAgKi9cbiAgcmVhZG9ubHkgZmllbGRJZD86IG51bWJlcjtcbn1cblxuLyoqXG4gKiBQYXJ0aXRpb24gc3BlY2lmaWNhdGlvbiBmb3IgSWNlYmVyZyB0YWJsZS5cbiAqXG4gKiBDb250YWlucyB0aGUgY29tcGxldGUgcGFydGl0aW9uaW5nIGNvbmZpZ3VyYXRpb24gZm9yIGEgdGFibGUsIGluY2x1ZGluZyBhbGwgcGFydGl0aW9uIGZpZWxkcy5cbiAqIFVzZSB0aGlzIHRvIGRlZmluZSBtdWx0aS1sZXZlbCBwYXJ0aXRpb25pbmcgKGUuZy4sIHBhcnRpdGlvbiBieSBkYXRlLCB0aGVuIGJ5IHJlZ2lvbikuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSWNlYmVyZ1BhcnRpdGlvblNwZWMge1xuICAvKipcbiAgICogVGhlIGxpc3Qgb2YgcGFydGl0aW9uIGZpZWxkcy5cbiAgICovXG4gIHJlYWRvbmx5IGZpZWxkczogSWNlYmVyZ1BhcnRpdGlvbkZpZWxkW107XG5cbiAgLyoqXG4gICAqIFRoZSB1bmlxdWUgaWRlbnRpZmllciBmb3IgdGhlIHBhcnRpdGlvbiBzcGVjaWZpY2F0aW9uLlxuICAgKlxuICAgKiBAZGVmYXVsdCAwXG4gICAqL1xuICByZWFkb25seSBzcGVjSWQ/OiBudW1iZXI7XG59XG5cbi8qKlxuICogU29ydCBmaWVsZCBkZWZpbml0aW9uIGZvciBJY2ViZXJnIHRhYmxlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEljZWJlcmdTb3J0RmllbGQge1xuICAvKipcbiAgICogVGhlIHNvdXJjZSBmaWVsZCBJRCBmcm9tIHRoZSBzY2hlbWEuXG4gICAqL1xuICByZWFkb25seSBzb3VyY2VJZDogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBUaGUgc29ydCB0cmFuc2Zvcm0gZnVuY3Rpb24uXG4gICAqXG4gICAqIFVzZSBgSWNlYmVyZ1RyYW5zZm9ybWAgc3RhdGljIHByb3BlcnRpZXMgZm9yIGNvbW1vbiB0cmFuc2Zvcm1zIChlLmcuLCBgSWNlYmVyZ1RyYW5zZm9ybS5JREVOVElUWWApXG4gICAqIG9yIG1ldGhvZHMgZm9yIHBhcmFtZXRlcml6ZWQgdHJhbnNmb3JtcyAoZS5nLiwgYEljZWJlcmdUcmFuc2Zvcm0uYnVja2V0KDE2KWApLlxuICAgKi9cbiAgcmVhZG9ubHkgdHJhbnNmb3JtOiBJY2ViZXJnVHJhbnNmb3JtO1xuXG4gIC8qKlxuICAgKiBUaGUgc29ydCBkaXJlY3Rpb24uXG4gICAqL1xuICByZWFkb25seSBkaXJlY3Rpb246IFNvcnREaXJlY3Rpb247XG5cbiAgLyoqXG4gICAqIFRoZSBudWxsIG9yZGVyaW5nLlxuICAgKi9cbiAgcmVhZG9ubHkgbnVsbE9yZGVyOiBOdWxsT3JkZXI7XG59XG5cbi8qKlxuICogU29ydCBvcmRlciBzcGVjaWZpY2F0aW9uIGZvciBJY2ViZXJnIHRhYmxlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEljZWJlcmdTb3J0T3JkZXIge1xuICAvKipcbiAgICogVGhlIGxpc3Qgb2Ygc29ydCBmaWVsZHMuXG4gICAqL1xuICByZWFkb25seSBmaWVsZHM6IEljZWJlcmdTb3J0RmllbGRbXTtcblxuICAvKipcbiAgICogVGhlIHVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgc29ydCBvcmRlci5cbiAgICpcbiAgICogQGRlZmF1bHQgMVxuICAgKi9cbiAgcmVhZG9ubHkgb3JkZXJJZD86IG51bWJlcjtcbn1cblxuLyoqXG4gKiBBIHNpbmdsZSB0YWJsZSBwcm9wZXJ0eSBrZXktdmFsdWUgcGFpciBmb3IgSWNlYmVyZyB0YWJsZSBjb25maWd1cmF0aW9uLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRhYmxlUHJvcGVydHlFbnRyeSB7XG4gIC8qKlxuICAgKiBUaGUgcHJvcGVydHkga2V5LlxuICAgKi9cbiAgcmVhZG9ubHkga2V5OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBwcm9wZXJ0eSB2YWx1ZS5cbiAgICovXG4gIHJlYWRvbmx5IHZhbHVlOiBzdHJpbmc7XG59XG5cbi8qKlxuICogQ29udGFpbnMgZGV0YWlscyBhYm91dCB0aGUgbWV0YWRhdGEgZm9yIGFuIEljZWJlcmcgdGFibGUuXG4gKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1wcm9wZXJ0aWVzLXMzdGFibGVzLXRhYmxlLWljZWJlcmdtZXRhZGF0YS5odG1sXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSWNlYmVyZ01ldGFkYXRhUHJvcGVydHkge1xuICAvKipcbiAgICogQ29udGFpbnMgZGV0YWlscyBhYm91dCB0aGUgc2NoZW1hIGZvciBhbiBJY2ViZXJnIHRhYmxlLlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1wcm9wZXJ0aWVzLXMzdGFibGVzLXRhYmxlLWljZWJlcmdtZXRhZGF0YS5odG1sI2Nmbi1zM3RhYmxlcy10YWJsZS1pY2ViZXJnbWV0YWRhdGEtaWNlYmVyZ3NjaGVtYVxuICAgKi9cbiAgcmVhZG9ubHkgaWNlYmVyZ1NjaGVtYTogSWNlYmVyZ1NjaGVtYVByb3BlcnR5O1xuXG4gIC8qKlxuICAgKiBUaGUgcGFydGl0aW9uIHNwZWNpZmljYXRpb24gZm9yIHRoZSBJY2ViZXJnIHRhYmxlLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIE5vIHBhcnRpdGlvbiBzcGVjaWZpY2F0aW9uXG4gICAqL1xuICByZWFkb25seSBpY2ViZXJnUGFydGl0aW9uU3BlYz86IEljZWJlcmdQYXJ0aXRpb25TcGVjO1xuXG4gIC8qKlxuICAgKiBUaGUgc29ydCBvcmRlciBmb3IgdGhlIEljZWJlcmcgdGFibGUuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm8gc29ydCBvcmRlclxuICAgKi9cbiAgcmVhZG9ubHkgaWNlYmVyZ1NvcnRPcmRlcj86IEljZWJlcmdTb3J0T3JkZXI7XG5cbiAgLyoqXG4gICAqIEN1c3RvbSBwcm9wZXJ0aWVzIGZvciB0aGUgSWNlYmVyZyB0YWJsZS5cbiAgICogRWFjaCBlbnRyeSByZXByZXNlbnRzIGEga2V5LXZhbHVlIHBhaXIgZm9yIEljZWJlcmcgdGFibGUgY29uZmlndXJhdGlvbi5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBObyBjdXN0b20gcHJvcGVydGllc1xuICAgKi9cbiAgcmVhZG9ubHkgdGFibGVQcm9wZXJ0aWVzPzogVGFibGVQcm9wZXJ0eUVudHJ5W107XG59XG5cbi8qKlxuICogQ29udGFpbnMgZGV0YWlscyBhYm91dCB0aGUgc2NoZW1hIGZvciBhbiBJY2ViZXJnIHRhYmxlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEljZWJlcmdTY2hlbWFQcm9wZXJ0eSB7XG4gIC8qKlxuICAgKiBDb250YWlucyBkZXRhaWxzIGFib3V0IHRoZSBzY2hlbWEgZm9yIGFuIEljZWJlcmcgdGFibGUuXG4gICAqL1xuICByZWFkb25seSBzY2hlbWFGaWVsZExpc3Q6IFNjaGVtYUZpZWxkUHJvcGVydHlbXTtcbn1cblxuLyoqXG4gKiBDb250YWlucyBkZXRhaWxzIGFib3V0IGEgc2NoZW1hIGZpZWxkLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFNjaGVtYUZpZWxkUHJvcGVydHkge1xuICAvKipcbiAgICogVGhlIHVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgZmllbGQuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gQXV0by1hc3NpZ25lZCBieSBTMyBUYWJsZXNcbiAgICovXG4gIHJlYWRvbmx5IGlkPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgZmllbGQuXG4gICAqL1xuICByZWFkb25seSBuYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEEgQm9vbGVhbiB2YWx1ZSB0aGF0IHNwZWNpZmllcyB3aGV0aGVyIHZhbHVlcyBhcmUgcmVxdWlyZWQgZm9yIGVhY2ggcm93IGluIHRoaXMgZmllbGQuXG4gICAqXG4gICAqIEJ5IGRlZmF1bHQsIHRoaXMgaXMgYGZhbHNlYCBhbmQgbnVsbCB2YWx1ZXMgYXJlIGFsbG93ZWQgaW4gdGhlIGZpZWxkLiBJZiB0aGlzIGlzIGB0cnVlYCwgdGhlIGZpZWxkIGRvZXMgbm90IGFsbG93IG51bGwgdmFsdWVzLlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgcmVxdWlyZWQ/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgZmllbGQgdHlwZS5cbiAgICpcbiAgICogUzMgVGFibGVzIHN1cHBvcnRzIGFsbCBBcGFjaGUgSWNlYmVyZyBwcmltaXRpdmUgdHlwZXMuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgdGhlIFtBcGFjaGUgSWNlYmVyZyBkb2N1bWVudGF0aW9uXShodHRwczovL2ljZWJlcmcuYXBhY2hlLm9yZy9zcGVjLyNwcmltaXRpdmUtdHlwZXMpLlxuICAgKi9cbiAgcmVhZG9ubHkgdHlwZTogc3RyaW5nO1xufVxuXG4vKipcbiAqIENvbnRhaW5zIGRldGFpbHMgYWJvdXQgdGhlIHNuYXBzaG90IG1hbmFnZW1lbnQgc2V0dGluZ3MgZm9yIGFuIEljZWJlcmcgdGFibGUuXG4gKlxuICogQSBzbmFwc2hvdCBpcyBleHBpcmVkIHdoZW4gaXQgZXhjZWVkcyBNaW5TbmFwc2hvdHNUb0tlZXAgYW5kIE1heFNuYXBzaG90QWdlSG91cnMuXG4gKlxuICogQGRlZmF1bHQgLSBObyBzbmFwc2hvdCBtYW5hZ2VtZW50IHNldHRpbmdzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU25hcHNob3RNYW5hZ2VtZW50UHJvcGVydHkge1xuICAvKipcbiAgICogVGhlIG1heGltdW0gYWdlIG9mIGEgc25hcHNob3QgYmVmb3JlIGl0IGNhbiBiZSBleHBpcmVkLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIE5vIG1heGltdW0gYWdlXG4gICAqL1xuICByZWFkb25seSBtYXhTbmFwc2hvdEFnZUhvdXJzPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBUaGUgbWluaW11bSBudW1iZXIgb2Ygc25hcHNob3RzIHRvIGtlZXAuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm8gbWluaW11bSBudW1iZXJcbiAgICovXG4gIHJlYWRvbmx5IG1pblNuYXBzaG90c1RvS2VlcD86IG51bWJlcjtcblxuICAvKipcbiAgICogSW5kaWNhdGVzIHdoZXRoZXIgdGhlIFNuYXBzaG90TWFuYWdlbWVudCBtYWludGVuYW5jZSBhY3Rpb24gaXMgZW5hYmxlZC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBOb3Qgc3BlY2lmaWVkXG4gICAqL1xuICByZWFkb25seSBzdGF0dXM/OiBTdGF0dXM7XG59XG5cbi8qKlxuICogQSByZWZlcmVuY2UgdG8gYSB0YWJsZSBvdXRzaWRlIHRoaXMgc3RhY2tcbiAqXG4gKiBUaGUgdGFibGVOYW1lLCByZWdpb24sIGFuZCBhY2NvdW50IGNhbiBiZSBwcm92aWRlZCBleHBsaWNpdGx5XG4gKiBvciB3aWxsIGJlIGluZmVycmVkIGZyb20gdGhlIHRhYmxlQXJuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVGFibGVBdHRyaWJ1dGVzIHtcbiAgLyoqXG4gICAqIE5hbWUgb2YgdGhpcyB0YWJsZVxuICAgKi9cbiAgcmVhZG9ubHkgdGFibGVOYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSB0YWJsZSdzIEFSTi5cbiAgICovXG4gIHJlYWRvbmx5IHRhYmxlQXJuOiBzdHJpbmc7XG59XG5cbi8qKlxuICogQW4gUzMgVGFibGUgd2l0aCBoZWxwZXJzLlxuICovXG5AcHJvcGVydHlJbmplY3RhYmxlXG5leHBvcnQgY2xhc3MgVGFibGUgZXh0ZW5kcyBUYWJsZUJhc2UgaW1wbGVtZW50cyBJVGFnZ2FibGVWMiB7XG4gIC8qKiBVbmlxdWVseSBpZGVudGlmaWVzIHRoaXMgY2xhc3MuICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgUFJPUEVSVFlfSU5KRUNUSU9OX0lEOiBzdHJpbmcgPSAnQGF3cy1jZGsuYXdzLXMzdGFibGVzLWFscGhhLlRhYmxlJztcblxuICAvKipcbiAgICogRGVmaW5lcyBhIFRhYmxlIGNvbnN0cnVjdCB0aGF0IHJlcHJlc2VudHMgYW4gZXh0ZXJuYWwgdGFibGUuXG4gICAqXG4gICAqIEBwYXJhbSBzY29wZSBUaGUgcGFyZW50IGNyZWF0aW5nIGNvbnN0cnVjdCAodXN1YWxseSBgdGhpc2ApLlxuICAgKiBAcGFyYW0gaWQgVGhlIGNvbnN0cnVjdCdzIG5hbWUuXG4gICAqIEBwYXJhbSBhdHRycyBBIGBUYWJsZUF0dHJpYnV0ZXNgIG9iamVjdCBjb250YWluaW5nIHRoZSB0YWJsZSBuYW1lIGFuZCBBUk4uXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZyb21UYWJsZUF0dHJpYnV0ZXMoXG4gICAgc2NvcGU6IENvbnN0cnVjdCxcbiAgICBpZDogc3RyaW5nLFxuICAgIGF0dHJzOiBUYWJsZUF0dHJpYnV0ZXMsXG4gICk6IElUYWJsZSB7XG4gICAgY29uc3QgdGFibGVBcm4gPSBhdHRycy50YWJsZUFybjtcbiAgICBUYWJsZS52YWxpZGF0ZVRhYmxlTmFtZShhdHRycy50YWJsZU5hbWUpO1xuXG4gICAgY2xhc3MgSW1wb3J0IGV4dGVuZHMgVGFibGVCYXNlIHtcbiAgICAgIHB1YmxpYyByZWFkb25seSB0YWJsZU5hbWUgPSBhdHRycy50YWJsZU5hbWU7XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgdGFibGVBcm4gPSB0YWJsZUFybjtcbiAgICAgIHB1YmxpYyByZWFkb25seSB0YWJsZVBvbGljeT86IENmblRhYmxlUG9saWN5O1xuICAgICAgcHJvdGVjdGVkIGF1dG9DcmVhdGVQb2xpY3k6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgICAgLyoqXG4gICAgICAgKiBFeHBvcnRzIHRoaXMgIGZyb20gdGhlIHN0YWNrLlxuICAgICAgICovXG4gICAgICBwdWJsaWMgZXhwb3J0KCkge1xuICAgICAgICByZXR1cm4gYXR0cnM7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBJbXBvcnQoc2NvcGUsIGlkLCB7XG4gICAgICBlbnZpcm9ubWVudEZyb21Bcm46IHRhYmxlQXJuLFxuICAgICAgcGh5c2ljYWxOYW1lOiB0YWJsZUFybixcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvblMzL2xhdGVzdC91c2VyZ3VpZGUvczMtdGFibGVzLWJ1Y2tldHMtbmFtaW5nLmh0bWxcbiAgICogQHBhcmFtIHRhYmxlTmFtZSBOYW1lIG9mIHRoZSB0YWJsZVxuICAgKiBAdGhyb3dzIFVuc2NvcGVkVmFsaWRhdGlvbkVycm9yIGlmIGFueSBuYW1pbmcgZXJyb3JzIGFyZSBkZXRlY3RlZFxuICAgKi9cbiAgcHVibGljIHN0YXRpYyB2YWxpZGF0ZVRhYmxlTmFtZSh0YWJsZU5hbWU6IHN0cmluZykge1xuICAgIGlmICh0YWJsZU5hbWUgPT0gdW5kZWZpbmVkIHx8IFRva2VuLmlzVW5yZXNvbHZlZCh0YWJsZU5hbWUpKSB7XG4gICAgICAvLyB0aGUgbmFtZSBpcyBhIGxhdGUtYm91bmQgdmFsdWUsIG5vdCBhIGRlZmluZWQgc3RyaW5nLCBzbyBza2lwIHZhbGlkYXRpb25cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBlcnJvcnM6IHN0cmluZ1tdID0gW107XG5cbiAgICAvLyBMZW5ndGggdmFsaWRhdGlvblxuICAgIGlmICh0YWJsZU5hbWUubGVuZ3RoIDwgMSB8fCB0YWJsZU5hbWUubGVuZ3RoID4gMjU1KSB7XG4gICAgICBlcnJvcnMucHVzaChcbiAgICAgICAgJ1RhYmxlIG5hbWUgbXVzdCBiZSBhdCBsZWFzdCAxIGFuZCBubyBtb3JlIHRoYW4gMjU1IGNoYXJhY3RlcnMnLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICAvLyBDaGFyYWN0ZXIgc2V0IHZhbGlkYXRpb25cbiAgICBjb25zdCBpbGxlZ2FsQ2hhcnNldFJlZ0V4ID0gL1teYS16MC05X10vO1xuICAgIGNvbnN0IGFsbG93ZWRFZGdlQ2hhcnNldFJlZ0V4ID0gL1thLXowLTldLztcblxuICAgIGNvbnN0IGlsbGVnYWxDaGFyTWF0Y2ggPSB0YWJsZU5hbWUubWF0Y2goaWxsZWdhbENoYXJzZXRSZWdFeCk7XG4gICAgaWYgKGlsbGVnYWxDaGFyTWF0Y2gpIHtcbiAgICAgIGVycm9ycy5wdXNoKFxuICAgICAgICAnVGFibGUgbmFtZSBtdXN0IG9ubHkgY29udGFpbiBsb3dlcmNhc2UgY2hhcmFjdGVycywgbnVtYmVycywgYW5kIHVuZGVyc2NvcmVzIChfKScgK1xuICAgICAgICAgIGAgKG9mZnNldDogJHtpbGxlZ2FsQ2hhck1hdGNoLmluZGV4fSlgLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICAvLyBFZGdlIGNoYXJhY3RlciB2YWxpZGF0aW9uXG4gICAgaWYgKCFhbGxvd2VkRWRnZUNoYXJzZXRSZWdFeC50ZXN0KHRhYmxlTmFtZS5jaGFyQXQoMCkpKSB7XG4gICAgICBlcnJvcnMucHVzaChcbiAgICAgICAgJ1RhYmxlIG5hbWUgbXVzdCBzdGFydCB3aXRoIGEgbG93ZXJjYXNlIGxldHRlciBvciBudW1iZXIgKG9mZnNldDogMCknLFxuICAgICAgKTtcbiAgICB9XG4gICAgaWYgKCFhbGxvd2VkRWRnZUNoYXJzZXRSZWdFeC50ZXN0KHRhYmxlTmFtZS5jaGFyQXQodGFibGVOYW1lLmxlbmd0aCAtIDEpKSkge1xuICAgICAgZXJyb3JzLnB1c2goXG4gICAgICAgIGBUYWJsZSBuYW1lIG11c3QgZW5kIHdpdGggYSBsb3dlcmNhc2UgbGV0dGVyIG9yIG51bWJlciAob2Zmc2V0OiAke1xuICAgICAgICAgIHRhYmxlTmFtZS5sZW5ndGggLSAxXG4gICAgICAgIH0pYCxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKGVycm9ycy5sZW5ndGggPiAwKSB7XG4gICAgICB0aHJvdyBuZXcgVW5zY29wZWRWYWxpZGF0aW9uRXJyb3IoXG4gICAgICAgIGxpdGBJbnZhbGlkVGFibGVOYW1lYCxcbiAgICAgICAgYEludmFsaWQgUzMgdGFibGUgbmFtZSAodmFsdWU6ICR7dGFibGVOYW1lfSkke0VPTH0ke2Vycm9ycy5qb2luKEVPTCl9YCxcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFRoZSB1bmlxdWUgQW1hem9uIFJlc291cmNlIE5hbWUgKGFybikgb2YgdGhpcyB0YWJsZVxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHRhYmxlQXJuOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSB1bmRlcmx5aW5nIENmblRhYmxlIEwxIHJlc291cmNlXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHJpdmF0ZSByZWFkb25seSBfcmVzb3VyY2U6IENmblRhYmxlO1xuXG4gIC8qKlxuICAgKiBUaGUgdGFnIG1hbmFnZXIgZm9yIHRoaXMgcmVzb3VyY2UuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgY2RrVGFnTWFuYWdlcjogVGFnTWFuYWdlcjtcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhpcyB0YWJsZVxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHRhYmxlTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZXNwYWNlIGNvbnRhaW5pbmcgdGhpcyB0YWJsZVxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IG5hbWVzcGFjZTogSU5hbWVzcGFjZTtcblxuICAvKipcbiAgICogVGhlIHJlc291cmNlIHBvbGljeSBmb3IgdGhpcyB0YWJsZS5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSB0YWJsZVBvbGljeT86IENmblRhYmxlUG9saWN5O1xuXG4gIHByb3RlY3RlZCBhdXRvQ3JlYXRlUG9saWN5OiBib29sZWFuID0gdHJ1ZTtcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogVGFibGVQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwge30pO1xuXG4gICAgLy8gRW5oYW5jZWQgQ0RLIEFuYWx5dGljcyBUZWxlbWV0cnlcbiAgICBhZGRDb25zdHJ1Y3RNZXRhZGF0YSh0aGlzLCBwcm9wcyk7XG5cbiAgICBpZiAocHJvcHMud2l0aG91dE1ldGFkYXRhICYmIHByb3BzLmljZWJlcmdNZXRhZGF0YSkge1xuICAgICAgdGhyb3cgbmV3IFVuc2NvcGVkVmFsaWRhdGlvbkVycm9yKFxuICAgICAgICBsaXRgTXV0dWFsbHlFeGNsdXNpdmVQcm9wc2AsXG4gICAgICAgIFwiVGFibGVQcm9wczogJ3dpdGhvdXRNZXRhZGF0YScgYW5kICdpY2ViZXJnTWV0YWRhdGEnIGFyZSBtdXR1YWxseSBleGNsdXNpdmUuIFNwZWNpZnkgb25seSBvbmUuXCIsXG4gICAgICApO1xuICAgIH1cblxuICAgIFRhYmxlLnZhbGlkYXRlVGFibGVOYW1lKHByb3BzLnRhYmxlTmFtZSk7XG5cbiAgICB0aGlzLl9yZXNvdXJjZSA9IG5ldyBDZm5UYWJsZSh0aGlzLCBpZCwge1xuICAgICAgdGFibGVOYW1lOiBwcm9wcy50YWJsZU5hbWUsXG4gICAgICBvcGVuVGFibGVGb3JtYXQ6IHByb3BzLm9wZW5UYWJsZUZvcm1hdCxcbiAgICAgIHRhYmxlQnVja2V0QXJuOiBwcm9wcy5uYW1lc3BhY2UudGFibGVCdWNrZXQudGFibGVCdWNrZXRBcm4sXG4gICAgICBuYW1lc3BhY2U6IHByb3BzLm5hbWVzcGFjZS5uYW1lc3BhY2VOYW1lLFxuICAgICAgY29tcGFjdGlvbjogcHJvcHMuY29tcGFjdGlvbixcbiAgICAgIGljZWJlcmdNZXRhZGF0YTogdGhpcy5idWlsZEljZWJlcmdNZXRhZGF0YShwcm9wcy5pY2ViZXJnTWV0YWRhdGEpLFxuICAgICAgc25hcHNob3RNYW5hZ2VtZW50OiBwcm9wcy5zbmFwc2hvdE1hbmFnZW1lbnQsXG4gICAgICB3aXRob3V0TWV0YWRhdGE6IHByb3BzLndpdGhvdXRNZXRhZGF0YSA/ICdZZXMnIDogdW5kZWZpbmVkLFxuICAgICAgc3RvcmFnZUNsYXNzQ29uZmlndXJhdGlvbjogcHJvcHMuc3RvcmFnZUNsYXNzID8geyBzdG9yYWdlQ2xhc3M6IHByb3BzLnN0b3JhZ2VDbGFzcyB9IDogdW5kZWZpbmVkLFxuICAgIH0pO1xuXG4gICAgdGhpcy5uYW1lc3BhY2UgPSBwcm9wcy5uYW1lc3BhY2U7XG4gICAgdGhpcy50YWJsZU5hbWUgPSBwcm9wcy50YWJsZU5hbWU7XG4gICAgdGhpcy50YWJsZUFybiA9IHRoaXMuX3Jlc291cmNlLmF0dHJUYWJsZUFybjtcbiAgICB0aGlzLmNka1RhZ01hbmFnZXIgPSB0aGlzLl9yZXNvdXJjZS5jZGtUYWdNYW5hZ2VyO1xuICAgIHRoaXMuX3Jlc291cmNlLmFwcGx5UmVtb3ZhbFBvbGljeShwcm9wcy5yZW1vdmFsUG9saWN5KTtcbiAgICB0aGlzLm5vZGUuYWRkRGVwZW5kZW5jeSh0aGlzLm5hbWVzcGFjZSk7XG4gIH1cblxuICAvKipcbiAgICogQnVpbGRzIHRoZSBDbG91ZEZvcm1hdGlvbiBJY2ViZXJnIG1ldGFkYXRhIHByb3BlcnR5IGZyb20gdGhlIENESyBtZXRhZGF0YSBtb2RlbC5cbiAgICovXG4gIHByaXZhdGUgYnVpbGRJY2ViZXJnTWV0YWRhdGEobWV0YWRhdGE/OiBJY2ViZXJnTWV0YWRhdGFQcm9wZXJ0eSk6IENmblRhYmxlLkljZWJlcmdNZXRhZGF0YVByb3BlcnR5IHwgdW5kZWZpbmVkIHtcbiAgICBpZiAoIW1ldGFkYXRhKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBpY2ViZXJnU2NoZW1hOiB0aGlzLmJ1aWxkSWNlYmVyZ1NjaGVtYShtZXRhZGF0YS5pY2ViZXJnU2NoZW1hKSxcbiAgICAgIGljZWJlcmdQYXJ0aXRpb25TcGVjOiBtZXRhZGF0YS5pY2ViZXJnUGFydGl0aW9uU3BlY1xuICAgICAgICA/IHRoaXMuYnVpbGRJY2ViZXJnUGFydGl0aW9uU3BlYyhtZXRhZGF0YS5pY2ViZXJnUGFydGl0aW9uU3BlYylcbiAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICBpY2ViZXJnU29ydE9yZGVyOiBtZXRhZGF0YS5pY2ViZXJnU29ydE9yZGVyXG4gICAgICAgID8gdGhpcy5idWlsZEljZWJlcmdTb3J0T3JkZXIobWV0YWRhdGEuaWNlYmVyZ1NvcnRPcmRlcilcbiAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICB0YWJsZVByb3BlcnRpZXM6IG1ldGFkYXRhLnRhYmxlUHJvcGVydGllc1xuICAgICAgICA/IHRoaXMuYnVpbGRUYWJsZVByb3BlcnRpZXMobWV0YWRhdGEudGFibGVQcm9wZXJ0aWVzKVxuICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEJ1aWxkcyB0aGUgQ2xvdWRGb3JtYXRpb24gSWNlYmVyZyBzY2hlbWEgcHJvcGVydHkuXG4gICAqL1xuICBwcml2YXRlIGJ1aWxkSWNlYmVyZ1NjaGVtYShzY2hlbWE6IEljZWJlcmdTY2hlbWFQcm9wZXJ0eSk6IENmblRhYmxlLkljZWJlcmdTY2hlbWFQcm9wZXJ0eSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHNjaGVtYUZpZWxkTGlzdDogc2NoZW1hLnNjaGVtYUZpZWxkTGlzdC5tYXAoZmllbGQgPT4gKHtcbiAgICAgICAgbmFtZTogZmllbGQubmFtZSxcbiAgICAgICAgdHlwZTogZmllbGQudHlwZSxcbiAgICAgICAgLi4uKGZpZWxkLnJlcXVpcmVkICE9PSB1bmRlZmluZWQgJiYgeyByZXF1aXJlZDogZmllbGQucmVxdWlyZWQgfSksXG4gICAgICAgIC4uLihmaWVsZC5pZCAhPT0gdW5kZWZpbmVkICYmIHsgaWQ6IGZpZWxkLmlkIH0pLFxuICAgICAgfSkpLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogQnVpbGRzIHRoZSBDbG91ZEZvcm1hdGlvbiBJY2ViZXJnIHBhcnRpdGlvbiBzcGVjaWZpY2F0aW9uIHByb3BlcnR5LlxuICAgKi9cbiAgcHJpdmF0ZSBidWlsZEljZWJlcmdQYXJ0aXRpb25TcGVjKHNwZWM6IEljZWJlcmdQYXJ0aXRpb25TcGVjKTogQ2ZuVGFibGUuSWNlYmVyZ1BhcnRpdGlvblNwZWNQcm9wZXJ0eSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLihzcGVjLnNwZWNJZCAhPT0gdW5kZWZpbmVkICYmIHsgc3BlY0lkOiBzcGVjLnNwZWNJZCB9KSxcbiAgICAgIGZpZWxkczogc3BlYy5maWVsZHMubWFwKGZpZWxkID0+ICh7XG4gICAgICAgIHNvdXJjZUlkOiBmaWVsZC5zb3VyY2VJZCxcbiAgICAgICAgdHJhbnNmb3JtOiBmaWVsZC50cmFuc2Zvcm0udmFsdWUsXG4gICAgICAgIG5hbWU6IGZpZWxkLm5hbWUsXG4gICAgICAgIC4uLihmaWVsZC5maWVsZElkICE9PSB1bmRlZmluZWQgJiYgeyBmaWVsZElkOiBmaWVsZC5maWVsZElkIH0pLFxuICAgICAgfSkpLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogQnVpbGRzIHRoZSBDbG91ZEZvcm1hdGlvbiBJY2ViZXJnIHNvcnQgb3JkZXIgcHJvcGVydHkuXG4gICAqL1xuICBwcml2YXRlIGJ1aWxkSWNlYmVyZ1NvcnRPcmRlcihzb3J0T3JkZXI6IEljZWJlcmdTb3J0T3JkZXIpOiBDZm5UYWJsZS5JY2ViZXJnU29ydE9yZGVyUHJvcGVydHkge1xuICAgIHJldHVybiB7XG4gICAgICAuLi4oc29ydE9yZGVyLm9yZGVySWQgIT09IHVuZGVmaW5lZCAmJiB7IG9yZGVySWQ6IHNvcnRPcmRlci5vcmRlcklkIH0pLFxuICAgICAgZmllbGRzOiBzb3J0T3JkZXIuZmllbGRzLm1hcChmaWVsZCA9PiAoe1xuICAgICAgICBzb3VyY2VJZDogZmllbGQuc291cmNlSWQsXG4gICAgICAgIHRyYW5zZm9ybTogZmllbGQudHJhbnNmb3JtLnZhbHVlLFxuICAgICAgICBkaXJlY3Rpb246IGZpZWxkLmRpcmVjdGlvbixcbiAgICAgICAgbnVsbE9yZGVyOiBmaWVsZC5udWxsT3JkZXIsXG4gICAgICB9KSksXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBCdWlsZHMgdGhlIENsb3VkRm9ybWF0aW9uIHRhYmxlIHByb3BlcnRpZXMgbWFwIGZyb20ga2V5LXZhbHVlIGVudHJpZXMuXG4gICAqL1xuICBwcml2YXRlIGJ1aWxkVGFibGVQcm9wZXJ0aWVzKHRhYmxlUHJvcGVydGllczogVGFibGVQcm9wZXJ0eUVudHJ5W10pOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+IHtcbiAgICBjb25zdCBrZXlzID0gdGFibGVQcm9wZXJ0aWVzLm1hcChlbnRyeSA9PiBlbnRyeS5rZXkpO1xuICAgIGNvbnN0IGR1cGxpY2F0ZUtleXMgPSBrZXlzLmZpbHRlcigoa2V5LCBpbmRleCkgPT4ga2V5cy5pbmRleE9mKGtleSkgIT09IGluZGV4KTtcbiAgICBpZiAoZHVwbGljYXRlS2V5cy5sZW5ndGggPiAwKSB7XG4gICAgICB0aHJvdyBuZXcgVW5zY29wZWRWYWxpZGF0aW9uRXJyb3IoXG4gICAgICAgIGxpdGBEdXBsaWNhdGVUYWJsZVByb3BlcnR5S2V5YCxcbiAgICAgICAgYER1cGxpY2F0ZSB0YWJsZSBwcm9wZXJ0eSBrZXlzIGFyZSBub3QgYWxsb3dlZDogJHtbLi4ubmV3IFNldChkdXBsaWNhdGVLZXlzKV0uam9pbignLCAnKX1gLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGFibGVQcm9wZXJ0aWVzLnJlZHVjZShcbiAgICAgIChhY2MsIGVudHJ5KSA9PiAoe1xuICAgICAgICAuLi5hY2MsXG4gICAgICAgIFtlbnRyeS5rZXldOiBlbnRyeS52YWx1ZSxcbiAgICAgIH0pLFxuICAgICAge30gYXMgUmVjb3JkPHN0cmluZywgc3RyaW5nPixcbiAgICApO1xuICB9XG59XG4iXX0=
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aws-cdk/aws-s3tables-alpha",
|
|
3
3
|
"private": false,
|
|
4
|
-
"version": "2.
|
|
4
|
+
"version": "2.267.0-alpha.0",
|
|
5
5
|
"description": "CDK Constructs for S3 Tables",
|
|
6
6
|
"main": "lib/index.js",
|
|
7
7
|
"types": "lib/index.d.ts",
|
|
@@ -77,17 +77,17 @@
|
|
|
77
77
|
},
|
|
78
78
|
"license": "Apache-2.0",
|
|
79
79
|
"devDependencies": {
|
|
80
|
-
"aws-cdk-lib": "2.
|
|
81
|
-
"@aws-cdk/cdk-build-tools": "2.
|
|
82
|
-
"@aws-cdk/pkglint": "2.
|
|
80
|
+
"aws-cdk-lib": "2.267.0",
|
|
81
|
+
"@aws-cdk/cdk-build-tools": "2.267.0-alpha.0",
|
|
82
|
+
"@aws-cdk/pkglint": "2.267.0-alpha.0",
|
|
83
83
|
"@types/jest": "^29.5.14",
|
|
84
84
|
"constructs": "^10.5.0",
|
|
85
85
|
"jest": "^29.7.0",
|
|
86
|
-
"@aws-cdk/integ-tests-alpha": "2.
|
|
86
|
+
"@aws-cdk/integ-tests-alpha": "2.267.0-alpha.0"
|
|
87
87
|
},
|
|
88
88
|
"homepage": "https://github.com/aws/aws-cdk",
|
|
89
89
|
"peerDependencies": {
|
|
90
|
-
"aws-cdk-lib": "^2.
|
|
90
|
+
"aws-cdk-lib": "^2.267.0",
|
|
91
91
|
"constructs": "^10.5.0"
|
|
92
92
|
},
|
|
93
93
|
"separate-module": false,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Construct } from 'constructs';
|
|
2
2
|
import { Stack, Tags } from 'aws-cdk-lib';
|
|
3
|
-
import { TableBucket, UnreferencedFileRemovalStatus, TableBucketEncryption, RequestMetricsStatus, Namespace, Table, Status, OpenTableFormat, IcebergTransform, SortDirection, NullOrder } from '@aws-cdk/aws-s3tables-alpha';
|
|
3
|
+
import { TableBucket, UnreferencedFileRemovalStatus, TableBucketEncryption, RequestMetricsStatus, StorageClass, Namespace, Table, Status, OpenTableFormat, IcebergTransform, SortDirection, NullOrder } from '@aws-cdk/aws-s3tables-alpha';
|
|
4
4
|
import * as iam from 'aws-cdk-lib/aws-iam';
|
|
5
5
|
import * as kms from 'aws-cdk-lib/aws-kms';
|
|
6
6
|
|