@netgrif/components
Version:
Netgrif Application Engine frontend Angular components
27 lines • 20 kB
JavaScript
import { Component, Optional } from '@angular/core';
import { AbstractWorkflowPanelComponent } from '@netgrif/components-core';
import * as i0 from "@angular/core";
import * as i1 from "@netgrif/components-core";
import * as i2 from "@ngx-translate/core";
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/button";
import * as i7 from "@angular/material/expansion";
import * as i8 from "@angular/material/icon";
import * as i9 from "../../data-fields/data-field-template/data-field-template.component";
import * as i10 from "../panel.component";
export class WorkflowPanelComponent extends AbstractWorkflowPanelComponent {
constructor(log, translate, workflowService, petriNetResource, overflowService) {
super(log, translate, workflowService, petriNetResource, overflowService);
}
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: WorkflowPanelComponent, deps: [{ token: i1.LoggerService }, { token: i2.TranslateService }, { token: i1.WorkflowViewService }, { token: i1.PetriNetResourceService }, { token: i1.OverflowService, optional: true }], target: i0.ɵɵFactoryTarget.Component });
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: WorkflowPanelComponent, selector: "nc-workflow-panel", usesInheritance: true, ngImport: i0, template: "<nc-app-panel [panelHeader]=\"header\" [panelContent]=\"content\" (getExpansionPanelRef)=\"setPanelRef($event)\" [first]=\"first\" [last]=\"last\">\n <ng-template #header>\n <div fxLayoutAlign=\"start center\" fxLayout=\"row\" fxFlex=\"95\" (click)=\"preventSelectionClick($event)\">\n <div *ngFor=\"let field of featuredFieldsValues; let i = index\" fxLayoutAlign=\"start center\" fxFlex\n [fxHide.lt-xl]=\"i >= 4 && responsiveBody\"\n [fxHide.lt-lg]=\"i >= 3 && responsiveBody\"\n [fxHide.lt-md]=\"i >= 2 && responsiveBody\"\n [fxHide.lt-sm]=\"i >= 1 && responsiveBody\">\n <mat-icon class=\"workflow-panel-icon panel-primary-icon\"\n *ngIf=\"!!field.icon && !!field.value\">{{field.icon}}</mat-icon>\n {{field.value}}\n </div>\n </div>\n <div fxFlex=\"5\"></div>\n </ng-template>\n <ng-template #content>\n <div class=\"panel-main-content\" fxLayout=\"column\">\n <div class=\"workflow-panel-body netgrif-input\" fxFlex=\"100\">\n <div fxLayout=\"row\">\n <div fxFlex=\"50\">\n <nc-data-field-template *ngIf=\"!panelContent.netIdentifier.behavior.hidden\"\n [dataField]=\"panelContent.netIdentifier\">\n </nc-data-field-template>\n </div>\n <div fxFlex=\"50\">\n <nc-data-field-template *ngIf=\"!panelContent.title.behavior.hidden\"\n [dataField]=\"panelContent.title\">\n </nc-data-field-template>\n </div>\n </div>\n <div fxLayout=\"row\">\n <div fxFlex=\"50\">\n <nc-data-field-template *ngIf=\"!panelContent.version.behavior.hidden\"\n [dataField]=\"panelContent.version\">\n </nc-data-field-template>\n </div>\n <div fxFlex=\"50\">\n <nc-data-field-template *ngIf=\"!panelContent.author.behavior.hidden\"\n [dataField]=\"panelContent.author\">\n </nc-data-field-template>\n </div>\n </div>\n <div fxLayout=\"row\">\n <div fxFlex=\"50\">\n <nc-data-field-template *ngIf=\"!panelContent.uploaded.behavior.hidden\"\n [dataField]=\"panelContent.uploaded\">\n </nc-data-field-template>\n </div>\n </div>\n </div>\n <mat-action-row>\n <button mat-stroked-button color=\"primary\"\n (click)=\"downloadNetFile()\">{{'workflow.download' | translate | uppercase }}</button>\n <button *ngIf=\"showDeleteMenu\" mat-stroked-button color=\"warn\"\n (click)=\"deleteWorkflow()\">{{'workflow.delete' | translate | uppercase }}</button>\n <button mat-button color=\"primary\"\n (click)=\"panelRef.expanded = false\">{{'tasks.view.collapse' | translate | uppercase }}</button>\n </mat-action-row>\n </div>\n </ng-template>\n</nc-app-panel>\n", styles: [".task-panel-icon{margin-right:10px}.workflow-panel-footer{border-top:1px solid rgba(0,0,0,.03);padding:5px 24px}.workflow-panel-body{padding:10px 24px}.workflow-panel-icon{margin-right:8px}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { 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.DefaultShowHideDirective, selector: " [fxShow], [fxShow.print], [fxShow.xs], [fxShow.sm], [fxShow.md], [fxShow.lg], [fxShow.xl], [fxShow.lt-sm], [fxShow.lt-md], [fxShow.lt-lg], [fxShow.lt-xl], [fxShow.gt-xs], [fxShow.gt-sm], [fxShow.gt-md], [fxShow.gt-lg], [fxHide], [fxHide.print], [fxHide.xs], [fxHide.sm], [fxHide.md], [fxHide.lg], [fxHide.xl], [fxHide.lt-sm], [fxHide.lt-md], [fxHide.lt-lg], [fxHide.lt-xl], [fxHide.gt-xs], [fxHide.gt-sm], [fxHide.gt-md], [fxHide.gt-lg]", inputs: ["fxShow", "fxShow.print", "fxShow.xs", "fxShow.sm", "fxShow.md", "fxShow.lg", "fxShow.xl", "fxShow.lt-sm", "fxShow.lt-md", "fxShow.lt-lg", "fxShow.lt-xl", "fxShow.gt-xs", "fxShow.gt-sm", "fxShow.gt-md", "fxShow.gt-lg", "fxHide", "fxHide.print", "fxHide.xs", "fxHide.sm", "fxHide.md", "fxHide.lg", "fxHide.xl", "fxHide.lt-sm", "fxHide.lt-md", "fxHide.lt-lg", "fxHide.lt-xl", "fxHide.gt-xs", "fxHide.gt-sm", "fxHide.gt-md", "fxHide.gt-lg"] }, { kind: "component", type: i6.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "directive", type: i7.MatExpansionPanelActionRow, selector: "mat-action-row" }, { kind: "component", type: i8.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i9.DataFieldTemplateComponent, selector: "nc-data-field-template" }, { kind: "component", type: i10.PanelComponent, selector: "nc-app-panel" }, { kind: "pipe", type: i3.UpperCasePipe, name: "uppercase" }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }] });
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: WorkflowPanelComponent, decorators: [{
type: Component,
args: [{ selector: 'nc-workflow-panel', template: "<nc-app-panel [panelHeader]=\"header\" [panelContent]=\"content\" (getExpansionPanelRef)=\"setPanelRef($event)\" [first]=\"first\" [last]=\"last\">\n <ng-template #header>\n <div fxLayoutAlign=\"start center\" fxLayout=\"row\" fxFlex=\"95\" (click)=\"preventSelectionClick($event)\">\n <div *ngFor=\"let field of featuredFieldsValues; let i = index\" fxLayoutAlign=\"start center\" fxFlex\n [fxHide.lt-xl]=\"i >= 4 && responsiveBody\"\n [fxHide.lt-lg]=\"i >= 3 && responsiveBody\"\n [fxHide.lt-md]=\"i >= 2 && responsiveBody\"\n [fxHide.lt-sm]=\"i >= 1 && responsiveBody\">\n <mat-icon class=\"workflow-panel-icon panel-primary-icon\"\n *ngIf=\"!!field.icon && !!field.value\">{{field.icon}}</mat-icon>\n {{field.value}}\n </div>\n </div>\n <div fxFlex=\"5\"></div>\n </ng-template>\n <ng-template #content>\n <div class=\"panel-main-content\" fxLayout=\"column\">\n <div class=\"workflow-panel-body netgrif-input\" fxFlex=\"100\">\n <div fxLayout=\"row\">\n <div fxFlex=\"50\">\n <nc-data-field-template *ngIf=\"!panelContent.netIdentifier.behavior.hidden\"\n [dataField]=\"panelContent.netIdentifier\">\n </nc-data-field-template>\n </div>\n <div fxFlex=\"50\">\n <nc-data-field-template *ngIf=\"!panelContent.title.behavior.hidden\"\n [dataField]=\"panelContent.title\">\n </nc-data-field-template>\n </div>\n </div>\n <div fxLayout=\"row\">\n <div fxFlex=\"50\">\n <nc-data-field-template *ngIf=\"!panelContent.version.behavior.hidden\"\n [dataField]=\"panelContent.version\">\n </nc-data-field-template>\n </div>\n <div fxFlex=\"50\">\n <nc-data-field-template *ngIf=\"!panelContent.author.behavior.hidden\"\n [dataField]=\"panelContent.author\">\n </nc-data-field-template>\n </div>\n </div>\n <div fxLayout=\"row\">\n <div fxFlex=\"50\">\n <nc-data-field-template *ngIf=\"!panelContent.uploaded.behavior.hidden\"\n [dataField]=\"panelContent.uploaded\">\n </nc-data-field-template>\n </div>\n </div>\n </div>\n <mat-action-row>\n <button mat-stroked-button color=\"primary\"\n (click)=\"downloadNetFile()\">{{'workflow.download' | translate | uppercase }}</button>\n <button *ngIf=\"showDeleteMenu\" mat-stroked-button color=\"warn\"\n (click)=\"deleteWorkflow()\">{{'workflow.delete' | translate | uppercase }}</button>\n <button mat-button color=\"primary\"\n (click)=\"panelRef.expanded = false\">{{'tasks.view.collapse' | translate | uppercase }}</button>\n </mat-action-row>\n </div>\n </ng-template>\n</nc-app-panel>\n", styles: [".task-panel-icon{margin-right:10px}.workflow-panel-footer{border-top:1px solid rgba(0,0,0,.03);padding:5px 24px}.workflow-panel-body{padding:10px 24px}.workflow-panel-icon{margin-right:8px}\n"] }]
}], ctorParameters: () => [{ type: i1.LoggerService }, { type: i2.TranslateService }, { type: i1.WorkflowViewService }, { type: i1.PetriNetResourceService }, { type: i1.OverflowService, decorators: [{
type: Optional
}] }] });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2Zsb3ctcGFuZWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmV0Z3JpZi1jb21wb25lbnRzL3NyYy9saWIvcGFuZWwvd29ya2Zsb3ctcGFuZWwvd29ya2Zsb3ctcGFuZWwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmV0Z3JpZi1jb21wb25lbnRzL3NyYy9saWIvcGFuZWwvd29ya2Zsb3ctcGFuZWwvd29ya2Zsb3ctcGFuZWwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxRQUFRLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDbEQsT0FBTyxFQUFDLDhCQUE4QixFQUtyQyxNQUFNLDBCQUEwQixDQUFDOzs7Ozs7Ozs7Ozs7QUFRbEMsTUFBTSxPQUFPLHNCQUF1QixTQUFRLDhCQUE4QjtJQUN0RSxZQUFZLEdBQWtCLEVBQ2xCLFNBQTJCLEVBQzNCLGVBQW9DLEVBQ3BDLGdCQUF5QyxFQUM3QixlQUFnQztRQUNwRCxLQUFLLENBQUMsR0FBRyxFQUFFLFNBQVMsRUFBRSxlQUFlLEVBQUUsZ0JBQWdCLEVBQUUsZUFBZSxDQUFDLENBQUM7SUFDOUUsQ0FBQzt3R0FQUSxzQkFBc0I7NEZBQXRCLHNCQUFzQixnRkNkbkMsbzhHQTZEQTs7NEZEL0NhLHNCQUFzQjtrQkFMbEMsU0FBUzsrQkFDSSxtQkFBbUI7OzBCQVNoQixRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIE9wdGlvbmFsfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7QWJzdHJhY3RXb3JrZmxvd1BhbmVsQ29tcG9uZW50LFxuICAgICAgICBMb2dnZXJTZXJ2aWNlLFxuICAgICAgICBXb3JrZmxvd1ZpZXdTZXJ2aWNlLFxuICAgICAgICBQZXRyaU5ldFJlc291cmNlU2VydmljZSxcbiAgICAgICAgT3ZlcmZsb3dTZXJ2aWNlXG59IGZyb20gJ0BuZXRncmlmL2NvbXBvbmVudHMtY29yZSc7XG5pbXBvcnQge1RyYW5zbGF0ZVNlcnZpY2V9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ25jLXdvcmtmbG93LXBhbmVsJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vd29ya2Zsb3ctcGFuZWwuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL3dvcmtmbG93LXBhbmVsLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgV29ya2Zsb3dQYW5lbENvbXBvbmVudCBleHRlbmRzIEFic3RyYWN0V29ya2Zsb3dQYW5lbENvbXBvbmVudCB7XG4gICAgY29uc3RydWN0b3IobG9nOiBMb2dnZXJTZXJ2aWNlLFxuICAgICAgICAgICAgICAgIHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICAgICAgICAgICAgICB3b3JrZmxvd1NlcnZpY2U6IFdvcmtmbG93Vmlld1NlcnZpY2UsXG4gICAgICAgICAgICAgICAgcGV0cmlOZXRSZXNvdXJjZTogUGV0cmlOZXRSZXNvdXJjZVNlcnZpY2UsXG4gICAgICAgICAgICAgICAgQE9wdGlvbmFsKCkgb3ZlcmZsb3dTZXJ2aWNlOiBPdmVyZmxvd1NlcnZpY2UpIHtcbiAgICAgICAgc3VwZXIobG9nLCB0cmFuc2xhdGUsIHdvcmtmbG93U2VydmljZSwgcGV0cmlOZXRSZXNvdXJjZSwgb3ZlcmZsb3dTZXJ2aWNlKTtcbiAgICB9XG59XG4iLCI8bmMtYXBwLXBhbmVsIFtwYW5lbEhlYWRlcl09XCJoZWFkZXJcIiBbcGFuZWxDb250ZW50XT1cImNvbnRlbnRcIiAoZ2V0RXhwYW5zaW9uUGFuZWxSZWYpPVwic2V0UGFuZWxSZWYoJGV2ZW50KVwiIFtmaXJzdF09XCJmaXJzdFwiIFtsYXN0XT1cImxhc3RcIj5cbiAgICA8bmctdGVtcGxhdGUgI2hlYWRlcj5cbiAgICAgICAgPGRpdiBmeExheW91dEFsaWduPVwic3RhcnQgY2VudGVyXCIgZnhMYXlvdXQ9XCJyb3dcIiBmeEZsZXg9XCI5NVwiIChjbGljayk9XCJwcmV2ZW50U2VsZWN0aW9uQ2xpY2soJGV2ZW50KVwiPlxuICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgZmllbGQgb2YgZmVhdHVyZWRGaWVsZHNWYWx1ZXM7IGxldCBpID0gaW5kZXhcIiBmeExheW91dEFsaWduPVwic3RhcnQgY2VudGVyXCIgZnhGbGV4XG4gICAgICAgICAgICAgICAgIFtmeEhpZGUubHQteGxdPVwiaSA+PSA0ICYmIHJlc3BvbnNpdmVCb2R5XCJcbiAgICAgICAgICAgICAgICAgW2Z4SGlkZS5sdC1sZ109XCJpID49IDMgJiYgcmVzcG9uc2l2ZUJvZHlcIlxuICAgICAgICAgICAgICAgICBbZnhIaWRlLmx0LW1kXT1cImkgPj0gMiAmJiByZXNwb25zaXZlQm9keVwiXG4gICAgICAgICAgICAgICAgIFtmeEhpZGUubHQtc21dPVwiaSA+PSAxICYmIHJlc3BvbnNpdmVCb2R5XCI+XG4gICAgICAgICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwid29ya2Zsb3ctcGFuZWwtaWNvbiBwYW5lbC1wcmltYXJ5LWljb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIiEhZmllbGQuaWNvbiAmJiAhIWZpZWxkLnZhbHVlXCI+e3tmaWVsZC5pY29ufX08L21hdC1pY29uPlxuICAgICAgICAgICAgICAgIHt7ZmllbGQudmFsdWV9fVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGZ4RmxleD1cIjVcIj48L2Rpdj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICAgIDxuZy10ZW1wbGF0ZSAjY29udGVudD5cbiAgICAgICAgPGRpdiBjbGFzcz1cInBhbmVsLW1haW4tY29udGVudFwiIGZ4TGF5b3V0PVwiY29sdW1uXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwid29ya2Zsb3ctcGFuZWwtYm9keSBuZXRncmlmLWlucHV0XCIgZnhGbGV4PVwiMTAwXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBmeExheW91dD1cInJvd1wiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGZ4RmxleD1cIjUwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmMtZGF0YS1maWVsZC10ZW1wbGF0ZSAqbmdJZj1cIiFwYW5lbENvbnRlbnQubmV0SWRlbnRpZmllci5iZWhhdmlvci5oaWRkZW5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2RhdGFGaWVsZF09XCJwYW5lbENvbnRlbnQubmV0SWRlbnRpZmllclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uYy1kYXRhLWZpZWxkLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBmeEZsZXg9XCI1MFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5jLWRhdGEtZmllbGQtdGVtcGxhdGUgKm5nSWY9XCIhcGFuZWxDb250ZW50LnRpdGxlLmJlaGF2aW9yLmhpZGRlblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGF0YUZpZWxkXT1cInBhbmVsQ29udGVudC50aXRsZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uYy1kYXRhLWZpZWxkLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGZ4TGF5b3V0PVwicm93XCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgZnhGbGV4PVwiNTBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuYy1kYXRhLWZpZWxkLXRlbXBsYXRlICpuZ0lmPVwiIXBhbmVsQ29udGVudC52ZXJzaW9uLmJlaGF2aW9yLmhpZGRlblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGF0YUZpZWxkXT1cInBhbmVsQ29udGVudC52ZXJzaW9uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L25jLWRhdGEtZmllbGQtdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGZ4RmxleD1cIjUwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmMtZGF0YS1maWVsZC10ZW1wbGF0ZSAqbmdJZj1cIiFwYW5lbENvbnRlbnQuYXV0aG9yLmJlaGF2aW9yLmhpZGRlblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGF0YUZpZWxkXT1cInBhbmVsQ29udGVudC5hdXRob3JcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmMtZGF0YS1maWVsZC10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBmeExheW91dD1cInJvd1wiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGZ4RmxleD1cIjUwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmMtZGF0YS1maWVsZC10ZW1wbGF0ZSAqbmdJZj1cIiFwYW5lbENvbnRlbnQudXBsb2FkZWQuYmVoYXZpb3IuaGlkZGVuXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkYXRhRmllbGRdPVwicGFuZWxDb250ZW50LnVwbG9hZGVkXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L25jLWRhdGEtZmllbGQtdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8bWF0LWFjdGlvbi1yb3c+XG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtc3Ryb2tlZC1idXR0b24gY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJkb3dubG9hZE5ldEZpbGUoKVwiPnt7J3dvcmtmbG93LmRvd25sb2FkJyB8IHRyYW5zbGF0ZSB8IHVwcGVyY2FzZSB9fTwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJzaG93RGVsZXRlTWVudVwiIG1hdC1zdHJva2VkLWJ1dHRvbiBjb2xvcj1cIndhcm5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImRlbGV0ZVdvcmtmbG93KClcIj57eyd3b3JrZmxvdy5kZWxldGUnIHwgdHJhbnNsYXRlIHwgdXBwZXJjYXNlIH19PC9idXR0b24+XG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtYnV0dG9uIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwicGFuZWxSZWYuZXhwYW5kZWQgPSBmYWxzZVwiPnt7J3Rhc2tzLnZpZXcuY29sbGFwc2UnIHwgdHJhbnNsYXRlIHwgdXBwZXJjYXNlIH19PC9idXR0b24+XG4gICAgICAgICAgICA8L21hdC1hY3Rpb24tcm93PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L25nLXRlbXBsYXRlPlxuPC9uYy1hcHAtcGFuZWw+XG4iXX0=