@rio-cloud/cdk-v2-constructs 6.10.8 → 6.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/docs/API.md CHANGED
@@ -3768,8 +3768,6 @@ temporarily ensure that the CloudFormation Export still exists while you
3768
3768
  remove the reference from the consuming stack. After that, you can remove
3769
3769
  the resource and the manual export.
3770
3770
 
3771
- ## Example
3772
-
3773
3771
  Here is how the process works. Let's say there are two stacks,
3774
3772
  `producerStack` and `consumerStack`, and `producerStack` has a bucket
3775
3773
  called `bucket`, which is referenced by `consumerStack` (perhaps because
@@ -3780,7 +3778,7 @@ deleted, `consumerStack` might still be using it.
3780
3778
 
3781
3779
  Instead, the process takes two deployments:
3782
3780
 
3783
- ### Deployment 1: break the relationship
3781
+ **Deployment 1: break the relationship**:
3784
3782
 
3785
3783
  - Make sure `consumerStack` no longer references `bucket.bucketName` (maybe the consumer
3786
3784
  stack now uses its own bucket, or it writes to an AWS DynamoDB table, or maybe you just
@@ -3790,7 +3788,7 @@ Instead, the process takes two deployments:
3790
3788
  between the two stacks is being broken.
3791
3789
  - Deploy (this will effectively only change the `consumerStack`, but it's safe to deploy both).
3792
3790
 
3793
- ### Deployment 2: remove the bucket resource
3791
+ **Deployment 2: remove the bucket resource**:
3794
3792
 
3795
3793
  - You are now free to remove the `bucket` resource from `producerStack`.
3796
3794
  - Don't forget to remove the `exportValue()` call as well.
@@ -7729,6 +7727,7 @@ const appStackProps: AppStackProps = { ... }
7729
7727
  | <code><a href="#@rio-cloud/cdk-v2-constructs.AppStackProps.property.crossRegionReferences">crossRegionReferences</a></code> | <code>boolean</code> | Enable this flag to allow native cross region stack references. |
7730
7728
  | <code><a href="#@rio-cloud/cdk-v2-constructs.AppStackProps.property.description">description</a></code> | <code>string</code> | A description of the stack. |
7731
7729
  | <code><a href="#@rio-cloud/cdk-v2-constructs.AppStackProps.property.env">env</a></code> | <code>aws-cdk-lib.Environment</code> | The AWS environment (account/region) where this stack will be deployed. |
7730
+ | <code><a href="#@rio-cloud/cdk-v2-constructs.AppStackProps.property.notificationArns">notificationArns</a></code> | <code>string[]</code> | SNS Topic ARNs that will receive stack events. |
7732
7731
  | <code><a href="#@rio-cloud/cdk-v2-constructs.AppStackProps.property.permissionsBoundary">permissionsBoundary</a></code> | <code>aws-cdk-lib.PermissionsBoundary</code> | Options for applying a permissions boundary to all IAM Roles and Users created within this Stage. |
7733
7732
  | <code><a href="#@rio-cloud/cdk-v2-constructs.AppStackProps.property.stackName">stackName</a></code> | <code>string</code> | Name to deploy the stack with. |
7734
7733
  | <code><a href="#@rio-cloud/cdk-v2-constructs.AppStackProps.property.suppressTemplateIndentation">suppressTemplateIndentation</a></code> | <code>boolean</code> | Enable this flag to suppress indentation in generated CloudFormation templates. |
@@ -7858,6 +7857,19 @@ new MyStack(app, 'Stack1');
7858
7857
  ```
7859
7858
 
7860
7859
 
7860
+ ##### `notificationArns`<sup>Optional</sup> <a name="notificationArns" id="@rio-cloud/cdk-v2-constructs.AppStackProps.property.notificationArns"></a>
7861
+
7862
+ ```typescript
7863
+ public readonly notificationArns: string[];
7864
+ ```
7865
+
7866
+ - *Type:* string[]
7867
+ - *Default:* no notfication arns.
7868
+
7869
+ SNS Topic ARNs that will receive stack events.
7870
+
7871
+ ---
7872
+
7861
7873
  ##### `permissionsBoundary`<sup>Optional</sup> <a name="permissionsBoundary" id="@rio-cloud/cdk-v2-constructs.AppStackProps.property.permissionsBoundary"></a>
7862
7874
 
7863
7875
  ```typescript
@@ -8938,9 +8950,11 @@ const datadogIntegrationProps: DatadogIntegrationProps = { ... }
8938
8950
  | <code><a href="#@rio-cloud/cdk-v2-constructs.DatadogIntegrationProps.property.cpu">cpu</a></code> | <code>number</code> | The minimum number of CPU units to reserve for the container. |
8939
8951
  | <code><a href="#@rio-cloud/cdk-v2-constructs.DatadogIntegrationProps.property.datadogSidecarEssential">datadogSidecarEssential</a></code> | <code>boolean</code> | Configure if the Datadog agent sidecar is marked as essential. |
8940
8952
  | <code><a href="#@rio-cloud/cdk-v2-constructs.DatadogIntegrationProps.property.datadogSidecarTag">datadogSidecarTag</a></code> | <code>string</code> | Configures the docker image tag for datadog sidecar. |
8953
+ | <code><a href="#@rio-cloud/cdk-v2-constructs.DatadogIntegrationProps.property.enableRestartPolicy">enableRestartPolicy</a></code> | <code>boolean</code> | When you set up a restart policy for a container, Amazon ECS can restart the container without needing to replace the task. |
8941
8954
  | <code><a href="#@rio-cloud/cdk-v2-constructs.DatadogIntegrationProps.property.loggingModeForDatadogAgent">loggingModeForDatadogAgent</a></code> | <code>@rio-cloud/cdk-v2-constructs.fargate.DataDogLoggingMode</code> | The logging mode for the Datadog agent sidecar. |
8942
8955
  | <code><a href="#@rio-cloud/cdk-v2-constructs.DatadogIntegrationProps.property.loggingModeForService">loggingModeForService</a></code> | <code>@rio-cloud/cdk-v2-constructs.fargate.DataDogLoggingMode</code> | The logging mode for the service. |
8943
8956
  | <code><a href="#@rio-cloud/cdk-v2-constructs.DatadogIntegrationProps.property.memoryLimitMiB">memoryLimitMiB</a></code> | <code>number</code> | The amount (in MiB) of memory to present to the container. |
8957
+ | <code><a href="#@rio-cloud/cdk-v2-constructs.DatadogIntegrationProps.property.restartIgnoredExitCodes">restartIgnoredExitCodes</a></code> | <code>number[]</code> | The exit codes to be ignored by the restart policy. |
8944
8958
 
8945
8959
  ---
8946
8960
 
@@ -9024,6 +9038,19 @@ Configures the docker image tag for datadog sidecar.
9024
9038
 
9025
9039
  ---
9026
9040
 
9041
+ ##### `enableRestartPolicy`<sup>Optional</sup> <a name="enableRestartPolicy" id="@rio-cloud/cdk-v2-constructs.DatadogIntegrationProps.property.enableRestartPolicy"></a>
9042
+
9043
+ ```typescript
9044
+ public readonly enableRestartPolicy: boolean;
9045
+ ```
9046
+
9047
+ - *Type:* boolean
9048
+ - *Default:* true
9049
+
9050
+ When you set up a restart policy for a container, Amazon ECS can restart the container without needing to replace the task.
9051
+
9052
+ ---
9053
+
9027
9054
  ##### `loggingModeForDatadogAgent`<sup>Optional</sup> <a name="loggingModeForDatadogAgent" id="@rio-cloud/cdk-v2-constructs.DatadogIntegrationProps.property.loggingModeForDatadogAgent"></a>
9028
9055
 
9029
9056
  ```typescript
@@ -9068,6 +9095,19 @@ At least one of memoryLimitMiB and memoryReservationMiB is required for non-Farg
9068
9095
 
9069
9096
  ---
9070
9097
 
9098
+ ##### `restartIgnoredExitCodes`<sup>Optional</sup> <a name="restartIgnoredExitCodes" id="@rio-cloud/cdk-v2-constructs.DatadogIntegrationProps.property.restartIgnoredExitCodes"></a>
9099
+
9100
+ ```typescript
9101
+ public readonly restartIgnoredExitCodes: number[];
9102
+ ```
9103
+
9104
+ - *Type:* number[]
9105
+ - *Default:* [0]
9106
+
9107
+ The exit codes to be ignored by the restart policy.
9108
+
9109
+ ---
9110
+
9071
9111
  ### DatadogIntegrationProps <a name="DatadogIntegrationProps" id="@rio-cloud/cdk-v2-constructs.fargate.DatadogIntegrationProps"></a>
9072
9112
 
9073
9113
  #### Initializer <a name="Initializer" id="@rio-cloud/cdk-v2-constructs.fargate.DatadogIntegrationProps.Initializer"></a>
@@ -9087,9 +9127,11 @@ const datadogIntegrationProps: fargate.DatadogIntegrationProps = { ... }
9087
9127
  | <code><a href="#@rio-cloud/cdk-v2-constructs.fargate.DatadogIntegrationProps.property.cpu">cpu</a></code> | <code>number</code> | The minimum number of CPU units to reserve for the container. |
9088
9128
  | <code><a href="#@rio-cloud/cdk-v2-constructs.fargate.DatadogIntegrationProps.property.datadogSidecarEssential">datadogSidecarEssential</a></code> | <code>boolean</code> | Configure if the Datadog agent sidecar is marked as essential. |
9089
9129
  | <code><a href="#@rio-cloud/cdk-v2-constructs.fargate.DatadogIntegrationProps.property.datadogSidecarTag">datadogSidecarTag</a></code> | <code>string</code> | Configures the docker image tag for datadog sidecar. |
9130
+ | <code><a href="#@rio-cloud/cdk-v2-constructs.fargate.DatadogIntegrationProps.property.enableRestartPolicy">enableRestartPolicy</a></code> | <code>boolean</code> | When you set up a restart policy for a container, Amazon ECS can restart the container without needing to replace the task. |
9090
9131
  | <code><a href="#@rio-cloud/cdk-v2-constructs.fargate.DatadogIntegrationProps.property.loggingModeForDatadogAgent">loggingModeForDatadogAgent</a></code> | <code>@rio-cloud/cdk-v2-constructs.fargate.DataDogLoggingMode</code> | The logging mode for the Datadog agent sidecar. |
9091
9132
  | <code><a href="#@rio-cloud/cdk-v2-constructs.fargate.DatadogIntegrationProps.property.loggingModeForService">loggingModeForService</a></code> | <code>@rio-cloud/cdk-v2-constructs.fargate.DataDogLoggingMode</code> | The logging mode for the service. |
9092
9133
  | <code><a href="#@rio-cloud/cdk-v2-constructs.fargate.DatadogIntegrationProps.property.memoryLimitMiB">memoryLimitMiB</a></code> | <code>number</code> | The amount (in MiB) of memory to present to the container. |
9134
+ | <code><a href="#@rio-cloud/cdk-v2-constructs.fargate.DatadogIntegrationProps.property.restartIgnoredExitCodes">restartIgnoredExitCodes</a></code> | <code>number[]</code> | The exit codes to be ignored by the restart policy. |
9093
9135
 
9094
9136
  ---
9095
9137
 
@@ -9173,6 +9215,19 @@ Configures the docker image tag for datadog sidecar.
9173
9215
 
9174
9216
  ---
9175
9217
 
9218
+ ##### `enableRestartPolicy`<sup>Optional</sup> <a name="enableRestartPolicy" id="@rio-cloud/cdk-v2-constructs.fargate.DatadogIntegrationProps.property.enableRestartPolicy"></a>
9219
+
9220
+ ```typescript
9221
+ public readonly enableRestartPolicy: boolean;
9222
+ ```
9223
+
9224
+ - *Type:* boolean
9225
+ - *Default:* true
9226
+
9227
+ When you set up a restart policy for a container, Amazon ECS can restart the container without needing to replace the task.
9228
+
9229
+ ---
9230
+
9176
9231
  ##### `loggingModeForDatadogAgent`<sup>Optional</sup> <a name="loggingModeForDatadogAgent" id="@rio-cloud/cdk-v2-constructs.fargate.DatadogIntegrationProps.property.loggingModeForDatadogAgent"></a>
9177
9232
 
9178
9233
  ```typescript
@@ -9217,6 +9272,19 @@ At least one of memoryLimitMiB and memoryReservationMiB is required for non-Farg
9217
9272
 
9218
9273
  ---
9219
9274
 
9275
+ ##### `restartIgnoredExitCodes`<sup>Optional</sup> <a name="restartIgnoredExitCodes" id="@rio-cloud/cdk-v2-constructs.fargate.DatadogIntegrationProps.property.restartIgnoredExitCodes"></a>
9276
+
9277
+ ```typescript
9278
+ public readonly restartIgnoredExitCodes: number[];
9279
+ ```
9280
+
9281
+ - *Type:* number[]
9282
+ - *Default:* [0]
9283
+
9284
+ The exit codes to be ignored by the restart policy.
9285
+
9286
+ ---
9287
+
9220
9288
  ### DatadogLambdaInstrumentationProps <a name="DatadogLambdaInstrumentationProps" id="@rio-cloud/cdk-v2-constructs.datadogv2.DatadogLambdaInstrumentationProps"></a>
9221
9289
 
9222
9290
  Props for the DatadogLambdaInstrumentation construct.
@@ -13320,6 +13388,7 @@ const pipelineStackProps: PipelineStackProps = { ... }
13320
13388
  | <code><a href="#@rio-cloud/cdk-v2-constructs.PipelineStackProps.property.crossRegionReferences">crossRegionReferences</a></code> | <code>boolean</code> | Enable this flag to allow native cross region stack references. |
13321
13389
  | <code><a href="#@rio-cloud/cdk-v2-constructs.PipelineStackProps.property.description">description</a></code> | <code>string</code> | A description of the stack. |
13322
13390
  | <code><a href="#@rio-cloud/cdk-v2-constructs.PipelineStackProps.property.env">env</a></code> | <code>aws-cdk-lib.Environment</code> | The AWS environment (account/region) where this stack will be deployed. |
13391
+ | <code><a href="#@rio-cloud/cdk-v2-constructs.PipelineStackProps.property.notificationArns">notificationArns</a></code> | <code>string[]</code> | SNS Topic ARNs that will receive stack events. |
13323
13392
  | <code><a href="#@rio-cloud/cdk-v2-constructs.PipelineStackProps.property.permissionsBoundary">permissionsBoundary</a></code> | <code>aws-cdk-lib.PermissionsBoundary</code> | Options for applying a permissions boundary to all IAM Roles and Users created within this Stage. |
13324
13393
  | <code><a href="#@rio-cloud/cdk-v2-constructs.PipelineStackProps.property.stackName">stackName</a></code> | <code>string</code> | Name to deploy the stack with. |
13325
13394
  | <code><a href="#@rio-cloud/cdk-v2-constructs.PipelineStackProps.property.suppressTemplateIndentation">suppressTemplateIndentation</a></code> | <code>boolean</code> | Enable this flag to suppress indentation in generated CloudFormation templates. |
@@ -13456,6 +13525,19 @@ new MyStack(app, 'Stack1');
13456
13525
  ```
13457
13526
 
13458
13527
 
13528
+ ##### `notificationArns`<sup>Optional</sup> <a name="notificationArns" id="@rio-cloud/cdk-v2-constructs.PipelineStackProps.property.notificationArns"></a>
13529
+
13530
+ ```typescript
13531
+ public readonly notificationArns: string[];
13532
+ ```
13533
+
13534
+ - *Type:* string[]
13535
+ - *Default:* no notfication arns.
13536
+
13537
+ SNS Topic ARNs that will receive stack events.
13538
+
13539
+ ---
13540
+
13459
13541
  ##### `permissionsBoundary`<sup>Optional</sup> <a name="permissionsBoundary" id="@rio-cloud/cdk-v2-constructs.PipelineStackProps.property.permissionsBoundary"></a>
13460
13542
 
13461
13543
  ```typescript
package/docs/changelog.md CHANGED
@@ -2,6 +2,21 @@
2
2
 
3
3
  All notable changes to this project will be documented in this file. See [commit-and-tag-version](https://github.com/absolute-version/commit-and-tag-version) for commit guidelines.
4
4
 
5
+ ## [6.11.0](https://bitbucket.collaboration-man.com/projects/RIODEV/repos/cdk-v2-constructs/compare/commits?targetBranch=refs%2Ftags%2Fv6.10.9&sourceBranch=refs%2Ftags%2Fv6.11.0) (2024-10-17)
6
+
7
+
8
+ ### Features
9
+
10
+ * * EcsAbruptlyStoppedMonitor now also alerts on stopped non-essential containers ([9b33d57](https://bitbucket.collaboration-man.com/projects/RIODEV/repos/cdk-v2-constructs/commits/9b33d57d376e1130fe9dfa71a089e1706a91957d))
11
+ * enable restartPolicy for Datadog sidecar with sane defaults ([4b69ede](https://bitbucket.collaboration-man.com/projects/RIODEV/repos/cdk-v2-constructs/commits/4b69ede2e474ff55b7d548ab6d153480f9b9c448))
12
+
13
+
14
+ ### Bug Fixes
15
+
16
+ * update snapshot test ([8d88a40](https://bitbucket.collaboration-man.com/projects/RIODEV/repos/cdk-v2-constructs/commits/8d88a40e145c6351824906e3fdb2b7d841526c35))
17
+
18
+ ## [6.10.9](https://bitbucket.collaboration-man.com/projects/RIODEV/repos/cdk-v2-constructs/compare/commits?targetBranch=refs%2Ftags%2Fv6.10.8&sourceBranch=refs%2Ftags%2Fv6.10.9) (2024-10-09)
19
+
5
20
  ## [6.10.8](https://bitbucket.collaboration-man.com/projects/RIODEV/repos/cdk-v2-constructs/compare/commits?targetBranch=refs%2Ftags%2Fv6.10.7&sourceBranch=refs%2Ftags%2Fv6.10.8) (2024-10-08)
6
21
 
7
22
  ## [6.10.7](https://bitbucket.collaboration-man.com/projects/RIODEV/repos/cdk-v2-constructs/compare/commits?targetBranch=refs%2Ftags%2Fv6.10.6&sourceBranch=refs%2Ftags%2Fv6.10.7) (2024-10-08)
@@ -37,14 +37,15 @@ class AwsEcsAbruptlyStoppedMonitor extends constructs_1.Construct {
37
37
  logGroupName: ecsStateChangeLogGroup.logGroupName,
38
38
  retention: 3,
39
39
  });
40
- // Rule to cover all clusters status changes
40
+ // Rule to cover all task changes where one of the containers was stopped
41
41
  new cdk.aws_events.Rule(this, 'EcsStateChangeRule', {
42
42
  eventPattern: {
43
43
  source: ['aws.ecs'],
44
- detailType: ['ECS Task State Change', 'ECS Container Instance State Change', 'ECS Service Action'],
44
+ detailType: ['ECS Task State Change'],
45
45
  detail: {
46
- desiredStatus: ['STOPPED'],
47
- lastStatus: ['STOPPED'],
46
+ containers: {
47
+ lastStatus: ['STOPPED'],
48
+ },
48
49
  ...(props.clusterArn && { clusterArn: [props.clusterArn] }),
49
50
  },
50
51
  },
@@ -83,7 +84,7 @@ function addClaidometer(scope) {
83
84
  product: rio_claidometer_1.ClaidometerProduct.CDK_CONTRIBUTION,
84
85
  packageName,
85
86
  feature,
86
- version: '0.0.3',
87
+ version: '0.0.5',
87
88
  });
88
89
  }
89
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXdzLWVjcy1hYnJ1cHRseS1zdG9wcGVkLW1vbml0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29udHJpYnV0aW9ucy90ZWFtLW91dGJvdW5kLW9yZGVyLWJvb2svYXdzLWVjcy1hYnJ1cHRseS1zdG9wcGVkLW1vbml0b3IvYXdzLWVjcy1hYnJ1cHRseS1zdG9wcGVkLW1vbml0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSw2QkFBNkI7QUFDN0IsbUNBQW1DO0FBQ25DLDJDQUF1QztBQUV2QyxrREFBaUc7QUFDakcsOERBQTJFO0FBOEMzRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FvQkc7QUFDSCxNQUFhLDRCQUE2QixTQUFRLHNCQUFTO0lBSXpELFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBcUM7UUFDN0UsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVqQixNQUFNLHNCQUFzQixHQUFHLElBQUksR0FBRyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLHdCQUF3QixDQUFDLENBQUM7UUFFekYsSUFBSSxHQUFHLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsNEJBQTRCLEVBQUU7WUFDaEUsWUFBWSxFQUFFLHNCQUFzQixDQUFDLFlBQVk7WUFDakQsU0FBUyxFQUFFLENBQUM7U0FDYixDQUFDLENBQUM7UUFFSCw0Q0FBNEM7UUFDNUMsSUFBSSxHQUFHLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsb0JBQW9CLEVBQUU7WUFDbEQsWUFBWSxFQUFFO2dCQUNaLE1BQU0sRUFBRSxDQUFDLFNBQVMsQ0FBQztnQkFDbkIsVUFBVSxFQUFFLENBQUMsdUJBQXVCLEVBQUUscUNBQXFDLEVBQUUsb0JBQW9CLENBQUM7Z0JBQ2xHLE1BQU0sRUFBRTtvQkFDTixhQUFhLEVBQUUsQ0FBQyxTQUFTLENBQUM7b0JBQzFCLFVBQVUsRUFBRSxDQUFDLFNBQVMsQ0FBQztvQkFDdkIsR0FBRyxDQUFDLEtBQUssQ0FBQyxVQUFVLElBQUksRUFBRSxVQUFVLEVBQUUsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztpQkFDNUQ7YUFDRjtZQUNELE9BQU8sRUFBRSxDQUFDLElBQUksR0FBRyxDQUFDLGtCQUFrQixDQUFDLGtCQUFrQixDQUFDLHNCQUFzQixDQUFDLENBQUM7U0FDakYsQ0FBQyxDQUFDO1FBRUgsTUFBTSxrQkFBa0IsR0FBRyxHQUFHLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxzQkFBc0IsQ0FDdkUsSUFBSSxFQUNKLGtDQUFrQyxFQUNsQztZQUNFLFdBQVcsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsNEJBQTRCLElBQUksNEJBQTRCLENBQUMseUJBQXlCLENBQUM7WUFDN0gsZUFBZSxFQUFFLElBQUk7U0FDdEIsQ0FDRixDQUFDO1FBRUYsSUFBSSxHQUFHLENBQUMsUUFBUSxDQUFDLGtCQUFrQixDQUFDLElBQUksRUFBRSx5QkFBeUIsRUFBRTtZQUNuRSxXQUFXLEVBQUUsSUFBSSxHQUFHLENBQUMscUJBQXFCLENBQUMsaUJBQWlCLENBQUMsa0JBQWtCLENBQUM7WUFDaEYsYUFBYSxFQUFFLEdBQUcsQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FDL0MseUJBQXlCLEVBQ3pCLHFDQUFxQyxDQUN0QztZQUNELFFBQVEsRUFBRSxzQkFBc0I7U0FDakMsQ0FBQyxDQUFDO1FBRUgsNEZBQTRGO1FBQzVGLElBQUksMEJBQWMsQ0FBQyxJQUFJLEVBQUUsK0JBQStCLEVBQUU7WUFDeEQsSUFBSSxFQUFFLCtCQUErQjtZQUNyQyxXQUFXLEVBQUUsS0FBSyxDQUFDLFdBQVc7WUFDOUIsV0FBVyxFQUFFLHdDQUE0QixDQUFDLFNBQVM7WUFDbkQsS0FBSyxFQUFFLG9CQUFvQixHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLDRCQUNuRCxzQkFBc0IsQ0FBQyxZQUN6QixpREFBaUQ7WUFDakQsT0FBTyxFQUFFLHNFQUFzRTtnQkFDckUsdUVBQXVFO1lBQ2pGLFFBQVEsRUFBRSxLQUFLLENBQUMsUUFBUSxJQUFJLDBCQUFjLENBQUMsZ0JBQWdCO1lBQzNELFlBQVksRUFBRSxLQUFLLENBQUMsWUFBWTtTQUNqQyxDQUFDLENBQUM7UUFFSCxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdkIsQ0FBQzs7QUE3REgsb0VBOERDOzs7QUE1RGlCLHNEQUF5QixHQUFHLGdDQUFnQyxDQUFDO0FBOEQvRSxTQUFTLGNBQWMsQ0FBQyxLQUEyQjtJQUNqRCxNQUFNLENBQUMsT0FBTyxFQUFFLFdBQVcsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ25FLElBQUksNkJBQVcsQ0FBQyxLQUFLLEVBQUUsYUFBYSxFQUFFO1FBQ3BDLE9BQU8sRUFBRSxvQ0FBa0IsQ0FBQyxnQkFBZ0I7UUFDNUMsV0FBVztRQUNYLE9BQU87UUFDUCxPQUFPLEVBQUUsT0FBTztLQUNqQixDQUFDLENBQUM7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCAqIGFzIGNkayBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCAqIGFzIGNvbnN0cnVjdHMgZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgeyBEYXRhZG9nTW9uaXRvciwgRGF0YWRvZ01vbml0b3JRdWVyeUFsZXJ0VHlwZSwgSU5vdGlmaWNhdGlvbiB9IGZyb20gJy4uLy4uLy4uL2RhdGFkb2d2Mic7XG5pbXBvcnQgeyBDbGFpZG9tZXRlciwgQ2xhaWRvbWV0ZXJQcm9kdWN0IH0gZnJvbSAnLi4vLi4vLi4vcmlvLWNsYWlkb21ldGVyJztcblxuZXhwb3J0IGludGVyZmFjZSBFY3NBYnJ1cHRseVN0b3BwZWRNb25pdG9yUHJvcHMge1xuXG4gIC8qKlxuICAgICAqIFRoZSBuYW1lIG9mIHRoZSBzZXJ2aWNlIHRvIHdoaWNoIHRoZSBtb25pdG9yIGJlbG9uZ3MuXG4gICAgICpcbiAgICAgKiBVc2VkIHRvIGdlbmVyYXRlIHRoZSBtb25pdG9yIG5hbWUgYXMgd2VsbCBhIGFwcGx5IHRoZSBgc2VydmljZWAgdGFnLlxuICAgICAqL1xuICByZWFkb25seSBzZXJ2aWNlTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgICAqIFRvIGV4cGxpY2l0bHkgZGlzYWJsZSBub3RpZmljYXRpb25zIHVzZSB7QGxpbmsgTm9Ob3RpZmljYXRpb259LlxuICAgICAqXG4gICAgICogQGRlZmF1bHRWYWx1ZSB7QGxpbmsgRGVmYXVsdFNsYWNrTm90aWZpY2F0aW9ufVxuICAgICAqXG4gICAgICogQHNlZSBodHRwczovL2RvY3MuZGF0YWRvZ2hxLmNvbS9tb25pdG9ycy9ub3RpZnlcbiAgICAgKi9cblxuICByZWFkb25seSBub3RpZmljYXRpb24/OiBJTm90aWZpY2F0aW9uO1xuXG4gIC8qKlxuICAgICAqIFRoZSBhbGVydCBwcmlvcml0eSBvZiB0aGUgbW9uaXRvclxuICAgICAqXG4gICAgICogQGRlZmF1bHRWYWx1ZSB7QGxpbmsgRGF0YWRvZ01vbml0b3IuREVGQVVMVF9QUklPUklUWX1cbiAgICAgKi9cblxuICByZWFkb25seSBwcmlvcml0eT86IG51bWJlcjtcblxuICAvKipcbiAgICAgKiBBUk4gb2YgdGhlIGNsdXN0ZXIgdGhhdCBzaG91bGQgYmUgbW9uaXRvcmVkLCBjb25zdW1pbmcgb25seSBFQ1MgZXZlbnRzIGJlbG9uZ2luZyB0byB0aGUgY2x1c3Rlci5cbiAgICAgKiBJZiBubyBjbHVzdGVyIGlzIHByb3ZpZGVkLCB0aGUgbW9uaXRvciB3aWxsIGNvbnN1bWUgRUNTIGV2ZW50cyBmb3IgYWxsIGNsdXN0ZXJzIHdpdGhpbiB0aGUgYWNjb3VudC5cbiAgICAgKi9cbiAgcmVhZG9ubHkgY2x1c3RlckFybj86IHN0cmluZztcblxuICAvKipcbiAgICAgKiBBUk4gb2YgdGhlIERhdGFkb2cgZm9yd2FyZGVyIExhbWJkYSBmdW5jdGlvbiB1c2VkIHRvIGZvcndhcmQgdGhlIENsb3VkV2F0Y2ggbG9ncyB0byBEYXRhZG9nLlxuICAgICAqIEN1cnJlbnRseSwgdHdvIHZhbHVlcyBhcmUga25vdyB0byBiZSBleHBvcnRlZCBieSB0aGUgYWNjb3VudCBtb2R1bGVzOlxuICAgICAqICogZGF0YWRvZy1mb3J3YXJkZXItRm9yd2FyZGVyQXJuOiBleHBvcnRlZCBieSB0aGUgM3JkIHBhcnR5IGFjY291bnQgbW9kdWxlcyBbRGF0YWRvZy1mb3J3YXJkZXJdKGh0dHBzOi8vZ2l0aHViLmNvbS9EYXRhRG9nL2RhdGFkb2ctc2VydmVybGVzcy1mdW5jdGlvbnMvcmVsZWFzZXMpXG4gICAgICogKiBjdXN0b20tcmVzb3VyY2UtZGF0YWRvZy1sb2dmb3J3YXJkZXItZnVuY3Rpb24tYXJuOiBleHBvcnRlZCBieSB0aGUgZGVwcmVjYXRlZCBjdXN0b20gYWNjb3VudCBtb2R1bGUgW2RhdGFkb2ctaW50ZWdyYXRpb25dKGh0dHBzOi8vYml0YnVja2V0LmNvbGxhYm9yYXRpb24tbWFuLmNvbS9wcm9qZWN0cy9SSU9ERVYvcmVwb3MvZGF0YWRvZy1pbnRlZ3JhdGlvbi9icm93c2UpLlxuICAgICAqXG4gICAgICogQGRlZmF1bHRWYWx1ZSB7QGxpbmsgQXdzRWNzQWJydXB0bHlTdG9wcGVkTW9uaXRvci5ERUZBVUxUX0xPR19GT1JXQVJERVJfQVJOfVxuICAgICAqL1xuICByZWFkb25seSBkYXRhZG9nTG9nRm9yd2FyZGVyTGFtYmRhQXJuPzogc3RyaW5nO1xufVxuXG4vKipcbiAqICMgV0FSTklORzogVGhpcyBjb25zdHJ1Y3QgaXMgc3RpbGwgaW4gdGhlIGJldGEgcGhhc2UuXG4gKlxuICogVGhlIGNvbnN0cnVjdCBjcmVhdGVzIG1vbml0b3JpbmcgZm9yIGRldGVjdGluZyBFQ1MgY29udGFpbmVycyB0aGF0IHdlcmUgc3RvcHBlZCBhYnJ1cHRseSBieSBBV1MgZm9yIHJlYXNvbnMgc3VjaCBhcyxcbiAqIG91dCBvZiBtZW1vcnksIG9yIGZhaWxlZCBoZWFsdGggY2hlY2tzLlxuICpcbiAqIFRoaXMgbW9uaXRvciBhZGRzIHRyYW5zcGFyZW5jeSB0byBzdWNoIGNhc2VzLCB3aGljaCBvdGhlcndpc2Ugd291bGQgaGFwcGVuIHdpdGhvdXQgYmVpbmcgbm90aWNlZCBhbmQgY291bGQgZXNjYWxhdGVcbiAqIHRvIGJpZ2dlciBpc3N1ZXMsIGxpa2UgYSBzZXJ2aWNlIHRoYXQgcmVxdWlyZXMgbW9yZSByZXNvdXJjZXMgdG8gcnVuIHByb3Blcmx5LlxuICpcbiAqIFRoZSBjb25zdHJ1Y3Qgd2lsbCBjb25zdW1lIHRoZSBFQ1MgZXZlbnRzIGFuZCBzZW5kIHRoZW0gdG8gYSBDbG91ZFdhdGNoIGxvZyBncm91cCwgd2hpY2ggYXJlIGZvcndhcmRlZCB0byBEYXRhZG9nLFxuICogYWxsb3dpbmcgYmV0dGVyIGFuYWx5c2VzIHNpbmNlIEFXUyBrZWVwcyB0aGUgc3RvcHBlZCB0YXNrIGRldGFpbHMgZm9yIG9ubHkgb25lIGhvdXIgYW5kIHdpbGwgYmUgdXNlZCB0byBjcmVhdGUgYVxuICogbW9uaXRvci5cbiAqXG4gKiBDb250cmlidXRpb25zIGFyZSBtb3JlIHRoYW4gd2VsY29tZSwgcGxlYXNlIGdldCBpbiB0b3VjaCB3aXRoIFRlYW0gT3V0Ym91bmQgdG8gZW5zdXJlIGNvbXBhdGliaWxpdHkuXG4gKlxuICogVGhpcyBjb25zdHJ1Y3Qgd2FzIGJhc2VkIG9uIGFuIEFXUyBibG9nIHBvc3QgYWJvdXQgRUNTIGFub21hbHkgZGV0ZWN0aW9uLCBzZWUgaGVyZTpcbiAqIHtAbGluayBodHRwczovL2F3cy5hbWF6b24uY29tL2Jsb2dzL2NvbnRhaW5lcnMvYW1hem9uLWVsYXN0aWMtY29udGFpbmVyLXNlcnZpY2UtYW5vbWFseS1kZXRlY3Rpb24tdXNpbmctYW1hem9uLWV2ZW50YnJpZGdlL30uXG4gKlxuICogTW9yZSBkZXRhaWxzIG9uIHRoZSBBV1MgRUNTIGV2ZW50cyBjYW4gYmUgZm91bmQgaGVyZTpcbiAqIHtAbGluayBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uRUNTL2xhdGVzdC9kZXZlbG9wZXJndWlkZS9lY3NfY3dlX2V2ZW50cy5odG1sfS5cbiAqL1xuZXhwb3J0IGNsYXNzIEF3c0Vjc0FicnVwdGx5U3RvcHBlZE1vbml0b3IgZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuXG4gIHN0YXRpYyByZWFkb25seSBERUZBVUxUX0xPR19GT1JXQVJERVJfQVJOID0gJ2RhdGFkb2ctZm9yd2FyZGVyLUZvcndhcmRlckFybic7XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IEVjc0FicnVwdGx5U3RvcHBlZE1vbml0b3JQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICBjb25zdCBlY3NTdGF0ZUNoYW5nZUxvZ0dyb3VwID0gbmV3IGNkay5hd3NfbG9ncy5Mb2dHcm91cCh0aGlzLCAnRWNzU3RhdGVDaGFuZ2VMb2dHcm91cCcpO1xuXG4gICAgbmV3IGNkay5hd3NfbG9ncy5Mb2dSZXRlbnRpb24odGhpcywgJ0Vjc1N0YXRlQ2hhbmdlTG9nUmV0ZW50aW9uJywge1xuICAgICAgbG9nR3JvdXBOYW1lOiBlY3NTdGF0ZUNoYW5nZUxvZ0dyb3VwLmxvZ0dyb3VwTmFtZSxcbiAgICAgIHJldGVudGlvbjogMyxcbiAgICB9KTtcblxuICAgIC8vIFJ1bGUgdG8gY292ZXIgYWxsIGNsdXN0ZXJzIHN0YXR1cyBjaGFuZ2VzXG4gICAgbmV3IGNkay5hd3NfZXZlbnRzLlJ1bGUodGhpcywgJ0Vjc1N0YXRlQ2hhbmdlUnVsZScsIHtcbiAgICAgIGV2ZW50UGF0dGVybjoge1xuICAgICAgICBzb3VyY2U6IFsnYXdzLmVjcyddLFxuICAgICAgICBkZXRhaWxUeXBlOiBbJ0VDUyBUYXNrIFN0YXRlIENoYW5nZScsICdFQ1MgQ29udGFpbmVyIEluc3RhbmNlIFN0YXRlIENoYW5nZScsICdFQ1MgU2VydmljZSBBY3Rpb24nXSxcbiAgICAgICAgZGV0YWlsOiB7XG4gICAgICAgICAgZGVzaXJlZFN0YXR1czogWydTVE9QUEVEJ10sXG4gICAgICAgICAgbGFzdFN0YXR1czogWydTVE9QUEVEJ10sXG4gICAgICAgICAgLi4uKHByb3BzLmNsdXN0ZXJBcm4gJiYgeyBjbHVzdGVyQXJuOiBbcHJvcHMuY2x1c3RlckFybl0gfSksXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgdGFyZ2V0czogW25ldyBjZGsuYXdzX2V2ZW50c190YXJnZXRzLkNsb3VkV2F0Y2hMb2dHcm91cChlY3NTdGF0ZUNoYW5nZUxvZ0dyb3VwKV0sXG4gICAgfSk7XG5cbiAgICBjb25zdCBsb2dGb3J3YXJkZXJMYW1iZGEgPSBjZGsuYXdzX2xhbWJkYS5GdW5jdGlvbi5mcm9tRnVuY3Rpb25BdHRyaWJ1dGVzKFxuICAgICAgdGhpcyxcbiAgICAgICdFY3NTdGF0ZUNoYW5nZUxvZ0ZvcndhcmRlckxhbWJkYScsXG4gICAgICB7XG4gICAgICAgIGZ1bmN0aW9uQXJuOiBjZGsuRm4uaW1wb3J0VmFsdWUocHJvcHMuZGF0YWRvZ0xvZ0ZvcndhcmRlckxhbWJkYUFybiA/PyBBd3NFY3NBYnJ1cHRseVN0b3BwZWRNb25pdG9yLkRFRkFVTFRfTE9HX0ZPUldBUkRFUl9BUk4pLFxuICAgICAgICBzYW1lRW52aXJvbm1lbnQ6IHRydWUsXG4gICAgICB9LFxuICAgICk7XG5cbiAgICBuZXcgY2RrLmF3c19sb2dzLlN1YnNjcmlwdGlvbkZpbHRlcih0aGlzLCAnRWNzU3RhdGVDaGFuZ2VMb2dGaWx0ZXInLCB7XG4gICAgICBkZXN0aW5hdGlvbjogbmV3IGNkay5hd3NfbG9nc19kZXN0aW5hdGlvbnMuTGFtYmRhRGVzdGluYXRpb24obG9nRm9yd2FyZGVyTGFtYmRhKSxcbiAgICAgIGZpbHRlclBhdHRlcm46IGNkay5hd3NfbG9ncy5GaWx0ZXJQYXR0ZXJuLmFueVRlcm0oXG4gICAgICAgICdDb250YWluZXIga2lsbGVkIGR1ZSB0bycsXG4gICAgICAgICdUYXNrIGZhaWxlZCBjb250YWluZXIgaGVhbHRoIGNoZWNrcycsXG4gICAgICApLFxuICAgICAgbG9nR3JvdXA6IGVjc1N0YXRlQ2hhbmdlTG9nR3JvdXAsXG4gICAgfSk7XG5cbiAgICAvLyBBZnRlciBiZWluZyBtaWdyYXRlZCB0byB0aGUgbmV3IHZlcnNpb24gaXQgY2FuIGJlIGFkZGVkIHRvIHRoZSBDTEFJRCBjb25zdHJ1Y3QgcmVwb3NpdG9yeVxuICAgIG5ldyBEYXRhZG9nTW9uaXRvcih0aGlzLCAnRWNzU3RhdGVDaGFuZ2VMb2dHcm91cE1vbml0b3InLCB7XG4gICAgICBuYW1lOiAnVW5leHBlY3RlZCBFQ1Mgc3RhdHVzIGNoYW5nZXMnLFxuICAgICAgc2VydmljZU5hbWU6IHByb3BzLnNlcnZpY2VOYW1lLFxuICAgICAgbW9uaXRvclR5cGU6IERhdGFkb2dNb25pdG9yUXVlcnlBbGVydFR5cGUuTE9HX0FMRVJULFxuICAgICAgcXVlcnk6IGBsb2dzKFwiYWNjb3VudF9pZDoke2Nkay5TdGFjay5vZih0aGlzKS5hY2NvdW50fSBAYXdzLmF3c2xvZ3MubG9nR3JvdXA6XFxcIiR7XG4gICAgICAgIGVjc1N0YXRlQ2hhbmdlTG9nR3JvdXAubG9nR3JvdXBOYW1lXG4gICAgICB9XFxcIlwiKS5pbmRleChcIipcIikucm9sbHVwKFwiY291bnRcIikubGFzdChcIjVtXCIpID49IDFgLFxuICAgICAgbWVzc2FnZTogJ3t7I2lzX2FsZXJ0fX1UaGVyZSBhcmUgdW5leHBlY3RlZCBFQ1Mgc3RhdHVzIGNoYW5nZXMgaW4gdGhlIGFjY291bnQgJyArXG4gICAgICAgICAgICAgICAgJ3t7bG9nLnRhZ3MuYWNjb3VudF9pZH19LCBtb3JlIGRldGFpbHMgaGVyZSB7e2xvZy5saW5rfX0ge3svaXNfYWxlcnR9fScsXG4gICAgICBwcmlvcml0eTogcHJvcHMucHJpb3JpdHkgPz8gRGF0YWRvZ01vbml0b3IuREVGQVVMVF9QUklPUklUWSxcbiAgICAgIG5vdGlmaWNhdGlvbjogcHJvcHMubm90aWZpY2F0aW9uLFxuICAgIH0pO1xuXG4gICAgYWRkQ2xhaWRvbWV0ZXIodGhpcyk7XG4gIH1cbn1cblxuZnVuY3Rpb24gYWRkQ2xhaWRvbWV0ZXIoc2NvcGU6IGNvbnN0cnVjdHMuQ29uc3RydWN0KSB7XG4gIGNvbnN0IFtmZWF0dXJlLCBwYWNrYWdlTmFtZV0gPSBfX2Rpcm5hbWUuc3BsaXQocGF0aC5zZXApLnJldmVyc2UoKTtcbiAgbmV3IENsYWlkb21ldGVyKHNjb3BlLCAnQ2xhaWRvbWV0ZXInLCB7XG4gICAgcHJvZHVjdDogQ2xhaWRvbWV0ZXJQcm9kdWN0LkNES19DT05UUklCVVRJT04sXG4gICAgcGFja2FnZU5hbWUsXG4gICAgZmVhdHVyZSxcbiAgICB2ZXJzaW9uOiAnMC4wLjMnLFxuICB9KTtcbn1cbiJdfQ==
90
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXdzLWVjcy1hYnJ1cHRseS1zdG9wcGVkLW1vbml0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29udHJpYnV0aW9ucy90ZWFtLW91dGJvdW5kLW9yZGVyLWJvb2svYXdzLWVjcy1hYnJ1cHRseS1zdG9wcGVkLW1vbml0b3IvYXdzLWVjcy1hYnJ1cHRseS1zdG9wcGVkLW1vbml0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSw2QkFBNkI7QUFDN0IsbUNBQW1DO0FBQ25DLDJDQUF1QztBQUV2QyxrREFBaUc7QUFDakcsOERBQTJFO0FBOEMzRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FvQkc7QUFDSCxNQUFhLDRCQUE2QixTQUFRLHNCQUFTO0lBSXpELFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBcUM7UUFDN0UsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVqQixNQUFNLHNCQUFzQixHQUFHLElBQUksR0FBRyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLHdCQUF3QixDQUFDLENBQUM7UUFFekYsSUFBSSxHQUFHLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsNEJBQTRCLEVBQUU7WUFDaEUsWUFBWSxFQUFFLHNCQUFzQixDQUFDLFlBQVk7WUFDakQsU0FBUyxFQUFFLENBQUM7U0FDYixDQUFDLENBQUM7UUFFSCx5RUFBeUU7UUFDekUsSUFBSSxHQUFHLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsb0JBQW9CLEVBQUU7WUFDbEQsWUFBWSxFQUFFO2dCQUNaLE1BQU0sRUFBRSxDQUFDLFNBQVMsQ0FBQztnQkFDbkIsVUFBVSxFQUFFLENBQUMsdUJBQXVCLENBQUM7Z0JBQ3JDLE1BQU0sRUFBRTtvQkFDTixVQUFVLEVBQUU7d0JBQ1YsVUFBVSxFQUFFLENBQUMsU0FBUyxDQUFDO3FCQUN4QjtvQkFDRCxHQUFHLENBQUMsS0FBSyxDQUFDLFVBQVUsSUFBSSxFQUFFLFVBQVUsRUFBRSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO2lCQUM1RDthQUNGO1lBQ0QsT0FBTyxFQUFFLENBQUMsSUFBSSxHQUFHLENBQUMsa0JBQWtCLENBQUMsa0JBQWtCLENBQUMsc0JBQXNCLENBQUMsQ0FBQztTQUNqRixDQUFDLENBQUM7UUFFSCxNQUFNLGtCQUFrQixHQUFHLEdBQUcsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLHNCQUFzQixDQUN2RSxJQUFJLEVBQ0osa0NBQWtDLEVBQ2xDO1lBQ0UsV0FBVyxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyw0QkFBNEIsSUFBSSw0QkFBNEIsQ0FBQyx5QkFBeUIsQ0FBQztZQUM3SCxlQUFlLEVBQUUsSUFBSTtTQUN0QixDQUNGLENBQUM7UUFFRixJQUFJLEdBQUcsQ0FBQyxRQUFRLENBQUMsa0JBQWtCLENBQUMsSUFBSSxFQUFFLHlCQUF5QixFQUFFO1lBQ25FLFdBQVcsRUFBRSxJQUFJLEdBQUcsQ0FBQyxxQkFBcUIsQ0FBQyxpQkFBaUIsQ0FBQyxrQkFBa0IsQ0FBQztZQUNoRixhQUFhLEVBQUUsR0FBRyxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUMvQyx5QkFBeUIsRUFDekIscUNBQXFDLENBQ3RDO1lBQ0QsUUFBUSxFQUFFLHNCQUFzQjtTQUNqQyxDQUFDLENBQUM7UUFFSCw0RkFBNEY7UUFDNUYsSUFBSSwwQkFBYyxDQUFDLElBQUksRUFBRSwrQkFBK0IsRUFBRTtZQUN4RCxJQUFJLEVBQUUsK0JBQStCO1lBQ3JDLFdBQVcsRUFBRSxLQUFLLENBQUMsV0FBVztZQUM5QixXQUFXLEVBQUUsd0NBQTRCLENBQUMsU0FBUztZQUNuRCxLQUFLLEVBQUUsb0JBQW9CLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sNEJBQ25ELHNCQUFzQixDQUFDLFlBQ3pCLGlEQUFpRDtZQUNqRCxPQUFPLEVBQUUsc0VBQXNFO2dCQUNyRSx1RUFBdUU7WUFDakYsUUFBUSxFQUFFLEtBQUssQ0FBQyxRQUFRLElBQUksMEJBQWMsQ0FBQyxnQkFBZ0I7WUFDM0QsWUFBWSxFQUFFLEtBQUssQ0FBQyxZQUFZO1NBQ2pDLENBQUMsQ0FBQztRQUVILGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN2QixDQUFDOztBQTlESCxvRUErREM7OztBQTdEaUIsc0RBQXlCLEdBQUcsZ0NBQWdDLENBQUM7QUErRC9FLFNBQVMsY0FBYyxDQUFDLEtBQTJCO0lBQ2pELE1BQU0sQ0FBQyxPQUFPLEVBQUUsV0FBVyxDQUFDLEdBQUcsU0FBUyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDbkUsSUFBSSw2QkFBVyxDQUFDLEtBQUssRUFBRSxhQUFhLEVBQUU7UUFDcEMsT0FBTyxFQUFFLG9DQUFrQixDQUFDLGdCQUFnQjtRQUM1QyxXQUFXO1FBQ1gsT0FBTztRQUNQLE9BQU8sRUFBRSxPQUFPO0tBQ2pCLENBQUMsQ0FBQztBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0ICogYXMgY2RrIGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0ICogYXMgY29uc3RydWN0cyBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCB7IERhdGFkb2dNb25pdG9yLCBEYXRhZG9nTW9uaXRvclF1ZXJ5QWxlcnRUeXBlLCBJTm90aWZpY2F0aW9uIH0gZnJvbSAnLi4vLi4vLi4vZGF0YWRvZ3YyJztcbmltcG9ydCB7IENsYWlkb21ldGVyLCBDbGFpZG9tZXRlclByb2R1Y3QgfSBmcm9tICcuLi8uLi8uLi9yaW8tY2xhaWRvbWV0ZXInO1xuXG5leHBvcnQgaW50ZXJmYWNlIEVjc0FicnVwdGx5U3RvcHBlZE1vbml0b3JQcm9wcyB7XG5cbiAgLyoqXG4gICAgICogVGhlIG5hbWUgb2YgdGhlIHNlcnZpY2UgdG8gd2hpY2ggdGhlIG1vbml0b3IgYmVsb25ncy5cbiAgICAgKlxuICAgICAqIFVzZWQgdG8gZ2VuZXJhdGUgdGhlIG1vbml0b3IgbmFtZSBhcyB3ZWxsIGEgYXBwbHkgdGhlIGBzZXJ2aWNlYCB0YWcuXG4gICAgICovXG4gIHJlYWRvbmx5IHNlcnZpY2VOYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAgICogVG8gZXhwbGljaXRseSBkaXNhYmxlIG5vdGlmaWNhdGlvbnMgdXNlIHtAbGluayBOb05vdGlmaWNhdGlvbn0uXG4gICAgICpcbiAgICAgKiBAZGVmYXVsdFZhbHVlIHtAbGluayBEZWZhdWx0U2xhY2tOb3RpZmljYXRpb259XG4gICAgICpcbiAgICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5kYXRhZG9naHEuY29tL21vbml0b3JzL25vdGlmeVxuICAgICAqL1xuXG4gIHJlYWRvbmx5IG5vdGlmaWNhdGlvbj86IElOb3RpZmljYXRpb247XG5cbiAgLyoqXG4gICAgICogVGhlIGFsZXJ0IHByaW9yaXR5IG9mIHRoZSBtb25pdG9yXG4gICAgICpcbiAgICAgKiBAZGVmYXVsdFZhbHVlIHtAbGluayBEYXRhZG9nTW9uaXRvci5ERUZBVUxUX1BSSU9SSVRZfVxuICAgICAqL1xuXG4gIHJlYWRvbmx5IHByaW9yaXR5PzogbnVtYmVyO1xuXG4gIC8qKlxuICAgICAqIEFSTiBvZiB0aGUgY2x1c3RlciB0aGF0IHNob3VsZCBiZSBtb25pdG9yZWQsIGNvbnN1bWluZyBvbmx5IEVDUyBldmVudHMgYmVsb25naW5nIHRvIHRoZSBjbHVzdGVyLlxuICAgICAqIElmIG5vIGNsdXN0ZXIgaXMgcHJvdmlkZWQsIHRoZSBtb25pdG9yIHdpbGwgY29uc3VtZSBFQ1MgZXZlbnRzIGZvciBhbGwgY2x1c3RlcnMgd2l0aGluIHRoZSBhY2NvdW50LlxuICAgICAqL1xuICByZWFkb25seSBjbHVzdGVyQXJuPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgICAqIEFSTiBvZiB0aGUgRGF0YWRvZyBmb3J3YXJkZXIgTGFtYmRhIGZ1bmN0aW9uIHVzZWQgdG8gZm9yd2FyZCB0aGUgQ2xvdWRXYXRjaCBsb2dzIHRvIERhdGFkb2cuXG4gICAgICogQ3VycmVudGx5LCB0d28gdmFsdWVzIGFyZSBrbm93IHRvIGJlIGV4cG9ydGVkIGJ5IHRoZSBhY2NvdW50IG1vZHVsZXM6XG4gICAgICogKiBkYXRhZG9nLWZvcndhcmRlci1Gb3J3YXJkZXJBcm46IGV4cG9ydGVkIGJ5IHRoZSAzcmQgcGFydHkgYWNjb3VudCBtb2R1bGVzIFtEYXRhZG9nLWZvcndhcmRlcl0oaHR0cHM6Ly9naXRodWIuY29tL0RhdGFEb2cvZGF0YWRvZy1zZXJ2ZXJsZXNzLWZ1bmN0aW9ucy9yZWxlYXNlcylcbiAgICAgKiAqIGN1c3RvbS1yZXNvdXJjZS1kYXRhZG9nLWxvZ2ZvcndhcmRlci1mdW5jdGlvbi1hcm46IGV4cG9ydGVkIGJ5IHRoZSBkZXByZWNhdGVkIGN1c3RvbSBhY2NvdW50IG1vZHVsZSBbZGF0YWRvZy1pbnRlZ3JhdGlvbl0oaHR0cHM6Ly9iaXRidWNrZXQuY29sbGFib3JhdGlvbi1tYW4uY29tL3Byb2plY3RzL1JJT0RFVi9yZXBvcy9kYXRhZG9nLWludGVncmF0aW9uL2Jyb3dzZSkuXG4gICAgICpcbiAgICAgKiBAZGVmYXVsdFZhbHVlIHtAbGluayBBd3NFY3NBYnJ1cHRseVN0b3BwZWRNb25pdG9yLkRFRkFVTFRfTE9HX0ZPUldBUkRFUl9BUk59XG4gICAgICovXG4gIHJlYWRvbmx5IGRhdGFkb2dMb2dGb3J3YXJkZXJMYW1iZGFBcm4/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogIyBXQVJOSU5HOiBUaGlzIGNvbnN0cnVjdCBpcyBzdGlsbCBpbiB0aGUgYmV0YSBwaGFzZS5cbiAqXG4gKiBUaGUgY29uc3RydWN0IGNyZWF0ZXMgbW9uaXRvcmluZyBmb3IgZGV0ZWN0aW5nIEVDUyBjb250YWluZXJzIHRoYXQgd2VyZSBzdG9wcGVkIGFicnVwdGx5IGJ5IEFXUyBmb3IgcmVhc29ucyBzdWNoIGFzLFxuICogb3V0IG9mIG1lbW9yeSwgb3IgZmFpbGVkIGhlYWx0aCBjaGVja3MuXG4gKlxuICogVGhpcyBtb25pdG9yIGFkZHMgdHJhbnNwYXJlbmN5IHRvIHN1Y2ggY2FzZXMsIHdoaWNoIG90aGVyd2lzZSB3b3VsZCBoYXBwZW4gd2l0aG91dCBiZWluZyBub3RpY2VkIGFuZCBjb3VsZCBlc2NhbGF0ZVxuICogdG8gYmlnZ2VyIGlzc3VlcywgbGlrZSBhIHNlcnZpY2UgdGhhdCByZXF1aXJlcyBtb3JlIHJlc291cmNlcyB0byBydW4gcHJvcGVybHkuXG4gKlxuICogVGhlIGNvbnN0cnVjdCB3aWxsIGNvbnN1bWUgdGhlIEVDUyBldmVudHMgYW5kIHNlbmQgdGhlbSB0byBhIENsb3VkV2F0Y2ggbG9nIGdyb3VwLCB3aGljaCBhcmUgZm9yd2FyZGVkIHRvIERhdGFkb2csXG4gKiBhbGxvd2luZyBiZXR0ZXIgYW5hbHlzZXMgc2luY2UgQVdTIGtlZXBzIHRoZSBzdG9wcGVkIHRhc2sgZGV0YWlscyBmb3Igb25seSBvbmUgaG91ciBhbmQgd2lsbCBiZSB1c2VkIHRvIGNyZWF0ZSBhXG4gKiBtb25pdG9yLlxuICpcbiAqIENvbnRyaWJ1dGlvbnMgYXJlIG1vcmUgdGhhbiB3ZWxjb21lLCBwbGVhc2UgZ2V0IGluIHRvdWNoIHdpdGggVGVhbSBPdXRib3VuZCB0byBlbnN1cmUgY29tcGF0aWJpbGl0eS5cbiAqXG4gKiBUaGlzIGNvbnN0cnVjdCB3YXMgYmFzZWQgb24gYW4gQVdTIGJsb2cgcG9zdCBhYm91dCBFQ1MgYW5vbWFseSBkZXRlY3Rpb24sIHNlZSBoZXJlOlxuICoge0BsaW5rIGh0dHBzOi8vYXdzLmFtYXpvbi5jb20vYmxvZ3MvY29udGFpbmVycy9hbWF6b24tZWxhc3RpYy1jb250YWluZXItc2VydmljZS1hbm9tYWx5LWRldGVjdGlvbi11c2luZy1hbWF6b24tZXZlbnRicmlkZ2UvfS5cbiAqXG4gKiBNb3JlIGRldGFpbHMgb24gdGhlIEFXUyBFQ1MgZXZlbnRzIGNhbiBiZSBmb3VuZCBoZXJlOlxuICoge0BsaW5rIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25FQ1MvbGF0ZXN0L2RldmVsb3Blcmd1aWRlL2Vjc19jd2VfZXZlbnRzLmh0bWx9LlxuICovXG5leHBvcnQgY2xhc3MgQXdzRWNzQWJydXB0bHlTdG9wcGVkTW9uaXRvciBleHRlbmRzIENvbnN0cnVjdCB7XG5cbiAgc3RhdGljIHJlYWRvbmx5IERFRkFVTFRfTE9HX0ZPUldBUkRFUl9BUk4gPSAnZGF0YWRvZy1mb3J3YXJkZXItRm9yd2FyZGVyQXJuJztcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogRWNzQWJydXB0bHlTdG9wcGVkTW9uaXRvclByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIGNvbnN0IGVjc1N0YXRlQ2hhbmdlTG9nR3JvdXAgPSBuZXcgY2RrLmF3c19sb2dzLkxvZ0dyb3VwKHRoaXMsICdFY3NTdGF0ZUNoYW5nZUxvZ0dyb3VwJyk7XG5cbiAgICBuZXcgY2RrLmF3c19sb2dzLkxvZ1JldGVudGlvbih0aGlzLCAnRWNzU3RhdGVDaGFuZ2VMb2dSZXRlbnRpb24nLCB7XG4gICAgICBsb2dHcm91cE5hbWU6IGVjc1N0YXRlQ2hhbmdlTG9nR3JvdXAubG9nR3JvdXBOYW1lLFxuICAgICAgcmV0ZW50aW9uOiAzLFxuICAgIH0pO1xuXG4gICAgLy8gUnVsZSB0byBjb3ZlciBhbGwgdGFzayBjaGFuZ2VzIHdoZXJlIG9uZSBvZiB0aGUgY29udGFpbmVycyB3YXMgc3RvcHBlZFxuICAgIG5ldyBjZGsuYXdzX2V2ZW50cy5SdWxlKHRoaXMsICdFY3NTdGF0ZUNoYW5nZVJ1bGUnLCB7XG4gICAgICBldmVudFBhdHRlcm46IHtcbiAgICAgICAgc291cmNlOiBbJ2F3cy5lY3MnXSxcbiAgICAgICAgZGV0YWlsVHlwZTogWydFQ1MgVGFzayBTdGF0ZSBDaGFuZ2UnXSxcbiAgICAgICAgZGV0YWlsOiB7XG4gICAgICAgICAgY29udGFpbmVyczoge1xuICAgICAgICAgICAgbGFzdFN0YXR1czogWydTVE9QUEVEJ10sXG4gICAgICAgICAgfSxcbiAgICAgICAgICAuLi4ocHJvcHMuY2x1c3RlckFybiAmJiB7IGNsdXN0ZXJBcm46IFtwcm9wcy5jbHVzdGVyQXJuXSB9KSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICB0YXJnZXRzOiBbbmV3IGNkay5hd3NfZXZlbnRzX3RhcmdldHMuQ2xvdWRXYXRjaExvZ0dyb3VwKGVjc1N0YXRlQ2hhbmdlTG9nR3JvdXApXSxcbiAgICB9KTtcblxuICAgIGNvbnN0IGxvZ0ZvcndhcmRlckxhbWJkYSA9IGNkay5hd3NfbGFtYmRhLkZ1bmN0aW9uLmZyb21GdW5jdGlvbkF0dHJpYnV0ZXMoXG4gICAgICB0aGlzLFxuICAgICAgJ0Vjc1N0YXRlQ2hhbmdlTG9nRm9yd2FyZGVyTGFtYmRhJyxcbiAgICAgIHtcbiAgICAgICAgZnVuY3Rpb25Bcm46IGNkay5Gbi5pbXBvcnRWYWx1ZShwcm9wcy5kYXRhZG9nTG9nRm9yd2FyZGVyTGFtYmRhQXJuID8/IEF3c0Vjc0FicnVwdGx5U3RvcHBlZE1vbml0b3IuREVGQVVMVF9MT0dfRk9SV0FSREVSX0FSTiksXG4gICAgICAgIHNhbWVFbnZpcm9ubWVudDogdHJ1ZSxcbiAgICAgIH0sXG4gICAgKTtcblxuICAgIG5ldyBjZGsuYXdzX2xvZ3MuU3Vic2NyaXB0aW9uRmlsdGVyKHRoaXMsICdFY3NTdGF0ZUNoYW5nZUxvZ0ZpbHRlcicsIHtcbiAgICAgIGRlc3RpbmF0aW9uOiBuZXcgY2RrLmF3c19sb2dzX2Rlc3RpbmF0aW9ucy5MYW1iZGFEZXN0aW5hdGlvbihsb2dGb3J3YXJkZXJMYW1iZGEpLFxuICAgICAgZmlsdGVyUGF0dGVybjogY2RrLmF3c19sb2dzLkZpbHRlclBhdHRlcm4uYW55VGVybShcbiAgICAgICAgJ0NvbnRhaW5lciBraWxsZWQgZHVlIHRvJyxcbiAgICAgICAgJ1Rhc2sgZmFpbGVkIGNvbnRhaW5lciBoZWFsdGggY2hlY2tzJyxcbiAgICAgICksXG4gICAgICBsb2dHcm91cDogZWNzU3RhdGVDaGFuZ2VMb2dHcm91cCxcbiAgICB9KTtcblxuICAgIC8vIEFmdGVyIGJlaW5nIG1pZ3JhdGVkIHRvIHRoZSBuZXcgdmVyc2lvbiBpdCBjYW4gYmUgYWRkZWQgdG8gdGhlIENMQUlEIGNvbnN0cnVjdCByZXBvc2l0b3J5XG4gICAgbmV3IERhdGFkb2dNb25pdG9yKHRoaXMsICdFY3NTdGF0ZUNoYW5nZUxvZ0dyb3VwTW9uaXRvcicsIHtcbiAgICAgIG5hbWU6ICdVbmV4cGVjdGVkIEVDUyBzdGF0dXMgY2hhbmdlcycsXG4gICAgICBzZXJ2aWNlTmFtZTogcHJvcHMuc2VydmljZU5hbWUsXG4gICAgICBtb25pdG9yVHlwZTogRGF0YWRvZ01vbml0b3JRdWVyeUFsZXJ0VHlwZS5MT0dfQUxFUlQsXG4gICAgICBxdWVyeTogYGxvZ3MoXCJhY2NvdW50X2lkOiR7Y2RrLlN0YWNrLm9mKHRoaXMpLmFjY291bnR9IEBhd3MuYXdzbG9ncy5sb2dHcm91cDpcXFwiJHtcbiAgICAgICAgZWNzU3RhdGVDaGFuZ2VMb2dHcm91cC5sb2dHcm91cE5hbWVcbiAgICAgIH1cXFwiXCIpLmluZGV4KFwiKlwiKS5yb2xsdXAoXCJjb3VudFwiKS5sYXN0KFwiNW1cIikgPj0gMWAsXG4gICAgICBtZXNzYWdlOiAne3sjaXNfYWxlcnR9fVRoZXJlIGFyZSB1bmV4cGVjdGVkIEVDUyBzdGF0dXMgY2hhbmdlcyBpbiB0aGUgYWNjb3VudCAnICtcbiAgICAgICAgICAgICAgICAne3tsb2cudGFncy5hY2NvdW50X2lkfX0sIG1vcmUgZGV0YWlscyBoZXJlIHt7bG9nLmxpbmt9fSB7ey9pc19hbGVydH19JyxcbiAgICAgIHByaW9yaXR5OiBwcm9wcy5wcmlvcml0eSA/PyBEYXRhZG9nTW9uaXRvci5ERUZBVUxUX1BSSU9SSVRZLFxuICAgICAgbm90aWZpY2F0aW9uOiBwcm9wcy5ub3RpZmljYXRpb24sXG4gICAgfSk7XG5cbiAgICBhZGRDbGFpZG9tZXRlcih0aGlzKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBhZGRDbGFpZG9tZXRlcihzY29wZTogY29uc3RydWN0cy5Db25zdHJ1Y3QpIHtcbiAgY29uc3QgW2ZlYXR1cmUsIHBhY2thZ2VOYW1lXSA9IF9fZGlybmFtZS5zcGxpdChwYXRoLnNlcCkucmV2ZXJzZSgpO1xuICBuZXcgQ2xhaWRvbWV0ZXIoc2NvcGUsICdDbGFpZG9tZXRlcicsIHtcbiAgICBwcm9kdWN0OiBDbGFpZG9tZXRlclByb2R1Y3QuQ0RLX0NPTlRSSUJVVElPTixcbiAgICBwYWNrYWdlTmFtZSxcbiAgICBmZWF0dXJlLFxuICAgIHZlcnNpb246ICcwLjAuNScsXG4gIH0pO1xufVxuIl19
@@ -17,7 +17,7 @@ export declare class DataDog {
17
17
  };
18
18
  static addDatadogSidecar(scope: Construct, taskDefinition: ecs.TaskDefinition, accountName: string, teamName: string, teamIdentifier: string, stage: string, serviceName: string, version: string, datadogApiKeyParameter: ssm.IStringParameter, datadogSite: string, datadogLoggingMode: DataDogLoggingMode, apmGetResourcesToIgnore: string[], cpu: number, memoryLimitMiB: number, essential: boolean, containerTag: string, additionalTags: {
19
19
  [k: string]: string;
20
- } | undefined): ecs.ContainerDefinition;
20
+ } | undefined, enableRestartPolicy: boolean, restartIgnoredExitCodes: number[]): ecs.ContainerDefinition;
21
21
  static addFireLensLogRouter(taskDefinition: ecs.TaskDefinition, cpu: number, memoryLimitMiB: number, firelensConfigFilePath: string, firelensConfigBucketArn: string, serviceName: string): ecs.ContainerDefinition;
22
22
  static setupLogging(scope: Construct, accountName: string, teamName: string, teamIdentifier: string, stage: string, serviceName: string, version: string, datadogApiKeyParameter: ssm.IStringParameter, datadogLoggingMode: DataDogLoggingMode, datadogSite: string, containerType: 'service' | 'datadog-sidecar', additionalTags: {
23
23
  [k: string]: string;
@@ -65,6 +65,8 @@ export declare function addDatadogSidecar(props: {
65
65
  additionalTags: {
66
66
  [k: string]: string;
67
67
  } | undefined;
68
+ enableRestartPolicy: boolean;
69
+ restartIgnoredExitCodes: number[] | undefined;
68
70
  }): ecs.ContainerDefinition;
69
71
  export declare function addFirelensConfigUploadFromS3Permissions(props: {
70
72
  taskDefinition: ecs.TaskDefinition;
@@ -34,7 +34,7 @@ class DataDog {
34
34
  static getFargateDockerLabels(stage, serviceName, version) {
35
35
  return getFargateDockerLabels({ stage, serviceName, version });
36
36
  }
37
- static addDatadogSidecar(scope, taskDefinition, accountName, teamName, teamIdentifier, stage, serviceName, version, datadogApiKeyParameter, datadogSite, datadogLoggingMode, apmGetResourcesToIgnore, cpu, memoryLimitMiB, essential, containerTag, additionalTags) {
37
+ static addDatadogSidecar(scope, taskDefinition, accountName, teamName, teamIdentifier, stage, serviceName, version, datadogApiKeyParameter, datadogSite, datadogLoggingMode, apmGetResourcesToIgnore, cpu, memoryLimitMiB, essential, containerTag, additionalTags, enableRestartPolicy, restartIgnoredExitCodes) {
38
38
  return addDatadogSidecar({
39
39
  scope,
40
40
  taskDefinition,
@@ -53,6 +53,8 @@ class DataDog {
53
53
  essential,
54
54
  containerTag,
55
55
  additionalTags,
56
+ enableRestartPolicy,
57
+ restartIgnoredExitCodes,
56
58
  });
57
59
  }
58
60
  static addFireLensLogRouter(taskDefinition, cpu, memoryLimitMiB, firelensConfigFilePath, firelensConfigBucketArn, serviceName) {
@@ -122,6 +124,8 @@ function addDatadogSidecar(props) {
122
124
  const { account: accountId, region } = aws_cdk_lib_1.Stack.of(props.scope);
123
125
  const datadogSidecar = props.taskDefinition.addContainer('datadog-agent', {
124
126
  image: ecs.ContainerImage.fromRegistry(`public.ecr.aws/datadog/agent:${props.containerTag}`),
127
+ enableRestartPolicy: props.enableRestartPolicy,
128
+ restartIgnoredExitCodes: props.restartIgnoredExitCodes,
125
129
  logging: setupLogging({ ...props, containerType: 'datadog-sidecar' }),
126
130
  cpu: props.cpu,
127
131
  memoryLimitMiB: props.memoryLimitMiB,
@@ -321,4 +325,4 @@ function ensureLoggingAndMonitoringAreReadyBeforeServiceStarts(rioFargateService
321
325
  }
322
326
  }
323
327
  }
324
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YWRvZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9mYXJnYXRlL2RhdGFkb2cudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBa0lBLDBGQTZCQztBQWtCRCx3REFNQztBQUVELDhDQW9FQztBQUVELDRGQVNDO0FBNENELG9EQWlDQztBQUVELG9DQXFHQztBQUVELHNIQW9CQztBQWxkRCw2Q0FBOEQ7QUFDOUQsMkNBQTJDO0FBQzNDLGlEQUF1RDtBQUN2RCwyQ0FBMkM7QUFDM0MsaURBQWlEO0FBQ2pELDZDQUE2QztBQUc3QywrREFBOEU7QUFHOUU7O0dBRUc7QUFDSCxNQUFhLE9BQU87SUFFWCxNQUFNLENBQUMsdUNBQXVDLENBQ25ELEtBQWdCLEVBQ2hCLEtBQWEsRUFDYixXQUFtQixFQUNuQixPQUFlLEVBQ2YsV0FBbUIsRUFDbkIsUUFBZ0IsRUFDaEIsY0FBc0IsRUFDdEIsY0FBa0Q7UUFFbEQsT0FBTyx1Q0FBdUMsQ0FBQztZQUM3QyxLQUFLO1lBQ0wsS0FBSztZQUNMLFdBQVc7WUFDWCxPQUFPO1lBQ1AsV0FBVztZQUNYLFFBQVE7WUFDUixjQUFjO1lBQ2QsY0FBYztTQUNmLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTSxNQUFNLENBQUMsc0JBQXNCLENBQUMsS0FBYSxFQUFFLFdBQW1CLEVBQUUsT0FBZTtRQUN0RixPQUFPLHNCQUFzQixDQUFDLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDO0lBQ2pFLENBQUM7SUFFTSxNQUFNLENBQUMsaUJBQWlCLENBQzdCLEtBQWdCLEVBQ2hCLGNBQWtDLEVBQ2xDLFdBQW1CLEVBQ25CLFFBQWdCLEVBQ2hCLGNBQXNCLEVBQ3RCLEtBQWEsRUFDYixXQUFtQixFQUNuQixPQUFlLEVBQ2Ysc0JBQTRDLEVBQzVDLFdBQW1CLEVBQ25CLGtCQUFzQyxFQUN0Qyx1QkFBaUMsRUFDakMsR0FBVyxFQUNYLGNBQXNCLEVBQ3RCLFNBQWtCLEVBQ2xC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QyxLQUFLO1NBQ2xELENBQUMsQ0FBQztRQUVILElBQUksaUJBQWlCLENBQUMsaUNBQWlDLENBQUMsZUFBZSxFQUFFLFNBQVMsS0FBSyxhQUFhLEVBQUUsQ0FBQztZQUNyRyxpQkFBaUIsQ0FBQyxpQ0FBaUMsQ0FBQyx3QkFBd0IsQ0FBQztnQkFDM0UsU0FBUyxFQUFFLGlCQUFpQixDQUFDLDRCQUE0QjtnQkFDekQsU0FBUyxFQUFFLEdBQUcsQ0FBQyw0QkFBNEIsQ0FBQyxLQUFLO2FBQ2xELENBQUMsQ0FBQztRQUNMLENBQUM7SUFDSCxDQUFDO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IER1cmF0aW9uLCBGbiwgU2l6ZSwgU3RhY2ssIFRhZ3MgfSBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgKiBhcyBlY3MgZnJvbSAnYXdzLWNkay1saWIvYXdzLWVjcyc7XG5pbXBvcnQgeyBBd3NMb2dEcml2ZXJNb2RlIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWVjcyc7XG5pbXBvcnQgKiBhcyBpYW0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWlhbSc7XG5pbXBvcnQgKiBhcyBsYW1iZGEgZnJvbSAnYXdzLWNkay1saWIvYXdzLWxhbWJkYSc7XG5pbXBvcnQgKiBhcyBsb2dzIGZyb20gJ2F3cy1jZGstbGliL2F3cy1sb2dzJztcbmltcG9ydCAqIGFzIHNzbSBmcm9tICdhd3MtY2RrLWxpYi9hd3Mtc3NtJztcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0IHsgRGF0YURvZ0xvZ2dpbmdNb2RlLCBSaW9GYXJnYXRlU2VydmljZSB9IGZyb20gJy4vcmlvLWZhcmdhdGUtc2VydmljZSc7XG5pbXBvcnQgeyBSaW9GYXJnYXRlU2VydmljZUJsdWVHcmVlbkFscGhhIH0gZnJvbSAnLi9yaW8tZmFyZ2F0ZS1zZXJ2aWNlLWJsdWUtZ3JlZW4tYWxwaGEnO1xuXG4vKipcbiAqIEBkZXByZWNhdGVkIE1vdmVkIG91dCBzdGF0aWMgbWV0aG9kcyBhbmQgaW1wb3JvdmVkIHNpZ25hdHVyZS4gVXNlIG5hbWVkIGltcG9ydCBpbnN0ZWFkLlxuICovXG5leHBvcnQgY2xhc3MgRGF0YURvZyB7XG5cbiAgcHVibGljIHN0YXRpYyBnZXRGYXJnYXRlQ29udGFpbmVyRW52aXJvbm1lbnRWYXJpYWJsZXMoXG4gICAgc2NvcGU6IENvbnN0cnVjdCxcbiAgICBzdGFnZTogc3RyaW5nLFxuICAgIHNlcnZpY2VOYW1lOiBzdHJpbmcsXG4gICAgdmVyc2lvbjogc3RyaW5nLFxuICAgIGFjY291bnROYW1lOiBzdHJpbmcsXG4gICAgdGVhbU5hbWU6IHN0cmluZyxcbiAgICB0ZWFtSWRlbnRpZmllcjogc3RyaW5nLFxuICAgIGFkZGl0aW9uYWxUYWdzOiB7IFtrOiBzdHJpbmddOiBzdHJpbmd9IHwgdW5kZWZpbmVkLFxuICApOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9IHtcbiAgICByZXR1cm4gZ2V0RmFyZ2F0ZUNvbnRhaW5lckVudmlyb25tZW50VmFyaWFibGVzKHtcbiAgICAgIHNjb3BlLFxuICAgICAgc3RhZ2UsXG4gICAgICBzZXJ2aWNlTmFtZSxcbiAgICAgIHZlcnNpb24sXG4gICAgICBhY2NvdW50TmFtZSxcbiAgICAgIHRlYW1OYW1lLFxuICAgICAgdGVhbUlkZW50aWZpZXIsXG4gICAgICBhZGRpdGlvbmFsVGFncyxcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgZ2V0RmFyZ2F0ZURvY2tlckxhYmVscyhzdGFnZTogc3RyaW5nLCBzZXJ2aWNlTmFtZTogc3RyaW5nLCB2ZXJzaW9uOiBzdHJpbmcpOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9IHtcbiAgICByZXR1cm4gZ2V0RmFyZ2F0ZURvY2tlckxhYmVscyh7IHN0YWdlLCBzZXJ2aWNlTmFtZSwgdmVyc2lvbiB9KTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgYWRkRGF0YWRvZ1NpZGVjYXIoXG4gICAgc2NvcGU6IENvbnN0cnVjdCxcbiAgICB0YXNrRGVmaW5pdGlvbjogZWNzLlRhc2tEZWZpbml0aW9uLFxuICAgIGFjY291bnROYW1lOiBzdHJpbmcsXG4gICAgdGVhbU5hbWU6IHN0cmluZyxcbiAgICB0ZWFtSWRlbnRpZmllcjogc3RyaW5nLFxuICAgIHN0YWdlOiBzdHJpbmcsXG4gICAgc2VydmljZU5hbWU6IHN0cmluZyxcbiAgICB2ZXJzaW9uOiBzdHJpbmcsXG4gICAgZGF0YWRvZ0FwaUtleVBhcmFtZXRlcjogc3NtLklTdHJpbmdQYXJhbWV0ZXIsXG4gICAgZGF0YWRvZ1NpdGU6IHN0cmluZyxcbiAgICBkYXRhZG9nTG9nZ2luZ01vZGU6IERhdGFEb2dMb2dnaW5nTW9kZSxcbiAgICBhcG1HZXRSZXNvdXJjZXNUb0lnbm9yZTogc3RyaW5nW10sXG4gICAgY3B1OiBudW1iZXIsXG4gICAgbWVtb3J5TGltaXRNaUI6IG51bWJlcixcbiAgICBlc3NlbnRpYWw6IGJvb2xlYW4sXG4gICAgY29udGFpbmVyVGFnOiBzdHJpbmcsXG4gICAgYWRkaXRpb25hbFRhZ3M6IHsgW2s6IHN0cmluZ106IHN0cmluZ30gfCB1bmRlZmluZWQsXG4gICk6IGVjcy5Db250YWluZXJEZWZpbml0aW9uIHtcblxuICAgIHJldHVybiBhZGREYXRhZG9nU2lkZWNhcih7XG4gICAgICBzY29wZSxcbiAgICAgIHRhc2tEZWZpbml0aW9uLFxuICAgICAgYWNjb3VudE5hbWUsXG4gICAgICB0ZWFtTmFtZSxcbiAgICAgIHRlYW1JZGVudGlmaWVyLFxuICAgICAgc3RhZ2UsXG4gICAgICBzZXJ2aWNlTmFtZSxcbiAgICAgIHZlcnNpb24sXG4gICAgICBkYXRhZG9nQXBpS2V5UGFyYW1ldGVyLFxuICAgICAgZGF0YWRvZ1NpdGUsXG4gICAgICBkYXRhZG9nTG9nZ2luZ01vZGUsXG4gICAgICBhcG1HZXRSZXNvdXJjZXNUb0lnbm9yZSxcbiAgICAgIGNwdSxcbiAgICAgIG1lbW9yeUxpbWl0TWlCLFxuICAgICAgZXNzZW50aWFsLFxuICAgICAgY29udGFpbmVyVGFnLFxuICAgICAgYWRkaXRpb25hbFRhZ3MsXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGFkZEZpcmVMZW5zTG9nUm91dGVyKFxuICAgIHRhc2tEZWZpbml0aW9uOiBlY3MuVGFza0RlZmluaXRpb24sXG4gICAgY3B1OiBudW1iZXIsXG4gICAgbWVtb3J5TGltaXRNaUI6IG51bWJlcixcbiAgICBmaXJlbGVuc0NvbmZpZ0ZpbGVQYXRoOiBzdHJpbmcsXG4gICAgZmlyZWxlbnNDb25maWdCdWNrZXRBcm46IHN0cmluZyxcbiAgICBzZXJ2aWNlTmFtZTogc3RyaW5nLFxuICApOiBlY3MuQ29udGFpbmVyRGVmaW5pdGlvbiB7XG4gICAgcmV0dXJuIGFkZEZpcmVMZW5zTG9nUm91dGVyKHsgdGFza0RlZmluaXRpb24sIGNwdSwgbWVtb3J5TGltaXRNaUIsIGZpcmVsZW5zQ29uZmlnRmlsZVBhdGgsIGZpcmVsZW5zQ29uZmlnQnVja2V0QXJuLCBzZXJ2aWNlTmFtZSB9KTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgc2V0dXBMb2dnaW5nKFxuICAgIHNjb3BlOiBDb25zdHJ1Y3QsXG4gICAgYWNjb3VudE5hbWU6IHN0cmluZyxcbiAgICB0ZWFtTmFtZTogc3RyaW5nLFxuICAgIHRlYW1JZGVudGlmaWVyOiBzdHJpbmcsXG4gICAgc3RhZ2U6IHN0cmluZyxcbiAgICBzZXJ2aWNlTmFtZTogc3RyaW5nLFxuICAgIHZlcnNpb246IHN0cmluZyxcbiAgICBkYXRhZG9nQXBpS2V5UGFyYW1ldGVyOiBzc20uSVN0cmluZ1BhcmFtZXRlcixcbiAgICBkYXRhZG9nTG9nZ2luZ01vZGU6IERhdGFEb2dMb2dnaW5nTW9kZSxcbiAgICBkYXRhZG9nU2l0ZTogc3RyaW5nLFxuICAgIGNvbnRhaW5lclR5cGU6ICdzZXJ2aWNlJyB8ICdkYXRhZG9nLXNpZGVjYXInLFxuICAgIGFkZGl0aW9uYWxUYWdzOiB7IFtrOiBzdHJpbmddOiBzdHJpbmd9IHwgdW5kZWZpbmVkLFxuICApOiBlY3MuTG9nRHJpdmVyIHtcblxuICAgIHJldHVybiBzZXR1cExvZ2dpbmcoe1xuICAgICAgc2NvcGUsXG4gICAgICBhY2NvdW50TmFtZSxcbiAgICAgIHRlYW1OYW1lLFxuICAgICAgdGVhbUlkZW50aWZpZXIsXG4gICAgICBzdGFnZSxcbiAgICAgIHNlcnZpY2VOYW1lLFxuICAgICAgdmVyc2lvbixcbiAgICAgIGRhdGFkb2dBcGlLZXlQYXJhbWV0ZXIsXG4gICAgICBkYXRhZG9nTG9nZ2luZ01vZGUsXG4gICAgICBkYXRhZG9nU2l0ZSxcbiAgICAgIGNvbnRhaW5lclR5cGUsXG4gICAgICBhZGRpdGlvbmFsVGFncyxcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgZW5zdXJlTG9nZ2luZ0FuZE1vbml0b3JpbmdBcmVSZWFkeUJlZm9yZVNlcnZpY2VTdGFydHMocmlvRmFyZ2F0ZVNlcnZpY2U6IFJpb0ZhcmdhdGVTZXJ2aWNlKSB7XG4gICAgZW5zdXJlTG9nZ2luZ0FuZE1vbml0b3JpbmdBcmVSZWFkeUJlZm9yZVNlcnZpY2VTdGFydHMocmlvRmFyZ2F0ZVNlcnZpY2UpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRGYXJnYXRlQ29udGFpbmVyRW52aXJvbm1lbnRWYXJpYWJsZXMocHJvcHM6IHtcbiAgc2NvcGU6IENvbnN0cnVjdDtcbiAgc3RhZ2U6IHN0cmluZztcbiAgc2VydmljZU5hbWU6IHN0cmluZztcbiAgdmVyc2lvbjogc3RyaW5nO1xuICBhY2NvdW50TmFtZTogc3RyaW5nO1xuICB0ZWFtTmFtZTogc3RyaW5nO1xuICB0ZWFtSWRlbnRpZmllcjogc3RyaW5nO1xuICBhZGRpdGlvbmFsVGFnczogeyBbazogc3RyaW5nXTogc3RyaW5nfSB8IHVuZGVmaW5lZDtcbn0pOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9IHtcblxuICBjb25zdCB7IGFjY291bnQ6IGFjY291bnRJZCwgcmVnaW9uIH0gPSBTdGFjay5vZihwcm9wcy5zY29wZSk7XG5cbiAgcmV0dXJuIHtcbiAgICAvLyB1bmlmaWVkIHRhZ2dpbmcsIHNlZSBodHRwczovL2RvY3MuZGF0YWRvZ2hxLmNvbS9nZXR0aW5nX3N0YXJ0ZWQvdGFnZ2luZy91bmlmaWVkX3NlcnZpY2VfdGFnZ2luZy8/dGFiPWVjc1xuICAgIEREX0VOVjogcHJvcHMuc3RhZ2UsXG4gICAgRERfU0VSVklDRTogcHJvcHMuc2VydmljZU5hbWUsXG4gICAgRERfVkVSU0lPTjogcHJvcHMudmVyc2lvbixcbiAgICAvLyBBUE0gYW5kIHRyYWNpbmcsIHNlZSBodHRwczovL2RvY3MuZGF0YWRvZ2hxLmNvbS90cmFjaW5nL3NldHVwX292ZXJ2aWV3L3NldHVwL2phdmEvP3RhYj1jb250YWluZXJzXG4gICAgRERfTE9HU19JTkpFQ1RJT046ICd0cnVlJyxcbiAgICBERF9TRVJWSUNFX01BUFBJTkc6IGdldEFwbVNlcnZpY2VNYXBwaW5nRW52aXJvbm1lbnRWYXJpYWJsZVZhbHVlKHByb3BzLnNlcnZpY2VOYW1lKSxcbiAgICBERF9UQUdTOiBnZXRUYWdzRW52aXJvbm1lbnRWYXJpYWJsZVZhbHVlKHtcbiAgICAgIC4uLnByb3BzLFxuICAgICAgY29udGFpbmVyVHlwZTogJ3NlcnZpY2UnLFxuICAgICAgYWNjb3VudElkLFxuICAgICAgcmVnaW9uLFxuICAgIH0pLFxuICAgIEREX1RSQUNFX1NBTVBMRV9SQVRFOiAnMS4wJywgLy8gc2VlIGh0dHBzOi8vZGR0cmFjZS5yZWFkdGhlZG9jcy5pby9lbi9zdGFibGUvY29uZmlndXJhdGlvbi5odG1sXG4gIH07XG59XG5cbi8vIHdlIGFkZCBhbGwgcG9zc2libGUgc2VydmljZSBtYXBwaW5ncyBoZXJlIGV2ZW4gaWYgbm90IHVzZWQgaW4gYSBwYXJ0aWN1bGFyIHNlcnZpY2UgdG8gZ2V0IGdsb2JhbGx5IHVuaXF1ZSBuYW1lc1xuZnVuY3Rpb24gZ2V0QXBtU2VydmljZU1hcHBpbmdFbnZpcm9ubWVudFZhcmlhYmxlVmFsdWUoc2VydmljZU5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG5cbiAgY29uc3Qgc2VydmljZU1hcHBpbmcgPSB7XG4gICAgJ2RhdGFiYXNlJzogYCR7c2VydmljZU5hbWV9LWF1cm9yYWAsXG4gICAgJ2phdmEtYXdzLXNkayc6IGAke3NlcnZpY2VOYW1lfS1hd3Mtc2RrYCxcbiAgICAna2Fma2EnOiBgJHtzZXJ2aWNlTmFtZX0ta2Fma2FgLFxuICAgICdteXNxbCc6IGAke3NlcnZpY2VOYW1lfS1hdXJvcmFgLFxuICAgICdyZWRpcyc6IGAke3NlcnZpY2VOYW1lfS1yZWRpc2AsXG4gIH07XG5cbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHNlcnZpY2VNYXBwaW5nKVxuICAgIC5tYXAoKFtrZXksIHZhbHVlXSkgPT4gYCR7a2V5fToke3ZhbHVlfWApXG4gICAgLmpvaW4oJywnKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEZhcmdhdGVEb2NrZXJMYWJlbHMocHJvcHM6IHtzdGFnZTogc3RyaW5nOyBzZXJ2aWNlTmFtZTogc3RyaW5nOyB2ZXJzaW9uOiBzdHJpbmd9KTogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSB7XG4gIHJldHVybiB7XG4gICAgJ2NvbS5kYXRhZG9naHEudGFncy5lbnYnOiBwcm9wcy5zdGFnZSxcbiAgICAnY29tLmRhdGFkb2docS50YWdzLnNlcnZpY2UnOiBwcm9wcy5zZXJ2aWNlTmFtZSxcbiAgICAnY29tLmRhdGFkb2docS50YWdzLnZlcnNpb24nOiBwcm9wcy52ZXJzaW9uLFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYWRkRGF0YWRvZ1NpZGVjYXIocHJvcHM6IHtcbiAgc2NvcGU6IENvbnN0cnVjdDtcbiAgdGFza0RlZmluaXRpb246IGVjcy5UYXNrRGVmaW5pdGlvbjtcbiAgYWNjb3VudE5hbWU6IHN0cmluZztcbiAgdGVhbU5hbWU6IHN0cmluZztcbiAgdGVhbUlkZW50aWZpZXI6IHN0cmluZztcbiAgc3RhZ2U6IHN0cmluZztcbiAgc2VydmljZU5hbWU6IHN0cmluZztcbiAgdmVyc2lvbjogc3RyaW5nO1xuICBkYXRhZG9nQXBpS2V5UGFyYW1ldGVyOiBzc20uSVN0cmluZ1BhcmFtZXRlcjtcbiAgZGF0YWRvZ1NpdGU6IHN0cmluZztcbiAgZGF0YWRvZ0xvZ2dpbmdNb2RlOiBEYXRhRG9nTG9nZ2luZ01vZGU7XG4gIGFwbUdldFJlc291cmNlc1RvSWdub3JlOiBzdHJpbmdbXTtcbiAgY3B1OiBudW1iZXI7XG4gIG1lbW9yeUxpbWl0TWlCOiBudW1iZXI7XG4gIGVzc2VudGlhbDogYm9vbGVhbjtcbiAgY29udGFpbmVyVGFnOiBzdHJpbmc7XG4gIGFkZGl0aW9uYWxUYWdzOiB7IFtrOiBzdHJpbmddOiBzdHJpbmd9IHwgdW5kZWZpbmVkO1xufSk6IGVjcy5Db250YWluZXJEZWZpbml0aW9uIHtcblxuICBjb25zdCB7IGFjY291bnQ6IGFjY291bnRJZCwgcmVnaW9uIH0gPSBTdGFjay5vZihwcm9wcy5zY29wZSk7XG4gIGNvbnN0IGRhdGFkb2dTaWRlY2FyID0gcHJvcHMudGFza0RlZmluaXRpb24uYWRkQ29udGFpbmVyKCdkYXRhZG9nLWFnZW50Jywge1xuICAgIGltYWdlOiBlY3MuQ29udGFpbmVySW1hZ2UuZnJvbVJlZ2lzdHJ5KGBwdWJsaWMuZWNyLmF3cy9kYXRhZG9nL2FnZW50OiR7cHJvcHMuY29udGFpbmVyVGFnfWApLFxuICAgIGxvZ2dpbmc6IHNldHVwTG9nZ2luZyh7IC4uLnByb3BzLCBjb250YWluZXJUeXBlOiAnZGF0YWRvZy1zaWRlY2FyJyB9KSxcbiAgICBjcHU6IHByb3BzLmNwdSxcbiAgICBtZW1vcnlMaW1pdE1pQjogcHJvcHMubWVtb3J5TGltaXRNaUIsXG4gICAgZW52aXJvbm1lbnQ6IHtcbiAgICAgIC8vIHVuaWZpZWQgdGFnZ2luZywgc2VlIGh0dHBzOi8vZG9jcy5kYXRhZG9naHEuY29tL2dldHRpbmdfc3RhcnRlZC90YWdnaW5nL3VuaWZpZWRfc2VydmljZV90YWdnaW5nLz90YWI9ZWNzXG4gICAgICBERF9FTlY6IHByb3BzLnN0YWdlLFxuICAgICAgRERfU0VSVklDRTogcHJvcHMuc2VydmljZU5hbWUsXG4gICAgICBERF9WRVJTSU9OOiBwcm9wcy52ZXJzaW9uLFxuICAgICAgLy8gQVBNIGFuZCB0cmFjaW5nIHNlZSBodHRwczovL2RvY3MuZGF0YWRvZ2hxLmNvbS9hZ2VudC9kb2NrZXIvYXBtLz90YWI9bGludXhcbiAgICAgIEREX0FQTV9FTkFCTEVEOiAndHJ1ZScsXG4gICAgICBERF9BUE1fSUdOT1JFX1JFU09VUkNFUzogcHJvcHMuYXBtR2V0UmVzb3VyY2VzVG9JZ25vcmVcbiAgICAgICAgLm1hcCgoYXBtR2V0UmVzb3VyY2VUb0lnbm9yZSkgPT4gYEdFVCAke2FwbUdldFJlc291cmNlVG9JZ25vcmV9YClcbiAgICAgICAgLmpvaW4oJywnKSxcbiAgICAgIC8vIGdlbmVyYWwgc2V0dGluZ3NcbiAgICAgIEREX1NJVEU6IHByb3BzLmRhdGFkb2dTaXRlLFxuICAgICAgRERfVEFHUzogZ2V0VGFnc0Vudmlyb25tZW50VmFyaWFibGVWYWx1ZSh7IC4uLnByb3BzLCBhY2NvdW50SWQsIHJlZ2lvbiwgY29udGFpbmVyVHlwZTogJ2RhdGFkb2ctc2lkZWNhcicgfSksXG4gICAgICBFQ1NfRkFSR0FURTogJ3RydWUnLFxuICAgICAgRERfQ0xPVURfUFJPVklERVJfTUVUQURBVEE6ICdhd3MnLFxuICAgICAgRERfUkVNT1RFX0NPTkZJR1VSQVRJT05fRU5BQkxFRDogJ2ZhbHNlJyxcbiAgICB9LFxuICAgIC8vIHNlZSBodHRwczovL2dpdGh1Yi5jb20vRGF0YURvZy9kYXRhZG9nLWFnZW50L2Jsb2IvbWFzdGVyL0RvY2tlcmZpbGVzL2FnZW50L2FtZDY0L0RvY2tlcmZpbGUjTDE3MS1MMTcyXG4gICAgaGVhbHRoQ2hlY2s6IHtcbiAgICAgIHN0YXJ0UGVyaW9kOiBEdXJhdGlvbi5taW51dGVzKDIpLFxuICAgICAgaW50ZXJ2YWw6IER1cmF0aW9uLnNlY29uZHMoMzApLFxuICAgICAgdGltZW91dDogRHVyYXRpb24uc2Vjb25kcyg1KSxcbiAgICAgIHJldHJpZXM6IDIsXG4gICAgICBjb21tYW5kOiBbJ0NNRC1TSEVMTCcsICcvcHJvYmUuc2gnXSxcbiAgICB9LFxuICAgIHNlY3JldHM6IHtcbiAgICAgIEREX0FQSV9LRVk6IGVjcy5TZWNyZXQuZnJvbVNzbVBhcmFtZXRlcihwcm9wcy5kYXRhZG9nQXBpS2V5UGFyYW1ldGVyKSxcbiAgICB9LFxuICAgIGVzc2VudGlhbDogcHJvcHMuZXNzZW50aWFsLFxuICB9KTtcblxuICBkYXRhZG9nU2lkZWNhci5hZGRQb3J0TWFwcGluZ3Moe1xuICAgIGNvbnRhaW5lclBvcnQ6IDgxMjUsXG4gICAgcHJvdG9jb2w6IGVjcy5Qcm90b2NvbC5VRFAsXG4gIH0pO1xuXG4gIGRhdGFkb2dTaWRlY2FyLmFkZFBvcnRNYXBwaW5ncyh7XG4gICAgY29udGFpbmVyUG9ydDogODEyNixcbiAgICBwcm90b2NvbDogZWNzLlByb3RvY29sLlRDUCxcbiAgfSk7XG5cbiAgcmV0dXJuIGRhdGFkb2dTaWRlY2FyO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYWRkRmlyZWxlbnNDb25maWdVcGxvYWRGcm9tUzNQZXJtaXNzaW9ucyhwcm9wczoge1xuICB0YXNrRGVmaW5pdGlvbjogZWNzLlRhc2tEZWZpbml0aW9uO1xuICBmaXJlbGVuc0NvbmZpZ0J1Y2tldEFybjogc3RyaW5nO1xufSkge1xuICBwcm9wcy50YXNrRGVmaW5pdGlvbi5hZGRUb1Rhc2tSb2xlUG9saWN5KG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICByZXNvdXJjZXM6IFtwcm9wcy5maXJlbGVuc0NvbmZpZ0J1Y2tldEFybiwgYCR7cHJvcHMuZmlyZWxlbnNDb25maWdCdWNrZXRBcm59LypgXSxcbiAgICBhY3Rpb25zOiBbJ3MzOkdldConXSxcbiAgICBlZmZlY3Q6IGlhbS5FZmZlY3QuQUxMT1csXG4gIH0pKTtcbn1cblxuZnVuY3Rpb24gZ2V0VGFnc0Vudmlyb25tZW50VmFyaWFibGVWYWx1ZShwcm9wczoge1xuICBhY2NvdW50SWQ6IHN0cmluZztcbiAgYWNjb3VudE5hbWU6IHN0cmluZztcbiAgcmVnaW9uOiBzdHJpbmc7XG4gIHRlYW1OYW1lOiBzdHJpbmc7XG4gIHRlYW1JZGVudGlmaWVyOiBzdHJpbmc7XG4gIHN0YWdlOiBzdHJpbmc7XG4gIHNlcnZpY2VOYW1lOiBzdHJpbmc7XG4gIHZlcnNpb246IHN0cmluZztcbiAgY29udGFpbmVyVHlwZTogJ3NlcnZpY2UnIHwgJ2RhdGFkb2ctc2lkZWNhcicgfCAnZmx1ZW50LWJpdCc7XG4gIGFkZGl0aW9uYWxUYWdzOiB7IFtrOiBzdHJpbmddOiBzdHJpbmd9IHwgdW5kZWZpbmVkO1xufSk6IHN0cmluZyB7XG5cbiAgY29uc3Qgc2VwYXJhdG9yID0gZGV0ZXJtaW5lU2VwYXJhdG9yKHByb3BzLmNvbnRhaW5lclR5cGUpO1xuXG4gIGNvbnN0IHRhZ3MgPSB7XG4gICAgLy8gdW5pZmllZCB0YWdnaW5nXG4gICAgLy8gb3ZlcnJpZGRlbiBieSBkZWRpY2F0ZWQgc2V0dGluZ3MgKGVudmlyb25tZW50IHZhcmlhYmxlcy90YWdzKVxuICAgIC8vIGR1cGxpY2F0ZWQgaGVyZSB0byBlbnN1cmUgdGhleSBhcmUgdXNlZCAoYW5kIHNvbWV0aW1lcywgbm90IGFsbCB0aHJlZSB2YWx1ZXMgYXJlIHN1cHBvcnRlZClcbiAgICBlbnY6IHByb3BzLnN0YWdlLFxuICAgIHNlcnZpY2U6IHByb3BzLnNlcnZpY2VOYW1lLFxuICAgIHZlcnNpb246IHByb3BzLnZlcnNpb24sXG4gICAgLy8gYWNjb3VudC90ZWFtIHNwZWNpZmljIHBhcnRzXG4gICAgYWNjb3VudF9pZDogcHJvcHMuYWNjb3VudElkLFxuICAgIGFjY291bnRfbmFtZTogcHJvcHMuYWNjb3VudE5hbWUsXG4gICAgcmVnaW9uOiBwcm9wcy5yZWdpb24sXG4gICAgdGVhbTogcHJvcHMudGVhbU5hbWUsXG4gICAgdGVhbV9pZGVudGlmaWVyOiBwcm9wcy50ZWFtSWRlbnRpZmllcixcbiAgfTtcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHsgLi4udGFncywgLi4ucHJvcHMuYWRkaXRpb25hbFRhZ3MgfSlcbiAgICAubWFwKChba2V5LCB2YWx1ZV0pID0+IGAke2tleX06JHt2YWx1ZX1gKVxuICAgIC5qb2luKHNlcGFyYXRvcik7XG59XG5cbmZ1bmN0aW9uIGRldGVybWluZVNlcGFyYXRvcihjb250YWluZXJUeXBlOiAnc2VydmljZScgfCAnZGF0YWRvZy1zaWRlY2FyJyB8ICdmbHVlbnQtYml0Jykge1xuICBpZiAoY29udGFpbmVyVHlwZSA9PT0gJ2RhdGFkb2ctc2lkZWNhcicpIHtcbiAgICByZXR1cm4gJyAnO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiAnLCc7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFkZEZpcmVMZW5zTG9nUm91dGVyKHByb3BzOiB7XG4gIHRhc2tEZWZpbml0aW9uOiBlY3MuVGFza0RlZmluaXRpb247XG4gIGNwdTogbnVtYmVyO1xuICBtZW1vcnlMaW1pdE1pQjogbnVtYmVyO1xuICBmaXJlbGVuc0NvbmZpZ0J1Y2tldEFybjogc3RyaW5nO1xuICBmaXJlbGVuc0NvbmZpZ0ZpbGVQYXRoOiBzdHJpbmc7XG4gIHNlcnZpY2VOYW1lOiBzdHJpbmc7XG59KTogZWNzLkNvbnRhaW5lckRlZmluaXRpb24ge1xuICBjb25zdCBmbHVlbnRCaXRTM0NvbmZpZ0ZpbGUgPSBwcm9wcy5maXJlbGVuc0NvbmZpZ0J1Y2tldEFybiArIHByb3BzLmZpcmVsZW5zQ29uZmlnRmlsZVBhdGg7XG4gIHJldHVybiBwcm9wcy50YXNrRGVmaW5pdGlvbi5hZGRGaXJlbGVuc0xvZ1JvdXRlcignZmlyZWxlbnMtbG9nLXJvdXRlcicsIHtcbiAgICBpbWFnZTogZWNzLkNvbnRhaW5lckltYWdlLmZyb21SZWdpc3RyeSgncHVibGljLmVjci5hd3MvYXdzLW9ic2VydmFiaWxpdHkvYXdzLWZvci1mbHVlbnQtYml0OmluaXQtMi4zMi4yLjIwMjQwODIwJyksXG4gICAgZmlyZWxlbnNDb25maWc6IHtcbiAgICAgIHR5cGU6IGVjcy5GaXJlbGVuc0xvZ1JvdXRlclR5cGUuRkxVRU5UQklULFxuICAgICAgb3B0aW9uczoge1xuICAgICAgICBlbmFibGVFQ1NMb2dNZXRhZGF0YTogdHJ1ZSxcbiAgICAgIH0sXG4gICAgfSxcbiAgICBjcHU6IHByb3BzLmNwdSxcbiAgICBtZW1vcnlMaW1pdE1pQjogcHJvcHMubWVtb3J5TGltaXRNaUIsXG4gICAgbG9nZ2luZzogZWNzLkxvZ0RyaXZlcnMuYXdzTG9ncyh7XG4gICAgICBsb2dHcm91cDogbmV3IGxvZ3MuTG9nR3JvdXAocHJvcHMudGFza0RlZmluaXRpb24sICdGaXJlbGVuc0xvZ1JvdXRlckxvZ0dyb3VwJywge1xuICAgICAgICBsb2dHcm91cE5hbWU6IGAke3Byb3BzLnNlcnZpY2VOYW1lfS1maXJlbGVucy1sb2ctcm91dGVyYCxcbiAgICAgIH0pLFxuICAgICAgc3RyZWFtUHJlZml4OiAnZmlyZWxlbnMtbG9nLXJvdXRlcicsXG4gICAgICBtb2RlOiBBd3NMb2dEcml2ZXJNb2RlLk5PTl9CTE9DS0lORyxcbiAgICB9KSxcbiAgICBoZWFsdGhDaGVjazoge1xuICAgICAgY29tbWFuZDogWydDTUQtU0hFTEwnLCAnY3VybCAtLWZhaWwgLS1zaWxlbnQgaHR0cDovLzEyNy4wLjAuMToyMDIwL2FwaS92MS9oZWFsdGggfHwgZXhpdCAxJ10sXG4gICAgfSxcbiAgICBlbnZpcm9ubWVudDoge1xuICAgICAgYXdzX2ZsdWVudF9iaXRfaW5pdF9zM18xOiBmbHVlbnRCaXRTM0NvbmZpZ0ZpbGUsXG4gICAgfSxcbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXR1cExvZ2dpbmcocHJvcHM6IHtcbiAgc2NvcGU6IENvbnN0cnVjdDtcbiAgYWNjb3VudE5hbWU6IHN0cmluZztcbiAgdGVhbU5hbWU6IHN0cmluZztcbiAgdGVhbUlkZW50aWZpZXI6IHN0cmluZztcbiAgc3RhZ2U6IHN0cmluZztcbiAgc2VydmljZU5hbWU6IHN0cmluZztcbiAgdmVyc2lvbjogc3RyaW5nO1xuICBkYXRhZG9nQXBpS2V5UGFyYW1ldGVyOiBzc20uSVN0cmluZ1BhcmFtZXRlcjtcbiAgZGF0YWRvZ0xvZ2dpbmdNb2RlOiBEYXRhRG9nTG9nZ2luZ01vZGU7XG4gIGRhdGFkb2dTaXRlOiBzdHJpbmc7XG4gIGNvbnRhaW5lclR5cGU6ICdzZXJ2aWNlJyB8ICdkYXRhZG9nLXNpZGVjYXInO1xuICBhZGRpdGlvbmFsVGFnczogeyBbazogc3RyaW5nXTogc3RyaW5nfSB8IHVuZGVmaW5lZDtcbn0pOiBlY3MuTG9nRHJpdmVyIHtcblxuICBsZXQgbG9nR3JvdXBOYW1lOiBzdHJpbmc7XG4gIGxldCBsb2dHcm91cElkOiBzdHJpbmc7XG4gIGxldCBjb250YWluZXJUeXBlQ2FtZWxDYXNlO1xuXG4gIHN3aXRjaCAocHJvcHMuY29udGFpbmVyVHlwZSkge1xuXG4gICAgY2FzZSAnc2VydmljZSc6XG4gICAgICBsb2dHcm91cElkID0gJ0xvZ0dyb3VwRm9yU2VydmljZSc7XG4gICAgICBsb2dHcm91cE5hbWUgPSBwcm9wcy5zZXJ2aWNlTmFtZTtcbiAgICAgIGNvbnRhaW5lclR5cGVDYW1lbENhc2UgPSAnU2VydmljZSc7XG4gICAgICBicmVhaztcblxuICAgIGNhc2UgJ2RhdGFkb2ctc2lkZWNhcic6XG4gICAgICBsb2dHcm91cElkID0gJ0xvZ0dyb3VwRm9yRGF0YWRvZ1NpZGVjYXInO1xuICAgICAgbG9nR3JvdXBOYW1lID0gYCR7cHJvcHMuc2VydmljZU5hbWV9LSR7cHJvcHMuY29udGFpbmVyVHlwZX1gO1xuICAgICAgY29udGFpbmVyVHlwZUNhbWVsQ2FzZSA9ICdEYXRhZG9nU2lkZWNhcic7XG4gICAgICBicmVhaztcbiAgfVxuXG4gIGNvbnN0IHsgYWNjb3VudDogYWNjb3VudElkLCByZWdpb24gfSA9IFN0YWNrLm9mKHByb3BzLnNjb3BlKTtcblxuICBzd2l0Y2ggKHByb3BzLmRhdGFkb2dMb2dnaW5nTW9kZSkge1xuXG4gICAgY2FzZSBEYXRhRG9nTG9nZ2luZ01vZGUuQVdTX0ZJUkVfTEVOUzpcbiAgICAgIC8vIFRPRE8gY2FuIHdlIHVzZSBgc2VjcmV0T3B0aW9uc2AgaGVyZSBhcyB3ZWxsLCBlLmcuIGFzIGluIGh0dHBzOi8vZ2l0aHViLmNvbS9hd3Mtc2FtcGxlcy9hbWF6b24tZWNzLWZpcmVsZW5zLWV4YW1wbGVzL2Jsb2IvbWFpbmxpbmUvZXhhbXBsZXMvZmx1ZW50LWJpdC9kYXRhZG9nL3Rhc2stZGVmaW5pdGlvbi5qc29uI0wzMy1MMzZcbiAgICAgIC8vIFByb2JhYmx5IG5vdCwgc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9hd3MvYXdzLWNkay9pc3N1ZXMvODE3NFxuICAgICAgcmV0dXJuIGVjcy5Mb2dEcml2ZXJzLmZpcmVsZW5zKHtcbiAgICAgICAgLy8gc2VlIGh0dHBzOi8vZG9jcy5kYXRhZG9naHEuY29tL2ludGVncmF0aW9ucy9mbHVlbnRiaXQvI2NvbmZpZ3VyYXRpb24tcGFyYW1ldGVyc1xuICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgTmFtZTogJ2RhdGFkb2cnLFxuICAgICAgICAgIE1hdGNoOiAnKicsXG4gICAgICAgICAgSG9zdDogYGh0dHAtaW50YWtlLmxvZ3MuJHtwcm9wcy5kYXRhZG9nU2l0ZX1gLFxuICAgICAgICAgIFRMUzogJ29uJyxcbiAgICAgICAgICBhcGlrZXk6IHByb3BzLmRhdGFkb2dBcGlLZXlQYXJhbWV0ZXIuc3RyaW5nVmFsdWUsXG4gICAgICAgICAgY29tcHJlc3M6ICdnemlwJyxcbiAgICAgICAgICBkZF9zZXJ2aWNlOiBsb2dHcm91cE5hbWUsXG4gICAgICAgICAgZGRfc291cmNlOiAncmlvLWZhcmdhdGUnLFxuICAgICAgICAgIGRkX21lc3NhZ2Vfa2V5OiAnbG9nJyxcbiAgICAgICAgICBkZF90YWdzOiBnZXRUYWdzRW52aXJvbm1lbnRWYXJpYWJsZVZhbHVlKHsgLi4ucHJvcHMsIGFjY291bnRJZCwgcmVnaW9uLCBjb250YWluZXJUeXBlOiAnZmx1ZW50LWJpdCcgfSksXG4gICAgICAgICAgcHJvdmlkZXI6ICdlY3MnLFxuICAgICAgICB9LFxuICAgICAgfSk7XG5cbiAgICBjYXNlIERhdGFEb2dMb2dnaW5nTW9kZS5GT1JXQVJERVJfTEFNQkRBOlxuICAgIGNhc2UgRGF0YURvZ0xvZ2dpbmdNb2RlLkRBVEFET0dfRk9SV0FSREVSX0xBTUJEQTpcbiAgICAgIGNvbnN0IGxvZ0dyb3VwRm9yRm9yd2FyZGluZ0xhbWJkYSA9IG5ldyBsb2dzLkxvZ0dyb3VwKHByb3BzLnNjb3BlLCBsb2dHcm91cElkLCB7XG4gICAgICAgIGxvZ0dyb3VwTmFtZSxcbiAgICAgICAgcmV0ZW50aW9uOiBsb2dzLlJldGVudGlvbkRheXMuT05FX1dFRUssXG4gICAgICB9KTtcbiAgICAgIFRhZ3Mub2YobG9nR3JvdXBGb3JGb3J3YXJkaW5nTGFtYmRhKS5hZGQoJ3NlcnZpY2UnLCBwcm9wcy5zZXJ2aWNlTmFtZSk7XG4gICAgICBjb25zdCBsb2dGb3J3YXJkZXJMYW1iZGFBcm5PdXRwdXROYW1lID0gcHJvcHMuZGF0YWRvZ0xvZ2dpbmdNb2RlID09PSBEYXRhRG9nTG9nZ2luZ01vZGUuREFUQURPR19GT1JXQVJERVJfTEFNQkRBID8gJ2RhdGFkb2ctZm9yd2FyZGVyLUZvcndhcmRlckFybicgOiAnY3VzdG9tLXJlc291cmNlLWRhdGFkb2ctbG9nZm9yd2FyZGVyLWZ1bmN0aW9uLWFybic7XG4gICAgICBjb25zdCBsb2dGb3J3YXJkZXJMYW1iZGFBcm4gPSBGbi5pbXBvcnRWYWx1ZShsb2dGb3J3YXJkZXJMYW1iZGFBcm5PdXRwdXROYW1lKTtcbiAgICAgIGNvbnN0IGNmblBlcm1pc3Npb24gPSBuZXcgbGFtYmRhLkNmblBlcm1pc3Npb24ocHJvcHMuc2NvcGUsIGBMb2dGb3J3YXJkZXJQZXJtaXNzaW9uJHtjb250YWluZXJUeXBlQ2FtZWxDYXNlfWAsIHtcbiAgICAgICAgYWN0aW9uOiAnbGFtYmRhOkludm9rZUZ1bmN0aW9uJyxcbiAgICAgICAgZnVuY3Rpb25OYW1lOiBsb2dGb3J3YXJkZXJMYW1iZGFBcm4sXG4gICAgICAgIHByaW5jaXBhbDogYGxvZ3MuJHtyZWdpb259LmFtYXpvbmF3cy5jb21gLFxuICAgICAgICBzb3VyY2VBcm46IGxvZ0dyb3VwRm9yRm9yd2FyZGluZ0xhbWJkYS5sb2dHcm91cEFybixcbiAgICAgIH0pO1xuICAgICAgY29uc3QgY2ZuU3Vic2NyaXB0aW9uRmlsdGVyID0gbmV3IGxvZ3MuQ2ZuU3Vic2NyaXB0aW9uRmlsdGVyKFxuICAgICAgICBwcm9wcy5zY29wZSxcbiAgICAgICAgYExvZ0ZvcndhcmRlclN1YnNjcmlwdGlvbkZpbHRlciR7Y29udGFpbmVyVHlwZUNhbWVsQ2FzZX1gLFxuICAgICAgICB7XG4gICAgICAgICAgZGVzdGluYXRpb25Bcm46IGxvZ0ZvcndhcmRlckxhbWJkYUFybixcbiAgICAgICAgICBmaWx0ZXJQYXR0ZXJuOiAnJyxcbiAgICAgICAgICBsb2dHcm91cE5hbWU6IGxvZ0dyb3VwRm9yRm9yd2FyZGluZ0xhbWJkYS5sb2dHcm91cE5hbWUsXG4gICAgICAgIH0sXG4gICAgICApO1xuICAgICAgY2ZuU3Vic2NyaXB0aW9uRmlsdGVyLmFkZERlcGVuZGVuY3koY2ZuUGVybWlzc2lvbik7XG4gICAgICByZXR1cm4gZWNzLkxvZ0RyaXZlcnMuYXdzTG9ncyh7XG4gICAgICAgIHN0cmVhbVByZWZpeDogcHJvcHMuY29udGFpbmVyVHlwZSxcbiAgICAgICAgbG9nR3JvdXA6IGxvZ0dyb3VwRm9yRm9yd2FyZGluZ0xhbWJkYSxcbiAgICAgICAgbW9kZTogZWNzLkF3c0xvZ0RyaXZlck1vZGUuTk9OX0JMT0NLSU5HLFxuICAgICAgICBtYXhCdWZmZXJTaXplOiBTaXplLm1lYmlieXRlcygyNSksXG4gICAgICB9KTtcblxuICAgIGNhc2UgRGF0YURvZ0xvZ2dpbmdNb2RlLk5PTkU6XG4gICAgICBjb25zdCBsb2dHcm91cEluQ2xvdWR3YXRjaE9ubHkgPSBuZXcgbG9ncy5Mb2dHcm91cChwcm9wcy5zY29wZSwgbG9nR3JvdXBJZCwge1xuICAgICAgICByZXRlbnRpb246IGxvZ3MuUmV0ZW50aW9uRGF5cy5PTkVfV0VFSyxcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIGVjcy5Mb2dEcml2ZXJzLmF3c0xvZ3Moe1xuICAgICAgICBzdHJlYW1QcmVmaXg6IHByb3BzLmNvbnRhaW5lclR5cGUsXG4gICAgICAgIGxvZ0dyb3VwOiBsb2dHcm91cEluQ2xvdWR3YXRjaE9ubHksXG4gICAgICAgIG1vZGU6IGVjcy5Bd3NMb2dEcml2ZXJNb2RlLk5PTl9CTE9DS0lORyxcbiAgICAgICAgbWF4QnVmZmVyU2l6ZTogU2l6ZS5tZWJpYnl0ZXMoMjUpLFxuICAgICAgfSk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGVuc3VyZUxvZ2dpbmdBbmRNb25pdG9yaW5nQXJlUmVhZHlCZWZvcmVTZXJ2aWNlU3RhcnRzKHJpb0ZhcmdhdGVTZXJ2aWNlOiBSaW9GYXJnYXRlU2VydmljZSB8IFJpb0ZhcmdhdGVTZXJ2aWNlQmx1ZUdyZWVuQWxwaGEpOiB2b2lkIHtcblxuICByaW9GYXJnYXRlU2VydmljZS5zZXJ2aWNlQ29udGFpbmVyRGVmaW5pdGlvbi5hZGRDb250YWluZXJEZXBlbmRlbmNpZXMoe1xuICAgIGNvbnRhaW5lcjogcmlvRmFyZ2F0ZVNlcnZpY2UuZGF0YWRvZ1NpZGVDYXJDb250YWluZXJEZWZpbml0aW9uLFxuICAgIGNvbmRpdGlvbjogZWNzLkNvbnRhaW5lckRlcGVuZGVuY3lDb25kaXRpb24uSEVBTFRIWSxcbiAgfSk7XG5cbiAgaWYgKHJpb0ZhcmdhdGVTZXJ2aWNlLmxvZ1JvdXRlckNvbnRhaW5lckRlZmluaXRpb24pIHtcbiAgICByaW9GYXJnYXRlU2VydmljZS5zZXJ2aWNlQ29udGFpbmVyRGVmaW5pdGlvbi5hZGRDb250YWluZXJEZXBlbmRlbmNpZXMoe1xuICAgICAgY29udGFpbmVyOiByaW9GYXJnYXRlU2VydmljZS5sb2dSb3V0ZXJDb250YWluZXJEZWZpbml0aW9uLFxuICAgICAgY29uZGl0aW9uOiBlY3MuQ29udGFpbmVyRGVwZW5kZW5jeUNvbmRpdGlvbi5TVEFSVCxcbiAgICB9KTtcblxuICAgIGlmIChyaW9GYXJnYXRlU2VydmljZS5kYXRhZG9nU2lkZUNhckNvbnRhaW5lckRlZmluaXRpb24ubG9nRHJpdmVyQ29uZmlnPy5sb2dEcml2ZXIgPT09ICdhd3NmaXJlbGVucycpIHtcbiAgICAgIHJpb0ZhcmdhdGVTZXJ2aWNlLmRhdGFkb2dTaWRlQ2FyQ29udGFpbmVyRGVmaW5pdGlvbi5hZGRDb250YWluZXJEZXBlbmRlbmNpZXMoe1xuICAgICAgICBjb250YWluZXI6IHJpb0ZhcmdhdGVTZXJ2aWNlLmxvZ1JvdXRlckNvbnRhaW5lckRlZmluaXRpb24sXG4gICAgICAgIGNvbmRpdGlvbjogZWNzLkNvbnRhaW5lckRlcGVuZGVuY3lDb25kaXRpb24uU1RBUlQsXG4gICAgICB9KTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
328
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YWRvZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9mYXJnYXRlL2RhdGFkb2cudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBc0lBLDBGQTZCQztBQWtCRCx3REFNQztBQUVELDhDQXdFQztBQUVELDRGQVNDO0FBNENELG9EQWlDQztBQUVELG9DQXFHQztBQUVELHNIQW9CQztBQTFkRCw2Q0FBOEQ7QUFDOUQsMkNBQTJDO0FBQzNDLGlEQUF1RDtBQUN2RCwyQ0FBMkM7QUFDM0MsaURBQWlEO0FBQ2pELDZDQUE2QztBQUc3QywrREFBOEU7QUFHOUU7O0dBRUc7QUFDSCxNQUFhLE9BQU87SUFFWCxNQUFNLENBQUMsdUNBQXVDLENBQ25ELEtBQWdCLEVBQ2hCLEtBQWEsRUFDYixXQUFtQixFQUNuQixPQUFlLEVBQ2YsV0FBbUIsRUFDbkIsUUFBZ0IsRUFDaEIsY0FBc0IsRUFDdEIsY0FBa0Q7UUFFbEQsT0FBTyx1Q0FBdUMsQ0FBQztZQUM3QyxLQUFLO1lBQ0wsS0FBSztZQUNMLFdBQVc7WUFDWCxPQUFPO1lBQ1AsV0FBVztZQUNYLFFBQVE7WUFDUixjQUFjO1lBQ2QsY0FBYztTQUNmLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTSxNQUFNLENBQUMsc0JBQXNCLENBQUMsS0FBYSxFQUFFLFdBQW1CLEVBQUUsT0FBZTtRQUN0RixPQUFPLHNCQUFzQixDQUFDLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDO0lBQ2pFLENBQUM7SUFFTSxNQUFNLENBQUMsaUJBQWlCLENBQzdCLEtBQWdCLEVBQ2hCLGNBQWtDLEVBQ2xDLFdBQW1CLEVBQ25CLFFBQWdCLEVBQ2hCLGNBQXNCLEVBQ3RCLEtBQWEsRUFDYixXQUFtQixFQUNuQixPQUFlLEVBQ2Ysc0JBQTRDLEVBQzVDLFdBQW1CLEVBQ25CLGtCQUFzQyxFQUN0Qyx1QkFBaUMsRUFDakMsR0FBVyxFQUNYLGNBQXNCLEVBQ3RCLFNBQWtCLEVBQ2xCLFlBQW9CLEVBQ3BCLGNBQWtELEVBQ2xELG1CQUE0QixFQUM1Qix1QkFBaUM7UUFHakMsT0FBTyxpQkFBaUIsQ0FBQztZQUN2QixLQUFLO1lBQ0wsY0FBYztZQUNkLFdBQVc7WUFDWCxRQUFRO1lBQ1IsY0FBYztZQUNkLEtBQUs7WUFDTCxXQUFXO1lBQ1gsT0FBTztZQUNQLHNCQUFzQjtZQUN0QixXQUFXO1lBQ1gsa0JBQWtCO1lBQ2xCLHVCQUF1QjtZQUN2QixHQUFHO1lBQ0gsY0FBYztZQUNkLFNBQVM7WUFDVCxZQUFZO1lBQ1osY0FBYztZQUNkLG1CQUFtQjtZQUNuQix1QkFBdUI7U0FDeEIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVNLE1BQU0sQ0FBQyxvQkFBb0IsQ0FDaEMsY0FBa0MsRUFDbEMsR0FBVyxFQUNYLGNBQXNCLEVBQ3RCLHNCQUE4QixFQUM5Qix1QkFBK0IsRUFDL0IsV0FBbUI7UUFFbkIsT0FBTyxvQkFBb0IsQ0FBQyxFQUFFLGNBQWMsRUFBRSxHQUFHLEVBQUUsY0FBYyxFQUFFLHNCQUFzQixFQUFFLHVCQUF1QixFQUFFLFdBQVcsRUFBRSxDQUFDLENBQUM7SUFDckksQ0FBQztJQUVNLE1BQU0sQ0FBQyxZQUFZLENBQ3hCLEtBQWdCLEVBQ2hCLFdBQW1CLEVBQ25CLFFBQWdCLEVBQ2hCLGNBQXNCLEVBQ3RCLEtBQWEsRUFDYixXQUFtQixFQUNuQixPQUFlLEVBQ2Ysc0JBQTRDLEVBQzVDLGtCQUFzQyxFQUN0QyxXQUFtQixFQUNuQixhQUE0QyxFQUM1QyxjQUFrRDtRQUdsRCxPQUFPLFlBQVksQ0FBQztZQUNsQixLQUFLO1lBQ0wsV0FBVztZQUNYLFFBQVE7WUFDUixjQUFjO1lBQ2QsS0FBSztZQUNMLFdBQVc7WUFDWCxPQUFPO1lBQ1Asc0JBQXNCO1lBQ3RCLGtCQUFrQjtZQUNsQixXQUFXO1lBQ1gsYUFBYTtZQUNiLGNBQWM7U0FDZixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU0sTUFBTSxDQUFDLHFEQUFxRCxDQUFDLGlCQUFvQztRQUN0RyxxREFBcUQsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBQzNFLENBQUM7Q0FDRjtBQXRIRCwwQkFzSEM7QUFFRCxTQUFnQix1Q0FBdUMsQ0FBQyxLQVN2RDtJQUVDLE1BQU0sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxHQUFHLG1CQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUU3RCxPQUFPO1FBQ0wsMkdBQTJHO1FBQzNHLE1BQU0sRUFBRSxLQUFLLENBQUMsS0FBSztRQUNuQixVQUFVLEVBQUUsS0FBSyxDQUFDLFdBQVc7UUFDN0IsVUFBVSxFQUFFLEtBQUssQ0FBQyxPQUFPO1FBQ3pCLG9HQUFvRztRQUNwRyxpQkFBaUIsRUFBRSxNQUFNO1FBQ3pCLGtCQUFrQixFQUFFLDRDQUE0QyxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUM7UUFDbkYsT0FBTyxFQUFFLCtCQUErQixDQUFDO1lBQ3ZDLEdBQUcsS0FBSztZQUNSLGFBQWEsRUFBRSxTQUFTO1lBQ3hCLFNBQVM7WUFDVCxNQUFNO1NBQ1AsQ0FBQztRQUNGLG9CQUFvQixFQUFFLEtBQUssRUFBRSxrRUFBa0U7S0FDaEcsQ0FBQztBQUNKLENBQUM7QUFFRCxrSEFBa0g7QUFDbEgsU0FBUyw0Q0FBNEMsQ0FBQyxXQUFtQjtJQUV2RSxNQUFNLGNBQWMsR0FBRztRQUNyQixVQUFVLEVBQUUsR0FBRyxXQUFXLFNBQVM7UUFDbkMsY0FBYyxFQUFFLEdBQUcsV0FBVyxVQUFVO1FBQ3hDLE9BQU8sRUFBRSxHQUFHLFdBQVcsUUFBUTtRQUMvQixPQUFPLEVBQUUsR0FBRyxXQUFXLFNBQVM7UUFDaEMsT0FBTyxFQUFFLEdBQUcsV0FBVyxRQUFRO0tBQ2hDLENBQUM7SUFFRixPQUFPLE1BQU0sQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDO1NBQ2xDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLEdBQUcsSUFBSSxLQUFLLEVBQUUsQ0FBQztTQUN4QyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDZixDQUFDO0FBRUQsU0FBZ0Isc0JBQXNCLENBQUMsS0FBNEQ7SUFDakcsT0FBTztRQUNMLHdCQUF3QixFQUFFLEtBQUssQ0FBQyxLQUFLO1FBQ3JDLDRCQUE0QixFQUFFLEtBQUssQ0FBQyxXQUFXO1FBQy9DLDRCQUE0QixFQUFFLEtBQUssQ0FBQyxPQUFPO0tBQzVDLENBQUM7QUFDSixDQUFDO0FBRUQsU0FBZ0IsaUJBQWlCLENBQUMsS0FvQmpDO0lBRUMsTUFBTSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLEdBQUcsbUJBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzdELE1BQU0sY0FBYyxHQUFHLEtBQUssQ0FBQyxjQUFjLENBQUMsWUFBWSxDQUFDLGVBQWUsRUFBRTtRQUN4RSxLQUFLLEVBQUUsR0FBRyxDQUFDLGNBQWMsQ0FBQyxZQUFZLENBQUMsZ0NBQWdDLEtBQUssQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUM1RixtQkFBbUIsRUFBRSxLQUFLLENBQUMsbUJBQW1CO1FBQzlDLHVCQUF1QixFQUFFLEtBQUssQ0FBQyx1QkFBdUI7UUFDdEQsT0FBTyxFQUFFLFlBQVksQ0FBQyxFQUFFLEdBQUcsS0FBSyxFQUFFLGFBQWEsRUFBRSxpQkFBaUIsRUFBRSxDQUFDO1FBQ3JFLEdBQUcsRUFBRSxLQUFLLENBQUMsR0FBRztRQUNkLGNBQWMsRUFBRSxLQUFLLENBQUMsY0FBYztRQUNwQyxXQUFXLEVBQUU7WUFDWCwyR0FBMkc7WUFDM0csTUFBTSxFQUFFLEtBQUssQ0FBQyxLQUFLO1lBQ25CLFVBQVUsRUFBRSxLQUFLLENBQUMsV0FBVztZQUM3QixVQUFVLEVBQUUsS0FBSyxDQUFDLE9BQU87WUFDekIsNkVBQTZFO1lBQzdFLGNBQWMsRUFBRSxNQUFNO1lBQ3RCLHVCQUF1QixFQUFFLEtBQUssQ0FBQyx1QkFBdUI7aUJBQ25ELEdBQUcsQ0FBQyxDQUFDLHNCQUFzQixFQUFFLEVBQUUsQ0FBQyxPQUFPLHNCQUFzQixFQUFFLENBQUM7aUJBQ2hFLElBQUksQ0FBQyxHQUFHLENBQUM7WUFDWixtQkFBbUI7WUFDbkIsT0FBTyxFQUFFLEtBQUssQ0FBQyxXQUFXO1lBQzFCLE9BQU8sRUFBRSwrQkFBK0IsQ0FBQyxFQUFFLEdBQUcsS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsYUFBYSxFQUFFLGlCQUFpQixFQUFFLENBQUM7WUFDM0csV0FBVyxFQUFFLE1BQU07WUFDbkIsMEJBQTBCLEVBQUUsS0FBSztZQUNqQywrQkFBK0IsRUFBRSxPQUFPO1NBQ3pDO1FBQ0Qsd0dBQXdHO1FBQ3hHLFdBQVcsRUFBRTtZQUNYLFdBQVcsRUFBRSxzQkFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7WUFDaEMsUUFBUSxFQUFFLHNCQUFRLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUM5QixPQUFPLEVBQUUsc0JBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1lBQzVCLE9BQU8sRUFBRSxDQUFDO1lBQ1YsT0FBTyxFQUFFLENBQUMsV0FBVyxFQUFFLFdBQVcsQ0FBQztTQUNwQztRQUNELE9BQU8sRUFBRTtZQUNQLFVBQVUsRUFBRSxHQUFHLENBQUMsTUFBTSxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxzQkFBc0IsQ0FBQztTQUN0RTtRQUNELFNBQVMsRUFBRSxLQUFLLENBQUMsU0FBUztLQUMzQixDQUFDLENBQUM7SUFFSCxjQUFjLENBQUMsZUFBZSxDQUFDO1FBQzdCLGFBQWEsRUFBRSxJQUFJO1FBQ25CLFFBQVEsRUFBRSxHQUFHLENBQUMsUUFBUSxDQUFDLEdBQUc7S0FDM0IsQ0FBQyxDQUFDO0lBRUgsY0FBYyxDQUFDLGVBQWUsQ0FBQztRQUM3QixhQUFhLEVBQUUsSUFBSTtRQUNuQixRQUFRLEVBQUUsR0FBRyxDQUFDLFFBQVEsQ0FBQyxHQUFHO0tBQzNCLENBQUMsQ0FBQztJQUVILE9BQU8sY0FBYyxDQUFDO0FBQ3hCLENBQUM7QUFFRCxTQUFnQix3Q0FBd0MsQ0FBQyxLQUd4RDtJQUNDLEtBQUssQ0FBQyxjQUFjLENBQUMsbUJBQW1CLENBQUMsSUFBSSxHQUFHLENBQUMsZUFBZSxDQUFDO1FBQy9ELFNBQVMsRUFBRSxDQUFDLEtBQUssQ0FBQyx1QkFBdUIsRUFBRSxHQUFHLEtBQUssQ0FBQyx1QkFBdUIsSUFBSSxDQUFDO1FBQ2hGLE9BQU8sRUFBRSxDQUFDLFNBQVMsQ0FBQztRQUNwQixNQUFNLEVBQUUsR0FBRyxDQUFDLE1BQU0sQ0FBQyxLQUFLO0tBQ3pCLENBQUMsQ0FBQyxDQUFDO0FBQ04sQ0FBQztBQUVELFNBQVMsK0JBQStCLENBQUMsS0FXeEM7SUFFQyxNQUFNLFNBQVMsR0FBRyxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUM7SUFFMUQsTUFBTSxJQUFJLEdBQUc7UUFDWCxrQkFBa0I7UUFDbEIsZ0VBQWdFO1FBQ2hFLDhGQUE4RjtRQUM5RixHQUFHLEVBQUUsS0FBSyxDQUFDLEtBQUs7UUFDaEIsT0FBTyxFQUFFLEtBQUssQ0FBQyxXQUFXO1FBQzFCLE9BQU8sRUFBRSxLQUFLLENBQUMsT0FBTztRQUN0Qiw4QkFBOEI7UUFDOUIsVUFBVSxFQUFFLEtBQUssQ0FBQyxTQUFTO1FBQzNCLFlBQVksRUFBRSxLQUFLLENBQUMsV0FBVztRQUMvQixNQUFNLEVBQUUsS0FBSyxDQUFDLE1BQU07UUFDcEIsSUFBSSxFQUFFLEtBQUssQ0FBQyxRQUFRO1FBQ3BCLGVBQWUsRUFBRSxLQUFLLENBQUMsY0FBYztLQUN0QyxDQUFDO0lBQ0YsT0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDLEVBQUUsR0FBRyxJQUFJLEVBQUUsR0FBRyxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7U0FDeEQsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsR0FBRyxJQUFJLEtBQUssRUFBRSxDQUFDO1NBQ3hDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUNyQixDQUFDO0FBRUQsU0FBUyxrQkFBa0IsQ0FBQyxhQUEyRDtJQUNyRixJQUFJLGFBQWEsS0FBSyxpQkFBaUIsRUFBRSxDQUFDO1FBQ3hDLE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQztTQUFNLENBQUM7UUFDTixPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUM7QUFDSCxDQUFDO0FBRUQsU0FBZ0Isb0JBQW9CLENBQUMsS0FPcEM7SUFDQyxNQUFNLHFCQUFxQixHQUFHLEtBQUssQ0FBQyx1QkFBdUIsR0FBRyxLQUFLLENBQUMsc0JBQXNCLENBQUM7SUFDM0YsT0FBTyxLQUFLLENBQUMsY0FBYyxDQUFDLG9CQUFvQixDQUFDLHFCQUFxQixFQUFFO1FBQ3RFLEtBQUssRUFBRSxHQUFHLENBQUMsY0FBYyxDQUFDLFlBQVksQ0FBQywwRUFBMEUsQ0FBQztRQUNsSCxjQUFjLEVBQUU7WUFDZCxJQUFJLEVBQUUsR0FBRyxDQUFDLHFCQUFxQixDQUFDLFNBQVM7WUFDekMsT0FBTyxFQUFFO2dCQUNQLG9CQUFvQixFQUFFLElBQUk7YUFDM0I7U0FDRjtRQUNELEdBQUcsRUFBRSxLQUFLLENBQUMsR0FBRztRQUNkLGNBQWMsRUFBRSxLQUFLLENBQUMsY0FBYztRQUNwQyxPQUFPLEVBQUUsR0FBRyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUM7WUFDOUIsUUFBUSxFQUFFLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsY0FBYyxFQUFFLDJCQUEyQixFQUFFO2dCQUM3RSxZQUFZLEVBQUUsR0FBRyxLQUFLLENBQUMsV0FBVyxzQkFBc0I7YUFDekQsQ0FBQztZQUNGLFlBQVksRUFBRSxxQkFBcUI7WUFDbkMsSUFBSSxFQUFFLDBCQUFnQixDQUFDLFlBQVk7U0FDcEMsQ0FBQztRQUNGLFdBQVcsRUFBRTtZQUNYLE9BQU8sRUFBRSxDQUFDLFdBQVcsRUFBRSxvRUFBb0UsQ0FBQztTQUM3RjtRQUNELFdBQVcsRUFBRTtZQUNYLHdCQUF3QixFQUFFLHFCQUFxQjtTQUNoRDtLQUNGLENBQUMsQ0FBQztBQUNMLENBQUM7QUFFRCxTQUFnQixZQUFZLENBQUMsS0FhNUI7SUFFQyxJQUFJLFlBQW9CLENBQUM7SUFDekIsSUFBSSxVQUFrQixDQUFDO0lBQ3ZCLElBQUksc0JBQXNCLENBQUM7SUFFM0IsUUFBUSxLQUFLLENBQUMsYUFBYSxFQUFFLENBQUM7UUFFNUIsS0FBSyxTQUFTO1lBQ1osVUFBVSxHQUFHLG9CQUFvQixDQUFDO1lBQ2xDLFlBQVksR0FBRyxLQUFLLENBQUMsV0FBVyxDQUFDO1lBQ2pDLHNCQUFzQixHQUFHLFNBQVMsQ0FBQztZQUNuQyxNQUFNO1FBRVIsS0FBSyxpQkFBaUI7WUFDcEIsVUFBVSxHQUFHLDJCQUEyQixDQUFDO1lBQ3pDLFlBQVksR0FBRyxHQUFHLEtBQUssQ0FBQyxXQUFXLElBQUksS0FBSyxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQzdELHNCQUFzQixHQUFHLGdCQUFnQixDQUFDO1lBQzFDLE1BQU07SUFDVixDQUFDO0lBRUQsTUFBTSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLEdBQUcsbUJBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBRTdELFFBQVEsS0FBSyxDQUFDLGtCQUFrQixFQUFFLENBQUM7UUFFakMsS0FBSyx3Q0FBa0IsQ0FBQyxhQUFhO1lBQ25DLDhMQUE4TDtZQUM5TCwrREFBK0Q7WUFDL0QsT0FBTyxHQUFHLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQztnQkFDN0Isa0ZBQWtGO2dCQUNsRixPQUFPLEVBQUU7b0JBQ1AsSUFBSSxFQUFFLFNBQVM7b0JBQ2YsS0FBSyxFQUFFLEdBQUc7b0JBQ1YsSUFBSSxFQUFFLG9CQUFvQixLQUFLLENBQUMsV0FBVyxFQUFFO29CQUM3QyxHQUFHLEVBQUUsSUFBSTtvQkFDVCxNQUFNLEVBQUUsS0FBSyxDQUFDLHNCQUFzQixDQUFDLFdBQVc7b0JBQ2hELFFBQVEsRUFBRSxNQUFNO29CQUNoQixVQUFVLEVBQUUsWUFBWTtvQkFDeEIsU0FBUyxFQUFFLGFBQWE7b0JBQ3hCLGNBQWMsRUFBRSxLQUFLO29CQUNyQixPQUFPLEVBQUUsK0JBQStCLENBQUMsRUFBRSxHQUFHLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLGFBQWEsRUFBRSxZQUFZLEVBQUUsQ0FBQztvQkFDdEcsUUFBUSxFQUFFLEtBQUs7aUJBQ2hCO2FBQ0YsQ0FBQyxDQUFDO1FBRUwsS0FBSyx3Q0FBa0IsQ0FBQyxnQkFBZ0IsQ0FBQztRQUN6QyxLQUFLLHdDQUFrQixDQUFDLHdCQUF3QjtZQUM5QyxNQUFNLDJCQUEyQixHQUFHLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLFVBQVUsRUFBRTtnQkFDN0UsWUFBWTtnQkFDWixTQUFTLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRO2FBQ3ZDLENBQUMsQ0FBQztZQUNILGtCQUFJLENBQUMsRUFBRSxDQUFDLDJCQUEyQixDQUFDLENBQUMsR0FBRyxDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDdkUsTUFBTSwrQkFBK0IsR0FBRyxLQUFLLENBQUMsa0JBQWtCLEtBQUssd0NBQWtCLENBQUMsd0JBQXdCLENBQUMsQ0FBQyxDQUFDLGdDQUFnQyxDQUFDLENBQUMsQ0FBQyxtREFBbUQsQ0FBQztZQUMxTSxNQUFNLHFCQUFxQixHQUFHLGdCQUFFLENBQUMsV0FBVyxDQUFDLCtCQUErQixDQUFDLENBQUM7WUFDOUUsTUFBTSxhQUFhLEdBQUcsSUFBSSxNQUFNLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUseUJBQXlCLHNCQUFzQixFQUFFLEVBQUU7Z0JBQzdHLE1BQU0sRUFBRSx1QkFBdUI7Z0JBQy9CLFlBQVksRUFBRSxxQkFBcUI7Z0JBQ25DLFNBQVMsRUFBRSxRQUFRLE1BQU0sZ0JBQWdCO2dCQUN6QyxTQUFTLEVBQUUsMkJBQTJCLENBQUMsV0FBVzthQUNuRCxDQUFDLENBQUM7WUFDSCxNQUFNLHFCQUFxQixHQUFHLElBQUksSUFBSSxDQUFDLHFCQUFxQixDQUMxRCxLQUFLLENBQUMsS0FBSyxFQUNYLGlDQUFpQyxzQkFBc0IsRUFBRSxFQUN6RDtnQkFDRSxjQUFjLEVBQUUscUJBQXFCO2dCQUNyQyxhQUFhLEVBQUUsRUFBRTtnQkFDakIsWUFBWSxFQUFFLDJCQUEyQixDQUFDLFlBQVk7YUFDdkQsQ0FDRixDQUFDO1lBQ0YscUJBQXFCLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBQ25ELE9BQU8sR0FBRyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUM7Z0JBQzVCLFlBQVksRUFBRSxLQUFLLENBQUMsYUFBYTtnQkFDakMsUUFBUSxFQUFFLDJCQUEyQjtnQkFDckMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxZQUFZO2dCQUN2QyxhQUFhLEVBQUUsa0JBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDO2FBQ2xDLENBQUMsQ0FBQztRQUVMLEtBQUssd0NBQWtCLENBQUMsSUFBSTtZQUMxQixNQUFNLHdCQUF3QixHQUFHLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLFVBQVUsRUFBRTtnQkFDMUUsU0FBUyxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUTthQUN2QyxDQUFDLENBQUM7WUFDSCxPQUFPLEdBQUcsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDO2dCQUM1QixZQUFZLEVBQUUsS0FBSyxDQUFDLGFBQWE7Z0JBQ2pDLFFBQVEsRUFBRSx3QkFBd0I7Z0JBQ2xDLElBQUksRUFBRSxHQUFHLENBQUMsZ0JBQWdCLENBQUMsWUFBWTtnQkFDdkMsYUFBYSxFQUFFLGtCQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQzthQUNsQyxDQUFDLENBQUM7SUFDUCxDQUFDO0FBQ0gsQ0FBQztBQUVELFNBQWdCLHFEQUFxRCxDQUFDLGlCQUFzRTtJQUUxSSxpQkFBaUIsQ0FBQywwQkFBMEIsQ0FBQyx3QkFBd0IsQ0FBQztRQUNwRSxTQUFTLEVBQUUsaUJBQWlCLENBQUMsaUNBQWlDO1FBQzlELFNBQVMsRUFBRSxHQUFHLENBQUMsNEJBQTRCLENBQUMsT0FBTztLQUNwRCxDQUFDLENBQUM7SUFFSCxJQUFJLGlCQUFpQixDQUFDLDRCQUE0QixFQUFFLENBQUM7UUFDbkQsaUJBQWlCLENBQUMsMEJBQTBCLENBQUMsd0JBQXdCLENBQUM7WUFDcEUsU0FBUyxFQUFFLGlCQUFpQixDQUFDLDRCQUE0QjtZQUN6RCxTQUFTLEVBQUUsR0FBRyxDQUFDLDRCQUE0QixDQUFDLEtBQUs7U0FDbEQsQ0FBQyxDQUFDO1FBRUgsSUFBSSxpQkFBaUIsQ0FBQyxpQ0FBaUMsQ0FBQyxlQUFlLEVBQUUsU0FBUyxLQUFLLGFBQWEsRUFBRSxDQUFDO1lBQ3JHLGlCQUFpQixDQUFDLGlDQUFpQyxDQUFDLHdCQUF3QixDQUFDO2dCQUMzRSxTQUFTLEVBQUUsaUJBQWlCLENBQUMsNEJBQTRCO2dCQUN6RCxTQUFTLEVBQUUsR0FBRyxDQUFDLDRCQUE0QixDQUFDLEtBQUs7YUFDbEQsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztJQUNILENBQUM7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRHVyYXRpb24sIEZuLCBTaXplLCBTdGFjaywgVGFncyB9IGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCAqIGFzIGVjcyBmcm9tICdhd3MtY2RrLWxpYi9hd3MtZWNzJztcbmltcG9ydCB7IEF3c0xvZ0RyaXZlck1vZGUgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtZWNzJztcbmltcG9ydCAqIGFzIGlhbSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtaWFtJztcbmltcG9ydCAqIGFzIGxhbWJkYSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtbGFtYmRhJztcbmltcG9ydCAqIGFzIGxvZ3MgZnJvbSAnYXdzLWNkay1saWIvYXdzLWxvZ3MnO1xuaW1wb3J0ICogYXMgc3NtIGZyb20gJ2F3cy1jZGstbGliL2F3cy1zc20nO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgeyBEYXRhRG9nTG9nZ2luZ01vZGUsIFJpb0ZhcmdhdGVTZXJ2aWNlIH0gZnJvbSAnLi9yaW8tZmFyZ2F0ZS1zZXJ2aWNlJztcbmltcG9ydCB7IFJpb0ZhcmdhdGVTZXJ2aWNlQmx1ZUdyZWVuQWxwaGEgfSBmcm9tICcuL3Jpby1mYXJnYXRlLXNlcnZpY2UtYmx1ZS1ncmVlbi1hbHBoYSc7XG5cbi8qKlxuICogQGRlcHJlY2F0ZWQgTW92ZWQgb3V0IHN0YXRpYyBtZXRob2RzIGFuZCBpbXBvcm92ZWQgc2lnbmF0dXJlLiBVc2UgbmFtZWQgaW1wb3J0IGluc3RlYWQuXG4gKi9cbmV4cG9ydCBjbGFzcyBEYXRhRG9nIHtcblxuICBwdWJsaWMgc3RhdGljIGdldEZhcmdhdGVDb250YWluZXJFbnZpcm9ubWVudFZhcmlhYmxlcyhcbiAgICBzY29wZTogQ29uc3RydWN0LFxuICAgIHN0YWdlOiBzdHJpbmcsXG4gICAgc2VydmljZU5hbWU6IHN0cmluZyxcbiAgICB2ZXJzaW9uOiBzdHJpbmcsXG4gICAgYWNjb3VudE5hbWU6IHN0cmluZyxcbiAgICB0ZWFtTmFtZTogc3RyaW5nLFxuICAgIHRlYW1JZGVudGlmaWVyOiBzdHJpbmcsXG4gICAgYWRkaXRpb25hbFRhZ3M6IHsgW2s6IHN0cmluZ106IHN0cmluZ30gfCB1bmRlZmluZWQsXG4gICk6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0ge1xuICAgIHJldHVybiBnZXRGYXJnYXRlQ29udGFpbmVyRW52aXJvbm1lbnRWYXJpYWJsZXMoe1xuICAgICAgc2NvcGUsXG4gICAgICBzdGFnZSxcbiAgICAgIHNlcnZpY2VOYW1lLFxuICAgICAgdmVyc2lvbixcbiAgICAgIGFjY291bnROYW1lLFxuICAgICAgdGVhbU5hbWUsXG4gICAgICB0ZWFtSWRlbnRpZmllcixcbiAgICAgIGFkZGl0aW9uYWxUYWdzLFxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBnZXRGYXJnYXRlRG9ja2VyTGFiZWxzKHN0YWdlOiBzdHJpbmcsIHNlcnZpY2VOYW1lOiBzdHJpbmcsIHZlcnNpb246IHN0cmluZyk6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0ge1xuICAgIHJldHVybiBnZXRGYXJnYXRlRG9ja2VyTGFiZWxzKHsgc3RhZ2UsIHNlcnZpY2VOYW1lLCB2ZXJzaW9uIH0pO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBhZGREYXRhZG9nU2lkZWNhcihcbiAgICBzY29wZTogQ29uc3RydWN0LFxuICAgIHRhc2tEZWZpbml0aW9uOiBlY3MuVGFza0RlZmluaXRpb24sXG4gICAgYWNjb3VudE5hbWU6IHN0cmluZyxcbiAgICB0ZWFtTmFtZTogc3RyaW5nLFxuICAgIHRlYW1JZGVudGlmaWVyOiBzdHJpbmcsXG4gICAgc3RhZ2U6IHN0cmluZyxcbiAgICBzZXJ2aWNlTmFtZTogc3RyaW5nLFxuICAgIHZlcnNpb246IHN0cmluZyxcbiAgICBkYXRhZG9nQXBpS2V5UGFyYW1ldGVyOiBzc20uSVN0cmluZ1BhcmFtZXRlcixcbiAgICBkYXRhZG9nU2l0ZTogc3RyaW5nLFxuICAgIGRhdGFkb2dMb2dnaW5nTW9kZTogRGF0YURvZ0xvZ2dpbmdNb2RlLFxuICAgIGFwbUdldFJlc291cmNlc1RvSWdub3JlOiBzdHJpbmdbXSxcbiAgICBjcHU6IG51bWJlcixcbiAgICBtZW1vcnlMaW1pdE1pQjogbnVtYmVyLFxuICAgIGVzc2VudGlhbDogYm9vbGVhbixcbiAgICBjb250YWluZXJUYWc6IHN0cmluZyxcbiAgICBhZGRpdGlvbmFsVGFnczogeyBbazogc3RyaW5nXTogc3RyaW5nfSB8IHVuZGVmaW5lZCxcbiAgICBlbmFibGVSZXN0YXJ0UG9saWN5OiBib29sZWFuLFxuICAgIHJlc3RhcnRJZ25vcmVkRXhpdENvZGVzOiBudW1iZXJbXSxcbiAgKTogZWNzLkNvbnRhaW5lckRlZmluaXRpb24ge1xuXG4gICAgcmV0dXJuIGFkZERhdGFkb2dTaWRlY2FyKHtcbiAgICAgIHNjb3BlLFxuICAgICAgdGFza0RlZmluaXRpb24sXG4gICAgICBhY2NvdW50TmFtZSxcbiAgICAgIHRlYW1OYW1lLFxuICAgICAgdGVhbUlkZW50aWZpZXIsXG4gICAgICBzdGFnZSxcbiAgICAgIHNlcnZpY2VOYW1lLFxuICAgICAgdmVyc2lvbixcbiAgICAgIGRhdGFkb2dBcGlLZXlQYXJhbWV0ZXIsXG4gICAgICBkYXRhZG9nU2l0ZSxcbiAgICAgIGRhdGFkb2dMb2dnaW5nTW9kZSxcbiAgICAgIGFwbUdldFJlc291cmNlc1RvSWdub3JlLFxuICAgICAgY3B1LFxuICAgICAgbWVtb3J5TGltaXRNaUIsXG4gICAgICBlc3NlbnRpYWwsXG4gICAgICBjb250YWluZXJUYWcsXG4gICAgICBhZGRpdGlvbmFsVGFncyxcbiAgICAgIGVuYWJsZVJlc3RhcnRQb2xpY3ksXG4gICAgICByZXN0YXJ0SWdub3JlZEV4aXRDb2RlcyxcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgYWRkRmlyZUxlbnNMb2dSb3V0ZXIoXG4gICAgdGFza0RlZmluaXRpb246IGVjcy5UYXNrRGVmaW5pdGlvbixcbiAgICBjcHU6IG51bWJlcixcbiAgICBtZW1vcnlMaW1pdE1pQjogbnVtYmVyLFxuICAgIGZpcmVsZW5zQ29uZmlnRmlsZVBhdGg6IHN0cmluZyxcbiAgICBmaXJlbGVuc0NvbmZpZ0J1Y2tldEFybjogc3RyaW5nLFxuICAgIHNlcnZpY2VOYW1lOiBzdHJpbmcsXG4gICk6IGVjcy5Db250YWluZXJEZWZpbml0aW9uIHtcbiAgICByZXR1cm4gYWRkRmlyZUxlbnNMb2dSb3V0ZXIoeyB0YXNrRGVmaW5pdGlvbiwgY3B1LCBtZW1vcnlMaW1pdE1pQiwgZmlyZWxlbnNDb25maWdGaWxlUGF0aCwgZmlyZWxlbnNDb25maWdCdWNrZXRBcm4sIHNlcnZpY2VOYW1lIH0pO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBzZXR1cExvZ2dpbmcoXG4gICAgc2NvcGU6IENvbnN0cnVjdCxcbiAgICBhY2NvdW50TmFtZTogc3RyaW5nLFxuICAgIHRlYW1OYW1lOiBzdHJpbmcsXG4gICAgdGVhbUlkZW50aWZpZXI6IHN0cmluZyxcbiAgICBzdGFnZTogc3RyaW5nLFxuICAgIHNlcnZpY2VOYW1lOiBzdHJpbmcsXG4gICAgdmVyc2lvbjogc3RyaW5nLFxuICAgIGRhdGFkb2dBcGlLZXlQYXJhbWV0ZXI6IHNzbS5JU3RyaW5nUGFyYW1ldGVyLFxuICAgIGRhdGFkb2dMb2dnaW5nTW9kZTogRGF0YURvZ0xvZ2dpbmdNb2RlLFxuICAgIGRhdGFkb2dTaXRlOiBzdHJpbmcsXG4gICAgY29udGFpbmVyVHlwZTogJ3NlcnZpY2UnIHwgJ2RhdGFkb2ctc2lkZWNhcicsXG4gICAgYWRkaXRpb25hbFRhZ3M6IHsgW2s6IHN0cmluZ106IHN0cmluZ30gfCB1bmRlZmluZWQsXG4gICk6IGVjcy5Mb2dEcml2ZXIge1xuXG4gICAgcmV0dXJuIHNldHVwTG9nZ2luZyh7XG4gICAgICBzY29wZSxcbiAgICAgIGFjY291bnROYW1lLFxuICAgICAgdGVhbU5hbWUsXG4gICAgICB0ZWFtSWRlbnRpZmllcixcbiAgICAgIHN0YWdlLFxuICAgICAgc2VydmljZU5hbWUsXG4gICAgICB2ZXJzaW9uLFxuICAgICAgZGF0YWRvZ0FwaUtleVBhcmFtZXRlcixcbiAgICAgIGRhdGFkb2dMb2dnaW5nTW9kZSxcbiAgICAgIGRhdGFkb2dTaXRlLFxuICAgICAgY29udGFpbmVyVHlwZSxcbiAgICAgIGFkZGl0aW9uYWxUYWdzLFxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBlbnN1cmVMb2dnaW5nQW5kTW9uaXRvcmluZ0FyZVJlYWR5QmVmb3JlU2VydmljZVN0YXJ0cyhyaW9GYXJnYXRlU2VydmljZTogUmlvRmFyZ2F0ZVNlcnZpY2UpIHtcbiAgICBlbnN1cmVMb2dnaW5nQW5kTW9uaXRvcmluZ0FyZVJlYWR5QmVmb3JlU2VydmljZVN0YXJ0cyhyaW9GYXJnYXRlU2VydmljZSk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEZhcmdhdGVDb250YWluZXJFbnZpcm9ubWVudFZhcmlhYmxlcyhwcm9wczoge1xuICBzY29wZTogQ29uc3RydWN0O1xuICBzdGFnZTogc3RyaW5nO1xuICBzZXJ2aWNlTmFtZTogc3RyaW5nO1xuICB2ZXJzaW9uOiBzdHJpbmc7XG4gIGFjY291bnROYW1lOiBzdHJpbmc7XG4gIHRlYW1OYW1lOiBzdHJpbmc7XG4gIHRlYW1JZGVudGlmaWVyOiBzdHJpbmc7XG4gIGFkZGl0aW9uYWxUYWdzOiB7IFtrOiBzdHJpbmddOiBzdHJpbmd9IHwgdW5kZWZpbmVkO1xufSk6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0ge1xuXG4gIGNvbnN0IHsgYWNjb3VudDogYWNjb3VudElkLCByZWdpb24gfSA9IFN0YWNrLm9mKHByb3BzLnNjb3BlKTtcblxuICByZXR1cm4ge1xuICAgIC8vIHVuaWZpZWQgdGFnZ2luZywgc2VlIGh0dHBzOi8vZG9jcy5kYXRhZG9naHEuY29tL2dldHRpbmdfc3RhcnRlZC90YWdnaW5nL3VuaWZpZWRfc2VydmljZV90YWdnaW5nLz90YWI9ZWNzXG4gICAgRERfRU5WOiBwcm9wcy5zdGFnZSxcbiAgICBERF9TRVJWSUNFOiBwcm9wcy5zZXJ2aWNlTmFtZSxcbiAgICBERF9WRVJTSU9OOiBwcm9wcy52ZXJzaW9uLFxuICAgIC8vIEFQTSBhbmQgdHJhY2luZywgc2VlIGh0dHBzOi8vZG9jcy5kYXRhZG9naHEuY29tL3RyYWNpbmcvc2V0dXBfb3ZlcnZpZXcvc2V0dXAvamF2YS8/dGFiPWNvbnRhaW5lcnNcbiAgICBERF9MT0dTX0lOSkVDVElPTjogJ3RydWUnLFxuICAgIEREX1NFUlZJQ0VfTUFQUElORzogZ2V0QXBtU2VydmljZU1hcHBpbmdFbnZpcm9ubWVudFZhcmlhYmxlVmFsdWUocHJvcHMuc2VydmljZU5hbWUpLFxuICAgIEREX1RBR1M6IGdldFRhZ3NFbnZpcm9ubWVudFZhcmlhYmxlVmFsdWUoe1xuICAgICAgLi4ucHJvcHMsXG4gICAgICBjb250YWluZXJUeXBlOiAnc2VydmljZScsXG4gICAgICBhY2NvdW50SWQsXG4gICAgICByZWdpb24sXG4gICAgfSksXG4gICAgRERfVFJBQ0VfU0FNUExFX1JBVEU6ICcxLjAnLCAvLyBzZWUgaHR0cHM6Ly9kZHRyYWNlLnJlYWR0aGVkb2NzLmlvL2VuL3N0YWJsZS9jb25maWd1cmF0aW9uLmh0bWxcbiAgfTtcbn1cblxuLy8gd2UgYWRkIGFsbCBwb3NzaWJsZSBzZXJ2aWNlIG1hcHBpbmdzIGhlcmUgZXZlbiBpZiBub3QgdXNlZCBpbiBhIHBhcnRpY3VsYXIgc2VydmljZSB0byBnZXQgZ2xvYmFsbHkgdW5pcXVlIG5hbWVzXG5mdW5jdGlvbiBnZXRBcG1TZXJ2aWNlTWFwcGluZ0Vudmlyb25tZW50VmFyaWFibGVWYWx1ZShzZXJ2aWNlTmFtZTogc3RyaW5nKTogc3RyaW5nIHtcblxuICBjb25zdCBzZXJ2aWNlTWFwcGluZyA9IHtcbiAgICAnZGF0YWJhc2UnOiBgJHtzZXJ2aWNlTmFtZX0tYXVyb3JhYCxcbiAgICAnamF2YS1hd3Mtc2RrJzogYCR7c2VydmljZU5hbWV9LWF3cy1zZGtgLFxuICAgICdrYWZrYSc6IGAke3NlcnZpY2VOYW1lfS1rYWZrYWAsXG4gICAgJ215c3FsJzogYCR7c2VydmljZU5hbWV9LWF1cm9yYWAsXG4gICAgJ3JlZGlzJzogYCR7c2VydmljZU5hbWV9LXJlZGlzYCxcbiAgfTtcblxuICByZXR1cm4gT2JqZWN0LmVudHJpZXMoc2VydmljZU1hcHBpbmcpXG4gICAgLm1hcCgoW2tleSwgdmFsdWVdKSA9PiBgJHtrZXl9OiR7dmFsdWV9YClcbiAgICAuam9pbignLCcpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RmFyZ2F0ZURvY2tlckxhYmVscyhwcm9wczoge3N0YWdlOiBzdHJpbmc7IHNlcnZpY2VOYW1lOiBzdHJpbmc7IHZlcnNpb246IHN0cmluZ30pOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9IHtcbiAgcmV0dXJuIHtcbiAgICAnY29tLmRhdGFkb2docS50YWdzLmVudic6IHByb3BzLnN0YWdlLFxuICAgICdjb20uZGF0YWRvZ2hxLnRhZ3Muc2VydmljZSc6IHByb3BzLnNlcnZpY2VOYW1lLFxuICAgICdjb20uZGF0YWRvZ2hxLnRhZ3MudmVyc2lvbic6IHByb3BzLnZlcnNpb24sXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhZGREYXRhZG9nU2lkZWNhcihwcm9wczoge1xuICBzY29wZTogQ29uc3RydWN0O1xuICB0YXNrRGVmaW5pdGlvbjogZWNzLlRhc2tEZWZpbml0aW9uO1xuICBhY2NvdW50TmFtZTogc3RyaW5nO1xuICB0ZWFtTmFtZTogc3RyaW5nO1xuICB0ZWFtSWRlbnRpZmllcjogc3RyaW5nO1xuICBzdGFnZTogc3RyaW5nO1xuICBzZXJ2aWNlTmFtZTogc3RyaW5nO1xuICB2ZXJzaW9uOiBzdHJpbmc7XG4gIGRhdGFkb2dBcGlLZXlQYXJhbWV0ZXI6IHNzbS5JU3RyaW5nUGFyYW1ldGVyO1xuICBkYXRhZG9nU2l0ZTogc3RyaW5nO1xuICBkYXRhZG9nTG9nZ2luZ01vZGU6IERhdGFEb2dMb2dnaW5nTW9kZTtcbiAgYXBtR2V0UmVzb3VyY2VzVG9JZ25vcmU6IHN0cmluZ1tdO1xuICBjcHU6IG51bWJlcjtcbiAgbWVtb3J5TGltaXRNaUI6IG51bWJlcjtcbiAgZXNzZW50aWFsOiBib29sZWFuO1xuICBjb250YWluZXJUYWc6IHN0cmluZztcbiAgYWRkaXRpb25hbFRhZ3M6IHsgW2s6IHN0cmluZ106IHN0cmluZ30gfCB1bmRlZmluZWQ7XG4gIGVuYWJsZVJlc3RhcnRQb2xpY3k6IGJvb2xlYW47XG4gIHJlc3RhcnRJZ25vcmVkRXhpdENvZGVzOiBudW1iZXJbXSB8IHVuZGVmaW5lZDtcbn0pOiBlY3MuQ29udGFpbmVyRGVmaW5pdGlvbiB7XG5cbiAgY29uc3QgeyBhY2NvdW50OiBhY2NvdW50SWQsIHJlZ2lvbiB9ID0gU3RhY2sub2YocHJvcHMuc2NvcGUpO1xuICBjb25zdCBkYXRhZG9nU2lkZWNhciA9IHByb3BzLnRhc2tEZWZpbml0aW9uLmFkZENvbnRhaW5lcignZGF0YWRvZy1hZ2VudCcsIHtcbiAgICBpbWFnZTogZWNzLkNvbnRhaW5lckltYWdlLmZyb21SZWdpc3RyeShgcHVibGljLmVjci5hd3MvZGF0YWRvZy9hZ2VudDoke3Byb3BzLmNvbnRhaW5lclRhZ31gKSxcbiAgICBlbmFibGVSZXN0YXJ0UG9saWN5OiBwcm9wcy5lbmFibGVSZXN0YXJ0UG9saWN5LFxuICAgIHJlc3RhcnRJZ25vcmVkRXhpdENvZGVzOiBwcm9wcy5yZXN0YXJ0SWdub3JlZEV4aXRDb2RlcyxcbiAgICBsb2dnaW5nOiBzZXR1cExvZ2dpbmcoeyAuLi5wcm9wcywgY29udGFpbmVyVHlwZTogJ2RhdGFkb2ctc2lkZWNhcicgfSksXG4gICAgY3B1OiBwcm9wcy5jcHUsXG4gICAgbWVtb3J5TGltaXRNaUI6IHByb3BzLm1lbW9yeUxpbWl0TWlCLFxuICAgIGVudmlyb25tZW50OiB7XG4gICAgICAvLyB1bmlmaWVkIHRhZ2dpbmcsIHNlZSBodHRwczovL2RvY3MuZGF0YWRvZ2hxLmNvbS9nZXR0aW5nX3N0YXJ0ZWQvdGFnZ2luZy91bmlmaWVkX3NlcnZpY2VfdGFnZ2luZy8/dGFiPWVjc1xuICAgICAgRERfRU5WOiBwcm9wcy5zdGFnZSxcbiAgICAgIEREX1NFUlZJQ0U6IHByb3BzLnNlcnZpY2VOYW1lLFxuICAgICAgRERfVkVSU0lPTjogcHJvcHMudmVyc2lvbixcbiAgICAgIC8vIEFQTSBhbmQgdHJhY2luZyBzZWUgaHR0cHM6Ly9kb2NzLmRhdGFkb2docS5jb20vYWdlbnQvZG9ja2VyL2FwbS8/dGFiPWxpbnV4XG4gICAgICBERF9BUE1fRU5BQkxFRDogJ3RydWUnLFxuICAgICAgRERfQVBNX0lHTk9SRV9SRVNPVVJDRVM6IHByb3BzLmFwbUdldFJlc291cmNlc1RvSWdub3JlXG4gICAgICAgIC5tYXAoKGFwbUdldFJlc291cmNlVG9JZ25vcmUpID0+IGBHRVQgJHthcG1HZXRSZXNvdXJjZVRvSWdub3JlfWApXG4gICAgICAgIC5qb2luKCcsJyksXG4gICAgICAvLyBnZW5lcmFsIHNldHRpbmdzXG4gICAgICBERF9TSVRFOiBwcm9wcy5kYXRhZG9nU2l0ZSxcbiAgICAgIEREX1RBR1M6IGdldFRhZ3NFbnZpcm9ubWVudFZhcmlhYmxlVmFsdWUoeyAuLi5wcm9wcywgYWNjb3VudElkLCByZWdpb24sIGNvbnRhaW5lclR5cGU6ICdkYXRhZG9nLXNpZGVjYXInIH0pLFxuICAgICAgRUNTX0ZBUkdBVEU6ICd0cnVlJyxcbiAgICAgIEREX0NMT1VEX1BST1ZJREVSX01FVEFEQVRBOiAnYXdzJyxcbiAgICAgIEREX1JFTU9URV9DT05GSUdVUkFUSU9OX0VOQUJMRUQ6ICdmYWxzZScsXG4gICAgfSxcbiAgICAvLyBzZWUgaHR0cHM6Ly9naXRodWIuY29tL0RhdGFEb2cvZGF0YWRvZy1hZ2VudC9ibG9iL21hc3Rlci9Eb2NrZXJmaWxlcy9hZ2VudC9hbWQ2NC9Eb2NrZXJmaWxlI0wxNzEtTDE3MlxuICAgIGhlYWx0aENoZWNrOiB7XG4gICAgICBzdGFydFBlcmlvZDogRHVyYXRpb24ubWludXRlcygyKSxcbiAgICAgIGludGVydmFsOiBEdXJhdGlvbi5zZWNvbmRzKDMwKSxcbiAgICAgIHRpbWVvdXQ6IER1cmF0aW9uLnNlY29uZHMoNSksXG4gICAgICByZXRyaWVzOiAyLFxuICAgICAgY29tbWFuZDogWydDTUQtU0hFTEwnLCAnL3Byb2JlLnNoJ10sXG4gICAgfSxcbiAgICBzZWNyZXRzOiB7XG4gICAgICBERF9BUElfS0VZOiBlY3MuU2VjcmV0LmZyb21Tc21QYXJhbWV0ZXIocHJvcHMuZGF0YWRvZ0FwaUtleVBhcmFtZXRlciksXG4gICAgfSxcbiAgICBlc3NlbnRpYWw6IHByb3BzLmVzc2VudGlhbCxcbiAgfSk7XG5cbiAgZGF0YWRvZ1NpZGVjYXIuYWRkUG9ydE1hcHBpbmdzKHtcbiAgICBjb250YWluZXJQb3J0OiA4MTI1LFxuICAgIHByb3RvY29sOiBlY3MuUHJvdG9jb2wuVURQLFxuICB9KTtcblxuICBkYXRhZG9nU2lkZWNhci5hZGRQb3J0TWFwcGluZ3Moe1xuICAgIGNvbnRhaW5lclBvcnQ6IDgxMjYsXG4gICAgcHJvdG9jb2w6IGVjcy5Qcm90b2NvbC5UQ1AsXG4gIH0pO1xuXG4gIHJldHVybiBkYXRhZG9nU2lkZWNhcjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFkZEZpcmVsZW5zQ29uZmlnVXBsb2FkRnJvbVMzUGVybWlzc2lvbnMocHJvcHM6IHtcbiAgdGFza0RlZmluaXRpb246IGVjcy5UYXNrRGVmaW5pdGlvbjtcbiAgZmlyZWxlbnNDb25maWdCdWNrZXRBcm46IHN0cmluZztcbn0pIHtcbiAgcHJvcHMudGFza0RlZmluaXRpb24uYWRkVG9UYXNrUm9sZVBvbGljeShuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgcmVzb3VyY2VzOiBbcHJvcHMuZmlyZWxlbnNDb25maWdCdWNrZXRBcm4sIGAke3Byb3BzLmZpcmVsZW5zQ29uZmlnQnVja2V0QXJufS8qYF0sXG4gICAgYWN0aW9uczogWydzMzpHZXQqJ10sXG4gICAgZWZmZWN0OiBpYW0uRWZmZWN0LkFMTE9XLFxuICB9KSk7XG59XG5cbmZ1bmN0aW9uIGdldFRhZ3NFbnZpcm9ubWVudFZhcmlhYmxlVmFsdWUocHJvcHM6IHtcbiAgYWNjb3VudElkOiBzdHJpbmc7XG4gIGFjY291bnROYW1lOiBzdHJpbmc7XG4gIHJlZ2lvbjogc3RyaW5nO1xuICB0ZWFtTmFtZTogc3RyaW5nO1xuICB0ZWFtSWRlbnRpZmllcjogc3RyaW5nO1xuICBzdGFnZTogc3RyaW5nO1xuICBzZXJ2aWNlTmFtZTogc3RyaW5nO1xuICB2ZXJzaW9uOiBzdHJpbmc7XG4gIGNvbnRhaW5lclR5cGU6ICdzZXJ2aWNlJyB8ICdkYXRhZG9nLXNpZGVjYXInIHwgJ2ZsdWVudC1iaXQnO1xuICBhZGRpdGlvbmFsVGFnczogeyBbazogc3RyaW5nXTogc3RyaW5nfSB8IHVuZGVmaW5lZDtcbn0pOiBzdHJpbmcge1xuXG4gIGNvbnN0IHNlcGFyYXRvciA9IGRldGVybWluZVNlcGFyYXRvcihwcm9wcy5jb250YWluZXJUeXBlKTtcblxuICBjb25zdCB0YWdzID0ge1xuICAgIC8vIHVuaWZpZWQgdGFnZ2luZ1xuICAgIC8vIG92ZXJyaWRkZW4gYnkgZGVkaWNhdGVkIHNldHRpbmdzIChlbnZpcm9ubWVudCB2YXJpYWJsZXMvdGFncylcbiAgICAvLyBkdXBsaWNhdGVkIGhlcmUgdG8gZW5zdXJlIHRoZXkgYXJlIHVzZWQgKGFuZCBzb21ldGltZXMsIG5vdCBhbGwgdGhyZWUgdmFsdWVzIGFyZSBzdXBwb3J0ZWQpXG4gICAgZW52OiBwcm9wcy5zdGFnZSxcbiAgICBzZXJ2aWNlOiBwcm9wcy5zZXJ2aWNlTmFtZSxcbiAgICB2ZXJzaW9uOiBwcm9wcy52ZXJzaW9uLFxuICAgIC8vIGFjY291bnQvdGVhbSBzcGVjaWZpYyBwYXJ0c1xuICAgIGFjY291bnRfaWQ6IHByb3BzLmFjY291bnRJZCxcbiAgICBhY2NvdW50X25hbWU6IHByb3BzLmFjY291bnROYW1lLFxuICAgIHJlZ2lvbjogcHJvcHMucmVnaW9uLFxuICAgIHRlYW06IHByb3BzLnRlYW1OYW1lLFxuICAgIHRlYW1faWRlbnRpZmllcjogcHJvcHMudGVhbUlkZW50aWZpZXIsXG4gIH07XG4gIHJldHVybiBPYmplY3QuZW50cmllcyh7IC4uLnRhZ3MsIC4uLnByb3BzLmFkZGl0aW9uYWxUYWdzIH0pXG4gICAgLm1hcCgoW2tleSwgdmFsdWVdKSA9PiBgJHtrZXl9OiR7dmFsdWV9YClcbiAgICAuam9pbihzZXBhcmF0b3IpO1xufVxuXG5mdW5jdGlvbiBkZXRlcm1pbmVTZXBhcmF0b3IoY29udGFpbmVyVHlwZTogJ3NlcnZpY2UnIHwgJ2RhdGFkb2ctc2lkZWNhcicgfCAnZmx1ZW50LWJpdCcpIHtcbiAgaWYgKGNvbnRhaW5lclR5cGUgPT09ICdkYXRhZG9nLXNpZGVjYXInKSB7XG4gICAgcmV0dXJuICcgJztcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gJywnO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhZGRGaXJlTGVuc0xvZ1JvdXRlcihwcm9wczoge1xuICB0YXNrRGVmaW5pdGlvbjogZWNzLlRhc2tEZWZpbml0aW9uO1xuICBjcHU6IG51bWJlcjtcbiAgbWVtb3J5TGltaXRNaUI6IG51bWJlcjtcbiAgZmlyZWxlbnNDb25maWdCdWNrZXRBcm46IHN0cmluZztcbiAgZmlyZWxlbnNDb25maWdGaWxlUGF0aDogc3RyaW5nO1xuICBzZXJ2aWNlTmFtZTogc3RyaW5nO1xufSk6IGVjcy5Db250YWluZXJEZWZpbml0aW9uIHtcbiAgY29uc3QgZmx1ZW50Qml0UzNDb25maWdGaWxlID0gcHJvcHMuZmlyZWxlbnNDb25maWdCdWNrZXRBcm4gKyBwcm9wcy5maXJlbGVuc0NvbmZpZ0ZpbGVQYXRoO1xuICByZXR1cm4gcHJvcHMudGFza0RlZmluaXRpb24uYWRkRmlyZWxlbnNMb2dSb3V0ZXIoJ2ZpcmVsZW5zLWxvZy1yb3V0ZXInLCB7XG4gICAgaW1hZ2U6IGVjcy5Db250YWluZXJJbWFnZS5mcm9tUmVnaXN0cnkoJ3B1YmxpYy5lY3IuYXdzL2F3cy1vYnNlcnZhYmlsaXR5L2F3cy1mb3ItZmx1ZW50LWJpdDppbml0LTIuMzIuMi4yMDI0MDgyMCcpLFxuICAgIGZpcmVsZW5zQ29uZmlnOiB7XG4gICAgICB0eXBlOiBlY3MuRmlyZWxlbnNMb2dSb3V0ZXJUeXBlLkZMVUVOVEJJVCxcbiAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgZW5hYmxlRUNTTG9nTWV0YWRhdGE6IHRydWUsXG4gICAgICB9LFxuICAgIH0sXG4gICAgY3B1OiBwcm9wcy5jcHUsXG4gICAgbWVtb3J5TGltaXRNaUI6IHByb3BzLm1lbW9yeUxpbWl0TWlCLFxuICAgIGxvZ2dpbmc6IGVjcy5Mb2dEcml2ZXJzLmF3c0xvZ3Moe1xuICAgICAgbG9nR3JvdXA6IG5ldyBsb2dzLkxvZ0dyb3VwKHByb3BzLnRhc2tEZWZpbml0aW9uLCAnRmlyZWxlbnNMb2dSb3V0ZXJMb2dHcm91cCcsIHtcbiAgICAgICAgbG9nR3JvdXBOYW1lOiBgJHtwcm9wcy5zZXJ2aWNlTmFtZX0tZmlyZWxlbnMtbG9nLXJvdXRlcmAsXG4gICAgICB9KSxcbiAgICAgIHN0cmVhbVByZWZpeDogJ2ZpcmVsZW5zLWxvZy1yb3V0ZXInLFxuICAgICAgbW9kZTogQXdzTG9nRHJpdmVyTW9kZS5OT05fQkxPQ0tJTkcsXG4gICAgfSksXG4gICAgaGVhbHRoQ2hlY2s6IHtcbiAgICAgIGNvbW1hbmQ6IFsnQ01ELVNIRUxMJywgJ2N1cmwgLS1mYWlsIC0tc2lsZW50IGh0dHA6Ly8xMjcuMC4wLjE6MjAyMC9hcGkvdjEvaGVhbHRoIHx8IGV4aXQgMSddLFxuICAgIH0sXG4gICAgZW52aXJvbm1lbnQ6IHtcbiAgICAgIGF3c19mbHVlbnRfYml0X2luaXRfczNfMTogZmx1ZW50Qml0UzNDb25maWdGaWxlLFxuICAgIH0sXG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2V0dXBMb2dnaW5nKHByb3BzOiB7XG4gIHNjb3BlOiBDb25zdHJ1Y3Q7XG4gIGFjY291bnROYW1lOiBzdHJpbmc7XG4gIHRlYW1OYW1lOiBzdHJpbmc7XG4gIHRlYW1JZGVudGlmaWVyOiBzdHJpbmc7XG4gIHN0YWdlOiBzdHJpbmc7XG4gIHNlcnZpY2VOYW1lOiBzdHJpbmc7XG4gIHZlcnNpb246IHN0cmluZztcbiAgZGF0YWRvZ0FwaUtleVBhcmFtZXRlcjogc3NtLklTdHJpbmdQYXJhbWV0ZXI7XG4gIGRhdGFkb2dMb2dnaW5nTW9kZTogRGF0YURvZ0xvZ2dpbmdNb2RlO1xuICBkYXRhZG9nU2l0ZTogc3RyaW5nO1xuICBjb250YWluZXJUeXBlOiAnc2VydmljZScgfCAnZGF0YWRvZy1zaWRlY2FyJztcbiAgYWRkaXRpb25hbFRhZ3M6IHsgW2s6IHN0cmluZ106IHN0cmluZ30gfCB1bmRlZmluZWQ7XG59KTogZWNzLkxvZ0RyaXZlciB7XG5cbiAgbGV0IGxvZ0dyb3VwTmFtZTogc3RyaW5nO1xuICBsZXQgbG9nR3JvdXBJZDogc3RyaW5nO1xuICBsZXQgY29udGFpbmVyVHlwZUNhbWVsQ2FzZTtcblxuICBzd2l0Y2ggKHByb3BzLmNvbnRhaW5lclR5cGUpIHtcblxuICAgIGNhc2UgJ3NlcnZpY2UnOlxuICAgICAgbG9nR3JvdXBJZCA9ICdMb2dHcm91cEZvclNlcnZpY2UnO1xuICAgICAgbG9nR3JvdXBOYW1lID0gcHJvcHMuc2VydmljZU5hbWU7XG4gICAgICBjb250YWluZXJUeXBlQ2FtZWxDYXNlID0gJ1NlcnZpY2UnO1xuICAgICAgYnJlYWs7XG5cbiAgICBjYXNlICdkYXRhZG9nLXNpZGVjYXInOlxuICAgICAgbG9nR3JvdXBJZCA9ICdMb2dHcm91cEZvckRhdGFkb2dTaWRlY2FyJztcbiAgICAgIGxvZ0dyb3VwTmFtZSA9IGAke3Byb3BzLnNlcnZpY2VOYW1lfS0ke3Byb3BzLmNvbnRhaW5lclR5cGV9YDtcbiAgICAgIGNvbnRhaW5lclR5cGVDYW1lbENhc2UgPSAnRGF0YWRvZ1NpZGVjYXInO1xuICAgICAgYnJlYWs7XG4gIH1cblxuICBjb25zdCB7IGFjY291bnQ6IGFjY291bnRJZCwgcmVnaW9uIH0gPSBTdGFjay5vZihwcm9wcy5zY29wZSk7XG5cbiAgc3dpdGNoIChwcm9wcy5kYXRhZG9nTG9nZ2luZ01vZGUpIHtcblxuICAgIGNhc2UgRGF0YURvZ0xvZ2dpbmdNb2RlLkFXU19GSVJFX0xFTlM6XG4gICAgICAvLyBUT0RPIGNhbiB3ZSB1c2UgYHNlY3JldE9wdGlvbnNgIGhlcmUgYXMgd2VsbCwgZS5nLiBhcyBpbiBodHRwczovL2dpdGh1Yi5jb20vYXdzLXNhbXBsZXMvYW1hem9uLWVjcy1maXJlbGVucy1leGFtcGxlcy9ibG9iL21haW5saW5lL2V4YW1wbGVzL2ZsdWVudC1iaXQvZGF0YWRvZy90YXNrLWRlZmluaXRpb24uanNvbiNMMzMtTDM2XG4gICAgICAvLyBQcm9iYWJseSBub3QsIHNlZSBodHRwczovL2dpdGh1Yi5jb20vYXdzL2F3cy1jZGsvaXNzdWVzLzgxNzRcbiAgICAgIHJldHVybiBlY3MuTG9nRHJpdmVycy5maXJlbGVucyh7XG4gICAgICAgIC8vIHNlZSBodHRwczovL2RvY3MuZGF0YWRvZ2hxLmNvbS9pbnRlZ3JhdGlvbnMvZmx1ZW50Yml0LyNjb25maWd1cmF0aW9uLXBhcmFtZXRlcnNcbiAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgIE5hbWU6ICdkYXRhZG9nJyxcbiAgICAgICAgICBNYXRjaDogJyonLFxuICAgICAgICAgIEhvc3Q6IGBodHRwLWludGFrZS5sb2dzLiR7cHJvcHMuZGF0YWRvZ1NpdGV9YCxcbiAgICAgICAgICBUTFM6ICdvbicsXG4gICAgICAgICAgYXBpa2V5OiBwcm9wcy5kYXRhZG9nQXBpS2V5UGFyYW1ldGVyLnN0cmluZ1ZhbHVlLFxuICAgICAgICAgIGNvbXByZXNzOiAnZ3ppcCcsXG4gICAgICAgICAgZGRfc2VydmljZTogbG9nR3JvdXBOYW1lLFxuICAgICAgICAgIGRkX3NvdXJjZTogJ3Jpby1mYXJnYXRlJyxcbiAgICAgICAgICBkZF9tZXNzYWdlX2tleTogJ2xvZycsXG4gICAgICAgICAgZGRfdGFnczogZ2V0VGFnc0Vudmlyb25tZW50VmFyaWFibGVWYWx1ZSh7IC4uLnByb3BzLCBhY2NvdW50SWQsIHJlZ2lvbiwgY29udGFpbmVyVHlwZTogJ2ZsdWVudC1iaXQnIH0pLFxuICAgICAgICAgIHByb3ZpZGVyOiAnZWNzJyxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuXG4gICAgY2FzZSBEYXRhRG9nTG9nZ2luZ01vZGUuRk9SV0FSREVSX0xBTUJEQTpcbiAgICBjYXNlIERhdGFEb2dMb2dnaW5nTW9kZS5EQVRBRE9HX0ZPUldBUkRFUl9MQU1CREE6XG4gICAgICBjb25zdCBsb2dHcm91cEZvckZvcndhcmRpbmdMYW1iZGEgPSBuZXcgbG9ncy5Mb2dHcm91cChwcm9wcy5zY29wZSwgbG9nR3JvdXBJZCwge1xuICAgICAgICBsb2dHcm91cE5hbWUsXG4gICAgICAgIHJldGVudGlvbjogbG9ncy5SZXRlbnRpb25EYXlzLk9ORV9XRUVLLFxuICAgICAgfSk7XG4gICAgICBUYWdzLm9mKGxvZ0dyb3VwRm9yRm9yd2FyZGluZ0xhbWJkYSkuYWRkKCdzZXJ2aWNlJywgcHJvcHMuc2VydmljZU5hbWUpO1xuICAgICAgY29uc3QgbG9nRm9yd2FyZGVyTGFtYmRhQXJuT3V0cHV0TmFtZSA9IHByb3BzLmRhdGFkb2dMb2dnaW5nTW9kZSA9PT0gRGF0YURvZ0xvZ2dpbmdNb2RlLkRBVEFET0dfRk9SV0FSREVSX0xBTUJEQSA/ICdkYXRhZG9nLWZvcndhcmRlci1Gb3J3YXJkZXJBcm4nIDogJ2N1c3RvbS1yZXNvdXJjZS1kYXRhZG9nLWxvZ2ZvcndhcmRlci1mdW5jdGlvbi1hcm4nO1xuICAgICAgY29uc3QgbG9nRm9yd2FyZGVyTGFtYmRhQXJuID0gRm4uaW1wb3J0VmFsdWUobG9nRm9yd2FyZGVyTGFtYmRhQXJuT3V0cHV0TmFtZSk7XG4gICAgICBjb25zdCBjZm5QZXJtaXNzaW9uID0gbmV3IGxhbWJkYS5DZm5QZXJtaXNzaW9uKHByb3BzLnNjb3BlLCBgTG9nRm9yd2FyZGVyUGVybWlzc2lvbiR7Y29udGFpbmVyVHlwZUNhbWVsQ2FzZX1gLCB7XG4gICAgICAgIGFjdGlvbjogJ2xhbWJkYTpJbnZva2VGdW5jdGlvbicsXG4gICAgICAgIGZ1bmN0aW9uTmFtZTogbG9nRm9yd2FyZGVyTGFtYmRhQXJuLFxuICAgICAgICBwcmluY2lwYWw6IGBsb2dzLiR7cmVnaW9ufS5hbWF6b25hd3MuY29tYCxcbiAgICAgICAgc291cmNlQXJuOiBsb2dHcm91cEZvckZvcndhcmRpbmdMYW1iZGEubG9nR3JvdXBBcm4sXG4gICAgICB9KTtcbiAgICAgIGNvbnN0IGNmblN1YnNjcmlwdGlvbkZpbHRlciA9IG5ldyBsb2dzLkNmblN1YnNjcmlwdGlvbkZpbHRlcihcbiAgICAgICAgcHJvcHMuc2NvcGUsXG4gICAgICAgIGBMb2dGb3J3YXJkZXJTdWJzY3JpcHRpb25GaWx0ZXIke2NvbnRhaW5lclR5cGVDYW1lbENhc2V9YCxcbiAgICAgICAge1xuICAgICAgICAgIGRlc3RpbmF0aW9uQXJuOiBsb2dGb3J3YXJkZXJMYW1iZGFBcm4sXG4gICAgICAgICAgZmlsdGVyUGF0dGVybjogJycsXG4gICAgICAgICAgbG9nR3JvdXBOYW1lOiBsb2dHcm91cEZvckZvcndhcmRpbmdMYW1iZGEubG9nR3JvdXBOYW1lLFxuICAgICAgICB9LFxuICAgICAgKTtcbiAgICAgIGNmblN1YnNjcmlwdGlvbkZpbHRlci5hZGREZXBlbmRlbmN5KGNmblBlcm1pc3Npb24pO1xuICAgICAgcmV0dXJuIGVjcy5Mb2dEcml2ZXJzLmF3c0xvZ3Moe1xuICAgICAgICBzdHJlYW1QcmVmaXg6IHByb3BzLmNvbnRhaW5lclR5cGUsXG4gICAgICAgIGxvZ0dyb3VwOiBsb2dHcm91cEZvckZvcndhcmRpbmdMYW1iZGEsXG4gICAgICAgIG1vZGU6IGVjcy5Bd3NMb2dEcml2ZXJNb2RlLk5PTl9CTE9DS0lORyxcbiAgICAgICAgbWF4QnVmZmVyU2l6ZTogU2l6ZS5tZWJpYnl0ZXMoMjUpLFxuICAgICAgfSk7XG5cbiAgICBjYXNlIERhdGFEb2dMb2dnaW5nTW9kZS5OT05FOlxuICAgICAgY29uc3QgbG9nR3JvdXBJbkNsb3Vkd2F0Y2hPbmx5ID0gbmV3IGxvZ3MuTG9nR3JvdXAocHJvcHMuc2NvcGUsIGxvZ0dyb3VwSWQsIHtcbiAgICAgICAgcmV0ZW50aW9uOiBsb2dzLlJldGVudGlvbkRheXMuT05FX1dFRUssXG4gICAgICB9KTtcbiAgICAgIHJldHVybiBlY3MuTG9nRHJpdmVycy5hd3NMb2dzKHtcbiAgICAgICAgc3RyZWFtUHJlZml4OiBwcm9wcy5jb250YWluZXJUeXBlLFxuICAgICAgICBsb2dHcm91cDogbG9nR3JvdXBJbkNsb3Vkd2F0Y2hPbmx5LFxuICAgICAgICBtb2RlOiBlY3MuQXdzTG9nRHJpdmVyTW9kZS5OT05fQkxPQ0tJTkcsXG4gICAgICAgIG1heEJ1ZmZlclNpemU6IFNpemUubWViaWJ5dGVzKDI1KSxcbiAgICAgIH0pO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBlbnN1cmVMb2dnaW5nQW5kTW9uaXRvcmluZ0FyZVJlYWR5QmVmb3JlU2VydmljZVN0YXJ0cyhyaW9GYXJnYXRlU2VydmljZTogUmlvRmFyZ2F0ZVNlcnZpY2UgfCBSaW9GYXJnYXRlU2VydmljZUJsdWVHcmVlbkFscGhhKTogdm9pZCB7XG5cbiAgcmlvRmFyZ2F0ZVNlcnZpY2Uuc2VydmljZUNvbnRhaW5lckRlZmluaXRpb24uYWRkQ29udGFpbmVyRGVwZW5kZW5jaWVzKHtcbiAgICBjb250YWluZXI6IHJpb0ZhcmdhdGVTZXJ2aWNlLmRhdGFkb2dTaWRlQ2FyQ29udGFpbmVyRGVmaW5pdGlvbixcbiAgICBjb25kaXRpb246IGVjcy5Db250YWluZXJEZXBlbmRlbmN5Q29uZGl0aW9uLkhFQUxUSFksXG4gIH0pO1xuXG4gIGlmIChyaW9GYXJnYXRlU2VydmljZS5sb2dSb3V0ZXJDb250YWluZXJEZWZpbml0aW9uKSB7XG4gICAgcmlvRmFyZ2F0ZVNlcnZpY2Uuc2VydmljZUNvbnRhaW5lckRlZmluaXRpb24uYWRkQ29udGFpbmVyRGVwZW5kZW5jaWVzKHtcbiAgICAgIGNvbnRhaW5lcjogcmlvRmFyZ2F0ZVNlcnZpY2UubG9nUm91dGVyQ29udGFpbmVyRGVmaW5pdGlvbixcbiAgICAgIGNvbmRpdGlvbjogZWNzLkNvbnRhaW5lckRlcGVuZGVuY3lDb25kaXRpb24uU1RBUlQsXG4gICAgfSk7XG5cbiAgICBpZiAocmlvRmFyZ2F0ZVNlcnZpY2UuZGF0YWRvZ1NpZGVDYXJDb250YWluZXJEZWZpbml0aW9uLmxvZ0RyaXZlckNvbmZpZz8ubG9nRHJpdmVyID09PSAnYXdzZmlyZWxlbnMnKSB7XG4gICAgICByaW9GYXJnYXRlU2VydmljZS5kYXRhZG9nU2lkZUNhckNvbnRhaW5lckRlZmluaXRpb24uYWRkQ29udGFpbmVyRGVwZW5kZW5jaWVzKHtcbiAgICAgICAgY29udGFpbmVyOiByaW9GYXJnYXRlU2VydmljZS5sb2dSb3V0ZXJDb250YWluZXJEZWZpbml0aW9uLFxuICAgICAgICBjb25kaXRpb246IGVjcy5Db250YWluZXJEZXBlbmRlbmN5Q29uZGl0aW9uLlNUQVJULFxuICAgICAgfSk7XG4gICAgfVxuICB9XG59XG4iXX0=
@@ -1,4 +1,3 @@
1
- import * as cdk from 'aws-cdk-lib';
2
1
  import * as ec2 from 'aws-cdk-lib/aws-ec2';
3
2
  import * as ecs from 'aws-cdk-lib/aws-ecs';
4
3
  import * as elbv2 from 'aws-cdk-lib/aws-elasticloadbalancingv2';
@@ -92,6 +91,6 @@ export declare class RioFargateServiceBlueGreenAlpha extends constructs.Construc
92
91
  readonly connections: ec2.Connections;
93
92
  readonly service: ecs.FargateService;
94
93
  readonly blueTargetGroup: elbv2.ApplicationTargetGroup | undefined;
95
- readonly greenTargetGroup: cdk.aws_elasticloadbalancingv2.ApplicationTargetGroup | undefined;
94
+ readonly greenTargetGroup: elbv2.ApplicationTargetGroup | undefined;
96
95
  constructor(scope: constructs.Construct, id: string, props: RioFargateServiceBlueGreenAlphaProps);
97
96
  }