@tsi-developpement/tsi-shared-ui 1.8.14 → 1.8.16

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.
@@ -0,0 +1,104 @@
1
+ import { Subject } from 'rxjs';
2
+ export var CollectionChangeAction;
3
+ (function (CollectionChangeAction) {
4
+ CollectionChangeAction["Add"] = "Add";
5
+ CollectionChangeAction["Remove"] = "Remove";
6
+ CollectionChangeAction["Replace"] = "Replace";
7
+ CollectionChangeAction["Reset"] = "Reset";
8
+ })(CollectionChangeAction || (CollectionChangeAction = {}));
9
+ export class ObservableCollection {
10
+ constructor(items) {
11
+ this._changed$ = new Subject();
12
+ this.isObservableCollection = true;
13
+ this._items = items ? [...items] : [];
14
+ }
15
+ get changed() {
16
+ return this._changed$.asObservable();
17
+ }
18
+ get length() {
19
+ return this._items.length;
20
+ }
21
+ get(index) {
22
+ return this._items[index];
23
+ }
24
+ toArray() {
25
+ return [...this._items];
26
+ }
27
+ add(item) {
28
+ this._items.push(item);
29
+ this._changed$.next({
30
+ action: CollectionChangeAction.Add,
31
+ newItems: [item],
32
+ newStartingIndex: this._items.length - 1
33
+ });
34
+ }
35
+ insert(index, item) {
36
+ this._items.splice(index, 0, item);
37
+ this._changed$.next({
38
+ action: CollectionChangeAction.Add,
39
+ newItems: [item],
40
+ newStartingIndex: index
41
+ });
42
+ }
43
+ removeAt(index) {
44
+ const removed = this._items.splice(index, 1);
45
+ this._changed$.next({
46
+ action: CollectionChangeAction.Remove,
47
+ oldItems: removed,
48
+ oldStartingIndex: index
49
+ });
50
+ }
51
+ remove(item) {
52
+ const index = this._items.indexOf(item);
53
+ if (index !== -1) {
54
+ this.removeAt(index);
55
+ return true;
56
+ }
57
+ return false;
58
+ }
59
+ removeWhere(predicate) {
60
+ const index = this._items.findIndex(predicate);
61
+ if (index !== -1) {
62
+ this.removeAt(index);
63
+ return true;
64
+ }
65
+ return false;
66
+ }
67
+ replaceAt(index, item) {
68
+ const removed = this._items.splice(index, 1, item);
69
+ this._changed$.next({
70
+ action: CollectionChangeAction.Replace,
71
+ newItems: [item],
72
+ newStartingIndex: index,
73
+ oldItems: removed,
74
+ oldStartingIndex: index
75
+ });
76
+ }
77
+ clear() {
78
+ const old = [...this._items];
79
+ this._items = [];
80
+ this._changed$.next({
81
+ action: CollectionChangeAction.Reset,
82
+ oldItems: old
83
+ });
84
+ }
85
+ findIndex(predicate) {
86
+ return this._items.findIndex(predicate);
87
+ }
88
+ find(predicate) {
89
+ return this._items.find(predicate);
90
+ }
91
+ filter(predicate) {
92
+ return this._items.filter(predicate);
93
+ }
94
+ forEach(callback) {
95
+ this._items.forEach(callback);
96
+ }
97
+ map(callback) {
98
+ return this._items.map(callback);
99
+ }
100
+ destroy() {
101
+ this._changed$.complete();
102
+ }
103
+ }
104
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JzZXJ2YWJsZS1jb2xsZWN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHNpLXNoYXJlZC11aS9zcmMvbGliL21vZGVscy9jb2xsZWN0aW9uL29ic2VydmFibGUtY29sbGVjdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWMsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRTNDLE1BQU0sQ0FBTixJQUFZLHNCQUtYO0FBTEQsV0FBWSxzQkFBc0I7SUFDaEMscUNBQVcsQ0FBQTtJQUNYLDJDQUFpQixDQUFBO0lBQ2pCLDZDQUFtQixDQUFBO0lBQ25CLHlDQUFlLENBQUE7QUFDakIsQ0FBQyxFQUxXLHNCQUFzQixLQUF0QixzQkFBc0IsUUFLakM7QUFVRCxNQUFNLE9BQU8sb0JBQW9CO0lBSy9CLFlBQVksS0FBVztRQUhmLGNBQVMsR0FBRyxJQUFJLE9BQU8sRUFBNkIsQ0FBQztRQUM3QywyQkFBc0IsR0FBRyxJQUFJLENBQUM7UUFHNUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQ3hDLENBQUM7SUFFRCxJQUFJLE9BQU87UUFDVCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDdkMsQ0FBQztJQUVELElBQUksTUFBTTtRQUNSLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUM7SUFDNUIsQ0FBQztJQUVELEdBQUcsQ0FBQyxLQUFhO1FBQ2YsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzVCLENBQUM7SUFFRCxPQUFPO1FBQ0wsT0FBTyxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzFCLENBQUM7SUFFRCxHQUFHLENBQUMsSUFBTztRQUNULElBQUks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QyxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFFRCxNQUFNLENBQUMsU0FBK0I7UUFDcEMsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBRUQsT0FBTyxDQUFDLFFBQTBDO1FBQ2hELElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFFRCxHQUFHLENBQUksUUFBdUM7UUFDNUMsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBRUQsT0FBTztRQUNMLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDNUIsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5cclxuZXhwb3J0IGVudW0gQ29sbGVjdGlvbkNoYW5nZUFjdGlvbiB7XHJcbiAgQWRkID0gJ0FkZCcsXHJcbiAgUmVtb3ZlID0gJ1JlbW92ZScsXHJcbiAgUmVwbGFjZSA9ICdSZXBsYWNlJyxcclxuICBSZXNldCA9ICdSZXNldCdcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBDb2xsZWN0aW9uQ2hhbmdlZEV2ZW50PFQ+IHtcclxuICBhY3Rpb246IENvbGxlY3Rpb25DaGFuZ2VBY3Rpb247XHJcbiAgbmV3SXRlbXM/OiBUW107XHJcbiAgbmV3U3RhcnRpbmdJbmRleD86IG51bWJlcjtcclxuICBvbGRJdGVtcz86IFRbXTtcclxuICBvbGRTdGFydGluZ0luZGV4PzogbnVtYmVyO1xyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgT2JzZXJ2YWJsZUNvbGxlY3Rpb248VD4ge1xyXG4gIHByaXZhdGUgX2l0ZW1zOiBUW107XHJcbiAgcHJpdmF0ZSBfY2hhbmdlZCQgPSBuZXcgU3ViamVjdDxDb2xsZWN0aW9uQ2hhbmdlZEV2ZW50PFQ+PigpO1xyXG4gIHB1YmxpYyByZWFkb25seSBpc09ic2VydmFibGVDb2xsZWN0aW9uID0gdHJ1ZTtcclxuXHJcbiAgY29uc3RydWN0b3IoaXRlbXM/OiBUW10pIHtcclxuICAgIHRoaXMuX2l0ZW1zID0gaXRlbXMgPyBbLi4uaXRlbXNdIDogW107XHJcbiAgfVxyXG5cclxuICBnZXQgY2hhbmdlZCgpOiBPYnNlcnZhYmxlPENvbGxlY3Rpb25DaGFuZ2VkRXZlbnQ8VD4+IHtcclxuICAgIHJldHVybiB0aGlzLl9jaGFuZ2VkJC5hc09ic2VydmFibGUoKTtcclxuICB9XHJcblxyXG4gIGdldCBsZW5ndGgoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLl9pdGVtcy5sZW5ndGg7XHJcbiAgfVxyXG5cclxuICBnZXQoaW5kZXg6IG51bWJlcik6IFQge1xyXG4gICAgcmV0dXJuIHRoaXMuX2l0ZW1zW2luZGV4XTtcclxuICB9XHJcblxyXG4gIHRvQXJyYXkoKTogVFtdIHtcclxuICAgIHJldHVybiBbLi4udGhpcy5faXRlbXNdO1xyXG4gIH1cclxuXHJcbiAgYWRkKGl0ZW06IFQpOiB2b2lkIHtcclxuICAgIHRoaXMuX2l0ZW1zLnB1c2goaXRlbSk7XHJcbiAgICB0aGlzLl9jaGFuZ2VkJC5uZXh0KHtcclxuICAgICAgYWN0aW9uOiBDb2xsZWN0aW9uQ2hhbmdlQWN0aW9uLkFkZCxcclxuICAgICAgbmV3SXRlbXM6IFtpdGVtXSxcclxuICAgICAgbmV3U3RhcnRpbmdJbmRleDogdGhpcy5faXRlbXMubGVuZ3RoIC0gMVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBpbnNlcnQoaW5kZXg6IG51bWJlciwgaXRlbTogVCk6IHZvaWQge1xyXG4gICAgdGhpcy5faXRlbXMuc3BsaWNlKGluZGV4LCAwLCBpdGVtKTtcclxuICAgIHRoaXMuX2NoYW5nZWQkLm5leHQoe1xyXG4gICAgICBhY3Rpb246IENvbGxlY3Rpb25DaGFuZ2VBY3Rpb24uQWRkLFxyXG4gICAgICBuZXdJdGVtczogW2l0ZW1dLFxyXG4gICAgICBuZXdTdGFydGluZ0luZGV4OiBpbmRleFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICByZW1vdmVBdChpbmRleDogbnVtYmVyKTogdm9pZCB7XHJcbiAgICBjb25zdCByZW1vdmVkID0gdGhpcy5faXRlbXMuc3BsaWNlKGluZGV4LCAxKTtcclxuICAgIHRoaXMuX2NoYW5nZWQkLm5leHQoe1xyXG4gICAgICBhY3Rpb246IENvbGxlY3Rpb25DaGFuZ2VBY3Rpb24uUmVtb3ZlLFxyXG4gICAgICBvbGRJdGVtczogcmVtb3ZlZCxcclxuICAgICAgb2xkU3RhcnRpbmdJbmRleDogaW5kZXhcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcmVtb3ZlKGl0ZW06IFQpOiBib29sZWFuIHtcclxuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5faXRlbXMuaW5kZXhPZihpdGVtKTtcclxuICAgIGlmIChpbmRleCAhPT0gLTEpIHtcclxuICAgICAgdGhpcy5yZW1vdmVBdChpbmRleCk7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgcmVtb3ZlV2hlcmUocHJlZGljYXRlOiAoaXRlbTogVCkgPT4gYm9vbGVhbik6IGJvb2xlYW4ge1xyXG4gICAgY29uc3QgaW5kZXggPSB0aGlzLl9pdGVtcy5maW5kSW5kZXgocHJlZGljYXRlKTtcclxuICAgIGlmIChpbmRleCAhPT0gLTEpIHtcclxuICAgICAgdGhpcy5yZW1vdmVBdChpbmRleCk7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgcmVwbGFjZUF0KGluZGV4OiBudW1iZXIsIGl0ZW06IFQpOiB2b2lkIHtcclxuICAgIGNvbnN0IHJlbW92ZWQgPSB0aGlzLl9pdGVtcy5zcGxpY2UoaW5kZXgsIDEsIGl0ZW0pO1xyXG4gICAgdGhpcy5fY2hhbmdlZCQubmV4dCh7XHJcbiAgICAgIGFjdGlvbjogQ29sbGVjdGlvbkNoYW5nZUFjdGlvbi5SZXBsYWNlLFxyXG4gICAgICBuZXdJdGVtczogW2l0ZW1dLFxyXG4gICAgICBuZXdTdGFydGluZ0luZGV4OiBpbmRleCxcclxuICAgICAgb2xkSXRlbXM6IHJlbW92ZWQsXHJcbiAgICAgIG9sZFN0YXJ0aW5nSW5kZXg6IGluZGV4XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGNsZWFyKCk6IHZvaWQge1xyXG4gICAgY29uc3Qgb2xkID0gWy4uLnRoaXMuX2l0ZW1zXTtcclxuICAgIHRoaXMuX2l0ZW1zID0gW107XHJcbiAgICB0aGlzLl9jaGFuZ2VkJC5uZXh0KHtcclxuICAgICAgYWN0aW9uOiBDb2xsZWN0aW9uQ2hhbmdlQWN0aW9uLlJlc2V0LFxyXG4gICAgICBvbGRJdGVtczogb2xkXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGZpbmRJbmRleChwcmVkaWNhdGU6IChpdGVtOiBUKSA9PiBib29sZWFuKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLl9pdGVtcy5maW5kSW5kZXgocHJlZGljYXRlKTtcclxuICB9XHJcblxyXG4gIGZpbmQocHJlZGljYXRlOiAoaXRlbTogVCkgPT4gYm9vbGVhbik6IFQgfCB1bmRlZmluZWQge1xyXG4gICAgcmV0dXJuIHRoaXMuX2l0ZW1zLmZpbmQocHJlZGljYXRlKTtcclxuICB9XHJcblxyXG4gIGZpbHRlcihwcmVkaWNhdGU6IChpdGVtOiBUKSA9PiBib29sZWFuKTogVFtdIHtcclxuICAgIHJldHVybiB0aGlzLl9pdGVtcy5maWx0ZXIocHJlZGljYXRlKTtcclxuICB9XHJcblxyXG4gIGZvckVhY2goY2FsbGJhY2s6IChpdGVtOiBULCBpbmRleDogbnVtYmVyKSA9PiB2b2lkKTogdm9pZCB7XHJcbiAgICB0aGlzLl9pdGVtcy5mb3JFYWNoKGNhbGxiYWNrKTtcclxuICB9XHJcblxyXG4gIG1hcDxVPihjYWxsYmFjazogKGl0ZW06IFQsIGluZGV4OiBudW1iZXIpID0+IFUpOiBVW10ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2l0ZW1zLm1hcChjYWxsYmFjayk7XHJcbiAgfVxyXG5cclxuICBkZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5fY2hhbmdlZCQuY29tcGxldGUoKTtcclxuICB9XHJcbn1cclxuIl19
@@ -37,4 +37,5 @@ export * from './application/configuration/endpoint-infos';
37
37
  export * from './application/configuration/entity-delete-behavior';
38
38
  export * from './request-management/request-tracker-state';
39
39
  export * from './request-management/request-tracker-config';
