@eo-sdk/client 11.5.0-rc.2 → 11.6.0-rc.1
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/app/eo-client/about-state/about-state.component.d.ts.map +1 -1
- package/app/eo-framework/actions/actions/custom-actions/custom-actions.component.d.ts.map +1 -1
- package/app/eo-framework/actions/actions/workflow-action/simple-workflow-action.component.d.ts.map +1 -1
- package/app/eo-framework/app-shell/app-bar/app-search/app-search.component.d.ts +1 -1
- package/app/eo-framework/app-shell/app-bar/app-search/app-search.component.d.ts.map +1 -1
- package/app/eo-framework/form-elements/organization/organization.component.d.ts +1 -0
- package/app/eo-framework/form-elements/organization/organization.component.d.ts.map +1 -1
- package/app/eo-framework/grid/grid.component.d.ts +7 -0
- package/app/eo-framework/grid/grid.component.d.ts.map +1 -1
- package/app/eo-framework/media/media.component.d.ts +3 -2
- package/app/eo-framework/media/media.component.d.ts.map +1 -1
- package/app/eo-framework/object-details/object-details.component.d.ts +13 -4
- package/app/eo-framework/object-details/object-details.component.d.ts.map +1 -1
- package/app/eo-framework/object-details/object-history/object-history.component.d.ts +3 -2
- package/app/eo-framework/object-details/object-history/object-history.component.d.ts.map +1 -1
- package/app/eo-framework/result-list/result-list.component.d.ts.map +1 -1
- package/app/eo-framework/ui/indexdata-summary/indexdata-summary.component.d.ts +50 -0
- package/app/eo-framework/ui/indexdata-summary/indexdata-summary.component.d.ts.map +1 -1
- package/app/eo-framework/ui/indexdata-summary/indexdata-summary.interface.d.ts +10 -0
- package/app/eo-framework/ui/indexdata-summary/indexdata-summary.interface.d.ts.map +1 -0
- package/app/eo-framework-core/search/app-search.service.d.ts +12 -1
- package/app/eo-framework-core/search/app-search.service.d.ts.map +1 -1
- package/assets/_default/i18n/de.json +5 -3
- package/assets/_default/i18n/en.json +10 -8
- package/esm2022/app/eo-client/about-state/about-state.component.mjs +3 -3
- package/esm2022/app/eo-framework/actions/actions/custom-actions/custom-actions.component.mjs +2 -1
- package/esm2022/app/eo-framework/actions/actions/workflow-action/simple-workflow-action.component.mjs +2 -2
- package/esm2022/app/eo-framework/app-shell/app-bar/app-search/app-search.component.mjs +18 -4
- package/esm2022/app/eo-framework/form-elements/organization/organization.component.mjs +25 -16
- package/esm2022/app/eo-framework/grid/extensions/filter/text/text-filter.component.mjs +3 -3
- package/esm2022/app/eo-framework/grid/grid.component.mjs +36 -10
- package/esm2022/app/eo-framework/media/media.component.mjs +8 -4
- package/esm2022/app/eo-framework/object-details/object-details.component.mjs +30 -15
- package/esm2022/app/eo-framework/object-details/object-history/object-history.component.mjs +11 -6
- package/esm2022/app/eo-framework/object-form/object-form/form-element-table/form-element-table.component.mjs +3 -3
- package/esm2022/app/eo-framework/prepare-details/prepare-details.component.mjs +1 -1
- package/esm2022/app/eo-framework/recyclebin-details/recyclebin-details.component.mjs +1 -1
- package/esm2022/app/eo-framework/result-list/result-list.component.mjs +7 -2
- package/esm2022/app/eo-framework/ui/indexdata-summary/indexdata-summary-entry/indexdata-summary-entry.component.mjs +2 -2
- package/esm2022/app/eo-framework/ui/indexdata-summary/indexdata-summary.component.mjs +138 -5
- package/esm2022/app/eo-framework/ui/indexdata-summary/indexdata-summary.interface.mjs +2 -0
- package/esm2022/app/eo-framework-core/api/grid.service.mjs +3 -3
- package/esm2022/app/eo-framework-core/search/app-search.service.mjs +25 -4
- package/fesm2022/eo-sdk-client.mjs +303 -746
- package/fesm2022/eo-sdk-client.mjs.map +1 -1
- package/misc/scripts/copy-client-assets.js +1 -1
- package/package.json +3 -3
- package/proxy.config.js +13 -0
- package/scss/_migrationTemp.scss +1 -0
- package/styles.css +1 -0
- package/app/eo-framework/grid/row-grouping/batchRemover.d.ts +0 -13
- package/app/eo-framework/grid/row-grouping/batchRemover.d.ts.map +0 -1
- package/app/eo-framework/grid/row-grouping/group-stage.d.ts +0 -45
- package/app/eo-framework/grid/row-grouping/group-stage.d.ts.map +0 -1
- package/app/eo-framework/grid/row-grouping/row-grouping.module.d.ts +0 -8
- package/app/eo-framework/grid/row-grouping/row-grouping.module.d.ts.map +0 -1
- package/esm2022/app/eo-framework/grid/row-grouping/batchRemover.mjs +0 -50
- package/esm2022/app/eo-framework/grid/row-grouping/group-stage.mjs +0 -623
- package/esm2022/app/eo-framework/grid/row-grouping/row-grouping.module.mjs +0 -8
- package/proxy.config.json +0 -97
|
@@ -4,16 +4,18 @@ import { Injectable } from '@angular/core';
|
|
|
4
4
|
import { SearchQuery, SearchState, EnaioEvent, Utils } from '@eo-sdk/core';
|
|
5
5
|
import * as i0 from "@angular/core";
|
|
6
6
|
import * as i1 from "@eo-sdk/core";
|
|
7
|
+
import * as i2 from "@ngx-translate/core";
|
|
7
8
|
/**
|
|
8
9
|
* AppSearchService is the apps main entry point for searching (used by the appBarSearch component).
|
|
9
10
|
* It provides an `query$` observable components can subscribe to, to
|
|
10
11
|
* stay in touch with updates to the query.
|
|
11
12
|
*/
|
|
12
13
|
export class AppSearchService {
|
|
13
|
-
constructor(searchService, eventService, system) {
|
|
14
|
+
constructor(searchService, eventService, system, translate) {
|
|
14
15
|
this.searchService = searchService;
|
|
15
16
|
this.eventService = eventService;
|
|
16
17
|
this.system = system;
|
|
18
|
+
this.translate = translate;
|
|
17
19
|
this.query = new SearchQuery();
|
|
18
20
|
this.lastQuery = new SearchQuery();
|
|
19
21
|
this.queryState = new SearchState();
|
|
@@ -42,6 +44,8 @@ export class AppSearchService {
|
|
|
42
44
|
// These groups are provided through the services `objectTypeGroups` property.
|
|
43
45
|
this.system.system$.subscribe((systemDefinition) => {
|
|
44
46
|
this.typesAllowedUnderSysroot = systemDefinition.types.filter(type => type.parenttypes.includes('sysroot'));
|
|
47
|
+
// translates labels for 'sysdmscontenttemplate' object types.
|
|
48
|
+
this.typesAllowedUnderSysroot = this.updateSysDmsContentTemplateLabel(systemDefinition.types);
|
|
45
49
|
let groups = [];
|
|
46
50
|
observableFrom(systemDefinition.types)
|
|
47
51
|
.pipe(groupBy((type) => type.group || '0'), mergeMap(g => g.pipe(reduce((acc, curr) => [...acc, curr], []))))
|
|
@@ -378,10 +382,27 @@ export class AppSearchService {
|
|
|
378
382
|
}
|
|
379
383
|
return match;
|
|
380
384
|
}
|
|
381
|
-
|
|
385
|
+
/**
|
|
386
|
+
* Updates the label of `sysdmscontenttemplate` object types using translations.
|
|
387
|
+
*
|
|
388
|
+
* This method is useful for ensuring that the displayed labels for these object types are localized.
|
|
389
|
+
*
|
|
390
|
+
* @param {ObjectType[]} types - An array of object types to update.
|
|
391
|
+
* @returns {ObjectType[]} The updated array of object types with translated labels for `sysdmscontenttemplate` types.
|
|
392
|
+
*/
|
|
393
|
+
updateSysDmsContentTemplateLabel(types) {
|
|
394
|
+
return types.map((type) => {
|
|
395
|
+
if (type.qname === 'sysdmscontenttemplate') {
|
|
396
|
+
type.actualLabel = type.actualLabel || type.label;
|
|
397
|
+
type.label = this.translate.instant(`eo.type.label.${type.actualLabel.toLowerCase()}`);
|
|
398
|
+
}
|
|
399
|
+
return type;
|
|
400
|
+
});
|
|
401
|
+
}
|
|
402
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: AppSearchService, deps: [{ token: i1.SearchService }, { token: i1.EventService }, { token: i1.SystemService }, { token: i2.TranslateService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
382
403
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: AppSearchService }); }
|
|
383
404
|
}
|
|
384
405
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: AppSearchService, decorators: [{
|
|
385
406
|
type: Injectable
|
|
386
|
-
}], ctorParameters: () => [{ type: i1.SearchService }, { type: i1.EventService }, { type: i1.SystemService }] });
|
|
387
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLXNlYXJjaC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9lby1mcmFtZXdvcmstY29yZS9zZWFyY2gvYXBwLXNlYXJjaC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxJQUFJLElBQUksY0FBYyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQWEsTUFBTSxNQUFNLENBQUM7QUFDeEYsT0FBTyxFQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDekQsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQ1MsV0FBVyxFQUFFLFdBQVcsRUFDRyxVQUFVLEVBQUUsS0FBSyxFQUMzRCxNQUFNLGNBQWMsQ0FBQzs7O0FBRXRCOzs7O0dBSUc7QUFFSCxNQUFNLE9BQU8sZ0JBQWdCO0lBMkIzQixZQUFvQixhQUE0QixFQUN0QyxZQUEwQixFQUMxQixNQUFxQjtRQUZYLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQ3RDLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzFCLFdBQU0sR0FBTixNQUFNLENBQWU7UUEzQnZCLFVBQUssR0FBRyxJQUFJLFdBQVcsRUFBRSxDQUFDO1FBRTFCLGNBQVMsR0FBRyxJQUFJLFdBQVcsRUFBRSxDQUFDO1FBQzlCLGVBQVUsR0FBRyxJQUFJLFdBQVcsRUFBRSxDQUFDO1FBS3ZDLHlFQUF5RTtRQUN6RSxxSkFBcUo7UUFDckosb0dBQW9HO1FBQzVGLGdCQUFXLEdBQUcsSUFBSSxhQUFhLENBQWMsQ0FBQyxDQUFDLENBQUM7UUFDaEQscUJBQWdCLEdBQUcsSUFBSSxlQUFlLENBQWMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBRTdFLHlGQUF5RjtRQUN6Riw2RkFBNkY7UUFDN0YsdUJBQXVCO1FBQ2hCLFdBQU0sR0FBNEIsSUFBSSxDQUFDLFdB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UUFDVixJQUFJLEtBQUssQ0FBQztRQUNWLE9BQU8sQ0FBQyxLQUFLLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQzdDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsS0FBSyxLQUFLLGVBQWUsQ0FBQyxDQUFDO1lBQzFGLENBQUMsRUFBRSxDQUFDO1FBQ04sQ0FBQztRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQzs4R0FsYVUsZ0JBQWdCO2tIQUFoQixnQkFBZ0I7OzJGQUFoQixnQkFBZ0I7a0JBRDVCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2Zyb20gYXMgb2JzZXJ2YWJsZUZyb20sIEJlaGF2aW9yU3ViamVjdCwgUmVwbGF5U3ViamVjdCwgT2JzZXJ2YWJsZX0gZnJvbSAncnhqcyc7XG5pbXBvcnQge2dyb3VwQnksIHJlZHVjZSwgbWVyZ2VNYXB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7SW5qZWN0YWJsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBTZWFyY2hGaWx0ZXIsIFNlYXJjaFF1ZXJ5LCBTZWFyY2hTdGF0ZSwgU3lzdGVtU2VydmljZSxcbiAgT2JqZWN0VHlwZSwgU2VhcmNoU2VydmljZSwgRXZlbnRTZXJ2aWNlLCBFbmFpb0V2ZW50LCBVdGlscywgUXVlcnlTY29wZVxufSBmcm9tICdAZW8tc2RrL2NvcmUnO1xuXG4vKipcbiAqIEFwcFNlYXJjaFNlcnZpY2UgaXMgdGhlIGFwcHMgbWFpbiBlbnRyeSBwb2ludCBmb3Igc2VhcmNoaW5nICh1c2VkIGJ5IHRoZSBhcHBCYXJTZWFyY2ggY29tcG9uZW50KS5cbiAqIEl0IHByb3ZpZGVzIGFuIGBxdWVyeSRgIG9ic2VydmFibGUgY29tcG9uZW50cyBjYW4gc3Vic2NyaWJlIHRvLCB0b1xuICogc3RheSBpbiB0b3VjaCB3aXRoIHVwZGF0ZXMgdG8gdGhlIHF1ZXJ5LlxuICovXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQXBwU2VhcmNoU2VydmljZSB7XG5cbiAgcHJpdmF0ZSBxdWVyeSA9IG5ldyBTZWFyY2hRdWVyeSgpO1xuICBwcml2YXRlIGFnZ3M6IGFueTtcbiAgcHJpdmF0ZSBsYXN0UXVlcnkgPSBuZXcgU2VhcmNoUXVlcnkoKTtcbiAgcHJpdmF0ZSBxdWVyeVN0YXRlID0gbmV3IFNlYXJjaFN0YXRlKCk7XG4gIC8vIEhvbGRzIHRoZSBsYXN0IGFnZ3JlZ2F0aW9uIHByb3BlcnRpZXMgc2VudCB0byB0aGUgc2VydmVyXG4gIC8vIFVzZWQgZm9yIHByZXZlbnRpbmcgcmVkdW5kYW50IGNhbGxzXG4gIHByaXZhdGUgbGFzdEFnZ0NhbGxDb21wYXJhdG9yOiBzdHJpbmc7XG5cbiAgLy8gU3ViamVjdCBob2xkaW5nIHRoZSBjdXJyZW50IHF1ZXJ5IChpbml0aWFsIHZhbHVlIGlzIGEgbmV3IFNlYXJjaFF1ZXJ5KVxuICAvLyBAc2VlOiBodHRwOi8vYmxvZy5hbmd1bGFyLXVuaXZlcnNpdHkuaW8vaG93LXRvLWJ1aWxkLWFuZ3VsYXIyLWFwcHMtdXNpbmctcnhqcy1vYnNlcnZhYmxlLWRhdGEtc2VydmljZXMtcGl0ZmFsbHMtdG8tYXZvaWQvI3J4anNzdWJqZWN0YW5kaG93dG91c2VpdFxuICAvLyB0b2RvOiBtYXliZSBhZGQgc3VwcG9ydCBmb3IgaG9sZGluZyBhIHF1ZXJ5IGhpc3RvcnksIHNvIHRoZSB1c2VyIGNhbiByZWxvYWQgb2xkZXIgcXVlcmllcyBhcyB3ZWxsXG4gIHByaXZhdGUgcXVlcnlTb3VyY2UgPSBuZXcgUmVwbGF5U3ViamVjdDxTZWFyY2hRdWVyeT4oMSk7XG4gIHByaXZhdGUgcXVlcnlTdGF0ZVNvdXJjZSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8U2VhcmNoU3RhdGU+KHRoaXMucXVlcnlTdGF0ZSk7XG5cbiAgLy8gRXhwb3NlIGFuIG9ic2VydmFibGUgaW5zdGVhZCBvZiB0aGUgc3ViamVjdCBpdHNlbGYgdG8gcHJldmVudCB0aGUgc2VydmljZSBjbGllbnRzIGZyb21cbiAgLy8gdGhlbXNlbHZlcyBlbWl0dGluZyBzdG9yZSB2YWx1ZXMgZGlyZWN0bHkgaW5zdGVhZCBvZiBjYWxsaW5nIGFjdGlvbiBtZXRob2RzLCBhbmQgdGhlcmVmb3JlXG4gIC8vIGJ5cGFzc2luZyB0aGUgc3RvcmUuXG4gIHB1YmxpYyBxdWVyeSQ6IE9ic2VydmFibGU8U2VhcmNoUXVlcnk+ID0gdGhpcy5xdWVyeVNvdXJjZS5hc09ic2VydmFibGUoKTtcbiAgLy8gU2VhcmNoIHNlcnZpY2UgYWxzbyBleHBvc2VzIGFuIG9ic2VydmFibGUgdGhhdCBlbWl0cyB0aGUgc3RhdGUgb2YgdGhlIGN1cnJlbnQgcXVlcnkuXG4gIC8vIFdlIHNlcGFyYXRlIHRoZSBzdGF0ZSBvZiB0aGUgcXVlcnkgZnJvbSB0aGUgcXVlcnkgaXRzZWxmIGFzIG90aGVyd2lzZSBjaGFuZ2hpbmcgdGhlIHF1ZXJpZXNcbiAgLy8gc3RhdGUgd2lsbCB0cmlnZ2VyIGFsbCBzdWJzY3JpYmVycyBvZiB0aGUgcXVlcnkgb2JzZXJ2YWxlIGFuZCBsZWFkIHRvIHVuZGVzaXJlZCBiZWhhdmlvdXJcbiAgcHVibGljIHF1ZXJ5U3RhdGUkOiBPYnNlcnZhYmxlPFNlYXJjaFN0YXRlPiA9IHRoaXMucXVlcnlTdGF0ZVNvdXJjZS5hc09ic2VydmFibGUoKTtcbiAgcHVibGljIG9iamVjdFR5cGVHcm91cHMgPSBbXTtcbiAgcHVibGljIHR5cGVzQWxsb3dlZFVuZGVyU3lzcm9vdCA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgc2VhcmNoU2VydmljZTogU2VhcmNoU2VydmljZSxcbiAgICBwcml2YXRlIGV2ZW50U2VydmljZTogRXZlbnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgc3lzdGVtOiBTeXN0ZW1TZXJ2aWNlKSB7XG5cbiAgICB0aGlzLnNldERlZmF1bHRBZ2dzKCk7XG4gICAgdGhpcy5ldmVudFNlcnZpY2Uub24oRW5haW9FdmVudC5MT0dPVVQpXG4gICAgICAuc3Vic2NyaWJlKHJlcyA9PiB7XG4gICAgICAgIHRoaXMucmVzZXQodHJ1ZSk7XG4gICAgICB9KTtcblxuICAgIHRoaXMucXVlcnlTb3VyY2UubmV4dCh0aGlzLnF1ZXJ5KTtcblxuICAgIC8vIEZldGNoIG9iamVjdCB0eXBlcyBhbmQgZ3JvdXBzIHRoYXQgc2VydmUgYXMgc2VhcmNoIGZpbHRlciBwYXJhbXMuXG4gICAgLy8gVGhlc2UgZ3JvdXBzIGFyZSBwcm92aWRlZCB0aHJvdWdoIHRoZSBzZXJ2aWNlcyBgb2JqZWN0VHlwZUdyb3Vwc2AgcHJvcGVydHkuXG4gICAgdGhpcy5zeXN0ZW0uc3lzdGVtJC5zdWJzY3JpYmUoKHN5c3RlbURlZmluaXRpb24pID0+IHtcblxuICAgICAgdGhpcy50eXBlc0FsbG93ZWRVbmRlclN5c3Jvb3QgPSBzeXN0ZW1EZWZpbml0aW9uLnR5cGVzLmZpbHRlcih0eXBlID0+IHR5cGUucGFyZW50dHlwZXMuaW5jbHVkZXMoJ3N5c3Jvb3QnKSk7XG5cbiAgICAgIGxldCBncm91cHMgPSBbXTtcbiAgICAgIG9ic2VydmFibGVGcm9tKHN5c3RlbURlZmluaXRpb24udHlwZXMpXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIGdyb3VwQnkoKHR5cGU6IGFueSkgPT4gdHlwZS5ncm91cCB8fCAnMCcpLFxuICAgICAgICAgIG1lcmdlTWFwKGcgPT4gZy5waXBlKHJlZHVjZSgoYWNjLCBjdXJyKSA9PiBbLi4uYWNjLCBjdXJyXSwgW10pKSlcbiAgICAgICAgKVxuICAgICAgICAuc3Vic2NyaWJlKG90ZyA9PiB7XG4gICAgICAgICAgZ3JvdXBzLnB1c2goe1xuICAgICAgICAgICAgbGFiZWw6IG90Z1swXS5ncm91cCB8fCAnMCcsXG4gICAgICAgICAgICB0eXBlczogdGhpcy5zb3J0T2JqZWN0VHlwZUdyb3VwKG90ZylcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICB0aGlzLm9iamVjdFR5cGVHcm91cHMgPSBncm91cHMuc29ydChVdGlscy5zb3J0VmFsdWVzKCdsYWJlbCcpKTtcbiAgICB9KTtcbiAgfVxuXG4gIHJlc2V0QWdncygpIHtcbiAgICB0aGlzLnNldERlZmF1bHRBZ2dzKCk7XG4gICAgdGhpcy5sYXN0QWdnQ2FsbENvbXBhcmF0b3IgPSBudWxsO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXREZWZhdWx0QWdncygpIHtcbiAgICB0aGlzLmFnZ3MgPSB7XG4gICAgICB0eXBlOiB7fVxuICAgIH07XG4gIH1cblxuICAvLyBoZWxwZXIgbWV0aG9kIGZvciBzb3J0aW5nIHRoZSBlbnRyaWVzIG9mIGFuIG9iamVjdCB0eXBlIGdyb3VwXG4gIHByaXZhdGUgc29ydE9iamVjdFR5cGVHcm91cCh0eXBlcykge1xuICAgIHJldHVybiB0eXBlcy5zb3J0KChhLCBiKSA9PiB7XG5cbiAgICAgIGlmIChhLmlzQ29udGV4dEZvbGRlciAmJiAhYi5pc0NvbnRleHRGb2xkZXIpIHtcbiAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgfVxuICAgICAgaWYgKCFhLmlzQ29udGV4dEZvbGRlciAmJiBiLmlzQ29udGV4dEZvbGRlcikge1xuICAgICAgICByZXR1cm4gMTtcbiAgICAgIH1cbiAgICAgIGlmIChhLmlzRm9sZGVyICYmICFiLmlzRm9sZGVyKSB7XG4gICAgICAgIHJldHVybiAtMTtcbiAgICAgIH1cbiAgICAgIGlmICghYS5pc0ZvbGRlciAmJiBiLmlzRm9sZGVyKSB7XG4gICAgICAgIHJldHVybiAxO1xuICAgICAgfVxuICAgICAgaWYgKGEuaXNGb2xkZXIgJiYgYi5pc0ZvbGRlcikge1xuICAgICAgICByZXR1cm4gVXRpbHMuc29ydFZhbHVlcygnbGFiZWwnKS5jYWxsKHRoaXMsIGEsIGIpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIFV0aWxzLnNvcnRWYWx1ZXMoJ2xhYmVsJykuY2FsbCh0aGlzLCBhLCBiKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8vIEV4dGVuZHMgdGhlIG9iamVjdFR5cGVzR3JvdXBzIGJ5IHRoZSBlbGVtZW50cyBmb3IgZWFjaCBvYmplY3QgdHlwZVxuICAvLyBVc2VkIGluIGV4cGVydCBzZWFyY2ggbW9kZVxuICBwdWJsaWMgYnVpbGRUeXBlR3JvdXBUcmVlKCkge1xuXG4gICAgbGV0IGdUcmVlID0gW107XG4gICAgbGV0IGkgPSAwO1xuICAgIGZvciAobGV0IGdyb3VwIG9mIHRoaXMub2JqZWN0VHlwZUdyb3Vwcykge1xuICAgICAgbGV0IGcgPSB7XG4gICAgICAgIGlkOiBpKyssXG4gICAgICAgIGxhYmVsOiBncm91cC5sYWJlbCxcbiAgICAgICAgdHJlZTogW11cbiAgICAgIH07XG4gICAgICBsZXQgdHlwZXMgPSBbXTtcbiAgICAgIGZvciAobGV0IG9iamVjdFR5cGUgb2YgZ3JvdXAudHlwZXMpIHtcblxuICAgICAgICBsZXQgdCA9IHtcbiAgICAgICAgICBpZDogb2JqZWN0VHlwZS5pZCxcbiAgICAgICAgICBsYWJlbDogb2JqZWN0VHlwZS5sYWJlbCxcbiAgICAgICAgICBjaGlsZHJlbjogW11cbiAgICAgICAgfTtcbiAgICAgICAgbGV0IGNoaWxkcmVuID0gW107XG4gICAgICAgIGZvciAobGV0IGVsIG9mIG9iamVjdFR5cGUuZWxlbWVudHMpIHtcbiAgICAgICAgICBjaGlsZHJlbi5wdXNoKHtcbiAgICAgICAgICAgIGxhYmVsOiBlbC5sYWJlbCxcbiAgICAgICAgICAgIHR5cGU6IGVsLnR5cGUsXG4gICAgICAgICAgICBkYXRhOiBlbC5xbmFtZVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIC8vIHNvcnQgYnkgbGFiZWxcbiAgICAgICAgdC5jaGlsZHJlbiA9IGNoaWxkcmVuLnNvcnQoVXRpbHMuc29ydFZhbHVlcygnbGFiZWwnKSk7XG4gICAgICAgIHR5cGVzLnB1c2godCk7XG4gICAgICB9XG4gICAgICBnLnRyZWUgPSB0eXBlcy5zb3J0KFV0aWxzLnNvcnRWYWx1ZXMoJ2xhYmVsJykpO1xuXG5cbiAgICAgIGdUcmVlLnB1c2goZyk7XG4gICAgfVxuICAgIHJldHVybiBnVHJlZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBPdmVycmlkZSB0aGUgY3VycmVudCBxdWVyeSBieSBhIGRpZmZlcmVudCBvbmUuXG4gICAqIFRoaXMgY291bGQgYmUgZG9uZSBieSBmb3IgZXhhbXBsZSBsb2FkaW5nIGEgc3RvcmVkIHF1ZXJ5LlxuICAgKlxuICAgKiBAcGFyYW0gcXVlcnkgLSB0aGUgcXVlcnkgdGhhdCBzaG91bGQgcmVwbGFjZSB0aGUgY3VycmVudCBxdWVyeSwgdGhpcyBtYXkgYmUgZWl0aGVyIGEgU2VhcmNoUXVlcnkgaW5zdGFuY2UsXG4gICAqIGEgSlNPTiBzdHJpbmcgb2YgYW4gb2JqZWN0IG1hdGNoaW5nIHRoZSBzZWFyY2ggYXBpXG4gICAqL1xuICBwdWJsaWMgc2V0UXVlcnkocXVlcnk6IFNlYXJjaFF1ZXJ5KSB7XG4gICAgaWYgKHRoaXMuaXNOZXdRdWVyeShxdWVyeSkpIHtcbiAgICAgIHRoaXMuc2V0RGVmYXVsdEFnZ3MoKTtcbiAgICAgIHRoaXMucXVlcnkgPSBxdWVyeTtcbiAgICAgIHRoaXMucXVlcnlTb3VyY2UubmV4dCh0aGlzLnF1ZXJ5KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmVzZXRzIHRoZSBjdXJyZW50IHF1ZXJ5LlxuICAgKi9cbiAgcHVibGljIGNsZWFyUXVlcnkoKSB7XG4gICAgdGhpcy5zZXRRdWVyeShuZXcgU2VhcmNoUXVlcnkoKSk7XG4gIH1cblxuICBwcml2YXRlIGlzTmV3UXVlcnkocXVlcnk6IFNlYXJjaFF1ZXJ5KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHF1ZXJ5LmdldFF1ZXJ5SnNvbigpKSAhPT0gSlNPTi5zdHJpbmdpZnkodGhpcy5xdWVyeS5nZXRRdWVyeUpzb24oKSk7XG4gIH1cblxuICAvKipcbiAgICogdG9nZ2xlcyB0aGUgc2VhcmNobW9kZSBmcm9tIHJlZ3VsYXIgc2VhcmNoIHRvIGV4cGVydCBzZWFyY2ggYW5kIHZpY2UgdmVyc2FcbiAgICovXG4gIHB1YmxpYyB0b2dnbGVFeHBlcnRNb2RlKCkge1xuICAgIGlmICghdGhpcy5xdWVyeS5leHBlcnRNb2RlKSB7XG4gICAgICB0aGlzLmxhc3RRdWVyeSA9IHRoaXMucXVlcnk7XG4gICAgICB0aGlzLnNldERlZmF1bHRBZ2dzKCk7XG4gICAgICB0aGlzLnF1ZXJ5ID0gbmV3IFNlYXJjaFF1ZXJ5KCk7XG4gICAgICB0aGlzLnF1ZXJ5LmV4cGVydE1vZGUgPSB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnF1ZXJ5ID0gdGhpcy5sYXN0UXVlcnk7XG4gICAgfVxuICAgIHRoaXMucXVlcnkuX191cGRhdGVDYXVzZSA9IFNlYXJjaFF1ZXJ5LlVQREFURV9DQVVTRS5UT0dHTEVEX0VYUEVSVE1PREU7XG4gICAgdGhpcy5xdWVyeVNvdXJjZS5uZXh0KHRoaXMucXVlcnkpO1xuICAgIHRoaXMuYWdncmVnYXRlKCk7XG5cbiAgfVxuXG4gIHB1YmxpYyBzZXRUZXJtKHRlcm06IHN0cmluZykge1xuICAgIHRoaXMucXVlcnkudGVybSA9IHRlcm07XG4gICAgdGhpcy5xdWVyeS5fX3VwZGF0ZUNhdXNlID0gU2VhcmNoUXVlcnkuVVBEQVRFX0NBVVNFLlRFUk1fU0VUO1xuICAgIHRoaXMucXVlcnlTb3VyY2UubmV4dCh0aGlzLnF1ZXJ5KTtcbiAgICB0aGlzLmFnZ3JlZ2F0ZSgpO1xuICB9XG5cbiAgcHVibGljIHNldFF1ZXJ5U2NvcGUoc2NvcGU6IFF1ZXJ5U2NvcGUpIHtcbiAgICB0aGlzLnF1ZXJ5LnNjb3BlID0gc2NvcGU7XG4gICAgdGhpcy5xdWVyeVNvdXJjZS5uZXh0KHRoaXMucXVlcnkpO1xuICAgIHRoaXMuYWdncmVnYXRlKCk7XG4gIH1cblxuICAvLyBzZXQgYWdncmVnYXRpb24gcHJvcGVydGllcyB0byBiZSBhcHBsaWVkIHRvIE9OTFkgYWdncmVnYXRlIHNlYXJjaCBxdWVyaWVzXG4gIHB1YmxpYyBzZXRBZ2dzKGFnZ3M6IGFueSwgZXh0ZW5kID0gZmFsc2UpIHtcbiAgICB0aGlzLmFnZ3MgPSBleHRlbmQgPyB7Li4udGhpcy5hZ2dzLCAuLi5hZ2dzfSA6IGFnZ3M7XG4gIH1cblxuICAvKipcbiAgICogVG9nZ2xlcyBhIHR5cGUgZmlsdGVyLlxuICAgKiBAcGFyYW0gdHlwZSAtIG9iamVjdCB0eXBlXG4gICAqL1xuICBwdWJsaWMgdG9nZ2xlUXVlcnlUeXBlKHR5cGU6IE9iamVjdFR5cGUpIHtcbiAgICB0aGlzLnF1ZXJ5LnRvZ2dsZVR5cGUodHlwZSk7XG4gICAgdGhpcy5xdWVyeS5fX3VwZGF0ZUNhdXNlID0gU2VhcmNoUXVlcnkuVVBEQVRFX0NBVVNFLlRPR0dMRURfVFlQRTtcbiAgICB0aGlzLnF1ZXJ5U291cmNlLm5leHQodGhpcy5xdWVyeSk7XG4gICAgdGhpcy5hZ2dyZWdhdGUoU2VhcmNoUXVlcnkuQkFTRV9QQVJBTVMuVFlQRSk7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgcXVlcmllcyB0YXJnZXQgdHlwZXMuXG4gICAqXG4gICAqIEBwYXJhbSB0eXBlcyAtIGFycmF5IG9mIE9iamVjdFR5cGVzXG4gICAqIEBwYXJhbSBzaWxlbnQgSWYgc2V0IHRvIHRydWUgYWdncmVnYXRlIHdvbid0IGJlIGNhbGxlZFxuICAgKi9cbiAgcHVibGljIHNldFF1ZXJ5VHlwZXModHlwZXM6IE9iamVjdFR5cGVbXSwgc2lsZW50PzogYm9vbGVhbikge1xuICAgIHRoaXMucXVlcnkudHlwZXMgPSB0eXBlcztcbiAgICB0aGlzLmFnZ3MgPSB7XG4gICAgICB0eXBlOiB7XG4gICAgICAgIHN1Yjoge1xuICAgICAgICAgIGNvbnRleHRmb2xkZXJ0eXBlOiB7fVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfTtcbiAgICB0aGlzLnF1ZXJ5Ll9fdXBkYXRlQ2F1c2UgPSBTZWFyY2hRdWVyeS5VUERBVEVfQ0FVU0UuVFlQRVNfU0VUO1xuICAgIHRoaXMucXVlcnlTb3VyY2UubmV4dCh0aGlzLnF1ZXJ5KTtcbiAgICBpZiAoIXNpbGVudCkge1xuICAgICAgdGhpcy5hZ2dyZWdhdGUoKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgcXVlcmllcyB0YXJnZXQgY29udGV4dCB0eXBlLlxuICAgKlxuICAgKiBAcGFyYW0gdHlwZSBUaGUgY29udGV4dCB0eXBlIHRvIGJlIHNldCBvciBudWxsIGZvciByZXNldHRpbmdcbiAgICogQHBhcmFtIHNpbGVudCBJZiBzZXQgdG8gdHJ1ZSBhZ2dyZWdhdGUgd29uJ3QgYmUgY2FsbGVkXG4gICAqL1xuICBwdWJsaWMgc2V0Q29udGV4dFR5cGUodHlwZTogT2JqZWN0VHlwZSwgc2lsZW50PzogYm9vbGVhbikge1xuXG4gICAgaWYgKHRoaXMucXVlcnkuY29udGV4dEZvbGRlclR5cGVzLmxlbmd0aCAmJiAhdHlwZSkge1xuICAgICAgLy8gY2xlYXIgY29udGV4dCBmb2xkZXJcbiAgICAgIHRoaXMuZW1pdE5ld0NvbnRleHRGb2xkZXJUeXBlKG51bGwpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5xdWVyeS5jb250ZXh0Rm9sZGVyVHlwZXMubGVuZ3RoICYmIHR5cGUubmFtZSAhPT0gdGhpcy5xdWVyeS5jb250ZXh0Rm9sZGVyVHlwZXNbMF0ubmFtZSkge1xuICAgICAgLy8gZ290IGEgdHlwZSB0byBiZSBzZXQgdXAgdGhhdCBkaWZmZXJzIGZyb20gdGhlIGN1cnJlbnQgb25lXG4gICAgICB0aGlzLmVtaXROZXdDb250ZXh0Rm9sZGVyVHlwZSh0eXBlKTtcbiAgICB9IGVsc2UgaWYgKCF0aGlzLnF1ZXJ5LmNvbnRleHRGb2xkZXJUeXBlcy5sZW5ndGgpIHtcbiAgICAgIC8vIG5vdGhpbmcgc2V0IHVwIHNvIGZhclxuICAgICAgdGhpcy5lbWl0TmV3Q29udGV4dEZvbGRlclR5cGUodHlwZSk7XG4gICAgfVxuICAgIC8vIHRyeWluZyB0byBzZXR1cCB0aGUgc2FtZSB0eXBlIGFzIHRoZSBjdXJyZW50IG9uIHNob3VsZCBub3QgZW1pdCBhIG5ldyB2YWx1ZVxuICB9XG5cbiAgcHJpdmF0ZSBlbWl0TmV3Q29udGV4dEZvbGRlclR5cGUodHlwZSwgc2lsZW50PzogYm9vbGVhbikge1xuICAgIGlmICghdHlwZSAmJiB0aGlzLnF1ZXJ5LmNvbnRleHRGb2xkZXJUeXBlcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5hZ2dzID0ge1xuICAgICAgdHlwZToge1xuICAgICAgICBzdWI6IHtcbiAgICAgICAgICBjb250ZXh0Zm9sZGVydHlwZToge31cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH07XG4gICAgdGhpcy5xdWVyeS5jb250ZXh0Rm9sZGVyVHlwZXMgPSB0eXBlID8gW3R5cGVdIDogW107XG4gICAgdGhpcy5xdWVyeS5fX3VwZGF0ZUNhdXNlID0gU2VhcmNoUXVlcnkuVVBEQVRFX0NBVVNFLkNPTlRFWFRfRk9MREVSX1NFVDtcbiAgICB0aGlzLnF1ZXJ5U291cmNlLm5leHQodGhpcy5xdWVyeSk7XG4gICAgaWYgKCFzaWxlbnQpIHtcbiAgICAgIHRoaXMuYWdncmVnYXRlKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFRvZ2dsZXMgYSBjcmVhdGVkIGZpbHRlci5cbiAgICogQHBhcmFtIGZpbHRlciAtIHRoZSBmaWx0ZXIgdG8gYmUgdG9nZ2xlZFxuICAgKi9cbiAgcHVibGljIHRvZ2dsZVF1ZXJ5RmlsdGVyKGZpbHRlcjogU2VhcmNoRmlsdGVyLCBvdmVycmlkZT86IGJvb2xlYW4pIHtcbiAgICB0aGlzLnF1ZXJ5LnRvZ2dsZUZpbHRlcihmaWx0ZXIsIG92ZXJyaWRlKTtcbiAgICB0aGlzLnF1ZXJ5Ll9fdXBkYXRlQ2F1c2UgPSBTZWFyY2hRdWVyeS5VUERBVEVfQ0FVU0UuVE9HR0xFRF9GSUxURVI7XG4gICAgdGhpcy5xdWVyeVNvdXJjZS5uZXh0KHRoaXMucXVlcnkpO1xuICAgIHRoaXMuYWdncmVnYXRlKGZpbHRlci5wcm9wZXJ0eSk7XG4gIH1cblxuICAvKipcbiAgICogVG9nZ2xlcyBjcmVhdGVkIGZpbHRlcnMgYW5kIGFnZ3JlZ2F0ZXMgdGhlbSB0b2dldGhlci5cbiAgICogQHBhcmFtIGZpbHRlcnMgLSB0aGUgZmlsdGVycyB0byBiZSB0b2dnbGVkXG4gICAqL1xuICBwdWJsaWMgdG9nZ2xlUXVlcnlGaWx0ZXJzKGZpbHRlcnM6IFNlYXJjaEZpbHRlcltdLCBvdmVycmlkZT86IGJvb2xlYW4pIHtcbiAgICBsZXQgYmFzZVBhcmFtID0gJyc7XG4gICAgZmlsdGVycy5mb3JFYWNoKGZpbHRlciA9PiB7XG4gICAgICB0aGlzLnF1ZXJ5LnRvZ2dsZUZpbHRlcihmaWx0ZXIsIG92ZXJyaWRlKTtcbiAgICAgIHRoaXMucXVlcnkuX191cGRhdGVDYXVzZSA9IFNlYXJjaFF1ZXJ5LlVQREFURV9DQVVTRS5UT0dHTEVEX0ZJTFRFUjtcbiAgICAgIGJhc2VQYXJhbSArPSBmaWx0ZXIucHJvcGVydHkgKyAnICc7XG4gICAgfSk7XG5cbiAgICB0aGlzLnF1ZXJ5U291cmNlLm5leHQodGhpcy5xdWVyeSk7XG4gICAgdGhpcy5hZ2dyZWdhdGUoYmFzZVBhcmFtLnRyaW0oKSk7XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBhIGZpbHRlciB0byB0aGUgcXVlcnkuXG4gICAqIEBwYXJhbSBmaWx0ZXIgLSB0aGUgZmlsdGVyIHRvIGJlIGFkZGVkXG4gICAqL1xuICBwdWJsaWMgYWRkUXVlcnlGaWx0ZXIoZmlsdGVyOiBTZWFyY2hGaWx0ZXIpIHtcbiAgICB0aGlzLnF1ZXJ5LmFkZEZpbHRlcihmaWx0ZXIpO1xuICAgIHRoaXMucXVlcnkuX191cGRhdGVDYXVzZSA9IFNlYXJjaFF1ZXJ5LlVQREFURV9DQVVTRS5BRERFRF9GSUxURVI7XG4gICAgdGhpcy5xdWVyeVNvdXJjZS5uZXh0KHRoaXMucXVlcnkpO1xuICAgIHRoaXMuYWdncmVnYXRlKGZpbHRlci5wcm9wZXJ0eSk7XG4gIH1cblxuICAvKipcbiAgICogUmVtb3ZlcyBhIGZpbHRlciB0byB0aGUgcXVlcnkuXG4gICAqIEBwYXJhbSBmaWx0ZXIgLSB0aGUgZmlsdGVyIHRvIGJlIHJlbW92ZWRcbiAgICovXG4gIHB1YmxpYyByZW1vdmVRdWVyeUZpbHRlcihmaWx0ZXI6IFNlYXJjaEZpbHRlcikge1xuICAgIHRoaXMucXVlcnkucmVtb3ZlRmlsdGVyKGZpbHRlci5wcm9wZXJ0eSk7XG4gICAgdGhpcy5xdWVyeS5fX3VwZGF0ZUNhdXNlID0gU2VhcmNoUXVlcnkuVVBEQVRFX0NBVVNFLlJFTU9WRURfRklMVEVSO1xuICAgIHRoaXMucXVlcnlTb3VyY2UubmV4dCh0aGlzLnF1ZXJ5KTtcbiAgICB0aGlzLmFnZ3JlZ2F0ZShmaWx0ZXIucHJvcGVydHkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIGZpbHRlcnMgZm9yIGFuIGluZGV4ZGF0YSBzZWFyY2guXG4gICAqIFNldHRpbmcgdGhlbSB3aWxsIGFsc28gcmVtb3ZlIGFsbCBpbmRleGRhdGEgZmlsdGVycyBzZXQgYmVmb3JlLlxuICAgKlxuICAgKiBAcGFyYW0gZmlsdGVycyAtIHRoZSBmaWx0ZXJzIHRvIGJlIHNldFxuICAgKiBAcGFyYW0gc2lsZW50IElmIHNldCB0byB0cnVlIGFnZ3JlZ2F0ZSB3b24ndCBiZSBjYWxsZWRcbiAgICovXG4gIHB1YmxpYyBzZXRJbmRleFNlYXJjaFF1ZXJ5RmlsdGVycyhmaWx0ZXJzOiBTZWFyY2hGaWx0ZXJbXSwgc2lsZW50PzogYm9vbGVhbikge1xuXG4gICAgLy8gcmVtb3ZlIHByZXZpb3VzIGZpbHRlcnMgKGFsbCBmaWx0ZXJzIHRoYXQgYXJlIG5vdCBiYXNlcGFyYW0gZmlsdGVycylcbiAgICB0aGlzLnF1ZXJ5LmZpbHRlcnMgPSB0aGlzLnF1ZXJ5LmZpbHRlcnMuZmlsdGVyKChmKSA9PiB0aGlzLmlzQmFzZVBhcmFtRmlsdGVyKGYpKTtcbiAgICBmb3IgKGxldCBmIG9mIGZpbHRlcnMpIHtcbiAgICAgIHRoaXMucXVlcnkuYWRkRmlsdGVyKGYpO1xuICAgIH1cbiAgICBpZiAoIXNpbGVudCkge1xuICAgICAgdGhpcy5hZ2dyZWdhdGUoKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0SW5kZXhTZWFyY2hRdWVyeUZpbHRlcnMocXVlcnk/OiBTZWFyY2hRdWVyeSk6IFNlYXJjaEZpbHRlcltdIHtcbiAgICBsZXQgcSA9IHF1ZXJ5IHx8IHRoaXMucXVlcnk7XG4gICAgcmV0dXJuIHEuZmlsdGVycy5maWx0ZXIoKGYpID0+ICF0aGlzLmlzQmFzZVBhcmFtRmlsdGVyKGYpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmVzIHdoZXRoZXIgb3Igbm90IHRoZSBwcm92aWRlZCBzZWFyY2ggZmlsdGVyIGJlbG9uZ3MgdG8gYSBiYXNlIHBhcmFtLlxuICAgKlxuICAgKiBAcGFyYW0gZmlsdGVyIC0gdGhlIGZpbHRlciB0byBiZSBjaGVja2VkXG4gICAqL1xuICBwdWJsaWMgaXNCYXNlUGFyYW1GaWx0ZXIoZmlsdGVyOiBTZWFyY2hGaWx0ZXIpOiBib29sZWFuIHtcbiAgICAvL3JldHVybiBPYmplY3QudmFsdWVzKFNlYXJjaFF1ZXJ5LkJBU0VfUEFSQU1TKS5zb21lKChicCkgPT4gZmlsdGVyLnByb3BlcnR5ID09PSBicCk7XG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKFNlYXJjaFF1ZXJ5LkJBU0VfUEFSQU1TKS5zb21lKChicEtleSkgPT4gZmlsdGVyLnByb3BlcnR5ID09PSBTZWFyY2hRdWVyeS5CQVNFX1BBUkFNU1ticEtleV0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEV4ZWN1dGVzIHRoZSBjdXJyZW50IHF1ZXJ5IGFzIGFnZ3JlZ2F0ZSBzZWFyY2hcbiAgICovXG4gIHB1YmxpYyBhZ2dyZWdhdGUoYmFzZVBhcmFtID0gJycpIHtcblxuICAgIGNvbnN0IGFnZ1F1ZXJ5ID0ge2FnZ3M6IHRoaXMuYWdncywgLi4udGhpcy5xdWVyeS5nZXRRdWVyeUpzb24oKX07XG4gICAgLy8gY29tcGFyZSB0aGUgY2FsbCB0byBiZSBtYWRlIHdpdGggYSBmb3JtZXIgcmVxdWVzdFxuICAgIGlmICh0aGlzLmxhc3RBZ2dDYWxsQ29tcGFyYXRvciAhPT0gSlNPTi5zdHJpbmdpZnkoYWdnUXVlcnkpKSB7XG4gICAgICB0aGlzLmxhc3RBZ2dDYWxsQ29tcGFyYXRvciA9IEpTT04uc3RyaW5naWZ5KGFnZ1F1ZXJ5KTtcbiAgICAgIHRoaXMuZ2V0U2VhcmNoU3RhdGUoYWdnUXVlcnkpXG4gICAgICAgIC5zdWJzY3JpYmUoKHF1ZXJ5U3RhdGU6IFNlYXJjaFN0YXRlKSA9PiB7XG4gICAgICAgICAgcXVlcnlTdGF0ZS5sYXN0Q2hhbmdlID0gYmFzZVBhcmFtO1xuICAgICAgICAgIHRoaXMucXVlcnlTdGF0ZSA9IHF1ZXJ5U3RhdGU7XG4gICAgICAgICAgdGhpcy5xdWVyeVN0YXRlU291cmNlLm5leHQodGhpcy5xdWVyeVN0YXRlKTtcbiAgICAgICAgfSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlc2V0IHRoZSBxdWVyeVxuICAgKi9cbiAgcHVibGljIHJlc2V0KHNpbGVudD86IGJvb2xlYW4pIHtcbiAgICB0aGlzLnF1ZXJ5ID0gbmV3IFNlYXJjaFF1ZXJ5KCk7XG4gICAgdGhpcy5zZXREZWZhdWx0QWdncygpO1xuICAgIHRoaXMucXVlcnlTb3VyY2UubmV4dCh0aGlzLnF1ZXJ5KTtcbiAgICBpZiAoIXNpbGVudCkge1xuICAgICAgdGhpcy5hZ2dyZWdhdGUoKTtcbiAgICB9XG4gIH1cblxuICBleGl0SW5kZXhkYXRhU2VhcmNoKCkge1xuICAgIHRoaXMuc2V0SW5kZXhTZWFyY2hRdWVyeUZpbHRlcnMoW10sIHRydWUpO1xuICAgIHRoaXMuc2V0UXVlcnlUeXBlcyhbXSwgdHJ1ZSk7XG4gICAgdGhpcy5zZXRDb250ZXh0VHlwZShudWxsLCB0cnVlKTtcbiAgICB0aGlzLmFnZ3JlZ2F0ZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEV4ZWN1dGVzIHRoZSBjdXJyZW50IHF1ZXJ5IGFzIGFnZ3JlZ2F0ZSBzZWFyY2hcbiAgICovXG4gIHB1YmxpYyBnZXRTZWFyY2hTdGF0ZShxdWVyeUpzb246IGFueSkge1xuICAgIHJldHVybiB0aGlzLnNlYXJjaFNlcnZpY2UuZ2V0U2VhcmNoU3RhdGUocXVlcnlKc29uKTtcbiAgfVxuXG4gIHB1YmxpYyBhdXRvY29tcGxldGUodGVybTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuc2VhcmNoU2VydmljZS5hdXRvY29tcGxldGUodGVybSk7XG4gIH1cblxuICAvKipcbiAgICogRmluZHMgdGhlIG9iamVjdCB0eXBlIGVsZW1lbnQgaW5zaWRlIG9mIHRoZSBxdWVyaWVzIHRhcmdldCB0eXBlc1xuICAgKiBmb3IgYSBmb3JtIGVsZW1lbnRzIG5hbWUuIFVzZWQgZS5nLiBmb3IgdGhlIHNlYXJjaCBzdW1tYXJ5IHBhbmVsLlxuICAgKlxuICAgKiBAcGFyYW0gZm9ybUVsZW1lbnROYW1lIC0gdGhlIG5hbWUgb2YgdGhlIGZvcm0gZWxlbWVudFxuICAgKiBAcmV0dXJuIHRoZSBvYmplY3QgdHlwZSBlbGVtZW50IG1hdGNoaW5nIHRoZSBmb3JtIGVsZW1lbnRzIG5hbWVcbiAgICovXG4gIHB1YmxpYyBnZXRUYXJnZXRUeXBlRWxlbWVudEJ5TmFtZShmb3JtRWxlbWVudE5hbWU6IHN0cmluZyk6IGFueSB7XG4gICAgbGV0IGkgPSAwO1xuICAgIGxldCBtYXRjaDtcbiAgICB3aGlsZSAoIW1hdGNoICYmIGkgPCB0aGlzLnF1ZXJ5LnR5cGVzLmxlbmd0aCkge1xuICAgICAgbWF0Y2ggPSB0aGlzLnF1ZXJ5LnR5cGVzW2ldLmVsZW1lbnRzLmZpbmQoKGVsZW1lbnQpID0+IGVsZW1lbnQucW5hbWUgPT09IGZvcm1FbGVtZW50TmFtZSk7XG4gICAgICBpKys7XG4gICAgfVxuICAgIHJldHVybiBtYXRjaDtcbiAgfVxufVxuIl19
|
|
407
|
+
}], ctorParameters: () => [{ type: i1.SearchService }, { type: i1.EventService }, { type: i1.SystemService }, { type: i2.TranslateService }] });
|
|
408
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLXNlYXJjaC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9lby1mcmFtZXdvcmstY29yZS9zZWFyY2gvYXBwLXNlYXJjaC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxJQUFJLElBQUksY0FBYyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQWEsTUFBTSxNQUFNLENBQUM7QUFDeEYsT0FBTyxFQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDekQsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQ1MsV0FBVyxFQUFFLFdBQVcsRUFDRyxVQUFVLEVBQUUsS0FBSyxFQUMzRCxNQUFNLGNBQWMsQ0FBQzs7OztBQUd0Qjs7OztHQUlHO0FBRUgsTUFBTSxPQUFPLGdCQUFnQjtJQTJCM0IsWUFBb0IsYUFBNEIsRUFDdEMsWUFBMEIsRUFDMUIsTUFBcUIsRUFDckIsU0FBMkI7UUFIakIsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDdEMsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsV0FBTSxHQUFOLE1BQU0sQ0FBZTtRQUNyQixjQUFTLEdBQVQsU0FBUyxDQUFrQjtRQTVCN0IsVUFBSyxHQUFHLElBQUksV0FBVyxFQUFFLENBQUM7UUFFMUIsY0FBUyxHQUFHLElBQUksV0FBVyxFQUFFLENBQUM7UUFDOUIsZUFBVSxHQUFHLElBQUksV0FBVyxFQUFFLENBQUM7UUFLdkMseUVBQXlFO1FBQ3pFLHFKQUFxSjtRQUNySixvR0FBb0c7UUFDNUYsZ0JBQVcsR0FBRyxJQUFJLGFBQWEsQ0FBYyxDQUFDLENBQUMsQ0FBQztRQUNoRCxxQkFBZ0IsR0FBRyxJQUFJLGVBQWUsQ0FBYyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7UUFFN0UseUZBQXlGO1FBQ3pGLDZGQUE2RjtR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b2JzZXJ2YWJsZUZyb20sIEJlaGF2aW9yU3ViamVjdCwgUmVwbGF5U3ViamVjdCwgT2JzZXJ2YWJsZX0gZnJvbSAncnhqcyc7XG5pbXBvcnQge2dyb3VwQnksIHJlZHVjZSwgbWVyZ2VNYXB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7SW5qZWN0YWJsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBTZWFyY2hGaWx0ZXIsIFNlYXJjaFF1ZXJ5LCBTZWFyY2hTdGF0ZSwgU3lzdGVtU2VydmljZSxcbiAgT2JqZWN0VHlwZSwgU2VhcmNoU2VydmljZSwgRXZlbnRTZXJ2aWNlLCBFbmFpb0V2ZW50LCBVdGlscywgUXVlcnlTY29wZVxufSBmcm9tICdAZW8tc2RrL2NvcmUnO1xuaW1wb3J0IHtUcmFuc2xhdGVTZXJ2aWNlfSBmcm9tIFwiQG5neC10cmFuc2xhdGUvY29yZVwiO1xuXG4vKipcbiAqIEFwcFNlYXJjaFNlcnZpY2UgaXMgdGhlIGFwcHMgbWFpbiBlbnRyeSBwb2ludCBmb3Igc2VhcmNoaW5nICh1c2VkIGJ5IHRoZSBhcHBCYXJTZWFyY2ggY29tcG9uZW50KS5cbiAqIEl0IHByb3ZpZGVzIGFuIGBxdWVyeSRgIG9ic2VydmFibGUgY29tcG9uZW50cyBjYW4gc3Vic2NyaWJlIHRvLCB0b1xuICogc3RheSBpbiB0b3VjaCB3aXRoIHVwZGF0ZXMgdG8gdGhlIHF1ZXJ5LlxuICovXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQXBwU2VhcmNoU2VydmljZSB7XG5cbiAgcHJpdmF0ZSBxdWVyeSA9IG5ldyBTZWFyY2hRdWVyeSgpO1xuICBwcml2YXRlIGFnZ3M6IGFueTtcbiAgcHJpdmF0ZSBsYXN0UXVlcnkgPSBuZXcgU2VhcmNoUXVlcnkoKTtcbiAgcHJpdmF0ZSBxdWVyeVN0YXRlID0gbmV3IFNlYXJjaFN0YXRlKCk7XG4gIC8vIEhvbGRzIHRoZSBsYXN0IGFnZ3JlZ2F0aW9uIHByb3BlcnRpZXMgc2VudCB0byB0aGUgc2VydmVyXG4gIC8vIFVzZWQgZm9yIHByZXZlbnRpbmcgcmVkdW5kYW50IGNhbGxzXG4gIHByaXZhdGUgbGFzdEFnZ0NhbGxDb21wYXJhdG9yOiBzdHJpbmc7XG5cbiAgLy8gU3ViamVjdCBob2xkaW5nIHRoZSBjdXJyZW50IHF1ZXJ5IChpbml0aWFsIHZhbHVlIGlzIGEgbmV3IFNlYXJjaFF1ZXJ5KVxuICAvLyBAc2VlOiBodHRwOi8vYmxvZy5hbmd1bGFyLXVuaXZlcnNpdHkuaW8vaG93LXRvLWJ1aWxkLWFuZ3VsYXIyLWFwcHMtdXNpbmctcnhqcy1vYnNlcnZhYmxlLWRhdGEtc2VydmljZXMtcGl0ZmFsbHMtdG8tYXZvaWQvI3J4anNzdWJqZWN0YW5kaG93dG91c2VpdFxuICAvLyB0b2RvOiBtYXliZSBhZGQgc3VwcG9ydCBmb3IgaG9sZGluZyBhIHF1ZXJ5IGhpc3RvcnksIHNvIHRoZSB1c2VyIGNhbiByZWxvYWQgb2xkZXIgcXVlcmllcyBhcyB3ZWxsXG4gIHByaXZhdGUgcXVlcnlTb3VyY2UgPSBuZXcgUmVwbGF5U3ViamVjdDxTZWFyY2hRdWVyeT4oMSk7XG4gIHByaXZhdGUgcXVlcnlTdGF0ZVNvdXJjZSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8U2VhcmNoU3RhdGU+KHRoaXMucXVlcnlTdGF0ZSk7XG5cbiAgLy8gRXhwb3NlIGFuIG9ic2VydmFibGUgaW5zdGVhZCBvZiB0aGUgc3ViamVjdCBpdHNlbGYgdG8gcHJldmVudCB0aGUgc2VydmljZSBjbGllbnRzIGZyb21cbiAgLy8gdGhlbXNlbHZlcyBlbWl0dGluZyBzdG9yZSB2YWx1ZXMgZGlyZWN0bHkgaW5zdGVhZCBvZiBjYWxsaW5nIGFjdGlvbiBtZXRob2RzLCBhbmQgdGhlcmVmb3JlXG4gIC8vIGJ5cGFzc2luZyB0aGUgc3RvcmUuXG4gIHB1YmxpYyBxdWVyeSQ6IE9ic2VydmFibGU8U2VhcmNoUXVlcnk+ID0gdGhpcy5xdWVyeVNvdXJjZS5hc09ic2VydmFibGUoKTtcbiAgLy8gU2VhcmNoIHNlcnZpY2UgYWxzbyBleHBvc2VzIGFuIG9ic2VydmFibGUgdGhhdCBlbWl0cyB0aGUgc3RhdGUgb2YgdGhlIGN1cnJlbnQgcXVlcnkuXG4gIC8vIFdlIHNlcGFyYXRlIHRoZSBzdGF0ZSBvZiB0aGUgcXVlcnkgZnJvbSB0aGUgcXVlcnkgaXRzZWxmIGFzIG90aGVyd2lzZSBjaGFuZ2hpbmcgdGhlIHF1ZXJpZXNcbiAgLy8gc3RhdGUgd2lsbCB0cmlnZ2VyIGFsbCBzdWJzY3JpYmVycyBvZiB0aGUgcXVlcnkgb2JzZXJ2YWxlIGFuZCBsZWFkIHRvIHVuZGVzaXJlZCBiZWhhdmlvdXJcbiAgcHVibGljIHF1ZXJ5U3RhdGUkOiBPYnNlcnZhYmxlPFNlYXJjaFN0YXRlPiA9IHRoaXMucXVlcnlTdGF0ZVNvdXJjZS5hc09ic2VydmFibGUoKTtcbiAgcHVibGljIG9iamVjdFR5cGVHcm91cHMgPSBbXTtcbiAgcHVibGljIHR5cGVzQWxsb3dlZFVuZGVyU3lzcm9vdCA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgc2VhcmNoU2VydmljZTogU2VhcmNoU2VydmljZSxcbiAgICBwcml2YXRlIGV2ZW50U2VydmljZTogRXZlbnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgc3lzdGVtOiBTeXN0ZW1TZXJ2aWNlLFxuICAgIHByaXZhdGUgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlKSB7XG5cbiAgICB0aGlzLnNldERlZmF1bHRBZ2dzKCk7XG4gICAgdGhpcy5ldmVudFNlcnZpY2Uub24oRW5haW9FdmVudC5MT0dPVVQpXG4gICAgICAuc3Vic2NyaWJlKHJlcyA9PiB7XG4gICAgICAgIHRoaXMucmVzZXQodHJ1ZSk7XG4gICAgICB9KTtcblxuICAgIHRoaXMucXVlcnlTb3VyY2UubmV4dCh0aGlzLnF1ZXJ5KTtcblxuICAgIC8vIEZldGNoIG9iamVjdCB0eXBlcyBhbmQgZ3JvdXBzIHRoYXQgc2VydmUgYXMgc2VhcmNoIGZpbHRlciBwYXJhbXMuXG4gICAgLy8gVGhlc2UgZ3JvdXBzIGFyZSBwcm92aWRlZCB0aHJvdWdoIHRoZSBzZXJ2aWNlcyBgb2JqZWN0VHlwZUdyb3Vwc2AgcHJvcGVydHkuXG4gICAgdGhpcy5zeXN0ZW0uc3lzdGVtJC5zdWJzY3JpYmUoKHN5c3RlbURlZmluaXRpb24pID0+IHtcblxuICAgICAgdGhpcy50eXBlc0FsbG93ZWRVbmRlclN5c3Jvb3QgPSBzeXN0ZW1EZWZpbml0aW9uLnR5cGVzLmZpbHRlcih0eXBlID0+IHR5cGUucGFyZW50dHlwZXMuaW5jbHVkZXMoJ3N5c3Jvb3QnKSk7XG5cbiAgICAgIC8vIHRyYW5zbGF0ZXMgbGFiZWxzIGZvciAnc3lzZG1zY29udGVudHRlbXBsYXRlJyBvYmplY3QgdHlwZXMuXG4gICAgICB0aGlzLnR5cGVzQWxsb3dlZFVuZGVyU3lzcm9vdCA9IHRoaXMudXBkYXRlU3lzRG1zQ29udGVudFRlbXBsYXRlTGFiZWwoc3lzdGVtRGVmaW5pdGlvbi50eXBlcyk7XG5cbiAgICAgIGxldCBncm91cHMgPSBbXTtcbiAgICAgIG9ic2VydmFibGVGcm9tKHN5c3RlbURlZmluaXRpb24udHlwZXMpXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIGdyb3VwQnkoKHR5cGU6IGFueSkgPT4gdHlwZS5ncm91cCB8fCAnMCcpLFxuICAgICAgICAgIG1lcmdlTWFwKGcgPT4gZy5waXBlKHJlZHVjZSgoYWNjLCBjdXJyKSA9PiBbLi4uYWNjLCBjdXJyXSwgW10pKSlcbiAgICAgICAgKVxuICAgICAgICAuc3Vic2NyaWJlKG90ZyA9PiB7XG4gICAgICAgICAgZ3JvdXBzLnB1c2goe1xuICAgICAgICAgICAgbGFiZWw6IG90Z1swXS5ncm91cCB8fCAnMCcsXG4gICAgICAgICAgICB0eXBlczogdGhpcy5zb3J0T2JqZWN0VHlwZUdyb3VwKG90ZylcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICB0aGlzLm9iamVjdFR5cGVHcm91cHMgPSBncm91cHMuc29ydChVdGlscy5zb3J0VmFsdWVzKCdsYWJlbCcpKTtcbiAgICB9KTtcbiAgfVxuXG4gIHJlc2V0QWdncygpIHtcbiAgICB0aGlzLnNldERlZmF1bHRBZ2dzKCk7XG4gICAgdGhpcy5sYXN0QWdnQ2FsbENvbXBhcmF0b3IgPSBudWxsO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXREZWZhdWx0QWdncygpIHtcbiAgICB0aGlzLmFnZ3MgPSB7XG4gICAgICB0eXBlOiB7fVxuICAgIH07XG4gIH1cblxuICAvLyBoZWxwZXIgbWV0aG9kIGZvciBzb3J0aW5nIHRoZSBlbnRyaWVzIG9mIGFuIG9iamVjdCB0eXBlIGdyb3VwXG4gIHByaXZhdGUgc29ydE9iamVjdFR5cGVHcm91cCh0eXBlcykge1xuICAgIHJldHVybiB0eXBlcy5zb3J0KChhLCBiKSA9PiB7XG5cbiAgICAgIGlmIChhLmlzQ29udGV4dEZvbGRlciAmJiAhYi5pc0NvbnRleHRGb2xkZXIpIHtcbiAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgfVxuICAgICAgaWYgKCFhLmlzQ29udGV4dEZvbGRlciAmJiBiLmlzQ29udGV4dEZvbGRlcikge1xuICAgICAgICByZXR1cm4gMTtcbiAgICAgIH1cbiAgICAgIGlmIChhLmlzRm9sZGVyICYmICFiLmlzRm9sZGVyKSB7XG4gICAgICAgIHJldHVybiAtMTtcbiAgICAgIH1cbiAgICAgIGlmICghYS5pc0ZvbGRlciAmJiBiLmlzRm9sZGVyKSB7XG4gICAgICAgIHJldHVybiAxO1xuICAgICAgfVxuICAgICAgaWYgKGEuaXNGb2xkZXIgJiYgYi5pc0ZvbGRlcikge1xuICAgICAgICByZXR1cm4gVXRpbHMuc29ydFZhbHVlcygnbGFiZWwnKS5jYWxsKHRoaXMsIGEsIGIpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIFV0aWxzLnNvcnRWYWx1ZXMoJ2xhYmVsJykuY2FsbCh0aGlzLCBhLCBiKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8vIEV4dGVuZHMgdGhlIG9iamVjdFR5cGVzR3JvdXBzIGJ5IHRoZSBlbGVtZW50cyBmb3IgZWFjaCBvYmplY3QgdHlwZVxuICAvLyBVc2VkIGluIGV4cGVydCBzZWFyY2ggbW9kZVxuICBwdWJsaWMgYnVpbGRUeXBlR3JvdXBUcmVlKCkge1xuXG4gICAgbGV0IGdUcmVlID0gW107XG4gICAgbGV0IGkgPSAwO1xuICAgIGZvciAobGV0IGdyb3VwIG9mIHRoaXMub2JqZWN0VHlwZUdyb3Vwcykge1xuICAgICAgbGV0IGcgPSB7XG4gICAgICAgIGlkOiBpKyssXG4gICAgICAgIGxhYmVsOiBncm91cC5sYWJlbCxcbiAgICAgICAgdHJlZTogW11cbiAgICAgIH07XG4gICAgICBsZXQgdHlwZXMgPSBbXTtcbiAgICAgIGZvciAobGV0IG9iamVjdFR5cGUgb2YgZ3JvdXAudHlwZXMpIHtcblxuICAgICAgICBsZXQgdCA9IHtcbiAgICAgICAgICBpZDogb2JqZWN0VHlwZS5pZCxcbiAgICAgICAgICBsYWJlbDogb2JqZWN0VHlwZS5sYWJlbCxcbiAgICAgICAgICBjaGlsZHJlbjogW11cbiAgICAgICAgfTtcbiAgICAgICAgbGV0IGNoaWxkcmVuID0gW107XG4gICAgICAgIGZvciAobGV0IGVsIG9mIG9iamVjdFR5cGUuZWxlbWVudHMpIHtcbiAgICAgICAgICBjaGlsZHJlbi5wdXNoKHtcbiAgICAgICAgICAgIGxhYmVsOiBlbC5sYWJlbCxcbiAgICAgICAgICAgIHR5cGU6IGVsLnR5cGUsXG4gICAgICAgICAgICBkYXRhOiBlbC5xbmFtZVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIC8vIHNvcnQgYnkgbGFiZWxcbiAgICAgICAgdC5jaGlsZHJlbiA9IGNoaWxkcmVuLnNvcnQoVXRpbHMuc29ydFZhbHVlcygnbGFiZWwnKSk7XG4gICAgICAgIHR5cGVzLnB1c2godCk7XG4gICAgICB9XG4gICAgICBnLnRyZWUgPSB0eXBlcy5zb3J0KFV0aWxzLnNvcnRWYWx1ZXMoJ2xhYmVsJykpO1xuXG5cbiAgICAgIGdUcmVlLnB1c2goZyk7XG4gICAgfVxuICAgIHJldHVybiBnVHJlZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBPdmVycmlkZSB0aGUgY3VycmVudCBxdWVyeSBieSBhIGRpZmZlcmVudCBvbmUuXG4gICAqIFRoaXMgY291bGQgYmUgZG9uZSBieSBmb3IgZXhhbXBsZSBsb2FkaW5nIGEgc3RvcmVkIHF1ZXJ5LlxuICAgKlxuICAgKiBAcGFyYW0gcXVlcnkgLSB0aGUgcXVlcnkgdGhhdCBzaG91bGQgcmVwbGFjZSB0aGUgY3VycmVudCBxdWVyeSwgdGhpcyBtYXkgYmUgZWl0aGVyIGEgU2VhcmNoUXVlcnkgaW5zdGFuY2UsXG4gICAqIGEgSlNPTiBzdHJpbmcgb2YgYW4gb2JqZWN0IG1hdGNoaW5nIHRoZSBzZWFyY2ggYXBpXG4gICAqL1xuICBwdWJsaWMgc2V0UXVlcnkocXVlcnk6IFNlYXJjaFF1ZXJ5KSB7XG4gICAgaWYgKHRoaXMuaXNOZXdRdWVyeShxdWVyeSkpIHtcbiAgICAgIHRoaXMuc2V0RGVmYXVsdEFnZ3MoKTtcbiAgICAgIHRoaXMucXVlcnkgPSBxdWVyeTtcbiAgICAgIHRoaXMucXVlcnlTb3VyY2UubmV4dCh0aGlzLnF1ZXJ5KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmVzZXRzIHRoZSBjdXJyZW50IHF1ZXJ5LlxuICAgKi9cbiAgcHVibGljIGNsZWFyUXVlcnkoKSB7XG4gICAgdGhpcy5zZXRRdWVyeShuZXcgU2VhcmNoUXVlcnkoKSk7XG4gIH1cblxuICBwcml2YXRlIGlzTmV3UXVlcnkocXVlcnk6IFNlYXJjaFF1ZXJ5KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHF1ZXJ5LmdldFF1ZXJ5SnNvbigpKSAhPT0gSlNPTi5zdHJpbmdpZnkodGhpcy5xdWVyeS5nZXRRdWVyeUpzb24oKSk7XG4gIH1cblxuICAvKipcbiAgICogdG9nZ2xlcyB0aGUgc2VhcmNobW9kZSBmcm9tIHJlZ3VsYXIgc2VhcmNoIHRvIGV4cGVydCBzZWFyY2ggYW5kIHZpY2UgdmVyc2FcbiAgICovXG4gIHB1YmxpYyB0b2dnbGVFeHBlcnRNb2RlKCkge1xuICAgIGlmICghdGhpcy5xdWVyeS5leHBlcnRNb2RlKSB7XG4gICAgICB0aGlzLmxhc3RRdWVyeSA9IHRoaXMucXVlcnk7XG4gICAgICB0aGlzLnNldERlZmF1bHRBZ2dzKCk7XG4gICAgICB0aGlzLnF1ZXJ5ID0gbmV3IFNlYXJjaFF1ZXJ5KCk7XG4gICAgICB0aGlzLnF1ZXJ5LmV4cGVydE1vZGUgPSB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnF1ZXJ5ID0gdGhpcy5sYXN0UXVlcnk7XG4gICAgfVxuICAgIHRoaXMucXVlcnkuX191cGRhdGVDYXVzZSA9IFNlYXJjaFF1ZXJ5LlVQREFURV9DQVVTRS5UT0dHTEVEX0VYUEVSVE1PREU7XG4gICAgdGhpcy5xdWVyeVNvdXJjZS5uZXh0KHRoaXMucXVlcnkpO1xuICAgIHRoaXMuYWdncmVnYXRlKCk7XG5cbiAgfVxuXG4gIHB1YmxpYyBzZXRUZXJtKHRlcm06IHN0cmluZykge1xuICAgIHRoaXMucXVlcnkudGVybSA9IHRlcm07XG4gICAgdGhpcy5xdWVyeS5fX3VwZGF0ZUNhdXNlID0gU2VhcmNoUXVlcnkuVVBEQVRFX0NBVVNFLlRFUk1fU0VUO1xuICAgIHRoaXMucXVlcnlTb3VyY2UubmV4dCh0aGlzLnF1ZXJ5KTtcbiAgICB0aGlzLmFnZ3JlZ2F0ZSgpO1xuICB9XG5cbiAgcHVibGljIHNldFF1ZXJ5U2NvcGUoc2NvcGU6IFF1ZXJ5U2NvcGUpIHtcbiAgICB0aGlzLnF1ZXJ5LnNjb3BlID0gc2NvcGU7XG4gICAgdGhpcy5xdWVyeVNvdXJjZS5uZXh0KHRoaXMucXVlcnkpO1xuICAgIHRoaXMuYWdncmVnYXRlKCk7XG4gIH1cblxuICAvLyBzZXQgYWdncmVnYXRpb24gcHJvcGVydGllcyB0byBiZSBhcHBsaWVkIHRvIE9OTFkgYWdncmVnYXRlIHNlYXJjaCBxdWVyaWVzXG4gIHB1YmxpYyBzZXRBZ2dzKGFnZ3M6IGFueSwgZXh0ZW5kID0gZmFsc2UpIHtcbiAgICB0aGlzLmFnZ3MgPSBleHRlbmQgPyB7Li4udGhpcy5hZ2dzLCAuLi5hZ2dzfSA6IGFnZ3M7XG4gIH1cblxuICAvKipcbiAgICogVG9nZ2xlcyBhIHR5cGUgZmlsdGVyLlxuICAgKiBAcGFyYW0gdHlwZSAtIG9iamVjdCB0eXBlXG4gICAqL1xuICBwdWJsaWMgdG9nZ2xlUXVlcnlUeXBlKHR5cGU6IE9iamVjdFR5cGUpIHtcbiAgICB0aGlzLnF1ZXJ5LnRvZ2dsZVR5cGUodHlwZSk7XG4gICAgdGhpcy5xdWVyeS5fX3VwZGF0ZUNhdXNlID0gU2VhcmNoUXVlcnkuVVBEQVRFX0NBVVNFLlRPR0dMRURfVFlQRTtcbiAgICB0aGlzLnF1ZXJ5U291cmNlLm5leHQodGhpcy5xdWVyeSk7XG4gICAgdGhpcy5hZ2dyZWdhdGUoU2VhcmNoUXVlcnkuQkFTRV9QQVJBTVMuVFlQRSk7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgcXVlcmllcyB0YXJnZXQgdHlwZXMuXG4gICAqXG4gICAqIEBwYXJhbSB0eXBlcyAtIGFycmF5IG9mIE9iamVjdFR5cGVzXG4gICAqIEBwYXJhbSBzaWxlbnQgSWYgc2V0IHRvIHRydWUgYWdncmVnYXRlIHdvbid0IGJlIGNhbGxlZFxuICAgKi9cbiAgcHVibGljIHNldFF1ZXJ5VHlwZXModHlwZXM6IE9iamVjdFR5cGVbXSwgc2lsZW50PzogYm9vbGVhbikge1xuICAgIHRoaXMucXVlcnkudHlwZXMgPSB0eXBlcztcbiAgICB0aGlzLmFnZ3MgPSB7XG4gICAgICB0eXBlOiB7XG4gICAgICAgIHN1Yjoge1xuICAgICAgICAgIGNvbnRleHRmb2xkZXJ0eXBlOiB7fVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfTtcbiAgICB0aGlzLnF1ZXJ5Ll9fdXBkYXRlQ2F1c2UgPSBTZWFyY2hRdWVyeS5VUERBVEVfQ0FVU0UuVFlQRVNfU0VUO1xuICAgIHRoaXMucXVlcnlTb3VyY2UubmV4dCh0aGlzLnF1ZXJ5KTtcbiAgICBpZiAoIXNpbGVudCkge1xuICAgICAgdGhpcy5hZ2dyZWdhdGUoKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgcXVlcmllcyB0YXJnZXQgY29udGV4dCB0eXBlLlxuICAgKlxuICAgKiBAcGFyYW0gdHlwZSBUaGUgY29udGV4dCB0eXBlIHRvIGJlIHNldCBvciBudWxsIGZvciByZXNldHRpbmdcbiAgICogQHBhcmFtIHNpbGVudCBJZiBzZXQgdG8gdHJ1ZSBhZ2dyZWdhdGUgd29uJ3QgYmUgY2FsbGVkXG4gICAqL1xuICBwdWJsaWMgc2V0Q29udGV4dFR5cGUodHlwZTogT2JqZWN0VHlwZSwgc2lsZW50PzogYm9vbGVhbikge1xuXG4gICAgaWYgKHRoaXMucXVlcnkuY29udGV4dEZvbGRlclR5cGVzLmxlbmd0aCAmJiAhdHlwZSkge1xuICAgICAgLy8gY2xlYXIgY29udGV4dCBmb2xkZXJcbiAgICAgIHRoaXMuZW1pdE5ld0NvbnRleHRGb2xkZXJUeXBlKG51bGwpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5xdWVyeS5jb250ZXh0Rm9sZGVyVHlwZXMubGVuZ3RoICYmIHR5cGUubmFtZSAhPT0gdGhpcy5xdWVyeS5jb250ZXh0Rm9sZGVyVHlwZXNbMF0ubmFtZSkge1xuICAgICAgLy8gZ290IGEgdHlwZSB0byBiZSBzZXQgdXAgdGhhdCBkaWZmZXJzIGZyb20gdGhlIGN1cnJlbnQgb25lXG4gICAgICB0aGlzLmVtaXROZXdDb250ZXh0Rm9sZGVyVHlwZSh0eXBlKTtcbiAgICB9IGVsc2UgaWYgKCF0aGlzLnF1ZXJ5LmNvbnRleHRGb2xkZXJUeXBlcy5sZW5ndGgpIHtcbiAgICAgIC8vIG5vdGhpbmcgc2V0IHVwIHNvIGZhclxuICAgICAgdGhpcy5lbWl0TmV3Q29udGV4dEZvbGRlclR5cGUodHlwZSk7XG4gICAgfVxuICAgIC8vIHRyeWluZyB0byBzZXR1cCB0aGUgc2FtZSB0eXBlIGFzIHRoZSBjdXJyZW50IG9uIHNob3VsZCBub3QgZW1pdCBhIG5ldyB2YWx1ZVxuICB9XG5cbiAgcHJpdmF0ZSBlbWl0TmV3Q29udGV4dEZvbGRlclR5cGUodHlwZSwgc2lsZW50PzogYm9vbGVhbikge1xuICAgIGlmICghdHlwZSAmJiB0aGlzLnF1ZXJ5LmNvbnRleHRGb2xkZXJUeXBlcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5hZ2dzID0ge1xuICAgICAgdHlwZToge1xuICAgICAgICBzdWI6IHtcbiAgICAgICAgICBjb250ZXh0Zm9sZGVydHlwZToge31cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH07XG4gICAgdGhpcy5xdWVyeS5jb250ZXh0Rm9sZGVyVHlwZXMgPSB0eXBlID8gW3R5cGVdIDogW107XG4gICAgdGhpcy5xdWVyeS5fX3VwZGF0ZUNhdXNlID0gU2VhcmNoUXVlcnkuVVBEQVRFX0NBVVNFLkNPTlRFWFRfRk9MREVSX1NFVDtcbiAgICB0aGlzLnF1ZXJ5U291cmNlLm5leHQodGhpcy5xdWVyeSk7XG4gICAgaWYgKCFzaWxlbnQpIHtcbiAgICAgIHRoaXMuYWdncmVnYXRlKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFRvZ2dsZXMgYSBjcmVhdGVkIGZpbHRlci5cbiAgICogQHBhcmFtIGZpbHRlciAtIHRoZSBmaWx0ZXIgdG8gYmUgdG9nZ2xlZFxuICAgKi9cbiAgcHVibGljIHRvZ2dsZVF1ZXJ5RmlsdGVyKGZpbHRlcjogU2VhcmNoRmlsdGVyLCBvdmVycmlkZT86IGJvb2xlYW4pIHtcbiAgICB0aGlzLnF1ZXJ5LnRvZ2dsZUZpbHRlcihmaWx0ZXIsIG92ZXJyaWRlKTtcbiAgICB0aGlzLnF1ZXJ5Ll9fdXBkYXRlQ2F1c2UgPSBTZWFyY2hRdWVyeS5VUERBVEVfQ0FVU0UuVE9HR0xFRF9GSUxURVI7XG4gICAgdGhpcy5xdWVyeVNvdXJjZS5uZXh0KHRoaXMucXVlcnkpO1xuICAgIHRoaXMuYWdncmVnYXRlKGZpbHRlci5wcm9wZXJ0eSk7XG4gIH1cblxuICAvKipcbiAgICogVG9nZ2xlcyBjcmVhdGVkIGZpbHRlcnMgYW5kIGFnZ3JlZ2F0ZXMgdGhlbSB0b2dldGhlci5cbiAgICogQHBhcmFtIGZpbHRlcnMgLSB0aGUgZmlsdGVycyB0byBiZSB0b2dnbGVkXG4gICAqL1xuICBwdWJsaWMgdG9nZ2xlUXVlcnlGaWx0ZXJzKGZpbHRlcnM6IFNlYXJjaEZpbHRlcltdLCBvdmVycmlkZT86IGJvb2xlYW4pIHtcbiAgICBsZXQgYmFzZVBhcmFtID0gJyc7XG4gICAgZmlsdGVycy5mb3JFYWNoKGZpbHRlciA9PiB7XG4gICAgICB0aGlzLnF1ZXJ5LnRvZ2dsZUZpbHRlcihmaWx0ZXIsIG92ZXJyaWRlKTtcbiAgICAgIHRoaXMucXVlcnkuX191cGRhdGVDYXVzZSA9IFNlYXJjaFF1ZXJ5LlVQREFURV9DQVVTRS5UT0dHTEVEX0ZJTFRFUjtcbiAgICAgIGJhc2VQYXJhbSArPSBmaWx0ZXIucHJvcGVydHkgKyAnICc7XG4gICAgfSk7XG5cbiAgICB0aGlzLnF1ZXJ5U291cmNlLm5leHQodGhpcy5xdWVyeSk7XG4gICAgdGhpcy5hZ2dyZWdhdGUoYmFzZVBhcmFtLnRyaW0oKSk7XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBhIGZpbHRlciB0byB0aGUgcXVlcnkuXG4gICAqIEBwYXJhbSBmaWx0ZXIgLSB0aGUgZmlsdGVyIHRvIGJlIGFkZGVkXG4gICAqL1xuICBwdWJsaWMgYWRkUXVlcnlGaWx0ZXIoZmlsdGVyOiBTZWFyY2hGaWx0ZXIpIHtcbiAgICB0aGlzLnF1ZXJ5LmFkZEZpbHRlcihmaWx0ZXIpO1xuICAgIHRoaXMucXVlcnkuX191cGRhdGVDYXVzZSA9IFNlYXJjaFF1ZXJ5LlVQREFURV9DQVVTRS5BRERFRF9GSUxURVI7XG4gICAgdGhpcy5xdWVyeVNvdXJjZS5uZXh0KHRoaXMucXVlcnkpO1xuICAgIHRoaXMuYWdncmVnYXRlKGZpbHRlci5wcm9wZXJ0eSk7XG4gIH1cblxuICAvKipcbiAgICogUmVtb3ZlcyBhIGZpbHRlciB0byB0aGUgcXVlcnkuXG4gICAqIEBwYXJhbSBmaWx0ZXIgLSB0aGUgZmlsdGVyIHRvIGJlIHJlbW92ZWRcbiAgICovXG4gIHB1YmxpYyByZW1vdmVRdWVyeUZpbHRlcihmaWx0ZXI6IFNlYXJjaEZpbHRlcikge1xuICAgIHRoaXMucXVlcnkucmVtb3ZlRmlsdGVyKGZpbHRlci5wcm9wZXJ0eSk7XG4gICAgdGhpcy5xdWVyeS5fX3VwZGF0ZUNhdXNlID0gU2VhcmNoUXVlcnkuVVBEQVRFX0NBVVNFLlJFTU9WRURfRklMVEVSO1xuICAgIHRoaXMucXVlcnlTb3VyY2UubmV4dCh0aGlzLnF1ZXJ5KTtcbiAgICB0aGlzLmFnZ3JlZ2F0ZShmaWx0ZXIucHJvcGVydHkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIGZpbHRlcnMgZm9yIGFuIGluZGV4ZGF0YSBzZWFyY2guXG4gICAqIFNldHRpbmcgdGhlbSB3aWxsIGFsc28gcmVtb3ZlIGFsbCBpbmRleGRhdGEgZmlsdGVycyBzZXQgYmVmb3JlLlxuICAgKlxuICAgKiBAcGFyYW0gZmlsdGVycyAtIHRoZSBmaWx0ZXJzIHRvIGJlIHNldFxuICAgKiBAcGFyYW0gc2lsZW50IElmIHNldCB0byB0cnVlIGFnZ3JlZ2F0ZSB3b24ndCBiZSBjYWxsZWRcbiAgICovXG4gIHB1YmxpYyBzZXRJbmRleFNlYXJjaFF1ZXJ5RmlsdGVycyhmaWx0ZXJzOiBTZWFyY2hGaWx0ZXJbXSwgc2lsZW50PzogYm9vbGVhbikge1xuXG4gICAgLy8gcmVtb3ZlIHByZXZpb3VzIGZpbHRlcnMgKGFsbCBmaWx0ZXJzIHRoYXQgYXJlIG5vdCBiYXNlcGFyYW0gZmlsdGVycylcbiAgICB0aGlzLnF1ZXJ5LmZpbHRlcnMgPSB0aGlzLnF1ZXJ5LmZpbHRlcnMuZmlsdGVyKChmKSA9PiB0aGlzLmlzQmFzZVBhcmFtRmlsdGVyKGYpKTtcbiAgICBmb3IgKGxldCBmIG9mIGZpbHRlcnMpIHtcbiAgICAgIHRoaXMucXVlcnkuYWRkRmlsdGVyKGYpO1xuICAgIH1cbiAgICBpZiAoIXNpbGVudCkge1xuICAgICAgdGhpcy5hZ2dyZWdhdGUoKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0SW5kZXhTZWFyY2hRdWVyeUZpbHRlcnMocXVlcnk/OiBTZWFyY2hRdWVyeSk6IFNlYXJjaEZpbHRlcltdIHtcbiAgICBsZXQgcSA9IHF1ZXJ5IHx8IHRoaXMucXVlcnk7XG4gICAgcmV0dXJuIHEuZmlsdGVycy5maWx0ZXIoKGYpID0+ICF0aGlzLmlzQmFzZVBhcmFtRmlsdGVyKGYpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmVzIHdoZXRoZXIgb3Igbm90IHRoZSBwcm92aWRlZCBzZWFyY2ggZmlsdGVyIGJlbG9uZ3MgdG8gYSBiYXNlIHBhcmFtLlxuICAgKlxuICAgKiBAcGFyYW0gZmlsdGVyIC0gdGhlIGZpbHRlciB0byBiZSBjaGVja2VkXG4gICAqL1xuICBwdWJsaWMgaXNCYXNlUGFyYW1GaWx0ZXIoZmlsdGVyOiBTZWFyY2hGaWx0ZXIpOiBib29sZWFuIHtcbiAgICAvL3JldHVybiBPYmplY3QudmFsdWVzKFNlYXJjaFF1ZXJ5LkJBU0VfUEFSQU1TKS5zb21lKChicCkgPT4gZmlsdGVyLnByb3BlcnR5ID09PSBicCk7XG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKFNlYXJjaFF1ZXJ5LkJBU0VfUEFSQU1TKS5zb21lKChicEtleSkgPT4gZmlsdGVyLnByb3BlcnR5ID09PSBTZWFyY2hRdWVyeS5CQVNFX1BBUkFNU1ticEtleV0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEV4ZWN1dGVzIHRoZSBjdXJyZW50IHF1ZXJ5IGFzIGFnZ3JlZ2F0ZSBzZWFyY2hcbiAgICovXG4gIHB1YmxpYyBhZ2dyZWdhdGUoYmFzZVBhcmFtID0gJycpIHtcblxuICAgIGNvbnN0IGFnZ1F1ZXJ5ID0ge2FnZ3M6IHRoaXMuYWdncywgLi4udGhpcy5xdWVyeS5nZXRRdWVyeUpzb24oKX07XG4gICAgLy8gY29tcGFyZSB0aGUgY2FsbCB0byBiZSBtYWRlIHdpdGggYSBmb3JtZXIgcmVxdWVzdFxuICAgIGlmICh0aGlzLmxhc3RBZ2dDYWxsQ29tcGFyYXRvciAhPT0gSlNPTi5zdHJpbmdpZnkoYWdnUXVlcnkpKSB7XG4gICAgICB0aGlzLmxhc3RBZ2dDYWxsQ29tcGFyYXRvciA9IEpTT04uc3RyaW5naWZ5KGFnZ1F1ZXJ5KTtcbiAgICAgIHRoaXMuZ2V0U2VhcmNoU3RhdGUoYWdnUXVlcnkpXG4gICAgICAgIC5zdWJzY3JpYmUoKHF1ZXJ5U3RhdGU6IFNlYXJjaFN0YXRlKSA9PiB7XG4gICAgICAgICAgcXVlcnlTdGF0ZS5sYXN0Q2hhbmdlID0gYmFzZVBhcmFtO1xuICAgICAgICAgIHRoaXMucXVlcnlTdGF0ZSA9IHF1ZXJ5U3RhdGU7XG4gICAgICAgICAgdGhpcy5xdWVyeVN0YXRlU291cmNlLm5leHQodGhpcy5xdWVyeVN0YXRlKTtcbiAgICAgICAgfSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlc2V0IHRoZSBxdWVyeVxuICAgKi9cbiAgcHVibGljIHJlc2V0KHNpbGVudD86IGJvb2xlYW4pIHtcbiAgICB0aGlzLnF1ZXJ5ID0gbmV3IFNlYXJjaFF1ZXJ5KCk7XG4gICAgdGhpcy5zZXREZWZhdWx0QWdncygpO1xuICAgIHRoaXMucXVlcnlTb3VyY2UubmV4dCh0aGlzLnF1ZXJ5KTtcbiAgICBpZiAoIXNpbGVudCkge1xuICAgICAgdGhpcy5hZ2dyZWdhdGUoKTtcbiAgICB9XG4gIH1cblxuICBleGl0SW5kZXhkYXRhU2VhcmNoKCkge1xuICAgIHRoaXMuc2V0SW5kZXhTZWFyY2hRdWVyeUZpbHRlcnMoW10sIHRydWUpO1xuICAgIHRoaXMuc2V0UXVlcnlUeXBlcyhbXSwgdHJ1ZSk7XG4gICAgdGhpcy5zZXRDb250ZXh0VHlwZShudWxsLCB0cnVlKTtcbiAgICB0aGlzLmFnZ3JlZ2F0ZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEV4ZWN1dGVzIHRoZSBjdXJyZW50IHF1ZXJ5IGFzIGFnZ3JlZ2F0ZSBzZWFyY2hcbiAgICovXG4gIHB1YmxpYyBnZXRTZWFyY2hTdGF0ZShxdWVyeUpzb246IGFueSkge1xuICAgIHJldHVybiB0aGlzLnNlYXJjaFNlcnZpY2UuZ2V0U2VhcmNoU3RhdGUocXVlcnlKc29uKTtcbiAgfVxuXG4gIHB1YmxpYyBhdXRvY29tcGxldGUodGVybTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuc2VhcmNoU2VydmljZS5hdXRvY29tcGxldGUodGVybSk7XG4gIH1cblxuICAvKipcbiAgICogRmluZHMgdGhlIG9iamVjdCB0eXBlIGVsZW1lbnQgaW5zaWRlIG9mIHRoZSBxdWVyaWVzIHRhcmdldCB0eXBlc1xuICAgKiBmb3IgYSBmb3JtIGVsZW1lbnRzIG5hbWUuIFVzZWQgZS5nLiBmb3IgdGhlIHNlYXJjaCBzdW1tYXJ5IHBhbmVsLlxuICAgKlxuICAgKiBAcGFyYW0gZm9ybUVsZW1lbnROYW1lIC0gdGhlIG5hbWUgb2YgdGhlIGZvcm0gZWxlbWVudFxuICAgKiBAcmV0dXJuIHRoZSBvYmplY3QgdHlwZSBlbGVtZW50IG1hdGNoaW5nIHRoZSBmb3JtIGVsZW1lbnRzIG5hbWVcbiAgICovXG4gIHB1YmxpYyBnZXRUYXJnZXRUeXBlRWxlbWVudEJ5TmFtZShmb3JtRWxlbWVudE5hbWU6IHN0cmluZyk6IGFueSB7XG4gICAgbGV0IGkgPSAwO1xuICAgIGxldCBtYXRjaDtcbiAgICB3aGlsZSAoIW1hdGNoICYmIGkgPCB0aGlzLnF1ZXJ5LnR5cGVzLmxlbmd0aCkge1xuICAgICAgbWF0Y2ggPSB0aGlzLnF1ZXJ5LnR5cGVzW2ldLmVsZW1lbnRzLmZpbmQoKGVsZW1lbnQpID0+IGVsZW1lbnQucW5hbWUgPT09IGZvcm1FbGVtZW50TmFtZSk7XG4gICAgICBpKys7XG4gICAgfVxuICAgIHJldHVybiBtYXRjaDtcbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGVzIHRoZSBsYWJlbCBvZiBgc3lzZG1zY29udGVudHRlbXBsYXRlYCBvYmplY3QgdHlwZXMgdXNpbmcgdHJhbnNsYXRpb25zLlxuICAgKlxuICAgKiBUaGlzIG1ldGhvZCBpcyB1c2VmdWwgZm9yIGVuc3VyaW5nIHRoYXQgdGhlIGRpc3BsYXllZCBsYWJlbHMgZm9yIHRoZXNlIG9iamVjdCB0eXBlcyBhcmUgbG9jYWxpemVkLlxuICAgKlxuICAgKiBAcGFyYW0ge09iamVjdFR5cGVbXX0gdHlwZXMgLSBBbiBhcnJheSBvZiBvYmplY3QgdHlwZXMgdG8gdXBkYXRlLlxuICAgKiBAcmV0dXJucyB7T2JqZWN0VHlwZVtdfSBUaGUgdXBkYXRlZCBhcnJheSBvZiBvYmplY3QgdHlwZXMgd2l0aCB0cmFuc2xhdGVkIGxhYmVscyBmb3IgYHN5c2Rtc2NvbnRlbnR0ZW1wbGF0ZWAgdHlwZXMuXG4gICAqL1xuICBwcml2YXRlIHVwZGF0ZVN5c0Rtc0NvbnRlbnRUZW1wbGF0ZUxhYmVsKHR5cGVzOiBPYmplY3RUeXBlW10pOiBPYmplY3RUeXBlW10ge1xuICAgIHJldHVybiB0eXBlcy5tYXAoKHR5cGU6IE9iamVjdFR5cGUpID0+IHtcbiAgICAgIGlmICh0eXBlLnFuYW1lID09PSAnc3lzZG1zY29udGVudHRlbXBsYXRlJykge1xuICAgICAgICB0eXBlLmFjdHVhbExhYmVsID0gdHlwZS5hY3R1YWxMYWJlbCB8fCB0eXBlLmxhYmVsO1xuICAgICAgICB0eXBlLmxhYmVsID0gdGhpcy50cmFuc2xhdGUuaW5zdGFudChgZW8udHlwZS5sYWJlbC4ke3R5cGUuYWN0dWFsTGFiZWwudG9Mb3dlckNhc2UoKX1gKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0eXBlO1xuICAgIH0pO1xuICB9XG59XG4iXX0=
|