@unifylib/ui-lib 1.1.5 → 1.1.6

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.
Files changed (24) hide show
  1. package/esm2022/lib/base-model/field-info.mjs +2 -1
  2. package/esm2022/lib/components/action-confirmation/action-confirmation.component.mjs +3 -3
  3. package/esm2022/lib/components/activity-report-form/activity-report-form.component.mjs +2 -2
  4. package/esm2022/lib/components/advanced-filter/filter-builder/filter-builder.component.mjs +23 -4
  5. package/esm2022/lib/components/base-form/base-form.component.mjs +2 -2
  6. package/esm2022/lib/components/base-form-canvas/base-form-canvas.component.mjs +3 -3
  7. package/esm2022/lib/components/base-input-dialog/base-input-dialog.component.mjs +2 -2
  8. package/esm2022/lib/components/base-table/base-table.component.mjs +48 -5
  9. package/esm2022/lib/components/editable-base-table/editable-base-table.component.mjs +2 -2
  10. package/esm2022/lib/components/paginator/paginator.component.mjs +49 -8
  11. package/esm2022/lib/components/rejection-comment/action-comment.component.mjs +88 -0
  12. package/esm2022/lib/components/report-form/report-form.component.mjs +2 -2
  13. package/esm2022/lib/components/title-bar/title-bar.component.mjs +6 -3
  14. package/fesm2022/iq-ui-lib.mjs +142 -34
  15. package/fesm2022/iq-ui-lib.mjs.map +1 -1
  16. package/fesm2022/unifylib-ui-lib.mjs +142 -34
  17. package/fesm2022/unifylib-ui-lib.mjs.map +1 -1
  18. package/lib/base-model/field-info.d.ts +1 -0
  19. package/lib/components/advanced-filter/filter-builder/filter-builder.component.d.ts +5 -1
  20. package/lib/components/base-table/base-table.component.d.ts +9 -0
  21. package/lib/components/paginator/paginator.component.d.ts +3 -0
  22. package/lib/components/rejection-comment/action-comment.component.d.ts +24 -0
  23. package/lib/components/title-bar/title-bar.component.d.ts +2 -1
  24. package/package.json +2 -4
@@ -1,14 +1,10 @@
1
1
  import { Component, Input, Output, EventEmitter } from '@angular/core';
2
2
  import { MatIconModule } from '@angular/material/icon';
3
3
  import { MatButtonModule } from '@angular/material/button';
4
- import { NgIf, NgForOf, NgClass } from '@angular/common';
5
- import { MatOption, MatSelect } from '@angular/material/select';
6
- import { TranslateModule } from "@ngx-translate/core";
4
+ import { NgIf, NgForOf } from '@angular/common';
7
5
  import * as i0 from "@angular/core";
8
6
  import * as i1 from "@angular/cdk/bidi";
9
7
  import * as i2 from "@angular/material/icon";
