@cdklabs/multi-az-observability 0.0.1-alpha.6 → 0.0.1-alpha.60
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/.jsii +2826 -1008
- package/.jsii.tabl.json +1 -0
- package/API.md +5406 -1585
- package/README.md +176 -152
- package/lib/alarmsandrules/AvailabilityAndLatencyAlarmsAndRules.d.ts +18 -14
- package/lib/alarmsandrules/AvailabilityAndLatencyAlarmsAndRules.js +98 -60
- package/lib/alarmsandrules/BaseOperationRegionalAlarmsAndRules.d.ts +3 -3
- package/lib/alarmsandrules/BaseOperationRegionalAlarmsAndRules.js +2 -2
- package/lib/alarmsandrules/BaseOperationZonalAlarmsAndRules.d.ts +6 -15
- package/lib/alarmsandrules/BaseOperationZonalAlarmsAndRules.js +2 -10
- package/lib/alarmsandrules/CanaryOperationZonalAlarmsAndRules.d.ts +11 -3
- package/lib/alarmsandrules/CanaryOperationZonalAlarmsAndRules.js +29 -13
- package/lib/alarmsandrules/IBaseOperationZonalAlarmsAndRules.d.ts +0 -8
- package/lib/alarmsandrules/IBaseOperationZonalAlarmsAndRules.js +1 -1
- package/lib/alarmsandrules/IOperationAlarmsAndRules.d.ts +26 -23
- package/lib/alarmsandrules/IOperationAlarmsAndRules.js +1 -1
- package/lib/alarmsandrules/IServerSideOperationRegionalAlarmsAndRules.js +1 -1
- package/lib/alarmsandrules/IServiceAlarmsAndRules.d.ts +19 -15
- package/lib/alarmsandrules/IServiceAlarmsAndRules.js +1 -1
- package/lib/alarmsandrules/OperationAlarmsAndRules.d.ts +21 -18
- package/lib/alarmsandrules/OperationAlarmsAndRules.js +60 -72
- package/lib/alarmsandrules/ServerSideOperationRegionalAlarmsAndRules.d.ts +5 -5
- package/lib/alarmsandrules/ServerSideOperationRegionalAlarmsAndRules.js +2 -3
- package/lib/alarmsandrules/ServerSideOperationZonalAlarmsAndRules.d.ts +21 -13
- package/lib/alarmsandrules/ServerSideOperationZonalAlarmsAndRules.js +48 -29
- package/lib/alarmsandrules/ServiceAlarmsAndRules.d.ts +19 -15
- package/lib/alarmsandrules/ServiceAlarmsAndRules.js +34 -136
- package/lib/alarmsandrules/props/BaseOperationRegionalAlarmsAndRulesProps.d.ts +4 -3
- package/lib/alarmsandrules/props/BaseOperationRegionalAlarmsAndRulesProps.js +1 -1
- package/lib/alarmsandrules/props/BaseOperationZonalAlarmsAndRulesProps.d.ts +6 -44
- package/lib/alarmsandrules/props/BaseOperationZonalAlarmsAndRulesProps.js +1 -1
- package/lib/alarmsandrules/props/OperationAlarmsAndRulesProps.d.ts +39 -7
- package/lib/alarmsandrules/props/OperationAlarmsAndRulesProps.js +1 -1
- package/lib/azmapper/AvailabilityZoneMapper.js +8 -9
- package/lib/basic_observability/BasicServiceDashboard.d.ts +0 -3
- package/lib/basic_observability/BasicServiceDashboard.js +24 -112
- package/lib/basic_observability/BasicServiceMultiAZObservability.d.ts +8 -9
- package/lib/basic_observability/BasicServiceMultiAZObservability.js +97 -349
- package/lib/basic_observability/props/ApplicationLoadBalancerDetectionProps.d.ts +66 -0
- package/lib/basic_observability/props/ApplicationLoadBalancerDetectionProps.js +3 -0
- package/lib/basic_observability/props/BasicServiceDashboardProps.d.ts +27 -13
- package/lib/basic_observability/props/BasicServiceDashboardProps.js +1 -1
- package/lib/basic_observability/props/BasicServiceMultiAZObservabilityProps.d.ts +10 -44
- package/lib/basic_observability/props/BasicServiceMultiAZObservabilityProps.js +1 -1
- package/lib/basic_observability/props/NatGatewayDetectionProps.d.ts +31 -0
- package/lib/basic_observability/props/NatGatewayDetectionProps.js +3 -0
- package/lib/canaries/CanaryFunction.js +14 -13
- package/lib/canaries/CanaryTest.js +4 -4
- package/lib/canaries/src/canary.zip +0 -0
- package/lib/dashboards/ContributorInsightsWidget.d.ts +1 -1
- package/lib/dashboards/ContributorInsightsWidget.js +13 -17
- package/lib/dashboards/OperationAvailabilityAndLatencyDashboard.d.ts +2 -6
- package/lib/dashboards/OperationAvailabilityAndLatencyDashboard.js +436 -510
- package/lib/dashboards/ServiceAvailabilityAndLatencyDashboard.d.ts +2 -10
- package/lib/dashboards/ServiceAvailabilityAndLatencyDashboard.js +420 -416
- package/lib/dashboards/props/OperationAvailabilityAndLatencyDashboardProps.d.ts +3 -66
- package/lib/dashboards/props/OperationAvailabilityAndLatencyDashboardProps.js +1 -1
- package/lib/dashboards/props/OperationAvailabilityWidgetProps.d.ts +7 -2
- package/lib/dashboards/props/OperationAvailabilityWidgetProps.js +1 -1
- package/lib/dashboards/props/OperationLatencyWidgetProps.d.ts +7 -2
- package/lib/dashboards/props/OperationLatencyWidgetProps.js +1 -1
- package/lib/dashboards/props/ServiceAvailabilityAndLatencyDashboardProps.d.ts +8 -8
- package/lib/dashboards/props/ServiceAvailabilityAndLatencyDashboardProps.js +1 -1
- package/lib/index.d.ts +56 -25
- package/lib/index.js +37 -19
- package/lib/metrics/ApplicationLoadBalancerMetrics.d.ts +79 -2
- package/lib/metrics/ApplicationLoadBalancerMetrics.js +883 -26
- package/lib/metrics/AvailabilityAndLatencyMetrics.d.ts +23 -0
- package/lib/metrics/AvailabilityAndLatencyMetrics.js +125 -31
- package/lib/metrics/NatGatewayMetrics.d.ts +113 -0
- package/lib/metrics/NatGatewayMetrics.js +357 -0
- package/lib/metrics/RegionalAvailabilityMetrics.js +9 -10
- package/lib/metrics/RegionalLatencyMetrics.d.ts +1 -1
- package/lib/metrics/RegionalLatencyMetrics.js +27 -20
- package/lib/metrics/ZonalAvailabilityMetrics.d.ts +2 -8
- package/lib/metrics/ZonalAvailabilityMetrics.js +13 -28
- package/lib/metrics/ZonalLatencyMetrics.d.ts +2 -1
- package/lib/metrics/ZonalLatencyMetrics.js +33 -23
- package/lib/metrics/props/AvailabilityAndLatencyMetricProps.d.ts +4 -0
- package/lib/metrics/props/AvailabilityAndLatencyMetricProps.js +1 -1
- package/lib/metrics/props/LatencyMetricProps.d.ts +6 -0
- package/lib/metrics/props/LatencyMetricProps.js +1 -1
- package/lib/metrics/props/ZonalAvailabilityMetricProps.d.ts +4 -0
- package/lib/metrics/props/ZonalAvailabilityMetricProps.js +1 -1
- package/lib/metrics/props/ZonalLatencyMetricProps.d.ts +4 -0
- package/lib/metrics/props/ZonalLatencyMetricProps.js +1 -1
- package/lib/monitoring/src/monitoring-layer.zip +0 -0
- package/lib/outlier-detection/ApplicationLoadBalancerAvailabilityOutlierAlgorithm.d.ts +10 -0
- package/lib/outlier-detection/ApplicationLoadBalancerAvailabilityOutlierAlgorithm.js +15 -0
- package/lib/{basic_observability/props/ApplicationLoadBalancerLatencyOutlierCalculation.d.ts → outlier-detection/ApplicationLoadBalancerLatencyOutlierAlgorithm.d.ts} +1 -1
- package/lib/outlier-detection/ApplicationLoadBalancerLatencyOutlierAlgorithm.js +23 -0
- package/lib/outlier-detection/LatencyOutlierMetricAggregation.d.ts +22 -0
- package/lib/outlier-detection/LatencyOutlierMetricAggregation.js +27 -0
- package/lib/outlier-detection/OutlierDetectionFunction.js +7 -6
- package/lib/outlier-detection/PacketLossOutlierAlgorithm.d.ts +10 -0
- package/lib/outlier-detection/PacketLossOutlierAlgorithm.js +15 -0
- package/lib/outlier-detection/src/outlier-detection.zip +0 -0
- package/lib/outlier-detection/src/scipy-layer.zip +0 -0
- package/lib/services/CanaryMetrics.d.ts +4 -3
- package/lib/services/CanaryMetrics.js +3 -4
- package/lib/services/CanaryTestAvailabilityMetricsOverride.d.ts +21 -0
- package/lib/services/CanaryTestAvailabilityMetricsOverride.js +23 -0
- package/lib/services/CanaryTestLatencyMetricsOverride.d.ts +15 -0
- package/lib/services/CanaryTestLatencyMetricsOverride.js +20 -0
- package/lib/services/CanaryTestMetricsOverride.d.ts +1 -13
- package/lib/services/CanaryTestMetricsOverride.js +2 -4
- package/lib/services/ContributorInsightRuleDetails.js +1 -1
- package/lib/services/ICanaryMetrics.d.ts +4 -3
- package/lib/services/ICanaryMetrics.js +1 -1
- package/lib/services/ICanaryTestAvailabilityMetricsOverride.d.ts +23 -0
- package/lib/services/ICanaryTestAvailabilityMetricsOverride.js +3 -0
- package/lib/services/ICanaryTestLatencyMetricsOverride.d.ts +13 -0
- package/lib/services/ICanaryTestLatencyMetricsOverride.js +3 -0
- package/lib/services/ICanaryTestMetricsOverride.d.ts +0 -12
- package/lib/services/ICanaryTestMetricsOverride.js +1 -1
- package/lib/services/IInstrumentedServiceMultiAZObservability.d.ts +13 -3
- package/lib/services/IInstrumentedServiceMultiAZObservability.js +1 -1
- package/lib/services/IOperation.d.ts +8 -6
- package/lib/services/IOperation.js +1 -1
- package/lib/services/IOperationAvailabilityMetricDetails.d.ts +18 -0
- package/lib/services/IOperationAvailabilityMetricDetails.js +3 -0
- package/lib/services/IOperationLatencyMetricDetails.d.ts +12 -0
- package/lib/services/IOperationLatencyMetricDetails.js +3 -0
- package/lib/services/IOperationMetricDetails.d.ts +0 -12
- package/lib/services/IOperationMetricDetails.js +1 -1
- package/lib/services/IService.d.ts +18 -4
- package/lib/services/IService.js +1 -1
- package/lib/services/IServiceAvailabilityMetricDetails.d.ts +18 -0
- package/lib/services/IServiceAvailabilityMetricDetails.js +3 -0
- package/lib/services/IServiceLatencyMetricDetails.d.ts +12 -0
- package/lib/services/IServiceLatencyMetricDetails.js +3 -0
- package/lib/services/IServiceMetricDetails.d.ts +0 -12
- package/lib/services/IServiceMetricDetails.js +1 -1
- package/lib/services/InstrumentedServiceMultiAZObservability.d.ts +15 -3
- package/lib/services/InstrumentedServiceMultiAZObservability.js +252 -228
- package/lib/services/Operation.d.ts +8 -6
- package/lib/services/Operation.js +4 -3
- package/lib/services/OperationAvailabilityMetricDetails.d.ts +22 -0
- package/lib/services/OperationAvailabilityMetricDetails.js +24 -0
- package/lib/services/OperationLatencyMetricDetails.d.ts +16 -0
- package/lib/services/OperationLatencyMetricDetails.js +21 -0
- package/lib/services/OperationMetricDetails.d.ts +1 -13
- package/lib/services/OperationMetricDetails.js +2 -8
- package/lib/services/Service.d.ts +18 -4
- package/lib/services/Service.js +4 -2
- package/lib/services/ServiceAvailabilityMetricDetails.d.ts +21 -0
- package/lib/services/ServiceAvailabilityMetricDetails.js +20 -0
- package/lib/services/ServiceLatencyMetricDetails.d.ts +15 -0
- package/lib/services/ServiceLatencyMetricDetails.js +19 -0
- package/lib/services/ServiceMetricDetails.d.ts +1 -13
- package/lib/services/ServiceMetricDetails.js +2 -4
- package/lib/services/props/CanaryMetricProps.d.ts +4 -3
- package/lib/services/props/CanaryMetricProps.js +1 -1
- package/lib/services/props/CanaryTestAvailabilityMetricsOverrideProps.d.ts +22 -0
- package/lib/services/props/CanaryTestAvailabilityMetricsOverrideProps.js +3 -0
- package/lib/services/props/CanaryTestLatencyMetricsOverrideProps.d.ts +14 -0
- package/lib/services/props/CanaryTestLatencyMetricsOverrideProps.js +3 -0
- package/lib/services/props/CanaryTestMetricsOverrideProps.d.ts +0 -16
- package/lib/services/props/CanaryTestMetricsOverrideProps.js +1 -1
- package/lib/services/props/InstrumentedServiceMultiAZObservabilityProps.d.ts +50 -5
- package/lib/services/props/InstrumentedServiceMultiAZObservabilityProps.js +1 -1
- package/lib/services/props/MetricDimensions.js +1 -1
- package/lib/services/props/OperationAvailabilityMetricDetailsProps.d.ts +22 -0
- package/lib/services/props/OperationAvailabilityMetricDetailsProps.js +3 -0
- package/lib/services/props/OperationLatencyMetricDetailsProps.d.ts +14 -0
- package/lib/services/props/OperationLatencyMetricDetailsProps.js +3 -0
- package/lib/services/props/OperationMetricDetailsProps.d.ts +0 -16
- package/lib/services/props/OperationMetricDetailsProps.js +1 -1
- package/lib/services/props/OperationProps.d.ts +4 -3
- package/lib/services/props/OperationProps.js +1 -1
- package/lib/services/props/ServiceAvailabilityMetricDetailsProps.d.ts +18 -0
- package/lib/services/props/ServiceAvailabilityMetricDetailsProps.js +3 -0
- package/lib/services/props/ServiceLatencyMetricDetailsProps.d.ts +12 -0
- package/lib/services/props/ServiceLatencyMetricDetailsProps.js +3 -0
- package/lib/services/props/ServiceMetricDetailsProps.d.ts +0 -12
- package/lib/services/props/ServiceMetricDetailsProps.js +1 -1
- package/lib/services/props/ServiceProps.d.ts +18 -4
- package/lib/services/props/ServiceProps.js +1 -1
- package/lib/utilities/MetricsHelper.d.ts +17 -9
- package/lib/utilities/MetricsHelper.js +34 -10
- package/lib/utilities/MinimumUnhealthyTargets.d.ts +25 -0
- package/lib/utilities/MinimumUnhealthyTargets.js +3 -0
- package/package.json +14 -14
- package/rosetta/default.ts-fixture +72 -0
- package/rosetta/service.ts-fixture +144 -0
- package/lib/basic_observability/props/ApplicationLoadBalancerLatencyOutlierCalculation.js +0 -23
- package/lib/services/IBasicServiceMultiAZObservability.d.ts +0 -45
- package/lib/services/IBasicServiceMultiAZObservability.js +0 -3
|
@@ -3,7 +3,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.OperationAlarmsAndRules = void 0;
|
|
4
4
|
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
5
5
|
// SPDX-License-Identifier: Apache-2.0
|
|
6
|
-
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
7
6
|
const aws_cloudwatch_1 = require("aws-cdk-lib/aws-cloudwatch");
|
|
8
7
|
const constructs_1 = require("constructs");
|
|
9
8
|
const CanaryOperationRegionalAlarmsAndRules_1 = require("./CanaryOperationRegionalAlarmsAndRules");
|
|
@@ -16,20 +15,17 @@ const ServerSideOperationZonalAlarmsAndRules_1 = require("./ServerSideOperationZ
|
|
|
16
15
|
class OperationAlarmsAndRules extends constructs_1.Construct {
|
|
17
16
|
constructor(scope, id, props) {
|
|
18
17
|
super(scope, id);
|
|
19
|
-
this.serverSideZonalAlarmsAndRules = [];
|
|
20
|
-
this.canaryZonalAlarmsAndRules = [];
|
|
21
|
-
this.aggregateZonalAlarms = [];
|
|
22
18
|
this.operation = props.operation;
|
|
23
|
-
this.
|
|
24
|
-
this.
|
|
25
|
-
|
|
26
|
-
return props.azMapper.availabilityZoneIdFromAvailabilityZoneLetter(x.substring(x.length - 1));
|
|
27
|
-
});
|
|
19
|
+
this.aggregateZonalAlarms = {};
|
|
20
|
+
this.serverSideZonalAlarmsAndRules = {};
|
|
21
|
+
this.canaryZonalAlarmsAndRules = {};
|
|
28
22
|
let loadBalancerArn = '';
|
|
29
|
-
if (props.loadBalancer
|
|
23
|
+
if (props.loadBalancer) {
|
|
30
24
|
loadBalancerArn = props.loadBalancer
|
|
31
25
|
.loadBalancerArn;
|
|
32
26
|
}
|
|
27
|
+
// Creates the regional impact alarms and contributor insight rules
|
|
28
|
+
// for contributors to regional faults and latency
|
|
33
29
|
this.serverSideRegionalAlarmsAndRules =
|
|
34
30
|
new ServerSideOperationRegionalAlarmsAndRules_1.ServerSideOperationRegionalAlarmsAndRules(this, props.operation.operationName + 'ServerSideRegionalAlarms', {
|
|
35
31
|
availabilityMetricDetails: props.operation.serverSideAvailabilityMetricDetails,
|
|
@@ -40,8 +36,9 @@ class OperationAlarmsAndRules extends constructs_1.Construct {
|
|
|
40
36
|
: props.operation.service.defaultContributorInsightRuleDetails,
|
|
41
37
|
nameSuffix: '-server',
|
|
42
38
|
});
|
|
43
|
-
|
|
44
|
-
|
|
39
|
+
// If canary metrics are defined, create the regional impact
|
|
40
|
+
// alarms
|
|
41
|
+
if (props.operation.canaryMetricDetails) {
|
|
45
42
|
this.canaryRegionalAlarmsAndRules =
|
|
46
43
|
new CanaryOperationRegionalAlarmsAndRules_1.CanaryOperationRegionalAlarmsAndRules(this, props.operation.operationName + 'CanaryRegionalAlarms', {
|
|
47
44
|
availabilityMetricDetails: props.operation.canaryMetricDetails
|
|
@@ -49,87 +46,78 @@ class OperationAlarmsAndRules extends constructs_1.Construct {
|
|
|
49
46
|
latencyMetricDetails: props.operation.canaryMetricDetails.canaryLatencyMetricDetails,
|
|
50
47
|
nameSuffix: '-canary',
|
|
51
48
|
});
|
|
52
|
-
this.aggregateRegionalAlarm = new aws_cloudwatch_1.CompositeAlarm(this, props.operation.operationName + 'AggregateRegionalAlarm', {
|
|
53
|
-
actionsEnabled: false,
|
|
54
|
-
compositeAlarmName: aws_cdk_lib_1.Fn.ref('AWS::Region') +
|
|
55
|
-
'-' +
|
|
56
|
-
props.operation.operationName.toLowerCase() +
|
|
57
|
-
'-' +
|
|
58
|
-
'aggregate-alarm',
|
|
59
|
-
alarmRule: aws_cloudwatch_1.AlarmRule.anyOf(this.serverSideRegionalAlarmsAndRules.availabilityOrLatencyAlarm, this.canaryRegionalAlarmsAndRules.availabilityOrLatencyAlarm),
|
|
60
|
-
});
|
|
61
|
-
}
|
|
62
|
-
else {
|
|
63
|
-
this.aggregateRegionalAlarm =
|
|
64
|
-
this.serverSideRegionalAlarmsAndRules.availabilityOrLatencyAlarm;
|
|
65
49
|
}
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
let
|
|
69
|
-
|
|
50
|
+
// Create the zonal isolated impact alarms
|
|
51
|
+
props.operation.service.availabilityZoneNames.forEach((availabilityZone, index) => {
|
|
52
|
+
let azLetter = availabilityZone.substring(availabilityZone.length - 1);
|
|
53
|
+
let availabilityZoneId = props.azMapper.availabilityZoneIdFromAvailabilityZoneLetter(azLetter);
|
|
54
|
+
let serverSideZonalAlarmsAndRules = new ServerSideOperationZonalAlarmsAndRules_1.ServerSideOperationZonalAlarmsAndRules(this, props.operation.operationName +
|
|
70
55
|
'AZ' +
|
|
71
|
-
|
|
56
|
+
index +
|
|
72
57
|
'ServerSideZonalAlarmsAndRules', {
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
outlierThreshold: props.outlierThreshold,
|
|
82
|
-
outlierDetectionAlgorithm: props.outlierDetectionAlgorithm,
|
|
83
|
-
nameSuffix: '-server',
|
|
84
|
-
operation: props.operation,
|
|
85
|
-
azMapper: props.azMapper,
|
|
86
|
-
outlierDetectionFunction: props.outlierDetectionFunction,
|
|
87
|
-
}));
|
|
88
|
-
this.serverSideZonalAlarmsMap[availabilityZoneId] =
|
|
89
|
-
this.serverSideZonalAlarmsAndRules[i].isolatedImpactAlarm;
|
|
90
|
-
if (props.operation.canaryMetricDetails !== undefined &&
|
|
91
|
-
props.operation.canaryMetricDetails != null) {
|
|
92
|
-
this.canaryZonalAlarmsAndRules.push(new CanaryOperationZonalAlarmsAndRules_1.CanaryOperationZonalAlarmsAndRules(this, props.operation.operationName +
|
|
58
|
+
availabilityZone: availabilityZone,
|
|
59
|
+
operationAlarmsAndRulesProps: props,
|
|
60
|
+
counter: index,
|
|
61
|
+
nameSuffix: '-server'
|
|
62
|
+
});
|
|
63
|
+
this.serverSideZonalAlarmsAndRules[availabilityZone] = serverSideZonalAlarmsAndRules;
|
|
64
|
+
if (props.operation.canaryMetricDetails) {
|
|
65
|
+
let canaryZonalAlarmsAndRules = new CanaryOperationZonalAlarmsAndRules_1.CanaryOperationZonalAlarmsAndRules(this, props.operation.operationName +
|
|
93
66
|
'AZ' +
|
|
94
|
-
|
|
67
|
+
index +
|
|
95
68
|
'CanaryZonalAlarmsAndRules', {
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
nameSuffix: '-canary',
|
|
104
|
-
operation: props.operation,
|
|
105
|
-
azMapper: props.azMapper,
|
|
106
|
-
outlierDetectionFunction: props.outlierDetectionFunction,
|
|
107
|
-
}));
|
|
108
|
-
this.aggregateZonalAlarms.push(new aws_cloudwatch_1.CompositeAlarm(this, props.operation.operationName +
|
|
69
|
+
availabilityZone: availabilityZone,
|
|
70
|
+
operationAlarmsAndRulesProps: props,
|
|
71
|
+
counter: index,
|
|
72
|
+
nameSuffix: '-canary'
|
|
73
|
+
});
|
|
74
|
+
this.canaryZonalAlarmsAndRules[availabilityZone] = canaryZonalAlarmsAndRules;
|
|
75
|
+
let aggAlarm = new aws_cloudwatch_1.CompositeAlarm(this, props.operation.operationName +
|
|
109
76
|
'AZ' +
|
|
110
|
-
|
|
77
|
+
index +
|
|
111
78
|
'AggregateZonalIsolatedImpactAlarm', {
|
|
112
79
|
compositeAlarmName: availabilityZoneId +
|
|
113
80
|
'-' +
|
|
114
81
|
props.operation.operationName.toLowerCase() +
|
|
115
82
|
'-aggregate-isolated-az-impact',
|
|
116
|
-
alarmRule: aws_cloudwatch_1.AlarmRule.anyOf(this.canaryZonalAlarmsAndRules[
|
|
83
|
+
alarmRule: aws_cloudwatch_1.AlarmRule.anyOf(this.canaryZonalAlarmsAndRules[availabilityZone].isolatedImpactAlarm, this.serverSideZonalAlarmsAndRules[availabilityZone].isolatedImpactAlarm),
|
|
117
84
|
actionsEnabled: false,
|
|
118
85
|
alarmDescription: '{"loadBalancer":"' +
|
|
119
86
|
loadBalancerArn +
|
|
120
87
|
'","az-id":"' +
|
|
121
88
|
availabilityZoneId +
|
|
122
89
|
'"}',
|
|
123
|
-
})
|
|
90
|
+
});
|
|
91
|
+
this.aggregateZonalAlarms[availabilityZone] = aggAlarm;
|
|
124
92
|
}
|
|
125
93
|
else {
|
|
126
|
-
this.aggregateZonalAlarms
|
|
94
|
+
this.aggregateZonalAlarms[availabilityZone] = this.serverSideZonalAlarmsAndRules[availabilityZone].isolatedImpactAlarm;
|
|
127
95
|
}
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
96
|
+
});
|
|
97
|
+
// Create a regional impact alarm that is triggered if regional
|
|
98
|
+
// metrics for availability or latency drop and there isn't a single
|
|
99
|
+
// AZ impact alarm
|
|
100
|
+
if (props.operation.canaryMetricDetails) {
|
|
101
|
+
this.regionalImpactAlarm = new aws_cloudwatch_1.CompositeAlarm(this, props.operation.operationName + "-regional-impact-alarm", {
|
|
102
|
+
compositeAlarmName: `${props.operation.service.serviceName.toLowerCase()}-${props.operation.operationName.toLowerCase()}-regional-impact`,
|
|
103
|
+
alarmRule: aws_cloudwatch_1.AlarmRule.allOf(aws_cloudwatch_1.AlarmRule.anyOf(this.serverSideRegionalAlarmsAndRules.availabilityOrLatencyAlarm, this.canaryRegionalAlarmsAndRules.availabilityOrLatencyAlarm), aws_cloudwatch_1.AlarmRule.not(aws_cloudwatch_1.AlarmRule.anyOf(...Object.values(this.aggregateZonalAlarms))))
|
|
104
|
+
});
|
|
105
|
+
this.canaryRegionalImpactAlarm = new aws_cloudwatch_1.CompositeAlarm(this, props.operation.operationName + "-canary-regional-impact-alarm", {
|
|
106
|
+
compositeAlarmName: `${props.operation.service.serviceName.toLowerCase()}-${props.operation.operationName.toLowerCase()}-canary-regional-impact`,
|
|
107
|
+
alarmRule: aws_cloudwatch_1.AlarmRule.allOf(this.canaryRegionalAlarmsAndRules.availabilityOrLatencyAlarm, aws_cloudwatch_1.AlarmRule.not(aws_cloudwatch_1.AlarmRule.anyOf(...Object.values(this.aggregateZonalAlarms))))
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
else {
|
|
111
|
+
this.regionalImpactAlarm = new aws_cloudwatch_1.CompositeAlarm(this, props.operation.operationName + "-regional-impact-alarm", {
|
|
112
|
+
compositeAlarmName: `${props.operation.service.serviceName.toLowerCase()}-${props.operation.operationName.toLowerCase()}-regional-impact`,
|
|
113
|
+
alarmRule: aws_cloudwatch_1.AlarmRule.allOf(this.serverSideRegionalAlarmsAndRules.availabilityOrLatencyAlarm, aws_cloudwatch_1.AlarmRule.not(aws_cloudwatch_1.AlarmRule.anyOf(...Object.values(this.aggregateZonalAlarms))))
|
|
114
|
+
});
|
|
131
115
|
}
|
|
116
|
+
this.serverSideRegionalImpactAlarm = new aws_cloudwatch_1.CompositeAlarm(this, props.operation.operationName + "-server-regional-impact-alarm", {
|
|
117
|
+
compositeAlarmName: `${props.operation.service.serviceName.toLowerCase()}-${props.operation.operationName.toLowerCase()}-server-regional-impact`,
|
|
118
|
+
alarmRule: aws_cloudwatch_1.AlarmRule.allOf(this.serverSideRegionalAlarmsAndRules.availabilityOrLatencyAlarm, aws_cloudwatch_1.AlarmRule.not(aws_cloudwatch_1.AlarmRule.anyOf(...Object.values(this.aggregateZonalAlarms))))
|
|
119
|
+
});
|
|
132
120
|
}
|
|
133
121
|
}
|
|
134
122
|
exports.OperationAlarmsAndRules = OperationAlarmsAndRules;
|
|
135
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiT3BlcmF0aW9uQWxhcm1zQW5kUnVsZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYWxhcm1zYW5kcnVsZXMvT3BlcmF0aW9uQWxhcm1zQW5kUnVsZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEscUVBQXFFO0FBQ3JFLHNDQUFzQztBQUN0Qyw2Q0FBaUM7QUFDakMsK0RBQStFO0FBRS9FLDJDQUF1QztBQUN2QyxtR0FBZ0c7QUFDaEcsNkZBQTBGO0FBTzFGLDJHQUF3RztBQUN4RyxxR0FBa0c7QUFHbEc7O0dBRUc7QUFDSCxNQUFhLHVCQUNYLFNBQVEsc0JBQVM7SUFtRGpCLFlBQ0UsS0FBZ0IsRUFDaEIsRUFBVSxFQUNWLEtBQW1DO1FBRW5DLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDakIsSUFBSSxDQUFDLDZCQUE2QixHQUFHLEVBQUUsQ0FBQztRQUN4QyxJQUFJLENBQUMseUJBQXlCLEdBQUcsRUFBRSxDQUFDO1FBQ3BDLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxFQUFFLENBQUM7UUFDL0IsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUMsU0FBUyxDQUFDO1FBQ2pDLElBQUksQ0FBQyx1QkFBdUIsR0FBRyxFQUFFLENBQUM7UUFDbEMsSUFBSSxDQUFDLHdCQUF3QixHQUFHLEVBQUUsQ0FBQztRQUVuQyxJQUFJLG1CQUFtQixHQUNyQixLQUFLLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxxQkFBcUIsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUN0RCxPQUFPLEtBQUssQ0FBQyxRQUFRLENBQUMsNENBQTRDLENBQ2hFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FDMUIsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUFDO1FBRUwsSUFBSSxlQUFlLEdBQVcsRUFBRSxDQUFDO1FBRWpDLElBQUksS0FBSyxDQUFD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QW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5pbXBvcnQgeyBGbiB9IGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCB7IEFsYXJtUnVsZSwgQ29tcG9zaXRlQWxhcm0sIElBbGFybSB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1jbG91ZHdhdGNoJztcbmltcG9ydCB7IEJhc2VMb2FkQmFsYW5jZXIgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtZWxhc3RpY2xvYWRiYWxhbmNpbmd2Mic7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCB7IENhbmFyeU9wZXJhdGlvblJlZ2lvbmFsQWxhcm1zQW5kUnVsZXMgfSBmcm9tICcuL0NhbmFyeU9wZXJhdGlvblJlZ2lvbmFsQWxhcm1zQW5kUnVsZXMnO1xuaW1wb3J0IHsgQ2FuYXJ5T3BlcmF0aW9uWm9uYWxBbGFybXNBbmRSdWxlcyB9IGZyb20gJy4vQ2FuYXJ5T3BlcmF0aW9uWm9uYWxBbGFybXNBbmRSdWxlcyc7XG5pbXBvcnQgeyBJQ2FuYXJ5T3BlcmF0aW9uUmVnaW9uYWxBbGFybXNBbmRSdWxlcyB9IGZyb20gJy4vSUNhbmFyeU9wZXJhdGlvblJlZ2lvbmFsQWxhcm1zQW5kUnVsZXMnO1xuaW1wb3J0IHsgSUNhbmFyeU9wZXJhdGlvblpvbmFsQWxhcm1zQW5kUnVsZXMgfSBmcm9tICcuL0lDYW5hcnlPcGVyYXRpb25ab25hbEFsYXJtc0FuZFJ1bGVzJztcbmltcG9ydCB7IElPcGVyYXRpb25BbGFybXNBbmRSdWxlcyB9IGZyb20gJy4vSU9wZXJhdGlvbkFsYXJtc0FuZFJ1bGVzJztcbmltcG9ydCB7IElTZXJ2ZXJTaWRlT3BlcmF0aW9uUmVnaW9uYWxBbGFybXNBbmRSdWxlcyB9IGZyb20gJy4vSVNlcnZlclNpZGVPcGVyYXRpb25SZWdpb25hbEFsYXJtc0FuZFJ1bGVzJztcbmltcG9ydCB7IElTZXJ2ZXJTaWRlT3BlcmF0aW9uWm9uYWxBbGFybXNBbmRSdWxlcyB9IGZyb20gJy4vSVNlcnZlclNpZGVPcGVyYXRpb25ab25hbEFsYXJtc0FuZFJ1bGVzJztcbmltcG9ydCB7IE9wZXJhdGlvbkFsYXJtc0FuZFJ1bGVzUHJvcHMgfSBmcm9tICcuL3Byb3BzL09wZXJhdGlvbkFsYXJtc0FuZFJ1bGVzUHJvcHMnO1xuaW1wb3J0IHsgU2VydmVyU2lkZU9wZXJhdGlvblJlZ2lvbmFsQWxhcm1zQW5kUnVsZXMgfSBmcm9tICcuL1NlcnZlclNpZGVPcGVyYXRpb25SZWdpb25hbEFsYXJtc0FuZFJ1bGVzJztcbmltcG9ydCB7IFNlcnZlclNpZGVPcGVyYXRpb25ab25hbEFsYXJtc0FuZFJ1bGVzIH0gZnJvbSAnLi9TZXJ2ZXJTaWRlT3BlcmF0aW9uWm9uYWxBbGFybXNBbmRSdWxlcyc7XG5pbXBvcnQgeyBJT3BlcmF0aW9uIH0gZnJvbSAnLi4vc2VydmljZXMvSU9wZXJhdGlvbic7XG5cbi8qKlxuICogQ3JlYXRlcyBhbGFybXMgYW5kIHJ1bGVzIGZvciBhbiBvcGVyYXRpb24gZm9yIGJvdGggcmVnaW9uYWwgYW5kIHpvbmFsIG1ldHJpY3NcbiAqL1xuZXhwb3J0IGNsYXNzIE9wZXJhdGlvbkFsYXJtc0FuZFJ1bGVzXG4gIGV4dGVuZHMgQ29uc3RydWN0XG4gIGltcGxlbWVudHMgSU9wZXJhdGlvbkFsYXJtc0FuZFJ1bGVzIHtcbiAgLyoqXG4gICAqIFRoZSBvcGVyYXRpb24gdGhlIGFsYXJtcyBhbmQgcnVsZXMgYXJlIGNyZWF0ZWQgZm9yXG4gICAqL1xuICByZWFkb25seSBvcGVyYXRpb246IElPcGVyYXRpb247XG5cbiAgLyoqXG4gICAqIFRoZSBzZXJ2ZXIgc2lkZSByZWdpb25hbCBhbGFybXMgYW5kIHJ1bGVzXG4gICAqL1xuICByZWFkb25seSBzZXJ2ZXJTaWRlUmVnaW9uYWxBbGFybXNBbmRSdWxlczogSVNlcnZlclNpZGVPcGVyYXRpb25SZWdpb25hbEFsYXJtc0FuZFJ1bGVzO1xuXG4gIC8qKlxuICAgKiBUaGUgY2FuYXJ5IHJlZ2lvbmFsIGFsYXJtcyBhbmQgcnVsZXNcbiAgICovXG4gIHJlYWRvbmx5IGNhbmFyeVJlZ2lvbmFsQWxhcm1zQW5kUnVsZXM/OiBJQ2FuYXJ5T3BlcmF0aW9uUmVnaW9uYWxBbGFybXNBbmRSdWxlcztcblxuICAvKipcbiAgICogVGhlIGFnZ3JlZ2F0ZSByZWdpb25hbCBhbGFybSB0aGF0IGxvb2tzIGF0IGJvdGggY2FuYXJ5IGFuZCBzZXJ2ZXJcbiAgICogc2lkZSBpbXBhY3QgYWxhcm1zIGZvciBsYXRlbmN5IGFuZCBhdmFpbGFiaWxpdHlcbiAgICovXG4gIHJlYWRvbmx5IGFnZ3JlZ2F0ZVJlZ2lvbmFsQWxhcm06IElBbGFybTtcblxuICAvKipcbiAgICogVGhlIHNlcnZlciBzaWRlIHpvbmFsIGFsYXJtcyBhbmQgcnVsZXNcbiAgICovXG4gIHJlYWRvbmx5IHNlcnZlclNpZGVab25hbEFsYXJtc0FuZFJ1bGVzOiBJU2VydmVyU2lkZU9wZXJhdGlvblpvbmFsQWxhcm1zQW5kUnVsZXNbXTtcblxuICAvKipcbiAgICogVGhlIGNhbmFyeSB6b25hbCBhbGFybXMgYW5kIHJ1bGVzXG4gICAqL1xuICByZWFkb25seSBjYW5hcnlab25hbEFsYXJtc0FuZFJ1bGVzPzogSUNhbmFyeU9wZXJhdGlvblpvbmFsQWxhcm1zQW5kUnVsZXNbXTtcblxuICAvKipcbiAgICogVGhlIGFnZ3JlZ2F0ZSB6b25hbCBhbGFybXMsIG9uZSBwZXIgQVouIEVhY2ggYWxhcm0gaW5kaWNhdGVzIHRoZXJlIGlzIGVpdGhlclxuICAgKiBsYXRlbmN5IG9yIGF2YWlsYWJpbGl0eSBpbXBhY3QgaW4gdGhhdCBBWiwgYW5kIHRoZSBBWiBpcyBhbiBvdXRsaWVyIGZvclxuICAgKiBhdmFpbGFiaWxpdHkgb3IgbGF0ZW5jeSBpbXBhY3QuIEJvdGggc2VydmVyIHNpZGUgYW5kIGNhbmFyeSBtZXRyaWNzIGFyZVxuICAgKiBldmFsdWF0ZWRcbiAgICovXG4gIHJlYWRvbmx5IGFnZ3JlZ2F0ZVpvbmFsQWxhcm1zOiBJQWxhcm1bXTtcblxuICAvKipcbiAgICogVGhlIGFnZ3JlZ2F0ZSB6b25hbCBhbGFybSBpbmRleGVkIGJ5IEF2YWlsYWJpbGl0eSBab25lIElkLlxuICAgKi9cbiAgcmVhZG9ubHkgYWdncmVnYXRlWm9uYWxBbGFybXNNYXA6IHsgW2tleTogc3RyaW5nXTogSUFsYXJtIH07XG5cbiAgLyoqXG4gICAqIEp1c3QgdGhlIHNlcnZlciBzaWRlIHpvbmFsIGFsYXJtc1xuICAgKi9cbiAgcmVhZG9ubHkgc2VydmVyU2lkZVpvbmFsQWxhcm1zTWFwOiB7IFtrZXk6IHN0cmluZ106IElBbGFybSB9O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHNjb3BlOiBDb25zdHJ1Y3QsXG4gICAgaWQ6IHN0cmluZyxcbiAgICBwcm9wczogT3BlcmF0aW9uQWxhcm1zQW5kUnVsZXNQcm9wcyxcbiAgKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcbiAgICB0aGlzLnNlcnZlclNpZGVab25hbEFsYXJtc0FuZFJ1bGVzID0gW107XG4gICAgdGhpcy5jYW5hcnlab25hbEFsYXJtc0FuZFJ1bGVzID0gW107XG4gICAgdGhpcy5hZ2dyZWdhdGVab25hbEFsYXJtcyA9IFtdO1xuICAgIHRoaXMub3BlcmF0aW9uID0gcHJvcHMub3BlcmF0aW9uO1xuICAgIHRoaXMuYWdncmVnYXRlWm9uYWxBbGFybXNNYXAgPSB7fTtcbiAgICB0aGlzLnNlcnZlclNpZGVab25hbEFsYXJtc01hcCA9IHt9O1xuXG4gICAgbGV0IGF2YWlsYWJpbGl0eVpvbmVJZHM6IHN0cmluZ1tdID1cbiAgICAgIHByb3BzLm9wZXJhdGlvbi5zZXJ2aWNlLmF2YWlsYWJpbGl0eVpvbmVOYW1lcy5tYXAoKHgpID0+IHtcbiAgICAgICAgcmV0dXJuIHByb3BzLmF6TWFwcGVyLmF2YWlsYWJpbGl0eVpvbmVJZEZyb21BdmFpbGFiaWxpdHlab25lTGV0dGVyKFxuICAgICAgICAgIHguc3Vic3RyaW5nKHgubGVuZ3RoIC0gMSksXG4gICAgICAgICk7XG4gICAgICB9KTtcblxuICAgIGxldCBsb2FkQmFsYW5jZXJBcm46IHN0cmluZyA9ICcnO1xuXG4gICAgaWYgKHByb3BzLmxvYWRCYWxhbmNlciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBsb2FkQmFsYW5jZXJBcm4gPSAocHJvcHMubG9hZEJhbGFuY2VyIGFzIEJhc2VMb2FkQmFsYW5jZXIpXG4gICAgICAgIC5sb2FkQmFsYW5jZXJBcm47XG4gICAgfVxuXG4gICAgdGhpcy5zZXJ2ZXJTaWRlUmVnaW9uYWxBbGFybXNBbmRSdWxlcyA9XG4gICAgICBuZXcgU2VydmVyU2lkZU9wZXJhdGlvblJlZ2lvbmFsQWxhcm1zQW5kUnVsZXMoXG4gICAgICAgIHRoaXMsXG4gICAgICAgIHByb3BzLm9wZXJhdGlvbi5vcGVyYXRpb25OYW1lICsgJ1NlcnZlclNpZGVSZWdpb25hbEFsYXJtcycsXG4gICAgICAgIHtcbiAgICAgICAgICBhdmFpbGFiaWxpdHlNZXRyaWNEZXRhaWxzOlxuICAgICAgICAgICAgcHJvcHMub3BlcmF0aW9uLnNlcnZlclNpZGVBdmFpbGFiaWxpdHlNZXRyaWNEZXRhaWxzLFxuICAgICAgICAgIGxhdGVuY3lNZXRyaWNEZXRhaWxzOiBwcm9wcy5vcGVyYXRpb24uc2VydmVyU2lkZUxhdGVuY3lNZXRyaWNEZXRhaWxzLFxuICAgICAgICAgIGNvbnRyaWJ1dG9ySW5zaWdodFJ1bGVEZXRhaWxzOiBwcm9wcy5vcGVyYXRpb25cbiAgICAgICAgICAgIC5zZXJ2ZXJTaWRlQ29udHJpYnV0b3JJbnNpZ2h0UnVsZURldGFpbHNcbiAgICAgICAgICAgID8gcHJvcHMub3BlcmF0aW9uLnNlcnZlclNpZGVDb250cmlidXRvckluc2lnaHRSdWxlRGV0YWlsc1xuICAgICAgICAgICAgOiBwcm9wcy5vcGVyYXRpb24uc2VydmljZS5kZWZhdWx0Q29udHJpYnV0b3JJbnNpZ2h0UnVsZURldGFpbHMsXG4gICAgICAgICAgbmFtZVN1ZmZpeDogJy1zZXJ2ZXInLFxuICAgICAgICB9LFxuICAgICAgKTtcblxuICAgIGlmIChcbiAgICAgIHByb3BzLm9wZXJhdGlvbi5jYW5hcnlNZXRyaWNEZXRhaWxzICE9PSB1bmRlZmluZWQgJiZcbiAgICAgIHByb3BzLm9wZXJhdGlvbi5jYW5hcnlNZXRyaWNEZXRhaWxzICE9IG51bGxcbiAgICApIHtcbiAgICAgIHRoaXMuY2FuYXJ5UmVnaW9uYWxBbGFybXNBbmRSdWxlcyA9XG4gICAgICAgIG5ldyBDYW5hcnlPcGVyYXRpb25SZWdpb25hbEFsYXJtc0FuZFJ1bGVzKFxuICAgICAgICAgIHRoaXMsXG4gICAgICAgICAgcHJvcHMub3BlcmF0aW9uLm9wZXJhdGlvbk5hbWUgKyAnQ2FuYXJ5UmVnaW9uYWxBbGFybXMnLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGF2YWlsYWJpbGl0eU1ldHJpY0RldGFpbHM6XG4gICAgICAgICAgICAgIHByb3BzLm9wZXJhdGlvbi5jYW5hcnlNZXRyaWNEZXRhaWxzXG4gICAgICAgICAgICAgICAgLmNhbmFyeUF2YWlsYWJpbGl0eU1ldHJpY0RldGFpbHMsXG4gICAgICAgICAgICBsYXRlbmN5TWV0cmljRGV0YWlsczpcbiAgICAgICAgICAgICAgcHJvcHMub3BlcmF0aW9uLmNhbmFyeU1ldHJpY0RldGFpbHMuY2FuYXJ5TGF0ZW5jeU1ldHJpY0RldGFpbHMsXG4gICAgICAgICAgICBuYW1lU3VmZml4OiAnLWNhbmFyeScsXG4gICAgICAgICAgfSxcbiAgICAgICAgKTtcblxuICAgICAgdGhpcy5hZ2dyZWdhdGVSZWdpb25hbEFsYXJtID0gbmV3IENvbXBvc2l0ZUFsYXJtKFxuICAgICAgICB0aGlzLFxuICAgICAgICBwcm9wcy5vcGVyYXRpb24ub3BlcmF0aW9uTmFtZSArICdBZ2dyZWdhdGVSZWdpb25hbEFsYXJtJyxcbiAgICAgICAge1xuICAgICAgICAgIGFjdGlvbnNFbmFibGVkOiBmYWxzZSxcbiAgICAgICAgICBjb21wb3NpdGVBbGFybU5hbWU6XG4gICAgICAgICAgICBGbi5yZWYoJ0FXUzo6UmVnaW9uJykgK1xuICAgICAgICAgICAgJy0nICtcbiAgICAgICAgICAgIHByb3BzLm9wZXJhdGlvbi5vcGVyYXRpb25OYW1lLnRvTG93ZXJDYXNlKCkgK1xuICAgICAgICAgICAgJy0nICtcbiAgICAgICAgICAgICdhZ2dyZWdhdGUtYWxhcm0nLFxuICAgICAgICAgIGFsYXJtUnVsZTogQWxhcm1SdWxlLmFueU9mKFxuICAgICAgICAgICAgdGhpcy5zZXJ2ZXJTaWRlUmVnaW9uYWxBbGFybXNBbmRSdWxlcy5hdmFpbGFiaWxpdHlPckxhdGVuY3lBbGFybSxcbiAgICAgICAgICAgIHRoaXMuY2FuYXJ5UmVnaW9uYWxBbGFybXNBbmRSdWxlcy5hdmFpbGFiaWxpdHlPckxhdGVuY3lBbGFybSxcbiAgICAgICAgICApLFxuICAgICAgICB9LFxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5hZ2dyZWdhdGVSZWdpb25hbEFsYXJtID1cbiAgICAgICAgdGhpcy5zZXJ2ZXJTaWRlUmVnaW9uYWxBbGFybXNBbmRSdWxlcy5hdmFpbGFiaWxpdHlPckxhdGVuY3lBbGFybTtcbiAgICB9XG5cbiAgICBsZXQgY291bnRlcjogbnVtYmVyID0gMTtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYXZhaWxhYmlsaXR5Wm9uZUlkcy5sZW5ndGg7IGkrKykge1xuICAgICAgbGV0IGF2YWlsYWJpbGl0eVpvbmVJZDogc3RyaW5nID0gYXZhaWxhYmlsaXR5Wm9uZUlkc1tpXTtcblxuICAgICAgdGhpcy5zZXJ2ZXJTaWRlWm9uYWxBbGFybXNBbmRSdWxlcy5wdXNoKFxuICAgICAgICBuZXcgU2VydmVyU2lkZU9wZXJhdGlvblpvbmFsQWxhcm1zQW5kUnVsZXMoXG4gICAgICAgICAgdGhpcyxcbiAgICAgICAgICBwcm9wcy5vcGVyYXRpb24ub3BlcmF0aW9uTmFtZSArXG4gICAgICAgICAgICAnQVonICtcbiAgICAgICAgICAgIGNvdW50ZXIgK1xuICAgICAgICAgICAgJ1NlcnZlclNpZGVab25hbEFsYXJtc0FuZFJ1bGVzJyxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBhdmFpbGFiaWxpdHlab25lSWQ6IGF2YWlsYWJpbGl0eVpvbmVJZCxcbiAgICAgICAgICAgIGF2YWlsYWJpbGl0eU1ldHJpY0RldGFpbHM6XG4gICAgICAgICAgICAgIHByb3BzLm9wZXJhdGlvbi5zZXJ2ZXJTaWRlQXZhaWxhYmlsaXR5TWV0cmljRGV0YWlscyxcbiAgICAgICAgICAgIGxhdGVuY3lNZXRyaWNEZXRhaWxzOlxuICAgICAgICAgICAgICBwcm9wcy5vcGVyYXRpb24uc2VydmVyU2lkZUxhdGVuY3lNZXRyaWNEZXRhaWxzLFxuICAgICAgICAgICAgY29udHJpYnV0b3JJbnNpZ2h0UnVsZURldGFpbHM6IHByb3BzLm9wZXJhdGlvblxuICAgICAgICAgICAgICAuc2VydmVyU2lkZUNvbnRyaWJ1dG9ySW5zaWdodFJ1bGVEZXRhaWxzXG4gICAgICAgICAgICAgID8gcHJvcHMub3BlcmF0aW9uLnNlcnZlclNpZGVDb250cmlidXRvckluc2lnaHRSdWxlRGV0YWlsc1xuICAgICAgICAgICAgICA6IHByb3BzLm9wZXJhdGlvbi5zZXJ2aWNlLmRlZmF1bHRDb250cmlidXRvckluc2lnaHRSdWxlRGV0YWlscyxcbiAgICAgICAgICAgIGNvdW50ZXI6IGNvdW50ZXIsXG4gICAgICAgICAgICBvdXRsaWVyVGhyZXNob2xkOiBwcm9wcy5vdXRsaWVyVGhyZXNob2xkLFxuICAgICAgICAgICAgb3V0bGllckRldGVjdGlvbkFsZ29yaXRobTogcHJvcHMub3V0bGllckRldGVjdGlvbkFsZ29yaXRobSxcbiAgICAgICAgICAgIG5hbWVTdWZmaXg6ICctc2VydmVyJyxcbiAgICAgICAgICAgIG9wZXJhdGlvbjogcHJvcHMub3BlcmF0aW9uLFxuICAgICAgICAgICAgYXpNYXBwZXI6IHByb3BzLmF6TWFwcGVyLFxuICAgICAgICAgICAgb3V0bGllckRldGVjdGlvbkZ1bmN0aW9uOiBwcm9wcy5vdXRsaWVyRGV0ZWN0aW9uRnVuY3Rpb24sXG4gICAgICAgICAgfSxcbiAgICAgICAgKSxcbiAgICAgICk7XG5cbiAgICAgIHRoaXMuc2VydmVyU2lkZVpvbmFsQWxhcm1zTWFwW2F2YWlsYWJpbGl0eVpvbmVJZF0gPVxuICAgICAgICB0aGlzLnNlcnZlclNpZGVab25hbEFsYXJtc0FuZFJ1bGVzW2ldLmlzb2xhdGVkSW1wYWN0QWxhcm07XG5cbiAgICAgIGlmIChcbiAgICAgICAgcHJvcHMub3BlcmF0aW9uLmNhbmFyeU1ldHJpY0RldGFpbHMgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgICBwcm9wcy5vcGVyYXRpb24uY2FuYXJ5TWV0cmljRGV0YWlscyAhPSBudWxsXG4gICAgICApIHtcbiAgICAgICAgdGhpcy5jYW5hcnlab25hbEFsYXJtc0FuZFJ1bGVzLnB1c2goXG4gICAgICAgICAgbmV3IENhbmFyeU9wZXJhdGlvblpvbmFsQWxhcm1zQW5kUnVsZXMoXG4gICAgICAgICAgICB0aGlzLFxuICAgICAgICAgICAgcHJvcHMub3BlcmF0aW9uLm9wZXJhdGlvbk5hbWUgK1xuICAgICAgICAgICAgICAnQVonICtcbiAgICAgICAgICAgICAgY291bnRlciArXG4gICAgICAgICAgICAgICdDYW5hcnlab25hbEFsYXJtc0FuZFJ1bGVzJyxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgYXZhaWxhYmlsaXR5Wm9uZUlkOiBhdmFpbGFiaWxpdHlab25lSWQsXG4gICAgICAgICAgICAgIGF2YWlsYWJpbGl0eU1ldHJpY0RldGFpbHM6XG4gICAgICAgICAgICAgICAgcHJvcHMub3BlcmF0aW9uLmNhbmFyeU1ldHJpY0RldGFpbHNcbiAgICAgICAgICAgICAgICAgIC5jYW5hcnlBdmFpbGFiaWxpdHlNZXRyaWNEZXRhaWxzLFxuICAgICAgICAgICAgICBsYXRlbmN5TWV0cmljRGV0YWlsczpcbiAgICAgICAgICAgICAgICBwcm9wcy5vcGVyYXRpb24uY2FuYXJ5TWV0cmljRGV0YWlscy5jYW5hcnlMYXRlbmN5TWV0cmljRGV0YWlscyxcbiAgICAgICAgICAgICAgY291bnRlcjogY291bnRlcixcbiAgICAgICAgICAgICAgb3V0bGllclRocmVzaG9sZDogcHJvcHMub3V0bGllclRocmVzaG9sZCxcbiAgICAgICAgICAgICAgb3V0bGllckRldGVjdGlvbkFsZ29yaXRobTogcHJvcHMub3V0bGllckRldGVjdGlvbkFsZ29yaXRobSxcbiAgICAgICAgICAgICAgbmFtZVN1ZmZpeDogJy1jYW5hcnknLFxuICAgICAgICAgICAgICBvcGVyYXRpb246IHByb3BzLm9wZXJhdGlvbixcbiAgICAgICAgICAgICAgYXpNYXBwZXI6IHByb3BzLmF6TWFwcGVyLFxuICAgICAgICAgICAgICBvdXRsaWVyRGV0ZWN0aW9uRnVuY3Rpb246IHByb3BzLm91dGxpZXJEZXRlY3Rpb25GdW5jdGlvbixcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgKSxcbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLmFnZ3JlZ2F0ZVpvbmFsQWxhcm1zLnB1c2goXG4gICAgICAgICAgbmV3IENvbXBvc2l0ZUFsYXJtKFxuICAgICAgICAgICAgdGhpcyxcbiAgICAgICAgICAgIHByb3BzLm9wZXJhdGlvbi5vcGVyYXRpb25OYW1lICtcbiAgICAgICAgICAgICAgJ0FaJyArXG4gICAgICAgICAgICAgIGNvdW50ZXIgK1xuICAgICAgICAgICAgICAnQWdncmVnYXRlWm9uYWxJc29sYXRlZEltcGFjdEFsYXJtJyxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgY29tcG9zaXRlQWxhcm1OYW1lOlxuICAgICAgICAgICAgICAgIGF2YWlsYWJpbGl0eVpvbmVJZCArXG4gICAgICAgICAgICAgICAgJy0nICtcbiAgICAgICAgICAgICAgICBwcm9wcy5vcGVyYXRpb24ub3BlcmF0aW9uTmFtZS50b0xvd2VyQ2FzZSgpICtcbiAgICAgICAgICAgICAgICAnLWFnZ3JlZ2F0ZS1pc29sYXRlZC1hei1pbXBhY3QnLFxuICAgICAgICAgICAgICBhbGFybVJ1bGU6IEFsYXJtUnVsZS5hbnlPZihcbiAgICAgICAgICAgICAgICB0aGlzLmNhbmFyeVpvbmFsQWxhcm1zQW5kUnVsZXNbaV0uaXNvbGF0ZWRJbXBhY3RBbGFybSxcbiAgICAgICAgICAgICAgICB0aGlzLnNlcnZlclNpZGVab25hbEFsYXJtc0FuZFJ1bGVzW2ldLmlzb2xhdGVkSW1wYWN0QWxhcm0sXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIGFjdGlvbnNFbmFibGVkOiBmYWxzZSxcbiAgICAgICAgICAgICAgYWxhcm1EZXNjcmlwdGlvbjpcbiAgICAgICAgICAgICAgICAne1wibG9hZEJhbGFuY2VyXCI6XCInICtcbiAgICAgICAgICAgICAgICBsb2FkQmFsYW5jZXJBcm4gK1xuICAgICAgICAgICAgICAgICdcIixcImF6LWlkXCI6XCInICtcbiAgICAgICAgICAgICAgICBhdmFpbGFiaWxpdHlab25lSWQgK1xuICAgICAgICAgICAgICAgICdcIn0nLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICApLFxuICAgICAgICApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5hZ2dyZWdhdGVab25hbEFsYXJtcy5wdXNoKFxuICAgICAgICAgIHRoaXMuc2VydmVyU2lkZVpvbmFsQWxhcm1zQW5kUnVsZXNbaV0uaXNvbGF0ZWRJbXBhY3RBbGFybSxcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5hZ2dyZWdhdGVab25hbEFsYXJtc01hcFthdmFpbGFiaWxpdHlab25lSWRdID1cbiAgICAgICAgdGhpcy5hZ2dyZWdhdGVab25hbEFsYXJtc1stMV07XG5cbiAgICAgIGNvdW50ZXIrKztcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
123
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiT3BlcmF0aW9uQWxhcm1zQW5kUnVsZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYWxhcm1zYW5kcnVsZXMvT3BlcmF0aW9uQWxhcm1zQW5kUnVsZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEscUVBQXFFO0FBQ3JFLHNDQUFzQztBQUN0QywrREFBK0U7QUFFL0UsMkNBQXVDO0FBQ3ZDLG1HQUFnRztBQUNoRyw2RkFBMEY7QUFPMUYsMkdBQXdHO0FBQ3hHLHFHQUFrRztBQUdsRzs7R0FFRztBQUNILE1BQWEsdUJBQ1gsU0FBUSxzQkFBUztJQW9EakIsWUFDRSxLQUFnQixFQUNoQixFQUFVLEVBQ1YsS0FBbUM7UUFFbkMsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVqQixJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUM7UUFDakMsSUFBSSxDQUFDLG9CQUFvQixHQUFHLEVBQUUsQ0FBQztRQUMvQixJQUFJLENBQUMsNkJBQTZCLEdBQUcsRUFBRSxDQUFDO1FBQ3hDLElBQUksQ0FBQyx5QkFBeUIsR0FBRyxFQUFFLENBQUM7UUFFcEMsSUFBSSxlQUFlLEdBQVcsRUFBRSxDQUFDO1FBRWpDLElBQUksS0FBSyxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3ZCLGVBQWUsR0FBSSxLQUFLLENBQUMsWUFBaUM7aUJBQ3ZELGVBQWUsQ0FBQztRQUNyQixDQUFDO1FBRUQsbUVBQW1FO1FBQ25FLGtEQUFrRDtRQUNsRCxJQUFJLENBQUMsZ0NBQWdDO1lBQ25DLElBQUkscUZBQXlDLENBQzNDLElBQUksRUFDSixLQUFLLENBQUMsU0FBUyxDQUFDLGFBQWEsR0FBRywwQkFBMEIsRUFDMUQ7Z0JBQ0UseUJBQXlCLEVBQ3ZCLEtBQUssQ0FBQyxTQUFTLENBQUMsbUNBQW1DO2dCQUNyRCxvQkFBb0IsRUFBRSxLQUFLLENBQUMsU0FBUyxDQUFDLDhCQUE4QjtnQkFDcEUsNkJBQTZCLEVB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QUFTLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxXQUFXLEVBQUUsSUFBSSxLQUFLLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxXQUFXLEVBQUUseUJBQXlCO1lBQ2hKLFNBQVMsRUFBRSwwQkFBUyxDQUFDLEtBQUssQ0FDeEIsSUFBSSxDQUFDLGdDQUFnQyxDQUFDLDBCQUEwQixFQUNoRSwwQkFBUyxDQUFDLEdBQUcsQ0FDWCwwQkFBUyxDQUFDLEtBQUssQ0FDYixHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLENBQzVDLENBQ0YsQ0FDRjtTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRjtBQTNPRCwwREEyT0MiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5pbXBvcnQgeyBBbGFybVJ1bGUsIENvbXBvc2l0ZUFsYXJtLCBJQWxhcm0gfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtY2xvdWR3YXRjaCc7XG5pbXBvcnQgeyBCYXNlTG9hZEJhbGFuY2VyIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWVsYXN0aWNsb2FkYmFsYW5jaW5ndjInO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgeyBDYW5hcnlPcGVyYXRpb25SZWdpb25hbEFsYXJtc0FuZFJ1bGVzIH0gZnJvbSAnLi9DYW5hcnlPcGVyYXRpb25SZWdpb25hbEFsYXJtc0FuZFJ1bGVzJztcbmltcG9ydCB7IENhbmFyeU9wZXJhdGlvblpvbmFsQWxhcm1zQW5kUnVsZXMgfSBmcm9tICcuL0NhbmFyeU9wZXJhdGlvblpvbmFsQWxhcm1zQW5kUnVsZXMnO1xuaW1wb3J0IHsgSUNhbmFyeU9wZXJhdGlvblJlZ2lvbmFsQWxhcm1zQW5kUnVsZXMgfSBmcm9tICcuL0lDYW5hcnlPcGVyYXRpb25SZWdpb25hbEFsYXJtc0FuZFJ1bGVzJztcbmltcG9ydCB7IElDYW5hcnlPcGVyYXRpb25ab25hbEFsYXJtc0FuZFJ1bGVzIH0gZnJvbSAnLi9JQ2FuYXJ5T3BlcmF0aW9uWm9uYWxBbGFybXNBbmRSdWxlcyc7XG5pbXBvcnQgeyBJT3BlcmF0aW9uQWxhcm1zQW5kUnVsZXMgfSBmcm9tICcuL0lPcGVyYXRpb25BbGFybXNBbmRSdWxlcyc7XG5pbXBvcnQgeyBJU2VydmVyU2lkZU9wZXJhdGlvblJlZ2lvbmFsQWxhcm1zQW5kUnVsZXMgfSBmcm9tICcuL0lTZXJ2ZXJTaWRlT3BlcmF0aW9uUmVnaW9uYWxBbGFybXNBbmRSdWxlcyc7XG5pbXBvcnQgeyBJU2VydmVyU2lkZU9wZXJhdGlvblpvbmFsQWxhcm1zQW5kUnVsZXMgfSBmcm9tICcuL0lTZXJ2ZXJTaWRlT3BlcmF0aW9uWm9uYWxBbGFybXNBbmRSdWxlcyc7XG5pbXBvcnQgeyBPcGVyYXRpb25BbGFybXNBbmRSdWxlc1Byb3BzIH0gZnJvbSAnLi9wcm9wcy9PcGVyYXRpb25BbGFybXNBbmRSdWxlc1Byb3BzJztcbmltcG9ydCB7IFNlcnZlclNpZGVPcGVyYXRpb25SZWdpb25hbEFsYXJtc0FuZFJ1bGVzIH0gZnJvbSAnLi9TZXJ2ZXJTaWRlT3BlcmF0aW9uUmVnaW9uYWxBbGFybXNBbmRSdWxlcyc7XG5pbXBvcnQgeyBTZXJ2ZXJTaWRlT3BlcmF0aW9uWm9uYWxBbGFybXNBbmRSdWxlcyB9IGZyb20gJy4vU2VydmVyU2lkZU9wZXJhdGlvblpvbmFsQWxhcm1zQW5kUnVsZXMnO1xuaW1wb3J0IHsgSU9wZXJhdGlvbiB9IGZyb20gJy4uL3NlcnZpY2VzL0lPcGVyYXRpb24nO1xuXG4vKipcbiAqIENyZWF0ZXMgYWxhcm1zIGFuZCBydWxlcyBmb3IgYW4gb3BlcmF0aW9uIGZvciBib3RoIHJlZ2lvbmFsIGFuZCB6b25hbCBtZXRyaWNzXG4gKi9cbmV4cG9ydCBjbGFzcyBPcGVyYXRpb25BbGFybXNBbmRSdWxlc1xuICBleHRlbmRzIENvbnN0cnVjdFxuICBpbXBsZW1lbnRzIElPcGVyYXRpb25BbGFybXNBbmRSdWxlcyB7XG4gIC8qKlxuICAgKiBUaGUgb3BlcmF0aW9uIHRoZSBhbGFybXMgYW5kIHJ1bGVzIGFyZSBjcmVhdGVkIGZvclxuICAgKi9cbiAgcmVhZG9ubHkgb3BlcmF0aW9uOiBJT3BlcmF0aW9uO1xuXG4gIC8qKlxuICAgKiBUaGUgc2VydmVyIHNpZGUgcmVnaW9uYWwgYWxhcm1zIGFuZCBydWxlc1xuICAgKi9cbiAgcmVhZG9ubHkgc2VydmVyU2lkZVJlZ2lvbmFsQWxhcm1zQW5kUnVsZXM6IElTZXJ2ZXJTaWRlT3BlcmF0aW9uUmVnaW9uYWxBbGFybXNBbmRSdWxlcztcblxuICAvKipcbiAgICogVGhlIGNhbmFyeSByZWdpb25hbCBhbGFybXMgYW5kIHJ1bGVzXG4gICAqL1xuICByZWFkb25seSBjYW5hcnlSZWdpb25hbEFsYXJtc0FuZFJ1bGVzPzogSUNhbmFyeU9wZXJhdGlvblJlZ2lvbmFsQWxhcm1zQW5kUnVsZXM7XG5cbiAgLyoqXG4gICAqIFRoZSBhZ2dyZWdhdGUgem9uYWwgYWxhcm0gaW5kZXhlZCBieSBBdmFpbGFiaWxpdHkgWm9uZSBJZC5cbiAgICovXG4gIHJlYWRvbmx5IGFnZ3JlZ2F0ZVpvbmFsQWxhcm1zOiB7IFtrZXk6IHN0cmluZ106IElBbGFybSB9O1xuXG4gIC8qKlxuICAgKiBBbiBhbGFybSBpbmRpY2F0aW5nIGF2YWlsYWJpbGl0eSBvciBsYXRlbmN5IGltcGFjdCBoYXMgYmVlbiBkZXRlY3RlZCBieSB0aGUgc2VydmVyLXNpZGUgXG4gICAqIGFuZC9vciBjYW5hcnkgKGlmIHByZXNlbnQpIGFuZCB0aGUgaW1wYWN0IGlzIHJlZ2lvbmFsbHkgc2NvcGVkLCBub3Qgem9uYWxcbiAgICovXG4gIHJlYWRvbmx5IHJlZ2lvbmFsSW1wYWN0QWxhcm06IElBbGFybTtcblxuICAvKipcbiAgICogQW4gYWxhcm0gaW5kaWNhdGluZyBhdmFpbGFiaWxpdHkgb3IgbGF0ZW5jeSBpbXBhY3QgaGFzIGJlZW4gZGV0ZWN0ZWQgYnkgdGhlIHNlcnZlci1zaWRlXG4gICAqIGFuZCB0aGUgaW1wYWN0IGlzIHJlZ2lvbmFsbHkgc2NvcGVkLCBub3Qgem9uYWxcbiAgICovXG4gIHJlYWRvbmx5IHNlcnZlclNpZGVSZWdpb25hbEltcGFjdEFsYXJtOiBJQWxhcm07XG5cbiAgLyoqXG4gICAqIEFuIGFsYXJtIGluZGljYXRpbmcgYXZhaWxhYmlsaXR5IG9yIGxhdGVuY3kgaW1wYWN0IGhhcyBiZWVuIGRldGVjdGVkIGJ5IHRoZSBjYW5hcnlcbiAgICogYW5kIHRoZSBpbXBhY3QgaXMgcmVnaW9uYWxseSBzY29wZWQsIG5vdCB6b25hbFxuICAgKi9cbiAgcmVhZG9ubHkgY2FuYXJ5UmVnaW9uYWxJbXBhY3RBbGFybT86IElBbGFybTtcblxuICAvKipcbiAgICogVGhlIHNlcnZlciBzaWRlIHpvbmFsIGFsYXJtcyBhbmQgcnVsZXMsIGluZGV4ZWQgYnkgQXZhaWxhYmlsaXR5IFpvbmUgbmFtZS5cbiAgICovXG4gIHJlYWRvbmx5IHNlcnZlclNpZGVab25hbEFsYXJtc0FuZFJ1bGVzOiB7W2tleTogc3RyaW5nXTogSVNlcnZlclNpZGVPcGVyYXRpb25ab25hbEFsYXJtc0FuZFJ1bGVzfTtcblxuICAvKipcbiAgICogVGhlIGNhbmFyeSB6b25hbCBhbGFybXMgYW5kIHJ1bGVzLCBpbmRleGVkIGJ5IEF2YWlsYWJpbGl0eSBab25lIG5hbWUuXG4gICAqIFxuICAgKiBAZGVmYXVsdCAtIFRoaXMgaXMgYW4gZW1wdHkgZGljdGlvbmFyeSBpZiBjYW5hcnkgbWV0cmljIGRldGFpbHMgYXJlIG5vdCBwcm92aWRlZFxuICAgKi9cbiAgcmVhZG9ubHkgY2FuYXJ5Wm9uYWxBbGFybXNBbmRSdWxlcz86IHtba2V5OiBzdHJpbmddOiBJQ2FuYXJ5T3BlcmF0aW9uWm9uYWxBbGFybXNBbmRSdWxlc307XG5cbiAgY29uc3RydWN0b3IoXG4gICAgc2NvcGU6IENvbnN0cnVjdCxcbiAgICBpZDogc3RyaW5nLFxuICAgIHByb3BzOiBPcGVyYXRpb25BbGFybXNBbmRSdWxlc1Byb3BzLFxuICApIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgdGhpcy5vcGVyYXRpb24gPSBwcm9wcy5vcGVyYXRpb247XG4gICAgdGhpcy5hZ2dyZWdhdGVab25hbEFsYXJtcyA9IHt9O1xuICAgIHRoaXMuc2VydmVyU2lkZVpvbmFsQWxhcm1zQW5kUnVsZXMgPSB7fTtcbiAgICB0aGlzLmNhbmFyeVpvbmFsQWxhcm1zQW5kUnVsZXMgPSB7fTtcblxuICAgIGxldCBsb2FkQmFsYW5jZXJBcm46IHN0cmluZyA9ICcnO1xuXG4gICAgaWYgKHByb3BzLmxvYWRCYWxhbmNlcikge1xuICAgICAgbG9hZEJhbGFuY2VyQXJuID0gKHByb3BzLmxvYWRCYWxhbmNlciBhcyBCYXNlTG9hZEJhbGFuY2VyKVxuICAgICAgICAubG9hZEJhbGFuY2VyQXJuO1xuICAgIH1cblxuICAgIC8vIENyZWF0ZXMgdGhlIHJlZ2lvbmFsIGltcGFjdCBhbGFybXMgYW5kIGNvbnRyaWJ1dG9yIGluc2lnaHQgcnVsZXNcbiAgICAvLyBmb3IgY29udHJpYnV0b3JzIHRvIHJlZ2lvbmFsIGZhdWx0cyBhbmQgbGF0ZW5jeVxuICAgIHRoaXMuc2VydmVyU2lkZVJlZ2lvbmFsQWxhcm1zQW5kUnVsZXMgPVxuICAgICAgbmV3IFNlcnZlclNpZGVPcGVyYXRpb25SZWdpb25hbEFsYXJtc0FuZFJ1bGVzKFxuICAgICAgICB0aGlzLFxuICAgICAgICBwcm9wcy5vcGVyYXRpb24ub3BlcmF0aW9uTmFtZSArICdTZXJ2ZXJTaWRlUmVnaW9uYWxBbGFybXMnLFxuICAgICAgICB7XG4gICAgICAgICAgYXZhaWxhYmlsaXR5TWV0cmljRGV0YWlsczpcbiAgICAgICAgICAgIHByb3BzLm9wZXJhdGlvbi5zZXJ2ZXJTaWRlQXZhaWxhYmlsaXR5TWV0cmljRGV0YWlscyxcbiAgICAgICAgICBsYXRlbmN5TWV0cmljRGV0YWlsczogcHJvcHMub3BlcmF0aW9uLnNlcnZlclNpZGVMYXRlbmN5TWV0cmljRGV0YWlscyxcbiAgICAgICAgICBjb250cmlidXRvckluc2lnaHRSdWxlRGV0YWlsczogcHJvcHMub3BlcmF0aW9uXG4gICAgICAgICAgICAuc2VydmVyU2lkZUNvbnRyaWJ1dG9ySW5zaWdodFJ1bGVEZXRhaWxzXG4gICAgICAgICAgICA/IHByb3BzLm9wZXJhdGlvbi5zZXJ2ZXJTaWRlQ29udHJpYnV0b3JJbnNpZ2h0UnVsZURldGFpbHNcbiAgICAgICAgICAgIDogcHJvcHMub3BlcmF0aW9uLnNlcnZpY2UuZGVmYXVsdENvbnRyaWJ1dG9ySW5zaWdodFJ1bGVEZXRhaWxzLFxuICAgICAgICAgIG5hbWVTdWZmaXg6ICctc2VydmVyJyxcbiAgICAgICAgfSxcbiAgICAgICk7XG5cbiAgICAvLyBJZiBjYW5hcnkgbWV0cmljcyBhcmUgZGVmaW5lZCwgY3JlYXRlIHRoZSByZWdpb25hbCBpbXBhY3RcbiAgICAvLyBhbGFybXMgXG4gICAgaWYgKHByb3BzLm9wZXJhdGlvbi5jYW5hcnlNZXRyaWNEZXRhaWxzKSB7XG4gICAgICB0aGlzLmNhbmFyeVJlZ2lvbmFsQWxhcm1zQW5kUnVsZXMgPVxuICAgICAgICBuZXcgQ2FuYXJ5T3BlcmF0aW9uUmVnaW9uYWxBbGFybXNBbmRSdWxlcyhcbiAgICAgICAgICB0aGlzLFxuICAgICAgICAgIHByb3BzLm9wZXJhdGlvbi5vcGVyYXRpb25OYW1lICsgJ0NhbmFyeVJlZ2lvbmFsQWxhcm1zJyxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBhdmFpbGFiaWxpdHlNZXRyaWNEZXRhaWxzOlxuICAgICAgICAgICAgICBwcm9wcy5vcGVyYXRpb24uY2FuYXJ5TWV0cmljRGV0YWlsc1xuICAgICAgICAgICAgICAgIC5jYW5hcnlBdmFpbGFiaWxpdHlNZXRyaWNEZXRhaWxzLFxuICAgICAgICAgICAgbGF0ZW5jeU1ldHJpY0RldGFpbHM6XG4gICAgICAgICAgICAgIHByb3BzLm9wZXJhdGlvbi5jYW5hcnlNZXRyaWNEZXRhaWxzLmNhbmFyeUxhdGVuY3lNZXRyaWNEZXRhaWxzLFxuICAgICAgICAgICAgbmFtZVN1ZmZpeDogJy1jYW5hcnknLFxuICAgICAgICAgIH0sXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLy8gQ3JlYXRlIHRoZSB6b25hbCBpc29sYXRlZCBpbXBhY3QgYWxhcm1zXG4gICAgcHJvcHMub3BlcmF0aW9uLnNlcnZpY2UuYXZhaWxhYmlsaXR5Wm9uZU5hbWVzLmZvckVhY2goKGF2YWlsYWJpbGl0eVpvbmU6IHN0cmluZywgaW5kZXg6IG51bWJlcikgPT4ge1xuICAgICAgbGV0IGF6TGV0dGVyOiBzdHJpbmcgPSBhdmFpbGFiaWxpdHlab25lLnN1YnN0cmluZyhhdmFpbGFiaWxpdHlab25lLmxlbmd0aCAtIDEpO1xuICAgICAgbGV0IGF2YWlsYWJpbGl0eVpvbmVJZDogc3RyaW5nID0gcHJvcHMuYXpNYXBwZXIuYXZhaWxhYmlsaXR5Wm9uZUlkRnJvbUF2YWlsYWJpbGl0eVpvbmVMZXR0ZXIoYXpMZXR0ZXIpO1xuXG4gICAgICBsZXQgc2VydmVyU2lkZVpvbmFsQWxhcm1zQW5kUnVsZXM6IElTZXJ2ZXJTaWRlT3BlcmF0aW9uWm9uYWxBbGFybXNBbmRSdWxlcyA9IG5ldyBTZXJ2ZXJTaWRlT3BlcmF0aW9uWm9uYWxBbGFybXNBbmRSdWxlcyhcbiAgICAgICAgdGhpcyxcbiAgICAgICAgcHJvcHMub3BlcmF0aW9uLm9wZXJhdGlvbk5hbWUgK1xuICAgICAgICAgICdBWicgK1xuICAgICAgICAgIGluZGV4ICtcbiAgICAgICAgICAnU2VydmVyU2lkZVpvbmFsQWxhcm1zQW5kUnVsZXMnLFxuICAgICAgICB7XG4gICAgICAgICAgYXZhaWxhYmlsaXR5Wm9uZTogYXZhaWxhYmlsaXR5Wm9uZSxcbiAgICAgICAgICBvcGVyYXRpb25BbGFybXNBbmRSdWxlc1Byb3BzOiBwcm9wcyxcbiAgICAgICAgICBjb3VudGVyOiBpbmRleCxcbiAgICAgICAgICBuYW1lU3VmZml4OiAnLXNlcnZlcicgICAgICAgXG4gICAgICAgIH0sXG4gICAgICApO1xuXG4gICAgICB0aGlzLnNlcnZlclNpZGVab25hbEFsYXJtc0FuZFJ1bGVzW2F2YWlsYWJpbGl0eVpvbmVdID0gc2VydmVyU2lkZVpvbmFsQWxhcm1zQW5kUnVsZXM7XG5cbiAgICAgIGlmIChwcm9wcy5vcGVyYXRpb24uY2FuYXJ5TWV0cmljRGV0YWlscykge1xuICAgICAgICBsZXQgY2FuYXJ5Wm9uYWxBbGFybXNBbmRSdWxlczogSUNhbmFyeU9wZXJhdGlvblpvbmFsQWxhcm1zQW5kUnVsZXMgPSBuZXcgQ2FuYXJ5T3BlcmF0aW9uWm9uYWxBbGFybXNBbmRSdWxlcyhcbiAgICAgICAgICB0aGlzLFxuICAgICAgICAgIHByb3BzLm9wZXJhdGlvbi5vcGVyYXRpb25OYW1lICtcbiAgICAgICAgICAgICdBWicgK1xuICAgICAgICAgICAgaW5kZXggK1xuICAgICAgICAgICAgJ0NhbmFyeVpvbmFsQWxhcm1zQW5kUnVsZXMnLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGF2YWlsYWJpbGl0eVpvbmU6IGF2YWlsYWJpbGl0eVpvbmUsXG4gICAgICAgICAgICBvcGVyYXRpb25BbGFybXNBbmRSdWxlc1Byb3BzOiBwcm9wcyxcbiAgICAgICAgICAgIGNvdW50ZXI6IGluZGV4LFxuICAgICAgICAgICAgbmFtZVN1ZmZpeDogJy1jYW5hcnknXG4gICAgICAgICAgfSxcbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLmNhbmFyeVpvbmFsQWxhcm1zQW5kUnVsZXMhW2F2YWlsYWJpbGl0eVpvbmVdID0gY2FuYXJ5Wm9uYWxBbGFybXNBbmRSdWxlcztcblxuICAgICAgICBsZXQgYWdnQWxhcm06IElBbGFybSA9IG5ldyBDb21wb3NpdGVBbGFybShcbiAgICAgICAgICB0aGlzLFxuICAgICAgICAgIHByb3BzLm9wZXJhdGlvbi5vcGVyYXRpb25OYW1lICtcbiAgICAgICAgICAgICdBWicgK1xuICAgICAgICAgICAgaW5kZXggK1xuICAgICAgICAgICAgJ0FnZ3JlZ2F0ZVpvbmFsSXNvbGF0ZWRJbXBhY3RBbGFybScsXG4gICAgICAgICAge1xuICAgICAgICAgICAgY29tcG9zaXRlQWxhcm1OYW1lOlxuICAgICAgICAgICAgICBhdmFpbGFiaWxpdHlab25lSWQgK1xuICAgICAgICAgICAgICAnLScgK1xuICAgICAgICAgICAgICBwcm9wcy5vcGVyYXRpb24ub3BlcmF0aW9uTmFtZS50b0xvd2VyQ2FzZSgpICtcbiAgICAgICAgICAgICAgJy1hZ2dyZWdhdGUtaXNvbGF0ZWQtYXotaW1wYWN0JyxcbiAgICAgICAgICAgIGFsYXJtUnVsZTogQWxhcm1SdWxlLmFueU9mKFxuICAgICAgICAgICAgICB0aGlzLmNhbmFyeVpvbmFsQWxhcm1zQW5kUnVsZXMhW2F2YWlsYWJpbGl0eVpvbmVdLmlzb2xhdGVkSW1wYWN0QWxhcm0sXG4gICAgICAgICAgICAgIHRoaXMuc2VydmVyU2lkZVpvbmFsQWxhcm1zQW5kUnVsZXNbYXZhaWxhYmlsaXR5Wm9uZV0uaXNvbGF0ZWRJbXBhY3RBbGFybVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGFjdGlvbnNFbmFibGVkOiBmYWxzZSxcbiAgICAgICAgICAgIGFsYXJtRGVzY3JpcHRpb246XG4gICAgICAgICAgICAgICd7XCJsb2FkQmFsYW5jZXJcIjpcIicgK1xuICAgICAgICAgICAgICBsb2FkQmFsYW5jZXJBcm4gK1xuICAgICAgICAgICAgICAnXCIsXCJhei1pZFwiOlwiJyArXG4gICAgICAgICAgICAgIGF2YWlsYWJpbGl0eVpvbmVJZCArXG4gICAgICAgICAgICAgICdcIn0nLFxuICAgICAgICAgIH0sXG4gICAgICAgICk7XG4gICAgICAgIFxuICAgICAgICB0aGlzLmFnZ3JlZ2F0ZVpvbmFsQWxhcm1zW2F2YWlsYWJpbGl0eVpvbmVdID0gYWdnQWxhcm07XG4gICAgICB9IGVsc2UgeyAgICAgICBcbiAgICAgICAgdGhpcy5hZ2dyZWdhdGVab25hbEFsYXJtc1thdmFpbGFiaWxpdHlab25lXSA9IHRoaXMuc2VydmVyU2lkZVpvbmFsQWxhcm1zQW5kUnVsZXNbYXZhaWxhYmlsaXR5Wm9uZV0uaXNvbGF0ZWRJbXBhY3RBbGFybSAgICBcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIC8vIENyZWF0ZSBhIHJlZ2lvbmFsIGltcGFjdCBhbGFybSB0aGF0IGlzIHRyaWdnZXJlZCBpZiByZWdpb25hbFxuICAgIC8vIG1ldHJpY3MgZm9yIGF2YWlsYWJpbGl0eSBvciBsYXRlbmN5IGRyb3AgYW5kIHRoZXJlIGlzbid0IGEgc2luZ2xlXG4gICAgLy8gQVogaW1wYWN0IGFsYXJtIFxuICAgIGlmIChwcm9wcy5vcGVyYXRpb24uY2FuYXJ5TWV0cmljRGV0YWlscykge1xuICAgICAgdGhpcy5yZWdpb25hbEltcGFjdEFsYXJtID0gbmV3IENvbXBvc2l0ZUFsYXJtKHRoaXMsIHByb3BzLm9wZXJhdGlvbi5vcGVyYXRpb25OYW1lICsgXCItcmVnaW9uYWwtaW1wYWN0LWFsYXJtXCIsIHtcbiAgICAgICAgY29tcG9zaXRlQWxhcm1OYW1lOiBgJHtwcm9wcy5vcGVyYXRpb24uc2VydmljZS5zZXJ2aWNlTmFtZS50b0xvd2VyQ2FzZSgpfS0ke3Byb3BzLm9wZXJhdGlvbi5vcGVyYXRpb25OYW1lLnRvTG93ZXJDYXNlKCl9LXJlZ2lvbmFsLWltcGFjdGAsXG4gICAgICAgIGFsYXJtUnVsZTogQWxhcm1SdWxlLmFsbE9mKFxuICAgICAgICAgIEFsYXJtUnVsZS5hbnlPZihcbiAgICAgICAgICAgIHRoaXMuc2VydmVyU2lkZVJlZ2lvbmFsQWxhcm1zQW5kUnVsZXMuYXZhaWxhYmlsaXR5T3JMYXRlbmN5QWxhcm0sXG4gICAgICAgICAgICB0aGlzLmNhbmFyeVJlZ2lvbmFsQWxhcm1zQW5kUnVsZXMhLmF2YWlsYWJpbGl0eU9yTGF0ZW5jeUFsYXJtXG4gICAgICAgICAgKSxcbiAgICAgICAgICBBbGFybVJ1bGUubm90KFxuICAgICAgICAgICAgQWxhcm1SdWxlLmFueU9mKFxuICAgICAgICAgICAgICAuLi5PYmplY3QudmFsdWVzKHRoaXMuYWdncmVnYXRlWm9uYWxBbGFybXMpXG4gICAgICAgICAgICApXG4gICAgICAgICAgKVxuICAgICAgICApXG4gICAgICB9KTtcblxuICAgICAgdGhpcy5jYW5hcnlSZWdpb25hbEltcGFjdEFsYXJtID0gbmV3IENvbXBvc2l0ZUFsYXJtKHRoaXMsIHByb3BzLm9wZXJhdGlvbi5vcGVyYXRpb25OYW1lICsgXCItY2FuYXJ5LXJlZ2lvbmFsLWltcGFjdC1hbGFybVwiLCB7XG4gICAgICAgIGNvbXBvc2l0ZUFsYXJtTmFtZTogYCR7cHJvcHMub3BlcmF0aW9uLnNlcnZpY2Uuc2VydmljZU5hbWUudG9Mb3dlckNhc2UoKX0tJHtwcm9wcy5vcGVyYXRpb24ub3BlcmF0aW9uTmFtZS50b0xvd2VyQ2FzZSgpfS1jYW5hcnktcmVnaW9uYWwtaW1wYWN0YCxcbiAgICAgICAgYWxhcm1SdWxlOiBBbGFybVJ1bGUuYWxsT2YoXG4gICAgICAgICAgdGhpcy5jYW5hcnlSZWdpb25hbEFsYXJtc0FuZFJ1bGVzIS5hdmFpbGFiaWxpdHlPckxhdGVuY3lBbGFybSxcbiAgICAgICAgICBBbGFybVJ1bGUubm90KFxuICAgICAgICAgICAgQWxhcm1SdWxlLmFueU9mKFxuICAgICAgICAgICAgICAuLi5PYmplY3QudmFsdWVzKHRoaXMuYWdncmVnYXRlWm9uYWxBbGFybXMpXG4gICAgICAgICAgICApXG4gICAgICAgICAgKVxuICAgICAgICApXG4gICAgICB9KTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICB0aGlzLnJlZ2lvbmFsSW1wYWN0QWxhcm0gPSBuZXcgQ29tcG9zaXRlQWxhcm0odGhpcywgcHJvcHMub3BlcmF0aW9uLm9wZXJhdGlvbk5hbWUgKyBcIi1yZWdpb25hbC1pbXBhY3QtYWxhcm1cIiwge1xuICAgICAgICBjb21wb3NpdGVBbGFybU5hbWU6IGAke3Byb3BzLm9wZXJhdGlvbi5zZXJ2aWNlLnNlcnZpY2VOYW1lLnRvTG93ZXJDYXNlKCl9LSR7cHJvcHMub3BlcmF0aW9uLm9wZXJhdGlvbk5hbWUudG9Mb3dlckNhc2UoKX0tcmVnaW9uYWwtaW1wYWN0YCxcbiAgICAgICAgYWxhcm1SdWxlOiBBbGFybVJ1bGUuYWxsT2YoXG4gICAgICAgICAgdGhpcy5zZXJ2ZXJTaWRlUmVnaW9uYWxBbGFybXNBbmRSdWxlcy5hdmFpbGFiaWxpdHlPckxhdGVuY3lBbGFybSwgICAgIFxuICAgICAgICAgIEFsYXJtUnVsZS5ub3QoXG4gICAgICAgICAgICBBbGFybVJ1bGUuYW55T2YoXG4gICAgICAgICAgICAgIC4uLk9iamVjdC52YWx1ZXModGhpcy5hZ2dyZWdhdGVab25hbEFsYXJtcylcbiAgICAgICAgICAgIClcbiAgICAgICAgICApXG4gICAgICAgIClcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHRoaXMuc2VydmVyU2lkZVJlZ2lvbmFsSW1wYWN0QWxhcm0gPSBuZXcgQ29tcG9zaXRlQWxhcm0odGhpcywgcHJvcHMub3BlcmF0aW9uLm9wZXJhdGlvbk5hbWUgKyBcIi1zZXJ2ZXItcmVnaW9uYWwtaW1wYWN0LWFsYXJtXCIsIHtcbiAgICAgIGNvbXBvc2l0ZUFsYXJtTmFtZTogYCR7cHJvcHMub3BlcmF0aW9uLnNlcnZpY2Uuc2VydmljZU5hbWUudG9Mb3dlckNhc2UoKX0tJHtwcm9wcy5vcGVyYXRpb24ub3BlcmF0aW9uTmFtZS50b0xvd2VyQ2FzZSgpfS1zZXJ2ZXItcmVnaW9uYWwtaW1wYWN0YCxcbiAgICAgIGFsYXJtUnVsZTogQWxhcm1SdWxlLmFsbE9mKFxuICAgICAgICB0aGlzLnNlcnZlclNpZGVSZWdpb25hbEFsYXJtc0FuZFJ1bGVzLmF2YWlsYWJpbGl0eU9yTGF0ZW5jeUFsYXJtLFxuICAgICAgICBBbGFybVJ1bGUubm90KFxuICAgICAgICAgIEFsYXJtUnVsZS5hbnlPZihcbiAgICAgICAgICAgIC4uLk9iamVjdC52YWx1ZXModGhpcy5hZ2dyZWdhdGVab25hbEFsYXJtcylcbiAgICAgICAgICApXG4gICAgICAgIClcbiAgICAgIClcbiAgICB9KTtcbiAgfVxufSJdfQ==
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { CfnInsightRule } from
|
|
2
|
-
import { Construct } from
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
1
|
+
import { CfnInsightRule } from "aws-cdk-lib/aws-cloudwatch";
|
|
2
|
+
import { Construct } from "constructs";
|
|
3
|
+
import { IServerSideOperationRegionalAlarmsAndRules } from "./IServerSideOperationRegionalAlarmsAndRules";
|
|
4
|
+
import { ServerSideOperationRegionalAlarmsAndRulesProps } from "./props/ServerSideOperationRegionalAlarmsAndRulesProps";
|
|
5
|
+
import { BaseOperationRegionalAlarmsAndRules } from "./BaseOperationRegionalAlarmsAndRules";
|
|
6
6
|
/**
|
|
7
7
|
* The server side regional alarms and rules for an operation
|
|
8
8
|
*/
|
|
@@ -9,8 +9,7 @@ const BaseOperationRegionalAlarmsAndRules_1 = require("./BaseOperationRegionalAl
|
|
|
9
9
|
class ServerSideOperationRegionalAlarmsAndRules extends BaseOperationRegionalAlarmsAndRules_1.BaseOperationRegionalAlarmsAndRules {
|
|
10
10
|
constructor(scope, id, props) {
|
|
11
11
|
super(scope, id, props);
|
|
12
|
-
if (props.contributorInsightRuleDetails
|
|
13
|
-
props.contributorInsightRuleDetails != null) {
|
|
12
|
+
if (props.contributorInsightRuleDetails) {
|
|
14
13
|
this.instanceContributorsToRegionalFaults =
|
|
15
14
|
AvailabilityAndLatencyAlarmsAndRules_1.AvailabilityAndLatencyAlarmsAndRules.createRegionalInstanceContributorsToFaults(this, props.availabilityMetricDetails, props.contributorInsightRuleDetails);
|
|
16
15
|
this.instanceContributorsToRegionalHighLatency =
|
|
@@ -19,4 +18,4 @@ class ServerSideOperationRegionalAlarmsAndRules extends BaseOperationRegionalAla
|
|
|
19
18
|
}
|
|
20
19
|
}
|
|
21
20
|
exports.ServerSideOperationRegionalAlarmsAndRules = ServerSideOperationRegionalAlarmsAndRules;
|
|
22
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
21
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2VydmVyU2lkZU9wZXJhdGlvblJlZ2lvbmFsQWxhcm1zQW5kUnVsZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYWxhcm1zYW5kcnVsZXMvU2VydmVyU2lkZU9wZXJhdGlvblJlZ2lvbmFsQWxhcm1zQW5kUnVsZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBSUEsaUdBQThGO0FBRzlGLCtGQUE0RjtBQUU1Rjs7R0FFRztBQUNILE1BQWEseUNBQ1gsU0FBUSx5RUFBbUM7SUFhM0MsWUFDRSxLQUFnQixFQUNoQixFQUFVLEVBQ1YsS0FBcUQ7UUFFckQsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFFeEIsSUFBSSxLQUFLLENBQUMsNkJBQTZCLEVBQUUsQ0FBQztZQUN4QyxJQUFJLENBQUMsb0NBQW9DO2dCQUN2QywyRUFBb0MsQ0FBQywwQ0FBMEMsQ0FDN0UsSUFBSSxFQUNKLEtBQUssQ0FBQyx5QkFBeUIsRUFDL0IsS0FBSyxDQUFDLDZCQUE2QixDQUNwQyxDQUFDO1lBQ0osSUFBSSxDQUFDLHlDQUF5QztnQkFDNUMsMkVBQW9DLENBQUMsK0NBQStDLENBQ2xGLElBQUksRUFDSixLQUFLLENBQUMsb0JBQW9CLEVBQzFCLEtBQUssQ0FBQyw2QkFBNkIsQ0FDcEMsQ0FBQztRQUNOLENBQUM7SUFDSCxDQUFDO0NBQ0Y7QUFwQ0QsOEZBb0NDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuaW1wb3J0IHsgQ2ZuSW5zaWdodFJ1bGUgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWNsb3Vkd2F0Y2hcIjtcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQgeyBBdmFpbGFiaWxpdHlBbmRMYXRlbmN5QWxhcm1zQW5kUnVsZXMgfSBmcm9tIFwiLi9BdmFpbGFiaWxpdHlBbmRMYXRlbmN5QWxhcm1zQW5kUnVsZXNcIjtcbmltcG9ydCB7IElTZXJ2ZXJTaWRlT3BlcmF0aW9uUmVnaW9uYWxBbGFybXNBbmRSdWxlcyB9IGZyb20gXCIuL0lTZXJ2ZXJTaWRlT3BlcmF0aW9uUmVnaW9uYWxBbGFybXNBbmRSdWxlc1wiO1xuaW1wb3J0IHsgU2VydmVyU2lkZU9wZXJhdGlvblJlZ2lvbmFsQWxhcm1zQW5kUnVsZXNQcm9wcyB9IGZyb20gXCIuL3Byb3BzL1NlcnZlclNpZGVPcGVyYXRpb25SZWdpb25hbEFsYXJtc0FuZFJ1bGVzUHJvcHNcIjtcbmltcG9ydCB7IEJhc2VPcGVyYXRpb25SZWdpb25hbEFsYXJtc0FuZFJ1bGVzIH0gZnJvbSBcIi4vQmFzZU9wZXJhdGlvblJlZ2lvbmFsQWxhcm1zQW5kUnVsZXNcIjtcblxuLyoqXG4gKiBUaGUgc2VydmVyIHNpZGUgcmVnaW9uYWwgYWxhcm1zIGFuZCBydWxlcyBmb3IgYW4gb3BlcmF0aW9uXG4gKi9cbmV4cG9ydCBjbGFzcyBTZXJ2ZXJTaWRlT3BlcmF0aW9uUmVnaW9uYWxBbGFybXNBbmRSdWxlc1xuICBleHRlbmRzIEJhc2VPcGVyYXRpb25SZWdpb25hbEFsYXJtc0FuZFJ1bGVzXG4gIGltcGxlbWVudHMgSVNlcnZlclNpZGVPcGVyYXRpb25SZWdpb25hbEFsYXJtc0FuZFJ1bGVzXG57XG4gIC8qKlxuICAgKiBBIHJ1bGUgdGhhdCBzaG93cyB3aGljaCBpbnN0YW5jZXMgYXJlIGNvbnRyaWJ1dGluZyB0byBoaWdoIGxhdGVuY3kgcmVzcG9uc2VzXG4gICAqL1xuICBpbnN0YW5jZUNvbnRyaWJ1dG9yc1RvUmVnaW9uYWxIaWdoTGF0ZW5jeT86IENmbkluc2lnaHRSdWxlO1xuXG4gIC8qKlxuICAgKiBBIHJ1bGUgdGhhdCBzaG93cyB3aGljaCBpbnN0YW5jZXMgYXJlIGNvbnRyaWJ1dGluZyB0byBmYXVsdHNcbiAgICovXG4gIGluc3RhbmNlQ29udHJpYnV0b3JzVG9SZWdpb25hbEZhdWx0cz86IENmbkluc2lnaHRSdWxlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHNjb3BlOiBDb25zdHJ1Y3QsXG4gICAgaWQ6IHN0cmluZyxcbiAgICBwcm9wczogU2VydmVyU2lkZU9wZXJhdGlvblJlZ2lvbmFsQWxhcm1zQW5kUnVsZXNQcm9wcyxcbiAgKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCBwcm9wcyk7XG5cbiAgICBpZiAocHJvcHMuY29udHJpYnV0b3JJbnNpZ2h0UnVsZURldGFpbHMpIHtcbiAgICAgIHRoaXMuaW5zdGFuY2VDb250cmlidXRvcnNUb1JlZ2lvbmFsRmF1bHRzID1cbiAgICAgICAgQXZhaWxhYmlsaXR5QW5kTGF0ZW5jeUFsYXJtc0FuZFJ1bGVzLmNyZWF0ZVJlZ2lvbmFsSW5zdGFuY2VDb250cmlidXRvcnNUb0ZhdWx0cyhcbiAgICAgICAgICB0aGlzLFxuICAgICAgICAgIHByb3BzLmF2YWlsYWJpbGl0eU1ldHJpY0RldGFpbHMsXG4gICAgICAgICAgcHJvcHMuY29udHJpYnV0b3JJbnNpZ2h0UnVsZURldGFpbHMsXG4gICAgICAgICk7XG4gICAgICB0aGlzLmluc3RhbmNlQ29udHJpYnV0b3JzVG9SZWdpb25hbEhpZ2hMYXRlbmN5ID1cbiAgICAgICAgQXZhaWxhYmlsaXR5QW5kTGF0ZW5jeUFsYXJtc0FuZFJ1bGVzLmNyZWF0ZVJlZ2lvbmFsSW5zdGFuY2VDb250cmlidXRvcnNUb0hpZ2hMYXRlbmN5KFxuICAgICAgICAgIHRoaXMsXG4gICAgICAgICAgcHJvcHMubGF0ZW5jeU1ldHJpY0RldGFpbHMsXG4gICAgICAgICAgcHJvcHMuY29udHJpYnV0b3JJbnNpZ2h0UnVsZURldGFpbHMsXG4gICAgICAgICk7XG4gICAgfVxuICB9XG59Il19
|
|
@@ -1,48 +1,56 @@
|
|
|
1
|
-
import { IAlarm, CfnInsightRule } from
|
|
2
|
-
import { Construct } from
|
|
3
|
-
import { BaseOperationZonalAlarmsAndRules } from
|
|
4
|
-
import { IServerSideOperationZonalAlarmsAndRules } from
|
|
5
|
-
import { ServerSideOperationZonalAlarmsAndRulesProps } from
|
|
1
|
+
import { IAlarm, CfnInsightRule } from "aws-cdk-lib/aws-cloudwatch";
|
|
2
|
+
import { Construct } from "constructs";
|
|
3
|
+
import { BaseOperationZonalAlarmsAndRules } from "./BaseOperationZonalAlarmsAndRules";
|
|
4
|
+
import { IServerSideOperationZonalAlarmsAndRules } from "./IServerSideOperationZonalAlarmsAndRules";
|
|
5
|
+
import { ServerSideOperationZonalAlarmsAndRulesProps } from "./props/ServerSideOperationZonalAlarmsAndRulesProps";
|
|
6
6
|
/**
|
|
7
7
|
* The server side alarms and rules for an operation in an Availability Zone
|
|
8
8
|
*/
|
|
9
9
|
export declare class ServerSideOperationZonalAlarmsAndRules extends BaseOperationZonalAlarmsAndRules implements IServerSideOperationZonalAlarmsAndRules {
|
|
10
|
+
/**
|
|
11
|
+
* Availability alarm for this operation
|
|
12
|
+
*/
|
|
13
|
+
readonly availabilityAlarm: IAlarm;
|
|
14
|
+
/**
|
|
15
|
+
* Latency alarm for this operation
|
|
16
|
+
*/
|
|
17
|
+
readonly latencyAlarm: IAlarm;
|
|
10
18
|
/**
|
|
11
19
|
* Alarm that triggers if either latency or availability breach the specified
|
|
12
20
|
* threshold in this AZ and the AZ is an outlier for faults or latency
|
|
13
21
|
*/
|
|
14
|
-
isolatedImpactAlarm: IAlarm;
|
|
22
|
+
readonly isolatedImpactAlarm: IAlarm;
|
|
15
23
|
/**
|
|
16
24
|
* Alarm indicating that there are multiple instances producing faults in
|
|
17
25
|
* this AZ indicating the fault rate is not being caused by a single instance
|
|
18
26
|
*/
|
|
19
|
-
multipleInstancesProducingFaultsInThisAvailabilityZone?: IAlarm;
|
|
27
|
+
readonly multipleInstancesProducingFaultsInThisAvailabilityZone?: IAlarm;
|
|
20
28
|
/**
|
|
21
29
|
* Alarm indicating that there are multiple instances producing high
|
|
22
30
|
* latency responses in this AZ indicating the latency is not being
|
|
23
31
|
* caused by a single instance
|
|
24
32
|
*/
|
|
25
|
-
multipleInstancesProducingHighLatencyInThisAZ?: IAlarm;
|
|
33
|
+
readonly multipleInstancesProducingHighLatencyInThisAZ?: IAlarm;
|
|
26
34
|
/**
|
|
27
35
|
* Insight rule that measures the number of instances contributing to high latency in this AZ
|
|
28
36
|
*/
|
|
29
|
-
instanceContributorsToHighLatencyInThisAZ?: CfnInsightRule;
|
|
37
|
+
readonly instanceContributorsToHighLatencyInThisAZ?: CfnInsightRule;
|
|
30
38
|
/**
|
|
31
39
|
* Insight rule that measures the number of instances contributing to faults in this AZ
|
|
32
40
|
*/
|
|
33
|
-
instanceContributorsToFaultsInThisAZ?: CfnInsightRule;
|
|
41
|
+
readonly instanceContributorsToFaultsInThisAZ?: CfnInsightRule;
|
|
34
42
|
/**
|
|
35
43
|
* Insight rule that is used to calculate the number of instances in this particular AZ that is used with metric math to calculate
|
|
36
44
|
* the percent of instances contributing to latency or faults
|
|
37
45
|
*/
|
|
38
|
-
instancesHandlingRequestsInThisAZ?: CfnInsightRule;
|
|
46
|
+
readonly instancesHandlingRequestsInThisAZ?: CfnInsightRule;
|
|
39
47
|
/**
|
|
40
48
|
* Alarm that indicates that this AZ is an outlier for fault rate
|
|
41
49
|
*/
|
|
42
|
-
availabilityZoneIsOutlierForFaults: IAlarm;
|
|
50
|
+
readonly availabilityZoneIsOutlierForFaults: IAlarm;
|
|
43
51
|
/**
|
|
44
52
|
* Alarm that indicates this AZ is an outlier for high latency
|
|
45
53
|
*/
|
|
46
|
-
availabilityZoneIsOutlierForLatency: IAlarm;
|
|
54
|
+
readonly availabilityZoneIsOutlierForLatency: IAlarm;
|
|
47
55
|
constructor(scope: Construct, id: string, props: ServerSideOperationZonalAlarmsAndRulesProps);
|
|
48
56
|
}
|
|
@@ -7,52 +7,71 @@ const aws_cloudwatch_1 = require("aws-cdk-lib/aws-cloudwatch");
|
|
|
7
7
|
const AvailabilityAndLatencyAlarmsAndRules_1 = require("./AvailabilityAndLatencyAlarmsAndRules");
|
|
8
8
|
const BaseOperationZonalAlarmsAndRules_1 = require("./BaseOperationZonalAlarmsAndRules");
|
|
9
9
|
const OutlierDetectionAlgorithm_1 = require("../utilities/OutlierDetectionAlgorithm");
|
|
10
|
+
const LatencyOutlierMetricAggregation_1 = require("../outlier-detection/LatencyOutlierMetricAggregation");
|
|
10
11
|
/**
|
|
11
12
|
* The server side alarms and rules for an operation in an Availability Zone
|
|
12
13
|
*/
|
|
13
14
|
class ServerSideOperationZonalAlarmsAndRules extends BaseOperationZonalAlarmsAndRules_1.BaseOperationZonalAlarmsAndRules {
|
|
14
15
|
constructor(scope, id, props) {
|
|
15
|
-
super(scope, id
|
|
16
|
-
|
|
16
|
+
super(scope, id);
|
|
17
|
+
let azLetter = props.availabilityZone.substring(props.availabilityZone.length - 1);
|
|
18
|
+
let availabilityZoneId = props.operationAlarmsAndRulesProps.azMapper.availabilityZoneIdFromAvailabilityZoneLetter(azLetter);
|
|
19
|
+
let operation = props.operationAlarmsAndRulesProps.operation;
|
|
20
|
+
this.availabilityAlarm =
|
|
21
|
+
AvailabilityAndLatencyAlarmsAndRules_1.AvailabilityAndLatencyAlarmsAndRules.createZonalAvailabilityAlarm(this, operation.serverSideAvailabilityMetricDetails, props.availabilityZone, availabilityZoneId, props.counter, props.nameSuffix);
|
|
22
|
+
this.latencyAlarm =
|
|
23
|
+
AvailabilityAndLatencyAlarmsAndRules_1.AvailabilityAndLatencyAlarmsAndRules.createZonalLatencyAlarm(this, operation.serverSideLatencyMetricDetails, props.availabilityZone, availabilityZoneId, props.counter, props.nameSuffix);
|
|
24
|
+
// We want to know three things:
|
|
25
|
+
// 1. There is impact in one AZ from either the server or canary perspective
|
|
26
|
+
// This is being done by the base class
|
|
27
|
+
// 2. The impact in that AZ is an outlier
|
|
28
|
+
// This is being done here
|
|
29
|
+
// 3. The impact is coming from more than 1 instance
|
|
30
|
+
// This is being done here
|
|
31
|
+
if (props.operationAlarmsAndRulesProps.availabilityOutlierDetectionAlgorithm == OutlierDetectionAlgorithm_1.OutlierDetectionAlgorithm.STATIC) {
|
|
17
32
|
this.availabilityZoneIsOutlierForFaults =
|
|
18
|
-
AvailabilityAndLatencyAlarmsAndRules_1.AvailabilityAndLatencyAlarmsAndRules.createZonalFaultRateStaticOutlierAlarm(this,
|
|
19
|
-
this.availabilityZoneIsOutlierForLatency =
|
|
20
|
-
AvailabilityAndLatencyAlarmsAndRules_1.AvailabilityAndLatencyAlarmsAndRules.createZonalHighLatencyStaticOutlierAlarm(this, props.latencyMetricDetails, props.availabilityZoneId, props.counter, props.outlierThreshold, props.nameSuffix);
|
|
33
|
+
AvailabilityAndLatencyAlarmsAndRules_1.AvailabilityAndLatencyAlarmsAndRules.createZonalFaultRateStaticOutlierAlarm(this, operation.serverSideAvailabilityMetricDetails, props.availabilityZone, availabilityZoneId, props.counter, props.operationAlarmsAndRulesProps.availabilityOutlierThreshold, props.nameSuffix);
|
|
21
34
|
}
|
|
22
35
|
else {
|
|
23
36
|
this.availabilityZoneIsOutlierForFaults =
|
|
24
|
-
AvailabilityAndLatencyAlarmsAndRules_1.AvailabilityAndLatencyAlarmsAndRules.createZonalFaultRateOutlierAlarm(this,
|
|
25
|
-
return props.azMapper.availabilityZoneIdFromAvailabilityZoneLetter(az.substring(az.length - 1));
|
|
26
|
-
}), props.
|
|
37
|
+
AvailabilityAndLatencyAlarmsAndRules_1.AvailabilityAndLatencyAlarmsAndRules.createZonalFaultRateOutlierAlarm(this, operation.serverSideAvailabilityMetricDetails, availabilityZoneId, operation.service.availabilityZoneNames.map((az) => {
|
|
38
|
+
return props.operationAlarmsAndRulesProps.azMapper.availabilityZoneIdFromAvailabilityZoneLetter(az.substring(az.length - 1));
|
|
39
|
+
}), props.operationAlarmsAndRulesProps.availabilityOutlierThreshold, props.operationAlarmsAndRulesProps.outlierDetectionFunction, props.operationAlarmsAndRulesProps.availabilityOutlierDetectionAlgorithm, props.counter, props.nameSuffix);
|
|
40
|
+
}
|
|
41
|
+
if (props.operationAlarmsAndRulesProps.latencyOutlierDetectionAlgorithm == OutlierDetectionAlgorithm_1.OutlierDetectionAlgorithm.STATIC) {
|
|
27
42
|
this.availabilityZoneIsOutlierForLatency =
|
|
28
|
-
AvailabilityAndLatencyAlarmsAndRules_1.AvailabilityAndLatencyAlarmsAndRules.
|
|
29
|
-
return props.azMapper.availabilityZoneIdFromAvailabilityZoneLetter(az.substring(az.length - 1));
|
|
30
|
-
}), props.outlierThreshold, props.outlierDetectionFunction, props.outlierDetectionAlgorithm, props.counter, props.nameSuffix);
|
|
43
|
+
AvailabilityAndLatencyAlarmsAndRules_1.AvailabilityAndLatencyAlarmsAndRules.createZonalHighLatencyStaticOutlierAlarm(this, operation.serverSideLatencyMetricDetails, props.availabilityZone, availabilityZoneId, props.counter, props.operationAlarmsAndRulesProps.latencyOutlierThreshold, props.nameSuffix);
|
|
31
44
|
}
|
|
32
|
-
|
|
33
|
-
|
|
45
|
+
else {
|
|
46
|
+
this.availabilityZoneIsOutlierForLatency =
|
|
47
|
+
AvailabilityAndLatencyAlarmsAndRules_1.AvailabilityAndLatencyAlarmsAndRules.createZonalHighLatencyOutlierAlarm(this, operation.serverSideLatencyMetricDetails, availabilityZoneId, operation.service.availabilityZoneNames.map((az) => {
|
|
48
|
+
return props.operationAlarmsAndRulesProps.azMapper.availabilityZoneIdFromAvailabilityZoneLetter(az.substring(az.length - 1));
|
|
49
|
+
}), props.operationAlarmsAndRulesProps.latencyOutlierThreshold, props.operationAlarmsAndRulesProps.outlierDetectionFunction, props.operationAlarmsAndRulesProps.latencyOutlierMetricAggregation || LatencyOutlierMetricAggregation_1.LatencyOutlierMetricAggregation.COUNT, props.operationAlarmsAndRulesProps.latencyOutlierDetectionAlgorithm, props.counter, props.nameSuffix);
|
|
50
|
+
}
|
|
51
|
+
if (props.operationAlarmsAndRulesProps.operation.serverSideContributorInsightRuleDetails ||
|
|
52
|
+
props.operationAlarmsAndRulesProps.operation.service.defaultContributorInsightRuleDetails) {
|
|
53
|
+
let ruleDetails = props.operationAlarmsAndRulesProps.operation.serverSideContributorInsightRuleDetails ?
|
|
54
|
+
props.operationAlarmsAndRulesProps.operation.serverSideContributorInsightRuleDetails :
|
|
55
|
+
props.operationAlarmsAndRulesProps.operation.service.defaultContributorInsightRuleDetails;
|
|
34
56
|
this.instancesHandlingRequestsInThisAZ =
|
|
35
|
-
AvailabilityAndLatencyAlarmsAndRules_1.AvailabilityAndLatencyAlarmsAndRules.createServerSideInstancesHandlingRequestsInThisAZRule(this,
|
|
57
|
+
AvailabilityAndLatencyAlarmsAndRules_1.AvailabilityAndLatencyAlarmsAndRules.createServerSideInstancesHandlingRequestsInThisAZRule(this, operation.operationName, availabilityZoneId, ruleDetails, props.counter, props.nameSuffix);
|
|
36
58
|
this.instanceContributorsToFaultsInThisAZ =
|
|
37
|
-
AvailabilityAndLatencyAlarmsAndRules_1.AvailabilityAndLatencyAlarmsAndRules.createServerSideInstanceFaultContributorsInThisAZRule(this,
|
|
59
|
+
AvailabilityAndLatencyAlarmsAndRules_1.AvailabilityAndLatencyAlarmsAndRules.createServerSideInstanceFaultContributorsInThisAZRule(this, operation.operationName, availabilityZoneId, ruleDetails, props.counter, props.nameSuffix);
|
|
38
60
|
this.multipleInstancesProducingFaultsInThisAvailabilityZone =
|
|
39
|
-
AvailabilityAndLatencyAlarmsAndRules_1.AvailabilityAndLatencyAlarmsAndRules.createServerSideZonalMoreThanOneInstanceProducingFaultsAlarm(this,
|
|
61
|
+
AvailabilityAndLatencyAlarmsAndRules_1.AvailabilityAndLatencyAlarmsAndRules.createServerSideZonalMoreThanOneInstanceProducingFaultsAlarm(this, operation.serverSideAvailabilityMetricDetails, availabilityZoneId, props.counter, this.instanceContributorsToFaultsInThisAZ, this.instancesHandlingRequestsInThisAZ, props.operationAlarmsAndRulesProps.minimumUnhealthyTargets, props.nameSuffix);
|
|
40
62
|
this.instanceContributorsToHighLatencyInThisAZ =
|
|
41
|
-
AvailabilityAndLatencyAlarmsAndRules_1.AvailabilityAndLatencyAlarmsAndRules.createServerSideInstanceHighLatencyContributorsInThisAZRule(this,
|
|
63
|
+
AvailabilityAndLatencyAlarmsAndRules_1.AvailabilityAndLatencyAlarmsAndRules.createServerSideInstanceHighLatencyContributorsInThisAZRule(this, operation.serverSideLatencyMetricDetails, availabilityZoneId, ruleDetails, props.counter, props.nameSuffix);
|
|
42
64
|
this.multipleInstancesProducingHighLatencyInThisAZ =
|
|
43
|
-
AvailabilityAndLatencyAlarmsAndRules_1.AvailabilityAndLatencyAlarmsAndRules.createServerSideZonalMoreThanOneInstanceProducingHighLatencyAlarm(this,
|
|
44
|
-
this.isolatedImpactAlarm =
|
|
45
|
-
|
|
65
|
+
AvailabilityAndLatencyAlarmsAndRules_1.AvailabilityAndLatencyAlarmsAndRules.createServerSideZonalMoreThanOneInstanceProducingHighLatencyAlarm(this, operation.serverSideLatencyMetricDetails, availabilityZoneId, props.counter, this.instanceContributorsToHighLatencyInThisAZ, this.instancesHandlingRequestsInThisAZ, props.operationAlarmsAndRulesProps.minimumUnhealthyTargets, props.nameSuffix);
|
|
66
|
+
this.isolatedImpactAlarm = new aws_cloudwatch_1.CompositeAlarm(scope, `${operation.operationName.toLowerCase()}-zone-${azLetter}-isolated-impact-alarm`, {
|
|
67
|
+
compositeAlarmName: `${availabilityZoneId}-${operation.operationName.toLowerCase()}-isolated-impact-alarm${props.nameSuffix}`,
|
|
68
|
+
alarmRule: aws_cloudwatch_1.AlarmRule.anyOf(aws_cloudwatch_1.AlarmRule.allOf(this.availabilityZoneIsOutlierForFaults, this.availabilityAlarm, this.multipleInstancesProducingFaultsInThisAvailabilityZone), aws_cloudwatch_1.AlarmRule.allOf(this.availabilityZoneIsOutlierForLatency, this.latencyAlarm, this.multipleInstancesProducingHighLatencyInThisAZ)),
|
|
69
|
+
actionsEnabled: false,
|
|
70
|
+
});
|
|
46
71
|
}
|
|
47
72
|
else {
|
|
48
|
-
this.isolatedImpactAlarm = new aws_cloudwatch_1.CompositeAlarm(scope,
|
|
49
|
-
|
|
50
|
-
props.counter +
|
|
51
|
-
'IsolatedImpactAlarm' +
|
|
52
|
-
props.nameSuffix, {
|
|
53
|
-
compositeAlarmName: props.availabilityZoneId +
|
|
54
|
-
`-${props.operation.operationName.toLowerCase()}-isolated-impact-alarm` +
|
|
55
|
-
props.nameSuffix,
|
|
73
|
+
this.isolatedImpactAlarm = new aws_cloudwatch_1.CompositeAlarm(scope, `${operation.operationName.toLowerCase()}-zone-${azLetter}-isolated-impact-alarm`, {
|
|
74
|
+
compositeAlarmName: `${availabilityZoneId}-${operation.operationName.toLowerCase()}-isolated-impact-alarm${props.nameSuffix}`,
|
|
56
75
|
alarmRule: aws_cloudwatch_1.AlarmRule.anyOf(aws_cloudwatch_1.AlarmRule.allOf(this.availabilityZoneIsOutlierForFaults, this.availabilityAlarm), aws_cloudwatch_1.AlarmRule.allOf(this.availabilityZoneIsOutlierForLatency, this.latencyAlarm)),
|
|
57
76
|
actionsEnabled: false,
|
|
58
77
|
});
|
|
@@ -60,4 +79,4 @@ class ServerSideOperationZonalAlarmsAndRules extends BaseOperationZonalAlarmsAnd
|
|
|
60
79
|
}
|
|
61
80
|
}
|
|
62
81
|
exports.ServerSideOperationZonalAlarmsAndRules = ServerSideOperationZonalAlarmsAndRules;
|
|
63
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2VydmVyU2lkZU9wZXJhdGlvblpvbmFsQWxhcm1zQW5kUnVsZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYWxhcm1zYW5kcnVsZXMvU2VydmVyU2lkZU9wZXJhdGlvblpvbmFsQWxhcm1zQW5kUnVsZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEscUVBQXFFO0FBQ3JFLHNDQUFzQztBQUN0QywrREFLb0M7QUFFcEMsaUdBQThGO0FBQzlGLHlGQUFzRjtBQUd0RixzRkFBbUY7QUFFbkY7O0dBRUc7QUFDSCxNQUFhLHNDQUNYLFNBQVEsbUVBQWdDO0lBK0N4QyxZQUNFLEtBQWdCLEVBQ2hCLEVBQVUsRUFDVixLQUFrRDtRQUVsRCxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUV4QixJQUFJLEtBQUssQ0FBQyx5QkFBeUIsSUFBSSxxREFBeUIsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUN4RSxJQUFJLENBQUMsa0NBQWtDO2dCQUNyQywyRUFBb0MsQ0FBQyxzQ0FBc0MsQ0FDekUsSUFBSSxFQUNKLEtBQUssQ0FBQyx5QkFBeUIsRUFDL0IsS0FBSyxDQUFDLGtCQUFrQixFQUN4QixLQUFLLENBQUMsT0FBTyxFQUNiLEtBQUssQ0FBQyxnQkFBZ0IsRUFDdEIsS0FBSyxDQUFDLFVBQVUsQ0FDakIsQ0FBQztZQUNKLElBQUksQ0FBQyxtQ0FBbUM7Z0JBQ3RDLDJFQUFvQyxDQUFDLHdDQUF3QyxDQUMzRSxJQUFJLEVBQ0osS0FBSyxDQUFDLG9CQUFvQixFQUMxQixLQUFLLENBQUMsa0JBQWtCLEVBQ3hCLEtBQUssQ0FBQyxPQUFPLEVBQ2IsS0FBSyxDQUFDLGdCQUFnQixFQUN0QixLQUFLLENBQUMsVUFBVSxDQUNqQixDQUFDO1FBQ04sQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsa0NBQWtDO2dCQUNyQywyRUFBb0MsQ0FBQyxnQ0FBZ0MsQ0FDbkUsSUFBSSxFQUNKLEtB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SUFDSCxDQUFDO0NBQ0Y7QUE3TUQsd0ZBNk1DIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuaW1wb3J0IHtcbiAgSUFsYXJtLFxuICBDZm5JbnNpZ2h0UnVsZSxcbiAgQ29tcG9zaXRlQWxhcm0sXG4gIEFsYXJtUnVsZSxcbn0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWNsb3Vkd2F0Y2gnO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgeyBBdmFpbGFiaWxpdHlBbmRMYXRlbmN5QWxhcm1zQW5kUnVsZXMgfSBmcm9tICcuL0F2YWlsYWJpbGl0eUFuZExhdGVuY3lBbGFybXNBbmRSdWxlcyc7XG5pbXBvcnQgeyBCYXNlT3BlcmF0aW9uWm9uYWxBbGFybXNBbmRSdWxlcyB9IGZyb20gJy4vQmFzZU9wZXJhdGlvblpvbmFsQWxhcm1zQW5kUnVsZXMnO1xuaW1wb3J0IHsgSVNlcnZlclNpZGVPcGVyYXRpb25ab25hbEFsYXJtc0FuZFJ1bGVzIH0gZnJvbSAnLi9JU2VydmVyU2lkZU9wZXJhdGlvblpvbmFsQWxhcm1zQW5kUnVsZXMnO1xuaW1wb3J0IHsgU2VydmVyU2lkZU9wZXJhdGlvblpvbmFsQWxhcm1zQW5kUnVsZXNQcm9wcyB9IGZyb20gJy4vcHJvcHMvU2VydmVyU2lkZU9wZXJhdGlvblpvbmFsQWxhcm1zQW5kUnVsZXNQcm9wcyc7XG5pbXBvcnQgeyBPdXRsaWVyRGV0ZWN0aW9uQWxnb3JpdGhtIH0gZnJvbSAnLi4vdXRpbGl0aWVzL091dGxpZXJEZXRlY3Rpb25BbGdvcml0aG0nO1xuXG4vKipcbiAqIFRoZSBzZXJ2ZXIgc2lkZSBhbGFybXMgYW5kIHJ1bGVzIGZvciBhbiBvcGVyYXRpb24gaW4gYW4gQXZhaWxhYmlsaXR5IFpvbmVcbiAqL1xuZXhwb3J0IGNsYXNzIFNlcnZlclNpZGVPcGVyYXRpb25ab25hbEFsYXJtc0FuZFJ1bGVzXG4gIGV4dGVuZHMgQmFzZU9wZXJhdGlvblpvbmFsQWxhcm1zQW5kUnVsZXNcbiAgaW1wbGVtZW50cyBJU2VydmVyU2lkZU9wZXJhdGlvblpvbmFsQWxhcm1zQW5kUnVsZXMge1xuICAvKipcbiAgICogQWxhcm0gdGhhdCB0cmlnZ2VycyBpZiBlaXRoZXIgbGF0ZW5jeSBvciBhdmFpbGFiaWxpdHkgYnJlYWNoIHRoZSBzcGVjaWZpZWRcbiAgICogdGhyZXNob2xkIGluIHRoaXMgQVogYW5kIHRoZSBBWiBpcyBhbiBvdXRsaWVyIGZvciBmYXVsdHMgb3IgbGF0ZW5jeVxuICAgKi9cbiAgaXNvbGF0ZWRJbXBhY3RBbGFybTogSUFsYXJtO1xuXG4gIC8qKlxuICAgKiBBbGFybSBpbmRpY2F0aW5nIHRoYXQgdGhlcmUgYXJlIG11bHRpcGxlIGluc3RhbmNlcyBwcm9kdWNpbmcgZmF1bHRzIGluXG4gICAqIHRoaXMgQVogaW5kaWNhdGluZyB0aGUgZmF1bHQgcmF0ZSBpcyBub3QgYmVpbmcgY2F1c2VkIGJ5IGEgc2luZ2xlIGluc3RhbmNlXG4gICAqL1xuICBtdWx0aXBsZUluc3RhbmNlc1Byb2R1Y2luZ0ZhdWx0c0luVGhpc0F2YWlsYWJpbGl0eVpvbmU/OiBJQWxhcm07XG5cbiAgLyoqXG4gICAqIEFsYXJtIGluZGljYXRpbmcgdGhhdCB0aGVyZSBhcmUgbXVsdGlwbGUgaW5zdGFuY2VzIHByb2R1Y2luZyBoaWdoXG4gICAqIGxhdGVuY3kgcmVzcG9uc2VzIGluIHRoaXMgQVogaW5kaWNhdGluZyB0aGUgbGF0ZW5jeSBpcyBub3QgYmVpbmdcbiAgICogY2F1c2VkIGJ5IGEgc2luZ2xlIGluc3RhbmNlXG4gICAqL1xuICBtdWx0aXBsZUluc3RhbmNlc1Byb2R1Y2luZ0hpZ2hMYXRlbmN5SW5UaGlzQVo/OiBJQWxhcm07XG5cbiAgLyoqXG4gICAqIEluc2lnaHQgcnVsZSB0aGF0IG1lYXN1cmVzIHRoZSBudW1iZXIgb2YgaW5zdGFuY2VzIGNvbnRyaWJ1dGluZyB0byBoaWdoIGxhdGVuY3kgaW4gdGhpcyBBWlxuICAgKi9cbiAgaW5zdGFuY2VDb250cmlidXRvcnNUb0hpZ2hMYXRlbmN5SW5UaGlzQVo/OiBDZm5JbnNpZ2h0UnVsZTtcblxuICAvKipcbiAgICogSW5zaWdodCBydWxlIHRoYXQgbWVhc3VyZXMgdGhlIG51bWJlciBvZiBpbnN0YW5jZXMgY29udHJpYnV0aW5nIHRvIGZhdWx0cyBpbiB0aGlzIEFaXG4gICAqL1xuICBpbnN0YW5jZUNvbnRyaWJ1dG9yc1RvRmF1bHRzSW5UaGlzQVo/OiBDZm5JbnNpZ2h0UnVsZTtcblxuICAvKipcbiAgICogSW5zaWdodCBydWxlIHRoYXQgaXMgdXNlZCB0byBjYWxjdWxhdGUgdGhlIG51bWJlciBvZiBpbnN0YW5jZXMgaW4gdGhpcyBwYXJ0aWN1bGFyIEFaIHRoYXQgaXMgdXNlZCB3aXRoIG1ldHJpYyBtYXRoIHRvIGNhbGN1bGF0ZVxuICAgKiB0aGUgcGVyY2VudCBvZiBpbnN0YW5jZXMgY29udHJpYnV0aW5nIHRvIGxhdGVuY3kgb3IgZmF1bHRzXG4gICAqL1xuICBpbnN0YW5jZXNIYW5kbGluZ1JlcXVlc3RzSW5UaGlzQVo/OiBDZm5JbnNpZ2h0UnVsZTtcblxuICAvKipcbiAgICogQWxhcm0gdGhhdCBpbmRpY2F0ZXMgdGhhdCB0aGlzIEFaIGlzIGFuIG91dGxpZXIgZm9yIGZhdWx0IHJhdGVcbiAgICovXG4gIGF2YWlsYWJpbGl0eVpvbmVJc091dGxpZXJGb3JGYXVsdHM6IElBbGFybTtcblxuICAvKipcbiAgICogQWxhcm0gdGhhdCBpbmRpY2F0ZXMgdGhpcyBBWiBpcyBhbiBvdXRsaWVyIGZvciBoaWdoIGxhdGVuY3lcbiAgICovXG4gIGF2YWlsYWJpbGl0eVpvbmVJc091dGxpZXJGb3JMYXRlbmN5OiBJQWxhcm07XG5cbiAgY29uc3RydWN0b3IoXG4gICAgc2NvcGU6IENvbnN0cnVjdCxcbiAgICBpZDogc3RyaW5nLFxuICAgIHByb3BzOiBTZXJ2ZXJTaWRlT3BlcmF0aW9uWm9uYWxBbGFybXNBbmRSdWxlc1Byb3BzLFxuICApIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHByb3BzKTtcblxuICAgIGlmIChwcm9wcy5vdXRsaWVyRGV0ZWN0aW9uQWxnb3JpdGhtID09IE91dGxpZXJEZXRlY3Rpb25BbGdvcml0aG0uU1RBVElDKSB7XG4gICAgICB0aGlzLmF2YWlsYWJpbGl0eVpvbmVJc091dGxpZXJGb3JGYXVsdHMgPVxuICAgICAgICBBdmFpbGFiaWxpdHlBbmRMYXRlbmN5QWxhcm1zQW5kUnVsZXMuY3JlYXRlWm9uYWxGYXVsdFJhdGVTdGF0aWNPdXRsaWVyQWxhcm0oXG4gICAgICAgICAgdGhpcyxcbiAgICAgICAgICBwcm9wcy5hdmFpbGFiaWxpdHlNZXRyaWNEZXRhaWxzLFxuICAgICAgICAgIHByb3BzLmF2YWlsYWJpbGl0eVpvbmVJZCxcbiAgICAgICAgICBwcm9wcy5jb3VudGVyLFxuICAgICAgICAgIHByb3BzLm91dGxpZXJUaHJlc2hvbGQsXG4gICAgICAgICAgcHJvcHMubmFtZVN1ZmZpeCxcbiAgICAgICAgKTtcbiAgICAgIHRoaXMuYXZhaWxhYmlsaXR5Wm9uZUlzT3V0bGllckZvckxhdGVuY3kgPVxuICAgICAgICBBdmFpbGFiaWxpdHlBbmRMYXRlbmN5QWxhcm1zQW5kUnVsZXMuY3JlYXRlWm9uYWxIaWdoTGF0ZW5jeVN0YXRpY091dGxpZXJBbGFybShcbiAgICAgICAgICB0aGlzLFxuICAgICAgICAgIHByb3BzLmxhdGVuY3lNZXRyaWNEZXRhaWxzLFxuICAgICAgICAgIHByb3BzLmF2YWlsYWJpbGl0eVpvbmVJZCxcbiAgICAgICAgICBwcm9wcy5jb3VudGVyLFxuICAgICAgICAgIHByb3BzLm91dGxpZXJUaHJlc2hvbGQsXG4gICAgICAgICAgcHJvcHMubmFtZVN1ZmZpeCxcbiAgICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5hdmFpbGFiaWxpdHlab25lSXNPdXRsaWVyRm9yRmF1bHRzID1cbiAgICAgICAgQXZhaWxhYmlsaXR5QW5kTGF0ZW5jeUFsYXJtc0FuZFJ1bGVzLmNyZWF0ZVpvbmFsRmF1bHRSYXRlT3V0bGllckFsYXJtKFxuICAgICAgICAgIHRoaXMsXG4gICAgICAgICAgcHJvcHMuYXZhaWxhYmlsaXR5TWV0cmljRGV0YWlscyxcbiAgICAgICAgICBwcm9wcy5hdmFpbGFiaWxpdHlab25lSWQsXG4gICAgICAgICAgcHJvcHMub3BlcmF0aW9uLnNlcnZpY2UuYXZhaWxhYmlsaXR5Wm9uZU5hbWVzLm1hcCgoYXopID0+IHtcbiAgICAgICAgICAgIHJldHVybiBwcm9wcy5hek1hcHBlci5hdmFpbGFiaWxpdHlab25lSWRGcm9tQXZhaWxhYmlsaXR5Wm9uZUxldHRlcihcbiAgICAgICAgICAgICAgYXouc3Vic3RyaW5nKGF6Lmxlbmd0aCAtIDEpLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9KSxcbiAgICAgICAgICBwcm9wcy5vdXRsaWVyVGhyZXNob2xkLFxuICAgICAgICAgIHByb3BzLm91dGxpZXJEZXRlY3Rpb25GdW5jdGlvbiEsXG4gICAgICAgICAgcHJvcHMub3V0bGllckRldGVjdGlvbkFsZ29yaXRobSxcbiAgICAgICAgICBwcm9wcy5jb3VudGVyLFxuICAgICAgICAgIHByb3BzLm5hbWVTdWZmaXgsXG4gICAgICAgICk7XG4gICAgICB0aGlzLmF2YWlsYWJpbGl0eVpvbmVJc091dGxpZXJGb3JMYXRlbmN5ID1cbiAgICAgICAgQXZhaWxhYmlsaXR5QW5kTGF0ZW5jeUFsYXJtc0FuZFJ1bGVzLmNyZWF0ZVpvbmFsSGlnaExhdGVuY3lPdXRsaWVyQWxhcm0oXG4gICAgICAgICAgdGhpcyxcbiAgICAgICAgICBwcm9wcy5sYXRlbmN5TWV0cmljRGV0YWlscyxcbiAgICAgICAgICBwcm9wcy5hdmFpbGFiaWxpdHlab25lSWQsXG4gICAgICAgICAgcHJvcHMub3BlcmF0aW9uLnNlcnZpY2UuYXZhaWxhYmlsaXR5Wm9uZU5hbWVzLm1hcCgoYXopID0+IHtcbiAgICAgICAgICAgIHJldHVybiBwcm9wcy5hek1hcHBlci5hdmFpbGFiaWxpdHlab25lSWRGcm9tQXZhaWxhYmlsaXR5Wm9uZUxldHRlcihcbiAgICAgICAgICAgICAgYXouc3Vic3RyaW5nKGF6Lmxlbmd0aCAtIDEpLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9KSxcbiAgICAgICAgICBwcm9wcy5vdXRsaWVyVGhyZXNob2xkLFxuICAgICAgICAgIHByb3BzLm91dGxpZXJEZXRlY3Rpb25GdW5jdGlvbiEsXG4gICAgICAgICAgcHJvcHMub3V0bGllckRldGVjdGlvbkFsZ29yaXRobSxcbiAgICAgICAgICBwcm9wcy5jb3VudGVyLFxuICAgICAgICAgIHByb3BzLm5hbWVTdWZmaXgsXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKFxuICAgICAgcHJvcHMuY29udHJpYnV0b3JJbnNpZ2h0UnVsZURldGFpbHMgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgcHJvcHMuY29udHJpYnV0b3JJbnNpZ2h0UnVsZURldGFpbHMgIT0gbnVsbFxuICAgICkge1xuICAgICAgdGhpcy5pbnN0YW5jZXNIYW5kbGluZ1JlcXVlc3RzSW5UaGlzQVogPVxuICAgICAgICBBdmFpbGFiaWxpdHlBbmRMYXRlbmN5QWxhcm1zQW5kUnVsZXMuY3JlYXRlU2VydmVyU2lkZUluc3RhbmNlc0hhbmRsaW5nUmVxdWVzdHNJblRoaXNBWlJ1bGUoXG4gICAgICAgICAgdGhpcyxcbiAgICAgICAgICBwcm9wcy5hdmFpbGFiaWxpdHlNZXRyaWNEZXRhaWxzLm9wZXJhdGlvbk5hbWUsXG4gICAgICAgICAgcHJvcHMuYXZhaWxhYmlsaXR5Wm9uZUlkLFxuICAgICAgICAgIHByb3BzLmNvbnRyaWJ1dG9ySW5zaWdodFJ1bGVEZXRhaWxzLFxuICAgICAgICAgIHByb3BzLmNvdW50ZXIsXG4gICAgICAgICAgcHJvcHMubmFtZVN1ZmZpeCxcbiAgICAgICAgKTtcbiAgICAgIHRoaXMuaW5zdGFuY2VDb250cmlidXRvcnNUb0ZhdWx0c0luVGhpc0FaID1cbiAgICAgICAgQXZhaWxhYmlsaXR5QW5kTGF0ZW5jeUFsYXJtc0FuZFJ1bGVzLmNyZWF0ZVNlcnZlclNpZGVJbnN0YW5jZUZhdWx0Q29udHJpYnV0b3JzSW5UaGlzQVpSdWxlKFxuICAgICAgICAgIHRoaXMsXG4gICAgICAgICAgcHJvcHMuYXZhaWxhYmlsaXR5TWV0cmljRGV0YWlscy5vcGVyYXRpb25OYW1lLFxuICAgICAgICAgIHByb3BzLmF2YWlsYWJpbGl0eVpvbmVJZCxcbiAgICAgICAgICBwcm9wcy5jb250cmlidXRvckluc2lnaHRSdWxlRGV0YWlscyxcbiAgICAgICAgICBwcm9wcy5jb3VudGVyLFxuICAgICAgICAgIHByb3BzLm5hbWVTdWZmaXgsXG4gICAgICAgICk7XG4gICAgICB0aGlzLm11bHRpcGxlSW5zdGFuY2VzUHJvZHVjaW5nRmF1bHRzSW5UaGlzQXZhaWxhYmlsaXR5Wm9uZSA9XG4gICAgICAgIEF2YWlsYWJpbGl0eUFuZExhdGVuY3lBbGFybXNBbmRSdWxlcy5jcmVhdGVTZXJ2ZXJTaWRlWm9uYWxNb3JlVGhhbk9uZUluc3RhbmNlUHJvZHVjaW5nRmF1bHRzQWxhcm0oXG4gICAgICAgICAgdGhpcyxcbiAgICAgICAgICBwcm9wcy5hdmFpbGFiaWxpdHlNZXRyaWNEZXRhaWxzLFxuICAgICAgICAgIHByb3BzLmF2YWlsYWJpbGl0eVpvbmVJZCxcbiAgICAgICAgICBwcm9wcy5jb3VudGVyLFxuICAgICAgICAgIHByb3BzLm91dGxpZXJUaHJlc2hvbGQsXG4gICAgICAgICAgdGhpcy5pbnN0YW5jZUNvbnRyaWJ1dG9yc1RvRmF1bHRzSW5UaGlzQVosXG4gICAgICAgICAgdGhpcy5pbnN0YW5jZXNIYW5kbGluZ1JlcXVlc3RzSW5UaGlzQVosXG4gICAgICAgICAgcHJvcHMubmFtZVN1ZmZpeCxcbiAgICAgICAgKTtcbiAgICAgIHRoaXMuaW5zdGFuY2VDb250cmlidXRvcnNUb0hpZ2hMYXRlbmN5SW5UaGlzQVogPVxuICAgICAgICBBdmFpbGFiaWxpdHlBbmRMYXRlbmN5QWxhcm1zQW5kUnVsZXMuY3JlYXRlU2VydmVyU2lkZUluc3RhbmNlSGlnaExhdGVuY3lDb250cmlidXRvcnNJblRoaXNBWlJ1bGUoXG4gICAgICAgICAgdGhpcyxcbiAgICAgICAgICBwcm9wcy5sYXRlbmN5TWV0cmljRGV0YWlscyxcbiAgICAgICAgICBwcm9wcy5hdmFpbGFiaWxpdHlab25lSWQsXG4gICAgICAgICAgcHJvcHMuY29udHJpYnV0b3JJbnNpZ2h0UnVsZURldGFpbHMsXG4gICAgICAgICAgcHJvcHMuY291bnRlcixcbiAgICAgICAgICBwcm9wcy5uYW1lU3VmZml4LFxuICAgICAgICApO1xuICAgICAgdGhpcy5tdWx0aXBsZUluc3RhbmNlc1Byb2R1Y2luZ0hpZ2hMYXRlbmN5SW5UaGlzQVogPVxuICAgICAgICBBdmFpbGFiaWxpdHlBbmRMYXRlbmN5QWxhcm1zQW5kUnVsZXMuY3JlYXRlU2VydmVyU2lkZVpvbmFsTW9yZVRoYW5PbmVJbnN0YW5jZVByb2R1Y2luZ0hpZ2hMYXRlbmN5QWxhcm0oXG4gICAgICAgICAgdGhpcyxcbiAgICAgICAgICBwcm9wcy5sYXRlbmN5TWV0cmljRGV0YWlscyxcbiAgICAgICAgICBwcm9wcy5hdmFpbGFiaWxpdHlab25lSWQsXG4gICAgICAgICAgcHJvcHMuY291bnRlcixcbiAgICAgICAgICBwcm9wcy5vdXRsaWVyVGhyZXNob2xkLFxuICAgICAgICAgIHRoaXMuaW5zdGFuY2VDb250cmlidXRvcnNUb0hpZ2hMYXRlbmN5SW5UaGlzQVosXG4gICAgICAgICAgdGhpcy5pbnN0YW5jZXNIYW5kbGluZ1JlcXVlc3RzSW5UaGlzQVosXG4gICAgICAgICAgcHJvcHMubmFtZVN1ZmZpeCxcbiAgICAgICAgKTtcblxuICAgICAgdGhpcy5pc29sYXRlZEltcGFjdEFsYXJtID1cbiAgICAgICAgQXZhaWxhYmlsaXR5QW5kTGF0ZW5jeUFsYXJtc0FuZFJ1bGVzLmNyZWF0ZVNlcnZlclNpZGVJc29sYXRlZEFaSW1wYWN0QWxhcm0oXG4gICAgICAgICAgdGhpcyxcbiAgICAgICAgICBwcm9wcy5hdmFpbGFiaWxpdHlNZXRyaWNEZXRhaWxzLm9wZXJhdGlvbk5hbWUsXG4gICAgICAgICAgcHJvcHMuYXZhaWxhYmlsaXR5Wm9uZUlkLFxuICAgICAgICAgIHByb3BzLmNvdW50ZXIsXG4gICAgICAgICAgdGhpcy5hdmFpbGFiaWxpdHlab25lSXNPdXRsaWVyRm9yRmF1bHRzLFxuICAgICAgICAgIHRoaXMuYXZhaWxhYmlsaXR5QWxhcm0sXG4gICAgICAgICAgdGhpcy5tdWx0aXBsZUluc3RhbmNlc1Byb2R1Y2luZ0ZhdWx0c0luVGhpc0F2YWlsYWJpbGl0eVpvbmUsXG4gICAgICAgICAgdGhpcy5hdmFpbGFiaWxpdHlab25lSXNPdXRsaWVyRm9yTGF0ZW5jeSxcbiAgICAgICAgICB0aGlzLmxhdGVuY3lBbGFybSxcbiAgICAgICAgICB0aGlzLm11bHRpcGxlSW5zdGFuY2VzUHJvZHVjaW5nSGlnaExhdGVuY3lJblRoaXNBWixcbiAgICAgICAgICBwcm9wcy5uYW1lU3VmZml4LFxuICAgICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmlzb2xhdGVkSW1wYWN0QWxhcm0gPSBuZXcgQ29tcG9zaXRlQWxhcm0oXG4gICAgICAgIHNjb3BlLFxuICAgICAgICBwcm9wcy5vcGVyYXRpb24ub3BlcmF0aW9uTmFtZSArXG4gICAgICAgICAgJ0FaJyArXG4gICAgICAgICAgcHJvcHMuY291bnRlciArXG4gICAgICAgICAgJ0lzb2xhdGVkSW1wYWN0QWxhcm0nICtcbiAgICAgICAgICBwcm9wcy5uYW1lU3VmZml4LFxuICAgICAgICB7XG4gICAgICAgICAgY29tcG9zaXRlQWxhcm1OYW1lOlxuICAgICAgICAgICAgcHJvcHMuYXZhaWxhYmlsaXR5Wm9uZUlkICtcbiAgICAgICAgICAgIGAtJHtwcm9wcy5vcGVyYXRpb24ub3BlcmF0aW9uTmFtZS50b0xvd2VyQ2FzZSgpfS1pc29sYXRlZC1pbXBhY3QtYWxhcm1gICtcbiAgICAgICAgICAgIHByb3BzLm5hbWVTdWZmaXgsXG4gICAgICAgICAgYWxhcm1SdWxlOiBBbGFybVJ1bGUuYW55T2YoXG4gICAgICAgICAgICBBbGFybVJ1bGUuYWxsT2YoXG4gICAgICAgICAgICAgIHRoaXMuYXZhaWxhYmlsaXR5Wm9uZUlzT3V0bGllckZvckZhdWx0cyxcbiAgICAgICAgICAgICAgdGhpcy5hdmFpbGFiaWxpdHlBbGFybSxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBBbGFybVJ1bGUuYWxsT2YoXG4gICAgICAgICAgICAgIHRoaXMuYXZhaWxhYmlsaXR5Wm9uZUlzT3V0bGllckZvckxhdGVuY3ksXG4gICAgICAgICAgICAgIHRoaXMubGF0ZW5jeUFsYXJtLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICApLFxuICAgICAgICAgIGFjdGlvbnNFbmFibGVkOiBmYWxzZSxcbiAgICAgICAgfSxcbiAgICAgICk7XG4gICAgfVxuICB9XG59XG4iXX0=
|
|
82
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2VydmVyU2lkZU9wZXJhdGlvblpvbmFsQWxhcm1zQW5kUnVsZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYWxhcm1zYW5kcnVsZXMvU2VydmVyU2lkZU9wZXJhdGlvblpvbmFsQWxhcm1zQW5kUnVsZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEscUVBQXFFO0FBQ3JFLHNDQUFzQztBQUN0QywrREFLb0M7QUFFcEMsaUdBQThGO0FBQzlGLHlGQUFzRjtBQUd0RixzRkFBbUY7QUFFbkYsMEdBQXVHO0FBR3ZHOztHQUVHO0FBQ0gsTUFBYSxzQ0FDWCxTQUFRLG1FQUFnQztJQTBEeEMsWUFDRSxLQUFnQixFQUNoQixFQUFVLEVBQ1YsS0FBa0Q7UUFFbEQsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVqQixJQUFJLFFBQVEsR0FBVyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUNyRCxLQUFLLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FDbEMsQ0FBQztRQUNGLElBQUksa0JBQWtCLEdBQ3BCLEtBQUssQ0FBQyw0QkFBNEIsQ0FBQyxRQUFRLENBQUMsNENBQTRDLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFckcsSUFBSSxTQUFTLEdBQWUsS0FBSyxDQUFDLDRCQUE0QixDQUFDLFNBQVMsQ0FBQztRQUV6RSxJQUFJLENBQUMsaUJBQWlCO1lBQ3BCLDJFQUFvQyxDQUFDLDRCQUE0QixDQUMvRCxJQUFJLEVBQ0osU0FBUyxDQUFDLG1DQUFtQyxFQUM3QyxLQUFLLENBQUMsZ0JBQWdCLEVBQ3RCLGtCQUFrQixFQUNsQixLQUFLLENBQUMsT0FBTyxFQUNiLEtBQUssQ0FBQyxVQUFVLENBQ2pCLENBQUM7UUFDSixJQUFJLENBQUMsWUFBWTtZQUNmLDJFQUFvQyxDQUFDLHVCQUF1QixDQUMxRCxJQUFJLEVBQ0osU0FBUyxDQUFDLDhCQUE4QixFQUN4QyxLQUFLLENBQUMsZ0JB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QUFhLENBQUMsV0FBVyxFQUFFLHlCQUF5QixLQUFLLENBQUMsVUFBVSxFQUFFO2dCQUM3SCxTQUFTLEVBQUUsMEJBQVMsQ0FBQyxLQUFLLENBQ3hCLDBCQUFTLENBQUMsS0FBSyxDQUNiLElBQUksQ0FBQyxrQ0FBa0MsRUFDdkMsSUFBSSxDQUFDLGlCQUFpQixDQUN2QixFQUNELDBCQUFTLENBQUMsS0FBSyxDQUNiLElBQUksQ0FBQyxtQ0FBbUMsRUFDeEMsSUFBSSxDQUFDLFlBQVksQ0FDbEIsQ0FDRjtnQkFDRCxjQUFjLEVBQUUsS0FBSzthQUN0QixDQUNGLENBQUM7UUFDSixDQUFDO0lBQ0gsQ0FBQztDQUNGO0FBdFFELHdGQXNRQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcbmltcG9ydCB7XG4gIElBbGFybSxcbiAgQ2ZuSW5zaWdodFJ1bGUsXG4gIENvbXBvc2l0ZUFsYXJtLFxuICBBbGFybVJ1bGUsXG59IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtY2xvdWR3YXRjaFwiO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB7IEF2YWlsYWJpbGl0eUFuZExhdGVuY3lBbGFybXNBbmRSdWxlcyB9IGZyb20gXCIuL0F2YWlsYWJpbGl0eUFuZExhdGVuY3lBbGFybXNBbmRSdWxlc1wiO1xuaW1wb3J0IHsgQmFzZU9wZXJhdGlvblpvbmFsQWxhcm1zQW5kUnVsZXMgfSBmcm9tIFwiLi9CYXNlT3BlcmF0aW9uWm9uYWxBbGFybXNBbmRSdWxlc1wiO1xuaW1wb3J0IHsgSVNlcnZlclNpZGVPcGVyYXRpb25ab25hbEFsYXJtc0FuZFJ1bGVzIH0gZnJvbSBcIi4vSVNlcnZlclNpZGVPcGVyYXRpb25ab25hbEFsYXJtc0FuZFJ1bGVzXCI7XG5pbXBvcnQgeyBTZXJ2ZXJTaWRlT3BlcmF0aW9uWm9uYWxBbGFybXNBbmRSdWxlc1Byb3BzIH0gZnJvbSBcIi4vcHJvcHMvU2VydmVyU2lkZU9wZXJhdGlvblpvbmFsQWxhcm1zQW5kUnVsZXNQcm9wc1wiO1xuaW1wb3J0IHsgT3V0bGllckRldGVjdGlvbkFsZ29yaXRobSB9IGZyb20gXCIuLi91dGlsaXRpZXMvT3V0bGllckRldGVjdGlvbkFsZ29yaXRobVwiO1xuaW1wb3J0IHsgSU9wZXJhdGlvbiB9IGZyb20gXCIuLi9zZXJ2aWNlcy9JT3BlcmF0aW9uXCI7XG5pbXBvcnQgeyBMYXRlbmN5T3V0bGllck1ldHJpY0FnZ3JlZ2F0aW9uIH0gZnJvbSBcIi4uL291dGxpZXItZGV0ZWN0aW9uL0xhdGVuY3lPdXRsaWVyTWV0cmljQWdncmVnYXRpb25cIjtcbmltcG9ydCB7IElDb250cmlidXRvckluc2lnaHRSdWxlRGV0YWlscyB9IGZyb20gXCIuLi9zZXJ2aWNlcy9JQ29udHJpYnV0b3JJbnNpZ2h0UnVsZURldGFpbHNcIjtcblxuLyoqXG4gKiBUaGUgc2VydmVyIHNpZGUgYWxhcm1zIGFuZCBydWxlcyBmb3IgYW4gb3BlcmF0aW9uIGluIGFuIEF2YWlsYWJpbGl0eSBab25lXG4gKi9cbmV4cG9ydCBjbGFzcyBTZXJ2ZXJTaWRlT3BlcmF0aW9uWm9uYWxBbGFybXNBbmRSdWxlc1xuICBleHRlbmRzIEJhc2VPcGVyYXRpb25ab25hbEFsYXJtc0FuZFJ1bGVzXG4gIGltcGxlbWVudHMgSVNlcnZlclNpZGVPcGVyYXRpb25ab25hbEFsYXJtc0FuZFJ1bGVzXG57XG4gIC8qKlxuICAgKiBBdmFpbGFiaWxpdHkgYWxhcm0gZm9yIHRoaXMgb3BlcmF0aW9uXG4gICAqL1xuICByZWFkb25seSBhdmFpbGFiaWxpdHlBbGFybTogSUFsYXJtO1xuXG4gIC8qKlxuICAgKiBMYXRlbmN5IGFsYXJtIGZvciB0aGlzIG9wZXJhdGlvblxuICAgKi9cbiAgcmVhZG9ubHkgbGF0ZW5jeUFsYXJtOiBJQWxhcm07XG5cbiAgLyoqXG4gICAqIEFsYXJtIHRoYXQgdHJpZ2dlcnMgaWYgZWl0aGVyIGxhdGVuY3kgb3IgYXZhaWxhYmlsaXR5IGJyZWFjaCB0aGUgc3BlY2lmaWVkXG4gICAqIHRocmVzaG9sZCBpbiB0aGlzIEFaIGFuZCB0aGUgQVogaXMgYW4gb3V0bGllciBmb3IgZmF1bHRzIG9yIGxhdGVuY3lcbiAgICovXG4gIHJlYWRvbmx5IGlzb2xhdGVkSW1wYWN0QWxhcm06IElBbGFybTtcblxuICAvKipcbiAgICogQWxhcm0gaW5kaWNhdGluZyB0aGF0IHRoZXJlIGFyZSBtdWx0aXBsZSBpbnN0YW5jZXMgcHJvZHVjaW5nIGZhdWx0cyBpblxuICAgKiB0aGlzIEFaIGluZGljYXRpbmcgdGhlIGZhdWx0IHJhdGUgaXMgbm90IGJlaW5nIGNhdXNlZCBieSBhIHNpbmdsZSBpbnN0YW5jZVxuICAgKi9cbiAgcmVhZG9ubHkgbXVsdGlwbGVJbnN0YW5jZXNQcm9kdWNpbmdGYXVsdHNJblRoaXNBdmFpbGFiaWxpdHlab25lPzogSUFsYXJtO1xuXG4gIC8qKlxuICAgKiBBbGFybSBpbmRpY2F0aW5nIHRoYXQgdGhlcmUgYXJlIG11bHRpcGxlIGluc3RhbmNlcyBwcm9kdWNpbmcgaGlnaFxuICAgKiBsYXRlbmN5IHJlc3BvbnNlcyBpbiB0aGlzIEFaIGluZGljYXRpbmcgdGhlIGxhdGVuY3kgaXMgbm90IGJlaW5nXG4gICAqIGNhdXNlZCBieSBhIHNpbmdsZSBpbnN0YW5jZVxuICAgKi9cbiAgcmVhZG9ubHkgbXVsdGlwbGVJbnN0YW5jZXNQcm9kdWNpbmdIaWdoTGF0ZW5jeUluVGhpc0FaPzogSUFsYXJtO1xuXG4gIC8qKlxuICAgKiBJbnNpZ2h0IHJ1bGUgdGhhdCBtZWFzdXJlcyB0aGUgbnVtYmVyIG9mIGluc3RhbmNlcyBjb250cmlidXRpbmcgdG8gaGlnaCBsYXRlbmN5IGluIHRoaXMgQVpcbiAgICovXG4gIHJlYWRvbmx5IGluc3RhbmNlQ29udHJpYnV0b3JzVG9IaWdoTGF0ZW5jeUluVGhpc0FaPzogQ2ZuSW5zaWdodFJ1bGU7XG5cbiAgLyoqXG4gICAqIEluc2lnaHQgcnVsZSB0aGF0IG1lYXN1cmVzIHRoZSBudW1iZXIgb2YgaW5zdGFuY2VzIGNvbnRyaWJ1dGluZyB0byBmYXVsdHMgaW4gdGhpcyBBWlxuICAgKi9cbiAgcmVhZG9ubHkgaW5zdGFuY2VDb250cmlidXRvcnNUb0ZhdWx0c0luVGhpc0FaPzogQ2ZuSW5zaWdodFJ1bGU7XG5cbiAgLyoqXG4gICAqIEluc2lnaHQgcnVsZSB0aGF0IGlzIHVzZWQgdG8gY2FsY3VsYXRlIHRoZSBudW1iZXIgb2YgaW5zdGFuY2VzIGluIHRoaXMgcGFydGljdWxhciBBWiB0aGF0IGlzIHVzZWQgd2l0aCBtZXRyaWMgbWF0aCB0byBjYWxjdWxhdGVcbiAgICogdGhlIHBlcmNlbnQgb2YgaW5zdGFuY2VzIGNvbnRyaWJ1dGluZyB0byBsYXRlbmN5IG9yIGZhdWx0c1xuICAgKi9cbiAgcmVhZG9ubHkgaW5zdGFuY2VzSGFuZGxpbmdSZXF1ZXN0c0luVGhpc0FaPzogQ2ZuSW5zaWdodFJ1bGU7XG5cbiAgLyoqXG4gICAqIEFsYXJtIHRoYXQgaW5kaWNhdGVzIHRoYXQgdGhpcyBBWiBpcyBhbiBvdXRsaWVyIGZvciBmYXVsdCByYXRlXG4gICAqL1xuICByZWFkb25seSBhdmFpbGFiaWxpdHlab25lSXNPdXRsaWVyRm9yRmF1bHRzOiBJQWxhcm07XG5cbiAgLyoqXG4gICAqIEFsYXJtIHRoYXQgaW5kaWNhdGVzIHRoaXMgQVogaXMgYW4gb3V0bGllciBmb3IgaGlnaCBsYXRlbmN5XG4gICAqL1xuICByZWFkb25seSBhdmFpbGFiaWxpdHlab25lSXNPdXRsaWVyRm9yTGF0ZW5jeTogSUFsYXJtO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHNjb3BlOiBDb25zdHJ1Y3QsXG4gICAgaWQ6IHN0cmluZyxcbiAgICBwcm9wczogU2VydmVyU2lkZU9wZXJhdGlvblpvbmFsQWxhcm1zQW5kUnVsZXNQcm9wcyxcbiAgKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIGxldCBhekxldHRlcjogc3RyaW5nID0gcHJvcHMuYXZhaWxhYmlsaXR5Wm9uZS5zdWJzdHJpbmcoXG4gICAgICBwcm9wcy5hdmFpbGFiaWxpdHlab25lLmxlbmd0aCAtIDEsXG4gICAgKTtcbiAgICBsZXQgYXZhaWxhYmlsaXR5Wm9uZUlkOiBzdHJpbmcgPVxuICAgICAgcHJvcHMub3BlcmF0aW9uQWxhcm1zQW5kUnVsZXNQcm9wcy5hek1hcHBlci5hdmFpbGFiaWxpdHlab25lSWRGcm9tQXZhaWxhYmlsaXR5Wm9uZUxldHRlcihhekxldHRlcik7XG5cbiAgICBsZXQgb3BlcmF0aW9uOiBJT3BlcmF0aW9uID0gcHJvcHMub3BlcmF0aW9uQWxhcm1zQW5kUnVsZXNQcm9wcy5vcGVyYXRpb247XG5cbiAgICB0aGlzLmF2YWlsYWJpbGl0eUFsYXJtID1cbiAgICAgIEF2YWlsYWJpbGl0eUFuZExhdGVuY3lBbGFybXNBbmRSdWxlcy5jcmVhdGVab25hbEF2YWlsYWJpbGl0eUFsYXJtKFxuICAgICAgICB0aGlzLFxuICAgICAgICBvcGVyYXRpb24uc2VydmVyU2lkZUF2YWlsYWJpbGl0eU1ldHJpY0RldGFpbHMsXG4gICAgICAgIHByb3BzLmF2YWlsYWJpbGl0eVpvbmUsXG4gICAgICAgIGF2YWlsYWJpbGl0eVpvbmVJZCxcbiAgICAgICAgcHJvcHMuY291bnRlcixcbiAgICAgICAgcHJvcHMubmFtZVN1ZmZpeCxcbiAgICAgICk7XG4gICAgdGhpcy5sYXRlbmN5QWxhcm0gPVxuICAgICAgQXZhaWxhYmlsaXR5QW5kTGF0ZW5jeUFsYXJtc0FuZFJ1bGVzLmNyZWF0ZVpvbmFsTGF0ZW5jeUFsYXJtKFxuICAgICAgICB0aGlzLFxuICAgICAgICBvcGVyYXRpb24uc2VydmVyU2lkZUxhdGVuY3lNZXRyaWNEZXRhaWxzLFxuICAgICAgICBwcm9wcy5hdmFpbGFiaWxpdHlab25lLFxuICAgICAgICBhdmFpbGFiaWxpdHlab25lSWQsXG4gICAgICAgIHByb3BzLmNvdW50ZXIsXG4gICAgICAgIHByb3BzLm5hbWVTdWZmaXgsXG4gICAgICApO1xuXG4gICAgLy8gV2Ugd2FudCB0byBrbm93IHRocmVlIHRoaW5nczpcbiAgICAvLyAxLiBUaGVyZSBpcyBpbXBhY3QgaW4gb25lIEFaIGZyb20gZWl0aGVyIHRoZSBzZXJ2ZXIgb3IgY2FuYXJ5IHBlcnNwZWN0aXZlXG4gICAgLy8gICBUaGlzIGlzIGJlaW5nIGRvbmUgYnkgdGhlIGJhc2UgY2xhc3NcbiAgICAvLyAyLiBUaGUgaW1wYWN0IGluIHRoYXQgQVogaXMgYW4gb3V0bGllclxuICAgIC8vICAgVGhpcyBpcyBiZWluZyBkb25lIGhlcmVcbiAgICAvLyAzLiBUaGUgaW1wYWN0IGlzIGNvbWluZyBmcm9tIG1vcmUgdGhhbiAxIGluc3RhbmNlXG4gICAgLy8gICBUaGlzIGlzIGJlaW5nIGRvbmUgaGVyZVxuXG4gICAgaWYgKHByb3BzLm9wZXJhdGlvbkFsYXJtc0FuZFJ1bGVzUHJvcHMuYXZhaWxhYmlsaXR5T3V0bGllckRldGVjdGlvbkFsZ29yaXRobSA9PSBPdXRsaWVyRGV0ZWN0aW9uQWxnb3JpdGhtLlNUQVRJQykge1xuICAgICAgdGhpcy5hdmFpbGFiaWxpdHlab25lSXNPdXRsaWVyRm9yRmF1bHRzID1cbiAgICAgICAgQXZhaWxhYmlsaXR5QW5kTGF0ZW5jeUFsYXJtc0FuZFJ1bGVzLmNyZWF0ZVpvbmFsRmF1bHRSYXRlU3RhdGljT3V0bGllckFsYXJtKFxuICAgICAgICAgIHRoaXMsXG4gICAgICAgICAgb3BlcmF0aW9uLnNlcnZlclNpZGVBdmFpbGFiaWxpdHlNZXRyaWNEZXRhaWxzLFxuICAgICAgICAgIHByb3BzLmF2YWlsYWJpbGl0eVpvbmUsXG4gICAgICAgICAgYXZhaWxhYmlsaXR5Wm9uZUlkLFxuICAgICAgICAgIHByb3BzLmNvdW50ZXIsXG4gICAgICAgICAgcHJvcHMub3BlcmF0aW9uQWxhcm1zQW5kUnVsZXNQcm9wcy5hdmFpbGFiaWxpdHlPdXRsaWVyVGhyZXNob2xkLFxuICAgICAgICAgIHByb3BzLm5hbWVTdWZmaXgsXG4gICAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuYXZhaWxhYmlsaXR5Wm9uZUlzT3V0bGllckZvckZhdWx0cyA9XG4gICAgICAgIEF2YWlsYWJpbGl0eUFuZExhdGVuY3lBbGFybXNBbmRSdWxlcy5jcmVhdGVab25hbEZhdWx0UmF0ZU91dGxpZXJBbGFybShcbiAgICAgICAgICB0aGlzLFxuICAgICAgICAgIG9wZXJhdGlvbi5zZXJ2ZXJTaWRlQXZhaWxhYmlsaXR5TWV0cmljRGV0YWlscyxcbiAgICAgICAgICBhdmFpbGFiaWxpdHlab25lSWQsXG4gICAgICAgICAgb3BlcmF0aW9uLnNlcnZpY2UuYXZhaWxhYmlsaXR5Wm9uZU5hbWVzLm1hcCgoYXopID0+IHtcbiAgICAgICAgICAgIHJldHVybiBwcm9wcy5vcGVyYXRpb25BbGFybXNBbmRSdWxlc1Byb3BzLmF6TWFwcGVyLmF2YWlsYWJpbGl0eVpvbmVJZEZyb21BdmFpbGFiaWxpdHlab25lTGV0dGVyKFxuICAgICAgICAgICAgICBhei5zdWJzdHJpbmcoYXoubGVuZ3RoIC0gMSksXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0pLFxuICAgICAgICAgIHByb3BzLm9wZXJhdGlvbkFsYXJtc0FuZFJ1bGVzUHJvcHMuYXZhaWxhYmlsaXR5T3V0bGllclRocmVzaG9sZCxcbiAgICAgICAgICBwcm9wcy5vcGVyYXRpb25BbGFybXNBbmRSdWxlc1Byb3BzLm91dGxpZXJEZXRlY3Rpb25GdW5jdGlvbiEsXG4gICAgICAgICAgcHJvcHMub3BlcmF0aW9uQWxhcm1zQW5kUnVsZXNQcm9wcy5hdmFpbGFiaWxpdHlPdXRsaWVyRGV0ZWN0aW9uQWxnb3JpdGhtLFxuICAgICAgICAgIHByb3BzLmNvdW50ZXIsXG4gICAgICAgICAgcHJvcHMubmFtZVN1ZmZpeCxcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAocHJvcHMub3BlcmF0aW9uQWxhcm1zQW5kUnVsZXNQcm9wcy5sYXRlbmN5T3V0bGllckRldGVjdGlvbkFsZ29yaXRobSA9PSBPdXRsaWVyRGV0ZWN0aW9uQWxnb3JpdGhtLlNUQVRJQykge1xuICAgICAgdGhpcy5hdmFpbGFiaWxpdHlab25lSXNPdXRsaWVyRm9yTGF0ZW5jeSA9XG4gICAgICAgIEF2YWlsYWJpbGl0eUFuZExhdGVuY3lBbGFybXNBbmRSdWxlcy5jcmVhdGVab25hbEhpZ2hMYXRlbmN5U3RhdGljT3V0bGllckFsYXJtKFxuICAgICAgICAgIHRoaXMsXG4gICAgICAgICAgb3BlcmF0aW9uLnNlcnZlclNpZGVMYXRlbmN5TWV0cmljRGV0YWlscyxcbiAgICAgICAgICBwcm9wcy5hdmFpbGFiaWxpdHlab25lLFxuICAgICAgICAgIGF2YWlsYWJpbGl0eVpvbmVJZCxcbiAgICAgICAgICBwcm9wcy5jb3VudGVyLFxuICAgICAgICAgIHByb3BzLm9wZXJhdGlvbkFsYXJtc0FuZFJ1bGVzUHJvcHMubGF0ZW5jeU91dGxpZXJUaHJlc2hvbGQsXG4gICAgICAgICAgcHJvcHMubmFtZVN1ZmZpeCxcbiAgICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5hdmFpbGFiaWxpdHlab25lSXNPdXRsaWVyRm9yTGF0ZW5jeSA9XG4gICAgICAgIEF2YWlsYWJpbGl0eUFuZExhdGVuY3lBbGFybXNBbmRSdWxlcy5jcmVhdGVab25hbEhpZ2hMYXRlbmN5T3V0bGllckFsYXJtKFxuICAgICAgICAgIHRoaXMsXG4gICAgICAgICAgb3BlcmF0aW9uLnNlcnZlclNpZGVMYXRlbmN5TWV0cmljRGV0YWlscyxcbiAgICAgICAgICBhdmFpbGFiaWxpdHlab25lSWQsXG4gICAgICAgICAgb3BlcmF0aW9uLnNlcnZpY2UuYXZhaWxhYmlsaXR5Wm9uZU5hbWVzLm1hcCgoYXopID0+IHtcbiAgICAgICAgICAgIHJldHVybiBwcm9wcy5vcGVyYXRpb25BbGFybXNBbmRSdWxlc1Byb3BzLmF6TWFwcGVyLmF2YWlsYWJpbGl0eVpvbmVJZEZyb21BdmFpbGFiaWxpdHlab25lTGV0dGVyKFxuICAgICAgICAgICAgICBhei5zdWJzdHJpbmcoYXoubGVuZ3RoIC0gMSksXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0pLFxuICAgICAgICAgIHByb3BzLm9wZXJhdGlvbkFsYXJtc0FuZFJ1bGVzUHJvcHMubGF0ZW5jeU91dGxpZXJUaHJlc2hvbGQsXG4gICAgICAgICAgcHJvcHMub3BlcmF0aW9uQWxhcm1zQW5kUnVsZXNQcm9wcy5vdXRsaWVyRGV0ZWN0aW9uRnVuY3Rpb24hLFxuICAgICAgICAgIHByb3BzLm9wZXJhdGlvbkFsYXJtc0FuZFJ1bGVzUHJvcHMubGF0ZW5jeU91dGxpZXJNZXRyaWNBZ2dyZWdhdGlvbiB8fCBMYXRlbmN5T3V0bGllck1ldHJpY0FnZ3JlZ2F0aW9uLkNPVU5ULFxuICAgICAgICAgIHByb3BzLm9wZXJhdGlvbkFsYXJtc0FuZFJ1bGVzUHJvcHMubGF0ZW5jeU91dGxpZXJEZXRlY3Rpb25BbGdvcml0aG0sXG4gICAgICAgICAgcHJvcHMuY291bnRlcixcbiAgICAgICAgICBwcm9wcy5uYW1lU3VmZml4LFxuICAgICAgICApO1xuICAgIH1cblxuICAgIGlmIChwcm9wcy5vcGVyYXRpb25BbGFybXNBbmRSdWxlc1Byb3BzLm9wZXJhdGlvbi5zZXJ2ZXJTaWRlQ29udHJpYnV0b3JJbnNpZ2h0UnVsZURldGFpbHMgfHxcbiAgICAgIHByb3BzLm9wZXJhdGlvbkFsYXJtc0FuZFJ1bGVzUHJvcHMub3BlcmF0aW9uLnNlcnZpY2UuZGVmYXVsdENvbnRyaWJ1dG9ySW5zaWdodFJ1bGVEZXRhaWxzXG4gICAgKSBcbiAgICB7XG4gICAgICBsZXQgcnVsZURldGFpbHM6IElDb250cmlidXRvckluc2lnaHRSdWxlRGV0YWlscyB8IHVuZGVmaW5lZCA9IHByb3BzLm9wZXJhdGlvbkFsYXJtc0FuZFJ1bGVzUHJvcHMub3BlcmF0aW9uLnNlcnZlclNpZGVDb250cmlidXRvckluc2lnaHRSdWxlRGV0YWlscyA/XG4gICAgICAgIHByb3BzLm9wZXJhdGlvbkFsYXJtc0FuZFJ1bGVzUHJvcHMub3BlcmF0aW9uLnNlcnZlclNpZGVDb250cmlidXRvckluc2lnaHRSdWxlRGV0YWlscyA6XG4gICAgICAgIHByb3BzLm9wZXJhdGlvbkFsYXJtc0FuZFJ1bGVzUHJvcHMub3BlcmF0aW9uLnNlcnZpY2UuZGVmYXVsdENvbnRyaWJ1dG9ySW5zaWdodFJ1bGVEZXRhaWxzO1xuXG4gICAgICB0aGlzLmluc3RhbmNlc0hhbmRsaW5nUmVxdWVzdHNJblRoaXNBWiA9XG4gICAgICAgIEF2YWlsYWJpbGl0eUFuZExhdGVuY3lBbGFybXNBbmRSdWxlcy5jcmVhdGVTZXJ2ZXJTaWRlSW5zdGFuY2VzSGFuZGxpbmdSZXF1ZXN0c0luVGhpc0FaUnVsZShcbiAgICAgICAgICB0aGlzLFxuICAgICAgICAgIG9wZXJhdGlvbi5vcGVyYXRpb25OYW1lLFxuICAgICAgICAgIGF2YWlsYWJpbGl0eVpvbmVJZCxcbiAgICAgICAgICBydWxlRGV0YWlscyEsXG4gICAgICAgICAgcHJvcHMuY291bnRlcixcbiAgICAgICAgICBwcm9wcy5uYW1lU3VmZml4LFxuICAgICAgICApO1xuICAgICAgdGhpcy5pbnN0YW5jZUNvbnRyaWJ1dG9yc1RvRmF1bHRzSW5UaGlzQVogPVxuICAgICAgICBBdmFpbGFiaWxpdHlBbmRMYXRlbmN5QWxhcm1zQW5kUnVsZXMuY3JlYXRlU2VydmVyU2lkZUluc3RhbmNlRmF1bHRDb250cmlidXRvcnNJblRoaXNBWlJ1bGUoXG4gICAgICAgICAgdGhpcyxcbiAgICAgICAgICBvcGVyYXRpb24ub3BlcmF0aW9uTmFtZSxcbiAgICAgICAgICBhdmFpbGFiaWxpdHlab25lSWQsXG4gICAgICAgICAgcnVsZURldGFpbHMhLFxuICAgICAgICAgIHByb3BzLmNvdW50ZXIsXG4gICAgICAgICAgcHJvcHMubmFtZVN1ZmZpeCxcbiAgICAgICAgKTtcbiAgICAgIHRoaXMubXVsdGlwbGVJbnN0YW5jZXNQcm9kdWNpbmdGYXVsdHNJblRoaXNBdmFpbGFiaWxpdHlab25lID1cbiAgICAgICAgQXZhaWxhYmlsaXR5QW5kTGF0ZW5jeUFsYXJtc0FuZFJ1bGVzLmNyZWF0ZVNlcnZlclNpZGVab25hbE1vcmVUaGFuT25lSW5zdGFuY2VQcm9kdWNpbmdGYXVsdHNBbGFybShcbiAgICAgICAgICB0aGlzLFxuICAgICAgICAgIG9wZXJhdGlvbi5zZXJ2ZXJTaWRlQXZhaWxhYmlsaXR5TWV0cmljRGV0YWlscyxcbiAgICAgICAgICBhdmFpbGFiaWxpdHlab25lSWQsXG4gICAgICAgICAgcHJvcHMuY291bnRlcixcbiAgICAgICAgICB0aGlzLmluc3RhbmNlQ29udHJpYnV0b3JzVG9GYXVsdHNJblRoaXNBWixcbiAgICAgICAgICB0aGlzLmluc3RhbmNlc0hhbmRsaW5nUmVxdWVzdHNJblRoaXNBWixcbiAgICAgICAgICBwcm9wcy5vcGVyYXRpb25BbGFybXNBbmRSdWxlc1Byb3BzLm1pbmltdW1VbmhlYWx0aHlUYXJnZXRzLFxuICAgICAgICAgIHByb3BzLm5hbWVTdWZmaXgsXG4gICAgICAgICk7XG4gICAgICB0aGlzLmluc3RhbmNlQ29udHJpYnV0b3JzVG9IaWdoTGF0ZW5jeUluVGhpc0FaID1cbiAgICAgICAgQXZhaWxhYmlsaXR5QW5kTGF0ZW5jeUFsYXJtc0FuZFJ1bGVzLmNyZWF0ZVNlcnZlclNpZGVJbnN0YW5jZUhpZ2hMYXRlbmN5Q29udHJpYnV0b3JzSW5UaGlzQVpSdWxlKFxuICAgICAgICAgIHRoaXMsXG4gICAgICAgICAgb3BlcmF0aW9uLnNlcnZlclNpZGVMYXRlbmN5TWV0cmljRGV0YWlscyxcbiAgICAgICAgICBhdmFpbGFiaWxpdHlab25lSWQsXG4gICAgICAgICAgcnVsZURldGFpbHMhLFxuICAgICAgICAgIHByb3BzLmNvdW50ZXIsXG4gICAgICAgICAgcHJvcHMubmFtZVN1ZmZpeCxcbiAgICAgICAgKTtcbiAgICAgIHRoaXMubXVsdGlwbGVJbnN0YW5jZXNQcm9kdWNpbmdIaWdoTGF0ZW5jeUluVGhpc0FaID1cbiAgICAgICAgQXZhaWxhYmlsaXR5QW5kTGF0ZW5jeUFsYXJtc0FuZFJ1bGVzLmNyZWF0ZVNlcnZlclNpZGVab25hbE1vcmVUaGFuT25lSW5zdGFuY2VQcm9kdWNpbmdIaWdoTGF0ZW5jeUFsYXJtKFxuICAgICAgICAgIHRoaXMsXG4gICAgICAgICAgb3BlcmF0aW9uLnNlcnZlclNpZGVMYXRlbmN5TWV0cmljRGV0YWlscyxcbiAgICAgICAgICBhdmFpbGFiaWxpdHlab25lSWQsXG4gICAgICAgICAgcHJvcHMuY291bnRlcixcbiAgICAgICAgICB0aGlzLmluc3RhbmNlQ29udHJpYnV0b3JzVG9IaWdoTGF0ZW5jeUluVGhpc0FaLFxuICAgICAgICAgIHRoaXMuaW5zdGFuY2VzSGFuZGxpbmdSZXF1ZXN0c0luVGhpc0FaLFxuICAgICAgICAgIHByb3BzLm9wZXJhdGlvbkFsYXJtc0FuZFJ1bGVzUHJvcHMubWluaW11bVVuaGVhbHRoeVRhcmdldHMsXG4gICAgICAgICAgcHJvcHMubmFtZVN1ZmZpeCxcbiAgICAgICAgKTtcblxuICAgICAgdGhpcy5pc29sYXRlZEltcGFjdEFsYXJtID0gbmV3IENvbXBvc2l0ZUFsYXJtKFxuICAgICAgICBzY29wZSxcbiAgICAgICAgYCR7b3BlcmF0aW9uLm9wZXJhdGlvbk5hbWUudG9Mb3dlckNhc2UoKX0tem9uZS0ke2F6TGV0dGVyfS1pc29sYXRlZC1pbXBhY3QtYWxhcm1gLFxuICAgICAgICB7XG4gICAgICAgICAgY29tcG9zaXRlQWxhcm1OYW1lOiBgJHthdmFpbGFiaWxpdHlab25lSWR9LSR7b3BlcmF0aW9uLm9wZXJhdGlvbk5hbWUudG9Mb3dlckNhc2UoKX0taXNvbGF0ZWQtaW1wYWN0LWFsYXJtJHtwcm9wcy5uYW1lU3VmZml4fWAsXG4gICAgICAgICAgYWxhcm1SdWxlOiBBbGFybVJ1bGUuYW55T2YoXG4gICAgICAgICAgICBBbGFybVJ1bGUuYWxsT2YoXG4gICAgICAgICAgICAgIHRoaXMuYXZhaWxhYmlsaXR5Wm9uZUlzT3V0bGllckZvckZhdWx0cyxcbiAgICAgICAgICAgICAgdGhpcy5hdmFpbGFiaWxpdHlBbGFybSxcbiAgICAgICAgICAgICAgdGhpcy5tdWx0aXBsZUluc3RhbmNlc1Byb2R1Y2luZ0ZhdWx0c0luVGhpc0F2YWlsYWJpbGl0eVpvbmUsXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgQWxhcm1SdWxlLmFsbE9mKFxuICAgICAgICAgICAgICB0aGlzLmF2YWlsYWJpbGl0eVpvbmVJc091dGxpZXJGb3JMYXRlbmN5LFxuICAgICAgICAgICAgICB0aGlzLmxhdGVuY3lBbGFybSxcbiAgICAgICAgICAgICAgdGhpcy5tdWx0aXBsZUluc3RhbmNlc1Byb2R1Y2luZ0hpZ2hMYXRlbmN5SW5UaGlzQVosXG4gICAgICAgICAgICApLFxuICAgICAgICAgICksXG4gICAgICAgICAgYWN0aW9uc0VuYWJsZWQ6IGZhbHNlLFxuICAgICAgICB9LFxuICAgICAgKTtcbiAgICB9IFxuICAgIGVsc2Uge1xuICAgICAgdGhpcy5pc29sYXRlZEltcGFjdEFsYXJtID0gbmV3IENvbXBvc2l0ZUFsYXJtKFxuICAgICAgICBzY29wZSxcbiAgICAgICAgYCR7b3BlcmF0aW9uLm9wZXJhdGlvbk5hbWUudG9Mb3dlckNhc2UoKX0tem9uZS0ke2F6TGV0dGVyfS1pc29sYXRlZC1pbXBhY3QtYWxhcm1gLFxuICAgICAgICB7XG4gICAgICAgICAgY29tcG9zaXRlQWxhcm1OYW1lOiBgJHthdmFpbGFiaWxpdHlab25lSWR9LSR7b3BlcmF0aW9uLm9wZXJhdGlvbk5hbWUudG9Mb3dlckNhc2UoKX0taXNvbGF0ZWQtaW1wYWN0LWFsYXJtJHtwcm9wcy5uYW1lU3VmZml4fWAsXG4gICAgICAgICAgYWxhcm1SdWxlOiBBbGFybVJ1bGUuYW55T2YoXG4gICAgICAgICAgICBBbGFybVJ1bGUuYWxsT2YoXG4gICAgICAgICAgICAgIHRoaXMuYXZhaWxhYmlsaXR5Wm9uZUlzT3V0bGllckZvckZhdWx0cyxcbiAgICAgICAgICAgICAgdGhpcy5hdmFpbGFiaWxpdHlBbGFybSxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBBbGFybVJ1bGUuYWxsT2YoXG4gICAgICAgICAgICAgIHRoaXMuYXZhaWxhYmlsaXR5Wm9uZUlzT3V0bGllckZvckxhdGVuY3ksXG4gICAgICAgICAgICAgIHRoaXMubGF0ZW5jeUFsYXJtLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICApLFxuICAgICAgICAgIGFjdGlvbnNFbmFibGVkOiBmYWxzZSxcbiAgICAgICAgfSxcbiAgICAgICk7XG4gICAgfVxuICB9XG59XG4iXX0=
|