ecabs-components 1.0.22 → 1.0.24

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 (152) hide show
  1. package/esm2022/ecabs-components.mjs +4 -4
  2. package/esm2022/lib/base/consts/date-mask.consts.mjs +56 -56
  3. package/esm2022/lib/base/directives/date-mask.directive.mjs +65 -67
  4. package/esm2022/lib/base/directives/date-mask.directive.module.mjs +22 -22
  5. package/esm2022/lib/base/directives/digits-only.directive.mjs +130 -133
  6. package/esm2022/lib/base/directives/digits-only.directive.module.mjs +22 -22
  7. package/esm2022/lib/base/directives/number-border.directive.mjs +54 -58
  8. package/esm2022/lib/base/directives/number-border.directive.module.mjs +22 -22
  9. package/esm2022/lib/base/element-base.mjs +100 -105
  10. package/esm2022/lib/base/element-wrapper/element-wrapper.component.mjs +53 -56
  11. package/esm2022/lib/base/element-wrapper/element-wrapper.module.mjs +52 -52
  12. package/esm2022/lib/base/hint/hint.component.mjs +21 -21
  13. package/esm2022/lib/base/hint/hint.module.mjs +20 -20
  14. package/esm2022/lib/base/validation/validation.component.mjs +70 -75
  15. package/esm2022/lib/base/validation/validation.module.mjs +20 -20
  16. package/esm2022/lib/ecabs-breadcrumb/ecabs-breadcrumb.component.mjs +16 -17
  17. package/esm2022/lib/ecabs-breadcrumb/ecabs-breadcrumb.module.mjs +20 -20
  18. package/esm2022/lib/ecabs-buttons/ecabs-buttons.component.mjs +63 -64
  19. package/esm2022/lib/ecabs-buttons/ecabs-buttons.module.mjs +21 -21
  20. package/esm2022/lib/ecabs-checkbox-toggle/ecabs-checkbox-toggle.component.mjs +101 -94
  21. package/esm2022/lib/ecabs-checkbox-toggle/ecabs-checkbox-toggle.module.mjs +36 -36
  22. package/esm2022/lib/ecabs-date-picker/components/ecabs-date-picker-header/ecabs-date-picker-header.component.mjs +17 -15
  23. package/esm2022/lib/ecabs-date-picker/ecabs-date-picker.component.mjs +85 -89
  24. package/esm2022/lib/ecabs-date-picker/ecabs-date-picker.module.mjs +48 -48
  25. package/esm2022/lib/ecabs-date-time-picker/components/ecabs-date-time-picker-header/ecabs-date-time-picker-header.component.mjs +17 -15
  26. package/esm2022/lib/ecabs-date-time-picker/ecabs-date-time-picker.component.mjs +179 -186
  27. package/esm2022/lib/ecabs-date-time-picker/ecabs-date-time-picker.module.mjs +64 -64
  28. package/esm2022/lib/ecabs-date-time-range-picker/components/ecabs-date-time-range-picker-header/ecabs-date-time-range-picker-header.component.mjs +17 -15
  29. package/esm2022/lib/ecabs-date-time-range-picker/ecabs-date-time-range-picker.component.mjs +193 -199
  30. package/esm2022/lib/ecabs-date-time-range-picker/ecabs-date-time-range-picker.module.mjs +65 -65
  31. package/esm2022/lib/ecabs-date-time-range-picker/time-range.directive.mjs +45 -48
  32. package/esm2022/lib/ecabs-dialog-confirm/ecabs-dialog-confirm.component.mjs +47 -50
  33. package/esm2022/lib/ecabs-dialog-confirm/ecabs-dialog-confirm.module.mjs +20 -20
  34. package/esm2022/lib/ecabs-dialog-message/ecabs-dialog-message.component.mjs +44 -47
  35. package/esm2022/lib/ecabs-dialog-message/ecabs-dialog-message.module.mjs +20 -20
  36. package/esm2022/lib/ecabs-empty-placeholder/ecabs-empty-placeholder.component.mjs +19 -22
  37. package/esm2022/lib/ecabs-empty-placeholder/ecabs-empty-placeholder.module.mjs +19 -19
  38. package/esm2022/lib/ecabs-expansion-panel/ecabs-expansion-panel.component.mjs +76 -85
  39. package/esm2022/lib/ecabs-expansion-panel/ecabs-expansion-panel.module.mjs +24 -24
  40. package/esm2022/lib/ecabs-increment/ecabs-increment.component.mjs +78 -83
  41. package/esm2022/lib/ecabs-increment/ecabs-increment.module.mjs +23 -23
  42. package/esm2022/lib/ecabs-input/ecabs-input.component.mjs +83 -90
  43. package/esm2022/lib/ecabs-input/ecabs-input.module.mjs +22 -22
  44. package/esm2022/lib/ecabs-language-selector/ecabs-language-selector.component.mjs +62 -64
  45. package/esm2022/lib/ecabs-language-selector/ecabs-language-selector.module.mjs +39 -39
  46. package/esm2022/lib/ecabs-loading/ecabs-loading.component.mjs +24 -22
  47. package/esm2022/lib/ecabs-loading/ecabs-loading.module.mjs +19 -19
  48. package/esm2022/lib/ecabs-loading/spinner/spinner.component.mjs +16 -14
  49. package/esm2022/lib/ecabs-note/ecabs-note.component.mjs +30 -28
  50. package/esm2022/lib/ecabs-note/ecabs-note.module.mjs +19 -19
  51. package/esm2022/lib/ecabs-phone/ecabs-phone.component.mjs +104 -111
  52. package/esm2022/lib/ecabs-phone/ecabs-phone.module.mjs +22 -22
  53. package/esm2022/lib/ecabs-picker-header/ecabs-picker-header.component.mjs +50 -53
  54. package/esm2022/lib/ecabs-picker-header/ecabs-picker-header.module.mjs +22 -22
  55. package/esm2022/lib/ecabs-radio-button-list/ecabs-radio-button-list.component.mjs +65 -68
  56. package/esm2022/lib/ecabs-radio-button-list/ecabs-radio-button-list.module.mjs +32 -32
  57. package/esm2022/lib/ecabs-select/ecabs-select.component.mjs +310 -316
  58. package/esm2022/lib/ecabs-select/ecabs-select.module.mjs +60 -60
  59. package/esm2022/lib/ecabs-table/ecabs-table-filter-wrapper/ecabs-table-filter-wrapper.component.mjs +17 -19
  60. package/esm2022/lib/ecabs-table/ecabs-table-filter-wrapper/ecabs-table-filter-wrapper.module.mjs +24 -24
  61. package/esm2022/lib/ecabs-table/ecabs-table.component.mjs +43 -48
  62. package/esm2022/lib/ecabs-table/ecabs-table.module.mjs +33 -33
  63. package/esm2022/lib/ecabs-textarea/ecabs-textarea.component.mjs +62 -65
  64. package/esm2022/lib/ecabs-textarea/ecabs-textarea.module.mjs +20 -20
  65. package/esm2022/lib/ecabs-timepicker/componets/ecabs-time-list-panel/ecabs-time-list-panel.component.mjs +137 -144
  66. package/esm2022/lib/ecabs-timepicker/config.model.mjs +1 -1
  67. package/esm2022/lib/ecabs-timepicker/ecabs-timepicker.component.mjs +312 -322
  68. package/esm2022/lib/ecabs-timepicker/ecabs-timepicker.module.mjs +20 -20
  69. package/esm2022/lib/ecabs-timepicker/ecabs-timepicker.service.mjs +31 -29
  70. package/esm2022/lib/models/bread-crumb.mjs +1 -1
  71. package/esm2022/lib/models/timepicker.models.mjs +1 -1
  72. package/esm2022/lib/services/ecabs-components.service.mjs +32 -31
  73. package/esm2022/public-api.mjs +54 -54
  74. package/fesm2022/ecabs-components.mjs +3192 -3292
  75. package/fesm2022/ecabs-components.mjs.map +1 -1
  76. package/index.d.ts +5 -5
  77. package/lib/base/consts/date-mask.consts.d.ts +7 -7
  78. package/lib/base/directives/date-mask.directive.d.ts +16 -16
  79. package/lib/base/directives/date-mask.directive.module.d.ts +8 -8
  80. package/lib/base/directives/digits-only.directive.d.ts +26 -26
  81. package/lib/base/directives/digits-only.directive.module.d.ts +8 -8
  82. package/lib/base/directives/number-border.directive.d.ts +13 -13
  83. package/lib/base/directives/number-border.directive.module.d.ts +8 -8
  84. package/lib/base/element-base.d.ts +28 -28
  85. package/lib/base/element-wrapper/element-wrapper.component.d.ts +19 -19
  86. package/lib/base/element-wrapper/element-wrapper.module.d.ts +16 -16
  87. package/lib/base/hint/hint.component.d.ts +8 -8
  88. package/lib/base/hint/hint.module.d.ts +10 -10
  89. package/lib/base/validation/validation.component.d.ts +24 -24
  90. package/lib/base/validation/validation.module.d.ts +10 -10
  91. package/lib/ecabs-breadcrumb/ecabs-breadcrumb.component.d.ts +7 -7
  92. package/lib/ecabs-breadcrumb/ecabs-breadcrumb.module.d.ts +10 -10
  93. package/lib/ecabs-buttons/ecabs-buttons.component.d.ts +20 -20
  94. package/lib/ecabs-buttons/ecabs-buttons.module.d.ts +11 -11
  95. package/lib/ecabs-checkbox-toggle/ecabs-checkbox-toggle.component.d.ts +31 -29
  96. package/lib/ecabs-checkbox-toggle/ecabs-checkbox-toggle.module.d.ts +12 -12
  97. package/lib/ecabs-date-picker/components/ecabs-date-picker-header/ecabs-date-picker-header.component.d.ts +6 -6
  98. package/lib/ecabs-date-picker/ecabs-date-picker.component.d.ts +29 -29
  99. package/lib/ecabs-date-picker/ecabs-date-picker.module.d.ts +15 -15
  100. package/lib/ecabs-date-time-picker/components/ecabs-date-time-picker-header/ecabs-date-time-picker-header.component.d.ts +6 -6
  101. package/lib/ecabs-date-time-picker/ecabs-date-time-picker.component.d.ts +51 -51
  102. package/lib/ecabs-date-time-picker/ecabs-date-time-picker.module.d.ts +19 -19
  103. package/lib/ecabs-date-time-range-picker/components/ecabs-date-time-range-picker-header/ecabs-date-time-range-picker-header.component.d.ts +6 -6
  104. package/lib/ecabs-date-time-range-picker/ecabs-date-time-range-picker.component.d.ts +58 -58
  105. package/lib/ecabs-date-time-range-picker/ecabs-date-time-range-picker.module.d.ts +20 -20
  106. package/lib/ecabs-date-time-range-picker/time-range.directive.d.ts +15 -15
  107. package/lib/ecabs-dialog-confirm/ecabs-dialog-confirm.component.d.ts +31 -31
  108. package/lib/ecabs-dialog-confirm/ecabs-dialog-confirm.module.d.ts +11 -11
  109. package/lib/ecabs-dialog-message/ecabs-dialog-message.component.d.ts +28 -28
  110. package/lib/ecabs-dialog-message/ecabs-dialog-message.module.d.ts +11 -11
  111. package/lib/ecabs-empty-placeholder/ecabs-empty-placeholder.component.d.ts +12 -12
  112. package/lib/ecabs-empty-placeholder/ecabs-empty-placeholder.module.d.ts +9 -9
  113. package/lib/ecabs-expansion-panel/ecabs-expansion-panel.component.d.ts +28 -28
  114. package/lib/ecabs-expansion-panel/ecabs-expansion-panel.module.d.ts +14 -14
  115. package/lib/ecabs-increment/ecabs-increment.component.d.ts +26 -26
  116. package/lib/ecabs-increment/ecabs-increment.module.d.ts +13 -13
  117. package/lib/ecabs-input/ecabs-input.component.d.ts +27 -27
  118. package/lib/ecabs-input/ecabs-input.module.d.ts +12 -12
  119. package/lib/ecabs-language-selector/ecabs-language-selector.component.d.ts +20 -20
  120. package/lib/ecabs-language-selector/ecabs-language-selector.module.d.ts +12 -12
  121. package/lib/ecabs-loading/ecabs-loading.component.d.ts +8 -8
  122. package/lib/ecabs-loading/ecabs-loading.module.d.ts +9 -9
  123. package/lib/ecabs-loading/spinner/spinner.component.d.ts +6 -6
  124. package/lib/ecabs-note/ecabs-note.component.d.ts +7 -7
  125. package/lib/ecabs-note/ecabs-note.module.d.ts +9 -9
  126. package/lib/ecabs-phone/ecabs-phone.component.d.ts +33 -33
  127. package/lib/ecabs-phone/ecabs-phone.module.d.ts +12 -12
  128. package/lib/ecabs-picker-header/ecabs-picker-header.component.d.ts +19 -19
  129. package/lib/ecabs-picker-header/ecabs-picker-header.module.d.ts +12 -12
  130. package/lib/ecabs-radio-button-list/ecabs-radio-button-list.component.d.ts +24 -24
  131. package/lib/ecabs-radio-button-list/ecabs-radio-button-list.module.d.ts +11 -11
  132. package/lib/ecabs-select/ecabs-select.component.d.ts +71 -71
  133. package/lib/ecabs-select/ecabs-select.module.d.ts +15 -15
  134. package/lib/ecabs-table/ecabs-table-filter-wrapper/ecabs-table-filter-wrapper.component.d.ts +8 -8
  135. package/lib/ecabs-table/ecabs-table-filter-wrapper/ecabs-table-filter-wrapper.module.d.ts +9 -9
  136. package/lib/ecabs-table/ecabs-table.component.d.ts +18 -18
  137. package/lib/ecabs-table/ecabs-table.module.d.ts +12 -12
  138. package/lib/ecabs-textarea/ecabs-textarea.component.d.ts +20 -20
  139. package/lib/ecabs-textarea/ecabs-textarea.module.d.ts +10 -10
  140. package/lib/ecabs-timepicker/componets/ecabs-time-list-panel/ecabs-time-list-panel.component.d.ts +40 -40
  141. package/lib/ecabs-timepicker/config.model.d.ts +5 -5
  142. package/lib/ecabs-timepicker/ecabs-timepicker.component.d.ts +53 -53
  143. package/lib/ecabs-timepicker/ecabs-timepicker.module.d.ts +10 -10
  144. package/lib/ecabs-timepicker/ecabs-timepicker.service.d.ts +12 -12
  145. package/lib/models/bread-crumb.d.ts +5 -5
  146. package/lib/models/timepicker.models.d.ts +6 -6
  147. package/lib/services/ecabs-components.service.d.ts +16 -16
  148. package/package.json +1 -1
  149. package/public-api.d.ts +54 -54
  150. package/styles/material/overrides/_form.scss +13 -1
  151. package/styles/scss/modules/_form.scss +13 -8
  152. package/styles/scss/utilities/_helpers.scss +9 -0
