@iotize/ionic
Version:
Iotize specific building blocks on top of @ionic/angular.
125 lines • 14.9 kB
JavaScript
import { __decorate } from "tslib";
import { Component, Input } from '@angular/core';
import { Observable, Subject } from 'rxjs';
import { takeUntil } from 'rxjs/operators';
import { MonitoringAppGenComponent, } from '../../metadata/decorators';
import * as i0 from "@angular/core";
import * as i1 from "@angular/common";
import * as i2 from "@ionic/angular";
let TapVariableLinearGaugeComponent = class TapVariableLinearGaugeComponent {
dataValue = 0;
dataPercent = 0;
_variable;
destroyed = new Subject();
unit;
digitsInfo;
/**
* @deprecated use unit instead
*/
set units(v) {
this.unit = v;
}
min = 0;
max = 100;
color = 'primary';
textColor = 'dark';
reversed = false;
set value(v) {
if (v === undefined || v === null) {
v = 0;
}
if (typeof v === 'string') {
v = parseInt(v, 10);
if (isNaN(v)) {
v = 0;
}
}
if (typeof v !== 'number') {
console.warn(`TapVariableLinearGauge: Invalid value type: ${typeof v}`, v);
}
this.setValue(v);
}
/**
* @deprecated use [value]="..." instead
*/
set variable(variable) {
this._variable = variable;
if (variable) {
this.inputStream = variable.values;
}
}
/**
* @deprecated use [value]="..." instead
*/
set inputStream(inputs) {
inputs.pipe(takeUntil(this.destroyed)).subscribe((value) => {
this.setValue(value);
});
}
setValue(value) {
if (this.min === null) {
this.min = 0;
}
if (this.max == null) {
this.max = 100;
}
if (typeof value === 'string') {
value = parseInt(value);
}
if (typeof value !== 'number') {
value = this.min;
}
this.dataValue = value;
if (value <= this.min) {
this.min = value;
this.dataPercent = 0;
}
else if (value >= this.max) {
this.dataPercent = 1;
this.max = value;
}
else {
this.dataPercent = (value - this.min) / (this.max - this.min);
}
}
ngOnDestroy() {
this.destroyed.next();
}
/** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: TapVariableLinearGaugeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
/** @nocollapse */ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: TapVariableLinearGaugeComponent, selector: "tap-variable-linear-gauge", inputs: { unit: "unit", digitsInfo: "digitsInfo", units: "units", min: "min", max: "max", color: "color", textColor: "textColor", reversed: "reversed", value: "value", variable: "variable", inputStream: "inputStream" }, ngImport: i0, template: "<div id=\"divBloc\">\n <ion-label id=\"labelValue\" [color]=\"textColor\"\n >{{ dataValue | number: digitsInfo }}\n <span *ngIf=\"unit\">{{ unit }}</span></ion-label\n >\n <ion-label id=\"labelMin\">\n {{ reversed ? max : min }}\n </ion-label>\n <ion-label id=\"labelMax\">\n {{ reversed ? min : max }}\n </ion-label>\n <ion-progress-bar\n id=\"progressBar\"\n [reversed]=\"reversed\"\n [color]=\"color\"\n [value]=\"dataPercent\"\n ></ion-progress-bar>\n</div>\n", styles: ["#divBloc{width:100%;position:relative;text-align:center;padding:10px 10px 20px}#labelValue{margin:5px;font-size:2em}#labelMin{left:10px;top:20px;position:absolute}#progressBar{box-shadow:#3c40434d 0 1px 2px,#3c404326 0 2px 6px 2px;border-radius:5px}#labelMax{position:absolute;top:20px;right:10px}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { kind: "component", type: i2.IonProgressBar, selector: "ion-progress-bar", inputs: ["buffer", "color", "mode", "reversed", "type", "value"] }, { kind: "pipe", type: i1.DecimalPipe, name: "number" }] });
};
TapVariableLinearGaugeComponent = __decorate([
MonitoringAppGenComponent({
constraints: {
isNumber: 'YES',
},
})
], TapVariableLinearGaugeComponent);
export { TapVariableLinearGaugeComponent };
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: TapVariableLinearGaugeComponent, decorators: [{
type: Component,
args: [{ selector: 'tap-variable-linear-gauge', template: "<div id=\"divBloc\">\n <ion-label id=\"labelValue\" [color]=\"textColor\"\n >{{ dataValue | number: digitsInfo }}\n <span *ngIf=\"unit\">{{ unit }}</span></ion-label\n >\n <ion-label id=\"labelMin\">\n {{ reversed ? max : min }}\n </ion-label>\n <ion-label id=\"labelMax\">\n {{ reversed ? min : max }}\n </ion-label>\n <ion-progress-bar\n id=\"progressBar\"\n [reversed]=\"reversed\"\n [color]=\"color\"\n [value]=\"dataPercent\"\n ></ion-progress-bar>\n</div>\n", styles: ["#divBloc{width:100%;position:relative;text-align:center;padding:10px 10px 20px}#labelValue{margin:5px;font-size:2em}#labelMin{left:10px;top:20px;position:absolute}#progressBar{box-shadow:#3c40434d 0 1px 2px,#3c404326 0 2px 6px 2px;border-radius:5px}#labelMax{position:absolute;top:20px;right:10px}\n"] }]
}], propDecorators: { unit: [{
type: Input
}], digitsInfo: [{
type: Input
}], units: [{
type: Input
}], min: [{
type: Input
}], max: [{
type: Input
}], color: [{
type: Input
}], textColor: [{
type: Input
}], reversed: [{
type: Input
}], value: [{
type: Input
}], variable: [{
type: Input
}], inputStream: [{
type: Input
}] } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFwLXZhcmlhYmxlLWxpbmVhci1nYXVnZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pb3RpemUtaW9uaWMvbW9uaXRvcmluZy9zcmMvbGliL3VpLWNvbXBvbmVudHMvdGFwLXZhcmlhYmxlLWxpbmVhci1nYXVnZS90YXAtdmFyaWFibGUtbGluZWFyLWdhdWdlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2lvdGl6ZS1pb25pYy9tb25pdG9yaW5nL3NyYy9saWIvdWktY29tcG9uZW50cy90YXAtdmFyaWFibGUtbGluZWFyLWdhdWdlL3RhcC12YXJpYWJsZS1saW5lYXItZ2F1Z2UuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBRTVELE9BQU8sRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBRUwseUJBQXlCLEdBQzFCLE1BQU0sMkJBQTJCLENBQUM7Ozs7QUFrQjVCLElBQU0sK0JBQStCLEdBQXJDLE1BQU0sK0JBQStCO0lBQzFDLFNBQVMsR0FBRyxDQUFDLENBQUM7SUFDZCxXQUFXLEdBQUcsQ0FBQyxDQUFDO0lBQ2hCLFNBQVMsQ0FBeUI7SUFFMUIsU0FBUyxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7SUFHeEMsSUFBSSxDQUFVO0lBR2QsVUFBVSxDQUFVO0lBRXBCOztPQUVHO0lBQ0gsSUFBYSxLQUFLLENBQUMsQ0FBUztRQUMxQixJQUFJLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQztJQUNoQixDQUFDO0lBR0QsR0FBRyxHQUFZLENBQUMsQ0FBQztJQUdqQixHQUFHLEdBQVksR0FBRyxDQUFDO0lBR25CLEtBQUssR0FBRyxTQUFTLENBQUM7SUFHbEIsU0FBUyxHQUFHLE1BQU0sQ0FBQztJQUduQixRQUFRLEdBQUcsS0FBSyxDQUFDO0lBRWpCLElBQ0ksS0FBSyxDQUFDLENBQThCO1FBQ3RDLElBQUksQ0FBQyxLQUFLLFNBQVMsSUFBSSxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUM7WUFDbEMsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNSLENBQUM7UUFDRCxJQUFJLE9BQU8sQ0FBQyxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQzFCLENBQUMsR0FBRyxRQUFRLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ3BCLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7Z0JBQ2IsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNSLENBQUM7UUFDSCxDQUFDO1FBQ0QsSUFBSSxPQUFPLENBQUMsS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUMxQixPQUFPLENBQUMsSUFBSSxDQUNWLCtDQUErQyxPQUFPLENBQUMsRUFBRSxFQUN6RCxDQUFDLENBQ0YsQ0FBQztRQUNKLENBQUM7UUFDRCxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ25CLENBQUM7SUFFRDs7T0FFRztJQUNILElBQ0ksUUFBUSxDQUFDLFFBQXlEO1FBQ3BFLElBQUksQ0FBQyxTQUFTLEdBQUcsUUFBUSxDQUFDO1FBQzFCLElBQUksUUFBUSxFQUFFLENBQUM7WUFDYixJQUFJLENBQUMsV0FBVyxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUM7UUFDckMsQ0FBQztJQUNILENBQUM7SUFFRDs7T0FFRztJQUNILElBQ0ksV0FBVyxDQUFDLE1BQXVCO1FBQ3JDLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ3pELElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdkIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsUUFBUSxDQUFDLEtBQXlDO1FBQ2hELElBQUksSUFBSSxDQUFDLEdBQUcsS0FBSyxJQUFJLEVBQUUsQ0FBQztZQUN0QixJQUFJLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQztRQUNmLENBQUM7UUFDRCxJQUFJLElBQUksQ0FBQyxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7WUFDckIsSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUM7UUFDakIsQ0FBQztRQUNELElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDOUIsS0FBSyxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMxQixDQUFDO1FBQ0QsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUM5QixLQUFLLEdBQUcsSUFBSSxDQUFDLEdBQUksQ0FBQztRQUNwQixDQUFDO1FBQ0QsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7UUFDdkIsSUFBSSxLQUFLLElBQUksSUFBSSxDQUFDLEdBQUksRUFBRSxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxHQUFHLEdBQUcsS0FBSyxDQUFDO1lBQ2pCLElBQUksQ0FBQyxXQUFXLEdBQUcsQ0FBQyxDQUFDO1FBQ3ZCLENBQUM7YUFBTSxJQUFJLEtBQUssSUFBSSxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDN0IsSUFBSSxDQUFDLFdBQVcsR0FBRyxDQUFDLENBQUM7WUFDckIsSUFBSSxDQUFDLEdBQUcsR0FBRyxLQUFLLENBQUM7UUFDbkIsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsV0FBVyxHQUFHLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxHQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUksQ0FBQyxDQUFDO1FBQ2xFLENBQUM7SUFDSCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDeEIsQ0FBQzsySEF2R1UsK0JBQStCOytHQUEvQiwrQkFBK0IsNlJDekI1QyxpZkFrQkE7O0FET2EsK0JBQStCO0lBVjNDLHlCQUF5QixDQUFDO1FBQ3pCLFdBQVcsRUFBRTtZQUNYLFFBQVEsRUFBRSxLQUFLO1NBQ2hCO0tBQ0YsQ0FBQztHQU1XLCtCQUErQixDQXdHM0M7OzRGQXhHWSwrQkFBK0I7a0JBTDNDLFNBQVM7K0JBQ0UsMkJBQTJCOzhCQVlyQyxJQUFJO3NCQURILEtBQUs7Z0JBSU4sVUFBVTtzQkFEVCxLQUFLO2dCQU1PLEtBQUs7c0JBQWpCLEtBQUs7Z0JBS04sR0FBRztzQkFERixLQUFLO2dCQUlOLEdBQUc7c0JBREYsS0FBSztnQkFJTixLQUFLO3NCQURKLEtBQUs7Z0JBSU4sU0FBUztzQkFEUixLQUFLO2dCQUlOLFFBQVE7c0JBRFAsS0FBSztnQkFJRixLQUFLO3NCQURSLEtBQUs7Z0JBd0JGLFFBQVE7c0JBRFgsS0FBSztnQkFZRixXQUFXO3NCQURkLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFic3RyYWN0VmFyaWFibGUgfSBmcm9tICdAaW90aXplL3RhcC9kYXRhJztcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7XG4gIEFwcEdlbkZpZWxkLFxuICBNb25pdG9yaW5nQXBwR2VuQ29tcG9uZW50LFxufSBmcm9tICcuLi8uLi9tZXRhZGF0YS9kZWNvcmF0b3JzJztcbmltcG9ydCB7XG4gIERJR0lUU19JTkZPX1NDSEVNQSxcbiAgSU9OSUNfQ09MT1JfU0NIRU1BLFxuICBUQVBfVkFSSUFCTEVfU0NIRU1BLFxuICBWQUxVRV9TVFJFQU1fRklFTEQsXG59IGZyb20gJy4uL3NoYXJlZC1zY2hlbWEnO1xuXG5ATW9uaXRvcmluZ0FwcEdlbkNvbXBvbmVudCh7XG4gIGNvbnN0cmFpbnRzOiB7XG4gICAgaXNOdW1iZXI6ICdZRVMnLFxuICB9LFxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3RhcC12YXJpYWJsZS1saW5lYXItZ2F1Z2UnLFxuICB0ZW1wbGF0ZVVybDogJy4vdGFwLXZhcmlhYmxlLWxpbmVhci1nYXVnZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3RhcC12YXJpYWJsZS1saW5lYXItZ2F1Z2UuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgVGFwVmFyaWFibGVMaW5lYXJHYXVnZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIGRhdGFWYWx1ZSA9IDA7XG4gIGRhdGFQZXJjZW50ID0gMDtcbiAgX3ZhcmlhYmxlPzogQWJzdHJhY3RWYXJpYWJsZTxhbnk+O1xuXG4gIHByaXZhdGUgZGVzdHJveWVkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBASW5wdXQoKVxuICB1bml0Pzogc3RyaW5nO1xuXG4gIEBJbnB1dCgpXG4gIGRpZ2l0c0luZm8/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIHVzZSB1bml0IGluc3RlYWRcbiAgICovXG4gIEBJbnB1dCgpIHNldCB1bml0cyh2OiBzdHJpbmcpIHtcbiAgICB0aGlzLnVuaXQgPSB2O1xuICB9XG5cbiAgQElucHV0KClcbiAgbWluPzogbnVtYmVyID0gMDtcblxuICBASW5wdXQoKVxuICBtYXg/OiBudW1iZXIgPSAxMDA7XG5cbiAgQElucHV0KClcbiAgY29sb3IgPSAncHJpbWFyeSc7XG5cbiAgQElucHV0KClcbiAgdGV4dENvbG9yID0gJ2RhcmsnO1xuXG4gIEBJbnB1dCgpXG4gIHJldmVyc2VkID0gZmFsc2U7XG5cbiAgQElucHV0KClcbiAgc2V0IHZhbHVlKHY6IG51bWJlciB8IHN0cmluZyB8IHVuZGVmaW5lZCkge1xuICAgIGlmICh2ID09PSB1bmRlZmluZWQgfHwgdiA9PT0gbnVsbCkge1xuICAgICAgdiA9IDA7XG4gICAgfVxuICAgIGlmICh0eXBlb2YgdiA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHYgPSBwYXJzZUludCh2LCAxMCk7XG4gICAgICBpZiAoaXNOYU4odikpIHtcbiAgICAgICAgdiA9IDA7XG4gICAgICB9XG4gICAgfVxuICAgIGlmICh0eXBlb2YgdiAhPT0gJ251bWJlcicpIHtcbiAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgYFRhcFZhcmlhYmxlTGluZWFyR2F1Z2U6IEludmFsaWQgdmFsdWUgdHlwZTogJHt0eXBlb2Ygdn1gLFxuICAgICAgICB2XG4gICAgICApO1xuICAgIH1cbiAgICB0aGlzLnNldFZhbHVlKHYpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIHVzZSBbdmFsdWVdPVwiLi4uXCIgaW5zdGVhZFxuICAgKi9cbiAgQElucHV0KClcbiAgc2V0IHZhcmlhYmxlKHZhcmlhYmxlOiBBYnN0cmFjdFZhcmlhYmxlPG51bWJlciB8IG51bWJlcltdPiB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuX3ZhcmlhYmxlID0gdmFyaWFibGU7XG4gICAgaWYgKHZhcmlhYmxlKSB7XG4gICAgICB0aGlzLmlucHV0U3RyZWFtID0gdmFyaWFibGUudmFsdWVzO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCB1c2UgW3ZhbHVlXT1cIi4uLlwiIGluc3RlYWRcbiAgICovXG4gIEBJbnB1dCgpXG4gIHNldCBpbnB1dFN0cmVhbShpbnB1dHM6IE9ic2VydmFibGU8YW55Pikge1xuICAgIGlucHV0cy5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llZCkpLnN1YnNjcmliZSgodmFsdWUpID0+IHtcbiAgICAgIHRoaXMuc2V0VmFsdWUodmFsdWUpO1xuICAgIH0pO1xuICB9XG5cbiAgc2V0VmFsdWUodmFsdWU6IG51bWJlciB8IHN0cmluZyB8IHVuZGVmaW5lZCB8IG51bGwpIHtcbiAgICBpZiAodGhpcy5taW4gPT09IG51bGwpIHtcbiAgICAgIHRoaXMubWluID0gMDtcbiAgICB9XG4gICAgaWYgKHRoaXMubWF4ID09IG51bGwpIHtcbiAgICAgIHRoaXMubWF4ID0gMTAwO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xuICAgICAgdmFsdWUgPSBwYXJzZUludCh2YWx1ZSk7XG4gICAgfVxuICAgIGlmICh0eXBlb2YgdmFsdWUgIT09ICdudW1iZXInKSB7XG4gICAgICB2YWx1ZSA9IHRoaXMubWluITtcbiAgICB9XG4gICAgdGhpcy5kYXRhVmFsdWUgPSB2YWx1ZTtcbiAgICBpZiAodmFsdWUgPD0gdGhpcy5taW4hKSB7XG4gICAgICB0aGlzLm1pbiA9IHZhbHVlO1xuICAgICAgdGhpcy5kYXRhUGVyY2VudCA9IDA7XG4gICAgfSBlbHNlIGlmICh2YWx1ZSA+PSB0aGlzLm1heCkge1xuICAgICAgdGhpcy5kYXRhUGVyY2VudCA9IDE7XG4gICAgICB0aGlzLm1heCA9IHZhbHVlO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmRhdGFQZXJjZW50ID0gKHZhbHVlIC0gdGhpcy5taW4hKSAvICh0aGlzLm1heCAtIHRoaXMubWluISk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5kZXN0cm95ZWQubmV4dCgpO1xuICB9XG59XG4iLCI8ZGl2IGlkPVwiZGl2QmxvY1wiPlxuICA8aW9uLWxhYmVsIGlkPVwibGFiZWxWYWx1ZVwiIFtjb2xvcl09XCJ0ZXh0Q29sb3JcIlxuICAgID57eyBkYXRhVmFsdWUgfCBudW1iZXI6IGRpZ2l0c0luZm8gfX1cbiAgICA8c3BhbiAqbmdJZj1cInVuaXRcIj57eyB1bml0IH19PC9zcGFuPjwvaW9uLWxhYmVsXG4gID5cbiAgPGlvbi1sYWJlbCBpZD1cImxhYmVsTWluXCI+XG4gICAge3sgcmV2ZXJzZWQgPyBtYXggOiBtaW4gfX1cbiAgPC9pb24tbGFiZWw+XG4gIDxpb24tbGFiZWwgaWQ9XCJsYWJlbE1heFwiPlxuICAgIHt7IHJldmVyc2VkID8gbWluIDogbWF4IH19XG4gIDwvaW9uLWxhYmVsPlxuICA8aW9uLXByb2dyZXNzLWJhclxuICAgIGlkPVwicHJvZ3Jlc3NCYXJcIlxuICAgIFtyZXZlcnNlZF09XCJyZXZlcnNlZFwiXG4gICAgW2NvbG9yXT1cImNvbG9yXCJcbiAgICBbdmFsdWVdPVwiZGF0YVBlcmNlbnRcIlxuICA+PC9pb24tcHJvZ3Jlc3MtYmFyPlxuPC9kaXY+XG4iXX0=