@ieeesa-npm/presentation 0.29.8 → 0.29.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/assets/constants.json +1 -3
- package/esm2022/lib/components/breadcrumb/breadcrumb.component.mjs +75 -73
- package/esm2022/lib/components/data-table/data-table.component.mjs +5 -39
- package/esm2022/lib/components/file-download/file-download.component.mjs +6 -6
- package/esm2022/lib/components/file-upload/file-upload.component.mjs +4 -29
- package/esm2022/lib/components/list/list.component.mjs +6 -31
- package/esm2022/lib/models/file-attachment.model.mjs +2 -0
- package/esm2022/lib/models/list-item.model.mjs +1 -1
- package/esm2022/lib/services/breadcrumb.service.mjs +1 -1
- package/esm2022/lib/services/file-upload.service.mjs +1 -1
- package/esm2022/public-api.mjs +2 -1
- package/fesm2022/ieeesa-npm-presentation.mjs +100 -184
- package/fesm2022/ieeesa-npm-presentation.mjs.map +1 -1
- package/lib/components/breadcrumb/breadcrumb.component.d.ts +10 -2
- package/lib/components/chips/chips.component.d.ts +0 -2
- package/lib/components/data-table/data-table.component.d.ts +3 -11
- package/lib/components/dynamic-form/dynamic-form.component.d.ts +1 -1
- package/lib/components/file-download/file-download.component.d.ts +7 -3
- package/lib/components/file-upload/file-upload.component.d.ts +2 -25
- package/lib/components/list/list.component.d.ts +1 -11
- package/lib/directives/dynamic-form-field/dynamic-form-field.directive.d.ts +1 -1
- package/lib/directives/file-upload/file-upload.directive.d.ts +1 -1
- package/lib/models/file-attachment.model.d.ts +21 -0
- package/lib/models/list-item.model.d.ts +0 -1
- package/lib/services/breadcrumb.service.d.ts +3 -3
- package/lib/services/file-upload.service.d.ts +7 -3
- package/package.json +1 -1
- package/public-api.d.ts +1 -0
- package/src/lib/assets/constants.json +1 -3
|
@@ -599,11 +599,9 @@
|
|
|
599
599
|
}
|
|
600
600
|
},
|
|
601
601
|
"list": {
|
|
602
|
-
"defaultIndentation": 12
|
|
603
|
-
"dragAndDropIconUrl": "assets/images/sprites/sprites.svg#icon-drag-indicator"
|
|
602
|
+
"defaultIndentation": 12
|
|
604
603
|
},
|
|
605
604
|
"search": {
|
|
606
|
-
"minCharToSearch": 3,
|
|
607
605
|
"searchIcon": "assets/images/sprites/sprites.svg#icon-search"
|
|
608
606
|
},
|
|
609
607
|
"richTextEditor": {
|
|
@@ -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,
|
|
5
|
+
import { NavigationEnd, 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,7 +43,6 @@ export class BreadcrumbComponent {
|
|
|
43
43
|
*/
|
|
44
44
|
this.breadcrumbInitialRouteLabel = this.breadcrumbTexts?.breadcrumb?.label?.initial;
|
|
45
45
|
this.destroy$ = new Subject();
|
|
46
|
-
this.breadcrumbs = [];
|
|
47
46
|
this.setRouteData();
|
|
48
47
|
}
|
|
49
48
|
/**
|
|
@@ -51,15 +50,10 @@ export class BreadcrumbComponent {
|
|
|
51
50
|
* @memberof BreadcrumbComponent
|
|
52
51
|
*/
|
|
53
52
|
setRouteData() {
|
|
54
|
-
this.router
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
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();
|
|
53
|
+
this.router.events
|
|
54
|
+
.pipe(takeUntil(this.destroy$), filter((event) => event instanceof NavigationEnd))
|
|
55
|
+
.subscribe(() => {
|
|
56
|
+
this.breadcrumbs = this.getBreadcrumbs(this.activatedRoute);
|
|
63
57
|
});
|
|
64
58
|
}
|
|
65
59
|
/**
|
|
@@ -70,72 +64,75 @@ export class BreadcrumbComponent {
|
|
|
70
64
|
* @return {Breadcrumb[]} - The array of breadcrumb items.
|
|
71
65
|
* @memberof BreadcrumbComponent
|
|
72
66
|
*/
|
|
73
|
-
getBreadcrumbs(route,
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
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}`;
|
|
82
76
|
}
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
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
|
-
}
|
|
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;
|
|
125
103
|
}
|
|
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);
|
|
135
104
|
}
|
|
136
105
|
}
|
|
137
106
|
return breadcrumbs;
|
|
138
107
|
}
|
|
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
|
+
}
|
|
139
136
|
/**
|
|
140
137
|
* Navigates to the specified breadcrumb item.
|
|
141
138
|
* @param {Breadcrumb} breadcrumb -The breadcrumb item to navigate to.
|
|
@@ -143,9 +140,14 @@ export class BreadcrumbComponent {
|
|
|
143
140
|
* @memberof BreadcrumbComponent
|
|
144
141
|
*/
|
|
145
142
|
navigate(breadcrumb, index) {
|
|
143
|
+
this.breadcrumbService.setPreviousExtras(false);
|
|
144
|
+
this.breadcrumbLevel = index;
|
|
145
|
+
if (index === 0) {
|
|
146
|
+
this.breadcrumbService.setPreviousExtras(!this.breadcrumbService.getPreviousExtras());
|
|
147
|
+
}
|
|
146
148
|
if (index !== 0 &&
|
|
147
149
|
!this.activatedRoute.children[0].snapshot.data['breadcrumb']) {
|
|
148
|
-
this.breadcrumbService.setPreviousExtras(
|
|
150
|
+
this.breadcrumbService.setPreviousExtras(true);
|
|
149
151
|
const navigationExtras = {
|
|
150
152
|
state: { breadcrumb: breadcrumb.label },
|
|
151
153
|
};
|
|
@@ -180,4 +182,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
180
182
|
}], breadcrumbInitialRouteLabel: [{
|
|
181
183
|
type: Input
|
|
182
184
|
}] } });
|
|
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=
|
|
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=
|