@dev-tcloud/tcloud-ui 4.2.1 → 5.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.
- package/README.md +106 -105
- package/datepicker/js/_info.txt +3 -3
- package/fesm2022/dev-tcloud-tcloud-ui.mjs +432 -365
- package/fesm2022/dev-tcloud-tcloud-ui.mjs.map +1 -1
- package/lib/_interfaces/theme.service.interface.d.ts +3 -0
- package/lib/_modules/tcloud-ui-accordion/tcloud-ui-accordion.component.d.ts +1 -0
- package/lib/_modules/tcloud-ui-modal/tcloud-ui-modal.component.d.ts +1 -1
- package/lib/_services/tcloud-ui-theme.services.d.ts +12 -0
- package/lib/tcloud-ui.config.d.ts +1 -0
- package/package.json +3 -5
- package/scss/components/custom/el-copy.scss +17 -17
- package/scss/components/custom/loading-transitions.scss +27 -27
- package/scss/components/custom/loading.scss +2 -2
- package/scss/components/custom/tab-menu.scss +57 -57
- package/scss/components/custom/table.scss +98 -98
- package/scss/components/custom/tooltip.scss +89 -89
- package/scss/components/custom/ui-datepicker.scss +15 -15
- package/scss/components/custom/validation.scss +7 -7
- package/scss/components/custom/variables.scss +32 -32
- package/scss/components/styles.scss +9 -9
- package/scss/tcloud/custom/alerts.scss +38 -37
- package/scss/tcloud/custom/buttons.scss +1002 -1002
- package/scss/tcloud/custom/card.scss +51 -51
- package/scss/tcloud/custom/colors.scss +97 -97
- package/scss/tcloud/custom/forms.scss +81 -81
- package/scss/tcloud/custom/layout.scss +5 -5
- package/scss/tcloud/custom/left-navigation.scss +47 -47
- package/scss/tcloud/custom/mixins.scss +318 -318
- package/scss/tcloud/custom/tcloud-prime.scss +4519 -4519
- package/scss/tcloud/custom/tcloud-standard.scss +121 -121
- package/scss/tcloud/custom/text.scss +57 -57
- package/scss/tcloud/custom/top-navigation.scss +59 -59
- package/scss/tcloud/custom/variables.scss +60 -60
- package/scss/tcloud/disaster-recovery/colors.scss +14 -14
- package/scss/tcloud/disaster-recovery/layout.scss +13 -13
- package/scss/tcloud/disaster-recovery/styles.scss +2 -2
- package/scss/tcloud/prime/cards-products.scss +333 -331
- package/scss/tcloud/prime/left-navigation.scss +329 -327
- package/scss/tcloud/prime/styles.scss +3 -3
- package/scss/tcloud/prime/tcloud-prime.scss +3874 -3872
- package/scss/tcloud/standard/left-navigation.scss +47 -47
- package/scss/tcloud/standard/styles.scss +3 -3
- package/scss/tcloud/standard/tcloud-standard.scss +125 -125
- package/scss/tcloud/standard/top-navigation.scss +61 -61
- package/scss/tcloud/styles.scss +19 -19
- package/scss/tcloud/tcloud-ui.scss +7 -7
- package/esm2022/dev-tcloud-tcloud-ui.mjs +0 -5
- package/esm2022/lib/_directives/align/align.directive.mjs +0 -42
- package/esm2022/lib/_directives/currency/currency.directive.mjs +0 -160
- package/esm2022/lib/_directives/directives.module.mjs +0 -76
- package/esm2022/lib/_directives/el-copy/el-copy.directive.mjs +0 -68
- package/esm2022/lib/_directives/hover-parent/hover-parent.directive.mjs +0 -58
- package/esm2022/lib/_directives/tcloud-access/tcloud-ui-check-access.directive.mjs +0 -66
- package/esm2022/lib/_directives/tcloud-access/tcloud-ui-ng-check-access.directive.mjs +0 -50
- package/esm2022/lib/_directives/tcloud-access/tcloud-ui-ng-feature-flags.directive.mjs +0 -44
- package/esm2022/lib/_directives/tcloud-ui-digit-only.directive.mjs +0 -64
- package/esm2022/lib/_directives/tcloud-ui-highlight.diretive.mjs +0 -36
- package/esm2022/lib/_directives/tcloud-ui-ip-mask.directive.mjs +0 -54
- package/esm2022/lib/_directives/tooltip/tooltip.directive.mjs +0 -196
- package/esm2022/lib/_interfaces/user.service.interface.mjs +0 -2
- package/esm2022/lib/_modules/tcloud-ui-accordion/components/tcloud-ui-accordion-body/tcloud-ui-accordion-body.component.mjs +0 -35
- package/esm2022/lib/_modules/tcloud-ui-accordion/components/tcloud-ui-accordion-title/tcloud-ui-accordion-title.component.mjs +0 -54
- package/esm2022/lib/_modules/tcloud-ui-accordion/services/tcloud-ui-accordion.service.mjs +0 -38
- package/esm2022/lib/_modules/tcloud-ui-accordion/tcloud-ui-accordion.component.mjs +0 -75
- package/esm2022/lib/_modules/tcloud-ui-accordion/tcloud-ui-accordion.module.mjs +0 -35
- package/esm2022/lib/_modules/tcloud-ui-choice-issues/tcloud-ui-choice-issues.component.mjs +0 -87
- package/esm2022/lib/_modules/tcloud-ui-choice-issues/tcloud-ui-choice-issues.module.mjs +0 -32
- package/esm2022/lib/_modules/tcloud-ui-data-list/services/data-list.service.mjs +0 -38
- package/esm2022/lib/_modules/tcloud-ui-data-list/tcloud-ui-data-list-option/tcloud-ui-data-list-option.component.mjs +0 -65
- package/esm2022/lib/_modules/tcloud-ui-data-list/tcloud-ui-data-list.component.mjs +0 -317
- package/esm2022/lib/_modules/tcloud-ui-data-list/tcloud-ui-data-list.mjs +0 -3
- package/esm2022/lib/_modules/tcloud-ui-data-list/tcloud-ui-data-list.module.mjs +0 -37
- package/esm2022/lib/_modules/tcloud-ui-datepicker/tcloud-ui-datepicker.component.mjs +0 -440
- package/esm2022/lib/_modules/tcloud-ui-datepicker/tcloud-ui-datepicker.module.mjs +0 -32
- package/esm2022/lib/_modules/tcloud-ui-datepicker-time/tcloud-ui-datepicker-time.component.mjs +0 -320
- package/esm2022/lib/_modules/tcloud-ui-datepicker-time/tcloud-ui-datepicker-time.module.mjs +0 -40
- package/esm2022/lib/_modules/tcloud-ui-filters/components/range-date/range-date.component.mjs +0 -213
- package/esm2022/lib/_modules/tcloud-ui-filters/tcloud-ui-filters.component.mjs +0 -537
- package/esm2022/lib/_modules/tcloud-ui-filters/tcloud-ui-filters.mjs +0 -20
- package/esm2022/lib/_modules/tcloud-ui-filters/tcloud-ui-filters.module.mjs +0 -45
- package/esm2022/lib/_modules/tcloud-ui-input-password/tcloud-ui-input-password.component.mjs +0 -142
- package/esm2022/lib/_modules/tcloud-ui-input-password/tcloud-ui-input-password.module.mjs +0 -32
- package/esm2022/lib/_modules/tcloud-ui-input-search/tcloud-ui-input-search.component.mjs +0 -66
- package/esm2022/lib/_modules/tcloud-ui-input-search/tcloud-ui-input-search.module.mjs +0 -32
- package/esm2022/lib/_modules/tcloud-ui-label-token/tcloud-ui-label-token.component.mjs +0 -36
- package/esm2022/lib/_modules/tcloud-ui-label-token/tcloud-ui-label-token.module.mjs +0 -31
- package/esm2022/lib/_modules/tcloud-ui-line-step-circle/tcloud-ui-line-step-circle.component.mjs +0 -93
- package/esm2022/lib/_modules/tcloud-ui-line-step-circle/tcloud-ui-line-step-circle.module.mjs +0 -25
- package/esm2022/lib/_modules/tcloud-ui-line-step-title/tcloud-ui-line-step-title.component.mjs +0 -43
- package/esm2022/lib/_modules/tcloud-ui-line-step-title/tcloud-ui-line-step-title.mjs +0 -2
- package/esm2022/lib/_modules/tcloud-ui-line-step-title/tcloud-ui-line-step-title.module.mjs +0 -19
- package/esm2022/lib/_modules/tcloud-ui-linha-logo/tcloud-ui-linha-logo.component.mjs +0 -65
- package/esm2022/lib/_modules/tcloud-ui-linha-logo/tcloud-ui-linha-logo.module.mjs +0 -25
- package/esm2022/lib/_modules/tcloud-ui-loading/components/tcloud-ui-cubes/tcloud-ui-cubes.component.mjs +0 -11
- package/esm2022/lib/_modules/tcloud-ui-loading/tcloud-ui-loading.component.mjs +0 -29
- package/esm2022/lib/_modules/tcloud-ui-loading/tcloud-ui-loading.module.mjs +0 -21
- package/esm2022/lib/_modules/tcloud-ui-modal/components/tcloud-ui-modal-body/tcloud-ui-modal-body.component.mjs +0 -14
- package/esm2022/lib/_modules/tcloud-ui-modal/components/tcloud-ui-modal-footer/tcloud-ui-modal-footer.component.mjs +0 -61
- package/esm2022/lib/_modules/tcloud-ui-modal/components/tcloud-ui-modal-header/tcloud-ui-modal-header.component.mjs +0 -24
- package/esm2022/lib/_modules/tcloud-ui-modal/services/tcloud-modal.service.mjs +0 -63
- package/esm2022/lib/_modules/tcloud-ui-modal/tcloud-ui-modal.component.mjs +0 -203
- package/esm2022/lib/_modules/tcloud-ui-modal/tcloud-ui-modal.mjs +0 -2
- package/esm2022/lib/_modules/tcloud-ui-modal/tcloud-ui-modal.module.mjs +0 -47
- package/esm2022/lib/_modules/tcloud-ui-multi-input/tcloud-ui-multi-input.component.mjs +0 -155
- package/esm2022/lib/_modules/tcloud-ui-multi-input/tcloud-ui-multi-input.module.mjs +0 -28
- package/esm2022/lib/_modules/tcloud-ui-multi-select/tcloud-ui-multi-select.component.mjs +0 -170
- package/esm2022/lib/_modules/tcloud-ui-multi-select/tcloud-ui-multi-select.module.mjs +0 -28
- package/esm2022/lib/_modules/tcloud-ui-multiples-values/tcloud-ui-multiples-values.component.mjs +0 -348
- package/esm2022/lib/_modules/tcloud-ui-multiples-values/tcloud-ui-multiples-values.module.mjs +0 -36
- package/esm2022/lib/_modules/tcloud-ui-not-found/tcloud-ui-not-found.component.mjs +0 -20
- package/esm2022/lib/_modules/tcloud-ui-not-found/tcloud-ui-not-found.module.mjs +0 -25
- package/esm2022/lib/_modules/tcloud-ui-number-step/tcloud-ui-number-step.component.mjs +0 -33
- package/esm2022/lib/_modules/tcloud-ui-number-step/tcloud-ui-number-step.module.mjs +0 -28
- package/esm2022/lib/_modules/tcloud-ui-progress-bar/tcloud-ui-progress-bar.component.mjs +0 -165
- package/esm2022/lib/_modules/tcloud-ui-progress-bar/tcloud-ui-progress-bar.module.mjs +0 -21
- package/esm2022/lib/_modules/tcloud-ui-reorder-items/tcloud-ui-reorder-items.component.mjs +0 -105
- package/esm2022/lib/_modules/tcloud-ui-reorder-items/tcloud-ui-reorder-items.mjs +0 -2
- package/esm2022/lib/_modules/tcloud-ui-reorder-items/tcloud-ui-reorder-items.module.mjs +0 -24
- package/esm2022/lib/_modules/tcloud-ui-scroll-box/tcloud-ui-scroll-box.component.mjs +0 -46
- package/esm2022/lib/_modules/tcloud-ui-scroll-box/tcloud-ui-scroll-box.module.mjs +0 -25
- package/esm2022/lib/_modules/tcloud-ui-tab-menu/components/tcloud-ui-tab-content/tcloud-ui-tab-content.component.mjs +0 -36
- package/esm2022/lib/_modules/tcloud-ui-tab-menu/components/tcloud-ui-tab-head/tcloud-ui-tab-head.component.mjs +0 -85
- package/esm2022/lib/_modules/tcloud-ui-tab-menu/components/tcloud-ui-tab-subtitle/tcloud-ui-tab-subtitle.component.mjs +0 -69
- package/esm2022/lib/_modules/tcloud-ui-tab-menu/components/tcloud-ui-tab-title/tcloud-ui-tab-title.component.mjs +0 -71
- package/esm2022/lib/_modules/tcloud-ui-tab-menu/services/tab-menu.service.mjs +0 -104
- package/esm2022/lib/_modules/tcloud-ui-tab-menu/tcloud-ui-tab-menu.component.mjs +0 -64
- package/esm2022/lib/_modules/tcloud-ui-tab-menu/tcloud-ui-tab-menu.mjs +0 -2
- package/esm2022/lib/_modules/tcloud-ui-tab-menu/tcloud-ui-tab-menu.module.mjs +0 -45
- package/esm2022/lib/_modules/tcloud-ui-table/tcloud-ui-table.component.mjs +0 -21
- package/esm2022/lib/_modules/tcloud-ui-table/tcloud-ui-table.module.mjs +0 -25
- package/esm2022/lib/_modules/tcloud-ui-welcome/tcloud-ui-welcome.component.mjs +0 -37
- package/esm2022/lib/_modules/tcloud-ui-welcome/tcloud-ui-welcome.module.mjs +0 -25
- package/esm2022/lib/_pipes/array-to-text.mjs +0 -29
- package/esm2022/lib/_pipes/bytes.mjs +0 -31
- package/esm2022/lib/_pipes/cnpj.mjs +0 -37
- package/esm2022/lib/_pipes/cpf.mjs +0 -37
- package/esm2022/lib/_pipes/datebr.mjs +0 -102
- package/esm2022/lib/_pipes/index.mjs +0 -9
- package/esm2022/lib/_pipes/monthname.mjs +0 -25
- package/esm2022/lib/_pipes/respective.mjs +0 -73
- package/esm2022/lib/_pipes/statusinfo.mjs +0 -78
- package/esm2022/lib/_pipes/tcloud-pipes.module.mjs +0 -75
- package/esm2022/lib/_services/loading-transitions.service.mjs +0 -52
- package/esm2022/lib/_services/search-in-object.service.mjs +0 -99
- package/esm2022/lib/_services/tcloud-ui-check-access.service.mjs +0 -170
- package/esm2022/lib/tcloud-ui.config.mjs +0 -2
- package/esm2022/lib/tcloud-ui.module.mjs +0 -235
- package/esm2022/public-api.mjs +0 -116
package/esm2022/lib/_modules/tcloud-ui-filters/components/range-date/range-date.component.mjs
DELETED
|
@@ -1,213 +0,0 @@
|
|
|
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.2.6", ngImport: i0, type: TCloudUiRangeDateComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
197
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.6", 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.2.6", 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFuZ2UtZGF0ZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90Y2xvdWQtdWkvc3JjL2xpYi9fbW9kdWxlcy90Y2xvdWQtdWktZmlsdGVycy9jb21wb25lbnRzL3JhbmdlLWRhdGUvcmFuZ2UtZGF0ZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90Y2xvdWQtdWkvc3JjL2xpYi9fbW9kdWxlcy90Y2xvdWQtdWktZmlsdGVycy9jb21wb25lbnRzL3JhbmdlLWRhdGUvcmFuZ2UtZGF0ZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzRixPQUFPLEVBQWUsYUFBYSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7O0FBRS9FLE1BQU8sdUJBQXVCLEdBQVE7SUFDcEMsT0FBTyxFQUFFLGFBQWE7SUFDdEIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQywwQkFBMEIsQ0FBQztJQUN6RCxLQUFLLEVBQUUsSUFBSTtDQUNaLENBQUE7QUFFRCxNQUFNLG1DQUFtQyxHQUFRO0lBQy9DLE9BQU8sRUFBRSxpQkFBaUI7SUFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQywwQkFBMEIsQ0FBQztJQUN6RCxLQUFLLEVBQUUsSUFBSTtDQUNaLENBQUM7QUFFRixNQUFNLElBQUksR0FBRyxHQUFHLEVBQUU7QUFDbEIsQ0FBQyxDQUFDO0FBY0YsTUFBTSxPQUFPLDBCQUEwQjtJQW1CckM7UUFqQkEsV0FBTSxHQUFHLEVBQXFCLENBQUM7UUFFL0Isc0JBQWlCLEdBQVEsRUFBRSxDQUFDO1FBQzVCLDRCQUF1QixHQUFZLEtBQUssQ0FBQztRQUUvQixhQUFRLEdBQUcsSUFBSSxZQUFZLEVBQW1CLENBQUM7UUFFaEQsZ0NBQTJCLEdBQVcsRUFBRSxDQUFDO1FBR3pDLHFCQUFnQixHQUFXLEVBQUUsQ0FBQztRQUM5QixvQkFBZSxHQUFXLEVBQUUsQ0FBQztRQUV0QyxTQUFJLEdBQVcsUUFBUSxDQUFDO1FBRXhCLFlBQU8sR0FBRyxLQUFLLENBQUM7UUFtTGhCLDBEQUEwRDtRQUMxRCwrQkFBK0I7UUFDdkIsc0JBQWlCLEdBQWUsSUFBSSxDQUFDO1FBQ3JDLHFCQUFnQixHQUFxQixJQUFJLENBQUM7SUFwTGxDLENBQUM7SUFFakIsUUFBUTtRQUNOLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO0lBQzVCLENBQUM7SUFFRCxrQkFBa0I7UUFDaEIsSUFBSSxDQUFDLGlCQUFpQixHQUFHO1lBQ3ZCLEVBQUMsS0FBSyxFQUFDLGFBQWEsRUFBRSxXQUFXLEVBQUUsZUFBZSxFQUFDO1lBQ25ELEVBQUMsS0FBSyxFQUFDLGFBQWEsRUFBRSxXQUFXLEVBQUUsaUJBQWlCLEVBQUM7WUFDckQsRUFBQyxLQUFLLEVBQUMsYUFBYSxFQUFFLFdBQVcsRUFBRSxpQkFBaUIsRUFBQztZQUNyRCxFQUFDLEtBQUssRUFBQyxjQUFjLEVBQUUsV0FBVyxFQUFFLGtCQUFrQixFQUFDO1lBRXZELEVBQUMsS0FBSyxFQUFDLFFBQVEsRUFBRSxXQUFXLEVBQUUsZ0JBQWdCLEVBQUM7WUFDL0MsRUFBQyxLQUFLLEVBQUMsU0FBUyxFQUFFLFdBQVcsRUFBRSxpQkFBaUIsRUFBQztZQUNqRCxFQUFDLEtBQUssRUFBQyxTQUFTLEVBQUUsV0FBVyxFQUFFLGlCQUFpQixFQUFDO1lBQ2pELEVBQUMsS0FBSyxFQUFDLGVBQWUsRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFDO1lBQ2pELEVBQUMsS0FBSyxFQUFDLGNBQWMsRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFDO1NBQ2pELENBQUE7UUFDRCxVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ2QsSUFBSSxJQUFJLENBQUMsMkJBQTJCLEtBQUssRUFBRSxFQUFFLENBQUM7Z0JBQzVDLElBQUksQ0FBQyx1QkFBdUIsQ0FBRSxJQUFJLENBQUMsMkJBQTJCLENBQUUsQ0FBQztZQUNuRSxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFFTCxDQUFDO0lBRUQsdUJBQXVCLENBQUMsS0FBVztRQUNqQyxJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztRQUNyQiwyQ0FBMkM7UUFDM0MscUNBQXFDO1FBQ3JDLEtBQUssR0FBRyxDQUFDLEtBQUssSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssRUFBRSxDQUFDO1FBRS9ELElBQUksR0FBRyxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7UUFDckIsSUFBSSxZQUFZLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUM5QixJQUFJLFdBQVcsR0FBUSxTQUFTLENBQUM7UUFHakMsSUFBSSxLQUFLLEtBQUssYUFBYSxFQUFFLENBQUM7WUFDNUIsV0FBVyxHQUFHLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUUsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQztRQUN0RSxDQUFDO1FBRUQsSUFBSSxLQUFLLEtBQUssYUFBYSxFQUFFLENBQUM7WUFDNUIsV0FBVyxHQUFHLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUUsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQztRQUN0RSxDQUFDO1FBRUQsSUFBSSxLQUFLLEtBQUssYUFBYSxFQUFFLENBQUM7WUFDNUIsV0FBVyxHQUFHLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUUsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQztRQUN0RSxDQUFDO1FBRUQsSUFBSSxLQUFLLEtBQUssY0FBYyxFQUFFLENBQUM7WUFDN0IsV0FBVyxHQUFHLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQztRQUN2RSxDQUFDO1FBRUQsSUFBSSxLQUFLLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDdkIsV0FBVyxHQUFHLElBQUksSUFBSSxDQUFFLENBQUMsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUUsR0FBRyxDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsQ0FBRSxDQUFFLENBQUM7WUFDaEYsV0FBVyxHQUFHLElBQUksSUFBSSxDQUFFLENBQUMsV0FBVyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFFLENBQUM7UUFDeEQsQ0FBQztRQUVELElBQUksS0FBSyxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQ3hCLFdBQVcsR0FBRyxJQUFJLElBQUksQ0FBRSxDQUFDLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFFLEdBQUcsQ0FBQyxPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUUsQ0FBRSxDQUFDO1lBQ2pGLFdBQVcsR0FBRyxJQUFJLElBQUksQ0FBRSxDQUFDLFdBQVcsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBRSxDQUFDO1FBQ3hELENBQUM7UUFFRCxJQUFJLEtBQUssS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUN4QixXQUFXLEdBQUcsSUFBSSxJQUFJLENBQUUsQ0FBQyxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBRSxHQUFHLENBQUMsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFFLENBQUUsQ0FBQztZQUNqRixXQUFXLEdBQUcsSUFBSSxJQUFJLENBQUUsQ0FBQyxXQUFXLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUUsQ0FBQztRQUN4RCxDQUFDO1FBRUQsSUFBSSxLQUFLLEtBQUssZUFBZSxFQUFFLENBQUM7WUFDOUIsV0FBVyxHQUFHLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxXQUFXLEVBQUUsRUFBRSxHQUFHLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDL0QsQ0FBQztRQUVELElBQUksS0FBSyxLQUFLLGNBQWMsRUFBRSxDQUFDO1lBQzdCLFdBQVcsR0FBRyxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ2xELENBQUM7UUFFRCxJQUFHLFdBQVcsRUFBQyxDQUFDO1lBQ2QsSUFBSSxDQUFDLE1BQU0sR0FBRztnQkFDWixLQUFLLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFdBQVcsQ0FBQztnQkFDekMsSUFBSSxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUM7YUFDZCxDQUFDO1lBRXJCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUNoQyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztRQUN0QixDQUFDO2FBQUksQ0FBQztZQUVKLElBQUksQ0FBQyxNQUFNLEdBQUcsRUFBcUIsQ0FBQztZQUNwQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDaEMsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7UUFFdkIsQ0FBQztJQUVILENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxFQUFPO1FBQ3RCLHNDQUFzQztRQUN0QyxPQUFPLEVBQUUsQ0FBQztRQUNWOzs7Ozs7O1VBT0U7SUFDSixDQUFDO0lBRUQscUJBQXFCLENBQUMsS0FBVTtRQUM5QixJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztRQUNyQixJQUFJLElBQUksQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUMsQ0FBQztZQUNwQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDckUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ2hDLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO1FBQ3RCLENBQUM7YUFBSSxDQUFDO1lBQ0osSUFBSSxDQUFDLE1BQU0sR0FBRyxFQUFxQixDQUFDO1lBQ3BDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNsQyxDQUFDO0lBQ0gsQ0FBQztJQUVELG9CQUFvQixDQUFDLEtBQVU7UUFDN0IsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7UUFDckIsSUFBSSxJQUFJLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDcEMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3BFLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUNoQyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztRQUN0QixDQUFDO2FBQUksQ0FBQztZQUNKLElBQUksQ0FBQyxNQUFNLEdBQUcsRUFBcUIsQ0FBQztZQUNwQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDbEMsQ0FBQztJQUNILENBQUM7SUFFRCxNQUFNO1FBQ0osTUFBTSxJQUFJLEdBQUcsQ0FBRSxHQUFHLElBQUksQ0FBQyxJQUFJLEVBQUUsS0FBSyxRQUFRLENBQUUsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUM7UUFDeEUsSUFBSSxDQUFDLDJCQUEyQixHQUFHLEVBQUUsQ0FBQztRQUN0QyxJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztRQUNyQixJQUFJLENBQUMsTUFBTSxHQUFHLEVBQXFCLENBQUM7UUFDcEMsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7UUFDakIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUEyQ0QsY0FBYztJQUNkLElBQUksS0FBSztRQUNMLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUMzQixDQUFDO0lBQUEsQ0FBQztJQUVGLG1EQUFtRDtJQUNuRCxJQUFJLEtBQUssQ0FBQyxDQUFNO1FBQ2QsSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQzFCLElBQUksQ0FBQyxVQUFVLEdBQUcsQ0FBQyxDQUFDO1lBQ3BCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMzQixDQUFDO0lBQ0gsQ0FBQztJQUVELHFCQUFxQjtJQUNyQixNQUFNO1FBQ0osSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUVELHFDQUFxQztJQUNyQyxVQUFVLENBQUMsS0FBVTtRQUNuQixJQUFJLEtBQUssS0FBSyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDOUIsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7WUFDeEIsMkJBQTJCO1FBQzdCLENBQUM7SUFDSCxDQUFDO0lBRUQscUNBQXFDO0lBQ3JDLGdCQUFnQixDQUFDLEVBQU87UUFDdEIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLEVBQUUsQ0FBQztJQUM3QixDQUFDO0lBRUQscUNBQXFDO0lBQ3JDLGlCQUFpQixDQUFDLEVBQU87UUFDdkIsSUFBSSxDQUFDLGlCQUFpQixHQUFHLEVBQUUsQ0FBQztJQUM5QixDQUFDO0lBRU0sUUFBUSxDQUFDLENBQWM7UUFDNUIsSUFBSSxDQUFDLElBQUksQ0FBRSxPQUFPLElBQUksQ0FBQyxRQUFRLEtBQUssV0FBVyxDQUFFLEVBQUUsQ0FBQztZQUNsRCxJQUFJLENBQUMsdUJBQXVCLEdBQUcsSUFBSSxDQUFDO1lBQ3BDLE9BQU8sQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUM7UUFDckQsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELGNBQWM7UUFDWixJQUFJLElBQUksQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUN6RCxPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7OEdBMVBVLDBCQUEwQjtrR0FBMUIsMEJBQTBCLGdQQUYxQixDQUFDLG1DQUFtQyxFQUFFLHVCQUF1QixDQUFDLDBCQzVCM0UsNG1GQXFEUTs7MkZEdkJLLDBCQUEwQjtrQkFOdEMsU0FBUzsrQkFDRSxZQUFZLGFBR1gsQ0FBQyxtQ0FBbUMsRUFBRSx1QkFBdUIsQ0FBQzt3REFTL0QsUUFBUTtzQkFBakIsTUFBTTtnQkFFRSwyQkFBMkI7c0JBQW5DLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFFRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIGZvcndhcmRSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybUNvbnRyb2wsIE5HX1ZBTElEQVRPUlMsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5cclxuY29uc3QgIENVU1RPTV9JTlBVVF9WQUxJREFUT1JTOiBhbnkgPSB7IFxyXG4gIHByb3ZpZGU6IE5HX1ZBTElEQVRPUlMsIFxyXG4gIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+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
|