@firestitch/list 18.0.63 → 18.0.64

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.
@@ -4,7 +4,6 @@ import { Row } from '../../../../models/row';
4
4
  import { RowAction } from '../../../../models/row-action.model';
5
5
  import * as i0 from "@angular/core";
6
6
  export declare class FsRowMenuActionComponent implements OnInit, OnChanges {
7
- private _menu;
8
7
  row: Row;
9
8
  rowAction: RowAction;
10
9
  file: FsListRowActionFile;
@@ -12,6 +11,7 @@ export declare class FsRowMenuActionComponent implements OnInit, OnChanges {
12
11
  fileError: EventEmitter<any>;
13
12
  icon: string;
14
13
  label: string;
14
+ private _menu;
15
15
  ngOnChanges(changes: SimpleChanges): void;
16
16
  selectFile(event: any): void;
17
17
  errorFile(event: any): void;
@@ -1,4 +1,4 @@
1
- import { AfterViewInit, DoCheck, EventEmitter, OnDestroy, OnInit } from '@angular/core';
1
+ import { AfterViewInit, EventEmitter, OnDestroy, OnInit } from '@angular/core';
2
2
  import { MatCheckboxChange } from '@angular/material/checkbox';
3
3
  import { ReorderPosition, ReorderStrategy } from '../../../classes/reorder-controller';
4
4
  import { SelectionController } from '../../../classes/selection-controller';
@@ -6,7 +6,7 @@ import { Column } from '../../../models/column.model';
6
6
  import { Row } from '../../../models/row';
7
7
  import { RowAction } from '../../../models/row-action.model';
8
8
  import * as i0 from "@angular/core";
9
- export declare class FsRowComponent implements OnInit, DoCheck, AfterViewInit, OnDestroy {
9
+ export declare class FsRowComponent implements OnInit, AfterViewInit, OnDestroy {
10
10
  role: string;
11
11
  row: import("@angular/core").InputSignal<Row>;
12
12
  rowActionsRaw: any[];
@@ -36,21 +36,17 @@ export declare class FsRowComponent implements OnInit, DoCheck, AfterViewInit, O
36
36
  isGroupFooterRow: import("@angular/core").Signal<boolean>;
37
37
  dragCellVisible: import("@angular/core").Signal<boolean>;
38
38
  rowCustomClass: import("@angular/core").Signal<string>;
39
- private _rowDiffer;
40
39
  private _eventListeners;
41
40
  private _destroy$;
42
41
  private _el;
43
42
  private _cdRef;
44
- private _differs;
45
43
  private _renderer;
46
44
  private _draggableList;
47
- constructor();
48
45
  get isDragDisabled(): boolean;
49
46
  get isMultipleSelection(): boolean;
50
47
  get leftDragDropEnabled(): boolean;
51
48
  get rightDragDropEnabled(): boolean;
52
49
  ngOnInit(): void;
53
- ngDoCheck(): void;
54
50
  ngAfterViewInit(): void;
55
51
  updateRowActions(): void;
56
52
  ngOnDestroy(): void;
@@ -67,11 +63,8 @@ export declare class FsRowComponent implements OnInit, DoCheck, AfterViewInit, O
67
63
  */
68
64
  trackByFn(index: any): any;
69
65
  dragStart(event: any): void;
70
- /**
71
- * Set event listeners for row
72
- */
73
66
  private _initRowEvents;
74
- private _initRowActionsUpdate;
67
+ private _initRowActions;
75
68
  private _getRowClasses;
76
69
  /**
77
70
  * Subscribe to selection change events
@@ -1,13 +1,7 @@
1
- import { DoCheck } from '@angular/core';
2
1
  import { FsCellComponent } from '../../body/row/cell/cell.component';
3
2
  import * as i0 from "@angular/core";
4
- export declare class FsHeadCellComponent extends FsCellComponent implements DoCheck {
5
- private _cdRef;
6
- private _differs;
3
+ export declare class FsHeadCellComponent extends FsCellComponent {
7
4
  cellContext: any;
8
- private _columnDiffer;
9
- constructor();
10
- ngDoCheck(): void;
11
5
  initCellContext(): void;
12
6
  static ɵfac: i0.ɵɵFactoryDeclaration<FsHeadCellComponent, never>;
13
7
  static ɵcmp: i0.ɵɵComponentDeclaration<FsHeadCellComponent, "[fs-head-cell]", never, {}, {}, never, never, true, never>;
@@ -27,7 +27,7 @@ export declare class Column {
27
27
  footerColspanned: boolean;
28
28
  private _attributes;
29
29
  private _defaultDirection;
30
- private _ordered;
30
+ private _ordered$;
31
31
  constructor(colConfig: ListColumnConfig, colDefaults?: any);
32
32
  set title(value: string);
33
33
  get title(): string;
@@ -44,6 +44,7 @@ export declare class Column {
44
44
  get visible$(): Observable<boolean>;
45
45
  get direction(): "asc" | "desc";
46
46
  get fullNameDirection(): "Ascending" | "Descending";
47
+ get ordered$(): Observable<boolean>;
47
48
  get ordered(): boolean;
48
49
  set ordered(value: boolean);
49
50
  /**
@@ -4,6 +4,7 @@ import { FsListReorderData } from '../../interfaces';
4
4
  export interface IBaseRow {
5
5
  data: object;
6
6
  index: number;
7
+ data$: Observable<object>;
7
8
  readyToSwap: boolean;
8
9
  actionsUpdated$: Observable<void>;
9
10
  updateActions(): void;
@@ -6,14 +6,14 @@ export declare class RowAction {
6
6
  remove: FsListRowActionRemove | boolean;
7
7
  className: string;
8
8
  type: ActionType;
9
- show: Function;
9
+ show: (row: any, index: number) => boolean;
10
10
  restore: boolean;
11
11
  rowActions: RowAction[];
12
12
  label: string;
13
13
  routerLink: FsListRowActionLink;
14
14
  classArray: string[];
15
15
  isShown: boolean;
16
- click: Function;
16
+ click: (row: any, event: any, index: number, rowActionsRef?: RowAction) => void;
17
17
  fileConfig: FsListRowActionFile;
18
18
  private _linkFn;
19
19
  private readonly _isGroup;
@@ -1,13 +1,12 @@
1
1
  import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, inject } from '@angular/core';
2
- import { FsMenuComponent } from '@firestitch/menu';
3
- import { RowAction } from '../../../../models/row-action.model';
4
2
  import { MatIcon } from '@angular/material/icon';
5
3
  import { FsFileModule } from '@firestitch/file';
4
+ import { FsMenuComponent } from '@firestitch/menu';
5
+ import { RowAction } from '../../../../models/row-action.model';
6
6
  import { ActionLabelPipe } from '../../../../pipes/action-label';
7
7
  import * as i0 from "@angular/core";
8
8
  import * as i1 from "@firestitch/file";
9
9
  export class FsRowMenuActionComponent {
10
- _menu = inject(FsMenuComponent);
11
10
  row;
12
11
  rowAction;
13
12
  file;
@@ -15,6 +14,7 @@ export class FsRowMenuActionComponent {
15
14
  fileError = new EventEmitter();
16
15
  icon;
17
16
  label;
17
+ _menu = inject(FsMenuComponent);
18
18
  ngOnChanges(changes) {
19
19
  if (changes.row) {
20
20
  this.icon = this.rowAction.getRowIcon(this.row.data);
@@ -35,15 +35,15 @@ export class FsRowMenuActionComponent {
35
35
  this.label = this.rowAction.label;
36
36
  }
37
37
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: FsRowMenuActionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
38
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.7", type: FsRowMenuActionComponent, isStandalone: true, selector: "fs-list-row-menu-action", inputs: { row: "row", rowAction: "rowAction", file: "file" }, outputs: { fileSelect: "fileSelect", fileError: "fileError" }, usesOnChanges: true, ngImport: i0, template: "@if (!file) {\n @if (icon) {\n <mat-icon>\n {{ icon }}\n </mat-icon>\n }\n {{ label| actionLabel:row }}\n} @else {\n <fs-file\n class=\"action-button\"\n [accept]=\"file.accept || '*'\"\n [multiple]=\"file.multiple\"\n [minWidth]=\"file.minWidth\"\n [minHeight]=\"file.minHeight\"\n [imageWidth]=\"file.maxWidth\"\n [imageHeight]=\"file.maxHeight\"\n (click)=\"$event.stopPropagation();\"\n (select)=\"selectFile($event)\"\n (error)=\"errorFile($event)\"\n (cancel)=\"closeMenu()\">\n @if (icon) {\n <mat-icon>\n {{ icon }}\n </mat-icon>\n }\n {{ label| actionLabel:row }}\n </fs-file>\n}\n", dependencies: [{ kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: FsFileModule }, { kind: "component", type: i1.FsFileComponent, selector: "fs-file", inputs: ["minHeight", "minWidth", "orientate", "multiple", "capture", "allowClick", "allowDrop", "accept", "disabled", "imageWidth", "imageHeight", "imageQuality"], outputs: ["select", "error", "beforeProcessing", "clicked", "declined"] }, { kind: "pipe", type: ActionLabelPipe, name: "actionLabel" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
38
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.7", type: FsRowMenuActionComponent, isStandalone: true, selector: "fs-list-row-menu-action", inputs: { row: "row", rowAction: "rowAction", file: "file" }, outputs: { fileSelect: "fileSelect", fileError: "fileError" }, usesOnChanges: true, ngImport: i0, template: "@if (!file) {\n @if (icon) {\n <mat-icon>\n {{ icon }}\n </mat-icon>\n }\n {{ label| actionLabel:row }}\n} @else {\n <fs-file\n class=\"action-button\"\n [accept]=\"file.accept || '*'\"\n [multiple]=\"file.multiple\"\n [minWidth]=\"file.minWidth\"\n [minHeight]=\"file.minHeight\"\n [imageWidth]=\"file.maxWidth\"\n [imageHeight]=\"file.maxHeight\"\n (click)=\"$event.stopPropagation();\"\n (select)=\"selectFile($event)\"\n (error)=\"errorFile($event)\"\n (cancel)=\"closeMenu()\">\n @if (icon) {\n <mat-icon>\n {{ icon }}\n </mat-icon>\n }\n {{ label| actionLabel:row }}\n </fs-file>\n}", styles: [":host{display:flex;align-items:center}\n"], dependencies: [{ kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: FsFileModule }, { kind: "component", type: i1.FsFileComponent, selector: "fs-file", inputs: ["minHeight", "minWidth", "orientate", "multiple", "capture", "allowClick", "allowDrop", "accept", "disabled", "imageWidth", "imageHeight", "imageQuality"], outputs: ["select", "error", "beforeProcessing", "clicked", "declined"] }, { kind: "pipe", type: ActionLabelPipe, name: "actionLabel" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
39
39
  }
40
40
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: FsRowMenuActionComponent, decorators: [{
41
41
  type: Component,
42
42
  args: [{ selector: 'fs-list-row-menu-action', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
43
43
  MatIcon,
44
44
  FsFileModule,
45
- ActionLabelPipe
46
- ], template: "@if (!file) {\n @if (icon) {\n <mat-icon>\n {{ icon }}\n </mat-icon>\n }\n {{ label| actionLabel:row }}\n} @else {\n <fs-file\n class=\"action-button\"\n [accept]=\"file.accept || '*'\"\n [multiple]=\"file.multiple\"\n [minWidth]=\"file.minWidth\"\n [minHeight]=\"file.minHeight\"\n [imageWidth]=\"file.maxWidth\"\n [imageHeight]=\"file.maxHeight\"\n (click)=\"$event.stopPropagation();\"\n (select)=\"selectFile($event)\"\n (error)=\"errorFile($event)\"\n (cancel)=\"closeMenu()\">\n @if (icon) {\n <mat-icon>\n {{ icon }}\n </mat-icon>\n }\n {{ label| actionLabel:row }}\n </fs-file>\n}\n" }]
45
+ ActionLabelPipe,
46
+ ], template: "@if (!file) {\n @if (icon) {\n <mat-icon>\n {{ icon }}\n </mat-icon>\n }\n {{ label| actionLabel:row }}\n} @else {\n <fs-file\n class=\"action-button\"\n [accept]=\"file.accept || '*'\"\n [multiple]=\"file.multiple\"\n [minWidth]=\"file.minWidth\"\n [minHeight]=\"file.minHeight\"\n [imageWidth]=\"file.maxWidth\"\n [imageHeight]=\"file.maxHeight\"\n (click)=\"$event.stopPropagation();\"\n (select)=\"selectFile($event)\"\n (error)=\"errorFile($event)\"\n (cancel)=\"closeMenu()\">\n @if (icon) {\n <mat-icon>\n {{ icon }}\n </mat-icon>\n }\n {{ label| actionLabel:row }}\n </fs-file>\n}", styles: [":host{display:flex;align-items:center}\n"] }]
47
47
  }], propDecorators: { row: [{
48
48
  type: Input
49
49
  }], rowAction: [{
@@ -55,4 +55,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImpor
55
55
  }], fileError: [{
56
56
  type: Output
57
57
  }] } });
58
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS1hY3Rpb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9jb21wb25lbnRzL2JvZHkvcm93L21lbnUtYWN0aW9uL21lbnUtYWN0aW9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9ib2R5L3Jvdy9tZW51LWFjdGlvbi9tZW51LWFjdGlvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBaUIsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTFJLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUluRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFFaEUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ2pELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNoRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7OztBQWNqRSxNQUFNLE9BQU8sd0JBQXdCO0lBQzNCLEtBQUssR0FBRyxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUM7SUFJakMsR0FBRyxDQUFNO0lBR1QsU0FBUyxDQUFZO0lBR3JCLElBQUksQ0FBc0I7SUFHMUIsVUFBVSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7SUFHaEMsU0FBUyxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7SUFFL0IsSUFBSSxDQUFTO0lBQ2IsS0FBSyxDQUFTO0lBRWQsV0FBVyxDQUFDLE9BQXNCO1FBQ3ZDLElBQUcsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQ2YsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3ZELENBQUM7SUFDSCxDQUFDO0lBRU0sVUFBVSxDQUFDLEtBQUs7UUFDckIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDNUIsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQ25CLENBQUM7SUFFTSxTQUFTLENBQUMsS0FBSztRQUNwQixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMzQixJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDbkIsQ0FBQztJQUVNLFNBQVM7UUFDZCxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQ3pCLENBQUM7SUFFTSxRQUFRO1FBQ2IsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQztJQUNwQyxDQUFDO3VHQTVDVSx3QkFBd0I7MkZBQXhCLHdCQUF3QixxT0N4QnJDLDJwQkE0QkEsNENEVEksT0FBTywwSUFDUCxZQUFZLDhVQUNaLGVBQWU7OzJGQUdOLHdCQUF3QjtrQkFYcEMsU0FBUzsrQkFDSSx5QkFBeUIsbUJBRWxCLHVCQUF1QixDQUFDLE1BQU0sY0FDbkMsSUFBSSxXQUNQO3dCQUNULE9BQU87d0JBQ1AsWUFBWTt3QkFDWixlQUFlO3FCQUNsQjs4QkFPUSxHQUFHO3NCQURULEtBQUs7Z0JBSUMsU0FBUztzQkFEZixLQUFLO2dCQUlDLElBQUk7c0JBRFYsS0FBSztnQkFJQyxVQUFVO3NCQURoQixNQUFNO2dCQUlBLFNBQVM7c0JBRGYsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uQ2hhbmdlcywgT25Jbml0LCBPdXRwdXQsIFNpbXBsZUNoYW5nZXMsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBGc01lbnVDb21wb25lbnQgfSBmcm9tICdAZmlyZXN0aXRjaC9tZW51JztcblxuaW1wb3J0IHsgRnNMaXN0Um93QWN0aW9uRmlsZSB9IGZyb20gJy4uLy4uLy4uLy4uL2ludGVyZmFjZXMvbGlzdGNvbmZpZy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUm93IH0gZnJvbSAnLi4vLi4vLi4vLi4vbW9kZWxzL3Jvdyc7XG5pbXBvcnQgeyBSb3dBY3Rpb24gfSBmcm9tICcuLi8uLi8uLi8uLi9tb2RlbHMvcm93LWFjdGlvbi5tb2RlbCc7XG5cbmltcG9ydCB7IE1hdEljb24gfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcbmltcG9ydCB7IEZzRmlsZU1vZHVsZSB9IGZyb20gJ0BmaXJlc3RpdGNoL2ZpbGUnO1xuaW1wb3J0IHsgQWN0aW9uTGFiZWxQaXBlIH0gZnJvbSAnLi4vLi4vLi4vLi4vcGlwZXMvYWN0aW9uLWxhYmVsJztcblxuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2ZzLWxpc3Qtcm93LW1lbnUtYWN0aW9uJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vbWVudS1hY3Rpb24uY29tcG9uZW50Lmh0bWwnLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW1xuICAgIE1hdEljb24sXG4gICAgRnNGaWxlTW9kdWxlLFxuICAgIEFjdGlvbkxhYmVsUGlwZVxuXSxcbn0pXG5leHBvcnQgY2xhc3MgRnNSb3dNZW51QWN0aW9uQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xuICBwcml2YXRlIF9tZW51ID0gaW5qZWN0KEZzTWVudUNvbXBvbmVudCk7XG5cblxuICBASW5wdXQoKVxuICBwdWJsaWMgcm93OiBSb3c7XG5cbiAgQElucHV0KClcbiAgcHVibGljIHJvd0FjdGlvbjogUm93QWN0aW9uO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBmaWxlOiBGc0xpc3RSb3dBY3Rpb25GaWxlO1xuXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgZmlsZVNlbGVjdCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBAT3V0cHV0KClcbiAgcHVibGljIGZpbGVFcnJvciA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBwdWJsaWMgaWNvbjogc3RyaW5nO1xuICBwdWJsaWMgbGFiZWw6IHN0cmluZztcbiAgICBcbiAgcHVibGljIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZihjaGFuZ2VzLnJvdykge1xuICAgICAgdGhpcy5pY29uID0gdGhpcy5yb3dBY3Rpb24uZ2V0Um93SWNvbih0aGlzLnJvdy5kYXRhKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgc2VsZWN0RmlsZShldmVudCk6IHZvaWQge1xuICAgIHRoaXMuZmlsZVNlbGVjdC5lbWl0KGV2ZW50KTtcbiAgICB0aGlzLmNsb3NlTWVudSgpO1xuICB9XG5cbiAgcHVibGljIGVycm9yRmlsZShldmVudCk6IHZvaWQge1xuICAgIHRoaXMuZmlsZUVycm9yLmVtaXQoZXZlbnQpO1xuICAgIHRoaXMuY2xvc2VNZW51KCk7XG4gIH1cblxuICBwdWJsaWMgY2xvc2VNZW51KCk6IHZvaWQge1xuICAgIHRoaXMuX21lbnUuY2xvc2VNZW51KCk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5sYWJlbCA9IHRoaXMucm93QWN0aW9uLmxhYmVsO1xuICB9XG59XG4iLCJAaWYgKCFmaWxlKSB7XG4gIEBpZiAoaWNvbikge1xuICAgIDxtYXQtaWNvbj5cbiAgICAgIHt7IGljb24gfX1cbiAgICA8L21hdC1pY29uPlxuICB9XG4gIHt7IGxhYmVsfCBhY3Rpb25MYWJlbDpyb3cgfX1cbn0gQGVsc2Uge1xuICA8ZnMtZmlsZVxuICAgIGNsYXNzPVwiYWN0aW9uLWJ1dHRvblwiXG4gICAgW2FjY2VwdF09XCJmaWxlLmFjY2VwdCB8fCAnKidcIlxuICAgIFttdWx0aXBsZV09XCJmaWxlLm11bHRpcGxlXCJcbiAgICBbbWluV2lkdGhdPVwiZmlsZS5taW5XaWR0aFwiXG4gICAgW21pbkhlaWdodF09XCJmaWxlLm1pbkhlaWdodFwiXG4gICAgW2ltYWdlV2lkdGhdPVwiZmlsZS5tYXhXaWR0aFwiXG4gICAgW2ltYWdlSGVpZ2h0XT1cImZpbGUubWF4SGVpZ2h0XCJcbiAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1wiXG4gICAgKHNlbGVjdCk9XCJzZWxlY3RGaWxlKCRldmVudClcIlxuICAgIChlcnJvcik9XCJlcnJvckZpbGUoJGV2ZW50KVwiXG4gICAgKGNhbmNlbCk9XCJjbG9zZU1lbnUoKVwiPlxuICAgIEBpZiAoaWNvbikge1xuICAgICAgPG1hdC1pY29uPlxuICAgICAgICB7eyBpY29uIH19XG4gICAgICA8L21hdC1pY29uPlxuICAgIH1cbiAgICB7eyBsYWJlbHwgYWN0aW9uTGFiZWw6cm93IH19XG4gIDwvZnMtZmlsZT5cbn1cbiJdfQ==
58
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS1hY3Rpb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9jb21wb25lbnRzL2JvZHkvcm93L21lbnUtYWN0aW9uL21lbnUtYWN0aW9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9ib2R5L3Jvdy9tZW51LWFjdGlvbi9tZW51LWFjdGlvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBaUIsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTFJLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUVqRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDaEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBSW5ELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUNoRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7OztBQWVqRSxNQUFNLE9BQU8sd0JBQXdCO0lBRzVCLEdBQUcsQ0FBTTtJQUdULFNBQVMsQ0FBWTtJQUdyQixJQUFJLENBQXNCO0lBRzFCLFVBQVUsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO0lBR2hDLFNBQVMsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO0lBRS9CLElBQUksQ0FBUztJQUNiLEtBQUssQ0FBUztJQUViLEtBQUssR0FBRyxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUM7SUFFakMsV0FBVyxDQUFDLE9BQXNCO1FBQ3ZDLElBQUcsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQ2YsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3ZELENBQUM7SUFDSCxDQUFDO0lBRU0sVUFBVSxDQUFDLEtBQUs7UUFDckIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDNUIsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQ25CLENBQUM7SUFFTSxTQUFTLENBQUMsS0FBSztRQUNwQixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMzQixJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDbkIsQ0FBQztJQUVNLFNBQVM7UUFDZCxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQ3pCLENBQUM7SUFFTSxRQUFRO1FBQ2IsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQztJQUNwQyxDQUFDO3VHQTVDVSx3QkFBd0I7MkZBQXhCLHdCQUF3QixxT0N6QnJDLCtxQkEyQkMsa0dEUEcsT0FBTywwSUFDUCxZQUFZLDhVQUNaLGVBQWU7OzJGQUdOLHdCQUF3QjtrQkFacEMsU0FBUzsrQkFDRSx5QkFBeUIsbUJBR2xCLHVCQUF1QixDQUFDLE1BQU0sY0FDbkMsSUFBSSxXQUNQO3dCQUNQLE9BQU87d0JBQ1AsWUFBWTt3QkFDWixlQUFlO3FCQUNoQjs4QkFLTSxHQUFHO3NCQURULEtBQUs7Z0JBSUMsU0FBUztzQkFEZixLQUFLO2dCQUlDLElBQUk7c0JBRFYsS0FBSztnQkFJQyxVQUFVO3NCQURoQixNQUFNO2dCQUlBLFNBQVM7c0JBRGYsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uQ2hhbmdlcywgT25Jbml0LCBPdXRwdXQsIFNpbXBsZUNoYW5nZXMsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBNYXRJY29uIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XG5cbmltcG9ydCB7IEZzRmlsZU1vZHVsZSB9IGZyb20gJ0BmaXJlc3RpdGNoL2ZpbGUnO1xuaW1wb3J0IHsgRnNNZW51Q29tcG9uZW50IH0gZnJvbSAnQGZpcmVzdGl0Y2gvbWVudSc7XG5cbmltcG9ydCB7IEZzTGlzdFJvd0FjdGlvbkZpbGUgfSBmcm9tICcuLi8uLi8uLi8uLi9pbnRlcmZhY2VzL2xpc3Rjb25maWcuaW50ZXJmYWNlJztcbmltcG9ydCB7IFJvdyB9IGZyb20gJy4uLy4uLy4uLy4uL21vZGVscy9yb3cnO1xuaW1wb3J0IHsgUm93QWN0aW9uIH0gZnJvbSAnLi4vLi4vLi4vLi4vbW9kZWxzL3Jvdy1hY3Rpb24ubW9kZWwnO1xuaW1wb3J0IHsgQWN0aW9uTGFiZWxQaXBlIH0gZnJvbSAnLi4vLi4vLi4vLi4vcGlwZXMvYWN0aW9uLWxhYmVsJztcblxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdmcy1saXN0LXJvdy1tZW51LWFjdGlvbicsXG4gIHRlbXBsYXRlVXJsOiAnLi9tZW51LWFjdGlvbi5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9tZW51LWFjdGlvbi5jb21wb25lbnQuc2NzcycsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgTWF0SWNvbixcbiAgICBGc0ZpbGVNb2R1bGUsXG4gICAgQWN0aW9uTGFiZWxQaXBlLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBGc1Jvd01lbnVBY3Rpb25Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XG5cbiAgQElucHV0KClcbiAgcHVibGljIHJvdzogUm93O1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyByb3dBY3Rpb246IFJvd0FjdGlvbjtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgZmlsZTogRnNMaXN0Um93QWN0aW9uRmlsZTtcblxuICBAT3V0cHV0KClcbiAgcHVibGljIGZpbGVTZWxlY3QgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBmaWxlRXJyb3IgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgcHVibGljIGljb246IHN0cmluZztcbiAgcHVibGljIGxhYmVsOiBzdHJpbmc7XG5cbiAgcHJpdmF0ZSBfbWVudSA9IGluamVjdChGc01lbnVDb21wb25lbnQpO1xuICAgIFxuICBwdWJsaWMgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmKGNoYW5nZXMucm93KSB7XG4gICAgICB0aGlzLmljb24gPSB0aGlzLnJvd0FjdGlvbi5nZXRSb3dJY29uKHRoaXMucm93LmRhdGEpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBzZWxlY3RGaWxlKGV2ZW50KTogdm9pZCB7XG4gICAgdGhpcy5maWxlU2VsZWN0LmVtaXQoZXZlbnQpO1xuICAgIHRoaXMuY2xvc2VNZW51KCk7XG4gIH1cblxuICBwdWJsaWMgZXJyb3JGaWxlKGV2ZW50KTogdm9pZCB7XG4gICAgdGhpcy5maWxlRXJyb3IuZW1pdChldmVudCk7XG4gICAgdGhpcy5jbG9zZU1lbnUoKTtcbiAgfVxuXG4gIHB1YmxpYyBjbG9zZU1lbnUoKTogdm9pZCB7XG4gICAgdGhpcy5fbWVudS5jbG9zZU1lbnUoKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmxhYmVsID0gdGhpcy5yb3dBY3Rpb24ubGFiZWw7XG4gIH1cbn1cbiIsIkBpZiAoIWZpbGUpIHtcbiAgQGlmIChpY29uKSB7XG4gICAgPG1hdC1pY29uPlxuICAgICAge3sgaWNvbiB9fVxuICAgIDwvbWF0LWljb24+XG4gIH1cbiAge3sgbGFiZWx8IGFjdGlvbkxhYmVsOnJvdyB9fVxufSBAZWxzZSB7XG4gIDxmcy1maWxlXG4gICAgICBjbGFzcz1cImFjdGlvbi1idXR0b25cIlxuICAgICAgW2FjY2VwdF09XCJmaWxlLmFjY2VwdCB8fCAnKidcIlxuICAgICAgW211bHRpcGxlXT1cImZpbGUubXVsdGlwbGVcIlxuICAgICAgW21pbldpZHRoXT1cImZpbGUubWluV2lkdGhcIlxuICAgICAgW21pbkhlaWdodF09XCJmaWxlLm1pbkhlaWdodFwiXG4gICAgICBbaW1hZ2VXaWR0aF09XCJmaWxlLm1heFdpZHRoXCJcbiAgICAgIFtpbWFnZUhlaWdodF09XCJmaWxlLm1heEhlaWdodFwiXG4gICAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1wiXG4gICAgICAoc2VsZWN0KT1cInNlbGVjdEZpbGUoJGV2ZW50KVwiXG4gICAgICAoZXJyb3IpPVwiZXJyb3JGaWxlKCRldmVudClcIlxuICAgICAgKGNhbmNlbCk9XCJjbG9zZU1lbnUoKVwiPlxuICAgIEBpZiAoaWNvbikge1xuICAgICAgPG1hdC1pY29uPlxuICAgICAgICB7eyBpY29uIH19XG4gICAgICA8L21hdC1pY29uPlxuICAgIH1cbiAgICB7eyBsYWJlbHwgYWN0aW9uTGFiZWw6cm93IH19XG4gIDwvZnMtZmlsZT5cbn0iXX0=
@@ -1,8 +1,8 @@
1
1
  import { AsyncPipe, NgClass, NgTemplateOutlet } from '@angular/common';
2
- import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, EventEmitter, HostBinding, Input, KeyValueDiffers, Renderer2, computed, inject, input } from '@angular/core';
2
+ import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, EventEmitter, HostBinding, Input, Renderer2, computed, inject, input, } from '@angular/core';
3
3
  import { MatCheckbox } from '@angular/material/checkbox';
4
4
  import { MatIcon } from '@angular/material/icon';
5
- import { Subject } from 'rxjs';
5
+ import { Subject, merge } from 'rxjs';
6
6
  import { takeUntil } from 'rxjs/operators';
7
7
  import { ReorderPosition, ReorderStrategy, } from '../../../classes/reorder-controller';
8
8
  import { SelectionController } from '../../../classes/selection-controller';
@@ -81,18 +81,12 @@ export class FsRowComponent {
81
81
  }
82
82
  return classes.join(' ');
83
83
  });
84
- _rowDiffer;
85
84
  _eventListeners = [];
86
85
  _destroy$ = new Subject();
87
86
  _el = inject(ElementRef);
88
87
  _cdRef = inject(ChangeDetectorRef);
89
- _differs = inject(KeyValueDiffers);
90
88
  _renderer = inject(Renderer2);
91
89
  _draggableList = inject(FsListDraggableListDirective, { optional: true });
92
- constructor() {
93
- const _differs = this._differs;
94
- this._rowDiffer = _differs.find({}).create();
95
- }
96
90
  get isDragDisabled() {
97
91
  return !this.selected && this.reorderMultiple && !!this.selection.selectedRows.size;
98
92
  }
@@ -111,9 +105,9 @@ export class FsRowComponent {
111
105
  && this.activeFiltersCount === 0;
112
106
  }
113
107
  ngOnInit() {
114
- this._initRowEvents();
115
108
  if (this.row()) {
116
- this._initRowActionsUpdate();
109
+ this._initRowActions();
110
+ this._initRowEvents();
117
111
  if (isGroupRow(this.row())) {
118
112
  if (this.row() && this.groupActionsRaw) {
119
113
  this.rowActions = this.groupActionsRaw.map((action) => new RowAction(action));
@@ -126,11 +120,6 @@ export class FsRowComponent {
126
120
  }
127
121
  }
128
122
  }
129
- ngDoCheck() {
130
- if (this._rowDiffer.diff(this.row)) {
131
- this.updateRowActions();
132
- }
133
- }
134
123
  ngAfterViewInit() {
135
124
  this._initSelection();
136
125
  }
@@ -175,9 +164,6 @@ export class FsRowComponent {
175
164
  this._draggableList.dragStart(this._el.nativeElement);
176
165
  }
177
166
  }
178
- /**
179
- * Set event listeners for row
180
- */
181
167
  _initRowEvents() {
182
168
  Object.keys(this.rowEvents || {})
183
169
  .forEach((event) => {
@@ -192,14 +178,12 @@ export class FsRowComponent {
192
178
  this._eventListeners.push(listener);
193
179
  });
194
180
  }
195
- _initRowActionsUpdate() {
196
- if (this.row().actionsUpdated$) {
197
- this.row().actionsUpdated$
198
- .pipe(takeUntil(this._destroy$))
199
- .subscribe(() => {
200
- this.updateRowActions();
201
- });
202
- }
181
+ _initRowActions() {
182
+ merge(this.row().data$, this.row().actionsUpdated$)
183
+ .pipe(takeUntil(this._destroy$))
184
+ .subscribe(() => {
185
+ this.updateRowActions();
186
+ });
203
187
  }
204
188
  _getRowClasses(rowClass) {
205
189
  const classes = [];
@@ -298,7 +282,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImpor
298
282
  MatIcon,
299
283
  AsyncPipe,
300
284
  ], template: "<!-- Drag -->\n@if (leftDragDropEnabled) {\n <ng-container *ngTemplateOutlet=\"dragCell\"></ng-container>\n}\n<!-- Selection -->\n@if (selection && (selection.enabled$ | async)) {\n <td class=\"fs-list-col fs-list-col-selection\">\n @if (!isGroupFooterRow()) {\n <mat-checkbox\n (change)=\"selectRow($event)\"\n [disabled]=\"!selection.selectable(row(), rowIndex)\"\n [checked]=\"selected\"\n [indeterminate]=\"indeterminateSelected\">\n </mat-checkbox>\n }\n </td>\n}\n<!-- Content -->\n@for (column of columns; track trackByFn($index); let isFirst = $first) {\n @if ((isGroupRow() && !column.groupHeaderColspanned) || (isGroupFooterRow() && !column.groupFooterColspanned) || (!isGroupRow() && !isGroupFooterRow() && !column.cellColspanned)) {\n <td\n fs-cell\n [column]=\"column\"\n [row]=\"row()\"\n [rowIndex]=\"rowIndex\"\n [class]=\"(isGroupRow() && column.groupHeaderConfigs.classesString)\n || (isGroupFooterRow() && column.groupFooterConfigs.classesString)\n || (!isGroupFooterRow() && column.cellConfigs.classesString)\"\n [ngClass]=\"{ 'primary-col': isFirst }\"\n [attr.colspan]=\"(isGroupRow() && column.groupHeaderConfigs.colspan)\n || (isGroupFooterRow() && column.groupFooterConfigs.colspan)\n || column.cellConfigs.colspan\"\n [attr.width]=\"column.width\">\n </td>\n }\n}\n<!-- Drag -->\n@if (rightDragDropEnabled) {\n <ng-container *ngTemplateOutlet=\"dragCell\"></ng-container>\n}\n<!-- Row Actions -->\n@if (hasRowActions && !(reorderEnabled && reorderStrategy === ReorderStrategy.Manual)) {\n <td class=\"fs-list-col actions-col\">\n @if (!isGroupFooterRow()) {\n <fs-list-row-actions\n [row]=\"row()\"\n [index]=\"rowIndex\"\n [rowActions]=\"rowActions\"\n [menuRowActions]=\"menuRowActions\"\n [inlineRowActions]=\"inlineRowActions\"\n [restoreAction]=\"restoreAction\"\n [restoreMode]=\"restoreMode\"\n [rowRemoved]=\"rowRemoved\">\n </fs-list-row-actions>\n }\n </td>\n}\n<ng-template #dragCell>\n @if (dragCellVisible() && !isGroupFooterRow()) {\n <td\n class=\"fs-list-col drag-col\"\n [class.drag-disabled]=\"isDragDisabled\"\n (mousedown)=\"dragStart($event)\"\n (touchstart)=\"dragStart($event)\">\n <mat-icon>\n drag_handle\n </mat-icon>\n </td>\n } @else {\n <td class=\"fs-list-col drag-col\"></td>\n }\n</ng-template>", styles: [":host.drag-hidden{display:none}:host.draggable{opacity:.8;position:fixed;z-index:9999;box-shadow:2px 2px 2px #9e9e9ea6;border-radius:5px}:host.draggable td{border:none;background-color:#fff}:host.draggable-elem td{background-color:#c3c3c3}:host.fs-list-row-clickable{cursor:pointer}td.drag-col{width:1%!important;white-space:nowrap;text-align:center;cursor:grab}td.drag-col.drag-disabled{opacity:.4;cursor:no-drop}td.drag-col mat-icon{display:flex}td.fs-list-col-selection{padding:10px;width:1%!important}td.actions-col{width:1%;white-space:nowrap;overflow:hidden}td.actions-col .row-inline-action{margin-left:12px;display:inline-block}td.actions-col .row-inline-action:first-child{margin-left:0}td.actions-col .row-inline-action-icon,td.actions-col .row-inline-action-fab,td.actions-col .row-inline-action-mini-fab,td.actions-col .row-menu-action{width:35px;justify-content:center;align-items:center}td.left{text-align:left}td.center{text-align:center}td.right{text-align:right}\n"] }]
301
- }], ctorParameters: () => [], propDecorators: { role: [{
285
+ }], propDecorators: { role: [{
302
286
  type: HostBinding,
303
287
  args: ['attr.role']
304
288
  }], rowActionsRaw: [{
@@ -338,4 +322,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImpor
338
322
  type: HostBinding,
339
323
  args: ['class.multiple-selection']
340
324
  }] } });
341
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm93LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9ib2R5L3Jvdy9yb3cuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9jb21wb25lbnRzL2JvZHkvcm93L3Jvdy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3ZFLE9BQU8sRUFBaUIsdUJBQXVCLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxFQUFXLFVBQVUsRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBa0IsZUFBZSxFQUFxQixTQUFTLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFcFAsT0FBTyxFQUFFLFdBQVcsRUFBcUIsTUFBTSw0QkFBNEIsQ0FBQztBQUM1RSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFakQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFM0MsT0FBTyxFQUNMLGVBQWUsRUFDZixlQUFlLEdBQ2hCLE1BQU0scUNBQXFDLENBQUM7QUFDN0MsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDNUUsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sNkRBQTZELENBQUM7QUFHM0csT0FBTyxFQUFPLFVBQVUsRUFBRSxjQUFjLEVBQUUsZ0JBQWdCLEVBQUUsVUFBVSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDcEcsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBRTdELE9BQU8sRUFBRSxxQkFBcUIs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Q1gsZUFBZSw2RkFDZixPQUFPLG9GQUNQLHFCQUFxQiw0TEFDckIsT0FBTyxzSUFDUCxTQUFTOzsyRkFHQSxjQUFjO2tCQW5CMUIsU0FBUzsrQkFDRSxlQUFlLG1CQUdSLHVCQUF1QixDQUFDLE1BQU0sUUFDekM7d0JBQ0osU0FBUyxFQUFFLHVCQUF1QjtxQkFDbkMsY0FDVyxJQUFJLFdBQ1A7d0JBQ1AsZ0JBQWdCO3dCQUNoQixXQUFXO3dCQUNYLGVBQWU7d0JBQ2YsT0FBTzt3QkFDUCxxQkFBcUI7d0JBQ3JCLE9BQU87d0JBQ1AsU0FBUztxQkFDVjt3REFLTSxJQUFJO3NCQURWLFdBQVc7dUJBQUMsV0FBVztnQkFLUixhQUFhO3NCQUE1QixLQUFLO2dCQUNVLGVBQWU7c0JBQTlCLEtBQUs7Z0JBQ1UsYUFBYTtzQkFBNUIsS0FBSztnQkFDVSxTQUFTO3NCQUF4QixLQUFLO2dCQUNVLFFBQVE7c0JBQXZCLEtBQUs7Z0JBQ1UsV0FBVztzQkFBMUIsS0FBSztnQkFDVSxRQUFRO3NCQUF2QixLQUFLO2dCQUNVLE9BQU87c0JBQXRCLEtBQUs7Z0JBQ1UsU0FBUztzQkFBeEIsS0FBSztnQkFDVSxVQUFVO3NCQUF6QixLQUFLO2dCQUNVLGtCQUFrQjtzQkFBakMsS0FBSztnQkFJQyxjQUFjO3NCQUZwQixLQUFLOztzQkFDTCxXQUFXO3VCQUFDLGdCQUFnQjtnQkFHYixlQUFlO3NCQUE5QixLQUFLO2dCQUNVLGVBQWU7c0JBQTlCLEtBQUs7Z0JBQ1UsZUFBZTtzQkFBOUIsS0FBSztnQkFpRkssbUJBQW1CO3NCQUQ3QixXQUFXO3VCQUFDLDBCQUEwQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFzeW5jUGlwZSwgTmdDbGFzcywgTmdUZW1wbGF0ZU91dGxldCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBBZnRlclZpZXdJbml0LCBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgRG9DaGVjaywgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBIb3N0QmluZGluZywgSW5wdXQsIEtleVZhbHVlRGlmZmVyLCBLZXlWYWx1ZURpZmZlcnMsIE9uRGVzdHJveSwgT25Jbml0LCBSZW5kZXJlcjIsIGNvbXB1dGVkLCBpbmplY3QsIGlucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IE1hdENoZWNrYm94LCBNYXRDaGVja2JveENoYW5nZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NoZWNrYm94JztcbmltcG9ydCB7IE1hdEljb24gfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcblxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQge1xuICBSZW9yZGVyUG9zaXRpb24sXG4gIFJlb3JkZXJTdHJhdGVneSxcbn0gZnJvbSAnLi4vLi4vLi4vY2xhc3Nlcy9yZW9yZGVyLWNvbnRyb2xsZXInO1xuaW1wb3J0IHsgU2VsZWN0aW9uQ29udHJvbGxlciB9IGZyb20gJy4uLy4uLy4uL2NsYXNzZXMvc2VsZWN0aW9uLWNvbnRyb2xsZXInO1xuaW1wb3J0IHsgRnNMaXN0RHJhZ2dhYmxlTGlzdERpcmVjdGl2ZSB9IGZyb20gJy4uLy4uLy4uL2RpcmVjdGl2ZXMvZHJhZ2dhYmxlLWxpc3QvZHJhZ2dhYmxlLWxpc3QuZGlyZWN0aXZlJztcbmltcG9ydCB7IEZzTGlzdFJvd0NsYXNzT3B0aW9ucyB9IGZyb20gJy4uLy4uLy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgQ29sdW1uIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL2NvbHVtbi5tb2RlbCc7XG5pbXBvcnQgeyBSb3csIGlzQ2hpbGRSb3csIGlzQ2hpbGRUeXBlUm93LCBpc0dyb3VwRm9vdGVyUm93LCBpc0dyb3VwUm93IH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL3Jvdyc7XG5pbXBvcnQgeyBSb3dBY3Rpb24gfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvcm93LWFjdGlvbi5tb2RlbCc7XG5cbmltcG9ydCB7IEZzUm93QWN0aW9uc0NvbXBvbmVudCB9IGZyb20gJy4vYWN0aW9ucy9hY3Rpb25zLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBGc0NlbGxDb21wb25lbnQgfSBmcm9tICcuL2NlbGwvY2VsbC5jb21wb25lbnQnO1xuXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ1tmcy1saXN0LXJvd10nLFxuICB0ZW1wbGF0ZVVybDogJy4vcm93LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vcm93LmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBob3N0OiB7XG4gICAgJ1tjbGFzc10nOiAndGhpcy5yb3dDdXN0b21DbGFzcygpJyxcbiAgfSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIE5nVGVtcGxhdGVPdXRsZXQsXG4gICAgTWF0Q2hlY2tib3gsXG4gICAgRnNDZWxsQ29tcG9uZW50LFxuICAgIE5nQ2xhc3MsXG4gICAgRnNSb3dBY3Rpb25zQ29tcG9uZW50LFxuICAgIE1hdEljb24sXG4gICAgQXN5bmNQaXBlLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBGc1Jvd0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgRG9DaGVjaywgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcblxuICBASG9zdEJpbmRpbmcoJ2F0dHIucm9sZScpXG4gIHB1YmxpYyByb2xlID0gJ3Jvdyc7XG5cbiAgcHVibGljIHJvdyA9IGlucHV0PFJvdz4oKTtcblxuICBASW5wdXQoKSBwdWJsaWMgcm93QWN0aW9uc1JhdzogYW55W10gPSBbXTtcbiAgQElucHV0KCkgcHVibGljIGdyb3VwQWN0aW9uc1JhdzogYW55W10gPSBbXTtcbiAgQElucHV0KCkgcHVibGljIGhhc1Jvd0FjdGlvbnMgPSBmYWxzZTtcbiAgQElucHV0KCkgcHVibGljIHJvd0V2ZW50czogYW55ID0ge307XG4gIEBJbnB1dCgpIHB1YmxpYyByb3dDbGFzcztcbiAgQElucHV0KCkgcHVibGljIHJlc3RvcmVNb2RlID0gZmFsc2U7XG4gIEBJbnB1dCgpIHB1YmxpYyByb3dJbmRleDogbnVtYmVyO1xuICBASW5wdXQoKSBwdWJsaWMgY29sdW1uczogQ29sdW1uW107XG4gIEBJbnB1dCgpIHB1YmxpYyBzZWxlY3Rpb246IFNlbGVjdGlvbkNvbnRyb2xsZXI7XG4gIEBJbnB1dCgpIHB1YmxpYyByb3dSZW1vdmVkOiBFdmVudEVtaXR0ZXI8YW55PjtcbiAgQElucHV0KCkgcHVibGljIGFjdGl2ZUZpbHRlcnNDb3VudDogbnVtYmVyO1xuXG4gIEBJbnB1dCgpXG4gIEBIb3N0QmluZGluZygnY2xhc3MuZHJhZy1yb3cnKVxuICBwdWJsaWMgcmVvcmRlckVuYWJsZWQ6IGJvb2xlYW47XG5cbiAgQElucHV0KCkgcHVibGljIHJlb3JkZXJQb3NpdGlvbjogUmVvcmRlclBvc2l0aW9uIHwgbnVsbDtcbiAgQElucHV0KCkgcHVibGljIHJlb3JkZXJTdHJhdGVneTogUmVvcmRlclN0cmF0ZWd5IHwgbnVsbDtcbiAgQElucHV0KCkgcHVibGljIHJlb3JkZXJNdWx0aXBsZTogYm9vbGVhbjtcblxuICBwdWJsaWMgcmVhZG9ubHkgUmVvcmRlclBvc2l0aW9uID0gUmVvcmRlclBvc2l0aW9uO1xuICBwdWJsaWMgcmVhZG9ubHkgUmVvcmRlclN0cmF0ZWd5ID0gUmVvcmRlclN0cmF0ZWd5O1xuICBwdWJsaWMgcm93QWN0aW9uczogUm93QWN0aW9uW10gPSBbXTtcbiAgcHVibGljIG1lbnVSb3dBY3Rpb25zOiBSb3dBY3Rpb25bXSA9IFtdO1xuICBwdWJsaWMgaW5saW5lUm93QWN0aW9uczogUm93QWN0aW9uW10gPSBbXTtcbiAgcHVibGljIHJlc3RvcmVBY3Rpb246IFJvd0FjdGlvbjtcbiAgcHVibGljIHNlbGVjdGVkID0gZmFsc2U7XG4gIHB1YmxpYyBpbmRldGVybWluYXRlU2VsZWN0ZWQ6IGJvb2xlYW4gfCAnaW5kZXRlcm1pbmF0ZScgPSBmYWxzZTtcblxuICBwdWJsaWMgaXNHcm91cFJvdyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICByZXR1cm4gaXNHcm91cFJvdyh0aGlzLnJvdygpKTtcbiAgfSk7XG5cbiAgcHVibGljIGlzR3JvdXBGb290ZXJSb3cgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgcmV0dXJuIGlzR3JvdXBGb290ZXJSb3codGhpcy5yb3coKSk7XG4gIH0pO1xuXG4gIHB1YmxpYyBkcmFnQ2VsbFZpc2libGUgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgcmV0dXJuICFpc0dyb3VwUm93KHRoaXMucm93KCkpO1xuICB9KTtcblxuICBwdWJsaWMgcm93Q3VzdG9tQ2xhc3MgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgaWYgKCF0aGlzLnJvdygpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgbGV0IGNsYXNzZXMgPSBbJ2ZzLWxpc3Qtcm93J107XG5cbiAgICBpZiAodGhpcy5yb3dJbmRleCAlIDIgIT09IDApIHtcbiAgICAgIGNsYXNzZXMucHVzaCgnZnMtbGlzdC1yb3ctb2RkJyk7XG4gICAgfVxuICAgIGlmICh0aGlzLnJvd0luZGV4ICUgMiA9PT0gMCkge1xuICAgICAgY2xhc3Nlcy5wdXNoKCdmcy1saXN0LXJvdy1ldmVuJyk7XG4gICAgfVxuXG4gICAgaWYgKGlzR3JvdXBSb3codGhpcy5yb3coKSkpIHtcbiAgICAgIGNsYXNzZXMucHVzaCgnZnMtbGlzdC1yb3ctZ3JvdXAnKTtcbiAgICB9IGVsc2UgaWYgKGlzQ2hpbGRSb3codGhpcy5yb3coKSkpIHtcbiAgICAgIGNsYXNzZXMucHVzaCgnZnMtbGlzdC1yb3ctZ3JvdXAtY2hpbGQnKTtcbiAgICB9IGVsc2UgaWYgKGlzR3JvdXBGb290ZXJSb3codGhpcy5yb3coKSkpIHtcbiAgICAgIGNsYXNzZXMucHVzaCgnZnMtbGlzdC1yb3ctZ3JvdXAtZm9vdGVyJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNsYXNzZXMucHVzaCgnZnMtbGlzdC1yb3ctYm9keScpO1xuICAgIH1cblxuICAgIGlmKHRoaXMucm93RXZlbnRzPy5jbGljaykge1xuICAgICAgY2xhc3Nlcy5wdXNoKCdmcy1saXN0LXJvdy1jbGlja2FibGUnKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5yb3dDbGFzcykge1xuICAgICAgY2xhc3NlcyA9IFtcbiAgICAgICAgLi4uY2xhc3NlcyxcbiAgICAgICAgLi4udGhpcy5fZ2V0Um93Q2xhc3Nlcyh0aGlzLnJvd0NsYXNzKSxcbiAgICAgIF07XG4gICAgfVxuXG4gICAgcmV0dXJuIGNsYXNzZXMuam9pbignICcpO1xuICB9KTtcblxuICBwcml2YXRlIF9yb3dEaWZmZXI6IEtleVZhbHVlRGlmZmVyPGFueSwgYW55PjtcbiAgcHJpdmF0ZSBfZXZlbnRMaXN0ZW5lcnMgPSBbXTtcbiAgcHJpdmF0ZSBfZGVzdHJveSQgPSBuZXcgU3ViamVjdCgpO1xuICBwcml2YXRlIF9lbCA9IGluamVjdChFbGVtZW50UmVmKTtcbiAgcHJpdmF0ZSBfY2RSZWYgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xuICBwcml2YXRlIF9kaWZmZXJzID0gaW5qZWN0KEtleVZhbHVlRGlmZmVycyk7XG4gIHByaXZhdGUgX3JlbmRlcmVyID0gaW5qZWN0KFJlbmRlcmVyMik7XG4gIHByaXZhdGUgX2RyYWdnYWJsZUxpc3QgPSBpbmplY3QoRnNMaXN0RHJhZ2dhYmxlTGlzdERpcmVjdGl2ZSwgeyBvcHRpb25hbDogdHJ1ZSB9KTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBjb25zdCBfZGlmZmVycyA9IHRoaXMuX2RpZmZlcnM7XG5cbiAgICB0aGlzLl9yb3dEaWZmZXIgPSBfZGlmZmVycy5maW5kKHt9KS5jcmVhdGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaXNEcmFnRGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICF0aGlzLnNlbGVjdGVkICYmIHRoaXMucmVvcmRlck11bHRpcGxlICYmICEhdGhpcy5zZWxlY3Rpb24uc2VsZWN0ZWRSb3dzLnNpemU7XG4gIH1cblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLm11bHRpcGxlLXNlbGVjdGlvbicpXG4gIHB1YmxpYyBnZXQgaXNNdWx0aXBsZVNlbGVjdGlvbigpIHtcbiAgICBjb25zdCBtdWx0aXBsZSA9IHRoaXMucmVvcmRlck11bHRpcGxlO1xuXG4gICAgcmV0dXJuIG11bHRpcGxlICYmIHRoaXMuc2VsZWN0ZWQ7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGxlZnREcmFnRHJvcEVuYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMucmVvcmRlckVuYWJsZWRcbiAgICAgICYmIHRoaXMucmVvcmRlclBvc2l0aW9uID09PSBSZW9yZGVyUG9zaXRpb24uTGVmdFxuICAgICAgJiYgdGhpcy5hY3RpdmVGaWx0ZXJzQ291bnQgPT09IDA7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHJpZ2h0RHJhZ0Ryb3BFbmFibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnJlb3JkZXJFbmFibGVkXG4gICAgICAmJiB0aGlzLnJlb3JkZXJQb3NpdGlvbiA9PT0gUmVvcmRlclBvc2l0aW9uLlJpZ2h0XG4gICAgICAmJiB0aGlzLmFjdGl2ZUZpbHRlcnNDb3VudCA9PT0gMDtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLl9pbml0Um93RXZlbnRzKCk7XG5cbiAgICBpZiAodGhpcy5yb3coKSkge1xuICAgICAgdGhpcy5faW5pdFJvd0FjdGlvbnNVcGRhdGUoKTtcblxuICAgICAgaWYoaXNHcm91cFJvdyh0aGlzLnJvdygpKSkge1xuICAgICAgICBpZiAodGhpcy5yb3coKSAmJiB0aGlzLmdyb3VwQWN0aW9uc1Jhdykge1xuICAgICAgICAgIHRoaXMucm93QWN0aW9ucyA9IHRoaXMuZ3JvdXBBY3Rpb25zUmF3Lm1hcCgoYWN0aW9uKSA9PiBuZXcgUm93QWN0aW9uKGFjdGlvbikpO1xuXG4gICAgICAgICAgdGhpcy5fZmlsdGVyQWN0aW9uc0J5Q2F0ZWdvcmllcygpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKHRoaXMucm93QWN0aW9uc1Jhdykge1xuICAgICAgICB0aGlzLnJvd0FjdGlvbnMgPSB0aGlzLnJvd0FjdGlvbnNSYXcubWFwKChhY3Rpb24pID0+IG5ldyBSb3dBY3Rpb24oYWN0aW9uKSk7XG5cbiAgICAgICAgdGhpcy5fZmlsdGVyQWN0aW9uc0J5Q2F0ZWdvcmllcygpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBuZ0RvQ2hlY2soKSB7XG4gICAgaWYgKHRoaXMuX3Jvd0RpZmZlci5kaWZmKHRoaXMucm93KSkge1xuICAgICAgdGhpcy51cGRhdGVSb3dBY3Rpb25zKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLl9pbml0U2VsZWN0aW9uKCk7XG4gIH1cblxuICBwdWJsaWMgdXBkYXRlUm93QWN0aW9ucygpIHtcbiAgICBpZiAodGhpcy5yb3dBY3Rpb25zKSB7XG4gICAgICB0aGlzLnJvd0FjdGlvbnMuZm9yRWFjaCgoYWN0aW9uKSA9PiB7XG4gICAgICAgIGFjdGlvbi5jaGVja1Nob3dTdGF0dXModGhpcy5yb3coKS5kYXRhLCB0aGlzLnJvd0luZGV4KTtcbiAgICAgICAgYWN0aW9uLnVwZGF0ZUxpbmsodGhpcy5yb3coKS5kYXRhKTtcbiAgICAgIH0pO1xuICAgICAgdGhpcy5fZmlsdGVyQWN0aW9uc0J5Q2F0ZWdvcmllcygpO1xuICAgIH1cblxuICAgIHRoaXMuX2NkUmVmLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuX2V2ZW50TGlzdGVuZXJzLmZvckVhY2goKGxpc3RlbmVyKSA9PiB7XG4gICAgICBsaXN0ZW5lcigpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5fZGVzdHJveSQubmV4dChudWxsKTtcbiAgICB0aGlzLl9kZXN0cm95JC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNlbGVjdCByb3cgYnkgY2hlY2tib3hcbiAgICpcbiAgICogQHBhcmFtIGV2ZW50XG4gICAqL1xuICBwdWJsaWMgc2VsZWN0Um93KGV2ZW50OiBNYXRDaGVja2JveENoYW5nZSkge1xuICAgIHRoaXMuc2VsZWN0aW9uLnJvd1NlbGVjdGlvbkNoYW5nZSh0aGlzLnJvdygpLCBldmVudC5jaGVja2VkKTtcbiAgICB0aGlzLl9jZFJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUcmFjayBCeSBmb3IgaW1wcm92ZSBjaGFuZ2UgZGV0ZWN0aW9uXG4gICAqXG4gICAqIEBwYXJhbSBpbmRleFxuICAgKi9cbiAgcHVibGljIHRyYWNrQnlGbihpbmRleCkge1xuICAgIHJldHVybiBpbmRleDtcbiAgfVxuXG4gIHB1YmxpYyBkcmFnU3RhcnQoZXZlbnQpIHtcbiAgICBpZiAodGhpcy5yZW9yZGVyRW5hYmxlZCAmJiAhdGhpcy5pc0RyYWdEaXNhYmxlZCkge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuXG4gICAgICB0aGlzLl9kcmFnZ2FibGVMaXN0LmRyYWdTdGFydCh0aGlzLl9lbC5uYXRpdmVFbGVtZW50KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU2V0IGV2ZW50IGxpc3RlbmVycyBmb3Igcm93XG4gICAqL1xuICBwcml2YXRlIF9pbml0Um93RXZlbnRzKCkge1xuICAgIE9iamVjdC5rZXlzKHRoaXMucm93RXZlbnRzIHx8IHt9KVxuICAgICAgLmZvckVhY2goKGV2ZW50KSA9PiB7XG4gICAgICAgIGNvbnN0IGxpc3RlbmVyID0gdGhpcy5fcmVuZGVyZXJcbiAgICAgICAgICAubGlzdGVuKHRoaXMuX2VsLm5hdGl2ZUVsZW1lbnQsIGV2ZW50LCAoZXZ0KSA9PiB7XG4gICAgICAgICAgICB0aGlzLnJvd0V2ZW50c1tldmVudF0oe1xuICAgICAgICAgICAgICBldmVudDogZXZ0LFxuICAgICAgICAgICAgICByb3c6IHRoaXMucm93KCkuZGF0YSxcbiAgICAgICAgICAgICAgcm93SW5kZXg6IHRoaXMucm93SW5kZXgsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLl9ldmVudExpc3RlbmVycy5wdXNoKGxpc3RlbmVyKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW5pdFJvd0FjdGlvbnNVcGRhdGUoKSA6IHZvaWQge1xuICAgIGlmKHRoaXMucm93KCkuYWN0aW9uc1VwZGF0ZWQkKSB7XG4gICAgICB0aGlzLnJvdygpLmFjdGlvbnNVcGRhdGVkJFxuICAgICAgICAucGlwZShcbiAgICAgICAgICB0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpLFxuICAgICAgICApXG4gICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgIHRoaXMudXBkYXRlUm93QWN0aW9ucygpO1xuICAgICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9nZXRSb3dDbGFzc2VzKHJvd0NsYXNzKTogc3RyaW5nW10ge1xuICAgIGNvbnN0IGNsYXNzZXMgPSBbXTtcbiAgICBjb25zdCBjdXJyZW50Um93ID0gdGhpcy5yb3coKTtcbiAgICBjb25zdCBvcHRpb25zOiBGc0xpc3RSb3dDbGFzc09wdGlvbnMgPSB7XG4gICAgICBpbmRleDogdGhpcy5yb3dJbmRleCxcbiAgICAgIHR5cGU6IGN1cnJlbnRSb3cudHlwZSxcbiAgICB9O1xuXG4gICAgaWYgKGlzR3JvdXBSb3coY3VycmVudFJvdykpIHtcbiAgICAgIG9wdGlvbnMuZ3JvdXBJbmRleCA9IGN1cnJlbnRSb3cuaW5kZXg7XG4gICAgfSBlbHNlIGlmIChpc0NoaWxkVHlwZVJvdyhjdXJyZW50Um93KSkge1xuICAgICAgb3B0aW9ucy5ncm91cEluZGV4ID0gY3VycmVudFJvdy5wYXJlbnQuaW5kZXg7XG4gICAgfVxuXG4gICAgY29uc3QgcmVzdWx0Q2xhc3MgPSByb3dDbGFzcyh0aGlzLnJvdygpLmRhdGEsIG9wdGlvbnMpO1xuICAgIGlmKHJlc3VsdENsYXNzKSB7XG4gICAgICBpZiAodHlwZW9mIHJlc3VsdENsYXNzID09PSAnc3RyaW5nJykge1xuICAgICAgICBjbGFzc2VzLnB1c2gocmVzdWx0Q2xhc3MpO1xuICAgICAgfSBlbHNlIGlmICh0eXBlb2YgcmVzdWx0Q2xhc3MgPT09ICdvYmplY3QnKSB7XG4gICAgICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhyZXN1bHRDbGFzcyk7XG4gICAgICAgIGZvciAoY29uc3QgayBvZiBrZXlzKSB7XG4gICAgICAgICAgaWYgKHJlc3VsdENsYXNzW2tdID09PSB0cnVlKSB7XG4gICAgICAgICAgICBjbGFzc2VzLnB1c2goayk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGNsYXNzZXM7XG4gIH1cblxuICAvKipcbiAgICogU3Vic2NyaWJlIHRvIHNlbGVjdGlvbiBjaGFuZ2UgZXZlbnRzXG4gICAqL1xuICBwcml2YXRlIF9pbml0U2VsZWN0aW9uKCkge1xuICAgIGlmICh0aGlzLnNlbGVjdGlvbiAmJiB0aGlzLnJvdygpKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkID0gdGhpcy5zZWxlY3Rpb24uaXNSb3dTZWxlY3RlZCh0aGlzLnJvdygpLmRhdGEpO1xuXG4gICAgICB0aGlzLnNlbGVjdGlvbi5zZWxlY3Rpb25DaGFuZ2UkXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIC8vIC8vIFdvdWxkIGxpa2UgdG8gcmVzcG9uZCBvbmx5IHdoZW4gY2hlY2tib3ggb24gdG9wIGlzIGNoYW5nZWRcbiAgICAgICAgICAvLyAvLyBvciB3YXMgY2xpY2tlZCBcIlNlbGVjdCBBbGxcIiBpbiBzZWxlY3Rpb24gZGlhbG9nXG4gICAgICAgICAgLy8gZmlsdGVyKCh7dHlwZX0pID0+IHtcbiAgICAgICAgICAvLyAgIHJldHVybiB0eXBlID09PSBTZWxlY3Rpb25DaGFuZ2VUeXBlLkFsbFZpc2libGVTZWxlY3Rpb25DaGFuZ2VcbiAgICAgICAgICAvLyAgICAgfHwgdHlwZSA9PT0gU2VsZWN0aW9uQ2hhbmdlVHlwZS5TZWxlY3RlZEFsbDtcbiAgICAgICAgICAvLyB9KSxcbiAgICAgICAgICB0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpLFxuICAgICAgICApXG4gICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgIGNvbnN0IGN1cnJlbnRSb3cgPSB0aGlzLnJvdygpO1xuXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZCA9IGN1cnJlbnRSb3cgJiYgdGhpcy5zZWxlY3Rpb24uaXNSb3dTZWxlY3RlZChjdXJyZW50Um93LmRhdGEpO1xuXG4gICAgICAgICAgaWYgKGlzR3JvdXBSb3coY3VycmVudFJvdykpIHtcbiAgICAgICAgICAgIGNvbnN0IGdyb3VwU2VsZWN0aW9uID0gdGhpcy5zZWxlY3Rpb24uaXNHcm91cFNlbGVjdGVkKGN1cnJlbnRSb3cpO1xuXG4gICAgICAgICAgICBpZiAoZ3JvdXBTZWxlY3Rpb24gPT09ICdpbmRldGVybWluYXRlJykge1xuICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgdGhpcy5pbmRldGVybWluYXRlU2VsZWN0ZWQgPSB0cnVlO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZCA9IGdyb3VwU2VsZWN0aW9uO1xuICAgICAgICAgICAgICB0aGlzLmluZGV0ZXJtaW5hdGVTZWxlY3RlZCA9IGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIHRoaXMuX2NkUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9maWx0ZXJBY3Rpb25zQnlDYXRlZ29yaWVzKCkge1xuICAgIHRoaXMubWVudVJvd0FjdGlvbnMgPSBbXTtcbiAgICB0aGlzLmlubGluZVJvd0FjdGlvbnMgPSBbXTtcbiAgICB0aGlzLnJlc3RvcmVBY3Rpb24gPSBudWxsO1xuXG4gICAgdGhpcy5yb3dBY3Rpb25zLmZvckVhY2goKGFjdGlvbikgPT4ge1xuXG4gICAgICBpZiAoIWFjdGlvbi5pc1Nob3duKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYgKGFjdGlvbi5tZW51ICYmICFhY3Rpb24ucmVzdG9yZSkge1xuICAgICAgICB0aGlzLm1lbnVSb3dBY3Rpb25zLnB1c2goYWN0aW9uKTtcbiAgICAgIH0gZWxzZSBpZiAoIWFjdGlvbi5tZW51ICYmICFhY3Rpb24ucmVzdG9yZSkge1xuICAgICAgICB0aGlzLmlubGluZVJvd0FjdGlvbnMucHVzaChhY3Rpb24pO1xuICAgICAgfSBlbHNlIGlmIChhY3Rpb24ucmVzdG9yZSkge1xuICAgICAgICB0aGlzLnJlc3RvcmVBY3Rpb24gPSBhY3Rpb247XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn1cbiIsIjwhLS0gRHJhZyAtLT5cbkBpZiAobGVmdERyYWdEcm9wRW5hYmxlZCkge1xuICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZHJhZ0NlbGxcIj48L25nLWNvbnRhaW5lcj5cbn1cbjwhLS0gU2VsZWN0aW9uIC0tPlxuQGlmIChzZWxlY3Rpb24gJiYgKHNlbGVjdGlvbi5lbmFibGVkJCB8IGFzeW5jKSkge1xuICA8dGQgY2xhc3M9XCJmcy1saXN0LWNvbCBmcy1saXN0LWNvbC1zZWxlY3Rpb25cIj5cbiAgICBAaWYgKCFpc0dyb3VwRm9vdGVyUm93KCkpIHtcbiAgICAgIDxtYXQtY2hlY2tib3hcbiAgICAgICAgKGNoYW5nZSk9XCJzZWxlY3RSb3coJGV2ZW50KVwiXG4gICAgICAgIFtkaXNhYmxlZF09XCIhc2VsZWN0aW9uLnNlbGVjdGFibGUocm93KCksIHJvd0luZGV4KVwiXG4gICAgICAgIFtjaGVja2VkXT1cInNlbGVjdGVkXCJcbiAgICAgICAgW2luZGV0ZXJtaW5hdGVdPVwiaW5kZXRlcm1pbmF0ZVNlbGVjdGVkXCI+XG4gICAgICA8L21hdC1jaGVja2JveD5cbiAgICB9XG4gIDwvdGQ+XG59XG48IS0tIENvbnRlbnQgLS0+XG5AZm9yIChjb2x1bW4gb2YgY29sdW1uczsgdHJhY2sgdHJhY2tCeUZuKCRpbmRleCk7IGxldCBpc0ZpcnN0ID0gJGZpcnN0KSB7XG4gIEBpZiAoKGlzR3JvdXBSb3coKSAmJiAhY29sdW1uLmdyb3VwSGVhZGVyQ29sc3Bhbm5lZCkgfHwgKGlzR3JvdXBGb290ZXJSb3coKSAmJiAhY29sdW1uLmdyb3VwRm9vdGVyQ29sc3Bhbm5lZCkgfHwgKCFpc0dyb3VwUm93KCkgJiYgIWlzR3JvdXBGb290ZXJSb3coKSAmJiAhY29sdW1uLmNlbGxDb2xzcGFubmVkKSkge1xuICAgIDx0ZFxuICAgICAgZnMtY2VsbFxuICAgICAgW2NvbHVtbl09XCJjb2x1bW5cIlxuICAgICAgW3Jvd109XCJyb3coKVwiXG4gICAgICBbcm93SW5kZXhdPVwicm93SW5kZXhcIlxuICAgICAgW2NsYXNzXT1cIihpc0dyb3VwUm93KCkgJiYgY29sdW1uLmdyb3VwSGVhZGVyQ29uZmlncy5jbGFzc2VzU3RyaW5nKVxuICAgICAgICB8fCAoaXNHcm91cEZvb3RlclJvdygpICYmIGNvbHVtbi5ncm91cEZvb3RlckNvbmZpZ3MuY2xhc3Nlc1N0cmluZylcbiAgICAgICAgfHwgKCFpc0dyb3VwRm9vdGVyUm93KCkgJiYgY29sdW1uLmNlbGxDb25maWdzLmNsYXNzZXNTdHJpbmcpXCJcbiAgICAgIFtuZ0NsYXNzXT1cInsgJ3ByaW1hcnktY29sJzogaXNGaXJzdCB9XCJcbiAgICAgIFthdHRyLmNvbHNwYW5dPVwiKGlzR3JvdXBSb3coKSAmJiBjb2x1bW4uZ3JvdXBIZWFkZXJDb25maWdzLmNvbHNwYW4pXG4gICAgICAgIHx8IChpc0dyb3VwRm9vdGVyUm93KCkgJiYgY29sdW1uLmdyb3VwRm9vdGVyQ29uZmlncy5jb2xzcGFuKVxuICAgICAgICB8fCBjb2x1bW4uY2VsbENvbmZpZ3MuY29sc3BhblwiXG4gICAgICBbYXR0ci53aWR0aF09XCJjb2x1bW4ud2lkdGhcIj5cbiAgICA8L3RkPlxuICB9XG59XG48IS0tIERyYWcgLS0+XG5AaWYgKHJpZ2h0RHJhZ0Ryb3BFbmFibGVkKSB7XG4gIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJkcmFnQ2VsbFwiPjwvbmctY29udGFpbmVyPlxufVxuPCEtLSBSb3cgQWN0aW9ucyAtLT5cbkBpZiAoaGFzUm93QWN0aW9ucyAmJiAhKHJlb3JkZXJFbmFibGVkICYmIHJlb3JkZXJTdHJhdGVneSA9PT0gUmVvcmRlclN0cmF0ZWd5Lk1hbnVhbCkpIHtcbiAgPHRkIGNsYXNzPVwiZnMtbGlzdC1jb2wgYWN0aW9ucy1jb2xcIj5cbiAgICBAaWYgKCFpc0dyb3VwRm9vdGVyUm93KCkpIHtcbiAgICAgIDxmcy1saXN0LXJvdy1hY3Rpb25zXG4gICAgICAgIFtyb3ddPVwicm93KClcIlxuICAgICAgICBbaW5kZXhdPVwicm93SW5kZXhcIlxuICAgICAgICBbcm93QWN0aW9uc109XCJyb3dBY3Rpb25zXCJcbiAgICAgICAgW21lbnVSb3dBY3Rpb25zXT1cIm1lbnVSb3dBY3Rpb25zXCJcbiAgICAgICAgW2lubGluZVJvd0FjdGlvbnNdPVwiaW5saW5lUm93QWN0aW9uc1wiXG4gICAgICAgIFtyZXN0b3JlQWN0aW9uXT1cInJlc3RvcmVBY3Rpb25cIlxuICAgICAgICBbcmVzdG9yZU1vZGVdPVwicmVzdG9yZU1vZGVcIlxuICAgICAgICBbcm93UmVtb3ZlZF09XCJyb3dSZW1vdmVkXCI+XG4gICAgICA8L2ZzLWxpc3Qtcm93LWFjdGlvbnM+XG4gICAgfVxuICA8L3RkPlxufVxuPG5nLXRlbXBsYXRlICNkcmFnQ2VsbD5cbiAgQGlmIChkcmFnQ2VsbFZpc2libGUoKSAmJiAhaXNHcm91cEZvb3RlclJvdygpKSB7XG4gICAgPHRkXG4gICAgICAgIGNsYXNzPVwiZnMtbGlzdC1jb2wgZHJhZy1jb2xcIlxuICAgICAgICBbY2xhc3MuZHJhZy1kaXNhYmxlZF09XCJpc0RyYWdEaXNhYmxlZFwiXG4gICAgICAgIChtb3VzZWRvd24pPVwiZHJhZ1N0YXJ0KCRldmVudClcIlxuICAgICAgICAodG91Y2hzdGFydCk9XCJkcmFnU3RhcnQoJGV2ZW50KVwiPlxuICAgICAgPG1hdC1pY29uPlxuICAgICAgICBkcmFnX2hhbmRsZVxuICAgICAgPC9tYXQtaWNvbj5cbiAgICA8L3RkPlxuICB9IEBlbHNlIHtcbiAgICA8dGQgY2xhc3M9XCJmcy1saXN0LWNvbCBkcmFnLWNvbFwiPjwvdGQ+XG4gIH1cbjwvbmctdGVtcGxhdGU+Il19
325
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm93LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9ib2R5L3Jvdy9yb3cuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9jb21wb25lbnRzL2JvZHkvcm93L3Jvdy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3ZFLE9BQU8sRUFDVSx1QkFBdUIsRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQ3BFLFVBQVUsRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFDekIsU0FBUyxFQUM1QixRQUFRLEVBQUUsTUFBTSxFQUFFLEtBQUssR0FDeEIsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLFdBQVcsRUFBcUIsTUFBTSw0QkFBNEIsQ0FBQztBQUM1RSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFakQsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdEMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTNDLE9BQU8sRUFDTCxlQUFlLEVBQ2YsZUFBZSxHQUNoQixNQUFNLHFDQUFxQyxDQUFDO0FBQzdDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQzVFLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLDZEQUE2RCxDQUFDO0FBRzNHLE9BQU8sRUFBTyxVQUFVLEVBQUUsY0FBYyxFQUFFLGdCQUFnQixFQUFFLFVBQVUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3BHLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUU3RCxPQUFPLEVBQUUscUJBQXFC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QUFLO2dCQUNVLFNBQVM7c0JBQXhCLEtBQUs7Z0JBQ1UsUUFBUTtzQkFBdkIsS0FBSztnQkFDVSxXQUFXO3NCQUExQixLQUFLO2dCQUNVLFFBQVE7c0JBQXZCLEtBQUs7Z0JBQ1UsT0FBTztzQkFBdEIsS0FBSztnQkFDVSxTQUFTO3NCQUF4QixLQUFLO2dCQUNVLFVBQVU7c0JBQXpCLEtBQUs7Z0JBQ1Usa0JBQWtCO3NCQUFqQyxLQUFLO2dCQUlDLGNBQWM7c0JBRnBCLEtBQUs7O3NCQUNMLFdBQVc7dUJBQUMsZ0JBQWdCO2dCQUdiLGVBQWU7c0JBQTlCLEtBQUs7Z0JBQ1UsZUFBZTtzQkFBOUIsS0FBSztnQkFDVSxlQUFlO3NCQUE5QixLQUFLO2dCQXlFSyxtQkFBbUI7c0JBRDdCLFdBQVc7dUJBQUMsMEJBQTBCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXN5bmNQaXBlLCBOZ0NsYXNzLCBOZ1RlbXBsYXRlT3V0bGV0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIEhvc3RCaW5kaW5nLCBJbnB1dCxcbiAgT25EZXN0cm95LCBPbkluaXQsIFJlbmRlcmVyMixcbiAgY29tcHV0ZWQsIGluamVjdCwgaW5wdXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBNYXRDaGVja2JveCwgTWF0Q2hlY2tib3hDaGFuZ2UgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jaGVja2JveCc7XG5pbXBvcnQgeyBNYXRJY29uIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XG5cbmltcG9ydCB7IFN1YmplY3QsIG1lcmdlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7XG4gIFJlb3JkZXJQb3NpdGlvbixcbiAgUmVvcmRlclN0cmF0ZWd5LFxufSBmcm9tICcuLi8uLi8uLi9jbGFzc2VzL3Jlb3JkZXItY29udHJvbGxlcic7XG5pbXBvcnQgeyBTZWxlY3Rpb25Db250cm9sbGVyIH0gZnJvbSAnLi4vLi4vLi4vY2xhc3Nlcy9zZWxlY3Rpb24tY29udHJvbGxlcic7XG5pbXBvcnQgeyBGc0xpc3REcmFnZ2FibGVMaXN0RGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vLi4vZGlyZWN0aXZlcy9kcmFnZ2FibGUtbGlzdC9kcmFnZ2FibGUtbGlzdC5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgRnNMaXN0Um93Q2xhc3NPcHRpb25zIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBDb2x1bW4gfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvY29sdW1uLm1vZGVsJztcbmltcG9ydCB7IFJvdywgaXNDaGlsZFJvdywgaXNDaGlsZFR5cGVSb3csIGlzR3JvdXBGb290ZXJSb3csIGlzR3JvdXBSb3cgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvcm93JztcbmltcG9ydCB7IFJvd0FjdGlvbiB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9yb3ctYWN0aW9uLm1vZGVsJztcblxuaW1wb3J0IHsgRnNSb3dBY3Rpb25zQ29tcG9uZW50IH0gZnJvbSAnLi9hY3Rpb25zL2FjdGlvbnMuY29tcG9uZW50JztcbmltcG9ydCB7IEZzQ2VsbENvbXBvbmVudCB9IGZyb20gJy4vY2VsbC9jZWxsLmNvbXBvbmVudCc7XG5cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnW2ZzLWxpc3Qtcm93XScsXG4gIHRlbXBsYXRlVXJsOiAnLi9yb3cuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9yb3cuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGhvc3Q6IHtcbiAgICAnW2NsYXNzXSc6ICd0aGlzLnJvd0N1c3RvbUNsYXNzKCknLFxuICB9LFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgTmdUZW1wbGF0ZU91dGxldCxcbiAgICBNYXRDaGVja2JveCxcbiAgICBGc0NlbGxDb21wb25lbnQsXG4gICAgTmdDbGFzcyxcbiAgICBGc1Jvd0FjdGlvbnNDb21wb25lbnQsXG4gICAgTWF0SWNvbixcbiAgICBBc3luY1BpcGUsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIEZzUm93Q29tcG9uZW50IFxuaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG5cbiAgQEhvc3RCaW5kaW5nKCdhdHRyLnJvbGUnKVxuICBwdWJsaWMgcm9sZSA9ICdyb3cnO1xuXG4gIHB1YmxpYyByb3cgPSBpbnB1dDxSb3c+KCk7XG5cbiAgQElucHV0KCkgcHVibGljIHJvd0FjdGlvbnNSYXc6IGFueVtdID0gW107XG4gIEBJbnB1dCgpIHB1YmxpYyBncm91cEFjdGlvbnNSYXc6IGFueVtdID0gW107XG4gIEBJbnB1dCgpIHB1YmxpYyBoYXNSb3dBY3Rpb25zID0gZmFsc2U7XG4gIEBJbnB1dCgpIHB1YmxpYyByb3dFdmVudHM6IGFueSA9IHt9O1xuICBASW5wdXQoKSBwdWJsaWMgcm93Q2xhc3M7XG4gIEBJbnB1dCgpIHB1YmxpYyByZXN0b3JlTW9kZSA9IGZhbHNlO1xuICBASW5wdXQoKSBwdWJsaWMgcm93SW5kZXg6IG51bWJlcjtcbiAgQElucHV0KCkgcHVibGljIGNvbHVtbnM6IENvbHVtbltdO1xuICBASW5wdXQoKSBwdWJsaWMgc2VsZWN0aW9uOiBTZWxlY3Rpb25Db250cm9sbGVyO1xuICBASW5wdXQoKSBwdWJsaWMgcm93UmVtb3ZlZDogRXZlbnRFbWl0dGVyPGFueT47XG4gIEBJbnB1dCgpIHB1YmxpYyBhY3RpdmVGaWx0ZXJzQ291bnQ6IG51bWJlcjtcblxuICBASW5wdXQoKVxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmRyYWctcm93JylcbiAgcHVibGljIHJlb3JkZXJFbmFibGVkOiBib29sZWFuO1xuXG4gIEBJbnB1dCgpIHB1YmxpYyByZW9yZGVyUG9zaXRpb246IFJlb3JkZXJQb3NpdGlvbiB8IG51bGw7XG4gIEBJbnB1dCgpIHB1YmxpYyByZW9yZGVyU3RyYXRlZ3k6IFJlb3JkZXJTdHJhdGVneSB8IG51bGw7XG4gIEBJbnB1dCgpIHB1YmxpYyByZW9yZGVyTXVsdGlwbGU6IGJvb2xlYW47XG5cbiAgcHVibGljIHJlYWRvbmx5IFJlb3JkZXJQb3NpdGlvbiA9IFJlb3JkZXJQb3NpdGlvbjtcbiAgcHVibGljIHJlYWRvbmx5IFJlb3JkZXJTdHJhdGVneSA9IFJlb3JkZXJTdHJhdGVneTtcbiAgcHVibGljIHJvd0FjdGlvbnM6IFJvd0FjdGlvbltdID0gW107XG4gIHB1YmxpYyBtZW51Um93QWN0aW9uczogUm93QWN0aW9uW10gPSBbXTtcbiAgcHVibGljIGlubGluZVJvd0FjdGlvbnM6IFJvd0FjdGlvbltdID0gW107XG4gIHB1YmxpYyByZXN0b3JlQWN0aW9uOiBSb3dBY3Rpb247XG4gIHB1YmxpYyBzZWxlY3RlZCA9IGZhbHNlO1xuICBwdWJsaWMgaW5kZXRlcm1pbmF0ZVNlbGVjdGVkOiBib29sZWFuIHwgJ2luZGV0ZXJtaW5hdGUnID0gZmFsc2U7XG5cbiAgcHVibGljIGlzR3JvdXBSb3cgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgcmV0dXJuIGlzR3JvdXBSb3codGhpcy5yb3coKSk7XG4gIH0pO1xuXG4gIHB1YmxpYyBpc0dyb3VwRm9vdGVyUm93ID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIHJldHVybiBpc0dyb3VwRm9vdGVyUm93KHRoaXMucm93KCkpO1xuICB9KTtcblxuICBwdWJsaWMgZHJhZ0NlbGxWaXNpYmxlID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIHJldHVybiAhaXNHcm91cFJvdyh0aGlzLnJvdygpKTtcbiAgfSk7XG5cbiAgcHVibGljIHJvd0N1c3RvbUNsYXNzID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGlmICghdGhpcy5yb3coKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGxldCBjbGFzc2VzID0gWydmcy1saXN0LXJvdyddO1xuXG4gICAgaWYgKHRoaXMucm93SW5kZXggJSAyICE9PSAwKSB7XG4gICAgICBjbGFzc2VzLnB1c2goJ2ZzLWxpc3Qtcm93LW9kZCcpO1xuICAgIH1cbiAgICBpZiAodGhpcy5yb3dJbmRleCAlIDIgPT09IDApIHtcbiAgICAgIGNsYXNzZXMucHVzaCgnZnMtbGlzdC1yb3ctZXZlbicpO1xuICAgIH1cblxuICAgIGlmIChpc0dyb3VwUm93KHRoaXMucm93KCkpKSB7XG4gICAgICBjbGFzc2VzLnB1c2goJ2ZzLWxpc3Qtcm93LWdyb3VwJyk7XG4gICAgfSBlbHNlIGlmIChpc0NoaWxkUm93KHRoaXMucm93KCkpKSB7XG4gICAgICBjbGFzc2VzLnB1c2goJ2ZzLWxpc3Qtcm93LWdyb3VwLWNoaWxkJyk7XG4gICAgfSBlbHNlIGlmIChpc0dyb3VwRm9vdGVyUm93KHRoaXMucm93KCkpKSB7XG4gICAgICBjbGFzc2VzLnB1c2goJ2ZzLWxpc3Qtcm93LWdyb3VwLWZvb3RlcicpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjbGFzc2VzLnB1c2goJ2ZzLWxpc3Qtcm93LWJvZHknKTtcbiAgICB9XG5cbiAgICBpZih0aGlzLnJvd0V2ZW50cz8uY2xpY2spIHtcbiAgICAgIGNsYXNzZXMucHVzaCgnZnMtbGlzdC1yb3ctY2xpY2thYmxlJyk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMucm93Q2xhc3MpIHtcbiAgICAgIGNsYXNzZXMgPSBbXG4gICAgICAgIC4uLmNsYXNzZXMsXG4gICAgICAgIC4uLnRoaXMuX2dldFJvd0NsYXNzZXModGhpcy5yb3dDbGFzcyksXG4gICAgICBdO1xuICAgIH1cblxuICAgIHJldHVybiBjbGFzc2VzLmpvaW4oJyAnKTtcbiAgfSk7XG5cbiAgcHJpdmF0ZSBfZXZlbnRMaXN0ZW5lcnMgPSBbXTtcbiAgcHJpdmF0ZSBfZGVzdHJveSQgPSBuZXcgU3ViamVjdCgpO1xuICBwcml2YXRlIF9lbCA9IGluamVjdChFbGVtZW50UmVmKTtcbiAgcHJpdmF0ZSBfY2RSZWYgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xuICBwcml2YXRlIF9yZW5kZXJlciA9IGluamVjdChSZW5kZXJlcjIpO1xuICBwcml2YXRlIF9kcmFnZ2FibGVMaXN0ID0gaW5qZWN0KEZzTGlzdERyYWdnYWJsZUxpc3REaXJlY3RpdmUsIHsgb3B0aW9uYWw6IHRydWUgfSk7XG5cbiAgcHVibGljIGdldCBpc0RyYWdEaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gIXRoaXMuc2VsZWN0ZWQgJiYgdGhpcy5yZW9yZGVyTXVsdGlwbGUgJiYgISF0aGlzLnNlbGVjdGlvbi5zZWxlY3RlZFJvd3Muc2l6ZTtcbiAgfVxuXG4gIEBIb3N0QmluZGluZygnY2xhc3MubXVsdGlwbGUtc2VsZWN0aW9uJylcbiAgcHVibGljIGdldCBpc011bHRpcGxlU2VsZWN0aW9uKCkge1xuICAgIGNvbnN0IG11bHRpcGxlID0gdGhpcy5yZW9yZGVyTXVsdGlwbGU7XG5cbiAgICByZXR1cm4gbXVsdGlwbGUgJiYgdGhpcy5zZWxlY3RlZDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgbGVmdERyYWdEcm9wRW5hYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5yZW9yZGVyRW5hYmxlZFxuICAgICAgJiYgdGhpcy5yZW9yZGVyUG9zaXRpb24gPT09IFJlb3JkZXJQb3NpdGlvbi5MZWZ0XG4gICAgICAmJiB0aGlzLmFjdGl2ZUZpbHRlcnNDb3VudCA9PT0gMDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgcmlnaHREcmFnRHJvcEVuYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMucmVvcmRlckVuYWJsZWRcbiAgICAgICYmIHRoaXMucmVvcmRlclBvc2l0aW9uID09PSBSZW9yZGVyUG9zaXRpb24uUmlnaHRcbiAgICAgICYmIHRoaXMuYWN0aXZlRmlsdGVyc0NvdW50ID09PSAwO1xuICB9XG5cbiAgcHVibGljIG5nT25Jbml0KCkge1xuICAgIGlmICh0aGlzLnJvdygpKSB7XG4gICAgICB0aGlzLl9pbml0Um93QWN0aW9ucygpO1xuICAgICAgdGhpcy5faW5pdFJvd0V2ZW50cygpO1xuXG4gICAgICBpZihpc0dyb3VwUm93KHRoaXMucm93KCkpKSB7XG4gICAgICAgIGlmICh0aGlzLnJvdygpICYmIHRoaXMuZ3JvdXBBY3Rpb25zUmF3KSB7XG4gICAgICAgICAgdGhpcy5yb3dBY3Rpb25zID0gdGhpcy5ncm91cEFjdGlvbnNSYXcubWFwKChhY3Rpb24pID0+IG5ldyBSb3dBY3Rpb24oYWN0aW9uKSk7XG5cbiAgICAgICAgICB0aGlzLl9maWx0ZXJBY3Rpb25zQnlDYXRlZ29yaWVzKCk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAodGhpcy5yb3dBY3Rpb25zUmF3KSB7XG4gICAgICAgIHRoaXMucm93QWN0aW9ucyA9IHRoaXMucm93QWN0aW9uc1Jhdy5tYXAoKGFjdGlvbikgPT4gbmV3IFJvd0FjdGlvbihhY3Rpb24pKTtcblxuICAgICAgICB0aGlzLl9maWx0ZXJBY3Rpb25zQnlDYXRlZ29yaWVzKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLl9pbml0U2VsZWN0aW9uKCk7XG4gIH1cblxuICBwdWJsaWMgdXBkYXRlUm93QWN0aW9ucygpIHtcbiAgICBpZiAodGhpcy5yb3dBY3Rpb25zKSB7XG4gICAgICB0aGlzLnJvd0FjdGlvbnMuZm9yRWFjaCgoYWN0aW9uKSA9PiB7XG4gICAgICAgIGFjdGlvbi5jaGVja1Nob3dTdGF0dXModGhpcy5yb3coKS5kYXRhLCB0aGlzLnJvd0luZGV4KTtcbiAgICAgICAgYWN0aW9uLnVwZGF0ZUxpbmsodGhpcy5yb3coKS5kYXRhKTtcbiAgICAgIH0pO1xuICAgICAgdGhpcy5fZmlsdGVyQWN0aW9uc0J5Q2F0ZWdvcmllcygpO1xuICAgIH1cblxuICAgIHRoaXMuX2NkUmVmLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuX2V2ZW50TGlzdGVuZXJzLmZvckVhY2goKGxpc3RlbmVyKSA9PiB7XG4gICAgICBsaXN0ZW5lcigpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5fZGVzdHJveSQubmV4dChudWxsKTtcbiAgICB0aGlzLl9kZXN0cm95JC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNlbGVjdCByb3cgYnkgY2hlY2tib3hcbiAgICpcbiAgICogQHBhcmFtIGV2ZW50XG4gICAqL1xuICBwdWJsaWMgc2VsZWN0Um93KGV2ZW50OiBNYXRDaGVja2JveENoYW5nZSkge1xuICAgIHRoaXMuc2VsZWN0aW9uLnJvd1NlbGVjdGlvbkNoYW5nZSh0aGlzLnJvdygpLCBldmVudC5jaGVja2VkKTtcbiAgICB0aGlzLl9jZFJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUcmFjayBCeSBmb3IgaW1wcm92ZSBjaGFuZ2UgZGV0ZWN0aW9uXG4gICAqXG4gICAqIEBwYXJhbSBpbmRleFxuICAgKi9cbiAgcHVibGljIHRyYWNrQnlGbihpbmRleCkge1xuICAgIHJldHVybiBpbmRleDtcbiAgfVxuXG4gIHB1YmxpYyBkcmFnU3RhcnQoZXZlbnQpIHtcbiAgICBpZiAodGhpcy5yZW9yZGVyRW5hYmxlZCAmJiAhdGhpcy5pc0RyYWdEaXNhYmxlZCkge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuXG4gICAgICB0aGlzLl9kcmFnZ2FibGVMaXN0LmRyYWdTdGFydCh0aGlzLl9lbC5uYXRpdmVFbGVtZW50KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9pbml0Um93RXZlbnRzKCkge1xuICAgIE9iamVjdC5rZXlzKHRoaXMucm93RXZlbnRzIHx8IHt9KVxuICAgICAgLmZvckVhY2goKGV2ZW50KSA9PiB7XG4gICAgICAgIGNvbnN0IGxpc3RlbmVyID0gdGhpcy5fcmVuZGVyZXJcbiAgICAgICAgICAubGlzdGVuKHRoaXMuX2VsLm5hdGl2ZUVsZW1lbnQsIGV2ZW50LCAoZXZ0KSA9PiB7XG4gICAgICAgICAgICB0aGlzLnJvd0V2ZW50c1tldmVudF0oe1xuICAgICAgICAgICAgICBldmVudDogZXZ0LFxuICAgICAgICAgICAgICByb3c6IHRoaXMucm93KCkuZGF0YSxcbiAgICAgICAgICAgICAgcm93SW5kZXg6IHRoaXMucm93SW5kZXgsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLl9ldmVudExpc3RlbmVycy5wdXNoKGxpc3RlbmVyKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW5pdFJvd0FjdGlvbnMoKSB7XG4gICAgbWVyZ2UodGhpcy5yb3coKS5kYXRhJCwgdGhpcy5yb3coKS5hY3Rpb25zVXBkYXRlZCQpXG4gICAgICAucGlwZShcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLnVwZGF0ZVJvd0FjdGlvbnMoKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0Um93Q2xhc3Nlcyhyb3dDbGFzcyk6IHN0cmluZ1tdIHtcbiAgICBjb25zdCBjbGFzc2VzID0gW107XG4gICAgY29uc3QgY3VycmVudFJvdyA9IHRoaXMucm93KCk7XG4gICAgY29uc3Qgb3B0aW9uczogRnNMaXN0Um93Q2xhc3NPcHRpb25zID0ge1xuICAgICAgaW5kZXg6IHRoaXMucm93SW5kZXgsXG4gICAgICB0eXBlOiBjdXJyZW50Um93LnR5cGUsXG4gICAgfTtcblxuICAgIGlmIChpc0dyb3VwUm93KGN1cnJlbnRSb3cpKSB7XG4gICAgICBvcHRpb25zLmdyb3VwSW5kZXggPSBjdXJyZW50Um93LmluZGV4O1xuICAgIH0gZWxzZSBpZiAoaXNDaGlsZFR5cGVSb3coY3VycmVudFJvdykpIHtcbiAgICAgIG9wdGlvbnMuZ3JvdXBJbmRleCA9IGN1cnJlbnRSb3cucGFyZW50LmluZGV4O1xuICAgIH1cblxuICAgIGNvbnN0IHJlc3VsdENsYXNzID0gcm93Q2xhc3ModGhpcy5yb3coKS5kYXRhLCBvcHRpb25zKTtcbiAgICBpZihyZXN1bHRDbGFzcykge1xuICAgICAgaWYgKHR5cGVvZiByZXN1bHRDbGFzcyA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgY2xhc3Nlcy5wdXNoKHJlc3VsdENsYXNzKTtcbiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHJlc3VsdENsYXNzID09PSAnb2JqZWN0Jykge1xuICAgICAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMocmVzdWx0Q2xhc3MpO1xuICAgICAgICBmb3IgKGNvbnN0IGsgb2Yga2V5cykge1xuICAgICAgICAgIGlmIChyZXN1bHRDbGFzc1trXSA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgY2xhc3Nlcy5wdXNoKGspO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBjbGFzc2VzO1xuICB9XG5cbiAgLyoqXG4gICAqIFN1YnNjcmliZSB0byBzZWxlY3Rpb24gY2hhbmdlIGV2ZW50c1xuICAgKi9cbiAgcHJpdmF0ZSBfaW5pdFNlbGVjdGlvbigpIHtcbiAgICBpZiAodGhpcy5zZWxlY3Rpb24gJiYgdGhpcy5yb3coKSkge1xuICAgICAgdGhpcy5zZWxlY3RlZCA9IHRoaXMuc2VsZWN0aW9uLmlzUm93U2VsZWN0ZWQodGhpcy5yb3coKS5kYXRhKTtcblxuICAgICAgdGhpcy5zZWxlY3Rpb24uc2VsZWN0aW9uQ2hhbmdlJFxuICAgICAgICAucGlwZShcbiAgICAgICAgICAvLyAvLyBXb3VsZCBsaWtlIHRvIHJlc3BvbmQgb25seSB3aGVuIGNoZWNrYm94IG9uIHRvcCBpcyBjaGFuZ2VkXG4gICAgICAgICAgLy8gLy8gb3Igd2FzIGNsaWNrZWQgXCJTZWxlY3QgQWxsXCIgaW4gc2VsZWN0aW9uIGRpYWxvZ1xuICAgICAgICAgIC8vIGZpbHRlcigoe3R5cGV9KSA9PiB7XG4gICAgICAgICAgLy8gICByZXR1cm4gdHlwZSA9PT0gU2VsZWN0aW9uQ2hhbmdlVHlwZS5BbGxWaXNpYmxlU2VsZWN0aW9uQ2hhbmdlXG4gICAgICAgICAgLy8gICAgIHx8IHR5cGUgPT09IFNlbGVjdGlvbkNoYW5nZVR5cGUuU2VsZWN0ZWRBbGw7XG4gICAgICAgICAgLy8gfSksXG4gICAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSxcbiAgICAgICAgKVxuICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICBjb25zdCBjdXJyZW50Um93ID0gdGhpcy5yb3coKTtcblxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWQgPSBjdXJyZW50Um93ICYmIHRoaXMuc2VsZWN0aW9uLmlzUm93U2VsZWN0ZWQoY3VycmVudFJvdy5kYXRhKTtcblxuICAgICAgICAgIGlmIChpc0dyb3VwUm93KGN1cnJlbnRSb3cpKSB7XG4gICAgICAgICAgICBjb25zdCBncm91cFNlbGVjdGlvbiA9IHRoaXMuc2VsZWN0aW9uLmlzR3JvdXBTZWxlY3RlZChjdXJyZW50Um93KTtcblxuICAgICAgICAgICAgaWYgKGdyb3VwU2VsZWN0aW9uID09PSAnaW5kZXRlcm1pbmF0ZScpIHtcbiAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZCA9IHRydWU7XG4gICAgICAgICAgICAgIHRoaXMuaW5kZXRlcm1pbmF0ZVNlbGVjdGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWQgPSBncm91cFNlbGVjdGlvbjtcbiAgICAgICAgICAgICAgdGhpcy5pbmRldGVybWluYXRlU2VsZWN0ZWQgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICB0aGlzLl9jZFJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfZmlsdGVyQWN0aW9uc0J5Q2F0ZWdvcmllcygpIHtcbiAgICB0aGlzLm1lbnVSb3dBY3Rpb25zID0gW107XG4gICAgdGhpcy5pbmxpbmVSb3dBY3Rpb25zID0gW107XG4gICAgdGhpcy5yZXN0b3JlQWN0aW9uID0gbnVsbDtcblxuICAgIHRoaXMucm93QWN0aW9ucy5mb3JFYWNoKChhY3Rpb24pID0+IHtcblxuICAgICAgaWYgKCFhY3Rpb24uaXNTaG93bikge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmIChhY3Rpb24ubWVudSAmJiAhYWN0aW9uLnJlc3RvcmUpIHtcbiAgICAgICAgdGhpcy5tZW51Um93QWN0aW9ucy5wdXNoKGFjdGlvbik7XG4gICAgICB9IGVsc2UgaWYgKCFhY3Rpb24ubWVudSAmJiAhYWN0aW9uLnJlc3RvcmUpIHtcbiAgICAgICAgdGhpcy5pbmxpbmVSb3dBY3Rpb25zLnB1c2goYWN0aW9uKTtcbiAgICAgIH0gZWxzZSBpZiAoYWN0aW9uLnJlc3RvcmUpIHtcbiAgICAgICAgdGhpcy5yZXN0b3JlQWN0aW9uID0gYWN0aW9uO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59XG4iLCI8IS0tIERyYWcgLS0+XG5AaWYgKGxlZnREcmFnRHJvcEVuYWJsZWQpIHtcbiAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImRyYWdDZWxsXCI+PC9uZy1jb250YWluZXI+XG59XG48IS0tIFNlbGVjdGlvbiAtLT5cbkBpZiAoc2VsZWN0aW9uICYmIChzZWxlY3Rpb24uZW5hYmxlZCQgfCBhc3luYykpIHtcbiAgPHRkIGNsYXNzPVwiZnMtbGlzdC1jb2wgZnMtbGlzdC1jb2wtc2VsZWN0aW9uXCI+XG4gICAgQGlmICghaXNHcm91cEZvb3RlclJvdygpKSB7XG4gICAgICA8bWF0LWNoZWNrYm94XG4gICAgICAgIChjaGFuZ2UpPVwic2VsZWN0Um93KCRldmVudClcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiIXNlbGVjdGlvbi5zZWxlY3RhYmxlKHJvdygpLCByb3dJbmRleClcIlxuICAgICAgICBbY2hlY2tlZF09XCJzZWxlY3RlZFwiXG4gICAgICAgIFtpbmRldGVybWluYXRlXT1cImluZGV0ZXJtaW5hdGVTZWxlY3RlZFwiPlxuICAgICAgPC9tYXQtY2hlY2tib3g+XG4gICAgfVxuICA8L3RkPlxufVxuPCEtLSBDb250ZW50IC0tPlxuQGZvciAoY29sdW1uIG9mIGNvbHVtbnM7IHRyYWNrIHRyYWNrQnlGbigkaW5kZXgpOyBsZXQgaXNGaXJzdCA9ICRmaXJzdCkge1xuICBAaWYgKChpc0dyb3VwUm93KCkgJiYgIWNvbHVtbi5ncm91cEhlYWRlckNvbHNwYW5uZWQpIHx8IChpc0dyb3VwRm9vdGVyUm93KCkgJiYgIWNvbHVtbi5ncm91cEZvb3RlckNvbHNwYW5uZWQpIHx8ICghaXNHcm91cFJvdygpICYmICFpc0dyb3VwRm9vdGVyUm93KCkgJiYgIWNvbHVtbi5jZWxsQ29sc3Bhbm5lZCkpIHtcbiAgICA8dGRcbiAgICAgIGZzLWNlbGxcbiAgICAgIFtjb2x1bW5dPVwiY29sdW1uXCJcbiAgICAgIFtyb3ddPVwicm93KClcIlxuICAgICAgW3Jvd0luZGV4XT1cInJvd0luZGV4XCJcbiAgICAgIFtjbGFzc109XCIoaXNHcm91cFJvdygpICYmIGNvbHVtbi5ncm91cEhlYWRlckNvbmZpZ3MuY2xhc3Nlc1N0cmluZylcbiAgICAgICAgfHwgKGlzR3JvdXBGb290ZXJSb3coKSAmJiBjb2x1bW4uZ3JvdXBGb290ZXJDb25maWdzLmNsYXNzZXNTdHJpbmcpXG4gICAgICAgIHx8ICghaXNHcm91cEZvb3RlclJvdygpICYmIGNvbHVtbi5jZWxsQ29uZmlncy5jbGFzc2VzU3RyaW5nKVwiXG4gICAgICBbbmdDbGFzc109XCJ7ICdwcmltYXJ5LWNvbCc6IGlzRmlyc3QgfVwiXG4gICAgICBbYXR0ci5jb2xzcGFuXT1cIihpc0dyb3VwUm93KCkgJiYgY29sdW1uLmdyb3VwSGVhZGVyQ29uZmlncy5jb2xzcGFuKVxuICAgICAgICB8fCAoaXNHcm91cEZvb3RlclJvdygpICYmIGNvbHVtbi5ncm91cEZvb3RlckNvbmZpZ3MuY29sc3BhbilcbiAgICAgICAgfHwgY29sdW1uLmNlbGxDb25maWdzLmNvbHNwYW5cIlxuICAgICAgW2F0dHIud2lkdGhdPVwiY29sdW1uLndpZHRoXCI+XG4gICAgPC90ZD5cbiAgfVxufVxuPCEtLSBEcmFnIC0tPlxuQGlmIChyaWdodERyYWdEcm9wRW5hYmxlZCkge1xuICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZHJhZ0NlbGxcIj48L25nLWNvbnRhaW5lcj5cbn1cbjwhLS0gUm93IEFjdGlvbnMgLS0+XG5AaWYgKGhhc1Jvd0FjdGlvbnMgJiYgIShyZW9yZGVyRW5hYmxlZCAmJiByZW9yZGVyU3RyYXRlZ3kgPT09IFJlb3JkZXJTdHJhdGVneS5NYW51YWwpKSB7XG4gIDx0ZCBjbGFzcz1cImZzLWxpc3QtY29sIGFjdGlvbnMtY29sXCI+XG4gICAgQGlmICghaXNHcm91cEZvb3RlclJvdygpKSB7XG4gICAgICA8ZnMtbGlzdC1yb3ctYWN0aW9uc1xuICAgICAgICBbcm93XT1cInJvdygpXCJcbiAgICAgICAgW2luZGV4XT1cInJvd0luZGV4XCJcbiAgICAgICAgW3Jvd0FjdGlvbnNdPVwicm93QWN0aW9uc1wiXG4gICAgICAgIFttZW51Um93QWN0aW9uc109XCJtZW51Um93QWN0aW9uc1wiXG4gICAgICAgIFtpbmxpbmVSb3dBY3Rpb25zXT1cImlubGluZVJvd0FjdGlvbnNcIlxuICAgICAgICBbcmVzdG9yZUFjdGlvbl09XCJyZXN0b3JlQWN0aW9uXCJcbiAgICAgICAgW3Jlc3RvcmVNb2RlXT1cInJlc3RvcmVNb2RlXCJcbiAgICAgICAgW3Jvd1JlbW92ZWRdPVwicm93UmVtb3ZlZFwiPlxuICAgICAgPC9mcy1saXN0LXJvdy1hY3Rpb25zPlxuICAgIH1cbiAgPC90ZD5cbn1cbjxuZy10ZW1wbGF0ZSAjZHJhZ0NlbGw+XG4gIEBpZiAoZHJhZ0NlbGxWaXNpYmxlKCkgJiYgIWlzR3JvdXBGb290ZXJSb3coKSkge1xuICAgIDx0ZFxuICAgICAgICBjbGFzcz1cImZzLWxpc3QtY29sIGRyYWctY29sXCJcbiAgICAgICAgW2NsYXNzLmRyYWctZGlzYWJsZWRdPVwiaXNEcmFnRGlzYWJsZWRcIlxuICAgICAgICAobW91c2Vkb3duKT1cImRyYWdTdGFydCgkZXZlbnQpXCJcbiAgICAgICAgKHRvdWNoc3RhcnQpPVwiZHJhZ1N0YXJ0KCRldmVudClcIj5cbiAgICAgIDxtYXQtaWNvbj5cbiAgICAgICAgZHJhZ19oYW5kbGVcbiAgICAgIDwvbWF0LWljb24+XG4gICAgPC90ZD5cbiAgfSBAZWxzZSB7XG4gICAgPHRkIGNsYXNzPVwiZnMtbGlzdC1jb2wgZHJhZy1jb2xcIj48L3RkPlxuICB9XG48L25nLXRlbXBsYXRlPiJdfQ==
@@ -1,34 +1,22 @@
1
- import { ChangeDetectionStrategy, ChangeDetectorRef, Component, KeyValueDiffers, inject } from '@angular/core';
2
- import { FsCellComponent } from '../../body/row/cell/cell.component';
3
- import { NgTemplateOutlet, AsyncPipe } from '@angular/common';
1
+ import { AsyncPipe, NgTemplateOutlet } from '@angular/common';
2
+ import { ChangeDetectionStrategy, Component } from '@angular/core';
4
3
  import { MatIcon } from '@angular/material/icon';
4
+ import { FsCellComponent } from '../../body/row/cell/cell.component';
5
5
  import * as i0 from "@angular/core";
6
6
  export class FsHeadCellComponent extends FsCellComponent {
7
- _cdRef = inject(ChangeDetectorRef);
8
- _differs = inject(KeyValueDiffers);
9
7
  cellContext = {};
10
- _columnDiffer;
11
- constructor() {
12
- super();
13
- this._columnDiffer = this._differs.find({}).create();
14
- }
15
- ngDoCheck() {
16
- if (this._columnDiffer.diff(this.column)) {
17
- this._cdRef.markForCheck();
18
- }
19
- }
20
8
  initCellContext() {
21
9
  this.cellContext.value = this.column.title;
22
10
  }
23
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: FsHeadCellComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
24
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.7", type: FsHeadCellComponent, isStandalone: true, selector: "[fs-head-cell]", usesInheritance: true, ngImport: i0, template: "<div class=\"wrap\">\n <span class=\"title\">\n @if (!column.headerTemplate) {\n {{ column.title }}\n }\n @if (column.headerTemplate) {\n <ng-template\n [ngTemplateOutlet]=\"column.headerTemplate\"\n [ngTemplateOutletContext]=\"cellContext\">\n </ng-template>\n }\n </span>\n @if (column.ordered) {\n @switch (column.sortingDirection$ | async) {\n @case ('asc') {\n <mat-icon>\n arrow_downward\n </mat-icon>\n }\n @case ('desc') {\n <mat-icon>\n arrow_upward\n </mat-icon>\n }\n }\n } @else if (column.sortable) {\n <mat-icon>\n unfold_more\n </mat-icon>\n }\n</div>", styles: [".wrap{display:inline-flex;align-items:center}.wrap mat-icon{font-size:13px;display:block;height:13px;width:13px;margin-left:4px}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
11
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: FsHeadCellComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
12
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.7", type: FsHeadCellComponent, isStandalone: true, selector: "[fs-head-cell]", usesInheritance: true, ngImport: i0, template: "<div class=\"wrap\">\n <span class=\"title\">\n @if (!column.headerTemplate) {\n {{ column.title }}\n }\n @if (column.headerTemplate) {\n <ng-template\n [ngTemplateOutlet]=\"column.headerTemplate\"\n [ngTemplateOutletContext]=\"cellContext\">\n </ng-template>\n }\n </span>\n @if (column.ordered$ | async) {\n @switch (column.sortingDirection$ | async) {\n @case ('asc') {\n <mat-icon>\n arrow_downward\n </mat-icon>\n }\n @case ('desc') {\n <mat-icon>\n arrow_upward\n </mat-icon>\n }\n }\n } @else if (column.sortable) {\n <mat-icon>\n unfold_more\n </mat-icon>\n }\n</div>", styles: [".wrap{display:inline-flex;align-items:center}.wrap mat-icon{font-size:13px;display:block;height:13px;width:13px;margin-left:4px}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
25
13
  }
26
14
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: FsHeadCellComponent, decorators: [{
27
15
  type: Component,
28
16
  args: [{ selector: '[fs-head-cell]', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
29
17
  NgTemplateOutlet,
30
18
  MatIcon,
31
- AsyncPipe
32
- ], template: "<div class=\"wrap\">\n <span class=\"title\">\n @if (!column.headerTemplate) {\n {{ column.title }}\n }\n @if (column.headerTemplate) {\n <ng-template\n [ngTemplateOutlet]=\"column.headerTemplate\"\n [ngTemplateOutletContext]=\"cellContext\">\n </ng-template>\n }\n </span>\n @if (column.ordered) {\n @switch (column.sortingDirection$ | async) {\n @case ('asc') {\n <mat-icon>\n arrow_downward\n </mat-icon>\n }\n @case ('desc') {\n <mat-icon>\n arrow_upward\n </mat-icon>\n }\n }\n } @else if (column.sortable) {\n <mat-icon>\n unfold_more\n </mat-icon>\n }\n</div>", styles: [".wrap{display:inline-flex;align-items:center}.wrap mat-icon{font-size:13px;display:block;height:13px;width:13px;margin-left:4px}\n"] }]
33
- }], ctorParameters: () => [] });
34
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVhZC1jZWxsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9oZWFkL2hlYWQtY2VsbC9oZWFkLWNlbGwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9jb21wb25lbnRzL2hlYWQvaGVhZC1jZWxsL2hlYWQtY2VsbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxFQUEyQixlQUFlLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXhJLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUNyRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsU0FBUyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDOUQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHdCQUF3QixDQUFDOztBQWVqRCxNQUFNLE9BQU8sbUJBQW9CLFNBQVEsZUFBZTtJQUM5QyxNQUFNLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDbkMsUUFBUSxHQUFHLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUdwQyxXQUFXLEdBQVEsRUFBRSxDQUFDO0lBRXJCLGFBQWEsQ0FBOEI7SUFFbkQ7UUFDRSxLQUFLLEVBQUUsQ0FBQztRQUNSLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDdkQsQ0FBQztJQUVNLFNBQVM7UUFDZCxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO1lBQ3pDLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDN0IsQ0FBQztJQUNILENBQUM7SUFFTSxlQUFlO1FBQ3BCLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDO0lBQzdDLENBQUM7dUdBdEJVLG1CQUFtQjsyRkFBbkIsbUJBQW1CLGlHQ25CaEMseXJCQThCTSw0TERoQkYsZ0JBQWdCLG9KQUNoQixPQUFPLHNJQUNQLFNBQVM7OzJGQUdBLG1CQUFtQjtrQkFaL0IsU0FBUzsrQkFDSSxnQkFBZ0IsbUJBR1QsdUJBQXVCLENBQUMsTUFBTSxjQUNuQyxJQUFJLFdBQ1A7d0JBQ1QsZ0JBQWdCO3dCQUNoQixPQUFPO3dCQUNQLFNBQVM7cUJBQ1oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgRG9DaGVjaywgS2V5VmFsdWVEaWZmZXIsIEtleVZhbHVlRGlmZmVycywgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5pbXBvcnQgeyBGc0NlbGxDb21wb25lbnQgfSBmcm9tICcuLi8uLi9ib2R5L3Jvdy9jZWxsL2NlbGwuY29tcG9uZW50JztcbmltcG9ydCB7IE5nVGVtcGxhdGVPdXRsZXQsIEFzeW5jUGlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBNYXRJY29uIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XHJcblxyXG5cclxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdbZnMtaGVhZC1jZWxsXScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2hlYWQtY2VsbC5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vaGVhZC1jZWxsLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbXG4gICAgTmdUZW1wbGF0ZU91dGxldCxcbiAgICBNYXRJY29uLFxuICAgIEFzeW5jUGlwZVxuXSxcbn0pXHJcbmV4cG9ydCBjbGFzcyBGc0hlYWRDZWxsQ29tcG9uZW50IGV4dGVuZHMgRnNDZWxsQ29tcG9uZW50IGltcGxlbWVudHMgRG9DaGVjayB7XG4gIHByaXZhdGUgX2NkUmVmID0gaW5qZWN0KENoYW5nZURldGVjdG9yUmVmKTtcbiAgcHJpdmF0ZSBfZGlmZmVycyA9IGluamVjdChLZXlWYWx1ZURpZmZlcnMpO1xuXHJcblxyXG4gIHB1YmxpYyBjZWxsQ29udGV4dDogYW55ID0ge307XHJcblxyXG4gIHByaXZhdGUgX2NvbHVtbkRpZmZlcjogS2V5VmFsdWVEaWZmZXI8c3RyaW5nLCBhbnk+O1xyXG5cclxuICBjb25zdHJ1Y3RvcigpIHtcclxuICAgIHN1cGVyKCk7XHJcbiAgICB0aGlzLl9jb2x1bW5EaWZmZXIgPSB0aGlzLl9kaWZmZXJzLmZpbmQoe30pLmNyZWF0ZSgpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG5nRG9DaGVjaygpIHtcclxuICAgIGlmICh0aGlzLl9jb2x1bW5EaWZmZXIuZGlmZih0aGlzLmNvbHVtbikpIHtcclxuICAgICAgdGhpcy5fY2RSZWYubWFya0ZvckNoZWNrKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaW5pdENlbGxDb250ZXh0KCkge1xyXG4gICAgdGhpcy5jZWxsQ29udGV4dC52YWx1ZSA9IHRoaXMuY29sdW1uLnRpdGxlO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwid3JhcFwiPlxuICA8c3BhbiBjbGFzcz1cInRpdGxlXCI+XG4gICAgQGlmICghY29sdW1uLmhlYWRlclRlbXBsYXRlKSB7XG4gICAgICB7eyBjb2x1bW4udGl0bGUgfX1cbiAgICB9XG4gICAgQGlmIChjb2x1bW4uaGVhZGVyVGVtcGxhdGUpIHtcbiAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJjb2x1bW4uaGVhZGVyVGVtcGxhdGVcIlxuICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwiY2VsbENvbnRleHRcIj5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgfVxuICA8L3NwYW4+XG4gIEBpZiAoY29sdW1uLm9yZGVyZWQpIHtcbiAgICBAc3dpdGNoIChjb2x1bW4uc29ydGluZ0RpcmVjdGlvbiQgfCBhc3luYykge1xuICAgICAgQGNhc2UgKCdhc2MnKSB7XG4gICAgICAgIDxtYXQtaWNvbj5cbiAgICAgICAgICBhcnJvd19kb3dud2FyZFxuICAgICAgICA8L21hdC1pY29uPlxuICAgICAgfVxuICAgICAgQGNhc2UgKCdkZXNjJykge1xuICAgICAgICA8bWF0LWljb24+XG4gICAgICAgICAgYXJyb3dfdXB3YXJkXG4gICAgICAgIDwvbWF0LWljb24+XG4gICAgICB9XG4gICAgfVxuICB9IEBlbHNlIGlmIChjb2x1bW4uc29ydGFibGUpIHtcbiAgICA8bWF0LWljb24+XG4gICAgICB1bmZvbGRfbW9yZVxuICAgIDwvbWF0LWljb24+XG4gIH1cbjwvZGl2PiJdfQ==
19
+ AsyncPipe,
20
+ ], template: "<div class=\"wrap\">\n <span class=\"title\">\n @if (!column.headerTemplate) {\n {{ column.title }}\n }\n @if (column.headerTemplate) {\n <ng-template\n [ngTemplateOutlet]=\"column.headerTemplate\"\n [ngTemplateOutletContext]=\"cellContext\">\n </ng-template>\n }\n </span>\n @if (column.ordered$ | async) {\n @switch (column.sortingDirection$ | async) {\n @case ('asc') {\n <mat-icon>\n arrow_downward\n </mat-icon>\n }\n @case ('desc') {\n <mat-icon>\n arrow_upward\n </mat-icon>\n }\n }\n } @else if (column.sortable) {\n <mat-icon>\n unfold_more\n </mat-icon>\n }\n</div>", styles: [".wrap{display:inline-flex;align-items:center}.wrap mat-icon{font-size:13px;display:block;height:13px;width:13px;margin-left:4px}\n"] }]
21
+ }] });
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVhZC1jZWxsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9oZWFkL2hlYWQtY2VsbC9oZWFkLWNlbGwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9jb21wb25lbnRzL2hlYWQvaGVhZC1jZWxsL2hlYWQtY2VsbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDOUQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVuRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFakQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9DQUFvQyxDQUFDOztBQWVyRSxNQUFNLE9BQU8sbUJBQW9CLFNBQVEsZUFBZTtJQUUvQyxXQUFXLEdBQVEsRUFBRSxDQUFDO0lBRXRCLGVBQWU7UUFDcEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUM7SUFDN0MsQ0FBQzt1R0FOVSxtQkFBbUI7MkZBQW5CLG1CQUFtQixpR0NwQmhDLGtzQkE4Qk0sNExEZkYsZ0JBQWdCLG9KQUNoQixPQUFPLHNJQUNQLFNBQVM7OzJGQUdBLG1CQUFtQjtrQkFaL0IsU0FBUzsrQkFDRSxnQkFBZ0IsbUJBR1QsdUJBQXVCLENBQUMsTUFBTSxjQUNuQyxJQUFJLFdBQ1A7d0JBQ1AsZ0JBQWdCO3dCQUNoQixPQUFPO3dCQUNQLFNBQVM7cUJBQ1YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBc3luY1BpcGUsIE5nVGVtcGxhdGVPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5pbXBvcnQgeyBNYXRJY29uIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XHJcblxyXG5pbXBvcnQgeyBGc0NlbGxDb21wb25lbnQgfSBmcm9tICcuLi8uLi9ib2R5L3Jvdy9jZWxsL2NlbGwuY29tcG9uZW50JztcclxuXHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ1tmcy1oZWFkLWNlbGxdJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vaGVhZC1jZWxsLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9oZWFkLWNlbGwuY29tcG9uZW50LnNjc3MnXSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIE5nVGVtcGxhdGVPdXRsZXQsXHJcbiAgICBNYXRJY29uLFxyXG4gICAgQXN5bmNQaXBlLFxyXG4gIF0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBGc0hlYWRDZWxsQ29tcG9uZW50IGV4dGVuZHMgRnNDZWxsQ29tcG9uZW50IHtcclxuXHJcbiAgcHVibGljIGNlbGxDb250ZXh0OiBhbnkgPSB7fTtcclxuXHJcbiAgcHVibGljIGluaXRDZWxsQ29udGV4dCgpIHtcclxuICAgIHRoaXMuY2VsbENvbnRleHQudmFsdWUgPSB0aGlzLmNvbHVtbi50aXRsZTtcclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cIndyYXBcIj5cbiAgPHNwYW4gY2xhc3M9XCJ0aXRsZVwiPlxuICAgIEBpZiAoIWNvbHVtbi5oZWFkZXJUZW1wbGF0ZSkge1xuICAgICAge3sgY29sdW1uLnRpdGxlIH19XG4gICAgfVxuICAgIEBpZiAoY29sdW1uLmhlYWRlclRlbXBsYXRlKSB7XG4gICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiY29sdW1uLmhlYWRlclRlbXBsYXRlXCJcbiAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cImNlbGxDb250ZXh0XCI+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIH1cbiAgPC9zcGFuPlxuICBAaWYgKGNvbHVtbi5vcmRlcmVkJCB8IGFzeW5jKSB7XG4gICAgQHN3aXRjaCAoY29sdW1uLnNvcnRpbmdEaXJlY3Rpb24kIHwgYXN5bmMpIHtcbiAgICAgIEBjYXNlICgnYXNjJykge1xuICAgICAgICA8bWF0LWljb24+XG4gICAgICAgICAgYXJyb3dfZG93bndhcmRcbiAgICAgICAgPC9tYXQtaWNvbj5cbiAgICAgIH1cbiAgICAgIEBjYXNlICgnZGVzYycpIHtcbiAgICAgICAgPG1hdC1pY29uPlxuICAgICAgICAgIGFycm93X3Vwd2FyZFxuICAgICAgICA8L21hdC1pY29uPlxuICAgICAgfVxuICAgIH1cbiAgfSBAZWxzZSBpZiAoY29sdW1uLnNvcnRhYmxlKSB7XG4gICAgPG1hdC1pY29uPlxuICAgICAgdW5mb2xkX21vcmVcbiAgICA8L21hdC1pY29uPlxuICB9XG48L2Rpdj4iXX0=