@dev-tcloud/tcloud-ui 2.4.14 → 4.0.0

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 (190) hide show
  1. package/README.md +2 -1
  2. package/esm2022/dev-tcloud-tcloud-ui.mjs +4 -4
  3. package/esm2022/lib/_directives/align/align.directive.mjs +42 -42
  4. package/esm2022/lib/_directives/currency/currency.directive.mjs +160 -160
  5. package/esm2022/lib/_directives/directives.module.mjs +40 -40
  6. package/esm2022/lib/_directives/el-copy/el-copy.directive.mjs +68 -68
  7. package/esm2022/lib/_directives/hover-parent/hover-parent.directive.mjs +58 -58
  8. package/esm2022/lib/_directives/tooltip/tooltip.directive.mjs +151 -151
  9. package/esm2022/lib/_modules/tcloud-ui-accordion/components/tcloud-ui-accordion-body/tcloud-ui-accordion-body.component.mjs +35 -35
  10. package/esm2022/lib/_modules/tcloud-ui-accordion/components/tcloud-ui-accordion-title/tcloud-ui-accordion-title.component.mjs +54 -54
  11. package/esm2022/lib/_modules/tcloud-ui-accordion/services/tcloud-ui-accordion.service.mjs +38 -38
  12. package/esm2022/lib/_modules/tcloud-ui-accordion/tcloud-ui-accordion.component.mjs +75 -75
  13. package/esm2022/lib/_modules/tcloud-ui-accordion/tcloud-ui-accordion.module.mjs +35 -35
  14. package/esm2022/lib/_modules/tcloud-ui-choice-issues/tcloud-ui-choice-issues.component.mjs +87 -87
  15. package/esm2022/lib/_modules/tcloud-ui-choice-issues/tcloud-ui-choice-issues.module.mjs +32 -32
  16. package/esm2022/lib/_modules/tcloud-ui-data-list/services/data-list.service.mjs +38 -38
  17. package/esm2022/lib/_modules/tcloud-ui-data-list/tcloud-ui-data-list-option/tcloud-ui-data-list-option.component.mjs +65 -65
  18. package/esm2022/lib/_modules/tcloud-ui-data-list/tcloud-ui-data-list.component.mjs +317 -317
  19. package/esm2022/lib/_modules/tcloud-ui-data-list/tcloud-ui-data-list.mjs +2 -2
  20. package/esm2022/lib/_modules/tcloud-ui-data-list/tcloud-ui-data-list.module.mjs +37 -37
  21. package/esm2022/lib/_modules/tcloud-ui-datepicker/tcloud-ui-datepicker.component.mjs +440 -440
  22. package/esm2022/lib/_modules/tcloud-ui-datepicker/tcloud-ui-datepicker.module.mjs +32 -32
  23. package/esm2022/lib/_modules/tcloud-ui-datepicker-time/tcloud-ui-datepicker-time.component.mjs +320 -320
  24. package/esm2022/lib/_modules/tcloud-ui-datepicker-time/tcloud-ui-datepicker-time.module.mjs +40 -40
  25. package/esm2022/lib/_modules/tcloud-ui-filters/components/range-date/range-date.component.mjs +213 -213
  26. package/esm2022/lib/_modules/tcloud-ui-filters/tcloud-ui-filters.component.mjs +537 -534
  27. package/esm2022/lib/_modules/tcloud-ui-filters/tcloud-ui-filters.mjs +19 -19
  28. package/esm2022/lib/_modules/tcloud-ui-filters/tcloud-ui-filters.module.mjs +45 -45
  29. package/esm2022/lib/_modules/tcloud-ui-input-password/tcloud-ui-input-password.component.mjs +142 -142
  30. package/esm2022/lib/_modules/tcloud-ui-input-password/tcloud-ui-input-password.module.mjs +32 -32
  31. package/esm2022/lib/_modules/tcloud-ui-input-search/tcloud-ui-input-search.component.mjs +66 -66
  32. package/esm2022/lib/_modules/tcloud-ui-input-search/tcloud-ui-input-search.module.mjs +32 -32
  33. package/esm2022/lib/_modules/tcloud-ui-label-token/tcloud-ui-label-token.component.mjs +36 -36
  34. package/esm2022/lib/_modules/tcloud-ui-label-token/tcloud-ui-label-token.module.mjs +31 -31
  35. package/esm2022/lib/_modules/tcloud-ui-line-step-circle/tcloud-ui-line-step-circle.component.mjs +93 -93
  36. package/esm2022/lib/_modules/tcloud-ui-line-step-circle/tcloud-ui-line-step-circle.module.mjs +25 -25
  37. package/esm2022/lib/_modules/tcloud-ui-line-step-title/tcloud-ui-line-step-title.component.mjs +43 -43
  38. package/esm2022/lib/_modules/tcloud-ui-line-step-title/tcloud-ui-line-step-title.mjs +1 -1
  39. package/esm2022/lib/_modules/tcloud-ui-line-step-title/tcloud-ui-line-step-title.module.mjs +19 -19
  40. package/esm2022/lib/_modules/tcloud-ui-linha-logo/tcloud-ui-linha-logo.component.mjs +65 -65
  41. package/esm2022/lib/_modules/tcloud-ui-linha-logo/tcloud-ui-linha-logo.module.mjs +25 -25
  42. package/esm2022/lib/_modules/tcloud-ui-loading/components/tcloud-ui-cubes/tcloud-ui-cubes.component.mjs +11 -11
  43. package/esm2022/lib/_modules/tcloud-ui-loading/tcloud-ui-loading.component.mjs +29 -29
  44. package/esm2022/lib/_modules/tcloud-ui-loading/tcloud-ui-loading.module.mjs +21 -21
  45. package/esm2022/lib/_modules/tcloud-ui-modal/components/tcloud-ui-modal-body/tcloud-ui-modal-body.component.mjs +14 -14
  46. package/esm2022/lib/_modules/tcloud-ui-modal/components/tcloud-ui-modal-footer/tcloud-ui-modal-footer.component.mjs +61 -61
  47. package/esm2022/lib/_modules/tcloud-ui-modal/components/tcloud-ui-modal-header/tcloud-ui-modal-header.component.mjs +24 -24
  48. package/esm2022/lib/_modules/tcloud-ui-modal/services/tcloud-modal.service.mjs +63 -63
  49. package/esm2022/lib/_modules/tcloud-ui-modal/tcloud-ui-modal.component.mjs +203 -203
  50. package/esm2022/lib/_modules/tcloud-ui-modal/tcloud-ui-modal.mjs +1 -1
  51. package/esm2022/lib/_modules/tcloud-ui-modal/tcloud-ui-modal.module.mjs +47 -47
  52. package/esm2022/lib/_modules/tcloud-ui-multi-input/tcloud-ui-multi-input.component.mjs +152 -152
  53. package/esm2022/lib/_modules/tcloud-ui-multi-input/tcloud-ui-multi-input.module.mjs +28 -28
  54. package/esm2022/lib/_modules/tcloud-ui-multi-select/tcloud-ui-multi-select.component.mjs +167 -167
  55. package/esm2022/lib/_modules/tcloud-ui-multi-select/tcloud-ui-multi-select.module.mjs +28 -28
  56. package/esm2022/lib/_modules/tcloud-ui-multiples-values/tcloud-ui-multiples-values.component.mjs +348 -348
  57. package/esm2022/lib/_modules/tcloud-ui-multiples-values/tcloud-ui-multiples-values.module.mjs +36 -36
  58. package/esm2022/lib/_modules/tcloud-ui-not-found/tcloud-ui-not-found.component.mjs +20 -20
  59. package/esm2022/lib/_modules/tcloud-ui-not-found/tcloud-ui-not-found.module.mjs +25 -25
  60. package/esm2022/lib/_modules/tcloud-ui-number-step/tcloud-ui-number-step.component.mjs +99 -99
  61. package/esm2022/lib/_modules/tcloud-ui-number-step/tcloud-ui-number-step.module.mjs +25 -25
  62. package/esm2022/lib/_modules/tcloud-ui-progress-bar/tcloud-ui-progress-bar.component.mjs +165 -161
  63. package/esm2022/lib/_modules/tcloud-ui-progress-bar/tcloud-ui-progress-bar.module.mjs +21 -21
  64. package/esm2022/lib/_modules/tcloud-ui-reorder-items/tcloud-ui-reorder-items.component.mjs +105 -105
  65. package/esm2022/lib/_modules/tcloud-ui-reorder-items/tcloud-ui-reorder-items.mjs +1 -1
  66. package/esm2022/lib/_modules/tcloud-ui-reorder-items/tcloud-ui-reorder-items.module.mjs +24 -24
  67. package/esm2022/lib/_modules/tcloud-ui-scroll-box/tcloud-ui-scroll-box.component.mjs +46 -46
  68. package/esm2022/lib/_modules/tcloud-ui-scroll-box/tcloud-ui-scroll-box.module.mjs +25 -25
  69. package/esm2022/lib/_modules/tcloud-ui-tab-menu/components/tcloud-ui-tab-content/tcloud-ui-tab-content.component.mjs +36 -36
  70. package/esm2022/lib/_modules/tcloud-ui-tab-menu/components/tcloud-ui-tab-head/tcloud-ui-tab-head.component.mjs +85 -85
  71. package/esm2022/lib/_modules/tcloud-ui-tab-menu/components/tcloud-ui-tab-subtitle/tcloud-ui-tab-subtitle.component.mjs +69 -69
  72. package/esm2022/lib/_modules/tcloud-ui-tab-menu/components/tcloud-ui-tab-title/tcloud-ui-tab-title.component.mjs +71 -71
  73. package/esm2022/lib/_modules/tcloud-ui-tab-menu/services/tab-menu.service.mjs +104 -104
  74. package/esm2022/lib/_modules/tcloud-ui-tab-menu/tcloud-ui-tab-menu.component.mjs +64 -64
  75. package/esm2022/lib/_modules/tcloud-ui-tab-menu/tcloud-ui-tab-menu.mjs +1 -1
  76. package/esm2022/lib/_modules/tcloud-ui-tab-menu/tcloud-ui-tab-menu.module.mjs +45 -45
  77. package/esm2022/lib/_modules/tcloud-ui-table/tcloud-ui-table.component.mjs +21 -21
  78. package/esm2022/lib/_modules/tcloud-ui-table/tcloud-ui-table.module.mjs +25 -25
  79. package/esm2022/lib/_modules/tcloud-ui-welcome/tcloud-ui-welcome.component.mjs +37 -37
  80. package/esm2022/lib/_modules/tcloud-ui-welcome/tcloud-ui-welcome.module.mjs +25 -25
  81. package/esm2022/lib/_pipes/array-to-text.mjs +29 -29
  82. package/esm2022/lib/_pipes/bytes.mjs +31 -31
  83. package/esm2022/lib/_pipes/cnpj.mjs +37 -37
  84. package/esm2022/lib/_pipes/cpf.mjs +37 -37
  85. package/esm2022/lib/_pipes/datebr.mjs +102 -102
  86. package/esm2022/lib/_pipes/index.mjs +8 -8
  87. package/esm2022/lib/_pipes/monthname.mjs +25 -25
  88. package/esm2022/lib/_pipes/respective.mjs +73 -73
  89. package/esm2022/lib/_pipes/statusinfo.mjs +78 -78
  90. package/esm2022/lib/_pipes/tcloud-pipes.module.mjs +75 -75
  91. package/esm2022/lib/_services/loading-transitions.service.mjs +52 -52
  92. package/esm2022/lib/_services/search-in-object.service.mjs +99 -99
  93. package/esm2022/lib/tcloud-ui.module.mjs +223 -223
  94. package/esm2022/public-api.mjs +107 -107
  95. package/fesm2022/dev-tcloud-tcloud-ui.mjs +6284 -6277
  96. package/fesm2022/dev-tcloud-tcloud-ui.mjs.map +1 -1
  97. package/index.d.ts +5 -5
  98. package/lib/_directives/align/align.directive.d.ts +13 -13
  99. package/lib/_directives/currency/currency.directive.d.ts +24 -24
  100. package/lib/_directives/directives.module.d.ts +11 -11
  101. package/lib/_directives/el-copy/el-copy.directive.d.ts +13 -13
  102. package/lib/_directives/hover-parent/hover-parent.directive.d.ts +15 -15
  103. package/lib/_directives/tooltip/tooltip.directive.d.ts +18 -18
  104. package/lib/_modules/tcloud-ui-accordion/components/tcloud-ui-accordion-body/tcloud-ui-accordion-body.component.d.ts +11 -11
  105. package/lib/_modules/tcloud-ui-accordion/components/tcloud-ui-accordion-title/tcloud-ui-accordion-title.component.d.ts +20 -20
  106. package/lib/_modules/tcloud-ui-accordion/services/tcloud-ui-accordion.service.d.ts +20 -20
  107. package/lib/_modules/tcloud-ui-accordion/tcloud-ui-accordion.component.d.ts +27 -27
  108. package/lib/_modules/tcloud-ui-accordion/tcloud-ui-accordion.module.d.ts +10 -10
  109. package/lib/_modules/tcloud-ui-choice-issues/tcloud-ui-choice-issues.component.d.ts +27 -27
  110. package/lib/_modules/tcloud-ui-choice-issues/tcloud-ui-choice-issues.module.d.ts +9 -9
  111. package/lib/_modules/tcloud-ui-data-list/services/data-list.service.d.ts +20 -20
  112. package/lib/_modules/tcloud-ui-data-list/tcloud-ui-data-list-option/tcloud-ui-data-list-option.component.d.ts +23 -23
  113. package/lib/_modules/tcloud-ui-data-list/tcloud-ui-data-list.component.d.ts +74 -74
  114. package/lib/_modules/tcloud-ui-data-list/tcloud-ui-data-list.d.ts +5 -5
  115. package/lib/_modules/tcloud-ui-data-list/tcloud-ui-data-list.module.d.ts +10 -10
  116. package/lib/_modules/tcloud-ui-datepicker/tcloud-ui-datepicker.component.d.ts +59 -59
  117. package/lib/_modules/tcloud-ui-datepicker/tcloud-ui-datepicker.module.d.ts +9 -9
  118. package/lib/_modules/tcloud-ui-datepicker-time/tcloud-ui-datepicker-time.component.d.ts +52 -52
  119. package/lib/_modules/tcloud-ui-datepicker-time/tcloud-ui-datepicker-time.module.d.ts +11 -11
  120. package/lib/_modules/tcloud-ui-filters/components/range-date/range-date.component.d.ts +41 -41
  121. package/lib/_modules/tcloud-ui-filters/tcloud-ui-filters.component.d.ts +64 -63
  122. package/lib/_modules/tcloud-ui-filters/tcloud-ui-filters.d.ts +40 -40
  123. package/lib/_modules/tcloud-ui-filters/tcloud-ui-filters.module.d.ts +12 -12
  124. package/lib/_modules/tcloud-ui-input-password/tcloud-ui-input-password.component.d.ts +36 -36
  125. package/lib/_modules/tcloud-ui-input-password/tcloud-ui-input-password.module.d.ts +9 -9
  126. package/lib/_modules/tcloud-ui-input-search/tcloud-ui-input-search.component.d.ts +28 -28
  127. package/lib/_modules/tcloud-ui-input-search/tcloud-ui-input-search.module.d.ts +9 -9
  128. package/lib/_modules/tcloud-ui-label-token/tcloud-ui-label-token.component.d.ts +14 -14
  129. package/lib/_modules/tcloud-ui-label-token/tcloud-ui-label-token.module.d.ts +9 -9
  130. package/lib/_modules/tcloud-ui-line-step-circle/tcloud-ui-line-step-circle.component.d.ts +28 -28
  131. package/lib/_modules/tcloud-ui-line-step-circle/tcloud-ui-line-step-circle.module.d.ts +8 -8
  132. package/lib/_modules/tcloud-ui-line-step-title/tcloud-ui-line-step-title.component.d.ts +12 -12
  133. package/lib/_modules/tcloud-ui-line-step-title/tcloud-ui-line-step-title.d.ts +5 -5
  134. package/lib/_modules/tcloud-ui-line-step-title/tcloud-ui-line-step-title.module.d.ts +8 -8
  135. package/lib/_modules/tcloud-ui-linha-logo/tcloud-ui-linha-logo.component.d.ts +17 -17
  136. package/lib/_modules/tcloud-ui-linha-logo/tcloud-ui-linha-logo.module.d.ts +8 -8
  137. package/lib/_modules/tcloud-ui-loading/components/tcloud-ui-cubes/tcloud-ui-cubes.component.d.ts +5 -5
  138. package/lib/_modules/tcloud-ui-loading/tcloud-ui-loading.component.d.ts +11 -11
  139. package/lib/_modules/tcloud-ui-loading/tcloud-ui-loading.module.d.ts +9 -9
  140. package/lib/_modules/tcloud-ui-modal/components/tcloud-ui-modal-body/tcloud-ui-modal-body.component.d.ts +8 -8
  141. package/lib/_modules/tcloud-ui-modal/components/tcloud-ui-modal-footer/tcloud-ui-modal-footer.component.d.ts +26 -26
  142. package/lib/_modules/tcloud-ui-modal/components/tcloud-ui-modal-header/tcloud-ui-modal-header.component.d.ts +12 -12
  143. package/lib/_modules/tcloud-ui-modal/services/tcloud-modal.service.d.ts +28 -28
  144. package/lib/_modules/tcloud-ui-modal/tcloud-ui-modal.component.d.ts +68 -68
  145. package/lib/_modules/tcloud-ui-modal/tcloud-ui-modal.d.ts +4 -4
  146. package/lib/_modules/tcloud-ui-modal/tcloud-ui-modal.module.d.ts +12 -12
  147. package/lib/_modules/tcloud-ui-multi-input/tcloud-ui-multi-input.component.d.ts +39 -39
  148. package/lib/_modules/tcloud-ui-multi-input/tcloud-ui-multi-input.module.d.ts +9 -9
  149. package/lib/_modules/tcloud-ui-multi-select/tcloud-ui-multi-select.component.d.ts +39 -39
  150. package/lib/_modules/tcloud-ui-multi-select/tcloud-ui-multi-select.module.d.ts +9 -9
  151. package/lib/_modules/tcloud-ui-multiples-values/tcloud-ui-multiples-values.component.d.ts +69 -69
  152. package/lib/_modules/tcloud-ui-multiples-values/tcloud-ui-multiples-values.module.d.ts +10 -10
  153. package/lib/_modules/tcloud-ui-not-found/tcloud-ui-not-found.component.d.ts +8 -8
  154. package/lib/_modules/tcloud-ui-not-found/tcloud-ui-not-found.module.d.ts +8 -8
  155. package/lib/_modules/tcloud-ui-number-step/tcloud-ui-number-step.component.d.ts +29 -29
  156. package/lib/_modules/tcloud-ui-number-step/tcloud-ui-number-step.module.d.ts +8 -8
  157. package/lib/_modules/tcloud-ui-progress-bar/tcloud-ui-progress-bar.component.d.ts +31 -29
  158. package/lib/_modules/tcloud-ui-progress-bar/tcloud-ui-progress-bar.module.d.ts +8 -8
  159. package/lib/_modules/tcloud-ui-reorder-items/tcloud-ui-reorder-items.component.d.ts +17 -17
  160. package/lib/_modules/tcloud-ui-reorder-items/tcloud-ui-reorder-items.d.ts +4 -4
  161. package/lib/_modules/tcloud-ui-reorder-items/tcloud-ui-reorder-items.module.d.ts +8 -8
  162. package/lib/_modules/tcloud-ui-scroll-box/tcloud-ui-scroll-box.component.d.ts +13 -13
  163. package/lib/_modules/tcloud-ui-scroll-box/tcloud-ui-scroll-box.module.d.ts +8 -8
  164. package/lib/_modules/tcloud-ui-tab-menu/components/tcloud-ui-tab-content/tcloud-ui-tab-content.component.d.ts +15 -15
  165. package/lib/_modules/tcloud-ui-tab-menu/components/tcloud-ui-tab-head/tcloud-ui-tab-head.component.d.ts +24 -24
  166. package/lib/_modules/tcloud-ui-tab-menu/components/tcloud-ui-tab-subtitle/tcloud-ui-tab-subtitle.component.d.ts +21 -21
  167. package/lib/_modules/tcloud-ui-tab-menu/components/tcloud-ui-tab-title/tcloud-ui-tab-title.component.d.ts +22 -22
  168. package/lib/_modules/tcloud-ui-tab-menu/services/tab-menu.service.d.ts +38 -38
  169. package/lib/_modules/tcloud-ui-tab-menu/tcloud-ui-tab-menu.component.d.ts +23 -23
  170. package/lib/_modules/tcloud-ui-tab-menu/tcloud-ui-tab-menu.d.ts +4 -4
  171. package/lib/_modules/tcloud-ui-tab-menu/tcloud-ui-tab-menu.module.d.ts +12 -12
  172. package/lib/_modules/tcloud-ui-table/tcloud-ui-table.component.d.ts +10 -10
  173. package/lib/_modules/tcloud-ui-table/tcloud-ui-table.module.d.ts +8 -8
  174. package/lib/_modules/tcloud-ui-welcome/tcloud-ui-welcome.component.d.ts +17 -17
  175. package/lib/_modules/tcloud-ui-welcome/tcloud-ui-welcome.module.d.ts +8 -8
  176. package/lib/_pipes/array-to-text.d.ts +8 -8
  177. package/lib/_pipes/bytes.d.ts +8 -8
  178. package/lib/_pipes/cnpj.d.ts +9 -9
  179. package/lib/_pipes/cpf.d.ts +9 -9
  180. package/lib/_pipes/datebr.d.ts +11 -11
  181. package/lib/_pipes/index.d.ts +8 -8
  182. package/lib/_pipes/monthname.d.ts +8 -8
  183. package/lib/_pipes/respective.d.ts +11 -11
  184. package/lib/_pipes/statusinfo.d.ts +15 -15
  185. package/lib/_pipes/tcloud-pipes.module.d.ts +15 -15
  186. package/lib/_services/loading-transitions.service.d.ts +16 -16
  187. package/lib/_services/search-in-object.service.d.ts +19 -19
  188. package/lib/tcloud-ui.module.d.ts +33 -33
  189. package/package.json +3 -3
  190. package/public-api.d.ts +76 -76
