@netgrif/components
Version:
Netgrif Application Engine frontend Angular components
37 lines • 17.1 kB
JavaScript
import { Component, Inject, Optional } from '@angular/core';
import { AbstractTaskListComponent, NAE_TAB_DATA, NAE_TASK_CONTENT_SERVICE_TYPE, TaskContentServiceType } from '@netgrif/components-core';
import * as i0 from "@angular/core";
import * as i1 from "@netgrif/components-core";
import * as i2 from "@angular/router";
import * as i3 from "@angular/common";
import * as i4 from "@ngbracket/ngx-layout";
import * as i5 from "@ngbracket/ngx-layout/extended";
import * as i6 from "@angular/material/expansion";
import * as i7 from "@angular/material/icon";
import * as i8 from "@angular/material/progress-spinner";
import * as i9 from "@angular/cdk/scrolling";
import * as i10 from "../../../panel/task-panel/task-panel.component";
import * as i11 from "@ngx-translate/core";
export class TaskListComponent extends AbstractTaskListComponent {
_taskViewService;
_log;
route;
constructor(_taskViewService, _log, injectedTabData, route) {
super(_taskViewService, _log, injectedTabData, route);
this._taskViewService = _taskViewService;
this._log = _log;
this.route = route;
}
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TaskListComponent, deps: [{ token: i1.TaskViewService }, { token: i1.LoggerService }, { token: NAE_TAB_DATA, optional: true }, { token: i2.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component });
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: TaskListComponent, selector: "nc-task-list", providers: [{ provide: NAE_TASK_CONTENT_SERVICE_TYPE, useValue: TaskContentServiceType.SINGLE }], usesInheritance: true, ngImport: i0, template: "<div *ngIf=\"showVirtualScroll\" fxLayout=\"column\" fxLayoutAlign=\"start center\" fxFlex>\n <ng-container *ngIf=\"tasks$ | async as tasks\">\n\n <div *ngIf=\"(loading$ | async) === false && tasks.length === 0\" fxLayout=\"column\" fxLayoutAlign=\"center center\"\n fxFlex>\n <mat-icon color=\"accent\">check_box</mat-icon>\n <span class=\"font-size-20\">{{ 'tasks.view.noTasksSatisfyingThisFilter' | translate }}</span>\n </div>\n\n <mat-accordion [multi]=\"allowMultiOpen\" class=\"full-width panel-list-content\" fxFlex=\"100\">\n <cdk-virtual-scroll-viewport itemSize=\"52\" (scrolledIndexChange)=\"loadNextPage()\" #taskListVirtualScroll\n [ngClass]=\"{'task-panel-scroll-container': (loading$ | async) === false && tasks.length > 0}\" class=\"full-width full-height dashboard-task-list\">\n <nc-task-panel\n [textEllipsis]=\"textEllipsis\"\n *cdkVirtualFor=\"let task of tasks;\n let i = index;\n let first = first;\n let last = last;\n trackBy: trackBy;\n templateCacheSize: 0\"\n [taskPanelData]=\"task\" [selectedHeaders$]=\"selectedHeaders$\" [first]=\"first\" [last]=\"last\"\n [forceLoadDataOnOpen]=\"forceLoadDataOnOpen\"\n [responsiveBody]=\"responsiveBody\"\n (taskEvent)=\"emitTaskEvent($event)\"\n (panelRefOutput)=\"addToPanelRefs(task, $event)\"\n [taskListVirtualScroll]=\"taskListVirtualScroll\"\n [showMoreMenu]=\"showMoreMenu\"\n [preventExpand]=\"preventExpand\"\n class=\"panel-expanded-spacing\">\n </nc-task-panel>\n\n <div *ngIf=\"loading$ | async\" fxLayout=\"column\" fxLayoutAlign=\"center center\">\n <mat-spinner color=\"primary\" diameter=\"52\"></mat-spinner>\n </div>\n\n </cdk-virtual-scroll-viewport>\n </mat-accordion>\n\n </ng-container>\n</div>\n\n<div *ngIf=\"!showVirtualScroll\" fxLayout=\"column\" fxLayoutAlign=\"center center\">\n <mat-spinner color=\"primary\" diameter=\"52\"></mat-spinner>\n</div>\n", styles: [".font-size-20{font-size:20px}.full-width{width:100%}.full-height{height:100%}\n"], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i4.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { kind: "directive", type: i4.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { kind: "directive", type: i5.DefaultClassDirective, selector: " [ngClass], [ngClass.xs], [ngClass.sm], [ngClass.md], [ngClass.lg], [ngClass.xl], [ngClass.lt-sm], [ngClass.lt-md], [ngClass.lt-lg], [ngClass.lt-xl], [ngClass.gt-xs], [ngClass.gt-sm], [ngClass.gt-md], [ngClass.gt-lg]", inputs: ["ngClass", "ngClass.xs", "ngClass.sm", "ngClass.md", "ngClass.lg", "ngClass.xl", "ngClass.lt-sm", "ngClass.lt-md", "ngClass.lt-lg", "ngClass.lt-xl", "ngClass.gt-xs", "ngClass.gt-sm", "ngClass.gt-md", "ngClass.gt-lg"] }, { kind: "directive", type: i6.MatAccordion, selector: "mat-accordion", inputs: ["hideToggle", "displayMode", "togglePosition"], exportAs: ["matAccordion"] }, { kind: "component", type: i7.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i8.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "directive", type: i9.CdkFixedSizeVirtualScroll, selector: "cdk-virtual-scroll-viewport[itemSize]", inputs: ["itemSize", "minBufferPx", "maxBufferPx"] }, { kind: "directive", type: i9.CdkVirtualForOf, selector: "[cdkVirtualFor][cdkVirtualForOf]", inputs: ["cdkVirtualForOf", "cdkVirtualForTrackBy", "cdkVirtualForTemplate", "cdkVirtualForTemplateCacheSize"] }, { kind: "component", type: i9.CdkVirtualScrollViewport, selector: "cdk-virtual-scroll-viewport", inputs: ["orientation", "appendOnly"], outputs: ["scrolledIndexChange"] }, { kind: "component", type: i10.TaskPanelComponent, selector: "nc-task-panel" }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i11.TranslatePipe, name: "translate" }] });
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TaskListComponent, decorators: [{
type: Component,
args: [{ selector: 'nc-task-list', providers: [{ provide: NAE_TASK_CONTENT_SERVICE_TYPE, useValue: TaskContentServiceType.SINGLE }], template: "<div *ngIf=\"showVirtualScroll\" fxLayout=\"column\" fxLayoutAlign=\"start center\" fxFlex>\n <ng-container *ngIf=\"tasks$ | async as tasks\">\n\n <div *ngIf=\"(loading$ | async) === false && tasks.length === 0\" fxLayout=\"column\" fxLayoutAlign=\"center center\"\n fxFlex>\n <mat-icon color=\"accent\">check_box</mat-icon>\n <span class=\"font-size-20\">{{ 'tasks.view.noTasksSatisfyingThisFilter' | translate }}</span>\n </div>\n\n <mat-accordion [multi]=\"allowMultiOpen\" class=\"full-width panel-list-content\" fxFlex=\"100\">\n <cdk-virtual-scroll-viewport itemSize=\"52\" (scrolledIndexChange)=\"loadNextPage()\" #taskListVirtualScroll\n [ngClass]=\"{'task-panel-scroll-container': (loading$ | async) === false && tasks.length > 0}\" class=\"full-width full-height dashboard-task-list\">\n <nc-task-panel\n [textEllipsis]=\"textEllipsis\"\n *cdkVirtualFor=\"let task of tasks;\n let i = index;\n let first = first;\n let last = last;\n trackBy: trackBy;\n templateCacheSize: 0\"\n [taskPanelData]=\"task\" [selectedHeaders$]=\"selectedHeaders$\" [first]=\"first\" [last]=\"last\"\n [forceLoadDataOnOpen]=\"forceLoadDataOnOpen\"\n [responsiveBody]=\"responsiveBody\"\n (taskEvent)=\"emitTaskEvent($event)\"\n (panelRefOutput)=\"addToPanelRefs(task, $event)\"\n [taskListVirtualScroll]=\"taskListVirtualScroll\"\n [showMoreMenu]=\"showMoreMenu\"\n [preventExpand]=\"preventExpand\"\n class=\"panel-expanded-spacing\">\n </nc-task-panel>\n\n <div *ngIf=\"loading$ | async\" fxLayout=\"column\" fxLayoutAlign=\"center center\">\n <mat-spinner color=\"primary\" diameter=\"52\"></mat-spinner>\n </div>\n\n </cdk-virtual-scroll-viewport>\n </mat-accordion>\n\n </ng-container>\n</div>\n\n<div *ngIf=\"!showVirtualScroll\" fxLayout=\"column\" fxLayoutAlign=\"center center\">\n <mat-spinner color=\"primary\" diameter=\"52\"></mat-spinner>\n</div>\n", styles: [".font-size-20{font-size:20px}.full-width{width:100%}.full-height{height:100%}\n"] }]
}], ctorParameters: () => [{ type: i1.TaskViewService }, { type: i1.LoggerService }, { type: undefined, decorators: [{
type: Optional
}, {
type: Inject,
args: [NAE_TAB_DATA]
}] }, { type: i2.ActivatedRoute }] });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFzay1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25ldGdyaWYtY29tcG9uZW50cy9zcmMvbGliL3ZpZXcvdGFzay12aWV3L3Rhc2stcGFuZWwtbGlzdC90YXNrLWxpc3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmV0Z3JpZi1jb21wb25lbnRzL3NyYy9saWIvdmlldy90YXNrLXZpZXcvdGFzay1wYW5lbC1saXN0L3Rhc2stbGlzdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDMUQsT0FBTyxFQUNILHlCQUF5QixFQUd6QixZQUFZLEVBQ1osNkJBQTZCLEVBQUUsc0JBQXNCLEVBRXhELE1BQU0sMEJBQTBCLENBQUM7Ozs7Ozs7Ozs7Ozs7QUFTbEMsTUFBTSxPQUFPLGlCQUFrQixTQUFRLHlCQUF5QjtJQUN0QztJQUNBO0lBRUE7SUFIdEIsWUFBc0IsZ0JBQWlDLEVBQ2pDLElBQW1CLEVBQ0ssZUFBZ0MsRUFDeEQsS0FBc0I7UUFDeEMsS0FBSyxDQUFDLGdCQUFnQixFQUFFLElBQUksRUFBRSxlQUFlLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFKcEMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFpQjtRQUNqQyxTQUFJLEdBQUosSUFBSSxDQUFlO1FBRW5CLFVBQUssR0FBTCxLQUFLLENBQWlCO0lBRTVDLENBQUM7d0dBTlEsaUJBQWlCLDhFQUdNLFlBQVk7NEZBSG5DLGlCQUFpQix1Q0FGZixDQUFDLEVBQUMsT0FBTyxFQUFFLDZCQUE2QixFQUFFLFFBQVEsRUFBRSxzQkFBc0IsQ0FBQyxNQUFNLEVBQUMsQ0FBQyxpRENmbEcsZzVFQTRDQTs7NEZEM0JhLGlCQUFpQjtrQkFON0IsU0FBUzsrQkFDSSxjQUFjLGFBR2IsQ0FBQyxFQUFDLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxRQUFRLEVBQUUsc0JBQXNCLENBQUMsTUFBTSxFQUFDLENBQUM7OzBCQUtqRixRQUFROzswQkFBSSxNQUFNOzJCQUFDLFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgSW5qZWN0LCBPcHRpb25hbH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICAgIEFic3RyYWN0VGFza0xpc3RDb21wb25lbnQsXG4gICAgSW5qZWN0ZWRUYWJEYXRhLFxuICAgIExvZ2dlclNlcnZpY2UsXG4gICAgTkFFX1RBQl9EQVRBLFxuICAgIE5BRV9UQVNLX0NPTlRFTlRfU0VSVklDRV9UWVBFLCBUYXNrQ29udGVudFNlcnZpY2VUeXBlLFxuICAgIFRhc2tWaWV3U2VydmljZVxufSBmcm9tICdAbmV0Z3JpZi9jb21wb25lbnRzLWNvcmUnO1xuaW1wb3J0IHtBY3RpdmF0ZWRSb3V0ZX0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICduYy10YXNrLWxpc3QnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi90YXNrLWxpc3QuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL3Rhc2stbGlzdC5jb21wb25lbnQuc2NzcyddLFxuICAgIHByb3ZpZGVyczogW3twcm92aWRlOiBOQUVfVEFTS19DT05URU5UX1NFUlZJQ0VfVFlQRSwgdXNlVmFsdWU6IFRhc2tDb250ZW50U2VydmljZVR5cGUuU0lOR0xFfV1cbn0pXG5leHBvcnQgY2xhc3MgVGFza0xpc3RDb21wb25lbnQgZXh0ZW5kcyBBYnN0cmFjdFRhc2tMaXN0Q29tcG9uZW50IHtcbiAgICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgX3Rhc2tWaWV3U2VydmljZTogVGFza1ZpZXdTZXJ2aWNlLFxuICAgICAgICAgICAgICAgIHByb3RlY3RlZCBfbG9nOiBMb2dnZXJTZXJ2aWNlLFxuICAgICAgICAgICAgICAgIEBPcHRpb25hbCgpIEBJbmplY3QoTkFFX1RBQl9EQVRBKSBpbmplY3RlZFRhYkRhdGE6IEluamVjdGVkVGFiRGF0YSxcbiAgICAgICAgICAgICAgICBwcm90ZWN0ZWQgcm91dGU/OiBBY3RpdmF0ZWRSb3V0ZSkge1xuICAgICAgICBzdXBlcihfdGFza1ZpZXdTZXJ2aWNlLCBfbG9nLCBpbmplY3RlZFRhYkRhdGEsIHJvdXRlKTtcbiAgICB9XG59XG4iLCI8ZGl2ICpuZ0lmPVwic2hvd1ZpcnR1YWxTY3JvbGxcIiBmeExheW91dD1cImNvbHVtblwiIGZ4TGF5b3V0QWxpZ249XCJzdGFydCBjZW50ZXJcIiBmeEZsZXg+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInRhc2tzJCB8IGFzeW5jIGFzIHRhc2tzXCI+XG5cbiAgICAgICAgPGRpdiAqbmdJZj1cIihsb2FkaW5nJCB8IGFzeW5jKSA9PT0gZmFsc2UgJiYgdGFza3MubGVuZ3RoID09PSAwXCIgZnhMYXlvdXQ9XCJjb2x1bW5cIiBmeExheW91dEFsaWduPVwiY2VudGVyIGNlbnRlclwiXG4gICAgICAgICAgICAgZnhGbGV4PlxuICAgICAgICAgICAgPG1hdC1pY29uIGNvbG9yPVwiYWNjZW50XCI+Y2hlY2tfYm94PC9tYXQtaWNvbj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZm9udC1zaXplLTIwXCI+e3sgJ3Rhc2tzLnZpZXcubm9UYXNrc1NhdGlzZnlpbmdUaGlzRmlsdGVyJyB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPG1hdC1hY2NvcmRpb24gW211bHRpXT1cImFsbG93TXVsdGlPcGVuXCIgY2xhc3M9XCJmdWxsLXdpZHRoIHBhbmVsLWxpc3QtY29udGVudFwiIGZ4RmxleD1cIjEwMFwiPlxuICAgICAgICAgICAgPGNkay12aXJ0dWFsLXNjcm9sbC12aWV3cG9ydCBpdGVtU2l6ZT1cIjUyXCIgKHNjcm9sbGVkSW5kZXhDaGFuZ2UpPVwibG9hZE5leHRQYWdlKClcIiAjdGFza0xpc3RWaXJ0dWFsU2Nyb2xsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsndGFzay1wYW5lbC1zY3JvbGwtY29udGFpbmVyJzogKGxvYWRpbmckIHwgYXN5bmMpID09PSBmYWxzZSAmJiB0YXNrcy5sZW5ndGggPiAwfVwiIGNsYXNzPVwiZnVsbC13aWR0aCBmdWxsLWhlaWdodCBkYXNoYm9hcmQtdGFzay1saXN0XCI+XG4gICAgICAgICAgICAgICAgPG5jLXRhc2stcGFuZWxcbiAgICAgICAgICAgICAgICAgICAgW3RleHRFbGxpcHNpc109XCJ0ZXh0RWxsaXBzaXNcIlxuICAgICAgICAgICAgICAgICAgICAqY2RrVmlydHVhbEZvcj1cImxldCB0YXNrIG9mIHRhc2tzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGkgPSBpbmRleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBmaXJzdCA9IGZpcnN0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGxhc3QgPSBsYXN0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhY2tCeTogdHJhY2tCeTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlbXBsYXRlQ2FjaGVTaXplOiAwXCJcbiAgICAgICAgICAgICAgICAgICAgW3Rhc2tQYW5lbERhdGFdPVwidGFza1wiIFtzZWxlY3RlZEhlYWRlcnMkXT1cInNlbGVjdGVkSGVhZGVycyRcIiBbZmlyc3RdPVwiZmlyc3RcIiBbbGFzdF09XCJsYXN0XCJcbiAgICAgICAgICAgICAgICAgICAgW2ZvcmNlTG9hZERhdGFPbk9wZW5dPVwiZm9yY2VMb2FkRGF0YU9uT3BlblwiXG4gICAgICAgICAgICAgICAgICAgIFtyZXNwb25zaXZlQm9keV09XCJyZXNwb25zaXZlQm9keVwiXG4gICAgICAgICAgICAgICAgICAgICh0YXNrRXZlbnQpPVwiZW1pdFRhc2tFdmVudCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgKHBhbmVsUmVmT3V0cHV0KT1cImFkZFRvUGFuZWxSZWZzKHRhc2ssICRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICBbdGFza0xpc3RWaXJ0dWFsU2Nyb2xsXT1cInRhc2tMaXN0VmlydHVhbFNjcm9sbFwiXG4gICAgICAgICAgICAgICAgICAgIFtzaG93TW9yZU1lbnVdPVwic2hvd01vcmVNZW51XCJcbiAgICAgICAgICAgICAgICAgICAgW3ByZXZlbnRFeHBhbmRdPVwicHJldmVudEV4cGFuZFwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicGFuZWwtZXhwYW5kZWQtc3BhY2luZ1wiPlxuICAgICAgICAgICAgICAgIDwvbmMtdGFzay1wYW5lbD5cblxuICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJsb2FkaW5nJCB8IGFzeW5jXCIgZnhMYXlvdXQ9XCJjb2x1bW5cIiBmeExheW91dEFsaWduPVwiY2VudGVyIGNlbnRlclwiPlxuICAgICAgICAgICAgICAgICAgICA8bWF0LXNwaW5uZXIgY29sb3I9XCJwcmltYXJ5XCIgZGlhbWV0ZXI9XCI1MlwiPjwvbWF0LXNwaW5uZXI+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDwvY2RrLXZpcnR1YWwtc2Nyb2xsLXZpZXdwb3J0PlxuICAgICAgICA8L21hdC1hY2NvcmRpb24+XG5cbiAgICA8L25nLWNvbnRhaW5lcj5cbjwvZGl2PlxuXG48ZGl2ICpuZ0lmPVwiIXNob3dWaXJ0dWFsU2Nyb2xsXCIgZnhMYXlvdXQ9XCJjb2x1bW5cIiBmeExheW91dEFsaWduPVwiY2VudGVyIGNlbnRlclwiPlxuICAgIDxtYXQtc3Bpbm5lciBjb2xvcj1cInByaW1hcnlcIiBkaWFtZXRlcj1cIjUyXCI+PC9tYXQtc3Bpbm5lcj5cbjwvZGl2PlxuIl19