40
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90c2ktc2hhcmVkLXVpL3NyYy9saWIvbW9kZWxzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsR0FBRyxDQUFDO0FBQ2xCLGNBQWMscUNBQXFDLENBQUM7QUFDcEQsY0FBYyw0Q0FBNEMsQ0FBQztBQUMzRCxjQUFjLDRCQUE0QixDQUFDO0FBQzNDLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLDZCQUE2QixDQUFDO0FBQzVDLGNBQWMsa0NBQWtDLENBQUM7QUFDakQsY0FBYyxvQ0FBb0MsQ0FBQztBQUNuRCxjQUFjLG9DQUFvQyxDQUFDO0FBQ25ELGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYywrQkFBK0IsQ0FBQztBQUM5QyxjQUFjLHdCQUF3QixDQUFDO0FBQ3ZDLGNBQWMsa0JBQWtCLENBQUM7QUFDakMsY0FBYywrQ0FBK0MsQ0FBQztBQUM5RCxjQUFjLGtDQUFrQyxDQUFDO0FBQ2pELGNBQWMsZ0NBQWdDLENBQUM7QUFDL0MsY0FBYyxzQ0FBc0MsQ0FBQztBQUNyRCxjQUFjLHFDQUFxQyxDQUFDO0FBQ3BELGNBQWMsNkJBQTZCLENBQUM7QUFDNUMsY0FBYyxnQ0FBZ0MsQ0FBQztBQUMvQyxjQUFjLG1CQUFtQixDQUFDO0FBQ2xDLGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYywrQkFBK0IsQ0FBQztBQUM5QyxjQUFjLCtDQUErQyxDQUFDO0FBQzlELGNBQWMseUJBQXlCLENBQUM7QUFDeEMsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLDJCQUEyQixDQUFDO0FBQzFDLGNBQWMsK0JBQStCLENBQUM7QUFDOUMsY0FBYyw0Q0FBNEMsQ0FBQztBQUMzRCxjQUFjLHNDQUFzQyxDQUFDO0FBQ3JELGNBQWMsNENBQTRDLENBQUM7QUFDM0QsY0FBYyxxQkFBcUIsQ0FBQztBQUVwQyxjQUFjLHlEQUF5RCxDQUFDO0FBQ3hFLGNBQWMsNkNBQTZDLENBQUM7QUFDNUQsY0FBYyw0Q0FBNEMsQ0FBQztBQUMzRCxjQUFjLG9EQUFvRCxDQUFDO0FBQ25FLGNBQWMsNENBQTRDLENBQUM7QUFDM0QsY0FBYyw2Q0FBNkMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4nO1xyXG5leHBvcnQgKiBmcm9tICcuL2F1dGhvcml6YXRpb24vYXV0aG9yaXphdGlvbi10b2tlbic7XHJcbmV4cG9ydCAqIGZyb20gJy4vYXV0aG9yaXphdGlvbi9hdXRob3JpemF0aW9uLXRva2VuLW1hcHBlcic7XHJcbmV4cG9ydCAqIGZyb20gJy4vY29tbW9uL2VudGl0eS1wcm9wZXJ0aWVzJztcclxuZXhwb3J0ICogZnJvbSAnLi9jb21tb24vZXZlbnQtc2NoZW1hJztcclxuZXhwb3J0ICogZnJvbSAnLi9jb21tb24va2V5LXZhbHVlLXBhaXInO1xyXG5leHBvcnQgKiBmcm9tICcuL2NvbW1vbi9lbnRpdHktdmFsaWRhdGlvbnMnO1xyXG5leHBvcnQgKiBmcm9tICcuL2NvbW1vbi9jb21wb25lbnQtZGVzY3JpbWluYXRvcic7XHJcbmV4cG9ydCAqIGZyb20gJy4vZmlsdGVyL2ZpbHRlci1ieS1leGlzdGluZy12YWx1ZXMnO1xyXG5leHBvcnQgKiBmcm9tICcuL2ZpbHRlci9wYWdlZC1yZXN1bHQtcmVxdWVzdC1iYXNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9maWx0ZXIvc2VhcmNoLWZpZWxkJztcclxuZXhwb3J0ICogZnJvbSAnLi9pbXBvcnQtZXhwb3J0L2ltcG9ydC1leHBvcnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xheW91dC9sYXlvdXQtY29uZmlnJztcclxuZXhwb3J0ICogZnJvbSAnLi9tb2RhbC9icy1tb2RhbCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vcmVtb3RlLXNlcnZpY2VzLXV0aWxpdHkvc3Vic2NyaXB0aW9uLXJlc3VsdCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vcmVwb3J0aW5nL2pzb24tZGF0YS1jb25uZWN0aW9uJztcclxuZXhwb3J0ICogZnJvbSAnLi9yZXBvcnRpbmcvb3B0aW9uYWwtZW5kcG9pbnRzJztcclxuZXhwb3J0ICogZnJvbSAnLi9yZXBvcnRpbmcvcmVwb3J0LXRlbXBsYXRlLXJlc3BvbnNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9yZXBvcnRpbmcvcmVwb3J0LXRvLWVkaXQtdGVtcGxhdGUnO1xyXG5leHBvcnQgKiBmcm9tICcuL3JlcG9ydGluZy9yZXBvcnQtdG8tcHJpbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL3JlcG9ydGluZy9yZXBvcnQtdG8tdGVtcGxhdGUnO1xyXG5leHBvcnQgKiBmcm9tICcuL3NldHRpbmdzL2RldmlzZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vc2V0dGluZ3MvZmljaGllcic7XHJcbmV4cG9ydCAqIGZyb20gJy4vaW1wb3J0LWV4cG9ydC9pbXBvcnQtZXhwb3J0JztcclxuZXhwb3J0ICogZnJvbSAnLi9wcmVzZW50YXRpb24tc2V0dGluZ3MvcHJlc2VudGF0aW9uLXNldHRpbmdzJztcclxuZXhwb3J0ICogZnJvbSAnLi9zZXR0aW5ncy90eXBlLWZpY2hpZXInO1xyXG5leHBvcnQgKiBmcm9tICcuL3dvcmtmbG93L3dvcmtmbG93JztcclxuZXhwb3J0ICogZnJvbSAnLi9lbnRpdHktaW5mby9lbnRpdHktaW5mbyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vdXNlci1pZGVudGl0eS91c2VyLWlkZW50aXR5JztcclxuZXhwb3J0ICogZnJvbSAnLi9wcm9ncmVzcy1iYXIvcHJvZ3Jlc3MtYmFyLWNyZWF0ZS1yZXF1ZXN0JztcclxuZXhwb3J0ICogZnJvbSAnLi9wcm9ncmVzcy1iYXIvcHJvZ3Jlc3MtYmFyLXJlc3BvbnNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9wcm9ncmVzcy1iYXIvcHJvZ3Jlc3MtYmFyLXVwZGF0ZS1yZXF1ZXN0JztcclxuZXhwb3J0ICogZnJvbSAnLi90c2ktY2FyZC90c2ktY2FyZCc7XHJcblxyXG5leHBvcnQgKiBmcm9tICcuL2pvdXJuYWxpc2F0aW9uLWFwcGxpY2F0aW9uL2pvdXJuYWxpc2F0aW9uLWFwcGxpY2F0aW9uJztcclxuZXhwb3J0ICogZnJvbSAnLi9qb3VybmFsaXNhdGlvbi1hcHBsaWNhdGlvbi9zdGF0dXMtaGlzdG9yeSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vYXBwbGljYXRpb24vY29uZmlndXJhdGlvbi9lbmRwb2ludC1pbmZvcyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vYXBwbGljYXRpb24vY29uZmlndXJhdGlvbi9lbnRpdHktZGVsZXRlLWJlaGF2aW9yJztcclxuZXhwb3J0ICogZnJvbSAnLi9yZXF1ZXN0LW1hbmFnZW1lbnQvcmVxdWVzdC10cmFja2VyLXN0YXRlJztcclxuZXhwb3J0ICogZnJvbSAnLi9yZXF1ZXN0LW1hbmFnZW1lbnQvcmVxdWVzdC10cmFja2VyLWNvbmZpZyc7Il19
40
+ export * from './collection/observable-collection';
41
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90c2ktc2hhcmVkLXVpL3NyYy9saWIvbW9kZWxzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsR0FBRyxDQUFDO0FBQ2xCLGNBQWMscUNBQXFDLENBQUM7QUFDcEQsY0FBYyw0Q0FBNEMsQ0FBQztBQUMzRCxjQUFjLDRCQUE0QixDQUFDO0FBQzNDLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLDZCQUE2QixDQUFDO0FBQzVDLGNBQWMsa0NBQWtDLENBQUM7QUFDakQsY0FBYyxvQ0FBb0MsQ0FBQztBQUNuRCxjQUFjLG9DQUFvQyxDQUFDO0FBQ25ELGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYywrQkFBK0IsQ0FBQztBQUM5QyxjQUFjLHdCQUF3QixDQUFDO0FBQ3ZDLGNBQWMsa0JBQWtCLENBQUM7QUFDakMsY0FBYywrQ0FBK0MsQ0FBQztBQUM5RCxjQUFjLGtDQUFrQyxDQUFDO0FBQ2pELGNBQWMsZ0NBQWdDLENBQUM7QUFDL0MsY0FBYyxzQ0FBc0MsQ0FBQztBQUNyRCxjQUFjLHFDQUFxQyxDQUFDO0FBQ3BELGNBQWMsNkJBQTZCLENBQUM7QUFDNUMsY0FBYyxnQ0FBZ0MsQ0FBQztBQUMvQyxjQUFjLG1CQUFtQixDQUFDO0FBQ2xDLGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYywrQkFBK0IsQ0FBQztBQUM5QyxjQUFjLCtDQUErQyxDQUFDO0FBQzlELGNBQWMseUJBQXlCLENBQUM7QUFDeEMsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLDJCQUEyQixDQUFDO0FBQzFDLGNBQWMsK0JBQStCLENBQUM7QUFDOUMsY0FBYyw0Q0FBNEMsQ0FBQztBQUMzRCxjQUFjLHNDQUFzQyxDQUFDO0FBQ3JELGNBQWMsNENBQTRDLENBQUM7QUFDM0QsY0FBYyxxQkFBcUIsQ0FBQztBQUVwQyxjQUFjLHlEQUF5RCxDQUFDO0FBQ3hFLGNBQWMsNkNBQTZDLENBQUM7QUFDNUQsY0FBYyw0Q0FBNEMsQ0FBQztBQUMzRCxjQUFjLG9EQUFvRCxDQUFDO0FBQ25FLGNBQWMsNENBQTRDLENBQUM7QUFDM0QsY0FBYyw2Q0FBNkMsQ0FBQztBQUM1RCxjQUFjLG9DQUFvQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLic7XHJcbmV4cG9ydCAqIGZyb20gJy4vYXV0aG9yaXphdGlvbi9hdXRob3JpemF0aW9uLXRva2VuJztcclxuZXhwb3J0ICogZnJvbSAnLi9hdXRob3JpemF0aW9uL2F1dGhvcml6YXRpb24tdG9rZW4tbWFwcGVyJztcclxuZXhwb3J0ICogZnJvbSAnLi9jb21tb24vZW50aXR5LXByb3BlcnRpZXMnO1xyXG5leHBvcnQgKiBmcm9tICcuL2NvbW1vbi9ldmVudC1zY2hlbWEnO1xyXG5leHBvcnQgKiBmcm9tICcuL2NvbW1vbi9rZXktdmFsdWUtcGFpcic7XHJcbmV4cG9ydCAqIGZyb20gJy4vY29tbW9uL2VudGl0eS12YWxpZGF0aW9ucyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vY29tbW9uL2NvbXBvbmVudC1kZXNjcmltaW5hdG9yJztcclxuZXhwb3J0ICogZnJvbSAnLi9maWx0ZXIvZmlsdGVyLWJ5LWV4aXN0aW5nLXZhbHVlcyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vZmlsdGVyL3BhZ2VkLXJlc3VsdC1yZXF1ZXN0LWJhc2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL2ZpbHRlci9zZWFyY2gtZmllbGQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2ltcG9ydC1leHBvcnQvaW1wb3J0LWV4cG9ydCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGF5b3V0L2xheW91dC1jb25maWcnO1xyXG5leHBvcnQgKiBmcm9tICcuL21vZGFsL2JzLW1vZGFsJztcclxuZXhwb3J0ICogZnJvbSAnLi9yZW1vdGUtc2VydmljZXMtdXRpbGl0eS9zdWJzY3JpcHRpb24tcmVzdWx0JztcclxuZXhwb3J0ICogZnJvbSAnLi9yZXBvcnRpbmcvanNvbi1kYXRhLWNvbm5lY3Rpb24nO1xyXG5leHBvcnQgKiBmcm9tICcuL3JlcG9ydGluZy9vcHRpb25hbC1lbmRwb2ludHMnO1xyXG5leHBvcnQgKiBmcm9tICcuL3JlcG9ydGluZy9yZXBvcnQtdGVtcGxhdGUtcmVzcG9uc2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL3JlcG9ydGluZy9yZXBvcnQtdG8tZWRpdC10ZW1wbGF0ZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vcmVwb3J0aW5nL3JlcG9ydC10by1wcmludCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vcmVwb3J0aW5nL3JlcG9ydC10by10ZW1wbGF0ZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vc2V0dGluZ3MvZGV2aXNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9zZXR0aW5ncy9maWNoaWVyJztcclxuZXhwb3J0ICogZnJvbSAnLi9pbXBvcnQtZXhwb3J0L2ltcG9ydC1leHBvcnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL3ByZXNlbnRhdGlvbi1zZXR0aW5ncy9wcmVzZW50YXRpb24tc2V0dGluZ3MnO1xyXG5leHBvcnQgKiBmcm9tICcuL3NldHRpbmdzL3R5cGUtZmljaGllcic7XHJcbmV4cG9ydCAqIGZyb20gJy4vd29ya2Zsb3cvd29ya2Zsb3cnO1xyXG5leHBvcnQgKiBmcm9tICcuL2VudGl0eS1pbmZvL2VudGl0eS1pbmZvJztcclxuZXhwb3J0ICogZnJvbSAnLi91c2VyLWlkZW50aXR5L3VzZXItaWRlbnRpdHknO1xyXG5leHBvcnQgKiBmcm9tICcuL3Byb2dyZXNzLWJhci9wcm9ncmVzcy1iYXItY3JlYXRlLXJlcXVlc3QnO1xyXG5leHBvcnQgKiBmcm9tICcuL3Byb2dyZXNzLWJhci9wcm9ncmVzcy1iYXItcmVzcG9uc2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL3Byb2dyZXNzLWJhci9wcm9ncmVzcy1iYXItdXBkYXRlLXJlcXVlc3QnO1xyXG5leHBvcnQgKiBmcm9tICcuL3RzaS1jYXJkL3RzaS1jYXJkJztcclxuXHJcbmV4cG9ydCAqIGZyb20gJy4vam91cm5hbGlzYXRpb24tYXBwbGljYXRpb24vam91cm5hbGlzYXRpb24tYXBwbGljYXRpb24nO1xyXG5leHBvcnQgKiBmcm9tICcuL2pvdXJuYWxpc2F0aW9uLWFwcGxpY2F0aW9uL3N0YXR1cy1oaXN0b3J5JztcclxuZXhwb3J0ICogZnJvbSAnLi9hcHBsaWNhdGlvbi9jb25maWd1cmF0aW9uL2VuZHBvaW50LWluZm9zJztcclxuZXhwb3J0ICogZnJvbSAnLi9hcHBsaWNhdGlvbi9jb25maWd1cmF0aW9uL2VudGl0eS1kZWxldGUtYmVoYXZpb3InO1xyXG5leHBvcnQgKiBmcm9tICcuL3JlcXVlc3QtbWFuYWdlbWVudC9yZXF1ZXN0LXRyYWNrZXItc3RhdGUnO1xyXG5leHBvcnQgKiBmcm9tICcuL3JlcXVlc3QtbWFuYWdlbWVudC9yZXF1ZXN0LXRyYWNrZXItY29uZmlnJztcclxuZXhwb3J0ICogZnJvbSAnLi9jb2xsZWN0aW9uL29ic2VydmFibGUtY29sbGVjdGlvbic7Il19
@@ -94,7 +94,6 @@ export class TsiListBaseComponent extends AppBaseComponent {
94
94
  this.directiveElements = [...this._presentationDesignerService.getDirectives(),
95
95
  ...this._presentationDesignerBaseService.getDirectives()
96
96
  ];
97
- console.log('List base : this.directiveElements : ', this.directiveElements);
98
97
  if (!this.entityInfo?.discriminatorPropertyName ||
99
98
  !this.entityInfo?.discriminatorClassName) {
100
99
  this.presentationRequest =
@@ -475,4 +474,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
475
474
  type: HostListener,
476
475
  args: ['dblclick', ['$event']]
477
476
  }] } });
