awscdk-resources-mongodbatlas
Version:
MongoDB Atlas CDK Construct Library for AWS CloudFormation Resources
233 lines • 42.9 kB
JavaScript
;
var _a;
Object.defineProperty(exports, "__esModule", { value: true });
exports.CfnCloudBackupSnapshot = exports.ApiAtlasDiskBackupShardedClusterSnapshotViewType = exports.ApiAtlasDiskBackupShardedClusterSnapshotViewStatus = exports.ApiAtlasDiskBackupShardedClusterSnapshotViewSnapshotType = exports.ApiAtlasDiskBackupShardedClusterSnapshotViewFrequencyType = exports.ApiAtlasDiskBackupShardedClusterSnapshotMemberViewCloudProvider = exports.CfnCloudBackupSnapshotPropsSnapshotType = exports.CfnCloudBackupSnapshotPropsFrequencyType = exports.CfnCloudBackupSnapshotPropsInstanceType = void 0;
exports.toJson_CfnCloudBackupSnapshotProps = toJson_CfnCloudBackupSnapshotProps;
exports.toJson_ApiAtlasDiskBackupShardedClusterSnapshotMemberView = toJson_ApiAtlasDiskBackupShardedClusterSnapshotMemberView;
exports.toJson_ApiAtlasDiskBackupShardedClusterSnapshotView = toJson_ApiAtlasDiskBackupShardedClusterSnapshotView;
const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
// Generated by cdk-import
const cdk = require("aws-cdk-lib");
/**
* Converts an object of type 'CfnCloudBackupSnapshotProps' to JSON representation.
*/
/* eslint-disable max-len, quote-props */
function toJson_CfnCloudBackupSnapshotProps(obj) {
if (obj === undefined) {
return undefined;
}
const result = {
Profile: obj.profile,
InstanceType: obj.instanceType,
InstanceName: obj.instanceName,
Description: obj.description,
FrequencyType: obj.frequencyType,
ProjectId: obj.projectId,
IncludeCount: obj.includeCount,
ItemsPerPage: obj.itemsPerPage,
Members: obj.members?.map((y) => toJson_ApiAtlasDiskBackupShardedClusterSnapshotMemberView(y)),
PageNum: obj.pageNum,
PolicyItems: obj.policyItems?.map((y) => y),
Results: obj.results?.map((y) => toJson_ApiAtlasDiskBackupShardedClusterSnapshotView(y)),
RetentionInDays: obj.retentionInDays,
SnapshotType: obj.snapshotType,
TotalCount: obj.totalCount,
};
// filter undefined values
return Object.entries(result).reduce((r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), {});
}
/* eslint-enable max-len, quote-props */
/**
* Type of instance specified on the Instance Name.
*
* @schema CfnCloudBackupSnapshotPropsInstanceType
*/
var CfnCloudBackupSnapshotPropsInstanceType;
(function (CfnCloudBackupSnapshotPropsInstanceType) {
/** cluster */
CfnCloudBackupSnapshotPropsInstanceType["CLUSTER"] = "cluster";
})(CfnCloudBackupSnapshotPropsInstanceType || (exports.CfnCloudBackupSnapshotPropsInstanceType = CfnCloudBackupSnapshotPropsInstanceType = {}));
/**
* Human-readable label that identifies how often this snapshot triggers.
*
* @schema CfnCloudBackupSnapshotPropsFrequencyType
*/
var CfnCloudBackupSnapshotPropsFrequencyType;
(function (CfnCloudBackupSnapshotPropsFrequencyType) {
/** hourly */
CfnCloudBackupSnapshotPropsFrequencyType["HOURLY"] = "hourly";
/** daily */
CfnCloudBackupSnapshotPropsFrequencyType["DAILY"] = "daily";
/** weekly */
CfnCloudBackupSnapshotPropsFrequencyType["WEEKLY"] = "weekly";
/** monthly */
CfnCloudBackupSnapshotPropsFrequencyType["MONTHLY"] = "monthly";
})(CfnCloudBackupSnapshotPropsFrequencyType || (exports.CfnCloudBackupSnapshotPropsFrequencyType = CfnCloudBackupSnapshotPropsFrequencyType = {}));
/**
* Converts an object of type 'ApiAtlasDiskBackupShardedClusterSnapshotMemberView' to JSON representation.
*/
/* eslint-disable max-len, quote-props */
function toJson_ApiAtlasDiskBackupShardedClusterSnapshotMemberView(obj) {
if (obj === undefined) {
return undefined;
}
const result = {
CloudProvider: obj.cloudProvider,
Id: obj.id,
ReplicaSetName: obj.replicaSetName,
};
// filter undefined values
return Object.entries(result).reduce((r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), {});
}
/**
* Converts an object of type 'ApiAtlasDiskBackupShardedClusterSnapshotView' to JSON representation.
*/
/* eslint-disable max-len, quote-props */
function toJson_ApiAtlasDiskBackupShardedClusterSnapshotView(obj) {
if (obj === undefined) {
return undefined;
}
const result = {
CreatedAt: obj.createdAt,
Description: obj.description,
ExpiresAt: obj.expiresAt,
FrequencyType: obj.frequencyType,
Id: obj.id,
MasterKeyUUID: obj.masterKeyUuid,
Members: obj.members?.map((y) => toJson_ApiAtlasDiskBackupShardedClusterSnapshotMemberView(y)),
MongodVersion: obj.mongodVersion,
PolicyItems: obj.policyItems?.map((y) => y),
SnapshotIds: obj.snapshotIds?.map((y) => y),
SnapshotType: obj.snapshotType,
Status: obj.status,
StorageSizeBytes: obj.storageSizeBytes,
Type: obj.type,
};
// filter undefined values
return Object.entries(result).reduce((r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), {});
}
/* eslint-enable max-len, quote-props */
/**
* Human-readable label that identifies when this snapshot triggers.
*
* @schema CfnCloudBackupSnapshotPropsSnapshotType
*/
var CfnCloudBackupSnapshotPropsSnapshotType;
(function (CfnCloudBackupSnapshotPropsSnapshotType) {
/** onDemand */
CfnCloudBackupSnapshotPropsSnapshotType["ON_DEMAND"] = "onDemand";
/** scheduled */
CfnCloudBackupSnapshotPropsSnapshotType["SCHEDULED"] = "scheduled";
})(CfnCloudBackupSnapshotPropsSnapshotType || (exports.CfnCloudBackupSnapshotPropsSnapshotType = CfnCloudBackupSnapshotPropsSnapshotType = {}));
/**
* Human-readable label that identifies the cloud provider that stores this snapshot. The resource returns this parameter when `"type": "replicaSet".`
*
* @schema ApiAtlasDiskBackupShardedClusterSnapshotMemberViewCloudProvider
*/
var ApiAtlasDiskBackupShardedClusterSnapshotMemberViewCloudProvider;
(function (ApiAtlasDiskBackupShardedClusterSnapshotMemberViewCloudProvider) {
/** AWS */
ApiAtlasDiskBackupShardedClusterSnapshotMemberViewCloudProvider["AWS"] = "AWS";
/** AZURE */
ApiAtlasDiskBackupShardedClusterSnapshotMemberViewCloudProvider["AZURE"] = "AZURE";
/** GCP */
ApiAtlasDiskBackupShardedClusterSnapshotMemberViewCloudProvider["GCP"] = "GCP";
})(ApiAtlasDiskBackupShardedClusterSnapshotMemberViewCloudProvider || (exports.ApiAtlasDiskBackupShardedClusterSnapshotMemberViewCloudProvider = ApiAtlasDiskBackupShardedClusterSnapshotMemberViewCloudProvider = {}));
/**
* Human-readable label that identifies how often this snapshot triggers.
*
* @schema ApiAtlasDiskBackupShardedClusterSnapshotViewFrequencyType
*/
var ApiAtlasDiskBackupShardedClusterSnapshotViewFrequencyType;
(function (ApiAtlasDiskBackupShardedClusterSnapshotViewFrequencyType) {
/** hourly */
ApiAtlasDiskBackupShardedClusterSnapshotViewFrequencyType["HOURLY"] = "hourly";
/** daily */
ApiAtlasDiskBackupShardedClusterSnapshotViewFrequencyType["DAILY"] = "daily";
/** weekly */
ApiAtlasDiskBackupShardedClusterSnapshotViewFrequencyType["WEEKLY"] = "weekly";
/** monthly */
ApiAtlasDiskBackupShardedClusterSnapshotViewFrequencyType["MONTHLY"] = "monthly";
})(ApiAtlasDiskBackupShardedClusterSnapshotViewFrequencyType || (exports.ApiAtlasDiskBackupShardedClusterSnapshotViewFrequencyType = ApiAtlasDiskBackupShardedClusterSnapshotViewFrequencyType = {}));
/**
* Human-readable label that identifies when this snapshot triggers.
*
* @schema ApiAtlasDiskBackupShardedClusterSnapshotViewSnapshotType
*/
var ApiAtlasDiskBackupShardedClusterSnapshotViewSnapshotType;
(function (ApiAtlasDiskBackupShardedClusterSnapshotViewSnapshotType) {
/** onDemand */
ApiAtlasDiskBackupShardedClusterSnapshotViewSnapshotType["ON_DEMAND"] = "onDemand";
/** scheduled */
ApiAtlasDiskBackupShardedClusterSnapshotViewSnapshotType["SCHEDULED"] = "scheduled";
})(ApiAtlasDiskBackupShardedClusterSnapshotViewSnapshotType || (exports.ApiAtlasDiskBackupShardedClusterSnapshotViewSnapshotType = ApiAtlasDiskBackupShardedClusterSnapshotViewSnapshotType = {}));
/**
* Human-readable label that indicates the stage of the backup process for this snapshot.
*
* @schema ApiAtlasDiskBackupShardedClusterSnapshotViewStatus
*/
var ApiAtlasDiskBackupShardedClusterSnapshotViewStatus;
(function (ApiAtlasDiskBackupShardedClusterSnapshotViewStatus) {
/** queued */
ApiAtlasDiskBackupShardedClusterSnapshotViewStatus["QUEUED"] = "queued";
/** inProgress */
ApiAtlasDiskBackupShardedClusterSnapshotViewStatus["IN_PROGRESS"] = "inProgress";
/** completed */
ApiAtlasDiskBackupShardedClusterSnapshotViewStatus["COMPLETED"] = "completed";
/** failed */
ApiAtlasDiskBackupShardedClusterSnapshotViewStatus["FAILED"] = "failed";
})(ApiAtlasDiskBackupShardedClusterSnapshotViewStatus || (exports.ApiAtlasDiskBackupShardedClusterSnapshotViewStatus = ApiAtlasDiskBackupShardedClusterSnapshotViewStatus = {}));
/**
* Human-readable label that categorizes the cluster as a replica set or sharded cluster.
*
* @schema ApiAtlasDiskBackupShardedClusterSnapshotViewType
*/
var ApiAtlasDiskBackupShardedClusterSnapshotViewType;
(function (ApiAtlasDiskBackupShardedClusterSnapshotViewType) {
/** REPLICA_SET */
ApiAtlasDiskBackupShardedClusterSnapshotViewType["REPLICA_SET"] = "REPLICA_SET";
/** SHARDED_CLUSTER */
ApiAtlasDiskBackupShardedClusterSnapshotViewType["SHARDED_CLUSTER"] = "SHARDED_CLUSTER";
})(ApiAtlasDiskBackupShardedClusterSnapshotViewType || (exports.ApiAtlasDiskBackupShardedClusterSnapshotViewType = ApiAtlasDiskBackupShardedClusterSnapshotViewType = {}));
/**
* A CloudFormation `MongoDB::Atlas::CloudBackupSnapshot`
*
* @cloudformationResource MongoDB::Atlas::CloudBackupSnapshot
* @stability external
*/
class CfnCloudBackupSnapshot extends cdk.CfnResource {
/**
* Create a new `MongoDB::Atlas::CloudBackupSnapshot`.
*
* @param scope - scope in which this resource is defined
* @param id - scoped id of the resource
* @param props - resource properties
*/
constructor(scope, id, props) {
super(scope, id, {
type: CfnCloudBackupSnapshot.CFN_RESOURCE_TYPE_NAME,
properties: toJson_CfnCloudBackupSnapshotProps(props),
});
this.props = props;
this.attrSnapshotId = cdk.Token.asString(this.getAtt("SnapshotId"));
this.attrSnapshotIds = cdk.Token.asList(this.getAtt("SnapshotIds"));
this.attrMasterKeyUUID = cdk.Token.asString(this.getAtt("MasterKeyUUID"));
this.attrType = cdk.Token.asString(this.getAtt("Type"));
this.attrExpiresAt = cdk.Token.asString(this.getAtt("ExpiresAt"));
this.attrStorageSizeBytes = cdk.Token.asString(this.getAtt("StorageSizeBytes"));
this.attrId = cdk.Token.asString(this.getAtt("Id"));
this.attrCreatedAt = cdk.Token.asString(this.getAtt("CreatedAt"));
this.attrCloudProvider = cdk.Token.asString(this.getAtt("CloudProvider"));
this.attrMongodVersion = cdk.Token.asString(this.getAtt("MongodVersion"));
this.attrReplicaSetName = cdk.Token.asString(this.getAtt("ReplicaSetName"));
this.attrStatus = cdk.Token.asString(this.getAtt("Status"));
}
}
exports.CfnCloudBackupSnapshot = CfnCloudBackupSnapshot;
_a = JSII_RTTI_SYMBOL_1;
CfnCloudBackupSnapshot[_a] = { fqn: "awscdk-resources-mongodbatlas.CfnCloudBackupSnapshot", version: "4.0.0" };
/**
* The CloudFormation resource type name for this resource class.
*/
CfnCloudBackupSnapshot.CFN_RESOURCE_TYPE_NAME = "MongoDB::Atlas::CloudBackupSnapshot";
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbDEtcmVzb3VyY2VzL2Nsb3VkLWJhY2t1cC1zbmFwc2hvdC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBd0hBLGdGQWdDQztBQTJERCw4SEFnQkM7QUE4R0Qsa0hBNkJDOztBQTlXRCwwQkFBMEI7QUFDMUIsbUNBQW1DO0FBbUhuQzs7R0FFRztBQUNILHlDQUF5QztBQUN6QyxTQUFnQixrQ0FBa0MsQ0FDaEQsR0FBNEM7SUFFNUMsSUFBSSxHQUFHLEtBQUssU0FBUyxFQUFFLENBQUM7UUFDdEIsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztJQUNELE1BQU0sTUFBTSxHQUFHO1FBQ2IsT0FBTyxFQUFFLEdBQUcsQ0FBQyxPQUFPO1FBQ3BCLFlBQVksRUFBRSxHQUFHLENBQUMsWUFBWTtRQUM5QixZQUFZLEVBQUUsR0FBRyxDQUFDLFlBQVk7UUFDOUIsV0FBVyxFQUFFLEdBQUcsQ0FBQyxXQUFXO1FBQzVCLGFBQWEsRUFBRSxHQUFHLENBQUMsYUFBYTtRQUNoQyxTQUFTLEVBQUUsR0FBRyxDQUFDLFNBQVM7UUFDeEIsWUFBWSxFQUFFLEdBQUcsQ0FBQyxZQUFZO1FBQzlCLFlBQVksRUFBRSxHQUFHLENBQUMsWUFBWTtRQUM5QixPQUFPLEVBQUUsR0FBRyxDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUM5Qix5REFBeUQsQ0FBQyxDQUFDLENBQUMsQ0FDN0Q7UUFDRCxPQUFPLEVBQUUsR0FBRyxDQUFDLE9BQU87UUFDcEIsV0FBVyxFQUFFLEdBQUcsQ0FBQyxXQUFXLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDM0MsT0FBTyxFQUFFLEdBQUcsQ0FBQyxPQUFPLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FDOUIsbURBQW1ELENBQUMsQ0FB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QUFDLGlCQUFpQixHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQztRQUMxRSxJQUFJLENBQUMsa0JBQWtCLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUM7UUFDNUUsSUFBSSxDQUFDLFVBQVUsR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7SUFDOUQsQ0FBQzs7QUE5Rkgsd0RBK0ZDOzs7QUE5RkM7O0dBRUc7QUFDb0IsNkNBQXNCLEdBQzNDLHFDQUFxQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gR2VuZXJhdGVkIGJ5IGNkay1pbXBvcnRcbmltcG9ydCAqIGFzIGNkayBmcm9tIFwiYXdzLWNkay1saWJcIjtcbmltcG9ydCAqIGFzIGNvbnN0cnVjdHMgZnJvbSBcImNvbnN0cnVjdHNcIjtcblxuLyoqXG4gKiBSZXR1cm5zLCB0YWtlcywgYW5kIHJlbW92ZXMgQ2xvdWQgQmFja3VwIHNuYXBzaG90cy5cbiAqXG4gKiBAc2NoZW1hIENmbkNsb3VkQmFja3VwU25hcHNob3RQcm9wc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIENmbkNsb3VkQmFja3VwU25hcHNob3RQcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgcHJvZmlsZSBpcyBkZWZpbmVkIGluIEFXUyBTZWNyZXQgbWFuYWdlci4gU2VlIFtTZWNyZXQgTWFuYWdlciBQcm9maWxlIHNldHVwXSguLi8uLi8uLi9leGFtcGxlcy9wcm9maWxlLXNlY3JldC55YW1sKS5cbiAgICpcbiAgICogQHNjaGVtYSBDZm5DbG91ZEJhY2t1cFNuYXBzaG90UHJvcHMjUHJvZmlsZVxuICAgKi9cbiAgcmVhZG9ubHkgcHJvZmlsZT86IHN0cmluZztcblxuICAvKipcbiAgICogVHlwZSBvZiBpbnN0YW5jZSBzcGVjaWZpZWQgb24gdGhlIEluc3RhbmNlIE5hbWUuXG4gICAqXG4gICAqIEBzY2hlbWEgQ2ZuQ2xvdWRCYWNrdXBTbmFwc2hvdFByb3BzI0luc3RhbmNlVHlwZVxuICAgKi9cbiAgcmVhZG9ubHkgaW5zdGFuY2VUeXBlOiBDZm5DbG91ZEJhY2t1cFNuYXBzaG90UHJvcHNJbnN0YW5jZVR5cGU7XG5cbiAgLyoqXG4gICAqIEh1bWFuLXJlYWRhYmxlIGxhYmVsIHRoYXQgaWRlbnRpZmllcyB0aGUgY2x1c3Rlci5cbiAgICpcbiAgICogQHNjaGVtYSBDZm5DbG91ZEJhY2t1cFNuYXBzaG90UHJvcHMjSW5zdGFuY2VOYW1lXG4gICAqL1xuICByZWFkb25seSBpbnN0YW5jZU5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogSHVtYW4tcmVhZGFibGUgcGhyYXNlIG9yIHNlbnRlbmNlIHRoYXQgZXhwbGFpbnMgdGhlIHB1cnBvc2Ugb2YgdGhlIHNuYXBzaG90LiBUaGUgcmVzb3VyY2UgcmV0dXJucyB0aGlzIHBhcmFtZXRlciB3aGVuIGBcInN0YXR1c1wiOiBcIm9uRGVtYW5kXCJgLlxuICAgKlxuICAgKiBAc2NoZW1hIENmbkNsb3VkQmFja3VwU25hcHNob3RQcm9wcyNEZXNjcmlwdGlvblxuICAgKi9cbiAgcmVhZG9ubHkgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEh1bWFuLXJlYWRhYmxlIGxhYmVsIHRoYXQgaWRlbnRpZmllcyBob3cgb2Z0ZW4gdGhpcyBzbmFwc2hvdCB0cmlnZ2Vycy5cbiAgICpcbiAgICogQHNjaGVtYSBDZm5DbG91ZEJhY2t1cFNuYXBzaG90UHJvcHMjRnJlcXVlbmN5VHlwZVxuICAgKi9cbiAgcmVhZG9ubHkgZnJlcXVlbmN5VHlwZT86IENmbkNsb3VkQmFja3VwU25hcHNob3RQcm9wc0ZyZXF1ZW5jeVR5cGU7XG5cbiAgLyoqXG4gICAqIFVuaXF1ZSAyNC1oZXhhZGVjaW1hbCBkaWdpdCBzdHJpbmcgdGhhdCBpZGVudGlmaWVzIHlvdXIgcHJvamVjdC5cbiAgICpcbiAgICogQHNjaGVtYSBDZm5DbG91ZEJhY2t1cFNuYXBzaG90UHJvcHMjUHJvamVjdElkXG4gICAqL1xuICByZWFkb25seSBwcm9qZWN0SWQ6IHN0cmluZztcblxuICAvKipcbiAgICogRmxhZyB0aGF0IGluZGljYXRlcyB3aGV0aGVyIHRoZSByZXNwb25zZSByZXR1cm5zIHRoZSB0b3RhbCBudW1iZXIgb2YgaXRlbXMgKCoqdG90YWxDb3VudCoqKSBpbiB0aGUgcmVzcG9uc2UuXG4gICAqXG4gICAqIEBzY2hlbWEgQ2ZuQ2xvdWRCYWNrdXBTbmFwc2hvdFByb3BzI0luY2x1ZGVDb3VudFxuICAgKi9cbiAgcmVhZG9ubHkgaW5jbHVkZUNvdW50PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogTnVtYmVyIG9mIGl0ZW1zIHRoYXQgdGhlIHJlc3BvbnNlIHJldHVybnMgcGVyIHBhZ2UuXG4gICAqXG4gICAqIEBzY2hlbWEgQ2ZuQ2xvdWRCYWNrdXBTbmFwc2hvdFByb3BzI0l0ZW1zUGVyUGFnZVxuICAgKi9cbiAgcmVhZG9ubHkgaXRlbXNQZXJQYWdlPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBMaXN0IHRoYXQgaW5jbHVkZXMgdGhlIHNuYXBzaG90cyBhbmQgdGhlIGNsb3VkIHByb3ZpZGVyIHRoYXQgc3RvcmVzIHRoZSBzbmFwc2hvdHMuIFRoZSByZXNvdXJjZSByZXR1cm5zIHRoaXMgcGFyYW1ldGVyIHdoZW4gYFwidHlwZVwiIDogXCJTSEFSREVEX0NMVVNURVJcImAuXG4gICAqXG4gICAqIEBzY2hlbWEgQ2ZuQ2xvdWRCYWNrdXBTbmFwc2hvdFByb3BzI01lbWJlcnNcbiAgICovXG4gIHJlYWRvbmx5IG1lbWJlcnM/OiBBcGlBdGxhc0Rpc2tCYWNrdXBTaGFyZGVkQ2x1c3RlclNuYXBzaG90TWVtYmVyVmlld1tdO1xuXG4gIC8qKlxuICAgKiBOdW1iZXIgb2YgdGhlIHBhZ2UgdGhhdCBkaXNwbGF5cyB0aGUgY3VycmVudCBzZXQgb2YgdGhlIHRvdGFsIG9iamVjdHMgdGhhdCB0aGUgcmVzcG9uc2UgcmV0dXJucy5cbiAgICpcbiAgICogQHNjaGVtYSBDZm5DbG91ZEJhY2t1cFNuYXBzaG90UHJvcHMjUGFnZU51bVxuICAgKi9cbiAgcmVhZG9ubHkgcGFnZU51bT86IG51bWJlcjtcblxuICAvKipcbiAgICogTGlzdCB0aGF0IGNvbnRhaW5zIHVuaXF1ZSBpZGVudGlmaWVycyBmb3IgdGhlIHBvbGljeSBpdGVtcy5cbiAgICpcbiAgICogQHNjaGVtYSBDZm5DbG91ZEJhY2t1cFNuYXBzaG90UHJvcHMjUG9saWN5SXRlbXNcbiAgICovXG4gIHJlYWRvbmx5IHBvbGljeUl0ZW1zPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIExpc3Qgb2YgcmV0dXJuZWQgZG9jdW1lbnRzIHRoYXQgTW9uZ29EQiBDbG91ZCBwcm92aWRlcyB3aGVuIGNvbXBsZXRpbmcgdGhpcyByZXF1ZXN0LlxuICAgKlxuICAgKiBAc2NoZW1hIENmbkNsb3VkQmFja3VwU25hcHNob3RQcm9wcyNSZXN1bHRzXG4gICAqL1xuICByZWFkb25seSByZXN1bHRzPzogQXBpQXRsYXNEaXNrQmFja3VwU2hhcmRlZENsdXN0ZXJTbmFwc2hvdFZpZXdbXTtcblxuICAvKipcbiAgICogTnVtYmVyIG9mIGRheXMgdGhhdCBNb25nb0RCIENsb3VkIHNob3VsZCByZXRhaW4gdGhlIG9uLWRlbWFuZCBzbmFwc2hvdC4gTXVzdCBiZSBhdCBsZWFzdCAqKjEqKlxuICAgKlxuICAgKiBAc2NoZW1hIENmbkNsb3VkQmFja3VwU25hcHNob3RQcm9wcyNSZXRlbnRpb25JbkRheXNcbiAgICovXG4gIHJlYWRvbmx5IHJldGVudGlvbkluRGF5cz86IG51bWJlcjtcblxuICAvKipcbiAgICogSHVtYW4tcmVhZGFibGUgbGFiZWwgdGhhdCBpZGVudGlmaWVzIHdoZW4gdGhpcyBzbmFwc2hvdCB0cmlnZ2Vycy5cbiAgICpcbiAgICogQHNjaGVtYSBDZm5DbG91ZEJhY2t1cFNuYXBzaG90UHJvcHMjU25hcHNob3RUeXBlXG4gICAqL1xuICByZWFkb25seSBzbmFwc2hvdFR5cGU/OiBDZm5DbG91ZEJhY2t1cFNuYXBzaG90UHJvcHNTbmFwc2hvdFR5cGU7XG5cbiAgLyoqXG4gICAqIE51bWJlciBvZiBkb2N1bWVudHMgcmV0dXJuZWQgaW4gdGhpcyByZXNwb25zZS5cbiAgICpcbiAgICogQHNjaGVtYSBDZm5DbG91ZEJhY2t1cFNuYXBzaG90UHJvcHMjVG90YWxDb3VudFxuICAgKi9cbiAgcmVhZG9ubHkgdG90YWxDb3VudD86IG51bWJlcjtcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnQ2ZuQ2xvdWRCYWNrdXBTbmFwc2hvdFByb3BzJyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9DZm5DbG91ZEJhY2t1cFNuYXBzaG90UHJvcHMoXG4gIG9iajogQ2ZuQ2xvdWRCYWNrdXBTbmFwc2hvdFByb3BzIHwgdW5kZWZpbmVkXG4pOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgUHJvZmlsZTogb2JqLnByb2ZpbGUsXG4gICAgSW5zdGFuY2VUeXBlOiBvYmouaW5zdGFuY2VUeXBlLFxuICAgIEluc3RhbmNlTmFtZTogb2JqLmluc3RhbmNlTmFtZSxcbiAgICBEZXNjcmlwdGlvbjogb2JqLmRlc2NyaXB0aW9uLFxuICAgIEZyZXF1ZW5jeVR5cGU6IG9iai5mcmVxdWVuY3lUeXBlLFxuICAgIFByb2plY3RJZDogb2JqLnByb2plY3RJZCxcbiAgICBJbmNsdWRlQ291bnQ6IG9iai5pbmNsdWRlQ291bnQsXG4gICAgSXRlbXNQZXJQYWdlOiBvYmouaXRlbXNQZXJQYWdlLFxuICAgIE1lbWJlcnM6IG9iai5tZW1iZXJzPy5tYXAoKHkpID0+XG4gICAgICB0b0pzb25fQXBpQXRsYXNEaXNrQmFja3VwU2hhcmRlZENsdXN0ZXJTbmFwc2hvdE1lbWJlclZpZXcoeSlcbiAgICApLFxuICAgIFBhZ2VOdW06IG9iai5wYWdlTnVtLFxuICAgIFBvbGljeUl0ZW1zOiBvYmoucG9saWN5SXRlbXM/Lm1hcCgoeSkgPT4geSksXG4gICAgUmVzdWx0czogb2JqLnJlc3VsdHM/Lm1hcCgoeSkgPT5cbiAgICAgIHRvSnNvbl9BcGlBdGxhc0Rpc2tCYWNrdXBTaGFyZGVkQ2x1c3RlclNuYXBzaG90Vmlldyh5KVxuICAgICksXG4gICAgUmV0ZW50aW9uSW5EYXlzOiBvYmoucmV0ZW50aW9uSW5EYXlzLFxuICAgIFNuYXBzaG90VHlwZTogb2JqLnNuYXBzaG90VHlwZSxcbiAgICBUb3RhbENvdW50OiBvYmoudG90YWxDb3VudCxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKFxuICAgIChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkID8gciA6IHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLFxuICAgIHt9XG4gICk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5cbi8qKlxuICogVHlwZSBvZiBpbnN0YW5jZSBzcGVjaWZpZWQgb24gdGhlIEluc3RhbmNlIE5hbWUuXG4gKlxuICogQHNjaGVtYSBDZm5DbG91ZEJhY2t1cFNuYXBzaG90UHJvcHNJbnN0YW5jZVR5cGVcbiAqL1xuZXhwb3J0IGVudW0gQ2ZuQ2xvdWRCYWNrdXBTbmFwc2hvdFByb3BzSW5zdGFuY2VUeXBlIHtcbiAgLyoqIGNsdXN0ZXIgKi9cbiAgQ0xVU1RFUiA9IFwiY2x1c3RlclwiLFxufVxuXG4vKipcbiAqIEh1bWFuLXJlYWRhYmxlIGxhYmVsIHRoYXQgaWRlbnRpZmllcyBob3cgb2Z0ZW4gdGhpcyBzbmFwc2hvdCB0cmlnZ2Vycy5cbiAqXG4gKiBAc2NoZW1hIENmbkNsb3VkQmFja3VwU25hcHNob3RQcm9wc0ZyZXF1ZW5jeVR5cGVcbiAqL1xuZXhwb3J0IGVudW0gQ2ZuQ2xvdWRCYWNrdXBTbmFwc2hvdFByb3BzRnJlcXVlbmN5VHlwZSB7XG4gIC8qKiBob3VybHkgKi9cbiAgSE9VUkxZID0gXCJob3VybHlcIixcbiAgLyoqIGRhaWx5ICovXG4gIERBSUxZID0gXCJkYWlseVwiLFxuICAvKiogd2Vla2x5ICovXG4gIFdFRUtMWSA9IFwid2Vla2x5XCIsXG4gIC8qKiBtb250aGx5ICovXG4gIE1PTlRITFkgPSBcIm1vbnRobHlcIixcbn1cblxuLyoqXG4gKiBAc2NoZW1hIEFwaUF0bGFzRGlza0JhY2t1cFNoYXJkZWRDbHVzdGVyU25hcHNob3RNZW1iZXJWaWV3XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXBpQXRsYXNEaXNrQmFja3VwU2hhcmRlZENsdXN0ZXJTbmFwc2hvdE1lbWJlclZpZXcge1xuICAvKipcbiAgICogSHVtYW4tcmVhZGFibGUgbGFiZWwgdGhhdCBpZGVudGlmaWVzIHRoZSBjbG91ZCBwcm92aWRlciB0aGF0IHN0b3JlcyB0aGlzIHNuYXBzaG90LiBUaGUgcmVzb3VyY2UgcmV0dXJucyB0aGlzIHBhcmFtZXRlciB3aGVuIGBcInR5cGVcIjogXCJyZXBsaWNhU2V0XCIuYFxuICAgKlxuICAgKiBAc2NoZW1hIEFwaUF0bGFzRGlza0JhY2t1cFNoYXJkZWRDbHVzdGVyU25hcHNob3RNZW1iZXJWaWV3I0Nsb3VkUHJvdmlkZXJcbiAgICovXG4gIHJlYWRvbmx5IGNsb3VkUHJvdmlkZXI/OiBBcGlBdGxhc0Rpc2tCYWNrdXBTaGFyZGVkQ2x1c3RlclNuYXBzaG90TWVtYmVyVmlld0Nsb3VkUHJvdmlkZXI7XG5cbiAgLyoqXG4gICAqIFVuaXF1ZSAyNC1oZXhhZGVjaW1hbCBkaWdpdCBzdHJpbmcgdGhhdCBpZGVudGlmaWVzIHRoZSBzbmFwc2hvdC5cbiAgICpcbiAgICogQHNjaGVtYSBBcGlBdGxhc0Rpc2tCYWNrdXBTaGFyZGVkQ2x1c3RlclNuYXBzaG90TWVtYmVyVmlldyNJZFxuICAgKi9cbiAgcmVhZG9ubHkgaWQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEh1bWFuLXJlYWRhYmxlIGxhYmVsIHRoYXQgaWRlbnRpZmllcyB0aGUgc2hhcmQgb3IgY29uZmlnIGhvc3QgZnJvbSB3aGljaCBNb25nb0RCIENsb3VkIHRvb2sgdGhpcyBzbmFwc2hvdC5cbiAgICpcbiAgICogQHNjaGVtYSBBcGlBdGxhc0Rpc2tCYWNrdXBTaGFyZGVkQ2x1c3RlclNuYXBzaG90TWVtYmVyVmlldyNSZXBsaWNhU2V0TmFtZVxuICAgKi9cbiAgcmVhZG9ubHkgcmVwbGljYVNldE5hbWU/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ0FwaUF0bGFzRGlza0JhY2t1cFNoYXJkZWRDbHVzdGVyU25hcHNob3RNZW1iZXJWaWV3JyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9BcGlBdGxhc0Rpc2tCYWNrdXBTaGFyZGVkQ2x1c3RlclNuYXBzaG90TWVtYmVyVmlldyhcbiAgb2JqOiBBcGlBdGxhc0Rpc2tCYWNrdXBTaGFyZGVkQ2x1c3RlclNuYXBzaG90TWVtYmVyVmlldyB8IHVuZGVmaW5lZFxuKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgIENsb3VkUHJvdmlkZXI6IG9iai5jbG91ZFByb3ZpZGVyLFxuICAgIElkOiBvYmouaWQsXG4gICAgUmVwbGljYVNldE5hbWU6IG9iai5yZXBsaWNhU2V0TmFtZSxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKFxuICAgIChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkID8gciA6IHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLFxuICAgIHt9XG4gICk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5cbi8qKlxuICogQHNjaGVtYSBBcGlBdGxhc0Rpc2tCYWNrdXBTaGFyZGVkQ2x1c3RlclNuYXBzaG90Vmlld1xuICovXG5leHBvcnQgaW50ZXJmYWNlIEFwaUF0bGFzRGlza0JhY2t1cFNoYXJkZWRDbHVzdGVyU25hcHNob3RWaWV3IHtcbiAgLyoqXG4gICAqIERhdGUgYW5kIHRpbWUgd2hlbiBNb25nb0RCIENsb3VkIHRvb2sgdGhlIHNuYXBzaG90LiBUaGlzIHBhcmFtZXRlciBleHByZXNzZXMgaXRzIHZhbHVlIGluIHRoZSBJU08gODYwMSB0aW1lc3RhbXAgZm9ybWF0IGluIFVUQy5cbiAgICpcbiAgICogQHNjaGVtYSBBcGlBdGxhc0Rpc2tCYWNrdXBTaGFyZGVkQ2x1c3RlclNuYXBzaG90VmlldyNDcmVhdGVkQXRcbiAgICovXG4gIHJlYWRvbmx5IGNyZWF0ZWRBdD86IHN0cmluZztcblxuICAvKipcbiAgICogSHVtYW4tcmVhZGFibGUgcGhyYXNlIG9yIHNlbnRlbmNlIHRoYXQgZXhwbGFpbnMgdGhlIHB1cnBvc2Ugb2YgdGhlIHNuYXBzaG90LiBUaGUgcmVzb3VyY2UgcmV0dXJucyB0aGlzIHBhcmFtZXRlciB3aGVuIGBcInN0YXR1c1wiOiBcIm9uRGVtYW5kXCJgLlxuICAgKlxuICAgKiBAc2NoZW1hIEFwaUF0bGFzRGlza0JhY2t1cFNoYXJkZWRDbHVzdGVyU25hcHNob3RWaWV3I0Rlc2NyaXB0aW9uXG4gICAqL1xuICByZWFkb25seSBkZXNjcmlwdGlvbj86IHN0cmluZztcblxuICAvKipcbiAgICogRGF0ZSBhbmQgdGltZSB3aGVuIE1vbmdvREIgQ2xvdWQgZGVsZXRlcyB0aGUgc25hcHNob3QuIFRoaXMgcGFyYW1ldGVyIGV4cHJlc3NlcyBpdHMgdmFsdWUgaW4gdGhlIElTTyA4NjAxIHRpbWVzdGFtcCBmb3JtYXQgaW4gVVRDLlxuICAgKlxuICAgKiBAc2NoZW1hIEFwaUF0bGFzRGlza0JhY2t1cFNoYXJkZWRDbHVzdGVyU25hcHNob3RWaWV3I0V4cGlyZXNBdFxuICAgKi9cbiAgcmVhZG9ubHkgZXhwaXJlc0F0Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBIdW1hbi1yZWFkYWJsZSBsYWJlbCB0aGF0IGlkZW50aWZpZXMgaG93IG9mdGVuIHRoaXMgc25hcHNob3QgdHJpZ2dlcnMuXG4gICAqXG4gICAqIEBzY2hlbWEgQXBpQXRsYXNEaXNrQmFja3VwU2hhcmRlZENsdXN0ZXJTbmFwc2hvdFZpZXcjRnJlcXVlbmN5VHlwZVxuICAgKi9cbiAgcmVhZG9ubHkgZnJlcXVlbmN5VHlwZT86IEFwaUF0bGFzRGlza0JhY2t1cFNoYXJkZWRDbHVzdGVyU25hcHNob3RWaWV3RnJlcXVlbmN5VHlwZTtcblxuICAvKipcbiAgICogVW5pcXVlIDI0LWhleGFkZWNpbWFsIGRpZ2l0IHN0cmluZyB0aGF0IGlkZW50aWZpZXMgdGhlIHNuYXBzaG90LlxuICAgKlxuICAgKiBAc2NoZW1hIEFwaUF0bGFzRGlza0JhY2t1cFNoYXJkZWRDbHVzdGVyU25hcHNob3RWaWV3I0lkXG4gICAqL1xuICByZWFkb25seSBpZD86IHN0cmluZztcblxuICAvKipcbiAgICogVW5pcXVlIHN0cmluZyB0aGF0IGlkZW50aWZpZXMgdGhlIEFtYXpvbiBXZWIgU2VydmljZXMgKEFXUykgS2V5IE1hbmFnZW1lbnQgU2VydmljZSAoS01TKSBDdXN0b21lciBNYXN0ZXIgS2V5IChDTUspIHVzZWQgdG8gZW5jcnlwdCB0aGUgc25hcHNob3QuIFRoZSByZXNvdXJjZSByZXR1cm5zIHRoaXMgdmFsdWUgd2hlbiBgXCJlbmNyeXB0aW9uRW5hYmxlZFwiIDogdHJ1ZWAuXG4gICAqXG4gICAqIEBzY2hlbWEgQXBpQXRsYXNEaXNrQmFja3VwU2hhcmRlZENsdXN0ZXJTbmFwc2hvdFZpZXcjTWFzdGVyS2V5VVVJRFxuICAgKi9cbiAgcmVhZG9ubHkgbWFzdGVyS2V5VXVpZD86IHN0cmluZztcblxuICAvKipcbiAgICogTGlzdCB0aGF0IGluY2x1ZGVzIHRoZSBzbmFwc2hvdHMgYW5kIHRoZSBjbG91ZCBwcm92aWRlciB0aGF0IHN0b3JlcyB0aGUgc25hcHNob3RzLiBUaGUgcmVzb3VyY2UgcmV0dXJucyB0aGlzIHBhcmFtZXRlciB3aGVuIGBcInR5cGVcIiA6IFwiU0hBUkRFRF9DTFVTVEVSXCJgLlxuICAgKlxuICAgKiBAc2NoZW1hIEFwaUF0bGFzRGlza0JhY2t1cFNoYXJkZWRDbHVzdGVyU25hcHNob3RWaWV3I01lbWJlcnNcbiAgICovXG4gIHJlYWRvbmx5IG1lbWJlcnM/OiBBcGlBdGxhc0Rpc2tCYWNrdXBTaGFyZGVkQ2x1c3RlclNuYXBzaG90TWVtYmVyVmlld1tdO1xuXG4gIC8qKlxuICAgKiBWZXJzaW9uIG9mIHRoZSBNb25nb0RCIGhvc3QgdGhhdCB0aGlzIHNuYXBzaG90IGJhY2tzIHVwLlxuICAgKlxuICAgKiBAc2NoZW1hIEFwaUF0bGFzRGlza0JhY2t1cFNoYXJkZWRDbHVzdGVyU25hcHNob3RWaWV3I01vbmdvZFZlcnNpb25cbiAgICovXG4gIHJlYWRvbmx5IG1vbmdvZFZlcnNpb24/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIExpc3QgdGhhdCBjb250YWlucyB1bmlxdWUgaWRlbnRpZmllcnMgZm9yIHRoZSBwb2xpY3kgaXRlbXMuXG4gICAqXG4gICAqIEBzY2hlbWEgQXBpQXRsYXNEaXNrQmFja3VwU2hhcmRlZENsdXN0ZXJTbmFwc2hvdFZpZXcjUG9saWN5SXRlbXNcbiAgICovXG4gIHJlYWRvbmx5IHBvbGljeUl0ZW1zPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIExpc3QgdGhhdCBjb250YWlucyB0aGUgdW5pcXVlIGlkZW50aWZpZXJzIG9mIHRoZSBzbmFwc2hvdHMgY3JlYXRlZCBmb3IgdGhlIHNoYXJkcyBhbmQgY29uZmlnIGhvc3QgZm9yIGEgc2hhcmRlZCBjbHVzdGVyLiBUaGUgcmVzb3VyY2UgcmV0dXJucyB0aGlzIHBhcmFtZXRlciB3aGVuIGBcInR5cGVcIjogXCJTSEFSREVEX0NMVVNURVJcImAuIFRoZXNlIGlkZW50aWZpZXJzIHNob3VsZCBtYXRjaCB0aGUgb25lcyBzcGVjaWZpZWQgaW4gdGhlICoqbWVtYmVyc1tuXS5pZCoqIHBhcmFtZXRlcnMuIFRoaXMgYWxsb3dzIHlvdSB0byBtYXAgYSBzbmFwc2hvdCB0byBpdHMgc2hhcmQgb3IgY29uZmlnIGhvc3QgbmFtZS5cbiAgICpcbiAgICogQHNjaGVtYSBBcGlBdGxhc0Rpc2tCYWNrdXBTaGFyZGVkQ2x1c3RlclNuYXBzaG90VmlldyNTbmFwc2hvdElkc1xuICAgKi9cbiAgcmVhZG9ubHkgc25hcHNob3RJZHM/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogSHVtYW4tcmVhZGFibGUgbGFiZWwgdGhhdCBpZGVudGlmaWVzIHdoZW4gdGhpcyBzbmFwc2hvdCB0cmlnZ2Vycy5cbiAgICpcbiAgICogQHNjaGVtYSBBcGlBdGxhc0Rpc2tCYWNrdXBTaGFyZGVkQ2x1c3RlclNuYXBzaG90VmlldyNTbmFwc2hvdFR5cGVcbiAgICovXG4gIHJlYWRvbmx5IHNuYXBzaG90VHlwZT86IEFwaUF0bGFzRGlza0JhY2t1cFNoYXJkZWRDbHVzdGVyU25hcHNob3RWaWV3U25hcHNob3RUeXBlO1xuXG4gIC8qKlxuICAgKiBIdW1hbi1yZWFkYWJsZSBsYWJlbCB0aGF0IGluZGljYXRlcyB0aGUgc3RhZ2Ugb2YgdGhlIGJhY2t1cCBwcm9jZXNzIGZvciB0aGlzIHNuYXBzaG90LlxuICAgKlxuICAgKiBAc2NoZW1hIEFwaUF0bGFzRGlza0JhY2t1cFNoYXJkZWRDbHVzdGVyU25hcHNob3RWaWV3I1N0YXR1c1xuICAgKi9cbiAgcmVhZG9ubHkgc3RhdHVzPzogQXBpQXRsYXNEaXNrQmFja3VwU2hhcmRlZENsdXN0ZXJTbmFwc2hvdFZpZXdTdGF0dXM7XG5cbiAgLyoqXG4gICAqIE51bWJlciBvZiBieXRlcyB0YWtlbiB0byBzdG9yZSB0aGUgYmFja3VwIHNuYXBzaG90LlxuICAgKlxuICAgKiBAc2NoZW1hIEFwaUF0bGFzRGlza0JhY2t1cFNoYXJkZWRDbHVzdGVyU25hcHNob3RWaWV3I1N0b3JhZ2VTaXplQnl0ZXNcbiAgICovXG4gIHJlYWRvbmx5IHN0b3JhZ2VTaXplQnl0ZXM/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEh1bWFuLXJlYWRhYmxlIGxhYmVsIHRoYXQgY2F0ZWdvcml6ZXMgdGhlIGNsdXN0ZXIgYXMgYSByZXBsaWNhIHNldCBvciBzaGFyZGVkIGNsdXN0ZXIuXG4gICAqXG4gICAqIEBzY2hlbWEgQXBpQXRsYXNEaXNrQmFja3VwU2hhcmRlZENsdXN0ZXJTbmFwc2hvdFZpZXcjVHlwZVxuICAgKi9cbiAgcmVhZG9ubHkgdHlwZT86IEFwaUF0bGFzRGlza0JhY2t1cFNoYXJkZWRDbHVzdGVyU25hcHNob3RWaWV3VHlwZTtcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnQXBpQXRsYXNEaXNrQmFja3VwU2hhcmRlZENsdXN0ZXJTbmFwc2hvdFZpZXcnIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX0FwaUF0bGFzRGlza0JhY2t1cFNoYXJkZWRDbHVzdGVyU25hcHNob3RWaWV3KFxuICBvYmo6IEFwaUF0bGFzRGlza0JhY2t1cFNoYXJkZWRDbHVzdGVyU25hcHNob3RWaWV3IHwgdW5kZWZpbmVkXG4pOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgQ3JlYXRlZEF0OiBvYmouY3JlYXRlZEF0LFxuICAgIERlc2NyaXB0aW9uOiBvYmouZGVzY3JpcHRpb24sXG4gICAgRXhwaXJlc0F0OiBvYmouZXhwaXJlc0F0LFxuICAgIEZyZXF1ZW5jeVR5cGU6IG9iai5mcmVxdWVuY3lUeXBlLFxuICAgIElkOiBvYmouaWQsXG4gICAgTWFzdGVyS2V5VVVJRDogb2JqLm1hc3RlcktleVV1aWQsXG4gICAgTWVtYmVyczogb2JqLm1lbWJlcnM/Lm1hcCgoeSkgPT5cbiAgICAgIHRvSnNvbl9BcGlBdGxhc0Rpc2tCYWNrdXBTaGFyZGVkQ2x1c3RlclNuYXBzaG90TWVtYmVyVmlldyh5KVxuICAgICksXG4gICAgTW9uZ29kVmVyc2lvbjogb2JqLm1vbmdvZFZlcnNpb24sXG4gICAgUG9saWN5SXRlbXM6IG9iai5wb2xpY3lJdGVtcz8ubWFwKCh5KSA9PiB5KSxcbiAgICBTbmFwc2hvdElkczogb2JqLnNuYXBzaG90SWRzPy5tYXAoKHkpID0+IHkpLFxuICAgIFNuYXBzaG90VHlwZTogb2JqLnNuYXBzaG90VHlwZSxcbiAgICBTdGF0dXM6IG9iai5zdGF0dXMsXG4gICAgU3RvcmFnZVNpemVCeXRlczogb2JqLnN0b3JhZ2VTaXplQnl0ZXMsXG4gICAgVHlwZTogb2JqLnR5cGUsXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZShcbiAgICAociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCA/IHIgOiB7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSxcbiAgICB7fVxuICApO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIEh1bWFuLXJlYWRhYmxlIGxhYmVsIHRoYXQgaWRlbnRpZmllcyB3aGVuIHRoaXMgc25hcHNob3QgdHJpZ2dlcnMuXG4gKlxuICogQHNjaGVtYSBDZm5DbG91ZEJhY2t1cFNuYXBzaG90UHJvcHNTbmFwc2hvdFR5cGVcbiAqL1xuZXhwb3J0IGVudW0gQ2ZuQ2xvdWRCYWNrdXBTbmFwc2hvdFByb3BzU25hcHNob3RUeXBlIHtcbiAgLyoqIG9uRGVtYW5kICovXG4gIE9OX0RFTUFORCA9IFwib25EZW1hbmRcIixcbiAgLyoqIHNjaGVkdWxlZCAqL1xuICBTQ0hFRFVMRUQgPSBcInNjaGVkdWxlZFwiLFxufVxuXG4vKipcbiAqIEh1bWFuLXJlYWRhYmxlIGxhYmVsIHRoYXQgaWRlbnRpZmllcyB0aGUgY2xvdWQgcHJvdmlkZXIgdGhhdCBzdG9yZXMgdGhpcyBzbmFwc2hvdC4gVGhlIHJlc291cmNlIHJldHVybnMgdGhpcyBwYXJhbWV0ZXIgd2hlbiBgXCJ0eXBlXCI6IFwicmVwbGljYVNldFwiLmBcbiAqXG4gKiBAc2NoZW1hIEFwaUF0bGFzRGlza0JhY2t1cFNoYXJkZWRDbHVzdGVyU25hcHNob3RNZW1iZXJWaWV3Q2xvdWRQcm92aWRlclxuICovXG5leHBvcnQgZW51bSBBcGlBdGxhc0Rpc2tCYWNrdXBTaGFyZGVkQ2x1c3RlclNuYXBzaG90TWVtYmVyVmlld0Nsb3VkUHJvdmlkZXIge1xuICAvKiogQVdTICovXG4gIEFXUyA9IFwiQVdTXCIsXG4gIC8qKiBBWlVSRSAqL1xuICBBWlVSRSA9IFwiQVpVUkVcIixcbiAgLyoqIEdDUCAqL1xuICBHQ1AgPSBcIkdDUFwiLFxufVxuXG4vKipcbiAqIEh1bWFuLXJlYWRhYmxlIGxhYmVsIHRoYXQgaWRlbnRpZmllcyBob3cgb2Z0ZW4gdGhpcyBzbmFwc2hvdCB0cmlnZ2Vycy5cbiAqXG4gKiBAc2NoZW1hIEFwaUF0bGFzRGlza0JhY2t1cFNoYXJkZWRDbHVzdGVyU25hcHNob3RWaWV3RnJlcXVlbmN5VHlwZVxuICovXG5leHBvcnQgZW51bSBBcGlBdGxhc0Rpc2tCYWNrdXBTaGFyZGVkQ2x1c3RlclNuYXBzaG90Vmlld0ZyZXF1ZW5jeVR5cGUge1xuICAvKiogaG91cmx5ICovXG4gIEhPVVJMWSA9IFwiaG91cmx5XCIsXG4gIC8qKiBkYWlseSAqL1xuICBEQUlMWSA9IFwiZGFpbHlcIixcbiAgLyoqIHdlZWtseSAqL1xuICBXRUVLTFkgPSBcIndlZWtseVwiLFxuICAvKiogbW9udGhseSAqL1xuICBNT05USExZID0gXCJtb250aGx5XCIsXG59XG5cbi8qKlxuICogSHVtYW4tcmVhZGFibGUgbGFiZWwgdGhhdCBpZGVudGlmaWVzIHdoZW4gdGhpcyBzbmFwc2hvdCB0cmlnZ2Vycy5cbiAqXG4gKiBAc2NoZW1hIEFwaUF0bGFzRGlza0JhY2t1cFNoYXJkZWRDbHVzdGVyU25hcHNob3RWaWV3U25hcHNob3RUeXBlXG4gKi9cbmV4cG9ydCBlbnVtIEFwaUF0bGFzRGlza0JhY2t1cFNoYXJkZWRDbHVzdGVyU25hcHNob3RWaWV3U25hcHNob3RUeXBlIHtcbiAgLyoqIG9uRGVtYW5kICovXG4gIE9OX0RFTUFORCA9IFwib25EZW1hbmRcIixcbiAgLyoqIHNjaGVkdWxlZCAqL1xuICBTQ0hFRFVMRUQgPSBcInNjaGVkdWxlZFwiLFxufVxuXG4vKipcbiAqIEh1bWFuLXJlYWRhYmxlIGxhYmVsIHRoYXQgaW5kaWNhdGVzIHRoZSBzdGFnZSBvZiB0aGUgYmFja3VwIHByb2Nlc3MgZm9yIHRoaXMgc25hcHNob3QuXG4gKlxuICogQHNjaGVtYSBBcGlBdGxhc0Rpc2tCYWNrdXBTaGFyZGVkQ2x1c3RlclNuYXBzaG90Vmlld1N0YXR1c1xuICovXG5leHBvcnQgZW51bSBBcGlBdGxhc0Rpc2tCYWNrdXBTaGFyZGVkQ2x1c3RlclNuYXBzaG90Vmlld1N0YXR1cyB7XG4gIC8qKiBxdWV1ZWQgKi9cbiAgUVVFVUVEID0gXCJxdWV1ZWRcIixcbiAgLyoqIGluUHJvZ3Jlc3MgKi9cbiAgSU5fUFJPR1JFU1MgPSBcImluUHJvZ3Jlc3NcIixcbiAgLyoqIGNvbXBsZXRlZCAqL1xuICBDT01QTEVURUQgPSBcImNvbXBsZXRlZFwiLFxuICAvKiogZmFpbGVkICovXG4gIEZBSUxFRCA9IFwiZmFpbGVkXCIsXG59XG5cbi8qKlxuICogSHVtYW4tcmVhZGFibGUgbGFiZWwgdGhhdCBjYXRlZ29yaXplcyB0aGUgY2x1c3RlciBhcyBhIHJlcGxpY2Egc2V0IG9yIHNoYXJkZWQgY2x1c3Rlci5cbiAqXG4gKiBAc2NoZW1hIEFwaUF0bGFzRGlza0JhY2t1cFNoYXJkZWRDbHVzdGVyU25hcHNob3RWaWV3VHlwZVxuICovXG5leHBvcnQgZW51bSBBcGlBdGxhc0Rpc2tCYWNrdXBTaGFyZGVkQ2x1c3RlclNuYXBzaG90Vmlld1R5cGUge1xuICAvKiogUkVQTElDQV9TRVQgKi9cbiAgUkVQTElDQV9TRVQgPSBcIlJFUExJQ0FfU0VUXCIsXG4gIC8qKiBTSEFSREVEX0NMVVNURVIgKi9cbiAgU0hBUkRFRF9DTFVTVEVSID0gXCJTSEFSREVEX0NMVVNURVJcIixcbn1cblxuLyoqXG4gKiBBIENsb3VkRm9ybWF0aW9uIGBNb25nb0RCOjpBdGxhczo6Q2xvdWRCYWNrdXBTbmFwc2hvdGBcbiAqXG4gKiBAY2xvdWRmb3JtYXRpb25SZXNvdXJjZSBNb25nb0RCOjpBdGxhczo6Q2xvdWRCYWNrdXBTbmFwc2hvdFxuICogQHN0YWJpbGl0eSBleHRlcm5hbFxuICovXG5leHBvcnQgY2xhc3MgQ2ZuQ2xvdWRCYWNrdXBTbmFwc2hvdCBleHRlbmRzIGNkay5DZm5SZXNvdXJjZSB7XG4gIC8qKlxuICAgKiBUaGUgQ2xvdWRGb3JtYXRpb24gcmVzb3VyY2UgdHlwZSBuYW1lIGZvciB0aGlzIHJlc291cmNlIGNsYXNzLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBDRk5fUkVTT1VSQ0VfVFlQRV9OQU1FID1cbiAgICBcIk1vbmdvREI6OkF0bGFzOjpDbG91ZEJhY2t1cFNuYXBzaG90XCI7XG5cbiAgLyoqXG4gICAqIFJlc291cmNlIHByb3BzLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHByb3BzOiBDZm5DbG91ZEJhY2t1cFNuYXBzaG90UHJvcHM7XG5cbiAgLyoqXG4gICAqIEF0dHJpYnV0ZSBgTW9uZ29EQjo6QXRsYXM6OkNsb3VkQmFja3VwU25hcHNob3QuU25hcHNob3RJZGBcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBhdHRyU25hcHNob3RJZDogc3RyaW5nO1xuICAvKipcbiAgICogQXR0cmlidXRlIGBNb25nb0RCOjpBdGxhczo6Q2xvdWRCYWNrdXBTbmFwc2hvdC5TbmFwc2hvdElkc2BcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBhdHRyU25hcHNob3RJZHM6IHN0cmluZ1tdO1xuICAvKipcbiAgICogQXR0cmlidXRlIGBNb25nb0RCOjpBdGxhczo6Q2xvdWRCYWNrdXBTbmFwc2hvdC5NYXN0ZXJLZXlVVUlEYFxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGF0dHJNYXN0ZXJLZXlVVUlEOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBBdHRyaWJ1dGUgYE1vbmdvREI6OkF0bGFzOjpDbG91ZEJhY2t1cFNuYXBzaG90LlR5cGVgXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgYXR0clR5cGU6IHN0cmluZztcbiAgLyoqXG4gICAqIEF0dHJpYnV0ZSBgTW9uZ29EQjo6QXRsYXM6OkNsb3VkQmFja3VwU25hcHNob3QuRXhwaXJlc0F0YFxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGF0dHJFeHBpcmVzQXQ6IHN0cmluZztcbiAgLyoqXG4gICAqIEF0dHJpYnV0ZSBgTW9uZ29EQjo6QXRsYXM6OkNsb3VkQmFja3VwU25hcHNob3QuU3RvcmFnZVNpemVCeXRlc2BcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBhdHRyU3RvcmFnZVNpemVCeXRlczogc3RyaW5nO1xuICAvKipcbiAgICogQXR0cmlidXRlIGBNb25nb0RCOjpBdGxhczo6Q2xvdWRCYWNrdXBTbmFwc2hvdC5JZGBcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBhdHRySWQ6IHN0cmluZztcbiAgLyoqXG4gICAqIEF0dHJpYnV0ZSBgTW9uZ29EQjo6QXRsYXM6OkNsb3VkQmFja3VwU25hcHNob3QuQ3JlYXRlZEF0YFxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGF0dHJDcmVhdGVkQXQ6IHN0cmluZztcbiAgLyoqXG4gICAqIEF0dHJpYnV0ZSBgTW9uZ29EQjo6QXRsYXM6OkNsb3VkQmFja3VwU25hcHNob3QuQ2xvdWRQcm92aWRlcmBcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBhdHRyQ2xvdWRQcm92aWRlcjogc3RyaW5nO1xuICAvKipcbiAgICogQXR0cmlidXRlIGBNb25nb0RCOjpBdGxhczo6Q2xvdWRCYWNrdXBTbmFwc2hvdC5Nb25nb2RWZXJzaW9uYFxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGF0dHJNb25nb2RWZXJzaW9uOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBBdHRyaWJ1dGUgYE1vbmdvREI6OkF0bGFzOjpDbG91ZEJhY2t1cFNuYXBzaG90LlJlcGxpY2FTZXROYW1lYFxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGF0dHJSZXBsaWNhU2V0TmFtZTogc3RyaW5nO1xuICAvKipcbiAgICogQXR0cmlidXRlIGBNb25nb0RCOjpBdGxhczo6Q2xvdWRCYWNrdXBTbmFwc2hvdC5TdGF0dXNgXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgYXR0clN0YXR1czogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSBuZXcgYE1vbmdvREI6OkF0bGFzOjpDbG91ZEJhY2t1cFNuYXBzaG90YC5cbiAgICpcbiAgICogQHBhcmFtIHNjb3BlIC0gc2NvcGUgaW4gd2hpY2ggdGhpcyByZXNvdXJjZSBpcyBkZWZpbmVkXG4gICAqIEBwYXJhbSBpZCAgICAtIHNjb3BlZCBpZCBvZiB0aGUgcmVzb3VyY2VcbiAgICogQHBhcmFtIHByb3BzIC0gcmVzb3VyY2UgcHJvcGVydGllc1xuICAgKi9cbiAgY29uc3RydWN0b3IoXG4gICAgc2NvcGU6IGNvbnN0cnVjdHMuQ29uc3RydWN0LFxuICAgIGlkOiBzdHJpbmcsXG4gICAgcHJvcHM6IENmbkNsb3VkQmFja3VwU25hcHNob3RQcm9wc1xuICApIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHtcbiAgICAgIHR5cGU6IENmbkNsb3VkQmFja3VwU25hcHNob3QuQ0ZOX1JFU09VUkNFX1RZUEVfTkFNRSxcbiAgICAgIHByb3BlcnRpZXM6IHRvSnNvbl9DZm5DbG91ZEJhY2t1cFNuYXBzaG90UHJvcHMocHJvcHMpISxcbiAgICB9KTtcblxuICAgIHRoaXMucHJvcHMgPSBwcm9wcztcblxuICAgIHRoaXMuYXR0clNuYXBzaG90SWQgPSBjZGsuVG9rZW4uYXNTdHJpbmcodGhpcy5nZXRBdHQoXCJTbmFwc2hvdElkXCIpKTtcbiAgICB0aGlzLmF0dHJTbmFwc2hvdElkcyA9IGNkay5Ub2tlbi5hc0xpc3QodGhpcy5nZXRBdHQoXCJTbmFwc2hvdElkc1wiKSk7XG4gICAgdGhpcy5hdHRyTWFzdGVyS2V5VVVJRCA9IGNkay5Ub2tlbi5hc1N0cmluZyh0aGlzLmdldEF0dChcIk1hc3RlcktleVVVSURcIikpO1xuICAgIHRoaXMuYXR0clR5cGUgPSBjZGsuVG9rZW4uYXNTdHJpbmcodGhpcy5nZXRBdHQoXCJUeXBlXCIpKTtcbiAgICB0aGlzLmF0dHJFeHBpcmVzQXQgPSBjZGsuVG9rZW4uYXNTdHJpbmcodGhpcy5nZXRBdHQoXCJFeHBpcmVzQXRcIikpO1xuICAgIHRoaXMuYXR0clN0b3JhZ2VTaXplQnl0ZXMgPSBjZGsuVG9rZW4uYXNTdHJpbmcoXG4gICAgICB0aGlzLmdldEF0dChcIlN0b3JhZ2VTaXplQnl0ZXNcIilcbiAgICApO1xuICAgIHRoaXMuYXR0cklkID0gY2RrLlRva2VuLmFzU3RyaW5nKHRoaXMuZ2V0QXR0KFwiSWRcIikpO1xuICAgIHRoaXMuYXR0ckNyZWF0ZWRBdCA9IGNkay5Ub2tlbi5hc1N0cmluZyh0aGlzLmdldEF0dChcIkNyZWF0ZWRBdFwiKSk7XG4gICAgdGhpcy5hdHRyQ2xvdWRQcm92aWRlciA9IGNkay5Ub2tlbi5hc1N0cmluZyh0aGlzLmdldEF0dChcIkNsb3VkUHJvdmlkZXJcIikpO1xuICAgIHRoaXMuYXR0ck1vbmdvZFZlcnNpb24gPSBjZGsuVG9rZW4uYXNTdHJpbmcodGhpcy5nZXRBdHQoXCJNb25nb2RWZXJzaW9uXCIpKTtcbiAgICB0aGlzLmF0dHJSZXBsaWNhU2V0TmFtZSA9IGNkay5Ub2tlbi5hc1N0cmluZyh0aGlzLmdldEF0dChcIlJlcGxpY2FTZXROYW1lXCIpKTtcbiAgICB0aGlzLmF0dHJTdGF0dXMgPSBjZGsuVG9rZW4uYXNTdHJpbmcodGhpcy5nZXRBdHQoXCJTdGF0dXNcIikpO1xuICB9XG59XG4iXX0=