@acorex/data-grid 4.2.0 → 4.2.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (69) hide show
  1. package/acorex-data-grid.d.ts +5 -0
  2. package/esm2020/acorex-data-grid.mjs +5 -0
  3. package/esm2020/lib/data-grid/columns/check-column.component.mjs +117 -0
  4. package/esm2020/lib/data-grid/columns/column.component.mjs +164 -0
  5. package/esm2020/lib/data-grid/columns/command-column.component.mjs +115 -0
  6. package/esm2020/lib/data-grid/columns/date-column.component.mjs +111 -0
  7. package/esm2020/lib/data-grid/columns/row-number-column.component.mjs +37 -0
  8. package/esm2020/lib/data-grid/columns/selection-column.component.mjs +42 -0
  9. package/esm2020/lib/data-grid/columns/text-column.component.mjs +89 -0
  10. package/esm2020/lib/data-grid/datagrid.component.mjs +667 -0
  11. package/esm2020/lib/data-grid/datagrid.events.mjs +2 -0
  12. package/esm2020/lib/data-grid/datagrid.module.mjs +145 -0
  13. package/esm2020/lib/data-grid/filters/filter.component.mjs +39 -0
  14. package/esm2020/lib/data-grid/templates/cell-template.component.mjs +53 -0
  15. package/esm2020/lib/data-grid/templates/detail-template.component.mjs +46 -0
  16. package/esm2020/lib/data-grid/templates/row-template.component.mjs +43 -0
  17. package/esm2020/lib/data-lov/data-lov-popup/data-lov-popup.component.mjs +113 -0
  18. package/esm2020/lib/data-lov/data-lov.component.mjs +161 -0
  19. package/esm2020/lib/data-lov/data-lov.module.mjs +23 -0
  20. package/esm2020/public-api.mjs +18 -0
  21. package/fesm2015/acorex-data-grid.mjs +1876 -0
  22. package/fesm2015/acorex-data-grid.mjs.map +1 -0
  23. package/fesm2020/acorex-data-grid.mjs +1876 -0
  24. package/fesm2020/acorex-data-grid.mjs.map +1 -0
  25. package/lib/data-grid/columns/check-column.component.d.ts +37 -0
  26. package/lib/data-grid/columns/column.component.d.ts +32 -0
  27. package/lib/data-grid/columns/command-column.component.d.ts +27 -0
  28. package/lib/data-grid/columns/date-column.component.d.ts +32 -0
  29. package/lib/data-grid/columns/row-number-column.component.d.ts +10 -0
  30. package/lib/data-grid/columns/selection-column.component.d.ts +12 -0
  31. package/lib/data-grid/columns/text-column.component.d.ts +25 -0
  32. package/lib/data-grid/datagrid.component.d.ts +142 -0
  33. package/{src/lib/data-grid/datagrid.events.ts → lib/data-grid/datagrid.events.d.ts} +1 -4
  34. package/lib/data-grid/datagrid.module.d.ts +23 -0
  35. package/lib/data-grid/filters/filter.component.d.ts +5 -0
  36. package/lib/data-grid/templates/cell-template.component.d.ts +22 -0
  37. package/lib/data-grid/templates/detail-template.component.d.ts +21 -0
  38. package/lib/data-grid/templates/row-template.component.d.ts +20 -0
  39. package/lib/data-lov/data-lov-popup/data-lov-popup.component.d.ts +32 -0
  40. package/lib/data-lov/data-lov.component.d.ts +42 -0
  41. package/lib/data-lov/data-lov.module.d.ts +12 -0
  42. package/package.json +37 -17
  43. package/{src/public-api.ts → public-api.d.ts} +0 -3
  44. package/karma.conf.js +0 -32
  45. package/ng-package.json +0 -12
  46. package/src/lib/data-grid/columns/check-column.component.ts +0 -113
  47. package/src/lib/data-grid/columns/column.component.ts +0 -182
  48. package/src/lib/data-grid/columns/command-column.component.ts +0 -101
  49. package/src/lib/data-grid/columns/date-column.component.ts +0 -118
  50. package/src/lib/data-grid/columns/row-number-column.component.ts +0 -36
  51. package/src/lib/data-grid/columns/selection-column.component.ts +0 -39
  52. package/src/lib/data-grid/columns/text-column.component.ts +0 -92
  53. package/src/lib/data-grid/datagrid.component.html +0 -27
  54. package/src/lib/data-grid/datagrid.component.ts +0 -769
  55. package/src/lib/data-grid/datagrid.module.ts +0 -81
  56. package/src/lib/data-grid/filters/filter.component.ts +0 -21
  57. package/src/lib/data-grid/templates/cell-template.component.ts +0 -47
  58. package/src/lib/data-grid/templates/detail-template.component.ts +0 -43
  59. package/src/lib/data-grid/templates/row-template.component.ts +0 -41
  60. package/src/lib/data-lov/data-lov-popup/data-lov-popup.component.html +0 -16
  61. package/src/lib/data-lov/data-lov-popup/data-lov-popup.component.ts +0 -130
  62. package/src/lib/data-lov/data-lov.component.html +0 -61
  63. package/src/lib/data-lov/data-lov.component.ts +0 -181
  64. package/src/lib/data-lov/data-lov.module.ts +0 -16
  65. package/src/test.ts +0 -28
  66. package/tsconfig.lib.json +0 -23
  67. package/tsconfig.lib.prod.json +0 -6
  68. package/tsconfig.spec.json +0 -17
  69. package/tslint.json +0 -17