10
- import * as i3 from "@angular/material/button";
11
- import * as i4 from "@ngx-translate/core";
12
8
  export class PaginatorComponent {
13
9
  constructor(directionality) {
14
10
  this.directionality = directionality;
@@ -69,12 +65,57 @@ export class PaginatorComponent {
69
65
  this.pageSizeChange.emit(this.pageSize);
70
66
  this.pageChange.emit(this.currentPage);
71
67
  }
68
+ getPageNumbers() {
69
+ const TOTAL = this.totalPages;
70
+ const CURRENT = this.currentPage;
71
+ const PAGES = [];
72
+ if (TOTAL <= 7) {
73
+ for (let i = 1; i <= TOTAL; i++) {
74
+ PAGES.push(i);
75
+ }
76
+ }
77
+ else {
78
+ PAGES.push(1);
79
+ if (CURRENT <= 3) {
80
+ for (let i = 2; i <= 4; i++) {
81
+ PAGES.push(i);
82
+ }
83
+ PAGES.push('...');
84
+ PAGES.push(TOTAL - 1);
85
+ PAGES.push(TOTAL);
86
+ }
87
+ else if (CURRENT >= TOTAL - 2) {
88
+ PAGES.push(2);
89
+ PAGES.push('...');
90
+ for (let i = TOTAL - 3; i <= TOTAL; i++) {
91
+ PAGES.push(i);
92
+ }
93
+ }
94
+ else {
95
+ PAGES.push(2);
96
+ PAGES.push('...');
97
+ PAGES.push(CURRENT - 1);
98
+ PAGES.push(CURRENT);
99
+ PAGES.push(CURRENT + 1);
100
+ PAGES.push('...');
101
+ PAGES.push(TOTAL - 1);
102
+ PAGES.push(TOTAL);
103
+ }
104
+ }
105
+ return PAGES;
106
+ }
107
+ isEllipsis(page) {
108
+ return page === '...';
109
+ }
110
+ isActive(page) {
111
+ return typeof page === 'number' && page === this.currentPage;
112
+ }
72
113
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: PaginatorComponent, deps: [{ token: i1.Directionality }], target: i0.ɵɵFactoryTarget.Component }); }
73
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: PaginatorComponent, isStandalone: true, selector: "app-paginator", inputs: { currentPage: "currentPage", totalItems: "totalItems", pageSize: "pageSize", pageSizeOptions: "pageSizeOptions" }, outputs: { pageChange: "pageChange", pageSizeChange: "pageSizeChange" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"custom-paginator\" [dir]=\"currentDirection\">\r\n <span class=\"range-label\">\r\n {{ (currentPage - 1) * pageSize + 1 }} -\r\n {{ Math.min(currentPage * pageSize, totalItems) }}\r\n {{'PAGINATION.of' | translate}} {{ totalItems }}\r\n </span>\r\n\r\n <div class=\"right-section\">\r\n <div class=\"rows-per-page\">\r\n {{'PAGINATION.rowsPerPage' | translate}}:\r\n <mat-select [(value)]=\"pageSize\" (selectionChange)=\"onPageSizeChange($event.value)\">\r\n <mat-option *ngFor=\"let size of pageSizeOptions\" [value]=\"size\">{{ size }}</mat-option>\r\n </mat-select>\r\n </div>\r\n\r\n <div class=\"nav-buttons\">\r\n <button mat-icon-button (click)=\"previousPage()\" [disabled]=\"currentPage === 1\" id=\"paginator-prev-btn\">\r\n <mat-icon>{{ currentDirection === 'rtl' ? 'chevron_right' : 'chevron_left' }}</mat-icon>\r\n </button>\r\n <span><span style=\"color: var(--primary-color)\">{{ currentPage }}</span> / {{ totalPages }}</span>\r\n <button mat-icon-button\r\n (click)=\"nextPage()\"\r\n [disabled]=\"currentPage === totalPages\"\r\n [ngClass]=\"{'active-chevron': currentPage !== totalPages, 'disabled-chevron': currentPage === totalPages}\"\r\n id=\"paginator-next-btn\">\r\n <mat-icon>{{ currentDirection === 'rtl' ? 'chevron_left' : 'chevron_right' }}</mat-icon>\r\n </button>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".custom-paginator{display:flex;justify-content:space-between;align-items:center;padding:4px 8px;border:1px solid #f0f0f0;border-radius:6px;background:#fff;font-size:14px;color:#555!important;gap:16px;margin-top:4px}.custom-paginator .range-label{color:#6b7280;font-size:13px}.custom-paginator .right-section{display:flex;align-items:center;gap:16px}.custom-paginator .right-section .rows-per-page{display:flex;align-items:center;gap:4px}.custom-paginator .right-section .rows-per-page mat-select{width:60px;font-size:13px;color:#555}.custom-paginator .right-section .nav-buttons{display:flex;align-items:center;gap:8px}.custom-paginator .right-section .nav-buttons span{min-width:40px;text-align:center;font-size:13px}.custom-paginator button{border:1px solid #dbdbdb;border-radius:5px!important;width:28px;height:28px;padding:0!important;font-size:18px}.custom-paginator button.active-chevron mat-icon{color:var(--primary-color)}.custom-paginator button.disabled-chevron mat-icon{color:#555}\n"], dependencies: [{ kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i1.Dir, selector: "[dir]", inputs: ["dir"], outputs: ["dirChange"], exportAs: ["dir"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i3.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "directive", type: NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "component", type: MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }] }); }
114
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: PaginatorComponent, isStandalone: true, selector: "app-paginator", inputs: { currentPage: "currentPage", totalItems: "totalItems", pageSize: "pageSize", pageSizeOptions: "pageSizeOptions" }, outputs: { pageChange: "pageChange", pageSizeChange: "pageSizeChange" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"paginator-container\" [dir]=\"currentDirection\" [class.rtl]=\"currentDirection === 'rtl'\">\r\n <button\r\n class=\"paginator-button paginator-nav-button\"\r\n [class.disabled]=\"currentPage === 1\"\r\n [disabled]=\"currentPage === 1\"\r\n (click)=\"previousPage()\"\r\n type=\"button\">\r\n <mat-icon class=\"paginator-icon paginator-icon-left\">chevron_left</mat-icon>\r\n </button>\r\n\r\n <ng-container *ngFor=\"let page of getPageNumbers()\">\r\n <button\r\n *ngIf=\"!isEllipsis(page)\"\r\n class=\"paginator-button paginator-page-button\"\r\n [class.active]=\"isActive(page)\"\r\n [disabled]=\"isActive(page)\"\r\n (click)=\"goToPage(+page)\"\r\n type=\"button\">\r\n <span class=\"paginator-page-number\">{{ page }}</span>\r\n </button>\r\n <div *ngIf=\"isEllipsis(page)\" class=\"paginator-button paginator-ellipsis\">\r\n <span class=\"paginator-ellipsis-text\">...</span>\r\n </div>\r\n </ng-container>\r\n\r\n <button\r\n class=\"paginator-button paginator-nav-button\"\r\n [class.disabled]=\"currentPage === totalPages\"\r\n [disabled]=\"currentPage === totalPages\"\r\n (click)=\"nextPage()\"\r\n type=\"button\">\r\n <mat-icon class=\"paginator-icon paginator-icon-right\">chevron_right</mat-icon>\r\n </button>\r\n</div>\r\n", styles: [".paginator-container{display:flex;align-items:center;justify-content:flex-end;gap:8px;width:100%;margin-top:16px}.paginator-container.rtl .paginator-icon,.paginator-container[dir=rtl] .paginator-icon{transform:rotate(180deg)}.paginator-button{width:32px;height:32px;border-radius:8px;border:1px solid #f0eeee;background:#fff;display:flex;align-items:center;justify-content:center;cursor:pointer;padding:0;box-sizing:border-box;transition:all .2s;font-family:Lusail,sans-serif;font-size:14px;line-height:1.2;color:#888;font-weight:300}.paginator-button:hover:not(.disabled):not(.active){background:#fafafa}.paginator-button.disabled{cursor:not-allowed;opacity:.5}.paginator-page-button{font-weight:300}.paginator-page-button.active{border-color:#0d4261;background:#fff;color:#0d4261;font-weight:500;cursor:default}.paginator-page-number{font-family:Lusail,sans-serif;font-size:14px;line-height:1.2;font-weight:inherit;color:inherit;height:14px}.paginator-ellipsis{border:1px solid #f0eeee;background:#fff;cursor:default;color:#888}.paginator-ellipsis-text{font-family:Lusail,sans-serif;font-size:14px;line-height:1.2;font-weight:300;color:#888}.paginator-nav-button{border:1px solid #f0eeee;background:#fff}.paginator-icon{font-size:16px;width:16px;height:16px;color:#000;display:flex;align-items:center;justify-content:center}.paginator-button.disabled .paginator-icon{opacity:.5}\n"], dependencies: [{ kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i1.Dir, selector: "[dir]", inputs: ["dir"], outputs: ["dirChange"], exportAs: ["dir"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] }); }
74
115
  }
75
116
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: PaginatorComponent, decorators: [{
76
117
  type: Component,
77
- args: [{ selector: 'app-paginator', standalone: true, imports: [MatIconModule, MatButtonModule, NgIf, NgForOf, MatSelect, MatOption, NgClass, TranslateModule], template: "<div class=\"custom-paginator\" [dir]=\"currentDirection\">\r\n <span class=\"range-label\">\r\n {{ (currentPage - 1) * pageSize + 1 }} -\r\n {{ Math.min(currentPage * pageSize, totalItems) }}\r\n {{'PAGINATION.of' | translate}} {{ totalItems }}\r\n </span>\r\n\r\n <div class=\"right-section\">\r\n <div class=\"rows-per-page\">\r\n {{'PAGINATION.rowsPerPage' | translate}}:\r\n <mat-select [(value)]=\"pageSize\" (selectionChange)=\"onPageSizeChange($event.value)\">\r\n <mat-option *ngFor=\"let size of pageSizeOptions\" [value]=\"size\">{{ size }}</mat-option>\r\n </mat-select>\r\n </div>\r\n\r\n <div class=\"nav-buttons\">\r\n <button mat-icon-button (click)=\"previousPage()\" [disabled]=\"currentPage === 1\" id=\"paginator-prev-btn\">\r\n <mat-icon>{{ currentDirection === 'rtl' ? 'chevron_right' : 'chevron_left' }}</mat-icon>\r\n </button>\r\n <span><span style=\"color: var(--primary-color)\">{{ currentPage }}</span> / {{ totalPages }}</span>\r\n <button mat-icon-button\r\n (click)=\"nextPage()\"\r\n [disabled]=\"currentPage === totalPages\"\r\n [ngClass]=\"{'active-chevron': currentPage !== totalPages, 'disabled-chevron': currentPage === totalPages}\"\r\n id=\"paginator-next-btn\">\r\n <mat-icon>{{ currentDirection === 'rtl' ? 'chevron_left' : 'chevron_right' }}</mat-icon>\r\n </button>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".custom-paginator{display:flex;justify-content:space-between;align-items:center;padding:4px 8px;border:1px solid #f0f0f0;border-radius:6px;background:#fff;font-size:14px;color:#555!important;gap:16px;margin-top:4px}.custom-paginator .range-label{color:#6b7280;font-size:13px}.custom-paginator .right-section{display:flex;align-items:center;gap:16px}.custom-paginator .right-section .rows-per-page{display:flex;align-items:center;gap:4px}.custom-paginator .right-section .rows-per-page mat-select{width:60px;font-size:13px;color:#555}.custom-paginator .right-section .nav-buttons{display:flex;align-items:center;gap:8px}.custom-paginator .right-section .nav-buttons span{min-width:40px;text-align:center;font-size:13px}.custom-paginator button{border:1px solid #dbdbdb;border-radius:5px!important;width:28px;height:28px;padding:0!important;font-size:18px}.custom-paginator button.active-chevron mat-icon{color:var(--primary-color)}.custom-paginator button.disabled-chevron mat-icon{color:#555}\n"] }]
118
+ args: [{ selector: 'app-paginator', standalone: true, imports: [MatIconModule, MatButtonModule, NgIf, NgForOf], template: "<div class=\"paginator-container\" [dir]=\"currentDirection\" [class.rtl]=\"currentDirection === 'rtl'\">\r\n <button\r\n class=\"paginator-button paginator-nav-button\"\r\n [class.disabled]=\"currentPage === 1\"\r\n [disabled]=\"currentPage === 1\"\r\n (click)=\"previousPage()\"\r\n type=\"button\">\r\n <mat-icon class=\"paginator-icon paginator-icon-left\">chevron_left</mat-icon>\r\n </button>\r\n\r\n <ng-container *ngFor=\"let page of getPageNumbers()\">\r\n <button\r\n *ngIf=\"!isEllipsis(page)\"\r\n class=\"paginator-button paginator-page-button\"\r\n [class.active]=\"isActive(page)\"\r\n [disabled]=\"isActive(page)\"\r\n (click)=\"goToPage(+page)\"\r\n type=\"button\">\r\n <span class=\"paginator-page-number\">{{ page }}</span>\r\n </button>\r\n <div *ngIf=\"isEllipsis(page)\" class=\"paginator-button paginator-ellipsis\">\r\n <span class=\"paginator-ellipsis-text\">...</span>\r\n </div>\r\n </ng-container>\r\n\r\n <button\r\n class=\"paginator-button paginator-nav-button\"\r\n [class.disabled]=\"currentPage === totalPages\"\r\n [disabled]=\"currentPage === totalPages\"\r\n (click)=\"nextPage()\"\r\n type=\"button\">\r\n <mat-icon class=\"paginator-icon paginator-icon-right\">chevron_right</mat-icon>\r\n </button>\r\n</div>\r\n", styles: [".paginator-container{display:flex;align-items:center;justify-content:flex-end;gap:8px;width:100%;margin-top:16px}.paginator-container.rtl .paginator-icon,.paginator-container[dir=rtl] .paginator-icon{transform:rotate(180deg)}.paginator-button{width:32px;height:32px;border-radius:8px;border:1px solid #f0eeee;background:#fff;display:flex;align-items:center;justify-content:center;cursor:pointer;padding:0;box-sizing:border-box;transition:all .2s;font-family:Lusail,sans-serif;font-size:14px;line-height:1.2;color:#888;font-weight:300}.paginator-button:hover:not(.disabled):not(.active){background:#fafafa}.paginator-button.disabled{cursor:not-allowed;opacity:.5}.paginator-page-button{font-weight:300}.paginator-page-button.active{border-color:#0d4261;background:#fff;color:#0d4261;font-weight:500;cursor:default}.paginator-page-number{font-family:Lusail,sans-serif;font-size:14px;line-height:1.2;font-weight:inherit;color:inherit;height:14px}.paginator-ellipsis{border:1px solid #f0eeee;background:#fff;cursor:default;color:#888}.paginator-ellipsis-text{font-family:Lusail,sans-serif;font-size:14px;line-height:1.2;font-weight:300;color:#888}.paginator-nav-button{border:1px solid #f0eeee;background:#fff}.paginator-icon{font-size:16px;width:16px;height:16px;color:#000;display:flex;align-items:center;justify-content:center}.paginator-button.disabled .paginator-icon{opacity:.5}\n"] }]
78
119
  }], ctorParameters: () => [{ type: i1.Directionality }], propDecorators: { currentPage: [{
79
120
  type: Input
80
121
  }], totalItems: [{
@@ -88,4 +129,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
88
129
  }], pageSizeChange: [{
89
130
  type: Output
90
131
  }] } });
91
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnaW5hdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2ludm9pY2VxL3VpLWxpYi9zcmMvbGliL2NvbXBvbmVudHMvcGFnaW5hdG9yL3BhZ2luYXRvci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pbnZvaWNlcS91aS1saWIvc3JjL2xpYi9jb21wb25lbnRzL3BhZ2luYXRvci9wYWdpbmF0b3IuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBcUIsTUFBTSxlQUFlLENBQUM7QUFDMUYsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUV2RCxPQUFPLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ2hFLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQzs7Ozs7O0FBU3BELE1BQU0sT0FBTyxrQkFBa0I7SUFXN0IsWUFBb0IsY0FBOEI7UUFBOUIsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBVnpDLGdCQUFXLEdBQUcsQ0FBQyxDQUFDO1FBQ2hCLGVBQVUsR0FBRyxDQUFDLENBQUM7UUFDZixhQUFRLEdBQUcsRUFBRSxDQUFDO1FBQ2Qsb0JBQWUsR0FBYSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRTNDLGVBQVUsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBQ3hDLG1CQUFjLEdBQUcsSUFBSSxZQUFZLEVBQVUs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QzsrR0FwRVUsa0JBQWtCO21HQUFsQixrQkFBa0IsbVNDZi9CLDQ4Q0E4QkEsMmhDRGpCWSxhQUFhLHVTQUFFLGVBQWUsNElBQVEsT0FBTyxtSEFBRSxTQUFTLHdlQUFFLFNBQVMscUpBQUUsT0FBTyxtRkFBRSxlQUFlOzs0RkFFNUYsa0JBQWtCO2tCQVA5QixTQUFTOytCQUNFLGVBQWUsY0FHYixJQUFJLFdBQ1AsQ0FBQyxhQUFhLEVBQUUsZUFBZSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsZUFBZSxDQUFDO21GQUcvRixXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQUVJLFVBQVU7c0JBQW5CLE1BQU07Z0JBQ0csY0FBYztzQkFBdkIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBPbkluaXQsIE9uQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XHJcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XHJcbmltcG9ydCB7TmdJZiwgTmdGb3JPZiwgTmdDbGFzc30gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgRGlyZWN0aW9uYWxpdHkgfSBmcm9tICdAYW5ndWxhci9jZGsvYmlkaSc7XHJcbmltcG9ydCB7IE1hdE9wdGlvbiwgTWF0U2VsZWN0IH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc2VsZWN0JztcclxuaW1wb3J0IHtUcmFuc2xhdGVNb2R1bGV9IGZyb20gXCJAbmd4LXRyYW5zbGF0ZS9jb3JlXCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC1wYWdpbmF0b3InLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9wYWdpbmF0b3IuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3BhZ2luYXRvci5jb21wb25lbnQuY3NzJ10sXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbTWF0SWNvbk1vZHVsZSwgTWF0QnV0dG9uTW9kdWxlLCBOZ0lmLCBOZ0Zvck9mLCBNYXRTZWxlY3QsIE1hdE9wdGlvbiwgTmdDbGFzcywgVHJhbnNsYXRlTW9kdWxlXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIFBhZ2luYXRvckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcclxuICBASW5wdXQoKSBjdXJyZW50UGFnZSA9IDE7XHJcbiAgQElucHV0KCkgdG90YWxJdGVtcyA9IDA7XHJcbiAgQElucHV0KCkgcGFnZVNpemUgPSAxMDtcclxuICBASW5wdXQoKSBwYWdlU2l6ZU9wdGlvbnM6IG51bWJlcltdID0gWzUsIDEwLCAyNSwgNTBdO1xyXG5cclxuICBAT3V0cHV0KCkgcGFnZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xyXG4gIEBPdXRwdXQoKSBwYWdlU2l6ZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xyXG5cclxuICBjdXJyZW50RGlyZWN0aW9uOiAnbHRyJyB8ICdydGwnID0gJ2x0cic7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZGlyZWN0aW9uYWxpdHk6IERpcmVjdGlvbmFsaXR5KSB7fVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuY3VycmVudERpcmVjdGlvbiA9IHRoaXMuZGlyZWN0aW9uYWxpdHkudmFsdWU7XHJcbiAgICB0aGlzLmRpcmVjdGlvbmFsaXR5LmNoYW5nZT8uc3Vic2NyaWJlKCh2YWx1ZSkgPT4ge1xyXG4gICAgICB0aGlzLmN1cnJlbnREaXJlY3Rpb24gPSB2YWx1ZTtcclxuICAgIH0pO1xyXG4gICAgaWYgKCF0aGlzLnBhZ2VTaXplT3B0aW9ucy5pbmNsdWRlcyh0aGlzLnBhZ2VTaXplKSkge1xyXG4gICAgICBQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpID0+IHtcclxuICAgICAgICB0aGlzLnBhZ2VTaXplID0gdGhpcy5wYWdlU2l6ZU9wdGlvbnNbMV07XHJcbiAgICAgICAgdGhpcy5wYWdlU2l6ZUNoYW5nZS5lbWl0KHRoaXMucGFnZVNpemUpO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKCkge1xyXG4gICAgaWYgKHRoaXMuY3VycmVudFBhZ2UgPiB0aGlzLnRvdGFsUGFnZXMpIHtcclxuICAgICAgdGhpcy5jdXJyZW50UGFnZSA9IHRoaXMudG90YWxQYWdlcyB8fCAxO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0IHRvdGFsUGFnZXMoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiBNYXRoLmNlaWwodGhpcy50b3RhbEl0ZW1zIC8gdGhpcy5wYWdlU2l6ZSk7XHJcbiAgfVxyXG5cclxuICBnZXQgc3RhcnRJbmRleCgpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMudG90YWxJdGVtcyA9PT0gMCA/IDAgOiAodGhpcy5jdXJyZW50UGFnZSAtIDEpICogdGhpcy5wYWdlU2l6ZSArIDE7XHJcbiAgfVxyXG5cclxuICBnZXQgZW5kSW5kZXgoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiBNYXRoLm1pbih0aGlzLmN1cnJlbnRQYWdlICogdGhpcy5wYWdlU2l6ZSwgdGhpcy50b3RhbEl0ZW1zKTtcclxuICB9XHJcblxyXG4gIGdvVG9QYWdlKHBhZ2U6IG51bWJlcikge1xyXG4gICAgaWYgKHBhZ2UgPj0gMSAmJiBwYWdlIDw9IHRoaXMudG90YWxQYWdlcykge1xyXG4gICAgICB0aGlzLmN1cnJlbnRQYWdlID0gcGFnZTtcclxuICAgICAgdGhpcy5wYWdlQ2hhbmdlLmVtaXQodGhpcy5jdXJyZW50UGFnZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZXh0UGFnZSgpIHtcclxuICAgIGlmICh0aGlzLmN1cnJlbnRQYWdlIDwgdGhpcy50b3RhbFBhZ2VzKSB7XHJcbiAgICAgIHRoaXMuZ29Ub1BhZ2UodGhpcy5jdXJyZW50UGFnZSArIDEpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJldmlvdXNQYWdlKCkge1xyXG4gICAgaWYgKHRoaXMuY3VycmVudFBhZ2UgPiAxKSB7XHJcbiAgICAgIHRoaXMuZ29Ub1BhZ2UodGhpcy5jdXJyZW50UGFnZSAtIDEpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25QYWdlU2l6ZUNoYW5nZShzaXplOiBudW1iZXIpIHtcclxuICAgIHRoaXMucGFnZVNpemUgPSBzaXplO1xyXG4gICAgdGhpcy5jdXJyZW50UGFnZSA9IDE7XHJcbiAgICB0aGlzLnBhZ2VTaXplQ2hhbmdlLmVtaXQodGhpcy5wYWdlU2l6ZSk7XHJcbiAgICB0aGlzLnBhZ2VDaGFuZ2UuZW1pdCh0aGlzLmN1cnJlbnRQYWdlKTtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCByZWFkb25seSBNYXRoID0gTWF0aDtcclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwiY3VzdG9tLXBhZ2luYXRvclwiIFtkaXJdPVwiY3VycmVudERpcmVjdGlvblwiPlxyXG4gIDxzcGFuIGNsYXNzPVwicmFuZ2UtbGFiZWxcIj5cclxuICAgIHt7IChjdXJyZW50UGFnZSAtIDEpICogcGFnZVNpemUgKyAxIH19IC1cclxuICAgIHt7IE1hdGgubWluKGN1cnJlbnRQYWdlICogcGFnZVNpemUsIHRvdGFsSXRlbXMpIH19XHJcbiAgICB7eydQQUdJTkFUSU9OLm9mJyB8IHRyYW5zbGF0ZX19IHt7IHRvdGFsSXRlbXMgfX1cclxuICA8L3NwYW4+XHJcblxyXG4gIDxkaXYgY2xhc3M9XCJyaWdodC1zZWN0aW9uXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwicm93cy1wZXItcGFnZVwiPlxyXG4gICAgICB7eydQQUdJTkFUSU9OLnJvd3NQZXJQYWdlJyB8IHRyYW5zbGF0ZX19OlxyXG4gICAgICA8bWF0LXNlbGVjdCBbKHZhbHVlKV09XCJwYWdlU2l6ZVwiIChzZWxlY3Rpb25DaGFuZ2UpPVwib25QYWdlU2l6ZUNoYW5nZSgkZXZlbnQudmFsdWUpXCI+XHJcbiAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IHNpemUgb2YgcGFnZVNpemVPcHRpb25zXCIgW3ZhbHVlXT1cInNpemVcIj57eyBzaXplIH19PC9tYXQtb3B0aW9uPlxyXG4gICAgICA8L21hdC1zZWxlY3Q+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwibmF2LWJ1dHRvbnNcIj5cclxuICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cInByZXZpb3VzUGFnZSgpXCIgW2Rpc2FibGVkXT1cImN1cnJlbnRQYWdlID09PSAxXCIgaWQ9XCJwYWdpbmF0b3ItcHJldi1idG5cIj5cclxuICAgICAgICA8bWF0LWljb24+e3sgY3VycmVudERpcmVjdGlvbiA9PT0gJ3J0bCcgPyAnY2hldnJvbl9yaWdodCcgOiAnY2hldnJvbl9sZWZ0JyB9fTwvbWF0LWljb24+XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8c3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiB2YXIoLS1wcmltYXJ5LWNvbG9yKVwiPnt7IGN1cnJlbnRQYWdlIH19PC9zcGFuPiAvIHt7IHRvdGFsUGFnZXMgfX08L3NwYW4+XHJcbiAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cIm5leHRQYWdlKClcIlxyXG4gICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJjdXJyZW50UGFnZSA9PT0gdG90YWxQYWdlc1wiXHJcbiAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieydhY3RpdmUtY2hldnJvbic6IGN1cnJlbnRQYWdlICE9PSB0b3RhbFBhZ2VzLCAnZGlzYWJsZWQtY2hldnJvbic6IGN1cnJlbnRQYWdlID09PSB0b3RhbFBhZ2VzfVwiXHJcbiAgICAgICAgICAgICAgaWQ9XCJwYWdpbmF0b3ItbmV4dC1idG5cIj5cclxuICAgICAgICA8bWF0LWljb24+e3sgY3VycmVudERpcmVjdGlvbiA9PT0gJ3J0bCcgPyAnY2hldnJvbl9sZWZ0JyA6ICdjaGV2cm9uX3JpZ2h0JyB9fTwvbWF0LWljb24+XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG4iXX0=
132
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnaW5hdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2ludm9pY2VxL3VpLWxpYi9zcmMvbGliL2NvbXBvbmVudHMvcGFnaW5hdG9yL3BhZ2luYXRvci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pbnZvaWNlcS91aS1saWIvc3JjL2xpYi9jb21wb25lbnRzL3BhZ2luYXRvci9wYWdpbmF0b3IuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBcUIsTUFBTSxlQUFlLENBQUM7QUFDMUYsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxNQUFNLGlCQUFpQixDQUFDOzs7O0FBVWhELE1BQU0sT0FBTyxrQkFBa0I7SUFXN0IsWUFBb0IsY0FBOEI7UUFBOUIsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBVnpDLGdCQUFXLEdBQUcsQ0FBQyxDQUFDO1FBQ2hCLGVBQVUsR0FBRyxDQUFDLENBQUM7UUFDZixhQUFRLEdBQUcsRUFBRSxDQUFDO1FBQ2Qsb0JBQWUsR0FBYSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRTNDLGVBQVUsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBQ3hDLG1CQUFjLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUV0RCxxQkFBZ0IsR0FBa0IsS0FBSyxDQUFDO1FBNkdyQixTQUFJLEdBQUcsSUFBSSxDQUFDO0lBM0dzQixDQUFDO0lBRXRELFFBQVE7UUFDTixJQUFJLENBQUMsZ0JBQWdCLEdB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IEV2ZW50RW1pdHRlciwgT25Jbml0LCBPbkNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xyXG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xyXG5pbXBvcnQgeyBOZ0lmLCBOZ0Zvck9mIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgRGlyZWN0aW9uYWxpdHkgfSBmcm9tICdAYW5ndWxhci9jZGsvYmlkaSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC1wYWdpbmF0b3InLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9wYWdpbmF0b3IuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3BhZ2luYXRvci5jb21wb25lbnQuY3NzJ10sXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbTWF0SWNvbk1vZHVsZSwgTWF0QnV0dG9uTW9kdWxlLCBOZ0lmLCBOZ0Zvck9mXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIFBhZ2luYXRvckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcclxuICBASW5wdXQoKSBjdXJyZW50UGFnZSA9IDE7XHJcbiAgQElucHV0KCkgdG90YWxJdGVtcyA9IDA7XHJcbiAgQElucHV0KCkgcGFnZVNpemUgPSAxMDtcclxuICBASW5wdXQoKSBwYWdlU2l6ZU9wdGlvbnM6IG51bWJlcltdID0gWzUsIDEwLCAyNSwgNTBdO1xyXG5cclxuICBAT3V0cHV0KCkgcGFnZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xyXG4gIEBPdXRwdXQoKSBwYWdlU2l6ZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xyXG5cclxuICBjdXJyZW50RGlyZWN0aW9uOiAnbHRyJyB8ICdydGwnID0gJ2x0cic7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZGlyZWN0aW9uYWxpdHk6IERpcmVjdGlvbmFsaXR5KSB7fVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuY3VycmVudERpcmVjdGlvbiA9IHRoaXMuZGlyZWN0aW9uYWxpdHkudmFsdWU7XHJcbiAgICB0aGlzLmRpcmVjdGlvbmFsaXR5LmNoYW5nZT8uc3Vic2NyaWJlKCh2YWx1ZSkgPT4ge1xyXG4gICAgICB0aGlzLmN1cnJlbnREaXJlY3Rpb24gPSB2YWx1ZTtcclxuICAgIH0pO1xyXG4gICAgaWYgKCF0aGlzLnBhZ2VTaXplT3B0aW9ucy5pbmNsdWRlcyh0aGlzLnBhZ2VTaXplKSkge1xyXG4gICAgICBQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpID0+IHtcclxuICAgICAgICB0aGlzLnBhZ2VTaXplID0gdGhpcy5wYWdlU2l6ZU9wdGlvbnNbMV07XHJcbiAgICAgICAgdGhpcy5wYWdlU2l6ZUNoYW5nZS5lbWl0KHRoaXMucGFnZVNpemUpO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKCkge1xyXG4gICAgaWYgKHRoaXMuY3VycmVudFBhZ2UgPiB0aGlzLnRvdGFsUGFnZXMpIHtcclxuICAgICAgdGhpcy5jdXJyZW50UGFnZSA9IHRoaXMudG90YWxQYWdlcyB8fCAxO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0IHRvdGFsUGFnZXMoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiBNYXRoLmNlaWwodGhpcy50b3RhbEl0ZW1zIC8gdGhpcy5wYWdlU2l6ZSk7XHJcbiAgfVxyXG5cclxuICBnZXQgc3RhcnRJbmRleCgpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMudG90YWxJdGVtcyA9PT0gMCA/IDAgOiAodGhpcy5jdXJyZW50UGFnZSAtIDEpICogdGhpcy5wYWdlU2l6ZSArIDE7XHJcbiAgfVxyXG5cclxuICBnZXQgZW5kSW5kZXgoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiBNYXRoLm1pbih0aGlzLmN1cnJlbnRQYWdlICogdGhpcy5wYWdlU2l6ZSwgdGhpcy50b3RhbEl0ZW1zKTtcclxuICB9XHJcblxyXG4gIGdvVG9QYWdlKHBhZ2U6IG51bWJlcikge1xyXG4gICAgaWYgKHBhZ2UgPj0gMSAmJiBwYWdlIDw9IHRoaXMudG90YWxQYWdlcykge1xyXG4gICAgICB0aGlzLmN1cnJlbnRQYWdlID0gcGFnZTtcclxuICAgICAgdGhpcy5wYWdlQ2hhbmdlLmVtaXQodGhpcy5jdXJyZW50UGFnZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZXh0UGFnZSgpIHtcclxuICAgIGlmICh0aGlzLmN1cnJlbnRQYWdlIDwgdGhpcy50b3RhbFBhZ2VzKSB7XHJcbiAgICAgIHRoaXMuZ29Ub1BhZ2UodGhpcy5jdXJyZW50UGFnZSArIDEpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJldmlvdXNQYWdlKCkge1xyXG4gICAgaWYgKHRoaXMuY3VycmVudFBhZ2UgPiAxKSB7XHJcbiAgICAgIHRoaXMuZ29Ub1BhZ2UodGhpcy5jdXJyZW50UGFnZSAtIDEpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25QYWdlU2l6ZUNoYW5nZShzaXplOiBudW1iZXIpIHtcclxuICAgIHRoaXMucGFnZVNpemUgPSBzaXplO1xyXG4gICAgdGhpcy5jdXJyZW50UGFnZSA9IDE7XHJcbiAgICB0aGlzLnBhZ2VTaXplQ2hhbmdlLmVtaXQodGhpcy5wYWdlU2l6ZSk7XHJcbiAgICB0aGlzLnBhZ2VDaGFuZ2UuZW1pdCh0aGlzLmN1cnJlbnRQYWdlKTtcclxuICB9XHJcblxyXG4gIGdldFBhZ2VOdW1iZXJzKCk6IChudW1iZXIgfCBzdHJpbmcpW10ge1xyXG4gICAgY29uc3QgVE9UQUwgPSB0aGlzLnRvdGFsUGFnZXM7XHJcbiAgICBjb25zdCBDVVJSRU5UID0gdGhpcy5jdXJyZW50UGFnZTtcclxuICAgIGNvbnN0IFBBR0VTOiAobnVtYmVyIHwgc3RyaW5nKVtdID0gW107XHJcblxyXG4gICAgaWYgKFRPVEFMIDw9IDcpIHtcclxuICAgICAgZm9yIChsZXQgaSA9IDE7IGkgPD0gVE9UQUw7IGkrKykge1xyXG4gICAgICAgIFBBR0VTLnB1c2goaSk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIFBBR0VTLnB1c2goMSk7XHJcblxyXG4gICAgICBpZiAoQ1VSUkVOVCA8PSAzKSB7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDI7IGkgPD0gNDsgaSsrKSB7XHJcbiAgICAgICAgICBQQUdFUy5wdXNoKGkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBQQUdFUy5wdXNoKCcuLi4nKTtcclxuICAgICAgICBQQUdFUy5wdXNoKFRPVEFMIC0gMSk7XHJcbiAgICAgICAgUEFHRVMucHVzaChUT1RBTCk7XHJcbiAgICAgIH0gZWxzZSBpZiAoQ1VSUkVOVCA+PSBUT1RBTCAtIDIpIHtcclxuICAgICAgICBQQUdFUy5wdXNoKDIpO1xyXG4gICAgICAgIFBBR0VTLnB1c2goJy4uLicpO1xyXG4gICAgICAgIGZvciAobGV0IGkgPSBUT1RBTCAtIDM7IGkgPD0gVE9UQUw7IGkrKykge1xyXG4gICAgICAgICAgUEFHRVMucHVzaChpKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgUEFHRVMucHVzaCgyKTtcclxuICAgICAgICBQQUdFUy5wdXNoKCcuLi4nKTtcclxuICAgICAgICBQQUdFUy5wdXNoKENVUlJFTlQgLSAxKTtcclxuICAgICAgICBQQUdFUy5wdXNoKENVUlJFTlQpO1xyXG4gICAgICAgIFBBR0VTLnB1c2goQ1VSUkVOVCArIDEpO1xyXG4gICAgICAgIFBBR0VTLnB1c2goJy4uLicpO1xyXG4gICAgICAgIFBBR0VTLnB1c2goVE9UQUwgLSAxKTtcclxuICAgICAgICBQQUdFUy5wdXNoKFRPVEFMKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBQQUdFUztcclxuICB9XHJcblxyXG4gIGlzRWxsaXBzaXMocGFnZTogbnVtYmVyIHwgc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gcGFnZSA9PT0gJy4uLic7XHJcbiAgfVxyXG5cclxuICBpc0FjdGl2ZShwYWdlOiBudW1iZXIgfCBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0eXBlb2YgcGFnZSA9PT0gJ251bWJlcicgJiYgcGFnZSA9PT0gdGhpcy5jdXJyZW50UGFnZTtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCByZWFkb25seSBNYXRoID0gTWF0aDtcclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwicGFnaW5hdG9yLWNvbnRhaW5lclwiIFtkaXJdPVwiY3VycmVudERpcmVjdGlvblwiIFtjbGFzcy5ydGxdPVwiY3VycmVudERpcmVjdGlvbiA9PT0gJ3J0bCdcIj5cclxuICA8YnV0dG9uXHJcbiAgICBjbGFzcz1cInBhZ2luYXRvci1idXR0b24gcGFnaW5hdG9yLW5hdi1idXR0b25cIlxyXG4gICAgW2NsYXNzLmRpc2FibGVkXT1cImN1cnJlbnRQYWdlID09PSAxXCJcclxuICAgIFtkaXNhYmxlZF09XCJjdXJyZW50UGFnZSA9PT0gMVwiXHJcbiAgICAoY2xpY2spPVwicHJldmlvdXNQYWdlKClcIlxyXG4gICAgdHlwZT1cImJ1dHRvblwiPlxyXG4gICAgPG1hdC1pY29uIGNsYXNzPVwicGFnaW5hdG9yLWljb24gcGFnaW5hdG9yLWljb24tbGVmdFwiPmNoZXZyb25fbGVmdDwvbWF0LWljb24+XHJcbiAgPC9idXR0b24+XHJcblxyXG4gIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHBhZ2Ugb2YgZ2V0UGFnZU51bWJlcnMoKVwiPlxyXG4gICAgPGJ1dHRvblxyXG4gICAgICAqbmdJZj1cIiFpc0VsbGlwc2lzKHBhZ2UpXCJcclxuICAgICAgY2xhc3M9XCJwYWdpbmF0b3ItYnV0dG9uIHBhZ2luYXRvci1wYWdlLWJ1dHRvblwiXHJcbiAgICAgIFtjbGFzcy5hY3RpdmVdPVwiaXNBY3RpdmUocGFnZSlcIlxyXG4gICAgICBbZGlzYWJsZWRdPVwiaXNBY3RpdmUocGFnZSlcIlxyXG4gICAgICAoY2xpY2spPVwiZ29Ub1BhZ2UoK3BhZ2UpXCJcclxuICAgICAgdHlwZT1cImJ1dHRvblwiPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cInBhZ2luYXRvci1wYWdlLW51bWJlclwiPnt7IHBhZ2UgfX08L3NwYW4+XHJcbiAgICA8L2J1dHRvbj5cclxuICAgIDxkaXYgKm5nSWY9XCJpc0VsbGlwc2lzKHBhZ2UpXCIgY2xhc3M9XCJwYWdpbmF0b3ItYnV0dG9uIHBhZ2luYXRvci1lbGxpcHNpc1wiPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cInBhZ2luYXRvci1lbGxpcHNpcy10ZXh0XCI+Li4uPC9zcGFuPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gIDxidXR0b25cclxuICAgIGNsYXNzPVwicGFnaW5hdG9yLWJ1dHRvbiBwYWdpbmF0b3ItbmF2LWJ1dHRvblwiXHJcbiAgICBbY2xhc3MuZGlzYWJsZWRdPVwiY3VycmVudFBhZ2UgPT09IHRvdGFsUGFnZXNcIlxyXG4gICAgW2Rpc2FibGVkXT1cImN1cnJlbnRQYWdlID09PSB0b3RhbFBhZ2VzXCJcclxuICAgIChjbGljayk9XCJuZXh0UGFnZSgpXCJcclxuICAgIHR5cGU9XCJidXR0b25cIj5cclxuICAgIDxtYXQtaWNvbiBjbGFzcz1cInBhZ2luYXRvci1pY29uIHBhZ2luYXRvci1pY29uLXJpZ2h0XCI+Y2hldnJvbl9yaWdodDwvbWF0LWljb24+XHJcbiAgPC9idXR0b24+XHJcbjwvZGl2PlxyXG4iXX0=
@@ -0,0 +1,88 @@
1
+ import { Component, HostListener, Inject } from '@angular/core';
2
+ import { MAT_DIALOG_DATA, MatDialogActions, MatDialogContent, MatDialogTitle } from "@angular/material/dialog";
3
+ import { MatFormField } from "@angular/material/form-field";
4
+ import { FormsModule } from "@angular/forms";
5
+ import { CdkTextareaAutosize } from "@angular/cdk/text-field";
6
+ import { TranslateModule } from "@ngx-translate/core";
7
+ import { MatCheckbox } from "@angular/material/checkbox";
8
+ import { MatButton } from "@angular/material/button";
9
+ import { MatInput } from "@angular/material/input";
10
+ import { NgIf } from "@angular/common";
11
+ import { MatIcon } from "@angular/material/icon";
12
+ import * as i0 from "@angular/core";
13
+ import * as i1 from "@angular/material/dialog";
14
+ import * as i2 from "@angular/forms";
15
+ import * as i3 from "@ngx-translate/core";
16
+ export class ActionCommentComponent {
17
+ constructor(dialogRef, data) {
18
+ this.dialogRef = dialogRef;
19
+ this.data = data;
20
+ this.actionLabel = '';
21
+ this.isTermination = false;
22
+ this.comment = '';
23
+ this.external = false;
24
+ this.signingRequired = false;
25
+ this.tokenReference = "";
26
+ this.otp = "";
27
+ this.isSubmitted = false;
28
+ this.showExternalBox = true;
29
+ this.warningMsg = false;
30
+ dialogRef.disableClose = true;
31
+ }
32
+ onKeyUp() {
33
+ this.dialogRef.close();
34
+ }
35
+ ngOnInit() {
36
+ this.actionLabel = this.data.label;
37
+ this.isTermination = this.data.isTermination;
38
+ this.signingRequired = this.data.signingRequired;
39
+ this.tokenReference = this.data.tokenReference;
40
+ this.warningMsg = this.data.warningMsg || false;
41
+ }
42
+ commentAndClose() {
43
+ this.isSubmitted = true;
44
+ if (this.signingRequired && !this.otp)
45
+ return false; //validation
46
+ let obj = {
47
+ comment: this.comment,
48
+ shareExternal: this.external
49
+ };
50
+ //
51
+ if (this.signingRequired)
52
+ obj["token"] = this.otp;
53
+ if (this.signingRequired)
54
+ obj["tokenReference"] = this.tokenReference;
55
+ //
56
+ this.dialogRef.close(obj);
57
+ return "";
58
+ }
59
+ cancel() {
60
+ this.dialogRef.close();
61
+ }
62
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ActionCommentComponent, deps: [{ token: i1.MatDialogRef }, { token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component }); }
63
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ActionCommentComponent, isStandalone: true, selector: "app-action-comment", host: { listeners: { "window:keyup.esc": "onKeyUp()" } }, ngImport: i0, template: "<div *ngIf=\"signingRequired\">\r\n <p mat-dialog-title align=\"start\" class=\"invoice-note-text invoice-section m-0\">\r\n {{ 'comment.OTP' | translate }}\r\n <span *ngIf=\"isTermination\" class=\"text-red\">*</span>\r\n </p>\r\n <mat-dialog-content class=\"mat-typography\">\r\n <mat-form-field appearance=\"outline\" class=\"w-100\" [class.error-input]=\"isSubmitted && !otp\">\r\n <input cdkFocusInitial agAcceptOnlyNumeric [(ngModel)]=\"otp\" matInput type=\"text\" class=\"pad-top\"/>\r\n </mat-form-field>\r\n </mat-dialog-content>\r\n</div>\r\n<div>\r\n <div class=\"action-comment\">\r\n <p class=\"invoice-note-text invoice-section\">\r\n <span style=\"padding: 10px 15px\">{{ actionLabel | translate }}</span>\r\n <span *ngIf=\"isTermination\" class=\"text-red\">*</span>\r\n </p>\r\n <mat-icon (click)=\"cancel()\">close</mat-icon>\r\n<!-- <span class=\"material-icons\" (click)=\"cancel()\">close</span>-->\r\n </div>\r\n <mat-dialog-content class=\"mat-typography overflow-hidden\">\r\n <mat-form-field appearance=\"outline\" class=\"w-100\">\r\n <textarea cdkFocusInitial [(ngModel)]=\"comment\" matInput class=\"form-style\"\r\n [id]=\"isTermination ? 'warn' : 'primary'\"\r\n cdkTextareaAutosize\r\n cdkAutosizeMinRows=\"4\"\r\n cdkAutosizeMaxRows=\"5\"\r\n placeholder=\"{{'PAYER.placeHolder' | translate}}\">\r\n </textarea>\r\n </mat-form-field>\r\n </mat-dialog-content>\r\n\r\n <div style=\"margin-top: 10px\">\r\n <p *ngIf=\"warningMsg\" mat-dialog-title align=\"start\" class=\"invoice-section m-0 text-red\">\r\n {{ 'vendorWarning' | translate }}\r\n </p>\r\n </div>\r\n\r\n <mat-dialog-actions align=\"end\" class=\"modal-footer\">\r\n\r\n <button mat-stroked-button [color]=\"isTermination ? 'warn': 'primary'\" [disabled]=\"isTermination && !comment\"\r\n (click)=\"commentAndClose()\" id=\"actionLabel\">\r\n {{ 'Proceed' | translate }}\r\n </button>\r\n </mat-dialog-actions>\r\n</div>\r\n", styles: [".m-0{margin:0!important}.w-100{width:100%}.form-style{min-height:12vh!important;height:auto!important}.text-red{color:red!important}.modal-footer{margin-top:5vh}.overflow-hidden{overflow:hidden}.pad-top{margin-top:-7px;display:block}.action-comment{display:flex;justify-content:space-between}.material-icons{color:#e22222;padding:10px;cursor:pointer}textarea#warn::placeholder{color:red}\n"], dependencies: [{ kind: "directive", type: MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "component", type: MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: CdkTextareaAutosize, selector: "textarea[cdkTextareaAutosize]", inputs: ["cdkAutosizeMinRows", "cdkAutosizeMaxRows", "cdkTextareaAutosize", "placeholder"], exportAs: ["cdkTextareaAutosize"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }, { kind: "directive", type: MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "component", type: MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "directive", type: MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }] }); }
64
+ }
65
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ActionCommentComponent, decorators: [{
66
+ type: Component,
67
+ args: [{ selector: 'app-action-comment', standalone: true, imports: [
68
+ MatDialogTitle,
69
+ MatFormField,
70
+ MatDialogContent,
71
+ FormsModule,
72
+ CdkTextareaAutosize,
73
+ TranslateModule,
74
+ MatCheckbox,
75
+ MatDialogActions,
76
+ MatButton,
77
+ MatInput,
78
+ NgIf,
79
+ MatIcon
80
+ ], template: "<div *ngIf=\"signingRequired\">\r\n <p mat-dialog-title align=\"start\" class=\"invoice-note-text invoice-section m-0\">\r\n {{ 'comment.OTP' | translate }}\r\n <span *ngIf=\"isTermination\" class=\"text-red\">*</span>\r\n </p>\r\n <mat-dialog-content class=\"mat-typography\">\r\n <mat-form-field appearance=\"outline\" class=\"w-100\" [class.error-input]=\"isSubmitted && !otp\">\r\n <input cdkFocusInitial agAcceptOnlyNumeric [(ngModel)]=\"otp\" matInput type=\"text\" class=\"pad-top\"/>\r\n </mat-form-field>\r\n </mat-dialog-content>\r\n</div>\r\n<div>\r\n <div class=\"action-comment\">\r\n <p class=\"invoice-note-text invoice-section\">\r\n <span style=\"padding: 10px 15px\">{{ actionLabel | translate }}</span>\r\n <span *ngIf=\"isTermination\" class=\"text-red\">*</span>\r\n </p>\r\n <mat-icon (click)=\"cancel()\">close</mat-icon>\r\n<!-- <span class=\"material-icons\" (click)=\"cancel()\">close</span>-->\r\n </div>\r\n <mat-dialog-content class=\"mat-typography overflow-hidden\">\r\n <mat-form-field appearance=\"outline\" class=\"w-100\">\r\n <textarea cdkFocusInitial [(ngModel)]=\"comment\" matInput class=\"form-style\"\r\n [id]=\"isTermination ? 'warn' : 'primary'\"\r\n cdkTextareaAutosize\r\n cdkAutosizeMinRows=\"4\"\r\n cdkAutosizeMaxRows=\"5\"\r\n placeholder=\"{{'PAYER.placeHolder' | translate}}\">\r\n </textarea>\r\n </mat-form-field>\r\n </mat-dialog-content>\r\n\r\n <div style=\"margin-top: 10px\">\r\n <p *ngIf=\"warningMsg\" mat-dialog-title align=\"start\" class=\"invoice-section m-0 text-red\">\r\n {{ 'vendorWarning' | translate }}\r\n </p>\r\n </div>\r\n\r\n <mat-dialog-actions align=\"end\" class=\"modal-footer\">\r\n\r\n <button mat-stroked-button [color]=\"isTermination ? 'warn': 'primary'\" [disabled]=\"isTermination && !comment\"\r\n (click)=\"commentAndClose()\" id=\"actionLabel\">\r\n {{ 'Proceed' | translate }}\r\n </button>\r\n </mat-dialog-actions>\r\n</div>\r\n", styles: [".m-0{margin:0!important}.w-100{width:100%}.form-style{min-height:12vh!important;height:auto!important}.text-red{color:red!important}.modal-footer{margin-top:5vh}.overflow-hidden{overflow:hidden}.pad-top{margin-top:-7px;display:block}.action-comment{display:flex;justify-content:space-between}.material-icons{color:#e22222;padding:10px;cursor:pointer}textarea#warn::placeholder{color:red}\n"] }]
81
+ }], ctorParameters: () => [{ type: i1.MatDialogRef }, { type: undefined, decorators: [{
82
+ type: Inject,
83
+ args: [MAT_DIALOG_DATA]
84
+ }] }], propDecorators: { onKeyUp: [{
85
+ type: HostListener,
86
+ args: ['window:keyup.esc']
87
+ }] } });
88
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLWNvbW1lbnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaW52b2ljZXEvdWktbGliL3NyYy9saWIvY29tcG9uZW50cy9yZWplY3Rpb24tY29tbWVudC9hY3Rpb24tY29tbWVudC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pbnZvaWNlcS91aS1saWIvc3JjL2xpYi9jb21wb25lbnRzL3JlamVjdGlvbi1jb21tZW50L2FjdGlvbi1jb21tZW50LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBUyxNQUFNLGVBQWUsQ0FBQztBQUN0RSxPQUFPLEVBQ0wsZUFBZSxFQUNmLGdCQUFnQixFQUNoQixnQkFBZ0IsRUFFaEIsY0FBYyxFQUNmLE1BQU0sMEJBQTBCLENBQUM7QUFDbEMsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLDhCQUE4QixDQUFDO0FBQzFELE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQUMsbUJBQW1CLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUM1RCxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFDcEQsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBQ3ZELE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQUNuRCxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFDakQsT0FBTyxFQUFDLElBQUksRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQ3JDLE9BQU8sRUFBQyxPQUFPLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQzs7Ozs7QUFzQi9DLE1BQU0sT0FBTyxzQkFBc0I7SUFXakMsWUFBbUIsU0FB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IE9uSW5pdH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7XHJcbiAgTUFUX0RJQUxPR19EQVRBLFxyXG4gIE1hdERpYWxvZ0FjdGlvbnMsXHJcbiAgTWF0RGlhbG9nQ29udGVudCxcclxuICBNYXREaWFsb2dSZWYsXHJcbiAgTWF0RGlhbG9nVGl0bGVcclxufSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nXCI7XHJcbmltcG9ydCB7TWF0Rm9ybUZpZWxkfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZFwiO1xyXG5pbXBvcnQge0Zvcm1zTW9kdWxlfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcclxuaW1wb3J0IHtDZGtUZXh0YXJlYUF1dG9zaXplfSBmcm9tIFwiQGFuZ3VsYXIvY2RrL3RleHQtZmllbGRcIjtcclxuaW1wb3J0IHtUcmFuc2xhdGVNb2R1bGV9IGZyb20gXCJAbmd4LXRyYW5zbGF0ZS9jb3JlXCI7XHJcbmltcG9ydCB7TWF0Q2hlY2tib3h9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9jaGVja2JveFwiO1xyXG5pbXBvcnQge01hdEJ1dHRvbn0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2J1dHRvblwiO1xyXG5pbXBvcnQge01hdElucHV0fSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvaW5wdXRcIjtcclxuaW1wb3J0IHtOZ0lmfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uXCI7XHJcbmltcG9ydCB7TWF0SWNvbn0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2ljb25cIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXBwLWFjdGlvbi1jb21tZW50JyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIE1hdERpYWxvZ1RpdGxlLFxyXG4gICAgTWF0Rm9ybUZpZWxkLFxyXG4gICAgTWF0RGlhbG9nQ29udGVudCxcclxuICAgIEZvcm1zTW9kdWxlLFxyXG4gICAgQ2RrVGV4dGFyZWFBdXRvc2l6ZSxcclxuICAgIFRyYW5zbGF0ZU1vZHVsZSxcclxuICAgIE1hdENoZWNrYm94LFxyXG4gICAgTWF0RGlhbG9nQWN0aW9ucyxcclxuICAgIE1hdEJ1dHRvbixcclxuICAgIE1hdElucHV0LFxyXG4gICAgTmdJZixcclxuICAgIE1hdEljb25cclxuICBdLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9hY3Rpb24tY29tbWVudC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL2FjdGlvbi1jb21tZW50LmNvbXBvbmVudC5jc3MnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBY3Rpb25Db21tZW50Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBhY3Rpb25MYWJlbCA6IHN0cmluZyA9JydcclxuICBpc1Rlcm1pbmF0aW9uIDogYm9vbGVhbj1mYWxzZTtcclxuICBjb21tZW50OiBzdHJpbmcgPSAnJztcclxuICBleHRlcm5hbDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHNpZ25pbmdSZXF1aXJlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHRva2VuUmVmZXJlbmNlOiBzdHJpbmcgPSBcIlwiO1xyXG4gIG90cDogc3RyaW5nID0gXCJcIjtcclxuICBpc1N1Ym1pdHRlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHNob3dFeHRlcm5hbEJveCA9IHRydWU7XHJcbiAgd2FybmluZ01zZyA9IGZhbHNlO1xyXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBkaWFsb2dSZWY6IE1hdERpYWxvZ1JlZjxBY3Rpb25Db21tZW50Q29tcG9uZW50PixcclxuICAgICAgICAgICAgICBASW5qZWN0KE1BVF9ESUFMT0dfREFUQSkgcHVibGljIGRhdGE6IGFueSkge1xyXG4gICAgZGlhbG9nUmVmLmRpc2FibGVDbG9zZSA9IHRydWU7XHJcbiAgfVxyXG4gIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzprZXl1cC5lc2MnKSBvbktleVVwKCkge1xyXG4gICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UoKTtcclxuICB9XHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmFjdGlvbkxhYmVsID0gdGhpcy5kYXRhLmxhYmVsO1xyXG4gICAgdGhpcy5pc1Rlcm1pbmF0aW9uID0gdGhpcy5kYXRhLmlzVGVybWluYXRpb24gO1xyXG4gICAgdGhpcy5zaWduaW5nUmVxdWlyZWQgPSB0aGlzLmRhdGEuc2lnbmluZ1JlcXVpcmVkO1xyXG4gICAgdGhpcy50b2tlblJlZmVyZW5jZSA9IHRoaXMuZGF0YS50b2tlblJlZmVyZW5jZTtcclxuICAgIHRoaXMud2FybmluZ01zZyA9IHRoaXMuZGF0YS53YXJuaW5nTXNnIHx8IGZhbHNlO1xyXG4gIH1cclxuXHJcblxyXG4gIGNvbW1lbnRBbmRDbG9zZSgpIHtcclxuICAgIHRoaXMuaXNTdWJtaXR0ZWQgPSB0cnVlO1xyXG4gICAgaWYgKHRoaXMuc2lnbmluZ1JlcXVpcmVkICYmICF0aGlzLm90cCkgcmV0dXJuIGZhbHNlOy8vdmFsaWRhdGlvblxyXG4gICAgbGV0IG9iajp7W2tleTogc3RyaW5nXTphbnl9ID0ge1xyXG4gICAgICBjb21tZW50OiB0aGlzLmNvbW1lbnQsXHJcbiAgICAgIHNoYXJlRXh0ZXJuYWwgOiB0aGlzLmV4dGVybmFsXHJcbiAgICB9O1xyXG4gICAgLy9cclxuICAgIGlmKHRoaXMuc2lnbmluZ1JlcXVpcmVkKSBvYmpbXCJ0b2tlblwiXSA9IHRoaXMub3RwO1xyXG4gICAgaWYodGhpcy5zaWduaW5nUmVxdWlyZWQpIG9ialtcInRva2VuUmVmZXJlbmNlXCJdID0gdGhpcy50b2tlblJlZmVyZW5jZTtcclxuICAgIC8vXHJcbiAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZShvYmopO1xyXG5cclxuICAgIHJldHVybiBcIlwiO1xyXG4gIH1cclxuXHJcbiAgY2FuY2VsKCkge1xyXG4gICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UoKTtcclxuICB9XHJcblxyXG59XHJcbiIsIjxkaXYgKm5nSWY9XCJzaWduaW5nUmVxdWlyZWRcIj5cclxuICA8cCBtYXQtZGlhbG9nLXRpdGxlIGFsaWduPVwic3RhcnRcIiBjbGFzcz1cImludm9pY2Utbm90ZS10ZXh0IGludm9pY2Utc2VjdGlvbiBtLTBcIj5cclxuICAgIHt7ICdjb21tZW50Lk9UUCcgfCB0cmFuc2xhdGUgfX1cclxuICAgIDxzcGFuICpuZ0lmPVwiaXNUZXJtaW5hdGlvblwiIGNsYXNzPVwidGV4dC1yZWRcIj4qPC9zcGFuPlxyXG4gIDwvcD5cclxuICA8bWF0LWRpYWxvZy1jb250ZW50IGNsYXNzPVwibWF0LXR5cG9ncmFwaHlcIj5cclxuICAgIDxtYXQtZm9ybS1maWVsZCBhcHBlYXJhbmNlPVwib3V0bGluZVwiIGNsYXNzPVwidy0xMDBcIiBbY2xhc3MuZXJyb3ItaW5wdXRdPVwiaXNTdWJtaXR0ZWQgJiYgIW90cFwiPlxyXG4gICAgICA8aW5wdXQgY2RrRm9jdXNJbml0aWFsIGFnQWNjZXB0T25seU51bWVyaWMgWyhuZ01vZGVsKV09XCJvdHBcIiBtYXRJbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwicGFkLXRvcFwiLz5cclxuICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgPC9tYXQtZGlhbG9nLWNvbnRlbnQ+XHJcbjwvZGl2PlxyXG48ZGl2PlxyXG4gIDxkaXYgY2xhc3M9XCJhY3Rpb24tY29tbWVudFwiPlxyXG4gICAgPHAgY2xhc3M9XCJpbnZvaWNlLW5vdGUtdGV4dCBpbnZvaWNlLXNlY3Rpb25cIj5cclxuICAgICAgPHNwYW4gc3R5bGU9XCJwYWRkaW5nOiAxMHB4IDE1cHhcIj57eyBhY3Rpb25MYWJlbCB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cclxuICAgICAgPHNwYW4gKm5nSWY9XCJpc1Rlcm1pbmF0aW9uXCIgY2xhc3M9XCJ0ZXh0LXJlZFwiPio8L3NwYW4+XHJcbiAgICA8L3A+XHJcbiAgICA8bWF0LWljb24gKGNsaWNrKT1cImNhbmNlbCgpXCI+Y2xvc2U8L21hdC1pY29uPlxyXG48IS0tICAgIDxzcGFuIGNsYXNzPVwibWF0ZXJpYWwtaWNvbnNcIiAoY2xpY2spPVwiY2FuY2VsKClcIj5jbG9zZTwvc3Bhbj4tLT5cclxuICA8L2Rpdj5cclxuICA8bWF0LWRpYWxvZy1jb250ZW50IGNsYXNzPVwibWF0LXR5cG9ncmFwaHkgb3ZlcmZsb3ctaGlkZGVuXCI+XHJcbiAgICA8bWF0LWZvcm0tZmllbGQgYXBwZWFyYW5jZT1cIm91dGxpbmVcIiBjbGFzcz1cInctMTAwXCI+XHJcbiAgICAgICAgICAgICAgICA8dGV4dGFyZWEgY2RrRm9jdXNJbml0aWFsIFsobmdNb2RlbCldPVwiY29tbWVudFwiIG1hdElucHV0IGNsYXNzPVwiZm9ybS1zdHlsZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2lkXT1cImlzVGVybWluYXRpb24gPyAnd2FybicgOiAncHJpbWFyeSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNka1RleHRhcmVhQXV0b3NpemVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBjZGtBdXRvc2l6ZU1pblJvd3M9XCI0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBjZGtBdXRvc2l6ZU1heFJvd3M9XCI1XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cInt7J1BBWUVSLnBsYWNlSG9sZGVyJyB8IHRyYW5zbGF0ZX19XCI+XHJcbiAgICAgICAgICAgICAgICA8L3RleHRhcmVhPlxyXG4gICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICA8L21hdC1kaWFsb2ctY29udGVudD5cclxuXHJcbiAgPGRpdiBzdHlsZT1cIm1hcmdpbi10b3A6IDEwcHhcIj5cclxuICAgIDxwICpuZ0lmPVwid2FybmluZ01zZ1wiIG1hdC1kaWFsb2ctdGl0bGUgYWxpZ249XCJzdGFydFwiIGNsYXNzPVwiaW52b2ljZS1zZWN0aW9uIG0tMCB0ZXh0LXJlZFwiPlxyXG4gICAgICB7eyAndmVuZG9yV2FybmluZycgfCB0cmFuc2xhdGUgfX1cclxuICAgIDwvcD5cclxuICA8L2Rpdj5cclxuXHJcbiAgPG1hdC1kaWFsb2ctYWN0aW9ucyBhbGlnbj1cImVuZFwiIGNsYXNzPVwibW9kYWwtZm9vdGVyXCI+XHJcblxyXG4gICAgPGJ1dHRvbiBtYXQtc3Ryb2tlZC1idXR0b24gW2NvbG9yXT1cImlzVGVybWluYXRpb24gPyAnd2Fybic6ICdwcmltYXJ5J1wiIFtkaXNhYmxlZF09XCJpc1Rlcm1pbmF0aW9uICYmICFjb21tZW50XCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cImNvbW1lbnRBbmRDbG9zZSgpXCIgaWQ9XCJhY3Rpb25MYWJlbFwiPlxyXG4gICAgICB7eyAnUHJvY2VlZCcgfCB0cmFuc2xhdGUgfX1cclxuICAgIDwvYnV0dG9uPlxyXG4gIDwvbWF0LWRpYWxvZy1hY3Rpb25zPlxyXG48L2Rpdj5cclxuIl19