@iotize/ionic
Version:
Iotize specific building blocks on top of @ionic/angular.
112 lines • 17.4 kB
JavaScript
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 {
colorScheme = {
domain: [
'#5DADE2',
'#9B59B6',
'#F39C12',
'#5AA454',
'#A10A28',
'#C7B42C',
'#AAAAAA',
],
};
legend = true;
legendPosition = LegendPosition.Below;
showExportButton = false;
exportedFileName;
xAxis = true;
showXAxisLabel = true;
yAxis = true;
showYAxisLabel = true;
valueCountLimit = 4;
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;
});
}
loaded = false;
results = [
{
name: 'Value',
series: [],
},
];
chartModel = new ChartDataModel();
subscription;
constructor(myChartElement, zone, platformId, cd) {
super(myChartElement, zone, cd, platformId);
}
createExportedData() {
return dataWithSeriesToCsv(this.results);
}
ngOnDestroy() {
this.subscription?.unsubscribe();
this.chartModel.destroyCurrentSub();
}
onSelect(event) {
/* Not implemented
this.chartModel.showDetail(event, this.modalController, TapVariableDataPopupComponent);
*/
}
/** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: TapVariablePolarRadarChartComponent, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }, { token: PLATFORM_ID }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
/** @nocollapse */ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", 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: "18.2.14", 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: () => [{ 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFwLXZhcmlhYmxlLXBvbGFyLXJhZGFyLWNoYXJ0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2lvdGl6ZS1pb25pYy9tb25pdG9yaW5nL3NyYy9saWIvdWktY29tcG9uZW50cy90YXAtdmFyaWFibGUtcG9sYXItcmFkYXItY2hhcnQvdGFwLXZhcmlhYmxlLXBvbGFyLXJhZGFyLWNoYXJ0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2lvdGl6ZS1pb25pYy9tb25pdG9yaW5nL3NyYy9saWIvdWktY29tcG9uZW50cy90YXAtdmFyaWFibGUtcG9sYXItcmFkYXItY2hhcnQvdGFwLXZhcmlhYmxlLXBvbGFyLXJhZGFyLWNoYXJ0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQ0wsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsTUFBTSxFQUNOLEtBQUssRUFDTCxNQUFNLEVBRU4sV0FBVyxHQUNaLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxjQUFjLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUUzRSxPQUFPLEVBQ0wseUJBQXlCLEdBRTFCLE1BQU0sMkJBQTJCLENBQUM7QUFDbkMsT0FBTyxFQUNMLGNBQWMsR0FHZixNQUFNLG1CQUFtQixDQUFDO0FBQzNCLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDOzs7Ozs7QUFvQm5ELElBQU0sbUNBQW1DLEdBQXpDLE1BQU0sbUNBQ1gsU0FBUSxtQkFBbUI7SUFJM0IsV0FBVyxHQUFHO1FBQ1osTUFBTSxFQUFFO1lBQ04sU0FBUztZQUNULFNBQVM7WUFDVCxTQUFTO1lBQ1QsU0FBUztZQUNULFNBQVM7WUFDVCxTQUFTO1lBQ1QsU0FBUztTQUNWO0tBQ0YsQ0FBQztJQUdGLE1BQU0sR0FBWSxJQUFJLENBQUM7SUFHdkIsY0FBYyxHQUFtQixjQUFjLENBQUMsS0FBSyxDQUFDO0lBR3RELGdCQUFnQixHQUFZLEtBQUssQ0FBQztJQUdsQyxnQkFBZ0IsQ0FBVTtJQUcxQixLQUFLLEdBQVksSUFBSSxDQUFDO0lBR3RCLGNBQWMsR0FBWSxJQUFJLENBQUM7SUFHL0IsS0FBSyxHQUFZLElBQUksQ0FBQztJQUd0QixjQUFjLEdBQVksSUFBSSxDQUFDO0lBRy9CLGVBQWUsR0FBRyxDQUFDLENBQUM7SUFFcEIsSUFDSSxRQUFRLENBQ1YsZUFHYTtRQUViLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDN0QsQ0FBQztJQUVELElBQ0ksS0FBSyxDQUFDLE1BQTZCO1FBQ3JDLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFVBQVU7YUFDaEMsc0JBQXNCLENBQUMsTUFBTSxDQUFDO2FBQzlCLFNBQVMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO1lBQ3BCLElBQUksQ0FBQyxPQUFPLEdBQUcsTUFBMkIsQ0FBQztZQUMzQyxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztRQUNyQixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxNQUFNLEdBQVksS0FBSyxDQUFDO0lBRXhCLE9BQU8sR0FBc0I7UUFDM0I7WUFDRSxJQUFJLEVBQUUsT0FBTztZQUNiLE1BQU0sRUFBRSxFQUFFO1NBQ1g7S0FDRixDQUFDO0lBRU0sVUFBVSxHQUFHLElBQUksY0FBYyxFQUFFLENBQUM7SUFFbEMsWUFBWSxDQUFnQjtJQUVwQyxZQUNFLGNBQStCLEVBQy9CLElBQVksRUFDUyxVQUFrQixFQUN2QyxFQUFxQjtRQUVyQixLQUFLLENBQUMsY0FBYyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUVELGtCQUFrQjtRQUNoQixPQUFPLG1CQUFtQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxZQUFZLEVBQUUsV0FBVyxFQUFFLENBQUM7UUFDakMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO0lBQ3RDLENBQUM7SUFFRCxRQUFRLENBQUMsS0FBeUI7UUFDaEM7O1VBRUU7SUFDSixDQUFDOzJIQW5HVSxtQ0FBbUMsa0VBZ0ZwQyxXQUFXOytHQWhGVixtQ0FBbUMsbWJDMUNoRCx3M0JBK0JBOztBRFdhLG1DQUFtQztJQVYvQyx5QkFBeUIsQ0FBQztRQUN6QixXQUFXLEVBQUU7WUFDWCxRQUFRLEVBQUUsS0FBSztTQUNoQjtLQUNGLENBQUM7cUNBb0ZrQixVQUFVO1FBQ3BCLE1BQU0sVUFFUixpQkFBaUI7R0FqRlosbUNBQW1DLENBb0cvQzs7NEZBcEdZLG1DQUFtQztrQkFML0MsU0FBUzsrQkFDRSxnQ0FBZ0M7OzBCQW9GdkMsTUFBTTsyQkFBQyxXQUFXO3lFQTNFckIsV0FBVztzQkFEVixLQUFLO2dCQWNOLE1BQU07c0JBREwsS0FBSztnQkFJTixjQUFjO3NCQURiLEtBQUs7Z0JBSU4sZ0JBQWdCO3NCQURmLEtBQUs7Z0JBSU4sZ0JBQWdCO3NCQURmLEtBQUs7Z0JBSU4sS0FBSztzQkFESixLQUFLO2dCQUlOLGNBQWM7c0JBRGIsS0FBSztnQkFJTixLQUFLO3NCQURKLEtBQUs7Z0JBSU4sY0FBYztzQkFEYixLQUFLO2dCQUlOLGVBQWU7c0JBRGQsS0FBSztnQkFJRixRQUFRO3NCQURYLEtBQUs7Z0JBV0YsS0FBSztzQkFEUixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgSW5qZWN0LFxuICBJbnB1dCxcbiAgTmdab25lLFxuICBPbkRlc3Ryb3ksXG4gIFBMQVRGT1JNX0lELFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFic3RyYWN0VmFyaWFibGUgfSBmcm9tICdAaW90aXplL3RhcC9kYXRhJztcbmltcG9ydCB7IFBvbGFyQ2hhcnRDb21wb25lbnQsIExlZ2VuZFBvc2l0aW9uIH0gZnJvbSAnQHN3aW1sYW5lL25neC1jaGFydHMnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1xuICBNb25pdG9yaW5nQXBwR2VuQ29tcG9uZW50LFxuICBBcHBHZW5GaWVsZCxcbn0gZnJvbSAnLi4vLi4vbWV0YWRhdGEvZGVjb3JhdG9ycyc7XG5pbXBvcnQge1xuICBDaGFydERhdGFNb2RlbCxcbiAgQ2hhcnRJbnB1dE11dGxpLFxuICBDaGFydElucHV0U3RyZWFtVmFyLFxufSBmcm9tICcuLi9DaGFydERhdGFNb2RlbCc7XG5pbXBvcnQgeyBkYXRhV2l0aFNlcmllc1RvQ3N2IH0gZnJvbSAnLi4vRXhwb3J0RGF0YUZvcm1hdCc7XG5pbXBvcnQge1xuICBDT0xPUl9TQ0hFTUVfU0NIRU1BLFxuICBFWFBPUlRfREFUQV9GSUxFX05BTUVfU0NIRU1BLFxuICBMRUdFTkRfUE9TSVRJT05fU0NIRU1BLFxuICBTSE9XX0VYUE9SVF9EQVRBX0JVVFRPTl9TQ0hFTUEsXG4gIFRBUF9WQVJJQUJMRV9TQ0hFTUEsXG59IGZyb20gJy4uL3NoYXJlZC1zY2hlbWEnO1xuaW1wb3J0IHsgT25DaGFydFNlbGVjdEV2ZW50IH0gZnJvbSAnLi4vc2hhcmVkLXR5cGVzJztcblxuQE1vbml0b3JpbmdBcHBHZW5Db21wb25lbnQoe1xuICBjb25zdHJhaW50czoge1xuICAgIGlzTnVtYmVyOiAnWUVTJyxcbiAgfSxcbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd0YXAtdmFyaWFibGUtcG9sYXItcmFkYXItY2hhcnQnLFxuICB0ZW1wbGF0ZVVybDogJy4vdGFwLXZhcmlhYmxlLXBvbGFyLXJhZGFyLWNoYXJ0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vdGFwLXZhcmlhYmxlLXBvbGFyLXJhZGFyLWNoYXJ0LmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIFRhcFZhcmlhYmxlUG9sYXJSYWRhckNoYXJ0Q29tcG9uZW50XG4gIGV4dGVuZHMgUG9sYXJDaGFydENvbXBvbmVudFxuICBpbXBsZW1lbnRzIE9uRGVzdHJveVxue1xuICBASW5wdXQoKVxuICBjb2xvclNjaGVtZSA9IHtcbiAgICBkb21haW46IFtcbiAgICAgICcjNURBREUyJyxcbiAgICAgICcjOUI1OUI2JyxcbiAgICAgICcjRjM5QzEyJyxcbiAgICAgICcjNUFBNDU0JyxcbiAgICAgICcjQTEwQTI4JyxcbiAgICAgICcjQzdCNDJDJyxcbiAgICAgICcjQUFBQUFBJyxcbiAgICBdLFxuICB9O1xuXG4gIEBJbnB1dCgpXG4gIGxlZ2VuZDogYm9vbGVhbiA9IHRydWU7XG5cbiAgQElucHV0KClcbiAgbGVnZW5kUG9zaXRpb246IExlZ2VuZFBvc2l0aW9uID0gTGVnZW5kUG9zaXRpb24uQmVsb3c7XG5cbiAgQElucHV0KClcbiAgc2hvd0V4cG9ydEJ1dHRvbjogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpXG4gIGV4cG9ydGVkRmlsZU5hbWU/OiBzdHJpbmc7XG5cbiAgQElucHV0KClcbiAgeEF4aXM6IGJvb2xlYW4gPSB0cnVlO1xuXG4gIEBJbnB1dCgpXG4gIHNob3dYQXhpc0xhYmVsOiBib29sZWFuID0gdHJ1ZTtcblxuICBASW5wdXQoKVxuICB5QXhpczogYm9vbGVhbiA9IHRydWU7XG5cbiAgQElucHV0KClcbiAgc2hvd1lBeGlzTGFiZWw6IGJvb2xlYW4gPSB0cnVlO1xuXG4gIEBJbnB1dCgpXG4gIHZhbHVlQ291bnRMaW1pdCA9IDQ7XG5cbiAgQElucHV0KClcbiAgc2V0IHZhcmlhYmxlKFxuICAgIHZhcmlhYmxlT3JBcnJheTpcbiAgICAgIHwgQWJzdHJhY3RWYXJpYWJsZTxudW1iZXIgfCBudW1iZXJbXT5cbiAgICAgIHwgQWJzdHJhY3RWYXJpYWJsZTxudW1iZXIgfCBudW1iZXJbXT5bXVxuICAgICAgfCB1bmRlZmluZWRcbiAgKSB7XG4gICAgdGhpcy5pbnB1dCA9IHRoaXMuY2hhcnRNb2RlbC5pbml0VmFyaWFibGUodmFyaWFibGVPckFycmF5KTtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHNldCBpbnB1dChpbnB1dHM6IENoYXJ0SW5wdXRTdHJlYW1WYXJbXSkge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9uID0gdGhpcy5jaGFydE1vZGVsXG4gICAgICAuZGVmaW5lTXVsdGlJbnB1dFN0cmVhbShpbnB1dHMpXG4gICAgICAuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcbiAgICAgICAgdGhpcy5yZXN1bHRzID0gcmVzdWx0IGFzIENoYXJ0SW5wdXRNdXRsaVtdO1xuICAgICAgICB0aGlzLmxvYWRlZCA9IHRydWU7XG4gICAgICB9KTtcbiAgfVxuXG4gIGxvYWRlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIHJlc3VsdHM6IENoYXJ0SW5wdXRNdXRsaVtdID0gW1xuICAgIHtcbiAgICAgIG5hbWU6ICdWYWx1ZScsXG4gICAgICBzZXJpZXM6IFtdLFxuICAgIH0sXG4gIF07XG5cbiAgcHJpdmF0ZSBjaGFydE1vZGVsID0gbmV3IENoYXJ0RGF0YU1vZGVsKCk7XG5cbiAgcHJpdmF0ZSBzdWJzY3JpcHRpb24/OiBTdWJzY3JpcHRpb247XG5cbiAgY29uc3RydWN0b3IoXG4gICAgbXlDaGFydEVsZW1lbnQ6IEVsZW1lbnRSZWY8YW55PixcbiAgICB6b25lOiBOZ1pvbmUsXG4gICAgQEluamVjdChQTEFURk9STV9JRCkgcGxhdGZvcm1JZDogc3RyaW5nLFxuICAgIGNkOiBDaGFuZ2VEZXRlY3RvclJlZlxuICApIHtcbiAgICBzdXBlcihteUNoYXJ0RWxlbWVudCwgem9uZSwgY2QsIHBsYXRmb3JtSWQpO1xuICB9XG5cbiAgY3JlYXRlRXhwb3J0ZWREYXRhKCkge1xuICAgIHJldHVybiBkYXRhV2l0aFNlcmllc1RvQ3N2KHRoaXMucmVzdWx0cyk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLmNoYXJ0TW9kZWwuZGVzdHJveUN1cnJlbnRTdWIoKTtcbiAgfVxuXG4gIG9uU2VsZWN0KGV2ZW50OiBPbkNoYXJ0U2VsZWN0RXZlbnQpIHtcbiAgICAvKiBOb3QgaW1wbGVtZW50ZWRcbiAgICB0aGlzLmNoYXJ0TW9kZWwuc2hvd0RldGFpbChldmVudCwgdGhpcy5tb2RhbENvbnRyb2xsZXIsIFRhcFZhcmlhYmxlRGF0YVBvcHVwQ29tcG9uZW50KTtcbiAgICAqL1xuICB9XG59XG4iLCI8ZGl2XG4gICNjb250YWluZXJSZWZcbiAgW25nQ2xhc3NdPVwibGVnZW5kUG9zaXRpb24gPT09ICdiZWxvdycgPyAnYmVsb3dMZWdlbmQnIDogJ3JpZ2h0TGVnZW5kJ1wiXG4gIHN0eWxlPVwicG9zaXRpb246IHJlbGF0aXZlXCJcbj5cbiAgPG5neC1jaGFydHMtcG9sYXItY2hhcnRcbiAgICAqbmdJZj1cImxvYWRlZFwiXG4gICAgI3BvbGFyQ2hhcnRcbiAgICBbdmlld109XCJbY29udGFpbmVyUmVmLm9mZnNldFdpZHRoLCBjb250YWluZXJSZWYub2Zmc2V0SGVpZ2h0XVwiXG4gICAgW3NjaGVtZV09XCJjb2xvclNjaGVtZVwiXG4gICAgW2xlZ2VuZF09XCJsZWdlbmRcIlxuICAgIFtsZWdlbmRQb3NpdGlvbl09XCJsZWdlbmRQb3NpdGlvblwiXG4gICAgW3Nob3dYQXhpc0xhYmVsXT1cInNob3dYQXhpc0xhYmVsXCJcbiAgICBbc2hvd1lBeGlzTGFiZWxdPVwic2hvd1lBeGlzTGFiZWxcIlxuICAgIFt4QXhpc109XCJ4QXhpc1wiXG4gICAgW3lBeGlzXT1cInlBeGlzXCJcbiAgICBbcmVzdWx0c109XCJyZXN1bHRzXCJcbiAgICAoc2VsZWN0KT1cIm9uU2VsZWN0KCRldmVudClcIlxuICA+XG4gIDwvbmd4LWNoYXJ0cy1wb2xhci1jaGFydD5cbiAgPGlvbi1mYWItYnV0dG9uXG4gICAgaWQ9XCJleHBvcnRGYWJCdXR0b25cIlxuICAgIHNpemU9XCJzbWFsbFwiXG4gICAgdGFwRXhwb3J0RGF0YVxuICAgICpuZ0lmPVwic2hvd0V4cG9ydEJ1dHRvblwiXG4gICAgW2V4cG9ydGVkRmlsZU5hbWVdPVwiZXhwb3J0ZWRGaWxlTmFtZVwiXG4gICAgW2RhdGFUb0V4cG9ydF09XCJjcmVhdGVFeHBvcnRlZERhdGEuYmluZCh0aGlzKVwiXG4gID5cbiAgICA8aW9uLWljb24gbmFtZT1cImRvd25sb2FkXCI+PC9pb24taWNvbj5cbiAgPC9pb24tZmFiLWJ1dHRvbj5cbjwvZGl2PlxuIl19