@annalib/anna-core 20.2.19 → 20.2.21

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 (160) hide show
  1. package/README.md +28 -28
  2. package/{esm2020 → esm2022}/annalib-anna-core.mjs +4 -4
  3. package/esm2022/lib/anna-core-shared-lib/components/anna-buyer-approval-icon-template/anna-buyer-approval-icon-template.component.mjs +14 -0
  4. package/esm2022/lib/anna-core-shared-lib/components/anna-deleted-order-icon-template/anna-deleted-order-icon-template.component.mjs +13 -0
  5. package/esm2022/lib/anna-core-shared-lib/components/anna-est-icon-template/anna-est-icon-template.component.mjs +11 -0
  6. package/esm2022/lib/anna-core-shared-lib/components/anna-icon-column/anna-icon-column.component.mjs +43 -0
  7. package/esm2022/lib/anna-core-shared-lib/components/anna-live-icon-template/anna-live-icon-template.component.mjs +14 -0
  8. package/esm2022/lib/anna-core-shared-lib/components/anna-no-data/anna-no-data.component.mjs +22 -0
  9. package/esm2022/lib/anna-core-shared-lib/components/anna-notify-icon-template/anna-notify-icon-template.component.mjs +13 -0
  10. package/esm2022/lib/anna-core-shared-lib/components/anna-pay-for-performance-icon-template/anna-pay-for-performance-icon-template.component.mjs +22 -0
  11. package/esm2022/lib/anna-core-shared-lib/components/anna-rejected-icon-template/anna-rejected-icon-template.component.mjs +14 -0
  12. package/esm2022/lib/anna-core-shared-lib/constants/shared.constant.mjs +44 -0
  13. package/{esm2020 → esm2022}/lib/anna-core-shared-lib/directives/digits-only/digits-only.directive.mjs +273 -273
  14. package/{esm2020 → esm2022}/lib/anna-core-shared-lib/directives/fixed-rows-popup-table/fixed-rows-popup-table.directive.mjs +46 -46
  15. package/{esm2020 → esm2022}/lib/anna-core-shared-lib/directives/show-ellipsis-text/show-ellipsis-text.directive.mjs +39 -39
  16. package/esm2022/lib/anna-core-shared-lib/models/anna-generic-data-type.model.mjs +2 -0
  17. package/esm2022/lib/anna-core-shared-lib/models/anna-global-dropdown-config.model.mjs +2 -0
  18. package/esm2022/lib/anna-core-shared-lib/models/anna-non-editable-gt-models.mjs +11 -0
  19. package/{esm2020 → esm2022}/lib/anna-core-shared-lib/models/anna-sort.model.mjs +7 -7
  20. package/{esm2020 → esm2022}/lib/anna-core-shared-lib/models/anna-tooltip.model.mjs +30 -30
  21. package/{esm2020 → esm2022}/lib/anna-core-shared-lib/pipes/annaConvertArrayToCommaSeperatedValue.pipe.mjs +39 -39
  22. package/{esm2020 → esm2022}/lib/anna-core-shared-lib/pipes/annaConvertZeroOrNullOrUndefined.pipe.mjs +27 -27
  23. package/{esm2020 → esm2022}/lib/anna-core-shared-lib/pipes/annaDateFormatter.pipe.mjs +22 -22
  24. package/{esm2020 → esm2022}/lib/anna-core-shared-lib/pipes/annaFilterSearchedText.pipe.mjs +55 -55
  25. package/{esm2020 → esm2022}/lib/anna-core-shared-lib/pipes/annaReplaceChar.pipe.mjs +26 -26
  26. package/{esm2020 → esm2022}/lib/anna-core-shared-lib/pipes/annaTypeOfData.pipe.mjs +17 -17
  27. package/{esm2020 → esm2022}/lib/anna-core-shared-lib/services/anna-date-time-format.service.mjs +208 -208
  28. package/esm2022/lib/anna-core-shared-lib/services/anna-filter.service.mjs +1259 -0
  29. package/{esm2020 → esm2022}/lib/anna-core-shared-lib/services/anna-generic-table.service.mjs +151 -151
  30. package/esm2022/lib/anna-core-shared-lib/services/anna-global-config.service.mjs +135 -0
  31. package/{esm2020 → esm2022}/lib/anna-core-shared-lib/services/anna-number-format.service.mjs +53 -53
  32. package/{esm2020 → esm2022}/lib/anna-core-shared-lib/services/anna-persisting-filter.service.mjs +65 -65
  33. package/{esm2020 → esm2022}/lib/anna-core-shared-lib/services/anna-sort.service.mjs +178 -178
  34. package/esm2022/lib/anna-core.module.mjs +226 -0
  35. package/esm2022/lib/anna-dropdown-lib/components/anna-calendar-filter/anna-calendar-filter.component.mjs +160 -0
  36. package/esm2022/lib/anna-dropdown-lib/components/anna-week-calendar-filter/anna-week-calendar-filter.component.mjs +371 -0
  37. package/esm2022/lib/anna-generic-table-lib/components/anna-column-filters/anna-column-checkbox-filter/anna-column-checkbox-filter.component.mjs +252 -0
  38. package/esm2022/lib/anna-generic-table-lib/components/anna-column-filters/anna-column-date-range-filter/anna-column-date-range-filter.component.mjs +185 -0
  39. package/esm2022/lib/anna-generic-table-lib/components/anna-column-filters/anna-column-slider-filter/anna-column-slider-filter.component.mjs +312 -0
  40. package/esm2022/lib/anna-generic-table-lib/components/anna-column-filters/anna-column-time-filter/anna-column-time-filter.component.mjs +298 -0
  41. package/esm2022/lib/anna-generic-table-lib/components/anna-non-editable-generic-table/anna-non-editable-generic-table.component.mjs +845 -0
  42. package/esm2022/lib/anna-generic-table-lib/components/anna-sort/anna-sort.component.mjs +64 -0
  43. package/esm2022/lib/anna-generic-table-lib/components/anna-table-virtual-scroll-viewport/anna-table-virtual-scroll-viewport.component.mjs +352 -0
  44. package/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 +204 -0
  45. package/{esm2020 → esm2022}/lib/anna-generic-table-lib/directives/anna-fixed-row-size-table-virtual-scroll-strategy/index.mjs +2 -2
  46. package/esm2022/lib/anna-generic-table-lib/directives/anna-virtual-table/anna-virtual-table.directive.mjs +180 -0
  47. package/{esm2020 → esm2022}/lib/anna-generic-table-lib/directives/anna-virtual-table/index.mjs +2 -2
  48. package/{esm2020 → esm2022}/public-api.mjs +58 -58
  49. package/fesm2022/annalib-anna-core.mjs +6063 -0
  50. package/fesm2022/annalib-anna-core.mjs.map +1 -0
  51. package/index.d.ts +5 -5
  52. package/lib/anna-core-shared-lib/components/anna-buyer-approval-icon-template/anna-buyer-approval-icon-template.component.d.ts +8 -8
  53. package/lib/anna-core-shared-lib/components/anna-deleted-order-icon-template/anna-deleted-order-icon-template.component.d.ts +8 -8
  54. package/lib/anna-core-shared-lib/components/anna-est-icon-template/anna-est-icon-template.component.d.ts +5 -5
  55. package/lib/anna-core-shared-lib/components/anna-icon-column/anna-icon-column.component.d.ts +17 -17
  56. package/lib/anna-core-shared-lib/components/anna-live-icon-template/anna-live-icon-template.component.d.ts +8 -8
  57. package/lib/anna-core-shared-lib/components/anna-no-data/anna-no-data.component.d.ts +11 -11
  58. package/lib/anna-core-shared-lib/components/anna-notify-icon-template/anna-notify-icon-template.component.d.ts +8 -8
  59. package/lib/anna-core-shared-lib/components/anna-pay-for-performance-icon-template/anna-pay-for-performance-icon-template.component.d.ts +12 -12
  60. package/lib/anna-core-shared-lib/components/anna-rejected-icon-template/anna-rejected-icon-template.component.d.ts +8 -8
  61. package/lib/anna-core-shared-lib/constants/shared.constant.d.ts +42 -41
  62. package/lib/anna-core-shared-lib/directives/digits-only/digits-only.directive.d.ts +34 -34
  63. package/lib/anna-core-shared-lib/directives/fixed-rows-popup-table/fixed-rows-popup-table.directive.d.ts +16 -16
  64. package/lib/anna-core-shared-lib/directives/show-ellipsis-text/show-ellipsis-text.directive.d.ts +10 -10
  65. package/lib/anna-core-shared-lib/models/anna-generic-data-type.model.d.ts +16 -16
  66. package/lib/anna-core-shared-lib/models/anna-global-dropdown-config.model.d.ts +97 -97
  67. package/lib/anna-core-shared-lib/models/anna-non-editable-gt-models.d.ts +118 -118
  68. package/lib/anna-core-shared-lib/models/anna-sort.model.d.ts +11 -11
  69. package/lib/anna-core-shared-lib/models/anna-tooltip.model.d.ts +25 -25
  70. package/lib/anna-core-shared-lib/pipes/annaConvertArrayToCommaSeperatedValue.pipe.d.ts +9 -9
  71. package/lib/anna-core-shared-lib/pipes/annaConvertZeroOrNullOrUndefined.pipe.d.ts +9 -9
  72. package/lib/anna-core-shared-lib/pipes/annaDateFormatter.pipe.d.ts +8 -8
  73. package/lib/anna-core-shared-lib/pipes/annaFilterSearchedText.pipe.d.ts +9 -9
  74. package/lib/anna-core-shared-lib/pipes/annaReplaceChar.pipe.d.ts +9 -9
  75. package/lib/anna-core-shared-lib/pipes/annaTypeOfData.pipe.d.ts +7 -7
  76. package/lib/anna-core-shared-lib/services/anna-date-time-format.service.d.ts +28 -28
  77. package/lib/anna-core-shared-lib/services/anna-filter.service.d.ts +154 -154
  78. package/lib/anna-core-shared-lib/services/anna-generic-table.service.d.ts +27 -27
  79. package/lib/anna-core-shared-lib/services/anna-global-config.service.d.ts +21 -21
  80. package/lib/anna-core-shared-lib/services/anna-number-format.service.d.ts +8 -8
  81. package/lib/anna-core-shared-lib/services/anna-persisting-filter.service.d.ts +9 -9
  82. package/lib/anna-core-shared-lib/services/anna-sort.service.d.ts +18 -18
  83. package/lib/anna-core.module.d.ts +45 -45
  84. package/lib/anna-dropdown-lib/components/anna-calendar-filter/anna-calendar-filter.component.d.ts +45 -45
  85. package/lib/anna-dropdown-lib/components/anna-week-calendar-filter/anna-week-calendar-filter.component.d.ts +70 -70
  86. package/lib/anna-generic-table-lib/components/anna-column-filters/anna-column-checkbox-filter/anna-column-checkbox-filter.component.d.ts +60 -60
  87. 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
  88. package/lib/anna-generic-table-lib/components/anna-column-filters/anna-column-slider-filter/anna-column-slider-filter.component.d.ts +65 -65
  89. package/lib/anna-generic-table-lib/components/anna-column-filters/anna-column-time-filter/anna-column-time-filter.component.d.ts +83 -83
  90. package/lib/anna-generic-table-lib/components/anna-non-editable-generic-table/anna-non-editable-generic-table.component.d.ts +174 -174
  91. package/lib/anna-generic-table-lib/components/anna-sort/anna-sort.component.d.ts +17 -17
  92. package/lib/anna-generic-table-lib/components/anna-table-virtual-scroll-viewport/anna-table-virtual-scroll-viewport.component.d.ts +141 -141
  93. 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
  94. package/lib/anna-generic-table-lib/directives/anna-fixed-row-size-table-virtual-scroll-strategy/index.d.ts +1 -1
  95. package/lib/anna-generic-table-lib/directives/anna-virtual-table/anna-virtual-table.directive.d.ts +45 -45
  96. package/lib/anna-generic-table-lib/directives/anna-virtual-table/index.d.ts +1 -1
  97. package/package.json +5 -11
  98. package/public-api.d.ts +42 -42
  99. package/src/lib/anna-common-scss/_animate.scss +27 -27
  100. package/src/lib/anna-common-scss/_application-spacing.scss +7 -7
  101. package/src/lib/anna-common-scss/_bootstrap-tooltip.scss +27 -27
  102. package/src/lib/anna-common-scss/_button.scss +18 -18
  103. package/src/lib/anna-common-scss/_colors.scss +107 -107
  104. package/src/lib/anna-common-scss/_common-order-listing-table.scss +172 -172
  105. package/src/lib/anna-common-scss/_custom-anna-datepicker.scss +14 -14
  106. package/src/lib/anna-common-scss/_customDropdown.scss +123 -123
  107. package/src/lib/anna-common-scss/_dashboard-partials.scss +106 -106
  108. package/src/lib/anna-common-scss/_date-picker-form.scss +87 -87
  109. package/src/lib/anna-common-scss/_easy-filter.scss +138 -138
  110. package/src/lib/anna-common-scss/_edit-filter-popup.scss +70 -70
  111. package/src/lib/anna-common-scss/_filters.scss +712 -712
  112. package/src/lib/anna-common-scss/_font.scss +9 -9
  113. package/src/lib/anna-common-scss/_fonts.scss +86 -86
  114. package/src/lib/anna-common-scss/_generic-modal.scss +63 -63
  115. package/src/lib/anna-common-scss/_generic-table-common.scss +198 -198
  116. package/src/lib/anna-common-scss/_gt-table.scss +425 -425
  117. package/src/lib/anna-common-scss/_legend.scss +11 -11
  118. package/src/lib/anna-common-scss/_mat-button-toggle.scss +38 -38
  119. package/src/lib/anna-common-scss/_mat-menu.scss +17 -17
  120. package/src/lib/anna-common-scss/_mixins.scss +187 -187
  121. package/src/lib/anna-common-scss/_modal.scss +37 -37
  122. package/src/lib/anna-common-scss/_popup-filter-toggle-button.scss +36 -36
  123. package/src/lib/anna-common-scss/_scrollbar.scss +14 -14
  124. package/src/lib/anna-common-scss/_sort.scss +30 -30
  125. package/src/lib/anna-common-scss/_toggle.scss +86 -86
  126. package/src/lib/anna-common-scss/style.scss +1 -1
  127. package/src/lib/anna-common-scss/third-party-lib/_angular-material-mat-radio.scss +25 -25
  128. package/src/lib/anna-common-scss/third-party-lib/_anna-mat-button-toggle-group-size-lg.scss +34 -34
  129. package/src/lib/anna-common-scss/third-party-lib/_mat-autocomplete.scss +31 -31
  130. package/esm2020/lib/anna-core-shared-lib/components/anna-buyer-approval-icon-template/anna-buyer-approval-icon-template.component.mjs +0 -14
  131. package/esm2020/lib/anna-core-shared-lib/components/anna-deleted-order-icon-template/anna-deleted-order-icon-template.component.mjs +0 -13
  132. package/esm2020/lib/anna-core-shared-lib/components/anna-est-icon-template/anna-est-icon-template.component.mjs +0 -11
  133. package/esm2020/lib/anna-core-shared-lib/components/anna-icon-column/anna-icon-column.component.mjs +0 -43
  134. package/esm2020/lib/anna-core-shared-lib/components/anna-live-icon-template/anna-live-icon-template.component.mjs +0 -14
  135. package/esm2020/lib/anna-core-shared-lib/components/anna-no-data/anna-no-data.component.mjs +0 -22
  136. package/esm2020/lib/anna-core-shared-lib/components/anna-notify-icon-template/anna-notify-icon-template.component.mjs +0 -13
  137. package/esm2020/lib/anna-core-shared-lib/components/anna-pay-for-performance-icon-template/anna-pay-for-performance-icon-template.component.mjs +0 -22
  138. package/esm2020/lib/anna-core-shared-lib/components/anna-rejected-icon-template/anna-rejected-icon-template.component.mjs +0 -14
  139. package/esm2020/lib/anna-core-shared-lib/constants/shared.constant.mjs +0 -43
  140. package/esm2020/lib/anna-core-shared-lib/models/anna-generic-data-type.model.mjs +0 -2
  141. package/esm2020/lib/anna-core-shared-lib/models/anna-global-dropdown-config.model.mjs +0 -2
  142. package/esm2020/lib/anna-core-shared-lib/models/anna-non-editable-gt-models.mjs +0 -11
  143. package/esm2020/lib/anna-core-shared-lib/services/anna-filter.service.mjs +0 -1259
  144. package/esm2020/lib/anna-core-shared-lib/services/anna-global-config.service.mjs +0 -135
  145. package/esm2020/lib/anna-core.module.mjs +0 -237
  146. package/esm2020/lib/anna-dropdown-lib/components/anna-calendar-filter/anna-calendar-filter.component.mjs +0 -160
  147. package/esm2020/lib/anna-dropdown-lib/components/anna-week-calendar-filter/anna-week-calendar-filter.component.mjs +0 -371
  148. package/esm2020/lib/anna-generic-table-lib/components/anna-column-filters/anna-column-checkbox-filter/anna-column-checkbox-filter.component.mjs +0 -252
  149. package/esm2020/lib/anna-generic-table-lib/components/anna-column-filters/anna-column-date-range-filter/anna-column-date-range-filter.component.mjs +0 -185
  150. package/esm2020/lib/anna-generic-table-lib/components/anna-column-filters/anna-column-slider-filter/anna-column-slider-filter.component.mjs +0 -312
  151. package/esm2020/lib/anna-generic-table-lib/components/anna-column-filters/anna-column-time-filter/anna-column-time-filter.component.mjs +0 -298
  152. package/esm2020/lib/anna-generic-table-lib/components/anna-non-editable-generic-table/anna-non-editable-generic-table.component.mjs +0 -840
  153. package/esm2020/lib/anna-generic-table-lib/components/anna-sort/anna-sort.component.mjs +0 -64
  154. package/esm2020/lib/anna-generic-table-lib/components/anna-table-virtual-scroll-viewport/anna-table-virtual-scroll-viewport.component.mjs +0 -352
  155. package/esm2020/lib/anna-generic-table-lib/directives/anna-fixed-row-size-table-virtual-scroll-strategy/anna-fixed-row-size-table-virtual-scroll-strategy.directive.mjs +0 -204
  156. package/esm2020/lib/anna-generic-table-lib/directives/anna-virtual-table/anna-virtual-table.directive.mjs +0 -180
  157. package/fesm2015/annalib-anna-core.mjs +0 -6076
  158. package/fesm2015/annalib-anna-core.mjs.map +0 -1
  159. package/fesm2020/annalib-anna-core.mjs +0 -6068
  160. package/fesm2020/annalib-anna-core.mjs.map +0 -1