478
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHNpLWxpc3QtYmFzZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90c2ktc2hhcmVkLXVpL3NyYy9saWIvdHNpLWJhc2UvY29tcG9uZW50cy90c2ktbGlzdC1iYXNlL3RzaS1saXN0LWJhc2UuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHNpLXNoYXJlZC11aS9zcmMvbGliL3RzaS1iYXNlL2NvbXBvbmVudHMvdHNpLWxpc3QtYmFzZS90c2ktbGlzdC1iYXNlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFHTCxTQUFTLEVBQ1QsWUFBWSxFQUNaLE1BQU0sRUFHTixTQUFTLEVBQ1QsU0FBUyxFQUNULFlBQVksRUFDWixnQkFBZ0IsRUFDakIsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDbEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDcEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRS9DLE9BQU8sRUFBdUMsbUJBQW1CLEVBQTZCLE1BQU0saUJBQWlCLENBQUM7QUFDdEgsT0FBTyxFQUFFLDBCQUEwQixFQUFFLG1CQUFtQixFQUFFLHNCQUFzQixFQUFFLDJCQUEyQixFQUFFLDJCQUEyQixFQUE4QixNQUFNLG1CQUFtQixDQUFDO0FBQ2xNLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDJFQUEyRSxDQUFDO0FBQy9HLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHVGQUF1RixDQUFDO0FBQ2hJLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGlGQUFpRixDQUFDO0FBQ3ZILE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHFFQUFxRSxDQUFDO0FBQzlHLE9BQU8s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dUhBaUVPLFdBQVc7c0JBQTlDLFNBQVM7dUJBQUMsdUJBQXVCO2dCQUVFLFdBQVc7c0JBQTlDLFNBQVM7dUJBQUMsdUJBQXVCO2dCQUVELFFBQVE7c0JBQXhDLFNBQVM7dUJBQUMsb0JBQW9CO2dCQUcvQixZQUFZO3NCQURYLFlBQVk7dUJBQUMsdUJBQXVCO2dCQUlyQyxZQUFZO3NCQURYLFlBQVk7dUJBQUMsdUJBQXVCO2dCQUdELFNBQVM7c0JBQTVDLFlBQVk7dUJBQUMsb0JBQW9CO2dCQWtTbEMsZUFBZTtzQkFEZCxZQUFZO3VCQUFDLFVBQVUsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQWZ0ZXJDb250ZW50Q2hlY2tlZCxcclxuICBBZnRlclZpZXdJbml0LFxyXG4gIENvbXBvbmVudCxcclxuICBIb3N0TGlzdGVuZXIsXHJcbiAgaW5qZWN0LFxyXG4gIE9uRGVzdHJveSxcclxuICBPbkluaXQsXHJcbiAgUmVuZGVyZXIyLFxyXG4gIFZpZXdDaGlsZCxcclxuICBWaWV3Q2hpbGRyZW4sXHJcbiAgVmlld0NvbnRhaW5lclJlZlxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgQXBwQmFzZUNvbXBvbmVudCB9IGZyb20gJy4uL2FwcC1iYXNlL2FwcC1iYXNlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IExvY2FsaXphdGlvbktleXMgfSBmcm9tICcuLi8uLi8uLi9jb25zdHMvbG9jYWxpemF0aW9uLWtleSc7XHJcbmltcG9ydCB7IE1vZGFsU2l6ZUVudW0gfSBmcm9tICcuLi8uLi8uLi9lbnVtcyc7XHJcbmltcG9ydCB7IEdyaWRDb2x1bW4sIElNb2RhbFNpemUgfSBmcm9tICcuLi8uLi8uLi9pbnRlcmZhY2VzJztcclxuaW1wb3J0IHsgQ29tcG9uZW50RGVzY3JpbWluYXRvciwgU2VhcmNoRmllbGQsIFByZXNlbnRhdGlvblNldHRpbmcsIFByZXNlbnRhdGlvblNldHRpbmdEZXRhaWwgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMnO1xyXG5pbXBvcnQgeyBQcmVzZW50YXRpb25TZXR0aW5nU2VydmljZSwgTGF5b3V0SGVscGVyU2VydmljZSwgVHNpTm90aWZpY2F0aW9uU2VydmljZSwgRXJyb3JSZXNwb25zZU1hbmFnZXJTZXJ2aWNlLCBQcmVzZW50YXRpb25EZXNpZ25lclNlcnZpY2UsIEVudGl0eUNvbmZpZ3VyYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMnO1xyXG5pbXBvcnQgeyBUc2lCdXR0b25Db21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi90c2ktY29tcG9uZW50cy9idXR0b24tY29tcG9uZW50cy90c2ktYnV0dG9uL3RzaS1idXR0b24uY29tcG9uZW50JztcclxuaW1wb3J0IHsgVHNpR2VuZXJpY0dyaWRDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi90c2ktY29tcG9uZW50cy9vdXRwdXQtY29tcG9uZW50cy90c2ktZ2VuZXJpYy1ncmlkL3RzaS1nZW5lcmljLWdyaWQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgVHNpVmlld0dyaWRDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi90c2ktY29tcG9uZW50cy9vdXRwdXQtY29tcG9uZW50cy90c2ktdmlldy1ncmlkL3RzaS12aWV3LWdyaWQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgVHNpR2VuZXJpY0NydWRDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi90c2ktY29tcG9uZW50cy90c2ktZ2VuZXJpYy1jcnVkL3RzaS1nZW5lcmljLWNydWQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgUHJlc2VudGF0aW9uRGVzaWduZXJEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi8uLi90c2ktZGlyZWN0aXZlcy9wcmVzZW50YXRpb24tZGVzaWduZXIuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgUHJlc2VudGF0aW9uRGVzaWduZXJEaXJlY3RpdmVCYXNlIH0gZnJvbSAnLi4vLi4vLi4vdHNpLWRpcmVjdGl2ZXMnO1xyXG5pbXBvcnQgeyBQcmVzZW50YXRpb25EZXNpZ25lckJhc2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvcHJlc2VudGF0aW9uLXNldHRpbmcvcHJlc2VudGF0aW9uLWRlc2lnbmVyLWJhc2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IER5bmFtaWNEaWFsb2dDb25maWcsIER5bmFtaWNEaWFsb2dSZWYgfSBmcm9tICdwcmltZW5nL2R5bmFtaWNkaWFsb2cnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtdHNpLWxpc3QtYmFzZScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3RzaS1saXN0LWJhc2UuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3RzaS1saXN0LWJhc2UuY29tcG9uZW50LnNjc3MnXSxcclxufSlcclxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFRzaUxpc3RCYXNlQ29tcG9uZW50XHJcbiAgZXh0ZW5kcyBBcHBCYXNlQ29tcG9uZW50XHJcbiAgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSwgQWZ0ZXJDb250ZW50Q2hlY2tlZCB7XHJcbiAgLy8jcmVnaW9uIHByb3BlcnRpZXNcclxuICBwcml2YXRlIF9yb3dzU2VsZWN0aW9uU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb24gfCB1bmRlZmluZWQ7XHJcblxyXG4gIGNvbmZpZ01vZGVCdXR0b25JZDogc3RyaW5nID0gJ2NvbmZnLW1vZGUtYnV0dG9uLWZyb20tbGlzdCc7XHJcbiAgc2F2ZVByb3BlcnRpZXNCdXR0b25DbGFzc05hbWUgPSAnY29uZmctbW9kZS1idXR0b24tZnJvbS1saXN0LXNhdmUtcHJvcGVydGllcyc7XHJcbiAgc2F2ZVByb3BlcnR5QnRuSWQgPSAnc2F2ZS1wcm9wZXJ0eS1idG4nO1xyXG5cclxuICBwdWJsaWMgb3ZlcnJpZGUgZ2V0IGZvcm1FbmRwb2ludCgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHN1cGVyLmZvcm1FbmRwb2ludDtcclxuICB9XHJcbiAgcHVibGljIG92ZXJyaWRlIHNldCBmb3JtRW5kcG9pbnQoZW5kcG9pbnQ6IHN0cmluZykge1xyXG4gICAgc3VwZXIuZm9ybUVuZHBvaW50ID0gZW5kcG9pbnQ7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb3ZlcnJpZGUgZ2V0IGJ1c2luZXNzQ2xhc3MoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fYnVzaW5lc3NDbGFzcztcclxuICB9XHJcbiAgcHVibGljIG92ZXJyaWRlIHNldCBidXNpbmVzc0NsYXNzKHZhbHVlOiBzdHJpbmcpIHtcclxuICAgIHN1cGVyLmJ1c2luZXNzQ2xhc3MgPSB2YWx1ZVxyXG4gICAgdGhpcy5mb3JtRW5kcG9pbnQgPSB0aGlzLmJ1c2luZXNzQ2xhc3M7XHJcbiAgICAvLyBAVE9ETyBNZWRBbGkgOiDDoCB0ZXN0ZXJcclxuICAgIC8vdGhpcy5nZXRFbnRpdHlJbmZvcm1hdGlvbih0aGlzLl9idXNpbmVzc0NsYXNzKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2NvbXBvbmVudERlc2NyaW1pbmF0b3I/OiBDb21wb25lbnREZXNjcmltaW5hdG9yO1xyXG4gIHNldCBjb21wb25lbnREZXNjcmltaW5hdG9yKHZhbHVlOiBDb21wb25lbnREZXNjcmltaW5hdG9yIHwgdW5kZWZpbmVkKSB7XHJcbiAgICB0aGlzLl9jb21wb25lbnREZXNjcmltaW5hdG9yID0gdmFsdWU7XHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMuX2NvbXBvbmVudERlc2NyaW1pbmF0b3IgJiZcclxuICAgICAgdGhpcy5fY29tcG9uZW50RGVzY3JpbWluYXRvci5wcm9wZXJ0eVZhbHVlICE9IHVuZGVmaW5lZCAmJlxyXG4gICAgICB0aGlzLmJ1c2luZXNzQ2xhc3MgIT0gdW5kZWZpbmVkXHJcbiAgICApIHtcclxuICAgICAgaWYgKHZhbHVlPy5wcm9wZXJ0eVZhbHVlICE9IHRoaXMuZGVzY3JpbWluYXRvclZhbHVlKSB7XHJcbiAgICAgICAgdGhpcy5kZXNjcmltaW5hdG9yVmFsdWUgPSB2YWx1ZT8ucHJvcGVydHlWYWx1ZTtcclxuICAgICAgICB0aGlzLmRlc2NyaW1pbmF0b3JWYWx1ZUNoYW5nZWQoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0IGNvbXBvbmVudERlc2NyaW1pbmF0b3IoKTogQ29tcG9uZW50RGVzY3JpbWluYXRvciB8IHVuZGVmaW5lZCB7XHJcbiAgICByZXR1cm4gdGhpcy5fY29tcG9uZW50RGVzY3JpbWluYXRvcjtcclxuICB9XHJcblxyXG4gIGNvbHVtbnM6IEFycmF5PEdyaWRDb2x1bW4+ID0gW107XHJcbiAgdGl0bGVDb21wb25lbnQ6IHN0cmluZyA9ICcnO1xyXG4gIG1vZGFsU2l6ZTogSU1vZGFsU2l6ZSA9IE1vZGFsU2l6ZUVudW0uTWVkaXVtO1xyXG4gIGNvbXA6IGFueTtcclxuICBzZWFyY2hGaWVsZHM6IEFycmF5PFNlYXJjaEZpZWxkPiA9IFtdO1xyXG4gIHByZXNlbnRhdGlvblJlcXVlc3Q6IFByZXNlbnRhdGlvblNldHRpbmcgPSBuZXcgUHJlc2VudGF0aW9uU2V0dGluZygpO1xyXG5cclxuICBwcml2YXRlIGdldCBpc0FkdmFuY2VkU2VhcmNoTW9kZSgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiAoXHJcbiAgICAgIHRoaXMuY29uZmlnPy5kYXRhICYmXHJcbiAgICAgIHRoaXMuY29uZmlnLmRhdGEuaGFzT3duUHJvcGVydHkoJ2lzQWR2YW5jZWRTZWFyY2gnKSAmJlxyXG4gICAgICB0aGlzLmNvbmZpZy5kYXRhLmlzQWR2YW5jZWRTZWFyY2ggPT09IHRydWVcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBAVmlld0NoaWxkKFRzaUdlbmVyaWNDcnVkQ29tcG9uZW50KSBnZW5lcmljQ3J1ZD86IFRzaUdlbmVyaWNDcnVkQ29tcG9uZW50O1xyXG5cclxuICBAVmlld0NoaWxkKFRzaUdlbmVyaWNHcmlkQ29tcG9uZW50KSBnZW5lcmljR3JpZD86IFRzaUdlbmVyaWNHcmlkQ29tcG9uZW50O1xyXG5cclxuICBAVmlld0NoaWxkKFRzaVZpZXdHcmlkQ29tcG9uZW50KSB2aWV3R3JpZD86IFRzaVZpZXdHcmlkQ29tcG9uZW50O1xyXG5cclxuICBAVmlld0NoaWxkcmVuKFRzaUdlbmVyaWNHcmlkQ29tcG9uZW50KVxyXG4gIGdlbmVyaWNHcmlkczogVHNpR2VuZXJpY0dyaWRDb21wb25lbnRbXSA9IFtdO1xyXG5cclxuICBAVmlld0NoaWxkcmVuKFRzaUdlbmVyaWNDcnVkQ29tcG9uZW50KVxyXG4gIGdlbmVyaWNDcnVkczogVHNpR2VuZXJpY0NydWRDb21wb25lbnRbXSA9IFtdO1xyXG5cclxuICBAVmlld0NoaWxkcmVuKFRzaVZpZXdHcmlkQ29tcG9uZW50KSB2aWV3R3JpZHM6IFRzaVZpZXdHcmlkQ29tcG9uZW50W10gPSBbXTtcclxuXHJcbiAgcHJpdmF0ZSBfcmVuZGVyZXIgPSBpbmplY3QoUmVuZGVyZXIyKTtcclxuICBwcml2YXRlIF92aWV3Q29udGFpbmVyUmVmID0gaW5qZWN0KFZpZXdDb250YWluZXJSZWYpO1xyXG4gIHByaXZhdGUgX3ByZXNlbnRhdGlvblNldHRpbmdTZXJ2aWNlID0gaW5qZWN0KFByZXNlbnRhdGlvblNldHRpbmdTZXJ2aWNlKTtcclxuICBwcml2YXRlIF9sYXlvdXRIZWxwZXJTZXJ2aWNlID0gaW5qZWN0KExheW91dEhlbHBlclNlcnZpY2UpO1xyXG4gIHByaXZhdGUgX21lc3NhZ2VJbmZvU2VydmljZSA9IGluamVjdChUc2lOb3RpZmljYXRpb25TZXJ2aWNlKTtcclxuICBwcml2YXRlIF9lcnJvclJlc3BvbnNlTWFuYWdlciA9IGluamVjdChFcnJvclJlc3BvbnNlTWFuYWdlclNlcnZpY2UpO1xyXG4gIHByaXZhdGUgX3ByZXNlbnRhdGlvbkRlc2lnbmVyU2VydmljZSA9IGluamVjdChQcmVzZW50YXRpb25EZXNpZ25lclNlcnZpY2UpO1xyXG4gIHByaXZhdGUgX3ByZXNlbnRhdGlvbkRlc2lnbmVyQmFzZVNlcnZpY2UgPSBpbmplY3QoUHJlc2VudGF0aW9uRGVzaWduZXJCYXNlU2VydmljZSk7XHJcblxyXG4gIHNob3dIaWRlQ29uZmlnQnRuUmVmOiBOb2RlIHwgdW5kZWZpbmVkO1xyXG4gIHNob3dIaWRlQ29uZmlnQnRuUGFyZW50UmVmOiBOb2RlIHwgdW5kZWZpbmVkIHwgbnVsbDtcclxuICBfZGVzaWduTW9kZUxpc3RTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbiB8IHVuZGVmaW5lZDtcclxuICBfYWRkZWREaXJlY3RpdmVTdWJzY3JpdHBpb246IFN1YnNjcmlwdGlvbiB8IHVuZGVmaW5lZDtcclxuICBfYWRkZWRCYXNlRGlyZWN0aXZlU3Vic2NyaXRwaW9uOiBTdWJzY3JpcHRpb24gfCB1bmRlZmluZWQ7XHJcbiAgY29uZmlnQXBwbGllZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHByaXZhdGUgZGlyZWN0aXZlRWxlbWVudHM6IChQcmVzZW50YXRpb25EZXNpZ25lckRpcmVjdGl2ZSB8IFByZXNlbnRhdGlvbkRlc2lnbmVyRGlyZWN0aXZlQmFzZSlbXSA9IFtdO1xyXG4gIHByaXZhdGUgZGVzY3JpbWluYXRvclZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQ7XHJcblxyXG4gIC8vI2VuZHJlZ2lvblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHVibGljIGNvbmZpZz86IER5bmFtaWNEaWFsb2dDb25maWcsXHJcbiAgICBwdWJsaWMgX2RpYWxvZ1JlZmVyZW5jZT86IER5bmFtaWNEaWFsb2dSZWZcclxuICApIHtcclxuICAgIHN1cGVyKCk7XHJcbiAgfVxyXG5cclxuICAvLyNyZWdpb24gaGFuZGxlIGxpZmVjeWNsZSBob29rc1xyXG4gIG92ZXJyaWRlIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgc3VwZXIubmdPbkRlc3Ryb3koKTtcclxuXHJcbiAgICB0aGlzLl91bnN1YnNjcmliZUFjdGl2ZVN1YnNjcmlwdGlvbnMoKTtcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3Q2hlY2tlZCgpIHtcclxuICAgIC8vIGxldCBuZXdBZGRlZERpcmVjdGl2ZXMgPSB0aGlzLl9wcmVzZW50YXRpb25EZXNpZ25lclNlcnZpY2UuZ2V0RGlyZWN0aXZlcygpLmZpbHRlcih4ID0+IHgudHJlYXRlZCA9PSBmYWxzZSlcclxuICAgIC8vIGNvbnNvbGUubG9nKFwibmV3QWRkZWREaXJlY3RpdmVzIDogXCIsIG5ld0FkZGVkRGlyZWN0aXZlcylcclxuICAgIC8vIGlmIChuZXdBZGRlZERpcmVjdGl2ZXMubGVuZ3RoID4gMCAmJiAoIXRoaXMuZW50aXR5SW5mbz8uZGlzY3JpbWluYXRvclByb3BlcnR5TmFtZSB8fCAhdGhpcy5lbnRpdHlJbmZvPy5kaXNjcmltaW5hdG9yQ2xhc3NOYW1lKSkge1xyXG4gICAgLy8gICB0aGlzLmFwcGx5Q29uZmlndXJhdGlvblRvRWxlbWVudHMobmV3QWRkZWREaXJlY3RpdmVzKTtcclxuICAgIC8vIH1cclxuICAgIC8vIGVsc2UgaWYgKG5ld0FkZGVkRGlyZWN0aXZlcy5sZW5ndGggPiAwICYmIHRoaXMuZGVzY3JpbWluYXRvclZhbHVlKSB7XHJcbiAgICAvLyAgIHRoaXMuYXBwbHlDb25maWd1cmF0aW9uVG9FbGVtZW50cyhuZXdBZGRlZERpcmVjdGl2ZXMpO1xyXG4gICAgLy8gfVxyXG4gICAgLy8gIHRoaXMuYXBwbHlDb25maWd1cmF0aW9uVG9FbGVtZW50cyhuZXdBZGRlZERpcmVjdGl2ZXMpXHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmRpcmVjdGl2ZUVsZW1lbnRzID0gWy4uLnRoaXMuX3ByZXNlbnRhdGlvbkRlc2lnbmVyU2VydmljZS5nZXREaXJlY3RpdmVzKCksXHJcbiAgICAuLi50aGlzLl9wcmVzZW50YXRpb25EZXNpZ25lckJhc2VTZXJ2aWNlLmdldERpcmVjdGl2ZXMoKVxyXG4gICAgXTtcclxuXHJcbiAgICBjb25zb2xlLmxvZyhcclxuICAgICAgJ0xpc3QgYmFzZSA6IHRoaXMuZGlyZWN0aXZlRWxlbWVudHMgOiAnLFxyXG4gICAgICB0aGlzLmRpcmVjdGl2ZUVsZW1lbnRzXHJcbiAgICApO1xyXG5cclxuICAgIGlmIChcclxuICAgICAgIXRoaXMuZW50aXR5SW5mbz8uZGlzY3JpbWluYXRvclByb3BlcnR5TmFtZSB8fFxyXG4gICAgICAhdGhpcy5lbnRpdHlJbmZvPy5kaXNjcmltaW5hdG9yQ2xhc3NOYW1lXHJcbiAgICApIHtcclxuICAgICAgdGhpcy5wcmVzZW50YXRpb25SZXF1ZXN0ID1cclxuICAgICAgICB0aGlzLl9wcmVzZW50YXRpb25TZXR0aW5nU2VydmljZS5nZXRQcmVzZW50YXRpb25TZXR0aW5nQnlDb21wb25lbnRJZGVudGlmaWVyU3luYyhcclxuICAgICAgICAgIHRoaXMuZ2V0Q29tcG9uZW50SWRlbnRpZmllcigpLFxyXG4gICAgICAgICAgdGhpcy5kZXNjcmltaW5hdG9yVmFsdWVcclxuICAgICAgICApID8/IG5ldyBQcmVzZW50YXRpb25TZXR0aW5nKCk7XHJcbiAgICAgIGlmIChcclxuICAgICAgICB0aGlzLnByZXNlbnRhdGlvblJlcXVlc3QgJiZcclxuICAgICAgICB0aGlzLnByZXNlbnRhdGlvblJlcXVlc3QucHJlc2VudGF0aW9uU2V0dGluZ0RldGFpbHMubGVuZ3RoID4gMFxyXG4gICAgICApIHtcclxuICAgICAgICB0aGlzLmFwcGx5Q29uZmlndXJhdGlvblRvRWxlbWVudHMoKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmRpcmVjdGl2ZUVsZW1lbnRzPy5mb3JFYWNoKChpbnB1dCkgPT4ge1xyXG4gICAgICAgICAgaW5wdXQuZXhlY3V0ZSh0cnVlLCB1bmRlZmluZWQpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5faW5pdEdlbmVyaWNDcnVkSWZFeGlzdCgpO1xyXG5cclxuICAgIHRoaXMuX2luaXRHZW5lcmljR3JpZElmRXhpc3QoKTtcclxuXHJcbiAgICB0aGlzLl9pbml0Vmlld0dyaWRJZkV4aXN0KCk7XHJcbiAgfVxyXG5cclxuICBvdmVycmlkZSBuZ0FmdGVyQ29udGVudENoZWNrZWQoKTogdm9pZCB7XHJcbiAgICBzdXBlci5uZ0FmdGVyQ29udGVudENoZWNrZWQoKTtcclxuICAgIHRoaXMuX3JlZnJlc2hWaWV3R3JpZEluZm9ybWF0aW9uSWZFeGlzdCgpO1xyXG4gICAgdGhpcy5fcmVmcmVzaEdlbmVyaWNDcnVkSW5mb3JtYXRpb25JZkV4aXN0KCk7XHJcbiAgICB0aGlzLl9yZWZyZXNoR2VuZXJpY0dyaWRJbmZvcm1hdGlvbklmRXhpc3QoKTtcclxuICB9XHJcblxyXG4gIG92ZXJyaWRlIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgc3VwZXIubmdPbkluaXQoKTtcclxuICAgIHRoaXMuaW5pdERlc2lnbk1vZGVTdWJzY3JpcHRpb24oKTtcclxuICAgIHRoaXMuZGlyZWN0aXZlRWxlbWVudHMgPSBbLi4udGhpcy5fcHJlc2VudGF0aW9uRGVzaWduZXJTZXJ2aWNlLmdldERpcmVjdGl2ZXMoKSxcclxuICAgIC4uLnRoaXMuX3ByZXNlbnRhdGlvbkRlc2lnbmVyQmFzZVNlcnZpY2UuZ2V0RGlyZWN0aXZlcygpXHJcbiAgICBdO1xyXG4gIH1cclxuICAvLyNlbmRyZWdpb25cclxuXHJcbiAgZ2V0Q29tcG9uZW50SWRlbnRpZmllcigpIHtcclxuICAgIC8vIGlmICh0aGlzLmRlc2NyaW1pbmF0b3JWYWx1ZSkge1xyXG4gICAgLy8gICByZXR1cm4gYCR7dGhpcy5fbXlOYW1lKCl9XyR7dGhpcy5kZXNjcmltaW5hdG9yVmFsdWV9YFxyXG4gICAgLy8gfVxyXG4gICAgcmV0dXJuIHRoaXMuX215TmFtZSgpO1xyXG4gIH1cclxuXHJcbiAgc2V0TW9kYWxTaXplKG1vZGFsU2l6ZTogSU1vZGFsU2l6ZSk6IHZvaWQge1xyXG4gICAgdGhpcy5tb2RhbFNpemUgPSBtb2RhbFNpemU7XHJcbiAgfVxyXG5cclxuICBkZXNjcmltaW5hdG9yVmFsdWVDaGFuZ2VkKCkge1xyXG4gICAgdGhpcy5wcmVzZW50YXRpb25SZXF1ZXN0ID1cclxuICAgICAgdGhpcy5fcHJlc2VudGF0aW9uU2V0dGluZ1NlcnZpY2UuZ2V0UHJlc2VudGF0aW9uU2V0dGluZ0J5Q29tcG9uZW50SWRlbnRpZmllclN5bmMoXHJcbiAgICAgICAgdGhpcy5nZXRDb21wb25lbnRJZGVudGlmaWVyKCksXHJcbiAgICAgICAgdGhpcy5kZXNjcmltaW5hdG9yVmFsdWVcclxuICAgICAgKSA/PyBuZXcgUHJlc2VudGF0aW9uU2V0dGluZygpO1xyXG5cclxuICAgIHRoaXMuZGlyZWN0aXZlRWxlbWVudHM/LmZvckVhY2goKGlucHV0KSA9PiB7XHJcbiAgICAgIGNvbnN0IHByZXNlbnRhdGlvblNldHRpbmdEZXRhaWwgPVxyXG4gICAgICAgIHRoaXMucHJlc2VudGF0aW9uUmVxdWVzdD8ucHJlc2VudGF0aW9uU2V0dGluZ0RldGFpbHM/LmZpbmQoXHJcbiAgICAgICAgICAoeCkgPT4geC5ibG9ja05hbWUgPT0gaW5wdXQucHJlc2VudGF0aW9uRGVzaWduZXJcclxuICAgICAgICApO1xyXG4gICAgICBpZiAoXHJcbiAgICAgICAgcHJlc2VudGF0aW9uU2V0dGluZ0RldGFpbCAmJlxyXG4gICAgICAgICFwcmVzZW50YXRpb25TZXR0aW5nRGV0YWlsLmlzQmxvY2tWaXNpYmxlXHJcbiAgICAgICkge1xyXG4gICAgICAgIGlucHV0LnJlbW92ZUVsZW1lbnQoKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBpbnB1dC5leGVjdXRlKHRydWUsIHByZXNlbnRhdGlvblNldHRpbmdEZXRhaWw/LmNvbmZpZ3VyYXRpb24pO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICBpZiAodGhpcy5nZW5lcmljQ3J1ZCkge1xyXG4gICAgICB0aGlzLmdlbmVyaWNDcnVkLmRlc2NyaW1pbmF0b3JWYWx1ZSA9IHRoaXMuZGVzY3JpbWluYXRvclZhbHVlO1xyXG4gICAgICB0aGlzLmdlbmVyaWNDcnVkLnByZXNlbnRhdGlvblNldHRpbmdzID0gdGhpcy5wcmVzZW50YXRpb25SZXF1ZXN0O1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChcclxuICAgICAgdGhpcy5wcmVzZW50YXRpb25SZXF1ZXN0ICYmXHJcbiAgICAgIHRoaXMucHJlc2VudGF0aW9uUmVxdWVzdC5wcmVzZW50YXRpb25TZXR0aW5nRGV0YWlscy5sZW5ndGggPiAwXHJcbiAgICApIHtcclxuICAgICAgdGhpcy5hcHBseUNvbmZpZ3VyYXRpb25Ub0VsZW1lbnRzKCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmRpcmVjdGl2ZUVsZW1lbnRzPy5mb3JFYWNoKChpbnB1dCkgPT4ge1xyXG4gICAgICAgIGlucHV0LmV4ZWN1dGUodHJ1ZSwgdW5kZWZpbmVkKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyNyZWdpb24gcHJpdmF0ZSBtZXRob2RzXHJcblxyXG4gIHByaXZhdGUgX3JlZnJlc2hWaWV3R3JpZEluZm9ybWF0aW9uSWZFeGlzdCgpIHtcclxuICAgIGlmICh0aGlzLnZpZXdHcmlkKSB7XHJcbiAgICAgIGlmICh0aGlzLnZpZXdHcmlkLmZvcm1FbmRwb2ludCAhPSB0aGlzLmZvcm1FbmRwb2ludCkge1xyXG4gICAgICAgIHRoaXMudmlld0dyaWQuZm9ybUVuZHBvaW50ID0gdGhpcy5mb3JtRW5kcG9pbnQ7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmICh0aGlzLnZpZXdHcmlkLmZvcm1OYW1lICE9IHRoaXMuZm9ybU5hbWUpIHtcclxuICAgICAgICB0aGlzLnZpZXdHcmlkLmZvcm1OYW1lID0gdGhpcy5mb3JtTmFtZTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKHRoaXMudmlld0dyaWQuYnVzaW5lc3NDbGFzcyAhPSB0aGlzLmJ1c2luZXNzQ2xhc3MpIHtcclxuICAgICAgICB0aGlzLnZpZXdHcmlkLmJ1c2luZXNzQ2xhc3MgPSB0aGlzLmJ1c2luZXNzQ2xhc3M7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3JlZnJlc2hHZW5lcmljR3JpZEluZm9ybWF0aW9uSWZFeGlzdCgpIHtcclxuICAgIGlmICh0aGlzLmdlbmVyaWNHcmlkKSB7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9yZWZyZXNoR2VuZXJpY0NydWRJbmZvcm1hdGlvbklmRXhpc3QoKSB7XHJcbiAgICBpZiAodGhpcy5nZW5lcmljQ3J1ZCkge1xyXG4gICAgICBpZiAodGhpcy5nZW5lcmljQ3J1ZC5mb3JtRW5kcG9pbnQgIT0gdGhpcy5mb3JtRW5kcG9pbnQpIHtcclxuICAgICAgICB0aGlzLmdlbmVyaWNDcnVkLmZvcm1FbmRwb2ludCA9IHRoaXMuZm9ybUVuZHBvaW50O1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAodGhpcy5nZW5lcmljQ3J1ZC5mb3JtTmFtZSAhPSB0aGlzLmZvcm1OYW1lKSB7XHJcbiAgICAgICAgdGhpcy5nZW5lcmljQ3J1ZC5mb3JtTmFtZSA9IHRoaXMuZm9ybU5hbWU7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmICh0aGlzLmdlbmVyaWNDcnVkLmJ1c2luZXNzQ2xhc3MgIT0gdGhpcy5idXNpbmVzc0NsYXNzKSB7XHJcbiAgICAgICAgdGhpcy5nZW5lcmljQ3J1ZC5idXNpbmVzc0NsYXNzID0gdGhpcy5idXNpbmVzc0NsYXNzO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG4gIHByaXZhdGUgX2luaXRWaWV3R3JpZElmRXhpc3QoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy52aWV3R3JpZCkge1xyXG4gICAgICAvL2luaXQgcmVwb3J0aW5nXHJcbiAgICAgIHRoaXMudmlld0dyaWQuZm9ybUVuZHBvaW50ID0gdGhpcy5mb3JtRW5kcG9pbnQ7XHJcbiAgICAgIHRoaXMudmlld0dyaWQuZm9ybU5hbWUgPSB0aGlzLmZvcm1OYW1lO1xyXG4gICAgICB0aGlzLnZpZXdHcmlkLmJ1c2luZXNzQ2xhc3MgPSB0aGlzLmJ1c2luZXNzQ2xhc3M7XHJcbiAgICAgIGlmICh0aGlzLmlzQWR2YW5jZWRTZWFyY2hNb2RlKSB7XHJcbiAgICAgICAgdGhpcy52aWV3R3JpZC5zaG93RXhwb3J0QnV0dG9uID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy52aWV3R3JpZC5zaG93Q29uc3VsdEJ1dHRvbiA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMudmlld0dyaWQuc2hvd0NhbGVuZGVyVmlldyA9IGZhbHNlO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLl9yb3dzU2VsZWN0aW9uU3Vic2NyaXB0aW9uID1cclxuICAgICAgICB0aGlzLnZpZXdHcmlkLnNlbGVjdGVkSXRlbXNDaGFuZ2Uuc3Vic2NyaWJlKChpdGVtczogYW55W10pID0+XHJcbiAgICAgICAgICB0aGlzLl9oYW5kbGVTZWxlY3RlZEl0ZW1zQ2hhbmdlRXZlbnQoaXRlbXMpXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2luaXRHZW5lcmljR3JpZElmRXhpc3QoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5nZW5lcmljR3JpZCkge1xyXG4gICAgICBpZiAodGhpcy5pc0FkdmFuY2VkU2VhcmNoTW9kZSkge1xyXG4gICAgICAgIHRoaXMuZ2VuZXJpY0dyaWQuc2hvd0FjdGlvbkNvbHVtbiA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuZ2VuZXJpY0dyaWQuc2hvd0NhbGVuZGVyVmlldyA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuZ2VuZXJpY0dyaWQuc2hvd0V4cG9ydEJ1dHRvbiA9IGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuX3Jvd3NTZWxlY3Rpb25TdWJzY3JpcHRpb24gPVxyXG4gICAgICAgIHRoaXMuZ2VuZXJpY0dyaWQuc2VsZWN0ZWRJdGVtc0NoYW5nZS5zdWJzY3JpYmUoKGl0ZW1zOiBhbnlbXSkgPT5cclxuICAgICAgICAgIHRoaXMuX2hhbmRsZVNlbGVjdGVkSXRlbXNDaGFuZ2VFdmVudChpdGVtcylcclxuICAgICAgICApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfaW5pdEdlbmVyaWNDcnVkSWZFeGlzdCgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmdlbmVyaWNDcnVkKSB7XHJcbiAgICAgIC8vaW5pdCByZXBvcnRpbmdcclxuICAgICAgaWYgKHRoaXMuaXNBZHZhbmNlZFNlYXJjaE1vZGUpIHtcclxuICAgICAgICB0aGlzLmdlbmVyaWNDcnVkLnNob3dBZGRCdXR0b24gPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmdlbmVyaWNDcnVkLnNob3dEZWxldGVCdXR0b24gPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmdlbmVyaWNDcnVkLnNob3dDb25zdWx0QnV0dG9uID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5nZW5lcmljQ3J1ZC5zaG93RWRpdEJ1dHRvbiA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuZ2VuZXJpY0NydWQuc2hvd0V4cG9ydEJ1dHRvbiA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuZ2VuZXJpY0NydWQuc2hvd0luZm9CdXR0b24gPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmdlbmVyaWNDcnVkLnNob3dEb3dubG9hZEJ1dHRvbiA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuZ2VuZXJpY0NydWQuc2hvd1JlcG9ydGluZyA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuZ2VuZXJpY0NydWQuc2hvd1VwbG9hZEJ1dHRvbiA9IGZhbHNlO1xyXG5cclxuICAgICAgICB0aGlzLmdlbmVyaWNDcnVkLm5nT25Jbml0KCk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5nZW5lcmljQ3J1ZC5mb3JtRW5kcG9pbnQgPSB0aGlzLmZvcm1FbmRwb2ludDtcclxuICAgICAgdGhpcy5nZW5lcmljQ3J1ZC5mb3JtTmFtZSA9IHRoaXMuZm9ybU5hbWU7XHJcbiAgICAgIHRoaXMuZ2VuZXJpY0NydWQuYnVzaW5lc3NDbGFzcyA9IHRoaXMuYnVzaW5lc3NDbGFzcztcclxuXHJcbiAgICAgIHRoaXMucHJlc2VudGF0aW9uUmVxdWVzdCA9XHJcbiAgICAgICAgdGhpcy5fcHJlc2VudGF0aW9uU2V0dGluZ1NlcnZpY2UuZ2V0UHJlc2VudGF0aW9uU2V0dGluZ0J5Q29tcG9uZW50SWRlbnRpZmllclN5bmMoXHJcbiAgICAgICAgICB0aGlzLmdldENvbXBvbmVudElkZW50aWZpZXIoKSxcclxuICAgICAgICAgIHRoaXMuZGVzY3JpbWluYXRvclZhbHVlXHJcbiAgICAgICAgKSA/PyBuZXcgUHJlc2VudGF0aW9uU2V0dGluZygpO1xyXG4gICAgICB0aGlzLmdlbmVyaWNDcnVkLnByZXNlbnRhdGlvblNldHRpbmdzID0gdGhpcy5wcmVzZW50YXRpb25SZXF1ZXN0O1xyXG5cclxuICAgICAgdGhpcy5fcm93c1NlbGVjdGlvblN1YnNjcmlwdGlvbiA9XHJcbiAgICAgICAgdGhpcy5nZW5lcmljQ3J1ZC5zZWxlY3RlZEl0ZW1zQ2hhbmdlLnN1YnNjcmliZSgoaXRlbXM6IGFueVtdKSA9PlxyXG4gICAgICAgICAgdGhpcy5faGFuZGxlU2VsZWN0ZWRJdGVtc0NoYW5nZUV2ZW50KGl0ZW1zKVxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF91bnN1YnNjcmliZUFjdGl2ZVN1YnNjcmlwdGlvbnMoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5fcm93c1NlbGVjdGlvblN1YnNjcmlwdGlvbikge1xyXG4gICAgICB0aGlzLl9yb3dzU2VsZWN0aW9uU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuX2Rlc2lnbk1vZGVMaXN0U3Vic2NyaXB0aW9uKSB7XHJcbiAgICAgIHRoaXMuX2Rlc2lnbk1vZGVMaXN0U3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuX2FkZGVkRGlyZWN0aXZlU3Vic2NyaXRwaW9uKSB7XHJcbiAgICAgIHRoaXMuX2FkZGVkRGlyZWN0aXZlU3Vic2NyaXRwaW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuX2FkZGVkQmFzZURpcmVjdGl2ZVN1YnNjcml0cGlvbikge1xyXG4gICAgICB0aGlzLl9hZGRlZEJhc2VEaXJlY3RpdmVTdWJzY3JpdHBpb24udW5zdWJzY3JpYmUoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2hhbmRsZVNlbGVjdGVkSXRlbXNDaGFuZ2VFdmVudChpdGVtczogYW55W10pOiB2b2lkIHtcclxuICAgIC8vIHRoaXMuc2VsZWN0ZWRJdGVtcyA9IGl0ZW1zO1xyXG4gICAgLy8gY29uc29sZS5sb2coJ1NlbGVjdGVkIGl0ZW1zIGFyZSA6ICcsIHRoaXMuc2VsZWN0ZWRJdGVtcyk7XHJcbiAgfVxyXG4gIGhhbmRsZVJvd0RibENsaWNrKGV2ZW50OiBhbnkpOiB2b2lkIHtcclxuICAgIGxldCB1aWQgPSB0aGlzLmdlbmVyaWNDcnVkPy5zZWxlY3RlZEl0ZW1zWzBdO1xyXG4gICAgaWYgKHVpZCAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgdGhpcy5jbG9zZU1vZGFsV2l0aElkKHVpZCk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGNsb3NlTW9kYWxXaXRoSWQoaWQ6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuX2RpYWxvZ1JlZmVyZW5jZSkge1xyXG4gICAgICB0aGlzLl9kaWFsb2dSZWZlcmVuY2U/LmNsb3NlKGlkKTtcclxuICAgIH1cclxuICB9XHJcbiAgQEhvc3RMaXN0ZW5lcignZGJsY2xpY2snLCBbJyRldmVudCddKVxyXG4gIG9uRG91YmxlQ2xpY2tlZChldmVudDogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLmhhbmRsZVJvd0RibENsaWNrKGV2ZW50KTtcclxuICB9XHJcbiAgLy8jZW5kcmVnaW9uXHJcblxyXG4gIGluaXREZXNpZ25Nb2RlU3Vic2NyaXB0aW9uKCkge1xyXG4gICAgdGhpcy5fZGVzaWduTW9kZUxpc3RTdWJzY3JpcHRpb24gPVxyXG4gICAgICB0aGlzLl9sYXlvdXRIZWxwZXJTZXJ2aWNlLmRlc2lnbk1vZGVMaXN0T2JzZXJ2YWJsZS5zdWJzY3JpYmUoKGRhdGEpID0+IHtcclxuICAgICAgICBpZiAoZGF0YSAmJiBkYXRhID09IHRydWUpIHtcclxuICAgICAgICAgIHRoaXMudG9nZ2xlRGVzaWduTW9kZSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcblxyXG4gICAgdGhpcy5fYWRkZWREaXJlY3RpdmVTdWJzY3JpdHBpb24gPVxyXG4gICAgICB0aGlzLl9wcmVzZW50YXRpb25EZXNpZ25lclNlcnZpY2UuYWRkZWREaXJlY3RpdmVPYnNlcnZhYmxlLnN1YnNjcmliZShcclxuICAgICAgICAoZGF0YSkgPT4ge1xyXG4gICAgICAgICAgaWYgKCFkYXRhLnRyZWF0ZWQpIHtcclxuICAgICAgICAgICAgdGhpcy5wcm9jZXNzU2luZ2xlRWxlbWVudChkYXRhKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICk7XHJcblxyXG4gICAgICB0aGlzLl9hZGRlZEJhc2VEaXJlY3RpdmVTdWJzY3JpdHBpb24gPVxyXG4gICAgICB0aGlzLl9wcmVzZW50YXRpb25EZXNpZ25lckJhc2VTZXJ2aWNlLmFkZGVkRGlyZWN0aXZlT2JzZXJ2YWJsZS5zdWJzY3JpYmUoXHJcbiAgICAgICAgKGRhdGEpID0+IHtcclxuICAgICAgICAgIGlmICghZGF0YS50cmVhdGVkKSB7XHJcbiAgICAgICAgICAgIHRoaXMucHJvY2Vzc1NpbmdsZUVsZW1lbnQoZGF0YSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICApO1xyXG4gIH1cclxuXHJcbiAgLy8gI3JlZ2lvbiBQcmVzZW50YXRpb24gU2V0dGluZ3NcclxuXHJcbiAgcHJvY2Vzc1NpbmdsZUVsZW1lbnQoZGlyZWN0aXZlOiAoUHJlc2VudGF0aW9uRGVzaWduZXJEaXJlY3RpdmUgfCBQcmVzZW50YXRpb25EZXNpZ25lckRpcmVjdGl2ZUJhc2UpKSB7XHJcbiAgICB0aGlzLnByZXNlbnRhdGlvblJlcXVlc3QgPVxyXG4gICAgICB0aGlzLl9wcmVzZW50YXRpb25TZXR0aW5nU2VydmljZS5nZXRQcmVzZW50YXRpb25TZXR0aW5nQnlDb21wb25lbnRJZGVudGlmaWVyU3luYyhcclxuICAgICAgICB0aGlzLmdldENvbXBvbmVudElkZW50aWZpZXIoKSxcclxuICAgICAgICB0aGlzLmRlc2NyaW1pbmF0b3JWYWx1ZVxyXG4gICAgICApID8/IG5ldyBQcmVzZW50YXRpb25TZXR0aW5nKCk7XHJcbiAgICBsZXQgcHJlc2VudGF0aW9uU2V0dGluZ0RldGFpbCA9XHJcbiAgICAgIHRoaXMucHJlc2VudGF0aW9uUmVxdWVzdD8ucHJlc2VudGF0aW9uU2V0dGluZ0RldGFpbHM/LmZpbmQoXHJcbiAgICAgICAgKHgpID0+IHguYmxvY2tOYW1lID09IGRpcmVjdGl2ZS5wcmVzZW50YXRpb25EZXNpZ25lclxyXG4gICAgICApO1xyXG4gICAgaWYgKFxyXG4gICAgICBwcmVzZW50YXRpb25TZXR0aW5nRGV0YWlsID09IHVuZGVmaW5lZCB8fFxyXG4gICAgICBwcmVzZW50YXRpb25TZXR0aW5nRGV0YWlsLmlzQmxvY2tWaXNpYmxlXHJcbiAgICApIHtcclxuICAgICAgZGlyZWN0aXZlLmV4ZWN1dGUodHJ1ZSwgcHJlc2VudGF0aW9uU2V0dGluZ0RldGFpbD8uY29uZmlndXJhdGlvbik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFwcGx5Q29uZmlndXJhdGlvblRvRWxlbWVudHMoKSB7XHJcbiAgICB0aGlzLmRpcmVjdGl2ZUVsZW1lbnRzPy5mb3JFYWNoKChkaXJlY3RpdmUpID0+IHtcclxuICAgICAgbGV0IHByZXNlbnRhdGlvblNldHRpbmdEZXRhaWwgPVxyXG4gICAgICAgIHRoaXMucHJlc2VudGF0aW9uUmVxdWVzdD8ucHJlc2VudGF0aW9uU2V0dGluZ0RldGFpbHM/LmZpbmQoXHJcbiAgICAgICAgICAoeCkgPT4geC5ibG9ja05hbWUgPT0gZGlyZWN0aXZlLnByZXNlbnRhdGlvbkRlc2lnbmVyXHJcbiAgICAgICAgKTtcclxuICAgICAgaWYgKFxyXG4gICAgICAgIHByZXNlbnRhdGlvblNldHRpbmdEZXRhaWwgPT0gdW5kZWZpbmVkIHx8XHJcbiAgICAgICAgcHJlc2VudGF0aW9uU2V0dGluZ0RldGFpbC5pc0Jsb2NrVmlzaWJsZVxyXG4gICAgICApIHtcclxuICAgICAgICBkaXJlY3RpdmUuZXhlY3V0ZSh0cnVlLCBwcmVzZW50YXRpb25TZXR0aW5nRGV0YWlsPy5jb25maWd1cmF0aW9uKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5jb25maWdBcHBsaWVkID0gdHJ1ZTtcclxuXHJcbiAgICAvLyBsZXQgaW5wdXRzVG9BZGQgPSB0aGlzLmRpcmVjdGl2ZUVsZW1lbnRzXHJcbiAgICAvLyAgIC5maWx0ZXIoeCA9PiB0aGlzLnByZXNlbnRhdGlvblJlcXVlc3Q/LnByZXNlbnRhdGlvblNldHRpbmdEZXRhaWxzPy5zb21lKHkgPT4geS5ibG9ja05hbWUgPT0geC5wcmVzZW50YXRpb25EZXNpZ25lciAmJiB5LmlzQmxvY2tWaXNpYmxlKSlcclxuXHJcbiAgICAvLyBpbnB1dHNUb0FkZC5mb3JFYWNoKGlucHV0ID0+IHtcclxuICAgIC8vICAgbGV0IGNvbmZpZ3VyYXRpb24gPSB0aGlzLnByZXNlbnRhdGlvblJlcXVlc3Q/LnByZXNlbnRhdGlvblNldHRpbmdEZXRhaWxzPy5maW5kKHggPT4geC5ibG9ja05hbWUgPT0gaW5wdXQucHJlc2VudGF0aW9uRGVzaWduZXIpPy5jb25maWd1cmF0aW9uXHJcbiAgICAvLyAgIGlucHV0LmV4ZWN1dGUodHJ1ZSwgY29uZmlndXJhdGlvbilcclxuICAgIC8vIH0pO1xyXG4gIH1cclxuXHJcbiAgdG9nZ2xlRGVzaWduTW9kZSgpIHtcclxuICAgIGxldCBzaG93SGlkZUNvbmZpZ0J0biA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRoaXMuY29uZmlnTW9kZUJ1dHRvbklkKTtcclxuXHJcbiAgICB0aGlzLmRpcmVjdGl2ZUVsZW1lbnRzID0gWy4uLnRoaXMuX3ByZXNlbnRhdGlvbkRlc2lnbmVyU2VydmljZS5nZXREaXJlY3RpdmVzKCksXHJcbiAgICAuLi50aGlzLl9wcmVzZW50YXRpb25EZXNpZ25lckJhc2VTZXJ2aWNlLmdldERpcmVjdGl2ZXMoKVxyXG4gICAgXTtcclxuXHJcbiAgICBpZiAoc2hvd0hpZGVDb25maWdCdG4pIHtcclxuICAgICAgdGhpcy5zaG93SGlkZUNvbmZpZ0J0blJlZiA9IHNob3dIaWRlQ29uZmlnQnRuPy5jbG9uZU5vZGUodHJ1ZSk7XHJcbiAgICAgIHRoaXMuc2hvd0hpZGVDb25maWdCdG5QYXJlbnRSZWYgPSBzaG93SGlkZUNvbmZpZ0J0bj8ucGFyZW50Tm9kZTtcclxuXHJcbiAgICAgIGNvbnN0IG9sZEJ1dHRvbnMgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFxyXG4gICAgICAgIHRoaXMuc2F2ZVByb3BlcnRpZXNCdXR0b25DbGFzc05hbWVcclxuICAgICAgKTtcclxuXHJcbiAgICAgIGlmIChvbGRCdXR0b25zKSB7XHJcbiAgICAgICAgQXJyYXkuZnJvbShvbGRCdXR0b25zKS5mb3JFYWNoKChvbGRCdXR0b246IGFueSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5fcmVuZGVyZXIucmVtb3ZlQ2hpbGQoc2hvd0hpZGVDb25maWdCdG4/LnBhcmVudE5vZGUsIG9sZEJ1dHRvbik7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGNvbnN0IHBhcmVudEVsZW1lbnQgPSBzaG93SGlkZUNvbmZpZ0J0bi5wYXJlbnROb2RlO1xyXG5cclxuICAgICAgdGhpcy5fcmVuZGVyZXI/LnJlbW92ZUNoaWxkKHBhcmVudEVsZW1lbnQsIHNob3dIaWRlQ29uZmlnQnRuKTtcclxuXHJcbiAgICAgIGNvbnN0IHRzaUJ1dHRvblJlZiA9XHJcbiAgICAgICAgdGhpcy5fdmlld0NvbnRhaW5lclJlZj8uY3JlYXRlQ29tcG9uZW50KFRzaUJ1dHRvbkNvbXBvbmVudCk7XHJcblxyXG4gICAgICBpZiAodHNpQnV0dG9uUmVmKSB7XHJcbiAgICAgICAgdHNpQnV0dG9uUmVmLnNldElucHV0KFxyXG4gICAgICAgICAgJ3RleHQnLFxyXG4gICAgICAgICAgJ3NoYXJlZF90c2lfY29tcG9uZW50X3NhdmVfY29uZmlnX3Nob3dfaGlkZSdcclxuICAgICAgICApO1xyXG4gICAgICAgIHRzaUJ1dHRvblJlZi5zZXRJbnB1dCgnaWNvbicsICdzYXZlJyk7XHJcbiAgICAgICAgdHNpQnV0dG9uUmVmLnNldElucHV0KCdpZCcsIHRoaXMuc2F2ZVByb3BlcnR5QnRuSWQpO1xyXG5cclxuICAgICAgICB0c2lCdXR0b25SZWYuaW5zdGFuY2Uub25DbGljay5zdWJzY3JpYmUoKCkgPT4gdGhpcy5zYXZlUHJvcGVydGllcygpKTtcclxuXHJcbiAgICAgICAgdGhpcy5fcmVuZGVyZXIuc2V0QXR0cmlidXRlKFxyXG4gICAgICAgICAgdHNpQnV0dG9uUmVmLmxvY2F0aW9uLm5hdGl2ZUVsZW1lbnQsXHJcbiAgICAgICAgICAnY2xhc3MnLFxyXG4gICAgICAgICAgdGhpcy5zYXZlUHJvcGVydGllc0J1dHRvbkNsYXNzTmFtZVxyXG4gICAgICAgICk7XHJcbiAgICAgICAgdGhpcy5fcmVuZGVyZXI/LmFwcGVuZENoaWxkKFxyXG4gICAgICAgICAgcGFyZW50RWxlbWVudCxcclxuICAgICAgICAgIHRzaUJ1dHRvblJlZi5sb2NhdGlvbi5uYXRpdmVFbGVtZW50XHJcbiAgICAgICAgKTtcclxuXHJcbiAgICAgICAgdGhpcy5wcmVzZW50YXRpb25SZXF1ZXN0ID1cclxuICAgICAgICAgIHRoaXMuX3ByZXNlbnRhdGlvblNldHRpbmdTZXJ2aWNlLmdldFByZXNlbnRhdGlvblNldHRpbmdCeUNvbXBvbmVudElkZW50aWZpZXJTeW5jKFxyXG4gICAgICAgICAgICB0aGlzLmdldENvbXBvbmVudElkZW50aWZpZXIoKSxcclxuICAgICAgICAgICAgdGhpcy5kZXNjcmltaW5hdG9yVmFsdWVcclxuICAgICAgICAgICkgPz8gbmV3IFByZXNlbnRhdGlvblNldHRpbmcoKTtcclxuXHJcbiAgICAgICAgdGhpcy5kaXJlY3RpdmVFbGVtZW50cz8uZm9yRWFjaCgoaW5wdXQpID0+IHtcclxuICAgICAgICAgIGlucHV0Lmluc2VydEVsZW1lbnQoKTtcclxuICAgICAgICAgIGlmIChpbnB1dCBpbnN0YW5jZW9mIFByZXNlbnRhdGlvbkRlc2lnbmVyRGlyZWN0aXZlKSB7XHJcbiAgICAgICAgICAgIGlucHV0LnNlbGVjdEFwcHJvcmlhdGVDb2x1bW5zKHRoaXMucHJlc2VudGF0aW9uUmVxdWVzdCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpbnB1dC5hZGRDaGVja2JveGVzVG9JbnB1dHModGhpcy5wcmVzZW50YXRpb25SZXF1ZXN0KTtcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0UHJlc2VudGF0aW9uU2V0aW5nRGV0YWlsVWlkKGJsb2NrTmFtZTogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gdGhpcy5wcmVzZW50YXRpb25SZXF1ZXN0Py5wcmVzZW50YXRpb25TZXR0aW5nRGV0YWlscz8uZmluZChcclxuICAgICAgKHgpID0+IHguYmxvY2tOYW1lID09IGJsb2NrTmFtZVxyXG4gICAgKT8udWlkO1xyXG4gIH1cclxuXHJcbiAgc2F2ZVByb3BlcnRpZXMoKSB7XHJcbiAgICBpZiAoIXRoaXMucHJlc2VudGF0aW9uUmVxdWVzdCkge1xyXG4gICAgICB0aGlzLnByZXNlbnRhdGlvblJlcXVlc3QgPSBuZXcgUHJlc2VudGF0aW9uU2V0dGluZygpO1xyXG4gICAgfVxyXG5cclxuICAgIGxldCBwcmVzZW50YXRpb25TZXR0aW5nRGV0YWlsczogUHJlc2VudGF0aW9uU2V0dGluZ0RldGFpbFtdID0gW107XHJcblxyXG4gICAgdGhpcy5kaXJlY3RpdmVFbGVtZW50cz8uZm9yRWFjaCgoZGlyZWN0aXZlKSA9PiB7XHJcbiAgICAgIGxldCBjb25maWd1cmF0aW9uOiBzdHJpbmcgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XHJcblxyXG4gICAgICBjb25zdCBzb3VyY2VzID0gW1xyXG4gICAgICAgIC4uLnRoaXMuZ2VuZXJpY0dyaWRzLFxyXG4gICAgICAgIC4uLnRoaXMuZ2VuZXJpY0NydWRzLFxyXG4gICAgICAgIC4uLnRoaXMudmlld0dyaWRzLFxyXG4gICAgICBdO1xyXG5cclxuICAgICAgY29uc3QgbWF0Y2hlZFNvdXJjZSA9IHNvdXJjZXMuZmluZChcclxuICAgICAgICAoeCkgPT5cclxuICAgICAgICAgIHguZm9ybU5hbWUgPT09IGRpcmVjdGl2ZS5wcmVzZW50YXRpb25EZXNpZ25lciB8fFxyXG4gICAgICAgICAgeC5pZCA9PT0gZGlyZWN0aXZlLnByZXNlbnRhdGlvbkRlc2lnbmVyXHJcbiAgICAgICk7XHJcblxyXG4gICAgICBpZiAobWF0Y2hlZFNvdXJjZSkge1xyXG4gICAgICAgIGNvbnN0IGdyaWRTdGF0ZSA9IG1hdGNoZWRTb3VyY2UuZ2V0U3RhdGUoKTtcclxuICAgICAgICBjb25maWd1cmF0aW9uID0gZ3JpZFN0YXRlID8gSlNPTi5zdHJpbmdpZnkoZ3JpZFN0YXRlKSA6IHVuZGVmaW5lZDtcclxuICAgICAgfVxyXG5cclxuICAgICAgbGV0IG9iamVjdDogUHJlc2VudGF0aW9uU2V0dGluZ0RldGFpbCA9IHtcclxuICAgICAgICBibG9ja05hbWU6IGRpcmVjdGl2ZS5wcmVzZW50YXRpb25EZXNpZ25lcixcclxuICAgICAgICBpc0Jsb2NrVmlzaWJsZTpcclxuICAgICAgICAgICFkaXJlY3RpdmUuc2hvd0hpZGVDaGVja2JveENvbXBvbmVudFJlZj8uaW5zdGFuY2U/Ll9jaGVja2VkLFxyXG4gICAgICAgIHVpZDogdGhpcy5nZXRQcmVzZW50YXRpb25TZXRpbmdEZXRhaWxVaWQoXHJcbiAgICAgICAgICBkaXJlY3RpdmUucHJlc2VudGF0aW9uRGVzaWduZXIgPz8gJydcclxuICAgICAgICApLFxyXG4gICAgICAgIGNvbmZpZ3VyYXRpb246IGNvbmZpZ3VyYXRpb24sXHJcbiAgICAgIH07XHJcbiAgICAgIHByZXNlbnRhdGlvblNldHRpbmdEZXRhaWxzLnB1c2gob2JqZWN0KTtcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMucHJlc2VudGF0aW9uUmVxdWVzdC5jb21wb25lbnRJZGVudGlmZXIgPSB0aGlzLmdldENvbXBvbmVudElkZW50aWZpZXIoKTtcclxuICAgIHRoaXMucHJlc2VudGF0aW9uUmVxdWVzdC5wcmVzZW50YXRpb25TZXR0aW5nRGV0YWlscyA9XHJcbiAgICAgIHByZXNlbnRhdGlvblNldHRpbmdEZXRhaWxzO1xyXG5cclxuICAgIC8vdGhpcy5sb2FkaW5nID0gdHJ1ZVxyXG5cclxuICAgIHRoaXMucHJlc2VudGF0aW9uUmVxdWVzdC5kZXNjcmltaW5hdG9yVmFsdWUgPSB0aGlzLmRlc2NyaW1pbmF0b3JWYWx1ZTtcclxuICAgIGlmIChcclxuICAgICAgdGhpcy5wcmVzZW50YXRpb25SZXF1ZXN0LnVpZCAhPSBudWxsICYmXHJcbiAgICAgIHRoaXMucHJlc2VudGF0aW9uUmVxdWVzdC51aWQgIT0gdW5kZWZpbmVkXHJcbiAgICApIHtcclxuICAgICAgdGhpcy5fcHJlc2VudGF0aW9uU2V0dGluZ1NlcnZpY2VcclxuICAgICAgICAudXBkYXRlUHJlc2VudGF0aW9uU2V0dGluZyhcclxuICAgICAgICAgIHRoaXMucHJlc2VudGF0aW9uUmVxdWVzdCxcclxuICAgICAgICAgIHRoaXMucHJlc2VudGF0aW9uUmVxdWVzdC51aWRcclxuICAgICAgICApXHJcbiAgICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAgICAgICBuZXh0OiBhc3luYyAoZGF0YSkgPT4ge1xyXG4gICAgICAgICAgICAvLyB0aGlzLmxvYWRpbmcgPSBmYWxzZVxyXG4gICAgICAgICAgICB0aGlzLl9tZXNzYWdlSW5mb1NlcnZpY2Uuc3VjY2VzcyhcclxuICAgICAgICAgICAgICBMb2NhbGl6YXRpb25LZXlzLnNhdmVkU3VjY2Vzc2Z1bGx5XHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuX3ByZXNlbnRhdGlvblNldHRpbmdTZXJ2aWNlLmxvYWRQcmVzZW50YXRpb25TZXR0aW5ncygpO1xyXG4gICAgICAgICAgICB0aGlzLnByb2Nlc3NTdGF0ZSgpO1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIGVycm9yOiAoZXJyb3IpID0+IHtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coZXJyb3IpO1xyXG4gICAgICAgICAgICB0aGlzLl9lcnJvclJlc3BvbnNlTWFuYWdlci5zaG93RXJyb3JNZXNzYWdlKGVycm9yKTtcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLl9wcmVzZW50YXRpb25TZXR0aW5nU2VydmljZVxyXG4gICAgICAgIC5jcmVhdGVQcmVzZW50YXRpb25TZXR0aW5nKHRoaXMucHJlc2VudGF0aW9uUmVxdWVzdClcclxuICAgICAgICAuc3Vic2NyaWJlKHtcclxuICAgICAgICAgIG5leHQ6IGFzeW5jIChkYXRhKSA9PiB7XHJcbiAgICAgICAgICAgIC8vIHRoaXMubG9hZGluZyA9IGZhbHNlXHJcbiAgICAgICAgICAgIHRoaXMuX21lc3NhZ2VJbmZvU2VydmljZS5zdWNjZXNzKFxyXG4gICAgICAgICAgICAgIExvY2FsaXphdGlvbktleXMuc2F2ZWRTdWNjZXNzZnVsbHlcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgYXdhaXQgdGhpcy5fcHJlc2VudGF0aW9uU2V0dGluZ1NlcnZpY2UubG9hZFByZXNlbnRhdGlvblNldHRpbmdzKCk7XHJcbiAgICAgICAgICAgIHRoaXMucHJvY2Vzc1N0YXRlKCk7XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgZXJyb3I6IChlcnJvcikgPT4ge1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhlcnJvcik7XHJcbiAgICAgICAgICAgIHRoaXMuX2Vycm9yUmVzcG9uc2VNYW5hZ2VyLnNob3dFcnJvck1lc3NhZ2UoZXJyb3IpO1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByb2Nlc3NTdGF0ZSgpIHtcclxuICAgIHRoaXMuX2xheW91dEhlbHBlclNlcnZpY2UuaXNEZXNpZ25Nb2RlID0gZmFsc2U7XHJcbiAgICB0aGlzLl9sYXlvdXRIZWxwZXJTZXJ2aWNlLl9kZXNpZ25Nb2RlTGlzdFN1YmplY3QubmV4dChmYWxzZSk7XHJcblxyXG4gICAgbGV0IHNhdmVQcm9wZXJ0aWVzQnRuID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGhpcy5zYXZlUHJvcGVydHlCdG5JZCk7XHJcblxyXG4gICAgdGhpcy5fcmVuZGVyZXIucmVtb3ZlQ2hpbGQoXHJcbiAgICAgIHNhdmVQcm9wZXJ0aWVzQnRuPy5wYXJlbnROb2RlLFxyXG4gICAgICBzYXZlUHJvcGVydGllc0J0blxyXG4gICAgKTtcclxuXHJcbiAgICBpZiAodGhpcy5zaG93SGlkZUNvbmZpZ0J0blBhcmVudFJlZiAmJiB0aGlzLnNob3dIaWRlQ29uZmlnQnRuUmVmKSB7XHJcbiAgICAgIHRoaXMuX3JlbmRlcmVyLmFwcGVuZENoaWxkKFxyXG4gICAgICAgIHRoaXMuc2hvd0hpZGVDb25maWdCdG5QYXJlbnRSZWYsXHJcbiAgICAgICAgdGhpcy5zaG93SGlkZUNvbmZpZ0J0blJlZlxyXG4gICAgICApO1xyXG4gICAgICB0aGlzLnNob3dIaWRlQ29uZmlnQnRuUmVmID0gdW5kZWZpbmVkO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuZGlyZWN0aXZlRWxlbWVudHM/LmZvckVhY2goKGlucHV0KSA9PiB7XHJcbiAgICAgIGlucHV0LnJlbW92ZVNob3dIaWRlQ2hlY2tib3goKTtcclxuICAgICAgY29uc3QgcHJlc2VudGF0aW9uU2V0dGluZ0RldGFpbCA9XHJcbiAgICAgICAgdGhpcy5wcmVzZW50YXRpb25SZXF1ZXN0Py5wcmVzZW50YXRpb25TZXR0aW5nRGV0YWlscz8uZmluZChcclxuICAgICAgICAgICh4KSA9PiB4LmJsb2NrTmFtZSA9PSBpbnB1dC5wcmVzZW50YXRpb25EZXNpZ25lclxyXG4gICAgICAgICk7XHJcbiAgICAgIGlmIChcclxuICAgICAgICBwcmVzZW50YXRpb25TZXR0aW5nRGV0YWlsICYmXHJcbiAgICAgICAgIXByZXNlbnRhdGlvblNldHRpbmdEZXRhaWwuaXNCbG9ja1Zpc2libGVcclxuICAgICAgKSB7XHJcbiAgICAgICAgaW5wdXQucmVtb3ZlRWxlbWVudCgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmFwcGx5Q29uZmlndXJhdGlvblRvRWxlbWVudHMoKTtcclxuICB9XHJcblxyXG4gIC8vICNlbmQgcmVnaW9uXHJcbn1cclxuIiwiPHA+dHNpLWxpc3QtYmFzZSB3b3JrcyE8L3A+Il19
477
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHNpLWxpc3QtYmFzZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90c2ktc2hhcmVkLXVpL3NyYy9saWIvdHNpLWJhc2UvY29tcG9uZW50cy90c2ktbGlzdC1iYXNlL3RzaS1saXN0LWJhc2UuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHNpLXNoYXJlZC11aS9zcmMvbGliL3RzaS1iYXNlL2NvbXBvbmVudHMvdHNpLWxpc3QtYmFzZS90c2ktbGlzdC1iYXNlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFHTCxTQUFTLEVBQ1QsWUFBWSxFQUNaLE1BQU0sRUFHTixTQUFTLEVBQ1QsU0FBUyxFQUNULFlBQVksRUFDWixnQkFBZ0IsRUFDakIsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDbEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDcEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRS9DLE9BQU8sRUFBdUMsbUJBQW1CLEVBQTZCLE1BQU0saUJBQWlCLENBQUM7QUFDdEgsT0FBTyxFQUFFLDBCQUEwQixFQUFFLG1CQUFtQixFQUFFLHNCQUFzQixFQUFFLDJCQUEyQixFQUFFLDJCQUEyQixFQUE4QixNQUFNLG1CQUFtQixDQUFDO0FBQ2xNLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDJFQUEyRSxDQUFDO0FBQy9HLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHVGQUF1RixDQUFDO0FBQ2hJLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGlGQUFpRixDQUFDO0FBQ3ZILE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHFFQUFxRSxDQUFDO0FBQzlHLE9BQU8s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dUJBQXVCO2dCQUVELFFBQVE7c0JBQXhDLFNBQVM7dUJBQUMsb0JBQW9CO2dCQUcvQixZQUFZO3NCQURYLFlBQVk7dUJBQUMsdUJBQXVCO2dCQUlyQyxZQUFZO3NCQURYLFlBQVk7dUJBQUMsdUJBQXVCO2dCQUdELFNBQVM7c0JBQTVDLFlBQVk7dUJBQUMsb0JBQW9CO2dCQTZSbEMsZUFBZTtzQkFEZCxZQUFZO3VCQUFDLFVBQVUsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQWZ0ZXJDb250ZW50Q2hlY2tlZCxcclxuICBBZnRlclZpZXdJbml0LFxyXG4gIENvbXBvbmVudCxcclxuICBIb3N0TGlzdGVuZXIsXHJcbiAgaW5qZWN0LFxyXG4gIE9uRGVzdHJveSxcclxuICBPbkluaXQsXHJcbiAgUmVuZGVyZXIyLFxyXG4gIFZpZXdDaGlsZCxcclxuICBWaWV3Q2hpbGRyZW4sXHJcbiAgVmlld0NvbnRhaW5lclJlZlxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgQXBwQmFzZUNvbXBvbmVudCB9IGZyb20gJy4uL2FwcC1iYXNlL2FwcC1iYXNlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IExvY2FsaXphdGlvbktleXMgfSBmcm9tICcuLi8uLi8uLi9jb25zdHMvbG9jYWxpemF0aW9uLWtleSc7XHJcbmltcG9ydCB7IE1vZGFsU2l6ZUVudW0gfSBmcm9tICcuLi8uLi8uLi9lbnVtcyc7XHJcbmltcG9ydCB7IEdyaWRDb2x1bW4sIElNb2RhbFNpemUgfSBmcm9tICcuLi8uLi8uLi9pbnRlcmZhY2VzJztcclxuaW1wb3J0IHsgQ29tcG9uZW50RGVzY3JpbWluYXRvciwgU2VhcmNoRmllbGQsIFByZXNlbnRhdGlvblNldHRpbmcsIFByZXNlbnRhdGlvblNldHRpbmdEZXRhaWwgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMnO1xyXG5pbXBvcnQgeyBQcmVzZW50YXRpb25TZXR0aW5nU2VydmljZSwgTGF5b3V0SGVscGVyU2VydmljZSwgVHNpTm90aWZpY2F0aW9uU2VydmljZSwgRXJyb3JSZXNwb25zZU1hbmFnZXJTZXJ2aWNlLCBQcmVzZW50YXRpb25EZXNpZ25lclNlcnZpY2UsIEVudGl0eUNvbmZpZ3VyYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMnO1xyXG5pbXBvcnQgeyBUc2lCdXR0b25Db21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi90c2ktY29tcG9uZW50cy9idXR0b24tY29tcG9uZW50cy90c2ktYnV0dG9uL3RzaS1idXR0b24uY29tcG9uZW50JztcclxuaW1wb3J0IHsgVHNpR2VuZXJpY0dyaWRDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi90c2ktY29tcG9uZW50cy9vdXRwdXQtY29tcG9uZW50cy90c2ktZ2VuZXJpYy1ncmlkL3RzaS1nZW5lcmljLWdyaWQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgVHNpVmlld0dyaWRDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi90c2ktY29tcG9uZW50cy9vdXRwdXQtY29tcG9uZW50cy90c2ktdmlldy1ncmlkL3RzaS12aWV3LWdyaWQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgVHNpR2VuZXJpY0NydWRDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi90c2ktY29tcG9uZW50cy90c2ktZ2VuZXJpYy1jcnVkL3RzaS1nZW5lcmljLWNydWQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgUHJlc2VudGF0aW9uRGVzaWduZXJEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi8uLi90c2ktZGlyZWN0aXZlcy9wcmVzZW50YXRpb24tZGVzaWduZXIuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgUHJlc2VudGF0aW9uRGVzaWduZXJEaXJlY3RpdmVCYXNlIH0gZnJvbSAnLi4vLi4vLi4vdHNpLWRpcmVjdGl2ZXMnO1xyXG5pbXBvcnQgeyBQcmVzZW50YXRpb25EZXNpZ25lckJhc2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvcHJlc2VudGF0aW9uLXNldHRpbmcvcHJlc2VudGF0aW9uLWRlc2lnbmVyLWJhc2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IER5bmFtaWNEaWFsb2dDb25maWcsIER5bmFtaWNEaWFsb2dSZWYgfSBmcm9tICdwcmltZW5nL2R5bmFtaWNkaWFsb2cnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtdHNpLWxpc3QtYmFzZScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3RzaS1saXN0LWJhc2UuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3RzaS1saXN0LWJhc2UuY29tcG9uZW50LnNjc3MnXSxcclxufSlcclxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFRzaUxpc3RCYXNlQ29tcG9uZW50XHJcbiAgZXh0ZW5kcyBBcHBCYXNlQ29tcG9uZW50XHJcbiAgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSwgQWZ0ZXJDb250ZW50Q2hlY2tlZCB7XHJcbiAgLy8jcmVnaW9uIHByb3BlcnRpZXNcclxuICBwcml2YXRlIF9yb3dzU2VsZWN0aW9uU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb24gfCB1bmRlZmluZWQ7XHJcblxyXG4gIGNvbmZpZ01vZGVCdXR0b25JZDogc3RyaW5nID0gJ2NvbmZnLW1vZGUtYnV0dG9uLWZyb20tbGlzdCc7XHJcbiAgc2F2ZVByb3BlcnRpZXNCdXR0b25DbGFzc05hbWUgPSAnY29uZmctbW9kZS1idXR0b24tZnJvbS1saXN0LXNhdmUtcHJvcGVydGllcyc7XHJcbiAgc2F2ZVByb3BlcnR5QnRuSWQgPSAnc2F2ZS1wcm9wZXJ0eS1idG4nO1xyXG5cclxuICBwdWJsaWMgb3ZlcnJpZGUgZ2V0IGZvcm1FbmRwb2ludCgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHN1cGVyLmZvcm1FbmRwb2ludDtcclxuICB9XHJcbiAgcHVibGljIG92ZXJyaWRlIHNldCBmb3JtRW5kcG9pbnQoZW5kcG9pbnQ6IHN0cmluZykge1xyXG4gICAgc3VwZXIuZm9ybUVuZHBvaW50ID0gZW5kcG9pbnQ7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb3ZlcnJpZGUgZ2V0IGJ1c2luZXNzQ2xhc3MoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fYnVzaW5lc3NDbGFzcztcclxuICB9XHJcbiAgcHVibGljIG92ZXJyaWRlIHNldCBidXNpbmVzc0NsYXNzKHZhbHVlOiBzdHJpbmcpIHtcclxuICAgIHN1cGVyLmJ1c2luZXNzQ2xhc3MgPSB2YWx1ZVxyXG4gICAgdGhpcy5mb3JtRW5kcG9pbnQgPSB0aGlzLmJ1c2luZXNzQ2xhc3M7XHJcbiAgICAvLyBAVE9ETyBNZWRBbGkgOiDDoCB0ZXN0ZXJcclxuICAgIC8vdGhpcy5nZXRFbnRpdHlJbmZvcm1hdGlvbih0aGlzLl9idXNpbmVzc0NsYXNzKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2NvbXBvbmVudERlc2NyaW1pbmF0b3I/OiBDb21wb25lbnREZXNjcmltaW5hdG9yO1xyXG4gIHNldCBjb21wb25lbnREZXNjcmltaW5hdG9yKHZhbHVlOiBDb21wb25lbnREZXNjcmltaW5hdG9yIHwgdW5kZWZpbmVkKSB7XHJcbiAgICB0aGlzLl9jb21wb25lbnREZXNjcmltaW5hdG9yID0gdmFsdWU7XHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMuX2NvbXBvbmVudERlc2NyaW1pbmF0b3IgJiZcclxuICAgICAgdGhpcy5fY29tcG9uZW50RGVzY3JpbWluYXRvci5wcm9wZXJ0eVZhbHVlICE9IHVuZGVmaW5lZCAmJlxyXG4gICAgICB0aGlzLmJ1c2luZXNzQ2xhc3MgIT0gdW5kZWZpbmVkXHJcbiAgICApIHtcclxuICAgICAgaWYgKHZhbHVlPy5wcm9wZXJ0eVZhbHVlICE9IHRoaXMuZGVzY3JpbWluYXRvclZhbHVlKSB7XHJcbiAgICAgICAgdGhpcy5kZXNjcmltaW5hdG9yVmFsdWUgPSB2YWx1ZT8ucHJvcGVydHlWYWx1ZTtcclxuICAgICAgICB0aGlzLmRlc2NyaW1pbmF0b3JWYWx1ZUNoYW5nZWQoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0IGNvbXBvbmVudERlc2NyaW1pbmF0b3IoKTogQ29tcG9uZW50RGVzY3JpbWluYXRvciB8IHVuZGVmaW5lZCB7XHJcbiAgICByZXR1cm4gdGhpcy5fY29tcG9uZW50RGVzY3JpbWluYXRvcjtcclxuICB9XHJcblxyXG4gIGNvbHVtbnM6IEFycmF5PEdyaWRDb2x1bW4+ID0gW107XHJcbiAgdGl0bGVDb21wb25lbnQ6IHN0cmluZyA9ICcnO1xyXG4gIG1vZGFsU2l6ZTogSU1vZGFsU2l6ZSA9IE1vZGFsU2l6ZUVudW0uTWVkaXVtO1xyXG4gIGNvbXA6IGFueTtcclxuICBzZWFyY2hGaWVsZHM6IEFycmF5PFNlYXJjaEZpZWxkPiA9IFtdO1xyXG4gIHByZXNlbnRhdGlvblJlcXVlc3Q6IFByZXNlbnRhdGlvblNldHRpbmcgPSBuZXcgUHJlc2VudGF0aW9uU2V0dGluZygpO1xyXG5cclxuICBwcml2YXRlIGdldCBpc0FkdmFuY2VkU2VhcmNoTW9kZSgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiAoXHJcbiAgICAgIHRoaXMuY29uZmlnPy5kYXRhICYmXHJcbiAgICAgIHRoaXMuY29uZmlnLmRhdGEuaGFzT3duUHJvcGVydHkoJ2lzQWR2YW5jZWRTZWFyY2gnKSAmJlxyXG4gICAgICB0aGlzLmNvbmZpZy5kYXRhLmlzQWR2YW5jZWRTZWFyY2ggPT09IHRydWVcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBAVmlld0NoaWxkKFRzaUdlbmVyaWNDcnVkQ29tcG9uZW50KSBnZW5lcmljQ3J1ZD86IFRzaUdlbmVyaWNDcnVkQ29tcG9uZW50O1xyXG5cclxuICBAVmlld0NoaWxkKFRzaUdlbmVyaWNHcmlkQ29tcG9uZW50KSBnZW5lcmljR3JpZD86IFRzaUdlbmVyaWNHcmlkQ29tcG9uZW50O1xyXG5cclxuICBAVmlld0NoaWxkKFRzaVZpZXdHcmlkQ29tcG9uZW50KSB2aWV3R3JpZD86IFRzaVZpZXdHcmlkQ29tcG9uZW50O1xyXG5cclxuICBAVmlld0NoaWxkcmVuKFRzaUdlbmVyaWNHcmlkQ29tcG9uZW50KVxyXG4gIGdlbmVyaWNHcmlkczogVHNpR2VuZXJpY0dyaWRDb21wb25lbnRbXSA9IFtdO1xyXG5cclxuICBAVmlld0NoaWxkcmVuKFRzaUdlbmVyaWNDcnVkQ29tcG9uZW50KVxyXG4gIGdlbmVyaWNDcnVkczogVHNpR2VuZXJpY0NydWRDb21wb25lbnRbXSA9IFtdO1xyXG5cclxuICBAVmlld0NoaWxkcmVuKFRzaVZpZXdHcmlkQ29tcG9uZW50KSB2aWV3R3JpZHM6IFRzaVZpZXdHcmlkQ29tcG9uZW50W10gPSBbXTtcclxuXHJcbiAgcHJpdmF0ZSBfcmVuZGVyZXIgPSBpbmplY3QoUmVuZGVyZXIyKTtcclxuICBwcml2YXRlIF92aWV3Q29udGFpbmVyUmVmID0gaW5qZWN0KFZpZXdDb250YWluZXJSZWYpO1xyXG4gIHByaXZhdGUgX3ByZXNlbnRhdGlvblNldHRpbmdTZXJ2aWNlID0gaW5qZWN0KFByZXNlbnRhdGlvblNldHRpbmdTZXJ2aWNlKTtcclxuICBwcml2YXRlIF9sYXlvdXRIZWxwZXJTZXJ2aWNlID0gaW5qZWN0KExheW91dEhlbHBlclNlcnZpY2UpO1xyXG4gIHByaXZhdGUgX21lc3NhZ2VJbmZvU2VydmljZSA9IGluamVjdChUc2lOb3RpZmljYXRpb25TZXJ2aWNlKTtcclxuICBwcml2YXRlIF9lcnJvclJlc3BvbnNlTWFuYWdlciA9IGluamVjdChFcnJvclJlc3BvbnNlTWFuYWdlclNlcnZpY2UpO1xyXG4gIHByaXZhdGUgX3ByZXNlbnRhdGlvbkRlc2lnbmVyU2VydmljZSA9IGluamVjdChQcmVzZW50YXRpb25EZXNpZ25lclNlcnZpY2UpO1xyXG4gIHByaXZhdGUgX3ByZXNlbnRhdGlvbkRlc2lnbmVyQmFzZVNlcnZpY2UgPSBpbmplY3QoUHJlc2VudGF0aW9uRGVzaWduZXJCYXNlU2VydmljZSk7XHJcblxyXG4gIHNob3dIaWRlQ29uZmlnQnRuUmVmOiBOb2RlIHwgdW5kZWZpbmVkO1xyXG4gIHNob3dIaWRlQ29uZmlnQnRuUGFyZW50UmVmOiBOb2RlIHwgdW5kZWZpbmVkIHwgbnVsbDtcclxuICBfZGVzaWduTW9kZUxpc3RTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbiB8IHVuZGVmaW5lZDtcclxuICBfYWRkZWREaXJlY3RpdmVTdWJzY3JpdHBpb246IFN1YnNjcmlwdGlvbiB8IHVuZGVmaW5lZDtcclxuICBfYWRkZWRCYXNlRGlyZWN0aXZlU3Vic2NyaXRwaW9uOiBTdWJzY3JpcHRpb24gfCB1bmRlZmluZWQ7XHJcbiAgY29uZmlnQXBwbGllZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHByaXZhdGUgZGlyZWN0aXZlRWxlbWVudHM6IChQcmVzZW50YXRpb25EZXNpZ25lckRpcmVjdGl2ZSB8IFByZXNlbnRhdGlvbkRlc2lnbmVyRGlyZWN0aXZlQmFzZSlbXSA9IFtdO1xyXG4gIHByaXZhdGUgZGVzY3JpbWluYXRvclZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQ7XHJcblxyXG4gIC8vI2VuZHJlZ2lvblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHVibGljIGNvbmZpZz86IER5bmFtaWNEaWFsb2dDb25maWcsXHJcbiAgICBwdWJsaWMgX2RpYWxvZ1JlZmVyZW5jZT86IER5bmFtaWNEaWFsb2dSZWZcclxuICApIHtcclxuICAgIHN1cGVyKCk7XHJcbiAgfVxyXG5cclxuICAvLyNyZWdpb24gaGFuZGxlIGxpZmVjeWNsZSBob29rc1xyXG4gIG92ZXJyaWRlIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgc3VwZXIubmdPbkRlc3Ryb3koKTtcclxuXHJcbiAgICB0aGlzLl91bnN1YnNjcmliZUFjdGl2ZVN1YnNjcmlwdGlvbnMoKTtcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3Q2hlY2tlZCgpIHtcclxuICAgIC8vIGxldCBuZXdBZGRlZERpcmVjdGl2ZXMgPSB0aGlzLl9wcmVzZW50YXRpb25EZXNpZ25lclNlcnZpY2UuZ2V0RGlyZWN0aXZlcygpLmZpbHRlcih4ID0+IHgudHJlYXRlZCA9PSBmYWxzZSlcclxuICAgIC8vIGNvbnNvbGUubG9nKFwibmV3QWRkZWREaXJlY3RpdmVzIDogXCIsIG5ld0FkZGVkRGlyZWN0aXZlcylcclxuICAgIC8vIGlmIChuZXdBZGRlZERpcmVjdGl2ZXMubGVuZ3RoID4gMCAmJiAoIXRoaXMuZW50aXR5SW5mbz8uZGlzY3JpbWluYXRvclByb3BlcnR5TmFtZSB8fCAhdGhpcy5lbnRpdHlJbmZvPy5kaXNjcmltaW5hdG9yQ2xhc3NOYW1lKSkge1xyXG4gICAgLy8gICB0aGlzLmFwcGx5Q29uZmlndXJhdGlvblRvRWxlbWVudHMobmV3QWRkZWREaXJlY3RpdmVzKTtcclxuICAgIC8vIH1cclxuICAgIC8vIGVsc2UgaWYgKG5ld0FkZGVkRGlyZWN0aXZlcy5sZW5ndGggPiAwICYmIHRoaXMuZGVzY3JpbWluYXRvclZhbHVlKSB7XHJcbiAgICAvLyAgIHRoaXMuYXBwbHlDb25maWd1cmF0aW9uVG9FbGVtZW50cyhuZXdBZGRlZERpcmVjdGl2ZXMpO1xyXG4gICAgLy8gfVxyXG4gICAgLy8gIHRoaXMuYXBwbHlDb25maWd1cmF0aW9uVG9FbGVtZW50cyhuZXdBZGRlZERpcmVjdGl2ZXMpXHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmRpcmVjdGl2ZUVsZW1lbnRzID0gWy4uLnRoaXMuX3ByZXNlbnRhdGlvbkRlc2lnbmVyU2VydmljZS5nZXREaXJlY3RpdmVzKCksXHJcbiAgICAuLi50aGlzLl9wcmVzZW50YXRpb25EZXNpZ25lckJhc2VTZXJ2aWNlLmdldERpcmVjdGl2ZXMoKVxyXG4gICAgXTtcclxuXHJcbiAgICBpZiAoXHJcbiAgICAgICF0aGlzLmVudGl0eUluZm8/LmRpc2NyaW1pbmF0b3JQcm9wZXJ0eU5hbWUgfHxcclxuICAgICAgIXRoaXMuZW50aXR5SW5mbz8uZGlzY3JpbWluYXRvckNsYXNzTmFtZVxyXG4gICAgKSB7XHJcbiAgICAgIHRoaXMucHJlc2VudGF0aW9uUmVxdWVzdCA9XHJcbiAgICAgICAgdGhpcy5fcHJlc2VudGF0aW9uU2V0dGluZ1NlcnZpY2UuZ2V0UHJlc2VudGF0aW9uU2V0dGluZ0J5Q29tcG9uZW50SWRlbnRpZmllclN5bmMoXHJcbiAgICAgICAgICB0aGlzLmdldENvbXBvbmVudElkZW50aWZpZXIoKSxcclxuICAgICAgICAgIHRoaXMuZGVzY3JpbWluYXRvclZhbHVlXHJcbiAgICAgICAgKSA/PyBuZXcgUHJlc2VudGF0aW9uU2V0dGluZygpO1xyXG4gICAgICBpZiAoXHJcbiAgICAgICAgdGhpcy5wcmVzZW50YXRpb25SZXF1ZXN0ICYmXHJcbiAgICAgICAgdGhpcy5wcmVzZW50YXRpb25SZXF1ZXN0LnByZXNlbnRhdGlvblNldHRpbmdEZXRhaWxzLmxlbmd0aCA+IDBcclxuICAgICAgKSB7XHJcbiAgICAgICAgdGhpcy5hcHBseUNvbmZpZ3VyYXRpb25Ub0VsZW1lbnRzKCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5kaXJlY3RpdmVFbGVtZW50cz8uZm9yRWFjaCgoaW5wdXQpID0+IHtcclxuICAgICAgICAgIGlucHV0LmV4ZWN1dGUodHJ1ZSwgdW5kZWZpbmVkKTtcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuX2luaXRHZW5lcmljQ3J1ZElmRXhpc3QoKTtcclxuXHJcbiAgICB0aGlzLl9pbml0R2VuZXJpY0dyaWRJZkV4aXN0KCk7XHJcblxyXG4gICAgdGhpcy5faW5pdFZpZXdHcmlkSWZFeGlzdCgpO1xyXG4gIH1cclxuXHJcbiAgb3ZlcnJpZGUgbmdBZnRlckNvbnRlbnRDaGVja2VkKCk6IHZvaWQge1xyXG4gICAgc3VwZXIubmdBZnRlckNvbnRlbnRDaGVja2VkKCk7XHJcbiAgICB0aGlzLl9yZWZyZXNoVmlld0dyaWRJbmZvcm1hdGlvbklmRXhpc3QoKTtcclxuICAgIHRoaXMuX3JlZnJlc2hHZW5lcmljQ3J1ZEluZm9ybWF0aW9uSWZFeGlzdCgpO1xyXG4gICAgdGhpcy5fcmVmcmVzaEdlbmVyaWNHcmlkSW5mb3JtYXRpb25JZkV4aXN0KCk7XHJcbiAgfVxyXG5cclxuICBvdmVycmlkZSBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHN1cGVyLm5nT25Jbml0KCk7XHJcbiAgICB0aGlzLmluaXREZXNpZ25Nb2RlU3Vic2NyaXB0aW9uKCk7XHJcbiAgICB0aGlzLmRpcmVjdGl2ZUVsZW1lbnRzID0gWy4uLnRoaXMuX3ByZXNlbnRhdGlvbkRlc2lnbmVyU2VydmljZS5nZXREaXJlY3RpdmVzKCksXHJcbiAgICAuLi50aGlzLl9wcmVzZW50YXRpb25EZXNpZ25lckJhc2VTZXJ2aWNlLmdldERpcmVjdGl2ZXMoKVxyXG4gICAgXTtcclxuICB9XHJcbiAgLy8jZW5kcmVnaW9uXHJcblxyXG4gIGdldENvbXBvbmVudElkZW50aWZpZXIoKSB7XHJcbiAgICAvLyBpZiAodGhpcy5kZXNjcmltaW5hdG9yVmFsdWUpIHtcclxuICAgIC8vICAgcmV0dXJuIGAke3RoaXMuX215TmFtZSgpfV8ke3RoaXMuZGVzY3JpbWluYXRvclZhbHVlfWBcclxuICAgIC8vIH1cclxuICAgIHJldHVybiB0aGlzLl9teU5hbWUoKTtcclxuICB9XHJcblxyXG4gIHNldE1vZGFsU2l6ZShtb2RhbFNpemU6IElNb2RhbFNpemUpOiB2b2lkIHtcclxuICAgIHRoaXMubW9kYWxTaXplID0gbW9kYWxTaXplO1xyXG4gIH1cclxuXHJcbiAgZGVzY3JpbWluYXRvclZhbHVlQ2hhbmdlZCgpIHtcclxuICAgIHRoaXMucHJlc2VudGF0aW9uUmVxdWVzdCA9XHJcbiAgICAgIHRoaXMuX3ByZXNlbnRhdGlvblNldHRpbmdTZXJ2aWNlLmdldFByZXNlbnRhdGlvblNldHRpbmdCeUNvbXBvbmVudElkZW50aWZpZXJTeW5jKFxyXG4gICAgICAgIHRoaXMuZ2V0Q29tcG9uZW50SWRlbnRpZmllcigpLFxyXG4gICAgICAgIHRoaXMuZGVzY3JpbWluYXRvclZhbHVlXHJcbiAgICAgICkgPz8gbmV3IFByZXNlbnRhdGlvblNldHRpbmcoKTtcclxuXHJcbiAgICB0aGlzLmRpcmVjdGl2ZUVsZW1lbnRzPy5mb3JFYWNoKChpbnB1dCkgPT4ge1xyXG4gICAgICBjb25zdCBwcmVzZW50YXRpb25TZXR0aW5nRGV0YWlsID1cclxuICAgICAgICB0aGlzLnByZXNlbnRhdGlvblJlcXVlc3Q/LnByZXNlbnRhdGlvblNldHRpbmdEZXRhaWxzPy5maW5kKFxyXG4gICAgICAgICAgKHgpID0+IHguYmxvY2tOYW1lID09IGlucHV0LnByZXNlbnRhdGlvbkRlc2lnbmVyXHJcbiAgICAgICAgKTtcclxuICAgICAgaWYgKFxyXG4gICAgICAgIHByZXNlbnRhdGlvblNldHRpbmdEZXRhaWwgJiZcclxuICAgICAgICAhcHJlc2VudGF0aW9uU2V0dGluZ0RldGFpbC5pc0Jsb2NrVmlzaWJsZVxyXG4gICAgICApIHtcclxuICAgICAgICBpbnB1dC5yZW1vdmVFbGVtZW50KCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgaW5wdXQuZXhlY3V0ZSh0cnVlLCBwcmVzZW50YXRpb25TZXR0aW5nRGV0YWlsPy5jb25maWd1cmF0aW9uKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgaWYgKHRoaXMuZ2VuZXJpY0NydWQpIHtcclxuICAgICAgdGhpcy5nZW5lcmljQ3J1ZC5kZXNjcmltaW5hdG9yVmFsdWUgPSB0aGlzLmRlc2NyaW1pbmF0b3JWYWx1ZTtcclxuICAgICAgdGhpcy5nZW5lcmljQ3J1ZC5wcmVzZW50YXRpb25TZXR0aW5ncyA9IHRoaXMucHJlc2VudGF0aW9uUmVxdWVzdDtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMucHJlc2VudGF0aW9uUmVxdWVzdCAmJlxyXG4gICAgICB0aGlzLnByZXNlbnRhdGlvblJlcXVlc3QucHJlc2VudGF0aW9uU2V0dGluZ0RldGFpbHMubGVuZ3RoID4gMFxyXG4gICAgKSB7XHJcbiAgICAgIHRoaXMuYXBwbHlDb25maWd1cmF0aW9uVG9FbGVtZW50cygpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5kaXJlY3RpdmVFbGVtZW50cz8uZm9yRWFjaCgoaW5wdXQpID0+IHtcclxuICAgICAgICBpbnB1dC5leGVjdXRlKHRydWUsIHVuZGVmaW5lZCk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8jcmVnaW9uIHByaXZhdGUgbWV0aG9kc1xyXG5cclxuICBwcml2YXRlIF9yZWZyZXNoVmlld0dyaWRJbmZvcm1hdGlvbklmRXhpc3QoKSB7XHJcbiAgICBpZiAodGhpcy52aWV3R3JpZCkge1xyXG4gICAgICBpZiAodGhpcy52aWV3R3JpZC5mb3JtRW5kcG9pbnQgIT0gdGhpcy5mb3JtRW5kcG9pbnQpIHtcclxuICAgICAgICB0aGlzLnZpZXdHcmlkLmZvcm1FbmRwb2ludCA9IHRoaXMuZm9ybUVuZHBvaW50O1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAodGhpcy52aWV3R3JpZC5mb3JtTmFtZSAhPSB0aGlzLmZvcm1OYW1lKSB7XHJcbiAgICAgICAgdGhpcy52aWV3R3JpZC5mb3JtTmFtZSA9IHRoaXMuZm9ybU5hbWU7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmICh0aGlzLnZpZXdHcmlkLmJ1c2luZXNzQ2xhc3MgIT0gdGhpcy5idXNpbmVzc0NsYXNzKSB7XHJcbiAgICAgICAgdGhpcy52aWV3R3JpZC5idXNpbmVzc0NsYXNzID0gdGhpcy5idXNpbmVzc0NsYXNzO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9yZWZyZXNoR2VuZXJpY0dyaWRJbmZvcm1hdGlvbklmRXhpc3QoKSB7XHJcbiAgICBpZiAodGhpcy5nZW5lcmljR3JpZCkge1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfcmVmcmVzaEdlbmVyaWNDcnVkSW5mb3JtYXRpb25JZkV4aXN0KCkge1xyXG4gICAgaWYgKHRoaXMuZ2VuZXJpY0NydWQpIHtcclxuICAgICAgaWYgKHRoaXMuZ2VuZXJpY0NydWQuZm9ybUVuZHBvaW50ICE9IHRoaXMuZm9ybUVuZHBvaW50KSB7XHJcbiAgICAgICAgdGhpcy5nZW5lcmljQ3J1ZC5mb3JtRW5kcG9pbnQgPSB0aGlzLmZvcm1FbmRwb2ludDtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKHRoaXMuZ2VuZXJpY0NydWQuZm9ybU5hbWUgIT0gdGhpcy5mb3JtTmFtZSkge1xyXG4gICAgICAgIHRoaXMuZ2VuZXJpY0NydWQuZm9ybU5hbWUgPSB0aGlzLmZvcm1OYW1lO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAodGhpcy5nZW5lcmljQ3J1ZC5idXNpbmVzc0NsYXNzICE9IHRoaXMuYnVzaW5lc3NDbGFzcykge1xyXG4gICAgICAgIHRoaXMuZ2VuZXJpY0NydWQuYnVzaW5lc3NDbGFzcyA9IHRoaXMuYnVzaW5lc3NDbGFzcztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuICBwcml2YXRlIF9pbml0Vmlld0dyaWRJZkV4aXN0KCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMudmlld0dyaWQpIHtcclxuICAgICAgLy9pbml0IHJlcG9ydGluZ1xyXG4gICAgICB0aGlzLnZpZXdHcmlkLmZvcm1FbmRwb2ludCA9IHRoaXMuZm9ybUVuZHBvaW50O1xyXG4gICAgICB0aGlzLnZpZXdHcmlkLmZvcm1OYW1lID0gdGhpcy5mb3JtTmFtZTtcclxuICAgICAgdGhpcy52aWV3R3JpZC5idXNpbmVzc0NsYXNzID0gdGhpcy5idXNpbmVzc0NsYXNzO1xyXG4gICAgICBpZiAodGhpcy5pc0FkdmFuY2VkU2VhcmNoTW9kZSkge1xyXG4gICAgICAgIHRoaXMudmlld0dyaWQuc2hvd0V4cG9ydEJ1dHRvbiA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMudmlld0dyaWQuc2hvd0NvbnN1bHRCdXR0b24gPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnZpZXdHcmlkLnNob3dDYWxlbmRlclZpZXcgPSBmYWxzZTtcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5fcm93c1NlbGVjdGlvblN1YnNjcmlwdGlvbiA9XHJcbiAgICAgICAgdGhpcy52aWV3R3JpZC5zZWxlY3RlZEl0ZW1zQ2hhbmdlLnN1YnNjcmliZSgoaXRlbXM6IGFueVtdKSA9PlxyXG4gICAgICAgICAgdGhpcy5faGFuZGxlU2VsZWN0ZWRJdGVtc0NoYW5nZUV2ZW50KGl0ZW1zKVxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9pbml0R2VuZXJpY0dyaWRJZkV4aXN0KCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuZ2VuZXJpY0dyaWQpIHtcclxuICAgICAgaWYgKHRoaXMuaXNBZHZhbmNlZFNlYXJjaE1vZGUpIHtcclxuICAgICAgICB0aGlzLmdlbmVyaWNHcmlkLnNob3dBY3Rpb25Db2x1bW4gPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmdlbmVyaWNHcmlkLnNob3dDYWxlbmRlclZpZXcgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmdlbmVyaWNHcmlkLnNob3dFeHBvcnRCdXR0b24gPSBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLl9yb3dzU2VsZWN0aW9uU3Vic2NyaXB0aW9uID1cclxuICAgICAgICB0aGlzLmdlbmVyaWNHcmlkLnNlbGVjdGVkSXRlbXNDaGFuZ2Uuc3Vic2NyaWJlKChpdGVtczogYW55W10pID0+XHJcbiAgICAgICAgICB0aGlzLl9oYW5kbGVTZWxlY3RlZEl0ZW1zQ2hhbmdlRXZlbnQoaXRlbXMpXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2luaXRHZW5lcmljQ3J1ZElmRXhpc3QoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5nZW5lcmljQ3J1ZCkge1xyXG4gICAgICAvL2luaXQgcmVwb3J0aW5nXHJcbiAgICAgIGlmICh0aGlzLmlzQWR2YW5jZWRTZWFyY2hNb2RlKSB7XHJcbiAgICAgICAgdGhpcy5nZW5lcmljQ3J1ZC5zaG93QWRkQnV0dG9uID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5nZW5lcmljQ3J1ZC5zaG93RGVsZXRlQnV0dG9uID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5nZW5lcmljQ3J1ZC5zaG93Q29uc3VsdEJ1dHRvbiA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuZ2VuZXJpY0NydWQuc2hvd0VkaXRCdXR0b24gPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmdlbmVyaWNDcnVkLnNob3dFeHBvcnRCdXR0b24gPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmdlbmVyaWNDcnVkLnNob3dJbmZvQnV0dG9uID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5nZW5lcmljQ3J1ZC5zaG93RG93bmxvYWRCdXR0b24gPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmdlbmVyaWNDcnVkLnNob3dSZXBvcnRpbmcgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmdlbmVyaWNDcnVkLnNob3dVcGxvYWRCdXR0b24gPSBmYWxzZTtcclxuXHJcbiAgICAgICAgdGhpcy5nZW5lcmljQ3J1ZC5uZ09uSW5pdCgpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuZ2VuZXJpY0NydWQuZm9ybUVuZHBvaW50ID0gdGhpcy5mb3JtRW5kcG9pbnQ7XHJcbiAgICAgIHRoaXMuZ2VuZXJpY0NydWQuZm9ybU5hbWUgPSB0aGlzLmZvcm1OYW1lO1xyXG4gICAgICB0aGlzLmdlbmVyaWNDcnVkLmJ1c2luZXNzQ2xhc3MgPSB0aGlzLmJ1c2luZXNzQ2xhc3M7XHJcblxyXG4gICAgICB0aGlzLnByZXNlbnRhdGlvblJlcXVlc3QgPVxyXG4gICAgICAgIHRoaXMuX3ByZXNlbnRhdGlvblNldHRpbmdTZXJ2aWNlLmdldFByZXNlbnRhdGlvblNldHRpbmdCeUNvbXBvbmVudElkZW50aWZpZXJTeW5jKFxyXG4gICAgICAgICAgdGhpcy5nZXRDb21wb25lbnRJZGVudGlmaWVyKCksXHJcbiAgICAgICAgICB0aGlzLmRlc2NyaW1pbmF0b3JWYWx1ZVxyXG4gICAgICAgICkgPz8gbmV3IFByZXNlbnRhdGlvblNldHRpbmcoKTtcclxuICAgICAgdGhpcy5nZW5lcmljQ3J1ZC5wcmVzZW50YXRpb25TZXR0aW5ncyA9IHRoaXMucHJlc2VudGF0aW9uUmVxdWVzdDtcclxuXHJcbiAgICAgIHRoaXMuX3Jvd3NTZWxlY3Rpb25TdWJzY3JpcHRpb24gPVxyXG4gICAgICAgIHRoaXMuZ2VuZXJpY0NydWQuc2VsZWN0ZWRJdGVtc0NoYW5nZS5zdWJzY3JpYmUoKGl0ZW1zOiBhbnlbXSkgPT5cclxuICAgICAgICAgIHRoaXMuX2hhbmRsZVNlbGVjdGVkSXRlbXNDaGFuZ2VFdmVudChpdGVtcylcclxuICAgICAgICApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfdW5zdWJzY3JpYmVBY3RpdmVTdWJzY3JpcHRpb25zKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuX3Jvd3NTZWxlY3Rpb25TdWJzY3JpcHRpb24pIHtcclxuICAgICAgdGhpcy5fcm93c1NlbGVjdGlvblN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLl9kZXNpZ25Nb2RlTGlzdFN1YnNjcmlwdGlvbikge1xyXG4gICAgICB0aGlzLl9kZXNpZ25Nb2RlTGlzdFN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLl9hZGRlZERpcmVjdGl2ZVN1YnNjcml0cGlvbikge1xyXG4gICAgICB0aGlzLl9hZGRlZERpcmVjdGl2ZVN1YnNjcml0cGlvbi51bnN1YnNjcmliZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLl9hZGRlZEJhc2VEaXJlY3RpdmVTdWJzY3JpdHBpb24pIHtcclxuICAgICAgdGhpcy5fYWRkZWRCYXNlRGlyZWN0aXZlU3Vic2NyaXRwaW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9oYW5kbGVTZWxlY3RlZEl0ZW1zQ2hhbmdlRXZlbnQoaXRlbXM6IGFueVtdKTogdm9pZCB7XHJcbiAgICAvLyB0aGlzLnNlbGVjdGVkSXRlbXMgPSBpdGVtcztcclxuICAgIC8vIGNvbnNvbGUubG9nKCdTZWxlY3RlZCBpdGVtcyBhcmUgOiAnLCB0aGlzLnNlbGVjdGVkSXRlbXMpO1xyXG4gIH1cclxuICBoYW5kbGVSb3dEYmxDbGljayhldmVudDogYW55KTogdm9pZCB7XHJcbiAgICBsZXQgdWlkID0gdGhpcy5nZW5lcmljQ3J1ZD8uc2VsZWN0ZWRJdGVtc1swXTtcclxuICAgIGlmICh1aWQgIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIHRoaXMuY2xvc2VNb2RhbFdpdGhJZCh1aWQpO1xyXG4gICAgfVxyXG4gIH1cclxuICBjbG9zZU1vZGFsV2l0aElkKGlkOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLl9kaWFsb2dSZWZlcmVuY2UpIHtcclxuICAgICAgdGhpcy5fZGlhbG9nUmVmZXJlbmNlPy5jbG9zZShpZCk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIEBIb3N0TGlzdGVuZXIoJ2RibGNsaWNrJywgWyckZXZlbnQnXSlcclxuICBvbkRvdWJsZUNsaWNrZWQoZXZlbnQ6IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5oYW5kbGVSb3dEYmxDbGljayhldmVudCk7XHJcbiAgfVxyXG4gIC8vI2VuZHJlZ2lvblxyXG5cclxuICBpbml0RGVzaWduTW9kZVN1YnNjcmlwdGlvbigpIHtcclxuICAgIHRoaXMuX2Rlc2lnbk1vZGVMaXN0U3Vic2NyaXB0aW9uID1cclxuICAgICAgdGhpcy5fbGF5b3V0SGVscGVyU2VydmljZS5kZXNpZ25Nb2RlTGlzdE9ic2VydmFibGUuc3Vic2NyaWJlKChkYXRhKSA9PiB7XHJcbiAgICAgICAgaWYgKGRhdGEgJiYgZGF0YSA9PSB0cnVlKSB7XHJcbiAgICAgICAgICB0aGlzLnRvZ2dsZURlc2lnbk1vZGUoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG5cclxuICAgIHRoaXMuX2FkZGVkRGlyZWN0aXZlU3Vic2NyaXRwaW9uID1cclxuICAgICAgdGhpcy5fcHJlc2VudGF0aW9uRGVzaWduZXJTZXJ2aWNlLmFkZGVkRGlyZWN0aXZlT2JzZXJ2YWJsZS5zdWJzY3JpYmUoXHJcbiAgICAgICAgKGRhdGEpID0+IHtcclxuICAgICAgICAgIGlmICghZGF0YS50cmVhdGVkKSB7XHJcbiAgICAgICAgICAgIHRoaXMucHJvY2Vzc1NpbmdsZUVsZW1lbnQoZGF0YSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICApO1xyXG5cclxuICAgICAgdGhpcy5fYWRkZWRCYXNlRGlyZWN0aXZlU3Vic2NyaXRwaW9uID1cclxuICAgICAgdGhpcy5fcHJlc2VudGF0aW9uRGVzaWduZXJCYXNlU2VydmljZS5hZGRlZERpcmVjdGl2ZU9ic2VydmFibGUuc3Vic2NyaWJlKFxyXG4gICAgICAgIChkYXRhKSA9PiB7XHJcbiAgICAgICAgICBpZiAoIWRhdGEudHJlYXRlZCkge1xyXG4gICAgICAgICAgICB0aGlzLnByb2Nlc3NTaW5nbGVFbGVtZW50KGRhdGEpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgKTtcclxuICB9XHJcblxyXG4gIC8vICNyZWdpb24gUHJlc2VudGF0aW9uIFNldHRpbmdzXHJcblxyXG4gIHByb2Nlc3NTaW5nbGVFbGVtZW50KGRpcmVjdGl2ZTogKFByZXNlbnRhdGlvbkRlc2lnbmVyRGlyZWN0aXZlIHwgUHJlc2VudGF0aW9uRGVzaWduZXJEaXJlY3RpdmVCYXNlKSkge1xyXG4gICAgdGhpcy5wcmVzZW50YXRpb25SZXF1ZXN0ID1cclxuICAgICAgdGhpcy5fcHJlc2VudGF0aW9uU2V0dGluZ1NlcnZpY2UuZ2V0UHJlc2VudGF0aW9uU2V0dGluZ0J5Q29tcG9uZW50SWRlbnRpZmllclN5bmMoXHJcbiAgICAgICAgdGhpcy5nZXRDb21wb25lbnRJZGVudGlmaWVyKCksXHJcbiAgICAgICAgdGhpcy5kZXNjcmltaW5hdG9yVmFsdWVcclxuICAgICAgKSA/PyBuZXcgUHJlc2VudGF0aW9uU2V0dGluZygpO1xyXG4gICAgbGV0IHByZXNlbnRhdGlvblNldHRpbmdEZXRhaWwgPVxyXG4gICAgICB0aGlzLnByZXNlbnRhdGlvblJlcXVlc3Q/LnByZXNlbnRhdGlvblNldHRpbmdEZXRhaWxzPy5maW5kKFxyXG4gICAgICAgICh4KSA9PiB4LmJsb2NrTmFtZSA9PSBkaXJlY3RpdmUucHJlc2VudGF0aW9uRGVzaWduZXJcclxuICAgICAgKTtcclxuICAgIGlmIChcclxuICAgICAgcHJlc2VudGF0aW9uU2V0dGluZ0RldGFpbCA9PSB1bmRlZmluZWQgfHxcclxuICAgICAgcHJlc2VudGF0aW9uU2V0dGluZ0RldGFpbC5pc0Jsb2NrVmlzaWJsZVxyXG4gICAgKSB7XHJcbiAgICAgIGRpcmVjdGl2ZS5leGVjdXRlKHRydWUsIHByZXNlbnRhdGlvblNldHRpbmdEZXRhaWw/LmNvbmZpZ3VyYXRpb24pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhcHBseUNvbmZpZ3VyYXRpb25Ub0VsZW1lbnRzKCkge1xyXG4gICAgdGhpcy5kaXJlY3RpdmVFbGVtZW50cz8uZm9yRWFjaCgoZGlyZWN0aXZlKSA9PiB7XHJcbiAgICAgIGxldCBwcmVzZW50YXRpb25TZXR0aW5nRGV0YWlsID1cclxuICAgICAgICB0aGlzLnByZXNlbnRhdGlvblJlcXVlc3Q/LnByZXNlbnRhdGlvblNldHRpbmdEZXRhaWxzPy5maW5kKFxyXG4gICAgICAgICAgKHgpID0+IHguYmxvY2tOYW1lID09IGRpcmVjdGl2ZS5wcmVzZW50YXRpb25EZXNpZ25lclxyXG4gICAgICAgICk7XHJcbiAgICAgIGlmIChcclxuICAgICAgICBwcmVzZW50YXRpb25TZXR0aW5nRGV0YWlsID09IHVuZGVmaW5lZCB8fFxyXG4gICAgICAgIHByZXNlbnRhdGlvblNldHRpbmdEZXRhaWwuaXNCbG9ja1Zpc2libGVcclxuICAgICAgKSB7XHJcbiAgICAgICAgZGlyZWN0aXZlLmV4ZWN1dGUodHJ1ZSwgcHJlc2VudGF0aW9uU2V0dGluZ0RldGFpbD8uY29uZmlndXJhdGlvbik7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuY29uZmlnQXBwbGllZCA9IHRydWU7XHJcblxyXG4gICAgLy8gbGV0IGlucHV0c1RvQWRkID0gdGhpcy5kaXJlY3RpdmVFbGVtZW50c1xyXG4gICAgLy8gICAuZmlsdGVyKHggPT4gdGhpcy5wcmVzZW50YXRpb25SZXF1ZXN0Py5wcmVzZW50YXRpb25TZXR0aW5nRGV0YWlscz8uc29tZSh5ID0+IHkuYmxvY2tOYW1lID09IHgucHJlc2VudGF0aW9uRGVzaWduZXIgJiYgeS5pc0Jsb2NrVmlzaWJsZSkpXHJcblxyXG4gICAgLy8gaW5wdXRzVG9BZGQuZm9yRWFjaChpbnB1dCA9PiB7XHJcbiAgICAvLyAgIGxldCBjb25maWd1cmF0aW9uID0gdGhpcy5wcmVzZW50YXRpb25SZXF1ZXN0Py5wcmVzZW50YXRpb25TZXR0aW5nRGV0YWlscz8uZmluZCh4ID0+IHguYmxvY2tOYW1lID09IGlucHV0LnByZXNlbnRhdGlvbkRlc2lnbmVyKT8uY29uZmlndXJhdGlvblxyXG4gICAgLy8gICBpbnB1dC5leGVjdXRlKHRydWUsIGNvbmZpZ3VyYXRpb24pXHJcbiAgICAvLyB9KTtcclxuICB9XHJcblxyXG4gIHRvZ2dsZURlc2lnbk1vZGUoKSB7XHJcbiAgICBsZXQgc2hvd0hpZGVDb25maWdCdG4gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0aGlzLmNvbmZpZ01vZGVCdXR0b25JZCk7XHJcblxyXG4gICAgdGhpcy5kaXJlY3RpdmVFbGVtZW50cyA9IFsuLi50aGlzLl9wcmVzZW50YXRpb25EZXNpZ25lclNlcnZpY2UuZ2V0RGlyZWN0aXZlcygpLFxyXG4gICAgLi4udGhpcy5fcHJlc2VudGF0aW9uRGVzaWduZXJCYXNlU2VydmljZS5nZXREaXJlY3RpdmVzKClcclxuICAgIF07XHJcblxyXG4gICAgaWYgKHNob3dIaWRlQ29uZmlnQnRuKSB7XHJcbiAgICAgIHRoaXMuc2hvd0hpZGVDb25maWdCdG5SZWYgPSBzaG93SGlkZUNvbmZpZ0J0bj8uY2xvbmVOb2RlKHRydWUpO1xyXG4gICAgICB0aGlzLnNob3dIaWRlQ29uZmlnQnRuUGFyZW50UmVmID0gc2hvd0hpZGVDb25maWdCdG4/LnBhcmVudE5vZGU7XHJcblxyXG4gICAgICBjb25zdCBvbGRCdXR0b25zID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcclxuICAgICAgICB0aGlzLnNhdmVQcm9wZXJ0aWVzQnV0dG9uQ2xhc3NOYW1lXHJcbiAgICAgICk7XHJcblxyXG4gICAgICBpZiAob2xkQnV0dG9ucykge1xyXG4gICAgICAgIEFycmF5LmZyb20ob2xkQnV0dG9ucykuZm9yRWFjaCgob2xkQnV0dG9uOiBhbnkpID0+IHtcclxuICAgICAgICAgIHRoaXMuX3JlbmRlcmVyLnJlbW92ZUNoaWxkKHNob3dIaWRlQ29uZmlnQnRuPy5wYXJlbnROb2RlLCBvbGRCdXR0b24pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBjb25zdCBwYXJlbnRFbGVtZW50ID0gc2hvd0hpZGVDb25maWdCdG4ucGFyZW50Tm9kZTtcclxuXHJcbiAgICAgIHRoaXMuX3JlbmRlcmVyPy5yZW1vdmVDaGlsZChwYXJlbnRFbGVtZW50LCBzaG93SGlkZUNvbmZpZ0J0bik7XHJcblxyXG4gICAgICBjb25zdCB0c2lCdXR0b25SZWYgPVxyXG4gICAgICAgIHRoaXMuX3ZpZXdDb250YWluZXJSZWY/LmNyZWF0ZUNvbXBvbmVudChUc2lCdXR0b25Db21wb25lbnQpO1xyXG5cclxuICAgICAgaWYgKHRzaUJ1dHRvblJlZikge1xyXG4gICAgICAgIHRzaUJ1dHRvblJlZi5zZXRJbnB1dChcclxuICAgICAgICAgICd0ZXh0JyxcclxuICAgICAgICAgICdzaGFyZWRfdHNpX2NvbXBvbmVudF9zYXZlX2NvbmZpZ19zaG93X2hpZGUnXHJcbiAgICAgICAgKTtcclxuICAgICAgICB0c2lCdXR0b25SZWYuc2V0SW5wdXQoJ2ljb24nLCAnc2F2ZScpO1xyXG4gICAgICAgIHRzaUJ1dHRvblJlZi5zZXRJbnB1dCgnaWQnLCB0aGlzLnNhdmVQcm9wZXJ0eUJ0bklkKTtcclxuXHJcbiAgICAgICAgdHNpQnV0dG9uUmVmLmluc3RhbmNlLm9uQ2xpY2suc3Vic2NyaWJlKCgpID0+IHRoaXMuc2F2ZVByb3BlcnRpZXMoKSk7XHJcblxyXG4gICAgICAgIHRoaXMuX3JlbmRlcmVyLnNldEF0dHJpYnV0ZShcclxuICAgICAgICAgIHRzaUJ1dHRvblJlZi5sb2NhdGlvbi5uYXRpdmVFbGVtZW50LFxyXG4gICAgICAgICAgJ2NsYXNzJyxcclxuICAgICAgICAgIHRoaXMuc2F2ZVByb3BlcnRpZXNCdXR0b25DbGFzc05hbWVcclxuICAgICAgICApO1xyXG4gICAgICAgIHRoaXMuX3JlbmRlcmVyPy5hcHBlbmRDaGlsZChcclxuICAgICAgICAgIHBhcmVudEVsZW1lbnQsXHJcbiAgICAgICAgICB0c2lCdXR0b25SZWYubG9jYXRpb24ubmF0aXZlRWxlbWVudFxyXG4gICAgICAgICk7XHJcblxyXG4gICAgICAgIHRoaXMucHJlc2VudGF0aW9uUmVxdWVzdCA9XHJcbiAgICAgICAgICB0aGlzLl9wcmVzZW50YXRpb25TZXR0aW5nU2VydmljZS5nZXRQcmVzZW50YXRpb25TZXR0aW5nQnlDb21wb25lbnRJZGVudGlmaWVyU3luYyhcclxuICAgICAgICAgICAgdGhpcy5nZXRDb21wb25lbnRJZGVudGlmaWVyKCksXHJcbiAgICAgICAgICAgIHRoaXMuZGVzY3JpbWluYXRvclZhbHVlXHJcbiAgICAgICAgICApID8/IG5ldyBQcmVzZW50YXRpb25TZXR0aW5nKCk7XHJcblxyXG4gICAgICAgIHRoaXMuZGlyZWN0aXZlRWxlbWVudHM/LmZvckVhY2goKGlucHV0KSA9PiB7XHJcbiAgICAgICAgICBpbnB1dC5pbnNlcnRFbGVtZW50KCk7XHJcbiAgICAgICAgICBpZiAoaW5wdXQgaW5zdGFuY2VvZiBQcmVzZW50YXRpb25EZXNpZ25lckRpcmVjdGl2ZSkge1xyXG4gICAgICAgICAgICBpbnB1dC5zZWxlY3RBcHByb3JpYXRlQ29sdW1ucyh0aGlzLnByZXNlbnRhdGlvblJlcXVlc3QpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaW5wdXQuYWRkQ2hlY2tib3hlc1RvSW5wdXRzKHRoaXMucHJlc2VudGF0aW9uUmVxdWVzdCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldFByZXNlbnRhdGlvblNldGluZ0RldGFpbFVpZChibG9ja05hbWU6IHN0cmluZykge1xyXG4gICAgcmV0dXJuIHRoaXMucHJlc2VudGF0aW9uUmVxdWVzdD8ucHJlc2VudGF0aW9uU2V0dGluZ0RldGFpbHM/LmZpbmQoXHJcbiAgICAgICh4KSA9PiB4LmJsb2NrTmFtZSA9PSBibG9ja05hbWVcclxuICAgICk/LnVpZDtcclxuICB9XHJcblxyXG4gIHNhdmVQcm9wZXJ0aWVzKCkge1xyXG4gICAgaWYgKCF0aGlzLnByZXNlbnRhdGlvblJlcXVlc3QpIHtcclxuICAgICAgdGhpcy5wcmVzZW50YXRpb25SZXF1ZXN0ID0gbmV3IFByZXNlbnRhdGlvblNldHRpbmcoKTtcclxuICAgIH1cclxuXHJcbiAgICBsZXQgcHJlc2VudGF0aW9uU2V0dGluZ0RldGFpbHM6IFByZXNlbnRhdGlvblNldHRpbmdEZXRhaWxbXSA9IFtdO1xyXG5cclxuICAgIHRoaXMuZGlyZWN0aXZlRWxlbWVudHM/LmZvckVhY2goKGRpcmVjdGl2ZSkgPT4ge1xyXG4gICAgICBsZXQgY29uZmlndXJhdGlvbjogc3RyaW5nIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xyXG5cclxuICAgICAgY29uc3Qgc291cmNlcyA9IFtcclxuICAgICAgICAuLi50aGlzLmdlbmVyaWNHcmlkcyxcclxuICAgICAgICAuLi50aGlzLmdlbmVyaWNDcnVkcyxcclxuICAgICAgICAuLi50aGlzLnZpZXdHcmlkcyxcclxuICAgICAgXTtcclxuXHJcbiAgICAgIGNvbnN0IG1hdGNoZWRTb3VyY2UgPSBzb3VyY2VzLmZpbmQoXHJcbiAgICAgICAgKHgpID0+XHJcbiAgICAgICAgICB4LmZvcm1OYW1lID09PSBkaXJlY3RpdmUucHJlc2VudGF0aW9uRGVzaWduZXIgfHxcclxuICAgICAgICAgIHguaWQgPT09IGRpcmVjdGl2ZS5wcmVzZW50YXRpb25EZXNpZ25lclxyXG4gICAgICApO1xyXG5cclxuICAgICAgaWYgKG1hdGNoZWRTb3VyY2UpIHtcclxuICAgICAgICBjb25zdCBncmlkU3RhdGUgPSBtYXRjaGVkU291cmNlLmdldFN0YXRlKCk7XHJcbiAgICAgICAgY29uZmlndXJhdGlvbiA9IGdyaWRTdGF0ZSA/IEpTT04uc3RyaW5naWZ5KGdyaWRTdGF0ZSkgOiB1bmRlZmluZWQ7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGxldCBvYmplY3Q6IFByZXNlbnRhdGlvblNldHRpbmdEZXRhaWwgPSB7XHJcbiAgICAgICAgYmxvY2tOYW1lOiBkaXJlY3RpdmUucHJlc2VudGF0aW9uRGVzaWduZXIsXHJcbiAgICAgICAgaXNCbG9ja1Zpc2libGU6XHJcbiAgICAgICAgICAhZGlyZWN0aXZlLnNob3dIaWRlQ2hlY2tib3hDb21wb25lbnRSZWY/Lmluc3RhbmNlPy5fY2hlY2tlZCxcclxuICAgICAgICB1aWQ6IHRoaXMuZ2V0UHJlc2VudGF0aW9uU2V0aW5nRGV0YWlsVWlkKFxyXG4gICAgICAgICAgZGlyZWN0aXZlLnByZXNlbnRhdGlvbkRlc2lnbmVyID8/ICcnXHJcbiAgICAgICAgKSxcclxuICAgICAgICBjb25maWd1cmF0aW9uOiBjb25maWd1cmF0aW9uLFxyXG4gICAgICB9O1xyXG4gICAgICBwcmVzZW50YXRpb25TZXR0aW5nRGV0YWlscy5wdXNoKG9iamVjdCk7XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLnByZXNlbnRhdGlvblJlcXVlc3QuY29tcG9uZW50SWRlbnRpZmVyID0gdGhpcy5nZXRDb21wb25lbnRJZGVudGlmaWVyKCk7XHJcbiAgICB0aGlzLnByZXNlbnRhdGlvblJlcXVlc3QucHJlc2VudGF0aW9uU2V0dGluZ0RldGFpbHMgPVxyXG4gICAgICBwcmVzZW50YXRpb25TZXR0aW5nRGV0YWlscztcclxuXHJcbiAgICAvL3RoaXMubG9hZGluZyA9IHRydWVcclxuXHJcbiAgICB0aGlzLnByZXNlbnRhdGlvblJlcXVlc3QuZGVzY3JpbWluYXRvclZhbHVlID0gdGhpcy5kZXNjcmltaW5hdG9yVmFsdWU7XHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMucHJlc2VudGF0aW9uUmVxdWVzdC51aWQgIT0gbnVsbCAmJlxyXG4gICAgICB0aGlzLnByZXNlbnRhdGlvblJlcXVlc3QudWlkICE9IHVuZGVmaW5lZFxyXG4gICAgKSB7XHJcbiAgICAgIHRoaXMuX3ByZXNlbnRhdGlvblNldHRpbmdTZXJ2aWNlXHJcbiAgICAgICAgLnVwZGF0ZVByZXNlbnRhdGlvblNldHRpbmcoXHJcbiAgICAgICAgICB0aGlzLnByZXNlbnRhdGlvblJlcXVlc3QsXHJcbiAgICAgICAgICB0aGlzLnByZXNlbnRhdGlvblJlcXVlc3QudWlkXHJcbiAgICAgICAgKVxyXG4gICAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgICAgbmV4dDogYXN5bmMgKGRhdGEpID0+IHtcclxuICAgICAgICAgICAgLy8gdGhpcy5sb2FkaW5nID0gZmFsc2VcclxuICAgICAgICAgICAgdGhpcy5fbWVzc2FnZUluZm9TZXJ2aWNlLnN1Y2Nlc3MoXHJcbiAgICAgICAgICAgICAgTG9jYWxpemF0aW9uS2V5cy5zYXZlZFN1Y2Nlc3NmdWxseVxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgICBhd2FpdCB0aGlzLl9wcmVzZW50YXRpb25TZXR0aW5nU2VydmljZS5sb2FkUHJlc2VudGF0aW9uU2V0dGluZ3MoKTtcclxuICAgICAgICAgICAgdGhpcy5wcm9jZXNzU3RhdGUoKTtcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBlcnJvcjogKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGVycm9yKTtcclxuICAgICAgICAgICAgdGhpcy5fZXJyb3JSZXNwb25zZU1hbmFnZXIuc2hvd0Vycm9yTWVzc2FnZShlcnJvcik7XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5fcHJlc2VudGF0aW9uU2V0dGluZ1NlcnZpY2VcclxuICAgICAgICAuY3JlYXRlUHJlc2VudGF0aW9uU2V0dGluZyh0aGlzLnByZXNlbnRhdGlvblJlcXVlc3QpXHJcbiAgICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAgICAgICBuZXh0OiBhc3luYyAoZGF0YSkgPT4ge1xyXG4gICAgICAgICAgICAvLyB0aGlzLmxvYWRpbmcgPSBmYWxzZVxyXG4gICAgICAgICAgICB0aGlzLl9tZXNzYWdlSW5mb1NlcnZpY2Uuc3VjY2VzcyhcclxuICAgICAgICAgICAgICBMb2NhbGl6YXRpb25LZXlzLnNhdmVkU3VjY2Vzc2Z1bGx5XHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuX3ByZXNlbnRhdGlvblNldHRpbmdTZXJ2aWNlLmxvYWRQcmVzZW50YXRpb25TZXR0aW5ncygpO1xyXG4gICAgICAgICAgICB0aGlzLnByb2Nlc3NTdGF0ZSgpO1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIGVycm9yOiAoZXJyb3IpID0+IHtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coZXJyb3IpO1xyXG4gICAgICAgICAgICB0aGlzLl9lcnJvclJlc3BvbnNlTWFuYWdlci5zaG93RXJyb3JNZXNzYWdlKGVycm9yKTtcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcm9jZXNzU3RhdGUoKSB7XHJcbiAgICB0aGlzLl9sYXlvdXRIZWxwZXJTZXJ2aWNlLmlzRGVzaWduTW9kZSA9IGZhbHNlO1xyXG4gICAgdGhpcy5fbGF5b3V0SGVscGVyU2VydmljZS5fZGVzaWduTW9kZUxpc3RTdWJqZWN0Lm5leHQoZmFsc2UpO1xyXG5cclxuICAgIGxldCBzYXZlUHJvcGVydGllc0J0biA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRoaXMuc2F2ZVByb3BlcnR5QnRuSWQpO1xyXG5cclxuICAgIHRoaXMuX3JlbmRlcmVyLnJlbW92ZUNoaWxkKFxyXG4gICAgICBzYXZlUHJvcGVydGllc0J0bj8ucGFyZW50Tm9kZSxcclxuICAgICAgc2F2ZVByb3BlcnRpZXNCdG5cclxuICAgICk7XHJcblxyXG4gICAgaWYgKHRoaXMuc2hvd0hpZGVDb25maWdCdG5QYXJlbnRSZWYgJiYgdGhpcy5zaG93SGlkZUNvbmZpZ0J0blJlZikge1xyXG4gICAgICB0aGlzLl9yZW5kZXJlci5hcHBlbmRDaGlsZChcclxuICAgICAgICB0aGlzLnNob3dIaWRlQ29uZmlnQnRuUGFyZW50UmVmLFxyXG4gICAgICAgIHRoaXMuc2hvd0hpZGVDb25maWdCdG5SZWZcclxuICAgICAgKTtcclxuICAgICAgdGhpcy5zaG93SGlkZUNvbmZpZ0J0blJlZiA9IHVuZGVmaW5lZDtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmRpcmVjdGl2ZUVsZW1lbnRzPy5mb3JFYWNoKChpbnB1dCkgPT4ge1xyXG4gICAgICBpbnB1dC5yZW1vdmVTaG93SGlkZUNoZWNrYm94KCk7XHJcbiAgICAgIGNvbnN0IHByZXNlbnRhdGlvblNldHRpbmdEZXRhaWwgPVxyXG4gICAgICAgIHRoaXMucHJlc2VudGF0aW9uUmVxdWVzdD8ucHJlc2VudGF0aW9uU2V0dGluZ0RldGFpbHM/LmZpbmQoXHJcbiAgICAgICAgICAoeCkgPT4geC5ibG9ja05hbWUgPT0gaW5wdXQucHJlc2VudGF0aW9uRGVzaWduZXJcclxuICAgICAgICApO1xyXG4gICAgICBpZiAoXHJcbiAgICAgICAgcHJlc2VudGF0aW9uU2V0dGluZ0RldGFpbCAmJlxyXG4gICAgICAgICFwcmVzZW50YXRpb25TZXR0aW5nRGV0YWlsLmlzQmxvY2tWaXNpYmxlXHJcbiAgICAgICkge1xyXG4gICAgICAgIGlucHV0LnJlbW92ZUVsZW1lbnQoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5hcHBseUNvbmZpZ3VyYXRpb25Ub0VsZW1lbnRzKCk7XHJcbiAgfVxyXG5cclxuICAvLyAjZW5kIHJlZ2lvblxyXG59XHJcbiIsIjxwPnRzaS1saXN0LWJhc2Ugd29ya3MhPC9wPiJdfQ==