mmhglobal-dynamicform 2.32.0 → 2.33.0

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.
@@ -27,6 +27,8 @@ export class ZtrendcardComponent {
27
27
  this.icon = "address-card";
28
28
  this.color = "#000000";
29
29
  this.value = 0;
30
+ this.iconColumnSize = 4;
31
+ this.valueColumnSize = 4;
30
32
  this.options = {
31
33
  title: this.title,
32
34
  icon: this.icon,
@@ -67,6 +69,18 @@ export class ZtrendcardComponent {
67
69
  }
68
70
  }
69
71
  }
72
+ const ratio = this.data['InnerRatio'] ? this.data['InnerRatio'].split(':').map(val => val.trim()) : null;
73
+ if (ratio) {
74
+ if (ratio.length === 2) {
75
+ // When there are two values, assign them directly
76
+ this.iconColumnSize = parseInt(ratio[0]); // 4 for iconColumnSize
77
+ this.valueColumnSize = parseInt(ratio[1]); // 8 for valueColumnSize
78
+ }
79
+ else if (ratio && ratio.length === 1) {
80
+ // If only one value is provided, split evenly
81
+ this.iconColumnSize = this.valueColumnSize = parseInt(ratio[0]);
82
+ }
83
+ }
70
84
  this.getFieldDeclarationForSetup(this.data, this.options);
71
85
  this.isLoading = false;
72
86
  }
@@ -78,10 +92,10 @@ export class ZtrendcardComponent {
78
92
  }
79
93
  }
80
94
  ZtrendcardComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: ZtrendcardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
