@eo-sdk/client 7.13.0-rc.1 → 7.13.0-rc.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.
- package/app/eo-framework/app-shell/app-bar/app-search/app-search.component.d.ts +3 -1
- package/app/eo-framework/stored-query/stored-query/stored-query.component.d.ts +3 -1
- package/app/eo-framework/stored-query/stored-query-details/stored-query-details.component.d.ts +3 -1
- package/app/eo-framework/ui/query-scope-select/query-scope-select.component.d.ts +11 -0
- package/app/eo-framework-core/search/app-search.service.d.ts +2 -1
- package/assets/_default/i18n/de.json +3 -0
- package/assets/_default/i18n/en.json +3 -0
- package/bundles/eo-sdk-client-projects-eo-sdk-core.umd.js +11 -2
- package/bundles/eo-sdk-client-projects-eo-sdk-core.umd.js.map +1 -1
- package/bundles/eo-sdk-client-projects-eo-sdk-core.umd.min.js +2 -2
- package/bundles/eo-sdk-client-projects-eo-sdk-core.umd.min.js.map +1 -1
- package/bundles/eo-sdk-client.umd.js +128 -71
- package/bundles/eo-sdk-client.umd.js.map +1 -1
- package/bundles/eo-sdk-client.umd.min.js +1 -1
- package/bundles/eo-sdk-client.umd.min.js.map +1 -1
- package/eo-sdk-client.d.ts +63 -62
- package/eo-sdk-client.metadata.json +1 -1
- package/esm2015/app/eo-client/about-state/about-state.component.js +3 -3
- package/esm2015/app/eo-framework/app-shell/app-bar/app-search/app-search.component.js +7 -3
- package/esm2015/app/eo-framework/stored-query/stored-query/stored-query.component.js +9 -3
- package/esm2015/app/eo-framework/stored-query/stored-query-details/stored-query-details.component.js +7 -2
- package/esm2015/app/eo-framework/ui/query-scope-select/query-scope-select.component.js +31 -0
- package/esm2015/app/eo-framework/ui/ui.module.js +6 -3
- package/esm2015/app/eo-framework-core/search/app-search.service.js +6 -1
- package/esm2015/eo-sdk-client.js +64 -63
- package/esm2015/projects/eo-sdk/core/lib/service/auth/auth.service.js +3 -3
- package/esm2015/projects/eo-sdk/core/lib/service/search/search-query.model.js +10 -1
- package/esm2015/projects/eo-sdk/core/lib/service/search/search.service.js +2 -1
- package/esm2015/projects/eo-sdk/core/lib/service/stored-queries/stored-query.model.js +2 -1
- package/fesm2015/eo-sdk-client-projects-eo-sdk-core.js +14 -3
- package/fesm2015/eo-sdk-client-projects-eo-sdk-core.js.map +1 -1
- package/fesm2015/eo-sdk-client.js +62 -11
- package/fesm2015/eo-sdk-client.js.map +1 -1
- package/package.json +2 -2
- package/projects/eo-sdk/core/eo-sdk-client-projects-eo-sdk-core.metadata.json +1 -1
- package/projects/eo-sdk/core/lib/service/search/search-query.model.d.ts +9 -0
- package/projects/eo-sdk/core/package.json +1 -1
|
@@ -163,6 +163,11 @@ export class AppSearchService {
|
|
|
163
163
|
this.querySource.next(this.query);
|
|
164
164
|
this.aggregate();
|
|
165
165
|
}
|
|
166
|
+
setQueryScope(scope) {
|
|
167
|
+
this.query.scope = scope;
|
|
168
|
+
this.querySource.next(this.query);
|
|
169
|
+
this.aggregate();
|
|
170
|
+
}
|
|
166
171
|
// set aggregation properties to be applied to ONLY aggregate search queries
|
|
167
172
|
setAggs(aggs, extend = false) {
|
|
168
173
|
this.aggs = extend ? Object.assign(Object.assign({}, this.aggs), aggs) : aggs;
|
|
@@ -366,4 +371,4 @@ AppSearchService.ctorParameters = () => [
|
|
|
366
371
|
{ type: EventService },
|
|
367
372
|
{ type: SystemService }
|
|
368
373
|
];
|
|
369
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLXNlYXJjaC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9lby1mcmFtZXdvcmstY29yZS9zZWFyY2gvYXBwLXNlYXJjaC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxJQUFJLElBQUksY0FBYyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQWEsTUFBTSxNQUFNLENBQUM7QUFDeEYsT0FBTyxFQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDekQsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQ1MsV0FBVyxFQUFFLFdBQVcsRUFBRSxhQUFhLEVBQ3pDLGFBQWEsRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFDM0QsTUFBTSxjQUFjLENBQUM7QUFFdEI7Ozs7R0FJRztBQUVILE1BQU0sT0FBTyxnQkFBZ0I7SUEyQjNCLFlBQW9CLGFBQTRCLEVBQ3RDLFlBQTBCLEVBQzFCLE1BQXFCO1FBRlgsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDdEMsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsV0FBTSxHQUFOLE1BQU0sQ0FBZTtRQTNCdkIsVUFBSyxHQUFHLElBQUksV0FBVyxFQUFFLENBQUM7UUFFMUIsY0FBUyxHQUFHLElBQUksV0FBVyxFQUFFLENBQUM7UUFDOUIsZUFBVSxHQUFHLElBQUksV0FBVyxFQUFFLENBQUM7UUFLdkMseUVBQXlFO1FBQ3pFLHFKQUFxSjtRQUNySixvR0FBb0c7UUFDNUYsZ0JBQVcsR0FBRyxJQUFJLGFBQWEsQ0FBYyxDQUFDLENBQUMsQ0FBQztRQUNoRCxxQkFBZ0IsR0FBRyxJQUFJLGVBQWUsQ0FBYyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7UUFFN0UseUZBQXlGO1FBQ3pGLDZGQUE2RjtRQUM3Rix1QkFBdUI7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SUFDL0MsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNJLDBCQUEwQixDQUFDLGVBQXVCO1FBQ3ZELElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNWLElBQUksS0FBSyxDQUFDO1FBQ1YsT0FBTyxDQUFDLEtBQUssSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFO1lBQzVDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsS0FBSyxLQUFLLGVBQWUsQ0FBQyxDQUFDO1lBQzFGLENBQUMsRUFBRSxDQUFDO1NBQ0w7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7OztZQTdZRixVQUFVOzs7WUFSRyxhQUFhO1lBQUUsWUFBWTtZQURDLGFBQWEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2Zyb20gYXMgb2JzZXJ2YWJsZUZyb20sIEJlaGF2aW9yU3ViamVjdCwgUmVwbGF5U3ViamVjdCwgT2JzZXJ2YWJsZX0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7Z3JvdXBCeSwgcmVkdWNlLCBtZXJnZU1hcH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQge0luamVjdGFibGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge1xyXG4gIFNlYXJjaEZpbHRlciwgU2VhcmNoUXVlcnksIFNlYXJjaFN0YXRlLCBTeXN0ZW1TZXJ2aWNlLFxyXG4gIE9iamVjdFR5cGUsIFNlYXJjaFNlcnZpY2UsIEV2ZW50U2VydmljZSwgRW5haW9FdmVudCwgVXRpbHNcclxufSBmcm9tICdAZW8tc2RrL2NvcmUnO1xyXG5cclxuLyoqXHJcbiAqIEFwcFNlYXJjaFNlcnZpY2UgaXMgdGhlIGFwcHMgbWFpbiBlbnRyeSBwb2ludCBmb3Igc2VhcmNoaW5nICh1c2VkIGJ5IHRoZSBhcHBCYXJTZWFyY2ggY29tcG9uZW50KS5cclxuICogSXQgcHJvdmlkZXMgYW4gYHF1ZXJ5JGAgb2JzZXJ2YWJsZSBjb21wb25lbnRzIGNhbiBzdWJzY3JpYmUgdG8sIHRvXHJcbiAqIHN0YXkgaW4gdG91Y2ggd2l0aCB1cGRhdGVzIHRvIHRoZSBxdWVyeS5cclxuICovXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIEFwcFNlYXJjaFNlcnZpY2Uge1xyXG5cclxuICBwcml2YXRlIHF1ZXJ5ID0gbmV3IFNlYXJjaFF1ZXJ5KCk7XHJcbiAgcHJpdmF0ZSBhZ2dzOiBhbnk7XHJcbiAgcHJpdmF0ZSBsYXN0UXVlcnkgPSBuZXcgU2VhcmNoUXVlcnkoKTtcclxuICBwcml2YXRlIHF1ZXJ5U3RhdGUgPSBuZXcgU2VhcmNoU3RhdGUoKTtcclxuICAvLyBIb2xkcyB0aGUgbGFzdCBhZ2dyZWdhdGlvbiBwcm9wZXJ0aWVzIHNlbnQgdG8gdGhlIHNlcnZlclxyXG4gIC8vIFVzZWQgZm9yIHByZXZlbnRpbmcgcmVkdW5kYW50IGNhbGxzXHJcbiAgcHJpdmF0ZSBsYXN0QWdnQ2FsbENvbXBhcmF0b3I6IHN0cmluZztcclxuXHJcbiAgLy8gU3ViamVjdCBob2xkaW5nIHRoZSBjdXJyZW50IHF1ZXJ5IChpbml0aWFsIHZhbHVlIGlzIGEgbmV3IFNlYXJjaFF1ZXJ5KVxyXG4gIC8vIEBzZWU6IGh0dHA6Ly9ibG9nLmFuZ3VsYXItdW5pdmVyc2l0eS5pby9ob3ctdG8tYnVpbGQtYW5ndWxhcjItYXBwcy11c2luZy1yeGpzLW9ic2VydmFibGUtZGF0YS1zZXJ2aWNlcy1waXRmYWxscy10by1hdm9pZC8jcnhqc3N1YmplY3RhbmRob3d0b3VzZWl0XHJcbiAgLy8gdG9kbzogbWF5YmUgYWRkIHN1cHBvcnQgZm9yIGhvbGRpbmcgYSBxdWVyeSBoaXN0b3J5LCBzbyB0aGUgdXNlciBjYW4gcmVsb2FkIG9sZGVyIHF1ZXJpZXMgYXMgd2VsbFxyXG4gIHByaXZhdGUgcXVlcnlTb3VyY2UgPSBuZXcgUmVwbGF5U3ViamVjdDxTZWFyY2hRdWVyeT4oMSk7XHJcbiAgcHJpdmF0ZSBxdWVyeVN0YXRlU291cmNlID0gbmV3IEJlaGF2aW9yU3ViamVjdDxTZWFyY2hTdGF0ZT4odGhpcy5xdWVyeVN0YXRlKTtcclxuXHJcbiAgLy8gRXhwb3NlIGFuIG9ic2VydmFibGUgaW5zdGVhZCBvZiB0aGUgc3ViamVjdCBpdHNlbGYgdG8gcHJldmVudCB0aGUgc2VydmljZSBjbGllbnRzIGZyb21cclxuICAvLyB0aGVtc2VsdmVzIGVtaXR0aW5nIHN0b3JlIHZhbHVlcyBkaXJlY3RseSBpbnN0ZWFkIG9mIGNhbGxpbmcgYWN0aW9uIG1ldGhvZHMsIGFuZCB0aGVyZWZvcmVcclxuICAvLyBieXBhc3NpbmcgdGhlIHN0b3JlLlxyXG4gIHB1YmxpYyBxdWVyeSQ6IE9ic2VydmFibGU8U2VhcmNoUXVlcnk+ID0gdGhpcy5xdWVyeVNvdXJjZS5hc09ic2VydmFibGUoKTtcclxuICAvLyBTZWFyY2ggc2VydmljZSBhbHNvIGV4cG9zZXMgYW4gb2JzZXJ2YWJsZSB0aGF0IGVtaXRzIHRoZSBzdGF0ZSBvZiB0aGUgY3VycmVudCBxdWVyeS5cclxuICAvLyBXZSBzZXBhcmF0ZSB0aGUgc3RhdGUgb2YgdGhlIHF1ZXJ5IGZyb20gdGhlIHF1ZXJ5IGl0c2VsZiBhcyBvdGhlcndpc2UgY2hhbmdoaW5nIHRoZSBxdWVyaWVzXHJcbiAgLy8gc3RhdGUgd2lsbCB0cmlnZ2VyIGFsbCBzdWJzY3JpYmVycyBvZiB0aGUgcXVlcnkgb2JzZXJ2YWxlIGFuZCBsZWFkIHRvIHVuZGVzaXJlZCBiZWhhdmlvdXJcclxuICBwdWJsaWMgcXVlcnlTdGF0ZSQ6IE9ic2VydmFibGU8U2VhcmNoU3RhdGU+ID0gdGhpcy5xdWVyeVN0YXRlU291cmNlLmFzT2JzZXJ2YWJsZSgpO1xyXG4gIHB1YmxpYyBvYmplY3RUeXBlR3JvdXBzID0gW107XHJcbiAgcHVibGljIHR5cGVzQWxsb3dlZFVuZGVyU3lzcm9vdCA9IFtdO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHNlYXJjaFNlcnZpY2U6IFNlYXJjaFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGV2ZW50U2VydmljZTogRXZlbnRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBzeXN0ZW06IFN5c3RlbVNlcnZpY2UpIHtcclxuXHJcbiAgICB0aGlzLnNldERlZmF1bHRBZ2dzKCk7XHJcbiAgICB0aGlzLmV2ZW50U2VydmljZS5vbihFbmFpb0V2ZW50LkxPR09VVClcclxuICAgICAgLnN1YnNjcmliZShyZXMgPT4ge1xyXG4gICAgICAgIHRoaXMucmVzZXQodHJ1ZSk7XHJcbiAgICAgIH0pO1xyXG5cclxuICAgIHRoaXMucXVlcnlTb3VyY2UubmV4dCh0aGlzLnF1ZXJ5KTtcclxuXHJcbiAgICAvLyBGZXRjaCBvYmplY3QgdHlwZXMgYW5kIGdyb3VwcyB0aGF0IHNlcnZlIGFzIHNlYXJjaCBmaWx0ZXIgcGFyYW1zLlxyXG4gICAgLy8gVGhlc2UgZ3JvdXBzIGFyZSBwcm92aWRlZCB0aHJvdWdoIHRoZSBzZXJ2aWNlcyBgb2JqZWN0VHlwZUdyb3Vwc2AgcHJvcGVydHkuXHJcbiAgICB0aGlzLnN5c3RlbS5zeXN0ZW0kLnN1YnNjcmliZSgoc3lzdGVtRGVmaW5pdGlvbikgPT4ge1xyXG5cclxuICAgICAgdGhpcy50eXBlc0FsbG93ZWRVbmRlclN5c3Jvb3QgPSBzeXN0ZW1EZWZpbml0aW9uLnR5cGVzLmZpbHRlcih0eXBlID0+IHR5cGUucGFyZW50dHlwZXMuaW5jbHVkZXMoJ3N5c3Jvb3QnKSk7XHJcblxyXG4gICAgICBsZXQgZ3JvdXBzID0gW107XHJcbiAgICAgIG9ic2VydmFibGVGcm9tKHN5c3RlbURlZmluaXRpb24udHlwZXMpXHJcbiAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICBncm91cEJ5KCh0eXBlOiBhbnkpID0+IHR5cGUuZ3JvdXAgfHwgJzAnKSxcclxuICAgICAgICAgIG1lcmdlTWFwKGcgPT4gZy5waXBlKHJlZHVjZSgoYWNjLCBjdXJyKSA9PiBbLi4uYWNjLCBjdXJyXSwgW10pKSlcclxuICAgICAgICApXHJcbiAgICAgICAgLnN1YnNjcmliZShvdGcgPT4ge1xyXG4gICAgICAgICAgZ3JvdXBzLnB1c2goe1xyXG4gICAgICAgICAgICBsYWJlbDogb3RnWzBdLmdyb3VwIHx8ICcwJyxcclxuICAgICAgICAgICAgdHlwZXM6IHRoaXMuc29ydE9iamVjdFR5cGVHcm91cChvdGcpXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9KTtcclxuICAgICAgdGhpcy5vYmplY3RUeXBlR3JvdXBzID0gZ3JvdXBzLnNvcnQoVXRpbHMuc29ydFZhbHVlcygnbGFiZWwnKSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHJlc2V0QWdncygpIHtcclxuICAgIHRoaXMuc2V0RGVmYXVsdEFnZ3MoKTtcclxuICAgIHRoaXMubGFzdEFnZ0NhbGxDb21wYXJhdG9yID0gbnVsbDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0RGVmYXVsdEFnZ3MoKSB7XHJcbiAgICB0aGlzLmFnZ3MgPSB7XHJcbiAgICAgIHR5cGU6IHt9XHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgLy8gaGVscGVyIG1ldGhvZCBmb3Igc29ydGluZyB0aGUgZW50cmllcyBvZiBhbiBvYmplY3QgdHlwZSBncm91cFxyXG4gIHByaXZhdGUgc29ydE9iamVjdFR5cGVHcm91cCh0eXBlcykge1xyXG4gICAgcmV0dXJuIHR5cGVzLnNvcnQoKGEsIGIpID0+IHtcclxuXHJcbiAgICAgIGlmIChhLmlzQ29udGV4dEZvbGRlciAmJiAhYi5pc0NvbnRleHRGb2xkZXIpIHtcclxuICAgICAgICByZXR1cm4gLTE7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKCFhLmlzQ29udGV4dEZvbGRlciAmJiBiLmlzQ29udGV4dEZvbGRlcikge1xyXG4gICAgICAgIHJldHVybiAxO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChhLmlzRm9sZGVyICYmICFiLmlzRm9sZGVyKSB7XHJcbiAgICAgICAgcmV0dXJuIC0xO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICghYS5pc0ZvbGRlciAmJiBiLmlzRm9sZGVyKSB7XHJcbiAgICAgICAgcmV0dXJuIDE7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKGEuaXNGb2xkZXIgJiYgYi5pc0ZvbGRlcikge1xyXG4gICAgICAgIHJldHVybiBVdGlscy5zb3J0VmFsdWVzKCdsYWJlbCcpLmNhbGwodGhpcywgYSwgYik7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIFV0aWxzLnNvcnRWYWx1ZXMoJ2xhYmVsJykuY2FsbCh0aGlzLCBhLCBiKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLy8gRXh0ZW5kcyB0aGUgb2JqZWN0VHlwZXNHcm91cHMgYnkgdGhlIGVsZW1lbnRzIGZvciBlYWNoIG9iamVjdCB0eXBlXHJcbiAgLy8gVXNlZCBpbiBleHBlcnQgc2VhcmNoIG1vZGVcclxuICBwdWJsaWMgYnVpbGRUeXBlR3JvdXBUcmVlKCkge1xyXG5cclxuICAgIGxldCBnVHJlZSA9IFtdO1xyXG4gICAgbGV0IGkgPSAwO1xyXG4gICAgZm9yIChsZXQgZ3JvdXAgb2YgdGhpcy5vYmplY3RUeXBlR3JvdXBzKSB7XHJcbiAgICAgIGxldCBnID0ge1xyXG4gICAgICAgIGlkOiBpKyssXHJcbiAgICAgICAgbGFiZWw6IGdyb3VwLmxhYmVsLFxyXG4gICAgICAgIHRyZWU6IFtdXHJcbiAgICAgIH07XHJcbiAgICAgIGxldCB0eXBlcyA9IFtdO1xyXG4gICAgICBmb3IgKGxldCBvYmplY3RUeXBlIG9mIGdyb3VwLnR5cGVzKSB7XHJcblxyXG4gICAgICAgIGxldCB0ID0ge1xyXG4gICAgICAgICAgaWQ6IG9iamVjdFR5cGUuaWQsXHJcbiAgICAgICAgICBsYWJlbDogb2JqZWN0VHlwZS5sYWJlbCxcclxuICAgICAgICAgIGNoaWxkcmVuOiBbXVxyXG4gICAgICAgIH07XHJcbiAgICAgICAgbGV0IGNoaWxkcmVuID0gW107XHJcbiAgICAgICAgZm9yIChsZXQgZWwgb2Ygb2JqZWN0VHlwZS5lbGVtZW50cykge1xyXG4gICAgICAgICAgY2hpbGRyZW4ucHVzaCh7XHJcbiAgICAgICAgICAgIGxhYmVsOiBlbC5sYWJlbCxcclxuICAgICAgICAgICAgdHlwZTogZWwudHlwZSxcclxuICAgICAgICAgICAgZGF0YTogZWwucW5hbWVcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBzb3J0IGJ5IGxhYmVsXHJcbiAgICAgICAgdC5jaGlsZHJlbiA9IGNoaWxkcmVuLnNvcnQoVXRpbHMuc29ydFZhbHVlcygnbGFiZWwnKSk7XHJcbiAgICAgICAgdHlwZXMucHVzaCh0KTtcclxuICAgICAgfVxyXG4gICAgICBnLnRyZWUgPSB0eXBlcy5zb3J0KFV0aWxzLnNvcnRWYWx1ZXMoJ2xhYmVsJykpO1xyXG5cclxuXHJcbiAgICAgIGdUcmVlLnB1c2goZyk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZ1RyZWU7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBPdmVycmlkZSB0aGUgY3VycmVudCBxdWVyeSBieSBhIGRpZmZlcmVudCBvbmUuXHJcbiAgICogVGhpcyBjb3VsZCBiZSBkb25lIGJ5IGZvciBleGFtcGxlIGxvYWRpbmcgYSBzdG9yZWQgcXVlcnkuXHJcbiAgICpcclxuICAgKiBAcGFyYW0gcXVlcnkgLSB0aGUgcXVlcnkgdGhhdCBzaG91bGQgcmVwbGFjZSB0aGUgY3VycmVudCBxdWVyeSwgdGhpcyBtYXkgYmUgZWl0aGVyIGEgU2VhcmNoUXVlcnkgaW5zdGFuY2UsXHJcbiAgICogYSBKU09OIHN0cmluZyBvZiBhbiBvYmplY3QgbWF0Y2hpbmcgdGhlIHNlYXJjaCBhcGlcclxuICAgKi9cclxuICBwdWJsaWMgc2V0UXVlcnkocXVlcnk6IFNlYXJjaFF1ZXJ5KSB7XHJcbiAgICBpZiAodGhpcy5pc05ld1F1ZXJ5KHF1ZXJ5KSkge1xyXG4gICAgICB0aGlzLnNldERlZmF1bHRBZ2dzKCk7XHJcbiAgICAgIHRoaXMucXVlcnkgPSBxdWVyeTtcclxuICAgICAgdGhpcy5xdWVyeVNvdXJjZS5uZXh0KHRoaXMucXVlcnkpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmVzZXRzIHRoZSBjdXJyZW50IHF1ZXJ5LlxyXG4gICAqL1xyXG4gIHB1YmxpYyBjbGVhclF1ZXJ5KCkge1xyXG4gICAgdGhpcy5zZXRRdWVyeShuZXcgU2VhcmNoUXVlcnkoKSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGlzTmV3UXVlcnkocXVlcnk6IFNlYXJjaFF1ZXJ5KTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkocXVlcnkuZ2V0UXVlcnlKc29uKCkpICE9PSBKU09OLnN0cmluZ2lmeSh0aGlzLnF1ZXJ5LmdldFF1ZXJ5SnNvbigpKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIHRvZ2dsZXMgdGhlIHNlYXJjaG1vZGUgZnJvbSByZWd1bGFyIHNlYXJjaCB0byBleHBlcnQgc2VhcmNoIGFuZCB2aWNlIHZlcnNhXHJcbiAgICovXHJcbiAgcHVibGljIHRvZ2dsZUV4cGVydE1vZGUoKSB7XHJcbiAgICBpZiAoIXRoaXMucXVlcnkuZXhwZXJ0TW9kZSkge1xyXG4gICAgICB0aGlzLmxhc3RRdWVyeSA9IHRoaXMucXVlcnk7XHJcbiAgICAgIHRoaXMuc2V0RGVmYXVsdEFnZ3MoKTtcclxuICAgICAgdGhpcy5xdWVyeSA9IG5ldyBTZWFyY2hRdWVyeSgpO1xyXG4gICAgICB0aGlzLnF1ZXJ5LmV4cGVydE1vZGUgPSB0cnVlO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5xdWVyeSA9IHRoaXMubGFzdFF1ZXJ5O1xyXG4gICAgfVxyXG4gICAgdGhpcy5xdWVyeS5fX3VwZGF0ZUNhdXNlID0gU2VhcmNoUXVlcnkuVVBEQVRFX0NBVVNFLlRPR0dMRURfRVhQRVJUTU9ERTtcclxuICAgIHRoaXMucXVlcnlTb3VyY2UubmV4dCh0aGlzLnF1ZXJ5KTtcclxuICAgIHRoaXMuYWdncmVnYXRlKCk7XHJcblxyXG4gIH1cclxuXHJcbiAgcHVibGljIHNldFRlcm0odGVybTogc3RyaW5nKSB7XHJcbiAgICB0aGlzLnF1ZXJ5LnRlcm0gPSB0ZXJtO1xyXG4gICAgdGhpcy5xdWVyeS5fX3VwZGF0ZUNhdXNlID0gU2VhcmNoUXVlcnkuVVBEQVRFX0NBVVNFLlRFUk1fU0VUO1xyXG4gICAgdGhpcy5xdWVyeVNvdXJjZS5uZXh0KHRoaXMucXVlcnkpO1xyXG4gICAgdGhpcy5hZ2dyZWdhdGUoKTtcclxuICB9XHJcblxyXG4gIC8vIHNldCBhZ2dyZWdhdGlvbiBwcm9wZXJ0aWVzIHRvIGJlIGFwcGxpZWQgdG8gT05MWSBhZ2dyZWdhdGUgc2VhcmNoIHF1ZXJpZXNcclxuICBwdWJsaWMgc2V0QWdncyhhZ2dzOiBhbnksIGV4dGVuZCA9IGZhbHNlKSB7XHJcbiAgICB0aGlzLmFnZ3MgPSBleHRlbmQgPyB7Li4udGhpcy5hZ2dzLCAuLi5hZ2dzfSA6IGFnZ3M7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBUb2dnbGVzIGEgdHlwZSBmaWx0ZXIuXHJcbiAgICogQHBhcmFtIHR5cGUgLSBvYmplY3QgdHlwZVxyXG4gICAqL1xyXG4gIHB1YmxpYyB0b2dnbGVRdWVyeVR5cGUodHlwZTogT2JqZWN0VHlwZSkge1xyXG4gICAgdGhpcy5xdWVyeS50b2dnbGVUeXBlKHR5cGUpO1xyXG4gICAgdGhpcy5xdWVyeS5fX3VwZGF0ZUNhdXNlID0gU2VhcmNoUXVlcnkuVVBEQVRFX0NBVVNFLlRPR0dMRURfVFlQRTtcclxuICAgIHRoaXMucXVlcnlTb3VyY2UubmV4dCh0aGlzLnF1ZXJ5KTtcclxuICAgIHRoaXMuYWdncmVnYXRlKFNlYXJjaFF1ZXJ5LkJBU0VfUEFSQU1TLlRZUEUpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2V0cyB0aGUgcXVlcmllcyB0YXJnZXQgdHlwZXMuXHJcbiAgICpcclxuICAgKiBAcGFyYW0gdHlwZXMgLSBhcnJheSBvZiBPYmplY3RUeXBlc1xyXG4gICAqIEBwYXJhbSBzaWxlbnQgSWYgc2V0IHRvIHRydWUgYWdncmVnYXRlIHdvbid0IGJlIGNhbGxlZFxyXG4gICAqL1xyXG4gIHB1YmxpYyBzZXRRdWVyeVR5cGVzKHR5cGVzOiBPYmplY3RUeXBlW10sIHNpbGVudD86IGJvb2xlYW4pIHtcclxuICAgIHRoaXMucXVlcnkudHlwZXMgPSB0eXBlcztcclxuICAgIHRoaXMuYWdncyA9IHtcclxuICAgICAgdHlwZToge1xyXG4gICAgICAgIHN1Yjoge1xyXG4gICAgICAgICAgY29udGV4dGZvbGRlcnR5cGU6IHt9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9O1xyXG4gICAgdGhpcy5xdWVyeS5fX3VwZGF0ZUNhdXNlID0gU2VhcmNoUXVlcnkuVVBEQVRFX0NBVVNFLlRZUEVTX1NFVDtcclxuICAgIHRoaXMucXVlcnlTb3VyY2UubmV4dCh0aGlzLnF1ZXJ5KTtcclxuICAgIGlmICghc2lsZW50KSB7XHJcbiAgICAgIHRoaXMuYWdncmVnYXRlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTZXRzIHRoZSBxdWVyaWVzIHRhcmdldCBjb250ZXh0IHR5cGUuXHJcbiAgICpcclxuICAgKiBAcGFyYW0gdHlwZSBUaGUgY29udGV4dCB0eXBlIHRvIGJlIHNldCBvciBudWxsIGZvciByZXNldHRpbmdcclxuICAgKiBAcGFyYW0gc2lsZW50IElmIHNldCB0byB0cnVlIGFnZ3JlZ2F0ZSB3b24ndCBiZSBjYWxsZWRcclxuICAgKi9cclxuICBwdWJsaWMgc2V0Q29udGV4dFR5cGUodHlwZTogT2JqZWN0VHlwZSwgc2lsZW50PzogYm9vbGVhbikge1xyXG5cclxuICAgIGlmICh0aGlzLnF1ZXJ5LmNvbnRleHRGb2xkZXJUeXBlcy5sZW5ndGggJiYgIXR5cGUpIHtcclxuICAgICAgLy8gY2xlYXIgY29udGV4dCBmb2xkZXJcclxuICAgICAgdGhpcy5lbWl0TmV3Q29udGV4dEZvbGRlclR5cGUobnVsbCk7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMucXVlcnkuY29udGV4dEZvbGRlclR5cGVzLmxlbmd0aCAmJiB0eXBlLm5hbWUgIT09IHRoaXMucXVlcnkuY29udGV4dEZvbGRlclR5cGVzWzBdLm5hbWUpIHtcclxuICAgICAgLy8gZ290IGEgdHlwZSB0byBiZSBzZXQgdXAgdGhhdCBkaWZmZXJzIGZyb20gdGhlIGN1cnJlbnQgb25lXHJcbiAgICAgIHRoaXMuZW1pdE5ld0NvbnRleHRGb2xkZXJUeXBlKHR5cGUpO1xyXG4gICAgfSBlbHNlIGlmICghdGhpcy5xdWVyeS5jb250ZXh0Rm9sZGVyVHlwZXMubGVuZ3RoKSB7XHJcbiAgICAgIC8vIG5vdGhpbmcgc2V0IHVwIHNvIGZhclxyXG4gICAgICB0aGlzLmVtaXROZXdDb250ZXh0Rm9sZGVyVHlwZSh0eXBlKTtcclxuICAgIH1cclxuICAgIC8vIHRyeWluZyB0byBzZXR1cCB0aGUgc2FtZSB0eXBlIGFzIHRoZSBjdXJyZW50IG9uIHNob3VsZCBub3QgZW1pdCBhIG5ldyB2YWx1ZVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBlbWl0TmV3Q29udGV4dEZvbGRlclR5cGUodHlwZSwgc2lsZW50PzogYm9vbGVhbikge1xyXG4gICAgaWYgKCF0eXBlICYmIHRoaXMucXVlcnkuY29udGV4dEZvbGRlclR5cGVzLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLmFnZ3MgPSB7XHJcbiAgICAgIHR5cGU6IHtcclxuICAgICAgICBzdWI6IHtcclxuICAgICAgICAgIGNvbnRleHRmb2xkZXJ0eXBlOiB7fVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfTtcclxuICAgIHRoaXMucXVlcnkuY29udGV4dEZvbGRlclR5cGVzID0gdHlwZSA/IFt0eXBlXSA6IFtdO1xyXG4gICAgdGhpcy5xdWVyeS5fX3VwZGF0ZUNhdXNlID0gU2VhcmNoUXVlcnkuVVBEQVRFX0NBVVNFLkNPTlRFWFRfRk9MREVSX1NFVDtcclxuICAgIHRoaXMucXVlcnlTb3VyY2UubmV4dCh0aGlzLnF1ZXJ5KTtcclxuICAgIGlmICghc2lsZW50KSB7XHJcbiAgICAgIHRoaXMuYWdncmVnYXRlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBUb2dnbGVzIGEgY3JlYXRlZCBmaWx0ZXIuXHJcbiAgICogQHBhcmFtIGZpbHRlciAtIHRoZSBmaWx0ZXIgdG8gYmUgdG9nZ2xlZFxyXG4gICAqL1xyXG4gIHB1YmxpYyB0b2dnbGVRdWVyeUZpbHRlcihmaWx0ZXI6IFNlYXJjaEZpbHRlciwgb3ZlcnJpZGU/OiBib29sZWFuKSB7XHJcbiAgICB0aGlzLnF1ZXJ5LnRvZ2dsZUZpbHRlcihmaWx0ZXIsIG92ZXJyaWRlKTtcclxuICAgIHRoaXMucXVlcnkuX191cGRhdGVDYXVzZSA9IFNlYXJjaFF1ZXJ5LlVQREFURV9DQVVTRS5UT0dHTEVEX0ZJTFRFUjtcclxuICAgIHRoaXMucXVlcnlTb3VyY2UubmV4dCh0aGlzLnF1ZXJ5KTtcclxuICAgIHRoaXMuYWdncmVnYXRlKGZpbHRlci5wcm9wZXJ0eSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBBZGRzIGEgZmlsdGVyIHRvIHRoZSBxdWVyeS5cclxuICAgKiBAcGFyYW0gZmlsdGVyIC0gdGhlIGZpbHRlciB0byBiZSBhZGRlZFxyXG4gICAqL1xyXG4gIHB1YmxpYyBhZGRRdWVyeUZpbHRlcihmaWx0ZXI6IFNlYXJjaEZpbHRlcikge1xyXG4gICAgdGhpcy5xdWVyeS5hZGRGaWx0ZXIoZmlsdGVyKTtcclxuICAgIHRoaXMucXVlcnkuX191cGRhdGVDYXVzZSA9IFNlYXJjaFF1ZXJ5LlVQREFURV9DQVVTRS5BRERFRF9GSUxURVI7XHJcbiAgICB0aGlzLnF1ZXJ5U291cmNlLm5leHQodGhpcy5xdWVyeSk7XHJcbiAgICB0aGlzLmFnZ3JlZ2F0ZShmaWx0ZXIucHJvcGVydHkpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmVtb3ZlcyBhIGZpbHRlciB0byB0aGUgcXVlcnkuXHJcbiAgICogQHBhcmFtIGZpbHRlciAtIHRoZSBmaWx0ZXIgdG8gYmUgcmVtb3ZlZFxyXG4gICAqL1xyXG4gIHB1YmxpYyByZW1vdmVRdWVyeUZpbHRlcihmaWx0ZXI6IFNlYXJjaEZpbHRlcikge1xyXG4gICAgdGhpcy5xdWVyeS5yZW1vdmVGaWx0ZXIoZmlsdGVyLnByb3BlcnR5KTtcclxuICAgIHRoaXMucXVlcnkuX191cGRhdGVDYXVzZSA9IFNlYXJjaFF1ZXJ5LlVQREFURV9DQVVTRS5SRU1PVkVEX0ZJTFRFUjtcclxuICAgIHRoaXMucXVlcnlTb3VyY2UubmV4dCh0aGlzLnF1ZXJ5KTtcclxuICAgIHRoaXMuYWdncmVnYXRlKGZpbHRlci5wcm9wZXJ0eSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTZXRzIHRoZSBmaWx0ZXJzIGZvciBhbiBpbmRleGRhdGEgc2VhcmNoLlxyXG4gICAqIFNldHRpbmcgdGhlbSB3aWxsIGFsc28gcmVtb3ZlIGFsbCBpbmRleGRhdGEgZmlsdGVycyBzZXQgYmVmb3JlLlxyXG4gICAqXHJcbiAgICogQHBhcmFtIGZpbHRlcnMgLSB0aGUgZmlsdGVycyB0byBiZSBzZXRcclxuICAgKiBAcGFyYW0gc2lsZW50IElmIHNldCB0byB0cnVlIGFnZ3JlZ2F0ZSB3b24ndCBiZSBjYWxsZWRcclxuICAgKi9cclxuICBwdWJsaWMgc2V0SW5kZXhTZWFyY2hRdWVyeUZpbHRlcnMoZmlsdGVyczogU2VhcmNoRmlsdGVyW10sIHNpbGVudD86IGJvb2xlYW4pIHtcclxuXHJcbiAgICAvLyByZW1vdmUgcHJldmlvdXMgZmlsdGVycyAoYWxsIGZpbHRlcnMgdGhhdCBhcmUgbm90IGJhc2VwYXJhbSBmaWx0ZXJzKVxyXG4gICAgdGhpcy5xdWVyeS5maWx0ZXJzID0gdGhpcy5xdWVyeS5maWx0ZXJzLmZpbHRlcigoZikgPT4gdGhpcy5pc0Jhc2VQYXJhbUZpbHRlcihmKSk7XHJcbiAgICBmb3IgKGxldCBmIG9mIGZpbHRlcnMpIHtcclxuICAgICAgdGhpcy5xdWVyeS5hZGRGaWx0ZXIoZik7XHJcbiAgICB9XHJcbiAgICBpZiAoIXNpbGVudCkge1xyXG4gICAgICB0aGlzLmFnZ3JlZ2F0ZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldEluZGV4U2VhcmNoUXVlcnlGaWx0ZXJzKHF1ZXJ5PzogU2VhcmNoUXVlcnkpOiBTZWFyY2hGaWx0ZXJbXSB7XHJcbiAgICBsZXQgcSA9IHF1ZXJ5IHx8IHRoaXMucXVlcnk7XHJcbiAgICByZXR1cm4gcS5maWx0ZXJzLmZpbHRlcigoZikgPT4gIXRoaXMuaXNCYXNlUGFyYW1GaWx0ZXIoZikpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRGV0ZXJtaW5lcyB3aGV0aGVyIG9yIG5vdCB0aGUgcHJvdmlkZWQgc2VhcmNoIGZpbHRlciBiZWxvbmdzIHRvIGEgYmFzZSBwYXJhbS5cclxuICAgKlxyXG4gICAqIEBwYXJhbSBmaWx0ZXIgLSB0aGUgZmlsdGVyIHRvIGJlIGNoZWNrZWRcclxuICAgKi9cclxuICBwdWJsaWMgaXNCYXNlUGFyYW1GaWx0ZXIoZmlsdGVyOiBTZWFyY2hGaWx0ZXIpOiBib29sZWFuIHtcclxuICAgIC8vcmV0dXJuIE9iamVjdC52YWx1ZXMoU2VhcmNoUXVlcnkuQkFTRV9QQVJBTVMpLnNvbWUoKGJwKSA9PiBmaWx0ZXIucHJvcGVydHkgPT09IGJwKTtcclxuICAgIHJldHVybiBPYmplY3Qua2V5cyhTZWFyY2hRdWVyeS5CQVNFX1BBUkFNUykuc29tZSgoYnBLZXkpID0+IGZpbHRlci5wcm9wZXJ0eSA9PT0gU2VhcmNoUXVlcnkuQkFTRV9QQVJBTVNbYnBLZXldKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEV4ZWN1dGVzIHRoZSBjdXJyZW50IHF1ZXJ5IGFzIGFnZ3JlZ2F0ZSBzZWFyY2hcclxuICAgKi9cclxuICBwdWJsaWMgYWdncmVnYXRlKGJhc2VQYXJhbSA9ICcnKSB7XHJcblxyXG4gICAgY29uc3QgYWdnUXVlcnkgPSB7YWdnczogdGhpcy5hZ2dzLCAuLi50aGlzLnF1ZXJ5LmdldFF1ZXJ5SnNvbigpfTtcclxuICAgIC8vIGNvbXBhcmUgdGhlIGNhbGwgdG8gYmUgbWFkZSB3aXRoIGEgZm9ybWVyIHJlcXVlc3RcclxuICAgIGlmICh0aGlzLmxhc3RBZ2dDYWxsQ29tcGFyYXRvciAhPT0gSlNPTi5zdHJpbmdpZnkoYWdnUXVlcnkpKSB7XHJcbiAgICAgIHRoaXMubGFzdEFnZ0NhbGxDb21wYXJhdG9yID0gSlNPTi5zdHJpbmdpZnkoYWdnUXVlcnkpO1xyXG4gICAgICB0aGlzLmdldFNlYXJjaFN0YXRlKGFnZ1F1ZXJ5KVxyXG4gICAgICAgIC5zdWJzY3JpYmUoKHF1ZXJ5U3RhdGU6IFNlYXJjaFN0YXRlKSA9PiB7XHJcbiAgICAgICAgICBxdWVyeVN0YXRlLmxhc3RDaGFuZ2UgPSBiYXNlUGFyYW07XHJcbiAgICAgICAgICB0aGlzLnF1ZXJ5U3RhdGUgPSBxdWVyeVN0YXRlO1xyXG4gICAgICAgICAgdGhpcy5xdWVyeVN0YXRlU291cmNlLm5leHQodGhpcy5xdWVyeVN0YXRlKTtcclxuICAgICAgICB9KTtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXNldCB0aGUgcXVlcnlcclxuICAgKi9cclxuICBwdWJsaWMgcmVzZXQoc2lsZW50PzogYm9vbGVhbikge1xyXG4gICAgdGhpcy5xdWVyeSA9IG5ldyBTZWFyY2hRdWVyeSgpO1xyXG4gICAgdGhpcy5zZXREZWZhdWx0QWdncygpO1xyXG4gICAgdGhpcy5xdWVyeVNvdXJjZS5uZXh0KHRoaXMucXVlcnkpO1xyXG4gICAgaWYgKCFzaWxlbnQpIHtcclxuICAgICAgdGhpcy5hZ2dyZWdhdGUoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGV4aXRJbmRleGRhdGFTZWFyY2goKSB7XHJcbiAgICB0aGlzLnNldEluZGV4U2VhcmNoUXVlcnlGaWx0ZXJzKFtdLCB0cnVlKTtcclxuICAgIHRoaXMuc2V0UXVlcnlUeXBlcyhbXSwgdHJ1ZSk7XHJcbiAgICB0aGlzLnNldENvbnRleHRUeXBlKG51bGwsIHRydWUpO1xyXG4gICAgdGhpcy5hZ2dyZWdhdGUoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEV4ZWN1dGVzIHRoZSBjdXJyZW50IHF1ZXJ5IGFzIGFnZ3JlZ2F0ZSBzZWFyY2hcclxuICAgKi9cclxuICBwdWJsaWMgZ2V0U2VhcmNoU3RhdGUocXVlcnlKc29uOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLnNlYXJjaFNlcnZpY2UuZ2V0U2VhcmNoU3RhdGUocXVlcnlKc29uKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhdXRvY29tcGxldGUodGVybTogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gdGhpcy5zZWFyY2hTZXJ2aWNlLmF1dG9jb21wbGV0ZSh0ZXJtKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEZpbmRzIHRoZSBvYmplY3QgdHlwZSBlbGVtZW50IGluc2lkZSBvZiB0aGUgcXVlcmllcyB0YXJnZXQgdHlwZXNcclxuICAgKiBmb3IgYSBmb3JtIGVsZW1lbnRzIG5hbWUuIFVzZWQgZS5nLiBmb3IgdGhlIHNlYXJjaCBzdW1tYXJ5IHBhbmVsLlxyXG4gICAqXHJcbiAgICogQHBhcmFtIGZvcm1FbGVtZW50TmFtZSAtIHRoZSBuYW1lIG9mIHRoZSBmb3JtIGVsZW1lbnRcclxuICAgKiBAcmV0dXJuIHRoZSBvYmplY3QgdHlwZSBlbGVtZW50IG1hdGNoaW5nIHRoZSBmb3JtIGVsZW1lbnRzIG5hbWVcclxuICAgKi9cclxuICBwdWJsaWMgZ2V0VGFyZ2V0VHlwZUVsZW1lbnRCeU5hbWUoZm9ybUVsZW1lbnROYW1lOiBzdHJpbmcpOiBhbnkge1xyXG4gICAgbGV0IGkgPSAwO1xyXG4gICAgbGV0IG1hdGNoO1xyXG4gICAgd2hpbGUgKCFtYXRjaCAmJiBpIDwgdGhpcy5xdWVyeS50eXBlcy5sZW5ndGgpIHtcclxuICAgICAgbWF0Y2ggPSB0aGlzLnF1ZXJ5LnR5cGVzW2ldLmVsZW1lbnRzLmZpbmQoKGVsZW1lbnQpID0+IGVsZW1lbnQucW5hbWUgPT09IGZvcm1FbGVtZW50TmFtZSk7XHJcbiAgICAgIGkrKztcclxuICAgIH1cclxuICAgIHJldHVybiBtYXRjaDtcclxuICB9XHJcbn1cclxuIl19
|
|
374
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLXNlYXJjaC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9lby1mcmFtZXdvcmstY29yZS9zZWFyY2gvYXBwLXNlYXJjaC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxJQUFJLElBQUksY0FBYyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQWEsTUFBTSxNQUFNLENBQUM7QUFDeEYsT0FBTyxFQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDekQsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQ1MsV0FBVyxFQUFFLFdBQVcsRUFBRSxhQUFhLEVBQ3pDLGFBQWEsRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFDM0QsTUFBTSxjQUFjLENBQUM7QUFFdEI7Ozs7R0FJRztBQUVILE1BQU0sT0FBTyxnQkFBZ0I7SUEyQjNCLFlBQW9CLGFBQTRCLEVBQ3RDLFlBQTBCLEVBQzFCLE1BQXFCO1FBRlgsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDdEMsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsV0FBTSxHQUFOLE1BQU0sQ0FBZTtRQTNCdkIsVUFBSyxHQUFHLElBQUksV0FBVyxFQUFFLENBQUM7UUFFMUIsY0FBUyxHQUFHLElBQUksV0FBVyxFQUFFLENBQUM7UUFDOUIsZUFBVSxHQUFHLElBQUksV0FBVyxFQUFFLENBQUM7UUFLdkMseUVBQXlFO1FBQ3pFLHFKQUFxSjtRQUNySixvR0FBb0c7UUFDNUYsZ0JBQVcsR0FBRyxJQUFJLGFBQWEsQ0FBYyxDQUFDLENBQUMsQ0FBQztRQUNoRCxxQkFBZ0IsR0FBRyxJQUFJLGVBQWUsQ0FBYyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7UUFFN0UseUZBQXlGO1FBQ3pGLDZGQUE2RjtRQUM3Rix1QkFBdUI7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OztPQUVHO0lBQ0ksY0FBYyxDQUFDLFNBQWM7UUFDbEMsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUN0RCxDQUFDO0lBRU0sWUFBWSxDQUFDLElBQVk7UUFDOUIsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ksMEJBQTBCLENBQUMsZUFBdUI7UUFDdkQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ1YsSUFBSSxLQUFLLENBQUM7UUFDVixPQUFPLENBQUMsS0FBSyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUU7WUFDNUMsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEtBQUssZUFBZSxDQUFDLENBQUM7WUFDMUYsQ0FBQyxFQUFFLENBQUM7U0FDTDtRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQzs7O1lBblpGLFVBQVU7OztZQVJHLGFBQWE7WUFBRSxZQUFZO1lBREMsYUFBYSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7ZnJvbSBhcyBvYnNlcnZhYmxlRnJvbSwgQmVoYXZpb3JTdWJqZWN0LCBSZXBsYXlTdWJqZWN0LCBPYnNlcnZhYmxlfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHtncm91cEJ5LCByZWR1Y2UsIG1lcmdlTWFwfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7SW5qZWN0YWJsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7XHJcbiAgU2VhcmNoRmlsdGVyLCBTZWFyY2hRdWVyeSwgU2VhcmNoU3RhdGUsIFN5c3RlbVNlcnZpY2UsXHJcbiAgT2JqZWN0VHlwZSwgU2VhcmNoU2VydmljZSwgRXZlbnRTZXJ2aWNlLCBFbmFpb0V2ZW50LCBVdGlscywgUXVlcnlTY29wZVxyXG59IGZyb20gJ0Blby1zZGsvY29yZSc7XHJcblxyXG4vKipcclxuICogQXBwU2VhcmNoU2VydmljZSBpcyB0aGUgYXBwcyBtYWluIGVudHJ5IHBvaW50IGZvciBzZWFyY2hpbmcgKHVzZWQgYnkgdGhlIGFwcEJhclNlYXJjaCBjb21wb25lbnQpLlxyXG4gKiBJdCBwcm92aWRlcyBhbiBgcXVlcnkkYCBvYnNlcnZhYmxlIGNvbXBvbmVudHMgY2FuIHN1YnNjcmliZSB0bywgdG9cclxuICogc3RheSBpbiB0b3VjaCB3aXRoIHVwZGF0ZXMgdG8gdGhlIHF1ZXJ5LlxyXG4gKi9cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgQXBwU2VhcmNoU2VydmljZSB7XHJcblxyXG4gIHByaXZhdGUgcXVlcnkgPSBuZXcgU2VhcmNoUXVlcnkoKTtcclxuICBwcml2YXRlIGFnZ3M6IGFueTtcclxuICBwcml2YXRlIGxhc3RRdWVyeSA9IG5ldyBTZWFyY2hRdWVyeSgpO1xyXG4gIHByaXZhdGUgcXVlcnlTdGF0ZSA9IG5ldyBTZWFyY2hTdGF0ZSgpO1xyXG4gIC8vIEhvbGRzIHRoZSBsYXN0IGFnZ3JlZ2F0aW9uIHByb3BlcnRpZXMgc2VudCB0byB0aGUgc2VydmVyXHJcbiAgLy8gVXNlZCBmb3IgcHJldmVudGluZyByZWR1bmRhbnQgY2FsbHNcclxuICBwcml2YXRlIGxhc3RBZ2dDYWxsQ29tcGFyYXRvcjogc3RyaW5nO1xyXG5cclxuICAvLyBTdWJqZWN0IGhvbGRpbmcgdGhlIGN1cnJlbnQgcXVlcnkgKGluaXRpYWwgdmFsdWUgaXMgYSBuZXcgU2VhcmNoUXVlcnkpXHJcbiAgLy8gQHNlZTogaHR0cDovL2Jsb2cuYW5ndWxhci11bml2ZXJzaXR5LmlvL2hvdy10by1idWlsZC1hbmd1bGFyMi1hcHBzLXVzaW5nLXJ4anMtb2JzZXJ2YWJsZS1kYXRhLXNlcnZpY2VzLXBpdGZhbGxzLXRvLWF2b2lkLyNyeGpzc3ViamVjdGFuZGhvd3RvdXNlaXRcclxuICAvLyB0b2RvOiBtYXliZSBhZGQgc3VwcG9ydCBmb3IgaG9sZGluZyBhIHF1ZXJ5IGhpc3RvcnksIHNvIHRoZSB1c2VyIGNhbiByZWxvYWQgb2xkZXIgcXVlcmllcyBhcyB3ZWxsXHJcbiAgcHJpdmF0ZSBxdWVyeVNvdXJjZSA9IG5ldyBSZXBsYXlTdWJqZWN0PFNlYXJjaFF1ZXJ5PigxKTtcclxuICBwcml2YXRlIHF1ZXJ5U3RhdGVTb3VyY2UgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFNlYXJjaFN0YXRlPih0aGlzLnF1ZXJ5U3RhdGUpO1xyXG5cclxuICAvLyBFeHBvc2UgYW4gb2JzZXJ2YWJsZSBpbnN0ZWFkIG9mIHRoZSBzdWJqZWN0IGl0c2VsZiB0byBwcmV2ZW50IHRoZSBzZXJ2aWNlIGNsaWVudHMgZnJvbVxyXG4gIC8vIHRoZW1zZWx2ZXMgZW1pdHRpbmcgc3RvcmUgdmFsdWVzIGRpcmVjdGx5IGluc3RlYWQgb2YgY2FsbGluZyBhY3Rpb24gbWV0aG9kcywgYW5kIHRoZXJlZm9yZVxyXG4gIC8vIGJ5cGFzc2luZyB0aGUgc3RvcmUuXHJcbiAgcHVibGljIHF1ZXJ5JDogT2JzZXJ2YWJsZTxTZWFyY2hRdWVyeT4gPSB0aGlzLnF1ZXJ5U291cmNlLmFzT2JzZXJ2YWJsZSgpO1xyXG4gIC8vIFNlYXJjaCBzZXJ2aWNlIGFsc28gZXhwb3NlcyBhbiBvYnNlcnZhYmxlIHRoYXQgZW1pdHMgdGhlIHN0YXRlIG9mIHRoZSBjdXJyZW50IHF1ZXJ5LlxyXG4gIC8vIFdlIHNlcGFyYXRlIHRoZSBzdGF0ZSBvZiB0aGUgcXVlcnkgZnJvbSB0aGUgcXVlcnkgaXRzZWxmIGFzIG90aGVyd2lzZSBjaGFuZ2hpbmcgdGhlIHF1ZXJpZXNcclxuICAvLyBzdGF0ZSB3aWxsIHRyaWdnZXIgYWxsIHN1YnNjcmliZXJzIG9mIHRoZSBxdWVyeSBvYnNlcnZhbGUgYW5kIGxlYWQgdG8gdW5kZXNpcmVkIGJlaGF2aW91clxyXG4gIHB1YmxpYyBxdWVyeVN0YXRlJDogT2JzZXJ2YWJsZTxTZWFyY2hTdGF0ZT4gPSB0aGlzLnF1ZXJ5U3RhdGVTb3VyY2UuYXNPYnNlcnZhYmxlKCk7XHJcbiAgcHVibGljIG9iamVjdFR5cGVHcm91cHMgPSBbXTtcclxuICBwdWJsaWMgdHlwZXNBbGxvd2VkVW5kZXJTeXNyb290ID0gW107XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgc2VhcmNoU2VydmljZTogU2VhcmNoU2VydmljZSxcclxuICAgIHByaXZhdGUgZXZlbnRTZXJ2aWNlOiBFdmVudFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHN5c3RlbTogU3lzdGVtU2VydmljZSkge1xyXG5cclxuICAgIHRoaXMuc2V0RGVmYXVsdEFnZ3MoKTtcclxuICAgIHRoaXMuZXZlbnRTZXJ2aWNlLm9uKEVuYWlvRXZlbnQuTE9HT1VUKVxyXG4gICAgICAuc3Vic2NyaWJlKHJlcyA9PiB7XHJcbiAgICAgICAgdGhpcy5yZXNldCh0cnVlKTtcclxuICAgICAgfSk7XHJcblxyXG4gICAgdGhpcy5xdWVyeVNvdXJjZS5uZXh0KHRoaXMucXVlcnkpO1xyXG5cclxuICAgIC8vIEZldGNoIG9iamVjdCB0eXBlcyBhbmQgZ3JvdXBzIHRoYXQgc2VydmUgYXMgc2VhcmNoIGZpbHRlciBwYXJhbXMuXHJcbiAgICAvLyBUaGVzZSBncm91cHMgYXJlIHByb3ZpZGVkIHRocm91Z2ggdGhlIHNlcnZpY2VzIGBvYmplY3RUeXBlR3JvdXBzYCBwcm9wZXJ0eS5cclxuICAgIHRoaXMuc3lzdGVtLnN5c3RlbSQuc3Vic2NyaWJlKChzeXN0ZW1EZWZpbml0aW9uKSA9PiB7XHJcblxyXG4gICAgICB0aGlzLnR5cGVzQWxsb3dlZFVuZGVyU3lzcm9vdCA9IHN5c3RlbURlZmluaXRpb24udHlwZXMuZmlsdGVyKHR5cGUgPT4gdHlwZS5wYXJlbnR0eXBlcy5pbmNsdWRlcygnc3lzcm9vdCcpKTtcclxuXHJcbiAgICAgIGxldCBncm91cHMgPSBbXTtcclxuICAgICAgb2JzZXJ2YWJsZUZyb20oc3lzdGVtRGVmaW5pdGlvbi50eXBlcylcclxuICAgICAgICAucGlwZShcclxuICAgICAgICAgIGdyb3VwQnkoKHR5cGU6IGFueSkgPT4gdHlwZS5ncm91cCB8fCAnMCcpLFxyXG4gICAgICAgICAgbWVyZ2VNYXAoZyA9PiBnLnBpcGUocmVkdWNlKChhY2MsIGN1cnIpID0+IFsuLi5hY2MsIGN1cnJdLCBbXSkpKVxyXG4gICAgICAgIClcclxuICAgICAgICAuc3Vic2NyaWJlKG90ZyA9PiB7XHJcbiAgICAgICAgICBncm91cHMucHVzaCh7XHJcbiAgICAgICAgICAgIGxhYmVsOiBvdGdbMF0uZ3JvdXAgfHwgJzAnLFxyXG4gICAgICAgICAgICB0eXBlczogdGhpcy5zb3J0T2JqZWN0VHlwZUdyb3VwKG90ZylcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB0aGlzLm9iamVjdFR5cGVHcm91cHMgPSBncm91cHMuc29ydChVdGlscy5zb3J0VmFsdWVzKCdsYWJlbCcpKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcmVzZXRBZ2dzKCkge1xyXG4gICAgdGhpcy5zZXREZWZhdWx0QWdncygpO1xyXG4gICAgdGhpcy5sYXN0QWdnQ2FsbENvbXBhcmF0b3IgPSBudWxsO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXREZWZhdWx0QWdncygpIHtcclxuICAgIHRoaXMuYWdncyA9IHtcclxuICAgICAgdHlwZToge31cclxuICAgIH07XHJcbiAgfVxyXG5cclxuICAvLyBoZWxwZXIgbWV0aG9kIGZvciBzb3J0aW5nIHRoZSBlbnRyaWVzIG9mIGFuIG9iamVjdCB0eXBlIGdyb3VwXHJcbiAgcHJpdmF0ZSBzb3J0T2JqZWN0VHlwZUdyb3VwKHR5cGVzKSB7XHJcbiAgICByZXR1cm4gdHlwZXMuc29ydCgoYSwgYikgPT4ge1xyXG5cclxuICAgICAgaWYgKGEuaXNDb250ZXh0Rm9sZGVyICYmICFiLmlzQ29udGV4dEZvbGRlcikge1xyXG4gICAgICAgIHJldHVybiAtMTtcclxuICAgICAgfVxyXG4gICAgICBpZiAoIWEuaXNDb250ZXh0Rm9sZGVyICYmIGIuaXNDb250ZXh0Rm9sZGVyKSB7XHJcbiAgICAgICAgcmV0dXJuIDE7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKGEuaXNGb2xkZXIgJiYgIWIuaXNGb2xkZXIpIHtcclxuICAgICAgICByZXR1cm4gLTE7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKCFhLmlzRm9sZGVyICYmIGIuaXNGb2xkZXIpIHtcclxuICAgICAgICByZXR1cm4gMTtcclxuICAgICAgfVxyXG4gICAgICBpZiAoYS5pc0ZvbGRlciAmJiBiLmlzRm9sZGVyKSB7XHJcbiAgICAgICAgcmV0dXJuIFV0aWxzLnNvcnRWYWx1ZXMoJ2xhYmVsJykuY2FsbCh0aGlzLCBhLCBiKTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gVXRpbHMuc29ydFZhbHVlcygnbGFiZWwnKS5jYWxsKHRoaXMsIGEsIGIpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvLyBFeHRlbmRzIHRoZSBvYmplY3RUeXBlc0dyb3VwcyBieSB0aGUgZWxlbWVudHMgZm9yIGVhY2ggb2JqZWN0IHR5cGVcclxuICAvLyBVc2VkIGluIGV4cGVydCBzZWFyY2ggbW9kZVxyXG4gIHB1YmxpYyBidWlsZFR5cGVHcm91cFRyZWUoKSB7XHJcblxyXG4gICAgbGV0IGdUcmVlID0gW107XHJcbiAgICBsZXQgaSA9IDA7XHJcbiAgICBmb3IgKGxldCBncm91cCBvZiB0aGlzLm9iamVjdFR5cGVHcm91cHMpIHtcclxuICAgICAgbGV0IGcgPSB7XHJcbiAgICAgICAgaWQ6IGkrKyxcclxuICAgICAgICBsYWJlbDogZ3JvdXAubGFiZWwsXHJcbiAgICAgICAgdHJlZTogW11cclxuICAgICAgfTtcclxuICAgICAgbGV0IHR5cGVzID0gW107XHJcbiAgICAgIGZvciAobGV0IG9iamVjdFR5cGUgb2YgZ3JvdXAudHlwZXMpIHtcclxuXHJcbiAgICAgICAgbGV0IHQgPSB7XHJcbiAgICAgICAgICBpZDogb2JqZWN0VHlwZS5pZCxcclxuICAgICAgICAgIGxhYmVsOiBvYmplY3RUeXBlLmxhYmVsLFxyXG4gICAgICAgICAgY2hpbGRyZW46IFtdXHJcbiAgICAgICAgfTtcclxuICAgICAgICBsZXQgY2hpbGRyZW4gPSBbXTtcclxuICAgICAgICBmb3IgKGxldCBlbCBvZiBvYmplY3RUeXBlLmVsZW1lbnRzKSB7XHJcbiAgICAgICAgICBjaGlsZHJlbi5wdXNoKHtcclxuICAgICAgICAgICAgbGFiZWw6IGVsLmxhYmVsLFxyXG4gICAgICAgICAgICB0eXBlOiBlbC50eXBlLFxyXG4gICAgICAgICAgICBkYXRhOiBlbC5xbmFtZVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIHNvcnQgYnkgbGFiZWxcclxuICAgICAgICB0LmNoaWxkcmVuID0gY2hpbGRyZW4uc29ydChVdGlscy5zb3J0VmFsdWVzKCdsYWJlbCcpKTtcclxuICAgICAgICB0eXBlcy5wdXNoKHQpO1xyXG4gICAgICB9XHJcbiAgICAgIGcudHJlZSA9IHR5cGVzLnNvcnQoVXRpbHMuc29ydFZhbHVlcygnbGFiZWwnKSk7XHJcblxyXG5cclxuICAgICAgZ1RyZWUucHVzaChnKTtcclxuICAgIH1cclxuICAgIHJldHVybiBnVHJlZTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE92ZXJyaWRlIHRoZSBjdXJyZW50IHF1ZXJ5IGJ5IGEgZGlmZmVyZW50IG9uZS5cclxuICAgKiBUaGlzIGNvdWxkIGJlIGRvbmUgYnkgZm9yIGV4YW1wbGUgbG9hZGluZyBhIHN0b3JlZCBxdWVyeS5cclxuICAgKlxyXG4gICAqIEBwYXJhbSBxdWVyeSAtIHRoZSBxdWVyeSB0aGF0IHNob3VsZCByZXBsYWNlIHRoZSBjdXJyZW50IHF1ZXJ5LCB0aGlzIG1heSBiZSBlaXRoZXIgYSBTZWFyY2hRdWVyeSBpbnN0YW5jZSxcclxuICAgKiBhIEpTT04gc3RyaW5nIG9mIGFuIG9iamVjdCBtYXRjaGluZyB0aGUgc2VhcmNoIGFwaVxyXG4gICAqL1xyXG4gIHB1YmxpYyBzZXRRdWVyeShxdWVyeTogU2VhcmNoUXVlcnkpIHtcclxuICAgIGlmICh0aGlzLmlzTmV3UXVlcnkocXVlcnkpKSB7XHJcbiAgICAgIHRoaXMuc2V0RGVmYXVsdEFnZ3MoKTtcclxuICAgICAgdGhpcy5xdWVyeSA9IHF1ZXJ5O1xyXG4gICAgICB0aGlzLnF1ZXJ5U291cmNlLm5leHQodGhpcy5xdWVyeSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXNldHMgdGhlIGN1cnJlbnQgcXVlcnkuXHJcbiAgICovXHJcbiAgcHVibGljIGNsZWFyUXVlcnkoKSB7XHJcbiAgICB0aGlzLnNldFF1ZXJ5KG5ldyBTZWFyY2hRdWVyeSgpKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaXNOZXdRdWVyeShxdWVyeTogU2VhcmNoUXVlcnkpOiBib29sZWFuIHtcclxuICAgIHJldHVybiBKU09OLnN0cmluZ2lmeShxdWVyeS5nZXRRdWVyeUpzb24oKSkgIT09IEpTT04uc3RyaW5naWZ5KHRoaXMucXVlcnkuZ2V0UXVlcnlKc29uKCkpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogdG9nZ2xlcyB0aGUgc2VhcmNobW9kZSBmcm9tIHJlZ3VsYXIgc2VhcmNoIHRvIGV4cGVydCBzZWFyY2ggYW5kIHZpY2UgdmVyc2FcclxuICAgKi9cclxuICBwdWJsaWMgdG9nZ2xlRXhwZXJ0TW9kZSgpIHtcclxuICAgIGlmICghdGhpcy5xdWVyeS5leHBlcnRNb2RlKSB7XHJcbiAgICAgIHRoaXMubGFzdFF1ZXJ5ID0gdGhpcy5xdWVyeTtcclxuICAgICAgdGhpcy5zZXREZWZhdWx0QWdncygpO1xyXG4gICAgICB0aGlzLnF1ZXJ5ID0gbmV3IFNlYXJjaFF1ZXJ5KCk7XHJcbiAgICAgIHRoaXMucXVlcnkuZXhwZXJ0TW9kZSA9IHRydWU7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnF1ZXJ5ID0gdGhpcy5sYXN0UXVlcnk7XHJcbiAgICB9XHJcbiAgICB0aGlzLnF1ZXJ5Ll9fdXBkYXRlQ2F1c2UgPSBTZWFyY2hRdWVyeS5VUERBVEVfQ0FVU0UuVE9HR0xFRF9FWFBFUlRNT0RFO1xyXG4gICAgdGhpcy5xdWVyeVNvdXJjZS5uZXh0KHRoaXMucXVlcnkpO1xyXG4gICAgdGhpcy5hZ2dyZWdhdGUoKTtcclxuXHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2V0VGVybSh0ZXJtOiBzdHJpbmcpIHtcclxuICAgIHRoaXMucXVlcnkudGVybSA9IHRlcm07XHJcbiAgICB0aGlzLnF1ZXJ5Ll9fdXBkYXRlQ2F1c2UgPSBTZWFyY2hRdWVyeS5VUERBVEVfQ0FVU0UuVEVSTV9TRVQ7XHJcbiAgICB0aGlzLnF1ZXJ5U291cmNlLm5leHQodGhpcy5xdWVyeSk7XHJcbiAgICB0aGlzLmFnZ3JlZ2F0ZSgpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNldFF1ZXJ5U2NvcGUoc2NvcGU6IFF1ZXJ5U2NvcGUpIHtcclxuICAgIHRoaXMucXVlcnkuc2NvcGUgPSBzY29wZTtcclxuICAgIHRoaXMucXVlcnlTb3VyY2UubmV4dCh0aGlzLnF1ZXJ5KTtcclxuICAgIHRoaXMuYWdncmVnYXRlKCk7XHJcbiAgfVxyXG5cclxuICAvLyBzZXQgYWdncmVnYXRpb24gcHJvcGVydGllcyB0byBiZSBhcHBsaWVkIHRvIE9OTFkgYWdncmVnYXRlIHNlYXJjaCBxdWVyaWVzXHJcbiAgcHVibGljIHNldEFnZ3MoYWdnczogYW55LCBleHRlbmQgPSBmYWxzZSkge1xyXG4gICAgdGhpcy5hZ2dzID0gZXh0ZW5kID8gey4uLnRoaXMuYWdncywgLi4uYWdnc30gOiBhZ2dzO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVG9nZ2xlcyBhIHR5cGUgZmlsdGVyLlxyXG4gICAqIEBwYXJhbSB0eXBlIC0gb2JqZWN0IHR5cGVcclxuICAgKi9cclxuICBwdWJsaWMgdG9nZ2xlUXVlcnlUeXBlKHR5cGU6IE9iamVjdFR5cGUpIHtcclxuICAgIHRoaXMucXVlcnkudG9nZ2xlVHlwZSh0eXBlKTtcclxuICAgIHRoaXMucXVlcnkuX191cGRhdGVDYXVzZSA9IFNlYXJjaFF1ZXJ5LlVQREFURV9DQVVTRS5UT0dHTEVEX1RZUEU7XHJcbiAgICB0aGlzLnF1ZXJ5U291cmNlLm5leHQodGhpcy5xdWVyeSk7XHJcbiAgICB0aGlzLmFnZ3JlZ2F0ZShTZWFyY2hRdWVyeS5CQVNFX1BBUkFNUy5UWVBFKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNldHMgdGhlIHF1ZXJpZXMgdGFyZ2V0IHR5cGVzLlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHR5cGVzIC0gYXJyYXkgb2YgT2JqZWN0VHlwZXNcclxuICAgKiBAcGFyYW0gc2lsZW50IElmIHNldCB0byB0cnVlIGFnZ3JlZ2F0ZSB3b24ndCBiZSBjYWxsZWRcclxuICAgKi9cclxuICBwdWJsaWMgc2V0UXVlcnlUeXBlcyh0eXBlczogT2JqZWN0VHlwZVtdLCBzaWxlbnQ/OiBib29sZWFuKSB7XHJcbiAgICB0aGlzLnF1ZXJ5LnR5cGVzID0gdHlwZXM7XHJcbiAgICB0aGlzLmFnZ3MgPSB7XHJcbiAgICAgIHR5cGU6IHtcclxuICAgICAgICBzdWI6IHtcclxuICAgICAgICAgIGNvbnRleHRmb2xkZXJ0eXBlOiB7fVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfTtcclxuICAgIHRoaXMucXVlcnkuX191cGRhdGVDYXVzZSA9IFNlYXJjaFF1ZXJ5LlVQREFURV9DQVVTRS5UWVBFU19TRVQ7XHJcbiAgICB0aGlzLnF1ZXJ5U291cmNlLm5leHQodGhpcy5xdWVyeSk7XHJcbiAgICBpZiAoIXNpbGVudCkge1xyXG4gICAgICB0aGlzLmFnZ3JlZ2F0ZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2V0cyB0aGUgcXVlcmllcyB0YXJnZXQgY29udGV4dCB0eXBlLlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHR5cGUgVGhlIGNvbnRleHQgdHlwZSB0byBiZSBzZXQgb3IgbnVsbCBmb3IgcmVzZXR0aW5nXHJcbiAgICogQHBhcmFtIHNpbGVudCBJZiBzZXQgdG8gdHJ1ZSBhZ2dyZWdhdGUgd29uJ3QgYmUgY2FsbGVkXHJcbiAgICovXHJcbiAgcHVibGljIHNldENvbnRleHRUeXBlKHR5cGU6IE9iamVjdFR5cGUsIHNpbGVudD86IGJvb2xlYW4pIHtcclxuXHJcbiAgICBpZiAodGhpcy5xdWVyeS5jb250ZXh0Rm9sZGVyVHlwZXMubGVuZ3RoICYmICF0eXBlKSB7XHJcbiAgICAgIC8vIGNsZWFyIGNvbnRleHQgZm9sZGVyXHJcbiAgICAgIHRoaXMuZW1pdE5ld0NvbnRleHRGb2xkZXJUeXBlKG51bGwpO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLnF1ZXJ5LmNvbnRleHRGb2xkZXJUeXBlcy5sZW5ndGggJiYgdHlwZS5uYW1lICE9PSB0aGlzLnF1ZXJ5LmNvbnRleHRGb2xkZXJUeXBlc1swXS5uYW1lKSB7XHJcbiAgICAgIC8vIGdvdCBhIHR5cGUgdG8gYmUgc2V0IHVwIHRoYXQgZGlmZmVycyBmcm9tIHRoZSBjdXJyZW50IG9uZVxyXG4gICAgICB0aGlzLmVtaXROZXdDb250ZXh0Rm9sZGVyVHlwZSh0eXBlKTtcclxuICAgIH0gZWxzZSBpZiAoIXRoaXMucXVlcnkuY29udGV4dEZvbGRlclR5cGVzLmxlbmd0aCkge1xyXG4gICAgICAvLyBub3RoaW5nIHNldCB1cCBzbyBmYXJcclxuICAgICAgdGhpcy5lbWl0TmV3Q29udGV4dEZvbGRlclR5cGUodHlwZSk7XHJcbiAgICB9XHJcbiAgICAvLyB0cnlpbmcgdG8gc2V0dXAgdGhlIHNhbWUgdHlwZSBhcyB0aGUgY3VycmVudCBvbiBzaG91bGQgbm90IGVtaXQgYSBuZXcgdmFsdWVcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZW1pdE5ld0NvbnRleHRGb2xkZXJUeXBlKHR5cGUsIHNpbGVudD86IGJvb2xlYW4pIHtcclxuICAgIGlmICghdHlwZSAmJiB0aGlzLnF1ZXJ5LmNvbnRleHRGb2xkZXJUeXBlcy5sZW5ndGggPT09IDApIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy5hZ2dzID0ge1xyXG4gICAgICB0eXBlOiB7XHJcbiAgICAgICAgc3ViOiB7XHJcbiAgICAgICAgICBjb250ZXh0Zm9sZGVydHlwZToge31cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH07XHJcbiAgICB0aGlzLnF1ZXJ5LmNvbnRleHRGb2xkZXJUeXBlcyA9IHR5cGUgPyBbdHlwZV0gOiBbXTtcclxuICAgIHRoaXMucXVlcnkuX191cGRhdGVDYXVzZSA9IFNlYXJjaFF1ZXJ5LlVQREFURV9DQVVTRS5DT05URVhUX0ZPTERFUl9TRVQ7XHJcbiAgICB0aGlzLnF1ZXJ5U291cmNlLm5leHQodGhpcy5xdWVyeSk7XHJcbiAgICBpZiAoIXNpbGVudCkge1xyXG4gICAgICB0aGlzLmFnZ3JlZ2F0ZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVG9nZ2xlcyBhIGNyZWF0ZWQgZmlsdGVyLlxyXG4gICAqIEBwYXJhbSBmaWx0ZXIgLSB0aGUgZmlsdGVyIHRvIGJlIHRvZ2dsZWRcclxuICAgKi9cclxuICBwdWJsaWMgdG9nZ2xlUXVlcnlGaWx0ZXIoZmlsdGVyOiBTZWFyY2hGaWx0ZXIsIG92ZXJyaWRlPzogYm9vbGVhbikge1xyXG4gICAgdGhpcy5xdWVyeS50b2dnbGVGaWx0ZXIoZmlsdGVyLCBvdmVycmlkZSk7XHJcbiAgICB0aGlzLnF1ZXJ5Ll9fdXBkYXRlQ2F1c2UgPSBTZWFyY2hRdWVyeS5VUERBVEVfQ0FVU0UuVE9HR0xFRF9GSUxURVI7XHJcbiAgICB0aGlzLnF1ZXJ5U291cmNlLm5leHQodGhpcy5xdWVyeSk7XHJcbiAgICB0aGlzLmFnZ3JlZ2F0ZShmaWx0ZXIucHJvcGVydHkpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQWRkcyBhIGZpbHRlciB0byB0aGUgcXVlcnkuXHJcbiAgICogQHBhcmFtIGZpbHRlciAtIHRoZSBmaWx0ZXIgdG8gYmUgYWRkZWRcclxuICAgKi9cclxuICBwdWJsaWMgYWRkUXVlcnlGaWx0ZXIoZmlsdGVyOiBTZWFyY2hGaWx0ZXIpIHtcclxuICAgIHRoaXMucXVlcnkuYWRkRmlsdGVyKGZpbHRlcik7XHJcbiAgICB0aGlzLnF1ZXJ5Ll9fdXBkYXRlQ2F1c2UgPSBTZWFyY2hRdWVyeS5VUERBVEVfQ0FVU0UuQURERURfRklMVEVSO1xyXG4gICAgdGhpcy5xdWVyeVNvdXJjZS5uZXh0KHRoaXMucXVlcnkpO1xyXG4gICAgdGhpcy5hZ2dyZWdhdGUoZmlsdGVyLnByb3BlcnR5KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJlbW92ZXMgYSBmaWx0ZXIgdG8gdGhlIHF1ZXJ5LlxyXG4gICAqIEBwYXJhbSBmaWx0ZXIgLSB0aGUgZmlsdGVyIHRvIGJlIHJlbW92ZWRcclxuICAgKi9cclxuICBwdWJsaWMgcmVtb3ZlUXVlcnlGaWx0ZXIoZmlsdGVyOiBTZWFyY2hGaWx0ZXIpIHtcclxuICAgIHRoaXMucXVlcnkucmVtb3ZlRmlsdGVyKGZpbHRlci5wcm9wZXJ0eSk7XHJcbiAgICB0aGlzLnF1ZXJ5Ll9fdXBkYXRlQ2F1c2UgPSBTZWFyY2hRdWVyeS5VUERBVEVfQ0FVU0UuUkVNT1ZFRF9GSUxURVI7XHJcbiAgICB0aGlzLnF1ZXJ5U291cmNlLm5leHQodGhpcy5xdWVyeSk7XHJcbiAgICB0aGlzLmFnZ3JlZ2F0ZShmaWx0ZXIucHJvcGVydHkpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2V0cyB0aGUgZmlsdGVycyBmb3IgYW4gaW5kZXhkYXRhIHNlYXJjaC5cclxuICAgKiBTZXR0aW5nIHRoZW0gd2lsbCBhbHNvIHJlbW92ZSBhbGwgaW5kZXhkYXRhIGZpbHRlcnMgc2V0IGJlZm9yZS5cclxuICAgKlxyXG4gICAqIEBwYXJhbSBmaWx0ZXJzIC0gdGhlIGZpbHRlcnMgdG8gYmUgc2V0XHJcbiAgICogQHBhcmFtIHNpbGVudCBJZiBzZXQgdG8gdHJ1ZSBhZ2dyZWdhdGUgd29uJ3QgYmUgY2FsbGVkXHJcbiAgICovXHJcbiAgcHVibGljIHNldEluZGV4U2VhcmNoUXVlcnlGaWx0ZXJzKGZpbHRlcnM6IFNlYXJjaEZpbHRlcltdLCBzaWxlbnQ/OiBib29sZWFuKSB7XHJcblxyXG4gICAgLy8gcmVtb3ZlIHByZXZpb3VzIGZpbHRlcnMgKGFsbCBmaWx0ZXJzIHRoYXQgYXJlIG5vdCBiYXNlcGFyYW0gZmlsdGVycylcclxuICAgIHRoaXMucXVlcnkuZmlsdGVycyA9IHRoaXMucXVlcnkuZmlsdGVycy5maWx0ZXIoKGYpID0+IHRoaXMuaXNCYXNlUGFyYW1GaWx0ZXIoZikpO1xyXG4gICAgZm9yIChsZXQgZiBvZiBmaWx0ZXJzKSB7XHJcbiAgICAgIHRoaXMucXVlcnkuYWRkRmlsdGVyKGYpO1xyXG4gICAgfVxyXG4gICAgaWYgKCFzaWxlbnQpIHtcclxuICAgICAgdGhpcy5hZ2dyZWdhdGUoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRJbmRleFNlYXJjaFF1ZXJ5RmlsdGVycyhxdWVyeT86IFNlYXJjaFF1ZXJ5KTogU2VhcmNoRmlsdGVyW10ge1xyXG4gICAgbGV0IHEgPSBxdWVyeSB8fCB0aGlzLnF1ZXJ5O1xyXG4gICAgcmV0dXJuIHEuZmlsdGVycy5maWx0ZXIoKGYpID0+ICF0aGlzLmlzQmFzZVBhcmFtRmlsdGVyKGYpKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIERldGVybWluZXMgd2hldGhlciBvciBub3QgdGhlIHByb3ZpZGVkIHNlYXJjaCBmaWx0ZXIgYmVsb25ncyB0byBhIGJhc2UgcGFyYW0uXHJcbiAgICpcclxuICAgKiBAcGFyYW0gZmlsdGVyIC0gdGhlIGZpbHRlciB0byBiZSBjaGVja2VkXHJcbiAgICovXHJcbiAgcHVibGljIGlzQmFzZVBhcmFtRmlsdGVyKGZpbHRlcjogU2VhcmNoRmlsdGVyKTogYm9vbGVhbiB7XHJcbiAgICAvL3JldHVybiBPYmplY3QudmFsdWVzKFNlYXJjaFF1ZXJ5LkJBU0VfUEFSQU1TKS5zb21lKChicCkgPT4gZmlsdGVyLnByb3BlcnR5ID09PSBicCk7XHJcbiAgICByZXR1cm4gT2JqZWN0LmtleXMoU2VhcmNoUXVlcnkuQkFTRV9QQVJBTVMpLnNvbWUoKGJwS2V5KSA9PiBmaWx0ZXIucHJvcGVydHkgPT09IFNlYXJjaFF1ZXJ5LkJBU0VfUEFSQU1TW2JwS2V5XSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBFeGVjdXRlcyB0aGUgY3VycmVudCBxdWVyeSBhcyBhZ2dyZWdhdGUgc2VhcmNoXHJcbiAgICovXHJcbiAgcHVibGljIGFnZ3JlZ2F0ZShiYXNlUGFyYW0gPSAnJykge1xyXG5cclxuICAgIGNvbnN0IGFnZ1F1ZXJ5ID0ge2FnZ3M6IHRoaXMuYWdncywgLi4udGhpcy5xdWVyeS5nZXRRdWVyeUpzb24oKX07XHJcbiAgICAvLyBjb21wYXJlIHRoZSBjYWxsIHRvIGJlIG1hZGUgd2l0aCBhIGZvcm1lciByZXF1ZXN0XHJcbiAgICBpZiAodGhpcy5sYXN0QWdnQ2FsbENvbXBhcmF0b3IgIT09IEpTT04uc3RyaW5naWZ5KGFnZ1F1ZXJ5KSkge1xyXG4gICAgICB0aGlzLmxhc3RBZ2dDYWxsQ29tcGFyYXRvciA9IEpTT04uc3RyaW5naWZ5KGFnZ1F1ZXJ5KTtcclxuICAgICAgdGhpcy5nZXRTZWFyY2hTdGF0ZShhZ2dRdWVyeSlcclxuICAgICAgICAuc3Vic2NyaWJlKChxdWVyeVN0YXRlOiBTZWFyY2hTdGF0ZSkgPT4ge1xyXG4gICAgICAgICAgcXVlcnlTdGF0ZS5sYXN0Q2hhbmdlID0gYmFzZVBhcmFtO1xyXG4gICAgICAgICAgdGhpcy5xdWVyeVN0YXRlID0gcXVlcnlTdGF0ZTtcclxuICAgICAgICAgIHRoaXMucXVlcnlTdGF0ZVNvdXJjZS5uZXh0KHRoaXMucXVlcnlTdGF0ZSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmVzZXQgdGhlIHF1ZXJ5XHJcbiAgICovXHJcbiAgcHVibGljIHJlc2V0KHNpbGVudD86IGJvb2xlYW4pIHtcclxuICAgIHRoaXMucXVlcnkgPSBuZXcgU2VhcmNoUXVlcnkoKTtcclxuICAgIHRoaXMuc2V0RGVmYXVsdEFnZ3MoKTtcclxuICAgIHRoaXMucXVlcnlTb3VyY2UubmV4dCh0aGlzLnF1ZXJ5KTtcclxuICAgIGlmICghc2lsZW50KSB7XHJcbiAgICAgIHRoaXMuYWdncmVnYXRlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBleGl0SW5kZXhkYXRhU2VhcmNoKCkge1xyXG4gICAgdGhpcy5zZXRJbmRleFNlYXJjaFF1ZXJ5RmlsdGVycyhbXSwgdHJ1ZSk7XHJcbiAgICB0aGlzLnNldFF1ZXJ5VHlwZXMoW10sIHRydWUpO1xyXG4gICAgdGhpcy5zZXRDb250ZXh0VHlwZShudWxsLCB0cnVlKTtcclxuICAgIHRoaXMuYWdncmVnYXRlKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBFeGVjdXRlcyB0aGUgY3VycmVudCBxdWVyeSBhcyBhZ2dyZWdhdGUgc2VhcmNoXHJcbiAgICovXHJcbiAgcHVibGljIGdldFNlYXJjaFN0YXRlKHF1ZXJ5SnNvbjogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5zZWFyY2hTZXJ2aWNlLmdldFNlYXJjaFN0YXRlKHF1ZXJ5SnNvbik7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXV0b2NvbXBsZXRlKHRlcm06IHN0cmluZykge1xyXG4gICAgcmV0dXJuIHRoaXMuc2VhcmNoU2VydmljZS5hdXRvY29tcGxldGUodGVybSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBGaW5kcyB0aGUgb2JqZWN0IHR5cGUgZWxlbWVudCBpbnNpZGUgb2YgdGhlIHF1ZXJpZXMgdGFyZ2V0IHR5cGVzXHJcbiAgICogZm9yIGEgZm9ybSBlbGVtZW50cyBuYW1lLiBVc2VkIGUuZy4gZm9yIHRoZSBzZWFyY2ggc3VtbWFyeSBwYW5lbC5cclxuICAgKlxyXG4gICAqIEBwYXJhbSBmb3JtRWxlbWVudE5hbWUgLSB0aGUgbmFtZSBvZiB0aGUgZm9ybSBlbGVtZW50XHJcbiAgICogQHJldHVybiB0aGUgb2JqZWN0IHR5cGUgZWxlbWVudCBtYXRjaGluZyB0aGUgZm9ybSBlbGVtZW50cyBuYW1lXHJcbiAgICovXHJcbiAgcHVibGljIGdldFRhcmdldFR5cGVFbGVtZW50QnlOYW1lKGZvcm1FbGVtZW50TmFtZTogc3RyaW5nKTogYW55IHtcclxuICAgIGxldCBpID0gMDtcclxuICAgIGxldCBtYXRjaDtcclxuICAgIHdoaWxlICghbWF0Y2ggJiYgaSA8IHRoaXMucXVlcnkudHlwZXMubGVuZ3RoKSB7XHJcbiAgICAgIG1hdGNoID0gdGhpcy5xdWVyeS50eXBlc1tpXS5lbGVtZW50cy5maW5kKChlbGVtZW50KSA9PiBlbGVtZW50LnFuYW1lID09PSBmb3JtRWxlbWVudE5hbWUpO1xyXG4gICAgICBpKys7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbWF0Y2g7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
package/esm2015/eo-sdk-client.js
CHANGED
|
@@ -2,71 +2,72 @@
|
|
|
2
2
|
* Generated bundle index. Do not edit.
|
|
3
3
|
*/
|
|
4
4
|
export * from './public_api';
|
|
5
|
-
export { EoClientRoutingModule as
|
|
6
|
-
export { InboxStateRoutingModule as
|
|
7
|
-
export { ObjectStateRoutingModule as
|
|
8
|
-
export { PrepareStateRoutingModule as
|
|
9
|
-
export { ProcessStateComponent as
|
|
5
|
+
export { EoClientRoutingModule as ɵco } from './app/eo-client/eo-client-routing.module';
|
|
6
|
+
export { InboxStateRoutingModule as ɵcm } from './app/eo-client/inbox-state/inbox-state-routing.module';
|
|
7
|
+
export { ObjectStateRoutingModule as ɵcl } from './app/eo-client/object-state/object-state-routing.module';
|
|
8
|
+
export { PrepareStateRoutingModule as ɵcn } from './app/eo-client/prepare-state/prepare-state-routing.module';
|
|
9
|
+
export { ProcessStateComponent as ɵcp } from './app/eo-client/process-state/process-state.component';
|
|
10
10
|
export { PendingChangesGuard as ɵa } from './app/eo-framework-core/pending-changes/pending-changes-guard.service';
|
|
11
11
|
export { PipesModule as ɵe } from './app/eo-framework-core/pipes/pipes.module';
|
|
12
|
-
export { ActionComponentAnchorDirective as
|
|
13
|
-
export { AddResubmissionActionComponent as
|
|
14
|
-
export { AddResubmissionComponent as
|
|
15
|
-
export { AddSubscriptionActionComponent as
|
|
16
|
-
export { AddSubscriptionComponent as
|
|
17
|
-
export { ClipboardActionComponent as
|
|
18
|
-
export { ClipboardLinkActionComponent as
|
|
19
|
-
export { ClipboardOriginalActionComponent as
|
|
20
|
-
export { ClipboardPdfActionComponent as
|
|
21
|
-
export { CopyActionComponent as
|
|
22
|
-
export { CustomActionsComponent as
|
|
23
|
-
export { CutActionComponent as
|
|
24
|
-
export { DeleteActionComponent as
|
|
25
|
-
export { DeletePreparedActionComponent as
|
|
26
|
-
export { DeleteComponent as
|
|
27
|
-
export { DeleteContentActionComponent as
|
|
28
|
-
export { DownloadActionComponent as
|
|
29
|
-
export { DownloadOriginalActionComponent as
|
|
30
|
-
export { DownloadPdfActionComponent as
|
|
31
|
-
export { EmailActionComponent as
|
|
32
|
-
export { EmailLinkActionComponent as
|
|
33
|
-
export { EmailOriginalActionComponent as
|
|
34
|
-
export { EmailPdfActionComponent as
|
|
35
|
-
export { FavoriteActionComponent as
|
|
36
|
-
export { DefinalizeActionComponent as
|
|
37
|
-
export { FinalizeActionComponent as
|
|
38
|
-
export { OpenContextActionComponent as
|
|
39
|
-
export { OpenDocumentActionComponent as
|
|
40
|
-
export { OpenDocumentComponent as
|
|
41
|
-
export { OpenVersionsActionComponent as
|
|
42
|
-
export { RemoveSubscriptionActionComponent as
|
|
43
|
-
export { RestoreVersionActionComponent as
|
|
44
|
-
export { ShareObjectActionComponent as
|
|
45
|
-
export { ShareObjectComponent as
|
|
46
|
-
export { UnlockActionComponent as
|
|
47
|
-
export { UpdateResubmissionActionComponent as
|
|
48
|
-
export { SimpleWorkflowActionComponent as
|
|
49
|
-
export { WorkflowActionComponent as
|
|
50
|
-
export { WorkflowComponent as
|
|
12
|
+
export { ActionComponentAnchorDirective as ɵu } from './app/eo-framework/actions/action-menu/action-component-anchor/action-component-anchor.directive';
|
|
13
|
+
export { AddResubmissionActionComponent as ɵbw } from './app/eo-framework/actions/actions/add-resubmission-action/add-resubmission-action';
|
|
14
|
+
export { AddResubmissionComponent as ɵbx } from './app/eo-framework/actions/actions/add-resubmission-action/add-resubmission/add-resubmission.component';
|
|
15
|
+
export { AddSubscriptionActionComponent as ɵbq } from './app/eo-framework/actions/actions/add-subscription-action/add-subscription-action';
|
|
16
|
+
export { AddSubscriptionComponent as ɵbr } from './app/eo-framework/actions/actions/add-subscription-action/add-subscription/add-subscription.component';
|
|
17
|
+
export { ClipboardActionComponent as ɵbg } from './app/eo-framework/actions/actions/clipboard/clipboard-action';
|
|
18
|
+
export { ClipboardLinkActionComponent as ɵbh } from './app/eo-framework/actions/actions/clipboard/clipboard-link-action';
|
|
19
|
+
export { ClipboardOriginalActionComponent as ɵbi } from './app/eo-framework/actions/actions/clipboard/clipboard-original-action';
|
|
20
|
+
export { ClipboardPdfActionComponent as ɵbj } from './app/eo-framework/actions/actions/clipboard/clipboard-pdf-action';
|
|
21
|
+
export { CopyActionComponent as ɵw } from './app/eo-framework/actions/actions/copy-action/copy-action';
|
|
22
|
+
export { CustomActionsComponent as ɵbv } from './app/eo-framework/actions/actions/custom-actions/custom-actions.component';
|
|
23
|
+
export { CutActionComponent as ɵcb } from './app/eo-framework/actions/actions/cut-action/cut-action';
|
|
24
|
+
export { DeleteActionComponent as ɵbl } from './app/eo-framework/actions/actions/delete-action/delete-action';
|
|
25
|
+
export { DeletePreparedActionComponent as ɵbp } from './app/eo-framework/actions/actions/delete-action/delete-prepared-action';
|
|
26
|
+
export { DeleteComponent as ɵbm } from './app/eo-framework/actions/actions/delete-action/delete/delete.component';
|
|
27
|
+
export { DeleteContentActionComponent as ɵce } from './app/eo-framework/actions/actions/delete-content-action/delete-content-action';
|
|
28
|
+
export { DownloadActionComponent as ɵy } from './app/eo-framework/actions/actions/download-action/download-action';
|
|
29
|
+
export { DownloadOriginalActionComponent as ɵz } from './app/eo-framework/actions/actions/download-original-action/download-original-action';
|
|
30
|
+
export { DownloadPdfActionComponent as ɵba } from './app/eo-framework/actions/actions/download-pdf-action/download-pdf-action';
|
|
31
|
+
export { EmailActionComponent as ɵbc } from './app/eo-framework/actions/actions/email/email-action';
|
|
32
|
+
export { EmailLinkActionComponent as ɵbd } from './app/eo-framework/actions/actions/email/email-link-action';
|
|
33
|
+
export { EmailOriginalActionComponent as ɵbe } from './app/eo-framework/actions/actions/email/email-original-action';
|
|
34
|
+
export { EmailPdfActionComponent as ɵbf } from './app/eo-framework/actions/actions/email/email-pdf-action';
|
|
35
|
+
export { FavoriteActionComponent as ɵbk } from './app/eo-framework/actions/actions/favorite-action/favorite-action';
|
|
36
|
+
export { DefinalizeActionComponent as ɵcd } from './app/eo-framework/actions/actions/finalize/definalize-action';
|
|
37
|
+
export { FinalizeActionComponent as ɵcc } from './app/eo-framework/actions/actions/finalize/finalize-action';
|
|
38
|
+
export { OpenContextActionComponent as ɵx } from './app/eo-framework/actions/actions/open-context-action/open-context-action';
|
|
39
|
+
export { OpenDocumentActionComponent as ɵbb } from './app/eo-framework/actions/actions/open-document-action/open-document-action';
|
|
40
|
+
export { OpenDocumentComponent as ɵv } from './app/eo-framework/actions/actions/open-document-action/open-document-action.component';
|
|
41
|
+
export { OpenVersionsActionComponent as ɵbn } from './app/eo-framework/actions/actions/open-versions-action/open-versions-action';
|
|
42
|
+
export { RemoveSubscriptionActionComponent as ɵbs } from './app/eo-framework/actions/actions/remove-subscription-action/remove-subscription-action';
|
|
43
|
+
export { RestoreVersionActionComponent as ɵbo } from './app/eo-framework/actions/actions/restore-version-action/restore-version-action';
|
|
44
|
+
export { ShareObjectActionComponent as ɵbz } from './app/eo-framework/actions/actions/share-object-action/share-object-action';
|
|
45
|
+
export { ShareObjectComponent as ɵca } from './app/eo-framework/actions/actions/share-object-action/share-object/share-object.component';
|
|
46
|
+
export { UnlockActionComponent as ɵcf } from './app/eo-framework/actions/actions/unlock-action/unlock-action';
|
|
47
|
+
export { UpdateResubmissionActionComponent as ɵby } from './app/eo-framework/actions/actions/update-resubmission-action/update-resubmission-action';
|
|
48
|
+
export { SimpleWorkflowActionComponent as ɵcg } from './app/eo-framework/actions/actions/workflow-action/simple-workflow-action.component';
|
|
49
|
+
export { WorkflowActionComponent as ɵbt } from './app/eo-framework/actions/actions/workflow-action/workflow-action.component';
|
|
50
|
+
export { WorkflowComponent as ɵbu } from './app/eo-framework/actions/actions/workflow-action/workflow/workflow.component';
|
|
51
51
|
export { AppProcessComponent as ɵd } from './app/eo-framework/app-shell/app-bar/app-process/app-process.component';
|
|
52
52
|
export { AppShellRoutingModule as ɵc } from './app/eo-framework/app-shell/app-shell-routing.module';
|
|
53
|
-
export { DatepickerService as
|
|
54
|
-
export { YearRangeDirective as
|
|
55
|
-
export { fadeInOut as
|
|
56
|
-
export { ReferenceFinderEntryComponent as
|
|
57
|
-
export { ReferenceFinderComponent as
|
|
58
|
-
export { ReferenceFinderService as
|
|
59
|
-
export { PaginationComponent as
|
|
60
|
-
export { DynamicListFilterComponent as
|
|
61
|
-
export { ListFilterComponent as
|
|
62
|
-
export { DuetimeInfoComponent as
|
|
63
|
-
export { EditIconComponent as
|
|
64
|
-
export { PrepareContentExistsInfoComponent as
|
|
65
|
-
export { ProcessFormComponent as
|
|
66
|
-
export { ProcessFormModule as
|
|
67
|
-
export { TreeNodeComponent as
|
|
68
|
-
export { IndexdataSummaryEntryComponent as
|
|
53
|
+
export { DatepickerService as ɵj } from './app/eo-framework/form-elements/datetime/datepicker/service/datepicker.service';
|
|
54
|
+
export { YearRangeDirective as ɵk } from './app/eo-framework/form-elements/datetime/year-range/year-range.directive';
|
|
55
|
+
export { fadeInOut as ɵm } from './app/eo-framework/form-elements/id-reference/animation/reference-finder.animation';
|
|
56
|
+
export { ReferenceFinderEntryComponent as ɵo } from './app/eo-framework/form-elements/id-reference/reference-finder-entry/reference-finder-entry.component';
|
|
57
|
+
export { ReferenceFinderComponent as ɵl } from './app/eo-framework/form-elements/id-reference/reference-finder/reference-finder.component';
|
|
58
|
+
export { ReferenceFinderService as ɵn } from './app/eo-framework/form-elements/id-reference/service/reference-finder.service';
|
|
59
|
+
export { PaginationComponent as ɵr } from './app/eo-framework/grid/extensions/pagination/pagination.component';
|
|
60
|
+
export { DynamicListFilterComponent as ɵp } from './app/eo-framework/grid/filters/dynamic-list-filter.component';
|
|
61
|
+
export { ListFilterComponent as ɵq } from './app/eo-framework/grid/filters/list-filter.component';
|
|
62
|
+
export { DuetimeInfoComponent as ɵcj } from './app/eo-framework/inbox-details/duetimeInfo/duetimeInfo.component';
|
|
63
|
+
export { EditIconComponent as ɵci } from './app/eo-framework/object-details/edit-icon/edit-icon.component';
|
|
64
|
+
export { PrepareContentExistsInfoComponent as ɵck } from './app/eo-framework/prepare-details/prepare-content-exists-info/prepare-content-exists-info.component';
|
|
65
|
+
export { ProcessFormComponent as ɵt } from './app/eo-framework/process-form/process-form.component';
|
|
66
|
+
export { ProcessFormModule as ɵs } from './app/eo-framework/process-form/process-form.module';
|
|
67
|
+
export { TreeNodeComponent as ɵi } from './app/eo-framework/tree/tree-node/tree-node.component';
|
|
68
|
+
export { IndexdataSummaryEntryComponent as ɵg } from './app/eo-framework/ui/indexdata-summary/indexdata-summary-entry/indexdata-summary-entry.component';
|
|
69
|
+
export { QueryScopeSelectComponent as ɵf } from './app/eo-framework/ui/query-scope-select/query-scope-select.component';
|
|
69
70
|
export { UploadOverlayGuard as ɵb } from './app/eo-framework/upload-overlay/upload-overlay-guard.service';
|
|
70
|
-
export { PreventDoubleClickDirective as
|
|
71
|
-
export { OrderByPipe as
|
|
72
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW8tc2RrLWNsaWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9lby1zZGstY2xpZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxjQUFjLENBQUM7QUFFN0IsT0FBTyxFQUFDLHFCQUFxQixJQUFJLEdBQUcsRUFBQyxNQUFNLDBDQUEwQyxDQUFDO0FBQ3RGLE9BQU8sRUFBQyx1QkFBdUIsSUFBSSxHQUFHLEVBQUMsTUFBTSx3REFBd0QsQ0FBQztBQUN0RyxPQUFPLEVBQUMsd0JBQXdCLElBQUksR0FBRyxFQUFDLE1BQU0sMERBQTBELENBQUM7QUFDekcsT0FBTyxFQUFDLHlCQUF5QixJQUFJLEdBQUcsRUFBQyxNQUFNLDREQUE0RCxDQUFDO0FBQzVHLE9BQU8sRUFBQyxxQkFBcUIsSUFBSSxHQUFHLEVBQUMsTUFBTSx1REFBdUQsQ0FBQztBQUNuRyxPQUFPLEVBQUMsbUJBQW1CLElBQUksRUFBRSxFQUFDLE1BQU0sdUVBQXVFLENBQUM7QUFDaEgsT0FBTyxFQUFDLFdBQVcsSUFBSSxFQUFFLEVBQUMsTUFBTSw0Q0FBNEMsQ0FBQztBQUM3RSxPQUFPLEVBQUMsOEJBQThCLElBQUksRUFBRSxFQUFDLE1BQU0sa0dBQWtHLENBQUM7QUFDdEosT0FBTyxFQUFDLDhCQUE4QixJQUFJLEdBQUcsRUFBQyxNQUFNLG9GQUFvRixDQUFDO0FBQ3pJLE9BQU8sRUFBQyx3QkFBd0IsSUFBSSxHQUFHLEVBQUMsTUFBTSx3R0FBd0csQ0FBQztBQUN2SixPQUFPLEVBQUMsOEJBQThCLElBQUksR0FBRyxFQUFDLE1BQU0sb0ZBQW9GLENBQUM7QUFDekksT0FBTyxFQUFDLHdCQUF3QixJQUFJLEdBQUcsRUFBQyxNQUFNLHdHQUF3RyxDQUFDO0FBQ3ZKLE9BQU8sRUFBQyx3QkFBd0IsSUFBSSxHQUFHLEVBQUMsTUFBTSwrREFBK0QsQ0FBQztBQUM5RyxPQUFPLEVBQUMsNEJBQTRCLElBQUksR0FB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QU0sdURBQXVELENBQUM7QUFDOUYsT0FBTyxFQUFDLDhCQUE4QixJQUFJLEVBQUUsRUFBQyxNQUFNLG1HQUFtRyxDQUFDO0FBQ3ZKLE9BQU8sRUFBQyxrQkFBa0IsSUFBSSxFQUFFLEVBQUMsTUFBTSxnRUFBZ0UsQ0FBQztBQUN4RyxPQUFPLEVBQUMsMkJBQTJCLElBQUksR0FBRyxFQUFDLE1BQU0sa0VBQWtFLENBQUM7QUFDcEgsT0FBTyxFQUFDLFdBQVcsSUFBSSxFQUFFLEVBQUMsTUFBTSxnREFBZ0QsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9wdWJsaWNfYXBpJztcblxuZXhwb3J0IHtFb0NsaWVudFJvdXRpbmdNb2R1bGUgYXMgybVjbn0gZnJvbSAnLi9hcHAvZW8tY2xpZW50L2VvLWNsaWVudC1yb3V0aW5nLm1vZHVsZSc7XG5leHBvcnQge0luYm94U3RhdGVSb3V0aW5nTW9kdWxlIGFzIMm1Y2x9IGZyb20gJy4vYXBwL2VvLWNsaWVudC9pbmJveC1zdGF0ZS9pbmJveC1zdGF0ZS1yb3V0aW5nLm1vZHVsZSc7XG5leHBvcnQge09iamVjdFN0YXRlUm91dGluZ01vZHVsZSBhcyDJtWNrfSBmcm9tICcuL2FwcC9lby1jbGllbnQvb2JqZWN0LXN0YXRlL29iamVjdC1zdGF0ZS1yb3V0aW5nLm1vZHVsZSc7XG5leHBvcnQge1ByZXBhcmVTdGF0ZVJvdXRpbmdNb2R1bGUgYXMgybVjbX0gZnJvbSAnLi9hcHAvZW8tY2xpZW50L3ByZXBhcmUtc3RhdGUvcHJlcGFyZS1zdGF0ZS1yb3V0aW5nLm1vZHVsZSc7XG5leHBvcnQge1Byb2Nlc3NTdGF0ZUNvbXBvbmVudCBhcyDJtWNvfSBmcm9tICcuL2FwcC9lby1jbGllbnQvcHJvY2Vzcy1zdGF0ZS9wcm9jZXNzLXN0YXRlLmNvbXBvbmVudCc7XG5leHBvcnQge1BlbmRpbmdDaGFuZ2VzR3VhcmQgYXMgybVhfSBmcm9tICcuL2FwcC9lby1mcmFtZXdvcmstY29yZS9wZW5kaW5nLWNoYW5nZXMvcGVuZGluZy1jaGFuZ2VzLWd1YXJkLnNlcnZpY2UnO1xuZXhwb3J0IHtQaXBlc01vZHVsZSBhcyDJtWV9IGZyb20gJy4vYXBwL2VvLWZyYW1ld29yay1jb3JlL3BpcGVzL3BpcGVzLm1vZHVsZSc7XG5leHBvcnQge0FjdGlvbkNvbXBvbmVudEFuY2hvckRpcmVjdGl2ZSBhcyDJtXR9IGZyb20gJy4vYXBwL2VvLWZyYW1ld29yay9hY3Rpb25zL2FjdGlvbi1tZW51L2FjdGlvbi1jb21wb25lbnQtYW5jaG9yL2FjdGlvbi1jb21wb25lbnQtYW5jaG9yLmRpcmVjdGl2ZSc7XG5leHBvcnQge0FkZFJlc3VibWlzc2lvbkFjdGlvbkNvbXBvbmVudCBhcyDJtWJ2fSBmcm9tICcuL2FwcC9lby1mcmFtZXdvcmsvYWN0aW9ucy9hY3Rpb25zL2FkZC1yZXN1Ym1pc3Npb24tYWN0aW9uL2FkZC1yZXN1Ym1pc3Npb24tYWN0aW9uJztcbmV4cG9ydCB7QWRkUmVzdWJtaXNzaW9uQ29tcG9uZW50IGFzIMm1Ynd9IGZyb20gJy4vYXBwL2VvLWZyYW1ld29yay9hY3Rpb25zL2FjdGlvbnMvYWRkLXJlc3VibWlzc2lvbi1hY3Rpb24vYWRkLXJlc3VibWlzc2lvbi9hZGQtcmVzdWJtaXNzaW9uLmNvbXBvbmVudCc7XG5leHBvcnQge0FkZFN1YnNjcmlwdGlvbkFjdGlvbkNvbXBvbmVudCBhcyDJtWJwfSBmcm9tICcuL2FwcC9lby1mcmFtZXdvcmsvYWN0aW9ucy9hY3Rpb25zL2FkZC1zdWJzY3JpcHRpb24tYWN0aW9uL2FkZC1zdWJzY3JpcHRpb24tYWN0aW9uJztcbmV4cG9ydCB7QWRkU3Vic2NyaXB0aW9uQ29tcG9uZW50IGFzIMm1YnF9IGZyb20gJy4vYXBwL2VvLWZyYW1ld29yay9hY3Rpb25zL2FjdGlvbnMvYWRkLXN1YnNjcmlwdGlvbi1hY3Rpb24vYWRkLXN1YnNjcmlwdGlvbi9hZGQtc3Vic2NyaXB0aW9uLmNvbXBvbmVudCc7XG5leHBvcnQge0NsaXBib2FyZEFjdGlvbkNvbXBvbmVudCBhcyDJtWJmfSBmcm9tICcuL2FwcC9lby1mcmFtZXdvcmsvYWN0aW9ucy9hY3Rpb25zL2NsaXBib2FyZC9jbGlwYm9hcmQtYWN0aW9uJztcbmV4cG9ydCB7Q2xpcGJvYXJkTGlua0FjdGlvbkNvbXBvbmVudCBhcyDJtWJnfSBmcm9tICcuL2FwcC9lby1mcmFtZXdvcmsvYWN0aW9ucy9hY3Rpb25zL2NsaXBib2FyZC9jbGlwYm9hcmQtbGluay1hY3Rpb24nO1xuZXhwb3J0IHtDbGlwYm9hcmRPcmlnaW5hbEFjdGlvbkNvbXBvbmVudCBhcyDJtWJofSBmcm9tICcuL2FwcC9lby1mcmFtZXdvcmsvYWN0aW9ucy9hY3Rpb25zL2NsaXBib2FyZC9jbGlwYm9hcmQtb3JpZ2luYWwtYWN0aW9uJztcbmV4cG9ydCB7Q2xpcGJvYXJkUGRmQWN0aW9uQ29tcG9uZW50IGFzIMm1Yml9IGZyb20gJy4vYXBwL2VvLWZyYW1ld29yay9hY3Rpb25zL2FjdGlvbnMvY2xpcGJvYXJkL2NsaXBib2FyZC1wZGYtYWN0aW9uJztcbmV4cG9ydCB7Q29weUFjdGlvbkNvbXBvbmVudCBhcyDJtXZ9IGZyb20gJy4vYXBwL2VvLWZyYW1ld29yay9hY3Rpb25zL2FjdGlvbnMvY29weS1hY3Rpb24vY29weS1hY3Rpb24nO1xuZXhwb3J0IHtDdXN0b21BY3Rpb25zQ29tcG9uZW50IGFzIMm1YnV9IGZyb20gJy4vYXBwL2VvLWZyYW1ld29yay9hY3Rpb25zL2FjdGlvbnMvY3VzdG9tLWFjdGlvbnMvY3VzdG9tLWFjdGlvbnMuY29tcG9uZW50JztcbmV4cG9ydCB7Q3V0QWN0aW9uQ29tcG9uZW50IGFzIMm1Y2F9IGZyb20gJy4vYXBwL2VvLWZyYW1ld29yay9hY3Rpb25zL2FjdGlvbnMvY3V0LWFjdGlvbi9jdXQtYWN0aW9uJztcbmV4cG9ydCB7RGVsZXRlQWN0aW9uQ29tcG9uZW50IGFzIMm1Ymt9IGZyb20gJy4vYXBwL2VvLWZyYW1ld29yay9hY3Rpb25zL2FjdGlvbnMvZGVsZXRlLWFjdGlvbi9kZWxldGUtYWN0aW9uJztcbmV4cG9ydCB7RGVsZXRlUHJlcGFyZWRBY3Rpb25Db21wb25lbnQgYXMgybVib30gZnJvbSAnLi9hcHAvZW8tZnJhbWV3b3JrL2FjdGlvbnMvYWN0aW9ucy9kZWxldGUtYWN0aW9uL2RlbGV0ZS1wcmVwYXJlZC1hY3Rpb24nO1xuZXhwb3J0IHtEZWxldGVDb21wb25lbnQgYXMgybVibH0gZnJvbSAnLi9hcHAvZW8tZnJhbWV3b3JrL2FjdGlvbnMvYWN0aW9ucy9kZWxldGUtYWN0aW9uL2RlbGV0ZS9kZWxldGUuY29tcG9uZW50JztcbmV4cG9ydCB7RGVsZXRlQ29udGVudEFjdGlvbkNvbXBvbmVudCBhcyDJtWNkfSBmcm9tICcuL2FwcC9lby1mcmFtZXdvcmsvYWN0aW9ucy9hY3Rpb25zL2RlbGV0ZS1jb250ZW50LWFjdGlvbi9kZWxldGUtY29udGVudC1hY3Rpb24nO1xuZXhwb3J0IHtEb3dubG9hZEFjdGlvbkNvbXBvbmVudCBhcyDJtXh9IGZyb20gJy4vYXBwL2VvLWZyYW1ld29yay9hY3Rpb25zL2FjdGlvbnMvZG93bmxvYWQtYWN0aW9uL2Rvd25sb2FkLWFjdGlvbic7XG5leHBvcnQge0Rvd25sb2FkT3JpZ2luYWxBY3Rpb25Db21wb25lbnQgYXMgybV5fSBmcm9tICcuL2FwcC9lby1mcmFtZXdvcmsvYWN0aW9ucy9hY3Rpb25zL2Rvd25sb2FkLW9yaWdpbmFsLWFjdGlvbi9kb3dubG9hZC1vcmlnaW5hbC1hY3Rpb24nO1xuZXhwb3J0IHtEb3dubG9hZFBkZkFjdGlvbkNvbXBvbmVudCBhcyDJtXp9IGZyb20gJy4vYXBwL2VvLWZyYW1ld29yay9hY3Rpb25zL2FjdGlvbnMvZG93bmxvYWQtcGRmLWFjdGlvbi9kb3dubG9hZC1wZGYtYWN0aW9uJztcbmV4cG9ydCB7RW1haWxBY3Rpb25Db21wb25lbnQgYXMgybViYn0gZnJvbSAnLi9hcHAvZW8tZnJhbWV3b3JrL2FjdGlvbnMvYWN0aW9ucy9lbWFpbC9lbWFpbC1hY3Rpb24nO1xuZXhwb3J0IHtFbWFpbExpbmtBY3Rpb25Db21wb25lbnQgYXMgybViY30gZnJvbSAnLi9hcHAvZW8tZnJhbWV3b3JrL2FjdGlvbnMvYWN0aW9ucy9lbWFpbC9lbWFpbC1saW5rLWFjdGlvbic7XG5leHBvcnQge0VtYWlsT3JpZ2luYWxBY3Rpb25Db21wb25lbnQgYXMgybViZH0gZnJvbSAnLi9hcHAvZW8tZnJhbWV3b3JrL2FjdGlvbnMvYWN0aW9ucy9lbWFpbC9lbWFpbC1vcmlnaW5hbC1hY3Rpb24nO1xuZXhwb3J0IHtFbWFpbFBkZkFjdGlvbkNvbXBvbmVudCBhcyDJtWJlfSBmcm9tICcuL2FwcC9lby1mcmFtZXdvcmsvYWN0aW9ucy9hY3Rpb25zL2VtYWlsL2VtYWlsLXBkZi1hY3Rpb24nO1xuZXhwb3J0IHtGYXZvcml0ZUFjdGlvbkNvbXBvbmVudCBhcyDJtWJqfSBmcm9tICcuL2FwcC9lby1mcmFtZXdvcmsvYWN0aW9ucy9hY3Rpb25zL2Zhdm9yaXRlLWFjdGlvbi9mYXZvcml0ZS1hY3Rpb24nO1xuZXhwb3J0IHtEZWZpbmFsaXplQWN0aW9uQ29tcG9uZW50IGFzIMm1Y2N9IGZyb20gJy4vYXBwL2VvLWZyYW1ld29yay9hY3Rpb25zL2FjdGlvbnMvZmluYWxpemUvZGVmaW5hbGl6ZS1hY3Rpb24nO1xuZXhwb3J0IHtGaW5hbGl6ZUFjdGlvbkNvbXBvbmVudCBhcyDJtWNifSBmcm9tICcuL2FwcC9lby1mcmFtZXdvcmsvYWN0aW9ucy9hY3Rpb25zL2ZpbmFsaXplL2ZpbmFsaXplLWFjdGlvbic7XG5leHBvcnQge09wZW5Db250ZXh0QWN0aW9uQ29tcG9uZW50IGFzIMm1d30gZnJvbSAnLi9hcHAvZW8tZnJhbWV3b3JrL2FjdGlvbnMvYWN0aW9ucy9vcGVuLWNvbnRleHQtYWN0aW9uL29wZW4tY29udGV4dC1hY3Rpb24nO1xuZXhwb3J0IHtPcGVuRG9jdW1lbnRBY3Rpb25Db21wb25lbnQgYXMgybViYX0gZnJvbSAnLi9hcHAvZW8tZnJhbWV3b3JrL2FjdGlvbnMvYWN0aW9ucy9vcGVuLWRvY3VtZW50LWFjdGlvbi9vcGVuLWRvY3VtZW50LWFjdGlvbic7XG5leHBvcnQge09wZW5Eb2N1bWVudENvbXBvbmVudCBhcyDJtXV9IGZyb20gJy4vYXBwL2VvLWZyYW1ld29yay9hY3Rpb25zL2FjdGlvbnMvb3Blbi1kb2N1bWVudC1hY3Rpb24vb3Blbi1kb2N1bWVudC1hY3Rpb24uY29tcG9uZW50JztcbmV4cG9ydCB7T3BlblZlcnNpb25zQWN0aW9uQ29tcG9uZW50IGFzIMm1Ym19IGZyb20gJy4vYXBwL2VvLWZyYW1ld29yay9hY3Rpb25zL2FjdGlvbnMvb3Blbi12ZXJzaW9ucy1hY3Rpb24vb3Blbi12ZXJzaW9ucy1hY3Rpb24nO1xuZXhwb3J0IHtSZW1vdmVTdWJzY3JpcHRpb25BY3Rpb25Db21wb25lbnQgYXMgybVicn0gZnJvbSAnLi9hcHAvZW8tZnJhbWV3b3JrL2FjdGlvbnMvYWN0aW9ucy9yZW1vdmUtc3Vic2NyaXB0aW9uLWFjdGlvbi9yZW1vdmUtc3Vic2NyaXB0aW9uLWFjdGlvbic7XG5leHBvcnQge1Jlc3RvcmVWZXJzaW9uQWN0aW9uQ29tcG9uZW50IGFzIMm1Ym59IGZyb20gJy4vYXBwL2VvLWZyYW1ld29yay9hY3Rpb25zL2FjdGlvbnMvcmVzdG9yZS12ZXJzaW9uLWFjdGlvbi9yZXN0b3JlLXZlcnNpb24tYWN0aW9uJztcbmV4cG9ydCB7U2hhcmVPYmplY3RBY3Rpb25Db21wb25lbnQgYXMgybVieX0gZnJvbSAnLi9hcHAvZW8tZnJhbWV3b3JrL2FjdGlvbnMvYWN0aW9ucy9zaGFyZS1vYmplY3QtYWN0aW9uL3NoYXJlLW9iamVjdC1hY3Rpb24nO1xuZXhwb3J0IHtTaGFyZU9iamVjdENvbXBvbmVudCBhcyDJtWJ6fSBmcm9tICcuL2FwcC9lby1mcmFtZXdvcmsvYWN0aW9ucy9hY3Rpb25zL3NoYXJlLW9iamVjdC1hY3Rpb24vc2hhcmUtb2JqZWN0L3NoYXJlLW9iamVjdC5jb21wb25lbnQnO1xuZXhwb3J0IHtVbmxvY2tBY3Rpb25Db21wb25lbnQgYXMgybVjZX0gZnJvbSAnLi9hcHAvZW8tZnJhbWV3b3JrL2FjdGlvbnMvYWN0aW9ucy91bmxvY2stYWN0aW9uL3VubG9jay1hY3Rpb24nO1xuZXhwb3J0IHtVcGRhdGVSZXN1Ym1pc3Npb25BY3Rpb25Db21wb25lbnQgYXMgybVieH0gZnJvbSAnLi9hcHAvZW8tZnJhbWV3b3JrL2FjdGlvbnMvYWN0aW9ucy91cGRhdGUtcmVzdWJtaXNzaW9uLWFjdGlvbi91cGRhdGUtcmVzdWJtaXNzaW9uLWFjdGlvbic7XG5leHBvcnQge1NpbXBsZVdvcmtmbG93QWN0aW9uQ29tcG9uZW50IGFzIMm1Y2Z9IGZyb20gJy4vYXBwL2VvLWZyYW1ld29yay9hY3Rpb25zL2FjdGlvbnMvd29ya2Zsb3ctYWN0aW9uL3NpbXBsZS13b3JrZmxvdy1hY3Rpb24uY29tcG9uZW50JztcbmV4cG9ydCB7V29ya2Zsb3dBY3Rpb25Db21wb25lbnQgYXMgybVic30gZnJvbSAnLi9hcHAvZW8tZnJhbWV3b3JrL2FjdGlvbnMvYWN0aW9ucy93b3JrZmxvdy1hY3Rpb24vd29ya2Zsb3ctYWN0aW9uLmNvbXBvbmVudCc7XG5leHBvcnQge1dvcmtmbG93Q29tcG9uZW50IGFzIMm1YnR9IGZyb20gJy4vYXBwL2VvLWZyYW1ld29yay9hY3Rpb25zL2FjdGlvbnMvd29ya2Zsb3ctYWN0aW9uL3dvcmtmbG93L3dvcmtmbG93LmNvbXBvbmVudCc7XG5leHBvcnQge0FwcFByb2Nlc3NDb21wb25lbnQgYXMgybVkfSBmcm9tICcuL2FwcC9lby1mcmFtZXdvcmsvYXBwLXNoZWxsL2FwcC1iYXIvYXBwLXByb2Nlc3MvYXBwLXByb2Nlc3MuY29tcG9uZW50JztcbmV4cG9ydCB7QXBwU2hlbGxSb3V0aW5nTW9kdWxlIGFzIMm1Y30gZnJvbSAnLi9hcHAvZW8tZnJhbWV3b3JrL2FwcC1zaGVsbC9hcHAtc2hlbGwtcm91dGluZy5tb2R1bGUnO1xuZXhwb3J0IHtEYXRlcGlja2VyU2VydmljZSBhcyDJtWl9IGZyb20gJy4vYXBwL2VvLWZyYW1ld29yay9mb3JtLWVsZW1lbnRzL2RhdGV0aW1lL2RhdGVwaWNrZXIvc2VydmljZS9kYXRlcGlja2VyLnNlcnZpY2UnO1xuZXhwb3J0IHtZZWFyUmFuZ2VEaXJlY3RpdmUgYXMgybVqfSBmcm9tICcuL2FwcC9lby1mcmFtZXdvcmsvZm9ybS1lbGVtZW50cy9kYXRldGltZS95ZWFyLXJhbmdlL3llYXItcmFuZ2UuZGlyZWN0aXZlJztcbmV4cG9ydCB7ZmFkZUluT3V0IGFzIMm1bH0gZnJvbSAnLi9hcHAvZW8tZnJhbWV3b3JrL2Zvcm0tZWxlbWVudHMvaWQtcmVmZXJlbmNlL2FuaW1hdGlvbi9yZWZlcmVuY2UtZmluZGVyLmFuaW1hdGlvbic7XG5leHBvcnQge1JlZmVyZW5jZUZpbmRlckVudHJ5Q29tcG9uZW50IGFzIMm1bn0gZnJvbSAnLi9hcHAvZW8tZnJhbWV3b3JrL2Zvcm0tZWxlbWVudHMvaWQtcmVmZXJlbmNlL3JlZmVyZW5jZS1maW5kZXItZW50cnkvcmVmZXJlbmNlLWZpbmRlci1lbnRyeS5jb21wb25lbnQnO1xuZXhwb3J0IHtSZWZlcmVuY2VGaW5kZXJDb21wb25lbnQgYXMgybVrfSBmcm9tICcuL2FwcC9lby1mcmFtZXdvcmsvZm9ybS1lbGVtZW50cy9pZC1yZWZlcmVuY2UvcmVmZXJlbmNlLWZpbmRlci9yZWZlcmVuY2UtZmluZGVyLmNvbXBvbmVudCc7XG5leHBvcnQge1JlZmVyZW5jZUZpbmRlclNlcnZpY2UgYXMgybVtfSBmcm9tICcuL2FwcC9lby1mcmFtZXdvcmsvZm9ybS1lbGVtZW50cy9pZC1yZWZlcmVuY2Uvc2VydmljZS9yZWZlcmVuY2UtZmluZGVyLnNlcnZpY2UnO1xuZXhwb3J0IHtQYWdpbmF0aW9uQ29tcG9uZW50IGFzIMm1cX0gZnJvbSAnLi9hcHAvZW8tZnJhbWV3b3JrL2dyaWQvZXh0ZW5zaW9ucy9wYWdpbmF0aW9uL3BhZ2luYXRpb24uY29tcG9uZW50JztcbmV4cG9ydCB7RHluYW1pY0xpc3RGaWx0ZXJDb21wb25lbnQgYXMgybVvfSBmcm9tICcuL2FwcC9lby1mcmFtZXdvcmsvZ3JpZC9maWx0ZXJzL2R5bmFtaWMtbGlzdC1maWx0ZXIuY29tcG9uZW50JztcbmV4cG9ydCB7TGlzdEZpbHRlckNvbXBvbmVudCBhcyDJtXB9IGZyb20gJy4vYXBwL2VvLWZyYW1ld29yay9ncmlkL2ZpbHRlcnMvbGlzdC1maWx0ZXIuY29tcG9uZW50JztcbmV4cG9ydCB7RHVldGltZUluZm9Db21wb25lbnQgYXMgybVjaX0gZnJvbSAnLi9hcHAvZW8tZnJhbWV3b3JrL2luYm94LWRldGFpbHMvZHVldGltZUluZm8vZHVldGltZUluZm8uY29tcG9uZW50JztcbmV4cG9ydCB7RWRpdEljb25Db21wb25lbnQgYXMgybVjaH0gZnJvbSAnLi9hcHAvZW8tZnJhbWV3b3JrL29iamVjdC1kZXRhaWxzL2VkaXQtaWNvbi9lZGl0LWljb24uY29tcG9uZW50JztcbmV4cG9ydCB7UHJlcGFyZUNvbnRlbnRFeGlzdHNJbmZvQ29tcG9uZW50IGFzIMm1Y2p9IGZyb20gJy4vYXBwL2VvLWZyYW1ld29yay9wcmVwYXJlLWRldGFpbHMvcHJlcGFyZS1jb250ZW50LWV4aXN0cy1pbmZvL3ByZXBhcmUtY29udGVudC1leGlzdHMtaW5mby5jb21wb25lbnQnO1xuZXhwb3J0IHtQcm9jZXNzRm9ybUNvbXBvbmVudCBhcyDJtXN9IGZyb20gJy4vYXBwL2VvLWZyYW1ld29yay9wcm9jZXNzLWZvcm0vcHJvY2Vzcy1mb3JtLmNvbXBvbmVudCc7XG5leHBvcnQge1Byb2Nlc3NGb3JtTW9kdWxlIGFzIMm1cn0gZnJvbSAnLi9hcHAvZW8tZnJhbWV3b3JrL3Byb2Nlc3MtZm9ybS9wcm9jZXNzLWZvcm0ubW9kdWxlJztcbmV4cG9ydCB7VHJlZU5vZGVDb21wb25lbnQgYXMgybVofSBmcm9tICcuL2FwcC9lby1mcmFtZXdvcmsvdHJlZS90cmVlLW5vZGUvdHJlZS1ub2RlLmNvbXBvbmVudCc7XG5leHBvcnQge0luZGV4ZGF0YVN1bW1hcnlFbnRyeUNvbXBvbmVudCBhcyDJtWZ9IGZyb20gJy4vYXBwL2VvLWZyYW1ld29yay91aS9pbmRleGRhdGEtc3VtbWFyeS9pbmRleGRhdGEtc3VtbWFyeS1lbnRyeS9pbmRleGRhdGEtc3VtbWFyeS1lbnRyeS5jb21wb25lbnQnO1xuZXhwb3J0IHtVcGxvYWRPdmVybGF5R3VhcmQgYXMgybVifSBmcm9tICcuL2FwcC9lby1mcmFtZXdvcmsvdXBsb2FkLW92ZXJsYXkvdXBsb2FkLW92ZXJsYXktZ3VhcmQuc2VydmljZSc7XG5leHBvcnQge1ByZXZlbnREb3VibGVDbGlja0RpcmVjdGl2ZSBhcyDJtWNnfSBmcm9tICcuL2FwcC9lby1mcmFtZXdvcmsvdXRpbC9kaXJlY3RpdmUvcHJldmVudC1kb3VibGUtY2xpY2suZGlyZWN0aXZlJztcbmV4cG9ydCB7T3JkZXJCeVBpcGUgYXMgybVnfSBmcm9tICcuL2FwcC9lby1mcmFtZXdvcmsvdXRpbC9zb3J0YWJsZS9vcmRlci1ieS5waXBlJzsiXX0=
|
|
71
|
+
export { PreventDoubleClickDirective as ɵch } from './app/eo-framework/util/directive/prevent-double-click.directive';
|
|
72
|
+
export { OrderByPipe as ɵh } from './app/eo-framework/util/sortable/order-by.pipe';
|
|
73
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW8tc2RrLWNsaWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9lby1zZGstY2xpZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxjQUFjLENBQUM7QUFFN0IsT0FBTyxFQUFDLHFCQUFxQixJQUFJLEdBQUcsRUFBQyxNQUFNLDBDQUEwQyxDQUFDO0FBQ3RGLE9BQU8sRUFBQyx1QkFBdUIsSUFBSSxHQUFHLEVBQUMsTUFBTSx3REFBd0QsQ0FBQztBQUN0RyxPQUFPLEVBQUMsd0JBQXdCLElBQUksR0FBRyxFQUFDLE1BQU0sMERBQTBELENBQUM7QUFDekcsT0FBTyxFQUFDLHlCQUF5QixJQUFJLEdBQUcsRUFBQyxNQUFNLDREQUE0RCxDQUFDO0FBQzVHLE9BQU8sRUFBQyxxQkFBcUIsSUFBSSxHQUFHLEVBQUMsTUFBTSx1REFBdUQsQ0FBQztBQUNuRyxPQUFPLEVBQUMsbUJBQW1CLElBQUksRUFBRSxFQUFDLE1BQU0sdUVBQXVFLENBQUM7QUFDaEgsT0FBTyxFQUFDLFdBQVcsSUFBSSxFQUFFLEVBQUMsTUFBTSw0Q0FBNEMsQ0FBQztBQUM3RSxPQUFPLEVBQUMsOEJBQThCLElBQUksRUFBRSxFQUFDLE1BQU0sa0dBQWtHLENBQUM7QUFDdEosT0FBTyxFQUFDLDhCQUE4QixJQUFJLEdBQUcsRUFBQyxNQUFNLG9GQUFvRixDQUFDO0FBQ3pJLE9BQU8sRUFBQyx3QkFBd0IsSUFBSSxHQUFHLEVBQUMsTUFBTSx3R0FBd0csQ0FBQztBQUN2SixPQUFPLEVBQUMsOEJBQThCLElBQUksR0FBRyxFQUFDLE1BQU0sb0ZBQW9GLENBQUM7QUFDekksT0FBTyxFQUFDLHdCQUF3QixJQUFJLEdBQUcsRUFBQyxNQUFNLHdHQUF3RyxDQUFDO0FBQ3ZKLE9BQU8sRUFBQyx3QkFBd0IsSUFBSSxHQUFHLEVBQUMsTUFBTSwrREFBK0QsQ0FBQztBQUM5RyxPQUFPLEVBQUMsNEJBQTRCLElBQUksR0FB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QU0sdURBQXVELENBQUM7QUFDOUYsT0FBTyxFQUFDLDhCQUE4QixJQUFJLEVBQUUsRUFBQyxNQUFNLG1HQUFtRyxDQUFDO0FBQ3ZKLE9BQU8sRUFBQyx5QkFBeUIsSUFBSSxFQUFFLEVBQUMsTUFBTSx1RUFBdUUsQ0FBQztBQUN0SCxPQUFPLEVBQUMsa0JBQWtCLElBQUksRUFBRSxFQUFDLE1BQU0sZ0VBQWdFLENBQUM7QUFDeEcsT0FBTyxFQUFDLDJCQUEyQixJQUFJLEdBQUcsRUFBQyxNQUFNLGtFQUFrRSxDQUFDO0FBQ3BILE9BQU8sRUFBQyxXQUFXLElBQUksRUFBRSxFQUFDLE1BQU0sZ0RBQWdELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljX2FwaSc7XG5cbmV4cG9ydCB7RW9DbGllbnRSb3V0aW5nTW9kdWxlIGFzIMm1Y299IGZyb20gJy4vYXBwL2VvLWNsaWVudC9lby1jbGllbnQtcm91dGluZy5tb2R1bGUnO1xuZXhwb3J0IHtJbmJveFN0YXRlUm91dGluZ01vZHVsZSBhcyDJtWNtfSBmcm9tICcuL2FwcC9lby1jbGllbnQvaW5ib3gtc3RhdGUvaW5ib3gtc3RhdGUtcm91dGluZy5tb2R1bGUnO1xuZXhwb3J0IHtPYmplY3RTdGF0ZVJvdXRpbmdNb2R1bGUgYXMgybVjbH0gZnJvbSAnLi9hcHAvZW8tY2xpZW50L29iamVjdC1zdGF0ZS9vYmplY3Qtc3RhdGUtcm91dGluZy5tb2R1bGUnO1xuZXhwb3J0IHtQcmVwYXJlU3RhdGVSb3V0aW5nTW9kdWxlIGFzIMm1Y259IGZyb20gJy4vYXBwL2VvLWNsaWVudC9wcmVwYXJlLXN0YXRlL3ByZXBhcmUtc3RhdGUtcm91dGluZy5tb2R1bGUnO1xuZXhwb3J0IHtQcm9jZXNzU3RhdGVDb21wb25lbnQgYXMgybVjcH0gZnJvbSAnLi9hcHAvZW8tY2xpZW50L3Byb2Nlc3Mtc3RhdGUvcHJvY2Vzcy1zdGF0ZS5jb21wb25lbnQnO1xuZXhwb3J0IHtQZW5kaW5nQ2hhbmdlc0d1YXJkIGFzIMm1YX0gZnJvbSAnLi9hcHAvZW8tZnJhbWV3b3JrLWNvcmUvcGVuZGluZy1jaGFuZ2VzL3BlbmRpbmctY2hhbmdlcy1ndWFyZC5zZXJ2aWNlJztcbmV4cG9ydCB7UGlwZXNNb2R1bGUgYXMgybVlfSBmcm9tICcuL2FwcC9lby1mcmFtZXdvcmstY29yZS9waXBlcy9waXBlcy5tb2R1bGUnO1xuZXhwb3J0IHtBY3Rpb25Db21wb25lbnRBbmNob3JEaXJlY3RpdmUgYXMgybV1fSBmcm9tICcuL2FwcC9lby1mcmFtZXdvcmsvYWN0aW9ucy9hY3Rpb24tbWVudS9hY3Rpb24tY29tcG9uZW50LWFuY2hvci9hY3Rpb24tY29tcG9uZW50LWFuY2hvci5kaXJlY3RpdmUnO1xuZXhwb3J0IHtBZGRSZXN1Ym1pc3Npb25BY3Rpb25Db21wb25lbnQgYXMgybVid30gZnJvbSAnLi9hcHAvZW8tZnJhbWV3b3JrL2FjdGlvbnMvYWN0aW9ucy9hZGQtcmVzdWJtaXNzaW9uLWFjdGlvbi9hZGQtcmVzdWJtaXNzaW9uLWFjdGlvbic7XG5leHBvcnQge0FkZFJlc3VibWlzc2lvbkNvbXBvbmVudCBhcyDJtWJ4fSBmcm9tICcuL2FwcC9lby1mcmFtZXdvcmsvYWN0aW9ucy9hY3Rpb25zL2FkZC1yZXN1Ym1pc3Npb24tYWN0aW9uL2FkZC1yZXN1Ym1pc3Npb24vYWRkLXJlc3VibWlzc2lvbi5jb21wb25lbnQnO1xuZXhwb3J0IHtBZGRTdWJzY3JpcHRpb25BY3Rpb25Db21wb25lbnQgYXMgybVicX0gZnJvbSAnLi9hcHAvZW8tZnJhbWV3b3JrL2FjdGlvbnMvYWN0aW9ucy9hZGQtc3Vic2NyaXB0aW9uLWFjdGlvbi9hZGQtc3Vic2NyaXB0aW9uLWFjdGlvbic7XG5leHBvcnQge0FkZFN1YnNjcmlwdGlvbkNvbXBvbmVudCBhcyDJtWJyfSBmcm9tICcuL2FwcC9lby1mcmFtZXdvcmsvYWN0aW9ucy9hY3Rpb25zL2FkZC1zdWJzY3JpcHRpb24tYWN0aW9uL2FkZC1zdWJzY3JpcHRpb24vYWRkLXN1YnNjcmlwdGlvbi5jb21wb25lbnQnO1xuZXhwb3J0IHtDbGlwYm9hcmRBY3Rpb25Db21wb25lbnQgYXMgybViZ30gZnJvbSAnLi9hcHAvZW8tZnJhbWV3b3JrL2FjdGlvbnMvYWN0aW9ucy9jbGlwYm9hcmQvY2xpcGJvYXJkLWFjdGlvbic7XG5leHBvcnQge0NsaXBib2FyZExpbmtBY3Rpb25Db21wb25lbnQgYXMgybViaH0gZnJvbSAnLi9hcHAvZW8tZnJhbWV3b3JrL2FjdGlvbnMvYWN0aW9ucy9jbGlwYm9hcmQvY2xpcGJvYXJkLWxpbmstYWN0aW9uJztcbmV4cG9ydCB7Q2xpcGJvYXJkT3JpZ2luYWxBY3Rpb25Db21wb25lbnQgYXMgybViaX0gZnJvbSAnLi9hcHAvZW8tZnJhbWV3b3JrL2FjdGlvbnMvYWN0aW9ucy9jbGlwYm9hcmQvY2xpcGJvYXJkLW9yaWdpbmFsLWFjdGlvbic7XG5leHBvcnQge0NsaXBib2FyZFBkZkFjdGlvbkNvbXBvbmVudCBhcyDJtWJqfSBmcm9tICcuL2FwcC9lby1mcmFtZXdvcmsvYWN0aW9ucy9hY3Rpb25zL2NsaXBib2FyZC9jbGlwYm9hcmQtcGRmLWFjdGlvbic7XG5leHBvcnQge0NvcHlBY3Rpb25Db21wb25lbnQgYXMgybV3fSBmcm9tICcuL2FwcC9lby1mcmFtZXdvcmsvYWN0aW9ucy9hY3Rpb25zL2NvcHktYWN0aW9uL2NvcHktYWN0aW9uJztcbmV4cG9ydCB7Q3VzdG9tQWN0aW9uc0NvbXBvbmVudCBhcyDJtWJ2fSBmcm9tICcuL2FwcC9lby1mcmFtZXdvcmsvYWN0aW9ucy9hY3Rpb25zL2N1c3RvbS1hY3Rpb25zL2N1c3RvbS1hY3Rpb25zLmNvbXBvbmVudCc7XG5leHBvcnQge0N1dEFjdGlvbkNvbXBvbmVudCBhcyDJtWNifSBmcm9tICcuL2FwcC9lby1mcmFtZXdvcmsvYWN0aW9ucy9hY3Rpb25zL2N1dC1hY3Rpb24vY3V0LWFjdGlvbic7XG5leHBvcnQge0RlbGV0ZUFjdGlvbkNvbXBvbmVudCBhcyDJtWJsfSBmcm9tICcuL2FwcC9lby1mcmFtZXdvcmsvYWN0aW9ucy9hY3Rpb25zL2RlbGV0ZS1hY3Rpb24vZGVsZXRlLWFjdGlvbic7XG5leHBvcnQge0RlbGV0ZVByZXBhcmVkQWN0aW9uQ29tcG9uZW50IGFzIMm1YnB9IGZyb20gJy4vYXBwL2VvLWZyYW1ld29yay9hY3Rpb25zL2FjdGlvbnMvZGVsZXRlLWFjdGlvbi9kZWxldGUtcHJlcGFyZWQtYWN0aW9uJztcbmV4cG9ydCB7RGVsZXRlQ29tcG9uZW50IGFzIMm1Ym19IGZyb20gJy4vYXBwL2VvLWZyYW1ld29yay9hY3Rpb25zL2FjdGlvbnMvZGVsZXRlLWFjdGlvbi9kZWxldGUvZGVsZXRlLmNvbXBvbmVudCc7XG5leHBvcnQge0RlbGV0ZUNvbnRlbnRBY3Rpb25Db21wb25lbnQgYXMgybVjZX0gZnJvbSAnLi9hcHAvZW8tZnJhbWV3b3JrL2FjdGlvbnMvYWN0aW9ucy9kZWxldGUtY29udGVudC1hY3Rpb24vZGVsZXRlLWNvbnRlbnQtYWN0aW9uJztcbmV4cG9ydCB7RG93bmxvYWRBY3Rpb25Db21wb25lbnQgYXMgybV5fSBmcm9tICcuL2FwcC9lby1mcmFtZXdvcmsvYWN0aW9ucy9hY3Rpb25zL2Rvd25sb2FkLWFjdGlvbi9kb3dubG9hZC1hY3Rpb24nO1xuZXhwb3J0IHtEb3dubG9hZE9yaWdpbmFsQWN0aW9uQ29tcG9uZW50IGFzIMm1en0gZnJvbSAnLi9hcHAvZW8tZnJhbWV3b3JrL2FjdGlvbnMvYWN0aW9ucy9kb3dubG9hZC1vcmlnaW5hbC1hY3Rpb24vZG93bmxvYWQtb3JpZ2luYWwtYWN0aW9uJztcbmV4cG9ydCB7RG93bmxvYWRQZGZBY3Rpb25Db21wb25lbnQgYXMgybViYX0gZnJvbSAnLi9hcHAvZW8tZnJhbWV3b3JrL2FjdGlvbnMvYWN0aW9ucy9kb3dubG9hZC1wZGYtYWN0aW9uL2Rvd25sb2FkLXBkZi1hY3Rpb24nO1xuZXhwb3J0IHtFbWFpbEFjdGlvbkNvbXBvbmVudCBhcyDJtWJjfSBmcm9tICcuL2FwcC9lby1mcmFtZXdvcmsvYWN0aW9ucy9hY3Rpb25zL2VtYWlsL2VtYWlsLWFjdGlvbic7XG5leHBvcnQge0VtYWlsTGlua0FjdGlvbkNvbXBvbmVudCBhcyDJtWJkfSBmcm9tICcuL2FwcC9lby1mcmFtZXdvcmsvYWN0aW9ucy9hY3Rpb25zL2VtYWlsL2VtYWlsLWxpbmstYWN0aW9uJztcbmV4cG9ydCB7RW1haWxPcmlnaW5hbEFjdGlvbkNvbXBvbmVudCBhcyDJtWJlfSBmcm9tICcuL2FwcC9lby1mcmFtZXdvcmsvYWN0aW9ucy9hY3Rpb25zL2VtYWlsL2VtYWlsLW9yaWdpbmFsLWFjdGlvbic7XG5leHBvcnQge0VtYWlsUGRmQWN0aW9uQ29tcG9uZW50IGFzIMm1YmZ9IGZyb20gJy4vYXBwL2VvLWZyYW1ld29yay9hY3Rpb25zL2FjdGlvbnMvZW1haWwvZW1haWwtcGRmLWFjdGlvbic7XG5leHBvcnQge0Zhdm9yaXRlQWN0aW9uQ29tcG9uZW50IGFzIMm1Ymt9IGZyb20gJy4vYXBwL2VvLWZyYW1ld29yay9hY3Rpb25zL2FjdGlvbnMvZmF2b3JpdGUtYWN0aW9uL2Zhdm9yaXRlLWFjdGlvbic7XG5leHBvcnQge0RlZmluYWxpemVBY3Rpb25Db21wb25lbnQgYXMgybVjZH0gZnJvbSAnLi9hcHAvZW8tZnJhbWV3b3JrL2FjdGlvbnMvYWN0aW9ucy9maW5hbGl6ZS9kZWZpbmFsaXplLWFjdGlvbic7XG5leHBvcnQge0ZpbmFsaXplQWN0aW9uQ29tcG9uZW50IGFzIMm1Y2N9IGZyb20gJy4vYXBwL2VvLWZyYW1ld29yay9hY3Rpb25zL2FjdGlvbnMvZmluYWxpemUvZmluYWxpemUtYWN0aW9uJztcbmV4cG9ydCB7T3BlbkNvbnRleHRBY3Rpb25Db21wb25lbnQgYXMgybV4fSBmcm9tICcuL2FwcC9lby1mcmFtZXdvcmsvYWN0aW9ucy9hY3Rpb25zL29wZW4tY29udGV4dC1hY3Rpb24vb3Blbi1jb250ZXh0LWFjdGlvbic7XG5leHBvcnQge09wZW5Eb2N1bWVudEFjdGlvbkNvbXBvbmVudCBhcyDJtWJifSBmcm9tICcuL2FwcC9lby1mcmFtZXdvcmsvYWN0aW9ucy9hY3Rpb25zL29wZW4tZG9jdW1lbnQtYWN0aW9uL29wZW4tZG9jdW1lbnQtYWN0aW9uJztcbmV4cG9ydCB7T3BlbkRvY3VtZW50Q29tcG9uZW50IGFzIMm1dn0gZnJvbSAnLi9hcHAvZW8tZnJhbWV3b3JrL2FjdGlvbnMvYWN0aW9ucy9vcGVuLWRvY3VtZW50LWFjdGlvbi9vcGVuLWRvY3VtZW50LWFjdGlvbi5jb21wb25lbnQnO1xuZXhwb3J0IHtPcGVuVmVyc2lvbnNBY3Rpb25Db21wb25lbnQgYXMgybVibn0gZnJvbSAnLi9hcHAvZW8tZnJhbWV3b3JrL2FjdGlvbnMvYWN0aW9ucy9vcGVuLXZlcnNpb25zLWFjdGlvbi9vcGVuLXZlcnNpb25zLWFjdGlvbic7XG5leHBvcnQge1JlbW92ZVN1YnNjcmlwdGlvbkFjdGlvbkNvbXBvbmVudCBhcyDJtWJzfSBmcm9tICcuL2FwcC9lby1mcmFtZXdvcmsvYWN0aW9ucy9hY3Rpb25zL3JlbW92ZS1zdWJzY3JpcHRpb24tYWN0aW9uL3JlbW92ZS1zdWJzY3JpcHRpb24tYWN0aW9uJztcbmV4cG9ydCB7UmVzdG9yZVZlcnNpb25BY3Rpb25Db21wb25lbnQgYXMgybVib30gZnJvbSAnLi9hcHAvZW8tZnJhbWV3b3JrL2FjdGlvbnMvYWN0aW9ucy9yZXN0b3JlLXZlcnNpb24tYWN0aW9uL3Jlc3RvcmUtdmVyc2lvbi1hY3Rpb24nO1xuZXhwb3J0IHtTaGFyZU9iamVjdEFjdGlvbkNvbXBvbmVudCBhcyDJtWJ6fSBmcm9tICcuL2FwcC9lby1mcmFtZXdvcmsvYWN0aW9ucy9hY3Rpb25zL3NoYXJlLW9iamVjdC1hY3Rpb24vc2hhcmUtb2JqZWN0LWFjdGlvbic7XG5leHBvcnQge1NoYXJlT2JqZWN0Q29tcG9uZW50IGFzIMm1Y2F9IGZyb20gJy4vYXBwL2VvLWZyYW1ld29yay9hY3Rpb25zL2FjdGlvbnMvc2hhcmUtb2JqZWN0LWFjdGlvbi9zaGFyZS1vYmplY3Qvc2hhcmUtb2JqZWN0LmNvbXBvbmVudCc7XG5leHBvcnQge1VubG9ja0FjdGlvbkNvbXBvbmVudCBhcyDJtWNmfSBmcm9tICcuL2FwcC9lby1mcmFtZXdvcmsvYWN0aW9ucy9hY3Rpb25zL3VubG9jay1hY3Rpb24vdW5sb2NrLWFjdGlvbic7XG5leHBvcnQge1VwZGF0ZVJlc3VibWlzc2lvbkFjdGlvbkNvbXBvbmVudCBhcyDJtWJ5fSBmcm9tICcuL2FwcC9lby1mcmFtZXdvcmsvYWN0aW9ucy9hY3Rpb25zL3VwZGF0ZS1yZXN1Ym1pc3Npb24tYWN0aW9uL3VwZGF0ZS1yZXN1Ym1pc3Npb24tYWN0aW9uJztcbmV4cG9ydCB7U2ltcGxlV29ya2Zsb3dBY3Rpb25Db21wb25lbnQgYXMgybVjZ30gZnJvbSAnLi9hcHAvZW8tZnJhbWV3b3JrL2FjdGlvbnMvYWN0aW9ucy93b3JrZmxvdy1hY3Rpb24vc2ltcGxlLXdvcmtmbG93LWFjdGlvbi5jb21wb25lbnQnO1xuZXhwb3J0IHtXb3JrZmxvd0FjdGlvbkNvbXBvbmVudCBhcyDJtWJ0fSBmcm9tICcuL2FwcC9lby1mcmFtZXdvcmsvYWN0aW9ucy9hY3Rpb25zL3dvcmtmbG93LWFjdGlvbi93b3JrZmxvdy1hY3Rpb24uY29tcG9uZW50JztcbmV4cG9ydCB7V29ya2Zsb3dDb21wb25lbnQgYXMgybVidX0gZnJvbSAnLi9hcHAvZW8tZnJhbWV3b3JrL2FjdGlvbnMvYWN0aW9ucy93b3JrZmxvdy1hY3Rpb24vd29ya2Zsb3cvd29ya2Zsb3cuY29tcG9uZW50JztcbmV4cG9ydCB7QXBwUHJvY2Vzc0NvbXBvbmVudCBhcyDJtWR9IGZyb20gJy4vYXBwL2VvLWZyYW1ld29yay9hcHAtc2hlbGwvYXBwLWJhci9hcHAtcHJvY2Vzcy9hcHAtcHJvY2Vzcy5jb21wb25lbnQnO1xuZXhwb3J0IHtBcHBTaGVsbFJvdXRpbmdNb2R1bGUgYXMgybVjfSBmcm9tICcuL2FwcC9lby1mcmFtZXdvcmsvYXBwLXNoZWxsL2FwcC1zaGVsbC1yb3V0aW5nLm1vZHVsZSc7XG5leHBvcnQge0RhdGVwaWNrZXJTZXJ2aWNlIGFzIMm1an0gZnJvbSAnLi9hcHAvZW8tZnJhbWV3b3JrL2Zvcm0tZWxlbWVudHMvZGF0ZXRpbWUvZGF0ZXBpY2tlci9zZXJ2aWNlL2RhdGVwaWNrZXIuc2VydmljZSc7XG5leHBvcnQge1llYXJSYW5nZURpcmVjdGl2ZSBhcyDJtWt9IGZyb20gJy4vYXBwL2VvLWZyYW1ld29yay9mb3JtLWVsZW1lbnRzL2RhdGV0aW1lL3llYXItcmFuZ2UveWVhci1yYW5nZS5kaXJlY3RpdmUnO1xuZXhwb3J0IHtmYWRlSW5PdXQgYXMgybVtfSBmcm9tICcuL2FwcC9lby1mcmFtZXdvcmsvZm9ybS1lbGVtZW50cy9pZC1yZWZlcmVuY2UvYW5pbWF0aW9uL3JlZmVyZW5jZS1maW5kZXIuYW5pbWF0aW9uJztcbmV4cG9ydCB7UmVmZXJlbmNlRmluZGVyRW50cnlDb21wb25lbnQgYXMgybVvfSBmcm9tICcuL2FwcC9lby1mcmFtZXdvcmsvZm9ybS1lbGVtZW50cy9pZC1yZWZlcmVuY2UvcmVmZXJlbmNlLWZpbmRlci1lbnRyeS9yZWZlcmVuY2UtZmluZGVyLWVudHJ5LmNvbXBvbmVudCc7XG5leHBvcnQge1JlZmVyZW5jZUZpbmRlckNvbXBvbmVudCBhcyDJtWx9IGZyb20gJy4vYXBwL2VvLWZyYW1ld29yay9mb3JtLWVsZW1lbnRzL2lkLXJlZmVyZW5jZS9yZWZlcmVuY2UtZmluZGVyL3JlZmVyZW5jZS1maW5kZXIuY29tcG9uZW50JztcbmV4cG9ydCB7UmVmZXJlbmNlRmluZGVyU2VydmljZSBhcyDJtW59IGZyb20gJy4vYXBwL2VvLWZyYW1ld29yay9mb3JtLWVsZW1lbnRzL2lkLXJlZmVyZW5jZS9zZXJ2aWNlL3JlZmVyZW5jZS1maW5kZXIuc2VydmljZSc7XG5leHBvcnQge1BhZ2luYXRpb25Db21wb25lbnQgYXMgybVyfSBmcm9tICcuL2FwcC9lby1mcmFtZXdvcmsvZ3JpZC9leHRlbnNpb25zL3BhZ2luYXRpb24vcGFnaW5hdGlvbi5jb21wb25lbnQnO1xuZXhwb3J0IHtEeW5hbWljTGlzdEZpbHRlckNvbXBvbmVudCBhcyDJtXB9IGZyb20gJy4vYXBwL2VvLWZyYW1ld29yay9ncmlkL2ZpbHRlcnMvZHluYW1pYy1saXN0LWZpbHRlci5jb21wb25lbnQnO1xuZXhwb3J0IHtMaXN0RmlsdGVyQ29tcG9uZW50IGFzIMm1cX0gZnJvbSAnLi9hcHAvZW8tZnJhbWV3b3JrL2dyaWQvZmlsdGVycy9saXN0LWZpbHRlci5jb21wb25lbnQnO1xuZXhwb3J0IHtEdWV0aW1lSW5mb0NvbXBvbmVudCBhcyDJtWNqfSBmcm9tICcuL2FwcC9lby1mcmFtZXdvcmsvaW5ib3gtZGV0YWlscy9kdWV0aW1lSW5mby9kdWV0aW1lSW5mby5jb21wb25lbnQnO1xuZXhwb3J0IHtFZGl0SWNvbkNvbXBvbmVudCBhcyDJtWNpfSBmcm9tICcuL2FwcC9lby1mcmFtZXdvcmsvb2JqZWN0LWRldGFpbHMvZWRpdC1pY29uL2VkaXQtaWNvbi5jb21wb25lbnQnO1xuZXhwb3J0IHtQcmVwYXJlQ29udGVudEV4aXN0c0luZm9Db21wb25lbnQgYXMgybVja30gZnJvbSAnLi9hcHAvZW8tZnJhbWV3b3JrL3ByZXBhcmUtZGV0YWlscy9wcmVwYXJlLWNvbnRlbnQtZXhpc3RzLWluZm8vcHJlcGFyZS1jb250ZW50LWV4aXN0cy1pbmZvLmNvbXBvbmVudCc7XG5leHBvcnQge1Byb2Nlc3NGb3JtQ29tcG9uZW50IGFzIMm1dH0gZnJvbSAnLi9hcHAvZW8tZnJhbWV3b3JrL3Byb2Nlc3MtZm9ybS9wcm9jZXNzLWZvcm0uY29tcG9uZW50JztcbmV4cG9ydCB7UHJvY2Vzc0Zvcm1Nb2R1bGUgYXMgybVzfSBmcm9tICcuL2FwcC9lby1mcmFtZXdvcmsvcHJvY2Vzcy1mb3JtL3Byb2Nlc3MtZm9ybS5tb2R1bGUnO1xuZXhwb3J0IHtUcmVlTm9kZUNvbXBvbmVudCBhcyDJtWl9IGZyb20gJy4vYXBwL2VvLWZyYW1ld29yay90cmVlL3RyZWUtbm9kZS90cmVlLW5vZGUuY29tcG9uZW50JztcbmV4cG9ydCB7SW5kZXhkYXRhU3VtbWFyeUVudHJ5Q29tcG9uZW50IGFzIMm1Z30gZnJvbSAnLi9hcHAvZW8tZnJhbWV3b3JrL3VpL2luZGV4ZGF0YS1zdW1tYXJ5L2luZGV4ZGF0YS1zdW1tYXJ5LWVudHJ5L2luZGV4ZGF0YS1zdW1tYXJ5LWVudHJ5LmNvbXBvbmVudCc7XG5leHBvcnQge1F1ZXJ5U2NvcGVTZWxlY3RDb21wb25lbnQgYXMgybVmfSBmcm9tICcuL2FwcC9lby1mcmFtZXdvcmsvdWkvcXVlcnktc2NvcGUtc2VsZWN0L3F1ZXJ5LXNjb3BlLXNlbGVjdC5jb21wb25lbnQnO1xuZXhwb3J0IHtVcGxvYWRPdmVybGF5R3VhcmQgYXMgybVifSBmcm9tICcuL2FwcC9lby1mcmFtZXdvcmsvdXBsb2FkLW92ZXJsYXkvdXBsb2FkLW92ZXJsYXktZ3VhcmQuc2VydmljZSc7XG5leHBvcnQge1ByZXZlbnREb3VibGVDbGlja0RpcmVjdGl2ZSBhcyDJtWNofSBmcm9tICcuL2FwcC9lby1mcmFtZXdvcmsvdXRpbC9kaXJlY3RpdmUvcHJldmVudC1kb3VibGUtY2xpY2suZGlyZWN0aXZlJztcbmV4cG9ydCB7T3JkZXJCeVBpcGUgYXMgybVofSBmcm9tICcuL2FwcC9lby1mcmFtZXdvcmsvdXRpbC9zb3J0YWJsZS9vcmRlci1ieS5waXBlJzsiXX0=
|
|
@@ -288,14 +288,14 @@ export class AuthService {
|
|
|
288
288
|
// remove stored access data
|
|
289
289
|
this.storage.removeItem(this.TOKEN_STORAGE_KEY).subscribe();
|
|
290
290
|
if (this.coreConfig.environment.production && EnvironmentEnaio.isWebEnvironment()) {
|
|
291
|
-
window.location.href = '/logout';
|
|
291
|
+
window.location.href = this.config.getLoginBase() + '/logout';
|
|
292
292
|
return;
|
|
293
293
|
}
|
|
294
294
|
}
|
|
295
295
|
if (gatewayLogout) {
|
|
296
296
|
// by default we are just resetting internal state to 'logged out' and in
|
|
297
297
|
// some cases call gateways logout endpoint to do logout stuff there silently
|
|
298
|
-
this.http.get(`${this.profile.host || ''}/logout`).subscribe();
|
|
298
|
+
this.http.get(`${this.profile.host || ''}${this.config.getLoginBase()}/logout`).subscribe();
|
|
299
299
|
}
|
|
300
300
|
this.backend.setAuthProfile(this.profile);
|
|
301
301
|
this.eventService.trigger(EnaioEvent.LOGOUT);
|
|
@@ -372,4 +372,4 @@ AuthService.ctorParameters = () => [
|
|
|
372
372
|
{ type: LocalStorage },
|
|
373
373
|
{ type: LocalStorageService }
|
|
374
374
|
];
|
|
375
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZW8tc2RrL2NvcmUvc3JjL2xpYi9zZXJ2aWNlL2F1dGgvYXV0aC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxlQUFlLEVBQUUsVUFBVSxFQUFFLFFBQVEsSUFBSSxrQkFBa0IsRUFDM0QsRUFBRSxJQUFJLFlBQVksRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFDbEQsTUFBTSxNQUFNLENBQUM7QUFDZCxPQUFPLEVBQUMsR0FBRyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLFVBQVUsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQzFFLE9BQU8sRUFBQyxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN6RCxPQUFPLEVBQUMsVUFBVSxFQUFxQixXQUFXLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUNoRixPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFDM0QsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBQ2hELE9BQU8sRUFBQyxNQUFNLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQztBQUNqRCxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sMEJBQTBCLENBQUM7QUFDdkQsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBQzFELE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUNqRCxPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFFeEMsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBQzFELE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUNwRCxPQUFPLEVB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QyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQ2xDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FDcEIsQ0FBQztJQUNKLENBQUM7OztZQXZYRixVQUFVOzs7WUEzQkgsTUFBTTtZQW9CTixVQUFVLHVCQXlDYixNQUFNLFNBQUMsV0FBVztZQTlEZixlQUFlO1lBdUJmLGtCQUFrQjtZQXhCbEIsVUFBVTtZQWdCVixVQUFVO1lBakJVLE1BQU07WUFzQjFCLGdCQUFnQjtZQVZoQixtQkFBbUI7WUFKbkIsTUFBTTtZQUdOLFlBQVk7WUFEWixjQUFjO1lBSmQsY0FBYztZQURkLGFBQWE7WUFFYixXQUFXO1lBUVgsWUFBWTtZQUlaLG1CQUFtQjtZQU5uQixZQUFZO1lBQ1osbUJBQW1CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUsIGZvcmtKb2luIGFzIG9ic2VydmFibGVGb3JrSm9pbixcclxuICBvZiBhcyBvYnNlcnZhYmxlT2YsIFN1YmplY3QsIHRocm93RXJyb3IsIGludGVydmFsXHJcbn0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7bWFwLCBzd2l0Y2hNYXAsIHRha2VVbnRpbCwgdGFwLCBjYXRjaEVycm9yfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7SW5qZWN0LCBJbmplY3RhYmxlLCBOZ1pvbmV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge0h0dHBDbGllbnQsIEh0dHBFcnJvclJlc3BvbnNlLCBIdHRwSGVhZGVyc30gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQge0FwcENhY2hlU2VydmljZX0gZnJvbSAnLi4vY2FjaGUvYXBwLWNhY2hlLnNlcnZpY2UnO1xyXG5pbXBvcnQge0NvbmZpZ30gZnJvbSAnLi4vY29uZmlnL2NvbmZpZy5zZXJ2aWNlJztcclxuaW1wb3J0IHtFb1VzZXJ9IGZyb20gJy4uLy4uL21vZGVsL2VvLXVzZXIubW9kZWwnO1xyXG5pbXBvcnQge1N5c3RlbVNlcnZpY2V9IGZyb20gJy4uL3N5c3RlbS9zeXN0ZW0uc2VydmljZSc7XHJcbmltcG9ydCB7QmFja2VuZFNlcnZpY2V9IGZyb20gJy4uL2JhY2tlbmQvYmFja2VuZC5zZXJ2aWNlJztcclxuaW1wb3J0IHtVc2VyU2VydmljZX0gZnJvbSAnLi4vdXNlci91c2VyLnNlcnZpY2UnO1xyXG5pbXBvcnQge0xvZ2dlcn0gZnJvbSAnLi4vbG9nZ2VyL2xvZ2dlcic7XHJcbmltcG9ydCB7QXV0aFByb2ZpbGV9IGZyb20gJy4vYXV0aC1wcm9maWxlLmludGVyZmFjZSc7XHJcbmltcG9ydCB7UHJlcGFyZVNlcnZpY2V9IGZyb20gJy4uL3ByZXBhcmUvcHJlcGFyZS5zZXJ2aWNlJztcclxuaW1wb3J0IHtJbmJveFNlcnZpY2V9IGZyb20gJy4uL2luYm94L2luYm94LnNlcnZpY2UnO1xyXG5pbXBvcnQge0NhcGFiaWxpdGllc1NlcnZpY2V9IGZyb20gJy4uL2NhcGFiaWxpdGllcy9jYXBhYmlsaXRpZXMuc2VydmljZSc7XHJcbmltcG9ydCB7TG9jYWxTdG9yYWdlfSBmcm9tICdAbmd4LXB3YS9sb2NhbC1zdG9yYWdlJztcclxuaW1wb3J0IHtMb2NhbFN0b3JhZ2VTZXJ2aWNlfSBmcm9tICcuLi9zdG9yYWdlL2xvY2FsLXN0b3JhZ2Uuc2VydmljZSc7XHJcbmltcG9ydCB7RXZlbnRTZXJ2aWNlfSBmcm9tICcuLi9ldmVudHMvZXZlbnQuc2VydmljZSc7XHJcbmltcG9ydCB7RW5haW9FdmVudH0gZnJvbSAnLi4vZXZlbnRzL2V2ZW50cyc7XHJcbmltcG9ydCB7QnBtU2VydmljZX0gZnJvbSAnLi4vYnBtL2JwbS5zZXJ2aWNlJztcclxuaW1wb3J0IHtHYXRld2F5SW5mb30gZnJvbSAnLi9nYXRld2F5LWluZm8uaW50ZXJmYWNlJztcclxuaW1wb3J0IHtTeXN0ZW1TdGF0dXNTZXJ2aWNlfSBmcm9tICcuLi9zeXN0ZW0tc3RhdHVzL3N5c3RlbS1zdGF0dXMuc2VydmljZSc7XHJcbmltcG9ydCB7RW52aXJvbm1lbnRFbmFpb30gZnJvbSAnLi4vLi4vZW52aXJvbm1lbnQuZW5haW8nO1xyXG5pbXBvcnQge0xvZ2luRGV2aWNlUmVzdWx0LCBTdG9yZWRUb2tlbn0gZnJvbSAnLi9hdXRoLmNsb3VkLmludGVyZmFjZSc7XHJcbmltcG9ydCB7UGxhdGZvcm1Mb2NhdGlvbn0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHtDb3JlQ29uZmlnfSBmcm9tICcuLi8uLi9jb25maWcvY29yZS1jb25maWcnO1xyXG5pbXBvcnQge0NPUkVfQ09ORklHfSBmcm9tICcuLi8uLi9jb25maWcvY29yZS1pbml0LnRva2Vucyc7XHJcbmltcG9ydCB7RW52aXJvbm1lbnRTZXJ2aWNlfSBmcm9tICcuLi9lbnZpcm9ubWVudC9lbnZpcm9ubWVudC5zZXJ2aWNlJztcclxuXHJcbi8qKlxyXG4gKiBgQXV0aFNlcnZpY2VgIGhhbmRsZXMgYXV0aGVudGljYXRpb24gYWdhaW5zdCBhbiB5dXV2aXM8c3VwPiZyZWc7PC9zdXA+IFJBRCBiYWNrZW5kLlxyXG4gKi9cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgQXV0aFNlcnZpY2Uge1xyXG5cclxuICBwcml2YXRlIFRPS0VOX1NUT1JBR0VfS0VZID0gJ2VvLmF1dGguY2xvdWQuY3JlZGVudGlhbHMnO1xyXG4gIHByaXZhdGUgdXNlclByb2ZpbGVVcmkgPSB0aGlzLnVzZXJTZXJ2aWNlLlVTRVJfRkVUQ0hfVVJJO1xyXG4gIHByaXZhdGUgYXV0aFNvdXJjZSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xyXG4gIHByaXZhdGUgbG9nZ2VkSW5DYWNoZUtleSA9ICdlby51c2VyLmxvZ2dlZEluJztcclxuXHJcbiAgLyoqXHJcbiAgICogT2JzZXJ2YWJsZSB0byBzdWJzY3JpYmUgdG8gZm9yIGdldHRpbmcgdGhlIHN0YXRlIG9mIGJlaW5nIGF1dGhlbnRpY2F0ZWQuIFdpbGwgZW1pdCB0cnVlIHdoZW4gYSB1c2VyIGxvZ2dlZCBpbixcclxuICAgKiBmYWxzZSB3aGVuIHRoZSB1c2VyIGxvZ2dlZCBvdXQgb3IgdGhlIGdhdGV3YXlzIHNlc3Npb24gdGltZWQgb3V0LlxyXG4gICAqL1xyXG4gIHB1YmxpYyBhdXRoZW50aWNhdGVkJDogT2JzZXJ2YWJsZTxib29sZWFuPiA9IHRoaXMuYXV0aFNvdXJjZS5hc09ic2VydmFibGUoKTtcclxuXHJcbiAgLyoqXHJcbiAgICogQGlnbm9yZVxyXG4gICAqL1xyXG4gIHB1YmxpYyBob3N0czogc3RyaW5nW10gPSBbXTtcclxuICBwcml2YXRlIGdhdGV3YXlJbmZvOiBHYXRld2F5SW5mbztcclxuXHJcbiAgLyoqXHJcbiAgICogQGlnbm9yZVxyXG4gICAqL1xyXG4gIHB1YmxpYyBwcm9maWxlOiBBdXRoUHJvZmlsZSA9IHtcclxuICAgIGhvc3Q6ICcnLFxyXG4gICAgdXNlcjogbnVsbCxcclxuICAgIGF1dGg6IG51bGwsXHJcbiAgICBhY3RpdmU6IGZhbHNlXHJcbiAgfTtcclxuXHJcbiAgLyoqXHJcbiAgICogQGlnbm9yZVxyXG4gICAqL1xyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY29uZmlnOiBDb25maWcsXHJcbiAgICBASW5qZWN0KENPUkVfQ09ORklHKSBwdWJsaWMgY29yZUNvbmZpZzogQ29yZUNvbmZpZyxcclxuICAgIHByaXZhdGUgYXBwQ2FjaGU6IEFwcENhY2hlU2VydmljZSxcclxuICAgIHByaXZhdGUgZW52U2VydmljZTogRW52aXJvbm1lbnRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LFxyXG4gICAgcHJpdmF0ZSBicG1TZXJ2aWNlOiBCcG1TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZSxcclxuICAgIHByaXZhdGUgbG9jYXRpb246IFBsYXRmb3JtTG9jYXRpb24sXHJcbiAgICBwcml2YXRlIGNhcGFiaWxpdGllc1NlcnZpY2U6IENhcGFiaWxpdGllc1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIGxvZ2dlcjogTG9nZ2VyLFxyXG4gICAgcHJpdmF0ZSBpbmJveFNlcnZpY2U6IEluYm94U2VydmljZSxcclxuICAgIHByaXZhdGUgcHJlcGFyZVNlcnZpY2U6IFByZXBhcmVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBiYWNrZW5kOiBCYWNrZW5kU2VydmljZSxcclxuICAgIHByaXZhdGUgc3lzdGVtU2VydmljZTogU3lzdGVtU2VydmljZSxcclxuICAgIHByaXZhdGUgdXNlclNlcnZpY2U6IFVzZXJTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBldmVudFNlcnZpY2U6IEV2ZW50U2VydmljZSxcclxuICAgIHByaXZhdGUgc3lzdGVtU3RhdHVzU2VydmljZTogU3lzdGVtU3RhdHVzU2VydmljZSxcclxuICAgIHByb3RlY3RlZCBzdG9yYWdlOiBMb2NhbFN0b3JhZ2UsXHJcbiAgICBwcm90ZWN0ZWQgbG9jYWw6IExvY2FsU3RvcmFnZVNlcnZpY2UpIHtcclxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdzdG9yYWdlJywgZXZ0ID0+IHtcclxuICAgICAgaWYgKGV2dC5rZXkgPT09IHRoaXMubG9nZ2VkSW5DYWNoZUtleSkge1xyXG4gICAgICAgIGNvbnN0IGhvc3QgPSBKU09OLnBhcnNlKGV2dC5uZXdWYWx1ZSkuaG9zdDtcclxuICAgICAgICB0aGlzLmluaXRVc2VyKGhvc3QpLnN1YnNjcmliZSgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIExvZ2luIGEgdXNlciB1c2luZyBmb3JtIGJhc2VkIGxvZ2luLlxyXG4gICAqIEBwYXJhbSBob3N0IFRoZSB0YXJnZXQgaG9zdCAoY291bGQgYmUgbnVsbCBpZiB5b3UgYXJlIHJ1bm5pbmcgaW4gd2ViIGVudmlyb25tZW50KVxyXG4gICAqIEBwYXJhbSB1c2VybmFtZSBUaGUgdXNlcm5hbWVcclxuICAgKiBAcGFyYW0gcGFzc3dvcmQgVGhlIHBhc3N3b3JkXHJcbiAgICogQHJldHVybnMgUmVzb2x2ZXMgd2l0aCB0aGUgbG9nZ2VkIGluIHVzZXJcclxuICAgKi9cclxuICBwdWJsaWMgbG9naW4oaG9zdDogc3RyaW5nLCB1c2VybmFtZTogc3RyaW5nLCBwYXNzd29yZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxFb1VzZXI+IHtcclxuXHJcbiAgICBob3N0ID0gaG9zdCB8fCAnJztcclxuICAgIGNvbnN0IGZkID0gbmV3IEZvcm1EYXRhKCk7XHJcbiAgICBmZC5hcHBlbmQoJ3VzZXJuYW1lJywgZW5jb2RlVVJJQ29tcG9uZW50KHVzZXJuYW1lKSk7XHJcbiAgICBmZC5hcHBlbmQoJ3Bhc3N3b3JkJywgZW5jb2RlVVJJQ29tcG9uZW50KHBhc3N3b3JkKSk7XHJcblxyXG4gICAgY29uc3QgbG9naW5IZWFkZXIgPSBuZXcgSHR0cEhlYWRlcnMoe1xyXG4gICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCdcclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGhvc3QgKyB0aGlzLmNvbmZpZy5nZXRMb2dpbkJhc2UoKSArICcvbG9naW4nLFxyXG4gICAgICBgdXNlcm5hbWU9JHtlbmNvZGVVUklDb21wb25lbnQodXNlcm5hbWUpfSZwYXNzd29yZD0ke2VuY29kZVVSSUNvbXBvbmVudChwYXNzd29yZCl9YCwge1xyXG4gICAgICBoZWFkZXJzOiBsb2dpbkhlYWRlcixcclxuICAgICAgcmVzcG9uc2VUeXBlOiAndGV4dCdcclxuICAgIH0pLnBpcGUoXHJcbiAgICAgIHN3aXRjaE1hcCgoKSA9PiB0aGlzLmluaXRVc2VyKGhvc3QpKVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIExvZyBpbiB0byBhIGNsb3VkIGJhY2tlbmQgdXNpbmcgZGV2aWNlIGZsb3cuXHJcbiAgICogQHBhcmFtIGhvc3QgVGhlIHRhcmdldCBob3N0IChjb3VsZCBiZSBudWxsIGlmIHlvdSBhcmUgcnVubmluZyBpbiB3ZWIgZW52aXJvbm1lbnQpXHJcbiAgICogQHBhcmFtIHRlbmFudCBUaGUgdGVuYW50XHJcbiAgICogQHJldHVybnMgUmVzb2x2ZXMgd2l0aCB0aGUgbG9nZ2VkIGluIHVzZXJcclxuICAgKi9cclxuICBwdWJsaWMgY2xvdWRMb2dpbihob3N0OiBzdHJpbmcsIHRlbmFudDogc3RyaW5nKTogT2JzZXJ2YWJsZTxFb1VzZXI+IHtcclxuICAgIHJldHVybiBPYnNlcnZhYmxlLmNyZWF0ZShvID0+IHtcclxuICAgICAgY29uc3Qgc3RvcFRyaWdnZXIkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuICAgICAgLy9jb25zdCB0YXJnZXRIb3N0ID0gdGhpcy5sb2NhdGlvbi5wYXRobmFtZS5zdWJzdHJpbmcoMCwgdGhpcy5sb2NhdGlvbi5wYXRobmFtZS5pbmRleE9mKCcvZW50ZXInKSk7IC8vIGhvc3QgfHwgJyc7XHJcbiAgICAgIGNvbnN0IHRhcmdldEhvc3QgPSBob3N0IHx8ICcnO1xyXG4gICAgICAvLyBzdGFydCBhdXRoIGZsb3dcclxuICAgICAgdGhpcy5odHRwLmdldChgJHt0YXJnZXRIb3N0fS90ZW5hbnQvJHt0ZW5hbnR9L2xvZ2luRGV2aWNlYCkuc3Vic2NyaWJlKChyZXM6IExvZ2luRGV2aWNlUmVzdWx0KSA9PiB7XHJcblxyXG4gICAgICAgIC8vIG9wZW4gbmV3IHdpbmRvdyBmb3IgdGhlIGF1dGhlbnRpY2F0aW9uIHByb2Nlc3MgLi4uXHJcbiAgICAgICAgY29uc3QgdGFyZ2V0VXJpID0gYCR7dGFyZ2V0SG9zdH0vb2F1dGgvJHt0ZW5hbnR9P3VzZXJfY29kZT0ke3Jlcy51c2VyX2NvZGV9YDtcclxuICAgICAgICBjb25zdCB3aW4gPSB3aW5kb3cub3Blbih0YXJnZXRVcmksICdhdXRoJyk7XHJcbiAgICAgICAgaWYgKHdpbikge1xyXG4gICAgICAgICAgLy8gQHNlZTogaHR0cDovL2F0YXNoYmFoYXIuY29tL3Bvc3QvMjAxMC0wNC0yNy1kZXRlY3Qtd2hlbi1hLWphdmFzY3JpcHQtcG9wdXAtd2luZG93LWdldHMtY2xvc2VkXHJcbiAgICAgICAgICB0aGlzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IHdpblRpbWVyID0gc2V0SW50ZXJ2YWwoKCkgPT4ge1xyXG4gICAgICAgICAgICAgIGlmICh3aW4uY2xvc2VkKSB7XHJcbiAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKHdpblRpbWVyKTtcclxuICAgICAgICAgICAgICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgIHN0b3BUcmlnZ2VyJC5uZXh0KCk7XHJcbiAgICAgICAgICAgICAgICAgIHN0b3BUcmlnZ2VyJC5jb21wbGV0ZSgpO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9LCAxMDAwKTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gLi4uIGFuZCBzdGFydCBwb2xsaW5nIGZvciBhdXRoZW50aWNhdGlvbiByZXN1bHRzXHJcbiAgICAgICAgdGhpcy5jbG91ZExvZ2luUG9sbEZvclJlc3VsdChgJHt0YXJnZXRIb3N0fS9hdXRoL2luZm8vc3RhdGU/ZGV2aWNlX2NvZGU9JHtyZXMuZGV2aWNlX2NvZGV9YCwgMTAwMCwgc3RvcFRyaWdnZXIkKVxyXG4gICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgIHRhcCgoYWNjZXNzVG9rZW46IHN0cmluZykgPT4ge1xyXG4gICAgICAgICAgICAgIGlmIChhY2Nlc3NUb2tlbikge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jbG91ZExvZ2luU2V0SGVhZGVycyhhY2Nlc3NUb2tlbiwgdGVuYW50KTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHN0b3JlVG9rZW46IFN0b3JlZFRva2VuID0ge1xyXG4gICAgICAgICAgICAgICAgICB0ZW5hbnQ6IHRlbmFudCxcclxuICAgICAgICAgICAgICAgICAgYWNjZXNzVG9rZW46IGFjY2Vzc1Rva2VuXHJcbiAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zdG9yYWdlLnNldEl0ZW0odGhpcy5UT0tFTl9TVE9SQUdFX0tFWSwgc3RvcmVUb2tlbikuc3Vic2NyaWJlKCk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgc3dpdGNoTWFwKChhdXRoUmVzOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICBpZiAoYXV0aFJlcykge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuaW5pdFVzZXIodGFyZ2V0SG9zdCk7XHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRocm93RXJyb3IoJ25vdCBhdXRoZW50aWNhdGVkJyk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgKS5zdWJzY3JpYmUoXHJcbiAgICAgICAgICAgICh1c2VyOiBFb1VzZXIpID0+IHtcclxuXHJcbiAgICAgICAgICAgICAgd2luLmNsb3NlKCk7XHJcbiAgICAgICAgICAgICAgby5uZXh0KHVzZXIpO1xyXG4gICAgICAgICAgICAgIG8uY29tcGxldGUoKTtcclxuICAgICAgICAgICAgfSwgZXJyID0+IHtcclxuICAgICAgICAgICAgICB3aW4uY2xvc2UoKTtcclxuICAgICAgICAgICAgICBvLmVycm9yKGVycik7XHJcbiAgICAgICAgICAgICAgby5jb21wbGV0ZSgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICApXHJcbiAgICAgIH0sIGVyciA9PiB7XHJcbiAgICAgICAgby5lcnJvcigndW5hYmxlIHRvIGNhbGwgZGV2aWNlIGZsb3cgZW5kcG9pbnQnLCBlcnIpO1xyXG4gICAgICAgIG8uY29tcGxldGUoKTtcclxuICAgICAgfSlcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU3RhcnRzIHBvbGxpbmcgZm9yIGxvZ2luIHJlc3VsdHMgaW4gY2FzZSBvZiBsb2dnaW5nIGluIHRvIGEgY2xvdWQgYmFja2VuZC5cclxuICAgKiBAcGFyYW0gdXJpIFVSSSB0byBwb2xsXHJcbiAgICogQHBhcmFtIHBvbGxpbmdJbnRlcnZhbCBQb2xsaW5nIGludGVydmFsbCBpbiBtaWxsaXNlY29uZHNcclxuICAgKiBAcGFyYW0gc3RvcFRyaWdnZXIgU3ViamVjdCBhY3RpbmcgYXMgc3RvcCB0cmlnZ2VyXHJcbiAgICogQHJldHVybnMgQWNjZXNzIFRva2VuIGlmIGxvZ2dlZCBpbiBzdWNjZXNzZnVsbHkgb3IgTlVMTCBvdGhlcndpc2VcclxuICAgKi9cclxuICBwcml2YXRlIGNsb3VkTG9naW5Qb2xsRm9yUmVzdWx0KHVyaTogc3RyaW5nLCBwb2xsaW5nSW50ZXJ2YWw6IG51bWJlciwgc3RvcFRyaWdnZXI6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdDx2b2lkPigpKTogT2JzZXJ2YWJsZTxzdHJpbmc+IHtcclxuXHJcbiAgICByZXR1cm4gT2JzZXJ2YWJsZS5jcmVhdGUobyA9PiB7XHJcbiAgICAgIGxldCBhY2Nlc3NHcmFudGVkID0gZmFsc2U7XHJcbiAgICAgIGxldCBhY2Nlc3NEZW5pZWQgPSBmYWxzZTtcclxuXHJcbiAgICAgIHRoaXMubmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcclxuICAgICAgICBpbnRlcnZhbChwb2xsaW5nSW50ZXJ2YWwpLnBpcGUoXHJcbiAgICAgICAgICB0YWtlVW50aWwoc3RvcFRyaWdnZXIpLFxyXG4gICAgICAgICAgc3dpdGNoTWFwKCgpID0+IHRoaXMuaHR0cC5nZXQodXJpKS5waXBlKFxyXG4gICAgICAgICAgICBjYXRjaEVycm9yKChlcnI6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICAgICAgLy8gT0F1dGggc3RhbmRhcmQgd2UgYXJlIHVzaW5nIGlzIHJldHVybmluZyB3aXRoIGEgc3RhdHVzIG9mIDQwMCB3aGlsZSBsb2dnaW5nIGluIChubyBpZGVhIHdoeT8/PylcclxuICAgICAgICAgICAgICAvLyBzbyB3ZSBnb3QgdG8gZmV0Y2ggdGhhdCB0byBub3QgYnJlYWsgdGhlIHBhcmVudCBwaXBlXHJcbiAgICAgICAgICAgICAgaWYgKGVyci5zdGF0dXMgPT09IDQwMCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIG9ic2VydmFibGVPZihlcnIuZXJyb3IpO1xyXG4gICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aHJvd0Vycm9yKGVycik7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgKSlcclxuICAgICAgICApLnN1YnNjcmliZShcclxuICAgICAgICAgIChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xyXG4gICAgICAgICAgICAgIGFjY2Vzc0dyYW50ZWQgPSAhIXJlcy5hY2Nlc3NfdG9rZW47XHJcbiAgICAgICAgICAgICAgYWNjZXNzRGVuaWVkID0gcmVzLmVycm9yID09PSAnYWNjZXNzX2RlbmllZCc7XHJcblxyXG4gICAgICAgICAgICAgIGlmIChhY2Nlc3NHcmFudGVkIHx8IGFjY2Vzc0RlbmllZCkge1xyXG4gICAgICAgICAgICAgICAgLy8gbG9nZ2VkIGluXHJcbiAgICAgICAgICAgICAgICBzdG9wVHJpZ2dlci5uZXh0KCk7XHJcbiAgICAgICAgICAgICAgICBzdG9wVHJpZ2dlci5jb21wbGV0ZSgpO1xyXG4gICAgICAgICAgICAgICAgby5uZXh0KGFjY2Vzc0dyYW50ZWQgPyByZXMuYWNjZXNzX3Rva2VuIDogbnVsbCk7XHJcbiAgICAgICAgICAgICAgICBvLmNvbXBsZXRlKCk7XHJcbiAgICAgICAgICAgICAgfSBlbHNlIGlmIChyZXMuZXJyb3IgPT09ICdleHBpcmVkX3Rva2VuJykge1xyXG4gICAgICAgICAgICAgICAgLy8gZXhwaXJlZCBzbyBza2lwIHBvbGxpbmdcclxuICAgICAgICAgICAgICAgIHRocm93RXJyb3IoJ1Rva2VuIGV4cGlyZWQnKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfSwgZXJyID0+IHtcclxuICAgICAgICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcclxuICAgICAgICAgICAgICBvLmVycm9yKGVycik7XHJcbiAgICAgICAgICAgICAgby5jb21wbGV0ZSgpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH0sICgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcclxuICAgICAgICAgICAgICBvLm5leHQoYWNjZXNzR3JhbnRlZCk7XHJcbiAgICAgICAgICAgICAgby5jb21wbGV0ZSgpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjbG91ZExvZ2luU2V0SGVhZGVycyhhY2Nlc3NUb2tlbjogc3RyaW5nLCB0ZW5hbnQ6IHN0cmluZykge1xyXG4gICAgdGhpcy5iYWNrZW5kLnNldEhlYWRlcignQXV0aG9yaXphdGlvbicsICdiZWFyZXIgJyArIGFjY2Vzc1Rva2VuKTtcclxuICAgIHRoaXMuYmFja2VuZC5zZXRIZWFkZXIoJ1gtSUQtVEVOQU5ULU5BTUUnLCB0ZW5hbnQpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0cyBjYWxsZWQgd2hpbGUgYXBwIGluaXRcclxuICAgKiBAaWdub3JlXHJcbiAgICovXHJcbiAgaW5pdFVzZXIoaG9zdD86IHN0cmluZykge1xyXG5cclxuICAgIGNvbnN0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoe1xyXG4gICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nXHJcbiAgICB9KTtcclxuXHJcbiAgICByZXR1cm4gdGhpcy5odHRwXHJcbiAgICAgIC5nZXQoYCR7aG9zdCB8fCAnJ30ke3RoaXMuY29uZmlnLmdldExvZ2luQmFzZSgpfS9hdXRoL2luZm9gLCB7aGVhZGVyc30pXHJcbiAgICAgIC5waXBlKHN3aXRjaE1hcCgoaW5mbzogR2F0ZXdheUluZm8pID0+IHtcclxuICAgICAgICB0aGlzLmdhdGV3YXlJbmZvID0gaW5mbztcclxuXHJcbiAgICAgICAgdGhpcy5lbnZTZXJ2aWNlLmNsb3VkRW52aXJvbm1lbnQgPSAodGhpcy5nYXRld2F5SW5mbyAmJiB0aGlzLmdhdGV3YXlJbmZvLm9hdXRoMik7XHJcbiAgICAgICAgaWYgKHRoaXMuaXNDbG91ZEVudmlyb25tZW50KCkpIHtcclxuICAgICAgICAgIC8vIGluIGNhc2Ugb2YgcnVubmluZyBhZ2FpbnN0IGNsb3VkIGJhY2tlbmQsIHdlIHRyeSB0byBmZXRjaFxyXG4gICAgICAgICAgLy8gYWNjZXNzIHRva2VuIGFuZCB0ZW5hbnQgZnJvbSBsb2NhbCBzdG9yYWdlXHJcbiAgICAgICAgICByZXR1cm4gdGhpcy5zdG9yYWdlLmdldEl0ZW0odGhpcy5UT0tFTl9TVE9SQUdFX0tFWSkucGlwZShcclxuICAgICAgICAgICAgc3dpdGNoTWFwKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgIGlmIChyZXMpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuY2xvdWRMb2dpblNldEhlYWRlcnMocmVzLmFjY2Vzc1Rva2VuLCByZXMudGVuYW50KTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZmV0Y2hVc2VyKGluZm8sIGhvc3QpO1xyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgKVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICByZXR1cm4gdGhpcy5mZXRjaFVzZXIoaW5mbywgaG9zdClcclxuICAgICAgICB9XHJcbiAgICAgIH0pKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqXHJcbiAgICogQHBhcmFtIGdhdGV3YXlJbmZvXHJcbiAgICogQHBhcmFtIGhvc3RcclxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPEVvVXNlcj5cclxuICAgKi9cclxuICBwcml2YXRlIGZldGNoVXNlcihnYXRld2F5SW5mbzogYW55LCBob3N0Pzogc3RyaW5nKTogT2JzZXJ2YWJsZTxFb1VzZXI+IHtcclxuICAgIGNvbnN0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoe1xyXG4gICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nXHJcbiAgICB9KTtcclxuICAgIHJldHVybiB0aGlzLmh0dHBcclxuICAgICAgLmdldChgJHtob3N0IHx8ICcnfSR7dGhpcy5jb25maWcuZ2V0VXJpKCdzZXJ2aWNlQmFzZScpfSR7dGhpcy51c2VyUHJvZmlsZVVyaX1gLCB7aGVhZGVyc30pXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIHN3aXRjaE1hcCgodXNlcjogYW55KSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnByb2ZpbGUgPSB7XHJcbiAgICAgICAgICAgIGhvc3Q6IGhvc3QgfHwgJycsXHJcbiAgICAgICAgICAgIHVzZXI6IHVzZXIudXNlci5uYW1lLFxyXG4gICAgICAgICAgICBhdXRoOiBudWxsLFxyXG4gICAgICAgICAgICBhY3RpdmU6IHRydWVcclxuICAgICAgICAgIH07XHJcbiAgICAgICAgICBpZiAoaG9zdCkge1xyXG4gICAgICAgICAgICB0aGlzLmFkZEhvc3RDb25maWcoaG9zdCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB3aW5kb3cubG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5sb2dnZWRJbkNhY2hlS2V5LCBKU09OLnN0cmluZ2lmeSh7dXNlcklkOiB1c2VyLnVzZXIuaWQsIGhvc3Q6IGhvc3R9KSk7XHJcbiAgICAgICAgICByZXR1cm4gdGhpcy5pbml0QXBwKHVzZXIsIGdhdGV3YXlJbmZvLm50bG0pO1xyXG4gICAgICAgIH0pLFxyXG4gICAgICAgIHRhcCgoKSA9PiB0aGlzLmF1dGhTb3VyY2UubmV4dCh0aGlzLmlzTG9nZ2VkSW4oKSkpXHJcbiAgICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBMb2dzIG91dCB0aGUgY3VycmVudCB1c2VyLlxyXG4gICAqIEBwYXJhbSBnYXRld2F5TG9nb3V0IEZsYWcgaW5kaWNhdGluZyB3aGV0aGVyIG9yIG5vdCB0byBwZXJmb3JtIGEgZ2F0ZXdheSBsb2dvdXQgYXMgd2VsbFxyXG4gICAqL1xyXG4gIHB1YmxpYyBsb2dvdXQoZ2F0ZXdheUxvZ291dD86IGJvb2xlYW4pIHtcclxuXHJcbiAgICB0aGlzLmF1dGhTb3VyY2UubmV4dChmYWxzZSk7XHJcbiAgICB0aGlzLnN5c3RlbVN0YXR1c1NlcnZpY2Uuc3RvcCgpO1xyXG5cclxuICAgIHRoaXMucHJvZmlsZSA9IHtcclxuICAgICAgaG9zdDogJycsXHJcbiAgICAgIHVzZXI6IG51bGwsXHJcbiAgICAgIGF1dGg6IG51bGwsXHJcbiAgICAgIGFjdGl2ZTogZmFsc2VcclxuICAgIH07XHJcblxyXG4gICAgaWYgKHRoaXMuaXNDbG91ZEVudmlyb25tZW50KCkpIHtcclxuICAgICAgLy8gcmVtb3ZlIHN0b3JlZCBhY2Nlc3MgZGF0YVxyXG4gICAgICB0aGlzLnN0b3JhZ2UucmVtb3ZlSXRlbSh0aGlzLlRPS0VOX1NUT1JBR0VfS0VZKS5zdWJzY3JpYmUoKTtcclxuICAgICAgaWYgKHRoaXMuY29yZUNvbmZpZy5lbnZpcm9ubWVudC5wcm9kdWN0aW9uICYmIEVudmlyb25tZW50RW5haW8uaXNXZWJFbnZpcm9ubWVudCgpKSB7XHJcbiAgICAgICAgKHdpbmRvdyBhcyBhbnkpLmxvY2F0aW9uLmhyZWYgPSAnL2xvZ291dCc7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAoZ2F0ZXdheUxvZ291dCkge1xyXG4gICAgICAvLyBieSBkZWZhdWx0IHdlIGFyZSBqdXN0IHJlc2V0dGluZyBpbnRlcm5hbCBzdGF0ZSB0byAnbG9nZ2VkIG91dCcgYW5kIGluXHJcbiAgICAgIC8vIHNvbWUgY2FzZXMgY2FsbCBnYXRld2F5cyBsb2dvdXQgZW5kcG9pbnQgdG8gZG8gbG9nb3V0IHN0dWZmIHRoZXJlIHNpbGVudGx5XHJcbiAgICAgIHRoaXMuaHR0cC5nZXQoYCR7dGhpcy5wcm9maWxlLmhvc3QgfHwgJyd9L2xvZ291dGApLnN1YnNjcmliZSgpO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICB0aGlzLmJhY2tlbmQuc2V0QXV0aFByb2ZpbGUodGhpcy5wcm9maWxlKTtcclxuICAgIHRoaXMuZXZlbnRTZXJ2aWNlLnRyaWdnZXIoRW5haW9FdmVudC5MT0dPVVQpO1xyXG4gIH1cclxuXHJcbiAgaXNDbG91ZEVudmlyb25tZW50KCk6IGJvb2xlYW4ge1xyXG4gICAgLy8gb2F1dGgyIGluZGljYXRlcyB0aGF0IHdlIGFyZSBydW5uaW5nIGluIGEgY2xvdWQgZW52aXJvbm1lbnRcclxuICAgIHJldHVybiB0aGlzLmdhdGV3YXlJbmZvICYmIHRoaXMuZ2F0ZXdheUluZm8ub2F1dGgyO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogZm9yIGRlc2t0b3AgYW5kIG1vYmlsZSBkZXZpY2VzIHdlIHByb3ZpZGUgYSBsaXN0IG9mIGhvc3RzIGZvciB0aGUgbG9naW5cclxuICAgKlxyXG4gICAqIEBwYXJhbSBzdHJpbmcgaG9zdFxyXG4gICAqL1xyXG4gIHByaXZhdGUgYWRkSG9zdENvbmZpZyhob3N0OiBzdHJpbmcpIHtcclxuICAgIGNvbnN0IGV4aXN0aW5nSG9zdCA9IHRoaXMuaG9zdHMuZmluZChoID0+IGggPT09IGhvc3QpO1xyXG4gICAgaWYgKCFleGlzdGluZ0hvc3QpIHtcclxuICAgICAgdGhpcy5ob3N0cy5wdXNoKGhvc3QpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0IHRoZSBjdXJyZW50IHN0YXRlIG9mIGEgdXNlciBiZWluZyBsb2dnZWQgaW4uIFRoaXMgaXMga2luZCBvZiB0aGUgc3luY2hyb25vdXMgdmVyc2lvbiBvZiBzdWJzY3JpYmluZyB0byBgYXV0aGVudGljYXRlZCRgLlxyXG4gICAqIEByZXR1cm5zIFRydWUgaWYgdGhlcmUgaXMgYSBsb2dnZWQgaW4gdXNlciwgZmFsc2Ugb3RoZXJ3aXNlXHJcbiAgICovXHJcbiAgcHVibGljIGlzTG9nZ2VkSW4oKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5wcm9maWxlLnVzZXIgIT09IG51bGw7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKlxyXG4gICAqIEBwYXJhbSB1c2VyXHJcbiAgICogQHBhcmFtIGJvb2xlYW4gc3NvXHJcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZTxFb1VzZXI+XHJcbiAgICovXHJcbiAgcHJpdmF0ZSBpbml0QXBwKHVzZXI6IGFueSwgc3NvPzogYm9vbGVhbik6IE9ic2VydmFibGU8RW9Vc2VyPiB7XHJcblxyXG4gICAgY29uc3QgY3VyclVzZXIgPSBuZXcgRW9Vc2VyKHVzZXIpO1xyXG4gICAgdGhpcy5iYWNrZW5kLnNldEF1dGhQcm9maWxlKHRoaXMucHJvZmlsZSk7XHJcbiAgICB0aGlzLnVzZXJTZXJ2aWNlLnNldEN1cnJlbnRVc2VyKGN1cnJVc2VyKTtcclxuICAgIGNvbnN0IGNhcGFiaWxpdGllcyA9IHRoaXMuY2FwYWJpbGl0aWVzU2VydmljZS5zZXRDYXBhYmlsaXRpZXModXNlci5jYXBhYmlsaXRpZXMsIHNzbyk7XHJcblxyXG4gICAgdGhpcy5zeXN0ZW1TdGF0dXNTZXJ2aWNlLmluaXQodGhpcy5jb25maWcuZ2V0UmF3KCdzeXN0ZW1TdGF0dXNVcGRhdGVJbnRlcnZhbCcpKTtcclxuXHJcbiAgICAvLyB1cGRhdGUgc3RhdGVzXHJcbiAgICBpZiAoY2FwYWJpbGl0aWVzLmluYm94KSB7XHJcbiAgICAgIHRoaXMuaW5ib3hTZXJ2aWNlLnJlZnJlc2hJbmJveFN0YXRlKCk7XHJcbiAgICB9XHJcbiAgICBpZiAoY2FwYWJpbGl0aWVzLmludHJheSkge1xyXG4gICAgICB0aGlzLnByZXBhcmVTZXJ2aWNlLnJlZnJlc2hQcmVwYXJlZEl0ZW1zQ291bnQoKTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCB0b2RvID0gW1xyXG4gICAgICB0aGlzLmJwbVNlcnZpY2UuZ2V0RXhlY3V0YWJsZVByb2Nlc3NlcygpLFxyXG4gICAgICB0aGlzLnN5c3RlbVNlcnZpY2UuZ2V0U3lzdGVtRGVmaW5pdGlvbihjdXJyVXNlcilcclxuICAgIF07XHJcblxyXG4gICAgcmV0dXJuIG9ic2VydmFibGVGb3JrSm9pbih0b2RvKS5waXBlKFxyXG4gICAgICBtYXAoKCkgPT4gY3VyclVzZXIpXHJcbiAgICApO1xyXG4gIH1cclxufVxyXG4iXX0=
|
|
375
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZW8tc2RrL2NvcmUvc3JjL2xpYi9zZXJ2aWNlL2F1dGgvYXV0aC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxlQUFlLEVBQUUsVUFBVSxFQUFFLFFBQVEsSUFBSSxrQkFBa0IsRUFDM0QsRUFBRSxJQUFJLFlBQVksRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFDbEQsTUFBTSxNQUFNLENBQUM7QUFDZCxPQUFPLEVBQUMsR0FBRyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLFVBQVUsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQzFFLE9BQU8sRUFBQyxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN6RCxPQUFPLEVBQUMsVUFBVSxFQUFxQixXQUFXLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUNoRixPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFDM0QsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBQ2hELE9BQU8sRUFBQyxNQUFNLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQztBQUNqRCxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sMEJBQTBCLENBQUM7QUFDdkQsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBQzFELE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUNqRCxPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFFeEMsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBQzFELE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUNwRCxPQUFPLEVB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SSxDQUFDLGFBQWEsQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLENBQUM7U0FDakQsQ0FBQztRQUVGLE9BQU8sa0JBQWtCLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUNsQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsUUFBUSxDQUFDLENBQ3BCLENBQUM7SUFDSixDQUFDOzs7WUF2WEYsVUFBVTs7O1lBM0JILE1BQU07WUFvQk4sVUFBVSx1QkF5Q2IsTUFBTSxTQUFDLFdBQVc7WUE5RGYsZUFBZTtZQXVCZixrQkFBa0I7WUF4QmxCLFVBQVU7WUFnQlYsVUFBVTtZQWpCVSxNQUFNO1lBc0IxQixnQkFBZ0I7WUFWaEIsbUJBQW1CO1lBSm5CLE1BQU07WUFHTixZQUFZO1lBRFosY0FBYztZQUpkLGNBQWM7WUFEZCxhQUFhO1lBRWIsV0FBVztZQVFYLFlBQVk7WUFJWixtQkFBbUI7WUFObkIsWUFBWTtZQUNaLG1CQUFtQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCBmb3JrSm9pbiBhcyBvYnNlcnZhYmxlRm9ya0pvaW4sXHJcbiAgb2YgYXMgb2JzZXJ2YWJsZU9mLCBTdWJqZWN0LCB0aHJvd0Vycm9yLCBpbnRlcnZhbFxyXG59IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQge21hcCwgc3dpdGNoTWFwLCB0YWtlVW50aWwsIHRhcCwgY2F0Y2hFcnJvcn0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQge0luamVjdCwgSW5qZWN0YWJsZSwgTmdab25lfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtIdHRwQ2xpZW50LCBIdHRwRXJyb3JSZXNwb25zZSwgSHR0cEhlYWRlcnN9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHtBcHBDYWNoZVNlcnZpY2V9IGZyb20gJy4uL2NhY2hlL2FwcC1jYWNoZS5zZXJ2aWNlJztcclxuaW1wb3J0IHtDb25maWd9IGZyb20gJy4uL2NvbmZpZy9jb25maWcuc2VydmljZSc7XHJcbmltcG9ydCB7RW9Vc2VyfSBmcm9tICcuLi8uLi9tb2RlbC9lby11c2VyLm1vZGVsJztcclxuaW1wb3J0IHtTeXN0ZW1TZXJ2aWNlfSBmcm9tICcuLi9zeXN0ZW0vc3lzdGVtLnNlcnZpY2UnO1xyXG5pbXBvcnQge0JhY2tlbmRTZXJ2aWNlfSBmcm9tICcuLi9iYWNrZW5kL2JhY2tlbmQuc2VydmljZSc7XHJcbmltcG9ydCB7VXNlclNlcnZpY2V9IGZyb20gJy4uL3VzZXIvdXNlci5zZXJ2aWNlJztcclxuaW1wb3J0IHtMb2dnZXJ9IGZyb20gJy4uL2xvZ2dlci9sb2dnZXInO1xyXG5pbXBvcnQge0F1dGhQcm9maWxlfSBmcm9tICcuL2F1dGgtcHJvZmlsZS5pbnRlcmZhY2UnO1xyXG5pbXBvcnQge1ByZXBhcmVTZXJ2aWNlfSBmcm9tICcuLi9wcmVwYXJlL3ByZXBhcmUuc2VydmljZSc7XHJcbmltcG9ydCB7SW5ib3hTZXJ2aWNlfSBmcm9tICcuLi9pbmJveC9pbmJveC5zZXJ2aWNlJztcclxuaW1wb3J0IHtDYXBhYmlsaXRpZXNTZXJ2aWNlfSBmcm9tICcuLi9jYXBhYmlsaXRpZXMvY2FwYWJpbGl0aWVzLnNlcnZpY2UnO1xyXG5pbXBvcnQge0xvY2FsU3RvcmFnZX0gZnJvbSAnQG5neC1wd2EvbG9jYWwtc3RvcmFnZSc7XHJcbmltcG9ydCB7TG9jYWxTdG9yYWdlU2VydmljZX0gZnJvbSAnLi4vc3RvcmFnZS9sb2NhbC1zdG9yYWdlLnNlcnZpY2UnO1xyXG5pbXBvcnQge0V2ZW50U2VydmljZX0gZnJvbSAnLi4vZXZlbnRzL2V2ZW50LnNlcnZpY2UnO1xyXG5pbXBvcnQge0VuYWlvRXZlbnR9IGZyb20gJy4uL2V2ZW50cy9ldmVudHMnO1xyXG5pbXBvcnQge0JwbVNlcnZpY2V9IGZyb20gJy4uL2JwbS9icG0uc2VydmljZSc7XHJcbmltcG9ydCB7R2F0ZXdheUluZm99IGZyb20gJy4vZ2F0ZXdheS1pbmZvLmludGVyZmFjZSc7XHJcbmltcG9ydCB7U3lzdGVtU3RhdHVzU2VydmljZX0gZnJvbSAnLi4vc3lzdGVtLXN0YXR1cy9zeXN0ZW0tc3RhdHVzLnNlcnZpY2UnO1xyXG5pbXBvcnQge0Vudmlyb25tZW50RW5haW99IGZyb20gJy4uLy4uL2Vudmlyb25tZW50LmVuYWlvJztcclxuaW1wb3J0IHtMb2dpbkRldmljZVJlc3VsdCwgU3RvcmVkVG9rZW59IGZyb20gJy4vYXV0aC5jbG91ZC5pbnRlcmZhY2UnO1xyXG5pbXBvcnQge1BsYXRmb3JtTG9jYXRpb259IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7Q29yZUNvbmZpZ30gZnJvbSAnLi4vLi4vY29uZmlnL2NvcmUtY29uZmlnJztcclxuaW1wb3J0IHtDT1JFX0NPTkZJR30gZnJvbSAnLi4vLi4vY29uZmlnL2NvcmUtaW5pdC50b2tlbnMnO1xyXG5pbXBvcnQge0Vudmlyb25tZW50U2VydmljZX0gZnJvbSAnLi4vZW52aXJvbm1lbnQvZW52aXJvbm1lbnQuc2VydmljZSc7XHJcblxyXG4vKipcclxuICogYEF1dGhTZXJ2aWNlYCBoYW5kbGVzIGF1dGhlbnRpY2F0aW9uIGFnYWluc3QgYW4geXV1dmlzPHN1cD4mcmVnOzwvc3VwPiBSQUQgYmFja2VuZC5cclxuICovXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIEF1dGhTZXJ2aWNlIHtcclxuXHJcbiAgcHJpdmF0ZSBUT0tFTl9TVE9SQUdFX0tFWSA9ICdlby5hdXRoLmNsb3VkLmNyZWRlbnRpYWxzJztcclxuICBwcml2YXRlIHVzZXJQcm9maWxlVXJpID0gdGhpcy51c2VyU2VydmljZS5VU0VSX0ZFVENIX1VSSTtcclxuICBwcml2YXRlIGF1dGhTb3VyY2UgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcclxuICBwcml2YXRlIGxvZ2dlZEluQ2FjaGVLZXkgPSAnZW8udXNlci5sb2dnZWRJbic7XHJcblxyXG4gIC8qKlxyXG4gICAqIE9ic2VydmFibGUgdG8gc3Vic2NyaWJlIHRvIGZvciBnZXR0aW5nIHRoZSBzdGF0ZSBvZiBiZWluZyBhdXRoZW50aWNhdGVkLiBXaWxsIGVtaXQgdHJ1ZSB3aGVuIGEgdXNlciBsb2dnZWQgaW4sXHJcbiAgICogZmFsc2Ugd2hlbiB0aGUgdXNlciBsb2dnZWQgb3V0IG9yIHRoZSBnYXRld2F5cyBzZXNzaW9uIHRpbWVkIG91dC5cclxuICAgKi9cclxuICBwdWJsaWMgYXV0aGVudGljYXRlZCQ6IE9ic2VydmFibGU8Ym9vbGVhbj4gPSB0aGlzLmF1dGhTb3VyY2UuYXNPYnNlcnZhYmxlKCk7XHJcblxyXG4gIC8qKlxyXG4gICAqIEBpZ25vcmVcclxuICAgKi9cclxuICBwdWJsaWMgaG9zdHM6IHN0cmluZ1tdID0gW107XHJcbiAgcHJpdmF0ZSBnYXRld2F5SW5mbzogR2F0ZXdheUluZm87XHJcblxyXG4gIC8qKlxyXG4gICAqIEBpZ25vcmVcclxuICAgKi9cclxuICBwdWJsaWMgcHJvZmlsZTogQXV0aFByb2ZpbGUgPSB7XHJcbiAgICBob3N0OiAnJyxcclxuICAgIHVzZXI6IG51bGwsXHJcbiAgICBhdXRoOiBudWxsLFxyXG4gICAgYWN0aXZlOiBmYWxzZVxyXG4gIH07XHJcblxyXG4gIC8qKlxyXG4gICAqIEBpZ25vcmVcclxuICAgKi9cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNvbmZpZzogQ29uZmlnLFxyXG4gICAgQEluamVjdChDT1JFX0NPTkZJRykgcHVibGljIGNvcmVDb25maWc6IENvcmVDb25maWcsXHJcbiAgICBwcml2YXRlIGFwcENhY2hlOiBBcHBDYWNoZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGVudlNlcnZpY2U6IEVudmlyb25tZW50U2VydmljZSxcclxuICAgIHByaXZhdGUgaHR0cDogSHR0cENsaWVudCxcclxuICAgIHByaXZhdGUgYnBtU2VydmljZTogQnBtU2VydmljZSxcclxuICAgIHByaXZhdGUgbmdab25lOiBOZ1pvbmUsXHJcbiAgICBwcml2YXRlIGxvY2F0aW9uOiBQbGF0Zm9ybUxvY2F0aW9uLFxyXG4gICAgcHJpdmF0ZSBjYXBhYmlsaXRpZXNTZXJ2aWNlOiBDYXBhYmlsaXRpZXNTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBsb2dnZXI6IExvZ2dlcixcclxuICAgIHByaXZhdGUgaW5ib3hTZXJ2aWNlOiBJbmJveFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHByZXBhcmVTZXJ2aWNlOiBQcmVwYXJlU2VydmljZSxcclxuICAgIHByaXZhdGUgYmFja2VuZDogQmFja2VuZFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHN5c3RlbVNlcnZpY2U6IFN5c3RlbVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHVzZXJTZXJ2aWNlOiBVc2VyU2VydmljZSxcclxuICAgIHByaXZhdGUgZXZlbnRTZXJ2aWNlOiBFdmVudFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHN5c3RlbVN0YXR1c1NlcnZpY2U6IFN5c3RlbVN0YXR1c1NlcnZpY2UsXHJcbiAgICBwcm90ZWN0ZWQgc3RvcmFnZTogTG9jYWxTdG9yYWdlLFxyXG4gICAgcHJvdGVjdGVkIGxvY2FsOiBMb2NhbFN0b3JhZ2VTZXJ2aWNlKSB7XHJcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignc3RvcmFnZScsIGV2dCA9PiB7XHJcbiAgICAgIGlmIChldnQua2V5ID09PSB0aGlzLmxvZ2dlZEluQ2FjaGVLZXkpIHtcclxuICAgICAgICBjb25zdCBob3N0ID0gSlNPTi5wYXJzZShldnQubmV3VmFsdWUpLmhvc3Q7XHJcbiAgICAgICAgdGhpcy5pbml0VXNlcihob3N0KS5zdWJzY3JpYmUoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBMb2dpbiBhIHVzZXIgdXNpbmcgZm9ybSBiYXNlZCBsb2dpbi5cclxuICAgKiBAcGFyYW0gaG9zdCBUaGUgdGFyZ2V0IGhvc3QgKGNvdWxkIGJlIG51bGwgaWYgeW91IGFyZSBydW5uaW5nIGluIHdlYiBlbnZpcm9ubWVudClcclxuICAgKiBAcGFyYW0gdXNlcm5hbWUgVGhlIHVzZXJuYW1lXHJcbiAgICogQHBhcmFtIHBhc3N3b3JkIFRoZSBwYXNzd29yZFxyXG4gICAqIEByZXR1cm5zIFJlc29sdmVzIHdpdGggdGhlIGxvZ2dlZCBpbiB1c2VyXHJcbiAgICovXHJcbiAgcHVibGljIGxvZ2luKGhvc3Q6IHN0cmluZywgdXNlcm5hbWU6IHN0cmluZywgcGFzc3dvcmQ6IHN0cmluZyk6IE9ic2VydmFibGU8RW9Vc2VyPiB7XHJcblxyXG4gICAgaG9zdCA9IGhvc3QgfHwgJyc7XHJcbiAgICBjb25zdCBmZCA9IG5ldyBGb3JtRGF0YSgpO1xyXG4gICAgZmQuYXBwZW5kKCd1c2VybmFtZScsIGVuY29kZVVSSUNvbXBvbmVudCh1c2VybmFtZSkpO1xyXG4gICAgZmQuYXBwZW5kKCdwYXNzd29yZCcsIGVuY29kZVVSSUNvbXBvbmVudChwYXNzd29yZCkpO1xyXG5cclxuICAgIGNvbnN0IGxvZ2luSGVhZGVyID0gbmV3IEh0dHBIZWFkZXJzKHtcclxuICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQnXHJcbiAgICB9KTtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChob3N0ICsgdGhpcy5jb25maWcuZ2V0TG9naW5CYXNlKCkgKyAnL2xvZ2luJyxcclxuICAgICAgYHVzZXJuYW1lPSR7ZW5jb2RlVVJJQ29tcG9uZW50KHVzZXJuYW1lKX0mcGFzc3dvcmQ9JHtlbmNvZGVVUklDb21wb25lbnQocGFzc3dvcmQpfWAsIHtcclxuICAgICAgaGVhZGVyczogbG9naW5IZWFkZXIsXHJcbiAgICAgIHJlc3BvbnNlVHlwZTogJ3RleHQnXHJcbiAgICB9KS5waXBlKFxyXG4gICAgICBzd2l0Y2hNYXAoKCkgPT4gdGhpcy5pbml0VXNlcihob3N0KSlcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBMb2cgaW4gdG8gYSBjbG91ZCBiYWNrZW5kIHVzaW5nIGRldmljZSBmbG93LlxyXG4gICAqIEBwYXJhbSBob3N0IFRoZSB0YXJnZXQgaG9zdCAoY291bGQgYmUgbnVsbCBpZiB5b3UgYXJlIHJ1bm5pbmcgaW4gd2ViIGVudmlyb25tZW50KVxyXG4gICAqIEBwYXJhbSB0ZW5hbnQgVGhlIHRlbmFudFxyXG4gICAqIEByZXR1cm5zIFJlc29sdmVzIHdpdGggdGhlIGxvZ2dlZCBpbiB1c2VyXHJcbiAgICovXHJcbiAgcHVibGljIGNsb3VkTG9naW4oaG9zdDogc3RyaW5nLCB0ZW5hbnQ6IHN0cmluZyk6IE9ic2VydmFibGU8RW9Vc2VyPiB7XHJcbiAgICByZXR1cm4gT2JzZXJ2YWJsZS5jcmVhdGUobyA9PiB7XHJcbiAgICAgIGNvbnN0IHN0b3BUcmlnZ2VyJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcbiAgICAgIC8vY29uc3QgdGFyZ2V0SG9zdCA9IHRoaXMubG9jYXRpb24ucGF0aG5hbWUuc3Vic3RyaW5nKDAsIHRoaXMubG9jYXRpb24ucGF0aG5hbWUuaW5kZXhPZignL2VudGVyJykpOyAvLyBob3N0IHx8ICcnO1xyXG4gICAgICBjb25zdCB0YXJnZXRIb3N0ID0gaG9zdCB8fCAnJztcclxuICAgICAgLy8gc3RhcnQgYXV0aCBmbG93XHJcbiAgICAgIHRoaXMuaHR0cC5nZXQoYCR7dGFyZ2V0SG9zdH0vdGVuYW50LyR7dGVuYW50fS9sb2dpbkRldmljZWApLnN1YnNjcmliZSgocmVzOiBMb2dpbkRldmljZVJlc3VsdCkgPT4ge1xyXG5cclxuICAgICAgICAvLyBvcGVuIG5ldyB3aW5kb3cgZm9yIHRoZSBhdXRoZW50aWNhdGlvbiBwcm9jZXNzIC4uLlxyXG4gICAgICAgIGNvbnN0IHRhcmdldFVyaSA9IGAke3RhcmdldEhvc3R9L29hdXRoLyR7dGVuYW50fT91c2VyX2NvZGU9JHtyZXMudXNlcl9jb2RlfWA7XHJcbiAgICAgICAgY29uc3Qgd2luID0gd2luZG93Lm9wZW4odGFyZ2V0VXJpLCAnYXV0aCcpO1xyXG4gICAgICAgIGlmICh3aW4pIHtcclxuICAgICAgICAgIC8vIEBzZWU6IGh0dHA6Ly9hdGFzaGJhaGFyLmNvbS9wb3N0LzIwMTAtMDQtMjctZGV0ZWN0LXdoZW4tYS1qYXZhc2NyaXB0LXBvcHVwLXdpbmRvdy1nZXRzLWNsb3NlZFxyXG4gICAgICAgICAgdGhpcy5uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCB3aW5UaW1lciA9IHNldEludGVydmFsKCgpID0+IHtcclxuICAgICAgICAgICAgICBpZiAod2luLmNsb3NlZCkge1xyXG4gICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbCh3aW5UaW1lcik7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICBzdG9wVHJpZ2dlciQubmV4dCgpO1xyXG4gICAgICAgICAgICAgICAgICBzdG9wVHJpZ2dlciQuY29tcGxldGUoKTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSwgMTAwMCk7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIC4uLiBhbmQgc3RhcnQgcG9sbGluZyBmb3IgYXV0aGVudGljYXRpb24gcmVzdWx0c1xyXG4gICAgICAgIHRoaXMuY2xvdWRMb2dpblBvbGxGb3JSZXN1bHQoYCR7dGFyZ2V0SG9zdH0vYXV0aC9pbmZvL3N0YXRlP2RldmljZV9jb2RlPSR7cmVzLmRldmljZV9jb2RlfWAsIDEwMDAsIHN0b3BUcmlnZ2VyJClcclxuICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICB0YXAoKGFjY2Vzc1Rva2VuOiBzdHJpbmcpID0+IHtcclxuICAgICAgICAgICAgICBpZiAoYWNjZXNzVG9rZW4pIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuY2xvdWRMb2dpblNldEhlYWRlcnMoYWNjZXNzVG9rZW4sIHRlbmFudCk7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBzdG9yZVRva2VuOiBTdG9yZWRUb2tlbiA9IHtcclxuICAgICAgICAgICAgICAgICAgdGVuYW50OiB0ZW5hbnQsXHJcbiAgICAgICAgICAgICAgICAgIGFjY2Vzc1Rva2VuOiBhY2Nlc3NUb2tlblxyXG4gICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgIHRoaXMuc3RvcmFnZS5zZXRJdGVtKHRoaXMuVE9LRU5fU1RPUkFHRV9LRVksIHN0b3JlVG9rZW4pLnN1YnNjcmliZSgpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIHN3aXRjaE1hcCgoYXV0aFJlczogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgaWYgKGF1dGhSZXMpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmluaXRVc2VyKHRhcmdldEhvc3QpO1xyXG4gICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aHJvd0Vycm9yKCdub3QgYXV0aGVudGljYXRlZCcpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICkuc3Vic2NyaWJlKFxyXG4gICAgICAgICAgICAodXNlcjogRW9Vc2VyKSA9PiB7XHJcblxyXG4gICAgICAgICAgICAgIHdpbi5jbG9zZSgpO1xyXG4gICAgICAgICAgICAgIG8ubmV4dCh1c2VyKTtcclxuICAgICAgICAgICAgICBvLmNvbXBsZXRlKCk7XHJcbiAgICAgICAgICAgIH0sIGVyciA9PiB7XHJcbiAgICAgICAgICAgICAgd2luLmNsb3NlKCk7XHJcbiAgICAgICAgICAgICAgby5lcnJvcihlcnIpO1xyXG4gICAgICAgICAgICAgIG8uY29tcGxldGUoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgKVxyXG4gICAgICB9LCBlcnIgPT4ge1xyXG4gICAgICAgIG8uZXJyb3IoJ3VuYWJsZSB0byBjYWxsIGRldmljZSBmbG93IGVuZHBvaW50JywgZXJyKTtcclxuICAgICAgICBvLmNvbXBsZXRlKCk7XHJcbiAgICAgIH0pXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFN0YXJ0cyBwb2xsaW5nIGZvciBsb2dpbiByZXN1bHRzIGluIGNhc2Ugb2YgbG9nZ2luZyBpbiB0byBhIGNsb3VkIGJhY2tlbmQuXHJcbiAgICogQHBhcmFtIHVyaSBVUkkgdG8gcG9sbFxyXG4gICAqIEBwYXJhbSBwb2xsaW5nSW50ZXJ2YWwgUG9sbGluZyBpbnRlcnZhbGwgaW4gbWlsbGlzZWNvbmRzXHJcbiAgICogQHBhcmFtIHN0b3BUcmlnZ2VyIFN1YmplY3QgYWN0aW5nIGFzIHN0b3AgdHJpZ2dlclxyXG4gICAqIEByZXR1cm5zIEFjY2VzcyBUb2tlbiBpZiBsb2dnZWQgaW4gc3VjY2Vzc2Z1bGx5IG9yIE5VTEwgb3RoZXJ3aXNlXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBjbG91ZExvZ2luUG9sbEZvclJlc3VsdCh1cmk6IHN0cmluZywgcG9sbGluZ0ludGVydmFsOiBudW1iZXIsIHN0b3BUcmlnZ2VyOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3Q8dm9pZD4oKSk6IE9ic2VydmFibGU8c3RyaW5nPiB7XHJcblxyXG4gICAgcmV0dXJuIE9ic2VydmFibGUuY3JlYXRlKG8gPT4ge1xyXG4gICAgICBsZXQgYWNjZXNzR3JhbnRlZCA9IGZhbHNlO1xyXG4gICAgICBsZXQgYWNjZXNzRGVuaWVkID0gZmFsc2U7XHJcblxyXG4gICAgICB0aGlzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XHJcbiAgICAgICAgaW50ZXJ2YWwocG9sbGluZ0ludGVydmFsKS5waXBlKFxyXG4gICAgICAgICAgdGFrZVVudGlsKHN0b3BUcmlnZ2VyKSxcclxuICAgICAgICAgIHN3aXRjaE1hcCgoKSA9PiB0aGlzLmh0dHAuZ2V0KHVyaSkucGlwZShcclxuICAgICAgICAgICAgY2F0Y2hFcnJvcigoZXJyOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgICAgIC8vIE9BdXRoIHN0YW5kYXJkIHdlIGFyZSB1c2luZyBpcyByZXR1cm5pbmcgd2l0aCBhIHN0YXR1cyBvZiA0MDAgd2hpbGUgbG9nZ2luZyBpbiAobm8gaWRlYSB3aHk/Pz8pXHJcbiAgICAgICAgICAgICAgLy8gc28gd2UgZ290IHRvIGZldGNoIHRoYXQgdG8gbm90IGJyZWFrIHRoZSBwYXJlbnQgcGlwZVxyXG4gICAgICAgICAgICAgIGlmIChlcnIuc3RhdHVzID09PSA0MDApIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBvYnNlcnZhYmxlT2YoZXJyLmVycm9yKTtcclxuICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhyb3dFcnJvcihlcnIpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICkpXHJcbiAgICAgICAgKS5zdWJzY3JpYmUoXHJcbiAgICAgICAgICAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcclxuICAgICAgICAgICAgICBhY2Nlc3NHcmFudGVkID0gISFyZXMuYWNjZXNzX3Rva2VuO1xyXG4gICAgICAgICAgICAgIGFjY2Vzc0RlbmllZCA9IHJlcy5lcnJvciA9PT0gJ2FjY2Vzc19kZW5pZWQnO1xyXG5cclxuICAgICAgICAgICAgICBpZiAoYWNjZXNzR3JhbnRlZCB8fCBhY2Nlc3NEZW5pZWQpIHtcclxuICAgICAgICAgICAgICAgIC8vIGxvZ2dlZCBpblxyXG4gICAgICAgICAgICAgICAgc3RvcFRyaWdnZXIubmV4dCgpO1xyXG4gICAgICAgICAgICAgICAgc3RvcFRyaWdnZXIuY29tcGxldGUoKTtcclxuICAgICAgICAgICAgICAgIG8ubmV4dChhY2Nlc3NHcmFudGVkID8gcmVzLmFjY2Vzc190b2tlbiA6IG51bGwpO1xyXG4gICAgICAgICAgICAgICAgby5jb21wbGV0ZSgpO1xyXG4gICAgICAgICAgICAgIH0gZWxzZSBpZiAocmVzLmVycm9yID09PSAnZXhwaXJlZF90b2tlbicpIHtcclxuICAgICAgICAgICAgICAgIC8vIGV4cGlyZWQgc28gc2tpcCBwb2xsaW5nXHJcbiAgICAgICAgICAgICAgICB0aHJvd0Vycm9yKCdUb2tlbiBleHBpcmVkJyk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH0sIGVyciA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XHJcbiAgICAgICAgICAgICAgby5lcnJvcihlcnIpO1xyXG4gICAgICAgICAgICAgIG8uY29tcGxldGUoKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9LCAoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XHJcbiAgICAgICAgICAgICAgby5uZXh0KGFjY2Vzc0dyYW50ZWQpO1xyXG4gICAgICAgICAgICAgIG8uY29tcGxldGUoKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY2xvdWRMb2dpblNldEhlYWRlcnMoYWNjZXNzVG9rZW46IHN0cmluZywgdGVuYW50OiBzdHJpbmcpIHtcclxuICAgIHRoaXMuYmFja2VuZC5zZXRIZWFkZXIoJ0F1dGhvcml6YXRpb24nLCAnYmVhcmVyICcgKyBhY2Nlc3NUb2tlbik7XHJcbiAgICB0aGlzLmJhY2tlbmQuc2V0SGVhZGVyKCdYLUlELVRFTkFOVC1OQU1FJywgdGVuYW50KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldHMgY2FsbGVkIHdoaWxlIGFwcCBpbml0XHJcbiAgICogQGlnbm9yZVxyXG4gICAqL1xyXG4gIGluaXRVc2VyKGhvc3Q/OiBzdHJpbmcpIHtcclxuXHJcbiAgICBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKHtcclxuICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJ1xyXG4gICAgfSk7XHJcblxyXG4gICAgcmV0dXJuIHRoaXMuaHR0cFxyXG4gICAgICAuZ2V0KGAke2hvc3QgfHwgJyd9JHt0aGlzLmNvbmZpZy5nZXRMb2dpbkJhc2UoKX0vYXV0aC9pbmZvYCwge2hlYWRlcnN9KVxyXG4gICAgICAucGlwZShzd2l0Y2hNYXAoKGluZm86IEdhdGV3YXlJbmZvKSA9PiB7XHJcbiAgICAgICAgdGhpcy5nYXRld2F5SW5mbyA9IGluZm87XHJcblxyXG4gICAgICAgIHRoaXMuZW52U2VydmljZS5jbG91ZEVudmlyb25tZW50ID0gKHRoaXMuZ2F0ZXdheUluZm8gJiYgdGhpcy5nYXRld2F5SW5mby5vYXV0aDIpO1xyXG4gICAgICAgIGlmICh0aGlzLmlzQ2xvdWRFbnZpcm9ubWVudCgpKSB7XHJcbiAgICAgICAgICAvLyBpbiBjYXNlIG9mIHJ1bm5pbmcgYWdhaW5zdCBjbG91ZCBiYWNrZW5kLCB3ZSB0cnkgdG8gZmV0Y2hcclxuICAgICAgICAgIC8vIGFjY2VzcyB0b2tlbiBhbmQgdGVuYW50IGZyb20gbG9jYWwgc3RvcmFnZVxyXG4gICAgICAgICAgcmV0dXJuIHRoaXMuc3RvcmFnZS5nZXRJdGVtKHRoaXMuVE9LRU5fU1RPUkFHRV9LRVkpLnBpcGUoXHJcbiAgICAgICAgICAgIHN3aXRjaE1hcCgocmVzOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICBpZiAocmVzKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNsb3VkTG9naW5TZXRIZWFkZXJzKHJlcy5hY2Nlc3NUb2tlbiwgcmVzLnRlbmFudCk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIHJldHVybiB0aGlzLmZldGNoVXNlcihpbmZvLCBob3N0KTtcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgIClcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgcmV0dXJuIHRoaXMuZmV0Y2hVc2VyKGluZm8sIGhvc3QpXHJcbiAgICAgICAgfVxyXG4gICAgICB9KSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKlxyXG4gICAqIEBwYXJhbSBnYXRld2F5SW5mb1xyXG4gICAqIEBwYXJhbSBob3N0XHJcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZTxFb1VzZXI+XHJcbiAgICovXHJcbiAgcHJpdmF0ZSBmZXRjaFVzZXIoZ2F0ZXdheUluZm86IGFueSwgaG9zdD86IHN0cmluZyk6IE9ic2VydmFibGU8RW9Vc2VyPiB7XHJcbiAgICBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKHtcclxuICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJ1xyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwXHJcbiAgICAgIC5nZXQoYCR7aG9zdCB8fCAnJ30ke3RoaXMuY29uZmlnLmdldFVyaSgnc2VydmljZUJhc2UnKX0ke3RoaXMudXNlclByb2ZpbGVVcml9YCwge2hlYWRlcnN9KVxyXG4gICAgICAucGlwZShcclxuICAgICAgICBzd2l0Y2hNYXAoKHVzZXI6IGFueSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5wcm9maWxlID0ge1xyXG4gICAgICAgICAgICBob3N0OiBob3N0IHx8ICcnLFxyXG4gICAgICAgICAgICB1c2VyOiB1c2VyLnVzZXIubmFtZSxcclxuICAgICAgICAgICAgYXV0aDogbnVsbCxcclxuICAgICAgICAgICAgYWN0aXZlOiB0cnVlXHJcbiAgICAgICAgICB9O1xyXG4gICAgICAgICAgaWYgKGhvc3QpIHtcclxuICAgICAgICAgICAgdGhpcy5hZGRIb3N0Q29uZmlnKGhvc3QpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgd2luZG93LmxvY2FsU3RvcmFnZS5zZXRJdGVtKHRoaXMubG9nZ2VkSW5DYWNoZUtleSwgSlNPTi5zdHJpbmdpZnkoe3VzZXJJZDogdXNlci51c2VyLmlkLCBob3N0OiBob3N0fSkpO1xyXG4gICAgICAgICAgcmV0dXJuIHRoaXMuaW5pdEFwcCh1c2VyLCBnYXRld2F5SW5mby5udGxtKTtcclxuICAgICAgICB9KSxcclxuICAgICAgICB0YXAoKCkgPT4gdGhpcy5hdXRoU291cmNlLm5leHQodGhpcy5pc0xvZ2dlZEluKCkpKVxyXG4gICAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTG9ncyBvdXQgdGhlIGN1cnJlbnQgdXNlci5cclxuICAgKiBAcGFyYW0gZ2F0ZXdheUxvZ291dCBGbGFnIGluZGljYXRpbmcgd2hldGhlciBvciBub3QgdG8gcGVyZm9ybSBhIGdhdGV3YXkgbG9nb3V0IGFzIHdlbGxcclxuICAgKi9cclxuICBwdWJsaWMgbG9nb3V0KGdhdGV3YXlMb2dvdXQ/OiBib29sZWFuKSB7XHJcblxyXG4gICAgdGhpcy5hdXRoU291cmNlLm5leHQoZmFsc2UpO1xyXG4gICAgdGhpcy5zeXN0ZW1TdGF0dXNTZXJ2aWNlLnN0b3AoKTtcclxuXHJcbiAgICB0aGlzLnByb2ZpbGUgPSB7XHJcbiAgICAgIGhvc3Q6ICcnLFxyXG4gICAgICB1c2VyOiBudWxsLFxyXG4gICAgICBhdXRoOiBudWxsLFxyXG4gICAgICBhY3RpdmU6IGZhbHNlXHJcbiAgICB9O1xyXG5cclxuICAgIGlmICh0aGlzLmlzQ2xvdWRFbnZpcm9ubWVudCgpKSB7XHJcbiAgICAgIC8vIHJlbW92ZSBzdG9yZWQgYWNjZXNzIGRhdGFcclxuICAgICAgdGhpcy5zdG9yYWdlLnJlbW92ZUl0ZW0odGhpcy5UT0tFTl9TVE9SQUdFX0tFWSkuc3Vic2NyaWJlKCk7XHJcbiAgICAgIGlmICh0aGlzLmNvcmVDb25maWcuZW52aXJvbm1lbnQucHJvZHVjdGlvbiAmJiBFbnZpcm9ubWVudEVuYWlvLmlzV2ViRW52aXJvbm1lbnQoKSkge1xyXG4gICAgICAgICh3aW5kb3cgYXMgYW55KS5sb2NhdGlvbi5ocmVmID0gdGhpcy5jb25maWcuZ2V0TG9naW5CYXNlKCkgKyAnL2xvZ291dCc7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAoZ2F0ZXdheUxvZ291dCkge1xyXG4gICAgICAvLyBieSBkZWZhdWx0IHdlIGFyZSBqdXN0IHJlc2V0dGluZyBpbnRlcm5hbCBzdGF0ZSB0byAnbG9nZ2VkIG91dCcgYW5kIGluXHJcbiAgICAgIC8vIHNvbWUgY2FzZXMgY2FsbCBnYXRld2F5cyBsb2dvdXQgZW5kcG9pbnQgdG8gZG8gbG9nb3V0IHN0dWZmIHRoZXJlIHNpbGVudGx5XHJcbiAgICAgIHRoaXMuaHR0cC5nZXQoYCR7dGhpcy5wcm9maWxlLmhvc3QgfHwgJyd9JHt0aGlzLmNvbmZpZy5nZXRMb2dpbkJhc2UoKX0vbG9nb3V0YCkuc3Vic2NyaWJlKCk7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIHRoaXMuYmFja2VuZC5zZXRBdXRoUHJvZmlsZSh0aGlzLnByb2ZpbGUpO1xyXG4gICAgdGhpcy5ldmVudFNlcnZpY2UudHJpZ2dlcihFbmFpb0V2ZW50LkxPR09VVCk7XHJcbiAgfVxyXG5cclxuICBpc0Nsb3VkRW52aXJvbm1lbnQoKTogYm9vbGVhbiB7XHJcbiAgICAvLyBvYXV0aDIgaW5kaWNhdGVzIHRoYXQgd2UgYXJlIHJ1bm5pbmcgaW4gYSBjbG91ZCBlbnZpcm9ubWVudFxyXG4gICAgcmV0dXJuIHRoaXMuZ2F0ZXdheUluZm8gJiYgdGhpcy5nYXRld2F5SW5mby5vYXV0aDI7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBmb3IgZGVza3RvcCBhbmQgbW9iaWxlIGRldmljZXMgd2UgcHJvdmlkZSBhIGxpc3Qgb2YgaG9zdHMgZm9yIHRoZSBsb2dpblxyXG4gICAqXHJcbiAgICogQHBhcmFtIHN0cmluZyBob3N0XHJcbiAgICovXHJcbiAgcHJpdmF0ZSBhZGRIb3N0Q29uZmlnKGhvc3Q6IHN0cmluZykge1xyXG4gICAgY29uc3QgZXhpc3RpbmdIb3N0ID0gdGhpcy5ob3N0cy5maW5kKGggPT4gaCA9PT0gaG9zdCk7XHJcbiAgICBpZiAoIWV4aXN0aW5nSG9zdCkge1xyXG4gICAgICB0aGlzLmhvc3RzLnB1c2goaG9zdCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHZXQgdGhlIGN1cnJlbnQgc3RhdGUgb2YgYSB1c2VyIGJlaW5nIGxvZ2dlZCBpbi4gVGhpcyBpcyBraW5kIG9mIHRoZSBzeW5jaHJvbm91cyB2ZXJzaW9uIG9mIHN1YnNjcmliaW5nIHRvIGBhdXRoZW50aWNhdGVkJGAuXHJcbiAgICogQHJldHVybnMgVHJ1ZSBpZiB0aGVyZSBpcyBhIGxvZ2dlZCBpbiB1c2VyLCBmYWxzZSBvdGhlcndpc2VcclxuICAgKi9cclxuICBwdWJsaWMgaXNMb2dnZWRJbigpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLnByb2ZpbGUudXNlciAhPT0gbnVsbDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHVzZXJcclxuICAgKiBAcGFyYW0gYm9vbGVhbiBzc29cclxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPEVvVXNlcj5cclxuICAgKi9cclxuICBwcml2YXRlIGluaXRBcHAodXNlcjogYW55LCBzc28/OiBib29sZWFuKTogT2JzZXJ2YWJsZTxFb1VzZXI+IHtcclxuXHJcbiAgICBjb25zdCBjdXJyVXNlciA9IG5ldyBFb1VzZXIodXNlcik7XHJcbiAgICB0aGlzLmJhY2tlbmQuc2V0QXV0aFByb2ZpbGUodGhpcy5wcm9maWxlKTtcclxuICAgIHRoaXMudXNlclNlcnZpY2Uuc2V0Q3VycmVudFVzZXIoY3VyclVzZXIpO1xyXG4gICAgY29uc3QgY2FwYWJpbGl0aWVzID0gdGhpcy5jYXBhYmlsaXRpZXNTZXJ2aWNlLnNldENhcGFiaWxpdGllcyh1c2VyLmNhcGFiaWxpdGllcywgc3NvKTtcclxuXHJcbiAgICB0aGlzLnN5c3RlbVN0YXR1c1NlcnZpY2UuaW5pdCh0aGlzLmNvbmZpZy5nZXRSYXcoJ3N5c3RlbVN0YXR1c1VwZGF0ZUludGVydmFsJykpO1xyXG5cclxuICAgIC8vIHVwZGF0ZSBzdGF0ZXNcclxuICAgIGlmIChjYXBhYmlsaXRpZXMuaW5ib3gpIHtcclxuICAgICAgdGhpcy5pbmJveFNlcnZpY2UucmVmcmVzaEluYm94U3RhdGUoKTtcclxuICAgIH1cclxuICAgIGlmIChjYXBhYmlsaXRpZXMuaW50cmF5KSB7XHJcbiAgICAgIHRoaXMucHJlcGFyZVNlcnZpY2UucmVmcmVzaFByZXBhcmVkSXRlbXNDb3VudCgpO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHRvZG8gPSBbXHJcbiAgICAgIHRoaXMuYnBtU2VydmljZS5nZXRFeGVjdXRhYmxlUHJvY2Vzc2VzKCksXHJcbiAgICAgIHRoaXMuc3lzdGVtU2VydmljZS5nZXRTeXN0ZW1EZWZpbml0aW9uKGN1cnJVc2VyKVxyXG4gICAgXTtcclxuXHJcbiAgICByZXR1cm4gb2JzZXJ2YWJsZUZvcmtKb2luKHRvZG8pLnBpcGUoXHJcbiAgICAgIG1hcCgoKSA9PiBjdXJyVXNlcilcclxuICAgICk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|