@seniorsistemas/platform-components 7.0.1 → 7.1.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.
@@ -18,21 +18,21 @@ export class AdvancedFilterService {
18
18
  filtersObserver = this.filtersObservable.asObservable();
19
19
  ticketFilterObserver = this.ticketFilterObservable.asObservable();
20
20
  constructor() {
21
- this.contextsObservable.subscribe(contexts => contexts.length && this.getAndApplyFilters(contexts));
21
+ this.contextsObservable.subscribe((contexts) => contexts.length && this.getAndApplyFilters(contexts));
22
22
  }
23
23
  saveTickedFilters(filters) {
24
24
  const requestBody = this.ticketFilter ? { filters, ticketFilter: this.ticketFilter } : { filters };
25
25
  this.http
26
26
  .post(SAVE_TICKED_FILTER_URL, requestBody)
27
- .pipe(map(response => response.ticket))
27
+ .pipe(map((response) => response.ticket))
28
28
  .subscribe({
29
- next: ticketFilter => {
29
+ next: (ticketFilter) => {
30
30
  this.ticketFilter = ticketFilter;
31
31
  this.ticketFilterObservable.next({ ticketFilter });
32
32
  // NOSONAR
33
33
  window.parent.postMessage({ message: 'advanced-filter:success', payload: ticketFilter }, this.allowedOrigin);
34
34
  },
35
- error: err => {
35
+ error: (err) => {
36
36
  this.ticketFilterObservable.next({ error: true, message: err });
37
37
  // NOSONAR
38
38
  window.parent.postMessage({ message: 'advanced-filter:error', payload: err }, this.allowedOrigin);
@@ -46,7 +46,7 @@ export class AdvancedFilterService {
46
46
  }
47
47
  removeContexts(contexts) {
48
48
  const allContexts = this.contextsObservable.getValue();
49
- const filteredContexts = allContexts.filter(context => contexts.indexOf(context) === -1);
49
+ const filteredContexts = allContexts.filter((context) => contexts.indexOf(context) === -1);
50
50
  this.contextsObservable.next(filteredContexts);
51
51
  }
52
52
  saveFilters(filters) {
@@ -68,35 +68,16 @@ export class AdvancedFilterService {
68
68
  getFilters(serviceContexts, applyFilter) {
69
69
  this.http
70
70
  .post(GET_FILTERS_URL, { serviceContexts })
71
- .pipe(map(response => this.mapFilters(response.filters)))
72
- .subscribe(filters => this.filtersObservable.next({ filters, applyFilter }), //
73
- //
74
- err => this.filtersObservable.next({ error: true, message: err }));
71
+ .pipe(map((response) => this.mapFilters(response.filters)))
72
+ .subscribe((filters) => this.filtersObservable.next({ filters, applyFilter }), //
73
+ (err) => this.filtersObservable.next({ error: true, message: err }));
75
74
  }
76
75
  mapFilters(filters) {
77
- return filters.map(filter => {
76
+ return filters.map((filter) => {
78
77
  try {
79
78
  const value = filter.value && JSON.parse(filter.value);
80
- if (value && filter.search && filter.search.basicSearch && filter.search.basicSearch.output) {
81
- this.mapValues(value, filter.search.basicSearch.output.keyFields, filter.search.basicSearch.output.displayFields);
82
- }
83
- else if (value && filter.search && filter.search.entitySearch && filter.search.entitySearch.output) {
84
- this.mapValues(value, filter.search.entitySearch.output.keyFields, filter.search.entitySearch.output.displayFields);
85
- }
86
- if (value) {
87
- if (this.isMultiple(filter)) {
88
- const valueInText = JSON.stringify(value);
89
- if ((valueInText.startsWith('[{') && valueInText.endsWith('}]')) || valueInText.length <= 4) {
90
- filter.value = valueInText;
91
- }
92
- else {
93
- filter.value = JSON.stringify('');
94
- }
95
- }
96
- else {
97
- filter.value = JSON.stringify(value);
98
- }
99
- }
79
+ this.applySearchMapping(filter, value);
80
+ this.assignFilterValue(filter, value);
100
81
  }
101
82
  catch (ex) {
102
83
  console.error(`Global: filter ${filter.name} has value error. `, ex);
@@ -105,15 +86,45 @@ export class AdvancedFilterService {
105
86
  return filter;
106
87
  });
107
88
  }
89
+ applySearchMapping(filter, value) {
90
+ const basicOutput = filter.search?.basicSearch?.output;
91
+ if (value && basicOutput) {
92
+ this.mapValues(value, basicOutput.keyFields, basicOutput.displayFields);
93
+ return;
94
+ }
95
+ const entityOutput = filter.search?.entitySearch?.output;
96
+ if (value && entityOutput) {
97
+ this.mapValues(value, entityOutput.keyFields, entityOutput.displayFields);
98
+ }
99
+ }
100
+ assignFilterValue(filter, value) {
101
+ if (!value) {
102
+ return;
103
+ }
104
+ if (this.isMultiple(filter)) {
105
+ const valueInText = JSON.stringify(value);
106
+ if ((valueInText.startsWith('[{') && valueInText.endsWith('}]')) || valueInText.length <= 4) {
107
+ filter.value = valueInText;
108
+ }
109
+ else {
110
+ filter.value = JSON.stringify('');
111
+ }
112
+ }
113
+ else {
114
+ filter.value = JSON.stringify(value);
115
+ }
116
+ }
108
117
  isMultiple(filter) {
109
- return (filter.type === 'SEARCH' &&
110
- filter.search &&
111
- ((filter.search.basicSearch && filter.search.basicSearch.output && filter.search.basicSearch.output.maxSelectedItems > 1) ||
112
- (filter.search.entitySearch && filter.search.entitySearch.output && filter.search.entitySearch.output.maxSelectedItems > 1)));
118
+ if (filter.type !== 'SEARCH' || !filter.search) {
119
+ return false;
120
+ }
121
+ const basicMax = filter.search.basicSearch?.output?.maxSelectedItems ?? 0;
122
+ const entityMax = filter.search.entitySearch?.output?.maxSelectedItems ?? 0;
123
+ return basicMax > 1 || entityMax > 1;
113
124
  }
114
125
  mapValues(value, keyFields, displayFields) {
115
126
  if (Array.isArray(value)) {
116
- value.forEach(e => {
127
+ value.forEach((e) => {
117
128
  this.mapValue(e, keyFields, displayFields);
118
129
  });
119
130
  }
@@ -127,8 +138,8 @@ export class AdvancedFilterService {
127
138
  }
128
139
  const ids = [];
129
140
  const displays = [];
130
- keyFields.filter(e => value[e] !== undefined).forEach(e => ids.push(value[e]));
131
- displayFields.filter(e => value[e] !== undefined).forEach(e => displays.push(value[e]));
141
+ keyFields.filter((e) => value[e] !== undefined).forEach((e) => ids.push(value[e]));
142
+ displayFields.filter((e) => value[e] !== undefined).forEach((e) => displays.push(value[e]));
132
143
  if (ids.length > 0 && displays.length > 0) {
133
144
  value[searchKeyName] = ids.join(', ');
134
145
  value[searchDisplayName] = displays.join(', ');
@@ -143,4 +154,4 @@ export class AdvancedFilterService {
143
154
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AdvancedFilterService, decorators: [{
144
155
  type: Injectable
145
156
  }], ctorParameters: () => [] });
146
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWR2YW5jZWQtZmlsdGVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWIvc3JjL21vZHVsZXMvYWR2YW5jZWQtZmlsdGVyL3NlcnZpY2VzL2FkdmFuY2VkLWZpbHRlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFxQixNQUFNLHNCQUFzQixDQUFDO0FBQ2xGLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxlQUFlLEVBQUUsZ0JBQWdCLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDeEYsT0FBTyxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsZUFBZSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBSTVELE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVyQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsYUFBYSxFQUFFLE1BQU0scUJBQXFCLENBQUM7O0FBd0J2RSxNQUFNLE9BQU8scUJBQXFCO0lBQ2YsSUFBSSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUMxQixhQUFhLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUM7SUFDaEQsaUJBQWlCLEdBQUcsSUFBSSxPQUFPLEVBQXVCLENBQUM7SUFDdkQsa0JBQWtCLEdBQUcsSUFBSSxlQUFlLENBQVksRUFBRSxDQUFDLENBQUM7SUFDeEQsc0JBQXNCLEdBQUcsSUFBSSxPQUFPLEVBQXlCLENBQUM7SUFDdEUsUUFBUSxHQUFHLElBQUksT0FBTyxFQUFFLENBQUM7SUFDbEIsWUFBWSxDQUFTO0lBQ3JCLE9BQU8sQ0FBVTtJQUN4QixnQkFBZ0IsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDMUQsZUFBZSxHQUFHLElBQUksQ0FBQyxp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TyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUMxQixJQUFJLENBQUM7Z0JBQ0gsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFFdkQsSUFBSSxLQUFLLElBQUksTUFBTSxDQUFDLE1BQU0sSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLFdBQVcsSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsQ0FBQztvQkFDNUYsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7Z0JBQ3BILENBQUM7cUJBQU0sSUFBSSxLQUFLLElBQUksTUFBTSxDQUFDLE1BQU0sSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLFlBQVksSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLEVBQUUsQ0FBQztvQkFDckcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7Z0JBQ3RILENBQUM7Z0JBRUQsSUFBSSxLQUFLLEVBQUUsQ0FBQztvQkFDVixJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQzt3QkFDNUIsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQzt3QkFFMUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksV0FBVyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJ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QzFDLEtBQUssQ0FBQyxhQUFhLENBQUMsR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3RDLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDakQsQ0FBQzthQUFNLENBQUM7WUFDTixLQUFLLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNmLENBQUM7SUFDSCxDQUFDO3dHQTNKVSxxQkFBcUI7NEdBQXJCLHFCQUFxQjs7NEZBQXJCLHFCQUFxQjtrQkFEakMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBIZWFkZXJzLCBIdHRwRXJyb3JSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IEluamVjdGFibGUsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgR0VUX0ZJTFRFUlNfVVJMLCBTQVZFX0ZJTFRFUlNfVVJMLCBTQVZFX1RJQ0tFRF9GSUxURVJfVVJMIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgU3ViamVjdCwgT2JzZXJ2YWJsZSwgQmVoYXZpb3JTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBGaWx0ZXIgfSBmcm9tICcuLi9tb2RlbHMvZmlsdGVyJztcbmltcG9ydCB7IEZpbHRlclZhbHVlIH0gZnJvbSAnLi4vbW9kZWxzL2ZpbHRlci12YWx1ZSc7XG5pbXBvcnQgeyBDb250ZXh0IH0gZnJvbSAnLi4vbW9kZWxzL2NvbnRleHQnO1xuaW1wb3J0IHsgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgVGlja2VkRmlsdGVyIH0gZnJvbSAnLi4vbW9kZWxzL3RpY2tlZC1maWx0ZXInO1xuaW1wb3J0IHsgc2VhcmNoRGlzcGxheU5hbWUsIHNlYXJjaEtleU5hbWUgfSBmcm9tICcuLi9zaGFyZWQvY29uc3RhbnRzJztcblxuZXhwb3J0IGludGVyZmFjZSBUaWNrZWRGaWx0ZXJSZXNwb25zZSB7XG4gIHRpY2tldDogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbnRleHRzRmlsdGVyc1Jlc3BvbnNlIHtcbiAgZmlsdGVyczogRmlsdGVyW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUdldEZpbHRlcnNSZXNwb25zZSB7XG4gIGVycm9yPzogYm9vbGVhbjtcbiAgbWVzc2FnZT86IEh0dHBFcnJvclJlc3BvbnNlO1xuICBmaWx0ZXJzPzogRmlsdGVyW107XG4gIGFwcGx5RmlsdGVyPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJVGlja2VyRmlsdGVyUmVzcG9uc2Uge1xuICB0aWNrZXRGaWx0ZXI/OiBzdHJpbmc7XG4gIGVycm9yPzogYm9vbGVhbjtcbiAgbWVzc2FnZT86IHN0cmluZztcbn1cblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEFkdmFuY2VkRmlsdGVyU2VydmljZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgaHR0cCA9IGluamVjdChIdHRwQ2xpZW50KTtcbiAgcHJpdmF0ZSByZWFkb25seSBhbGxvd2VkT3JpZ2luID0gd2luZG93LmxvY2F0aW9uLm9yaWdpbjtcbiAgcHJpdmF0ZSBmaWx0ZXJzT2JzZXJ2YWJsZSA9IG5ldyBTdWJqZWN0PElHZXRGaWx0ZXJzUmVzcG9uc2U+KCk7XG4gIHByaXZhdGUgY29udGV4dHNPYnNlcnZhYmxlID0gbmV3IEJlaGF2aW9yU3ViamVjdDxDb250ZXh0W10+KFtdKTtcbiAgcHJpdmF0ZSB0aWNrZXRGaWx0ZXJPYnNlcnZhYmxlID0gbmV3IFN1YmplY3Q8SVRpY2tlckZpbHRlclJlc3BvbnNlPigpO1xuICBkZXN0cm95JCA9IG5ldyBTdWJqZWN0KCk7XG4gIHB1YmxpYyB0aWNrZXRGaWx0ZXI6IHN0cmluZztcbiAgcHVibGljIHZpc2libGU6IGJvb2xlYW47XG4gIGNvbnRleHRzT2JzZXJ2ZXIgPSB0aGlzLmNvbnRleHRzT2JzZXJ2YWJsZS5hc09ic2VydmFibGUoKTtcbiAgZmlsdGVyc09ic2VydmVyID0gdGhpcy5maWx0ZXJzT2JzZXJ2YWJsZS5hc09ic2VydmFibGUoKTtcbiAgdGlja2V0RmlsdGVyT2JzZXJ2ZXIgPSB0aGlzLnRpY2tldEZpbHRlck9ic2VydmFibGUuYXNPYnNlcnZhYmxlKCk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5jb250ZXh0c09ic2VydmFibGUuc3Vic2NyaWJlKGNvbnRleHRzID0+IGNvbnRleHRzLmxlbmd0aCAmJiB0aGlzLmdldEFuZEFwcGx5RmlsdGVycyhjb250ZXh0cykpO1xuICB9XG5cbiAgc2F2ZVRpY2tlZEZpbHRlcnMoZmlsdGVyczogVGlja2VkRmlsdGVyW10pIHtcbiAgICBjb25zdCByZXF1ZXN0Qm9keSA9IHRoaXMudGlja2V0RmlsdGVyID8geyBmaWx0ZXJzLCB0aWNrZXRGaWx0ZXI6IHRoaXMudGlja2V0RmlsdGVyIH0gOiB7IGZpbHRlcnMgfTtcbiAgICB0aGlzLmh0dHBcbiAgICAgIC5wb3N0PFRpY2tlZEZpbHRlclJlc3BvbnNlPihTQVZFX1RJQ0tFRF9GSUxURVJfVVJMLCByZXF1ZXN0Qm9keSlcbiAgICAgIC5waXBlKG1hcChyZXNwb25zZSA9PiByZXNwb25zZS50aWNrZXQpKVxuICAgICAgLnN1YnNjcmliZSh7XG4gICAgICAgIG5leHQ6IHRpY2tldEZpbHRlciA9PiB7XG4gICAgICAgICAgdGhpcy50aWNrZXRGaWx0ZXIgPSB0aWNrZXRGaWx0ZXI7XG4gICAgICAgICAgdGhpcy50aWNrZXRGaWx0ZXJPYnNlcnZhYmxlLm5leHQoeyB0aWNrZXRGaWx0ZXIgfSk7XG4gICAgICAgICAgLy8gTk9TT05BUlxuICAgICAgICAgIHdpbmRvdy5wYXJlbnQucG9zdE1lc3NhZ2UoXG4gICAgICAgICAgICB7IG1lc3NhZ2U6ICdhZHZhbmNlZC1maWx0ZXI6c3VjY2VzcycsIHBheWxvYWQ6IHRpY2tldEZpbHRlciB9LFxuICAgICAgICAgICAgdGhpcy5hbGxvd2VkT3JpZ2luXG4gICAgICAgICAgKTtcbiAgICAgICAgfSxcbiAgICAgICAgZXJyb3I6IGVyciA9PiB7XG4gICAgICAgICAgdGhpcy50aWNrZXRGaWx0ZXJPYnNlcnZhYmxlLm5leHQoeyBlcnJvcjogdHJ1ZSwgbWVzc2FnZTogZXJyIH0pO1xuICAgICAgICAgIC8vIE5PU09OQVJcbiAgICAgICAgICB3aW5kb3cucGFyZW50LnBvc3RNZXNzYWdlKFxuICAgICAgICAgICAgeyBtZXNzYWdlOiAnYWR2YW5jZWQtZmlsdGVyOmVycm9yJywgcGF5bG9hZDogZXJyIH0sXG4gICAgICAgICAgICB0aGlzLmFsbG93ZWRPcmlnaW5cbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICB9XG5cbiAgYWRkQ29udGV4dHMoLi4uY29udGV4dHM6IENvbnRleHRbXSk6IE9ic2VydmFibGU8Q29udGV4dFtdPiB7XG4gICAgY29uc3QgY3VycmVudENvbnRleHRzID0gdGhpcy5jb250ZXh0c09ic2VydmFibGUuZ2V0VmFsdWUoKTtcbiAgICB0aGlzLmNvbnRleHRzT2JzZXJ2YWJsZS5uZXh0KFsuLi5jdXJyZW50Q29udGV4dHMsIC4uLmNvbnRleHRzXSk7XG4gICAgcmV0dXJuIE9ic2VydmFibGUuY3JlYXRlKCgpID0+ICgpID0+IHRoaXMucmVtb3ZlQ29udGV4dHMoY29udGV4dHMpKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVtb3ZlQ29udGV4dHMoY29udGV4dHM6IENvbnRleHRbXSkge1xuICAgIGNvbnN0IGFsbENvbnRleHRzID0gdGhpcy5jb250ZXh0c09ic2VydmFibGUuZ2V0VmFsdWUoKTtcbiAgICBjb25zdCBmaWx0ZXJlZENvbnRleHRzID0gYWxsQ29udGV4dHMuZmlsdGVyKGNvbnRleHQgPT4gY29udGV4dHMuaW5kZXhPZihjb250ZXh0KSA9PT0gLTEpO1xuICAgIHRoaXMuY29udGV4dHNPYnNlcnZhYmxlLm5leHQoZmlsdGVyZWRDb250ZXh0cyk7XG4gIH1cblxuICBzYXZlRmlsdGVycyhmaWx0ZXJzOiBGaWx0ZXJWYWx1ZVtdKSB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFNBVkVfRklMVEVSU19VUkwsIHsgZmlsdGVycyB9KTtcbiAgfVxuXG4gIHNlYXJjaEZpZWxkU3VnZ2VzdGlvbnModXJsOiBzdHJpbmcsIHBhcmFtczogYW55LCB0eXBlOiBhbnkpIHtcbiAgICBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKHsgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uOyBjaGFyc2V0PXV0Zi04JyB9KTtcbiAgICBpZiAodHlwZSA9PT0gJ0VOVElUWScpIHtcbiAgICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KHVybCwgeyBoZWFkZXJzIH0pO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QodXJsLCBwYXJhbXMsIHsgaGVhZGVycyB9KTtcbiAgfVxuXG4gIHB1YmxpYyB0cnlBZ2FpbihzZXJ2aWNlQ29udGV4dHM6IENvbnRleHRbXSkge1xuICAgIHRoaXMuZ2V0RmlsdGVycyhzZXJ2aWNlQ29udGV4dHMpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRBbmRBcHBseUZpbHRlcnMoc2VydmljZUNvbnRleHRzOiBDb250ZXh0W10pIHtcbiAgICB0aGlzLmdldEZpbHRlcnMoc2VydmljZUNvbnRleHRzLCB0cnVlKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0RmlsdGVycyhzZXJ2aWNlQ29udGV4dHM6IENvbnRleHRbXSwgYXBwbHlGaWx0ZXI/OiBib29sZWFuKSB7XG4gICAgdGhpcy5odHRwXG4gICAgICAucG9zdDxDb250ZXh0c0ZpbHRlcnNSZXNwb25zZT4oR0VUX0ZJTFRFUlNfVVJMLCB7IHNlcnZpY2VDb250ZXh0cyB9KVxuICAgICAgLnBpcGUobWFwKHJlc3BvbnNlID0+IHRoaXMubWFwRmlsdGVycyhyZXNwb25zZS5maWx0ZXJzKSkpXG4gICAgICAuc3Vic2NyaWJlKFxuICAgICAgICBmaWx0ZXJzID0+IHRoaXMuZmlsdGVyc09ic2VydmFibGUubmV4dCh7IGZpbHRlcnMsIGFwcGx5RmlsdGVyIH0pLCAvL1xuICAgICAgICBlcnIgPT4gdGhpcy5maWx0ZXJzT2JzZXJ2YWJsZS5uZXh0KHsgZXJyb3I6IHRydWUsIG1lc3NhZ2U6IGVyciB9KVxuICAgICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgbWFwRmlsdGVycyhmaWx0ZXJzOiBGaWx0ZXJbXSk6IEZpbHRlcltdIHtcbiAgICByZXR1cm4gZmlsdGVycy5tYXAoZmlsdGVyID0+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gZmlsdGVyLnZhbHVlICYmIEpTT04ucGFyc2UoZmlsdGVyLnZhbHVlKTtcblxuICAgICAgICBpZiAodmFsdWUgJiYgZmlsdGVyLnNlYXJjaCAmJiBmaWx0ZXIuc2VhcmNoLmJhc2ljU2VhcmNoICYmIGZpbHRlci5zZWFyY2guYmFzaWNTZWFyY2gub3V0cHV0KSB7XG4gICAgICAgICAgdGhpcy5tYXBWYWx1ZXModmFsdWUsIGZpbHRlci5zZWFyY2guYmFzaWNTZWFyY2gub3V0cHV0LmtleUZpZWxkcywgZmlsdGVyLnNlYXJjaC5iYXNpY1NlYXJjaC5vdXRwdXQuZGlzcGxheUZpZWxkcyk7XG4gICAgICAgIH0gZWxzZSBpZiAodmFsdWUgJiYgZmlsdGVyLnNlYXJjaCAmJiBmaWx0ZXIuc2VhcmNoLmVudGl0eVNlYXJjaCAmJiBmaWx0ZXIuc2VhcmNoLmVudGl0eVNlYXJjaC5vdXRwdXQpIHtcbiAgICAgICAgICB0aGlzLm1hcFZhbHVlcyh2YWx1ZSwgZmlsdGVyLnNlYXJjaC5lbnRpdHlTZWFyY2gub3V0cHV0LmtleUZpZWxkcywgZmlsdGVyLnNlYXJjaC5lbnRpdHlTZWFyY2gub3V0cHV0LmRpc3BsYXlGaWVsZHMpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgaWYgKHRoaXMuaXNNdWx0aXBsZShmaWx0ZXIpKSB7XG4gICAgICAgICAgICBjb25zdCB2YWx1ZUluVGV4dCA9IEpTT04uc3RyaW5naWZ5KHZhbHVlKTtcblxuICAgICAgICAgICAgaWYgKCh2YWx1ZUluVGV4dC5zdGFydHNXaXRoKCdbeycpICYmIHZhbHVlSW5UZXh0LmVuZHNXaXRoKCd9XScpKSB8fCB2YWx1ZUluVGV4dC5sZW5ndGggPD0gNCkge1xuICAgICAgICAgICAgICBmaWx0ZXIudmFsdWUgPSB2YWx1ZUluVGV4dDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGZpbHRlci52YWx1ZSA9IEpTT04uc3RyaW5naWZ5KCcnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZmlsdGVyLnZhbHVlID0gSlNPTi5zdHJpbmdpZnkodmFsdWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCAoZXgpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihgR2xvYmFsOiBmaWx0ZXIgJHtmaWx0ZXIubmFtZX0gaGFzIHZhbHVlIGVycm9yLiBgLCBleCk7XG4gICAgICAgIGZpbHRlci52YWx1ZSA9IEpTT04uc3RyaW5naWZ5KCcnKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGZpbHRlcjtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgaXNNdWx0aXBsZShmaWx0ZXI6IEZpbHRlcik6IGJvb2xlYW4ge1xuICAgIHJldHVybiAoXG4gICAgICBmaWx0ZXIudHlwZSA9PT0gJ1NFQVJDSCcgJiZcbiAgICAgIGZpbHRlci5zZWFyY2ggJiZcbiAgICAgICgoZmlsdGVyLnNlYXJjaC5iYXNpY1NlYXJjaCAmJiBmaWx0ZXIuc2VhcmNoLmJhc2ljU2VhcmNoLm91dHB1dCAmJiBmaWx0ZXIuc2VhcmNoLmJhc2ljU2VhcmNoLm91dHB1dC5tYXhTZWxlY3RlZEl0ZW1zID4gMSkgfHxcbiAgICAgICAgKGZpbHRlci5zZWFyY2guZW50aXR5U2VhcmNoICYmIGZpbHRlci5zZWFyY2guZW50aXR5U2VhcmNoLm91dHB1dCAmJiBmaWx0ZXIuc2VhcmNoLmVudGl0eVNlYXJjaC5vdXRwdXQubWF4U2VsZWN0ZWRJdGVtcyA+IDEpKVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIG1hcFZhbHVlcyh2YWx1ZTogYW55LCBrZXlGaWVsZHM6IHN0cmluZ1tdLCBkaXNwbGF5RmllbGRzOiBzdHJpbmdbXSkge1xuICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgdmFsdWUuZm9yRWFjaChlID0+IHtcbiAgICAgICAgdGhpcy5tYXBWYWx1ZShlLCBrZXlGaWVsZHMsIGRpc3BsYXlGaWVsZHMpO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubWFwVmFsdWUodmFsdWUsIGtleUZpZWxkcywgZGlzcGxheUZpZWxkcyk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBtYXBWYWx1ZSh2YWx1ZTogYW55LCBrZXlGaWVsZHM6IHN0cmluZ1tdLCBkaXNwbGF5RmllbGRzOiBzdHJpbmdbXSkge1xuICAgIGlmICghdmFsdWUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBpZHMgPSBbXSBhcyBzdHJpbmdbXTtcbiAgICBjb25zdCBkaXNwbGF5cyA9IFtdIGFzIHN0cmluZ1tdO1xuXG4gICAga2V5RmllbGRzLmZpbHRlcihlID0+IHZhbHVlW2VdICE9PSB1bmRlZmluZWQpLmZvckVhY2goZSA9PiBpZHMucHVzaCh2YWx1ZVtlXSkpO1xuICAgIGRpc3BsYXlGaWVsZHMuZmlsdGVyKGUgPT4gdmFsdWVbZV0gIT09IHVuZGVmaW5lZCkuZm9yRWFjaChlID0+IGRpc3BsYXlzLnB1c2godmFsdWVbZV0pKTtcblxuICAgIGlmIChpZHMubGVuZ3RoID4gMCAmJiBkaXNwbGF5cy5sZW5ndGggPiAwKSB7XG4gICAgICB2YWx1ZVtzZWFyY2hLZXlOYW1lXSA9IGlkcy5qb2luKCcsICcpO1xuICAgICAgdmFsdWVbc2VhcmNoRGlzcGxheU5hbWVdID0gZGlzcGxheXMuam9pbignLCAnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFsdWUgPSBbJyddO1xuICAgIH1cbiAgfVxufVxuIl19
157
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWR2YW5jZWQtZmlsdGVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWIvc3JjL21vZHVsZXMvYWR2YW5jZWQtZmlsdGVyL3NlcnZpY2VzL2FkdmFuY2VkLWZpbHRlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFxQixNQUFNLHNCQUFzQixDQUFDO0FBQ2xGLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxlQUFlLEVBQUUsZ0JBQWdCLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDeEYsT0FBTyxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsZUFBZSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBSTVELE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVyQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsYUFBYSxFQUFFLE1BQU0scUJBQXFCLENBQUM7O0FBd0J2RSxNQUFNLE9BQU8scUJBQXFCO0lBQ2YsSUFBSSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUMxQixhQUFhLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUM7SUFDaEQsaUJBQWlCLEdBQUcsSUFBSSxPQUFPLEVBQXVCLENBQUM7SUFDdkQsa0JBQWtCLEdBQUcsSUFBSSxlQUFlLENBQVksRUFBRSxDQUFDLENBQUM7SUFDeEQsc0JBQXNCLEdBQUcsSUFBSSxPQUFPLEVBQXlCLENBQUM7SUFDdEUsUUFBUSxHQUFHLElBQUksT0FBTyxFQUFFLENBQUM7SUFDbEIsWUFBWSxDQUFTO0lBQ3JCLE9BQU8sQ0FBVTtJQUN4QixnQkFBZ0IsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDMUQsZUFBZSxHQUFHLElBQUksQ0FBQyxp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LElBQUksUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUMxQyxLQUFLLENBQUMsYUFBYSxDQUFDLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUN0QyxLQUFLLENBQUMsaUJBQWlCLENBQUMsR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2pELENBQUM7YUFBTSxDQUFDO1lBQ04sS0FBSyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDZixDQUFDO0lBQ0gsQ0FBQzt3R0E5SlUscUJBQXFCOzRHQUFyQixxQkFBcUI7OzRGQUFyQixxQkFBcUI7a0JBRGpDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwSGVhZGVycywgSHR0cEVycm9yUmVzcG9uc2UgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBJbmplY3RhYmxlLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEdFVF9GSUxURVJTX1VSTCwgU0FWRV9GSUxURVJTX1VSTCwgU0FWRV9USUNLRURfRklMVEVSX1VSTCB9IGZyb20gJy4vY29uc3RhbnRzJztcbmltcG9ydCB7IFN1YmplY3QsIE9ic2VydmFibGUsIEJlaGF2aW9yU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRmlsdGVyIH0gZnJvbSAnLi4vbW9kZWxzL2ZpbHRlcic7XG5pbXBvcnQgeyBGaWx0ZXJWYWx1ZSB9IGZyb20gJy4uL21vZGVscy9maWx0ZXItdmFsdWUnO1xuaW1wb3J0IHsgQ29udGV4dCB9IGZyb20gJy4uL21vZGVscy9jb250ZXh0JztcbmltcG9ydCB7IG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IFRpY2tlZEZpbHRlciB9IGZyb20gJy4uL21vZGVscy90aWNrZWQtZmlsdGVyJztcbmltcG9ydCB7IHNlYXJjaERpc3BsYXlOYW1lLCBzZWFyY2hLZXlOYW1lIH0gZnJvbSAnLi4vc2hhcmVkL2NvbnN0YW50cyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGlja2VkRmlsdGVyUmVzcG9uc2Uge1xuICB0aWNrZXQ6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb250ZXh0c0ZpbHRlcnNSZXNwb25zZSB7XG4gIGZpbHRlcnM6IEZpbHRlcltdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElHZXRGaWx0ZXJzUmVzcG9uc2Uge1xuICBlcnJvcj86IGJvb2xlYW47XG4gIG1lc3NhZ2U/OiBIdHRwRXJyb3JSZXNwb25zZTtcbiAgZmlsdGVycz86IEZpbHRlcltdO1xuICBhcHBseUZpbHRlcj86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVRpY2tlckZpbHRlclJlc3BvbnNlIHtcbiAgdGlja2V0RmlsdGVyPzogc3RyaW5nO1xuICBlcnJvcj86IGJvb2xlYW47XG4gIG1lc3NhZ2U/OiBzdHJpbmc7XG59XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBBZHZhbmNlZEZpbHRlclNlcnZpY2Uge1xuICBwcml2YXRlIHJlYWRvbmx5IGh0dHAgPSBpbmplY3QoSHR0cENsaWVudCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgYWxsb3dlZE9yaWdpbiA9IHdpbmRvdy5sb2NhdGlvbi5vcmlnaW47XG4gIHByaXZhdGUgZmlsdGVyc09ic2VydmFibGUgPSBuZXcgU3ViamVjdDxJR2V0RmlsdGVyc1Jlc3BvbnNlPigpO1xuICBwcml2YXRlIGNvbnRleHRzT2JzZXJ2YWJsZSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Q29udGV4dFtdPihbXSk7XG4gIHByaXZhdGUgdGlja2V0RmlsdGVyT2JzZXJ2YWJsZSA9IG5ldyBTdWJqZWN0PElUaWNrZXJGaWx0ZXJSZXNwb25zZT4oKTtcbiAgZGVzdHJveSQgPSBuZXcgU3ViamVjdCgpO1xuICBwdWJsaWMgdGlja2V0RmlsdGVyOiBzdHJpbmc7XG4gIHB1YmxpYyB2aXNpYmxlOiBib29sZWFuO1xuICBjb250ZXh0c09ic2VydmVyID0gdGhpcy5jb250ZXh0c09ic2VydmFibGUuYXNPYnNlcnZhYmxlKCk7XG4gIGZpbHRlcnNPYnNlcnZlciA9IHRoaXMuZmlsdGVyc09ic2VydmFibGUuYXNPYnNlcnZhYmxlKCk7XG4gIHRpY2tldEZpbHRlck9ic2VydmVyID0gdGhpcy50aWNrZXRGaWx0ZXJPYnNlcnZhYmxlLmFzT2JzZXJ2YWJsZSgpO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuY29udGV4dHNPYnNlcnZhYmxlLnN1YnNjcmliZSgoY29udGV4dHMpID0+IGNvbnRleHRzLmxlbmd0aCAmJiB0aGlzLmdldEFuZEFwcGx5RmlsdGVycyhjb250ZXh0cykpO1xuICB9XG5cbiAgc2F2ZVRpY2tlZEZpbHRlcnMoZmlsdGVyczogVGlja2VkRmlsdGVyW10pIHtcbiAgICBjb25zdCByZXF1ZXN0Qm9keSA9IHRoaXMudGlja2V0RmlsdGVyID8geyBmaWx0ZXJzLCB0aWNrZXRGaWx0ZXI6IHRoaXMudGlja2V0RmlsdGVyIH0gOiB7IGZpbHRlcnMgfTtcbiAgICB0aGlzLmh0dHBcbiAgICAgIC5wb3N0PFRpY2tlZEZpbHRlclJlc3BvbnNlPihTQVZFX1RJQ0tFRF9GSUxURVJfVVJMLCByZXF1ZXN0Qm9keSlcbiAgICAgIC5waXBlKG1hcCgocmVzcG9uc2UpID0+IHJlc3BvbnNlLnRpY2tldCkpXG4gICAgICAuc3Vic2NyaWJlKHtcbiAgICAgICAgbmV4dDogKHRpY2tldEZpbHRlcikgPT4ge1xuICAgICAgICAgIHRoaXMudGlja2V0RmlsdGVyID0gdGlja2V0RmlsdGVyO1xuICAgICAgICAgIHRoaXMudGlja2V0RmlsdGVyT2JzZXJ2YWJsZS5uZXh0KHsgdGlja2V0RmlsdGVyIH0pO1xuICAgICAgICAgIC8vIE5PU09OQVJcbiAgICAgICAgICB3aW5kb3cucGFyZW50LnBvc3RNZXNzYWdlKHsgbWVzc2FnZTogJ2FkdmFuY2VkLWZpbHRlcjpzdWNjZXNzJywgcGF5bG9hZDogdGlja2V0RmlsdGVyIH0sIHRoaXMuYWxsb3dlZE9yaWdpbik7XG4gICAgICAgIH0sXG4gICAgICAgIGVycm9yOiAoZXJyKSA9PiB7XG4gICAgICAgICAgdGhpcy50aWNrZXRGaWx0ZXJPYnNlcnZhYmxlLm5leHQoeyBlcnJvcjogdHJ1ZSwgbWVzc2FnZTogZXJyIH0pO1xuICAgICAgICAgIC8vIE5PU09OQVJcbiAgICAgICAgICB3aW5kb3cucGFyZW50LnBvc3RNZXNzYWdlKHsgbWVzc2FnZTogJ2FkdmFuY2VkLWZpbHRlcjplcnJvcicsIHBheWxvYWQ6IGVyciB9LCB0aGlzLmFsbG93ZWRPcmlnaW4pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxuXG4gIGFkZENvbnRleHRzKC4uLmNvbnRleHRzOiBDb250ZXh0W10pOiBPYnNlcnZhYmxlPENvbnRleHRbXT4ge1xuICAgIGNvbnN0IGN1cnJlbnRDb250ZXh0cyA9IHRoaXMuY29udGV4dHNPYnNlcnZhYmxlLmdldFZhbHVlKCk7XG4gICAgdGhpcy5jb250ZXh0c09ic2VydmFibGUubmV4dChbLi4uY3VycmVudENvbnRleHRzLCAuLi5jb250ZXh0c10pO1xuICAgIHJldHVybiBPYnNlcnZhYmxlLmNyZWF0ZSgoKSA9PiAoKSA9PiB0aGlzLnJlbW92ZUNvbnRleHRzKGNvbnRleHRzKSk7XG4gIH1cblxuICBwcml2YXRlIHJlbW92ZUNvbnRleHRzKGNvbnRleHRzOiBDb250ZXh0W10pIHtcbiAgICBjb25zdCBhbGxDb250ZXh0cyA9IHRoaXMuY29udGV4dHNPYnNlcnZhYmxlLmdldFZhbHVlKCk7XG4gICAgY29uc3QgZmlsdGVyZWRDb250ZXh0cyA9IGFsbENvbnRleHRzLmZpbHRlcigoY29udGV4dCkgPT4gY29udGV4dHMuaW5kZXhPZihjb250ZXh0KSA9PT0gLTEpO1xuICAgIHRoaXMuY29udGV4dHNPYnNlcnZhYmxlLm5leHQoZmlsdGVyZWRDb250ZXh0cyk7XG4gIH1cblxuICBzYXZlRmlsdGVycyhmaWx0ZXJzOiBGaWx0ZXJWYWx1ZVtdKSB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFNBVkVfRklMVEVSU19VUkwsIHsgZmlsdGVycyB9KTtcbiAgfVxuXG4gIHNlYXJjaEZpZWxkU3VnZ2VzdGlvbnModXJsOiBzdHJpbmcsIHBhcmFtczogYW55LCB0eXBlOiBhbnkpIHtcbiAgICBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKHsgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uOyBjaGFyc2V0PXV0Zi04JyB9KTtcbiAgICBpZiAodHlwZSA9PT0gJ0VOVElUWScpIHtcbiAgICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KHVybCwgeyBoZWFkZXJzIH0pO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QodXJsLCBwYXJhbXMsIHsgaGVhZGVycyB9KTtcbiAgfVxuXG4gIHB1YmxpYyB0cnlBZ2FpbihzZXJ2aWNlQ29udGV4dHM6IENvbnRleHRbXSkge1xuICAgIHRoaXMuZ2V0RmlsdGVycyhzZXJ2aWNlQ29udGV4dHMpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRBbmRBcHBseUZpbHRlcnMoc2VydmljZUNvbnRleHRzOiBDb250ZXh0W10pIHtcbiAgICB0aGlzLmdldEZpbHRlcnMoc2VydmljZUNvbnRleHRzLCB0cnVlKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0RmlsdGVycyhzZXJ2aWNlQ29udGV4dHM6IENvbnRleHRbXSwgYXBwbHlGaWx0ZXI/OiBib29sZWFuKSB7XG4gICAgdGhpcy5odHRwXG4gICAgICAucG9zdDxDb250ZXh0c0ZpbHRlcnNSZXNwb25zZT4oR0VUX0ZJTFRFUlNfVVJMLCB7IHNlcnZpY2VDb250ZXh0cyB9KVxuICAgICAgLnBpcGUobWFwKChyZXNwb25zZSkgPT4gdGhpcy5tYXBGaWx0ZXJzKHJlc3BvbnNlLmZpbHRlcnMpKSlcbiAgICAgIC5zdWJzY3JpYmUoXG4gICAgICAgIChmaWx0ZXJzKSA9PiB0aGlzLmZpbHRlcnNPYnNlcnZhYmxlLm5leHQoeyBmaWx0ZXJzLCBhcHBseUZpbHRlciB9KSwgLy9cbiAgICAgICAgKGVycikgPT4gdGhpcy5maWx0ZXJzT2JzZXJ2YWJsZS5uZXh0KHsgZXJyb3I6IHRydWUsIG1lc3NhZ2U6IGVyciB9KVxuICAgICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgbWFwRmlsdGVycyhmaWx0ZXJzOiBGaWx0ZXJbXSk6IEZpbHRlcltdIHtcbiAgICByZXR1cm4gZmlsdGVycy5tYXAoKGZpbHRlcikgPT4ge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgdmFsdWUgPSBmaWx0ZXIudmFsdWUgJiYgSlNPTi5wYXJzZShmaWx0ZXIudmFsdWUpO1xuICAgICAgICB0aGlzLmFwcGx5U2VhcmNoTWFwcGluZyhmaWx0ZXIsIHZhbHVlKTtcbiAgICAgICAgdGhpcy5hc3NpZ25GaWx0ZXJWYWx1ZShmaWx0ZXIsIHZhbHVlKTtcbiAgICAgIH0gY2F0Y2ggKGV4KSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoYEdsb2JhbDogZmlsdGVyICR7ZmlsdGVyLm5hbWV9IGhhcyB2YWx1ZSBlcnJvci4gYCwgZXgpO1xuICAgICAgICBmaWx0ZXIudmFsdWUgPSBKU09OLnN0cmluZ2lmeSgnJyk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBmaWx0ZXI7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGFwcGx5U2VhcmNoTWFwcGluZyhmaWx0ZXI6IEZpbHRlciwgdmFsdWU6IGFueSk6IHZvaWQge1xuICAgIGNvbnN0IGJhc2ljT3V0cHV0ID0gZmlsdGVyLnNlYXJjaD8uYmFzaWNTZWFyY2g/Lm91dHB1dDtcbiAgICBpZiAodmFsdWUgJiYgYmFzaWNPdXRwdXQpIHtcbiAgICAgIHRoaXMubWFwVmFsdWVzKHZhbHVlLCBiYXNpY091dHB1dC5rZXlGaWVsZHMsIGJhc2ljT3V0cHV0LmRpc3BsYXlGaWVsZHMpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBlbnRpdHlPdXRwdXQgPSBmaWx0ZXIuc2VhcmNoPy5lbnRpdHlTZWFyY2g/Lm91dHB1dDtcbiAgICBpZiAodmFsdWUgJiYgZW50aXR5T3V0cHV0KSB7XG4gICAgICB0aGlzLm1hcFZhbHVlcyh2YWx1ZSwgZW50aXR5T3V0cHV0LmtleUZpZWxkcywgZW50aXR5T3V0cHV0LmRpc3BsYXlGaWVsZHMpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXNzaWduRmlsdGVyVmFsdWUoZmlsdGVyOiBGaWx0ZXIsIHZhbHVlOiBhbnkpOiB2b2lkIHtcbiAgICBpZiAoIXZhbHVlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICh0aGlzLmlzTXVsdGlwbGUoZmlsdGVyKSkge1xuICAgICAgY29uc3QgdmFsdWVJblRleHQgPSBKU09OLnN0cmluZ2lmeSh2YWx1ZSk7XG4gICAgICBpZiAoKHZhbHVlSW5UZXh0LnN0YXJ0c1dpdGgoJ1t7JykgJiYgdmFsdWVJblRleHQuZW5kc1dpdGgoJ31dJykpIHx8IHZhbHVlSW5UZXh0Lmxlbmd0aCA8PSA0KSB7XG4gICAgICAgIGZpbHRlci52YWx1ZSA9IHZhbHVlSW5UZXh0O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZmlsdGVyLnZhbHVlID0gSlNPTi5zdHJpbmdpZnkoJycpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBmaWx0ZXIudmFsdWUgPSBKU09OLnN0cmluZ2lmeSh2YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBpc011bHRpcGxlKGZpbHRlcjogRmlsdGVyKTogYm9vbGVhbiB7XG4gICAgaWYgKGZpbHRlci50eXBlICE9PSAnU0VBUkNIJyB8fCAhZmlsdGVyLnNlYXJjaCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBjb25zdCBiYXNpY01heCA9IGZpbHRlci5zZWFyY2guYmFzaWNTZWFyY2g/Lm91dHB1dD8ubWF4U2VsZWN0ZWRJdGVtcyA/PyAwO1xuICAgIGNvbnN0IGVudGl0eU1heCA9IGZpbHRlci5zZWFyY2guZW50aXR5U2VhcmNoPy5vdXRwdXQ/Lm1heFNlbGVjdGVkSXRlbXMgPz8gMDtcbiAgICByZXR1cm4gYmFzaWNNYXggPiAxIHx8IGVudGl0eU1heCA+IDE7XG4gIH1cblxuICBwcml2YXRlIG1hcFZhbHVlcyh2YWx1ZTogYW55LCBrZXlGaWVsZHM6IHN0cmluZ1tdLCBkaXNwbGF5RmllbGRzOiBzdHJpbmdbXSkge1xuICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgdmFsdWUuZm9yRWFjaCgoZSkgPT4ge1xuICAgICAgICB0aGlzLm1hcFZhbHVlKGUsIGtleUZpZWxkcywgZGlzcGxheUZpZWxkcyk7XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5tYXBWYWx1ZSh2YWx1ZSwga2V5RmllbGRzLCBkaXNwbGF5RmllbGRzKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIG1hcFZhbHVlKHZhbHVlOiBhbnksIGtleUZpZWxkczogc3RyaW5nW10sIGRpc3BsYXlGaWVsZHM6IHN0cmluZ1tdKSB7XG4gICAgaWYgKCF2YWx1ZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGlkcyA9IFtdIGFzIHN0cmluZ1tdO1xuICAgIGNvbnN0IGRpc3BsYXlzID0gW10gYXMgc3RyaW5nW107XG5cbiAgICBrZXlGaWVsZHMuZmlsdGVyKChlKSA9PiB2YWx1ZVtlXSAhPT0gdW5kZWZpbmVkKS5mb3JFYWNoKChlKSA9PiBpZHMucHVzaCh2YWx1ZVtlXSkpO1xuICAgIGRpc3BsYXlGaWVsZHMuZmlsdGVyKChlKSA9PiB2YWx1ZVtlXSAhPT0gdW5kZWZpbmVkKS5mb3JFYWNoKChlKSA9PiBkaXNwbGF5cy5wdXNoKHZhbHVlW2VdKSk7XG5cbiAgICBpZiAoaWRzLmxlbmd0aCA+IDAgJiYgZGlzcGxheXMubGVuZ3RoID4gMCkge1xuICAgICAgdmFsdWVbc2VhcmNoS2V5TmFtZV0gPSBpZHMuam9pbignLCAnKTtcbiAgICAgIHZhbHVlW3NlYXJjaERpc3BsYXlOYW1lXSA9IGRpc3BsYXlzLmpvaW4oJywgJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhbHVlID0gWycnXTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
@@ -1,18 +1,20 @@
1
1
  import { UserAction } from './../models/user-action.enum';
2
- import { Component, EventEmitter, Input, Output, inject } from '@angular/core';
2
+ import { Component, ElementRef, EventEmitter, Input, Output, inject } from '@angular/core';
3
3
  import { SpotlightService } from '../service/spotlight.service';
4
4
  import { EnumDisplayType, EnumSpotlightStatus } from '../models/index';
5
5
  import { DatePipe } from '@angular/common';
6
6
  import { CookieService } from 'ngx-cookie-service';
7
7
  import * as i0 from "@angular/core";
8
- import * as i1 from "primeng/button";
9
- import * as i2 from "primeng/tooltip";
10
- import * as i3 from "@angular/common";
11
- import * as i4 from "../pipes/translate.pipe";
8
+ import * as i1 from "@angular/cdk/a11y";
9
+ import * as i2 from "primeng/button";
10
+ import * as i3 from "primeng/tooltip";
11
+ import * as i4 from "@angular/common";
12
+ import * as i5 from "../pipes/translate.pipe";
12
13
  export class SpotlightComponent {
13
14
  spotlightService = inject(SpotlightService);
14
15
  cookieService = inject(CookieService);
15
16
  datePipe = inject(DatePipe);
17
+ elementRef = inject(ElementRef);
16
18
  header;
17
19
  imgUrl;
18
20
  primaryButtonLabel;
@@ -23,9 +25,11 @@ export class SpotlightComponent {
23
25
  spotlightControlsList;
24
26
  spotlightScreen;
25
27
  canEmitEvent;
28
+ previousFocusElement = null;
26
29
  visible = false;
27
30
  menuId;
28
31
  fade = false;
32
+ altText = '';
29
33
  visibleChange = new EventEmitter();
30
34
  async ngOnInit() {
31
35
  await this.setValues();
@@ -61,6 +65,7 @@ export class SpotlightComponent {
61
65
  this.canAppear = true;
62
66
  const control = this.getSpotlightControlFromList(this.spotlightScreen.spotlight.id);
63
67
  this.canEmitEvent = !control || this.currentUser !== control.firstUser;
68
+ this.onOpen();
64
69
  }
65
70
  }
66
71
  validateDate(date) {
@@ -254,21 +259,35 @@ export class SpotlightComponent {
254
259
  };
255
260
  }
256
261
  close() {
262
+ if (this.previousFocusElement && document.body.contains(this.previousFocusElement)) {
263
+ this.previousFocusElement.focus();
264
+ }
265
+ this.previousFocusElement = null;
257
266
  this.visibleChange.emit(false);
258
267
  }
268
+ onOpen() {
269
+ this.previousFocusElement = document.activeElement;
270
+ setTimeout(() => {
271
+ const dialog = this.elementRef.nativeElement.querySelector('dialog');
272
+ const focusable = dialog?.querySelector('button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])');
273
+ focusable?.focus();
274
+ });
275
+ }
259
276
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SpotlightComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
260
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: SpotlightComponent, selector: "s-spotlight", inputs: { visible: "visible", menuId: "menuId", fade: "fade" }, outputs: { visibleChange: "visibleChange" }, ngImport: i0, template: "<div class=\"s-spotlight-overlay\" id=\"ol\" *ngIf=\"canAppear && visible\">\n <div class=\"s-spotlight\" id=\"sl\" [ngClass]=\"{'s-effect-fadein': fade}\">\n <div class=\"s-spotlight-header\">\n <span class=\"s-spotlight-title\">{{header.toUpperCase()}}</span>\n <a role=\"button\" class=\"s-spotlight-close\" (click)=\"close()\"><span class=\"fa fa-times\" aria-hidden=\"true\"></span></a>\n </div>\n <div class=\"s-img\">\n <img src=\"{{imgUrl}}\">\n </div>\n <div class=\"s-spotlight-footer\">\n <div class=\"s-spotlight-footer-left\">\n <button\n pButton\n type=\"submit\"\n id=\"decline-button\"\n label=\"{{'platform.spotlight.no_interest' | translate}}\"\n (click)=\"onTertiary()\"\n class=\"ui-button-link\">\n </button>\n </div>\n <div class=\"s-spotlight-footer-right\">\n <button\n pButton\n type=\"submit\"\n id=\"remember-button\"\n label=\"{{'platform.spotlight.remember_late' | translate}}\"\n (click)=\"onSecondary()\"\n class=\"ui-button-raised ui-button-secondary\">\n </button>\n <button\n pButton\n label=\"{{primaryButtonLabel}}\"\n type=\"submit\"\n id=\"submit-button\"\n (click)=\"onPrimary()\"\n [pTooltip]=\"primaryButtonTooltip\"\n tooltipPosition=\"top\"\n showDelay=\"500\"\n class=\"ui-button-raised\">\n </button>\n </div>\n </div>\n</div>\n</div>", styles: [".s-spotlight-overlay{display:flex;position:fixed;z-index:10;left:0;top:0;width:100%;height:100%;overflow:auto;background-color:#000;background-color:#0006}.s-spotlight{border-radius:3px;background:#fff;margin:auto;overflow:hidden;animation:move .15s forwards}.s-spotlight-header,.s-spotlight-footer{display:flex;padding:15px}.s-spotlight-header{align-items:center;justify-content:space-between}.s-spotlight-footer,.s-spotlight-footer-right,.s-spotlight-footer-left{display:flex}.s-spotlight-footer-right{flex:2;justify-content:flex-end}.s-spotlight-footer-left{flex:1;justify-content:flex-start}.s-spotlight-title{font-family:Open Sans,sans-serif;font-size:16px;font-weight:400;color:#333}.s-spotlight-close{display:block;margin-left:15px;color:#000}.s-img{width:100%;display:flex;align-items:center;justify-content:center}.s-img img{width:100%}.s-effect-fadein{animation:fade .15s forwards}@keyframes fade{0%{opacity:0}to{opacity:1}}@media (max-width: 595px){.s-spotlight-footer,.s-spotlight-footer-right,.s-spotlight-footer-left{align-items:center;flex-direction:column-reverse}.s-spotlight-footer button{margin:0 0 15px!important;width:100%!important}}@media (min-width: 576px){.s-spotlight{width:100%}}@media (min-width: 768px){.s-spotlight{width:720px}.s-spotlight-footer,.s-spotlight-footer-right,.s-spotlight-footer-left{flex-direction:row}}@media (min-width: 992px){.s-spotlight{width:960px}}@media (min-width: 1200px){.s-spotlight{width:50%}}\n"], dependencies: [{ kind: "directive", type: i1.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "loading", "severity", "raised", "rounded", "text", "outlined", "size", "plain", "fluid", "label", "icon", "buttonProps"] }, { kind: "directive", type: i2.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }] });
277
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: SpotlightComponent, selector: "s-spotlight", inputs: { visible: "visible", menuId: "menuId", fade: "fade", altText: "altText" }, outputs: { visibleChange: "visibleChange" }, ngImport: i0, template: "<dialog class=\"s-spotlight-overlay\" id=\"ol\" *ngIf=\"canAppear && visible\"\n aria-modal=\"true\" aria-labelledby=\"spotlight-title\"\n cdkTrapFocus (keydown.escape)=\"close()\">\n <div class=\"s-spotlight\" id=\"sl\" [ngClass]=\"{'s-effect-fadein': fade}\">\n <div class=\"s-spotlight-header\">\n <span class=\"s-spotlight-title\" id=\"spotlight-title\">{{header.toUpperCase()}}</span>\n <button\n type=\"button\"\n class=\"s-spotlight-close\"\n aria-label=\"Fechar spotlight\"\n (click)=\"close()\">\n <span class=\"fa fa-times\" aria-hidden=\"true\"></span>\n </button>\n </div>\n <div class=\"s-img\">\n <img src=\"{{imgUrl}}\" [alt]=\"altText || ''\" width=\"800\" height=\"450\">\n </div>\n <div class=\"s-spotlight-footer\">\n <div class=\"s-spotlight-footer-left\">\n <button\n pButton\n type=\"submit\"\n id=\"decline-button\"\n label=\"{{'platform.spotlight.no_interest' | translate}}\"\n (click)=\"onTertiary()\"\n class=\"ui-button-link\">\n </button>\n </div>\n <div class=\"s-spotlight-footer-right\">\n <button\n pButton\n type=\"submit\"\n id=\"remember-button\"\n label=\"{{'platform.spotlight.remember_late' | translate}}\"\n (click)=\"onSecondary()\"\n class=\"ui-button-raised ui-button-secondary\">\n </button>\n <button\n pButton\n label=\"{{primaryButtonLabel}}\"\n type=\"submit\"\n id=\"submit-button\"\n (click)=\"onPrimary()\"\n [pTooltip]=\"primaryButtonTooltip\"\n tooltipPosition=\"top\"\n showDelay=\"500\"\n class=\"ui-button-raised\">\n </button>\n </div>\n </div>\n</div>\n</dialog>", styles: [".s-spotlight-overlay{display:flex;position:fixed;z-index:10;left:0;top:0;width:100%;height:100%;overflow:auto;background-color:#000;background-color:#0006}.s-spotlight{border-radius:3px;background:#fff;margin:auto;overflow:hidden;animation:move .15s forwards}.s-spotlight-header,.s-spotlight-footer{display:flex;padding:15px}.s-spotlight-header{align-items:center;justify-content:space-between}.s-spotlight-footer,.s-spotlight-footer-right,.s-spotlight-footer-left{display:flex}.s-spotlight-footer-right{flex:2;justify-content:flex-end}.s-spotlight-footer-left{flex:1;justify-content:flex-start}.s-spotlight-title{font-family:Open Sans,sans-serif;font-size:16px;font-weight:400;color:#333}.s-spotlight-close{display:block;margin-left:15px;color:#000;background:none;border:none;padding:0;font:inherit;cursor:pointer}.s-img{width:100%;display:flex;align-items:center;justify-content:center}.s-img img{width:100%}.s-effect-fadein{animation:fade .15s forwards}@keyframes fade{0%{opacity:0}to{opacity:1}}@media (max-width: 595px){.s-spotlight-footer,.s-spotlight-footer-right,.s-spotlight-footer-left{align-items:center;flex-direction:column-reverse}.s-spotlight-footer button{margin:0 0 15px!important;width:100%!important}}@media (min-width: 576px){.s-spotlight{width:100%}}@media (min-width: 768px){.s-spotlight{width:720px}.s-spotlight-footer,.s-spotlight-footer-right,.s-spotlight-footer-left{flex-direction:row}}@media (min-width: 992px){.s-spotlight{width:960px}}@media (min-width: 1200px){.s-spotlight{width:50%}}\n"], dependencies: [{ kind: "directive", type: i1.CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }, { kind: "directive", type: i2.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "loading", "severity", "raised", "rounded", "text", "outlined", "size", "plain", "fluid", "label", "icon", "buttonProps"] }, { kind: "directive", type: i3.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i5.TranslatePipe, name: "translate" }] });
261
278
  }
262
279
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SpotlightComponent, decorators: [{
263
280
  type: Component,
264
- args: [{ selector: 's-spotlight', template: "<div class=\"s-spotlight-overlay\" id=\"ol\" *ngIf=\"canAppear && visible\">\n <div class=\"s-spotlight\" id=\"sl\" [ngClass]=\"{'s-effect-fadein': fade}\">\n <div class=\"s-spotlight-header\">\n <span class=\"s-spotlight-title\">{{header.toUpperCase()}}</span>\n <a role=\"button\" class=\"s-spotlight-close\" (click)=\"close()\"><span class=\"fa fa-times\" aria-hidden=\"true\"></span></a>\n </div>\n <div class=\"s-img\">\n <img src=\"{{imgUrl}}\">\n </div>\n <div class=\"s-spotlight-footer\">\n <div class=\"s-spotlight-footer-left\">\n <button\n pButton\n type=\"submit\"\n id=\"decline-button\"\n label=\"{{'platform.spotlight.no_interest' | translate}}\"\n (click)=\"onTertiary()\"\n class=\"ui-button-link\">\n </button>\n </div>\n <div class=\"s-spotlight-footer-right\">\n <button\n pButton\n type=\"submit\"\n id=\"remember-button\"\n label=\"{{'platform.spotlight.remember_late' | translate}}\"\n (click)=\"onSecondary()\"\n class=\"ui-button-raised ui-button-secondary\">\n </button>\n <button\n pButton\n label=\"{{primaryButtonLabel}}\"\n type=\"submit\"\n id=\"submit-button\"\n (click)=\"onPrimary()\"\n [pTooltip]=\"primaryButtonTooltip\"\n tooltipPosition=\"top\"\n showDelay=\"500\"\n class=\"ui-button-raised\">\n </button>\n </div>\n </div>\n</div>\n</div>", styles: [".s-spotlight-overlay{display:flex;position:fixed;z-index:10;left:0;top:0;width:100%;height:100%;overflow:auto;background-color:#000;background-color:#0006}.s-spotlight{border-radius:3px;background:#fff;margin:auto;overflow:hidden;animation:move .15s forwards}.s-spotlight-header,.s-spotlight-footer{display:flex;padding:15px}.s-spotlight-header{align-items:center;justify-content:space-between}.s-spotlight-footer,.s-spotlight-footer-right,.s-spotlight-footer-left{display:flex}.s-spotlight-footer-right{flex:2;justify-content:flex-end}.s-spotlight-footer-left{flex:1;justify-content:flex-start}.s-spotlight-title{font-family:Open Sans,sans-serif;font-size:16px;font-weight:400;color:#333}.s-spotlight-close{display:block;margin-left:15px;color:#000}.s-img{width:100%;display:flex;align-items:center;justify-content:center}.s-img img{width:100%}.s-effect-fadein{animation:fade .15s forwards}@keyframes fade{0%{opacity:0}to{opacity:1}}@media (max-width: 595px){.s-spotlight-footer,.s-spotlight-footer-right,.s-spotlight-footer-left{align-items:center;flex-direction:column-reverse}.s-spotlight-footer button{margin:0 0 15px!important;width:100%!important}}@media (min-width: 576px){.s-spotlight{width:100%}}@media (min-width: 768px){.s-spotlight{width:720px}.s-spotlight-footer,.s-spotlight-footer-right,.s-spotlight-footer-left{flex-direction:row}}@media (min-width: 992px){.s-spotlight{width:960px}}@media (min-width: 1200px){.s-spotlight{width:50%}}\n"] }]
281
+ args: [{ selector: 's-spotlight', template: "<dialog class=\"s-spotlight-overlay\" id=\"ol\" *ngIf=\"canAppear && visible\"\n aria-modal=\"true\" aria-labelledby=\"spotlight-title\"\n cdkTrapFocus (keydown.escape)=\"close()\">\n <div class=\"s-spotlight\" id=\"sl\" [ngClass]=\"{'s-effect-fadein': fade}\">\n <div class=\"s-spotlight-header\">\n <span class=\"s-spotlight-title\" id=\"spotlight-title\">{{header.toUpperCase()}}</span>\n <button\n type=\"button\"\n class=\"s-spotlight-close\"\n aria-label=\"Fechar spotlight\"\n (click)=\"close()\">\n <span class=\"fa fa-times\" aria-hidden=\"true\"></span>\n </button>\n </div>\n <div class=\"s-img\">\n <img src=\"{{imgUrl}}\" [alt]=\"altText || ''\" width=\"800\" height=\"450\">\n </div>\n <div class=\"s-spotlight-footer\">\n <div class=\"s-spotlight-footer-left\">\n <button\n pButton\n type=\"submit\"\n id=\"decline-button\"\n label=\"{{'platform.spotlight.no_interest' | translate}}\"\n (click)=\"onTertiary()\"\n class=\"ui-button-link\">\n </button>\n </div>\n <div class=\"s-spotlight-footer-right\">\n <button\n pButton\n type=\"submit\"\n id=\"remember-button\"\n label=\"{{'platform.spotlight.remember_late' | translate}}\"\n (click)=\"onSecondary()\"\n class=\"ui-button-raised ui-button-secondary\">\n </button>\n <button\n pButton\n label=\"{{primaryButtonLabel}}\"\n type=\"submit\"\n id=\"submit-button\"\n (click)=\"onPrimary()\"\n [pTooltip]=\"primaryButtonTooltip\"\n tooltipPosition=\"top\"\n showDelay=\"500\"\n class=\"ui-button-raised\">\n </button>\n </div>\n </div>\n</div>\n</dialog>", styles: [".s-spotlight-overlay{display:flex;position:fixed;z-index:10;left:0;top:0;width:100%;height:100%;overflow:auto;background-color:#000;background-color:#0006}.s-spotlight{border-radius:3px;background:#fff;margin:auto;overflow:hidden;animation:move .15s forwards}.s-spotlight-header,.s-spotlight-footer{display:flex;padding:15px}.s-spotlight-header{align-items:center;justify-content:space-between}.s-spotlight-footer,.s-spotlight-footer-right,.s-spotlight-footer-left{display:flex}.s-spotlight-footer-right{flex:2;justify-content:flex-end}.s-spotlight-footer-left{flex:1;justify-content:flex-start}.s-spotlight-title{font-family:Open Sans,sans-serif;font-size:16px;font-weight:400;color:#333}.s-spotlight-close{display:block;margin-left:15px;color:#000;background:none;border:none;padding:0;font:inherit;cursor:pointer}.s-img{width:100%;display:flex;align-items:center;justify-content:center}.s-img img{width:100%}.s-effect-fadein{animation:fade .15s forwards}@keyframes fade{0%{opacity:0}to{opacity:1}}@media (max-width: 595px){.s-spotlight-footer,.s-spotlight-footer-right,.s-spotlight-footer-left{align-items:center;flex-direction:column-reverse}.s-spotlight-footer button{margin:0 0 15px!important;width:100%!important}}@media (min-width: 576px){.s-spotlight{width:100%}}@media (min-width: 768px){.s-spotlight{width:720px}.s-spotlight-footer,.s-spotlight-footer-right,.s-spotlight-footer-left{flex-direction:row}}@media (min-width: 992px){.s-spotlight{width:960px}}@media (min-width: 1200px){.s-spotlight{width:50%}}\n"] }]
265
282
  }], propDecorators: { visible: [{
266
283
  type: Input
267
284
  }], menuId: [{
268
285
  type: Input
269
286
  }], fade: [{
270
287
  type: Input
288
+ }], altText: [{
289
+ type: Input
271
290
  }], visibleChange: [{
272
291
  type: Output
273
292
  }] } });
274
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BvdGxpZ2h0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYi9zcmMvbW9kdWxlcy9zcG90bGlnaHQvY29tcG9uZW50L3Nwb3RsaWdodC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9saWIvc3JjL21vZHVsZXMvc3BvdGxpZ2h0L2NvbXBvbmVudC9zcG90bGlnaHQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBRTFELE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2hFLE9BQU8sRUFHTCxlQUFlLEVBQ2YsbUJBQW1CLEVBS3BCLE1BQU0saUJBQWlCLENBQUM7QUFDekIsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQzs7Ozs7O0FBT25ELE1BQU0sT0FBTyxrQkFBa0I7SUFDWixnQkFBZ0IsR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUM1QyxhQUFhLEdBQUcsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ3RDLFFBQVEsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7SUFHdEMsTUFBTSxDQUFTO0lBQ2YsTUFBTSxDQUFTO0lBQ2Ysa0JBQWtCLENBQVM7SUFDM0Isb0JBQW9CLENBQVM7SUFDN0IsU0FBUyxHQUFHLEtBQUssQ0FBQztJQUVqQixXQUFXLENBQVM7SUFDcEIsa0JBQWtCLENBQXFCO0lBQ3ZDLHFCQUFxQixDQUF1QjtJQUM1QyxlQUFlLENBQWtCO0lBQ2pDLFlBQVksQ0FBVTtJQUd2QixP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TTtzQkFEWixLQUFLO2dCQUlDLElBQUk7c0JBRFYsS0FBSztnQkFJQyxhQUFhO3NCQURuQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVXNlckFjdGlvbiB9IGZyb20gJy4vLi4vbW9kZWxzL3VzZXItYWN0aW9uLmVudW0nO1xuaW1wb3J0IHsgU3BvdGxpZ2h0Tm90aWZpY2F0aW9uIH0gZnJvbSAnLi8uLi9tb2RlbHMvc3BvdGxpZ2h0LW5vdGlmaWNhdGlvbi5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTcG90bGlnaHRTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZS9zcG90bGlnaHQuc2VydmljZSc7XG5pbXBvcnQge1xuICBTcG90bGlnaHQsXG4gIFNwb3RsaWdodFNjcmVlbixcbiAgRW51bURpc3BsYXlUeXBlLFxuICBFbnVtU3BvdGxpZ2h0U3RhdHVzLFxuICBTcG90bGlnaHRDb250cm9sTGlzdCxcbiAgU3BvdGxpZ2h0VXNlcnNMaXN0LFxuICBTcG90bGlnaHRVc2VyLFxuICBTcG90bGlnaHRDb250cm9sXG59IGZyb20gJy4uL21vZGVscy9pbmRleCc7XG5pbXBvcnQgeyBEYXRlUGlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb29raWVTZXJ2aWNlIH0gZnJvbSAnbmd4LWNvb2tpZS1zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncy1zcG90bGlnaHQnLFxuICB0ZW1wbGF0ZVVybDogJy4vc3BvdGxpZ2h0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vc3BvdGxpZ2h0LmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgU3BvdGxpZ2h0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgcHJpdmF0ZSByZWFkb25seSBzcG90bGlnaHRTZXJ2aWNlID0gaW5qZWN0KFNwb3RsaWdodFNlcnZpY2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IGNvb2tpZVNlcnZpY2UgPSBpbmplY3QoQ29va2llU2VydmljZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgZGF0ZVBpcGUgPSBpbmplY3QoRGF0ZVBpcGUpO1xuXG5cbiAgcHVibGljIGhlYWRlcjogc3RyaW5nO1xuICBwdWJsaWMgaW1nVXJsOiBzdHJpbmc7XG4gIHB1YmxpYyBwcmltYXJ5QnV0dG9uTGFiZWw6IHN0cmluZztcbiAgcHVibGljIHByaW1hcnlCdXR0b25Ub29sdGlwOiBzdHJpbmc7XG4gIHB1YmxpYyBjYW5BcHBlYXIgPSBmYWxzZTtcblxuICBwcml2YXRlIGN1cnJlbnRVc2VyOiBzdHJpbmc7XG4gIHByaXZhdGUgc3BvdGxpZ2h0VXNlcnNMaXN0OiBTcG90bGlnaHRVc2Vyc0xpc3Q7XG4gIHByaXZhdGUgc3BvdGxpZ2h0Q29udHJvbHNMaXN0OiBTcG90bGlnaHRDb250cm9sTGlzdDtcbiAgcHJpdmF0ZSBzcG90bGlnaHRTY3JlZW46IFNwb3RsaWdodFNjcmVlbjtcbiAgcHJpdmF0ZSBjYW5FbWl0RXZlbnQ6IGJvb2xlYW47XG5cbiAgQElucHV0KClcbiAgcHVibGljIHZpc2libGUgPSBmYWxzZTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgbWVudUlkOiBzdHJpbmc7XG5cbiAgQElucHV0KClcbiAgcHVibGljIGZhZGUgPSBmYWxzZTtcblxuICBAT3V0cHV0KClcbiAgcHVibGljIHZpc2libGVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgYXN5bmMgbmdPbkluaXQoKSB7XG4gICAgYXdhaXQgdGhpcy5zZXRWYWx1ZXMoKTtcbiAgICB0aGlzLmZldGNoU3BvdGxpZ2h0KCk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHNldFZhbHVlcygpIHtcbiAgICBjb25zdCB1c2VyRGF0YTogYW55ID0gSlNPTi5wYXJzZSh0aGlzLmNvb2tpZVNlcnZpY2UuZ2V0KCdjb20uc2VuaW9yLnRva2VuJykpO1xuICAgIHRoaXMuY3VycmVudFVzZXIgPSB1c2VyRGF0YS51c2VybmFtZTtcbiAgICB0aGlzLnNwb3RsaWdodFVzZXJzTGlzdCA9IGF3YWl0IHRoaXMuc3BvdGxpZ2h0U2VydmljZS5saXN0U3BvdGxpZ2h0VXNlcnMoKTtcbiAgICB0aGlzLnNwb3RsaWdodENvbnRyb2xzTGlzdCA9IGF3YWl0IHRoaXMuc3BvdGxpZ2h0U2VydmljZS5saXN0U3BvdGxpZ2h0Q29udHJvbCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRWYWx1ZXNJblNwb3RsaWdodCh2YWx1ZXM6IFNwb3RsaWdodCk6IHZvaWQge1xuICAgIHRoaXMuaGVhZGVyID0gdmFsdWVzLnNwb3RsaWdodFRpdGxlO1xuICAgIHRoaXMuaW1nVXJsID0gdmFsdWVzLmJhbm5lclVybDtcbiAgICB0aGlzLnByaW1hcnlCdXR0b25MYWJlbCA9IHZhbHVlcy5wcmltYXJ5QnV0dG9uTGFiZWw7XG4gICAgdGhpcy5wcmltYXJ5QnV0dG9uVG9vbHRpcCA9IHZhbHVlcy5wcmltYXJ5QnV0dG9uSGludDtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0U2hvd0RhdGUoZGF5czogbnVtYmVyKTogc3RyaW5nIHtcbiAgICBjb25zdCBjdXJyZW50RGF0ZSA9IG5ldyBEYXRlKCk7XG4gICAgcmV0dXJuIHRoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKGN1cnJlbnREYXRlLnNldERhdGUoY3VycmVudERhdGUuZ2V0RGF0ZSgpICsgZGF5cykudG9TdHJpbmcoKSwgJ3l5eXktTU0tZGQnKTtcbiAgfVxuXG4gIHByaXZhdGUgZmV0Y2hTcG90bGlnaHQoKTogdm9pZCB7XG4gICAgdGhpcy5zcG90bGlnaHRTZXJ2aWNlLmxpc3RTcG90bGlnaHRTY3JlZW4oKS5zdWJzY3JpYmUodmFsdWUgPT4ge1xuICAgICAgdGhpcy5zcG90bGlnaHRTY3JlZW4gPSB2YWx1ZS5jb250ZW50cy5maWx0ZXIodmFsID0+IHZhbC5zY3JlZW5NZW51SWQgPT09IHRoaXMubWVudUlkKVswXTtcbiAgICAgIGlmICh0aGlzLnNwb3RsaWdodFNjcmVlbikge1xuICAgICAgICB0aGlzLnNob3dTcG90bGlnaHQodGhpcy5zcG90bGlnaHRTY3JlZW4uc3BvdGxpZ2h0KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgc2hvd1Nwb3RsaWdodChzcG90bGlnaHQ6IFNwb3RsaWdodCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnZhbGlkYXRlRGF0ZShzcG90bGlnaHQuaW5pdGlhbERhdGUpICYmIHRoaXMudmFsaWRhdGVGaW5hbERhdGUoc3BvdGxpZ2h0LmZpbmFsRGF0ZSkgJiYgdGhpcy52YWxpZGF0ZVNwb3RsaWdodChzcG90bGlnaHQpKSB7XG4gICAgICB0aGlzLnNldFZhbHVlc0luU3BvdGxpZ2h0KHNwb3RsaWdodCk7XG4gICAgICB0aGlzLmNhbkFwcGVhciA9IHRydWU7XG4gICAgICBjb25zdCBjb250cm9sID0gdGhpcy5nZXRTcG90bGlnaHRDb250cm9sRnJvbUxpc3QodGhpcy5zcG90bGlnaHRTY3JlZW4uc3BvdGxpZ2h0LmlkKTtcbiAgICAgIHRoaXMuY2FuRW1pdEV2ZW50ID0gIWNvbnRyb2wgfHwgdGhpcy5jdXJyZW50VXNlciAhPT0gY29udHJvbC5maXJzdFVzZXI7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSB2YWxpZGF0ZURhdGUoZGF0ZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgaWYgKGRhdGUpIHtcbiAgICAgIGNvbnN0IGN1cnJlbnREYXRlID0gdGhpcy5kYXRlUGlwZS50cmFuc2Zvcm0obmV3IERhdGUoKS50b1N0cmluZygpLCAneXl5eS1NTS1kZCcpO1xuICAgICAgY29uc3QgaW5pdGlhbERhdGUgPSB0aGlzLmRhdGVQaXBlLnRyYW5zZm9ybShkYXRlLCAneXl5eS1NTS1kZCcpO1xuXG4gICAgICByZXR1cm4gY3VycmVudERhdGUgPj0gaW5pdGlhbERhdGU7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHByaXZhdGUgdmFsaWRhdGVGaW5hbERhdGUoZGF0ZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgaWYgKGRhdGUpIHtcbiAgICAgIGNvbnN0IGN1cnJlbnREYXRlID0gdGhpcy5kYXRlUGlwZS50cmFuc2Zvcm0obmV3IERhdGUoKS50b1N0cmluZygpLCAneXl5eS1NTS1kZCcpO1xuICAgICAgY29uc3QgZmluYWxEYXRlID0gdGhpcy5kYXRlUGlwZS50cmFuc2Zvcm0oZGF0ZSwgJ3l5eXktTU0tZGQnKTtcblxuICAgICAgcmV0dXJuIGN1cnJlbnREYXRlIDw9IGZpbmFsRGF0ZTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBwcml2YXRlIHZhbGlkYXRlU3BvdGxpZ2h0KHNwb3RsaWdodDogU3BvdGxpZ2h0KTogYm9vbGVhbiB7XG4gICAgaWYgKCF0aGlzLnZhbGlkYXRlQ29udHJvbHNMaXN0KHRoaXMuc3BvdGxpZ2h0Q29udHJvbHNMaXN0LCBzcG90bGlnaHQsIHRoaXMuY3VycmVudFVzZXIpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGlmICghdGhpcy52YWxpZGF0ZURpc3BsYXlUeXBlKHNwb3RsaWdodCwgdGhpcy5zcG90bGlnaHRVc2Vyc0xpc3QsIHRoaXMuc3BvdGxpZ2h0Q29udHJvbHNMaXN0LCB0aGlzLmN1cnJlbnRVc2VyKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHByaXZhdGUgdmFsaWRhdGVDb250cm9sc0xpc3QoY29udHJvbHNMaXN0OiBTcG90bGlnaHRDb250cm9sTGlzdCwgc3BvdGxpZ2h0OiBTcG90bGlnaHQsIGN1cnJlbnRVc2VyOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBpZiAoY29udHJvbHNMaXN0LnRvdGFsRWxlbWVudHMpIHtcblxuICAgICAgY29uc3Qgbm90Q29tcGF0aWJsZUNvbnRyb2xzID0gY29udHJvbHNMaXN0LmNvbnRlbnRzLmZpbHRlcihjb250cm9sID0+IHtcbiAgICAgICAgaWYgKGNvbnRyb2wuc3RhdHVzID09PSBFbnVtU3BvdGxpZ2h0U3RhdHVzLkFDVElWRSkge1xuICAgICAgICAgIHJldHVybiBjb250cm9sLnNwb3RsaWdodElkID09PSBzcG90bGlnaHQuaWQ7XG5cbiAgICAgICAgfSBlbHNlIGlmIChjb250cm9sLnN0YXR1cyA9PT0gRW51bVNwb3RsaWdodFN0YXR1cy5JTl9QUk9HUkVTUykge1xuICAgICAgICAgICAgcmV0dXJuIGNvbnRyb2wuc3BvdGxpZ2h0SWQgPT09IHNwb3RsaWdodC5pZCAmJiBjb250cm9sLmZpcnN0VXNlciAhPT0gY3VycmVudFVzZXI7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICBpZiAobm90Q29tcGF0aWJsZUNvbnRyb2xzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHByaXZhdGUgdmFsaWRhdGVEaXNwbGF5VHlwZShcbiAgICBzcG90bGlnaHQ6IFNwb3RsaWdodCxcbiAgICB1c2Vyc0xpc3Q6IFNwb3RsaWdodFVzZXJzTGlzdCxcbiAgICBjb250cm9sc0xpc3Q6IFNwb3RsaWdodENvbnRyb2xMaXN0LFxuICAgIGN1cnJlbnRVc2VyOiBzdHJpbmdcbiAgKTogYm9vbGVhbiB7XG5cbiAgICBzd2l0Y2ggKHNwb3RsaWdodC5kaXNwbGF5VHlwZSkge1xuICAgICAgY2FzZSBFbnVtRGlzcGxheVR5cGUuQURWRVJTSVRJTkc6XG4gICAgICAgIHJldHVybiB1c2Vyc0xpc3QudG90YWxFbGVtZW50cyA/IHRoaXMudmFsaWRhdGVVc2VyKHVzZXJzTGlzdC5jb250ZW50cywgc3BvdGxpZ2h0KSA6IHRydWU7XG5cbiAgICAgIGNhc2UgRW51bURpc3BsYXlUeXBlLklOVEVHUkFUSU9OOlxuXG4gICAgICAgIGlmIChjb250cm9sc0xpc3QudG90YWxFbGVtZW50cykge1xuICAgICAgICAgIGNvbnN0IGNvbXBhdGlibGVDb250cm9scyA9IGNvbnRyb2xzTGlzdC5jb250ZW50cy5maWx0ZXIoY29udHJvbCA9PiB7XG5cbiAgICAgICAgICAgICAgc3dpdGNoIChjb250cm9sLnN0YXR1cykge1xuXG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtU3BvdGxpZ2h0U3RhdHVzLk5PX1NUQVJURUQ6XG4gICAgICAgICAgICAgICAgICByZXR1cm4gY29udHJvbC5zcG90bGlnaHRJZCA9PT0gc3BvdGxpZ2h0LmlkO1xuXG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtU3BvdGxpZ2h0U3RhdHVzLlJFRlVTRUQ6XG4gICAgICAgICAgICAgICAgICByZXR1cm4gdXNlcnNMaXN0LnRvdGFsRWxlbWVudHMgPyB0aGlzLnZhbGlkYXRlVXNlcih1c2Vyc0xpc3QuY29udGVudHMsIHNwb3RsaWdodCkgOiB0cnVlO1xuXG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtU3BvdGxpZ2h0U3RhdHVzLklOX1BST0dSRVNTOlxuICAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbnRyb2wuZmlyc3RVc2VyID09PSBjdXJyZW50VXNlclxuICAgICAgICAgICAgICAgICAgICAmJiBjb250cm9sLnNwb3RsaWdodElkID09PSBzcG90bGlnaHQuaWQ7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgICBpZiAoY29tcGF0aWJsZUNvbnRyb2xzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHZhbGlkYXRlVXNlcih1c2VyczogU3BvdGxpZ2h0VXNlcltdLCBzcG90bGlnaHQ6IFNwb3RsaWdodCk6IGJvb2xlYW4ge1xuICAgIGxldCBzcG90bGlnaHRVc2VycyA9IHVzZXJzLmZpbHRlcih1c2VyID0+IHVzZXIuc3BvdGxpZ2h0SWQgPT09IHNwb3RsaWdodC5pZCk7XG5cbiAgICBpZiAoIXNwb3RsaWdodFVzZXJzLmxlbmd0aCkge1xuICAgICAgc3BvdGxpZ2h0VXNlcnMgPSB1c2Vycy5maWx0ZXIodXNlciA9PiB1c2VyLnVzZXJPcGVyYXRpb24gPT09IHRoaXMuY3VycmVudFVzZXIpO1xuXG4gICAgICByZXR1cm4gc3BvdGxpZ2h0VXNlcnMubGVuZ3RoID09PSAwO1xuICAgIH1cblxuICAgIGNvbnN0IGNvbXBhdGlibGVVc2VyVG9WYWxpZGF0ZSA9IHNwb3RsaWdodFVzZXJzLmZpbHRlcih1c2VyID0+IHVzZXIudXNlck9wZXJhdGlvbiA9PT0gdGhpcy5jdXJyZW50VXNlcilbMF07XG5cbiAgICByZXR1cm4gY29tcGF0aWJsZVVzZXJUb1ZhbGlkYXRlID8gdGhpcy52YWxpZGF0ZURhdGUoY29tcGF0aWJsZVVzZXJUb1ZhbGlkYXRlLnNob3dEYXRlKSA6IHRydWU7XG4gIH1cblxuICBwcml2YXRlIHNhdmVTcG90bGlnaHRVc2VyKGRheXM/OiBudW1iZXIpOiB2b2lkIHtcblxuICAgIGNvbnN0IHNwb3RsaWdodCA9IHRoaXMuc3BvdGxpZ2h0U2NyZWVuLnNwb3RsaWdodDtcblxuICAgIGNvbnN0IHVzZXIgPSB0aGlzLnNwb3RsaWdodFVzZXJzTGlzdC5jb250ZW50cy5maWx0ZXIodmFsID0+IHtcbiAgICAgIHJldHVybiB2YWwuc3BvdGxpZ2h0SWQgPT09IHNwb3RsaWdodC5pZFxuICAgICAgICAmJiB2YWwudXNlck9wZXJhdGlvbiA9PT0gdGhpcy5jdXJyZW50VXNlcjtcbiAgICB9KVswXTtcblxuICAgIGxldCBzcG90bGlnaHRVc2VyOiBTcG90bGlnaHRVc2VyID0ge1xuICAgICAgc3BvdGxpZ2h0SWQ6IHNwb3RsaWdodC5pZCxcbiAgICAgIHNob3dEYXRlOiBkYXlzID8gdGhpcy5nZXRTaG93RGF0ZShkYXlzKSA6IG51bGwsXG4gICAgICB1c2VyT3BlcmF0aW9uOiB0aGlzLmN1cnJlbnRVc2VyXG4gICAgfTtcblxuICAgIGlmICh1c2VyKSB7XG4gICAgICBzcG90bGlnaHRVc2VyID0ge1xuICAgICAgICBpZDogdXNlci5pZCxcbiAgICAgICAgLi4uc3BvdGxpZ2h0VXNlclxuICAgICAgfTtcbiAgICB9XG4gICAgdGhpcy5zcG90bGlnaHRTZXJ2aWNlLnNhdmVTcG90bGlnaHRVc2VyKHNwb3RsaWdodFVzZXIpLnN1YnNjcmliZSgpO1xuICB9XG5cbiAgcHVibGljIG9uUHJpbWFyeSgpIHtcbiAgICBjb25zdCBzcG90bGlnaHQgPSB0aGlzLnNwb3RsaWdodFNjcmVlbi5zcG90bGlnaHQ7XG4gICAgY29uc3Qgbm90aWZpY2F0aW9uID0gdGhpcy5idWlsZE5vdGlmaWNhdGlvbihVc2VyQWN0aW9uLkNPTkZJUk1FRCk7XG5cbiAgICB0aGlzLnNhdmVTcG90bGlnaHRDb250cm9sKCk7XG4gICAgdGhpcy5zYXZlU3BvdGxpZ2h0VXNlcigpO1xuXG4gICAgaWYgKHRoaXMuY2FuRW1pdEV2ZW50KSB7XG4gICAgICB0aGlzLnNwb3RsaWdodFNlcnZpY2Uubm90aWZpY2F0ZVNwb3RsaWdodChub3RpZmljYXRpb24pLnN1YnNjcmliZSgpO1xuICAgIH1cblxuICAgIGlmIChzcG90bGlnaHQucHJpbWFyeUJ1dHRvblVybCkge1xuICAgICAgd2luZG93Lm9wZW4oc3BvdGxpZ2h0LnByaW1hcnlCdXR0b25VcmwpO1xuICAgIH1cblxuICAgIHRoaXMuY2xvc2UoKTtcbiAgfVxuXG4gIHB1YmxpYyBvblNlY29uZGFyeSgpOiB2b2lkIHtcbiAgICBjb25zdCBub3RpZmljYXRpb24gPSB0aGlzLmJ1aWxkTm90aWZpY2F0aW9uKFVzZXJBY3Rpb24uUE9TVFBPTkVEKTtcblxuICAgIHRoaXMuc2F2ZVNwb3RsaWdodENvbnRyb2woRW51bVNwb3RsaWdodFN0YXR1cy5SRUZVU0VEKTtcbiAgICB0aGlzLnNhdmVTcG90bGlnaHRVc2VyKHRoaXMuc3BvdGxpZ2h0U2NyZWVuLnNwb3RsaWdodC5kYXlzUmVtZW1iZXJMYXRlKTtcbiAgICB0aGlzLnNwb3RsaWdodFNlcnZpY2Uubm90aWZpY2F0ZVNwb3RsaWdodChub3RpZmljYXRpb24pLnN1YnNjcmliZSgpO1xuXG4gICAgdGhpcy5jbG9zZSgpO1xuICB9XG5cbiAgcHVibGljIG9uVGVydGlhcnkoKTogdm9pZCB7XG4gICAgY29uc3Qgbm90aWZpY2F0aW9uID0gdGhpcy5idWlsZE5vdGlmaWNhdGlvbihVc2VyQWN0aW9uLlJFRlVTRUQpO1xuXG4gICAgdGhpcy5zYXZlU3BvdGxpZ2h0Q29udHJvbChFbnVtU3BvdGxpZ2h0U3RhdHVzLlJFRlVTRUQpO1xuICAgIHRoaXMuc2F2ZVNwb3RsaWdodFVzZXIodGhpcy5zcG90bGlnaHRTY3JlZW4uc3BvdGxpZ2h0LmRheXNOb3RJbnRlcmVzdGVkKTtcbiAgICB0aGlzLnNwb3RsaWdodFNlcnZpY2Uubm90aWZpY2F0ZVNwb3RsaWdodChub3RpZmljYXRpb24pLnN1YnNjcmliZSgpO1xuXG4gICAgdGhpcy5jbG9zZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFZlcmlmaWNhIHNlIHVtIHJlZ2lzdHJvIGRlIHVzdcOhcmlvIHBlcnRlbmNlIGFvIHVzdcOhcmlvIGxvZ2FkbyBlIGNvcnJlc3BvbmRlIGFvIHNwb3RsaWdodCBhdHVhbFxuICAgKiBAcGFyYW0gdXNlciBTcG90bGlnaHRVc2VyIE9iamV0byByZXByZXNlbnRhbmRvIG8gcmVnaXN0cm8gZG8gdXN1w6FyaW8gcGFyYSB1bWEgc3BvdGxpZ2h0XG4gICAqIEBwYXJhbSBzcG90bGlnaHQgU3BvdGxpZ2h0IFNwb3RsaWdodFxuICAgKiBAcmV0dXJucyBib29sZWFuIHRydWUgc2UgY29ycmVzcG9uZGVyIGFvIHNwb3RsaWdodCBhdHVhbCwgZmFsc2UgY2FzbyBjb250csOhcmlvXG4gICAqL1xuICBwcml2YXRlIGhhc1RoaXNSZWdpc3Rlcih1c2VyOiBTcG90bGlnaHRVc2VyLCBzcG90bGlnaHQ6IFNwb3RsaWdodCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAodXNlci5zcG90bGlnaHRJZCA9PT0gc3BvdGxpZ2h0LmlkICYmIHVzZXIudXNlck9wZXJhdGlvbiA9PT0gdGhpcy5jdXJyZW50VXNlcik7XG4gIH1cblxuICAvKipcbiAgICogVmVyaWZpY2Egc2UgdW0gcmVnaXN0cm8gZGUgdXN1w6FyaW8gcGVydGVjZSBhbyB1c3XDoXJpbyBsb2dhZG8sIG1hcyBuw6NvIGNvcnJlc3BvbmRlIGFvIHNwb3RsaWdodCBhdHVhbFxuICAgKiBAcGFyYW0gdXNlciBTcG90bGlnaHRVc2VyIE9iamV0byByZXByZXNlbnRhbmRvIG8gcmVnaXN0cm8gZG8gdXN1w6FyaW8gcGFyYSB1bWEgc3BvdGxpZ2h0XG4gICAqIEBwYXJhbSBzcG90bGlnaHQgU3BvdGxpZ2h0IFNwb3RsaWdodFxuICAgKiBAcmV0dXJucyBib29sZWFuIHRydWUgc2UgY29ycmVzcG9uZGVyIGFvIHNwb3RsaWdodCBhdHVhbCwgZmFsc2UgY2FzbyBjb250csOhcmlvXG4gICAqL1xuICBwcml2YXRlIGhhc0Fub3RoZXJSZWdpc3Rlcih1c2VyOiBTcG90bGlnaHRVc2VyLCBzcG90bGlnaHQ6IFNwb3RsaWdodCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB1c2VyLnNwb3RsaWdodElkICE9PSBzcG90bGlnaHQuaWQgJiYgdXNlci51c2VyT3BlcmF0aW9uID09PSB0aGlzLmN1cnJlbnRVc2VyO1xuICB9XG5cbiAgLyoqXG4gICAqIFBlcnNpc3RlIHVtIG5vdm8gcmVnaXN0cm8gZGUgY29udHJvbGUgcGFyYSBvIHNwb3RsaWdodCBhdHVhbCBzZVxuICAgKiBuw6NvIGZvciBlbmNvbnRyYWRvIG5lbmh1bSBuYSBsaXN0YSBkZSBjb250cm9sZXMgY2FycmVnYWRhIGluaWNpYWxtZW50ZVxuICAgKiBAcGFyYW0gc3RhdHVzIEVudW1TcG90bGlnaHRTdGF0dXMgU3RhdHVzIGRvIGNvbnRyb2xlIGRvIHNwb3RsaWdodC4gU2UgbmVuaHVtIGZvciBpbmZvcm1hZG8sIElOX1BST0dSRVNTIHNlcsOhIGFwbGljYWRvXG4gICAqIEByZXR1cm5zIFNwb3RsaWdodENvbnRyb2wgQ29udHJvbGUgZG8gc3BvdGxpZ2h0IHJlY3VwZXJhZG8vcGVzaXN0aWRvXG4gICAqL1xuICBwcml2YXRlIHNhdmVTcG90bGlnaHRDb250cm9sKHN0YXR1cyA9IEVudW1TcG90bGlnaHRTdGF0dXMuSU5fUFJPR1JFU1MpOiBTcG90bGlnaHRDb250cm9sIHtcbiAgICBjb25zdCBzcG90bGlnaHQgPSB0aGlzLnNwb3RsaWdodFNjcmVlbi5zcG90bGlnaHQ7XG4gICAgbGV0IGNvbnRyb2w6IFNwb3RsaWdodENvbnRyb2wgPSB0aGlzLmdldFNwb3RsaWdodENvbnRyb2xGcm9tTGlzdChzcG90bGlnaHQuaWQpO1xuXG4gICAgaWYgKCFjb250cm9sKSB7XG4gICAgICBjb250cm9sID0ge1xuICAgICAgICBzcG90bGlnaHRJZDogc3BvdGxpZ2h0LmlkLFxuICAgICAgICBzdGF0dXM6IHN0YXR1cyxcbiAgICAgICAgZmlyc3RVc2VyOiB0aGlzLmN1cnJlbnRVc2VyXG4gICAgICB9O1xuICAgIH1cblxuICAgIGlmICh0aGlzLmlzTmV3Q29udHJvbChjb250cm9sKSB8fCBjb250cm9sLnN0YXR1cyAhPT0gRW51bVNwb3RsaWdodFN0YXR1cy5JTl9QUk9HUkVTUykge1xuICAgICAgY29udHJvbC5zdGF0dXMgPSBzdGF0dXM7XG4gICAgICBjb250cm9sLmZpcnN0VXNlciA9IHN0YXR1cyA9PT0gRW51bVNwb3RsaWdodFN0YXR1cy5JTl9QUk9HUkVTUyA/IHRoaXMuY3VycmVudFVzZXIgOiAnJztcbiAgICAgIHRoaXMuc3BvdGxpZ2h0U2VydmljZS5zYXZlU3BvdGxpZ2h0Q29udHJvbChjb250cm9sKS5zdWJzY3JpYmUoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gY29udHJvbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXRvcm5hIG8gY29udHJvbGUgZGUgc3BvdGxpZ2h0IGNvcnJlc3BvbmRlbnRlIGFvIGlkZW50aWZpY2Fkb3JcbiAgICogaW5mb3JtYWRvIG5hIGxpc3RhIGRlIGNvbnRyb2xlcyBjYXJyZWdhZGEgbmEgaW5pY2lhbGl6YcOnw6NvIGRvIGNvbXBvbmVudGVcbiAgICogQHBhcmFtIGlkIHN0cmluZyBJZGVudGlmaWNhZG9yIGRvIGNvbnRyb2xlIGRlIHNwb3RsaWdodFxuICAgKi9cbiAgcHJpdmF0ZSBnZXRTcG90bGlnaHRDb250cm9sRnJvbUxpc3QoaWQ6IHN0cmluZyk6IFNwb3RsaWdodENvbnRyb2wge1xuICAgIHJldHVybiB0aGlzLnNwb3RsaWdodENvbnRyb2xzTGlzdC5jb250ZW50cy5maWx0ZXIodmFsID0+ICB2YWwuc3BvdGxpZ2h0SWQgPT09IGlkKVswXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBWZXJpZmljYSBzZSBvIGNvbnRyb2xlIGRlIHNwb3RsaWdodCBpbmZvcm1hZG8gbsOjbyBmb2kgcmVnaXN0cmFkbyBhaW5kYVxuICAgKiBAcGFyYW0gc3BvdGxpZ2h0Q29udHJvbCBTcG90bGlnaHRDb250cm9sIENvbnRyb2xlIGRvIHNwb3RsaWdodFxuICAgKiBAcmV0dXJucyBib29sZWFuIHRydWUgc2UgYWluZGEgbsOjbyBmb2kgcmVnaXN0cmFkbyBuYSBiYXNlLCBmYWxzZSBjYXNvIGNvbnRyw6FyaW9cbiAgICovXG4gIHByaXZhdGUgaXNOZXdDb250cm9sKHNwb3RsaWdodENvbnRyb2w6IFNwb3RsaWdodENvbnRyb2wpOiBib29sZWFuIHtcbiAgICByZXR1cm4gIXRoaXMuc3BvdGxpZ2h0Q29udHJvbHNMaXN0LmNvbnRlbnRzLmluY2x1ZGVzKHNwb3RsaWdodENvbnRyb2wpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldG9ybmEgdW0gb2JqZXRvIGRlIG5vdGlmaWNhw6fDo28gcmVmZXJlbnRlIGFvIGJvdMOjbyBjbGljYWRvIHBlbG8gdXN1w6FyaW8uXG4gICAqIEBwYXJhbSB1c2VyQWN0aW9uIFVzZXJBY3Rpb24gQcOnw6NvIHJlYWxpemFkYSBwZWxvIHVzdcOhcmlvIGFvIGNsaWNhciBub3MgYm90w7VlcyBkYSBtb2RhbFxuICAgKiBAcmV0dXJucyBTcG90bGlnaHROb3RpZmljYXRpb24gT2JqZXRvIGRlIG5vdGlmaWNhw6fDo29cbiAgICovXG4gIHByaXZhdGUgYnVpbGROb3RpZmljYXRpb24odXNlckFjdGlvbjogVXNlckFjdGlvbik6IFNwb3RsaWdodE5vdGlmaWNhdGlvbiB7XG4gICAgY29uc3Qgc3BvdGxpZ2h0ID0gdGhpcy5zcG90bGlnaHRTY3JlZW4uc3BvdGxpZ2h0O1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGNsaWNrZWRCdXR0b246IHVzZXJBY3Rpb24sXG4gICAgICBzcG90bGlnaHRDb250cm9sSWQ6IHNwb3RsaWdodC5pZCxcbiAgICAgIHByaW1hcnlCdXR0b25Vcmw6IHNwb3RsaWdodC5wcmltYXJ5QnV0dG9uVXJsXG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyBjbG9zZSgpOiB2b2lkIHtcbiAgICB0aGlzLnZpc2libGVDaGFuZ2UuZW1pdChmYWxzZSk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJzLXNwb3RsaWdodC1vdmVybGF5XCIgaWQ9XCJvbFwiICpuZ0lmPVwiY2FuQXBwZWFyICYmIHZpc2libGVcIj5cbiAgICA8ZGl2IGNsYXNzPVwicy1zcG90bGlnaHRcIiBpZD1cInNsXCIgW25nQ2xhc3NdPVwieydzLWVmZmVjdC1mYWRlaW4nOiBmYWRlfVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwicy1zcG90bGlnaHQtaGVhZGVyXCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInMtc3BvdGxpZ2h0LXRpdGxlXCI+e3toZWFkZXIudG9VcHBlckNhc2UoKX19PC9zcGFuPlxuICAgICAgICAgICAgPGEgcm9sZT1cImJ1dHRvblwiIGNsYXNzPVwicy1zcG90bGlnaHQtY2xvc2VcIiAoY2xpY2spPVwiY2xvc2UoKVwiPjxzcGFuIGNsYXNzPVwiZmEgZmEtdGltZXNcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L3NwYW4+PC9hPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInMtaW1nXCI+XG4gICAgICAgICAgICA8aW1nIHNyYz1cInt7aW1nVXJsfX1cIj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzLXNwb3RsaWdodC1mb290ZXJcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzLXNwb3RsaWdodC1mb290ZXItbGVmdFwiPlxuICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgcEJ1dHRvblxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwic3VibWl0XCJcbiAgICAgICAgICAgICAgICAgICAgaWQ9XCJkZWNsaW5lLWJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgIGxhYmVsPVwie3sncGxhdGZvcm0uc3BvdGxpZ2h0Lm5vX2ludGVyZXN0JyB8IHRyYW5zbGF0ZX19XCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uVGVydGlhcnkoKVwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidWktYnV0dG9uLWxpbmtcIj5cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInMtc3BvdGxpZ2h0LWZvb3Rlci1yaWdodFwiPlxuICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICBwQnV0dG9uXG4gICAgICAgICAgICAgICAgdHlwZT1cInN1Ym1pdFwiXG4gICAgICAgICAgICAgICAgaWQ9XCJyZW1lbWJlci1idXR0b25cIlxuICAgICAgICAgICAgICAgIGxhYmVsPVwie3sncGxhdGZvcm0uc3BvdGxpZ2h0LnJlbWVtYmVyX2xhdGUnIHwgdHJhbnNsYXRlfX1cIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJvblNlY29uZGFyeSgpXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInVpLWJ1dHRvbi1yYWlzZWQgdWktYnV0dG9uLXNlY29uZGFyeVwiPlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgcEJ1dHRvblxuICAgICAgICAgICAgICAgIGxhYmVsPVwie3twcmltYXJ5QnV0dG9uTGFiZWx9fVwiXG4gICAgICAgICAgICAgICAgdHlwZT1cInN1Ym1pdFwiXG4gICAgICAgICAgICAgICAgaWQ9XCJzdWJtaXQtYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwib25QcmltYXJ5KClcIlxuICAgICAgICAgICAgICAgIFtwVG9vbHRpcF09XCJwcmltYXJ5QnV0dG9uVG9vbHRpcFwiXG4gICAgICAgICAgICAgICAgdG9vbHRpcFBvc2l0aW9uPVwidG9wXCJcbiAgICAgICAgICAgICAgICBzaG93RGVsYXk9XCI1MDBcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwidWktYnV0dG9uLXJhaXNlZFwiPlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC9kaXY+XG48L2Rpdj4iXX0=
293
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BvdGxpZ2h0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYi9zcmMvbW9kdWxlcy9zcG90bGlnaHQvY29tcG9uZW50L3Nwb3RsaWdodC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9saWIvc3JjL21vZHVsZXMvc3BvdGxpZ2h0L2NvbXBvbmVudC9zcG90bGlnaHQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBRTFELE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNoRSxPQUFPLEVBR0wsZUFBZSxFQUNmLG1CQUFtQixFQUtwQixNQUFNLGlCQUFpQixDQUFDO0FBQ3pCLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7Ozs7Ozs7QUFPbkQsTUFBTSxPQUFPLGtCQUFrQjtJQUNaLGdCQUFnQixHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQzVDLGFBQWEsR0FBRyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDdEMsUUFBUSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUM1QixVQUFVLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBRTFDLE1BQU0sQ0FBUztJQUNmLE1BQU0sQ0FBUztJQUNmLGtCQUFrQixDQUFTO0lBQzNCLG9CQUFvQixDQUFTO0lBQzdCLFNBQVMsR0FBRyxLQUFLLENBQUM7SUFFakIsV0FBVyxDQUFTO0lBQ3BCLGtCQUFrQixDQUFxQjtJQUN2Qyxx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QUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsRUFBRSxDQUFDO1lBQ25GLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNwQyxDQUFDO1FBQ0QsSUFBSSxDQUFDLG9CQUFvQixHQUFHLElBQUksQ0FBQztRQUNqQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRU8sTUFBTTtRQUNaLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxRQUFRLENBQUMsYUFBNEIsQ0FBQztRQUNsRSxVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ2QsTUFBTSxNQUFNLEdBQXVCLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUN6RixNQUFNLFNBQVMsR0FBRyxNQUFNLEVBQUUsYUFBYSxDQUNyQywwRUFBMEUsQ0FDM0UsQ0FBQztZQUNGLFNBQVMsRUFBRSxLQUFLLEVBQUUsQ0FBQztRQUNyQixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7d0dBaFZVLGtCQUFrQjs0RkFBbEIsa0JBQWtCLG9MQ3RCL0IsZ21FQW1EUzs7NEZEN0JJLGtCQUFrQjtrQkFMOUIsU0FBUzsrQkFDRSxhQUFhOzhCQXdCaEIsT0FBTztzQkFEYixLQUFLO2dCQUlDLE1BQU07c0JBRFosS0FBSztnQkFJQyxJQUFJO3NCQURWLEtBQUs7Z0JBSUMsT0FBTztzQkFEYixLQUFLO2dCQUlDLGFBQWE7c0JBRG5CLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBVc2VyQWN0aW9uIH0gZnJvbSAnLi8uLi9tb2RlbHMvdXNlci1hY3Rpb24uZW51bSc7XG5pbXBvcnQgeyBTcG90bGlnaHROb3RpZmljYXRpb24gfSBmcm9tICcuLy4uL21vZGVscy9zcG90bGlnaHQtbm90aWZpY2F0aW9uLmludGVyZmFjZSc7XG5pbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0LCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFNwb3RsaWdodFNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlL3Nwb3RsaWdodC5zZXJ2aWNlJztcbmltcG9ydCB7XG4gIFNwb3RsaWdodCxcbiAgU3BvdGxpZ2h0U2NyZWVuLFxuICBFbnVtRGlzcGxheVR5cGUsXG4gIEVudW1TcG90bGlnaHRTdGF0dXMsXG4gIFNwb3RsaWdodENvbnRyb2xMaXN0LFxuICBTcG90bGlnaHRVc2Vyc0xpc3QsXG4gIFNwb3RsaWdodFVzZXIsXG4gIFNwb3RsaWdodENvbnRyb2xcbn0gZnJvbSAnLi4vbW9kZWxzL2luZGV4JztcbmltcG9ydCB7IERhdGVQaXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvb2tpZVNlcnZpY2UgfSBmcm9tICduZ3gtY29va2llLXNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdzLXNwb3RsaWdodCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9zcG90bGlnaHQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zcG90bGlnaHQuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBTcG90bGlnaHRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBwcml2YXRlIHJlYWRvbmx5IHNwb3RsaWdodFNlcnZpY2UgPSBpbmplY3QoU3BvdGxpZ2h0U2VydmljZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgY29va2llU2VydmljZSA9IGluamVjdChDb29raWVTZXJ2aWNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBkYXRlUGlwZSA9IGluamVjdChEYXRlUGlwZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgZWxlbWVudFJlZiA9IGluamVjdChFbGVtZW50UmVmKTtcblxuICBwdWJsaWMgaGVhZGVyOiBzdHJpbmc7XG4gIHB1YmxpYyBpbWdVcmw6IHN0cmluZztcbiAgcHVibGljIHByaW1hcnlCdXR0b25MYWJlbDogc3RyaW5nO1xuICBwdWJsaWMgcHJpbWFyeUJ1dHRvblRvb2x0aXA6IHN0cmluZztcbiAgcHVibGljIGNhbkFwcGVhciA9IGZhbHNlO1xuXG4gIHByaXZhdGUgY3VycmVudFVzZXI6IHN0cmluZztcbiAgcHJpdmF0ZSBzcG90bGlnaHRVc2Vyc0xpc3Q6IFNwb3RsaWdodFVzZXJzTGlzdDtcbiAgcHJpdmF0ZSBzcG90bGlnaHRDb250cm9sc0xpc3Q6IFNwb3RsaWdodENvbnRyb2xMaXN0O1xuICBwcml2YXRlIHNwb3RsaWdodFNjcmVlbjogU3BvdGxpZ2h0U2NyZWVuO1xuICBwcml2YXRlIGNhbkVtaXRFdmVudDogYm9vbGVhbjtcbiAgcHJpdmF0ZSBwcmV2aW91c0ZvY3VzRWxlbWVudDogSFRNTEVsZW1lbnQgfCBudWxsID0gbnVsbDtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgdmlzaWJsZSA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBtZW51SWQ6IHN0cmluZztcblxuICBASW5wdXQoKVxuICBwdWJsaWMgZmFkZSA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBhbHRUZXh0ID0gJyc7XG5cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyB2aXNpYmxlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXG4gIGFzeW5jIG5nT25Jbml0KCkge1xuICAgIGF3YWl0IHRoaXMuc2V0VmFsdWVzKCk7XG4gICAgdGhpcy5mZXRjaFNwb3RsaWdodCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBzZXRWYWx1ZXMoKSB7XG4gICAgY29uc3QgdXNlckRhdGE6IGFueSA9IEpTT04ucGFyc2UodGhpcy5jb29raWVTZXJ2aWNlLmdldCgnY29tLnNlbmlvci50b2tlbicpKTtcbiAgICB0aGlzLmN1cnJlbnRVc2VyID0gdXNlckRhdGEudXNlcm5hbWU7XG4gICAgdGhpcy5zcG90bGlnaHRVc2Vyc0xpc3QgPSBhd2FpdCB0aGlzLnNwb3RsaWdodFNlcnZpY2UubGlzdFNwb3RsaWdodFVzZXJzKCk7XG4gICAgdGhpcy5zcG90bGlnaHRDb250cm9sc0xpc3QgPSBhd2FpdCB0aGlzLnNwb3RsaWdodFNlcnZpY2UubGlzdFNwb3RsaWdodENvbnRyb2woKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0VmFsdWVzSW5TcG90bGlnaHQodmFsdWVzOiBTcG90bGlnaHQpOiB2b2lkIHtcbiAgICB0aGlzLmhlYWRlciA9IHZhbHVlcy5zcG90bGlnaHRUaXRsZTtcbiAgICB0aGlzLmltZ1VybCA9IHZhbHVlcy5iYW5uZXJVcmw7XG4gICAgdGhpcy5wcmltYXJ5QnV0dG9uTGFiZWwgPSB2YWx1ZXMucHJpbWFyeUJ1dHRvbkxhYmVsO1xuICAgIHRoaXMucHJpbWFyeUJ1dHRvblRvb2x0aXAgPSB2YWx1ZXMucHJpbWFyeUJ1dHRvbkhpbnQ7XG4gIH1cblxuICBwcml2YXRlIGdldFNob3dEYXRlKGRheXM6IG51bWJlcik6IHN0cmluZyB7XG4gICAgY29uc3QgY3VycmVudERhdGUgPSBuZXcgRGF0ZSgpO1xuICAgIHJldHVybiB0aGlzLmRhdGVQaXBlLnRyYW5zZm9ybShjdXJyZW50RGF0ZS5zZXREYXRlKGN1cnJlbnREYXRlLmdldERhdGUoKSArIGRheXMpLnRvU3RyaW5nKCksICd5eXl5LU1NLWRkJyk7XG4gIH1cblxuICBwcml2YXRlIGZldGNoU3BvdGxpZ2h0KCk6IHZvaWQge1xuICAgIHRoaXMuc3BvdGxpZ2h0U2VydmljZS5saXN0U3BvdGxpZ2h0U2NyZWVuKCkuc3Vic2NyaWJlKHZhbHVlID0+IHtcbiAgICAgIHRoaXMuc3BvdGxpZ2h0U2NyZWVuID0gdmFsdWUuY29udGVudHMuZmlsdGVyKHZhbCA9PiB2YWwuc2NyZWVuTWVudUlkID09PSB0aGlzLm1lbnVJZClbMF07XG4gICAgICBpZiAodGhpcy5zcG90bGlnaHRTY3JlZW4pIHtcbiAgICAgICAgdGhpcy5zaG93U3BvdGxpZ2h0KHRoaXMuc3BvdGxpZ2h0U2NyZWVuLnNwb3RsaWdodCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHNob3dTcG90bGlnaHQoc3BvdGxpZ2h0OiBTcG90bGlnaHQpOiB2b2lkIHtcbiAgICBpZiAodGhpcy52YWxpZGF0ZURhdGUoc3BvdGxpZ2h0LmluaXRpYWxEYXRlKSAmJiB0aGlzLnZhbGlkYXRlRmluYWxEYXRlKHNwb3RsaWdodC5maW5hbERhdGUpICYmIHRoaXMudmFsaWRhdGVTcG90bGlnaHQoc3BvdGxpZ2h0KSkge1xuICAgICAgdGhpcy5zZXRWYWx1ZXNJblNwb3RsaWdodChzcG90bGlnaHQpO1xuICAgICAgdGhpcy5jYW5BcHBlYXIgPSB0cnVlO1xuICAgICAgY29uc3QgY29udHJvbCA9IHRoaXMuZ2V0U3BvdGxpZ2h0Q29udHJvbEZyb21MaXN0KHRoaXMuc3BvdGxpZ2h0U2NyZWVuLnNwb3RsaWdodC5pZCk7XG4gICAgICB0aGlzLmNhbkVtaXRFdmVudCA9ICFjb250cm9sIHx8IHRoaXMuY3VycmVudFVzZXIgIT09IGNvbnRyb2wuZmlyc3RVc2VyO1xuICAgICAgdGhpcy5vbk9wZW4oKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHZhbGlkYXRlRGF0ZShkYXRlOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBpZiAoZGF0ZSkge1xuICAgICAgY29uc3QgY3VycmVudERhdGUgPSB0aGlzLmRhdGVQaXBlLnRyYW5zZm9ybShuZXcgRGF0ZSgpLnRvU3RyaW5nKCksICd5eXl5LU1NLWRkJyk7XG4gICAgICBjb25zdCBpbml0aWFsRGF0ZSA9IHRoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKGRhdGUsICd5eXl5LU1NLWRkJyk7XG5cbiAgICAgIHJldHVybiBjdXJyZW50RGF0ZSA+PSBpbml0aWFsRGF0ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcHJpdmF0ZSB2YWxpZGF0ZUZpbmFsRGF0ZShkYXRlOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBpZiAoZGF0ZSkge1xuICAgICAgY29uc3QgY3VycmVudERhdGUgPSB0aGlzLmRhdGVQaXBlLnRyYW5zZm9ybShuZXcgRGF0ZSgpLnRvU3RyaW5nKCksICd5eXl5LU1NLWRkJyk7XG4gICAgICBjb25zdCBmaW5hbERhdGUgPSB0aGlzLmRhdGVQaXBlLnRyYW5zZm9ybShkYXRlLCAneXl5eS1NTS1kZCcpO1xuXG4gICAgICByZXR1cm4gY3VycmVudERhdGUgPD0gZmluYWxEYXRlO1xuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHByaXZhdGUgdmFsaWRhdGVTcG90bGlnaHQoc3BvdGxpZ2h0OiBTcG90bGlnaHQpOiBib29sZWFuIHtcbiAgICBpZiAoIXRoaXMudmFsaWRhdGVDb250cm9sc0xpc3QodGhpcy5zcG90bGlnaHRDb250cm9sc0xpc3QsIHNwb3RsaWdodCwgdGhpcy5jdXJyZW50VXNlcikpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgaWYgKCF0aGlzLnZhbGlkYXRlRGlzcGxheVR5cGUoc3BvdGxpZ2h0LCB0aGlzLnNwb3RsaWdodFVzZXJzTGlzdCwgdGhpcy5zcG90bGlnaHRDb250cm9sc0xpc3QsIHRoaXMuY3VycmVudFVzZXIpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgcHJpdmF0ZSB2YWxpZGF0ZUNvbnRyb2xzTGlzdChjb250cm9sc0xpc3Q6IFNwb3RsaWdodENvbnRyb2xMaXN0LCBzcG90bGlnaHQ6IFNwb3RsaWdodCwgY3VycmVudFVzZXI6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGlmIChjb250cm9sc0xpc3QudG90YWxFbGVtZW50cykge1xuXG4gICAgICBjb25zdCBub3RDb21wYXRpYmxlQ29udHJvbHMgPSBjb250cm9sc0xpc3QuY29udGVudHMuZmlsdGVyKGNvbnRyb2wgPT4ge1xuICAgICAgICBpZiAoY29udHJvbC5zdGF0dXMgPT09IEVudW1TcG90bGlnaHRTdGF0dXMuQUNUSVZFKSB7XG4gICAgICAgICAgcmV0dXJuIGNvbnRyb2wuc3BvdGxpZ2h0SWQgPT09IHNwb3RsaWdodC5pZDtcblxuICAgICAgICB9IGVsc2UgaWYgKGNvbnRyb2wuc3RhdHVzID09PSBFbnVtU3BvdGxpZ2h0U3RhdHVzLklOX1BST0dSRVNTKSB7XG4gICAgICAgICAgICByZXR1cm4gY29udHJvbC5zcG90bGlnaHRJZCA9PT0gc3BvdGxpZ2h0LmlkICYmIGNvbnRyb2wuZmlyc3RVc2VyICE9PSBjdXJyZW50VXNlcjtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIGlmIChub3RDb21wYXRpYmxlQ29udHJvbHMubGVuZ3RoID4gMCkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgcHJpdmF0ZSB2YWxpZGF0ZURpc3BsYXlUeXBlKFxuICAgIHNwb3RsaWdodDogU3BvdGxpZ2h0LFxuICAgIHVzZXJzTGlzdDogU3BvdGxpZ2h0VXNlcnNMaXN0LFxuICAgIGNvbnRyb2xzTGlzdDogU3BvdGxpZ2h0Q29udHJvbExpc3QsXG4gICAgY3VycmVudFVzZXI6IHN0cmluZ1xuICApOiBib29sZWFuIHtcblxuICAgIHN3aXRjaCAoc3BvdGxpZ2h0LmRpc3BsYXlUeXBlKSB7XG4gICAgICBjYXNlIEVudW1EaXNwbGF5VHlwZS5BRFZFUlNJVElORzpcbiAgICAgICAgcmV0dXJuIHVzZXJzTGlzdC50b3RhbEVsZW1lbnRzID8gdGhpcy52YWxpZGF0ZVVzZXIodXNlcnNMaXN0LmNvbnRlbnRzLCBzcG90bGlnaHQpIDogdHJ1ZTtcblxuICAgICAgY2FzZSBFbnVtRGlzcGxheVR5cGUuSU5URUdSQVRJT046XG5cbiAgICAgICAgaWYgKGNvbnRyb2xzTGlzdC50b3RhbEVsZW1lbnRzKSB7XG4gICAgICAgICAgY29uc3QgY29tcGF0aWJsZUNvbnRyb2xzID0gY29udHJvbHNMaXN0LmNvbnRlbnRzLmZpbHRlcihjb250cm9sID0+IHtcblxuICAgICAgICAgICAgICBzd2l0Y2ggKGNvbnRyb2wuc3RhdHVzKSB7XG5cbiAgICAgICAgICAgICAgICBjYXNlIEVudW1TcG90bGlnaHRTdGF0dXMuTk9fU1RBUlRFRDpcbiAgICAgICAgICAgICAgICAgIHJldHVybiBjb250cm9sLnNwb3RsaWdodElkID09PSBzcG90bGlnaHQuaWQ7XG5cbiAgICAgICAgICAgICAgICBjYXNlIEVudW1TcG90bGlnaHRTdGF0dXMuUkVGVVNFRDpcbiAgICAgICAgICAgICAgICAgIHJldHVybiB1c2Vyc0xpc3QudG90YWxFbGVtZW50cyA/IHRoaXMudmFsaWRhdGVVc2VyKHVzZXJzTGlzdC5jb250ZW50cywgc3BvdGxpZ2h0KSA6IHRydWU7XG5cbiAgICAgICAgICAgICAgICBjYXNlIEVudW1TcG90bGlnaHRTdGF0dXMuSU5fUFJPR1JFU1M6XG4gICAgICAgICAgICAgICAgICByZXR1cm4gY29udHJvbC5maXJzdFVzZXIgPT09IGN1cnJlbnRVc2VyXG4gICAgICAgICAgICAgICAgICAgICYmIGNvbnRyb2wuc3BvdGxpZ2h0SWQgPT09IHNwb3RsaWdodC5pZDtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICAgIGlmIChjb21wYXRpYmxlQ29udHJvbHMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgdmFsaWRhdGVVc2VyKHVzZXJzOiBTcG90bGlnaHRVc2VyW10sIHNwb3RsaWdodDogU3BvdGxpZ2h0KTogYm9vbGVhbiB7XG4gICAgbGV0IHNwb3RsaWdodFVzZXJzID0gdXNlcnMuZmlsdGVyKHVzZXIgPT4gdXNlci5zcG90bGlnaHRJZCA9PT0gc3BvdGxpZ2h0LmlkKTtcblxuICAgIGlmICghc3BvdGxpZ2h0VXNlcnMubGVuZ3RoKSB7XG4gICAgICBzcG90bGlnaHRVc2VycyA9IHVzZXJzLmZpbHRlcih1c2VyID0+IHVzZXIudXNlck9wZXJhdGlvbiA9PT0gdGhpcy5jdXJyZW50VXNlcik7XG5cbiAgICAgIHJldHVybiBzcG90bGlnaHRVc2Vycy5sZW5ndGggPT09IDA7XG4gICAgfVxuXG4gICAgY29uc3QgY29tcGF0aWJsZVVzZXJUb1ZhbGlkYXRlID0gc3BvdGxpZ2h0VXNlcnMuZmlsdGVyKHVzZXIgPT4gdXNlci51c2VyT3BlcmF0aW9uID09PSB0aGlzLmN1cnJlbnRVc2VyKVswXTtcblxuICAgIHJldHVybiBjb21wYXRpYmxlVXNlclRvVmFsaWRhdGUgPyB0aGlzLnZhbGlkYXRlRGF0ZShjb21wYXRpYmxlVXNlclRvVmFsaWRhdGUuc2hvd0RhdGUpIDogdHJ1ZTtcbiAgfVxuXG4gIHByaXZhdGUgc2F2ZVNwb3RsaWdodFVzZXIoZGF5cz86IG51bWJlcik6IHZvaWQge1xuXG4gICAgY29uc3Qgc3BvdGxpZ2h0ID0gdGhpcy5zcG90bGlnaHRTY3JlZW4uc3BvdGxpZ2h0O1xuXG4gICAgY29uc3QgdXNlciA9IHRoaXMuc3BvdGxpZ2h0VXNlcnNMaXN0LmNvbnRlbnRzLmZpbHRlcih2YWwgPT4ge1xuICAgICAgcmV0dXJuIHZhbC5zcG90bGlnaHRJZCA9PT0gc3BvdGxpZ2h0LmlkXG4gICAgICAgICYmIHZhbC51c2VyT3BlcmF0aW9uID09PSB0aGlzLmN1cnJlbnRVc2VyO1xuICAgIH0pWzBdO1xuXG4gICAgbGV0IHNwb3RsaWdodFVzZXI6IFNwb3RsaWdodFVzZXIgPSB7XG4gICAgICBzcG90bGlnaHRJZDogc3BvdGxpZ2h0LmlkLFxuICAgICAgc2hvd0RhdGU6IGRheXMgPyB0aGlzLmdldFNob3dEYXRlKGRheXMpIDogbnVsbCxcbiAgICAgIHVzZXJPcGVyYXRpb246IHRoaXMuY3VycmVudFVzZXJcbiAgICB9O1xuXG4gICAgaWYgKHVzZXIpIHtcbiAgICAgIHNwb3RsaWdodFVzZXIgPSB7XG4gICAgICAgIGlkOiB1c2VyLmlkLFxuICAgICAgICAuLi5zcG90bGlnaHRVc2VyXG4gICAgICB9O1xuICAgIH1cbiAgICB0aGlzLnNwb3RsaWdodFNlcnZpY2Uuc2F2ZVNwb3RsaWdodFVzZXIoc3BvdGxpZ2h0VXNlcikuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBwdWJsaWMgb25QcmltYXJ5KCkge1xuICAgIGNvbnN0IHNwb3RsaWdodCA9IHRoaXMuc3BvdGxpZ2h0U2NyZWVuLnNwb3RsaWdodDtcbiAgICBjb25zdCBub3RpZmljYXRpb24gPSB0aGlzLmJ1aWxkTm90aWZpY2F0aW9uKFVzZXJBY3Rpb24uQ09ORklSTUVEKTtcblxuICAgIHRoaXMuc2F2ZVNwb3RsaWdodENvbnRyb2woKTtcbiAgICB0aGlzLnNhdmVTcG90bGlnaHRVc2VyKCk7XG5cbiAgICBpZiAodGhpcy5jYW5FbWl0RXZlbnQpIHtcbiAgICAgIHRoaXMuc3BvdGxpZ2h0U2VydmljZS5ub3RpZmljYXRlU3BvdGxpZ2h0KG5vdGlmaWNhdGlvbikuc3Vic2NyaWJlKCk7XG4gICAgfVxuXG4gICAgaWYgKHNwb3RsaWdodC5wcmltYXJ5QnV0dG9uVXJsKSB7XG4gICAgICB3aW5kb3cub3BlbihzcG90bGlnaHQucHJpbWFyeUJ1dHRvblVybCk7XG4gICAgfVxuXG4gICAgdGhpcy5jbG9zZSgpO1xuICB9XG5cbiAgcHVibGljIG9uU2Vjb25kYXJ5KCk6IHZvaWQge1xuICAgIGNvbnN0IG5vdGlmaWNhdGlvbiA9IHRoaXMuYnVpbGROb3RpZmljYXRpb24oVXNlckFjdGlvbi5QT1NUUE9ORUQpO1xuXG4gICAgdGhpcy5zYXZlU3BvdGxpZ2h0Q29udHJvbChFbnVtU3BvdGxpZ2h0U3RhdHVzLlJFRlVTRUQpO1xuICAgIHRoaXMuc2F2ZVNwb3RsaWdodFVzZXIodGhpcy5zcG90bGlnaHRTY3JlZW4uc3BvdGxpZ2h0LmRheXNSZW1lbWJlckxhdGUpO1xuICAgIHRoaXMuc3BvdGxpZ2h0U2VydmljZS5ub3RpZmljYXRlU3BvdGxpZ2h0KG5vdGlmaWNhdGlvbikuc3Vic2NyaWJlKCk7XG5cbiAgICB0aGlzLmNsb3NlKCk7XG4gIH1cblxuICBwdWJsaWMgb25UZXJ0aWFyeSgpOiB2b2lkIHtcbiAgICBjb25zdCBub3RpZmljYXRpb24gPSB0aGlzLmJ1aWxkTm90aWZpY2F0aW9uKFVzZXJBY3Rpb24uUkVGVVNFRCk7XG5cbiAgICB0aGlzLnNhdmVTcG90bGlnaHRDb250cm9sKEVudW1TcG90bGlnaHRTdGF0dXMuUkVGVVNFRCk7XG4gICAgdGhpcy5zYXZlU3BvdGxpZ2h0VXNlcih0aGlzLnNwb3RsaWdodFNjcmVlbi5zcG90bGlnaHQuZGF5c05vdEludGVyZXN0ZWQpO1xuICAgIHRoaXMuc3BvdGxpZ2h0U2VydmljZS5ub3RpZmljYXRlU3BvdGxpZ2h0KG5vdGlmaWNhdGlvbikuc3Vic2NyaWJlKCk7XG5cbiAgICB0aGlzLmNsb3NlKCk7XG4gIH1cblxuICAvKipcbiAgICogVmVyaWZpY2Egc2UgdW0gcmVnaXN0cm8gZGUgdXN1w6FyaW8gcGVydGVuY2UgYW8gdXN1w6FyaW8gbG9nYWRvIGUgY29ycmVzcG9uZGUgYW8gc3BvdGxpZ2h0IGF0dWFsXG4gICAqIEBwYXJhbSB1c2VyIFNwb3RsaWdodFVzZXIgT2JqZXRvIHJlcHJlc2VudGFuZG8gbyByZWdpc3RybyBkbyB1c3XDoXJpbyBwYXJhIHVtYSBzcG90bGlnaHRcbiAgICogQHBhcmFtIHNwb3RsaWdodCBTcG90bGlnaHQgU3BvdGxpZ2h0XG4gICAqIEByZXR1cm5zIGJvb2xlYW4gdHJ1ZSBzZSBjb3JyZXNwb25kZXIgYW8gc3BvdGxpZ2h0IGF0dWFsLCBmYWxzZSBjYXNvIGNvbnRyw6FyaW9cbiAgICovXG4gIHByaXZhdGUgaGFzVGhpc1JlZ2lzdGVyKHVzZXI6IFNwb3RsaWdodFVzZXIsIHNwb3RsaWdodDogU3BvdGxpZ2h0KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICh1c2VyLnNwb3RsaWdodElkID09PSBzcG90bGlnaHQuaWQgJiYgdXNlci51c2VyT3BlcmF0aW9uID09PSB0aGlzLmN1cnJlbnRVc2VyKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBWZXJpZmljYSBzZSB1bSByZWdpc3RybyBkZSB1c3XDoXJpbyBwZXJ0ZWNlIGFvIHVzdcOhcmlvIGxvZ2FkbywgbWFzIG7Do28gY29ycmVzcG9uZGUgYW8gc3BvdGxpZ2h0IGF0dWFsXG4gICAqIEBwYXJhbSB1c2VyIFNwb3RsaWdodFVzZXIgT2JqZXRvIHJlcHJlc2VudGFuZG8gbyByZWdpc3RybyBkbyB1c3XDoXJpbyBwYXJhIHVtYSBzcG90bGlnaHRcbiAgICogQHBhcmFtIHNwb3RsaWdodCBTcG90bGlnaHQgU3BvdGxpZ2h0XG4gICAqIEByZXR1cm5zIGJvb2xlYW4gdHJ1ZSBzZSBjb3JyZXNwb25kZXIgYW8gc3BvdGxpZ2h0IGF0dWFsLCBmYWxzZSBjYXNvIGNvbnRyw6FyaW9cbiAgICovXG4gIHByaXZhdGUgaGFzQW5vdGhlclJlZ2lzdGVyKHVzZXI6IFNwb3RsaWdodFVzZXIsIHNwb3RsaWdodDogU3BvdGxpZ2h0KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHVzZXIuc3BvdGxpZ2h0SWQgIT09IHNwb3RsaWdodC5pZCAmJiB1c2VyLnVzZXJPcGVyYXRpb24gPT09IHRoaXMuY3VycmVudFVzZXI7XG4gIH1cblxuICAvKipcbiAgICogUGVyc2lzdGUgdW0gbm92byByZWdpc3RybyBkZSBjb250cm9sZSBwYXJhIG8gc3BvdGxpZ2h0IGF0dWFsIHNlXG4gICAqIG7Do28gZm9yIGVuY29udHJhZG8gbmVuaHVtIG5hIGxpc3RhIGRlIGNvbnRyb2xlcyBjYXJyZWdhZGEgaW5pY2lhbG1lbnRlXG4gICAqIEBwYXJhbSBzdGF0dXMgRW51bVNwb3RsaWdodFN0YXR1cyBTdGF0dXMgZG8gY29udHJvbGUgZG8gc3BvdGxpZ2h0LiBTZSBuZW5odW0gZm9yIGluZm9ybWFkbywgSU5fUFJPR1JFU1Mgc2Vyw6EgYXBsaWNhZG9cbiAgICogQHJldHVybnMgU3BvdGxpZ2h0Q29udHJvbCBDb250cm9sZSBkbyBzcG90bGlnaHQgcmVjdXBlcmFkby9wZXNpc3RpZG9cbiAgICovXG4gIHByaXZhdGUgc2F2ZVNwb3RsaWdodENvbnRyb2woc3RhdHVzID0gRW51bVNwb3RsaWdodFN0YXR1cy5JTl9QUk9HUkVTUyk6IFNwb3RsaWdodENvbnRyb2wge1xuICAgIGNvbnN0IHNwb3RsaWdodCA9IHRoaXMuc3BvdGxpZ2h0U2NyZWVuLnNwb3RsaWdodDtcbiAgICBsZXQgY29udHJvbDogU3BvdGxpZ2h0Q29udHJvbCA9IHRoaXMuZ2V0U3BvdGxpZ2h0Q29udHJvbEZyb21MaXN0KHNwb3RsaWdodC5pZCk7XG5cbiAgICBpZiAoIWNvbnRyb2wpIHtcbiAgICAgIGNvbnRyb2wgPSB7XG4gICAgICAgIHNwb3RsaWdodElkOiBzcG90bGlnaHQuaWQsXG4gICAgICAgIHN0YXR1czogc3RhdHVzLFxuICAgICAgICBmaXJzdFVzZXI6IHRoaXMuY3VycmVudFVzZXJcbiAgICAgIH07XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuaXNOZXdDb250cm9sKGNvbnRyb2wpIHx8IGNvbnRyb2wuc3RhdHVzICE9PSBFbnVtU3BvdGxpZ2h0U3RhdHVzLklOX1BST0dSRVNTKSB7XG4gICAgICBjb250cm9sLnN0YXR1cyA9IHN0YXR1cztcbiAgICAgIGNvbnRyb2wuZmlyc3RVc2VyID0gc3RhdHVzID09PSBFbnVtU3BvdGxpZ2h0U3RhdHVzLklOX1BST0dSRVNTID8gdGhpcy5jdXJyZW50VXNlciA6ICcnO1xuICAgICAgdGhpcy5zcG90bGlnaHRTZXJ2aWNlLnNhdmVTcG90bGlnaHRDb250cm9sKGNvbnRyb2wpLnN1YnNjcmliZSgpO1xuICAgIH1cblxuICAgIHJldHVybiBjb250cm9sO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldG9ybmEgbyBjb250cm9sZSBkZSBzcG90bGlnaHQgY29ycmVzcG9uZGVudGUgYW8gaWRlbnRpZmljYWRvclxuICAgKiBpbmZvcm1hZG8gbmEgbGlzdGEgZGUgY29udHJvbGVzIGNhcnJlZ2FkYSBuYSBpbmljaWFsaXphw6fDo28gZG8gY29tcG9uZW50ZVxuICAgKiBAcGFyYW0gaWQgc3RyaW5nIElkZW50aWZpY2Fkb3IgZG8gY29udHJvbGUgZGUgc3BvdGxpZ2h0XG4gICAqL1xuICBwcml2YXRlIGdldFNwb3RsaWdodENvbnRyb2xGcm9tTGlzdChpZDogc3RyaW5nKTogU3BvdGxpZ2h0Q29udHJvbCB7XG4gICAgcmV0dXJuIHRoaXMuc3BvdGxpZ2h0Q29udHJvbHNMaXN0LmNvbnRlbnRzLmZpbHRlcih2YWwgPT4gIHZhbC5zcG90bGlnaHRJZCA9PT0gaWQpWzBdO1xuICB9XG5cbiAgLyoqXG4gICAqIFZlcmlmaWNhIHNlIG8gY29udHJvbGUgZGUgc3BvdGxpZ2h0IGluZm9ybWFkbyBuw6NvIGZvaSByZWdpc3RyYWRvIGFpbmRhXG4gICAqIEBwYXJhbSBzcG90bGlnaHRDb250cm9sIFNwb3RsaWdodENvbnRyb2wgQ29udHJvbGUgZG8gc3BvdGxpZ2h0XG4gICAqIEByZXR1cm5zIGJvb2xlYW4gdHJ1ZSBzZSBhaW5kYSBuw6NvIGZvaSByZWdpc3RyYWRvIG5hIGJhc2UsIGZhbHNlIGNhc28gY29udHLDoXJpb1xuICAgKi9cbiAgcHJpdmF0ZSBpc05ld0NvbnRyb2woc3BvdGxpZ2h0Q29udHJvbDogU3BvdGxpZ2h0Q29udHJvbCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhdGhpcy5zcG90bGlnaHRDb250cm9sc0xpc3QuY29udGVudHMuaW5jbHVkZXMoc3BvdGxpZ2h0Q29udHJvbCk7XG4gIH1cblxuICAvKipcbiAgICogUmV0b3JuYSB1bSBvYmpldG8gZGUgbm90aWZpY2HDp8OjbyByZWZlcmVudGUgYW8gYm90w6NvIGNsaWNhZG8gcGVsbyB1c3XDoXJpby5cbiAgICogQHBhcmFtIHVzZXJBY3Rpb24gVXNlckFjdGlvbiBBw6fDo28gcmVhbGl6YWRhIHBlbG8gdXN1w6FyaW8gYW8gY2xpY2FyIG5vcyBib3TDtWVzIGRhIG1vZGFsXG4gICAqIEByZXR1cm5zIFNwb3RsaWdodE5vdGlmaWNhdGlvbiBPYmpldG8gZGUgbm90aWZpY2HDp8Ojb1xuICAgKi9cbiAgcHJpdmF0ZSBidWlsZE5vdGlmaWNhdGlvbih1c2VyQWN0aW9uOiBVc2VyQWN0aW9uKTogU3BvdGxpZ2h0Tm90aWZpY2F0aW9uIHtcbiAgICBjb25zdCBzcG90bGlnaHQgPSB0aGlzLnNwb3RsaWdodFNjcmVlbi5zcG90bGlnaHQ7XG5cbiAgICByZXR1cm4ge1xuICAgICAgY2xpY2tlZEJ1dHRvbjogdXNlckFjdGlvbixcbiAgICAgIHNwb3RsaWdodENvbnRyb2xJZDogc3BvdGxpZ2h0LmlkLFxuICAgICAgcHJpbWFyeUJ1dHRvblVybDogc3BvdGxpZ2h0LnByaW1hcnlCdXR0b25VcmxcbiAgICB9O1xuICB9XG5cbiAgcHVibGljIGNsb3NlKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnByZXZpb3VzRm9jdXNFbGVtZW50ICYmIGRvY3VtZW50LmJvZHkuY29udGFpbnModGhpcy5wcmV2aW91c0ZvY3VzRWxlbWVudCkpIHtcbiAgICAgIHRoaXMucHJldmlvdXNGb2N1c0VsZW1lbnQuZm9jdXMoKTtcbiAgICB9XG4gICAgdGhpcy5wcmV2aW91c0ZvY3VzRWxlbWVudCA9IG51bGw7XG4gICAgdGhpcy52aXNpYmxlQ2hhbmdlLmVtaXQoZmFsc2UpO1xuICB9XG5cbiAgcHJpdmF0ZSBvbk9wZW4oKTogdm9pZCB7XG4gICAgdGhpcy5wcmV2aW91c0ZvY3VzRWxlbWVudCA9IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgYXMgSFRNTEVsZW1lbnQ7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBjb25zdCBkaWFsb2c6IEhUTUxFbGVtZW50IHwgbnVsbCA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJ2RpYWxvZycpO1xuICAgICAgY29uc3QgZm9jdXNhYmxlID0gZGlhbG9nPy5xdWVyeVNlbGVjdG9yPEhUTUxFbGVtZW50PihcbiAgICAgICAgJ2J1dHRvbiwgW2hyZWZdLCBpbnB1dCwgc2VsZWN0LCB0ZXh0YXJlYSwgW3RhYmluZGV4XTpub3QoW3RhYmluZGV4PVwiLTFcIl0pJ1xuICAgICAgKTtcbiAgICAgIGZvY3VzYWJsZT8uZm9jdXMoKTtcbiAgICB9KTtcbiAgfVxufVxuIiwiPGRpYWxvZyBjbGFzcz1cInMtc3BvdGxpZ2h0LW92ZXJsYXlcIiBpZD1cIm9sXCIgKm5nSWY9XCJjYW5BcHBlYXIgJiYgdmlzaWJsZVwiXG4gICAgYXJpYS1tb2RhbD1cInRydWVcIiBhcmlhLWxhYmVsbGVkYnk9XCJzcG90bGlnaHQtdGl0bGVcIlxuICAgIGNka1RyYXBGb2N1cyAoa2V5ZG93bi5lc2NhcGUpPVwiY2xvc2UoKVwiPlxuICAgIDxkaXYgY2xhc3M9XCJzLXNwb3RsaWdodFwiIGlkPVwic2xcIiBbbmdDbGFzc109XCJ7J3MtZWZmZWN0LWZhZGVpbic6IGZhZGV9XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzLXNwb3RsaWdodC1oZWFkZXJcIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicy1zcG90bGlnaHQtdGl0bGVcIiBpZD1cInNwb3RsaWdodC10aXRsZVwiPnt7aGVhZGVyLnRvVXBwZXJDYXNlKCl9fTwvc3Bhbj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInMtc3BvdGxpZ2h0LWNsb3NlXCJcbiAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPVwiRmVjaGFyIHNwb3RsaWdodFwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImNsb3NlKClcIj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZhIGZhLXRpbWVzXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9zcGFuPlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwicy1pbWdcIj5cbiAgICAgICAgICAgIDxpbWcgc3JjPVwie3tpbWdVcmx9fVwiIFthbHRdPVwiYWx0VGV4dCB8fCAnJ1wiIHdpZHRoPVwiODAwXCIgaGVpZ2h0PVwiNDUwXCI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwicy1zcG90bGlnaHQtZm9vdGVyXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicy1zcG90bGlnaHQtZm9vdGVyLWxlZnRcIj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIHBCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cInN1Ym1pdFwiXG4gICAgICAgICAgICAgICAgICAgIGlkPVwiZGVjbGluZS1idXR0b25cIlxuICAgICAgICAgICAgICAgICAgICBsYWJlbD1cInt7J3BsYXRmb3JtLnNwb3RsaWdodC5ub19pbnRlcmVzdCcgfCB0cmFuc2xhdGV9fVwiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvblRlcnRpYXJ5KClcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInVpLWJ1dHRvbi1saW5rXCI+XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzLXNwb3RsaWdodC1mb290ZXItcmlnaHRcIj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgcEJ1dHRvblxuICAgICAgICAgICAgICAgIHR5cGU9XCJzdWJtaXRcIlxuICAgICAgICAgICAgICAgIGlkPVwicmVtZW1iZXItYnV0dG9uXCJcbiAgICAgICAgICAgICAgICBsYWJlbD1cInt7J3BsYXRmb3JtLnNwb3RsaWdodC5yZW1lbWJlcl9sYXRlJyB8IHRyYW5zbGF0ZX19XCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwib25TZWNvbmRhcnkoKVwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJ1aS1idXR0b24tcmFpc2VkIHVpLWJ1dHRvbi1zZWNvbmRhcnlcIj5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIHBCdXR0b25cbiAgICAgICAgICAgICAgICBsYWJlbD1cInt7cHJpbWFyeUJ1dHRvbkxhYmVsfX1cIlxuICAgICAgICAgICAgICAgIHR5cGU9XCJzdWJtaXRcIlxuICAgICAgICAgICAgICAgIGlkPVwic3VibWl0LWJ1dHRvblwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uUHJpbWFyeSgpXCJcbiAgICAgICAgICAgICAgICBbcFRvb2x0aXBdPVwicHJpbWFyeUJ1dHRvblRvb2x0aXBcIlxuICAgICAgICAgICAgICAgIHRvb2x0aXBQb3NpdGlvbj1cInRvcFwiXG4gICAgICAgICAgICAgICAgc2hvd0RlbGF5PVwiNTAwXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInVpLWJ1dHRvbi1yYWlzZWRcIj5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbjwvZGl2PlxuPC9kaWFsb2c+Il19
@@ -1,5 +1,6 @@
1
1
  import { NgModule } from '@angular/core';
2
2
  import { CommonModule, DatePipe } from '@angular/common';
3
+ import { A11yModule } from '@angular/cdk/a11y';
3
4
  import { ButtonModule } from 'primeng/button';
4
5
  import { TooltipModule } from 'primeng/tooltip';
5
6
  import { HttpInterceptorModule } from '../http-interceptor/http-interceptor.module';
@@ -14,7 +15,8 @@ import * as i1 from "../translations/translations.module";
14
15
  export class SpotlightModule {
15
16
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SpotlightModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
16
17
  static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.14", ngImport: i0, type: SpotlightModule, declarations: [SpotlightComponent,
17
- TranslatePipe], imports: [ButtonModule,
18
+ TranslatePipe], imports: [A11yModule,
19
+ ButtonModule,
18
20
  TooltipModule,
19
21
  CommonModule,
20
22
  HttpInterceptorModule, i1.TranslationsModule], exports: [SpotlightComponent] });
@@ -22,7 +24,8 @@ export class SpotlightModule {
22
24
  SpotlightService,
23
25
  DatePipe,
24
26
  CookieService
25
- ], imports: [ButtonModule,
27
+ ], imports: [A11yModule,
28
+ ButtonModule,
26
29
  TooltipModule,
27
30
  CommonModule,
28
31
  HttpInterceptorModule,
@@ -32,6 +35,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
32
35
  type: NgModule,
33
36
  args: [{
34
37
  imports: [
38
+ A11yModule,
35
39
  ButtonModule,
36
40
  TooltipModule,
37
41
  CommonModule,
@@ -50,4 +54,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
50
54
  exports: [SpotlightComponent]
51
55
  }]
52
56
  }] });
53
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BvdGxpZ2h0Lm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9zcmMvbW9kdWxlcy9zcG90bGlnaHQvc3BvdGxpZ2h0Lm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFekQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNoRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUNwRixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUN6RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNyRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDN0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQzs7O0FBb0JuRCxNQUFNLE9BQU8sZUFBZTt3R0FBZixlQUFlO3lHQUFmLGVBQWUsaUJBSnhCLGtCQUFrQjtZQUNsQixhQUFhLGFBYmIsWUFBWTtZQUNaLGFBQWE7WUFDYixZQUFZO1lBQ1oscUJBQXFCLG9DQVdiLGtCQUFrQjt5R0FFakIsZUFBZSxhQVZmO1lBQ1QsZ0JBQWdCO1lBQ2hCLFFBQVE7WUFDUixhQUFhO1NBQ2QsWUFWQyxZQUFZO1lBQ1osYUFBYTtZQUNiLFlBQVk7WUFDWixxQkFBcUI7WUFDckIsa0JBQWtCLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBQyxNQUFNLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsUUFBUSxFQUFDLENBQUMsQ0FBQzs7NEZBWTFFLGVBQWU7a0JBbEIzQixRQUFRO21CQUFDO29CQUNSLE9BQU8sRUFBRTt3QkFDUCxZQUFZO3dCQUNaLGFBQWE7d0JBQ2IsWUFBWTt3QkFDWixxQkFBcUI7d0JBQ3JCLGtCQUFrQixDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUMsTUFBTSxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBQyxDQUFDLENBQUM7cUJBQ3BGO29CQUNELFNBQVMsRUFBRTt3QkFDVCxnQkFBZ0I7d0JBQ2hCLFFBQVE7d0JBQ1IsYUFBYTtxQkFDZDtvQkFDRCxZQUFZLEVBQUU7d0JBQ1osa0JBQWtCO3dCQUNsQixhQUFhO3FCQUFDO29CQUNoQixPQUFPLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQztpQkFDOUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlLCBEYXRlUGlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cbmltcG9ydCB7IEJ1dHRvbk1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvYnV0dG9uJztcbmltcG9ydCB7IFRvb2x0aXBNb2R1bGUgfSBmcm9tICdwcmltZW5nL3Rvb2x0aXAnO1xuaW1wb3J0IHsgSHR0cEludGVyY2VwdG9yTW9kdWxlIH0gZnJvbSAnLi4vaHR0cC1pbnRlcmNlcHRvci9odHRwLWludGVyY2VwdG9yLm1vZHVsZSc7XG5pbXBvcnQgeyBUcmFuc2xhdGlvbnNNb2R1bGUgfSBmcm9tICcuLi90cmFuc2xhdGlvbnMvdHJhbnNsYXRpb25zLm1vZHVsZSc7XG5pbXBvcnQgeyBTcG90bGlnaHRDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudC9zcG90bGlnaHQuY29tcG9uZW50JztcbmltcG9ydCB7IFNwb3RsaWdodFNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2Uvc3BvdGxpZ2h0LnNlcnZpY2UnO1xuaW1wb3J0IHsgZmFsbGJhY2sgfSBmcm9tICcuL2xvY2FsZS9mYWxsYmFjayc7XG5pbXBvcnQgeyBUcmFuc2xhdGVQaXBlIH0gZnJvbSAnLi9waXBlcy90cmFuc2xhdGUucGlwZSc7XG5pbXBvcnQgeyBDb29raWVTZXJ2aWNlIH0gZnJvbSAnbmd4LWNvb2tpZS1zZXJ2aWNlJztcblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW1xuICAgIEJ1dHRvbk1vZHVsZSxcbiAgICBUb29sdGlwTW9kdWxlLFxuICAgIENvbW1vbk1vZHVsZSxcbiAgICBIdHRwSW50ZXJjZXB0b3JNb2R1bGUsXG4gICAgVHJhbnNsYXRpb25zTW9kdWxlLmZvckNoaWxkKFt7ZG9tYWluOiAncGxhdGZvcm0nLCBzZXJ2aWNlOiAnc3BvdGxpZ2h0JywgZmFsbGJhY2t9XSksXG4gIF0sXG4gIHByb3ZpZGVyczogW1xuICAgIFNwb3RsaWdodFNlcnZpY2UsXG4gICAgRGF0ZVBpcGUsXG4gICAgQ29va2llU2VydmljZVxuICBdLFxuICBkZWNsYXJhdGlvbnM6IFtcbiAgICBTcG90bGlnaHRDb21wb25lbnQsXG4gICAgVHJhbnNsYXRlUGlwZV0sXG4gIGV4cG9ydHM6IFtTcG90bGlnaHRDb21wb25lbnRdXG59KVxuZXhwb3J0IGNsYXNzIFNwb3RsaWdodE1vZHVsZSB7fVxuIl19
57
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BvdGxpZ2h0Lm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9zcmMvbW9kdWxlcy9zcG90bGlnaHQvc3BvdGxpZ2h0Lm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFekQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDaEQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFDcEYsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDekUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDckUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDL0QsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7OztBQXFCbkQsTUFBTSxPQUFPLGVBQWU7d0dBQWYsZUFBZTt5R0FBZixlQUFlLGlCQUp4QixrQkFBa0I7WUFDbEIsYUFBYSxhQWRiLFVBQVU7WUFDVixZQUFZO1lBQ1osYUFBYTtZQUNiLFlBQVk7WUFDWixxQkFBcUIsb0NBV2Isa0JBQWtCO3lHQUVqQixlQUFlLGFBVmY7WUFDVCxnQkFBZ0I7WUFDaEIsUUFBUTtZQUNSLGFBQWE7U0FDZCxZQVhDLFVBQVU7WUFDVixZQUFZO1lBQ1osYUFBYTtZQUNiLFlBQVk7WUFDWixxQkFBcUI7WUFDckIsa0JBQWtCLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBQyxNQUFNLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsUUFBUSxFQUFDLENBQUMsQ0FBQzs7NEZBWTFFLGVBQWU7a0JBbkIzQixRQUFRO21CQUFDO29CQUNSLE9BQU8sRUFBRTt3QkFDUCxVQUFVO3dCQUNWLFlBQVk7d0JBQ1osYUFBYTt3QkFDYixZQUFZO3dCQUNaLHFCQUFxQjt3QkFDckIsa0JBQWtCLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBQyxNQUFNLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsUUFBUSxFQUFDLENBQUMsQ0FBQztxQkFDcEY7b0JBQ0QsU0FBUyxFQUFFO3dCQUNULGdCQUFnQjt3QkFDaEIsUUFBUTt3QkFDUixhQUFhO3FCQUNkO29CQUNELFlBQVksRUFBRTt3QkFDWixrQkFBa0I7d0JBQ2xCLGFBQWE7cUJBQUM7b0JBQ2hCLE9BQU8sRUFBRSxDQUFDLGtCQUFrQixDQUFDO2lCQUM5QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUsIERhdGVQaXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcblxuaW1wb3J0IHsgQTExeU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9hMTF5JztcbmltcG9ydCB7IEJ1dHRvbk1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvYnV0dG9uJztcbmltcG9ydCB7IFRvb2x0aXBNb2R1bGUgfSBmcm9tICdwcmltZW5nL3Rvb2x0aXAnO1xuaW1wb3J0IHsgSHR0cEludGVyY2VwdG9yTW9kdWxlIH0gZnJvbSAnLi4vaHR0cC1pbnRlcmNlcHRvci9odHRwLWludGVyY2VwdG9yLm1vZHVsZSc7XG5pbXBvcnQgeyBUcmFuc2xhdGlvbnNNb2R1bGUgfSBmcm9tICcuLi90cmFuc2xhdGlvbnMvdHJhbnNsYXRpb25zLm1vZHVsZSc7XG5pbXBvcnQgeyBTcG90bGlnaHRDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudC9zcG90bGlnaHQuY29tcG9uZW50JztcbmltcG9ydCB7IFNwb3RsaWdodFNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2Uvc3BvdGxpZ2h0LnNlcnZpY2UnO1xuaW1wb3J0IHsgZmFsbGJhY2sgfSBmcm9tICcuL2xvY2FsZS9mYWxsYmFjayc7XG5pbXBvcnQgeyBUcmFuc2xhdGVQaXBlIH0gZnJvbSAnLi9waXBlcy90cmFuc2xhdGUucGlwZSc7XG5pbXBvcnQgeyBDb29raWVTZXJ2aWNlIH0gZnJvbSAnbmd4LWNvb2tpZS1zZXJ2aWNlJztcblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW1xuICAgIEExMXlNb2R1bGUsXG4gICAgQnV0dG9uTW9kdWxlLFxuICAgIFRvb2x0aXBNb2R1bGUsXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIEh0dHBJbnRlcmNlcHRvck1vZHVsZSxcbiAgICBUcmFuc2xhdGlvbnNNb2R1bGUuZm9yQ2hpbGQoW3tkb21haW46ICdwbGF0Zm9ybScsIHNlcnZpY2U6ICdzcG90bGlnaHQnLCBmYWxsYmFja31dKSxcbiAgXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAgU3BvdGxpZ2h0U2VydmljZSxcbiAgICBEYXRlUGlwZSxcbiAgICBDb29raWVTZXJ2aWNlXG4gIF0sXG4gIGRlY2xhcmF0aW9uczogW1xuICAgIFNwb3RsaWdodENvbXBvbmVudCxcbiAgICBUcmFuc2xhdGVQaXBlXSxcbiAgZXhwb3J0czogW1Nwb3RsaWdodENvbXBvbmVudF1cbn0pXG5leHBvcnQgY2xhc3MgU3BvdGxpZ2h0TW9kdWxlIHt9XG4iXX0=