@firestitch/list 12.13.2 → 12.13.3

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 (155) hide show
  1. package/app/classes/actions-controller.d.ts +20 -20
  2. package/app/classes/columns-controller.d.ts +71 -71
  3. package/app/classes/data-controller.d.ts +91 -91
  4. package/app/classes/external-params-controller.d.ts +31 -31
  5. package/app/classes/index.d.ts +2 -2
  6. package/app/classes/list-controller.d.ts +177 -177
  7. package/app/classes/pagination-controller.d.ts +189 -189
  8. package/app/classes/persistance-controller.d.ts +10 -10
  9. package/app/classes/reorder-controller.d.ts +68 -68
  10. package/app/classes/selection-controller.d.ts +146 -146
  11. package/app/classes/sorting-controller.d.ts +64 -64
  12. package/app/components/body/body.component.d.ts +29 -29
  13. package/app/components/body/row/actions/actions.component.d.ts +34 -34
  14. package/app/components/body/row/cell/cell.component.d.ts +23 -23
  15. package/app/components/body/row/inline-action/inline-action.component.d.ts +16 -16
  16. package/app/components/body/row/menu-action/menu-action.component.d.ts +14 -14
  17. package/app/components/body/row/row.component.d.ts +80 -80
  18. package/app/components/customize-cols/customize-cols.component.d.ts +17 -17
  19. package/app/components/footer/footer-row/footer-cell/footer-cell.component.d.ts +7 -7
  20. package/app/components/footer/footer-row/footer-row.component.d.ts +14 -14
  21. package/app/components/footer/footer.component.d.ts +16 -16
  22. package/app/components/head/head-cell/head-cell.component.d.ts +14 -14
  23. package/app/components/head/head.component.d.ts +47 -47
  24. package/app/components/list/list.component.d.ts +121 -121
  25. package/app/components/loader/loader.component.d.ts +14 -14
  26. package/app/components/manage-saved-filters/manage-saved-filters.component.d.ts +13 -13
  27. package/app/components/pagination/pagination.component.d.ts +14 -14
  28. package/app/components/saved-filters/saved-filters.component.d.ts +15 -15
  29. package/app/components/status/status.component.d.ts +21 -21
  30. package/app/directives/cell/cell.directive.d.ts +8 -8
  31. package/app/directives/column/column.directive.d.ts +33 -33
  32. package/app/directives/content/content.directive.d.ts +5 -5
  33. package/app/directives/content-init/content-init.directive.d.ts +9 -9
  34. package/app/directives/draggable-list/draggable-list.directive.d.ts +90 -90
  35. package/app/directives/draggable-row/draggable-row.directive.d.ts +23 -23
  36. package/app/directives/empty-state/empty-state.directive.d.ts +5 -5
  37. package/app/directives/footer/footer.directive.d.ts +8 -8
  38. package/app/directives/group-expand-trigger/group-expand-trigger.directive.d.ts +10 -10
  39. package/app/directives/group-footer/group-footer.directive.d.ts +6 -6
  40. package/app/directives/group-header/group-header.directive.d.ts +6 -6
  41. package/app/directives/header/header.directive.d.ts +8 -8
  42. package/app/directives/heading/heading.directive.d.ts +5 -5
  43. package/app/directives/heading-container/heading-container.directive.d.ts +5 -5
  44. package/app/directives/index.d.ts +3 -3
  45. package/app/directives/subheading/subheading.directive.d.ts +5 -5
  46. package/app/enums/button-type.enum.d.ts +7 -7
  47. package/app/enums/page-change-type.enum.d.ts +4 -4
  48. package/app/enums/pagination-strategy.enum.d.ts +5 -5
  49. package/app/enums/row-type.enum.d.ts +6 -6
  50. package/app/enums/state.enum.d.ts +9 -9
  51. package/app/fs-list.module.d.ts +60 -60
  52. package/app/fs-list.providers.d.ts +3 -3
  53. package/app/interfaces/cellconfig.interface.d.ts +5 -5
  54. package/app/interfaces/column-config.interface.d.ts +2 -2
  55. package/app/interfaces/draggable-list.interface.d.ts +7 -7
  56. package/app/interfaces/external-params.interface.d.ts +13 -13
  57. package/app/interfaces/index.d.ts +3 -3
  58. package/app/interfaces/listconfig.interface.d.ts +257 -257
  59. package/app/interfaces/pagination.interface.d.ts +13 -13
  60. package/app/models/column-async-attribute.d.ts +5 -5
  61. package/app/models/column-attributes.d.ts +39 -39
  62. package/app/models/column.model.d.ts +59 -59
  63. package/app/models/row/base-row.d.ts +13 -13
  64. package/app/models/row/child-row.d.ts +12 -12
  65. package/app/models/row/group-footer-row.d.ts +10 -10
  66. package/app/models/row/group-row.d.ts +16 -16
  67. package/app/models/row/simple-row.d.ts +5 -5
  68. package/app/models/row-action.model.d.ts +29 -29
  69. package/app/models/row.d.ts +30 -30
  70. package/app/models/styleConfig.model.d.ts +31 -31
  71. package/app/pipes/action-label.d.ts +8 -8
  72. package/app/pipes/index.d.ts +1 -1
  73. package/app/services/group-expand-notifier.service.d.ts +11 -11
  74. package/bundles/firestitch-list.umd.js +6844 -6838
  75. package/bundles/firestitch-list.umd.js.map +1 -1
  76. package/esm2015/app/classes/actions-controller.js +55 -55
  77. package/esm2015/app/classes/columns-controller.js +205 -205
  78. package/esm2015/app/classes/data-controller.js +352 -352
  79. package/esm2015/app/classes/external-params-controller.js +153 -153
  80. package/esm2015/app/classes/index.js +3 -3
  81. package/esm2015/app/classes/list-controller.js +722 -716
  82. package/esm2015/app/classes/pagination-controller.js +461 -461
  83. package/esm2015/app/classes/persistance-controller.js +19 -19
  84. package/esm2015/app/classes/reorder-controller.js +182 -182
  85. package/esm2015/app/classes/selection-controller.js +458 -458
  86. package/esm2015/app/classes/sorting-controller.js +180 -180
  87. package/esm2015/app/components/body/body.component.js +67 -67
  88. package/esm2015/app/components/body/row/actions/actions.component.js +95 -95
  89. package/esm2015/app/components/body/row/cell/cell.component.js +107 -107
  90. package/esm2015/app/components/body/row/inline-action/inline-action.component.js +39 -39
  91. package/esm2015/app/components/body/row/menu-action/menu-action.component.js +35 -35
  92. package/esm2015/app/components/body/row/row.component.js +292 -292
  93. package/esm2015/app/components/customize-cols/customize-cols.component.js +72 -72
  94. package/esm2015/app/components/footer/footer-row/footer-cell/footer-cell.component.js +20 -20
  95. package/esm2015/app/components/footer/footer-row/footer-row.component.js +31 -31
  96. package/esm2015/app/components/footer/footer.component.js +34 -34
  97. package/esm2015/app/components/head/head-cell/head-cell.component.js +33 -33
  98. package/esm2015/app/components/head/head.component.js +104 -104
  99. package/esm2015/app/components/list/list.component.js +381 -381
  100. package/esm2015/app/components/loader/loader.component.js +47 -47
  101. package/esm2015/app/components/manage-saved-filters/manage-saved-filters.component.js +78 -78
  102. package/esm2015/app/components/pagination/pagination.component.js +44 -44
  103. package/esm2015/app/components/saved-filters/saved-filters.component.js +33 -33
  104. package/esm2015/app/components/status/status.component.js +72 -72
  105. package/esm2015/app/directives/cell/cell.directive.js +18 -18
  106. package/esm2015/app/directives/column/column.directive.js +111 -111
  107. package/esm2015/app/directives/content/content.directive.js +12 -12
  108. package/esm2015/app/directives/content-init/content-init.directive.js +21 -21
  109. package/esm2015/app/directives/draggable-list/draggable-list.directive.js +323 -323
  110. package/esm2015/app/directives/draggable-row/draggable-row.directive.js +80 -80
  111. package/esm2015/app/directives/empty-state/empty-state.directive.js +13 -13
  112. package/esm2015/app/directives/footer/footer.directive.js +18 -18
  113. package/esm2015/app/directives/group-expand-trigger/group-expand-trigger.directive.js +26 -26
  114. package/esm2015/app/directives/group-footer/group-footer.directive.js +13 -13
  115. package/esm2015/app/directives/group-header/group-header.directive.js +13 -13
  116. package/esm2015/app/directives/header/header.directive.js +18 -18
  117. package/esm2015/app/directives/heading/heading.directive.js +13 -13
  118. package/esm2015/app/directives/heading-container/heading-container.directive.js +13 -13
  119. package/esm2015/app/directives/index.js +4 -4
  120. package/esm2015/app/directives/subheading/subheading.directive.js +13 -13
  121. package/esm2015/app/enums/button-type.enum.js +9 -9
  122. package/esm2015/app/enums/page-change-type.enum.js +6 -6
  123. package/esm2015/app/enums/pagination-strategy.enum.js +7 -7
  124. package/esm2015/app/enums/row-type.enum.js +7 -7
  125. package/esm2015/app/enums/state.enum.js +11 -11
  126. package/esm2015/app/fs-list.module.js +244 -244
  127. package/esm2015/app/fs-list.providers.js +4 -4
  128. package/esm2015/app/interfaces/cellconfig.interface.js +2 -2
  129. package/esm2015/app/interfaces/column-config.interface.js +1 -1
  130. package/esm2015/app/interfaces/draggable-list.interface.js +2 -2
  131. package/esm2015/app/interfaces/external-params.interface.js +2 -2
  132. package/esm2015/app/interfaces/index.js +4 -4
  133. package/esm2015/app/interfaces/listconfig.interface.js +1 -1
  134. package/esm2015/app/interfaces/pagination.interface.js +2 -2
  135. package/esm2015/app/models/column-async-attribute.js +13 -13
  136. package/esm2015/app/models/column-attributes.js +130 -130
  137. package/esm2015/app/models/column.model.js +166 -166
  138. package/esm2015/app/models/row/base-row.js +23 -23
  139. package/esm2015/app/models/row/child-row.js +28 -28
  140. package/esm2015/app/models/row/group-footer-row.js +20 -20
  141. package/esm2015/app/models/row/group-row.js +44 -44
  142. package/esm2015/app/models/row/simple-row.js +10 -10
  143. package/esm2015/app/models/row-action.model.js +94 -94
  144. package/esm2015/app/models/row.js +80 -80
  145. package/esm2015/app/models/styleConfig.model.js +75 -75
  146. package/esm2015/app/pipes/action-label.js +16 -16
  147. package/esm2015/app/pipes/index.js +1 -1
  148. package/esm2015/app/services/group-expand-notifier.service.js +26 -26
  149. package/esm2015/firestitch-list.js +4 -4
  150. package/esm2015/public_api.js +45 -45
  151. package/fesm2015/firestitch-list.js +5625 -5619
  152. package/fesm2015/firestitch-list.js.map +1 -1
  153. package/firestitch-list.d.ts +5 -5
  154. package/package.json +1 -1
  155. package/public_api.d.ts +39 -39
