UNPKG

cdk-monitoring-constructs

Version:

[![NPM version](https://badge.fury.io/js/cdk-monitoring-constructs.svg)](https://badge.fury.io/js/cdk-monitoring-constructs) [![Maven Central](https://maven-badges.herokuapp.com/maven-central/io.github.cdklabs/cdkmonitoringconstructs/badge.svg)](https://m

56 lines 12.9 kB
"use strict"; var _a; Object.defineProperty(exports, "__esModule", { value: true }); exports.OpenSearchServerlessMetricFactory = void 0; const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti"); const aws_cdk_lib_1 = require("aws-cdk-lib"); const common_1 = require("../../common"); const OpenSearchServerlessNamespace = "AWS/AOSS"; /** * @experimental This is subject to change if an L2 construct becomes available. * * @see https://docs.aws.amazon.com/opensearch-service/latest/developerguide/monitoring-cloudwatch.html */ class OpenSearchServerlessMetricFactory extends common_1.BaseMetricFactory { constructor(metricFactory, props) { super(metricFactory, props); this.rateComputationMethod = props.rateComputationMethod ?? common_1.RateComputationMethod.AVERAGE; this.dimensionsMap = { ClientId: this.account ?? aws_cdk_lib_1.Stack.of(props.collection).account, CollectionId: props.collection.attrId, CollectionName: props.collection.name, }; } metricSearchRequestErrors() { return this.metricFactory.createMetric("SearchRequestErrors", common_1.MetricStatistic.SUM, "SearchRequestErrors", this.dimensionsMap, undefined, OpenSearchServerlessNamespace, undefined, this.region, this.account); } metricSearchRequestLatency(statistic) { return this.metricFactory.createMetric("SearchRequestLatency", (0, common_1.getLatencyTypeStatistic)(statistic), `SearchRequestLatency ${(0, common_1.getLatencyTypeLabel)(statistic)}`, this.dimensionsMap, undefined, OpenSearchServerlessNamespace, undefined, this.region, this.account); } metricIngestionRequestSuccess() { return this.metricFactory.createMetric("IngestionRequestSuccess", common_1.MetricStatistic.SUM, "IngestionRequestSuccess", this.dimensionsMap, undefined, OpenSearchServerlessNamespace, undefined, this.region, this.account); } metricIngestionRequestErrors() { return this.metricFactory.createMetric("IngestionRequestErrors", common_1.MetricStatistic.SUM, "IngestionRequestErrors", this.dimensionsMap, undefined, OpenSearchServerlessNamespace, undefined, this.region, this.account); } metricIngestionRequestLatency(statistic) { return this.metricFactory.createMetric("IngestionRequestLatency", (0, common_1.getLatencyTypeStatistic)(statistic), `IngestionRequestLatency ${(0, common_1.getLatencyTypeLabel)(statistic)}`, this.dimensionsMap, undefined, OpenSearchServerlessNamespace, undefined, this.region, this.account); } metric4xxCount() { return this.metricFactory.createMetric("4xx", common_1.MetricStatistic.SUM, "4xx", this.dimensionsMap, undefined, OpenSearchServerlessNamespace, undefined, this.region, this.account); } metric4xxRate() { return this.metricFactory.toRate(this.metric4xxCount(), this.rateComputationMethod, false, "errors"); } metric5xxCount() { return this.metricFactory.createMetric("5xx", common_1.MetricStatistic.SUM, "5xx", this.dimensionsMap, undefined, OpenSearchServerlessNamespace, undefined, this.region, this.account); } metric5xxRate() { return this.metricFactory.toRate(this.metric5xxCount(), this.rateComputationMethod, false, "faults"); } } exports.OpenSearchServerlessMetricFactory = OpenSearchServerlessMetricFactory; _a = JSII_RTTI_SYMBOL_1; OpenSearchServerlessMetricFactory[_a] = { fqn: "cdk-monitoring-constructs.OpenSearchServerlessMetricFactory", version: "10.0.0" }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiT3BlblNlYXJjaFNlcnZlcmxlc3NNZXRyaWNGYWN0b3J5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiT3BlblNlYXJjaFNlcnZlcmxlc3NNZXRyaWNGYWN0b3J5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsNkNBQW9DO0FBSXBDLHlDQVVzQjtBQUV0QixNQUFNLDZCQUE2QixHQUFHLFVBQVUsQ0FBQztBQVlqRDs7OztHQUlHO0FBQ0gsTUFBYSxpQ0FBa0MsU0FBUSwwQkFBaUI7SUFJdEUsWUFDRSxhQUE0QixFQUM1QixLQUE2QztRQUU3QyxLQUFLLENBQUMsYUFBYSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBRTVCLElBQUksQ0FBQyxxQkFBcUI7WUFDeEIsS0FBSyxDQUFDLHFCQUFxQixJQUFJLDhCQUFxQixDQUFDLE9BQU8sQ0FBQztRQUMvRCxJQUFJLENBQUMsYUFBYSxHQUFHO1lBQ25CLFFBQVEsRUFBRSxJQUFJLENBQUMsT0FBTyxJQUFJLG1CQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQyxPQUFPO1lBQzVELFlBQVksRUFBRSxLQUFLLENBQUMsVUFBVSxDQUFDLE1BQU07WUFDckMsY0FBYyxFQUFFLEtBQUssQ0FBQyxVQUFVLENBQUMsSUFBSTtTQUN0QyxDQUFDO0lBQ0osQ0FBQztJQUVELHlCQUF5QjtRQUN2QixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUNwQyxxQkFBcUIsRUFDckIsd0JBQWUsQ0FBQyxHQUFHLEVBQ25CLHFCQUFxQixFQUNyQixJQUFJLENBQUMsYUFBYSxFQUNsQixTQUFTLEVBQ1QsNkJBQTZCLEVBQzdCLFNBQVMsRUFDVCxJQUFJLENBQUMsTUFBTSxFQUNYLElBQUksQ0FBQyxPQUFPLENBQ2IsQ0FBQztJQUNKLENBQUM7SUFFRCwwQkFBMEIsQ0FBQyxTQUFzQjtRQUMvQyxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUNwQyxzQkFBc0IsRUFDdEIsSUFBQSxnQ0FBdUIsRUFBQyxTQUFTLENBQUMsRUFDbEMsd0JBQXdCLElBQUEsNEJBQW1CLEVBQUMsU0FBUyxDQUFDLEVBQUUsRUFDeEQsSUFBSSxDQUFDLGFBQWEsRUFDbEIsU0FBUyxFQUNULDZCQUE2QixFQUM3QixTQUFTLEVBQ1QsSUFBSSxDQUFDLE1BQU0sRUFDWCxJQUFJLENBQUMsT0FBTyxDQUNiLENBQUM7SUFDSixDQUFDO0lBRUQsNkJBQTZCO1FBQzNCLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQ3BDLHlCQUF5QixFQUN6Qix3QkFBZSxDQUFDLEdBQUcsRUFDbkIseUJBQXlCLEVBQ3pCLElBQUksQ0FBQyxhQUFhLEVBQ2xCLFNBQVMsRUFDVCw2QkFBNkIsRUFDN0IsU0FBUyxFQUNULElBQUksQ0FBQyxNQUFNLEVBQ1gsSUFBSSxDQUFDLE9BQU8sQ0FDYixDQUFDO0lBQ0osQ0FBQztJQUVELDRCQUE0QjtRQUMxQixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUNwQyx3QkFBd0IsRUFDeEIsd0JBQWUsQ0FBQyxHQUFHLEVBQ25CLHdCQUF3QixFQUN4QixJQUFJLENBQUMsYUFBYSxFQUNsQixTQUFTLEVBQ1QsNkJBQTZCLEVBQzdCLFNBQVMsRUFDVCxJQUFJLENBQUMsTUFBTSxFQUNYLElBQUksQ0FBQyxPQUFPLENBQ2IsQ0FBQztJQUNKLENBQUM7SUFFRCw2QkFBNkIsQ0FDM0IsU0FBc0I7UUFFdEIsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FDcEMseUJBQXlCLEVBQ3pCLElBQUEsZ0NBQXVCLEVBQUMsU0FBUyxDQUFDLEVBQ2xDLDJCQUEyQixJQUFBLDRCQUFtQixFQUFDLFNBQVMsQ0FBQyxFQUFFLEVBQzNELElBQUksQ0FBQyxhQUFhLEVBQ2xCLFNBQVMsRUFDVCw2QkFBNkIsRUFDN0IsU0FBUyxFQUNULElBQUksQ0FBQyxNQUFNLEVBQ1gsSUFBSSxDQUFDLE9BQU8sQ0FDYixDQUFDO0lBQ0osQ0FBQztJQUVELGNBQWM7UUFDWixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUNwQyxLQUFLLEVBQ0wsd0JBQWUsQ0FBQyxHQUFHLEVBQ25CLEtBQUssRUFDTCxJQUFJLENBQUMsYUFBYSxFQUNsQixTQUFTLEVBQ1QsNkJBQTZCLEVBQzdCLFNBQVMsRUFDVCxJQUFJLENBQUMsTUFBTSxFQUNYLElBQUksQ0FBQyxPQUFPLENBQ2IsQ0FBQztJQUNKLENBQUM7SUFFRCxhQUFhO1FBQ1gsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FDOUIsSUFBSSxDQUFDLGNBQWMsRUFBRSxFQUNyQixJQUFJLENBQUMscUJBQXFCLEVBQzFCLEtBQUssRUFDTCxRQUFRLENBQ1QsQ0FBQztJQUNKLENBQUM7SUFFRCxjQUFjO1FBQ1osT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FDcEMsS0FBSyxFQUNMLHdCQUFlLENBQUMsR0FBRyxFQUNuQixLQUFLLEVBQ0wsSUFBSSxDQUFDLGFBQWEsRUFDbEIsU0FBUyxFQUNULDZCQUE2QixFQUM3QixTQUFTLEVBQ1QsSUFBSSxDQUFDLE1BQU0sRUFDWCxJQUFJLENBQUMsT0FBTyxDQUNiLENBQUM7SUFDSixDQUFDO0lBRUQsYUFBYTtRQUNYLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQzlCLElBQUksQ0FBQyxjQUFjLEVBQUUsRUFDckIsSUFBSSxDQUFDLHFCQUFxQixFQUMxQixLQUFLLEVBQ0wsUUFBUSxDQUNULENBQUM7SUFDSixDQUFDOztBQXZJSCw4RUF3SUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTdGFjayB9IGZyb20gXCJhd3MtY2RrLWxpYlwiO1xuaW1wb3J0IHR5cGUgeyBEaW1lbnNpb25zTWFwIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1jbG91ZHdhdGNoXCI7XG5pbXBvcnQgdHlwZSB7IENmbkNvbGxlY3Rpb24gfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLW9wZW5zZWFyY2hzZXJ2ZXJsZXNzXCI7XG5cbmltcG9ydCB7XG4gIEJhc2VNZXRyaWNGYWN0b3J5UHJvcHMsXG4gIFJhdGVDb21wdXRhdGlvbk1ldGhvZCxcbiAgQmFzZU1ldHJpY0ZhY3RvcnksXG4gIE1ldHJpY0ZhY3RvcnksXG4gIE1ldHJpY1dpdGhBbGFybVN1cHBvcnQsXG4gIE1ldHJpY1N0YXRpc3RpYyxcbiAgTGF0ZW5jeVR5cGUsXG4gIGdldExhdGVuY3lUeXBlU3RhdGlzdGljLFxuICBnZXRMYXRlbmN5VHlwZUxhYmVsLFxufSBmcm9tIFwiLi4vLi4vY29tbW9uXCI7XG5cbmNvbnN0IE9wZW5TZWFyY2hTZXJ2ZXJsZXNzTmFtZXNwYWNlID0gXCJBV1MvQU9TU1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIE9wZW5TZWFyY2hTZXJ2ZXJsZXNzTWV0cmljRmFjdG9yeVByb3BzXG4gIGV4dGVuZHMgQmFzZU1ldHJpY0ZhY3RvcnlQcm9wcyB7XG4gIHJlYWRvbmx5IGNvbGxlY3Rpb246IENmbkNvbGxlY3Rpb247XG5cbiAgLyoqXG4gICAqIEBkZWZhdWx0IC0ge0BsaW5rIFJhdGVDb21wdXRhdGlvbk1ldGhvZC5BVkVSQUdFfVxuICAgKi9cbiAgcmVhZG9ubHkgcmF0ZUNvbXB1dGF0aW9uTWV0aG9kPzogUmF0ZUNvbXB1dGF0aW9uTWV0aG9kO1xufVxuXG4vKipcbiAqIEBleHBlcmltZW50YWwgVGhpcyBpcyBzdWJqZWN0IHRvIGNoYW5nZSBpZiBhbiBMMiBjb25zdHJ1Y3QgYmVjb21lcyBhdmFpbGFibGUuXG4gKlxuICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vb3BlbnNlYXJjaC1zZXJ2aWNlL2xhdGVzdC9kZXZlbG9wZXJndWlkZS9tb25pdG9yaW5nLWNsb3Vkd2F0Y2guaHRtbFxuICovXG5leHBvcnQgY2xhc3MgT3BlblNlYXJjaFNlcnZlcmxlc3NNZXRyaWNGYWN0b3J5IGV4dGVuZHMgQmFzZU1ldHJpY0ZhY3Rvcnkge1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgcmF0ZUNvbXB1dGF0aW9uTWV0aG9kOiBSYXRlQ29tcHV0YXRpb25NZXRob2Q7XG4gIHByb3RlY3RlZCByZWFkb25seSBkaW1lbnNpb25zTWFwOiBEaW1lbnNpb25zTWFwO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIG1ldHJpY0ZhY3Rvcnk6IE1ldHJpY0ZhY3RvcnksXG4gICAgcHJvcHM6IE9wZW5TZWFyY2hTZXJ2ZXJsZXNzTWV0cmljRmFjdG9yeVByb3BzLFxuICApIHtcbiAgICBzdXBlcihtZXRyaWNGYWN0b3J5LCBwcm9wcyk7XG5cbiAgICB0aGlzLnJhdGVDb21wdXRhdGlvbk1ldGhvZCA9XG4gICAgICBwcm9wcy5yYXRlQ29tcHV0YXRpb25NZXRob2QgPz8gUmF0ZUNvbXB1dGF0aW9uTWV0aG9kLkFWRVJBR0U7XG4gICAgdGhpcy5kaW1lbnNpb25zTWFwID0ge1xuICAgICAgQ2xpZW50SWQ6IHRoaXMuYWNjb3VudCA/PyBTdGFjay5vZihwcm9wcy5jb2xsZWN0aW9uKS5hY2NvdW50LFxuICAgICAgQ29sbGVjdGlvbklkOiBwcm9wcy5jb2xsZWN0aW9uLmF0dHJJZCxcbiAgICAgIENvbGxlY3Rpb25OYW1lOiBwcm9wcy5jb2xsZWN0aW9uLm5hbWUsXG4gICAgfTtcbiAgfVxuXG4gIG1ldHJpY1NlYXJjaFJlcXVlc3RFcnJvcnMoKTogTWV0cmljV2l0aEFsYXJtU3VwcG9ydCB7XG4gICAgcmV0dXJuIHRoaXMubWV0cmljRmFjdG9yeS5jcmVhdGVNZXRyaWMoXG4gICAgICBcIlNlYXJjaFJlcXVlc3RFcnJvcnNcIixcbiAgICAgIE1ldHJpY1N0YXRpc3RpYy5TVU0sXG4gICAgICBcIlNlYXJjaFJlcXVlc3RFcnJvcnNcIixcbiAgICAgIHRoaXMuZGltZW5zaW9uc01hcCxcbiAgICAgIHVuZGVmaW5lZCxcbiAgICAgIE9wZW5TZWFyY2hTZXJ2ZXJsZXNzTmFtZXNwYWNlLFxuICAgICAgdW5kZWZpbmVkLFxuICAgICAgdGhpcy5yZWdpb24sXG4gICAgICB0aGlzLmFjY291bnQsXG4gICAgKTtcbiAgfVxuXG4gIG1ldHJpY1NlYXJjaFJlcXVlc3RMYXRlbmN5KHN0YXRpc3RpYzogTGF0ZW5jeVR5cGUpOiBNZXRyaWNXaXRoQWxhcm1TdXBwb3J0IHtcbiAgICByZXR1cm4gdGhpcy5tZXRyaWNGYWN0b3J5LmNyZWF0ZU1ldHJpYyhcbiAgICAgIFwiU2VhcmNoUmVxdWVzdExhdGVuY3lcIixcbiAgICAgIGdldExhdGVuY3lUeXBlU3RhdGlzdGljKHN0YXRpc3RpYyksXG4gICAgICBgU2VhcmNoUmVxdWVzdExhdGVuY3kgJHtnZXRMYXRlbmN5VHlwZUxhYmVsKHN0YXRpc3RpYyl9YCxcbiAgICAgIHRoaXMuZGltZW5zaW9uc01hcCxcbiAgICAgIHVuZGVmaW5lZCxcbiAgICAgIE9wZW5TZWFyY2hTZXJ2ZXJsZXNzTmFtZXNwYWNlLFxuICAgICAgdW5kZWZpbmVkLFxuICAgICAgdGhpcy5yZWdpb24sXG4gICAgICB0aGlzLmFjY291bnQsXG4gICAgKTtcbiAgfVxuXG4gIG1ldHJpY0luZ2VzdGlvblJlcXVlc3RTdWNjZXNzKCk6IE1ldHJpY1dpdGhBbGFybVN1cHBvcnQge1xuICAgIHJldHVybiB0aGlzLm1ldHJpY0ZhY3RvcnkuY3JlYXRlTWV0cmljKFxuICAgICAgXCJJbmdlc3Rpb25SZXF1ZXN0U3VjY2Vzc1wiLFxuICAgICAgTWV0cmljU3RhdGlzdGljLlNVTSxcbiAgICAgIFwiSW5nZXN0aW9uUmVxdWVzdFN1Y2Nlc3NcIixcbiAgICAgIHRoaXMuZGltZW5zaW9uc01hcCxcbiAgICAgIHVuZGVmaW5lZCxcbiAgICAgIE9wZW5TZWFyY2hTZXJ2ZXJsZXNzTmFtZXNwYWNlLFxuICAgICAgdW5kZWZpbmVkLFxuICAgICAgdGhpcy5yZWdpb24sXG4gICAgICB0aGlzLmFjY291bnQsXG4gICAgKTtcbiAgfVxuXG4gIG1ldHJpY0luZ2VzdGlvblJlcXVlc3RFcnJvcnMoKTogTWV0cmljV2l0aEFsYXJtU3VwcG9ydCB7XG4gICAgcmV0dXJuIHRoaXMubWV0cmljRmFjdG9yeS5jcmVhdGVNZXRyaWMoXG4gICAgICBcIkluZ2VzdGlvblJlcXVlc3RFcnJvcnNcIixcbiAgICAgIE1ldHJpY1N0YXRpc3RpYy5TVU0sXG4gICAgICBcIkluZ2VzdGlvblJlcXVlc3RFcnJvcnNcIixcbiAgICAgIHRoaXMuZGltZW5zaW9uc01hcCxcbiAgICAgIHVuZGVmaW5lZCxcbiAgICAgIE9wZW5TZWFyY2hTZXJ2ZXJsZXNzTmFtZXNwYWNlLFxuICAgICAgdW5kZWZpbmVkLFxuICAgICAgdGhpcy5yZWdpb24sXG4gICAgICB0aGlzLmFjY291bnQsXG4gICAgKTtcbiAgfVxuXG4gIG1ldHJpY0luZ2VzdGlvblJlcXVlc3RMYXRlbmN5KFxuICAgIHN0YXRpc3RpYzogTGF0ZW5jeVR5cGUsXG4gICk6IE1ldHJpY1dpdGhBbGFybVN1cHBvcnQge1xuICAgIHJldHVybiB0aGlzLm1ldHJpY0ZhY3RvcnkuY3JlYXRlTWV0cmljKFxuICAgICAgXCJJbmdlc3Rpb25SZXF1ZXN0TGF0ZW5jeVwiLFxuICAgICAgZ2V0TGF0ZW5jeVR5cGVTdGF0aXN0aWMoc3RhdGlzdGljKSxcbiAgICAgIGBJbmdlc3Rpb25SZXF1ZXN0TGF0ZW5jeSAke2dldExhdGVuY3lUeXBlTGFiZWwoc3RhdGlzdGljKX1gLFxuICAgICAgdGhpcy5kaW1lbnNpb25zTWFwLFxuICAgICAgdW5kZWZpbmVkLFxuICAgICAgT3BlblNlYXJjaFNlcnZlcmxlc3NOYW1lc3BhY2UsXG4gICAgICB1bmRlZmluZWQsXG4gICAgICB0aGlzLnJlZ2lvbixcbiAgICAgIHRoaXMuYWNjb3VudCxcbiAgICApO1xuICB9XG5cbiAgbWV0cmljNHh4Q291bnQoKTogTWV0cmljV2l0aEFsYXJtU3VwcG9ydCB7XG4gICAgcmV0dXJuIHRoaXMubWV0cmljRmFjdG9yeS5jcmVhdGVNZXRyaWMoXG4gICAgICBcIjR4eFwiLFxuICAgICAgTWV0cmljU3RhdGlzdGljLlNVTSxcbiAgICAgIFwiNHh4XCIsXG4gICAgICB0aGlzLmRpbWVuc2lvbnNNYXAsXG4gICAgICB1bmRlZmluZWQsXG4gICAgICBPcGVuU2VhcmNoU2VydmVybGVzc05hbWVzcGFjZSxcbiAgICAgIHVuZGVmaW5lZCxcbiAgICAgIHRoaXMucmVnaW9uLFxuICAgICAgdGhpcy5hY2NvdW50LFxuICAgICk7XG4gIH1cblxuICBtZXRyaWM0eHhSYXRlKCk6IE1ldHJpY1dpdGhBbGFybVN1cHBvcnQge1xuICAgIHJldHVybiB0aGlzLm1ldHJpY0ZhY3RvcnkudG9SYXRlKFxuICAgICAgdGhpcy5tZXRyaWM0eHhDb3VudCgpLFxuICAgICAgdGhpcy5yYXRlQ29tcHV0YXRpb25NZXRob2QsXG4gICAgICBmYWxzZSxcbiAgICAgIFwiZXJyb3JzXCIsXG4gICAgKTtcbiAgfVxuXG4gIG1ldHJpYzV4eENvdW50KCk6IE1ldHJpY1dpdGhBbGFybVN1cHBvcnQge1xuICAgIHJldHVybiB0aGlzLm1ldHJpY0ZhY3RvcnkuY3JlYXRlTWV0cmljKFxuICAgICAgXCI1eHhcIixcbiAgICAgIE1ldHJpY1N0YXRpc3RpYy5TVU0sXG4gICAgICBcIjV4eFwiLFxuICAgICAgdGhpcy5kaW1lbnNpb25zTWFwLFxuICAgICAgdW5kZWZpbmVkLFxuICAgICAgT3BlblNlYXJjaFNlcnZlcmxlc3NOYW1lc3BhY2UsXG4gICAgICB1bmRlZmluZWQsXG4gICAgICB0aGlzLnJlZ2lvbixcbiAgICAgIHRoaXMuYWNjb3VudCxcbiAgICApO1xuICB9XG5cbiAgbWV0cmljNXh4UmF0ZSgpOiBNZXRyaWNXaXRoQWxhcm1TdXBwb3J0IHtcbiAgICByZXR1cm4gdGhpcy5tZXRyaWNGYWN0b3J5LnRvUmF0ZShcbiAgICAgIHRoaXMubWV0cmljNXh4Q291bnQoKSxcbiAgICAgIHRoaXMucmF0ZUNvbXB1dGF0aW9uTWV0aG9kLFxuICAgICAgZmFsc2UsXG4gICAgICBcImZhdWx0c1wiLFxuICAgICk7XG4gIH1cbn1cbiJdfQ==