Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

@aws-cdk/aws-autoscaling

Package Overview
Dependencies
Maintainers
5
Versions
288
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@aws-cdk/aws-autoscaling - npm Package Compare versions

Comparing version 0.30.0 to 0.31.0

80

lib/auto-scaling-group.d.ts

@@ -152,2 +152,41 @@ import cloudwatch = require('@aws-cdk/aws-cloudwatch');

}
declare abstract class AutoScalingGroupBase extends Resource implements IAutoScalingGroup {
abstract autoScalingGroupName: string;
protected albTargetGroup?: elbv2.ApplicationTargetGroup;
/**
* Send a message to either an SQS queue or SNS topic when instances launch or terminate
*/
onLifecycleTransition(id: string, props: BasicLifecycleHookProps): LifecycleHook;
/**
* Scale out or in based on time
*/
scaleOnSchedule(id: string, props: BasicScheduledActionProps): ScheduledAction;
/**
* Scale out or in to achieve a target CPU utilization
*/
scaleOnCpuUtilization(id: string, props: CpuUtilizationScalingProps): TargetTrackingScalingPolicy;
/**
* Scale out or in to achieve a target network ingress rate
*/
scaleOnIncomingBytes(id: string, props: NetworkUtilizationScalingProps): TargetTrackingScalingPolicy;
/**
* Scale out or in to achieve a target network egress rate
*/
scaleOnOutgoingBytes(id: string, props: NetworkUtilizationScalingProps): TargetTrackingScalingPolicy;
/**
* Scale out or in to achieve a target request handling rate
*
* The AutoScalingGroup must have been attached to an Application Load Balancer
* in order to be able to call this.
*/
scaleOnRequestCount(id: string, props: RequestCountScalingProps): TargetTrackingScalingPolicy;
/**
* Scale out or in in order to keep a metric around a target value
*/
scaleToTrackMetric(id: string, props: MetricTargetTrackingProps): TargetTrackingScalingPolicy;
/**
* Scale out or in, in response to a metric
*/
scaleOnMetric(id: string, props: BasicStepScalingPolicyProps): StepScalingPolicy;
}
/**

@@ -164,3 +203,4 @@ * A Fleet represents a managed set of EC2 instances

*/
export declare class AutoScalingGroup extends Resource implements IAutoScalingGroup, elb.ILoadBalancerTarget, ec2.IConnectable, elbv2.IApplicationLoadBalancerTarget, elbv2.INetworkLoadBalancerTarget {
export declare class AutoScalingGroup extends AutoScalingGroupBase implements elb.ILoadBalancerTarget, ec2.IConnectable, elbv2.IApplicationLoadBalancerTarget, elbv2.INetworkLoadBalancerTarget {
static fromAutoScalingGroupName(scope: Construct, id: string, autoScalingGroupName: string): IAutoScalingGroup;
/**

@@ -188,3 +228,2 @@ * The type of OS instances of this fleet are running.

private readonly targetGroupArns;
private albTargetGroup?;
constructor(scope: Construct, id: string, props: AutoScalingGroupProps);

@@ -216,33 +255,2 @@ /**

/**
* Scale out or in based on time
*/
scaleOnSchedule(id: string, props: BasicScheduledActionProps): ScheduledAction;
/**
* Scale out or in to achieve a target CPU utilization
*/
scaleOnCpuUtilization(id: string, props: CpuUtilizationScalingProps): TargetTrackingScalingPolicy;
/**
* Scale out or in to achieve a target network ingress rate
*/
scaleOnIncomingBytes(id: string, props: NetworkUtilizationScalingProps): TargetTrackingScalingPolicy;
/**
* Scale out or in to achieve a target network egress rate
*/
scaleOnOutgoingBytes(id: string, props: NetworkUtilizationScalingProps): TargetTrackingScalingPolicy;
/**
* Scale out or in to achieve a target request handling rate
*
* The AutoScalingGroup must have been attached to an Application Load Balancer
* in order to be able to call this.
*/
scaleOnRequestCount(id: string, props: RequestCountScalingProps): TargetTrackingScalingPolicy;
/**
* Scale out or in in order to keep a metric around a target value
*/
scaleToTrackMetric(id: string, props: MetricTargetTrackingProps): TargetTrackingScalingPolicy;
/**
* Scale out or in, in response to a metric
*/
scaleOnMetric(id: string, props: BasicStepScalingPolicyProps): StepScalingPolicy;
/**
* Adds a statement to the IAM role assumed by instances of this fleet.

@@ -252,6 +260,2 @@ */

/**
* Send a message to either an SQS queue or SNS topic when instances launch or terminate
*/
onLifecycleTransition(id: string, props: BasicLifecycleHookProps): LifecycleHook;
/**
* Apply CloudFormation update policies for the AutoScalingGroup

@@ -365,2 +369,3 @@ */

* The name of the AutoScalingGroup
* @attribute
*/

@@ -441,1 +446,2 @@ readonly autoScalingGroupName: string;

}
export {};

@@ -64,2 +64,3 @@ import api = require('@aws-cdk/aws-autoscaling-api');

* The name of this lifecycle hook
* @attribute
*/

@@ -66,0 +67,0 @@ readonly lifecycleHookName: string;

@@ -50,2 +50,2 @@ "use strict";

})(LifecycleTransition = exports.LifecycleTransition || (exports.LifecycleTransition = {}));
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlmZWN5Y2xlLWhvb2suanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJsaWZlY3ljbGUtaG9vay50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUNBLHdDQUF5QztBQUN6QyxzQ0FBbUQ7QUFFbkQsbUVBQTJEO0FBOEQzRCxNQUFhLGFBQWMsU0FBUSxjQUFRO0lBV3pDLFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBeUI7UUFDakUsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVqQixJQUFJLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQyxJQUFJLElBQUksSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxNQUFNLEVBQUU7WUFDbkQsU0FBUyxFQUFFLElBQUksR0FBRyxDQUFDLGdCQUFnQixDQUFDLDJCQUEyQixDQUFDO1NBQ2pFLENBQUMsQ0FBQztRQUVILE1BQU0sV0FBVyxHQUFHLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUV6RSxNQUFNLFFBQVEsR0FBRyxJQUFJLHdDQUFnQixDQUFDLElBQUksRUFBRSxVQUFVLEVBQUU7WUFDdEQsb0JBQW9CLEVBQUUsS0FBSyxDQUFDLGdCQUFnQixDQUFDLG9CQUFvQjtZQUNqRSxhQUFhLEVBQUUsS0FBSyxDQUFDLGFBQWE7WUFDbEMsZ0JBQWdCLEVBQUUsS0FBSyxDQUFDLG1CQUFtQjtZQUMzQyxpQkFBaUIsRUFBRSxLQUFLLENBQUMsaUJBQWlCO1lBQzFDLG1CQUFtQixFQUFFLEtBQUssQ0FBQyxtQkFBbUI7WUFDOUMsb0JBQW9CLEVBQUUsS0FBSyxDQUFDLG9CQUFvQjtZQUNoRCxxQkFBcUIsRUFBRSxXQUFXLENBQUMscUJBQXFCO1lBQ3hELE9BQU8sRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU87U0FDM0IsQ0FBQyxDQUFDO1FBRUgsNEVBQTRFO1FBQzVFLDRFQUE0RTtRQUM1RSxrQkFBa0I7UUFDbEIsUUFBUSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRXZDLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxRQUFRLENBQUMsaUJBQWlCLENBQUM7SUFDdEQsQ0FBQztDQUNGO0FBdENELHNDQXNDQztBQUVELElBQVksYUFHWDtBQUhELFdBQVksYUFBYTtJQUN2QixzQ0FBcUIsQ0FBQTtJQUNyQixvQ0FBbUIsQ0FBQTtBQUNyQixDQUFDLEVBSFcsYUFBYSxHQUFiLHFCQUFhLEtBQWIscUJBQWEsUUFHeEI7QUFFRDs7R0FFRztBQUNILElBQVksbUJBVVg7QUFWRCxXQUFZLG1CQUFtQjtJQUM3Qjs7T0FFRztJQUNILCtFQUF3RCxDQUFBO0lBRXhEOztPQUVHO0lBQ0gsbUZBQTRELENBQUE7QUFDOUQsQ0FBQyxFQVZXLG1CQUFtQixHQUFuQiwyQkFBbUIsS0FBbkIsMkJBQW1CLFFBVTlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGFwaSA9IHJlcXVpcmUoJ0Bhd3MtY2RrL2F3cy1hdXRvc2NhbGluZy1hcGknKTtcbmltcG9ydCBpYW0gPSByZXF1aXJlKCdAYXdzLWNkay9hd3MtaWFtJyk7XG5pbXBvcnQgeyBDb25zdHJ1Y3QsIFJlc291cmNlIH0gZnJvbSAnQGF3cy1jZGsvY2RrJztcbmltcG9ydCB7IElBdXRvU2NhbGluZ0dyb3VwIH0gZnJvbSAnLi9hdXRvLXNjYWxpbmctZ3JvdXAnO1xuaW1wb3J0IHsgQ2ZuTGlmZWN5Y2xlSG9vayB9IGZyb20gJy4vYXV0b3NjYWxpbmcuZ2VuZXJhdGVkJztcblxuLyoqXG4gKiBCYXNpYyBwcm9wZXJ0aWVzIGZvciBhIGxpZmVjeWNsZSBob29rXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQmFzaWNMaWZlY3ljbGVIb29rUHJvcHMge1xuICAvKipcbiAgICogTmFtZSBvZiB0aGUgbGlmZWN5Y2xlIGhvb2tcbiAgICpcbiAgICogQGRlZmF1bHQgQXV0b21hdGljYWxseSBnZW5lcmF0ZWQgbmFtZVxuICAgKi9cbiAgcmVhZG9ubHkgbGlmZWN5Y2xlSG9va05hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBhY3Rpb24gdGhlIEF1dG8gU2NhbGluZyBncm91cCB0YWtlcyB3aGVuIHRoZSBsaWZlY3ljbGUgaG9vayB0aW1lb3V0IGVsYXBzZXMgb3IgaWYgYW4gdW5leHBlY3RlZCBmYWlsdXJlIG9jY3Vycy5cbiAgICpcbiAgICogQGRlZmF1bHQgQ29udGludWVcbiAgICovXG4gIHJlYWRvbmx5IGRlZmF1bHRSZXN1bHQ/OiBEZWZhdWx0UmVzdWx0O1xuXG4gIC8qKlxuICAgKiBNYXhpbXVtIHRpbWUgYmV0d2VlbiBjYWxscyB0byBSZWNvcmRMaWZlY3ljbGVBY3Rpb25IZWFydGJlYXQgZm9yIHRoZSBob29rXG4gICAqXG4gICAqIElmIHRoZSBsaWZlY3ljbGUgaG9vayB0aW1lcyBvdXQsIHBlcmZvcm0gdGhlIGFjdGlvbiBpbiBEZWZhdWx0UmVzdWx0LlxuICAgKi9cbiAgcmVhZG9ubHkgaGVhcnRiZWF0VGltZW91dFNlYz86IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIHN0YXRlIG9mIHRoZSBBbWF6b24gRUMyIGluc3RhbmNlIHRvIHdoaWNoIHlvdSB3YW50IHRvIGF0dGFjaCB0aGUgbGlmZWN5Y2xlIGhvb2suXG4gICAqL1xuICByZWFkb25seSBsaWZlY3ljbGVUcmFuc2l0aW9uOiBMaWZlY3ljbGVUcmFuc2l0aW9uO1xuXG4gIC8qKlxuICAgKiBBZGRpdGlvbmFsIGRhdGEgdG8gcGFzcyB0byB0aGUgbGlmZWN5Y2xlIGhvb2sgdGFyZ2V0XG4gICAqXG4gICAqIEBkZWZhdWx0IE5vIG1ldGFkYXRhXG4gICAqL1xuICByZWFkb25seSBub3RpZmljYXRpb25NZXRhZGF0YT86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHRhcmdldCBvZiB0aGUgbGlmZWN5Y2xlIGhvb2tcbiAgICovXG4gIHJlYWRvbmx5IG5vdGlmaWNhdGlvblRhcmdldDogYXBpLklMaWZlY3ljbGVIb29rVGFyZ2V0O1xuXG4gIC8qKlxuICAgKiBUaGUgcm9sZSB0aGF0IGFsbG93cyBwdWJsaXNoaW5nIHRvIHRoZSBub3RpZmljYXRpb24gdGFyZ2V0XG4gICAqXG4gICAqIEBkZWZhdWx0IEEgcm9sZSBpcyBhdXRvbWF0aWNhbGx5IGNyZWF0ZWRcbiAgICovXG4gIHJlYWRvbmx5IHJvbGU/OiBpYW0uSVJvbGU7XG59XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgYSBMaWZlY3ljbGUgaG9va1xuICovXG5leHBvcnQgaW50ZXJmYWNlIExpZmVjeWNsZUhvb2tQcm9wcyBleHRlbmRzIEJhc2ljTGlmZWN5Y2xlSG9va1Byb3BzIHtcbiAgLyoqXG4gICAqIFRoZSBBdXRvU2NhbGluZ0dyb3VwIHRvIGFkZCB0aGUgbGlmZWN5Y2xlIGhvb2sgdG9cbiAgICovXG4gIHJlYWRvbmx5IGF1dG9TY2FsaW5nR3JvdXA6IElBdXRvU2NhbGluZ0dyb3VwO1xufVxuXG5leHBvcnQgY2xhc3MgTGlmZWN5Y2xlSG9vayBleHRlbmRzIFJlc291cmNlIGltcGxlbWVudHMgYXBpLklMaWZlY3ljbGVIb29rIHtcbiAgLyoqXG4gICAqIFRoZSByb2xlIHRoYXQgYWxsb3dzIHRoZSBBU0cgdG8gcHVibGlzaCB0byB0aGUgbm90aWZpY2F0aW9uIHRhcmdldFxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHJvbGU6IGlhbS5JUm9sZTtcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhpcyBsaWZlY3ljbGUgaG9va1xuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGxpZmVjeWNsZUhvb2tOYW1lOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IExpZmVjeWNsZUhvb2tQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICB0aGlzLnJvbGUgPSBwcm9wcy5yb2xlIHx8IG5ldyBpYW0uUm9sZSh0aGlzLCAnUm9sZScsIHtcbiAgICAgIGFzc3VtZWRCeTogbmV3IGlhbS5TZXJ2aWNlUHJpbmNpcGFsKCdhdXRvc2NhbGluZy5hbWF6b25hd3MuY29tJylcbiAgICB9KTtcblxuICAgIGNvbnN0IHRhcmdldFByb3BzID0gcHJvcHMubm90aWZpY2F0aW9uVGFyZ2V0LmFzTGlmZWN5Y2xlSG9va1RhcmdldCh0aGlzKTtcblxuICAgIGNvbnN0IHJlc291cmNlID0gbmV3IENmbkxpZmVjeWNsZUhvb2sodGhpcywgJ1Jlc291cmNlJywge1xuICAgICAgYXV0b1NjYWxpbmdHcm91cE5hbWU6IHByb3BzLmF1dG9TY2FsaW5nR3JvdXAuYXV0b1NjYWxpbmdHcm91cE5hbWUsXG4gICAgICBkZWZhdWx0UmVzdWx0OiBwcm9wcy5kZWZhdWx0UmVzdWx0LFxuICAgICAgaGVhcnRiZWF0VGltZW91dDogcHJvcHMuaGVhcnRiZWF0VGltZW91dFNlYyxcbiAgICAgIGxpZmVjeWNsZUhvb2tOYW1lOiBwcm9wcy5saWZlY3ljbGVIb29rTmFtZSxcbiAgICAgIGxpZmVjeWNsZVRyYW5zaXRpb246IHByb3BzLmxpZmVjeWNsZVRyYW5zaXRpb24sXG4gICAgICBub3RpZmljYXRpb25NZXRhZGF0YTogcHJvcHMubm90aWZpY2F0aW9uTWV0YWRhdGEsXG4gICAgICBub3RpZmljYXRpb25UYXJnZXRBcm46IHRhcmdldFByb3BzLm5vdGlmaWNhdGlvblRhcmdldEFybixcbiAgICAgIHJvbGVBcm46IHRoaXMucm9sZS5yb2xlQXJuLFxuICAgIH0pO1xuXG4gICAgLy8gQSBMaWZlY3ljbGVIb29rIHJlc291cmNlIGlzIGdvaW5nIHRvIGRvIGEgcGVybWlzc2lvbnMgdGVzdCB1cG9uIGNyZWF0aW9uLFxuICAgIC8vIHNvIHdlIGhhdmUgdG8gbWFrZSBzdXJlIHRoZSByb2xlIGhhcyBmdWxsIHBlcm1pc3Npb25zIGJlZm9yZSBjcmVhdGluZyB0aGVcbiAgICAvLyBsaWZlY3ljbGUgaG9vay5cbiAgICByZXNvdXJjZS5ub2RlLmFkZERlcGVuZGVuY3kodGhpcy5yb2xlKTtcblxuICAgIHRoaXMubGlmZWN5Y2xlSG9va05hbWUgPSByZXNvdXJjZS5saWZlY3ljbGVIb29rTmFtZTtcbiAgfVxufVxuXG5leHBvcnQgZW51bSBEZWZhdWx0UmVzdWx0IHtcbiAgQ29udGludWUgPSAnQ09OVElOVUUnLFxuICBBYmFuZG9uID0gJ0FCQU5ET04nLFxufVxuXG4vKipcbiAqIFdoYXQgaW5zdGFuY2UgdHJhbnNpdGlvbiB0byBhdHRhY2ggdGhlIGhvb2sgdG9cbiAqL1xuZXhwb3J0IGVudW0gTGlmZWN5Y2xlVHJhbnNpdGlvbiB7XG4gIC8qKlxuICAgKiBFeGVjdXRlIHRoZSBob29rIHdoZW4gYW4gaW5zdGFuY2UgaXMgYWJvdXQgdG8gYmUgYWRkZWRcbiAgICovXG4gIEluc3RhbmNlTGF1bmNoaW5nID0gJ2F1dG9zY2FsaW5nOkVDMl9JTlNUQU5DRV9MQVVOQ0hJTkcnLFxuXG4gIC8qKlxuICAgKiBFeGVjdXRlIHRoZSBob29rIHdoZW4gYW4gaW5zdGFuY2UgaXMgYWJvdXQgdG8gYmUgdGVybWluYXRlZFxuICAgKi9cbiAgSW5zdGFuY2VUZXJtaW5hdGluZyA9ICdhdXRvc2NhbGluZzpFQzJfSU5TVEFOQ0VfVEVSTUlOQVRJTkcnLFxufVxuIl19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlmZWN5Y2xlLWhvb2suanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJsaWZlY3ljbGUtaG9vay50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUNBLHdDQUF5QztBQUN6QyxzQ0FBbUQ7QUFFbkQsbUVBQTJEO0FBOEQzRCxNQUFhLGFBQWMsU0FBUSxjQUFRO0lBWXpDLFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBeUI7UUFDakUsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVqQixJQUFJLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQyxJQUFJLElBQUksSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxNQUFNLEVBQUU7WUFDbkQsU0FBUyxFQUFFLElBQUksR0FBRyxDQUFDLGdCQUFnQixDQUFDLDJCQUEyQixDQUFDO1NBQ2pFLENBQUMsQ0FBQztRQUVILE1BQU0sV0FBVyxHQUFHLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUV6RSxNQUFNLFFBQVEsR0FBRyxJQUFJLHdDQUFnQixDQUFDLElBQUksRUFBRSxVQUFVLEVBQUU7WUFDdEQsb0JBQW9CLEVBQUUsS0FBSyxDQUFDLGdCQUFnQixDQUFDLG9CQUFvQjtZQUNqRSxhQUFhLEVBQUUsS0FBSyxDQUFDLGFBQWE7WUFDbEMsZ0JBQWdCLEVBQUUsS0FBSyxDQUFDLG1CQUFtQjtZQUMzQyxpQkFBaUIsRUFBRSxLQUFLLENBQUMsaUJBQWlCO1lBQzFDLG1CQUFtQixFQUFFLEtBQUssQ0FBQyxtQkFBbUI7WUFDOUMsb0JBQW9CLEVBQUUsS0FBSyxDQUFDLG9CQUFvQjtZQUNoRCxxQkFBcUIsRUFBRSxXQUFXLENBQUMscUJBQXFCO1lBQ3hELE9BQU8sRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU87U0FDM0IsQ0FBQyxDQUFDO1FBRUgsNEVBQTRFO1FBQzVFLDRFQUE0RTtRQUM1RSxrQkFBa0I7UUFDbEIsUUFBUSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRXZDLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxRQUFRLENBQUMsaUJBQWlCLENBQUM7SUFDdEQsQ0FBQztDQUNGO0FBdkNELHNDQXVDQztBQUVELElBQVksYUFHWDtBQUhELFdBQVksYUFBYTtJQUN2QixzQ0FBcUIsQ0FBQTtJQUNyQixvQ0FBbUIsQ0FBQTtBQUNyQixDQUFDLEVBSFcsYUFBYSxHQUFiLHFCQUFhLEtBQWIscUJBQWEsUUFHeEI7QUFFRDs7R0FFRztBQUNILElBQVksbUJBVVg7QUFWRCxXQUFZLG1CQUFtQjtJQUM3Qjs7T0FFRztJQUNILCtFQUF3RCxDQUFBO0lBRXhEOztPQUVHO0lBQ0gsbUZBQTRELENBQUE7QUFDOUQsQ0FBQyxFQVZXLG1CQUFtQixHQUFuQiwyQkFBbUIsS0FBbkIsMkJBQW1CLFFBVTlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGFwaSA9IHJlcXVpcmUoJ0Bhd3MtY2RrL2F3cy1hdXRvc2NhbGluZy1hcGknKTtcbmltcG9ydCBpYW0gPSByZXF1aXJlKCdAYXdzLWNkay9hd3MtaWFtJyk7XG5pbXBvcnQgeyBDb25zdHJ1Y3QsIFJlc291cmNlIH0gZnJvbSAnQGF3cy1jZGsvY2RrJztcbmltcG9ydCB7IElBdXRvU2NhbGluZ0dyb3VwIH0gZnJvbSAnLi9hdXRvLXNjYWxpbmctZ3JvdXAnO1xuaW1wb3J0IHsgQ2ZuTGlmZWN5Y2xlSG9vayB9IGZyb20gJy4vYXV0b3NjYWxpbmcuZ2VuZXJhdGVkJztcblxuLyoqXG4gKiBCYXNpYyBwcm9wZXJ0aWVzIGZvciBhIGxpZmVjeWNsZSBob29rXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQmFzaWNMaWZlY3ljbGVIb29rUHJvcHMge1xuICAvKipcbiAgICogTmFtZSBvZiB0aGUgbGlmZWN5Y2xlIGhvb2tcbiAgICpcbiAgICogQGRlZmF1bHQgQXV0b21hdGljYWxseSBnZW5lcmF0ZWQgbmFtZVxuICAgKi9cbiAgcmVhZG9ubHkgbGlmZWN5Y2xlSG9va05hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBhY3Rpb24gdGhlIEF1dG8gU2NhbGluZyBncm91cCB0YWtlcyB3aGVuIHRoZSBsaWZlY3ljbGUgaG9vayB0aW1lb3V0IGVsYXBzZXMgb3IgaWYgYW4gdW5leHBlY3RlZCBmYWlsdXJlIG9jY3Vycy5cbiAgICpcbiAgICogQGRlZmF1bHQgQ29udGludWVcbiAgICovXG4gIHJlYWRvbmx5IGRlZmF1bHRSZXN1bHQ/OiBEZWZhdWx0UmVzdWx0O1xuXG4gIC8qKlxuICAgKiBNYXhpbXVtIHRpbWUgYmV0d2VlbiBjYWxscyB0byBSZWNvcmRMaWZlY3ljbGVBY3Rpb25IZWFydGJlYXQgZm9yIHRoZSBob29rXG4gICAqXG4gICAqIElmIHRoZSBsaWZlY3ljbGUgaG9vayB0aW1lcyBvdXQsIHBlcmZvcm0gdGhlIGFjdGlvbiBpbiBEZWZhdWx0UmVzdWx0LlxuICAgKi9cbiAgcmVhZG9ubHkgaGVhcnRiZWF0VGltZW91dFNlYz86IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIHN0YXRlIG9mIHRoZSBBbWF6b24gRUMyIGluc3RhbmNlIHRvIHdoaWNoIHlvdSB3YW50IHRvIGF0dGFjaCB0aGUgbGlmZWN5Y2xlIGhvb2suXG4gICAqL1xuICByZWFkb25seSBsaWZlY3ljbGVUcmFuc2l0aW9uOiBMaWZlY3ljbGVUcmFuc2l0aW9uO1xuXG4gIC8qKlxuICAgKiBBZGRpdGlvbmFsIGRhdGEgdG8gcGFzcyB0byB0aGUgbGlmZWN5Y2xlIGhvb2sgdGFyZ2V0XG4gICAqXG4gICAqIEBkZWZhdWx0IE5vIG1ldGFkYXRhXG4gICAqL1xuICByZWFkb25seSBub3RpZmljYXRpb25NZXRhZGF0YT86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHRhcmdldCBvZiB0aGUgbGlmZWN5Y2xlIGhvb2tcbiAgICovXG4gIHJlYWRvbmx5IG5vdGlmaWNhdGlvblRhcmdldDogYXBpLklMaWZlY3ljbGVIb29rVGFyZ2V0O1xuXG4gIC8qKlxuICAgKiBUaGUgcm9sZSB0aGF0IGFsbG93cyBwdWJsaXNoaW5nIHRvIHRoZSBub3RpZmljYXRpb24gdGFyZ2V0XG4gICAqXG4gICAqIEBkZWZhdWx0IEEgcm9sZSBpcyBhdXRvbWF0aWNhbGx5IGNyZWF0ZWRcbiAgICovXG4gIHJlYWRvbmx5IHJvbGU/OiBpYW0uSVJvbGU7XG59XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgYSBMaWZlY3ljbGUgaG9va1xuICovXG5leHBvcnQgaW50ZXJmYWNlIExpZmVjeWNsZUhvb2tQcm9wcyBleHRlbmRzIEJhc2ljTGlmZWN5Y2xlSG9va1Byb3BzIHtcbiAgLyoqXG4gICAqIFRoZSBBdXRvU2NhbGluZ0dyb3VwIHRvIGFkZCB0aGUgbGlmZWN5Y2xlIGhvb2sgdG9cbiAgICovXG4gIHJlYWRvbmx5IGF1dG9TY2FsaW5nR3JvdXA6IElBdXRvU2NhbGluZ0dyb3VwO1xufVxuXG5leHBvcnQgY2xhc3MgTGlmZWN5Y2xlSG9vayBleHRlbmRzIFJlc291cmNlIGltcGxlbWVudHMgYXBpLklMaWZlY3ljbGVIb29rIHtcbiAgLyoqXG4gICAqIFRoZSByb2xlIHRoYXQgYWxsb3dzIHRoZSBBU0cgdG8gcHVibGlzaCB0byB0aGUgbm90aWZpY2F0aW9uIHRhcmdldFxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHJvbGU6IGlhbS5JUm9sZTtcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhpcyBsaWZlY3ljbGUgaG9va1xuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgbGlmZWN5Y2xlSG9va05hbWU6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogTGlmZWN5Y2xlSG9va1Byb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIHRoaXMucm9sZSA9IHByb3BzLnJvbGUgfHwgbmV3IGlhbS5Sb2xlKHRoaXMsICdSb2xlJywge1xuICAgICAgYXNzdW1lZEJ5OiBuZXcgaWFtLlNlcnZpY2VQcmluY2lwYWwoJ2F1dG9zY2FsaW5nLmFtYXpvbmF3cy5jb20nKVxuICAgIH0pO1xuXG4gICAgY29uc3QgdGFyZ2V0UHJvcHMgPSBwcm9wcy5ub3RpZmljYXRpb25UYXJnZXQuYXNMaWZlY3ljbGVIb29rVGFyZ2V0KHRoaXMpO1xuXG4gICAgY29uc3QgcmVzb3VyY2UgPSBuZXcgQ2ZuTGlmZWN5Y2xlSG9vayh0aGlzLCAnUmVzb3VyY2UnLCB7XG4gICAgICBhdXRvU2NhbGluZ0dyb3VwTmFtZTogcHJvcHMuYXV0b1NjYWxpbmdHcm91cC5hdXRvU2NhbGluZ0dyb3VwTmFtZSxcbiAgICAgIGRlZmF1bHRSZXN1bHQ6IHByb3BzLmRlZmF1bHRSZXN1bHQsXG4gICAgICBoZWFydGJlYXRUaW1lb3V0OiBwcm9wcy5oZWFydGJlYXRUaW1lb3V0U2VjLFxuICAgICAgbGlmZWN5Y2xlSG9va05hbWU6IHByb3BzLmxpZmVjeWNsZUhvb2tOYW1lLFxuICAgICAgbGlmZWN5Y2xlVHJhbnNpdGlvbjogcHJvcHMubGlmZWN5Y2xlVHJhbnNpdGlvbixcbiAgICAgIG5vdGlmaWNhdGlvbk1ldGFkYXRhOiBwcm9wcy5ub3RpZmljYXRpb25NZXRhZGF0YSxcbiAgICAgIG5vdGlmaWNhdGlvblRhcmdldEFybjogdGFyZ2V0UHJvcHMubm90aWZpY2F0aW9uVGFyZ2V0QXJuLFxuICAgICAgcm9sZUFybjogdGhpcy5yb2xlLnJvbGVBcm4sXG4gICAgfSk7XG5cbiAgICAvLyBBIExpZmVjeWNsZUhvb2sgcmVzb3VyY2UgaXMgZ29pbmcgdG8gZG8gYSBwZXJtaXNzaW9ucyB0ZXN0IHVwb24gY3JlYXRpb24sXG4gICAgLy8gc28gd2UgaGF2ZSB0byBtYWtlIHN1cmUgdGhlIHJvbGUgaGFzIGZ1bGwgcGVybWlzc2lvbnMgYmVmb3JlIGNyZWF0aW5nIHRoZVxuICAgIC8vIGxpZmVjeWNsZSBob29rLlxuICAgIHJlc291cmNlLm5vZGUuYWRkRGVwZW5kZW5jeSh0aGlzLnJvbGUpO1xuXG4gICAgdGhpcy5saWZlY3ljbGVIb29rTmFtZSA9IHJlc291cmNlLmxpZmVjeWNsZUhvb2tOYW1lO1xuICB9XG59XG5cbmV4cG9ydCBlbnVtIERlZmF1bHRSZXN1bHQge1xuICBDb250aW51ZSA9ICdDT05USU5VRScsXG4gIEFiYW5kb24gPSAnQUJBTkRPTicsXG59XG5cbi8qKlxuICogV2hhdCBpbnN0YW5jZSB0cmFuc2l0aW9uIHRvIGF0dGFjaCB0aGUgaG9vayB0b1xuICovXG5leHBvcnQgZW51bSBMaWZlY3ljbGVUcmFuc2l0aW9uIHtcbiAgLyoqXG4gICAqIEV4ZWN1dGUgdGhlIGhvb2sgd2hlbiBhbiBpbnN0YW5jZSBpcyBhYm91dCB0byBiZSBhZGRlZFxuICAgKi9cbiAgSW5zdGFuY2VMYXVuY2hpbmcgPSAnYXV0b3NjYWxpbmc6RUMyX0lOU1RBTkNFX0xBVU5DSElORycsXG5cbiAgLyoqXG4gICAqIEV4ZWN1dGUgdGhlIGhvb2sgd2hlbiBhbiBpbnN0YW5jZSBpcyBhYm91dCB0byBiZSB0ZXJtaW5hdGVkXG4gICAqL1xuICBJbnN0YW5jZVRlcm1pbmF0aW5nID0gJ2F1dG9zY2FsaW5nOkVDMl9JTlNUQU5DRV9URVJNSU5BVElORycsXG59XG4iXX0=
{
"name": "@aws-cdk/aws-autoscaling",
"version": "0.30.0",
"version": "0.31.0",
"description": "The CDK Construct Library for AWS::AutoScaling",

@@ -23,3 +23,2 @@ "main": "lib/index.js",

},
"sphinx": {},
"python": {

@@ -63,30 +62,30 @@ "distName": "aws-cdk.aws-autoscaling",

"devDependencies": {
"@aws-cdk/assert": "^0.30.0",
"cdk-build-tools": "^0.30.0",
"cdk-integ-tools": "^0.30.0",
"cfn2ts": "^0.30.0",
"pkglint": "^0.30.0"
"@aws-cdk/assert": "^0.31.0",
"cdk-build-tools": "^0.31.0",
"cdk-integ-tools": "^0.31.0",
"cfn2ts": "^0.31.0",
"pkglint": "^0.31.0"
},
"dependencies": {
"@aws-cdk/aws-autoscaling-api": "^0.30.0",
"@aws-cdk/aws-autoscaling-common": "^0.30.0",
"@aws-cdk/aws-cloudwatch": "^0.30.0",
"@aws-cdk/aws-ec2": "^0.30.0",
"@aws-cdk/aws-elasticloadbalancing": "^0.30.0",
"@aws-cdk/aws-elasticloadbalancingv2": "^0.30.0",
"@aws-cdk/aws-iam": "^0.30.0",
"@aws-cdk/aws-sns": "^0.30.0",
"@aws-cdk/cdk": "^0.30.0"
"@aws-cdk/aws-autoscaling-api": "^0.31.0",
"@aws-cdk/aws-autoscaling-common": "^0.31.0",
"@aws-cdk/aws-cloudwatch": "^0.31.0",
"@aws-cdk/aws-ec2": "^0.31.0",
"@aws-cdk/aws-elasticloadbalancing": "^0.31.0",
"@aws-cdk/aws-elasticloadbalancingv2": "^0.31.0",
"@aws-cdk/aws-iam": "^0.31.0",
"@aws-cdk/aws-sns": "^0.31.0",
"@aws-cdk/cdk": "^0.31.0"
},
"homepage": "https://github.com/awslabs/aws-cdk",
"peerDependencies": {
"@aws-cdk/aws-autoscaling-api": "^0.30.0",
"@aws-cdk/aws-autoscaling-common": "^0.30.0",
"@aws-cdk/aws-cloudwatch": "^0.30.0",
"@aws-cdk/aws-ec2": "^0.30.0",
"@aws-cdk/aws-elasticloadbalancing": "^0.30.0",
"@aws-cdk/aws-elasticloadbalancingv2": "^0.30.0",
"@aws-cdk/aws-iam": "^0.30.0",
"@aws-cdk/aws-sns": "^0.30.0",
"@aws-cdk/cdk": "^0.30.0"
"@aws-cdk/aws-autoscaling-api": "^0.31.0",
"@aws-cdk/aws-autoscaling-common": "^0.31.0",
"@aws-cdk/aws-cloudwatch": "^0.31.0",
"@aws-cdk/aws-ec2": "^0.31.0",
"@aws-cdk/aws-elasticloadbalancing": "^0.31.0",
"@aws-cdk/aws-elasticloadbalancingv2": "^0.31.0",
"@aws-cdk/aws-iam": "^0.31.0",
"@aws-cdk/aws-sns": "^0.31.0",
"@aws-cdk/cdk": "^0.31.0"
},

@@ -93,0 +92,0 @@ "engines": {

@@ -17,5 +17,3 @@ "use strict";

function mockSecurityGroup(stack) {
return ec2.SecurityGroup.import(stack, 'MySG', {
securityGroupId: 'most-secure',
});
return ec2.SecurityGroup.fromSecurityGroupId(stack, 'MySG', 'most-secure');
}

@@ -468,3 +466,3 @@ function getTestStack() {

const vpc = mockVpc(stack);
const importedRole = iam.Role.import(stack, 'ImportedRole', { roleArn: 'arn:aws:iam::123456789012:role/HelloDude' });
const importedRole = iam.Role.fromRoleArn(stack, 'ImportedRole', 'arn:aws:iam::123456789012:role/HelloDude');
// WHEN

@@ -485,2 +483,2 @@ const asg = new autoscaling.AutoScalingGroup(stack, 'MyASG', {

};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdC5hdXRvLXNjYWxpbmctZ3JvdXAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJ0ZXN0LmF1dG8tc2NhbGluZy1ncm91cC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsNENBQTBHO0FBQzFHLHdDQUF5QztBQUN6Qyx3Q0FBeUM7QUFDekMsb0NBQXFDO0FBRXJDLHNDQUF1QztBQXdnQnZDLFNBQVMsT0FBTyxDQUFDLEtBQWdCO0lBQy9CLE9BQU8sR0FBRyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRTtRQUMzQyxLQUFLLEVBQUUsUUFBUTtRQUNmLGlCQUFpQixFQUFFLENBQUUsS0FBSyxDQUFFO1FBQzVCLGVBQWUsRUFBRSxDQUFFLE1BQU0sQ0FBRTtRQUMzQixnQkFBZ0IsRUFBRSxDQUFFLE1BQU0sQ0FBRTtRQUM1QixpQkFBaUIsRUFBRSxFQUFFO0tBQ3RCLENBQUMsQ0FBQztBQUNMLENBQUM7QUFFRCxTQUFTLGlCQUFpQixDQUFDLEtBQWdCO0lBQ3pDLE9BQU8sR0FBRyxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRTtRQUM3QyxlQUFlLEVBQUUsYUFBYTtLQUMvQixDQUFDLENBQUM7QUFDTCxDQUFDO0FBRUQsU0FBUyxZQUFZO0lBQ25CLE9BQU8sSUFBSSxHQUFHLENBQUMsS0FBSyxDQUFDLFNBQVMsRUFBRSxXQUFXLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDbEcsQ0FBQztBQXRoQkQsaUJBQVM7SUFDUCxlQUFlLENBQUMsSUFBVTtRQUN4QixNQUFNLEtBQUssR0FBRyxZQUFZLEVBQUUsQ0FBQztRQUM3QixNQUFNLEdBQUcsR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFM0IsSUFBSSxXQUFXLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxFQUFF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QUFDO0NBQ0YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGV4cGVjdCwgaGF2ZVJlc291cmNlLCBoYXZlUmVzb3VyY2VMaWtlLCBJbnNwZWN0aW9uRmFpbHVyZSwgUmVzb3VyY2VQYXJ0IH0gZnJvbSAnQGF3cy1jZGsvYXNzZXJ0JztcbmltcG9ydCBlYzIgPSByZXF1aXJlKCdAYXdzLWNkay9hd3MtZWMyJyk7XG5pbXBvcnQgaWFtID0gcmVxdWlyZSgnQGF3cy1jZGsvYXdzLWlhbScpO1xuaW1wb3J0IGNkayA9IHJlcXVpcmUoJ0Bhd3MtY2RrL2NkaycpO1xuaW1wb3J0IHsgVGVzdCB9IGZyb20gJ25vZGV1bml0JztcbmltcG9ydCBhdXRvc2NhbGluZyA9IHJlcXVpcmUoJy4uL2xpYicpO1xuXG4vLyB0c2xpbnQ6ZGlzYWJsZTpvYmplY3QtbGl0ZXJhbC1rZXktcXVvdGVzXG5cbmV4cG9ydCA9IHtcbiAgJ2RlZmF1bHQgZmxlZXQnKHRlc3Q6IFRlc3QpIHtcbiAgICBjb25zdCBzdGFjayA9IGdldFRlc3RTdGFjaygpO1xuICAgIGNvbnN0IHZwYyA9IG1vY2tWcGMoc3RhY2spO1xuXG4gICAgbmV3IGF1dG9zY2FsaW5nLkF1dG9TY2FsaW5nR3JvdXAoc3RhY2ssICdNeUZsZWV0Jywge1xuICAgICAgaW5zdGFuY2VUeXBlOiBuZXcgZWMyLkluc3RhbmNlVHlwZVBhaXIoZWMyLkluc3RhbmNlQ2xhc3MuTTQsIGVjMi5JbnN0YW5jZVNpemUuTWljcm8pLFxuICAgICAgbWFjaGluZUltYWdlOiBuZXcgZWMyLkFtYXpvbkxpbnV4SW1hZ2UoKSxcbiAgICAgIHZwY1xuICAgIH0pO1xuXG4gICAgZXhwZWN0KHN0YWNrKS50b01hdGNoKHtcbiAgICAgIFwiUmVzb3VyY2VzXCI6IHtcbiAgICAgICAgXCJNeUZsZWV0SW5zdGFuY2VTZWN1cml0eUdyb3VwNzc0RTgyMzRcIjoge1xuICAgICAgICAgIFwiVHlwZVwiOiBcIkFXUzo6RUMyOjpTZWN1cml0eUdyb3VwXCIsXG4gICAgICAgICAgXCJQcm9wZXJ0aWVzXCI6IHtcbiAgICAgICAgICAgIFwiR3JvdXBEZXNjcmlwdGlvblwiOiBcIk15RmxlZXQvSW5zdGFuY2VTZWN1cml0eUdyb3VwXCIsXG4gICAgICAgICAgICBcIlNlY3VyaXR5R3JvdXBFZ3Jlc3NcIjogW1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgXCJDaWRySXBcIjogXCIwLjAuMC4wLzBcIixcbiAgICAgICAgICAgICAgICBcIkRlc2NyaXB0aW9uXCI6IFwiQWxsb3cgYWxsIG91dGJvdW5kIHRyYWZmaWMgYnkgZGVmYXVsdFwiLFxuICAgICAgICAgICAgICAgIFwiSXBQcm90b2NvbFwiOiBcIi0xXCIsXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBcIlNlY3VyaXR5R3JvdXBJbmdyZXNzXCI6IFtdLFxuICAgICAgICAgICAgXCJUYWdzXCI6IFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIFwiS2V5XCI6IFwiTmFtZVwiLFxuICAgICAgICAgICAgICAgIFwiVmFsdWVcIjogXCJNeUZsZWV0XCJcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXSxcblxuICAgICAgICAgICAgXCJWcGNJZFwiOiBcIm15LXZwY1wiXG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBcIk15RmxlZXRJbnN0YW5jZVJvbGUyNUE4NEFCOFwiOiB7XG4gICAgICAgICAgXCJUeXBlXCI6IFwiQVdTOjpJQU06OlJvbGVcIixcbiAgICAgICAgICBcIlByb3BlcnRpZXNcIjoge1xuICAgICAgICAgICAgXCJBc3N1bWVSb2xlUG9saWN5RG9jdW1lbnRcIjoge1xuICAgICAgICAgICAgICBcIlN0YXRlbWVudFwiOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICBcIkFjdGlvblwiOiBcInN0czpBc3N1bWVSb2xlXCIsXG4gICAgICAgICAgICBcIkVmZmVjdFwiOiBcIkFsbG93XCIsXG4gICAgICAgICAgICBcIlByaW5jaXBhbFwiOiB7XG4gICAgICAgICAgICAgIFwiU2VydmljZVwiOiBcImVjMi5hbWF6b25hd3MuY29tXCJcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICBdLFxuICAgICAgICAgIFwiVmVyc2lvblwiOiBcIjIwMTItMTAtMTdcIlxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBcIk15RmxlZXRJbnN0YW5jZVByb2ZpbGU3MEE1ODQ5NlwiOiB7XG4gICAgICAgIFwiVHlwZVwiOiBcIkFXUzo6SUFNOjpJbnN0YW5jZVByb2ZpbGVcIixcbiAgICAgICAgXCJQcm9wZXJ0aWVzXCI6IHtcbiAgICAgICAgICBcIlJvbGVzXCI6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBcIlJlZlwiOiBcIk15RmxlZXRJbnN0YW5jZVJvbGUyNUE4NEFCOFwiXG4gICAgICAgICAgfVxuICAgICAgICAgIF1cbiAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBcIk15RmxlZXRMYXVuY2hDb25maWc1RDdGOTgwMVwiOiB7XG4gICAgICAgIFwiVHlwZVwiOiBcIkFXUzo6QXV0b1NjYWxpbmc6OkxhdW5jaENvbmZpZ3VyYXRpb25cIixcbiAgICAgICAgXCJQcm9wZXJ0aWVzXCI6IHtcbiAgICAgICAgICBcIklhbUluc3RhbmNlUHJvZmlsZVwiOiB7XG4gICAgICAgICAgXCJSZWZcIjogXCJNeUZsZWV0SW5zdGFuY2VQcm9maWxlNzBBNTg0OTZcIlxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJJbWFnZUlkXCI6IFwiZHVtbXlcIixcbiAgICAgICAgICBcIkluc3RhbmNlVHlwZVwiOiBcIm00Lm1pY3JvXCIsXG4gICAgICAgICAgXCJTZWN1cml0eUdyb3Vwc1wiOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgXCJGbjo6R2V0QXR0XCI6IFtcbiAgICAgICAgICAgIFwiTXlGbGVldEluc3RhbmNlU2VjdXJpdHlHcm91cDc3NEU4MjM0XCIsXG4gICAgICAgICAgICBcIkdyb3VwSWRcIlxuICAgICAgICAgICAgXVxuICAgICAgICAgIH1cbiAgICAgICAgICBdLFxuICAgICAgICAgIFwiVXNlckRhdGFcIjoge1xuICAgICAgICAgIFwiRm46OkJhc2U2NFwiOiBcIiMhL2Jpbi9iYXNoXFxuXCJcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIFwiRGVwZW5kc09uXCI6IFtcbiAgICAgICAgICBcIk15RmxlZXRJbnN0YW5jZVJvbGUyNUE4NEFCOFwiXG4gICAgICAgIF1cbiAgICAgICAgfSxcbiAgICAgICAgXCJNeUZsZWV0QVNHODhFNTU4ODZcIjoge1xuICAgICAgICBcIlR5cGVcIjogXCJBV1M6OkF1dG9TY2FsaW5nOjpBdXRvU2NhbGluZ0dyb3VwXCIsXG4gICAgICAgIFwiVXBkYXRlUG9saWN5XCI6IHtcbiAgICAgICAgICBcIkF1dG9TY2FsaW5nU2NoZWR1bGVkQWN0aW9uXCI6IHtcbiAgICAgICAgICBcIklnbm9yZVVubW9kaWZpZWRHcm91cFNpemVQcm9wZXJ0aWVzXCI6IHRydWVcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIFwiUHJvcGVydGllc1wiOiB7XG4gICAgICAgICAgXCJEZXNpcmVkQ2FwYWNpdHlcIjogXCIxXCIsXG4gICAgICAgICAgXCJMYXVuY2hDb25maWd1cmF0aW9uTmFtZVwiOiB7XG4gICAgICAgICAgXCJSZWZcIjogXCJNeUZsZWV0TGF1bmNoQ29uZmlnNUQ3Rjk4MDFcIlxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJUYWdzXCI6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgXCJLZXlcIjogXCJOYW1lXCIsXG4gICAgICAgICAgICAgIFwiUHJvcGFnYXRlQXRMYXVuY2hcIjogdHJ1ZSxcbiAgICAgICAgICAgICAgXCJWYWx1ZVwiOiBcIk15RmxlZXRcIlxuICAgICAgICAgICAgfVxuICAgICAgICAgIF0sXG5cbiAgICAgICAgICBcIk1heFNpemVcIjogXCIxXCIsXG4gICAgICAgICAgXCJNaW5TaXplXCI6IFwiMVwiLFxuICAgICAgICAgIFwiVlBDWm9uZUlkZW50aWZpZXJcIjogW1xuICAgICAgICAgICAgXCJwcmkxXCJcbiAgICAgICAgICBdXG4gICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdGVzdC5kb25lKCk7XG4gIH0sXG5cbiAgJ2NhbiBzZXQgbWluQ2FwYWNpdHksIG1heENhcGFjaXR5LCBkZXNpcmVkQ2FwYWNpdHkgdG8gMCcodGVzdDogVGVzdCkge1xuICAgIGNvbnN0IHN0YWNrID0gbmV3IGNkay5TdGFjayh1bmRlZmluZWQsICdNeVN0YWNrJywgeyBlbnY6IHsgcmVnaW9uOiAndXMtZWFzdC0xJywgYWNjb3VudDogJzEyMzQnIH19KTtcbiAgICBjb25zdCB2cGMgPSBtb2NrVnBjKHN0YWNrKTtcblxuICAgIG5ldyBhdXRvc2NhbGluZy5BdXRvU2NhbGluZ0dyb3VwKHN0YWNrLCAnTXlGbGVldCcsIHtcbiAgICAgIGluc3RhbmNlVHlwZTogbmV3IGVjMi5JbnN0YW5jZVR5cGVQYWlyKGVjMi5JbnN0YW5jZUNsYXNzLk00LCBlYzIuSW5zdGFuY2VTaXplLk1pY3JvKSxcbiAgICAgIG1hY2hpbmVJbWFnZTogbmV3IGVjMi5BbWF6b25MaW51eEltYWdlKCksXG4gICAgICB2cGMsXG4gICAgICBtaW5DYXBhY2l0eTogMCxcbiAgICAgIG1heENhcGFjaXR5OiAwLFxuICAgICAgZGVzaXJlZENhcGFjaXR5OiAwXG4gICAgfSk7XG5cbiAgICBleHBlY3Qoc3RhY2spLnRvKGhhdmVSZXNvdXJjZShcIkFXUzo6QXV0b1NjYWxpbmc6OkF1dG9TY2FsaW5nR3JvdXBcIiwge1xuICAgICAgICBNaW5TaXplOiBcIjBcIixcbiAgICAgICAgTWF4U2l6ZTogXCIwXCIsXG4gICAgICAgIERlc2lyZWRDYXBhY2l0eTogXCIwXCIsXG4gICAgICB9XG4gICAgKSk7XG5cbiAgICB0ZXN0LmRvbmUoKTtcbiAgfSxcblxuICAnY2FuIHNwZWNpZnkgb25seSBtaW4gY2FwYWNpdHknKHRlc3Q6IFRlc3QpIHtcbiAgICAvLyBHSVZFTlxuICAgIGNvbnN0IHN0YWNrID0gbmV3IGNkay5TdGFjaygpO1xuICAgIGNvbnN0IHZwYyA9IG1vY2tWcGMoc3RhY2spO1xuXG4gICAgLy8gV0hFTlxuICAgIG5ldyBhdXRvc2NhbGluZy5BdXRvU2NhbGluZ0dyb3VwKHN0YWNrLCAnTXlGbGVldCcsIHtcbiAgICAgIGluc3RhbmNlVHlwZTogbmV3IGVjMi5JbnN0YW5jZVR5cGVQYWlyKGVjMi5JbnN0YW5jZUNsYXNzLk00LCBlYzIuSW5zdGFuY2VTaXplLk1pY3JvKSxcbiAgICAgIG1hY2hpbmVJbWFnZTogbmV3IGVjMi5BbWF6b25MaW51eEltYWdlKCksXG4gICAgICB2cGMsXG4gICAgICBtaW5DYXBhY2l0eTogMTBcbiAgICB9KTtcblxuICAgIC8vIFRIRU5cbiAgICBleHBlY3Qoc3RhY2spLnRvKGhhdmVSZXNvdXJjZShcIkFXUzo6QXV0b1NjYWxpbmc6OkF1dG9TY2FsaW5nR3JvdXBcIiwge1xuICAgICAgICBNaW5TaXplOiBcIjEwXCIsXG4gICAgICAgIE1heFNpemU6IFwiMTBcIixcbiAgICAgICAgRGVzaXJlZENhcGFjaXR5OiBcIjEwXCIsXG4gICAgICB9XG4gICAgKSk7XG5cbiAgICB0ZXN0LmRvbmUoKTtcbiAgfSxcblxuICAnY2FuIHNwZWNpZnkgb25seSBtYXggY2FwYWNpdHknKHRlc3Q6IFRlc3QpIHtcbiAgICAvLyBHSVZFTlxuICAgIGNvbnN0IHN0YWNrID0gbmV3IGNkay5TdGFjaygpO1xuICAgIGNvbnN0IHZwYyA9IG1vY2tWcGMoc3RhY2spO1xuXG4gICAgLy8gV0hFTlxuICAgIG5ldyBhdXRvc2NhbGluZy5BdXRvU2NhbGluZ0dyb3VwKHN0YWNrLCAnTXlGbGVldCcsIHtcbiAgICAgIGluc3RhbmNlVHlwZTogbmV3IGVjMi5JbnN0YW5jZVR5cGVQYWlyKGVjMi5JbnN0YW5jZUNsYXNzLk00LCBlYzIuSW5zdGFuY2VTaXplLk1pY3JvKSxcbiAgICAgIG1hY2hpbmVJbWFnZTogbmV3IGVjMi5BbWF6b25MaW51eEltYWdlKCksXG4gICAgICB2cGMsXG4gICAgICBtYXhDYXBhY2l0eTogMTBcbiAgICB9KTtcblxuICAgIC8vIFRIRU5cbiAgICBleHBlY3Qoc3RhY2spLnRvKGhhdmVSZXNvdXJjZShcIkFXUzo6QXV0b1NjYWxpbmc6OkF1dG9TY2FsaW5nR3JvdXBcIiwge1xuICAgICAgICBNaW5TaXplOiBcIjFcIixcbiAgICAgICAgTWF4U2l6ZTogXCIxMFwiLFxuICAgICAgICBEZXNpcmVkQ2FwYWNpdHk6IFwiMTBcIixcbiAgICAgIH1cbiAgICApKTtcblxuICAgIHRlc3QuZG9uZSgpO1xuICB9LFxuXG4gICdjYW4gc3BlY2lmeSBvbmx5IGRlc2lyZWRDb3VudCcodGVzdDogVGVzdCkge1xuICAgIC8vIEdJVkVOXG4gICAgY29uc3Qgc3RhY2sgPSBuZXcgY2RrLlN0YWNrKCk7XG4gICAgY29uc3QgdnBjID0gbW9ja1ZwYyhzdGFjayk7XG5cbiAgICAvLyBXSEVOXG4gICAgbmV3IGF1dG9zY2FsaW5nLkF1dG9TY2FsaW5nR3JvdXAoc3RhY2ssICdNeUZsZWV0Jywge1xuICAgICAgaW5zdGFuY2VUeXBlOiBuZXcgZWMyLkluc3RhbmNlVHlwZVBhaXIoZWMyLkluc3RhbmNlQ2xhc3MuTTQsIGVjMi5JbnN0YW5jZVNpemUuTWljcm8pLFxuICAgICAgbWFjaGluZUltYWdlOiBuZXcgZWMyLkFtYXpvbkxpbnV4SW1hZ2UoKSxcbiAgICAgIHZwYyxcbiAgICAgIGRlc2lyZWRDYXBhY2l0eTogMTBcbiAgICB9KTtcblxuICAgIC8vIFRIRU5cbiAgICBleHBlY3Qoc3RhY2spLnRvKGhhdmVSZXNvdXJjZShcIkFXUzo6QXV0b1NjYWxpbmc6OkF1dG9TY2FsaW5nR3JvdXBcIiwge1xuICAgICAgICBNaW5TaXplOiBcIjFcIixcbiAgICAgICAgTWF4U2l6ZTogXCIxMFwiLFxuICAgICAgICBEZXNpcmVkQ2FwYWNpdHk6IFwiMTBcIixcbiAgICAgIH1cbiAgICApKTtcblxuICAgIHRlc3QuZG9uZSgpO1xuICB9LFxuXG4gICdhZGRUb1JvbGVQb2xpY3kgY2FuIGJlIHVzZWQgdG8gYWRkIHN0YXRlbWVudHMgdG8gdGhlIHJvbGUgcG9saWN5Jyh0ZXN0OiBUZXN0KSB7XG4gICAgY29uc3Qgc3RhY2sgPSBuZXcgY2RrLlN0YWNrKHVuZGVmaW5lZCwgJ015U3RhY2snLCB7IGVudjogeyByZWdpb246ICd1cy1lYXN0LTEnLCBhY2NvdW50OiAnMTIzNCcgfX0pO1xuICAgIGNvbnN0IHZwYyA9IG1vY2tWcGMoc3RhY2spO1xuXG4gICAgY29uc3QgZmxlZXQgPSBuZXcgYXV0b3NjYWxpbmcuQXV0b1NjYWxpbmdHcm91cChzdGFjaywgJ015RmxlZXQnLCB7XG4gICAgICBpbnN0YW5jZVR5cGU6IG5ldyBlYzIuSW5zdGFuY2VUeXBlUGFpcihlYzIuSW5zdGFuY2VDbGFzcy5NNCwgZWMyLkluc3RhbmNlU2l6ZS5NaWNybyksXG4gICAgICBtYWNoaW5lSW1hZ2U6IG5ldyBlYzIuQW1hem9uTGludXhJbWFnZSgpLFxuICAgICAgdnBjXG4gICAgfSk7XG5cbiAgICBmbGVldC5hZGRUb1JvbGVQb2xpY3kobmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoKVxuICAgICAgLmFkZEFjdGlvbigndGVzdDpTcGVjaWFsTmFtZScpXG4gICAgICAuYWRkQWxsUmVzb3VyY2VzKCkpO1xuXG4gICAgZXhwZWN0KHN0YWNrKS50byhoYXZlUmVzb3VyY2UoJ0FXUzo6SUFNOjpQb2xpY3knLCB7XG4gICAgICBQb2xpY3lEb2N1bWVudDoge1xuICAgICAgICBWZXJzaW9uOiAnMjAxMi0xMC0xNycsXG4gICAgICAgIFN0YXRlbWVudDogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIEFjdGlvbjogXCJ0ZXN0OlNwZWNpYWxOYW1lXCIsXG4gICAgICAgICAgICBFZmZlY3Q6IFwiQWxsb3dcIixcbiAgICAgICAgICAgIFJlc291cmNlOiBcIipcIlxuICAgICAgICAgIH1cbiAgICAgICAgXSxcbiAgICAgIH0sXG4gICAgfSkpO1xuICAgIHRlc3QuZG9uZSgpO1xuICB9LFxuXG4gICdjYW4gY29uZmlndXJlIHJlcGxhY2luZyB1cGRhdGUnKHRlc3Q6IFRlc3QpIHtcbiAgICAvLyBHSVZFTlxuICAgIGNvbnN0IHN0YWNrID0gbmV3IGNkay5TdGFjayh1bmRlZmluZWQsICdNeVN0YWNrJywgeyBlbnY6IHsgcmVnaW9uOiAndXMtZWFzdC0xJywgYWNjb3VudDogJzEyMzQnIH19KTtcbiAgICBjb25zdCB2cGMgPSBtb2NrVnBjKHN0YWNrKTtcblxuICAgIC8vIFdIRU5cbiAgICBuZXcgYXV0b3NjYWxpbmcuQXV0b1NjYWxpbmdHcm91cChzdGFjaywgJ015RmxlZXQnLCB7XG4gICAgICBpbnN0YW5jZVR5cGU6IG5ldyBlYzIuSW5zdGFuY2VUeXBlUGFpcihlYzIuSW5zdGFuY2VDbGFzcy5NNCwgZWMyLkluc3RhbmNlU2l6ZS5NaWNybyksXG4gICAgICBtYWNoaW5lSW1hZ2U6IG5ldyBlYzIuQW1hem9uTGludXhJbWFnZSgpLFxuICAgICAgdnBjLFxuICAgICAgdXBkYXRlVHlwZTogYXV0b3NjYWxpbmcuVXBkYXRlVHlwZS5SZXBsYWNpbmdVcGRhdGUsXG4gICAgICByZXBsYWNpbmdVcGRhdGVNaW5TdWNjZXNzZnVsSW5zdGFuY2VzUGVyY2VudDogNTBcbiAgICB9KTtcblxuICAgIC8vIFRIRU5cbiAgICBleHBlY3Qoc3RhY2spLnRvKGhhdmVSZXNvdXJjZUxpa2UoXCJBV1M6OkF1dG9TY2FsaW5nOjpBdXRvU2NhbGluZ0dyb3VwXCIsIHtcbiAgICAgIFVwZGF0ZVBvbGljeToge1xuICAgICAgICBBdXRvU2NhbGluZ1JlcGxhY2luZ1VwZGF0ZToge1xuICAgICAgICBXaWxsUmVwbGFjZTogdHJ1ZVxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgQ3JlYXRpb25Qb2xpY3k6IHtcbiAgICAgICAgQXV0b1NjYWxpbmdDcmVhdGlvblBvbGljeToge1xuICAgICAgICBNaW5TdWNjZXNzZnVsSW5zdGFuY2VzUGVyY2VudDogNTBcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sIFJlc291cmNlUGFydC5Db21wbGV0ZURlZmluaXRpb24pKTtcblxuICAgIHRlc3QuZG9uZSgpO1xuICB9LFxuXG4gICdjYW4gY29uZmlndXJlIHJvbGxpbmcgdXBkYXRlJyh0ZXN0OiBUZXN0KSB7XG4gICAgLy8gR0lWRU5cbiAgICBjb25zdCBzdGFjayA9IG5ldyBjZGsuU3RhY2sodW5kZWZpbmVkLCAnTXlTdGFjaycsIHsgZW52OiB7IHJlZ2lvbjogJ3VzLWVhc3QtMScsIGFjY291bnQ6ICcxMjM0JyB9fSk7XG4gICAgY29uc3QgdnBjID0gbW9ja1ZwYyhzdGFjayk7XG5cbiAgICAvLyBXSEVOXG4gICAgbmV3IGF1dG9zY2FsaW5nLkF1dG9TY2FsaW5nR3JvdXAoc3RhY2ssICdNeUZsZWV0Jywge1xuICAgICAgaW5zdGFuY2VUeXBlOiBuZXcgZWMyLkluc3RhbmNlVHlwZVBhaXIoZWMyLkluc3RhbmNlQ2xhc3MuTTQsIGVjMi5JbnN0YW5jZVNpemUuTWljcm8pLFxuICAgICAgbWFjaGluZUltYWdlOiBuZXcgZWMyLkFtYXpvbkxpbnV4SW1hZ2UoKSxcbiAgICAgIHZwYyxcbiAgICAgIHVwZGF0ZVR5cGU6IGF1dG9zY2FsaW5nLlVwZGF0ZVR5cGUuUm9sbGluZ1VwZGF0ZSxcbiAgICAgIHJvbGxpbmdVcGRhdGVDb25maWd1cmF0aW9uOiB7XG4gICAgICAgIG1pblN1Y2Nlc3NmdWxJbnN0YW5jZXNQZXJjZW50OiA1MCxcbiAgICAgICAgcGF1c2VUaW1lU2VjOiAzNDVcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIC8vIFRIRU5cbiAgICBleHBlY3Qoc3RhY2spLnRvKGhhdmVSZXNvdXJjZUxpa2UoXCJBV1M6OkF1dG9TY2FsaW5nOjpBdXRvU2NhbGluZ0dyb3VwXCIsIHtcbiAgICAgIFVwZGF0ZVBvbGljeToge1xuICAgICAgICBcIkF1dG9TY2FsaW5nUm9sbGluZ1VwZGF0ZVwiOiB7XG4gICAgICAgIFwiTWluU3VjY2Vzc2Z1bEluc3RhbmNlc1BlcmNlbnRcIjogNTAsXG4gICAgICAgIFwiV2FpdE9uUmVzb3VyY2VTaWduYWxzXCI6IHRydWUsXG4gICAgICAgIFwiUGF1c2VUaW1lXCI6IFwiUFQ1TTQ1U1wiLFxuICAgICAgICBcIlN1c3BlbmRQcm9jZXNzZXNcIjogWyBcIkhlYWx0aENoZWNrXCIsIFwiUmVwbGFjZVVuaGVhbHRoeVwiLCBcIkFaUmViYWxhbmNlXCIsIFwiQWxhcm1Ob3RpZmljYXRpb25cIiwgXCJTY2hlZHVsZWRBY3Rpb25zXCIgXVxuICAgICAgICB9LFxuICAgICAgfVxuICAgIH0sIFJlc291cmNlUGFydC5Db21wbGV0ZURlZmluaXRpb24pKTtcblxuICAgIHRlc3QuZG9uZSgpO1xuICB9LFxuXG4gICdjYW4gY29uZmlndXJlIHJlc291cmNlIHNpZ25hbHMnKHRlc3Q6IFRlc3QpIHtcbiAgICAvLyBHSVZFTlxuICAgIGNvbnN0IHN0YWNrID0gbmV3IGNkay5TdGFjayh1bmRlZmluZWQsICdNeVN0YWNrJywgeyBlbnY6IHsgcmVnaW9uOiAndXMtZWFzdC0xJywgYWNjb3VudDogJzEyMzQnIH19KTtcbiAgICBjb25zdCB2cGMgPSBtb2NrVnBjKHN0YWNrKTtcblxuICAgIC8vIFdIRU5cbiAgICBuZXcgYXV0b3NjYWxpbmcuQXV0b1NjYWxpbmdHcm91cChzdGFjaywgJ015RmxlZXQnLCB7XG4gICAgICBpbnN0YW5jZVR5cGU6IG5ldyBlYzIuSW5zdGFuY2VUeXBlUGFpcihlYzIuSW5zdGFuY2VDbGFzcy5NNCwgZWMyLkluc3RhbmNlU2l6ZS5NaWNybyksXG4gICAgICBtYWNoaW5lSW1hZ2U6IG5ldyBlYzIuQW1hem9uTGludXhJbWFnZSgpLFxuICAgICAgdnBjLFxuICAgICAgcmVzb3VyY2VTaWduYWxDb3VudDogNSxcbiAgICAgIHJlc291cmNlU2lnbmFsVGltZW91dFNlYzogNjY2XG4gICAgfSk7XG5cbiAgICAvLyBUSEVOXG4gICAgZXhwZWN0KHN0YWNrKS50byhoYXZlUmVzb3VyY2VMaWtlKFwiQVdTOjpBdXRvU2NhbGluZzo6QXV0b1NjYWxpbmdHcm91cFwiLCB7XG4gICAgICBDcmVhdGlvblBvbGljeToge1xuICAgICAgICBSZXNvdXJjZVNpZ25hbDoge1xuICAgICAgICAgIENvdW50OiA1LFxuICAgICAgICAgIFRpbWVvdXQ6ICdQVDExTTZTJ1xuICAgICAgICB9LFxuICAgICAgfVxuICAgIH0sIFJlc291cmNlUGFydC5Db21wbGV0ZURlZmluaXRpb24pKTtcblxuICAgIHRlc3QuZG9uZSgpO1xuICB9LFxuICAnY2FuIGFkZCBTZWN1cml0eSBHcm91cCB0byBGbGVldCcodGVzdDogVGVzdCkge1xuICAgIC8vIEdJVkVOXG4gICAgY29uc3Qgc3RhY2sgPSBuZXcgY2RrLlN0YWNrKHVuZGVmaW5lZCwgJ015U3RhY2snLCB7IGVudjogeyByZWdpb246ICd1cy1lYXN0LTEnLCBhY2NvdW50OiAnMTIzNCcgfX0pO1xuICAgIGNvbnN0IHZwYyA9IG1vY2tWcGMoc3RhY2spO1xuXG4gICAgLy8gV0hFTlxuICAgIGNvbnN0IGFzZyA9IG5ldyBhdXRvc2NhbGluZy5BdXRvU2NhbGluZ0dyb3VwKHN0YWNrLCAnTXlGbGVldCcsIHtcbiAgICAgIGluc3RhbmNlVHlwZTogbmV3IGVjMi5JbnN0YW5jZVR5cGVQYWlyKGVjMi5JbnN0YW5jZUNsYXNzLk00LCBlYzIuSW5zdGFuY2VTaXplLk1pY3JvKSxcbiAgICAgIG1hY2hpbmVJbWFnZTogbmV3IGVjMi5BbWF6b25MaW51eEltYWdlKCksXG4gICAgICB2cGMsXG4gICAgfSk7XG4gICAgYXNnLmFkZFNlY3VyaXR5R3JvdXAobW9ja1NlY3VyaXR5R3JvdXAoc3RhY2spKTtcbiAgICBleHBlY3Qoc3RhY2spLnRvKGhhdmVSZXNvdXJjZShcIkFXUzo6QXV0b1NjYWxpbmc6OkxhdW5jaENvbmZpZ3VyYXRpb25cIiwge1xuICAgICAgU2VjdXJpdHlHcm91cHM6IFtcbiAgICAgICAge1xuICAgICAgICAgIFwiRm46OkdldEF0dFwiOiBbXG4gICAgICAgICAgICBcIk15RmxlZXRJbnN0YW5jZVNlY3VyaXR5R3JvdXA3NzRFODIzNFwiLFxuICAgICAgICAgICAgXCJHcm91cElkXCJcbiAgICAgICAgICBdXG4gICAgICAgIH0sXG4gICAgICAgICdtb3N0LXNlY3VyZSddLFxuICAgIH0pKTtcbiAgICB0ZXN0LmRvbmUoKTtcbiAgfSxcbiAgJ2NhbiBzZXQgdGFncycodGVzdDogVGVzdCkge1xuICAgIC8vIEdJVkVOXG4gICAgY29uc3Qgc3RhY2sgPSBnZXRUZXN0U3RhY2soKTtcbiAgICAgIC8vIG5ldyBjZGsuU3RhY2sodW5kZWZpbmVkLCAnTXlTdGFjaycsIHsgZW52OiB7IHJlZ2lvbjogJ3VzLWVhc3QtMScsIGFjY291bnQ6ICcxMjM0JyB9fSk7XG4gICAgY29uc3QgdnBjID0gbW9ja1ZwYyhzdGFjayk7XG5cbiAgICAvLyBXSEVOXG4gICAgY29uc3QgYXNnID0gbmV3IGF1dG9zY2FsaW5nLkF1dG9TY2FsaW5nR3JvdXAoc3RhY2ssICdNeUZsZWV0Jywge1xuICAgICAgaW5zdGFuY2VUeXBlOiBuZXcgZWMyLkluc3RhbmNlVHlwZVBhaXIoZWMyLkluc3RhbmNlQ2xhc3MuTTQsIGVjMi5JbnN0YW5jZVNpemUuTWljcm8pLFxuICAgICAgbWFjaGluZUltYWdlOiBuZXcgZWMyLkFtYXpvbkxpbnV4SW1hZ2UoKSxcbiAgICAgIHZwYyxcbiAgICAgIHVwZGF0ZVR5cGU6IGF1dG9zY2FsaW5nLlVwZGF0ZVR5cGUuUm9sbGluZ1VwZGF0ZSxcbiAgICAgIHJvbGxpbmdVcGRhdGVDb25maWd1cmF0aW9uOiB7XG4gICAgICAgIG1pblN1Y2Nlc3NmdWxJbnN0YW5jZXNQZXJjZW50OiA1MCxcbiAgICAgICAgcGF1c2VUaW1lU2VjOiAzNDVcbiAgICAgIH0sXG4gICAgfSk7XG4gICAgYXNnLm5vZGUuYXBwbHkobmV3IGNkay5UYWcoJ3N1cGVyZm9vZCcsICdhY2FpJykpO1xuICAgIGFzZy5ub2RlLmFwcGx5KG5ldyBjZGsuVGFnKCdub3RzdXBlcicsICdjYXJhbWVsJywgeyBhcHBseVRvTGF1bmNoZWRJbnN0YW5jZXM6IGZhbHNlIH0pKTtcblxuICAgIC8vIFRIRU5cbiAgICBleHBlY3Qoc3RhY2spLnRvKGhhdmVSZXNvdXJjZShcIkFXUzo6QXV0b1NjYWxpbmc6OkF1dG9TY2FsaW5nR3JvdXBcIiwge1xuICAgICAgVGFnczogW1xuICAgICAgICB7XG4gICAgICAgICAgS2V5OiAnTmFtZScsXG4gICAgICAgICAgUHJvcGFnYXRlQXRMYXVuY2g6IHRydWUsXG4gICAgICAgICAgVmFsdWU6ICdNeUZsZWV0JyxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIEtleTogJ3N1cGVyZm9vZCcsXG4gICAgICAgICAgUHJvcGFnYXRlQXRMYXVuY2g6IHRydWUsXG4gICAgICAgICAgVmFsdWU6ICdhY2FpJyxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIEtleTogJ25vdHN1cGVyJyxcbiAgICAgICAgICBQcm9wYWdhdGVBdExhdW5jaDogZmFsc2UsXG4gICAgICAgICAgVmFsdWU6ICdjYXJhbWVsJyxcbiAgICAgICAgfSxcbiAgICAgIF1cbiAgICB9KSk7XG4gICAgdGVzdC5kb25lKCk7XG4gIH0sXG4gICdhbGxvd3MgYXNzb2NpYXRpb24gb2YgcHVibGljIElQIGFkZHJlc3MnKHRlc3Q6IFRlc3QpIHtcbiAgICAvLyBHSVZFTlxuICAgIGNvbnN0IHN0YWNrID0gbmV3IGNkay5TdGFjaygpO1xuICAgIGNvbnN0IHZwYyA9IG1vY2tWcGMoc3RhY2spO1xuXG4gICAgLy8gV0hFTlxuICAgIG5ldyBhdXRvc2NhbGluZy5BdXRvU2NhbGluZ0dyb3VwKHN0YWNrLCAnTXlTdGFjaycsIHtcbiAgICAgIGluc3RhbmNlVHlwZTogbmV3IGVjMi5JbnN0YW5jZVR5cGVQYWlyKGVjMi5JbnN0YW5jZUNsYXNzLk00LCBlYzIuSW5zdGFuY2VTaXplLk1pY3JvKSxcbiAgICAgIG1hY2hpbmVJbWFnZTogbmV3IGVjMi5BbWF6b25MaW51eEltYWdlKCksXG4gICAgICB2cGMsXG4gICAgICBtaW5DYXBhY2l0eTogMCxcbiAgICAgIG1heENhcGFjaXR5OiAwLFxuICAgICAgZGVzaXJlZENhcGFjaXR5OiAwLFxuXG4gICAgICB2cGNTdWJuZXRzOiB7IHN1Ym5ldFR5cGU6IGVjMi5TdWJuZXRUeXBlLlB1YmxpYyB9LFxuICAgICAgYXNzb2NpYXRlUHVibGljSXBBZGRyZXNzOiB0cnVlLFxuICAgIH0pO1xuXG4gICAgLy8gVEhFTlxuICAgIGV4cGVjdChzdGFjaykudG8oaGF2ZVJlc291cmNlKFwiQVdTOjpBdXRvU2NhbGluZzo6TGF1bmNoQ29uZmlndXJhdGlvblwiLCB7XG4gICAgICAgIEFzc29jaWF0ZVB1YmxpY0lwQWRkcmVzczogdHJ1ZSxcbiAgICAgIH1cbiAgICApKTtcbiAgICB0ZXN0LmRvbmUoKTtcbiAgfSxcbiAgJ2Fzc29jaWF0aW9uIG9mIHB1YmxpYyBJUCBhZGRyZXNzIHJlcXVpcmVzIHB1YmxpYyBzdWJuZXQnKHRlc3Q6IFRlc3QpIHtcbiAgICAvLyBHSVZFTlxuICAgIGNvbnN0IHN0YWNrID0gbmV3IGNkay5TdGFjaygpO1xuICAgIGNvbnN0IHZwYyA9IG1vY2tWcGMoc3RhY2spO1xuXG4gICAgLy8gV0hFTlxuICAgIHRlc3QudGhyb3dzKCgpID0+IHtcbiAgICAgIG5ldyBhdXRvc2NhbGluZy5BdXRvU2NhbGluZ0dyb3VwKHN0YWNrLCAnTXlTdGFjaycsIHtcbiAgICAgICAgaW5zdGFuY2VUeXBlOiBuZXcgZWMyLkluc3RhbmNlVHlwZVBhaXIoZWMyLkluc3RhbmNlQ2xhc3MuTTQsIGVjMi5JbnN0YW5jZVNpemUuTWljcm8pLFxuICAgICAgICBtYWNoaW5lSW1hZ2U6IG5ldyBlYzIuQW1hem9uTGludXhJbWFnZSgpLFxuICAgICAgICB2cGMsXG4gICAgICAgIG1pbkNhcGFjaXR5OiAwLFxuICAgICAgICBtYXhDYXBhY2l0eTogMCxcbiAgICAgICAgZGVzaXJlZENhcGFjaXR5OiAwLFxuICAgICAgICBhc3NvY2lhdGVQdWJsaWNJcEFkZHJlc3M6IHRydWUsXG4gICAgICB9KTtcbiAgICB9KTtcbiAgICB0ZXN0LmRvbmUoKTtcbiAgfSxcbiAgJ2FsbG93cyBkaXNhc3NvY2lhdGlvbiBvZiBwdWJsaWMgSVAgYWRkcmVzcycodGVzdDogVGVzdCkge1xuICAgIC8vIEdJVkVOXG4gICAgY29uc3Qgc3RhY2sgPSBuZXcgY2RrLlN0YWNrKCk7XG4gICAgY29uc3QgdnBjID0gbW9ja1ZwYyhzdGFjayk7XG5cbiAgICAvLyBXSEVOXG4gICAgbmV3IGF1dG9zY2FsaW5nLkF1dG9TY2FsaW5nR3JvdXAoc3RhY2ssICdNeVN0YWNrJywge1xuICAgICAgaW5zdGFuY2VUeXBlOiBuZXcgZWMyLkluc3RhbmNlVHlwZVBhaXIoZWMyLkluc3RhbmNlQ2xhc3MuTTQsIGVjMi5JbnN0YW5jZVNpemUuTWljcm8pLFxuICAgICAgbWFjaGluZUltYWdlOiBuZXcgZWMyLkFtYXpvbkxpbnV4SW1hZ2UoKSxcbiAgICAgIHZwYyxcbiAgICAgIG1pbkNhcGFjaXR5OiAwLFxuICAgICAgbWF4Q2FwYWNpdHk6IDAsXG4gICAgICBkZXNpcmVkQ2FwYWNpdHk6IDAsXG4gICAgICBhc3NvY2lhdGVQdWJsaWNJcEFkZHJlc3M6IGZhbHNlLFxuICAgIH0pO1xuXG4gICAgLy8gVEhFTlxuICAgIGV4cGVjdChzdGFjaykudG8oaGF2ZVJlc291cmNlKFwiQVdTOjpBdXRvU2NhbGluZzo6TGF1bmNoQ29uZmlndXJhdGlvblwiLCB7XG4gICAgICAgIEFzc29jaWF0ZVB1YmxpY0lwQWRkcmVzczogZmFsc2UsXG4gICAgICB9XG4gICAgKSk7XG4gICAgdGVzdC5kb25lKCk7XG4gIH0sXG4gICdkb2VzIG5vdCBzcGVjaWZ5IHB1YmxpYyBJUCBhZGRyZXNzIGFzc29jaWF0aW9uIGJ5IGRlZmF1bHQnKHRlc3Q6IFRlc3QpIHtcbiAgICAvLyBHSVZFTlxuICAgIGNvbnN0IHN0YWNrID0gbmV3IGNkay5TdGFjaygpO1xuICAgIGNvbnN0IHZwYyA9IG1vY2tWcGMoc3RhY2spO1xuXG4gICAgLy8gV0hFTlxuICAgIG5ldyBhdXRvc2NhbGluZy5BdXRvU2NhbGluZ0dyb3VwKHN0YWNrLCAnTXlTdGFjaycsIHtcbiAgICAgIGluc3RhbmNlVHlwZTogbmV3IGVjMi5JbnN0YW5jZVR5cGVQYWlyKGVjMi5JbnN0YW5jZUNsYXNzLk00LCBlYzIuSW5zdGFuY2VTaXplLk1pY3JvKSxcbiAgICAgIG1hY2hpbmVJbWFnZTogbmV3IGVjMi5BbWF6b25MaW51eEltYWdlKCksXG4gICAgICB2cGMsXG4gICAgICBtaW5DYXBhY2l0eTogMCxcbiAgICAgIG1heENhcGFjaXR5OiAwLFxuICAgICAgZGVzaXJlZENhcGFjaXR5OiAwLFxuICAgIH0pO1xuXG4gICAgLy8gVEhFTlxuICAgIGV4cGVjdChzdGFjaykudG8oaGF2ZVJlc291cmNlKFwiQVdTOjpBdXRvU2NhbGluZzo6TGF1bmNoQ29uZmlndXJhdGlvblwiLCAocmVzb3VyY2U6IGFueSwgZXJyb3JzOiBJbnNwZWN0aW9uRmFpbHVyZSkgPT4ge1xuICAgICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMocmVzb3VyY2UpKSB7XG4gICAgICAgIGlmIChrZXkgPT09IFwiQXNzb2NpYXRlUHVibGljSXBBZGRyZXNzXCIpIHtcbiAgICAgICAgICBlcnJvcnMuZmFpbHVyZVJlYXNvbiA9IFwiSGFzIEFzc29jaWF0ZVB1YmxpY0lwQWRkcmVzc1wiO1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSkpO1xuICAgIHRlc3QuZG9uZSgpO1xuICB9LFxuXG4gICdhbiBleGlzdGluZyByb2xlIGNhbiBiZSBzcGVjaWZpZWQgaW5zdGVhZCBvZiBhdXRvLWNyZWF0ZWQnKHRlc3Q6IFRlc3QpIHtcbiAgICAvLyBHSVZFTlxuICAgIGNvbnN0IHN0YWNrID0gbmV3IGNkay5TdGFjaygpO1xuICAgIGNvbnN0IHZwYyA9IG1vY2tWcGMoc3RhY2spO1xuICAgIGNvbnN0IGltcG9ydGVkUm9sZSA9IGlhbS5Sb2xlLmltcG9ydChzdGFjaywgJ0ltcG9ydGVkUm9sZScsIHsgcm9sZUFybjogJ2Fybjphd3M6aWFtOjoxMjM0NTY3ODkwMTI6cm9sZS9IZWxsb0R1ZGUnIH0pO1xuXG4gICAgLy8gV0hFTlxuICAgIGNvbnN0IGFzZyA9IG5ldyBhdXRvc2NhbGluZy5BdXRvU2NhbGluZ0dyb3VwKHN0YWNrLCAnTXlBU0cnLCB7XG4gICAgICB2cGMsXG4gICAgICBpbnN0YW5jZVR5cGU6IG5ldyBlYzIuSW5zdGFuY2VUeXBlUGFpcihlYzIuSW5zdGFuY2VDbGFzcy5NNCwgZWMyLkluc3RhbmNlU2l6ZS5NaWNybyksXG4gICAgICBtYWNoaW5lSW1hZ2U6IG5ldyBlYzIuQW1hem9uTGludXhJbWFnZSgpLFxuICAgICAgcm9sZTogaW1wb3J0ZWRSb2xlXG4gICAgfSk7XG5cbiAgICAvLyBUSEVOXG4gICAgdGVzdC5zYW1lKGFzZy5yb2xlLCBpbXBvcnRlZFJvbGUpO1xuICAgIGV4cGVjdChzdGFjaykudG8oaGF2ZVJlc291cmNlKCdBV1M6OklBTTo6SW5zdGFuY2VQcm9maWxlJywge1xuICAgICAgXCJSb2xlc1wiOiBbIFwiSGVsbG9EdWRlXCIgXVxuICAgIH0pKTtcbiAgICB0ZXN0LmRvbmUoKTtcbiAgfVxufTtcblxuZnVuY3Rpb24gbW9ja1ZwYyhzdGFjazogY2RrLlN0YWNrKSB7XG4gIHJldHVybiBlYzIuVnBjTmV0d29yay5pbXBvcnQoc3RhY2ssICdNeVZwYycsIHtcbiAgICB2cGNJZDogJ215LXZwYycsXG4gICAgYXZhaWxhYmlsaXR5Wm9uZXM6IFsgJ2F6MScgXSxcbiAgICBwdWJsaWNTdWJuZXRJZHM6IFsgJ3B1YjEnIF0sXG4gICAgcHJpdmF0ZVN1Ym5ldElkczogWyAncHJpMScgXSxcbiAgICBpc29sYXRlZFN1Ym5ldElkczogW10sXG4gIH0pO1xufVxuXG5mdW5jdGlvbiBtb2NrU2VjdXJpdHlHcm91cChzdGFjazogY2RrLlN0YWNrKSB7XG4gIHJldHVybiBlYzIuU2VjdXJpdHlHcm91cC5pbXBvcnQoc3RhY2ssICdNeVNHJywge1xuICAgIHNlY3VyaXR5R3JvdXBJZDogJ21vc3Qtc2VjdXJlJyxcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIGdldFRlc3RTdGFjaygpOiBjZGsuU3RhY2sge1xuICByZXR1cm4gbmV3IGNkay5TdGFjayh1bmRlZmluZWQsICdUZXN0U3RhY2snLCB7IGVudjogeyBhY2NvdW50OiAnMTIzNCcsIHJlZ2lvbjogJ3VzLWVhc3QtMScgfSB9KTtcbn1cbiJdfQ==
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdC5hdXRvLXNjYWxpbmctZ3JvdXAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJ0ZXN0LmF1dG8tc2NhbGluZy1ncm91cC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsNENBQTBHO0FBQzFHLHdDQUF5QztBQUN6Qyx3Q0FBeUM7QUFDekMsb0NBQXFDO0FBRXJDLHNDQUF1QztBQXdnQnZDLFNBQVMsT0FBTyxDQUFDLEtBQWdCO0lBQy9CLE9BQU8sR0FBRyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRTtRQUMzQyxLQUFLLEVBQUUsUUFBUTtRQUNmLGlCQUFpQixFQUFFLENBQUUsS0FBSyxDQUFFO1FBQzVCLGVBQWUsRUFBRSxDQUFFLE1BQU0sQ0FBRTtRQUMzQixnQkFBZ0IsRUFBRSxDQUFFLE1BQU0sQ0FBRTtRQUM1QixpQkFBaUIsRUFBRSxFQUFFO0tBQ3RCLENBQUMsQ0FBQztBQUNMLENBQUM7QUFFRCxTQUFTLGlCQUFpQixDQUFDLEtBQWdCO0lBQ3pDLE9BQU8sR0FBRyxDQUFDLGFBQWEsQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLGFBQWEsQ0FBQyxDQUFDO0FBQzdFLENBQUM7QUFFRCxTQUFTLFlBQVk7SUFDbkIsT0FBTyxJQUFJLEdBQUcsQ0FBQyxLQUFLLENBQUMsU0FBUyxFQUFFLFdBQVcsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxFQUFFLENBQUMsQ0FBQztBQUNsRyxDQUFDO0FBcGhCRCxpQkFBUztJQUNQLGVBQWUsQ0FBQyxJQUFVO1FBQ3hCLE1BQU0sS0FBSyxHQUFHLFlBQVksRUFBRSxDQUFDO1FBQzdCLE1BQU0sR0FBRyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUUzQixJQUFJLFdBQVcsQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLEVBQUUsU0FBUyxFQUFFO1lBQ2pELFlB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dCB7IGV4cGVjdCwgaGF2ZVJlc291cmNlLCBoYXZlUmVzb3VyY2VMaWtlLCBJbnNwZWN0aW9uRmFpbHVyZSwgUmVzb3VyY2VQYXJ0IH0gZnJvbSAnQGF3cy1jZGsvYXNzZXJ0JztcbmltcG9ydCBlYzIgPSByZXF1aXJlKCdAYXdzLWNkay9hd3MtZWMyJyk7XG5pbXBvcnQgaWFtID0gcmVxdWlyZSgnQGF3cy1jZGsvYXdzLWlhbScpO1xuaW1wb3J0IGNkayA9IHJlcXVpcmUoJ0Bhd3MtY2RrL2NkaycpO1xuaW1wb3J0IHsgVGVzdCB9IGZyb20gJ25vZGV1bml0JztcbmltcG9ydCBhdXRvc2NhbGluZyA9IHJlcXVpcmUoJy4uL2xpYicpO1xuXG4vLyB0c2xpbnQ6ZGlzYWJsZTpvYmplY3QtbGl0ZXJhbC1rZXktcXVvdGVzXG5cbmV4cG9ydCA9IHtcbiAgJ2RlZmF1bHQgZmxlZXQnKHRlc3Q6IFRlc3QpIHtcbiAgICBjb25zdCBzdGFjayA9IGdldFRlc3RTdGFjaygpO1xuICAgIGNvbnN0IHZwYyA9IG1vY2tWcGMoc3RhY2spO1xuXG4gICAgbmV3IGF1dG9zY2FsaW5nLkF1dG9TY2FsaW5nR3JvdXAoc3RhY2ssICdNeUZsZWV0Jywge1xuICAgICAgaW5zdGFuY2VUeXBlOiBuZXcgZWMyLkluc3RhbmNlVHlwZVBhaXIoZWMyLkluc3RhbmNlQ2xhc3MuTTQsIGVjMi5JbnN0YW5jZVNpemUuTWljcm8pLFxuICAgICAgbWFjaGluZUltYWdlOiBuZXcgZWMyLkFtYXpvbkxpbnV4SW1hZ2UoKSxcbiAgICAgIHZwY1xuICAgIH0pO1xuXG4gICAgZXhwZWN0KHN0YWNrKS50b01hdGNoKHtcbiAgICAgIFwiUmVzb3VyY2VzXCI6IHtcbiAgICAgICAgXCJNeUZsZWV0SW5zdGFuY2VTZWN1cml0eUdyb3VwNzc0RTgyMzRcIjoge1xuICAgICAgICAgIFwiVHlwZVwiOiBcIkFXUzo6RUMyOjpTZWN1cml0eUdyb3VwXCIsXG4gICAgICAgICAgXCJQcm9wZXJ0aWVzXCI6IHtcbiAgICAgICAgICAgIFwiR3JvdXBEZXNjcmlwdGlvblwiOiBcIk15RmxlZXQvSW5zdGFuY2VTZWN1cml0eUdyb3VwXCIsXG4gICAgICAgICAgICBcIlNlY3VyaXR5R3JvdXBFZ3Jlc3NcIjogW1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgXCJDaWRySXBcIjogXCIwLjAuMC4wLzBcIixcbiAgICAgICAgICAgICAgICBcIkRlc2NyaXB0aW9uXCI6IFwiQWxsb3cgYWxsIG91dGJvdW5kIHRyYWZmaWMgYnkgZGVmYXVsdFwiLFxuICAgICAgICAgICAgICAgIFwiSXBQcm90b2NvbFwiOiBcIi0xXCIsXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBcIlNlY3VyaXR5R3JvdXBJbmdyZXNzXCI6IFtdLFxuICAgICAgICAgICAgXCJUYWdzXCI6IFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIFwiS2V5XCI6IFwiTmFtZVwiLFxuICAgICAgICAgICAgICAgIFwiVmFsdWVcIjogXCJNeUZsZWV0XCJcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXSxcblxuICAgICAgICAgICAgXCJWcGNJZFwiOiBcIm15LXZwY1wiXG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBcIk15RmxlZXRJbnN0YW5jZVJvbGUyNUE4NEFCOFwiOiB7XG4gICAgICAgICAgXCJUeXBlXCI6IFwiQVdTOjpJQU06OlJvbGVcIixcbiAgICAgICAgICBcIlByb3BlcnRpZXNcIjoge1xuICAgICAgICAgICAgXCJBc3N1bWVSb2xlUG9saWN5RG9jdW1lbnRcIjoge1xuICAgICAgICAgICAgICBcIlN0YXRlbWVudFwiOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICBcIkFjdGlvblwiOiBcInN0czpBc3N1bWVSb2xlXCIsXG4gICAgICAgICAgICBcIkVmZmVjdFwiOiBcIkFsbG93XCIsXG4gICAgICAgICAgICBcIlByaW5jaXBhbFwiOiB7XG4gICAgICAgICAgICAgIFwiU2VydmljZVwiOiBcImVjMi5hbWF6b25hd3MuY29tXCJcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICBdLFxuICAgICAgICAgIFwiVmVyc2lvblwiOiBcIjIwMTItMTAtMTdcIlxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBcIk15RmxlZXRJbnN0YW5jZVByb2ZpbGU3MEE1ODQ5NlwiOiB7XG4gICAgICAgIFwiVHlwZVwiOiBcIkFXUzo6SUFNOjpJbnN0YW5jZVByb2ZpbGVcIixcbiAgICAgICAgXCJQcm9wZXJ0aWVzXCI6IHtcbiAgICAgICAgICBcIlJvbGVzXCI6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBcIlJlZlwiOiBcIk15RmxlZXRJbnN0YW5jZVJvbGUyNUE4NEFCOFwiXG4gICAgICAgICAgfVxuICAgICAgICAgIF1cbiAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBcIk15RmxlZXRMYXVuY2hDb25maWc1RDdGOTgwMVwiOiB7XG4gICAgICAgIFwiVHlwZVwiOiBcIkFXUzo6QXV0b1NjYWxpbmc6OkxhdW5jaENvbmZpZ3VyYXRpb25cIixcbiAgICAgICAgXCJQcm9wZXJ0aWVzXCI6IHtcbiAgICAgICAgICBcIklhbUluc3RhbmNlUHJvZmlsZVwiOiB7XG4gICAgICAgICAgXCJSZWZcIjogXCJNeUZsZWV0SW5zdGFuY2VQcm9maWxlNzBBNTg0OTZcIlxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJJbWFnZUlkXCI6IFwiZHVtbXlcIixcbiAgICAgICAgICBcIkluc3RhbmNlVHlwZVwiOiBcIm00Lm1pY3JvXCIsXG4gICAgICAgICAgXCJTZWN1cml0eUdyb3Vwc1wiOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgXCJGbjo6R2V0QXR0XCI6IFtcbiAgICAgICAgICAgIFwiTXlGbGVldEluc3RhbmNlU2VjdXJpdHlHcm91cDc3NEU4MjM0XCIsXG4gICAgICAgICAgICBcIkdyb3VwSWRcIlxuICAgICAgICAgICAgXVxuICAgICAgICAgIH1cbiAgICAgICAgICBdLFxuICAgICAgICAgIFwiVXNlckRhdGFcIjoge1xuICAgICAgICAgIFwiRm46OkJhc2U2NFwiOiBcIiMhL2Jpbi9iYXNoXFxuXCJcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIFwiRGVwZW5kc09uXCI6IFtcbiAgICAgICAgICBcIk15RmxlZXRJbnN0YW5jZVJvbGUyNUE4NEFCOFwiXG4gICAgICAgIF1cbiAgICAgICAgfSxcbiAgICAgICAgXCJNeUZsZWV0QVNHODhFNTU4ODZcIjoge1xuICAgICAgICBcIlR5cGVcIjogXCJBV1M6OkF1dG9TY2FsaW5nOjpBdXRvU2NhbGluZ0dyb3VwXCIsXG4gICAgICAgIFwiVXBkYXRlUG9saWN5XCI6IHtcbiAgICAgICAgICBcIkF1dG9TY2FsaW5nU2NoZWR1bGVkQWN0aW9uXCI6IHtcbiAgICAgICAgICBcIklnbm9yZVVubW9kaWZpZWRHcm91cFNpemVQcm9wZXJ0aWVzXCI6IHRydWVcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIFwiUHJvcGVydGllc1wiOiB7XG4gICAgICAgICAgXCJEZXNpcmVkQ2FwYWNpdHlcIjogXCIxXCIsXG4gICAgICAgICAgXCJMYXVuY2hDb25maWd1cmF0aW9uTmFtZVwiOiB7XG4gICAgICAgICAgXCJSZWZcIjogXCJNeUZsZWV0TGF1bmNoQ29uZmlnNUQ3Rjk4MDFcIlxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJUYWdzXCI6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgXCJLZXlcIjogXCJOYW1lXCIsXG4gICAgICAgICAgICAgIFwiUHJvcGFnYXRlQXRMYXVuY2hcIjogdHJ1ZSxcbiAgICAgICAgICAgICAgXCJWYWx1ZVwiOiBcIk15RmxlZXRcIlxuICAgICAgICAgICAgfVxuICAgICAgICAgIF0sXG5cbiAgICAgICAgICBcIk1heFNpemVcIjogXCIxXCIsXG4gICAgICAgICAgXCJNaW5TaXplXCI6IFwiMVwiLFxuICAgICAgICAgIFwiVlBDWm9uZUlkZW50aWZpZXJcIjogW1xuICAgICAgICAgICAgXCJwcmkxXCJcbiAgICAgICAgICBdXG4gICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdGVzdC5kb25lKCk7XG4gIH0sXG5cbiAgJ2NhbiBzZXQgbWluQ2FwYWNpdHksIG1heENhcGFjaXR5LCBkZXNpcmVkQ2FwYWNpdHkgdG8gMCcodGVzdDogVGVzdCkge1xuICAgIGNvbnN0IHN0YWNrID0gbmV3IGNkay5TdGFjayh1bmRlZmluZWQsICdNeVN0YWNrJywgeyBlbnY6IHsgcmVnaW9uOiAndXMtZWFzdC0xJywgYWNjb3VudDogJzEyMzQnIH19KTtcbiAgICBjb25zdCB2cGMgPSBtb2NrVnBjKHN0YWNrKTtcblxuICAgIG5ldyBhdXRvc2NhbGluZy5BdXRvU2NhbGluZ0dyb3VwKHN0YWNrLCAnTXlGbGVldCcsIHtcbiAgICAgIGluc3RhbmNlVHlwZTogbmV3IGVjMi5JbnN0YW5jZVR5cGVQYWlyKGVjMi5JbnN0YW5jZUNsYXNzLk00LCBlYzIuSW5zdGFuY2VTaXplLk1pY3JvKSxcbiAgICAgIG1hY2hpbmVJbWFnZTogbmV3IGVjMi5BbWF6b25MaW51eEltYWdlKCksXG4gICAgICB2cGMsXG4gICAgICBtaW5DYXBhY2l0eTogMCxcbiAgICAgIG1heENhcGFjaXR5OiAwLFxuICAgICAgZGVzaXJlZENhcGFjaXR5OiAwXG4gICAgfSk7XG5cbiAgICBleHBlY3Qoc3RhY2spLnRvKGhhdmVSZXNvdXJjZShcIkFXUzo6QXV0b1NjYWxpbmc6OkF1dG9TY2FsaW5nR3JvdXBcIiwge1xuICAgICAgICBNaW5TaXplOiBcIjBcIixcbiAgICAgICAgTWF4U2l6ZTogXCIwXCIsXG4gICAgICAgIERlc2lyZWRDYXBhY2l0eTogXCIwXCIsXG4gICAgICB9XG4gICAgKSk7XG5cbiAgICB0ZXN0LmRvbmUoKTtcbiAgfSxcblxuICAnY2FuIHNwZWNpZnkgb25seSBtaW4gY2FwYWNpdHknKHRlc3Q6IFRlc3QpIHtcbiAgICAvLyBHSVZFTlxuICAgIGNvbnN0IHN0YWNrID0gbmV3IGNkay5TdGFjaygpO1xuICAgIGNvbnN0IHZwYyA9IG1vY2tWcGMoc3RhY2spO1xuXG4gICAgLy8gV0hFTlxuICAgIG5ldyBhdXRvc2NhbGluZy5BdXRvU2NhbGluZ0dyb3VwKHN0YWNrLCAnTXlGbGVldCcsIHtcbiAgICAgIGluc3RhbmNlVHlwZTogbmV3IGVjMi5JbnN0YW5jZVR5cGVQYWlyKGVjMi5JbnN0YW5jZUNsYXNzLk00LCBlYzIuSW5zdGFuY2VTaXplLk1pY3JvKSxcbiAgICAgIG1hY2hpbmVJbWFnZTogbmV3IGVjMi5BbWF6b25MaW51eEltYWdlKCksXG4gICAgICB2cGMsXG4gICAgICBtaW5DYXBhY2l0eTogMTBcbiAgICB9KTtcblxuICAgIC8vIFRIRU5cbiAgICBleHBlY3Qoc3RhY2spLnRvKGhhdmVSZXNvdXJjZShcIkFXUzo6QXV0b1NjYWxpbmc6OkF1dG9TY2FsaW5nR3JvdXBcIiwge1xuICAgICAgICBNaW5TaXplOiBcIjEwXCIsXG4gICAgICAgIE1heFNpemU6IFwiMTBcIixcbiAgICAgICAgRGVzaXJlZENhcGFjaXR5OiBcIjEwXCIsXG4gICAgICB9XG4gICAgKSk7XG5cbiAgICB0ZXN0LmRvbmUoKTtcbiAgfSxcblxuICAnY2FuIHNwZWNpZnkgb25seSBtYXggY2FwYWNpdHknKHRlc3Q6IFRlc3QpIHtcbiAgICAvLyBHSVZFTlxuICAgIGNvbnN0IHN0YWNrID0gbmV3IGNkay5TdGFjaygpO1xuICAgIGNvbnN0IHZwYyA9IG1vY2tWcGMoc3RhY2spO1xuXG4gICAgLy8gV0hFTlxuICAgIG5ldyBhdXRvc2NhbGluZy5BdXRvU2NhbGluZ0dyb3VwKHN0YWNrLCAnTXlGbGVldCcsIHtcbiAgICAgIGluc3RhbmNlVHlwZTogbmV3IGVjMi5JbnN0YW5jZVR5cGVQYWlyKGVjMi5JbnN0YW5jZUNsYXNzLk00LCBlYzIuSW5zdGFuY2VTaXplLk1pY3JvKSxcbiAgICAgIG1hY2hpbmVJbWFnZTogbmV3IGVjMi5BbWF6b25MaW51eEltYWdlKCksXG4gICAgICB2cGMsXG4gICAgICBtYXhDYXBhY2l0eTogMTBcbiAgICB9KTtcblxuICAgIC8vIFRIRU5cbiAgICBleHBlY3Qoc3RhY2spLnRvKGhhdmVSZXNvdXJjZShcIkFXUzo6QXV0b1NjYWxpbmc6OkF1dG9TY2FsaW5nR3JvdXBcIiwge1xuICAgICAgICBNaW5TaXplOiBcIjFcIixcbiAgICAgICAgTWF4U2l6ZTogXCIxMFwiLFxuICAgICAgICBEZXNpcmVkQ2FwYWNpdHk6IFwiMTBcIixcbiAgICAgIH1cbiAgICApKTtcblxuICAgIHRlc3QuZG9uZSgpO1xuICB9LFxuXG4gICdjYW4gc3BlY2lmeSBvbmx5IGRlc2lyZWRDb3VudCcodGVzdDogVGVzdCkge1xuICAgIC8vIEdJVkVOXG4gICAgY29uc3Qgc3RhY2sgPSBuZXcgY2RrLlN0YWNrKCk7XG4gICAgY29uc3QgdnBjID0gbW9ja1ZwYyhzdGFjayk7XG5cbiAgICAvLyBXSEVOXG4gICAgbmV3IGF1dG9zY2FsaW5nLkF1dG9TY2FsaW5nR3JvdXAoc3RhY2ssICdNeUZsZWV0Jywge1xuICAgICAgaW5zdGFuY2VUeXBlOiBuZXcgZWMyLkluc3RhbmNlVHlwZVBhaXIoZWMyLkluc3RhbmNlQ2xhc3MuTTQsIGVjMi5JbnN0YW5jZVNpemUuTWljcm8pLFxuICAgICAgbWFjaGluZUltYWdlOiBuZXcgZWMyLkFtYXpvbkxpbnV4SW1hZ2UoKSxcbiAgICAgIHZwYyxcbiAgICAgIGRlc2lyZWRDYXBhY2l0eTogMTBcbiAgICB9KTtcblxuICAgIC8vIFRIRU5cbiAgICBleHBlY3Qoc3RhY2spLnRvKGhhdmVSZXNvdXJjZShcIkFXUzo6QXV0b1NjYWxpbmc6OkF1dG9TY2FsaW5nR3JvdXBcIiwge1xuICAgICAgICBNaW5TaXplOiBcIjFcIixcbiAgICAgICAgTWF4U2l6ZTogXCIxMFwiLFxuICAgICAgICBEZXNpcmVkQ2FwYWNpdHk6IFwiMTBcIixcbiAgICAgIH1cbiAgICApKTtcblxuICAgIHRlc3QuZG9uZSgpO1xuICB9LFxuXG4gICdhZGRUb1JvbGVQb2xpY3kgY2FuIGJlIHVzZWQgdG8gYWRkIHN0YXRlbWVudHMgdG8gdGhlIHJvbGUgcG9saWN5Jyh0ZXN0OiBUZXN0KSB7XG4gICAgY29uc3Qgc3RhY2sgPSBuZXcgY2RrLlN0YWNrKHVuZGVmaW5lZCwgJ015U3RhY2snLCB7IGVudjogeyByZWdpb246ICd1cy1lYXN0LTEnLCBhY2NvdW50OiAnMTIzNCcgfX0pO1xuICAgIGNvbnN0IHZwYyA9IG1vY2tWcGMoc3RhY2spO1xuXG4gICAgY29uc3QgZmxlZXQgPSBuZXcgYXV0b3NjYWxpbmcuQXV0b1NjYWxpbmdHcm91cChzdGFjaywgJ015RmxlZXQnLCB7XG4gICAgICBpbnN0YW5jZVR5cGU6IG5ldyBlYzIuSW5zdGFuY2VUeXBlUGFpcihlYzIuSW5zdGFuY2VDbGFzcy5NNCwgZWMyLkluc3RhbmNlU2l6ZS5NaWNybyksXG4gICAgICBtYWNoaW5lSW1hZ2U6IG5ldyBlYzIuQW1hem9uTGludXhJbWFnZSgpLFxuICAgICAgdnBjXG4gICAgfSk7XG5cbiAgICBmbGVldC5hZGRUb1JvbGVQb2xpY3kobmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoKVxuICAgICAgLmFkZEFjdGlvbigndGVzdDpTcGVjaWFsTmFtZScpXG4gICAgICAuYWRkQWxsUmVzb3VyY2VzKCkpO1xuXG4gICAgZXhwZWN0KHN0YWNrKS50byhoYXZlUmVzb3VyY2UoJ0FXUzo6SUFNOjpQb2xpY3knLCB7XG4gICAgICBQb2xpY3lEb2N1bWVudDoge1xuICAgICAgICBWZXJzaW9uOiAnMjAxMi0xMC0xNycsXG4gICAgICAgIFN0YXRlbWVudDogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIEFjdGlvbjogXCJ0ZXN0OlNwZWNpYWxOYW1lXCIsXG4gICAgICAgICAgICBFZmZlY3Q6IFwiQWxsb3dcIixcbiAgICAgICAgICAgIFJlc291cmNlOiBcIipcIlxuICAgICAgICAgIH1cbiAgICAgICAgXSxcbiAgICAgIH0sXG4gICAgfSkpO1xuICAgIHRlc3QuZG9uZSgpO1xuICB9LFxuXG4gICdjYW4gY29uZmlndXJlIHJlcGxhY2luZyB1cGRhdGUnKHRlc3Q6IFRlc3QpIHtcbiAgICAvLyBHSVZFTlxuICAgIGNvbnN0IHN0YWNrID0gbmV3IGNkay5TdGFjayh1bmRlZmluZWQsICdNeVN0YWNrJywgeyBlbnY6IHsgcmVnaW9uOiAndXMtZWFzdC0xJywgYWNjb3VudDogJzEyMzQnIH19KTtcbiAgICBjb25zdCB2cGMgPSBtb2NrVnBjKHN0YWNrKTtcblxuICAgIC8vIFdIRU5cbiAgICBuZXcgYXV0b3NjYWxpbmcuQXV0b1NjYWxpbmdHcm91cChzdGFjaywgJ015RmxlZXQnLCB7XG4gICAgICBpbnN0YW5jZVR5cGU6IG5ldyBlYzIuSW5zdGFuY2VUeXBlUGFpcihlYzIuSW5zdGFuY2VDbGFzcy5NNCwgZWMyLkluc3RhbmNlU2l6ZS5NaWNybyksXG4gICAgICBtYWNoaW5lSW1hZ2U6IG5ldyBlYzIuQW1hem9uTGludXhJbWFnZSgpLFxuICAgICAgdnBjLFxuICAgICAgdXBkYXRlVHlwZTogYXV0b3NjYWxpbmcuVXBkYXRlVHlwZS5SZXBsYWNpbmdVcGRhdGUsXG4gICAgICByZXBsYWNpbmdVcGRhdGVNaW5TdWNjZXNzZnVsSW5zdGFuY2VzUGVyY2VudDogNTBcbiAgICB9KTtcblxuICAgIC8vIFRIRU5cbiAgICBleHBlY3Qoc3RhY2spLnRvKGhhdmVSZXNvdXJjZUxpa2UoXCJBV1M6OkF1dG9TY2FsaW5nOjpBdXRvU2NhbGluZ0dyb3VwXCIsIHtcbiAgICAgIFVwZGF0ZVBvbGljeToge1xuICAgICAgICBBdXRvU2NhbGluZ1JlcGxhY2luZ1VwZGF0ZToge1xuICAgICAgICBXaWxsUmVwbGFjZTogdHJ1ZVxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgQ3JlYXRpb25Qb2xpY3k6IHtcbiAgICAgICAgQXV0b1NjYWxpbmdDcmVhdGlvblBvbGljeToge1xuICAgICAgICBNaW5TdWNjZXNzZnVsSW5zdGFuY2VzUGVyY2VudDogNTBcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sIFJlc291cmNlUGFydC5Db21wbGV0ZURlZmluaXRpb24pKTtcblxuICAgIHRlc3QuZG9uZSgpO1xuICB9LFxuXG4gICdjYW4gY29uZmlndXJlIHJvbGxpbmcgdXBkYXRlJyh0ZXN0OiBUZXN0KSB7XG4gICAgLy8gR0lWRU5cbiAgICBjb25zdCBzdGFjayA9IG5ldyBjZGsuU3RhY2sodW5kZWZpbmVkLCAnTXlTdGFjaycsIHsgZW52OiB7IHJlZ2lvbjogJ3VzLWVhc3QtMScsIGFjY291bnQ6ICcxMjM0JyB9fSk7XG4gICAgY29uc3QgdnBjID0gbW9ja1ZwYyhzdGFjayk7XG5cbiAgICAvLyBXSEVOXG4gICAgbmV3IGF1dG9zY2FsaW5nLkF1dG9TY2FsaW5nR3JvdXAoc3RhY2ssICdNeUZsZWV0Jywge1xuICAgICAgaW5zdGFuY2VUeXBlOiBuZXcgZWMyLkluc3RhbmNlVHlwZVBhaXIoZWMyLkluc3RhbmNlQ2xhc3MuTTQsIGVjMi5JbnN0YW5jZVNpemUuTWljcm8pLFxuICAgICAgbWFjaGluZUltYWdlOiBuZXcgZWMyLkFtYXpvbkxpbnV4SW1hZ2UoKSxcbiAgICAgIHZwYyxcbiAgICAgIHVwZGF0ZVR5cGU6IGF1dG9zY2FsaW5nLlVwZGF0ZVR5cGUuUm9sbGluZ1VwZGF0ZSxcbiAgICAgIHJvbGxpbmdVcGRhdGVDb25maWd1cmF0aW9uOiB7XG4gICAgICAgIG1pblN1Y2Nlc3NmdWxJbnN0YW5jZXNQZXJjZW50OiA1MCxcbiAgICAgICAgcGF1c2VUaW1lU2VjOiAzNDVcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIC8vIFRIRU5cbiAgICBleHBlY3Qoc3RhY2spLnRvKGhhdmVSZXNvdXJjZUxpa2UoXCJBV1M6OkF1dG9TY2FsaW5nOjpBdXRvU2NhbGluZ0dyb3VwXCIsIHtcbiAgICAgIFVwZGF0ZVBvbGljeToge1xuICAgICAgICBcIkF1dG9TY2FsaW5nUm9sbGluZ1VwZGF0ZVwiOiB7XG4gICAgICAgIFwiTWluU3VjY2Vzc2Z1bEluc3RhbmNlc1BlcmNlbnRcIjogNTAsXG4gICAgICAgIFwiV2FpdE9uUmVzb3VyY2VTaWduYWxzXCI6IHRydWUsXG4gICAgICAgIFwiUGF1c2VUaW1lXCI6IFwiUFQ1TTQ1U1wiLFxuICAgICAgICBcIlN1c3BlbmRQcm9jZXNzZXNcIjogWyBcIkhlYWx0aENoZWNrXCIsIFwiUmVwbGFjZVVuaGVhbHRoeVwiLCBcIkFaUmViYWxhbmNlXCIsIFwiQWxhcm1Ob3RpZmljYXRpb25cIiwgXCJTY2hlZHVsZWRBY3Rpb25zXCIgXVxuICAgICAgICB9LFxuICAgICAgfVxuICAgIH0sIFJlc291cmNlUGFydC5Db21wbGV0ZURlZmluaXRpb24pKTtcblxuICAgIHRlc3QuZG9uZSgpO1xuICB9LFxuXG4gICdjYW4gY29uZmlndXJlIHJlc291cmNlIHNpZ25hbHMnKHRlc3Q6IFRlc3QpIHtcbiAgICAvLyBHSVZFTlxuICAgIGNvbnN0IHN0YWNrID0gbmV3IGNkay5TdGFjayh1bmRlZmluZWQsICdNeVN0YWNrJywgeyBlbnY6IHsgcmVnaW9uOiAndXMtZWFzdC0xJywgYWNjb3VudDogJzEyMzQnIH19KTtcbiAgICBjb25zdCB2cGMgPSBtb2NrVnBjKHN0YWNrKTtcblxuICAgIC8vIFdIRU5cbiAgICBuZXcgYXV0b3NjYWxpbmcuQXV0b1NjYWxpbmdHcm91cChzdGFjaywgJ015RmxlZXQnLCB7XG4gICAgICBpbnN0YW5jZVR5cGU6IG5ldyBlYzIuSW5zdGFuY2VUeXBlUGFpcihlYzIuSW5zdGFuY2VDbGFzcy5NNCwgZWMyLkluc3RhbmNlU2l6ZS5NaWNybyksXG4gICAgICBtYWNoaW5lSW1hZ2U6IG5ldyBlYzIuQW1hem9uTGludXhJbWFnZSgpLFxuICAgICAgdnBjLFxuICAgICAgcmVzb3VyY2VTaWduYWxDb3VudDogNSxcbiAgICAgIHJlc291cmNlU2lnbmFsVGltZW91dFNlYzogNjY2XG4gICAgfSk7XG5cbiAgICAvLyBUSEVOXG4gICAgZXhwZWN0KHN0YWNrKS50byhoYXZlUmVzb3VyY2VMaWtlKFwiQVdTOjpBdXRvU2NhbGluZzo6QXV0b1NjYWxpbmdHcm91cFwiLCB7XG4gICAgICBDcmVhdGlvblBvbGljeToge1xuICAgICAgICBSZXNvdXJjZVNpZ25hbDoge1xuICAgICAgICAgIENvdW50OiA1LFxuICAgICAgICAgIFRpbWVvdXQ6ICdQVDExTTZTJ1xuICAgICAgICB9LFxuICAgICAgfVxuICAgIH0sIFJlc291cmNlUGFydC5Db21wbGV0ZURlZmluaXRpb24pKTtcblxuICAgIHRlc3QuZG9uZSgpO1xuICB9LFxuICAnY2FuIGFkZCBTZWN1cml0eSBHcm91cCB0byBGbGVldCcodGVzdDogVGVzdCkge1xuICAgIC8vIEdJVkVOXG4gICAgY29uc3Qgc3RhY2sgPSBuZXcgY2RrLlN0YWNrKHVuZGVmaW5lZCwgJ015U3RhY2snLCB7IGVudjogeyByZWdpb246ICd1cy1lYXN0LTEnLCBhY2NvdW50OiAnMTIzNCcgfX0pO1xuICAgIGNvbnN0IHZwYyA9IG1vY2tWcGMoc3RhY2spO1xuXG4gICAgLy8gV0hFTlxuICAgIGNvbnN0IGFzZyA9IG5ldyBhdXRvc2NhbGluZy5BdXRvU2NhbGluZ0dyb3VwKHN0YWNrLCAnTXlGbGVldCcsIHtcbiAgICAgIGluc3RhbmNlVHlwZTogbmV3IGVjMi5JbnN0YW5jZVR5cGVQYWlyKGVjMi5JbnN0YW5jZUNsYXNzLk00LCBlYzIuSW5zdGFuY2VTaXplLk1pY3JvKSxcbiAgICAgIG1hY2hpbmVJbWFnZTogbmV3IGVjMi5BbWF6b25MaW51eEltYWdlKCksXG4gICAgICB2cGMsXG4gICAgfSk7XG4gICAgYXNnLmFkZFNlY3VyaXR5R3JvdXAobW9ja1NlY3VyaXR5R3JvdXAoc3RhY2spKTtcbiAgICBleHBlY3Qoc3RhY2spLnRvKGhhdmVSZXNvdXJjZShcIkFXUzo6QXV0b1NjYWxpbmc6OkxhdW5jaENvbmZpZ3VyYXRpb25cIiwge1xuICAgICAgU2VjdXJpdHlHcm91cHM6IFtcbiAgICAgICAge1xuICAgICAgICAgIFwiRm46OkdldEF0dFwiOiBbXG4gICAgICAgICAgICBcIk15RmxlZXRJbnN0YW5jZVNlY3VyaXR5R3JvdXA3NzRFODIzNFwiLFxuICAgICAgICAgICAgXCJHcm91cElkXCJcbiAgICAgICAgICBdXG4gICAgICAgIH0sXG4gICAgICAgICdtb3N0LXNlY3VyZSddLFxuICAgIH0pKTtcbiAgICB0ZXN0LmRvbmUoKTtcbiAgfSxcbiAgJ2NhbiBzZXQgdGFncycodGVzdDogVGVzdCkge1xuICAgIC8vIEdJVkVOXG4gICAgY29uc3Qgc3RhY2sgPSBnZXRUZXN0U3RhY2soKTtcbiAgICAgIC8vIG5ldyBjZGsuU3RhY2sodW5kZWZpbmVkLCAnTXlTdGFjaycsIHsgZW52OiB7IHJlZ2lvbjogJ3VzLWVhc3QtMScsIGFjY291bnQ6ICcxMjM0JyB9fSk7XG4gICAgY29uc3QgdnBjID0gbW9ja1ZwYyhzdGFjayk7XG5cbiAgICAvLyBXSEVOXG4gICAgY29uc3QgYXNnID0gbmV3IGF1dG9zY2FsaW5nLkF1dG9TY2FsaW5nR3JvdXAoc3RhY2ssICdNeUZsZWV0Jywge1xuICAgICAgaW5zdGFuY2VUeXBlOiBuZXcgZWMyLkluc3RhbmNlVHlwZVBhaXIoZWMyLkluc3RhbmNlQ2xhc3MuTTQsIGVjMi5JbnN0YW5jZVNpemUuTWljcm8pLFxuICAgICAgbWFjaGluZUltYWdlOiBuZXcgZWMyLkFtYXpvbkxpbnV4SW1hZ2UoKSxcbiAgICAgIHZwYyxcbiAgICAgIHVwZGF0ZVR5cGU6IGF1dG9zY2FsaW5nLlVwZGF0ZVR5cGUuUm9sbGluZ1VwZGF0ZSxcbiAgICAgIHJvbGxpbmdVcGRhdGVDb25maWd1cmF0aW9uOiB7XG4gICAgICAgIG1pblN1Y2Nlc3NmdWxJbnN0YW5jZXNQZXJjZW50OiA1MCxcbiAgICAgICAgcGF1c2VUaW1lU2VjOiAzNDVcbiAgICAgIH0sXG4gICAgfSk7XG4gICAgYXNnLm5vZGUuYXBwbHkobmV3IGNkay5UYWcoJ3N1cGVyZm9vZCcsICdhY2FpJykpO1xuICAgIGFzZy5ub2RlLmFwcGx5KG5ldyBjZGsuVGFnKCdub3RzdXBlcicsICdjYXJhbWVsJywgeyBhcHBseVRvTGF1bmNoZWRJbnN0YW5jZXM6IGZhbHNlIH0pKTtcblxuICAgIC8vIFRIRU5cbiAgICBleHBlY3Qoc3RhY2spLnRvKGhhdmVSZXNvdXJjZShcIkFXUzo6QXV0b1NjYWxpbmc6OkF1dG9TY2FsaW5nR3JvdXBcIiwge1xuICAgICAgVGFnczogW1xuICAgICAgICB7XG4gICAgICAgICAgS2V5OiAnTmFtZScsXG4gICAgICAgICAgUHJvcGFnYXRlQXRMYXVuY2g6IHRydWUsXG4gICAgICAgICAgVmFsdWU6ICdNeUZsZWV0JyxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIEtleTogJ3N1cGVyZm9vZCcsXG4gICAgICAgICAgUHJvcGFnYXRlQXRMYXVuY2g6IHRydWUsXG4gICAgICAgICAgVmFsdWU6ICdhY2FpJyxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIEtleTogJ25vdHN1cGVyJyxcbiAgICAgICAgICBQcm9wYWdhdGVBdExhdW5jaDogZmFsc2UsXG4gICAgICAgICAgVmFsdWU6ICdjYXJhbWVsJyxcbiAgICAgICAgfSxcbiAgICAgIF1cbiAgICB9KSk7XG4gICAgdGVzdC5kb25lKCk7XG4gIH0sXG4gICdhbGxvd3MgYXNzb2NpYXRpb24gb2YgcHVibGljIElQIGFkZHJlc3MnKHRlc3Q6IFRlc3QpIHtcbiAgICAvLyBHSVZFTlxuICAgIGNvbnN0IHN0YWNrID0gbmV3IGNkay5TdGFjaygpO1xuICAgIGNvbnN0IHZwYyA9IG1vY2tWcGMoc3RhY2spO1xuXG4gICAgLy8gV0hFTlxuICAgIG5ldyBhdXRvc2NhbGluZy5BdXRvU2NhbGluZ0dyb3VwKHN0YWNrLCAnTXlTdGFjaycsIHtcbiAgICAgIGluc3RhbmNlVHlwZTogbmV3IGVjMi5JbnN0YW5jZVR5cGVQYWlyKGVjMi5JbnN0YW5jZUNsYXNzLk00LCBlYzIuSW5zdGFuY2VTaXplLk1pY3JvKSxcbiAgICAgIG1hY2hpbmVJbWFnZTogbmV3IGVjMi5BbWF6b25MaW51eEltYWdlKCksXG4gICAgICB2cGMsXG4gICAgICBtaW5DYXBhY2l0eTogMCxcbiAgICAgIG1heENhcGFjaXR5OiAwLFxuICAgICAgZGVzaXJlZENhcGFjaXR5OiAwLFxuXG4gICAgICB2cGNTdWJuZXRzOiB7IHN1Ym5ldFR5cGU6IGVjMi5TdWJuZXRUeXBlLlB1YmxpYyB9LFxuICAgICAgYXNzb2NpYXRlUHVibGljSXBBZGRyZXNzOiB0cnVlLFxuICAgIH0pO1xuXG4gICAgLy8gVEhFTlxuICAgIGV4cGVjdChzdGFjaykudG8oaGF2ZVJlc291cmNlKFwiQVdTOjpBdXRvU2NhbGluZzo6TGF1bmNoQ29uZmlndXJhdGlvblwiLCB7XG4gICAgICAgIEFzc29jaWF0ZVB1YmxpY0lwQWRkcmVzczogdHJ1ZSxcbiAgICAgIH1cbiAgICApKTtcbiAgICB0ZXN0LmRvbmUoKTtcbiAgfSxcbiAgJ2Fzc29jaWF0aW9uIG9mIHB1YmxpYyBJUCBhZGRyZXNzIHJlcXVpcmVzIHB1YmxpYyBzdWJuZXQnKHRlc3Q6IFRlc3QpIHtcbiAgICAvLyBHSVZFTlxuICAgIGNvbnN0IHN0YWNrID0gbmV3IGNkay5TdGFjaygpO1xuICAgIGNvbnN0IHZwYyA9IG1vY2tWcGMoc3RhY2spO1xuXG4gICAgLy8gV0hFTlxuICAgIHRlc3QudGhyb3dzKCgpID0+IHtcbiAgICAgIG5ldyBhdXRvc2NhbGluZy5BdXRvU2NhbGluZ0dyb3VwKHN0YWNrLCAnTXlTdGFjaycsIHtcbiAgICAgICAgaW5zdGFuY2VUeXBlOiBuZXcgZWMyLkluc3RhbmNlVHlwZVBhaXIoZWMyLkluc3RhbmNlQ2xhc3MuTTQsIGVjMi5JbnN0YW5jZVNpemUuTWljcm8pLFxuICAgICAgICBtYWNoaW5lSW1hZ2U6IG5ldyBlYzIuQW1hem9uTGludXhJbWFnZSgpLFxuICAgICAgICB2cGMsXG4gICAgICAgIG1pbkNhcGFjaXR5OiAwLFxuICAgICAgICBtYXhDYXBhY2l0eTogMCxcbiAgICAgICAgZGVzaXJlZENhcGFjaXR5OiAwLFxuICAgICAgICBhc3NvY2lhdGVQdWJsaWNJcEFkZHJlc3M6IHRydWUsXG4gICAgICB9KTtcbiAgICB9KTtcbiAgICB0ZXN0LmRvbmUoKTtcbiAgfSxcbiAgJ2FsbG93cyBkaXNhc3NvY2lhdGlvbiBvZiBwdWJsaWMgSVAgYWRkcmVzcycodGVzdDogVGVzdCkge1xuICAgIC8vIEdJVkVOXG4gICAgY29uc3Qgc3RhY2sgPSBuZXcgY2RrLlN0YWNrKCk7XG4gICAgY29uc3QgdnBjID0gbW9ja1ZwYyhzdGFjayk7XG5cbiAgICAvLyBXSEVOXG4gICAgbmV3IGF1dG9zY2FsaW5nLkF1dG9TY2FsaW5nR3JvdXAoc3RhY2ssICdNeVN0YWNrJywge1xuICAgICAgaW5zdGFuY2VUeXBlOiBuZXcgZWMyLkluc3RhbmNlVHlwZVBhaXIoZWMyLkluc3RhbmNlQ2xhc3MuTTQsIGVjMi5JbnN0YW5jZVNpemUuTWljcm8pLFxuICAgICAgbWFjaGluZUltYWdlOiBuZXcgZWMyLkFtYXpvbkxpbnV4SW1hZ2UoKSxcbiAgICAgIHZwYyxcbiAgICAgIG1pbkNhcGFjaXR5OiAwLFxuICAgICAgbWF4Q2FwYWNpdHk6IDAsXG4gICAgICBkZXNpcmVkQ2FwYWNpdHk6IDAsXG4gICAgICBhc3NvY2lhdGVQdWJsaWNJcEFkZHJlc3M6IGZhbHNlLFxuICAgIH0pO1xuXG4gICAgLy8gVEhFTlxuICAgIGV4cGVjdChzdGFjaykudG8oaGF2ZVJlc291cmNlKFwiQVdTOjpBdXRvU2NhbGluZzo6TGF1bmNoQ29uZmlndXJhdGlvblwiLCB7XG4gICAgICAgIEFzc29jaWF0ZVB1YmxpY0lwQWRkcmVzczogZmFsc2UsXG4gICAgICB9XG4gICAgKSk7XG4gICAgdGVzdC5kb25lKCk7XG4gIH0sXG4gICdkb2VzIG5vdCBzcGVjaWZ5IHB1YmxpYyBJUCBhZGRyZXNzIGFzc29jaWF0aW9uIGJ5IGRlZmF1bHQnKHRlc3Q6IFRlc3QpIHtcbiAgICAvLyBHSVZFTlxuICAgIGNvbnN0IHN0YWNrID0gbmV3IGNkay5TdGFjaygpO1xuICAgIGNvbnN0IHZwYyA9IG1vY2tWcGMoc3RhY2spO1xuXG4gICAgLy8gV0hFTlxuICAgIG5ldyBhdXRvc2NhbGluZy5BdXRvU2NhbGluZ0dyb3VwKHN0YWNrLCAnTXlTdGFjaycsIHtcbiAgICAgIGluc3RhbmNlVHlwZTogbmV3IGVjMi5JbnN0YW5jZVR5cGVQYWlyKGVjMi5JbnN0YW5jZUNsYXNzLk00LCBlYzIuSW5zdGFuY2VTaXplLk1pY3JvKSxcbiAgICAgIG1hY2hpbmVJbWFnZTogbmV3IGVjMi5BbWF6b25MaW51eEltYWdlKCksXG4gICAgICB2cGMsXG4gICAgICBtaW5DYXBhY2l0eTogMCxcbiAgICAgIG1heENhcGFjaXR5OiAwLFxuICAgICAgZGVzaXJlZENhcGFjaXR5OiAwLFxuICAgIH0pO1xuXG4gICAgLy8gVEhFTlxuICAgIGV4cGVjdChzdGFjaykudG8oaGF2ZVJlc291cmNlKFwiQVdTOjpBdXRvU2NhbGluZzo6TGF1bmNoQ29uZmlndXJhdGlvblwiLCAocmVzb3VyY2U6IGFueSwgZXJyb3JzOiBJbnNwZWN0aW9uRmFpbHVyZSkgPT4ge1xuICAgICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMocmVzb3VyY2UpKSB7XG4gICAgICAgIGlmIChrZXkgPT09IFwiQXNzb2NpYXRlUHVibGljSXBBZGRyZXNzXCIpIHtcbiAgICAgICAgICBlcnJvcnMuZmFpbHVyZVJlYXNvbiA9IFwiSGFzIEFzc29jaWF0ZVB1YmxpY0lwQWRkcmVzc1wiO1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSkpO1xuICAgIHRlc3QuZG9uZSgpO1xuICB9LFxuXG4gICdhbiBleGlzdGluZyByb2xlIGNhbiBiZSBzcGVjaWZpZWQgaW5zdGVhZCBvZiBhdXRvLWNyZWF0ZWQnKHRlc3Q6IFRlc3QpIHtcbiAgICAvLyBHSVZFTlxuICAgIGNvbnN0IHN0YWNrID0gbmV3IGNkay5TdGFjaygpO1xuICAgIGNvbnN0IHZwYyA9IG1vY2tWcGMoc3RhY2spO1xuICAgIGNvbnN0IGltcG9ydGVkUm9sZSA9IGlhbS5Sb2xlLmZyb21Sb2xlQXJuKHN0YWNrLCAnSW1wb3J0ZWRSb2xlJywgJ2Fybjphd3M6aWFtOjoxMjM0NTY3ODkwMTI6cm9sZS9IZWxsb0R1ZGUnKTtcblxuICAgIC8vIFdIRU5cbiAgICBjb25zdCBhc2cgPSBuZXcgYXV0b3NjYWxpbmcuQXV0b1NjYWxpbmdHcm91cChzdGFjaywgJ015QVNHJywge1xuICAgICAgdnBjLFxuICAgICAgaW5zdGFuY2VUeXBlOiBuZXcgZWMyLkluc3RhbmNlVHlwZVBhaXIoZWMyLkluc3RhbmNlQ2xhc3MuTTQsIGVjMi5JbnN0YW5jZVNpemUuTWljcm8pLFxuICAgICAgbWFjaGluZUltYWdlOiBuZXcgZWMyLkFtYXpvbkxpbnV4SW1hZ2UoKSxcbiAgICAgIHJvbGU6IGltcG9ydGVkUm9sZVxuICAgIH0pO1xuXG4gICAgLy8gVEhFTlxuICAgIHRlc3Quc2FtZShhc2cucm9sZSwgaW1wb3J0ZWRSb2xlKTtcbiAgICBleHBlY3Qoc3RhY2spLnRvKGhhdmVSZXNvdXJjZSgnQVdTOjpJQU06Okluc3RhbmNlUHJvZmlsZScsIHtcbiAgICAgIFwiUm9sZXNcIjogWyBcIkhlbGxvRHVkZVwiIF1cbiAgICB9KSk7XG4gICAgdGVzdC5kb25lKCk7XG4gIH1cbn07XG5cbmZ1bmN0aW9uIG1vY2tWcGMoc3RhY2s6IGNkay5TdGFjaykge1xuICByZXR1cm4gZWMyLlZwY05ldHdvcmsuaW1wb3J0KHN0YWNrLCAnTXlWcGMnLCB7XG4gICAgdnBjSWQ6ICdteS12cGMnLFxuICAgIGF2YWlsYWJpbGl0eVpvbmVzOiBbICdhejEnIF0sXG4gICAgcHVibGljU3VibmV0SWRzOiBbICdwdWIxJyBdLFxuICAgIHByaXZhdGVTdWJuZXRJZHM6IFsgJ3ByaTEnIF0sXG4gICAgaXNvbGF0ZWRTdWJuZXRJZHM6IFtdLFxuICB9KTtcbn1cblxuZnVuY3Rpb24gbW9ja1NlY3VyaXR5R3JvdXAoc3RhY2s6IGNkay5TdGFjaykge1xuICByZXR1cm4gZWMyLlNlY3VyaXR5R3JvdXAuZnJvbVNlY3VyaXR5R3JvdXBJZChzdGFjaywgJ015U0cnLCAnbW9zdC1zZWN1cmUnKTtcbn1cblxuZnVuY3Rpb24gZ2V0VGVzdFN0YWNrKCk6IGNkay5TdGFjayB7XG4gIHJldHVybiBuZXcgY2RrLlN0YWNrKHVuZGVmaW5lZCwgJ1Rlc3RTdGFjaycsIHsgZW52OiB7IGFjY291bnQ6ICcxMjM0JywgcmVnaW9uOiAndXMtZWFzdC0xJyB9IH0pO1xufVxuIl19

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is too big to display

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc