@annalib/anna-core 22.3.2 → 22.3.5

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 (107) hide show
  1. package/{esm2020 → esm2022}/annalib-anna-core.mjs +4 -4
  2. package/{esm2020 → esm2022}/lib/anna-core-shared-lib/components/anna-buyer-approval-icon-template/anna-buyer-approval-icon-template.component.mjs +15 -15
  3. package/{esm2020 → esm2022}/lib/anna-core-shared-lib/components/anna-deleted-order-icon-template/anna-deleted-order-icon-template.component.mjs +14 -14
  4. package/{esm2020 → esm2022}/lib/anna-core-shared-lib/components/anna-est-icon-template/anna-est-icon-template.component.mjs +11 -11
  5. package/{esm2020 → esm2022}/lib/anna-core-shared-lib/components/anna-icon-column/anna-icon-column.component.mjs +36 -36
  6. package/{esm2020 → esm2022}/lib/anna-core-shared-lib/components/anna-live-icon-template/anna-live-icon-template.component.mjs +15 -15
  7. package/{esm2020 → esm2022}/lib/anna-core-shared-lib/components/anna-no-data/anna-no-data.component.mjs +22 -22
  8. package/{esm2020 → esm2022}/lib/anna-core-shared-lib/components/anna-notify-icon-template/anna-notify-icon-template.component.mjs +14 -14
  9. package/{esm2020 → esm2022}/lib/anna-core-shared-lib/components/anna-pay-for-performance-icon-template/anna-pay-for-performance-icon-template.component.mjs +23 -23
  10. package/{esm2020 → esm2022}/lib/anna-core-shared-lib/components/anna-rejected-icon-template/anna-rejected-icon-template.component.mjs +15 -15
  11. package/esm2022/lib/anna-core-shared-lib/constants/shared.constant.mjs +44 -0
  12. package/{esm2020 → esm2022}/lib/anna-core-shared-lib/directives/digits-only/digits-only.directive.mjs +284 -284
  13. package/{esm2020 → esm2022}/lib/anna-core-shared-lib/directives/fixed-rows-popup-table/fixed-rows-popup-table.directive.mjs +43 -43
  14. package/{esm2020 → esm2022}/lib/anna-core-shared-lib/directives/show-ellipsis-text/show-ellipsis-text.directive.mjs +38 -38
  15. package/{esm2020 → esm2022}/lib/anna-core-shared-lib/models/anna-generic-data-type.model.mjs +1 -1
  16. package/{esm2020 → esm2022}/lib/anna-core-shared-lib/models/anna-global-dropdown-config.model.mjs +1 -1
  17. package/{esm2020 → esm2022}/lib/anna-core-shared-lib/models/anna-non-editable-gt-models.mjs +11 -11
  18. package/{esm2020 → esm2022}/lib/anna-core-shared-lib/models/anna-sort.model.mjs +6 -6
  19. package/{esm2020 → esm2022}/lib/anna-core-shared-lib/models/anna-tooltip.model.mjs +29 -29
  20. package/{esm2020 → esm2022}/lib/anna-core-shared-lib/pipes/annaConvertArrayToCommaSeperatedValue.pipe.mjs +38 -38
  21. package/{esm2020 → esm2022}/lib/anna-core-shared-lib/pipes/annaConvertZeroOrNullOrUndefined.pipe.mjs +26 -26
  22. package/{esm2020 → esm2022}/lib/anna-core-shared-lib/pipes/annaDateFormatter.pipe.mjs +22 -22
  23. package/{esm2020 → esm2022}/lib/anna-core-shared-lib/pipes/annaFilterSearchedText.pipe.mjs +53 -53
  24. package/{esm2020 → esm2022}/lib/anna-core-shared-lib/pipes/annaReplaceChar.pipe.mjs +25 -25
  25. package/{esm2020 → esm2022}/lib/anna-core-shared-lib/pipes/annaTypeOfData.pipe.mjs +16 -16
  26. package/{esm2020 → esm2022}/lib/anna-core-shared-lib/services/anna-date-time-format.service.mjs +208 -208
  27. package/esm2022/lib/anna-core-shared-lib/services/anna-filter.service.mjs +1170 -0
  28. package/{esm2020 → esm2022}/lib/anna-core-shared-lib/services/anna-generic-table.service.mjs +151 -151
  29. package/{esm2020 → esm2022}/lib/anna-core-shared-lib/services/anna-global-config.service.mjs +132 -132
  30. package/{esm2020 → esm2022}/lib/anna-core-shared-lib/services/anna-number-format.service.mjs +53 -53
  31. package/{esm2020 → esm2022}/lib/anna-core-shared-lib/services/anna-persisting-filter.service.mjs +66 -66
  32. package/{esm2020 → esm2022}/lib/anna-core-shared-lib/services/anna-sort.service.mjs +176 -176
  33. package/esm2022/lib/anna-core.module.mjs +221 -0
  34. package/{esm2020 → esm2022}/lib/anna-dropdown-lib/components/anna-calendar-filter/anna-calendar-filter.component.mjs +151 -151
  35. package/esm2022/lib/anna-dropdown-lib/components/anna-week-calendar-filter/anna-week-calendar-filter.component.mjs +364 -0
  36. package/{esm2020 → esm2022}/lib/anna-generic-table-lib/components/anna-column-filters/anna-column-checkbox-filter/anna-column-checkbox-filter.component.mjs +237 -237
  37. package/{esm2020 → esm2022}/lib/anna-generic-table-lib/components/anna-column-filters/anna-column-date-range-filter/anna-column-date-range-filter.component.mjs +180 -180
  38. package/{esm2020 → esm2022}/lib/anna-generic-table-lib/components/anna-column-filters/anna-column-slider-filter/anna-column-slider-filter.component.mjs +306 -306
  39. package/{esm2020 → esm2022}/lib/anna-generic-table-lib/components/anna-column-filters/anna-column-time-filter/anna-column-time-filter.component.mjs +291 -291
  40. package/esm2022/lib/anna-generic-table-lib/components/anna-non-editable-generic-table/anna-non-editable-generic-table.component.mjs +806 -0
  41. package/{esm2020 → esm2022}/lib/anna-generic-table-lib/components/anna-sort/anna-sort.component.mjs +64 -64
  42. package/esm2022/lib/anna-generic-table-lib/components/anna-table-virtual-scroll-viewport/anna-table-virtual-scroll-viewport.component.mjs +357 -0
  43. package/{esm2020 → esm2022}/lib/anna-generic-table-lib/directives/anna-fixed-row-size-table-virtual-scroll-strategy/anna-fixed-row-size-table-virtual-scroll-strategy.directive.mjs +189 -189
  44. package/{esm2020 → esm2022}/lib/anna-generic-table-lib/directives/anna-fixed-row-size-table-virtual-scroll-strategy/index.mjs +1 -1
  45. package/esm2022/lib/anna-generic-table-lib/directives/anna-virtual-table/anna-virtual-table.directive.mjs +178 -0
  46. package/{esm2020 → esm2022}/lib/anna-generic-table-lib/directives/anna-virtual-table/index.mjs +1 -1
  47. package/{esm2020 → esm2022}/public-api.mjs +57 -57
  48. package/{fesm2020 → fesm2022}/annalib-anna-core.mjs +5752 -5721
  49. package/fesm2022/annalib-anna-core.mjs.map +1 -0
  50. package/index.d.ts +5 -5
  51. package/lib/anna-core-shared-lib/components/anna-buyer-approval-icon-template/anna-buyer-approval-icon-template.component.d.ts +8 -8
  52. package/lib/anna-core-shared-lib/components/anna-deleted-order-icon-template/anna-deleted-order-icon-template.component.d.ts +8 -8
  53. package/lib/anna-core-shared-lib/components/anna-est-icon-template/anna-est-icon-template.component.d.ts +5 -5
  54. package/lib/anna-core-shared-lib/components/anna-icon-column/anna-icon-column.component.d.ts +17 -17
  55. package/lib/anna-core-shared-lib/components/anna-live-icon-template/anna-live-icon-template.component.d.ts +8 -8
  56. package/lib/anna-core-shared-lib/components/anna-no-data/anna-no-data.component.d.ts +11 -11
  57. package/lib/anna-core-shared-lib/components/anna-notify-icon-template/anna-notify-icon-template.component.d.ts +8 -8
  58. package/lib/anna-core-shared-lib/components/anna-pay-for-performance-icon-template/anna-pay-for-performance-icon-template.component.d.ts +12 -12
  59. package/lib/anna-core-shared-lib/components/anna-rejected-icon-template/anna-rejected-icon-template.component.d.ts +8 -8
  60. package/lib/anna-core-shared-lib/constants/shared.constant.d.ts +42 -42
  61. package/lib/anna-core-shared-lib/directives/digits-only/digits-only.directive.d.ts +34 -34
  62. package/lib/anna-core-shared-lib/directives/fixed-rows-popup-table/fixed-rows-popup-table.directive.d.ts +16 -16
  63. package/lib/anna-core-shared-lib/directives/show-ellipsis-text/show-ellipsis-text.directive.d.ts +10 -10
  64. package/lib/anna-core-shared-lib/models/anna-generic-data-type.model.d.ts +16 -16
  65. package/lib/anna-core-shared-lib/models/anna-global-dropdown-config.model.d.ts +97 -97
  66. package/lib/anna-core-shared-lib/models/anna-non-editable-gt-models.d.ts +119 -118
  67. package/lib/anna-core-shared-lib/models/anna-sort.model.d.ts +11 -11
  68. package/lib/anna-core-shared-lib/models/anna-tooltip.model.d.ts +25 -25
  69. package/lib/anna-core-shared-lib/pipes/annaConvertArrayToCommaSeperatedValue.pipe.d.ts +9 -9
  70. package/lib/anna-core-shared-lib/pipes/annaConvertZeroOrNullOrUndefined.pipe.d.ts +9 -9
  71. package/lib/anna-core-shared-lib/pipes/annaDateFormatter.pipe.d.ts +8 -8
  72. package/lib/anna-core-shared-lib/pipes/annaFilterSearchedText.pipe.d.ts +9 -9
  73. package/lib/anna-core-shared-lib/pipes/annaReplaceChar.pipe.d.ts +9 -9
  74. package/lib/anna-core-shared-lib/pipes/annaTypeOfData.pipe.d.ts +7 -7
  75. package/lib/anna-core-shared-lib/services/anna-date-time-format.service.d.ts +28 -28
  76. package/lib/anna-core-shared-lib/services/anna-filter.service.d.ts +154 -154
  77. package/lib/anna-core-shared-lib/services/anna-generic-table.service.d.ts +27 -27
  78. package/lib/anna-core-shared-lib/services/anna-global-config.service.d.ts +21 -21
  79. package/lib/anna-core-shared-lib/services/anna-number-format.service.d.ts +8 -8
  80. package/lib/anna-core-shared-lib/services/anna-persisting-filter.service.d.ts +9 -9
  81. package/lib/anna-core-shared-lib/services/anna-sort.service.d.ts +18 -18
  82. package/lib/anna-core.module.d.ts +45 -45
  83. package/lib/anna-dropdown-lib/components/anna-calendar-filter/anna-calendar-filter.component.d.ts +45 -45
  84. package/lib/anna-dropdown-lib/components/anna-week-calendar-filter/anna-week-calendar-filter.component.d.ts +70 -70
  85. package/lib/anna-generic-table-lib/components/anna-column-filters/anna-column-checkbox-filter/anna-column-checkbox-filter.component.d.ts +60 -60
  86. package/lib/anna-generic-table-lib/components/anna-column-filters/anna-column-date-range-filter/anna-column-date-range-filter.component.d.ts +53 -53
  87. package/lib/anna-generic-table-lib/components/anna-column-filters/anna-column-slider-filter/anna-column-slider-filter.component.d.ts +65 -65
  88. package/lib/anna-generic-table-lib/components/anna-column-filters/anna-column-time-filter/anna-column-time-filter.component.d.ts +83 -83
  89. package/lib/anna-generic-table-lib/components/anna-non-editable-generic-table/anna-non-editable-generic-table.component.d.ts +175 -174
  90. package/lib/anna-generic-table-lib/components/anna-sort/anna-sort.component.d.ts +17 -17
  91. package/lib/anna-generic-table-lib/components/anna-table-virtual-scroll-viewport/anna-table-virtual-scroll-viewport.component.d.ts +141 -141
  92. package/lib/anna-generic-table-lib/directives/anna-fixed-row-size-table-virtual-scroll-strategy/anna-fixed-row-size-table-virtual-scroll-strategy.directive.d.ts +89 -89
  93. package/lib/anna-generic-table-lib/directives/anna-fixed-row-size-table-virtual-scroll-strategy/index.d.ts +1 -1
  94. package/lib/anna-generic-table-lib/directives/anna-virtual-table/anna-virtual-table.directive.d.ts +45 -45
  95. package/lib/anna-generic-table-lib/directives/anna-virtual-table/index.d.ts +1 -1
  96. package/package.json +5 -11
  97. package/public-api.d.ts +42 -42
  98. package/esm2020/lib/anna-core-shared-lib/constants/shared.constant.mjs +0 -44
  99. package/esm2020/lib/anna-core-shared-lib/services/anna-filter.service.mjs +0 -1157
  100. package/esm2020/lib/anna-core.module.mjs +0 -221
  101. package/esm2020/lib/anna-dropdown-lib/components/anna-week-calendar-filter/anna-week-calendar-filter.component.mjs +0 -364
  102. package/esm2020/lib/anna-generic-table-lib/components/anna-non-editable-generic-table/anna-non-editable-generic-table.component.mjs +0 -788
  103. package/esm2020/lib/anna-generic-table-lib/components/anna-table-virtual-scroll-viewport/anna-table-virtual-scroll-viewport.component.mjs +0 -357
  104. package/esm2020/lib/anna-generic-table-lib/directives/anna-virtual-table/anna-virtual-table.directive.mjs +0 -178
  105. package/fesm2015/annalib-anna-core.mjs +0 -5857
  106. package/fesm2015/annalib-anna-core.mjs.map +0 -1
  107. package/fesm2020/annalib-anna-core.mjs.map +0 -1
@@ -1,291 +1,291 @@
1
- import { Component, EventEmitter, Input, Output } from '@angular/core';
2
- import { cloneDeep, isEqual } from "lodash-es";
3
- import { AnnaSortService } from '../../../../anna-core-shared-lib/services/anna-sort.service';
4
- import { AnnaFilterService } from '../../../../anna-core-shared-lib/services/anna-filter.service';
5
- import { AnnaDateTimeFormatService } from '../../../../anna-core-shared-lib/services/anna-date-time-format.service';
6
- import * as i0 from "@angular/core";
7
- import * as i1 from "../../../../anna-core-shared-lib/services/anna-sort.service";
8
- import * as i2 from "../../../../anna-core-shared-lib/services/anna-date-time-format.service";
9
- import * as i3 from "../../../../anna-core-shared-lib/services/anna-filter.service";
10
- import * as i4 from "@angular/common";
11
- import * as i5 from "@angular/forms";
12
- import * as i6 from "@angular/material/button-toggle";
13
- import * as i7 from "../../anna-sort/anna-sort.component";
14
- export class AnnaColumnTimeFilterComponent {
15
- constructor(annaSortService, annaDateTimeFormatService, annaFilterService) {
16
- this.annaSortService = annaSortService;
17
- this.annaDateTimeFormatService = annaDateTimeFormatService;
18
- this.annaFilterService = annaFilterService;
19
- this.showClearAllFilter = true;
20
- this.startFromText = "From";
21
- this.endToText = "To";
22
- this.isSortAndFilterAbsent = false;
23
- this.timeChanges = new EventEmitter();
24
- this.filterAppliedToTable = new EventEmitter();
25
- this.sortingAppliedToTable = new EventEmitter();
26
- this.getSortType = new EventEmitter();
27
- this.closeTooltip = new EventEmitter();
28
- this.tempSortOrder = null;
29
- this.showSortComponent = false;
30
- this.showFilterComponent = false;
31
- this.disableColumnClearAllBtn = true;
32
- this.tableColumns = [];
33
- this.totalRowColumns = null;
34
- }
35
- ngOnInit() {
36
- this.populateTooltipDataBasedOnSelectedRadio(this.filterTabObjects[0], false);
37
- }
38
- populateTooltipDataBasedOnSelectedRadio(activeTab, reload) {
39
- let header = activeTab.key;
40
- this.showSortComponent = activeTab.isSortRequired;
41
- this.showFilterComponent = activeTab.isFilterRequired;
42
- this.tempSortOrder = null;
43
- this.isFilterChanged = false;
44
- this.isSortChanged = false;
45
- this.annaFilterService.selectedRadio = header;
46
- this.disableColumnClearAllBtn = this.annaFilterService.disableActiveFilterClearButton();
47
- if (reload) {
48
- setTimeout(() => {
49
- this.createFilterTooltipData(activeTab, header);
50
- }, 100);
51
- }
52
- else {
53
- this.createFilterTooltipData(activeTab, header);
54
- }
55
- }
56
- createFilterTooltipData(activeTab, header) {
57
- this.showSortComponent = activeTab.isSortRequired;
58
- this.showFilterComponent = activeTab.isFilterRequired;
59
- this.disableTimeFilterApplyBtn = true;
60
- if (this.showFilterComponent) {
61
- this.getTimeFilterData(header);
62
- }
63
- }
64
- getTimeFilterData(header) {
65
- this.startTimeHourErr = this.startTimeMinErr = this.endTimeHourErr = this.endTimeMinErr = false;
66
- if (this.isSortAndFilterAbsent) {
67
- this.selectedFromTime = this.clonedTableData[0].time;
68
- this.selectedToTime = this.clonedTableData[1].time;
69
- this.selectedFromTime = AnnaDateTimeFormatService.formatToTwelveHrs(this.selectedFromTime, true);
70
- this.selectedToTime = AnnaDateTimeFormatService.formatToTwelveHrs(this.selectedToTime, true);
71
- }
72
- else {
73
- [this.selectedFromTime, this.selectedToTime] = this.annaFilterService.getSelectedTimeRange(header, this.clonedTableData);
74
- }
75
- this.clonedSelectedFromTime = cloneDeep(this.selectedFromTime);
76
- this.clonedSelectedToTime = cloneDeep(this.selectedToTime);
77
- let optionsData = this.annaFilterService?.getFilterOptionsData(this.tableData, this.clonedTableData);
78
- let checkedSelectedObj = this.annaFilterService?.selectUnselectTimeFilterCheckbox(header, optionsData);
79
- this.showMultiTimeCheckbox = checkedSelectedObj.showMultiTimeCheckbox;
80
- this.showZeroTimeCheckbox = checkedSelectedObj.showZeroTimeCheckbox;
81
- this.showEnterTimeCheckbox = checkedSelectedObj.showEnterTimeCheckbox;
82
- this.multiTimeCheckboxChecked = checkedSelectedObj.multiTimeCheckboxChecked;
83
- this.zeroTimeCheckboxChecked = checkedSelectedObj.zeroTimeCheckboxChecked;
84
- this.enterTimeCheckboxChecked = checkedSelectedObj.enterTimeCheckboxChecked;
85
- }
86
- selectOrUnselectMultiTimeCheckbox() {
87
- this.multiTimeCheckboxChecked = !this.multiTimeCheckboxChecked;
88
- this.disableTimeFilterApplyButton();
89
- }
90
- selectOrUnselectZeroTimeCheckbox() {
91
- this.zeroTimeCheckboxChecked = !this.zeroTimeCheckboxChecked;
92
- this.disableTimeFilterApplyButton();
93
- }
94
- selectOrUnselectEnterTimeCheckbox() {
95
- this.enterTimeCheckboxChecked = !this.enterTimeCheckboxChecked;
96
- this.disableTimeFilterApplyButton();
97
- }
98
- checkIfTimeTooltipIsFiltered() {
99
- let previousSelectedTimeFilter = this.annaFilterService.getPreviousSelectedTimeFilter();
100
- let currentSelectedTimeFilter = this.annaFilterService.getCurrentSelectedTimeFilter(this.selectedFromTime, this.selectedToTime, this.multiTimeCheckboxChecked, this.zeroTimeCheckboxChecked, this.enterTimeCheckboxChecked);
101
- this.isFilterChanged = !isEqual(previousSelectedTimeFilter, currentSelectedTimeFilter);
102
- return this.isFilterChanged;
103
- }
104
- checkIfInvalidTimeIsEntered() {
105
- if (this.startTimeHourErr || this.startTimeMinErr || this.endTimeHourErr || this.endTimeMinErr) {
106
- return true;
107
- }
108
- else {
109
- return false;
110
- }
111
- }
112
- disableTimeFilterApplyButton() {
113
- if (this.isSortAndFilterAbsent) {
114
- this.disableTimeFilterApplyBtn = this.checkIfInvalidTimeIsEntered() || !this.checkIfTimeTooltipIsFiltered();
115
- }
116
- else {
117
- if (this.showFilterComponent && this.showSortComponent) {
118
- let isFilterChanged = this.checkIfTimeTooltipIsFiltered();
119
- let isSortChanged = this.checkIfSortingChanged();
120
- this.disableTimeFilterApplyBtn = !this.validateTimeFilterInput() || (!isSortChanged && !isFilterChanged);
121
- }
122
- else if (this.showFilterComponent) {
123
- this.disableTimeFilterApplyBtn = !this.validateTimeFilterInput() || !this.checkIfTimeTooltipIsFiltered();
124
- }
125
- else if (this.showSortComponent) {
126
- this.disableTimeFilterApplyBtn = !this.checkIfSortingChanged();
127
- }
128
- }
129
- }
130
- checkIfSortingChanged() {
131
- this.isSortChanged = this.annaFilterService.checkIfSortingChanged(this.tempSortOrder);
132
- return this.isSortChanged;
133
- }
134
- validateTimeFilterInput() {
135
- if (this.startTimeHourErr || this.startTimeMinErr || this.endTimeHourErr || this.endTimeMinErr) {
136
- return false;
137
- }
138
- if ((this.showMultiTimeCheckbox && !this.multiTimeCheckboxChecked) &&
139
- (this.showZeroTimeCheckbox && !this.zeroTimeCheckboxChecked) &&
140
- (this.showEnterTimeCheckbox && !this.enterTimeCheckboxChecked)) {
141
- return false;
142
- }
143
- return !this.annaFilterService.checkIfStartTimeIsAfterEndTime(this.selectedFromTime, this.selectedToTime);
144
- }
145
- applyTimeFilters() {
146
- if (this.isSortAndFilterAbsent) {
147
- let timeSelected = [this.selectedFromTime, this.selectedToTime];
148
- this.timeChanges.emit(timeSelected);
149
- }
150
- else {
151
- this.applyTimeFilterOnData();
152
- this.applySortingOnFilteredData();
153
- this.annaFilterService.updateStateOfAllTheKeys(this.annaSortService.columnSortState);
154
- this.emitData();
155
- }
156
- this.closeTooltip.emit();
157
- }
158
- emitData() {
159
- if (this.isFilterChanged && this.isSortChanged) {
160
- this.filterAppliedToTable.emit(this.tableData);
161
- }
162
- else if (this.isFilterChanged) {
163
- this.filterAppliedToTable.emit(this.tableData);
164
- }
165
- else if (this.isSortChanged) {
166
- this.getSortType.emit(this.tempSortOrder);
167
- this.sortingAppliedToTable.emit(this.tableData);
168
- }
169
- }
170
- changeStartTimeHour(increment) {
171
- if (!this.startTimeHourErr) {
172
- this.annaFilterService.incrementOrDecrementHour(increment, this.selectedFromTime);
173
- this.startTimeHourChange(this.selectedFromTime[0].toString());
174
- }
175
- }
176
- changeEndTimeHour(increment) {
177
- if (!this.endTimeHourErr) {
178
- this.annaFilterService.incrementOrDecrementHour(increment, this.selectedToTime);
179
- this.endTimeHourChange(this.selectedToTime[0].toString());
180
- }
181
- }
182
- changeEndTimeMinute(increment) {
183
- if (!this.endTimeMinErr) {
184
- this.annaFilterService.incrementOrDecrementMin(increment, this.selectedToTime);
185
- this.endTimeMinChange(this.selectedToTime[1].toString());
186
- }
187
- }
188
- changeStartTimeMinute(increment) {
189
- if (!this.startTimeMinErr) {
190
- this.annaFilterService.incrementOrDecrementMin(increment, this.selectedFromTime);
191
- this.startTimeMinChange(this.selectedFromTime[1].toString());
192
- }
193
- }
194
- startTimeHourChange(val) {
195
- this.startTimeHourErr = this.annaFilterService.isHourValueInvalid(val);
196
- this.disableTimeFilterApplyButton();
197
- }
198
- startTimeMinChange(val) {
199
- this.startTimeMinErr = this.annaFilterService.isMinuteValueInvalid(val);
200
- this.disableTimeFilterApplyButton();
201
- }
202
- endTimeHourChange(val) {
203
- this.endTimeHourErr = this.annaFilterService.isHourValueInvalid(val);
204
- this.disableTimeFilterApplyButton();
205
- }
206
- endTimeMinChange(val) {
207
- this.endTimeMinErr = this.annaFilterService.isMinuteValueInvalid(val);
208
- this.disableTimeFilterApplyButton();
209
- }
210
- applySortingOnFilteredData() {
211
- if (this.showSortComponent) {
212
- if (this.isSortChanged) {
213
- this.tableData = this.annaFilterService.updateSortMap(this.tempSortOrder, this.tableData, this.isLurAndCsrComponent);
214
- }
215
- else if (this.isFilterChanged) {
216
- this.tableData = this.annaSortService.checkIfSortingIsApplied(this.tableData, this.isLurAndCsrComponent);
217
- }
218
- }
219
- else if (this.isFilterChanged) {
220
- this.tableData = this.annaSortService.checkIfSortingIsApplied(this.tableData, this.isLurAndCsrComponent);
221
- }
222
- }
223
- applyTimeFilterOnData() {
224
- if (this.showFilterComponent && this.isFilterChanged) {
225
- let currentSelectedTimeFilter = this.annaFilterService.getCurrentSelectedTimeFilter(this.selectedFromTime, this.selectedToTime, this.multiTimeCheckboxChecked, this.zeroTimeCheckboxChecked, this.enterTimeCheckboxChecked);
226
- let isFiltered = this.annaFilterService.reOrderAppliedFiltersState(this.clonedTableData, currentSelectedTimeFilter);
227
- this.annaFilterService.tooltipSelectedMap.set(this.annaFilterService.selectedRadio, currentSelectedTimeFilter);
228
- this.tableData = this.annaFilterService.filterData(this.clonedTableData, "");
229
- if (!isFiltered) {
230
- this.annaFilterService.tooltipSelectedMap.delete(this.annaFilterService.selectedRadio);
231
- }
232
- this.annaSortService.noSortingAppliedData = cloneDeep(this.tableData);
233
- }
234
- }
235
- closeTimeFilter() {
236
- this.selectedFromTime = cloneDeep(this.clonedSelectedFromTime);
237
- this.selectedToTime = cloneDeep(this.clonedSelectedToTime);
238
- this.closeTooltip.emit();
239
- }
240
- clearColumnFilter() {
241
- this.annaFilterService.clearColumnFilter();
242
- this.tableData = cloneDeep(this.annaFilterService.filterData(this.clonedTableData, ""));
243
- this.annaSortService.noSortingAppliedData = this.tableData;
244
- this.tableData = this.annaSortService.checkIfSortingIsApplied(this.tableData, this.isLurAndCsrComponent);
245
- this.annaFilterService.updateStateOfTheCurrentFilterTab(this.annaSortService.columnSortState);
246
- this.filterAppliedToTable.emit(this.tableData);
247
- }
248
- storeSortTypeInTempVariable(event) {
249
- this.tempSortOrder = event;
250
- this.disableTimeFilterApplyButton();
251
- }
252
- }
253
- AnnaColumnTimeFilterComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: AnnaColumnTimeFilterComponent, deps: [{ token: i1.AnnaSortService }, { token: i2.AnnaDateTimeFormatService }, { token: i3.AnnaFilterService }], target: i0.ɵɵFactoryTarget.Component });
254
- AnnaColumnTimeFilterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: AnnaColumnTimeFilterComponent, selector: "anna-core-anna-column-time-filter", inputs: { tableData: "tableData", clonedTableData: "clonedTableData", filterTabObjects: "filterTabObjects", showFilterHeaderTabs: "showFilterHeaderTabs", showAllTimeRangeCheckboxes: "showAllTimeRangeCheckboxes", isLurAndCsrComponent: "isLurAndCsrComponent", gtGeneralConfig: "gtGeneralConfig", showClearAllFilter: "showClearAllFilter", startFromText: "startFromText", endToText: "endToText", isSortAndFilterAbsent: "isSortAndFilterAbsent" }, outputs: { timeChanges: "timeChanges", filterAppliedToTable: "filterAppliedToTable", sortingAppliedToTable: "sortingAppliedToTable", getSortType: "getSortType", closeTooltip: "closeTooltip" }, ngImport: i0, template: "<div class=\"radio-container\" *ngIf=\"showFilterHeaderTabs\">\r\n <div *ngFor=\"let data of filterTabObjects\">\r\n <p class=\"filter-tab\" [title]=\"data.label\" (click)=\"populateTooltipDataBasedOnSelectedRadio(data, true)\" [ngClass]=\"{'active': annaFilterService.selectedRadio == data.key}\" *ngIf=\"filterTabObjects.length > 0\">{{ data.label }}</p>\r\n </div>\r\n</div>\r\n\r\n<anna-core-sort-lib *ngIf=\"showSortComponent\" [ngClass]=\"{'no-bottom-border': !showFilterComponent}\"\r\n(sortOptionClicked)=\"storeSortTypeInTempVariable($event)\" [sortObjectKey]=\"annaFilterService.selectedRadio\"></anna-core-sort-lib>\r\n\r\n<ng-container *ngIf=\"showFilterComponent\">\r\n <button class=\"column-clear-all\" *ngIf=\"showClearAllFilter\" [disabled]=\"disableColumnClearAllBtn\" (click)=\"clearColumnFilter()\">Clear filter</button>\r\n <div\r\n class=\"time-filter-checkboxes\"\r\n *ngIf=\"showAllTimeRangeCheckboxes\"\r\n >\r\n <!-- Multi time option checkbox -->\r\n <div class=\"d-flex align-items-center\" style=\"padding: 0.5rem 0 0.5rem 0.5rem\" *ngIf=\"showMultiTimeCheckbox\">\r\n <span\r\n *ngIf=\"multiTimeCheckboxChecked\"\r\n class=\"material-icons custom-column-checkbox-checked\"\r\n (click)=\"selectOrUnselectMultiTimeCheckbox()\"\r\n >\r\n check_box\r\n </span>\r\n <span\r\n *ngIf=\"!multiTimeCheckboxChecked\"\r\n class=\"material-icons custom-column-checkbox-unchecked\"\r\n (click)=\"selectOrUnselectMultiTimeCheckbox()\"\r\n >\r\n check_box_outline_blank\r\n </span>\r\n <p style=\"margin-left: 2px\">Include Multi</p>\r\n </div>\r\n <!-- Zero time option checkbox -->\r\n <div class=\"d-flex align-items-center\" style=\"padding: 0.5rem 0 0.5rem 0.5rem\" *ngIf=\"showZeroTimeCheckbox\">\r\n <span\r\n *ngIf=\"zeroTimeCheckboxChecked\"\r\n class=\"material-icons custom-column-checkbox-checked\"\r\n (click)=\"selectOrUnselectZeroTimeCheckbox()\"\r\n >\r\n check_box\r\n </span>\r\n <span\r\n *ngIf=\"!zeroTimeCheckboxChecked\"\r\n class=\"material-icons custom-column-checkbox-unchecked\"\r\n (click)=\"selectOrUnselectZeroTimeCheckbox()\"\r\n >\r\n check_box_outline_blank\r\n </span>\r\n <p style=\"margin-left: 2px\">Include Zero</p>\r\n </div>\r\n <!-- Enter time range option checkbox -->\r\n <div class=\"d-flex align-items-center\" style=\"padding: 0.5rem 0 0.5rem 0.5rem\" *ngIf=\"showEnterTimeCheckbox\">\r\n <span\r\n *ngIf=\"enterTimeCheckboxChecked\"\r\n class=\"material-icons custom-column-checkbox-checked\"\r\n (click)=\"selectOrUnselectEnterTimeCheckbox()\"\r\n >\r\n check_box\r\n </span>\r\n <span\r\n *ngIf=\"!enterTimeCheckboxChecked\"\r\n class=\"material-icons custom-column-checkbox-unchecked\"\r\n (click)=\"selectOrUnselectEnterTimeCheckbox()\"\r\n >\r\n check_box_outline_blank\r\n </span>\r\n <p style=\"margin-left: 2px\">Enter time range</p>\r\n </div>\r\n </div>\r\n <div class=\"time-label-container\">\r\n <label>{{startFromText}}</label>\r\n </div>\r\n <div class=\"time-container\">\r\n <input class=\"form-control numberInput\" [ngClass]=\"{'error-border': startTimeHourErr}\" [(ngModel)]=\"selectedFromTime[0]\" type=\"text\" pattern=\"[1-12]*\" (ngModelChange)=\"startTimeHourChange($event)\" />\r\n <div class=\"arrow-container\">\r\n <i class=\"mdi mdi-menu-up upward\" (click)=\"changeStartTimeHour(true)\"></i>\r\n <i class=\"mdi mdi-menu-down downward\" (click)=\"changeStartTimeHour(false)\"></i>\r\n </div>\r\n <span class=\"dot\">:</span>\r\n <input class=\"form-control numberInput\" [ngClass]=\"{'error-border': startTimeMinErr}\" [(ngModel)]=\"selectedFromTime[1]\" type=\"text\" pattern=\"[0-59]*\" (ngModelChange)=\"startTimeMinChange($event)\"/>\r\n <div class=\"arrow-container\">\r\n <i class=\"mdi mdi-menu-up upward\" (click)=\"changeStartTimeMinute(true)\"></i>\r\n <i class=\"mdi mdi-menu-down downward\" style=\"position: relative;left: .25px;\" (click)=\"changeStartTimeMinute(false)\"></i>\r\n </div>\r\n <div>\r\n <mat-button-toggle-group [(ngModel)]=\"selectedFromTime[2]\" (ngModelChange)=\"disableTimeFilterApplyButton()\">\r\n <mat-button-toggle value=\"AM\">\r\n <span>AM</span>\r\n </mat-button-toggle>\r\n <mat-button-toggle value=\"PM\">\r\n <span>PM</span>\r\n </mat-button-toggle>\r\n </mat-button-toggle-group>\r\n </div>\r\n </div>\r\n\r\n <div class=\"time-label-container\">\r\n <label>{{endToText}}</label>\r\n </div>\r\n <div class=\"time-container\">\r\n <input class=\"form-control numberInput\" [(ngModel)]=\"selectedToTime[0]\" [ngClass]=\"{'error-border': endTimeHourErr}\" (ngModelChange)=\"endTimeHourChange($event)\" type=\"text\"pattern=\"[1-12]*\" />\r\n <div class=\"arrow-container\">\r\n <i class=\"mdi mdi-menu-up upward\" (click)=\"changeEndTimeHour(true)\"></i>\r\n <i class=\"mdi mdi-menu-down downward\" (click)=\"changeEndTimeHour(false)\"></i>\r\n </div>\r\n <span class=\"dot\">:</span>\r\n <input class=\"form-control numberInput\" [ngClass]=\"{'error-border': endTimeMinErr}\" [(ngModel)]=\"selectedToTime[1]\" (ngModelChange)=\"endTimeMinChange($event)\" type=\"text\"pattern=\"[0-59]*\" />\r\n <div class=\"arrow-container\">\r\n <i class=\"mdi mdi-menu-up upward\" (click)=\"changeEndTimeMinute(true)\"></i>\r\n <i class=\"mdi mdi-menu-down downward\" style=\"position: relative;left: .25px;\" (click)=\"changeEndTimeMinute(false)\"></i>\r\n </div>\r\n <div>\r\n <mat-button-toggle-group [(ngModel)]=\"selectedToTime[2]\" (ngModelChange)=\"disableTimeFilterApplyButton()\">\r\n <mat-button-toggle value=\"AM\">\r\n <span>AM</span>\r\n </mat-button-toggle>\r\n <mat-button-toggle value=\"PM\">\r\n <span>PM</span>\r\n </mat-button-toggle>\r\n </mat-button-toggle-group>\r\n </div>\r\n </div>\r\n</ng-container>\r\n\r\n<div class=\"buttons-container\">\r\n <button class=\"button\" (click)=\"closeTimeFilter()\">Cancel</button>\r\n <button\r\n class=\"button\"\r\n [ngClass]=\"{ disabled: disableTimeFilterApplyBtn }\"\r\n (click)=\"applyTimeFilters()\"\r\n [disabled]=\"disableTimeFilterApplyBtn\"\r\n >\r\n Apply\r\n </button>\r\n</div>", styles: [":host ::ng-deep .mat-button-toggle-appearance-standard .mat-button-toggle-label-content{line-height:30px;width:42px;padding:0 10px}:host ::ng-deep .mat-button-toggle-checked{background-color:#268bff;color:#fff!important}:host ::ng-deep .mat-button-toggle-group-appearance-standard{border-radius:0;border:none!important}::ng-deep .mat-button-toggle-disabled.mat-button-toggle-checked{background:#bdbdbd!important}::ng-deep .mat-button-toggle-disabled.mat-button-toggle-checked button{color:#fff;opacity:1}::ng-deep .mat-button-toggle-appearance-standard{opacity:.5;border:solid 1px #b3b3b3}::ng-deep .mat-button-toggle-appearance-standard button{opacity:1}::ng-deep .mat-button-toggle-appearance-standard.mat-button-toggle-checked{opacity:1}.sort-btn{background:white;border:none;border-right:1px solid #1b88ff;text-decoration:underline;font-family:Roboto;font-size:14px;font-weight:400;font-stretch:normal;font-style:normal;line-height:1.07;letter-spacing:normal;color:#1b88ff;cursor:pointer;flex:1;text-align:center}.sort-btn:last-of-type{border-right:none}.sort-btn.active{color:#202b47;text-decoration:none}p.sort-container{margin-top:8px;padding-bottom:8px;border-bottom:1px solid #e6e6e6;margin-bottom:0;display:flex}::ng-deep .tooltip-inner{max-height:22rem;background-color:#fff;border:1px solid white;border-radius:5px;box-shadow:0 2px 2px #0000003d,0 0 2px #0000001f;max-width:251px;width:100%;padding:0!important}::ng-deep .tooltip-inner div.radio-container{flex-wrap:wrap}::ng-deep .md-drppicker{box-shadow:unset!important}::ng-deep .available{color:#999}::ng-deep .bs-tooltip-bottom .arrow:before{border-bottom-color:#fff!important}::ng-deep .bs-tooltip-left .arrow:before{border-left-color:#fff!important}::ng-deep .tooltip.show{opacity:1}.input{text-align:left;margin:5px 10px 5px 5px;display:flex;align-items:center;width:230px;white-space:nowrap}.data{color:#000;font-weight:700;margin-left:5px;margin-right:5px}span.data{display:inline-block;text-overflow:ellipsis;white-space:pre;width:100%;overflow:hidden}.check-box{font-size:14px;cursor:pointer;position:relative;top:-1px}span.mdi-filter.active{color:#000;opacity:1!important;pointer-events:all!important}p{margin-bottom:0;line-height:initial}span.mdi-filter{color:#cbcbcb}::ng-deep .ngx-slider-pointer{top:-5px!important;width:12px!important;height:12px!important;background:#bdbdbd!important;border:1px solid #ffffff!important;box-shadow:0 1px 3px #0000004d!important;border-radius:16px!important}input:focus{outline:none}input::placeholder{color:#c8c8c8}.cancel-btn{background:#c7e1ff;color:#268bff}.apply-btn{background:#268bff;color:#fff;margin-left:.3125rem}div.radio-container{display:flex;white-space:nowrap;justify-content:space-between;background-color:#f4f4f4;border-radius:.125rem;margin:.4375rem .4375rem .25rem}div.radio-container div{flex:1;width:50%}div.radio-container div.full-width{width:100%}div.radio-container input{position:relative;top:.125rem;margin-right:.25rem}div.radio-container label{font-family:Roboto;font-size:.875rem;font-weight:400;font-stretch:normal;font-style:normal;line-height:1.29;letter-spacing:0;color:#4a4a4a;margin:0;padding-left:.125rem}div.radio-container label:first-of-type{margin-right:.188rem}div.radio-container input[type=radio]{appearance:none;display:inline-block;width:.9375rem;height:.9375rem;padding:.125rem;background-clip:content-box;border:.125rem solid #268bff;background-color:transparent;border-radius:50%}div.radio-container input[type=radio]:checked{background-color:#268bff}.checkbox-filter-buttons-container{padding:0 8px!important}.buttons-container{display:flex;margin:0px auto .4375rem;justify-content:center;padding:0 12px}.buttons-container .button{padding:0 10px;width:100%;margin:8px 0 0;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.buttons-container button:last-of-type{background-color:#268bff;color:#fff;margin-left:.5rem}.buttons-container button.disabled{background:#bdbdbd;opacity:.5;color:#4a4a4a}.button{display:inline-block;margin:8px 4px 0 8px;padding:0 16px;border-radius:4px;text-align:center;outline:none;font-family:Roboto;font-size:.75rem;font-weight:400;font-stretch:normal;font-style:normal;line-height:1.67;letter-spacing:normal;border:none;color:#268bff;background-color:#e5f1ff}.search-box{display:flex;align-items:center;color:#c8c8c8;border:1px solid #e6e6e6;border-radius:.125rem;margin:.25rem .4375rem .188rem;height:1.5rem;padding:.188rem 8px .188rem .5rem}.search-box .search-bar-close{margin-left:auto;float:right}.search-icon{margin:0 4px 0 0;font-size:1.125rem;color:#9b9b9b}.filter-icon{justify-content:right;margin-left:auto;color:#d4d4d4;color:#a1a1a1;font-size:16px;cursor:pointer}.data{margin:0 13px 0 8px;font-family:Roboto;font-size:.875rem;font-weight:400;font-stretch:normal;font-style:normal;line-height:1.86;letter-spacing:\"\";color:#4a4a4a}.search-input{margin:1px 0 1px 4px;font-family:Roboto;font-size:.875rem;font-weight:400;font-stretch:normal;font-style:normal;line-height:normal;letter-spacing:normal;color:#c8c8c8;width:calc(100% - 38px)}.check-box{color:#268bff}.tooltip-data-container{overflow-y:scroll;max-height:8rem}.searchbar{width:100%;display:flex;justify-content:flex-end;align-items:flex-end}.clear-button{opacity:.5;font-family:Roboto;font-size:.9375rem;font-weight:500;font-stretch:normal;font-style:normal;line-height:normal;letter-spacing:normal;text-decoration:underline;border:none;background-color:#fff;color:#4a4a4a;margin-left:.625rem;padding:0}.clear-button:focus{outline:none;box-shadow:none}.unchecked{color:#268bff}cdk-virtual-scroll-viewport.dropdown-data-container{max-height:12.3rem;width:100%;overflow-y:auto;overflow-x:hidden}cdk-virtual-scroll-viewport.dropdown-data-container p.input{margin-left:0}cdk-virtual-scroll-viewport.dropdown-data-container p.input span.mi{padding-left:.4375rem}cdk-virtual-scroll-viewport.dropdown-data-container p.input:hover{background-color:#ebebeb;cursor:pointer}cdk-virtual-scroll-viewport.dropdown-data-container::-webkit-scrollbar{width:.188rem}cdk-virtual-scroll-viewport.dropdown-data-container::-webkit-scrollbar-thumb{color:#d3d3d3;background:lightgray}section.min-maxContainer{display:flex;justify-content:center;margin-bottom:-.125rem;margin-top:.5rem;width:100%}section.min-maxContainer input{width:30%;height:1.875rem;border:1px solid lightgray;color:gray}section.min-maxContainer span{display:inline-block;padding-left:.5rem;padding-right:.5rem;position:relative;top:.3125rem;color:#666}.time-container{width:100%;display:flex;padding:0 .75rem}.time-container input.form-control:disabled{background-color:#fff;width:2.813rem}.time-container input.numberInput:focus{box-shadow:none;border-color:#c2cfd6}.time-container .dot{color:#cbcbcb;position:relative;left:-7px;font-size:17px}.time-container div.arrow-container{flex-direction:column;display:flex;margin-top:.375rem;width:9px;height:18px;margin-right:1.1875rem}.time-container div.arrow-container i{color:#000;cursor:pointer;max-height:9px;font-size:25px;width:10px}.time-container div.arrow-container i:before{width:0;height:0;pointer-events:none;position:relative;left:-9px;top:-11px}.mdi-filter{cursor:pointer}.time-label-container{display:flex;justify-content:flex-start}.time-label-container label{margin-bottom:0;color:#4a4a4a;margin-top:.125rem;margin-left:.625rem;font-weight:700}.time-heading{color:#000;font-size:.8125rem;text-align:left;padding-left:.625rem;margin-top:.625rem;font-weight:700}.column-clear-all{width:94%;text-align:center;border:none;font-size:14px;background:none;text-decoration:underline;color:#268bff}.checkbox-container{display:flex;padding-inline:.625rem}.checkbox-container .data{text-align:left}.checkbox-container:first-of-type{margin-top:.625rem;font-weight:500}.column-clear-all{width:94%;text-align:center;border:none;background:none;text-decoration:underline;color:#268bff}.column-clear-all:disabled{opacity:.5;color:#4a4a4a;font-weight:400}.column-clear-all.align-center{text-align:center}span.mdi-filter-variant.disabled{pointer-events:none;opacity:.5}.datepicker-container{width:100%}span.mdi-filter-variant{color:#cbcbcb;cursor:pointer;font-size:.875rem}span.mdi-filter-variant.active{color:#000}p.filter-tab{font-family:Roboto;font-size:14px;font-weight:400;font-stretch:normal;font-style:normal;line-height:1.29;letter-spacing:normal;color:#1b88ff;border-radius:5px;background-color:#f4f4f4;padding-inline:8px;cursor:pointer;overflow:hidden;text-align:center;text-overflow:ellipsis}p.filter-tab.active{color:#fff;background-color:#1b88ff}button.filter-text-btn{background:white;text-decoration:underline;font-family:Roboto;font-size:14px;font-weight:400;font-stretch:normal;font-style:normal;line-height:normal;letter-spacing:normal;border:none;color:#268bff;margin-inline:4px;margin-top:2px}button.filter-text-btn:disabled{color:#b1b1b1;cursor:not-allowed}::ng-deep .non-edit-datepicker-tooltip .tooltip-inner{max-width:310px!important;width:283px!important;overflow-y:initial!important;padding:0!important}input.slider-text::-webkit-outer-spin-button,input.slider-text::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}input.slider-text{-moz-appearance:textfield}input.slider-text.red-border{border:1px solid #f44336!important}::ng-deep .checkbox-sort p.sort-container{margin-top:8px!important;padding-bottom:8px!important}i.mdi-close{cursor:pointer}i.mdi-close.disable-close-icon{pointer-events:none;cursor:not-allowed}input.error-border{border:1px solid #f44336!important}::ng-deep .non-edit-checkbox-tooltip .tooltip-inner{width:238px!important;padding:0!important}::ng-deep .non-edit-slider-tooltip .tooltip-inner{width:238px!important;padding:0!important}::ng-deep .non-edit-time-tooltip .tooltip-inner{width:250px!important;padding:0!important}::ng-deep .non-edit-time-tooltip.bs-tooltip-start{padding:.4rem}::ng-deep .non-edit-time-tooltip.bs-tooltip-start .tooltip-arrow{right:0;top:5px!important;width:var(--bs-tooltip-arrow-height);height:var(--bs-tooltip-arrow-width)}::ng-deep .non-edit-time-tooltip.bs-tooltip-start .tooltip-arrow:before{border-left-color:#fff;left:-1px;border-width:calc(var(--bs-tooltip-arrow-width) * .5) 0 calc(var(--bs-tooltip-arrow-width) * .5) var(--bs-tooltip-arrow-height)}::ng-deep .no-bottom-border p.sort-container{border-bottom:none!important}::ng-deep .ngx-slider-pointer-min:after{display:none}::ng-deep .ngx-slider-pointer-max:after{display:none}::ng-deep .ngx-slider span.ngx-slider-pointer{width:12px;height:12px;top:-5px;background-color:#bdbdbd}::ng-deep .ngx-slider span.ngx-slider-bar{height:3px;background:#ededed}::ng-deep .ngx-slider span.ngx-slider-selection{background:#bdbdbd}::ng-deep .ngx-slider span.ngx-slider-bubble{bottom:-22px;font-size:12px;color:#333}::ng-deep .show-min.ngx-slider span.ngx-slider-model-value{background:white;box-shadow:0 6px 10px #0000004d,0 2px 2px #0003}::ng-deep .show-max.ngx-slider span.ngx-slider-model-high{background:white;box-shadow:none}::ng-deep .ngx-slider span.ngx-slider-combined{background:white;box-shadow:0 6px 10px #0000004d,0 2px 2px #0003}::ng-deep .ngx-slider{top:10px!important;margin:5px 0 2px!important}::ng-deep .ngx-slider-animate{top:0!important}.sidebar-slider{margin-bottom:35px!important;margin-left:5px;margin-right:5px}.slider-placeholder{height:14px}::ng-deep .filter-calendar select.form-select:focus{border-color:#c2cfd6;box-shadow:none}::ng-deep .filter-calendar select.form-select{background-color:#fff}.no-data-case{padding-left:.4375rem!important;font-size:.875rem!important;margin-top:10px!important;cursor:pointer}.custom-column-checkbox-checked,.custom-column-checkbox-unchecked{font-size:.875rem;cursor:pointer}.custom-column-checkbox-checked{color:#268bff}.custom-column-checkbox-unchecked{color:#4a4a4a}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{opacity:1}.redcolor-status{color:#c62a2a}#no-filter-space{width:.875rem}input.numberInput{margin-right:-.8125rem;padding:0 0 0 .625rem;height:1.875rem}.hidden{display:none}\n"], dependencies: [{ kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.PatternValidator, selector: "[pattern][formControlName],[pattern][formControl],[pattern][ngModel]", inputs: ["pattern"] }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i6.MatButtonToggleGroup, selector: "mat-button-toggle-group", inputs: ["appearance", "name", "vertical", "value", "multiple", "disabled"], outputs: ["valueChange", "change"], exportAs: ["matButtonToggleGroup"] }, { kind: "component", type: i6.MatButtonToggle, selector: "mat-button-toggle", inputs: ["disableRipple", "aria-label", "aria-labelledby", "id", "name", "value", "tabIndex", "appearance", "checked", "disabled"], outputs: ["change"], exportAs: ["matButtonToggle"] }, { kind: "component", type: i7.AnnaSortComponent, selector: "anna-core-sort-lib", inputs: ["sortObjectKey"], outputs: ["sortOptionClicked"] }] });
255
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: AnnaColumnTimeFilterComponent, decorators: [{
256
- type: Component,
257
- args: [{ selector: 'anna-core-anna-column-time-filter', template: "<div class=\"radio-container\" *ngIf=\"showFilterHeaderTabs\">\r\n <div *ngFor=\"let data of filterTabObjects\">\r\n <p class=\"filter-tab\" [title]=\"data.label\" (click)=\"populateTooltipDataBasedOnSelectedRadio(data, true)\" [ngClass]=\"{'active': annaFilterService.selectedRadio == data.key}\" *ngIf=\"filterTabObjects.length > 0\">{{ data.label }}</p>\r\n </div>\r\n</div>\r\n\r\n<anna-core-sort-lib *ngIf=\"showSortComponent\" [ngClass]=\"{'no-bottom-border': !showFilterComponent}\"\r\n(sortOptionClicked)=\"storeSortTypeInTempVariable($event)\" [sortObjectKey]=\"annaFilterService.selectedRadio\"></anna-core-sort-lib>\r\n\r\n<ng-container *ngIf=\"showFilterComponent\">\r\n <button class=\"column-clear-all\" *ngIf=\"showClearAllFilter\" [disabled]=\"disableColumnClearAllBtn\" (click)=\"clearColumnFilter()\">Clear filter</button>\r\n <div\r\n class=\"time-filter-checkboxes\"\r\n *ngIf=\"showAllTimeRangeCheckboxes\"\r\n >\r\n <!-- Multi time option checkbox -->\r\n <div class=\"d-flex align-items-center\" style=\"padding: 0.5rem 0 0.5rem 0.5rem\" *ngIf=\"showMultiTimeCheckbox\">\r\n <span\r\n *ngIf=\"multiTimeCheckboxChecked\"\r\n class=\"material-icons custom-column-checkbox-checked\"\r\n (click)=\"selectOrUnselectMultiTimeCheckbox()\"\r\n >\r\n check_box\r\n </span>\r\n <span\r\n *ngIf=\"!multiTimeCheckboxChecked\"\r\n class=\"material-icons custom-column-checkbox-unchecked\"\r\n (click)=\"selectOrUnselectMultiTimeCheckbox()\"\r\n >\r\n check_box_outline_blank\r\n </span>\r\n <p style=\"margin-left: 2px\">Include Multi</p>\r\n </div>\r\n <!-- Zero time option checkbox -->\r\n <div class=\"d-flex align-items-center\" style=\"padding: 0.5rem 0 0.5rem 0.5rem\" *ngIf=\"showZeroTimeCheckbox\">\r\n <span\r\n *ngIf=\"zeroTimeCheckboxChecked\"\r\n class=\"material-icons custom-column-checkbox-checked\"\r\n (click)=\"selectOrUnselectZeroTimeCheckbox()\"\r\n >\r\n check_box\r\n </span>\r\n <span\r\n *ngIf=\"!zeroTimeCheckboxChecked\"\r\n class=\"material-icons custom-column-checkbox-unchecked\"\r\n (click)=\"selectOrUnselectZeroTimeCheckbox()\"\r\n >\r\n check_box_outline_blank\r\n </span>\r\n <p style=\"margin-left: 2px\">Include Zero</p>\r\n </div>\r\n <!-- Enter time range option checkbox -->\r\n <div class=\"d-flex align-items-center\" style=\"padding: 0.5rem 0 0.5rem 0.5rem\" *ngIf=\"showEnterTimeCheckbox\">\r\n <span\r\n *ngIf=\"enterTimeCheckboxChecked\"\r\n class=\"material-icons custom-column-checkbox-checked\"\r\n (click)=\"selectOrUnselectEnterTimeCheckbox()\"\r\n >\r\n check_box\r\n </span>\r\n <span\r\n *ngIf=\"!enterTimeCheckboxChecked\"\r\n class=\"material-icons custom-column-checkbox-unchecked\"\r\n (click)=\"selectOrUnselectEnterTimeCheckbox()\"\r\n >\r\n check_box_outline_blank\r\n </span>\r\n <p style=\"margin-left: 2px\">Enter time range</p>\r\n </div>\r\n </div>\r\n <div class=\"time-label-container\">\r\n <label>{{startFromText}}</label>\r\n </div>\r\n <div class=\"time-container\">\r\n <input class=\"form-control numberInput\" [ngClass]=\"{'error-border': startTimeHourErr}\" [(ngModel)]=\"selectedFromTime[0]\" type=\"text\" pattern=\"[1-12]*\" (ngModelChange)=\"startTimeHourChange($event)\" />\r\n <div class=\"arrow-container\">\r\n <i class=\"mdi mdi-menu-up upward\" (click)=\"changeStartTimeHour(true)\"></i>\r\n <i class=\"mdi mdi-menu-down downward\" (click)=\"changeStartTimeHour(false)\"></i>\r\n </div>\r\n <span class=\"dot\">:</span>\r\n <input class=\"form-control numberInput\" [ngClass]=\"{'error-border': startTimeMinErr}\" [(ngModel)]=\"selectedFromTime[1]\" type=\"text\" pattern=\"[0-59]*\" (ngModelChange)=\"startTimeMinChange($event)\"/>\r\n <div class=\"arrow-container\">\r\n <i class=\"mdi mdi-menu-up upward\" (click)=\"changeStartTimeMinute(true)\"></i>\r\n <i class=\"mdi mdi-menu-down downward\" style=\"position: relative;left: .25px;\" (click)=\"changeStartTimeMinute(false)\"></i>\r\n </div>\r\n <div>\r\n <mat-button-toggle-group [(ngModel)]=\"selectedFromTime[2]\" (ngModelChange)=\"disableTimeFilterApplyButton()\">\r\n <mat-button-toggle value=\"AM\">\r\n <span>AM</span>\r\n </mat-button-toggle>\r\n <mat-button-toggle value=\"PM\">\r\n <span>PM</span>\r\n </mat-button-toggle>\r\n </mat-button-toggle-group>\r\n </div>\r\n </div>\r\n\r\n <div class=\"time-label-container\">\r\n <label>{{endToText}}</label>\r\n </div>\r\n <div class=\"time-container\">\r\n <input class=\"form-control numberInput\" [(ngModel)]=\"selectedToTime[0]\" [ngClass]=\"{'error-border': endTimeHourErr}\" (ngModelChange)=\"endTimeHourChange($event)\" type=\"text\"pattern=\"[1-12]*\" />\r\n <div class=\"arrow-container\">\r\n <i class=\"mdi mdi-menu-up upward\" (click)=\"changeEndTimeHour(true)\"></i>\r\n <i class=\"mdi mdi-menu-down downward\" (click)=\"changeEndTimeHour(false)\"></i>\r\n </div>\r\n <span class=\"dot\">:</span>\r\n <input class=\"form-control numberInput\" [ngClass]=\"{'error-border': endTimeMinErr}\" [(ngModel)]=\"selectedToTime[1]\" (ngModelChange)=\"endTimeMinChange($event)\" type=\"text\"pattern=\"[0-59]*\" />\r\n <div class=\"arrow-container\">\r\n <i class=\"mdi mdi-menu-up upward\" (click)=\"changeEndTimeMinute(true)\"></i>\r\n <i class=\"mdi mdi-menu-down downward\" style=\"position: relative;left: .25px;\" (click)=\"changeEndTimeMinute(false)\"></i>\r\n </div>\r\n <div>\r\n <mat-button-toggle-group [(ngModel)]=\"selectedToTime[2]\" (ngModelChange)=\"disableTimeFilterApplyButton()\">\r\n <mat-button-toggle value=\"AM\">\r\n <span>AM</span>\r\n </mat-button-toggle>\r\n <mat-button-toggle value=\"PM\">\r\n <span>PM</span>\r\n </mat-button-toggle>\r\n </mat-button-toggle-group>\r\n </div>\r\n </div>\r\n</ng-container>\r\n\r\n<div class=\"buttons-container\">\r\n <button class=\"button\" (click)=\"closeTimeFilter()\">Cancel</button>\r\n <button\r\n class=\"button\"\r\n [ngClass]=\"{ disabled: disableTimeFilterApplyBtn }\"\r\n (click)=\"applyTimeFilters()\"\r\n [disabled]=\"disableTimeFilterApplyBtn\"\r\n >\r\n Apply\r\n </button>\r\n</div>", styles: [":host ::ng-deep .mat-button-toggle-appearance-standard .mat-button-toggle-label-content{line-height:30px;width:42px;padding:0 10px}:host ::ng-deep .mat-button-toggle-checked{background-color:#268bff;color:#fff!important}:host ::ng-deep .mat-button-toggle-group-appearance-standard{border-radius:0;border:none!important}::ng-deep .mat-button-toggle-disabled.mat-button-toggle-checked{background:#bdbdbd!important}::ng-deep .mat-button-toggle-disabled.mat-button-toggle-checked button{color:#fff;opacity:1}::ng-deep .mat-button-toggle-appearance-standard{opacity:.5;border:solid 1px #b3b3b3}::ng-deep .mat-button-toggle-appearance-standard button{opacity:1}::ng-deep .mat-button-toggle-appearance-standard.mat-button-toggle-checked{opacity:1}.sort-btn{background:white;border:none;border-right:1px solid #1b88ff;text-decoration:underline;font-family:Roboto;font-size:14px;font-weight:400;font-stretch:normal;font-style:normal;line-height:1.07;letter-spacing:normal;color:#1b88ff;cursor:pointer;flex:1;text-align:center}.sort-btn:last-of-type{border-right:none}.sort-btn.active{color:#202b47;text-decoration:none}p.sort-container{margin-top:8px;padding-bottom:8px;border-bottom:1px solid #e6e6e6;margin-bottom:0;display:flex}::ng-deep .tooltip-inner{max-height:22rem;background-color:#fff;border:1px solid white;border-radius:5px;box-shadow:0 2px 2px #0000003d,0 0 2px #0000001f;max-width:251px;width:100%;padding:0!important}::ng-deep .tooltip-inner div.radio-container{flex-wrap:wrap}::ng-deep .md-drppicker{box-shadow:unset!important}::ng-deep .available{color:#999}::ng-deep .bs-tooltip-bottom .arrow:before{border-bottom-color:#fff!important}::ng-deep .bs-tooltip-left .arrow:before{border-left-color:#fff!important}::ng-deep .tooltip.show{opacity:1}.input{text-align:left;margin:5px 10px 5px 5px;display:flex;align-items:center;width:230px;white-space:nowrap}.data{color:#000;font-weight:700;margin-left:5px;margin-right:5px}span.data{display:inline-block;text-overflow:ellipsis;white-space:pre;width:100%;overflow:hidden}.check-box{font-size:14px;cursor:pointer;position:relative;top:-1px}span.mdi-filter.active{color:#000;opacity:1!important;pointer-events:all!important}p{margin-bottom:0;line-height:initial}span.mdi-filter{color:#cbcbcb}::ng-deep .ngx-slider-pointer{top:-5px!important;width:12px!important;height:12px!important;background:#bdbdbd!important;border:1px solid #ffffff!important;box-shadow:0 1px 3px #0000004d!important;border-radius:16px!important}input:focus{outline:none}input::placeholder{color:#c8c8c8}.cancel-btn{background:#c7e1ff;color:#268bff}.apply-btn{background:#268bff;color:#fff;margin-left:.3125rem}div.radio-container{display:flex;white-space:nowrap;justify-content:space-between;background-color:#f4f4f4;border-radius:.125rem;margin:.4375rem .4375rem .25rem}div.radio-container div{flex:1;width:50%}div.radio-container div.full-width{width:100%}div.radio-container input{position:relative;top:.125rem;margin-right:.25rem}div.radio-container label{font-family:Roboto;font-size:.875rem;font-weight:400;font-stretch:normal;font-style:normal;line-height:1.29;letter-spacing:0;color:#4a4a4a;margin:0;padding-left:.125rem}div.radio-container label:first-of-type{margin-right:.188rem}div.radio-container input[type=radio]{appearance:none;display:inline-block;width:.9375rem;height:.9375rem;padding:.125rem;background-clip:content-box;border:.125rem solid #268bff;background-color:transparent;border-radius:50%}div.radio-container input[type=radio]:checked{background-color:#268bff}.checkbox-filter-buttons-container{padding:0 8px!important}.buttons-container{display:flex;margin:0px auto .4375rem;justify-content:center;padding:0 12px}.buttons-container .button{padding:0 10px;width:100%;margin:8px 0 0;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.buttons-container button:last-of-type{background-color:#268bff;color:#fff;margin-left:.5rem}.buttons-container button.disabled{background:#bdbdbd;opacity:.5;color:#4a4a4a}.button{display:inline-block;margin:8px 4px 0 8px;padding:0 16px;border-radius:4px;text-align:center;outline:none;font-family:Roboto;font-size:.75rem;font-weight:400;font-stretch:normal;font-style:normal;line-height:1.67;letter-spacing:normal;border:none;color:#268bff;background-color:#e5f1ff}.search-box{display:flex;align-items:center;color:#c8c8c8;border:1px solid #e6e6e6;border-radius:.125rem;margin:.25rem .4375rem .188rem;height:1.5rem;padding:.188rem 8px .188rem .5rem}.search-box .search-bar-close{margin-left:auto;float:right}.search-icon{margin:0 4px 0 0;font-size:1.125rem;color:#9b9b9b}.filter-icon{justify-content:right;margin-left:auto;color:#d4d4d4;color:#a1a1a1;font-size:16px;cursor:pointer}.data{margin:0 13px 0 8px;font-family:Roboto;font-size:.875rem;font-weight:400;font-stretch:normal;font-style:normal;line-height:1.86;letter-spacing:\"\";color:#4a4a4a}.search-input{margin:1px 0 1px 4px;font-family:Roboto;font-size:.875rem;font-weight:400;font-stretch:normal;font-style:normal;line-height:normal;letter-spacing:normal;color:#c8c8c8;width:calc(100% - 38px)}.check-box{color:#268bff}.tooltip-data-container{overflow-y:scroll;max-height:8rem}.searchbar{width:100%;display:flex;justify-content:flex-end;align-items:flex-end}.clear-button{opacity:.5;font-family:Roboto;font-size:.9375rem;font-weight:500;font-stretch:normal;font-style:normal;line-height:normal;letter-spacing:normal;text-decoration:underline;border:none;background-color:#fff;color:#4a4a4a;margin-left:.625rem;padding:0}.clear-button:focus{outline:none;box-shadow:none}.unchecked{color:#268bff}cdk-virtual-scroll-viewport.dropdown-data-container{max-height:12.3rem;width:100%;overflow-y:auto;overflow-x:hidden}cdk-virtual-scroll-viewport.dropdown-data-container p.input{margin-left:0}cdk-virtual-scroll-viewport.dropdown-data-container p.input span.mi{padding-left:.4375rem}cdk-virtual-scroll-viewport.dropdown-data-container p.input:hover{background-color:#ebebeb;cursor:pointer}cdk-virtual-scroll-viewport.dropdown-data-container::-webkit-scrollbar{width:.188rem}cdk-virtual-scroll-viewport.dropdown-data-container::-webkit-scrollbar-thumb{color:#d3d3d3;background:lightgray}section.min-maxContainer{display:flex;justify-content:center;margin-bottom:-.125rem;margin-top:.5rem;width:100%}section.min-maxContainer input{width:30%;height:1.875rem;border:1px solid lightgray;color:gray}section.min-maxContainer span{display:inline-block;padding-left:.5rem;padding-right:.5rem;position:relative;top:.3125rem;color:#666}.time-container{width:100%;display:flex;padding:0 .75rem}.time-container input.form-control:disabled{background-color:#fff;width:2.813rem}.time-container input.numberInput:focus{box-shadow:none;border-color:#c2cfd6}.time-container .dot{color:#cbcbcb;position:relative;left:-7px;font-size:17px}.time-container div.arrow-container{flex-direction:column;display:flex;margin-top:.375rem;width:9px;height:18px;margin-right:1.1875rem}.time-container div.arrow-container i{color:#000;cursor:pointer;max-height:9px;font-size:25px;width:10px}.time-container div.arrow-container i:before{width:0;height:0;pointer-events:none;position:relative;left:-9px;top:-11px}.mdi-filter{cursor:pointer}.time-label-container{display:flex;justify-content:flex-start}.time-label-container label{margin-bottom:0;color:#4a4a4a;margin-top:.125rem;margin-left:.625rem;font-weight:700}.time-heading{color:#000;font-size:.8125rem;text-align:left;padding-left:.625rem;margin-top:.625rem;font-weight:700}.column-clear-all{width:94%;text-align:center;border:none;font-size:14px;background:none;text-decoration:underline;color:#268bff}.checkbox-container{display:flex;padding-inline:.625rem}.checkbox-container .data{text-align:left}.checkbox-container:first-of-type{margin-top:.625rem;font-weight:500}.column-clear-all{width:94%;text-align:center;border:none;background:none;text-decoration:underline;color:#268bff}.column-clear-all:disabled{opacity:.5;color:#4a4a4a;font-weight:400}.column-clear-all.align-center{text-align:center}span.mdi-filter-variant.disabled{pointer-events:none;opacity:.5}.datepicker-container{width:100%}span.mdi-filter-variant{color:#cbcbcb;cursor:pointer;font-size:.875rem}span.mdi-filter-variant.active{color:#000}p.filter-tab{font-family:Roboto;font-size:14px;font-weight:400;font-stretch:normal;font-style:normal;line-height:1.29;letter-spacing:normal;color:#1b88ff;border-radius:5px;background-color:#f4f4f4;padding-inline:8px;cursor:pointer;overflow:hidden;text-align:center;text-overflow:ellipsis}p.filter-tab.active{color:#fff;background-color:#1b88ff}button.filter-text-btn{background:white;text-decoration:underline;font-family:Roboto;font-size:14px;font-weight:400;font-stretch:normal;font-style:normal;line-height:normal;letter-spacing:normal;border:none;color:#268bff;margin-inline:4px;margin-top:2px}button.filter-text-btn:disabled{color:#b1b1b1;cursor:not-allowed}::ng-deep .non-edit-datepicker-tooltip .tooltip-inner{max-width:310px!important;width:283px!important;overflow-y:initial!important;padding:0!important}input.slider-text::-webkit-outer-spin-button,input.slider-text::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}input.slider-text{-moz-appearance:textfield}input.slider-text.red-border{border:1px solid #f44336!important}::ng-deep .checkbox-sort p.sort-container{margin-top:8px!important;padding-bottom:8px!important}i.mdi-close{cursor:pointer}i.mdi-close.disable-close-icon{pointer-events:none;cursor:not-allowed}input.error-border{border:1px solid #f44336!important}::ng-deep .non-edit-checkbox-tooltip .tooltip-inner{width:238px!important;padding:0!important}::ng-deep .non-edit-slider-tooltip .tooltip-inner{width:238px!important;padding:0!important}::ng-deep .non-edit-time-tooltip .tooltip-inner{width:250px!important;padding:0!important}::ng-deep .non-edit-time-tooltip.bs-tooltip-start{padding:.4rem}::ng-deep .non-edit-time-tooltip.bs-tooltip-start .tooltip-arrow{right:0;top:5px!important;width:var(--bs-tooltip-arrow-height);height:var(--bs-tooltip-arrow-width)}::ng-deep .non-edit-time-tooltip.bs-tooltip-start .tooltip-arrow:before{border-left-color:#fff;left:-1px;border-width:calc(var(--bs-tooltip-arrow-width) * .5) 0 calc(var(--bs-tooltip-arrow-width) * .5) var(--bs-tooltip-arrow-height)}::ng-deep .no-bottom-border p.sort-container{border-bottom:none!important}::ng-deep .ngx-slider-pointer-min:after{display:none}::ng-deep .ngx-slider-pointer-max:after{display:none}::ng-deep .ngx-slider span.ngx-slider-pointer{width:12px;height:12px;top:-5px;background-color:#bdbdbd}::ng-deep .ngx-slider span.ngx-slider-bar{height:3px;background:#ededed}::ng-deep .ngx-slider span.ngx-slider-selection{background:#bdbdbd}::ng-deep .ngx-slider span.ngx-slider-bubble{bottom:-22px;font-size:12px;color:#333}::ng-deep .show-min.ngx-slider span.ngx-slider-model-value{background:white;box-shadow:0 6px 10px #0000004d,0 2px 2px #0003}::ng-deep .show-max.ngx-slider span.ngx-slider-model-high{background:white;box-shadow:none}::ng-deep .ngx-slider span.ngx-slider-combined{background:white;box-shadow:0 6px 10px #0000004d,0 2px 2px #0003}::ng-deep .ngx-slider{top:10px!important;margin:5px 0 2px!important}::ng-deep .ngx-slider-animate{top:0!important}.sidebar-slider{margin-bottom:35px!important;margin-left:5px;margin-right:5px}.slider-placeholder{height:14px}::ng-deep .filter-calendar select.form-select:focus{border-color:#c2cfd6;box-shadow:none}::ng-deep .filter-calendar select.form-select{background-color:#fff}.no-data-case{padding-left:.4375rem!important;font-size:.875rem!important;margin-top:10px!important;cursor:pointer}.custom-column-checkbox-checked,.custom-column-checkbox-unchecked{font-size:.875rem;cursor:pointer}.custom-column-checkbox-checked{color:#268bff}.custom-column-checkbox-unchecked{color:#4a4a4a}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{opacity:1}.redcolor-status{color:#c62a2a}#no-filter-space{width:.875rem}input.numberInput{margin-right:-.8125rem;padding:0 0 0 .625rem;height:1.875rem}.hidden{display:none}\n"] }]
258
- }], ctorParameters: function () { return [{ type: i1.AnnaSortService }, { type: i2.AnnaDateTimeFormatService }, { type: i3.AnnaFilterService }]; }, propDecorators: { tableData: [{
259
- type: Input
260
- }], clonedTableData: [{
261
- type: Input
262
- }], filterTabObjects: [{
263
- type: Input
264
- }], showFilterHeaderTabs: [{
265
- type: Input
266
- }], showAllTimeRangeCheckboxes: [{
267
- type: Input
268
- }], isLurAndCsrComponent: [{
269
- type: Input
270
- }], gtGeneralConfig: [{
271
- type: Input
272
- }], showClearAllFilter: [{
273
- type: Input
274
- }], startFromText: [{
275
- type: Input
276
- }], endToText: [{
277
- type: Input
278
- }], isSortAndFilterAbsent: [{
279
- type: Input
280
- }], timeChanges: [{
281
- type: Output
282
- }], filterAppliedToTable: [{
283
- type: Output
284
- }], sortingAppliedToTable: [{
285
- type: Output
286
- }], getSortType: [{
287
- type: Output
288
- }], closeTooltip: [{
289
- type: Output
290
- }] } });
291
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5uYS1jb2x1bW4tdGltZS1maWx0ZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5uYS1jb3JlL3NyYy9saWIvYW5uYS1nZW5lcmljLXRhYmxlLWxpYi9jb21wb25lbnRzL2FubmEtY29sdW1uLWZpbHRlcnMvYW5uYS1jb2x1bW4tdGltZS1maWx0ZXIvYW5uYS1jb2x1bW4tdGltZS1maWx0ZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5uYS1jb3JlL3NyYy9saWIvYW5uYS1nZW5lcmljLXRhYmxlLWxpYi9jb21wb25lbnRzL2FubmEtY29sdW1uLWZpbHRlcnMvYW5uYS1jb2x1bW4tdGltZS1maWx0ZXIvYW5uYS1jb2x1bW4tdGltZS1maWx0ZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBcUIsTUFBTSxlQUFlLENBQUM7QUFFbEcsT0FBTyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQVksTUFBTSxXQUFXLENBQUM7QUFJekQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDZEQUE2RCxDQUFDO0FBQzlGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLCtEQUErRCxDQUFDO0FBQ2xHLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHlFQUF5RSxDQUFDOzs7Ozs7Ozs7QUFTcEgsTUFBTSxPQUFPLDZCQUE2QjtJQTZDeEMsWUFDVSxlQUFnQyxFQUNqQyx5QkFBb0QsRUFDcEQsaUJBQW9DO1FBRm5DLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQUNqQyw4QkFBeUIsR0FBekIseUJBQXlCLENBQTJCO1FBQ3BELHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUF2Q3BDLHVCQUFrQixHQUFVLElBQUksQ0FBQztR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QUFDLGFBQWEsR0FBRyxLQUFLLENBQUM7UUFDM0IsSUFBSSxDQUFDLDRCQUE0QixFQUFFLENBQUM7SUFDdEMsQ0FBQzs7MkhBOVRVLDZCQUE2QjsrR0FBN0IsNkJBQTZCLG9zQkNqQjFDLHNpT0F1SU07NEZEdEhPLDZCQUE2QjtrQkFMekMsU0FBUzsrQkFDRSxtQ0FBbUM7OEtBS3BDLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0csb0JBQW9CO3NCQUE1QixLQUFLO2dCQUNHLDBCQUEwQjtzQkFBbEMsS0FBSztnQkFDRyxvQkFBb0I7c0JBQTVCLEtBQUs7Z0JBRUcsZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLHFCQUFxQjtzQkFBN0IsS0FBSztnQkFDSSxXQUFXO3NCQUFwQixNQUFNO2dCQUNHLG9CQUFvQjtzQkFBN0IsTUFBTTtnQkFDRyxxQkFBcUI7c0JBQTlCLE1BQU07Z0JBQ0csV0FBVztzQkFBcEIsTUFBTTtnQkFDRyxZQUFZO3NCQUFyQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmltcG9ydCB7IGNsb25lRGVlcCwgaXNFcXVhbCwgdHJ1bmNhdGUgfSBmcm9tIFwibG9kYXNoLWVzXCI7XHJcblxyXG5pbXBvcnQgeyByYWRpb0J1dHRvbk1vZGVsIH0gZnJvbSAnLi4vLi4vLi4vLi4vYW5uYS1jb3JlLXNoYXJlZC1saWIvbW9kZWxzL2FubmEtdG9vbHRpcC5tb2RlbCc7XHJcbmltcG9ydCB7IFNvcnRUeXBlIH0gZnJvbSAnLi4vLi4vLi4vLi4vYW5uYS1jb3JlLXNoYXJlZC1saWIvbW9kZWxzL2FubmEtc29ydC5tb2RlbCc7XHJcbmltcG9ydCB7IEFubmFTb3J0U2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uL2FubmEtY29yZS1zaGFyZWQtbGliL3NlcnZpY2VzL2FubmEtc29ydC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQW5uYUZpbHRlclNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi9hbm5hLWNvcmUtc2hhcmVkLWxpYi9zZXJ2aWNlcy9hbm5hLWZpbHRlci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQW5uYURhdGVUaW1lRm9ybWF0U2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uL2FubmEtY29yZS1zaGFyZWQtbGliL3NlcnZpY2VzL2FubmEtZGF0ZS10aW1lLWZvcm1hdC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgSUd0R2VuZXJhbENvbmZpZyB9IGZyb20gJy4uLy4uLy4uLy4uL2FubmEtY29yZS1zaGFyZWQtbGliL21vZGVscy9hbm5hLW5vbi1lZGl0YWJsZS1ndC1tb2RlbHMnO1xyXG5cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYW5uYS1jb3JlLWFubmEtY29sdW1uLXRpbWUtZmlsdGVyJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vYW5uYS1jb2x1bW4tdGltZS1maWx0ZXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2FubmEtY29sdW1uLXRpbWUtZmlsdGVyLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIEFubmFDb2x1bW5UaW1lRmlsdGVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBASW5wdXQoKSB0YWJsZURhdGE6IGFueVtdO1xyXG4gIEBJbnB1dCgpIGNsb25lZFRhYmxlRGF0YTogYW55W107XHJcbiAgQElucHV0KCkgZmlsdGVyVGFiT2JqZWN0czogYW55W107XHJcbiAgQElucHV0KCkgc2hvd0ZpbHRlckhlYWRlclRhYnM6IGJvb2xlYW47XHJcbiAgQElucHV0KCkgc2hvd0FsbFRpbWVSYW5nZUNoZWNrYm94ZXM6IGJvb2xlYW47IFxyXG4gIEBJbnB1dCgpIGlzTHVyQW5kQ3NyQ29tcG9uZW50OiBib29sZWFuOyBcclxuXHJcbiAgQElucHV0KCkgZ3RHZW5lcmFsQ29uZmlnOiBJR3RHZW5lcmFsQ29uZmlnO1xyXG4gIEBJbnB1dCgpIHNob3dDbGVhckFsbEZpbHRlcjpib29sZWFuID10cnVlO1xyXG4gIEBJbnB1dCgpIHN0YXJ0RnJvbVRleHQ6c3RyaW5nPVwiRnJvbVwiO1xyXG4gIEBJbnB1dCgpIGVuZFRvVGV4dDpzdHJpbmcgPVwiVG9cIjtcclxuICBASW5wdXQoKSBpc1NvcnRBbmRGaWx0ZXJBYnNlbnQ6Ym9vbGVhbj1mYWxzZTtcclxuICBAT3V0cHV0KCkgdGltZUNoYW5nZXM9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgZmlsdGVyQXBwbGllZFRvVGFibGUgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIHNvcnRpbmdBcHBsaWVkVG9UYWJsZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgZ2V0U29ydFR5cGUgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGNsb3NlVG9vbHRpcCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgaXNGaWx0ZXJDaGFuZ2VkOiBib29sZWFuO1xyXG4gIHRlbXBTb3J0T3JkZXI6IFNvcnRUeXBlID0gbnVsbDtcclxuICBpc1NvcnRDaGFuZ2VkOiBib29sZWFuO1xyXG4gIHNob3dTb3J0Q29tcG9uZW50OiBib29sZWFuID0gZmFsc2U7XHJcbiAgc2hvd0ZpbHRlckNvbXBvbmVudDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGRpc2FibGVDb2x1bW5DbGVhckFsbEJ0bjogYm9vbGVhbiA9IHRydWU7XHJcblxyXG4gIHN0YXJ0VGltZUhvdXJFcnI6IGJvb2xlYW47XHJcbiAgc3RhcnRUaW1lTWluRXJyOiBib29sZWFuO1xyXG4gIGVuZFRpbWVIb3VyRXJyOiBib29sZWFuO1xyXG4gIGVuZFRpbWVNaW5FcnI6IGJvb2xlYW47XHJcbiAgc2VsZWN0ZWRGcm9tVGltZTogYW55W107XHJcbiAgc2VsZWN0ZWRUb1RpbWU6IGFueVtdO1xyXG4gIGNsb25lZFNlbGVjdGVkRnJvbVRpbWU6IGFueTtcclxuICBjbG9uZWRTZWxlY3RlZFRvVGltZTogYW55O1xyXG4gIGRpc2FibGVUaW1lRmlsdGVyQXBwbHlCdG46IGJvb2xlYW47XHJcbiAgdGFibGVDb2x1bW5zOiBzdHJpbmdbXSA9IFtdO1xyXG4gIHRvdGFsUm93Q29sdW1uczogc3RyaW5nW10gPSBudWxsO1xyXG4gIHNob3dNdWx0aVRpbWVDaGVja2JveDogYm9vbGVhbjtcclxuICBzaG93WmVyb1RpbWVDaGVja2JveDogYm9vbGVhbjtcclxuICBzaG93RW50ZXJUaW1lQ2hlY2tib3g6IGJvb2xlYW47XHJcbiAgbXVsdGlUaW1lQ2hlY2tib3hDaGVja2VkOiBib29sZWFuO1xyXG4gIHplcm9UaW1lQ2hlY2tib3hDaGVja2VkOiBib29sZWFuO1xyXG4gIGVudGVyVGltZUNoZWNrYm94Q2hlY2tlZDogYm9vbGVhbjtcclxuICBiaW5kVmFsdWVGdW5jQ2FsbGVkOiBib29sZWFuO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgYW5uYVNvcnRTZXJ2aWNlOiBBbm5hU29ydFNlcnZpY2UsXHJcbiAgICBwdWJsaWMgYW5uYURhdGVUaW1lRm9ybWF0U2VydmljZTogQW5uYURhdGVUaW1lRm9ybWF0U2VydmljZSxcclxuICAgIHB1YmxpYyBhbm5hRmlsdGVyU2VydmljZTogQW5uYUZpbHRlclNlcnZpY2UpIHsgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMucG9wdWxhdGVUb29sdGlwRGF0YUJhc2VkT25TZWxlY3RlZFJhZGlvKHRoaXMuZmlsdGVyVGFiT2JqZWN0c1swXSwgZmFsc2UpO1xyXG4gIH1cclxuXHJcbiAgcG9wdWxhdGVUb29sdGlwRGF0YUJhc2VkT25TZWxlY3RlZFJhZGlvKGFjdGl2ZVRhYjogcmFkaW9CdXR0b25Nb2RlbCwgcmVsb2FkOiBib29sZWFuKSB7XHJcbiAgICBsZXQgaGVhZGVyID0gYWN0aXZlVGFiLmtleTtcclxuICAgIFxyXG4gICAgdGhpcy5zaG93U29ydENvbXBvbmVudCA9IGFjdGl2ZVRhYi5pc1NvcnRSZXF1aXJlZDtcclxuICAgIHRoaXMuc2hvd0ZpbHRlckNvbXBvbmVudCA9IGFjdGl2ZVRhYi5pc0ZpbHRlclJlcXVpcmVkO1xyXG4gICAgXHJcbiAgICB0aGlzLnRlbXBTb3J0T3JkZXIgPSBudWxsO1xyXG4gICAgdGhpcy5pc0ZpbHRlckNoYW5nZWQgPSBmYWxzZTtcclxuICAgIHRoaXMuaXNTb3J0Q2hhbmdlZCA9IGZhbHNlO1xyXG5cclxuICAgIHRoaXMuYW5uYUZpbHRlclNlcnZpY2Uuc2VsZWN0ZWRSYWRpbyA9IGhlYWRlcjtcclxuICAgIHRoaXMuZGlzYWJsZUNvbHVtbkNsZWFyQWxsQnRuID0gdGhpcy5hbm5hRmlsdGVyU2VydmljZS5kaXNhYmxlQWN0aXZlRmlsdGVyQ2xlYXJCdXR0b24oKTtcclxuXHJcbiAgICBpZihyZWxvYWQpe1xyXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICB0aGlzLmNyZWF0ZUZpbHRlclRvb2x0aXBEYXRhKGFjdGl2ZVRhYiwgaGVhZGVyKTtcclxuICAgICAgfSwgMTAwKTsgIFxyXG4gICAgfWVsc2V7XHJcbiAgICAgIHRoaXMuY3JlYXRlRmlsdGVyVG9vbHRpcERhdGEoYWN0aXZlVGFiLCBoZWFkZXIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY3JlYXRlRmlsdGVyVG9vbHRpcERhdGEoYWN0aXZlVGFiOiByYWRpb0J1dHRvbk1vZGVsLCBoZWFkZXI6IHN0cmluZykge1xyXG4gICAgdGhpcy5zaG93U29ydENvbXBvbmVudCA9IGFjdGl2ZVRhYi5pc1NvcnRSZXF1aXJlZDtcclxuICAgIHRoaXMuc2hvd0ZpbHRlckNvbXBvbmVudCA9IGFjdGl2ZVRhYi5pc0ZpbHRlclJlcXVpcmVkO1xyXG4gICAgXHJcbiAgICB0aGlzLmRpc2FibGVUaW1lRmlsdGVyQXBwbHlCdG4gPSB0cnVlO1xyXG4gICAgICBcclxuICAgIGlmICh0aGlzLnNob3dGaWx0ZXJDb21wb25lbnQpIHtcclxuICAgICAgdGhpcy5nZXRUaW1lRmlsdGVyRGF0YShoZWFkZXIpO1xyXG4gICAgfVxyXG4gICAgXHJcbiAgfVxyXG5cclxuICBnZXRUaW1lRmlsdGVyRGF0YShoZWFkZXI6IHN0cmluZyk6IHZvaWQge1xyXG5cclxuICAgIHRoaXMuc3RhcnRUaW1lSG91ckVyciA9IHRoaXMuc3RhcnRUaW1lTWluRXJyID0gdGhpcy5lbmRUaW1lSG91ckVyciA9IHRoaXMuZW5kVGltZU1pbkVyciA9IGZhbHNlO1xyXG4gICAgXHJcbiAgICBpZih0aGlzLmlzU29ydEFuZEZpbHRlckFic2VudCl7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRGcm9tVGltZT10aGlzLmNsb25lZFRhYmxlRGF0YVswXS50aW1lXHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRUb1RpbWU9dGhpcy5jbG9uZWRUYWJsZURhdGFbMV0udGltZVxyXG4gICAgICB0aGlzLnNlbGVjdGVkRnJvbVRpbWUgPSBBbm5hRGF0ZVRpbWVGb3JtYXRTZXJ2aWNlLmZvcm1hdFRvVHdlbHZlSHJzKHRoaXMuc2VsZWN0ZWRGcm9tVGltZSwgdHJ1ZSk7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRUb1RpbWUgPSBBbm5hRGF0ZVRpbWVGb3JtYXRTZXJ2aWNlLmZvcm1hdFRvVHdlbHZlSHJzKHRoaXMuc2VsZWN0ZWRUb1RpbWUsIHRydWUpO1xyXG4gICAgfVxyXG4gICAgZWxzZXtcclxuICAgICAgW3RoaXMuc2VsZWN0ZWRGcm9tVGltZSwgdGhpcy5zZWxlY3RlZFRvVGltZV0gPSB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmdldFNlbGVjdGVkVGltZVJhbmdlKGhlYWRlciwgdGhpcy5jbG9uZWRUYWJsZURhdGEpO1xyXG4gICAgfVxyXG4gXHJcbiAgICBcclxuXHJcbiAgICB0aGlzLmNsb25lZFNlbGVjdGVkRnJvbVRpbWUgPSBjbG9uZURlZXAodGhpcy5zZWxlY3RlZEZyb21UaW1lKTtcclxuICAgIHRoaXMuY2xvbmVkU2VsZWN0ZWRUb1RpbWUgPSBjbG9uZURlZXAodGhpcy5zZWxlY3RlZFRvVGltZSk7XHJcbiAgICBcclxuICAgIGxldCBvcHRpb25zRGF0YSA9IHRoaXMuYW5uYUZpbHRlclNlcnZpY2U/LmdldEZpbHRlck9wdGlvbnNEYXRhKHRoaXMudGFibGVEYXRhLCB0aGlzLmNsb25lZFRhYmxlRGF0YSk7XHJcbiAgICBcclxuICAgIGxldCBjaGVja2VkU2VsZWN0ZWRPYmogPSB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlPy5zZWxlY3RVbnNlbGVjdFRpbWVGaWx0ZXJDaGVja2JveChoZWFkZXIsIG9wdGlvbnNEYXRhKTtcclxuXHJcbiAgICB0aGlzLnNob3dNdWx0aVRpbWVDaGVja2JveCA9IGNoZWNrZWRTZWxlY3RlZE9iai5zaG93TXVsdGlUaW1lQ2hlY2tib3g7XHJcbiAgICB0aGlzLnNob3daZXJvVGltZUNoZWNrYm94ID0gY2hlY2tlZFNlbGVjdGVkT2JqLnNob3daZXJvVGltZUNoZWNrYm94O1xyXG4gICAgdGhpcy5zaG93RW50ZXJUaW1lQ2hlY2tib3ggPSBjaGVja2VkU2VsZWN0ZWRPYmouc2hvd0VudGVyVGltZUNoZWNrYm94O1xyXG4gICAgdGhpcy5tdWx0aVRpbWVDaGVja2JveENoZWNrZWQgPSBjaGVja2VkU2VsZWN0ZWRPYmoubXVsdGlUaW1lQ2hlY2tib3hDaGVja2VkO1xyXG4gICAgdGhpcy56ZXJvVGltZUNoZWNrYm94Q2hlY2tlZCA9IGNoZWNrZWRTZWxlY3RlZE9iai56ZXJvVGltZUNoZWNrYm94Q2hlY2tlZDtcclxuICAgIHRoaXMuZW50ZXJUaW1lQ2hlY2tib3hDaGVja2VkID0gY2hlY2tlZFNlbGVjdGVkT2JqLmVudGVyVGltZUNoZWNrYm94Q2hlY2tlZDsgICAgXHJcbiAgfVxyXG4gIFxyXG4gIHNlbGVjdE9yVW5zZWxlY3RNdWx0aVRpbWVDaGVja2JveCgpIHtcclxuICAgIHRoaXMubXVsdGlUaW1lQ2hlY2tib3hDaGVja2VkID0gIXRoaXMubXVsdGlUaW1lQ2hlY2tib3hDaGVja2VkO1xyXG4gICAgdGhpcy5kaXNhYmxlVGltZUZpbHRlckFwcGx5QnV0dG9uKCk7XHJcbiAgfVxyXG5cclxuICBzZWxlY3RPclVuc2VsZWN0WmVyb1RpbWVDaGVja2JveCgpIHtcclxuICAgIHRoaXMuemVyb1RpbWVDaGVja2JveENoZWNrZWQgPSAhdGhpcy56ZXJvVGltZUNoZWNrYm94Q2hlY2tlZDtcclxuICAgIHRoaXMuZGlzYWJsZVRpbWVGaWx0ZXJBcHBseUJ1dHRvbigpO1xyXG4gIH1cclxuXHJcbiAgc2VsZWN0T3JVbnNlbGVjdEVudGVyVGltZUNoZWNrYm94KCkge1xyXG4gICAgdGhpcy5lbnRlclRpbWVDaGVja2JveENoZWNrZWQgPSAhdGhpcy5lbnRlclRpbWVDaGVja2JveENoZWNrZWQ7XHJcbiAgICB0aGlzLmRpc2FibGVUaW1lRmlsdGVyQXBwbHlCdXR0b24oKTtcclxuICB9XHJcblxyXG4gIGNoZWNrSWZUaW1lVG9vbHRpcElzRmlsdGVyZWQoKSB7XHJcbiAgICBsZXQgcHJldmlvdXNTZWxlY3RlZFRpbWVGaWx0ZXIgPSB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmdldFByZXZpb3VzU2VsZWN0ZWRUaW1lRmlsdGVyKCk7XHJcbiAgICBsZXQgY3VycmVudFNlbGVjdGVkVGltZUZpbHRlciA9IHRoaXMuYW5uYUZpbHRlclNlcnZpY2UuZ2V0Q3VycmVudFNlbGVjdGVkVGltZUZpbHRlcih0aGlzLnNlbGVjdGVkRnJvbVRpbWUsIHRoaXMuc2VsZWN0ZWRUb1RpbWUsIHRoaXMubXVsdGlUaW1lQ2hlY2tib3hDaGVja2VkLCB0aGlzLnplcm9UaW1lQ2hlY2tib3hDaGVja2VkLCB0aGlzLmVudGVyVGltZUNoZWNrYm94Q2hlY2tlZCk7XHJcblxyXG4gICAgdGhpcy5pc0ZpbHRlckNoYW5nZWQgPSAhaXNFcXVhbChwcmV2aW91c1NlbGVjdGVkVGltZUZpbHRlciwgY3VycmVudFNlbGVjdGVkVGltZUZpbHRlcik7XHJcbiAgICByZXR1cm4gdGhpcy5pc0ZpbHRlckNoYW5nZWQ7XHJcbiAgfVxyXG5jaGVja0lmSW52YWxpZFRpbWVJc0VudGVyZWQoKXtcclxuICBpZiAodGhpcy5zdGFydFRpbWVIb3VyRXJyIHx8IHRoaXMuc3RhcnRUaW1lTWluRXJyIHx8IHRoaXMuZW5kVGltZUhvdXJFcnIgfHwgdGhpcy5lbmRUaW1lTWluRXJyKSB7IFxyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG4gIGVsc2V7XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG59XHJcbiAgZGlzYWJsZVRpbWVGaWx0ZXJBcHBseUJ1dHRvbigpIHtcclxuICAgXHJcbiAgIGlmKHRoaXMuaXNTb3J0QW5kRmlsdGVyQWJzZW50KXtcclxuICAgIHRoaXMuZGlzYWJsZVRpbWVGaWx0ZXJBcHBseUJ0bj0gdGhpcy5jaGVja0lmSW52YWxpZFRpbWVJc0VudGVyZWQoKSB8fCAhdGhpcy5jaGVja0lmVGltZVRvb2x0aXBJc0ZpbHRlcmVkKCkgXHJcbiAgIH1cclxuICAgZWxzZXtcclxuICAgIGlmICh0aGlzLnNob3dGaWx0ZXJDb21wb25lbnQgJiYgdGhpcy5zaG93U29ydENvbXBvbmVudCkge1xyXG4gICAgICBsZXQgaXNGaWx0ZXJDaGFuZ2VkID0gdGhpcy5jaGVja0lmVGltZVRvb2x0aXBJc0ZpbHRlcmVkKCk7XHJcbiAgICAgIGxldCBpc1NvcnRDaGFuZ2VkID0gdGhpcy5jaGVja0lmU29ydGluZ0NoYW5nZWQoKTtcclxuICAgICAgdGhpcy5kaXNhYmxlVGltZUZpbHRlckFwcGx5QnRuID0gIXRoaXMudmFsaWRhdGVUaW1lRmlsdGVySW5wdXQoKSB8fCAoIWlzU29ydENoYW5nZWQgJiYgIWlzRmlsdGVyQ2hhbmdlZCk7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmICh0aGlzLnNob3dGaWx0ZXJDb21wb25lbnQpIHtcclxuICAgICAgdGhpcy5kaXNhYmxlVGltZUZpbHRlckFwcGx5QnRuID0gIXRoaXMudmFsaWRhdGVUaW1lRmlsdGVySW5wdXQoKSB8fCAhdGhpcy5jaGVja0lmVGltZVRvb2x0aXBJc0ZpbHRlcmVkKCk7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmICh0aGlzLnNob3dTb3J0Q29tcG9uZW50KSB7XHJcbiAgICAgIHRoaXMuZGlzYWJsZVRpbWVGaWx0ZXJBcHBseUJ0biA9ICF0aGlzLmNoZWNrSWZTb3J0aW5nQ2hhbmdlZCgpO1xyXG4gICAgfVxyXG4gICB9XHJcbiAgICBcclxuXHJcbiAgfVxyXG5cclxuICBjaGVja0lmU29ydGluZ0NoYW5nZWQoKXtcclxuICAgIHRoaXMuaXNTb3J0Q2hhbmdlZCA9IHRoaXMuYW5uYUZpbHRlclNlcnZpY2UuY2hlY2tJZlNvcnRpbmdDaGFuZ2VkKHRoaXMudGVtcFNvcnRPcmRlcik7XHJcbiAgICByZXR1cm4gdGhpcy5pc1NvcnRDaGFuZ2VkO1xyXG4gIH1cclxuXHJcbiAgdmFsaWRhdGVUaW1lRmlsdGVySW5wdXQoKSB7XHJcbiAgICBpZiAodGhpcy5zdGFydFRpbWVIb3VyRXJyIHx8IHRoaXMuc3RhcnRUaW1lTWluRXJyIHx8IHRoaXMuZW5kVGltZUhvdXJFcnIgfHwgdGhpcy5lbmRUaW1lTWluRXJyKSB7XHJcbiAgICAgIFxyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCh0aGlzLnNob3dNdWx0aVRpbWVDaGVja2JveCAmJiAhdGhpcy5tdWx0aVRpbWVDaGVja2JveENoZWNrZWQpICYmXHJcbiAgICAgICh0aGlzLnNob3daZXJvVGltZUNoZWNrYm94ICYmICF0aGlzLnplcm9UaW1lQ2hlY2tib3hDaGVja2VkKSAmJlxyXG4gICAgICAodGhpcy5zaG93RW50ZXJUaW1lQ2hlY2tib3ggJiYgIXRoaXMuZW50ZXJUaW1lQ2hlY2tib3hDaGVja2VkKSkge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICBcclxuICAgIFxyXG4gICAgICByZXR1cm4gIXRoaXMuYW5uYUZpbHRlclNlcnZpY2UuY2hlY2tJZlN0YXJ0VGltZUlzQWZ0ZXJFbmRUaW1lKHRoaXMuc2VsZWN0ZWRGcm9tVGltZSwgdGhpcy5zZWxlY3RlZFRvVGltZSk7XHJcbiAgICBcclxuICAgXHJcbiAgfVxyXG5cclxuXHJcblxyXG4gIGFwcGx5VGltZUZpbHRlcnMoKSB7XHJcbiAgICBpZih0aGlzLmlzU29ydEFuZEZpbHRlckFic2VudCl7XHJcbiAgICAgIGxldCB0aW1lU2VsZWN0ZWQ9W3RoaXMuc2VsZWN0ZWRGcm9tVGltZSx0aGlzLnNlbGVjdGVkVG9UaW1lXVxyXG4gICAgICB0aGlzLnRpbWVDaGFuZ2VzLmVtaXQodGltZVNlbGVjdGVkKVxyXG4gICAgfVxyXG4gICAgZWxzZXtcclxuICAgICAgdGhpcy5hcHBseVRpbWVGaWx0ZXJPbkRhdGEoKTtcclxuICAgICAgdGhpcy5hcHBseVNvcnRpbmdPbkZpbHRlcmVkRGF0YSgpO1xyXG4gICAgICB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnVwZGF0ZVN0YXRlT2ZBbGxUaGVLZXlzKHRoaXMuYW5uYVNvcnRTZXJ2aWNlLmNvbHVtblNvcnRTdGF0ZSk7XHJcbiAgICAgIHRoaXMuZW1pdERhdGEoKTtcclxuICAgIH1cclxuICAgXHJcbiAgICB0aGlzLmNsb3NlVG9vbHRpcC5lbWl0KCk7XHJcbiAgfVxyXG5cclxuICBlbWl0RGF0YSgpIHtcclxuICAgIGlmICh0aGlzLmlzRmlsdGVyQ2hhbmdlZCAmJiB0aGlzLmlzU29ydENoYW5nZWQpIHtcclxuICAgICAgdGhpcy5maWx0ZXJBcHBsaWVkVG9UYWJsZS5lbWl0KHRoaXMudGFibGVEYXRhKTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pc0ZpbHRlckNoYW5nZWQpIHtcclxuICAgICAgdGhpcy5maWx0ZXJBcHBsaWVkVG9UYWJsZS5lbWl0KHRoaXMudGFibGVEYXRhKTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pc1NvcnRDaGFuZ2VkKSB7XHJcbiAgICAgIHRoaXMuZ2V0U29ydFR5cGUuZW1pdCh0aGlzLnRlbXBTb3J0T3JkZXIpO1xyXG4gICAgICB0aGlzLnNvcnRpbmdBcHBsaWVkVG9UYWJsZS5lbWl0KHRoaXMudGFibGVEYXRhKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNoYW5nZVN0YXJ0VGltZUhvdXIoaW5jcmVtZW50OiBib29sZWFuKSB7XHJcbiAgICBpZiAoIXRoaXMuc3RhcnRUaW1lSG91ckVycikge1xyXG4gICAgICB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmluY3JlbWVudE9yRGVjcmVtZW50SG91cihpbmNyZW1lbnQsIHRoaXMuc2VsZWN0ZWRGcm9tVGltZSk7XHJcbiAgICAgIHRoaXMuc3RhcnRUaW1lSG91ckNoYW5nZSh0aGlzLnNlbGVjdGVkRnJvbVRpbWVbMF0udG9TdHJpbmcoKSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjaGFuZ2VFbmRUaW1lSG91cihpbmNyZW1lbnQ6IGJvb2xlYW4pIHtcclxuICAgIGlmICghdGhpcy5lbmRUaW1lSG91ckVycikge1xyXG4gICAgICB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmluY3JlbWVudE9yRGVjcmVtZW50SG91cihpbmNyZW1lbnQsIHRoaXMuc2VsZWN0ZWRUb1RpbWUpO1xyXG4gICAgICB0aGlzLmVuZFRpbWVIb3VyQ2hhbmdlKHRoaXMuc2VsZWN0ZWRUb1RpbWVbMF0udG9TdHJpbmcoKSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjaGFuZ2VFbmRUaW1lTWludXRlKGluY3JlbWVudDogYm9vbGVhbikge1xyXG4gICAgaWYgKCF0aGlzLmVuZFRpbWVNaW5FcnIpIHtcclxuICAgICAgdGhpcy5hbm5hRmlsdGVyU2VydmljZS5pbmNyZW1lbnRPckRlY3JlbWVudE1pbihpbmNyZW1lbnQsIHRoaXMuc2VsZWN0ZWRUb1RpbWUpO1xyXG4gICAgICB0aGlzLmVuZFRpbWVNaW5DaGFuZ2UodGhpcy5zZWxlY3RlZFRvVGltZVsxXS50b1N0cmluZygpKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNoYW5nZVN0YXJ0VGltZU1pbnV0ZShpbmNyZW1lbnQ6IGJvb2xlYW4pIHtcclxuICAgIGlmICghdGhpcy5zdGFydFRpbWVNaW5FcnIpIHtcclxuICAgICAgdGhpcy5hbm5hRmlsdGVyU2VydmljZS5pbmNyZW1lbnRPckRlY3JlbWVudE1pbihpbmNyZW1lbnQsIHRoaXMuc2VsZWN0ZWRGcm9tVGltZSk7XHJcbiAgICAgIHRoaXMuc3RhcnRUaW1lTWluQ2hhbmdlKHRoaXMuc2VsZWN0ZWRGcm9tVGltZVsxXS50b1N0cmluZygpKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHN0YXJ0VGltZUhvdXJDaGFuZ2UodmFsOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuc3RhcnRUaW1lSG91ckVyciA9IHRoaXMuYW5uYUZpbHRlclNlcnZpY2UuaXNIb3VyVmFsdWVJbnZhbGlkKHZhbCk7XHJcbiAgICB0aGlzLmRpc2FibGVUaW1lRmlsdGVyQXBwbHlCdXR0b24oKTtcclxuICB9XHJcblxyXG4gIHN0YXJ0VGltZU1pbkNoYW5nZSh2YWw6IHN0cmluZykge1xyXG4gICAgdGhpcy5zdGFydFRpbWVNaW5FcnIgPSB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmlzTWludXRlVmFsdWVJbnZhbGlkKHZhbCk7XHJcbiAgICB0aGlzLmRpc2FibGVUaW1lRmlsdGVyQXBwbHlCdXR0b24oKTtcclxuICB9XHJcblxyXG4gIGVuZFRpbWVIb3VyQ2hhbmdlKHZhbDogc3RyaW5nKSB7XHJcbiAgICB0aGlzLmVuZFRpbWVIb3VyRXJyID0gdGhpcy5hbm5hRmlsdGVyU2VydmljZS5pc0hvdXJWYWx1ZUludmFsaWQodmFsKTtcclxuICAgIHRoaXMuZGlzYWJsZVRpbWVGaWx0ZXJBcHBseUJ1dHRvbigpO1xyXG4gIH1cclxuXHJcbiAgZW5kVGltZU1pbkNoYW5nZSh2YWw6IHN0cmluZykge1xyXG4gICAgdGhpcy5lbmRUaW1lTWluRXJyID0gdGhpcy5hbm5hRmlsdGVyU2VydmljZS5pc01pbnV0ZVZhbHVlSW52YWxpZCh2YWwpO1xyXG4gICAgdGhpcy5kaXNhYmxlVGltZUZpbHRlckFwcGx5QnV0dG9uKCk7XHJcbiAgfVxyXG5cclxuICBhcHBseVNvcnRpbmdPbkZpbHRlcmVkRGF0YSgpe1xyXG4gICAgaWYodGhpcy5zaG93U29ydENvbXBvbmVudCl7XHJcbiAgICAgIGlmKHRoaXMuaXNTb3J0Q2hhbmdlZCl7XHJcbiAgICAgICAgdGhpcy50YWJsZURhdGEgPSB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnVwZGF0ZVNvcnRNYXAodGhpcy50ZW1wU29ydE9yZGVyLCB0aGlzLnRhYmxlRGF0YSwgdGhpcy5pc0x1ckFuZENzckNvbXBvbmVudCk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSBpZih0aGlzLmlzRmlsdGVyQ2hhbmdlZCl7XHJcbiAgICAgICAgdGhpcy50YWJsZURhdGEgPSB0aGlzLmFubmFTb3J0U2VydmljZS5jaGVja0lmU29ydGluZ0lzQXBwbGllZCh0aGlzLnRhYmxlRGF0YSwgdGhpcy5pc0x1ckFuZENzckNvbXBvbmVudCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2UgaWYodGhpcy5pc0ZpbHRlckNoYW5nZWQpe1xyXG4gICAgICB0aGlzLnRhYmxlRGF0YSA9IHRoaXMuYW5uYVNvcnRTZXJ2aWNlLmNoZWNrSWZTb3J0aW5nSXNBcHBsaWVkKHRoaXMudGFibGVEYXRhLCB0aGlzLmlzTHVyQW5kQ3NyQ29tcG9uZW50KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGFwcGx5VGltZUZpbHRlck9uRGF0YSgpIHtcclxuICAgIGlmICh0aGlzLnNob3dGaWx0ZXJDb21wb25lbnQgJiYgdGhpcy5pc0ZpbHRlckNoYW5nZWQpIHtcclxuICAgICAgbGV0IGN1cnJlbnRTZWxlY3RlZFRpbWVGaWx0ZXIgPSB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmdldEN1cnJlbnRTZWxlY3RlZFRpbWVGaWx0ZXIodGhpcy5zZWxlY3RlZEZyb21UaW1lLCB0aGlzLnNlbGVjdGVkVG9UaW1lLCB0aGlzLm11bHRpVGltZUNoZWNrYm94Q2hlY2tlZCwgdGhpcy56ZXJvVGltZUNoZWNrYm94Q2hlY2tlZCwgdGhpcy5lbnRlclRpbWVDaGVja2JveENoZWNrZWQpO1xyXG4gXHJcbiAgICAgIGxldCBpc0ZpbHRlcmVkID0gdGhpcy5hbm5hRmlsdGVyU2VydmljZS5yZU9yZGVyQXBwbGllZEZpbHRlcnNTdGF0ZSh0aGlzLmNsb25lZFRhYmxlRGF0YSwgY3VycmVudFNlbGVjdGVkVGltZUZpbHRlcik7XHJcbiAgICAgIHRoaXMuYW5uYUZpbHRlclNlcnZpY2UudG9vbHRpcFNlbGVjdGVkTWFwLnNldCh0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnNlbGVjdGVkUmFkaW8sIGN1cnJlbnRTZWxlY3RlZFRpbWVGaWx0ZXIpO1xyXG4gICAgICB0aGlzLnRhYmxlRGF0YSA9IHRoaXMuYW5uYUZpbHRlclNlcnZpY2UuZmlsdGVyRGF0YSh0aGlzLmNsb25lZFRhYmxlRGF0YSwgXCJcIik7XHJcblxyXG4gICAgICBpZiAoIWlzRmlsdGVyZWQpIHtcclxuICAgICAgICB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnRvb2x0aXBTZWxlY3RlZE1hcC5kZWxldGUodGhpcy5hbm5hRmlsdGVyU2VydmljZS5zZWxlY3RlZFJhZGlvKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmFubmFTb3J0U2VydmljZS5ub1NvcnRpbmdBcHBsaWVkRGF0YSA9IGNsb25lRGVlcCh0aGlzLnRhYmxlRGF0YSk7XHJcblxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2xvc2VUaW1lRmlsdGVyKCkge1xyXG4gICAgdGhpcy5zZWxlY3RlZEZyb21UaW1lID0gY2xvbmVEZWVwKHRoaXMuY2xvbmVkU2VsZWN0ZWRGcm9tVGltZSk7XHJcbiAgICB0aGlzLnNlbGVjdGVkVG9UaW1lID0gY2xvbmVEZWVwKHRoaXMuY2xvbmVkU2VsZWN0ZWRUb1RpbWUpO1xyXG4gICAgdGhpcy5jbG9zZVRvb2x0aXAuZW1pdCgpO1xyXG4gIH1cclxuXHJcbiAgY2xlYXJDb2x1bW5GaWx0ZXIoKSB7XHJcbiAgICB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmNsZWFyQ29sdW1uRmlsdGVyKCk7XHJcbiAgICB0aGlzLnRhYmxlRGF0YSA9IGNsb25lRGVlcCh0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmZpbHRlckRhdGEodGhpcy5jbG9uZWRUYWJsZURhdGEsIFwiXCIpKTtcclxuICAgIHRoaXMuYW5uYVNvcnRTZXJ2aWNlLm5vU29ydGluZ0FwcGxpZWREYXRhID0gdGhpcy50YWJsZURhdGE7XHJcbiAgICB0aGlzLnRhYmxlRGF0YSA9IHRoaXMuYW5uYVNvcnRTZXJ2aWNlLmNoZWNrSWZTb3J0aW5nSXNBcHBsaWVkKHRoaXMudGFibGVEYXRhLCB0aGlzLmlzTHVyQW5kQ3NyQ29tcG9uZW50KTtcclxuICAgIHRoaXMuYW5uYUZpbHRlclNlcnZpY2UudXBkYXRlU3RhdGVPZlRoZUN1cnJlbnRGaWx0ZXJUYWIodGhpcy5hbm5hU29ydFNlcnZpY2UuY29sdW1uU29ydFN0YXRlKTtcclxuICAgIHRoaXMuZmlsdGVyQXBwbGllZFRvVGFibGUuZW1pdCh0aGlzLnRhYmxlRGF0YSk7XHJcbiAgfVxyXG5cclxuICBzdG9yZVNvcnRUeXBlSW5UZW1wVmFyaWFibGUoZXZlbnQ6IFNvcnRUeXBlKSB7XHJcbiAgICB0aGlzLnRlbXBTb3J0T3JkZXIgPSBldmVudDtcclxuICAgIHRoaXMuZGlzYWJsZVRpbWVGaWx0ZXJBcHBseUJ1dHRvbigpO1xyXG4gIH1cclxuXHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cInJhZGlvLWNvbnRhaW5lclwiICpuZ0lmPVwic2hvd0ZpbHRlckhlYWRlclRhYnNcIj5cclxuICAgIDxkaXYgKm5nRm9yPVwibGV0IGRhdGEgb2YgZmlsdGVyVGFiT2JqZWN0c1wiPlxyXG4gICAgICAgIDxwIGNsYXNzPVwiZmlsdGVyLXRhYlwiIFt0aXRsZV09XCJkYXRhLmxhYmVsXCIgKGNsaWNrKT1cInBvcHVsYXRlVG9vbHRpcERhdGFCYXNlZE9uU2VsZWN0ZWRSYWRpbyhkYXRhLCB0cnVlKVwiIFtuZ0NsYXNzXT1cInsnYWN0aXZlJzogYW5uYUZpbHRlclNlcnZpY2Uuc2VsZWN0ZWRSYWRpbyA9PSBkYXRhLmtleX1cIiAqbmdJZj1cImZpbHRlclRhYk9iamVjdHMubGVuZ3RoID4gMFwiPnt7IGRhdGEubGFiZWwgfX08L3A+XHJcbiAgICA8L2Rpdj5cclxuPC9kaXY+XHJcblxyXG48YW5uYS1jb3JlLXNvcnQtbGliICpuZ0lmPVwic2hvd1NvcnRDb21wb25lbnRcIiBbbmdDbGFzc109XCJ7J25vLWJvdHRvbS1ib3JkZXInOiAhc2hvd0ZpbHRlckNvbXBvbmVudH1cIlxyXG4oc29ydE9wdGlvbkNsaWNrZWQpPVwic3RvcmVTb3J0VHlwZUluVGVtcFZhcmlhYmxlKCRldmVudClcIiBbc29ydE9iamVjdEtleV09XCJhbm5hRmlsdGVyU2VydmljZS5zZWxlY3RlZFJhZGlvXCI+PC9hbm5hLWNvcmUtc29ydC1saWI+XHJcblxyXG48bmctY29udGFpbmVyICpuZ0lmPVwic2hvd0ZpbHRlckNvbXBvbmVudFwiPlxyXG4gICAgPGJ1dHRvbiBjbGFzcz1cImNvbHVtbi1jbGVhci1hbGxcIiAqbmdJZj1cInNob3dDbGVhckFsbEZpbHRlclwiICBbZGlzYWJsZWRdPVwiZGlzYWJsZUNvbHVtbkNsZWFyQWxsQnRuXCIgKGNsaWNrKT1cImNsZWFyQ29sdW1uRmlsdGVyKClcIj5DbGVhciBmaWx0ZXI8L2J1dHRvbj5cclxuICAgIDxkaXZcclxuICAgICAgICBjbGFzcz1cInRpbWUtZmlsdGVyLWNoZWNrYm94ZXNcIlxyXG4gICAgICAgICpuZ0lmPVwic2hvd0FsbFRpbWVSYW5nZUNoZWNrYm94ZXNcIlxyXG4gICAgPlxyXG4gICAgICAgIDwhLS0gTXVsdGkgdGltZSBvcHRpb24gY2hlY2tib3ggLS0+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIiBzdHlsZT1cInBhZGRpbmc6IDAuNXJlbSAwIDAuNXJlbSAwLjVyZW1cIiAqbmdJZj1cInNob3dNdWx0aVRpbWVDaGVja2JveFwiPlxyXG4gICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJtdWx0aVRpbWVDaGVja2JveENoZWNrZWRcIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJtYXRlcmlhbC1pY29ucyBjdXN0b20tY29sdW1uLWNoZWNrYm94LWNoZWNrZWRcIlxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdE9yVW5zZWxlY3RNdWx0aVRpbWVDaGVja2JveCgpXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgY2hlY2tfYm94XHJcbiAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICpuZ0lmPVwiIW11bHRpVGltZUNoZWNrYm94Q2hlY2tlZFwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cIm1hdGVyaWFsLWljb25zIGN1c3RvbS1jb2x1bW4tY2hlY2tib3gtdW5jaGVja2VkXCJcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RPclVuc2VsZWN0TXVsdGlUaW1lQ2hlY2tib3goKVwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIGNoZWNrX2JveF9vdXRsaW5lX2JsYW5rXHJcbiAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgPHAgc3R5bGU9XCJtYXJnaW4tbGVmdDogMnB4XCI+SW5jbHVkZSBNdWx0aTwvcD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8IS0tIFplcm8gdGltZSBvcHRpb24gY2hlY2tib3ggLS0+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIiBzdHlsZT1cInBhZGRpbmc6IDAuNXJlbSAwIDAuNXJlbSAwLjVyZW1cIiAqbmdJZj1cInNob3daZXJvVGltZUNoZWNrYm94XCI+XHJcbiAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAqbmdJZj1cInplcm9UaW1lQ2hlY2tib3hDaGVja2VkXCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwibWF0ZXJpYWwtaWNvbnMgY3VzdG9tLWNvbHVtbi1jaGVja2JveC1jaGVja2VkXCJcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RPclVuc2VsZWN0WmVyb1RpbWVDaGVja2JveCgpXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgY2hlY2tfYm94XHJcbiAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICpuZ0lmPVwiIXplcm9UaW1lQ2hlY2tib3hDaGVja2VkXCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwibWF0ZXJpYWwtaWNvbnMgY3VzdG9tLWNvbHVtbi1jaGVja2JveC11bmNoZWNrZWRcIlxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdE9yVW5zZWxlY3RaZXJvVGltZUNoZWNrYm94KClcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICBjaGVja19ib3hfb3V0bGluZV9ibGFua1xyXG4gICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgIDxwIHN0eWxlPVwibWFyZ2luLWxlZnQ6IDJweFwiPkluY2x1ZGUgWmVybzwvcD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8IS0tIEVudGVyIHRpbWUgcmFuZ2Ugb3B0aW9uIGNoZWNrYm94IC0tPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCIgc3R5bGU9XCJwYWRkaW5nOiAwLjVyZW0gMCAwLjVyZW0gMC41cmVtXCIgKm5nSWY9XCJzaG93RW50ZXJUaW1lQ2hlY2tib3hcIj5cclxuICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICpuZ0lmPVwiZW50ZXJUaW1lQ2hlY2tib3hDaGVja2VkXCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwibWF0ZXJpYWwtaWNvbnMgY3VzdG9tLWNvbHVtbi1jaGVja2JveC1jaGVja2VkXCJcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RPclVuc2VsZWN0RW50ZXJUaW1lQ2hlY2tib3goKVwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIGNoZWNrX2JveFxyXG4gICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAqbmdJZj1cIiFlbnRlclRpbWVDaGVja2JveENoZWNrZWRcIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJtYXRlcmlhbC1pY29ucyBjdXN0b20tY29sdW1uLWNoZWNrYm94LXVuY2hlY2tlZFwiXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0T3JVbnNlbGVjdEVudGVyVGltZUNoZWNrYm94KClcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICBjaGVja19ib3hfb3V0bGluZV9ibGFua1xyXG4gICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgIDxwIHN0eWxlPVwibWFyZ2luLWxlZnQ6IDJweFwiPkVudGVyIHRpbWUgcmFuZ2U8L3A+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJ0aW1lLWxhYmVsLWNvbnRhaW5lclwiPlxyXG4gICAgICAgIDxsYWJlbD57e3N0YXJ0RnJvbVRleHR9fTwvbGFiZWw+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJ0aW1lLWNvbnRhaW5lclwiPlxyXG4gICAgICAgIDxpbnB1dCBjbGFzcz1cImZvcm0tY29udHJvbCBudW1iZXJJbnB1dFwiIFtuZ0NsYXNzXT1cInsnZXJyb3ItYm9yZGVyJzogc3RhcnRUaW1lSG91ckVycn1cIiBbKG5nTW9kZWwpXT1cInNlbGVjdGVkRnJvbVRpbWVbMF1cIiB0eXBlPVwidGV4dFwiIHBhdHRlcm49XCJbMS0xMl0qXCIgKG5nTW9kZWxDaGFuZ2UpPVwic3RhcnRUaW1lSG91ckNoYW5nZSgkZXZlbnQpXCIgLz5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiYXJyb3ctY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgIDxpIGNsYXNzPVwibWRpIG1kaS1tZW51LXVwIHVwd2FyZFwiIChjbGljayk9XCJjaGFuZ2VTdGFydFRpbWVIb3VyKHRydWUpXCI+PC9pPlxyXG4gICAgICAgICAgICA8aSBjbGFzcz1cIm1kaSBtZGktbWVudS1kb3duIGRvd253YXJkXCIgKGNsaWNrKT1cImNoYW5nZVN0YXJ0VGltZUhvdXIoZmFsc2UpXCI+PC9pPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwiZG90XCI+Ojwvc3Bhbj5cclxuICAgICAgICA8aW5wdXQgY2xhc3M9XCJmb3JtLWNvbnRyb2wgbnVtYmVySW5wdXRcIiBbbmdDbGFzc109XCJ7J2Vycm9yLWJvcmRlcic6IHN0YXJ0VGltZU1pbkVycn1cIiBbKG5nTW9kZWwpXT1cInNlbGVjdGVkRnJvbVRpbWVbMV1cIiB0eXBlPVwidGV4dFwiIHBhdHRlcm49XCJbMC01OV0qXCIgKG5nTW9kZWxDaGFuZ2UpPVwic3RhcnRUaW1lTWluQ2hhbmdlKCRldmVudClcIi8+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImFycm93LWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICA8aSBjbGFzcz1cIm1kaSBtZGktbWVudS11cCB1cHdhcmRcIiAoY2xpY2spPVwiY2hhbmdlU3RhcnRUaW1lTWludXRlKHRydWUpXCI+PC9pPlxyXG4gICAgICAgICAgICA8aSBjbGFzcz1cIm1kaSBtZGktbWVudS1kb3duIGRvd253YXJkXCIgc3R5bGU9XCJwb3NpdGlvbjogcmVsYXRpdmU7bGVmdDogLjI1cHg7XCIgKGNsaWNrKT1cImNoYW5nZVN0YXJ0VGltZU1pbnV0ZShmYWxzZSlcIj48L2k+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgPG1hdC1idXR0b24tdG9nZ2xlLWdyb3VwIFsobmdNb2RlbCldPVwic2VsZWN0ZWRGcm9tVGltZVsyXVwiIChuZ01vZGVsQ2hhbmdlKT1cImRpc2FibGVUaW1lRmlsdGVyQXBwbHlCdXR0b24oKVwiPlxyXG4gICAgICAgICAgICAgICAgPG1hdC1idXR0b24tdG9nZ2xlIHZhbHVlPVwiQU1cIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3Bhbj5BTTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvbWF0LWJ1dHRvbi10b2dnbGU+XHJcbiAgICAgICAgICAgICAgICA8bWF0LWJ1dHRvbi10b2dnbGUgdmFsdWU9XCJQTVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuPlBNPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9tYXQtYnV0dG9uLXRvZ2dsZT5cclxuICAgICAgICAgICAgPC9tYXQtYnV0dG9uLXRvZ2dsZS1ncm91cD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJ0aW1lLWxhYmVsLWNvbnRhaW5lclwiPlxyXG4gICAgICAgIDxsYWJlbD57e2VuZFRvVGV4dH19PC9sYWJlbD5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cInRpbWUtY29udGFpbmVyXCI+XHJcbiAgICAgICAgPGlucHV0IGNsYXNzPVwiZm9ybS1jb250cm9sIG51bWJlcklucHV0XCIgWyhuZ01vZGVsKV09XCJzZWxlY3RlZFRvVGltZVswXVwiIFtuZ0NsYXNzXT1cInsnZXJyb3ItYm9yZGVyJzogZW5kVGltZUhvdXJFcnJ9XCIgKG5nTW9kZWxDaGFuZ2UpPVwiZW5kVGltZUhvdXJDaGFuZ2UoJGV2ZW50KVwiIHR5cGU9XCJ0ZXh0XCJwYXR0ZXJuPVwiWzEtMTJdKlwiIC8+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImFycm93LWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICA8aSBjbGFzcz1cIm1kaSBtZGktbWVudS11cCB1cHdhcmRcIiAoY2xpY2spPVwiY2hhbmdlRW5kVGltZUhvdXIodHJ1ZSlcIj48L2k+XHJcbiAgICAgICAgICAgIDxpIGNsYXNzPVwibWRpIG1kaS1tZW51LWRvd24gZG93bndhcmRcIiAoY2xpY2spPVwiY2hhbmdlRW5kVGltZUhvdXIoZmFsc2UpXCI+PC9pPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwiZG90XCI+Ojwvc3Bhbj5cclxuICAgICAgICA8aW5wdXQgY2xhc3M9XCJmb3JtLWNvbnRyb2wgbnVtYmVySW5wdXRcIiBbbmdDbGFzc109XCJ7J2Vycm9yLWJvcmRlcic6IGVuZFRpbWVNaW5FcnJ9XCIgWyhuZ01vZGVsKV09XCJzZWxlY3RlZFRvVGltZVsxXVwiIChuZ01vZGVsQ2hhbmdlKT1cImVuZFRpbWVNaW5DaGFuZ2UoJGV2ZW50KVwiIHR5cGU9XCJ0ZXh0XCJwYXR0ZXJuPVwiWzAtNTldKlwiIC8+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImFycm93LWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICA8aSBjbGFzcz1cIm1kaSBtZGktbWVudS11cCB1cHdhcmRcIiAoY2xpY2spPVwiY2hhbmdlRW5kVGltZU1pbnV0ZSh0cnVlKVwiPjwvaT5cclxuICAgICAgICAgICAgPGkgY2xhc3M9XCJtZGkgbWRpLW1lbnUtZG93biBkb3dud2FyZFwiIHN0eWxlPVwicG9zaXRpb246IHJlbGF0aXZlO2xlZnQ6IC4yNXB4O1wiIChjbGljayk9XCJjaGFuZ2VFbmRUaW1lTWludXRlKGZhbHNlKVwiPjwvaT5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICA8bWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXAgWyhuZ01vZGVsKV09XCJzZWxlY3RlZFRvVGltZVsyXVwiIChuZ01vZGVsQ2hhbmdlKT1cImRpc2FibGVUaW1lRmlsdGVyQXBwbHlCdXR0b24oKVwiPlxyXG4gICAgICAgICAgICAgICAgPG1hdC1idXR0b24tdG9nZ2xlIHZhbHVlPVwiQU1cIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3Bhbj5BTTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvbWF0LWJ1dHRvbi10b2dnbGU+XHJcbiAgICAgICAgICAgICAgICA8bWF0LWJ1dHRvbi10b2dnbGUgdmFsdWU9XCJQTVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuPlBNPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9tYXQtYnV0dG9uLXRvZ2dsZT5cclxuICAgICAgICAgICAgPC9tYXQtYnV0dG9uLXRvZ2dsZS1ncm91cD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG48L25nLWNvbnRhaW5lcj5cclxuXHJcbjxkaXYgY2xhc3M9XCJidXR0b25zLWNvbnRhaW5lclwiPlxyXG4gICAgPGJ1dHRvbiBjbGFzcz1cImJ1dHRvblwiIChjbGljayk9XCJjbG9zZVRpbWVGaWx0ZXIoKVwiPkNhbmNlbDwvYnV0dG9uPlxyXG4gICAgPGJ1dHRvblxyXG4gICAgICAgIGNsYXNzPVwiYnV0dG9uXCJcclxuICAgICAgICBbbmdDbGFzc109XCJ7IGRpc2FibGVkOiBkaXNhYmxlVGltZUZpbHRlckFwcGx5QnRuIH1cIlxyXG4gICAgICAgIChjbGljayk9XCJhcHBseVRpbWVGaWx0ZXJzKClcIlxyXG4gICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlVGltZUZpbHRlckFwcGx5QnRuXCJcclxuICAgID5cclxuICAgICAgICBBcHBseVxyXG4gICAgPC9idXR0b24+XHJcbjwvZGl2PiJdfQ==
1
+ import { Component, EventEmitter, Input, Output } from '@angular/core';
2
+ import { cloneDeep, isEqual } from "lodash-es";
3
+ import { AnnaSortService } from '../../../../anna-core-shared-lib/services/anna-sort.service';
4
+ import { AnnaFilterService } from '../../../../anna-core-shared-lib/services/anna-filter.service';
5
+ import { AnnaDateTimeFormatService } from '../../../../anna-core-shared-lib/services/anna-date-time-format.service';
6
+ import * as i0 from "@angular/core";
7
+ import * as i1 from "../../../../anna-core-shared-lib/services/anna-sort.service";
8
+ import * as i2 from "../../../../anna-core-shared-lib/services/anna-date-time-format.service";
9
+ import * as i3 from "../../../../anna-core-shared-lib/services/anna-filter.service";
10
+ import * as i4 from "@angular/common";
11
+ import * as i5 from "@angular/forms";
12
+ import * as i6 from "@angular/material/button-toggle";
13
+ import * as i7 from "../../anna-sort/anna-sort.component";
14
+ export class AnnaColumnTimeFilterComponent {
15
+ constructor(annaSortService, annaDateTimeFormatService, annaFilterService) {
16
+ this.annaSortService = annaSortService;
17
+ this.annaDateTimeFormatService = annaDateTimeFormatService;
18
+ this.annaFilterService = annaFilterService;
19
+ this.showClearAllFilter = true;
20
+ this.startFromText = "From";
21
+ this.endToText = "To";
22
+ this.isSortAndFilterAbsent = false;
23
+ this.timeChanges = new EventEmitter();
24
+ this.filterAppliedToTable = new EventEmitter();
25
+ this.sortingAppliedToTable = new EventEmitter();
26
+ this.getSortType = new EventEmitter();
27
+ this.closeTooltip = new EventEmitter();
28
+ this.tempSortOrder = null;
29
+ this.showSortComponent = false;
30
+ this.showFilterComponent = false;
31
+ this.disableColumnClearAllBtn = true;
32
+ this.tableColumns = [];
33
+ this.totalRowColumns = null;
34
+ }
35
+ ngOnInit() {
36
+ this.populateTooltipDataBasedOnSelectedRadio(this.filterTabObjects[0], false);
37
+ }
38
+ populateTooltipDataBasedOnSelectedRadio(activeTab, reload) {
39
+ let header = activeTab.key;
40
+ this.showSortComponent = activeTab.isSortRequired;
41
+ this.showFilterComponent = activeTab.isFilterRequired;
42
+ this.tempSortOrder = null;
43
+ this.isFilterChanged = false;
44
+ this.isSortChanged = false;
45
+ this.annaFilterService.selectedRadio = header;
46
+ this.disableColumnClearAllBtn = this.annaFilterService.disableActiveFilterClearButton();
47
+ if (reload) {
48
+ setTimeout(() => {
49
+ this.createFilterTooltipData(activeTab, header);
50
+ }, 100);
51
+ }
52
+ else {
53
+ this.createFilterTooltipData(activeTab, header);
54
+ }
55
+ }
56
+ createFilterTooltipData(activeTab, header) {
57
+ this.showSortComponent = activeTab.isSortRequired;
58
+ this.showFilterComponent = activeTab.isFilterRequired;
59
+ this.disableTimeFilterApplyBtn = true;
60
+ if (this.showFilterComponent) {
61
+ this.getTimeFilterData(header);
62
+ }
63
+ }
64
+ getTimeFilterData(header) {
65
+ this.startTimeHourErr = this.startTimeMinErr = this.endTimeHourErr = this.endTimeMinErr = false;
66
+ if (this.isSortAndFilterAbsent) {
67
+ this.selectedFromTime = this.clonedTableData[0].time;
68
+ this.selectedToTime = this.clonedTableData[1].time;
69
+ this.selectedFromTime = AnnaDateTimeFormatService.formatToTwelveHrs(this.selectedFromTime, true);
70
+ this.selectedToTime = AnnaDateTimeFormatService.formatToTwelveHrs(this.selectedToTime, true);
71
+ }
72
+ else {
73
+ [this.selectedFromTime, this.selectedToTime] = this.annaFilterService.getSelectedTimeRange(header, this.clonedTableData);
74
+ }
75
+ this.clonedSelectedFromTime = cloneDeep(this.selectedFromTime);
76
+ this.clonedSelectedToTime = cloneDeep(this.selectedToTime);
77
+ let optionsData = this.annaFilterService?.getFilterOptionsData(this.tableData, this.clonedTableData);
78
+ let checkedSelectedObj = this.annaFilterService?.selectUnselectTimeFilterCheckbox(header, optionsData);
79
+ this.showMultiTimeCheckbox = checkedSelectedObj.showMultiTimeCheckbox;
80
+ this.showZeroTimeCheckbox = checkedSelectedObj.showZeroTimeCheckbox;
81
+ this.showEnterTimeCheckbox = checkedSelectedObj.showEnterTimeCheckbox;
82
+ this.multiTimeCheckboxChecked = checkedSelectedObj.multiTimeCheckboxChecked;
83
+ this.zeroTimeCheckboxChecked = checkedSelectedObj.zeroTimeCheckboxChecked;
84
+ this.enterTimeCheckboxChecked = checkedSelectedObj.enterTimeCheckboxChecked;
85
+ }
86
+ selectOrUnselectMultiTimeCheckbox() {
87
+ this.multiTimeCheckboxChecked = !this.multiTimeCheckboxChecked;
88
+ this.disableTimeFilterApplyButton();
89
+ }
90
+ selectOrUnselectZeroTimeCheckbox() {
91
+ this.zeroTimeCheckboxChecked = !this.zeroTimeCheckboxChecked;
92
+ this.disableTimeFilterApplyButton();
93
+ }
94
+ selectOrUnselectEnterTimeCheckbox() {
95
+ this.enterTimeCheckboxChecked = !this.enterTimeCheckboxChecked;
96
+ this.disableTimeFilterApplyButton();
97
+ }
98
+ checkIfTimeTooltipIsFiltered() {
99
+ let previousSelectedTimeFilter = this.annaFilterService.getPreviousSelectedTimeFilter();
100
+ let currentSelectedTimeFilter = this.annaFilterService.getCurrentSelectedTimeFilter(this.selectedFromTime, this.selectedToTime, this.multiTimeCheckboxChecked, this.zeroTimeCheckboxChecked, this.enterTimeCheckboxChecked);
101
+ this.isFilterChanged = !isEqual(previousSelectedTimeFilter, currentSelectedTimeFilter);
102
+ return this.isFilterChanged;
103
+ }
104
+ checkIfInvalidTimeIsEntered() {
105
+ if (this.startTimeHourErr || this.startTimeMinErr || this.endTimeHourErr || this.endTimeMinErr) {
106
+ return true;
107
+ }
108
+ else {
109
+ return false;
110
+ }
111
+ }
112
+ disableTimeFilterApplyButton() {
113
+ if (this.isSortAndFilterAbsent) {
114
+ this.disableTimeFilterApplyBtn = this.checkIfInvalidTimeIsEntered() || !this.checkIfTimeTooltipIsFiltered();
115
+ }
116
+ else {
117
+ if (this.showFilterComponent && this.showSortComponent) {
118
+ let isFilterChanged = this.checkIfTimeTooltipIsFiltered();
119
+ let isSortChanged = this.checkIfSortingChanged();
120
+ this.disableTimeFilterApplyBtn = !this.validateTimeFilterInput() || (!isSortChanged && !isFilterChanged);
121
+ }
122
+ else if (this.showFilterComponent) {
123
+ this.disableTimeFilterApplyBtn = !this.validateTimeFilterInput() || !this.checkIfTimeTooltipIsFiltered();
124
+ }
125
+ else if (this.showSortComponent) {
126
+ this.disableTimeFilterApplyBtn = !this.checkIfSortingChanged();
127
+ }
128
+ }
129
+ }
130
+ checkIfSortingChanged() {
131
+ this.isSortChanged = this.annaFilterService.checkIfSortingChanged(this.tempSortOrder);
132
+ return this.isSortChanged;
133
+ }
134
+ validateTimeFilterInput() {
135
+ if (this.startTimeHourErr || this.startTimeMinErr || this.endTimeHourErr || this.endTimeMinErr) {
136
+ return false;
137
+ }
138
+ if ((this.showMultiTimeCheckbox && !this.multiTimeCheckboxChecked) &&
139
+ (this.showZeroTimeCheckbox && !this.zeroTimeCheckboxChecked) &&
140
+ (this.showEnterTimeCheckbox && !this.enterTimeCheckboxChecked)) {
141
+ return false;
142
+ }
143
+ return !this.annaFilterService.checkIfStartTimeIsAfterEndTime(this.selectedFromTime, this.selectedToTime);
144
+ }
145
+ applyTimeFilters() {
146
+ if (this.isSortAndFilterAbsent) {
147
+ let timeSelected = [this.selectedFromTime, this.selectedToTime];
148
+ this.timeChanges.emit(timeSelected);
149
+ }
150
+ else {
151
+ this.applyTimeFilterOnData();
152
+ this.applySortingOnFilteredData();
153
+ this.annaFilterService.updateStateOfAllTheKeys(this.annaSortService.columnSortState);
154
+ this.emitData();
155
+ }
156
+ this.closeTooltip.emit();
157
+ }
158
+ emitData() {
159
+ if (this.isFilterChanged && this.isSortChanged) {
160
+ this.filterAppliedToTable.emit(this.tableData);
161
+ }
162
+ else if (this.isFilterChanged) {
163
+ this.filterAppliedToTable.emit(this.tableData);
164
+ }
165
+ else if (this.isSortChanged) {
166
+ this.getSortType.emit(this.tempSortOrder);
167
+ this.sortingAppliedToTable.emit(this.tableData);
168
+ }
169
+ }
170
+ changeStartTimeHour(increment) {
171
+ if (!this.startTimeHourErr) {
172
+ this.annaFilterService.incrementOrDecrementHour(increment, this.selectedFromTime);
173
+ this.startTimeHourChange(this.selectedFromTime[0].toString());
174
+ }
175
+ }
176
+ changeEndTimeHour(increment) {
177
+ if (!this.endTimeHourErr) {
178
+ this.annaFilterService.incrementOrDecrementHour(increment, this.selectedToTime);
179
+ this.endTimeHourChange(this.selectedToTime[0].toString());
180
+ }
181
+ }
182
+ changeEndTimeMinute(increment) {
183
+ if (!this.endTimeMinErr) {
184
+ this.annaFilterService.incrementOrDecrementMin(increment, this.selectedToTime);
185
+ this.endTimeMinChange(this.selectedToTime[1].toString());
186
+ }
187
+ }
188
+ changeStartTimeMinute(increment) {
189
+ if (!this.startTimeMinErr) {
190
+ this.annaFilterService.incrementOrDecrementMin(increment, this.selectedFromTime);
191
+ this.startTimeMinChange(this.selectedFromTime[1].toString());
192
+ }
193
+ }
194
+ startTimeHourChange(val) {
195
+ this.startTimeHourErr = this.annaFilterService.isHourValueInvalid(val);
196
+ this.disableTimeFilterApplyButton();
197
+ }
198
+ startTimeMinChange(val) {
199
+ this.startTimeMinErr = this.annaFilterService.isMinuteValueInvalid(val);
200
+ this.disableTimeFilterApplyButton();
201
+ }
202
+ endTimeHourChange(val) {
203
+ this.endTimeHourErr = this.annaFilterService.isHourValueInvalid(val);
204
+ this.disableTimeFilterApplyButton();
205
+ }
206
+ endTimeMinChange(val) {
207
+ this.endTimeMinErr = this.annaFilterService.isMinuteValueInvalid(val);
208
+ this.disableTimeFilterApplyButton();
209
+ }
210
+ applySortingOnFilteredData() {
211
+ if (this.showSortComponent) {
212
+ if (this.isSortChanged) {
213
+ this.tableData = this.annaFilterService.updateSortMap(this.tempSortOrder, this.tableData, this.isLurAndCsrComponent);
214
+ }
215
+ else if (this.isFilterChanged) {
216
+ this.tableData = this.annaSortService.checkIfSortingIsApplied(this.tableData, this.isLurAndCsrComponent);
217
+ }
218
+ }
219
+ else if (this.isFilterChanged) {
220
+ this.tableData = this.annaSortService.checkIfSortingIsApplied(this.tableData, this.isLurAndCsrComponent);
221
+ }
222
+ }
223
+ applyTimeFilterOnData() {
224
+ if (this.showFilterComponent && this.isFilterChanged) {
225
+ let currentSelectedTimeFilter = this.annaFilterService.getCurrentSelectedTimeFilter(this.selectedFromTime, this.selectedToTime, this.multiTimeCheckboxChecked, this.zeroTimeCheckboxChecked, this.enterTimeCheckboxChecked);
226
+ let isFiltered = this.annaFilterService.reOrderAppliedFiltersState(this.clonedTableData, currentSelectedTimeFilter);
227
+ this.annaFilterService.tooltipSelectedMap.set(this.annaFilterService.selectedRadio, currentSelectedTimeFilter);
228
+ this.tableData = this.annaFilterService.filterData(this.clonedTableData, "");
229
+ if (!isFiltered) {
230
+ this.annaFilterService.tooltipSelectedMap.delete(this.annaFilterService.selectedRadio);
231
+ }
232
+ this.annaSortService.noSortingAppliedData = cloneDeep(this.tableData);
233
+ }
234
+ }
235
+ closeTimeFilter() {
236
+ this.selectedFromTime = cloneDeep(this.clonedSelectedFromTime);
237
+ this.selectedToTime = cloneDeep(this.clonedSelectedToTime);
238
+ this.closeTooltip.emit();
239
+ }
240
+ clearColumnFilter() {
241
+ this.annaFilterService.clearColumnFilter();
242
+ this.tableData = cloneDeep(this.annaFilterService.filterData(this.clonedTableData, ""));
243
+ this.annaSortService.noSortingAppliedData = this.tableData;
244
+ this.tableData = this.annaSortService.checkIfSortingIsApplied(this.tableData, this.isLurAndCsrComponent);
245
+ this.annaFilterService.updateStateOfTheCurrentFilterTab(this.annaSortService.columnSortState);
246
+ this.filterAppliedToTable.emit(this.tableData);
247
+ }
248
+ storeSortTypeInTempVariable(event) {
249
+ this.tempSortOrder = event;
250
+ this.disableTimeFilterApplyButton();
251
+ }
252
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AnnaColumnTimeFilterComponent, deps: [{ token: i1.AnnaSortService }, { token: i2.AnnaDateTimeFormatService }, { token: i3.AnnaFilterService }], target: i0.ɵɵFactoryTarget.Component }); }
253
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: AnnaColumnTimeFilterComponent, selector: "anna-core-anna-column-time-filter", inputs: { tableData: "tableData", clonedTableData: "clonedTableData", filterTabObjects: "filterTabObjects", showFilterHeaderTabs: "showFilterHeaderTabs", showAllTimeRangeCheckboxes: "showAllTimeRangeCheckboxes", isLurAndCsrComponent: "isLurAndCsrComponent", gtGeneralConfig: "gtGeneralConfig", showClearAllFilter: "showClearAllFilter", startFromText: "startFromText", endToText: "endToText", isSortAndFilterAbsent: "isSortAndFilterAbsent" }, outputs: { timeChanges: "timeChanges", filterAppliedToTable: "filterAppliedToTable", sortingAppliedToTable: "sortingAppliedToTable", getSortType: "getSortType", closeTooltip: "closeTooltip" }, ngImport: i0, template: "<div class=\"radio-container\" *ngIf=\"showFilterHeaderTabs\">\r\n <div *ngFor=\"let data of filterTabObjects\">\r\n <p class=\"filter-tab\" [title]=\"data.label\" (click)=\"populateTooltipDataBasedOnSelectedRadio(data, true)\" [ngClass]=\"{'active': annaFilterService.selectedRadio == data.key}\" *ngIf=\"filterTabObjects.length > 0\">{{ data.label }}</p>\r\n </div>\r\n</div>\r\n\r\n<anna-core-sort-lib *ngIf=\"showSortComponent\" [ngClass]=\"{'no-bottom-border': !showFilterComponent}\"\r\n(sortOptionClicked)=\"storeSortTypeInTempVariable($event)\" [sortObjectKey]=\"annaFilterService.selectedRadio\"></anna-core-sort-lib>\r\n\r\n<ng-container *ngIf=\"showFilterComponent\">\r\n <button class=\"column-clear-all\" *ngIf=\"showClearAllFilter\" [disabled]=\"disableColumnClearAllBtn\" (click)=\"clearColumnFilter()\">Clear filter</button>\r\n <div\r\n class=\"time-filter-checkboxes\"\r\n *ngIf=\"showAllTimeRangeCheckboxes\"\r\n >\r\n <!-- Multi time option checkbox -->\r\n <div class=\"d-flex align-items-center\" style=\"padding: 0.5rem 0 0.5rem 0.5rem\" *ngIf=\"showMultiTimeCheckbox\">\r\n <span\r\n *ngIf=\"multiTimeCheckboxChecked\"\r\n class=\"material-icons custom-column-checkbox-checked\"\r\n (click)=\"selectOrUnselectMultiTimeCheckbox()\"\r\n >\r\n check_box\r\n </span>\r\n <span\r\n *ngIf=\"!multiTimeCheckboxChecked\"\r\n class=\"material-icons custom-column-checkbox-unchecked\"\r\n (click)=\"selectOrUnselectMultiTimeCheckbox()\"\r\n >\r\n check_box_outline_blank\r\n </span>\r\n <p style=\"margin-left: 2px\">Include Multi</p>\r\n </div>\r\n <!-- Zero time option checkbox -->\r\n <div class=\"d-flex align-items-center\" style=\"padding: 0.5rem 0 0.5rem 0.5rem\" *ngIf=\"showZeroTimeCheckbox\">\r\n <span\r\n *ngIf=\"zeroTimeCheckboxChecked\"\r\n class=\"material-icons custom-column-checkbox-checked\"\r\n (click)=\"selectOrUnselectZeroTimeCheckbox()\"\r\n >\r\n check_box\r\n </span>\r\n <span\r\n *ngIf=\"!zeroTimeCheckboxChecked\"\r\n class=\"material-icons custom-column-checkbox-unchecked\"\r\n (click)=\"selectOrUnselectZeroTimeCheckbox()\"\r\n >\r\n check_box_outline_blank\r\n </span>\r\n <p style=\"margin-left: 2px\">Include Zero</p>\r\n </div>\r\n <!-- Enter time range option checkbox -->\r\n <div class=\"d-flex align-items-center\" style=\"padding: 0.5rem 0 0.5rem 0.5rem\" *ngIf=\"showEnterTimeCheckbox\">\r\n <span\r\n *ngIf=\"enterTimeCheckboxChecked\"\r\n class=\"material-icons custom-column-checkbox-checked\"\r\n (click)=\"selectOrUnselectEnterTimeCheckbox()\"\r\n >\r\n check_box\r\n </span>\r\n <span\r\n *ngIf=\"!enterTimeCheckboxChecked\"\r\n class=\"material-icons custom-column-checkbox-unchecked\"\r\n (click)=\"selectOrUnselectEnterTimeCheckbox()\"\r\n >\r\n check_box_outline_blank\r\n </span>\r\n <p style=\"margin-left: 2px\">Enter time range</p>\r\n </div>\r\n </div>\r\n <div class=\"time-label-container\">\r\n <label>{{startFromText}}</label>\r\n </div>\r\n <div class=\"time-container\">\r\n <input class=\"form-control numberInput\" [ngClass]=\"{'error-border': startTimeHourErr}\" [(ngModel)]=\"selectedFromTime[0]\" type=\"text\" pattern=\"[1-12]*\" (ngModelChange)=\"startTimeHourChange($event)\" />\r\n <div class=\"arrow-container\">\r\n <i class=\"mdi mdi-menu-up upward\" (click)=\"changeStartTimeHour(true)\"></i>\r\n <i class=\"mdi mdi-menu-down downward\" (click)=\"changeStartTimeHour(false)\"></i>\r\n </div>\r\n <span class=\"dot\">:</span>\r\n <input class=\"form-control numberInput\" [ngClass]=\"{'error-border': startTimeMinErr}\" [(ngModel)]=\"selectedFromTime[1]\" type=\"text\" pattern=\"[0-59]*\" (ngModelChange)=\"startTimeMinChange($event)\"/>\r\n <div class=\"arrow-container\">\r\n <i class=\"mdi mdi-menu-up upward\" (click)=\"changeStartTimeMinute(true)\"></i>\r\n <i class=\"mdi mdi-menu-down downward\" style=\"position: relative;left: .25px;\" (click)=\"changeStartTimeMinute(false)\"></i>\r\n </div>\r\n <div>\r\n <mat-button-toggle-group [(ngModel)]=\"selectedFromTime[2]\" (ngModelChange)=\"disableTimeFilterApplyButton()\">\r\n <mat-button-toggle value=\"AM\">\r\n <span>AM</span>\r\n </mat-button-toggle>\r\n <mat-button-toggle value=\"PM\">\r\n <span>PM</span>\r\n </mat-button-toggle>\r\n </mat-button-toggle-group>\r\n </div>\r\n </div>\r\n\r\n <div class=\"time-label-container\">\r\n <label>{{endToText}}</label>\r\n </div>\r\n <div class=\"time-container\">\r\n <input class=\"form-control numberInput\" [(ngModel)]=\"selectedToTime[0]\" [ngClass]=\"{'error-border': endTimeHourErr}\" (ngModelChange)=\"endTimeHourChange($event)\" type=\"text\"pattern=\"[1-12]*\" />\r\n <div class=\"arrow-container\">\r\n <i class=\"mdi mdi-menu-up upward\" (click)=\"changeEndTimeHour(true)\"></i>\r\n <i class=\"mdi mdi-menu-down downward\" (click)=\"changeEndTimeHour(false)\"></i>\r\n </div>\r\n <span class=\"dot\">:</span>\r\n <input class=\"form-control numberInput\" [ngClass]=\"{'error-border': endTimeMinErr}\" [(ngModel)]=\"selectedToTime[1]\" (ngModelChange)=\"endTimeMinChange($event)\" type=\"text\"pattern=\"[0-59]*\" />\r\n <div class=\"arrow-container\">\r\n <i class=\"mdi mdi-menu-up upward\" (click)=\"changeEndTimeMinute(true)\"></i>\r\n <i class=\"mdi mdi-menu-down downward\" style=\"position: relative;left: .25px;\" (click)=\"changeEndTimeMinute(false)\"></i>\r\n </div>\r\n <div>\r\n <mat-button-toggle-group [(ngModel)]=\"selectedToTime[2]\" (ngModelChange)=\"disableTimeFilterApplyButton()\">\r\n <mat-button-toggle value=\"AM\">\r\n <span>AM</span>\r\n </mat-button-toggle>\r\n <mat-button-toggle value=\"PM\">\r\n <span>PM</span>\r\n </mat-button-toggle>\r\n </mat-button-toggle-group>\r\n </div>\r\n </div>\r\n</ng-container>\r\n\r\n<div class=\"buttons-container\">\r\n <button class=\"button\" (click)=\"closeTimeFilter()\">Cancel</button>\r\n <button\r\n class=\"button\"\r\n [ngClass]=\"{ disabled: disableTimeFilterApplyBtn }\"\r\n (click)=\"applyTimeFilters()\"\r\n [disabled]=\"disableTimeFilterApplyBtn\"\r\n >\r\n Apply\r\n </button>\r\n</div>", styles: [":host ::ng-deep .mat-button-toggle-appearance-standard .mat-button-toggle-label-content{line-height:30px;width:42px;padding:0 10px}:host ::ng-deep .mat-button-toggle-checked{background-color:#268bff;color:#fff!important}:host ::ng-deep .mat-button-toggle-group-appearance-standard{border-radius:0;border:none!important}::ng-deep .mat-button-toggle-disabled.mat-button-toggle-checked{background:#bdbdbd!important}::ng-deep .mat-button-toggle-disabled.mat-button-toggle-checked button{color:#fff;opacity:1}::ng-deep .mat-button-toggle-appearance-standard{opacity:.5;border:solid 1px #b3b3b3}::ng-deep .mat-button-toggle-appearance-standard button{opacity:1}::ng-deep .mat-button-toggle-appearance-standard.mat-button-toggle-checked{opacity:1}.sort-btn{background:#fff;border:none;border-right:1px solid #1b88ff;text-decoration:underline;font-family:Roboto;font-size:14px;font-weight:400;font-stretch:normal;font-style:normal;line-height:1.07;letter-spacing:normal;color:#1b88ff;cursor:pointer;flex:1;text-align:center}.sort-btn:last-of-type{border-right:none}.sort-btn.active{color:#202b47;text-decoration:none}p.sort-container{margin-top:8px;padding-bottom:8px;border-bottom:1px solid #e6e6e6;margin-bottom:0;display:flex}::ng-deep .tooltip-inner{max-height:22rem;background-color:#fff;border:1px solid white;border-radius:5px;box-shadow:0 2px 2px #0000003d,0 0 2px #0000001f;max-width:251px;width:100%;padding:0!important}::ng-deep .tooltip-inner div.radio-container{flex-wrap:wrap}::ng-deep .md-drppicker{box-shadow:unset!important}::ng-deep .available{color:#999}::ng-deep .bs-tooltip-bottom .arrow:before{border-bottom-color:#fff!important}::ng-deep .bs-tooltip-left .arrow:before{border-left-color:#fff!important}::ng-deep .tooltip.show{opacity:1}.input{text-align:left;margin:5px 10px 5px 5px;display:flex;align-items:center;width:230px;white-space:nowrap}.data{color:#000;font-weight:700;margin-left:5px;margin-right:5px}span.data{display:inline-block;text-overflow:ellipsis;white-space:pre;width:100%;overflow:hidden}.check-box{font-size:14px;cursor:pointer;position:relative;top:-1px}span.mdi-filter.active{color:#000;opacity:1!important;pointer-events:all!important}p{margin-bottom:0;line-height:initial}span.mdi-filter{color:#cbcbcb}::ng-deep .ngx-slider-pointer{top:-5px!important;width:12px!important;height:12px!important;background:#bdbdbd!important;border:1px solid #ffffff!important;box-shadow:0 1px 3px #0000004d!important;border-radius:16px!important}input:focus{outline:none}input::placeholder{color:#c8c8c8}.cancel-btn{background:#c7e1ff;color:#268bff}.apply-btn{background:#268bff;color:#fff;margin-left:.3125rem}div.radio-container{display:flex;white-space:nowrap;justify-content:space-between;background-color:#f4f4f4;border-radius:.125rem;margin:.4375rem .4375rem .25rem}div.radio-container div{flex:1;width:50%}div.radio-container div.full-width{width:100%}div.radio-container input{position:relative;top:.125rem;margin-right:.25rem}div.radio-container label{font-family:Roboto;font-size:.875rem;font-weight:400;font-stretch:normal;font-style:normal;line-height:1.29;letter-spacing:0;color:#4a4a4a;margin:0;padding-left:.125rem}div.radio-container label:first-of-type{margin-right:.188rem}div.radio-container input[type=radio]{appearance:none;display:inline-block;width:.9375rem;height:.9375rem;padding:.125rem;background-clip:content-box;border:.125rem solid #268bff;background-color:transparent;border-radius:50%}div.radio-container input[type=radio]:checked{background-color:#268bff}.checkbox-filter-buttons-container{padding:0 8px!important}.buttons-container{display:flex;margin:0px auto .4375rem;justify-content:center;padding:0 12px}.buttons-container .button{padding:0 10px;width:100%;margin:8px 0 0;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.buttons-container button:last-of-type{background-color:#268bff;color:#fff;margin-left:.5rem}.buttons-container button.disabled{background:#bdbdbd;opacity:.5;color:#4a4a4a}.button{display:inline-block;margin:8px 4px 0 8px;padding:0 16px;border-radius:4px;text-align:center;outline:none;font-family:Roboto;font-size:.75rem;font-weight:400;font-stretch:normal;font-style:normal;line-height:1.67;letter-spacing:normal;border:none;color:#268bff;background-color:#e5f1ff}.search-box{display:flex;align-items:center;color:#c8c8c8;border:1px solid #e6e6e6;border-radius:.125rem;margin:.25rem .4375rem .188rem;height:1.5rem;padding:.188rem 8px .188rem .5rem}.search-box .search-bar-close{margin-left:auto;float:right}.search-icon{margin:0 4px 0 0;font-size:1.125rem;color:#9b9b9b}.filter-icon{justify-content:right;margin-left:auto;color:#d4d4d4;color:#a1a1a1;font-size:16px;cursor:pointer}.data{margin:0 13px 0 8px;font-family:Roboto;font-size:.875rem;font-weight:400;font-stretch:normal;font-style:normal;line-height:1.86;letter-spacing:\"\";color:#4a4a4a}.search-input{margin:1px 0 1px 4px;font-family:Roboto;font-size:.875rem;font-weight:400;font-stretch:normal;font-style:normal;line-height:normal;letter-spacing:normal;color:#c8c8c8;width:calc(100% - 38px)}.check-box{color:#268bff}.tooltip-data-container{overflow-y:scroll;max-height:8rem}.searchbar{width:100%;display:flex;justify-content:flex-end;align-items:flex-end}.clear-button{opacity:.5;font-family:Roboto;font-size:.9375rem;font-weight:500;font-stretch:normal;font-style:normal;line-height:normal;letter-spacing:normal;text-decoration:underline;border:none;background-color:#fff;color:#4a4a4a;margin-left:.625rem;padding:0}.clear-button:focus{outline:none;box-shadow:none}.unchecked{color:#268bff}cdk-virtual-scroll-viewport.dropdown-data-container{max-height:12.3rem;width:100%;overflow-y:auto;overflow-x:hidden}cdk-virtual-scroll-viewport.dropdown-data-container p.input{margin-left:0}cdk-virtual-scroll-viewport.dropdown-data-container p.input span.mi{padding-left:.4375rem}cdk-virtual-scroll-viewport.dropdown-data-container p.input:hover{background-color:#ebebeb;cursor:pointer}cdk-virtual-scroll-viewport.dropdown-data-container::-webkit-scrollbar{width:.188rem}cdk-virtual-scroll-viewport.dropdown-data-container::-webkit-scrollbar-thumb{color:#d3d3d3;background:#d3d3d3}section.min-maxContainer{display:flex;justify-content:center;margin-bottom:-.125rem;margin-top:.5rem;width:100%}section.min-maxContainer input{width:30%;height:1.875rem;border:1px solid lightgray;color:gray}section.min-maxContainer span{display:inline-block;padding-left:.5rem;padding-right:.5rem;position:relative;top:.3125rem;color:#666}.time-container{width:100%;display:flex;padding:0 .75rem}.time-container input.form-control:disabled{background-color:#fff;width:2.813rem}.time-container input.numberInput:focus{box-shadow:none;border-color:#c2cfd6}.time-container .dot{color:#cbcbcb;position:relative;left:-7px;font-size:17px}.time-container div.arrow-container{flex-direction:column;display:flex;margin-top:.375rem;width:9px;height:18px;margin-right:1.1875rem}.time-container div.arrow-container i{color:#000;cursor:pointer;max-height:9px;font-size:25px;width:10px}.time-container div.arrow-container i:before{width:0;height:0;pointer-events:none;position:relative;left:-9px;top:-11px}.mdi-filter{cursor:pointer}.time-label-container{display:flex;justify-content:flex-start}.time-label-container label{margin-bottom:0;color:#4a4a4a;margin-top:.125rem;margin-left:.625rem;font-weight:700}.time-heading{color:#000;font-size:.8125rem;text-align:left;padding-left:.625rem;margin-top:.625rem;font-weight:700}.column-clear-all{width:94%;text-align:center;border:none;font-size:14px;background:none;text-decoration:underline;color:#268bff}.checkbox-container{display:flex;padding-inline:.625rem}.checkbox-container .data{text-align:left}.checkbox-container:first-of-type{margin-top:.625rem;font-weight:500}.column-clear-all{width:94%;text-align:center;border:none;background:none;text-decoration:underline;color:#268bff}.column-clear-all:disabled{opacity:.5;color:#4a4a4a;font-weight:400}.column-clear-all.align-center{text-align:center}span.mdi-filter-variant.disabled{pointer-events:none;opacity:.5}.datepicker-container{width:100%}span.mdi-filter-variant{color:#cbcbcb;cursor:pointer;font-size:.875rem}span.mdi-filter-variant.active{color:#000}p.filter-tab{font-family:Roboto;font-size:14px;font-weight:400;font-stretch:normal;font-style:normal;line-height:1.29;letter-spacing:normal;color:#1b88ff;border-radius:5px;background-color:#f4f4f4;padding-inline:8px;cursor:pointer;overflow:hidden;text-align:center;text-overflow:ellipsis}p.filter-tab.active{color:#fff;background-color:#1b88ff}button.filter-text-btn{background:#fff;text-decoration:underline;font-family:Roboto;font-size:14px;font-weight:400;font-stretch:normal;font-style:normal;line-height:normal;letter-spacing:normal;border:none;color:#268bff;margin-inline:4px;margin-top:2px}button.filter-text-btn:disabled{color:#b1b1b1;cursor:not-allowed}::ng-deep .non-edit-datepicker-tooltip .tooltip-inner{max-width:310px!important;width:283px!important;overflow-y:initial!important;padding:0!important}input.slider-text::-webkit-outer-spin-button,input.slider-text::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}input.slider-text{-moz-appearance:textfield}input.slider-text.red-border{border:1px solid #f44336!important}::ng-deep .checkbox-sort p.sort-container{margin-top:8px!important;padding-bottom:8px!important}i.mdi-close{cursor:pointer}i.mdi-close.disable-close-icon{pointer-events:none;cursor:not-allowed}input.error-border{border:1px solid #f44336!important}::ng-deep .non-edit-checkbox-tooltip .tooltip-inner{width:238px!important;padding:0!important}::ng-deep .non-edit-slider-tooltip .tooltip-inner{width:238px!important;padding:0!important}::ng-deep .non-edit-time-tooltip .tooltip-inner{width:250px!important;padding:0!important}::ng-deep .non-edit-time-tooltip.bs-tooltip-start{padding:.4rem}::ng-deep .non-edit-time-tooltip.bs-tooltip-start .tooltip-arrow{right:0;top:5px!important;width:var(--bs-tooltip-arrow-height);height:var(--bs-tooltip-arrow-width)}::ng-deep .non-edit-time-tooltip.bs-tooltip-start .tooltip-arrow:before{border-left-color:#fff;left:-1px;border-width:calc(var(--bs-tooltip-arrow-width) * .5) 0 calc(var(--bs-tooltip-arrow-width) * .5) var(--bs-tooltip-arrow-height)}::ng-deep .no-bottom-border p.sort-container{border-bottom:none!important}::ng-deep .ngx-slider-pointer-min:after{display:none}::ng-deep .ngx-slider-pointer-max:after{display:none}::ng-deep .ngx-slider span.ngx-slider-pointer{width:12px;height:12px;top:-5px;background-color:#bdbdbd}::ng-deep .ngx-slider span.ngx-slider-bar{height:3px;background:#ededed}::ng-deep .ngx-slider span.ngx-slider-selection{background:#bdbdbd}::ng-deep .ngx-slider span.ngx-slider-bubble{bottom:-22px;font-size:12px;color:#333}::ng-deep .show-min.ngx-slider span.ngx-slider-model-value{background:#fff;box-shadow:0 6px 10px #0000004d,0 2px 2px #0003}::ng-deep .show-max.ngx-slider span.ngx-slider-model-high{background:#fff;box-shadow:none}::ng-deep .ngx-slider span.ngx-slider-combined{background:#fff;box-shadow:0 6px 10px #0000004d,0 2px 2px #0003}::ng-deep .ngx-slider{top:10px!important;margin:5px 0 2px!important}::ng-deep .ngx-slider-animate{top:0!important}.sidebar-slider{margin-bottom:35px!important;margin-left:5px;margin-right:5px}.slider-placeholder{height:14px}::ng-deep .filter-calendar select.form-select:focus{border-color:#c2cfd6;box-shadow:none}::ng-deep .filter-calendar select.form-select{background-color:#fff}.no-data-case{padding-left:.4375rem!important;font-size:.875rem!important;margin-top:10px!important;cursor:pointer}.custom-column-checkbox-checked,.custom-column-checkbox-unchecked{font-size:.875rem;cursor:pointer}.custom-column-checkbox-checked{color:#268bff}.custom-column-checkbox-unchecked{color:#4a4a4a}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{opacity:1}.redcolor-status{color:#c62a2a}#no-filter-space{width:.875rem}input.numberInput{margin-right:-.8125rem;padding:0 0 0 .625rem;height:1.875rem}.hidden{display:none}\n"], dependencies: [{ kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.PatternValidator, selector: "[pattern][formControlName],[pattern][formControl],[pattern][ngModel]", inputs: ["pattern"] }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i6.MatButtonToggleGroup, selector: "mat-button-toggle-group", inputs: ["appearance", "name", "vertical", "value", "multiple", "disabled"], outputs: ["valueChange", "change"], exportAs: ["matButtonToggleGroup"] }, { kind: "component", type: i6.MatButtonToggle, selector: "mat-button-toggle", inputs: ["disableRipple", "aria-label", "aria-labelledby", "id", "name", "value", "tabIndex", "appearance", "checked", "disabled"], outputs: ["change"], exportAs: ["matButtonToggle"] }, { kind: "component", type: i7.AnnaSortComponent, selector: "anna-core-sort-lib", inputs: ["sortObjectKey"], outputs: ["sortOptionClicked"] }] }); }
254
+ }
255
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AnnaColumnTimeFilterComponent, decorators: [{
256
+ type: Component,
257
+ args: [{ selector: 'anna-core-anna-column-time-filter', template: "<div class=\"radio-container\" *ngIf=\"showFilterHeaderTabs\">\r\n <div *ngFor=\"let data of filterTabObjects\">\r\n <p class=\"filter-tab\" [title]=\"data.label\" (click)=\"populateTooltipDataBasedOnSelectedRadio(data, true)\" [ngClass]=\"{'active': annaFilterService.selectedRadio == data.key}\" *ngIf=\"filterTabObjects.length > 0\">{{ data.label }}</p>\r\n </div>\r\n</div>\r\n\r\n<anna-core-sort-lib *ngIf=\"showSortComponent\" [ngClass]=\"{'no-bottom-border': !showFilterComponent}\"\r\n(sortOptionClicked)=\"storeSortTypeInTempVariable($event)\" [sortObjectKey]=\"annaFilterService.selectedRadio\"></anna-core-sort-lib>\r\n\r\n<ng-container *ngIf=\"showFilterComponent\">\r\n <button class=\"column-clear-all\" *ngIf=\"showClearAllFilter\" [disabled]=\"disableColumnClearAllBtn\" (click)=\"clearColumnFilter()\">Clear filter</button>\r\n <div\r\n class=\"time-filter-checkboxes\"\r\n *ngIf=\"showAllTimeRangeCheckboxes\"\r\n >\r\n <!-- Multi time option checkbox -->\r\n <div class=\"d-flex align-items-center\" style=\"padding: 0.5rem 0 0.5rem 0.5rem\" *ngIf=\"showMultiTimeCheckbox\">\r\n <span\r\n *ngIf=\"multiTimeCheckboxChecked\"\r\n class=\"material-icons custom-column-checkbox-checked\"\r\n (click)=\"selectOrUnselectMultiTimeCheckbox()\"\r\n >\r\n check_box\r\n </span>\r\n <span\r\n *ngIf=\"!multiTimeCheckboxChecked\"\r\n class=\"material-icons custom-column-checkbox-unchecked\"\r\n (click)=\"selectOrUnselectMultiTimeCheckbox()\"\r\n >\r\n check_box_outline_blank\r\n </span>\r\n <p style=\"margin-left: 2px\">Include Multi</p>\r\n </div>\r\n <!-- Zero time option checkbox -->\r\n <div class=\"d-flex align-items-center\" style=\"padding: 0.5rem 0 0.5rem 0.5rem\" *ngIf=\"showZeroTimeCheckbox\">\r\n <span\r\n *ngIf=\"zeroTimeCheckboxChecked\"\r\n class=\"material-icons custom-column-checkbox-checked\"\r\n (click)=\"selectOrUnselectZeroTimeCheckbox()\"\r\n >\r\n check_box\r\n </span>\r\n <span\r\n *ngIf=\"!zeroTimeCheckboxChecked\"\r\n class=\"material-icons custom-column-checkbox-unchecked\"\r\n (click)=\"selectOrUnselectZeroTimeCheckbox()\"\r\n >\r\n check_box_outline_blank\r\n </span>\r\n <p style=\"margin-left: 2px\">Include Zero</p>\r\n </div>\r\n <!-- Enter time range option checkbox -->\r\n <div class=\"d-flex align-items-center\" style=\"padding: 0.5rem 0 0.5rem 0.5rem\" *ngIf=\"showEnterTimeCheckbox\">\r\n <span\r\n *ngIf=\"enterTimeCheckboxChecked\"\r\n class=\"material-icons custom-column-checkbox-checked\"\r\n (click)=\"selectOrUnselectEnterTimeCheckbox()\"\r\n >\r\n check_box\r\n </span>\r\n <span\r\n *ngIf=\"!enterTimeCheckboxChecked\"\r\n class=\"material-icons custom-column-checkbox-unchecked\"\r\n (click)=\"selectOrUnselectEnterTimeCheckbox()\"\r\n >\r\n check_box_outline_blank\r\n </span>\r\n <p style=\"margin-left: 2px\">Enter time range</p>\r\n </div>\r\n </div>\r\n <div class=\"time-label-container\">\r\n <label>{{startFromText}}</label>\r\n </div>\r\n <div class=\"time-container\">\r\n <input class=\"form-control numberInput\" [ngClass]=\"{'error-border': startTimeHourErr}\" [(ngModel)]=\"selectedFromTime[0]\" type=\"text\" pattern=\"[1-12]*\" (ngModelChange)=\"startTimeHourChange($event)\" />\r\n <div class=\"arrow-container\">\r\n <i class=\"mdi mdi-menu-up upward\" (click)=\"changeStartTimeHour(true)\"></i>\r\n <i class=\"mdi mdi-menu-down downward\" (click)=\"changeStartTimeHour(false)\"></i>\r\n </div>\r\n <span class=\"dot\">:</span>\r\n <input class=\"form-control numberInput\" [ngClass]=\"{'error-border': startTimeMinErr}\" [(ngModel)]=\"selectedFromTime[1]\" type=\"text\" pattern=\"[0-59]*\" (ngModelChange)=\"startTimeMinChange($event)\"/>\r\n <div class=\"arrow-container\">\r\n <i class=\"mdi mdi-menu-up upward\" (click)=\"changeStartTimeMinute(true)\"></i>\r\n <i class=\"mdi mdi-menu-down downward\" style=\"position: relative;left: .25px;\" (click)=\"changeStartTimeMinute(false)\"></i>\r\n </div>\r\n <div>\r\n <mat-button-toggle-group [(ngModel)]=\"selectedFromTime[2]\" (ngModelChange)=\"disableTimeFilterApplyButton()\">\r\n <mat-button-toggle value=\"AM\">\r\n <span>AM</span>\r\n </mat-button-toggle>\r\n <mat-button-toggle value=\"PM\">\r\n <span>PM</span>\r\n </mat-button-toggle>\r\n </mat-button-toggle-group>\r\n </div>\r\n </div>\r\n\r\n <div class=\"time-label-container\">\r\n <label>{{endToText}}</label>\r\n </div>\r\n <div class=\"time-container\">\r\n <input class=\"form-control numberInput\" [(ngModel)]=\"selectedToTime[0]\" [ngClass]=\"{'error-border': endTimeHourErr}\" (ngModelChange)=\"endTimeHourChange($event)\" type=\"text\"pattern=\"[1-12]*\" />\r\n <div class=\"arrow-container\">\r\n <i class=\"mdi mdi-menu-up upward\" (click)=\"changeEndTimeHour(true)\"></i>\r\n <i class=\"mdi mdi-menu-down downward\" (click)=\"changeEndTimeHour(false)\"></i>\r\n </div>\r\n <span class=\"dot\">:</span>\r\n <input class=\"form-control numberInput\" [ngClass]=\"{'error-border': endTimeMinErr}\" [(ngModel)]=\"selectedToTime[1]\" (ngModelChange)=\"endTimeMinChange($event)\" type=\"text\"pattern=\"[0-59]*\" />\r\n <div class=\"arrow-container\">\r\n <i class=\"mdi mdi-menu-up upward\" (click)=\"changeEndTimeMinute(true)\"></i>\r\n <i class=\"mdi mdi-menu-down downward\" style=\"position: relative;left: .25px;\" (click)=\"changeEndTimeMinute(false)\"></i>\r\n </div>\r\n <div>\r\n <mat-button-toggle-group [(ngModel)]=\"selectedToTime[2]\" (ngModelChange)=\"disableTimeFilterApplyButton()\">\r\n <mat-button-toggle value=\"AM\">\r\n <span>AM</span>\r\n </mat-button-toggle>\r\n <mat-button-toggle value=\"PM\">\r\n <span>PM</span>\r\n </mat-button-toggle>\r\n </mat-button-toggle-group>\r\n </div>\r\n </div>\r\n</ng-container>\r\n\r\n<div class=\"buttons-container\">\r\n <button class=\"button\" (click)=\"closeTimeFilter()\">Cancel</button>\r\n <button\r\n class=\"button\"\r\n [ngClass]=\"{ disabled: disableTimeFilterApplyBtn }\"\r\n (click)=\"applyTimeFilters()\"\r\n [disabled]=\"disableTimeFilterApplyBtn\"\r\n >\r\n Apply\r\n </button>\r\n</div>", styles: [":host ::ng-deep .mat-button-toggle-appearance-standard .mat-button-toggle-label-content{line-height:30px;width:42px;padding:0 10px}:host ::ng-deep .mat-button-toggle-checked{background-color:#268bff;color:#fff!important}:host ::ng-deep .mat-button-toggle-group-appearance-standard{border-radius:0;border:none!important}::ng-deep .mat-button-toggle-disabled.mat-button-toggle-checked{background:#bdbdbd!important}::ng-deep .mat-button-toggle-disabled.mat-button-toggle-checked button{color:#fff;opacity:1}::ng-deep .mat-button-toggle-appearance-standard{opacity:.5;border:solid 1px #b3b3b3}::ng-deep .mat-button-toggle-appearance-standard button{opacity:1}::ng-deep .mat-button-toggle-appearance-standard.mat-button-toggle-checked{opacity:1}.sort-btn{background:#fff;border:none;border-right:1px solid #1b88ff;text-decoration:underline;font-family:Roboto;font-size:14px;font-weight:400;font-stretch:normal;font-style:normal;line-height:1.07;letter-spacing:normal;color:#1b88ff;cursor:pointer;flex:1;text-align:center}.sort-btn:last-of-type{border-right:none}.sort-btn.active{color:#202b47;text-decoration:none}p.sort-container{margin-top:8px;padding-bottom:8px;border-bottom:1px solid #e6e6e6;margin-bottom:0;display:flex}::ng-deep .tooltip-inner{max-height:22rem;background-color:#fff;border:1px solid white;border-radius:5px;box-shadow:0 2px 2px #0000003d,0 0 2px #0000001f;max-width:251px;width:100%;padding:0!important}::ng-deep .tooltip-inner div.radio-container{flex-wrap:wrap}::ng-deep .md-drppicker{box-shadow:unset!important}::ng-deep .available{color:#999}::ng-deep .bs-tooltip-bottom .arrow:before{border-bottom-color:#fff!important}::ng-deep .bs-tooltip-left .arrow:before{border-left-color:#fff!important}::ng-deep .tooltip.show{opacity:1}.input{text-align:left;margin:5px 10px 5px 5px;display:flex;align-items:center;width:230px;white-space:nowrap}.data{color:#000;font-weight:700;margin-left:5px;margin-right:5px}span.data{display:inline-block;text-overflow:ellipsis;white-space:pre;width:100%;overflow:hidden}.check-box{font-size:14px;cursor:pointer;position:relative;top:-1px}span.mdi-filter.active{color:#000;opacity:1!important;pointer-events:all!important}p{margin-bottom:0;line-height:initial}span.mdi-filter{color:#cbcbcb}::ng-deep .ngx-slider-pointer{top:-5px!important;width:12px!important;height:12px!important;background:#bdbdbd!important;border:1px solid #ffffff!important;box-shadow:0 1px 3px #0000004d!important;border-radius:16px!important}input:focus{outline:none}input::placeholder{color:#c8c8c8}.cancel-btn{background:#c7e1ff;color:#268bff}.apply-btn{background:#268bff;color:#fff;margin-left:.3125rem}div.radio-container{display:flex;white-space:nowrap;justify-content:space-between;background-color:#f4f4f4;border-radius:.125rem;margin:.4375rem .4375rem .25rem}div.radio-container div{flex:1;width:50%}div.radio-container div.full-width{width:100%}div.radio-container input{position:relative;top:.125rem;margin-right:.25rem}div.radio-container label{font-family:Roboto;font-size:.875rem;font-weight:400;font-stretch:normal;font-style:normal;line-height:1.29;letter-spacing:0;color:#4a4a4a;margin:0;padding-left:.125rem}div.radio-container label:first-of-type{margin-right:.188rem}div.radio-container input[type=radio]{appearance:none;display:inline-block;width:.9375rem;height:.9375rem;padding:.125rem;background-clip:content-box;border:.125rem solid #268bff;background-color:transparent;border-radius:50%}div.radio-container input[type=radio]:checked{background-color:#268bff}.checkbox-filter-buttons-container{padding:0 8px!important}.buttons-container{display:flex;margin:0px auto .4375rem;justify-content:center;padding:0 12px}.buttons-container .button{padding:0 10px;width:100%;margin:8px 0 0;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.buttons-container button:last-of-type{background-color:#268bff;color:#fff;margin-left:.5rem}.buttons-container button.disabled{background:#bdbdbd;opacity:.5;color:#4a4a4a}.button{display:inline-block;margin:8px 4px 0 8px;padding:0 16px;border-radius:4px;text-align:center;outline:none;font-family:Roboto;font-size:.75rem;font-weight:400;font-stretch:normal;font-style:normal;line-height:1.67;letter-spacing:normal;border:none;color:#268bff;background-color:#e5f1ff}.search-box{display:flex;align-items:center;color:#c8c8c8;border:1px solid #e6e6e6;border-radius:.125rem;margin:.25rem .4375rem .188rem;height:1.5rem;padding:.188rem 8px .188rem .5rem}.search-box .search-bar-close{margin-left:auto;float:right}.search-icon{margin:0 4px 0 0;font-size:1.125rem;color:#9b9b9b}.filter-icon{justify-content:right;margin-left:auto;color:#d4d4d4;color:#a1a1a1;font-size:16px;cursor:pointer}.data{margin:0 13px 0 8px;font-family:Roboto;font-size:.875rem;font-weight:400;font-stretch:normal;font-style:normal;line-height:1.86;letter-spacing:\"\";color:#4a4a4a}.search-input{margin:1px 0 1px 4px;font-family:Roboto;font-size:.875rem;font-weight:400;font-stretch:normal;font-style:normal;line-height:normal;letter-spacing:normal;color:#c8c8c8;width:calc(100% - 38px)}.check-box{color:#268bff}.tooltip-data-container{overflow-y:scroll;max-height:8rem}.searchbar{width:100%;display:flex;justify-content:flex-end;align-items:flex-end}.clear-button{opacity:.5;font-family:Roboto;font-size:.9375rem;font-weight:500;font-stretch:normal;font-style:normal;line-height:normal;letter-spacing:normal;text-decoration:underline;border:none;background-color:#fff;color:#4a4a4a;margin-left:.625rem;padding:0}.clear-button:focus{outline:none;box-shadow:none}.unchecked{color:#268bff}cdk-virtual-scroll-viewport.dropdown-data-container{max-height:12.3rem;width:100%;overflow-y:auto;overflow-x:hidden}cdk-virtual-scroll-viewport.dropdown-data-container p.input{margin-left:0}cdk-virtual-scroll-viewport.dropdown-data-container p.input span.mi{padding-left:.4375rem}cdk-virtual-scroll-viewport.dropdown-data-container p.input:hover{background-color:#ebebeb;cursor:pointer}cdk-virtual-scroll-viewport.dropdown-data-container::-webkit-scrollbar{width:.188rem}cdk-virtual-scroll-viewport.dropdown-data-container::-webkit-scrollbar-thumb{color:#d3d3d3;background:#d3d3d3}section.min-maxContainer{display:flex;justify-content:center;margin-bottom:-.125rem;margin-top:.5rem;width:100%}section.min-maxContainer input{width:30%;height:1.875rem;border:1px solid lightgray;color:gray}section.min-maxContainer span{display:inline-block;padding-left:.5rem;padding-right:.5rem;position:relative;top:.3125rem;color:#666}.time-container{width:100%;display:flex;padding:0 .75rem}.time-container input.form-control:disabled{background-color:#fff;width:2.813rem}.time-container input.numberInput:focus{box-shadow:none;border-color:#c2cfd6}.time-container .dot{color:#cbcbcb;position:relative;left:-7px;font-size:17px}.time-container div.arrow-container{flex-direction:column;display:flex;margin-top:.375rem;width:9px;height:18px;margin-right:1.1875rem}.time-container div.arrow-container i{color:#000;cursor:pointer;max-height:9px;font-size:25px;width:10px}.time-container div.arrow-container i:before{width:0;height:0;pointer-events:none;position:relative;left:-9px;top:-11px}.mdi-filter{cursor:pointer}.time-label-container{display:flex;justify-content:flex-start}.time-label-container label{margin-bottom:0;color:#4a4a4a;margin-top:.125rem;margin-left:.625rem;font-weight:700}.time-heading{color:#000;font-size:.8125rem;text-align:left;padding-left:.625rem;margin-top:.625rem;font-weight:700}.column-clear-all{width:94%;text-align:center;border:none;font-size:14px;background:none;text-decoration:underline;color:#268bff}.checkbox-container{display:flex;padding-inline:.625rem}.checkbox-container .data{text-align:left}.checkbox-container:first-of-type{margin-top:.625rem;font-weight:500}.column-clear-all{width:94%;text-align:center;border:none;background:none;text-decoration:underline;color:#268bff}.column-clear-all:disabled{opacity:.5;color:#4a4a4a;font-weight:400}.column-clear-all.align-center{text-align:center}span.mdi-filter-variant.disabled{pointer-events:none;opacity:.5}.datepicker-container{width:100%}span.mdi-filter-variant{color:#cbcbcb;cursor:pointer;font-size:.875rem}span.mdi-filter-variant.active{color:#000}p.filter-tab{font-family:Roboto;font-size:14px;font-weight:400;font-stretch:normal;font-style:normal;line-height:1.29;letter-spacing:normal;color:#1b88ff;border-radius:5px;background-color:#f4f4f4;padding-inline:8px;cursor:pointer;overflow:hidden;text-align:center;text-overflow:ellipsis}p.filter-tab.active{color:#fff;background-color:#1b88ff}button.filter-text-btn{background:#fff;text-decoration:underline;font-family:Roboto;font-size:14px;font-weight:400;font-stretch:normal;font-style:normal;line-height:normal;letter-spacing:normal;border:none;color:#268bff;margin-inline:4px;margin-top:2px}button.filter-text-btn:disabled{color:#b1b1b1;cursor:not-allowed}::ng-deep .non-edit-datepicker-tooltip .tooltip-inner{max-width:310px!important;width:283px!important;overflow-y:initial!important;padding:0!important}input.slider-text::-webkit-outer-spin-button,input.slider-text::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}input.slider-text{-moz-appearance:textfield}input.slider-text.red-border{border:1px solid #f44336!important}::ng-deep .checkbox-sort p.sort-container{margin-top:8px!important;padding-bottom:8px!important}i.mdi-close{cursor:pointer}i.mdi-close.disable-close-icon{pointer-events:none;cursor:not-allowed}input.error-border{border:1px solid #f44336!important}::ng-deep .non-edit-checkbox-tooltip .tooltip-inner{width:238px!important;padding:0!important}::ng-deep .non-edit-slider-tooltip .tooltip-inner{width:238px!important;padding:0!important}::ng-deep .non-edit-time-tooltip .tooltip-inner{width:250px!important;padding:0!important}::ng-deep .non-edit-time-tooltip.bs-tooltip-start{padding:.4rem}::ng-deep .non-edit-time-tooltip.bs-tooltip-start .tooltip-arrow{right:0;top:5px!important;width:var(--bs-tooltip-arrow-height);height:var(--bs-tooltip-arrow-width)}::ng-deep .non-edit-time-tooltip.bs-tooltip-start .tooltip-arrow:before{border-left-color:#fff;left:-1px;border-width:calc(var(--bs-tooltip-arrow-width) * .5) 0 calc(var(--bs-tooltip-arrow-width) * .5) var(--bs-tooltip-arrow-height)}::ng-deep .no-bottom-border p.sort-container{border-bottom:none!important}::ng-deep .ngx-slider-pointer-min:after{display:none}::ng-deep .ngx-slider-pointer-max:after{display:none}::ng-deep .ngx-slider span.ngx-slider-pointer{width:12px;height:12px;top:-5px;background-color:#bdbdbd}::ng-deep .ngx-slider span.ngx-slider-bar{height:3px;background:#ededed}::ng-deep .ngx-slider span.ngx-slider-selection{background:#bdbdbd}::ng-deep .ngx-slider span.ngx-slider-bubble{bottom:-22px;font-size:12px;color:#333}::ng-deep .show-min.ngx-slider span.ngx-slider-model-value{background:#fff;box-shadow:0 6px 10px #0000004d,0 2px 2px #0003}::ng-deep .show-max.ngx-slider span.ngx-slider-model-high{background:#fff;box-shadow:none}::ng-deep .ngx-slider span.ngx-slider-combined{background:#fff;box-shadow:0 6px 10px #0000004d,0 2px 2px #0003}::ng-deep .ngx-slider{top:10px!important;margin:5px 0 2px!important}::ng-deep .ngx-slider-animate{top:0!important}.sidebar-slider{margin-bottom:35px!important;margin-left:5px;margin-right:5px}.slider-placeholder{height:14px}::ng-deep .filter-calendar select.form-select:focus{border-color:#c2cfd6;box-shadow:none}::ng-deep .filter-calendar select.form-select{background-color:#fff}.no-data-case{padding-left:.4375rem!important;font-size:.875rem!important;margin-top:10px!important;cursor:pointer}.custom-column-checkbox-checked,.custom-column-checkbox-unchecked{font-size:.875rem;cursor:pointer}.custom-column-checkbox-checked{color:#268bff}.custom-column-checkbox-unchecked{color:#4a4a4a}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{opacity:1}.redcolor-status{color:#c62a2a}#no-filter-space{width:.875rem}input.numberInput{margin-right:-.8125rem;padding:0 0 0 .625rem;height:1.875rem}.hidden{display:none}\n"] }]
258
+ }], ctorParameters: function () { return [{ type: i1.AnnaSortService }, { type: i2.AnnaDateTimeFormatService }, { type: i3.AnnaFilterService }]; }, propDecorators: { tableData: [{
259
+ type: Input
260
+ }], clonedTableData: [{
261
+ type: Input
262
+ }], filterTabObjects: [{
263
+ type: Input
264
+ }], showFilterHeaderTabs: [{
265
+ type: Input
266
+ }], showAllTimeRangeCheckboxes: [{
267
+ type: Input
268
+ }], isLurAndCsrComponent: [{
269
+ type: Input
270
+ }], gtGeneralConfig: [{
271
+ type: Input
272
+ }], showClearAllFilter: [{
273
+ type: Input
274
+ }], startFromText: [{
275
+ type: Input
276
+ }], endToText: [{
277
+ type: Input
278
+ }], isSortAndFilterAbsent: [{
279
+ type: Input
280
+ }], timeChanges: [{
281
+ type: Output
282
+ }], filterAppliedToTable: [{
283
+ type: Output
284
+ }], sortingAppliedToTable: [{
285
+ type: Output
286
+ }], getSortType: [{
287
+ type: Output
288
+ }], closeTooltip: [{
289
+ type: Output
290
+ }] } });
291
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5uYS1jb2x1bW4tdGltZS1maWx0ZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5uYS1jb3JlL3NyYy9saWIvYW5uYS1nZW5lcmljLXRhYmxlLWxpYi9jb21wb25lbnRzL2FubmEtY29sdW1uLWZpbHRlcnMvYW5uYS1jb2x1bW4tdGltZS1maWx0ZXIvYW5uYS1jb2x1bW4tdGltZS1maWx0ZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5uYS1jb3JlL3NyYy9saWIvYW5uYS1nZW5lcmljLXRhYmxlLWxpYi9jb21wb25lbnRzL2FubmEtY29sdW1uLWZpbHRlcnMvYW5uYS1jb2x1bW4tdGltZS1maWx0ZXIvYW5uYS1jb2x1bW4tdGltZS1maWx0ZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBcUIsTUFBTSxlQUFlLENBQUM7QUFFbEcsT0FBTyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQVksTUFBTSxXQUFXLENBQUM7QUFJekQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDZEQUE2RCxDQUFDO0FBQzlGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLCtEQUErRCxDQUFDO0FBQ2xHLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHlFQUF5RSxDQUFDOzs7Ozs7Ozs7QUFTcEgsTUFBTSxPQUFPLDZCQUE2QjtJQTZDeEMsWUFDVSxlQUFnQyxFQUNqQyx5QkFBb0QsRUFDcEQsaUJBQW9DO1FBRm5DLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQUNqQyw4QkFBeUIsR0FBekIseUJBQXlCLENBQTJCO1FBQ3BELHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUF2Q3BDLHVCQUFrQixHQUFVLElBQUksQ0FBQztRQUNqQyxrQkFBYSxHQUFRLE1BQU0sQ0FBQztRQUM1QixjQUFTLEdBQVMsSUFBSSxDQUFDO1FBQ3ZCLDBCQUFxQixHQUFTLEtBQUssQ0FBQztRQUNuQyxnQkFBVyxHQUFFLElBQUksWUFBWSxFQUFFLENBQUM7UUFDaEMseUJBQW9CLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUMxQywwQkFBcUIsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQzNDLGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUNqQyxpQkFBWSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFHNUMsa0JBQWEsR0FBYSxJQUFJLENBQUM7UUFFL0Isc0JBQWlCLEdBQVksS0FBSyxDQUFDO1FBQ25DLHdCQUFtQixHQUFZLEtBQUssQ0FBQztRQUNyQyw2QkFBd0IsR0FBWSxJQUFJLENBQUM7UUFXekMsaUJBQVksR0FBYSxFQUFFLENBQUM7UUFDNUIsb0JBQWUsR0FBYSxJQUFJLENBQUM7SUFZZ0IsQ0FBQztJQUVsRCxRQUFRO1FBQ04sSUFBSSxDQUFDLHVDQUF1QyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNoRixDQUFDO0lBRUQsdUNBQXVDLENBQUMsU0FBMkIsRUFBRSxNQUFlO1FBQ2xGLElBQUksTUFBTSxHQUFHLFNBQVMsQ0FBQyxHQUFHLENBQUM7UUFFM0IsSUFBSSxDQUFDLGlCQUFpQixHQUFHLFNBQVMsQ0FBQyxjQUFjLENBQUM7UUFDbEQsSUFBSSxDQUFDLG1CQUFtQixHQUFHLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQztRQUV0RCxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQztRQUMxQixJQUFJLENBQUMsZUFBZSxHQUFHLEtBQUssQ0FBQztRQUM3QixJQUFJLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQztRQUUzQixJQUFJLENBQUMsaUJBQWlCLENBQUMsYUFBYSxHQUFHLE1BQU0sQ0FBQztRQUM5QyxJQUFJLENBQUMsd0JBQXdCLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLDhCQUE4QixFQUFFLENBQUM7UUFFeEYsSUFBRyxNQUFNLEVBQUM7WUFDUixVQUFVLENBQUMsR0FBRyxFQUFFO2dCQUNkLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxTQUFTLEVBQUUsTUFBTSxDQUFDLENBQUM7WUFDbEQsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1NBQ1Q7YUFBSTtZQUNILElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxTQUFTLEVBQUUsTUFBTSxDQUFDLENBQUM7U0FDakQ7SUFDSCxDQUFDO0lBRUQsdUJBQXVCLENBQUMsU0FBMkIsRUFBRSxNQUFjO1FBQ2pFLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxTQUFTLENBQUMsY0FBYyxDQUFDO1FBQ2xELElBQUksQ0FBQyxtQkFBbUIsR0FBRyxTQUFTLENBQUMsZ0JBQWdCLENBQUM7UUFFdEQsSUFBSSxDQUFDLHlCQUF5QixHQUFHLElBQUksQ0FBQztRQUV0QyxJQUFJLElBQUksQ0FBQyxtQkFBbUIsRUFBRTtZQUM1QixJQUFJLENBQUMsaUJBQWlCLENBQUMsTUFBTSxDQUFDLENBQUM7U0FDaEM7SUFFSCxDQUFDO0lBRUQsaUJBQWlCLENBQUMsTUFBYztRQUU5QixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDO1FBRWhHLElBQUcsSUFBSSxDQUFDLHFCQUFxQixFQUFDO1lBQzVCLElBQUksQ0FBQyxnQkFBZ0IsR0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQTtZQUNsRCxJQUFJLENBQUMsY0FBYyxHQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFBO1lBQ2hELElBQUksQ0FBQyxnQkFBZ0IsR0FBRyx5QkFBeUIsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDakcsSUFBSSxDQUFDLGNBQWMsR0FBRyx5QkFBeUIsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLElBQUksQ0FBQyxDQUFDO1NBQzlGO2FBQ0c7WUFDRixDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLG9CQUFvQixDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7U0FDMUg7UUFJRCxJQUFJLENBQUMsc0JBQXNCLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQy9ELElBQUksQ0FBQyxvQkFBb0IsR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBRTNELElBQUksV0FBVyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUVyRyxJQUFJLGtCQUFrQixHQUFHLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxnQ0FBZ0MsQ0FBQyxNQUFNLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFFdkcsSUFBSSxDQUFDLHFCQUFxQixHQUFHLGtCQUFrQixDQUFDLHFCQUFxQixDQUFDO1FBQ3RFLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxrQkFBa0IsQ0FBQyxvQkFBb0IsQ0FBQztRQUNwRSxJQUFJLENBQUMscUJBQXFCLEdBQUcsa0JBQWtCLENBQUMscUJBQXFCLENBQUM7UUFDdEUsSUFBSSxDQUFDLHdCQUF3QixHQUFHLGtCQUFrQixDQUFDLHdCQUF3QixDQUFDO1FBQzVFLElBQUksQ0FBQyx1QkFBdUIsR0FBRyxrQkFBa0IsQ0FBQyx1QkFBdUIsQ0FBQztRQUMxRSxJQUFJLENBQUMsd0JBQXdCLEdBQUcsa0JBQWtCLENBQUMsd0JBQXdCLENBQUM7SUFDOUUsQ0FBQztJQUVELGlDQUFpQztRQUMvQixJQUFJLENBQUMsd0JBQXdCLEdBQUcsQ0FBQyxJQUFJLENBQUMsd0JBQXdCLENBQUM7UUFDL0QsSUFBSSxDQUFDLDRCQUE0QixFQUFFLENBQUM7SUFDdEMsQ0FBQztJQUVELGdDQUFnQztRQUM5QixJQUFJLENBQUMsdUJBQXVCLEdBQUcsQ0FBQyxJQUFJLENBQUMsdUJBQXVCLENBQUM7UUFDN0QsSUFBSSxDQUFDLDRCQUE0QixFQUFFLENBQUM7SUFDdEMsQ0FBQztJQUVELGlDQUFpQztRQUMvQixJQUFJLENBQUMsd0JBQXdCLEdBQUcsQ0FBQyxJQUFJLENBQUMsd0JBQXdCLENBQUM7UUFDL0QsSUFBSSxDQUFDLDRCQUE0QixFQUFFLENBQUM7SUFDdEMsQ0FBQztJQUVELDRCQUE0QjtRQUMxQixJQUFJLDBCQUEwQixHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyw2QkFBNkIsRUFBRSxDQUFDO1FBQ3hGLElBQUkseUJBQXlCLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLDRCQUE0QixDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsY0FBYyxFQUFFLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxJQUFJLENBQUMsdUJBQXVCLEVBQUUsSUFBSSxDQUFDLHdCQUF3QixDQUFDLENBQUM7UUFFNU4sSUFBSSxDQUFDLGVBQWUsR0FBRyxDQUFDLE9BQU8sQ0FBQywwQkFBMEIsRUFBRSx5QkFBeUIsQ0FBQyxDQUFDO1FBQ3ZGLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQztJQUM5QixDQUFDO0lBQ0gsMkJBQTJCO1FBQ3pCLElBQUksSUFBSSxDQUFDLGdCQUFnQixJQUFJLElBQUksQ0FBQyxlQUFlLElBQUksSUFBSSxDQUFDLGNBQWMsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFO1lBQzlGLE9BQU8sSUFBSSxDQUFDO1NBQ2I7YUFDRztZQUNGLE9BQU8sS0FBSyxDQUFDO1NBQ2Q7SUFDSCxDQUFDO0lBQ0MsNEJBQTRCO1FBRTNCLElBQUcsSUFBSSxDQUFDLHFCQUFxQixFQUFDO1lBQzdCLElBQUksQ0FBQyx5QkFBeUIsR0FBRSxJQUFJLENBQUMsMkJBQTJCLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyw0QkFBNEIsRUFBRSxDQUFBO1NBQzFHO2FBQ0c7WUFDSCxJQUFJLElBQUksQ0FBQyxtQkFBbUIsSUFBSSxJQUFJLENBQUMsaUJBQWlCLEVBQUU7Z0JBQ3RELElBQUksZUFBZSxHQUFHLElBQUksQ0FBQyw0QkFBNEIsRUFBRSxDQUFDO2dCQUMxRCxJQUFJLGFBQWEsR0FBRyxJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQztnQkFDakQsSUFBSSxDQUFDLHlCQUF5QixHQUFHLENBQUMsSUFBSSxDQUFDLHVCQUF1QixFQUFFLElBQUksQ0FBQyxDQUFDLGFBQWEsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO2FBQzFHO2lCQUNJLElBQUksSUFBSSxDQUFDLG1CQUFtQixFQUFFO2dCQUNqQyxJQUFJLENBQUMseUJBQXlCLEdBQUcsQ0FBQyxJQUFJLENBQUMsdUJBQXVCLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyw0QkFBNEIsRUFBRSxDQUFDO2FBQzFHO2lCQUNJLElBQUksSUFBSSxDQUFDLGlCQUFpQixFQUFFO2dCQUMvQixJQUFJLENBQUMseUJBQXlCLEdBQUcsQ0FBQyxJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQzthQUNoRTtTQUNEO0lBR0YsQ0FBQztJQUVELHFCQUFxQjtRQUNuQixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDdEYsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDO0lBQzVCLENBQUM7SUFFRCx1QkFBdUI7UUFDckIsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLElBQUksSUFBSSxDQUFDLGVBQWUsSUFBSSxJQUFJLENBQUMsY0FBYyxJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUU7WUFFOUYsT0FBTyxLQUFLLENBQUM7U0FDZDtRQUVELElBQUksQ0FBQyxJQUFJLENBQUMscUJBQXFCLElBQUksQ0FBQyxJQUFJLENBQUMsd0JBQXdCLENBQUM7WUFDaEUsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLElBQUksQ0FBQyxJQUFJLENBQUMsdUJBQXVCLENBQUM7WUFDNUQsQ0FBQyxJQUFJLENBQUMscUJBQXFCLElBQUksQ0FBQyxJQUFJLENBQUMsd0JBQXdCLENBQUMsRUFBRTtZQUNoRSxPQUFPLEtBQUssQ0FBQztTQUNkO1FBR0MsT0FBTyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyw4QkFBOEIsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBRzlHLENBQUM7SUFJRCxnQkFBZ0I7UUFDZCxJQUFHLElBQUksQ0FBQyxxQkFBcUIsRUFBQztZQUM1QixJQUFJLFlBQVksR0FBQyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUE7WUFDNUQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUE7U0FDcEM7YUFDRztZQUNGLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1lBQzdCLElBQUksQ0FBQywwQkFBMEIsRUFBRSxDQUFDO1lBQ2xDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1lBQ3JGLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztTQUNqQjtRQUVELElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLElBQUksQ0FBQyxlQUFlLElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRTtZQUM5QyxJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztTQUNoRDthQUFNLElBQUksSUFBSSxDQUFDLGVBQWUsRUFBRTtZQUMvQixJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztTQUNoRDthQUFNLElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRTtZQUM3QixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7WUFDMUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7U0FDakQ7SUFDSCxDQUFDO0lBRUQsbUJBQW1CLENBQUMsU0FBa0I7UUFDcEMsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRTtZQUMxQixJQUFJLENBQUMsaUJBQWlCLENBQUMsd0JBQXdCLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1lBQ2xGLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztTQUMvRDtJQUNILENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxTQUFrQjtRQUNsQyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRTtZQUN4QixJQUFJLENBQUMsaUJBQWlCLENBQUMsd0JBQXdCLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztZQUNoRixJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1NBQzNEO0lBQ0gsQ0FBQztJQUVELG1CQUFtQixDQUFDLFNBQWtCO1FBQ3BDLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFO1lBQ3ZCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyx1QkFBdUIsQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1lBQy9FLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7U0FDMUQ7SUFDSCxDQUFDO0lBRUQscUJBQXFCLENBQUMsU0FBa0I7UUFDdEMsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUU7WUFDekIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLHVCQUF1QixDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztZQUNqRixJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7U0FDOUQ7SUFDSCxDQUFDO0lBRUQsbUJBQW1CLENBQUMsR0FBVztRQUM3QixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3ZFLElBQUksQ0FBQyw0QkFBNEIsRUFBRSxDQUFDO0lBQ3RDLENBQUM7SUFFRCxrQkFBa0IsQ0FBQyxHQUFXO1FBQzVCLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLG9CQUFvQixDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3hFLElBQUksQ0FBQyw0QkFBNEIsRUFBRSxDQUFDO0lBQ3RDLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxHQUFXO1FBQzNCLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3JFLElBQUksQ0FBQyw0QkFBNEIsRUFBRSxDQUFDO0lBQ3RDLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxHQUFXO1FBQzFCLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLG9CQUFvQixDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3RFLElBQUksQ0FBQyw0QkFBNEIsRUFBRSxDQUFDO0lBQ3RDLENBQUM7SUFFRCwwQkFBMEI7UUFDeEIsSUFBRyxJQUFJLENBQUMsaUJBQWlCLEVBQUM7WUFDeEIsSUFBRyxJQUFJLENBQUMsYUFBYSxFQUFDO2dCQUNwQixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO2FBQ3RIO2lCQUNJLElBQUcsSUFBSSxDQUFDLGVBQWUsRUFBQztnQkFDM0IsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLHVCQUF1QixDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLG9CQUFvQixDQUFDLENBQUM7YUFDMUc7U0FDRjthQUNJLElBQUcsSUFBSSxDQUFDLGVBQWUsRUFBQztZQUMzQixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsdUJBQXVCLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsb0JBQW9CLENBQUMsQ0FBQztTQUMxRztJQUNILENBQUM7SUFFRCxxQkFBcUI7UUFDbkIsSUFBSSxJQUFJLENBQUMsbUJBQW1CLElBQUksSUFBSSxDQUFDLGVBQWUsRUFBRTtZQUNwRCxJQUFJLHlCQUF5QixHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyw0QkFBNEIsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLGNBQWMsRUFBRSxJQUFJLENBQUMsd0JBQXdCLEVBQUUsSUFBSSxDQUFDLHVCQUF1QixFQUFFLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO1lBRTVOLElBQUksVUFBVSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQywwQkFBMEIsQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLHlCQUF5QixDQUFDLENBQUM7WUFDcEgsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsYUFBYSxFQUFFLHlCQUF5QixDQUFDLENBQUM7WUFDL0csSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFFN0UsSUFBSSxDQUFDLFVBQVUsRUFBRTtnQkFDZixJQUFJLENBQUMsaUJBQWlCLENBQUMsa0JBQWtCLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLENBQUMsQ0FBQzthQUN4RjtZQUNELElBQUksQ0FBQyxlQUFlLENBQUMsb0JBQW9CLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztTQUV2RTtJQUNILENBQUM7SUFFRCxlQUFlO1FBQ2IsSUFBSSxDQUFDLGdCQUFnQixHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsQ0FBQztRQUMvRCxJQUFJLENBQUMsY0FBYyxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsQ0FBQztRQUMzRCxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFRCxpQkFBaUI7UUFDZixJQUFJLENBQUMsaUJBQWlCLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUMzQyxJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUN4RixJQUFJLENBQUMsZUFBZSxDQUFDLG9CQUFvQixHQUFHLElBQUksQ0FBQyxTQUFTLENBQUM7UUFDM0QsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLHVCQUF1QixDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLG9CQUFvQixDQUFDLENBQUM7UUFDekcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGdDQUFnQyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDOUYsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDakQsQ0FBQztJQUVELDJCQUEyQixDQUFDLEtBQWU7UUFDekMsSUFBSSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUM7UUFDM0IsSUFBSSxDQUFDLDRCQUE0QixFQUFFLENBQUM7SUFDdEMsQ0FBQzsrR0E5VFUsNkJBQTZCO21HQUE3Qiw2QkFBNkIsb3NCQ2pCMUMsc2lPQXVJTTs7NEZEdEhPLDZCQUE2QjtrQkFMekMsU0FBUzsrQkFDRSxtQ0FBbUM7OEtBS3BDLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0csb0JBQW9CO3NCQUE1QixLQUFLO2dCQUNHLDBCQUEwQjtzQkFBbEMsS0FBSztnQkFDRyxvQkFBb0I7c0JBQTVCLEtBQUs7Z0JBRUcsZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLHFCQUFxQjtzQkFBN0IsS0FBSztnQkFDSSxXQUFXO3NCQUFwQixNQUFNO2dCQUNHLG9CQUFvQjtzQkFBN0IsTUFBTTtnQkFDRyxxQkFBcUI7c0JBQTlCLE1BQU07Z0JBQ0csV0FBVztzQkFBcEIsTUFBTTtnQkFDRyxZQUFZO3NCQUFyQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmltcG9ydCB7IGNsb25lRGVlcCwgaXNFcXVhbCwgdHJ1bmNhdGUgfSBmcm9tIFwibG9kYXNoLWVzXCI7XHJcblxyXG5pbXBvcnQgeyByYWRpb0J1dHRvbk1vZGVsIH0gZnJvbSAnLi4vLi4vLi4vLi4vYW5uYS1jb3JlLXNoYXJlZC1saWIvbW9kZWxzL2FubmEtdG9vbHRpcC5tb2RlbCc7XHJcbmltcG9ydCB7IFNvcnRUeXBlIH0gZnJvbSAnLi4vLi4vLi4vLi4vYW5uYS1jb3JlLXNoYXJlZC1saWIvbW9kZWxzL2FubmEtc29ydC5tb2RlbCc7XHJcbmltcG9ydCB7IEFubmFTb3J0U2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uL2FubmEtY29yZS1zaGFyZWQtbGliL3NlcnZpY2VzL2FubmEtc29ydC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQW5uYUZpbHRlclNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi9hbm5hLWNvcmUtc2hhcmVkLWxpYi9zZXJ2aWNlcy9hbm5hLWZpbHRlci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQW5uYURhdGVUaW1lRm9ybWF0U2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uL2FubmEtY29yZS1zaGFyZWQtbGliL3NlcnZpY2VzL2FubmEtZGF0ZS10aW1lLWZvcm1hdC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgSUd0R2VuZXJhbENvbmZpZyB9IGZyb20gJy4uLy4uLy4uLy4uL2FubmEtY29yZS1zaGFyZWQtbGliL21vZGVscy9hbm5hLW5vbi1lZGl0YWJsZS1ndC1tb2RlbHMnO1xyXG5cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYW5uYS1jb3JlLWFubmEtY29sdW1uLXRpbWUtZmlsdGVyJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vYW5uYS1jb2x1bW4tdGltZS1maWx0ZXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2FubmEtY29sdW1uLXRpbWUtZmlsdGVyLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIEFubmFDb2x1bW5UaW1lRmlsdGVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBASW5wdXQoKSB0YWJsZURhdGE6IGFueVtdO1xyXG4gIEBJbnB1dCgpIGNsb25lZFRhYmxlRGF0YTogYW55W107XHJcbiAgQElucHV0KCkgZmlsdGVyVGFiT2JqZWN0czogYW55W107XHJcbiAgQElucHV0KCkgc2hvd0ZpbHRlckhlYWRlclRhYnM6IGJvb2xlYW47XHJcbiAgQElucHV0KCkgc2hvd0FsbFRpbWVSYW5nZUNoZWNrYm94ZXM6IGJvb2xlYW47IFxyXG4gIEBJbnB1dCgpIGlzTHVyQW5kQ3NyQ29tcG9uZW50OiBib29sZWFuOyBcclxuXHJcbiAgQElucHV0KCkgZ3RHZW5lcmFsQ29uZmlnOiBJR3RHZW5lcmFsQ29uZmlnO1xyXG4gIEBJbnB1dCgpIHNob3dDbGVhckFsbEZpbHRlcjpib29sZWFuID10cnVlO1xyXG4gIEBJbnB1dCgpIHN0YXJ0RnJvbVRleHQ6c3RyaW5nPVwiRnJvbVwiO1xyXG4gIEBJbnB1dCgpIGVuZFRvVGV4dDpzdHJpbmcgPVwiVG9cIjtcclxuICBASW5wdXQoKSBpc1NvcnRBbmRGaWx0ZXJBYnNlbnQ6Ym9vbGVhbj1mYWxzZTtcclxuICBAT3V0cHV0KCkgdGltZUNoYW5nZXM9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgZmlsdGVyQXBwbGllZFRvVGFibGUgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIHNvcnRpbmdBcHBsaWVkVG9UYWJsZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgZ2V0U29ydFR5cGUgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGNsb3NlVG9vbHRpcCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgaXNGaWx0ZXJDaGFuZ2VkOiBib29sZWFuO1xyXG4gIHRlbXBTb3J0T3JkZXI6IFNvcnRUeXBlID0gbnVsbDtcclxuICBpc1NvcnRDaGFuZ2VkOiBib29sZWFuO1xyXG4gIHNob3dTb3J0Q29tcG9uZW50OiBib29sZWFuID0gZmFsc2U7XHJcbiAgc2hvd0ZpbHRlckNvbXBvbmVudDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGRpc2FibGVDb2x1bW5DbGVhckFsbEJ0bjogYm9vbGVhbiA9IHRydWU7XHJcblxyXG4gIHN0YXJ0VGltZUhvdXJFcnI6IGJvb2xlYW47XHJcbiAgc3RhcnRUaW1lTWluRXJyOiBib29sZWFuO1xyXG4gIGVuZFRpbWVIb3VyRXJyOiBib29sZWFuO1xyXG4gIGVuZFRpbWVNaW5FcnI6IGJvb2xlYW47XHJcbiAgc2VsZWN0ZWRGcm9tVGltZTogYW55W107XHJcbiAgc2VsZWN0ZWRUb1RpbWU6IGFueVtdO1xyXG4gIGNsb25lZFNlbGVjdGVkRnJvbVRpbWU6IGFueTtcclxuICBjbG9uZWRTZWxlY3RlZFRvVGltZTogYW55O1xyXG4gIGRpc2FibGVUaW1lRmlsdGVyQXBwbHlCdG46IGJvb2xlYW47XHJcbiAgdGFibGVDb2x1bW5zOiBzdHJpbmdbXSA9IFtdO1xyXG4gIHRvdGFsUm93Q29sdW1uczogc3RyaW5nW10gPSBudWxsO1xyXG4gIHNob3dNdWx0aVRpbWVDaGVja2JveDogYm9vbGVhbjtcclxuICBzaG93WmVyb1RpbWVDaGVja2JveDogYm9vbGVhbjtcclxuICBzaG93RW50ZXJUaW1lQ2hlY2tib3g6IGJvb2xlYW47XHJcbiAgbXVsdGlUaW1lQ2hlY2tib3hDaGVja2VkOiBib29sZWFuO1xyXG4gIHplcm9UaW1lQ2hlY2tib3hDaGVja2VkOiBib29sZWFuO1xyXG4gIGVudGVyVGltZUNoZWNrYm94Q2hlY2tlZDogYm9vbGVhbjtcclxuICBiaW5kVmFsdWVGdW5jQ2FsbGVkOiBib29sZWFuO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgYW5uYVNvcnRTZXJ2aWNlOiBBbm5hU29ydFNlcnZpY2UsXHJcbiAgICBwdWJsaWMgYW5uYURhdGVUaW1lRm9ybWF0U2VydmljZTogQW5uYURhdGVUaW1lRm9ybWF0U2VydmljZSxcclxuICAgIHB1YmxpYyBhbm5hRmlsdGVyU2VydmljZTogQW5uYUZpbHRlclNlcnZpY2UpIHsgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMucG9wdWxhdGVUb29sdGlwRGF0YUJhc2VkT25TZWxlY3RlZFJhZGlvKHRoaXMuZmlsdGVyVGFiT2JqZWN0c1swXSwgZmFsc2UpO1xyXG4gIH1cclxuXHJcbiAgcG9wdWxhdGVUb29sdGlwRGF0YUJhc2VkT25TZWxlY3RlZFJhZGlvKGFjdGl2ZVRhYjogcmFkaW9CdXR0b25Nb2RlbCwgcmVsb2FkOiBib29sZWFuKSB7XHJcbiAgICBsZXQgaGVhZGVyID0gYWN0aXZlVGFiLmtleTtcclxuICAgIFxyXG4gICAgdGhpcy5zaG93U29ydENvbXBvbmVudCA9IGFjdGl2ZVRhYi5pc1NvcnRSZXF1aXJlZDtcclxuICAgIHRoaXMuc2hvd0ZpbHRlckNvbXBvbmVudCA9IGFjdGl2ZVRhYi5pc0ZpbHRlclJlcXVpcmVkO1xyXG4gICAgXHJcbiAgICB0aGlzLnRlbXBTb3J0T3JkZXIgPSBudWxsO1xyXG4gICAgdGhpcy5pc0ZpbHRlckNoYW5nZWQgPSBmYWxzZTtcclxuICAgIHRoaXMuaXNTb3J0Q2hhbmdlZCA9IGZhbHNlO1xyXG5cclxuICAgIHRoaXMuYW5uYUZpbHRlclNlcnZpY2Uuc2VsZWN0ZWRSYWRpbyA9IGhlYWRlcjtcclxuICAgIHRoaXMuZGlzYWJsZUNvbHVtbkNsZWFyQWxsQnRuID0gdGhpcy5hbm5hRmlsdGVyU2VydmljZS5kaXNhYmxlQWN0aXZlRmlsdGVyQ2xlYXJCdXR0b24oKTtcclxuXHJcbiAgICBpZihyZWxvYWQpe1xyXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICB0aGlzLmNyZWF0ZUZpbHRlclRvb2x0aXBEYXRhKGFjdGl2ZVRhYiwgaGVhZGVyKTtcclxuICAgICAgfSwgMTAwKTsgIFxyXG4gICAgfWVsc2V7XHJcbiAgICAgIHRoaXMuY3JlYXRlRmlsdGVyVG9vbHRpcERhdGEoYWN0aXZlVGFiLCBoZWFkZXIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY3JlYXRlRmlsdGVyVG9vbHRpcERhdGEoYWN0aXZlVGFiOiByYWRpb0J1dHRvbk1vZGVsLCBoZWFkZXI6IHN0cmluZykge1xyXG4gICAgdGhpcy5zaG93U29ydENvbXBvbmVudCA9IGFjdGl2ZVRhYi5pc1NvcnRSZXF1aXJlZDtcclxuICAgIHRoaXMuc2hvd0ZpbHRlckNvbXBvbmVudCA9IGFjdGl2ZVRhYi5pc0ZpbHRlclJlcXVpcmVkO1xyXG4gICAgXHJcbiAgICB0aGlzLmRpc2FibGVUaW1lRmlsdGVyQXBwbHlCdG4gPSB0cnVlO1xyXG4gICAgICBcclxuICAgIGlmICh0aGlzLnNob3dGaWx0ZXJDb21wb25lbnQpIHtcclxuICAgICAgdGhpcy5nZXRUaW1lRmlsdGVyRGF0YShoZWFkZXIpO1xyXG4gICAgfVxyXG4gICAgXHJcbiAgfVxyXG5cclxuICBnZXRUaW1lRmlsdGVyRGF0YShoZWFkZXI6IHN0cmluZyk6IHZvaWQge1xyXG5cclxuICAgIHRoaXMuc3RhcnRUaW1lSG91ckVyciA9IHRoaXMuc3RhcnRUaW1lTWluRXJyID0gdGhpcy5lbmRUaW1lSG91ckVyciA9IHRoaXMuZW5kVGltZU1pbkVyciA9IGZhbHNlO1xyXG4gICAgXHJcbiAgICBpZih0aGlzLmlzU29ydEFuZEZpbHRlckFic2VudCl7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRGcm9tVGltZT10aGlzLmNsb25lZFRhYmxlRGF0YVswXS50aW1lXHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRUb1RpbWU9dGhpcy5jbG9uZWRUYWJsZURhdGFbMV0udGltZVxyXG4gICAgICB0aGlzLnNlbGVjdGVkRnJvbVRpbWUgPSBBbm5hRGF0ZVRpbWVGb3JtYXRTZXJ2aWNlLmZvcm1hdFRvVHdlbHZlSHJzKHRoaXMuc2VsZWN0ZWRGcm9tVGltZSwgdHJ1ZSk7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRUb1RpbWUgPSBBbm5hRGF0ZVRpbWVGb3JtYXRTZXJ2aWNlLmZvcm1hdFRvVHdlbHZlSHJzKHRoaXMuc2VsZWN0ZWRUb1RpbWUsIHRydWUpO1xyXG4gICAgfVxyXG4gICAgZWxzZXtcclxuICAgICAgW3RoaXMuc2VsZWN0ZWRGcm9tVGltZSwgdGhpcy5zZWxlY3RlZFRvVGltZV0gPSB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmdldFNlbGVjdGVkVGltZVJhbmdlKGhlYWRlciwgdGhpcy5jbG9uZWRUYWJsZURhdGEpO1xyXG4gICAgfVxyXG4gXHJcbiAgICBcclxuXHJcbiAgICB0aGlzLmNsb25lZFNlbGVjdGVkRnJvbVRpbWUgPSBjbG9uZURlZXAodGhpcy5zZWxlY3RlZEZyb21UaW1lKTtcclxuICAgIHRoaXMuY2xvbmVkU2VsZWN0ZWRUb1RpbWUgPSBjbG9uZURlZXAodGhpcy5zZWxlY3RlZFRvVGltZSk7XHJcbiAgICBcclxuICAgIGxldCBvcHRpb25zRGF0YSA9IHRoaXMuYW5uYUZpbHRlclNlcnZpY2U/LmdldEZpbHRlck9wdGlvbnNEYXRhKHRoaXMudGFibGVEYXRhLCB0aGlzLmNsb25lZFRhYmxlRGF0YSk7XHJcbiAgICBcclxuICAgIGxldCBjaGVja2VkU2VsZWN0ZWRPYmogPSB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlPy5zZWxlY3RVbnNlbGVjdFRpbWVGaWx0ZXJDaGVja2JveChoZWFkZXIsIG9wdGlvbnNEYXRhKTtcclxuXHJcbiAgICB0aGlzLnNob3dNdWx0aVRpbWVDaGVja2JveCA9IGNoZWNrZWRTZWxlY3RlZE9iai5zaG93TXVsdGlUaW1lQ2hlY2tib3g7XHJcbiAgICB0aGlzLnNob3daZXJvVGltZUNoZWNrYm94ID0gY2hlY2tlZFNlbGVjdGVkT2JqLnNob3daZXJvVGltZUNoZWNrYm94O1xyXG4gICAgdGhpcy5zaG93RW50ZXJUaW1lQ2hlY2tib3ggPSBjaGVja2VkU2VsZWN0ZWRPYmouc2hvd0VudGVyVGltZUNoZWNrYm94O1xyXG4gICAgdGhpcy5tdWx0aVRpbWVDaGVja2JveENoZWNrZWQgPSBjaGVja2VkU2VsZWN0ZWRPYmoubXVsdGlUaW1lQ2hlY2tib3hDaGVja2VkO1xyXG4gICAgdGhpcy56ZXJvVGltZUNoZWNrYm94Q2hlY2tlZCA9IGNoZWNrZWRTZWxlY3RlZE9iai56ZXJvVGltZUNoZWNrYm94Q2hlY2tlZDtcclxuICAgIHRoaXMuZW50ZXJUaW1lQ2hlY2tib3hDaGVja2VkID0gY2hlY2tlZFNlbGVjdGVkT2JqLmVudGVyVGltZUNoZWNrYm94Q2hlY2tlZDsgICAgXHJcbiAgfVxyXG4gIFxyXG4gIHNlbGVjdE9yVW5zZWxlY3RNdWx0aVRpbWVDaGVja2JveCgpIHtcclxuICAgIHRoaXMubXVsdGlUaW1lQ2hlY2tib3hDaGVja2VkID0gIXRoaXMubXVsdGlUaW1lQ2hlY2tib3hDaGVja2VkO1xyXG4gICAgdGhpcy5kaXNhYmxlVGltZUZpbHRlckFwcGx5QnV0dG9uKCk7XHJcbiAgfVxyXG5cclxuICBzZWxlY3RPclVuc2VsZWN0WmVyb1RpbWVDaGVja2JveCgpIHtcclxuICAgIHRoaXMuemVyb1RpbWVDaGVja2JveENoZWNrZWQgPSAhdGhpcy56ZXJvVGltZUNoZWNrYm94Q2hlY2tlZDtcclxuICAgIHRoaXMuZGlzYWJsZVRpbWVGaWx0ZXJBcHBseUJ1dHRvbigpO1xyXG4gIH1cclxuXHJcbiAgc2VsZWN0T3JVbnNlbGVjdEVudGVyVGltZUNoZWNrYm94KCkge1xyXG4gICAgdGhpcy5lbnRlclRpbWVDaGVja2JveENoZWNrZWQgPSAhdGhpcy5lbnRlclRpbWVDaGVja2JveENoZWNrZWQ7XHJcbiAgICB0aGlzLmRpc2FibGVUaW1lRmlsdGVyQXBwbHlCdXR0b24oKTtcclxuICB9XHJcblxyXG4gIGNoZWNrSWZUaW1lVG9vbHRpcElzRmlsdGVyZWQoKSB7XHJcbiAgICBsZXQgcHJldmlvdXNTZWxlY3RlZFRpbWVGaWx0ZXIgPSB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmdldFByZXZpb3VzU2VsZWN0ZWRUaW1lRmlsdGVyKCk7XHJcbiAgICBsZXQgY3VycmVudFNlbGVjdGVkVGltZUZpbHRlciA9IHRoaXMuYW5uYUZpbHRlclNlcnZpY2UuZ2V0Q3VycmVudFNlbGVjdGVkVGltZUZpbHRlcih0aGlzLnNlbGVjdGVkRnJvbVRpbWUsIHRoaXMuc2VsZWN0ZWRUb1RpbWUsIHRoaXMubXVsdGlUaW1lQ2hlY2tib3hDaGVja2VkLCB0aGlzLnplcm9UaW1lQ2hlY2tib3hDaGVja2VkLCB0aGlzLmVudGVyVGltZUNoZWNrYm94Q2hlY2tlZCk7XHJcblxyXG4gICAgdGhpcy5pc0ZpbHRlckNoYW5nZWQgPSAhaXNFcXVhbChwcmV2aW91c1NlbGVjdGVkVGltZUZpbHRlciwgY3VycmVudFNlbGVjdGVkVGltZUZpbHRlcik7XHJcbiAgICByZXR1cm4gdGhpcy5pc0ZpbHRlckNoYW5nZWQ7XHJcbiAgfVxyXG5jaGVja0lmSW52YWxpZFRpbWVJc0VudGVyZWQoKXtcclxuICBpZiAodGhpcy5zdGFydFRpbWVIb3VyRXJyIHx8IHRoaXMuc3RhcnRUaW1lTWluRXJyIHx8IHRoaXMuZW5kVGltZUhvdXJFcnIgfHwgdGhpcy5lbmRUaW1lTWluRXJyKSB7IFxyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG4gIGVsc2V7XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG59XHJcbiAgZGlzYWJsZVRpbWVGaWx0ZXJBcHBseUJ1dHRvbigpIHtcclxuICAgXHJcbiAgIGlmKHRoaXMuaXNTb3J0QW5kRmlsdGVyQWJzZW50KXtcclxuICAgIHRoaXMuZGlzYWJsZVRpbWVGaWx0ZXJBcHBseUJ0bj0gdGhpcy5jaGVja0lmSW52YWxpZFRpbWVJc0VudGVyZWQoKSB8fCAhdGhpcy5jaGVja0lmVGltZVRvb2x0aXBJc0ZpbHRlcmVkKCkgXHJcbiAgIH1cclxuICAgZWxzZXtcclxuICAgIGlmICh0aGlzLnNob3dGaWx0ZXJDb21wb25lbnQgJiYgdGhpcy5zaG93U29ydENvbXBvbmVudCkge1xyXG4gICAgICBsZXQgaXNGaWx0ZXJDaGFuZ2VkID0gdGhpcy5jaGVja0lmVGltZVRvb2x0aXBJc0ZpbHRlcmVkKCk7XHJcbiAgICAgIGxldCBpc1NvcnRDaGFuZ2VkID0gdGhpcy5jaGVja0lmU29ydGluZ0NoYW5nZWQoKTtcclxuICAgICAgdGhpcy5kaXNhYmxlVGltZUZpbHRlckFwcGx5QnRuID0gIXRoaXMudmFsaWRhdGVUaW1lRmlsdGVySW5wdXQoKSB8fCAoIWlzU29ydENoYW5nZWQgJiYgIWlzRmlsdGVyQ2hhbmdlZCk7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmICh0aGlzLnNob3dGaWx0ZXJDb21wb25lbnQpIHtcclxuICAgICAgdGhpcy5kaXNhYmxlVGltZUZpbHRlckFwcGx5QnRuID0gIXRoaXMudmFsaWRhdGVUaW1lRmlsdGVySW5wdXQoKSB8fCAhdGhpcy5jaGVja0lmVGltZVRvb2x0aXBJc0ZpbHRlcmVkKCk7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmICh0aGlzLnNob3dTb3J0Q29tcG9uZW50KSB7XHJcbiAgICAgIHRoaXMuZGlzYWJsZVRpbWVGaWx0ZXJBcHBseUJ0biA9ICF0aGlzLmNoZWNrSWZTb3J0aW5nQ2hhbmdlZCgpO1xyXG4gICAgfVxyXG4gICB9XHJcbiAgICBcclxuXHJcbiAgfVxyXG5cclxuICBjaGVja0lmU29ydGluZ0NoYW5nZWQoKXtcclxuICAgIHRoaXMuaXNTb3J0Q2hhbmdlZCA9IHRoaXMuYW5uYUZpbHRlclNlcnZpY2UuY2hlY2tJZlNvcnRpbmdDaGFuZ2VkKHRoaXMudGVtcFNvcnRPcmRlcik7XHJcbiAgICByZXR1cm4gdGhpcy5pc1NvcnRDaGFuZ2VkO1xyXG4gIH1cclxuXHJcbiAgdmFsaWRhdGVUaW1lRmlsdGVySW5wdXQoKSB7XHJcbiAgICBpZiAodGhpcy5zdGFydFRpbWVIb3VyRXJyIHx8IHRoaXMuc3RhcnRUaW1lTWluRXJyIHx8IHRoaXMuZW5kVGltZUhvdXJFcnIgfHwgdGhpcy5lbmRUaW1lTWluRXJyKSB7XHJcbiAgICAgIFxyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCh0aGlzLnNob3dNdWx0aVRpbWVDaGVja2JveCAmJiAhdGhpcy5tdWx0aVRpbWVDaGVja2JveENoZWNrZWQpICYmXHJcbiAgICAgICh0aGlzLnNob3daZXJvVGltZUNoZWNrYm94ICYmICF0aGlzLnplcm9UaW1lQ2hlY2tib3hDaGVja2VkKSAmJlxyXG4gICAgICAodGhpcy5zaG93RW50ZXJUaW1lQ2hlY2tib3ggJiYgIXRoaXMuZW50ZXJUaW1lQ2hlY2tib3hDaGVja2VkKSkge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICBcclxuICAgIFxyXG4gICAgICByZXR1cm4gIXRoaXMuYW5uYUZpbHRlclNlcnZpY2UuY2hlY2tJZlN0YXJ0VGltZUlzQWZ0ZXJFbmRUaW1lKHRoaXMuc2VsZWN0ZWRGcm9tVGltZSwgdGhpcy5zZWxlY3RlZFRvVGltZSk7XHJcbiAgICBcclxuICAgXHJcbiAgfVxyXG5cclxuXHJcblxyXG4gIGFwcGx5VGltZUZpbHRlcnMoKSB7XHJcbiAgICBpZih0aGlzLmlzU29ydEFuZEZpbHRlckFic2VudCl7XHJcbiAgICAgIGxldCB0aW1lU2VsZWN0ZWQ9W3RoaXMuc2VsZWN0ZWRGcm9tVGltZSx0aGlzLnNlbGVjdGVkVG9UaW1lXVxyXG4gICAgICB0aGlzLnRpbWVDaGFuZ2VzLmVtaXQodGltZVNlbGVjdGVkKVxyXG4gICAgfVxyXG4gICAgZWxzZXtcclxuICAgICAgdGhpcy5hcHBseVRpbWVGaWx0ZXJPbkRhdGEoKTtcclxuICAgICAgdGhpcy5hcHBseVNvcnRpbmdPbkZpbHRlcmVkRGF0YSgpO1xyXG4gICAgICB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnVwZGF0ZVN0YXRlT2ZBbGxUaGVLZXlzKHRoaXMuYW5uYVNvcnRTZXJ2aWNlLmNvbHVtblNvcnRTdGF0ZSk7XHJcbiAgICAgIHRoaXMuZW1pdERhdGEoKTtcclxuICAgIH1cclxuICAgXHJcbiAgICB0aGlzLmNsb3NlVG9vbHRpcC5lbWl0KCk7XHJcbiAgfVxyXG5cclxuICBlbWl0RGF0YSgpIHtcclxuICAgIGlmICh0aGlzLmlzRmlsdGVyQ2hhbmdlZCAmJiB0aGlzLmlzU29ydENoYW5nZWQpIHtcclxuICAgICAgdGhpcy5maWx0ZXJBcHBsaWVkVG9UYWJsZS5lbWl0KHRoaXMudGFibGVEYXRhKTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pc0ZpbHRlckNoYW5nZWQpIHtcclxuICAgICAgdGhpcy5maWx0ZXJBcHBsaWVkVG9UYWJsZS5lbWl0KHRoaXMudGFibGVEYXRhKTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pc1NvcnRDaGFuZ2VkKSB7XHJcbiAgICAgIHRoaXMuZ2V0U29ydFR5cGUuZW1pdCh0aGlzLnRlbXBTb3J0T3JkZXIpO1xyXG4gICAgICB0aGlzLnNvcnRpbmdBcHBsaWVkVG9UYWJsZS5lbWl0KHRoaXMudGFibGVEYXRhKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNoYW5nZVN0YXJ0VGltZUhvdXIoaW5jcmVtZW50OiBib29sZWFuKSB7XHJcbiAgICBpZiAoIXRoaXMuc3RhcnRUaW1lSG91ckVycikge1xyXG4gICAgICB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmluY3JlbWVudE9yRGVjcmVtZW50SG91cihpbmNyZW1lbnQsIHRoaXMuc2VsZWN0ZWRGcm9tVGltZSk7XHJcbiAgICAgIHRoaXMuc3RhcnRUaW1lSG91ckNoYW5nZSh0aGlzLnNlbGVjdGVkRnJvbVRpbWVbMF0udG9TdHJpbmcoKSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjaGFuZ2VFbmRUaW1lSG91cihpbmNyZW1lbnQ6IGJvb2xlYW4pIHtcclxuICAgIGlmICghdGhpcy5lbmRUaW1lSG91ckVycikge1xyXG4gICAgICB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmluY3JlbWVudE9yRGVjcmVtZW50SG91cihpbmNyZW1lbnQsIHRoaXMuc2VsZWN0ZWRUb1RpbWUpO1xyXG4gICAgICB0aGlzLmVuZFRpbWVIb3VyQ2hhbmdlKHRoaXMuc2VsZWN0ZWRUb1RpbWVbMF0udG9TdHJpbmcoKSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjaGFuZ2VFbmRUaW1lTWludXRlKGluY3JlbWVudDogYm9vbGVhbikge1xyXG4gICAgaWYgKCF0aGlzLmVuZFRpbWVNaW5FcnIpIHtcclxuICAgICAgdGhpcy5hbm5hRmlsdGVyU2VydmljZS5pbmNyZW1lbnRPckRlY3JlbWVudE1pbihpbmNyZW1lbnQsIHRoaXMuc2VsZWN0ZWRUb1RpbWUpO1xyXG4gICAgICB0aGlzLmVuZFRpbWVNaW5DaGFuZ2UodGhpcy5zZWxlY3RlZFRvVGltZVsxXS50b1N0cmluZygpKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNoYW5nZVN0YXJ0VGltZU1pbnV0ZShpbmNyZW1lbnQ6IGJvb2xlYW4pIHtcclxuICAgIGlmICghdGhpcy5zdGFydFRpbWVNaW5FcnIpIHtcclxuICAgICAgdGhpcy5hbm5hRmlsdGVyU2VydmljZS5pbmNyZW1lbnRPckRlY3JlbWVudE1pbihpbmNyZW1lbnQsIHRoaXMuc2VsZWN0ZWRGcm9tVGltZSk7XHJcbiAgICAgIHRoaXMuc3RhcnRUaW1lTWluQ2hhbmdlKHRoaXMuc2VsZWN0ZWRGcm9tVGltZVsxXS50b1N0cmluZygpKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHN0YXJ0VGltZUhvdXJDaGFuZ2UodmFsOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuc3RhcnRUaW1lSG91ckVyciA9IHRoaXMuYW5uYUZpbHRlclNlcnZpY2UuaXNIb3VyVmFsdWVJbnZhbGlkKHZhbCk7XHJcbiAgICB0aGlzLmRpc2FibGVUaW1lRmlsdGVyQXBwbHlCdXR0b24oKTtcclxuICB9XHJcblxyXG4gIHN0YXJ0VGltZU1pbkNoYW5nZSh2YWw6IHN0cmluZykge1xyXG4gICAgdGhpcy5zdGFydFRpbWVNaW5FcnIgPSB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmlzTWludXRlVmFsdWVJbnZhbGlkKHZhbCk7XHJcbiAgICB0aGlzLmRpc2FibGVUaW1lRmlsdGVyQXBwbHlCdXR0b24oKTtcclxuICB9XHJcblxyXG4gIGVuZFRpbWVIb3VyQ2hhbmdlKHZhbDogc3RyaW5nKSB7XHJcbiAgICB0aGlzLmVuZFRpbWVIb3VyRXJyID0gdGhpcy5hbm5hRmlsdGVyU2VydmljZS5pc0hvdXJWYWx1ZUludmFsaWQodmFsKTtcclxuICAgIHRoaXMuZGlzYWJsZVRpbWVGaWx0ZXJBcHBseUJ1dHRvbigpO1xyXG4gIH1cclxuXHJcbiAgZW5kVGltZU1pbkNoYW5nZSh2YWw6IHN0cmluZykge1xyXG4gICAgdGhpcy5lbmRUaW1lTWluRXJyID0gdGhpcy5hbm5hRmlsdGVyU2VydmljZS5pc01pbnV0ZVZhbHVlSW52YWxpZCh2YWwpO1xyXG4gICAgdGhpcy5kaXNhYmxlVGltZUZpbHRlckFwcGx5QnV0dG9uKCk7XHJcbiAgfVxyXG5cclxuICBhcHBseVNvcnRpbmdPbkZpbHRlcmVkRGF0YSgpe1xyXG4gICAgaWYodGhpcy5zaG93U29ydENvbXBvbmVudCl7XHJcbiAgICAgIGlmKHRoaXMuaXNTb3J0Q2hhbmdlZCl7XHJcbiAgICAgICAgdGhpcy50YWJsZURhdGEgPSB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnVwZGF0ZVNvcnRNYXAodGhpcy50ZW1wU29ydE9yZGVyLCB0aGlzLnRhYmxlRGF0YSwgdGhpcy5pc0x1ckFuZENzckNvbXBvbmVudCk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSBpZih0aGlzLmlzRmlsdGVyQ2hhbmdlZCl7XHJcbiAgICAgICAgdGhpcy50YWJsZURhdGEgPSB0aGlzLmFubmFTb3J0U2VydmljZS5jaGVja0lmU29ydGluZ0lzQXBwbGllZCh0aGlzLnRhYmxlRGF0YSwgdGhpcy5pc0x1ckFuZENzckNvbXBvbmVudCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2UgaWYodGhpcy5pc0ZpbHRlckNoYW5nZWQpe1xyXG4gICAgICB0aGlzLnRhYmxlRGF0YSA9IHRoaXMuYW5uYVNvcnRTZXJ2aWNlLmNoZWNrSWZTb3J0aW5nSXNBcHBsaWVkKHRoaXMudGFibGVEYXRhLCB0aGlzLmlzTHVyQW5kQ3NyQ29tcG9uZW50KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGFwcGx5VGltZUZpbHRlck9uRGF0YSgpIHtcclxuICAgIGlmICh0aGlzLnNob3dGaWx0ZXJDb21wb25lbnQgJiYgdGhpcy5pc0ZpbHRlckNoYW5nZWQpIHtcclxuICAgICAgbGV0IGN1cnJlbnRTZWxlY3RlZFRpbWVGaWx0ZXIgPSB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmdldEN1cnJlbnRTZWxlY3RlZFRpbWVGaWx0ZXIodGhpcy5zZWxlY3RlZEZyb21UaW1lLCB0aGlzLnNlbGVjdGVkVG9UaW1lLCB0aGlzLm11bHRpVGltZUNoZWNrYm94Q2hlY2tlZCwgdGhpcy56ZXJvVGltZUNoZWNrYm94Q2hlY2tlZCwgdGhpcy5lbnRlclRpbWVDaGVja2JveENoZWNrZWQpO1xyXG4gXHJcbiAgICAgIGxldCBpc0ZpbHRlcmVkID0gdGhpcy5hbm5hRmlsdGVyU2VydmljZS5yZU9yZGVyQXBwbGllZEZpbHRlcnNTdGF0ZSh0aGlzLmNsb25lZFRhYmxlRGF0YSwgY3VycmVudFNlbGVjdGVkVGltZUZpbHRlcik7XHJcbiAgICAgIHRoaXMuYW5uYUZpbHRlclNlcnZpY2UudG9vbHRpcFNlbGVjdGVkTWFwLnNldCh0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnNlbGVjdGVkUmFkaW8sIGN1cnJlbnRTZWxlY3RlZFRpbWVGaWx0ZXIpO1xyXG4gICAgICB0aGlzLnRhYmxlRGF0YSA9IHRoaXMuYW5uYUZpbHRlclNlcnZpY2UuZmlsdGVyRGF0YSh0aGlzLmNsb25lZFRhYmxlRGF0YSwgXCJcIik7XHJcblxyXG4gICAgICBpZiAoIWlzRmlsdGVyZWQpIHtcclxuICAgICAgICB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnRvb2x0aXBTZWxlY3RlZE1hcC5kZWxldGUodGhpcy5hbm5hRmlsdGVyU2VydmljZS5zZWxlY3RlZFJhZGlvKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmFubmFTb3J0U2VydmljZS5ub1NvcnRpbmdBcHBsaWVkRGF0YSA9IGNsb25lRGVlcCh0aGlzLnRhYmxlRGF0YSk7XHJcblxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2xvc2VUaW1lRmlsdGVyKCkge1xyXG4gICAgdGhpcy5zZWxlY3RlZEZyb21UaW1lID0gY2xvbmVEZWVwKHRoaXMuY2xvbmVkU2VsZWN0ZWRGcm9tVGltZSk7XHJcbiAgICB0aGlzLnNlbGVjdGVkVG9UaW1lID0gY2xvbmVEZWVwKHRoaXMuY2xvbmVkU2VsZWN0ZWRUb1RpbWUpO1xyXG4gICAgdGhpcy5jbG9zZVRvb2x0aXAuZW1pdCgpO1xyXG4gIH1cclxuXHJcbiAgY2xlYXJDb2x1bW5GaWx0ZXIoKSB7XHJcbiAgICB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmNsZWFyQ29sdW1uRmlsdGVyKCk7XHJcbiAgICB0aGlzLnRhYmxlRGF0YSA9IGNsb25lRGVlcCh0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmZpbHRlckRhdGEodGhpcy5jbG9uZWRUYWJsZURhdGEsIFwiXCIpKTtcclxuICAgIHRoaXMuYW5uYVNvcnRTZXJ2aWNlLm5vU29ydGluZ0FwcGxpZWREYXRhID0gdGhpcy50YWJsZURhdGE7XHJcbiAgICB0aGlzLnRhYmxlRGF0YSA9IHRoaXMuYW5uYVNvcnRTZXJ2aWNlLmNoZWNrSWZTb3J0aW5nSXNBcHBsaWVkKHRoaXMudGFibGVEYXRhLCB0aGlzLmlzTHVyQW5kQ3NyQ29tcG9uZW50KTtcclxuICAgIHRoaXMuYW5uYUZpbHRlclNlcnZpY2UudXBkYXRlU3RhdGVPZlRoZUN1cnJlbnRGaWx0ZXJUYWIodGhpcy5hbm5hU29ydFNlcnZpY2UuY29sdW1uU29ydFN0YXRlKTtcclxuICAgIHRoaXMuZmlsdGVyQXBwbGllZFRvVGFibGUuZW1pdCh0aGlzLnRhYmxlRGF0YSk7XHJcbiAgfVxyXG5cclxuICBzdG9yZVNvcnRUeXBlSW5UZW1wVmFyaWFibGUoZXZlbnQ6IFNvcnRUeXBlKSB7XHJcbiAgICB0aGlzLnRlbXBTb3J0T3JkZXIgPSBldmVudDtcclxuICAgIHRoaXMuZGlzYWJsZVRpbWVGaWx0ZXJBcHBseUJ1dHRvbigpO1xyXG4gIH1cclxuXHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cInJhZGlvLWNvbnRhaW5lclwiICpuZ0lmPVwic2hvd0ZpbHRlckhlYWRlclRhYnNcIj5cclxuICAgIDxkaXYgKm5nRm9yPVwibGV0IGRhdGEgb2YgZmlsdGVyVGFiT2JqZWN0c1wiPlxyXG4gICAgICAgIDxwIGNsYXNzPVwiZmlsdGVyLXRhYlwiIFt0aXRsZV09XCJkYXRhLmxhYmVsXCIgKGNsaWNrKT1cInBvcHVsYXRlVG9vbHRpcERhdGFCYXNlZE9uU2VsZWN0ZWRSYWRpbyhkYXRhLCB0cnVlKVwiIFtuZ0NsYXNzXT1cInsnYWN0aXZlJzogYW5uYUZpbHRlclNlcnZpY2Uuc2VsZWN0ZWRSYWRpbyA9PSBkYXRhLmtleX1cIiAqbmdJZj1cImZpbHRlclRhYk9iamVjdHMubGVuZ3RoID4gMFwiPnt7IGRhdGEubGFiZWwgfX08L3A+XHJcbiAgICA8L2Rpdj5cclxuPC9kaXY+XHJcblxyXG48YW5uYS1jb3JlLXNvcnQtbGliICpuZ0lmPVwic2hvd1NvcnRDb21wb25lbnRcIiBbbmdDbGFzc109XCJ7J25vLWJvdHRvbS1ib3JkZXInOiAhc2hvd0ZpbHRlckNvbXBvbmVudH1cIlxyXG4oc29ydE9wdGlvbkNsaWNrZWQpPVwic3RvcmVTb3J0VHlwZUluVGVtcFZhcmlhYmxlKCRldmVudClcIiBbc29ydE9iamVjdEtleV09XCJhbm5hRmlsdGVyU2VydmljZS5zZWxlY3RlZFJhZGlvXCI+PC9hbm5hLWNvcmUtc29ydC1saWI+XHJcblxyXG48bmctY29udGFpbmVyICpuZ0lmPVwic2hvd0ZpbHRlckNvbXBvbmVudFwiPlxyXG4gICAgPGJ1dHRvbiBjbGFzcz1cImNvbHVtbi1jbGVhci1hbGxcIiAqbmdJZj1cInNob3dDbGVhckFsbEZpbHRlclwiICBbZGlzYWJsZWRdPVwiZGlzYWJsZUNvbHVtbkNsZWFyQWxsQnRuXCIgKGNsaWNrKT1cImNsZWFyQ29sdW1uRmlsdGVyKClcIj5DbGVhciBmaWx0ZXI8L2J1dHRvbj5cclxuICAgIDxkaXZcclxuICAgICAgICBjbGFzcz1cInRpbWUtZmlsdGVyLWNoZWNrYm94ZXNcIlxyXG4gICAgICAgICpuZ0lmPVwic2hvd0FsbFRpbWVSYW5nZUNoZWNrYm94ZXNcIlxyXG4gICAgPlxyXG4gICAgICAgIDwhLS0gTXVsdGkgdGltZSBvcHRpb24gY2hlY2tib3ggLS0+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIiBzdHlsZT1cInBhZGRpbmc6IDAuNXJlbSAwIDAuNXJlbSAwLjVyZW1cIiAqbmdJZj1cInNob3dNdWx0aVRpbWVDaGVja2JveFwiPlxyXG4gICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJtdWx0aVRpbWVDaGVja2JveENoZWNrZWRcIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJtYXRlcmlhbC1pY29ucyBjdXN0b20tY29sdW1uLWNoZWNrYm94LWNoZWNrZWRcIlxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdE9yVW5zZWxlY3RNdWx0aVRpbWVDaGVja2JveCgpXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgY2hlY2tfYm94XHJcbiAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICpuZ0lmPVwiIW11bHRpVGltZUNoZWNrYm94Q2hlY2tlZFwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cIm1hdGVyaWFsLWljb25zIGN1c3RvbS1jb2x1bW4tY2hlY2tib3gtdW5jaGVja2VkXCJcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RPclVuc2VsZWN0TXVsdGlUaW1lQ2hlY2tib3goKVwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIGNoZWNrX2JveF9vdXRsaW5lX2JsYW5rXHJcbiAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgPHAgc3R5bGU9XCJtYXJnaW4tbGVmdDogMnB4XCI+SW5jbHVkZSBNdWx0aTwvcD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8IS0tIFplcm8gdGltZSBvcHRpb24gY2hlY2tib3ggLS0+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIiBzdHlsZT1cInBhZGRpbmc6IDAuNXJlbSAwIDAuNXJlbSAwLjVyZW1cIiAqbmdJZj1cInNob3daZXJvVGltZUNoZWNrYm94XCI+XHJcbiAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAqbmdJZj1cInplcm9UaW1lQ2hlY2tib3hDaGVja2VkXCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwibWF0ZXJpYWwtaWNvbnMgY3VzdG9tLWNvbHVtbi1jaGVja2JveC1jaGVja2VkXCJcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RPclVuc2VsZWN0WmVyb1RpbWVDaGVja2JveCgpXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgY2hlY2tfYm94XHJcbiAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICpuZ0lmPVwiIXplcm9UaW1lQ2hlY2tib3hDaGVja2VkXCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwibWF0ZXJpYWwtaWNvbnMgY3VzdG9tLWNvbHVtbi1jaGVja2JveC11bmNoZWNrZWRcIlxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdE9yVW5zZWxlY3RaZXJvVGltZUNoZWNrYm94KClcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICBjaGVja19ib3hfb3V0bGluZV9ibGFua1xyXG4gICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgIDxwIHN0eWxlPVwibWFyZ2luLWxlZnQ6IDJweFwiPkluY2x1ZGUgWmVybzwvcD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8IS0tIEVudGVyIHRpbWUgcmFuZ2Ugb3B0aW9uIGNoZWNrYm94IC0tPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCIgc3R5bGU9XCJwYWRkaW5nOiAwLjVyZW0gMCAwLjVyZW0gMC41cmVtXCIgKm5nSWY9XCJzaG93RW50ZXJUaW1lQ2hlY2tib3hcIj5cclxuICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICpuZ0lmPVwiZW50ZXJUaW1lQ2hlY2tib3hDaGVja2VkXCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwibWF0ZXJpYWwtaWNvbnMgY3VzdG9tLWNvbHVtbi1jaGVja2JveC1jaGVja2VkXCJcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RPclVuc2VsZWN0RW50ZXJUaW1lQ2hlY2tib3goKVwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIGNoZWNrX2JveFxyXG4gICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAqbmdJZj1cIiFlbnRlclRpbWVDaGVja2JveENoZWNrZWRcIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJtYXRlcmlhbC1pY29ucyBjdXN0b20tY29sdW1uLWNoZWNrYm94LXVuY2hlY2tlZFwiXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0T3JVbnNlbGVjdEVudGVyVGltZUNoZWNrYm94KClcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICBjaGVja19ib3hfb3V0bGluZV9ibGFua1xyXG4gICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgIDxwIHN0eWxlPVwibWFyZ2luLWxlZnQ6IDJweFwiPkVudGVyIHRpbWUgcmFuZ2U8L3A+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJ0aW1lLWxhYmVsLWNvbnRhaW5lclwiPlxyXG4gICAgICAgIDxsYWJlbD57e3N0YXJ0RnJvbVRleHR9fTwvbGFiZWw+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJ0aW1lLWNvbnRhaW5lclwiPlxyXG4gICAgICAgIDxpbnB1dCBjbGFzcz1cImZvcm0tY29udHJvbCBudW1iZXJJbnB1dFwiIFtuZ0NsYXNzXT1cInsnZXJyb3ItYm9yZGVyJzogc3RhcnRUaW1lSG91ckVycn1cIiBbKG5nTW9kZWwpXT1cInNlbGVjdGVkRnJvbVRpbWVbMF1cIiB0eXBlPVwidGV4dFwiIHBhdHRlcm49XCJbMS0xMl0qXCIgKG5nTW9kZWxDaGFuZ2UpPVwic3RhcnRUaW1lSG91ckNoYW5nZSgkZXZlbnQpXCIgLz5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiYXJyb3ctY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgIDxpIGNsYXNzPVwibWRpIG1kaS1tZW51LXVwIHVwd2FyZFwiIChjbGljayk9XCJjaGFuZ2VTdGFydFRpbWVIb3VyKHRydWUpXCI+PC9pPlxyXG4gICAgICAgICAgICA8aSBjbGFzcz1cIm1kaSBtZGktbWVudS1kb3duIGRvd253YXJkXCIgKGNsaWNrKT1cImNoYW5nZVN0YXJ0VGltZUhvdXIoZmFsc2UpXCI+PC9pPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwiZG90XCI+Ojwvc3Bhbj5cclxuICAgICAgICA8aW5wdXQgY2xhc3M9XCJmb3JtLWNvbnRyb2wgbnVtYmVySW5wdXRcIiBbbmdDbGFzc109XCJ7J2Vycm9yLWJvcmRlcic6IHN0YXJ0VGltZU1pbkVycn1cIiBbKG5nTW9kZWwpXT1cInNlbGVjdGVkRnJvbVRpbWVbMV1cIiB0eXBlPVwidGV4dFwiIHBhdHRlcm49XCJbMC01OV0qXCIgKG5nTW9kZWxDaGFuZ2UpPVwic3RhcnRUaW1lTWluQ2hhbmdlKCRldmVudClcIi8+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImFycm93LWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICA8aSBjbGFzcz1cIm1kaSBtZGktbWVudS11cCB1cHdhcmRcIiAoY2xpY2spPVwiY2hhbmdlU3RhcnRUaW1lTWludXRlKHRydWUpXCI+PC9pPlxyXG4gICAgICAgICAgICA8aSBjbGFzcz1cIm1kaSBtZGktbWVudS1kb3duIGRvd253YXJkXCIgc3R5bGU9XCJwb3NpdGlvbjogcmVsYXRpdmU7bGVmdDogLjI1cHg7XCIgKGNsaWNrKT1cImNoYW5nZVN0YXJ0VGltZU1pbnV0ZShmYWxzZSlcIj48L2k+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgPG1hdC1idXR0b24tdG9nZ2xlLWdyb3VwIFsobmdNb2RlbCldPVwic2VsZWN0ZWRGcm9tVGltZVsyXVwiIChuZ01vZGVsQ2hhbmdlKT1cImRpc2FibGVUaW1lRmlsdGVyQXBwbHlCdXR0b24oKVwiPlxyXG4gICAgICAgICAgICAgICAgPG1hdC1idXR0b24tdG9nZ2xlIHZhbHVlPVwiQU1cIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3Bhbj5BTTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvbWF0LWJ1dHRvbi10b2dnbGU+XHJcbiAgICAgICAgICAgICAgICA8bWF0LWJ1dHRvbi10b2dnbGUgdmFsdWU9XCJQTVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuPlBNPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9tYXQtYnV0dG9uLXRvZ2dsZT5cclxuICAgICAgICAgICAgPC9tYXQtYnV0dG9uLXRvZ2dsZS1ncm91cD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJ0aW1lLWxhYmVsLWNvbnRhaW5lclwiPlxyXG4gICAgICAgIDxsYWJlbD57e2VuZFRvVGV4dH19PC9sYWJlbD5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cInRpbWUtY29udGFpbmVyXCI+XHJcbiAgICAgICAgPGlucHV0IGNsYXNzPVwiZm9ybS1jb250cm9sIG51bWJlcklucHV0XCIgWyhuZ01vZGVsKV09XCJzZWxlY3RlZFRvVGltZVswXVwiIFtuZ0NsYXNzXT1cInsnZXJyb3ItYm9yZGVyJzogZW5kVGltZUhvdXJFcnJ9XCIgKG5nTW9kZWxDaGFuZ2UpPVwiZW5kVGltZUhvdXJDaGFuZ2UoJGV2ZW50KVwiIHR5cGU9XCJ0ZXh0XCJwYXR0ZXJuPVwiWzEtMTJdKlwiIC8+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImFycm93LWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICA8aSBjbGFzcz1cIm1kaSBtZGktbWVudS11cCB1cHdhcmRcIiAoY2xpY2spPVwiY2hhbmdlRW5kVGltZUhvdXIodHJ1ZSlcIj48L2k+XHJcbiAgICAgICAgICAgIDxpIGNsYXNzPVwibWRpIG1kaS1tZW51LWRvd24gZG93bndhcmRcIiAoY2xpY2spPVwiY2hhbmdlRW5kVGltZUhvdXIoZmFsc2UpXCI+PC9pPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwiZG90XCI+Ojwvc3Bhbj5cclxuICAgICAgICA8aW5wdXQgY2xhc3M9XCJmb3JtLWNvbnRyb2wgbnVtYmVySW5wdXRcIiBbbmdDbGFzc109XCJ7J2Vycm9yLWJvcmRlcic6IGVuZFRpbWVNaW5FcnJ9XCIgWyhuZ01vZGVsKV09XCJzZWxlY3RlZFRvVGltZVsxXVwiIChuZ01vZGVsQ2hhbmdlKT1cImVuZFRpbWVNaW5DaGFuZ2UoJGV2ZW50KVwiIHR5cGU9XCJ0ZXh0XCJwYXR0ZXJuPVwiWzAtNTldKlwiIC8+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImFycm93LWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICA8aSBjbGFzcz1cIm1kaSBtZGktbWVudS11cCB1cHdhcmRcIiAoY2xpY2spPVwiY2hhbmdlRW5kVGltZU1pbnV0ZSh0cnVlKVwiPjwvaT5cclxuICAgICAgICAgICAgPGkgY2xhc3M9XCJtZGkgbWRpLW1lbnUtZG93biBkb3dud2FyZFwiIHN0eWxlPVwicG9zaXRpb246IHJlbGF0aXZlO2xlZnQ6IC4yNXB4O1wiIChjbGljayk9XCJjaGFuZ2VFbmRUaW1lTWludXRlKGZhbHNlKVwiPjwvaT5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICA8bWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXAgWyhuZ01vZGVsKV09XCJzZWxlY3RlZFRvVGltZVsyXVwiIChuZ01vZGVsQ2hhbmdlKT1cImRpc2FibGVUaW1lRmlsdGVyQXBwbHlCdXR0b24oKVwiPlxyXG4gICAgICAgICAgICAgICAgPG1hdC1idXR0b24tdG9nZ2xlIHZhbHVlPVwiQU1cIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3Bhbj5BTTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvbWF0LWJ1dHRvbi10b2dnbGU+XHJcbiAgICAgICAgICAgICAgICA8bWF0LWJ1dHRvbi10b2dnbGUgdmFsdWU9XCJQTVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuPlBNPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9tYXQtYnV0dG9uLXRvZ2dsZT5cclxuICAgICAgICAgICAgPC9tYXQtYnV0dG9uLXRvZ2dsZS1ncm91cD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG48L25nLWNvbnRhaW5lcj5cclxuXHJcbjxkaXYgY2xhc3M9XCJidXR0b25zLWNvbnRhaW5lclwiPlxyXG4gICAgPGJ1dHRvbiBjbGFzcz1cImJ1dHRvblwiIChjbGljayk9XCJjbG9zZVRpbWVGaWx0ZXIoKVwiPkNhbmNlbDwvYnV0dG9uPlxyXG4gICAgPGJ1dHRvblxyXG4gICAgICAgIGNsYXNzPVwiYnV0dG9uXCJcclxuICAgICAgICBbbmdDbGFzc109XCJ7IGRpc2FibGVkOiBkaXNhYmxlVGltZUZpbHRlckFwcGx5QnRuIH1cIlxyXG4gICAgICAgIChjbGljayk9XCJhcHBseVRpbWVGaWx0ZXJzKClcIlxyXG4gICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlVGltZUZpbHRlckFwcGx5QnRuXCJcclxuICAgID5cclxuICAgICAgICBBcHBseVxyXG4gICAgPC9idXR0b24+XHJcbjwvZGl2PiJdfQ==