@ieeesa-npm/presentation 0.30.0 → 0.30.2

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.
@@ -2,7 +2,7 @@ import { Component, Input, ViewEncapsulation } from '@angular/core';
2
2
  import { CommonModule } from '@angular/common';
3
3
  import { Subject } from 'rxjs';
4
4
  import { filter, takeUntil } from 'rxjs/operators';
5
- import { NavigationEnd, RouterModule, } from '@angular/router';
5
+ import { NavigationEnd, PRIMARY_OUTLET, RouterModule, } from '@angular/router';
6
6
  import * as screenTexts from '../../assets/constants.json';
7
7
  import { BreadcrumbService } from '../../services/breadcrumb.service';
8
8
  import * as i0 from "@angular/core";
@@ -43,6 +43,7 @@ export class BreadcrumbComponent {
43
43
  */
44
44
  this.breadcrumbInitialRouteLabel = this.breadcrumbTexts?.breadcrumb?.label?.initial;
45
45
  this.destroy$ = new Subject();
46
+ this.breadcrumbs = [];
46
47
  this.setRouteData();
47
48
  }
48
49
  /**
@@ -50,10 +51,15 @@ export class BreadcrumbComponent {
50
51
  * @memberof BreadcrumbComponent
51
52
  */
52
53
  setRouteData() {
53
- this.router.events
54
- .pipe(takeUntil(this.destroy$), filter((event) => event instanceof NavigationEnd))
55
- .subscribe(() => {
56
- this.breadcrumbs = this.getBreadcrumbs(this.activatedRoute);
54
+ this.router?.events
55
+ ?.pipe(filter((event) => event instanceof NavigationEnd), takeUntil(this.destroy$))
56
+ // eslint-disable-next-line no-unused-vars, @typescript-eslint/no-unused-vars
57
+ ?.subscribe(() => {
58
+ const data = this.activatedRoute?.root;
59
+ this.rootParentCount = 0;
60
+ this.breadcrumbs = this.getBreadcrumbs(data);
61
+ if (this.breadcrumbs[this.breadcrumbs?.length - 1]?.label === null)
62
+ this.breadcrumbs?.pop();
57
63
  });
58
64
  }
59
65
  /**
@@ -64,75 +70,72 @@ export class BreadcrumbComponent {
64
70
  * @return {Breadcrumb[]} - The array of breadcrumb items.
65
71
  * @memberof BreadcrumbComponent
66
72
  */
67
- getBreadcrumbs(route, url = '', breadcrumbs = []) {
68
- let routeURL;
69
- let nextURL;
70
- if (route.snapshot.url.length === 0 &&
71
- route.snapshot?.parent?.url?.length) {
72
- routeURL = route?.snapshot?.parent?.url
73
- .map((segment) => segment.path)
74
- .join('/');
75
- nextURL = url + `/${routeURL}`;
73
+ getBreadcrumbs(route,
74
+ // eslint-disable-next-line @typescript-eslint/no-inferrable-types
75
+ url = '', breadcrumbs = []) {
76
+ // eslint-disable-next-line @typescript-eslint/no-inferrable-types
77
+ const ROUTE_DATA_BREADCRUMB = 'breadcrumb';
78
+ const children = route?.children;
79
+ if (children?.length === 0) {
80
+ this.rootParentCount = 0;
81
+ return breadcrumbs;
76
82
  }
77
- else {
78
- routeURL = route.snapshot.url.map((segment) => segment.path).join('/');
79
- nextURL = url + `/${routeURL}`;
80
- }
81
- if (route.snapshot.data['breadcrumb'] ||
82
- route.snapshot.routeConfig?.path !== '') {
83
- const breadcrumb = {
84
- label: this.getExtrasState(route.snapshot),
85
- params: route.snapshot.params,
86
- url: nextURL,
87
- };
88
- if (breadcrumb.label)
89
- breadcrumbs.push(breadcrumb);
90
- }
91
- if (route.firstChild) {
92
- this.breadcrumbService.setPreviousExtras(!this.breadcrumbService.getPreviousExtras());
93
- if (route.snapshot.data && route.snapshot.url.length > 0) {
94
- return this.getBreadcrumbs(route.firstChild, nextURL, breadcrumbs);
95
- }
96
- }
97
- if (route.children) {
98
- for (const child of route.children) {
99
- if (child.snapshot.data && child.snapshot.url.length > 0) {
100
- if (this.breadcrumbLevel !== 0)
101
- return this.getBreadcrumbs(child, nextURL, breadcrumbs);
102
- this.breadcrumbLevel = 1;
83
+ if (children) {
84
+ // eslint-disable-next-line prefer-const
85
+ const previousNavigation = this.router.getCurrentNavigation()?.previousNavigation;
86
+ const currentNavigation = this.router.getCurrentNavigation();
87
+ for (const child of children) {
88
+ if (child?.outlet !== PRIMARY_OUTLET) {
89
+ continue;
103
90
  }
91
+ // eslint-disable-next-line no-prototype-builtins
92
+ if (!(child?.snapshot?.data &&
93
+ ROUTE_DATA_BREADCRUMB in child.snapshot.data) &&
94
+ !currentNavigation?.extras?.state?.['breadcrumb']) {
95
+ return this.getBreadcrumbs(child, url, breadcrumbs);
96
+ }
97
+ let routeURL;
98
+ if (this.rootParentCount === 0 &&
99
+ child?.snapshot?.parent?.url?.length) {
100
+ this.rootParentCount++;
101
+ routeURL = child?.snapshot?.parent?.url
102
+ .map((segment) => segment?.path)
103
+ .join('/');
104
+ url += `/${routeURL}`;
105
+ }
106
+ else if (child?.snapshot?.component !== null) {
107
+ routeURL = child?.snapshot?.url
108
+ .map((segment) => segment?.path)
109
+ .join('/');
110
+ url += `/${routeURL}`;
111
+ }
112
+ let label = child?.snapshot?.data[ROUTE_DATA_BREADCRUMB];
113
+ if (!label) {
114
+ if (currentNavigation?.extras?.state?.['breadcrumb'] &&
115
+ !previousNavigation?.extras.state?.['breadcrumb']) {
116
+ label = currentNavigation.extras.state?.['breadcrumb'];
117
+ }
118
+ else if (this.breadcrumbService.getPreviousExtras() &&
119
+ previousNavigation?.extras.state?.['breadcrumb']) {
120
+ label = previousNavigation?.extras.state?.['breadcrumb'];
121
+ }
122
+ else {
123
+ label = currentNavigation?.extras?.state?.['breadcrumb'];
124
+ }
125
+ }
126
+ const breadcrumb = {
127
+ label: label,
128
+ params: child?.snapshot?.params,
129
+ url: url,
130
+ };
131
+ if (breadcrumb?.label !== '' && breadcrumb?.url !== '')
132
+ breadcrumbs?.push(breadcrumb);
133
+ this.breadcrumbService.setPreviousExtras(!this.breadcrumbService.getPreviousExtras());
134
+ return this.getBreadcrumbs(child, url, breadcrumbs);
104
135
  }
105
136
  }
106
137
  return breadcrumbs;
107
138
  }
108
- /**
109
- * Returns breadcrumb label.
110
- * @param {ActivatedRouteSnapshot} snapshot
111
- * @return {*}
112
- * @memberof BreadcrumbComponent
113
- */
114
- getExtrasState(snapshot) {
115
- const currentNavigation = this.router.getCurrentNavigation()?.extras?.state?.['breadcrumb'];
116
- const previousNavigation = this.router.getCurrentNavigation()?.previousNavigation?.extras?.state?.['breadcrumb'];
117
- let label;
118
- if (snapshot?.data['breadcrumb']) {
119
- label = snapshot?.data['breadcrumb'];
120
- }
121
- else {
122
- if (currentNavigation && !previousNavigation) {
123
- label = currentNavigation;
124
- }
125
- else if (previousNavigation &&
126
- this.breadcrumbService.getPreviousExtras()) {
127
- label = previousNavigation;
128
- }
129
- else if (currentNavigation &&
130
- this.breadcrumbService.getPreviousExtras() !== undefined) {
131
- label = currentNavigation;
132
- }
133
- }
134
- return label;
135
- }
136
139
  /**
137
140
  * Navigates to the specified breadcrumb item.
138
141
  * @param {Breadcrumb} breadcrumb -The breadcrumb item to navigate to.
@@ -140,14 +143,9 @@ export class BreadcrumbComponent {
140
143
  * @memberof BreadcrumbComponent
141
144
  */
142
145
  navigate(breadcrumb, index) {
143
- this.breadcrumbService.setPreviousExtras(false);
144
- this.breadcrumbLevel = index;
145
- if (index === 0) {
146
- this.breadcrumbService.setPreviousExtras(!this.breadcrumbService.getPreviousExtras());
147
- }
148
146
  if (index !== 0 &&
149
147
  !this.activatedRoute.children[0].snapshot.data['breadcrumb']) {
150
- this.breadcrumbService.setPreviousExtras(true);
148
+ this.breadcrumbService.setPreviousExtras(false);
151
149
  const navigationExtras = {
152
150
  state: { breadcrumb: breadcrumb.label },
153
151
  };
@@ -182,4 +180,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
182
180
  }], breadcrumbInitialRouteLabel: [{
183
181
  type: Input
184
182
  }] } });
185
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJlYWRjcnVtYi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcmVzZW50YXRpb24vc3JjL2xpYi9jb21wb25lbnRzL2JyZWFkY3J1bWIvYnJlYWRjcnVtYi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcmVzZW50YXRpb24vc3JjL2xpYi9jb21wb25lbnRzL2JyZWFkY3J1bWIvYnJlYWRjcnVtYi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBYSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ25ELE9BQU8sRUFHTCxhQUFhLEVBRWIsWUFBWSxHQUNiLE1BQU0saUJBQWlCLENBQUM7QUFDekIsT0FBTyxLQUFLLFdBQVcsTUFBTSw2QkFBNkIsQ0FBQztBQUUzRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQzs7Ozs7QUFFdEU7OztHQUdHO0FBVUgsTUFBTSxPQUFPLG1CQUFtQjtJQXNCOUIsMENBQTBDO0lBQzFDO0lBQ0UsMENBQTBDO0lBQ25DLGNBQThCO0lBQ3JDLDBDQUEwQztJQUNuQyxNQUFjO0lBQ3JCLDBDQUEwQztJQUNuQyxpQkFBb0M7UUFKcEMsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBRTlCLFdBQU0sR0FBTixNQUFNLENBQVE7UUFFZCxzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBNUI3Qyw4REFBOEQ7UUFDOUQsb0JBQWUsR0FBUSxXQUFXLENBQUM7UUFDbkMsb0JBQWUsR0FB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R0ExTFUsbUJBQW1CO21HQUFuQixtQkFBbUIsMExBTG5CLENBQUMsaUJBQWlCLENBQUMsMEJDdkJoQyxtekJBd0JLLHMrUkRGTyxZQUFZLCtQQUFFLFlBQVk7OzRGQU16QixtQkFBbUI7a0JBVC9CLFNBQVM7K0JBQ0UsbUJBQW1CLGNBQ2pCLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxZQUFZLENBQUMsYUFDMUIsQ0FBQyxpQkFBaUIsQ0FBQyxpQkFHZixpQkFBaUIsQ0FBQyxJQUFJOzBKQVk1QixzQkFBc0I7c0JBQTlCLEtBQUs7Z0JBT0csMkJBQTJCO3NCQUFuQyxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25EZXN0cm95LCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGZpbHRlciwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQge1xyXG4gIEFjdGl2YXRlZFJvdXRlLFxyXG4gIEFjdGl2YXRlZFJvdXRlU25hcHNob3QsXHJcbiAgTmF2aWdhdGlvbkVuZCxcclxuICBSb3V0ZXIsXHJcbiAgUm91dGVyTW9kdWxlLFxyXG59IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCAqIGFzIHNjcmVlblRleHRzIGZyb20gJy4uLy4uL2Fzc2V0cy9jb25zdGFudHMuanNvbic7XHJcbmltcG9ydCB7IEJyZWFkY3J1bWIgfSBmcm9tICcuLi8uLi9tb2RlbHMvYnJlYWRjcnVtYi5tb2RlbCc7XHJcbmltcG9ydCB7IEJyZWFkY3J1bWJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvYnJlYWRjcnVtYi5zZXJ2aWNlJztcclxuXHJcbi8qKlxyXG4gKiBSZXVzYWJsZSBicmVhZGNydW1iIGNvbXBvbmVudCBmb3IgZGlzcGxheWluZyBhbmQgbmF2aWdhdGluZyB0aHJvdWdoIGEgaGllcmFyY2h5IG9mIHBhZ2VzLlxyXG4gKiBAY2xhc3MgQnJlYWRjcnVtYkNvbXBvbmVudFxyXG4gKi9cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdpZWVlc2EtYnJlYWRjcnVtYicsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBSb3V0ZXJNb2R1bGVdLFxyXG4gIHByb3ZpZGVyczogW0JyZWFkY3J1bWJTZXJ2aWNlXSxcclxuICB0ZW1wbGF0ZVVybDogJy4vYnJlYWRjcnVtYi5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vYnJlYWRjcnVtYi5jb21wb25lbnQuc2NzcyddLFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBCcmVhZGNydW1iQ29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95IHtcclxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gIGJyZWFkY3J1bWJUZXh0czogYW55ID0gc2NyZWVuVGV4dHM7XHJcbiAgcm9vdFBhcmVudENvdW50ID0gMDtcclxuICAvKipcclxuICAgKiBJbml0aWFsIHJvdXRlIGZvciB0aGUgYnJlYWRjcnVtYiBjb21wb25lbnQuXHJcbiAgICogQHR5cGUge3N0cmluZ31cclxuICAgKiBAZGVmYXVsdCAnLydcclxuICAgKiBAbWVtYmVyb2YgQnJlYWRjcnVtYkNvbXBvbmVudFxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIGJyZWFkY3J1bWJJbml0aWFsUm91dGUgPSAnLyc7XHJcbiAgLyoqXHJcbiAgICogSW5pdGlhbCBsYWJlbCBmb3IgdGhlIGJyZWFkY3J1bWIgY29tcG9uZW50LlxyXG4gICAqIEB0eXBlIHtzdHJpbmd9XHJcbiAgICogQGRlZmF1bHQgYnJlYWRjcnVtYlRleHRzPy5icmVhZGNydW1iPy5sYWJlbD8uaW5pdGlhbFxyXG4gICAqIEBtZW1iZXJvZiBCcmVhZGNydW1iQ29tcG9uZW50XHJcbiAgICovXHJcbiAgQElucHV0KCkgYnJlYWRjcnVtYkluaXRpYWxSb3V0ZUxhYmVsID1cclxuICAgIHRoaXMuYnJlYWRjcnVtYlRleHRzPy5icmVhZGNydW1iPy5sYWJlbD8uaW5pdGlhbDtcclxuICBicmVhZGNydW1icyE6IEJyZWFkY3J1bWJbXTtcclxuICBicmVhZGNydW1iTGV2ZWwhOiBudW1iZXI7XHJcbiAgZGVzdHJveSQ6IFN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgU3ViamVjdDxib29sZWFuPigpO1xyXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtdmFyc1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXHJcbiAgICBwdWJsaWMgYWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlLFxyXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXHJcbiAgICBwdWJsaWMgcm91dGVyOiBSb3V0ZXIsXHJcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnNcclxuICAgIHB1YmxpYyBicmVhZGNydW1iU2VydmljZTogQnJlYWRjcnVtYlNlcnZpY2VcclxuICApIHtcclxuICAgIHRoaXMuc2V0Um91dGVEYXRhKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTZXRzIHVwIHRoZSBzdWJzY3JpcHRpb24gdG8gcm91dGVyIGV2ZW50cyB0byB1cGRhdGUgYnJlYWRjcnVtYnMuXHJcbiAgICogQG1lbWJlcm9mIEJyZWFkY3J1bWJDb21wb25lbnRcclxuICAgKi9cclxuICBzZXRSb3V0ZURhdGEoKSB7XHJcbiAgICB0aGlzLnJvdXRlci5ldmVudHNcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpLFxyXG4gICAgICAgIGZpbHRlcigoZXZlbnQpID0+IGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvbkVuZClcclxuICAgICAgKVxyXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICB0aGlzLmJyZWFkY3J1bWJzID0gdGhpcy5nZXRCcmVhZGNydW1icyh0aGlzLmFjdGl2YXRlZFJvdXRlKTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZWN1cnNpdmVseSBnZXRzIHRoZSBicmVhZGNydW1iIGl0ZW1zIGZvciB0aGUgZ2l2ZW4gcm91dGUuXHJcbiAgICogQHBhcmFtIHtBY3RpdmF0ZWRSb3V0ZX0gcm91dGUgLSBUaGUgYWN0aXZhdGVkIHJvdXRlLlxyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbdXJsPScnXSAtIFRoZSBjdXJyZW50IFVSTC5cclxuICAgKiBAcGFyYW0ge0JyZWFkY3J1bWJbXX0gW2JyZWFkY3J1bWJzPVtdXSAtIFRoZSBjdXJyZW50IGJyZWFkY3J1bWIgaXRlbXMuXHJcbiAgICogQHJldHVybiB7QnJlYWRjcnVtYltdfSAtIFRoZSBhcnJheSBvZiBicmVhZGNydW1iIGl0ZW1zLlxyXG4gICAqIEBtZW1iZXJvZiBCcmVhZGNydW1iQ29tcG9uZW50XHJcbiAgICovXHJcbiAgZ2V0QnJlYWRjcnVtYnMoXHJcbiAgICByb3V0ZTogQWN0aXZhdGVkUm91dGUsXHJcbiAgICB1cmw6IHN0cmluZyA9ICcnLFxyXG4gICAgYnJlYWRjcnVtYnM6IEJyZWFkY3J1bWJbXSA9IFtdXHJcbiAgKTogQnJlYWRjcnVtYltdIHtcclxuICAgIGxldCByb3V0ZVVSTDogc3RyaW5nO1xyXG4gICAgbGV0IG5leHRVUkw6IHN0cmluZztcclxuICAgIGlmIChcclxuICAgICAgcm91dGUuc25hcHNob3QudXJsLmxlbmd0aCA9PT0gMCAmJlxyXG4gICAgICByb3V0ZS5zbmFwc2hvdD8ucGFyZW50Py51cmw/Lmxlbmd0aFxyXG4gICAgKSB7XHJcbiAgICAgIHJvdXRlVVJMID0gcm91dGU/LnNuYXBzaG90Py5wYXJlbnQ/LnVybFxyXG4gICAgICAgIC5tYXAoKHNlZ21lbnQpID0+IHNlZ21lbnQucGF0aClcclxuICAgICAgICAuam9pbignLycpO1xyXG4gICAgICBuZXh0VVJMID0gdXJsICsgYC8ke3JvdXRlVVJMfWA7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByb3V0ZVVSTCA9IHJvdXRlLnNuYXBzaG90LnVybC5tYXAoKHNlZ21lbnQpID0+IHNlZ21lbnQucGF0aCkuam9pbignLycpO1xyXG4gICAgICBuZXh0VVJMID0gdXJsICsgYC8ke3JvdXRlVVJMfWA7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKFxyXG4gICAgICByb3V0ZS5zbmFwc2hvdC5kYXRhWydicmVhZGNydW1iJ10gfHxcclxuICAgICAgcm91dGUuc25hcHNob3Qucm91dGVDb25maWc/LnBhdGggIT09ICcnXHJcbiAgICApIHtcclxuICAgICAgY29uc3QgYnJlYWRjcnVtYjogQnJlYWRjcnVtYiA9IHtcclxuICAgICAgICBsYWJlbDogdGhpcy5nZXRFeHRyYXNTdGF0ZShyb3V0ZS5zbmFwc2hvdCksXHJcbiAgICAgICAgcGFyYW1zOiByb3V0ZS5zbmFwc2hvdC5wYXJhbXMsXHJcbiAgICAgICAgdXJsOiBuZXh0VVJMLFxyXG4gICAgICB9O1xyXG4gICAgICBpZiAoYnJlYWRjcnVtYi5sYWJlbCkgYnJlYWRjcnVtYnMucHVzaChicmVhZGNydW1iKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAocm91dGUuZmlyc3RDaGlsZCkge1xyXG4gICAgICB0aGlzLmJyZWFkY3J1bWJTZXJ2aWNlLnNldFByZXZpb3VzRXh0cmFzKFxyXG4gICAgICAgICF0aGlzLmJyZWFkY3J1bWJTZXJ2aWNlLmdldFByZXZpb3VzRXh0cmFzKClcclxuICAgICAgKTtcclxuICAgICAgaWYgKHJvdXRlLnNuYXBzaG90LmRhdGEgJiYgcm91dGUuc25hcHNob3QudXJsLmxlbmd0aCA+IDApIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5nZXRCcmVhZGNydW1icyhyb3V0ZS5maXJzdENoaWxkLCBuZXh0VVJMLCBicmVhZGNydW1icyk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBpZiAocm91dGUuY2hpbGRyZW4pIHtcclxuICAgICAgZm9yIChjb25zdCBjaGlsZCBvZiByb3V0ZS5jaGlsZHJlbikge1xyXG4gICAgICAgIGlmIChjaGlsZC5zbmFwc2hvdC5kYXRhICYmIGNoaWxkLnNuYXBzaG90LnVybC5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICBpZiAodGhpcy5icmVhZGNydW1iTGV2ZWwgIT09IDApXHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmdldEJyZWFkY3J1bWJzKGNoaWxkLCBuZXh0VVJMLCBicmVhZGNydW1icyk7XHJcbiAgICAgICAgICB0aGlzLmJyZWFkY3J1bWJMZXZlbCA9IDE7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gYnJlYWRjcnVtYnM7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXR1cm5zIGJyZWFkY3J1bWIgbGFiZWwuXHJcbiAgICogQHBhcmFtIHtBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90fSBzbmFwc2hvdFxyXG4gICAqIEByZXR1cm4geyp9XHJcbiAgICogQG1lbWJlcm9mIEJyZWFkY3J1bWJDb21wb25lbnRcclxuICAgKi9cclxuICBnZXRFeHRyYXNTdGF0ZShzbmFwc2hvdDogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCkge1xyXG4gICAgY29uc3QgY3VycmVudE5hdmlnYXRpb24gPVxyXG4gICAgICB0aGlzLnJvdXRlci5nZXRDdXJyZW50TmF2aWdhdGlvbigpPy5leHRyYXM/LnN0YXRlPy5bJ2JyZWFkY3J1bWInXTtcclxuICAgIGNvbnN0IHByZXZpb3VzTmF2aWdhdGlvbiA9XHJcbiAgICAgIHRoaXMucm91dGVyLmdldEN1cnJlbnROYXZpZ2F0aW9uKCk/LnByZXZpb3VzTmF2aWdhdGlvbj8uZXh0cmFzPy5zdGF0ZT8uW1xyXG4gICAgICAgICdicmVhZGNydW1iJ1xyXG4gICAgICBdO1xyXG4gICAgbGV0IGxhYmVsO1xyXG4gICAgaWYgKHNuYXBzaG90Py5kYXRhWydicmVhZGNydW1iJ10pIHtcclxuICAgICAgbGFiZWwgPSBzbmFwc2hvdD8uZGF0YVsnYnJlYWRjcnVtYiddO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKGN1cnJlbnROYXZpZ2F0aW9uICYmICFwcmV2aW91c05hdmlnYXRpb24pIHtcclxuICAgICAgICBsYWJlbCA9IGN1cnJlbnROYXZpZ2F0aW9uO1xyXG4gICAgICB9IGVsc2UgaWYgKFxyXG4gICAgICAgIHByZXZpb3VzTmF2aWdhdGlvbiAmJlxyXG4gICAgICAgIHRoaXMuYnJlYWRjcnVtYlNlcnZpY2UuZ2V0UHJldmlvdXNFeHRyYXMoKVxyXG4gICAgICApIHtcclxuICAgICAgICBsYWJlbCA9IHByZXZpb3VzTmF2aWdhdGlvbjtcclxuICAgICAgfSBlbHNlIGlmIChcclxuICAgICAgICBjdXJyZW50TmF2aWdhdGlvbiAmJlxyXG4gICAgICAgIHRoaXMuYnJlYWRjcnVtYlNlcnZpY2UuZ2V0UHJldmlvdXNFeHRyYXMoKSAhPT0gdW5kZWZpbmVkXHJcbiAgICAgICkge1xyXG4gICAgICAgIGxhYmVsID0gY3VycmVudE5hdmlnYXRpb247XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBsYWJlbDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE5hdmlnYXRlcyB0byB0aGUgc3BlY2lmaWVkIGJyZWFkY3J1bWIgaXRlbS5cclxuICAgKiBAcGFyYW0ge0JyZWFkY3J1bWJ9IGJyZWFkY3J1bWIgLVRoZSBicmVhZGNydW1iIGl0ZW0gdG8gbmF2aWdhdGUgdG8uXHJcbiAgICogQHBhcmFtIHtudW1iZXJ9IGluZGV4IC1UaGUgaW5kZXggb2YgdGhlIGJyZWFkY3J1bWIgaXRlbS5cclxuICAgKiBAbWVtYmVyb2YgQnJlYWRjcnVtYkNvbXBvbmVudFxyXG4gICAqL1xyXG4gIG5hdmlnYXRlKGJyZWFkY3J1bWI6IEJyZWFkY3J1bWIsIGluZGV4OiBudW1iZXIpOiB2b2lkIHtcclxuICAgIHRoaXMuYnJlYWRjcnVtYlNlcnZpY2Uuc2V0UHJldmlvdXNFeHRyYXMoZmFsc2UpO1xyXG4gICAgdGhpcy5icmVhZGNydW1iTGV2ZWwgPSBpbmRleDtcclxuICAgIGlmIChpbmRleCA9PT0gMCkge1xyXG4gICAgICB0aGlzLmJyZWFkY3J1bWJTZXJ2aWNlLnNldFByZXZpb3VzRXh0cmFzKFxyXG4gICAgICAgICF0aGlzLmJyZWFkY3J1bWJTZXJ2aWNlLmdldFByZXZpb3VzRXh0cmFzKClcclxuICAgICAgKTtcclxuICAgIH1cclxuICAgIGlmIChcclxuICAgICAgaW5kZXggIT09IDAgJiZcclxuICAgICAgIXRoaXMuYWN0aXZhdGVkUm91dGUuY2hpbGRyZW5bMF0uc25hcHNob3QuZGF0YVsnYnJlYWRjcnVtYiddXHJcbiAgICApIHtcclxuICAgICAgdGhpcy5icmVhZGNydW1iU2VydmljZS5zZXRQcmV2aW91c0V4dHJhcyh0cnVlKTtcclxuICAgICAgY29uc3QgbmF2aWdhdGlvbkV4dHJhcyA9IHtcclxuICAgICAgICBzdGF0ZTogeyBicmVhZGNydW1iOiBicmVhZGNydW1iLmxhYmVsIH0sXHJcbiAgICAgIH07XHJcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFticmVhZGNydW1iLnVybF0sIG5hdmlnYXRpb25FeHRyYXMpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVGFrZXMgdGhlIGluZGV4IGFuZCB0aGUgY3VycmVudCBpdGVtIGFzIGFyZ3VtZW50cyBhbmQgbmVlZHMgdG8gcmV0dXJuIHRoZSB1bmlxdWUgaWRlbnRpZmllciBmb3IgdGhpcyBpdGVtLlxyXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBpbmRleFxyXG4gICAqIEByZXR1cm4ge251bWJlcn1cclxuICAgKiBAbWVtYmVyb2YgQnJlYWRjcnVtYkNvbXBvbmVudFxyXG4gICAqL1xyXG4gIHRyYWNrQnlGbihpbmRleDogbnVtYmVyKTogbnVtYmVyIHtcclxuICAgIHJldHVybiBpbmRleDtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogTmdPbkRlc3Ryb3kgcGVyZm9ybXMgbmVjZXNzYXJ5IGNsZWFudXAgdGFza3MsIHN1Y2ggYXMgdW5zdWJzY3JpYmluZyBmcm9tIHN1YnNjcmlwdGlvbiB3aGVuIHRoZSBjb21wb25lbnQgaXMgYmVpbmcgZGVzdHJveWVkLlxyXG4gICAqIEBtZW1iZXJvZiBCcmVhZGNydW1iQ29tcG9uZW50XHJcbiAgICovXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQodHJ1ZSk7XHJcbiAgICB0aGlzLmRlc3Ryb3kkLnVuc3Vic2NyaWJlKCk7XHJcbiAgfVxyXG59XHJcbiIsIjx1bCBjbGFzcz1cImllZWVzYS1icmVhZGNydW1iIGJyZWFkY3J1bWJcIj5cclxuICA8bGk+XHJcbiAgICA8YVxyXG4gICAgICBbcm91dGVyTGlua109XCJicmVhZGNydW1iSW5pdGlhbFJvdXRlXCJcclxuICAgICAgY2xhc3M9XCJpZWVlc2EtYm9keS1zbS0xNCB0ZXh0LWRlY29yYXRpb24tbm9uZVwiXHJcbiAgICAgID57eyBicmVhZGNydW1iSW5pdGlhbFJvdXRlTGFiZWwgfX1cclxuICAgIDwvYT5cclxuICA8L2xpPlxyXG5cclxuICA8bGlcclxuICAgICpuZ0Zvcj1cImxldCBicmVhZGNydW1iIG9mIGJyZWFkY3J1bWJzOyBsZXQgbGFzdCA9IGxhc3Q7IGxldCBpID0gaW5kZXg7IHRyYWNrQnk6IHRyYWNrQnlGblwiXHJcbiAgPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFsYXN0OyBlbHNlIGRpc2FibGVMaW5rXCI+XHJcbiAgICAgIDxhXHJcbiAgICAgICAgW3JvdXRlckxpbmtdPVwiW2JyZWFkY3J1bWIudXJsLCBicmVhZGNydW1iLnBhcmFtc11cIlxyXG4gICAgICAgIChjbGljayk9XCJuYXZpZ2F0ZShicmVhZGNydW1iLCBpKVwiXHJcbiAgICAgICAgY2xhc3M9XCJpZWVlc2EtYm9keS1zbS0xNCB0ZXh0LWRlY29yYXRpb24tbm9uZVwiXHJcbiAgICAgICAgPnt7IGJyZWFkY3J1bWIubGFiZWwgfX08L2FcclxuICAgICAgPlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8bmctdGVtcGxhdGUgI2Rpc2FibGVMaW5rPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cImllZWVzYS1ib2R5LXNtLTE0XCI+e3sgYnJlYWRjcnVtYi5sYWJlbCB9fTwvc3Bhbj5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgPC9saT5cclxuPC91bD4iXX0=
183
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJlYWRjcnVtYi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcmVzZW50YXRpb24vc3JjL2xpYi9jb21wb25lbnRzL2JyZWFkY3J1bWIvYnJlYWRjcnVtYi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcmVzZW50YXRpb24vc3JjL2xpYi9jb21wb25lbnRzL2JyZWFkY3J1bWIvYnJlYWRjcnVtYi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBYSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ25ELE9BQU8sRUFFTCxhQUFhLEVBQ2IsY0FBYyxFQUVkLFlBQVksR0FFYixNQUFNLGlCQUFpQixDQUFDO0FBQ3pCLE9BQU8sS0FBSyxXQUFXLE1BQU0sNkJBQTZCLENBQUM7QUFFM0QsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7Ozs7O0FBRXRFOzs7R0FHRztBQVVILE1BQU0sT0FBTyxtQkFBbUI7SUFxQjlCLDBDQUEwQztJQUMxQztJQUNFLDBDQUEwQztJQUNuQyxjQUE4QjtJQUNyQywwQ0FBMEM7SUFDbEMsTUFBYztJQUN0QiwwQ0FBMEM7SUFDbkMsaUJBQW9DO1FBSnBDLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUU3QixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBRWYsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQTNCN0MsOERBQThEO1FBQzlELG9CQUFlLEdBQVEsV0FBVyxDQUFDO1FBQ25D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SUFDSCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDekIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUM5QixDQUFDOytHQWxMVSxtQkFBbUI7bUdBQW5CLG1CQUFtQiwwTEFMbkIsQ0FBQyxpQkFBaUIsQ0FBQywwQkN4QmhDLG16QkF3QksscytSRERPLFlBQVksK1BBQUUsWUFBWTs7NEZBTXpCLG1CQUFtQjtrQkFUL0IsU0FBUzsrQkFDRSxtQkFBbUIsY0FDakIsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLFlBQVksQ0FBQyxhQUMxQixDQUFDLGlCQUFpQixDQUFDLGlCQUdmLGlCQUFpQixDQUFDLElBQUk7MEpBWTVCLHNCQUFzQjtzQkFBOUIsS0FBSztnQkFPRywyQkFBMkI7c0JBQW5DLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkRlc3Ryb3ksIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgZmlsdGVyLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7XHJcbiAgQWN0aXZhdGVkUm91dGUsXHJcbiAgTmF2aWdhdGlvbkVuZCxcclxuICBQUklNQVJZX09VVExFVCxcclxuICBSb3V0ZXIsXHJcbiAgUm91dGVyTW9kdWxlLFxyXG4gIFVybFNlZ21lbnQsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0ICogYXMgc2NyZWVuVGV4dHMgZnJvbSAnLi4vLi4vYXNzZXRzL2NvbnN0YW50cy5qc29uJztcclxuaW1wb3J0IHsgQnJlYWRjcnVtYiB9IGZyb20gJy4uLy4uL21vZGVscy9icmVhZGNydW1iLm1vZGVsJztcclxuaW1wb3J0IHsgQnJlYWRjcnVtYlNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9icmVhZGNydW1iLnNlcnZpY2UnO1xyXG5cclxuLyoqXHJcbiAqIFJldXNhYmxlIGJyZWFkY3J1bWIgY29tcG9uZW50IGZvciBkaXNwbGF5aW5nIGFuZCBuYXZpZ2F0aW5nIHRocm91Z2ggYSBoaWVyYXJjaHkgb2YgcGFnZXMuXHJcbiAqIEBjbGFzcyBCcmVhZGNydW1iQ29tcG9uZW50XHJcbiAqL1xyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2llZWVzYS1icmVhZGNydW1iJyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIFJvdXRlck1vZHVsZV0sXHJcbiAgcHJvdmlkZXJzOiBbQnJlYWRjcnVtYlNlcnZpY2VdLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9icmVhZGNydW1iLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9icmVhZGNydW1iLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcclxufSlcclxuZXhwb3J0IGNsYXNzIEJyZWFkY3J1bWJDb21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xyXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgYnJlYWRjcnVtYlRleHRzOiBhbnkgPSBzY3JlZW5UZXh0cztcclxuICByb290UGFyZW50Q291bnQgPSAwO1xyXG4gIC8qKlxyXG4gICAqIEluaXRpYWwgcm91dGUgZm9yIHRoZSBicmVhZGNydW1iIGNvbXBvbmVudC5cclxuICAgKiBAdHlwZSB7c3RyaW5nfVxyXG4gICAqIEBkZWZhdWx0ICcvJ1xyXG4gICAqIEBtZW1iZXJvZiBCcmVhZGNydW1iQ29tcG9uZW50XHJcbiAgICovXHJcbiAgQElucHV0KCkgYnJlYWRjcnVtYkluaXRpYWxSb3V0ZSA9ICcvJztcclxuICAvKipcclxuICAgKiBJbml0aWFsIGxhYmVsIGZvciB0aGUgYnJlYWRjcnVtYiBjb21wb25lbnQuXHJcbiAgICogQHR5cGUge3N0cmluZ31cclxuICAgKiBAZGVmYXVsdCBicmVhZGNydW1iVGV4dHM/LmJyZWFkY3J1bWI/LmxhYmVsPy5pbml0aWFsXHJcbiAgICogQG1lbWJlcm9mIEJyZWFkY3J1bWJDb21wb25lbnRcclxuICAgKi9cclxuICBASW5wdXQoKSBicmVhZGNydW1iSW5pdGlhbFJvdXRlTGFiZWwgPVxyXG4gICAgdGhpcy5icmVhZGNydW1iVGV4dHM/LmJyZWFkY3J1bWI/LmxhYmVsPy5pbml0aWFsO1xyXG4gIGJyZWFkY3J1bWJzITogQnJlYWRjcnVtYltdO1xyXG4gIGRlc3Ryb3kkOiBTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcclxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnNcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtdmFyc1xyXG4gICAgcHVibGljIGFjdGl2YXRlZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcclxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtdmFyc1xyXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcclxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtdmFyc1xyXG4gICAgcHVibGljIGJyZWFkY3J1bWJTZXJ2aWNlOiBCcmVhZGNydW1iU2VydmljZVxyXG4gICkge1xyXG4gICAgdGhpcy5icmVhZGNydW1icyA9IFtdO1xyXG4gICAgdGhpcy5zZXRSb3V0ZURhdGEoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNldHMgdXAgdGhlIHN1YnNjcmlwdGlvbiB0byByb3V0ZXIgZXZlbnRzIHRvIHVwZGF0ZSBicmVhZGNydW1icy5cclxuICAgKiBAbWVtYmVyb2YgQnJlYWRjcnVtYkNvbXBvbmVudFxyXG4gICAqL1xyXG4gIHNldFJvdXRlRGF0YSgpIHtcclxuICAgIHRoaXMucm91dGVyPy5ldmVudHNcclxuICAgICAgPy5waXBlKFxyXG4gICAgICAgIGZpbHRlcigoZXZlbnQpID0+IGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvbkVuZCksXHJcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpXHJcbiAgICAgIClcclxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzLCBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcclxuICAgICAgPy5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGRhdGEgPSB0aGlzLmFjdGl2YXRlZFJvdXRlPy5yb290O1xyXG4gICAgICAgIHRoaXMucm9vdFBhcmVudENvdW50ID0gMDtcclxuICAgICAgICB0aGlzLmJyZWFkY3J1bWJzID0gdGhpcy5nZXRCcmVhZGNydW1icyhkYXRhKTtcclxuICAgICAgICBpZiAodGhpcy5icmVhZGNydW1ic1t0aGlzLmJyZWFkY3J1bWJzPy5sZW5ndGggLSAxXT8ubGFiZWwgPT09IG51bGwpXHJcbiAgICAgICAgICB0aGlzLmJyZWFkY3J1bWJzPy5wb3AoKTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZWN1cnNpdmVseSBnZXRzIHRoZSBicmVhZGNydW1iIGl0ZW1zIGZvciB0aGUgZ2l2ZW4gcm91dGUuXHJcbiAgICogQHBhcmFtIHtBY3RpdmF0ZWRSb3V0ZX0gcm91dGUgLSBUaGUgYWN0aXZhdGVkIHJvdXRlLlxyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbdXJsPScnXSAtIFRoZSBjdXJyZW50IFVSTC5cclxuICAgKiBAcGFyYW0ge0JyZWFkY3J1bWJbXX0gW2JyZWFkY3J1bWJzPVtdXSAtIFRoZSBjdXJyZW50IGJyZWFkY3J1bWIgaXRlbXMuXHJcbiAgICogQHJldHVybiB7QnJlYWRjcnVtYltdfSAtIFRoZSBhcnJheSBvZiBicmVhZGNydW1iIGl0ZW1zLlxyXG4gICAqIEBtZW1iZXJvZiBCcmVhZGNydW1iQ29tcG9uZW50XHJcbiAgICovXHJcbiAgZ2V0QnJlYWRjcnVtYnMoXHJcbiAgICByb3V0ZTogQWN0aXZhdGVkUm91dGUsXHJcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWluZmVycmFibGUtdHlwZXNcclxuICAgIHVybDogc3RyaW5nID0gJycsXHJcbiAgICBicmVhZGNydW1iczogQnJlYWRjcnVtYltdID0gW11cclxuICApOiBCcmVhZGNydW1iW10ge1xyXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1pbmZlcnJhYmxlLXR5cGVzXHJcbiAgICBjb25zdCBST1VURV9EQVRBX0JSRUFEQ1JVTUI6IHN0cmluZyA9ICdicmVhZGNydW1iJztcclxuICAgIGNvbnN0IGNoaWxkcmVuOiBBY3RpdmF0ZWRSb3V0ZVtdID0gcm91dGU/LmNoaWxkcmVuO1xyXG4gICAgaWYgKGNoaWxkcmVuPy5sZW5ndGggPT09IDApIHtcclxuICAgICAgdGhpcy5yb290UGFyZW50Q291bnQgPSAwO1xyXG4gICAgICByZXR1cm4gYnJlYWRjcnVtYnM7XHJcbiAgICB9XHJcbiAgICBpZiAoY2hpbGRyZW4pIHtcclxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHByZWZlci1jb25zdFxyXG4gICAgICBjb25zdCBwcmV2aW91c05hdmlnYXRpb24gPVxyXG4gICAgICAgIHRoaXMucm91dGVyLmdldEN1cnJlbnROYXZpZ2F0aW9uKCk/LnByZXZpb3VzTmF2aWdhdGlvbjtcclxuICAgICAgY29uc3QgY3VycmVudE5hdmlnYXRpb24gPSB0aGlzLnJvdXRlci5nZXRDdXJyZW50TmF2aWdhdGlvbigpO1xyXG4gICAgICBmb3IgKGNvbnN0IGNoaWxkIG9mIGNoaWxkcmVuKSB7XHJcbiAgICAgICAgaWYgKGNoaWxkPy5vdXRsZXQgIT09IFBSSU1BUllfT1VUTEVUKSB7XHJcbiAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXByb3RvdHlwZS1idWlsdGluc1xyXG4gICAgICAgIGlmIChcclxuICAgICAgICAgICEoXHJcbiAgICAgICAgICAgIGNoaWxkPy5zbmFwc2hvdD8uZGF0YSAmJlxyXG4gICAgICAgICAgICBST1VURV9EQVRBX0JSRUFEQ1JVTUIgaW4gY2hpbGQuc25hcHNob3QuZGF0YVxyXG4gICAgICAgICAgKSAmJlxyXG4gICAgICAgICAgIWN1cnJlbnROYXZpZ2F0aW9uPy5leHRyYXM/LnN0YXRlPy5bJ2JyZWFkY3J1bWInXVxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0QnJlYWRjcnVtYnMoY2hpbGQsIHVybCwgYnJlYWRjcnVtYnMpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBsZXQgcm91dGVVUkw6IHN0cmluZztcclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICB0aGlzLnJvb3RQYXJlbnRDb3VudCA9PT0gMCAmJlxyXG4gICAgICAgICAgY2hpbGQ/LnNuYXBzaG90Py5wYXJlbnQ/LnVybD8ubGVuZ3RoXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICB0aGlzLnJvb3RQYXJlbnRDb3VudCsrO1xyXG4gICAgICAgICAgcm91dGVVUkwgPSBjaGlsZD8uc25hcHNob3Q/LnBhcmVudD8udXJsXHJcbiAgICAgICAgICAgIC5tYXAoKHNlZ21lbnQ6IFVybFNlZ21lbnQpID0+IHNlZ21lbnQ/LnBhdGgpXHJcbiAgICAgICAgICAgIC5qb2luKCcvJyk7XHJcbiAgICAgICAgICB1cmwgKz0gYC8ke3JvdXRlVVJMfWA7XHJcbiAgICAgICAgfSBlbHNlIGlmIChjaGlsZD8uc25hcHNob3Q/LmNvbXBvbmVudCAhPT0gbnVsbCkge1xyXG4gICAgICAgICAgcm91dGVVUkwgPSBjaGlsZD8uc25hcHNob3Q/LnVybFxyXG4gICAgICAgICAgICAubWFwKChzZWdtZW50OiBVcmxTZWdtZW50KSA9PiBzZWdtZW50Py5wYXRoKVxyXG4gICAgICAgICAgICAuam9pbignLycpO1xyXG4gICAgICAgICAgdXJsICs9IGAvJHtyb3V0ZVVSTH1gO1xyXG4gICAgICAgIH1cclxuICAgICAgICBsZXQgbGFiZWwgPSBjaGlsZD8uc25hcHNob3Q/LmRhdGFbUk9VVEVfREFUQV9CUkVBRENSVU1CXTtcclxuICAgICAgICBpZiAoIWxhYmVsKSB7XHJcbiAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgIGN1cnJlbnROYXZpZ2F0aW9uPy5leHRyYXM/LnN0YXRlPy5bJ2JyZWFkY3J1bWInXSAmJlxyXG4gICAgICAgICAgICAhcHJldmlvdXNOYXZpZ2F0aW9uPy5leHRyYXMuc3RhdGU/LlsnYnJlYWRjcnVtYiddXHJcbiAgICAgICAgICApIHtcclxuICAgICAgICAgICAgbGFiZWwgPSBjdXJyZW50TmF2aWdhdGlvbi5leHRyYXMuc3RhdGU/LlsnYnJlYWRjcnVtYiddO1xyXG4gICAgICAgICAgfSBlbHNlIGlmIChcclxuICAgICAgICAgICAgdGhpcy5icmVhZGNydW1iU2VydmljZS5nZXRQcmV2aW91c0V4dHJhcygpICYmXHJcbiAgICAgICAgICAgIHByZXZpb3VzTmF2aWdhdGlvbj8uZXh0cmFzLnN0YXRlPy5bJ2JyZWFkY3J1bWInXVxyXG4gICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgIGxhYmVsID0gcHJldmlvdXNOYXZpZ2F0aW9uPy5leHRyYXMuc3RhdGU/LlsnYnJlYWRjcnVtYiddO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgbGFiZWwgPSBjdXJyZW50TmF2aWdhdGlvbj8uZXh0cmFzPy5zdGF0ZT8uWydicmVhZGNydW1iJ107XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IGJyZWFkY3J1bWI6IEJyZWFkY3J1bWIgPSB7XHJcbiAgICAgICAgICBsYWJlbDogbGFiZWwsXHJcbiAgICAgICAgICBwYXJhbXM6IGNoaWxkPy5zbmFwc2hvdD8ucGFyYW1zLFxyXG4gICAgICAgICAgdXJsOiB1cmwsXHJcbiAgICAgICAgfTtcclxuICAgICAgICBpZiAoYnJlYWRjcnVtYj8ubGFiZWwgIT09ICcnICYmIGJyZWFkY3J1bWI/LnVybCAhPT0gJycpXHJcbiAgICAgICAgICBicmVhZGNydW1icz8ucHVzaChicmVhZGNydW1iKTtcclxuICAgICAgICB0aGlzLmJyZWFkY3J1bWJTZXJ2aWNlLnNldFByZXZpb3VzRXh0cmFzKFxyXG4gICAgICAgICAgIXRoaXMuYnJlYWRjcnVtYlNlcnZpY2UuZ2V0UHJldmlvdXNFeHRyYXMoKVxyXG4gICAgICAgICk7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0QnJlYWRjcnVtYnMoY2hpbGQsIHVybCwgYnJlYWRjcnVtYnMpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gYnJlYWRjcnVtYnM7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBOYXZpZ2F0ZXMgdG8gdGhlIHNwZWNpZmllZCBicmVhZGNydW1iIGl0ZW0uXHJcbiAgICogQHBhcmFtIHtCcmVhZGNydW1ifSBicmVhZGNydW1iIC1UaGUgYnJlYWRjcnVtYiBpdGVtIHRvIG5hdmlnYXRlIHRvLlxyXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBpbmRleCAtVGhlIGluZGV4IG9mIHRoZSBicmVhZGNydW1iIGl0ZW0uXHJcbiAgICogQG1lbWJlcm9mIEJyZWFkY3J1bWJDb21wb25lbnRcclxuICAgKi9cclxuICBuYXZpZ2F0ZShicmVhZGNydW1iOiBCcmVhZGNydW1iLCBpbmRleDogbnVtYmVyKTogdm9pZCB7XHJcbiAgICBpZiAoXHJcbiAgICAgIGluZGV4ICE9PSAwICYmXHJcbiAgICAgICF0aGlzLmFjdGl2YXRlZFJvdXRlLmNoaWxkcmVuWzBdLnNuYXBzaG90LmRhdGFbJ2JyZWFkY3J1bWInXVxyXG4gICAgKSB7XHJcbiAgICAgIHRoaXMuYnJlYWRjcnVtYlNlcnZpY2Uuc2V0UHJldmlvdXNFeHRyYXMoZmFsc2UpO1xyXG4gICAgICBjb25zdCBuYXZpZ2F0aW9uRXh0cmFzID0ge1xyXG4gICAgICAgIHN0YXRlOiB7IGJyZWFkY3J1bWI6IGJyZWFkY3J1bWIubGFiZWwgfSxcclxuICAgICAgfTtcclxuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW2JyZWFkY3J1bWIudXJsXSwgbmF2aWdhdGlvbkV4dHJhcyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBUYWtlcyB0aGUgaW5kZXggYW5kIHRoZSBjdXJyZW50IGl0ZW0gYXMgYXJndW1lbnRzIGFuZCBuZWVkcyB0byByZXR1cm4gdGhlIHVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGlzIGl0ZW0uXHJcbiAgICogQHBhcmFtIHtudW1iZXJ9IGluZGV4XHJcbiAgICogQHJldHVybiB7bnVtYmVyfVxyXG4gICAqIEBtZW1iZXJvZiBCcmVhZGNydW1iQ29tcG9uZW50XHJcbiAgICovXHJcbiAgdHJhY2tCeUZuKGluZGV4OiBudW1iZXIpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIGluZGV4O1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTmdPbkRlc3Ryb3kgcGVyZm9ybXMgbmVjZXNzYXJ5IGNsZWFudXAgdGFza3MsIHN1Y2ggYXMgdW5zdWJzY3JpYmluZyBmcm9tIHN1YnNjcmlwdGlvbiB3aGVuIHRoZSBjb21wb25lbnQgaXMgYmVpbmcgZGVzdHJveWVkLlxyXG4gICAqIEBtZW1iZXJvZiBCcmVhZGNydW1iQ29tcG9uZW50XHJcbiAgICovXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQodHJ1ZSk7XHJcbiAgICB0aGlzLmRlc3Ryb3kkLnVuc3Vic2NyaWJlKCk7XHJcbiAgfVxyXG59XHJcbiIsIjx1bCBjbGFzcz1cImllZWVzYS1icmVhZGNydW1iIGJyZWFkY3J1bWJcIj5cclxuICA8bGk+XHJcbiAgICA8YVxyXG4gICAgICBbcm91dGVyTGlua109XCJicmVhZGNydW1iSW5pdGlhbFJvdXRlXCJcclxuICAgICAgY2xhc3M9XCJpZWVlc2EtYm9keS1zbS0xNCB0ZXh0LWRlY29yYXRpb24tbm9uZVwiXHJcbiAgICAgID57eyBicmVhZGNydW1iSW5pdGlhbFJvdXRlTGFiZWwgfX1cclxuICAgIDwvYT5cclxuICA8L2xpPlxyXG5cclxuICA8bGlcclxuICAgICpuZ0Zvcj1cImxldCBicmVhZGNydW1iIG9mIGJyZWFkY3J1bWJzOyBsZXQgbGFzdCA9IGxhc3Q7IGxldCBpID0gaW5kZXg7IHRyYWNrQnk6IHRyYWNrQnlGblwiXHJcbiAgPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFsYXN0OyBlbHNlIGRpc2FibGVMaW5rXCI+XHJcbiAgICAgIDxhXHJcbiAgICAgICAgW3JvdXRlckxpbmtdPVwiW2JyZWFkY3J1bWIudXJsLCBicmVhZGNydW1iLnBhcmFtc11cIlxyXG4gICAgICAgIChjbGljayk9XCJuYXZpZ2F0ZShicmVhZGNydW1iLCBpKVwiXHJcbiAgICAgICAgY2xhc3M9XCJpZWVlc2EtYm9keS1zbS0xNCB0ZXh0LWRlY29yYXRpb24tbm9uZVwiXHJcbiAgICAgICAgPnt7IGJyZWFkY3J1bWIubGFiZWwgfX08L2FcclxuICAgICAgPlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8bmctdGVtcGxhdGUgI2Rpc2FibGVMaW5rPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cImllZWVzYS1ib2R5LXNtLTE0XCI+e3sgYnJlYWRjcnVtYi5sYWJlbCB9fTwvc3Bhbj5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgPC9saT5cclxuPC91bD4iXX0=