@elderbyte/ngx-starter 17.11.0-beta4 → 17.11.0-beta6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/components/forms/search/domain/input/search-input-state.mjs +6 -6
- package/esm2022/lib/components/forms/search/domain/input/search-input.mjs +1 -1
- package/esm2022/lib/components/forms/search/elder-search-context.directive.mjs +10 -10
- package/esm2022/lib/components/forms/search/elder-search-input.directive.mjs +14 -29
- package/esm2022/lib/components/forms/search/search-box/elder-search-box.component.mjs +4 -4
- package/esm2022/lib/components/select/elder-select.module.mjs +15 -15
- package/esm2022/lib/components/select/filter/elder-chip-filter-style-resolver.mjs +19 -15
- package/esm2022/lib/components/select/filter/elder-chips-include-exclude.directive.mjs +144 -0
- package/esm2022/lib/components/select/filter/elder-filter-chip-template/elder-filter-chip-template.component.mjs +24 -31
- package/esm2022/lib/components/select/filter/include-exclude-model-filter-adapter.mjs +63 -0
- package/esm2022/lib/components/select/filter/include-exclude-selection-model.mjs +76 -20
- package/esm2022/lib/components/select/multi/elder-multi-select-chips/elder-multi-select-chips.component.mjs +7 -2
- package/esm2022/lib/components/select/multi/elder-search-include-exclude.directive.mjs +117 -43
- package/fesm2022/elderbyte-ngx-starter.mjs +741 -649
- package/fesm2022/elderbyte-ngx-starter.mjs.map +1 -1
- package/lib/components/forms/search/domain/input/search-input-state.d.ts +3 -3
- package/lib/components/forms/search/domain/input/search-input.d.ts +2 -6
- package/lib/components/forms/search/elder-search-context.directive.d.ts +3 -3
- package/lib/components/forms/search/elder-search-input.directive.d.ts +7 -11
- package/lib/components/forms/search/search-box/elder-search-box.component.d.ts +2 -1
- package/lib/components/select/elder-select.module.d.ts +4 -4
- package/lib/components/select/filter/elder-chip-filter-style-resolver.d.ts +1 -1
- package/lib/components/select/filter/{elder-chips-filter.directive.d.ts → elder-chips-include-exclude.directive.d.ts} +20 -9
- package/lib/components/select/filter/elder-filter-chip-template/elder-filter-chip-template.component.d.ts +9 -14
- package/lib/components/select/filter/include-exclude-model-filter-adapter.d.ts +29 -0
- package/lib/components/select/filter/include-exclude-selection-model.d.ts +25 -7
- package/lib/components/select/multi/elder-multi-select-chips/elder-multi-select-chips.component.d.ts +2 -0
- package/lib/components/select/multi/elder-search-include-exclude.directive.d.ts +57 -17
- package/package.json +1 -1
- package/esm2022/lib/components/forms/search/filter/include-exclude-input-converter.mjs +0 -137
- package/esm2022/lib/components/select/filter/elder-chips-filter.directive.mjs +0 -93
- package/lib/components/forms/search/filter/include-exclude-input-converter.d.ts +0 -62
|
@@ -1,74 +1,148 @@
|
|
|
1
|
-
import { Directive, Input } from '@angular/core';
|
|
1
|
+
import { Directive, Host, Input, Optional } from '@angular/core';
|
|
2
|
+
import { BehaviorSubject, concat, of, skipUntil, Subject } from 'rxjs';
|
|
3
|
+
import { SearchInputState } from '../../forms/search/domain/input/search-input-state';
|
|
4
|
+
import { LoggerFactory } from '@elderbyte/ts-logger';
|
|
2
5
|
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import IncludeExcludeInputConverter from '../../forms/search/filter/include-exclude-input-converter';
|
|
6
|
-
import { Objects } from '../../../common/objects';
|
|
6
|
+
import { debounceTime, delay, first, map, tap } from 'rxjs/operators';
|
|
7
|
+
import { IncludeExcludeModelFilterAdapter } from '../filter/include-exclude-model-filter-adapter';
|
|
7
8
|
import * as i0 from "@angular/core";
|
|
8
|
-
import * as i1 from "../../forms/search/elder-search-
|
|
9
|
-
import * as i2 from "../filter/
|
|
9
|
+
import * as i1 from "../../forms/search/elder-search-context.directive";
|
|
10
|
+
import * as i2 from "../filter/include-exclude-selection-model";
|
|
11
|
+
import * as i3 from "@angular/forms";
|
|
12
|
+
/**
|
|
13
|
+
* Binds a IncludeExcludeModel to a SearchContexts Filter.
|
|
14
|
+
*/
|
|
10
15
|
export class ElderSearchIncludeExcludeDirective {
|
|
11
|
-
/***************************************************************************
|
|
12
|
-
* *
|
|
13
|
-
* Properties *
|
|
14
|
-
* *
|
|
15
|
-
**************************************************************************/
|
|
16
|
-
set includeSuffix(suffix) {
|
|
17
|
-
this._includeSuffix$.next(suffix);
|
|
18
|
-
}
|
|
19
|
-
set excludeSuffix(suffix) {
|
|
20
|
-
this._excludeSuffix$.next(suffix);
|
|
21
|
-
}
|
|
22
16
|
/***************************************************************************
|
|
23
17
|
* *
|
|
24
18
|
* Constructor *
|
|
25
19
|
* *
|
|
26
20
|
**************************************************************************/
|
|
27
|
-
constructor(
|
|
28
|
-
this.
|
|
29
|
-
this.elderChipsFilter = elderChipsFilter;
|
|
21
|
+
constructor(searchContext, destroyRef, selectionModel, ngModel) {
|
|
22
|
+
this.searchContext = searchContext;
|
|
30
23
|
this.destroyRef = destroyRef;
|
|
24
|
+
this.selectionModel = selectionModel;
|
|
25
|
+
this.ngModel = ngModel;
|
|
31
26
|
/***************************************************************************
|
|
32
27
|
* *
|
|
33
28
|
* Fields *
|
|
34
29
|
* *
|
|
35
30
|
**************************************************************************/
|
|
36
|
-
this.
|
|
37
|
-
this.
|
|
38
|
-
this.
|
|
31
|
+
this.log = LoggerFactory.getLogger(this.constructor.name);
|
|
32
|
+
this._queryKey$ = new BehaviorSubject(null);
|
|
33
|
+
this.includeSuffix = '';
|
|
34
|
+
this.initialDone$ = new Subject();
|
|
35
|
+
this._state$ = this.buildInputStateObservable().pipe(
|
|
36
|
+
// tap(state => this.log.error('EMIT SEARCH INPUT STATE [' + state.queryKey + ']: ' + state.queryValue + (state.pristine ? '(pristine)' : ''), state))
|
|
37
|
+
);
|
|
38
|
+
}
|
|
39
|
+
/***************************************************************************
|
|
40
|
+
* *
|
|
41
|
+
* Life Cycle *
|
|
42
|
+
* *
|
|
43
|
+
**************************************************************************/
|
|
44
|
+
ngOnInit() {
|
|
45
|
+
this._extractedName = this.extractName();
|
|
46
|
+
this.updateQueryKey();
|
|
47
|
+
this.includeExcludeAdapter = new IncludeExcludeModelFilterAdapter(this.selectionModel, this.queryKey + this.includeSuffix, this.queryKey + this.excludeSuffix);
|
|
48
|
+
this.searchContext.register(this);
|
|
49
|
+
}
|
|
50
|
+
/***************************************************************************
|
|
51
|
+
* *
|
|
52
|
+
* Properties *
|
|
53
|
+
* *
|
|
54
|
+
**************************************************************************/
|
|
55
|
+
/**
|
|
56
|
+
* (Optional) Usually the control name is used, this allows a custom query key
|
|
57
|
+
*/
|
|
58
|
+
set queryKey(value) {
|
|
59
|
+
this._userQueryKey = value;
|
|
60
|
+
this.updateQueryKey();
|
|
61
|
+
}
|
|
62
|
+
get queryKey() {
|
|
63
|
+
return this._queryKey$.getValue();
|
|
64
|
+
}
|
|
65
|
+
get queryKey$() {
|
|
66
|
+
return this._queryKey$;
|
|
67
|
+
}
|
|
68
|
+
get state$() {
|
|
69
|
+
return this._state$;
|
|
70
|
+
}
|
|
71
|
+
get readonly() {
|
|
72
|
+
return this.ngModel?.isDisabled;
|
|
73
|
+
}
|
|
74
|
+
/***************************************************************************
|
|
75
|
+
* *
|
|
76
|
+
* Public API *
|
|
77
|
+
* *
|
|
78
|
+
**************************************************************************/
|
|
79
|
+
applyFilters(filters) {
|
|
80
|
+
this.includeExcludeAdapter.applyFilters(filters);
|
|
81
|
+
}
|
|
82
|
+
reset() {
|
|
83
|
+
this.selectionModel.replaceSelection([]);
|
|
39
84
|
}
|
|
40
85
|
/***************************************************************************
|
|
41
86
|
* *
|
|
42
|
-
* Private
|
|
87
|
+
* Private methods *
|
|
43
88
|
* *
|
|
44
89
|
**************************************************************************/
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
this.
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
return
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
|
|
90
|
+
updateQueryKey() {
|
|
91
|
+
const newKey = this._userQueryKey ?? this._extractedName;
|
|
92
|
+
if (this._queryKey$.getValue() !== newKey) {
|
|
93
|
+
this._queryKey$.next(newKey);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
buildInputStateObservable() {
|
|
97
|
+
const viewStabilized$ = of('stabilized$').pipe(delay(20), first());
|
|
98
|
+
const inputStateChanges$ = this.selectionModel.selection$.pipe(takeUntilDestroyed(this.destroyRef), map(value => this.buildInputState(true)), skipUntil(viewStabilized$), tap(() => this.initialDone$.next()), debounceTime(20));
|
|
99
|
+
const startDelayed$ = of('start').pipe(delay(15), map(start => {
|
|
100
|
+
return this.buildInputState(false);
|
|
101
|
+
}));
|
|
102
|
+
return concat(startDelayed$, inputStateChanges$);
|
|
103
|
+
}
|
|
104
|
+
buildInputState(userEvent) {
|
|
105
|
+
const filters = this.includeExcludeAdapter.toFilters();
|
|
106
|
+
return new SearchInputState(this.queryKey, filters, this.areAllPristine(filters), userEvent);
|
|
107
|
+
}
|
|
108
|
+
areAllPristine(filters) {
|
|
109
|
+
if (filters.length > 0) {
|
|
110
|
+
return filters.every(f => this.isPristine(f));
|
|
111
|
+
}
|
|
112
|
+
else {
|
|
113
|
+
return true;
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
isPristine(filter) {
|
|
117
|
+
return !this.isAttributeValuePresent(filter.value);
|
|
118
|
+
}
|
|
119
|
+
isAttributeValuePresent(value) {
|
|
120
|
+
return SearchInputState.isValueDefined(value)
|
|
121
|
+
&& (value + '').length !== 0;
|
|
122
|
+
}
|
|
123
|
+
extractName() {
|
|
124
|
+
return this.ngModel?.name;
|
|
125
|
+
}
|
|
126
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: ElderSearchIncludeExcludeDirective, deps: [{ token: i1.ElderSearchContextDirective }, { token: i0.DestroyRef }, { token: i2.IncludeExcludeSelectionModel }, { token: i3.NgModel, host: true, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
127
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.11", type: ElderSearchIncludeExcludeDirective, isStandalone: true, selector: "[elderSearchIncludeExclude]", inputs: { includeSuffix: "includeSuffix", excludeSuffix: "excludeSuffix", queryKey: "queryKey" }, exportAs: ["elderSearchInput"], ngImport: i0 }); }
|
|
61
128
|
}
|
|
62
129
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: ElderSearchIncludeExcludeDirective, decorators: [{
|
|
63
130
|
type: Directive,
|
|
64
131
|
args: [{
|
|
65
132
|
selector: '[elderSearchIncludeExclude]',
|
|
133
|
+
exportAs: 'elderSearchInput',
|
|
66
134
|
standalone: true
|
|
67
135
|
}]
|
|
68
|
-
}], ctorParameters: () => [{ type: i1.
|
|
136
|
+
}], ctorParameters: () => [{ type: i1.ElderSearchContextDirective }, { type: i0.DestroyRef }, { type: i2.IncludeExcludeSelectionModel }, { type: i3.NgModel, decorators: [{
|
|
137
|
+
type: Optional
|
|
138
|
+
}, {
|
|
139
|
+
type: Host
|
|
140
|
+
}] }], propDecorators: { includeSuffix: [{
|
|
69
141
|
type: Input
|
|
70
142
|
}], excludeSuffix: [{
|
|
71
143
|
type: Input,
|
|
72
144
|
args: [{ required: true }]
|
|
145
|
+
}], queryKey: [{
|
|
146
|
+
type: Input
|
|
73
147
|
}] } });
|
|
74
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxkZXItc2VhcmNoLWluY2x1ZGUtZXhjbHVkZS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lbGRlcmJ5dGUvbmd4LXN0YXJ0ZXIvc3JjL2xpYi9jb21wb25lbnRzL3NlbGVjdC9tdWx0aS9lbGRlci1zZWFyY2gtaW5jbHVkZS1leGNsdWRlLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWEsU0FBUyxFQUFFLEtBQUssRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUMzRCxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUM5RCxPQUFPLEVBQUMsZUFBZSxFQUFFLGFBQWEsRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUNwRCxPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFFdEMsT0FBTyw0QkFBNEIsTUFBTSwyREFBMkQsQ0FBQztBQUVyRyxPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0seUJBQXlCLENBQUM7Ozs7QUFNaEQsTUFBTSxPQUFPLGtDQUFrQztJQVc3Qzs7OztnRkFJNEU7SUFFNUUsSUFDVyxhQUFhLENBQUMsTUFBYztRQUNyQyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRUQsSUFDVyxhQUFhLENBQUMsTUFBYztRQUNyQyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRUQ7Ozs7Z0ZBSTRFO0lBRTVFLFlBQ21CLGdCQUEyQyxFQUMzQyxnQkFBMkMsRUFDcEQsVUFBc0I7UUFGYixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQTJCO1FBQzNDLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBMkI7UUFDcEQsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQWxDaEM7Ozs7b0ZBSTRFO1FBRTNELG9CQUFlLEdBQUcsSUFBSSxlQUFlLENBQVMsRUFBRSxDQUFDLENBQUM7UUFDbEQsb0JBQWUsR0FBRyxJQUFJLGVBQWUsQ0FBUyxJQUFJLENBQUMsQ0FBQztRQTZCbkUsSUFBSSxDQUFDLDBCQUEwQixFQUFFLENBQUM7SUFDcEMsQ0FBQztJQUVEOzs7O2dGQUk0RTtJQUVwRSwwQkFBMEI7UUFDaEMsYUFBYSxDQUFDO1lBQ1osSUFBSSxDQUFDLGdCQUFnQixDQUFDLFNBQVM7WUFDL0IsSUFBSSxDQUFDLGVBQWU7WUFDcEIsSUFBSSxDQUFDLGVBQWU7U0FDckIsQ0FBQzthQUNDLElBQUksQ0FDSCxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQ25DLE1BQU0sQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLGFBQWEsRUFBRSxhQUFhLENBQUMsRUFBRSxFQUFFLENBQ2xELENBQUMsQ0FBQyxRQUFRLElBQUksT0FBTyxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsSUFBSSxPQUFPLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUMvRSxDQUNGO2FBQ0EsU0FBUyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsYUFBYSxFQUFFLGFBQWEsQ0FBQyxFQUFFLEVBQUU7WUFDdEQsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsRUFBRSxhQUFhLEVBQUUsYUFBYSxDQUFDLENBQUM7UUFDckcsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBSU8sY0FBYyxDQUNwQixRQUFnQixFQUNoQixhQUFxQixFQUNyQixhQUFxQjtRQUVyQixPQUFPLElBQUksNEJBQTRCLENBQ3JDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxjQUFjLEVBQ3BDLFFBQVEsRUFDUixhQUFhLEVBQ2IsYUFBYSxDQUNkLENBQUM7SUFDSixDQUFDOytHQTdFVSxrQ0FBa0M7bUdBQWxDLGtDQUFrQzs7NEZBQWxDLGtDQUFrQztrQkFKOUMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsNkJBQTZCO29CQUN2QyxVQUFVLEVBQUUsSUFBSTtpQkFDakI7K0pBbUJZLGFBQWE7c0JBRHZCLEtBQUs7Z0JBTUssYUFBYTtzQkFEdkIsS0FBSzt1QkFBQyxFQUFDLFFBQVEsRUFBRSxJQUFJLEVBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0Rlc3Ryb3lSZWYsIERpcmVjdGl2ZSwgSW5wdXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHt0YWtlVW50aWxEZXN0cm95ZWR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7QmVoYXZpb3JTdWJqZWN0LCBjb21iaW5lTGF0ZXN0fSBmcm9tICdyeGpzJztcbmltcG9ydCB7ZmlsdGVyfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge0VsZGVyU2VhcmNoSW5wdXREaXJlY3RpdmV9IGZyb20gJy4uLy4uL2Zvcm1zL3NlYXJjaC9lbGRlci1zZWFyY2gtaW5wdXQuZGlyZWN0aXZlJztcbmltcG9ydCBJbmNsdWRlRXhjbHVkZUlucHV0Q29udmVydGVyIGZyb20gJy4uLy4uL2Zvcm1zL3NlYXJjaC9maWx0ZXIvaW5jbHVkZS1leGNsdWRlLWlucHV0LWNvbnZlcnRlcic7XG5pbXBvcnQge0VsZGVyQ2hpcHNGaWx0ZXJEaXJlY3RpdmV9IGZyb20gJy4uL2ZpbHRlci9lbGRlci1jaGlwcy1maWx0ZXIuZGlyZWN0aXZlJztcbmltcG9ydCB7T2JqZWN0c30gZnJvbSAnLi4vLi4vLi4vY29tbW9uL29iamVjdHMnO1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbZWxkZXJTZWFyY2hJbmNsdWRlRXhjbHVkZV0nLFxuICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIEVsZGVyU2VhcmNoSW5jbHVkZUV4Y2x1ZGVEaXJlY3RpdmUge1xuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBGaWVsZHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX2luY2x1ZGVTdWZmaXgkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+KCcnKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfZXhjbHVkZVN1ZmZpeCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZz4obnVsbCk7XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIFByb3BlcnRpZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBpbmNsdWRlU3VmZml4KHN1ZmZpeDogc3RyaW5nKSB7XG4gICAgdGhpcy5faW5jbHVkZVN1ZmZpeCQubmV4dChzdWZmaXgpO1xuICB9XG5cbiAgQElucHV0KHtyZXF1aXJlZDogdHJ1ZX0pXG4gIHB1YmxpYyBzZXQgZXhjbHVkZVN1ZmZpeChzdWZmaXg6IHN0cmluZykge1xuICAgIHRoaXMuX2V4Y2x1ZGVTdWZmaXgkLm5leHQoc3VmZml4KTtcbiAgfVxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBDb25zdHJ1Y3RvciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgZWxkZXJTZWFyY2hJbnB1dDogRWxkZXJTZWFyY2hJbnB1dERpcmVjdGl2ZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGVsZGVyQ2hpcHNGaWx0ZXI6IEVsZGVyQ2hpcHNGaWx0ZXJEaXJlY3RpdmUsXG4gICAgcHJpdmF0ZSBkZXN0cm95UmVmOiBEZXN0cm95UmVmXG4gICkge1xuICAgIHRoaXMuc2V0dXBTZWFyY2hRdWVyeVRyYW5zZm9ybXMoKTtcbiAgfVxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBQcml2YXRlIE1ldGhvZHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIHByaXZhdGUgc2V0dXBTZWFyY2hRdWVyeVRyYW5zZm9ybXMoKSB7XG4gICAgY29tYmluZUxhdGVzdChbXG4gICAgICB0aGlzLmVsZGVyU2VhcmNoSW5wdXQucXVlcnlLZXkkLFxuICAgICAgdGhpcy5faW5jbHVkZVN1ZmZpeCQsXG4gICAgICB0aGlzLl9leGNsdWRlU3VmZml4JFxuICAgIF0pXG4gICAgICAucGlwZShcbiAgICAgICAgdGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZiksXG4gICAgICAgIGZpbHRlcigoW3F1ZXJ5S2V5LCBpbmNsdWRlU3VmZml4LCBleGNsdWRlU3VmZml4XSkgPT5cbiAgICAgICAgICAhIXF1ZXJ5S2V5ICYmIE9iamVjdHMubm9uTnVsbChpbmNsdWRlU3VmZml4KSAmJiBPYmplY3RzLm5vbk51bGwoZXhjbHVkZVN1ZmZpeClcbiAgICAgICAgKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoW3F1ZXJ5S2V5LCBpbmNsdWRlU3VmZml4LCBleGNsdWRlU3VmZml4XSkgPT4ge1xuICAgICAgICB0aGlzLmVsZGVyU2VhcmNoSW5wdXQuaW5wdXRDb252ZXJ0ZXIgPSB0aGlzLmJ1aWxkQ29udmVydGVyKHF1ZXJ5S2V5LCBpbmNsdWRlU3VmZml4LCBleGNsdWRlU3VmZml4KTtcbiAgICAgIH0pO1xuICB9XG5cblxuXG4gIHByaXZhdGUgYnVpbGRDb252ZXJ0ZXIoXG4gICAgcXVlcnlLZXk6IHN0cmluZyxcbiAgICBpbmNsdWRlU3VmZml4OiBzdHJpbmcsXG4gICAgZXhjbHVkZVN1ZmZpeDogc3RyaW5nXG4gICk6IEluY2x1ZGVFeGNsdWRlSW5wdXRDb252ZXJ0ZXIge1xuICAgIHJldHVybiBuZXcgSW5jbHVkZUV4Y2x1ZGVJbnB1dENvbnZlcnRlcihcbiAgICAgIHRoaXMuZWxkZXJDaGlwc0ZpbHRlci5zZWxlY3Rpb25Nb2RlbCxcbiAgICAgIHF1ZXJ5S2V5LFxuICAgICAgaW5jbHVkZVN1ZmZpeCxcbiAgICAgIGV4Y2x1ZGVTdWZmaXhcbiAgICApO1xuICB9XG59XG5cbiJdfQ==
|
|
148
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxkZXItc2VhcmNoLWluY2x1ZGUtZXhjbHVkZS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lbGRlcmJ5dGUvbmd4LXN0YXJ0ZXIvc3JjL2xpYi9jb21wb25lbnRzL3NlbGVjdC9tdWx0aS9lbGRlci1zZWFyY2gtaW5jbHVkZS1leGNsdWRlLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWEsU0FBUyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQVUsUUFBUSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRW5GLE9BQU8sRUFBQyxlQUFlLEVBQUUsTUFBTSxFQUFjLEVBQUUsRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQ2pGLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLG9EQUFvRCxDQUFDO0FBQ3BGLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUluRCxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUU5RCxPQUFPLEVBQUMsWUFBWSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ3BFLE9BQU8sRUFBQyxnQ0FBZ0MsRUFBQyxNQUFNLGdEQUFnRCxDQUFDOzs7OztBQUdoRzs7R0FFRztBQU1ILE1BQU0sT0FBTyxrQ0FBa0M7SUEwQjdDOzs7O2dGQUk0RTtJQUU1RSxZQUNVLGFBQTBDLEVBQzFDLFVBQXNCLEVBQ2IsY0FBNEMsRUFDakMsT0FBZ0I7UUFIcEMsa0JBQWEsR0FBYixhQUFhLENBQTZCO1FBQzFDLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDYixtQkFBYyxHQUFkLGNBQWMsQ0FBOEI7UUFDakMsWUFBTyxHQUFQLE9BQU8sQ0FBUztRQWxDOUM7Ozs7b0ZBSTRFO1FBRTNELFFBQUcs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a0NBQWtDOzs0RkFBbEMsa0NBQWtDO2tCQUw5QyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSw2QkFBNkI7b0JBQ3ZDLFFBQVEsRUFBRSxrQkFBa0I7b0JBQzVCLFVBQVUsRUFBRSxJQUFJO2lCQUNqQjs7MEJBcUNJLFFBQVE7OzBCQUFJLElBQUk7eUNBckJaLGFBQWE7c0JBRG5CLEtBQUs7Z0JBSUMsYUFBYTtzQkFEbkIsS0FBSzt1QkFBQyxFQUFDLFFBQVEsRUFBRSxJQUFJLEVBQUM7Z0JBdURaLFFBQVE7c0JBRGxCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0Rlc3Ryb3lSZWYsIERpcmVjdGl2ZSwgSG9zdCwgSW5wdXQsIE9uSW5pdCwgT3B0aW9uYWx9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtTZWFyY2hJbnB1dH0gZnJvbSAnLi4vLi4vZm9ybXMvc2VhcmNoL2RvbWFpbi9pbnB1dC9zZWFyY2gtaW5wdXQnO1xuaW1wb3J0IHtCZWhhdmlvclN1YmplY3QsIGNvbmNhdCwgT2JzZXJ2YWJsZSwgb2YsIHNraXBVbnRpbCwgU3ViamVjdH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1NlYXJjaElucHV0U3RhdGV9IGZyb20gJy4uLy4uL2Zvcm1zL3NlYXJjaC9kb21haW4vaW5wdXQvc2VhcmNoLWlucHV0LXN0YXRlJztcbmltcG9ydCB7TG9nZ2VyRmFjdG9yeX0gZnJvbSAnQGVsZGVyYnl0ZS90cy1sb2dnZXInO1xuaW1wb3J0IHtFbGRlclNlYXJjaENvbnRleHREaXJlY3RpdmV9IGZyb20gJy4uLy4uL2Zvcm1zL3NlYXJjaC9lbGRlci1zZWFyY2gtY29udGV4dC5kaXJlY3RpdmUnO1xuaW1wb3J0IHtOZ01vZGVsfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge0ZpbHRlcn0gZnJvbSAnLi4vLi4vLi4vY29tbW9uL2RhdGEvZmlsdGVycy9maWx0ZXInO1xuaW1wb3J0IHt0YWtlVW50aWxEZXN0cm95ZWR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7SW5jbHVkZUV4Y2x1ZGVTZWxlY3Rpb25Nb2RlbH0gZnJvbSAnLi4vZmlsdGVyL2luY2x1ZGUtZXhjbHVkZS1zZWxlY3Rpb24tbW9kZWwnO1xuaW1wb3J0IHtkZWJvdW5jZVRpbWUsIGRlbGF5LCBmaXJzdCwgbWFwLCB0YXB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7SW5jbHVkZUV4Y2x1ZGVNb2RlbEZpbHRlckFkYXB0ZXJ9IGZyb20gJy4uL2ZpbHRlci9pbmNsdWRlLWV4Y2x1ZGUtbW9kZWwtZmlsdGVyLWFkYXB0ZXInO1xuXG5cbi8qKlxuICogQmluZHMgYSBJbmNsdWRlRXhjbHVkZU1vZGVsIHRvIGEgU2VhcmNoQ29udGV4dHMgRmlsdGVyLlxuICovXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbZWxkZXJTZWFyY2hJbmNsdWRlRXhjbHVkZV0nLFxuICBleHBvcnRBczogJ2VsZGVyU2VhcmNoSW5wdXQnLFxuICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIEVsZGVyU2VhcmNoSW5jbHVkZUV4Y2x1ZGVEaXJlY3RpdmUgaW1wbGVtZW50cyBTZWFyY2hJbnB1dCwgT25Jbml0IHtcblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogRmllbGRzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBwcml2YXRlIHJlYWRvbmx5IGxvZyA9IExvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKHRoaXMuY29uc3RydWN0b3IubmFtZSk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfcXVlcnlLZXkkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+KG51bGwpO1xuICBwcml2YXRlIF9leHRyYWN0ZWROYW1lOiBzdHJpbmcgfCBudWxsO1xuICBwcml2YXRlIF91c2VyUXVlcnlLZXk6IHN0cmluZyB8IG51bGw7XG5cbiAgQElucHV0KClcbiAgcHVibGljIGluY2x1ZGVTdWZmaXggPSAnJztcblxuICBASW5wdXQoe3JlcXVpcmVkOiB0cnVlfSlcbiAgcHVibGljIGV4Y2x1ZGVTdWZmaXg6IHN0cmluZztcblxuICBwcml2YXRlIHJlYWRvbmx5IF9zdGF0ZSQ6IE9ic2VydmFibGU8U2VhcmNoSW5wdXRTdGF0ZT47XG5cbiAgcHJpdmF0ZSBpbmNsdWRlRXhjbHVkZUFkYXB0ZXI6IEluY2x1ZGVFeGNsdWRlTW9kZWxGaWx0ZXJBZGFwdGVyO1xuXG4gIHB1YmxpYyByZWFkb25seSBpbml0aWFsRG9uZSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBDb25zdHJ1Y3RvciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgc2VhcmNoQ29udGV4dDogRWxkZXJTZWFyY2hDb250ZXh0RGlyZWN0aXZlLFxuICAgIHByaXZhdGUgZGVzdHJveVJlZjogRGVzdHJveVJlZixcbiAgICBwcml2YXRlIHJlYWRvbmx5IHNlbGVjdGlvbk1vZGVsOiBJbmNsdWRlRXhjbHVkZVNlbGVjdGlvbk1vZGVsLFxuICAgIEBPcHRpb25hbCgpIEBIb3N0KCkgcHJpdmF0ZSBuZ01vZGVsOiBOZ01vZGVsXG4gICkge1xuICAgIHRoaXMuX3N0YXRlJCA9IHRoaXMuYnVpbGRJbnB1dFN0YXRlT2JzZXJ2YWJsZSgpLnBpcGUoXG4gICAgICAvLyB0YXAoc3RhdGUgPT4gdGhpcy5sb2cuZXJyb3IoJ0VNSVQgU0VBUkNIIElOUFVUIFNUQVRFIFsnICsgc3RhdGUucXVlcnlLZXkgKyAnXTogJyArIHN0YXRlLnF1ZXJ5VmFsdWUgKyAoc3RhdGUucHJpc3RpbmUgPyAnKHByaXN0aW5lKScgOiAnJyksIHN0YXRlKSlcbiAgICApO1xuICB9XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIExpZmUgQ3ljbGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHVibGljIG5nT25Jbml0KCkge1xuICAgIHRoaXMuX2V4dHJhY3RlZE5hbWUgPSB0aGlzLmV4dHJhY3ROYW1lKCk7XG4gICAgdGhpcy51cGRhdGVRdWVyeUtleSgpO1xuXG4gICAgdGhpcy5pbmNsdWRlRXhjbHVkZUFkYXB0ZXIgPSBuZXcgSW5jbHVkZUV4Y2x1ZGVNb2RlbEZpbHRlckFkYXB0ZXIoXG4gICAgICB0aGlzLnNlbGVjdGlvbk1vZGVsLFxuICAgICAgdGhpcy5xdWVyeUtleSArIHRoaXMuaW5jbHVkZVN1ZmZpeCxcbiAgICAgIHRoaXMucXVlcnlLZXkgKyB0aGlzLmV4Y2x1ZGVTdWZmaXhcbiAgICApO1xuXG4gICAgdGhpcy5zZWFyY2hDb250ZXh0LnJlZ2lzdGVyKHRoaXMpO1xuICB9XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIFByb3BlcnRpZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgLyoqXG4gICAqIChPcHRpb25hbCkgVXN1YWxseSB0aGUgY29udHJvbCBuYW1lIGlzIHVzZWQsIHRoaXMgYWxsb3dzIGEgY3VzdG9tIHF1ZXJ5IGtleVxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBxdWVyeUtleSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5fdXNlclF1ZXJ5S2V5ID0gdmFsdWU7XG4gICAgdGhpcy51cGRhdGVRdWVyeUtleSgpO1xuICB9XG5cbiAgcHVibGljIGdldCBxdWVyeUtleSgpIHtcbiAgICByZXR1cm4gdGhpcy5fcXVlcnlLZXkkLmdldFZhbHVlKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHF1ZXJ5S2V5JCgpOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xuICAgIHJldHVybiB0aGlzLl9xdWVyeUtleSQ7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHN0YXRlJCgpOiBPYnNlcnZhYmxlPFNlYXJjaElucHV0U3RhdGU+IHtcbiAgICByZXR1cm4gdGhpcy5fc3RhdGUkO1xuICB9XG5cbiAgcHVibGljIGdldCByZWFkb25seSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5uZ01vZGVsPy5pc0Rpc2FibGVkO1xuICB9XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIFB1YmxpYyBBUEkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHVibGljIGFwcGx5RmlsdGVycyhmaWx0ZXJzOiBGaWx0ZXJbXSkge1xuICAgIHRoaXMuaW5jbHVkZUV4Y2x1ZGVBZGFwdGVyLmFwcGx5RmlsdGVycyhmaWx0ZXJzKTtcbiAgfVxuXG4gIHB1YmxpYyByZXNldCgpOiB2b2lkIHtcbiAgICB0aGlzLnNlbGVjdGlvbk1vZGVsLnJlcGxhY2VTZWxlY3Rpb24oW10pO1xuICB9XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIFByaXZhdGUgbWV0aG9kcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHJpdmF0ZSB1cGRhdGVRdWVyeUtleSgpOiB2b2lkIHtcbiAgICBjb25zdCBuZXdLZXkgPSB0aGlzLl91c2VyUXVlcnlLZXkgPz8gdGhpcy5fZXh0cmFjdGVkTmFtZTtcbiAgICBpZiAodGhpcy5fcXVlcnlLZXkkLmdldFZhbHVlKCkgIT09IG5ld0tleSkge1xuICAgICAgdGhpcy5fcXVlcnlLZXkkLm5leHQobmV3S2V5KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGJ1aWxkSW5wdXRTdGF0ZU9ic2VydmFibGUoKTogT2JzZXJ2YWJsZTxTZWFyY2hJbnB1dFN0YXRlPiB7XG5cbiAgICBjb25zdCB2aWV3U3RhYmlsaXplZCQgPSBvZignc3RhYmlsaXplZCQnKS5waXBlKFxuICAgICAgZGVsYXkoMjApLFxuICAgICAgZmlyc3QoKVxuICAgICk7XG5cbiAgICBjb25zdCBpbnB1dFN0YXRlQ2hhbmdlcyQgPSB0aGlzLnNlbGVjdGlvbk1vZGVsLnNlbGVjdGlvbiQucGlwZShcbiAgICAgIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpLFxuICAgICAgbWFwKHZhbHVlID0+IHRoaXMuYnVpbGRJbnB1dFN0YXRlKHRydWUpKSxcbiAgICAgIHNraXBVbnRpbCh2aWV3U3RhYmlsaXplZCQpLFxuICAgICAgdGFwKCgpID0+IHRoaXMuaW5pdGlhbERvbmUkLm5leHQoKSksXG4gICAgICBkZWJvdW5jZVRpbWUoMjApXG4gICAgKTtcblxuICAgIGNvbnN0IHN0YXJ0RGVsYXllZCQgPSBvZignc3RhcnQnKS5waXBlKFxuICAgICAgZGVsYXkoMTUpLFxuICAgICAgbWFwKHN0YXJ0ID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYnVpbGRJbnB1dFN0YXRlKGZhbHNlKTtcbiAgICAgIH0pXG4gICAgKTtcblxuICAgIHJldHVybiBjb25jYXQoc3RhcnREZWxheWVkJCwgaW5wdXRTdGF0ZUNoYW5nZXMkKTtcbiAgfVxuXG4gIHByaXZhdGUgYnVpbGRJbnB1dFN0YXRlKHVzZXJFdmVudDogYm9vbGVhbik6IFNlYXJjaElucHV0U3RhdGUge1xuICAgIGNvbnN0IGZpbHRlcnMgPSB0aGlzLmluY2x1ZGVFeGNsdWRlQWRhcHRlci50b0ZpbHRlcnMoKTtcbiAgICByZXR1cm4gbmV3IFNlYXJjaElucHV0U3RhdGUoXG4gICAgICB0aGlzLnF1ZXJ5S2V5LFxuICAgICAgZmlsdGVycyxcbiAgICAgIHRoaXMuYXJlQWxsUHJpc3RpbmUoZmlsdGVycyksXG4gICAgICB1c2VyRXZlbnRcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBhcmVBbGxQcmlzdGluZShmaWx0ZXJzOiBGaWx0ZXJbXSk6IGJvb2xlYW4ge1xuICAgIGlmIChmaWx0ZXJzLmxlbmd0aCA+IDApIHtcbiAgICAgIHJldHVybiBmaWx0ZXJzLmV2ZXJ5KGYgPT4gdGhpcy5pc1ByaXN0aW5lKGYpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBpc1ByaXN0aW5lKGZpbHRlcjogRmlsdGVyKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICF0aGlzLmlzQXR0cmlidXRlVmFsdWVQcmVzZW50KGZpbHRlci52YWx1ZSk7XG4gIH1cblxuICBwcml2YXRlIGlzQXR0cmlidXRlVmFsdWVQcmVzZW50KHZhbHVlOiBhbnkpOiBib29sZWFuIHtcbiAgICByZXR1cm4gU2VhcmNoSW5wdXRTdGF0ZS5pc1ZhbHVlRGVmaW5lZCh2YWx1ZSlcbiAgICAgICYmICh2YWx1ZSArICcnKS5sZW5ndGggIT09IDA7XG4gIH1cblxuICBwcml2YXRlIGV4dHJhY3ROYW1lKCk6IHN0cmluZyB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLm5nTW9kZWw/Lm5hbWU7XG4gIH1cbn1cbiJdfQ==
|