construct-hub 0.4.412 → 0.4.413

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/API.md CHANGED
@@ -94,6 +94,7 @@ Any object.
94
94
  | <code><a href="#construct-hub.ConstructHub.property.highSeverityAlarms">highSeverityAlarms</a></code> | <code>aws-cdk-lib.aws_cloudwatch.IAlarm[]</code> | Returns a list of all high-severity alarms from this ConstructHub instance. |
95
95
  | <code><a href="#construct-hub.ConstructHub.property.ingestionQueue">ingestionQueue</a></code> | <code>aws-cdk-lib.aws_sqs.IQueue</code> | *No description.* |
96
96
  | <code><a href="#construct-hub.ConstructHub.property.lowSeverityAlarms">lowSeverityAlarms</a></code> | <code>aws-cdk-lib.aws_cloudwatch.IAlarm[]</code> | Returns a list of all low-severity alarms from this ConstructHub instance. |
97
+ | <code><a href="#construct-hub.ConstructHub.property.mediumSeverityAlarms">mediumSeverityAlarms</a></code> | <code>aws-cdk-lib.aws_cloudwatch.IAlarm[]</code> | Returns a list of all low-severity alarms from this ConstructHub instance. |
97
98
  | <code><a href="#construct-hub.ConstructHub.property.regenerateAllDocumentationPerPackage">regenerateAllDocumentationPerPackage</a></code> | <code>aws-cdk-lib.aws_stepfunctions.IStateMachine</code> | The function operators can use to reprocess a specific package version through the backend data pipeline. |
98
99
 
99
100
  ---
@@ -175,6 +176,22 @@ that something unusual (not necessarily bad) is happening.
175
176
 
176
177
  ---
177
178
 
179
+ ##### `mediumSeverityAlarms`<sup>Required</sup> <a name="mediumSeverityAlarms" id="construct-hub.ConstructHub.property.mediumSeverityAlarms"></a>
180
+
181
+ ```typescript
182
+ public readonly mediumSeverityAlarms: IAlarm[];
183
+ ```
184
+
185
+ - *Type:* aws-cdk-lib.aws_cloudwatch.IAlarm[]
186
+
187
+ Returns a list of all low-severity alarms from this ConstructHub instance.
188
+
189
+ These do not necessitate immediate attention, as they do not have direct
190
+ customer-visible impact, or handling is not time-sensitive. They indicate
191
+ that something unusual (not necessarily bad) is happening.
192
+
193
+ ---
194
+
178
195
  ##### `regenerateAllDocumentationPerPackage`<sup>Required</sup> <a name="regenerateAllDocumentationPerPackage" id="construct-hub.ConstructHub.property.regenerateAllDocumentationPerPackage"></a>
179
196
 
180
197
  ```typescript
@@ -327,6 +344,8 @@ const alarmActions: AlarmActions = { ... }
327
344
  | --- | --- | --- |
328
345
  | <code><a href="#construct-hub.AlarmActions.property.highSeverity">highSeverity</a></code> | <code>string</code> | The ARN of the CloudWatch alarm action to take for alarms of high-severity alarms. |
329
346
  | <code><a href="#construct-hub.AlarmActions.property.highSeverityAction">highSeverityAction</a></code> | <code>aws-cdk-lib.aws_cloudwatch.IAlarmAction</code> | The CloudWatch alarm action to take for alarms of high-severity alarms. |
347
+ | <code><a href="#construct-hub.AlarmActions.property.mediumSeverity">mediumSeverity</a></code> | <code>string</code> | The ARN of the CloudWatch alarm action to take for alarms of medium-severity alarms. |
348
+ | <code><a href="#construct-hub.AlarmActions.property.mediumSeverityAction">mediumSeverityAction</a></code> | <code>aws-cdk-lib.aws_cloudwatch.IAlarmAction</code> | The CloudWatch alarm action to take for alarms of medium-severity alarms. |
330
349
  | <code><a href="#construct-hub.AlarmActions.property.normalSeverity">normalSeverity</a></code> | <code>string</code> | The ARN of the CloudWatch alarm action to take for alarms of normal severity. |
331
350
  | <code><a href="#construct-hub.AlarmActions.property.normalSeverityAction">normalSeverityAction</a></code> | <code>aws-cdk-lib.aws_cloudwatch.IAlarmAction</code> | The CloudWatch alarm action to take for alarms of normal severity. |
332
351
 
@@ -364,6 +383,38 @@ This must be an ARN that can be used with CloudWatch alarms.
364
383
 
365
384
  ---
366
385
 
386
+ ##### `mediumSeverity`<sup>Optional</sup> <a name="mediumSeverity" id="construct-hub.AlarmActions.property.mediumSeverity"></a>
387
+
388
+ ```typescript
389
+ public readonly mediumSeverity: string;
390
+ ```
391
+
392
+ - *Type:* string
393
+
394
+ The ARN of the CloudWatch alarm action to take for alarms of medium-severity alarms.
395
+
396
+ This must be an ARN that can be used with CloudWatch alarms.
397
+
398
+ > [https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/AlarmThatSendsEmail.html#alarms-and-actions](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/AlarmThatSendsEmail.html#alarms-and-actions)
399
+
400
+ ---
401
+
402
+ ##### `mediumSeverityAction`<sup>Optional</sup> <a name="mediumSeverityAction" id="construct-hub.AlarmActions.property.mediumSeverityAction"></a>
403
+
404
+ ```typescript
405
+ public readonly mediumSeverityAction: IAlarmAction;
406
+ ```
407
+
408
+ - *Type:* aws-cdk-lib.aws_cloudwatch.IAlarmAction
409
+
410
+ The CloudWatch alarm action to take for alarms of medium-severity alarms.
411
+
412
+ This must be an ARN that can be used with CloudWatch alarms.
413
+
414
+ > [https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/AlarmThatSendsEmail.html#alarms-and-actions](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/AlarmThatSendsEmail.html#alarms-and-actions)
415
+
416
+ ---
417
+
367
418
  ##### `normalSeverity`<sup>Optional</sup> <a name="normalSeverity" id="construct-hub.AlarmActions.property.normalSeverity"></a>
368
419
 
369
420
  ```typescript
@@ -13679,6 +13730,7 @@ ConstructHub monitoring features exposed to extension points.
13679
13730
  | --- | --- |
13680
13731
  | <code><a href="#construct-hub.IMonitoring.addHighSeverityAlarm">addHighSeverityAlarm</a></code> | Adds a high-severity alarm. |
13681
13732
  | <code><a href="#construct-hub.IMonitoring.addLowSeverityAlarm">addLowSeverityAlarm</a></code> | Adds a low-severity alarm. |
13733
+ | <code><a href="#construct-hub.IMonitoring.addMediumSeverityAlarm">addMediumSeverityAlarm</a></code> | Adds a medium-severity alarm. |
13682
13734
 
13683
13735
  ---
13684
13736
 
@@ -13736,6 +13788,33 @@ the alarm to be added.
13736
13788
 
13737
13789
  ---
13738
13790
 
13791
+ ##### `addMediumSeverityAlarm` <a name="addMediumSeverityAlarm" id="construct-hub.IMonitoring.addMediumSeverityAlarm"></a>
13792
+
13793
+ ```typescript
13794
+ public addMediumSeverityAlarm(title: string, alarm: AlarmBase): void
13795
+ ```
13796
+
13797
+ Adds a medium-severity alarm.
13798
+
13799
+ If this alarm goes off, the action specified in
13800
+ `mediumSeverityAlarmAction` is triggered.
13801
+
13802
+ ###### `title`<sup>Required</sup> <a name="title" id="construct-hub.IMonitoring.addMediumSeverityAlarm.parameter.title"></a>
13803
+
13804
+ - *Type:* string
13805
+
13806
+ a user-friendly title for the alarm (not currently used).
13807
+
13808
+ ---
13809
+
13810
+ ###### `alarm`<sup>Required</sup> <a name="alarm" id="construct-hub.IMonitoring.addMediumSeverityAlarm.parameter.alarm"></a>
13811
+
13812
+ - *Type:* aws-cdk-lib.aws_cloudwatch.AlarmBase
13813
+
13814
+ the alarm to be added.
13815
+
13816
+ ---
13817
+
13739
13818
 
13740
13819
  ### IOverviewDashboard <a name="IOverviewDashboard" id="construct-hub.IOverviewDashboard"></a>
13741
13820
 
package/lib/api.d.ts CHANGED
@@ -48,6 +48,21 @@ export interface AlarmActions {
48
48
  * @see https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/AlarmThatSendsEmail.html#alarms-and-actions
49
49
  */
50
50
  readonly highSeverityAction?: IAlarmAction;
51
+ /**
52
+ * The ARN of the CloudWatch alarm action to take for alarms of medium-severity
53
+ * alarms.
54
+ *
55
+ * This must be an ARN that can be used with CloudWatch alarms.
56
+ * @see https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/AlarmThatSendsEmail.html#alarms-and-actions
57
+ */
58
+ readonly mediumSeverity?: string;
59
+ /**
60
+ * The CloudWatch alarm action to take for alarms of medium-severity alarms.
61
+ *
62
+ * This must be an ARN that can be used with CloudWatch alarms.
63
+ * @see https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/AlarmThatSendsEmail.html#alarms-and-actions
64
+ */
65
+ readonly mediumSeverityAction?: IAlarmAction;
51
66
  /**
52
67
  * The ARN of the CloudWatch alarm action to take for alarms of normal
53
68
  * severity.
package/lib/api.js CHANGED
@@ -20,4 +20,4 @@ __exportStar(require("./backend/license-list/api"), exports);
20
20
  __exportStar(require("./codeartifact/api"), exports);
21
21
  __exportStar(require("./monitoring/api"), exports);
22
22
  __exportStar(require("./overview-dashboard/api"), exports);
23
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2FwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEscUVBQXFFOzs7Ozs7Ozs7Ozs7Ozs7O0FBTXJFLDBEQUF3QztBQUN4Qyw2REFBMkM7QUFDM0MscURBQW1DO0FBQ25DLG1EQUFpQztBQUNqQywyREFBeUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyB0aGlzIGZpbGUgaW5jbHVkZXMgdHlwZXMgdGhhdCBhcmUgcGFydCBvZiB0aGUgbGlicmFyeSdzIHB1YmxpYyBBUElcblxuaW1wb3J0ICogYXMgY2VydGlmaWNhdGVtYW5hZ2VyIGZyb20gJ2F3cy1jZGstbGliL2F3cy1jZXJ0aWZpY2F0ZW1hbmFnZXInO1xuaW1wb3J0IHsgSUFsYXJtQWN0aW9uIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWNsb3Vkd2F0Y2gnO1xuaW1wb3J0ICogYXMgcm91dGU1MyBmcm9tICdhd3MtY2RrLWxpYi9hd3Mtcm91dGU1Myc7XG5cbmV4cG9ydCAqIGZyb20gJy4vYmFja2VuZC9kZW55LWxpc3QvYXBpJztcbmV4cG9ydCAqIGZyb20gJy4vYmFja2VuZC9saWNlbnNlLWxpc3QvYXBpJztcbmV4cG9ydCAqIGZyb20gJy4vY29kZWFydGlmYWN0L2FwaSc7XG5leHBvcnQgKiBmcm9tICcuL21vbml0b3JpbmcvYXBpJztcbmV4cG9ydCAqIGZyb20gJy4vb3ZlcnZpZXctZGFzaGJvYXJkL2FwaSc7XG5cbi8qKlxuICogRG9tYWluIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSB3ZWJzaXRlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIERvbWFpbiB7XG4gIC8qKlxuICAgKiBUaGUgcm9vdCBkb21haW4gbmFtZSB3aGVyZSB0aGlzIGluc3RhbmNlIG9mIENvbnN0cnVjdCBIdWIgd2lsbCBiZSBzZXJ2ZWQuXG4gICAqL1xuICByZWFkb25seSB6b25lOiByb3V0ZTUzLklIb3N0ZWRab25lO1xuXG4gIC8qKlxuICAgKiBUaGUgY2VydGlmaWNhdGUgdG8gdXNlIGZvciBzZXJ2aW5nIHRoZSBDb25zdHJ1Y3QgSHViIG92ZXIgYSBjdXN0b20gZG9tYWluLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGEgRE5TLVZhbGlkYXRlZCBjZXJ0aWZpY2F0ZSB3aWxsIGJlIHByb3Zpc2lvbmVkIHVzaW5nIHRoZVxuICAgKiAgICAgICAgICAgIHByb3ZpZGVkIGBob3N0ZWRab25lYC5cbiAgICovXG4gIHJlYWRvbmx5IGNlcnQ6IGNlcnRpZmljYXRlbWFuYWdlci5JQ2VydGlmaWNhdGU7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIGNlcnRpZmljYXRlIHNob3VsZCBiZSBtb25pdG9yZWQgZm9yIGV4cGlyYXRpb24sIG1lYW5pbmcgaGlnaFxuICAgKiBzZXZlcml0eSBhbGFybXMgd2lsbCBiZSByYWlzZWQgaWYgaXQgaXMgZHVlIHRvIGV4cGlyZSBpbiBsZXNzIHRoYW4gNDUgZGF5cy5cbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgbW9uaXRvckNlcnRpZmljYXRlRXhwaXJhdGlvbj86IGJvb2xlYW47XG59XG5cbi8qKlxuICogQ2xvdWRXYXRjaCBhbGFybSBhY3Rpb25zIHRvIHBlcmZvcm0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQWxhcm1BY3Rpb25zIHtcbiAgLyoqXG4gICAqIFRoZSBBUk4gb2YgdGhlIENsb3VkV2F0Y2ggYWxhcm0gYWN0aW9uIHRvIHRha2UgZm9yIGFsYXJtcyBvZiBoaWdoLXNldmVyaXR5XG4gICAqIGFsYXJtcy5cbiAgICpcbiAgICogVGhpcyBtdXN0IGJlIGFuIEFSTiB0aGF0IGNhbiBiZSB1c2VkIHdpdGggQ2xvdWRXYXRjaCBhbGFybXMuXG4gICAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvbkNsb3VkV2F0Y2gvbGF0ZXN0L21vbml0b3JpbmcvQWxhcm1UaGF0U2VuZHNFbWFpbC5odG1sI2FsYXJtcy1hbmQtYWN0aW9uc1xuICAgKi9cbiAgcmVhZG9ubHkgaGlnaFNldmVyaXR5Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgQ2xvdWRXYXRjaCBhbGFybSBhY3Rpb24gdG8gdGFrZSBmb3IgYWxhcm1zIG9mIGhpZ2gtc2V2ZXJpdHkgYWxhcm1zLlxuICAgKlxuICAgKiBUaGlzIG11c3QgYmUgYW4gQVJOIHRoYXQgY2FuIGJlIHVzZWQgd2l0aCBDbG91ZFdhdGNoIGFsYXJtcy5cbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uQ2xvdWRXYXRjaC9sYXRlc3QvbW9uaXRvcmluZy9BbGFybVRoYXRTZW5kc0VtYWlsLmh0bWwjYWxhcm1zLWFuZC1hY3Rpb25zXG4gICAqL1xuICByZWFkb25seSBoaWdoU2V2ZXJpdHlBY3Rpb24/OiBJQWxhcm1BY3Rpb247XG5cbiAgLyoqXG4gICAqIFRoZSBBUk4gb2YgdGhlIENsb3VkV2F0Y2ggYWxhcm0gYWN0aW9uIHRvIHRha2UgZm9yIGFsYXJtcyBvZiBub3JtYWxcbiAgICogc2V2ZXJpdHkuXG4gICAqXG4gICAqIFRoaXMgbXVzdCBiZSBhbiBBUk4gdGhhdCBjYW4gYmUgdXNlZCB3aXRoIENsb3VkV2F0Y2ggYWxhcm1zLlxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25DbG91ZFdhdGNoL2xhdGVzdC9tb25pdG9yaW5nL0FsYXJtVGhhdFNlbmRzRW1haWwuaHRtbCNhbGFybXMtYW5kLWFjdGlvbnNcbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBhY3Rpb25zIGFyZSB0YWtlbiBpbiByZXNwb25zZSB0byBhbGFybXMgb2Ygbm9ybWFsIHNldmVyaXR5XG4gICAqL1xuICByZWFkb25seSBub3JtYWxTZXZlcml0eT86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIENsb3VkV2F0Y2ggYWxhcm0gYWN0aW9uIHRvIHRha2UgZm9yIGFsYXJtcyBvZiBub3JtYWwgc2V2ZXJpdHkuXG4gICAqXG4gICAqIFRoaXMgbXVzdCBiZSBhbiBBUk4gdGhhdCBjYW4gYmUgdXNlZCB3aXRoIENsb3VkV2F0Y2ggYWxhcm1zLlxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25DbG91ZFdhdGNoL2xhdGVzdC9tb25pdG9yaW5nL0FsYXJtVGhhdFNlbmRzRW1haWwuaHRtbCNhbGFybXMtYW5kLWFjdGlvbnNcbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBhY3Rpb25zIGFyZSB0YWtlbiBpbiByZXNwb25zZSB0byBhbGFybXMgb2Ygbm9ybWFsIHNldmVyaXR5XG4gICAqL1xuICByZWFkb25seSBub3JtYWxTZXZlcml0eUFjdGlvbj86IElBbGFybUFjdGlvbjtcbn1cbiJdfQ==
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2FwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEscUVBQXFFOzs7Ozs7Ozs7Ozs7Ozs7O0FBTXJFLDBEQUF3QztBQUN4Qyw2REFBMkM7QUFDM0MscURBQW1DO0FBQ25DLG1EQUFpQztBQUNqQywyREFBeUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyB0aGlzIGZpbGUgaW5jbHVkZXMgdHlwZXMgdGhhdCBhcmUgcGFydCBvZiB0aGUgbGlicmFyeSdzIHB1YmxpYyBBUElcblxuaW1wb3J0ICogYXMgY2VydGlmaWNhdGVtYW5hZ2VyIGZyb20gJ2F3cy1jZGstbGliL2F3cy1jZXJ0aWZpY2F0ZW1hbmFnZXInO1xuaW1wb3J0IHsgSUFsYXJtQWN0aW9uIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWNsb3Vkd2F0Y2gnO1xuaW1wb3J0ICogYXMgcm91dGU1MyBmcm9tICdhd3MtY2RrLWxpYi9hd3Mtcm91dGU1Myc7XG5cbmV4cG9ydCAqIGZyb20gJy4vYmFja2VuZC9kZW55LWxpc3QvYXBpJztcbmV4cG9ydCAqIGZyb20gJy4vYmFja2VuZC9saWNlbnNlLWxpc3QvYXBpJztcbmV4cG9ydCAqIGZyb20gJy4vY29kZWFydGlmYWN0L2FwaSc7XG5leHBvcnQgKiBmcm9tICcuL21vbml0b3JpbmcvYXBpJztcbmV4cG9ydCAqIGZyb20gJy4vb3ZlcnZpZXctZGFzaGJvYXJkL2FwaSc7XG5cbi8qKlxuICogRG9tYWluIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSB3ZWJzaXRlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIERvbWFpbiB7XG4gIC8qKlxuICAgKiBUaGUgcm9vdCBkb21haW4gbmFtZSB3aGVyZSB0aGlzIGluc3RhbmNlIG9mIENvbnN0cnVjdCBIdWIgd2lsbCBiZSBzZXJ2ZWQuXG4gICAqL1xuICByZWFkb25seSB6b25lOiByb3V0ZTUzLklIb3N0ZWRab25lO1xuXG4gIC8qKlxuICAgKiBUaGUgY2VydGlmaWNhdGUgdG8gdXNlIGZvciBzZXJ2aW5nIHRoZSBDb25zdHJ1Y3QgSHViIG92ZXIgYSBjdXN0b20gZG9tYWluLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGEgRE5TLVZhbGlkYXRlZCBjZXJ0aWZpY2F0ZSB3aWxsIGJlIHByb3Zpc2lvbmVkIHVzaW5nIHRoZVxuICAgKiAgICAgICAgICAgIHByb3ZpZGVkIGBob3N0ZWRab25lYC5cbiAgICovXG4gIHJlYWRvbmx5IGNlcnQ6IGNlcnRpZmljYXRlbWFuYWdlci5JQ2VydGlmaWNhdGU7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIGNlcnRpZmljYXRlIHNob3VsZCBiZSBtb25pdG9yZWQgZm9yIGV4cGlyYXRpb24sIG1lYW5pbmcgaGlnaFxuICAgKiBzZXZlcml0eSBhbGFybXMgd2lsbCBiZSByYWlzZWQgaWYgaXQgaXMgZHVlIHRvIGV4cGlyZSBpbiBsZXNzIHRoYW4gNDUgZGF5cy5cbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgbW9uaXRvckNlcnRpZmljYXRlRXhwaXJhdGlvbj86IGJvb2xlYW47XG59XG5cbi8qKlxuICogQ2xvdWRXYXRjaCBhbGFybSBhY3Rpb25zIHRvIHBlcmZvcm0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQWxhcm1BY3Rpb25zIHtcbiAgLyoqXG4gICAqIFRoZSBBUk4gb2YgdGhlIENsb3VkV2F0Y2ggYWxhcm0gYWN0aW9uIHRvIHRha2UgZm9yIGFsYXJtcyBvZiBoaWdoLXNldmVyaXR5XG4gICAqIGFsYXJtcy5cbiAgICpcbiAgICogVGhpcyBtdXN0IGJlIGFuIEFSTiB0aGF0IGNhbiBiZSB1c2VkIHdpdGggQ2xvdWRXYXRjaCBhbGFybXMuXG4gICAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvbkNsb3VkV2F0Y2gvbGF0ZXN0L21vbml0b3JpbmcvQWxhcm1UaGF0U2VuZHNFbWFpbC5odG1sI2FsYXJtcy1hbmQtYWN0aW9uc1xuICAgKi9cbiAgcmVhZG9ubHkgaGlnaFNldmVyaXR5Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgQ2xvdWRXYXRjaCBhbGFybSBhY3Rpb24gdG8gdGFrZSBmb3IgYWxhcm1zIG9mIGhpZ2gtc2V2ZXJpdHkgYWxhcm1zLlxuICAgKlxuICAgKiBUaGlzIG11c3QgYmUgYW4gQVJOIHRoYXQgY2FuIGJlIHVzZWQgd2l0aCBDbG91ZFdhdGNoIGFsYXJtcy5cbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uQ2xvdWRXYXRjaC9sYXRlc3QvbW9uaXRvcmluZy9BbGFybVRoYXRTZW5kc0VtYWlsLmh0bWwjYWxhcm1zLWFuZC1hY3Rpb25zXG4gICAqL1xuICByZWFkb25seSBoaWdoU2V2ZXJpdHlBY3Rpb24/OiBJQWxhcm1BY3Rpb247XG5cbiAgLyoqXG4gICAqIFRoZSBBUk4gb2YgdGhlIENsb3VkV2F0Y2ggYWxhcm0gYWN0aW9uIHRvIHRha2UgZm9yIGFsYXJtcyBvZiBtZWRpdW0tc2V2ZXJpdHlcbiAgICogYWxhcm1zLlxuICAgKlxuICAgKiBUaGlzIG11c3QgYmUgYW4gQVJOIHRoYXQgY2FuIGJlIHVzZWQgd2l0aCBDbG91ZFdhdGNoIGFsYXJtcy5cbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uQ2xvdWRXYXRjaC9sYXRlc3QvbW9uaXRvcmluZy9BbGFybVRoYXRTZW5kc0VtYWlsLmh0bWwjYWxhcm1zLWFuZC1hY3Rpb25zXG4gICAqL1xuICByZWFkb25seSBtZWRpdW1TZXZlcml0eT86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIENsb3VkV2F0Y2ggYWxhcm0gYWN0aW9uIHRvIHRha2UgZm9yIGFsYXJtcyBvZiBtZWRpdW0tc2V2ZXJpdHkgYWxhcm1zLlxuICAgKlxuICAgKiBUaGlzIG11c3QgYmUgYW4gQVJOIHRoYXQgY2FuIGJlIHVzZWQgd2l0aCBDbG91ZFdhdGNoIGFsYXJtcy5cbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uQ2xvdWRXYXRjaC9sYXRlc3QvbW9uaXRvcmluZy9BbGFybVRoYXRTZW5kc0VtYWlsLmh0bWwjYWxhcm1zLWFuZC1hY3Rpb25zXG4gICAqL1xuICByZWFkb25seSBtZWRpdW1TZXZlcml0eUFjdGlvbj86IElBbGFybUFjdGlvbjtcblxuICAvKipcbiAgICogVGhlIEFSTiBvZiB0aGUgQ2xvdWRXYXRjaCBhbGFybSBhY3Rpb24gdG8gdGFrZSBmb3IgYWxhcm1zIG9mIG5vcm1hbFxuICAgKiBzZXZlcml0eS5cbiAgICpcbiAgICogVGhpcyBtdXN0IGJlIGFuIEFSTiB0aGF0IGNhbiBiZSB1c2VkIHdpdGggQ2xvdWRXYXRjaCBhbGFybXMuXG4gICAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvbkNsb3VkV2F0Y2gvbGF0ZXN0L21vbml0b3JpbmcvQWxhcm1UaGF0U2VuZHNFbWFpbC5odG1sI2FsYXJtcy1hbmQtYWN0aW9uc1xuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIGFjdGlvbnMgYXJlIHRha2VuIGluIHJlc3BvbnNlIHRvIGFsYXJtcyBvZiBub3JtYWwgc2V2ZXJpdHlcbiAgICovXG4gIHJlYWRvbmx5IG5vcm1hbFNldmVyaXR5Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgQ2xvdWRXYXRjaCBhbGFybSBhY3Rpb24gdG8gdGFrZSBmb3IgYWxhcm1zIG9mIG5vcm1hbCBzZXZlcml0eS5cbiAgICpcbiAgICogVGhpcyBtdXN0IGJlIGFuIEFSTiB0aGF0IGNhbiBiZSB1c2VkIHdpdGggQ2xvdWRXYXRjaCBhbGFybXMuXG4gICAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvbkNsb3VkV2F0Y2gvbGF0ZXN0L21vbml0b3JpbmcvQWxhcm1UaGF0U2VuZHNFbWFpbC5odG1sI2FsYXJtcy1hbmQtYWN0aW9uc1xuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIGFjdGlvbnMgYXJlIHRha2VuIGluIHJlc3BvbnNlIHRvIGFsYXJtcyBvZiBub3JtYWwgc2V2ZXJpdHlcbiAgICovXG4gIHJlYWRvbmx5IG5vcm1hbFNldmVyaXR5QWN0aW9uPzogSUFsYXJtQWN0aW9uO1xufVxuIl19
@@ -227,6 +227,13 @@ export declare class ConstructHub extends Construct implements iam.IGrantable {
227
227
  * issue.
228
228
  */
229
229
  get highSeverityAlarms(): cw.IAlarm[];
230
+ /**
231
+ * Returns a list of all low-severity alarms from this ConstructHub instance.
232
+ * These do not necessitate immediate attention, as they do not have direct
233
+ * customer-visible impact, or handling is not time-sensitive. They indicate
234
+ * that something unusual (not necessarily bad) is happening.
235
+ */
236
+ get mediumSeverityAlarms(): cw.IAlarm[];
230
237
  /**
231
238
  * Returns a list of all low-severity alarms from this ConstructHub instance.
232
239
  * These do not necessitate immediate attention, as they do not have direct
@@ -260,6 +260,16 @@ class ConstructHub extends constructs_1.Construct {
260
260
  // Note: the array is already returned by-copy by Monitoring, so not copying again.
261
261
  return this.monitoring.highSeverityAlarms;
262
262
  }
263
+ /**
264
+ * Returns a list of all low-severity alarms from this ConstructHub instance.
265
+ * These do not necessitate immediate attention, as they do not have direct
266
+ * customer-visible impact, or handling is not time-sensitive. They indicate
267
+ * that something unusual (not necessarily bad) is happening.
268
+ */
269
+ get mediumSeverityAlarms() {
270
+ // Note: the array is already returned by-copy by Monitoring, so not copying again.
271
+ return this.monitoring.mediumSeverityAlarms;
272
+ }
263
273
  /**
264
274
  * Returns a list of all low-severity alarms from this ConstructHub instance.
265
275
  * These do not necessitate immediate attention, as they do not have direct
@@ -274,7 +284,7 @@ class ConstructHub extends constructs_1.Construct {
274
284
  * Returns a list of all alarms configured by this ConstructHub instance.
275
285
  */
276
286
  get allAlarms() {
277
- return [...this.highSeverityAlarms, ...this.lowSeverityAlarms];
287
+ return [...this.highSeverityAlarms, ...this.lowSeverityAlarms, ...this.mediumSeverityAlarms];
278
288
  }
279
289
  get grantPrincipal() {
280
290
  return this.ingestion.grantPrincipal;
@@ -393,7 +403,7 @@ class ConstructHub extends constructs_1.Construct {
393
403
  }
394
404
  exports.ConstructHub = ConstructHub;
395
405
  _a = JSII_RTTI_SYMBOL_1;
396
- ConstructHub[_a] = { fqn: "construct-hub.ConstructHub", version: "0.4.412" };
406
+ ConstructHub[_a] = { fqn: "construct-hub.ConstructHub", version: "0.4.413" };
397
407
  /**
398
408
  * How possibly risky operations (such as doc-generation, which requires
399
409
  * installing the indexed packages in order to trans-literate sample code) are
@@ -433,4 +443,4 @@ var Isolation;
433
443
  */
434
444
  Isolation[Isolation["NO_INTERNET_ACCESS"] = 2] = "NO_INTERNET_ACCESS";
435
445
  })(Isolation || (exports.Isolation = Isolation = {}));