@@ -1,322 +1,312 @@
1
- import { Component, Input, HostBinding, HostListener } from '@angular/core';
2
- import { NG_VALUE_ACCESSOR, NgControl } from '@angular/forms';
3
- import ElementBaseComponent from '../base/element-base';
4
- import * as i0 from "@angular/core";
5
- import * as i1 from "./ecabs-timepicker.service";
6
- import * as i2 from "@angular/common";
7
- import * as i3 from "../base/element-wrapper/element-wrapper.component";
8
- import * as i4 from "./componets/ecabs-time-list-panel/ecabs-time-list-panel.component";
9
- export class EcabsTimepickerComponent extends ElementBaseComponent {
10
- elementRef;
11
- timepickerService;
12
- injector;
13
- showCloseIcon = true;
14
- focusedFlag = false;
15
- listPlacement = 'auto';
16
- appendTo;
17
- min;
18
- max;
19
- showDayStart = true;
20
- showDayEnd = false;
21
- addSecond = true;
22
- position = {};
23
- _data = '';
24
- _timePicker;
25
- _input;
26
- listPosition = {};
27
- caretPositionStart;
28
- caretPositionEnd;
29
- get data() {
30
- return this._data;
31
- }
32
- set data(value) {
33
- this._data = value;
34
- if (this._data.length === 5) {
35
- if (this._data === '23:59') {
36
- this.onChangeFn(this._data + (this.addSecond ? ':59' : ''));
37
- }
38
- else {
39
- this.onChangeFn(this._data + (this.addSecond ? ':00' : ''));
40
- }
41
- }
42
- else if (this._data === '') {
43
- this.onChangeFn(this._data);
44
- }
45
- }
46
- constructor(elementRef, timepickerService, injector) {
47
- super();
48
- this.elementRef = elementRef;
49
- this.timepickerService = timepickerService;
50
- this.injector = injector;
51
- this.placeholder = '00:00';
52
- this._timePicker = this.elementRef.nativeElement;
53
- setTimeout(() => {
54
- this._input = this._timePicker.querySelector('input');
55
- });
56
- if (!this.iconClass) {
57
- this.iconClass = this.timepickerService.getConfig().iconClass;
58
- }
59
- }
60
- handleMousedown($event) {
61
- const target = $event.target;
62
- if (target.closest('.form-time-list') ||
63
- target.closest('.timeInputWrapper') === this._timePicker.querySelector('.timeInputWrapper')) {
64
- this._timePicker.querySelector('.timeInputWrapper').focus();
65
- return;
66
- }
67
- if (this.focusedFlag) {
68
- this.close();
69
- }
70
- }
71
- ngAfterViewInit() {
72
- const ngControl = this.injector.get(NgControl, null);
73
- if (ngControl) {
74
- this.control = ngControl.control;
75
- }
76
- }
77
- clearInput() {
78
- this.data = '';
79
- }
80
- calcListPosition() {
81
- const position = this._timePicker.querySelector('.timeInputFieldWrapper').getBoundingClientRect();
82
- if (this.appendTo) {
83
- this.listPosition = {
84
- left: position.x,
85
- top: position.top + position.height,
86
- width: position.width,
87
- };
88
- }
89
- else {
90
- this.listPosition = {
91
- left: 0,
92
- top: position.height,
93
- width: position.width,
94
- };
95
- }
96
- }
97
- inputKeyDown(event) {
98
- this.caretPositionStart = event.target.selectionStart;
99
- this.caretPositionEnd = event.target.selectionEnd;
100
- const key = event.key;
101
- this.setCaretPosition(this._input);
102
- switch (this.checkSpecialKeys(key, this.caretPositionStart, this.caretPositionEnd)) {
103
- case 'stop':
104
- return false;
105
- case 'tab':
106
- this.close();
107
- return false;
108
- case 'arrow':
109
- return false;
110
- }
111
- if (this.checkUnUsedKeys(key)) {
112
- return false;
113
- }
114
- const newData = this.data.slice(0, this.caretPositionStart) + key + this.data.slice(this.caretPositionStart, this.data.length);
115
- if (this.checkOutOfRangeNumber(newData)) {
116
- this.data = newData;
117
- this.caretPositionStart++;
118
- }
119
- if (this.caretPositionStart === this.data.length &&
120
- (this.data.length === 2 || (this.data.length === 1 && parseInt(this.data) > 2))) {
121
- this.makeHourFull();
122
- this.data += ':';
123
- this.caretPositionStart++;
124
- }
125
- return false;
126
- }
127
- checkSpecialKeys(key, selectionStart, selectionEnd) {
128
- if (selectionStart !== selectionEnd && key !== 'ArrowLeft' && key !== 'ArrowRight') {
129
- if (!(this.data.slice(selectionStart, selectionEnd).includes(':') && selectionEnd !== this.data.length)) {
130
- this.data = this.data.slice(0, selectionStart) + this.data.slice(selectionEnd, this.data.length);
131
- }
132
- }
133
- if (selectionStart === selectionEnd && key === 'Backspace') {
134
- if (this.data.length > 0) {
135
- if (this.data[selectionStart - 1] !== ':' ||
136
- (this.data[selectionStart - 1] === ':' && selectionStart === this.data.length)) {
137
- this.data = this.data.slice(0, selectionStart - 1) + this.data.slice(selectionEnd, this.data.length);
138
- this.caretPositionStart--;
139
- }
140
- }
141
- return 'stop';
142
- }
143
- if (key === 'Tab' || key === ' ' || key === ':') {
144
- if (!this.data.includes(':') && this.data.length > 0) {
145
- this.makeHourFull();
146
- this.data += ':';
147
- this.caretPositionStart++;
148
- return 'stop';
149
- }
150
- if (key === 'Tab') {
151
- return 'tab';
152
- }
153
- return 'stop';
154
- }
155
- if (key === 'ArrowRight') {
156
- if (this.caretPositionStart < this.data.length) {
157
- this.caretPositionStart++;
158
- }
159
- return 'arrow';
160
- }
161
- if (key === 'ArrowLeft') {
162
- if (this.caretPositionStart > 0) {
163
- this.caretPositionStart--;
164
- }
165
- return 'arrow';
166
- }
167
- if (key === 'ArrowDown' && !this.focusedFlag) {
168
- this.show();
169
- }
170
- return 'continue';
171
- }
172
- checkUnUsedKeys(key) {
173
- const r = new RegExp('[0-9]');
174
- return !r.test(key);
175
- }
176
- setCaretPosition(elem) {
177
- setTimeout(() => {
178
- if (elem !== null) {
179
- if (elem.createTextRange) {
180
- const range = elem.createTextRange();
181
- range.move('character', this.caretPositionStart);
182
- range.select();
183
- }
184
- else {
185
- if (elem.selectionStart) {
186
- elem.focus();
187
- elem.setSelectionRange(this.caretPositionStart, this.caretPositionStart);
188
- }
189
- else {
190
- elem.focus();
191
- }
192
- }
193
- }
194
- });
195
- }
196
- checkOutOfRangeNumber(time) {
197
- const hour = parseInt(time.split(':')[0], 10);
198
- let minute = -1;
199
- if (time.split(':').length > 1) {
200
- minute = parseInt(time.split(':')[1], 10);
201
- }
202
- if (hour < 24 && time.split(':')[0].length < 3 && minute < 60) {
203
- if (time.split(':').length > 1 && time.split(':')[1].length > 2) {
204
- return false;
205
- }
206
- return true;
207
- }
208
- return false;
209
- }
210
- makeHourFull() {
211
- const hourPart = this.data.split(':')[0];
212
- const minutePart = this.data.split(':').length > 1 ? this.data.split(':')[1] : '';
213
- if (hourPart.length === 1) {
214
- this.data = '0' + hourPart + (minutePart ? ':' + minutePart : minutePart);
215
- this.caretPositionStart++;
216
- }
217
- }
218
- makeMinuteFull() {
219
- const hourPart = this.data.split(':')[0];
220
- const minutePart = this.data.split(':').length > 1 ? this.data.split(':')[1] : '';
221
- if (minutePart.length === 0) {
222
- this.data = hourPart + ':00';
223
- this.caretPositionStart += 2;
224
- }
225
- if (minutePart.length === 1) {
226
- this.data = hourPart + ':' + minutePart + '0';
227
- this.caretPositionStart++;
228
- }
229
- }
230
- fixTimeToNearest() {
231
- if (this.data.length > 0) {
232
- this.makeHourFull();
233
- this.makeMinuteFull();
234
- }
235
- }
236
- //eslint-disable-next-line @typescript-eslint/no-unused-vars, no-unused-vars, @typescript-eslint/no-empty-function
237
- onChangeFn = (_) => { };
238
- // eslint-disable-next-line @typescript-eslint/no-empty-function
239
- onTouchedFn = () => { };
240
- registerOnChange(fn) {
241
- this.onChangeFn = fn;
242
- }
243
- registerOnTouched(fn) {
244
- this.onTouchedFn = fn;
245
- }
246
- setDisabledState(isDisabled) {
247
- this.disabled = isDisabled;
248
- }
249
- writeValue(obj) {
250
- if (obj) {
251
- obj = obj.toString();
252
- let temp = '';
253
- if (obj.split(':').length >= 2) {
254
- temp = obj.split(':')[0] + ':' + obj.split(':')[1];
255
- }
256
- this._data = temp;
257
- }
258
- else {
259
- this._data = '';
260
- }
261
- }
262
- onChange() {
263
- this.onChangeFn(this.data);
264
- }
265
- show() {
266
- this.calcListPosition();
267
- this.focusedFlag = true;
268
- }
269
- close(val = null) {
270
- if (val) {
271
- this.data = val;
272
- }
273
- else {
274
- this.fixTimeToNearest();
275
- }
276
- this.focusedFlag = false;
277
- this.control?.markAsTouched();
278
- }
279
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: EcabsTimepickerComponent, deps: [{ token: i0.ElementRef }, { token: i1.FormTimePickerService }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component });
280
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: EcabsTimepickerComponent, selector: "ecabs-timepicker", inputs: { showCloseIcon: "showCloseIcon", focusedFlag: "focusedFlag", listPlacement: "listPlacement", appendTo: "appendTo", min: "min", max: "max", showDayStart: "showDayStart", showDayEnd: "showDayEnd", addSecond: "addSecond" }, host: { listeners: { "document:mousedown": "handleMousedown($event)" }, properties: { "class.form-timepicker-focused": "this.focusedFlag" } }, providers: [
281
- {
282
- provide: NG_VALUE_ACCESSOR,
283
- useExisting: EcabsTimepickerComponent,
284
- multi: true,
285
- },
286
- ], usesInheritance: true, ngImport: i0, template: "<div class=\"timeInputWrapper\" [ngClass]=\"{ disabled: disabled }\">\r\n <app-element-wrapper\r\n [data]=\"getData()\"\r\n [showCloseIcon]=\"showCloseIcon\"\r\n [focusedFlag]=\"focusedFlag\"\r\n (clear)=\"clearInput()\"\r\n >\r\n <div class=\"timeInputFieldWrapper\">\r\n <input\r\n type=\"text\"\r\n class=\"form-field__input\"\r\n [value]=\"data\"\r\n [disabled]=\"disabled\"\r\n (focus)=\"show()\"\r\n (click)=\"show()\"\r\n (keydown)=\"inputKeyDown($event)\"\r\n [placeholder]=\"placeholder\"\r\n />\r\n <div class=\"form-field__input--suffix\" *ngIf=\"type !== 'number'\">\r\n <ng-content select=\"mat-icon\"></ng-content>\r\n </div>\r\n <ecabs-time-list-panel\r\n [typedValue]=\"data\"\r\n *ngIf=\"focusedFlag\"\r\n [showDayStart]=\"showDayStart\"\r\n [showDayEnd]=\"showDayEnd\"\r\n [min]=\"min\"\r\n [max]=\"max\"\r\n class=\"form-time-list\"\r\n [appendTo]=\"appendTo\"\r\n [listPosition]=\"listPosition\"\r\n (closeMe)=\"close($event)\"\r\n ></ecabs-time-list-panel>\r\n </div>\r\n </app-element-wrapper>\r\n</div>\r\n", styles: [":host::ng-deep .timeInputWrapper app-element-wrapper .form-field{margin-bottom:0}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.ElementWrapperComponent, selector: "app-element-wrapper", inputs: ["data", "showCloseIcon", "focusedFlag", "showPassword", "control"], outputs: ["showHidePassword", "clear", "increase", "decrease"] }, { kind: "component", type: i4.EcabsTimeListPanelComponent, selector: "ecabs-time-list-panel", inputs: ["typedValue", "listPlacement", "listPosition", "appendTo", "min", "max", "showDayStart", "showDayEnd", "position"], outputs: ["onscroll", "closeMe"] }] });
287
- }
288
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: EcabsTimepickerComponent, decorators: [{
289
- type: Component,
290
- args: [{ selector: 'ecabs-timepicker', providers: [
291
- {
292
- provide: NG_VALUE_ACCESSOR,
293
- useExisting: EcabsTimepickerComponent,
294
- multi: true,
295
- },
296
- ], template: "<div class=\"timeInputWrapper\" [ngClass]=\"{ disabled: disabled }\">\r\n <app-element-wrapper\r\n [data]=\"getData()\"\r\n [showCloseIcon]=\"showCloseIcon\"\r\n [focusedFlag]=\"focusedFlag\"\r\n (clear)=\"clearInput()\"\r\n >\r\n <div class=\"timeInputFieldWrapper\">\r\n <input\r\n type=\"text\"\r\n class=\"form-field__input\"\r\n [value]=\"data\"\r\n [disabled]=\"disabled\"\r\n (focus)=\"show()\"\r\n (click)=\"show()\"\r\n (keydown)=\"inputKeyDown($event)\"\r\n [placeholder]=\"placeholder\"\r\n />\r\n <div class=\"form-field__input--suffix\" *ngIf=\"type !== 'number'\">\r\n <ng-content select=\"mat-icon\"></ng-content>\r\n </div>\r\n <ecabs-time-list-panel\r\n [typedValue]=\"data\"\r\n *ngIf=\"focusedFlag\"\r\n [showDayStart]=\"showDayStart\"\r\n [showDayEnd]=\"showDayEnd\"\r\n [min]=\"min\"\r\n [max]=\"max\"\r\n class=\"form-time-list\"\r\n [appendTo]=\"appendTo\"\r\n [listPosition]=\"listPosition\"\r\n (closeMe)=\"close($event)\"\r\n ></ecabs-time-list-panel>\r\n </div>\r\n </app-element-wrapper>\r\n</div>\r\n", styles: [":host::ng-deep .timeInputWrapper app-element-wrapper .form-field{margin-bottom:0}\n"] }]
297
- }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.FormTimePickerService }, { type: i0.Injector }]; }, propDecorators: { showCloseIcon: [{
298
- type: Input
299
- }], focusedFlag: [{
300
- type: Input
301
- }, {
302
- type: HostBinding,
303
- args: ['class.form-timepicker-focused']
304
- }], listPlacement: [{
305
- type: Input
306
- }], appendTo: [{
307
- type: Input
308
- }], min: [{
309
- type: Input
310
- }], max: [{
311
- type: Input
312
- }], showDayStart: [{
313
- type: Input
314
- }], showDayEnd: [{
315
- type: Input
316
- }], addSecond: [{
317
- type: Input
318
- }], handleMousedown: [{
319
- type: HostListener,
320
- args: ['document:mousedown', ['$event']]
321
- }] } });
322
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWNhYnMtdGltZXBpY2tlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lY2Ficy1jb21wb25lbnRzL3NyYy9saWIvZWNhYnMtdGltZXBpY2tlci9lY2Ficy10aW1lcGlja2VyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VjYWJzLWNvbXBvbmVudHMvc3JjL2xpYi9lY2Ficy10aW1lcGlja2VyL2VjYWJzLXRpbWVwaWNrZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBdUMsTUFBTSxlQUFlLENBQUM7QUFDakgsT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxTQUFTLEVBQXNCLE1BQU0sZ0JBQWdCLENBQUM7QUFFeEcsT0FBTyxvQkFBb0IsTUFBTSxzQkFBc0IsQ0FBQzs7Ozs7O0FBZXhELE1BQU0sT0FBTyx3QkFBeUIsU0FBUSxvQkFBb0I7SUFxQ3REO0lBQ0E7SUFDQTtJQXRDRCxhQUFhLEdBQUcsSUFBSSxDQUFDO0lBQzJCLFdBQVcsR0FBRyxLQUFLLENBQUM7SUFDcEUsYUFBYSxHQUFrQixNQUFNLENBQUM7SUFDdEMsUUFBUSxDQUFVO0lBQ2xCLEdBQUcsQ0FBVTtJQUNiLEdBQUcsQ0FBVTtJQUNiLFlBQVksR0FBRyxJQUFJLENBQUM7SUFDcEIsVUFBVSxHQUFHLEtBQUssQ0FBQztJQUNuQixTQUFTLEdBQUcsSUFBSSxDQUFDO0lBRTFCLFFBQVEsR0FBaUIsRUFBRSxDQUFDO0lBQzVCLEtBQUssR0FBRyxFQUFFLENBQUM7SUFDWCxXQUFXLENBQUM7SUFDWixNQUFNLENBQU87SUFDYixZQUFZLEdBQWlCLEVBQUUsQ0FBQztJQUNoQyxrQkFBa0IsQ0FBTztJQUN6QixnQkFBZ0IsQ0FBTztJQUV2QixJQUFJLElBQUk7UUFDTixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDcEIsQ0FBQztJQUVELElBQUksSUFBSSxDQUFFLEtBQVU7UUFDbEIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbkIsSUFBSyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUc7WUFDN0IsSUFBSyxJQUFJLENBQUMsS0FBSyxLQUFLLE9BQU8sRUFBRztnQkFDNUIsSUFBSSxDQUFDLFVBQVUsQ0FBRSxJQUFJLENBQUMsS0FBSyxHQUFHLENBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUUsQ0FBRSxDQUFDO2FBQ2pFO2lCQUFNO2dCQUNMLElBQUksQ0FBQyxVQUFVLENBQUUsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFFLENBQUUsQ0FBQzthQUNqRTtTQUNGO2FBQU0sSUFBSyxJQUFJLENBQUMsS0FBSyxLQUFLLEVBQUUsRUFBRztZQUM5QixJQUFJLENBQUMsVUFBVSxDQUFFLElBQUksQ0FBQyxLQUFLLENBQUUsQ0FBQztTQUMvQjtJQUNILENBQUM7SUFFRCxZQUNVLFVBQXNCLEVBQ3RCLGlCQUF3QyxFQUN4QyxRQUFrQjtRQUUxQixLQUFLLEVBQUUsQ0FBQztRQUpBLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDdEIsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUF1QjtRQUN4QyxhQUFRLEdBQVIsUUFBUSxDQUFVO1FBRzFCLElBQUksQ0FBQyxXQUFXLEdBQUcsT0FBTyxDQUFDO1FBQzNCLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUM7UUFDakQsVUFBVSxDQUFFLEdBQUcsRUFBRTtZQUNmLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUUsT0FBTyxDQUFFLENBQUM7UUFDMUQsQ0FBQyxDQUFFLENBQUM7UUFDSixJQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRztZQUNyQixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxTQUFTLENBQUM7U0FDL0Q7SUFDSCxDQUFDO0lBR0QsZUFBZSxDQUFFLE1BQWtCO1FBQ2pDLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFxQixDQUFDO1FBQzVDLElBQ0UsTUFBTSxDQUFDLE9BQU8sQ0FBRSxpQkFBaUIsQ0FBRTtZQUNuQyxNQUFNLENBQUMsT0FBTyxDQUFFLG1CQUFtQixDQUFFLEtBQUssSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUUsbUJBQW1CLENBQUUsRUFDL0Y7WUFDQSxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBRSxtQkFBbUIsQ0FBRSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBRTlELE9BQU87U0FDUjtRQUNELElBQUssSUFBSSxDQUFDLFdBQVcsRUFBRztZQUN0QixJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7U0FDZDtJQUNILENBQUM7SUFFRCxlQUFlO1FBQ2IsTUFBTSxTQUFTLEdBQWMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUUsU0FBUyxFQUFFLElBQUksQ0FBZSxDQUFDO1FBQy9FLElBQUssU0FBUyxFQUFHO1lBQ2YsSUFBSSxDQUFDLE9BQU8sR0FBRyxTQUFTLENBQUMsT0FBNkIsQ0FBQztTQUN4RDtJQUNILENBQUM7SUFFRCxVQUFVO1FBQ1IsSUFBSSxDQUFDLElBQUksR0FBRyxFQUFFLENBQUM7SUFDakIsQ0FBQztJQUVELGdCQUFnQjtRQUNkLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFFLHdCQUF3QixDQUFFLENBQUMscUJBQXFCLEVBQUUsQ0FBQztRQUNwRyxJQUFLLElBQUksQ0FBQyxRQUFRLEVBQUc7WUFDbkIsSUFBSSxDQUFDLFlBQVksR0FBRztnQkFDbEIsSUFBSSxFQUFFLFFBQVEsQ0FBQyxDQUFDO2dCQUNoQixHQUFHLEVBQUUsUUFBUSxDQUFDLEdBQUcsR0FBRyxRQUFRLENBQUMsTUFBTTtnQkFDbkMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxLQUFLO2FBQ3RCLENBQUM7U0FDSDthQUFNO1lBQ0wsSUFBSSxDQUFDLFlBQVksR0FBRztnQkFDbEIsSUFBSSxFQUFFLENBQUM7Z0JBQ1AsR0FBRyxFQUFFLFFBQVEsQ0FBQyxNQUFNO2dCQUNwQixLQUFLLEVBQUUsUUFBUSxDQUFDLEtBQUs7YUFDdEIsQ0FBQztTQUNIO0lBQ0gsQ0FBQztJQUVELFlBQVksQ0FBRSxLQUFVO1FBQ3RCLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQztRQUN0RCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUM7UUFDbEQsTUFBTSxHQUFHLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQztRQUN0QixJQUFJLENBQUMsZ0JBQWdCLENBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBRSxDQUFDO1FBQ3JDLFFBQVMsSUFBSSxDQUFDLGdCQUFnQixDQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsa0JBQWtCLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFFLEVBQUc7WUFDdEYsS0FBSyxNQUFNO2dCQUNULE9BQU8sS0FBSyxDQUFDO1lBRWYsS0FBSyxLQUFLO2dCQUNSLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztnQkFFYixPQUFPLEtBQUssQ0FBQztZQUVmLEtBQUssT0FBTztnQkFDVixPQUFPLEtBQUssQ0FBQztTQUNoQjtRQUVELElBQUssSUFBSSxDQUFDLGVBQWUsQ0FBRSxHQUFHLENBQUUsRUFBRztZQUNqQyxPQUFPLEtBQUssQ0FBQztTQUNkO1FBRUQsTUFBTSxPQUFPLEdBQ1gsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FBRSxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBRSxJQUFJLENBQUMsa0JBQWtCLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUUsQ0FBQztRQUVySCxJQUFLLElBQUksQ0FBQyxxQkFBcUIsQ0FBRSxPQUFPLENBQUUsRUFBRztZQUMzQyxJQUFJLENBQUMsSUFBSSxHQUFHLE9BQU8sQ0FBQztZQUNwQixJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztTQUMzQjtRQUVELElBQ0UsSUFBSSxDQUFDLGtCQUFrQixLQUFLLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTTtZQUM1QyxDQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxLQUFLLENBQUMsSUFBSSxDQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxLQUFLLENBQUMsSUFBSSxRQUFRLENBQUUsSUFBSSxDQUFDLElBQUksQ0FBRSxHQUFHLENBQUMsQ0FBRSxDQUFFLEVBQ3JGO1lBQ0EsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3BCLElBQUksQ0FBQyxJQUFJLElBQUksR0FBRyxDQUFDO1lBQ2pCLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1NBQzNCO1FBRUQsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQsZ0JBQWdCLENBQUUsR0FBUSxFQUFFLGNBQW1CLEVBQUUsWUFBaUI7UUFDaEUsSUFBSyxjQUFjLEtBQUssWUFBWSxJQUFJLEdBQUcsS0FBSyxXQUFXLElBQUksR0FBRyxLQUFLLFlBQVksRUFBRztZQUNwRixJQUFLLENBQUMsQ0FBRSxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBRSxjQUFjLEVBQUUsWUFBWSxDQUFFLENBQUMsUUFBUSxDQUFFLEdBQUcsQ0FBRSxJQUFJLFlBQVksS0FBSyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBRSxFQUFHO2dCQUMvRyxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFFLENBQUMsRUFBRSxjQUFjLENBQUUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBRSxZQUFZLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUUsQ0FBQzthQUN0RztTQUNGO1FBQ0QsSUFBSyxjQUFjLEtBQUssWUFBWSxJQUFJLEdBQUcsS0FBSyxXQUFXLEVBQUc7WUFDNUQsSUFBSyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUc7Z0JBQzFCLElBQ0UsSUFBSSxDQUFDLElBQUksQ0FBRSxjQUFjLEdBQUcsQ0FBQyxDQUFFLEtBQUssR0FBRztvQkFDdkMsQ0FBRSxJQUFJLENBQUMsSUFBSSxDQUFFLGNBQWMsR0FBRyxDQUFDLENBQUUsS0FBSyxHQUFHLElBQUksY0FBYyxLQUFLLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFFLEVBQ2xGO29CQUNBLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUUsQ0FBQyxFQUFFLGNBQWMsR0FBRyxDQUFDLENBQUUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBRSxZQUFZLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUUsQ0FBQztvQkFDekcsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7aUJBQzNCO2FBQ0Y7WUFFRCxPQUFPLE1BQU0sQ0FBQztTQUNmO1FBQ0QsSUFBSyxHQUFHLEtBQUssS0FBSyxJQUFJLEdBQUcsS0FBSyxHQUFHLElBQUksR0FBRyxLQUFLLEdBQUcsRUFBRztZQUNqRCxJQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUUsR0FBRyxDQUFFLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFHO2dCQUN4RCxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7Z0JBQ3BCLElBQUksQ0FBQyxJQUFJLElBQUksR0FBRyxDQUFDO2dCQUNqQixJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztnQkFFMUIsT0FBTyxNQUFNLENBQUM7YUFDZjtZQUNELElBQUssR0FBRyxLQUFLLEtBQUssRUFBRztnQkFDbkIsT0FBTyxLQUFLLENBQUM7YUFDZDtZQUVELE9BQU8sTUFBTSxDQUFDO1NBQ2Y7UUFDRCxJQUFLLEdBQUcsS0FBSyxZQUFZLEVBQUc7WUFDMUIsSUFBSyxJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUc7Z0JBQ2hELElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO2FBQzNCO1lBRUQsT0FBTyxPQUFPLENBQUM7U0FDaEI7UUFDRCxJQUFLLEdBQUcsS0FBSyxXQUFXLEVBQUc7WUFDekIsSUFBSyxJQUFJLENBQUMsa0JBQWtCLEdBQUcsQ0FBQyxFQUFHO2dCQUNqQyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQzthQUMzQjtZQUVELE9BQU8sT0FBTyxDQUFDO1NBQ2hCO1FBQ0QsSUFBSyxHQUFHLEtBQUssV0FBVyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRztZQUM5QyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7U0FDYjtRQUVELE9BQU8sVUFBVSxDQUFDO0lBQ3BCLENBQUM7SUFFRCxlQUFlLENBQUUsR0FBVztRQUMxQixNQUFNLENBQUMsR0FBRyxJQUFJLE1BQU0sQ0FBRSxPQUFPLENBQUUsQ0FBQztRQUVoQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBRSxHQUFHLENBQUUsQ0FBQztJQUN4QixDQUFDO0lBRUQsZ0JBQWdCLENBQUUsSUFBUztRQUN6QixVQUFVLENBQUUsR0FBRyxFQUFFO1lBQ2YsSUFBSyxJQUFJLEtBQUssSUFBSSxFQUFHO2dCQUNuQixJQUFLLElBQUksQ0FBQyxlQUFlLEVBQUc7b0JBQzFCLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztvQkFDckMsS0FBSyxDQUFDLElBQUksQ0FBRSxXQUFXLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixDQUFFLENBQUM7b0JBQ25ELEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQztpQkFDaEI7cUJBQU07b0JBQ0wsSUFBSyxJQUFJLENBQUMsY0FBYyxFQUFHO3dCQUN6QixJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7d0JBQ2IsSUFBSSxDQUFDLGlCQUFpQixDQUFFLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxJQUFJLENBQUMsa0JBQWtCLENBQUUsQ0FBQztxQkFDNUU7eUJBQU07d0JBQ0wsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO3FCQUNkO2lCQUNGO2FBQ0Y7UUFDSCxDQUFDLENBQUUsQ0FBQztJQUNOLENBQUM7SUFFRCxxQkFBcUIsQ0FBRSxJQUFTO1FBQzlCLE1BQU0sSUFBSSxHQUFHLFFBQVEsQ0FBRSxJQUFJLENBQUMsS0FBSyxDQUFFLEdBQUcsQ0FBRSxDQUFFLENBQUMsQ0FBRSxFQUFFLEVBQUUsQ0FBRSxDQUFDO1FBQ3BELElBQUksTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ2hCLElBQUssSUFBSSxDQUFDLEtBQUssQ0FBRSxHQUFHLENBQUUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFHO1lBQ2xDLE1BQU0sR0FBRyxRQUFRLENBQUUsSUFBSSxDQUFDLEtBQUssQ0FBRSxHQUFHLENBQUUsQ0FBRSxDQUFDLENBQUUsRUFBRSxFQUFFLENBQUUsQ0FBQztTQUNqRDtRQUNELElBQUssSUFBSSxHQUFHLEVBQUUsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFFLEdBQUcsQ0FBRSxDQUFFLENBQUMsQ0FBRSxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksTUFBTSxHQUFHLEVBQUUsRUFBRztZQUNuRSxJQUFLLElBQUksQ0FBQyxLQUFLLENBQUUsR0FBRyxDQUFFLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFFLEdBQUcsQ0FBRSxDQUFFLENBQUMsQ0FBRSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUc7Z0JBQ3ZFLE9BQU8sS0FBSyxDQUFDO2FBQ2Q7WUFFRCxPQUFPLElBQUksQ0FBQztTQUNiO1FBRUQsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQsWUFBWTtRQUNWLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFFLEdBQUcsQ0FBRSxDQUFFLENBQUMsQ0FBRSxDQUFDO1FBQzdDLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFFLEdBQUcsQ0FBRSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFFLEdBQUcsQ0FBRSxDQUFFLENBQUMsQ0FBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDeEYsSUFBSyxRQUFRLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRztZQUMzQixJQUFJLENBQUMsSUFBSSxHQUFHLEdBQUcsR0FBRyxRQUFRLEdBQUcsQ0FBRSxVQUFVLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxVQUFVLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBRSxDQUFDO1lBQzVFLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1NBQzNCO0lBQ0gsQ0FBQztJQUVELGNBQWM7UUFDWixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBRSxHQUFHLENBQUUsQ0FBRSxDQUFDLENBQUUsQ0FBQztRQUM3QyxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBRSxHQUFHLENBQUUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBRSxHQUFHLENBQUUsQ0FBRSxDQUFDLENBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ3hGLElBQUssVUFBVSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUc7WUFDN0IsSUFBSSxDQUFDLElBQUksR0FBRyxRQUFRLEdBQUcsS0FBSyxDQUFDO1lBQzdCLElBQUksQ0FBQyxrQkFBa0IsSUFBSSxDQUFDLENBQUM7U0FDOUI7UUFDRCxJQUFLLFVBQVUsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFHO1lBQzdCLElBQUksQ0FBQyxJQUFJLEdBQUcsUUFBUSxHQUFHLEdBQUcsR0FBRyxVQUFVLEdBQUcsR0FBRyxDQUFDO1lBQzlDLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1NBQzNCO0lBQ0gsQ0FBQztJQUVELGdCQUFnQjtRQUNkLElBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFHO1lBQzFCLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUNwQixJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7U0FDdkI7SUFDSCxDQUFDO0lBRUQsa0hBQWtIO0lBQzNHLFVBQVUsR0FBRyxDQUFFLENBQU0sRUFBUyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQzVDLGdFQUFnRTtJQUN6RCxXQUFXLEdBQUcsR0FBUyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBRTlCLGdCQUFnQixDQUFFLEVBQU87UUFDOUIsSUFBSSxDQUFDLFVBQVUsR0FBRyxFQUFFLENBQUM7SUFDdkIsQ0FBQztJQUVNLGlCQUFpQixDQUFFLEVBQU87UUFDL0IsSUFBSSxDQUFDLFdBQVcsR0FBRyxFQUFFLENBQUM7SUFDeEIsQ0FBQztJQUVNLGdCQUFnQixDQUFFLFVBQW1CO1FBQzFDLElBQUksQ0FBQyxRQUFRLEdBQUcsVUFBVSxDQUFDO0lBQzdCLENBQUM7SUFFTSxVQUFVLENBQUUsR0FBUTtRQUN6QixJQUFLLEdBQUcsRUFBRztZQUNULEdBQUcsR0FBRyxHQUFHLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDckIsSUFBSSxJQUFJLEdBQUcsRUFBRSxDQUFDO1lBQ2QsSUFBSyxHQUFHLENBQUMsS0FBSyxDQUFFLEdBQUcsQ0FBRSxDQUFDLE1BQU0sSUFBSSxDQUFDLEVBQUc7Z0JBQ2xDLElBQUksR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFFLEdBQUcsQ0FBRSxDQUFFLENBQUMsQ0FBRSxHQUFHLEdBQUcsR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFFLEdBQUcsQ0FBRSxDQUFFLENBQUMsQ0FBRSxDQUFDO2FBQzVEO1lBQ0QsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7U0FDbkI7YUFBTTtZQUNMLElBQUksQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDO1NBQ2pCO0lBQ0gsQ0FBQztJQUVNLFFBQVE7UUFDYixJQUFJLENBQUMsVUFBVSxDQUFFLElBQUksQ0FBQyxJQUFJLENBQUUsQ0FBQztJQUMvQixDQUFDO0lBRUQsSUFBSTtRQUNGLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO0lBQzFCLENBQUM7SUFFRCxLQUFLLENBQUUsR0FBRyxHQUFHLElBQUk7UUFDZixJQUFLLEdBQUcsRUFBRztZQUNULElBQUksQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDO1NBQ2pCO2FBQU07WUFDTCxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztTQUN6QjtRQUNELElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO1FBQ3pCLElBQUksQ0FBQyxPQUFPLEVBQUUsYUFBYSxFQUFFLENBQUM7SUFDaEMsQ0FBQzt3R0F0VFUsd0JBQXdCOzRGQUF4Qix3QkFBd0IsZ2FBUnhCO1lBQ1Q7Z0JBQ0UsT0FBTyxFQUFFLGlCQUFpQjtnQkFDMUIsV0FBVyxFQUFFLHdCQUF3QjtnQkFDckMsS0FBSyxFQUFFLElBQUk7YUFDWjtTQUNGLGlEQ2hCSCwrckNBb0NBOzs0RkRsQmEsd0JBQXdCO2tCQVpwQyxTQUFTOytCQUNFLGtCQUFrQixhQUdqQjt3QkFDVDs0QkFDRSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixXQUFXLDBCQUEwQjs0QkFDckMsS0FBSyxFQUFFLElBQUk7eUJBQ1o7cUJBQ0Y7NEpBR1EsYUFBYTtzQkFBckIsS0FBSztnQkFDbUQsV0FBVztzQkFBbkUsS0FBSzs7c0JBQUksV0FBVzt1QkFBRSwrQkFBK0I7Z0JBQzdDLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxHQUFHO3NCQUFYLEtBQUs7Z0JBQ0csR0FBRztzQkFBWCxLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQTRDTixlQUFlO3NCQURkLFlBQVk7dUJBQUUsb0JBQW9CLEVBQUUsQ0FBRSxRQUFRLENBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBIb3N0QmluZGluZywgSG9zdExpc3RlbmVyLCBFbGVtZW50UmVmLCBJbmplY3RvciwgQWZ0ZXJWaWV3SW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IsIE5nQ29udHJvbCwgVW50eXBlZEZvcm1Db250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBGb3JtVGltZVBpY2tlclNlcnZpY2UgfSBmcm9tICcuL2VjYWJzLXRpbWVwaWNrZXIuc2VydmljZSc7XHJcbmltcG9ydCBFbGVtZW50QmFzZUNvbXBvbmVudCBmcm9tICcuLi9iYXNlL2VsZW1lbnQtYmFzZSc7XHJcbmltcG9ydCB7IExpc3RQbGFjZW1lbnQsIExpc3RQb3NpdGlvbiB9IGZyb20gJy4uL21vZGVscy90aW1lcGlja2VyLm1vZGVscyc7XHJcblxyXG5AQ29tcG9uZW50KCB7XHJcbiAgc2VsZWN0b3I6ICdlY2Ficy10aW1lcGlja2VyJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZWNhYnMtdGltZXBpY2tlci5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbICdlY2Ficy10aW1lcGlja2VyLmNvbXBvbmVudC5zY3NzJyBdLFxyXG4gIHByb3ZpZGVyczogW1xyXG4gICAge1xyXG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcclxuICAgICAgdXNlRXhpc3Rpbmc6IEVjYWJzVGltZXBpY2tlckNvbXBvbmVudCxcclxuICAgICAgbXVsdGk6IHRydWUsXHJcbiAgICB9LFxyXG4gIF0sXHJcbn0gKVxyXG5leHBvcnQgY2xhc3MgRWNhYnNUaW1lcGlja2VyQ29tcG9uZW50IGV4dGVuZHMgRWxlbWVudEJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciwgQWZ0ZXJWaWV3SW5pdCB7XHJcbiAgQElucHV0KCkgc2hvd0Nsb3NlSWNvbiA9IHRydWU7XHJcbiAgQElucHV0KCkgQEhvc3RCaW5kaW5nKCAnY2xhc3MuZm9ybS10aW1lcGlja2VyLWZvY3VzZWQnICkgZm9jdXNlZEZsYWcgPSBmYWxzZTtcclxuICBASW5wdXQoKSBsaXN0UGxhY2VtZW50OiBMaXN0UGxhY2VtZW50ID0gJ2F1dG8nO1xyXG4gIEBJbnB1dCgpIGFwcGVuZFRvITogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIG1pbiE6IHN0cmluZztcclxuICBASW5wdXQoKSBtYXghOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgc2hvd0RheVN0YXJ0ID0gdHJ1ZTtcclxuICBASW5wdXQoKSBzaG93RGF5RW5kID0gZmFsc2U7XHJcbiAgQElucHV0KCkgYWRkU2Vjb25kID0gdHJ1ZTtcclxuXHJcbiAgcG9zaXRpb246IExpc3RQb3NpdGlvbiA9IHt9O1xyXG4gIF9kYXRhID0gJyc7XHJcbiAgX3RpbWVQaWNrZXI7XHJcbiAgX2lucHV0ITogYW55O1xyXG4gIGxpc3RQb3NpdGlvbjogTGlzdFBvc2l0aW9uID0ge307XHJcbiAgY2FyZXRQb3NpdGlvblN0YXJ0ITogYW55O1xyXG4gIGNhcmV0UG9zaXRpb25FbmQhOiBhbnk7XHJcblxyXG4gIGdldCBkYXRhKCk6IGFueSB7XHJcbiAgICByZXR1cm4gdGhpcy5fZGF0YTtcclxuICB9XHJcblxyXG4gIHNldCBkYXRhKCB2YWx1ZTogYW55ICkge1xyXG4gICAgdGhpcy5fZGF0YSA9IHZhbHVlO1xyXG4gICAgaWYgKCB0aGlzLl9kYXRhLmxlbmd0aCA9PT0gNSApIHtcclxuICAgICAgaWYgKCB0aGlzLl9kYXRhID09PSAnMjM6NTknICkge1xyXG4gICAgICAgIHRoaXMub25DaGFuZ2VGbiggdGhpcy5fZGF0YSArICggdGhpcy5hZGRTZWNvbmQgPyAnOjU5JyA6ICcnICkgKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLm9uQ2hhbmdlRm4oIHRoaXMuX2RhdGEgKyAoIHRoaXMuYWRkU2Vjb25kID8gJzowMCcgOiAnJyApICk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSBpZiAoIHRoaXMuX2RhdGEgPT09ICcnICkge1xyXG4gICAgICB0aGlzLm9uQ2hhbmdlRm4oIHRoaXMuX2RhdGEgKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxyXG4gICAgcHJpdmF0ZSB0aW1lcGlja2VyU2VydmljZTogRm9ybVRpbWVQaWNrZXJTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3JcclxuICApIHtcclxuICAgIHN1cGVyKCk7XHJcbiAgICB0aGlzLnBsYWNlaG9sZGVyID0gJzAwOjAwJztcclxuICAgIHRoaXMuX3RpbWVQaWNrZXIgPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtcclxuICAgIHNldFRpbWVvdXQoICgpID0+IHtcclxuICAgICAgdGhpcy5faW5wdXQgPSB0aGlzLl90aW1lUGlja2VyLnF1ZXJ5U2VsZWN0b3IoICdpbnB1dCcgKTtcclxuICAgIH0gKTtcclxuICAgIGlmICggIXRoaXMuaWNvbkNsYXNzICkge1xyXG4gICAgICB0aGlzLmljb25DbGFzcyA9IHRoaXMudGltZXBpY2tlclNlcnZpY2UuZ2V0Q29uZmlnKCkuaWNvbkNsYXNzO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgQEhvc3RMaXN0ZW5lciggJ2RvY3VtZW50Om1vdXNlZG93bicsIFsgJyRldmVudCcgXSApXHJcbiAgaGFuZGxlTW91c2Vkb3duKCAkZXZlbnQ6IE1vdXNlRXZlbnQgKTogdm9pZCB7XHJcbiAgICBjb25zdCB0YXJnZXQgPSAkZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xyXG4gICAgaWYgKFxyXG4gICAgICB0YXJnZXQuY2xvc2VzdCggJy5mb3JtLXRpbWUtbGlzdCcgKSB8fFxyXG4gICAgICB0YXJnZXQuY2xvc2VzdCggJy50aW1lSW5wdXRXcmFwcGVyJyApID09PSB0aGlzLl90aW1lUGlja2VyLnF1ZXJ5U2VsZWN0b3IoICcudGltZUlucHV0V3JhcHBlcicgKVxyXG4gICAgKSB7XHJcbiAgICAgIHRoaXMuX3RpbWVQaWNrZXIucXVlcnlTZWxlY3RvciggJy50aW1lSW5wdXRXcmFwcGVyJyApLmZvY3VzKCk7XHJcblxyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBpZiAoIHRoaXMuZm9jdXNlZEZsYWcgKSB7XHJcbiAgICAgIHRoaXMuY2xvc2UoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgIGNvbnN0IG5nQ29udHJvbDogTmdDb250cm9sID0gdGhpcy5pbmplY3Rvci5nZXQoIE5nQ29udHJvbCwgbnVsbCApIGFzIE5nQ29udHJvbDtcclxuICAgIGlmICggbmdDb250cm9sICkge1xyXG4gICAgICB0aGlzLmNvbnRyb2wgPSBuZ0NvbnRyb2wuY29udHJvbCBhcyBVbnR5cGVkRm9ybUNvbnRyb2w7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjbGVhcklucHV0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5kYXRhID0gJyc7XHJcbiAgfVxyXG5cclxuICBjYWxjTGlzdFBvc2l0aW9uKCk6IHZvaWQge1xyXG4gICAgY29uc3QgcG9zaXRpb24gPSB0aGlzLl90aW1lUGlja2VyLnF1ZXJ5U2VsZWN0b3IoICcudGltZUlucHV0RmllbGRXcmFwcGVyJyApLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xyXG4gICAgaWYgKCB0aGlzLmFwcGVuZFRvICkge1xyXG4gICAgICB0aGlzLmxpc3RQb3NpdGlvbiA9IHtcclxuICAgICAgICBsZWZ0OiBwb3NpdGlvbi54LFxyXG4gICAgICAgIHRvcDogcG9zaXRpb24udG9wICsgcG9zaXRpb24uaGVpZ2h0LFxyXG4gICAgICAgIHdpZHRoOiBwb3NpdGlvbi53aWR0aCxcclxuICAgICAgfTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMubGlzdFBvc2l0aW9uID0ge1xyXG4gICAgICAgIGxlZnQ6IDAsXHJcbiAgICAgICAgdG9wOiBwb3NpdGlvbi5oZWlnaHQsXHJcbiAgICAgICAgd2lkdGg6IHBvc2l0aW9uLndpZHRoLFxyXG4gICAgICB9O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaW5wdXRLZXlEb3duKCBldmVudDogYW55ICk6IGJvb2xlYW4ge1xyXG4gICAgdGhpcy5jYXJldFBvc2l0aW9uU3RhcnQgPSBldmVudC50YXJnZXQuc2VsZWN0aW9uU3RhcnQ7XHJcbiAgICB0aGlzLmNhcmV0UG9zaXRpb25FbmQgPSBldmVudC50YXJnZXQuc2VsZWN0aW9uRW5kO1xyXG4gICAgY29uc3Qga2V5ID0gZXZlbnQua2V5O1xyXG4gICAgdGhpcy5zZXRDYXJldFBvc2l0aW9uKCB0aGlzLl9pbnB1dCApO1xyXG4gICAgc3dpdGNoICggdGhpcy5jaGVja1NwZWNpYWxLZXlzKCBrZXksIHRoaXMuY2FyZXRQb3NpdGlvblN0YXJ0LCB0aGlzLmNhcmV0UG9zaXRpb25FbmQgKSApIHtcclxuICAgICAgY2FzZSAnc3RvcCc6XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG5cclxuICAgICAgY2FzZSAndGFiJzpcclxuICAgICAgICB0aGlzLmNsb3NlKCk7XHJcblxyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuXHJcbiAgICAgIGNhc2UgJ2Fycm93JzpcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCB0aGlzLmNoZWNrVW5Vc2VkS2V5cygga2V5ICkgKSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBuZXdEYXRhID1cclxuICAgICAgdGhpcy5kYXRhLnNsaWNlKCAwLCB0aGlzLmNhcmV0UG9zaXRpb25TdGFydCApICsga2V5ICsgdGhpcy5kYXRhLnNsaWNlKCB0aGlzLmNhcmV0UG9zaXRpb25TdGFydCwgdGhpcy5kYXRhLmxlbmd0aCApO1xyXG5cclxuICAgIGlmICggdGhpcy5jaGVja091dE9mUmFuZ2VOdW1iZXIoIG5ld0RhdGEgKSApIHtcclxuICAgICAgdGhpcy5kYXRhID0gbmV3RGF0YTtcclxuICAgICAgdGhpcy5jYXJldFBvc2l0aW9uU3RhcnQrKztcclxuICAgIH1cclxuXHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMuY2FyZXRQb3NpdGlvblN0YXJ0ID09PSB0aGlzLmRhdGEubGVuZ3RoICYmXHJcbiAgICAgICggdGhpcy5kYXRhLmxlbmd0aCA9PT0gMiB8fCAoIHRoaXMuZGF0YS5sZW5ndGggPT09IDEgJiYgcGFyc2VJbnQoIHRoaXMuZGF0YSApID4gMiApIClcclxuICAgICkge1xyXG4gICAgICB0aGlzLm1ha2VIb3VyRnVsbCgpO1xyXG4gICAgICB0aGlzLmRhdGEgKz0gJzonO1xyXG4gICAgICB0aGlzLmNhcmV0UG9zaXRpb25TdGFydCsrO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIGNoZWNrU3BlY2lhbEtleXMoIGtleTogYW55LCBzZWxlY3Rpb25TdGFydDogYW55LCBzZWxlY3Rpb25FbmQ6IGFueSApOiAnc3RvcCcgfCAnY29udGludWUnIHwgJ3RhYicgfCAnYXJyb3cnIHtcclxuICAgIGlmICggc2VsZWN0aW9uU3RhcnQgIT09IHNlbGVjdGlvbkVuZCAmJiBrZXkgIT09ICdBcnJvd0xlZnQnICYmIGtleSAhPT0gJ0Fycm93UmlnaHQnICkge1xyXG4gICAgICBpZiAoICEoIHRoaXMuZGF0YS5zbGljZSggc2VsZWN0aW9uU3RhcnQsIHNlbGVjdGlvbkVuZCApLmluY2x1ZGVzKCAnOicgKSAmJiBzZWxlY3Rpb25FbmQgIT09IHRoaXMuZGF0YS5sZW5ndGggKSApIHtcclxuICAgICAgICB0aGlzLmRhdGEgPSB0aGlzLmRhdGEuc2xpY2UoIDAsIHNlbGVjdGlvblN0YXJ0ICkgKyB0aGlzLmRhdGEuc2xpY2UoIHNlbGVjdGlvbkVuZCwgdGhpcy5kYXRhLmxlbmd0aCApO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAoIHNlbGVjdGlvblN0YXJ0ID09PSBzZWxlY3Rpb25FbmQgJiYga2V5ID09PSAnQmFja3NwYWNlJyApIHtcclxuICAgICAgaWYgKCB0aGlzLmRhdGEubGVuZ3RoID4gMCApIHtcclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICB0aGlzLmRhdGFbIHNlbGVjdGlvblN0YXJ0IC0gMSBdICE9PSAnOicgfHxcclxuICAgICAgICAgICggdGhpcy5kYXRhWyBzZWxlY3Rpb25TdGFydCAtIDEgXSA9PT0gJzonICYmIHNlbGVjdGlvblN0YXJ0ID09PSB0aGlzLmRhdGEubGVuZ3RoIClcclxuICAgICAgICApIHtcclxuICAgICAgICAgIHRoaXMuZGF0YSA9IHRoaXMuZGF0YS5zbGljZSggMCwgc2VsZWN0aW9uU3RhcnQgLSAxICkgKyB0aGlzLmRhdGEuc2xpY2UoIHNlbGVjdGlvbkVuZCwgdGhpcy5kYXRhLmxlbmd0aCApO1xyXG4gICAgICAgICAgdGhpcy5jYXJldFBvc2l0aW9uU3RhcnQtLTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHJldHVybiAnc3RvcCc7XHJcbiAgICB9XHJcbiAgICBpZiAoIGtleSA9PT0gJ1RhYicgfHwga2V5ID09PSAnICcgfHwga2V5ID09PSAnOicgKSB7XHJcbiAgICAgIGlmICggIXRoaXMuZGF0YS5pbmNsdWRlcyggJzonICkgJiYgdGhpcy5kYXRhLmxlbmd0aCA+IDAgKSB7XHJcbiAgICAgICAgdGhpcy5tYWtlSG91ckZ1bGwoKTtcclxuICAgICAgICB0aGlzLmRhdGEgKz0gJzonO1xyXG4gICAgICAgIHRoaXMuY2FyZXRQb3NpdGlvblN0YXJ0Kys7XHJcblxyXG4gICAgICAgIHJldHVybiAnc3RvcCc7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKCBrZXkgPT09ICdUYWInICkge1xyXG4gICAgICAgIHJldHVybiAndGFiJztcclxuICAgICAgfVxyXG5cclxuICAgICAgcmV0dXJuICdzdG9wJztcclxuICAgIH1cclxuICAgIGlmICgga2V5ID09PSAnQXJyb3dSaWdodCcgKSB7XHJcbiAgICAgIGlmICggdGhpcy5jYXJldFBvc2l0aW9uU3RhcnQgPCB0aGlzLmRhdGEubGVuZ3RoICkge1xyXG4gICAgICAgIHRoaXMuY2FyZXRQb3NpdGlvblN0YXJ0Kys7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHJldHVybiAnYXJyb3cnO1xyXG4gICAgfVxyXG4gICAgaWYgKCBrZXkgPT09ICdBcnJvd0xlZnQnICkge1xyXG4gICAgICBpZiAoIHRoaXMuY2FyZXRQb3NpdGlvblN0YXJ0ID4gMCApIHtcclxuICAgICAgICB0aGlzLmNhcmV0UG9zaXRpb25TdGFydC0tO1xyXG4gICAgICB9XHJcblxyXG4gICAgICByZXR1cm4gJ2Fycm93JztcclxuICAgIH1cclxuICAgIGlmICgga2V5ID09PSAnQXJyb3dEb3duJyAmJiAhdGhpcy5mb2N1c2VkRmxhZyApIHtcclxuICAgICAgdGhpcy5zaG93KCk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuICdjb250aW51ZSc7XHJcbiAgfVxyXG5cclxuICBjaGVja1VuVXNlZEtleXMoIGtleTogc3RyaW5nICk6IGJvb2xlYW4ge1xyXG4gICAgY29uc3QgciA9IG5ldyBSZWdFeHAoICdbMC05XScgKTtcclxuXHJcbiAgICByZXR1cm4gIXIudGVzdCgga2V5ICk7XHJcbiAgfVxyXG5cclxuICBzZXRDYXJldFBvc2l0aW9uKCBlbGVtOiBhbnkgKTogdm9pZCB7XHJcbiAgICBzZXRUaW1lb3V0KCAoKSA9PiB7XHJcbiAgICAgIGlmICggZWxlbSAhPT0gbnVsbCApIHtcclxuICAgICAgICBpZiAoIGVsZW0uY3JlYXRlVGV4dFJhbmdlICkge1xyXG4gICAgICAgICAgY29uc3QgcmFuZ2UgPSBlbGVtLmNyZWF0ZVRleHRSYW5nZSgpO1xyXG4gICAgICAgICAgcmFuZ2UubW92ZSggJ2NoYXJhY3RlcicsIHRoaXMuY2FyZXRQb3NpdGlvblN0YXJ0ICk7XHJcbiAgICAgICAgICByYW5nZS5zZWxlY3QoKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgaWYgKCBlbGVtLnNlbGVjdGlvblN0YXJ0ICkge1xyXG4gICAgICAgICAgICBlbGVtLmZvY3VzKCk7XHJcbiAgICAgICAgICAgIGVsZW0uc2V0U2VsZWN0aW9uUmFuZ2UoIHRoaXMuY2FyZXRQb3NpdGlvblN0YXJ0LCB0aGlzLmNhcmV0UG9zaXRpb25TdGFydCApO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgZWxlbS5mb2N1cygpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSApO1xyXG4gIH1cclxuXHJcbiAgY2hlY2tPdXRPZlJhbmdlTnVtYmVyKCB0aW1lOiBhbnkgKTogYm9vbGVhbiB7XHJcbiAgICBjb25zdCBob3VyID0gcGFyc2VJbnQoIHRpbWUuc3BsaXQoICc6JyApWyAwIF0sIDEwICk7XHJcbiAgICBsZXQgbWludXRlID0gLTE7XHJcbiAgICBpZiAoIHRpbWUuc3BsaXQoICc6JyApLmxlbmd0aCA+IDEgKSB7XHJcbiAgICAgIG1pbnV0ZSA9IHBhcnNlSW50KCB0aW1lLnNwbGl0KCAnOicgKVsgMSBdLCAxMCApO1xyXG4gICAgfVxyXG4gICAgaWYgKCBob3VyIDwgMjQgJiYgdGltZS5zcGxpdCggJzonIClbIDAgXS5sZW5ndGggPCAzICYmIG1pbnV0ZSA8IDYwICkge1xyXG4gICAgICBpZiAoIHRpbWUuc3BsaXQoICc6JyApLmxlbmd0aCA+IDEgJiYgdGltZS5zcGxpdCggJzonIClbIDEgXS5sZW5ndGggPiAyICkge1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgfVxyXG5cclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgbWFrZUhvdXJGdWxsKCk6IHZvaWQge1xyXG4gICAgY29uc3QgaG91clBhcnQgPSB0aGlzLmRhdGEuc3BsaXQoICc6JyApWyAwIF07XHJcbiAgICBjb25zdCBtaW51dGVQYXJ0ID0gdGhpcy5kYXRhLnNwbGl0KCAnOicgKS5sZW5ndGggPiAxID8gdGhpcy5kYXRhLnNwbGl0KCAnOicgKVsgMSBdIDogJyc7XHJcbiAgICBpZiAoIGhvdXJQYXJ0Lmxlbmd0aCA9PT0gMSApIHtcclxuICAgICAgdGhpcy5kYXRhID0gJzAnICsgaG91clBhcnQgKyAoIG1pbnV0ZVBhcnQgPyAnOicgKyBtaW51dGVQYXJ0IDogbWludXRlUGFydCApO1xyXG4gICAgICB0aGlzLmNhcmV0UG9zaXRpb25TdGFydCsrO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbWFrZU1pbnV0ZUZ1bGwoKTogdm9pZCB7XHJcbiAgICBjb25zdCBob3VyUGFydCA9IHRoaXMuZGF0YS5zcGxpdCggJzonIClbIDAgXTtcclxuICAgIGNvbnN0IG1pbnV0ZVBhcnQgPSB0aGlzLmRhdGEuc3BsaXQoICc6JyApLmxlbmd0aCA+IDEgPyB0aGlzLmRhdGEuc3BsaXQoICc6JyApWyAxIF0gOiAnJztcclxuICAgIGlmICggbWludXRlUGFydC5sZW5ndGggPT09IDAgKSB7XHJcbiAgICAgIHRoaXMuZGF0YSA9IGhvdXJQYXJ0ICsgJzowMCc7XHJcbiAgICAgIHRoaXMuY2FyZXRQb3NpdGlvblN0YXJ0ICs9IDI7XHJcbiAgICB9XHJcbiAgICBpZiAoIG1pbnV0ZVBhcnQubGVuZ3RoID09PSAxICkge1xyXG4gICAgICB0aGlzLmRhdGEgPSBob3VyUGFydCArICc6JyArIG1pbnV0ZVBhcnQgKyAnMCc7XHJcbiAgICAgIHRoaXMuY2FyZXRQb3NpdGlvblN0YXJ0Kys7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBmaXhUaW1lVG9OZWFyZXN0KCk6IHZvaWQge1xyXG4gICAgaWYgKCB0aGlzLmRhdGEubGVuZ3RoID4gMCApIHtcclxuICAgICAgdGhpcy5tYWtlSG91ckZ1bGwoKTtcclxuICAgICAgdGhpcy5tYWtlTWludXRlRnVsbCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy9lc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzLCBuby11bnVzZWQtdmFycywgQHR5cGVzY3JpcHQtZXNsaW50L25vLWVtcHR5LWZ1bmN0aW9uXHJcbiAgcHVibGljIG9uQ2hhbmdlRm4gPSAoIF86IGFueSApOiB2b2lkID0+IHsgfTtcclxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWVtcHR5LWZ1bmN0aW9uXHJcbiAgcHVibGljIG9uVG91Y2hlZEZuID0gKCk6IHZvaWQgPT4geyB9O1xyXG5cclxuICBwdWJsaWMgcmVnaXN0ZXJPbkNoYW5nZSggZm46IGFueSApOiB2b2lkIHtcclxuICAgIHRoaXMub25DaGFuZ2VGbiA9IGZuO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHJlZ2lzdGVyT25Ub3VjaGVkKCBmbjogYW55ICk6IHZvaWQge1xyXG4gICAgdGhpcy5vblRvdWNoZWRGbiA9IGZuO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNldERpc2FibGVkU3RhdGUoIGlzRGlzYWJsZWQ6IGJvb2xlYW4gKTogdm9pZCB7XHJcbiAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyB3cml0ZVZhbHVlKCBvYmo6IGFueSApOiB2b2lkIHtcclxuICAgIGlmICggb2JqICkge1xyXG4gICAgICBvYmogPSBvYmoudG9TdHJpbmcoKTtcclxuICAgICAgbGV0IHRlbXAgPSAnJztcclxuICAgICAgaWYgKCBvYmouc3BsaXQoICc6JyApLmxlbmd0aCA+PSAyICkge1xyXG4gICAgICAgIHRlbXAgPSBvYmouc3BsaXQoICc6JyApWyAwIF0gKyAnOicgKyBvYmouc3BsaXQoICc6JyApWyAxIF07XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5fZGF0YSA9IHRlbXA7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLl9kYXRhID0gJyc7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb25DaGFuZ2UoKTogdm9pZCB7XHJcbiAgICB0aGlzLm9uQ2hhbmdlRm4oIHRoaXMuZGF0YSApO1xyXG4gIH1cclxuXHJcbiAgc2hvdygpOiB2b2lkIHtcclxuICAgIHRoaXMuY2FsY0xpc3RQb3NpdGlvbigpO1xyXG4gICAgdGhpcy5mb2N1c2VkRmxhZyA9IHRydWU7XHJcbiAgfVxyXG5cclxuICBjbG9zZSggdmFsID0gbnVsbCApOiB2b2lkIHtcclxuICAgIGlmICggdmFsICkge1xyXG4gICAgICB0aGlzLmRhdGEgPSB2YWw7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmZpeFRpbWVUb05lYXJlc3QoKTtcclxuICAgIH1cclxuICAgIHRoaXMuZm9jdXNlZEZsYWcgPSBmYWxzZTtcclxuICAgIHRoaXMuY29udHJvbD8ubWFya0FzVG91Y2hlZCgpO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwidGltZUlucHV0V3JhcHBlclwiIFtuZ0NsYXNzXT1cInsgZGlzYWJsZWQ6IGRpc2FibGVkIH1cIj5cclxuICA8YXBwLWVsZW1lbnQtd3JhcHBlclxyXG4gICAgW2RhdGFdPVwiZ2V0RGF0YSgpXCJcclxuICAgIFtzaG93Q2xvc2VJY29uXT1cInNob3dDbG9zZUljb25cIlxyXG4gICAgW2ZvY3VzZWRGbGFnXT1cImZvY3VzZWRGbGFnXCJcclxuICAgIChjbGVhcik9XCJjbGVhcklucHV0KClcIlxyXG4gID5cclxuICAgIDxkaXYgY2xhc3M9XCJ0aW1lSW5wdXRGaWVsZFdyYXBwZXJcIj5cclxuICAgICAgPGlucHV0XHJcbiAgICAgICAgdHlwZT1cInRleHRcIlxyXG4gICAgICAgIGNsYXNzPVwiZm9ybS1maWVsZF9faW5wdXRcIlxyXG4gICAgICAgIFt2YWx1ZV09XCJkYXRhXCJcclxuICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxyXG4gICAgICAgIChmb2N1cyk9XCJzaG93KClcIlxyXG4gICAgICAgIChjbGljayk9XCJzaG93KClcIlxyXG4gICAgICAgIChrZXlkb3duKT1cImlucHV0S2V5RG93bigkZXZlbnQpXCJcclxuICAgICAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIlxyXG4gICAgICAvPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1maWVsZF9faW5wdXQtLXN1ZmZpeFwiICpuZ0lmPVwidHlwZSAhPT0gJ251bWJlcidcIj5cclxuICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJtYXQtaWNvblwiPjwvbmctY29udGVudD5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxlY2Ficy10aW1lLWxpc3QtcGFuZWxcclxuICAgICAgICBbdHlwZWRWYWx1ZV09XCJkYXRhXCJcclxuICAgICAgICAqbmdJZj1cImZvY3VzZWRGbGFnXCJcclxuICAgICAgICBbc2hvd0RheVN0YXJ0XT1cInNob3dEYXlTdGFydFwiXHJcbiAgICAgICAgW3Nob3dEYXlFbmRdPVwic2hvd0RheUVuZFwiXHJcbiAgICAgICAgW21pbl09XCJtaW5cIlxyXG4gICAgICAgIFttYXhdPVwibWF4XCJcclxuICAgICAgICBjbGFzcz1cImZvcm0tdGltZS1saXN0XCJcclxuICAgICAgICBbYXBwZW5kVG9dPVwiYXBwZW5kVG9cIlxyXG4gICAgICAgIFtsaXN0UG9zaXRpb25dPVwibGlzdFBvc2l0aW9uXCJcclxuICAgICAgICAoY2xvc2VNZSk9XCJjbG9zZSgkZXZlbnQpXCJcclxuICAgICAgPjwvZWNhYnMtdGltZS1saXN0LXBhbmVsPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9hcHAtZWxlbWVudC13cmFwcGVyPlxyXG48L2Rpdj5cclxuIl19
1
+ import { Component, Input, HostBinding, HostListener } from '@angular/core';
2
+ import { NG_VALUE_ACCESSOR, NgControl } from '@angular/forms';
3
+ import ElementBaseComponent from '../base/element-base';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "./ecabs-timepicker.service";
6
+ import * as i2 from "@angular/common";
7
+ import * as i3 from "../base/element-wrapper/element-wrapper.component";
8
+ import * as i4 from "./componets/ecabs-time-list-panel/ecabs-time-list-panel.component";
9
+ export class EcabsTimepickerComponent extends ElementBaseComponent {
10
+ get data() {
11
+ return this._data;
12
+ }
13
+ set data(value) {
14
+ this._data = value;
15
+ if (this._data.length === 5) {
16
+ if (this._data === '23:59') {
17
+ this.onChangeFn(this._data + (this.addSecond ? ':59' : ''));
18
+ }
19
+ else {
20
+ this.onChangeFn(this._data + (this.addSecond ? ':00' : ''));
21
+ }
22
+ }
23
+ else if (this._data === '') {
24
+ this.onChangeFn(this._data);
25
+ }
26
+ }
27
+ constructor(elementRef, timepickerService, injector) {
28
+ super();
29
+ this.elementRef = elementRef;
30
+ this.timepickerService = timepickerService;
31
+ this.injector = injector;
32
+ this.showCloseIcon = true;
33
+ this.focusedFlag = false;
34
+ this.listPlacement = 'auto';
35
+ this.showDayStart = true;
36
+ this.showDayEnd = false;
37
+ this.addSecond = true;
38
+ this.position = {};
39
+ this._data = '';
40
+ this.listPosition = {};
41
+ //eslint-disable-next-line @typescript-eslint/no-unused-vars, no-unused-vars, @typescript-eslint/no-empty-function
42
+ this.onChangeFn = (_) => { };
43
+ // eslint-disable-next-line @typescript-eslint/no-empty-function
44
+ this.onTouchedFn = () => { };
45
+ this.placeholder = '00:00';
46
+ this._timePicker = this.elementRef.nativeElement;
47
+ setTimeout(() => {
48
+ this._input = this._timePicker.querySelector('input');
49
+ });
50
+ if (!this.iconClass) {
51
+ this.iconClass = this.timepickerService.getConfig().iconClass;
52
+ }
53
+ }
54
+ handleMousedown($event) {
55
+ const target = $event.target;
56
+ if (target.closest('.form-time-list') ||
57
+ target.closest('.timeInputWrapper') === this._timePicker.querySelector('.timeInputWrapper')) {
58
+ this._timePicker.querySelector('.timeInputWrapper').focus();
59
+ return;
60
+ }
61
+ if (this.focusedFlag) {
62
+ this.close();
63
+ }
64
+ }
65
+ ngAfterViewInit() {
66
+ const ngControl = this.injector.get(NgControl, null);
67
+ if (ngControl) {
68
+ this.control = ngControl.control;
69
+ }
70
+ }
71
+ clearInput() {
72
+ this.data = '';
73
+ }
74
+ calcListPosition() {
75
+ const position = this._timePicker.querySelector('.timeInputFieldWrapper').getBoundingClientRect();
76
+ if (this.appendTo) {
77
+ this.listPosition = {
78
+ left: position.x,
79
+ top: position.top + position.height,
80
+ width: position.width,
81
+ };
82
+ }
83
+ else {
84
+ this.listPosition = {
85
+ left: 0,
86
+ top: position.height,
87
+ width: position.width,
88
+ };
89
+ }
90
+ }
91
+ inputKeyDown(event) {
92
+ this.caretPositionStart = event.target.selectionStart;
93
+ this.caretPositionEnd = event.target.selectionEnd;
94
+ const key = event.key;
95
+ this.setCaretPosition(this._input);
96
+ switch (this.checkSpecialKeys(key, this.caretPositionStart, this.caretPositionEnd)) {
97
+ case 'stop':
98
+ return false;
99
+ case 'tab':
100
+ this.close();
101
+ return false;
102
+ case 'arrow':
103
+ return false;
104
+ }
105
+ if (this.checkUnUsedKeys(key)) {
106
+ return false;
107
+ }
108
+ const newData = this.data.slice(0, this.caretPositionStart) + key + this.data.slice(this.caretPositionStart, this.data.length);
109
+ if (this.checkOutOfRangeNumber(newData)) {
110
+ this.data = newData;
111
+ this.caretPositionStart++;
112
+ }
113
+ if (this.caretPositionStart === this.data.length &&
114
+ (this.data.length === 2 || (this.data.length === 1 && parseInt(this.data) > 2))) {
115
+ this.makeHourFull();
116
+ this.data += ':';
117
+ this.caretPositionStart++;
118
+ }
119
+ return false;
120
+ }
121
+ checkSpecialKeys(key, selectionStart, selectionEnd) {
122
+ if (selectionStart !== selectionEnd && key !== 'ArrowLeft' && key !== 'ArrowRight') {
123
+ if (!(this.data.slice(selectionStart, selectionEnd).includes(':') && selectionEnd !== this.data.length)) {
124
+ this.data = this.data.slice(0, selectionStart) + this.data.slice(selectionEnd, this.data.length);
125
+ }
126
+ }
127
+ if (selectionStart === selectionEnd && key === 'Backspace') {
128
+ if (this.data.length > 0) {
129
+ if (this.data[selectionStart - 1] !== ':' ||
130
+ (this.data[selectionStart - 1] === ':' && selectionStart === this.data.length)) {
131
+ this.data = this.data.slice(0, selectionStart - 1) + this.data.slice(selectionEnd, this.data.length);
132
+ this.caretPositionStart--;
133
+ }
134
+ }
135
+ return 'stop';
136
+ }
137
+ if (key === 'Tab' || key === ' ' || key === ':') {
138
+ if (!this.data.includes(':') && this.data.length > 0) {
139
+ this.makeHourFull();
140
+ this.data += ':';
141
+ this.caretPositionStart++;
142
+ return 'stop';
143
+ }
144
+ if (key === 'Tab') {
145
+ return 'tab';
146
+ }
147
+ return 'stop';
148
+ }
149
+ if (key === 'ArrowRight') {
150
+ if (this.caretPositionStart < this.data.length) {
151
+ this.caretPositionStart++;
152
+ }
153
+ return 'arrow';
154
+ }
155
+ if (key === 'ArrowLeft') {
156
+ if (this.caretPositionStart > 0) {
157
+ this.caretPositionStart--;
158
+ }
159
+ return 'arrow';
160
+ }
161
+ if (key === 'ArrowDown' && !this.focusedFlag) {
162
+ this.show();
163
+ }
164
+ return 'continue';
165
+ }
166
+ checkUnUsedKeys(key) {
167
+ const r = new RegExp('[0-9]');
168
+ return !r.test(key);
169
+ }
170
+ setCaretPosition(elem) {
171
+ setTimeout(() => {
172
+ if (elem !== null) {
173
+ if (elem.createTextRange) {
174
+ const range = elem.createTextRange();
175
+ range.move('character', this.caretPositionStart);
176
+ range.select();
177
+ }
178
+ else {
179
+ if (elem.selectionStart) {
180
+ elem.focus();
181
+ elem.setSelectionRange(this.caretPositionStart, this.caretPositionStart);
182
+ }
183
+ else {
184
+ elem.focus();
185
+ }
186
+ }
187
+ }
188
+ });
189
+ }
190
+ checkOutOfRangeNumber(time) {
191
+ const hour = parseInt(time.split(':')[0], 10);
192
+ let minute = -1;
193
+ if (time.split(':').length > 1) {
194
+ minute = parseInt(time.split(':')[1], 10);
195
+ }
196
+ if (hour < 24 && time.split(':')[0].length < 3 && minute < 60) {
197
+ if (time.split(':').length > 1 && time.split(':')[1].length > 2) {
198
+ return false;
199
+ }
200
+ return true;
201
+ }
202
+ return false;
203
+ }
204
+ makeHourFull() {
205
+ const hourPart = this.data.split(':')[0];
206
+ const minutePart = this.data.split(':').length > 1 ? this.data.split(':')[1] : '';
207
+ if (hourPart.length === 1) {
208
+ this.data = '0' + hourPart + (minutePart ? ':' + minutePart : minutePart);
209
+ this.caretPositionStart++;
210
+ }
211
+ }
212
+ makeMinuteFull() {
213
+ const hourPart = this.data.split(':')[0];
214
+ const minutePart = this.data.split(':').length > 1 ? this.data.split(':')[1] : '';
215
+ if (minutePart.length === 0) {
216
+ this.data = hourPart + ':00';
217
+ this.caretPositionStart += 2;
218
+ }
219
+ if (minutePart.length === 1) {
220
+ this.data = hourPart + ':' + minutePart + '0';
221
+ this.caretPositionStart++;
222
+ }
223
+ }
224
+ fixTimeToNearest() {
225
+ if (this.data.length > 0) {
226
+ this.makeHourFull();
227
+ this.makeMinuteFull();
228
+ }
229
+ }
230
+ registerOnChange(fn) {
231
+ this.onChangeFn = fn;
232
+ }
233
+ registerOnTouched(fn) {
234
+ this.onTouchedFn = fn;
235
+ }
236
+ setDisabledState(isDisabled) {
237
+ this.disabled = isDisabled;
238
+ }
239
+ writeValue(obj) {
240
+ if (obj) {
241
+ obj = obj.toString();
242
+ let temp = '';
243
+ if (obj.split(':').length >= 2) {
244
+ temp = obj.split(':')[0] + ':' + obj.split(':')[1];
245
+ }
246
+ this._data = temp;
247
+ }
248
+ else {
249
+ this._data = '';
250
+ }
251
+ }
252
+ onChange() {
253
+ this.onChangeFn(this.data);
254
+ }
255
+ show() {
256
+ this.calcListPosition();
257
+ this.focusedFlag = true;
258
+ }
259
+ close(val = null) {
260
+ if (val) {
261
+ this.data = val;
262
+ }
263
+ else {
264
+ this.fixTimeToNearest();
265
+ }
266
+ this.focusedFlag = false;
267
+ this.control?.markAsTouched();
268
+ }
269
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: EcabsTimepickerComponent, deps: [{ token: i0.ElementRef }, { token: i1.FormTimePickerService }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component }); }
270
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: EcabsTimepickerComponent, selector: "ecabs-timepicker", inputs: { showCloseIcon: "showCloseIcon", focusedFlag: "focusedFlag", listPlacement: "listPlacement", appendTo: "appendTo", min: "min", max: "max", showDayStart: "showDayStart", showDayEnd: "showDayEnd", addSecond: "addSecond" }, host: { listeners: { "document:mousedown": "handleMousedown($event)" }, properties: { "class.form-timepicker-focused": "this.focusedFlag" } }, providers: [
271
+ {
272
+ provide: NG_VALUE_ACCESSOR,
273
+ useExisting: EcabsTimepickerComponent,
274
+ multi: true,
275
+ },
276
+ ], usesInheritance: true, ngImport: i0, template: "<div class=\"timeInputWrapper\" [ngClass]=\"{ disabled: disabled }\">\r\n <app-element-wrapper\r\n [data]=\"getData()\"\r\n [showCloseIcon]=\"showCloseIcon\"\r\n [focusedFlag]=\"focusedFlag\"\r\n (clear)=\"clearInput()\"\r\n >\r\n <div class=\"timeInputFieldWrapper\">\r\n <input\r\n type=\"text\"\r\n class=\"form-field__input\"\r\n [value]=\"data\"\r\n [disabled]=\"disabled\"\r\n (focus)=\"show()\"\r\n (click)=\"show()\"\r\n (keydown)=\"inputKeyDown($event)\"\r\n [placeholder]=\"placeholder\"\r\n />\r\n <div class=\"form-field__input--suffix\" *ngIf=\"type !== 'number'\">\r\n <ng-content select=\"mat-icon\"></ng-content>\r\n </div>\r\n <ecabs-time-list-panel\r\n [typedValue]=\"data\"\r\n *ngIf=\"focusedFlag\"\r\n [showDayStart]=\"showDayStart\"\r\n [showDayEnd]=\"showDayEnd\"\r\n [min]=\"min\"\r\n [max]=\"max\"\r\n class=\"form-time-list\"\r\n [appendTo]=\"appendTo\"\r\n [listPosition]=\"listPosition\"\r\n (closeMe)=\"close($event)\"\r\n ></ecabs-time-list-panel>\r\n </div>\r\n </app-element-wrapper>\r\n</div>\r\n", styles: [":host::ng-deep .timeInputWrapper app-element-wrapper .form-field{margin-bottom:0}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.ElementWrapperComponent, selector: "app-element-wrapper", inputs: ["data", "showCloseIcon", "focusedFlag", "showPassword", "control"], outputs: ["showHidePassword", "clear", "increase", "decrease"] }, { kind: "component", type: i4.EcabsTimeListPanelComponent, selector: "ecabs-time-list-panel", inputs: ["typedValue", "listPlacement", "listPosition", "appendTo", "min", "max", "showDayStart", "showDayEnd", "position"], outputs: ["onscroll", "closeMe"] }] }); }
277
+ }
278
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: EcabsTimepickerComponent, decorators: [{
279
+ type: Component,
280
+ args: [{ selector: 'ecabs-timepicker', providers: [
281
+ {
282
+ provide: NG_VALUE_ACCESSOR,
283
+ useExisting: EcabsTimepickerComponent,
284
+ multi: true,
285
+ },
286
+ ], template: "<div class=\"timeInputWrapper\" [ngClass]=\"{ disabled: disabled }\">\r\n <app-element-wrapper\r\n [data]=\"getData()\"\r\n [showCloseIcon]=\"showCloseIcon\"\r\n [focusedFlag]=\"focusedFlag\"\r\n (clear)=\"clearInput()\"\r\n >\r\n <div class=\"timeInputFieldWrapper\">\r\n <input\r\n type=\"text\"\r\n class=\"form-field__input\"\r\n [value]=\"data\"\r\n [disabled]=\"disabled\"\r\n (focus)=\"show()\"\r\n (click)=\"show()\"\r\n (keydown)=\"inputKeyDown($event)\"\r\n [placeholder]=\"placeholder\"\r\n />\r\n <div class=\"form-field__input--suffix\" *ngIf=\"type !== 'number'\">\r\n <ng-content select=\"mat-icon\"></ng-content>\r\n </div>\r\n <ecabs-time-list-panel\r\n [typedValue]=\"data\"\r\n *ngIf=\"focusedFlag\"\r\n [showDayStart]=\"showDayStart\"\r\n [showDayEnd]=\"showDayEnd\"\r\n [min]=\"min\"\r\n [max]=\"max\"\r\n class=\"form-time-list\"\r\n [appendTo]=\"appendTo\"\r\n [listPosition]=\"listPosition\"\r\n (closeMe)=\"close($event)\"\r\n ></ecabs-time-list-panel>\r\n </div>\r\n </app-element-wrapper>\r\n</div>\r\n", styles: [":host::ng-deep .timeInputWrapper app-element-wrapper .form-field{margin-bottom:0}\n"] }]
287
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.FormTimePickerService }, { type: i0.Injector }]; }, propDecorators: { showCloseIcon: [{
288
+ type: Input
289
+ }], focusedFlag: [{
290
+ type: Input
291
+ }, {
292
+ type: HostBinding,
293
+ args: ['class.form-timepicker-focused']
294
+ }], listPlacement: [{
295
+ type: Input
296
+ }], appendTo: [{
297
+ type: Input
298
+ }], min: [{
299
+ type: Input
300
+ }], max: [{
301
+ type: Input
302
+ }], showDayStart: [{
303
+ type: Input
304
+ }], showDayEnd: [{
305
+ type: Input
306
+ }], addSecond: [{
307
+ type: Input
308
+ }], handleMousedown: [{
309
+ type: HostListener,
310
+ args: ['document:mousedown', ['$event']]
311
+ }] } });
312
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWNhYnMtdGltZXBpY2tlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lY2Ficy1jb21wb25lbnRzL3NyYy9saWIvZWNhYnMtdGltZXBpY2tlci9lY2Ficy10aW1lcGlja2VyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VjYWJzLWNvbXBvbmVudHMvc3JjL2xpYi9lY2Ficy10aW1lcGlja2VyL2VjYWJzLXRpbWVwaWNrZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBdUMsTUFBTSxlQUFlLENBQUM7QUFDakgsT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxTQUFTLEVBQXNCLE1BQU0sZ0JBQWdCLENBQUM7QUFFeEcsT0FBTyxvQkFBb0IsTUFBTSxzQkFBc0IsQ0FBQzs7Ozs7O0FBZXhELE1BQU0sT0FBTyx3QkFBeUIsU0FBUSxvQkFBb0I7SUFtQmhFLElBQUksSUFBSTtRQUNOLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztJQUNwQixDQUFDO0lBRUQsSUFBSSxJQUFJLENBQUUsS0FBVTtRQUNsQixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNuQixJQUFLLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRztZQUM3QixJQUFLLElBQUksQ0FBQyxLQUFLLEtBQUssT0FBTyxFQUFHO2dCQUM1QixJQUFJLENBQUMsVUFBVSxDQUFFLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBRSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBRSxDQUFFLENBQUM7YUFDakU7aUJBQU07Z0JBQ0wsSUFBSSxDQUFDLFVBQVUsQ0FBRSxJQUFJLENBQUMsS0FBSyxHQUFHLENBQUUs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ZW50LCBJbnB1dCwgSG9zdEJpbmRpbmcsIEhvc3RMaXN0ZW5lciwgRWxlbWVudFJlZiwgSW5qZWN0b3IsIEFmdGVyVmlld0luaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SLCBOZ0NvbnRyb2wsIFVudHlwZWRGb3JtQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgRm9ybVRpbWVQaWNrZXJTZXJ2aWNlIH0gZnJvbSAnLi9lY2Ficy10aW1lcGlja2VyLnNlcnZpY2UnO1xyXG5pbXBvcnQgRWxlbWVudEJhc2VDb21wb25lbnQgZnJvbSAnLi4vYmFzZS9lbGVtZW50LWJhc2UnO1xyXG5pbXBvcnQgeyBMaXN0UGxhY2VtZW50LCBMaXN0UG9zaXRpb24gfSBmcm9tICcuLi9tb2RlbHMvdGltZXBpY2tlci5tb2RlbHMnO1xyXG5cclxuQENvbXBvbmVudCgge1xyXG4gIHNlbGVjdG9yOiAnZWNhYnMtdGltZXBpY2tlcicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2VjYWJzLXRpbWVwaWNrZXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWyAnZWNhYnMtdGltZXBpY2tlci5jb21wb25lbnQuc2NzcycgXSxcclxuICBwcm92aWRlcnM6IFtcclxuICAgIHtcclxuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXHJcbiAgICAgIHVzZUV4aXN0aW5nOiBFY2Fic1RpbWVwaWNrZXJDb21wb25lbnQsXHJcbiAgICAgIG11bHRpOiB0cnVlLFxyXG4gICAgfSxcclxuICBdLFxyXG59IClcclxuZXhwb3J0IGNsYXNzIEVjYWJzVGltZXBpY2tlckNvbXBvbmVudCBleHRlbmRzIEVsZW1lbnRCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3IsIEFmdGVyVmlld0luaXQge1xyXG4gIEBJbnB1dCgpIHNob3dDbG9zZUljb24gPSB0cnVlO1xyXG4gIEBJbnB1dCgpIEBIb3N0QmluZGluZyggJ2NsYXNzLmZvcm0tdGltZXBpY2tlci1mb2N1c2VkJyApIGZvY3VzZWRGbGFnID0gZmFsc2U7XHJcbiAgQElucHV0KCkgbGlzdFBsYWNlbWVudDogTGlzdFBsYWNlbWVudCA9ICdhdXRvJztcclxuICBASW5wdXQoKSBhcHBlbmRUbyE6IHN0cmluZztcclxuICBASW5wdXQoKSBtaW4hOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgbWF4ITogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHNob3dEYXlTdGFydCA9IHRydWU7XHJcbiAgQElucHV0KCkgc2hvd0RheUVuZCA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGFkZFNlY29uZCA9IHRydWU7XHJcblxyXG4gIHBvc2l0aW9uOiBMaXN0UG9zaXRpb24gPSB7fTtcclxuICBfZGF0YSA9ICcnO1xyXG4gIF90aW1lUGlja2VyO1xyXG4gIF9pbnB1dCE6IGFueTtcclxuICBsaXN0UG9zaXRpb246IExpc3RQb3NpdGlvbiA9IHt9O1xyXG4gIGNhcmV0UG9zaXRpb25TdGFydCE6IGFueTtcclxuICBjYXJldFBvc2l0aW9uRW5kITogYW55O1xyXG5cclxuICBnZXQgZGF0YSgpOiBhbnkge1xyXG4gICAgcmV0dXJuIHRoaXMuX2RhdGE7XHJcbiAgfVxyXG5cclxuICBzZXQgZGF0YSggdmFsdWU6IGFueSApIHtcclxuICAgIHRoaXMuX2RhdGEgPSB2YWx1ZTtcclxuICAgIGlmICggdGhpcy5fZGF0YS5sZW5ndGggPT09IDUgKSB7XHJcbiAgICAgIGlmICggdGhpcy5fZGF0YSA9PT0gJzIzOjU5JyApIHtcclxuICAgICAgICB0aGlzLm9uQ2hhbmdlRm4oIHRoaXMuX2RhdGEgKyAoIHRoaXMuYWRkU2Vjb25kID8gJzo1OScgOiAnJyApICk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5vbkNoYW5nZUZuKCB0aGlzLl9kYXRhICsgKCB0aGlzLmFkZFNlY29uZCA/ICc6MDAnIDogJycgKSApO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2UgaWYgKCB0aGlzLl9kYXRhID09PSAnJyApIHtcclxuICAgICAgdGhpcy5vbkNoYW5nZUZuKCB0aGlzLl9kYXRhICk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZixcclxuICAgIHByaXZhdGUgdGltZXBpY2tlclNlcnZpY2U6IEZvcm1UaW1lUGlja2VyU2VydmljZSxcclxuICAgIHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yXHJcbiAgKSB7XHJcbiAgICBzdXBlcigpO1xyXG4gICAgdGhpcy5wbGFjZWhvbGRlciA9ICcwMDowMCc7XHJcbiAgICB0aGlzLl90aW1lUGlja2VyID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XHJcbiAgICBzZXRUaW1lb3V0KCAoKSA9PiB7XHJcbiAgICAgIHRoaXMuX2lucHV0ID0gdGhpcy5fdGltZVBpY2tlci5xdWVyeVNlbGVjdG9yKCAnaW5wdXQnICk7XHJcbiAgICB9ICk7XHJcbiAgICBpZiAoICF0aGlzLmljb25DbGFzcyApIHtcclxuICAgICAgdGhpcy5pY29uQ2xhc3MgPSB0aGlzLnRpbWVwaWNrZXJTZXJ2aWNlLmdldENvbmZpZygpLmljb25DbGFzcztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIEBIb3N0TGlzdGVuZXIoICdkb2N1bWVudDptb3VzZWRvd24nLCBbICckZXZlbnQnIF0gKVxyXG4gIGhhbmRsZU1vdXNlZG93biggJGV2ZW50OiBNb3VzZUV2ZW50ICk6IHZvaWQge1xyXG4gICAgY29uc3QgdGFyZ2V0ID0gJGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudDtcclxuICAgIGlmIChcclxuICAgICAgdGFyZ2V0LmNsb3Nlc3QoICcuZm9ybS10aW1lLWxpc3QnICkgfHxcclxuICAgICAgdGFyZ2V0LmNsb3Nlc3QoICcudGltZUlucHV0V3JhcHBlcicgKSA9PT0gdGhpcy5fdGltZVBpY2tlci5xdWVyeVNlbGVjdG9yKCAnLnRpbWVJbnB1dFdyYXBwZXInIClcclxuICAgICkge1xyXG4gICAgICB0aGlzLl90aW1lUGlja2VyLnF1ZXJ5U2VsZWN0b3IoICcudGltZUlucHV0V3JhcHBlcicgKS5mb2N1cygpO1xyXG5cclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgaWYgKCB0aGlzLmZvY3VzZWRGbGFnICkge1xyXG4gICAgICB0aGlzLmNsb3NlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICBjb25zdCBuZ0NvbnRyb2w6IE5nQ29udHJvbCA9IHRoaXMuaW5qZWN0b3IuZ2V0KCBOZ0NvbnRyb2wsIG51bGwgKSBhcyBOZ0NvbnRyb2w7XHJcbiAgICBpZiAoIG5nQ29udHJvbCApIHtcclxuICAgICAgdGhpcy5jb250cm9sID0gbmdDb250cm9sLmNvbnRyb2wgYXMgVW50eXBlZEZvcm1Db250cm9sO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2xlYXJJbnB1dCgpOiB2b2lkIHtcclxuICAgIHRoaXMuZGF0YSA9ICcnO1xyXG4gIH1cclxuXHJcbiAgY2FsY0xpc3RQb3NpdGlvbigpOiB2b2lkIHtcclxuICAgIGNvbnN0IHBvc2l0aW9uID0gdGhpcy5fdGltZVBpY2tlci5xdWVyeVNlbGVjdG9yKCAnLnRpbWVJbnB1dEZpZWxkV3JhcHBlcicgKS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcclxuICAgIGlmICggdGhpcy5hcHBlbmRUbyApIHtcclxuICAgICAgdGhpcy5saXN0UG9zaXRpb24gPSB7XHJcbiAgICAgICAgbGVmdDogcG9zaXRpb24ueCxcclxuICAgICAgICB0b3A6IHBvc2l0aW9uLnRvcCArIHBvc2l0aW9uLmhlaWdodCxcclxuICAgICAgICB3aWR0aDogcG9zaXRpb24ud2lkdGgsXHJcbiAgICAgIH07XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmxpc3RQb3NpdGlvbiA9IHtcclxuICAgICAgICBsZWZ0OiAwLFxyXG4gICAgICAgIHRvcDogcG9zaXRpb24uaGVpZ2h0LFxyXG4gICAgICAgIHdpZHRoOiBwb3NpdGlvbi53aWR0aCxcclxuICAgICAgfTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGlucHV0S2V5RG93biggZXZlbnQ6IGFueSApOiBib29sZWFuIHtcclxuICAgIHRoaXMuY2FyZXRQb3NpdGlvblN0YXJ0ID0gZXZlbnQudGFyZ2V0LnNlbGVjdGlvblN0YXJ0O1xyXG4gICAgdGhpcy5jYXJldFBvc2l0aW9uRW5kID0gZXZlbnQudGFyZ2V0LnNlbGVjdGlvbkVuZDtcclxuICAgIGNvbnN0IGtleSA9IGV2ZW50LmtleTtcclxuICAgIHRoaXMuc2V0Q2FyZXRQb3NpdGlvbiggdGhpcy5faW5wdXQgKTtcclxuICAgIHN3aXRjaCAoIHRoaXMuY2hlY2tTcGVjaWFsS2V5cygga2V5LCB0aGlzLmNhcmV0UG9zaXRpb25TdGFydCwgdGhpcy5jYXJldFBvc2l0aW9uRW5kICkgKSB7XHJcbiAgICAgIGNhc2UgJ3N0b3AnOlxyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuXHJcbiAgICAgIGNhc2UgJ3RhYic6XHJcbiAgICAgICAgdGhpcy5jbG9zZSgpO1xyXG5cclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcblxyXG4gICAgICBjYXNlICdhcnJvdyc6XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICggdGhpcy5jaGVja1VuVXNlZEtleXMoIGtleSApICkge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgbmV3RGF0YSA9XHJcbiAgICAgIHRoaXMuZGF0YS5zbGljZSggMCwgdGhpcy5jYXJldFBvc2l0aW9uU3RhcnQgKSArIGtleSArIHRoaXMuZGF0YS5zbGljZSggdGhpcy5jYXJldFBvc2l0aW9uU3RhcnQsIHRoaXMuZGF0YS5sZW5ndGggKTtcclxuXHJcbiAgICBpZiAoIHRoaXMuY2hlY2tPdXRPZlJhbmdlTnVtYmVyKCBuZXdEYXRhICkgKSB7XHJcbiAgICAgIHRoaXMuZGF0YSA9IG5ld0RhdGE7XHJcbiAgICAgIHRoaXMuY2FyZXRQb3NpdGlvblN0YXJ0Kys7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKFxyXG4gICAgICB0aGlzLmNhcmV0UG9zaXRpb25TdGFydCA9PT0gdGhpcy5kYXRhLmxlbmd0aCAmJlxyXG4gICAgICAoIHRoaXMuZGF0YS5sZW5ndGggPT09IDIgfHwgKCB0aGlzLmRhdGEubGVuZ3RoID09PSAxICYmIHBhcnNlSW50KCB0aGlzLmRhdGEgKSA+IDIgKSApXHJcbiAgICApIHtcclxuICAgICAgdGhpcy5tYWtlSG91ckZ1bGwoKTtcclxuICAgICAgdGhpcy5kYXRhICs9ICc6JztcclxuICAgICAgdGhpcy5jYXJldFBvc2l0aW9uU3RhcnQrKztcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBjaGVja1NwZWNpYWxLZXlzKCBrZXk6IGFueSwgc2VsZWN0aW9uU3RhcnQ6IGFueSwgc2VsZWN0aW9uRW5kOiBhbnkgKTogJ3N0b3AnIHwgJ2NvbnRpbnVlJyB8ICd0YWInIHwgJ2Fycm93JyB7XHJcbiAgICBpZiAoIHNlbGVjdGlvblN0YXJ0ICE9PSBzZWxlY3Rpb25FbmQgJiYga2V5ICE9PSAnQXJyb3dMZWZ0JyAmJiBrZXkgIT09ICdBcnJvd1JpZ2h0JyApIHtcclxuICAgICAgaWYgKCAhKCB0aGlzLmRhdGEuc2xpY2UoIHNlbGVjdGlvblN0YXJ0LCBzZWxlY3Rpb25FbmQgKS5pbmNsdWRlcyggJzonICkgJiYgc2VsZWN0aW9uRW5kICE9PSB0aGlzLmRhdGEubGVuZ3RoICkgKSB7XHJcbiAgICAgICAgdGhpcy5kYXRhID0gdGhpcy5kYXRhLnNsaWNlKCAwLCBzZWxlY3Rpb25TdGFydCApICsgdGhpcy5kYXRhLnNsaWNlKCBzZWxlY3Rpb25FbmQsIHRoaXMuZGF0YS5sZW5ndGggKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKCBzZWxlY3Rpb25TdGFydCA9PT0gc2VsZWN0aW9uRW5kICYmIGtleSA9PT0gJ0JhY2tzcGFjZScgKSB7XHJcbiAgICAgIGlmICggdGhpcy5kYXRhLmxlbmd0aCA+IDAgKSB7XHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgdGhpcy5kYXRhWyBzZWxlY3Rpb25TdGFydCAtIDEgXSAhPT0gJzonIHx8XHJcbiAgICAgICAgICAoIHRoaXMuZGF0YVsgc2VsZWN0aW9uU3RhcnQgLSAxIF0gPT09ICc6JyAmJiBzZWxlY3Rpb25TdGFydCA9PT0gdGhpcy5kYXRhLmxlbmd0aCApXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICB0aGlzLmRhdGEgPSB0aGlzLmRhdGEuc2xpY2UoIDAsIHNlbGVjdGlvblN0YXJ0IC0gMSApICsgdGhpcy5kYXRhLnNsaWNlKCBzZWxlY3Rpb25FbmQsIHRoaXMuZGF0YS5sZW5ndGggKTtcclxuICAgICAgICAgIHRoaXMuY2FyZXRQb3NpdGlvblN0YXJ0LS07XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICByZXR1cm4gJ3N0b3AnO1xyXG4gICAgfVxyXG4gICAgaWYgKCBrZXkgPT09ICdUYWInIHx8IGtleSA9PT0gJyAnIHx8IGtleSA9PT0gJzonICkge1xyXG4gICAgICBpZiAoICF0aGlzLmRhdGEuaW5jbHVkZXMoICc6JyApICYmIHRoaXMuZGF0YS5sZW5ndGggPiAwICkge1xyXG4gICAgICAgIHRoaXMubWFrZUhvdXJGdWxsKCk7XHJcbiAgICAgICAgdGhpcy5kYXRhICs9ICc6JztcclxuICAgICAgICB0aGlzLmNhcmV0UG9zaXRpb25TdGFydCsrO1xyXG5cclxuICAgICAgICByZXR1cm4gJ3N0b3AnO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICgga2V5ID09PSAnVGFiJyApIHtcclxuICAgICAgICByZXR1cm4gJ3RhYic7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHJldHVybiAnc3RvcCc7XHJcbiAgICB9XHJcbiAgICBpZiAoIGtleSA9PT0gJ0Fycm93UmlnaHQnICkge1xyXG4gICAgICBpZiAoIHRoaXMuY2FyZXRQb3NpdGlvblN0YXJ0IDwgdGhpcy5kYXRhLmxlbmd0aCApIHtcclxuICAgICAgICB0aGlzLmNhcmV0UG9zaXRpb25TdGFydCsrO1xyXG4gICAgICB9XHJcblxyXG4gICAgICByZXR1cm4gJ2Fycm93JztcclxuICAgIH1cclxuICAgIGlmICgga2V5ID09PSAnQXJyb3dMZWZ0JyApIHtcclxuICAgICAgaWYgKCB0aGlzLmNhcmV0UG9zaXRpb25TdGFydCA+IDAgKSB7XHJcbiAgICAgICAgdGhpcy5jYXJldFBvc2l0aW9uU3RhcnQtLTtcclxuICAgICAgfVxyXG5cclxuICAgICAgcmV0dXJuICdhcnJvdyc7XHJcbiAgICB9XHJcbiAgICBpZiAoIGtleSA9PT0gJ0Fycm93RG93bicgJiYgIXRoaXMuZm9jdXNlZEZsYWcgKSB7XHJcbiAgICAgIHRoaXMuc2hvdygpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiAnY29udGludWUnO1xyXG4gIH1cclxuXHJcbiAgY2hlY2tVblVzZWRLZXlzKCBrZXk6IHN0cmluZyApOiBib29sZWFuIHtcclxuICAgIGNvbnN0IHIgPSBuZXcgUmVnRXhwKCAnWzAtOV0nICk7XHJcblxyXG4gICAgcmV0dXJuICFyLnRlc3QoIGtleSApO1xyXG4gIH1cclxuXHJcbiAgc2V0Q2FyZXRQb3NpdGlvbiggZWxlbTogYW55ICk6IHZvaWQge1xyXG4gICAgc2V0VGltZW91dCggKCkgPT4ge1xyXG4gICAgICBpZiAoIGVsZW0gIT09IG51bGwgKSB7XHJcbiAgICAgICAgaWYgKCBlbGVtLmNyZWF0ZVRleHRSYW5nZSApIHtcclxuICAgICAgICAgIGNvbnN0IHJhbmdlID0gZWxlbS5jcmVhdGVUZXh0UmFuZ2UoKTtcclxuICAgICAgICAgIHJhbmdlLm1vdmUoICdjaGFyYWN0ZXInLCB0aGlzLmNhcmV0UG9zaXRpb25TdGFydCApO1xyXG4gICAgICAgICAgcmFuZ2Uuc2VsZWN0KCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGlmICggZWxlbS5zZWxlY3Rpb25TdGFydCApIHtcclxuICAgICAgICAgICAgZWxlbS5mb2N1cygpO1xyXG4gICAgICAgICAgICBlbGVtLnNldFNlbGVjdGlvblJhbmdlKCB0aGlzLmNhcmV0UG9zaXRpb25TdGFydCwgdGhpcy5jYXJldFBvc2l0aW9uU3RhcnQgKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGVsZW0uZm9jdXMoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0gKTtcclxuICB9XHJcblxyXG4gIGNoZWNrT3V0T2ZSYW5nZU51bWJlciggdGltZTogYW55ICk6IGJvb2xlYW4ge1xyXG4gICAgY29uc3QgaG91ciA9IHBhcnNlSW50KCB0aW1lLnNwbGl0KCAnOicgKVsgMCBdLCAxMCApO1xyXG4gICAgbGV0IG1pbnV0ZSA9IC0xO1xyXG4gICAgaWYgKCB0aW1lLnNwbGl0KCAnOicgKS5sZW5ndGggPiAxICkge1xyXG4gICAgICBtaW51dGUgPSBwYXJzZUludCggdGltZS5zcGxpdCggJzonIClbIDEgXSwgMTAgKTtcclxuICAgIH1cclxuICAgIGlmICggaG91ciA8IDI0ICYmIHRpbWUuc3BsaXQoICc6JyApWyAwIF0ubGVuZ3RoIDwgMyAmJiBtaW51dGUgPCA2MCApIHtcclxuICAgICAgaWYgKCB0aW1lLnNwbGl0KCAnOicgKS5sZW5ndGggPiAxICYmIHRpbWUuc3BsaXQoICc6JyApWyAxIF0ubGVuZ3RoID4gMiApIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIG1ha2VIb3VyRnVsbCgpOiB2b2lkIHtcclxuICAgIGNvbnN0IGhvdXJQYXJ0ID0gdGhpcy5kYXRhLnNwbGl0KCAnOicgKVsgMCBdO1xyXG4gICAgY29uc3QgbWludXRlUGFydCA9IHRoaXMuZGF0YS5zcGxpdCggJzonICkubGVuZ3RoID4gMSA/IHRoaXMuZGF0YS5zcGxpdCggJzonIClbIDEgXSA6ICcnO1xyXG4gICAgaWYgKCBob3VyUGFydC5sZW5ndGggPT09IDEgKSB7XHJcbiAgICAgIHRoaXMuZGF0YSA9ICcwJyArIGhvdXJQYXJ0ICsgKCBtaW51dGVQYXJ0ID8gJzonICsgbWludXRlUGFydCA6IG1pbnV0ZVBhcnQgKTtcclxuICAgICAgdGhpcy5jYXJldFBvc2l0aW9uU3RhcnQrKztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG1ha2VNaW51dGVGdWxsKCk6IHZvaWQge1xyXG4gICAgY29uc3QgaG91clBhcnQgPSB0aGlzLmRhdGEuc3BsaXQoICc6JyApWyAwIF07XHJcbiAgICBjb25zdCBtaW51dGVQYXJ0ID0gdGhpcy5kYXRhLnNwbGl0KCAnOicgKS5sZW5ndGggPiAxID8gdGhpcy5kYXRhLnNwbGl0KCAnOicgKVsgMSBdIDogJyc7XHJcbiAgICBpZiAoIG1pbnV0ZVBhcnQubGVuZ3RoID09PSAwICkge1xyXG4gICAgICB0aGlzLmRhdGEgPSBob3VyUGFydCArICc6MDAnO1xyXG4gICAgICB0aGlzLmNhcmV0UG9zaXRpb25TdGFydCArPSAyO1xyXG4gICAgfVxyXG4gICAgaWYgKCBtaW51dGVQYXJ0Lmxlbmd0aCA9PT0gMSApIHtcclxuICAgICAgdGhpcy5kYXRhID0gaG91clBhcnQgKyAnOicgKyBtaW51dGVQYXJ0ICsgJzAnO1xyXG4gICAgICB0aGlzLmNhcmV0UG9zaXRpb25TdGFydCsrO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZml4VGltZVRvTmVhcmVzdCgpOiB2b2lkIHtcclxuICAgIGlmICggdGhpcy5kYXRhLmxlbmd0aCA+IDAgKSB7XHJcbiAgICAgIHRoaXMubWFrZUhvdXJGdWxsKCk7XHJcbiAgICAgIHRoaXMubWFrZU1pbnV0ZUZ1bGwoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFycywgbm8tdW51c2VkLXZhcnMsIEB0eXBlc2NyaXB0LWVzbGludC9uby1lbXB0eS1mdW5jdGlvblxyXG4gIHB1YmxpYyBvbkNoYW5nZUZuID0gKCBfOiBhbnkgKTogdm9pZCA9PiB7IH07XHJcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1lbXB0eS1mdW5jdGlvblxyXG4gIHB1YmxpYyBvblRvdWNoZWRGbiA9ICgpOiB2b2lkID0+IHsgfTtcclxuXHJcbiAgcHVibGljIHJlZ2lzdGVyT25DaGFuZ2UoIGZuOiBhbnkgKTogdm9pZCB7XHJcbiAgICB0aGlzLm9uQ2hhbmdlRm4gPSBmbjtcclxuICB9XHJcblxyXG4gIHB1YmxpYyByZWdpc3Rlck9uVG91Y2hlZCggZm46IGFueSApOiB2b2lkIHtcclxuICAgIHRoaXMub25Ub3VjaGVkRm4gPSBmbjtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzZXREaXNhYmxlZFN0YXRlKCBpc0Rpc2FibGVkOiBib29sZWFuICk6IHZvaWQge1xyXG4gICAgdGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgd3JpdGVWYWx1ZSggb2JqOiBhbnkgKTogdm9pZCB7XHJcbiAgICBpZiAoIG9iaiApIHtcclxuICAgICAgb2JqID0gb2JqLnRvU3RyaW5nKCk7XHJcbiAgICAgIGxldCB0ZW1wID0gJyc7XHJcbiAgICAgIGlmICggb2JqLnNwbGl0KCAnOicgKS5sZW5ndGggPj0gMiApIHtcclxuICAgICAgICB0ZW1wID0gb2JqLnNwbGl0KCAnOicgKVsgMCBdICsgJzonICsgb2JqLnNwbGl0KCAnOicgKVsgMSBdO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuX2RhdGEgPSB0ZW1wO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5fZGF0YSA9ICcnO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIG9uQ2hhbmdlKCk6IHZvaWQge1xyXG4gICAgdGhpcy5vbkNoYW5nZUZuKCB0aGlzLmRhdGEgKTtcclxuICB9XHJcblxyXG4gIHNob3coKTogdm9pZCB7XHJcbiAgICB0aGlzLmNhbGNMaXN0UG9zaXRpb24oKTtcclxuICAgIHRoaXMuZm9jdXNlZEZsYWcgPSB0cnVlO1xyXG4gIH1cclxuXHJcbiAgY2xvc2UoIHZhbCA9IG51bGwgKTogdm9pZCB7XHJcbiAgICBpZiAoIHZhbCApIHtcclxuICAgICAgdGhpcy5kYXRhID0gdmFsO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5maXhUaW1lVG9OZWFyZXN0KCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmZvY3VzZWRGbGFnID0gZmFsc2U7XHJcbiAgICB0aGlzLmNvbnRyb2w/Lm1hcmtBc1RvdWNoZWQoKTtcclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cInRpbWVJbnB1dFdyYXBwZXJcIiBbbmdDbGFzc109XCJ7IGRpc2FibGVkOiBkaXNhYmxlZCB9XCI+XHJcbiAgPGFwcC1lbGVtZW50LXdyYXBwZXJcclxuICAgIFtkYXRhXT1cImdldERhdGEoKVwiXHJcbiAgICBbc2hvd0Nsb3NlSWNvbl09XCJzaG93Q2xvc2VJY29uXCJcclxuICAgIFtmb2N1c2VkRmxhZ109XCJmb2N1c2VkRmxhZ1wiXHJcbiAgICAoY2xlYXIpPVwiY2xlYXJJbnB1dCgpXCJcclxuICA+XHJcbiAgICA8ZGl2IGNsYXNzPVwidGltZUlucHV0RmllbGRXcmFwcGVyXCI+XHJcbiAgICAgIDxpbnB1dFxyXG4gICAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICBjbGFzcz1cImZvcm0tZmllbGRfX2lucHV0XCJcclxuICAgICAgICBbdmFsdWVdPVwiZGF0YVwiXHJcbiAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcclxuICAgICAgICAoZm9jdXMpPVwic2hvdygpXCJcclxuICAgICAgICAoY2xpY2spPVwic2hvdygpXCJcclxuICAgICAgICAoa2V5ZG93bik9XCJpbnB1dEtleURvd24oJGV2ZW50KVwiXHJcbiAgICAgICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCJcclxuICAgICAgLz5cclxuICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZmllbGRfX2lucHV0LS1zdWZmaXhcIiAqbmdJZj1cInR5cGUgIT09ICdudW1iZXInXCI+XHJcbiAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwibWF0LWljb25cIj48L25nLWNvbnRlbnQ+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZWNhYnMtdGltZS1saXN0LXBhbmVsXHJcbiAgICAgICAgW3R5cGVkVmFsdWVdPVwiZGF0YVwiXHJcbiAgICAgICAgKm5nSWY9XCJmb2N1c2VkRmxhZ1wiXHJcbiAgICAgICAgW3Nob3dEYXlTdGFydF09XCJzaG93RGF5U3RhcnRcIlxyXG4gICAgICAgIFtzaG93RGF5RW5kXT1cInNob3dEYXlFbmRcIlxyXG4gICAgICAgIFttaW5dPVwibWluXCJcclxuICAgICAgICBbbWF4XT1cIm1heFwiXHJcbiAgICAgICAgY2xhc3M9XCJmb3JtLXRpbWUtbGlzdFwiXHJcbiAgICAgICAgW2FwcGVuZFRvXT1cImFwcGVuZFRvXCJcclxuICAgICAgICBbbGlzdFBvc2l0aW9uXT1cImxpc3RQb3NpdGlvblwiXHJcbiAgICAgICAgKGNsb3NlTWUpPVwiY2xvc2UoJGV2ZW50KVwiXHJcbiAgICAgID48L2VjYWJzLXRpbWUtbGlzdC1wYW5lbD5cclxuICAgIDwvZGl2PlxyXG4gIDwvYXBwLWVsZW1lbnQtd3JhcHBlcj5cclxuPC9kaXY+XHJcbiJdfQ==