terraconstructs 0.0.11 → 0.0.12
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 +104486 -34582
- package/lib/aws/arn.js +1 -1
- package/lib/aws/aws-construct.d.ts +1 -1
- package/lib/aws/aws-construct.js +28 -2
- package/lib/aws/aws-stack.d.ts +2 -4
- package/lib/aws/aws-stack.js +21 -8
- package/lib/aws/aws-tags.d.ts +58 -0
- package/lib/aws/aws-tags.js +77 -0
- package/lib/aws/cloudwatch/actions/ec2.js +1 -1
- package/lib/aws/cloudwatch/actions/lambda.js +1 -1
- package/lib/aws/cloudwatch/alarm-base.js +1 -1
- package/lib/aws/cloudwatch/alarm-rule.js +1 -1
- package/lib/aws/cloudwatch/alarm-status-widget.js +1 -1
- package/lib/aws/cloudwatch/alarm.js +1 -1
- package/lib/aws/cloudwatch/composite-alarm.js +1 -1
- package/lib/aws/cloudwatch/dashboard.js +1 -1
- package/lib/aws/cloudwatch/data-protection-policy.js +3 -3
- package/lib/aws/cloudwatch/graph.js +8 -8
- package/lib/aws/cloudwatch/layout.js +3 -3
- package/lib/aws/cloudwatch/log-destinations/kinesis.js +1 -1
- package/lib/aws/cloudwatch/log-destinations/lambda.js +1 -1
- package/lib/aws/cloudwatch/log-group.js +1 -1
- package/lib/aws/cloudwatch/log-query.js +1 -1
- package/lib/aws/cloudwatch/log-stream.js +1 -1
- package/lib/aws/cloudwatch/metric-filter.d.ts +1 -1
- package/lib/aws/cloudwatch/metric-filter.js +4 -4
- package/lib/aws/cloudwatch/metric.js +2 -2
- package/lib/aws/cloudwatch/pattern.js +3 -3
- package/lib/aws/cloudwatch/policy.js +1 -1
- package/lib/aws/cloudwatch/private/env-tokens.js +5 -6
- package/lib/aws/cloudwatch/private/metric-util.js +4 -5
- package/lib/aws/cloudwatch/private/object.js +2 -3
- package/lib/aws/cloudwatch/private/rendering.js +3 -3
- package/lib/aws/cloudwatch/private/statistic.js +6 -7
- package/lib/aws/cloudwatch/query-definition.js +2 -2
- package/lib/aws/cloudwatch/stats.js +1 -1
- package/lib/aws/cloudwatch/subscription-filter.d.ts +1 -1
- package/lib/aws/cloudwatch/subscription-filter.js +4 -4
- package/lib/aws/cloudwatch/text.js +1 -1
- package/lib/aws/cloudwatch/variable.js +3 -3
- package/lib/aws/cloudwatch/widget.d.ts +1 -1
- package/lib/aws/cloudwatch/widget.js +4 -4
- package/lib/aws/compute/activity.js +3 -2
- package/lib/aws/compute/alb/application-listener-action.d.ts +334 -0
- package/lib/aws/compute/alb/application-listener-action.js +281 -0
- package/lib/aws/compute/alb/application-listener-certificate.d.ts +35 -0
- package/lib/aws/compute/alb/application-listener-certificate.js +35 -0
- package/lib/aws/compute/alb/application-listener-rule.d.ts +233 -0
- package/lib/aws/compute/alb/application-listener-rule.js +220 -0
- package/lib/aws/compute/alb/application-listener.d.ts +574 -0
- package/lib/aws/compute/alb/application-listener.js +538 -0
- package/lib/aws/compute/alb/application-load-balancer.d.ts +715 -0
- package/lib/aws/compute/alb/application-load-balancer.js +780 -0
- package/lib/aws/compute/alb/application-target-group.d.ts +339 -0
- package/lib/aws/compute/alb/application-target-group.js +427 -0
- package/lib/aws/compute/alb/conditions.d.ts +61 -0
- package/lib/aws/compute/alb/conditions.js +164 -0
- package/lib/aws/compute/alb/trust-store-revocation.d.ts +59 -0
- package/lib/aws/compute/alb/trust-store-revocation.js +46 -0
- package/lib/aws/compute/alb/trust-store.d.ts +86 -0
- package/lib/aws/compute/alb/trust-store.js +79 -0
- package/lib/aws/compute/architecture.js +1 -1
- package/lib/aws/compute/aspects/require-imdsv2-aspect.d.ts +75 -0
- package/lib/aws/compute/aspects/require-imdsv2-aspect.js +106 -0
- package/lib/aws/compute/bastion-host.d.ts +172 -0
- package/lib/aws/compute/bastion-host.js +114 -0
- package/lib/aws/compute/chain.js +1 -1
- package/lib/aws/compute/cidr-splits.d.ts +49 -0
- package/lib/aws/compute/cidr-splits.js +59 -0
- package/lib/aws/compute/client-vpn-authorization-rule.d.ts +43 -0
- package/lib/aws/compute/client-vpn-authorization-rule.js +30 -0
- package/lib/aws/compute/client-vpn-endpoint-types.d.ts +62 -0
- package/lib/aws/compute/client-vpn-endpoint-types.js +25 -0
- package/lib/aws/compute/client-vpn-endpoint.d.ts +239 -0
- package/lib/aws/compute/client-vpn-endpoint.js +259 -0
- package/lib/aws/compute/client-vpn-route.d.ts +67 -0
- package/lib/aws/compute/client-vpn-route.js +57 -0
- package/lib/aws/compute/condition.js +1 -1
- package/lib/aws/compute/connections.d.ts +137 -0
- package/lib/aws/compute/connections.js +208 -0
- package/lib/aws/compute/ec2-augmentations.generated.d.ts +53 -0
- package/lib/aws/compute/ec2-augmentations.generated.js +35 -0
- package/lib/aws/compute/ec2-canned-metrics.generated.d.ts +555 -0
- package/lib/aws/compute/ec2-canned-metrics.generated.js +681 -0
- package/lib/aws/compute/ec2-util-v2.d.ts +141 -0
- package/lib/aws/compute/ec2-util-v2.js +286 -0
- package/lib/aws/compute/ec2-util.d.ts +52 -0
- package/lib/aws/compute/ec2-util.js +138 -0
- package/lib/aws/compute/elasticloadbalancing-canned-metrics.generated.d.ts +176 -0
- package/lib/aws/compute/elasticloadbalancing-canned-metrics.generated.js +119 -0
- package/lib/aws/compute/elasticloadbalancingv2-canned-metrics.generated.d.ts +860 -0
- package/lib/aws/compute/elasticloadbalancingv2-canned-metrics.generated.js +597 -0
- package/lib/aws/compute/event-invoke-config.js +1 -1
- package/lib/aws/compute/event-source-filter.js +2 -2
- package/lib/aws/compute/event-source-mapping.js +1 -1
- package/lib/aws/compute/event-sources/s3-onfailure-destination.js +1 -1
- package/lib/aws/compute/event-sources/s3.js +1 -1
- package/lib/aws/compute/event-sources/sqs-dlq.js +1 -1
- package/lib/aws/compute/event-sources/sqs.js +1 -1
- package/lib/aws/compute/fields.js +4 -4
- package/lib/aws/compute/function-alias.js +1 -1
- package/lib/aws/compute/function-base.js +2 -2
- package/lib/aws/compute/function-destinations/event-bridge.js +1 -1
- package/lib/aws/compute/function-destinations/function.js +1 -1
- package/lib/aws/compute/function-destinations/sqs.js +1 -1
- package/lib/aws/compute/function-nodejs.js +1 -1
- package/lib/aws/compute/function-url.js +1 -1
- package/lib/aws/compute/function-vpc-config.generated.d.ts +3 -3
- package/lib/aws/compute/function-vpc-config.generated.js +1 -1
- package/lib/aws/compute/function.d.ts +1 -1
- package/lib/aws/compute/function.js +5 -5
- package/lib/aws/compute/index-alpha.d.ts +5 -0
- package/lib/aws/compute/index-alpha.js +22 -0
- package/lib/aws/compute/index.d.ts +60 -0
- package/lib/aws/compute/index.js +70 -2
- package/lib/aws/compute/instance-types.d.ts +1354 -0
- package/lib/aws/compute/instance-types.js +1683 -0
- package/lib/aws/compute/instance.d.ts +436 -0
- package/lib/aws/compute/instance.js +262 -0
- package/lib/aws/compute/ip-addresses.d.ts +249 -0
- package/lib/aws/compute/ip-addresses.js +248 -0
- package/lib/aws/compute/ipam.d.ts +309 -0
- package/lib/aws/compute/ipam.js +306 -0
- package/lib/aws/compute/key-pair.d.ts +178 -0
- package/lib/aws/compute/key-pair.js +194 -0
- package/lib/aws/compute/lambda-augmentations.generated.d.ts +65 -0
- package/lib/aws/compute/lambda-augmentations.generated.js +41 -0
- package/lib/aws/compute/lambda-canned-metrics.generated.d.ts +316 -0
- package/lib/aws/compute/lambda-canned-metrics.generated.js +119 -0
- package/lib/aws/compute/launch-template.d.ts +540 -0
- package/lib/aws/compute/launch-template.js +468 -0
- package/lib/aws/compute/lb-shared/access-logs-accounts.d.ts +7 -0
- package/lib/aws/compute/lb-shared/access-logs-accounts.js +46 -0
- package/lib/aws/compute/lb-shared/base-listener.d.ts +113 -0
- package/lib/aws/compute/lb-shared/base-listener.js +181 -0
- package/lib/aws/compute/lb-shared/base-load-balancer.d.ts +212 -0
- package/lib/aws/compute/lb-shared/base-load-balancer.js +290 -0
- package/lib/aws/compute/lb-shared/base-target-group.d.ts +382 -0
- package/lib/aws/compute/lb-shared/base-target-group.js +364 -0
- package/lib/aws/compute/lb-shared/enums.d.ts +282 -0
- package/lib/aws/compute/lb-shared/enums.js +301 -0
- package/lib/aws/compute/lb-shared/grid-lookup-types.d.ts +42 -0
- package/lib/aws/compute/lb-shared/grid-lookup-types.js +53 -0
- package/lib/aws/compute/lb-shared/imported.d.ts +24 -0
- package/lib/aws/compute/lb-shared/imported.js +27 -0
- package/lib/aws/compute/lb-shared/lb-listener-config.generated.d.ts +194 -0
- package/lib/aws/compute/lb-shared/lb-listener-config.generated.js +3 -0
- package/lib/aws/compute/lb-shared/lb-target-group-attachment-config.generated.d.ts +56 -0
- package/lib/aws/compute/lb-shared/lb-target-group-attachment-config.generated.js +3 -0
- package/lib/aws/compute/lb-shared/listener-action.d.ts +14 -0
- package/lib/aws/compute/lb-shared/listener-action.js +4 -0
- package/lib/aws/compute/lb-shared/listener-certificate.d.ts +28 -0
- package/lib/aws/compute/lb-shared/listener-certificate.js +29 -0
- package/lib/aws/compute/lb-shared/load-balancer-targets.d.ts +93 -0
- package/lib/aws/compute/lb-shared/load-balancer-targets.js +127 -0
- package/lib/aws/compute/lb-shared/util.d.ts +113 -0
- package/lib/aws/compute/lb-shared/util.js +264 -0
- package/lib/aws/compute/lb-targets/alb-target.d.ts +67 -0
- package/lib/aws/compute/lb-targets/alb-target.js +100 -0
- package/lib/aws/compute/lb-targets/index.d.ts +4 -0
- package/lib/aws/compute/lb-targets/index.js +22 -0
- package/lib/aws/compute/lb-targets/instance-target.d.ts +42 -0
- package/lib/aws/compute/lb-targets/instance-target.js +67 -0
- package/lib/aws/compute/lb-targets/ip-target.d.ts +55 -0
- package/lib/aws/compute/lb-targets/ip-target.js +79 -0
- package/lib/aws/compute/lb-targets/lambda-target.d.ts +25 -0
- package/lib/aws/compute/lb-targets/lambda-target.js +50 -0
- package/lib/aws/compute/load-balancer.d.ts +336 -0
- package/lib/aws/compute/load-balancer.js +287 -0
- package/lib/aws/compute/machine-image/amazon-linux-2022.d.ts +63 -0
- package/lib/aws/compute/machine-image/amazon-linux-2022.js +84 -0
- package/lib/aws/compute/machine-image/amazon-linux-2023.d.ts +63 -0
- package/lib/aws/compute/machine-image/amazon-linux-2023.js +84 -0
- package/lib/aws/compute/machine-image/amazon-linux2.d.ts +76 -0
- package/lib/aws/compute/machine-image/amazon-linux2.js +87 -0
- package/lib/aws/compute/machine-image/common.d.ts +181 -0
- package/lib/aws/compute/machine-image/common.js +122 -0
- package/lib/aws/compute/machine-image/index.d.ts +5 -0
- package/lib/aws/compute/machine-image/index.js +22 -0
- package/lib/aws/compute/machine-image/machine-image.d.ts +463 -0
- package/lib/aws/compute/machine-image/machine-image.js +566 -0
- package/lib/aws/compute/machine-image/utils.d.ts +2 -0
- package/lib/aws/compute/machine-image/utils.js +17 -0
- package/lib/aws/compute/nat.d.ts +325 -0
- package/lib/aws/compute/nat.js +455 -0
- package/lib/aws/compute/network-acl-types.d.ts +152 -0
- package/lib/aws/compute/network-acl-types.js +156 -0
- package/lib/aws/compute/network-acl.d.ts +285 -0
- package/lib/aws/compute/network-acl.js +207 -0
- package/lib/aws/compute/network-util.d.ts +116 -0
- package/lib/aws/compute/network-util.js +241 -0
- package/lib/aws/compute/nlb/network-listener-action.d.ts +92 -0
- package/lib/aws/compute/nlb/network-listener-action.js +146 -0
- package/lib/aws/compute/nlb/network-listener-certificate.d.ts +24 -0
- package/lib/aws/compute/nlb/network-listener-certificate.js +25 -0
- package/lib/aws/compute/nlb/network-listener.d.ts +248 -0
- package/lib/aws/compute/nlb/network-listener.js +217 -0
- package/lib/aws/compute/nlb/network-load-balancer.d.ts +315 -0
- package/lib/aws/compute/nlb/network-load-balancer.js +360 -0
- package/lib/aws/compute/nlb/network-target-group.d.ts +153 -0
- package/lib/aws/compute/nlb/network-target-group.js +223 -0
- package/lib/aws/compute/peer.d.ts +64 -0
- package/lib/aws/compute/peer.js +235 -0
- package/lib/aws/compute/placement-group.d.ts +161 -0
- package/lib/aws/compute/placement-group.js +133 -0
- package/lib/aws/compute/port.d.ts +287 -0
- package/lib/aws/compute/port.js +390 -0
- package/lib/aws/compute/prefix-list.d.ts +131 -0
- package/lib/aws/compute/prefix-list.js +114 -0
- package/lib/aws/compute/private/context-stub.d.ts +7 -0
- package/lib/aws/compute/private/context-stub.js +43 -0
- package/lib/aws/compute/private/ebs-util.d.ts +14 -0
- package/lib/aws/compute/private/ebs-util.js +145 -0
- package/lib/aws/compute/private/intrinstics.js +2 -1
- package/lib/aws/compute/private/json-path.js +8 -8
- package/lib/aws/compute/private/util.js +2 -3
- package/lib/aws/compute/route.d.ts +547 -0
- package/lib/aws/compute/route.js +469 -0
- package/lib/aws/compute/security-group.d.ts +414 -0
- package/lib/aws/compute/security-group.js +538 -0
- package/lib/aws/compute/state-graph.js +1 -1
- package/lib/aws/compute/state-machine-fragment.js +1 -1
- package/lib/aws/compute/state-machine.d.ts +2 -2
- package/lib/aws/compute/state-machine.js +14 -12
- package/lib/aws/compute/states/choice.js +1 -1
- package/lib/aws/compute/states/custom-state.js +1 -1
- package/lib/aws/compute/states/distributed-map/item-batcher.js +1 -1
- package/lib/aws/compute/states/distributed-map/item-reader.js +5 -5
- package/lib/aws/compute/states/distributed-map/result-writer.js +1 -1
- package/lib/aws/compute/states/distributed-map.js +1 -1
- package/lib/aws/compute/states/fail.js +1 -1
- package/lib/aws/compute/states/map-base.js +1 -1
- package/lib/aws/compute/states/map.js +1 -1
- package/lib/aws/compute/states/parallel.js +1 -1
- package/lib/aws/compute/states/pass.js +2 -2
- package/lib/aws/compute/states/state.js +5 -5
- package/lib/aws/compute/states/succeed.js +1 -1
- package/lib/aws/compute/states/task-base.js +2 -2
- package/lib/aws/compute/states/task.js +1 -1
- package/lib/aws/compute/states/wait.js +2 -2
- package/lib/aws/compute/stepfunctions-canned-metrics.generated.d.ts +83 -0
- package/lib/aws/compute/stepfunctions-canned-metrics.generated.js +127 -0
- package/lib/aws/compute/subnet-v2.d.ts +213 -0
- package/lib/aws/compute/subnet-v2.js +405 -0
- package/lib/aws/compute/subnet.d.ts +37 -0
- package/lib/aws/compute/subnet.js +181 -0
- package/lib/aws/compute/task-credentials.js +1 -1
- package/lib/aws/compute/task-input.js +1 -1
- package/lib/aws/compute/tasks/aws-sdk/call-aws-service.js +1 -1
- package/lib/aws/compute/tasks/eventbridge/put-events.js +1 -1
- package/lib/aws/compute/tasks/http/invoke.js +1 -1
- package/lib/aws/compute/tasks/lambda/invoke.js +1 -1
- package/lib/aws/compute/tasks/private/task-utils.js +3 -4
- package/lib/aws/compute/tasks/resource-arn-suffix.js +2 -3
- package/lib/aws/compute/tasks/sqs/send-message.js +1 -1
- package/lib/aws/compute/tasks/stepfunctions/invoke-activity.js +1 -1
- package/lib/aws/compute/tasks/stepfunctions/start-execution.js +1 -1
- package/lib/aws/compute/types.js +2 -2
- package/lib/aws/compute/user-data.d.ts +270 -0
- package/lib/aws/compute/user-data.js +487 -0
- package/lib/aws/compute/util.d.ts +1 -1
- package/lib/aws/compute/util.js +4 -5
- package/lib/aws/compute/volume.d.ts +480 -0
- package/lib/aws/compute/volume.js +426 -0
- package/lib/aws/compute/vpc-endpoint-service.d.ts +149 -0
- package/lib/aws/compute/vpc-endpoint-service.js +90 -0
- package/lib/aws/compute/vpc-endpoint.d.ts +742 -0
- package/lib/aws/compute/vpc-endpoint.js +811 -0
- package/lib/aws/compute/vpc-flow-logs.d.ts +551 -0
- package/lib/aws/compute/vpc-flow-logs.js +693 -0
- package/lib/aws/compute/vpc-lookup.d.ts +73 -0
- package/lib/aws/compute/vpc-lookup.js +3 -0
- package/lib/aws/compute/vpc-v2-base.d.ts +353 -0
- package/lib/aws/compute/vpc-v2-base.js +493 -0
- package/lib/aws/compute/vpc-v2.d.ts +385 -0
- package/lib/aws/compute/vpc-v2.js +408 -0
- package/lib/aws/compute/vpc.d.ts +1448 -0
- package/lib/aws/compute/vpc.js +1495 -0
- package/lib/aws/compute/vpn.d.ts +443 -0
- package/lib/aws/compute/vpn.js +397 -0
- package/lib/aws/compute/windows-versions.d.ts +418 -0
- package/lib/aws/compute/windows-versions.js +426 -0
- package/lib/aws/edge/certificate-base.d.ts +20 -0
- package/lib/aws/edge/certificate-base.js +28 -0
- package/lib/aws/edge/certificate.d.ts +23 -2
- package/lib/aws/edge/certificate.js +54 -4
- package/lib/aws/edge/distribution.js +3 -3
- package/lib/aws/edge/dns-alias-record-targets.js +2 -2
- package/lib/aws/edge/dns-record.js +16 -16
- package/lib/aws/edge/dns-zone.d.ts +20 -2
- package/lib/aws/edge/dns-zone.js +25 -10
- package/lib/aws/edge/function.js +2 -2
- package/lib/aws/edge/index.d.ts +1 -0
- package/lib/aws/edge/index.js +2 -1
- package/lib/aws/edge/key-value-store.js +4 -4
- package/lib/aws/edge/origin.js +7 -5
- package/lib/aws/edge/response-headers-policy.js +1 -1
- package/lib/aws/encryption/alias.js +1 -1
- package/lib/aws/encryption/key.js +1 -1
- package/lib/aws/encryption/via-service-principal.js +1 -1
- package/lib/aws/iam/grant.js +2 -2
- package/lib/aws/iam/index.d.ts +1 -0
- package/lib/aws/iam/index.js +2 -1
- package/lib/aws/iam/instance-profile.d.ts +155 -0
- package/lib/aws/iam/instance-profile.js +124 -0
- package/lib/aws/iam/managed-policy.js +1 -1
- package/lib/aws/iam/oidc-provider.js +1 -1
- package/lib/aws/iam/policy-document-config.generated.d.ts +8 -8
- package/lib/aws/iam/policy-document-config.generated.js +1 -1
- package/lib/aws/iam/policy-document.js +1 -1
- package/lib/aws/iam/policy-statement-props.generated.d.ts +8 -8
- package/lib/aws/iam/policy-statement-props.generated.js +1 -1
- package/lib/aws/iam/policy-statement.js +9 -9
- package/lib/aws/iam/policy.js +1 -1
- package/lib/aws/iam/principals.js +26 -26
- package/lib/aws/iam/private/assume-role-policy.js +2 -3
- package/lib/aws/iam/private/comparable-principal.js +2 -3
- package/lib/aws/iam/private/immutable-role.d.ts +2 -1
- package/lib/aws/iam/private/immutable-role.js +3 -3
- package/lib/aws/iam/private/imported-role.d.ts +1 -1
- package/lib/aws/iam/private/imported-role.js +3 -3
- package/lib/aws/iam/private/merge-statements.js +2 -3
- package/lib/aws/iam/private/util.js +4 -4
- package/lib/aws/iam/role.js +1 -1
- package/lib/aws/iam/saml-provider.d.ts +1 -1
- package/lib/aws/iam/saml-provider.js +6 -6
- package/lib/aws/iam/unknown-principal.js +1 -1
- package/lib/aws/iam/utils.js +2 -3
- package/lib/aws/index.d.ts +1 -0
- package/lib/aws/index.js +4 -1
- package/lib/aws/network/simple-ipv4-vpc.js +5 -5
- package/lib/aws/network/subnet-group.js +3 -3
- package/lib/aws/network/subnet.d.ts +1 -1
- package/lib/aws/network/subnet.js +7 -7
- package/lib/aws/notify/archive.js +3 -2
- package/lib/aws/notify/connection.js +5 -4
- package/lib/aws/notify/event-bus.js +5 -4
- package/lib/aws/notify/event-pattern.js +3 -3
- package/lib/aws/notify/index.js +3 -1
- package/lib/aws/notify/input.js +4 -3
- package/lib/aws/notify/kinesis-stream.js +3 -2
- package/lib/aws/notify/on-event-options.js +2 -1
- package/lib/aws/notify/queue-config.generated.d.ts +18 -11
- package/lib/aws/notify/queue-config.generated.js +1 -1
- package/lib/aws/notify/queue-policy.js +1 -1
- package/lib/aws/notify/queue.js +1 -1
- package/lib/aws/notify/resource-policy.js +1 -1
- package/lib/aws/notify/rule.js +3 -2
- package/lib/aws/notify/schedule.js +2 -2
- package/lib/aws/notify/sqs-augmentations.generated.d.ts +125 -0
- package/lib/aws/notify/sqs-augmentations.generated.js +74 -0
- package/lib/aws/notify/target.js +2 -1
- package/lib/aws/notify/targets/event-bus.js +1 -1
- package/lib/aws/notify/targets/function.js +1 -1
- package/lib/aws/notify/targets/log-group.js +2 -2
- package/lib/aws/notify/targets/sqs.js +1 -1
- package/lib/aws/notify/targets/state-machine.js +1 -1
- package/lib/aws/notify/targets/util.d.ts +1 -1
- package/lib/aws/notify/targets/util.js +10 -11
- package/lib/aws/notify/util.js +4 -4
- package/lib/aws/provider-config.generated.d.ts +33 -33
- package/lib/aws/provider-config.generated.js +1 -1
- package/lib/aws/storage/bucket-notifications.js +1 -1
- package/lib/aws/storage/bucket-policy.js +1 -1
- package/lib/aws/storage/bucket-source.js +1 -1
- package/lib/aws/storage/bucket.d.ts +298 -65
- package/lib/aws/storage/bucket.js +548 -225
- package/lib/aws/storage/cors-config.generated.d.ts +3 -3
- package/lib/aws/storage/cors-config.generated.js +1 -1
- package/lib/aws/storage/cors-rule-config.generated.d.ts +5 -5
- package/lib/aws/storage/cors-rule-config.generated.js +1 -1
- package/lib/aws/storage/index.d.ts +1 -0
- package/lib/aws/storage/index.js +2 -1
- package/lib/aws/storage/lifecycle-config.generated.d.ts +11 -11
- package/lib/aws/storage/lifecycle-config.generated.js +1 -1
- package/lib/aws/storage/notification-targets/function.js +6 -6
- package/lib/aws/storage/notification-targets/queue.js +1 -1
- package/lib/aws/storage/origin-access-identity.d.ts +1 -1
- package/lib/aws/storage/origin-access-identity.js +5 -4
- package/lib/aws/storage/parameter-util.d.ts +12 -0
- package/lib/aws/storage/parameter-util.js +65 -0
- package/lib/aws/storage/parameter.d.ts +526 -0
- package/lib/aws/storage/parameter.js +606 -0
- package/lib/aws/storage/s3-canned-metrics.generated.d.ts +22 -0
- package/lib/aws/storage/s3-canned-metrics.generated.js +23 -0
- package/lib/aws/storage/util.d.ts +25 -3
- package/lib/aws/storage/util.js +84 -17
- package/lib/aws/storage/website-config.generated.d.ts +5 -5
- package/lib/aws/storage/website-config.generated.js +1 -1
- package/lib/aws/util.js +2 -3
- package/lib/construct-base.d.ts +10 -1
- package/lib/construct-base.js +9 -6
- package/lib/duration.js +1 -1
- package/lib/expiration.d.ts +48 -0
- package/lib/expiration.js +68 -0
- package/lib/helpers-internal/index.d.ts +1 -0
- package/lib/helpers-internal/index.js +7 -0
- package/lib/index.d.ts +2 -0
- package/lib/index.js +3 -1
- package/lib/private/md5.d.ts +4 -0
- package/lib/private/md5.js +14 -0
- package/lib/private/unique-resource-name.js +3 -4
- package/lib/size.js +2 -2
- package/lib/stack-base.d.ts +4 -23
- package/lib/stack-base.js +9 -30
- package/lib/terra-func.d.ts +103 -0
- package/lib/terra-func.js +170 -0
- package/lib/token.js +5 -5
- package/package.json +15 -8
- package/bun.lockb +0 -0
|
@@ -0,0 +1,681 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.VPNMetrics = exports.TransitGatewayMetrics = exports.NATGatewayMetrics = exports.CWAgentMetrics = exports.EC2Metrics = exports.EBSMetrics = exports.EC2CapacityReservationsMetrics = void 0;
|
|
4
|
+
class EC2CapacityReservationsMetrics {
|
|
5
|
+
static instanceUtilizationAverage(dimensions) {
|
|
6
|
+
return {
|
|
7
|
+
"namespace": "AWS/EC2CapacityReservations",
|
|
8
|
+
"metricName": "InstanceUtilization",
|
|
9
|
+
"dimensionsMap": dimensions,
|
|
10
|
+
"statistic": "Average"
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
static usedInstanceCountAverage(dimensions) {
|
|
14
|
+
return {
|
|
15
|
+
"namespace": "AWS/EC2CapacityReservations",
|
|
16
|
+
"metricName": "UsedInstanceCount",
|
|
17
|
+
"dimensionsMap": dimensions,
|
|
18
|
+
"statistic": "Average"
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
static availableInstanceCountAverage(dimensions) {
|
|
22
|
+
return {
|
|
23
|
+
"namespace": "AWS/EC2CapacityReservations",
|
|
24
|
+
"metricName": "AvailableInstanceCount",
|
|
25
|
+
"dimensionsMap": dimensions,
|
|
26
|
+
"statistic": "Average"
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
static totalInstanceCountAverage(dimensions) {
|
|
30
|
+
return {
|
|
31
|
+
"namespace": "AWS/EC2CapacityReservations",
|
|
32
|
+
"metricName": "TotalInstanceCount",
|
|
33
|
+
"dimensionsMap": dimensions,
|
|
34
|
+
"statistic": "Average"
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
exports.EC2CapacityReservationsMetrics = EC2CapacityReservationsMetrics;
|
|
39
|
+
class EBSMetrics {
|
|
40
|
+
static volumeReadBytesSum(dimensions) {
|
|
41
|
+
return {
|
|
42
|
+
"namespace": "AWS/EBS",
|
|
43
|
+
"metricName": "VolumeReadBytes",
|
|
44
|
+
"dimensionsMap": dimensions,
|
|
45
|
+
"statistic": "Sum"
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
static volumeWriteBytesSum(dimensions) {
|
|
49
|
+
return {
|
|
50
|
+
"namespace": "AWS/EBS",
|
|
51
|
+
"metricName": "VolumeWriteBytes",
|
|
52
|
+
"dimensionsMap": dimensions,
|
|
53
|
+
"statistic": "Sum"
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
static volumeReadOpsSum(dimensions) {
|
|
57
|
+
return {
|
|
58
|
+
"namespace": "AWS/EBS",
|
|
59
|
+
"metricName": "VolumeReadOps",
|
|
60
|
+
"dimensionsMap": dimensions,
|
|
61
|
+
"statistic": "Sum"
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
static volumeTotalReadTimeAverage(dimensions) {
|
|
65
|
+
return {
|
|
66
|
+
"namespace": "AWS/EBS",
|
|
67
|
+
"metricName": "VolumeTotalReadTime",
|
|
68
|
+
"dimensionsMap": dimensions,
|
|
69
|
+
"statistic": "Average"
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
static volumeWriteOpsSum(dimensions) {
|
|
73
|
+
return {
|
|
74
|
+
"namespace": "AWS/EBS",
|
|
75
|
+
"metricName": "VolumeWriteOps",
|
|
76
|
+
"dimensionsMap": dimensions,
|
|
77
|
+
"statistic": "Sum"
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
static volumeTotalWriteTimeAverage(dimensions) {
|
|
81
|
+
return {
|
|
82
|
+
"namespace": "AWS/EBS",
|
|
83
|
+
"metricName": "VolumeTotalWriteTime",
|
|
84
|
+
"dimensionsMap": dimensions,
|
|
85
|
+
"statistic": "Average"
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
static volumeIdleTimeAverage(dimensions) {
|
|
89
|
+
return {
|
|
90
|
+
"namespace": "AWS/EBS",
|
|
91
|
+
"metricName": "VolumeIdleTime",
|
|
92
|
+
"dimensionsMap": dimensions,
|
|
93
|
+
"statistic": "Average"
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
static volumeQueueLengthAverage(dimensions) {
|
|
97
|
+
return {
|
|
98
|
+
"namespace": "AWS/EBS",
|
|
99
|
+
"metricName": "VolumeQueueLength",
|
|
100
|
+
"dimensionsMap": dimensions,
|
|
101
|
+
"statistic": "Average"
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
static burstBalanceAverage(dimensions) {
|
|
105
|
+
return {
|
|
106
|
+
"namespace": "AWS/EBS",
|
|
107
|
+
"metricName": "BurstBalance",
|
|
108
|
+
"dimensionsMap": dimensions,
|
|
109
|
+
"statistic": "Average"
|
|
110
|
+
};
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
exports.EBSMetrics = EBSMetrics;
|
|
114
|
+
class EC2Metrics {
|
|
115
|
+
static cpuCreditUsageAverage(dimensions) {
|
|
116
|
+
return {
|
|
117
|
+
"namespace": "AWS/EC2",
|
|
118
|
+
"metricName": "CPUCreditUsage",
|
|
119
|
+
"dimensionsMap": dimensions,
|
|
120
|
+
"statistic": "Average"
|
|
121
|
+
};
|
|
122
|
+
}
|
|
123
|
+
static cpuCreditBalanceAverage(dimensions) {
|
|
124
|
+
return {
|
|
125
|
+
"namespace": "AWS/EC2",
|
|
126
|
+
"metricName": "CPUCreditBalance",
|
|
127
|
+
"dimensionsMap": dimensions,
|
|
128
|
+
"statistic": "Average"
|
|
129
|
+
};
|
|
130
|
+
}
|
|
131
|
+
static cpuSurplusCreditBalanceAverage(dimensions) {
|
|
132
|
+
return {
|
|
133
|
+
"namespace": "AWS/EC2",
|
|
134
|
+
"metricName": "CPUSurplusCreditBalance",
|
|
135
|
+
"dimensionsMap": dimensions,
|
|
136
|
+
"statistic": "Average"
|
|
137
|
+
};
|
|
138
|
+
}
|
|
139
|
+
static cpuSurplusCreditsChargedAverage(dimensions) {
|
|
140
|
+
return {
|
|
141
|
+
"namespace": "AWS/EC2",
|
|
142
|
+
"metricName": "CPUSurplusCreditsCharged",
|
|
143
|
+
"dimensionsMap": dimensions,
|
|
144
|
+
"statistic": "Average"
|
|
145
|
+
};
|
|
146
|
+
}
|
|
147
|
+
static cpuUtilizationAverage(dimensions) {
|
|
148
|
+
return {
|
|
149
|
+
"namespace": "AWS/EC2",
|
|
150
|
+
"metricName": "CPUUtilization",
|
|
151
|
+
"dimensionsMap": dimensions,
|
|
152
|
+
"statistic": "Average"
|
|
153
|
+
};
|
|
154
|
+
}
|
|
155
|
+
static diskReadBytesAverage(dimensions) {
|
|
156
|
+
return {
|
|
157
|
+
"namespace": "AWS/EC2",
|
|
158
|
+
"metricName": "DiskReadBytes",
|
|
159
|
+
"dimensionsMap": dimensions,
|
|
160
|
+
"statistic": "Average"
|
|
161
|
+
};
|
|
162
|
+
}
|
|
163
|
+
static diskReadOpsAverage(dimensions) {
|
|
164
|
+
return {
|
|
165
|
+
"namespace": "AWS/EC2",
|
|
166
|
+
"metricName": "DiskReadOps",
|
|
167
|
+
"dimensionsMap": dimensions,
|
|
168
|
+
"statistic": "Average"
|
|
169
|
+
};
|
|
170
|
+
}
|
|
171
|
+
static diskWriteBytesAverage(dimensions) {
|
|
172
|
+
return {
|
|
173
|
+
"namespace": "AWS/EC2",
|
|
174
|
+
"metricName": "DiskWriteBytes",
|
|
175
|
+
"dimensionsMap": dimensions,
|
|
176
|
+
"statistic": "Average"
|
|
177
|
+
};
|
|
178
|
+
}
|
|
179
|
+
static diskWriteOpsAverage(dimensions) {
|
|
180
|
+
return {
|
|
181
|
+
"namespace": "AWS/EC2",
|
|
182
|
+
"metricName": "DiskWriteOps",
|
|
183
|
+
"dimensionsMap": dimensions,
|
|
184
|
+
"statistic": "Average"
|
|
185
|
+
};
|
|
186
|
+
}
|
|
187
|
+
static metadataNoTokenSum(dimensions) {
|
|
188
|
+
return {
|
|
189
|
+
"namespace": "AWS/EC2",
|
|
190
|
+
"metricName": "MetadataNoToken",
|
|
191
|
+
"dimensionsMap": dimensions,
|
|
192
|
+
"statistic": "Sum"
|
|
193
|
+
};
|
|
194
|
+
}
|
|
195
|
+
static networkInAverage(dimensions) {
|
|
196
|
+
return {
|
|
197
|
+
"namespace": "AWS/EC2",
|
|
198
|
+
"metricName": "NetworkIn",
|
|
199
|
+
"dimensionsMap": dimensions,
|
|
200
|
+
"statistic": "Average"
|
|
201
|
+
};
|
|
202
|
+
}
|
|
203
|
+
static networkOutAverage(dimensions) {
|
|
204
|
+
return {
|
|
205
|
+
"namespace": "AWS/EC2",
|
|
206
|
+
"metricName": "NetworkOut",
|
|
207
|
+
"dimensionsMap": dimensions,
|
|
208
|
+
"statistic": "Average"
|
|
209
|
+
};
|
|
210
|
+
}
|
|
211
|
+
static networkPacketsInAverage(dimensions) {
|
|
212
|
+
return {
|
|
213
|
+
"namespace": "AWS/EC2",
|
|
214
|
+
"metricName": "NetworkPacketsIn",
|
|
215
|
+
"dimensionsMap": dimensions,
|
|
216
|
+
"statistic": "Average"
|
|
217
|
+
};
|
|
218
|
+
}
|
|
219
|
+
static networkPacketsOutAverage(dimensions) {
|
|
220
|
+
return {
|
|
221
|
+
"namespace": "AWS/EC2",
|
|
222
|
+
"metricName": "NetworkPacketsOut",
|
|
223
|
+
"dimensionsMap": dimensions,
|
|
224
|
+
"statistic": "Average"
|
|
225
|
+
};
|
|
226
|
+
}
|
|
227
|
+
static statusCheckFailedSum(dimensions) {
|
|
228
|
+
return {
|
|
229
|
+
"namespace": "AWS/EC2",
|
|
230
|
+
"metricName": "StatusCheckFailed",
|
|
231
|
+
"dimensionsMap": dimensions,
|
|
232
|
+
"statistic": "Sum"
|
|
233
|
+
};
|
|
234
|
+
}
|
|
235
|
+
static statusCheckFailedInstanceSum(dimensions) {
|
|
236
|
+
return {
|
|
237
|
+
"namespace": "AWS/EC2",
|
|
238
|
+
"metricName": "StatusCheckFailed_Instance",
|
|
239
|
+
"dimensionsMap": dimensions,
|
|
240
|
+
"statistic": "Sum"
|
|
241
|
+
};
|
|
242
|
+
}
|
|
243
|
+
static statusCheckFailedSystemSum(dimensions) {
|
|
244
|
+
return {
|
|
245
|
+
"namespace": "AWS/EC2",
|
|
246
|
+
"metricName": "StatusCheckFailed_System",
|
|
247
|
+
"dimensionsMap": dimensions,
|
|
248
|
+
"statistic": "Sum"
|
|
249
|
+
};
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
exports.EC2Metrics = EC2Metrics;
|
|
253
|
+
class CWAgentMetrics {
|
|
254
|
+
static cpuUsageIdleAverage(dimensions) {
|
|
255
|
+
return {
|
|
256
|
+
"namespace": "CWAgent",
|
|
257
|
+
"metricName": "cpu_usage_idle",
|
|
258
|
+
"dimensionsMap": dimensions,
|
|
259
|
+
"statistic": "Average"
|
|
260
|
+
};
|
|
261
|
+
}
|
|
262
|
+
static cpuUsageIowaitAverage(dimensions) {
|
|
263
|
+
return {
|
|
264
|
+
"namespace": "CWAgent",
|
|
265
|
+
"metricName": "cpu_usage_iowait",
|
|
266
|
+
"dimensionsMap": dimensions,
|
|
267
|
+
"statistic": "Average"
|
|
268
|
+
};
|
|
269
|
+
}
|
|
270
|
+
static cpuUsageStealAverage(dimensions) {
|
|
271
|
+
return {
|
|
272
|
+
"namespace": "CWAgent",
|
|
273
|
+
"metricName": "cpu_usage_steal",
|
|
274
|
+
"dimensionsMap": dimensions,
|
|
275
|
+
"statistic": "Average"
|
|
276
|
+
};
|
|
277
|
+
}
|
|
278
|
+
static cpuUsageSystemAverage(dimensions) {
|
|
279
|
+
return {
|
|
280
|
+
"namespace": "CWAgent",
|
|
281
|
+
"metricName": "cpu_usage_system",
|
|
282
|
+
"dimensionsMap": dimensions,
|
|
283
|
+
"statistic": "Average"
|
|
284
|
+
};
|
|
285
|
+
}
|
|
286
|
+
static cpuUsageUserAverage(dimensions) {
|
|
287
|
+
return {
|
|
288
|
+
"namespace": "CWAgent",
|
|
289
|
+
"metricName": "cpu_usage_user",
|
|
290
|
+
"dimensionsMap": dimensions,
|
|
291
|
+
"statistic": "Average"
|
|
292
|
+
};
|
|
293
|
+
}
|
|
294
|
+
static diskInodesFreeSum(dimensions) {
|
|
295
|
+
return {
|
|
296
|
+
"namespace": "CWAgent",
|
|
297
|
+
"metricName": "disk_inodes_free",
|
|
298
|
+
"dimensionsMap": dimensions,
|
|
299
|
+
"statistic": "Sum"
|
|
300
|
+
};
|
|
301
|
+
}
|
|
302
|
+
static diskInodesTotalSum(dimensions) {
|
|
303
|
+
return {
|
|
304
|
+
"namespace": "CWAgent",
|
|
305
|
+
"metricName": "disk_inodes_total",
|
|
306
|
+
"dimensionsMap": dimensions,
|
|
307
|
+
"statistic": "Sum"
|
|
308
|
+
};
|
|
309
|
+
}
|
|
310
|
+
static diskInodesUsedSum(dimensions) {
|
|
311
|
+
return {
|
|
312
|
+
"namespace": "CWAgent",
|
|
313
|
+
"metricName": "disk_inodes_used",
|
|
314
|
+
"dimensionsMap": dimensions,
|
|
315
|
+
"statistic": "Sum"
|
|
316
|
+
};
|
|
317
|
+
}
|
|
318
|
+
static diskUsedPercentAverage(dimensions) {
|
|
319
|
+
return {
|
|
320
|
+
"namespace": "CWAgent",
|
|
321
|
+
"metricName": "disk_used_percent",
|
|
322
|
+
"dimensionsMap": dimensions,
|
|
323
|
+
"statistic": "Average"
|
|
324
|
+
};
|
|
325
|
+
}
|
|
326
|
+
static diskioIoTimeAverage(dimensions) {
|
|
327
|
+
return {
|
|
328
|
+
"namespace": "CWAgent",
|
|
329
|
+
"metricName": "diskio_io_time",
|
|
330
|
+
"dimensionsMap": dimensions,
|
|
331
|
+
"statistic": "Average"
|
|
332
|
+
};
|
|
333
|
+
}
|
|
334
|
+
static diskioReadBytesAverage(dimensions) {
|
|
335
|
+
return {
|
|
336
|
+
"namespace": "CWAgent",
|
|
337
|
+
"metricName": "diskio_read_bytes",
|
|
338
|
+
"dimensionsMap": dimensions,
|
|
339
|
+
"statistic": "Average"
|
|
340
|
+
};
|
|
341
|
+
}
|
|
342
|
+
static diskioReadsAverage(dimensions) {
|
|
343
|
+
return {
|
|
344
|
+
"namespace": "CWAgent",
|
|
345
|
+
"metricName": "diskio_reads",
|
|
346
|
+
"dimensionsMap": dimensions,
|
|
347
|
+
"statistic": "Average"
|
|
348
|
+
};
|
|
349
|
+
}
|
|
350
|
+
static diskioWriteBytesAverage(dimensions) {
|
|
351
|
+
return {
|
|
352
|
+
"namespace": "CWAgent",
|
|
353
|
+
"metricName": "diskio_write_bytes",
|
|
354
|
+
"dimensionsMap": dimensions,
|
|
355
|
+
"statistic": "Average"
|
|
356
|
+
};
|
|
357
|
+
}
|
|
358
|
+
static diskioWritesAverage(dimensions) {
|
|
359
|
+
return {
|
|
360
|
+
"namespace": "CWAgent",
|
|
361
|
+
"metricName": "diskio_writes",
|
|
362
|
+
"dimensionsMap": dimensions,
|
|
363
|
+
"statistic": "Average"
|
|
364
|
+
};
|
|
365
|
+
}
|
|
366
|
+
static memCachedAverage(dimensions) {
|
|
367
|
+
return {
|
|
368
|
+
"namespace": "CWAgent",
|
|
369
|
+
"metricName": "mem_cached",
|
|
370
|
+
"dimensionsMap": dimensions,
|
|
371
|
+
"statistic": "Average"
|
|
372
|
+
};
|
|
373
|
+
}
|
|
374
|
+
static memTotalAverage(dimensions) {
|
|
375
|
+
return {
|
|
376
|
+
"namespace": "CWAgent",
|
|
377
|
+
"metricName": "mem_total",
|
|
378
|
+
"dimensionsMap": dimensions,
|
|
379
|
+
"statistic": "Average"
|
|
380
|
+
};
|
|
381
|
+
}
|
|
382
|
+
static memUsedAverage(dimensions) {
|
|
383
|
+
return {
|
|
384
|
+
"namespace": "CWAgent",
|
|
385
|
+
"metricName": "mem_used",
|
|
386
|
+
"dimensionsMap": dimensions,
|
|
387
|
+
"statistic": "Average"
|
|
388
|
+
};
|
|
389
|
+
}
|
|
390
|
+
static memUsedPercentAverage(dimensions) {
|
|
391
|
+
return {
|
|
392
|
+
"namespace": "CWAgent",
|
|
393
|
+
"metricName": "mem_used_percent",
|
|
394
|
+
"dimensionsMap": dimensions,
|
|
395
|
+
"statistic": "Average"
|
|
396
|
+
};
|
|
397
|
+
}
|
|
398
|
+
static netstatTcpEstablishedSum(dimensions) {
|
|
399
|
+
return {
|
|
400
|
+
"namespace": "CWAgent",
|
|
401
|
+
"metricName": "netstat_tcp_established",
|
|
402
|
+
"dimensionsMap": dimensions,
|
|
403
|
+
"statistic": "Sum"
|
|
404
|
+
};
|
|
405
|
+
}
|
|
406
|
+
static netstatTcpTimeWaitSum(dimensions) {
|
|
407
|
+
return {
|
|
408
|
+
"namespace": "CWAgent",
|
|
409
|
+
"metricName": "netstat_tcp_time_wait",
|
|
410
|
+
"dimensionsMap": dimensions,
|
|
411
|
+
"statistic": "Sum"
|
|
412
|
+
};
|
|
413
|
+
}
|
|
414
|
+
static swapUsedPercentAverage(dimensions) {
|
|
415
|
+
return {
|
|
416
|
+
"namespace": "CWAgent",
|
|
417
|
+
"metricName": "swap_used_percent",
|
|
418
|
+
"dimensionsMap": dimensions,
|
|
419
|
+
"statistic": "Average"
|
|
420
|
+
};
|
|
421
|
+
}
|
|
422
|
+
static tcPv4ConnectionsEstablishedSum(dimensions) {
|
|
423
|
+
return {
|
|
424
|
+
"namespace": "CWAgent",
|
|
425
|
+
"metricName": "TCPv4 Connections Established",
|
|
426
|
+
"dimensionsMap": dimensions,
|
|
427
|
+
"statistic": "Sum"
|
|
428
|
+
};
|
|
429
|
+
}
|
|
430
|
+
static tcPv6ConnectionsEstablishedSum(dimensions) {
|
|
431
|
+
return {
|
|
432
|
+
"namespace": "CWAgent",
|
|
433
|
+
"metricName": "TCPv6 Connections Established",
|
|
434
|
+
"dimensionsMap": dimensions,
|
|
435
|
+
"statistic": "Sum"
|
|
436
|
+
};
|
|
437
|
+
}
|
|
438
|
+
static memoryCommittedBytesInUseAverage(dimensions) {
|
|
439
|
+
return {
|
|
440
|
+
"namespace": "CWAgent",
|
|
441
|
+
"metricName": "Memory % Committed Bytes In Use",
|
|
442
|
+
"dimensionsMap": dimensions,
|
|
443
|
+
"statistic": "Average"
|
|
444
|
+
};
|
|
445
|
+
}
|
|
446
|
+
static processorIdleTimeAverage(dimensions) {
|
|
447
|
+
return {
|
|
448
|
+
"namespace": "CWAgent",
|
|
449
|
+
"metricName": "Processor % Idle Time",
|
|
450
|
+
"dimensionsMap": dimensions,
|
|
451
|
+
"statistic": "Average"
|
|
452
|
+
};
|
|
453
|
+
}
|
|
454
|
+
static processorInterruptTimeAverage(dimensions) {
|
|
455
|
+
return {
|
|
456
|
+
"namespace": "CWAgent",
|
|
457
|
+
"metricName": "Processor % Interrupt Time",
|
|
458
|
+
"dimensionsMap": dimensions,
|
|
459
|
+
"statistic": "Average"
|
|
460
|
+
};
|
|
461
|
+
}
|
|
462
|
+
static processorUserTimeAverage(dimensions) {
|
|
463
|
+
return {
|
|
464
|
+
"namespace": "CWAgent",
|
|
465
|
+
"metricName": "Processor % User Time",
|
|
466
|
+
"dimensionsMap": dimensions,
|
|
467
|
+
"statistic": "Average"
|
|
468
|
+
};
|
|
469
|
+
}
|
|
470
|
+
static logicalDiskFreeSpaceAverage(dimensions) {
|
|
471
|
+
return {
|
|
472
|
+
"namespace": "CWAgent",
|
|
473
|
+
"metricName": "LogicalDisk % Free Space",
|
|
474
|
+
"dimensionsMap": dimensions,
|
|
475
|
+
"statistic": "Average"
|
|
476
|
+
};
|
|
477
|
+
}
|
|
478
|
+
static pagingFileUsageAverage(dimensions) {
|
|
479
|
+
return {
|
|
480
|
+
"namespace": "CWAgent",
|
|
481
|
+
"metricName": "Paging File % Usage",
|
|
482
|
+
"dimensionsMap": dimensions,
|
|
483
|
+
"statistic": "Average"
|
|
484
|
+
};
|
|
485
|
+
}
|
|
486
|
+
}
|
|
487
|
+
exports.CWAgentMetrics = CWAgentMetrics;
|
|
488
|
+
class NATGatewayMetrics {
|
|
489
|
+
static activeConnectionCountMaximum(dimensions) {
|
|
490
|
+
return {
|
|
491
|
+
"namespace": "AWS/NATGateway",
|
|
492
|
+
"metricName": "ActiveConnectionCount",
|
|
493
|
+
"dimensionsMap": dimensions,
|
|
494
|
+
"statistic": "Maximum"
|
|
495
|
+
};
|
|
496
|
+
}
|
|
497
|
+
static packetsDropCountSum(dimensions) {
|
|
498
|
+
return {
|
|
499
|
+
"namespace": "AWS/NATGateway",
|
|
500
|
+
"metricName": "PacketsDropCount",
|
|
501
|
+
"dimensionsMap": dimensions,
|
|
502
|
+
"statistic": "Sum"
|
|
503
|
+
};
|
|
504
|
+
}
|
|
505
|
+
static bytesInFromDestinationSum(dimensions) {
|
|
506
|
+
return {
|
|
507
|
+
"namespace": "AWS/NATGateway",
|
|
508
|
+
"metricName": "BytesInFromDestination",
|
|
509
|
+
"dimensionsMap": dimensions,
|
|
510
|
+
"statistic": "Sum"
|
|
511
|
+
};
|
|
512
|
+
}
|
|
513
|
+
static bytesInFromSourceSum(dimensions) {
|
|
514
|
+
return {
|
|
515
|
+
"namespace": "AWS/NATGateway",
|
|
516
|
+
"metricName": "BytesInFromSource",
|
|
517
|
+
"dimensionsMap": dimensions,
|
|
518
|
+
"statistic": "Sum"
|
|
519
|
+
};
|
|
520
|
+
}
|
|
521
|
+
static bytesOutToDestinationSum(dimensions) {
|
|
522
|
+
return {
|
|
523
|
+
"namespace": "AWS/NATGateway",
|
|
524
|
+
"metricName": "BytesOutToDestination",
|
|
525
|
+
"dimensionsMap": dimensions,
|
|
526
|
+
"statistic": "Sum"
|
|
527
|
+
};
|
|
528
|
+
}
|
|
529
|
+
static bytesOutToSourceSum(dimensions) {
|
|
530
|
+
return {
|
|
531
|
+
"namespace": "AWS/NATGateway",
|
|
532
|
+
"metricName": "BytesOutToSource",
|
|
533
|
+
"dimensionsMap": dimensions,
|
|
534
|
+
"statistic": "Sum"
|
|
535
|
+
};
|
|
536
|
+
}
|
|
537
|
+
static connectionAttemptCountSum(dimensions) {
|
|
538
|
+
return {
|
|
539
|
+
"namespace": "AWS/NATGateway",
|
|
540
|
+
"metricName": "ConnectionAttemptCount",
|
|
541
|
+
"dimensionsMap": dimensions,
|
|
542
|
+
"statistic": "Sum"
|
|
543
|
+
};
|
|
544
|
+
}
|
|
545
|
+
static connectionEstablishedCountSum(dimensions) {
|
|
546
|
+
return {
|
|
547
|
+
"namespace": "AWS/NATGateway",
|
|
548
|
+
"metricName": "ConnectionEstablishedCount",
|
|
549
|
+
"dimensionsMap": dimensions,
|
|
550
|
+
"statistic": "Sum"
|
|
551
|
+
};
|
|
552
|
+
}
|
|
553
|
+
static errorPortAllocationSum(dimensions) {
|
|
554
|
+
return {
|
|
555
|
+
"namespace": "AWS/NATGateway",
|
|
556
|
+
"metricName": "ErrorPortAllocation",
|
|
557
|
+
"dimensionsMap": dimensions,
|
|
558
|
+
"statistic": "Sum"
|
|
559
|
+
};
|
|
560
|
+
}
|
|
561
|
+
static idleTimeoutCountSum(dimensions) {
|
|
562
|
+
return {
|
|
563
|
+
"namespace": "AWS/NATGateway",
|
|
564
|
+
"metricName": "IdleTimeoutCount",
|
|
565
|
+
"dimensionsMap": dimensions,
|
|
566
|
+
"statistic": "Sum"
|
|
567
|
+
};
|
|
568
|
+
}
|
|
569
|
+
static packetsInFromDestinationSum(dimensions) {
|
|
570
|
+
return {
|
|
571
|
+
"namespace": "AWS/NATGateway",
|
|
572
|
+
"metricName": "PacketsInFromDestination",
|
|
573
|
+
"dimensionsMap": dimensions,
|
|
574
|
+
"statistic": "Sum"
|
|
575
|
+
};
|
|
576
|
+
}
|
|
577
|
+
static packetsInFromSourceSum(dimensions) {
|
|
578
|
+
return {
|
|
579
|
+
"namespace": "AWS/NATGateway",
|
|
580
|
+
"metricName": "PacketsInFromSource",
|
|
581
|
+
"dimensionsMap": dimensions,
|
|
582
|
+
"statistic": "Sum"
|
|
583
|
+
};
|
|
584
|
+
}
|
|
585
|
+
static packetsOutToDestinationSum(dimensions) {
|
|
586
|
+
return {
|
|
587
|
+
"namespace": "AWS/NATGateway",
|
|
588
|
+
"metricName": "PacketsOutToDestination",
|
|
589
|
+
"dimensionsMap": dimensions,
|
|
590
|
+
"statistic": "Sum"
|
|
591
|
+
};
|
|
592
|
+
}
|
|
593
|
+
static packetsOutToSourceSum(dimensions) {
|
|
594
|
+
return {
|
|
595
|
+
"namespace": "AWS/NATGateway",
|
|
596
|
+
"metricName": "PacketsOutToSource",
|
|
597
|
+
"dimensionsMap": dimensions,
|
|
598
|
+
"statistic": "Sum"
|
|
599
|
+
};
|
|
600
|
+
}
|
|
601
|
+
}
|
|
602
|
+
exports.NATGatewayMetrics = NATGatewayMetrics;
|
|
603
|
+
class TransitGatewayMetrics {
|
|
604
|
+
static bytesInSum(dimensions) {
|
|
605
|
+
return {
|
|
606
|
+
"namespace": "AWS/TransitGateway",
|
|
607
|
+
"metricName": "BytesIn",
|
|
608
|
+
"dimensionsMap": dimensions,
|
|
609
|
+
"statistic": "Sum"
|
|
610
|
+
};
|
|
611
|
+
}
|
|
612
|
+
static bytesOutSum(dimensions) {
|
|
613
|
+
return {
|
|
614
|
+
"namespace": "AWS/TransitGateway",
|
|
615
|
+
"metricName": "BytesOut",
|
|
616
|
+
"dimensionsMap": dimensions,
|
|
617
|
+
"statistic": "Sum"
|
|
618
|
+
};
|
|
619
|
+
}
|
|
620
|
+
static packetDropCountBlackholeSum(dimensions) {
|
|
621
|
+
return {
|
|
622
|
+
"namespace": "AWS/TransitGateway",
|
|
623
|
+
"metricName": "PacketDropCountBlackhole",
|
|
624
|
+
"dimensionsMap": dimensions,
|
|
625
|
+
"statistic": "Sum"
|
|
626
|
+
};
|
|
627
|
+
}
|
|
628
|
+
static packetDropCountNoRouteSum(dimensions) {
|
|
629
|
+
return {
|
|
630
|
+
"namespace": "AWS/TransitGateway",
|
|
631
|
+
"metricName": "PacketDropCountNoRoute",
|
|
632
|
+
"dimensionsMap": dimensions,
|
|
633
|
+
"statistic": "Sum"
|
|
634
|
+
};
|
|
635
|
+
}
|
|
636
|
+
static packetsInSum(dimensions) {
|
|
637
|
+
return {
|
|
638
|
+
"namespace": "AWS/TransitGateway",
|
|
639
|
+
"metricName": "PacketsIn",
|
|
640
|
+
"dimensionsMap": dimensions,
|
|
641
|
+
"statistic": "Sum"
|
|
642
|
+
};
|
|
643
|
+
}
|
|
644
|
+
static packetsOutSum(dimensions) {
|
|
645
|
+
return {
|
|
646
|
+
"namespace": "AWS/TransitGateway",
|
|
647
|
+
"metricName": "PacketsOut",
|
|
648
|
+
"dimensionsMap": dimensions,
|
|
649
|
+
"statistic": "Sum"
|
|
650
|
+
};
|
|
651
|
+
}
|
|
652
|
+
}
|
|
653
|
+
exports.TransitGatewayMetrics = TransitGatewayMetrics;
|
|
654
|
+
class VPNMetrics {
|
|
655
|
+
static tunnelDataInSum(dimensions) {
|
|
656
|
+
return {
|
|
657
|
+
"namespace": "AWS/VPN",
|
|
658
|
+
"metricName": "TunnelDataIn",
|
|
659
|
+
"dimensionsMap": dimensions,
|
|
660
|
+
"statistic": "Sum"
|
|
661
|
+
};
|
|
662
|
+
}
|
|
663
|
+
static tunnelStateAverage(dimensions) {
|
|
664
|
+
return {
|
|
665
|
+
"namespace": "AWS/VPN",
|
|
666
|
+
"metricName": "TunnelState",
|
|
667
|
+
"dimensionsMap": dimensions,
|
|
668
|
+
"statistic": "Average"
|
|
669
|
+
};
|
|
670
|
+
}
|
|
671
|
+
static tunnelDataOutSum(dimensions) {
|
|
672
|
+
return {
|
|
673
|
+
"namespace": "AWS/VPN",
|
|
674
|
+
"metricName": "TunnelDataOut",
|
|
675
|
+
"dimensionsMap": dimensions,
|
|
676
|
+
"statistic": "Sum"
|
|
677
|
+
};
|
|
678
|
+
}
|
|
679
|
+
}
|
|
680
|
+
exports.VPNMetrics = VPNMetrics;
|
|
681
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWMyLWNhbm5lZC1tZXRyaWNzLmdlbmVyYXRlZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hd3MvY29tcHV0ZS9lYzItY2FubmVkLW1ldHJpY3MuZ2VuZXJhdGVkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQVdBLE1BQWEsOEJBQThCO0lBQ2xDLE1BQU0sQ0FBQywwQkFBMEIsQ0FBQyxVQUE4QztRQUNyRixPQUFPO1lBQ0wsV0FBVyxFQUFFLDZCQUE2QjtZQUMxQyxZQUFZLEVBQUUscUJBQXFCO1lBQ25DLGVBQWUsRUFBRSxVQUFVO1lBQzNCLFdBQVcsRUFBRSxTQUFTO1NBQ3ZCLENBQUM7SUFDSixDQUFDO0lBRU0sTUFBTSxDQUFDLHdCQUF3QixDQUFDLFVBQThDO1FBQ25GLE9BQU87WUFDTCxXQUFXLEVBQUUsNkJBQTZCO1lBQzFDLFlBQVksRUFBRSxtQkFBbUI7WUFDakMsZUFBZSxFQUFFLFVBQVU7WUFDM0IsV0FBVyxFQUFFLFNBQVM7U0FDdkIsQ0FBQztJQUNKLENBQUM7SUFFTSxNQUFNLENBQUMsNkJBQTZCLENBQUMsVUFBOEM7UUFDeEYsT0FBTztZQUNMLFdBQVcsRUFBRSw2QkFBNkI7WUFDMUMsWUFBWSxFQUFFLHdCQUF3QjtZQUN0QyxlQUFlLEVBQUUsVUFBVTtZQUMzQixXQUFXLEVBQUUsU0FBUztTQUN2QixDQUFDO0lBQ0osQ0FBQztJQUVNLE1BQU0sQ0FBQyx5QkFBeUIsQ0FBQyxVQUE4QztRQUNwRixPQUFPO1lBQ0wsV0FBVyxFQUFFLDZCQUE2QjtZQUMxQyxZQUFZLEVBQUUsb0JBQW9CO1lBQ2xDLGVBQWUsRUFBRSxVQUFVO1lBQzNCLFdBQVcsRUFBRSxTQUFTO1NBQ3ZCLENBQUM7SUFDSixDQUFDO0NBQ0Y7QUFwQ0Qsd0VBb0NDO0FBRUQsTUFBYSxVQUFVO0lBQ2QsTUFBTSxDQUFDLGtCQUFrQixDQUFDLFVBQWlDO1FBQ2hFLE9BQU87WUFDTCxXQUFXLEVBQUUsU0FBUztZQUN0QixZQUFZ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QVksRUFBRSxlQUFlO1lBQzdCLGVBQWUsRUFBRSxVQUFVO1lBQzNCLFdBQVcsRUFBRSxLQUFLO1NBQ25CLENBQUM7SUFDSixDQUFDO0NBQ0Y7QUEzQkQsZ0NBMkJDIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgcHJldHRpZXIvcHJldHRpZXIsbWF4LWxlbiAqL1xuZXhwb3J0IGludGVyZmFjZSBNZXRyaWNXaXRoRGltczxEPiB7XG4gIHJlYWRvbmx5IG5hbWVzcGFjZTogc3RyaW5nO1xuXG4gIHJlYWRvbmx5IG1ldHJpY05hbWU6IHN0cmluZztcblxuICByZWFkb25seSBzdGF0aXN0aWM6IHN0cmluZztcblxuICByZWFkb25seSBkaW1lbnNpb25zTWFwOiBEO1xufVxuXG5leHBvcnQgY2xhc3MgRUMyQ2FwYWNpdHlSZXNlcnZhdGlvbnNNZXRyaWNzIHtcbiAgcHVibGljIHN0YXRpYyBpbnN0YW5jZVV0aWxpemF0aW9uQXZlcmFnZShkaW1lbnNpb25zOiB7IENhcGFjaXR5UmVzZXJ2YXRpb25JZDogc3RyaW5nOyB9KTogTWV0cmljV2l0aERpbXM8eyBDYXBhY2l0eVJlc2VydmF0aW9uSWQ6IHN0cmluZzsgfT4ge1xuICAgIHJldHVybiB7XG4gICAgICBcIm5hbWVzcGFjZVwiOiBcIkFXUy9FQzJDYXBhY2l0eVJlc2VydmF0aW9uc1wiLFxuICAgICAgXCJtZXRyaWNOYW1lXCI6IFwiSW5zdGFuY2VVdGlsaXphdGlvblwiLFxuICAgICAgXCJkaW1lbnNpb25zTWFwXCI6IGRpbWVuc2lvbnMsXG4gICAgICBcInN0YXRpc3RpY1wiOiBcIkF2ZXJhZ2VcIlxuICAgIH07XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIHVzZWRJbnN0YW5jZUNvdW50QXZlcmFnZShkaW1lbnNpb25zOiB7IENhcGFjaXR5UmVzZXJ2YXRpb25JZDogc3RyaW5nOyB9KTogTWV0cmljV2l0aERpbXM8eyBDYXBhY2l0eVJlc2VydmF0aW9uSWQ6IHN0cmluZzsgfT4ge1xuICAgIHJldHVybiB7XG4gICAgICBcIm5hbWVzcGFjZVwiOiBcIkFXUy9FQzJDYXBhY2l0eVJlc2VydmF0aW9uc1wiLFxuICAgICAgXCJtZXRyaWNOYW1lXCI6IFwiVXNlZEluc3RhbmNlQ291bnRcIixcbiAgICAgIFwiZGltZW5zaW9uc01hcFwiOiBkaW1lbnNpb25zLFxuICAgICAgXCJzdGF0aXN0aWNcIjogXCJBdmVyYWdlXCJcbiAgICB9O1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBhdmFpbGFibGVJbnN0YW5jZUNvdW50QXZlcmFnZShkaW1lbnNpb25zOiB7IENhcGFjaXR5UmVzZXJ2YXRpb25JZDogc3RyaW5nOyB9KTogTWV0cmljV2l0aERpbXM8eyBDYXBhY2l0eVJlc2VydmF0aW9uSWQ6IHN0cmluZzsgfT4ge1xuICAgIHJldHVybiB7XG4gICAgICBcIm5hbWVzcGFjZVwiOiBcIkFXUy9FQzJDYXBhY2l0eVJlc2VydmF0aW9uc1wiLFxuICAgICAgXCJtZXRyaWNOYW1lXCI6IFwiQXZhaWxhYmxlSW5zdGFuY2VDb3VudFwiLFxuICAgICAgXCJkaW1lbnNpb25zTWFwXCI6IGRpbWVuc2lvbnMsXG4gICAgICBcInN0YXRpc3RpY1wiOiBcIkF2ZXJhZ2VcIlxuICAgIH07XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIHRvdGFsSW5zdGFuY2VDb3VudEF2ZXJhZ2UoZGltZW5zaW9uczogeyBDYXBhY2l0eVJlc2VydmF0aW9uSWQ6IHN0cmluZzsgfSk6IE1ldHJpY1dpdGhEaW1zPHsgQ2FwYWNpdHlSZXNlcnZhdGlvbklkOiBzdHJpbmc7IH0+IHtcbiAgICByZXR1cm4ge1xuICAgICAgXCJuYW1lc3BhY2VcIjogXCJBV1MvRUMyQ2FwYWNpdHlSZXNlcnZhdGlvbnNcIixcbiAgICAgIFwibWV0cmljTmFtZVwiOiBcIlRvdGFsSW5zdGFuY2VDb3VudFwiLFxuICAgICAgXCJkaW1lbnNpb25zTWFwXCI6IGRpbWVuc2lvbnMsXG4gICAgICBcInN0YXRpc3RpY1wiOiBcIkF2ZXJhZ2VcIlxuICAgIH07XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEVCU01ldHJpY3Mge1xuICBwdWJsaWMgc3RhdGljIHZvbHVtZVJlYWRCeXRlc1N1bShkaW1lbnNpb25zOiB7IFZvbHVtZUlkOiBzdHJpbmc7IH0pOiBNZXRyaWNXaXRoRGltczx7IFZvbHVtZUlkOiBzdHJpbmc7IH0+IHtcbiAgICByZXR1cm4ge1xuICAgICAgXCJuYW1lc3BhY2VcIjogXCJBV1MvRUJTXCIsXG4gICAgICBcIm1ldHJpY05hbWVcIjogXCJWb2x1bWVSZWFkQnl0ZXNcIixcbiAgICAgIFwiZGltZW5zaW9uc01hcFwiOiBkaW1lbnNpb25zLFxuICAgICAgXCJzdGF0aXN0aWNcIjogXCJTdW1cIlxuICAgIH07XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIHZvbHVtZVdyaXRlQnl0ZXNTdW0oZGltZW5zaW9uczogeyBWb2x1bWVJZDogc3RyaW5nOyB9KTogTWV0cmljV2l0aERpbXM8eyBWb2x1bWVJZDogc3RyaW5nOyB9PiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIFwibmFtZXNwYWNlXCI6IFwiQVdTL0VCU1wiLFxuICAgICAgXCJtZXRyaWNOYW1lXCI6IFwiVm9sdW1lV3JpdGVCeXRlc1wiLFxuICAgICAgXCJkaW1lbnNpb25zTWFwXCI6IGRpbWVuc2lvbnMsXG4gICAgICBcInN0YXRpc3RpY1wiOiBcIlN1bVwiXG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgdm9sdW1lUmVhZE9wc1N1bShkaW1lbnNpb25zOiB7IFZvbHVtZUlkOiBzdHJpbmc7IH0pOiBNZXRyaWNXaXRoRGltczx7IFZvbHVtZUlkOiBzdHJpbmc7IH0+IHtcbiAgICByZXR1cm4ge1xuICAgICAgXCJuYW1lc3BhY2VcIjogXCJBV1MvRUJTXCIsXG4gICAgICBcIm1ldHJpY05hbWVcIjogXCJWb2x1bWVSZWFkT3BzXCIsXG4gICAgICBcImRpbWVuc2lvbnNNYXBcIjogZGltZW5zaW9ucyxcbiAgICAgIFwic3RhdGlzdGljXCI6IFwiU3VtXCJcbiAgICB9O1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyB2b2x1bWVUb3RhbFJlYWRUaW1lQXZlcmFnZShkaW1lbnNpb25zOiB7IFZvbHVtZUlkOiBzdHJpbmc7IH0pOiBNZXRyaWNXaXRoRGltczx7IFZvbHVtZUlkOiBzdHJpbmc7IH0+IHtcbiAgICByZXR1cm4ge1xuICAgICAgXCJuYW1lc3BhY2VcIjogXCJBV1MvRUJTXCIsXG4gICAgICBcIm1ldHJpY05hbWVcIjogXCJWb2x1bWVUb3RhbFJlYWRUaW1lXCIsXG4gICAgICBcImRpbWVuc2lvbnNNYXBcIjogZGltZW5zaW9ucyxcbiAgICAgIFwic3RhdGlzdGljXCI6IFwiQXZlcmFnZVwiXG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgdm9sdW1lV3JpdGVPcHNTdW0oZGltZW5zaW9uczogeyBWb2x1bWVJZDogc3RyaW5nOyB9KTogTWV0cmljV2l0aERpbXM8eyBWb2x1bWVJZDogc3RyaW5nOyB9PiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIFwibmFtZXNwYWNlXCI6IFwiQVdTL0VCU1wiLFxuICAgICAgXCJtZXRyaWNOYW1lXCI6IFwiVm9sdW1lV3JpdGVPcHNcIixcbiAgICAgIFwiZGltZW5zaW9uc01hcFwiOiBkaW1lbnNpb25zLFxuICAgICAgXCJzdGF0aXN0aWNcIjogXCJTdW1cIlxuICAgIH07XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIHZvbHVtZVRvdGFsV3JpdGVUaW1lQXZlcmFnZShkaW1lbnNpb25zOiB7IFZvbHVtZUlkOiBzdHJpbmc7IH0pOiBNZXRyaWNXaXRoRGltczx7IFZvbHVtZUlkOiBzdHJpbmc7IH0+IHtcbiAgICByZXR1cm4ge1xuICAgICAgXCJuYW1lc3BhY2VcIjogXCJBV1MvRUJTXCIsXG4gICAgICBcIm1ldHJpY05hbWVcIjogXCJWb2x1bWVUb3RhbFdyaXRlVGltZVwiLFxuICAgICAgXCJkaW1lbnNpb25zTWFwXCI6IGRpbWVuc2lvbnMsXG4gICAgICBcInN0YXRpc3RpY1wiOiBcIkF2ZXJhZ2VcIlxuICAgIH07XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIHZvbHVtZUlkbGVUaW1lQXZlcmFnZShkaW1lbnNpb25zOiB7IFZvbHVtZUlkOiBzdHJpbmc7IH0pOiBNZXRyaWNXaXRoRGltczx7IFZvbHVtZUlkOiBzdHJpbmc7IH0+IHtcbiAgICByZXR1cm4ge1xuICAgICAgXCJuYW1lc3BhY2VcIjogXCJBV1MvRUJTXCIsXG4gICAgICBcIm1ldHJpY05hbWVcIjogXCJWb2x1bWVJZGxlVGltZVwiLFxuICAgICAgXCJkaW1lbnNpb25zTWFwXCI6IGRpbWVuc2lvbnMsXG4gICAgICBcInN0YXRpc3RpY1wiOiBcIkF2ZXJhZ2VcIlxuICAgIH07XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIHZvbHVtZVF1ZXVlTGVuZ3RoQXZlcmFnZShkaW1lbnNpb25zOiB7IFZvbHVtZUlkOiBzdHJpbmc7IH0pOiBNZXRyaWNXaXRoRGltczx7IFZvbHVtZUlkOiBzdHJpbmc7IH0+IHtcbiAgICByZXR1cm4ge1xuICAgICAgXCJuYW1lc3BhY2VcIjogXCJBV1MvRUJTXCIsXG4gICAgICBcIm1ldHJpY05hbWVcIjogXCJWb2x1bWVRdWV1ZUxlbmd0aFwiLFxuICAgICAgXCJkaW1lbnNpb25zTWFwXCI6IGRpbWVuc2lvbnMsXG4gICAgICBcInN0YXRpc3RpY1wiOiBcIkF2ZXJhZ2VcIlxuICAgIH07XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGJ1cnN0QmFsYW5jZUF2ZXJhZ2UoZGltZW5zaW9uczogeyBWb2x1bWVJZDogc3RyaW5nOyB9KTogTWV0cmljV2l0aERpbXM8eyBWb2x1bWVJZDogc3RyaW5nOyB9PiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIFwibmFtZXNwYWNlXCI6IFwiQVdTL0VCU1wiLFxuICAgICAgXCJtZXRyaWNOYW1lXCI6IFwiQnVyc3RCYWxhbmNlXCIsXG4gICAgICBcImRpbWVuc2lvbnNNYXBcIjogZGltZW5zaW9ucyxcbiAgICAgIFwic3RhdGlzdGljXCI6IFwiQXZlcmFnZVwiXG4gICAgfTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgRUMyTWV0cmljcyB7XG4gIHB1YmxpYyBzdGF0aWMgY3B1Q3JlZGl0VXNhZ2VBdmVyYWdlKGRpbWVuc2lvbnM6IHsgSW5zdGFuY2VJZDogc3RyaW5nOyB9KTogTWV0cmljV2l0aERpbXM8eyBJbnN0YW5jZUlkOiBzdHJpbmc7IH0+IHtcbiAgICByZXR1cm4ge1xuICAgICAgXCJuYW1lc3BhY2VcIjogXCJBV1MvRUMyXCIsXG4gICAgICBcIm1ldHJpY05hbWVcIjogXCJDUFVDcmVkaXRVc2FnZVwiLFxuICAgICAgXCJkaW1lbnNpb25zTWFwXCI6IGRpbWVuc2lvbnMsXG4gICAgICBcInN0YXRpc3RpY1wiOiBcIkF2ZXJhZ2VcIlxuICAgIH07XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGNwdUNyZWRpdEJhbGFuY2VBdmVyYWdlKGRpbWVuc2lvbnM6IHsgSW5zdGFuY2VJZDogc3RyaW5nOyB9KTogTWV0cmljV2l0aERpbXM8eyBJbnN0YW5jZUlkOiBzdHJpbmc7IH0+IHtcbiAgICByZXR1cm4ge1xuICAgICAgXCJuYW1lc3BhY2VcIjogXCJBV1MvRUMyXCIsXG4gICAgICBcIm1ldHJpY05hbWVcIjogXCJDUFVDcmVkaXRCYWxhbmNlXCIsXG4gICAgICBcImRpbWVuc2lvbnNNYXBcIjogZGltZW5zaW9ucyxcbiAgICAgIFwic3RhdGlzdGljXCI6IFwiQXZlcmFnZVwiXG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgY3B1U3VycGx1c0NyZWRpdEJhbGFuY2VBdmVyYWdlKGRpbWVuc2lvbnM6IHsgSW5zdGFuY2VJZDogc3RyaW5nOyB9KTogTWV0cmljV2l0aERpbXM8eyBJbnN0YW5jZUlkOiBzdHJpbmc7IH0+IHtcbiAgICByZXR1cm4ge1xuICAgICAgXCJuYW1lc3BhY2VcIjogXCJBV1MvRUMyXCIsXG4gICAgICBcIm1ldHJpY05hbWVcIjogXCJDUFVTdXJwbHVzQ3JlZGl0QmFsYW5jZVwiLFxuICAgICAgXCJkaW1lbnNpb25zTWFwXCI6IGRpbWVuc2lvbnMsXG4gICAgICBcInN0YXRpc3RpY1wiOiBcIkF2ZXJhZ2VcIlxuICAgIH07XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGNwdVN1cnBsdXNDcmVkaXRzQ2hhcmdlZEF2ZXJhZ2UoZGltZW5zaW9uczogeyBJbnN0YW5jZUlkOiBzdHJpbmc7IH0pOiBNZXRyaWNXaXRoRGltczx7IEluc3RhbmNlSWQ6IHN0cmluZzsgfT4ge1xuICAgIHJldHVybiB7XG4gICAgICBcIm5hbWVzcGFjZVwiOiBcIkFXUy9FQzJcIixcbiAgICAgIFwibWV0cmljTmFtZVwiOiBcIkNQVVN1cnBsdXNDcmVkaXRzQ2hhcmdlZFwiLFxuICAgICAgXCJkaW1lbnNpb25zTWFwXCI6IGRpbWVuc2lvbnMsXG4gICAgICBcInN0YXRpc3RpY1wiOiBcIkF2ZXJhZ2VcIlxuICAgIH07XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGNwdVV0aWxpemF0aW9uQXZlcmFnZShkaW1lbnNpb25zOiB7IEluc3RhbmNlSWQ6IHN0cmluZzsgfSk6IE1ldHJpY1dpdGhEaW1zPHsgSW5zdGFuY2VJZDogc3RyaW5nOyB9PjtcblxuICBwdWJsaWMgc3RhdGljIGNwdVV0aWxpemF0aW9uQXZlcmFnZShkaW1lbnNpb25zOiB7ICB9KTogTWV0cmljV2l0aERpbXM8eyAgfT47XG5cbiAgcHVibGljIHN0YXRpYyBjcHVVdGlsaXphdGlvbkF2ZXJhZ2UoZGltZW5zaW9uczogeyBBdXRvU2NhbGluZ0dyb3VwTmFtZTogc3RyaW5nOyB9KTogTWV0cmljV2l0aERpbXM8eyBBdXRvU2NhbGluZ0dyb3VwTmFtZTogc3RyaW5nOyB9PjtcblxuICBwdWJsaWMgc3RhdGljIGNwdVV0aWxpemF0aW9uQXZlcmFnZShkaW1lbnNpb25zOiB7IEltYWdlSWQ6IHN0cmluZzsgfSk6IE1ldHJpY1dpdGhEaW1zPHsgSW1hZ2VJZDogc3RyaW5nOyB9PjtcblxuICBwdWJsaWMgc3RhdGljIGNwdVV0aWxpemF0aW9uQXZlcmFnZShkaW1lbnNpb25zOiB7IEluc3RhbmNlVHlwZTogc3RyaW5nOyB9KTogTWV0cmljV2l0aERpbXM8eyBJbnN0YW5jZVR5cGU6IHN0cmluZzsgfT47XG5cbiAgcHVibGljIHN0YXRpYyBjcHVVdGlsaXphdGlvbkF2ZXJhZ2UoZGltZW5zaW9uczogYW55KTogTWV0cmljV2l0aERpbXM8YW55PiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIFwibmFtZXNwYWNlXCI6IFwiQVdTL0VDMlwiLFxuICAgICAgXCJtZXRyaWNOYW1lXCI6IFwiQ1BVVXRpbGl6YXRpb25cIixcbiAgICAgIFwiZGltZW5zaW9uc01hcFwiOiBkaW1lbnNpb25zLFxuICAgICAgXCJzdGF0aXN0aWNcIjogXCJBdmVyYWdlXCJcbiAgICB9O1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBkaXNrUmVhZEJ5dGVzQXZlcmFnZShkaW1lbnNpb25zOiB7IEluc3RhbmNlSWQ6IHN0cmluZzsgfSk6IE1ldHJpY1dpdGhEaW1zPHsgSW5zdGFuY2VJZDogc3RyaW5nOyB9PjtcblxuICBwdWJsaWMgc3RhdGljIGRpc2tSZWFkQnl0ZXNBdmVyYWdlKGRpbWVuc2lvbnM6IHsgIH0pOiBNZXRyaWNXaXRoRGltczx7ICB9PjtcblxuICBwdWJsaWMgc3RhdGljIGRpc2tSZWFkQnl0ZXNBdmVyYWdlKGRpbWVuc2lvbnM6IHsgQXV0b1NjYWxpbmdHcm91cE5hbWU6IHN0cmluZzsgfSk6IE1ldHJpY1dpdGhEaW1zPHsgQXV0b1NjYWxpbmdHcm91cE5hbWU6IHN0cmluZzsgfT47XG5cbiAgcHVibGljIHN0YXRpYyBkaXNrUmVhZEJ5dGVzQXZlcmFnZShkaW1lbnNpb25zOiB7IEltYWdlSWQ6IHN0cmluZzsgfSk6IE1ldHJpY1dpdGhEaW1zPHsgSW1hZ2VJZDogc3RyaW5nOyB9PjtcblxuICBwdWJsaWMgc3RhdGljIGRpc2tSZWFkQnl0ZXNBdmVyYWdlKGRpbWVuc2lvbnM6IHsgSW5zdGFuY2VUeXBlOiBzdHJpbmc7IH0pOiBNZXRyaWNXaXRoRGltczx7IEluc3RhbmNlVHlwZTogc3RyaW5nOyB9PjtcblxuICBwdWJsaWMgc3RhdGljIGRpc2tSZWFkQnl0ZXNBdmVyYWdlKGRpbWVuc2lvbnM6IGFueSk6IE1ldHJpY1dpdGhEaW1zPGFueT4ge1xuICAgIHJldHVybiB7XG4gICAgICBcIm5hbWVzcGFjZVwiOiBcIkFXUy9FQzJcIixcbiAgICAgIFwibWV0cmljTmFtZVwiOiBcIkRpc2tSZWFkQnl0ZXNcIixcbiAgICAgIFwiZGltZW5zaW9uc01hcFwiOiBkaW1lbnNpb25zLFxuICAgICAgXCJzdGF0aXN0aWNcIjogXCJBdmVyYWdlXCJcbiAgICB9O1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBkaXNrUmVhZE9wc0F2ZXJhZ2UoZGltZW5zaW9uczogeyBJbnN0YW5jZUlkOiBzdHJpbmc7IH0pOiBNZXRyaWNXaXRoRGltczx7IEluc3RhbmNlSWQ6IHN0cmluZzsgfT47XG5cbiAgcHVibGljIHN0YXRpYyBkaXNrUmVhZE9wc0F2ZXJhZ2UoZGltZW5zaW9uczogeyAgfSk6IE1ldHJpY1dpdGhEaW1zPHsgIH0+O1xuXG4gIHB1YmxpYyBzdGF0aWMgZGlza1JlYWRPcHNBdmVyYWdlKGRpbWVuc2lvbnM6IHsgQXV0b1NjYWxpbmdHcm91cE5hbWU6IHN0cmluZzsgfSk6IE1ldHJpY1dpdGhEaW1zPHsgQXV0b1NjYWxpbmdHcm91cE5hbWU6IHN0cmluZzsgfT47XG5cbiAgcHVibGljIHN0YXRpYyBkaXNrUmVhZE9wc0F2ZXJhZ2UoZGltZW5zaW9uczogeyBJbWFnZUlkOiBzdHJpbmc7IH0pOiBNZXRyaWNXaXRoRGltczx7IEltYWdlSWQ6IHN0cmluZzsgfT47XG5cbiAgcHVibGljIHN0YXRpYyBkaXNrUmVhZE9wc0F2ZXJhZ2UoZGltZW5zaW9uczogeyBJbnN0YW5jZVR5cGU6IHN0cmluZzsgfSk6IE1ldHJpY1dpdGhEaW1zPHsgSW5zdGFuY2VUeXBlOiBzdHJpbmc7IH0+O1xuXG4gIHB1YmxpYyBzdGF0aWMgZGlza1JlYWRPcHNBdmVyYWdlKGRpbWVuc2lvbnM6IGFueSk6IE1ldHJpY1dpdGhEaW1zPGFueT4ge1xuICAgIHJldHVybiB7XG4gICAgICBcIm5hbWVzcGFjZVwiOiBcIkFXUy9FQzJcIixcbiAgICAgIFwibWV0cmljTmFtZVwiOiBcIkRpc2tSZWFkT3BzXCIsXG4gICAgICBcImRpbWVuc2lvbnNNYXBcIjogZGltZW5zaW9ucyxcbiAgICAgIFwic3RhdGlzdGljXCI6IFwiQXZlcmFnZVwiXG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgZGlza1dyaXRlQnl0ZXNBdmVyYWdlKGRpbWVuc2lvbnM6IHsgSW5zdGFuY2VJZDogc3RyaW5nOyB9KTogTWV0cmljV2l0aERpbXM8eyBJbnN0YW5jZUlkOiBzdHJpbmc7IH0+O1xuXG4gIHB1YmxpYyBzdGF0aWMgZGlza1dyaXRlQnl0ZXNBdmVyYWdlKGRpbWVuc2lvbnM6IHsgIH0pOiBNZXRyaWNXaXRoRGltczx7ICB9PjtcblxuICBwdWJsaWMgc3RhdGljIGRpc2tXcml0ZUJ5dGVzQXZlcmFnZShkaW1lbnNpb25zOiB7IEF1dG9TY2FsaW5nR3JvdXBOYW1lOiBzdHJpbmc7IH0pOiBNZXRyaWNXaXRoRGltczx7IEF1dG9TY2FsaW5nR3JvdXBOYW1lOiBzdHJpbmc7IH0+O1xuXG4gIHB1YmxpYyBzdGF0aWMgZGlza1dyaXRlQnl0ZXNBdmVyYWdlKGRpbWVuc2lvbnM6IHsgSW1hZ2VJZDogc3RyaW5nOyB9KTogTWV0cmljV2l0aERpbXM8eyBJbWFnZUlkOiBzdHJpbmc7IH0+O1xuXG4gIHB1YmxpYyBzdGF0aWMgZGlza1dyaXRlQnl0ZXNBdmVyYWdlKGRpbWVuc2lvbnM6IHsgSW5zdGFuY2VUeXBlOiBzdHJpbmc7IH0pOiBNZXRyaWNXaXRoRGltczx7IEluc3RhbmNlVHlwZTogc3RyaW5nOyB9PjtcblxuICBwdWJsaWMgc3RhdGljIGRpc2tXcml0ZUJ5dGVzQXZlcmFnZShkaW1lbnNpb25zOiBhbnkpOiBNZXRyaWNXaXRoRGltczxhbnk+IHtcbiAgICByZXR1cm4ge1xuICAgICAgXCJuYW1lc3BhY2VcIjogXCJBV1MvRUMyXCIsXG4gICAgICBcIm1ldHJpY05hbWVcIjogXCJEaXNrV3JpdGVCeXRlc1wiLFxuICAgICAgXCJkaW1lbnNpb25zTWFwXCI6IGRpbWVuc2lvbnMsXG4gICAgICBcInN0YXRpc3RpY1wiOiBcIkF2ZXJhZ2VcIlxuICAgIH07XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGRpc2tXcml0ZU9wc0F2ZXJhZ2UoZGltZW5zaW9uczogeyBJbnN0YW5jZUlkOiBzdHJpbmc7IH0pOiBNZXRyaWNXaXRoRGltczx7IEluc3RhbmNlSWQ6IHN0cmluZzsgfT47XG5cbiAgcHVibGljIHN0YXRpYyBkaXNrV3JpdGVPcHNBdmVyYWdlKGRpbWVuc2lvbnM6IHsgIH0pOiBNZXRyaWNXaXRoRGltczx7ICB9PjtcblxuICBwdWJsaWMgc3RhdGljIGRpc2tXcml0ZU9wc0F2ZXJhZ2UoZGltZW5zaW9uczogeyBBdXRvU2NhbGluZ0dyb3VwTmFtZTogc3RyaW5nOyB9KTogTWV0cmljV2l0aERpbXM8eyBBdXRvU2NhbGluZ0dyb3VwTmFtZTogc3RyaW5nOyB9PjtcblxuICBwdWJsaWMgc3RhdGljIGRpc2tXcml0ZU9wc0F2ZXJhZ2UoZGltZW5zaW9uczogeyBJbWFnZUlkOiBzdHJpbmc7IH0pOiBNZXRyaWNXaXRoRGltczx7IEltYWdlSWQ6IHN0cmluZzsgfT47XG5cbiAgcHVibGljIHN0YXRpYyBkaXNrV3JpdGVPcHNBdmVyYWdlKGRpbWVuc2lvbnM6IHsgSW5zdGFuY2VUeXBlOiBzdHJpbmc7IH0pOiBNZXRyaWNXaXRoRGltczx7IEluc3RhbmNlVHlwZTogc3RyaW5nOyB9PjtcblxuICBwdWJsaWMgc3RhdGljIGRpc2tXcml0ZU9wc0F2ZXJhZ2UoZGltZW5zaW9uczogYW55KTogTWV0cmljV2l0aERpbXM8YW55PiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIFwibmFtZXNwYWNlXCI6IFwiQVdTL0VDMlwiLFxuICAgICAgXCJtZXRyaWNOYW1lXCI6IFwiRGlza1dyaXRlT3BzXCIsXG4gICAgICBcImRpbWVuc2lvbnNNYXBcIjogZGltZW5zaW9ucyxcbiAgICAgIFwic3RhdGlzdGljXCI6IFwiQXZlcmFnZVwiXG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgbWV0YWRhdGFOb1Rva2VuU3VtKGRpbWVuc2lvbnM6IHsgSW5zdGFuY2VJZDogc3RyaW5nOyB9KTogTWV0cmljV2l0aERpbXM8eyBJbnN0YW5jZUlkOiBzdHJpbmc7IH0+O1xuXG4gIHB1YmxpYyBzdGF0aWMgbWV0YWRhdGFOb1Rva2VuU3VtKGRpbWVuc2lvbnM6IHsgIH0pOiBNZXRyaWNXaXRoRGltczx7ICB9PjtcblxuICBwdWJsaWMgc3RhdGljIG1ldGFkYXRhTm9Ub2tlblN1bShkaW1lbnNpb25zOiBhbnkpOiBNZXRyaWNXaXRoRGltczxhbnk+IHtcbiAgICByZXR1cm4ge1xuICAgICAgXCJuYW1lc3BhY2VcIjogXCJBV1MvRUMyXCIsXG4gICAgICBcIm1ldHJpY05hbWVcIjogXCJNZXRhZGF0YU5vVG9rZW5cIixcbiAgICAgIFwiZGltZW5zaW9uc01hcFwiOiBkaW1lbnNpb25zLFxuICAgICAgXCJzdGF0aXN0aWNcIjogXCJTdW1cIlxuICAgIH07XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIG5ldHdvcmtJbkF2ZXJhZ2UoZGltZW5zaW9uczogeyBJbnN0YW5jZUlkOiBzdHJpbmc7IH0pOiBNZXRyaWNXaXRoRGltczx7IEluc3RhbmNlSWQ6IHN0cmluZzsgfT47XG5cbiAgcHVibGljIHN0YXRpYyBuZXR3b3JrSW5BdmVyYWdlKGRpbWVuc2lvbnM6IHsgIH0pOiBNZXRyaWNXaXRoRGltczx7ICB9PjtcblxuICBwdWJsaWMgc3RhdGljIG5ldHdvcmtJbkF2ZXJhZ2UoZGltZW5zaW9uczogeyBBdXRvU2NhbGluZ0dyb3VwTmFtZTogc3RyaW5nOyB9KTogTWV0cmljV2l0aERpbXM8eyBBdXRvU2NhbGluZ0dyb3VwTmFtZTogc3RyaW5nOyB9PjtcblxuICBwdWJsaWMgc3RhdGljIG5ldHdvcmtJbkF2ZXJhZ2UoZGltZW5zaW9uczogeyBJbWFnZUlkOiBzdHJpbmc7IH0pOiBNZXRyaWNXaXRoRGltczx7IEltYWdlSWQ6IHN0cmluZzsgfT47XG5cbiAgcHVibGljIHN0YXRpYyBuZXR3b3JrSW5BdmVyYWdlKGRpbWVuc2lvbnM6IHsgSW5zdGFuY2VUeXBlOiBzdHJpbmc7IH0pOiBNZXRyaWNXaXRoRGltczx7IEluc3RhbmNlVHlwZTogc3RyaW5nOyB9PjtcblxuICBwdWJsaWMgc3RhdGljIG5ldHdvcmtJbkF2ZXJhZ2UoZGltZW5zaW9uczogYW55KTogTWV0cmljV2l0aERpbXM8YW55PiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIFwibmFtZXNwYWNlXCI6IFwiQVdTL0VDMlwiLFxuICAgICAgXCJtZXRyaWNOYW1lXCI6IFwiTmV0d29ya0luXCIsXG4gICAgICBcImRpbWVuc2lvbnNNYXBcIjogZGltZW5zaW9ucyxcbiAgICAgIFwic3RhdGlzdGljXCI6IFwiQXZlcmFnZVwiXG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgbmV0d29ya091dEF2ZXJhZ2UoZGltZW5zaW9uczogeyBJbnN0YW5jZUlkOiBzdHJpbmc7IH0pOiBNZXRyaWNXaXRoRGltczx7IEluc3RhbmNlSWQ6IHN0cmluZzsgfT47XG5cbiAgcHVibGljIHN0YXRpYyBuZXR3b3JrT3V0QXZlcmFnZShkaW1lbnNpb25zOiB7ICB9KTogTWV0cmljV2l0aERpbXM8eyAgfT47XG5cbiAgcHVibGljIHN0YXRpYyBuZXR3b3JrT3V0QXZlcmFnZShkaW1lbnNpb25zOiB7IEF1dG9TY2FsaW5nR3JvdXBOYW1lOiBzdHJpbmc7IH0pOiBNZXRyaWNXaXRoRGltczx7IEF1dG9TY2FsaW5nR3JvdXBOYW1lOiBzdHJpbmc7IH0+O1xuXG4gIHB1YmxpYyBzdGF0aWMgbmV0d29ya091dEF2ZXJhZ2UoZGltZW5zaW9uczogeyBJbWFnZUlkOiBzdHJpbmc7IH0pOiBNZXRyaWNXaXRoRGltczx7IEltYWdlSWQ6IHN0cmluZzsgfT47XG5cbiAgcHVibGljIHN0YXRpYyBuZXR3b3JrT3V0QXZlcmFnZShkaW1lbnNpb25zOiB7IEluc3RhbmNlVHlwZTogc3RyaW5nOyB9KTogTWV0cmljV2l0aERpbXM8eyBJbnN0YW5jZVR5cGU6IHN0cmluZzsgfT47XG5cbiAgcHVibGljIHN0YXRpYyBuZXR3b3JrT3V0QXZlcmFnZShkaW1lbnNpb25zOiBhbnkpOiBNZXRyaWNXaXRoRGltczxhbnk+IHtcbiAgICByZXR1cm4ge1xuICAgICAgXCJuYW1lc3BhY2VcIjogXCJBV1MvRUMyXCIsXG4gICAgICBcIm1ldHJpY05hbWVcIjogXCJOZXR3b3JrT3V0XCIsXG4gICAgICBcImRpbWVuc2lvbnNNYXBcIjogZGltZW5zaW9ucyxcbiAgICAgIFwic3RhdGlzdGljXCI6IFwiQXZlcmFnZVwiXG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgbmV0d29ya1BhY2tldHNJbkF2ZXJhZ2UoZGltZW5zaW9uczogeyBJbnN0YW5jZUlkOiBzdHJpbmc7IH0pOiBNZXRyaWNXaXRoRGltczx7IEluc3RhbmNlSWQ6IHN0cmluZzsgfT47XG5cbiAgcHVibGljIHN0YXRpYyBuZXR3b3JrUGFja2V0c0luQXZlcmFnZShkaW1lbnNpb25zOiB7ICB9KTogTWV0cmljV2l0aERpbXM8eyAgfT47XG5cbiAgcHVibGljIHN0YXRpYyBuZXR3b3JrUGFja2V0c0luQXZlcmFnZShkaW1lbnNpb25zOiB7IEF1dG9TY2FsaW5nR3JvdXBOYW1lOiBzdHJpbmc7IH0pOiBNZXRyaWNXaXRoRGltczx7IEF1dG9TY2FsaW5nR3JvdXBOYW1lOiBzdHJpbmc7IH0+O1xuXG4gIHB1YmxpYyBzdGF0aWMgbmV0d29ya1BhY2tldHNJbkF2ZXJhZ2UoZGltZW5zaW9uczogYW55KTogTWV0cmljV2l0aERpbXM8YW55PiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIFwibmFtZXNwYWNlXCI6IFwiQVdTL0VDMlwiLFxuICAgICAgXCJtZXRyaWNOYW1lXCI6IFwiTmV0d29ya1BhY2tldHNJblwiLFxuICAgICAgXCJkaW1lbnNpb25zTWFwXCI6IGRpbWVuc2lvbnMsXG4gICAgICBcInN0YXRpc3RpY1wiOiBcIkF2ZXJhZ2VcIlxuICAgIH07XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIG5ldHdvcmtQYWNrZXRzT3V0QXZlcmFnZShkaW1lbnNpb25zOiB7IEluc3RhbmNlSWQ6IHN0cmluZzsgfSk6IE1ldHJpY1dpdGhEaW1zPHsgSW5zdGFuY2VJZDogc3RyaW5nOyB9PjtcblxuICBwdWJsaWMgc3RhdGljIG5ldHdvcmtQYWNrZXRzT3V0QXZlcmFnZShkaW1lbnNpb25zOiB7ICB9KTogTWV0cmljV2l0aERpbXM8eyAgfT47XG5cbiAgcHVibGljIHN0YXRpYyBuZXR3b3JrUGFja2V0c091dEF2ZXJhZ2UoZGltZW5zaW9uczogeyBBdXRvU2NhbGluZ0dyb3VwTmFtZTogc3RyaW5nOyB9KTogTWV0cmljV2l0aERpbXM8eyBBdXRvU2NhbGluZ0dyb3VwTmFtZTogc3RyaW5nOyB9PjtcblxuICBwdWJsaWMgc3RhdGljIG5ldHdvcmtQYWNrZXRzT3V0QXZlcmFnZShkaW1lbnNpb25zOiBhbnkpOiBNZXRyaWNXaXRoRGltczxhbnk+IHtcbiAgICByZXR1cm4ge1xuICAgICAgXCJuYW1lc3BhY2VcIjogXCJBV1MvRUMyXCIsXG4gICAgICBcIm1ldHJpY05hbWVcIjogXCJOZXR3b3JrUGFja2V0c091dFwiLFxuICAgICAgXCJkaW1lbnNpb25zTWFwXCI6IGRpbWVuc2lvbnMsXG4gICAgICBcInN0YXRpc3RpY1wiOiBcIkF2ZXJhZ2VcIlxuICAgIH07XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIHN0YXR1c0NoZWNrRmFpbGVkU3VtKGRpbWVuc2lvbnM6IHsgSW5zdGFuY2VJZDogc3RyaW5nOyB9KTogTWV0cmljV2l0aERpbXM8eyBJbnN0YW5jZUlkOiBzdHJpbmc7IH0+IHtcbiAgICByZXR1cm4ge1xuICAgICAgXCJuYW1lc3BhY2VcIjogXCJBV1MvRUMyXCIsXG4gICAgICBcIm1ldHJpY05hbWVcIjogXCJTdGF0dXNDaGVja0ZhaWxlZFwiLFxuICAgICAgXCJkaW1lbnNpb25zTWFwXCI6IGRpbWVuc2lvbnMsXG4gICAgICBcInN0YXRpc3RpY1wiOiBcIlN1bVwiXG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgc3RhdHVzQ2hlY2tGYWlsZWRJbnN0YW5jZVN1bShkaW1lbnNpb25zOiB7IEluc3RhbmNlSWQ6IHN0cmluZzsgfSk6IE1ldHJpY1dpdGhEaW1zPHsgSW5zdGFuY2VJZDogc3RyaW5nOyB9PiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIFwibmFtZXNwYWNlXCI6IFwiQVdTL0VDMlwiLFxuICAgICAgXCJtZXRyaWNOYW1lXCI6IFwiU3RhdHVzQ2hlY2tGYWlsZWRfSW5zdGFuY2VcIixcbiAgICAgIFwiZGltZW5zaW9uc01hcFwiOiBkaW1lbnNpb25zLFxuICAgICAgXCJzdGF0aXN0aWNcIjogXCJTdW1cIlxuICAgIH07XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIHN0YXR1c0NoZWNrRmFpbGVkU3lzdGVtU3VtKGRpbWVuc2lvbnM6IHsgSW5zdGFuY2VJZDogc3RyaW5nOyB9KTogTWV0cmljV2l0aERpbXM8eyBJbnN0YW5jZUlkOiBzdHJpbmc7IH0+IHtcbiAgICByZXR1cm4ge1xuICAgICAgXCJuYW1lc3BhY2VcIjogXCJBV1MvRUMyXCIsXG4gICAgICBcIm1ldHJpY05hbWVcIjogXCJTdGF0dXNDaGVja0ZhaWxlZF9TeXN0ZW1cIixcbiAgICAgIFwiZGltZW5zaW9uc01hcFwiOiBkaW1lbnNpb25zLFxuICAgICAgXCJzdGF0aXN0aWNcIjogXCJTdW1cIlxuICAgIH07XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIENXQWdlbnRNZXRyaWNzIHtcbiAgcHVibGljIHN0YXRpYyBjcHVVc2FnZUlkbGVBdmVyYWdlKGRpbWVuc2lvbnM6IHsgSW5zdGFuY2VJZDogc3RyaW5nOyB9KTogTWV0cmljV2l0aERpbXM8eyBJbnN0YW5jZUlkOiBzdHJpbmc7IH0+IHtcbiAgICByZXR1cm4ge1xuICAgICAgXCJuYW1lc3BhY2VcIjogXCJDV0FnZW50XCIsXG4gICAgICBcIm1ldHJpY05hbWVcIjogXCJjcHVfdXNhZ2VfaWRsZVwiLFxuICAgICAgXCJkaW1lbnNpb25zTWFwXCI6IGRpbWVuc2lvbnMsXG4gICAgICBcInN0YXRpc3RpY1wiOiBcIkF2ZXJhZ2VcIlxuICAgIH07XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGNwdVVzYWdlSW93YWl0QXZlcmFnZShkaW1lbnNpb25zOiB7IEluc3RhbmNlSWQ6IHN0cmluZzsgfSk6IE1ldHJpY1dpdGhEaW1zPHsgSW5zdGFuY2VJZDogc3RyaW5nOyB9PiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIFwibmFtZXNwYWNlXCI6IFwiQ1dBZ2VudFwiLFxuICAgICAgXCJtZXRyaWNOYW1lXCI6IFwiY3B1X3VzYWdlX2lvd2FpdFwiLFxuICAgICAgXCJkaW1lbnNpb25zTWFwXCI6IGRpbWVuc2lvbnMsXG4gICAgICBcInN0YXRpc3RpY1wiOiBcIkF2ZXJhZ2VcIlxuICAgIH07XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGNwdVVzYWdlU3RlYWxBdmVyYWdlKGRpbWVuc2lvbnM6IHsgSW5zdGFuY2VJZDogc3RyaW5nOyB9KTogTWV0cmljV2l0aERpbXM8eyBJbnN0YW5jZUlkOiBzdHJpbmc7IH0+IHtcbiAgICByZXR1cm4ge1xuICAgICAgXCJuYW1lc3BhY2VcIjogXCJDV0FnZW50XCIsXG4gICAgICBcIm1ldHJpY05hbWVcIjogXCJjcHVfdXNhZ2Vfc3RlYWxcIixcbiAgICAgIFwiZGltZW5zaW9uc01hcFwiOiBkaW1lbnNpb25zLFxuICAgICAgXCJzdGF0aXN0aWNcIjogXCJBdmVyYWdlXCJcbiAgICB9O1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBjcHVVc2FnZVN5c3RlbUF2ZXJhZ2UoZGltZW5zaW9uczogeyBJbnN0YW5jZUlkOiBzdHJpbmc7IH0pOiBNZXRyaWNXaXRoRGltczx7IEluc3RhbmNlSWQ6IHN0cmluZzsgfT4ge1xuICAgIHJldHVybiB7XG4gICAgICBcIm5hbWVzcGFjZVwiOiBcIkNXQWdlbnRcIixcbiAgICAgIFwibWV0cmljTmFtZVwiOiBcImNwdV91c2FnZV9zeXN0ZW1cIixcbiAgICAgIFwiZGltZW5zaW9uc01hcFwiOiBkaW1lbnNpb25zLFxuICAgICAgXCJzdGF0aXN0aWNcIjogXCJBdmVyYWdlXCJcbiAgICB9O1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBjcHVVc2FnZVVzZXJBdmVyYWdlKGRpbWVuc2lvbnM6IHsgSW5zdGFuY2VJZDogc3RyaW5nOyB9KTogTWV0cmljV2l0aERpbXM8eyBJbnN0YW5jZUlkOiBzdHJpbmc7IH0+IHtcbiAgICByZXR1cm4ge1xuICAgICAgXCJuYW1lc3BhY2VcIjogXCJDV0FnZW50XCIsXG4gICAgICBcIm1ldHJpY05hbWVcIjogXCJjcHVfdXNhZ2VfdXNlclwiLFxuICAgICAgXCJkaW1lbnNpb25zTWFwXCI6IGRpbWVuc2lvbnMsXG4gICAgICBcInN0YXRpc3RpY1wiOiBcIkF2ZXJhZ2VcIlxuICAgIH07XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGRpc2tJbm9kZXNGcmVlU3VtKGRpbWVuc2lvbnM6IHsgSW5zdGFuY2VJZDogc3RyaW5nOyB9KTogTWV0cmljV2l0aERpbXM8eyBJbnN0YW5jZUlkOiBzdHJpbmc7IH0+IHtcbiAgICByZXR1cm4ge1xuICAgICAgXCJuYW1lc3BhY2VcIjogXCJDV0FnZW50XCIsXG4gICAgICBcIm1ldHJpY05hbWVcIjogXCJkaXNrX2lub2Rlc19mcmVlXCIsXG4gICAgICBcImRpbWVuc2lvbnNNYXBcIjogZGltZW5zaW9ucyxcbiAgICAgIFwic3RhdGlzdGljXCI6IFwiU3VtXCJcbiAgICB9O1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBkaXNrSW5vZGVzVG90YWxTdW0oZGltZW5zaW9uczogeyBJbnN0YW5jZUlkOiBzdHJpbmc7IH0pOiBNZXRyaWNXaXRoRGltczx7IEluc3RhbmNlSWQ6IHN0cmluZzsgfT4ge1xuICAgIHJldHVybiB7XG4gICAgICBcIm5hbWVzcGFjZVwiOiBcIkNXQWdlbnRcIixcbiAgICAgIFwibWV0cmljTmFtZVwiOiBcImRpc2tfaW5vZGVzX3RvdGFsXCIsXG4gICAgICBcImRpbWVuc2lvbnNNYXBcIjogZGltZW5zaW9ucyxcbiAgICAgIFwic3RhdGlzdGljXCI6IFwiU3VtXCJcbiAgICB9O1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBkaXNrSW5vZGVzVXNlZFN1bShkaW1lbnNpb25zOiB7IEluc3RhbmNlSWQ6IHN0cmluZzsgfSk6IE1ldHJpY1dpdGhEaW1zPHsgSW5zdGFuY2VJZDogc3RyaW5nOyB9PiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIFwibmFtZXNwYWNlXCI6IFwiQ1dBZ2VudFwiLFxuICAgICAgXCJtZXRyaWNOYW1lXCI6IFwiZGlza19pbm9kZXNfdXNlZFwiLFxuICAgICAgXCJkaW1lbnNpb25zTWFwXCI6IGRpbWVuc2lvbnMsXG4gICAgICBcInN0YXRpc3RpY1wiOiBcIlN1bVwiXG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgZGlza1VzZWRQZXJjZW50QXZlcmFnZShkaW1lbnNpb25zOiB7IEluc3RhbmNlSWQ6IHN0cmluZzsgfSk6IE1ldHJpY1dpdGhEaW1zPHsgSW5zdGFuY2VJZDogc3RyaW5nOyB9PiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIFwibmFtZXNwYWNlXCI6IFwiQ1dBZ2VudFwiLFxuICAgICAgXCJtZXRyaWNOYW1lXCI6IFwiZGlza191c2VkX3BlcmNlbnRcIixcbiAgICAgIFwiZGltZW5zaW9uc01hcFwiOiBkaW1lbnNpb25zLFxuICAgICAgXCJzdGF0aXN0aWNcIjogXCJBdmVyYWdlXCJcbiAgICB9O1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBkaXNraW9Jb1RpbWVBdmVyYWdlKGRpbWVuc2lvbnM6IHsgSW5zdGFuY2VJZDogc3RyaW5nOyB9KTogTWV0cmljV2l0aERpbXM8eyBJbnN0YW5jZUlkOiBzdHJpbmc7IH0+IHtcbiAgICByZXR1cm4ge1xuICAgICAgXCJuYW1lc3BhY2VcIjogXCJDV0FnZW50XCIsXG4gICAgICBcIm1ldHJpY05hbWVcIjogXCJkaXNraW9faW9fdGltZVwiLFxuICAgICAgXCJkaW1lbnNpb25zTWFwXCI6IGRpbWVuc2lvbnMsXG4gICAgICBcInN0YXRpc3RpY1wiOiBcIkF2ZXJhZ2VcIlxuICAgIH07XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGRpc2tpb1JlYWRCeXRlc0F2ZXJhZ2UoZGltZW5zaW9uczogeyBJbnN0YW5jZUlkOiBzdHJpbmc7IH0pOiBNZXRyaWNXaXRoRGltczx7IEluc3RhbmNlSWQ6IHN0cmluZzsgfT4ge1xuICAgIHJldHVybiB7XG4gICAgICBcIm5hbWVzcGFjZVwiOiBcIkNXQWdlbnRcIixcbiAgICAgIFwibWV0cmljTmFtZVwiOiBcImRpc2tpb19yZWFkX2J5dGVzXCIsXG4gICAgICBcImRpbWVuc2lvbnNNYXBcIjogZGltZW5zaW9ucyxcbiAgICAgIFwic3RhdGlzdGljXCI6IFwiQXZlcmFnZVwiXG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgZGlza2lvUmVhZHNBdmVyYWdlKGRpbWVuc2lvbnM6IHsgSW5zdGFuY2VJZDogc3RyaW5nOyB9KTogTWV0cmljV2l0aERpbXM8eyBJbnN0YW5jZUlkOiBzdHJpbmc7IH0+IHtcbiAgICByZXR1cm4ge1xuICAgICAgXCJuYW1lc3BhY2VcIjogXCJDV0FnZW50XCIsXG4gICAgICBcIm1ldHJpY05hbWVcIjogXCJkaXNraW9fcmVhZHNcIixcbiAgICAgIFwiZGltZW5zaW9uc01hcFwiOiBkaW1lbnNpb25zLFxuICAgICAgXCJzdGF0aXN0aWNcIjogXCJBdmVyYWdlXCJcbiAgICB9O1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBkaXNraW9Xcml0ZUJ5dGVzQXZlcmFnZShkaW1lbnNpb25zOiB7IEluc3RhbmNlSWQ6IHN0cmluZzsgfSk6IE1ldHJpY1dpdGhEaW1zPHsgSW5zdGFuY2VJZDogc3RyaW5nOyB9PiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIFwibmFtZXNwYWNlXCI6IFwiQ1dBZ2VudFwiLFxuICAgICAgXCJtZXRyaWNOYW1lXCI6IFwiZGlza2lvX3dyaXRlX2J5dGVzXCIsXG4gICAgICBcImRpbWVuc2lvbnNNYXBcIjogZGltZW5zaW9ucyxcbiAgICAgIFwic3RhdGlzdGljXCI6IFwiQXZlcmFnZVwiXG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgZGlza2lvV3JpdGVzQXZlcmFnZShkaW1lbnNpb25zOiB7IEluc3RhbmNlSWQ6IHN0cmluZzsgfSk6IE1ldHJpY1dpdGhEaW1zPHsgSW5zdGFuY2VJZDogc3RyaW5nOyB9PiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIFwibmFtZXNwYWNlXCI6IFwiQ1dBZ2VudFwiLFxuICAgICAgXCJtZXRyaWNOYW1lXCI6IFwiZGlza2lvX3dyaXRlc1wiLFxuICAgICAgXCJkaW1lbnNpb25zTWFwXCI6IGRpbWVuc2lvbnMsXG4gICAgICBcInN0YXRpc3RpY1wiOiBcIkF2ZXJhZ2VcIlxuICAgIH07XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIG1lbUNhY2hlZEF2ZXJhZ2UoZGltZW5zaW9uczogeyBJbnN0YW5jZUlkOiBzdHJpbmc7IH0pOiBNZXRyaWNXaXRoRGltczx7IEluc3RhbmNlSWQ6IHN0cmluZzsgfT4ge1xuICAgIHJldHVybiB7XG4gICAgICBcIm5hbWVzcGFjZVwiOiBcIkNXQWdlbnRcIixcbiAgICAgIFwibWV0cmljTmFtZVwiOiBcIm1lbV9jYWNoZWRcIixcbiAgICAgIFwiZGltZW5zaW9uc01hcFwiOiBkaW1lbnNpb25zLFxuICAgICAgXCJzdGF0aXN0aWNcIjogXCJBdmVyYWdlXCJcbiAgICB9O1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBtZW1Ub3RhbEF2ZXJhZ2UoZGltZW5zaW9uczogeyBJbnN0YW5jZUlkOiBzdHJpbmc7IH0pOiBNZXRyaWNXaXRoRGltczx7IEluc3RhbmNlSWQ6IHN0cmluZzsgfT4ge1xuICAgIHJldHVybiB7XG4gICAgICBcIm5hbWVzcGFjZVwiOiBcIkNXQWdlbnRcIixcbiAgICAgIFwibWV0cmljTmFtZVwiOiBcIm1lbV90b3RhbFwiLFxuICAgICAgXCJkaW1lbnNpb25zTWFwXCI6IGRpbWVuc2lvbnMsXG4gICAgICBcInN0YXRpc3RpY1wiOiBcIkF2ZXJhZ2VcIlxuICAgIH07XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIG1lbVVzZWRBdmVyYWdlKGRpbWVuc2lvbnM6IHsgSW5zdGFuY2VJZDogc3RyaW5nOyB9KTogTWV0cmljV2l0aERpbXM8eyBJbnN0YW5jZUlkOiBzdHJpbmc7IH0+IHtcbiAgICByZXR1cm4ge1xuICAgICAgXCJuYW1lc3BhY2VcIjogXCJDV0FnZW50XCIsXG4gICAgICBcIm1ldHJpY05hbWVcIjogXCJtZW1fdXNlZFwiLFxuICAgICAgXCJkaW1lbnNpb25zTWFwXCI6IGRpbWVuc2lvbnMsXG4gICAgICBcInN0YXRpc3RpY1wiOiBcIkF2ZXJhZ2VcIlxuICAgIH07XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIG1lbVVzZWRQZXJjZW50QXZlcmFnZShkaW1lbnNpb25zOiB7IEluc3RhbmNlSWQ6IHN0cmluZzsgfSk6IE1ldHJpY1dpdGhEaW1zPHsgSW5zdGFuY2VJZDogc3RyaW5nOyB9PiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIFwibmFtZXNwYWNlXCI6IFwiQ1dBZ2VudFwiLFxuICAgICAgXCJtZXRyaWNOYW1lXCI6IFwibWVtX3VzZWRfcGVyY2VudFwiLFxuICAgICAgXCJkaW1lbnNpb25zTWFwXCI6IGRpbWVuc2lvbnMsXG4gICAgICBcInN0YXRpc3RpY1wiOiBcIkF2ZXJhZ2VcIlxuICAgIH07XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIG5ldHN0YXRUY3BFc3RhYmxpc2hlZFN1bShkaW1lbnNpb25zOiB7IEluc3RhbmNlSWQ6IHN0cmluZzsgfSk6IE1ldHJpY1dpdGhEaW1zPHsgSW5zdGFuY2VJZDogc3RyaW5nOyB9PiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIFwibmFtZXNwYWNlXCI6IFwiQ1dBZ2VudFwiLFxuICAgICAgXCJtZXRyaWNOYW1lXCI6IFwibmV0c3RhdF90Y3BfZXN0YWJsaXNoZWRcIixcbiAgICAgIFwiZGltZW5zaW9uc01hcFwiOiBkaW1lbnNpb25zLFxuICAgICAgXCJzdGF0aXN0aWNcIjogXCJTdW1cIlxuICAgIH07XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIG5ldHN0YXRUY3BUaW1lV2FpdFN1bShkaW1lbnNpb25zOiB7IEluc3RhbmNlSWQ6IHN0cmluZzsgfSk6IE1ldHJpY1dpdGhEaW1zPHsgSW5zdGFuY2VJZDogc3RyaW5nOyB9PiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIFwibmFtZXNwYWNlXCI6IFwiQ1dBZ2VudFwiLFxuICAgICAgXCJtZXRyaWNOYW1lXCI6IFwibmV0c3RhdF90Y3BfdGltZV93YWl0XCIsXG4gICAgICBcImRpbWVuc2lvbnNNYXBcIjogZGltZW5zaW9ucyxcbiAgICAgIFwic3RhdGlzdGljXCI6IFwiU3VtXCJcbiAgICB9O1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBzd2FwVXNlZFBlcmNlbnRBdmVyYWdlKGRpbWVuc2lvbnM6IHsgSW5zdGFuY2VJZDogc3RyaW5nOyB9KTogTWV0cmljV2l0aERpbXM8eyBJbnN0YW5jZUlkOiBzdHJpbmc7IH0+IHtcbiAgICByZXR1cm4ge1xuICAgICAgXCJuYW1lc3BhY2VcIjogXCJDV0FnZW50XCIsXG4gICAgICBcIm1ldHJpY05hbWVcIjogXCJzd2FwX3VzZWRfcGVyY2VudFwiLFxuICAgICAgXCJkaW1lbnNpb25zTWFwXCI6IGRpbWVuc2lvbnMsXG4gICAgICBcInN0YXRpc3RpY1wiOiBcIkF2ZXJhZ2VcIlxuICAgIH07XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIHRjUHY0Q29ubmVjdGlvbnNFc3RhYmxpc2hlZFN1bShkaW1lbnNpb25zOiB7IEluc3RhbmNlSWQ6IHN0cmluZzsgfSk6IE1ldHJpY1dpdGhEaW1zPHsgSW5zdGFuY2VJZDogc3RyaW5nOyB9PiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIFwibmFtZXNwYWNlXCI6IFwiQ1dBZ2VudFwiLFxuICAgICAgXCJtZXRyaWNOYW1lXCI6IFwiVENQdjQgQ29ubmVjdGlvbnMgRXN0YWJsaXNoZWRcIixcbiAgICAgIFwiZGltZW5zaW9uc01hcFwiOiBkaW1lbnNpb25zLFxuICAgICAgXCJzdGF0aXN0aWNcIjogXCJTdW1cIlxuICAgIH07XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIHRjUHY2Q29ubmVjdGlvbnNFc3RhYmxpc2hlZFN1bShkaW1lbnNpb25zOiB7IEluc3RhbmNlSWQ6IHN0cmluZzsgfSk6IE1ldHJpY1dpdGhEaW1zPHsgSW5zdGFuY2VJZDogc3RyaW5nOyB9PiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIFwibmFtZXNwYWNlXCI6IFwiQ1dBZ2VudFwiLFxuICAgICAgXCJtZXRyaWNOYW1lXCI6IFwiVENQdjYgQ29ubmVjdGlvbnMgRXN0YWJsaXNoZWRcIixcbiAgICAgIFwiZGltZW5zaW9uc01hcFwiOiBkaW1lbnNpb25zLFxuICAgICAgXCJzdGF0aXN0aWNcIjogXCJTdW1cIlxuICAgIH07XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIG1lbW9yeUNvbW1pdHRlZEJ5dGVzSW5Vc2VBdmVyYWdlKGRpbWVuc2lvbnM6IHsgSW5zdGFuY2VJZDogc3RyaW5nOyB9KTogTWV0cmljV2l0aERpbXM8eyBJbnN0YW5jZUlkOiBzdHJpbmc7IH0+IHtcbiAgICByZXR1cm4ge1xuICAgICAgXCJuYW1lc3BhY2VcIjogXCJDV0FnZW50XCIsXG4gICAgICBcIm1ldHJpY05hbWVcIjogXCJNZW1vcnkgJSBDb21taXR0ZWQgQnl0ZXMgSW4gVXNlXCIsXG4gICAgICBcImRpbWVuc2lvbnNNYXBcIjogZGltZW5zaW9ucyxcbiAgICAgIFwic3RhdGlzdGljXCI6IFwiQXZlcmFnZVwiXG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgcHJvY2Vzc29ySWRsZVRpbWVBdmVyYWdlKGRpbWVuc2lvbnM6IHsgSW5zdGFuY2VJZDogc3RyaW5nOyB9KTogTWV0cmljV2l0aERpbXM8eyBJbnN0YW5jZUlkOiBzdHJpbmc7IH0+IHtcbiAgICByZXR1cm4ge1xuICAgICAgXCJuYW1lc3BhY2VcIjogXCJDV0FnZW50XCIsXG4gICAgICBcIm1ldHJpY05hbWVcIjogXCJQcm9jZXNzb3IgJSBJZGxlIFRpbWVcIixcbiAgICAgIFwiZGltZW5zaW9uc01hcFwiOiBkaW1lbnNpb25zLFxuICAgICAgXCJzdGF0aXN0aWNcIjogXCJBdmVyYWdlXCJcbiAgICB9O1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBwcm9jZXNzb3JJbnRlcnJ1cHRUaW1lQXZlcmFnZShkaW1lbnNpb25zOiB7IEluc3RhbmNlSWQ6IHN0cmluZzsgfSk6IE1ldHJpY1dpdGhEaW1zPHsgSW5zdGFuY2VJZDogc3RyaW5nOyB9PiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIFwibmFtZXNwYWNlXCI6IFwiQ1dBZ2VudFwiLFxuICAgICAgXCJtZXRyaWNOYW1lXCI6IFwiUHJvY2Vzc29yICUgSW50ZXJydXB0IFRpbWVcIixcbiAgICAgIFwiZGltZW5zaW9uc01hcFwiOiBkaW1lbnNpb25zLFxuICAgICAgXCJzdGF0aXN0aWNcIjogXCJBdmVyYWdlXCJcbiAgICB9O1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBwcm9jZXNzb3JVc2VyVGltZUF2ZXJhZ2UoZGltZW5zaW9uczogeyBJbnN0YW5jZUlkOiBzdHJpbmc7IH0pOiBNZXRyaWNXaXRoRGltczx7IEluc3RhbmNlSWQ6IHN0cmluZzsgfT4ge1xuICAgIHJldHVybiB7XG4gICAgICBcIm5hbWVzcGFjZVwiOiBcIkNXQWdlbnRcIixcbiAgICAgIFwibWV0cmljTmFtZVwiOiBcIlByb2Nlc3NvciAlIFVzZXIgVGltZVwiLFxuICAgICAgXCJkaW1lbnNpb25zTWFwXCI6IGRpbWVuc2lvbnMsXG4gICAgICBcInN0YXRpc3RpY1wiOiBcIkF2ZXJhZ2VcIlxuICAgIH07XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGxvZ2ljYWxEaXNrRnJlZVNwYWNlQXZlcmFnZShkaW1lbnNpb25zOiB7IEluc3RhbmNlSWQ6IHN0cmluZzsgfSk6IE1ldHJpY1dpdGhEaW1zPHsgSW5zdGFuY2VJZDogc3RyaW5nOyB9PiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIFwibmFtZXNwYWNlXCI6IFwiQ1dBZ2VudFwiLFxuICAgICAgXCJtZXRyaWNOYW1lXCI6IFwiTG9naWNhbERpc2sgJSBGcmVlIFNwYWNlXCIsXG4gICAgICBcImRpbWVuc2lvbnNNYXBcIjogZGltZW5zaW9ucyxcbiAgICAgIFwic3RhdGlzdGljXCI6IFwiQXZlcmFnZVwiXG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgcGFnaW5nRmlsZVVzYWdlQXZlcmFnZShkaW1lbnNpb25zOiB7IEluc3RhbmNlSWQ6IHN0cmluZzsgfSk6IE1ldHJpY1dpdGhEaW1zPHsgSW5zdGFuY2VJZDogc3RyaW5nOyB9PiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIFwibmFtZXNwYWNlXCI6IFwiQ1dBZ2VudFwiLFxuICAgICAgXCJtZXRyaWNOYW1lXCI6IFwiUGFnaW5nIEZpbGUgJSBVc2FnZVwiLFxuICAgICAgXCJkaW1lbnNpb25zTWFwXCI6IGRpbWVuc2lvbnMsXG4gICAgICBcInN0YXRpc3RpY1wiOiBcIkF2ZXJhZ2VcIlxuICAgIH07XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIE5BVEdhdGV3YXlNZXRyaWNzIHtcbiAgcHVibGljIHN0YXRpYyBhY3RpdmVDb25uZWN0aW9uQ291bnRNYXhpbXVtKGRpbWVuc2lvbnM6IHsgTmF0R2F0ZXdheUlkOiBzdHJpbmc7IH0pOiBNZXRyaWNXaXRoRGltczx7IE5hdEdhdGV3YXlJZDogc3RyaW5nOyB9PiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIFwibmFtZXNwYWNlXCI6IFwiQVdTL05BVEdhdGV3YXlcIixcbiAgICAgIFwibWV0cmljTmFtZVwiOiBcIkFjdGl2ZUNvbm5lY3Rpb25Db3VudFwiLFxuICAgICAgXCJkaW1lbnNpb25zTWFwXCI6IGRpbWVuc2lvbnMsXG4gICAgICBcInN0YXRpc3RpY1wiOiBcIk1heGltdW1cIlxuICAgIH07XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIHBhY2tldHNEcm9wQ291bnRTdW0oZGltZW5zaW9uczogeyBOYXRHYXRld2F5SWQ6IHN0cmluZzsgfSk6IE1ldHJpY1dpdGhEaW1zPHsgTmF0R2F0ZXdheUlkOiBzdHJpbmc7IH0+IHtcbiAgICByZXR1cm4ge1xuICAgICAgXCJuYW1lc3BhY2VcIjogXCJBV1MvTkFUR2F0ZXdheVwiLFxuICAgICAgXCJtZXRyaWNOYW1lXCI6IFwiUGFja2V0c0Ryb3BDb3VudFwiLFxuICAgICAgXCJkaW1lbnNpb25zTWFwXCI6IGRpbWVuc2lvbnMsXG4gICAgICBcInN0YXRpc3RpY1wiOiBcIlN1bVwiXG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgYnl0ZXNJbkZyb21EZXN0aW5hdGlvblN1bShkaW1lbnNpb25zOiB7IE5hdEdhdGV3YXlJZDogc3RyaW5nOyB9KTogTWV0cmljV2l0aERpbXM8eyBOYXRHYXRld2F5SWQ6IHN0cmluZzsgfT4ge1xuICAgIHJldHVybiB7XG4gICAgICBcIm5hbWVzcGFjZVwiOiBcIkFXUy9OQVRHYXRld2F5XCIsXG4gICAgICBcIm1ldHJpY05hbWVcIjogXCJCeXRlc0luRnJvbURlc3RpbmF0aW9uXCIsXG4gICAgICBcImRpbWVuc2lvbnNNYXBcIjogZGltZW5zaW9ucyxcbiAgICAgIFwic3RhdGlzdGljXCI6IFwiU3VtXCJcbiAgICB9O1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBieXRlc0luRnJvbVNvdXJjZVN1bShkaW1lbnNpb25zOiB7IE5hdEdhdGV3YXlJZDogc3RyaW5nOyB9KTogTWV0cmljV2l0aERpbXM8eyBOYXRHYXRld2F5SWQ6IHN0cmluZzsgfT4ge1xuICAgIHJldHVybiB7XG4gICAgICBcIm5hbWVzcGFjZVwiOiBcIkFXUy9OQVRHYXRld2F5XCIsXG4gICAgICBcIm1ldHJpY05hbWVcIjogXCJCeXRlc0luRnJvbVNvdXJjZVwiLFxuICAgICAgXCJkaW1lbnNpb25zTWFwXCI6IGRpbWVuc2lvbnMsXG4gICAgICBcInN0YXRpc3RpY1wiOiBcIlN1bVwiXG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgYnl0ZXNPdXRUb0Rlc3RpbmF0aW9uU3VtKGRpbWVuc2lvbnM6IHsgTmF0R2F0ZXdheUlkOiBzdHJpbmc7IH0pOiBNZXRyaWNXaXRoRGltczx7IE5hdEdhdGV3YXlJZDogc3RyaW5nOyB9PiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIFwibmFtZXNwYWNlXCI6IFwiQVdTL05BVEdhdGV3YXlcIixcbiAgICAgIFwibWV0cmljTmFtZVwiOiBcIkJ5dGVzT3V0VG9EZXN0aW5hdGlvblwiLFxuICAgICAgXCJkaW1lbnNpb25zTWFwXCI6IGRpbWVuc2lvbnMsXG4gICAgICBcInN0YXRpc3RpY1wiOiBcIlN1bVwiXG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgYnl0ZXNPdXRUb1NvdXJjZVN1bShkaW1lbnNpb25zOiB7IE5hdEdhdGV3YXlJZDogc3RyaW5nOyB9KTogTWV0cmljV2l0aERpbXM8eyBOYXRHYXRld2F5SWQ6IHN0cmluZzsgfT4ge1xuICAgIHJldHVybiB7XG4gICAgICBcIm5hbWVzcGFjZVwiOiBcIkFXUy9OQVRHYXRld2F5XCIsXG4gICAgICBcIm1ldHJpY05hbWVcIjogXCJCeXRlc091dFRvU291cmNlXCIsXG4gICAgICBcImRpbWVuc2lvbnNNYXBcIjogZGltZW5zaW9ucyxcbiAgICAgIFwic3RhdGlzdGljXCI6IFwiU3VtXCJcbiAgICB9O1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBjb25uZWN0aW9uQXR0ZW1wdENvdW50U3VtKGRpbWVuc2lvbnM6IHsgTmF0R2F0ZXdheUlkOiBzdHJpbmc7IH0pOiBNZXRyaWNXaXRoRGltczx7IE5hdEdhdGV3YXlJZDogc3RyaW5nOyB9PiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIFwibmFtZXNwYWNlXCI6IFwiQVdTL05BVEdhdGV3YXlcIixcbiAgICAgIFwibWV0cmljTmFtZVwiOiBcIkNvbm5lY3Rpb25BdHRlbXB0Q291bnRcIixcbiAgICAgIFwiZGltZW5zaW9uc01hcFwiOiBkaW1lbnNpb25zLFxuICAgICAgXCJzdGF0aXN0aWNcIjogXCJTdW1cIlxuICAgIH07XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGNvbm5lY3Rpb25Fc3RhYmxpc2hlZENvdW50U3VtKGRpbWVuc2lvbnM6IHsgTmF0R2F0ZXdheUlkOiBzdHJpbmc7IH0pOiBNZXRyaWNXaXRoRGltczx7IE5hdEdhdGV3YXlJZDogc3RyaW5nOyB9PiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIFwibmFtZXNwYWNlXCI6IFwiQVdTL05BVEdhdGV3YXlcIixcbiAgICAgIFwibWV0cmljTmFtZVwiOiBcIkNvbm5lY3Rpb25Fc3RhYmxpc2hlZENvdW50XCIsXG4gICAgICBcImRpbWVuc2lvbnNNYXBcIjogZGltZW5zaW9ucyxcbiAgICAgIFwic3RhdGlzdGljXCI6IFwiU3VtXCJcbiAgICB9O1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBlcnJvclBvcnRBbGxvY2F0aW9uU3VtKGRpbWVuc2lvbnM6IHsgTmF0R2F0ZXdheUlkOiBzdHJpbmc7IH0pOiBNZXRyaWNXaXRoRGltczx7IE5hdEdhdGV3YXlJZDogc3RyaW5nOyB9PiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIFwibmFtZXNwYWNlXCI6IFwiQVdTL05BVEdhdGV3YXlcIixcbiAgICAgIFwibWV0cmljTmFtZVwiOiBcIkVycm9yUG9ydEFsbG9jYXRpb25cIixcbiAgICAgIFwiZGltZW5zaW9uc01hcFwiOiBkaW1lbnNpb25zLFxuICAgICAgXCJzdGF0aXN0aWNcIjogXCJTdW1cIlxuICAgIH07XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGlkbGVUaW1lb3V0Q291bnRTdW0oZGltZW5zaW9uczogeyBOYXRHYXRld2F5SWQ6IHN0cmluZzsgfSk6IE1ldHJpY1dpdGhEaW1zPHsgTmF0R2F0ZXdheUlkOiBzdHJpbmc7IH0+IHtcbiAgICByZXR1cm4ge1xuICAgICAgXCJuYW1lc3BhY2VcIjogXCJBV1MvTkFUR2F0ZXdheVwiLFxuICAgICAgXCJtZXRyaWNOYW1lXCI6IFwiSWRsZVRpbWVvdXRDb3VudFwiLFxuICAgICAgXCJkaW1lbnNpb25zTWFwXCI6IGRpbWVuc2lvbnMsXG4gICAgICBcInN0YXRpc3RpY1wiOiBcIlN1bVwiXG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgcGFja2V0c0luRnJvbURlc3RpbmF0aW9uU3VtKGRpbWVuc2lvbnM6IHsgTmF0R2F0ZXdheUlkOiBzdHJpbmc7IH0pOiBNZXRyaWNXaXRoRGltczx7IE5hdEdhdGV3YXlJZDogc3RyaW5nOyB9PiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIFwibmFtZXNwYWNlXCI6IFwiQVdTL05BVEdhdGV3YXlcIixcbiAgICAgIFwibWV0cmljTmFtZVwiOiBcIlBhY2tldHNJbkZyb21EZXN0aW5hdGlvblwiLFxuICAgICAgXCJkaW1lbnNpb25zTWFwXCI6IGRpbWVuc2lvbnMsXG4gICAgICBcInN0YXRpc3RpY1wiOiBcIlN1bVwiXG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgcGFja2V0c0luRnJvbVNvdXJjZVN1bShkaW1lbnNpb25zOiB7IE5hdEdhdGV3YXlJZDogc3RyaW5nOyB9KTogTWV0cmljV2l0aERpbXM8eyBOYXRHYXRld2F5SWQ6IHN0cmluZzsgfT4ge1xuICAgIHJldHVybiB7XG4gICAgICBcIm5hbWVzcGFjZVwiOiBcIkFXUy9OQVRHYXRld2F5XCIsXG4gICAgICBcIm1ldHJpY05hbWVcIjogXCJQYWNrZXRzSW5Gcm9tU291cmNlXCIsXG4gICAgICBcImRpbWVuc2lvbnNNYXBcIjogZGltZW5zaW9ucyxcbiAgICAgIFwic3RhdGlzdGljXCI6IFwiU3VtXCJcbiAgICB9O1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBwYWNrZXRzT3V0VG9EZXN0aW5hdGlvblN1bShkaW1lbnNpb25zOiB7IE5hdEdhdGV3YXlJZDogc3RyaW5nOyB9KTogTWV0cmljV2l0aERpbXM8eyBOYXRHYXRld2F5SWQ6IHN0cmluZzsgfT4ge1xuICAgIHJldHVybiB7XG4gICAgICBcIm5hbWVzcGFjZVwiOiBcIkFXUy9OQVRHYXRld2F5XCIsXG4gICAgICBcIm1ldHJpY05hbWVcIjogXCJQYWNrZXRzT3V0VG9EZXN0aW5hdGlvblwiLFxuICAgICAgXCJkaW1lbnNpb25zTWFwXCI6IGRpbWVuc2lvbnMsXG4gICAgICBcInN0YXRpc3RpY1wiOiBcIlN1bVwiXG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgcGFja2V0c091dFRvU291cmNlU3VtKGRpbWVuc2lvbnM6IHsgTmF0R2F0ZXdheUlkOiBzdHJpbmc7IH0pOiBNZXRyaWNXaXRoRGltczx7IE5hdEdhdGV3YXlJZDogc3RyaW5nOyB9PiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIFwibmFtZXNwYWNlXCI6IFwiQVdTL05BVEdhdGV3YXlcIixcbiAgICAgIFwibWV0cmljTmFtZVwiOiBcIlBhY2tldHNPdXRUb1NvdXJjZVwiLFxuICAgICAgXCJkaW1lbnNpb25zTWFwXCI6IGRpbWVuc2lvbnMsXG4gICAgICBcInN0YXRpc3RpY1wiOiBcIlN1bVwiXG4gICAgfTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgVHJhbnNpdEdhdGV3YXlNZXRyaWNzIHtcbiAgcHVibGljIHN0YXRpYyBieXRlc0luU3VtKGRpbWVuc2lvbnM6IHsgVHJhbnNpdEdhdGV3YXk6IHN0cmluZzsgfSk6IE1ldHJpY1dpdGhEaW1zPHsgVHJhbnNpdEdhdGV3YXk6IHN0cmluZzsgfT4ge1xuICAgIHJldHVybiB7XG4gICAgICBcIm5hbWVzcGFjZVwiOiBcIkFXUy9UcmFuc2l0R2F0ZXdheVwiLFxuICAgICAgXCJtZXRyaWNOYW1lXCI6IFwiQnl0ZXNJblwiLFxuICAgICAgXCJkaW1lbnNpb25zTWFwXCI6IGRpbWVuc2lvbnMsXG4gICAgICBcInN0YXRpc3RpY1wiOiBcIlN1bVwiXG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgYnl0ZXNPdXRTdW0oZGltZW5zaW9uczogeyBUcmFuc2l0R2F0ZXdheTogc3RyaW5nOyB9KTogTWV0cmljV2l0aERpbXM8eyBUcmFuc2l0R2F0ZXdheTogc3RyaW5nOyB9PiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIFwibmFtZXNwYWNlXCI6IFwiQVdTL1RyYW5zaXRHYXRld2F5XCIsXG4gICAgICBcIm1ldHJpY05hbWVcIjogXCJCeXRlc091dFwiLFxuICAgICAgXCJkaW1lbnNpb25zTWFwXCI6IGRpbWVuc2lvbnMsXG4gICAgICBcInN0YXRpc3RpY1wiOiBcIlN1bVwiXG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgcGFja2V0RHJvcENvdW50QmxhY2tob2xlU3VtKGRpbWVuc2lvbnM6IHsgVHJhbnNpdEdhdGV3YXk6IHN0cmluZzsgfSk6IE1ldHJpY1dpdGhEaW1zPHsgVHJhbnNpdEdhdGV3YXk6IHN0cmluZzsgfT4ge1xuICAgIHJldHVybiB7XG4gICAgICBcIm5hbWVzcGFjZVwiOiBcIkFXUy9UcmFuc2l0R2F0ZXdheVwiLFxuICAgICAgXCJtZXRyaWNOYW1lXCI6IFwiUGFja2V0RHJvcENvdW50QmxhY2tob2xlXCIsXG4gICAgICBcImRpbWVuc2lvbnNNYXBcIjogZGltZW5zaW9ucyxcbiAgICAgIFwic3RhdGlzdGljXCI6IFwiU3VtXCJcbiAgICB9O1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBwYWNrZXREcm9wQ291bnROb1JvdXRlU3VtKGRpbWVuc2lvbnM6IHsgVHJhbnNpdEdhdGV3YXk6IHN0cmluZzsgfSk6IE1ldHJpY1dpdGhEaW1zPHsgVHJhbnNpdEdhdGV3YXk6IHN0cmluZzsgfT4ge1xuICAgIHJldHVybiB7XG4gICAgICBcIm5hbWVzcGFjZVwiOiBcIkFXUy9UcmFuc2l0R2F0ZXdheVwiLFxuICAgICAgXCJtZXRyaWNOYW1lXCI6IFwiUGFja2V0RHJvcENvdW50Tm9Sb3V0ZVwiLFxuICAgICAgXCJkaW1lbnNpb25zTWFwXCI6IGRpbWVuc2lvbnMsXG4gICAgICBcInN0YXRpc3RpY1wiOiBcIlN1bVwiXG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgcGFja2V0c0luU3VtKGRpbWVuc2lvbnM6IHsgVHJhbnNpdEdhdGV3YXk6IHN0cmluZzsgfSk6IE1ldHJpY1dpdGhEaW1zPHsgVHJhbnNpdEdhdGV3YXk6IHN0cmluZzsgfT4ge1xuICAgIHJldHVybiB7XG4gICAgICBcIm5hbWVzcGFjZVwiOiBcIkFXUy9UcmFuc2l0R2F0ZXdheVwiLFxuICAgICAgXCJtZXRyaWNOYW1lXCI6IFwiUGFja2V0c0luXCIsXG4gICAgICBcImRpbWVuc2lvbnNNYXBcIjogZGltZW5zaW9ucyxcbiAgICAgIFwic3RhdGlzdGljXCI6IFwiU3VtXCJcbiAgICB9O1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBwYWNrZXRzT3V0U3VtKGRpbWVuc2lvbnM6IHsgVHJhbnNpdEdhdGV3YXk6IHN0cmluZzsgfSk6IE1ldHJpY1dpdGhEaW1zPHsgVHJhbnNpdEdhdGV3YXk6IHN0cmluZzsgfT4ge1xuICAgIHJldHVybiB7XG4gICAgICBcIm5hbWVzcGFjZVwiOiBcIkFXUy9UcmFuc2l0R2F0ZXdheVwiLFxuICAgICAgXCJtZXRyaWNOYW1lXCI6IFwiUGFja2V0c091dFwiLFxuICAgICAgXCJkaW1lbnNpb25zTWFwXCI6IGRpbWVuc2lvbnMsXG4gICAgICBcInN0YXRpc3RpY1wiOiBcIlN1bVwiXG4gICAgfTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgVlBOTWV0cmljcyB7XG4gIHB1YmxpYyBzdGF0aWMgdHVubmVsRGF0YUluU3VtKGRpbWVuc2lvbnM6IHsgVnBuSWQ6IHN0cmluZzsgfSk6IE1ldHJpY1dpdGhEaW1zPHsgVnBuSWQ6IHN0cmluZzsgfT4ge1xuICAgIHJldHVybiB7XG4gICAgICBcIm5hbWVzcGFjZVwiOiBcIkFXUy9WUE5cIixcbiAgICAgIFwibWV0cmljTmFtZVwiOiBcIlR1bm5lbERhdGFJblwiLFxuICAgICAgXCJkaW1lbnNpb25zTWFwXCI6IGRpbWVuc2lvbnMsXG4gICAgICBcInN0YXRpc3RpY1wiOiBcIlN1bVwiXG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgdHVubmVsU3RhdGVBdmVyYWdlKGRpbWVuc2lvbnM6IHsgVnBuSWQ6IHN0cmluZzsgfSk6IE1ldHJpY1dpdGhEaW1zPHsgVnBuSWQ6IHN0cmluZzsgfT4ge1xuICAgIHJldHVybiB7XG4gICAgICBcIm5hbWVzcGFjZVwiOiBcIkFXUy9WUE5cIixcbiAgICAgIFwibWV0cmljTmFtZVwiOiBcIlR1bm5lbFN0YXRlXCIsXG4gICAgICBcImRpbWVuc2lvbnNNYXBcIjogZGltZW5zaW9ucyxcbiAgICAgIFwic3RhdGlzdGljXCI6IFwiQXZlcmFnZVwiXG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgdHVubmVsRGF0YU91dFN1bShkaW1lbnNpb25zOiB7IFZwbklkOiBzdHJpbmc7IH0pOiBNZXRyaWNXaXRoRGltczx7IFZwbklkOiBzdHJpbmc7IH0+IHtcbiAgICByZXR1cm4ge1xuICAgICAgXCJuYW1lc3BhY2VcIjogXCJBV1MvVlBOXCIsXG4gICAgICBcIm1ldHJpY05hbWVcIjogXCJUdW5uZWxEYXRhT3V0XCIsXG4gICAgICBcImRpbWVuc2lvbnNNYXBcIjogZGltZW5zaW9ucyxcbiAgICAgIFwic3RhdGlzdGljXCI6IFwiU3VtXCJcbiAgICB9O1xuICB9XG59Il19
|