@fundamental-ngx/core 0.43.13 → 0.43.14
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/esm2020/scroll-spy/scroll-spy.directive.mjs +23 -9
- package/esm2020/tabs/tab-list.component.mjs +10 -5
- package/fesm2015/fundamental-ngx-core-scroll-spy.mjs +22 -8
- package/fesm2015/fundamental-ngx-core-scroll-spy.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-tabs.mjs +7 -2
- package/fesm2015/fundamental-ngx-core-tabs.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-scroll-spy.mjs +22 -8
- package/fesm2020/fundamental-ngx-core-scroll-spy.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-tabs.mjs +7 -2
- package/fesm2020/fundamental-ngx-core-tabs.mjs.map +1 -1
- package/fundamental-ngx-core-v0.43.14.tgz +0 -0
- package/package.json +3 -3
- package/schematics/add-dependencies/index.js +4 -4
- package/scroll-spy/scroll-spy.directive.d.ts +7 -4
- package/fundamental-ngx-core-v0.43.13.tgz +0 -0
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import { Directive, ElementRef, EventEmitter, HostListener, Input, Output } from '@angular/core';
|
|
1
|
+
import { Directive, ElementRef, EventEmitter, HostListener, Input, Output, inject } from '@angular/core';
|
|
2
|
+
import { DestroyedService, resizeObservable } from '@fundamental-ngx/cdk/utils';
|
|
3
|
+
import { debounceTime, takeUntil } from 'rxjs';
|
|
2
4
|
import * as i0 from "@angular/core";
|
|
3
5
|
/**
|
|
4
6
|
* A directive designed to help navigation elements determine the element currently in view of the user.
|
|
5
7
|
*/
|
|
6
8
|
export class ScrollSpyDirective {
|
|
7
|
-
|
|
8
|
-
constructor(_elRef) {
|
|
9
|
-
this._elRef = _elRef;
|
|
9
|
+
constructor() {
|
|
10
10
|
/**
|
|
11
11
|
* An array of tags to track.
|
|
12
12
|
*/
|
|
@@ -35,6 +35,10 @@ export class ScrollSpyDirective {
|
|
|
35
35
|
* The returned value is the HTMLElement itself.
|
|
36
36
|
*/
|
|
37
37
|
this.spyChange = new EventEmitter();
|
|
38
|
+
/** @hidden */
|
|
39
|
+
this._elRef = inject(ElementRef);
|
|
40
|
+
/** @hidden */
|
|
41
|
+
this._destroyRef = inject(DestroyedService);
|
|
38
42
|
}
|
|
39
43
|
/** @hidden */
|
|
40
44
|
onScroll(event) {
|
|
@@ -61,15 +65,25 @@ export class ScrollSpyDirective {
|
|
|
61
65
|
this.spyChange.emit(this._currentActive);
|
|
62
66
|
}
|
|
63
67
|
}
|
|
68
|
+
/** @hidden */
|
|
69
|
+
ngOnInit() {
|
|
70
|
+
// When the spy container being resized, re-evaluate scroll position.
|
|
71
|
+
resizeObservable(this._elRef.nativeElement)
|
|
72
|
+
.pipe(debounceTime(30), takeUntil(this._destroyRef))
|
|
73
|
+
.subscribe(() => {
|
|
74
|
+
this.onScroll({ target: this._elRef.nativeElement });
|
|
75
|
+
});
|
|
76
|
+
}
|
|
64
77
|
}
|
|
65
|
-
ScrollSpyDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ScrollSpyDirective, deps: [
|
|
66
|
-
ScrollSpyDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.9", type: ScrollSpyDirective, selector: "[fdScrollSpy]", inputs: { trackedTags: "trackedTags", fireEmpty: "fireEmpty", targetPercent: "targetPercent", targetOffset: "targetOffset", scrollSpyDisabled: "scrollSpyDisabled" }, outputs: { spyChange: "spyChange" }, host: { listeners: { "scroll": "onScroll($event)" } }, ngImport: i0 });
|
|
78
|
+
ScrollSpyDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ScrollSpyDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
79
|
+
ScrollSpyDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.9", type: ScrollSpyDirective, selector: "[fdScrollSpy]", inputs: { trackedTags: "trackedTags", fireEmpty: "fireEmpty", targetPercent: "targetPercent", targetOffset: "targetOffset", scrollSpyDisabled: "scrollSpyDisabled" }, outputs: { spyChange: "spyChange" }, host: { listeners: { "scroll": "onScroll($event)" } }, providers: [DestroyedService], ngImport: i0 });
|
|
67
80
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ScrollSpyDirective, decorators: [{
|
|
68
81
|
type: Directive,
|
|
69
82
|
args: [{
|
|
70
|
-
selector: '[fdScrollSpy]'
|
|
83
|
+
selector: '[fdScrollSpy]',
|
|
84
|
+
providers: [DestroyedService]
|
|
71
85
|
}]
|
|
72
|
-
}],
|
|
86
|
+
}], propDecorators: { trackedTags: [{
|
|
73
87
|
type: Input
|
|
74
88
|
}], fireEmpty: [{
|
|
75
89
|
type: Input
|
|
@@ -85,4 +99,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
|
|
|
85
99
|
type: HostListener,
|
|
86
100
|
args: ['scroll', ['$event']]
|
|
87
101
|
}] } });
|
|
88
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
102
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Nyb2xsLXNweS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvc3JjL2xpYi9zY3JvbGwtc3B5L3Njcm9sbC1zcHkuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakgsT0FBTyxFQUFFLGdCQUFnQixFQUFFLGdCQUFnQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDaEYsT0FBTyxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7O0FBRS9DOztHQUVHO0FBS0gsTUFBTSxPQUFPLGtCQUFrQjtJQUovQjtRQUtJOztXQUVHO1FBRUgsZ0JBQVcsR0FBYSxFQUFFLENBQUM7UUFFM0I7O1dBRUc7UUFFSCxjQUFTLEdBQUcsS0FBSyxDQUFDO1FBRWxCOzs7O1dBSUc7UUFFSCxrQkFBYSxHQUFHLENBQUMsQ0FBQztRQUVsQjs7O1dBR0c7UUFFSCxpQkFBWSxHQUFHLENBQUMsQ0FBQztRQUVqQjs7V0FFRztRQUVILHNCQUFpQixHQUFHLEtBQUssQ0FBQztRQUUxQjs7O1dBR0c7UUFFTSxjQUFTLEdBQThCLElBQUksWUFBWSxFQUFlLENBQUM7UUFLaEYsY0FBYztRQUNHLFdBQU0sR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7UUFFN0MsY0FBYztRQUNHLGdCQUFXLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7S0F5QzNEO0lBdkNHLGNBQWM7SUFFZCxRQUFRLENBQUMsS0FBWTtRQUNqQixJQUFJLElBQUksQ0FBQyxpQkFBaUIsRUFBRTtZQUN4QixPQUFPO1NBQ1Y7UUFFRCxJQUFJLFFBQWlDLENBQUM7UUFDdEMsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLE1BQXFCLENBQUM7UUFDM0MsTUFBTSxRQUFRLEdBQWtCLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQztRQUNuRSxNQUFNLENBQUMsVUFBVSxDQUFDLEdBQUcsUUFBUSxDQUFDO1FBQzlCLE1BQU0sY0FBYyxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUM7UUFDdkMsTUFBTSxlQUFlLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQztRQUN6QyxNQUFNLGVBQWUsR0FBRyxNQUFNLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxZQUFZLEdBQUcsQ0FBQyxNQUFNLENBQUMsU0FBUyxHQUFHLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUV6RyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsY0FBYyxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQ3JDLE1BQU0sT0FBTyxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUM1QixJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsaUJBQWlCLEVBQUUsS0FBSyxPQUFPLENBQUMsT0FBTyxDQUFDLGlCQUFpQixFQUFFLENBQUMsRUFBRTtnQkFDakcsSUFBSSxPQUFPLENBQUMsU0FBUyxHQUFHLGVBQWUsSUFBSSxlQUFlLEdBQUcsTUFBTSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsYUFBYSxFQUFFO29CQUNuRyxRQUFRLEdBQUcsT0FBTyxDQUFDO2lCQUN0QjthQUNKO1NBQ0o7UUFFRCxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxRQUFRLEtBQUssSUFBSSxDQUFDLGNBQWMsRUFBRTtZQUNsRSxJQUFJLENBQUMsY0FBYyxHQUFHLFFBQVEsQ0FBQztZQUMvQixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7U0FDNUM7SUFDTCxDQUFDO0lBRUQsY0FBYztJQUNkLFFBQVE7UUFDSixxRUFBcUU7UUFDckUsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUM7YUFDdEMsSUFBSSxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsRUFBRSxTQUFTLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO2FBQ25ELFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDWixJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxFQUFXLENBQUMsQ0FBQztRQUNsRSxDQUFDLENBQUMsQ0FBQztJQUNYLENBQUM7OytHQXhGUSxrQkFBa0I7bUdBQWxCLGtCQUFrQiwwU0FGaEIsQ0FBQyxnQkFBZ0IsQ0FBQzsyRkFFcEIsa0JBQWtCO2tCQUo5QixTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSxlQUFlO29CQUN6QixTQUFTLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQztpQkFDaEM7OEJBTUcsV0FBVztzQkFEVixLQUFLO2dCQU9OLFNBQVM7c0JBRFIsS0FBSztnQkFTTixhQUFhO3NCQURaLEtBQUs7Z0JBUU4sWUFBWTtzQkFEWCxLQUFLO2dCQU9OLGlCQUFpQjtzQkFEaEIsS0FBSztnQkFRRyxTQUFTO3NCQURqQixNQUFNO2dCQWNQLFFBQVE7c0JBRFAsWUFBWTt1QkFBQyxRQUFRLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSG9zdExpc3RlbmVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRGVzdHJveWVkU2VydmljZSwgcmVzaXplT2JzZXJ2YWJsZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY2RrL3V0aWxzJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XG5cbi8qKlxuICogQSBkaXJlY3RpdmUgZGVzaWduZWQgdG8gaGVscCBuYXZpZ2F0aW9uIGVsZW1lbnRzIGRldGVybWluZSB0aGUgZWxlbWVudCBjdXJyZW50bHkgaW4gdmlldyBvZiB0aGUgdXNlci5cbiAqL1xuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbZmRTY3JvbGxTcHldJyxcbiAgICBwcm92aWRlcnM6IFtEZXN0cm95ZWRTZXJ2aWNlXVxufSlcbmV4cG9ydCBjbGFzcyBTY3JvbGxTcHlEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQge1xuICAgIC8qKlxuICAgICAqIEFuIGFycmF5IG9mIHRhZ3MgdG8gdHJhY2suXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICB0cmFja2VkVGFnczogc3RyaW5nW10gPSBbXTtcblxuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgZXZlbnRzIGFyZSBzdGlsbCBmaXJlZCBpZiB0aGVyZSBpcyBubyB0YWcgcHJlc2VudCBvbiB0aGUgdXNlcidzIHNjcmVlbi5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGZpcmVFbXB0eSA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogQSBudW1iZXIgdGhhdCByZXByZXNlbnQgYXQgd2hhdCBsb2NhdGlvbiBpbiB0aGUgY29udGFpbmVyIHRoZSBldmVudCBpcyBmaXJlZC5cbiAgICAgKiAwLjUgd291bGQgZmlyZSB0aGUgZXZlbnRzIGluIHRoZSBtaWRkbGUgb2YgdGhlIGNvbnRhaW5lcixcbiAgICAgKiAwIGZvciB0aGUgdG9wIGFuZCAxIGZvciB0aGUgYm90dG9tLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgdGFyZ2V0UGVyY2VudCA9IDA7XG5cbiAgICAvKipcbiAgICAgKiBOdW1iZXIgdGhhdCByZXByZXNlbnRzIHRoZSBvZmZzZXQgaW4gcGl4ZWxzIGZvciBmaXJlZCB0YXJnZXQuIGAxMDBgIHZhbHVlIG1lYW5zIHRoYXQgdGhlIGV2ZW50IHdpbGwgYmUgZmlyZWQgZm9yXG4gICAgICogdGFyZ2V0IHRoYXQgaXMgMTAwIHBpeGVscyBiZWxvdyB0aGUgc3B5IGNvbnRhaW5lci5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHRhcmdldE9mZnNldCA9IDA7XG5cbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIHRvIGRpc2FibGUgc2Nyb2xsIHNweVxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2Nyb2xsU3B5RGlzYWJsZWQgPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIEV2ZW50IGZpcmVkIG9uIHRoZSBzY3JvbGwgZWxlbWVudCB3aGVuIGEgbmV3IGl0ZW0gYmVjb21lcyBhY3RpdmF0ZWQgYnkgdGhlIHNjcm9sbHNweSAuXG4gICAgICogVGhlIHJldHVybmVkIHZhbHVlIGlzIHRoZSBIVE1MRWxlbWVudCBpdHNlbGYuXG4gICAgICovXG4gICAgQE91dHB1dCgpXG4gICAgcmVhZG9ubHkgc3B5Q2hhbmdlOiBFdmVudEVtaXR0ZXI8SFRNTEVsZW1lbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxIVE1MRWxlbWVudD4oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfY3VycmVudEFjdGl2ZTogSFRNTEVsZW1lbnQgfCB1bmRlZmluZWQ7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX2VsUmVmID0gaW5qZWN0KEVsZW1lbnRSZWYpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IF9kZXN0cm95UmVmID0gaW5qZWN0KERlc3Ryb3llZFNlcnZpY2UpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBASG9zdExpc3RlbmVyKCdzY3JvbGwnLCBbJyRldmVudCddKVxuICAgIG9uU2Nyb2xsKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5zY3JvbGxTcHlEaXNhYmxlZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IHNwaWVkVGFnOiBIVE1MRWxlbWVudCB8IHVuZGVmaW5lZDtcbiAgICAgICAgY29uc3QgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xuICAgICAgICBjb25zdCBjaGlsZHJlbjogSFRNTEVsZW1lbnRbXSA9IHRoaXMuX2VsUmVmLm5hdGl2ZUVsZW1lbnQuY2hpbGRyZW47XG4gICAgICAgIGNvbnN0IFtmaXJzdENoaWxkXSA9IGNoaWxkcmVuO1xuICAgICAgICBjb25zdCBjaGlsZHJlbkxlbmd0aCA9IGNoaWxkcmVuLmxlbmd0aDtcbiAgICAgICAgY29uc3QgdGFyZ2V0U2Nyb2xsVG9wID0gdGFyZ2V0LnNjcm9sbFRvcDtcbiAgICAgICAgY29uc3QgdGFyZ2V0T2Zmc2V0VG9wID0gdGFyZ2V0Lm9mZnNldFRvcCArIHRoaXMudGFyZ2V0T2Zmc2V0IC0gKHRhcmdldC5vZmZzZXRUb3AgLSBmaXJzdENoaWxkLm9mZnNldFRvcCk7XG5cbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjaGlsZHJlbkxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCBlbGVtZW50ID0gY2hpbGRyZW5baV07XG4gICAgICAgICAgICBpZiAodGhpcy50cmFja2VkVGFncy5zb21lKCh0YWcpID0+IHRhZy50b0xvY2FsZVVwcGVyQ2FzZSgpID09PSBlbGVtZW50LnRhZ05hbWUudG9Mb2NhbGVVcHBlckNhc2UoKSkpIHtcbiAgICAgICAgICAgICAgICBpZiAoZWxlbWVudC5vZmZzZXRUb3AgLSB0YXJnZXRPZmZzZXRUb3AgPD0gdGFyZ2V0U2Nyb2xsVG9wICsgdGFyZ2V0Lm9mZnNldEhlaWdodCAqIHRoaXMudGFyZ2V0UGVyY2VudCkge1xuICAgICAgICAgICAgICAgICAgICBzcGllZFRhZyA9IGVsZW1lbnQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKChzcGllZFRhZyB8fCB0aGlzLmZpcmVFbXB0eSkgJiYgc3BpZWRUYWcgIT09IHRoaXMuX2N1cnJlbnRBY3RpdmUpIHtcbiAgICAgICAgICAgIHRoaXMuX2N1cnJlbnRBY3RpdmUgPSBzcGllZFRhZztcbiAgICAgICAgICAgIHRoaXMuc3B5Q2hhbmdlLmVtaXQodGhpcy5fY3VycmVudEFjdGl2ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICAvLyBXaGVuIHRoZSBzcHkgY29udGFpbmVyIGJlaW5nIHJlc2l6ZWQsIHJlLWV2YWx1YXRlIHNjcm9sbCBwb3NpdGlvbi5cbiAgICAgICAgcmVzaXplT2JzZXJ2YWJsZSh0aGlzLl9lbFJlZi5uYXRpdmVFbGVtZW50KVxuICAgICAgICAgICAgLnBpcGUoZGVib3VuY2VUaW1lKDMwKSwgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3lSZWYpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5vblNjcm9sbCh7IHRhcmdldDogdGhpcy5fZWxSZWYubmF0aXZlRWxlbWVudCB9IGFzIEV2ZW50KTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cbn1cbiJdfQ==
|
|
@@ -1,10 +1,12 @@
|
|
|
1
|
-
|
|
1
|
+
/* eslint-disable @typescript-eslint/member-ordering */
|
|
2
|
+
import { ENTER, SPACE } from '@angular/cdk/keycodes';
|
|
3
|
+
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChildren, ElementRef, EventEmitter, Input, Output, QueryList, ViewChild, ViewChildren, ViewEncapsulation, forwardRef } from '@angular/core';
|
|
2
4
|
import { DestroyedService, KeyUtil, scrollTop } from '@fundamental-ngx/cdk/utils';
|
|
3
5
|
import { ContentDensityObserver, contentDensityObserverProviders } from '@fundamental-ngx/core/content-density';
|
|
4
6
|
import { MenuComponent } from '@fundamental-ngx/core/menu';
|
|
5
7
|
import { OverflowLayoutComponent } from '@fundamental-ngx/core/overflow-layout';
|
|
6
8
|
import { ScrollbarDirective } from '@fundamental-ngx/core/scrollbar';
|
|
7
|
-
import {
|
|
9
|
+
import { Subject, Subscription, fromEvent, merge } from 'rxjs';
|
|
8
10
|
import { debounceTime, delay, filter, first, map, startWith, switchMap, takeUntil } from 'rxjs/operators';
|
|
9
11
|
import { TabItemExpandComponent } from './tab-item-expand/tab-item-expand.component';
|
|
10
12
|
import { TabItemDirective } from './tab-item/tab-item.directive';
|
|
@@ -12,7 +14,6 @@ import { TabLinkDirective } from './tab-link/tab-link.directive';
|
|
|
12
14
|
import { LIST_COMPONENT } from './tab-list.token';
|
|
13
15
|
import { TabPanelComponent } from './tab-panel/tab-panel.component';
|
|
14
16
|
import { TabInfo } from './tab-utils/tab-info.class';
|
|
15
|
-
import { ENTER, SPACE } from '@angular/cdk/keycodes';
|
|
16
17
|
import * as i0 from "@angular/core";
|
|
17
18
|
import * as i1 from "@fundamental-ngx/core/content-density";
|
|
18
19
|
import * as i2 from "@fundamental-ngx/cdk/utils";
|
|
@@ -62,6 +63,8 @@ export class TabListComponent {
|
|
|
62
63
|
this.visibleItemsCount = new EventEmitter();
|
|
63
64
|
/** Event emitted when hidden items count has been changed. */
|
|
64
65
|
this.hiddenItemsCount = new EventEmitter();
|
|
66
|
+
/** @hidden Collection of tabs in original order */
|
|
67
|
+
this._tabArray = [];
|
|
65
68
|
/** @hidden Whether to disable scroll spy */
|
|
66
69
|
this._disableScrollSpy = false;
|
|
67
70
|
/** @hidden */
|
|
@@ -149,7 +152,9 @@ export class TabListComponent {
|
|
|
149
152
|
}
|
|
150
153
|
/** @hidden */
|
|
151
154
|
_listenOnTabPanelsAndUpdateStorageStructures() {
|
|
152
|
-
this._tabPanelsChange
|
|
155
|
+
this._tabPanelsChange$
|
|
156
|
+
.pipe(map((tabPanels) => tabPanels.map((el) => this._tabArray?.find((tabInfo) => tabInfo.panel === el) || new TabInfo(el))))
|
|
157
|
+
.subscribe((tabs) => {
|
|
153
158
|
this._tabArray = tabs;
|
|
154
159
|
});
|
|
155
160
|
}
|
|
@@ -316,4 +321,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
|
|
|
316
321
|
type: ViewChild,
|
|
317
322
|
args: [OverflowLayoutComponent]
|
|
318
323
|
}] } });
|
|
319
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiLWxpc3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvdGFicy90YWItbGlzdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvc3JjL2xpYi90YWJzL3RhYi1saXN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFHSCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxlQUFlLEVBQ2YsVUFBVSxFQUNWLFlBQVksRUFDWixVQUFVLEVBQ1YsS0FBSyxFQUVMLE1BQU0sRUFDTixTQUFTLEVBQ1QsU0FBUyxFQUNULFlBQVksRUFDWixpQkFBaUIsRUFDcEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE9BQU8sRUFBWSxTQUFTLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM1RixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsK0JBQStCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUNoSCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDM0QsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDaEYsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDckUsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQWMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMzRSxPQUFPLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzFHLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBQ3JGLE9BQU8sRUFBRSxnQkFBZ0IsRUFB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QUFVO3NCQURULEtBQUs7Z0JBS04seUJBQXlCO3NCQUR4QixLQUFLO2dCQUtOLDBCQUEwQjtzQkFEekIsS0FBSztnQkFLTixpQkFBaUI7c0JBRGhCLE1BQU07Z0JBS1AsaUJBQWlCO3NCQURoQixNQUFNO2dCQUtQLGdCQUFnQjtzQkFEZixNQUFNO2dCQUtQLFNBQVM7c0JBRFIsZUFBZTt1QkFBQyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsaUJBQWlCLENBQUM7Z0JBS3BELGNBQWM7c0JBRGIsWUFBWTt1QkFBQyxnQkFBZ0I7Z0JBSzlCLFVBQVU7c0JBRFQsWUFBWTt1QkFBQyxnQkFBZ0I7Z0JBSzlCLGVBQWU7c0JBRGQsU0FBUzt1QkFBQyxzQkFBc0IsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUU7Z0JBS3ZELGVBQWU7c0JBRGQsU0FBUzt1QkFBQyxpQkFBaUIsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUU7Z0JBS2xELFVBQVU7c0JBRFQsU0FBUzt1QkFBQyxrQkFBa0I7Z0JBSzdCLElBQUk7c0JBREgsU0FBUzt1QkFBQyxNQUFNLEVBQUUsRUFBRSxJQUFJLEVBQUUsYUFBYSxFQUFFO2dCQUtsQyxlQUFlO3NCQUR0QixTQUFTO3VCQUFDLHVCQUF1QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBDb250ZW50Q2hpbGRyZW4sXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgZm9yd2FyZFJlZixcbiAgICBJbnB1dCxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT3V0cHV0LFxuICAgIFF1ZXJ5TGlzdCxcbiAgICBWaWV3Q2hpbGQsXG4gICAgVmlld0NoaWxkcmVuLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRGVzdHJveWVkU2VydmljZSwgS2V5VXRpbCwgTnVsbGFibGUsIHNjcm9sbFRvcCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY2RrL3V0aWxzJztcbmltcG9ydCB7IENvbnRlbnREZW5zaXR5T2JzZXJ2ZXIsIGNvbnRlbnREZW5zaXR5T2JzZXJ2ZXJQcm92aWRlcnMgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvY29udGVudC1kZW5zaXR5JztcbmltcG9ydCB7IE1lbnVDb21wb25lbnQgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvbWVudSc7XG5pbXBvcnQgeyBPdmVyZmxvd0xheW91dENvbXBvbmVudCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9vdmVyZmxvdy1sYXlvdXQnO1xuaW1wb3J0IHsgU2Nyb2xsYmFyRGlyZWN0aXZlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL3Njcm9sbGJhcic7XG5pbXBvcnQgeyBmcm9tRXZlbnQsIG1lcmdlLCBPYnNlcnZhYmxlLCBTdWJqZWN0LCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgZGVsYXksIGZpbHRlciwgZmlyc3QsIG1hcCwgc3RhcnRXaXRoLCBzd2l0Y2hNYXAsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IFRhYkl0ZW1FeHBhbmRDb21wb25lbnQgfSBmcm9tICcuL3RhYi1pdGVtLWV4cGFuZC90YWItaXRlbS1leHBhbmQuY29tcG9uZW50JztcbmltcG9ydCB7IFRhYkl0ZW1EaXJlY3RpdmUgfSBmcm9tICcuL3RhYi1pdGVtL3RhYi1pdGVtLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBUYWJMaW5rRGlyZWN0aXZlIH0gZnJvbSAnLi90YWItbGluay90YWItbGluay5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgVGFiTGlzdENvbXBvbmVudEludGVyZmFjZSB9IGZyb20gJy4vdGFiLWxpc3QtY29tcG9uZW50LmludGVyZmFjZSc7XG5pbXBvcnQgeyBMSVNUX0NPTVBPTkVOVCB9IGZyb20gJy4vdGFiLWxpc3QudG9rZW4nO1xuaW1wb3J0IHsgVGFiUGFuZWxDb21wb25lbnQgfSBmcm9tICcuL3RhYi1wYW5lbC90YWItcGFuZWwuY29tcG9uZW50JztcbmltcG9ydCB7IFRhYkluZm8gfSBmcm9tICcuL3RhYi11dGlscy90YWItaW5mby5jbGFzcyc7XG5pbXBvcnQgeyBFTlRFUiwgU1BBQ0UgfSBmcm9tICdAYW5ndWxhci9jZGsva2V5Y29kZXMnO1xuXG5leHBvcnQgdHlwZSBUYWJNb2RlcyA9ICdpY29uLW9ubHknIHwgJ3Byb2Nlc3MnIHwgJ2ZpbHRlcic7XG5cbmV4cG9ydCB0eXBlIFRhYlNpemVzID0gJ3MnIHwgJ20nIHwgJ2wnIHwgJ3hsJyB8ICd4eGwnO1xuXG4vKipcbiAqIFJlcHJlc2VudHMgYSBsaXN0IG9mIHRhYi1wYW5lbHMuXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZmQtdGFiLWxpc3QnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi90YWItbGlzdC5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vdGFiLWxpc3QuY29tcG9uZW50LnNjc3MnXSxcbiAgICBob3N0OiB7XG4gICAgICAgIGNsYXNzOiAnZmQtdGFicy1jdXN0b20nXG4gICAgfSxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICBjb250ZW50RGVuc2l0eU9ic2VydmVyUHJvdmlkZXJzKCksXG4gICAgICAgIERlc3Ryb3llZFNlcnZpY2UsXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IExJU1RfQ09NUE9ORU5ULFxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gVGFiTGlzdENvbXBvbmVudClcbiAgICAgICAgfVxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgVGFiTGlzdENvbXBvbmVudCBpbXBsZW1lbnRzIFRhYkxpc3RDb21wb25lbnRJbnRlcmZhY2UsIEFmdGVyQ29udGVudEluaXQsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG4gICAgLyoqIFNpemUgb2YgdGFiLCBpdCdzIG1vc3RseSBhYm91dCBhZGRpbmcgc3BhY2luZyBvbiB0YWIgY29udGFpbmVyLCBhdmFpbGFibGUgc2l6ZXMgJ3MnIHwgJ20nIHwgJ2wnIHwgJ3hsJyB8ICd4eGwnICovXG4gICAgQElucHV0KClcbiAgICBzaXplOiBUYWJTaXplcyA9ICdtJztcblxuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgdXNlciB3YW50cyB0byB1c2UgdGFiIGNvbXBvbmVudCBpbiBjZXJ0YWluIG1vZGUuIE1vZGVzIGF2YWlsYWJsZTpcbiAgICAgKiAnaWNvbi1vbmx5JyB8ICdwcm9jZXNzJyB8ICdmaWx0ZXInXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBtb2RlOiBUYWJNb2RlcztcblxuICAgIC8qKiBXaGV0aGVyIHRvIG1vdmUgdGFicyBvdmVyZmxvd2luZyBpbiB0aGUgdGFiIGJhciB0byB0aGUgZHJvcGRvd24gKi9cbiAgICBASW5wdXQoKVxuICAgIGNvbGxhcHNlT3ZlcmZsb3cgPSB0cnVlO1xuXG4gICAgLyoqIExpbWl0cyB0aGUgbWF4aW11bSBudW1iZXIgb2YgdGFicyB2aXNpYmxlIGluIHRoZSB0YWIgYmFyIGluIGNvbGxhcHNlT3ZlcmZsb3cgbW9kZS5cbiAgICAgKiBPdGhlciB0YWJzIHdpbGwgYmUgbW92ZWQgdG8gdGhlIGNvbGxhcHNlZCB0YWJzIGRyb3Bkb3duICovXG4gICAgQElucHV0KClcbiAgICBtYXhWaXNpYmxlVGFicyA9IEluZmluaXR5O1xuXG4gICAgLyoqIFdoZXRoZXIgdG8gb3BlbiB0YWIgY29udGVudCBvbmUgdW5kZXIgYW5vdGhlciB3aXRob3V0IGNvbGxhcHNpbmcgKi9cbiAgICBASW5wdXQoKVxuICAgIHN0YWNrQ29udGVudCA9IGZhbHNlO1xuXG4gICAgLyoqIE1heGltdW0gaGVpZ2h0IG9mIHRoZSBjb250ZW50ICovXG4gICAgQElucHV0KClcbiAgICBtYXhDb250ZW50SGVpZ2h0ID0gJzEwMCUnO1xuXG4gICAgLyoqIFdoZXRoZXIgdG8gZW5hYmxlIGNvbGxhcHNpbmcgZXhwYW5kZWQgdGFiIG9uIGV4cGFuZGVkIHRhYiBjbGljayAqL1xuICAgIEBJbnB1dCgpXG4gICAgY29sbGFwc2libGVUYWJzID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBAZGVwcmVjYXRlZCB1c2UgaTE4biBjYXBhYmlsaXRpZXMgaW5zdGVhZFxuICAgICAqIFRleHQgdmlzaWJsZSBpbiBleHBhbmQgb3ZlcmZsb3cgdHJpZ2dlclxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgZXhwYW5kT3ZlcmZsb3dUZXh0OiBzdHJpbmc7XG5cbiAgICAvKiogSW5pdGlhbGx5IHNlbGVjdGVkIHRhYiAoYnkgaWQpLiBGaXJzdCBub3QgZGlzYWJsZWQgb25lIGlmIG5vdCBzcGVjaWZpZWQuICovXG4gICAgQElucHV0KClcbiAgICBkZWZhdWx0VGFiOiBOdWxsYWJsZTxzdHJpbmc+O1xuXG4gICAgLyoqIFdoZXRoZXIgdG8gdHJ5IHRvIGtlZXAgc2VsZWN0ZWQgdGFiIChkZWZhdWx0IHZhbHVlKSBvbiB0YWJzIGNoYW5nZSBvciB0byBzZWxlY3QgZGVmYXVsdCBvbmUgKGZpcnN0IGlmIG5vdCBzcGVjaWZpZWQpLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2VsZWN0RGVmYXVsdE9uVGFic0NoYW5nZSA9IGZhbHNlO1xuXG4gICAgLyoqIFdoZXRoZXIgdG8gZm9jdXMgdGhlIGZpcnN0IGZvY3VzYWJsZSBlbGVtZW50IGluIGEgdGFiIHBhbmVsIHdoZW4gdXNpbmcgc3RhY2tlZCB0YWJzLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgZm9jdXNGaXJzdEZvY3VzYWJsZUVsZW1lbnQgPSB0cnVlO1xuXG4gICAgLyoqIEV2ZW50IGVtaXR0ZWQgd2hlbiB0aGUgc2VsZWN0ZWQgcGFuZWwgY2hhbmdlcy4gKi9cbiAgICBAT3V0cHV0KClcbiAgICBzZWxlY3RlZFRhYkNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8VGFiUGFuZWxDb21wb25lbnQ+KCk7XG5cbiAgICAvKiogRXZlbnQgZW1pdHRlZCB3aGVuIHZpc2libGUgaXRlbXMgY291bnQgaGFzIGJlZW4gY2hhbmdlZC4gKi9cbiAgICBAT3V0cHV0KClcbiAgICB2aXNpYmxlSXRlbXNDb3VudCA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xuXG4gICAgLyoqIEV2ZW50IGVtaXR0ZWQgd2hlbiBoaWRkZW4gaXRlbXMgY291bnQgaGFzIGJlZW4gY2hhbmdlZC4gKi9cbiAgICBAT3V0cHV0KClcbiAgICBoaWRkZW5JdGVtc0NvdW50ID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBDb250ZW50Q2hpbGRyZW4oZm9yd2FyZFJlZigoKSA9PiBUYWJQYW5lbENvbXBvbmVudCkpXG4gICAgdGFiUGFuZWxzOiBRdWVyeUxpc3Q8VGFiUGFuZWxDb21wb25lbnQ+O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAVmlld0NoaWxkcmVuKFRhYkxpbmtEaXJlY3RpdmUpXG4gICAgdGFiSGVhZGVyTGlua3M6IFF1ZXJ5TGlzdDxUYWJMaW5rRGlyZWN0aXZlPjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQFZpZXdDaGlsZHJlbihUYWJJdGVtRGlyZWN0aXZlKVxuICAgIHRhYkhlYWRlcnM6IFF1ZXJ5TGlzdDxUYWJJdGVtRGlyZWN0aXZlPjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQFZpZXdDaGlsZChUYWJJdGVtRXhwYW5kQ29tcG9uZW50LCB7IHJlYWQ6IEVsZW1lbnRSZWYgfSlcbiAgICBvdmVyZmxvd1RyaWdnZXI6IEVsZW1lbnRSZWY7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBWaWV3Q2hpbGQoJ2hlYWRlckNvbnRhaW5lcicsIHsgcmVhZDogRWxlbWVudFJlZiB9KVxuICAgIGhlYWRlckNvbnRhaW5lcjogRWxlbWVudFJlZjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQFZpZXdDaGlsZChTY3JvbGxiYXJEaXJlY3RpdmUpXG4gICAgX3Njcm9sbGJhcjogU2Nyb2xsYmFyRGlyZWN0aXZlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAVmlld0NoaWxkKCdtZW51JywgeyByZWFkOiBNZW51Q29tcG9uZW50IH0pXG4gICAgbWVudTogTWVudUNvbXBvbmVudDtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQFZpZXdDaGlsZChPdmVyZmxvd0xheW91dENvbXBvbmVudClcbiAgICBwcml2YXRlIF9vdmVyZmxvd0xheW91dDogT3ZlcmZsb3dMYXlvdXRDb21wb25lbnQ7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGdldCBjb250ZW50Q29udGFpbmVyKCk6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Njcm9sbGJhcj8uZWxlbWVudFJlZjtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBDb2xsZWN0aW9uIG9mIHRhYnMgaW4gb3JpZ2luYWwgb3JkZXIgKi9cbiAgICBfdGFiQXJyYXk6IFRhYkluZm9bXTtcblxuICAgIC8qKiBAaGlkZGVuIFdoZXRoZXIgdG8gZGlzYWJsZSBzY3JvbGwgc3B5ICovXG4gICAgX2Rpc2FibGVTY3JvbGxTcHkgPSBmYWxzZTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2luaXQgPSB0cnVlO1xuXG4gICAgLyoqIEV2ZW50IGlzIHRocm93biBhbHdheXMgd2hlbiB0YWIgaXMgc2VsZWN0ZWQgYnkga2V5Ym9hcmQgYWN0aW9ucyAqL1xuICAgIHJlYWRvbmx5IHRhYlNlbGVjdGVkOiBTdWJqZWN0PG51bWJlcj4gPSBuZXcgU3ViamVjdDxudW1iZXI+KCk7XG5cbiAgICAvKiogRXZlbnQgaXMgdGhyb3duIGFsd2F5cywgd2hlbiBzb21lIHByb3BlcnR5IGlzIGNoYW5nZWQgKi9cbiAgICByZWFkb25seSB0YWJQYW5lbFByb3BlcnR5Q2hhbmdlZDogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3N1YnNjcmlwdGlvbnMgPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IF9jaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIHByaXZhdGUgX2VsUmVmOiBFbGVtZW50UmVmLFxuICAgICAgICByZWFkb25seSBfY29udGVudERlbnNpdHlPYnNlcnZlcjogQ29udGVudERlbnNpdHlPYnNlcnZlcixcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBfb25EZXN0cm95JDogRGVzdHJveWVkU2VydmljZVxuICAgICkge31cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdBZnRlckNvbnRlbnRJbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9zZXR1cFRhYlBhbmVsc0NoYW5nZUxpc3RlbmVycygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9pbml0U3RhY2tDb250ZW50U3Vic2NyaXB0aW9uKCk7XG4gICAgICAgIHRoaXMuX2xpc3Rlbk9uVGFiUGFuZWxzRXhwYW5kZWRDaGFuZ2UoKTtcbiAgICAgICAgdGhpcy5fbGlzdGVuT25UYWJQYW5lbHNBbmRJbml0aWFsbHlFeHBhbmRUYWJQYW5lbCgpO1xuICAgICAgICB0aGlzLl9saXN0ZW5PblByb3BlcnRpZXNDaGFuZ2UoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9zdWJzY3JpcHRpb25zLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfdGFiSGVhZGVyQ2xpY2tIYW5kbGVyKHRhYlBhbmVsOiBUYWJQYW5lbENvbXBvbmVudCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9leHBhbmRUYWIodGFiUGFuZWwsICF0YWJQYW5lbC5leHBhbmRlZCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfdGFiSGVhZGVyS2V5ZG93bkhhbmRsZXIoZXZlbnQ6IEtleWJvYXJkRXZlbnQsIHRhYlBhbmVsOiBUYWJQYW5lbENvbXBvbmVudCk6IHZvaWQge1xuICAgICAgICBpZiAoIUtleVV0aWwuaXNLZXlDb2RlKGV2ZW50LCBbRU5URVIsIFNQQUNFXSkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIHRoaXMuX3RhYkhlYWRlckNsaWNrSGFuZGxlcih0YWJQYW5lbCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfb3ZlcmZsb3dpbmdUYWJIZWFkZXJDbGlja0hhbmRsZXIodGFiUGFuZWw6IFRhYlBhbmVsQ29tcG9uZW50KTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3RhYkFycmF5LmZvckVhY2goKHRhYikgPT4ge1xuICAgICAgICAgICAgdGFiLnBhbmVsLl9mb3JjZWRWaXNpYmlsaXR5ID0gdGFiLnBhbmVsID09PSB0YWJQYW5lbDtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5fZXhwYW5kVGFiKHRhYlBhbmVsLCB0cnVlLCBmYWxzZSk7XG5cbiAgICAgICAgdGhpcy5fb3ZlcmZsb3dMYXlvdXQudHJpZ2dlclJlY2FsY3VsYXRpb24oKTtcblxuICAgICAgICB0aGlzLl9kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfaGlnaGxpZ2h0QWN0aXZlVGFiKHsgaWQgfTogSFRNTEVsZW1lbnQpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgdGFiID0gdGhpcy5fdGFiQXJyYXkuZmluZCgoX3RhYikgPT4gX3RhYi5wYW5lbC5fcGFuZWxJZCA9PT0gaWQpO1xuICAgICAgICBpZiAodGFiKSB7XG4gICAgICAgICAgICBjb25zdCBfdGFiV2FzQWN0aXZlID0gdGFiLmFjdGl2ZTtcbiAgICAgICAgICAgIHRoaXMuX2FjdGl2YXRlU3RhY2tlZFRhYih0YWIucGFuZWwsIGZhbHNlKTtcbiAgICAgICAgICAgIGlmICghX3RhYldhc0FjdGl2ZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRUYWJDaGFuZ2UuZW1pdCh0YWIucGFuZWwpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfb25UcmlnZ2VyS2V5ZG93bihldmVudDogS2V5Ym9hcmRFdmVudCwgbWVudVJlZjogTWVudUNvbXBvbmVudCk6IHZvaWQge1xuICAgICAgICBpZiAoS2V5VXRpbC5pc0tleUNvZGUoZXZlbnQsIFtFTlRFUiwgU1BBQ0VdKSkge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIG1lbnVSZWYudG9nZ2xlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgZ2V0IF90YWJQYW5lbHNDaGFuZ2UkKCk6IE9ic2VydmFibGU8VGFiUGFuZWxDb21wb25lbnRbXT4ge1xuICAgICAgICByZXR1cm4gdGhpcy50YWJQYW5lbHMuY2hhbmdlcy5waXBlKFxuICAgICAgICAgICAgc3RhcnRXaXRoKHRoaXMudGFiUGFuZWxzKSxcbiAgICAgICAgICAgIG1hcCgodGFiUGFuZWxzKSA9PiB0YWJQYW5lbHMudG9BcnJheSgpKSxcbiAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kkKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZGV0ZWN0Q2hhbmdlcygpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuX2NoYW5nZURldGVjdG9yUmVmICYmICF0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZlsnZGVzdHJveWVkJ10pIHtcbiAgICAgICAgICAgIHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfc2V0dXBUYWJQYW5lbHNDaGFuZ2VMaXN0ZW5lcnMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2xpc3Rlbk9uVGFiUGFuZWxzQW5kVXBkYXRlU3RvcmFnZVN0cnVjdHVyZXMoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBTZXR1cCBtZWNoYW5pc21zIHJlcXVpcmVkIGZvciBoYW5kbGluZyB0aGUgc3RhY2tlZCBjb250ZW50IGJlaGF2aW9yICovXG4gICAgcHJpdmF0ZSBfaW5pdFN0YWNrQ29udGVudFN1YnNjcmlwdGlvbigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fdGFiUGFuZWxzQ2hhbmdlJFxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgZmlsdGVyKCgpID0+IHRoaXMuc3RhY2tDb250ZW50KSxcbiAgICAgICAgICAgICAgICBkZWxheSgwKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PlxuICAgICAgICAgICAgICAgIHRoaXMuX3RhYkFycmF5LmZpbHRlcigodGFiKSA9PiAhdGFiLnBhbmVsLmRpc2FibGVkKS5mb3JFYWNoKCh0YWIpID0+IHRhYi5wYW5lbC5fZXhwYW5kKHRydWUpKVxuICAgICAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2xpc3Rlbk9uVGFiUGFuZWxzQW5kVXBkYXRlU3RvcmFnZVN0cnVjdHVyZXMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3RhYlBhbmVsc0NoYW5nZSQucGlwZShtYXAoKHRhYlBhbmVscykgPT4gdGFiUGFuZWxzLm1hcCgoZWwpID0+IG5ldyBUYWJJbmZvKGVsKSkpKS5zdWJzY3JpYmUoKHRhYnMpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX3RhYkFycmF5ID0gdGFicztcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9saXN0ZW5PblRhYlBhbmVsc0V4cGFuZGVkQ2hhbmdlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl90YWJQYW5lbHNDaGFuZ2UkXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBtYXAoKHRhYlBhbmVscykgPT4gdGFiUGFuZWxzLm1hcCgodGFiKSA9PiB0YWIuX2V4cGFuZGVkU3RhdGVDaGFuZ2UuYXNPYnNlcnZhYmxlKCkpKSxcbiAgICAgICAgICAgICAgICBzd2l0Y2hNYXAoKHRhYlBhbmVscykgPT4gbWVyZ2UoLi4udGFiUGFuZWxzKSlcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZXhwYW5kVGFiKGV2ZW50LnRhcmdldCwgZXZlbnQuc3RhdGUpO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9saXN0ZW5PblRhYlBhbmVsc0FuZEluaXRpYWxseUV4cGFuZFRhYlBhbmVsKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl90YWJQYW5lbHNDaGFuZ2UkLnBpcGUodGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgYWN0aXZlVGFiID0gdGhpcy5fdGFiQXJyYXkuZmluZCgoX3RhYikgPT4gX3RhYi5hY3RpdmUpO1xuICAgICAgICAgICAgbGV0IHRhYjogTnVsbGFibGU8VGFiSW5mbz47XG5cbiAgICAgICAgICAgIGlmICghYWN0aXZlVGFiIHx8IHRoaXMuc2VsZWN0RGVmYXVsdE9uVGFic0NoYW5nZSkge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmRlZmF1bHRUYWIpIHtcbiAgICAgICAgICAgICAgICAgICAgdGFiID0gdGhpcy5fdGFiQXJyYXkuZmluZCgoX3RhYikgPT4gIV90YWIuZGlzYWJsZWQgJiYgX3RhYi5pZCA9PT0gdGhpcy5kZWZhdWx0VGFiKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoIXRhYikge1xuICAgICAgICAgICAgICAgICAgICB0YWIgPSB0aGlzLl90YWJBcnJheS5maW5kKChfdGFiKSA9PiAhX3RhYi5kaXNhYmxlZCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAodGFiICYmIGFjdGl2ZVRhYiAhPT0gdGFiKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZXhwYW5kVGFiKHRhYi5wYW5lbCwgdHJ1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfbGlzdGVuT25Qcm9wZXJ0aWVzQ2hhbmdlKCk6IHZvaWQge1xuICAgICAgICBtZXJnZSh0aGlzLnRhYlBhbmVsUHJvcGVydHlDaGFuZ2VkLCB0aGlzLnRhYlBhbmVscy5jaGFuZ2VzKVxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB0aGlzLl9kZXRlY3RDaGFuZ2VzKCkpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfYWN0aXZhdGVTdGFja2VkVGFiKHRhYlBhbmVsOiBUYWJQYW5lbENvbXBvbmVudCwgc2Nyb2xsID0gdHJ1ZSk6IHZvaWQge1xuICAgICAgICBpZiAoc2Nyb2xsKSB7XG4gICAgICAgICAgICB0aGlzLl9zY3JvbGxUb1BhbmVsKHRhYlBhbmVsKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl90YWJBcnJheS5mb3JFYWNoKCh0YWIpID0+IHtcbiAgICAgICAgICAgIHRhYi5hY3RpdmUgPSB0YWIucGFuZWwgPT09IHRhYlBhbmVsO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2FjdGl2YXRlRXhwYW5kYWJsZVRhYih0YWJQYW5lbDogVGFiUGFuZWxDb21wb25lbnQsIGV4cGFuZDogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICBjb25zdCBjb2xsYXBzZSA9IHRoaXMuY29sbGFwc2libGVUYWJzICYmICFleHBhbmQ7XG5cbiAgICAgICAgdGhpcy5fdGFiQXJyYXkuZm9yRWFjaCgodGFiKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBpc0FjdGl2ZSA9IHRhYi5wYW5lbCA9PT0gdGFiUGFuZWwgJiYgIWNvbGxhcHNlO1xuXG4gICAgICAgICAgICB0YWIucGFuZWwuX2V4cGFuZChpc0FjdGl2ZSk7XG4gICAgICAgICAgICB0YWIuYWN0aXZlID0gaXNBY3RpdmU7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZXhwYW5kVGFiKHRhYlBhbmVsOiBUYWJQYW5lbENvbXBvbmVudCwgZXhwYW5kOiBib29sZWFuLCBkZXRlY3RDaGFuZ2VzID0gdHJ1ZSk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5zdGFja0NvbnRlbnQpIHtcbiAgICAgICAgICAgIHRoaXMuX2FjdGl2YXRlU3RhY2tlZFRhYih0YWJQYW5lbCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoIXRoaXMuX2NhbkNoYW5nZUV4cGFuZFN0YXRlKHRhYlBhbmVsLCBleHBhbmQpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLl9hY3RpdmF0ZUV4cGFuZGFibGVUYWIodGFiUGFuZWwsIGV4cGFuZCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZGV0ZWN0Q2hhbmdlcykge1xuICAgICAgICAgICAgdGhpcy5fZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5zZWxlY3RlZFRhYkNoYW5nZS5lbWl0KHRhYlBhbmVsKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3Njcm9sbFRvUGFuZWwodGFiUGFuZWw6IFRhYlBhbmVsQ29tcG9uZW50KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHBhbmVsRWxlbWVudCA9IHRhYlBhbmVsLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtcbiAgICAgICAgY29uc3QgY29udGFpbmVyRWxlbWVudCA9IHRoaXMuY29udGVudENvbnRhaW5lci5uYXRpdmVFbGVtZW50O1xuICAgICAgICBjb25zdCBkaXN0YW5jZVRvU2Nyb2xsID0gcGFuZWxFbGVtZW50Lm9mZnNldFRvcCAtIGNvbnRhaW5lckVsZW1lbnQub2Zmc2V0VG9wO1xuICAgICAgICBjb25zdCBtYXhpbXVtU2Nyb2xsVG9wID0gY29udGFpbmVyRWxlbWVudC5zY3JvbGxIZWlnaHQgLSBjb250YWluZXJFbGVtZW50LmNsaWVudEhlaWdodDtcbiAgICAgICAgY29uc3QgY3VycmVudFNjcm9sbFBvc2l0aW9uID0gTWF0aC5jZWlsKGNvbnRhaW5lckVsZW1lbnQuc2Nyb2xsVG9wKTtcblxuICAgICAgICBpZiAoIShjdXJyZW50U2Nyb2xsUG9zaXRpb24gPT09IG1heGltdW1TY3JvbGxUb3AgJiYgZGlzdGFuY2VUb1Njcm9sbCA+IG1heGltdW1TY3JvbGxUb3ApKSB7XG4gICAgICAgICAgICAhdGhpcy5faW5pdCA/ICh0aGlzLl9kaXNhYmxlU2Nyb2xsU3B5ID0gdHJ1ZSkgOiAodGhpcy5faW5pdCA9IGZhbHNlKTtcbiAgICAgICAgICAgIGZyb21FdmVudChjb250YWluZXJFbGVtZW50LCAnc2Nyb2xsJylcbiAgICAgICAgICAgICAgICAucGlwZShkZWJvdW5jZVRpbWUoMTAwKSwgZmlyc3QoKSwgdGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpKVxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4gKHRoaXMuX2Rpc2FibGVTY3JvbGxTcHkgPSBmYWxzZSkpO1xuICAgICAgICAgICAgc2Nyb2xsVG9wKGNvbnRhaW5lckVsZW1lbnQsIGRpc3RhbmNlVG9TY3JvbGwpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuZm9jdXNGaXJzdEZvY3VzYWJsZUVsZW1lbnQpIHtcbiAgICAgICAgICAgIHRhYlBhbmVsLl9mb2N1c0ZpcnN0Rm9jdXNhYmxlRWxlbWVudCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gV2hldGhlciB0YWIgY2FuIGJlIGV4cGFuZGVkL2NvbGxhcHNlZCAqL1xuICAgIHByaXZhdGUgX2NhbkNoYW5nZUV4cGFuZFN0YXRlKHRhYlBhbmVsOiBUYWJQYW5lbENvbXBvbmVudCwgZXhwYW5kOiBib29sZWFuKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhdGFiUGFuZWwuZGlzYWJsZWQgJiYgZXhwYW5kICE9PSB0YWJQYW5lbC5leHBhbmRlZCAmJiBleHBhbmQgPT09IGZhbHNlID8gdGhpcy5jb2xsYXBzaWJsZVRhYnMgOiB0cnVlO1xuICAgIH1cbn1cbiIsIjxkaXYgI2hlYWRlckNvbnRhaW5lciByb2xlPVwidGFibGlzdFwiIGNsYXNzPVwiZmQtdGFic1wiIFtjbGFzc109XCIobW9kZSA/ICdmZC10YWJzLS0nICsgbW9kZSA6ICcnKSArICgnIGZkLXRhYnMtLScgKyBzaXplKVwiPlxuICAgIDxmZC1vdmVyZmxvdy1sYXlvdXRcbiAgICAgICAgW21heFZpc2libGVJdGVtc109XCJtYXhWaXNpYmxlVGFic1wiXG4gICAgICAgIFtlbmFibGVLZXlib2FyZE5hdmlnYXRpb25dPVwidHJ1ZVwiXG4gICAgICAgIG5hdmlnYXRpb25UcmlnZ2VyPVwia2V5ZG93blwiXG4gICAgICAgIChoaWRkZW5JdGVtc0NvdW50KT1cImhpZGRlbkl0ZW1zQ291bnQuZW1pdCgkZXZlbnQpXCJcbiAgICAgICAgKHZpc2libGVJdGVtc0NvdW50KT1cInZpc2libGVJdGVtc0NvdW50LmVtaXQoJGV2ZW50KVwiXG4gICAgPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCB0YWIgb2YgX3RhYkFycmF5OyBsZXQgaSA9IGluZGV4OyBsZXQgbGFzdCA9IGxhc3RcIj5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBmZC10YWItaXRlbVxuICAgICAgICAgICAgICAgICpmZE92ZXJmbG93SXRlbVJlZj1cInRhYlwiXG4gICAgICAgICAgICAgICAgZmRPdmVyZmxvd0xheW91dEl0ZW1cbiAgICAgICAgICAgICAgICBbZm9yY2VWaXNpYmlsaXR5XT1cInRhYi5wYW5lbC5fZm9yY2VkVmlzaWJpbGl0eVwiXG4gICAgICAgICAgICAgICAgW2hlYWRlcl09XCJ0YWIuaXNIZWFkZXJcIlxuICAgICAgICAgICAgICAgIFt0YWJJdGVtU3RhdGVdPVwidGFiLnRhYlN0YXRlXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgICAgICBmZC10YWItbGlua1xuICAgICAgICAgICAgICAgICAgICByb2xlPVwidGFiXCJcbiAgICAgICAgICAgICAgICAgICAgW2lkXT1cInRhYi5pZFwiXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtY29udHJvbHNdPVwidGFiLnBhbmVsSWRcIlxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cInRhYi5hcmlhTGFiZWwgfHwgbnVsbFwiXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCIhdGFiLmFyaWFMYWJlbCAmJiB0YWIuYXJpYUxhYmVsbGVkQnkgPyB0YWIuYXJpYUxhYmVsbGVkQnkgOiBudWxsXCJcbiAgICAgICAgICAgICAgICAgICAgZmRPdmVyZmxvd0xheW91dEZvY3VzYWJsZUl0ZW1cbiAgICAgICAgICAgICAgICAgICAgW2ZvY3VzYWJsZV09XCJ0YWIuYWN0aXZlXCJcbiAgICAgICAgICAgICAgICAgICAgW25hdmlnYWJsZV09XCIhdGFiLmRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICAgICAgW2FjdGl2ZV09XCJ0YWIuYWN0aXZlXCJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInRhYi5kaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgICAgIChrZXlkb3duKT1cIl90YWJIZWFkZXJLZXlkb3duSGFuZGxlcigkZXZlbnQsIHRhYi5wYW5lbClcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiX3RhYkhlYWRlckNsaWNrSGFuZGxlcih0YWIucGFuZWwpXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0YWIudGl0bGVUZW1wbGF0ZSB8fCBudWxsXCI+PC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiF0YWIudGl0bGVUZW1wbGF0ZVwiIFtuZ1N3aXRjaF09XCJtb2RlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInZmlsdGVyJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGZkLXRhYi1oZWFkZXIgKm5nSWY9XCJ0YWIuaXNIZWFkZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gZmQtdGFiLWNvdW50ZXItaGVhZGVyICpuZ0lmPVwidGFiLmNvdW50XCI+e3sgdGFiLmNvdW50IH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBmZC10YWItbGFiZWwgKm5nSWY9XCJ0YWIudGl0bGVcIj57eyB0YWIudGl0bGUgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhdGFiLmlzSGVhZGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGZkLXRhYi1pY29uIFtpY29uXT1cInRhYi5nbHlwaFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgZmQtdGFiLWNvdW50Pnt7IHRhYi5jb3VudCB9fTwvcD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBmZC10YWItbGFiZWw+e3sgdGFiLnRpdGxlIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidpY29uLW9ubHknXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gZmQtdGFiLWljb24gW2ljb25dPVwidGFiLmdseXBoXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGZkLXRhYi1jb3VudD57eyB0YWIuY291bnQgfX08L3A+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidwcm9jZXNzJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGZkLXRhYi1pY29uICpuZ0lmPVwidGFiLmdseXBoXCIgW2ljb25dPVwidGFiLmdseXBoXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgZmQtdGFiLXByb2Nlc3M+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGZkLXRhYi1sYWJlbCAqbmdJZj1cInRhYi5jb3VudFwiPnt7IHRhYi5jb3VudCB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gZmQtdGFiLWxhYmVsICpuZ0lmPVwidGFiLnRpdGxlXCI+e3sgdGFiLnRpdGxlIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoRGVmYXVsdD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBmZC10YWItY291bnQgKm5nSWY9XCJ0YWIuY291bnRcIj57eyB0YWIuY291bnQgfX08L3A+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gZmQtdGFiLXRhZz57eyB0YWIudGl0bGUgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPC9hPlxuXG4gICAgICAgICAgICAgICAgPGRpdiBmZC10YWItcHJvY2Vzcy1pY29uICpuZ0lmPVwibW9kZSA9PT0gJ3Byb2Nlc3MnICYmICFsYXN0XCI+PC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cInRhYi5pc0hlYWRlclwiIGZkLXRhYi1zZXBhcmF0b3I+PC9kaXY+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgIDxuZy1jb250YWluZXIgKmZkT3ZlcmZsb3dFeHBhbmQ9XCJsZXQgdGFiczsgaXRlbXM6IF90YWJBcnJheVwiPlxuICAgICAgICAgICAgPGZkLWl0ZW0tZXhwYW5kXG4gICAgICAgICAgICAgICAgW2ZkTWVudVRyaWdnZXJdPVwibWVudVwiXG4gICAgICAgICAgICAgICAgW2xhYmVsXT1cImV4cGFuZE92ZXJmbG93VGV4dFwiXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJ0YWJzLmxlbmd0aCA+IDBcIlxuICAgICAgICAgICAgICAgIChrZXlkb3duKT1cIl9vblRyaWdnZXJLZXlkb3duKCRldmVudCwgbWVudSlcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgPC9mZC1pdGVtLWV4cGFuZD5cblxuICAgICAgICAgICAgPGZkLW1lbnUgI21lbnU+XG4gICAgICAgICAgICAgICAgPGxpXG4gICAgICAgICAgICAgICAgICAgIGZkLW1lbnUtaXRlbVxuICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgdGFiIG9mIHRhYnNcIlxuICAgICAgICAgICAgICAgICAgICAob25TZWxlY3QpPVwiX292ZXJmbG93aW5nVGFiSGVhZGVyQ2xpY2tIYW5kbGVyKHRhYi5pdGVtLnBhbmVsKVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGZkLW1lbnUtaW50ZXJhY3RpdmU+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIXRhYi5pdGVtLnRpdGxlVGVtcGxhdGUgJiYgbW9kZSA9PT0gJ2ljb24tb25seSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gaWNvbk9ubHlUZW1wbGF0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB0YWIuaXRlbS50aXRsZVRlbXBsYXRlIHx8IHRleHRUaXRsZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dDogeyAkaW1wbGljaXQ6IHRhYi5pdGVtIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgPC9mZC1tZW51PlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2ZkLW92ZXJmbG93LWxheW91dD5cbjwvZGl2PlxuXG48ZGl2XG4gICAgY2xhc3M9XCJmZC10YWJzX19jb250ZW50XCJcbiAgICBbc3R5bGUubWF4LWhlaWdodF09XCJtYXhDb250ZW50SGVpZ2h0XCJcbiAgICBmZFNjcm9sbFNweVxuICAgIGZkLXNjcm9sbGJhclxuICAgIFt0cmFja2VkVGFnc109XCJbJ2ZkLXRhYiddXCJcbiAgICBbc2Nyb2xsU3B5RGlzYWJsZWRdPVwiX2Rpc2FibGVTY3JvbGxTcHlcIlxuICAgIChzcHlDaGFuZ2UpPVwiX2hpZ2hsaWdodEFjdGl2ZVRhYigkZXZlbnQpXCJcbj5cbiAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG48L2Rpdj5cblxuPG5nLXRlbXBsYXRlICN0ZXh0VGl0bGUgbGV0LXRhYj5cbiAgICA8c3BhbiBmZC1tZW51LXRpdGxlPnt7IHRhYi50aXRsZSB9fTwvc3Bhbj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjaWNvbk9ubHlUZW1wbGF0ZSBsZXQtdGFiPlxuICAgIDxzcGFuIGZkLXRhYi1pY29uIFtpY29uXT1cInRhYi5nbHlwaFwiPlxuICAgICAgICA8cCBmZC10YWItY291bnQ+e3sgdGFiLmNvdW50IH19PC9wPlxuICAgIDwvc3Bhbj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|
|
324
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiLWxpc3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvdGFicy90YWItbGlzdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvc3JjL2xpYi90YWJzL3RhYi1saXN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHVEQUF1RDtBQUN2RCxPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3JELE9BQU8sRUFHSCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxlQUFlLEVBQ2YsVUFBVSxFQUNWLFlBQVksRUFDWixLQUFLLEVBRUwsTUFBTSxFQUNOLFNBQVMsRUFDVCxTQUFTLEVBQ1QsWUFBWSxFQUNaLGlCQUFpQixFQUNqQixVQUFVLEVBQ2IsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE9BQU8sRUFBWSxTQUFTLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM1RixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsK0JBQStCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUNoSCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDM0QsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDaEYsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDckUsT0FBTyxFQUFjLE9BQU8sRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMzRSxPQUFPLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzFH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QUtOLGdCQUFnQjtzQkFEZixLQUFLO2dCQU1OLGNBQWM7c0JBRGIsS0FBSztnQkFLTixZQUFZO3NCQURYLEtBQUs7Z0JBS04sZ0JBQWdCO3NCQURmLEtBQUs7Z0JBS04sZUFBZTtzQkFEZCxLQUFLO2dCQVFOLGtCQUFrQjtzQkFEakIsS0FBSztnQkFLTixVQUFVO3NCQURULEtBQUs7Z0JBS04seUJBQXlCO3NCQUR4QixLQUFLO2dCQUtOLDBCQUEwQjtzQkFEekIsS0FBSztnQkFLTixpQkFBaUI7c0JBRGhCLE1BQU07Z0JBS1AsaUJBQWlCO3NCQURoQixNQUFNO2dCQUtQLGdCQUFnQjtzQkFEZixNQUFNO2dCQUtQLFNBQVM7c0JBRFIsZUFBZTt1QkFBQyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsaUJBQWlCLENBQUM7Z0JBS3BELGNBQWM7c0JBRGIsWUFBWTt1QkFBQyxnQkFBZ0I7Z0JBSzlCLFVBQVU7c0JBRFQsWUFBWTt1QkFBQyxnQkFBZ0I7Z0JBSzlCLGVBQWU7c0JBRGQsU0FBUzt1QkFBQyxzQkFBc0IsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUU7Z0JBS3ZELGVBQWU7c0JBRGQsU0FBUzt1QkFBQyxpQkFBaUIsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUU7Z0JBS2xELFVBQVU7c0JBRFQsU0FBUzt1QkFBQyxrQkFBa0I7Z0JBSzdCLElBQUk7c0JBREgsU0FBUzt1QkFBQyxNQUFNLEVBQUUsRUFBRSxJQUFJLEVBQUUsYUFBYSxFQUFFO2dCQUtsQyxlQUFlO3NCQUR0QixTQUFTO3VCQUFDLHVCQUF1QiIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9tZW1iZXItb3JkZXJpbmcgKi9cbmltcG9ydCB7IEVOVEVSLCBTUEFDRSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9rZXljb2Rlcyc7XG5pbXBvcnQge1xuICAgIEFmdGVyQ29udGVudEluaXQsXG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgQ29udGVudENoaWxkcmVuLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIElucHV0LFxuICAgIE9uRGVzdHJveSxcbiAgICBPdXRwdXQsXG4gICAgUXVlcnlMaXN0LFxuICAgIFZpZXdDaGlsZCxcbiAgICBWaWV3Q2hpbGRyZW4sXG4gICAgVmlld0VuY2Fwc3VsYXRpb24sXG4gICAgZm9yd2FyZFJlZlxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERlc3Ryb3llZFNlcnZpY2UsIEtleVV0aWwsIE51bGxhYmxlLCBzY3JvbGxUb3AgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2Nkay91dGlscyc7XG5pbXBvcnQgeyBDb250ZW50RGVuc2l0eU9ic2VydmVyLCBjb250ZW50RGVuc2l0eU9ic2VydmVyUHJvdmlkZXJzIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2NvbnRlbnQtZGVuc2l0eSc7XG5pbXBvcnQgeyBNZW51Q29tcG9uZW50IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL21lbnUnO1xuaW1wb3J0IHsgT3ZlcmZsb3dMYXlvdXRDb21wb25lbnQgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvb3ZlcmZsb3ctbGF5b3V0JztcbmltcG9ydCB7IFNjcm9sbGJhckRpcmVjdGl2ZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9zY3JvbGxiYXInO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCwgU3Vic2NyaXB0aW9uLCBmcm9tRXZlbnQsIG1lcmdlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIGRlbGF5LCBmaWx0ZXIsIGZpcnN0LCBtYXAsIHN0YXJ0V2l0aCwgc3dpdGNoTWFwLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBUYWJJdGVtRXhwYW5kQ29tcG9uZW50IH0gZnJvbSAnLi90YWItaXRlbS1leHBhbmQvdGFiLWl0ZW0tZXhwYW5kLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUYWJJdGVtRGlyZWN0aXZlIH0gZnJvbSAnLi90YWItaXRlbS90YWItaXRlbS5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgVGFiTGlua0RpcmVjdGl2ZSB9IGZyb20gJy4vdGFiLWxpbmsvdGFiLWxpbmsuZGlyZWN0aXZlJztcbmltcG9ydCB7IFRhYkxpc3RDb21wb25lbnRJbnRlcmZhY2UgfSBmcm9tICcuL3RhYi1saXN0LWNvbXBvbmVudC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgTElTVF9DT01QT05FTlQgfSBmcm9tICcuL3RhYi1saXN0LnRva2VuJztcbmltcG9ydCB7IFRhYlBhbmVsQ29tcG9uZW50IH0gZnJvbSAnLi90YWItcGFuZWwvdGFiLXBhbmVsLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUYWJJbmZvIH0gZnJvbSAnLi90YWItdXRpbHMvdGFiLWluZm8uY2xhc3MnO1xuXG5leHBvcnQgdHlwZSBUYWJNb2RlcyA9ICdpY29uLW9ubHknIHwgJ3Byb2Nlc3MnIHwgJ2ZpbHRlcic7XG5cbmV4cG9ydCB0eXBlIFRhYlNpemVzID0gJ3MnIHwgJ20nIHwgJ2wnIHwgJ3hsJyB8ICd4eGwnO1xuXG4vKipcbiAqIFJlcHJlc2VudHMgYSBsaXN0IG9mIHRhYi1wYW5lbHMuXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZmQtdGFiLWxpc3QnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi90YWItbGlzdC5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vdGFiLWxpc3QuY29tcG9uZW50LnNjc3MnXSxcbiAgICBob3N0OiB7XG4gICAgICAgIGNsYXNzOiAnZmQtdGFicy1jdXN0b20nXG4gICAgfSxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICBjb250ZW50RGVuc2l0eU9ic2VydmVyUHJvdmlkZXJzKCksXG4gICAgICAgIERlc3Ryb3llZFNlcnZpY2UsXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IExJU1RfQ09NUE9ORU5ULFxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gVGFiTGlzdENvbXBvbmVudClcbiAgICAgICAgfVxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgVGFiTGlzdENvbXBvbmVudCBpbXBsZW1lbnRzIFRhYkxpc3RDb21wb25lbnRJbnRlcmZhY2UsIEFmdGVyQ29udGVudEluaXQsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG4gICAgLyoqIFNpemUgb2YgdGFiLCBpdCdzIG1vc3RseSBhYm91dCBhZGRpbmcgc3BhY2luZyBvbiB0YWIgY29udGFpbmVyLCBhdmFpbGFibGUgc2l6ZXMgJ3MnIHwgJ20nIHwgJ2wnIHwgJ3hsJyB8ICd4eGwnICovXG4gICAgQElucHV0KClcbiAgICBzaXplOiBUYWJTaXplcyA9ICdtJztcblxuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgdXNlciB3YW50cyB0byB1c2UgdGFiIGNvbXBvbmVudCBpbiBjZXJ0YWluIG1vZGUuIE1vZGVzIGF2YWlsYWJsZTpcbiAgICAgKiAnaWNvbi1vbmx5JyB8ICdwcm9jZXNzJyB8ICdmaWx0ZXInXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBtb2RlOiBUYWJNb2RlcztcblxuICAgIC8qKiBXaGV0aGVyIHRvIG1vdmUgdGFicyBvdmVyZmxvd2luZyBpbiB0aGUgdGFiIGJhciB0byB0aGUgZHJvcGRvd24gKi9cbiAgICBASW5wdXQoKVxuICAgIGNvbGxhcHNlT3ZlcmZsb3cgPSB0cnVlO1xuXG4gICAgLyoqIExpbWl0cyB0aGUgbWF4aW11bSBudW1iZXIgb2YgdGFicyB2aXNpYmxlIGluIHRoZSB0YWIgYmFyIGluIGNvbGxhcHNlT3ZlcmZsb3cgbW9kZS5cbiAgICAgKiBPdGhlciB0YWJzIHdpbGwgYmUgbW92ZWQgdG8gdGhlIGNvbGxhcHNlZCB0YWJzIGRyb3Bkb3duICovXG4gICAgQElucHV0KClcbiAgICBtYXhWaXNpYmxlVGFicyA9IEluZmluaXR5O1xuXG4gICAgLyoqIFdoZXRoZXIgdG8gb3BlbiB0YWIgY29udGVudCBvbmUgdW5kZXIgYW5vdGhlciB3aXRob3V0IGNvbGxhcHNpbmcgKi9cbiAgICBASW5wdXQoKVxuICAgIHN0YWNrQ29udGVudCA9IGZhbHNlO1xuXG4gICAgLyoqIE1heGltdW0gaGVpZ2h0IG9mIHRoZSBjb250ZW50ICovXG4gICAgQElucHV0KClcbiAgICBtYXhDb250ZW50SGVpZ2h0ID0gJzEwMCUnO1xuXG4gICAgLyoqIFdoZXRoZXIgdG8gZW5hYmxlIGNvbGxhcHNpbmcgZXhwYW5kZWQgdGFiIG9uIGV4cGFuZGVkIHRhYiBjbGljayAqL1xuICAgIEBJbnB1dCgpXG4gICAgY29sbGFwc2libGVUYWJzID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBAZGVwcmVjYXRlZCB1c2UgaTE4biBjYXBhYmlsaXRpZXMgaW5zdGVhZFxuICAgICAqIFRleHQgdmlzaWJsZSBpbiBleHBhbmQgb3ZlcmZsb3cgdHJpZ2dlclxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgZXhwYW5kT3ZlcmZsb3dUZXh0OiBzdHJpbmc7XG5cbiAgICAvKiogSW5pdGlhbGx5IHNlbGVjdGVkIHRhYiAoYnkgaWQpLiBGaXJzdCBub3QgZGlzYWJsZWQgb25lIGlmIG5vdCBzcGVjaWZpZWQuICovXG4gICAgQElucHV0KClcbiAgICBkZWZhdWx0VGFiOiBOdWxsYWJsZTxzdHJpbmc+O1xuXG4gICAgLyoqIFdoZXRoZXIgdG8gdHJ5IHRvIGtlZXAgc2VsZWN0ZWQgdGFiIChkZWZhdWx0IHZhbHVlKSBvbiB0YWJzIGNoYW5nZSBvciB0byBzZWxlY3QgZGVmYXVsdCBvbmUgKGZpcnN0IGlmIG5vdCBzcGVjaWZpZWQpLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2VsZWN0RGVmYXVsdE9uVGFic0NoYW5nZSA9IGZhbHNlO1xuXG4gICAgLyoqIFdoZXRoZXIgdG8gZm9jdXMgdGhlIGZpcnN0IGZvY3VzYWJsZSBlbGVtZW50IGluIGEgdGFiIHBhbmVsIHdoZW4gdXNpbmcgc3RhY2tlZCB0YWJzLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgZm9jdXNGaXJzdEZvY3VzYWJsZUVsZW1lbnQgPSB0cnVlO1xuXG4gICAgLyoqIEV2ZW50IGVtaXR0ZWQgd2hlbiB0aGUgc2VsZWN0ZWQgcGFuZWwgY2hhbmdlcy4gKi9cbiAgICBAT3V0cHV0KClcbiAgICBzZWxlY3RlZFRhYkNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8VGFiUGFuZWxDb21wb25lbnQ+KCk7XG5cbiAgICAvKiogRXZlbnQgZW1pdHRlZCB3aGVuIHZpc2libGUgaXRlbXMgY291bnQgaGFzIGJlZW4gY2hhbmdlZC4gKi9cbiAgICBAT3V0cHV0KClcbiAgICB2aXNpYmxlSXRlbXNDb3VudCA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xuXG4gICAgLyoqIEV2ZW50IGVtaXR0ZWQgd2hlbiBoaWRkZW4gaXRlbXMgY291bnQgaGFzIGJlZW4gY2hhbmdlZC4gKi9cbiAgICBAT3V0cHV0KClcbiAgICBoaWRkZW5JdGVtc0NvdW50ID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBDb250ZW50Q2hpbGRyZW4oZm9yd2FyZFJlZigoKSA9PiBUYWJQYW5lbENvbXBvbmVudCkpXG4gICAgdGFiUGFuZWxzOiBRdWVyeUxpc3Q8VGFiUGFuZWxDb21wb25lbnQ+O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAVmlld0NoaWxkcmVuKFRhYkxpbmtEaXJlY3RpdmUpXG4gICAgdGFiSGVhZGVyTGlua3M6IFF1ZXJ5TGlzdDxUYWJMaW5rRGlyZWN0aXZlPjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQFZpZXdDaGlsZHJlbihUYWJJdGVtRGlyZWN0aXZlKVxuICAgIHRhYkhlYWRlcnM6IFF1ZXJ5TGlzdDxUYWJJdGVtRGlyZWN0aXZlPjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQFZpZXdDaGlsZChUYWJJdGVtRXhwYW5kQ29tcG9uZW50LCB7IHJlYWQ6IEVsZW1lbnRSZWYgfSlcbiAgICBvdmVyZmxvd1RyaWdnZXI6IEVsZW1lbnRSZWY7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBWaWV3Q2hpbGQoJ2hlYWRlckNvbnRhaW5lcicsIHsgcmVhZDogRWxlbWVudFJlZiB9KVxuICAgIGhlYWRlckNvbnRhaW5lcjogRWxlbWVudFJlZjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQFZpZXdDaGlsZChTY3JvbGxiYXJEaXJlY3RpdmUpXG4gICAgX3Njcm9sbGJhcjogU2Nyb2xsYmFyRGlyZWN0aXZlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAVmlld0NoaWxkKCdtZW51JywgeyByZWFkOiBNZW51Q29tcG9uZW50IH0pXG4gICAgbWVudTogTWVudUNvbXBvbmVudDtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQFZpZXdDaGlsZChPdmVyZmxvd0xheW91dENvbXBvbmVudClcbiAgICBwcml2YXRlIF9vdmVyZmxvd0xheW91dDogT3ZlcmZsb3dMYXlvdXRDb21wb25lbnQ7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGdldCBjb250ZW50Q29udGFpbmVyKCk6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Njcm9sbGJhcj8uZWxlbWVudFJlZjtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBDb2xsZWN0aW9uIG9mIHRhYnMgaW4gb3JpZ2luYWwgb3JkZXIgKi9cbiAgICBfdGFiQXJyYXk6IFRhYkluZm9bXSA9IFtdO1xuXG4gICAgLyoqIEBoaWRkZW4gV2hldGhlciB0byBkaXNhYmxlIHNjcm9sbCBzcHkgKi9cbiAgICBfZGlzYWJsZVNjcm9sbFNweSA9IGZhbHNlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfaW5pdCA9IHRydWU7XG5cbiAgICAvKiogRXZlbnQgaXMgdGhyb3duIGFsd2F5cyB3aGVuIHRhYiBpcyBzZWxlY3RlZCBieSBrZXlib2FyZCBhY3Rpb25zICovXG4gICAgcmVhZG9ubHkgdGFiU2VsZWN0ZWQ6IFN1YmplY3Q8bnVtYmVyPiA9IG5ldyBTdWJqZWN0PG51bWJlcj4oKTtcblxuICAgIC8qKiBFdmVudCBpcyB0aHJvd24gYWx3YXlzLCB3aGVuIHNvbWUgcHJvcGVydHkgaXMgY2hhbmdlZCAqL1xuICAgIHJlYWRvbmx5IHRhYlBhbmVsUHJvcGVydHlDaGFuZ2VkOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfc3Vic2NyaXB0aW9ucyA9IG5ldyBTdWJzY3JpcHRpb24oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgX2NoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgcHJpdmF0ZSBfZWxSZWY6IEVsZW1lbnRSZWYsXG4gICAgICAgIHJlYWRvbmx5IF9jb250ZW50RGVuc2l0eU9ic2VydmVyOiBDb250ZW50RGVuc2l0eU9ic2VydmVyLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IF9vbkRlc3Ryb3kkOiBEZXN0cm95ZWRTZXJ2aWNlXG4gICAgKSB7fVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3NldHVwVGFiUGFuZWxzQ2hhbmdlTGlzdGVuZXJzKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2luaXRTdGFja0NvbnRlbnRTdWJzY3JpcHRpb24oKTtcbiAgICAgICAgdGhpcy5fbGlzdGVuT25UYWJQYW5lbHNFeHBhbmRlZENoYW5nZSgpO1xuICAgICAgICB0aGlzLl9saXN0ZW5PblRhYlBhbmVsc0FuZEluaXRpYWxseUV4cGFuZFRhYlBhbmVsKCk7XG4gICAgICAgIHRoaXMuX2xpc3Rlbk9uUHJvcGVydGllc0NoYW5nZSgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3N1YnNjcmlwdGlvbnMudW5zdWJzY3JpYmUoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF90YWJIZWFkZXJDbGlja0hhbmRsZXIodGFiUGFuZWw6IFRhYlBhbmVsQ29tcG9uZW50KTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2V4cGFuZFRhYih0YWJQYW5lbCwgIXRhYlBhbmVsLmV4cGFuZGVkKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF90YWJIZWFkZXJLZXlkb3duSGFuZGxlcihldmVudDogS2V5Ym9hcmRFdmVudCwgdGFiUGFuZWw6IFRhYlBhbmVsQ29tcG9uZW50KTogdm9pZCB7XG4gICAgICAgIGlmICghS2V5VXRpbC5pc0tleUNvZGUoZXZlbnQsIFtFTlRFUiwgU1BBQ0VdKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgdGhpcy5fdGFiSGVhZGVyQ2xpY2tIYW5kbGVyKHRhYlBhbmVsKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9vdmVyZmxvd2luZ1RhYkhlYWRlckNsaWNrSGFuZGxlcih0YWJQYW5lbDogVGFiUGFuZWxDb21wb25lbnQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fdGFiQXJyYXkuZm9yRWFjaCgodGFiKSA9PiB7XG4gICAgICAgICAgICB0YWIucGFuZWwuX2ZvcmNlZFZpc2liaWxpdHkgPSB0YWIucGFuZWwgPT09IHRhYlBhbmVsO1xuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLl9leHBhbmRUYWIodGFiUGFuZWwsIHRydWUsIGZhbHNlKTtcblxuICAgICAgICB0aGlzLl9vdmVyZmxvd0xheW91dC50cmlnZ2VyUmVjYWxjdWxhdGlvbigpO1xuXG4gICAgICAgIHRoaXMuX2RldGVjdENoYW5nZXMoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9oaWdobGlnaHRBY3RpdmVUYWIoeyBpZCB9OiBIVE1MRWxlbWVudCk6IHZvaWQge1xuICAgICAgICBjb25zdCB0YWIgPSB0aGlzLl90YWJBcnJheS5maW5kKChfdGFiKSA9PiBfdGFiLnBhbmVsLl9wYW5lbElkID09PSBpZCk7XG4gICAgICAgIGlmICh0YWIpIHtcbiAgICAgICAgICAgIGNvbnN0IF90YWJXYXNBY3RpdmUgPSB0YWIuYWN0aXZlO1xuICAgICAgICAgICAgdGhpcy5fYWN0aXZhdGVTdGFja2VkVGFiKHRhYi5wYW5lbCwgZmFsc2UpO1xuICAgICAgICAgICAgaWYgKCFfdGFiV2FzQWN0aXZlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFRhYkNoYW5nZS5lbWl0KHRhYi5wYW5lbCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9vblRyaWdnZXJLZXlkb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50LCBtZW51UmVmOiBNZW51Q29tcG9uZW50KTogdm9pZCB7XG4gICAgICAgIGlmIChLZXlVdGlsLmlzS2V5Q29kZShldmVudCwgW0VOVEVSLCBTUEFDRV0pKSB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgbWVudVJlZi50b2dnbGUoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBnZXQgX3RhYlBhbmVsc0NoYW5nZSQoKTogT2JzZXJ2YWJsZTxUYWJQYW5lbENvbXBvbmVudFtdPiB7XG4gICAgICAgIHJldHVybiB0aGlzLnRhYlBhbmVscy5jaGFuZ2VzLnBpcGUoXG4gICAgICAgICAgICBzdGFydFdpdGgodGhpcy50YWJQYW5lbHMpLFxuICAgICAgICAgICAgbWFwKCh0YWJQYW5lbHMpID0+IHRhYlBhbmVscy50b0FycmF5KCkpLFxuICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9kZXRlY3RDaGFuZ2VzKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYgJiYgIXRoaXMuX2NoYW5nZURldGVjdG9yUmVmWydkZXN0cm95ZWQnXSkge1xuICAgICAgICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9zZXR1cFRhYlBhbmVsc0NoYW5nZUxpc3RlbmVycygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fbGlzdGVuT25UYWJQYW5lbHNBbmRVcGRhdGVTdG9yYWdlU3RydWN0dXJlcygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIFNldHVwIG1lY2hhbmlzbXMgcmVxdWlyZWQgZm9yIGhhbmRsaW5nIHRoZSBzdGFja2VkIGNvbnRlbnQgYmVoYXZpb3IgKi9cbiAgICBwcml2YXRlIF9pbml0U3RhY2tDb250ZW50U3Vic2NyaXB0aW9uKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl90YWJQYW5lbHNDaGFuZ2UkXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBmaWx0ZXIoKCkgPT4gdGhpcy5zdGFja0NvbnRlbnQpLFxuICAgICAgICAgICAgICAgIGRlbGF5KDApXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+XG4gICAgICAgICAgICAgICAgdGhpcy5fdGFiQXJyYXkuZmlsdGVyKCh0YWIpID0+ICF0YWIucGFuZWwuZGlzYWJsZWQpLmZvckVhY2goKHRhYikgPT4gdGFiLnBhbmVsLl9leHBhbmQodHJ1ZSkpXG4gICAgICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfbGlzdGVuT25UYWJQYW5lbHNBbmRVcGRhdGVTdG9yYWdlU3RydWN0dXJlcygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fdGFiUGFuZWxzQ2hhbmdlJFxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgbWFwKCh0YWJQYW5lbHMpID0+XG4gICAgICAgICAgICAgICAgICAgIHRhYlBhbmVscy5tYXAoKGVsKSA9PiB0aGlzLl90YWJBcnJheT8uZmluZCgodGFiSW5mbykgPT4gdGFiSW5mby5wYW5lbCA9PT0gZWwpIHx8IG5ldyBUYWJJbmZvKGVsKSlcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCh0YWJzKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fdGFiQXJyYXkgPSB0YWJzO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9saXN0ZW5PblRhYlBhbmVsc0V4cGFuZGVkQ2hhbmdlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl90YWJQYW5lbHNDaGFuZ2UkXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBtYXAoKHRhYlBhbmVscykgPT4gdGFiUGFuZWxzLm1hcCgodGFiKSA9PiB0YWIuX2V4cGFuZGVkU3RhdGVDaGFuZ2UuYXNPYnNlcnZhYmxlKCkpKSxcbiAgICAgICAgICAgICAgICBzd2l0Y2hNYXAoKHRhYlBhbmVscykgPT4gbWVyZ2UoLi4udGFiUGFuZWxzKSlcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZXhwYW5kVGFiKGV2ZW50LnRhcmdldCwgZXZlbnQuc3RhdGUpO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9saXN0ZW5PblRhYlBhbmVsc0FuZEluaXRpYWxseUV4cGFuZFRhYlBhbmVsKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl90YWJQYW5lbHNDaGFuZ2UkLnBpcGUodGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgYWN0aXZlVGFiID0gdGhpcy5fdGFiQXJyYXkuZmluZCgoX3RhYikgPT4gX3RhYi5hY3RpdmUpO1xuICAgICAgICAgICAgbGV0IHRhYjogTnVsbGFibGU8VGFiSW5mbz47XG5cbiAgICAgICAgICAgIGlmICghYWN0aXZlVGFiIHx8IHRoaXMuc2VsZWN0RGVmYXVsdE9uVGFic0NoYW5nZSkge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmRlZmF1bHRUYWIpIHtcbiAgICAgICAgICAgICAgICAgICAgdGFiID0gdGhpcy5fdGFiQXJyYXkuZmluZCgoX3RhYikgPT4gIV90YWIuZGlzYWJsZWQgJiYgX3RhYi5pZCA9PT0gdGhpcy5kZWZhdWx0VGFiKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoIXRhYikge1xuICAgICAgICAgICAgICAgICAgICB0YWIgPSB0aGlzLl90YWJBcnJheS5maW5kKChfdGFiKSA9PiAhX3RhYi5kaXNhYmxlZCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAodGFiICYmIGFjdGl2ZVRhYiAhPT0gdGFiKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZXhwYW5kVGFiKHRhYi5wYW5lbCwgdHJ1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfbGlzdGVuT25Qcm9wZXJ0aWVzQ2hhbmdlKCk6IHZvaWQge1xuICAgICAgICBtZXJnZSh0aGlzLnRhYlBhbmVsUHJvcGVydHlDaGFuZ2VkLCB0aGlzLnRhYlBhbmVscy5jaGFuZ2VzKVxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB0aGlzLl9kZXRlY3RDaGFuZ2VzKCkpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfYWN0aXZhdGVTdGFja2VkVGFiKHRhYlBhbmVsOiBUYWJQYW5lbENvbXBvbmVudCwgc2Nyb2xsID0gdHJ1ZSk6IHZvaWQge1xuICAgICAgICBpZiAoc2Nyb2xsKSB7XG4gICAgICAgICAgICB0aGlzLl9zY3JvbGxUb1BhbmVsKHRhYlBhbmVsKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl90YWJBcnJheS5mb3JFYWNoKCh0YWIpID0+IHtcbiAgICAgICAgICAgIHRhYi5hY3RpdmUgPSB0YWIucGFuZWwgPT09IHRhYlBhbmVsO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2FjdGl2YXRlRXhwYW5kYWJsZVRhYih0YWJQYW5lbDogVGFiUGFuZWxDb21wb25lbnQsIGV4cGFuZDogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICBjb25zdCBjb2xsYXBzZSA9IHRoaXMuY29sbGFwc2libGVUYWJzICYmICFleHBhbmQ7XG5cbiAgICAgICAgdGhpcy5fdGFiQXJyYXkuZm9yRWFjaCgodGFiKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBpc0FjdGl2ZSA9IHRhYi5wYW5lbCA9PT0gdGFiUGFuZWwgJiYgIWNvbGxhcHNlO1xuXG4gICAgICAgICAgICB0YWIucGFuZWwuX2V4cGFuZChpc0FjdGl2ZSk7XG4gICAgICAgICAgICB0YWIuYWN0aXZlID0gaXNBY3RpdmU7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZXhwYW5kVGFiKHRhYlBhbmVsOiBUYWJQYW5lbENvbXBvbmVudCwgZXhwYW5kOiBib29sZWFuLCBkZXRlY3RDaGFuZ2VzID0gdHJ1ZSk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5zdGFja0NvbnRlbnQpIHtcbiAgICAgICAgICAgIHRoaXMuX2FjdGl2YXRlU3RhY2tlZFRhYih0YWJQYW5lbCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoIXRoaXMuX2NhbkNoYW5nZUV4cGFuZFN0YXRlKHRhYlBhbmVsLCBleHBhbmQpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLl9hY3RpdmF0ZUV4cGFuZGFibGVUYWIodGFiUGFuZWwsIGV4cGFuZCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZGV0ZWN0Q2hhbmdlcykge1xuICAgICAgICAgICAgdGhpcy5fZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5zZWxlY3RlZFRhYkNoYW5nZS5lbWl0KHRhYlBhbmVsKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3Njcm9sbFRvUGFuZWwodGFiUGFuZWw6IFRhYlBhbmVsQ29tcG9uZW50KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHBhbmVsRWxlbWVudCA9IHRhYlBhbmVsLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtcbiAgICAgICAgY29uc3QgY29udGFpbmVyRWxlbWVudCA9IHRoaXMuY29udGVudENvbnRhaW5lci5uYXRpdmVFbGVtZW50O1xuICAgICAgICBjb25zdCBkaXN0YW5jZVRvU2Nyb2xsID0gcGFuZWxFbGVtZW50Lm9mZnNldFRvcCAtIGNvbnRhaW5lckVsZW1lbnQub2Zmc2V0VG9wO1xuICAgICAgICBjb25zdCBtYXhpbXVtU2Nyb2xsVG9wID0gY29udGFpbmVyRWxlbWVudC5zY3JvbGxIZWlnaHQgLSBjb250YWluZXJFbGVtZW50LmNsaWVudEhlaWdodDtcbiAgICAgICAgY29uc3QgY3VycmVudFNjcm9sbFBvc2l0aW9uID0gTWF0aC5jZWlsKGNvbnRhaW5lckVsZW1lbnQuc2Nyb2xsVG9wKTtcblxuICAgICAgICBpZiAoIShjdXJyZW50U2Nyb2xsUG9zaXRpb24gPT09IG1heGltdW1TY3JvbGxUb3AgJiYgZGlzdGFuY2VUb1Njcm9sbCA+IG1heGltdW1TY3JvbGxUb3ApKSB7XG4gICAgICAgICAgICAhdGhpcy5faW5pdCA/ICh0aGlzLl9kaXNhYmxlU2Nyb2xsU3B5ID0gdHJ1ZSkgOiAodGhpcy5faW5pdCA9IGZhbHNlKTtcbiAgICAgICAgICAgIGZyb21FdmVudChjb250YWluZXJFbGVtZW50LCAnc2Nyb2xsJylcbiAgICAgICAgICAgICAgICAucGlwZShkZWJvdW5jZVRpbWUoMTAwKSwgZmlyc3QoKSwgdGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpKVxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4gKHRoaXMuX2Rpc2FibGVTY3JvbGxTcHkgPSBmYWxzZSkpO1xuICAgICAgICAgICAgc2Nyb2xsVG9wKGNvbnRhaW5lckVsZW1lbnQsIGRpc3RhbmNlVG9TY3JvbGwpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuZm9jdXNGaXJzdEZvY3VzYWJsZUVsZW1lbnQpIHtcbiAgICAgICAgICAgIHRhYlBhbmVsLl9mb2N1c0ZpcnN0Rm9jdXNhYmxlRWxlbWVudCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gV2hldGhlciB0YWIgY2FuIGJlIGV4cGFuZGVkL2NvbGxhcHNlZCAqL1xuICAgIHByaXZhdGUgX2NhbkNoYW5nZUV4cGFuZFN0YXRlKHRhYlBhbmVsOiBUYWJQYW5lbENvbXBvbmVudCwgZXhwYW5kOiBib29sZWFuKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhdGFiUGFuZWwuZGlzYWJsZWQgJiYgZXhwYW5kICE9PSB0YWJQYW5lbC5leHBhbmRlZCAmJiBleHBhbmQgPT09IGZhbHNlID8gdGhpcy5jb2xsYXBzaWJsZVRhYnMgOiB0cnVlO1xuICAgIH1cbn1cbiIsIjxkaXYgI2hlYWRlckNvbnRhaW5lciByb2xlPVwidGFibGlzdFwiIGNsYXNzPVwiZmQtdGFic1wiIFtjbGFzc109XCIobW9kZSA/ICdmZC10YWJzLS0nICsgbW9kZSA6ICcnKSArICgnIGZkLXRhYnMtLScgKyBzaXplKVwiPlxuICAgIDxmZC1vdmVyZmxvdy1sYXlvdXRcbiAgICAgICAgW21heFZpc2libGVJdGVtc109XCJtYXhWaXNpYmxlVGFic1wiXG4gICAgICAgIFtlbmFibGVLZXlib2FyZE5hdmlnYXRpb25dPVwidHJ1ZVwiXG4gICAgICAgIG5hdmlnYXRpb25UcmlnZ2VyPVwia2V5ZG93blwiXG4gICAgICAgIChoaWRkZW5JdGVtc0NvdW50KT1cImhpZGRlbkl0ZW1zQ291bnQuZW1pdCgkZXZlbnQpXCJcbiAgICAgICAgKHZpc2libGVJdGVtc0NvdW50KT1cInZpc2libGVJdGVtc0NvdW50LmVtaXQoJGV2ZW50KVwiXG4gICAgPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCB0YWIgb2YgX3RhYkFycmF5OyBsZXQgaSA9IGluZGV4OyBsZXQgbGFzdCA9IGxhc3RcIj5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBmZC10YWItaXRlbVxuICAgICAgICAgICAgICAgICpmZE92ZXJmbG93SXRlbVJlZj1cInRhYlwiXG4gICAgICAgICAgICAgICAgZmRPdmVyZmxvd0xheW91dEl0ZW1cbiAgICAgICAgICAgICAgICBbZm9yY2VWaXNpYmlsaXR5XT1cInRhYi5wYW5lbC5fZm9yY2VkVmlzaWJpbGl0eVwiXG4gICAgICAgICAgICAgICAgW2hlYWRlcl09XCJ0YWIuaXNIZWFkZXJcIlxuICAgICAgICAgICAgICAgIFt0YWJJdGVtU3RhdGVdPVwidGFiLnRhYlN0YXRlXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgICAgICBmZC10YWItbGlua1xuICAgICAgICAgICAgICAgICAgICByb2xlPVwidGFiXCJcbiAgICAgICAgICAgICAgICAgICAgW2lkXT1cInRhYi5pZFwiXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtY29udHJvbHNdPVwidGFiLnBhbmVsSWRcIlxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cInRhYi5hcmlhTGFiZWwgfHwgbnVsbFwiXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCIhdGFiLmFyaWFMYWJlbCAmJiB0YWIuYXJpYUxhYmVsbGVkQnkgPyB0YWIuYXJpYUxhYmVsbGVkQnkgOiBudWxsXCJcbiAgICAgICAgICAgICAgICAgICAgZmRPdmVyZmxvd0xheW91dEZvY3VzYWJsZUl0ZW1cbiAgICAgICAgICAgICAgICAgICAgW2ZvY3VzYWJsZV09XCJ0YWIuYWN0aXZlXCJcbiAgICAgICAgICAgICAgICAgICAgW25hdmlnYWJsZV09XCIhdGFiLmRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICAgICAgW2FjdGl2ZV09XCJ0YWIuYWN0aXZlXCJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInRhYi5kaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgICAgIChrZXlkb3duKT1cIl90YWJIZWFkZXJLZXlkb3duSGFuZGxlcigkZXZlbnQsIHRhYi5wYW5lbClcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiX3RhYkhlYWRlckNsaWNrSGFuZGxlcih0YWIucGFuZWwpXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0YWIudGl0bGVUZW1wbGF0ZSB8fCBudWxsXCI+PC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiF0YWIudGl0bGVUZW1wbGF0ZVwiIFtuZ1N3aXRjaF09XCJtb2RlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInZmlsdGVyJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGZkLXRhYi1oZWFkZXIgKm5nSWY9XCJ0YWIuaXNIZWFkZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gZmQtdGFiLWNvdW50ZXItaGVhZGVyICpuZ0lmPVwidGFiLmNvdW50XCI+e3sgdGFiLmNvdW50IH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBmZC10YWItbGFiZWwgKm5nSWY9XCJ0YWIudGl0bGVcIj57eyB0YWIudGl0bGUgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhdGFiLmlzSGVhZGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGZkLXRhYi1pY29uIFtpY29uXT1cInRhYi5nbHlwaFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgZmQtdGFiLWNvdW50Pnt7IHRhYi5jb3VudCB9fTwvcD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBmZC10YWItbGFiZWw+e3sgdGFiLnRpdGxlIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidpY29uLW9ubHknXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gZmQtdGFiLWljb24gW2ljb25dPVwidGFiLmdseXBoXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGZkLXRhYi1jb3VudD57eyB0YWIuY291bnQgfX08L3A+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidwcm9jZXNzJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGZkLXRhYi1pY29uICpuZ0lmPVwidGFiLmdseXBoXCIgW2ljb25dPVwidGFiLmdseXBoXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgZmQtdGFiLXByb2Nlc3M+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGZkLXRhYi1sYWJlbCAqbmdJZj1cInRhYi5jb3VudFwiPnt7IHRhYi5jb3VudCB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gZmQtdGFiLWxhYmVsICpuZ0lmPVwidGFiLnRpdGxlXCI+e3sgdGFiLnRpdGxlIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoRGVmYXVsdD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBmZC10YWItY291bnQgKm5nSWY9XCJ0YWIuY291bnRcIj57eyB0YWIuY291bnQgfX08L3A+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gZmQtdGFiLXRhZz57eyB0YWIudGl0bGUgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPC9hPlxuXG4gICAgICAgICAgICAgICAgPGRpdiBmZC10YWItcHJvY2Vzcy1pY29uICpuZ0lmPVwibW9kZSA9PT0gJ3Byb2Nlc3MnICYmICFsYXN0XCI+PC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cInRhYi5pc0hlYWRlclwiIGZkLXRhYi1zZXBhcmF0b3I+PC9kaXY+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgIDxuZy1jb250YWluZXIgKmZkT3ZlcmZsb3dFeHBhbmQ9XCJsZXQgdGFiczsgaXRlbXM6IF90YWJBcnJheVwiPlxuICAgICAgICAgICAgPGZkLWl0ZW0tZXhwYW5kXG4gICAgICAgICAgICAgICAgW2ZkTWVudVRyaWdnZXJdPVwibWVudVwiXG4gICAgICAgICAgICAgICAgW2xhYmVsXT1cImV4cGFuZE92ZXJmbG93VGV4dFwiXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJ0YWJzLmxlbmd0aCA+IDBcIlxuICAgICAgICAgICAgICAgIChrZXlkb3duKT1cIl9vblRyaWdnZXJLZXlkb3duKCRldmVudCwgbWVudSlcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgPC9mZC1pdGVtLWV4cGFuZD5cblxuICAgICAgICAgICAgPGZkLW1lbnUgI21lbnU+XG4gICAgICAgICAgICAgICAgPGxpXG4gICAgICAgICAgICAgICAgICAgIGZkLW1lbnUtaXRlbVxuICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgdGFiIG9mIHRhYnNcIlxuICAgICAgICAgICAgICAgICAgICAob25TZWxlY3QpPVwiX292ZXJmbG93aW5nVGFiSGVhZGVyQ2xpY2tIYW5kbGVyKHRhYi5pdGVtLnBhbmVsKVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGZkLW1lbnUtaW50ZXJhY3RpdmU+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIXRhYi5pdGVtLnRpdGxlVGVtcGxhdGUgJiYgbW9kZSA9PT0gJ2ljb24tb25seSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gaWNvbk9ubHlUZW1wbGF0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB0YWIuaXRlbS50aXRsZVRlbXBsYXRlIHx8IHRleHRUaXRsZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dDogeyAkaW1wbGljaXQ6IHRhYi5pdGVtIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgPC9mZC1tZW51PlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2ZkLW92ZXJmbG93LWxheW91dD5cbjwvZGl2PlxuXG48ZGl2XG4gICAgY2xhc3M9XCJmZC10YWJzX19jb250ZW50XCJcbiAgICBbc3R5bGUubWF4LWhlaWdodF09XCJtYXhDb250ZW50SGVpZ2h0XCJcbiAgICBmZFNjcm9sbFNweVxuICAgIGZkLXNjcm9sbGJhclxuICAgIFt0cmFja2VkVGFnc109XCJbJ2ZkLXRhYiddXCJcbiAgICBbc2Nyb2xsU3B5RGlzYWJsZWRdPVwiX2Rpc2FibGVTY3JvbGxTcHlcIlxuICAgIChzcHlDaGFuZ2UpPVwiX2hpZ2hsaWdodEFjdGl2ZVRhYigkZXZlbnQpXCJcbj5cbiAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG48L2Rpdj5cblxuPG5nLXRlbXBsYXRlICN0ZXh0VGl0bGUgbGV0LXRhYj5cbiAgICA8c3BhbiBmZC1tZW51LXRpdGxlPnt7IHRhYi50aXRsZSB9fTwvc3Bhbj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjaWNvbk9ubHlUZW1wbGF0ZSBsZXQtdGFiPlxuICAgIDxzcGFuIGZkLXRhYi1pY29uIFtpY29uXT1cInRhYi5nbHlwaFwiPlxuICAgICAgICA8cCBmZC10YWItY291bnQ+e3sgdGFiLmNvdW50IH19PC9wPlxuICAgIDwvc3Bhbj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { EventEmitter, Directive, Input, Output, HostListener, NgModule } from '@angular/core';
|
|
2
|
+
import { EventEmitter, inject, ElementRef, Directive, Input, Output, HostListener, NgModule } from '@angular/core';
|
|
3
|
+
import { DestroyedService, resizeObservable } from '@fundamental-ngx/cdk/utils';
|
|
4
|
+
import { debounceTime, takeUntil } from 'rxjs';
|
|
3
5
|
|
|
4
6
|
/**
|
|
5
7
|
* A directive designed to help navigation elements determine the element currently in view of the user.
|
|
6
8
|
*/
|
|
7
9
|
class ScrollSpyDirective {
|
|
8
|
-
|
|
9
|
-
constructor(_elRef) {
|
|
10
|
-
this._elRef = _elRef;
|
|
10
|
+
constructor() {
|
|
11
11
|
/**
|
|
12
12
|
* An array of tags to track.
|
|
13
13
|
*/
|
|
@@ -36,6 +36,10 @@ class ScrollSpyDirective {
|
|
|
36
36
|
* The returned value is the HTMLElement itself.
|
|
37
37
|
*/
|
|
38
38
|
this.spyChange = new EventEmitter();
|
|
39
|
+
/** @hidden */
|
|
40
|
+
this._elRef = inject(ElementRef);
|
|
41
|
+
/** @hidden */
|
|
42
|
+
this._destroyRef = inject(DestroyedService);
|
|
39
43
|
}
|
|
40
44
|
/** @hidden */
|
|
41
45
|
onScroll(event) {
|
|
@@ -62,15 +66,25 @@ class ScrollSpyDirective {
|
|
|
62
66
|
this.spyChange.emit(this._currentActive);
|
|
63
67
|
}
|
|
64
68
|
}
|
|
69
|
+
/** @hidden */
|
|
70
|
+
ngOnInit() {
|
|
71
|
+
// When the spy container being resized, re-evaluate scroll position.
|
|
72
|
+
resizeObservable(this._elRef.nativeElement)
|
|
73
|
+
.pipe(debounceTime(30), takeUntil(this._destroyRef))
|
|
74
|
+
.subscribe(() => {
|
|
75
|
+
this.onScroll({ target: this._elRef.nativeElement });
|
|
76
|
+
});
|
|
77
|
+
}
|
|
65
78
|
}
|
|
66
|
-
ScrollSpyDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ScrollSpyDirective, deps: [
|
|
67
|
-
ScrollSpyDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.9", type: ScrollSpyDirective, selector: "[fdScrollSpy]", inputs: { trackedTags: "trackedTags", fireEmpty: "fireEmpty", targetPercent: "targetPercent", targetOffset: "targetOffset", scrollSpyDisabled: "scrollSpyDisabled" }, outputs: { spyChange: "spyChange" }, host: { listeners: { "scroll": "onScroll($event)" } }, ngImport: i0 });
|
|
79
|
+
ScrollSpyDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ScrollSpyDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
80
|
+
ScrollSpyDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.9", type: ScrollSpyDirective, selector: "[fdScrollSpy]", inputs: { trackedTags: "trackedTags", fireEmpty: "fireEmpty", targetPercent: "targetPercent", targetOffset: "targetOffset", scrollSpyDisabled: "scrollSpyDisabled" }, outputs: { spyChange: "spyChange" }, host: { listeners: { "scroll": "onScroll($event)" } }, providers: [DestroyedService], ngImport: i0 });
|
|
68
81
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ScrollSpyDirective, decorators: [{
|
|
69
82
|
type: Directive,
|
|
70
83
|
args: [{
|
|
71
|
-
selector: '[fdScrollSpy]'
|
|
84
|
+
selector: '[fdScrollSpy]',
|
|
85
|
+
providers: [DestroyedService]
|
|
72
86
|
}]
|
|
73
|
-
}],
|
|
87
|
+
}], propDecorators: { trackedTags: [{
|
|
74
88
|
type: Input
|
|
75
89
|
}], fireEmpty: [{
|
|
76
90
|
type: Input
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fundamental-ngx-core-scroll-spy.mjs","sources":["../../../../libs/core/src/lib/scroll-spy/scroll-spy.directive.ts","../../../../libs/core/src/lib/scroll-spy/scroll-spy.module.ts","../../../../libs/core/src/lib/scroll-spy/fundamental-ngx-core-scroll-spy.ts"],"sourcesContent":["import { Directive, ElementRef, EventEmitter, HostListener, Input, Output } from '@angular/core';\n\n/**\n * A directive designed to help navigation elements determine the element currently in view of the user.\n */\n@Directive({\n selector: '[fdScrollSpy]'\n})\nexport class ScrollSpyDirective {\n /**\n * An array of tags to track.\n */\n @Input()\n trackedTags: string[] = [];\n\n /**\n * Whether events are still fired if there is no tag present on the user's screen.\n */\n @Input()\n fireEmpty = false;\n\n /**\n * A number that represent at what location in the container the event is fired.\n * 0.5 would fire the events in the middle of the container,\n * 0 for the top and 1 for the bottom.\n */\n @Input()\n targetPercent = 0;\n\n /**\n * Number that represents the offset in pixels for fired target. `100` value means that the event will be fired for\n * target that is 100 pixels below the spy container.\n */\n @Input()\n targetOffset = 0;\n\n /**\n * Whether to disable scroll spy\n */\n @Input()\n scrollSpyDisabled = false;\n\n /**\n * Event fired on the scroll element when a new item becomes activated by the scrollspy .\n * The returned value is the HTMLElement itself.\n */\n @Output()\n readonly spyChange: EventEmitter<HTMLElement> = new EventEmitter<HTMLElement>();\n\n /** @hidden */\n private _currentActive: HTMLElement | undefined;\n\n /** @hidden */\n
|
|
1
|
+
{"version":3,"file":"fundamental-ngx-core-scroll-spy.mjs","sources":["../../../../libs/core/src/lib/scroll-spy/scroll-spy.directive.ts","../../../../libs/core/src/lib/scroll-spy/scroll-spy.module.ts","../../../../libs/core/src/lib/scroll-spy/fundamental-ngx-core-scroll-spy.ts"],"sourcesContent":["import { Directive, ElementRef, EventEmitter, HostListener, Input, OnInit, Output, inject } from '@angular/core';\nimport { DestroyedService, resizeObservable } from '@fundamental-ngx/cdk/utils';\nimport { debounceTime, takeUntil } from 'rxjs';\n\n/**\n * A directive designed to help navigation elements determine the element currently in view of the user.\n */\n@Directive({\n selector: '[fdScrollSpy]',\n providers: [DestroyedService]\n})\nexport class ScrollSpyDirective implements OnInit {\n /**\n * An array of tags to track.\n */\n @Input()\n trackedTags: string[] = [];\n\n /**\n * Whether events are still fired if there is no tag present on the user's screen.\n */\n @Input()\n fireEmpty = false;\n\n /**\n * A number that represent at what location in the container the event is fired.\n * 0.5 would fire the events in the middle of the container,\n * 0 for the top and 1 for the bottom.\n */\n @Input()\n targetPercent = 0;\n\n /**\n * Number that represents the offset in pixels for fired target. `100` value means that the event will be fired for\n * target that is 100 pixels below the spy container.\n */\n @Input()\n targetOffset = 0;\n\n /**\n * Whether to disable scroll spy\n */\n @Input()\n scrollSpyDisabled = false;\n\n /**\n * Event fired on the scroll element when a new item becomes activated by the scrollspy .\n * The returned value is the HTMLElement itself.\n */\n @Output()\n readonly spyChange: EventEmitter<HTMLElement> = new EventEmitter<HTMLElement>();\n\n /** @hidden */\n private _currentActive: HTMLElement | undefined;\n\n /** @hidden */\n private readonly _elRef = inject(ElementRef);\n\n /** @hidden */\n private readonly _destroyRef = inject(DestroyedService);\n\n /** @hidden */\n @HostListener('scroll', ['$event'])\n onScroll(event: Event): void {\n if (this.scrollSpyDisabled) {\n return;\n }\n\n let spiedTag: HTMLElement | undefined;\n const target = event.target as HTMLElement;\n const children: HTMLElement[] = this._elRef.nativeElement.children;\n const [firstChild] = children;\n const childrenLength = children.length;\n const targetScrollTop = target.scrollTop;\n const targetOffsetTop = target.offsetTop + this.targetOffset - (target.offsetTop - firstChild.offsetTop);\n\n for (let i = 0; i < childrenLength; i++) {\n const element = children[i];\n if (this.trackedTags.some((tag) => tag.toLocaleUpperCase() === element.tagName.toLocaleUpperCase())) {\n if (element.offsetTop - targetOffsetTop <= targetScrollTop + target.offsetHeight * this.targetPercent) {\n spiedTag = element;\n }\n }\n }\n\n if ((spiedTag || this.fireEmpty) && spiedTag !== this._currentActive) {\n this._currentActive = spiedTag;\n this.spyChange.emit(this._currentActive);\n }\n }\n\n /** @hidden */\n ngOnInit(): void {\n // When the spy container being resized, re-evaluate scroll position.\n resizeObservable(this._elRef.nativeElement)\n .pipe(debounceTime(30), takeUntil(this._destroyRef))\n .subscribe(() => {\n this.onScroll({ target: this._elRef.nativeElement } as Event);\n });\n }\n}\n","import { NgModule } from '@angular/core';\n\nimport { ScrollSpyDirective } from './scroll-spy.directive';\n\n@NgModule({\n declarations: [ScrollSpyDirective],\n exports: [ScrollSpyDirective]\n})\nexport class ScrollSpyModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -10,6 +10,7 @@ import { applyCssClass, AbstractFdNgxClass, KeyUtil, scrollTop, DestroyedService
|
|
|
10
10
|
import * as i2 from '@fundamental-ngx/core/icon';
|
|
11
11
|
import { IconModule } from '@fundamental-ngx/core/icon';
|
|
12
12
|
import { Subject, first, Subscription, merge, fromEvent } from 'rxjs';
|
|
13
|
+
import { ENTER, SPACE, LEFT_ARROW, RIGHT_ARROW } from '@angular/cdk/keycodes';
|
|
13
14
|
import * as i1 from '@fundamental-ngx/core/content-density';
|
|
14
15
|
import { contentDensityObserverProviders, DeprecatedCompactDirective, CONTENT_DENSITY_DIRECTIVE, ContentDensityModule } from '@fundamental-ngx/core/content-density';
|
|
15
16
|
import * as i4$1 from '@fundamental-ngx/core/menu';
|
|
@@ -19,7 +20,6 @@ import { ScrollbarDirective, ScrollbarModule } from '@fundamental-ngx/core/scrol
|
|
|
19
20
|
import { startWith, map, takeUntil, filter, delay, switchMap, debounceTime, first as first$1 } from 'rxjs/operators';
|
|
20
21
|
import * as i4 from '@fundamental-ngx/i18n';
|
|
21
22
|
import { I18nModule } from '@fundamental-ngx/i18n';
|
|
22
|
-
import { ENTER, SPACE, LEFT_ARROW, RIGHT_ARROW } from '@angular/cdk/keycodes';
|
|
23
23
|
import * as i5 from '@fundamental-ngx/core/scroll-spy';
|
|
24
24
|
import { ScrollSpyModule } from '@fundamental-ngx/core/scroll-spy';
|
|
25
25
|
import { FocusKeyManager } from '@angular/cdk/a11y';
|
|
@@ -575,6 +575,7 @@ class TabInfo {
|
|
|
575
575
|
}
|
|
576
576
|
}
|
|
577
577
|
|
|
578
|
+
/* eslint-disable @typescript-eslint/member-ordering */
|
|
578
579
|
/**
|
|
579
580
|
* Represents a list of tab-panels.
|
|
580
581
|
*/
|
|
@@ -613,6 +614,8 @@ class TabListComponent {
|
|
|
613
614
|
this.visibleItemsCount = new EventEmitter();
|
|
614
615
|
/** Event emitted when hidden items count has been changed. */
|
|
615
616
|
this.hiddenItemsCount = new EventEmitter();
|
|
617
|
+
/** @hidden Collection of tabs in original order */
|
|
618
|
+
this._tabArray = [];
|
|
616
619
|
/** @hidden Whether to disable scroll spy */
|
|
617
620
|
this._disableScrollSpy = false;
|
|
618
621
|
/** @hidden */
|
|
@@ -700,7 +703,9 @@ class TabListComponent {
|
|
|
700
703
|
}
|
|
701
704
|
/** @hidden */
|
|
702
705
|
_listenOnTabPanelsAndUpdateStorageStructures() {
|
|
703
|
-
this._tabPanelsChange
|
|
706
|
+
this._tabPanelsChange$
|
|
707
|
+
.pipe(map((tabPanels) => tabPanels.map((el) => { var _a; return ((_a = this._tabArray) === null || _a === void 0 ? void 0 : _a.find((tabInfo) => tabInfo.panel === el)) || new TabInfo(el); })))
|
|
708
|
+
.subscribe((tabs) => {
|
|
704
709
|
this._tabArray = tabs;
|
|
705
710
|
});
|
|
706
711
|
}
|