81
- ZtrendcardComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.3", type: ZtrendcardComponent, selector: "app-ztrendcard", inputs: { data: "data", group: "group", form: "form" }, ngImport: i0, template: "<div *ngIf=\"!isLoading && (!!componentProperties.isVisibleField ? group[componentProperties.isVisibleField] : componentProperties.isVisible)\" style=\"text-align: center;\">\r\n <ion-grid>\r\n <ion-row>\r\n <ion-col>\r\n <!-- <div class=\"trend-btn ion-activatable ripple-parent\" [routerLink]=\"[item.URL]\"> -->\r\n <div class=\"trend-btn ion-activatable ripple-parent\">\r\n <ion-label>\r\n <ion-grid style=\"width: 100%;\">\r\n <ion-row>\r\n <ion-col class=\"trend-btn-icon\" sizeLg=\"4\" sizeXs=\"4\" sizeMd=\"4\" sizeXl=\"4\">\r\n <fa-icon [icon]=\"options.icon\" [style.color]=\"options.color\"></fa-icon>\r\n </ion-col>\r\n <ion-col class=\"trend-btn-value\" sizeLg=\"4\" sizeXs=\"4\" sizeMd=\"4\" sizeXl=\"4\">\r\n <ion-label>{{ options.value }}</ion-label><br/>\r\n </ion-col>\r\n </ion-row>\r\n </ion-grid>\r\n </ion-label>\r\n <ion-label class=\"trend-btn-label\">{{ options.title }}</ion-label>\r\n <ion-ripple-effect></ion-ripple-effect>\r\n </div>\r\n </ion-col>\r\n </ion-row>\r\n </ion-grid>\r\n</div>\r\n<div style=\"padding-bottom: 10px;\"></div>\r\n\r\n\r\n\r\n\r\n\r\n", styles: [".trend-btn{display:flex;flex-flow:column;justify-content:center;align-items:stretch;background-color:#fff;padding:8px 0;border:1px solid #ccc;border-radius:5px;min-height:100px;cursor:pointer}.ripple-parent{position:relative;overflow:hidden}.trend-btn-label{text-align:right;font-size:14px;padding-right:20px}.trend-btn-value{text-align:right;zoom:2;vertical-align:middle;padding-top:10px}.trend-btn-icon{text-align:center;zoom:2.5}\n"], components: [{ type: i1.IonGrid, selector: "ion-grid", inputs: ["fixed"] }, { type: i1.IonRow, selector: "ion-row" }, { type: i1.IonCol, selector: "ion-col", inputs: ["offset", "offsetLg", "offsetMd", "offsetSm", "offsetXl", "offsetXs", "pull", "pullLg", "pullMd", "pullSm", "pullXl", "pullXs", "push", "pushLg", "pushMd", "pushSm", "pushXl", "pushXs", "size", "sizeLg", "sizeMd", "sizeSm", "sizeXl", "sizeXs"] }, { type: i1.IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { type: i2.FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "spin", "pulse", "mask", "styles", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "classes", "transform", "a11yRole"] }, { type: i1.IonRippleEffect, selector: "ion-ripple-effect", inputs: ["type"] }], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
95
+ ZtrendcardComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.3", type: ZtrendcardComponent, selector: "app-ztrendcard", inputs: { data: "data", group: "group", form: "form" }, ngImport: i0, template: "<div *ngIf=\"!isLoading && (!!componentProperties.isVisibleField ? group[componentProperties.isVisibleField] : componentProperties.isVisible)\" style=\"text-align: center;\">\r\n <ion-grid>\r\n <ion-row>\r\n <ion-col>\r\n <!-- <div class=\"trend-btn ion-activatable ripple-parent\" [routerLink]=\"[item.URL]\"> -->\r\n <div class=\"trend-btn ion-activatable ripple-parent\">\r\n <ion-label>\r\n <ion-grid style=\"width: 100%;\">\r\n <ion-row>\r\n <ion-col class=\"trend-btn-icon\" [sizeLg]=\"iconColumnSize\" [sizeXs]=\"iconColumnSize\" [sizeMd]=\"iconColumnSize\" [sizeXl]=\"iconColumnSize\">\r\n <fa-icon [icon]=\"options.icon\" [style.color]=\"options.color\"></fa-icon>\r\n </ion-col>\r\n <ion-col class=\"trend-btn-value\" [sizeLg]=\"valueColumnSize\" [sizeXs]=\"valueColumnSize\" [sizeMd]=\"valueColumnSize\" [sizeXl]=\"valueColumnSize\">\r\n <ion-label>{{ options.value }}</ion-label><br/>\r\n </ion-col>\r\n </ion-row>\r\n </ion-grid>\r\n </ion-label>\r\n <ion-label class=\"trend-btn-label\">{{ options.title }}</ion-label>\r\n <ion-ripple-effect></ion-ripple-effect>\r\n </div>\r\n </ion-col>\r\n </ion-row>\r\n </ion-grid>\r\n</div>\r\n<div style=\"padding-bottom: 10px;\"></div>\r\n\r\n\r\n\r\n\r\n\r\n", styles: [".trend-btn{display:flex;flex-flow:column;justify-content:center;align-items:stretch;background-color:#fff;padding:8px 0;border:1px solid #ccc;border-radius:5px;min-height:100px;cursor:pointer}.ripple-parent{position:relative;overflow:hidden}.trend-btn-label{text-align:right;font-size:14px;padding-right:20px}.trend-btn-value{text-align:right;zoom:2;vertical-align:middle;padding-top:10px}.trend-btn-icon{text-align:center;zoom:2.5}\n"], components: [{ type: i1.IonGrid, selector: "ion-grid", inputs: ["fixed"] }, { type: i1.IonRow, selector: "ion-row" }, { type: i1.IonCol, selector: "ion-col", inputs: ["offset", "offsetLg", "offsetMd", "offsetSm", "offsetXl", "offsetXs", "pull", "pullLg", "pullMd", "pullSm", "pullXl", "pullXs", "push", "pushLg", "pushMd", "pushSm", "pushXl", "pushXs", "size", "sizeLg", "sizeMd", "sizeSm", "sizeXl", "sizeXs"] }, { type: i1.IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { type: i2.FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "spin", "pulse", "mask", "styles", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "classes", "transform", "a11yRole"] }, { type: i1.IonRippleEffect, selector: "ion-ripple-effect", inputs: ["type"] }], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
82
96
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: ZtrendcardComponent, decorators: [{
83
97
  type: Component,
84
- args: [{ selector: 'app-ztrendcard', template: "<div *ngIf=\"!isLoading && (!!componentProperties.isVisibleField ? group[componentProperties.isVisibleField] : componentProperties.isVisible)\" style=\"text-align: center;\">\r\n <ion-grid>\r\n <ion-row>\r\n <ion-col>\r\n <!-- <div class=\"trend-btn ion-activatable ripple-parent\" [routerLink]=\"[item.URL]\"> -->\r\n <div class=\"trend-btn ion-activatable ripple-parent\">\r\n <ion-label>\r\n <ion-grid style=\"width: 100%;\">\r\n <ion-row>\r\n <ion-col class=\"trend-btn-icon\" sizeLg=\"4\" sizeXs=\"4\" sizeMd=\"4\" sizeXl=\"4\">\r\n <fa-icon [icon]=\"options.icon\" [style.color]=\"options.color\"></fa-icon>\r\n </ion-col>\r\n <ion-col class=\"trend-btn-value\" sizeLg=\"4\" sizeXs=\"4\" sizeMd=\"4\" sizeXl=\"4\">\r\n <ion-label>{{ options.value }}</ion-label><br/>\r\n </ion-col>\r\n </ion-row>\r\n </ion-grid>\r\n </ion-label>\r\n <ion-label class=\"trend-btn-label\">{{ options.title }}</ion-label>\r\n <ion-ripple-effect></ion-ripple-effect>\r\n </div>\r\n </ion-col>\r\n </ion-row>\r\n </ion-grid>\r\n</div>\r\n<div style=\"padding-bottom: 10px;\"></div>\r\n\r\n\r\n\r\n\r\n\r\n", styles: [".trend-btn{display:flex;flex-flow:column;justify-content:center;align-items:stretch;background-color:#fff;padding:8px 0;border:1px solid #ccc;border-radius:5px;min-height:100px;cursor:pointer}.ripple-parent{position:relative;overflow:hidden}.trend-btn-label{text-align:right;font-size:14px;padding-right:20px}.trend-btn-value{text-align:right;zoom:2;vertical-align:middle;padding-top:10px}.trend-btn-icon{text-align:center;zoom:2.5}\n"] }]
98
+ args: [{ selector: 'app-ztrendcard', template: "<div *ngIf=\"!isLoading && (!!componentProperties.isVisibleField ? group[componentProperties.isVisibleField] : componentProperties.isVisible)\" style=\"text-align: center;\">\r\n <ion-grid>\r\n <ion-row>\r\n <ion-col>\r\n <!-- <div class=\"trend-btn ion-activatable ripple-parent\" [routerLink]=\"[item.URL]\"> -->\r\n <div class=\"trend-btn ion-activatable ripple-parent\">\r\n <ion-label>\r\n <ion-grid style=\"width: 100%;\">\r\n <ion-row>\r\n <ion-col class=\"trend-btn-icon\" [sizeLg]=\"iconColumnSize\" [sizeXs]=\"iconColumnSize\" [sizeMd]=\"iconColumnSize\" [sizeXl]=\"iconColumnSize\">\r\n <fa-icon [icon]=\"options.icon\" [style.color]=\"options.color\"></fa-icon>\r\n </ion-col>\r\n <ion-col class=\"trend-btn-value\" [sizeLg]=\"valueColumnSize\" [sizeXs]=\"valueColumnSize\" [sizeMd]=\"valueColumnSize\" [sizeXl]=\"valueColumnSize\">\r\n <ion-label>{{ options.value }}</ion-label><br/>\r\n </ion-col>\r\n </ion-row>\r\n </ion-grid>\r\n </ion-label>\r\n <ion-label class=\"trend-btn-label\">{{ options.title }}</ion-label>\r\n <ion-ripple-effect></ion-ripple-effect>\r\n </div>\r\n </ion-col>\r\n </ion-row>\r\n </ion-grid>\r\n</div>\r\n<div style=\"padding-bottom: 10px;\"></div>\r\n\r\n\r\n\r\n\r\n\r\n", styles: [".trend-btn{display:flex;flex-flow:column;justify-content:center;align-items:stretch;background-color:#fff;padding:8px 0;border:1px solid #ccc;border-radius:5px;min-height:100px;cursor:pointer}.ripple-parent{position:relative;overflow:hidden}.trend-btn-label{text-align:right;font-size:14px;padding-right:20px}.trend-btn-value{text-align:right;zoom:2;vertical-align:middle;padding-top:10px}.trend-btn-icon{text-align:center;zoom:2.5}\n"] }]
85
99
  }], ctorParameters: function () { return []; }, propDecorators: { data: [{
86
100
  type: Input
87
101
  }], group: [{
@@ -89,4 +103,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.3", ngImpor
89
103
  }], form: [{
90
104
  type: Input
91
105
  }] } });