436
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RydWN0LWh1Yi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9jb25zdHJ1Y3QtaHViLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsc0dBQTJFO0FBQzNFLDZDQUFvRDtBQUVwRCwyQ0FBMkM7QUFFM0MsaURBQTRFO0FBRTVFLHlDQUF5QztBQUN6QywrQ0FBdUQ7QUFHdkQsMkNBQXVDO0FBQ3ZDLHlFQUE0RTtBQUU1RSx1Q0FBZ0Q7QUFFaEQseURBQXFEO0FBQ3JELG1EQUFnRDtBQUNoRCx5REFBcUQ7QUFDckQsMkRBQXdEO0FBQ3hELDJEQUF1RDtBQUN2RCwyREFBNkQ7QUFDN0QsMERBQTZFO0FBQzdFLCtEQUEyRDtBQUMzRCwyREFBdUQ7QUFDdkQsMERBQXVEO0FBQ3ZELHVEQUF5RTtBQUN6RSw2Q0FBMEM7QUFDMUMsNkRBQXlEO0FBRXpELHVEQUEwQztBQUkxQywwQ0FBZ0Q7QUFDaEQsaURBQTZDO0FBQzdDLHFDQU1rQjtBQWtPbEI7O0dBRUc7QUFDSCxNQUFhLFlBQWEsU0FBUSxzQkFBUztJQVV6QyxZQUNFLEtBQWdCLEVBQ2hCLEVBQVUsRUFDVixRQUEyQixFQUFFO1FBRTdCLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFakIsSUFDRSxLQUFLLENBQUMscUJBQXFCLElBQUksSUFBSTtZQUNuQyxLQUFLLENBQUMsc0JBQXNCLElBQUksSUFBSSxFQUNwQyxDQUFDO1lBQ0QsTUFBTSxJQUFJLEtBQUssQ0FDYiwwSEFBMEgsQ0FDM0gsQ0FBQztRQUNKLENBQUM7UUFFRCxNQUFNLHVCQUF1QixHQUFHLEtBQUssQ0FBQyxpQkFBaUIsRUFBRSxpQkFBaUI7WUFDeEUsQ0FBQyxDQUFDLElBQUk7WUFDTixDQUFDLENBQUMsS0FBSyxDQUFDO1FBRVYsTUFBTSxjQUFjLEdBQUcsMEJBQWdCLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRTtZQUN4RCxRQUFRLEVBQUUsS0FBSyxDQUFDLGVBQWU7U0FD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QkFBOEIsQ0FBQyxjQUFjO2dCQUMxRCxPQUFPLEVBQUUsVUFBVTtnQkFDbkIsY0FBYzthQUNmLENBQUM7U0FDSCxDQUFDO1FBRUYsNEVBQTRFO1FBQzVFLHFEQUFxRDtRQUNyRCxZQUFZLENBQUMsRUFBRSxDQUFDLFdBQVcsQ0FDekIsSUFBSSx5QkFBZSxDQUFDO1lBQ2xCLE1BQU0sRUFBRSxnQkFBTSxDQUFDLEtBQUs7WUFDcEIsT0FBTyxFQUFFLENBQUMsY0FBYyxDQUFDO1lBQ3pCLFNBQVMsRUFBRTtnQkFDVCx1Q0FBdUM7Z0JBQ3ZDLEdBQUcsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxZQUFZLENBQUMsV0FBVyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO2dCQUMxRCxpQ0FBaUM7Z0JBQ2pDLHFCQUFxQixtQkFBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLDBCQUEwQjthQUNyRTtZQUNELHdFQUF3RTtZQUN4RSx3RUFBd0U7WUFDeEUsb0JBQW9CO1lBQ3BCLFVBQVUsRUFBRSxDQUFDLElBQUksc0JBQVksRUFBRSxDQUFDO1lBQ2hDLEdBQUcsRUFBRSw0QkFBNEI7U0FDbEMsQ0FBQyxDQUNILENBQUM7UUFFRixPQUFPLEVBQUUsR0FBRyxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsaUJBQWlCLEVBQUUsY0FBYyxFQUFFLENBQUM7SUFDOUUsQ0FBQzs7QUF0Ykgsb0NBdWJDOzs7QUFFRDs7Ozs7R0FLRztBQUNILElBQVksU0FpQ1g7QUFqQ0QsV0FBWSxTQUFTO0lBQ25COzs7Ozs7Ozs7Ozs7T0FZRztJQUNILG1GQUF5QixDQUFBO0lBRXpCOzs7O09BSUc7SUFDSCwrRUFBdUIsQ0FBQTtJQUV2Qjs7Ozs7Ozs7T0FRRztJQUNILHFFQUFrQixDQUFBO0FBQ3BCLENBQUMsRUFqQ1csU0FBUyx5QkFBVCxTQUFTLFFBaUNwQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFwcGxpY2F0aW9uIH0gZnJvbSAnQGF3cy1jZGsvYXdzLXNlcnZpY2VjYXRhbG9nYXBwcmVnaXN0cnktYWxwaGEnO1xuaW1wb3J0IHsgRHVyYXRpb24sIFN0YWNrLCBUYWdzIH0gZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0ICogYXMgY3cgZnJvbSAnYXdzLWNkay1saWIvYXdzLWNsb3Vkd2F0Y2gnO1xuaW1wb3J0ICogYXMgZWMyIGZyb20gJ2F3cy1jZGstbGliL2F3cy1lYzInO1xuaW1wb3J0ICogYXMgaWFtIGZyb20gJ2F3cy1jZGstbGliL2F3cy1pYW0nO1xuaW1wb3J0IHsgQW55UHJpbmNpcGFsLCBFZmZlY3QsIFBvbGljeVN0YXRlbWVudCB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1pYW0nO1xuaW1wb3J0IHsgUmV0ZW50aW9uRGF5cyB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1sb2dzJztcbmltcG9ydCAqIGFzIHMzIGZyb20gJ2F3cy1jZGstbGliL2F3cy1zMyc7XG5pbXBvcnQgeyBCbG9ja1B1YmxpY0FjY2VzcyB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1zMyc7XG5pbXBvcnQgKiBhcyBzZWNyZXRzbWFuYWdlciBmcm9tICdhd3MtY2RrLWxpYi9hd3Mtc2VjcmV0c21hbmFnZXInO1xuaW1wb3J0ICogYXMgc3FzIGZyb20gJ2F3cy1jZGstbGliL2F3cy1zcXMnO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgeyBjcmVhdGVSZXN0cmljdGVkU2VjdXJpdHlHcm91cHMgfSBmcm9tICcuL19saW1pdGVkLWludGVybmV0LWFjY2Vzcyc7XG5pbXBvcnQgeyBBbGFybUFjdGlvbnMsIERvbWFpbiB9IGZyb20gJy4vYXBpJztcbmltcG9ydCB7IERlbnlMaXN0LCBJbmdlc3Rpb24gfSBmcm9tICcuL2JhY2tlbmQnO1xuaW1wb3J0IHsgRGVueUxpc3RSdWxlIH0gZnJvbSAnLi9iYWNrZW5kL2RlbnktbGlzdC9hcGknO1xuaW1wb3J0IHsgRmVlZEJ1aWxkZXIgfSBmcm9tICcuL2JhY2tlbmQvZmVlZC1idWlsZGVyJztcbmltcG9ydCB7IEludmVudG9yeSB9IGZyb20gJy4vYmFja2VuZC9pbnZlbnRvcnknO1xuaW1wb3J0IHsgTGljZW5zZUxpc3QgfSBmcm9tICcuL2JhY2tlbmQvbGljZW5zZS1saXN0JztcbmltcG9ydCB7IE9yY2hlc3RyYXRpb24gfSBmcm9tICcuL2JhY2tlbmQvb3JjaGVzdHJhdGlvbic7XG5pbXBvcnQgeyBQYWNrYWdlU3RhdHMgfSBmcm9tICcuL2JhY2tlbmQvcGFja2FnZS1zdGF0cyc7XG5pbXBvcnQgeyBSZWxlYXNlTm90ZUZldGNoZXIgfSBmcm9tICcuL2JhY2tlbmQvcmVsZWFzZS1ub3Rlcyc7XG5pbXBvcnQgeyBDQVRBTE9HX0tFWSwgU1RPUkFHRV9LRVlfUFJFRklYIH0gZnJvbSAnLi9iYWNrZW5kL3NoYXJlZC9jb25zdGFudHMnO1xuaW1wb3J0IHsgVmVyc2lvblRyYWNrZXIgfSBmcm9tICcuL2JhY2tlbmQvdmVyc2lvbi10cmFja2VyJztcbmltcG9ydCB7IEJhY2tlbmREYXNoYm9hcmQgfSBmcm9tICcuL2JhY2tlbmQtZGFzaGJvYXJkJztcbmltcG9ydCB7IFJlcG9zaXRvcnkgfSBmcm9tICcuL2NvZGVhcnRpZmFjdC9yZXBvc2l0b3J5JztcbmltcG9ydCB7IERvbWFpblJlZGlyZWN0LCBEb21haW5SZWRpcmVjdFNvdXJjZSB9IGZyb20gJy4vZG9tYWluLXJlZGlyZWN0JztcbmltcG9ydCB7IE1vbml0b3JpbmcgfSBmcm9tICcuL21vbml0b3JpbmcnO1xuaW1wb3J0IHsgT3ZlcnZpZXdEYXNoYm9hcmQgfSBmcm9tICcuL292ZXJ2aWV3LWRhc2hib2FyZCc7XG5pbXBvcnQgeyBJUGFja2FnZVNvdXJjZSB9IGZyb20gJy4vcGFja2FnZS1zb3VyY2UnO1xuaW1wb3J0IHsgTnBtSnMgfSBmcm9tICcuL3BhY2thZ2Utc291cmNlcyc7XG5pbXBvcnQgeyBQYWNrYWdlVGFnIH0gZnJvbSAnLi9wYWNrYWdlLXRhZyc7XG5pbXBvcnQgeyBQYWNrYWdlVGFnR3JvdXAgfSBmcm9tICcuL3BhY2thZ2UtdGFnLWdyb3VwJztcbmltcG9ydCB7IFByZWxvYWRGaWxlIH0gZnJvbSAnLi9wcmVsb2FkLWZpbGUnO1xuaW1wb3J0IHsgUzNTdG9yYWdlRmFjdG9yeSB9IGZyb20gJy4vczMvc3RvcmFnZSc7XG5pbXBvcnQgeyBTcGR4TGljZW5zZSB9IGZyb20gJy4vc3BkeC1saWNlbnNlJztcbmltcG9ydCB7XG4gIFdlYkFwcCxcbiAgUGFja2FnZUxpbmtDb25maWcsXG4gIEZlYXR1cmVkUGFja2FnZXMsXG4gIEZlYXR1cmVGbGFncyxcbiAgQ2F0ZWdvcnksXG59IGZyb20gJy4vd2ViYXBwJztcbmltcG9ydCB7IElTdGF0ZU1hY2hpbmUgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3Mtc3RlcGZ1bmN0aW9ucyc7XG5cbi8qKlxuICogQ29uZmlndXJhdGlvbiBmb3IgZ2VuZXJhdGluZyBSU1MgYW5kIEFUT00gZmVlZCBmb3IgdGhlIGxhdGVzdCBwYWNrYWdlc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIEZlZWRDb25maWd1cmF0aW9uIHtcbiAgLyoqXG4gICAqIEdpdGh1YiB0b2tlbiBmb3IgZ2VuZXJhdGluZyByZWxlYXNlIG5vdGVzLiBXaGVuIG1pc3Npbmcgbm8gcmVsZWFzZSBub3RlcyB3aWxsIGJlIGluY2x1ZGVkIGluIHRoZSBnZW5lcmF0ZWQgUlNTL0FUT00gZmVlZFxuICAgKi9cbiAgcmVhZG9ubHkgZ2l0aHViVG9rZW5TZWNyZXQ/OiBzZWNyZXRzbWFuYWdlci5JU2VjcmV0O1xuXG4gIC8qKlxuICAgKiBUaXRsZSB1c2VkIGluIHRoZSBnZW5lcmF0ZWQgZmVlZFxuICAgKi9cbiAgcmVhZG9ubHkgZmVlZFRpdGxlPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBkZXNjcmlwdGlvbiB1c2VkIGluIHRoZSBnZW5lcmF0ZWQgZmVlZFxuICAgKi9cbiAgcmVhZG9ubHkgZmVlZERlc2NyaXB0aW9uPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFByb3BzIGZvciBgQ29uc3RydWN0SHViYC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb25zdHJ1Y3RIdWJQcm9wcyB7XG4gIC8qKlxuICAgKiBDb25uZWN0IHRoZSBodWIgdG8gYSBkb21haW4gKHJlcXVpcmVzIGEgaG9zdGVkIHpvbmUgYW5kIGEgY2VydGlmaWNhdGUpLlxuICAgKi9cbiAgcmVhZG9ubHkgZG9tYWluPzogRG9tYWluO1xuXG4gIC8qKlxuICAgKiBBY3Rpb25zIHRvIHBlcmZvcm0gd2hlbiBhbGFybXMgYXJlIHNldC5cbiAgICovXG4gIHJlYWRvbmx5IGFsYXJtQWN0aW9ucz86IEFsYXJtQWN0aW9ucztcblxuICAvKipcbiAgICogV2hldGhlciBjb21wdXRlIGVudmlyb25tZW50cyBmb3Igc2Vuc2l0aXZlIHRhc2tzICh3aGljaCBvcGVyYXRlIG9uXG4gICAqIHVuLXRydXN0ZWQgY29tcGxleCBkYXRhLCBzdWNoIGFzIHRoZSB0cmFuc2xpdGVyYXRvciwgd2hpY2ggb3BlcmF0ZXMgd2l0aFxuICAgKiBleHRlcm5hbGx5LXNvdXJjZWQgbnBtIHBhY2thZ2UgdGFyYmFsbHMpIHNob3VsZCBydW4gaW4gbmV0d29yay1pc29sYXRlZFxuICAgKiBlbnZpcm9ubWVudHMuIFRoaXMgaW1wbGllcyB0aGUgY3JlYXRpb24gb2YgYWRkaXRvbmFsIHJlc291cmNlcywgaW5jbHVkaW5nOlxuICAgKlxuICAgKiAtIEEgVlBDIHdpdGggb25seSBpc29sYXRlZCBzdWJuZXRzLlxuICAgKiAtIFZQQyBFbmRwb2ludHMgKENsb3VkV2F0Y2ggTG9ncywgQ29kZUFydGlmYWN0LCBDb2RlQXJ0aWZhY3QgQVBJLCBTMywgLi4uKVxuICAgKiAtIEEgQ29kZUFydGlmYWN0IFJlcG9zaXRvcnkgd2l0aCBhbiBleHRlcm5hbCBjb25uZWN0aW9uIHRvIG5wbWpzLmNvbVxuICAgKlxuICAgKiBAZGVwcmVjYXRlZCB1c2Ugc2Vuc2l0aXZlVGFza0lzb2xhdGlvbiBpbnN0ZWFkLlxuICAgKi9cbiAgcmVhZG9ubHkgaXNvbGF0ZVNlbnNpdGl2ZVRhc2tzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hldGhlciBjb21wdXRlIGVudmlyb25tZW50cyBmb3Igc2Vuc2l0aXZlIHRhc2tzICh3aGljaCBvcGVyYXRlIG9uXG4gICAqIHVuLXRydXN0ZWQgY29tcGxleCBkYXRhLCBzdWNoIGFzIHRoZSB0cmFuc2xpdGVyYXRvciwgd2hpY2ggb3BlcmF0ZXMgd2l0aFxuICAgKiBleHRlcm5hbGx5LXNvdXJjZWQgbnBtIHBhY2thZ2UgdGFyYmFsbHMpIHNob3VsZCBydW4gaW4gbmV0d29yay1pc29sYXRlZFxuICAgKiBlbnZpcm9ubWVudHMuIFRoaXMgaW1wbGllcyB0aGUgY3JlYXRpb24gb2YgYWRkaXRvbmFsIHJlc291cmNlcywgaW5jbHVkaW5nOlxuICAgKlxuICAgKiAtIEEgVlBDIHdpdGggb25seSBpc29sYXRlZCBzdWJuZXRzLlxuICAgKiAtIFZQQyBFbmRwb2ludHMgKENsb3VkV2F0Y2ggTG9ncywgQ29kZUFydGlmYWN0LCBDb2RlQXJ0aWZhY3QgQVBJLCBTMywgLi4uKVxuICAgKiAtIEEgQ29kZUFydGlmYWN0IFJlcG9zaXRvcnkgd2l0aCBhbiBleHRlcm5hbCBjb25uZWN0aW9uIHRvIG5wbWpzLmNvbVxuICAgKlxuICAgKiBAZGVmYXVsdCBJc29sYXRpb24uTk9fSU5URVJORVRfQUNDRVNTXG4gICAqL1xuICByZWFkb25seSBzZW5zaXRpdmVUYXNrSXNvbGF0aW9uPzogSXNvbGF0aW9uO1xuXG4gIC8qKlxuICAgKiBIb3cgbG9uZyB0byByZXRhaW4gQ2xvdWRXYXRjaCBsb2dzIGZvci5cbiAgICpcbiAgICogQGRlZmF1bHRzIFJldGVudGlvbkRheXMuVEVOX1lFQVJTXG4gICAqL1xuICByZWFkb25seSBsb2dSZXRlbnRpb24/OiBSZXRlbnRpb25EYXlzO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgQ2xvdWRXYXRjaCBkYXNoYm9hcmQgdGhhdCByZXByZXNlbnRzIHRoZSBoZWFsdGggb2YgYmFja2VuZFxuICAgKiBzeXN0ZW1zLlxuICAgKi9cbiAgcmVhZG9ubHkgYmFja2VuZERhc2hib2FyZE5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEEgbGlzdCBvZiBwYWNrYWdlcyB0byBibG9jayBmcm9tIHRoZSBjb25zdHJ1Y3QgaHViLlxuICAgKlxuICAgKiBAZGVmYXVsdCBbXVxuICAgKi9cbiAgcmVhZG9ubHkgZGVueUxpc3Q/OiBEZW55TGlzdFJ1bGVbXTtcblxuICAvKipcbiAgICogVGhlIHBhY2thZ2Ugc291cmNlcyB0byByZWdpc3RlciB3aXRoIHRoaXMgQ29uc3RydWN0SHViIGluc3RhbmNlLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGEgc3RhbmRhcmQgbnBtanMuY29tIHBhY2thZ2Ugc291cmNlIHdpbGwgYmUgY29uZmlndXJlZC5cbiAgICovXG4gIHJlYWRvbmx5IHBhY2thZ2VTb3VyY2VzPzogSVBhY2thZ2VTb3VyY2VbXTtcblxuICAvKipcbiAgICogVGhlIGFsbG93ZWQgbGljZW5zZXMgZm9yIHBhY2thZ2VzIGluZGV4ZWQgYnkgdGhpcyBpbnN0YW5jZSBvZiBDb25zdHJ1Y3RIdWIuXG4gICAqXG4gICAqIEBkZWZhdWx0IFsuLi5TcGR4TGljZW5zZS5hcGFjaGUoKSwuLi5TcGR4TGljZW5zZS5ic2QoKSwuLi5TcGR4TGljZW5zZS5jZGRsKCksLi4uU3BkeExpY2Vuc2UuZXBsKCksU3BkeExpY2Vuc2UuSVNDLC4uLlNwZHhMaWNlbnNlLm1pdCgpLFNwZHhMaWNlbnNlLk1QTF8yXzBdXG4gICAqL1xuICByZWFkb25seSBhbGxvd2VkTGljZW5zZXM/OiBTcGR4TGljZW5zZVtdO1xuXG4gIC8qKlxuICAgKiBXaGVuIHVzaW5nIGEgQ29kZUFydGlmYWN0IHBhY2thZ2Ugc291cmNlLCBpdCBpcyBvZnRlbiBkZXNpcmFibGUgdG8gaGF2ZVxuICAgKiBDb25zdHJ1Y3RIdWIgcHJvdmlzaW9uIGl0J3MgaW50ZXJuYWwgQ29kZUFydGlmYWN0IHJlcG9zaXRvcnkgaW4gdGhlIHNhbWVcbiAgICogQ29kZUFydGlmYWN0IGRvbWFpbiwgYW5kIHRvIGNvbmZpZ3VyZSB0aGUgcGFja2FnZSBzb3VyY2UgcmVwb3NpdG9yeSBhcyBhblxuICAgKiB1cHN0cmVhbSBvZiB0aGUgaW50ZXJuYWwgcmVwb3NpdG9yeS4gVGhpcyB3YXksIGFsbCBwYWNrYWdlcyBpbiB0aGUgc291cmNlXG4gICAqIGFyZSBhdmFpbGFibGUgdG8gQ29uc3RydWN0SHViJ3MgYmFja2VuZCBwcm9jZXNzaW5nLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vbmUuXG4gICAqL1xuICByZWFkb25seSBjb2RlQXJ0aWZhY3REb21haW4/OiBDb2RlQXJ0aWZhY3REb21haW5Qcm9wcztcblxuICAvKipcbiAgICogQ29uZmlndXJhdGlvbiBmb3IgY3VzdG9tIHBhY2thZ2UgcGFnZSBsaW5rcy5cbiAgICovXG4gIHJlYWRvbmx5IHBhY2thZ2VMaW5rcz86IFBhY2thZ2VMaW5rQ29uZmlnW107XG5cbiAgLyoqXG4gICAqIENvbmZpZ3VyYXRpb24gZm9yIGN1c3RvbSBwYWNrYWdlIHRhZ3NcbiAgICovXG4gIHJlYWRvbmx5IHBhY2thZ2VUYWdzPzogUGFja2FnZVRhZ1tdO1xuXG4gIC8qKlxuICAgKiBPcHRpb25hbCBjb25maWd1cmF0aW9uIGZvciBncm91cGluZyBjdXN0b20gcGFja2FnZSB0YWdzXG4gICAqL1xuICByZWFkb25seSBwYWNrYWdlVGFnR3JvdXBzPzogUGFja2FnZVRhZ0dyb3VwW107XG5cbiAgLyoqXG4gICAqIENvbmZpZ3VyYXRpb24gZm9yIHBhY2thZ2VzIHRvIGZlYXR1cmUgb24gdGhlIGhvbWUgcGFnZS5cbiAgICogQGRlZmF1bHQgLSBEaXNwbGF5IHRoZSAxMCBtb3N0IHJlY2VudGx5IHVwZGF0ZWQgcGFja2FnZXNcbiAgICovXG4gIHJlYWRvbmx5IGZlYXR1cmVkUGFja2FnZXM/OiBGZWF0dXJlZFBhY2thZ2VzO1xuXG4gIC8qKlxuICAgKiBDb25maWd1cmUgZmVhdHVyZSBmbGFncyBmb3IgdGhlIHdlYiBhcHAuXG4gICAqL1xuICByZWFkb25seSBmZWF0dXJlRmxhZ3M/OiBGZWF0dXJlRmxhZ3M7XG5cbiAgLyoqXG4gICAqIENvbmZpZ3VyZSB3aGV0aGVyIG9yIG5vdCB0aGUgYmFja2VuZCBzaG91bGQgcGVyaW9kaWNhbGx5IHF1ZXJ5IE5QTVxuICAgKiBmb3IgdGhlIG51bWJlciBvZiBkb3dubG9hZHMgYSBwYWNrYWdlIGhhcyBpbiB0aGUgcGFzdCB3ZWVrLCBhbmRcbiAgICogZGlzcGxheSBkb3dubG9hZCBjb3VudHMgb24gdGhlIHdlYiBhcHAuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gdHJ1ZSBpZiBwYWNrYWdlU291cmNlcyBpcyBub3Qgc3BlY2lmaWVkICh0aGUgZGVmYXVsdHMgYXJlXG4gICAqIHVzZWQpLCBmYWxzZSBvdGhlcndpc2VcbiAgICovXG4gIHJlYWRvbmx5IGZldGNoUGFja2FnZVN0YXRzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQnJvd3NlIGNhdGVnb3JpZXMuIEVhY2ggY2F0ZWdvcnkgd2lsbCBhcHBlYXIgaW4gdGhlIGhvbWUgcGFnZSBhcyBhIGJ1dHRvblxuICAgKiB3aXRoIGEgbGluayB0byB0aGUgcmVsZXZhbnQgc2VhcmNoIHF1ZXJ5LlxuICAgKi9cbiAgcmVhZG9ubHkgY2F0ZWdvcmllcz86IENhdGVnb3J5W107XG5cbiAgLyoqXG4gICAqIFdpcmUgY29uc3RydWN0IGh1YiB0byB1c2UgdGhlIGZhaWxvdmVyIHN0b3JhZ2UgYnVja2V0cy5cbiAgICpcbiAgICogRG8gbm90IGFjdGl2YXRlIHRoaXMgcHJvcGVydHkgdW50aWwgeW91J3ZlIHBvcHVsYXRlZCB5b3VyIGZhaWxvdmVyIGJ1Y2tldHNcbiAgICogd2l0aCB0aGUgbmVjZXNzYXJ5IGRhdGEuXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL2Nka2xhYnMvY29uc3RydWN0LWh1Yi9ibG9iL2Rldi9kb2NzL29wZXJhdG9yLXJ1bmJvb2subWQjc3RvcmFnZS1kaXNhc3RlclxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgZmFpbG92ZXJTdG9yYWdlPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogSG93IGZyZXF1ZW50bHkgYWxsIHBhY2thZ2VzIHNob3VsZCBnZXQgZnVsbHkgcmVwcm9jZXNzZWQuXG4gICAqXG4gICAqIFNlZSB0aGUgb3BlcmF0b3IgcnVuYm9vayBmb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCByZXByb2Nlc3NpbmcuXG4gICAqIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL2Nka2xhYnMvY29uc3RydWN0LWh1Yi9ibG9iL21haW4vZG9jcy9vcGVyYXRvci1ydW5ib29rLm1kXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbmV2ZXJcbiAgICovXG4gIHJlYWRvbmx5IHJlcHJvY2Vzc0ZyZXF1ZW5jeT86IER1cmF0aW9uO1xuXG4gIC8qKlxuICAgKiBQYWNrYWdlIHZlcnNpb25zIHRoYXQgaGF2ZSBiZWVuIHB1Ymxpc2hlZCBiZWZvcmUgdGhpcyB0aW1lIHdpbmRvdyB3aWxsIG5vdCBiZSByZXByb2Nlc3NlZC5cbiAgICpcbiAgICogQGRlZmF1bHQgRHVyYXRpb24uZGF5cyg5MClcbiAgICovXG4gIHJlYWRvbmx5IHJlcHJvY2Vzc0FnZT86IER1cmF0aW9uO1xuXG4gIC8qKlxuICAgKiBBZGRpdGlvbmFsIGRvbWFpbnMgd2hpY2ggd2lsbCBiZSBzZXQgdXAgdG8gcmVkaXJlY3QgdG8gdGhlIHByaW1hcnlcbiAgICogY29uc3RydWN0IGh1YiBkb21haW4uXG4gICAqXG4gICAqIEBkZWZhdWx0IFtdXG4gICAqL1xuICByZWFkb25seSBhZGRpdGlvbmFsRG9tYWlucz86IERvbWFpblJlZGlyZWN0U291cmNlW107XG5cbiAgLyoqXG4gICAqIEphdmFzY3JpcHQgdG8gcnVuIG9uIHdlYmFwcCBiZWZvcmUgYXBwIGxvYWRzXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gY3JlYXRlIGFuIGVtcHR5IGZpbGVcbiAgICovXG4gIHJlYWRvbmx5IHByZWxvYWRTY3JpcHQ/OiBQcmVsb2FkRmlsZTtcblxuICAvKipcbiAgICogQ3JlYXRlIGFuIEFwcFJlZ2lzdHJ5IGFwcGxpY2F0aW9uIGFzc29jaWF0ZWQgd2l0aCB0aGUgc3RhY2sgY29udGFpbmluZ1xuICAgKiB0aGlzIGNvbnN0cnVjdC5cbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgYXBwUmVnaXN0cnlBcHBsaWNhdGlvbj86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIENvbmZpZ3VyYXRpb24gZm9yIGdlbmVyYXRpbmcgUlNTL0F0b20gZmVlZHMgd2l0aCB0aGUgbGF0ZXN0IHBhY2thZ2VzLiBJZiB0aGUgdmFsdWUgaXMgbWlzc2luZ1xuICAgKiB0aGUgZ2VuZXJhdGVkIFJTUy9BVE9NIGZlZWQgd291bGQgbm90IGNvbnRhaW4gcmVsZWFzZSBub3Rlc1xuICAgKi9cbiAgcmVhZG9ubHkgZmVlZENvbmZpZ3VyYXRpb24/OiBGZWVkQ29uZmlndXJhdGlvbjtcbn1cblxuLyoqXG4gKiBJbmZvcm1hdGlvbiBwZXJ0YWluaW5nIHRvIGFuIGV4aXN0aW5nIENvZGVBcnRpZmFjdCBEb21haW4uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29kZUFydGlmYWN0RG9tYWluUHJvcHMge1xuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIENvZGVBcnRpZmFjdCBkb21haW4uXG4gICAqL1xuICByZWFkb25seSBuYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEFueSB1cHN0cmVhbSByZXBvc2l0b3JpZXMgaW4gdGhpcyBDb2RlQXJ0aWZhY3QgZG9tYWluIHRoYXQgc2hvdWxkIGJlXG4gICAqIGNvbmZpZ3VyZWQgb24gdGhlIGludGVybmFsIENvZGVBcnRpZmFjdCByZXBvc2l0b3J5LlxuICAgKi9cbiAgcmVhZG9ubHkgdXBzdHJlYW1zPzogc3RyaW5nW107XG59XG5cbi8qKlxuICogQ29uc3RydWN0IEh1Yi5cbiAqL1xuZXhwb3J0IGNsYXNzIENvbnN0cnVjdEh1YiBleHRlbmRzIENvbnN0cnVjdCBpbXBsZW1lbnRzIGlhbS5JR3JhbnRhYmxlIHtcbiAgLyoqXG4gICAqIFRoZSBmdW5jdGlvbiBvcGVyYXRvcnMgY2FuIHVzZSB0byByZXByb2Nlc3MgYSBzcGVjaWZpYyBwYWNrYWdlIHZlcnNpb25cbiAgICogdGhyb3VnaCB0aGUgYmFja2VuZCBkYXRhIHBpcGVsaW5lLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHJlZ2VuZXJhdGVBbGxEb2N1bWVudGF0aW9uUGVyUGFja2FnZTogSVN0YXRlTWFjaGluZTtcblxuICBwcml2YXRlIHJlYWRvbmx5IGluZ2VzdGlvbjogSW5nZXN0aW9uO1xuICBwcml2YXRlIHJlYWRvbmx5IG1vbml0b3Jpbmc6IE1vbml0b3Jpbmc7XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgIHNjb3BlOiBDb25zdHJ1Y3QsXG4gICAgaWQ6IHN0cmluZyxcbiAgICBwcm9wczogQ29uc3RydWN0SHViUHJvcHMgPSB7fVxuICApIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgaWYgKFxuICAgICAgcHJvcHMuaXNvbGF0ZVNlbnNpdGl2ZVRhc2tzICE9IG51bGwgJiZcbiAgICAgIHByb3BzLnNlbnNpdGl2ZVRhc2tJc29sYXRpb24gIT0gbnVsbFxuICAgICkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAnU3VwcGx5aW5nIGJvdGggaXNvbGF0ZVNlbnNpdGl2ZVRhc2tzIGFuZCBzZW5zaXRpdmVUYXNrSXNvbGF0aW9uIGlzIG5vdCBzdXBwb3J0ZWQuIFJlbW92ZSB1c2FnZSBvZiBpc29sYXRlU2Vuc2l0aXZlVGFza3MuJ1xuICAgICAgKTtcbiAgICB9XG5cbiAgICBjb25zdCBzaG91bGRGZXRjaFJlbGVhc2VOb3RlcyA9IHByb3BzLmZlZWRDb25maWd1cmF0aW9uPy5naXRodWJUb2tlblNlY3JldFxuICAgICAgPyB0cnVlXG4gICAgICA6IGZhbHNlO1xuXG4gICAgY29uc3Qgc3RvcmFnZUZhY3RvcnkgPSBTM1N0b3JhZ2VGYWN0b3J5LmdldE9yQ3JlYXRlKHRoaXMsIHtcbiAgICAgIGZhaWxvdmVyOiBwcm9wcy5mYWlsb3ZlclN0b3JhZ2UsXG4gICAgfSk7XG5cbiAgICB0aGlzLm1vbml0b3JpbmcgPSBuZXcgTW9uaXRvcmluZyh0aGlzLCAnTW9uaXRvcmluZycsIHtcbiAgICAgIGFsYXJtQWN0aW9uczogcHJvcHMuYWxhcm1BY3Rpb25zLFxuICAgIH0pO1xuXG4gICAgY29uc3Qgb3ZlcnZpZXdEYXNoYm9hcmQgPSBuZXcgT3ZlcnZpZXdEYXNoYm9hcmQodGhpcywgJ092ZXJ2aWV3RGFzaGJvYXJkJywge1xuICAgICAgbGFtYmRhU2VydmljZUFsYXJtVGhyZXNob2xkOiA3MCxcbiAgICAgIGRhc2hib2FyZE5hbWU6IHByb3BzLmJhY2tlbmREYXNoYm9hcmROYW1lXG4gICAgICAgID8gYCR7cHJvcHMuYmFja2VuZERhc2hib2FyZE5hbWV9LW92ZXJ2aWV3YFxuICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICB9KTtcblxuICAgIGNvbnN0IHBhY2thZ2VEYXRhID0gc3RvcmFnZUZhY3RvcnkubmV3QnVja2V0KHRoaXMsICdQYWNrYWdlRGF0YScsIHtcbiAgICAgIGJsb2NrUHVibGljQWNjZXNzOiBCbG9ja1B1YmxpY0FjY2Vzcy5CTE9DS19BTEwsXG4gICAgICBlbmZvcmNlU1NMOiB0cnVlLFxuICAgICAgZW5jcnlwdGlvbjogczMuQnVja2V0RW5jcnlwdGlvbi5TM19NQU5BR0VELFxuICAgICAgbGlmZWN5Y2xlUnVsZXM6IFtcbiAgICAgICAgLy8gQWJvcnQgbXVsdGktcGFydCB1cGxvYWRzIGFmdGVyIDEgZGF5XG4gICAgICAgIHsgYWJvcnRJbmNvbXBsZXRlTXVsdGlwYXJ0VXBsb2FkQWZ0ZXI6IER1cmF0aW9uLmRheXMoMSkgfSxcbiAgICAgICAgLy8gVHJhbnNpdGlvbiBub24tY3VycmVudCBvYmplY3QgdmVyc2lvbnMgdG8gSUEgYWZ0ZXIgMSBtb250aFxuICAgICAgICB7XG4gICAgICAgICAgbm9uY3VycmVudFZlcnNpb25UcmFuc2l0aW9uczogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBzdG9yYWdlQ2xhc3M6IHMzLlN0b3JhZ2VDbGFzcy5JTkZSRVFVRU5UX0FDQ0VTUyxcbiAgICAgICAgICAgICAgdHJhbnNpdGlvbkFmdGVyOiBEdXJhdGlvbi5kYXlzKDMxKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXSxcbiAgICAgICAgfSxcbiAgICAgICAgLy8gUGVybWFuZW50bHkgZGVsZXRlIG5vbi1jdXJyZW50IG9iamVjdCB2ZXJzaW9ucyBhZnRlciAzIG1vbnRoc1xuICAgICAgICB7XG4gICAgICAgICAgbm9uY3VycmVudFZlcnNpb25FeHBpcmF0aW9uOiBEdXJhdGlvbi5kYXlzKDkwKSxcbiAgICAgICAgICBleHBpcmVkT2JqZWN0RGVsZXRlTWFya2VyOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICAvLyBQZXJtYW5lbnRseSBkZWxldGUgbm9uLWN1cnJlbnQgdmVyc2lvbnMgb2YgY2F0YWxvZy5qc29uIGVhcmxpZXJcbiAgICAgICAgeyBub25jdXJyZW50VmVyc2lvbkV4cGlyYXRpb246IER1cmF0aW9uLmRheXMoNyksIHByZWZpeDogQ0FUQUxPR19LRVkgfSxcbiAgICAgIF0sXG4gICAgICB2ZXJzaW9uZWQ6IHRydWUsXG4gICAgfSk7XG5cbiAgICBjb25zdCBpc29sYXRpb24gPVxuICAgICAgcHJvcHMuc2Vuc2l0aXZlVGFza0lzb2xhdGlvbiA/P1xuICAgICAgKHByb3BzLmlzb2xhdGVTZW5zaXRpdmVUYXNrc1xuICAgICAgICA/IElzb2xhdGlvbi5OT19JTlRFUk5FVF9BQ0NFU1NcbiAgICAgICAgOiBJc29sYXRpb24uVU5MSU1JVEVEX0lOVEVSTkVUX0FDQ0VTUyk7XG5cbiAgICAvLyBDcmVhdGUgYW4gaW50ZXJuYWwgQ29kZUFydGlmYWN0IHJlcG9zaXRvcnkgaWYgd2UgcnVuIGluIG5ldHdvcmstY29udHJvbGxlZCBtb2RlLCBvciBpZiBhIGRvbWFpbiBpcyBwcm92aWRlZC5cbiAgICBjb25zdCBjb2RlQXJ0aWZhY3QgPVxuICAgICAgaXNvbGF0aW9uID09PSBJc29sYXRpb24uTk9fSU5URVJORVRfQUNDRVNTIHx8XG4gICAgICBwcm9wcy5jb2RlQXJ0aWZhY3REb21haW4gIT0gbnVsbFxuICAgICAgICA/IG5ldyBSZXBvc2l0b3J5KHRoaXMsICdDb2RlQXJ0aWZhY3QnLCB7XG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogJ1Byb3h5IHRvIG5wbWpzLmNvbSBmb3IgQ29uc3RydWN0SHViJyxcbiAgICAgICAgICAgIGRvbWFpbk5hbWU6IHByb3BzLmNvZGVBcnRpZmFjdERvbWFpbj8ubmFtZSxcbiAgICAgICAgICAgIGRvbWFpbkV4aXN0czogcHJvcHMuY29kZUFydGlmYWN0RG9tYWluICE9IG51bGwsXG4gICAgICAgICAgICB1cHN0cmVhbXM6IHByb3BzLmNvZGVBcnRpZmFjdERvbWFpbj8udXBzdHJlYW1zLFxuICAgICAgICAgIH0pXG4gICAgICAgIDogdW5kZWZpbmVkO1xuICAgIGNvbnN0IHsgdnBjLCB2cGNFbmRwb2ludHMsIHZwY1N1Ym5ldHMsIHZwY1NlY3VyaXR5R3JvdXBzIH0gPSB0aGlzLmNyZWF0ZVZwYyhcbiAgICAgIGlzb2xhdGlvbixcbiAgICAgIGNvZGVBcnRpZmFjdFxuICAgICk7XG5cbiAgICBjb25zdCBkZW55TGlzdCA9IG5ldyBEZW55TGlzdCh0aGlzLCAnRGVueUxpc3QnLCB7XG4gICAgICBydWxlczogcHJvcHMuZGVueUxpc3QgPz8gW10sXG4gICAgICBwYWNrYWdlRGF0YUJ1Y2tldDogcGFja2FnZURhdGEsXG4gICAgICBwYWNrYWdlRGF0YUtleVByZWZpeDogU1RPUkFHRV9LRVlfUFJFRklYLFxuICAgICAgbW9uaXRvcmluZzogdGhpcy5tb25pdG9yaW5nLFxuICAgICAgb3ZlcnZpZXdEYXNoYm9hcmQ6IG92ZXJ2aWV3RGFzaGJvYXJkLFxuICAgIH0pO1xuXG4gICAgLy8gZGlzYWJsZSBmZXRjaGluZyBwYWNrYWdlIHN0YXRzIGJ5IGRlZmF1bHQgaWYgYSBkaWZmZXJlbnQgcGFja2FnZVxuICAgIC8vIHNvdXJjZSBpcyBjb25maWd1cmVkXG4gICAgY29uc3QgZmV0Y2hQYWNrYWdlU3RhdHMgPVxuICAgICAgcHJvcHMuZmV0Y2hQYWNrYWdlU3RhdHMgPz8gKHByb3BzLnBhY2thZ2VTb3VyY2VzID8gZmFsc2UgOiB0cnVlKTtcblxuICAgIGxldCBwYWNrYWdlU3RhdHM6IFBhY2thZ2VTdGF0cyB8IHVuZGVmaW5lZDtcbiAgICBjb25zdCBzdGF0c0tleSA9ICdzdGF0cy5qc29uJztcbiAgICBpZiAoZmV0Y2hQYWNrYWdlU3RhdHMpIHtcbiAgICAgIHBhY2thZ2VTdGF0cyA9IG5ldyBQYWNrYWdlU3RhdHModGhpcywgJ1N0YXRzJywge1xuICAgICAgICBidWNrZXQ6IHBhY2thZ2VEYXRhLFxuICAgICAgICBtb25pdG9yaW5nOiB0aGlzLm1vbml0b3JpbmcsXG4gICAgICAgIGxvZ1JldGVudGlvbjogcHJvcHMubG9nUmV0ZW50aW9uLFxuICAgICAgICBvYmplY3RLZXk6IHN0YXRzS2V5LFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgY29uc3QgdmVyc2lvblRyYWNrZXIgPSBuZXcgVmVyc2lvblRyYWNrZXIodGhpcywgJ1ZlcnNpb25UcmFja2VyJywge1xuICAgICAgYnVja2V0OiBwYWNrYWdlRGF0YSxcbiAgICAgIG1vbml0b3Jpbmc6IHRoaXMubW9uaXRvcmluZyxcbiAgICAgIGxvZ1JldGVudGlvbjogcHJvcHMubG9nUmV0ZW50aW9uLFxuICAgIH0pO1xuXG4gICAgY29uc3QgZmVlZEJ1aWxkZXIgPSBuZXcgRmVlZEJ1aWxkZXIodGhpcywgJ0ZlZWRCdWlsZGVyJywge1xuICAgICAgYnVja2V0OiBwYWNrYWdlRGF0YSxcbiAgICAgIG92ZXJ2aWV3RGFzaGJvYXJkLFxuICAgICAgZmVlZERlc2NyaXB0aW9uOiBwcm9wcy5mZWVkQ29uZmlndXJhdGlvbj8uZmVlZERlc2NyaXB0aW9uLFxuICAgICAgZmVlZFRpdGxlOiBwcm9wcy5mZWVkQ29uZmlndXJhdGlvbj8uZmVlZFRpdGxlLFxuICAgICAgbW9uaXRvcmluZzogdGhpcy5tb25pdG9yaW5nLFxuICAgIH0pO1xuXG4gICAgY29uc3Qgb3JjaGVzdHJhdGlvbiA9IG5ldyBPcmNoZXN0cmF0aW9uKHRoaXMsICdPcmNoZXN0cmF0aW9uJywge1xuICAgICAgYnVja2V0OiBwYWNrYWdlRGF0YSxcbiAgICAgIGNvZGVBcnRpZmFjdCxcbiAgICAgIGRlbnlMaXN0LFxuICAgICAgbG9nUmV0ZW50aW9uOiBwcm9wcy5sb2dSZXRlbnRpb24sXG4gICAgICBtb25pdG9yaW5nOiB0aGlzLm1vbml0b3JpbmcsXG4gICAgICBvdmVydmlld0Rhc2hib2FyZDogb3ZlcnZpZXdEYXNoYm9hcmQsXG4gICAgICB2cGMsXG4gICAgICB2cGNFbmRwb2ludHMsXG4gICAgICB2cGNTdWJuZXRzLFxuICAgICAgdnBjU2VjdXJpdHlHcm91cHMsXG4gICAgICBmZWVkQnVpbGRlcixcbiAgICB9KTtcbiAgICB0aGlzLnJlZ2VuZXJhdGVBbGxEb2N1bWVudGF0aW9uUGVyUGFja2FnZSA9XG4gICAgICBvcmNoZXN0cmF0aW9uLnJlZ2VuZXJhdGVBbGxEb2N1bWVudGF0aW9uUGVyUGFja2FnZTtcblxuICAgIC8vIHJlYnVpbGQgdGhlIGNhdGFsb2cgd2hlbiB0aGUgZGVueSBsaXN0IGNoYW5nZXMuXG4gICAgZGVueUxpc3QucHJ1bmUub25DaGFuZ2VJbnZva2Uob3JjaGVzdHJhdGlvbi5jYXRhbG9nQnVpbGRlci5mdW5jdGlvbik7XG5cbiAgICBjb25zdCBwYWNrYWdlVGFnc1NlcmlhbGl6ZWQgPVxuICAgICAgcHJvcHMucGFja2FnZVRhZ3M/Lm1hcCgoY29uZmlnKSA9PiB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgLi4uY29uZmlnLFxuICAgICAgICAgIGNvbmRpdGlvbjogY29uZmlnLmNvbmRpdGlvbi5iaW5kKCksXG4gICAgICAgIH07XG4gICAgICB9KSA/PyBbXTtcblxuICAgIGxldCByZWxlYXNlTm90ZXM7XG4gICAgaWYgKHNob3VsZEZldGNoUmVsZWFzZU5vdGVzKSB7XG4gICAgICByZWxlYXNlTm90ZXMgPSBuZXcgUmVsZWFzZU5vdGVGZXRjaGVyKHRoaXMsICdSZWxlYXNlTm90ZXMnLCB7XG4gICAgICAgIGJ1Y2tldDogcGFja2FnZURhdGEsXG4gICAgICAgIGdpdEh1YkNyZWRlbnRpYWxzU2VjcmV0OiBwcm9wcy5mZWVkQ29uZmlndXJhdGlvbj8uZ2l0aHViVG9rZW5TZWNyZXQsXG4gICAgICAgIGZlZWRCdWlsZGVyLFxuICAgICAgICBtb25pdG9yaW5nOiB0aGlzLm1vbml0b3JpbmcsXG4gICAgICAgIG92ZXJ2aWV3RGFzaGJvYXJkLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgdGhpcy5pbmdlc3Rpb24gPSBuZXcgSW5nZXN0aW9uKHRoaXMsICdJbmdlc3Rpb24nLCB7XG4gICAgICBidWNrZXQ6IHBhY2thZ2VEYXRhLFxuICAgICAgY29kZUFydGlmYWN0LFxuICAgICAgb3JjaGVzdHJhdGlvbixcbiAgICAgIGxvZ1JldGVudGlvbjogcHJvcHMubG9nUmV0ZW50aW9uLFxuICAgICAgbW9uaXRvcmluZzogdGhpcy5tb25pdG9yaW5nLFxuICAgICAgcGFja2FnZUxpbmtzOiBwcm9wcy5wYWNrYWdlTGlua3MsXG4gICAgICBwYWNrYWdlVGFnczogcGFja2FnZVRhZ3NTZXJpYWxpemVkLFxuICAgICAgcmVwcm9jZXNzRnJlcXVlbmN5OiBwcm9wcy5yZXByb2Nlc3NGcmVxdWVuY3ksXG4gICAgICByZXByb2Nlc3NBZ2U6IHByb3BzLnJlcHJvY2Vzc0FnZSxcbiAgICAgIHJlbGVhc2VOb3Rlc0ZldGNoUXVldWU6IHJlbGVhc2VOb3Rlcz8ucXVldWUsXG4gICAgICBvdmVydmlld0Rhc2hib2FyZDogb3ZlcnZpZXdEYXNoYm9hcmQsXG4gICAgfSk7XG5cbiAgICBjb25zdCBsaWNlbnNlTGlzdCA9IG5ldyBMaWNlbnNlTGlzdCh0aGlzLCAnTGljZW5zZUxpc3QnLCB7XG4gICAgICBsaWNlbnNlczogcHJvcHMuYWxsb3dlZExpY2Vuc2VzID8/IFtcbiAgICAgICAgLi4uU3BkeExpY2Vuc2UuYXBhY2hlKCksXG4gICAgICAgIC4uLlNwZHhMaWNlbnNlLmJzZCgpLFxuICAgICAgICAuLi5TcGR4TGljZW5zZS5jZGRsKCksXG4gICAgICAgIC4uLlNwZHhMaWNlbnNlLmVwbCgpLFxuICAgICAgICBTcGR4TGljZW5zZS5JU0MsXG4gICAgICAgIC4uLlNwZHhMaWNlbnNlLm1pdCgpLFxuICAgICAgICBTcGR4TGljZW5zZS5NUExfMl8wLFxuICAgICAgXSxcbiAgICB9KTtcblxuICAgIGNvbnN0IHdlYkFwcCA9IG5ldyBXZWJBcHAodGhpcywgJ1dlYkFwcCcsIHtcbiAgICAgIGRvbWFpbjogcHJvcHMuZG9tYWluLFxuICAgICAgbW9uaXRvcmluZzogdGhpcy5tb25pdG9yaW5nLFxuICAgICAgcGFja2FnZURhdGEsXG4gICAgICBwYWNrYWdlTGlua3M6IHByb3BzLnBhY2thZ2VMaW5rcyxcbiAgICAgIHBhY2thZ2VUYWdzOiBwYWNrYWdlVGFnc1NlcmlhbGl6ZWQsXG4gICAgICBwYWNrYWdlVGFnR3JvdXBzOiBwcm9wcy5wYWNrYWdlVGFnR3JvdXBzLFxuICAgICAgZmVhdHVyZWRQYWNrYWdlczogcHJvcHMuZmVhdHVyZWRQYWNrYWdlcyxcbiAgICAgIHBhY2thZ2VTdGF0cyxcbiAgICAgIGZlYXR1cmVGbGFnczogcHJvcHMuZmVhdHVyZUZsYWdzLFxuICAgICAgY2F0ZWdvcmllczogcHJvcHMuY2F0ZWdvcmllcyxcbiAgICAgIHByZWxvYWRTY3JpcHQ6IHByb3BzLnByZWxvYWRTY3JpcHQsXG4gICAgICBvdmVydmlld0Rhc2hib2FyZDogb3ZlcnZpZXdEYXNoYm9hcmQsXG4gICAgICBpbmNsdWRlRmVlZExpbms6IHRydWUsXG4gICAgfSk7XG5cbiAgICAvLyBTZXQgdGhlIGJhc2UgVVJMIHRoYXQgd2lsbCBiZSB1c2VkIGluIHRoZSBSU1MvQVRPTSBmZWVkXG4gICAgZmVlZEJ1aWxkZXIuc2V0Q29uc3RydWN0SHViVXJsKHdlYkFwcC5iYXNlVXJsKTtcblxuICAgIGNvbnN0IHNvdXJjZXMgPSBuZXcgQ29uc3RydWN0KHRoaXMsICdTb3VyY2VzJyk7XG4gICAgY29uc3QgcGFja2FnZVNvdXJjZXMgPSAocHJvcHMucGFja2FnZVNvdXJjZXMgPz8gW25ldyBOcG1KcygpXSkubWFwKFxuICAgICAgKHNvdXJjZSkgPT5cbiAgICAgICAgc291cmNlLmJpbmQoc291cmNlcywge1xuICAgICAgICAgIGJhc2VVcmw6IHdlYkFwcC5iYXNlVXJsLFxuICAgICAgICAgIGRlbnlMaXN0LFxuICAgICAgICAgIGluZ2VzdGlvbjogdGhpcy5pbmdlc3Rpb24sXG4gICAgICAgICAgbGljZW5zZUxpc3QsXG4gICAgICAgICAgbW9uaXRvcmluZzogdGhpcy5tb25pdG9yaW5nLFxuICAgICAgICAgIHF1ZXVlOiB0aGlzLmluZ2VzdGlvbi5xdWV1ZSxcbiAgICAgICAgICByZXBvc2l0b3J5OiBjb2RlQXJ0aWZhY3QsXG4gICAgICAgICAgb3ZlcnZpZXdEYXNoYm9hcmQ6IG92ZXJ2aWV3RGFzaGJvYXJkLFxuICAgICAgICB9KVxuICAgICk7XG5cbiAgICBjb25zdCBpbnZlbnRvcnkgPSBuZXcgSW52ZW50b3J5KHRoaXMsICdJbnZlbnRvcnlDYW5hcnknLCB7XG4gICAgICBidWNrZXQ6IHBhY2thZ2VEYXRhLFxuICAgICAgbG9nUmV0ZW50aW9uOiBwcm9wcy5sb2dSZXRlbnRpb24sXG4gICAgICBtb25pdG9yaW5nOiB0aGlzLm1vbml0b3JpbmcsXG4gICAgICBvdmVydmlld0Rhc2hib2FyZDogb3ZlcnZpZXdEYXNoYm9hcmQsXG4gICAgfSk7XG5cbiAgICBuZXcgQmFja2VuZERhc2hib2FyZCh0aGlzLCAnQmFja2VuZERhc2hib2FyZCcsIHtcbiAgICAgIHBhY2thZ2VEYXRhLFxuICAgICAgZGFzaGJvYXJkTmFtZTogcHJvcHMuYmFja2VuZERhc2hib2FyZE5hbWUsXG4gICAgICBwYWNrYWdlU291cmNlcyxcbiAgICAgIGluZ2VzdGlvbjogdGhpcy5pbmdlc3Rpb24sXG4gICAgICBpbnZlbnRvcnksXG4gICAgICBvcmNoZXN0cmF0aW9uLFxuICAgICAgZGVueUxpc3QsXG4gICAgICBwYWNrYWdlU3RhdHMsXG4gICAgICB2ZXJzaW9uVHJhY2tlcixcbiAgICAgIHJlbGVhc2VOb3RlcyxcbiAgICB9KTtcblxuICAgIC8vIGFkZCBkb21haW4gcmVkaXJlY3RzXG4gICAgaWYgKHByb3BzLmRvbWFpbikge1xuICAgICAgZm9yIChjb25zdCByZWRpcmN0U291cmNlIG9mIHByb3BzLmFkZGl0aW9uYWxEb21haW5zID8/IFtdKSB7XG4gICAgICAgIG5ldyBEb21haW5SZWRpcmVjdChcbiAgICAgICAgICB0aGlzLFxuICAgICAgICAgIGBSZWRpcmVjdC0ke3JlZGlyY3RTb3VyY2UuaG9zdGVkWm9uZS56b25lTmFtZX1gLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHNvdXJjZTogcmVkaXJjdFNvdXJjZSxcbiAgICAgICAgICAgIHRhcmdldERvbWFpbk5hbWU6IHByb3BzLmRvbWFpbj8uem9uZS56b25lTmFtZSxcbiAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChwcm9wcy5hZGRpdGlvbmFsRG9tYWlucyAmJiBwcm9wcy5hZGRpdGlvbmFsRG9tYWlucy5sZW5ndGggPiAwKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAnQ2Fubm90IHNwZWNpZnkgXCJkb21haW5SZWRpcmVjdHNcIiBpZiBhIGRvbWFpbiBpcyBub3Qgc3BlY2lmaWVkJ1xuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChwcm9wcy5hcHBSZWdpc3RyeUFwcGxpY2F0aW9uID8/IHRydWUpIHtcbiAgICAgIGNvbnN0IGFwcGxpY2F0aW9uID0gbmV3IEFwcGxpY2F0aW9uKHRoaXMsICdBcHBsaWNhdGlvbicsIHtcbiAgICAgICAgYXBwbGljYXRpb25OYW1lOiAnQ29uc3RydWN0SHViJyxcbiAgICAgIH0pO1xuICAgICAgYXBwbGljYXRpb24uYXNzb2NpYXRlQXBwbGljYXRpb25XaXRoU3RhY2soU3RhY2sub2YodGhpcykpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGEgbGlzdCBvZiBhbGwgaGlnaC1zZXZlcml0eSBhbGFybXMgZnJvbSB0aGlzIENvbnN0cnVjdEh1YiBpbnN0YW5jZS5cbiAgICogVGhlc2Ugd2FycmFudCBpbW1lZGlhdGUgYXR0ZW50aW9uIGFzIHRoZXkgYXJlIGluZGljYXRpdmUgb2YgYSBzeXN0ZW0gaGVhbHRoXG4gICAqIGlzc3VlLlxuICAgKi9cbiAgcHVibGljIGdldCBoaWdoU2V2ZXJpdHlBbGFybXMoKTogY3cuSUFsYXJtW10ge1xuICAgIC8vIE5vdGU6IHRoZSBhcnJheSBpcyBhbHJlYWR5IHJldHVybmVkIGJ5LWNvcHkgYnkgTW9uaXRvcmluZywgc28gbm90IGNvcHlpbmcgYWdhaW4uXG4gICAgcmV0dXJuIHRoaXMubW9uaXRvcmluZy5oaWdoU2V2ZXJpdHlBbGFybXM7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhIGxpc3Qgb2YgYWxsIGxvdy1zZXZlcml0eSBhbGFybXMgZnJvbSB0aGlzIENvbnN0cnVjdEh1YiBpbnN0YW5jZS5cbiAgICogVGhlc2UgZG8gbm90IG5lY2Vzc2l0YXRlIGltbWVkaWF0ZSBhdHRlbnRpb24sIGFzIHRoZXkgZG8gbm90IGhhdmUgZGlyZWN0XG4gICAqIGN1c3RvbWVyLXZpc2libGUgaW1wYWN0LCBvciBoYW5kbGluZyBpcyBub3QgdGltZS1zZW5zaXRpdmUuIFRoZXkgaW5kaWNhdGVcbiAgICogdGhhdCBzb21ldGhpbmcgdW51c3VhbCAobm90IG5lY2Vzc2FyaWx5IGJhZCkgaXMgaGFwcGVuaW5nLlxuICAgKi9cbiAgcHVibGljIGdldCBsb3dTZXZlcml0eUFsYXJtcygpOiBjdy5JQWxhcm1bXSB7XG4gICAgLy8gTm90ZTogdGhlIGFycmF5IGlzIGFscmVhZHkgcmV0dXJuZWQgYnktY29weSBieSBNb25pdG9yaW5nLCBzbyBub3QgY29weWluZyBhZ2Fpbi5cbiAgICByZXR1cm4gdGhpcy5tb25pdG9yaW5nLmxvd1NldmVyaXR5QWxhcm1zO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYSBsaXN0IG9mIGFsbCBhbGFybXMgY29uZmlndXJlZCBieSB0aGlzIENvbnN0cnVjdEh1YiBpbnN0YW5jZS5cbiAgICovXG4gIHB1YmxpYyBnZXQgYWxsQWxhcm1zKCk6IGN3LklBbGFybVtdIHtcbiAgICByZXR1cm4gWy4uLnRoaXMuaGlnaFNldmVyaXR5QWxhcm1zLCAuLi50aGlzLmxvd1NldmVyaXR5QWxhcm1zXTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgZ3JhbnRQcmluY2lwYWwoKTogaWFtLklQcmluY2lwYWwge1xuICAgIHJldHVybiB0aGlzLmluZ2VzdGlvbi5ncmFudFByaW5jaXBhbDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaW5nZXN0aW9uUXVldWUoKTogc3FzLklRdWV1ZSB7XG4gICAgcmV0dXJuIHRoaXMuaW5nZXN0aW9uLnF1ZXVlO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVWcGMoXG4gICAgaXNvbGF0aW9uOiBJc29sYXRpb24sXG4gICAgY29kZUFydGlmYWN0OiBSZXBvc2l0b3J5IHwgdW5kZWZpbmVkXG4gICkge1xuICAgIGlmIChpc29sYXRpb24gPT09IElzb2xhdGlvbi5VTkxJTUlURURfSU5URVJORVRfQUNDRVNTKSB7XG4gICAgICByZXR1cm4geyB2cGM6IHVuZGVmaW5lZCwgdnBjRW5kcG9pbnRzOiB1bmRlZmluZWQsIHZwY1N1Ym5ldHM6IHVuZGVmaW5lZCB9O1xuICAgIH1cblxuICAgIGNvbnN0IHN1Ym5ldFR5cGUgPVxuICAgICAgaXNvbGF0aW9uID09PSBJc29sYXRpb24uTk9fSU5URVJORVRfQUNDRVNTXG4gICAgICAgID8gZWMyLlN1Ym5ldFR5cGUuUFJJVkFURV9JU09MQVRFRFxuICAgICAgICA6IGVjMi5TdWJuZXRUeXBlLlBSSVZBVEVfV0lUSF9FR1JFU1M7XG4gICAgY29uc3QgdnBjU3VibmV0cyA9IHsgc3VibmV0VHlwZSB9O1xuXG4gICAgY29uc3QgdnBjID0gbmV3IGVjMi5WcGModGhpcywgJ1ZQQycsIHtcbiAgICAgIGVuYWJsZURuc0hvc3RuYW1lczogdHJ1ZSxcbiAgICAgIGVuYWJsZURuc1N1cHBvcnQ6IHRydWUsXG4gICAgICAvLyBQcm92aXNpb24gbm8gTkFUIGdhdGV3YXlzIGlmIHdlIGFyZSBydW5uaW5nIElTT0xBVEVEICh3ZSB3b3VsZG4ndCBoYXZlIGEgcHVibGljIHN1Ym5ldClcbiAgICAgIG5hdEdhdGV3YXlzOlxuICAgICAgICBzdWJuZXRUeXBlID09PSBlYzIuU3VibmV0VHlwZS5QUklWQVRFX0lTT0xBVEVEID8gMCA6IHVuZGVmaW5lZCxcbiAgICAgIC8vIFByZS1hbGxvY2F0aW5nIFBVQkxJQyAvIFBSSVZBVEUgLyBJTlRFUk5BTCBzdWJuZXRzLCByZWdhcmRsZXNzIG9mIHVzZSwgc28gd2UgZG9uJ3QgY3JlYXRlXG4gICAgICAvLyBhIHdob2xlIG5ldyBWUEMgaWYgd2UgZXZlciBuZWVkIHRvIGludHJvZHVjZSBzdWJuZXRzIG9mIHRoZXNlIHR5cGVzLlxuICAgICAgc3VibmV0Q29uZmlndXJhdGlvbjogW1xuICAgICAgICAvLyBJZiB0aGVyZSBpcyBhIFBSSVZBVEUgc3VibmV0LCB0aGVyZSBtdXN0IGFsc28gaGF2ZSBhIFBVQkxJQyBzdWJuZXQgKGZvciBOQVQgZ2F0ZXdheXMpLlxuICAgICAgICB7XG4gICAgICAgICAgbmFtZTogJ1B1YmxpYycsXG4gICAgICAgICAgc3VibmV0VHlwZTogZWMyLlN1Ym5ldFR5cGUuUFVCTElDLFxuICAgICAgICAgIHJlc2VydmVkOiBzdWJuZXRUeXBlID09PSBlYzIuU3VibmV0VHlwZS5QUklWQVRFX0lTT0xBVEVELFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgbmFtZTogJ1ByaXZhdGUnLFxuICAgICAgICAgIHN1Ym5ldFR5cGU6IGVjMi5TdWJuZXRUeXBlLlBSSVZBVEVfV0lUSF9FR1JFU1MsXG4gICAgICAgICAgcmVzZXJ2ZWQ6IHN1Ym5ldFR5cGUgPT09IGVjMi5TdWJuZXRUeXBlLlBSSVZBVEVfSVNPTEFURUQsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBuYW1lOiAnSXNvbGF0ZWQnLFxuICAgICAgICAgIHN1Ym5ldFR5cGU6IGVjMi5TdWJuZXRUeXBlLlBSSVZBVEVfSVNPTEFURUQsXG4gICAgICAgICAgcmVzZXJ2ZWQ6IHN1Ym5ldFR5cGUgIT09IGVjMi5TdWJuZXRUeXBlLlBSSVZBVEVfSVNPTEFURUQsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH0pO1xuICAgIFRhZ3Mub2YodnBjLm5vZGUuZGVmYXVsdENoaWxkISkuYWRkKCdOYW1lJywgdnBjLm5vZGUucGF0aCk7XG5cbiAgICBjb25zdCBzZWN1cml0eUdyb3VwcyA9XG4gICAgICBzdWJuZXRUeXBlID09PSBlYzIuU3VibmV0VHlwZS5QUklWQVRFX1dJVEhfRUdSRVNTXG4gICAgICAgID8gY3JlYXRlUmVzdHJpY3RlZFNlY3VyaXR5R3JvdXBzKHRoaXMsIHZwYylcbiAgICAgICAgOiB1bmRlZmluZWQ7XG5cbiAgICAvLyBDcmVhdGluZyB0aGUgQ29kZUFydGlmYWN0IGVuZHBvaW50cyBvbmx5IGlmIGEgcmVwb3NpdG9yeSBpcyBwcmVzZW50LlxuICAgIGNvbnN0IGNvZGVBcnRpZmFjdEVuZHBvaW50cyA9IGNvZGVBcnRpZmFjdCAmJiB7XG4gICAgICBjb2RlQXJ0aWZhY3RBcGk6IHZwYy5hZGRJbnRlcmZhY2VFbmRwb2ludCgnQ29kZUFydGlmYWN0LkFQSScsIHtcbiAgICAgICAgcHJpdmF0ZURuc0VuYWJsZWQ6IGZhbHNlLFxuICAgICAgICBzZXJ2aWNlOiBuZXcgZWMyLkludGVyZmFjZVZwY0VuZHBvaW50QXdzU2VydmljZSgnY29kZWFydGlmYWN0LmFwaScpLFxuICAgICAgICBzdWJuZXRzOiB2cGNTdWJuZXRzLFxuICAgICAgICBzZWN1cml0eUdyb3VwcyxcbiAgICAgIH0pLFxuICAgICAgY29kZUFydGlmYWN0OiB2cGMuYWRkSW50ZXJmYWNlRW5kcG9pbnQoJ0NvZGVBcnRpZmFjdCcsIHtcbiAgICAgICAgcHJpdmF0ZURuc0VuYWJsZWQ6IHRydWUsXG4gICAgICAgIHNlcnZpY2U6IG5ldyBlYzIuSW50ZXJmYWNlVnBjRW5kcG9pbnRBd3NTZXJ2aWNlKFxuICAgICAgICAgICdjb2RlYXJ0aWZhY3QucmVwb3NpdG9yaWVzJ1xuICAgICAgICApLFxuICAgICAgICBzdWJuZXRzOiB2cGNTdWJuZXRzLFxuICAgICAgICBzZWN1cml0eUdyb3VwcyxcbiAgICAgIH0pLFxuICAgIH07XG5cbiAgICAvLyBXZSdsbCBvbmx5IHVzZSBWUEMgZW5kcG9pbnRzIGlmIHdlIGFyZSBjb25maWd1cmVkIHRvIHJ1biBpbiBhbiBJU09MQVRFRCBzdWJuZXQuXG4gICAgY29uc3QgdnBjRW5kcG9pbnRzID0ge1xuICAgICAgLi4uY29kZUFydGlmYWN0RW5kcG9pbnRzLFxuICAgICAgLy8gVGhpcyBpcyBuZWVkZWQgc28gdGhhdCBFQ1Mgd29ya2xvYWRzIGNhbiB1c2UgdGhlIGF3c2xvZ3MgZHJpdmVyXG4gICAgICBjbG91ZFdhdGNoTG9nczogdnBjLmFkZEludGVyZmFjZUVuZHBvaW50KCdDbG91ZFdhdGNoLkxvZ3MnLCB7XG4gICAgICAgIHByaXZhdGVEbnNFbmFibGVkOiB0cnVlLFxuICAgICAgICBzZXJ2aWNlOiBlYzIuSW50ZXJmYWNlVnBjRW5kcG9pbnRBd3NTZXJ2aWNlLkNMT1VEV0FUQ0hfTE9HUyxcbiAgICAgICAgc3VibmV0czogdnBjU3VibmV0cyxcbiAgICAgICAgc2VjdXJpdHlHcm91cHMsXG4gICAgICB9KSxcbiAgICAgIC8vIFRoZXNlIGFyZSBuZWVkZWQgZm9yIEVDUyB3b3JrbG9hZHMgdG8gYmUgYWJsZSB0byBwdWxsIGltYWdlc1xuICAgICAgZWNyQXBpOiB2cGMuYWRkSW50ZXJmYWNlRW5kcG9pbnQoJ0VDUi5BUEknLCB7XG4gICAgICAgIHByaXZhdGVEbnNFbmFibGVkOiB0cnVlLFxuICAgICAgICBzZXJ2aWNlOiBlYzIuSW50ZXJmYWNlVnBjRW5kcG9pbnRBd3NTZXJ2aWNlLkVDUixcbiAgICAgICAgc3VibmV0czogdnBjU3VibmV0cyxcbiAgICAgICAgc2VjdXJpdHlHcm91cHMsXG4gICAgICB9KSxcbiAgICAgIGVjcjogdnBjLmFkZEludGVyZmFjZUVuZHBvaW50KCdFQ1IuRG9ja2VyJywge1xuICAgICAgICBwcml2YXRlRG5zRW5hYmxlZDogdHJ1ZSxcbiAgICAgICAgc2VydmljZTogZWMyLkludGVyZmFjZVZwY0VuZHBvaW50QXdzU2VydmljZS5FQ1JfRE9DS0VSLFxuICAgICAgICBzdWJuZXRzOiB2cGNTdWJuZXRzLFxuICAgICAgICBzZWN1cml0eUdyb3VwcyxcbiAgICAgIH0pLFxuICAgICAgLy8gVGhpcyBpcyBuZWVkZWQgKGFtb25nIG90aGVycykgZm9yIENvZGVBcnRpZmFjdCByZWdpc3RyeSB1c2FnZVxuICAgICAgczM6IHZwYy5hZGRHYXRld2F5RW5kcG9pbnQoJ1MzJywge1xuICAgICAgICBzZXJ2aWNlOiBlYzIuR2F0ZXdheVZwY0VuZHBvaW50QXdzU2VydmljZS5TMyxcbiAgICAgICAgc3VibmV0czogW3ZwY1N1Ym5ldHNdLFxuICAgICAgfSksXG4gICAgICAvLyBUaGlzIGlzIHVzZWZ1bCBmb3IgZ2V0dGluZyByZXN1bHRzIGZyb20gRUNTIHRhc2tzIHdpdGhpbiB3b3JrZmxvd3NcbiAgICAgIHN0ZXBGdW5jdGlvbnM6IHZwYy5hZGRJbnRlcmZhY2VFbmRwb2ludCgnU3RlcEZ1bmN0aW9ucycsIHtcbiAgICAgICAgcHJpdmF0ZURuc0VuYWJsZWQ6IHRydWUsXG4gICAgICAgIHNlcnZpY2U6IGVjMi5JbnRlcmZhY2VWcGNFbmRwb2ludEF3c1NlcnZpY2UuU1RFUF9GVU5DVElPTlMsXG4gICAgICAgIHN1Ym5ldHM6IHZwY1N1Ym5ldHMsXG4gICAgICAgIHNlY3VyaXR5R3JvdXBzLFxuICAgICAgfSksXG4gICAgfTtcblxuICAgIC8vIFRoZSBTMyBhY2Nlc3MgaXMgbmVjZXNzYXJ5IGZvciB0aGUgQ29kZUFydGlmYWN0IFJlcG9zaXRvcnkgYW5kIEVDUiBEb2NrZXJcbiAgICAvLyBlbmRwb2ludHMgdG8gYmUgdXNlZCAodGhleSBzZXJ2ZSBvYmplY3RzIGZyb20gUzMpLlxuICAgIHZwY0VuZHBvaW50cy5zMy5hZGRUb1BvbGljeShcbiAgICAgIG5ldyBQb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICBlZmZlY3Q6IEVmZmVjdC5BTExPVyxcbiAgICAgICAgYWN0aW9uczogWydzMzpHZXRPYmplY3QnXSxcbiAgICAgICAgcmVzb3VyY2VzOiBbXG4gICAgICAgICAgLy8gVGhlIGluLXJlZ2lvbiBDb2RlQXJ0aWZhY3QgUzMgQnVja2V0XG4gICAgICAgICAgLi4uKGNvZGVBcnRpZmFjdCA/IFtgJHtjb2RlQXJ0aWZhY3QuczNCdWNrZXRBcm59LypgXSA6IFtdKSxcbiAgICAgICAgICAvLyBUaGUgaW4tcmVnaW9uIEVDUiBsYXllciBidWNrZXRcbiAgICAgICAgICBgYXJuOmF3czpzMzo6OnByb2QtJHtTdGFjay5vZih0aGlzKS5yZWdpb259LXN0YXJwb3J0LWxheWVyLWJ1Y2tldC8qYCxcbiAgICAgICAgXSxcbiAgICAgICAgLy8gSXQgZG9lc24ndCBzZWVtIHdlIGNhbiBjb25zdHJhaW4gcHJpbmNpcGFscyBmb3IgdGhlc2UgZ3JhbnRzICh1bmNsZWFyXG4gICAgICAgIC8vIHdoaWNoIHByaW5jaXBhbCB0aG9zZSBjYWxscyBhcmUgbWFkZSBmcm9tLCBvciBpZiB0aGF0IGlzIHNvbWV0aGluZyB3ZVxuICAgICAgICAvLyBjb3VsZCBuYW1lIGhlcmUpLlxuICAgICAgICBwcmluY2lwYWxzOiBbbmV3IEFueVByaW5jaXBhbCgpXSxcbiAgICAgICAgc2lkOiAnQWxsb3ctQ29kZUFydGlmYWN0LWFuZC1FQ1InLFxuICAgICAgfSlcbiAgICApO1xuXG4gICAgcmV0dXJuIHsgdnBjLCB2cGNFbmRwb2ludHMsIHZwY1N1Ym5ldHMsIHZwY1NlY3VyaXR5R3JvdXBzOiBzZWN1cml0eUdyb3VwcyB9O1xuICB9XG59XG5cbi8qKlxuICogSG93IHBvc3NpYmx5IHJpc2t5IG9wZXJhdGlvbnMgKHN1Y2ggYXMgZG9jLWdlbmVyYXRpb24sIHdoaWNoIHJlcXVpcmVzXG4gKiBpbnN0YWxsaW5nIHRoZSBpbmRleGVkIHBhY2thZ2VzIGluIG9yZGVyIHRvIHRyYW5zLWxpdGVyYXRlIHNhbXBsZSBjb2RlKSBhcmVcbiAqIGlzb2xhdGVkIHRvIG1pdGlnYXRlIHBvc3NpYmxlIGFyYml0cmFyeSBjb2RlIGV4ZWN1dGlvbiB2dWxuZXJhYmlsaXRpZXMgaW4gYW5kXG4gKiBhcm91bmQgYG5wbSBpbnN0YWxsYCBvciB0aGUgdHJhbnNsaXRlcmF0b3IncyB1c2Ugb2YgdGhlIFR5cGVTY3JpcHQgY29tcGlsZXIuXG4gKi9cbmV4cG9ydCBlbnVtIElzb2xhdGlvbiB7XG4gIC8qKlxuICAgKiBObyBpc29sYXRpb24gaXMgZG9uZSB3aGF0c29ldmVyLiBUaGUgZG9jLWdlbmVyYXRpb24gcHJvY2VzcyBzdGlsbCBpc1xuICAgKiBwcm92aXNpb25lZCB3aXRoIGxlYXN0LXByaXZpbGVnZSBwZXJtaXNzaW9ucywgYnV0IHJldGFpbnMgY29tcGxldGUgYWNjZXNzXG4gICAqIHRvIGludGVybmV0LlxuICAgKlxuICAgKiBXaGlsZSB0aGlzIG1heGltaXplcyB0aGUgY2hhbmNlcyBvZiBzdWNjZXNzZnVsbHkgaW5zdGFsbGluZyBwYWNrYWdlcyAoYW5kXG4gICAqIGhlbmNlIHN1Y2Nlc3NmdWxseSBnZW5lcmF0aW5nIGRvY3VtZW50YXRpb24gZm9yIHRob3NlKSwgaXQgaXMgYWxzbyB0aGVcbiAgICogbGVhc3Qgc2VjdXJlIG1vZGUgb2Ygb3BlcmF0aW9uLlxuICAgKlxuICAgKiBXZSBhZHZpc2UgeW91IG9ubHkgY29uc2lkZXIgdXNpbmcgdGhpcyBpc29sYXRpb24gbW9kZSBpZiB5b3UgYXJlIGhvc3RpbmcgYVxuICAgKiBDb25zdHJ1Y3RIdWIgaW5zdGFuY2UgdGhhdCBvbmx5IGluZGV4ZXMgdHJ1c3RlZCBwYWNrYWdlcyAoaW5jbHVkaW5nXG4gICAqIHRyYW5zaXRpdmUgZGVwZW5kZW5jaWVzKS5cbiAgICovXG4gIFVOTElNSVRFRF9JTlRFUk5FVF9BQ0NFU1MsXG5cbiAgLyoqXG4gICAqIFRoZSBzYW1lIHByb3RlY3Rpb25zIGFzIGBVTkxJTUlURURfSU5URVJORVRfQUNDRVNTYCwgZXhjZXB0IG91dGJvdW5kXG4gICAqIGludGVybmV0IGNvbm5lY3Rpb25zIGFyZSBsaW1pdGVkIHRvIElQIGFkZHJlc3MgcmFuZ2VzIGNvcnJlc3BvbmRpbmcgdG9cbiAgICogaG9zdGluZyBlbmRwb2ludHMgZm9yIG5wbWpzLmNvbS5cbiAgICovXG4gIExJTUlURURfSU5URVJORVRfQUNDRVNTLFxuXG4gIC8qKlxuICAgKiBUaGUgc2FtZSBwcm90ZWN0aW9ucyBhcyBgTElNSVRFRF9JTlRFUk5FVF9BQ0NFU1NgLCBleGNlcHQgYWxsIHJlbWFpbmluZ1xuICAgKiBpbnRlcm5ldCBhY2Nlc3MgaXMgcmVtb3ZlZC4gQWxsIHRyYWZmaWMgdG8gQVdTIHNlcnZpY2UgZW5kcG9pbnRzIGlzIHJvdXRlZFxuICAgKiB0aHJvdWdoIFZQQyBFbmRwb2ludHMsIGFzIHRoZSBjb21wdXRlIG5vZGVzIGFyZSBqYWlsZWQgaW4gYSBjb21wbGV0ZWx5XG4gICAqIGlzb2xhdGVkIFZQQy5cbiAgICpcbiAgICogVGhpcyBpcyB0aGUgbW9zdCBzZWN1cmUgKGFuZCByZWNvbW1lbmRlZCkgbW9kZSBvZiBvcGVyYXRpb24gZm9yXG4gICAqIENvbnN0cnVjdEh1YiBpbnN0YW5jZXMuXG4gICAqL1xuICBOT19JTlRFUk5FVF9BQ0NFU1MsXG59XG4iXX0=
446
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RydWN0LWh1Yi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9jb25zdHJ1Y3QtaHViLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsc0dBQTJFO0FBQzNFLDZDQUFvRDtBQUVwRCwyQ0FBMkM7QUFFM0MsaURBQTRFO0FBRTVFLHlDQUF5QztBQUN6QywrQ0FBdUQ7QUFHdkQsMkNBQXVDO0FBQ3ZDLHlFQUE0RTtBQUU1RSx1Q0FBZ0Q7QUFFaEQseURBQXFEO0FBQ3JELG1EQUFnRDtBQUNoRCx5REFBcUQ7QUFDckQsMkRBQXdEO0FBQ3hELDJEQUF1RDtBQUN2RCwyREFBNkQ7QUFDN0QsMERBQTZFO0FBQzdFLCtEQUEyRDtBQUMzRCwyREFBdUQ7QUFDdkQsMERBQXVEO0FBQ3ZELHVEQUF5RTtBQUN6RSw2Q0FBMEM7QUFDMUMsNkRBQXlEO0FBRXpELHVEQUEwQztBQUkxQywwQ0FBZ0Q7QUFDaEQsaURBQTZDO0FBQzdDLHFDQU1rQjtBQWtPbEI7O0dBRUc7QUFDSCxNQUFhLFlBQWEsU0FBUSxzQkFBUztJQVV6QyxZQUNFLEtBQWdCLEVBQ2hCLEVBQVUsRUFDVixRQUEyQixFQUFFO1FBRTdCLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFakIsSUFDRSxLQUFLLENBQUMscUJBQXFCLElBQUksSUFBSTtZQUNuQyxLQUFLLENBQUMsc0JBQXNCLElBQUksSUFBSSxFQUNwQyxDQUFDO1lBQ0QsTUFBTSxJQUFJLEtBQUssQ0FDYiwwSEFBMEgsQ0FDM0gsQ0FBQztRQUNKLENBQUM7UUFFRCxNQUFNLHVCQUF1QixHQUFHLEtBQUssQ0FBQyxpQkFBaUIsRUFBRSxpQkFBaUI7WUFDeEUsQ0FBQyxDQUFDLElBQUk7WUFDTixDQUFDLENBQUMsS0FBSyxDQUFDO1FBRVYsTUFBTSxjQUFjLEdBQUcsMEJBQWdCLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRTtZQUN4RCxRQUFRLEVBQUUsS0FBSyxDQUFDLGVBQWU7U0FD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O0lBQ0gscUVBQWtCLENBQUE7QUFDcEIsQ0FBQyxFQWpDVyxTQUFTLHlCQUFULFNBQVMsUUFpQ3BCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXBwbGljYXRpb24gfSBmcm9tICdAYXdzLWNkay9hd3Mtc2VydmljZWNhdGFsb2dhcHByZWdpc3RyeS1hbHBoYSc7XG5pbXBvcnQgeyBEdXJhdGlvbiwgU3RhY2ssIFRhZ3MgfSBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgKiBhcyBjdyBmcm9tICdhd3MtY2RrLWxpYi9hd3MtY2xvdWR3YXRjaCc7XG5pbXBvcnQgKiBhcyBlYzIgZnJvbSAnYXdzLWNkay1saWIvYXdzLWVjMic7XG5pbXBvcnQgKiBhcyBpYW0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWlhbSc7XG5pbXBvcnQgeyBBbnlQcmluY2lwYWwsIEVmZmVjdCwgUG9saWN5U3RhdGVtZW50IH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWlhbSc7XG5pbXBvcnQgeyBSZXRlbnRpb25EYXlzIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWxvZ3MnO1xuaW1wb3J0ICogYXMgczMgZnJvbSAnYXdzLWNkay1saWIvYXdzLXMzJztcbmltcG9ydCB7IEJsb2NrUHVibGljQWNjZXNzIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLXMzJztcbmltcG9ydCAqIGFzIHNlY3JldHNtYW5hZ2VyIGZyb20gJ2F3cy1jZGstbGliL2F3cy1zZWNyZXRzbWFuYWdlcic7XG5pbXBvcnQgKiBhcyBzcXMgZnJvbSAnYXdzLWNkay1saWIvYXdzLXNxcyc7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCB7IGNyZWF0ZVJlc3RyaWN0ZWRTZWN1cml0eUdyb3VwcyB9IGZyb20gJy4vX2xpbWl0ZWQtaW50ZXJuZXQtYWNjZXNzJztcbmltcG9ydCB7IEFsYXJtQWN0aW9ucywgRG9tYWluIH0gZnJvbSAnLi9hcGknO1xuaW1wb3J0IHsgRGVueUxpc3QsIEluZ2VzdGlvbiB9IGZyb20gJy4vYmFja2VuZCc7XG5pbXBvcnQgeyBEZW55TGlzdFJ1bGUgfSBmcm9tICcuL2JhY2tlbmQvZGVueS1saXN0L2FwaSc7XG5pbXBvcnQgeyBGZWVkQnVpbGRlciB9IGZyb20gJy4vYmFja2VuZC9mZWVkLWJ1aWxkZXInO1xuaW1wb3J0IHsgSW52ZW50b3J5IH0gZnJvbSAnLi9iYWNrZW5kL2ludmVudG9yeSc7XG5pbXBvcnQgeyBMaWNlbnNlTGlzdCB9IGZyb20gJy4vYmFja2VuZC9saWNlbnNlLWxpc3QnO1xuaW1wb3J0IHsgT3JjaGVzdHJhdGlvbiB9IGZyb20gJy4vYmFja2VuZC9vcmNoZXN0cmF0aW9uJztcbmltcG9ydCB7IFBhY2thZ2VTdGF0cyB9IGZyb20gJy4vYmFja2VuZC9wYWNrYWdlLXN0YXRzJztcbmltcG9ydCB7IFJlbGVhc2VOb3RlRmV0Y2hlciB9IGZyb20gJy4vYmFja2VuZC9yZWxlYXNlLW5vdGVzJztcbmltcG9ydCB7IENBVEFMT0dfS0VZLCBTVE9SQUdFX0tFWV9QUkVGSVggfSBmcm9tICcuL2JhY2tlbmQvc2hhcmVkL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBWZXJzaW9uVHJhY2tlciB9IGZyb20gJy4vYmFja2VuZC92ZXJzaW9uLXRyYWNrZXInO1xuaW1wb3J0IHsgQmFja2VuZERhc2hib2FyZCB9IGZyb20gJy4vYmFja2VuZC1kYXNoYm9hcmQnO1xuaW1wb3J0IHsgUmVwb3NpdG9yeSB9IGZyb20gJy4vY29kZWFydGlmYWN0L3JlcG9zaXRvcnknO1xuaW1wb3J0IHsgRG9tYWluUmVkaXJlY3QsIERvbWFpblJlZGlyZWN0U291cmNlIH0gZnJvbSAnLi9kb21haW4tcmVkaXJlY3QnO1xuaW1wb3J0IHsgTW9uaXRvcmluZyB9IGZyb20gJy4vbW9uaXRvcmluZyc7XG5pbXBvcnQgeyBPdmVydmlld0Rhc2hib2FyZCB9IGZyb20gJy4vb3ZlcnZpZXctZGFzaGJvYXJkJztcbmltcG9ydCB7IElQYWNrYWdlU291cmNlIH0gZnJvbSAnLi9wYWNrYWdlLXNvdXJjZSc7XG5pbXBvcnQgeyBOcG1KcyB9IGZyb20gJy4vcGFja2FnZS1zb3VyY2VzJztcbmltcG9ydCB7IFBhY2thZ2VUYWcgfSBmcm9tICcuL3BhY2thZ2UtdGFnJztcbmltcG9ydCB7IFBhY2thZ2VUYWdHcm91cCB9IGZyb20gJy4vcGFja2FnZS10YWctZ3JvdXAnO1xuaW1wb3J0IHsgUHJlbG9hZEZpbGUgfSBmcm9tICcuL3ByZWxvYWQtZmlsZSc7XG5pbXBvcnQgeyBTM1N0b3JhZ2VGYWN0b3J5IH0gZnJvbSAnLi9zMy9zdG9yYWdlJztcbmltcG9ydCB7IFNwZHhMaWNlbnNlIH0gZnJvbSAnLi9zcGR4LWxpY2Vuc2UnO1xuaW1wb3J0IHtcbiAgV2ViQXBwLFxuICBQYWNrYWdlTGlua0NvbmZpZyxcbiAgRmVhdHVyZWRQYWNrYWdlcyxcbiAgRmVhdHVyZUZsYWdzLFxuICBDYXRlZ29yeSxcbn0gZnJvbSAnLi93ZWJhcHAnO1xuaW1wb3J0IHsgSVN0YXRlTWFjaGluZSB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1zdGVwZnVuY3Rpb25zJztcblxuLyoqXG4gKiBDb25maWd1cmF0aW9uIGZvciBnZW5lcmF0aW5nIFJTUyBhbmQgQVRPTSBmZWVkIGZvciB0aGUgbGF0ZXN0IHBhY2thZ2VzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmVlZENvbmZpZ3VyYXRpb24ge1xuICAvKipcbiAgICogR2l0aHViIHRva2VuIGZvciBnZW5lcmF0aW5nIHJlbGVhc2Ugbm90ZXMuIFdoZW4gbWlzc2luZyBubyByZWxlYXNlIG5vdGVzIHdpbGwgYmUgaW5jbHVkZWQgaW4gdGhlIGdlbmVyYXRlZCBSU1MvQVRPTSBmZWVkXG4gICAqL1xuICByZWFkb25seSBnaXRodWJUb2tlblNlY3JldD86IHNlY3JldHNtYW5hZ2VyLklTZWNyZXQ7XG5cbiAgLyoqXG4gICAqIFRpdGxlIHVzZWQgaW4gdGhlIGdlbmVyYXRlZCBmZWVkXG4gICAqL1xuICByZWFkb25seSBmZWVkVGl0bGU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIGRlc2NyaXB0aW9uIHVzZWQgaW4gdGhlIGdlbmVyYXRlZCBmZWVkXG4gICAqL1xuICByZWFkb25seSBmZWVkRGVzY3JpcHRpb24/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogUHJvcHMgZm9yIGBDb25zdHJ1Y3RIdWJgLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENvbnN0cnVjdEh1YlByb3BzIHtcbiAgLyoqXG4gICAqIENvbm5lY3QgdGhlIGh1YiB0byBhIGRvbWFpbiAocmVxdWlyZXMgYSBob3N0ZWQgem9uZSBhbmQgYSBjZXJ0aWZpY2F0ZSkuXG4gICAqL1xuICByZWFkb25seSBkb21haW4/OiBEb21haW47XG5cbiAgLyoqXG4gICAqIEFjdGlvbnMgdG8gcGVyZm9ybSB3aGVuIGFsYXJtcyBhcmUgc2V0LlxuICAgKi9cbiAgcmVhZG9ubHkgYWxhcm1BY3Rpb25zPzogQWxhcm1BY3Rpb25zO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIGNvbXB1dGUgZW52aXJvbm1lbnRzIGZvciBzZW5zaXRpdmUgdGFza3MgKHdoaWNoIG9wZXJhdGUgb25cbiAgICogdW4tdHJ1c3RlZCBjb21wbGV4IGRhdGEsIHN1Y2ggYXMgdGhlIHRyYW5zbGl0ZXJhdG9yLCB3aGljaCBvcGVyYXRlcyB3aXRoXG4gICAqIGV4dGVybmFsbHktc291cmNlZCBucG0gcGFja2FnZSB0YXJiYWxscykgc2hvdWxkIHJ1biBpbiBuZXR3b3JrLWlzb2xhdGVkXG4gICAqIGVudmlyb25tZW50cy4gVGhpcyBpbXBsaWVzIHRoZSBjcmVhdGlvbiBvZiBhZGRpdG9uYWwgcmVzb3VyY2VzLCBpbmNsdWRpbmc6XG4gICAqXG4gICAqIC0gQSBWUEMgd2l0aCBvbmx5IGlzb2xhdGVkIHN1Ym5ldHMuXG4gICAqIC0gVlBDIEVuZHBvaW50cyAoQ2xvdWRXYXRjaCBMb2dzLCBDb2RlQXJ0aWZhY3QsIENvZGVBcnRpZmFjdCBBUEksIFMzLCAuLi4pXG4gICAqIC0gQSBDb2RlQXJ0aWZhY3QgUmVwb3NpdG9yeSB3aXRoIGFuIGV4dGVybmFsIGNvbm5lY3Rpb24gdG8gbnBtanMuY29tXG4gICAqXG4gICAqIEBkZXByZWNhdGVkIHVzZSBzZW5zaXRpdmVUYXNrSXNvbGF0aW9uIGluc3RlYWQuXG4gICAqL1xuICByZWFkb25seSBpc29sYXRlU2Vuc2l0aXZlVGFza3M/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIGNvbXB1dGUgZW52aXJvbm1lbnRzIGZvciBzZW5zaXRpdmUgdGFza3MgKHdoaWNoIG9wZXJhdGUgb25cbiAgICogdW4tdHJ1c3RlZCBjb21wbGV4IGRhdGEsIHN1Y2ggYXMgdGhlIHRyYW5zbGl0ZXJhdG9yLCB3aGljaCBvcGVyYXRlcyB3aXRoXG4gICAqIGV4dGVybmFsbHktc291cmNlZCBucG0gcGFja2FnZSB0YXJiYWxscykgc2hvdWxkIHJ1biBpbiBuZXR3b3JrLWlzb2xhdGVkXG4gICAqIGVudmlyb25tZW50cy4gVGhpcyBpbXBsaWVzIHRoZSBjcmVhdGlvbiBvZiBhZGRpdG9uYWwgcmVzb3VyY2VzLCBpbmNsdWRpbmc6XG4gICAqXG4gICAqIC0gQSBWUEMgd2l0aCBvbmx5IGlzb2xhdGVkIHN1Ym5ldHMuXG4gICAqIC0gVlBDIEVuZHBvaW50cyAoQ2xvdWRXYXRjaCBMb2dzLCBDb2RlQXJ0aWZhY3QsIENvZGVBcnRpZmFjdCBBUEksIFMzLCAuLi4pXG4gICAqIC0gQSBDb2RlQXJ0aWZhY3QgUmVwb3NpdG9yeSB3aXRoIGFuIGV4dGVybmFsIGNvbm5lY3Rpb24gdG8gbnBtanMuY29tXG4gICAqXG4gICAqIEBkZWZhdWx0IElzb2xhdGlvbi5OT19JTlRFUk5FVF9BQ0NFU1NcbiAgICovXG4gIHJlYWRvbmx5IHNlbnNpdGl2ZVRhc2tJc29sYXRpb24/OiBJc29sYXRpb247XG5cbiAgLyoqXG4gICAqIEhvdyBsb25nIHRvIHJldGFpbiBDbG91ZFdhdGNoIGxvZ3MgZm9yLlxuICAgKlxuICAgKiBAZGVmYXVsdHMgUmV0ZW50aW9uRGF5cy5URU5fWUVBUlNcbiAgICovXG4gIHJlYWRvbmx5IGxvZ1JldGVudGlvbj86IFJldGVudGlvbkRheXM7XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBDbG91ZFdhdGNoIGRhc2hib2FyZCB0aGF0IHJlcHJlc2VudHMgdGhlIGhlYWx0aCBvZiBiYWNrZW5kXG4gICAqIHN5c3RlbXMuXG4gICAqL1xuICByZWFkb25seSBiYWNrZW5kRGFzaGJvYXJkTmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogQSBsaXN0IG9mIHBhY2thZ2VzIHRvIGJsb2NrIGZyb20gdGhlIGNvbnN0cnVjdCBodWIuXG4gICAqXG4gICAqIEBkZWZhdWx0IFtdXG4gICAqL1xuICByZWFkb25seSBkZW55TGlzdD86IERlbnlMaXN0UnVsZVtdO1xuXG4gIC8qKlxuICAgKiBUaGUgcGFja2FnZSBzb3VyY2VzIHRvIHJlZ2lzdGVyIHdpdGggdGhpcyBDb25zdHJ1Y3RIdWIgaW5zdGFuY2UuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gYSBzdGFuZGFyZCBucG1qcy5jb20gcGFja2FnZSBzb3VyY2Ugd2lsbCBiZSBjb25maWd1cmVkLlxuICAgKi9cbiAgcmVhZG9ubHkgcGFja2FnZVNvdXJjZXM/OiBJUGFja2FnZVNvdXJjZVtdO1xuXG4gIC8qKlxuICAgKiBUaGUgYWxsb3dlZCBsaWNlbnNlcyBmb3IgcGFja2FnZXMgaW5kZXhlZCBieSB0aGlzIGluc3RhbmNlIG9mIENvbnN0cnVjdEh1Yi5cbiAgICpcbiAgICogQGRlZmF1bHQgWy4uLlNwZHhMaWNlbnNlLmFwYWNoZSgpLC4uLlNwZHhMaWNlbnNlLmJzZCgpLC4uLlNwZHhMaWNlbnNlLmNkZGwoKSwuLi5TcGR4TGljZW5zZS5lcGwoKSxTcGR4TGljZW5zZS5JU0MsLi4uU3BkeExpY2Vuc2UubWl0KCksU3BkeExpY2Vuc2UuTVBMXzJfMF1cbiAgICovXG4gIHJlYWRvbmx5IGFsbG93ZWRMaWNlbnNlcz86IFNwZHhMaWNlbnNlW107XG5cbiAgLyoqXG4gICAqIFdoZW4gdXNpbmcgYSBDb2RlQXJ0aWZhY3QgcGFja2FnZSBzb3VyY2UsIGl0IGlzIG9mdGVuIGRlc2lyYWJsZSB0byBoYXZlXG4gICAqIENvbnN0cnVjdEh1YiBwcm92aXNpb24gaXQncyBpbnRlcm5hbCBDb2RlQXJ0aWZhY3QgcmVwb3NpdG9yeSBpbiB0aGUgc2FtZVxuICAgKiBDb2RlQXJ0aWZhY3QgZG9tYWluLCBhbmQgdG8gY29uZmlndXJlIHRoZSBwYWNrYWdlIHNvdXJjZSByZXBvc2l0b3J5IGFzIGFuXG4gICAqIHVwc3RyZWFtIG9mIHRoZSBpbnRlcm5hbCByZXBvc2l0b3J5LiBUaGlzIHdheSwgYWxsIHBhY2thZ2VzIGluIHRoZSBzb3VyY2VcbiAgICogYXJlIGF2YWlsYWJsZSB0byBDb25zdHJ1Y3RIdWIncyBiYWNrZW5kIHByb2Nlc3NpbmcuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm9uZS5cbiAgICovXG4gIHJlYWRvbmx5IGNvZGVBcnRpZmFjdERvbWFpbj86IENvZGVBcnRpZmFjdERvbWFpblByb3BzO1xuXG4gIC8qKlxuICAgKiBDb25maWd1cmF0aW9uIGZvciBjdXN0b20gcGFja2FnZSBwYWdlIGxpbmtzLlxuICAgKi9cbiAgcmVhZG9ubHkgcGFja2FnZUxpbmtzPzogUGFja2FnZUxpbmtDb25maWdbXTtcblxuICAvKipcbiAgICogQ29uZmlndXJhdGlvbiBmb3IgY3VzdG9tIHBhY2thZ2UgdGFnc1xuICAgKi9cbiAgcmVhZG9ubHkgcGFja2FnZVRhZ3M/OiBQYWNrYWdlVGFnW107XG5cbiAgLyoqXG4gICAqIE9wdGlvbmFsIGNvbmZpZ3VyYXRpb24gZm9yIGdyb3VwaW5nIGN1c3RvbSBwYWNrYWdlIHRhZ3NcbiAgICovXG4gIHJlYWRvbmx5IHBhY2thZ2VUYWdHcm91cHM/OiBQYWNrYWdlVGFnR3JvdXBbXTtcblxuICAvKipcbiAgICogQ29uZmlndXJhdGlvbiBmb3IgcGFja2FnZXMgdG8gZmVhdHVyZSBvbiB0aGUgaG9tZSBwYWdlLlxuICAgKiBAZGVmYXVsdCAtIERpc3BsYXkgdGhlIDEwIG1vc3QgcmVjZW50bHkgdXBkYXRlZCBwYWNrYWdlc1xuICAgKi9cbiAgcmVhZG9ubHkgZmVhdHVyZWRQYWNrYWdlcz86IEZlYXR1cmVkUGFja2FnZXM7XG5cbiAgLyoqXG4gICAqIENvbmZpZ3VyZSBmZWF0dXJlIGZsYWdzIGZvciB0aGUgd2ViIGFwcC5cbiAgICovXG4gIHJlYWRvbmx5IGZlYXR1cmVGbGFncz86IEZlYXR1cmVGbGFncztcblxuICAvKipcbiAgICogQ29uZmlndXJlIHdoZXRoZXIgb3Igbm90IHRoZSBiYWNrZW5kIHNob3VsZCBwZXJpb2RpY2FsbHkgcXVlcnkgTlBNXG4gICAqIGZvciB0aGUgbnVtYmVyIG9mIGRvd25sb2FkcyBhIHBhY2thZ2UgaGFzIGluIHRoZSBwYXN0IHdlZWssIGFuZFxuICAgKiBkaXNwbGF5IGRvd25sb2FkIGNvdW50cyBvbiB0aGUgd2ViIGFwcC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSB0cnVlIGlmIHBhY2thZ2VTb3VyY2VzIGlzIG5vdCBzcGVjaWZpZWQgKHRoZSBkZWZhdWx0cyBhcmVcbiAgICogdXNlZCksIGZhbHNlIG90aGVyd2lzZVxuICAgKi9cbiAgcmVhZG9ubHkgZmV0Y2hQYWNrYWdlU3RhdHM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBCcm93c2UgY2F0ZWdvcmllcy4gRWFjaCBjYXRlZ29yeSB3aWxsIGFwcGVhciBpbiB0aGUgaG9tZSBwYWdlIGFzIGEgYnV0dG9uXG4gICAqIHdpdGggYSBsaW5rIHRvIHRoZSByZWxldmFudCBzZWFyY2ggcXVlcnkuXG4gICAqL1xuICByZWFkb25seSBjYXRlZ29yaWVzPzogQ2F0ZWdvcnlbXTtcblxuICAvKipcbiAgICogV2lyZSBjb25zdHJ1Y3QgaHViIHRvIHVzZSB0aGUgZmFpbG92ZXIgc3RvcmFnZSBidWNrZXRzLlxuICAgKlxuICAgKiBEbyBub3QgYWN0aXZhdGUgdGhpcyBwcm9wZXJ0eSB1bnRpbCB5b3UndmUgcG9wdWxhdGVkIHlvdXIgZmFpbG92ZXIgYnVja2V0c1xuICAgKiB3aXRoIHRoZSBuZWNlc3NhcnkgZGF0YS5cbiAgICpcbiAgICogQHNlZSBodHRwczovL2dpdGh1Yi5jb20vY2RrbGFicy9jb25zdHJ1Y3QtaHViL2Jsb2IvZGV2L2RvY3Mvb3BlcmF0b3ItcnVuYm9vay5tZCNzdG9yYWdlLWRpc2FzdGVyXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBmYWlsb3ZlclN0b3JhZ2U/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBIb3cgZnJlcXVlbnRseSBhbGwgcGFja2FnZXMgc2hvdWxkIGdldCBmdWxseSByZXByb2Nlc3NlZC5cbiAgICpcbiAgICogU2VlIHRoZSBvcGVyYXRvciBydW5ib29rIGZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IHJlcHJvY2Vzc2luZy5cbiAgICogQHNlZSBodHRwczovL2dpdGh1Yi5jb20vY2RrbGFicy9jb25zdHJ1Y3QtaHViL2Jsb2IvbWFpbi9kb2NzL29wZXJhdG9yLXJ1bmJvb2subWRcbiAgICpcbiAgICogQGRlZmF1bHQgLSBuZXZlclxuICAgKi9cbiAgcmVhZG9ubHkgcmVwcm9jZXNzRnJlcXVlbmN5PzogRHVyYXRpb247XG5cbiAgLyoqXG4gICAqIFBhY2thZ2UgdmVyc2lvbnMgdGhhdCBoYXZlIGJlZW4gcHVibGlzaGVkIGJlZm9yZSB0aGlzIHRpbWUgd2luZG93IHdpbGwgbm90IGJlIHJlcHJvY2Vzc2VkLlxuICAgKlxuICAgKiBAZGVmYXVsdCBEdXJhdGlvbi5kYXlzKDkwKVxuICAgKi9cbiAgcmVhZG9ubHkgcmVwcm9jZXNzQWdlPzogRHVyYXRpb247XG5cbiAgLyoqXG4gICAqIEFkZGl0aW9uYWwgZG9tYWlucyB3aGljaCB3aWxsIGJlIHNldCB1cCB0byByZWRpcmVjdCB0byB0aGUgcHJpbWFyeVxuICAgKiBjb25zdHJ1Y3QgaHViIGRvbWFpbi5cbiAgICpcbiAgICogQGRlZmF1bHQgW11cbiAgICovXG4gIHJlYWRvbmx5IGFkZGl0aW9uYWxEb21haW5zPzogRG9tYWluUmVkaXJlY3RTb3VyY2VbXTtcblxuICAvKipcbiAgICogSmF2YXNjcmlwdCB0byBydW4gb24gd2ViYXBwIGJlZm9yZSBhcHAgbG9hZHNcbiAgICpcbiAgICogQGRlZmF1bHQgLSBjcmVhdGUgYW4gZW1wdHkgZmlsZVxuICAgKi9cbiAgcmVhZG9ubHkgcHJlbG9hZFNjcmlwdD86IFByZWxvYWRGaWxlO1xuXG4gIC8qKlxuICAgKiBDcmVhdGUgYW4gQXBwUmVnaXN0cnkgYXBwbGljYXRpb24gYXNzb2NpYXRlZCB3aXRoIHRoZSBzdGFjayBjb250YWluaW5nXG4gICAqIHRoaXMgY29uc3RydWN0LlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBhcHBSZWdpc3RyeUFwcGxpY2F0aW9uPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQ29uZmlndXJhdGlvbiBmb3IgZ2VuZXJhdGluZyBSU1MvQXRvbSBmZWVkcyB3aXRoIHRoZSBsYXRlc3QgcGFja2FnZXMuIElmIHRoZSB2YWx1ZSBpcyBtaXNzaW5nXG4gICAqIHRoZSBnZW5lcmF0ZWQgUlNTL0FUT00gZmVlZCB3b3VsZCBub3QgY29udGFpbiByZWxlYXNlIG5vdGVzXG4gICAqL1xuICByZWFkb25seSBmZWVkQ29uZmlndXJhdGlvbj86IEZlZWRDb25maWd1cmF0aW9uO1xufVxuXG4vKipcbiAqIEluZm9ybWF0aW9uIHBlcnRhaW5pbmcgdG8gYW4gZXhpc3RpbmcgQ29kZUFydGlmYWN0IERvbWFpbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb2RlQXJ0aWZhY3REb21haW5Qcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgQ29kZUFydGlmYWN0IGRvbWFpbi5cbiAgICovXG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogQW55IHVwc3RyZWFtIHJlcG9zaXRvcmllcyBpbiB0aGlzIENvZGVBcnRpZmFjdCBkb21haW4gdGhhdCBzaG91bGQgYmVcbiAgICogY29uZmlndXJlZCBvbiB0aGUgaW50ZXJuYWwgQ29kZUFydGlmYWN0IHJlcG9zaXRvcnkuXG4gICAqL1xuICByZWFkb25seSB1cHN0cmVhbXM/OiBzdHJpbmdbXTtcbn1cblxuLyoqXG4gKiBDb25zdHJ1Y3QgSHViLlxuICovXG5leHBvcnQgY2xhc3MgQ29uc3RydWN0SHViIGV4dGVuZHMgQ29uc3RydWN0IGltcGxlbWVudHMgaWFtLklHcmFudGFibGUge1xuICAvKipcbiAgICogVGhlIGZ1bmN0aW9uIG9wZXJhdG9ycyBjYW4gdXNlIHRvIHJlcHJvY2VzcyBhIHNwZWNpZmljIHBhY2thZ2UgdmVyc2lvblxuICAgKiB0aHJvdWdoIHRoZSBiYWNrZW5kIGRhdGEgcGlwZWxpbmUuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgcmVnZW5lcmF0ZUFsbERvY3VtZW50YXRpb25QZXJQYWNrYWdlOiBJU3RhdGVNYWNoaW5lO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgaW5nZXN0aW9uOiBJbmdlc3Rpb247XG4gIHByaXZhdGUgcmVhZG9ubHkgbW9uaXRvcmluZzogTW9uaXRvcmluZztcblxuICBwdWJsaWMgY29uc3RydWN0b3IoXG4gICAgc2NvcGU6IENvbnN0cnVjdCxcbiAgICBpZDogc3RyaW5nLFxuICAgIHByb3BzOiBDb25zdHJ1Y3RIdWJQcm9wcyA9IHt9XG4gICkge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICBpZiAoXG4gICAgICBwcm9wcy5pc29sYXRlU2Vuc2l0aXZlVGFza3MgIT0gbnVsbCAmJlxuICAgICAgcHJvcHMuc2Vuc2l0aXZlVGFza0lzb2xhdGlvbiAhPSBudWxsXG4gICAgKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICdTdXBwbHlpbmcgYm90aCBpc29sYXRlU2Vuc2l0aXZlVGFza3MgYW5kIHNlbnNpdGl2ZVRhc2tJc29sYXRpb24gaXMgbm90IHN1cHBvcnRlZC4gUmVtb3ZlIHVzYWdlIG9mIGlzb2xhdGVTZW5zaXRpdmVUYXNrcy4nXG4gICAgICApO1xuICAgIH1cblxuICAgIGNvbnN0IHNob3VsZEZldGNoUmVsZWFzZU5vdGVzID0gcHJvcHMuZmVlZENvbmZpZ3VyYXRpb24/LmdpdGh1YlRva2VuU2VjcmV0XG4gICAgICA/IHRydWVcbiAgICAgIDogZmFsc2U7XG5cbiAgICBjb25zdCBzdG9yYWdlRmFjdG9yeSA9IFMzU3RvcmFnZUZhY3RvcnkuZ2V0T3JDcmVhdGUodGhpcywge1xuICAgICAgZmFpbG92ZXI6IHByb3BzLmZhaWxvdmVyU3RvcmFnZSxcbiAgICB9KTtcblxuICAgIHRoaXMubW9uaXRvcmluZyA9IG5ldyBNb25pdG9yaW5nKHRoaXMsICdNb25pdG9yaW5nJywge1xuICAgICAgYWxhcm1BY3Rpb25zOiBwcm9wcy5hbGFybUFjdGlvbnMsXG4gICAgfSk7XG5cbiAgICBjb25zdCBvdmVydmlld0Rhc2hib2FyZCA9IG5ldyBPdmVydmlld0Rhc2hib2FyZCh0aGlzLCAnT3ZlcnZpZXdEYXNoYm9hcmQnLCB7XG4gICAgICBsYW1iZGFTZXJ2aWNlQWxhcm1UaHJlc2hvbGQ6IDcwLFxuICAgICAgZGFzaGJvYXJkTmFtZTogcHJvcHMuYmFja2VuZERhc2hib2FyZE5hbWVcbiAgICAgICAgPyBgJHtwcm9wcy5iYWNrZW5kRGFzaGJvYXJkTmFtZX0tb3ZlcnZpZXdgXG4gICAgICAgIDogdW5kZWZpbmVkLFxuICAgIH0pO1xuXG4gICAgY29uc3QgcGFja2FnZURhdGEgPSBzdG9yYWdlRmFjdG9yeS5uZXdCdWNrZXQodGhpcywgJ1BhY2thZ2VEYXRhJywge1xuICAgICAgYmxvY2tQdWJsaWNBY2Nlc3M6IEJsb2NrUHVibGljQWNjZXNzLkJMT0NLX0FMTCxcbiAgICAgIGVuZm9yY2VTU0w6IHRydWUsXG4gICAgICBlbmNyeXB0aW9uOiBzMy5CdWNrZXRFbmNyeXB0aW9uLlMzX01BTkFHRUQsXG4gICAgICBsaWZlY3ljbGVSdWxlczogW1xuICAgICAgICAvLyBBYm9ydCBtdWx0aS1wYXJ0IHVwbG9hZHMgYWZ0ZXIgMSBkYXlcbiAgICAgICAgeyBhYm9ydEluY29tcGxldGVNdWx0aXBhcnRVcGxvYWRBZnRlcjogRHVyYXRpb24uZGF5cygxKSB9LFxuICAgICAgICAvLyBUcmFuc2l0aW9uIG5vbi1jdXJyZW50IG9iamVjdCB2ZXJzaW9ucyB0byBJQSBhZnRlciAxIG1vbnRoXG4gICAgICAgIHtcbiAgICAgICAgICBub25jdXJyZW50VmVyc2lvblRyYW5zaXRpb25zOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHN0b3JhZ2VDbGFzczogczMuU3RvcmFnZUNsYXNzLklORlJFUVVFTlRfQUNDRVNTLFxuICAgICAgICAgICAgICB0cmFuc2l0aW9uQWZ0ZXI6IER1cmF0aW9uLmRheXMoMzEpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdLFxuICAgICAgICB9LFxuICAgICAgICAvLyBQZXJtYW5lbnRseSBkZWxldGUgbm9uLWN1cnJlbnQgb2JqZWN0IHZlcnNpb25zIGFmdGVyIDMgbW9udGhzXG4gICAgICAgIHtcbiAgICAgICAgICBub25jdXJyZW50VmVyc2lvbkV4cGlyYXRpb246IER1cmF0aW9uLmRheXMoOTApLFxuICAgICAgICAgIGV4cGlyZWRPYmplY3REZWxldGVNYXJrZXI6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIC8vIFBlcm1hbmVudGx5IGRlbGV0ZSBub24tY3VycmVudCB2ZXJzaW9ucyBvZiBjYXRhbG9nLmpzb24gZWFybGllclxuICAgICAgICB7IG5vbmN1cnJlbnRWZXJzaW9uRXhwaXJhdGlvbjogRHVyYXRpb24uZGF5cyg3KSwgcHJlZml4OiBDQVRBTE9HX0tFWSB9LFxuICAgICAgXSxcbiAgICAgIHZlcnNpb25lZDogdHJ1ZSxcbiAgICB9KTtcblxuICAgIGNvbnN0IGlzb2xhdGlvbiA9XG4gICAgICBwcm9wcy5zZW5zaXRpdmVUYXNrSXNvbGF0aW9uID8/XG4gICAgICAocHJvcHMuaXNvbGF0ZVNlbnNpdGl2ZVRhc2tzXG4gICAgICAgID8gSXNvbGF0aW9uLk5PX0lOVEVSTkVUX0FDQ0VTU1xuICAgICAgICA6IElzb2xhdGlvbi5VTkxJTUlURURfSU5URVJORVRfQUNDRVNTKTtcblxuICAgIC8vIENyZWF0ZSBhbiBpbnRlcm5hbCBDb2RlQXJ0aWZhY3QgcmVwb3NpdG9yeSBpZiB3ZSBydW4gaW4gbmV0d29yay1jb250cm9sbGVkIG1vZGUsIG9yIGlmIGEgZG9tYWluIGlzIHByb3ZpZGVkLlxuICAgIGNvbnN0IGNvZGVBcnRpZmFjdCA9XG4gICAgICBpc29sYXRpb24gPT09IElzb2xhdGlvbi5OT19JTlRFUk5FVF9BQ0NFU1MgfHxcbiAgICAgICAgcHJvcHMuY29kZUFydGlmYWN0RG9tYWluICE9IG51bGxcbiAgICAgICAgPyBuZXcgUmVwb3NpdG9yeSh0aGlzLCAnQ29kZUFydGlmYWN0Jywge1xuICAgICAgICAgIGRlc2NyaXB0aW9uOiAnUHJveHkgdG8gbnBtanMuY29tIGZvciBDb25zdHJ1Y3RIdWInLFxuICAgICAgICAgIGRvbWFpbk5hbWU6IHByb3BzLmNvZGVBcnRpZmFjdERvbWFpbj8ubmFtZSxcbiAgICAgICAgICBkb21haW5FeGlzdHM6IHByb3BzLmNvZGVBcnRpZmFjdERvbWFpbiAhPSBudWxsLFxuICAgICAgICAgIHVwc3RyZWFtczogcHJvcHMuY29kZUFydGlmYWN0RG9tYWluPy51cHN0cmVhbXMsXG4gICAgICAgIH0pXG4gICAgICAgIDogdW5kZWZpbmVkO1xuICAgIGNvbnN0IHsgdnBjLCB2cGNFbmRwb2ludHMsIHZwY1N1Ym5ldHMsIHZwY1NlY3VyaXR5R3JvdXBzIH0gPSB0aGlzLmNyZWF0ZVZwYyhcbiAgICAgIGlzb2xhdGlvbixcbiAgICAgIGNvZGVBcnRpZmFjdFxuICAgICk7XG5cbiAgICBjb25zdCBkZW55TGlzdCA9IG5ldyBEZW55TGlzdCh0aGlzLCAnRGVueUxpc3QnLCB7XG4gICAgICBydWxlczogcHJvcHMuZGVueUxpc3QgPz8gW10sXG4gICAgICBwYWNrYWdlRGF0YUJ1Y2tldDogcGFja2FnZURhdGEsXG4gICAgICBwYWNrYWdlRGF0YUtleVByZWZpeDogU1RPUkFHRV9LRVlfUFJFRklYLFxuICAgICAgbW9uaXRvcmluZzogdGhpcy5tb25pdG9yaW5nLFxuICAgICAgb3ZlcnZpZXdEYXNoYm9hcmQ6IG92ZXJ2aWV3RGFzaGJvYXJkLFxuICAgIH0pO1xuXG4gICAgLy8gZGlzYWJsZSBmZXRjaGluZyBwYWNrYWdlIHN0YXRzIGJ5IGRlZmF1bHQgaWYgYSBkaWZmZXJlbnQgcGFja2FnZVxuICAgIC8vIHNvdXJjZSBpcyBjb25maWd1cmVkXG4gICAgY29uc3QgZmV0Y2hQYWNrYWdlU3RhdHMgPVxuICAgICAgcHJvcHMuZmV0Y2hQYWNrYWdlU3RhdHMgPz8gKHByb3BzLnBhY2thZ2VTb3VyY2VzID8gZmFsc2UgOiB0cnVlKTtcblxuICAgIGxldCBwYWNrYWdlU3RhdHM6IFBhY2thZ2VTdGF0cyB8IHVuZGVmaW5lZDtcbiAgICBjb25zdCBzdGF0c0tleSA9ICdzdGF0cy5qc29uJztcbiAgICBpZiAoZmV0Y2hQYWNrYWdlU3RhdHMpIHtcbiAgICAgIHBhY2thZ2VTdGF0cyA9IG5ldyBQYWNrYWdlU3RhdHModGhpcywgJ1N0YXRzJywge1xuICAgICAgICBidWNrZXQ6IHBhY2thZ2VEYXRhLFxuICAgICAgICBtb25pdG9yaW5nOiB0aGlzLm1vbml0b3JpbmcsXG4gICAgICAgIGxvZ1JldGVudGlvbjogcHJvcHMubG9nUmV0ZW50aW9uLFxuICAgICAgICBvYmplY3RLZXk6IHN0YXRzS2V5LFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgY29uc3QgdmVyc2lvblRyYWNrZXIgPSBuZXcgVmVyc2lvblRyYWNrZXIodGhpcywgJ1ZlcnNpb25UcmFja2VyJywge1xuICAgICAgYnVja2V0OiBwYWNrYWdlRGF0YSxcbiAgICAgIG1vbml0b3Jpbmc6IHRoaXMubW9uaXRvcmluZyxcbiAgICAgIGxvZ1JldGVudGlvbjogcHJvcHMubG9nUmV0ZW50aW9uLFxuICAgIH0pO1xuXG4gICAgY29uc3QgZmVlZEJ1aWxkZXIgPSBuZXcgRmVlZEJ1aWxkZXIodGhpcywgJ0ZlZWRCdWlsZGVyJywge1xuICAgICAgYnVja2V0OiBwYWNrYWdlRGF0YSxcbiAgICAgIG92ZXJ2aWV3RGFzaGJvYXJkLFxuICAgICAgZmVlZERlc2NyaXB0aW9uOiBwcm9wcy5mZWVkQ29uZmlndXJhdGlvbj8uZmVlZERlc2NyaXB0aW9uLFxuICAgICAgZmVlZFRpdGxlOiBwcm9wcy5mZWVkQ29uZmlndXJhdGlvbj8uZmVlZFRpdGxlLFxuICAgICAgbW9uaXRvcmluZzogdGhpcy5tb25pdG9yaW5nLFxuICAgIH0pO1xuXG4gICAgY29uc3Qgb3JjaGVzdHJhdGlvbiA9IG5ldyBPcmNoZXN0cmF0aW9uKHRoaXMsICdPcmNoZXN0cmF0aW9uJywge1xuICAgICAgYnVja2V0OiBwYWNrYWdlRGF0YSxcbiAgICAgIGNvZGVBcnRpZmFjdCxcbiAgICAgIGRlbnlMaXN0LFxuICAgICAgbG9nUmV0ZW50aW9uOiBwcm9wcy5sb2dSZXRlbnRpb24sXG4gICAgICBtb25pdG9yaW5nOiB0aGlzLm1vbml0b3JpbmcsXG4gICAgICBvdmVydmlld0Rhc2hib2FyZDogb3ZlcnZpZXdEYXNoYm9hcmQsXG4gICAgICB2cGMsXG4gICAgICB2cGNFbmRwb2ludHMsXG4gICAgICB2cGNTdWJuZXRzLFxuICAgICAgdnBjU2VjdXJpdHlHcm91cHMsXG4gICAgICBmZWVkQnVpbGRlcixcbiAgICB9KTtcbiAgICB0aGlzLnJlZ2VuZXJhdGVBbGxEb2N1bWVudGF0aW9uUGVyUGFja2FnZSA9XG4gICAgICBvcmNoZXN0cmF0aW9uLnJlZ2VuZXJhdGVBbGxEb2N1bWVudGF0aW9uUGVyUGFja2FnZTtcblxuICAgIC8vIHJlYnVpbGQgdGhlIGNhdGFsb2cgd2hlbiB0aGUgZGVueSBsaXN0IGNoYW5nZXMuXG4gICAgZGVueUxpc3QucHJ1bmUub25DaGFuZ2VJbnZva2Uob3JjaGVzdHJhdGlvbi5jYXRhbG9nQnVpbGRlci5mdW5jdGlvbik7XG5cbiAgICBjb25zdCBwYWNrYWdlVGFnc1NlcmlhbGl6ZWQgPVxuICAgICAgcHJvcHMucGFja2FnZVRhZ3M/Lm1hcCgoY29uZmlnKSA9PiB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgLi4uY29uZmlnLFxuICAgICAgICAgIGNvbmRpdGlvbjogY29uZmlnLmNvbmRpdGlvbi5iaW5kKCksXG4gICAgICAgIH07XG4gICAgICB9KSA/PyBbXTtcblxuICAgIGxldCByZWxlYXNlTm90ZXM7XG4gICAgaWYgKHNob3VsZEZldGNoUmVsZWFzZU5vdGVzKSB7XG4gICAgICByZWxlYXNlTm90ZXMgPSBuZXcgUmVsZWFzZU5vdGVGZXRjaGVyKHRoaXMsICdSZWxlYXNlTm90ZXMnLCB7XG4gICAgICAgIGJ1Y2tldDogcGFja2FnZURhdGEsXG4gICAgICAgIGdpdEh1YkNyZWRlbnRpYWxzU2VjcmV0OiBwcm9wcy5mZWVkQ29uZmlndXJhdGlvbj8uZ2l0aHViVG9rZW5TZWNyZXQsXG4gICAgICAgIGZlZWRCdWlsZGVyLFxuICAgICAgICBtb25pdG9yaW5nOiB0aGlzLm1vbml0b3JpbmcsXG4gICAgICAgIG92ZXJ2aWV3RGFzaGJvYXJkLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgdGhpcy5pbmdlc3Rpb24gPSBuZXcgSW5nZXN0aW9uKHRoaXMsICdJbmdlc3Rpb24nLCB7XG4gICAgICBidWNrZXQ6IHBhY2thZ2VEYXRhLFxuICAgICAgY29kZUFydGlmYWN0LFxuICAgICAgb3JjaGVzdHJhdGlvbixcbiAgICAgIGxvZ1JldGVudGlvbjogcHJvcHMubG9nUmV0ZW50aW9uLFxuICAgICAgbW9uaXRvcmluZzogdGhpcy5tb25pdG9yaW5nLFxuICAgICAgcGFja2FnZUxpbmtzOiBwcm9wcy5wYWNrYWdlTGlua3MsXG4gICAgICBwYWNrYWdlVGFnczogcGFja2FnZVRhZ3NTZXJpYWxpemVkLFxuICAgICAgcmVwcm9jZXNzRnJlcXVlbmN5OiBwcm9wcy5yZXByb2Nlc3NGcmVxdWVuY3ksXG4gICAgICByZXByb2Nlc3NBZ2U6IHByb3BzLnJlcHJvY2Vzc0FnZSxcbiAgICAgIHJlbGVhc2VOb3Rlc0ZldGNoUXVldWU6IHJlbGVhc2VOb3Rlcz8ucXVldWUsXG4gICAgICBvdmVydmlld0Rhc2hib2FyZDogb3ZlcnZpZXdEYXNoYm9hcmQsXG4gICAgfSk7XG5cbiAgICBjb25zdCBsaWNlbnNlTGlzdCA9IG5ldyBMaWNlbnNlTGlzdCh0aGlzLCAnTGljZW5zZUxpc3QnLCB7XG4gICAgICBsaWNlbnNlczogcHJvcHMuYWxsb3dlZExpY2Vuc2VzID8/IFtcbiAgICAgICAgLi4uU3BkeExpY2Vuc2UuYXBhY2hlKCksXG4gICAgICAgIC4uLlNwZHhMaWNlbnNlLmJzZCgpLFxuICAgICAgICAuLi5TcGR4TGljZW5zZS5jZGRsKCksXG4gICAgICAgIC4uLlNwZHhMaWNlbnNlLmVwbCgpLFxuICAgICAgICBTcGR4TGljZW5zZS5JU0MsXG4gICAgICAgIC4uLlNwZHhMaWNlbnNlLm1pdCgpLFxuICAgICAgICBTcGR4TGljZW5zZS5NUExfMl8wLFxuICAgICAgXSxcbiAgICB9KTtcblxuICAgIGNvbnN0IHdlYkFwcCA9IG5ldyBXZWJBcHAodGhpcywgJ1dlYkFwcCcsIHtcbiAgICAgIGRvbWFpbjogcHJvcHMuZG9tYWluLFxuICAgICAgbW9uaXRvcmluZzogdGhpcy5tb25pdG9yaW5nLFxuICAgICAgcGFja2FnZURhdGEsXG4gICAgICBwYWNrYWdlTGlua3M6IHByb3BzLnBhY2thZ2VMaW5rcyxcbiAgICAgIHBhY2thZ2VUYWdzOiBwYWNrYWdlVGFnc1NlcmlhbGl6ZWQsXG4gICAgICBwYWNrYWdlVGFnR3JvdXBzOiBwcm9wcy5wYWNrYWdlVGFnR3JvdXBzLFxuICAgICAgZmVhdHVyZWRQYWNrYWdlczogcHJvcHMuZmVhdHVyZWRQYWNrYWdlcyxcbiAgICAgIHBhY2thZ2VTdGF0cyxcbiAgICAgIGZlYXR1cmVGbGFnczogcHJvcHMuZmVhdHVyZUZsYWdzLFxuICAgICAgY2F0ZWdvcmllczogcHJvcHMuY2F0ZWdvcmllcyxcbiAgICAgIHByZWxvYWRTY3JpcHQ6IHByb3BzLnByZWxvYWRTY3JpcHQsXG4gICAgICBvdmVydmlld0Rhc2hib2FyZDogb3ZlcnZpZXdEYXNoYm9hcmQsXG4gICAgICBpbmNsdWRlRmVlZExpbms6IHRydWUsXG4gICAgfSk7XG5cbiAgICAvLyBTZXQgdGhlIGJhc2UgVVJMIHRoYXQgd2lsbCBiZSB1c2VkIGluIHRoZSBSU1MvQVRPTSBmZWVkXG4gICAgZmVlZEJ1aWxkZXIuc2V0Q29uc3RydWN0SHViVXJsKHdlYkFwcC5iYXNlVXJsKTtcblxuICAgIGNvbnN0IHNvdXJjZXMgPSBuZXcgQ29uc3RydWN0KHRoaXMsICdTb3VyY2VzJyk7XG4gICAgY29uc3QgcGFja2FnZVNvdXJjZXMgPSAocHJvcHMucGFja2FnZVNvdXJjZXMgPz8gW25ldyBOcG1KcygpXSkubWFwKFxuICAgICAgKHNvdXJjZSkgPT5cbiAgICAgICAgc291cmNlLmJpbmQoc291cmNlcywge1xuICAgICAgICAgIGJhc2VVcmw6IHdlYkFwcC5iYXNlVXJsLFxuICAgICAgICAgIGRlbnlMaXN0LFxuICAgICAgICAgIGluZ2VzdGlvbjogdGhpcy5pbmdlc3Rpb24sXG4gICAgICAgICAgbGljZW5zZUxpc3QsXG4gICAgICAgICAgbW9uaXRvcmluZzogdGhpcy5tb25pdG9yaW5nLFxuICAgICAgICAgIHF1ZXVlOiB0aGlzLmluZ2VzdGlvbi5xdWV1ZSxcbiAgICAgICAgICByZXBvc2l0b3J5OiBjb2RlQXJ0aWZhY3QsXG4gICAgICAgICAgb3ZlcnZpZXdEYXNoYm9hcmQ6IG92ZXJ2aWV3RGFzaGJvYXJkLFxuICAgICAgICB9KVxuICAgICk7XG5cbiAgICBjb25zdCBpbnZlbnRvcnkgPSBuZXcgSW52ZW50b3J5KHRoaXMsICdJbnZlbnRvcnlDYW5hcnknLCB7XG4gICAgICBidWNrZXQ6IHBhY2thZ2VEYXRhLFxuICAgICAgbG9nUmV0ZW50aW9uOiBwcm9wcy5sb2dSZXRlbnRpb24sXG4gICAgICBtb25pdG9yaW5nOiB0aGlzLm1vbml0b3JpbmcsXG4gICAgICBvdmVydmlld0Rhc2hib2FyZDogb3ZlcnZpZXdEYXNoYm9hcmQsXG4gICAgfSk7XG5cbiAgICBuZXcgQmFja2VuZERhc2hib2FyZCh0aGlzLCAnQmFja2VuZERhc2hib2FyZCcsIHtcbiAgICAgIHBhY2thZ2VEYXRhLFxuICAgICAgZGFzaGJvYXJkTmFtZTogcHJvcHMuYmFja2VuZERhc2hib2FyZE5hbWUsXG4gICAgICBwYWNrYWdlU291cmNlcyxcbiAgICAgIGluZ2VzdGlvbjogdGhpcy5pbmdlc3Rpb24sXG4gICAgICBpbnZlbnRvcnksXG4gICAgICBvcmNoZXN0cmF0aW9uLFxuICAgICAgZGVueUxpc3QsXG4gICAgICBwYWNrYWdlU3RhdHMsXG4gICAgICB2ZXJzaW9uVHJhY2tlcixcbiAgICAgIHJlbGVhc2VOb3RlcyxcbiAgICB9KTtcblxuICAgIC8vIGFkZCBkb21haW4gcmVkaXJlY3RzXG4gICAgaWYgKHByb3BzLmRvbWFpbikge1xuICAgICAgZm9yIChjb25zdCByZWRpcmN0U291cmNlIG9mIHByb3BzLmFkZGl0aW9uYWxEb21haW5zID8/IFtdKSB7XG4gICAgICAgIG5ldyBEb21haW5SZWRpcmVjdChcbiAgICAgICAgICB0aGlzLFxuICAgICAgICAgIGBSZWRpcmVjdC0ke3JlZGlyY3RTb3VyY2UuaG9zdGVkWm9uZS56b25lTmFtZX1gLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHNvdXJjZTogcmVkaXJjdFNvdXJjZSxcbiAgICAgICAgICAgIHRhcmdldERvbWFpbk5hbWU6IHByb3BzLmRvbWFpbj8uem9uZS56b25lTmFtZSxcbiAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChwcm9wcy5hZGRpdGlvbmFsRG9tYWlucyAmJiBwcm9wcy5hZGRpdGlvbmFsRG9tYWlucy5sZW5ndGggPiAwKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAnQ2Fubm90IHNwZWNpZnkgXCJkb21haW5SZWRpcmVjdHNcIiBpZiBhIGRvbWFpbiBpcyBub3Qgc3BlY2lmaWVkJ1xuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChwcm9wcy5hcHBSZWdpc3RyeUFwcGxpY2F0aW9uID8/IHRydWUpIHtcbiAgICAgIGNvbnN0IGFwcGxpY2F0aW9uID0gbmV3IEFwcGxpY2F0aW9uKHRoaXMsICdBcHBsaWNhdGlvbicsIHtcbiAgICAgICAgYXBwbGljYXRpb25OYW1lOiAnQ29uc3RydWN0SHViJyxcbiAgICAgIH0pO1xuICAgICAgYXBwbGljYXRpb24uYXNzb2NpYXRlQXBwbGljYXRpb25XaXRoU3RhY2soU3RhY2sub2YodGhpcykpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGEgbGlzdCBvZiBhbGwgaGlnaC1zZXZlcml0eSBhbGFybXMgZnJvbSB0aGlzIENvbnN0cnVjdEh1YiBpbnN0YW5jZS5cbiAgICogVGhlc2Ugd2FycmFudCBpbW1lZGlhdGUgYXR0ZW50aW9uIGFzIHRoZXkgYXJlIGluZGljYXRpdmUgb2YgYSBzeXN0ZW0gaGVhbHRoXG4gICAqIGlzc3VlLlxuICAgKi9cbiAgcHVibGljIGdldCBoaWdoU2V2ZXJpdHlBbGFybXMoKTogY3cuSUFsYXJtW10ge1xuICAgIC8vIE5vdGU6IHRoZSBhcnJheSBpcyBhbHJlYWR5IHJldHVybmVkIGJ5LWNvcHkgYnkgTW9uaXRvcmluZywgc28gbm90IGNvcHlpbmcgYWdhaW4uXG4gICAgcmV0dXJuIHRoaXMubW9uaXRvcmluZy5oaWdoU2V2ZXJpdHlBbGFybXM7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhIGxpc3Qgb2YgYWxsIGxvdy1zZXZlcml0eSBhbGFybXMgZnJvbSB0aGlzIENvbnN0cnVjdEh1YiBpbnN0YW5jZS5cbiAgICogVGhlc2UgZG8gbm90IG5lY2Vzc2l0YXRlIGltbWVkaWF0ZSBhdHRlbnRpb24sIGFzIHRoZXkgZG8gbm90IGhhdmUgZGlyZWN0XG4gICAqIGN1c3RvbWVyLXZpc2libGUgaW1wYWN0LCBvciBoYW5kbGluZyBpcyBub3QgdGltZS1zZW5zaXRpdmUuIFRoZXkgaW5kaWNhdGVcbiAgICogdGhhdCBzb21ldGhpbmcgdW51c3VhbCAobm90IG5lY2Vzc2FyaWx5IGJhZCkgaXMgaGFwcGVuaW5nLlxuICAgKi9cbiAgcHVibGljIGdldCBtZWRpdW1TZXZlcml0eUFsYXJtcygpOiBjdy5JQWxhcm1bXSB7XG4gICAgLy8gTm90ZTogdGhlIGFycmF5IGlzIGFscmVhZHkgcmV0dXJuZWQgYnktY29weSBieSBNb25pdG9yaW5nLCBzbyBub3QgY29weWluZyBhZ2Fpbi5cbiAgICByZXR1cm4gdGhpcy5tb25pdG9yaW5nLm1lZGl1bVNldmVyaXR5QWxhcm1zO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYSBsaXN0IG9mIGFsbCBsb3ctc2V2ZXJpdHkgYWxhcm1zIGZyb20gdGhpcyBDb25zdHJ1Y3RIdWIgaW5zdGFuY2UuXG4gICAqIFRoZXNlIGRvIG5vdCBuZWNlc3NpdGF0ZSBpbW1lZGlhdGUgYXR0ZW50aW9uLCBhcyB0aGV5IGRvIG5vdCBoYXZlIGRpcmVjdFxuICAgKiBjdXN0b21lci12aXNpYmxlIGltcGFjdCwgb3IgaGFuZGxpbmcgaXMgbm90IHRpbWUtc2Vuc2l0aXZlLiBUaGV5IGluZGljYXRlXG4gICAqIHRoYXQgc29tZXRoaW5nIHVudXN1YWwgKG5vdCBuZWNlc3NhcmlseSBiYWQpIGlzIGhhcHBlbmluZy5cbiAgICovXG4gIHB1YmxpYyBnZXQgbG93U2V2ZXJpdHlBbGFybXMoKTogY3cuSUFsYXJtW10ge1xuICAgIC8vIE5vdGU6IHRoZSBhcnJheSBpcyBhbHJlYWR5IHJldHVybmVkIGJ5LWNvcHkgYnkgTW9uaXRvcmluZywgc28gbm90IGNvcHlpbmcgYWdhaW4uXG4gICAgcmV0dXJuIHRoaXMubW9uaXRvcmluZy5sb3dTZXZlcml0eUFsYXJtcztcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGEgbGlzdCBvZiBhbGwgYWxhcm1zIGNvbmZpZ3VyZWQgYnkgdGhpcyBDb25zdHJ1Y3RIdWIgaW5zdGFuY2UuXG4gICAqL1xuICBwdWJsaWMgZ2V0IGFsbEFsYXJtcygpOiBjdy5JQWxhcm1bXSB7XG4gICAgcmV0dXJuIFsuLi50aGlzLmhpZ2hTZXZlcml0eUFsYXJtcywgLi4udGhpcy5sb3dTZXZlcml0eUFsYXJtcywgLi4udGhpcy5tZWRpdW1TZXZlcml0eUFsYXJtc107XG4gIH1cblxuICBwdWJsaWMgZ2V0IGdyYW50UHJpbmNpcGFsKCk6IGlhbS5JUHJpbmNpcGFsIHtcbiAgICByZXR1cm4gdGhpcy5pbmdlc3Rpb24uZ3JhbnRQcmluY2lwYWw7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGluZ2VzdGlvblF1ZXVlKCk6IHNxcy5JUXVldWUge1xuICAgIHJldHVybiB0aGlzLmluZ2VzdGlvbi5xdWV1ZTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlVnBjKFxuICAgIGlzb2xhdGlvbjogSXNvbGF0aW9uLFxuICAgIGNvZGVBcnRpZmFjdDogUmVwb3NpdG9yeSB8IHVuZGVmaW5lZFxuICApIHtcbiAgICBpZiAoaXNvbGF0aW9uID09PSBJc29sYXRpb24uVU5MSU1JVEVEX0lOVEVSTkVUX0FDQ0VTUykge1xuICAgICAgcmV0dXJuIHsgdnBjOiB1bmRlZmluZWQsIHZwY0VuZHBvaW50czogdW5kZWZpbmVkLCB2cGNTdWJuZXRzOiB1bmRlZmluZWQgfTtcbiAgICB9XG5cbiAgICBjb25zdCBzdWJuZXRUeXBlID1cbiAgICAgIGlzb2xhdGlvbiA9PT0gSXNvbGF0aW9uLk5PX0lOVEVSTkVUX0FDQ0VTU1xuICAgICAgICA/IGVjMi5TdWJuZXRUeXBlLlBSSVZBVEVfSVNPTEFURURcbiAgICAgICAgOiBlYzIuU3VibmV0VHlwZS5QUklWQVRFX1dJVEhfRUdSRVNTO1xuICAgIGNvbnN0IHZwY1N1Ym5ldHMgPSB7IHN1Ym5ldFR5cGUgfTtcblxuICAgIGNvbnN0IHZwYyA9IG5ldyBlYzIuVnBjKHRoaXMsICdWUEMnLCB7XG4gICAgICBlbmFibGVEbnNIb3N0bmFtZXM6IHRydWUsXG4gICAgICBlbmFibGVEbnNTdXBwb3J0OiB0cnVlLFxuICAgICAgLy8gUHJvdmlzaW9uIG5vIE5BVCBnYXRld2F5cyBpZiB3ZSBhcmUgcnVubmluZyBJU09MQVRFRCAod2Ugd291bGRuJ3QgaGF2ZSBhIHB1YmxpYyBzdWJuZXQpXG4gICAgICBuYXRHYXRld2F5czpcbiAgICAgICAgc3VibmV0VHlwZSA9PT0gZWMyLlN1Ym5ldFR5cGUuUFJJVkFURV9JU09MQVRFRCA/IDAgOiB1bmRlZmluZWQsXG4gICAgICAvLyBQcmUtYWxsb2NhdGluZyBQVUJMSUMgLyBQUklWQVRFIC8gSU5URVJOQUwgc3VibmV0cywgcmVnYXJkbGVzcyBvZiB1c2UsIHNvIHdlIGRvbid0IGNyZWF0ZVxuICAgICAgLy8gYSB3aG9sZSBuZXcgVlBDIGlmIHdlIGV2ZXIgbmVlZCB0byBpbnRyb2R1Y2Ugc3VibmV0cyBvZiB0aGVzZSB0eXBlcy5cbiAgICAgIHN1Ym5ldENvbmZpZ3VyYXRpb246IFtcbiAgICAgICAgLy8gSWYgdGhlcmUgaXMgYSBQUklWQVRFIHN1Ym5ldCwgdGhlcmUgbXVzdCBhbHNvIGhhdmUgYSBQVUJMSUMgc3VibmV0IChmb3IgTkFUIGdhdGV3YXlzKS5cbiAgICAgICAge1xuICAgICAgICAgIG5hbWU6ICdQdWJsaWMnLFxuICAgICAgICAgIHN1Ym5ldFR5cGU6IGVjMi5TdWJuZXRUeXBlLlBVQkxJQyxcbiAgICAgICAgICByZXNlcnZlZDogc3VibmV0VHlwZSA9PT0gZWMyLlN1Ym5ldFR5cGUuUFJJVkFURV9JU09MQVRFRCxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIG5hbWU6ICdQcml2YXRlJyxcbiAgICAgICAgICBzdWJuZXRUeXBlOiBlYzIuU3VibmV0VHlwZS5QUklWQVRFX1dJVEhfRUdSRVNTLFxuICAgICAgICAgIHJlc2VydmVkOiBzdWJuZXRUeXBlID09PSBlYzIuU3VibmV0VHlwZS5QUklWQVRFX0lTT0xBVEVELFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgbmFtZTogJ0lzb2xhdGVkJyxcbiAgICAgICAgICBzdWJuZXRUeXBlOiBlYzIuU3VibmV0VHlwZS5QUklWQVRFX0lTT0xBVEVELFxuICAgICAgICAgIHJlc2VydmVkOiBzdWJuZXRUeXBlICE9PSBlYzIuU3VibmV0VHlwZS5QUklWQVRFX0lTT0xBVEVELFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9KTtcbiAgICBUYWdzLm9mKHZwYy5ub2RlLmRlZmF1bHRDaGlsZCEpLmFkZCgnTmFtZScsIHZwYy5ub2RlLnBhdGgpO1xuXG4gICAgY29uc3Qgc2VjdXJpdHlHcm91cHMgPVxuICAgICAgc3VibmV0VHlwZSA9PT0gZWMyLlN1Ym5ldFR5cGUuUFJJVkFURV9XSVRIX0VHUkVTU1xuICAgICAgICA/IGNyZWF0ZVJlc3RyaWN0ZWRTZWN1cml0eUdyb3Vwcyh0aGlzLCB2cGMpXG4gICAgICAgIDogdW5kZWZpbmVkO1xuXG4gICAgLy8gQ3JlYXRpbmcgdGhlIENvZGVBcnRpZmFjdCBlbmRwb2ludHMgb25seSBpZiBhIHJlcG9zaXRvcnkgaXMgcHJlc2VudC5cbiAgICBjb25zdCBjb2RlQXJ0aWZhY3RFbmRwb2ludHMgPSBjb2RlQXJ0aWZhY3QgJiYge1xuICAgICAgY29kZUFydGlmYWN0QXBpOiB2cGMuYWRkSW50ZXJmYWNlRW5kcG9pbnQoJ0NvZGVBcnRpZmFjdC5BUEknLCB7XG4gICAgICAgIHByaXZhdGVEbnNFbmFibGVkOiBmYWxzZSxcbiAgICAgICAgc2VydmljZTogbmV3IGVjMi5JbnRlcmZhY2VWcGNFbmRwb2ludEF3c1NlcnZpY2UoJ2NvZGVhcnRpZmFjdC5hcGknKSxcbiAgICAgICAgc3VibmV0czogdnBjU3VibmV0cyxcbiAgICAgICAgc2VjdXJpdHlHcm91cHMsXG4gICAgICB9KSxcbiAgICAgIGNvZGVBcnRpZmFjdDogdnBjLmFkZEludGVyZmFjZUVuZHBvaW50KCdDb2RlQXJ0aWZhY3QnLCB7XG4gICAgICAgIHByaXZhdGVEbnNFbmFibGVkOiB0cnVlLFxuICAgICAgICBzZXJ2aWNlOiBuZXcgZWMyLkludGVyZmFjZVZwY0VuZHBvaW50QXdzU2VydmljZShcbiAgICAgICAgICAnY29kZWFydGlmYWN0LnJlcG9zaXRvcmllcydcbiAgICAgICAgKSxcbiAgICAgICAgc3VibmV0czogdnBjU3VibmV0cyxcbiAgICAgICAgc2VjdXJpdHlHcm91cHMsXG4gICAgICB9KSxcbiAgICB9O1xuXG4gICAgLy8gV2UnbGwgb25seSB1c2UgVlBDIGVuZHBvaW50cyBpZiB3ZSBhcmUgY29uZmlndXJlZCB0byBydW4gaW4gYW4gSVNPTEFURUQgc3VibmV0LlxuICAgIGNvbnN0IHZwY0VuZHBvaW50cyA9IHtcbiAgICAgIC4uLmNvZGVBcnRpZmFjdEVuZHBvaW50cyxcbiAgICAgIC8vIFRoaXMgaXMgbmVlZGVkIHNvIHRoYXQgRUNTIHdvcmtsb2FkcyBjYW4gdXNlIHRoZSBhd3Nsb2dzIGRyaXZlclxuICAgICAgY2xvdWRXYXRjaExvZ3M6IHZwYy5hZGRJbnRlcmZhY2VFbmRwb2ludCgnQ2xvdWRXYXRjaC5Mb2dzJywge1xuICAgICAgICBwcml2YXRlRG5zRW5hYmxlZDogdHJ1ZSxcbiAgICAgICAgc2VydmljZTogZWMyLkludGVyZmFjZVZwY0VuZHBvaW50QXdzU2VydmljZS5DTE9VRFdBVENIX0xPR1MsXG4gICAgICAgIHN1Ym5ldHM6IHZwY1N1Ym5ldHMsXG4gICAgICAgIHNlY3VyaXR5R3JvdXBzLFxuICAgICAgfSksXG4gICAgICAvLyBUaGVzZSBhcmUgbmVlZGVkIGZvciBFQ1Mgd29ya2xvYWRzIHRvIGJlIGFibGUgdG8gcHVsbCBpbWFnZXNcbiAgICAgIGVjckFwaTogdnBjLmFkZEludGVyZmFjZUVuZHBvaW50KCdFQ1IuQVBJJywge1xuICAgICAgICBwcml2YXRlRG5zRW5hYmxlZDogdHJ1ZSxcbiAgICAgICAgc2VydmljZTogZWMyLkludGVyZmFjZVZwY0VuZHBvaW50QXdzU2VydmljZS5FQ1IsXG4gICAgICAgIHN1Ym5ldHM6IHZwY1N1Ym5ldHMsXG4gICAgICAgIHNlY3VyaXR5R3JvdXBzLFxuICAgICAgfSksXG4gICAgICBlY3I6IHZwYy5hZGRJbnRlcmZhY2VFbmRwb2ludCgnRUNSLkRvY2tlcicsIHtcbiAgICAgICAgcHJpdmF0ZURuc0VuYWJsZWQ6IHRydWUsXG4gICAgICAgIHNlcnZpY2U6IGVjMi5JbnRlcmZhY2VWcGNFbmRwb2ludEF3c1NlcnZpY2UuRUNSX0RPQ0tFUixcbiAgICAgICAgc3VibmV0czogdnBjU3VibmV0cyxcbiAgICAgICAgc2VjdXJpdHlHcm91cHMsXG4gICAgICB9KSxcbiAgICAgIC8vIFRoaXMgaXMgbmVlZGVkIChhbW9uZyBvdGhlcnMpIGZvciBDb2RlQXJ0aWZhY3QgcmVnaXN0cnkgdXNhZ2VcbiAgICAgIHMzOiB2cGMuYWRkR2F0ZXdheUVuZHBvaW50KCdTMycsIHtcbiAgICAgICAgc2VydmljZTogZWMyLkdhdGV3YXlWcGNFbmRwb2ludEF3c1NlcnZpY2UuUzMsXG4gICAgICAgIHN1Ym5ldHM6IFt2cGNTdWJuZXRzXSxcbiAgICAgIH0pLFxuICAgICAgLy8gVGhpcyBpcyB1c2VmdWwgZm9yIGdldHRpbmcgcmVzdWx0cyBmcm9tIEVDUyB0YXNrcyB3aXRoaW4gd29ya2Zsb3dzXG4gICAgICBzdGVwRnVuY3Rpb25zOiB2cGMuYWRkSW50ZXJmYWNlRW5kcG9pbnQoJ1N0ZXBGdW5jdGlvbnMnLCB7XG4gICAgICAgIHByaXZhdGVEbnNFbmFibGVkOiB0cnVlLFxuICAgICAgICBzZXJ2aWNlOiBlYzIuSW50ZXJmYWNlVnBjRW5kcG9pbnRBd3NTZXJ2aWNlLlNURVBfRlVOQ1RJT05TLFxuICAgICAgICBzdWJuZXRzOiB2cGNTdWJuZXRzLFxuICAgICAgICBzZWN1cml0eUdyb3VwcyxcbiAgICAgIH0pLFxuICAgIH07XG5cbiAgICAvLyBUaGUgUzMgYWNjZXNzIGlzIG5lY2Vzc2FyeSBmb3IgdGhlIENvZGVBcnRpZmFjdCBSZXBvc2l0b3J5IGFuZCBFQ1IgRG9ja2VyXG4gICAgLy8gZW5kcG9pbnRzIHRvIGJlIHVzZWQgKHRoZXkgc2VydmUgb2JqZWN0cyBmcm9tIFMzKS5cbiAgICB2cGNFbmRwb2ludHMuczMuYWRkVG9Qb2xpY3koXG4gICAgICBuZXcgUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgZWZmZWN0OiBFZmZlY3QuQUxMT1csXG4gICAgICAgIGFjdGlvbnM6IFsnczM6R2V0T2JqZWN0J10sXG4gICAgICAgIHJlc291cmNlczogW1xuICAgICAgICAgIC8vIFRoZSBpbi1yZWdpb24gQ29kZUFydGlmYWN0IFMzIEJ1Y2tldFxuICAgICAgICAgIC4uLihjb2RlQXJ0aWZhY3QgPyBbYCR7Y29kZUFydGlmYWN0LnMzQnVja2V0QXJufS8qYF0gOiBbXSksXG4gICAgICAgICAgLy8gVGhlIGluLXJlZ2lvbiBFQ1IgbGF5ZXIgYnVja2V0XG4gICAgICAgICAgYGFybjphd3M6czM6Ojpwcm9kLSR7U3RhY2sub2YodGhpcykucmVnaW9ufS1zdGFycG9ydC1sYXllci1idWNrZXQvKmAsXG4gICAgICAgIF0sXG4gICAgICAgIC8vIEl0IGRvZXNuJ3Qgc2VlbSB3ZSBjYW4gY29uc3RyYWluIHByaW5jaXBhbHMgZm9yIHRoZXNlIGdyYW50cyAodW5jbGVhclxuICAgICAgICAvLyB3aGljaCBwcmluY2lwYWwgdGhvc2UgY2FsbHMgYXJlIG1hZGUgZnJvbSwgb3IgaWYgdGhhdCBpcyBzb21ldGhpbmcgd2VcbiAgICAgICAgLy8gY291bGQgbmFtZSBoZXJlKS5cbiAgICAgICAgcHJpbmNpcGFsczogW25ldyBBbnlQcmluY2lwYWwoKV0sXG4gICAgICAgIHNpZDogJ0FsbG93LUNvZGVBcnRpZmFjdC1hbmQtRUNSJyxcbiAgICAgIH0pXG4gICAgKTtcblxuICAgIHJldHVybiB7IHZwYywgdnBjRW5kcG9pbnRzLCB2cGNTdWJuZXRzLCB2cGNTZWN1cml0eUdyb3Vwczogc2VjdXJpdHlHcm91cHMgfTtcbiAgfVxufVxuXG4vKipcbiAqIEhvdyBwb3NzaWJseSByaXNreSBvcGVyYXRpb25zIChzdWNoIGFzIGRvYy1nZW5lcmF0aW9uLCB3aGljaCByZXF1aXJlc1xuICogaW5zdGFsbGluZyB0aGUgaW5kZXhlZCBwYWNrYWdlcyBpbiBvcmRlciB0byB0cmFucy1saXRlcmF0ZSBzYW1wbGUgY29kZSkgYXJlXG4gKiBpc29sYXRlZCB0byBtaXRpZ2F0ZSBwb3NzaWJsZSBhcmJpdHJhcnkgY29kZSBleGVjdXRpb24gdnVsbmVyYWJpbGl0aWVzIGluIGFuZFxuICogYXJvdW5kIGBucG0gaW5zdGFsbGAgb3IgdGhlIHRyYW5zbGl0ZXJhdG9yJ3MgdXNlIG9mIHRoZSBUeXBlU2NyaXB0IGNvbXBpbGVyLlxuICovXG5leHBvcnQgZW51bSBJc29sYXRpb24ge1xuICAvKipcbiAgICogTm8gaXNvbGF0aW9uIGlzIGRvbmUgd2hhdHNvZXZlci4gVGhlIGRvYy1nZW5lcmF0aW9uIHByb2Nlc3Mgc3RpbGwgaXNcbiAgICogcHJvdmlzaW9uZWQgd2l0aCBsZWFzdC1wcml2aWxlZ2UgcGVybWlzc2lvbnMsIGJ1dCByZXRhaW5zIGNvbXBsZXRlIGFjY2Vzc1xuICAgKiB0byBpbnRlcm5ldC5cbiAgICpcbiAgICogV2hpbGUgdGhpcyBtYXhpbWl6ZXMgdGhlIGNoYW5jZXMgb2Ygc3VjY2Vzc2Z1bGx5IGluc3RhbGxpbmcgcGFja2FnZXMgKGFuZFxuICAgKiBoZW5jZSBzdWNjZXNzZnVsbHkgZ2VuZXJhdGluZyBkb2N1bWVudGF0aW9uIGZvciB0aG9zZSksIGl0IGlzIGFsc28gdGhlXG4gICAqIGxlYXN0IHNlY3VyZSBtb2RlIG9mIG9wZXJhdGlvbi5cbiAgICpcbiAgICogV2UgYWR2aXNlIHlvdSBvbmx5IGNvbnNpZGVyIHVzaW5nIHRoaXMgaXNvbGF0aW9uIG1vZGUgaWYgeW91IGFyZSBob3N0aW5nIGFcbiAgICogQ29uc3RydWN0SHViIGluc3RhbmNlIHRoYXQgb25seSBpbmRleGVzIHRydXN0ZWQgcGFja2FnZXMgKGluY2x1ZGluZ1xuICAgKiB0cmFuc2l0aXZlIGRlcGVuZGVuY2llcykuXG4gICAqL1xuICBVTkxJTUlURURfSU5URVJORVRfQUNDRVNTLFxuXG4gIC8qKlxuICAgKiBUaGUgc2FtZSBwcm90ZWN0aW9ucyBhcyBgVU5MSU1JVEVEX0lOVEVSTkVUX0FDQ0VTU2AsIGV4Y2VwdCBvdXRib3VuZFxuICAgKiBpbnRlcm5ldCBjb25uZWN0aW9ucyBhcmUgbGltaXRlZCB0byBJUCBhZGRyZXNzIHJhbmdlcyBjb3JyZXNwb25kaW5nIHRvXG4gICAqIGhvc3RpbmcgZW5kcG9pbnRzIGZvciBucG1qcy5jb20uXG4gICAqL1xuICBMSU1JVEVEX0lOVEVSTkVUX0FDQ0VTUyxcblxuICAvKipcbiAgICogVGhlIHNhbWUgcHJvdGVjdGlvbnMgYXMgYExJTUlURURfSU5URVJORVRfQUNDRVNTYCwgZXhjZXB0IGFsbCByZW1haW5pbmdcbiAgICogaW50ZXJuZXQgYWNjZXNzIGlzIHJlbW92ZWQuIEFsbCB0cmFmZmljIHRvIEFXUyBzZXJ2aWNlIGVuZHBvaW50cyBpcyByb3V0ZWRcbiAgICogdGhyb3VnaCBWUEMgRW5kcG9pbnRzLCBhcyB0aGUgY29tcHV0ZSBub2RlcyBhcmUgamFpbGVkIGluIGEgY29tcGxldGVseVxuICAgKiBpc29sYXRlZCBWUEMuXG4gICAqXG4gICAqIFRoaXMgaXMgdGhlIG1vc3Qgc2VjdXJlIChhbmQgcmVjb21tZW5kZWQpIG1vZGUgb2Ygb3BlcmF0aW9uIGZvclxuICAgKiBDb25zdHJ1Y3RIdWIgaW5zdGFuY2VzLlxuICAgKi9cbiAgTk9fSU5URVJORVRfQUNDRVNTLFxufVxuIl19
@@ -12,6 +12,14 @@ export interface IMonitoring {
12
12
  * @param alarm the alarm to be added to the high-severity dashboard.
13
13
  */
14
14
  addHighSeverityAlarm(title: string, alarm: AlarmBase): void;
15
+ /**
16
+ * Adds a medium-severity alarm. If this alarm goes off, the action specified in
17
+ * `mediumSeverityAlarmAction` is triggered.
18
+ *
19
+ * @param title a user-friendly title for the alarm (not currently used).
20
+ * @param alarm the alarm to be added.
21
+ */
22
+ addMediumSeverityAlarm(title: string, alarm: AlarmBase): void;
15
23
  /**
16
24
  * Adds a low-severity alarm. If this alarm goes off, the action specified in
17
25
  * `normalAlarmAction` is triggered.
@@ -1,3 +1,3 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL21vbml0b3JpbmcvYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEFsYXJtQmFzZSB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1jbG91ZHdhdGNoJztcblxuLyoqXG4gKiBDb25zdHJ1Y3RIdWIgbW9uaXRvcmluZyBmZWF0dXJlcyBleHBvc2VkIHRvIGV4dGVuc2lvbiBwb2ludHMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSU1vbml0b3Jpbmcge1xuICAvKipcbiAgICogQWRkcyBhIGhpZ2gtc2V2ZXJpdHkgYWxhcm0uIElmIHRoaXMgYWxhcm0gZ29lcyBvZmYsIHRoZSBhY3Rpb24gc3BlY2lmaWVkIGluXG4gICAqIGBoaWdoU2V2ZXJpdHlBbGFybUFjdGlvbkFybmAgaXMgdHJpZ2dlcmVkLlxuICAgKlxuICAgKiBAcGFyYW0gdGl0bGUgYSB1c2VyLWZyaWVuZGx5IHRpdGxlIGZvciB0aGUgYWxhcm0gKHdpbGwgYmUgcmVuZGVyZWQgb24gdGhlXG4gICAqICAgICAgICAgICAgICBoaWdoLXNldmVyaXR5IENsb3VkV2F0Y2ggZGFzaGJvYXJkKVxuICAgKiBAcGFyYW0gYWxhcm0gdGhlIGFsYXJtIHRvIGJlIGFkZGVkIHRvIHRoZSBoaWdoLXNldmVyaXR5IGRhc2hib2FyZC5cbiAgICovXG4gIGFkZEhpZ2hTZXZlcml0eUFsYXJtKHRpdGxlOiBzdHJpbmcsIGFsYXJtOiBBbGFybUJhc2UpOiB2b2lkO1xuXG4gIC8qKlxuICAgKiBBZGRzIGEgbG93LXNldmVyaXR5IGFsYXJtLiBJZiB0aGlzIGFsYXJtIGdvZXMgb2ZmLCB0aGUgYWN0aW9uIHNwZWNpZmllZCBpblxuICAgKiBgbm9ybWFsQWxhcm1BY3Rpb25gIGlzIHRyaWdnZXJlZC5cbiAgICpcbiAgICogQHBhcmFtIHRpdGxlIGEgdXNlci1mcmllbmRseSB0aXRsZSBmb3IgdGhlIGFsYXJtIChub3QgY3VycmVudGx5IHVzZWQpLlxuICAgKiBAcGFyYW0gYWxhcm0gdGhlIGFsYXJtIHRvIGJlIGFkZGVkLlxuICAgKi9cbiAgYWRkTG93U2V2ZXJpdHlBbGFybSh0aXRsZTogc3RyaW5nLCBhbGFybTogQWxhcm1CYXNlKTogdm9pZDtcbn1cbiJdfQ==
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL21vbml0b3JpbmcvYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEFsYXJtQmFzZSB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1jbG91ZHdhdGNoJztcblxuLyoqXG4gKiBDb25zdHJ1Y3RIdWIgbW9uaXRvcmluZyBmZWF0dXJlcyBleHBvc2VkIHRvIGV4dGVuc2lvbiBwb2ludHMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSU1vbml0b3Jpbmcge1xuICAvKipcbiAgICogQWRkcyBhIGhpZ2gtc2V2ZXJpdHkgYWxhcm0uIElmIHRoaXMgYWxhcm0gZ29lcyBvZmYsIHRoZSBhY3Rpb24gc3BlY2lmaWVkIGluXG4gICAqIGBoaWdoU2V2ZXJpdHlBbGFybUFjdGlvbkFybmAgaXMgdHJpZ2dlcmVkLlxuICAgKlxuICAgKiBAcGFyYW0gdGl0bGUgYSB1c2VyLWZyaWVuZGx5IHRpdGxlIGZvciB0aGUgYWxhcm0gKHdpbGwgYmUgcmVuZGVyZWQgb24gdGhlXG4gICAqICAgICAgICAgICAgICBoaWdoLXNldmVyaXR5IENsb3VkV2F0Y2ggZGFzaGJvYXJkKVxuICAgKiBAcGFyYW0gYWxhcm0gdGhlIGFsYXJtIHRvIGJlIGFkZGVkIHRvIHRoZSBoaWdoLXNldmVyaXR5IGRhc2hib2FyZC5cbiAgICovXG4gIGFkZEhpZ2hTZXZlcml0eUFsYXJtKHRpdGxlOiBzdHJpbmcsIGFsYXJtOiBBbGFybUJhc2UpOiB2b2lkO1xuXG4gIC8qKlxuICAgKiBBZGRzIGEgbWVkaXVtLXNldmVyaXR5IGFsYXJtLiBJZiB0aGlzIGFsYXJtIGdvZXMgb2ZmLCB0aGUgYWN0aW9uIHNwZWNpZmllZCBpblxuICAgKiBgbWVkaXVtU2V2ZXJpdHlBbGFybUFjdGlvbmAgaXMgdHJpZ2dlcmVkLlxuICAgKlxuICAgKiBAcGFyYW0gdGl0bGUgYSB1c2VyLWZyaWVuZGx5IHRpdGxlIGZvciB0aGUgYWxhcm0gKG5vdCBjdXJyZW50bHkgdXNlZCkuXG4gICAqIEBwYXJhbSBhbGFybSB0aGUgYWxhcm0gdG8gYmUgYWRkZWQuXG4gICAqL1xuICBhZGRNZWRpdW1TZXZlcml0eUFsYXJtKHRpdGxlOiBzdHJpbmcsIGFsYXJtOiBBbGFybUJhc2UpOiB2b2lkO1xuXG4gIC8qKlxuICAgKiBBZGRzIGEgbG93LXNldmVyaXR5IGFsYXJtLiBJZiB0aGlzIGFsYXJtIGdvZXMgb2ZmLCB0aGUgYWN0aW9uIHNwZWNpZmllZCBpblxuICAgKiBgbm9ybWFsQWxhcm1BY3Rpb25gIGlzIHRyaWdnZXJlZC5cbiAgICpcbiAgICogQHBhcmFtIHRpdGxlIGEgdXNlci1mcmllbmRseSB0aXRsZSBmb3IgdGhlIGFsYXJtIChub3QgY3VycmVudGx5IHVzZWQpLlxuICAgKiBAcGFyYW0gYWxhcm0gdGhlIGFsYXJtIHRvIGJlIGFkZGVkLlxuICAgKi9cbiAgYWRkTG93U2V2ZXJpdHlBbGFybSh0aXRsZTogc3RyaW5nLCBhbGFybTogQWxhcm1CYXNlKTogdm9pZDtcbn1cbiJdfQ==
@@ -24,6 +24,7 @@ export interface MonitoringProps {
24
24
  export declare class Monitoring extends Construct implements IMonitoring {
25
25
  private alarmActions?;
26
26
  private _highSeverityAlarms;
27
+ private _mediumSeverityAlarms;
27
28
  private _lowSeverityAlarms;
28
29
  /**
29
30
  * Allows adding automatic monitoring to standard resources. Note that
@@ -39,7 +40,9 @@ export declare class Monitoring extends Construct implements IMonitoring {
39
40
  */
40
41
  addHighSeverityAlarm(title: string, alarm: cw.AlarmBase): void;
41
42
  addLowSeverityAlarm(_title: string, alarm: cw.AlarmBase): void;
43
+ addMediumSeverityAlarm(_title: string, alarm: cw.AlarmBase): void;
42
44
  get highSeverityAlarms(): cw.AlarmBase[];
45
+ get mediumSeverityAlarms(): cw.AlarmBase[];
43
46
  get lowSeverityAlarms(): cw.AlarmBase[];
44
47
  /**
45
48
  * Adds a canary that pings a certain URL and raises an alarm in case the URL
@@ -29,6 +29,7 @@ class Monitoring extends constructs_1.Construct {
29
29
  });
30
30
  this._highSeverityAlarms = [];
31
31
  this._lowSeverityAlarms = [];
32
+ this._mediumSeverityAlarms = [];
32
33
  this.highSeverityDashboard = new cw.Dashboard(this, 'HighSeverityDashboard');
33
34
  }
34
35
  /**
@@ -66,9 +67,25 @@ class Monitoring extends constructs_1.Construct {
66
67
  }
67
68
  this._lowSeverityAlarms.push(alarm);
68
69
  }
70
+ addMediumSeverityAlarm(_title, alarm) {
71
+ const actionArn = this.alarmActions?.mediumSeverity;
72
+ if (actionArn) {
73
+ alarm.addAlarmAction({
74
+ bind: () => ({ alarmActionArn: actionArn }),
75
+ });
76
+ }
77
+ const action = this.alarmActions?.mediumSeverityAction;
78
+ if (action) {
79
+ alarm.addAlarmAction(action);
80
+ }
81
+ this._mediumSeverityAlarms.push(alarm);
82
+ }
69
83
  get highSeverityAlarms() {
70
84
  return [...this._highSeverityAlarms];
71
85
  }
86
+ get mediumSeverityAlarms() {
87
+ return [...this._mediumSeverityAlarms];
88
+ }
72
89
  get lowSeverityAlarms() {
73
90
  return [...this._lowSeverityAlarms];
74
91
  }
@@ -90,4 +107,4 @@ class Monitoring extends constructs_1.Construct {
90
107
  }
91
108
  }
92
109
  exports.Monitoring = Monitoring;
93
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbW9uaXRvcmluZy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxpREFBaUQ7QUFDakQsK0NBQXdDO0FBQ3hDLDJDQUF1QztBQUV2Qyw2Q0FBeUM7QUFhekM7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFhLFVBQVcsU0FBUSxzQkFBUztJQWN2QyxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLFFBQXlCLEVBQUU7UUFDbkUsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVqQixJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQyxZQUFZLENBQUM7UUFFdkMsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLHVCQUFRLENBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRTtZQUM3QyxvRUFBb0U7WUFDcEUsZUFBZSxFQUFFLElBQUksQ0FBQyxZQUFZLEVBQUUsY0FBYztnQkFDaEQsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxjQUFjLENBQUM7Z0JBQ3BDLENBQUMsQ0FBQyxFQUFFO1lBQ04sWUFBWSxFQUFFLElBQUksQ0FBQyxZQUFZLEVBQUUsb0JBQW9CO2dCQUNuRCxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLG9CQUFvQixDQUFDO2dCQUMxQyxDQUFDLENBQUMsRUFBRTtTQUNQLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxtQkFBbUIsR0FBRyxFQUFFLENBQUM7UUFDOUIsSUFBSSxDQUFDLGtCQUFrQixHQUFHLEVBQUUsQ0FBQztRQUU3QixJQUFJLENBQUMscUJBQXFCLEdBQUcsSUFBSSxFQUFFLENBQUMsU0FBUyxDQUMzQyxJQUFJLEVBQ0osdUJBQXVCLENBQ3hCLENBQUM7SUFDSixDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksb0JBQW9CLENBQUMsS0FBYSxFQUFFLEtBQW1CO1FBQzVELE1BQU0scUJBQXFCLEdBQUcsSUFBSSxDQUFDLFlBQVksRUFBRSxZQUFZLENBQUM7UUFDOUQsSUFBSSxxQkFBcUIsRUFBRSxDQUFDO1lBQzFCLEtBQUssQ0FBQyxjQUFjLENBQUM7Z0JBQ25CLElBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsY0FBYyxFQUFFLHFCQUFxQixFQUFFLENBQUM7YUFDeEQsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUNELE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxDQUFDLFlBQVksRUFBRSxrQkFBa0IsQ0FBQztRQUNqRSxJQUFJLGtCQUFrQixFQUFFLENBQUM7WUFDdkIsS0FBSyxDQUFDLGNBQWMsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBQzNDLENBQUM7UUFFRCxJQUFJLENBQUMscUJBQXFCLENBQUMsVUFBVSxDQUNuQyxJQUFJLEVBQUUsQ0FBQyxXQUFXLENBQUM7WUFDakIsS0FBSztZQUNMLEtBQUs7WUFDTCxLQUFLLEVBQUUsRUFBRTtTQUNWLENBQUMsQ0FDSCxDQUFDO1FBRUYsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBRU0sbUJBQW1CLENBQUMsTUFBYyxFQUFFLEtBQW1CO1FBQzVELE1BQU0sdUJBQXVCLEdBQUcsSUFBSSxDQUFDLFlBQVksRUFBRSxjQUFjLENBQUM7UUFDbEUsSUFBSSx1QkFBdUIsRUFBRSxDQUFDO1lBQzVCLEtBQUssQ0FBQyxjQUFjLENBQUM7Z0JBQ25CLElBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsY0FBYyxFQUFFLHVCQUF1QixFQUFFLENBQUM7YUFDMUQsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUNELE1BQU0sb0JBQW9CLEdBQUcsSUFBSSxDQUFDLFlBQVksRUFBRSxvQkFBb0IsQ0FBQztRQUNyRSxJQUFJLG9CQUFvQixFQUFFLENBQUM7WUFDekIsS0FBSyxDQUFDLGNBQWMsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBQzdDLENBQUM7UUFDRCxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFRCxJQUFXLGtCQUFrQjtRQUMzQixPQUFPLENBQUMsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBRUQsSUFBVyxpQkFBaUI7UUFDMUIsT0FBTyxDQUFDLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUVEOzs7Ozs7OztPQVFHO0lBQ0ksWUFBWSxDQUFDLElBQVksRUFBRSxHQUFXO1FBQzNDLE1BQU0sTUFBTSxHQUFHLElBQUksc0JBQVMsQ0FDMUIsSUFBSSxFQUNKLFlBQVksSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFDN0M7WUFDRSxHQUFHO1lBQ0gsV0FBVyxFQUFFLElBQUk7U0FDbEIsQ0FDRixDQUFDO1FBRUYsSUFBSSxDQUFDLG9CQUFvQixDQUFDLEdBQUcsSUFBSSxTQUFTLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzVELENBQUM7Q0FDRjtBQTVHRCxnQ0E0R0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBjdyBmcm9tICdhd3MtY2RrLWxpYi9hd3MtY2xvdWR3YXRjaCc7XG5pbXBvcnQgeyBXYXRjaGZ1bCB9IGZyb20gJ2Nkay13YXRjaGZ1bCc7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCB7IElNb25pdG9yaW5nIH0gZnJvbSAnLi9hcGknO1xuaW1wb3J0IHsgV2ViQ2FuYXJ5IH0gZnJvbSAnLi93ZWItY2FuYXJ5JztcbmltcG9ydCB7IEFsYXJtQWN0aW9ucyB9IGZyb20gJy4uL2FwaSc7XG5cbi8qKlxuICogUHJvcHMgZm9yIHRoZSBtb25pdG9yaW5nIGNvbnN0cnVjdC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBNb25pdG9yaW5nUHJvcHMge1xuICAvKipcbiAgICogQVJOcyBvZiBhbGFybSBhY3Rpb25zIHRvIHRha2UgZm9yIHZhcmlvdXMgc2V2ZXJpdGllcy5cbiAgICovXG4gIHJlYWRvbmx5IGFsYXJtQWN0aW9ucz86IEFsYXJtQWN0aW9ucztcbn1cblxuLyoqXG4gKiBDb25zdHJ1Y3QgaHViIG1vbml0b3JpbmcuXG4gKlxuICogVGhpcyBjb25zdHJ1Y3QgdXNlcyBjZGstd2F0Y2hmdWwgdG8gYXV0b21hdGljYWxseSBnZW5lcmF0ZSBhIGRhc2hib2FyZCBhbmQgYVxuICogc2V0IG9mIHN0YW5kYXJkIGFsYXJtcyBmb3IgY29tbW9uIHJlc291cmNlcy5cbiAqXG4gKiBDb21wb25lbnRzIHNob3VsZCB1c2UgdGhlIEFQSXMgb2YgdGhpcyBtb2R1bGUgdG8gYWRkIHdhdGNoZnVsIG1vbml0b3JzLFxuICogYW5kIGFkZCBjYW5hcmllcyBhbmQgYWxhcm1zIGFzIG5lZWRlZC5cbiAqL1xuZXhwb3J0IGNsYXNzIE1vbml0b3JpbmcgZXh0ZW5kcyBDb25zdHJ1Y3QgaW1wbGVtZW50cyBJTW9uaXRvcmluZyB7XG4gIHByaXZhdGUgYWxhcm1BY3Rpb25zPzogQWxhcm1BY3Rpb25zO1xuICBwcml2YXRlIF9oaWdoU2V2ZXJpdHlBbGFybXM6IGN3LkFsYXJtQmFzZVtdO1xuICBwcml2YXRlIF9sb3dTZXZlcml0eUFsYXJtczogY3cuQWxhcm1CYXNlW107XG5cbiAgLyoqXG4gICAqIEFsbG93cyBhZGRpbmcgYXV0b21hdGljIG1vbml0b3JpbmcgdG8gc3RhbmRhcmQgcmVzb3VyY2VzLiBOb3RlIHRoYXRcbiAgICogd2F0Y2hmdWwgYWxhcm1zIGFyZSBhbHdheXMgdHJlYXRlZCBhcyBfbm9ybWFsXyBzZXZlcml0eS4gWW91IGNhbiBhZGRcbiAgICogaGlnaC1zZXZlcml0eSBhbGFybSB2aWEgYGFkZEhpZ2hTZXZlcml0eUFsYXJtKClgLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHdhdGNoZnVsOiBXYXRjaGZ1bDtcblxuICBwcml2YXRlIHJlYWRvbmx5IGhpZ2hTZXZlcml0eURhc2hib2FyZDogY3cuRGFzaGJvYXJkO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBNb25pdG9yaW5nUHJvcHMgPSB7fSkge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICB0aGlzLmFsYXJtQWN0aW9ucyA9IHByb3BzLmFsYXJtQWN0aW9ucztcblxuICAgIHRoaXMud2F0Y2hmdWwgPSBuZXcgV2F0Y2hmdWwodGhpcywgJ1dhdGNoZnVsJywge1xuICAgICAgLy8gYWxhcm1zIHRoYXQgY29tZSBmcm9tIHdhdGNoZnVsIGFyZSBhbGwgY29uc2lkZXJlZCBub3JtYWwgc2V2ZXJpdHlcbiAgICAgIGFsYXJtQWN0aW9uQXJuczogdGhpcy5hbGFybUFjdGlvbnM/Lm5vcm1hbFNldmVyaXR5XG4gICAgICAgID8gW3RoaXMuYWxhcm1BY3Rpb25zLm5vcm1hbFNldmVyaXR5XVxuICAgICAgICA6IFtdLFxuICAgICAgYWxhcm1BY3Rpb25zOiB0aGlzLmFsYXJtQWN0aW9ucz8ubm9ybWFsU2V2ZXJpdHlBY3Rpb25cbiAgICAgICAgPyBbdGhpcy5hbGFybUFjdGlvbnMubm9ybWFsU2V2ZXJpdHlBY3Rpb25dXG4gICAgICAgIDogW10sXG4gICAgfSk7XG5cbiAgICB0aGlzLl9oaWdoU2V2ZXJpdHlBbGFybXMgPSBbXTtcbiAgICB0aGlzLl9sb3dTZXZlcml0eUFsYXJtcyA9IFtdO1xuXG4gICAgdGhpcy5oaWdoU2V2ZXJpdHlEYXNoYm9hcmQgPSBuZXcgY3cuRGFzaGJvYXJkKFxuICAgICAgdGhpcyxcbiAgICAgICdIaWdoU2V2ZXJpdHlEYXNoYm9hcmQnXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIGEgaGlnaC1zZXZlcml0eSBhbGFybS4gSWYgdGhpcyBhbGFybSBnb2VzIG9mZiwgdGhlIGFjdGlvbiBzcGVjaWZpZWQgaW4gYGhpZ2hTZXZlcml0eUFsYXJtQWN0aW9uQXJuYFxuICAgKiBAcGFyYW0gYWxhcm1cbiAgICovXG4gIHB1YmxpYyBhZGRIaWdoU2V2ZXJpdHlBbGFybSh0aXRsZTogc3RyaW5nLCBhbGFybTogY3cuQWxhcm1CYXNlKSB7XG4gICAgY29uc3QgaGlnaFNldmVyaXR5QWN0aW9uQXJuID0gdGhpcy5hbGFybUFjdGlvbnM/LmhpZ2hTZXZlcml0eTtcbiAgICBpZiAoaGlnaFNldmVyaXR5QWN0aW9uQXJuKSB7XG4gICAgICBhbGFybS5hZGRBbGFybUFjdGlvbih7XG4gICAgICAgIGJpbmQ6ICgpID0+ICh7IGFsYXJtQWN0aW9uQXJuOiBoaWdoU2V2ZXJpdHlBY3Rpb25Bcm4gfSksXG4gICAgICB9KTtcbiAgICB9XG4gICAgY29uc3QgaGlnaFNldmVyaXR5QWN0aW9uID0gdGhpcy5hbGFybUFjdGlvbnM/LmhpZ2hTZXZlcml0eUFjdGlvbjtcbiAgICBpZiAoaGlnaFNldmVyaXR5QWN0aW9uKSB7XG4gICAgICBhbGFybS5hZGRBbGFybUFjdGlvbihoaWdoU2V2ZXJpdHlBY3Rpb24pO1xuICAgIH1cblxuICAgIHRoaXMuaGlnaFNldmVyaXR5RGFzaGJvYXJkLmFkZFdpZGdldHMoXG4gICAgICBuZXcgY3cuQWxhcm1XaWRnZXQoe1xuICAgICAgICBhbGFybSxcbiAgICAgICAgdGl0bGUsXG4gICAgICAgIHdpZHRoOiAyNCxcbiAgICAgIH0pXG4gICAgKTtcblxuICAgIHRoaXMuX2hpZ2hTZXZlcml0eUFsYXJtcy5wdXNoKGFsYXJtKTtcbiAgfVxuXG4gIHB1YmxpYyBhZGRMb3dTZXZlcml0eUFsYXJtKF90aXRsZTogc3RyaW5nLCBhbGFybTogY3cuQWxhcm1CYXNlKSB7XG4gICAgY29uc3Qgbm9ybWFsU2V2ZXJpdHlBY3Rpb25Bcm4gPSB0aGlzLmFsYXJtQWN0aW9ucz8ubm9ybWFsU2V2ZXJpdHk7XG4gICAgaWYgKG5vcm1hbFNldmVyaXR5QWN0aW9uQXJuKSB7XG4gICAgICBhbGFybS5hZGRBbGFybUFjdGlvbih7XG4gICAgICAgIGJpbmQ6ICgpID0+ICh7IGFsYXJtQWN0aW9uQXJuOiBub3JtYWxTZXZlcml0eUFjdGlvbkFybiB9KSxcbiAgICAgIH0pO1xuICAgIH1cbiAgICBjb25zdCBub3JtYWxTZXZlcml0eUFjdGlvbiA9IHRoaXMuYWxhcm1BY3Rpb25zPy5ub3JtYWxTZXZlcml0eUFjdGlvbjtcbiAgICBpZiAobm9ybWFsU2V2ZXJpdHlBY3Rpb24pIHtcbiAgICAgIGFsYXJtLmFkZEFsYXJtQWN0aW9uKG5vcm1hbFNldmVyaXR5QWN0aW9uKTtcbiAgICB9XG4gICAgdGhpcy5fbG93U2V2ZXJpdHlBbGFybXMucHVzaChhbGFybSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGhpZ2hTZXZlcml0eUFsYXJtcygpIHtcbiAgICByZXR1cm4gWy4uLnRoaXMuX2hpZ2hTZXZlcml0eUFsYXJtc107XG4gIH1cblxuICBwdWJsaWMgZ2V0IGxvd1NldmVyaXR5QWxhcm1zKCkge1xuICAgIHJldHVybiBbLi4udGhpcy5fbG93U2V2ZXJpdHlBbGFybXNdO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgYSBjYW5hcnkgdGhhdCBwaW5ncyBhIGNlcnRhaW4gVVJMIGFuZCByYWlzZXMgYW4gYWxhcm0gaW4gY2FzZSB0aGUgVVJMXG4gICAqIHJlc3BvbmRzIHdpdGggYW4gZXJyb3Igb3ZlciA4MCUgb2YgdGhlIHRpbWVzLlxuICAgKlxuICAgKiBDYW5hcnkgZmFpbHVyZXMgYXJlIGFsd2F5cyBjb25zaWRlcmVkIGhpZ2gtc2V2ZXJpdHkgKGF0IHRoaXMgcG9pbnQpLlxuICAgKlxuICAgKiBAcGFyYW0gbmFtZSBUaGUgbmFtZSBvZiB0aGUgY2FuYXJ5XG4gICAqIEBwYXJhbSB1cmwgVGhlIFVSTCB0byBwaW5nXG4gICAqL1xuICBwdWJsaWMgYWRkV2ViQ2FuYXJ5KG5hbWU6IHN0cmluZywgdXJsOiBzdHJpbmcpIHtcbiAgICBjb25zdCBjYW5hcnkgPSBuZXcgV2ViQ2FuYXJ5KFxuICAgICAgdGhpcyxcbiAgICAgIGBXZWJDYW5hcnkke25hbWUucmVwbGFjZSgvW15BLVowLTldL2dpLCAnJyl9YCxcbiAgICAgIHtcbiAgICAgICAgdXJsLFxuICAgICAgICBkaXNwbGF5TmFtZTogbmFtZSxcbiAgICAgIH1cbiAgICApO1xuXG4gICAgdGhpcy5hZGRIaWdoU2V2ZXJpdHlBbGFybShgJHtuYW1lfSBDYW5hcnlgLCBjYW5hcnkuYWxhcm0pO1xuICB9XG59XG4iXX0=
110
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbW9uaXRvcmluZy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxpREFBaUQ7QUFDakQsK0NBQXdDO0FBQ3hDLDJDQUF1QztBQUV2Qyw2Q0FBeUM7QUFhekM7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFhLFVBQVcsU0FBUSxzQkFBUztJQWV2QyxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLFFBQXlCLEVBQUU7UUFDbkUsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVqQixJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQyxZQUFZLENBQUM7UUFFdkMsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLHVCQUFRLENBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRTtZQUM3QyxvRUFBb0U7WUFDcEUsZUFBZSxFQUFFLElBQUksQ0FBQyxZQUFZLEVBQUUsY0FBYztnQkFDaEQsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxjQUFjLENBQUM7Z0JBQ3BDLENBQUMsQ0FBQyxFQUFFO1lBQ04sWUFBWSxFQUFFLElBQUksQ0FBQyxZQUFZLEVBQUUsb0JBQW9CO2dCQUNuRCxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLG9CQUFvQixDQUFDO2dCQUMxQyxDQUFDLENBQUMsRUFBRTtTQUNQLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxtQkFBbUIsR0FBRyxFQUFFLENBQUM7UUFDOUIsSUFBSSxDQUFDLGtCQUFrQixHQUFHLEVBQUUsQ0FBQztRQUM3QixJQUFJLENBQUMscUJBQXFCLEdBQUcsRUFBRSxDQUFDO1FBRWhDLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLEVBQUUsQ0FBQyxTQUFTLENBQzNDLElBQUksRUFDSix1QkFBdUIsQ0FDeEIsQ0FBQztJQUNKLENBQUM7SUFFRDs7O09BR0c7SUFDSSxvQkFBb0IsQ0FBQyxLQUFhLEVBQUUsS0FBbUI7UUFDNUQsTUFBTSxxQkFBcUIsR0FBRyxJQUFJLENBQUMsWUFBWSxFQUFFLFlBQVksQ0FBQztRQUM5RCxJQUFJLHFCQUFxQixFQUFFLENBQUM7WUFDMUIsS0FBSyxDQUFDLGNBQWMsQ0FBQztnQkFDbkIsSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxjQUFjLEVBQUUscUJBQXFCLEVBQUUsQ0FBQzthQUN4RCxDQUFDLENBQUM7UUFDTCxDQUFDO1FBQ0QsTUFBTSxrQkFBa0IsR0FBRyxJQUFJLENBQUMsWUFBWSxFQUFFLGtCQUFrQixDQUFDO1FBQ2pFLElBQUksa0JBQWtCLEVBQUUsQ0FBQztZQUN2QixLQUFLLENBQUMsY0FBYyxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFDM0MsQ0FBQztRQUVELElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxVQUFVLENBQ25DLElBQUksRUFBRSxDQUFDLFdBQVcsQ0FBQztZQUNqQixLQUFLO1lBQ0wsS0FBSztZQUNMLEtBQUssRUFBRSxFQUFFO1NBQ1YsQ0FBQyxDQUNILENBQUM7UUFFRixJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFFTSxtQkFBbUIsQ0FBQyxNQUFjLEVBQUUsS0FBbUI7UUFDNUQsTUFBTSx1QkFBdUIsR0FBRyxJQUFJLENBQUMsWUFBWSxFQUFFLGNBQWMsQ0FBQztRQUNsRSxJQUFJLHVCQUF1QixFQUFFLENBQUM7WUFDNUIsS0FBSyxDQUFDLGNBQWMsQ0FBQztnQkFDbkIsSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxjQUFjLEVBQUUsdUJBQXVCLEVBQUUsQ0FBQzthQUMxRCxDQUFDLENBQUM7UUFDTCxDQUFDO1FBQ0QsTUFBTSxvQkFBb0IsR0FBRyxJQUFJLENBQUMsWUFBWSxFQUFFLG9CQUFvQixDQUFDO1FBQ3JFLElBQUksb0JBQW9CLEVBQUUsQ0FBQztZQUN6QixLQUFLLENBQUMsY0FBYyxDQUFDLG9CQUFvQixDQUFDLENBQUM7UUFDN0MsQ0FBQztRQUNELElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUVNLHNCQUFzQixDQUFDLE1BQWMsRUFBRSxLQUFtQjtRQUMvRCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsWUFBWSxFQUFFLGNBQWMsQ0FBQztRQUNwRCxJQUFJLFNBQVMsRUFBRSxDQUFDO1lBQ2QsS0FBSyxDQUFDLGNBQWMsQ0FBQztnQkFDbkIsSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxjQUFjLEVBQUUsU0FBUyxFQUFFLENBQUM7YUFDNUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUNELE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxZQUFZLEVBQUUsb0JBQW9CLENBQUM7UUFDdkQsSUFBSSxNQUFNLEVBQUUsQ0FBQztZQUNYLEtBQUssQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDL0IsQ0FBQztRQUNELElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDekMsQ0FBQztJQUVELElBQVcsa0JBQWtCO1FBQzNCLE9BQU8sQ0FBQyxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFFRCxJQUFXLG9CQUFvQjtRQUM3QixPQUFPLENBQUMsR0FBRyxJQUFJLENBQUMscUJBQXFCLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBRUQsSUFBVyxpQkFBaUI7UUFDMUIsT0FBTyxDQUFDLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUVEOzs7Ozs7OztPQVFHO0lBQ0ksWUFBWSxDQUFDLElBQVksRUFBRSxHQUFXO1FBQzNDLE1BQU0sTUFBTSxHQUFHLElBQUksc0JBQVMsQ0FDMUIsSUFBSSxFQUNKLFlBQVksSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFDN0M7WUFDRSxHQUFHO1lBQ0gsV0FBVyxFQUFFLElBQUk7U0FDbEIsQ0FDRixDQUFDO1FBRUYsSUFBSSxDQUFDLG9CQUFvQixDQUFDLEdBQUcsSUFBSSxTQUFTLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzVELENBQUM7Q0FDRjtBQWhJRCxnQ0FnSUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBjdyBmcm9tICdhd3MtY2RrLWxpYi9hd3MtY2xvdWR3YXRjaCc7XG5pbXBvcnQgeyBXYXRjaGZ1bCB9IGZyb20gJ2Nkay13YXRjaGZ1bCc7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCB7IElNb25pdG9yaW5nIH0gZnJvbSAnLi9hcGknO1xuaW1wb3J0IHsgV2ViQ2FuYXJ5IH0gZnJvbSAnLi93ZWItY2FuYXJ5JztcbmltcG9ydCB7IEFsYXJtQWN0aW9ucyB9IGZyb20gJy4uL2FwaSc7XG5cbi8qKlxuICogUHJvcHMgZm9yIHRoZSBtb25pdG9yaW5nIGNvbnN0cnVjdC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBNb25pdG9yaW5nUHJvcHMge1xuICAvKipcbiAgICogQVJOcyBvZiBhbGFybSBhY3Rpb25zIHRvIHRha2UgZm9yIHZhcmlvdXMgc2V2ZXJpdGllcy5cbiAgICovXG4gIHJlYWRvbmx5IGFsYXJtQWN0aW9ucz86IEFsYXJtQWN0aW9ucztcbn1cblxuLyoqXG4gKiBDb25zdHJ1Y3QgaHViIG1vbml0b3JpbmcuXG4gKlxuICogVGhpcyBjb25zdHJ1Y3QgdXNlcyBjZGstd2F0Y2hmdWwgdG8gYXV0b21hdGljYWxseSBnZW5lcmF0ZSBhIGRhc2hib2FyZCBhbmQgYVxuICogc2V0IG9mIHN0YW5kYXJkIGFsYXJtcyBmb3IgY29tbW9uIHJlc291cmNlcy5cbiAqXG4gKiBDb21wb25lbnRzIHNob3VsZCB1c2UgdGhlIEFQSXMgb2YgdGhpcyBtb2R1bGUgdG8gYWRkIHdhdGNoZnVsIG1vbml0b3JzLFxuICogYW5kIGFkZCBjYW5hcmllcyBhbmQgYWxhcm1zIGFzIG5lZWRlZC5cbiAqL1xuZXhwb3J0IGNsYXNzIE1vbml0b3JpbmcgZXh0ZW5kcyBDb25zdHJ1Y3QgaW1wbGVtZW50cyBJTW9uaXRvcmluZyB7XG4gIHByaXZhdGUgYWxhcm1BY3Rpb25zPzogQWxhcm1BY3Rpb25zO1xuICBwcml2YXRlIF9oaWdoU2V2ZXJpdHlBbGFybXM6IGN3LkFsYXJtQmFzZVtdO1xuICBwcml2YXRlIF9tZWRpdW1TZXZlcml0eUFsYXJtczogY3cuQWxhcm1CYXNlW107XG4gIHByaXZhdGUgX2xvd1NldmVyaXR5QWxhcm1zOiBjdy5BbGFybUJhc2VbXTtcblxuICAvKipcbiAgICogQWxsb3dzIGFkZGluZyBhdXRvbWF0aWMgbW9uaXRvcmluZyB0byBzdGFuZGFyZCByZXNvdXJjZXMuIE5vdGUgdGhhdFxuICAgKiB3YXRjaGZ1bCBhbGFybXMgYXJlIGFsd2F5cyB0cmVhdGVkIGFzIF9ub3JtYWxfIHNldmVyaXR5LiBZb3UgY2FuIGFkZFxuICAgKiBoaWdoLXNldmVyaXR5IGFsYXJtIHZpYSBgYWRkSGlnaFNldmVyaXR5QWxhcm0oKWAuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgd2F0Y2hmdWw6IFdhdGNoZnVsO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgaGlnaFNldmVyaXR5RGFzaGJvYXJkOiBjdy5EYXNoYm9hcmQ7XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IE1vbml0b3JpbmdQcm9wcyA9IHt9KSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIHRoaXMuYWxhcm1BY3Rpb25zID0gcHJvcHMuYWxhcm1BY3Rpb25zO1xuXG4gICAgdGhpcy53YXRjaGZ1bCA9IG5ldyBXYXRjaGZ1bCh0aGlzLCAnV2F0Y2hmdWwnLCB7XG4gICAgICAvLyBhbGFybXMgdGhhdCBjb21lIGZyb20gd2F0Y2hmdWwgYXJlIGFsbCBjb25zaWRlcmVkIG5vcm1hbCBzZXZlcml0eVxuICAgICAgYWxhcm1BY3Rpb25Bcm5zOiB0aGlzLmFsYXJtQWN0aW9ucz8ubm9ybWFsU2V2ZXJpdHlcbiAgICAgICAgPyBbdGhpcy5hbGFybUFjdGlvbnMubm9ybWFsU2V2ZXJpdHldXG4gICAgICAgIDogW10sXG4gICAgICBhbGFybUFjdGlvbnM6IHRoaXMuYWxhcm1BY3Rpb25zPy5ub3JtYWxTZXZlcml0eUFjdGlvblxuICAgICAgICA/IFt0aGlzLmFsYXJtQWN0aW9ucy5ub3JtYWxTZXZlcml0eUFjdGlvbl1cbiAgICAgICAgOiBbXSxcbiAgICB9KTtcblxuICAgIHRoaXMuX2hpZ2hTZXZlcml0eUFsYXJtcyA9IFtdO1xuICAgIHRoaXMuX2xvd1NldmVyaXR5QWxhcm1zID0gW107XG4gICAgdGhpcy5fbWVkaXVtU2V2ZXJpdHlBbGFybXMgPSBbXTtcblxuICAgIHRoaXMuaGlnaFNldmVyaXR5RGFzaGJvYXJkID0gbmV3IGN3LkRhc2hib2FyZChcbiAgICAgIHRoaXMsXG4gICAgICAnSGlnaFNldmVyaXR5RGFzaGJvYXJkJ1xuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBhIGhpZ2gtc2V2ZXJpdHkgYWxhcm0uIElmIHRoaXMgYWxhcm0gZ29lcyBvZmYsIHRoZSBhY3Rpb24gc3BlY2lmaWVkIGluIGBoaWdoU2V2ZXJpdHlBbGFybUFjdGlvbkFybmBcbiAgICogQHBhcmFtIGFsYXJtXG4gICAqL1xuICBwdWJsaWMgYWRkSGlnaFNldmVyaXR5QWxhcm0odGl0bGU6IHN0cmluZywgYWxhcm06IGN3LkFsYXJtQmFzZSkge1xuICAgIGNvbnN0IGhpZ2hTZXZlcml0eUFjdGlvbkFybiA9IHRoaXMuYWxhcm1BY3Rpb25zPy5oaWdoU2V2ZXJpdHk7XG4gICAgaWYgKGhpZ2hTZXZlcml0eUFjdGlvbkFybikge1xuICAgICAgYWxhcm0uYWRkQWxhcm1BY3Rpb24oe1xuICAgICAgICBiaW5kOiAoKSA9PiAoeyBhbGFybUFjdGlvbkFybjogaGlnaFNldmVyaXR5QWN0aW9uQXJuIH0pLFxuICAgICAgfSk7XG4gICAgfVxuICAgIGNvbnN0IGhpZ2hTZXZlcml0eUFjdGlvbiA9IHRoaXMuYWxhcm1BY3Rpb25zPy5oaWdoU2V2ZXJpdHlBY3Rpb247XG4gICAgaWYgKGhpZ2hTZXZlcml0eUFjdGlvbikge1xuICAgICAgYWxhcm0uYWRkQWxhcm1BY3Rpb24oaGlnaFNldmVyaXR5QWN0aW9uKTtcbiAgICB9XG5cbiAgICB0aGlzLmhpZ2hTZXZlcml0eURhc2hib2FyZC5hZGRXaWRnZXRzKFxuICAgICAgbmV3IGN3LkFsYXJtV2lkZ2V0KHtcbiAgICAgICAgYWxhcm0sXG4gICAgICAgIHRpdGxlLFxuICAgICAgICB3aWR0aDogMjQsXG4gICAgICB9KVxuICAgICk7XG5cbiAgICB0aGlzLl9oaWdoU2V2ZXJpdHlBbGFybXMucHVzaChhbGFybSk7XG4gIH1cblxuICBwdWJsaWMgYWRkTG93U2V2ZXJpdHlBbGFybShfdGl0bGU6IHN0cmluZywgYWxhcm06IGN3LkFsYXJtQmFzZSkge1xuICAgIGNvbnN0IG5vcm1hbFNldmVyaXR5QWN0aW9uQXJuID0gdGhpcy5hbGFybUFjdGlvbnM/Lm5vcm1hbFNldmVyaXR5O1xuICAgIGlmIChub3JtYWxTZXZlcml0eUFjdGlvbkFybikge1xuICAgICAgYWxhcm0uYWRkQWxhcm1BY3Rpb24oe1xuICAgICAgICBiaW5kOiAoKSA9PiAoeyBhbGFybUFjdGlvbkFybjogbm9ybWFsU2V2ZXJpdHlBY3Rpb25Bcm4gfSksXG4gICAgICB9KTtcbiAgICB9XG4gICAgY29uc3Qgbm9ybWFsU2V2ZXJpdHlBY3Rpb24gPSB0aGlzLmFsYXJtQWN0aW9ucz8ubm9ybWFsU2V2ZXJpdHlBY3Rpb247XG4gICAgaWYgKG5vcm1hbFNldmVyaXR5QWN0aW9uKSB7XG4gICAgICBhbGFybS5hZGRBbGFybUFjdGlvbihub3JtYWxTZXZlcml0eUFjdGlvbik7XG4gICAgfVxuICAgIHRoaXMuX2xvd1NldmVyaXR5QWxhcm1zLnB1c2goYWxhcm0pO1xuICB9XG5cbiAgcHVibGljIGFkZE1lZGl1bVNldmVyaXR5QWxhcm0oX3RpdGxlOiBzdHJpbmcsIGFsYXJtOiBjdy5BbGFybUJhc2UpIHtcbiAgICBjb25zdCBhY3Rpb25Bcm4gPSB0aGlzLmFsYXJtQWN0aW9ucz8ubWVkaXVtU2V2ZXJpdHk7XG4gICAgaWYgKGFjdGlvbkFybikge1xuICAgICAgYWxhcm0uYWRkQWxhcm1BY3Rpb24oe1xuICAgICAgICBiaW5kOiAoKSA9PiAoeyBhbGFybUFjdGlvbkFybjogYWN0aW9uQXJuIH0pLFxuICAgICAgfSk7XG4gICAgfVxuICAgIGNvbnN0IGFjdGlvbiA9IHRoaXMuYWxhcm1BY3Rpb25zPy5tZWRpdW1TZXZlcml0eUFjdGlvbjtcbiAgICBpZiAoYWN0aW9uKSB7XG4gICAgICBhbGFybS5hZGRBbGFybUFjdGlvbihhY3Rpb24pO1xuICAgIH1cbiAgICB0aGlzLl9tZWRpdW1TZXZlcml0eUFsYXJtcy5wdXNoKGFsYXJtKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaGlnaFNldmVyaXR5QWxhcm1zKCkge1xuICAgIHJldHVybiBbLi4udGhpcy5faGlnaFNldmVyaXR5QWxhcm1zXTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgbWVkaXVtU2V2ZXJpdHlBbGFybXMoKSB7XG4gICAgcmV0dXJuIFsuLi50aGlzLl9tZWRpdW1TZXZlcml0eUFsYXJtc107XG4gIH1cblxuICBwdWJsaWMgZ2V0IGxvd1NldmVyaXR5QWxhcm1zKCkge1xuICAgIHJldHVybiBbLi4udGhpcy5fbG93U2V2ZXJpdHlBbGFybXNdO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgYSBjYW5hcnkgdGhhdCBwaW5ncyBhIGNlcnRhaW4gVVJMIGFuZCByYWlzZXMgYW4gYWxhcm0gaW4gY2FzZSB0aGUgVVJMXG4gICAqIHJlc3BvbmRzIHdpdGggYW4gZXJyb3Igb3ZlciA4MCUgb2YgdGhlIHRpbWVzLlxuICAgKlxuICAgKiBDYW5hcnkgZmFpbHVyZXMgYXJlIGFsd2F5cyBjb25zaWRlcmVkIGhpZ2gtc2V2ZXJpdHkgKGF0IHRoaXMgcG9pbnQpLlxuICAgKlxuICAgKiBAcGFyYW0gbmFtZSBUaGUgbmFtZSBvZiB0aGUgY2FuYXJ5XG4gICAqIEBwYXJhbSB1cmwgVGhlIFVSTCB0byBwaW5nXG4gICAqL1xuICBwdWJsaWMgYWRkV2ViQ2FuYXJ5KG5hbWU6IHN0cmluZywgdXJsOiBzdHJpbmcpIHtcbiAgICBjb25zdCBjYW5hcnkgPSBuZXcgV2ViQ2FuYXJ5KFxuICAgICAgdGhpcyxcbiAgICAgIGBXZWJDYW5hcnkke25hbWUucmVwbGFjZSgvW15BLVowLTldL2dpLCAnJyl9YCxcbiAgICAgIHtcbiAgICAgICAgdXJsLFxuICAgICAgICBkaXNwbGF5TmFtZTogbmFtZSxcbiAgICAgIH1cbiAgICApO1xuXG4gICAgdGhpcy5hZGRIaWdoU2V2ZXJpdHlBbGFybShgJHtuYW1lfSBDYW5hcnlgLCBjYW5hcnkuYWxhcm0pO1xuICB9XG59XG4iXX0=