@@ -0,0 +1,42 @@
1
+ import { AXGridDataColumn } from './column.component';
2
+ import { ChangeDetectionStrategy, Component, Input } from '@angular/core';
3
+ import * as i0 from "@angular/core";
4
+ export class AXGridSelectionColumn extends AXGridDataColumn {
5
+ constructor() {
6
+ super();
7
+ this.pinned = 'start';
8
+ this.width = 40;
9
+ }
10
+ ngOnInit() { }
11
+ render() {
12
+ const col = super.render();
13
+ col.checkboxSelection = this.condition ? this.condition : true;
14
+ // col.headerCheckboxSelection = true;
15
+ col.pinned = this.pinned === 'start' ? 'right' : 'left';
16
+ col.filter = false;
17
+ col.resizable = true;
18
+ col.sortable = false;
19
+ col.minWidth = 5;
20
+ col.width = this.width;
21
+ col.floatingFilter = false;
22
+ return col;
23
+ }
24
+ }
25
+ AXGridSelectionColumn.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: AXGridSelectionColumn, deps: [], target: i0.ɵɵFactoryTarget.Component });
26
+ AXGridSelectionColumn.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: AXGridSelectionColumn, selector: "ax-selection-column", inputs: { condition: "condition", pinned: "pinned", width: "width" }, providers: [{ provide: AXGridDataColumn, useExisting: AXGridSelectionColumn }], usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
27
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: AXGridSelectionColumn, decorators: [{
28
+ type: Component,
29
+ args: [{
30
+ selector: 'ax-selection-column',
31
+ template: '',
32
+ providers: [{ provide: AXGridDataColumn, useExisting: AXGridSelectionColumn }],
33
+ changeDetection: ChangeDetectionStrategy.OnPush
34
+ }]
35
+ }], ctorParameters: function () { return []; }, propDecorators: { condition: [{
36
+ type: Input
37
+ }], pinned: [{
38
+ type: Input
39
+ }], width: [{
40
+ type: Input
41
+ }] } });
42
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0aW9uLWNvbHVtbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hY29yZXgvZGF0YS1ncmlkL3NyYy9saWIvZGF0YS1ncmlkL2NvbHVtbnMvc2VsZWN0aW9uLWNvbHVtbi5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDdEQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBUTFFLE1BQU0sT0FBTyxxQkFBc0IsU0FBUSxnQkFBZ0I7SUFDekQ7UUFDRSxLQUFLLEVBQUUsQ0FBQztRQVNWLFdBQU0sR0FBb0IsT0FBTyxDQUFDO1FBR2xDLFVBQUssR0FBVyxFQUFFLENBQUM7SUFYbkIsQ0FBQztJQUVELFFBQVEsS0FBVSxDQUFDO0lBV25CLE1BQU07UUFDSixNQUFNLEdBQUcsR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDM0IsR0FBRyxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUMvRCx1Q0FBdUM7UUFDdkMsR0FBRyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxLQUFLLE9BQU8sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUM7UUFDeEQsR0FBRyxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7UUFDbkIsR0FBRyxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7UUFDckIsR0FBRyxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7UUFDckIsR0FBRyxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUM7UUFDakIsR0FBRyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO1FBQ3ZCLEdBQUcsQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFDO1FBQzNCLE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQzs7bUhBNUJVLHFCQUFxQjt1R0FBckIscUJBQXFCLG9IQUhyQixDQUFDLEVBQUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFdBQVcsRUFBRSxxQkFBcUIsRUFBRSxDQUFDLGlEQURwRSxFQUFFOzRGQUlELHFCQUFxQjtrQkFOakMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUscUJBQXFCO29CQUMvQixRQUFRLEVBQUUsRUFBRTtvQkFDWixTQUFTLEVBQUUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxXQUFXLHVCQUF1QixFQUFFLENBQUM7b0JBQzlFLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO2lCQUNoRDswRUFTQyxTQUFTO3NCQURSLEtBQUs7Z0JBSU4sTUFBTTtzQkFETCxLQUFLO2dCQUlOLEtBQUs7c0JBREosS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYR3JpZERhdGFDb2x1bW4gfSBmcm9tICcuL2NvbHVtbi5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdheC1zZWxlY3Rpb24tY29sdW1uJyxcclxuICB0ZW1wbGF0ZTogJycsXHJcbiAgcHJvdmlkZXJzOiBbeyBwcm92aWRlOiBBWEdyaWREYXRhQ29sdW1uLCB1c2VFeGlzdGluZzogQVhHcmlkU2VsZWN0aW9uQ29sdW1uIH1dLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBWEdyaWRTZWxlY3Rpb25Db2x1bW4gZXh0ZW5kcyBBWEdyaWREYXRhQ29sdW1uIHtcclxuICBjb25zdHJ1Y3RvcigpIHtcclxuICAgIHN1cGVyKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHt9XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgY29uZGl0aW9uOiAocGFyYW1zKSA9PiBib29sZWFuO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHBpbm5lZDogJ3N0YXJ0JyB8ICdlbmQnID0gJ3N0YXJ0JztcclxuXHJcbiAgQElucHV0KClcclxuICB3aWR0aDogbnVtYmVyID0gNDA7XHJcblxyXG4gIHJlbmRlcigpIHtcclxuICAgIGNvbnN0IGNvbCA9IHN1cGVyLnJlbmRlcigpO1xyXG4gICAgY29sLmNoZWNrYm94U2VsZWN0aW9uID0gdGhpcy5jb25kaXRpb24gPyB0aGlzLmNvbmRpdGlvbiA6IHRydWU7XHJcbiAgICAvLyAgY29sLmhlYWRlckNoZWNrYm94U2VsZWN0aW9uID0gdHJ1ZTtcclxuICAgIGNvbC5waW5uZWQgPSB0aGlzLnBpbm5lZCA9PT0gJ3N0YXJ0JyA/ICdyaWdodCcgOiAnbGVmdCc7XHJcbiAgICBjb2wuZmlsdGVyID0gZmFsc2U7XHJcbiAgICBjb2wucmVzaXphYmxlID0gdHJ1ZTtcclxuICAgIGNvbC5zb3J0YWJsZSA9IGZhbHNlO1xyXG4gICAgY29sLm1pbldpZHRoID0gNTtcclxuICAgIGNvbC53aWR0aCA9IHRoaXMud2lkdGg7XHJcbiAgICBjb2wuZmxvYXRpbmdGaWx0ZXIgPSBmYWxzZTtcclxuICAgIHJldHVybiBjb2w7XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -0,0 +1,89 @@
1
+ import { AXGridDataColumn } from './column.component';
2
+ import { ChangeDetectionStrategy, Component, ViewChild } from '@angular/core';
3
+ import { AXTextBoxComponent } from '@acorex/components';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "../filters/filter.component";
6
+ import * as i2 from "@acorex/components";
7
+ export class AXGridTextColumn extends AXGridDataColumn {
8
+ constructor() {
9
+ super();
10
+ }
11
+ render() {
12
+ const col = super.render();
13
+ // if (this.allowFiltering) {
14
+ // col.filterFramework = TextFilterRenderer;
15
+ // }
16
+ col.filter = 'agTextColumnFilter';
17
+ return col;
18
+ }
19
+ }
20
+ AXGridTextColumn.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: AXGridTextColumn, deps: [], target: i0.ɵɵFactoryTarget.Component });
21
+ AXGridTextColumn.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: AXGridTextColumn, selector: "ax-text-column", providers: [{ provide: AXGridDataColumn, useExisting: AXGridTextColumn }], usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
22
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: AXGridTextColumn, decorators: [{
23
+ type: Component,
24
+ args: [{
25
+ selector: 'ax-text-column',
26
+ template: '',
27
+ providers: [{ provide: AXGridDataColumn, useExisting: AXGridTextColumn }],
28
+ changeDetection: ChangeDetectionStrategy.OnPush
29
+ }]
30
+ }], ctorParameters: function () { return []; } });
31
+ export class TextFilterRenderer {
32
+ constructor() {
33
+ this.value = null;
34
+ }
35
+ agInit(params) {
36
+ this.params = params;
37
+ this.valueGetter = params.valueGetter;
38
+ }
39
+ isFilterActive() {
40
+ return this.value !== null && this.value !== undefined;
41
+ }
42
+ doesFilterPass(params) {
43
+ return this.value === this.valueGetter(params.node);
44
+ }
45
+ getModel() {
46
+ return { value: this.value };
47
+ }
48
+ setModel(model) {
49
+ ;
50
+ this.onChange(model ? model.value : null);
51
+ }
52
+ ngAfterViewInit(params) {
53
+ window.setTimeout(() => {
54
+ this.input.focus();
55
+ });
56
+ }
57
+ onChange(newValue) {
58
+ if (this.value !== newValue) {
59
+ this.value = newValue;
60
+ if (this.value === '') {
61
+ this.value = null;
62
+ }
63
+ this.params.filterChangedCallback();
64
+ }
65
+ }
66
+ }
67
+ TextFilterRenderer.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: TextFilterRenderer, deps: [], target: i0.ɵɵFactoryTarget.Component });
68
+ TextFilterRenderer.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: TextFilterRenderer, selector: "ng-component", viewQueries: [{ propertyName: "input", first: true, predicate: AXTextBoxComponent, descendants: true, static: true }], ngImport: i0, template: `
69
+ <ax-data-grid-filter>
70
+ <ax-text-box label='Filter' allowClear='true' (textChange)='onChange($event)'>
71
+ </ax-text-box>
72
+ </ax-data-grid-filter>
73
+ `, isInline: true, components: [{ type: i1.AXDataGridFilterComponent, selector: "ax-data-grid-filter" }, { type: i2.AXTextBoxComponent, selector: "ax-text-box", inputs: ["mask", "type", "showMask", "maxLength", "maskGuid", "maskPlaceholder", "maskKeepCharPositions"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
74
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: TextFilterRenderer, decorators: [{
75
+ type: Component,
76
+ args: [{
77
+ template: `
78
+ <ax-data-grid-filter>
79
+ <ax-text-box label='Filter' allowClear='true' (textChange)='onChange($event)'>
80
+ </ax-text-box>
81
+ </ax-data-grid-filter>
82
+ `,
83
+ changeDetection: ChangeDetectionStrategy.OnPush
84
+ }]
85
+ }], propDecorators: { input: [{
86
+ type: ViewChild,
87
+ args: [AXTextBoxComponent, { static: true }]
88
+ }] } });
89
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC1jb2x1bW4uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYWNvcmV4L2RhdGEtZ3JpZC9zcmMvbGliL2RhdGEtZ3JpZC9jb2x1bW5zL3RleHQtY29sdW1uLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN0RCxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFFVCxTQUFTLEVBQ1YsTUFBTSxlQUFlLENBQUM7QUFRdkIsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7Ozs7QUFTeEQsTUFBTSxPQUFPLGdCQUFpQixTQUFRLGdCQUFnQjtJQUNwRDtRQUNFLEtBQUssRUFBRSxDQUFDO0lBQ1YsQ0FBQztJQUVELE1BQU07UUFDSixNQUFNLEdBQUcsR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDM0IsNkJBQTZCO1FBQzdCLDhDQUE4QztRQUM5QyxJQUFJO1FBQ0osR0FBRyxDQUFDLE1BQU0sR0FBRyxvQkFBb0IsQ0FBQztRQUNsQyxPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUM7OzhHQVpVLGdCQUFnQjtrR0FBaEIsZ0JBQWdCLHlDQUhoQixDQUFDLEVBQUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFdBQVcsRUFBRSxnQkFBZ0IsRUFBRSxDQUFDLGlEQUQvRCxFQUFFOzRGQUlELGdCQUFnQjtrQkFONUIsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsZ0JBQWdCO29CQUMxQixRQUFRLEVBQUUsRUFBRTtvQkFDWixTQUFTLEVBQUUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxXQUFXLGtCQUFrQixFQUFFLENBQUM7b0JBQ3pFLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO2lCQUNoRDs7QUF5QkQsTUFBTSxPQUFPLGtCQUFrQjtJQVQvQjtRQVVTLFVBQUssR0FBWSxJQUFJLENBQUM7S0EyQzlCO0lBckNDLE1BQU0sQ0FBQyxNQUFxQjtRQUMxQixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUNyQixJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUM7SUFDeEMsQ0FBQztJQUVELGNBQWM7UUFDWixPQUFPLElBQUksQ0FBQyxLQUFLLEtBQUssSUFBSSxJQUFJLElBQUksQ0FBQyxLQUFLLEtBQUssU0FBUyxDQUFDO0lBQ3pELENBQUM7SUFFRCxjQUFjLENBQUMsTUFBNkI7UUFDMUMsT0FBTyxJQUFJLENBQUMsS0FBSyxLQUFLLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFFRCxRQUFRO1FBQ04sT0FBTyxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDL0IsQ0FBQztJQUVELFFBQVEsQ0FBQyxLQUFVO1FBQ2pCLENBQUM7UUFDRCxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUVELGVBQWUsQ0FBQyxNQUErQjtRQUM3QyxNQUFNLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNyQixJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ3JCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELFFBQVEsQ0FBQyxRQUFRO1FBQ2YsSUFBSSxJQUFJLENBQUMsS0FBSyxLQUFLLFFBQVEsRUFBRTtZQUMzQixJQUFJLENBQUMsS0FBSyxHQUFHLFFBQVEsQ0FBQztZQUN0QixJQUFJLElBQUksQ0FBQyxLQUFLLEtBQUssRUFBRSxFQUFFO2dCQUNyQixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQzthQUNuQjtZQUNELElBQUksQ0FBQyxNQUFNLENBQUMscUJBQXFCLEVBQUUsQ0FBQztTQUNyQztJQUNILENBQUM7O2dIQTNDVSxrQkFBa0I7b0dBQWxCLGtCQUFrQiwyRkFJbEIsa0JBQWtCLDhEQVpuQjs7Ozs7R0FLVDs0RkFHVSxrQkFBa0I7a0JBVDlCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFOzs7OztHQUtUO29CQUNELGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO2lCQUNoRDs4QkFNUyxLQUFLO3NCQURaLFNBQVM7dUJBQUMsa0JBQWtCLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhHcmlkRGF0YUNvbHVtbiB9IGZyb20gJy4vY29sdW1uLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7XHJcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXHJcbiAgQ29tcG9uZW50LFxyXG4gIFZpZXdDb250YWluZXJSZWYsXHJcbiAgVmlld0NoaWxkXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7XHJcbiAgSUZpbHRlclBhcmFtcyxcclxuICBSb3dOb2RlLFxyXG4gIElEb2VzRmlsdGVyUGFzc1BhcmFtcyxcclxuICBJQWZ0ZXJHdWlBdHRhY2hlZFBhcmFtc1xyXG59IGZyb20gJ2FnLWdyaWQtY29tbXVuaXR5JztcclxuaW1wb3J0IHsgSUZpbHRlckFuZ3VsYXJDb21wIH0gZnJvbSAnYWctZ3JpZC1hbmd1bGFyJztcclxuaW1wb3J0IHsgQVhUZXh0Qm94Q29tcG9uZW50IH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzJztcclxuXHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2F4LXRleHQtY29sdW1uJyxcclxuICB0ZW1wbGF0ZTogJycsXHJcbiAgcHJvdmlkZXJzOiBbeyBwcm92aWRlOiBBWEdyaWREYXRhQ29sdW1uLCB1c2VFeGlzdGluZzogQVhHcmlkVGV4dENvbHVtbiB9XSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQVhHcmlkVGV4dENvbHVtbiBleHRlbmRzIEFYR3JpZERhdGFDb2x1bW4ge1xyXG4gIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgc3VwZXIoKTtcclxuICB9XHJcblxyXG4gIHJlbmRlcigpIHtcclxuICAgIGNvbnN0IGNvbCA9IHN1cGVyLnJlbmRlcigpO1xyXG4gICAgLy8gaWYgKHRoaXMuYWxsb3dGaWx0ZXJpbmcpIHtcclxuICAgIC8vICAgY29sLmZpbHRlckZyYW1ld29yayA9IFRleHRGaWx0ZXJSZW5kZXJlcjtcclxuICAgIC8vIH1cclxuICAgIGNvbC5maWx0ZXIgPSAnYWdUZXh0Q29sdW1uRmlsdGVyJztcclxuICAgIHJldHVybiBjb2w7XHJcbiAgfVxyXG59XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICB0ZW1wbGF0ZTogYFxyXG4gICAgPGF4LWRhdGEtZ3JpZC1maWx0ZXI+XHJcbiAgICAgIDxheC10ZXh0LWJveCBsYWJlbD0nRmlsdGVyJyBhbGxvd0NsZWFyPSd0cnVlJyAodGV4dENoYW5nZSk9J29uQ2hhbmdlKCRldmVudCknPlxyXG4gICAgICA8L2F4LXRleHQtYm94PlxyXG4gICAgPC9heC1kYXRhLWdyaWQtZmlsdGVyPlxyXG4gIGAsXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcclxufSlcclxuZXhwb3J0IGNsYXNzIFRleHRGaWx0ZXJSZW5kZXJlciBpbXBsZW1lbnRzIElGaWx0ZXJBbmd1bGFyQ29tcCB7XHJcbiAgcHVibGljIHZhbHVlPzogc3RyaW5nID0gbnVsbDtcclxuICBwcml2YXRlIHBhcmFtczogSUZpbHRlclBhcmFtcztcclxuICBwcml2YXRlIHZhbHVlR2V0dGVyOiAocm93Tm9kZTogUm93Tm9kZSkgPT4gYW55O1xyXG4gIEBWaWV3Q2hpbGQoQVhUZXh0Qm94Q29tcG9uZW50LCB7IHN0YXRpYzogdHJ1ZSB9KVxyXG4gIHByaXZhdGUgaW5wdXQ6IEFYVGV4dEJveENvbXBvbmVudDtcclxuXHJcbiAgYWdJbml0KHBhcmFtczogSUZpbHRlclBhcmFtcyk6IHZvaWQge1xyXG4gICAgdGhpcy5wYXJhbXMgPSBwYXJhbXM7XHJcbiAgICB0aGlzLnZhbHVlR2V0dGVyID0gcGFyYW1zLnZhbHVlR2V0dGVyO1xyXG4gIH1cclxuXHJcbiAgaXNGaWx0ZXJBY3RpdmUoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy52YWx1ZSAhPT0gbnVsbCAmJiB0aGlzLnZhbHVlICE9PSB1bmRlZmluZWQ7XHJcbiAgfVxyXG5cclxuICBkb2VzRmlsdGVyUGFzcyhwYXJhbXM6IElEb2VzRmlsdGVyUGFzc1BhcmFtcyk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMudmFsdWUgPT09IHRoaXMudmFsdWVHZXR0ZXIocGFyYW1zLm5vZGUpO1xyXG4gIH1cclxuXHJcbiAgZ2V0TW9kZWwoKTogYW55IHtcclxuICAgIHJldHVybiB7IHZhbHVlOiB0aGlzLnZhbHVlIH07XHJcbiAgfVxyXG5cclxuICBzZXRNb2RlbChtb2RlbDogYW55KTogdm9pZCB7XHJcbiAgICA7XHJcbiAgICB0aGlzLm9uQ2hhbmdlKG1vZGVsID8gbW9kZWwudmFsdWUgOiBudWxsKTtcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdChwYXJhbXM6IElBZnRlckd1aUF0dGFjaGVkUGFyYW1zKTogdm9pZCB7XHJcbiAgICB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIHRoaXMuaW5wdXQuZm9jdXMoKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgb25DaGFuZ2UobmV3VmFsdWUpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLnZhbHVlICE9PSBuZXdWYWx1ZSkge1xyXG4gICAgICB0aGlzLnZhbHVlID0gbmV3VmFsdWU7XHJcbiAgICAgIGlmICh0aGlzLnZhbHVlID09PSAnJykge1xyXG4gICAgICAgIHRoaXMudmFsdWUgPSBudWxsO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMucGFyYW1zLmZpbHRlckNoYW5nZWRDYWxsYmFjaygpO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0=