@@ -1,382 +1,382 @@
1
- import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChildren, ElementRef, EventEmitter, Inject, Input, QueryList, ViewChild, HostBinding, Optional, ContentChild, TemplateRef, Output, } from '@angular/core';
2
- import { ActivatedRoute, Router } from '@angular/router';
3
- import { Location } from '@angular/common';
4
- import { MatDialog, MatDialogRef } from '@angular/material/dialog';
5
- import { Subject } from 'rxjs';
6
- import { filter, skip, take, takeUntil } from 'rxjs/operators';
7
- import { FsScrollService } from '@firestitch/scroll';
8
- import { FilterComponent } from '@firestitch/filter';
9
- import { SelectionDialog } from '@firestitch/selection';
10
- import { getNormalizedPath } from '@firestitch/common';
11
- import { DrawerRef } from '@firestitch/drawer';
12
- import { cloneDeep, mergeWith } from 'lodash-es';
13
- import { List } from '../../classes/list-controller';
14
- import { ReorderController } from '../../classes/reorder-controller';
15
- import { FsListColumnDirective } from '../../directives/column/column.directive';
16
- import { FsListEmptyStateDirective } from '../../directives/empty-state/empty-state.directive';
17
- import { FS_LIST_DEFAULT_CONFIG } from '../../fs-list.providers';
18
- import { CustomizeColsDialogComponent } from '../customize-cols/customize-cols.component';
19
- import { GroupExpandNotifierService } from '../../services/group-expand-notifier.service';
20
- import { PersistanceController } from '../../classes/persistance-controller';
21
- import { FsListHeadingContainerDirective, FsListHeadingDirective, FsListSubheadingDirective } from '../../directives';
22
- import * as i0 from "@angular/core";
23
- import * as i1 from "../../classes/reorder-controller";
24
- import * as i2 from "@firestitch/scroll";
25
- import * as i3 from "@angular/material/dialog";
26
- import * as i4 from "@firestitch/drawer";
27
- import * as i5 from "@firestitch/selection";
28
- import * as i6 from "../../services/group-expand-notifier.service";
29
- import * as i7 from "@angular/router";
30
- import * as i8 from "../../classes/persistance-controller";
31
- import * as i9 from "@angular/common";
32
- import * as i10 from "@firestitch/filter";
33
- import * as i11 from "../status/status.component";
34
- import * as i12 from "../head/head.component";
35
- import * as i13 from "../body/body.component";
36
- import * as i14 from "../footer/footer.component";
37
- import * as i15 from "../loader/loader.component";
38
- import * as i16 from "../pagination/pagination.component";
39
- import * as i17 from "../../directives/content-init/content-init.directive";
40
- import * as i18 from "../../directives/draggable-list/draggable-list.directive";
41
- import * as i19 from "../../directives/footer/footer.directive";
42
- export class FsListComponent {
43
- constructor(reorderController, _defaultOptions, fsScroll, _dialogRef, _drawerRef, _el, selectionDialog, dialog, cdRef, _groupExpandNotifier, _router, _route, _persistance, _location) {
44
- this.reorderController = reorderController;
45
- this._defaultOptions = _defaultOptions;
46
- this.fsScroll = fsScroll;
47
- this._dialogRef = _dialogRef;
48
- this._drawerRef = _drawerRef;
49
- this._el = _el;
50
- this.selectionDialog = selectionDialog;
51
- this.dialog = dialog;
52
- this.cdRef = cdRef;
53
- this._groupExpandNotifier = _groupExpandNotifier;
54
- this._router = _router;
55
- this._route = _route;
56
- this._persistance = _persistance;
57
- this._location = _location;
58
- this.classFsList = true;
59
- this.loaderLines = 3;
60
- this.filtersReady = new EventEmitter();
61
- this.keywordVisible = true;
62
- // Event will fired if action remove: true will clicked
63
- this.rowRemoved = new EventEmitter();
64
- this.firstLoad = true;
65
- this._filterParamsReady = false;
66
- this._inDialog = !!this._dialogRef || !!this._drawerRef;
67
- this._destroy = new Subject();
68
- }
69
- set config(config) {
70
- this._initWithConfig(config);
71
- }
72
- set filterReference(component) {
73
- this._filterRef = component;
74
- this.list.actions.setFilterRef(component);
75
- this._emitFiltersReadyEvent();
76
- }
77
- /**
78
- * Set columns to config
79
- * Create Column Model instances
80
- *
81
- */
82
- set columnTemplates(listColumnDirectives) {
83
- this.listColumnDirectives = listColumnDirectives;
84
- if (this.list) {
85
- this.list.tranformTemplatesToColumns(listColumnDirectives);
86
- }
87
- }
88
- set _emptyStateTemplate(template) {
89
- if (this.list) {
90
- this.list.emptyStateTemplate = template;
91
- }
92
- }
93
- /**
94
- * Return reference for filter
95
- */
96
- get filterRef() {
97
- return this._filterRef;
98
- }
99
- get groupEnabled() {
100
- return this.list.dataController.groupEnabled;
101
- }
102
- get hasFilterKeyword() {
103
- return this.list.filterInput && this.keywordVisible;
104
- }
105
- get hasStatus() {
106
- return this.list.status &&
107
- (this.list.sorting.isDefined || this.list.paging.enabled) &&
108
- (!this.reorderController.enabled || (this.reorderController.enabled && this.reorderController.status)) &&
109
- ((this.list.scrollable && this.list.scrollable.status) || !this.list.scrollable);
110
- }
111
- get paginatorVisible() {
112
- return this.list.paging.enabled
113
- && !this.firstLoad
114
- && !this.list.scrollable
115
- && !this.list.emptyStateEnabled
116
- && this.list.dataController.visibleRowsCount > 0
117
- && this.list.paging.pages > 1;
118
- }
119
- set groupEnabled(value) {
120
- this.list.groupEnabled(value);
121
- }
122
- get filtersQuery() {
123
- return this.list.filtersQuery;
124
- }
125
- ngAfterContentInit() {
126
- if (this.list.afterInit) {
127
- this.list.afterInit(this);
128
- }
129
- }
130
- ngOnInit() {
131
- this._subscribeToRemoveRow();
132
- this._subscribeToGroupExpandStatusChange();
133
- }
134
- ngOnDestroy() {
135
- if (this.list) {
136
- this.list.destroy();
137
- }
138
- this._destroy.next();
139
- this._destroy.complete();
140
- }
141
- nextPage() {
142
- this.list.paging.goNext();
143
- }
144
- prevPage() {
145
- this.list.paging.goPrev();
146
- }
147
- firstPage() {
148
- this.list.paging.goFirst();
149
- }
150
- lastPage() {
151
- this.list.paging.goLast();
152
- }
153
- reload() {
154
- this.list.reload();
155
- }
156
- getData(trackBy) {
157
- return this.list.getData(trackBy);
158
- }
159
- hasData(trackBy) {
160
- return this.list.hasData(trackBy);
161
- }
162
- updateData(rows, trackBy) {
163
- return this.list.dataController.updateData(rows, trackBy);
164
- }
165
- replaceRow(row, trackBy) {
166
- return this.list.dataController.replaceData(row, trackBy);
167
- }
168
- updateSelectionConfig(config) {
169
- this.list.selection.updateConfig(config);
170
- }
171
- resetSelectionActions() {
172
- this.list.selection.resetActions();
173
- }
174
- enableSelection() {
175
- this.list.selection.enableSelection();
176
- }
177
- disableSelection() {
178
- this.list.selection.disableSelection();
179
- }
180
- removeData(data) {
181
- return this.list.dataController.removeData(data);
182
- }
183
- setHeading(heading) {
184
- this.list.heading = heading;
185
- }
186
- setSubheading(subheading) {
187
- this.list.subheading = subheading;
188
- }
189
- reorderStart() {
190
- this.reorderController.enableReorder();
191
- }
192
- reorderFinish() {
193
- this.reorderController.disableReorder();
194
- }
195
- setActions(actions) {
196
- if (actions) {
197
- this.list.actions.clearActions();
198
- this.list.actions.setActions(actions);
199
- }
200
- }
201
- filterReady() {
202
- this.list.filtersReady$.next();
203
- this._filterParamsReady = true;
204
- this._emitFiltersReadyEvent();
205
- }
206
- /**
207
- * Update visibility for specific column
208
- */
209
- columnVisibility(name, show) {
210
- this.columnsVisibility([{ name, show }]);
211
- }
212
- /**
213
- * Update visibility for list of specific columns
214
- */
215
- columnsVisibility(columns) {
216
- this.list.columns.updateVisibilityForCols(columns);
217
- }
218
- _emitFiltersReadyEvent() {
219
- if (!!this.filterRef && this._filterParamsReady) {
220
- this.filtersReady.emit();
221
- this.keywordVisible = this.filterRef.hasKeyword;
222
- this.cdRef.markForCheck();
223
- }
224
- }
225
- /**
226
- * Initialize config for list
227
- * @param config
228
- */
229
- _initWithConfig(config) {
230
- if (this.list) {
231
- this.list.destroy();
232
- }
233
- const defaultOpts = this._defaultOptions
234
- ? cloneDeep(this._defaultOptions)
235
- : {};
236
- const listConfig = mergeWith(defaultOpts, config, this._configMergeCustomizer);
237
- if (listConfig.persist !== false) {
238
- this._restorePersistance(listConfig.persist);
239
- }
240
- this._updateCustomizeAction(listConfig.actions);
241
- this.list = new List(this._el, listConfig, this.fsScroll, this.selectionDialog, this._router, this._route, this._persistance, this._inDialog);
242
- this._waitFirstLoad();
243
- this.reorderController.initWithConfig(config.reorder, this.list.dataController, this.list.actions, this.list.selection);
244
- if (this.listColumnDirectives) {
245
- this.list.tranformTemplatesToColumns(this.listColumnDirectives);
246
- }
247
- this._listenSortingChange();
248
- }
249
- /**
250
- * Find action with customize flag and re-declare click function for CustomizeColsDialog
251
- * @param actions
252
- */
253
- _updateCustomizeAction(actions) {
254
- const customizeAction = actions === null || actions === void 0 ? void 0 : actions.find((action) => action.customize);
255
- if (customizeAction) {
256
- const actionClickFn = customizeAction.click;
257
- customizeAction.click = () => {
258
- if (actionClickFn) {
259
- actionClickFn(null);
260
- }
261
- this.dialog.open(CustomizeColsDialogComponent, {
262
- data: {
263
- columns: this.list.columns.columnsForDialog,
264
- changeFn: this.list.columns.changeFn,
265
- },
266
- })
267
- .afterClosed()
268
- .pipe(takeUntil(this.list.onDestroy$), takeUntil(this._destroy))
269
- .subscribe((data) => {
270
- if (data) {
271
- this.list.columns.updateVisibilityForCols(data);
272
- this.cdRef.markForCheck();
273
- }
274
- });
275
- };
276
- }
277
- }
278
- /**
279
- * Update sorting in filter
280
- */
281
- _listenSortingChange() {
282
- this.list.sorting
283
- .sortingChanged$
284
- .pipe(takeUntil(this.list.onDestroy$), takeUntil(this._destroy))
285
- .subscribe((sort) => {
286
- this._filterRef.updateSort(sort);
287
- });
288
- }
289
- _subscribeToRemoveRow() {
290
- this.rowRemoved
291
- .pipe(takeUntil(this._destroy))
292
- .subscribe((row) => {
293
- this.list.dataController.removeData(row);
294
- });
295
- }
296
- _subscribeToGroupExpandStatusChange() {
297
- if (this.list.dataController.hasGroups) {
298
- this._groupExpandNotifier.expandStatusChange$
299
- .pipe(takeUntil(this._destroy))
300
- .subscribe((row) => {
301
- this.list.dataController.toggleRowGroup(row);
302
- });
303
- }
304
- }
305
- _waitFirstLoad() {
306
- this.list.loading$
307
- .pipe(skip(1), filter((value) => value === false), take(1), takeUntil(this.list.onDestroy$), takeUntil(this._destroy))
308
- .subscribe(() => {
309
- this.firstLoad = false;
310
- this.cdRef.markForCheck();
311
- });
312
- }
313
- _configMergeCustomizer(objValue, srcValue) {
314
- if (Array.isArray(objValue)) {
315
- return objValue;
316
- }
317
- }
318
- _restorePersistance(persistConfig) {
319
- const namespace = getNormalizedPath(this._location);
320
- this._persistance.setConfig(persistConfig, namespace, this._inDialog);
321
- }
322
- }
323
- FsListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsListComponent, deps: [{ token: i1.ReorderController }, { token: FS_LIST_DEFAULT_CONFIG, optional: true }, { token: i2.FsScrollService, optional: true }, { token: i3.MatDialogRef, optional: true }, { token: i4.DrawerRef, optional: true }, { token: i0.ElementRef }, { token: i5.SelectionDialog }, { token: i3.MatDialog }, { token: i0.ChangeDetectorRef }, { token: i6.GroupExpandNotifierService }, { token: i7.Router }, { token: i7.ActivatedRoute }, { token: i8.PersistanceController }, { token: i9.Location }], target: i0.ɵɵFactoryTarget.Component });
324
- FsListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: FsListComponent, selector: "fs-list", inputs: { config: "config", loaderLines: "loaderLines" }, outputs: { filtersReady: "filtersReady" }, host: { properties: { "class.fs-list": "this.classFsList" } }, providers: [
325
- GroupExpandNotifierService,
326
- PersistanceController,
327
- ReorderController,
328
- ], queries: [{ propertyName: "_emptyStateTemplate", first: true, predicate: FsListEmptyStateDirective, descendants: true, read: TemplateRef }, { propertyName: "headingTemplate", first: true, predicate: FsListHeadingDirective, descendants: true, read: TemplateRef }, { propertyName: "headingContainerTemplate", first: true, predicate: FsListHeadingContainerDirective, descendants: true, read: TemplateRef }, { propertyName: "subheadingTemplate", first: true, predicate: FsListSubheadingDirective, descendants: true, read: TemplateRef }, { propertyName: "columnTemplates", predicate: FsListColumnDirective }], viewQueries: [{ propertyName: "filterReference", first: true, predicate: FilterComponent, descendants: true }], ngImport: i0, template: "<div class=\"fs-list-container\"\n [ngClass]=\"{\n 'has-filter-keyword': hasFilterKeyword,\n 'has-filters': list.filterConfig?.items.length,\n 'has-heading': list.heading || headingTemplate,\n 'has-status': hasStatus,\n 'has-chips': list.chips,\n 'has-actions': list.actions.hasActions,\n 'first-load': firstLoad,\n 'loading': list.loading$ | async\n }\">\n <ng-template [ngTemplateOutlet]=\"listContainerContent\"></ng-template>\n</div>\n\n<ng-template #listContainerContent>\n <ng-container *ngIf=\"list.dataController.visibleRows$ | async as listData\">\n <div class=\"fs-list-header-container\">\n <div\n class=\"fs-list-header\"\n [ngClass]=\"{ 'no-wrap': reorderController.manualReorderActivated || !list.filterConfig?.items.length }\">\n <ng-container\n *ngIf=\"hasFilterKeyword\"\n [ngTemplateOutlet]=\"heading\">\n </ng-container>\n <fs-filter\n class=\"fs-list-filter\"\n *ngIf=\"list.filterConfig\"\n [filter]=\"list.filterConfig\"\n [showSortBy]=\"!list.status\"\n [showFilterInput]=\"list.filterInput\"\n (ready)=\"filterReady()\">\n <ng-template fsFilterStatusBar>\n <ng-container\n *ngIf=\"!hasFilterKeyword\"\n [ngTemplateOutlet]=\"heading\">\n </ng-container>\n <ng-container *ngIf=\"hasStatus\">\n <fs-list-status\n class=\"fs-list-status\"\n [ngClass]=\"{ 'hidden-mobile': !list.status }\"\n [rows]=\"listData\"\n [sorting]=\"list.sorting\"\n [paging]=\"list.paging\"\n [firstLoad]=\"firstLoad\"\n [scrollable]=\"list.scrollable || list.paging.loadMoreEnabled\">\n </fs-list-status>\n </ng-container>\n </ng-template>\n </fs-filter>\n </div>\n </div>\n\n <ng-content select=\"[fs-list-content]\"></ng-content>\n\n <!-- Table implementation -->\n <div class=\"fs-list-table-container\">\n <ng-container *ngIf=\"!firstLoad && listData.length > 0 && !list.emptyStateEnabled\">\n <table class=\"fs-list-table\" role=\"grid\" [fsListContentInit]=\"list.afterContentInit\">\n <thead\n fs-list-head\n class=\"fs-list-head\"\n role=\"rowgroup\"\n *ngIf=\"list.columns.hasHeader\"\n [ngClass]=\"list.columns.theadClass\"\n [columns]=\"list.columns.visibleColumns$ | async\"\n [sorting]=\"list.sorting\"\n [selection]=\"list.selection\"\n [hasRowActions]=\"list.hasRowActions\"\n [activeFiltersCount]=\"list.activeFiltersCount$ | async\"\n [reorderEnabled]=\"reorderController.enabled$ | async\"\n [reorderPosition]=\"reorderController.position$ | async\"\n [reorderStrategy]=\"reorderController.strategy$ | async\"\n >\n </thead>\n\n <tbody\n fs-list-body\n fsListDraggableList\n class=\"fs-list-body\"\n role=\"rowgroup\"\n [class.disabled]=\"!!(reorderController.reorderDisabled$ | async)\"\n [rows]=\"listData\"\n [rowActionsRaw]=\"list.rowActionsRaw\"\n [groupActionsRaw]=\"list.groupActionsRaw\"\n [hasRowActions]=\"list.hasRowActions\"\n [rowEvents]=\"list.rowEvents\"\n [rowClass]=\"list.rowClass\"\n [columns]=\"list.columns.visibleColumns$ | async\"\n [restoreMode]=\"list.restoreMode\"\n [selection]=\"list.selection\"\n [rowRemoved]=\"rowRemoved\"\n [activeFiltersCount]=\"list.activeFiltersCount$ | async\"\n [reorderEnabled]=\"reorderController.enabled$ | async\"\n [reorderPosition]=\"reorderController.position$ | async\"\n [reorderStrategy]=\"reorderController.strategy$ | async\"\n [reorderMultiple]=\"reorderController.multiple\"\n >\n </tbody>\n\n <tfoot\n fs-list-footer\n class=\"fs-list-footer\"\n *ngIf=\"list.columns.hasFooter\"\n [columns]=\"list.columns.visibleColumns$ | async\"\n [selection]=\"list.selection\"\n [hasRowActions]=\"list.hasRowActions\"\n [activeFiltersCount]=\"list.activeFiltersCount$ | async\"\n [reorderEnabled]=\"reorderController.enabled$ | async\"\n [reorderPosition]=\"reorderController.position$ | async\"\n [reorderStrategy]=\"reorderController.strategy$ | async\"\n >\n </tfoot>\n </table>\n </ng-container>\n <fs-list-loader\n *ngIf=\"firstLoad\"\n [columns]=\"list.columns.columns\"\n [loaderLines]=\"loaderLines\">\n </fs-list-loader>\n </div>\n\n <fs-list-pagination\n *ngIf=\"paginatorVisible\"\n class=\"fs-list-pagination\"\n [rows]=\"listData\"\n [pagination]=\"list.paging\">\n </fs-list-pagination>\n\n <ng-container *ngIf=\"!firstLoad\">\n <div\n *ngIf=\"listData.length === 0\"\n class=\"fs-list-no-results-container\">\n <div\n *ngIf=\"list.noResults?.message && !list.emptyStateEnabled\"\n class=\"fs-list-no-results\">\n {{ list.noResults?.message }}\n </div>\n <ng-container *ngIf=\"list.emptyStateEnabled\">\n <ng-template [ngTemplateOutlet]=\"list.emptyStateTemplate\"></ng-template>\n </ng-container>\n </div>\n </ng-container>\n </ng-container>\n</ng-template>\n\n<ng-template #heading>\n <div class=\"heading-container\" *ngIf=\"headingContainerTemplate || list.heading || list.subheading || headingTemplate\">\n <ng-container *ngIf=\"headingContainerTemplate; else headingContainer\">\n <ng-container\n [ngTemplateOutlet]=\"headingContainerTemplate\"\n [ngTemplateOutletContext]=\"{ template: headingContainer }\">\n </ng-container>\n </ng-container>\n <ng-template #headingContainer>\n <h2 class=\"heading\" *ngIf=\"list.heading || headingTemplate\">\n {{list.heading}}\n <ng-container [ngTemplateOutlet]=\"headingTemplate\"></ng-container>\n </h2>\n <div class=\"small subheading\" *ngIf=\"list.subheading || subheadingTemplate\">\n {{list.subheading}}\n <ng-container [ngTemplateOutlet]=\"subheadingTemplate\"></ng-container>\n </div>\n </ng-template>\n </div>\n</ng-template>\n", styles: [":host ::ng-deep .fs-list-swap-restricted{opacity:.5}:host ::ng-deep .fs-list-no-drop{cursor:no-drop}:host ::ng-deep .hidden{display:none}@media print{:host ::ng-deep .fs-list-row-group{page-break-after:avoid}:host ::ng-deep .fs-list-row-group-child{page-break-before:avoid}:host ::ng-deep .fs-list-row-group-footer{page-break-before:avoid}}.fs-list-container{width:100%}.fs-list-container:not(.has-filters):not(.has-actions):not(.has-heading) .fs-list-header-container{display:none}.fs-list-container:not(.has-filter-keyword) .fs-list-header{display:flex;margin-bottom:4px}.fs-list-container:not(.has-filter-keyword) .fs-list-header .heading-container{flex:1}.fs-list-container:not(.has-filter-keyword) .fs-list-header fs-filter{display:flex}.fs-list-container.has-filters .heading-container{margin-bottom:4px}.fs-list-container.loading .fs-list-status,.fs-list-container.loading .fs-list-body,.fs-list-container.loading fs-list-pagination,.fs-list-container.loading .filter-chips,.fs-list-container.loading .fs-list-no-results-container,.fs-list-container.first-load .fs-list-status,.fs-list-container.first-load .fs-list-body,.fs-list-container.first-load fs-list-pagination,.fs-list-container.first-load .filter-chips,.fs-list-container.first-load .fs-list-no-results-container{opacity:.4;pointer-events:none}.fs-list-container.first-load ::ng-deep fs-filter-chips .fs-chip{color:transparent}.fs-list-container.first-load ::ng-deep fs-filter-chips .fs-chip .remove{visibility:hidden}.fs-list-container.has-actions .fs-list-actions{margin-left:5px}.fs-list-filter{margin-bottom:0;position:initial!important;display:block;width:100%}.fs-list-no-results-container .fs-list-no-results{text-align:center;color:#999;padding:10px 0}.fs-list-header .heading-container{display:flex;flex-direction:column;justify-content:center}.fs-list-header .heading{margin:0}.fs-list-header h2+.subheading{margin:2px 0 0}.fs-list-header .fs-list-actions{white-space:nowrap;float:right}.fs-list-header .fs-list-actions .menu-button{width:36px;height:36px;line-height:36px}.fs-list-header .action-button{margin-left:5px}.fs-list-header .action-button:first-child{margin-left:0}.fs-list-header .mat-button{margin-top:0;margin-bottom:0;margin-right:0}.fs-list-table-container{width:100%;overflow:auto}::ng-deep .preview-block{position:fixed;height:30px;width:200px;background:grey;display:flex;justify-content:center;align-items:center;z-index:1000;box-shadow:2px 2px 2px #9e9e9ea6;border-radius:6px}::ng-deep .fs-list{display:block;width:100%}::ng-deep .fs-list-table{border-spacing:0;display:table;width:100%;border-collapse:collapse}::ng-deep .fs-list-table thead,::ng-deep .fs-list-table .fs-list-head{display:table-header-group}::ng-deep .fs-list-table thead th,::ng-deep .fs-list-table thead .fs-list-col,::ng-deep .fs-list-table .fs-list-head th,::ng-deep .fs-list-table .fs-list-head .fs-list-col{color:#999;padding:8px;font-weight:normal;color:#8f8f8f;font-size:85%}::ng-deep .fs-list-table thead th.fs-list-col-selection,::ng-deep .fs-list-table thead .fs-list-col.fs-list-col-selection,::ng-deep .fs-list-table .fs-list-head th.fs-list-col-selection,::ng-deep .fs-list-table .fs-list-head .fs-list-col.fs-list-col-selection{width:1%;text-align:left}::ng-deep .fs-list-table thead th.sorting,::ng-deep .fs-list-table thead .fs-list-col.sorting,::ng-deep .fs-list-table .fs-list-head th.sorting,::ng-deep .fs-list-table .fs-list-head .fs-list-col.sorting{cursor:pointer}::ng-deep .fs-list-table thead th.sorting:hover,::ng-deep .fs-list-table thead .fs-list-col.sorting:hover,::ng-deep .fs-list-table .fs-list-head th.sorting:hover,::ng-deep .fs-list-table .fs-list-head .fs-list-col.sorting:hover{background-color:#f6f6f6}::ng-deep .fs-list-table thead th .wrap,::ng-deep .fs-list-table thead .fs-list-col .wrap,::ng-deep .fs-list-table .fs-list-head th .wrap,::ng-deep .fs-list-table .fs-list-head .fs-list-col .wrap{display:inline-flex;vertical-align:middle;white-space:nowrap}::ng-deep .fs-list-table thead th .wrap mat-icon,::ng-deep .fs-list-table thead .fs-list-col .wrap mat-icon,::ng-deep .fs-list-table .fs-list-head th .wrap mat-icon,::ng-deep .fs-list-table .fs-list-head .fs-list-col .wrap mat-icon{font-size:14px;display:block;height:14px;width:14px}::ng-deep .fs-list-table thead th .wrap .direction,::ng-deep .fs-list-table thead .fs-list-col .wrap .direction,::ng-deep .fs-list-table .fs-list-head th .wrap .direction,::ng-deep .fs-list-table .fs-list-head .fs-list-col .wrap .direction{margin-left:5px}::ng-deep .fs-list-table thead th.sorting,::ng-deep .fs-list-table thead .fs-list-col.sorting,::ng-deep .fs-list-table .fs-list-head th.sorting,::ng-deep .fs-list-table .fs-list-head .fs-list-col.sorting{background-image:none}::ng-deep .fs-list-table tbody,::ng-deep .fs-list-table .fs-list-body{display:table-row-group;position:relative}::ng-deep .fs-list-table tbody.drag-hidden .drag-col,::ng-deep .fs-list-table .fs-list-body.drag-hidden .drag-col{opacity:0!important;cursor:default}::ng-deep .fs-list-table tbody.disabled,::ng-deep .fs-list-table .fs-list-body.disabled{opacity:.4;pointer-events:none}::ng-deep .fs-list-table tbody td,::ng-deep .fs-list-table tbody .fs-list-col,::ng-deep .fs-list-table .fs-list-body td,::ng-deep .fs-list-table .fs-list-body .fs-list-col{box-sizing:border-box;border-top:1px solid #ddd}::ng-deep .fs-list-table tbody tr:hover td,::ng-deep .fs-list-table tbody .fs-list-row:hover .fs-list-col,::ng-deep .fs-list-table .fs-list-body tr:hover td,::ng-deep .fs-list-table .fs-list-body .fs-list-row:hover .fs-list-col{background-color:#f6f6f6}::ng-deep .fs-list-table tbody tr:hover td,::ng-deep .fs-list-table tbody tr:hover .fs-list-col,::ng-deep .fs-list-table tbody .fs-list-row:hover td,::ng-deep .fs-list-table tbody .fs-list-row:hover .fs-list-col,::ng-deep .fs-list-table .fs-list-body tr:hover td,::ng-deep .fs-list-table .fs-list-body tr:hover .fs-list-col,::ng-deep .fs-list-table .fs-list-body .fs-list-row:hover td,::ng-deep .fs-list-table .fs-list-body .fs-list-row:hover .fs-list-col{background-color:#f6f6f6}::ng-deep .fs-list-table tbody tr:first-child td,::ng-deep .fs-list-table .fs-list-body tr:first-child td{border-top:2px solid #ddd}::ng-deep .fs-list-table tbody tr:last-child td,::ng-deep .fs-list-table .fs-list-body tr:last-child td{border-bottom:2px solid #ddd}::ng-deep .fs-list-table thead tr,::ng-deep .fs-list-table thead .fs-list-row,::ng-deep .fs-list-table tbody tr,::ng-deep .fs-list-table tbody .fs-list-row,::ng-deep .fs-list-table tfoot tr,::ng-deep .fs-list-table tfoot .fs-list-row,::ng-deep .fs-list-table .fs-list-head tr,::ng-deep .fs-list-table .fs-list-head .fs-list-row,::ng-deep .fs-list-table .fs-list-body tr,::ng-deep .fs-list-table .fs-list-body .fs-list-row,::ng-deep .fs-list-table .fs-list-footer tr,::ng-deep .fs-list-table .fs-list-footer .fs-list-row{display:table-row}::ng-deep .fs-list-table thead tr.drag-hidden,::ng-deep .fs-list-table thead .fs-list-row.drag-hidden,::ng-deep .fs-list-table tbody tr.drag-hidden,::ng-deep .fs-list-table tbody .fs-list-row.drag-hidden,::ng-deep .fs-list-table tfoot tr.drag-hidden,::ng-deep .fs-list-table tfoot .fs-list-row.drag-hidden,::ng-deep .fs-list-table .fs-list-head tr.drag-hidden,::ng-deep .fs-list-table .fs-list-head .fs-list-row.drag-hidden,::ng-deep .fs-list-table .fs-list-body tr.drag-hidden,::ng-deep .fs-list-table .fs-list-body .fs-list-row.drag-hidden,::ng-deep .fs-list-table .fs-list-footer tr.drag-hidden,::ng-deep .fs-list-table .fs-list-footer .fs-list-row.drag-hidden{display:none}::ng-deep .fs-list-table thead tr.multiple-selection,::ng-deep .fs-list-table thead .fs-list-row.multiple-selection,::ng-deep .fs-list-table tbody tr.multiple-selection,::ng-deep .fs-list-table tbody .fs-list-row.multiple-selection,::ng-deep .fs-list-table tfoot tr.multiple-selection,::ng-deep .fs-list-table tfoot .fs-list-row.multiple-selection,::ng-deep .fs-list-table .fs-list-head tr.multiple-selection,::ng-deep .fs-list-table .fs-list-head .fs-list-row.multiple-selection,::ng-deep .fs-list-table .fs-list-body tr.multiple-selection,::ng-deep .fs-list-table .fs-list-body .fs-list-row.multiple-selection,::ng-deep .fs-list-table .fs-list-footer tr.multiple-selection,::ng-deep .fs-list-table .fs-list-footer .fs-list-row.multiple-selection{background-color:#2196f380}::ng-deep .fs-list-table thead tr.multiple-selection .fs-list-col,::ng-deep .fs-list-table thead .fs-list-row.multiple-selection .fs-list-col,::ng-deep .fs-list-table tbody tr.multiple-selection .fs-list-col,::ng-deep .fs-list-table tbody .fs-list-row.multiple-selection .fs-list-col,::ng-deep .fs-list-table tfoot tr.multiple-selection .fs-list-col,::ng-deep .fs-list-table tfoot .fs-list-row.multiple-selection .fs-list-col,::ng-deep .fs-list-table .fs-list-head tr.multiple-selection .fs-list-col,::ng-deep .fs-list-table .fs-list-head .fs-list-row.multiple-selection .fs-list-col,::ng-deep .fs-list-table .fs-list-body tr.multiple-selection .fs-list-col,::ng-deep .fs-list-table .fs-list-body .fs-list-row.multiple-selection .fs-list-col,::ng-deep .fs-list-table .fs-list-footer tr.multiple-selection .fs-list-col,::ng-deep .fs-list-table .fs-list-footer .fs-list-row.multiple-selection .fs-list-col{background-color:#2196f380}::ng-deep .fs-list-table thead tr td,::ng-deep .fs-list-table thead tr th,::ng-deep .fs-list-table thead tr .fs-list-col,::ng-deep .fs-list-table thead .fs-list-row td,::ng-deep .fs-list-table thead .fs-list-row th,::ng-deep .fs-list-table thead .fs-list-row .fs-list-col,::ng-deep .fs-list-table tbody tr td,::ng-deep .fs-list-table tbody tr th,::ng-deep .fs-list-table tbody tr .fs-list-col,::ng-deep .fs-list-table tbody .fs-list-row td,::ng-deep .fs-list-table tbody .fs-list-row th,::ng-deep .fs-list-table tbody .fs-list-row .fs-list-col,::ng-deep .fs-list-table tfoot tr td,::ng-deep .fs-list-table tfoot tr th,::ng-deep .fs-list-table tfoot tr .fs-list-col,::ng-deep .fs-list-table tfoot .fs-list-row td,::ng-deep .fs-list-table tfoot .fs-list-row th,::ng-deep .fs-list-table tfoot .fs-list-row .fs-list-col,::ng-deep .fs-list-table .fs-list-head tr td,::ng-deep .fs-list-table .fs-list-head tr th,::ng-deep .fs-list-table .fs-list-head tr .fs-list-col,::ng-deep .fs-list-table .fs-list-head .fs-list-row td,::ng-deep .fs-list-table .fs-list-head .fs-list-row th,::ng-deep .fs-list-table .fs-list-head .fs-list-row .fs-list-col,::ng-deep .fs-list-table .fs-list-body tr td,::ng-deep .fs-list-table .fs-list-body tr th,::ng-deep .fs-list-table .fs-list-body tr .fs-list-col,::ng-deep .fs-list-table .fs-list-body .fs-list-row td,::ng-deep .fs-list-table .fs-list-body .fs-list-row th,::ng-deep .fs-list-table .fs-list-body .fs-list-row .fs-list-col,::ng-deep .fs-list-table .fs-list-footer tr td,::ng-deep .fs-list-table .fs-list-footer tr th,::ng-deep .fs-list-table .fs-list-footer tr .fs-list-col,::ng-deep .fs-list-table .fs-list-footer .fs-list-row td,::ng-deep .fs-list-table .fs-list-footer .fs-list-row th,::ng-deep .fs-list-table .fs-list-footer .fs-list-row .fs-list-col{display:table-cell;padding:8px;vertical-align:middle;outline:none;text-align:left}::ng-deep .fs-list-table thead tr td.drag-col,::ng-deep .fs-list-table thead tr th.drag-col,::ng-deep .fs-list-table thead tr .fs-list-col.drag-col,::ng-deep .fs-list-table thead .fs-list-row td.drag-col,::ng-deep .fs-list-table thead .fs-list-row th.drag-col,::ng-deep .fs-list-table thead .fs-list-row .fs-list-col.drag-col,::ng-deep .fs-list-table tbody tr td.drag-col,::ng-deep .fs-list-table tbody tr th.drag-col,::ng-deep .fs-list-table tbody tr .fs-list-col.drag-col,::ng-deep .fs-list-table tbody .fs-list-row td.drag-col,::ng-deep .fs-list-table tbody .fs-list-row th.drag-col,::ng-deep .fs-list-table tbody .fs-list-row .fs-list-col.drag-col,::ng-deep .fs-list-table tfoot tr td.drag-col,::ng-deep .fs-list-table tfoot tr th.drag-col,::ng-deep .fs-list-table tfoot tr .fs-list-col.drag-col,::ng-deep .fs-list-table tfoot .fs-list-row td.drag-col,::ng-deep .fs-list-table tfoot .fs-list-row th.drag-col,::ng-deep .fs-list-table tfoot .fs-list-row .fs-list-col.drag-col,::ng-deep .fs-list-table .fs-list-head tr td.drag-col,::ng-deep .fs-list-table .fs-list-head tr th.drag-col,::ng-deep .fs-list-table .fs-list-head tr .fs-list-col.drag-col,::ng-deep .fs-list-table .fs-list-head .fs-list-row td.drag-col,::ng-deep .fs-list-table .fs-list-head .fs-list-row th.drag-col,::ng-deep .fs-list-table .fs-list-head .fs-list-row .fs-list-col.drag-col,::ng-deep .fs-list-table .fs-list-body tr td.drag-col,::ng-deep .fs-list-table .fs-list-body tr th.drag-col,::ng-deep .fs-list-table .fs-list-body tr .fs-list-col.drag-col,::ng-deep .fs-list-table .fs-list-body .fs-list-row td.drag-col,::ng-deep .fs-list-table .fs-list-body .fs-list-row th.drag-col,::ng-deep .fs-list-table .fs-list-body .fs-list-row .fs-list-col.drag-col,::ng-deep .fs-list-table .fs-list-footer tr td.drag-col,::ng-deep .fs-list-table .fs-list-footer tr th.drag-col,::ng-deep .fs-list-table .fs-list-footer tr .fs-list-col.drag-col,::ng-deep .fs-list-table .fs-list-footer .fs-list-row td.drag-col,::ng-deep .fs-list-table .fs-list-footer .fs-list-row th.drag-col,::ng-deep .fs-list-table .fs-list-footer .fs-list-row .fs-list-col.drag-col{width:24px;text-align:center;cursor:grab}::ng-deep .fs-list-table thead tr td.drag-col.drag-disabled,::ng-deep .fs-list-table thead tr th.drag-col.drag-disabled,::ng-deep .fs-list-table thead tr .fs-list-col.drag-col.drag-disabled,::ng-deep .fs-list-table thead .fs-list-row td.drag-col.drag-disabled,::ng-deep .fs-list-table thead .fs-list-row th.drag-col.drag-disabled,::ng-deep .fs-list-table thead .fs-list-row .fs-list-col.drag-col.drag-disabled,::ng-deep .fs-list-table tbody tr td.drag-col.drag-disabled,::ng-deep .fs-list-table tbody tr th.drag-col.drag-disabled,::ng-deep .fs-list-table tbody tr .fs-list-col.drag-col.drag-disabled,::ng-deep .fs-list-table tbody .fs-list-row td.drag-col.drag-disabled,::ng-deep .fs-list-table tbody .fs-list-row th.drag-col.drag-disabled,::ng-deep .fs-list-table tbody .fs-list-row .fs-list-col.drag-col.drag-disabled,::ng-deep .fs-list-table tfoot tr td.drag-col.drag-disabled,::ng-deep .fs-list-table tfoot tr th.drag-col.drag-disabled,::ng-deep .fs-list-table tfoot tr .fs-list-col.drag-col.drag-disabled,::ng-deep .fs-list-table tfoot .fs-list-row td.drag-col.drag-disabled,::ng-deep .fs-list-table tfoot .fs-list-row th.drag-col.drag-disabled,::ng-deep .fs-list-table tfoot .fs-list-row .fs-list-col.drag-col.drag-disabled,::ng-deep .fs-list-table .fs-list-head tr td.drag-col.drag-disabled,::ng-deep .fs-list-table .fs-list-head tr th.drag-col.drag-disabled,::ng-deep .fs-list-table .fs-list-head tr .fs-list-col.drag-col.drag-disabled,::ng-deep .fs-list-table .fs-list-head .fs-list-row td.drag-col.drag-disabled,::ng-deep .fs-list-table .fs-list-head .fs-list-row th.drag-col.drag-disabled,::ng-deep .fs-list-table .fs-list-head .fs-list-row .fs-list-col.drag-col.drag-disabled,::ng-deep .fs-list-table .fs-list-body tr td.drag-col.drag-disabled,::ng-deep .fs-list-table .fs-list-body tr th.drag-col.drag-disabled,::ng-deep .fs-list-table .fs-list-body tr .fs-list-col.drag-col.drag-disabled,::ng-deep .fs-list-table .fs-list-body .fs-list-row td.drag-col.drag-disabled,::ng-deep .fs-list-table .fs-list-body .fs-list-row th.drag-col.drag-disabled,::ng-deep .fs-list-table .fs-list-body .fs-list-row .fs-list-col.drag-col.drag-disabled,::ng-deep .fs-list-table .fs-list-footer tr td.drag-col.drag-disabled,::ng-deep .fs-list-table .fs-list-footer tr th.drag-col.drag-disabled,::ng-deep .fs-list-table .fs-list-footer tr .fs-list-col.drag-col.drag-disabled,::ng-deep .fs-list-table .fs-list-footer .fs-list-row td.drag-col.drag-disabled,::ng-deep .fs-list-table .fs-list-footer .fs-list-row th.drag-col.drag-disabled,::ng-deep .fs-list-table .fs-list-footer .fs-list-row .fs-list-col.drag-col.drag-disabled{opacity:.4;cursor:no-drop}::ng-deep .fs-list-table thead tr td.drag-col mat-icon,::ng-deep .fs-list-table thead tr th.drag-col mat-icon,::ng-deep .fs-list-table thead tr .fs-list-col.drag-col mat-icon,::ng-deep .fs-list-table thead .fs-list-row td.drag-col mat-icon,::ng-deep .fs-list-table thead .fs-list-row th.drag-col mat-icon,::ng-deep .fs-list-table thead .fs-list-row .fs-list-col.drag-col mat-icon,::ng-deep .fs-list-table tbody tr td.drag-col mat-icon,::ng-deep .fs-list-table tbody tr th.drag-col mat-icon,::ng-deep .fs-list-table tbody tr .fs-list-col.drag-col mat-icon,::ng-deep .fs-list-table tbody .fs-list-row td.drag-col mat-icon,::ng-deep .fs-list-table tbody .fs-list-row th.drag-col mat-icon,::ng-deep .fs-list-table tbody .fs-list-row .fs-list-col.drag-col mat-icon,::ng-deep .fs-list-table tfoot tr td.drag-col mat-icon,::ng-deep .fs-list-table tfoot tr th.drag-col mat-icon,::ng-deep .fs-list-table tfoot tr .fs-list-col.drag-col mat-icon,::ng-deep .fs-list-table tfoot .fs-list-row td.drag-col mat-icon,::ng-deep .fs-list-table tfoot .fs-list-row th.drag-col mat-icon,::ng-deep .fs-list-table tfoot .fs-list-row .fs-list-col.drag-col mat-icon,::ng-deep .fs-list-table .fs-list-head tr td.drag-col mat-icon,::ng-deep .fs-list-table .fs-list-head tr th.drag-col mat-icon,::ng-deep .fs-list-table .fs-list-head tr .fs-list-col.drag-col mat-icon,::ng-deep .fs-list-table .fs-list-head .fs-list-row td.drag-col mat-icon,::ng-deep .fs-list-table .fs-list-head .fs-list-row th.drag-col mat-icon,::ng-deep .fs-list-table .fs-list-head .fs-list-row .fs-list-col.drag-col mat-icon,::ng-deep .fs-list-table .fs-list-body tr td.drag-col mat-icon,::ng-deep .fs-list-table .fs-list-body tr th.drag-col mat-icon,::ng-deep .fs-list-table .fs-list-body tr .fs-list-col.drag-col mat-icon,::ng-deep .fs-list-table .fs-list-body .fs-list-row td.drag-col mat-icon,::ng-deep .fs-list-table .fs-list-body .fs-list-row th.drag-col mat-icon,::ng-deep .fs-list-table .fs-list-body .fs-list-row .fs-list-col.drag-col mat-icon,::ng-deep .fs-list-table .fs-list-footer tr td.drag-col mat-icon,::ng-deep .fs-list-table .fs-list-footer tr th.drag-col mat-icon,::ng-deep .fs-list-table .fs-list-footer tr .fs-list-col.drag-col mat-icon,::ng-deep .fs-list-table .fs-list-footer .fs-list-row td.drag-col mat-icon,::ng-deep .fs-list-table .fs-list-footer .fs-list-row th.drag-col mat-icon,::ng-deep .fs-list-table .fs-list-footer .fs-list-row .fs-list-col.drag-col mat-icon{display:flex}::ng-deep .fs-list-table thead tr td.fs-list-col-selection,::ng-deep .fs-list-table thead tr th.fs-list-col-selection,::ng-deep .fs-list-table thead tr .fs-list-col.fs-list-col-selection,::ng-deep .fs-list-table thead .fs-list-row td.fs-list-col-selection,::ng-deep .fs-list-table thead .fs-list-row th.fs-list-col-selection,::ng-deep .fs-list-table thead .fs-list-row .fs-list-col.fs-list-col-selection,::ng-deep .fs-list-table tbody tr td.fs-list-col-selection,::ng-deep .fs-list-table tbody tr th.fs-list-col-selection,::ng-deep .fs-list-table tbody tr .fs-list-col.fs-list-col-selection,::ng-deep .fs-list-table tbody .fs-list-row td.fs-list-col-selection,::ng-deep .fs-list-table tbody .fs-list-row th.fs-list-col-selection,::ng-deep .fs-list-table tbody .fs-list-row .fs-list-col.fs-list-col-selection,::ng-deep .fs-list-table tfoot tr td.fs-list-col-selection,::ng-deep .fs-list-table tfoot tr th.fs-list-col-selection,::ng-deep .fs-list-table tfoot tr .fs-list-col.fs-list-col-selection,::ng-deep .fs-list-table tfoot .fs-list-row td.fs-list-col-selection,::ng-deep .fs-list-table tfoot .fs-list-row th.fs-list-col-selection,::ng-deep .fs-list-table tfoot .fs-list-row .fs-list-col.fs-list-col-selection,::ng-deep .fs-list-table .fs-list-head tr td.fs-list-col-selection,::ng-deep .fs-list-table .fs-list-head tr th.fs-list-col-selection,::ng-deep .fs-list-table .fs-list-head tr .fs-list-col.fs-list-col-selection,::ng-deep .fs-list-table .fs-list-head .fs-list-row td.fs-list-col-selection,::ng-deep .fs-list-table .fs-list-head .fs-list-row th.fs-list-col-selection,::ng-deep .fs-list-table .fs-list-head .fs-list-row .fs-list-col.fs-list-col-selection,::ng-deep .fs-list-table .fs-list-body tr td.fs-list-col-selection,::ng-deep .fs-list-table .fs-list-body tr th.fs-list-col-selection,::ng-deep .fs-list-table .fs-list-body tr .fs-list-col.fs-list-col-selection,::ng-deep .fs-list-table .fs-list-body .fs-list-row td.fs-list-col-selection,::ng-deep .fs-list-table .fs-list-body .fs-list-row th.fs-list-col-selection,::ng-deep .fs-list-table .fs-list-body .fs-list-row .fs-list-col.fs-list-col-selection,::ng-deep .fs-list-table .fs-list-footer tr td.fs-list-col-selection,::ng-deep .fs-list-table .fs-list-footer tr th.fs-list-col-selection,::ng-deep .fs-list-table .fs-list-footer tr .fs-list-col.fs-list-col-selection,::ng-deep .fs-list-table .fs-list-footer .fs-list-row td.fs-list-col-selection,::ng-deep .fs-list-table .fs-list-footer .fs-list-row th.fs-list-col-selection,::ng-deep .fs-list-table .fs-list-footer .fs-list-row .fs-list-col.fs-list-col-selection{padding:10px}::ng-deep .fs-list-table thead tr td.row-actions,::ng-deep .fs-list-table thead tr th.row-actions,::ng-deep .fs-list-table thead tr .fs-list-col.row-actions,::ng-deep .fs-list-table thead .fs-list-row td.row-actions,::ng-deep .fs-list-table thead .fs-list-row th.row-actions,::ng-deep .fs-list-table thead .fs-list-row .fs-list-col.row-actions,::ng-deep .fs-list-table tbody tr td.row-actions,::ng-deep .fs-list-table tbody tr th.row-actions,::ng-deep .fs-list-table tbody tr .fs-list-col.row-actions,::ng-deep .fs-list-table tbody .fs-list-row td.row-actions,::ng-deep .fs-list-table tbody .fs-list-row th.row-actions,::ng-deep .fs-list-table tbody .fs-list-row .fs-list-col.row-actions,::ng-deep .fs-list-table tfoot tr td.row-actions,::ng-deep .fs-list-table tfoot tr th.row-actions,::ng-deep .fs-list-table tfoot tr .fs-list-col.row-actions,::ng-deep .fs-list-table tfoot .fs-list-row td.row-actions,::ng-deep .fs-list-table tfoot .fs-list-row th.row-actions,::ng-deep .fs-list-table tfoot .fs-list-row .fs-list-col.row-actions,::ng-deep .fs-list-table .fs-list-head tr td.row-actions,::ng-deep .fs-list-table .fs-list-head tr th.row-actions,::ng-deep .fs-list-table .fs-list-head tr .fs-list-col.row-actions,::ng-deep .fs-list-table .fs-list-head .fs-list-row td.row-actions,::ng-deep .fs-list-table .fs-list-head .fs-list-row th.row-actions,::ng-deep .fs-list-table .fs-list-head .fs-list-row .fs-list-col.row-actions,::ng-deep .fs-list-table .fs-list-body tr td.row-actions,::ng-deep .fs-list-table .fs-list-body tr th.row-actions,::ng-deep .fs-list-table .fs-list-body tr .fs-list-col.row-actions,::ng-deep .fs-list-table .fs-list-body .fs-list-row td.row-actions,::ng-deep .fs-list-table .fs-list-body .fs-list-row th.row-actions,::ng-deep .fs-list-table .fs-list-body .fs-list-row .fs-list-col.row-actions,::ng-deep .fs-list-table .fs-list-footer tr td.row-actions,::ng-deep .fs-list-table .fs-list-footer tr th.row-actions,::ng-deep .fs-list-table .fs-list-footer tr .fs-list-col.row-actions,::ng-deep .fs-list-table .fs-list-footer .fs-list-row td.row-actions,::ng-deep .fs-list-table .fs-list-footer .fs-list-row th.row-actions,::ng-deep .fs-list-table .fs-list-footer .fs-list-row .fs-list-col.row-actions{width:1%;white-space:nowrap;padding-right:10px;overflow:hidden}::ng-deep .fs-list-table thead tr td.row-actions .row-inline-action,::ng-deep .fs-list-table thead tr th.row-actions .row-inline-action,::ng-deep .fs-list-table thead tr .fs-list-col.row-actions .row-inline-action,::ng-deep .fs-list-table thead .fs-list-row td.row-actions .row-inline-action,::ng-deep .fs-list-table thead .fs-list-row th.row-actions .row-inline-action,::ng-deep .fs-list-table thead .fs-list-row .fs-list-col.row-actions .row-inline-action,::ng-deep .fs-list-table tbody tr td.row-actions .row-inline-action,::ng-deep .fs-list-table tbody tr th.row-actions .row-inline-action,::ng-deep .fs-list-table tbody tr .fs-list-col.row-actions .row-inline-action,::ng-deep .fs-list-table tbody .fs-list-row td.row-actions .row-inline-action,::ng-deep .fs-list-table tbody .fs-list-row th.row-actions .row-inline-action,::ng-deep .fs-list-table tbody .fs-list-row .fs-list-col.row-actions .row-inline-action,::ng-deep .fs-list-table tfoot tr td.row-actions .row-inline-action,::ng-deep .fs-list-table tfoot tr th.row-actions .row-inline-action,::ng-deep .fs-list-table tfoot tr .fs-list-col.row-actions .row-inline-action,::ng-deep .fs-list-table tfoot .fs-list-row td.row-actions .row-inline-action,::ng-deep .fs-list-table tfoot .fs-list-row th.row-actions .row-inline-action,::ng-deep .fs-list-table tfoot .fs-list-row .fs-list-col.row-actions .row-inline-action,::ng-deep .fs-list-table .fs-list-head tr td.row-actions .row-inline-action,::ng-deep .fs-list-table .fs-list-head tr th.row-actions .row-inline-action,::ng-deep .fs-list-table .fs-list-head tr .fs-list-col.row-actions .row-inline-action,::ng-deep .fs-list-table .fs-list-head .fs-list-row td.row-actions .row-inline-action,::ng-deep .fs-list-table .fs-list-head .fs-list-row th.row-actions .row-inline-action,::ng-deep .fs-list-table .fs-list-head .fs-list-row .fs-list-col.row-actions .row-inline-action,::ng-deep .fs-list-table .fs-list-body tr td.row-actions .row-inline-action,::ng-deep .fs-list-table .fs-list-body tr th.row-actions .row-inline-action,::ng-deep .fs-list-table .fs-list-body tr .fs-list-col.row-actions .row-inline-action,::ng-deep .fs-list-table .fs-list-body .fs-list-row td.row-actions .row-inline-action,::ng-deep .fs-list-table .fs-list-body .fs-list-row th.row-actions .row-inline-action,::ng-deep .fs-list-table .fs-list-body .fs-list-row .fs-list-col.row-actions .row-inline-action,::ng-deep .fs-list-table .fs-list-footer tr td.row-actions .row-inline-action,::ng-deep .fs-list-table .fs-list-footer tr th.row-actions .row-inline-action,::ng-deep .fs-list-table .fs-list-footer tr .fs-list-col.row-actions .row-inline-action,::ng-deep .fs-list-table .fs-list-footer .fs-list-row td.row-actions .row-inline-action,::ng-deep .fs-list-table .fs-list-footer .fs-list-row th.row-actions .row-inline-action,::ng-deep .fs-list-table .fs-list-footer .fs-list-row .fs-list-col.row-actions .row-inline-action{margin-left:12px;display:inline-block}::ng-deep .fs-list-table thead tr td.row-actions .row-inline-action:first-child,::ng-deep .fs-list-table thead tr th.row-actions .row-inline-action:first-child,::ng-deep .fs-list-table thead tr .fs-list-col.row-actions .row-inline-action:first-child,::ng-deep .fs-list-table thead .fs-list-row td.row-actions .row-inline-action:first-child,::ng-deep .fs-list-table thead .fs-list-row th.row-actions .row-inline-action:first-child,::ng-deep .fs-list-table thead .fs-list-row .fs-list-col.row-actions .row-inline-action:first-child,::ng-deep .fs-list-table tbody tr td.row-actions .row-inline-action:first-child,::ng-deep .fs-list-table tbody tr th.row-actions .row-inline-action:first-child,::ng-deep .fs-list-table tbody tr .fs-list-col.row-actions .row-inline-action:first-child,::ng-deep .fs-list-table tbody .fs-list-row td.row-actions .row-inline-action:first-child,::ng-deep .fs-list-table tbody .fs-list-row th.row-actions .row-inline-action:first-child,::ng-deep .fs-list-table tbody .fs-list-row .fs-list-col.row-actions .row-inline-action:first-child,::ng-deep .fs-list-table tfoot tr td.row-actions .row-inline-action:first-child,::ng-deep .fs-list-table tfoot tr th.row-actions .row-inline-action:first-child,::ng-deep .fs-list-table tfoot tr .fs-list-col.row-actions .row-inline-action:first-child,::ng-deep .fs-list-table tfoot .fs-list-row td.row-actions .row-inline-action:first-child,::ng-deep .fs-list-table tfoot .fs-list-row th.row-actions .row-inline-action:first-child,::ng-deep .fs-list-table tfoot .fs-list-row .fs-list-col.row-actions .row-inline-action:first-child,::ng-deep .fs-list-table .fs-list-head tr td.row-actions .row-inline-action:first-child,::ng-deep .fs-list-table .fs-list-head tr th.row-actions .row-inline-action:first-child,::ng-deep .fs-list-table .fs-list-head tr .fs-list-col.row-actions .row-inline-action:first-child,::ng-deep .fs-list-table .fs-list-head .fs-list-row td.row-actions .row-inline-action:first-child,::ng-deep .fs-list-table .fs-list-head .fs-list-row th.row-actions .row-inline-action:first-child,::ng-deep .fs-list-table .fs-list-head .fs-list-row .fs-list-col.row-actions .row-inline-action:first-child,::ng-deep .fs-list-table .fs-list-body tr td.row-actions .row-inline-action:first-child,::ng-deep .fs-list-table .fs-list-body tr th.row-actions .row-inline-action:first-child,::ng-deep .fs-list-table .fs-list-body tr .fs-list-col.row-actions .row-inline-action:first-child,::ng-deep .fs-list-table .fs-list-body .fs-list-row td.row-actions .row-inline-action:first-child,::ng-deep .fs-list-table .fs-list-body .fs-list-row th.row-actions .row-inline-action:first-child,::ng-deep .fs-list-table .fs-list-body .fs-list-row .fs-list-col.row-actions .row-inline-action:first-child,::ng-deep .fs-list-table .fs-list-footer tr td.row-actions .row-inline-action:first-child,::ng-deep .fs-list-table .fs-list-footer tr th.row-actions .row-inline-action:first-child,::ng-deep .fs-list-table .fs-list-footer tr .fs-list-col.row-actions .row-inline-action:first-child,::ng-deep .fs-list-table .fs-list-footer .fs-list-row td.row-actions .row-inline-action:first-child,::ng-deep .fs-list-table .fs-list-footer .fs-list-row th.row-actions .row-inline-action:first-child,::ng-deep .fs-list-table .fs-list-footer .fs-list-row .fs-list-col.row-actions .row-inline-action:first-child{margin-left:0}::ng-deep .fs-list-table thead tr td.row-actions .row-inline-action-icon,::ng-deep .fs-list-table thead tr td.row-actions .row-inline-action-fab,::ng-deep .fs-list-table thead tr td.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list-table thead tr td.row-actions .row-menu-action,::ng-deep .fs-list-table thead tr th.row-actions .row-inline-action-icon,::ng-deep .fs-list-table thead tr th.row-actions .row-inline-action-fab,::ng-deep .fs-list-table thead tr th.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list-table thead tr th.row-actions .row-menu-action,::ng-deep .fs-list-table thead tr .fs-list-col.row-actions .row-inline-action-icon,::ng-deep .fs-list-table thead tr .fs-list-col.row-actions .row-inline-action-fab,::ng-deep .fs-list-table thead tr .fs-list-col.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list-table thead tr .fs-list-col.row-actions .row-menu-action,::ng-deep .fs-list-table thead .fs-list-row td.row-actions .row-inline-action-icon,::ng-deep .fs-list-table thead .fs-list-row td.row-actions .row-inline-action-fab,::ng-deep .fs-list-table thead .fs-list-row td.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list-table thead .fs-list-row td.row-actions .row-menu-action,::ng-deep .fs-list-table thead .fs-list-row th.row-actions .row-inline-action-icon,::ng-deep .fs-list-table thead .fs-list-row th.row-actions .row-inline-action-fab,::ng-deep .fs-list-table thead .fs-list-row th.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list-table thead .fs-list-row th.row-actions .row-menu-action,::ng-deep .fs-list-table thead .fs-list-row .fs-list-col.row-actions .row-inline-action-icon,::ng-deep .fs-list-table thead .fs-list-row .fs-list-col.row-actions .row-inline-action-fab,::ng-deep .fs-list-table thead .fs-list-row .fs-list-col.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list-table thead .fs-list-row .fs-list-col.row-actions .row-menu-action,::ng-deep .fs-list-table tbody tr td.row-actions .row-inline-action-icon,::ng-deep .fs-list-table tbody tr td.row-actions .row-inline-action-fab,::ng-deep .fs-list-table tbody tr td.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list-table tbody tr td.row-actions .row-menu-action,::ng-deep .fs-list-table tbody tr th.row-actions .row-inline-action-icon,::ng-deep .fs-list-table tbody tr th.row-actions .row-inline-action-fab,::ng-deep .fs-list-table tbody tr th.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list-table tbody tr th.row-actions .row-menu-action,::ng-deep .fs-list-table tbody tr .fs-list-col.row-actions .row-inline-action-icon,::ng-deep .fs-list-table tbody tr .fs-list-col.row-actions .row-inline-action-fab,::ng-deep .fs-list-table tbody tr .fs-list-col.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list-table tbody tr .fs-list-col.row-actions .row-menu-action,::ng-deep .fs-list-table tbody .fs-list-row td.row-actions .row-inline-action-icon,::ng-deep .fs-list-table tbody .fs-list-row td.row-actions .row-inline-action-fab,::ng-deep .fs-list-table tbody .fs-list-row td.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list-table tbody .fs-list-row td.row-actions .row-menu-action,::ng-deep .fs-list-table tbody .fs-list-row th.row-actions .row-inline-action-icon,::ng-deep .fs-list-table tbody .fs-list-row th.row-actions .row-inline-action-fab,::ng-deep .fs-list-table tbody .fs-list-row th.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list-table tbody .fs-list-row th.row-actions .row-menu-action,::ng-deep .fs-list-table tbody .fs-list-row .fs-list-col.row-actions .row-inline-action-icon,::ng-deep .fs-list-table tbody .fs-list-row .fs-list-col.row-actions .row-inline-action-fab,::ng-deep .fs-list-table tbody .fs-list-row .fs-list-col.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list-table tbody .fs-list-row .fs-list-col.row-actions .row-menu-action,::ng-deep .fs-list-table tfoot tr td.row-actions .row-inline-action-icon,::ng-deep .fs-list-table tfoot tr td.row-actions .row-inline-action-fab,::ng-deep .fs-list-table tfoot tr td.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list-table tfoot tr td.row-actions .row-menu-action,::ng-deep .fs-list-table tfoot tr th.row-actions .row-inline-action-icon,::ng-deep .fs-list-table tfoot tr th.row-actions .row-inline-action-fab,::ng-deep .fs-list-table tfoot tr th.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list-table tfoot tr th.row-actions .row-menu-action,::ng-deep .fs-list-table tfoot tr .fs-list-col.row-actions .row-inline-action-icon,::ng-deep .fs-list-table tfoot tr .fs-list-col.row-actions .row-inline-action-fab,::ng-deep .fs-list-table tfoot tr .fs-list-col.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list-table tfoot tr .fs-list-col.row-actions .row-menu-action,::ng-deep .fs-list-table tfoot .fs-list-row td.row-actions .row-inline-action-icon,::ng-deep .fs-list-table tfoot .fs-list-row td.row-actions .row-inline-action-fab,::ng-deep .fs-list-table tfoot .fs-list-row td.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list-table tfoot .fs-list-row td.row-actions .row-menu-action,::ng-deep .fs-list-table tfoot .fs-list-row th.row-actions .row-inline-action-icon,::ng-deep .fs-list-table tfoot .fs-list-row th.row-actions .row-inline-action-fab,::ng-deep .fs-list-table tfoot .fs-list-row th.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list-table tfoot .fs-list-row th.row-actions .row-menu-action,::ng-deep .fs-list-table tfoot .fs-list-row .fs-list-col.row-actions .row-inline-action-icon,::ng-deep .fs-list-table tfoot .fs-list-row .fs-list-col.row-actions .row-inline-action-fab,::ng-deep .fs-list-table tfoot .fs-list-row .fs-list-col.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list-table tfoot .fs-list-row .fs-list-col.row-actions .row-menu-action,::ng-deep .fs-list-table .fs-list-head tr td.row-actions .row-inline-action-icon,::ng-deep .fs-list-table .fs-list-head tr td.row-actions .row-inline-action-fab,::ng-deep .fs-list-table .fs-list-head tr td.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list-table .fs-list-head tr td.row-actions .row-menu-action,::ng-deep .fs-list-table .fs-list-head tr th.row-actions .row-inline-action-icon,::ng-deep .fs-list-table .fs-list-head tr th.row-actions .row-inline-action-fab,::ng-deep .fs-list-table .fs-list-head tr th.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list-table .fs-list-head tr th.row-actions .row-menu-action,::ng-deep .fs-list-table .fs-list-head tr .fs-list-col.row-actions .row-inline-action-icon,::ng-deep .fs-list-table .fs-list-head tr .fs-list-col.row-actions .row-inline-action-fab,::ng-deep .fs-list-table .fs-list-head tr .fs-list-col.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list-table .fs-list-head tr .fs-list-col.row-actions .row-menu-action,::ng-deep .fs-list-table .fs-list-head .fs-list-row td.row-actions .row-inline-action-icon,::ng-deep .fs-list-table .fs-list-head .fs-list-row td.row-actions .row-inline-action-fab,::ng-deep .fs-list-table .fs-list-head .fs-list-row td.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list-table .fs-list-head .fs-list-row td.row-actions .row-menu-action,::ng-deep .fs-list-table .fs-list-head .fs-list-row th.row-actions .row-inline-action-icon,::ng-deep .fs-list-table .fs-list-head .fs-list-row th.row-actions .row-inline-action-fab,::ng-deep .fs-list-table .fs-list-head .fs-list-row th.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list-table .fs-list-head .fs-list-row th.row-actions .row-menu-action,::ng-deep .fs-list-table .fs-list-head .fs-list-row .fs-list-col.row-actions .row-inline-action-icon,::ng-deep .fs-list-table .fs-list-head .fs-list-row .fs-list-col.row-actions .row-inline-action-fab,::ng-deep .fs-list-table .fs-list-head .fs-list-row .fs-list-col.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list-table .fs-list-head .fs-list-row .fs-list-col.row-actions .row-menu-action,::ng-deep .fs-list-table .fs-list-body tr td.row-actions .row-inline-action-icon,::ng-deep .fs-list-table .fs-list-body tr td.row-actions .row-inline-action-fab,::ng-deep .fs-list-table .fs-list-body tr td.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list-table .fs-list-body tr td.row-actions .row-menu-action,::ng-deep .fs-list-table .fs-list-body tr th.row-actions .row-inline-action-icon,::ng-deep .fs-list-table .fs-list-body tr th.row-actions .row-inline-action-fab,::ng-deep .fs-list-table .fs-list-body tr th.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list-table .fs-list-body tr th.row-actions .row-menu-action,::ng-deep .fs-list-table .fs-list-body tr .fs-list-col.row-actions .row-inline-action-icon,::ng-deep .fs-list-table .fs-list-body tr .fs-list-col.row-actions .row-inline-action-fab,::ng-deep .fs-list-table .fs-list-body tr .fs-list-col.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list-table .fs-list-body tr .fs-list-col.row-actions .row-menu-action,::ng-deep .fs-list-table .fs-list-body .fs-list-row td.row-actions .row-inline-action-icon,::ng-deep .fs-list-table .fs-list-body .fs-list-row td.row-actions .row-inline-action-fab,::ng-deep .fs-list-table .fs-list-body .fs-list-row td.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list-table .fs-list-body .fs-list-row td.row-actions .row-menu-action,::ng-deep .fs-list-table .fs-list-body .fs-list-row th.row-actions .row-inline-action-icon,::ng-deep .fs-list-table .fs-list-body .fs-list-row th.row-actions .row-inline-action-fab,::ng-deep .fs-list-table .fs-list-body .fs-list-row th.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list-table .fs-list-body .fs-list-row th.row-actions .row-menu-action,::ng-deep .fs-list-table .fs-list-body .fs-list-row .fs-list-col.row-actions .row-inline-action-icon,::ng-deep .fs-list-table .fs-list-body .fs-list-row .fs-list-col.row-actions .row-inline-action-fab,::ng-deep .fs-list-table .fs-list-body .fs-list-row .fs-list-col.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list-table .fs-list-body .fs-list-row .fs-list-col.row-actions .row-menu-action,::ng-deep .fs-list-table .fs-list-footer tr td.row-actions .row-inline-action-icon,::ng-deep .fs-list-table .fs-list-footer tr td.row-actions .row-inline-action-fab,::ng-deep .fs-list-table .fs-list-footer tr td.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list-table .fs-list-footer tr td.row-actions .row-menu-action,::ng-deep .fs-list-table .fs-list-footer tr th.row-actions .row-inline-action-icon,::ng-deep .fs-list-table .fs-list-footer tr th.row-actions .row-inline-action-fab,::ng-deep .fs-list-table .fs-list-footer tr th.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list-table .fs-list-footer tr th.row-actions .row-menu-action,::ng-deep .fs-list-table .fs-list-footer tr .fs-list-col.row-actions .row-inline-action-icon,::ng-deep .fs-list-table .fs-list-footer tr .fs-list-col.row-actions .row-inline-action-fab,::ng-deep .fs-list-table .fs-list-footer tr .fs-list-col.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list-table .fs-list-footer tr .fs-list-col.row-actions .row-menu-action,::ng-deep .fs-list-table .fs-list-footer .fs-list-row td.row-actions .row-inline-action-icon,::ng-deep .fs-list-table .fs-list-footer .fs-list-row td.row-actions .row-inline-action-fab,::ng-deep .fs-list-table .fs-list-footer .fs-list-row td.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list-table .fs-list-footer .fs-list-row td.row-actions .row-menu-action,::ng-deep .fs-list-table .fs-list-footer .fs-list-row th.row-actions .row-inline-action-icon,::ng-deep .fs-list-table .fs-list-footer .fs-list-row th.row-actions .row-inline-action-fab,::ng-deep .fs-list-table .fs-list-footer .fs-list-row th.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list-table .fs-list-footer .fs-list-row th.row-actions .row-menu-action,::ng-deep .fs-list-table .fs-list-footer .fs-list-row .fs-list-col.row-actions .row-inline-action-icon,::ng-deep .fs-list-table .fs-list-footer .fs-list-row .fs-list-col.row-actions .row-inline-action-fab,::ng-deep .fs-list-table .fs-list-footer .fs-list-row .fs-list-col.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list-table .fs-list-footer .fs-list-row .fs-list-col.row-actions .row-menu-action{width:35px;justify-content:center;align-items:center}::ng-deep .fs-list-table thead tr td.left,::ng-deep .fs-list-table thead tr th.left,::ng-deep .fs-list-table thead tr .fs-list-col.left,::ng-deep .fs-list-table thead .fs-list-row td.left,::ng-deep .fs-list-table thead .fs-list-row th.left,::ng-deep .fs-list-table thead .fs-list-row .fs-list-col.left,::ng-deep .fs-list-table tbody tr td.left,::ng-deep .fs-list-table tbody tr th.left,::ng-deep .fs-list-table tbody tr .fs-list-col.left,::ng-deep .fs-list-table tbody .fs-list-row td.left,::ng-deep .fs-list-table tbody .fs-list-row th.left,::ng-deep .fs-list-table tbody .fs-list-row .fs-list-col.left,::ng-deep .fs-list-table tfoot tr td.left,::ng-deep .fs-list-table tfoot tr th.left,::ng-deep .fs-list-table tfoot tr .fs-list-col.left,::ng-deep .fs-list-table tfoot .fs-list-row td.left,::ng-deep .fs-list-table tfoot .fs-list-row th.left,::ng-deep .fs-list-table tfoot .fs-list-row .fs-list-col.left,::ng-deep .fs-list-table .fs-list-head tr td.left,::ng-deep .fs-list-table .fs-list-head tr th.left,::ng-deep .fs-list-table .fs-list-head tr .fs-list-col.left,::ng-deep .fs-list-table .fs-list-head .fs-list-row td.left,::ng-deep .fs-list-table .fs-list-head .fs-list-row th.left,::ng-deep .fs-list-table .fs-list-head .fs-list-row .fs-list-col.left,::ng-deep .fs-list-table .fs-list-body tr td.left,::ng-deep .fs-list-table .fs-list-body tr th.left,::ng-deep .fs-list-table .fs-list-body tr .fs-list-col.left,::ng-deep .fs-list-table .fs-list-body .fs-list-row td.left,::ng-deep .fs-list-table .fs-list-body .fs-list-row th.left,::ng-deep .fs-list-table .fs-list-body .fs-list-row .fs-list-col.left,::ng-deep .fs-list-table .fs-list-footer tr td.left,::ng-deep .fs-list-table .fs-list-footer tr th.left,::ng-deep .fs-list-table .fs-list-footer tr .fs-list-col.left,::ng-deep .fs-list-table .fs-list-footer .fs-list-row td.left,::ng-deep .fs-list-table .fs-list-footer .fs-list-row th.left,::ng-deep .fs-list-table .fs-list-footer .fs-list-row .fs-list-col.left{text-align:left}::ng-deep .fs-list-table thead tr td.center,::ng-deep .fs-list-table thead tr th.center,::ng-deep .fs-list-table thead tr .fs-list-col.center,::ng-deep .fs-list-table thead .fs-list-row td.center,::ng-deep .fs-list-table thead .fs-list-row th.center,::ng-deep .fs-list-table thead .fs-list-row .fs-list-col.center,::ng-deep .fs-list-table tbody tr td.center,::ng-deep .fs-list-table tbody tr th.center,::ng-deep .fs-list-table tbody tr .fs-list-col.center,::ng-deep .fs-list-table tbody .fs-list-row td.center,::ng-deep .fs-list-table tbody .fs-list-row th.center,::ng-deep .fs-list-table tbody .fs-list-row .fs-list-col.center,::ng-deep .fs-list-table tfoot tr td.center,::ng-deep .fs-list-table tfoot tr th.center,::ng-deep .fs-list-table tfoot tr .fs-list-col.center,::ng-deep .fs-list-table tfoot .fs-list-row td.center,::ng-deep .fs-list-table tfoot .fs-list-row th.center,::ng-deep .fs-list-table tfoot .fs-list-row .fs-list-col.center,::ng-deep .fs-list-table .fs-list-head tr td.center,::ng-deep .fs-list-table .fs-list-head tr th.center,::ng-deep .fs-list-table .fs-list-head tr .fs-list-col.center,::ng-deep .fs-list-table .fs-list-head .fs-list-row td.center,::ng-deep .fs-list-table .fs-list-head .fs-list-row th.center,::ng-deep .fs-list-table .fs-list-head .fs-list-row .fs-list-col.center,::ng-deep .fs-list-table .fs-list-body tr td.center,::ng-deep .fs-list-table .fs-list-body tr th.center,::ng-deep .fs-list-table .fs-list-body tr .fs-list-col.center,::ng-deep .fs-list-table .fs-list-body .fs-list-row td.center,::ng-deep .fs-list-table .fs-list-body .fs-list-row th.center,::ng-deep .fs-list-table .fs-list-body .fs-list-row .fs-list-col.center,::ng-deep .fs-list-table .fs-list-footer tr td.center,::ng-deep .fs-list-table .fs-list-footer tr th.center,::ng-deep .fs-list-table .fs-list-footer tr .fs-list-col.center,::ng-deep .fs-list-table .fs-list-footer .fs-list-row td.center,::ng-deep .fs-list-table .fs-list-footer .fs-list-row th.center,::ng-deep .fs-list-table .fs-list-footer .fs-list-row .fs-list-col.center{text-align:center}::ng-deep .fs-list-table thead tr td.right,::ng-deep .fs-list-table thead tr th.right,::ng-deep .fs-list-table thead tr .fs-list-col.right,::ng-deep .fs-list-table thead .fs-list-row td.right,::ng-deep .fs-list-table thead .fs-list-row th.right,::ng-deep .fs-list-table thead .fs-list-row .fs-list-col.right,::ng-deep .fs-list-table tbody tr td.right,::ng-deep .fs-list-table tbody tr th.right,::ng-deep .fs-list-table tbody tr .fs-list-col.right,::ng-deep .fs-list-table tbody .fs-list-row td.right,::ng-deep .fs-list-table tbody .fs-list-row th.right,::ng-deep .fs-list-table tbody .fs-list-row .fs-list-col.right,::ng-deep .fs-list-table tfoot tr td.right,::ng-deep .fs-list-table tfoot tr th.right,::ng-deep .fs-list-table tfoot tr .fs-list-col.right,::ng-deep .fs-list-table tfoot .fs-list-row td.right,::ng-deep .fs-list-table tfoot .fs-list-row th.right,::ng-deep .fs-list-table tfoot .fs-list-row .fs-list-col.right,::ng-deep .fs-list-table .fs-list-head tr td.right,::ng-deep .fs-list-table .fs-list-head tr th.right,::ng-deep .fs-list-table .fs-list-head tr .fs-list-col.right,::ng-deep .fs-list-table .fs-list-head .fs-list-row td.right,::ng-deep .fs-list-table .fs-list-head .fs-list-row th.right,::ng-deep .fs-list-table .fs-list-head .fs-list-row .fs-list-col.right,::ng-deep .fs-list-table .fs-list-body tr td.right,::ng-deep .fs-list-table .fs-list-body tr th.right,::ng-deep .fs-list-table .fs-list-body tr .fs-list-col.right,::ng-deep .fs-list-table .fs-list-body .fs-list-row td.right,::ng-deep .fs-list-table .fs-list-body .fs-list-row th.right,::ng-deep .fs-list-table .fs-list-body .fs-list-row .fs-list-col.right,::ng-deep .fs-list-table .fs-list-footer tr td.right,::ng-deep .fs-list-table .fs-list-footer tr th.right,::ng-deep .fs-list-table .fs-list-footer tr .fs-list-col.right,::ng-deep .fs-list-table .fs-list-footer .fs-list-row td.right,::ng-deep .fs-list-table .fs-list-footer .fs-list-row th.right,::ng-deep .fs-list-table .fs-list-footer .fs-list-row .fs-list-col.right{text-align:right}::ng-deep .fs-list-table thead tr.draggable,::ng-deep .fs-list-table thead .fs-list-row.draggable,::ng-deep .fs-list-table tbody tr.draggable,::ng-deep .fs-list-table tbody .fs-list-row.draggable,::ng-deep .fs-list-table tfoot tr.draggable,::ng-deep .fs-list-table tfoot .fs-list-row.draggable,::ng-deep .fs-list-table .fs-list-head tr.draggable,::ng-deep .fs-list-table .fs-list-head .fs-list-row.draggable,::ng-deep .fs-list-table .fs-list-body tr.draggable,::ng-deep .fs-list-table .fs-list-body .fs-list-row.draggable,::ng-deep .fs-list-table .fs-list-footer tr.draggable,::ng-deep .fs-list-table .fs-list-footer .fs-list-row.draggable{position:fixed;z-index:9999;box-shadow:2px 2px 2px #9e9e9ea6;border-radius:5px;background-color:#f6f6f6}::ng-deep .fs-list-table thead tr.draggable td,::ng-deep .fs-list-table thead tr.draggable .fs-list-col,::ng-deep .fs-list-table thead .fs-list-row.draggable td,::ng-deep .fs-list-table thead .fs-list-row.draggable .fs-list-col,::ng-deep .fs-list-table tbody tr.draggable td,::ng-deep .fs-list-table tbody tr.draggable .fs-list-col,::ng-deep .fs-list-table tbody .fs-list-row.draggable td,::ng-deep .fs-list-table tbody .fs-list-row.draggable .fs-list-col,::ng-deep .fs-list-table tfoot tr.draggable td,::ng-deep .fs-list-table tfoot tr.draggable .fs-list-col,::ng-deep .fs-list-table tfoot .fs-list-row.draggable td,::ng-deep .fs-list-table tfoot .fs-list-row.draggable .fs-list-col,::ng-deep .fs-list-table .fs-list-head tr.draggable td,::ng-deep .fs-list-table .fs-list-head tr.draggable .fs-list-col,::ng-deep .fs-list-table .fs-list-head .fs-list-row.draggable td,::ng-deep .fs-list-table .fs-list-head .fs-list-row.draggable .fs-list-col,::ng-deep .fs-list-table .fs-list-body tr.draggable td,::ng-deep .fs-list-table .fs-list-body tr.draggable .fs-list-col,::ng-deep .fs-list-table .fs-list-body .fs-list-row.draggable td,::ng-deep .fs-list-table .fs-list-body .fs-list-row.draggable .fs-list-col,::ng-deep .fs-list-table .fs-list-footer tr.draggable td,::ng-deep .fs-list-table .fs-list-footer tr.draggable .fs-list-col,::ng-deep .fs-list-table .fs-list-footer .fs-list-row.draggable td,::ng-deep .fs-list-table .fs-list-footer .fs-list-row.draggable .fs-list-col{border:none}::ng-deep .fs-list-table .fs-list-container.has-dragging thead th{border-bottom:2px solid #ddd}::ng-deep .fs-list-table .fs-list-container.has-dragging tbody tr:nth-child(2) td{border-top:none}::ng-deep .fs-list-table tfoot td{padding:8px}::ng-deep .reorder-in-progress{-webkit-user-select:none;user-select:none}::ng-deep .draggable-elem td{opacity:.2}::ng-deep .hidden-mobile-menu-action{display:none!important}::ng-deep .hidden-mobile{display:none!important}@media only screen and (max-width: 600px){::ng-deep .fs-list-filter .inline-actions{top:initial!important;position:initial!important}::ng-deep .fs-list-filter .inline-actions .action-filter{margin-bottom:0!important}::ng-deep .fs-list-header .filter-input-field .mat-form-field-wrapper{padding:0!important}::ng-deep .fs-list-header.has-filters{flex-flow:row wrap}}@media only screen and (max-width: 768px){::ng-deep .show-mobile{display:inline-block!important}::ng-deep .fs-list-actions .action-button{display:none}::ng-deep .row-inline-action.mobile-hide{display:none}::ng-deep .hidden-mobile-menu-action{display:block!important}}\n"], components: [{ type: i10.FilterComponent, selector: "fs-filter", inputs: ["config", "filter", "showSortBy", "showFilterInput"], outputs: ["closed", "opened", "ready"] }, { type: i11.FsStatusComponent, selector: "fs-list-status", inputs: ["paging", "sorting", "rows", "scrollable", "firstLoad"] }, { type: i12.FsHeadComponent, selector: "[fs-list-head]", inputs: ["sorting", "columns", "hasRowActions", "selection", "activeFiltersCount", "reorderEnabled", "reorderPosition", "reorderStrategy"] }, { type: i13.FsBodyComponent, selector: "[fs-list-body]", inputs: ["rows", "columns", "hasFooter", "rowActionsRaw", "groupActionsRaw", "rowEvents", "rowClass", "hasRowActions", "selection", "restoreMode", "rowRemoved", "activeFiltersCount", "reorderEnabled", "reorderPosition", "reorderStrategy", "reorderMultiple"] }, { type: i14.FsFooterComponent, selector: "[fs-list-footer]", inputs: ["hasRowActions", "columns", "selection", "activeFiltersCount", "reorderEnabled", "reorderPosition", "reorderStrategy"] }, { type: i15.FsListLoaderComponent, selector: "fs-list-loader", inputs: ["columns", "loaderLines"] }, { type: i16.FsPaginationComponent, selector: "fs-list-pagination", inputs: ["pagination", "rows"] }], directives: [{ type: i9.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i9.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i9.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i10.FilterStatusBarDirective, selector: "[fsFilterStatusBar]" }, { type: i17.FsListContentInitDirective, selector: "[fsListContentInit]", inputs: ["fsListContentInit"] }, { type: i18.FsListDraggableListDirective, selector: "[fsListDraggableList]", inputs: ["rows"] }, { type: i19.FsListFooterDirective, selector: "[fs-list-footer]", inputs: ["colspan", "align", "class"] }], pipes: { "async": i9.AsyncPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
329
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsListComponent, decorators: [{
330
- type: Component,
331
- args: [{
332
- selector: 'fs-list',
333
- templateUrl: 'list.component.html',
334
- styleUrls: ['./list.component.scss'],
335
- changeDetection: ChangeDetectionStrategy.OnPush,
336
- providers: [
337
- GroupExpandNotifierService,
338
- PersistanceController,
339
- ReorderController,
340
- ]
341
- }]
342
- }], ctorParameters: function () { return [{ type: i1.ReorderController }, { type: undefined, decorators: [{
343
- type: Optional
344
- }, {
345
- type: Inject,
346
- args: [FS_LIST_DEFAULT_CONFIG]
347
- }] }, { type: i2.FsScrollService, decorators: [{
348
- type: Optional
349
- }] }, { type: i3.MatDialogRef, decorators: [{
350
- type: Optional
351
- }] }, { type: i4.DrawerRef, decorators: [{
352
- type: Optional
353
- }] }, { type: i0.ElementRef }, { type: i5.SelectionDialog }, { type: i3.MatDialog }, { type: i0.ChangeDetectorRef }, { type: i6.GroupExpandNotifierService }, { type: i7.Router }, { type: i7.ActivatedRoute }, { type: i8.PersistanceController }, { type: i9.Location }]; }, propDecorators: { classFsList: [{
354
- type: HostBinding,
355
- args: ['class.fs-list']
356
- }], config: [{
357
- type: Input,
358
- args: ['config']
359
- }], loaderLines: [{
360
- type: Input
361
- }], filtersReady: [{
362
- type: Output
363
- }], filterReference: [{
364
- type: ViewChild,
365
- args: [FilterComponent]
366
- }], columnTemplates: [{
367
- type: ContentChildren,
368
- args: [FsListColumnDirective]
369
- }], _emptyStateTemplate: [{
370
- type: ContentChild,
371
- args: [FsListEmptyStateDirective, { read: TemplateRef }]
372
- }], headingTemplate: [{
373
- type: ContentChild,
374
- args: [FsListHeadingDirective, { read: TemplateRef }]
375
- }], headingContainerTemplate: [{
376
- type: ContentChild,
377
- args: [FsListHeadingContainerDirective, { read: TemplateRef }]
378
- }], subheadingTemplate: [{
379
- type: ContentChild,
380
- args: [FsListSubheadingDirective, { read: TemplateRef }]
381
- }] } });
1
+ import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChildren, ElementRef, EventEmitter, Inject, Input, QueryList, ViewChild, HostBinding, Optional, ContentChild, TemplateRef, Output, } from '@angular/core';
2
+ import { ActivatedRoute, Router } from '@angular/router';
3
+ import { Location } from '@angular/common';
4
+ import { MatDialog, MatDialogRef } from '@angular/material/dialog';
5
+ import { Subject } from 'rxjs';
6
+ import { filter, skip, take, takeUntil } from 'rxjs/operators';
7
+ import { FsScrollService } from '@firestitch/scroll';
8
+ import { FilterComponent } from '@firestitch/filter';
9
+ import { SelectionDialog } from '@firestitch/selection';
10
+ import { getNormalizedPath } from '@firestitch/common';
11
+ import { DrawerRef } from '@firestitch/drawer';
12
+ import { cloneDeep, mergeWith } from 'lodash-es';
13
+ import { List } from '../../classes/list-controller';
14
+ import { ReorderController } from '../../classes/reorder-controller';
15
+ import { FsListColumnDirective } from '../../directives/column/column.directive';
16
+ import { FsListEmptyStateDirective } from '../../directives/empty-state/empty-state.directive';
17
+ import { FS_LIST_DEFAULT_CONFIG } from '../../fs-list.providers';
18
+ import { CustomizeColsDialogComponent } from '../customize-cols/customize-cols.component';
19
+ import { GroupExpandNotifierService } from '../../services/group-expand-notifier.service';
20
+ import { PersistanceController } from '../../classes/persistance-controller';
21
+ import { FsListHeadingContainerDirective, FsListHeadingDirective, FsListSubheadingDirective } from '../../directives';
22
+ import * as i0 from "@angular/core";
23
+ import * as i1 from "../../classes/reorder-controller";
24
+ import * as i2 from "@firestitch/scroll";
25
+ import * as i3 from "@angular/material/dialog";
26
+ import * as i4 from "@firestitch/drawer";
27
+ import * as i5 from "@firestitch/selection";
28
+ import * as i6 from "../../services/group-expand-notifier.service";
29
+ import * as i7 from "@angular/router";
30
+ import * as i8 from "../../classes/persistance-controller";
31
+ import * as i9 from "@angular/common";
32
+ import * as i10 from "@firestitch/filter";
33
+ import * as i11 from "../status/status.component";
34
+ import * as i12 from "../head/head.component";
35
+ import * as i13 from "../body/body.component";
36
+ import * as i14 from "../footer/footer.component";
37
+ import * as i15 from "../loader/loader.component";
38
+ import * as i16 from "../pagination/pagination.component";
39
+ import * as i17 from "../../directives/content-init/content-init.directive";
40
+ import * as i18 from "../../directives/draggable-list/draggable-list.directive";
41
+ import * as i19 from "../../directives/footer/footer.directive";
42
+ export class FsListComponent {
43
+ constructor(reorderController, _defaultOptions, fsScroll, _dialogRef, _drawerRef, _el, selectionDialog, dialog, cdRef, _groupExpandNotifier, _router, _route, _persistance, _location) {
44
+ this.reorderController = reorderController;
45
+ this._defaultOptions = _defaultOptions;
46
+ this.fsScroll = fsScroll;
47
+ this._dialogRef = _dialogRef;
48
+ this._drawerRef = _drawerRef;
49
+ this._el = _el;
50
+ this.selectionDialog = selectionDialog;
51
+ this.dialog = dialog;
52
+ this.cdRef = cdRef;
53
+ this._groupExpandNotifier = _groupExpandNotifier;
54
+ this._router = _router;
55
+ this._route = _route;
56
+ this._persistance = _persistance;
57
+ this._location = _location;
58
+ this.classFsList = true;
59
+ this.loaderLines = 3;
60
+ this.filtersReady = new EventEmitter();
61
+ this.keywordVisible = true;
62
+ // Event will fired if action remove: true will clicked
63
+ this.rowRemoved = new EventEmitter();
64
+ this.firstLoad = true;
65
+ this._filterParamsReady = false;
66
+ this._inDialog = !!this._dialogRef || !!this._drawerRef;
67
+ this._destroy = new Subject();
68
+ }
69
+ set config(config) {
70
+ this._initWithConfig(config);
71
+ }
72
+ set filterReference(component) {
73
+ this._filterRef = component;
74
+ this.list.actions.setFilterRef(component);
75
+ this._emitFiltersReadyEvent();
76
+ }
77
+ /**
78
+ * Set columns to config
79
+ * Create Column Model instances
80
+ *
81
+ */
82
+ set columnTemplates(listColumnDirectives) {
83
+ this.listColumnDirectives = listColumnDirectives;
84
+ if (this.list) {
85
+ this.list.tranformTemplatesToColumns(listColumnDirectives);
86
+ }
87
+ }
88
+ set _emptyStateTemplate(template) {
89
+ if (this.list) {
90
+ this.list.emptyStateTemplate = template;
91
+ }
92
+ }
93
+ /**
94
+ * Return reference for filter
95
+ */
96
+ get filterRef() {
97
+ return this._filterRef;
98
+ }
99
+ get groupEnabled() {
100
+ return this.list.dataController.groupEnabled;
101
+ }
102
+ get hasFilterKeyword() {
103
+ return this.list.filterInput && this.keywordVisible;
104
+ }
105
+ get hasStatus() {
106
+ return this.list.status &&
107
+ (this.list.sorting.isDefined || this.list.paging.enabled) &&
108
+ (!this.reorderController.enabled || (this.reorderController.enabled && this.reorderController.status)) &&
109
+ ((this.list.scrollable && this.list.scrollable.status) || !this.list.scrollable);
110
+ }
111
+ get paginatorVisible() {
112
+ return this.list.paging.enabled
113
+ && !this.firstLoad
114
+ && !this.list.scrollable
115
+ && !this.list.emptyStateEnabled
116
+ && this.list.dataController.visibleRowsCount > 0
117
+ && this.list.paging.pages > 1;
118
+ }
119
+ set groupEnabled(value) {
120
+ this.list.groupEnabled(value);
121
+ }
122
+ get filtersQuery() {
123
+ return this.list.filtersQuery;
124
+ }
125
+ ngAfterContentInit() {
126
+ if (this.list.afterInit) {
127
+ this.list.afterInit(this);
128
+ }
129
+ }
130
+ ngOnInit() {
131
+ this._subscribeToRemoveRow();
132
+ this._subscribeToGroupExpandStatusChange();
133
+ }
134
+ ngOnDestroy() {
135
+ if (this.list) {
136
+ this.list.destroy();
137
+ }
138
+ this._destroy.next();
139
+ this._destroy.complete();
140
+ }
141
+ nextPage() {
142
+ this.list.paging.goNext();
143
+ }
144
+ prevPage() {
145
+ this.list.paging.goPrev();
146
+ }
147
+ firstPage() {
148
+ this.list.paging.goFirst();
149
+ }
150
+ lastPage() {
151
+ this.list.paging.goLast();
152
+ }
153
+ reload() {
154
+ this.list.reload();
155
+ }
156
+ getData(trackBy) {
157
+ return this.list.getData(trackBy);
158
+ }
159
+ hasData(trackBy) {
160
+ return this.list.hasData(trackBy);
161
+ }
162
+ updateData(rows, trackBy) {
163
+ return this.list.dataController.updateData(rows, trackBy);
164
+ }
165
+ replaceRow(row, trackBy) {
166
+ return this.list.dataController.replaceData(row, trackBy);
167
+ }
168
+ updateSelectionConfig(config) {
169
+ this.list.selection.updateConfig(config);
170
+ }
171
+ resetSelectionActions() {
172
+ this.list.selection.resetActions();
173
+ }
174
+ enableSelection() {
175
+ this.list.selection.enableSelection();
176
+ }
177
+ disableSelection() {
178
+ this.list.selection.disableSelection();
179
+ }
180
+ removeData(data) {
181
+ return this.list.dataController.removeData(data);
182
+ }
183
+ setHeading(heading) {
184
+ this.list.heading = heading;
185
+ }
186
+ setSubheading(subheading) {
187
+ this.list.subheading = subheading;
188
+ }
189
+ reorderStart() {
190
+ this.reorderController.enableReorder();
191
+ }
192
+ reorderFinish() {
193
+ this.reorderController.disableReorder();
194
+ }
195
+ setActions(actions) {
196
+ if (actions) {
197
+ this.list.actions.clearActions();
198
+ this.list.actions.setActions(actions);
199
+ }
200
+ }
201
+ filterReady() {
202
+ this.list.filtersReady$.next();
203
+ this._filterParamsReady = true;
204
+ this._emitFiltersReadyEvent();
205
+ }
206
+ /**
207
+ * Update visibility for specific column
208
+ */
209
+ columnVisibility(name, show) {
210
+ this.columnsVisibility([{ name, show }]);
211
+ }
212
+ /**
213
+ * Update visibility for list of specific columns
214
+ */
215
+ columnsVisibility(columns) {
216
+ this.list.columns.updateVisibilityForCols(columns);
217
+ }
218
+ _emitFiltersReadyEvent() {
219
+ if (!!this.filterRef && this._filterParamsReady) {
220
+ this.filtersReady.emit();
221
+ this.keywordVisible = this.filterRef.hasKeyword;
222
+ this.cdRef.markForCheck();
223
+ }
224
+ }
225
+ /**
226
+ * Initialize config for list
227
+ * @param config
228
+ */
229
+ _initWithConfig(config) {
230
+ if (this.list) {
231
+ this.list.destroy();
232
+ }
233
+ const defaultOpts = this._defaultOptions
234
+ ? cloneDeep(this._defaultOptions)
235
+ : {};
236
+ const listConfig = mergeWith(defaultOpts, config, this._configMergeCustomizer);
237
+ if (listConfig.persist !== false) {
238
+ this._restorePersistance(listConfig.persist);
239
+ }
240
+ this._updateCustomizeAction(listConfig.actions);
241
+ this.list = new List(this._el, listConfig, this.fsScroll, this.selectionDialog, this._router, this._route, this._persistance, this._inDialog);
242
+ this._waitFirstLoad();
243
+ this.reorderController.initWithConfig(config.reorder, this.list.dataController, this.list.actions, this.list.selection);
244
+ if (this.listColumnDirectives) {
245
+ this.list.tranformTemplatesToColumns(this.listColumnDirectives);
246
+ }
247
+ this._listenSortingChange();
248
+ }
249
+ /**
250
+ * Find action with customize flag and re-declare click function for CustomizeColsDialog
251
+ * @param actions
252
+ */
253
+ _updateCustomizeAction(actions) {
254
+ const customizeAction = actions === null || actions === void 0 ? void 0 : actions.find((action) => action.customize);
255
+ if (customizeAction) {
256
+ const actionClickFn = customizeAction.click;
257
+ customizeAction.click = () => {
258
+ if (actionClickFn) {
259
+ actionClickFn(null);
260
+ }
261
+ this.dialog.open(CustomizeColsDialogComponent, {
262
+ data: {
263
+ columns: this.list.columns.columnsForDialog,
264
+ changeFn: this.list.columns.changeFn,
265
+ },
266
+ })
267
+ .afterClosed()
268
+ .pipe(takeUntil(this.list.onDestroy$), takeUntil(this._destroy))
269
+ .subscribe((data) => {
270
+ if (data) {
271
+ this.list.columns.updateVisibilityForCols(data);
272
+ this.cdRef.markForCheck();
273
+ }
274
+ });
275
+ };
276
+ }
277
+ }
278
+ /**
279
+ * Update sorting in filter
280
+ */
281
+ _listenSortingChange() {
282
+ this.list.sorting
283
+ .sortingChanged$
284
+ .pipe(takeUntil(this.list.onDestroy$), takeUntil(this._destroy))
285
+ .subscribe((sort) => {
286
+ this._filterRef.updateSort(sort);
287
+ });
288
+ }
289
+ _subscribeToRemoveRow() {
290
+ this.rowRemoved
291
+ .pipe(takeUntil(this._destroy))
292
+ .subscribe((row) => {
293
+ this.list.dataController.removeData(row);
294
+ });
295
+ }
296
+ _subscribeToGroupExpandStatusChange() {
297
+ if (this.list.dataController.hasGroups) {
298
+ this._groupExpandNotifier.expandStatusChange$
299
+ .pipe(takeUntil(this._destroy))
300
+ .subscribe((row) => {
301
+ this.list.dataController.toggleRowGroup(row);
302
+ });
303
+ }
304
+ }
305
+ _waitFirstLoad() {
306
+ this.list.loading$
307
+ .pipe(skip(1), filter((value) => value === false), take(1), takeUntil(this.list.onDestroy$), takeUntil(this._destroy))
308
+ .subscribe(() => {
309
+ this.firstLoad = false;
310
+ this.cdRef.markForCheck();
311
+ });
312
+ }
313
+ _configMergeCustomizer(objValue, srcValue) {
314
+ if (Array.isArray(objValue)) {
315
+ return objValue;
316
+ }
317
+ }
318
+ _restorePersistance(persistConfig) {
319
+ const namespace = getNormalizedPath(this._location);
320
+ this._persistance.setConfig(persistConfig, namespace, this._inDialog);
321
+ }
322
+ }
323
+ FsListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsListComponent, deps: [{ token: i1.ReorderController }, { token: FS_LIST_DEFAULT_CONFIG, optional: true }, { token: i2.FsScrollService, optional: true }, { token: i3.MatDialogRef, optional: true }, { token: i4.DrawerRef, optional: true }, { token: i0.ElementRef }, { token: i5.SelectionDialog }, { token: i3.MatDialog }, { token: i0.ChangeDetectorRef }, { token: i6.GroupExpandNotifierService }, { token: i7.Router }, { token: i7.ActivatedRoute }, { token: i8.PersistanceController }, { token: i9.Location }], target: i0.ɵɵFactoryTarget.Component });
324
+ FsListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: FsListComponent, selector: "fs-list", inputs: { config: "config", loaderLines: "loaderLines" }, outputs: { filtersReady: "filtersReady" }, host: { properties: { "class.fs-list": "this.classFsList" } }, providers: [
325
+ GroupExpandNotifierService,
326
+ PersistanceController,
327
+ ReorderController,
328
+ ], queries: [{ propertyName: "_emptyStateTemplate", first: true, predicate: FsListEmptyStateDirective, descendants: true, read: TemplateRef }, { propertyName: "headingTemplate", first: true, predicate: FsListHeadingDirective, descendants: true, read: TemplateRef }, { propertyName: "headingContainerTemplate", first: true, predicate: FsListHeadingContainerDirective, descendants: true, read: TemplateRef }, { propertyName: "subheadingTemplate", first: true, predicate: FsListSubheadingDirective, descendants: true, read: TemplateRef }, { propertyName: "columnTemplates", predicate: FsListColumnDirective }], viewQueries: [{ propertyName: "filterReference", first: true, predicate: FilterComponent, descendants: true }], ngImport: i0, template: "<div class=\"fs-list-container\"\n [ngClass]=\"{\n 'has-filter-keyword': hasFilterKeyword,\n 'has-filters': list.filterConfig?.items.length,\n 'has-heading': list.heading || headingTemplate,\n 'has-status': hasStatus,\n 'has-chips': list.chips,\n 'has-actions': list.actions.hasActions,\n 'first-load': firstLoad,\n 'loading': list.loading$ | async\n }\">\n <ng-template [ngTemplateOutlet]=\"listContainerContent\"></ng-template>\n</div>\n\n<ng-template #listContainerContent>\n <ng-container *ngIf=\"list.dataController.visibleRows$ | async as listData\">\n <div class=\"fs-list-header-container\">\n <div\n class=\"fs-list-header\"\n [ngClass]=\"{ 'no-wrap': reorderController.manualReorderActivated || !list.filterConfig?.items.length }\">\n <ng-container\n *ngIf=\"hasFilterKeyword\"\n [ngTemplateOutlet]=\"heading\">\n </ng-container>\n <fs-filter\n class=\"fs-list-filter\"\n *ngIf=\"list.filterConfig\"\n [filter]=\"list.filterConfig\"\n [showSortBy]=\"!list.status\"\n [showFilterInput]=\"list.filterInput\"\n (ready)=\"filterReady()\">\n <ng-template fsFilterStatusBar>\n <ng-container\n *ngIf=\"!hasFilterKeyword\"\n [ngTemplateOutlet]=\"heading\">\n </ng-container>\n <ng-container *ngIf=\"hasStatus\">\n <fs-list-status\n class=\"fs-list-status\"\n [ngClass]=\"{ 'hidden-mobile': !list.status }\"\n [rows]=\"listData\"\n [sorting]=\"list.sorting\"\n [paging]=\"list.paging\"\n [firstLoad]=\"firstLoad\"\n [scrollable]=\"list.scrollable || list.paging.loadMoreEnabled\">\n </fs-list-status>\n </ng-container>\n </ng-template>\n </fs-filter>\n </div>\n </div>\n\n <ng-content select=\"[fs-list-content]\"></ng-content>\n\n <!-- Table implementation -->\n <div class=\"fs-list-table-container\">\n <ng-container *ngIf=\"!firstLoad && listData.length > 0 && !list.emptyStateEnabled\">\n <table class=\"fs-list-table\" role=\"grid\" [fsListContentInit]=\"list.afterContentInit\">\n <thead\n fs-list-head\n class=\"fs-list-head\"\n role=\"rowgroup\"\n *ngIf=\"list.columns.hasHeader\"\n [ngClass]=\"list.columns.theadClass\"\n [columns]=\"list.columns.visibleColumns$ | async\"\n [sorting]=\"list.sorting\"\n [selection]=\"list.selection\"\n [hasRowActions]=\"list.hasRowActions\"\n [activeFiltersCount]=\"list.activeFiltersCount$ | async\"\n [reorderEnabled]=\"reorderController.enabled$ | async\"\n [reorderPosition]=\"reorderController.position$ | async\"\n [reorderStrategy]=\"reorderController.strategy$ | async\"\n >\n </thead>\n\n <tbody\n fs-list-body\n fsListDraggableList\n class=\"fs-list-body\"\n role=\"rowgroup\"\n [class.disabled]=\"!!(reorderController.reorderDisabled$ | async)\"\n [rows]=\"listData\"\n [rowActionsRaw]=\"list.rowActionsRaw\"\n [groupActionsRaw]=\"list.groupActionsRaw\"\n [hasRowActions]=\"list.hasRowActions\"\n [rowEvents]=\"list.rowEvents\"\n [rowClass]=\"list.rowClass\"\n [columns]=\"list.columns.visibleColumns$ | async\"\n [restoreMode]=\"list.restoreMode\"\n [selection]=\"list.selection\"\n [rowRemoved]=\"rowRemoved\"\n [activeFiltersCount]=\"list.activeFiltersCount$ | async\"\n [reorderEnabled]=\"reorderController.enabled$ | async\"\n [reorderPosition]=\"reorderController.position$ | async\"\n [reorderStrategy]=\"reorderController.strategy$ | async\"\n [reorderMultiple]=\"reorderController.multiple\"\n >\n </tbody>\n\n <tfoot\n fs-list-footer\n class=\"fs-list-footer\"\n *ngIf=\"list.columns.hasFooter\"\n [columns]=\"list.columns.visibleColumns$ | async\"\n [selection]=\"list.selection\"\n [hasRowActions]=\"list.hasRowActions\"\n [activeFiltersCount]=\"list.activeFiltersCount$ | async\"\n [reorderEnabled]=\"reorderController.enabled$ | async\"\n [reorderPosition]=\"reorderController.position$ | async\"\n [reorderStrategy]=\"reorderController.strategy$ | async\"\n >\n </tfoot>\n </table>\n </ng-container>\n <fs-list-loader\n *ngIf=\"firstLoad\"\n [columns]=\"list.columns.columns\"\n [loaderLines]=\"loaderLines\">\n </fs-list-loader>\n </div>\n\n <fs-list-pagination\n *ngIf=\"paginatorVisible\"\n class=\"fs-list-pagination\"\n [rows]=\"listData\"\n [pagination]=\"list.paging\">\n </fs-list-pagination>\n\n <ng-container *ngIf=\"!firstLoad\">\n <div\n *ngIf=\"listData.length === 0\"\n class=\"fs-list-no-results-container\">\n <div\n *ngIf=\"list.noResults?.message && !list.emptyStateEnabled\"\n class=\"fs-list-no-results\">\n {{ list.noResults?.message }}\n </div>\n <ng-container *ngIf=\"list.emptyStateEnabled\">\n <ng-template [ngTemplateOutlet]=\"list.emptyStateTemplate\"></ng-template>\n </ng-container>\n </div>\n </ng-container>\n </ng-container>\n</ng-template>\n\n<ng-template #heading>\n <div class=\"heading-container\" *ngIf=\"headingContainerTemplate || list.heading || list.subheading || headingTemplate\">\n <ng-container *ngIf=\"headingContainerTemplate; else headingContainer\">\n <ng-container\n [ngTemplateOutlet]=\"headingContainerTemplate\"\n [ngTemplateOutletContext]=\"{ template: headingContainer }\">\n </ng-container>\n </ng-container>\n <ng-template #headingContainer>\n <h2 class=\"heading\" *ngIf=\"list.heading || headingTemplate\">\n {{list.heading}}\n <ng-container [ngTemplateOutlet]=\"headingTemplate\"></ng-container>\n </h2>\n <div class=\"small subheading\" *ngIf=\"list.subheading || subheadingTemplate\">\n {{list.subheading}}\n <ng-container [ngTemplateOutlet]=\"subheadingTemplate\"></ng-container>\n </div>\n </ng-template>\n </div>\n</ng-template>\n", styles: [":host ::ng-deep .fs-list-swap-restricted{opacity:.5}:host ::ng-deep .fs-list-no-drop{cursor:no-drop}:host ::ng-deep .hidden{display:none}@media print{:host ::ng-deep .fs-list-row-group{page-break-after:avoid}:host ::ng-deep .fs-list-row-group-child{page-break-before:avoid}:host ::ng-deep .fs-list-row-group-footer{page-break-before:avoid}}.fs-list-container{width:100%}.fs-list-container:not(.has-filters):not(.has-actions):not(.has-heading) .fs-list-header-container{display:none}.fs-list-container:not(.has-filter-keyword) .fs-list-header{display:flex;margin-bottom:4px}.fs-list-container:not(.has-filter-keyword) .fs-list-header .heading-container{flex:1}.fs-list-container:not(.has-filter-keyword) .fs-list-header fs-filter{display:flex}.fs-list-container.has-filters .heading-container{margin-bottom:4px}.fs-list-container.loading .fs-list-status,.fs-list-container.loading .fs-list-body,.fs-list-container.loading fs-list-pagination,.fs-list-container.loading .filter-chips,.fs-list-container.loading .fs-list-no-results-container,.fs-list-container.first-load .fs-list-status,.fs-list-container.first-load .fs-list-body,.fs-list-container.first-load fs-list-pagination,.fs-list-container.first-load .filter-chips,.fs-list-container.first-load .fs-list-no-results-container{opacity:.4;pointer-events:none}.fs-list-container.first-load ::ng-deep fs-filter-chips .fs-chip{color:transparent}.fs-list-container.first-load ::ng-deep fs-filter-chips .fs-chip .remove{visibility:hidden}.fs-list-container.has-actions .fs-list-actions{margin-left:5px}.fs-list-filter{margin-bottom:0;position:initial!important;display:block;width:100%}.fs-list-no-results-container .fs-list-no-results{text-align:center;color:#999;padding:10px 0}.fs-list-header .heading-container{display:flex;flex-direction:column;justify-content:center}.fs-list-header .heading{margin:0}.fs-list-header h2+.subheading{margin:2px 0 0}.fs-list-header .fs-list-actions{white-space:nowrap;float:right}.fs-list-header .fs-list-actions .menu-button{width:36px;height:36px;line-height:36px}.fs-list-header .action-button{margin-left:5px}.fs-list-header .action-button:first-child{margin-left:0}.fs-list-header .mat-button{margin-top:0;margin-bottom:0;margin-right:0}.fs-list-table-container{width:100%;overflow:auto}::ng-deep .preview-block{position:fixed;height:30px;width:200px;background:grey;display:flex;justify-content:center;align-items:center;z-index:1000;box-shadow:2px 2px 2px #9e9e9ea6;border-radius:6px}::ng-deep .fs-list{display:block;width:100%}::ng-deep .fs-list-table{border-spacing:0;display:table;width:100%;border-collapse:collapse}::ng-deep .fs-list-table thead,::ng-deep .fs-list-table .fs-list-head{display:table-header-group}::ng-deep .fs-list-table thead th,::ng-deep .fs-list-table thead .fs-list-col,::ng-deep .fs-list-table .fs-list-head th,::ng-deep .fs-list-table .fs-list-head .fs-list-col{color:#999;padding:8px;font-weight:normal;color:#8f8f8f;font-size:85%}::ng-deep .fs-list-table thead th.fs-list-col-selection,::ng-deep .fs-list-table thead .fs-list-col.fs-list-col-selection,::ng-deep .fs-list-table .fs-list-head th.fs-list-col-selection,::ng-deep .fs-list-table .fs-list-head .fs-list-col.fs-list-col-selection{width:1%;text-align:left}::ng-deep .fs-list-table thead th.sorting,::ng-deep .fs-list-table thead .fs-list-col.sorting,::ng-deep .fs-list-table .fs-list-head th.sorting,::ng-deep .fs-list-table .fs-list-head .fs-list-col.sorting{cursor:pointer}::ng-deep .fs-list-table thead th.sorting:hover,::ng-deep .fs-list-table thead .fs-list-col.sorting:hover,::ng-deep .fs-list-table .fs-list-head th.sorting:hover,::ng-deep .fs-list-table .fs-list-head .fs-list-col.sorting:hover{background-color:#f6f6f6}::ng-deep .fs-list-table thead th .wrap,::ng-deep .fs-list-table thead .fs-list-col .wrap,::ng-deep .fs-list-table .fs-list-head th .wrap,::ng-deep .fs-list-table .fs-list-head .fs-list-col .wrap{display:inline-flex;vertical-align:middle;white-space:nowrap}::ng-deep .fs-list-table thead th .wrap mat-icon,::ng-deep .fs-list-table thead .fs-list-col .wrap mat-icon,::ng-deep .fs-list-table .fs-list-head th .wrap mat-icon,::ng-deep .fs-list-table .fs-list-head .fs-list-col .wrap mat-icon{font-size:14px;display:block;height:14px;width:14px}::ng-deep .fs-list-table thead th .wrap .direction,::ng-deep .fs-list-table thead .fs-list-col .wrap .direction,::ng-deep .fs-list-table .fs-list-head th .wrap .direction,::ng-deep .fs-list-table .fs-list-head .fs-list-col .wrap .direction{margin-left:5px}::ng-deep .fs-list-table thead th.sorting,::ng-deep .fs-list-table thead .fs-list-col.sorting,::ng-deep .fs-list-table .fs-list-head th.sorting,::ng-deep .fs-list-table .fs-list-head .fs-list-col.sorting{background-image:none}::ng-deep .fs-list-table tbody,::ng-deep .fs-list-table .fs-list-body{display:table-row-group;position:relative}::ng-deep .fs-list-table tbody.drag-hidden .drag-col,::ng-deep .fs-list-table .fs-list-body.drag-hidden .drag-col{opacity:0!important;cursor:default}::ng-deep .fs-list-table tbody.disabled,::ng-deep .fs-list-table .fs-list-body.disabled{opacity:.4;pointer-events:none}::ng-deep .fs-list-table tbody td,::ng-deep .fs-list-table tbody .fs-list-col,::ng-deep .fs-list-table .fs-list-body td,::ng-deep .fs-list-table .fs-list-body .fs-list-col{box-sizing:border-box;border-top:1px solid #ddd}::ng-deep .fs-list-table tbody tr:hover td,::ng-deep .fs-list-table tbody .fs-list-row:hover .fs-list-col,::ng-deep .fs-list-table .fs-list-body tr:hover td,::ng-deep .fs-list-table .fs-list-body .fs-list-row:hover .fs-list-col{background-color:#f6f6f6}::ng-deep .fs-list-table tbody tr:hover td,::ng-deep .fs-list-table tbody tr:hover .fs-list-col,::ng-deep .fs-list-table tbody .fs-list-row:hover td,::ng-deep .fs-list-table tbody .fs-list-row:hover .fs-list-col,::ng-deep .fs-list-table .fs-list-body tr:hover td,::ng-deep .fs-list-table .fs-list-body tr:hover .fs-list-col,::ng-deep .fs-list-table .fs-list-body .fs-list-row:hover td,::ng-deep .fs-list-table .fs-list-body .fs-list-row:hover .fs-list-col{background-color:#f6f6f6}::ng-deep .fs-list-table tbody tr:first-child td,::ng-deep .fs-list-table .fs-list-body tr:first-child td{border-top:2px solid #ddd}::ng-deep .fs-list-table tbody tr:last-child td,::ng-deep .fs-list-table .fs-list-body tr:last-child td{border-bottom:2px solid #ddd}::ng-deep .fs-list-table thead tr,::ng-deep .fs-list-table thead .fs-list-row,::ng-deep .fs-list-table tbody tr,::ng-deep .fs-list-table tbody .fs-list-row,::ng-deep .fs-list-table tfoot tr,::ng-deep .fs-list-table tfoot .fs-list-row,::ng-deep .fs-list-table .fs-list-head tr,::ng-deep .fs-list-table .fs-list-head .fs-list-row,::ng-deep .fs-list-table .fs-list-body tr,::ng-deep .fs-list-table .fs-list-body .fs-list-row,::ng-deep .fs-list-table .fs-list-footer tr,::ng-deep .fs-list-table .fs-list-footer .fs-list-row{display:table-row}::ng-deep .fs-list-table thead tr.drag-hidden,::ng-deep .fs-list-table thead .fs-list-row.drag-hidden,::ng-deep .fs-list-table tbody tr.drag-hidden,::ng-deep .fs-list-table tbody .fs-list-row.drag-hidden,::ng-deep .fs-list-table tfoot tr.drag-hidden,::ng-deep .fs-list-table tfoot .fs-list-row.drag-hidden,::ng-deep .fs-list-table .fs-list-head tr.drag-hidden,::ng-deep .fs-list-table .fs-list-head .fs-list-row.drag-hidden,::ng-deep .fs-list-table .fs-list-body tr.drag-hidden,::ng-deep .fs-list-table .fs-list-body .fs-list-row.drag-hidden,::ng-deep .fs-list-table .fs-list-footer tr.drag-hidden,::ng-deep .fs-list-table .fs-list-footer .fs-list-row.drag-hidden{display:none}::ng-deep .fs-list-table thead tr.multiple-selection,::ng-deep .fs-list-table thead .fs-list-row.multiple-selection,::ng-deep .fs-list-table tbody tr.multiple-selection,::ng-deep .fs-list-table tbody .fs-list-row.multiple-selection,::ng-deep .fs-list-table tfoot tr.multiple-selection,::ng-deep .fs-list-table tfoot .fs-list-row.multiple-selection,::ng-deep .fs-list-table .fs-list-head tr.multiple-selection,::ng-deep .fs-list-table .fs-list-head .fs-list-row.multiple-selection,::ng-deep .fs-list-table .fs-list-body tr.multiple-selection,::ng-deep .fs-list-table .fs-list-body .fs-list-row.multiple-selection,::ng-deep .fs-list-table .fs-list-footer tr.multiple-selection,::ng-deep .fs-list-table .fs-list-footer .fs-list-row.multiple-selection{background-color:#2196f380}::ng-deep .fs-list-table thead tr.multiple-selection .fs-list-col,::ng-deep .fs-list-table thead .fs-list-row.multiple-selection .fs-list-col,::ng-deep .fs-list-table tbody tr.multiple-selection .fs-list-col,::ng-deep .fs-list-table tbody .fs-list-row.multiple-selection .fs-list-col,::ng-deep .fs-list-table tfoot tr.multiple-selection .fs-list-col,::ng-deep .fs-list-table tfoot .fs-list-row.multiple-selection .fs-list-col,::ng-deep .fs-list-table .fs-list-head tr.multiple-selection .fs-list-col,::ng-deep .fs-list-table .fs-list-head .fs-list-row.multiple-selection .fs-list-col,::ng-deep .fs-list-table .fs-list-body tr.multiple-selection .fs-list-col,::ng-deep .fs-list-table .fs-list-body .fs-list-row.multiple-selection .fs-list-col,::ng-deep .fs-list-table .fs-list-footer tr.multiple-selection .fs-list-col,::ng-deep .fs-list-table .fs-list-footer .fs-list-row.multiple-selection .fs-list-col{background-color:#2196f380}::ng-deep .fs-list-table thead tr td,::ng-deep .fs-list-table thead tr th,::ng-deep .fs-list-table thead tr .fs-list-col,::ng-deep .fs-list-table thead .fs-list-row td,::ng-deep .fs-list-table thead .fs-list-row th,::ng-deep .fs-list-table thead .fs-list-row .fs-list-col,::ng-deep .fs-list-table tbody tr td,::ng-deep .fs-list-table tbody tr th,::ng-deep .fs-list-table tbody tr .fs-list-col,::ng-deep .fs-list-table tbody .fs-list-row td,::ng-deep .fs-list-table tbody .fs-list-row th,::ng-deep .fs-list-table tbody .fs-list-row .fs-list-col,::ng-deep .fs-list-table tfoot tr td,::ng-deep .fs-list-table tfoot tr th,::ng-deep .fs-list-table tfoot tr .fs-list-col,::ng-deep .fs-list-table tfoot .fs-list-row td,::ng-deep .fs-list-table tfoot .fs-list-row th,::ng-deep .fs-list-table tfoot .fs-list-row .fs-list-col,::ng-deep .fs-list-table .fs-list-head tr td,::ng-deep .fs-list-table .fs-list-head tr th,::ng-deep .fs-list-table .fs-list-head tr .fs-list-col,::ng-deep .fs-list-table .fs-list-head .fs-list-row td,::ng-deep .fs-list-table .fs-list-head .fs-list-row th,::ng-deep .fs-list-table .fs-list-head .fs-list-row .fs-list-col,::ng-deep .fs-list-table .fs-list-body tr td,::ng-deep .fs-list-table .fs-list-body tr th,::ng-deep .fs-list-table .fs-list-body tr .fs-list-col,::ng-deep .fs-list-table .fs-list-body .fs-list-row td,::ng-deep .fs-list-table .fs-list-body .fs-list-row th,::ng-deep .fs-list-table .fs-list-body .fs-list-row .fs-list-col,::ng-deep .fs-list-table .fs-list-footer tr td,::ng-deep .fs-list-table .fs-list-footer tr th,::ng-deep .fs-list-table .fs-list-footer tr .fs-list-col,::ng-deep .fs-list-table .fs-list-footer .fs-list-row td,::ng-deep .fs-list-table .fs-list-footer .fs-list-row th,::ng-deep .fs-list-table .fs-list-footer .fs-list-row .fs-list-col{display:table-cell;padding:8px;vertical-align:middle;outline:none;text-align:left}::ng-deep .fs-list-table thead tr td.drag-col,::ng-deep .fs-list-table thead tr th.drag-col,::ng-deep .fs-list-table thead tr .fs-list-col.drag-col,::ng-deep .fs-list-table thead .fs-list-row td.drag-col,::ng-deep .fs-list-table thead .fs-list-row th.drag-col,::ng-deep .fs-list-table thead .fs-list-row .fs-list-col.drag-col,::ng-deep .fs-list-table tbody tr td.drag-col,::ng-deep .fs-list-table tbody tr th.drag-col,::ng-deep .fs-list-table tbody tr .fs-list-col.drag-col,::ng-deep .fs-list-table tbody .fs-list-row td.drag-col,::ng-deep .fs-list-table tbody .fs-list-row th.drag-col,::ng-deep .fs-list-table tbody .fs-list-row .fs-list-col.drag-col,::ng-deep .fs-list-table tfoot tr td.drag-col,::ng-deep .fs-list-table tfoot tr th.drag-col,::ng-deep .fs-list-table tfoot tr .fs-list-col.drag-col,::ng-deep .fs-list-table tfoot .fs-list-row td.drag-col,::ng-deep .fs-list-table tfoot .fs-list-row th.drag-col,::ng-deep .fs-list-table tfoot .fs-list-row .fs-list-col.drag-col,::ng-deep .fs-list-table .fs-list-head tr td.drag-col,::ng-deep .fs-list-table .fs-list-head tr th.drag-col,::ng-deep .fs-list-table .fs-list-head tr .fs-list-col.drag-col,::ng-deep .fs-list-table .fs-list-head .fs-list-row td.drag-col,::ng-deep .fs-list-table .fs-list-head .fs-list-row th.drag-col,::ng-deep .fs-list-table .fs-list-head .fs-list-row .fs-list-col.drag-col,::ng-deep .fs-list-table .fs-list-body tr td.drag-col,::ng-deep .fs-list-table .fs-list-body tr th.drag-col,::ng-deep .fs-list-table .fs-list-body tr .fs-list-col.drag-col,::ng-deep .fs-list-table .fs-list-body .fs-list-row td.drag-col,::ng-deep .fs-list-table .fs-list-body .fs-list-row th.drag-col,::ng-deep .fs-list-table .fs-list-body .fs-list-row .fs-list-col.drag-col,::ng-deep .fs-list-table .fs-list-footer tr td.drag-col,::ng-deep .fs-list-table .fs-list-footer tr th.drag-col,::ng-deep .fs-list-table .fs-list-footer tr .fs-list-col.drag-col,::ng-deep .fs-list-table .fs-list-footer .fs-list-row td.drag-col,::ng-deep .fs-list-table .fs-list-footer .fs-list-row th.drag-col,::ng-deep .fs-list-table .fs-list-footer .fs-list-row .fs-list-col.drag-col{width:24px;text-align:center;cursor:grab}::ng-deep .fs-list-table thead tr td.drag-col.drag-disabled,::ng-deep .fs-list-table thead tr th.drag-col.drag-disabled,::ng-deep .fs-list-table thead tr .fs-list-col.drag-col.drag-disabled,::ng-deep .fs-list-table thead .fs-list-row td.drag-col.drag-disabled,::ng-deep .fs-list-table thead .fs-list-row th.drag-col.drag-disabled,::ng-deep .fs-list-table thead .fs-list-row .fs-list-col.drag-col.drag-disabled,::ng-deep .fs-list-table tbody tr td.drag-col.drag-disabled,::ng-deep .fs-list-table tbody tr th.drag-col.drag-disabled,::ng-deep .fs-list-table tbody tr .fs-list-col.drag-col.drag-disabled,::ng-deep .fs-list-table tbody .fs-list-row td.drag-col.drag-disabled,::ng-deep .fs-list-table tbody .fs-list-row th.drag-col.drag-disabled,::ng-deep .fs-list-table tbody .fs-list-row .fs-list-col.drag-col.drag-disabled,::ng-deep .fs-list-table tfoot tr td.drag-col.drag-disabled,::ng-deep .fs-list-table tfoot tr th.drag-col.drag-disabled,::ng-deep .fs-list-table tfoot tr .fs-list-col.drag-col.drag-disabled,::ng-deep .fs-list-table tfoot .fs-list-row td.drag-col.drag-disabled,::ng-deep .fs-list-table tfoot .fs-list-row th.drag-col.drag-disabled,::ng-deep .fs-list-table tfoot .fs-list-row .fs-list-col.drag-col.drag-disabled,::ng-deep .fs-list-table .fs-list-head tr td.drag-col.drag-disabled,::ng-deep .fs-list-table .fs-list-head tr th.drag-col.drag-disabled,::ng-deep .fs-list-table .fs-list-head tr .fs-list-col.drag-col.drag-disabled,::ng-deep .fs-list-table .fs-list-head .fs-list-row td.drag-col.drag-disabled,::ng-deep .fs-list-table .fs-list-head .fs-list-row th.drag-col.drag-disabled,::ng-deep .fs-list-table .fs-list-head .fs-list-row .fs-list-col.drag-col.drag-disabled,::ng-deep .fs-list-table .fs-list-body tr td.drag-col.drag-disabled,::ng-deep .fs-list-table .fs-list-body tr th.drag-col.drag-disabled,::ng-deep .fs-list-table .fs-list-body tr .fs-list-col.drag-col.drag-disabled,::ng-deep .fs-list-table .fs-list-body .fs-list-row td.drag-col.drag-disabled,::ng-deep .fs-list-table .fs-list-body .fs-list-row th.drag-col.drag-disabled,::ng-deep .fs-list-table .fs-list-body .fs-list-row .fs-list-col.drag-col.drag-disabled,::ng-deep .fs-list-table .fs-list-footer tr td.drag-col.drag-disabled,::ng-deep .fs-list-table .fs-list-footer tr th.drag-col.drag-disabled,::ng-deep .fs-list-table .fs-list-footer tr .fs-list-col.drag-col.drag-disabled,::ng-deep .fs-list-table .fs-list-footer .fs-list-row td.drag-col.drag-disabled,::ng-deep .fs-list-table .fs-list-footer .fs-list-row th.drag-col.drag-disabled,::ng-deep .fs-list-table .fs-list-footer .fs-list-row .fs-list-col.drag-col.drag-disabled{opacity:.4;cursor:no-drop}::ng-deep .fs-list-table thead tr td.drag-col mat-icon,::ng-deep .fs-list-table thead tr th.drag-col mat-icon,::ng-deep .fs-list-table thead tr .fs-list-col.drag-col mat-icon,::ng-deep .fs-list-table thead .fs-list-row td.drag-col mat-icon,::ng-deep .fs-list-table thead .fs-list-row th.drag-col mat-icon,::ng-deep .fs-list-table thead .fs-list-row .fs-list-col.drag-col mat-icon,::ng-deep .fs-list-table tbody tr td.drag-col mat-icon,::ng-deep .fs-list-table tbody tr th.drag-col mat-icon,::ng-deep .fs-list-table tbody tr .fs-list-col.drag-col mat-icon,::ng-deep .fs-list-table tbody .fs-list-row td.drag-col mat-icon,::ng-deep .fs-list-table tbody .fs-list-row th.drag-col mat-icon,::ng-deep .fs-list-table tbody .fs-list-row .fs-list-col.drag-col mat-icon,::ng-deep .fs-list-table tfoot tr td.drag-col mat-icon,::ng-deep .fs-list-table tfoot tr th.drag-col mat-icon,::ng-deep .fs-list-table tfoot tr .fs-list-col.drag-col mat-icon,::ng-deep .fs-list-table tfoot .fs-list-row td.drag-col mat-icon,::ng-deep .fs-list-table tfoot .fs-list-row th.drag-col mat-icon,::ng-deep .fs-list-table tfoot .fs-list-row .fs-list-col.drag-col mat-icon,::ng-deep .fs-list-table .fs-list-head tr td.drag-col mat-icon,::ng-deep .fs-list-table .fs-list-head tr th.drag-col mat-icon,::ng-deep .fs-list-table .fs-list-head tr .fs-list-col.drag-col mat-icon,::ng-deep .fs-list-table .fs-list-head .fs-list-row td.drag-col mat-icon,::ng-deep .fs-list-table .fs-list-head .fs-list-row th.drag-col mat-icon,::ng-deep .fs-list-table .fs-list-head .fs-list-row .fs-list-col.drag-col mat-icon,::ng-deep .fs-list-table .fs-list-body tr td.drag-col mat-icon,::ng-deep .fs-list-table .fs-list-body tr th.drag-col mat-icon,::ng-deep .fs-list-table .fs-list-body tr .fs-list-col.drag-col mat-icon,::ng-deep .fs-list-table .fs-list-body .fs-list-row td.drag-col mat-icon,::ng-deep .fs-list-table .fs-list-body .fs-list-row th.drag-col mat-icon,::ng-deep .fs-list-table .fs-list-body .fs-list-row .fs-list-col.drag-col mat-icon,::ng-deep .fs-list-table .fs-list-footer tr td.drag-col mat-icon,::ng-deep .fs-list-table .fs-list-footer tr th.drag-col mat-icon,::ng-deep .fs-list-table .fs-list-footer tr .fs-list-col.drag-col mat-icon,::ng-deep .fs-list-table .fs-list-footer .fs-list-row td.drag-col mat-icon,::ng-deep .fs-list-table .fs-list-footer .fs-list-row th.drag-col mat-icon,::ng-deep .fs-list-table .fs-list-footer .fs-list-row .fs-list-col.drag-col mat-icon{display:flex}::ng-deep .fs-list-table thead tr td.fs-list-col-selection,::ng-deep .fs-list-table thead tr th.fs-list-col-selection,::ng-deep .fs-list-table thead tr .fs-list-col.fs-list-col-selection,::ng-deep .fs-list-table thead .fs-list-row td.fs-list-col-selection,::ng-deep .fs-list-table thead .fs-list-row th.fs-list-col-selection,::ng-deep .fs-list-table thead .fs-list-row .fs-list-col.fs-list-col-selection,::ng-deep .fs-list-table tbody tr td.fs-list-col-selection,::ng-deep .fs-list-table tbody tr th.fs-list-col-selection,::ng-deep .fs-list-table tbody tr .fs-list-col.fs-list-col-selection,::ng-deep .fs-list-table tbody .fs-list-row td.fs-list-col-selection,::ng-deep .fs-list-table tbody .fs-list-row th.fs-list-col-selection,::ng-deep .fs-list-table tbody .fs-list-row .fs-list-col.fs-list-col-selection,::ng-deep .fs-list-table tfoot tr td.fs-list-col-selection,::ng-deep .fs-list-table tfoot tr th.fs-list-col-selection,::ng-deep .fs-list-table tfoot tr .fs-list-col.fs-list-col-selection,::ng-deep .fs-list-table tfoot .fs-list-row td.fs-list-col-selection,::ng-deep .fs-list-table tfoot .fs-list-row th.fs-list-col-selection,::ng-deep .fs-list-table tfoot .fs-list-row .fs-list-col.fs-list-col-selection,::ng-deep .fs-list-table .fs-list-head tr td.fs-list-col-selection,::ng-deep .fs-list-table .fs-list-head tr th.fs-list-col-selection,::ng-deep .fs-list-table .fs-list-head tr .fs-list-col.fs-list-col-selection,::ng-deep .fs-list-table .fs-list-head .fs-list-row td.fs-list-col-selection,::ng-deep .fs-list-table .fs-list-head .fs-list-row th.fs-list-col-selection,::ng-deep .fs-list-table .fs-list-head .fs-list-row .fs-list-col.fs-list-col-selection,::ng-deep .fs-list-table .fs-list-body tr td.fs-list-col-selection,::ng-deep .fs-list-table .fs-list-body tr th.fs-list-col-selection,::ng-deep .fs-list-table .fs-list-body tr .fs-list-col.fs-list-col-selection,::ng-deep .fs-list-table .fs-list-body .fs-list-row td.fs-list-col-selection,::ng-deep .fs-list-table .fs-list-body .fs-list-row th.fs-list-col-selection,::ng-deep .fs-list-table .fs-list-body .fs-list-row .fs-list-col.fs-list-col-selection,::ng-deep .fs-list-table .fs-list-footer tr td.fs-list-col-selection,::ng-deep .fs-list-table .fs-list-footer tr th.fs-list-col-selection,::ng-deep .fs-list-table .fs-list-footer tr .fs-list-col.fs-list-col-selection,::ng-deep .fs-list-table .fs-list-footer .fs-list-row td.fs-list-col-selection,::ng-deep .fs-list-table .fs-list-footer .fs-list-row th.fs-list-col-selection,::ng-deep .fs-list-table .fs-list-footer .fs-list-row .fs-list-col.fs-list-col-selection{padding:10px}::ng-deep .fs-list-table thead tr td.row-actions,::ng-deep .fs-list-table thead tr th.row-actions,::ng-deep .fs-list-table thead tr .fs-list-col.row-actions,::ng-deep .fs-list-table thead .fs-list-row td.row-actions,::ng-deep .fs-list-table thead .fs-list-row th.row-actions,::ng-deep .fs-list-table thead .fs-list-row .fs-list-col.row-actions,::ng-deep .fs-list-table tbody tr td.row-actions,::ng-deep .fs-list-table tbody tr th.row-actions,::ng-deep .fs-list-table tbody tr .fs-list-col.row-actions,::ng-deep .fs-list-table tbody .fs-list-row td.row-actions,::ng-deep .fs-list-table tbody .fs-list-row th.row-actions,::ng-deep .fs-list-table tbody .fs-list-row .fs-list-col.row-actions,::ng-deep .fs-list-table tfoot tr td.row-actions,::ng-deep .fs-list-table tfoot tr th.row-actions,::ng-deep .fs-list-table tfoot tr .fs-list-col.row-actions,::ng-deep .fs-list-table tfoot .fs-list-row td.row-actions,::ng-deep .fs-list-table tfoot .fs-list-row th.row-actions,::ng-deep .fs-list-table tfoot .fs-list-row .fs-list-col.row-actions,::ng-deep .fs-list-table .fs-list-head tr td.row-actions,::ng-deep .fs-list-table .fs-list-head tr th.row-actions,::ng-deep .fs-list-table .fs-list-head tr .fs-list-col.row-actions,::ng-deep .fs-list-table .fs-list-head .fs-list-row td.row-actions,::ng-deep .fs-list-table .fs-list-head .fs-list-row th.row-actions,::ng-deep .fs-list-table .fs-list-head .fs-list-row .fs-list-col.row-actions,::ng-deep .fs-list-table .fs-list-body tr td.row-actions,::ng-deep .fs-list-table .fs-list-body tr th.row-actions,::ng-deep .fs-list-table .fs-list-body tr .fs-list-col.row-actions,::ng-deep .fs-list-table .fs-list-body .fs-list-row td.row-actions,::ng-deep .fs-list-table .fs-list-body .fs-list-row th.row-actions,::ng-deep .fs-list-table .fs-list-body .fs-list-row .fs-list-col.row-actions,::ng-deep .fs-list-table .fs-list-footer tr td.row-actions,::ng-deep .fs-list-table .fs-list-footer tr th.row-actions,::ng-deep .fs-list-table .fs-list-footer tr .fs-list-col.row-actions,::ng-deep .fs-list-table .fs-list-footer .fs-list-row td.row-actions,::ng-deep .fs-list-table .fs-list-footer .fs-list-row th.row-actions,::ng-deep .fs-list-table .fs-list-footer .fs-list-row .fs-list-col.row-actions{width:1%;white-space:nowrap;padding-right:10px;overflow:hidden}::ng-deep .fs-list-table thead tr td.row-actions .row-inline-action,::ng-deep .fs-list-table thead tr th.row-actions .row-inline-action,::ng-deep .fs-list-table thead tr .fs-list-col.row-actions .row-inline-action,::ng-deep .fs-list-table thead .fs-list-row td.row-actions .row-inline-action,::ng-deep .fs-list-table thead .fs-list-row th.row-actions .row-inline-action,::ng-deep .fs-list-table thead .fs-list-row .fs-list-col.row-actions .row-inline-action,::ng-deep .fs-list-table tbody tr td.row-actions .row-inline-action,::ng-deep .fs-list-table tbody tr th.row-actions .row-inline-action,::ng-deep .fs-list-table tbody tr .fs-list-col.row-actions .row-inline-action,::ng-deep .fs-list-table tbody .fs-list-row td.row-actions .row-inline-action,::ng-deep .fs-list-table tbody .fs-list-row th.row-actions .row-inline-action,::ng-deep .fs-list-table tbody .fs-list-row .fs-list-col.row-actions .row-inline-action,::ng-deep .fs-list-table tfoot tr td.row-actions .row-inline-action,::ng-deep .fs-list-table tfoot tr th.row-actions .row-inline-action,::ng-deep .fs-list-table tfoot tr .fs-list-col.row-actions .row-inline-action,::ng-deep .fs-list-table tfoot .fs-list-row td.row-actions .row-inline-action,::ng-deep .fs-list-table tfoot .fs-list-row th.row-actions .row-inline-action,::ng-deep .fs-list-table tfoot .fs-list-row .fs-list-col.row-actions .row-inline-action,::ng-deep .fs-list-table .fs-list-head tr td.row-actions .row-inline-action,::ng-deep .fs-list-table .fs-list-head tr th.row-actions .row-inline-action,::ng-deep .fs-list-table .fs-list-head tr .fs-list-col.row-actions .row-inline-action,::ng-deep .fs-list-table .fs-list-head .fs-list-row td.row-actions .row-inline-action,::ng-deep .fs-list-table .fs-list-head .fs-list-row th.row-actions .row-inline-action,::ng-deep .fs-list-table .fs-list-head .fs-list-row .fs-list-col.row-actions .row-inline-action,::ng-deep .fs-list-table .fs-list-body tr td.row-actions .row-inline-action,::ng-deep .fs-list-table .fs-list-body tr th.row-actions .row-inline-action,::ng-deep .fs-list-table .fs-list-body tr .fs-list-col.row-actions .row-inline-action,::ng-deep .fs-list-table .fs-list-body .fs-list-row td.row-actions .row-inline-action,::ng-deep .fs-list-table .fs-list-body .fs-list-row th.row-actions .row-inline-action,::ng-deep .fs-list-table .fs-list-body .fs-list-row .fs-list-col.row-actions .row-inline-action,::ng-deep .fs-list-table .fs-list-footer tr td.row-actions .row-inline-action,::ng-deep .fs-list-table .fs-list-footer tr th.row-actions .row-inline-action,::ng-deep .fs-list-table .fs-list-footer tr .fs-list-col.row-actions .row-inline-action,::ng-deep .fs-list-table .fs-list-footer .fs-list-row td.row-actions .row-inline-action,::ng-deep .fs-list-table .fs-list-footer .fs-list-row th.row-actions .row-inline-action,::ng-deep .fs-list-table .fs-list-footer .fs-list-row .fs-list-col.row-actions .row-inline-action{margin-left:12px;display:inline-block}::ng-deep .fs-list-table thead tr td.row-actions .row-inline-action:first-child,::ng-deep .fs-list-table thead tr th.row-actions .row-inline-action:first-child,::ng-deep .fs-list-table thead tr .fs-list-col.row-actions .row-inline-action:first-child,::ng-deep .fs-list-table thead .fs-list-row td.row-actions .row-inline-action:first-child,::ng-deep .fs-list-table thead .fs-list-row th.row-actions .row-inline-action:first-child,::ng-deep .fs-list-table thead .fs-list-row .fs-list-col.row-actions .row-inline-action:first-child,::ng-deep .fs-list-table tbody tr td.row-actions .row-inline-action:first-child,::ng-deep .fs-list-table tbody tr th.row-actions .row-inline-action:first-child,::ng-deep .fs-list-table tbody tr .fs-list-col.row-actions .row-inline-action:first-child,::ng-deep .fs-list-table tbody .fs-list-row td.row-actions .row-inline-action:first-child,::ng-deep .fs-list-table tbody .fs-list-row th.row-actions .row-inline-action:first-child,::ng-deep .fs-list-table tbody .fs-list-row .fs-list-col.row-actions .row-inline-action:first-child,::ng-deep .fs-list-table tfoot tr td.row-actions .row-inline-action:first-child,::ng-deep .fs-list-table tfoot tr th.row-actions .row-inline-action:first-child,::ng-deep .fs-list-table tfoot tr .fs-list-col.row-actions .row-inline-action:first-child,::ng-deep .fs-list-table tfoot .fs-list-row td.row-actions .row-inline-action:first-child,::ng-deep .fs-list-table tfoot .fs-list-row th.row-actions .row-inline-action:first-child,::ng-deep .fs-list-table tfoot .fs-list-row .fs-list-col.row-actions .row-inline-action:first-child,::ng-deep .fs-list-table .fs-list-head tr td.row-actions .row-inline-action:first-child,::ng-deep .fs-list-table .fs-list-head tr th.row-actions .row-inline-action:first-child,::ng-deep .fs-list-table .fs-list-head tr .fs-list-col.row-actions .row-inline-action:first-child,::ng-deep .fs-list-table .fs-list-head .fs-list-row td.row-actions .row-inline-action:first-child,::ng-deep .fs-list-table .fs-list-head .fs-list-row th.row-actions .row-inline-action:first-child,::ng-deep .fs-list-table .fs-list-head .fs-list-row .fs-list-col.row-actions .row-inline-action:first-child,::ng-deep .fs-list-table .fs-list-body tr td.row-actions .row-inline-action:first-child,::ng-deep .fs-list-table .fs-list-body tr th.row-actions .row-inline-action:first-child,::ng-deep .fs-list-table .fs-list-body tr .fs-list-col.row-actions .row-inline-action:first-child,::ng-deep .fs-list-table .fs-list-body .fs-list-row td.row-actions .row-inline-action:first-child,::ng-deep .fs-list-table .fs-list-body .fs-list-row th.row-actions .row-inline-action:first-child,::ng-deep .fs-list-table .fs-list-body .fs-list-row .fs-list-col.row-actions .row-inline-action:first-child,::ng-deep .fs-list-table .fs-list-footer tr td.row-actions .row-inline-action:first-child,::ng-deep .fs-list-table .fs-list-footer tr th.row-actions .row-inline-action:first-child,::ng-deep .fs-list-table .fs-list-footer tr .fs-list-col.row-actions .row-inline-action:first-child,::ng-deep .fs-list-table .fs-list-footer .fs-list-row td.row-actions .row-inline-action:first-child,::ng-deep .fs-list-table .fs-list-footer .fs-list-row th.row-actions .row-inline-action:first-child,::ng-deep .fs-list-table .fs-list-footer .fs-list-row .fs-list-col.row-actions .row-inline-action:first-child{margin-left:0}::ng-deep .fs-list-table thead tr td.row-actions .row-inline-action-icon,::ng-deep .fs-list-table thead tr td.row-actions .row-inline-action-fab,::ng-deep .fs-list-table thead tr td.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list-table thead tr td.row-actions .row-menu-action,::ng-deep .fs-list-table thead tr th.row-actions .row-inline-action-icon,::ng-deep .fs-list-table thead tr th.row-actions .row-inline-action-fab,::ng-deep .fs-list-table thead tr th.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list-table thead tr th.row-actions .row-menu-action,::ng-deep .fs-list-table thead tr .fs-list-col.row-actions .row-inline-action-icon,::ng-deep .fs-list-table thead tr .fs-list-col.row-actions .row-inline-action-fab,::ng-deep .fs-list-table thead tr .fs-list-col.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list-table thead tr .fs-list-col.row-actions .row-menu-action,::ng-deep .fs-list-table thead .fs-list-row td.row-actions .row-inline-action-icon,::ng-deep .fs-list-table thead .fs-list-row td.row-actions .row-inline-action-fab,::ng-deep .fs-list-table thead .fs-list-row td.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list-table thead .fs-list-row td.row-actions .row-menu-action,::ng-deep .fs-list-table thead .fs-list-row th.row-actions .row-inline-action-icon,::ng-deep .fs-list-table thead .fs-list-row th.row-actions .row-inline-action-fab,::ng-deep .fs-list-table thead .fs-list-row th.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list-table thead .fs-list-row th.row-actions .row-menu-action,::ng-deep .fs-list-table thead .fs-list-row .fs-list-col.row-actions .row-inline-action-icon,::ng-deep .fs-list-table thead .fs-list-row .fs-list-col.row-actions .row-inline-action-fab,::ng-deep .fs-list-table thead .fs-list-row .fs-list-col.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list-table thead .fs-list-row .fs-list-col.row-actions .row-menu-action,::ng-deep .fs-list-table tbody tr td.row-actions .row-inline-action-icon,::ng-deep .fs-list-table tbody tr td.row-actions .row-inline-action-fab,::ng-deep .fs-list-table tbody tr td.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list-table tbody tr td.row-actions .row-menu-action,::ng-deep .fs-list-table tbody tr th.row-actions .row-inline-action-icon,::ng-deep .fs-list-table tbody tr th.row-actions .row-inline-action-fab,::ng-deep .fs-list-table tbody tr th.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list-table tbody tr th.row-actions .row-menu-action,::ng-deep .fs-list-table tbody tr .fs-list-col.row-actions .row-inline-action-icon,::ng-deep .fs-list-table tbody tr .fs-list-col.row-actions .row-inline-action-fab,::ng-deep .fs-list-table tbody tr .fs-list-col.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list-table tbody tr .fs-list-col.row-actions .row-menu-action,::ng-deep .fs-list-table tbody .fs-list-row td.row-actions .row-inline-action-icon,::ng-deep .fs-list-table tbody .fs-list-row td.row-actions .row-inline-action-fab,::ng-deep .fs-list-table tbody .fs-list-row td.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list-table tbody .fs-list-row td.row-actions .row-menu-action,::ng-deep .fs-list-table tbody .fs-list-row th.row-actions .row-inline-action-icon,::ng-deep .fs-list-table tbody .fs-list-row th.row-actions .row-inline-action-fab,::ng-deep .fs-list-table tbody .fs-list-row th.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list-table tbody .fs-list-row th.row-actions .row-menu-action,::ng-deep .fs-list-table tbody .fs-list-row .fs-list-col.row-actions .row-inline-action-icon,::ng-deep .fs-list-table tbody .fs-list-row .fs-list-col.row-actions .row-inline-action-fab,::ng-deep .fs-list-table tbody .fs-list-row .fs-list-col.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list-table tbody .fs-list-row .fs-list-col.row-actions .row-menu-action,::ng-deep .fs-list-table tfoot tr td.row-actions .row-inline-action-icon,::ng-deep .fs-list-table tfoot tr td.row-actions .row-inline-action-fab,::ng-deep .fs-list-table tfoot tr td.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list-table tfoot tr td.row-actions .row-menu-action,::ng-deep .fs-list-table tfoot tr th.row-actions .row-inline-action-icon,::ng-deep .fs-list-table tfoot tr th.row-actions .row-inline-action-fab,::ng-deep .fs-list-table tfoot tr th.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list-table tfoot tr th.row-actions .row-menu-action,::ng-deep .fs-list-table tfoot tr .fs-list-col.row-actions .row-inline-action-icon,::ng-deep .fs-list-table tfoot tr .fs-list-col.row-actions .row-inline-action-fab,::ng-deep .fs-list-table tfoot tr .fs-list-col.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list-table tfoot tr .fs-list-col.row-actions .row-menu-action,::ng-deep .fs-list-table tfoot .fs-list-row td.row-actions .row-inline-action-icon,::ng-deep .fs-list-table tfoot .fs-list-row td.row-actions .row-inline-action-fab,::ng-deep .fs-list-table tfoot .fs-list-row td.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list-table tfoot .fs-list-row td.row-actions .row-menu-action,::ng-deep .fs-list-table tfoot .fs-list-row th.row-actions .row-inline-action-icon,::ng-deep .fs-list-table tfoot .fs-list-row th.row-actions .row-inline-action-fab,::ng-deep .fs-list-table tfoot .fs-list-row th.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list-table tfoot .fs-list-row th.row-actions .row-menu-action,::ng-deep .fs-list-table tfoot .fs-list-row .fs-list-col.row-actions .row-inline-action-icon,::ng-deep .fs-list-table tfoot .fs-list-row .fs-list-col.row-actions .row-inline-action-fab,::ng-deep .fs-list-table tfoot .fs-list-row .fs-list-col.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list-table tfoot .fs-list-row .fs-list-col.row-actions .row-menu-action,::ng-deep .fs-list-table .fs-list-head tr td.row-actions .row-inline-action-icon,::ng-deep .fs-list-table .fs-list-head tr td.row-actions .row-inline-action-fab,::ng-deep .fs-list-table .fs-list-head tr td.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list-table .fs-list-head tr td.row-actions .row-menu-action,::ng-deep .fs-list-table .fs-list-head tr th.row-actions .row-inline-action-icon,::ng-deep .fs-list-table .fs-list-head tr th.row-actions .row-inline-action-fab,::ng-deep .fs-list-table .fs-list-head tr th.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list-table .fs-list-head tr th.row-actions .row-menu-action,::ng-deep .fs-list-table .fs-list-head tr .fs-list-col.row-actions .row-inline-action-icon,::ng-deep .fs-list-table .fs-list-head tr .fs-list-col.row-actions .row-inline-action-fab,::ng-deep .fs-list-table .fs-list-head tr .fs-list-col.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list-table .fs-list-head tr .fs-list-col.row-actions .row-menu-action,::ng-deep .fs-list-table .fs-list-head .fs-list-row td.row-actions .row-inline-action-icon,::ng-deep .fs-list-table .fs-list-head .fs-list-row td.row-actions .row-inline-action-fab,::ng-deep .fs-list-table .fs-list-head .fs-list-row td.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list-table .fs-list-head .fs-list-row td.row-actions .row-menu-action,::ng-deep .fs-list-table .fs-list-head .fs-list-row th.row-actions .row-inline-action-icon,::ng-deep .fs-list-table .fs-list-head .fs-list-row th.row-actions .row-inline-action-fab,::ng-deep .fs-list-table .fs-list-head .fs-list-row th.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list-table .fs-list-head .fs-list-row th.row-actions .row-menu-action,::ng-deep .fs-list-table .fs-list-head .fs-list-row .fs-list-col.row-actions .row-inline-action-icon,::ng-deep .fs-list-table .fs-list-head .fs-list-row .fs-list-col.row-actions .row-inline-action-fab,::ng-deep .fs-list-table .fs-list-head .fs-list-row .fs-list-col.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list-table .fs-list-head .fs-list-row .fs-list-col.row-actions .row-menu-action,::ng-deep .fs-list-table .fs-list-body tr td.row-actions .row-inline-action-icon,::ng-deep .fs-list-table .fs-list-body tr td.row-actions .row-inline-action-fab,::ng-deep .fs-list-table .fs-list-body tr td.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list-table .fs-list-body tr td.row-actions .row-menu-action,::ng-deep .fs-list-table .fs-list-body tr th.row-actions .row-inline-action-icon,::ng-deep .fs-list-table .fs-list-body tr th.row-actions .row-inline-action-fab,::ng-deep .fs-list-table .fs-list-body tr th.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list-table .fs-list-body tr th.row-actions .row-menu-action,::ng-deep .fs-list-table .fs-list-body tr .fs-list-col.row-actions .row-inline-action-icon,::ng-deep .fs-list-table .fs-list-body tr .fs-list-col.row-actions .row-inline-action-fab,::ng-deep .fs-list-table .fs-list-body tr .fs-list-col.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list-table .fs-list-body tr .fs-list-col.row-actions .row-menu-action,::ng-deep .fs-list-table .fs-list-body .fs-list-row td.row-actions .row-inline-action-icon,::ng-deep .fs-list-table .fs-list-body .fs-list-row td.row-actions .row-inline-action-fab,::ng-deep .fs-list-table .fs-list-body .fs-list-row td.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list-table .fs-list-body .fs-list-row td.row-actions .row-menu-action,::ng-deep .fs-list-table .fs-list-body .fs-list-row th.row-actions .row-inline-action-icon,::ng-deep .fs-list-table .fs-list-body .fs-list-row th.row-actions .row-inline-action-fab,::ng-deep .fs-list-table .fs-list-body .fs-list-row th.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list-table .fs-list-body .fs-list-row th.row-actions .row-menu-action,::ng-deep .fs-list-table .fs-list-body .fs-list-row .fs-list-col.row-actions .row-inline-action-icon,::ng-deep .fs-list-table .fs-list-body .fs-list-row .fs-list-col.row-actions .row-inline-action-fab,::ng-deep .fs-list-table .fs-list-body .fs-list-row .fs-list-col.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list-table .fs-list-body .fs-list-row .fs-list-col.row-actions .row-menu-action,::ng-deep .fs-list-table .fs-list-footer tr td.row-actions .row-inline-action-icon,::ng-deep .fs-list-table .fs-list-footer tr td.row-actions .row-inline-action-fab,::ng-deep .fs-list-table .fs-list-footer tr td.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list-table .fs-list-footer tr td.row-actions .row-menu-action,::ng-deep .fs-list-table .fs-list-footer tr th.row-actions .row-inline-action-icon,::ng-deep .fs-list-table .fs-list-footer tr th.row-actions .row-inline-action-fab,::ng-deep .fs-list-table .fs-list-footer tr th.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list-table .fs-list-footer tr th.row-actions .row-menu-action,::ng-deep .fs-list-table .fs-list-footer tr .fs-list-col.row-actions .row-inline-action-icon,::ng-deep .fs-list-table .fs-list-footer tr .fs-list-col.row-actions .row-inline-action-fab,::ng-deep .fs-list-table .fs-list-footer tr .fs-list-col.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list-table .fs-list-footer tr .fs-list-col.row-actions .row-menu-action,::ng-deep .fs-list-table .fs-list-footer .fs-list-row td.row-actions .row-inline-action-icon,::ng-deep .fs-list-table .fs-list-footer .fs-list-row td.row-actions .row-inline-action-fab,::ng-deep .fs-list-table .fs-list-footer .fs-list-row td.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list-table .fs-list-footer .fs-list-row td.row-actions .row-menu-action,::ng-deep .fs-list-table .fs-list-footer .fs-list-row th.row-actions .row-inline-action-icon,::ng-deep .fs-list-table .fs-list-footer .fs-list-row th.row-actions .row-inline-action-fab,::ng-deep .fs-list-table .fs-list-footer .fs-list-row th.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list-table .fs-list-footer .fs-list-row th.row-actions .row-menu-action,::ng-deep .fs-list-table .fs-list-footer .fs-list-row .fs-list-col.row-actions .row-inline-action-icon,::ng-deep .fs-list-table .fs-list-footer .fs-list-row .fs-list-col.row-actions .row-inline-action-fab,::ng-deep .fs-list-table .fs-list-footer .fs-list-row .fs-list-col.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list-table .fs-list-footer .fs-list-row .fs-list-col.row-actions .row-menu-action{width:35px;justify-content:center;align-items:center}::ng-deep .fs-list-table thead tr td.left,::ng-deep .fs-list-table thead tr th.left,::ng-deep .fs-list-table thead tr .fs-list-col.left,::ng-deep .fs-list-table thead .fs-list-row td.left,::ng-deep .fs-list-table thead .fs-list-row th.left,::ng-deep .fs-list-table thead .fs-list-row .fs-list-col.left,::ng-deep .fs-list-table tbody tr td.left,::ng-deep .fs-list-table tbody tr th.left,::ng-deep .fs-list-table tbody tr .fs-list-col.left,::ng-deep .fs-list-table tbody .fs-list-row td.left,::ng-deep .fs-list-table tbody .fs-list-row th.left,::ng-deep .fs-list-table tbody .fs-list-row .fs-list-col.left,::ng-deep .fs-list-table tfoot tr td.left,::ng-deep .fs-list-table tfoot tr th.left,::ng-deep .fs-list-table tfoot tr .fs-list-col.left,::ng-deep .fs-list-table tfoot .fs-list-row td.left,::ng-deep .fs-list-table tfoot .fs-list-row th.left,::ng-deep .fs-list-table tfoot .fs-list-row .fs-list-col.left,::ng-deep .fs-list-table .fs-list-head tr td.left,::ng-deep .fs-list-table .fs-list-head tr th.left,::ng-deep .fs-list-table .fs-list-head tr .fs-list-col.left,::ng-deep .fs-list-table .fs-list-head .fs-list-row td.left,::ng-deep .fs-list-table .fs-list-head .fs-list-row th.left,::ng-deep .fs-list-table .fs-list-head .fs-list-row .fs-list-col.left,::ng-deep .fs-list-table .fs-list-body tr td.left,::ng-deep .fs-list-table .fs-list-body tr th.left,::ng-deep .fs-list-table .fs-list-body tr .fs-list-col.left,::ng-deep .fs-list-table .fs-list-body .fs-list-row td.left,::ng-deep .fs-list-table .fs-list-body .fs-list-row th.left,::ng-deep .fs-list-table .fs-list-body .fs-list-row .fs-list-col.left,::ng-deep .fs-list-table .fs-list-footer tr td.left,::ng-deep .fs-list-table .fs-list-footer tr th.left,::ng-deep .fs-list-table .fs-list-footer tr .fs-list-col.left,::ng-deep .fs-list-table .fs-list-footer .fs-list-row td.left,::ng-deep .fs-list-table .fs-list-footer .fs-list-row th.left,::ng-deep .fs-list-table .fs-list-footer .fs-list-row .fs-list-col.left{text-align:left}::ng-deep .fs-list-table thead tr td.center,::ng-deep .fs-list-table thead tr th.center,::ng-deep .fs-list-table thead tr .fs-list-col.center,::ng-deep .fs-list-table thead .fs-list-row td.center,::ng-deep .fs-list-table thead .fs-list-row th.center,::ng-deep .fs-list-table thead .fs-list-row .fs-list-col.center,::ng-deep .fs-list-table tbody tr td.center,::ng-deep .fs-list-table tbody tr th.center,::ng-deep .fs-list-table tbody tr .fs-list-col.center,::ng-deep .fs-list-table tbody .fs-list-row td.center,::ng-deep .fs-list-table tbody .fs-list-row th.center,::ng-deep .fs-list-table tbody .fs-list-row .fs-list-col.center,::ng-deep .fs-list-table tfoot tr td.center,::ng-deep .fs-list-table tfoot tr th.center,::ng-deep .fs-list-table tfoot tr .fs-list-col.center,::ng-deep .fs-list-table tfoot .fs-list-row td.center,::ng-deep .fs-list-table tfoot .fs-list-row th.center,::ng-deep .fs-list-table tfoot .fs-list-row .fs-list-col.center,::ng-deep .fs-list-table .fs-list-head tr td.center,::ng-deep .fs-list-table .fs-list-head tr th.center,::ng-deep .fs-list-table .fs-list-head tr .fs-list-col.center,::ng-deep .fs-list-table .fs-list-head .fs-list-row td.center,::ng-deep .fs-list-table .fs-list-head .fs-list-row th.center,::ng-deep .fs-list-table .fs-list-head .fs-list-row .fs-list-col.center,::ng-deep .fs-list-table .fs-list-body tr td.center,::ng-deep .fs-list-table .fs-list-body tr th.center,::ng-deep .fs-list-table .fs-list-body tr .fs-list-col.center,::ng-deep .fs-list-table .fs-list-body .fs-list-row td.center,::ng-deep .fs-list-table .fs-list-body .fs-list-row th.center,::ng-deep .fs-list-table .fs-list-body .fs-list-row .fs-list-col.center,::ng-deep .fs-list-table .fs-list-footer tr td.center,::ng-deep .fs-list-table .fs-list-footer tr th.center,::ng-deep .fs-list-table .fs-list-footer tr .fs-list-col.center,::ng-deep .fs-list-table .fs-list-footer .fs-list-row td.center,::ng-deep .fs-list-table .fs-list-footer .fs-list-row th.center,::ng-deep .fs-list-table .fs-list-footer .fs-list-row .fs-list-col.center{text-align:center}::ng-deep .fs-list-table thead tr td.right,::ng-deep .fs-list-table thead tr th.right,::ng-deep .fs-list-table thead tr .fs-list-col.right,::ng-deep .fs-list-table thead .fs-list-row td.right,::ng-deep .fs-list-table thead .fs-list-row th.right,::ng-deep .fs-list-table thead .fs-list-row .fs-list-col.right,::ng-deep .fs-list-table tbody tr td.right,::ng-deep .fs-list-table tbody tr th.right,::ng-deep .fs-list-table tbody tr .fs-list-col.right,::ng-deep .fs-list-table tbody .fs-list-row td.right,::ng-deep .fs-list-table tbody .fs-list-row th.right,::ng-deep .fs-list-table tbody .fs-list-row .fs-list-col.right,::ng-deep .fs-list-table tfoot tr td.right,::ng-deep .fs-list-table tfoot tr th.right,::ng-deep .fs-list-table tfoot tr .fs-list-col.right,::ng-deep .fs-list-table tfoot .fs-list-row td.right,::ng-deep .fs-list-table tfoot .fs-list-row th.right,::ng-deep .fs-list-table tfoot .fs-list-row .fs-list-col.right,::ng-deep .fs-list-table .fs-list-head tr td.right,::ng-deep .fs-list-table .fs-list-head tr th.right,::ng-deep .fs-list-table .fs-list-head tr .fs-list-col.right,::ng-deep .fs-list-table .fs-list-head .fs-list-row td.right,::ng-deep .fs-list-table .fs-list-head .fs-list-row th.right,::ng-deep .fs-list-table .fs-list-head .fs-list-row .fs-list-col.right,::ng-deep .fs-list-table .fs-list-body tr td.right,::ng-deep .fs-list-table .fs-list-body tr th.right,::ng-deep .fs-list-table .fs-list-body tr .fs-list-col.right,::ng-deep .fs-list-table .fs-list-body .fs-list-row td.right,::ng-deep .fs-list-table .fs-list-body .fs-list-row th.right,::ng-deep .fs-list-table .fs-list-body .fs-list-row .fs-list-col.right,::ng-deep .fs-list-table .fs-list-footer tr td.right,::ng-deep .fs-list-table .fs-list-footer tr th.right,::ng-deep .fs-list-table .fs-list-footer tr .fs-list-col.right,::ng-deep .fs-list-table .fs-list-footer .fs-list-row td.right,::ng-deep .fs-list-table .fs-list-footer .fs-list-row th.right,::ng-deep .fs-list-table .fs-list-footer .fs-list-row .fs-list-col.right{text-align:right}::ng-deep .fs-list-table thead tr.draggable,::ng-deep .fs-list-table thead .fs-list-row.draggable,::ng-deep .fs-list-table tbody tr.draggable,::ng-deep .fs-list-table tbody .fs-list-row.draggable,::ng-deep .fs-list-table tfoot tr.draggable,::ng-deep .fs-list-table tfoot .fs-list-row.draggable,::ng-deep .fs-list-table .fs-list-head tr.draggable,::ng-deep .fs-list-table .fs-list-head .fs-list-row.draggable,::ng-deep .fs-list-table .fs-list-body tr.draggable,::ng-deep .fs-list-table .fs-list-body .fs-list-row.draggable,::ng-deep .fs-list-table .fs-list-footer tr.draggable,::ng-deep .fs-list-table .fs-list-footer .fs-list-row.draggable{position:fixed;z-index:9999;box-shadow:2px 2px 2px #9e9e9ea6;border-radius:5px;background-color:#f6f6f6}::ng-deep .fs-list-table thead tr.draggable td,::ng-deep .fs-list-table thead tr.draggable .fs-list-col,::ng-deep .fs-list-table thead .fs-list-row.draggable td,::ng-deep .fs-list-table thead .fs-list-row.draggable .fs-list-col,::ng-deep .fs-list-table tbody tr.draggable td,::ng-deep .fs-list-table tbody tr.draggable .fs-list-col,::ng-deep .fs-list-table tbody .fs-list-row.draggable td,::ng-deep .fs-list-table tbody .fs-list-row.draggable .fs-list-col,::ng-deep .fs-list-table tfoot tr.draggable td,::ng-deep .fs-list-table tfoot tr.draggable .fs-list-col,::ng-deep .fs-list-table tfoot .fs-list-row.draggable td,::ng-deep .fs-list-table tfoot .fs-list-row.draggable .fs-list-col,::ng-deep .fs-list-table .fs-list-head tr.draggable td,::ng-deep .fs-list-table .fs-list-head tr.draggable .fs-list-col,::ng-deep .fs-list-table .fs-list-head .fs-list-row.draggable td,::ng-deep .fs-list-table .fs-list-head .fs-list-row.draggable .fs-list-col,::ng-deep .fs-list-table .fs-list-body tr.draggable td,::ng-deep .fs-list-table .fs-list-body tr.draggable .fs-list-col,::ng-deep .fs-list-table .fs-list-body .fs-list-row.draggable td,::ng-deep .fs-list-table .fs-list-body .fs-list-row.draggable .fs-list-col,::ng-deep .fs-list-table .fs-list-footer tr.draggable td,::ng-deep .fs-list-table .fs-list-footer tr.draggable .fs-list-col,::ng-deep .fs-list-table .fs-list-footer .fs-list-row.draggable td,::ng-deep .fs-list-table .fs-list-footer .fs-list-row.draggable .fs-list-col{border:none}::ng-deep .fs-list-table .fs-list-container.has-dragging thead th{border-bottom:2px solid #ddd}::ng-deep .fs-list-table .fs-list-container.has-dragging tbody tr:nth-child(2) td{border-top:none}::ng-deep .fs-list-table tfoot td{padding:8px}::ng-deep .reorder-in-progress{-webkit-user-select:none;user-select:none}::ng-deep .draggable-elem td{opacity:.2}::ng-deep .hidden-mobile-menu-action{display:none!important}::ng-deep .hidden-mobile{display:none!important}@media only screen and (max-width: 600px){::ng-deep .fs-list-filter .inline-actions{top:initial!important;position:initial!important}::ng-deep .fs-list-filter .inline-actions .action-filter{margin-bottom:0!important}::ng-deep .fs-list-header .filter-input-field .mat-form-field-wrapper{padding:0!important}::ng-deep .fs-list-header.has-filters{flex-flow:row wrap}}@media only screen and (max-width: 768px){::ng-deep .show-mobile{display:inline-block!important}::ng-deep .fs-list-actions .action-button{display:none}::ng-deep .row-inline-action.mobile-hide{display:none}::ng-deep .hidden-mobile-menu-action{display:block!important}}\n"], components: [{ type: i10.FilterComponent, selector: "fs-filter", inputs: ["config", "filter", "showSortBy", "showFilterInput"], outputs: ["closed", "opened", "ready"] }, { type: i11.FsStatusComponent, selector: "fs-list-status", inputs: ["paging", "sorting", "rows", "scrollable", "firstLoad"] }, { type: i12.FsHeadComponent, selector: "[fs-list-head]", inputs: ["sorting", "columns", "hasRowActions", "selection", "activeFiltersCount", "reorderEnabled", "reorderPosition", "reorderStrategy"] }, { type: i13.FsBodyComponent, selector: "[fs-list-body]", inputs: ["rows", "columns", "hasFooter", "rowActionsRaw", "groupActionsRaw", "rowEvents", "rowClass", "hasRowActions", "selection", "restoreMode", "rowRemoved", "activeFiltersCount", "reorderEnabled", "reorderPosition", "reorderStrategy", "reorderMultiple"] }, { type: i14.FsFooterComponent, selector: "[fs-list-footer]", inputs: ["hasRowActions", "columns", "selection", "activeFiltersCount", "reorderEnabled", "reorderPosition", "reorderStrategy"] }, { type: i15.FsListLoaderComponent, selector: "fs-list-loader", inputs: ["columns", "loaderLines"] }, { type: i16.FsPaginationComponent, selector: "fs-list-pagination", inputs: ["pagination", "rows"] }], directives: [{ type: i9.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i9.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i9.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i10.FilterStatusBarDirective, selector: "[fsFilterStatusBar]" }, { type: i17.FsListContentInitDirective, selector: "[fsListContentInit]", inputs: ["fsListContentInit"] }, { type: i18.FsListDraggableListDirective, selector: "[fsListDraggableList]", inputs: ["rows"] }, { type: i19.FsListFooterDirective, selector: "[fs-list-footer]", inputs: ["colspan", "align", "class"] }], pipes: { "async": i9.AsyncPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
329
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsListComponent, decorators: [{
330
+ type: Component,
331
+ args: [{
332
+ selector: 'fs-list',
333
+ templateUrl: 'list.component.html',
334
+ styleUrls: ['./list.component.scss'],
335
+ changeDetection: ChangeDetectionStrategy.OnPush,
336
+ providers: [
337
+ GroupExpandNotifierService,
338
+ PersistanceController,
339
+ ReorderController,
340
+ ]
341
+ }]
342
+ }], ctorParameters: function () { return [{ type: i1.ReorderController }, { type: undefined, decorators: [{
343
+ type: Optional
344
+ }, {
345
+ type: Inject,
346
+ args: [FS_LIST_DEFAULT_CONFIG]
347
+ }] }, { type: i2.FsScrollService, decorators: [{
348
+ type: Optional
349
+ }] }, { type: i3.MatDialogRef, decorators: [{
350
+ type: Optional
351
+ }] }, { type: i4.DrawerRef, decorators: [{
352
+ type: Optional
353
+ }] }, { type: i0.ElementRef }, { type: i5.SelectionDialog }, { type: i3.MatDialog }, { type: i0.ChangeDetectorRef }, { type: i6.GroupExpandNotifierService }, { type: i7.Router }, { type: i7.ActivatedRoute }, { type: i8.PersistanceController }, { type: i9.Location }]; }, propDecorators: { classFsList: [{
354
+ type: HostBinding,
355
+ args: ['class.fs-list']
356
+ }], config: [{
357
+ type: Input,
358
+ args: ['config']
359
+ }], loaderLines: [{
360
+ type: Input
361
+ }], filtersReady: [{
362
+ type: Output
363
+ }], filterReference: [{
364
+ type: ViewChild,
365
+ args: [FilterComponent]
366
+ }], columnTemplates: [{
367
+ type: ContentChildren,
368
+ args: [FsListColumnDirective]
369
+ }], _emptyStateTemplate: [{
370
+ type: ContentChild,
371
+ args: [FsListEmptyStateDirective, { read: TemplateRef }]
372
+ }], headingTemplate: [{
373
+ type: ContentChild,
374
+ args: [FsListHeadingDirective, { read: TemplateRef }]
375
+ }], headingContainerTemplate: [{
376
+ type: ContentChild,
377
+ args: [FsListHeadingContainerDirective, { read: TemplateRef }]
378
+ }], subheadingTemplate: [{
379
+ type: ContentChild,
380
+ args: [FsListSubheadingDirective, { read: TemplateRef }]
381
+ }] } });
382
382
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvbGlzdC9saXN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9saXN0L2xpc3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUFFLGlCQUFpQixFQUMxQyxTQUFTLEVBQ1QsZUFBZSxFQUNmLFVBQVUsRUFDVixZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFHTCxTQUFTLEVBQ1QsU0FBUyxFQUNULFdBQVcsRUFDWCxRQUFRLEVBQ1IsWUFBWSxFQUNaLFdBQVcsRUFDWCxNQUFNLEdBRVAsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUVuRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUvRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDckQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFL0MsT0FBTyxFQUFFLFNBQVMsRUFB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e1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkcmVuLFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIEluamVjdCxcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBRdWVyeUxpc3QsXG4gIFZpZXdDaGlsZCxcbiAgSG9zdEJpbmRpbmcsXG4gIE9wdGlvbmFsLFxuICBDb250ZW50Q2hpbGQsXG4gIFRlbXBsYXRlUmVmLFxuICBPdXRwdXQsXG4gIEFmdGVyQ29udGVudEluaXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBMb2NhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBNYXREaWFsb2csIE1hdERpYWxvZ1JlZiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5cbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGZpbHRlciwgc2tpcCwgdGFrZSwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBGc1Njcm9sbFNlcnZpY2UgfSBmcm9tICdAZmlyZXN0aXRjaC9zY3JvbGwnO1xuaW1wb3J0IHsgRmlsdGVyQ29tcG9uZW50IH0gZnJvbSAnQGZpcmVzdGl0Y2gvZmlsdGVyJztcbmltcG9ydCB7IFNlbGVjdGlvbkRpYWxvZyB9IGZyb20gJ0BmaXJlc3RpdGNoL3NlbGVjdGlvbic7XG5pbXBvcnQgeyBnZXROb3JtYWxpemVkUGF0aCB9IGZyb20gJ0BmaXJlc3RpdGNoL2NvbW1vbic7XG5pbXBvcnQgeyBEcmF3ZXJSZWYgfSBmcm9tICdAZmlyZXN0aXRjaC9kcmF3ZXInO1xuXG5pbXBvcnQgeyBjbG9uZURlZXAsIG1lcmdlV2l0aCB9IGZyb20gJ2xvZGFzaC1lcyc7XG5cbmltcG9ydCB7IExpc3QgfSBmcm9tICcuLi8uLi9jbGFzc2VzL2xpc3QtY29udHJvbGxlcic7XG5pbXBvcnQgeyBSZW9yZGVyQ29udHJvbGxlciB9IGZyb20gJy4uLy4uL2NsYXNzZXMvcmVvcmRlci1jb250cm9sbGVyJztcblxuaW1wb3J0IHsgRnNMaXN0Q29sdW1uRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlcy9jb2x1bW4vY29sdW1uLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBGc0xpc3RFbXB0eVN0YXRlRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlcy9lbXB0eS1zdGF0ZS9lbXB0eS1zdGF0ZS5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgRlNfTElTVF9ERUZBVUxUX0NPTkZJRyB9IGZyb20gJy4uLy4uL2ZzLWxpc3QucHJvdmlkZXJzJztcbmltcG9ydCB7XG4gIEZzTGlzdEFic3RyYWN0Um93LFxuICBGc0xpc3RBY3Rpb24sXG4gIEZzTGlzdENvbmZpZywgRnNMaXN0UGVyc2l0YW5jZSwgRnNMaXN0U2VsZWN0aW9uQ29uZmlnLFxuICBGc0xpc3RUcmFja0J5Rm4sXG4gIEZzTGlzdFRyYWNrQnlUYXJnZXRSb3dGblxufSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IEN1c3RvbWl6ZUNvbHNEaWFsb2dDb21wb25lbnQgfSBmcm9tICcuLi9jdXN0b21pemUtY29scy9jdXN0b21pemUtY29scy5jb21wb25lbnQnO1xuaW1wb3J0IHsgR3JvdXBFeHBhbmROb3RpZmllclNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9ncm91cC1leHBhbmQtbm90aWZpZXIuc2VydmljZSc7XG5pbXBvcnQgeyBQZXJzaXN0YW5jZUNvbnRyb2xsZXIgfSBmcm9tICcuLi8uLi9jbGFzc2VzL3BlcnNpc3RhbmNlLWNvbnRyb2xsZXInO1xuaW1wb3J0IHsgRnNMaXN0SGVhZGluZ0NvbnRhaW5lckRpcmVjdGl2ZSwgRnNMaXN0SGVhZGluZ0RpcmVjdGl2ZSwgRnNMaXN0U3ViaGVhZGluZ0RpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMnO1xuXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2ZzLWxpc3QnLFxuICB0ZW1wbGF0ZVVybDogJ2xpc3QuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9saXN0LmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBwcm92aWRlcnM6IFtcbiAgICBHcm91cEV4cGFuZE5vdGlmaWVyU2VydmljZSxcbiAgICBQZXJzaXN0YW5jZUNvbnRyb2xsZXIsXG4gICAgUmVvcmRlckNvbnRyb2xsZXIsXG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgRnNMaXN0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIEFmdGVyQ29udGVudEluaXQge1xuXG4gIEBIb3N0QmluZGluZygnY2xhc3MuZnMtbGlzdCcpIGNsYXNzRnNMaXN0ID0gdHJ1ZTtcblxuICBASW5wdXQoJ2NvbmZpZycpXG4gIHB1YmxpYyBzZXQgY29uZmlnKGNvbmZpZzogRnNMaXN0Q29uZmlnKSB7XG4gICAgdGhpcy5faW5pdFdpdGhDb25maWcoY29uZmlnKVxuICB9XG5cbiAgQElucHV0KClcbiAgcHVibGljIGxvYWRlckxpbmVzID0gMztcblxuICBAT3V0cHV0KClcbiAgcHVibGljIGZpbHRlcnNSZWFkeSA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICBwdWJsaWMgbGlzdDogTGlzdDtcbiAgcHVibGljIGtleXdvcmRWaXNpYmxlID0gdHJ1ZTtcbiAgcHJpdmF0ZSBsaXN0Q29sdW1uRGlyZWN0aXZlczogUXVlcnlMaXN0PEZzTGlzdENvbHVtbkRpcmVjdGl2ZT47XG5cbiAgLy8gRXZlbnQgd2lsbCBmaXJlZCBpZiBhY3Rpb24gcmVtb3ZlOiB0cnVlIHdpbGwgY2xpY2tlZFxuICBwdWJsaWMgcm93UmVtb3ZlZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgcHVibGljIGZpcnN0TG9hZCA9IHRydWU7XG5cbiAgLy8gcHVibGljIHJlYWRvbmx5IFJlb3JkZXJTdHJhdGVneSA9IFJlb3JkZXJTdHJhdGVneTtcblxuICBwcml2YXRlIF9maWx0ZXJSZWY6IEZpbHRlckNvbXBvbmVudDtcbiAgcHJpdmF0ZSBfZmlsdGVyUGFyYW1zUmVhZHkgPSBmYWxzZTtcbiAgcHJpdmF0ZSBfaW5EaWFsb2cgPSAhIXRoaXMuX2RpYWxvZ1JlZiB8fCAhIXRoaXMuX2RyYXdlclJlZjtcblxuICBwcml2YXRlIF9kZXN0cm95ID0gbmV3IFN1YmplY3QoKTtcblxuICBAVmlld0NoaWxkKEZpbHRlckNvbXBvbmVudClcbiAgcHJpdmF0ZSBzZXQgZmlsdGVyUmVmZXJlbmNlKGNvbXBvbmVudCkge1xuICAgIHRoaXMuX2ZpbHRlclJlZiA9IGNvbXBvbmVudDtcbiAgICB0aGlzLmxpc3QuYWN0aW9ucy5zZXRGaWx0ZXJSZWYoY29tcG9uZW50KTtcblxuICAgIHRoaXMuX2VtaXRGaWx0ZXJzUmVhZHlFdmVudCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCBjb2x1bW5zIHRvIGNvbmZpZ1xuICAgKiBDcmVhdGUgQ29sdW1uIE1vZGVsIGluc3RhbmNlc1xuICAgKlxuICAgKi9cbiAgQENvbnRlbnRDaGlsZHJlbihGc0xpc3RDb2x1bW5EaXJlY3RpdmUpXG4gIHByaXZhdGUgc2V0IGNvbHVtblRlbXBsYXRlcyhsaXN0Q29sdW1uRGlyZWN0aXZlczogUXVlcnlMaXN0PEZzTGlzdENvbHVtbkRpcmVjdGl2ZT4pIHtcbiAgICB0aGlzLmxpc3RDb2x1bW5EaXJlY3RpdmVzID0gbGlzdENvbHVtbkRpcmVjdGl2ZXM7XG4gICAgaWYgKHRoaXMubGlzdCkge1xuICAgICAgdGhpcy5saXN0LnRyYW5mb3JtVGVtcGxhdGVzVG9Db2x1bW5zKGxpc3RDb2x1bW5EaXJlY3RpdmVzKTtcbiAgICB9XG4gIH1cblxuICBAQ29udGVudENoaWxkKEZzTGlzdEVtcHR5U3RhdGVEaXJlY3RpdmUsIHsgcmVhZDogVGVtcGxhdGVSZWYgfSlcbiAgcHJpdmF0ZSBzZXQgX2VtcHR5U3RhdGVUZW1wbGF0ZSh0ZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55Pikge1xuICAgIGlmICh0aGlzLmxpc3QpIHtcbiAgICAgIHRoaXMubGlzdC5lbXB0eVN0YXRlVGVtcGxhdGUgPSB0ZW1wbGF0ZTtcbiAgICB9XG4gIH1cblxuICBAQ29udGVudENoaWxkKEZzTGlzdEhlYWRpbmdEaXJlY3RpdmUsIHsgcmVhZDogVGVtcGxhdGVSZWYgfSlcbiAgcHVibGljIGhlYWRpbmdUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICBAQ29udGVudENoaWxkKEZzTGlzdEhlYWRpbmdDb250YWluZXJEaXJlY3RpdmUsIHsgcmVhZDogVGVtcGxhdGVSZWYgfSlcbiAgcHVibGljIGhlYWRpbmdDb250YWluZXJUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICBAQ29udGVudENoaWxkKEZzTGlzdFN1YmhlYWRpbmdEaXJlY3RpdmUsIHsgcmVhZDogVGVtcGxhdGVSZWYgfSlcbiAgcHVibGljIHN1YmhlYWRpbmdUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgcmVvcmRlckNvbnRyb2xsZXI6IFJlb3JkZXJDb250cm9sbGVyLFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoRlNfTElTVF9ERUZBVUxUX0NPTkZJRykgcHJpdmF0ZSBfZGVmYXVsdE9wdGlvbnMsXG4gICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSBmc1Njcm9sbDogRnNTY3JvbGxTZXJ2aWNlLFxuICAgIEBPcHRpb25hbCgpIHByaXZhdGUgX2RpYWxvZ1JlZjogTWF0RGlhbG9nUmVmPGFueT4sXG4gICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSBfZHJhd2VyUmVmOiBEcmF3ZXJSZWY8YW55PixcbiAgICBwcml2YXRlIF9lbDogRWxlbWVudFJlZixcbiAgICBwcml2YXRlIHNlbGVjdGlvbkRpYWxvZzogU2VsZWN0aW9uRGlhbG9nLFxuICAgIHByaXZhdGUgZGlhbG9nOiBNYXREaWFsb2csXG4gICAgcHJpdmF0ZSBjZFJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSBfZ3JvdXBFeHBhbmROb3RpZmllcjogR3JvdXBFeHBhbmROb3RpZmllclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBfcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJpdmF0ZSBfcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgIHByaXZhdGUgX3BlcnNpc3RhbmNlOiBQZXJzaXN0YW5jZUNvbnRyb2xsZXIsXG4gICAgcHJpdmF0ZSBfbG9jYXRpb246IExvY2F0aW9uLFxuICApIHt9XG5cbiAgLyoqXG4gICAqIFJldHVybiByZWZlcmVuY2UgZm9yIGZpbHRlclxuICAgKi9cbiAgcHVibGljIGdldCBmaWx0ZXJSZWYoKTogRmlsdGVyQ29tcG9uZW50IHtcbiAgICByZXR1cm4gdGhpcy5fZmlsdGVyUmVmO1xuICB9XG5cbiAgcHVibGljIGdldCBncm91cEVuYWJsZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMubGlzdC5kYXRhQ29udHJvbGxlci5ncm91cEVuYWJsZWQ7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGhhc0ZpbHRlcktleXdvcmQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMubGlzdC5maWx0ZXJJbnB1dCAmJiB0aGlzLmtleXdvcmRWaXNpYmxlO1xuICB9XG5cbiAgcHVibGljIGdldCBoYXNTdGF0dXMoKSB7XG4gICAgcmV0dXJuIHRoaXMubGlzdC5zdGF0dXMgJiZcbiAgICAgICh0aGlzLmxpc3Quc29ydGluZy5pc0RlZmluZWQgfHwgdGhpcy5saXN0LnBhZ2luZy5lbmFibGVkKSAmJlxuICAgICAgKCF0aGlzLnJlb3JkZXJDb250cm9sbGVyLmVuYWJsZWQgfHwgKHRoaXMucmVvcmRlckNvbnRyb2xsZXIuZW5hYmxlZCAmJiB0aGlzLnJlb3JkZXJDb250cm9sbGVyLnN0YXR1cykpICYmXG4gICAgICAoKHRoaXMubGlzdC5zY3JvbGxhYmxlICYmIHRoaXMubGlzdC5zY3JvbGxhYmxlLnN0YXR1cykgfHwgIXRoaXMubGlzdC5zY3JvbGxhYmxlKVxuICB9XG5cbiAgcHVibGljIGdldCBwYWdpbmF0b3JWaXNpYmxlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmxpc3QucGFnaW5nLmVuYWJsZWRcbiAgICAgICYmICF0aGlzLmZpcnN0TG9hZFxuICAgICAgJiYgIXRoaXMubGlzdC5zY3JvbGxhYmxlXG4gICAgICAmJiAhdGhpcy5saXN0LmVtcHR5U3RhdGVFbmFibGVkXG4gICAgICAmJiB0aGlzLmxpc3QuZGF0YUNvbnRyb2xsZXIudmlzaWJsZVJvd3NDb3VudCA+IDBcbiAgICAgICYmIHRoaXMubGlzdC5wYWdpbmcucGFnZXMgPiAxO1xuICB9XG5cbiAgcHVibGljIHNldCBncm91cEVuYWJsZWQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLmxpc3QuZ3JvdXBFbmFibGVkKHZhbHVlKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgZmlsdGVyc1F1ZXJ5KCk6IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHtcbiAgICByZXR1cm4gdGhpcy5saXN0LmZpbHRlcnNRdWVyeTtcbiAgfVxuXG4gIHB1YmxpYyBuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7XG4gICAgaWYodGhpcy5saXN0LmFmdGVySW5pdCkge1xuICAgICAgdGhpcy5saXN0LmFmdGVySW5pdCh0aGlzKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5fc3Vic2NyaWJlVG9SZW1vdmVSb3coKTtcbiAgICB0aGlzLl9zdWJzY3JpYmVUb0dyb3VwRXhwYW5kU3RhdHVzQ2hhbmdlKCk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKSB7XG4gICAgaWYgKHRoaXMubGlzdCkge1xuICAgICAgdGhpcy5saXN0LmRlc3Ryb3koKTtcbiAgICB9XG5cbiAgICB0aGlzLl9kZXN0cm95Lm5leHQoKTtcbiAgICB0aGlzLl9kZXN0cm95LmNvbXBsZXRlKCk7XG4gIH1cblxuICBwdWJsaWMgbmV4dFBhZ2UoKSB7XG4gICAgdGhpcy5saXN0LnBhZ2luZy5nb05leHQoKTtcbiAgfVxuXG4gIHB1YmxpYyBwcmV2UGFnZSgpIHtcbiAgICB0aGlzLmxpc3QucGFnaW5nLmdvUHJldigpO1xuICB9XG5cbiAgcHVibGljIGZpcnN0UGFnZSgpIHtcbiAgICB0aGlzLmxpc3QucGFnaW5nLmdvRmlyc3QoKTtcbiAgfVxuXG4gIHB1YmxpYyBsYXN0UGFnZSgpIHtcbiAgICB0aGlzLmxpc3QucGFnaW5nLmdvTGFzdCgpO1xuICB9XG5cbiAgcHVibGljIHJlbG9hZCgpIHtcbiAgICB0aGlzLmxpc3QucmVsb2FkKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0RGF0YSh0cmFja0J5PzogRnNMaXN0VHJhY2tCeUZuKSB7XG4gICAgcmV0dXJuIHRoaXMubGlzdC5nZXREYXRhKHRyYWNrQnkpO1xuICB9XG5cbiAgcHVibGljIGhhc0RhdGEodHJhY2tCeTogRnNMaXN0VHJhY2tCeUZuKSB7XG4gICAgcmV0dXJuIHRoaXMubGlzdC5oYXNEYXRhKHRyYWNrQnkpO1xuICB9XG5cbiAgcHVibGljIHVwZGF0ZURhdGEoXG4gICAgcm93czogRnNMaXN0QWJzdHJhY3RSb3cgfCBGc0xpc3RBYnN0cmFjdFJvd1tdLFxuICAgIHRyYWNrQnk/OiBGc0xpc3RUcmFja0J5VGFyZ2V0Um93Rm5cbiAgKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMubGlzdC5kYXRhQ29udHJvbGxlci51cGRhdGVEYXRhKHJvd3MsIHRyYWNrQnkpO1xuICB9XG5cbiAgcHVibGljIHJlcGxhY2VSb3coXG4gICAgcm93OiBGc0xpc3RBYnN0cmFjdFJvdyxcbiAgICB0cmFja0J5PzogRnNMaXN0VHJhY2tCeVRhcmdldFJvd0ZuXG4gICk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmxpc3QuZGF0YUNvbnRyb2xsZXIucmVwbGFjZURhdGEocm93LCB0cmFja0J5KTtcbiAgfVxuXG4gIHB1YmxpYyB1cGRhdGVTZWxlY3Rpb25Db25maWcoY29uZmlnOiBGc0xpc3RTZWxlY3Rpb25Db25maWcpIHtcbiAgICB0aGlzLmxpc3Quc2VsZWN0aW9uLnVwZGF0ZUNvbmZpZyhjb25maWcpO1xuICB9XG5cbiAgcHVibGljIHJlc2V0U2VsZWN0aW9uQWN0aW9ucygpIHtcbiAgICB0aGlzLmxpc3Quc2VsZWN0aW9uLnJlc2V0QWN0aW9ucygpO1xuICB9XG5cbiAgcHVibGljIGVuYWJsZVNlbGVjdGlvbigpIHtcbiAgICB0aGlzLmxpc3Quc2VsZWN0aW9uLmVuYWJsZVNlbGVjdGlvbigpO1xuICB9XG5cbiAgcHVibGljIGRpc2FibGVTZWxlY3Rpb24oKSB7XG4gICAgdGhpcy5saXN0LnNlbGVjdGlvbi5kaXNhYmxlU2VsZWN0aW9uKCk7XG4gIH1cblxuICBwdWJsaWMgcmVtb3ZlRGF0YShkYXRhOiBGc0xpc3RBYnN0cmFjdFJvdyB8IEZzTGlzdEFic3RyYWN0Um93W10gfCBGc0xpc3RUcmFja0J5VGFyZ2V0Um93Rm4pOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5saXN0LmRhdGFDb250cm9sbGVyLnJlbW92ZURhdGEoZGF0YSk7XG4gIH1cblxuICBwdWJsaWMgc2V0SGVhZGluZyhoZWFkaW5nOiBzdHJpbmcpIHtcbiAgICB0aGlzLmxpc3QuaGVhZGluZyA9IGhlYWRpbmc7XG4gIH1cblxuICBwdWJsaWMgc2V0U3ViaGVhZGluZyhzdWJoZWFkaW5nOiBzdHJpbmcpIHtcbiAgICB0aGlzLmxpc3Quc3ViaGVhZGluZyA9IHN1YmhlYWRpbmc7XG4gIH1cblxuICBwdWJsaWMgcmVvcmRlclN0YXJ0KCkge1xuICAgIHRoaXMucmVvcmRlckNvbnRyb2xsZXIuZW5hYmxlUmVvcmRlcigpO1xuICB9XG5cbiAgcHVibGljIHJlb3JkZXJGaW5pc2goKSB7XG4gICAgdGhpcy5yZW9yZGVyQ29udHJvbGxlci5kaXNhYmxlUmVvcmRlcigpO1xuICB9XG5cbiAgcHVibGljIHNldEFjdGlvbnMoYWN0aW9uczogRnNMaXN0QWN0aW9uW10pIHtcbiAgICBpZiAoYWN0aW9ucykge1xuICAgICAgdGhpcy5saXN0LmFjdGlvbnMuY2xlYXJBY3Rpb25zKCk7XG4gICAgICB0aGlzLmxpc3QuYWN0aW9ucy5zZXRBY3Rpb25zKGFjdGlvbnMpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBmaWx0ZXJSZWFkeSgpIHtcbiAgICB0aGlzLmxpc3QuZmlsdGVyc1JlYWR5JC5uZXh0KCk7XG4gICAgdGhpcy5fZmlsdGVyUGFyYW1zUmVhZHkgPSB0cnVlO1xuICAgIHRoaXMuX2VtaXRGaWx0ZXJzUmVhZHlFdmVudCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZSB2aXNpYmlsaXR5IGZvciBzcGVjaWZpYyBjb2x1bW5cbiAgICovXG4gIHB1YmxpYyBjb2x1bW5WaXNpYmlsaXR5KG5hbWU6IHN0cmluZywgc2hvdzogYm9vbGVhbikge1xuICAgIHRoaXMuY29sdW1uc1Zpc2liaWxpdHkoWyB7bmFtZSwgc2hvdyB9IF0pXG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlIHZpc2liaWxpdHkgZm9yIGxpc3Qgb2Ygc3BlY2lmaWMgY29sdW1uc1xuICAgKi9cbiAgcHVibGljIGNvbHVtbnNWaXNpYmlsaXR5KGNvbHVtbnM6IHsgbmFtZTogc3RyaW5nLCBzaG93OiBib29sZWFuIH1bXSkge1xuICAgIHRoaXMubGlzdC5jb2x1bW5zLnVwZGF0ZVZpc2liaWxpdHlGb3JDb2xzKGNvbHVtbnMpO1xuICB9XG5cbiAgcHJpdmF0ZSBfZW1pdEZpbHRlcnNSZWFkeUV2ZW50KCk6IHZvaWQge1xuICAgIGlmICghIXRoaXMuZmlsdGVyUmVmICYmIHRoaXMuX2ZpbHRlclBhcmFtc1JlYWR5KSB7XG4gICAgICB0aGlzLmZpbHRlcnNSZWFkeS5lbWl0KCk7XG5cbiAgICAgIHRoaXMua2V5d29yZFZpc2libGUgPSB0aGlzLmZpbHRlclJlZi5oYXNLZXl3b3JkO1xuICAgICAgdGhpcy5jZFJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogSW5pdGlhbGl6ZSBjb25maWcgZm9yIGxpc3RcbiAgICogQHBhcmFtIGNvbmZpZ1xuICAgKi9cbiAgcHJpdmF0ZSBfaW5pdFdpdGhDb25maWcoY29uZmlnOiBGc0xpc3RDb25maWcpIHtcbiAgICBpZiAodGhpcy5saXN0KSB7XG4gICAgICB0aGlzLmxpc3QuZGVzdHJveSgpO1xuICAgIH1cblxuICAgIGNvbnN0IGRlZmF1bHRPcHRzID0gdGhpcy5fZGVmYXVsdE9wdGlvbnNcbiAgICAgID8gY2xvbmVEZWVwKHRoaXMuX2RlZmF1bHRPcHRpb25zKVxuICAgICAgOiB7fTtcbiAgICBjb25zdCBsaXN0Q29uZmlnID0gbWVyZ2VXaXRoKGRlZmF1bHRPcHRzLCBjb25maWcsIHRoaXMuX2NvbmZpZ01lcmdlQ3VzdG9taXplcik7XG5cbiAgICBpZiAobGlzdENvbmZpZy5wZXJzaXN0ICE9PSBmYWxzZSkge1xuICAgICAgdGhpcy5fcmVzdG9yZVBlcnNpc3RhbmNlKGxpc3RDb25maWcucGVyc2lzdCk7XG4gICAgfVxuXG4gICAgdGhpcy5fdXBkYXRlQ3VzdG9taXplQWN0aW9uKGxpc3RDb25maWcuYWN0aW9ucyk7XG5cbiAgICB0aGlzLmxpc3QgPSBuZXcgTGlzdChcbiAgICAgIHRoaXMuX2VsLFxuICAgICAgbGlzdENvbmZpZyxcbiAgICAgIHRoaXMuZnNTY3JvbGwsXG4gICAgICB0aGlzLnNlbGVjdGlvbkRpYWxvZyxcbiAgICAgIHRoaXMuX3JvdXRlcixcbiAgICAgIHRoaXMuX3JvdXRlLFxuICAgICAgdGhpcy5fcGVyc2lzdGFuY2UsXG4gICAgICB0aGlzLl9pbkRpYWxvZyxcbiAgICApO1xuXG4gICAgdGhpcy5fd2FpdEZpcnN0TG9hZCgpO1xuXG4gICAgdGhpcy5yZW9yZGVyQ29udHJvbGxlci5pbml0V2l0aENvbmZpZyhcbiAgICAgIGNvbmZpZy5yZW9yZGVyLFxuICAgICAgdGhpcy5saXN0LmRhdGFDb250cm9sbGVyLFxuICAgICAgdGhpcy5saXN0LmFjdGlvbnMsXG4gICAgICB0aGlzLmxpc3Quc2VsZWN0aW9uLFxuICAgICk7XG5cbiAgICBpZiAodGhpcy5saXN0Q29sdW1uRGlyZWN0aXZlcykge1xuICAgICAgdGhpcy5saXN0LnRyYW5mb3JtVGVtcGxhdGVzVG9Db2x1bW5zKHRoaXMubGlzdENvbHVtbkRpcmVjdGl2ZXMpO1xuICAgIH1cbiAgICB0aGlzLl9saXN0ZW5Tb3J0aW5nQ2hhbmdlKCk7XG4gIH1cblxuICAvKipcbiAgICogRmluZCBhY3Rpb24gd2l0aCBjdXN0b21pemUgZmxhZyBhbmQgcmUtZGVjbGFyZSBjbGljayBmdW5jdGlvbiBmb3IgQ3VzdG9taXplQ29sc0RpYWxvZ1xuICAgKiBAcGFyYW0gYWN0aW9uc1xuICAgKi9cbiAgcHJpdmF0ZSBfdXBkYXRlQ3VzdG9taXplQWN0aW9uKGFjdGlvbnM6IEZzTGlzdEFjdGlvbltdKSB7XG4gICAgY29uc3QgY3VzdG9taXplQWN0aW9uID0gYWN0aW9ucz8uZmluZCgoYWN0aW9uKSA9PiBhY3Rpb24uY3VzdG9taXplKTtcblxuICAgIGlmIChjdXN0b21pemVBY3Rpb24pIHtcbiAgICAgIGNvbnN0IGFjdGlvbkNsaWNrRm4gPSBjdXN0b21pemVBY3Rpb24uY2xpY2s7XG5cbiAgICAgIGN1c3RvbWl6ZUFjdGlvbi5jbGljayA9ICgpID0+IHtcbiAgICAgICAgaWYgKGFjdGlvbkNsaWNrRm4pIHtcbiAgICAgICAgICBhY3Rpb25DbGlja0ZuKG51bGwpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5kaWFsb2cub3BlbihDdXN0b21pemVDb2xzRGlhbG9nQ29tcG9uZW50LCB7XG4gICAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgY29sdW1uczogdGhpcy5saXN0LmNvbHVtbnMuY29sdW1uc0ZvckRpYWxvZyxcbiAgICAgICAgICAgIGNoYW5nZUZuOiB0aGlzLmxpc3QuY29sdW1ucy5jaGFuZ2VGbixcbiAgICAgICAgICB9LFxuICAgICAgICB9KVxuICAgICAgICAgIC5hZnRlckNsb3NlZCgpXG4gICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICB0YWtlVW50aWwodGhpcy5saXN0Lm9uRGVzdHJveSQpLFxuICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kpLFxuICAgICAgICAgIClcbiAgICAgICAgICAuc3Vic2NyaWJlKChkYXRhKSA9PiB7XG4gICAgICAgICAgICBpZiAoZGF0YSkge1xuICAgICAgICAgICAgICB0aGlzLmxpc3QuY29sdW1ucy51cGRhdGVWaXNpYmlsaXR5Rm9yQ29scyhkYXRhKTtcblxuICAgICAgICAgICAgICB0aGlzLmNkUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pXG4gICAgICB9O1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGUgc29ydGluZyBpbiBmaWx0ZXJcbiAgICovXG4gIHByaXZhdGUgX2xpc3RlblNvcnRpbmdDaGFuZ2UoKSB7XG4gICAgdGhpcy5saXN0LnNvcnRpbmdcbiAgICAgIC5zb3J0aW5nQ2hhbmdlZCRcbiAgICAgIC5waXBlKFxuICAgICAgICB0YWtlVW50aWwodGhpcy5saXN0Lm9uRGVzdHJveSQpLFxuICAgICAgICB0YWtlVW50aWwodGhpcy5fZGVzdHJveSksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKChzb3J0KSA9PiB7XG4gICAgICAgIHRoaXMuX2ZpbHRlclJlZi51cGRhdGVTb3J0KHNvcnQpO1xuICAgICAgfSlcbiAgfVxuXG4gIHByaXZhdGUgX3N1YnNjcmliZVRvUmVtb3ZlUm93KCkge1xuICAgIHRoaXMucm93UmVtb3ZlZFxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kpKVxuICAgICAgLnN1YnNjcmliZSgocm93KSA9PiB7XG4gICAgICAgIHRoaXMubGlzdC5kYXRhQ29udHJvbGxlci5yZW1vdmVEYXRhKHJvdyk7XG4gICAgICB9KVxuICB9XG5cbiAgcHJpdmF0ZSBfc3Vic2NyaWJlVG9Hcm91cEV4cGFuZFN0YXR1c0NoYW5nZSgpIHtcbiAgICBpZiAodGhpcy5saXN0LmRhdGFDb250cm9sbGVyLmhhc0dyb3Vwcykge1xuICAgICAgdGhpcy5fZ3JvdXBFeHBhbmROb3RpZmllci5leHBhbmRTdGF0dXNDaGFuZ2UkXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95KVxuICAgICAgICApXG4gICAgICAgIC5zdWJzY3JpYmUoKHJvdykgPT4ge1xuICAgICAgICAgIHRoaXMubGlzdC5kYXRhQ29udHJvbGxlci50b2dnbGVSb3dHcm91cChyb3cpO1xuICAgICAgICB9KVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX3dhaXRGaXJzdExvYWQoKSB7XG4gICAgdGhpcy5saXN0LmxvYWRpbmckXG4gICAgICAucGlwZShcbiAgICAgICAgc2tpcCgxKSxcbiAgICAgICAgZmlsdGVyKCh2YWx1ZSkgPT4gdmFsdWUgPT09IGZhbHNlKSxcbiAgICAgICAgdGFrZSgxKSxcbiAgICAgICAgdGFrZVVudGlsKHRoaXMubGlzdC5vbkRlc3Ryb3kkKSxcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuZmlyc3RMb2FkID0gZmFsc2U7XG4gICAgICAgIHRoaXMuY2RSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgX2NvbmZpZ01lcmdlQ3VzdG9taXplcihvYmpWYWx1ZTogYW55LCBzcmNWYWx1ZTogYW55KSB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkob2JqVmFsdWUpKSB7XG4gICAgICByZXR1cm4gb2JqVmFsdWU7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfcmVzdG9yZVBlcnNpc3RhbmNlKHBlcnNpc3RDb25maWc6IEZzTGlzdFBlcnNpdGFuY2UpIHtcbiAgICBjb25zdCBuYW1lc3BhY2UgPSBnZXROb3JtYWxpemVkUGF0aCh0aGlzLl9sb2NhdGlvbik7XG4gICAgdGhpcy5fcGVyc2lzdGFuY2Uuc2V0Q29uZmlnKHBlcnNpc3RDb25maWcsIG5hbWVzcGFjZSwgdGhpcy5faW5EaWFsb2cpO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZnMtbGlzdC1jb250YWluZXJcIlxuICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICdoYXMtZmlsdGVyLWtleXdvcmQnOiBoYXNGaWx0ZXJLZXl3b3JkLFxuICAgICAgJ2hhcy1maWx0ZXJzJzogbGlzdC5maWx0ZXJDb25maWc/Lml0ZW1zLmxlbmd0aCxcbiAgICAgICdoYXMtaGVhZGluZyc6IGxpc3QuaGVhZGluZyB8fCBoZWFkaW5nVGVtcGxhdGUsXG4gICAgICAnaGFzLXN0YXR1cyc6IGhhc1N0YXR1cyxcbiAgICAgICdoYXMtY2hpcHMnOiBsaXN0LmNoaXBzLFxuICAgICAgJ2hhcy1hY3Rpb25zJzogbGlzdC5hY3Rpb25zLmhhc0FjdGlvbnMsXG4gICAgICAnZmlyc3QtbG9hZCc6IGZpcnN0TG9hZCxcbiAgICAgICdsb2FkaW5nJzogbGlzdC5sb2FkaW5nJCB8IGFzeW5jXG4gICAgfVwiPlxuICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwibGlzdENvbnRhaW5lckNvbnRlbnRcIj48L25nLXRlbXBsYXRlPlxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZSAjbGlzdENvbnRhaW5lckNvbnRlbnQ+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJsaXN0LmRhdGFDb250cm9sbGVyLnZpc2libGVSb3dzJCB8IGFzeW5jIGFzIGxpc3REYXRhXCI+XG4gICAgPGRpdiBjbGFzcz1cImZzLWxpc3QtaGVhZGVyLWNvbnRhaW5lclwiPlxuICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwiZnMtbGlzdC1oZWFkZXJcIlxuICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ25vLXdyYXAnOiByZW9yZGVyQ29udHJvbGxlci5tYW51YWxSZW9yZGVyQWN0aXZhdGVkIHx8ICFsaXN0LmZpbHRlckNvbmZpZz8uaXRlbXMubGVuZ3RoIH1cIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgKm5nSWY9XCJoYXNGaWx0ZXJLZXl3b3JkXCJcbiAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImhlYWRpbmdcIj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDxmcy1maWx0ZXJcbiAgICAgICAgICAgIGNsYXNzPVwiZnMtbGlzdC1maWx0ZXJcIlxuICAgICAgICAgICAgKm5nSWY9XCJsaXN0LmZpbHRlckNvbmZpZ1wiXG4gICAgICAgICAgICBbZmlsdGVyXT1cImxpc3QuZmlsdGVyQ29uZmlnXCJcbiAgICAgICAgICAgIFtzaG93U29ydEJ5XT1cIiFsaXN0LnN0YXR1c1wiXG4gICAgICAgICAgICBbc2hvd0ZpbHRlcklucHV0XT1cImxpc3QuZmlsdGVySW5wdXRcIlxuICAgICAgICAgICAgKHJlYWR5KT1cImZpbHRlclJlYWR5KClcIj5cbiAgICAgICAgICA8bmctdGVtcGxhdGUgZnNGaWx0ZXJTdGF0dXNCYXI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgKm5nSWY9XCIhaGFzRmlsdGVyS2V5d29yZFwiXG4gICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiaGVhZGluZ1wiPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaGFzU3RhdHVzXCI+XG4gICAgICAgICAgICAgIDxmcy1saXN0LXN0YXR1c1xuICAgICAgICAgICAgICAgIGNsYXNzPVwiZnMtbGlzdC1zdGF0dXNcIlxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ2hpZGRlbi1tb2JpbGUnOiAhbGlzdC5zdGF0dXMgfVwiXG4gICAgICAgICAgICAgICAgW3Jvd3NdPVwibGlzdERhdGFcIlxuICAgICAgICAgICAgICAgIFtzb3J0aW5nXT1cImxpc3Quc29ydGluZ1wiXG4gICAgICAgICAgICAgICAgW3BhZ2luZ109XCJsaXN0LnBhZ2luZ1wiXG4gICAgICAgICAgICAgICAgW2ZpcnN0TG9hZF09XCJmaXJzdExvYWRcIlxuICAgICAgICAgICAgICAgIFtzY3JvbGxhYmxlXT1cImxpc3Quc2Nyb2xsYWJsZSB8fCBsaXN0LnBhZ2luZy5sb2FkTW9yZUVuYWJsZWRcIj5cbiAgICAgICAgICAgICAgPC9mcy1saXN0LXN0YXR1cz5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvZnMtZmlsdGVyPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbZnMtbGlzdC1jb250ZW50XVwiPjwvbmctY29udGVudD5cblxuICAgIDwhLS0gVGFibGUgaW1wbGVtZW50YXRpb24gLS0+XG4gICAgPGRpdiBjbGFzcz1cImZzLWxpc3QtdGFibGUtY29udGFpbmVyXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWZpcnN0TG9hZCAmJiBsaXN0RGF0YS5sZW5ndGggPiAwICYmICFsaXN0LmVtcHR5U3RhdGVFbmFibGVkXCI+XG4gICAgICAgIDx0YWJsZSBjbGFzcz1cImZzLWxpc3QtdGFibGVcIiByb2xlPVwiZ3JpZFwiIFtmc0xpc3RDb250ZW50SW5pdF09XCJsaXN0LmFmdGVyQ29udGVudEluaXRcIj5cbiAgICAgICAgICA8dGhlYWRcbiAgICAgICAgICAgIGZzLWxpc3QtaGVhZFxuICAgICAgICAgICAgY2xhc3M9XCJmcy1saXN0LWhlYWRcIlxuICAgICAgICAgICAgcm9sZT1cInJvd2dyb3VwXCJcbiAgICAgICAgICAgICpuZ0lmPVwibGlzdC5jb2x1bW5zLmhhc0hlYWRlclwiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJsaXN0LmNvbHVtbnMudGhlYWRDbGFzc1wiXG4gICAgICAgICAgICBbY29sdW1uc109XCJsaXN0LmNvbHVtbnMudmlzaWJsZUNvbHVtbnMkIHwgYXN5bmNcIlxuICAgICAgICAgICAgW3NvcnRpbmddPVwibGlzdC5zb3J0aW5nXCJcbiAgICAgICAgICAgIFtzZWxlY3Rpb25dPVwibGlzdC5zZWxlY3Rpb25cIlxuICAgICAgICAgICAgW2hhc1Jvd0FjdGlvbnNdPVwibGlzdC5oYXNSb3dBY3Rpb25zXCJcbiAgICAgICAgICAgIFthY3RpdmVGaWx0ZXJzQ291bnRdPVwibGlzdC5hY3RpdmVGaWx0ZXJzQ291bnQkIHwgYXN5bmNcIlxuICAgICAgICAgICAgW3Jlb3JkZXJFbmFibGVkXT1cInJlb3JkZXJDb250cm9sbGVyLmVuYWJsZWQkIHwgYXN5bmNcIlxuICAgICAgICAgICAgW3Jlb3JkZXJQb3NpdGlvbl09XCJyZW9yZGVyQ29udHJvbGxlci5wb3NpdGlvbiQgfCBhc3luY1wiXG4gICAgICAgICAgICBbcmVvcmRlclN0cmF0ZWd5XT1cInJlb3JkZXJDb250cm9sbGVyLnN0cmF0ZWd5JCB8IGFzeW5jXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgPC90aGVhZD5cblxuICAgICAgICAgIDx0Ym9keVxuICAgICAgICAgICAgZnMtbGlzdC1ib2R5XG4gICAgICAgICAgICBmc0xpc3REcmFnZ2FibGVMaXN0XG4gICAgICAgICAgICBjbGFzcz1cImZzLWxpc3QtYm9keVwiXG4gICAgICAgICAgICByb2xlPVwicm93Z3JvdXBcIlxuICAgICAgICAgICAgW2NsYXNzLmRpc2FibGVkXT1cIiEhKHJlb3JkZXJDb250cm9sbGVyLnJlb3JkZXJEaXNhYmxlZCQgfCBhc3luYylcIlxuICAgICAgICAgICAgW3Jvd3NdPVwibGlzdERhdGFcIlxuICAgICAgICAgICAgW3Jvd0FjdGlvbnNSYXddPVwibGlzdC5yb3dBY3Rpb25zUmF3XCJcbiAgICAgICAgICAgIFtncm91cEFjdGlvbnNSYXddPVwibGlzdC5ncm91cEFjdGlvbnNSYXdcIlxuICAgICAgICAgICAgW2hhc1Jvd0FjdGlvbnNdPVwibGlzdC5oYXNSb3dBY3Rpb25zXCJcbiAgICAgICAgICAgIFtyb3dFdmVudHNdPVwibGlzdC5yb3dFdmVudHNcIlxuICAgICAgICAgICAgW3Jvd0NsYXNzXT1cImxpc3Qucm93Q2xhc3NcIlxuICAgICAgICAgICAgW2NvbHVtbnNdPVwibGlzdC5jb2x1bW5zLnZpc2libGVDb2x1bW5zJCB8IGFzeW5jXCJcbiAgICAgICAgICAgIFtyZXN0b3JlTW9kZV09XCJsaXN0LnJlc3RvcmVNb2RlXCJcbiAgICAgICAgICAgIFtzZWxlY3Rpb25dPVwibGlzdC5zZWxlY3Rpb25cIlxuICAgICAgICAgICAgW3Jvd1JlbW92ZWRdPVwicm93UmVtb3ZlZFwiXG4gICAgICAgICAgICBbYWN0aXZlRmlsdGVyc0NvdW50XT1cImxpc3QuYWN0aXZlRmlsdGVyc0NvdW50JCB8IGFzeW5jXCJcbiAgICAgICAgICAgIFtyZW9yZGVyRW5hYmxlZF09XCJyZW9yZGVyQ29udHJvbGxlci5lbmFibGVkJCB8IGFzeW5jXCJcbiAgICAgICAgICAgIFtyZW9yZGVyUG9zaXRpb25dPVwicmVvcmRlckNvbnRyb2xsZXIucG9zaXRpb24kIHwgYXN5bmNcIlxuICAgICAgICAgICAgW3Jlb3JkZXJTdHJhdGVneV09XCJyZW9yZGVyQ29udHJvbGxlci5zdHJhdGVneSQgfCBhc3luY1wiXG4gICAgICAgICAgICBbcmVvcmRlck11bHRpcGxlXT1cInJlb3JkZXJDb250cm9sbGVyLm11bHRpcGxlXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgPC90Ym9keT5cblxuICAgICAgICAgIDx0Zm9vdFxuICAgICAgICAgICAgZnMtbGlzdC1mb290ZXJcbiAgICAgICAgICAgIGNsYXNzPVwiZnMtbGlzdC1mb290ZXJcIlxuICAgICAgICAgICAgKm5nSWY9XCJsaXN0LmNvbHVtbnMuaGFzRm9vdGVyXCJcbiAgICAgICAgICAgIFtjb2x1bW5zXT1cImxpc3QuY29sdW1ucy52aXNpYmxlQ29sdW1ucyQgfCBhc3luY1wiXG4gICAgICAgICAgICBbc2VsZWN0aW9uXT1cImxpc3Quc2VsZWN0aW9uXCJcbiAgICAgICAgICAgIFtoYXNSb3dBY3Rpb25zXT1cImxpc3QuaGFzUm93QWN0aW9uc1wiXG4gICAgICAgICAgICBbYWN0aXZlRmlsdGVyc0NvdW50XT1cImxpc3QuYWN0aXZlRmlsdGVyc0NvdW50JCB8IGFzeW5jXCJcbiAgICAgICAgICAgIFtyZW9yZGVyRW5hYmxlZF09XCJyZW9yZGVyQ29udHJvbGxlci5lbmFibGVkJCB8IGFzeW5jXCJcbiAgICAgICAgICAgIFtyZW9yZGVyUG9zaXRpb25dPVwicmVvcmRlckNvbnRyb2xsZXIucG9zaXRpb24kIHwgYXN5bmNcIlxuICAgICAgICAgICAgW3Jlb3JkZXJTdHJhdGVneV09XCJyZW9yZGVyQ29udHJvbGxlci5zdHJhdGVneSQgfCBhc3luY1wiXG4gICAgICAgICAgPlxuICAgICAgICAgIDwvdGZvb3Q+XG4gICAgICAgIDwvdGFibGU+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDxmcy1saXN0LWxvYWRlclxuICAgICAgICAqbmdJZj1cImZpcnN0TG9hZFwiXG4gICAgICAgIFtjb2x1bW5zXT1cImxpc3QuY29sdW1ucy5jb2x1bW5zXCJcbiAgICAgICAgW2xvYWRlckxpbmVzXT1cImxvYWRlckxpbmVzXCI+XG4gICAgICA8L2ZzLWxpc3QtbG9hZGVyPlxuICAgIDwvZGl2PlxuXG4gICAgPGZzLWxpc3QtcGFnaW5hdGlvblxuICAgICAgKm5nSWY9XCJwYWdpbmF0b3JWaXNpYmxlXCJcbiAgICAgIGNsYXNzPVwiZnMtbGlzdC1wYWdpbmF0aW9uXCJcbiAgICAgIFtyb3dzXT1cImxpc3REYXRhXCJcbiAgICAgIFtwYWdpbmF0aW9uXT1cImxpc3QucGFnaW5nXCI+XG4gICAgPC9mcy1saXN0LXBhZ2luYXRpb24+XG5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWZpcnN0TG9hZFwiPlxuICAgICAgPGRpdlxuICAgICAgICAgICpuZ0lmPVwibGlzdERhdGEubGVuZ3RoID09PSAwXCJcbiAgICAgICAgICBjbGFzcz1cImZzLWxpc3Qtbm8tcmVzdWx0cy1jb250YWluZXJcIj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgICAgKm5nSWY9XCJsaXN0Lm5vUmVzdWx0cz8ubWVzc2FnZSAmJiAhbGlzdC5lbXB0eVN0YXRlRW5hYmxlZFwiXG4gICAgICAgICAgICBjbGFzcz1cImZzLWxpc3Qtbm8tcmVzdWx0c1wiPlxuICAgICAgICAgIHt7IGxpc3Qubm9SZXN1bHRzPy5tZXNzYWdlIH19XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibGlzdC5lbXB0eVN0YXRlRW5hYmxlZFwiPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJsaXN0LmVtcHR5U3RhdGVUZW1wbGF0ZVwiPjwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvbmctY29udGFpbmVyPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNoZWFkaW5nPlxuICA8ZGl2IGNsYXNzPVwiaGVhZGluZy1jb250YWluZXJcIiAqbmdJZj1cImhlYWRpbmdDb250YWluZXJUZW1wbGF0ZSB8fCBsaXN0LmhlYWRpbmcgfHwgbGlzdC5zdWJoZWFkaW5nIHx8IGhlYWRpbmdUZW1wbGF0ZVwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJoZWFkaW5nQ29udGFpbmVyVGVtcGxhdGU7IGVsc2UgaGVhZGluZ0NvbnRhaW5lclwiPlxuICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJoZWFkaW5nQ29udGFpbmVyVGVtcGxhdGVcIlxuICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyB0ZW1wbGF0ZTogaGVhZGluZ0NvbnRhaW5lciB9XCI+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctdGVtcGxhdGUgI2hlYWRpbmdDb250YWluZXI+XG4gICAgICA8aDIgY2xhc3M9XCJoZWFkaW5nXCIgKm5nSWY9XCJsaXN0LmhlYWRpbmcgfHwgaGVhZGluZ1RlbXBsYXRlXCI+XG4gICAgICAgIHt7bGlzdC5oZWFkaW5nfX1cbiAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJoZWFkaW5nVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvaDI+XG4gICAgICA8ZGl2IGNsYXNzPVwic21hbGwgc3ViaGVhZGluZ1wiICpuZ0lmPVwibGlzdC5zdWJoZWFkaW5nIHx8IHN1YmhlYWRpbmdUZW1wbGF0ZVwiPlxuICAgICAgICB7e2xpc3Quc3ViaGVhZGluZ319XG4gICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwic3ViaGVhZGluZ1RlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=