92
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoienRyZW5kY2FyZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tbWhnbG9iYWwtZHluYW1pY2Zvcm0vc3JjL2xpYi96dHJlbmRjYXJkL3p0cmVuZGNhcmQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbW1oZ2xvYmFsLWR5bmFtaWNmb3JtL3NyYy9saWIvenRyZW5kY2FyZC96dHJlbmRjYXJkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtCQUErQjtBQUMvQixPQUFPLEVBQUUsU0FBUyxFQUFVLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUd6RCw2QkFBNkI7QUFFN0IsOEJBQThCO0FBRTlCLDJDQUEyQztBQUMzQyxPQUFPLEVBQ08sZ0JBQWdCLEVBQUUsb0JBQW9CLEVBQ25ELE1BQU0saUJBQWlCLENBQUM7Ozs7O0FBU3pCLE1BQU0sT0FBTyxtQkFBbUI7SUFtQmhDLHNCQUFzQjtJQUN0Qiw2QkFBNkI7SUFDN0IseUNBQXlDO0lBQ3pDLDBCQUEwQjtJQUMxQix1QkFBdUI7SUFDdkIscUNBQXFDO0lBQ3JDLGdDQUFnQztJQUNoQyw2Q0FBNkM7SUFDN0MscUJBQXFCO0lBQ3JCLHdCQUF3QjtJQUN4QixNQUFNO0lBRUo7UUExQkEsY0FBUyxHQUFHLElBQUksQ0FBQztRQUNqQix3QkFBbUIsR0FBRyxJQUFJLG9CQUFvQixFQUFFLENBQUM7UUFDekMsVUFBSyxHQUFHLFdBQVcsQ0FBQztRQUNwQixTQUFJLEdBQUcsY0FBYyxDQUFDO1FBQ3RCLFVBQUssR0FBRyxTQUFTLENBQUM7UUFDbEIsVUFBSyxHQUFHLENBQUMsQ0FBQztRQUVsQixZQUFPLEdBQUc7WUFDUixLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUs7WUFDakIsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO1lBQ2YsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLO1lBQ2pCLEtB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LENBQUMsS0FBSyxDQUFDO0lBQzlGLENBQUM7O2dIQTNEVSxtQkFBbUI7b0dBQW5CLG1CQUFtQiw4R0NwQmhDLDZ4Q0ErQkE7MkZEWGEsbUJBQW1CO2tCQU4vQixTQUFTOytCQUNFLGdCQUFnQjswRUFNakIsSUFBSTtzQkFBWixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyIvKioqKioqKioqKiBBbmd1bGFyICoqKioqKioqKiovXHJcbmltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcblxyXG4vKioqKioqKioqKiBJb25pYyAqKioqKioqKioqL1xyXG5cclxuLyoqKioqKioqKiogUGx1Z2luICoqKioqKioqKiovXHJcblxyXG4vKioqKioqKioqKiBDb21wb25lbnQgJiBTZXJ2aWNlICoqKioqKioqKiovXHJcbmltcG9ydCB7XHJcbiAgWkNvbXBvbmVudCwgWkNvbXBvbmVudEhlbHBlciwgWkNvbXBvbmVudFByb3BlcnRpZXMsIFpGaWVsZCwgWkdyb3VwXHJcbn0gZnJvbSAnbW1oZ2xvYmFsLXpjb3JlJztcclxuXHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC16dHJlbmRjYXJkJyxcclxuICB0ZW1wbGF0ZVVybDogJy4venRyZW5kY2FyZC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4venRyZW5kY2FyZC5jb21wb25lbnQuc2NzcyddLFxyXG59KVxyXG5cclxuZXhwb3J0IGNsYXNzIFp0cmVuZGNhcmRDb21wb25lbnQgaW1wbGVtZW50cyBaQ29tcG9uZW50LCBPbkluaXQge1xyXG4gIEBJbnB1dCgpIGRhdGE6IFpGaWVsZDtcclxuICBASW5wdXQoKSBncm91cDogWkdyb3VwO1xyXG4gIEBJbnB1dCgpIGZvcm06IEZvcm1Hcm91cDtcclxuXHJcbiAgaXNMb2FkaW5nID0gdHJ1ZTtcclxuICBjb21wb25lbnRQcm9wZXJ0aWVzID0gbmV3IFpDb21wb25lbnRQcm9wZXJ0aWVzKCk7XHJcbiAgcHJpdmF0ZSB0aXRsZSA9IFwiVW5kZWZpbmVkXCI7XHJcbiAgcHJpdmF0ZSBpY29uID0gXCJhZGRyZXNzLWNhcmRcIjtcclxuICBwcml2YXRlIGNvbG9yID0gXCIjMDAwMDAwXCI7XHJcbiAgcHJpdmF0ZSB2YWx1ZSA9IDA7XHJcblxyXG4gIG9wdGlvbnMgPSB7XHJcbiAgICB0aXRsZTogdGhpcy50aXRsZSxcclxuICAgIGljb246IHRoaXMuaWNvbixcclxuICAgIGNvbG9yOiB0aGlzLmNvbG9yLFxyXG4gICAgdmFsdWU6IHRoaXMudmFsdWVcclxuICB9O1xyXG5cclxuLy8gIGZpZWxkRWxlbWVudDAxID0gW1xyXG4vLyAgIHtcIk5hbWVcIjogXCJteVRyZW5kQ2FyZDFcIixcclxuLy8gICBcIlZhbHVlXCI6IFwiZ3JvdXAubXlUcmVuZENhcmQwMVZhbHVlXCIsXHJcbi8vICAgXCJUeXBlXCI6IFwienRyZW5kY2FyZFwiLFxyXG4vLyAgIFwiVmlzaWJsZVwiOiBcInRydWVcIixcclxuLy8gICBcIkRpdkNsYXNzXCI6IFwiY29sLW1kLTMgY29sLWxnLTNcIixcclxuLy8gICBcIkFwcGVuZERpdkNsZWFyRml4XCI6IGZhbHNlLFxyXG4vLyAgIFwiVGl0bGVcIjogXCJVcGNvbWluZyBDYWxsL0ZvbGxvdy1VcCBDYWxsXCIsXHJcbi8vICAgXCJJY29uXCI6IFwicGhvbmVcIixcclxuLy8gICBcIkNvbG9yXCI6IFwiI0Y3QkM0NlwiLFxyXG4vLyB9XTtcclxuXHJcbiAgY29uc3RydWN0b3IoKSB7IH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICBaQ29tcG9uZW50SGVscGVyLnNldENvbXBvbmVudFByb3BlcnRpZXModGhpcyk7XHJcbiAgICBaQ29tcG9uZW50SGVscGVyLnJlZ2lzdGVyQ29tcG9uZW50KHRoaXMpO1xyXG5cclxuICAgIGlmICh0aGlzLmRhdGEuT3B0aW9ucykge1xyXG4gICAgICBjb25zdCBvcHRpb25UeXBlID0gdHlwZW9mICh0aGlzLmRhdGEuT3B0aW9ucyk7XHJcbiAgICAgIGlmIChvcHRpb25UeXBlID09PSAnb2JqZWN0Jykge1xyXG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcy5vcHRpb25zLCB0aGlzLmRhdGEuT3B0aW9ucyk7XHJcbiAgICAgIH0gZWxzZSBpZiAob3B0aW9uVHlwZSA9PT0gJ3N0cmluZycpIHtcclxuICAgICAgICBjb25zdCBvcHRpb25WYWx1ZSA9IFpDb21wb25lbnRIZWxwZXIuZ2V0R3JvdXBFdmFsVmFsdWUuY2FsbCh0aGlzLCB0aGlzLmRhdGEuT3B0aW9ucyk7XHJcbiAgICAgICAgaWYgKHR5cGVvZiAob3B0aW9uVmFsdWUpID09PSAnb2JqZWN0Jykge1xyXG4gICAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLm9wdGlvbnMsIG9wdGlvblZhbHVlKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmdldEZpZWxkRGVjbGFyYXRpb25Gb3JTZXR1cCh0aGlzLmRhdGEsIHRoaXMub3B0aW9ucyk7XHJcbiAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xyXG5cclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0RmllbGREZWNsYXJhdGlvbkZvclNldHVwKGZpZWxkOiBaRmllbGQsIG9wdGlvbnM6IGFueSkge1xyXG4gICAgb3B0aW9ucy50aXRsZSA9IFpDb21wb25lbnRIZWxwZXIuZ2V0R3JvdXBFdmFsVmFsdWUuY2FsbCh0aGlzLCBmaWVsZC5UaXRsZSkgfHwgb3B0aW9ucy50aXRsZTtcclxuICAgIG9wdGlvbnMuaWNvbiA9WkNvbXBvbmVudEhlbHBlci5nZXRHcm91cEV2YWxWYWx1ZS5jYWxsKHRoaXMsIGZpZWxkLkljb24pIHx8IG9wdGlvbnMuaWNvbjtcclxuICAgIG9wdGlvbnMuY29sb3IgPVpDb21wb25lbnRIZWxwZXIuZ2V0R3JvdXBFdmFsVmFsdWUuY2FsbCh0aGlzLCBmaWVsZC5Db2xvcikgfHwgb3B0aW9ucy5jb2xvcjtcclxuICAgIG9wdGlvbnMudmFsdWUgPSBaQ29tcG9uZW50SGVscGVyLmdldEdyb3VwRXZhbFZhbHVlLmNhbGwodGhpcywgZmllbGQuVmFsdWUpIHx8IG9wdGlvbnMudmFsdWU7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2V0RW5hYmxlID0gKHN0YXR1czogYm9vbGVhbikgPT4ge1xyXG4gICAgLy8gY29uc3QgZmMgPSB0aGlzLmdyb3VwLmZvcm0uY29udHJvbHNbdGhpcy5kYXRhLlZhbHVlXTtcclxuICAgIC8vIHN0YXR1cyA/IGZjLmVuYWJsZSgpIDogZmMuZGlzYWJsZSgpO1xyXG4gICAgdGhpcy5jb21wb25lbnRQcm9wZXJ0aWVzLmlzUmVhZE9ubHkgPSAhc3RhdHVzO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNldFZpc2libGUgPSAoc3RhdHVzOiBib29sZWFuKSA9PiB7XHJcbiAgICB0aGlzLmNvbXBvbmVudFByb3BlcnRpZXMuaXNWaXNpYmxlID0gc3RhdHVzO1xyXG4gICAgdGhpcy5kYXRhLlZpc2libGUgPSBzdGF0dXM7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2V0UmVxdWlyZSA9IChzdGF0dXM6IGJvb2xlYW4pID0+IHtcclxuICAgIHRoaXMuY29tcG9uZW50UHJvcGVydGllcy5pc1JlcXVpcmVkID0gc3RhdHVzO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNldERhdGEgPSAoZ0RhdGE6IGFueSkgPT4ge1xyXG4gICAgaWYoIWdEYXRhKVxyXG4gICAge1xyXG4gICAgICB0aGlzLm9wdGlvbnMudmFsdWU9MDtcclxuICAgIH1cclxuICAgIHRoaXMuZ2V0RmllbGREZWNsYXJhdGlvbkZvclNldHVwKHRoaXMuZGF0YSwgdGhpcy5vcHRpb25zKTtcclxuICB9XHJcblxyXG59XHJcbiIsIjxkaXYgKm5nSWY9XCIhaXNMb2FkaW5nICYmICghIWNvbXBvbmVudFByb3BlcnRpZXMuaXNWaXNpYmxlRmllbGQgPyBncm91cFtjb21wb25lbnRQcm9wZXJ0aWVzLmlzVmlzaWJsZUZpZWxkXSA6IGNvbXBvbmVudFByb3BlcnRpZXMuaXNWaXNpYmxlKVwiIHN0eWxlPVwidGV4dC1hbGlnbjogY2VudGVyO1wiPlxyXG4gIDxpb24tZ3JpZD5cclxuICAgIDxpb24tcm93PlxyXG4gICAgICA8aW9uLWNvbD5cclxuICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJ0cmVuZC1idG4gaW9uLWFjdGl2YXRhYmxlIHJpcHBsZS1wYXJlbnRcIiBbcm91dGVyTGlua109XCJbaXRlbS5VUkxdXCI+IC0tPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0cmVuZC1idG4gaW9uLWFjdGl2YXRhYmxlIHJpcHBsZS1wYXJlbnRcIj5cclxuICAgICAgICAgIDxpb24tbGFiZWw+XHJcbiAgICAgICAgICAgIDxpb24tZ3JpZCBzdHlsZT1cIndpZHRoOiAxMDAlO1wiPlxyXG4gICAgICAgICAgICAgIDxpb24tcm93PlxyXG4gICAgICAgICAgICAgICAgPGlvbi1jb2wgY2xhc3M9XCJ0cmVuZC1idG4taWNvblwiIHNpemVMZz1cIjRcIiBzaXplWHM9XCI0XCIgc2l6ZU1kPVwiNFwiIHNpemVYbD1cIjRcIj5cclxuICAgICAgICAgICAgICAgICAgPGZhLWljb24gW2ljb25dPVwib3B0aW9ucy5pY29uXCIgW3N0eWxlLmNvbG9yXT1cIm9wdGlvbnMuY29sb3JcIj48L2ZhLWljb24+XHJcbiAgICAgICAgICAgICAgICA8L2lvbi1jb2w+XHJcbiAgICAgICAgICAgICAgICA8aW9uLWNvbCBjbGFzcz1cInRyZW5kLWJ0bi12YWx1ZVwiIHNpemVMZz1cIjRcIiBzaXplWHM9XCI0XCIgc2l6ZU1kPVwiNFwiIHNpemVYbD1cIjRcIj5cclxuICAgICAgICAgICAgICAgICAgPGlvbi1sYWJlbD57eyBvcHRpb25zLnZhbHVlIH19PC9pb24tbGFiZWw+PGJyLz5cclxuICAgICAgICAgICAgICAgIDwvaW9uLWNvbD5cclxuICAgICAgICAgICAgICA8L2lvbi1yb3c+XHJcbiAgICAgICAgICAgIDwvaW9uLWdyaWQ+XHJcbiAgICAgICAgICA8L2lvbi1sYWJlbD5cclxuICAgICAgICAgIDxpb24tbGFiZWwgY2xhc3M9XCJ0cmVuZC1idG4tbGFiZWxcIj57eyBvcHRpb25zLnRpdGxlIH19PC9pb24tbGFiZWw+XHJcbiAgICAgICAgICA8aW9uLXJpcHBsZS1lZmZlY3Q+PC9pb24tcmlwcGxlLWVmZmVjdD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9pb24tY29sPlxyXG4gICAgPC9pb24tcm93PlxyXG4gIDwvaW9uLWdyaWQ+XHJcbjwvZGl2PlxyXG48ZGl2IHN0eWxlPVwicGFkZGluZy1ib3R0b206IDEwcHg7XCI+PC9kaXY+XHJcblxyXG5cclxuXHJcblxyXG5cclxuIl19
106
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoienRyZW5kY2FyZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tbWhnbG9iYWwtZHluYW1pY2Zvcm0vc3JjL2xpYi96dHJlbmRjYXJkL3p0cmVuZGNhcmQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbW1oZ2xvYmFsLWR5bmFtaWNmb3JtL3NyYy9saWIvenRyZW5kY2FyZC96dHJlbmRjYXJkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtCQUErQjtBQUMvQixPQUFPLEVBQUUsU0FBUyxFQUFVLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUd6RCw2QkFBNkI7QUFFN0IsOEJBQThCO0FBRTlCLDJDQUEyQztBQUMzQyxPQUFPLEVBQ08sZ0JBQWdCLEVBQUUsb0JBQW9CLEVBQ25ELE1BQU0saUJBQWlCLENBQUM7Ozs7O0FBU3pCLE1BQU0sT0FBTyxtQkFBbUI7SUFxQmhDLHNCQUFzQjtJQUN0Qiw2QkFBNkI7SUFDN0IseUNBQXlDO0lBQ3pDLDBCQUEwQjtJQUMxQix1QkFBdUI7SUFDdkIscUNBQXFDO0lBQ3JDLGdDQUFnQztJQUNoQyw2Q0FBNkM7SUFDN0MscUJBQXFCO0lBQ3JCLHdCQUF3QjtJQUN4QixNQUFNO0lBRUo7UUE1QkEsY0FBUyxHQUFHLElBQUksQ0FBQztRQUNqQix3QkFBbUIsR0FBRyxJQUFJLG9CQUFvQixFQUFFLENBQUM7UUFDekMsVUFBSyxHQUFHLFdBQVcsQ0FBQztRQUNwQixTQUFJLEdBQUcsY0FBYyxDQUFDO1FBQ3RCLFVBQUssR0FBRyxTQUFTLENBQUM7UUFDbEIsVUFBSyxHQUFHLENBQUMsQ0FBQztRQUNsQixtQkFBYyxHQUFHLENBQUMsQ0FBQztRQUNuQixvQkFBZSxHQUFHLENBQUMsQ0FBQztRQUVwQixZQUFPLEdBQUc7WUFDUixLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUs7WUFDakIsSUFBSSxFQUFF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eyBDb21wb25lbnQsIE9uSW5pdCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5cclxuLyoqKioqKioqKiogSW9uaWMgKioqKioqKioqKi9cclxuXHJcbi8qKioqKioqKioqIFBsdWdpbiAqKioqKioqKioqL1xyXG5cclxuLyoqKioqKioqKiogQ29tcG9uZW50ICYgU2VydmljZSAqKioqKioqKioqL1xyXG5pbXBvcnQge1xyXG4gIFpDb21wb25lbnQsIFpDb21wb25lbnRIZWxwZXIsIFpDb21wb25lbnRQcm9wZXJ0aWVzLCBaRmllbGQsIFpHcm91cFxyXG59IGZyb20gJ21taGdsb2JhbC16Y29yZSc7XHJcblxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtenRyZW5kY2FyZCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3p0cmVuZGNhcmQuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3p0cmVuZGNhcmQuY29tcG9uZW50LnNjc3MnXSxcclxufSlcclxuXHJcbmV4cG9ydCBjbGFzcyBadHJlbmRjYXJkQ29tcG9uZW50IGltcGxlbWVudHMgWkNvbXBvbmVudCwgT25Jbml0IHtcclxuICBASW5wdXQoKSBkYXRhOiBaRmllbGQ7XHJcbiAgQElucHV0KCkgZ3JvdXA6IFpHcm91cDtcclxuICBASW5wdXQoKSBmb3JtOiBGb3JtR3JvdXA7XHJcblxyXG4gIGlzTG9hZGluZyA9IHRydWU7XHJcbiAgY29tcG9uZW50UHJvcGVydGllcyA9IG5ldyBaQ29tcG9uZW50UHJvcGVydGllcygpO1xyXG4gIHByaXZhdGUgdGl0bGUgPSBcIlVuZGVmaW5lZFwiO1xyXG4gIHByaXZhdGUgaWNvbiA9IFwiYWRkcmVzcy1jYXJkXCI7XHJcbiAgcHJpdmF0ZSBjb2xvciA9IFwiIzAwMDAwMFwiO1xyXG4gIHByaXZhdGUgdmFsdWUgPSAwO1xyXG4gIGljb25Db2x1bW5TaXplID0gNDtcclxuICB2YWx1ZUNvbHVtblNpemUgPSA0O1xyXG5cclxuICBvcHRpb25zID0ge1xyXG4gICAgdGl0bGU6IHRoaXMudGl0bGUsXHJcbiAgICBpY29uOiB0aGlzLmljb24sXHJcbiAgICBjb2xvcjogdGhpcy5jb2xvcixcclxuICAgIHZhbHVlOiB0aGlzLnZhbHVlXHJcbiAgfTtcclxuXHJcbi8vICBmaWVsZEVsZW1lbnQwMSA9IFtcclxuLy8gICB7XCJOYW1lXCI6IFwibXlUcmVuZENhcmQxXCIsXHJcbi8vICAgXCJWYWx1ZVwiOiBcImdyb3VwLm15VHJlbmRDYXJkMDFWYWx1ZVwiLFxyXG4vLyAgIFwiVHlwZVwiOiBcInp0cmVuZGNhcmRcIixcclxuLy8gICBcIlZpc2libGVcIjogXCJ0cnVlXCIsXHJcbi8vICAgXCJEaXZDbGFzc1wiOiBcImNvbC1tZC0zIGNvbC1sZy0zXCIsXHJcbi8vICAgXCJBcHBlbmREaXZDbGVhckZpeFwiOiBmYWxzZSxcclxuLy8gICBcIlRpdGxlXCI6IFwiVXBjb21pbmcgQ2FsbC9Gb2xsb3ctVXAgQ2FsbFwiLFxyXG4vLyAgIFwiSWNvblwiOiBcInBob25lXCIsXHJcbi8vICAgXCJDb2xvclwiOiBcIiNGN0JDNDZcIixcclxuLy8gfV07XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkgeyB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgWkNvbXBvbmVudEhlbHBlci5zZXRDb21wb25lbnRQcm9wZXJ0aWVzKHRoaXMpO1xyXG4gICAgWkNvbXBvbmVudEhlbHBlci5yZWdpc3RlckNvbXBvbmVudCh0aGlzKTtcclxuXHJcbiAgICBpZiAodGhpcy5kYXRhLk9wdGlvbnMpIHtcclxuICAgICAgY29uc3Qgb3B0aW9uVHlwZSA9IHR5cGVvZiAodGhpcy5kYXRhLk9wdGlvbnMpO1xyXG4gICAgICBpZiAob3B0aW9uVHlwZSA9PT0gJ29iamVjdCcpIHtcclxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMub3B0aW9ucywgdGhpcy5kYXRhLk9wdGlvbnMpO1xyXG4gICAgICB9IGVsc2UgaWYgKG9wdGlvblR5cGUgPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgY29uc3Qgb3B0aW9uVmFsdWUgPSBaQ29tcG9uZW50SGVscGVyLmdldEdyb3VwRXZhbFZhbHVlLmNhbGwodGhpcywgdGhpcy5kYXRhLk9wdGlvbnMpO1xyXG4gICAgICAgIGlmICh0eXBlb2YgKG9wdGlvblZhbHVlKSA9PT0gJ29iamVjdCcpIHtcclxuICAgICAgICAgIE9iamVjdC5hc3NpZ24odGhpcy5vcHRpb25zLCBvcHRpb25WYWx1ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiBcclxuICAgIGNvbnN0IHJhdGlvID0gdGhpcy5kYXRhWydJbm5lclJhdGlvJ10gPyB0aGlzLmRhdGFbJ0lubmVyUmF0aW8nXS5zcGxpdCgnOicpLm1hcCh2YWwgPT4gdmFsLnRyaW0oKSkgOiBudWxsO1xyXG5cclxuICAgIGlmIChyYXRpbykge1xyXG4gICAgICBpZiAocmF0aW8ubGVuZ3RoID09PSAyKSB7XHJcbiAgICAgICAgLy8gV2hlbiB0aGVyZSBhcmUgdHdvIHZhbHVlcywgYXNzaWduIHRoZW0gZGlyZWN0bHlcclxuICAgICAgICB0aGlzLmljb25Db2x1bW5TaXplID0gcGFyc2VJbnQocmF0aW9bMF0pOyAgLy8gNCBmb3IgaWNvbkNvbHVtblNpemVcclxuICAgICAgICB0aGlzLnZhbHVlQ29sdW1uU2l6ZSA9IHBhcnNlSW50KHJhdGlvWzFdKTsgLy8gOCBmb3IgdmFsdWVDb2x1bW5TaXplXHJcbiAgICAgIH0gXHJcbiAgICAgIGVsc2UgaWYgKHJhdGlvICYmIHJhdGlvLmxlbmd0aCA9PT0gMSkge1xyXG4gICAgICAgIC8vIElmIG9ubHkgb25lIHZhbHVlIGlzIHByb3ZpZGVkLCBzcGxpdCBldmVubHlcclxuICAgICAgICB0aGlzLmljb25Db2x1bW5TaXplID0gdGhpcy52YWx1ZUNvbHVtblNpemUgPSBwYXJzZUludChyYXRpb1swXSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmdldEZpZWxkRGVjbGFyYXRpb25Gb3JTZXR1cCh0aGlzLmRhdGEsIHRoaXMub3B0aW9ucyk7XHJcbiAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xyXG5cclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0RmllbGREZWNsYXJhdGlvbkZvclNldHVwKGZpZWxkOiBaRmllbGQsIG9wdGlvbnM6IGFueSkge1xyXG4gICAgb3B0aW9ucy50aXRsZSA9IFpDb21wb25lbnRIZWxwZXIuZ2V0R3JvdXBFdmFsVmFsdWUuY2FsbCh0aGlzLCBmaWVsZC5UaXRsZSkgfHwgb3B0aW9ucy50aXRsZTtcclxuICAgIG9wdGlvbnMuaWNvbiA9WkNvbXBvbmVudEhlbHBlci5nZXRHcm91cEV2YWxWYWx1ZS5jYWxsKHRoaXMsIGZpZWxkLkljb24pIHx8IG9wdGlvbnMuaWNvbjtcclxuICAgIG9wdGlvbnMuY29sb3IgPVpDb21wb25lbnRIZWxwZXIuZ2V0R3JvdXBFdmFsVmFsdWUuY2FsbCh0aGlzLCBmaWVsZC5Db2xvcikgfHwgb3B0aW9ucy5jb2xvcjtcclxuICAgIG9wdGlvbnMudmFsdWUgPSBaQ29tcG9uZW50SGVscGVyLmdldEdyb3VwRXZhbFZhbHVlLmNhbGwodGhpcywgZmllbGQuVmFsdWUpIHx8IG9wdGlvbnMudmFsdWU7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2V0RW5hYmxlID0gKHN0YXR1czogYm9vbGVhbikgPT4ge1xyXG4gICAgLy8gY29uc3QgZmMgPSB0aGlzLmdyb3VwLmZvcm0uY29udHJvbHNbdGhpcy5kYXRhLlZhbHVlXTtcclxuICAgIC8vIHN0YXR1cyA/IGZjLmVuYWJsZSgpIDogZmMuZGlzYWJsZSgpO1xyXG4gICAgdGhpcy5jb21wb25lbnRQcm9wZXJ0aWVzLmlzUmVhZE9ubHkgPSAhc3RhdHVzO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNldFZpc2libGUgPSAoc3RhdHVzOiBib29sZWFuKSA9PiB7XHJcbiAgICB0aGlzLmNvbXBvbmVudFByb3BlcnRpZXMuaXNWaXNpYmxlID0gc3RhdHVzO1xyXG4gICAgdGhpcy5kYXRhLlZpc2libGUgPSBzdGF0dXM7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2V0UmVxdWlyZSA9IChzdGF0dXM6IGJvb2xlYW4pID0+IHtcclxuICAgIHRoaXMuY29tcG9uZW50UHJvcGVydGllcy5pc1JlcXVpcmVkID0gc3RhdHVzO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNldERhdGEgPSAoZ0RhdGE6IGFueSkgPT4ge1xyXG4gICAgaWYoIWdEYXRhKVxyXG4gICAge1xyXG4gICAgICB0aGlzLm9wdGlvbnMudmFsdWU9MDtcclxuICAgIH1cclxuICAgIHRoaXMuZ2V0RmllbGREZWNsYXJhdGlvbkZvclNldHVwKHRoaXMuZGF0YSwgdGhpcy5vcHRpb25zKTtcclxuICB9XHJcblxyXG59XHJcbiIsIjxkaXYgKm5nSWY9XCIhaXNMb2FkaW5nICYmICghIWNvbXBvbmVudFByb3BlcnRpZXMuaXNWaXNpYmxlRmllbGQgPyBncm91cFtjb21wb25lbnRQcm9wZXJ0aWVzLmlzVmlzaWJsZUZpZWxkXSA6IGNvbXBvbmVudFByb3BlcnRpZXMuaXNWaXNpYmxlKVwiIHN0eWxlPVwidGV4dC1hbGlnbjogY2VudGVyO1wiPlxyXG4gIDxpb24tZ3JpZD5cclxuICAgIDxpb24tcm93PlxyXG4gICAgICA8aW9uLWNvbD5cclxuICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJ0cmVuZC1idG4gaW9uLWFjdGl2YXRhYmxlIHJpcHBsZS1wYXJlbnRcIiBbcm91dGVyTGlua109XCJbaXRlbS5VUkxdXCI+IC0tPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0cmVuZC1idG4gaW9uLWFjdGl2YXRhYmxlIHJpcHBsZS1wYXJlbnRcIj5cclxuICAgICAgICAgIDxpb24tbGFiZWw+XHJcbiAgICAgICAgICAgIDxpb24tZ3JpZCBzdHlsZT1cIndpZHRoOiAxMDAlO1wiPlxyXG4gICAgICAgICAgICAgIDxpb24tcm93PlxyXG4gICAgICAgICAgICAgICAgPGlvbi1jb2wgY2xhc3M9XCJ0cmVuZC1idG4taWNvblwiIFtzaXplTGddPVwiaWNvbkNvbHVtblNpemVcIiBbc2l6ZVhzXT1cImljb25Db2x1bW5TaXplXCIgW3NpemVNZF09XCJpY29uQ29sdW1uU2l6ZVwiIFtzaXplWGxdPVwiaWNvbkNvbHVtblNpemVcIj5cclxuICAgICAgICAgICAgICAgICAgPGZhLWljb24gW2ljb25dPVwib3B0aW9ucy5pY29uXCIgW3N0eWxlLmNvbG9yXT1cIm9wdGlvbnMuY29sb3JcIj48L2ZhLWljb24+XHJcbiAgICAgICAgICAgICAgICA8L2lvbi1jb2w+XHJcbiAgICAgICAgICAgICAgICA8aW9uLWNvbCBjbGFzcz1cInRyZW5kLWJ0bi12YWx1ZVwiIFtzaXplTGddPVwidmFsdWVDb2x1bW5TaXplXCIgW3NpemVYc109XCJ2YWx1ZUNvbHVtblNpemVcIiBbc2l6ZU1kXT1cInZhbHVlQ29sdW1uU2l6ZVwiIFtzaXplWGxdPVwidmFsdWVDb2x1bW5TaXplXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxpb24tbGFiZWw+e3sgb3B0aW9ucy52YWx1ZSB9fTwvaW9uLWxhYmVsPjxici8+XHJcbiAgICAgICAgICAgICAgICA8L2lvbi1jb2w+XHJcbiAgICAgICAgICAgICAgPC9pb24tcm93PlxyXG4gICAgICAgICAgICA8L2lvbi1ncmlkPlxyXG4gICAgICAgICAgPC9pb24tbGFiZWw+XHJcbiAgICAgICAgICA8aW9uLWxhYmVsIGNsYXNzPVwidHJlbmQtYnRuLWxhYmVsXCI+e3sgb3B0aW9ucy50aXRsZSB9fTwvaW9uLWxhYmVsPlxyXG4gICAgICAgICAgPGlvbi1yaXBwbGUtZWZmZWN0PjwvaW9uLXJpcHBsZS1lZmZlY3Q+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvaW9uLWNvbD5cclxuICAgIDwvaW9uLXJvdz5cclxuICA8L2lvbi1ncmlkPlxyXG48L2Rpdj5cclxuPGRpdiBzdHlsZT1cInBhZGRpbmctYm90dG9tOiAxMHB4O1wiPjwvZGl2PlxyXG5cclxuXHJcblxyXG5cclxuXHJcbiJdfQ==