@aws-cdk/aws-eks-v2-alpha
Version:
The CDK Construct Library for AWS::EKS
318 lines • 34.3 kB
JavaScript
;
var __runInitializers = (this && this.__runInitializers) || function (thisArg, initializers, value) {
var useValue = arguments.length > 2;
for (var i = 0; i < initializers.length; i++) {
value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);
}
return useValue ? value : void 0;
};
var __esDecorate = (this && this.__esDecorate) || function (ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {
function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; }
var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value";
var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null;
var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});
var _, done = false;
for (var i = decorators.length - 1; i >= 0; i--) {
var context = {};
for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p];
for (var p in contextIn.access) context.access[p] = contextIn.access[p];
context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); };
var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);
if (kind === "accessor") {
if (result === void 0) continue;
if (result === null || typeof result !== "object") throw new TypeError("Object expected");
if (_ = accept(result.get)) descriptor.get = _;
if (_ = accept(result.set)) descriptor.set = _;
if (_ = accept(result.init)) initializers.unshift(_);
}
else if (_ = accept(result)) {
if (kind === "field") initializers.unshift(_);
else descriptor[key] = _;
}
}
if (target) Object.defineProperty(target, contextIn.name, descriptor);
done = true;
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.AccessEntry = exports.AccessEntryType = exports.AccessPolicy = exports.AccessPolicyArn = exports.AccessScopeType = void 0;
const jsiiDeprecationWarnings = require("../.warnings.jsii.js");
const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
const aws_eks_1 = require("aws-cdk-lib/aws-eks");
const core_1 = require("aws-cdk-lib/core");
const metadata_resource_1 = require("aws-cdk-lib/core/lib/metadata-resource");
const prop_injectable_1 = require("aws-cdk-lib/core/lib/prop-injectable");
/**
* Represents the scope type of an access policy.
*
* The scope type determines the level of access granted by the policy.
*
* @export
* @enum {string}
*/
var AccessScopeType;
(function (AccessScopeType) {
/**
* The policy applies to a specific namespace within the cluster.
*/
AccessScopeType["NAMESPACE"] = "namespace";
/**
* The policy applies to the entire cluster.
*/
AccessScopeType["CLUSTER"] = "cluster";
})(AccessScopeType || (exports.AccessScopeType = AccessScopeType = {}));
/**
* Represents an Amazon EKS Access Policy ARN.
*
* Amazon EKS Access Policies are used to control access to Amazon EKS clusters.
*
* @see https://docs.aws.amazon.com/eks/latest/userguide/access-policies.html
*/
class AccessPolicyArn {
policyName;
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-eks-v2-alpha.AccessPolicyArn", version: "2.223.0-alpha.0" };
/**
* The Amazon EKS Admin Policy. This access policy includes permissions that grant an IAM principal
* most permissions to resources. When associated to an access entry, its access scope is typically
* one or more Kubernetes namespaces.
*/
static AMAZON_EKS_ADMIN_POLICY = AccessPolicyArn.of('AmazonEKSAdminPolicy');
/**
* The Amazon EKS Cluster Admin Policy. This access policy includes permissions that grant an IAM
* principal administrator access to a cluster. When associated to an access entry, its access scope
* is typically the cluster, rather than a Kubernetes namespace.
*/
static AMAZON_EKS_CLUSTER_ADMIN_POLICY = AccessPolicyArn.of('AmazonEKSClusterAdminPolicy');
/**
* The Amazon EKS Admin View Policy. This access policy includes permissions that grant an IAM principal
* access to list/view all resources in a cluster.
*/
static AMAZON_EKS_ADMIN_VIEW_POLICY = AccessPolicyArn.of('AmazonEKSAdminViewPolicy');
/**
* The Amazon EKS Edit Policy. This access policy includes permissions that allow an IAM principal
* to edit most Kubernetes resources.
*/
static AMAZON_EKS_EDIT_POLICY = AccessPolicyArn.of('AmazonEKSEditPolicy');
/**
* The Amazon EKS View Policy. This access policy includes permissions that grant an IAM principal
* access to list/view all resources in a cluster.
*/
static AMAZON_EKS_VIEW_POLICY = AccessPolicyArn.of('AmazonEKSViewPolicy');
/**
* Creates a new instance of the AccessPolicy class with the specified policy name.
* @param policyName The name of the access policy.
* @returns A new instance of the AccessPolicy class.
*/
static of(policyName) { return new AccessPolicyArn(policyName); }
/**
* The Amazon Resource Name (ARN) of the access policy.
*/
policyArn;
/**
* Constructs a new instance of the `AccessEntry` class.
*
* @param policyName - The name of the Amazon EKS access policy. This is used to construct the policy ARN.
*/
constructor(policyName) {
this.policyName = policyName;
this.policyArn = `arn:${core_1.Aws.PARTITION}:eks::aws:cluster-access-policy/${policyName}`;
}
}
exports.AccessPolicyArn = AccessPolicyArn;
/**
* Represents an Amazon EKS Access Policy that implements the IAccessPolicy interface.
*
* @implements {IAccessPolicy}
*/
class AccessPolicy {
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-eks-v2-alpha.AccessPolicy", version: "2.223.0-alpha.0" };
/**
* Import AccessPolicy by name.
*/
static fromAccessPolicyName(policyName, options) {
try {
jsiiDeprecationWarnings._aws_cdk_aws_eks_v2_alpha_AccessPolicyNameOptions(options);
}
catch (error) {
if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
Error.captureStackTrace(error, this.fromAccessPolicyName);
}
throw error;
}
class Import {
policy = `arn:${core_1.Aws.PARTITION}:eks::aws:cluster-access-policy/${policyName}`;
accessScope = {
type: options.accessScopeType,
namespaces: options.namespaces,
};
}
return new Import();
}
/**
* The scope of the access policy, which determines the level of access granted.
*/
accessScope;
/**
* The access policy itself, which defines the specific permissions.
*/
policy;
/**
* Constructs a new instance of the AccessPolicy class.
*
* @param {AccessPolicyProps} props - The properties for configuring the access policy.
*/
constructor(props) {
try {
jsiiDeprecationWarnings._aws_cdk_aws_eks_v2_alpha_AccessPolicyProps(props);
}
catch (error) {
if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
Error.captureStackTrace(error, AccessPolicy);
}
throw error;
}
this.accessScope = props.accessScope;
this.policy = props.policy.policyArn;
}
}
exports.AccessPolicy = AccessPolicy;
/**
* Represents the different types of access entries that can be used in an Amazon EKS cluster.
*
* @enum {string}
*/
var AccessEntryType;
(function (AccessEntryType) {
/**
* Represents a standard access entry.
*/
AccessEntryType["STANDARD"] = "STANDARD";
/**
* Represents a Fargate Linux access entry.
*/
AccessEntryType["FARGATE_LINUX"] = "FARGATE_LINUX";
/**
* Represents an EC2 Linux access entry.
*/
AccessEntryType["EC2_LINUX"] = "EC2_LINUX";
/**
* Represents an EC2 Windows access entry.
*/
AccessEntryType["EC2_WINDOWS"] = "EC2_WINDOWS";
})(AccessEntryType || (exports.AccessEntryType = AccessEntryType = {}));
/**
* Represents an access entry in an Amazon EKS cluster.
*
* An access entry defines the permissions and scope for a user or role to access an Amazon EKS cluster.
*
* @implements {IAccessEntry}
* @resource AWS::EKS::AccessEntry
*/
let AccessEntry = (() => {
let _classDecorators = [prop_injectable_1.propertyInjectable];
let _classDescriptor;
let _classExtraInitializers = [];
let _classThis;
let _classSuper = core_1.Resource;
let _instanceExtraInitializers = [];
let _addAccessPolicies_decorators;
var AccessEntry = class extends _classSuper {
static { _classThis = this; }
static {
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
_addAccessPolicies_decorators = [(0, metadata_resource_1.MethodMetadata)()];
__esDecorate(this, null, _addAccessPolicies_decorators, { kind: "method", name: "addAccessPolicies", static: false, private: false, access: { has: obj => "addAccessPolicies" in obj, get: obj => obj.addAccessPolicies }, metadata: _metadata }, null, _instanceExtraInitializers);
__esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
AccessEntry = _classThis = _classDescriptor.value;
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
}
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-eks-v2-alpha.AccessEntry", version: "2.223.0-alpha.0" };
/** Uniquely identifies this class. */
static PROPERTY_INJECTION_ID = '@aws-cdk.aws-eks-v2-alpha.AccessEntry';
/**
* Imports an `AccessEntry` from its attributes.
*
* @param scope - The parent construct.
* @param id - The ID of the imported construct.
* @param attrs - The attributes of the access entry to import.
* @returns The imported access entry.
*/
static fromAccessEntryAttributes(scope, id, attrs) {
try {
jsiiDeprecationWarnings._aws_cdk_aws_eks_v2_alpha_AccessEntryAttributes(attrs);
}
catch (error) {
if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
Error.captureStackTrace(error, this.fromAccessEntryAttributes);
}
throw error;
}
class Import extends core_1.Resource {
accessEntryName = attrs.accessEntryName;
accessEntryArn = attrs.accessEntryArn;
}
return new Import(scope, id);
}
/**
* The name of the access entry.
*/
accessEntryName = __runInitializers(this, _instanceExtraInitializers);
/**
* The Amazon Resource Name (ARN) of the access entry.
*/
accessEntryArn;
cluster;
principal;
accessPolicies;
constructor(scope, id, props) {
super(scope, id);
try {
jsiiDeprecationWarnings._aws_cdk_aws_eks_v2_alpha_AccessEntryProps(props);
}
catch (error) {
if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
Error.captureStackTrace(error, AccessEntry);
}
throw error;
}
// Enhanced CDK Analytics Telemetry
(0, metadata_resource_1.addConstructMetadata)(this, props);
this.cluster = props.cluster;
this.principal = props.principal;
this.accessPolicies = props.accessPolicies;
const resource = new aws_eks_1.CfnAccessEntry(this, 'Resource', {
clusterName: this.cluster.clusterName,
principalArn: this.principal,
type: props.accessEntryType,
accessPolicies: core_1.Lazy.any({
produce: () => this.accessPolicies.map(p => ({
accessScope: {
type: p.accessScope.type,
namespaces: p.accessScope.namespaces,
},
policyArn: p.policy,
})),
}),
});
this.accessEntryName = this.getResourceNameAttribute(resource.ref);
this.accessEntryArn = this.getResourceArnAttribute(resource.attrAccessEntryArn, {
service: 'eks',
resource: 'accessentry',
resourceName: this.physicalName,
});
}
/**
* Add the access policies for this entry.
* @param newAccessPolicies - The new access policies to add.
*/
addAccessPolicies(newAccessPolicies) {
// add newAccessPolicies to this.accessPolicies
this.accessPolicies.push(...newAccessPolicies);
}
static {
__runInitializers(_classThis, _classExtraInitializers);
}
};
return AccessEntry = _classThis;
})();
exports.AccessEntry = AccessEntry;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjZXNzLWVudHJ5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiYWNjZXNzLWVudHJ5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVBLGlEQUFxRDtBQUNyRCwyQ0FBa0U7QUFDbEUsOEVBQThGO0FBQzlGLDBFQUEwRTtBQXVDMUU7Ozs7Ozs7R0FPRztBQUNILElBQVksZUFTWDtBQVRELFdBQVksZUFBZTtJQUN6Qjs7T0FFRztJQUNILDBDQUF1QixDQUFBO0lBQ3ZCOztPQUVHO0lBQ0gsc0NBQW1CLENBQUE7QUFDckIsQ0FBQyxFQVRXLGVBQWUsK0JBQWYsZUFBZSxRQVMxQjtBQXlCRDs7Ozs7O0dBTUc7QUFDSCxNQUFhLGVBQWU7SUFpREU7O0lBaEQ1Qjs7OztPQUlHO0lBQ0ksTUFBTSxDQUFVLHVCQUF1QixHQUFHLGVBQWUsQ0FBQyxFQUFFLENBQUMsc0JBQXNCLENBQUMsQ0FBQztJQUU1Rjs7OztPQUlHO0lBQ0ksTUFBTSxDQUFVLCtCQUErQixHQUFHLGVBQWUsQ0FBQyxFQUFFLENBQUMsNkJBQTZCLENBQUMsQ0FBQztJQUUzRzs7O09BR0c7SUFDSSxNQUFNLENBQVUsNEJBQTRCLEdBQUcsZUFBZSxDQUFDLEVBQUUsQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO0lBRXJHOzs7T0FHRztJQUNJLE1BQU0sQ0FBVSxzQkFBc0IsR0FBRyxlQUFlLENBQUMsRUFBRSxDQUFDLHFCQUFxQixDQUFDLENBQUM7SUFFMUY7OztPQUdHO0lBQ0ksTUFBTSxDQUFVLHNCQUFzQixHQUFHLGVBQWUsQ0FBQyxFQUFFLENBQUMscUJBQXFCLENBQUMsQ0FBQztJQUUxRjs7OztPQUlHO0lBQ0ksTUFBTSxDQUFDLEVBQUUsQ0FBQyxVQUFrQixJQUFJLE9BQU8sSUFBSSxlQUFlLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRTtJQUVoRjs7T0FFRztJQUNhLFNBQVMsQ0FBUztJQUNsQzs7OztPQUlHO0lB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LENBQUMsV0FBVztnQkFDckMsWUFBWSxFQUFFLElBQUksQ0FBQyxTQUFTO2dCQUM1QixJQUFJLEVBQUUsS0FBSyxDQUFDLGVBQWU7Z0JBQzNCLGNBQWMsRUFBRSxXQUFJLENBQUMsR0FBRyxDQUFDO29CQUN2QixPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO3dCQUMzQyxXQUFXLEVBQUU7NEJBQ1gsSUFBSSxFQUFFLENBQUMsQ0FBQyxXQUFXLENBQUMsSUFBSTs0QkFDeEIsVUFBVSxFQUFFLENBQUMsQ0FBQyxXQUFXLENBQUMsVUFBVTt5QkFDckM7d0JBQ0QsU0FBUyxFQUFFLENBQUMsQ0FBQyxNQUFNO3FCQUNwQixDQUFDLENBQUM7aUJBQ0osQ0FBQzthQUNILENBQUMsQ0FBQztZQUNILElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLHdCQUF3QixDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNuRSxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxRQUFRLENBQUMsa0JBQWtCLEVBQUU7Z0JBQzlFLE9BQU8sRUFBRSxLQUFLO2dCQUNkLFFBQVEsRUFBRSxhQUFhO2dCQUN2QixZQUFZLEVBQUUsSUFBSSxDQUFDLFlBQVk7YUFDaEMsQ0FBQyxDQUFDO1NBQ0o7UUFDRDs7O1dBR0c7UUFFSSxpQkFBaUIsQ0FBQyxpQkFBa0M7WUFDekQsK0NBQStDO1lBQy9DLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEdBQUcsaUJBQWlCLENBQUMsQ0FBQztTQUNoRDs7WUFyRVUsdURBQVc7Ozs7O0FBQVgsa0NBQVciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCB7IElDbHVzdGVyIH0gZnJvbSAnLi9jbHVzdGVyJztcbmltcG9ydCB7IENmbkFjY2Vzc0VudHJ5IH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWVrcyc7XG5pbXBvcnQgeyBSZXNvdXJjZSwgSVJlc291cmNlLCBBd3MsIExhenkgfSBmcm9tICdhd3MtY2RrLWxpYi9jb3JlJztcbmltcG9ydCB7IE1ldGhvZE1ldGFkYXRhLCBhZGRDb25zdHJ1Y3RNZXRhZGF0YSB9IGZyb20gJ2F3cy1jZGstbGliL2NvcmUvbGliL21ldGFkYXRhLXJlc291cmNlJztcbmltcG9ydCB7IHByb3BlcnR5SW5qZWN0YWJsZSB9IGZyb20gJ2F3cy1jZGstbGliL2NvcmUvbGliL3Byb3AtaW5qZWN0YWJsZSc7XG5cbi8qKlxuICogUmVwcmVzZW50cyBhbiBhY2Nlc3MgZW50cnkgaW4gYW4gQW1hem9uIEVLUyBjbHVzdGVyLlxuICpcbiAqIEFuIGFjY2VzcyBlbnRyeSBkZWZpbmVzIHRoZSBwZXJtaXNzaW9ucyBhbmQgc2NvcGUgZm9yIGEgdXNlciBvciByb2xlIHRvIGFjY2VzcyBhbiBBbWF6b24gRUtTIGNsdXN0ZXIuXG4gKlxuICogQGludGVyZmFjZSBJQWNjZXNzRW50cnlcbiAqIEBleHRlbmRzIHtJUmVzb3VyY2V9XG4gKiBAcHJvcGVydHkge3N0cmluZ30gYWNjZXNzRW50cnlOYW1lIC0gVGhlIG5hbWUgb2YgdGhlIGFjY2VzcyBlbnRyeS5cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBhY2Nlc3NFbnRyeUFybiAtIFRoZSBBbWF6b24gUmVzb3VyY2UgTmFtZSAoQVJOKSBvZiB0aGUgYWNjZXNzIGVudHJ5LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIElBY2Nlc3NFbnRyeSBleHRlbmRzIElSZXNvdXJjZSB7XG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgYWNjZXNzIGVudHJ5LlxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICByZWFkb25seSBhY2Nlc3NFbnRyeU5hbWU6IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBBbWF6b24gUmVzb3VyY2UgTmFtZSAoQVJOKSBvZiB0aGUgYWNjZXNzIGVudHJ5LlxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICByZWFkb25seSBhY2Nlc3NFbnRyeUFybjogc3RyaW5nO1xufVxuXG4vKipcbiAqIFJlcHJlc2VudHMgdGhlIGF0dHJpYnV0ZXMgb2YgYW4gYWNjZXNzIGVudHJ5LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFjY2Vzc0VudHJ5QXR0cmlidXRlcyB7XG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgYWNjZXNzIGVudHJ5LlxuICAgKi9cbiAgcmVhZG9ubHkgYWNjZXNzRW50cnlOYW1lOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgQW1hem9uIFJlc291cmNlIE5hbWUgKEFSTikgb2YgdGhlIGFjY2VzcyBlbnRyeS5cbiAgICovXG4gIHJlYWRvbmx5IGFjY2Vzc0VudHJ5QXJuOiBzdHJpbmc7XG59XG5cbi8qKlxuICogUmVwcmVzZW50cyB0aGUgc2NvcGUgdHlwZSBvZiBhbiBhY2Nlc3MgcG9saWN5LlxuICpcbiAqIFRoZSBzY29wZSB0eXBlIGRldGVybWluZXMgdGhlIGxldmVsIG9mIGFjY2VzcyBncmFudGVkIGJ5IHRoZSBwb2xpY3kuXG4gKlxuICogQGV4cG9ydFxuICogQGVudW0ge3N0cmluZ31cbiAqL1xuZXhwb3J0IGVudW0gQWNjZXNzU2NvcGVUeXBlIHtcbiAgLyoqXG4gICAqIFRoZSBwb2xpY3kgYXBwbGllcyB0byBhIHNwZWNpZmljIG5hbWVzcGFjZSB3aXRoaW4gdGhlIGNsdXN0ZXIuXG4gICAqL1xuICBOQU1FU1BBQ0UgPSAnbmFtZXNwYWNlJyxcbiAgLyoqXG4gICAqIFRoZSBwb2xpY3kgYXBwbGllcyB0byB0aGUgZW50aXJlIGNsdXN0ZXIuXG4gICAqL1xuICBDTFVTVEVSID0gJ2NsdXN0ZXInLFxufVxuXG4vKipcbiAqIFJlcHJlc2VudHMgdGhlIHNjb3BlIG9mIGFuIGFjY2VzcyBwb2xpY3kuXG4gKlxuICogVGhlIHNjb3BlIGRlZmluZXMgdGhlIG5hbWVzcGFjZXMgb3IgY2x1c3Rlci1sZXZlbCBhY2Nlc3MgZ3JhbnRlZCBieSB0aGUgcG9saWN5LlxuICpcbiAqIEBpbnRlcmZhY2UgQWNjZXNzU2NvcGVcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nW119IFtuYW1lc3BhY2VzXSAtIFRoZSBuYW1lc3BhY2VzIHRvIHdoaWNoIHRoZSBwb2xpY3kgYXBwbGllcywgaWYgdGhlIHNjb3BlIHR5cGUgaXMgJ25hbWVzcGFjZScuXG4gKiBAcHJvcGVydHkge0FjY2Vzc1Njb3BlVHlwZX0gdHlwZSAtIFRoZSBzY29wZSB0eXBlIG9mIHRoZSBwb2xpY3ksIGVpdGhlciAnbmFtZXNwYWNlJyBvciAnY2x1c3RlcicuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQWNjZXNzU2NvcGUge1xuICAvKipcbiAgICogQSBLdWJlcm5ldGVzIG5hbWVzcGFjZSB0aGF0IGFuIGFjY2VzcyBwb2xpY3kgaXMgc2NvcGVkIHRvLiBBIHZhbHVlIGlzIHJlcXVpcmVkIGlmIHlvdSBzcGVjaWZpZWRcbiAgICogbmFtZXNwYWNlIGZvciBUeXBlLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIHNwZWNpZmljIG5hbWVzcGFjZXMgZm9yIHRoaXMgc2NvcGUuXG4gICAqL1xuICByZWFkb25seSBuYW1lc3BhY2VzPzogc3RyaW5nW107XG4gIC8qKlxuICAgKiBUaGUgc2NvcGUgdHlwZSBvZiB0aGUgcG9saWN5LCBlaXRoZXIgJ25hbWVzcGFjZScgb3IgJ2NsdXN0ZXInLlxuICAgKi9cbiAgcmVhZG9ubHkgdHlwZTogQWNjZXNzU2NvcGVUeXBlO1xufVxuXG4vKipcbiAqIFJlcHJlc2VudHMgYW4gQW1hem9uIEVLUyBBY2Nlc3MgUG9saWN5IEFSTi5cbiAqXG4gKiBBbWF6b24gRUtTIEFjY2VzcyBQb2xpY2llcyBhcmUgdXNlZCB0byBjb250cm9sIGFjY2VzcyB0byBBbWF6b24gRUtTIGNsdXN0ZXJzLlxuICpcbiAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2Vrcy9sYXRlc3QvdXNlcmd1aWRlL2FjY2Vzcy1wb2xpY2llcy5odG1sXG4gKi9cbmV4cG9ydCBjbGFzcyBBY2Nlc3NQb2xpY3lBcm4ge1xuICAvKipcbiAgICogVGhlIEFtYXpvbiBFS1MgQWRtaW4gUG9saWN5LiBUaGlzIGFjY2VzcyBwb2xpY3kgaW5jbHVkZXMgcGVybWlzc2lvbnMgdGhhdCBncmFudCBhbiBJQU0gcHJpbmNpcGFsXG4gICAqIG1vc3QgcGVybWlzc2lvbnMgdG8gcmVzb3VyY2VzLiBXaGVuIGFzc29jaWF0ZWQgdG8gYW4gYWNjZXNzIGVudHJ5LCBpdHMgYWNjZXNzIHNjb3BlIGlzIHR5cGljYWxseVxuICAgKiBvbmUgb3IgbW9yZSBLdWJlcm5ldGVzIG5hbWVzcGFjZXMuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IEFNQVpPTl9FS1NfQURNSU5fUE9MSUNZID0gQWNjZXNzUG9saWN5QXJuLm9mKCdBbWF6b25FS1NBZG1pblBvbGljeScpO1xuXG4gIC8qKlxuICAgKiBUaGUgQW1hem9uIEVLUyBDbHVzdGVyIEFkbWluIFBvbGljeS4gVGhpcyBhY2Nlc3MgcG9saWN5IGluY2x1ZGVzIHBlcm1pc3Npb25zIHRoYXQgZ3JhbnQgYW4gSUFNXG4gICAqIHByaW5jaXBhbCBhZG1pbmlzdHJhdG9yIGFjY2VzcyB0byBhIGNsdXN0ZXIuIFdoZW4gYXNzb2NpYXRlZCB0byBhbiBhY2Nlc3MgZW50cnksIGl0cyBhY2Nlc3Mgc2NvcGVcbiAgICogaXMgdHlwaWNhbGx5IHRoZSBjbHVzdGVyLCByYXRoZXIgdGhhbiBhIEt1YmVybmV0ZXMgbmFtZXNwYWNlLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBBTUFaT05fRUtTX0NMVVNURVJfQURNSU5fUE9MSUNZID0gQWNjZXNzUG9saWN5QXJuLm9mKCdBbWF6b25FS1NDbHVzdGVyQWRtaW5Qb2xpY3knKTtcblxuICAvKipcbiAgICogVGhlIEFtYXpvbiBFS1MgQWRtaW4gVmlldyBQb2xpY3kuIFRoaXMgYWNjZXNzIHBvbGljeSBpbmNsdWRlcyBwZXJtaXNzaW9ucyB0aGF0IGdyYW50IGFuIElBTSBwcmluY2lwYWxcbiAgICogYWNjZXNzIHRvIGxpc3QvdmlldyBhbGwgcmVzb3VyY2VzIGluIGEgY2x1c3Rlci5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgQU1BWk9OX0VLU19BRE1JTl9WSUVXX1BPTElDWSA9IEFjY2Vzc1BvbGljeUFybi5vZignQW1hem9uRUtTQWRtaW5WaWV3UG9saWN5Jyk7XG5cbiAgLyoqXG4gICAqIFRoZSBBbWF6b24gRUtTIEVkaXQgUG9saWN5LiBUaGlzIGFjY2VzcyBwb2xpY3kgaW5jbHVkZXMgcGVybWlzc2lvbnMgdGhhdCBhbGxvdyBhbiBJQU0gcHJpbmNpcGFsXG4gICAqIHRvIGVkaXQgbW9zdCBLdWJlcm5ldGVzIHJlc291cmNlcy5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgQU1BWk9OX0VLU19FRElUX1BPTElDWSA9IEFjY2Vzc1BvbGljeUFybi5vZignQW1hem9uRUtTRWRpdFBvbGljeScpO1xuXG4gIC8qKlxuICAgKiBUaGUgQW1hem9uIEVLUyBWaWV3IFBvbGljeS4gVGhpcyBhY2Nlc3MgcG9saWN5IGluY2x1ZGVzIHBlcm1pc3Npb25zIHRoYXQgZ3JhbnQgYW4gSUFNIHByaW5jaXBhbFxuICAgKiBhY2Nlc3MgdG8gbGlzdC92aWV3IGFsbCByZXNvdXJjZXMgaW4gYSBjbHVzdGVyLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBBTUFaT05fRUtTX1ZJRVdfUE9MSUNZID0gQWNjZXNzUG9saWN5QXJuLm9mKCdBbWF6b25FS1NWaWV3UG9saWN5Jyk7XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXcgaW5zdGFuY2Ugb2YgdGhlIEFjY2Vzc1BvbGljeSBjbGFzcyB3aXRoIHRoZSBzcGVjaWZpZWQgcG9saWN5IG5hbWUuXG4gICAqIEBwYXJhbSBwb2xpY3lOYW1lIFRoZSBuYW1lIG9mIHRoZSBhY2Nlc3MgcG9saWN5LlxuICAgKiBAcmV0dXJucyBBIG5ldyBpbnN0YW5jZSBvZiB0aGUgQWNjZXNzUG9saWN5IGNsYXNzLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBvZihwb2xpY3lOYW1lOiBzdHJpbmcpIHsgcmV0dXJuIG5ldyBBY2Nlc3NQb2xpY3lBcm4ocG9saWN5TmFtZSk7IH1cblxuICAvKipcbiAgICogVGhlIEFtYXpvbiBSZXNvdXJjZSBOYW1lIChBUk4pIG9mIHRoZSBhY2Nlc3MgcG9saWN5LlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHBvbGljeUFybjogc3RyaW5nO1xuICAvKipcbiAgICogQ29uc3RydWN0cyBhIG5ldyBpbnN0YW5jZSBvZiB0aGUgYEFjY2Vzc0VudHJ5YCBjbGFzcy5cbiAgICpcbiAgICogQHBhcmFtIHBvbGljeU5hbWUgLSBUaGUgbmFtZSBvZiB0aGUgQW1hem9uIEVLUyBhY2Nlc3MgcG9saWN5LiBUaGlzIGlzIHVzZWQgdG8gY29uc3RydWN0IHRoZSBwb2xpY3kgQVJOLlxuICAgKi9cbiAgY29uc3RydWN0b3IocHVibGljIHJlYWRvbmx5IHBvbGljeU5hbWU6IHN0cmluZykge1xuICAgIHRoaXMucG9saWN5QXJuID0gYGFybjoke0F3cy5QQVJUSVRJT059OmVrczo6YXdzOmNsdXN0ZXItYWNjZXNzLXBvbGljeS8ke3BvbGljeU5hbWV9YDtcbiAgfVxufVxuXG4vKipcbiAqIFJlcHJlc2VudHMgYW4gYWNjZXNzIHBvbGljeSB0aGF0IGRlZmluZXMgdGhlIHBlcm1pc3Npb25zIGFuZCBzY29wZSBmb3IgYSB1c2VyIG9yIHJvbGUgdG8gYWNjZXNzIGFuIEFtYXpvbiBFS1MgY2x1c3Rlci5cbiAqXG4gKiBAaW50ZXJmYWNlIElBY2Nlc3NQb2xpY3lcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJQWNjZXNzUG9saWN5IHtcbiAgLyoqXG4gICAqIFRoZSBzY29wZSBvZiB0aGUgYWNjZXNzIHBvbGljeSwgd2hpY2ggZGV0ZXJtaW5lcyB0aGUgbGV2ZWwgb2YgYWNjZXNzIGdyYW50ZWQuXG4gICAqL1xuICByZWFkb25seSBhY2Nlc3NTY29wZTogQWNjZXNzU2NvcGU7XG4gIC8qKlxuICAgKiBUaGUgYWNjZXNzIHBvbGljeSBpdHNlbGYsIHdoaWNoIGRlZmluZXMgdGhlIHNwZWNpZmljIHBlcm1pc3Npb25zLlxuICAgKi9cbiAgcmVhZG9ubHkgcG9saWN5OiBzdHJpbmc7XG59XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgY29uZmlndXJpbmcgYW4gQW1hem9uIEVLUyBBY2Nlc3MgUG9saWN5LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFjY2Vzc1BvbGljeVByb3BzIHtcbiAgLyoqXG4gICAqIFRoZSBzY29wZSBvZiB0aGUgYWNjZXNzIHBvbGljeSwgd2hpY2ggZGV0ZXJtaW5lcyB0aGUgbGV2ZWwgb2YgYWNjZXNzIGdyYW50ZWQuXG4gICAqL1xuICByZWFkb25seSBhY2Nlc3NTY29wZTogQWNjZXNzU2NvcGU7XG4gIC8qKlxuICAgKiBUaGUgYWNjZXNzIHBvbGljeSBpdHNlbGYsIHdoaWNoIGRlZmluZXMgdGhlIHNwZWNpZmljIHBlcm1pc3Npb25zLlxuICAgKi9cbiAgcmVhZG9ubHkgcG9saWN5OiBBY2Nlc3NQb2xpY3lBcm47XG59XG5cbi8qKlxuICogUmVwcmVzZW50cyB0aGUgb3B0aW9ucyByZXF1aXJlZCB0byBjcmVhdGUgYW4gQW1hem9uIEVLUyBBY2Nlc3MgUG9saWN5IHVzaW5nIHRoZSBgZnJvbUFjY2Vzc1BvbGljeU5hbWUoKWAgbWV0aG9kLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFjY2Vzc1BvbGljeU5hbWVPcHRpb25zIHtcbiAgLyoqXG4gICAqIFRoZSBzY29wZSBvZiB0aGUgYWNjZXNzIHBvbGljeS4gVGhpcyBkZXRlcm1pbmVzIHRoZSBsZXZlbCBvZiBhY2Nlc3MgZ3JhbnRlZCBieSB0aGUgcG9saWN5LlxuICAgKi9cbiAgcmVhZG9ubHkgYWNjZXNzU2NvcGVUeXBlOiBBY2Nlc3NTY29wZVR5cGU7XG4gIC8qKlxuICAgKiBBbiBvcHRpb25hbCBhcnJheSBvZiBLdWJlcm5ldGVzIG5hbWVzcGFjZXMgdG8gd2hpY2ggdGhlIGFjY2VzcyBwb2xpY3kgYXBwbGllcy5cbiAgICogQGRlZmF1bHQgLSBubyBzcGVjaWZpYyBuYW1lc3BhY2VzIGZvciB0aGlzIHNjb3BlXG4gICAqL1xuICByZWFkb25seSBuYW1lc3BhY2VzPzogc3RyaW5nW107XG59XG5cbi8qKlxuICogUmVwcmVzZW50cyBhbiBBbWF6b24gRUtTIEFjY2VzcyBQb2xpY3kgdGhhdCBpbXBsZW1lbnRzIHRoZSBJQWNjZXNzUG9saWN5IGludGVyZmFjZS5cbiAqXG4gKiBAaW1wbGVtZW50cyB7SUFjY2Vzc1BvbGljeX1cbiAqL1xuZXhwb3J0IGNsYXNzIEFjY2Vzc1BvbGljeSBpbXBsZW1lbnRzIElBY2Nlc3NQb2xpY3kge1xuICAvKipcbiAgICogSW1wb3J0IEFjY2Vzc1BvbGljeSBieSBuYW1lLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBmcm9tQWNjZXNzUG9saWN5TmFtZShwb2xpY3lOYW1lOiBzdHJpbmcsIG9wdGlvbnM6IEFjY2Vzc1BvbGljeU5hbWVPcHRpb25zKTogSUFjY2Vzc1BvbGljeSB7XG4gICAgY2xhc3MgSW1wb3J0IGltcGxlbWVudHMgSUFjY2Vzc1BvbGljeSB7XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgcG9saWN5ID0gYGFybjoke0F3cy5QQVJUSVRJT059OmVrczo6YXdzOmNsdXN0ZXItYWNjZXNzLXBvbGljeS8ke3BvbGljeU5hbWV9YDtcbiAgICAgIHB1YmxpYyByZWFkb25seSBhY2Nlc3NTY29wZTogQWNjZXNzU2NvcGUgPSB7XG4gICAgICAgIHR5cGU6IG9wdGlvbnMuYWNjZXNzU2NvcGVUeXBlLFxuICAgICAgICBuYW1lc3BhY2VzOiBvcHRpb25zLm5hbWVzcGFjZXMsXG4gICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4gbmV3IEltcG9ydCgpO1xuICB9XG4gIC8qKlxuICAgKiBUaGUgc2NvcGUgb2YgdGhlIGFjY2VzcyBwb2xpY3ksIHdoaWNoIGRldGVybWluZXMgdGhlIGxldmVsIG9mIGFjY2VzcyBncmFudGVkLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGFjY2Vzc1Njb3BlOiBBY2Nlc3NTY29wZTtcblxuICAvKipcbiAgICogVGhlIGFjY2VzcyBwb2xpY3kgaXRzZWxmLCB3aGljaCBkZWZpbmVzIHRoZSBzcGVjaWZpYyBwZXJtaXNzaW9ucy5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBwb2xpY3k6IHN0cmluZztcblxuICAvKipcbiAgICogQ29uc3RydWN0cyBhIG5ldyBpbnN0YW5jZSBvZiB0aGUgQWNjZXNzUG9saWN5IGNsYXNzLlxuICAgKlxuICAgKiBAcGFyYW0ge0FjY2Vzc1BvbGljeVByb3BzfSBwcm9wcyAtIFRoZSBwcm9wZXJ0aWVzIGZvciBjb25maWd1cmluZyB0aGUgYWNjZXNzIHBvbGljeS5cbiAgICovXG4gIGNvbnN0cnVjdG9yKHByb3BzOiBBY2Nlc3NQb2xpY3lQcm9wcykge1xuICAgIHRoaXMuYWNjZXNzU2NvcGUgPSBwcm9wcy5hY2Nlc3NTY29wZTtcbiAgICB0aGlzLnBvbGljeSA9IHByb3BzLnBvbGljeS5wb2xpY3lBcm47XG4gIH1cbn1cblxuLyoqXG4gKiBSZXByZXNlbnRzIHRoZSBkaWZmZXJlbnQgdHlwZXMgb2YgYWNjZXNzIGVudHJpZXMgdGhhdCBjYW4gYmUgdXNlZCBpbiBhbiBBbWF6b24gRUtTIGNsdXN0ZXIuXG4gKlxuICogQGVudW0ge3N0cmluZ31cbiAqL1xuZXhwb3J0IGVudW0gQWNjZXNzRW50cnlUeXBlIHtcbiAgLyoqXG4gICAqIFJlcHJlc2VudHMgYSBzdGFuZGFyZCBhY2Nlc3MgZW50cnkuXG4gICAqL1xuICBTVEFOREFSRCA9ICdTVEFOREFSRCcsXG5cbiAgLyoqXG4gICAqIFJlcHJlc2VudHMgYSBGYXJnYXRlIExpbnV4IGFjY2VzcyBlbnRyeS5cbiAgICovXG4gIEZBUkdBVEVfTElOVVggPSAnRkFSR0FURV9MSU5VWCcsXG5cbiAgLyoqXG4gICAqIFJlcHJlc2VudHMgYW4gRUMyIExpbnV4IGFjY2VzcyBlbnRyeS5cbiAgICovXG4gIEVDMl9MSU5VWCA9ICdFQzJfTElOVVgnLFxuXG4gIC8qKlxuICAgKiBSZXByZXNlbnRzIGFuIEVDMiBXaW5kb3dzIGFjY2VzcyBlbnRyeS5cbiAgICovXG4gIEVDMl9XSU5ET1dTID0gJ0VDMl9XSU5ET1dTJyxcbn1cblxuLyoqXG4gKiBSZXByZXNlbnRzIHRoZSBwcm9wZXJ0aWVzIHJlcXVpcmVkIHRvIGNyZWF0ZSBhbiBBbWF6b24gRUtTIGFjY2VzcyBlbnRyeS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBY2Nlc3NFbnRyeVByb3BzIHtcbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBBY2Nlc3NFbnRyeS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBObyBhY2Nlc3MgZW50cnkgbmFtZSBpcyBwcm92aWRlZFxuICAgKi9cbiAgcmVhZG9ubHkgYWNjZXNzRW50cnlOYW1lPzogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIHR5cGUgb2YgdGhlIEFjY2Vzc0VudHJ5LlxuICAgKlxuICAgKiBAZGVmYXVsdCBTVEFOREFSRFxuICAgKi9cbiAgcmVhZG9ubHkgYWNjZXNzRW50cnlUeXBlPzogQWNjZXNzRW50cnlUeXBlO1xuICAvKipcbiAgICogVGhlIEFtYXpvbiBFS1MgY2x1c3RlciB0byB3aGljaCB0aGUgYWNjZXNzIGVudHJ5IGFwcGxpZXMuXG4gICAqL1xuICByZWFkb25seSBjbHVzdGVyOiBJQ2x1c3RlcjtcbiAgLyoqXG4gICAqIFRoZSBhY2Nlc3MgcG9saWNpZXMgdGhhdCBkZWZpbmUgdGhlIHBlcm1pc3Npb25zIGFuZCBzY29wZSBmb3IgdGhlIGFjY2VzcyBlbnRyeS5cbiAgICovXG4gIHJlYWRvbmx5IGFjY2Vzc1BvbGljaWVzOiBJQWNjZXNzUG9saWN5W107XG4gIC8qKlxuICAgKiBUaGUgQW1hem9uIFJlc291cmNlIE5hbWUgKEFSTikgb2YgdGhlIHByaW5jaXBhbCAodXNlciBvciByb2xlKSB0byBhc3NvY2lhdGUgdGhlIGFjY2VzcyBlbnRyeSB3aXRoLlxuICAgKi9cbiAgcmVhZG9ubHkgcHJpbmNpcGFsOiBzdHJpbmc7XG59XG5cbi8qKlxuICogUmVwcmVzZW50cyBhbiBhY2Nlc3MgZW50cnkgaW4gYW4gQW1hem9uIEVLUyBjbHVzdGVyLlxuICpcbiAqIEFuIGFjY2VzcyBlbnRyeSBkZWZpbmVzIHRoZSBwZXJtaXNzaW9ucyBhbmQgc2NvcGUgZm9yIGEgdXNlciBvciByb2xlIHRvIGFjY2VzcyBhbiBBbWF6b24gRUtTIGNsdXN0ZXIuXG4gKlxuICogQGltcGxlbWVudHMge0lBY2Nlc3NFbnRyeX1cbiAqIEByZXNvdXJjZSBBV1M6OkVLUzo6QWNjZXNzRW50cnlcbiAqL1xuQHByb3BlcnR5SW5qZWN0YWJsZVxuZXhwb3J0IGNsYXNzIEFjY2Vzc0VudHJ5IGV4dGVuZHMgUmVzb3VyY2UgaW1wbGVtZW50cyBJQWNjZXNzRW50cnkge1xuICAvKiogVW5pcXVlbHkgaWRlbnRpZmllcyB0aGlzIGNsYXNzLiAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFBST1BFUlRZX0lOSkVDVElPTl9JRDogc3RyaW5nID0gJ0Bhd3MtY2RrLmF3cy1la3MtdjItYWxwaGEuQWNjZXNzRW50cnknO1xuXG4gIC8qKlxuICAgKiBJbXBvcnRzIGFuIGBBY2Nlc3NFbnRyeWAgZnJvbSBpdHMgYXR0cmlidXRlcy5cbiAgICpcbiAgICogQHBhcmFtIHNjb3BlIC0gVGhlIHBhcmVudCBjb25zdHJ1Y3QuXG4gICAqIEBwYXJhbSBpZCAtIFRoZSBJRCBvZiB0aGUgaW1wb3J0ZWQgY29uc3RydWN0LlxuICAgKiBAcGFyYW0gYXR0cnMgLSBUaGUgYXR0cmlidXRlcyBvZiB0aGUgYWNjZXNzIGVudHJ5IHRvIGltcG9ydC5cbiAgICogQHJldHVybnMgVGhlIGltcG9ydGVkIGFjY2VzcyBlbnRyeS5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZnJvbUFjY2Vzc0VudHJ5QXR0cmlidXRlcyhzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBhdHRyczogQWNjZXNzRW50cnlBdHRyaWJ1dGVzKTogSUFjY2Vzc0VudHJ5IHtcbiAgICBjbGFzcyBJbXBvcnQgZXh0ZW5kcyBSZXNvdXJjZSBpbXBsZW1lbnRzIElBY2Nlc3NFbnRyeSB7XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgYWNjZXNzRW50cnlOYW1lID0gYXR0cnMuYWNjZXNzRW50cnlOYW1lO1xuICAgICAgcHVibGljIHJlYWRvbmx5IGFjY2Vzc0VudHJ5QXJuID0gYXR0cnMuYWNjZXNzRW50cnlBcm47XG4gICAgfVxuICAgIHJldHVybiBuZXcgSW1wb3J0KHNjb3BlLCBpZCk7XG4gIH1cbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBhY2Nlc3MgZW50cnkuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgYWNjZXNzRW50cnlOYW1lOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgQW1hem9uIFJlc291cmNlIE5hbWUgKEFSTikgb2YgdGhlIGFjY2VzcyBlbnRyeS5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBhY2Nlc3NFbnRyeUFybjogc3RyaW5nO1xuICBwcml2YXRlIGNsdXN0ZXI6IElDbHVzdGVyO1xuICBwcml2YXRlIHByaW5jaXBhbDogc3RyaW5nO1xuICBwcml2YXRlIGFjY2Vzc1BvbGljaWVzOiBJQWNjZXNzUG9saWN5W107XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IEFjY2Vzc0VudHJ5UHJvcHMgKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcbiAgICAvLyBFbmhhbmNlZCBDREsgQW5hbHl0aWNzIFRlbGVtZXRyeVxuICAgIGFkZENvbnN0cnVjdE1ldGFkYXRhKHRoaXMsIHByb3BzKTtcblxuICAgIHRoaXMuY2x1c3RlciA9IHByb3BzLmNsdXN0ZXI7XG4gICAgdGhpcy5wcmluY2lwYWwgPSBwcm9wcy5wcmluY2lwYWw7XG4gICAgdGhpcy5hY2Nlc3NQb2xpY2llcyA9IHByb3BzLmFjY2Vzc1BvbGljaWVzO1xuXG4gICAgY29uc3QgcmVzb3VyY2UgPSBuZXcgQ2ZuQWNjZXNzRW50cnkodGhpcywgJ1Jlc291cmNlJywge1xuICAgICAgY2x1c3Rlck5hbWU6IHRoaXMuY2x1c3Rlci5jbHVzdGVyTmFtZSxcbiAgICAgIHByaW5jaXBhbEFybjogdGhpcy5wcmluY2lwYWwsXG4gICAgICB0eXBlOiBwcm9wcy5hY2Nlc3NFbnRyeVR5cGUsXG4gICAgICBhY2Nlc3NQb2xpY2llczogTGF6eS5hbnkoe1xuICAgICAgICBwcm9kdWNlOiAoKSA9PiB0aGlzLmFjY2Vzc1BvbGljaWVzLm1hcChwID0+ICh7XG4gICAgICAgICAgYWNjZXNzU2NvcGU6IHtcbiAgICAgICAgICAgIHR5cGU6IHAuYWNjZXNzU2NvcGUudHlwZSxcbiAgICAgICAgICAgIG5hbWVzcGFjZXM6IHAuYWNjZXNzU2NvcGUubmFtZXNwYWNlcyxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHBvbGljeUFybjogcC5wb2xpY3ksXG4gICAgICAgIH0pKSxcbiAgICAgIH0pLFxuICAgIH0pO1xuICAgIHRoaXMuYWNjZXNzRW50cnlOYW1lID0gdGhpcy5nZXRSZXNvdXJjZU5hbWVBdHRyaWJ1dGUocmVzb3VyY2UucmVmKTtcbiAgICB0aGlzLmFjY2Vzc0VudHJ5QXJuID0gdGhpcy5nZXRSZXNvdXJjZUFybkF0dHJpYnV0ZShyZXNvdXJjZS5hdHRyQWNjZXNzRW50cnlBcm4sIHtcbiAgICAgIHNlcnZpY2U6ICdla3MnLFxuICAgICAgcmVzb3VyY2U6ICdhY2Nlc3NlbnRyeScsXG4gICAgICByZXNvdXJjZU5hbWU6IHRoaXMucGh5c2ljYWxOYW1lLFxuICAgIH0pO1xuICB9XG4gIC8qKlxuICAgKiBBZGQgdGhlIGFjY2VzcyBwb2xpY2llcyBmb3IgdGhpcyBlbnRyeS5cbiAgICogQHBhcmFtIG5ld0FjY2Vzc1BvbGljaWVzIC0gVGhlIG5ldyBhY2Nlc3MgcG9saWNpZXMgdG8gYWRkLlxuICAgKi9cbiAgQE1ldGhvZE1ldGFkYXRhKClcbiAgcHVibGljIGFkZEFjY2Vzc1BvbGljaWVzKG5ld0FjY2Vzc1BvbGljaWVzOiBJQWNjZXNzUG9saWN5W10pOiB2b2lkIHtcbiAgICAvLyBhZGQgbmV3QWNjZXNzUG9saWNpZXMgdG8gdGhpcy5hY2Nlc3NQb2xpY2llc1xuICAgIHRoaXMuYWNjZXNzUG9saWNpZXMucHVzaCguLi5uZXdBY2Nlc3NQb2xpY2llcyk7XG4gIH1cbn1cbiJdfQ==