@@ -1,213 +1,213 @@
1
- import { Component, Input, Output, EventEmitter, forwardRef } from '@angular/core';
2
- import { NG_VALIDATORS, NG_VALUE_ACCESSOR } from '@angular/forms';
3
- import * as i0 from "@angular/core";
4
- import * as i1 from "@angular/common";
5
- import * as i2 from "@angular/forms";
6
- import * as i3 from "../../../tcloud-ui-datepicker-time/tcloud-ui-datepicker-time.component";
7
- const CUSTOM_INPUT_VALIDATORS = {
8
- provide: NG_VALIDATORS,
9
- useExisting: forwardRef(() => TCloudUiRangeDateComponent),
10
- multi: true
11
- };
12
- const CUSTOM_INPUT_CONTROL_VALUE_ACCESSOR = {
13
- provide: NG_VALUE_ACCESSOR,
14
- useExisting: forwardRef(() => TCloudUiRangeDateComponent),
15
- multi: true
16
- };
17
- const noop = () => {
18
- };
19
- export class TCloudUiRangeDateComponent {
20
- constructor() {
21
- this.result = {};
22
- this.options_date_time = [];
23
- this.use_validation_required = false;
24
- this.onChange = new EventEmitter();
25
- this.defaultValuePeriodStartStop = '';
26
- this.descriptionStart = '';
27
- this.descriptionStop = '';
28
- this.mode = 'select';
29
- this.isValid = false;
30
- //Placeholders for the callbacks which are later providesd
31
- //by the Control Value Accessor
32
- this.onTouchedCallback = noop;
33
- this.onChangeCallback = noop;
34
- }
35
- ngOnInit() {
36
- this.setOptionsDateTime();
37
- }
38
- setOptionsDateTime() {
39
- this.options_date_time = [
40
- { value: '1-last-time', description: 'Última 1 hora' },
41
- { value: '3-last-time', description: 'Últimas 3 horas' },
42
- { value: '6-last-time', description: 'Últimas 6 horas' },
43
- { value: '24-last-time', description: 'Últimas 24 horas' },
44
- { value: '7-days', description: 'Últimos 7 dias' },
45
- { value: '15-days', description: 'Últimos 15 dias' },
46
- { value: '30-days', description: 'Últimos 30 dias' },
47
- { value: 'current-month', description: 'Mês atual' },
48
- { value: 'current-year', description: 'Ano atual' }
49
- ];
50
- setTimeout(() => {
51
- if (this.defaultValuePeriodStartStop !== '') {
52
- this.onChangeOptionsDateTime(this.defaultValuePeriodStartStop);
53
- }
54
- });
55
- }
56
- onChangeOptionsDateTime(event) {
57
- this.isValid = false;
58
- // this.description_options_date_time = '';
59
- // this.value_options_date_time = '';
60
- event = (event && event.value) ? `${event.value}` : `${event}`;
61
- let now = new Date();
62
- let current_date = new Date();
63
- let filter_date = undefined;
64
- if (event === '1-last-time') {
65
- filter_date = new Date(current_date.getTime() - 1 * 60 * 60 * 1000);
66
- }
67
- if (event === '3-last-time') {
68
- filter_date = new Date(current_date.getTime() - 3 * 60 * 60 * 1000);
69
- }
70
- if (event === '6-last-time') {
71
- filter_date = new Date(current_date.getTime() - 6 * 60 * 60 * 1000);
72
- }
73
- if (event === '24-last-time') {
74
- filter_date = new Date(current_date.getTime() - 24 * 60 * 60 * 1000);
75
- }
76
- if (event === '7-days') {
77
- filter_date = new Date((new Date(current_date)).setDate(now.getDate() - 7));
78
- filter_date = new Date((filter_date).setSeconds(0));
79
- }
80
- if (event === '15-days') {
81
- filter_date = new Date((new Date(current_date)).setDate(now.getDate() - 15));
82
- filter_date = new Date((filter_date).setSeconds(0));
83
- }
84
- if (event === '30-days') {
85
- filter_date = new Date((new Date(current_date)).setDate(now.getDate() - 30));
86
- filter_date = new Date((filter_date).setSeconds(0));
87
- }
88
- if (event === 'current-month') {
89
- filter_date = new Date(now.getFullYear(), now.getMonth(), 1);
90
- }
91
- if (event === 'current-year') {
92
- filter_date = new Date(now.getFullYear(), 0, 1);
93
- }
94
- if (filter_date) {
95
- this.result = {
96
- start: this.getTransformDate(filter_date),
97
- stop: this.getTransformDate(now)
98
- };
99
- this.onChange.emit(this.result);
100
- this.isValid = true;
101
- }
102
- else {
103
- this.result = {};
104
- this.onChange.emit(this.result);
105
- this.isValid = false;
106
- }
107
- }
108
- getTransformDate(dt) {
109
- //return (dt).toLocaleString('pt-BR');
110
- return dt;
111
- /*
112
- const ano = dt.getFullYear();
113
- const mes = dt.getMonth();
114
- const dia = dt.getDate();
115
- const horas = dt.getHours();
116
- const minutos = dt.getMinutes();
117
- return new Date(Date.UTC(ano, mes, dia, horas, minutos));
118
- */
119
- }
120
- onChangeStartDateTime(event) {
121
- this.isValid = false;
122
- if (this.result && this.result.start) {
123
- this.result.start = event.value = this.getTransformDate(event.value);
124
- this.onChange.emit(this.result);
125
- this.isValid = true;
126
- }
127
- else {
128
- this.result = {};
129
- this.onChange.emit(this.result);
130
- }
131
- }
132
- onChangeStopDateTime(event) {
133
- this.isValid = false;
134
- if (this.result && this.result.stop) {
135
- this.result.stop = event.value = this.getTransformDate(event.value);
136
- this.onChange.emit(this.result);
137
- this.isValid = true;
138
- }
139
- else {
140
- this.result = {};
141
- this.onChange.emit(this.result);
142
- }
143
- }
144
- toggle() {
145
- const mode = (`${this.mode}` === 'select') ? 'datepickers' : 'select';
146
- this.defaultValuePeriodStartStop = '';
147
- this.isValid = false;
148
- this.result = {};
149
- this.mode = mode;
150
- this.onChange.emit(this.result);
151
- }
152
- //get accessor
153
- get value() {
154
- return this.innerValue;
155
- }
156
- ;
157
- //set accessor including call the onchange callback
158
- set value(v) {
159
- if (v !== this.innerValue) {
160
- this.innerValue = v;
161
- this.onChangeCallback(v);
162
- }
163
- }
164
- //Set touched on blur
165
- onBlur() {
166
- this.onTouchedCallback();
167
- }
168
- //From ControlValueAccessor interface
169
- writeValue(value) {
170
- if (value !== this.innerValue) {
171
- this.innerValue = value;
172
- //this.toSetDefault(value);
173
- }
174
- }
175
- //From ControlValueAccessor interface
176
- registerOnChange(fn) {
177
- this.onChangeCallback = fn;
178
- }
179
- //From ControlValueAccessor interface
180
- registerOnTouched(fn) {
181
- this.onTouchedCallback = fn;
182
- }
183
- validate(c) {
184
- if (c && (typeof this.required !== 'undefined')) {
185
- this.use_validation_required = true;
186
- return (this.check_is_valid()) ? null : 'required';
187
- }
188
- return null;
189
- }
190
- check_is_valid() {
191
- if (this.result && this.result.start && this.result.stop) {
192
- return true;
193
- }
194
- return false;
195
- }
196
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TCloudUiRangeDateComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
197
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TCloudUiRangeDateComponent, selector: "range-date", inputs: { defaultValuePeriodStartStop: "defaultValuePeriodStartStop", required: "required", descriptionStart: "descriptionStart", descriptionStop: "descriptionStop" }, outputs: { onChange: "onChange" }, providers: [CUSTOM_INPUT_CONTROL_VALUE_ACCESSOR, CUSTOM_INPUT_VALIDATORS], ngImport: i0, template: "<table class=\"tcloud-ui-filters-range-date area-range-date\">\r\n <tr>\r\n\r\n <td>\r\n <div *ngIf=\"mode === 'select'\">\r\n <div class=\"description-period\">Per\u00EDodo</div>\r\n <select name=\"periodo\" class=\"tc-form-control\" (change)=\"onChangeOptionsDateTime($event.target)\" [(ngModel)]=\"defaultValuePeriodStartStop\" >\r\n <option value=\"\"></option> \r\n <ng-container *ngFor=\"let item of options_date_time\">\r\n <option [value]=\"item.value\">{{ item.description }}</option>\r\n </ng-container>\r\n </select>\r\n </div>\r\n <div *ngIf=\"mode === 'datepickers'\">\r\n\r\n <table class=\"area-range-datepickers\">\r\n <tr>\r\n <td>\r\n <div class=\"description-start\">{{ descriptionStart }}</div>\r\n <tcloud-ui-datepicker-time \r\n #_input_start \r\n [(ngModel)]=\"result.start\" \r\n name=\"input_start\" \r\n (eventChange)=\"onChangeStartDateTime(_input_start)\">\r\n </tcloud-ui-datepicker-time>\r\n </td>\r\n <td>\r\n <div class=\"description-stop\">{{ descriptionStop }}</div>\r\n <tcloud-ui-datepicker-time \r\n #_input_stop\r\n [(ngModel)]=\"result.stop\" \r\n name=\"input_stop\" \r\n (eventChange)=\"onChangeStopDateTime(_input_stop)\">\r\n </tcloud-ui-datepicker-time>\r\n </td>\r\n </tr>\r\n </table>\r\n\r\n </div>\r\n </td>\r\n\r\n <td>\r\n <button class=\"btn-mode-range-date\" [class.active]=\"mode === 'select'\" (click)=\"toggle()\" type=\"button\">\r\n\r\n <i *ngIf=\"mode === 'select'\" class=\"far fa-calendar-alt\" title=\"Alterar para calend\u00E1rio\"></i>\r\n <i *ngIf=\"mode !== 'select'\" class=\"fas fa-calendar-week\" title=\"Selecionar per\u00EDodo\"></i>\r\n\r\n <!-- <div *ngIf=\"mode === 'select'\">Exibir<br>Calend\u00E1rio</div> -->\r\n <!-- <div *ngIf=\"mode !== 'select'\">Exibir<br>Per\u00EDodo</div> -->\r\n </button>\r\n </td>\r\n\r\n </tr>\r\n</table>", styles: [".area-range-date{height:40px;width:100%}.area-range-date tr td:first-child{width:calc(100% - 35px)}.area-range-date tr td:first-child select{color:#535353;border-radius:3px 0 0 3px!important}.area-range-date tr td:first-child .area-range-datepickers{width:100%}.area-range-date tr td:first-child .area-range-datepickers td{width:50%!important}.area-range-date tr td:last-child{width:35px}.area-range-date tr td:last-child .btn-mode-range-date{width:100%;text-align:center;border:1px solid #ccc;background-color:#fff;font-size:17px;line-height:1;cursor:pointer;color:#6c6c6c;height:40px;border-radius:0 3px 3px 0}.area-range-date tr td:last-child .btn-mode-range-date:focus{color:#403d3d}.active{background-color:#eee!important}.description-period,.description-start{position:relative;left:17px;top:-15px;line-height:0}.description-stop{position:relative;top:-15px;line-height:0}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i3.TCloudUiDatepickerTimeComponent, selector: "tcloud-ui-datepicker-time", inputs: ["ngModel", "minDate", "maxDate", "useOptionsDateTime"], outputs: ["ngModelChange", "onChange", "eventChange"] }] }); }
198
- }
199
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TCloudUiRangeDateComponent, decorators: [{
200
- type: Component,
201
- args: [{ selector: 'range-date', providers: [CUSTOM_INPUT_CONTROL_VALUE_ACCESSOR, CUSTOM_INPUT_VALIDATORS], template: "<table class=\"tcloud-ui-filters-range-date area-range-date\">\r\n <tr>\r\n\r\n <td>\r\n <div *ngIf=\"mode === 'select'\">\r\n <div class=\"description-period\">Per\u00EDodo</div>\r\n <select name=\"periodo\" class=\"tc-form-control\" (change)=\"onChangeOptionsDateTime($event.target)\" [(ngModel)]=\"defaultValuePeriodStartStop\" >\r\n <option value=\"\"></option> \r\n <ng-container *ngFor=\"let item of options_date_time\">\r\n <option [value]=\"item.value\">{{ item.description }}</option>\r\n </ng-container>\r\n </select>\r\n </div>\r\n <div *ngIf=\"mode === 'datepickers'\">\r\n\r\n <table class=\"area-range-datepickers\">\r\n <tr>\r\n <td>\r\n <div class=\"description-start\">{{ descriptionStart }}</div>\r\n <tcloud-ui-datepicker-time \r\n #_input_start \r\n [(ngModel)]=\"result.start\" \r\n name=\"input_start\" \r\n (eventChange)=\"onChangeStartDateTime(_input_start)\">\r\n </tcloud-ui-datepicker-time>\r\n </td>\r\n <td>\r\n <div class=\"description-stop\">{{ descriptionStop }}</div>\r\n <tcloud-ui-datepicker-time \r\n #_input_stop\r\n [(ngModel)]=\"result.stop\" \r\n name=\"input_stop\" \r\n (eventChange)=\"onChangeStopDateTime(_input_stop)\">\r\n </tcloud-ui-datepicker-time>\r\n </td>\r\n </tr>\r\n </table>\r\n\r\n </div>\r\n </td>\r\n\r\n <td>\r\n <button class=\"btn-mode-range-date\" [class.active]=\"mode === 'select'\" (click)=\"toggle()\" type=\"button\">\r\n\r\n <i *ngIf=\"mode === 'select'\" class=\"far fa-calendar-alt\" title=\"Alterar para calend\u00E1rio\"></i>\r\n <i *ngIf=\"mode !== 'select'\" class=\"fas fa-calendar-week\" title=\"Selecionar per\u00EDodo\"></i>\r\n\r\n <!-- <div *ngIf=\"mode === 'select'\">Exibir<br>Calend\u00E1rio</div> -->\r\n <!-- <div *ngIf=\"mode !== 'select'\">Exibir<br>Per\u00EDodo</div> -->\r\n </button>\r\n </td>\r\n\r\n </tr>\r\n</table>", styles: [".area-range-date{height:40px;width:100%}.area-range-date tr td:first-child{width:calc(100% - 35px)}.area-range-date tr td:first-child select{color:#535353;border-radius:3px 0 0 3px!important}.area-range-date tr td:first-child .area-range-datepickers{width:100%}.area-range-date tr td:first-child .area-range-datepickers td{width:50%!important}.area-range-date tr td:last-child{width:35px}.area-range-date tr td:last-child .btn-mode-range-date{width:100%;text-align:center;border:1px solid #ccc;background-color:#fff;font-size:17px;line-height:1;cursor:pointer;color:#6c6c6c;height:40px;border-radius:0 3px 3px 0}.area-range-date tr td:last-child .btn-mode-range-date:focus{color:#403d3d}.active{background-color:#eee!important}.description-period,.description-start{position:relative;left:17px;top:-15px;line-height:0}.description-stop{position:relative;top:-15px;line-height:0}\n"] }]
202
- }], ctorParameters: function () { return []; }, propDecorators: { onChange: [{
203
- type: Output
204
- }], defaultValuePeriodStartStop: [{
205
- type: Input
206
- }], required: [{
207
- type: Input
208
- }], descriptionStart: [{
209
- type: Input
210
- }], descriptionStop: [{
211
- type: Input
212
- }] } });
213
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFuZ2UtZGF0ZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90Y2xvdWQtdWkvc3JjL2xpYi9fbW9kdWxlcy90Y2xvdWQtdWktZmlsdGVycy9jb21wb25lbnRzL3JhbmdlLWRhdGUvcmFuZ2UtZGF0ZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90Y2xvdWQtdWkvc3JjL2xpYi9fbW9kdWxlcy90Y2xvdWQtdWktZmlsdGVycy9jb21wb25lbnRzL3JhbmdlLWRhdGUvcmFuZ2UtZGF0ZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzRixPQUFPLEVBQWUsYUFBYSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7O0FBRS9FLE1BQU8sdUJBQXVCLEdBQVE7SUFDcEMsT0FBTyxFQUFFLGFBQWE7SUFDdEIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQywwQkFBMEIsQ0FBQztJQUN6RCxLQUFLLEVBQUUsSUFBSTtDQUNaLENBQUE7QUFFRCxNQUFNLG1DQUFtQyxHQUFRO0lBQy9DLE9BQU8sRUFBRSxpQkFBaUI7SUFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQywwQkFBMEIsQ0FBQztJQUN6RCxLQUFLLEVBQUUsSUFBSTtDQUNaLENBQUM7QUFFRixNQUFNLElBQUksR0FBRyxHQUFHLEVBQUU7QUFDbEIsQ0FBQyxDQUFDO0FBY0YsTUFBTSxPQUFPLDBCQUEwQjtJQW1CckM7UUFqQkEsV0FBTSxHQUFHLEVBQXFCLENBQUM7UUFFL0Isc0JBQWlCLEdBQVEsRUFBRSxDQUFDO1FBQzVCLDRCQUF1QixHQUFZLEtBQUss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QUFDLFlBQVksQ0FBQyxPQUFPLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQztTQUN0RTtRQUVELElBQUksS0FBSyxLQUFLLFFBQVEsRUFBRTtZQUN0QixXQUFXLEdBQUcsSUFBSSxJQUFJLENBQUUsQ0FBQyxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBRSxHQUFHLENBQUMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxDQUFFLENBQUUsQ0FBQztZQUNoRixXQUFXLEdBQUcsSUFBSSxJQUFJLENBQUUsQ0FBQyxXQUFXLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUUsQ0FBQztTQUN2RDtRQUVELElBQUksS0FBSyxLQUFLLFNBQVMsRUFBRTtZQUN2QixXQUFXLEdBQUcsSUFBSSxJQUFJLENBQUUsQ0FBQyxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBRSxHQUFHLENBQUMsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFFLENBQUUsQ0FBQztZQUNqRixXQUFXLEdBQUcsSUFBSSxJQUFJLENBQUUsQ0FBQyxXQUFXLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUUsQ0FBQztTQUN2RDtRQUVELElBQUksS0FBSyxLQUFLLFNBQVMsRUFBRTtZQUN2QixXQUFXLEdBQUcsSUFBSSxJQUFJLENBQUUsQ0FBQyxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBRSxHQUFHLENBQUMsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFFLENBQUUsQ0FBQztZQUNqRixXQUFXLEdBQUcsSUFBSSxJQUFJLENBQUUsQ0FBQyxXQUFXLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUUsQ0FBQztTQUN2RDtRQUVELElBQUksS0FBSyxLQUFLLGVBQWUsRUFBRTtZQUM3QixXQUFXLEdBQUcsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLFdBQVcsRUFBRSxFQUFFLEdBQUcs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VSxDQUFDO1NBQ3BEO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsY0FBYztRQUNaLElBQUksSUFBSSxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRTtZQUN4RCxPQUFPLElBQUksQ0FBQztTQUNiO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDOytHQTFQVSwwQkFBMEI7bUdBQTFCLDBCQUEwQixnUEFGMUIsQ0FBQyxtQ0FBbUMsRUFBRSx1QkFBdUIsQ0FBQywwQkM1QjNFLDRtRkFxRFE7OzRGRHZCSywwQkFBMEI7a0JBTnRDLFNBQVM7K0JBQ0UsWUFBWSxhQUdYLENBQUMsbUNBQW1DLEVBQUUsdUJBQXVCLENBQUM7MEVBUy9ELFFBQVE7c0JBQWpCLE1BQU07Z0JBRUUsMkJBQTJCO3NCQUFuQyxLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBRUcsZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkluaXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBmb3J3YXJkUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1Db250cm9sLCBOR19WQUxJREFUT1JTLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuXHJcbmNvbnN0ICBDVVNUT01fSU5QVVRfVkFMSURBVE9SUzogYW55ID0geyBcclxuICBwcm92aWRlOiBOR19WQUxJREFUT1JTLCBcclxuICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBUQ2xvdWRVaVJhbmdlRGF0ZUNvbXBvbmVudCksXHJcbiAgbXVsdGk6IHRydWVcclxufVxyXG5cclxuY29uc3QgQ1VTVE9NX0lOUFVUX0NPTlRST0xfVkFMVUVfQUNDRVNTT1I6IGFueSA9IHtcclxuICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcclxuICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBUQ2xvdWRVaVJhbmdlRGF0ZUNvbXBvbmVudCksXHJcbiAgbXVsdGk6IHRydWVcclxufTtcclxuXHJcbmNvbnN0IG5vb3AgPSAoKSA9PiB7XHJcbn07XHJcblxyXG5cclxuaW50ZXJmYWNlIElSZXN1bHREYXRlVGltZXtcclxuICBzdGFydDogYW55O1xyXG4gIHN0b3A6IGFueTtcclxufVxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdyYW5nZS1kYXRlJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vcmFuZ2UtZGF0ZS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vcmFuZ2UtZGF0ZS5jb21wb25lbnQuc2NzcyddLFxyXG4gIHByb3ZpZGVyczogW0NVU1RPTV9JTlBVVF9DT05UUk9MX1ZBTFVFX0FDQ0VTU09SLCBDVVNUT01fSU5QVVRfVkFMSURBVE9SU11cclxufSlcclxuZXhwb3J0IGNsYXNzIFRDbG91ZFVpUmFuZ2VEYXRlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuXHJcbiAgcmVzdWx0ID0ge30gYXMgSVJlc3VsdERhdGVUaW1lO1xyXG5cclxuICBvcHRpb25zX2RhdGVfdGltZTogYW55ID0gW107XHJcbiAgdXNlX3ZhbGlkYXRpb25fcmVxdWlyZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgQE91dHB1dCgpIG9uQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxJUmVzdWx0RGF0ZVRpbWU+KCk7XHJcblxyXG4gIEBJbnB1dCgpIGRlZmF1bHRWYWx1ZVBlcmlvZFN0YXJ0U3RvcDogc3RyaW5nID0gJyc7XHJcbiAgQElucHV0KCkgcmVxdWlyZWQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcclxuXHJcbiAgQElucHV0KCkgZGVzY3JpcHRpb25TdGFydDogc3RyaW5nID0gJyc7XHJcbiAgQElucHV0KCkgZGVzY3JpcHRpb25TdG9wOiBzdHJpbmcgPSAnJztcclxuXHJcbiAgbW9kZTogc3RyaW5nID0gJ3NlbGVjdCc7XHJcblxyXG4gIGlzVmFsaWQgPSBmYWxzZTtcclxuXHJcbiAgY29uc3RydWN0b3IoKSB7IH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLnNldE9wdGlvbnNEYXRlVGltZSgpO1xyXG4gIH1cclxuXHJcbiAgc2V0T3B0aW9uc0RhdGVUaW1lKCl7XHJcbiAgICB0aGlzLm9wdGlvbnNfZGF0ZV90aW1lID0gW1xyXG4gICAgICB7dmFsdWU6JzEtbGFzdC10aW1lJywgZGVzY3JpcHRpb246ICfDmmx0aW1hIDEgaG9yYSd9LFxyXG4gICAgICB7dmFsdWU6JzMtbGFzdC10aW1lJywgZGVzY3JpcHRpb246ICfDmmx0aW1hcyAzIGhvcmFzJ30sXHJcbiAgICAgIHt2YWx1ZTonNi1sYXN0LXRpbWUnLCBkZXNjcmlwdGlvbjogJ8OabHRpbWFzIDYgaG9yYXMnfSxcclxuICAgICAge3ZhbHVlOicyNC1sYXN0LXRpbWUnLCBkZXNjcmlwdGlvbjogJ8OabHRpbWFzIDI0IGhvcmFzJ30sXHJcblxyXG4gICAgICB7dmFsdWU6JzctZGF5cycsIGRlc2NyaXB0aW9uOiAnw5psdGltb3MgNyBkaWFzJ30sXHJcbiAgICAgIHt2YWx1ZTonMTUtZGF5cycsIGRlc2NyaXB0aW9uOiAnw5psdGltb3MgMTUgZGlhcyd9LFxyXG4gICAgICB7dmFsdWU6JzMwLWRheXMnLCBkZXNjcmlwdGlvbjogJ8OabHRpbW9zIDMwIGRpYXMnfSxcclxuICAgICAge3ZhbHVlOidjdXJyZW50LW1vbnRoJywgZGVzY3JpcHRpb246ICdNw6pzIGF0dWFsJ30sXHJcbiAgICAgIHt2YWx1ZTonY3VycmVudC15ZWFyJywgZGVzY3JpcHRpb246ICdBbm8gYXR1YWwnfVxyXG4gICAgXVxyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIGlmKCB0aGlzLmRlZmF1bHRWYWx1ZVBlcmlvZFN0YXJ0U3RvcCAhPT0gJycgKXtcclxuICAgICAgICB0aGlzLm9uQ2hhbmdlT3B0aW9uc0RhdGVUaW1lKCB0aGlzLmRlZmF1bHRWYWx1ZVBlcmlvZFN0YXJ0U3RvcCApO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIFxyXG4gIH1cclxuXHJcbiAgb25DaGFuZ2VPcHRpb25zRGF0ZVRpbWUoZXZlbnQ/OiBhbnkpe1xyXG4gICAgdGhpcy5pc1ZhbGlkID0gZmFsc2U7XHJcbiAgICAvLyB0aGlzLmRlc2NyaXB0aW9uX29wdGlvbnNfZGF0ZV90aW1lID0gJyc7XHJcbiAgICAvLyB0aGlzLnZhbHVlX29wdGlvbnNfZGF0ZV90aW1lID0gJyc7XHJcbiAgICBldmVudCA9IChldmVudCAmJiBldmVudC52YWx1ZSkgPyBgJHtldmVudC52YWx1ZX1gIDogYCR7ZXZlbnR9YDtcclxuXHJcbiAgICBsZXQgbm93ID0gbmV3IERhdGUoKTtcclxuICAgIGxldCBjdXJyZW50X2RhdGUgPSBuZXcgRGF0ZSgpO1xyXG4gICAgbGV0IGZpbHRlcl9kYXRlOiBhbnkgPSB1bmRlZmluZWQ7XHJcblxyXG5cclxuICAgIGlmKCBldmVudCA9PT0gJzEtbGFzdC10aW1lJyApe1xyXG4gICAgICBmaWx0ZXJfZGF0ZSA9IG5ldyBEYXRlKGN1cnJlbnRfZGF0ZS5nZXRUaW1lKCkgLSAxICogNjAgKiA2MCAqIDEwMDApO1xyXG4gICAgfVxyXG5cclxuICAgIGlmKCBldmVudCA9PT0gJzMtbGFzdC10aW1lJyApe1xyXG4gICAgICBmaWx0ZXJfZGF0ZSA9IG5ldyBEYXRlKGN1cnJlbnRfZGF0ZS5nZXRUaW1lKCkgLSAzICogNjAgKiA2MCAqIDEwMDApO1xyXG4gICAgfVxyXG5cclxuICAgIGlmKCBldmVudCA9PT0gJzYtbGFzdC10aW1lJyApe1xyXG4gICAgICBmaWx0ZXJfZGF0ZSA9IG5ldyBEYXRlKGN1cnJlbnRfZGF0ZS5nZXRUaW1lKCkgLSA2ICogNjAgKiA2MCAqIDEwMDApO1xyXG4gICAgfVxyXG5cclxuICAgIGlmKCBldmVudCA9PT0gJzI0LWxhc3QtdGltZScgKXtcclxuICAgICAgZmlsdGVyX2RhdGUgPSBuZXcgRGF0ZShjdXJyZW50X2RhdGUuZ2V0VGltZSgpIC0gMjQgKiA2MCAqIDYwICogMTAwMCk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYoIGV2ZW50ID09PSAnNy1kYXlzJyApe1xyXG4gICAgICBmaWx0ZXJfZGF0ZSA9IG5ldyBEYXRlKCAobmV3IERhdGUoY3VycmVudF9kYXRlKSkuc2V0RGF0ZSggbm93LmdldERhdGUoKSAtIDcgKSApOyAgXHJcbiAgICAgIGZpbHRlcl9kYXRlID0gbmV3IERhdGUoIChmaWx0ZXJfZGF0ZSkuc2V0U2Vjb25kcygwKSApOyAgICAgIFxyXG4gICAgfVxyXG5cclxuICAgIGlmKCBldmVudCA9PT0gJzE1LWRheXMnICl7XHJcbiAgICAgIGZpbHRlcl9kYXRlID0gbmV3IERhdGUoIChuZXcgRGF0ZShjdXJyZW50X2RhdGUpKS5zZXREYXRlKCBub3cuZ2V0RGF0ZSgpIC0gMTUgKSApO1xyXG4gICAgICBmaWx0ZXJfZGF0ZSA9IG5ldyBEYXRlKCAoZmlsdGVyX2RhdGUpLnNldFNlY29uZHMoMCkgKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiggZXZlbnQgPT09ICczMC1kYXlzJyApe1xyXG4gICAgICBmaWx0ZXJfZGF0ZSA9IG5ldyBEYXRlKCAobmV3IERhdGUoY3VycmVudF9kYXRlKSkuc2V0RGF0ZSggbm93LmdldERhdGUoKSAtIDMwICkgKTtcclxuICAgICAgZmlsdGVyX2RhdGUgPSBuZXcgRGF0ZSggKGZpbHRlcl9kYXRlKS5zZXRTZWNvbmRzKDApICk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYoIGV2ZW50ID09PSAnY3VycmVudC1tb250aCcgKXtcclxuICAgICAgZmlsdGVyX2RhdGUgPSBuZXcgRGF0ZShub3cuZ2V0RnVsbFllYXIoKSwgbm93LmdldE1vbnRoKCksIDEpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmKCBldmVudCA9PT0gJ2N1cnJlbnQteWVhcicgKXtcclxuICAgICAgZmlsdGVyX2RhdGUgPSBuZXcgRGF0ZShub3cuZ2V0RnVsbFllYXIoKSwgMCwgMSk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYoZmlsdGVyX2RhdGUpeyAgICAgICAgXHJcbiAgICAgIHRoaXMucmVzdWx0ID0ge1xyXG4gICAgICAgIHN0YXJ0OiB0aGlzLmdldFRyYW5zZm9ybURhdGUoZmlsdGVyX2RhdGUpLFxyXG4gICAgICAgIHN0b3A6IHRoaXMuZ2V0VHJhbnNmb3JtRGF0ZShub3cpXHJcbiAgICAgIH0gYXMgSVJlc3VsdERhdGVUaW1lO1xyXG5cclxuICAgICAgdGhpcy5vbkNoYW5nZS5lbWl0KHRoaXMucmVzdWx0KTtcclxuICAgICAgdGhpcy5pc1ZhbGlkID0gdHJ1ZTtcclxuICAgIH1lbHNle1xyXG4gICAgICAgXHJcbiAgICAgIHRoaXMucmVzdWx0ID0ge30gYXMgSVJlc3VsdERhdGVUaW1lO1xyXG4gICAgICB0aGlzLm9uQ2hhbmdlLmVtaXQodGhpcy5yZXN1bHQpO1xyXG4gICAgICB0aGlzLmlzVmFsaWQgPSBmYWxzZTtcclxuICAgICAgXHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcbiAgZ2V0VHJhbnNmb3JtRGF0ZShkdDogYW55KXtcclxuICAgIC8vcmV0dXJuIChkdCkudG9Mb2NhbGVTdHJpbmcoJ3B0LUJSJyk7XHJcbiAgICByZXR1cm4gZHQ7XHJcbiAgICAvKlxyXG4gICAgY29uc3QgYW5vID0gZHQuZ2V0RnVsbFllYXIoKTtcclxuICAgIGNvbnN0IG1lcyA9IGR0LmdldE1vbnRoKCk7XHJcbiAgICBjb25zdCBkaWEgPSBkdC5nZXREYXRlKCk7XHJcbiAgICBjb25zdCBob3JhcyA9IGR0LmdldEhvdXJzKCk7XHJcbiAgICBjb25zdCBtaW51dG9zID0gZHQuZ2V0TWludXRlcygpO1xyXG4gICAgcmV0dXJuIG5ldyBEYXRlKERhdGUuVVRDKGFubywgbWVzLCBkaWEsIGhvcmFzLCBtaW51dG9zKSk7XHJcbiAgICAqL1xyXG4gIH1cclxuXHJcbiAgb25DaGFuZ2VTdGFydERhdGVUaW1lKGV2ZW50OiBhbnkpe1xyXG4gICAgdGhpcy5pc1ZhbGlkID0gZmFsc2U7XHJcbiAgICBpZiggdGhpcy5yZXN1bHQgJiYgdGhpcy5yZXN1bHQuc3RhcnQpe1xyXG4gICAgICB0aGlzLnJlc3VsdC5zdGFydCA9IGV2ZW50LnZhbHVlID0gdGhpcy5nZXRUcmFuc2Zvcm1EYXRlKGV2ZW50LnZhbHVlKTtcclxuICAgICAgdGhpcy5vbkNoYW5nZS5lbWl0KHRoaXMucmVzdWx0KTtcclxuICAgICAgdGhpcy5pc1ZhbGlkID0gdHJ1ZTtcclxuICAgIH1lbHNle1xyXG4gICAgICB0aGlzLnJlc3VsdCA9IHt9IGFzIElSZXN1bHREYXRlVGltZTtcclxuICAgICAgdGhpcy5vbkNoYW5nZS5lbWl0KHRoaXMucmVzdWx0KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uQ2hhbmdlU3RvcERhdGVUaW1lKGV2ZW50OiBhbnkpe1xyXG4gICAgdGhpcy5pc1ZhbGlkID0gZmFsc2U7XHJcbiAgICBpZiggdGhpcy5yZXN1bHQgJiYgdGhpcy5yZXN1bHQuc3RvcCApe1xyXG4gICAgICB0aGlzLnJlc3VsdC5zdG9wID0gZXZlbnQudmFsdWUgPSB0aGlzLmdldFRyYW5zZm9ybURhdGUoZXZlbnQudmFsdWUpO1xyXG4gICAgICB0aGlzLm9uQ2hhbmdlLmVtaXQodGhpcy5yZXN1bHQpO1xyXG4gICAgICB0aGlzLmlzVmFsaWQgPSB0cnVlO1xyXG4gICAgfWVsc2V7XHJcbiAgICAgIHRoaXMucmVzdWx0ID0ge30gYXMgSVJlc3VsdERhdGVUaW1lO1xyXG4gICAgICB0aGlzLm9uQ2hhbmdlLmVtaXQodGhpcy5yZXN1bHQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgdG9nZ2xlKCl7XHJcbiAgICBjb25zdCBtb2RlID0gKCBgJHt0aGlzLm1vZGV9YCA9PT0gJ3NlbGVjdCcgKSA/ICdkYXRlcGlja2VycycgOiAnc2VsZWN0JztcclxuICAgIHRoaXMuZGVmYXVsdFZhbHVlUGVyaW9kU3RhcnRTdG9wID0gJyc7XHJcbiAgICB0aGlzLmlzVmFsaWQgPSBmYWxzZTtcclxuICAgIHRoaXMucmVzdWx0ID0ge30gYXMgSVJlc3VsdERhdGVUaW1lO1xyXG4gICAgdGhpcy5tb2RlID0gbW9kZTtcclxuICAgIHRoaXMub25DaGFuZ2UuZW1pdCh0aGlzLnJlc3VsdCk7XHJcbiAgfVxyXG5cclxuXHJcblxyXG5cclxuXHJcblxyXG5cclxuXHJcblxyXG5cclxuXHJcblxyXG5cclxuXHJcblxyXG5cclxuXHJcblxyXG5cclxuXHJcblxyXG5cclxuXHJcblxyXG5cclxuXHJcblxyXG5cclxuXHJcblxyXG5cclxuXHJcblxyXG5cclxuXHJcblxyXG4gIGlubmVyVmFsdWU6IGFueSB8IHVuZGVmaW5lZDtcclxuICAvL1BsYWNlaG9sZGVycyBmb3IgdGhlIGNhbGxiYWNrcyB3aGljaCBhcmUgbGF0ZXIgcHJvdmlkZXNkXHJcbiAgLy9ieSB0aGUgQ29udHJvbCBWYWx1ZSBBY2Nlc3NvclxyXG4gIHByaXZhdGUgb25Ub3VjaGVkQ2FsbGJhY2s6ICgpID0+IHZvaWQgPSBub29wO1xyXG4gIHByaXZhdGUgb25DaGFuZ2VDYWxsYmFjazogKF86IGFueSkgPT4gdm9pZCA9IG5vb3A7XHJcblxyXG4gIC8vZ2V0IGFjY2Vzc29yXHJcbiAgZ2V0IHZhbHVlKCk6IGFueSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmlubmVyVmFsdWU7XHJcbiAgfTtcclxuXHJcbiAgLy9zZXQgYWNjZXNzb3IgaW5jbHVkaW5nIGNhbGwgdGhlIG9uY2hhbmdlIGNhbGxiYWNrXHJcbiAgc2V0IHZhbHVlKHY6IGFueSkge1xyXG4gICAgaWYgKHYgIT09IHRoaXMuaW5uZXJWYWx1ZSkge1xyXG4gICAgICB0aGlzLmlubmVyVmFsdWUgPSB2OyAgICAgIFxyXG4gICAgICB0aGlzLm9uQ2hhbmdlQ2FsbGJhY2sodik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvL1NldCB0b3VjaGVkIG9uIGJsdXJcclxuICBvbkJsdXIoKSB7XHJcbiAgICB0aGlzLm9uVG91Y2hlZENhbGxiYWNrKCk7XHJcbiAgfVxyXG5cclxuICAvL0Zyb20gQ29udHJvbFZhbHVlQWNjZXNzb3IgaW50ZXJmYWNlXHJcbiAgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KSB7XHJcbiAgICBpZiAodmFsdWUgIT09IHRoaXMuaW5uZXJWYWx1ZSkge1xyXG4gICAgICB0aGlzLmlubmVyVmFsdWUgPSB2YWx1ZTtcclxuICAgICAgLy90aGlzLnRvU2V0RGVmYXVsdCh2YWx1ZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvL0Zyb20gQ29udHJvbFZhbHVlQWNjZXNzb3IgaW50ZXJmYWNlXHJcbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KSB7XHJcbiAgICB0aGlzLm9uQ2hhbmdlQ2FsbGJhY2sgPSBmbjtcclxuICB9XHJcblxyXG4gIC8vRnJvbSBDb250cm9sVmFsdWVBY2Nlc3NvciBpbnRlcmZhY2VcclxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KSB7XHJcbiAgICB0aGlzLm9uVG91Y2hlZENhbGxiYWNrID0gZm47XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgdmFsaWRhdGUoYzogRm9ybUNvbnRyb2wpOiBhbnkge1xyXG4gICAgaWYoIGMgJiYgKCB0eXBlb2YgdGhpcy5yZXF1aXJlZCAhPT0gJ3VuZGVmaW5lZCcgKSApe1xyXG4gICAgICB0aGlzLnVzZV92YWxpZGF0aW9uX3JlcXVpcmVkID0gdHJ1ZTtcclxuICAgICAgcmV0dXJuICh0aGlzLmNoZWNrX2lzX3ZhbGlkKCkpID8gbnVsbCA6ICdyZXF1aXJlZCc7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG4gIGNoZWNrX2lzX3ZhbGlkKCk6IGJvb2xlYW57XHJcbiAgICBpZiggdGhpcy5yZXN1bHQgJiYgdGhpcy5yZXN1bHQuc3RhcnQgJiYgdGhpcy5yZXN1bHQuc3RvcCApe1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG59XHJcbiIsIjx0YWJsZSBjbGFzcz1cInRjbG91ZC11aS1maWx0ZXJzLXJhbmdlLWRhdGUgYXJlYS1yYW5nZS1kYXRlXCI+XHJcbiAgICA8dHI+XHJcblxyXG4gICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cIm1vZGUgPT09ICdzZWxlY3QnXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGVzY3JpcHRpb24tcGVyaW9kXCI+UGVyw61vZG88L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxzZWxlY3QgbmFtZT1cInBlcmlvZG9cIiBjbGFzcz1cInRjLWZvcm0tY29udHJvbFwiIChjaGFuZ2UpPVwib25DaGFuZ2VPcHRpb25zRGF0ZVRpbWUoJGV2ZW50LnRhcmdldClcIiBbKG5nTW9kZWwpXT1cImRlZmF1bHRWYWx1ZVBlcmlvZFN0YXJ0U3RvcFwiICA+XHJcbiAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIlwiPjwvb3B0aW9uPiBcclxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBpdGVtIG9mIG9wdGlvbnNfZGF0ZV90aW1lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gW3ZhbHVlXT1cIml0ZW0udmFsdWVcIj57eyBpdGVtLmRlc2NyaXB0aW9uIH19PC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8L3NlbGVjdD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJtb2RlID09PSAnZGF0ZXBpY2tlcnMnXCI+XHJcblxyXG4gICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPVwiYXJlYS1yYW5nZS1kYXRlcGlja2Vyc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRlc2NyaXB0aW9uLXN0YXJ0XCI+e3sgZGVzY3JpcHRpb25TdGFydCB9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRjbG91ZC11aS1kYXRlcGlja2VyLXRpbWUgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI19pbnB1dF9zdGFydCBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInJlc3VsdC5zdGFydFwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9XCJpbnB1dF9zdGFydFwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChldmVudENoYW5nZSk9XCJvbkNoYW5nZVN0YXJ0RGF0ZVRpbWUoX2lucHV0X3N0YXJ0KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90Y2xvdWQtdWktZGF0ZXBpY2tlci10aW1lPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGVzY3JpcHRpb24tc3RvcFwiPnt7IGRlc2NyaXB0aW9uU3RvcCB9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRjbG91ZC11aS1kYXRlcGlja2VyLXRpbWUgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI19pbnB1dF9zdG9wXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJyZXN1bHQuc3RvcFwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9XCJpbnB1dF9zdG9wXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGV2ZW50Q2hhbmdlKT1cIm9uQ2hhbmdlU3RvcERhdGVUaW1lKF9pbnB1dF9zdG9wKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90Y2xvdWQtdWktZGF0ZXBpY2tlci10aW1lPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICA8L3RhYmxlPlxyXG5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC90ZD5cclxuXHJcbiAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuLW1vZGUtcmFuZ2UtZGF0ZVwiIFtjbGFzcy5hY3RpdmVdPVwibW9kZSA9PT0gJ3NlbGVjdCdcIiAoY2xpY2spPVwidG9nZ2xlKClcIiB0eXBlPVwiYnV0dG9uXCI+XHJcblxyXG4gICAgICAgICAgICAgICAgPGkgKm5nSWY9XCJtb2RlID09PSAnc2VsZWN0J1wiIGNsYXNzPVwiZmFyIGZhLWNhbGVuZGFyLWFsdFwiIHRpdGxlPVwiQWx0ZXJhciBwYXJhIGNhbGVuZMOhcmlvXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgPGkgKm5nSWY9XCJtb2RlICE9PSAnc2VsZWN0J1wiIGNsYXNzPVwiZmFzIGZhLWNhbGVuZGFyLXdlZWtcIiB0aXRsZT1cIlNlbGVjaW9uYXIgcGVyw61vZG9cIj48L2k+XHJcblxyXG4gICAgICAgICAgICAgICAgPCEtLSA8ZGl2ICpuZ0lmPVwibW9kZSA9PT0gJ3NlbGVjdCdcIj5FeGliaXI8YnI+Q2FsZW5kw6FyaW88L2Rpdj4gLS0+XHJcbiAgICAgICAgICAgICAgICA8IS0tIDxkaXYgKm5nSWY9XCJtb2RlICE9PSAnc2VsZWN0J1wiPkV4aWJpcjxicj5QZXLDrW9kbzwvZGl2PiAtLT5cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPC90ZD5cclxuXHJcbiAgICA8L3RyPlxyXG48L3RhYmxlPiJdfQ==
1
+ import { Component, Input, Output, EventEmitter, forwardRef } from '@angular/core';
2
+ import { NG_VALIDATORS, NG_VALUE_ACCESSOR } from '@angular/forms';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "@angular/common";
5
+ import * as i2 from "@angular/forms";
6
+ import * as i3 from "../../../tcloud-ui-datepicker-time/tcloud-ui-datepicker-time.component";
7
+ const CUSTOM_INPUT_VALIDATORS = {
8
+ provide: NG_VALIDATORS,
9
+ useExisting: forwardRef(() => TCloudUiRangeDateComponent),
10
+ multi: true
11
+ };
12
+ const CUSTOM_INPUT_CONTROL_VALUE_ACCESSOR = {
13
+ provide: NG_VALUE_ACCESSOR,
14
+ useExisting: forwardRef(() => TCloudUiRangeDateComponent),
15
+ multi: true
16
+ };
17
+ const noop = () => {
18
+ };
19
+ export class TCloudUiRangeDateComponent {
20
+ constructor() {
21
+ this.result = {};
22
+ this.options_date_time = [];
23
+ this.use_validation_required = false;
24
+ this.onChange = new EventEmitter();
25
+ this.defaultValuePeriodStartStop = '';
26
+ this.descriptionStart = '';
27
+ this.descriptionStop = '';
28
+ this.mode = 'select';
29
+ this.isValid = false;
30
+ //Placeholders for the callbacks which are later providesd
31
+ //by the Control Value Accessor
32
+ this.onTouchedCallback = noop;
33
+ this.onChangeCallback = noop;
34
+ }
35
+ ngOnInit() {
36
+ this.setOptionsDateTime();
37
+ }
38
+ setOptionsDateTime() {
39
+ this.options_date_time = [
40
+ { value: '1-last-time', description: 'Última 1 hora' },
41
+ { value: '3-last-time', description: 'Últimas 3 horas' },
42
+ { value: '6-last-time', description: 'Últimas 6 horas' },
43
+ { value: '24-last-time', description: 'Últimas 24 horas' },
44
+ { value: '7-days', description: 'Últimos 7 dias' },
45
+ { value: '15-days', description: 'Últimos 15 dias' },
46
+ { value: '30-days', description: 'Últimos 30 dias' },
47
+ { value: 'current-month', description: 'Mês atual' },
48
+ { value: 'current-year', description: 'Ano atual' }
49
+ ];
50
+ setTimeout(() => {
51
+ if (this.defaultValuePeriodStartStop !== '') {
52
+ this.onChangeOptionsDateTime(this.defaultValuePeriodStartStop);
53
+ }
54
+ });
55
+ }
56
+ onChangeOptionsDateTime(event) {
57
+ this.isValid = false;
58
+ // this.description_options_date_time = '';
59
+ // this.value_options_date_time = '';
60
+ event = (event && event.value) ? `${event.value}` : `${event}`;
61
+ let now = new Date();
62
+ let current_date = new Date();
63
+ let filter_date = undefined;
64
+ if (event === '1-last-time') {
65
+ filter_date = new Date(current_date.getTime() - 1 * 60 * 60 * 1000);
66
+ }
67
+ if (event === '3-last-time') {
68
+ filter_date = new Date(current_date.getTime() - 3 * 60 * 60 * 1000);
69
+ }
70
+ if (event === '6-last-time') {
71
+ filter_date = new Date(current_date.getTime() - 6 * 60 * 60 * 1000);
72
+ }
73
+ if (event === '24-last-time') {
74
+ filter_date = new Date(current_date.getTime() - 24 * 60 * 60 * 1000);
75
+ }
76
+ if (event === '7-days') {
77
+ filter_date = new Date((new Date(current_date)).setDate(now.getDate() - 7));
78
+ filter_date = new Date((filter_date).setSeconds(0));
79
+ }
80
+ if (event === '15-days') {
81
+ filter_date = new Date((new Date(current_date)).setDate(now.getDate() - 15));
82
+ filter_date = new Date((filter_date).setSeconds(0));
83
+ }
84
+ if (event === '30-days') {
85
+ filter_date = new Date((new Date(current_date)).setDate(now.getDate() - 30));
86
+ filter_date = new Date((filter_date).setSeconds(0));
87
+ }
88
+ if (event === 'current-month') {
89
+ filter_date = new Date(now.getFullYear(), now.getMonth(), 1);
90
+ }
91
+ if (event === 'current-year') {
92
+ filter_date = new Date(now.getFullYear(), 0, 1);
93
+ }
94
+ if (filter_date) {
95
+ this.result = {
96
+ start: this.getTransformDate(filter_date),
97
+ stop: this.getTransformDate(now)
98
+ };
99
+ this.onChange.emit(this.result);
100
+ this.isValid = true;
101
+ }
102
+ else {
103
+ this.result = {};
104
+ this.onChange.emit(this.result);
105
+ this.isValid = false;
106
+ }
107
+ }
108
+ getTransformDate(dt) {
109
+ //return (dt).toLocaleString('pt-BR');
110
+ return dt;
111
+ /*
112
+ const ano = dt.getFullYear();
113
+ const mes = dt.getMonth();
114
+ const dia = dt.getDate();
115
+ const horas = dt.getHours();
116
+ const minutos = dt.getMinutes();
117
+ return new Date(Date.UTC(ano, mes, dia, horas, minutos));
118
+ */
119
+ }
120
+ onChangeStartDateTime(event) {
121
+ this.isValid = false;
122
+ if (this.result && this.result.start) {
123
+ this.result.start = event.value = this.getTransformDate(event.value);
124
+ this.onChange.emit(this.result);
125
+ this.isValid = true;
126
+ }
127
+ else {
128
+ this.result = {};
129
+ this.onChange.emit(this.result);
130
+ }
131
+ }
132
+ onChangeStopDateTime(event) {
133
+ this.isValid = false;
134
+ if (this.result && this.result.stop) {
135
+ this.result.stop = event.value = this.getTransformDate(event.value);
136
+ this.onChange.emit(this.result);
137
+ this.isValid = true;
138
+ }
139
+ else {
140
+ this.result = {};
141
+ this.onChange.emit(this.result);
142
+ }
143
+ }
144
+ toggle() {
145
+ const mode = (`${this.mode}` === 'select') ? 'datepickers' : 'select';
146
+ this.defaultValuePeriodStartStop = '';
147
+ this.isValid = false;
148
+ this.result = {};
149
+ this.mode = mode;
150
+ this.onChange.emit(this.result);
151
+ }
152
+ //get accessor
153
+ get value() {
154
+ return this.innerValue;
155
+ }
156
+ ;
157
+ //set accessor including call the onchange callback
158
+ set value(v) {
159
+ if (v !== this.innerValue) {
160
+ this.innerValue = v;
161
+ this.onChangeCallback(v);
162
+ }
163
+ }
164
+ //Set touched on blur
165
+ onBlur() {
166
+ this.onTouchedCallback();
167
+ }
168
+ //From ControlValueAccessor interface
169
+ writeValue(value) {
170
+ if (value !== this.innerValue) {
171
+ this.innerValue = value;
172
+ //this.toSetDefault(value);
173
+ }
174
+ }
175
+ //From ControlValueAccessor interface
176
+ registerOnChange(fn) {
177
+ this.onChangeCallback = fn;
178
+ }
179
+ //From ControlValueAccessor interface
180
+ registerOnTouched(fn) {
181
+ this.onTouchedCallback = fn;
182
+ }
183
+ validate(c) {
184
+ if (c && (typeof this.required !== 'undefined')) {
185
+ this.use_validation_required = true;
186
+ return (this.check_is_valid()) ? null : 'required';
187
+ }
188
+ return null;
189
+ }
190
+ check_is_valid() {
191
+ if (this.result && this.result.start && this.result.stop) {
192
+ return true;
193
+ }
194
+ return false;
195
+ }
196
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: TCloudUiRangeDateComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
197
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.0", type: TCloudUiRangeDateComponent, selector: "range-date", inputs: { defaultValuePeriodStartStop: "defaultValuePeriodStartStop", required: "required", descriptionStart: "descriptionStart", descriptionStop: "descriptionStop" }, outputs: { onChange: "onChange" }, providers: [CUSTOM_INPUT_CONTROL_VALUE_ACCESSOR, CUSTOM_INPUT_VALIDATORS], ngImport: i0, template: "<table class=\"tcloud-ui-filters-range-date area-range-date\">\r\n <tr>\r\n\r\n <td>\r\n <div *ngIf=\"mode === 'select'\">\r\n <div class=\"description-period\">Per\u00EDodo</div>\r\n <select name=\"periodo\" class=\"tc-form-control\" (change)=\"onChangeOptionsDateTime($event.target)\" [(ngModel)]=\"defaultValuePeriodStartStop\" >\r\n <option value=\"\"></option> \r\n <ng-container *ngFor=\"let item of options_date_time\">\r\n <option [value]=\"item.value\">{{ item.description }}</option>\r\n </ng-container>\r\n </select>\r\n </div>\r\n <div *ngIf=\"mode === 'datepickers'\">\r\n\r\n <table class=\"area-range-datepickers\">\r\n <tr>\r\n <td>\r\n <div class=\"description-start\">{{ descriptionStart }}</div>\r\n <tcloud-ui-datepicker-time \r\n #_input_start \r\n [(ngModel)]=\"result.start\" \r\n name=\"input_start\" \r\n (eventChange)=\"onChangeStartDateTime(_input_start)\">\r\n </tcloud-ui-datepicker-time>\r\n </td>\r\n <td>\r\n <div class=\"description-stop\">{{ descriptionStop }}</div>\r\n <tcloud-ui-datepicker-time \r\n #_input_stop\r\n [(ngModel)]=\"result.stop\" \r\n name=\"input_stop\" \r\n (eventChange)=\"onChangeStopDateTime(_input_stop)\">\r\n </tcloud-ui-datepicker-time>\r\n </td>\r\n </tr>\r\n </table>\r\n\r\n </div>\r\n </td>\r\n\r\n <td>\r\n <button class=\"btn-mode-range-date\" [class.active]=\"mode === 'select'\" (click)=\"toggle()\" type=\"button\">\r\n\r\n <i *ngIf=\"mode === 'select'\" class=\"far fa-calendar-alt\" title=\"Alterar para calend\u00E1rio\"></i>\r\n <i *ngIf=\"mode !== 'select'\" class=\"fas fa-calendar-week\" title=\"Selecionar per\u00EDodo\"></i>\r\n\r\n <!-- <div *ngIf=\"mode === 'select'\">Exibir<br>Calend\u00E1rio</div> -->\r\n <!-- <div *ngIf=\"mode !== 'select'\">Exibir<br>Per\u00EDodo</div> -->\r\n </button>\r\n </td>\r\n\r\n </tr>\r\n</table>", styles: [".area-range-date{height:40px;width:100%}.area-range-date tr td:first-child{width:calc(100% - 35px)}.area-range-date tr td:first-child select{color:#535353;border-radius:3px 0 0 3px!important}.area-range-date tr td:first-child .area-range-datepickers{width:100%}.area-range-date tr td:first-child .area-range-datepickers td{width:50%!important}.area-range-date tr td:last-child{width:35px}.area-range-date tr td:last-child .btn-mode-range-date{width:100%;text-align:center;border:1px solid #ccc;background-color:#fff;font-size:17px;line-height:1;cursor:pointer;color:#6c6c6c;height:40px;border-radius:0 3px 3px 0}.area-range-date tr td:last-child .btn-mode-range-date:focus{color:#403d3d}.active{background-color:#eee!important}.description-period,.description-start{position:relative;left:17px;top:-15px;line-height:0}.description-stop{position:relative;top:-15px;line-height:0}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i3.TCloudUiDatepickerTimeComponent, selector: "tcloud-ui-datepicker-time", inputs: ["ngModel", "minDate", "maxDate", "useOptionsDateTime"], outputs: ["ngModelChange", "onChange", "eventChange"] }] }); }
198
+ }
199
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: TCloudUiRangeDateComponent, decorators: [{
200
+ type: Component,
201
+ args: [{ selector: 'range-date', providers: [CUSTOM_INPUT_CONTROL_VALUE_ACCESSOR, CUSTOM_INPUT_VALIDATORS], template: "<table class=\"tcloud-ui-filters-range-date area-range-date\">\r\n <tr>\r\n\r\n <td>\r\n <div *ngIf=\"mode === 'select'\">\r\n <div class=\"description-period\">Per\u00EDodo</div>\r\n <select name=\"periodo\" class=\"tc-form-control\" (change)=\"onChangeOptionsDateTime($event.target)\" [(ngModel)]=\"defaultValuePeriodStartStop\" >\r\n <option value=\"\"></option> \r\n <ng-container *ngFor=\"let item of options_date_time\">\r\n <option [value]=\"item.value\">{{ item.description }}</option>\r\n </ng-container>\r\n </select>\r\n </div>\r\n <div *ngIf=\"mode === 'datepickers'\">\r\n\r\n <table class=\"area-range-datepickers\">\r\n <tr>\r\n <td>\r\n <div class=\"description-start\">{{ descriptionStart }}</div>\r\n <tcloud-ui-datepicker-time \r\n #_input_start \r\n [(ngModel)]=\"result.start\" \r\n name=\"input_start\" \r\n (eventChange)=\"onChangeStartDateTime(_input_start)\">\r\n </tcloud-ui-datepicker-time>\r\n </td>\r\n <td>\r\n <div class=\"description-stop\">{{ descriptionStop }}</div>\r\n <tcloud-ui-datepicker-time \r\n #_input_stop\r\n [(ngModel)]=\"result.stop\" \r\n name=\"input_stop\" \r\n (eventChange)=\"onChangeStopDateTime(_input_stop)\">\r\n </tcloud-ui-datepicker-time>\r\n </td>\r\n </tr>\r\n </table>\r\n\r\n </div>\r\n </td>\r\n\r\n <td>\r\n <button class=\"btn-mode-range-date\" [class.active]=\"mode === 'select'\" (click)=\"toggle()\" type=\"button\">\r\n\r\n <i *ngIf=\"mode === 'select'\" class=\"far fa-calendar-alt\" title=\"Alterar para calend\u00E1rio\"></i>\r\n <i *ngIf=\"mode !== 'select'\" class=\"fas fa-calendar-week\" title=\"Selecionar per\u00EDodo\"></i>\r\n\r\n <!-- <div *ngIf=\"mode === 'select'\">Exibir<br>Calend\u00E1rio</div> -->\r\n <!-- <div *ngIf=\"mode !== 'select'\">Exibir<br>Per\u00EDodo</div> -->\r\n </button>\r\n </td>\r\n\r\n </tr>\r\n</table>", styles: [".area-range-date{height:40px;width:100%}.area-range-date tr td:first-child{width:calc(100% - 35px)}.area-range-date tr td:first-child select{color:#535353;border-radius:3px 0 0 3px!important}.area-range-date tr td:first-child .area-range-datepickers{width:100%}.area-range-date tr td:first-child .area-range-datepickers td{width:50%!important}.area-range-date tr td:last-child{width:35px}.area-range-date tr td:last-child .btn-mode-range-date{width:100%;text-align:center;border:1px solid #ccc;background-color:#fff;font-size:17px;line-height:1;cursor:pointer;color:#6c6c6c;height:40px;border-radius:0 3px 3px 0}.area-range-date tr td:last-child .btn-mode-range-date:focus{color:#403d3d}.active{background-color:#eee!important}.description-period,.description-start{position:relative;left:17px;top:-15px;line-height:0}.description-stop{position:relative;top:-15px;line-height:0}\n"] }]
202
+ }], ctorParameters: () => [], propDecorators: { onChange: [{
203
+ type: Output
204
+ }], defaultValuePeriodStartStop: [{
205
+ type: Input
206
+ }], required: [{
207
+ type: Input
208
+ }], descriptionStart: [{
209
+ type: Input
210
+ }], descriptionStop: [{
211
+ type: Input
212
+ }] } });
213
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFuZ2UtZGF0ZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90Y2xvdWQtdWkvc3JjL2xpYi9fbW9kdWxlcy90Y2xvdWQtdWktZmlsdGVycy9jb21wb25lbnRzL3JhbmdlLWRhdGUvcmFuZ2UtZGF0ZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90Y2xvdWQtdWkvc3JjL2xpYi9fbW9kdWxlcy90Y2xvdWQtdWktZmlsdGVycy9jb21wb25lbnRzL3JhbmdlLWRhdGUvcmFuZ2UtZGF0ZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzRixPQUFPLEVBQWUsYUFBYSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7O0FBRS9FLE1BQU8sdUJBQXVCLEdBQVE7SUFDcEMsT0FBTyxFQUFFLGFBQWE7SUFDdEIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQywwQkFBMEIsQ0FBQztJQUN6RCxLQUFLLEVBQUUsSUFBSTtDQUNaLENBQUE7QUFFRCxNQUFNLG1DQUFtQyxHQUFRO0lBQy9DLE9BQU8sRUFBRSxpQkFBaUI7SUFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQywwQkFBMEIsQ0FBQztJQUN6RCxLQUFLLEVBQUUsSUFBSTtDQUNaLENBQUM7QUFFRixNQUFNLElBQUksR0FBRyxHQUFHLEVBQUU7QUFDbEIsQ0FBQyxDQUFDO0FBY0YsTUFBTSxPQUFPLDBCQUEwQjtJQW1CckM7UUFqQkEsV0FBTSxHQUFHLEVBQXFCLENBQUM7UUFFL0Isc0JBQWlCLEdBQVEsRUFBRSxDQUFDO1FBQzVCLDRCQUF1QixHQUFZLEtBQUss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NUIsSUFBSSxDQUFDLElBQUksQ0FBRSxPQUFPLElBQUksQ0FBQyxRQUFRLEtBQUssV0FBVyxDQUFFLEVBQUUsQ0FBQztZQUNsRCxJQUFJLENBQUMsdUJBQXVCLEdBQUcsSUFBSSxDQUFDO1lBQ3BDLE9BQU8sQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUM7UUFDckQsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELGNBQWM7UUFDWixJQUFJLElBQUksQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUN6RCxPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7OEdBMVBVLDBCQUEwQjtrR0FBMUIsMEJBQTBCLGdQQUYxQixDQUFDLG1DQUFtQyxFQUFFLHVCQUF1QixDQUFDLDBCQzVCM0UsNG1GQXFEUTs7MkZEdkJLLDBCQUEwQjtrQkFOdEMsU0FBUzsrQkFDRSxZQUFZLGFBR1gsQ0FBQyxtQ0FBbUMsRUFBRSx1QkFBdUIsQ0FBQzt3REFTL0QsUUFBUTtzQkFBakIsTUFBTTtnQkFFRSwyQkFBMkI7c0JBQW5DLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFFRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIGZvcndhcmRSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybUNvbnRyb2wsIE5HX1ZBTElEQVRPUlMsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5cclxuY29uc3QgIENVU1RPTV9JTlBVVF9WQUxJREFUT1JTOiBhbnkgPSB7IFxyXG4gIHByb3ZpZGU6IE5HX1ZBTElEQVRPUlMsIFxyXG4gIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFRDbG91ZFVpUmFuZ2VEYXRlQ29tcG9uZW50KSxcclxuICBtdWx0aTogdHJ1ZVxyXG59XHJcblxyXG5jb25zdCBDVVNUT01fSU5QVVRfQ09OVFJPTF9WQUxVRV9BQ0NFU1NPUjogYW55ID0ge1xyXG4gIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxyXG4gIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFRDbG91ZFVpUmFuZ2VEYXRlQ29tcG9uZW50KSxcclxuICBtdWx0aTogdHJ1ZVxyXG59O1xyXG5cclxuY29uc3Qgbm9vcCA9ICgpID0+IHtcclxufTtcclxuXHJcblxyXG5pbnRlcmZhY2UgSVJlc3VsdERhdGVUaW1le1xyXG4gIHN0YXJ0OiBhbnk7XHJcbiAgc3RvcDogYW55O1xyXG59XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3JhbmdlLWRhdGUnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9yYW5nZS1kYXRlLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9yYW5nZS1kYXRlLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgcHJvdmlkZXJzOiBbQ1VTVE9NX0lOUFVUX0NPTlRST0xfVkFMVUVfQUNDRVNTT1IsIENVU1RPTV9JTlBVVF9WQUxJREFUT1JTXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgVENsb3VkVWlSYW5nZURhdGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG5cclxuICByZXN1bHQgPSB7fSBhcyBJUmVzdWx0RGF0ZVRpbWU7XHJcblxyXG4gIG9wdGlvbnNfZGF0ZV90aW1lOiBhbnkgPSBbXTtcclxuICB1c2VfdmFsaWRhdGlvbl9yZXF1aXJlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBAT3V0cHV0KCkgb25DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPElSZXN1bHREYXRlVGltZT4oKTtcclxuXHJcbiAgQElucHV0KCkgZGVmYXVsdFZhbHVlUGVyaW9kU3RhcnRTdG9wOiBzdHJpbmcgPSAnJztcclxuICBASW5wdXQoKSByZXF1aXJlZDogc3RyaW5nIHwgdW5kZWZpbmVkO1xyXG5cclxuICBASW5wdXQoKSBkZXNjcmlwdGlvblN0YXJ0OiBzdHJpbmcgPSAnJztcclxuICBASW5wdXQoKSBkZXNjcmlwdGlvblN0b3A6IHN0cmluZyA9ICcnO1xyXG5cclxuICBtb2RlOiBzdHJpbmcgPSAnc2VsZWN0JztcclxuXHJcbiAgaXNWYWxpZCA9IGZhbHNlO1xyXG5cclxuICBjb25zdHJ1Y3RvcigpIHsgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuc2V0T3B0aW9uc0RhdGVUaW1lKCk7XHJcbiAgfVxyXG5cclxuICBzZXRPcHRpb25zRGF0ZVRpbWUoKXtcclxuICAgIHRoaXMub3B0aW9uc19kYXRlX3RpbWUgPSBbXHJcbiAgICAgIHt2YWx1ZTonMS1sYXN0LXRpbWUnLCBkZXNjcmlwdGlvbjogJ8OabHRpbWEgMSBob3JhJ30sXHJcbiAgICAgIHt2YWx1ZTonMy1sYXN0LXRpbWUnLCBkZXNjcmlwdGlvbjogJ8OabHRpbWFzIDMgaG9yYXMnfSxcclxuICAgICAge3ZhbHVlOic2LWxhc3QtdGltZScsIGRlc2NyaXB0aW9uOiAnw5psdGltYXMgNiBob3Jhcyd9LFxyXG4gICAgICB7dmFsdWU6JzI0LWxhc3QtdGltZScsIGRlc2NyaXB0aW9uOiAnw5psdGltYXMgMjQgaG9yYXMnfSxcclxuXHJcbiAgICAgIHt2YWx1ZTonNy1kYXlzJywgZGVzY3JpcHRpb246ICfDmmx0aW1vcyA3IGRpYXMnfSxcclxuICAgICAge3ZhbHVlOicxNS1kYXlzJywgZGVzY3JpcHRpb246ICfDmmx0aW1vcyAxNSBkaWFzJ30sXHJcbiAgICAgIHt2YWx1ZTonMzAtZGF5cycsIGRlc2NyaXB0aW9uOiAnw5psdGltb3MgMzAgZGlhcyd9LFxyXG4gICAgICB7dmFsdWU6J2N1cnJlbnQtbW9udGgnLCBkZXNjcmlwdGlvbjogJ03DqnMgYXR1YWwnfSxcclxuICAgICAge3ZhbHVlOidjdXJyZW50LXllYXInLCBkZXNjcmlwdGlvbjogJ0FubyBhdHVhbCd9XHJcbiAgICBdXHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgaWYoIHRoaXMuZGVmYXVsdFZhbHVlUGVyaW9kU3RhcnRTdG9wICE9PSAnJyApe1xyXG4gICAgICAgIHRoaXMub25DaGFuZ2VPcHRpb25zRGF0ZVRpbWUoIHRoaXMuZGVmYXVsdFZhbHVlUGVyaW9kU3RhcnRTdG9wICk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgXHJcbiAgfVxyXG5cclxuICBvbkNoYW5nZU9wdGlvbnNEYXRlVGltZShldmVudD86IGFueSl7XHJcbiAgICB0aGlzLmlzVmFsaWQgPSBmYWxzZTtcclxuICAgIC8vIHRoaXMuZGVzY3JpcHRpb25fb3B0aW9uc19kYXRlX3RpbWUgPSAnJztcclxuICAgIC8vIHRoaXMudmFsdWVfb3B0aW9uc19kYXRlX3RpbWUgPSAnJztcclxuICAgIGV2ZW50ID0gKGV2ZW50ICYmIGV2ZW50LnZhbHVlKSA/IGAke2V2ZW50LnZhbHVlfWAgOiBgJHtldmVudH1gO1xyXG5cclxuICAgIGxldCBub3cgPSBuZXcgRGF0ZSgpO1xyXG4gICAgbGV0IGN1cnJlbnRfZGF0ZSA9IG5ldyBEYXRlKCk7XHJcbiAgICBsZXQgZmlsdGVyX2RhdGU6IGFueSA9IHVuZGVmaW5lZDtcclxuXHJcblxyXG4gICAgaWYoIGV2ZW50ID09PSAnMS1sYXN0LXRpbWUnICl7XHJcbiAgICAgIGZpbHRlcl9kYXRlID0gbmV3IERhdGUoY3VycmVudF9kYXRlLmdldFRpbWUoKSAtIDEgKiA2MCAqIDYwICogMTAwMCk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYoIGV2ZW50ID09PSAnMy1sYXN0LXRpbWUnICl7XHJcbiAgICAgIGZpbHRlcl9kYXRlID0gbmV3IERhdGUoY3VycmVudF9kYXRlLmdldFRpbWUoKSAtIDMgKiA2MCAqIDYwICogMTAwMCk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYoIGV2ZW50ID09PSAnNi1sYXN0LXRpbWUnICl7XHJcbiAgICAgIGZpbHRlcl9kYXRlID0gbmV3IERhdGUoY3VycmVudF9kYXRlLmdldFRpbWUoKSAtIDYgKiA2MCAqIDYwICogMTAwMCk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYoIGV2ZW50ID09PSAnMjQtbGFzdC10aW1lJyApe1xyXG4gICAgICBmaWx0ZXJfZGF0ZSA9IG5ldyBEYXRlKGN1cnJlbnRfZGF0ZS5nZXRUaW1lKCkgLSAyNCAqIDYwICogNjAgKiAxMDAwKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiggZXZlbnQgPT09ICc3LWRheXMnICl7XHJcbiAgICAgIGZpbHRlcl9kYXRlID0gbmV3IERhdGUoIChuZXcgRGF0ZShjdXJyZW50X2RhdGUpKS5zZXREYXRlKCBub3cuZ2V0RGF0ZSgpIC0gNyApICk7ICBcclxuICAgICAgZmlsdGVyX2RhdGUgPSBuZXcgRGF0ZSggKGZpbHRlcl9kYXRlKS5zZXRTZWNvbmRzKDApICk7ICAgICAgXHJcbiAgICB9XHJcblxyXG4gICAgaWYoIGV2ZW50ID09PSAnMTUtZGF5cycgKXtcclxuICAgICAgZmlsdGVyX2RhdGUgPSBuZXcgRGF0ZSggKG5ldyBEYXRlKGN1cnJlbnRfZGF0ZSkpLnNldERhdGUoIG5vdy5nZXREYXRlKCkgLSAxNSApICk7XHJcbiAgICAgIGZpbHRlcl9kYXRlID0gbmV3IERhdGUoIChmaWx0ZXJfZGF0ZSkuc2V0U2Vjb25kcygwKSApO1xyXG4gICAgfVxyXG5cclxuICAgIGlmKCBldmVudCA9PT0gJzMwLWRheXMnICl7XHJcbiAgICAgIGZpbHRlcl9kYXRlID0gbmV3IERhdGUoIChuZXcgRGF0ZShjdXJyZW50X2RhdGUpKS5zZXREYXRlKCBub3cuZ2V0RGF0ZSgpIC0gMzAgKSApO1xyXG4gICAgICBmaWx0ZXJfZGF0ZSA9IG5ldyBEYXRlKCAoZmlsdGVyX2RhdGUpLnNldFNlY29uZHMoMCkgKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiggZXZlbnQgPT09ICdjdXJyZW50LW1vbnRoJyApe1xyXG4gICAgICBmaWx0ZXJfZGF0ZSA9IG5ldyBEYXRlKG5vdy5nZXRGdWxsWWVhcigpLCBub3cuZ2V0TW9udGgoKSwgMSk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYoIGV2ZW50ID09PSAnY3VycmVudC15ZWFyJyApe1xyXG4gICAgICBmaWx0ZXJfZGF0ZSA9IG5ldyBEYXRlKG5vdy5nZXRGdWxsWWVhcigpLCAwLCAxKTtcclxuICAgIH1cclxuXHJcbiAgICBpZihmaWx0ZXJfZGF0ZSl7ICAgICAgICBcclxuICAgICAgdGhpcy5yZXN1bHQgPSB7XHJcbiAgICAgICAgc3RhcnQ6IHRoaXMuZ2V0VHJhbnNmb3JtRGF0ZShmaWx0ZXJfZGF0ZSksXHJcbiAgICAgICAgc3RvcDogdGhpcy5nZXRUcmFuc2Zvcm1EYXRlKG5vdylcclxuICAgICAgfSBhcyBJUmVzdWx0RGF0ZVRpbWU7XHJcblxyXG4gICAgICB0aGlzLm9uQ2hhbmdlLmVtaXQodGhpcy5yZXN1bHQpO1xyXG4gICAgICB0aGlzLmlzVmFsaWQgPSB0cnVlO1xyXG4gICAgfWVsc2V7XHJcbiAgICAgICBcclxuICAgICAgdGhpcy5yZXN1bHQgPSB7fSBhcyBJUmVzdWx0RGF0ZVRpbWU7XHJcbiAgICAgIHRoaXMub25DaGFuZ2UuZW1pdCh0aGlzLnJlc3VsdCk7XHJcbiAgICAgIHRoaXMuaXNWYWxpZCA9IGZhbHNlO1xyXG4gICAgICBcclxuICAgIH1cclxuXHJcbiAgfVxyXG5cclxuICBnZXRUcmFuc2Zvcm1EYXRlKGR0OiBhbnkpe1xyXG4gICAgLy9yZXR1cm4gKGR0KS50b0xvY2FsZVN0cmluZygncHQtQlInKTtcclxuICAgIHJldHVybiBkdDtcclxuICAgIC8qXHJcbiAgICBjb25zdCBhbm8gPSBkdC5nZXRGdWxsWWVhcigpO1xyXG4gICAgY29uc3QgbWVzID0gZHQuZ2V0TW9udGgoKTtcclxuICAgIGNvbnN0IGRpYSA9IGR0LmdldERhdGUoKTtcclxuICAgIGNvbnN0IGhvcmFzID0gZHQuZ2V0SG91cnMoKTtcclxuICAgIGNvbnN0IG1pbnV0b3MgPSBkdC5nZXRNaW51dGVzKCk7XHJcbiAgICByZXR1cm4gbmV3IERhdGUoRGF0ZS5VVEMoYW5vLCBtZXMsIGRpYSwgaG9yYXMsIG1pbnV0b3MpKTtcclxuICAgICovXHJcbiAgfVxyXG5cclxuICBvbkNoYW5nZVN0YXJ0RGF0ZVRpbWUoZXZlbnQ6IGFueSl7XHJcbiAgICB0aGlzLmlzVmFsaWQgPSBmYWxzZTtcclxuICAgIGlmKCB0aGlzLnJlc3VsdCAmJiB0aGlzLnJlc3VsdC5zdGFydCl7XHJcbiAgICAgIHRoaXMucmVzdWx0LnN0YXJ0ID0gZXZlbnQudmFsdWUgPSB0aGlzLmdldFRyYW5zZm9ybURhdGUoZXZlbnQudmFsdWUpO1xyXG4gICAgICB0aGlzLm9uQ2hhbmdlLmVtaXQodGhpcy5yZXN1bHQpO1xyXG4gICAgICB0aGlzLmlzVmFsaWQgPSB0cnVlO1xyXG4gICAgfWVsc2V7XHJcbiAgICAgIHRoaXMucmVzdWx0ID0ge30gYXMgSVJlc3VsdERhdGVUaW1lO1xyXG4gICAgICB0aGlzLm9uQ2hhbmdlLmVtaXQodGhpcy5yZXN1bHQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25DaGFuZ2VTdG9wRGF0ZVRpbWUoZXZlbnQ6IGFueSl7XHJcbiAgICB0aGlzLmlzVmFsaWQgPSBmYWxzZTtcclxuICAgIGlmKCB0aGlzLnJlc3VsdCAmJiB0aGlzLnJlc3VsdC5zdG9wICl7XHJcbiAgICAgIHRoaXMucmVzdWx0LnN0b3AgPSBldmVudC52YWx1ZSA9IHRoaXMuZ2V0VHJhbnNmb3JtRGF0ZShldmVudC52YWx1ZSk7XHJcbiAgICAgIHRoaXMub25DaGFuZ2UuZW1pdCh0aGlzLnJlc3VsdCk7XHJcbiAgICAgIHRoaXMuaXNWYWxpZCA9IHRydWU7XHJcbiAgICB9ZWxzZXtcclxuICAgICAgdGhpcy5yZXN1bHQgPSB7fSBhcyBJUmVzdWx0RGF0ZVRpbWU7XHJcbiAgICAgIHRoaXMub25DaGFuZ2UuZW1pdCh0aGlzLnJlc3VsdCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICB0b2dnbGUoKXtcclxuICAgIGNvbnN0IG1vZGUgPSAoIGAke3RoaXMubW9kZX1gID09PSAnc2VsZWN0JyApID8gJ2RhdGVwaWNrZXJzJyA6ICdzZWxlY3QnO1xyXG4gICAgdGhpcy5kZWZhdWx0VmFsdWVQZXJpb2RTdGFydFN0b3AgPSAnJztcclxuICAgIHRoaXMuaXNWYWxpZCA9IGZhbHNlO1xyXG4gICAgdGhpcy5yZXN1bHQgPSB7fSBhcyBJUmVzdWx0RGF0ZVRpbWU7XHJcbiAgICB0aGlzLm1vZGUgPSBtb2RlO1xyXG4gICAgdGhpcy5vbkNoYW5nZS5lbWl0KHRoaXMucmVzdWx0KTtcclxuICB9XHJcblxyXG5cclxuXHJcblxyXG5cclxuXHJcblxyXG5cclxuXHJcblxyXG5cclxuXHJcblxyXG5cclxuXHJcblxyXG5cclxuXHJcblxyXG5cclxuXHJcblxyXG5cclxuXHJcblxyXG5cclxuXHJcblxyXG5cclxuXHJcblxyXG5cclxuXHJcblxyXG5cclxuXHJcbiAgaW5uZXJWYWx1ZTogYW55IHwgdW5kZWZpbmVkO1xyXG4gIC8vUGxhY2Vob2xkZXJzIGZvciB0aGUgY2FsbGJhY2tzIHdoaWNoIGFyZSBsYXRlciBwcm92aWRlc2RcclxuICAvL2J5IHRoZSBDb250cm9sIFZhbHVlIEFjY2Vzc29yXHJcbiAgcHJpdmF0ZSBvblRvdWNoZWRDYWxsYmFjazogKCkgPT4gdm9pZCA9IG5vb3A7XHJcbiAgcHJpdmF0ZSBvbkNoYW5nZUNhbGxiYWNrOiAoXzogYW55KSA9PiB2b2lkID0gbm9vcDtcclxuXHJcbiAgLy9nZXQgYWNjZXNzb3JcclxuICBnZXQgdmFsdWUoKTogYW55IHtcclxuICAgICAgcmV0dXJuIHRoaXMuaW5uZXJWYWx1ZTtcclxuICB9O1xyXG5cclxuICAvL3NldCBhY2Nlc3NvciBpbmNsdWRpbmcgY2FsbCB0aGUgb25jaGFuZ2UgY2FsbGJhY2tcclxuICBzZXQgdmFsdWUodjogYW55KSB7XHJcbiAgICBpZiAodiAhPT0gdGhpcy5pbm5lclZhbHVlKSB7XHJcbiAgICAgIHRoaXMuaW5uZXJWYWx1ZSA9IHY7ICAgICAgXHJcbiAgICAgIHRoaXMub25DaGFuZ2VDYWxsYmFjayh2KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vU2V0IHRvdWNoZWQgb24gYmx1clxyXG4gIG9uQmx1cigpIHtcclxuICAgIHRoaXMub25Ub3VjaGVkQ2FsbGJhY2soKTtcclxuICB9XHJcblxyXG4gIC8vRnJvbSBDb250cm9sVmFsdWVBY2Nlc3NvciBpbnRlcmZhY2VcclxuICB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpIHtcclxuICAgIGlmICh2YWx1ZSAhPT0gdGhpcy5pbm5lclZhbHVlKSB7XHJcbiAgICAgIHRoaXMuaW5uZXJWYWx1ZSA9IHZhbHVlO1xyXG4gICAgICAvL3RoaXMudG9TZXREZWZhdWx0KHZhbHVlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vRnJvbSBDb250cm9sVmFsdWVBY2Nlc3NvciBpbnRlcmZhY2VcclxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpIHtcclxuICAgIHRoaXMub25DaGFuZ2VDYWxsYmFjayA9IGZuO1xyXG4gIH1cclxuXHJcbiAgLy9Gcm9tIENvbnRyb2xWYWx1ZUFjY2Vzc29yIGludGVyZmFjZVxyXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpIHtcclxuICAgIHRoaXMub25Ub3VjaGVkQ2FsbGJhY2sgPSBmbjtcclxuICB9XHJcblxyXG4gIHB1YmxpYyB2YWxpZGF0ZShjOiBGb3JtQ29udHJvbCk6IGFueSB7XHJcbiAgICBpZiggYyAmJiAoIHR5cGVvZiB0aGlzLnJlcXVpcmVkICE9PSAndW5kZWZpbmVkJyApICl7XHJcbiAgICAgIHRoaXMudXNlX3ZhbGlkYXRpb25fcmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgICByZXR1cm4gKHRoaXMuY2hlY2tfaXNfdmFsaWQoKSkgPyBudWxsIDogJ3JlcXVpcmVkJztcclxuICAgIH1cclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuXHJcbiAgY2hlY2tfaXNfdmFsaWQoKTogYm9vbGVhbntcclxuICAgIGlmKCB0aGlzLnJlc3VsdCAmJiB0aGlzLnJlc3VsdC5zdGFydCAmJiB0aGlzLnJlc3VsdC5zdG9wICl7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbn1cclxuIiwiPHRhYmxlIGNsYXNzPVwidGNsb3VkLXVpLWZpbHRlcnMtcmFuZ2UtZGF0ZSBhcmVhLXJhbmdlLWRhdGVcIj5cclxuICAgIDx0cj5cclxuXHJcbiAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwibW9kZSA9PT0gJ3NlbGVjdCdcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkZXNjcmlwdGlvbi1wZXJpb2RcIj5QZXLDrW9kbzwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPHNlbGVjdCBuYW1lPVwicGVyaW9kb1wiIGNsYXNzPVwidGMtZm9ybS1jb250cm9sXCIgKGNoYW5nZSk9XCJvbkNoYW5nZU9wdGlvbnNEYXRlVGltZSgkZXZlbnQudGFyZ2V0KVwiIFsobmdNb2RlbCldPVwiZGVmYXVsdFZhbHVlUGVyaW9kU3RhcnRTdG9wXCIgID5cclxuICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiXCI+PC9vcHRpb24+IFxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGl0ZW0gb2Ygb3B0aW9uc19kYXRlX3RpbWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiBbdmFsdWVdPVwiaXRlbS52YWx1ZVwiPnt7IGl0ZW0uZGVzY3JpcHRpb24gfX08L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cIm1vZGUgPT09ICdkYXRlcGlja2VycydcIj5cclxuXHJcbiAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9XCJhcmVhLXJhbmdlLWRhdGVwaWNrZXJzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGVzY3JpcHRpb24tc3RhcnRcIj57eyBkZXNjcmlwdGlvblN0YXJ0IH19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGNsb3VkLXVpLWRhdGVwaWNrZXItdGltZSBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjX2lucHV0X3N0YXJ0IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwicmVzdWx0LnN0YXJ0XCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1cImlucHV0X3N0YXJ0XCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGV2ZW50Q2hhbmdlKT1cIm9uQ2hhbmdlU3RhcnREYXRlVGltZShfaW5wdXRfc3RhcnQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RjbG91ZC11aS1kYXRlcGlja2VyLXRpbWU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkZXNjcmlwdGlvbi1zdG9wXCI+e3sgZGVzY3JpcHRpb25TdG9wIH19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGNsb3VkLXVpLWRhdGVwaWNrZXItdGltZSBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjX2lucHV0X3N0b3BcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInJlc3VsdC5zdG9wXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1cImlucHV0X3N0b3BcIiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZXZlbnRDaGFuZ2UpPVwib25DaGFuZ2VTdG9wRGF0ZVRpbWUoX2lucHV0X3N0b3ApXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RjbG91ZC11aS1kYXRlcGlja2VyLXRpbWU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgIDwvdGFibGU+XHJcblxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L3RkPlxyXG5cclxuICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4tbW9kZS1yYW5nZS1kYXRlXCIgW2NsYXNzLmFjdGl2ZV09XCJtb2RlID09PSAnc2VsZWN0J1wiIChjbGljayk9XCJ0b2dnbGUoKVwiIHR5cGU9XCJidXR0b25cIj5cclxuXHJcbiAgICAgICAgICAgICAgICA8aSAqbmdJZj1cIm1vZGUgPT09ICdzZWxlY3QnXCIgY2xhc3M9XCJmYXIgZmEtY2FsZW5kYXItYWx0XCIgdGl0bGU9XCJBbHRlcmFyIHBhcmEgY2FsZW5kw6FyaW9cIj48L2k+XHJcbiAgICAgICAgICAgICAgICA8aSAqbmdJZj1cIm1vZGUgIT09ICdzZWxlY3QnXCIgY2xhc3M9XCJmYXMgZmEtY2FsZW5kYXItd2Vla1wiIHRpdGxlPVwiU2VsZWNpb25hciBwZXLDrW9kb1wiPjwvaT5cclxuXHJcbiAgICAgICAgICAgICAgICA8IS0tIDxkaXYgKm5nSWY9XCJtb2RlID09PSAnc2VsZWN0J1wiPkV4aWJpcjxicj5DYWxlbmTDoXJpbzwvZGl2PiAtLT5cclxuICAgICAgICAgICAgICAgIDwhLS0gPGRpdiAqbmdJZj1cIm1vZGUgIT09ICdzZWxlY3QnXCI+RXhpYmlyPGJyPlBlcsOtb2RvPC9kaXY+IC0tPlxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8L3RkPlxyXG5cclxuICAgIDwvdHI+XHJcbjwvdGFibGU+Il19