@@ -0,0 +1,298 @@
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 { MatButtonToggleModule } from '@angular/material/button-toggle';
7
+ import { FormsModule } from '@angular/forms';
8
+ import { AnnaSortComponent } from '../../anna-sort/anna-sort.component';
9
+ import { NgIf, NgFor, NgClass } from '@angular/common';
10
+ import * as i0 from "@angular/core";
11
+ import * as i1 from "../../../../anna-core-shared-lib/services/anna-sort.service";
12
+ import * as i2 from "../../../../anna-core-shared-lib/services/anna-date-time-format.service";
13
+ import * as i3 from "../../../../anna-core-shared-lib/services/anna-filter.service";
14
+ import * as i4 from "@angular/forms";
15
+ import * as i5 from "@angular/material/button-toggle";
16
+ export class AnnaColumnTimeFilterComponent {
17
+ constructor(annaSortService, annaDateTimeFormatService, annaFilterService) {
18
+ this.annaSortService = annaSortService;
19
+ this.annaDateTimeFormatService = annaDateTimeFormatService;
20
+ this.annaFilterService = annaFilterService;
21
+ this.showClearAllFilter = true;
22
+ this.startFromText = 'From';
23
+ this.endToText = 'To';
24
+ this.isSortAndFilterAbsent = false;
25
+ this.timeChanges = new EventEmitter();
26
+ this.filterAppliedToTable = new EventEmitter();
27
+ this.sortingAppliedToTable = new EventEmitter();
28
+ this.getSortType = new EventEmitter();
29
+ this.closeTooltip = new EventEmitter();
30
+ this.tempSortOrder = null;
31
+ this.showSortComponent = false;
32
+ this.showFilterComponent = false;
33
+ this.disableColumnClearAllBtn = true;
34
+ this.tableColumns = [];
35
+ this.totalRowColumns = null;
36
+ }
37
+ ngOnInit() {
38
+ this.populateTooltipDataBasedOnSelectedRadio(this.filterTabObjects[0], false);
39
+ }
40
+ populateTooltipDataBasedOnSelectedRadio(activeTab, reload) {
41
+ let header = activeTab.key;
42
+ this.showSortComponent = activeTab.isSortRequired;
43
+ this.showFilterComponent = activeTab.isFilterRequired;
44
+ this.tempSortOrder = null;
45
+ this.isFilterChanged = false;
46
+ this.isSortChanged = false;
47
+ this.annaFilterService.selectedRadio = header;
48
+ this.disableColumnClearAllBtn = this.annaFilterService.disableActiveFilterClearButton();
49
+ if (reload) {
50
+ setTimeout(() => {
51
+ this.createFilterTooltipData(activeTab, header);
52
+ }, 100);
53
+ }
54
+ else {
55
+ this.createFilterTooltipData(activeTab, header);
56
+ }
57
+ }
58
+ createFilterTooltipData(activeTab, header) {
59
+ this.showSortComponent = activeTab.isSortRequired;
60
+ this.showFilterComponent = activeTab.isFilterRequired;
61
+ this.disableTimeFilterApplyBtn = true;
62
+ if (this.showFilterComponent) {
63
+ this.getTimeFilterData(header);
64
+ }
65
+ }
66
+ getTimeFilterData(header) {
67
+ this.startTimeHourErr = this.startTimeMinErr = this.endTimeHourErr = this.endTimeMinErr = false;
68
+ if (this.isSortAndFilterAbsent) {
69
+ this.selectedFromTime = this.clonedTableData[0].time;
70
+ this.selectedToTime = this.clonedTableData[1].time;
71
+ this.selectedFromTime = AnnaDateTimeFormatService.formatToTwelveHrs(this.selectedFromTime, true);
72
+ this.selectedToTime = AnnaDateTimeFormatService.formatToTwelveHrs(this.selectedToTime, true);
73
+ }
74
+ else {
75
+ [this.selectedFromTime, this.selectedToTime] = this.annaFilterService.getSelectedTimeRange(header, this.clonedTableData);
76
+ }
77
+ this.clonedSelectedFromTime = cloneDeep(this.selectedFromTime);
78
+ this.clonedSelectedToTime = cloneDeep(this.selectedToTime);
79
+ let optionsData = this.annaFilterService?.getFilterOptionsData(this.tableData, this.clonedTableData);
80
+ let checkedSelectedObj = this.annaFilterService?.selectUnselectTimeFilterCheckbox(header, optionsData);
81
+ this.showMultiTimeCheckbox = checkedSelectedObj.showMultiTimeCheckbox;
82
+ this.showZeroTimeCheckbox = checkedSelectedObj.showZeroTimeCheckbox;
83
+ this.showEnterTimeCheckbox = checkedSelectedObj.showEnterTimeCheckbox;
84
+ this.multiTimeCheckboxChecked = checkedSelectedObj.multiTimeCheckboxChecked;
85
+ this.zeroTimeCheckboxChecked = checkedSelectedObj.zeroTimeCheckboxChecked;
86
+ this.enterTimeCheckboxChecked = checkedSelectedObj.enterTimeCheckboxChecked;
87
+ }
88
+ selectOrUnselectMultiTimeCheckbox() {
89
+ this.multiTimeCheckboxChecked = !this.multiTimeCheckboxChecked;
90
+ this.disableTimeFilterApplyButton();
91
+ }
92
+ selectOrUnselectZeroTimeCheckbox() {
93
+ this.zeroTimeCheckboxChecked = !this.zeroTimeCheckboxChecked;
94
+ this.disableTimeFilterApplyButton();
95
+ }
96
+ selectOrUnselectEnterTimeCheckbox() {
97
+ this.enterTimeCheckboxChecked = !this.enterTimeCheckboxChecked;
98
+ this.disableTimeFilterApplyButton();
99
+ }
100
+ checkIfTimeTooltipIsFiltered() {
101
+ let previousSelectedTimeFilter = this.annaFilterService.getPreviousSelectedTimeFilter();
102
+ let currentSelectedTimeFilter = this.annaFilterService.getCurrentSelectedTimeFilter(this.selectedFromTime, this.selectedToTime, this.multiTimeCheckboxChecked, this.zeroTimeCheckboxChecked, this.enterTimeCheckboxChecked);
103
+ this.isFilterChanged = !isEqual(previousSelectedTimeFilter, currentSelectedTimeFilter);
104
+ return this.isFilterChanged;
105
+ }
106
+ checkIfInvalidTimeIsEntered() {
107
+ if (this.startTimeHourErr || this.startTimeMinErr || this.endTimeHourErr || this.endTimeMinErr) {
108
+ return true;
109
+ }
110
+ else {
111
+ return false;
112
+ }
113
+ }
114
+ disableTimeFilterApplyButton() {
115
+ if (this.isSortAndFilterAbsent) {
116
+ this.disableTimeFilterApplyBtn = this.checkIfInvalidTimeIsEntered() || !this.checkIfTimeTooltipIsFiltered();
117
+ }
118
+ else {
119
+ if (this.showFilterComponent && this.showSortComponent) {
120
+ let isFilterChanged = this.checkIfTimeTooltipIsFiltered();
121
+ let isSortChanged = this.checkIfSortingChanged();
122
+ this.disableTimeFilterApplyBtn =
123
+ !this.validateTimeFilterInput() || (!isSortChanged && !isFilterChanged);
124
+ }
125
+ else if (this.showFilterComponent) {
126
+ this.disableTimeFilterApplyBtn =
127
+ !this.validateTimeFilterInput() || !this.checkIfTimeTooltipIsFiltered();
128
+ }
129
+ else if (this.showSortComponent) {
130
+ this.disableTimeFilterApplyBtn = !this.checkIfSortingChanged();
131
+ }
132
+ }
133
+ }
134
+ checkIfSortingChanged() {
135
+ this.isSortChanged = this.annaFilterService.checkIfSortingChanged(this.tempSortOrder);
136
+ return this.isSortChanged;
137
+ }
138
+ validateTimeFilterInput() {
139
+ if (this.startTimeHourErr || this.startTimeMinErr || this.endTimeHourErr || this.endTimeMinErr) {
140
+ return false;
141
+ }
142
+ if (this.showMultiTimeCheckbox &&
143
+ !this.multiTimeCheckboxChecked &&
144
+ this.showZeroTimeCheckbox &&
145
+ !this.zeroTimeCheckboxChecked &&
146
+ this.showEnterTimeCheckbox &&
147
+ !this.enterTimeCheckboxChecked) {
148
+ return false;
149
+ }
150
+ return !this.annaFilterService.checkIfStartTimeIsAfterEndTime(this.selectedFromTime, this.selectedToTime);
151
+ }
152
+ applyTimeFilters() {
153
+ if (this.isSortAndFilterAbsent) {
154
+ let timeSelected = [this.selectedFromTime, this.selectedToTime];
155
+ this.timeChanges.emit(timeSelected);
156
+ }
157
+ else {
158
+ this.applyTimeFilterOnData();
159
+ this.applySortingOnFilteredData();
160
+ this.annaFilterService.updateStateOfAllTheKeys(this.annaSortService.columnSortState);
161
+ this.emitData();
162
+ }
163
+ this.closeTooltip.emit();
164
+ }
165
+ emitData() {
166
+ if (this.isFilterChanged && this.isSortChanged) {
167
+ this.filterAppliedToTable.emit(this.tableData);
168
+ }
169
+ else if (this.isFilterChanged) {
170
+ this.filterAppliedToTable.emit(this.tableData);
171
+ }
172
+ else if (this.isSortChanged) {
173
+ this.getSortType.emit(this.tempSortOrder);
174
+ this.sortingAppliedToTable.emit(this.tableData);
175
+ }
176
+ }
177
+ changeStartTimeHour(increment) {
178
+ if (!this.startTimeHourErr) {
179
+ this.annaFilterService.incrementOrDecrementHour(increment, this.selectedFromTime);
180
+ this.startTimeHourChange(this.selectedFromTime[0].toString());
181
+ }
182
+ }
183
+ changeEndTimeHour(increment) {
184
+ if (!this.endTimeHourErr) {
185
+ this.annaFilterService.incrementOrDecrementHour(increment, this.selectedToTime);
186
+ this.endTimeHourChange(this.selectedToTime[0].toString());
187
+ }
188
+ }
189
+ changeEndTimeMinute(increment) {
190
+ if (!this.endTimeMinErr) {
191
+ this.annaFilterService.incrementOrDecrementMin(increment, this.selectedToTime);
192
+ this.endTimeMinChange(this.selectedToTime[1].toString());
193
+ }
194
+ }
195
+ changeStartTimeMinute(increment) {
196
+ if (!this.startTimeMinErr) {
197
+ this.annaFilterService.incrementOrDecrementMin(increment, this.selectedFromTime);
198
+ this.startTimeMinChange(this.selectedFromTime[1].toString());
199
+ }
200
+ }
201
+ startTimeHourChange(val) {
202
+ this.startTimeHourErr = this.annaFilterService.isHourValueInvalid(val);
203
+ this.disableTimeFilterApplyButton();
204
+ }
205
+ startTimeMinChange(val) {
206
+ this.startTimeMinErr = this.annaFilterService.isMinuteValueInvalid(val);
207
+ this.disableTimeFilterApplyButton();
208
+ }
209
+ endTimeHourChange(val) {
210
+ this.endTimeHourErr = this.annaFilterService.isHourValueInvalid(val);
211
+ this.disableTimeFilterApplyButton();
212
+ }
213
+ endTimeMinChange(val) {
214
+ this.endTimeMinErr = this.annaFilterService.isMinuteValueInvalid(val);
215
+ this.disableTimeFilterApplyButton();
216
+ }
217
+ applySortingOnFilteredData() {
218
+ if (this.showSortComponent) {
219
+ if (this.isSortChanged) {
220
+ this.tableData = this.annaFilterService.updateSortMap(this.tempSortOrder, this.tableData, this.isLurAndCsrComponent);
221
+ }
222
+ else if (this.isFilterChanged) {
223
+ this.tableData = this.annaSortService.checkIfSortingIsApplied(this.tableData, this.isLurAndCsrComponent);
224
+ }
225
+ }
226
+ else if (this.isFilterChanged) {
227
+ this.tableData = this.annaSortService.checkIfSortingIsApplied(this.tableData, this.isLurAndCsrComponent);
228
+ }
229
+ }
230
+ applyTimeFilterOnData() {
231
+ if (this.showFilterComponent && this.isFilterChanged) {
232
+ let currentSelectedTimeFilter = this.annaFilterService.getCurrentSelectedTimeFilter(this.selectedFromTime, this.selectedToTime, this.multiTimeCheckboxChecked, this.zeroTimeCheckboxChecked, this.enterTimeCheckboxChecked);
233
+ let isFiltered = this.annaFilterService.reOrderAppliedFiltersState(this.clonedTableData, currentSelectedTimeFilter);
234
+ this.annaFilterService.tooltipSelectedMap.set(this.annaFilterService.selectedRadio, currentSelectedTimeFilter);
235
+ this.tableData = this.annaFilterService.filterData(this.clonedTableData, '');
236
+ if (!isFiltered) {
237
+ this.annaFilterService.tooltipSelectedMap.delete(this.annaFilterService.selectedRadio);
238
+ }
239
+ this.annaSortService.noSortingAppliedData = cloneDeep(this.tableData);
240
+ }
241
+ }
242
+ closeTimeFilter() {
243
+ this.selectedFromTime = cloneDeep(this.clonedSelectedFromTime);
244
+ this.selectedToTime = cloneDeep(this.clonedSelectedToTime);
245
+ this.closeTooltip.emit();
246
+ }
247
+ clearColumnFilter() {
248
+ this.annaFilterService.clearColumnFilter();
249
+ this.tableData = cloneDeep(this.annaFilterService.filterData(this.clonedTableData, ''));
250
+ this.annaSortService.noSortingAppliedData = this.tableData;
251
+ this.tableData = this.annaSortService.checkIfSortingIsApplied(this.tableData, this.isLurAndCsrComponent);
252
+ this.annaFilterService.updateStateOfTheCurrentFilterTab(this.annaSortService.columnSortState);
253
+ this.filterAppliedToTable.emit(this.tableData);
254
+ }
255
+ storeSortTypeInTempVariable(event) {
256
+ this.tempSortOrder = event;
257
+ this.disableTimeFilterApplyButton();
258
+ }
259
+ 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 }); }
260
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: AnnaColumnTimeFilterComponent, isStandalone: true, 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\n class=\"radio-container\"\n *ngIf=\"showFilterHeaderTabs\"\n>\n <div *ngFor=\"let data of filterTabObjects\">\n <p\n class=\"filter-tab\"\n [title]=\"data.label\"\n (click)=\"populateTooltipDataBasedOnSelectedRadio(data, true)\"\n [ngClass]=\"{ active: annaFilterService.selectedRadio == data.key }\"\n *ngIf=\"filterTabObjects.length > 0\"\n >\n {{ data.label }}\n </p>\n </div>\n</div>\n\n<anna-core-sort-lib\n *ngIf=\"showSortComponent\"\n [ngClass]=\"{ 'no-bottom-border': !showFilterComponent }\"\n (sortOptionClicked)=\"storeSortTypeInTempVariable($event)\"\n [sortObjectKey]=\"annaFilterService.selectedRadio\"\n></anna-core-sort-lib>\n\n<ng-container *ngIf=\"showFilterComponent\">\n <button\n class=\"column-clear-all\"\n *ngIf=\"showClearAllFilter\"\n [disabled]=\"disableColumnClearAllBtn\"\n (click)=\"clearColumnFilter()\"\n >\n Clear filter\n </button>\n <div\n class=\"time-filter-checkboxes\"\n *ngIf=\"showAllTimeRangeCheckboxes\"\n >\n <!-- Multi time option checkbox -->\n <div\n class=\"d-flex align-items-center\"\n style=\"padding: 0.5rem 0 0.5rem 0.5rem\"\n *ngIf=\"showMultiTimeCheckbox\"\n >\n <span\n *ngIf=\"multiTimeCheckboxChecked\"\n class=\"material-icons custom-column-checkbox-checked\"\n (click)=\"selectOrUnselectMultiTimeCheckbox()\"\n >\n check_box\n </span>\n <span\n *ngIf=\"!multiTimeCheckboxChecked\"\n class=\"material-icons custom-column-checkbox-unchecked\"\n (click)=\"selectOrUnselectMultiTimeCheckbox()\"\n >\n check_box_outline_blank\n </span>\n <p style=\"margin-left: 2px\">Include Multi</p>\n </div>\n <!-- Zero time option checkbox -->\n <div\n class=\"d-flex align-items-center\"\n style=\"padding: 0.5rem 0 0.5rem 0.5rem\"\n *ngIf=\"showZeroTimeCheckbox\"\n >\n <span\n *ngIf=\"zeroTimeCheckboxChecked\"\n class=\"material-icons custom-column-checkbox-checked\"\n (click)=\"selectOrUnselectZeroTimeCheckbox()\"\n >\n check_box\n </span>\n <span\n *ngIf=\"!zeroTimeCheckboxChecked\"\n class=\"material-icons custom-column-checkbox-unchecked\"\n (click)=\"selectOrUnselectZeroTimeCheckbox()\"\n >\n check_box_outline_blank\n </span>\n <p style=\"margin-left: 2px\">Include Zero</p>\n </div>\n <!-- Enter time range option checkbox -->\n <div\n class=\"d-flex align-items-center\"\n style=\"padding: 0.5rem 0 0.5rem 0.5rem\"\n *ngIf=\"showEnterTimeCheckbox\"\n >\n <span\n *ngIf=\"enterTimeCheckboxChecked\"\n class=\"material-icons custom-column-checkbox-checked\"\n (click)=\"selectOrUnselectEnterTimeCheckbox()\"\n >\n check_box\n </span>\n <span\n *ngIf=\"!enterTimeCheckboxChecked\"\n class=\"material-icons custom-column-checkbox-unchecked\"\n (click)=\"selectOrUnselectEnterTimeCheckbox()\"\n >\n check_box_outline_blank\n </span>\n <p style=\"margin-left: 2px\">Enter time range</p>\n </div>\n </div>\n <div class=\"time-label-container\">\n <label>{{ startFromText }}</label>\n </div>\n <div class=\"time-container\">\n <input\n class=\"form-control numberInput\"\n [ngClass]=\"{ 'error-border': startTimeHourErr }\"\n [(ngModel)]=\"selectedFromTime[0]\"\n type=\"text\"\n pattern=\"[1-12]*\"\n (ngModelChange)=\"startTimeHourChange($event)\"\n />\n <div class=\"arrow-container\">\n <i\n class=\"mdi mdi-menu-up upward\"\n (click)=\"changeStartTimeHour(true)\"\n ></i>\n <i\n class=\"mdi mdi-menu-down downward\"\n (click)=\"changeStartTimeHour(false)\"\n ></i>\n </div>\n <span class=\"dot\">:</span>\n <input\n class=\"form-control numberInput\"\n [ngClass]=\"{ 'error-border': startTimeMinErr }\"\n [(ngModel)]=\"selectedFromTime[1]\"\n type=\"text\"\n pattern=\"[0-59]*\"\n (ngModelChange)=\"startTimeMinChange($event)\"\n />\n <div class=\"arrow-container\">\n <i\n class=\"mdi mdi-menu-up upward\"\n (click)=\"changeStartTimeMinute(true)\"\n ></i>\n <i\n class=\"mdi mdi-menu-down downward\"\n style=\"position: relative; left: 0.25px\"\n (click)=\"changeStartTimeMinute(false)\"\n ></i>\n </div>\n <div>\n <mat-button-toggle-group\n [(ngModel)]=\"selectedFromTime[2]\"\n (ngModelChange)=\"disableTimeFilterApplyButton()\"\n >\n <mat-button-toggle value=\"AM\">\n <span>AM</span>\n </mat-button-toggle>\n <mat-button-toggle value=\"PM\">\n <span>PM</span>\n </mat-button-toggle>\n </mat-button-toggle-group>\n </div>\n </div>\n\n <div class=\"time-label-container\">\n <label>{{ endToText }}</label>\n </div>\n <div class=\"time-container\">\n <input\n class=\"form-control numberInput\"\n [(ngModel)]=\"selectedToTime[0]\"\n [ngClass]=\"{ 'error-border': endTimeHourErr }\"\n (ngModelChange)=\"endTimeHourChange($event)\"\n type=\"text\"\n pattern=\"[1-12]*\"\n />\n <div class=\"arrow-container\">\n <i\n class=\"mdi mdi-menu-up upward\"\n (click)=\"changeEndTimeHour(true)\"\n ></i>\n <i\n class=\"mdi mdi-menu-down downward\"\n (click)=\"changeEndTimeHour(false)\"\n ></i>\n </div>\n <span class=\"dot\">:</span>\n <input\n class=\"form-control numberInput\"\n [ngClass]=\"{ 'error-border': endTimeMinErr }\"\n [(ngModel)]=\"selectedToTime[1]\"\n (ngModelChange)=\"endTimeMinChange($event)\"\n type=\"text\"\n pattern=\"[0-59]*\"\n />\n <div class=\"arrow-container\">\n <i\n class=\"mdi mdi-menu-up upward\"\n (click)=\"changeEndTimeMinute(true)\"\n ></i>\n <i\n class=\"mdi mdi-menu-down downward\"\n style=\"position: relative; left: 0.25px\"\n (click)=\"changeEndTimeMinute(false)\"\n ></i>\n </div>\n <div>\n <mat-button-toggle-group\n [(ngModel)]=\"selectedToTime[2]\"\n (ngModelChange)=\"disableTimeFilterApplyButton()\"\n >\n <mat-button-toggle value=\"AM\">\n <span>AM</span>\n </mat-button-toggle>\n <mat-button-toggle value=\"PM\">\n <span>PM</span>\n </mat-button-toggle>\n </mat-button-toggle-group>\n </div>\n </div>\n</ng-container>\n\n<div class=\"buttons-container\">\n <button\n class=\"button\"\n (click)=\"closeTimeFilter()\"\n >\n Cancel\n </button>\n <button\n class=\"button\"\n [ngClass]=\"{ disabled: disableTimeFilterApplyBtn }\"\n (click)=\"applyTimeFilters()\"\n [disabled]=\"disableTimeFilterApplyBtn\"\n >\n Apply\n </button>\n</div>\n", 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: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: AnnaSortComponent, selector: "anna-core-sort-lib", inputs: ["sortObjectKey"], outputs: ["sortOptionClicked"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i4.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: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.PatternValidator, selector: "[pattern][formControlName],[pattern][formControl],[pattern][ngModel]", inputs: ["pattern"] }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: MatButtonToggleModule }, { kind: "directive", type: i5.MatButtonToggleGroup, selector: "mat-button-toggle-group", inputs: ["appearance", "name", "vertical", "value", "multiple", "disabled"], outputs: ["valueChange", "change"], exportAs: ["matButtonToggleGroup"] }, { kind: "component", type: i5.MatButtonToggle, selector: "mat-button-toggle", inputs: ["disableRipple", "aria-label", "aria-labelledby", "id", "name", "value", "tabIndex", "appearance", "checked", "disabled"], outputs: ["change"], exportAs: ["matButtonToggle"] }] }); }
261
+ }
262
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AnnaColumnTimeFilterComponent, decorators: [{
263
+ type: Component,
264
+ args: [{ selector: 'anna-core-anna-column-time-filter', standalone: true, imports: [NgIf, NgFor, NgClass, AnnaSortComponent, FormsModule, MatButtonToggleModule], template: "<div\n class=\"radio-container\"\n *ngIf=\"showFilterHeaderTabs\"\n>\n <div *ngFor=\"let data of filterTabObjects\">\n <p\n class=\"filter-tab\"\n [title]=\"data.label\"\n (click)=\"populateTooltipDataBasedOnSelectedRadio(data, true)\"\n [ngClass]=\"{ active: annaFilterService.selectedRadio == data.key }\"\n *ngIf=\"filterTabObjects.length > 0\"\n >\n {{ data.label }}\n </p>\n </div>\n</div>\n\n<anna-core-sort-lib\n *ngIf=\"showSortComponent\"\n [ngClass]=\"{ 'no-bottom-border': !showFilterComponent }\"\n (sortOptionClicked)=\"storeSortTypeInTempVariable($event)\"\n [sortObjectKey]=\"annaFilterService.selectedRadio\"\n></anna-core-sort-lib>\n\n<ng-container *ngIf=\"showFilterComponent\">\n <button\n class=\"column-clear-all\"\n *ngIf=\"showClearAllFilter\"\n [disabled]=\"disableColumnClearAllBtn\"\n (click)=\"clearColumnFilter()\"\n >\n Clear filter\n </button>\n <div\n class=\"time-filter-checkboxes\"\n *ngIf=\"showAllTimeRangeCheckboxes\"\n >\n <!-- Multi time option checkbox -->\n <div\n class=\"d-flex align-items-center\"\n style=\"padding: 0.5rem 0 0.5rem 0.5rem\"\n *ngIf=\"showMultiTimeCheckbox\"\n >\n <span\n *ngIf=\"multiTimeCheckboxChecked\"\n class=\"material-icons custom-column-checkbox-checked\"\n (click)=\"selectOrUnselectMultiTimeCheckbox()\"\n >\n check_box\n </span>\n <span\n *ngIf=\"!multiTimeCheckboxChecked\"\n class=\"material-icons custom-column-checkbox-unchecked\"\n (click)=\"selectOrUnselectMultiTimeCheckbox()\"\n >\n check_box_outline_blank\n </span>\n <p style=\"margin-left: 2px\">Include Multi</p>\n </div>\n <!-- Zero time option checkbox -->\n <div\n class=\"d-flex align-items-center\"\n style=\"padding: 0.5rem 0 0.5rem 0.5rem\"\n *ngIf=\"showZeroTimeCheckbox\"\n >\n <span\n *ngIf=\"zeroTimeCheckboxChecked\"\n class=\"material-icons custom-column-checkbox-checked\"\n (click)=\"selectOrUnselectZeroTimeCheckbox()\"\n >\n check_box\n </span>\n <span\n *ngIf=\"!zeroTimeCheckboxChecked\"\n class=\"material-icons custom-column-checkbox-unchecked\"\n (click)=\"selectOrUnselectZeroTimeCheckbox()\"\n >\n check_box_outline_blank\n </span>\n <p style=\"margin-left: 2px\">Include Zero</p>\n </div>\n <!-- Enter time range option checkbox -->\n <div\n class=\"d-flex align-items-center\"\n style=\"padding: 0.5rem 0 0.5rem 0.5rem\"\n *ngIf=\"showEnterTimeCheckbox\"\n >\n <span\n *ngIf=\"enterTimeCheckboxChecked\"\n class=\"material-icons custom-column-checkbox-checked\"\n (click)=\"selectOrUnselectEnterTimeCheckbox()\"\n >\n check_box\n </span>\n <span\n *ngIf=\"!enterTimeCheckboxChecked\"\n class=\"material-icons custom-column-checkbox-unchecked\"\n (click)=\"selectOrUnselectEnterTimeCheckbox()\"\n >\n check_box_outline_blank\n </span>\n <p style=\"margin-left: 2px\">Enter time range</p>\n </div>\n </div>\n <div class=\"time-label-container\">\n <label>{{ startFromText }}</label>\n </div>\n <div class=\"time-container\">\n <input\n class=\"form-control numberInput\"\n [ngClass]=\"{ 'error-border': startTimeHourErr }\"\n [(ngModel)]=\"selectedFromTime[0]\"\n type=\"text\"\n pattern=\"[1-12]*\"\n (ngModelChange)=\"startTimeHourChange($event)\"\n />\n <div class=\"arrow-container\">\n <i\n class=\"mdi mdi-menu-up upward\"\n (click)=\"changeStartTimeHour(true)\"\n ></i>\n <i\n class=\"mdi mdi-menu-down downward\"\n (click)=\"changeStartTimeHour(false)\"\n ></i>\n </div>\n <span class=\"dot\">:</span>\n <input\n class=\"form-control numberInput\"\n [ngClass]=\"{ 'error-border': startTimeMinErr }\"\n [(ngModel)]=\"selectedFromTime[1]\"\n type=\"text\"\n pattern=\"[0-59]*\"\n (ngModelChange)=\"startTimeMinChange($event)\"\n />\n <div class=\"arrow-container\">\n <i\n class=\"mdi mdi-menu-up upward\"\n (click)=\"changeStartTimeMinute(true)\"\n ></i>\n <i\n class=\"mdi mdi-menu-down downward\"\n style=\"position: relative; left: 0.25px\"\n (click)=\"changeStartTimeMinute(false)\"\n ></i>\n </div>\n <div>\n <mat-button-toggle-group\n [(ngModel)]=\"selectedFromTime[2]\"\n (ngModelChange)=\"disableTimeFilterApplyButton()\"\n >\n <mat-button-toggle value=\"AM\">\n <span>AM</span>\n </mat-button-toggle>\n <mat-button-toggle value=\"PM\">\n <span>PM</span>\n </mat-button-toggle>\n </mat-button-toggle-group>\n </div>\n </div>\n\n <div class=\"time-label-container\">\n <label>{{ endToText }}</label>\n </div>\n <div class=\"time-container\">\n <input\n class=\"form-control numberInput\"\n [(ngModel)]=\"selectedToTime[0]\"\n [ngClass]=\"{ 'error-border': endTimeHourErr }\"\n (ngModelChange)=\"endTimeHourChange($event)\"\n type=\"text\"\n pattern=\"[1-12]*\"\n />\n <div class=\"arrow-container\">\n <i\n class=\"mdi mdi-menu-up upward\"\n (click)=\"changeEndTimeHour(true)\"\n ></i>\n <i\n class=\"mdi mdi-menu-down downward\"\n (click)=\"changeEndTimeHour(false)\"\n ></i>\n </div>\n <span class=\"dot\">:</span>\n <input\n class=\"form-control numberInput\"\n [ngClass]=\"{ 'error-border': endTimeMinErr }\"\n [(ngModel)]=\"selectedToTime[1]\"\n (ngModelChange)=\"endTimeMinChange($event)\"\n type=\"text\"\n pattern=\"[0-59]*\"\n />\n <div class=\"arrow-container\">\n <i\n class=\"mdi mdi-menu-up upward\"\n (click)=\"changeEndTimeMinute(true)\"\n ></i>\n <i\n class=\"mdi mdi-menu-down downward\"\n style=\"position: relative; left: 0.25px\"\n (click)=\"changeEndTimeMinute(false)\"\n ></i>\n </div>\n <div>\n <mat-button-toggle-group\n [(ngModel)]=\"selectedToTime[2]\"\n (ngModelChange)=\"disableTimeFilterApplyButton()\"\n >\n <mat-button-toggle value=\"AM\">\n <span>AM</span>\n </mat-button-toggle>\n <mat-button-toggle value=\"PM\">\n <span>PM</span>\n </mat-button-toggle>\n </mat-button-toggle-group>\n </div>\n </div>\n</ng-container>\n\n<div class=\"buttons-container\">\n <button\n class=\"button\"\n (click)=\"closeTimeFilter()\"\n >\n Cancel\n </button>\n <button\n class=\"button\"\n [ngClass]=\"{ disabled: disableTimeFilterApplyBtn }\"\n (click)=\"applyTimeFilters()\"\n [disabled]=\"disableTimeFilterApplyBtn\"\n >\n Apply\n </button>\n</div>\n", 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"] }]
265
+ }], ctorParameters: function () { return [{ type: i1.AnnaSortService }, { type: i2.AnnaDateTimeFormatService }, { type: i3.AnnaFilterService }]; }, propDecorators: { tableData: [{
266
+ type: Input
267
+ }], clonedTableData: [{
268
+ type: Input
269
+ }], filterTabObjects: [{
270
+ type: Input
271
+ }], showFilterHeaderTabs: [{
272
+ type: Input
273
+ }], showAllTimeRangeCheckboxes: [{
274
+ type: Input
275
+ }], isLurAndCsrComponent: [{
276
+ type: Input
277
+ }], gtGeneralConfig: [{
278
+ type: Input
279
+ }], showClearAllFilter: [{
280
+ type: Input
281
+ }], startFromText: [{
282
+ type: Input
283
+ }], endToText: [{
284
+ type: Input
285
+ }], isSortAndFilterAbsent: [{
286
+ type: Input
287
+ }], timeChanges: [{
288
+ type: Output
289
+ }], filterAppliedToTable: [{
290
+ type: Output
291
+ }], sortingAppliedToTable: [{
292
+ type: Output
293
+ }], getSortType: [{
294
+ type: Output
295
+ }], closeTooltip: [{
296
+ type: Output
297
+ }] } });
298
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5uYS1jb2x1bW4tdGltZS1maWx0ZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5uYS1jb3JlL3NyYy9saWIvYW5uYS1nZW5lcmljLXRhYmxlLWxpYi9jb21wb25lbnRzL2FubmEtY29sdW1uLWZpbHRlcnMvYW5uYS1jb2x1bW4tdGltZS1maWx0ZXIvYW5uYS1jb2x1bW4tdGltZS1maWx0ZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5uYS1jb3JlL3NyYy9saWIvYW5uYS1nZW5lcmljLXRhYmxlLWxpYi9jb21wb25lbnRzL2FubmEtY29sdW1uLWZpbHRlcnMvYW5uYS1jb2x1bW4tdGltZS1maWx0ZXIvYW5uYS1jb2x1bW4tdGltZS1maWx0ZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBcUIsTUFBTSxlQUFlLENBQUM7QUFFbEcsT0FBTyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQVksTUFBTSxXQUFXLENBQUM7QUFJekQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDZEQUE2RCxDQUFDO0FBQzlGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLCtEQUErRCxDQUFDO0FBQ2xHLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHlFQUF5RSxDQUFDO0FBRXBILE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUN4RSxPQUFPLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7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ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IGNsb25lRGVlcCwgaXNFcXVhbCwgdHJ1bmNhdGUgfSBmcm9tICdsb2Rhc2gtZXMnO1xuXG5pbXBvcnQgeyByYWRpb0J1dHRvbk1vZGVsIH0gZnJvbSAnLi4vLi4vLi4vLi4vYW5uYS1jb3JlLXNoYXJlZC1saWIvbW9kZWxzL2FubmEtdG9vbHRpcC5tb2RlbCc7XG5pbXBvcnQgeyBTb3J0VHlwZSB9IGZyb20gJy4uLy4uLy4uLy4uL2FubmEtY29yZS1zaGFyZWQtbGliL21vZGVscy9hbm5hLXNvcnQubW9kZWwnO1xuaW1wb3J0IHsgQW5uYVNvcnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vYW5uYS1jb3JlLXNoYXJlZC1saWIvc2VydmljZXMvYW5uYS1zb3J0LnNlcnZpY2UnO1xuaW1wb3J0IHsgQW5uYUZpbHRlclNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi9hbm5hLWNvcmUtc2hhcmVkLWxpYi9zZXJ2aWNlcy9hbm5hLWZpbHRlci5zZXJ2aWNlJztcbmltcG9ydCB7IEFubmFEYXRlVGltZUZvcm1hdFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi9hbm5hLWNvcmUtc2hhcmVkLWxpYi9zZXJ2aWNlcy9hbm5hLWRhdGUtdGltZS1mb3JtYXQuc2VydmljZSc7XG5pbXBvcnQgeyBJR3RHZW5lcmFsQ29uZmlnIH0gZnJvbSAnLi4vLi4vLi4vLi4vYW5uYS1jb3JlLXNoYXJlZC1saWIvbW9kZWxzL2FubmEtbm9uLWVkaXRhYmxlLWd0LW1vZGVscyc7XG5pbXBvcnQgeyBNYXRCdXR0b25Ub2dnbGVNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24tdG9nZ2xlJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQW5uYVNvcnRDb21wb25lbnQgfSBmcm9tICcuLi8uLi9hbm5hLXNvcnQvYW5uYS1zb3J0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBOZ0lmLCBOZ0ZvciwgTmdDbGFzcyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnYW5uYS1jb3JlLWFubmEtY29sdW1uLXRpbWUtZmlsdGVyJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vYW5uYS1jb2x1bW4tdGltZS1maWx0ZXIuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2FubmEtY29sdW1uLXRpbWUtZmlsdGVyLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbTmdJZiwgTmdGb3IsIE5nQ2xhc3MsIEFubmFTb3J0Q29tcG9uZW50LCBGb3Jtc01vZHVsZSwgTWF0QnV0dG9uVG9nZ2xlTW9kdWxlXSxcbn0pXG5leHBvcnQgY2xhc3MgQW5uYUNvbHVtblRpbWVGaWx0ZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICAgIEBJbnB1dCgpIHRhYmxlRGF0YTogYW55W107XG4gICAgQElucHV0KCkgY2xvbmVkVGFibGVEYXRhOiBhbnlbXTtcbiAgICBASW5wdXQoKSBmaWx0ZXJUYWJPYmplY3RzOiBhbnlbXTtcbiAgICBASW5wdXQoKSBzaG93RmlsdGVySGVhZGVyVGFiczogYm9vbGVhbjtcbiAgICBASW5wdXQoKSBzaG93QWxsVGltZVJhbmdlQ2hlY2tib3hlczogYm9vbGVhbjtcbiAgICBASW5wdXQoKSBpc0x1ckFuZENzckNvbXBvbmVudDogYm9vbGVhbjtcblxuICAgIEBJbnB1dCgpIGd0R2VuZXJhbENvbmZpZzogSUd0R2VuZXJhbENvbmZpZztcbiAgICBASW5wdXQoKSBzaG93Q2xlYXJBbGxGaWx0ZXI6IGJvb2xlYW4gPSB0cnVlO1xuICAgIEBJbnB1dCgpIHN0YXJ0RnJvbVRleHQ6IHN0cmluZyA9ICdGcm9tJztcbiAgICBASW5wdXQoKSBlbmRUb1RleHQ6IHN0cmluZyA9ICdUbyc7XG4gICAgQElucHV0KCkgaXNTb3J0QW5kRmlsdGVyQWJzZW50OiBib29sZWFuID0gZmFsc2U7XG4gICAgQE91dHB1dCgpIHRpbWVDaGFuZ2VzID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICAgIEBPdXRwdXQoKSBmaWx0ZXJBcHBsaWVkVG9UYWJsZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgICBAT3V0cHV0KCkgc29ydGluZ0FwcGxpZWRUb1RhYmxlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICAgIEBPdXRwdXQoKSBnZXRTb3J0VHlwZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgICBAT3V0cHV0KCkgY2xvc2VUb29sdGlwID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgaXNGaWx0ZXJDaGFuZ2VkOiBib29sZWFuO1xuICAgIHRlbXBTb3J0T3JkZXI6IFNvcnRUeXBlID0gbnVsbDtcbiAgICBpc1NvcnRDaGFuZ2VkOiBib29sZWFuO1xuICAgIHNob3dTb3J0Q29tcG9uZW50OiBib29sZWFuID0gZmFsc2U7XG4gICAgc2hvd0ZpbHRlckNvbXBvbmVudDogYm9vbGVhbiA9IGZhbHNlO1xuICAgIGRpc2FibGVDb2x1bW5DbGVhckFsbEJ0bjogYm9vbGVhbiA9IHRydWU7XG5cbiAgICBzdGFydFRpbWVIb3VyRXJyOiBib29sZWFuO1xuICAgIHN0YXJ0VGltZU1pbkVycjogYm9vbGVhbjtcbiAgICBlbmRUaW1lSG91ckVycjogYm9vbGVhbjtcbiAgICBlbmRUaW1lTWluRXJyOiBib29sZWFuO1xuICAgIHNlbGVjdGVkRnJvbVRpbWU6IGFueVtdO1xuICAgIHNlbGVjdGVkVG9UaW1lOiBhbnlbXTtcbiAgICBjbG9uZWRTZWxlY3RlZEZyb21UaW1lOiBhbnk7XG4gICAgY2xvbmVkU2VsZWN0ZWRUb1RpbWU6IGFueTtcbiAgICBkaXNhYmxlVGltZUZpbHRlckFwcGx5QnRuOiBib29sZWFuO1xuICAgIHRhYmxlQ29sdW1uczogc3RyaW5nW10gPSBbXTtcbiAgICB0b3RhbFJvd0NvbHVtbnM6IHN0cmluZ1tdID0gbnVsbDtcbiAgICBzaG93TXVsdGlUaW1lQ2hlY2tib3g6IGJvb2xlYW47XG4gICAgc2hvd1plcm9UaW1lQ2hlY2tib3g6IGJvb2xlYW47XG4gICAgc2hvd0VudGVyVGltZUNoZWNrYm94OiBib29sZWFuO1xuICAgIG11bHRpVGltZUNoZWNrYm94Q2hlY2tlZDogYm9vbGVhbjtcbiAgICB6ZXJvVGltZUNoZWNrYm94Q2hlY2tlZDogYm9vbGVhbjtcbiAgICBlbnRlclRpbWVDaGVja2JveENoZWNrZWQ6IGJvb2xlYW47XG4gICAgYmluZFZhbHVlRnVuY0NhbGxlZDogYm9vbGVhbjtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIGFubmFTb3J0U2VydmljZTogQW5uYVNvcnRTZXJ2aWNlLFxuICAgICAgICBwdWJsaWMgYW5uYURhdGVUaW1lRm9ybWF0U2VydmljZTogQW5uYURhdGVUaW1lRm9ybWF0U2VydmljZSxcbiAgICAgICAgcHVibGljIGFubmFGaWx0ZXJTZXJ2aWNlOiBBbm5hRmlsdGVyU2VydmljZSxcbiAgICApIHt9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5wb3B1bGF0ZVRvb2x0aXBEYXRhQmFzZWRPblNlbGVjdGVkUmFkaW8odGhpcy5maWx0ZXJUYWJPYmplY3RzWzBdLCBmYWxzZSk7XG4gICAgfVxuXG4gICAgcG9wdWxhdGVUb29sdGlwRGF0YUJhc2VkT25TZWxlY3RlZFJhZGlvKGFjdGl2ZVRhYjogcmFkaW9CdXR0b25Nb2RlbCwgcmVsb2FkOiBib29sZWFuKSB7XG4gICAgICAgIGxldCBoZWFkZXIgPSBhY3RpdmVUYWIua2V5O1xuXG4gICAgICAgIHRoaXMuc2hvd1NvcnRDb21wb25lbnQgPSBhY3RpdmVUYWIuaXNTb3J0UmVxdWlyZWQ7XG4gICAgICAgIHRoaXMuc2hvd0ZpbHRlckNvbXBvbmVudCA9IGFjdGl2ZVRhYi5pc0ZpbHRlclJlcXVpcmVkO1xuXG4gICAgICAgIHRoaXMudGVtcFNvcnRPcmRlciA9IG51bGw7XG4gICAgICAgIHRoaXMuaXNGaWx0ZXJDaGFuZ2VkID0gZmFsc2U7XG4gICAgICAgIHRoaXMuaXNTb3J0Q2hhbmdlZCA9IGZhbHNlO1xuXG4gICAgICAgIHRoaXMuYW5uYUZpbHRlclNlcnZpY2Uuc2VsZWN0ZWRSYWRpbyA9IGhlYWRlcjtcbiAgICAgICAgdGhpcy5kaXNhYmxlQ29sdW1uQ2xlYXJBbGxCdG4gPSB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmRpc2FibGVBY3RpdmVGaWx0ZXJDbGVhckJ1dHRvbigpO1xuXG4gICAgICAgIGlmIChyZWxvYWQpIHtcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuY3JlYXRlRmlsdGVyVG9vbHRpcERhdGEoYWN0aXZlVGFiLCBoZWFkZXIpO1xuICAgICAgICAgICAgfSwgMTAwKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuY3JlYXRlRmlsdGVyVG9vbHRpcERhdGEoYWN0aXZlVGFiLCBoZWFkZXIpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgY3JlYXRlRmlsdGVyVG9vbHRpcERhdGEoYWN0aXZlVGFiOiByYWRpb0J1dHRvbk1vZGVsLCBoZWFkZXI6IHN0cmluZykge1xuICAgICAgICB0aGlzLnNob3dTb3J0Q29tcG9uZW50ID0gYWN0aXZlVGFiLmlzU29ydFJlcXVpcmVkO1xuICAgICAgICB0aGlzLnNob3dGaWx0ZXJDb21wb25lbnQgPSBhY3RpdmVUYWIuaXNGaWx0ZXJSZXF1aXJlZDtcblxuICAgICAgICB0aGlzLmRpc2FibGVUaW1lRmlsdGVyQXBwbHlCdG4gPSB0cnVlO1xuXG4gICAgICAgIGlmICh0aGlzLnNob3dGaWx0ZXJDb21wb25lbnQpIHtcbiAgICAgICAgICAgIHRoaXMuZ2V0VGltZUZpbHRlckRhdGEoaGVhZGVyKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGdldFRpbWVGaWx0ZXJEYXRhKGhlYWRlcjogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc3RhcnRUaW1lSG91ckVyciA9IHRoaXMuc3RhcnRUaW1lTWluRXJyID0gdGhpcy5lbmRUaW1lSG91ckVyciA9IHRoaXMuZW5kVGltZU1pbkVyciA9IGZhbHNlO1xuXG4gICAgICAgIGlmICh0aGlzLmlzU29ydEFuZEZpbHRlckFic2VudCkge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEZyb21UaW1lID0gdGhpcy5jbG9uZWRUYWJsZURhdGFbMF0udGltZTtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRUb1RpbWUgPSB0aGlzLmNsb25lZFRhYmxlRGF0YVsxXS50aW1lO1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEZyb21UaW1lID0gQW5uYURhdGVUaW1lRm9ybWF0U2VydmljZS5mb3JtYXRUb1R3ZWx2ZUhycyh0aGlzLnNlbGVjdGVkRnJvbVRpbWUsIHRydWUpO1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFRvVGltZSA9IEFubmFEYXRlVGltZUZvcm1hdFNlcnZpY2UuZm9ybWF0VG9Ud2VsdmVIcnModGhpcy5zZWxlY3RlZFRvVGltZSwgdHJ1ZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBbdGhpcy5zZWxlY3RlZEZyb21UaW1lLCB0aGlzLnNlbGVjdGVkVG9UaW1lXSA9IHRoaXMuYW5uYUZpbHRlclNlcnZpY2UuZ2V0U2VsZWN0ZWRUaW1lUmFuZ2UoXG4gICAgICAgICAgICAgICAgaGVhZGVyLFxuICAgICAgICAgICAgICAgIHRoaXMuY2xvbmVkVGFibGVEYXRhLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuY2xvbmVkU2VsZWN0ZWRGcm9tVGltZSA9IGNsb25lRGVlcCh0aGlzLnNlbGVjdGVkRnJvbVRpbWUpO1xuICAgICAgICB0aGlzLmNsb25lZFNlbGVjdGVkVG9UaW1lID0gY2xvbmVEZWVwKHRoaXMuc2VsZWN0ZWRUb1RpbWUpO1xuXG4gICAgICAgIGxldCBvcHRpb25zRGF0YSA9IHRoaXMuYW5uYUZpbHRlclNlcnZpY2U/LmdldEZpbHRlck9wdGlvbnNEYXRhKHRoaXMudGFibGVEYXRhLCB0aGlzLmNsb25lZFRhYmxlRGF0YSk7XG5cbiAgICAgICAgbGV0IGNoZWNrZWRTZWxlY3RlZE9iaiA9IHRoaXMuYW5uYUZpbHRlclNlcnZpY2U/LnNlbGVjdFVuc2VsZWN0VGltZUZpbHRlckNoZWNrYm94KGhlYWRlciwgb3B0aW9uc0RhdGEpO1xuXG4gICAgICAgIHRoaXMuc2hvd011bHRpVGltZUNoZWNrYm94ID0gY2hlY2tlZFNlbGVjdGVkT2JqLnNob3dNdWx0aVRpbWVDaGVja2JveDtcbiAgICAgICAgdGhpcy5zaG93WmVyb1RpbWVDaGVja2JveCA9IGNoZWNrZWRTZWxlY3RlZE9iai5zaG93WmVyb1RpbWVDaGVja2JveDtcbiAgICAgICAgdGhpcy5zaG93RW50ZXJUaW1lQ2hlY2tib3ggPSBjaGVja2VkU2VsZWN0ZWRPYmouc2hvd0VudGVyVGltZUNoZWNrYm94O1xuICAgICAgICB0aGlzLm11bHRpVGltZUNoZWNrYm94Q2hlY2tlZCA9IGNoZWNrZWRTZWxlY3RlZE9iai5tdWx0aVRpbWVDaGVja2JveENoZWNrZWQ7XG4gICAgICAgIHRoaXMuemVyb1RpbWVDaGVja2JveENoZWNrZWQgPSBjaGVja2VkU2VsZWN0ZWRPYmouemVyb1RpbWVDaGVja2JveENoZWNrZWQ7XG4gICAgICAgIHRoaXMuZW50ZXJUaW1lQ2hlY2tib3hDaGVja2VkID0gY2hlY2tlZFNlbGVjdGVkT2JqLmVudGVyVGltZUNoZWNrYm94Q2hlY2tlZDtcbiAgICB9XG5cbiAgICBzZWxlY3RPclVuc2VsZWN0TXVsdGlUaW1lQ2hlY2tib3goKSB7XG4gICAgICAgIHRoaXMubXVsdGlUaW1lQ2hlY2tib3hDaGVja2VkID0gIXRoaXMubXVsdGlUaW1lQ2hlY2tib3hDaGVja2VkO1xuICAgICAgICB0aGlzLmRpc2FibGVUaW1lRmlsdGVyQXBwbHlCdXR0b24oKTtcbiAgICB9XG5cbiAgICBzZWxlY3RPclVuc2VsZWN0WmVyb1RpbWVDaGVja2JveCgpIHtcbiAgICAgICAgdGhpcy56ZXJvVGltZUNoZWNrYm94Q2hlY2tlZCA9ICF0aGlzLnplcm9UaW1lQ2hlY2tib3hDaGVja2VkO1xuICAgICAgICB0aGlzLmRpc2FibGVUaW1lRmlsdGVyQXBwbHlCdXR0b24oKTtcbiAgICB9XG5cbiAgICBzZWxlY3RPclVuc2VsZWN0RW50ZXJUaW1lQ2hlY2tib3goKSB7XG4gICAgICAgIHRoaXMuZW50ZXJUaW1lQ2hlY2tib3hDaGVja2VkID0gIXRoaXMuZW50ZXJUaW1lQ2hlY2tib3hDaGVja2VkO1xuICAgICAgICB0aGlzLmRpc2FibGVUaW1lRmlsdGVyQXBwbHlCdXR0b24oKTtcbiAgICB9XG5cbiAgICBjaGVja0lmVGltZVRvb2x0aXBJc0ZpbHRlcmVkKCkge1xuICAgICAgICBsZXQgcHJldmlvdXNTZWxlY3RlZFRpbWVGaWx0ZXIgPSB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmdldFByZXZpb3VzU2VsZWN0ZWRUaW1lRmlsdGVyKCk7XG4gICAgICAgIGxldCBjdXJyZW50U2VsZWN0ZWRUaW1lRmlsdGVyID0gdGhpcy5hbm5hRmlsdGVyU2VydmljZS5nZXRDdXJyZW50U2VsZWN0ZWRUaW1lRmlsdGVyKFxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEZyb21UaW1lLFxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFRvVGltZSxcbiAgICAgICAgICAgIHRoaXMubXVsdGlUaW1lQ2hlY2tib3hDaGVja2VkLFxuICAgICAgICAgICAgdGhpcy56ZXJvVGltZUNoZWNrYm94Q2hlY2tlZCxcbiAgICAgICAgICAgIHRoaXMuZW50ZXJUaW1lQ2hlY2tib3hDaGVja2VkLFxuICAgICAgICApO1xuXG4gICAgICAgIHRoaXMuaXNGaWx0ZXJDaGFuZ2VkID0gIWlzRXF1YWwocHJldmlvdXNTZWxlY3RlZFRpbWVGaWx0ZXIsIGN1cnJlbnRTZWxlY3RlZFRpbWVGaWx0ZXIpO1xuICAgICAgICByZXR1cm4gdGhpcy5pc0ZpbHRlckNoYW5nZWQ7XG4gICAgfVxuICAgIGNoZWNrSWZJbnZhbGlkVGltZUlzRW50ZXJlZCgpIHtcbiAgICAgICAgaWYgKHRoaXMuc3RhcnRUaW1lSG91ckVyciB8fCB0aGlzLnN0YXJ0VGltZU1pbkVyciB8fCB0aGlzLmVuZFRpbWVIb3VyRXJyIHx8IHRoaXMuZW5kVGltZU1pbkVycikge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZGlzYWJsZVRpbWVGaWx0ZXJBcHBseUJ1dHRvbigpIHtcbiAgICAgICAgaWYgKHRoaXMuaXNTb3J0QW5kRmlsdGVyQWJzZW50KSB7XG4gICAgICAgICAgICB0aGlzLmRpc2FibGVUaW1lRmlsdGVyQXBwbHlCdG4gPSB0aGlzLmNoZWNrSWZJbnZhbGlkVGltZUlzRW50ZXJlZCgpIHx8ICF0aGlzLmNoZWNrSWZUaW1lVG9vbHRpcElzRmlsdGVyZWQoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnNob3dGaWx0ZXJDb21wb25lbnQgJiYgdGhpcy5zaG93U29ydENvbXBvbmVudCkge1xuICAgICAgICAgICAgICAgIGxldCBpc0ZpbHRlckNoYW5nZWQgPSB0aGlzLmNoZWNrSWZUaW1lVG9vbHRpcElzRmlsdGVyZWQoKTtcbiAgICAgICAgICAgICAgICBsZXQgaXNTb3J0Q2hhbmdlZCA9IHRoaXMuY2hlY2tJZlNvcnRpbmdDaGFuZ2VkKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5kaXNhYmxlVGltZUZpbHRlckFwcGx5QnRuID1cbiAgICAgICAgICAgICAgICAgICAgIXRoaXMudmFsaWRhdGVUaW1lRmlsdGVySW5wdXQoKSB8fCAoIWlzU29ydENoYW5nZWQgJiYgIWlzRmlsdGVyQ2hhbmdlZCk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuc2hvd0ZpbHRlckNvbXBvbmVudCkge1xuICAgICAgICAgICAgICAgIHRoaXMuZGlzYWJsZVRpbWVGaWx0ZXJBcHBseUJ0biA9XG4gICAgICAgICAgICAgICAgICAgICF0aGlzLnZhbGlkYXRlVGltZUZpbHRlcklucHV0KCkgfHwgIXRoaXMuY2hlY2tJZlRpbWVUb29sdGlwSXNGaWx0ZXJlZCgpO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLnNob3dTb3J0Q29tcG9uZW50KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5kaXNhYmxlVGltZUZpbHRlckFwcGx5QnRuID0gIXRoaXMuY2hlY2tJZlNvcnRpbmdDaGFuZ2VkKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjaGVja0lmU29ydGluZ0NoYW5nZWQoKSB7XG4gICAgICAgIHRoaXMuaXNTb3J0Q2hhbmdlZCA9IHRoaXMuYW5uYUZpbHRlclNlcnZpY2UuY2hlY2tJZlNvcnRpbmdDaGFuZ2VkKHRoaXMudGVtcFNvcnRPcmRlcik7XG4gICAgICAgIHJldHVybiB0aGlzLmlzU29ydENoYW5nZWQ7XG4gICAgfVxuXG4gICAgdmFsaWRhdGVUaW1lRmlsdGVySW5wdXQoKSB7XG4gICAgICAgIGlmICh0aGlzLnN0YXJ0VGltZUhvdXJFcnIgfHwgdGhpcy5zdGFydFRpbWVNaW5FcnIgfHwgdGhpcy5lbmRUaW1lSG91ckVyciB8fCB0aGlzLmVuZFRpbWVNaW5FcnIpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIHRoaXMuc2hvd011bHRpVGltZUNoZWNrYm94ICYmXG4gICAgICAgICAgICAhdGhpcy5tdWx0aVRpbWVDaGVja2JveENoZWNrZWQgJiZcbiAgICAgICAgICAgIHRoaXMuc2hvd1plcm9UaW1lQ2hlY2tib3ggJiZcbiAgICAgICAgICAgICF0aGlzLnplcm9UaW1lQ2hlY2tib3hDaGVja2VkICYmXG4gICAgICAgICAgICB0aGlzLnNob3dFbnRlclRpbWVDaGVja2JveCAmJlxuICAgICAgICAgICAgIXRoaXMuZW50ZXJUaW1lQ2hlY2tib3hDaGVja2VkXG4gICAgICAgICkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuICF0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmNoZWNrSWZTdGFydFRpbWVJc0FmdGVyRW5kVGltZSh0aGlzLnNlbGVjdGVkRnJvbVRpbWUsIHRoaXMuc2VsZWN0ZWRUb1RpbWUpO1xuICAgIH1cblxuICAgIGFwcGx5VGltZUZpbHRlcnMoKSB7XG4gICAgICAgIGlmICh0aGlzLmlzU29ydEFuZEZpbHRlckFic2VudCkge1xuICAgICAgICAgICAgbGV0IHRpbWVTZWxlY3RlZCA9IFt0aGlzLnNlbGVjdGVkRnJvbVRpbWUsIHRoaXMuc2VsZWN0ZWRUb1RpbWVdO1xuICAgICAgICAgICAgdGhpcy50aW1lQ2hhbmdlcy5lbWl0KHRpbWVTZWxlY3RlZCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmFwcGx5VGltZUZpbHRlck9uRGF0YSgpO1xuICAgICAgICAgICAgdGhpcy5hcHBseVNvcnRpbmdPbkZpbHRlcmVkRGF0YSgpO1xuICAgICAgICAgICAgdGhpcy5hbm5hRmlsdGVyU2VydmljZS51cGRhdGVTdGF0ZU9mQWxsVGhlS2V5cyh0aGlzLmFubmFTb3J0U2VydmljZS5jb2x1bW5Tb3J0U3RhdGUpO1xuICAgICAgICAgICAgdGhpcy5lbWl0RGF0YSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5jbG9zZVRvb2x0aXAuZW1pdCgpO1xuICAgIH1cblxuICAgIGVtaXREYXRhKCkge1xuICAgICAgICBpZiAodGhpcy5pc0ZpbHRlckNoYW5nZWQgJiYgdGhpcy5pc1NvcnRDaGFuZ2VkKSB7XG4gICAgICAgICAgICB0aGlzLmZpbHRlckFwcGxpZWRUb1RhYmxlLmVtaXQodGhpcy50YWJsZURhdGEpO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuaXNGaWx0ZXJDaGFuZ2VkKSB7XG4gICAgICAgICAgICB0aGlzLmZpbHRlckFwcGxpZWRUb1RhYmxlLmVtaXQodGhpcy50YWJsZURhdGEpO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuaXNTb3J0Q2hhbmdlZCkge1xuICAgICAgICAgICAgdGhpcy5nZXRTb3J0VHlwZS5lbWl0KHRoaXMudGVtcFNvcnRPcmRlcik7XG4gICAgICAgICAgICB0aGlzLnNvcnRpbmdBcHBsaWVkVG9UYWJsZS5lbWl0KHRoaXMudGFibGVEYXRhKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNoYW5nZVN0YXJ0VGltZUhvdXIoaW5jcmVtZW50OiBib29sZWFuKSB7XG4gICAgICAgIGlmICghdGhpcy5zdGFydFRpbWVIb3VyRXJyKSB7XG4gICAgICAgICAgICB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmluY3JlbWVudE9yRGVjcmVtZW50SG91cihpbmNyZW1lbnQsIHRoaXMuc2VsZWN0ZWRGcm9tVGltZSk7XG4gICAgICAgICAgICB0aGlzLnN0YXJ0VGltZUhvdXJDaGFuZ2UodGhpcy5zZWxlY3RlZEZyb21UaW1lWzBdLnRvU3RyaW5nKCkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgY2hhbmdlRW5kVGltZUhvdXIoaW5jcmVtZW50OiBib29sZWFuKSB7XG4gICAgICAgIGlmICghdGhpcy5lbmRUaW1lSG91ckVycikge1xuICAgICAgICAgICAgdGhpcy5hbm5hRmlsdGVyU2VydmljZS5pbmNyZW1lbnRPckRlY3JlbWVudEhvdXIoaW5jcmVtZW50LCB0aGlzLnNlbGVjdGVkVG9UaW1lKTtcbiAgICAgICAgICAgIHRoaXMuZW5kVGltZUhvdXJDaGFuZ2UodGhpcy5zZWxlY3RlZFRvVGltZVswXS50b1N0cmluZygpKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNoYW5nZUVuZFRpbWVNaW51dGUoaW5jcmVtZW50OiBib29sZWFuKSB7XG4gICAgICAgIGlmICghdGhpcy5lbmRUaW1lTWluRXJyKSB7XG4gICAgICAgICAgICB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmluY3JlbWVudE9yRGVjcmVtZW50TWluKGluY3JlbWVudCwgdGhpcy5zZWxlY3RlZFRvVGltZSk7XG4gICAgICAgICAgICB0aGlzLmVuZFRpbWVNaW5DaGFuZ2UodGhpcy5zZWxlY3RlZFRvVGltZVsxXS50b1N0cmluZygpKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNoYW5nZVN0YXJ0VGltZU1pbnV0ZShpbmNyZW1lbnQ6IGJvb2xlYW4pIHtcbiAgICAgICAgaWYgKCF0aGlzLnN0YXJ0VGltZU1pbkVycikge1xuICAgICAgICAgICAgdGhpcy5hbm5hRmlsdGVyU2VydmljZS5pbmNyZW1lbnRPckRlY3JlbWVudE1pbihpbmNyZW1lbnQsIHRoaXMuc2VsZWN0ZWRGcm9tVGltZSk7XG4gICAgICAgICAgICB0aGlzLnN0YXJ0VGltZU1pbkNoYW5nZSh0aGlzLnNlbGVjdGVkRnJvbVRpbWVbMV0udG9TdHJpbmcoKSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzdGFydFRpbWVIb3VyQ2hhbmdlKHZhbDogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuc3RhcnRUaW1lSG91ckVyciA9IHRoaXMuYW5uYUZpbHRlclNlcnZpY2UuaXNIb3VyVmFsdWVJbnZhbGlkKHZhbCk7XG4gICAgICAgIHRoaXMuZGlzYWJsZVRpbWVGaWx0ZXJBcHBseUJ1dHRvbigpO1xuICAgIH1cblxuICAgIHN0YXJ0VGltZU1pbkNoYW5nZSh2YWw6IHN0cmluZykge1xuICAgICAgICB0aGlzLnN0YXJ0VGltZU1pbkVyciA9IHRoaXMuYW5uYUZpbHRlclNlcnZpY2UuaXNNaW51dGVWYWx1ZUludmFsaWQodmFsKTtcbiAgICAgICAgdGhpcy5kaXNhYmxlVGltZUZpbHRlckFwcGx5QnV0dG9uKCk7XG4gICAgfVxuXG4gICAgZW5kVGltZUhvdXJDaGFuZ2UodmFsOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5lbmRUaW1lSG91ckVyciA9IHRoaXMuYW5uYUZpbHRlclNlcnZpY2UuaXNIb3VyVmFsdWVJbnZhbGlkKHZhbCk7XG4gICAgICAgIHRoaXMuZGlzYWJsZVRpbWVGaWx0ZXJBcHBseUJ1dHRvbigpO1xuICAgIH1cblxuICAgIGVuZFRpbWVNaW5DaGFuZ2UodmFsOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5lbmRUaW1lTWluRXJyID0gdGhpcy5hbm5hRmlsdGVyU2VydmljZS5pc01pbnV0ZVZhbHVlSW52YWxpZCh2YWwpO1xuICAgICAgICB0aGlzLmRpc2FibGVUaW1lRmlsdGVyQXBwbHlCdXR0b24oKTtcbiAgICB9XG5cbiAgICBhcHBseVNvcnRpbmdPbkZpbHRlcmVkRGF0YSgpIHtcbiAgICAgICAgaWYgKHRoaXMuc2hvd1NvcnRDb21wb25lbnQpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmlzU29ydENoYW5nZWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnRhYmxlRGF0YSA9IHRoaXMuYW5uYUZpbHRlclNlcnZpY2UudXBkYXRlU29ydE1hcChcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50ZW1wU29ydE9yZGVyLFxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRhYmxlRGF0YSxcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pc0x1ckFuZENzckNvbXBvbmVudCxcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmlzRmlsdGVyQ2hhbmdlZCkge1xuICAgICAgICAgICAgICAgIHRoaXMudGFibGVEYXRhID0gdGhpcy5hbm5hU29ydFNlcnZpY2UuY2hlY2tJZlNvcnRpbmdJc0FwcGxpZWQoXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudGFibGVEYXRhLFxuICAgICAgICAgICAgICAgICAgICB0aGlzLmlzTHVyQW5kQ3NyQ29tcG9uZW50LFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5pc0ZpbHRlckNoYW5nZWQpIHtcbiAgICAgICAgICAgIHRoaXMudGFibGVEYXRhID0gdGhpcy5hbm5hU29ydFNlcnZpY2UuY2hlY2tJZlNvcnRpbmdJc0FwcGxpZWQodGhpcy50YWJsZURhdGEsIHRoaXMuaXNMdXJBbmRDc3JDb21wb25lbnQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgYXBwbHlUaW1lRmlsdGVyT25EYXRhKCkge1xuICAgICAgICBpZiAodGhpcy5zaG93RmlsdGVyQ29tcG9uZW50ICYmIHRoaXMuaXNGaWx0ZXJDaGFuZ2VkKSB7XG4gICAgICAgICAgICBsZXQgY3VycmVudFNlbGVjdGVkVGltZUZpbHRlciA9IHRoaXMuYW5uYUZpbHRlclNlcnZpY2UuZ2V0Q3VycmVudFNlbGVjdGVkVGltZUZpbHRlcihcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkRnJvbVRpbWUsXG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFRvVGltZSxcbiAgICAgICAgICAgICAgICB0aGlzLm11bHRpVGltZUNoZWNrYm94Q2hlY2tlZCxcbiAgICAgICAgICAgICAgICB0aGlzLnplcm9UaW1lQ2hlY2tib3hDaGVja2VkLFxuICAgICAgICAgICAgICAgIHRoaXMuZW50ZXJUaW1lQ2hlY2tib3hDaGVja2VkLFxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgbGV0IGlzRmlsdGVyZWQgPSB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnJlT3JkZXJBcHBsaWVkRmlsdGVyc1N0YXRlKFxuICAgICAgICAgICAgICAgIHRoaXMuY2xvbmVkVGFibGVEYXRhLFxuICAgICAgICAgICAgICAgIGN1cnJlbnRTZWxlY3RlZFRpbWVGaWx0ZXIsXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgdGhpcy5hbm5hRmlsdGVyU2VydmljZS50b29sdGlwU2VsZWN0ZWRNYXAuc2V0KFxuICAgICAgICAgICAgICAgIHRoaXMuYW5uYUZpbHRlclNlcnZpY2Uuc2VsZWN0ZWRSYWRpbyxcbiAgICAgICAgICAgICAgICBjdXJyZW50U2VsZWN0ZWRUaW1lRmlsdGVyLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHRoaXMudGFibGVEYXRhID0gdGhpcy5hbm5hRmlsdGVyU2VydmljZS5maWx0ZXJEYXRhKHRoaXMuY2xvbmVkVGFibGVEYXRhLCAnJyk7XG5cbiAgICAgICAgICAgIGlmICghaXNGaWx0ZXJlZCkge1xuICAgICAgICAgICAgICAgIHRoaXMuYW5uYUZpbHRlclNlcnZpY2UudG9vbHRpcFNlbGVjdGVkTWFwLmRlbGV0ZSh0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnNlbGVjdGVkUmFkaW8pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5hbm5hU29ydFNlcnZpY2Uubm9Tb3J0aW5nQXBwbGllZERhdGEgPSBjbG9uZURlZXAodGhpcy50YWJsZURhdGEpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgY2xvc2VUaW1lRmlsdGVyKCkge1xuICAgICAgICB0aGlzLnNlbGVjdGVkRnJvbVRpbWUgPSBjbG9uZURlZXAodGhpcy5jbG9uZWRTZWxlY3RlZEZyb21UaW1lKTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZFRvVGltZSA9IGNsb25lRGVlcCh0aGlzLmNsb25lZFNlbGVjdGVkVG9UaW1lKTtcbiAgICAgICAgdGhpcy5jbG9zZVRvb2x0aXAuZW1pdCgpO1xuICAgIH1cblxuICAgIGNsZWFyQ29sdW1uRmlsdGVyKCkge1xuICAgICAgICB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmNsZWFyQ29sdW1uRmlsdGVyKCk7XG4gICAgICAgIHRoaXMudGFibGVEYXRhID0gY2xvbmVEZWVwKHRoaXMuYW5uYUZpbHRlclNlcnZpY2UuZmlsdGVyRGF0YSh0aGlzLmNsb25lZFRhYmxlRGF0YSwgJycpKTtcbiAgICAgICAgdGhpcy5hbm5hU29ydFNlcnZpY2Uubm9Tb3J0aW5nQXBwbGllZERhdGEgPSB0aGlzLnRhYmxlRGF0YTtcbiAgICAgICAgdGhpcy50YWJsZURhdGEgPSB0aGlzLmFubmFTb3J0U2VydmljZS5jaGVja0lmU29ydGluZ0lzQXBwbGllZCh0aGlzLnRhYmxlRGF0YSwgdGhpcy5pc0x1ckFuZENzckNvbXBvbmVudCk7XG4gICAgICAgIHRoaXMuYW5uYUZpbHRlclNlcnZpY2UudXBkYXRlU3RhdGVPZlRoZUN1cnJlbnRGaWx0ZXJUYWIodGhpcy5hbm5hU29ydFNlcnZpY2UuY29sdW1uU29ydFN0YXRlKTtcbiAgICAgICAgdGhpcy5maWx0ZXJBcHBsaWVkVG9UYWJsZS5lbWl0KHRoaXMudGFibGVEYXRhKTtcbiAgICB9XG5cbiAgICBzdG9yZVNvcnRUeXBlSW5UZW1wVmFyaWFibGUoZXZlbnQ6IFNvcnRUeXBlKSB7XG4gICAgICAgIHRoaXMudGVtcFNvcnRPcmRlciA9IGV2ZW50O1xuICAgICAgICB0aGlzLmRpc2FibGVUaW1lRmlsdGVyQXBwbHlCdXR0b24oKTtcbiAgICB9XG59XG4iLCI8ZGl2XG4gICAgY2xhc3M9XCJyYWRpby1jb250YWluZXJcIlxuICAgICpuZ0lmPVwic2hvd0ZpbHRlckhlYWRlclRhYnNcIlxuPlxuICAgIDxkaXYgKm5nRm9yPVwibGV0IGRhdGEgb2YgZmlsdGVyVGFiT2JqZWN0c1wiPlxuICAgICAgICA8cFxuICAgICAgICAgICAgY2xhc3M9XCJmaWx0ZXItdGFiXCJcbiAgICAgICAgICAgIFt0aXRsZV09XCJkYXRhLmxhYmVsXCJcbiAgICAgICAgICAgIChjbGljayk9XCJwb3B1bGF0ZVRvb2x0aXBEYXRhQmFzZWRPblNlbGVjdGVkUmFkaW8oZGF0YSwgdHJ1ZSlcIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwieyBhY3RpdmU6IGFubmFGaWx0ZXJTZXJ2aWNlLnNlbGVjdGVkUmFkaW8gPT0gZGF0YS5rZXkgfVwiXG4gICAgICAgICAgICAqbmdJZj1cImZpbHRlclRhYk9iamVjdHMubGVuZ3RoID4gMFwiXG4gICAgICAgID5cbiAgICAgICAgICAgIHt7IGRhdGEubGFiZWwgfX1cbiAgICAgICAgPC9wPlxuICAgIDwvZGl2PlxuPC9kaXY+XG5cbjxhbm5hLWNvcmUtc29ydC1saWJcbiAgICAqbmdJZj1cInNob3dTb3J0Q29tcG9uZW50XCJcbiAgICBbbmdDbGFzc109XCJ7ICduby1ib3R0b20tYm9yZGVyJzogIXNob3dGaWx0ZXJDb21wb25lbnQgfVwiXG4gICAgKHNvcnRPcHRpb25DbGlja2VkKT1cInN0b3JlU29ydFR5cGVJblRlbXBWYXJpYWJsZSgkZXZlbnQpXCJcbiAgICBbc29ydE9iamVjdEtleV09XCJhbm5hRmlsdGVyU2VydmljZS5zZWxlY3RlZFJhZGlvXCJcbj48L2FubmEtY29yZS1zb3J0LWxpYj5cblxuPG5nLWNvbnRhaW5lciAqbmdJZj1cInNob3dGaWx0ZXJDb21wb25lbnRcIj5cbiAgICA8YnV0dG9uXG4gICAgICAgIGNsYXNzPVwiY29sdW1uLWNsZWFyLWFsbFwiXG4gICAgICAgICpuZ0lmPVwic2hvd0NsZWFyQWxsRmlsdGVyXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVDb2x1bW5DbGVhckFsbEJ0blwiXG4gICAgICAgIChjbGljayk9XCJjbGVhckNvbHVtbkZpbHRlcigpXCJcbiAgICA+XG4gICAgICAgIENsZWFyIGZpbHRlclxuICAgIDwvYnV0dG9uPlxuICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJ0aW1lLWZpbHRlci1jaGVja2JveGVzXCJcbiAgICAgICAgKm5nSWY9XCJzaG93QWxsVGltZVJhbmdlQ2hlY2tib3hlc1wiXG4gICAgPlxuICAgICAgICA8IS0tIE11bHRpIHRpbWUgb3B0aW9uIGNoZWNrYm94IC0tPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIlxuICAgICAgICAgICAgc3R5bGU9XCJwYWRkaW5nOiAwLjVyZW0gMCAwLjVyZW0gMC41cmVtXCJcbiAgICAgICAgICAgICpuZ0lmPVwic2hvd011bHRpVGltZUNoZWNrYm94XCJcbiAgICAgICAgPlxuICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAqbmdJZj1cIm11bHRpVGltZUNoZWNrYm94Q2hlY2tlZFwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJtYXRlcmlhbC1pY29ucyBjdXN0b20tY29sdW1uLWNoZWNrYm94LWNoZWNrZWRcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RPclVuc2VsZWN0TXVsdGlUaW1lQ2hlY2tib3goKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgY2hlY2tfYm94XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICpuZ0lmPVwiIW11bHRpVGltZUNoZWNrYm94Q2hlY2tlZFwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJtYXRlcmlhbC1pY29ucyBjdXN0b20tY29sdW1uLWNoZWNrYm94LXVuY2hlY2tlZFwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdE9yVW5zZWxlY3RNdWx0aVRpbWVDaGVja2JveCgpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICBjaGVja19ib3hfb3V0bGluZV9ibGFua1xuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPHAgc3R5bGU9XCJtYXJnaW4tbGVmdDogMnB4XCI+SW5jbHVkZSBNdWx0aTwvcD5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDwhLS0gWmVybyB0aW1lIG9wdGlvbiBjaGVja2JveCAtLT5cbiAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCJcbiAgICAgICAgICAgIHN0eWxlPVwicGFkZGluZzogMC41cmVtIDAgMC41cmVtIDAuNXJlbVwiXG4gICAgICAgICAgICAqbmdJZj1cInNob3daZXJvVGltZUNoZWNrYm94XCJcbiAgICAgICAgPlxuICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAqbmdJZj1cInplcm9UaW1lQ2hlY2tib3hDaGVja2VkXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cIm1hdGVyaWFsLWljb25zIGN1c3RvbS1jb2x1bW4tY2hlY2tib3gtY2hlY2tlZFwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdE9yVW5zZWxlY3RaZXJvVGltZUNoZWNrYm94KClcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIGNoZWNrX2JveFxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAqbmdJZj1cIiF6ZXJvVGltZUNoZWNrYm94Q2hlY2tlZFwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJtYXRlcmlhbC1pY29ucyBjdXN0b20tY29sdW1uLWNoZWNrYm94LXVuY2hlY2tlZFwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdE9yVW5zZWxlY3RaZXJvVGltZUNoZWNrYm94KClcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIGNoZWNrX2JveF9vdXRsaW5lX2JsYW5rXG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8cCBzdHlsZT1cIm1hcmdpbi1sZWZ0OiAycHhcIj5JbmNsdWRlIFplcm88L3A+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8IS0tIEVudGVyIHRpbWUgcmFuZ2Ugb3B0aW9uIGNoZWNrYm94IC0tPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIlxuICAgICAgICAgICAgc3R5bGU9XCJwYWRkaW5nOiAwLjVyZW0gMCAwLjVyZW0gMC41cmVtXCJcbiAgICAgICAgICAgICpuZ0lmPVwic2hvd0VudGVyVGltZUNoZWNrYm94XCJcbiAgICAgICAgPlxuICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAqbmdJZj1cImVudGVyVGltZUNoZWNrYm94Q2hlY2tlZFwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJtYXRlcmlhbC1pY29ucyBjdXN0b20tY29sdW1uLWNoZWNrYm94LWNoZWNrZWRcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RPclVuc2VsZWN0RW50ZXJUaW1lQ2hlY2tib3goKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgY2hlY2tfYm94XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICpuZ0lmPVwiIWVudGVyVGltZUNoZWNrYm94Q2hlY2tlZFwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJtYXRlcmlhbC1pY29ucyBjdXN0b20tY29sdW1uLWNoZWNrYm94LXVuY2hlY2tlZFwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdE9yVW5zZWxlY3RFbnRlclRpbWVDaGVja2JveCgpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICBjaGVja19ib3hfb3V0bGluZV9ibGFua1xuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPHAgc3R5bGU9XCJtYXJnaW4tbGVmdDogMnB4XCI+RW50ZXIgdGltZSByYW5nZTwvcD5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cInRpbWUtbGFiZWwtY29udGFpbmVyXCI+XG4gICAgICAgIDxsYWJlbD57eyBzdGFydEZyb21UZXh0IH19PC9sYWJlbD5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwidGltZS1jb250YWluZXJcIj5cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBudW1iZXJJbnB1dFwiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdlcnJvci1ib3JkZXInOiBzdGFydFRpbWVIb3VyRXJyIH1cIlxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJzZWxlY3RlZEZyb21UaW1lWzBdXCJcbiAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgIHBhdHRlcm49XCJbMS0xMl0qXCJcbiAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInN0YXJ0VGltZUhvdXJDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgIC8+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJhcnJvdy1jb250YWluZXJcIj5cbiAgICAgICAgICAgIDxpXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJtZGkgbWRpLW1lbnUtdXAgdXB3YXJkXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiY2hhbmdlU3RhcnRUaW1lSG91cih0cnVlKVwiXG4gICAgICAgICAgICA+PC9pPlxuICAgICAgICAgICAgPGlcbiAgICAgICAgICAgICAgICBjbGFzcz1cIm1kaSBtZGktbWVudS1kb3duIGRvd253YXJkXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiY2hhbmdlU3RhcnRUaW1lSG91cihmYWxzZSlcIlxuICAgICAgICAgICAgPjwvaT5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiZG90XCI+Ojwvc3Bhbj5cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBudW1iZXJJbnB1dFwiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdlcnJvci1ib3JkZXInOiBzdGFydFRpbWVNaW5FcnIgfVwiXG4gICAgICAgICAgICBbKG5nTW9kZWwpXT1cInNlbGVjdGVkRnJvbVRpbWVbMV1cIlxuICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgcGF0dGVybj1cIlswLTU5XSpcIlxuICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwic3RhcnRUaW1lTWluQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAvPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYXJyb3ctY29udGFpbmVyXCI+XG4gICAgICAgICAgICA8aVxuICAgICAgICAgICAgICAgIGNsYXNzPVwibWRpIG1kaS1tZW51LXVwIHVwd2FyZFwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImNoYW5nZVN0YXJ0VGltZU1pbnV0ZSh0cnVlKVwiXG4gICAgICAgICAgICA+PC9pPlxuICAgICAgICAgICAgPGlcbiAgICAgICAgICAgICAgICBjbGFzcz1cIm1kaSBtZGktbWVudS1kb3duIGRvd253YXJkXCJcbiAgICAgICAgICAgICAgICBzdHlsZT1cInBvc2l0aW9uOiByZWxhdGl2ZTsgbGVmdDogMC4yNXB4XCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiY2hhbmdlU3RhcnRUaW1lTWludXRlKGZhbHNlKVwiXG4gICAgICAgICAgICA+PC9pPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdj5cbiAgICAgICAgICAgIDxtYXQtYnV0dG9uLXRvZ2dsZS1ncm91cFxuICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwic2VsZWN0ZWRGcm9tVGltZVsyXVwiXG4gICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwiZGlzYWJsZVRpbWVGaWx0ZXJBcHBseUJ1dHRvbigpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8bWF0LWJ1dHRvbi10b2dnbGUgdmFsdWU9XCJBTVwiPlxuICAgICAgICAgICAgICAgICAgICA8c3Bhbj5BTTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L21hdC1idXR0b24tdG9nZ2xlPlxuICAgICAgICAgICAgICAgIDxtYXQtYnV0dG9uLXRvZ2dsZSB2YWx1ZT1cIlBNXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuPlBNPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvbWF0LWJ1dHRvbi10b2dnbGU+XG4gICAgICAgICAgICA8L21hdC1idXR0b24tdG9nZ2xlLWdyb3VwPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJ0aW1lLWxhYmVsLWNvbnRhaW5lclwiPlxuICAgICAgICA8bGFiZWw+e3sgZW5kVG9UZXh0IH19PC9sYWJlbD5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwidGltZS1jb250YWluZXJcIj5cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBudW1iZXJJbnB1dFwiXG4gICAgICAgICAgICBbKG5nTW9kZWwpXT1cInNlbGVjdGVkVG9UaW1lWzBdXCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ2Vycm9yLWJvcmRlcic6IGVuZFRpbWVIb3VyRXJyIH1cIlxuICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwiZW5kVGltZUhvdXJDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICBwYXR0ZXJuPVwiWzEtMTJdKlwiXG4gICAgICAgIC8+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJhcnJvdy1jb250YWluZXJcIj5cbiAgICAgICAgICAgIDxpXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJtZGkgbWRpLW1lbnUtdXAgdXB3YXJkXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiY2hhbmdlRW5kVGltZUhvdXIodHJ1ZSlcIlxuICAgICAgICAgICAgPjwvaT5cbiAgICAgICAgICAgIDxpXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJtZGkgbWRpLW1lbnUtZG93biBkb3dud2FyZFwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImNoYW5nZUVuZFRpbWVIb3VyKGZhbHNlKVwiXG4gICAgICAgICAgICA+PC9pPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJkb3RcIj46PC9zcGFuPlxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIG51bWJlcklucHV0XCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ2Vycm9yLWJvcmRlcic6IGVuZFRpbWVNaW5FcnIgfVwiXG4gICAgICAgICAgICBbKG5nTW9kZWwpXT1cInNlbGVjdGVkVG9UaW1lWzFdXCJcbiAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cImVuZFRpbWVNaW5DaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICBwYXR0ZXJuPVwiWzAtNTldKlwiXG4gICAgICAgIC8+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJhcnJvdy1jb250YWluZXJcIj5cbiAgICAgICAgICAgIDxpXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJtZGkgbWRpLW1lbnUtdXAgdXB3YXJkXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiY2hhbmdlRW5kVGltZU1pbnV0ZSh0cnVlKVwiXG4gICAgICAgICAgICA+PC9pPlxuICAgICAgICAgICAgPGlcbiAgICAgICAgICAgICAgICBjbGFzcz1cIm1kaSBtZGktbWVudS1kb3duIGRvd253YXJkXCJcbiAgICAgICAgICAgICAgICBzdHlsZT1cInBvc2l0aW9uOiByZWxhdGl2ZTsgbGVmdDogMC4yNXB4XCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiY2hhbmdlRW5kVGltZU1pbnV0ZShmYWxzZSlcIlxuICAgICAgICAgICAgPjwvaT5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXY+XG4gICAgICAgICAgICA8bWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXBcbiAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInNlbGVjdGVkVG9UaW1lWzJdXCJcbiAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJkaXNhYmxlVGltZUZpbHRlckFwcGx5QnV0dG9uKClcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxtYXQtYnV0dG9uLXRvZ2dsZSB2YWx1ZT1cIkFNXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuPkFNPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvbWF0LWJ1dHRvbi10b2dnbGU+XG4gICAgICAgICAgICAgICAgPG1hdC1idXR0b24tdG9nZ2xlIHZhbHVlPVwiUE1cIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4+UE08L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9tYXQtYnV0dG9uLXRvZ2dsZT5cbiAgICAgICAgICAgIDwvbWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXA+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC9uZy1jb250YWluZXI+XG5cbjxkaXYgY2xhc3M9XCJidXR0b25zLWNvbnRhaW5lclwiPlxuICAgIDxidXR0b25cbiAgICAgICAgY2xhc3M9XCJidXR0b25cIlxuICAgICAgICAoY2xpY2spPVwiY2xvc2VUaW1lRmlsdGVyKClcIlxuICAgID5cbiAgICAgICAgQ2FuY2VsXG4gICAgPC9idXR0b24+XG4gICAgPGJ1dHRvblxuICAgICAgICBjbGFzcz1cImJ1dHRvblwiXG4gICAgICAgIFtuZ0NsYXNzXT1cInsgZGlzYWJsZWQ6IGRpc2FibGVUaW1lRmlsdGVyQXBwbHlCdG4gfVwiXG4gICAgICAgIChjbGljayk9XCJhcHBseVRpbWVGaWx0ZXJzKClcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZVRpbWVGaWx0ZXJBcHBseUJ0blwiXG4gICAgPlxuICAgICAgICBBcHBseVxuICAgIDwvYnV0dG9uPlxuPC9kaXY+XG4iXX0=