awscdk-resources-mongodbatlas
Version:
MongoDB Atlas CDK Construct Library for AWS CloudFormation Resources
140 lines • 27.5 kB
JavaScript
;
var _a;
Object.defineProperty(exports, "__esModule", { value: true });
exports.CfnBackupCompliancePolicy = exports.ScheduledPolicyItemRetentionUnit = exports.OnDemandPolicyItemRetentionUnit = void 0;
exports.toJson_CfnBackupCompliancePolicyProps = toJson_CfnBackupCompliancePolicyProps;
exports.toJson_OnDemandPolicyItem = toJson_OnDemandPolicyItem;
exports.toJson_ScheduledPolicyItem = toJson_ScheduledPolicyItem;
const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
// Generated by cdk-import
const cdk = require("aws-cdk-lib");
/**
* Converts an object of type 'CfnBackupCompliancePolicyProps' to JSON representation.
*/
/* eslint-disable max-len, quote-props */
function toJson_CfnBackupCompliancePolicyProps(obj) {
if (obj === undefined) {
return undefined;
}
const result = {
Profile: obj.profile,
ProjectId: obj.projectId,
AuthorizedEmail: obj.authorizedEmail,
AuthorizedUserFirstName: obj.authorizedUserFirstName,
AuthorizedUserLastName: obj.authorizedUserLastName,
CopyProtectionEnabled: obj.copyProtectionEnabled,
EncryptionAtRestEnabled: obj.encryptionAtRestEnabled,
RestoreWindowDays: obj.restoreWindowDays,
OnDemandPolicyItem: toJson_OnDemandPolicyItem(obj.onDemandPolicyItem),
PitEnabled: obj.pitEnabled,
PolicyItemHourly: toJson_ScheduledPolicyItem(obj.policyItemHourly),
PolicyItemDaily: toJson_ScheduledPolicyItem(obj.policyItemDaily),
PolicyItemWeekly: obj.policyItemWeekly?.map((y) => toJson_ScheduledPolicyItem(y)),
PolicyItemMonthly: obj.policyItemMonthly?.map((y) => toJson_ScheduledPolicyItem(y)),
PolicyItemYearly: obj.policyItemYearly?.map((y) => toJson_ScheduledPolicyItem(y)),
};
// filter undefined values
return Object.entries(result).reduce((r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), {});
}
/**
* Converts an object of type 'OnDemandPolicyItem' to JSON representation.
*/
/* eslint-disable max-len, quote-props */
function toJson_OnDemandPolicyItem(obj) {
if (obj === undefined) {
return undefined;
}
const result = {
Id: obj.id,
FrequencyInterval: obj.frequencyInterval,
FrequencyType: obj.frequencyType,
RetentionUnit: obj.retentionUnit,
RetentionValue: obj.retentionValue,
};
// filter undefined values
return Object.entries(result).reduce((r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), {});
}
/**
* Converts an object of type 'ScheduledPolicyItem' to JSON representation.
*/
/* eslint-disable max-len, quote-props */
function toJson_ScheduledPolicyItem(obj) {
if (obj === undefined) {
return undefined;
}
const result = {
Id: obj.id,
FrequencyType: obj.frequencyType,
FrequencyInterval: obj.frequencyInterval,
RetentionUnit: obj.retentionUnit,
RetentionValue: obj.retentionValue,
};
// 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 */
/**
* Unit of time in which MongoDB Cloud measures snapshot retention. Required when OnDemandPolicyItem is provided.
*
* @schema OnDemandPolicyItemRetentionUnit
*/
var OnDemandPolicyItemRetentionUnit;
(function (OnDemandPolicyItemRetentionUnit) {
/** days */
OnDemandPolicyItemRetentionUnit["DAYS"] = "days";
/** weeks */
OnDemandPolicyItemRetentionUnit["WEEKS"] = "weeks";
/** months */
OnDemandPolicyItemRetentionUnit["MONTHS"] = "months";
/** years */
OnDemandPolicyItemRetentionUnit["YEARS"] = "years";
})(OnDemandPolicyItemRetentionUnit || (exports.OnDemandPolicyItemRetentionUnit = OnDemandPolicyItemRetentionUnit = {}));
/**
* Unit of time in which MongoDB Cloud measures snapshot retention. Required when the policy item is provided.
*
* @schema ScheduledPolicyItemRetentionUnit
*/
var ScheduledPolicyItemRetentionUnit;
(function (ScheduledPolicyItemRetentionUnit) {
/** days */
ScheduledPolicyItemRetentionUnit["DAYS"] = "days";
/** weeks */
ScheduledPolicyItemRetentionUnit["WEEKS"] = "weeks";
/** months */
ScheduledPolicyItemRetentionUnit["MONTHS"] = "months";
/** years */
ScheduledPolicyItemRetentionUnit["YEARS"] = "years";
})(ScheduledPolicyItemRetentionUnit || (exports.ScheduledPolicyItemRetentionUnit = ScheduledPolicyItemRetentionUnit = {}));
/**
* A CloudFormation `MongoDB::Atlas::BackupCompliancePolicy`
*
* @cloudformationResource MongoDB::Atlas::BackupCompliancePolicy
* @stability external
*/
class CfnBackupCompliancePolicy extends cdk.CfnResource {
/**
* Create a new `MongoDB::Atlas::BackupCompliancePolicy`.
*
* @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: CfnBackupCompliancePolicy.CFN_RESOURCE_TYPE_NAME,
properties: toJson_CfnBackupCompliancePolicyProps(props),
});
this.props = props;
this.attrState = cdk.Token.asString(this.getAtt("State"));
this.attrUpdatedDate = cdk.Token.asString(this.getAtt("UpdatedDate"));
this.attrUpdatedUser = cdk.Token.asString(this.getAtt("UpdatedUser"));
}
}
exports.CfnBackupCompliancePolicy = CfnBackupCompliancePolicy;
_a = JSII_RTTI_SYMBOL_1;
CfnBackupCompliancePolicy[_a] = { fqn: "awscdk-resources-mongodbatlas.CfnBackupCompliancePolicy", version: "4.0.0" };
/**
* The CloudFormation resource type name for this resource class.
*/
CfnBackupCompliancePolicy.CFN_RESOURCE_TYPE_NAME = "MongoDB::Atlas::BackupCompliancePolicy";
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbDEtcmVzb3VyY2VzL2JhY2t1cC1jb21wbGlhbmNlLXBvbGljeS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBMkhBLHNGQWtDQztBQWlERCw4REFrQkM7QUFpREQsZ0VBa0JDOztBQW5TRCwwQkFBMEI7QUFDMUIsbUNBQW1DO0FBc0huQzs7R0FFRztBQUNILHlDQUF5QztBQUN6QyxTQUFnQixxQ0FBcUMsQ0FDbkQsR0FBK0M7SUFFL0MsSUFBSSxHQUFHLEtBQUssU0FBUyxFQUFFLENBQUM7UUFDdEIsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztJQUNELE1BQU0sTUFBTSxHQUFHO1FBQ2IsT0FBTyxFQUFFLEdBQUcsQ0FBQyxPQUFPO1FBQ3BCLFNBQVMsRUFBRSxHQUFHLENBQUMsU0FBUztRQUN4QixlQUFlLEVBQUUsR0FBRyxDQUFDLGVBQWU7UUFDcEMsdUJBQXVCLEVBQUUsR0FBRyxDQUFDLHVCQUF1QjtRQUNwRCxzQkFBc0IsRUFBRSxHQUFHLENBQUMsc0JBQXNCO1FBQ2xELHFCQUFxQixFQUFFLEdBQUcsQ0FBQyxxQkFBcUI7UUFDaEQsdUJBQXVCLEVBQUUsR0FBRyxDQUFDLHVCQUF1QjtRQUNwRCxpQkFBaUIsRUFBRSxHQUFHLENBQUMsaUJBQWlCO1FBQ3hDLGtCQUFrQixFQUFFLHlCQUF5QixDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQztRQUNyRSxVQUFVLEVBQUUsR0FBRyxDQUFDLFVBQVU7UUFDMUIsZ0JBQWdCLEVBQUUsMEJBQTBCLENBQUMsR0FBRyxDQUFDLGdCQUFnQixDQUFDO1FBQ2xFLGVBQWUsRUFBRSwwQkFBMEIsQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDO1FBQ2hFLGdCQUFnQixFQUFFLEdBQUcsQ0FBQyxnQkFBZ0IsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUNoRCwwQkFBMEIsQ0FBQyxDQUFDLENBQUMsQ0FDOUI7UUFDRCxpQkFBaUIsRUFBRSxHQUFHLENBQUMsaUJBQWlCLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FDbEQsMEJBQTBCLENBQUMsQ0FBQyxDQUFDLENBQzlCO1FBQ0QsZ0JBQWdCLEVBQUUsR0FBRyxDQUFDLGdCQUFnQixFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQ2hELDBCQUEwQixDQUFDLENBQUMsQ0FBQyxDQUM5QjtLQUNGLENBQUM7SUFDRiwwQkFBMEI7SUFDMUIsT0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FDbEMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQzNELEVBQUUsQ0FDSCxDQUFDO0FBQ0osQ0FBQztBQTZDRDs7R0FFRztBQUNILHlDQUF5QztBQUN6QyxTQUFnQix5QkFBeUIsQ0FDdkMsR0FBbUM7SUFFbkMsSUFBSSxHQUFHLEtBQUssU0FBUyxFQUFFLENBQUM7UUFDdEIsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztJQUNELE1BQU0sTUFBTSxHQUFHO1FBQ2IsRUFBRSxFQUFFLEdBQUcsQ0FBQyxFQUFFO1FBQ1YsaUJBQWlCLEVBQUUsR0FBRyxDQUFDLGlCQUFpQjtRQUN4QyxhQUFhLEVBQUUsR0FBRyxDQUFDLGFBQWE7UUFDaEMsYUFBYSxFQUFFLEdBQUcsQ0FBQyxhQUFhO1FBQ2hDLGNBQWMsRUFBRSxHQUFHLENBQUMsY0FBYztLQUNuQyxDQUFDO0lBQ0YsMEJBQTBCO0lBQzFCLE9BQU8sTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLENBQ2xDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUMzRCxFQUFFLENBQ0gsQ0FBQztBQUNKLENBQUM7QUE2Q0Q7O0dBRUc7QUFDSCx5Q0FBeUM7QUFDekMsU0FBZ0IsMEJBQTBCLENBQ3hDLEdBQW9DO0lBRXBDLElBQUksR0FBRyxLQUFLLFNBQVMsRUFBRSxDQUFDO1FBQ3RCLE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUM7SUFDRCxNQUFNLE1BQU0sR0FBRztRQUNiLEVBQUUsRUFBRSxHQUFHLENBQUMsRUFBRTtRQUNWLGFBQWEsRUFBRSxHQUFHLENBQUMsYUFBYTtRQUNoQyxpQkFBaUIsRUFBRSxHQUFHLENBQUMsaUJBQWlCO1FBQ3hDLGFBQWEsRUFBRSxHQUFHLENBQUMsYUFBYTtRQUNoQyxjQUFjLEVBQUUsR0FBRyxDQUFDLGNBQWM7S0FDbkMsQ0FBQztJQUNGLDBCQUEwQjtJQUMxQixPQUFPLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUNsQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFDM0QsRUFBRSxDQUNILENBQUM7QUFDSixDQUFDO0FBQ0Qsd0NBQXdDO0FBRXhDOzs7O0dBSUc7QUFDSCxJQUFZLCtCQVNYO0FBVEQsV0FBWSwrQkFBK0I7SUFDekMsV0FBVztJQUNYLGdEQUFhLENBQUE7SUFDYixZQUFZO0lBQ1osa0RBQWUsQ0FBQTtJQUNmLGFBQWE7SUFDYixvREFBaUIsQ0FBQTtJQUNqQixZQUFZO0lBQ1osa0RBQWUsQ0FBQTtBQUNqQixDQUFDLEVBVFcsK0JBQStCLCtDQUEvQiwrQkFBK0IsUUFTMUM7QUFFRDs7OztHQUlHO0FBQ0gsSUFBWSxnQ0FTWDtBQVRELFdBQVksZ0NBQWdDO0lBQzFDLFdBQVc7SUFDWCxpREFBYSxDQUFBO0lBQ2IsWUFBWTtJQUNaLG1EQUFlLENBQUE7SUFDZixhQUFhO0lBQ2IscURBQWlCLENBQUE7SUFDakIsWUFBWTtJQUNaLG1EQUFlLENBQUE7QUFDakIsQ0FBQyxFQVRXLGdDQUFnQyxnREFBaEMsZ0NBQWdDLFFBUzNDO0FBRUQ7Ozs7O0dBS0c7QUFDSCxNQUFhLHlCQUEwQixTQUFRLEdBQUcsQ0FBQyxXQUFXO0lBeUI1RDs7Ozs7O09BTUc7SUFDSCxZQUNFLEtBQTJCLEVBQzNCLEVBQVUsRUFDVixLQUFxQztRQUVyQyxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRTtZQUNmLElBQUksRUFBRSx5QkFBeUIsQ0FBQyxzQkFBc0I7WUFDdEQsVUFBVSxFQUFFLHFDQUFxQyxDQUFDLEtBQUssQ0FBRTtTQUMxRCxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUVuQixJQUFJLENBQUMsU0FBUyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztRQUMxRCxJQUFJLENBQUMsZUFBZSxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQztRQUN0RSxJQUFJLENBQUMsZUFBZSxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQztJQUN4RSxDQUFDOztBQS9DSCw4REFnREM7OztBQS9DQzs7R0FFRztBQUNvQixnREFBc0IsR0FDM0Msd0NBQXdDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBHZW5lcmF0ZWQgYnkgY2RrLWltcG9ydFxuaW1wb3J0ICogYXMgY2RrIGZyb20gXCJhd3MtY2RrLWxpYlwiO1xuaW1wb3J0ICogYXMgY29uc3RydWN0cyBmcm9tIFwiY29uc3RydWN0c1wiO1xuXG4vKipcbiAqIFJlc291cmNlIGZvciBtYW5hZ2luZyBNb25nb0RCIEF0bGFzIEJhY2t1cCBDb21wbGlhbmNlIFBvbGljeS4gQmFja3VwIENvbXBsaWFuY2UgUG9saWN5IHByZXZlbnRzIGFueSB1c2VyLCByZWdhcmRsZXNzIG9mIHJvbGUsIGZyb20gbW9kaWZ5aW5nIG9yIGRlbGV0aW5nIHNwZWNpZmljIGNsdXN0ZXIgc2V0dGluZ3MsIGJhY2t1cHMsIGFuZCBiYWNrdXAgY29uZmlndXJhdGlvbnMuIFdoZW4gZW5hYmxlZCwgdGhlIEJhY2t1cCBDb21wbGlhbmNlIFBvbGljeSB3aWxsIGJlIGFwcGxpZWQgYXMgdGhlIG1pbmltdW0gcG9saWN5IGZvciBhbGwgY2x1c3RlcnMgYW5kIGJhY2t1cHMgaW4gdGhlIHByb2plY3QuXG4gKlxuICogQHNjaGVtYSBDZm5CYWNrdXBDb21wbGlhbmNlUG9saWN5UHJvcHNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDZm5CYWNrdXBDb21wbGlhbmNlUG9saWN5UHJvcHMge1xuICAvKipcbiAgICogUHJvZmlsZSB1c2VkIHRvIHByb3ZpZGUgY3JlZGVudGlhbHMgaW5mb3JtYXRpb24sIChhIHNlY3JldCB3aXRoIHRoZSBjZm4vYXRsYXMvcHJvZmlsZS97UHJvZmlsZX0sIGlzIHJlcXVpcmVkKSwgaWYgbm90IHByb3ZpZGVkIGRlZmF1bHQgaXMgdXNlZFxuICAgKlxuICAgKiBAc2NoZW1hIENmbkJhY2t1cENvbXBsaWFuY2VQb2xpY3lQcm9wcyNQcm9maWxlXG4gICAqL1xuICByZWFkb25seSBwcm9maWxlPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgdW5pcXVlIGlkZW50aWZpZXIgb2YgdGhlIHByb2plY3QgZm9yIHRoZSBCYWNrdXAgQ29tcGxpYW5jZSBQb2xpY3kuXG4gICAqXG4gICAqIEBzY2hlbWEgQ2ZuQmFja3VwQ29tcGxpYW5jZVBvbGljeVByb3BzI1Byb2plY3RJZFxuICAgKi9cbiAgcmVhZG9ubHkgcHJvamVjdElkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEVtYWlsIGFkZHJlc3Mgb2YgdGhlIHVzZXIgYXV0aG9yaXplZCB0byB1cGRhdGUgdGhlIEJhY2t1cCBDb21wbGlhbmNlIFBvbGljeSBzZXR0aW5ncy5cbiAgICpcbiAgICogQHNjaGVtYSBDZm5CYWNrdXBDb21wbGlhbmNlUG9saWN5UHJvcHMjQXV0aG9yaXplZEVtYWlsXG4gICAqL1xuICByZWFkb25seSBhdXRob3JpemVkRW1haWw6IHN0cmluZztcblxuICAvKipcbiAgICogRmlyc3QgbmFtZSBvZiB0aGUgdXNlciBhdXRob3JpemVkIHRvIHVwZGF0ZSB0aGUgQmFja3VwIENvbXBsaWFuY2UgUG9saWN5IHNldHRpbmdzLlxuICAgKlxuICAgKiBAc2NoZW1hIENmbkJhY2t1cENvbXBsaWFuY2VQb2xpY3lQcm9wcyNBdXRob3JpemVkVXNlckZpcnN0TmFtZVxuICAgKi9cbiAgcmVhZG9ubHkgYXV0aG9yaXplZFVzZXJGaXJzdE5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogTGFzdCBuYW1lIG9mIHRoZSB1c2VyIGF1dGhvcml6ZWQgdG8gdXBkYXRlIHRoZSBCYWNrdXAgQ29tcGxpYW5jZSBQb2xpY3kgc2V0dGluZ3MuXG4gICAqXG4gICAqIEBzY2hlbWEgQ2ZuQmFja3VwQ29tcGxpYW5jZVBvbGljeVByb3BzI0F1dGhvcml6ZWRVc2VyTGFzdE5hbWVcbiAgICovXG4gIHJlYWRvbmx5IGF1dGhvcml6ZWRVc2VyTGFzdE5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogRmxhZyB0aGF0IGluZGljYXRlcyB3aGV0aGVyIHRvIGVuYWJsZSBhZGRpdGlvbmFsIGNvcHkgcHJvdGVjdGlvbiBmb3IgdGhlIGNsdXN0ZXIuIElmIGVuYWJsZWQsIGNsb3VkIGJhY2t1cCBzbmFwc2hvdHMgY2Fubm90IGJlIGRlbGV0ZWQgdW50aWwgdGhlIHJldGVudGlvbiBwZXJpb2QgZXhwaXJlcy4gRGVmYXVsdHMgdG8gZmFsc2UgaWYgbm90IHNwZWNpZmllZC5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2UgaWYgbm90IHNwZWNpZmllZC5cbiAgICogQHNjaGVtYSBDZm5CYWNrdXBDb21wbGlhbmNlUG9saWN5UHJvcHMjQ29weVByb3RlY3Rpb25FbmFibGVkXG4gICAqL1xuICByZWFkb25seSBjb3B5UHJvdGVjdGlvbkVuYWJsZWQ/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBGbGFnIHRoYXQgaW5kaWNhdGVzIHdoZXRoZXIgRW5jcnlwdGlvbiBhdCBSZXN0IHVzaW5nIEN1c3RvbWVyIEtleSBNYW5hZ2VtZW50IGlzIHJlcXVpcmVkIGZvciBhbGwgY2x1c3RlcnMgd2l0aCBhIEJhY2t1cCBDb21wbGlhbmNlIFBvbGljeS4gRGVmYXVsdHMgdG8gZmFsc2UgaWYgbm90IHNwZWNpZmllZC5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2UgaWYgbm90IHNwZWNpZmllZC5cbiAgICogQHNjaGVtYSBDZm5CYWNrdXBDb21wbGlhbmNlUG9saWN5UHJvcHMjRW5jcnlwdGlvbkF0UmVzdEVuYWJsZWRcbiAgICovXG4gIHJlYWRvbmx5IGVuY3J5cHRpb25BdFJlc3RFbmFibGVkPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogTnVtYmVyIG9mIGRheXMgYmFjayBpbiB0aW1lIHlvdSBjYW4gcmVzdG9yZSB0byB3aXRoIENvbnRpbnVvdXMgQ2xvdWQgQmFja3VwIGFjY3VyYWN5LiBNdXN0IGJlIGEgcG9zaXRpdmUsIG5vbi16ZXJvIGludGVnZXIuIFRoaXMgZmllbGQgaXMgb3B0aW9uYWwgYW5kIGNvbXB1dGVkIGZyb20gdGhlIEFQSS5cbiAgICpcbiAgICogQHNjaGVtYSBDZm5CYWNrdXBDb21wbGlhbmNlUG9saWN5UHJvcHMjUmVzdG9yZVdpbmRvd0RheXNcbiAgICovXG4gIHJlYWRvbmx5IHJlc3RvcmVXaW5kb3dEYXlzPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBPbi1kZW1hbmQgYmFja3VwIHBvbGljeSBpdGVtIGNvbmZpZ3VyYXRpb24uXG4gICAqXG4gICAqIEBzY2hlbWEgQ2ZuQmFja3VwQ29tcGxpYW5jZVBvbGljeVByb3BzI09uRGVtYW5kUG9saWN5SXRlbVxuICAgKi9cbiAgcmVhZG9ubHkgb25EZW1hbmRQb2xpY3lJdGVtPzogT25EZW1hbmRQb2xpY3lJdGVtO1xuXG4gIC8qKlxuICAgKiBGbGFnIHRoYXQgaW5kaWNhdGVzIHdoZXRoZXIgdGhlIGNsdXN0ZXIgdXNlcyBDb250aW51b3VzIENsb3VkIEJhY2t1cC4gSWYgZW5hYmxlZCwgY2xvdWQgYmFja3VwIHNuYXBzaG90cyBhcmUgdGFrZW4gZXZlcnkgNiBob3Vycy4gRGVmYXVsdHMgdG8gZmFsc2UgaWYgbm90IHNwZWNpZmllZC5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2UgaWYgbm90IHNwZWNpZmllZC5cbiAgICogQHNjaGVtYSBDZm5CYWNrdXBDb21wbGlhbmNlUG9saWN5UHJvcHMjUGl0RW5hYmxlZFxuICAgKi9cbiAgcmVhZG9ubHkgcGl0RW5hYmxlZD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEhvdXJseSBiYWNrdXAgcG9saWN5IGl0ZW0gY29uZmlndXJhdGlvbi4gT25seSBvbmUgaG91cmx5IHBvbGljeSBpdGVtIGlzIGFsbG93ZWQuXG4gICAqXG4gICAqIEBzY2hlbWEgQ2ZuQmFja3VwQ29tcGxpYW5jZVBvbGljeVByb3BzI1BvbGljeUl0ZW1Ib3VybHlcbiAgICovXG4gIHJlYWRvbmx5IHBvbGljeUl0ZW1Ib3VybHk/OiBTY2hlZHVsZWRQb2xpY3lJdGVtO1xuXG4gIC8qKlxuICAgKiBEYWlseSBiYWNrdXAgcG9saWN5IGl0ZW0gY29uZmlndXJhdGlvbi4gT25seSBvbmUgZGFpbHkgcG9saWN5IGl0ZW0gaXMgYWxsb3dlZC5cbiAgICpcbiAgICogQHNjaGVtYSBDZm5CYWNrdXBDb21wbGlhbmNlUG9saWN5UHJvcHMjUG9saWN5SXRlbURhaWx5XG4gICAqL1xuICByZWFkb25seSBwb2xpY3lJdGVtRGFpbHk/OiBTY2hlZHVsZWRQb2xpY3lJdGVtO1xuXG4gIC8qKlxuICAgKiBXZWVrbHkgYmFja3VwIHBvbGljeSBpdGVtIGNvbmZpZ3VyYXRpb24uIE11bHRpcGxlIHdlZWtseSBwb2xpY3kgaXRlbXMgYXJlIGFsbG93ZWQuXG4gICAqXG4gICAqIEBzY2hlbWEgQ2ZuQmFja3VwQ29tcGxpYW5jZVBvbGljeVByb3BzI1BvbGljeUl0ZW1XZWVrbHlcbiAgICovXG4gIHJlYWRvbmx5IHBvbGljeUl0ZW1XZWVrbHk/OiBTY2hlZHVsZWRQb2xpY3lJdGVtW107XG5cbiAgLyoqXG4gICAqIE1vbnRobHkgYmFja3VwIHBvbGljeSBpdGVtIGNvbmZpZ3VyYXRpb24uIE11bHRpcGxlIG1vbnRobHkgcG9saWN5IGl0ZW1zIGFyZSBhbGxvd2VkLlxuICAgKlxuICAgKiBAc2NoZW1hIENmbkJhY2t1cENvbXBsaWFuY2VQb2xpY3lQcm9wcyNQb2xpY3lJdGVtTW9udGhseVxuICAgKi9cbiAgcmVhZG9ubHkgcG9saWN5SXRlbU1vbnRobHk/OiBTY2hlZHVsZWRQb2xpY3lJdGVtW107XG5cbiAgLyoqXG4gICAqIFllYXJseSBiYWNrdXAgcG9saWN5IGl0ZW0gY29uZmlndXJhdGlvbi4gTXVsdGlwbGUgeWVhcmx5IHBvbGljeSBpdGVtcyBhcmUgYWxsb3dlZC5cbiAgICpcbiAgICogQHNjaGVtYSBDZm5CYWNrdXBDb21wbGlhbmNlUG9saWN5UHJvcHMjUG9saWN5SXRlbVllYXJseVxuICAgKi9cbiAgcmVhZG9ubHkgcG9saWN5SXRlbVllYXJseT86IFNjaGVkdWxlZFBvbGljeUl0ZW1bXTtcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnQ2ZuQmFja3VwQ29tcGxpYW5jZVBvbGljeVByb3BzJyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9DZm5CYWNrdXBDb21wbGlhbmNlUG9saWN5UHJvcHMoXG4gIG9iajogQ2ZuQmFja3VwQ29tcGxpYW5jZVBvbGljeVByb3BzIHwgdW5kZWZpbmVkXG4pOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgUHJvZmlsZTogb2JqLnByb2ZpbGUsXG4gICAgUHJvamVjdElkOiBvYmoucHJvamVjdElkLFxuICAgIEF1dGhvcml6ZWRFbWFpbDogb2JqLmF1dGhvcml6ZWRFbWFpbCxcbiAgICBBdXRob3JpemVkVXNlckZpcnN0TmFtZTogb2JqLmF1dGhvcml6ZWRVc2VyRmlyc3ROYW1lLFxuICAgIEF1dGhvcml6ZWRVc2VyTGFzdE5hbWU6IG9iai5hdXRob3JpemVkVXNlckxhc3ROYW1lLFxuICAgIENvcHlQcm90ZWN0aW9uRW5hYmxlZDogb2JqLmNvcHlQcm90ZWN0aW9uRW5hYmxlZCxcbiAgICBFbmNyeXB0aW9uQXRSZXN0RW5hYmxlZDogb2JqLmVuY3J5cHRpb25BdFJlc3RFbmFibGVkLFxuICAgIFJlc3RvcmVXaW5kb3dEYXlzOiBvYmoucmVzdG9yZVdpbmRvd0RheXMsXG4gICAgT25EZW1hbmRQb2xpY3lJdGVtOiB0b0pzb25fT25EZW1hbmRQb2xpY3lJdGVtKG9iai5vbkRlbWFuZFBvbGljeUl0ZW0pLFxuICAgIFBpdEVuYWJsZWQ6IG9iai5waXRFbmFibGVkLFxuICAgIFBvbGljeUl0ZW1Ib3VybHk6IHRvSnNvbl9TY2hlZHVsZWRQb2xpY3lJdGVtKG9iai5wb2xpY3lJdGVtSG91cmx5KSxcbiAgICBQb2xpY3lJdGVtRGFpbHk6IHRvSnNvbl9TY2hlZHVsZWRQb2xpY3lJdGVtKG9iai5wb2xpY3lJdGVtRGFpbHkpLFxuICAgIFBvbGljeUl0ZW1XZWVrbHk6IG9iai5wb2xpY3lJdGVtV2Vla2x5Py5tYXAoKHkpID0+XG4gICAgICB0b0pzb25fU2NoZWR1bGVkUG9saWN5SXRlbSh5KVxuICAgICksXG4gICAgUG9saWN5SXRlbU1vbnRobHk6IG9iai5wb2xpY3lJdGVtTW9udGhseT8ubWFwKCh5KSA9PlxuICAgICAgdG9Kc29uX1NjaGVkdWxlZFBvbGljeUl0ZW0oeSlcbiAgICApLFxuICAgIFBvbGljeUl0ZW1ZZWFybHk6IG9iai5wb2xpY3lJdGVtWWVhcmx5Py5tYXAoKHkpID0+XG4gICAgICB0b0pzb25fU2NoZWR1bGVkUG9saWN5SXRlbSh5KVxuICAgICksXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZShcbiAgICAociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCA/IHIgOiB7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSxcbiAgICB7fVxuICApO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIE9uLWRlbWFuZCBiYWNrdXAgcG9saWN5IGl0ZW0gY29uZmlndXJhdGlvbi4gV2hlbiBwcm92aWRlZCwgRnJlcXVlbmN5SW50ZXJ2YWwsIFJldGVudGlvblVuaXQsIGFuZCBSZXRlbnRpb25WYWx1ZSBhcmUgcmVxdWlyZWQuXG4gKlxuICogQHNjaGVtYSBPbkRlbWFuZFBvbGljeUl0ZW1cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBPbkRlbWFuZFBvbGljeUl0ZW0ge1xuICAvKipcbiAgICogVW5pcXVlIGlkZW50aWZpZXIgb2YgdGhlIGJhY2t1cCBwb2xpY3kgaXRlbS5cbiAgICpcbiAgICogQHNjaGVtYSBPbkRlbWFuZFBvbGljeUl0ZW0jSWRcbiAgICovXG4gIHJlYWRvbmx5IGlkPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBOdW1iZXIgdGhhdCBpbmRpY2F0ZXMgdGhlIGZyZXF1ZW5jeSBpbnRlcnZhbCBmb3IgYSBzZXQgb2Ygc25hcHNob3RzLiBSZXF1aXJlZCB3aGVuIE9uRGVtYW5kUG9saWN5SXRlbSBpcyBwcm92aWRlZC5cbiAgICpcbiAgICogQHNjaGVtYSBPbkRlbWFuZFBvbGljeUl0ZW0jRnJlcXVlbmN5SW50ZXJ2YWxcbiAgICovXG4gIHJlYWRvbmx5IGZyZXF1ZW5jeUludGVydmFsPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBGcmVxdWVuY3kgYXNzb2NpYXRlZCB3aXRoIHRoZSBiYWNrdXAgcG9saWN5IGl0ZW0uIEZvciBvbi1kZW1hbmQgcG9saWNpZXMsIHRoZSBmcmVxdWVuY3kgdHlwZSBpcyAnb25kZW1hbmQnLiBUaGlzIGlzIGEgcmVhZC1vbmx5IHZhbHVlLlxuICAgKlxuICAgKiBAc2NoZW1hIE9uRGVtYW5kUG9saWN5SXRlbSNGcmVxdWVuY3lUeXBlXG4gICAqL1xuICByZWFkb25seSBmcmVxdWVuY3lUeXBlPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBVbml0IG9mIHRpbWUgaW4gd2hpY2ggTW9uZ29EQiBDbG91ZCBtZWFzdXJlcyBzbmFwc2hvdCByZXRlbnRpb24uIFJlcXVpcmVkIHdoZW4gT25EZW1hbmRQb2xpY3lJdGVtIGlzIHByb3ZpZGVkLlxuICAgKlxuICAgKiBAc2NoZW1hIE9uRGVtYW5kUG9saWN5SXRlbSNSZXRlbnRpb25Vbml0XG4gICAqL1xuICByZWFkb25seSByZXRlbnRpb25Vbml0PzogT25EZW1hbmRQb2xpY3lJdGVtUmV0ZW50aW9uVW5pdDtcblxuICAvKipcbiAgICogRHVyYXRpb24gaW4gZGF5cywgd2Vla3MsIG1vbnRocywgb3IgeWVhcnMgdGhhdCBNb25nb0RCIENsb3VkIHJldGFpbnMgdGhlIHNuYXBzaG90LiBSZXF1aXJlZCB3aGVuIE9uRGVtYW5kUG9saWN5SXRlbSBpcyBwcm92aWRlZC5cbiAgICpcbiAgICogQHNjaGVtYSBPbkRlbWFuZFBvbGljeUl0ZW0jUmV0ZW50aW9uVmFsdWVcbiAgICovXG4gIHJlYWRvbmx5IHJldGVudGlvblZhbHVlPzogbnVtYmVyO1xufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdPbkRlbWFuZFBvbGljeUl0ZW0nIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX09uRGVtYW5kUG9saWN5SXRlbShcbiAgb2JqOiBPbkRlbWFuZFBvbGljeUl0ZW0gfCB1bmRlZmluZWRcbik6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICBJZDogb2JqLmlkLFxuICAgIEZyZXF1ZW5jeUludGVydmFsOiBvYmouZnJlcXVlbmN5SW50ZXJ2YWwsXG4gICAgRnJlcXVlbmN5VHlwZTogb2JqLmZyZXF1ZW5jeVR5cGUsXG4gICAgUmV0ZW50aW9uVW5pdDogb2JqLnJldGVudGlvblVuaXQsXG4gICAgUmV0ZW50aW9uVmFsdWU6IG9iai5yZXRlbnRpb25WYWx1ZSxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKFxuICAgIChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkID8gciA6IHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLFxuICAgIHt9XG4gICk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5cbi8qKlxuICogU2NoZWR1bGVkIGJhY2t1cCBwb2xpY3kgaXRlbSBjb25maWd1cmF0aW9uIChob3VybHksIGRhaWx5LCB3ZWVrbHksIG1vbnRobHksIG9yIHllYXJseSkuIFdoZW4gcHJvdmlkZWQsIEZyZXF1ZW5jeUludGVydmFsLCBSZXRlbnRpb25Vbml0LCBhbmQgUmV0ZW50aW9uVmFsdWUgYXJlIHJlcXVpcmVkLlxuICpcbiAqIEBzY2hlbWEgU2NoZWR1bGVkUG9saWN5SXRlbVxuICovXG5leHBvcnQgaW50ZXJmYWNlIFNjaGVkdWxlZFBvbGljeUl0ZW0ge1xuICAvKipcbiAgICogVW5pcXVlIGlkZW50aWZpZXIgb2YgdGhlIGJhY2t1cCBwb2xpY3kgaXRlbS5cbiAgICpcbiAgICogQHNjaGVtYSBTY2hlZHVsZWRQb2xpY3lJdGVtI0lkXG4gICAqL1xuICByZWFkb25seSBpZD86IHN0cmluZztcblxuICAvKipcbiAgICogRnJlcXVlbmN5IGFzc29jaWF0ZWQgd2l0aCB0aGUgYmFja3VwIHBvbGljeSBpdGVtLiBPbmUgb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXM6IGhvdXJseSwgZGFpbHksIHdlZWtseSwgbW9udGhseSwgb3IgeWVhcmx5LiBUaGlzIGlzIGEgcmVhZC1vbmx5IHZhbHVlLlxuICAgKlxuICAgKiBAc2NoZW1hIFNjaGVkdWxlZFBvbGljeUl0ZW0jRnJlcXVlbmN5VHlwZVxuICAgKi9cbiAgcmVhZG9ubHkgZnJlcXVlbmN5VHlwZT86IHN0cmluZztcblxuICAvKipcbiAgICogRGVzaXJlZCBmcmVxdWVuY3kgb2YgdGhlIG5ldyBiYWNrdXAgcG9saWN5IGl0ZW0gc3BlY2lmaWVkIGJ5IGZyZXF1ZW5jeVR5cGUuIFJlcXVpcmVkIHdoZW4gdGhlIHBvbGljeSBpdGVtIGlzIHByb3ZpZGVkLlxuICAgKlxuICAgKiBAc2NoZW1hIFNjaGVkdWxlZFBvbGljeUl0ZW0jRnJlcXVlbmN5SW50ZXJ2YWxcbiAgICovXG4gIHJlYWRvbmx5IGZyZXF1ZW5jeUludGVydmFsPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBVbml0IG9mIHRpbWUgaW4gd2hpY2ggTW9uZ29EQiBDbG91ZCBtZWFzdXJlcyBzbmFwc2hvdCByZXRlbnRpb24uIFJlcXVpcmVkIHdoZW4gdGhlIHBvbGljeSBpdGVtIGlzIHByb3ZpZGVkLlxuICAgKlxuICAgKiBAc2NoZW1hIFNjaGVkdWxlZFBvbGljeUl0ZW0jUmV0ZW50aW9uVW5pdFxuICAgKi9cbiAgcmVhZG9ubHkgcmV0ZW50aW9uVW5pdD86IFNjaGVkdWxlZFBvbGljeUl0ZW1SZXRlbnRpb25Vbml0O1xuXG4gIC8qKlxuICAgKiBEdXJhdGlvbiBpbiBkYXlzLCB3ZWVrcywgbW9udGhzLCBvciB5ZWFycyB0aGF0IE1vbmdvREIgQ2xvdWQgcmV0YWlucyB0aGUgc25hcHNob3QuIFJlcXVpcmVkIHdoZW4gdGhlIHBvbGljeSBpdGVtIGlzIHByb3ZpZGVkLiBGb3IgbGVzcyBmcmVxdWVudCBwb2xpY3kgaXRlbXMsIE1vbmdvREIgQ2xvdWQgcmVxdWlyZXMgdGhhdCB5b3Ugc3BlY2lmeSBhIHZhbHVlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB0aGUgdmFsdWUgc3BlY2lmaWVkIGZvciBtb3JlIGZyZXF1ZW50IHBvbGljeSBpdGVtcy5cbiAgICpcbiAgICogQHNjaGVtYSBTY2hlZHVsZWRQb2xpY3lJdGVtI1JldGVudGlvblZhbHVlXG4gICAqL1xuICByZWFkb25seSByZXRlbnRpb25WYWx1ZT86IG51bWJlcjtcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnU2NoZWR1bGVkUG9saWN5SXRlbScgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fU2NoZWR1bGVkUG9saWN5SXRlbShcbiAgb2JqOiBTY2hlZHVsZWRQb2xpY3lJdGVtIHwgdW5kZWZpbmVkXG4pOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgSWQ6IG9iai5pZCxcbiAgICBGcmVxdWVuY3lUeXBlOiBvYmouZnJlcXVlbmN5VHlwZSxcbiAgICBGcmVxdWVuY3lJbnRlcnZhbDogb2JqLmZyZXF1ZW5jeUludGVydmFsLFxuICAgIFJldGVudGlvblVuaXQ6IG9iai5yZXRlbnRpb25Vbml0LFxuICAgIFJldGVudGlvblZhbHVlOiBvYmoucmV0ZW50aW9uVmFsdWUsXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZShcbiAgICAociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCA/IHIgOiB7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSxcbiAgICB7fVxuICApO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIFVuaXQgb2YgdGltZSBpbiB3aGljaCBNb25nb0RCIENsb3VkIG1lYXN1cmVzIHNuYXBzaG90IHJldGVudGlvbi4gUmVxdWlyZWQgd2hlbiBPbkRlbWFuZFBvbGljeUl0ZW0gaXMgcHJvdmlkZWQuXG4gKlxuICogQHNjaGVtYSBPbkRlbWFuZFBvbGljeUl0ZW1SZXRlbnRpb25Vbml0XG4gKi9cbmV4cG9ydCBlbnVtIE9uRGVtYW5kUG9saWN5SXRlbVJldGVudGlvblVuaXQge1xuICAvKiogZGF5cyAqL1xuICBEQVlTID0gXCJkYXlzXCIsXG4gIC8qKiB3ZWVrcyAqL1xuICBXRUVLUyA9IFwid2Vla3NcIixcbiAgLyoqIG1vbnRocyAqL1xuICBNT05USFMgPSBcIm1vbnRoc1wiLFxuICAvKiogeWVhcnMgKi9cbiAgWUVBUlMgPSBcInllYXJzXCIsXG59XG5cbi8qKlxuICogVW5pdCBvZiB0aW1lIGluIHdoaWNoIE1vbmdvREIgQ2xvdWQgbWVhc3VyZXMgc25hcHNob3QgcmV0ZW50aW9uLiBSZXF1aXJlZCB3aGVuIHRoZSBwb2xpY3kgaXRlbSBpcyBwcm92aWRlZC5cbiAqXG4gKiBAc2NoZW1hIFNjaGVkdWxlZFBvbGljeUl0ZW1SZXRlbnRpb25Vbml0XG4gKi9cbmV4cG9ydCBlbnVtIFNjaGVkdWxlZFBvbGljeUl0ZW1SZXRlbnRpb25Vbml0IHtcbiAgLyoqIGRheXMgKi9cbiAgREFZUyA9IFwiZGF5c1wiLFxuICAvKiogd2Vla3MgKi9cbiAgV0VFS1MgPSBcIndlZWtzXCIsXG4gIC8qKiBtb250aHMgKi9cbiAgTU9OVEhTID0gXCJtb250aHNcIixcbiAgLyoqIHllYXJzICovXG4gIFlFQVJTID0gXCJ5ZWFyc1wiLFxufVxuXG4vKipcbiAqIEEgQ2xvdWRGb3JtYXRpb24gYE1vbmdvREI6OkF0bGFzOjpCYWNrdXBDb21wbGlhbmNlUG9saWN5YFxuICpcbiAqIEBjbG91ZGZvcm1hdGlvblJlc291cmNlIE1vbmdvREI6OkF0bGFzOjpCYWNrdXBDb21wbGlhbmNlUG9saWN5XG4gKiBAc3RhYmlsaXR5IGV4dGVybmFsXG4gKi9cbmV4cG9ydCBjbGFzcyBDZm5CYWNrdXBDb21wbGlhbmNlUG9saWN5IGV4dGVuZHMgY2RrLkNmblJlc291cmNlIHtcbiAgLyoqXG4gICAqIFRoZSBDbG91ZEZvcm1hdGlvbiByZXNvdXJjZSB0eXBlIG5hbWUgZm9yIHRoaXMgcmVzb3VyY2UgY2xhc3MuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IENGTl9SRVNPVVJDRV9UWVBFX05BTUUgPVxuICAgIFwiTW9uZ29EQjo6QXRsYXM6OkJhY2t1cENvbXBsaWFuY2VQb2xpY3lcIjtcblxuICAvKipcbiAgICogUmVzb3VyY2UgcHJvcHMuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgcHJvcHM6IENmbkJhY2t1cENvbXBsaWFuY2VQb2xpY3lQcm9wcztcblxuICAvKipcbiAgICogQXR0cmlidXRlIGBNb25nb0RCOjpBdGxhczo6QmFja3VwQ29tcGxpYW5jZVBvbGljeS5TdGF0ZWBcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBhdHRyU3RhdGU6IHN0cmluZztcbiAgLyoqXG4gICAqIEF0dHJpYnV0ZSBgTW9uZ29EQjo6QXRsYXM6OkJhY2t1cENvbXBsaWFuY2VQb2xpY3kuVXBkYXRlZERhdGVgXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgYXR0clVwZGF0ZWREYXRlOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBBdHRyaWJ1dGUgYE1vbmdvREI6OkF0bGFzOjpCYWNrdXBDb21wbGlhbmNlUG9saWN5LlVwZGF0ZWRVc2VyYFxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGF0dHJVcGRhdGVkVXNlcjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSBuZXcgYE1vbmdvREI6OkF0bGFzOjpCYWNrdXBDb21wbGlhbmNlUG9saWN5YC5cbiAgICpcbiAgICogQHBhcmFtIHNjb3BlIC0gc2NvcGUgaW4gd2hpY2ggdGhpcyByZXNvdXJjZSBpcyBkZWZpbmVkXG4gICAqIEBwYXJhbSBpZCAgICAtIHNjb3BlZCBpZCBvZiB0aGUgcmVzb3VyY2VcbiAgICogQHBhcmFtIHByb3BzIC0gcmVzb3VyY2UgcHJvcGVydGllc1xuICAgKi9cbiAgY29uc3RydWN0b3IoXG4gICAgc2NvcGU6IGNvbnN0cnVjdHMuQ29uc3RydWN0LFxuICAgIGlkOiBzdHJpbmcsXG4gICAgcHJvcHM6IENmbkJhY2t1cENvbXBsaWFuY2VQb2xpY3lQcm9wc1xuICApIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHtcbiAgICAgIHR5cGU6IENmbkJhY2t1cENvbXBsaWFuY2VQb2xpY3kuQ0ZOX1JFU09VUkNFX1RZUEVfTkFNRSxcbiAgICAgIHByb3BlcnRpZXM6IHRvSnNvbl9DZm5CYWNrdXBDb21wbGlhbmNlUG9saWN5UHJvcHMocHJvcHMpISxcbiAgICB9KTtcblxuICAgIHRoaXMucHJvcHMgPSBwcm9wcztcblxuICAgIHRoaXMuYXR0clN0YXRlID0gY2RrLlRva2VuLmFzU3RyaW5nKHRoaXMuZ2V0QXR0KFwiU3RhdGVcIikpO1xuICAgIHRoaXMuYXR0clVwZGF0ZWREYXRlID0gY2RrLlRva2VuLmFzU3RyaW5nKHRoaXMuZ2V0QXR0KFwiVXBkYXRlZERhdGVcIikpO1xuICAgIHRoaXMuYXR0clVwZGF0ZWRVc2VyID0gY2RrLlRva2VuLmFzU3RyaW5nKHRoaXMuZ2V0QXR0KFwiVXBkYXRlZFVzZXJcIikpO1xuICB9XG59XG4iXX0=