UNPKG

@iotize/ionic

Version:

Iotize specific building blocks on top of @ionic/angular.

110 lines 17.7 kB
import { __decorate, __metadata } from "tslib"; import { ChangeDetectorRef, Component, ElementRef, Inject, Input, NgZone, PLATFORM_ID, } from '@angular/core'; import { PolarChartComponent, LegendPosition } from '@swimlane/ngx-charts'; import { MonitoringAppGenComponent, } from '../../metadata/decorators'; import { ChartDataModel, } from '../ChartDataModel'; import { dataWithSeriesToCsv } from '../ExportDataFormat'; import * as i0 from "@angular/core"; import * as i1 from "@angular/common"; import * as i2 from "@swimlane/ngx-charts"; import * as i3 from "@ionic/angular"; import * as i4 from "../../ui-directive/export-data.directive"; let TapVariablePolarRadarChartComponent = class TapVariablePolarRadarChartComponent extends PolarChartComponent { set variable(variableOrArray) { this.input = this.chartModel.initVariable(variableOrArray); } set input(inputs) { this.subscription = this.chartModel .defineMultiInputStream(inputs) .subscribe((result) => { this.results = result; this.loaded = true; }); } constructor(myChartElement, zone, platformId, cd) { super(myChartElement, zone, cd, platformId); this.colorScheme = { domain: [ '#5DADE2', '#9B59B6', '#F39C12', '#5AA454', '#A10A28', '#C7B42C', '#AAAAAA', ], }; this.legend = true; this.legendPosition = LegendPosition.Below; this.showExportButton = false; this.xAxis = true; this.showXAxisLabel = true; this.yAxis = true; this.showYAxisLabel = true; this.valueCountLimit = 4; this.loaded = false; this.results = [ { name: 'Value', series: [], }, ]; this.chartModel = new ChartDataModel(); } createExportedData() { return dataWithSeriesToCsv(this.results); } ngOnDestroy() { this.subscription?.unsubscribe(); this.chartModel.destroyCurrentSub(); } onSelect(event) { /* Not implemented this.chartModel.showDetail(event, this.modalController, TapVariableDataPopupComponent); */ } }; /** @nocollapse */ TapVariablePolarRadarChartComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TapVariablePolarRadarChartComponent, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }, { token: PLATFORM_ID }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); /** @nocollapse */ TapVariablePolarRadarChartComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: TapVariablePolarRadarChartComponent, selector: "tap-variable-polar-radar-chart", inputs: { colorScheme: "colorScheme", legend: "legend", legendPosition: "legendPosition", showExportButton: "showExportButton", exportedFileName: "exportedFileName", xAxis: "xAxis", showXAxisLabel: "showXAxisLabel", yAxis: "yAxis", showYAxisLabel: "showYAxisLabel", valueCountLimit: "valueCountLimit", variable: "variable", input: "input" }, usesInheritance: true, ngImport: i0, template: "<div\n #containerRef\n [ngClass]=\"legendPosition === 'below' ? 'belowLegend' : 'rightLegend'\"\n style=\"position: relative\"\n>\n <ngx-charts-polar-chart\n *ngIf=\"loaded\"\n #polarChart\n [view]=\"[containerRef.offsetWidth, containerRef.offsetHeight]\"\n [scheme]=\"colorScheme\"\n [legend]=\"legend\"\n [legendPosition]=\"legendPosition\"\n [showXAxisLabel]=\"showXAxisLabel\"\n [showYAxisLabel]=\"showYAxisLabel\"\n [xAxis]=\"xAxis\"\n [yAxis]=\"yAxis\"\n [results]=\"results\"\n (select)=\"onSelect($event)\"\n >\n </ngx-charts-polar-chart>\n <ion-fab-button\n id=\"exportFabButton\"\n size=\"small\"\n tapExportData\n *ngIf=\"showExportButton\"\n [exportedFileName]=\"exportedFileName\"\n [dataToExport]=\"createExportedData.bind(this)\"\n >\n <ion-icon name=\"download\"></ion-icon>\n </ion-fab-button>\n</div>\n", styles: ["::ng-deep .horizontal-legend{overflow:auto!important}.belowLegend{height:50vh;width:100%;margin-bottom:100px}.rightLegend{height:50vh;width:100%}#exportFabButton{position:absolute;top:10px;right:10px}@media (prefers-color-scheme: dark){::ng-deep span.legend-label-text{color:#ccc!important}::ng-deep span.legend-label-text:hover{color:#fff!important}::ng-deep .ngx-charts text{fill:#fff!important}}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.PolarChartComponent, selector: "ngx-charts-polar-chart", inputs: ["legend", "legendTitle", "legendPosition", "xAxis", "yAxis", "showXAxisLabel", "showYAxisLabel", "xAxisLabel", "yAxisLabel", "autoScale", "showGridLines", "curve", "activeEntries", "schemeType", "rangeFillOpacity", "trimYAxisTicks", "maxYAxisTickLength", "xAxisTickFormatting", "yAxisTickFormatting", "roundDomains", "tooltipDisabled", "showSeriesOnHover", "gradient", "yAxisMinScale", "labelTrim", "labelTrimSize", "wrapTicks"], outputs: ["activate", "deactivate"] }, { kind: "component", type: i3.IonFabButton, selector: "ion-fab-button", inputs: ["activated", "closeIcon", "color", "disabled", "download", "href", "mode", "rel", "routerAnimation", "routerDirection", "show", "size", "target", "translucent", "type"] }, { kind: "component", type: i3.IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "directive", type: i4.ExportDataDirective, selector: "[tapExportData]", inputs: ["exportedFileName", "dataToExport", "format"], outputs: ["exportDataError"] }] }); TapVariablePolarRadarChartComponent = __decorate([ MonitoringAppGenComponent({ constraints: { isNumber: 'YES', }, }), __metadata("design:paramtypes", [ElementRef, NgZone, String, ChangeDetectorRef]) ], TapVariablePolarRadarChartComponent); export { TapVariablePolarRadarChartComponent }; i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TapVariablePolarRadarChartComponent, decorators: [{ type: Component, args: [{ selector: 'tap-variable-polar-radar-chart', template: "<div\n #containerRef\n [ngClass]=\"legendPosition === 'below' ? 'belowLegend' : 'rightLegend'\"\n style=\"position: relative\"\n>\n <ngx-charts-polar-chart\n *ngIf=\"loaded\"\n #polarChart\n [view]=\"[containerRef.offsetWidth, containerRef.offsetHeight]\"\n [scheme]=\"colorScheme\"\n [legend]=\"legend\"\n [legendPosition]=\"legendPosition\"\n [showXAxisLabel]=\"showXAxisLabel\"\n [showYAxisLabel]=\"showYAxisLabel\"\n [xAxis]=\"xAxis\"\n [yAxis]=\"yAxis\"\n [results]=\"results\"\n (select)=\"onSelect($event)\"\n >\n </ngx-charts-polar-chart>\n <ion-fab-button\n id=\"exportFabButton\"\n size=\"small\"\n tapExportData\n *ngIf=\"showExportButton\"\n [exportedFileName]=\"exportedFileName\"\n [dataToExport]=\"createExportedData.bind(this)\"\n >\n <ion-icon name=\"download\"></ion-icon>\n </ion-fab-button>\n</div>\n", styles: ["::ng-deep .horizontal-legend{overflow:auto!important}.belowLegend{height:50vh;width:100%;margin-bottom:100px}.rightLegend{height:50vh;width:100%}#exportFabButton{position:absolute;top:10px;right:10px}@media (prefers-color-scheme: dark){::ng-deep span.legend-label-text{color:#ccc!important}::ng-deep span.legend-label-text:hover{color:#fff!important}::ng-deep .ngx-charts text{fill:#fff!important}}\n"] }] }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.NgZone }, { type: undefined, decorators: [{ type: Inject, args: [PLATFORM_ID] }] }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { colorScheme: [{ type: Input }], legend: [{ type: Input }], legendPosition: [{ type: Input }], showExportButton: [{ type: Input }], exportedFileName: [{ type: Input }], xAxis: [{ type: Input }], showXAxisLabel: [{ type: Input }], yAxis: [{ type: Input }], showYAxisLabel: [{ type: Input }], valueCountLimit: [{ type: Input }], variable: [{ type: Input }], input: [{ type: Input }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFwLXZhcmlhYmxlLXBvbGFyLXJhZGFyLWNoYXJ0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2lvdGl6ZS1pb25pYy9tb25pdG9yaW5nL3NyYy9saWIvdWktY29tcG9uZW50cy90YXAtdmFyaWFibGUtcG9sYXItcmFkYXItY2hhcnQvdGFwLXZhcmlhYmxlLXBvbGFyLXJhZGFyLWNoYXJ0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2lvdGl6ZS1pb25pYy9tb25pdG9yaW5nL3NyYy9saWIvdWktY29tcG9uZW50cy90YXAtdmFyaWFibGUtcG9sYXItcmFkYXItY2hhcnQvdGFwLXZhcmlhYmxlLXBvbGFyLXJhZGFyLWNoYXJ0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQ0wsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsTUFBTSxFQUNOLEtBQUssRUFDTCxNQUFNLEVBRU4sV0FBVyxHQUNaLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxjQUFjLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUUzRSxPQUFPLEVBQ0wseUJBQXlCLEdBRTFCLE1BQU0sMkJBQTJCLENBQUM7QUFDbkMsT0FBTyxFQUNMLGNBQWMsR0FHZixNQUFNLG1CQUFtQixDQUFDO0FBQzNCLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDOzs7Ozs7QUFvQm5ELElBQU0sbUNBQW1DLEdBQXpDLE1BQU0sbUNBQ1gsU0FBUSxtQkFBbUI7SUEyQzNCLElBQ0ksUUFBUSxDQUNWLGVBR2E7UUFFYixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFFRCxJQUNJLEtBQUssQ0FBQyxNQUE2QjtRQUNyQyxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxVQUFVO2FBQ2hDLHNCQUFzQixDQUFDLE1BQU0sQ0FBQzthQUM5QixTQUFTLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtZQUNwQixJQUFJLENBQUMsT0FBTyxHQUFHLE1BQTJCLENBQUM7WUFDM0MsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7UUFDckIsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBZUQsWUFDRSxjQUErQixFQUMvQixJQUFZLEVBQ1MsVUFBa0IsRUFDdkMsRUFBcUI7UUFFckIsS0FBSyxDQUFDLGNBQWMsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBOUU5QyxnQkFBVyxHQUFHO1lBQ1osTUFBTSxFQUFFO2dCQUNOLFNBQVM7Z0JBQ1QsU0FBUztnQkFDVCxTQUFTO2dCQUNULFNBQVM7Z0JBQ1QsU0FBUztnQkFDVCxTQUFTO2dCQUNULFNBQVM7YUFDVjtTQUNGLENBQUM7UUFHRixXQUFNLEdBQVksSUFBSSxDQUFDO1FBR3ZCLG1CQUFjLEdBQW1CLGNBQWMsQ0FBQyxLQUFLLENBQUM7UUFHdEQscUJBQWdCLEdBQVksS0FBSyxDQUFDO1FBTWxDLFVBQUssR0FBWSxJQUFJLENBQUM7UUFHdEIsbUJBQWMsR0FBWSxJQUFJLENBQUM7UUFHL0IsVUFBSyxHQUFZLElBQUksQ0FBQztRQUd0QixtQkFBYyxHQUFZLElBQUksQ0FBQztRQUcvQixvQkFBZSxHQUFHLENBQUMsQ0FBQztRQXNCcEIsV0FBTSxHQUFZLEtBQUssQ0FBQztRQUV4QixZQUFPLEdBQXNCO1lBQzNCO2dCQUNFLElBQUksRUFBRSxPQUFPO2dCQUNiLE1BQU0sRUFBRSxFQUFFO2FBQ1g7U0FDRixDQUFDO1FBRU0sZUFBVSxHQUFHLElBQUksY0FBYyxFQUFFLENBQUM7SUFXMUMsQ0FBQztJQUVELGtCQUFrQjtRQUNoQixPQUFPLG1CQUFtQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxZQUFZLEVBQUUsV0FBVyxFQUFFLENBQUM7UUFDakMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO0lBQ3RDLENBQUM7SUFFRCxRQUFRLENBQUMsS0FBeUI7UUFDaEM7O1VBRUU7SUFDSixDQUFDOztvSkFuR1UsbUNBQW1DLGtFQWdGcEMsV0FBVzt3SUFoRlYsbUNBQW1DLG1iQzFDaEQsdzNCQStCQTtBRFdhLG1DQUFtQztJQVYvQyx5QkFBeUIsQ0FBQztRQUN6QixXQUFXLEVBQUU7WUFDWCxRQUFRLEVBQUUsS0FBSztTQUNoQjtLQUNGLENBQUM7cUNBb0ZrQixVQUFVO1FBQ3BCLE1BQU0sVUFFUixpQkFBaUI7R0FqRlosbUNBQW1DLENBb0cvQztTQXBHWSxtQ0FBbUM7NEZBQW5DLG1DQUFtQztrQkFML0MsU0FBUzsrQkFDRSxnQ0FBZ0M7OzBCQW9GdkMsTUFBTTsyQkFBQyxXQUFXOzRFQTNFckIsV0FBVztzQkFEVixLQUFLO2dCQWNOLE1BQU07c0JBREwsS0FBSztnQkFJTixjQUFjO3NCQURiLEtBQUs7Z0JBSU4sZ0JBQWdCO3NCQURmLEtBQUs7Z0JBSU4sZ0JBQWdCO3NCQURmLEtBQUs7Z0JBSU4sS0FBSztzQkFESixLQUFLO2dCQUlOLGNBQWM7c0JBRGIsS0FBSztnQkFJTixLQUFLO3NCQURKLEtBQUs7Z0JBSU4sY0FBYztzQkFEYixLQUFLO2dCQUlOLGVBQWU7c0JBRGQsS0FBSztnQkFJRixRQUFRO3NCQURYLEtBQUs7Z0JBV0YsS0FBSztzQkFEUixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgSW5qZWN0LFxuICBJbnB1dCxcbiAgTmdab25lLFxuICBPbkRlc3Ryb3ksXG4gIFBMQVRGT1JNX0lELFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFic3RyYWN0VmFyaWFibGUgfSBmcm9tICdAaW90aXplL3RhcC9kYXRhJztcbmltcG9ydCB7IFBvbGFyQ2hhcnRDb21wb25lbnQsIExlZ2VuZFBvc2l0aW9uIH0gZnJvbSAnQHN3aW1sYW5lL25neC1jaGFydHMnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1xuICBNb25pdG9yaW5nQXBwR2VuQ29tcG9uZW50LFxuICBBcHBHZW5GaWVsZCxcbn0gZnJvbSAnLi4vLi4vbWV0YWRhdGEvZGVjb3JhdG9ycyc7XG5pbXBvcnQge1xuICBDaGFydERhdGFNb2RlbCxcbiAgQ2hhcnRJbnB1dE11dGxpLFxuICBDaGFydElucHV0U3RyZWFtVmFyLFxufSBmcm9tICcuLi9DaGFydERhdGFNb2RlbCc7XG5pbXBvcnQgeyBkYXRhV2l0aFNlcmllc1RvQ3N2IH0gZnJvbSAnLi4vRXhwb3J0RGF0YUZvcm1hdCc7XG5pbXBvcnQge1xuICBDT0xPUl9TQ0hFTUVfU0NIRU1BLFxuICBFWFBPUlRfREFUQV9GSUxFX05BTUVfU0NIRU1BLFxuICBMRUdFTkRfUE9TSVRJT05fU0NIRU1BLFxuICBTSE9XX0VYUE9SVF9EQVRBX0JVVFRPTl9TQ0hFTUEsXG4gIFRBUF9WQVJJQUJMRV9TQ0hFTUEsXG59IGZyb20gJy4uL3NoYXJlZC1zY2hlbWEnO1xuaW1wb3J0IHsgT25DaGFydFNlbGVjdEV2ZW50IH0gZnJvbSAnLi4vc2hhcmVkLXR5cGVzJztcblxuQE1vbml0b3JpbmdBcHBHZW5Db21wb25lbnQoe1xuICBjb25zdHJhaW50czoge1xuICAgIGlzTnVtYmVyOiAnWUVTJyxcbiAgfSxcbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd0YXAtdmFyaWFibGUtcG9sYXItcmFkYXItY2hhcnQnLFxuICB0ZW1wbGF0ZVVybDogJy4vdGFwLXZhcmlhYmxlLXBvbGFyLXJhZGFyLWNoYXJ0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vdGFwLXZhcmlhYmxlLXBvbGFyLXJhZGFyLWNoYXJ0LmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIFRhcFZhcmlhYmxlUG9sYXJSYWRhckNoYXJ0Q29tcG9uZW50XG4gIGV4dGVuZHMgUG9sYXJDaGFydENvbXBvbmVudFxuICBpbXBsZW1lbnRzIE9uRGVzdHJveVxue1xuICBASW5wdXQoKVxuICBjb2xvclNjaGVtZSA9IHtcbiAgICBkb21haW46IFtcbiAgICAgICcjNURBREUyJyxcbiAgICAgICcjOUI1OUI2JyxcbiAgICAgICcjRjM5QzEyJyxcbiAgICAgICcjNUFBNDU0JyxcbiAgICAgICcjQTEwQTI4JyxcbiAgICAgICcjQzdCNDJDJyxcbiAgICAgICcjQUFBQUFBJyxcbiAgICBdLFxuICB9O1xuXG4gIEBJbnB1dCgpXG4gIGxlZ2VuZDogYm9vbGVhbiA9IHRydWU7XG5cbiAgQElucHV0KClcbiAgbGVnZW5kUG9zaXRpb246IExlZ2VuZFBvc2l0aW9uID0gTGVnZW5kUG9zaXRpb24uQmVsb3c7XG5cbiAgQElucHV0KClcbiAgc2hvd0V4cG9ydEJ1dHRvbjogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpXG4gIGV4cG9ydGVkRmlsZU5hbWU/OiBzdHJpbmc7XG5cbiAgQElucHV0KClcbiAgeEF4aXM6IGJvb2xlYW4gPSB0cnVlO1xuXG4gIEBJbnB1dCgpXG4gIHNob3dYQXhpc0xhYmVsOiBib29sZWFuID0gdHJ1ZTtcblxuICBASW5wdXQoKVxuICB5QXhpczogYm9vbGVhbiA9IHRydWU7XG5cbiAgQElucHV0KClcbiAgc2hvd1lBeGlzTGFiZWw6IGJvb2xlYW4gPSB0cnVlO1xuXG4gIEBJbnB1dCgpXG4gIHZhbHVlQ291bnRMaW1pdCA9IDQ7XG5cbiAgQElucHV0KClcbiAgc2V0IHZhcmlhYmxlKFxuICAgIHZhcmlhYmxlT3JBcnJheTpcbiAgICAgIHwgQWJzdHJhY3RWYXJpYWJsZTxudW1iZXIgfCBudW1iZXJbXT5cbiAgICAgIHwgQWJzdHJhY3RWYXJpYWJsZTxudW1iZXIgfCBudW1iZXJbXT5bXVxuICAgICAgfCB1bmRlZmluZWRcbiAgKSB7XG4gICAgdGhpcy5pbnB1dCA9IHRoaXMuY2hhcnRNb2RlbC5pbml0VmFyaWFibGUodmFyaWFibGVPckFycmF5KTtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHNldCBpbnB1dChpbnB1dHM6IENoYXJ0SW5wdXRTdHJlYW1WYXJbXSkge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9uID0gdGhpcy5jaGFydE1vZGVsXG4gICAgICAuZGVmaW5lTXVsdGlJbnB1dFN0cmVhbShpbnB1dHMpXG4gICAgICAuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcbiAgICAgICAgdGhpcy5yZXN1bHRzID0gcmVzdWx0IGFzIENoYXJ0SW5wdXRNdXRsaVtdO1xuICAgICAgICB0aGlzLmxvYWRlZCA9IHRydWU7XG4gICAgICB9KTtcbiAgfVxuXG4gIGxvYWRlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIHJlc3VsdHM6IENoYXJ0SW5wdXRNdXRsaVtdID0gW1xuICAgIHtcbiAgICAgIG5hbWU6ICdWYWx1ZScsXG4gICAgICBzZXJpZXM6IFtdLFxuICAgIH0sXG4gIF07XG5cbiAgcHJpdmF0ZSBjaGFydE1vZGVsID0gbmV3IENoYXJ0RGF0YU1vZGVsKCk7XG5cbiAgcHJpdmF0ZSBzdWJzY3JpcHRpb24/OiBTdWJzY3JpcHRpb247XG5cbiAgY29uc3RydWN0b3IoXG4gICAgbXlDaGFydEVsZW1lbnQ6IEVsZW1lbnRSZWY8YW55PixcbiAgICB6b25lOiBOZ1pvbmUsXG4gICAgQEluamVjdChQTEFURk9STV9JRCkgcGxhdGZvcm1JZDogc3RyaW5nLFxuICAgIGNkOiBDaGFuZ2VEZXRlY3RvclJlZlxuICApIHtcbiAgICBzdXBlcihteUNoYXJ0RWxlbWVudCwgem9uZSwgY2QsIHBsYXRmb3JtSWQpO1xuICB9XG5cbiAgY3JlYXRlRXhwb3J0ZWREYXRhKCkge1xuICAgIHJldHVybiBkYXRhV2l0aFNlcmllc1RvQ3N2KHRoaXMucmVzdWx0cyk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLmNoYXJ0TW9kZWwuZGVzdHJveUN1cnJlbnRTdWIoKTtcbiAgfVxuXG4gIG9uU2VsZWN0KGV2ZW50OiBPbkNoYXJ0U2VsZWN0RXZlbnQpIHtcbiAgICAvKiBOb3QgaW1wbGVtZW50ZWRcbiAgICB0aGlzLmNoYXJ0TW9kZWwuc2hvd0RldGFpbChldmVudCwgdGhpcy5tb2RhbENvbnRyb2xsZXIsIFRhcFZhcmlhYmxlRGF0YVBvcHVwQ29tcG9uZW50KTtcbiAgICAqL1xuICB9XG59XG4iLCI8ZGl2XG4gICNjb250YWluZXJSZWZcbiAgW25nQ2xhc3NdPVwibGVnZW5kUG9zaXRpb24gPT09ICdiZWxvdycgPyAnYmVsb3dMZWdlbmQnIDogJ3JpZ2h0TGVnZW5kJ1wiXG4gIHN0eWxlPVwicG9zaXRpb246IHJlbGF0aXZlXCJcbj5cbiAgPG5neC1jaGFydHMtcG9sYXItY2hhcnRcbiAgICAqbmdJZj1cImxvYWRlZFwiXG4gICAgI3BvbGFyQ2hhcnRcbiAgICBbdmlld109XCJbY29udGFpbmVyUmVmLm9mZnNldFdpZHRoLCBjb250YWluZXJSZWYub2Zmc2V0SGVpZ2h0XVwiXG4gICAgW3NjaGVtZV09XCJjb2xvclNjaGVtZVwiXG4gICAgW2xlZ2VuZF09XCJsZWdlbmRcIlxuICAgIFtsZWdlbmRQb3NpdGlvbl09XCJsZWdlbmRQb3NpdGlvblwiXG4gICAgW3Nob3dYQXhpc0xhYmVsXT1cInNob3dYQXhpc0xhYmVsXCJcbiAgICBbc2hvd1lBeGlzTGFiZWxdPVwic2hvd1lBeGlzTGFiZWxcIlxuICAgIFt4QXhpc109XCJ4QXhpc1wiXG4gICAgW3lBeGlzXT1cInlBeGlzXCJcbiAgICBbcmVzdWx0c109XCJyZXN1bHRzXCJcbiAgICAoc2VsZWN0KT1cIm9uU2VsZWN0KCRldmVudClcIlxuICA+XG4gIDwvbmd4LWNoYXJ0cy1wb2xhci1jaGFydD5cbiAgPGlvbi1mYWItYnV0dG9uXG4gICAgaWQ9XCJleHBvcnRGYWJCdXR0b25cIlxuICAgIHNpemU9XCJzbWFsbFwiXG4gICAgdGFwRXhwb3J0RGF0YVxuICAgICpuZ0lmPVwic2hvd0V4cG9ydEJ1dHRvblwiXG4gICAgW2V4cG9ydGVkRmlsZU5hbWVdPVwiZXhwb3J0ZWRGaWxlTmFtZVwiXG4gICAgW2RhdGFUb0V4cG9ydF09XCJjcmVhdGVFeHBvcnRlZERhdGEuYmluZCh0aGlzKVwiXG4gID5cbiAgICA8aW9uLWljb24gbmFtZT1cImRvd25sb2FkXCI+PC9pb24taWNvbj5cbiAgPC9pb24tZmFiLWJ1dHRvbj5cbjwvZGl2PlxuIl19