@fundamental-ngx/core 0.46.0-rc.97 → 0.46.0-rc.98

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.
@@ -1,12 +1,13 @@
1
- import { Directive, ElementRef, EventEmitter, HostListener, Input, Output } from '@angular/core';
1
+ import { DestroyRef, Directive, ElementRef, EventEmitter, HostListener, Input, Output, inject } from '@angular/core';
2
+ import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
3
+ import { resizeObservable } from '@fundamental-ngx/cdk/utils';
4
+ import { debounceTime } from 'rxjs';
2
5
  import * as i0 from "@angular/core";
3
6
  /**
4
7
  * A directive designed to help navigation elements determine the element currently in view of the user.
5
8
  */
6
9
  export class ScrollSpyDirective {
7
- /** @hidden */
8
- constructor(_elRef) {
9
- this._elRef = _elRef;
10
+ constructor() {
10
11
  /**
11
12
  * An array of tags to track.
12
13
  */
@@ -35,6 +36,10 @@ export class ScrollSpyDirective {
35
36
  * The returned value is the HTMLElement itself.
36
37
  */
37
38
  this.spyChange = new EventEmitter();
39
+ /** @hidden */
40
+ this._elRef = inject(ElementRef);
41
+ /** @hidden */
42
+ this._destroyRef = inject(DestroyRef);
38
43
  }
39
44
  /** @hidden */
40
45
  onScroll(event) {
@@ -61,7 +66,16 @@ export class ScrollSpyDirective {
61
66
  this.spyChange.emit(this._currentActive);
62
67
  }
63
68
  }
64
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: ScrollSpyDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
69
+ /** @hidden */
70
+ ngOnInit() {
71
+ // When the spy container being resized, re-evaluate scroll position.
72
+ resizeObservable(this._elRef.nativeElement)
73
+ .pipe(debounceTime(30), takeUntilDestroyed(this._destroyRef))
74
+ .subscribe(() => {
75
+ this.onScroll({ target: this._elRef.nativeElement });
76
+ });
77
+ }
78
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: ScrollSpyDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
65
79
  static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.7", type: ScrollSpyDirective, isStandalone: true, selector: "[fdScrollSpy]", inputs: { trackedTags: "trackedTags", fireEmpty: "fireEmpty", targetPercent: "targetPercent", targetOffset: "targetOffset", scrollSpyDisabled: "scrollSpyDisabled" }, outputs: { spyChange: "spyChange" }, host: { listeners: { "scroll": "onScroll($event)" } }, ngImport: i0 }); }
66
80
  }
67
81
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: ScrollSpyDirective, decorators: [{
@@ -70,7 +84,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.7", ngImpor
70
84
  selector: '[fdScrollSpy]',
71
85
  standalone: true
72
86
  }]
73
- }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { trackedTags: [{
87
+ }], propDecorators: { trackedTags: [{
74
88
  type: Input
75
89
  }], fireEmpty: [{
76
90
  type: Input
@@ -86,4 +100,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.7", ngImpor
86
100
  type: HostListener,
87
101
  args: ['scroll', ['$event']]
88
102
  }] } });
89
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Nyb2xsLXNweS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvc3JjL2xpYi9zY3JvbGwtc3B5L3Njcm9sbC1zcHkuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFFakc7O0dBRUc7QUFLSCxNQUFNLE9BQU8sa0JBQWtCO0lBNEMzQixjQUFjO0lBQ2QsWUFBNkIsTUFBa0I7UUFBbEIsV0FBTSxHQUFOLE1BQU0sQ0FBWTtRQTVDL0M7O1dBRUc7UUFFSCxnQkFBVyxHQUFhLEVBQUUsQ0FBQztRQUUzQjs7V0FFRztRQUVILGNBQVMsR0FBRyxLQUFLLENBQUM7UUFFbEI7Ozs7V0FJRztRQUVILGtCQUFhLEdBQUcsQ0FBQyxDQUFDO1FBRWxCOzs7V0FHRztRQUVILGlCQUFZLEdBQUcsQ0FBQyxDQUFDO1FBRWpCOztXQUVHO1FBRUgsc0JBQWlCLEdBQUcsS0FBSyxDQUFDO1FBRTFCOzs7V0FHRztRQUVNLGNBQVMsR0FBOEIsSUFBSSxZQUFZLEVBQWUsQ0FBQztJQU05QixDQUFDO0lBRW5ELGNBQWM7SUFFZCxRQUFRLENBQUMsS0FBWTtRQUNqQixJQUFJLElBQUksQ0FBQyxpQkFBaUIsRUFBRTtZQUN4QixPQUFPO1NBQ1Y7UUFFRCxJQUFJLFFBQWlDLENBQUM7UUFDdEMsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLE1BQXFCLENBQUM7UUFDM0MsTUFBTSxRQUFRLEdBQWtCLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQztRQUNuRSxNQUFNLENBQUMsVUFBVSxDQUFDLEdBQUcsUUFBUSxDQUFDO1FBQzlCLE1BQU0sY0FBYyxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUM7UUFDdkMsTUFBTSxlQUFlLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQztRQUN6QyxNQUFNLGVBQWUsR0FBRyxNQUFNLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxZQUFZLEdBQUcsQ0FBQyxNQUFNLENBQUMsU0FBUyxHQUFHLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUV6RyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsY0FBYyxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQ3JDLE1BQU0sT0FBTyxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUM1QixJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsaUJBQWlCLEVBQUUsS0FBSyxPQUFPLENBQUMsT0FBTyxDQUFDLGlCQUFpQixFQUFFLENBQUMsRUFBRTtnQkFDakcsSUFBSSxPQUFPLENBQUMsU0FBUyxHQUFHLGVBQWUsSUFBSSxlQUFlLEdBQUcsTUFBTSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsYUFBYSxFQUFFO29CQUNuRyxRQUFRLEdBQUcsT0FBTyxDQUFDO2lCQUN0QjthQUNKO1NBQ0o7UUFFRCxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxRQUFRLEtBQUssSUFBSSxDQUFDLGNBQWMsRUFBRTtZQUNsRSxJQUFJLENBQUMsY0FBYyxHQUFHLFFBQVEsQ0FBQztZQUMvQixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7U0FDNUM7SUFDTCxDQUFDOzhHQTNFUSxrQkFBa0I7a0dBQWxCLGtCQUFrQjs7MkZBQWxCLGtCQUFrQjtrQkFKOUIsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsZUFBZTtvQkFDekIsVUFBVSxFQUFFLElBQUk7aUJBQ25CO2lHQU1HLFdBQVc7c0JBRFYsS0FBSztnQkFPTixTQUFTO3NCQURSLEtBQUs7Z0JBU04sYUFBYTtzQkFEWixLQUFLO2dCQVFOLFlBQVk7c0JBRFgsS0FBSztnQkFPTixpQkFBaUI7c0JBRGhCLEtBQUs7Z0JBUUcsU0FBUztzQkFEakIsTUFBTTtnQkFXUCxRQUFRO3NCQURQLFlBQVk7dUJBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIEhvc3RMaXN0ZW5lciwgSW5wdXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG4vKipcbiAqIEEgZGlyZWN0aXZlIGRlc2lnbmVkIHRvIGhlbHAgbmF2aWdhdGlvbiBlbGVtZW50cyBkZXRlcm1pbmUgdGhlIGVsZW1lbnQgY3VycmVudGx5IGluIHZpZXcgb2YgdGhlIHVzZXIuXG4gKi9cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW2ZkU2Nyb2xsU3B5XScsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBTY3JvbGxTcHlEaXJlY3RpdmUge1xuICAgIC8qKlxuICAgICAqIEFuIGFycmF5IG9mIHRhZ3MgdG8gdHJhY2suXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICB0cmFja2VkVGFnczogc3RyaW5nW10gPSBbXTtcblxuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgZXZlbnRzIGFyZSBzdGlsbCBmaXJlZCBpZiB0aGVyZSBpcyBubyB0YWcgcHJlc2VudCBvbiB0aGUgdXNlcidzIHNjcmVlbi5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGZpcmVFbXB0eSA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogQSBudW1iZXIgdGhhdCByZXByZXNlbnQgYXQgd2hhdCBsb2NhdGlvbiBpbiB0aGUgY29udGFpbmVyIHRoZSBldmVudCBpcyBmaXJlZC5cbiAgICAgKiAwLjUgd291bGQgZmlyZSB0aGUgZXZlbnRzIGluIHRoZSBtaWRkbGUgb2YgdGhlIGNvbnRhaW5lcixcbiAgICAgKiAwIGZvciB0aGUgdG9wIGFuZCAxIGZvciB0aGUgYm90dG9tLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgdGFyZ2V0UGVyY2VudCA9IDA7XG5cbiAgICAvKipcbiAgICAgKiBOdW1iZXIgdGhhdCByZXByZXNlbnRzIHRoZSBvZmZzZXQgaW4gcGl4ZWxzIGZvciBmaXJlZCB0YXJnZXQuIGAxMDBgIHZhbHVlIG1lYW5zIHRoYXQgdGhlIGV2ZW50IHdpbGwgYmUgZmlyZWQgZm9yXG4gICAgICogdGFyZ2V0IHRoYXQgaXMgMTAwIHBpeGVscyBiZWxvdyB0aGUgc3B5IGNvbnRhaW5lci5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHRhcmdldE9mZnNldCA9IDA7XG5cbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIHRvIGRpc2FibGUgc2Nyb2xsIHNweVxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2Nyb2xsU3B5RGlzYWJsZWQgPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIEV2ZW50IGZpcmVkIG9uIHRoZSBzY3JvbGwgZWxlbWVudCB3aGVuIGEgbmV3IGl0ZW0gYmVjb21lcyBhY3RpdmF0ZWQgYnkgdGhlIHNjcm9sbHNweSAuXG4gICAgICogVGhlIHJldHVybmVkIHZhbHVlIGlzIHRoZSBIVE1MRWxlbWVudCBpdHNlbGYuXG4gICAgICovXG4gICAgQE91dHB1dCgpXG4gICAgcmVhZG9ubHkgc3B5Q2hhbmdlOiBFdmVudEVtaXR0ZXI8SFRNTEVsZW1lbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxIVE1MRWxlbWVudD4oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfY3VycmVudEFjdGl2ZTogSFRNTEVsZW1lbnQgfCB1bmRlZmluZWQ7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgX2VsUmVmOiBFbGVtZW50UmVmKSB7fVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBASG9zdExpc3RlbmVyKCdzY3JvbGwnLCBbJyRldmVudCddKVxuICAgIG9uU2Nyb2xsKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5zY3JvbGxTcHlEaXNhYmxlZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IHNwaWVkVGFnOiBIVE1MRWxlbWVudCB8IHVuZGVmaW5lZDtcbiAgICAgICAgY29uc3QgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xuICAgICAgICBjb25zdCBjaGlsZHJlbjogSFRNTEVsZW1lbnRbXSA9IHRoaXMuX2VsUmVmLm5hdGl2ZUVsZW1lbnQuY2hpbGRyZW47XG4gICAgICAgIGNvbnN0IFtmaXJzdENoaWxkXSA9IGNoaWxkcmVuO1xuICAgICAgICBjb25zdCBjaGlsZHJlbkxlbmd0aCA9IGNoaWxkcmVuLmxlbmd0aDtcbiAgICAgICAgY29uc3QgdGFyZ2V0U2Nyb2xsVG9wID0gdGFyZ2V0LnNjcm9sbFRvcDtcbiAgICAgICAgY29uc3QgdGFyZ2V0T2Zmc2V0VG9wID0gdGFyZ2V0Lm9mZnNldFRvcCArIHRoaXMudGFyZ2V0T2Zmc2V0IC0gKHRhcmdldC5vZmZzZXRUb3AgLSBmaXJzdENoaWxkLm9mZnNldFRvcCk7XG5cbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjaGlsZHJlbkxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCBlbGVtZW50ID0gY2hpbGRyZW5baV07XG4gICAgICAgICAgICBpZiAodGhpcy50cmFja2VkVGFncy5zb21lKCh0YWcpID0+IHRhZy50b0xvY2FsZVVwcGVyQ2FzZSgpID09PSBlbGVtZW50LnRhZ05hbWUudG9Mb2NhbGVVcHBlckNhc2UoKSkpIHtcbiAgICAgICAgICAgICAgICBpZiAoZWxlbWVudC5vZmZzZXRUb3AgLSB0YXJnZXRPZmZzZXRUb3AgPD0gdGFyZ2V0U2Nyb2xsVG9wICsgdGFyZ2V0Lm9mZnNldEhlaWdodCAqIHRoaXMudGFyZ2V0UGVyY2VudCkge1xuICAgICAgICAgICAgICAgICAgICBzcGllZFRhZyA9IGVsZW1lbnQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKChzcGllZFRhZyB8fCB0aGlzLmZpcmVFbXB0eSkgJiYgc3BpZWRUYWcgIT09IHRoaXMuX2N1cnJlbnRBY3RpdmUpIHtcbiAgICAgICAgICAgIHRoaXMuX2N1cnJlbnRBY3RpdmUgPSBzcGllZFRhZztcbiAgICAgICAgICAgIHRoaXMuc3B5Q2hhbmdlLmVtaXQodGhpcy5fY3VycmVudEFjdGl2ZSk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=
103
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Nyb2xsLXNweS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvc3JjL2xpYi9zY3JvbGwtc3B5L3Njcm9sbC1zcHkuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxVQUFVLEVBQ1YsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osWUFBWSxFQUNaLEtBQUssRUFFTCxNQUFNLEVBQ04sTUFBTSxFQUNULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzlELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7O0FBRXBDOztHQUVHO0FBS0gsTUFBTSxPQUFPLGtCQUFrQjtJQUovQjtRQUtJOztXQUVHO1FBRUgsZ0JBQVcsR0FBYSxFQUFFLENBQUM7UUFFM0I7O1dBRUc7UUFFSCxjQUFTLEdBQUcsS0FBSyxDQUFDO1FBRWxCOzs7O1dBSUc7UUFFSCxrQkFBYSxHQUFHLENBQUMsQ0FBQztRQUVsQjs7O1dBR0c7UUFFSCxpQkFBWSxHQUFHLENBQUMsQ0FBQztRQUVqQjs7V0FFRztRQUVILHNCQUFpQixHQUFHLEtBQUssQ0FBQztRQUUxQjs7O1dBR0c7UUFFTSxjQUFTLEdBQThCLElBQUksWUFBWSxFQUFlLENBQUM7UUFLaEYsY0FBYztRQUNHLFdBQU0sR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7UUFFN0MsY0FBYztRQUNHLGdCQUFXLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0tBeUNyRDtJQXZDRyxjQUFjO0lBRWQsUUFBUSxDQUFDLEtBQVk7UUFDakIsSUFBSSxJQUFJLENBQUMsaUJBQWlCLEVBQUU7WUFDeEIsT0FBTztTQUNWO1FBRUQsSUFBSSxRQUFpQyxDQUFDO1FBQ3RDLE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxNQUFxQixDQUFDO1FBQzNDLE1BQU0sUUFBUSxHQUFrQixJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUM7UUFDbkUsTUFBTSxDQUFDLFVBQVUsQ0FBQyxHQUFHLFFBQVEsQ0FBQztRQUM5QixNQUFNLGNBQWMsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDO1FBQ3ZDLE1BQU0sZUFBZSxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUM7UUFDekMsTUFBTSxlQUFlLEdBQUcsTUFBTSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsWUFBWSxHQUFHLENBQUMsTUFBTSxDQUFDLFNBQVMsR0FBRyxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUM7UUFFekcsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLGNBQWMsRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUNyQyxNQUFNLE9BQU8sR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDNUIsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLGlCQUFpQixFQUFFLEtBQUssT0FBTyxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLEVBQUU7Z0JBQ2pHLElBQUksT0FBTyxDQUFDLFNBQVMsR0FBRyxlQUFlLElBQUksZUFBZSxHQUFHLE1BQU0sQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLGFBQWEsRUFBRTtvQkFDbkcsUUFBUSxHQUFHLE9BQU8sQ0FBQztpQkFDdEI7YUFDSjtTQUNKO1FBRUQsSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksUUFBUSxLQUFLLElBQUksQ0FBQyxjQUFjLEVBQUU7WUFDbEUsSUFBSSxDQUFDLGNBQWMsR0FBRyxRQUFRLENBQUM7WUFDL0IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1NBQzVDO0lBQ0wsQ0FBQztJQUVELGNBQWM7SUFDZCxRQUFRO1FBQ0oscUVBQXFFO1FBQ3JFLGdCQUFnQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDO2FBQ3RDLElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLEVBQUUsa0JBQWtCLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO2FBQzVELFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDWixJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxFQUFXLENBQUMsQ0FBQztRQUNsRSxDQUFDLENBQUMsQ0FBQztJQUNYLENBQUM7OEdBeEZRLGtCQUFrQjtrR0FBbEIsa0JBQWtCOzsyRkFBbEIsa0JBQWtCO2tCQUo5QixTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSxlQUFlO29CQUN6QixVQUFVLEVBQUUsSUFBSTtpQkFDbkI7OEJBTUcsV0FBVztzQkFEVixLQUFLO2dCQU9OLFNBQVM7c0JBRFIsS0FBSztnQkFTTixhQUFhO3NCQURaLEtBQUs7Z0JBUU4sWUFBWTtzQkFEWCxLQUFLO2dCQU9OLGlCQUFpQjtzQkFEaEIsS0FBSztnQkFRRyxTQUFTO3NCQURqQixNQUFNO2dCQWNQLFFBQVE7c0JBRFAsWUFBWTt1QkFBQyxRQUFRLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIERlc3Ryb3lSZWYsXG4gICAgRGlyZWN0aXZlLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIEhvc3RMaXN0ZW5lcixcbiAgICBJbnB1dCxcbiAgICBPbkluaXQsXG4gICAgT3V0cHV0LFxuICAgIGluamVjdFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7IHJlc2l6ZU9ic2VydmFibGUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2Nkay91dGlscyc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUgfSBmcm9tICdyeGpzJztcblxuLyoqXG4gKiBBIGRpcmVjdGl2ZSBkZXNpZ25lZCB0byBoZWxwIG5hdmlnYXRpb24gZWxlbWVudHMgZGV0ZXJtaW5lIHRoZSBlbGVtZW50IGN1cnJlbnRseSBpbiB2aWV3IG9mIHRoZSB1c2VyLlxuICovXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1tmZFNjcm9sbFNweV0nLFxuICAgIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgU2Nyb2xsU3B5RGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0IHtcbiAgICAvKipcbiAgICAgKiBBbiBhcnJheSBvZiB0YWdzIHRvIHRyYWNrLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgdHJhY2tlZFRhZ3M6IHN0cmluZ1tdID0gW107XG5cbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIGV2ZW50cyBhcmUgc3RpbGwgZmlyZWQgaWYgdGhlcmUgaXMgbm8gdGFnIHByZXNlbnQgb24gdGhlIHVzZXIncyBzY3JlZW4uXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBmaXJlRW1wdHkgPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIEEgbnVtYmVyIHRoYXQgcmVwcmVzZW50IGF0IHdoYXQgbG9jYXRpb24gaW4gdGhlIGNvbnRhaW5lciB0aGUgZXZlbnQgaXMgZmlyZWQuXG4gICAgICogMC41IHdvdWxkIGZpcmUgdGhlIGV2ZW50cyBpbiB0aGUgbWlkZGxlIG9mIHRoZSBjb250YWluZXIsXG4gICAgICogMCBmb3IgdGhlIHRvcCBhbmQgMSBmb3IgdGhlIGJvdHRvbS5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHRhcmdldFBlcmNlbnQgPSAwO1xuXG4gICAgLyoqXG4gICAgICogTnVtYmVyIHRoYXQgcmVwcmVzZW50cyB0aGUgb2Zmc2V0IGluIHBpeGVscyBmb3IgZmlyZWQgdGFyZ2V0LiBgMTAwYCB2YWx1ZSBtZWFucyB0aGF0IHRoZSBldmVudCB3aWxsIGJlIGZpcmVkIGZvclxuICAgICAqIHRhcmdldCB0aGF0IGlzIDEwMCBwaXhlbHMgYmVsb3cgdGhlIHNweSBjb250YWluZXIuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICB0YXJnZXRPZmZzZXQgPSAwO1xuXG4gICAgLyoqXG4gICAgICogV2hldGhlciB0byBkaXNhYmxlIHNjcm9sbCBzcHlcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHNjcm9sbFNweURpc2FibGVkID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBFdmVudCBmaXJlZCBvbiB0aGUgc2Nyb2xsIGVsZW1lbnQgd2hlbiBhIG5ldyBpdGVtIGJlY29tZXMgYWN0aXZhdGVkIGJ5IHRoZSBzY3JvbGxzcHkgLlxuICAgICAqIFRoZSByZXR1cm5lZCB2YWx1ZSBpcyB0aGUgSFRNTEVsZW1lbnQgaXRzZWxmLlxuICAgICAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHJlYWRvbmx5IHNweUNoYW5nZTogRXZlbnRFbWl0dGVyPEhUTUxFbGVtZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8SFRNTEVsZW1lbnQ+KCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2N1cnJlbnRBY3RpdmU6IEhUTUxFbGVtZW50IHwgdW5kZWZpbmVkO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IF9lbFJlZiA9IGluamVjdChFbGVtZW50UmVmKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBfZGVzdHJveVJlZiA9IGluamVjdChEZXN0cm95UmVmKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQEhvc3RMaXN0ZW5lcignc2Nyb2xsJywgWyckZXZlbnQnXSlcbiAgICBvblNjcm9sbChldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuc2Nyb2xsU3B5RGlzYWJsZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBzcGllZFRhZzogSFRNTEVsZW1lbnQgfCB1bmRlZmluZWQ7XG4gICAgICAgIGNvbnN0IHRhcmdldCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudDtcbiAgICAgICAgY29uc3QgY2hpbGRyZW46IEhUTUxFbGVtZW50W10gPSB0aGlzLl9lbFJlZi5uYXRpdmVFbGVtZW50LmNoaWxkcmVuO1xuICAgICAgICBjb25zdCBbZmlyc3RDaGlsZF0gPSBjaGlsZHJlbjtcbiAgICAgICAgY29uc3QgY2hpbGRyZW5MZW5ndGggPSBjaGlsZHJlbi5sZW5ndGg7XG4gICAgICAgIGNvbnN0IHRhcmdldFNjcm9sbFRvcCA9IHRhcmdldC5zY3JvbGxUb3A7XG4gICAgICAgIGNvbnN0IHRhcmdldE9mZnNldFRvcCA9IHRhcmdldC5vZmZzZXRUb3AgKyB0aGlzLnRhcmdldE9mZnNldCAtICh0YXJnZXQub2Zmc2V0VG9wIC0gZmlyc3RDaGlsZC5vZmZzZXRUb3ApO1xuXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY2hpbGRyZW5MZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgY29uc3QgZWxlbWVudCA9IGNoaWxkcmVuW2ldO1xuICAgICAgICAgICAgaWYgKHRoaXMudHJhY2tlZFRhZ3Muc29tZSgodGFnKSA9PiB0YWcudG9Mb2NhbGVVcHBlckNhc2UoKSA9PT0gZWxlbWVudC50YWdOYW1lLnRvTG9jYWxlVXBwZXJDYXNlKCkpKSB7XG4gICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQub2Zmc2V0VG9wIC0gdGFyZ2V0T2Zmc2V0VG9wIDw9IHRhcmdldFNjcm9sbFRvcCArIHRhcmdldC5vZmZzZXRIZWlnaHQgKiB0aGlzLnRhcmdldFBlcmNlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgc3BpZWRUYWcgPSBlbGVtZW50O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmICgoc3BpZWRUYWcgfHwgdGhpcy5maXJlRW1wdHkpICYmIHNwaWVkVGFnICE9PSB0aGlzLl9jdXJyZW50QWN0aXZlKSB7XG4gICAgICAgICAgICB0aGlzLl9jdXJyZW50QWN0aXZlID0gc3BpZWRUYWc7XG4gICAgICAgICAgICB0aGlzLnNweUNoYW5nZS5lbWl0KHRoaXMuX2N1cnJlbnRBY3RpdmUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgLy8gV2hlbiB0aGUgc3B5IGNvbnRhaW5lciBiZWluZyByZXNpemVkLCByZS1ldmFsdWF0ZSBzY3JvbGwgcG9zaXRpb24uXG4gICAgICAgIHJlc2l6ZU9ic2VydmFibGUodGhpcy5fZWxSZWYubmF0aXZlRWxlbWVudClcbiAgICAgICAgICAgIC5waXBlKGRlYm91bmNlVGltZSgzMCksIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLl9kZXN0cm95UmVmKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMub25TY3JvbGwoeyB0YXJnZXQ6IHRoaXMuX2VsUmVmLm5hdGl2ZUVsZW1lbnQgfSBhcyBFdmVudCk7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG59XG4iXX0=
@@ -59,6 +59,8 @@ export class TabListComponent {
59
59
  this.visibleItemsCount = new EventEmitter();
60
60
  /** Event emitted when hidden items count has been changed. */
61
61
  this.hiddenItemsCount = new EventEmitter();
62
+ /** @hidden Collection of tabs in original order */
63
+ this._tabArray = [];
62
64
  /** @hidden Whether to disable scroll spy */
63
65
  this._disableScrollSpy = false;
64
66
  /** @hidden */
@@ -147,7 +149,7 @@ export class TabListComponent {
147
149
  /** @hidden */
148
150
  _listenOnTabPanelsAndUpdateStorageStructures() {
149
151
  this._tabPanelsChange$
150
- .pipe(map((tabPanels) => tabPanels.map((el) => new TabInfo(el))), takeUntilDestroyed(this._destroyRef))
152
+ .pipe(map((tabPanels) => tabPanels.map((el) => this._tabArray?.find((tabInfo) => tabInfo.panel === el) || new TabInfo(el))), takeUntilDestroyed(this._destroyRef))
151
153
  .subscribe((tabs) => {
152
154
  this._tabArray = tabs;
153
155
  });
@@ -349,4 +351,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.7", ngImpor
349
351
  type: ViewChild,
350
352
  args: [OverflowLayoutComponent]
351
353
  }] } });
352
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiLWxpc3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvdGFicy90YWItbGlzdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvc3JjL2xpYi90YWJzL3RhYi1saXN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDckQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxZQUFZLEVBQUUsZUFBZSxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekcsT0FBTyxFQUdILHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULGVBQWUsRUFDZixVQUFVLEVBQ1YsVUFBVSxFQUNWLFlBQVksRUFDWixLQUFLLEVBRUwsTUFBTSxFQUNOLFNBQVMsRUFDVCxTQUFTLEVBQ1QsWUFBWSxFQUNaLGlCQUFpQixFQUNqQixVQUFVLEVBQ2IsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDaEUsT0FBTyxFQUFFLE9BQU8sRUFBWSxTQUFTLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMxRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsK0JBQStCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUNoSCxPQUFPLEVBQ0gsYUFBYSxFQUNiLHdCQUF3QixFQUN4QixpQkFBaUIsRUFDakIsa0JBQWtCLEVBQ2xCLG9CQUFvQixFQUN2QixNQUFNLDRCQUE0QixDQUFDO0FBQ3BDLE9BQU8sRUFDSCx1QkFBdUIsRUFDdkIsd0JBQXdCLEVBQ3hCLHVCQUF1QixFQUN2QixvQ0FBb0MsRUFDcEMsMkJBQTJCLEVBQzlCLE1BQU0sdUNBQXVDLENBQUM7QUFDL0MsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDdEUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDckUsT0FBTyxFQUFjLE9BQU8sRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMzRSxPQUFPLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDL0YsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFDckYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDakUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFFakUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3BFLE9BQU8sRUFDSCxpQkFBaUIsRUFDakIseUJBQXlCLEVBQ3pCLGtCQUFrQixFQUNsQixnQkFBZ0IsRUFDaEIsaUJBQWlCLEVBQ2pCLG1CQUFtQixFQUNuQix1QkFBdUIsRUFDdkIscUJBQXFCLEVBQ3JCLGVBQWUsRUFDbEIsTUFBTSw0QkFBNEIsQ0FBQztBQUNwQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7OztBQU1yRDs7R0FFRztBQW9ESCxNQUFNLE9BQU8sZ0JBQWdCO0lBNkZ6QixjQUFjO0lBQ2QsSUFBSSxnQkFBZ0I7UUFDaEIsT0FBTyxJQUFJLENBQUMsVUFBVSxFQUFFLFVBQVUsQ0FBQztJQUN2QyxDQUFDO0lBb0JELGNBQWM7SUFDZCxZQUNxQixrQkFBcUMsRUFDOUMsTUFBa0IsRUFDakIsdUJBQStDLEVBQ3ZDLFdBQXVCO1FBSHZCLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBbUI7UUFDOUMsV0FBTSxHQUFOLE1BQU0sQ0FBWTtRQUNqQiw0QkFBdUIsR0FBdkIsdUJBQXVCLENBQXdCO1FBQ3ZDLGdCQUFXLEdBQVgsV0FBVyxDQUFZO1FBeEg1QyxxSEFBcUg7UUFFckgsU0FBSSxHQUFhLEdBQUcsQ0FBQztRQVNyQixzRUFBc0U7UUFFdEUscUJBQWdCLEdBQUcsSUFBSSxDQUFDO1FBRXhCO3FFQUM2RDtRQUU3RCxtQkFBYyxHQUFHLFFBQVEsQ0FBQztRQUUxQix1RUFBdUU7UUFFdkUsaUJBQVksR0FBRyxLQUFLLENBQUM7UUFFckIsb0NBQW9DO1FBRXBDLHFCQUFnQixHQUFHLE1BQU0sQ0FBQztRQUUxQixzRUFBc0U7UUFFdEUsb0JBQWUsR0FBRyxLQUFLLENBQUM7UUFNeEIsNEhBQTRIO1FBRTVILDhCQUF5QixHQUFHLEtBQUssQ0FBQztRQUVsQywyRkFBMkY7UUFFM0YsK0JBQTBCLEdBQUcsSUFBSSxDQUFDO1FBRWxDLHFEQUFxRDtRQUVyRCxzQkFBaUIsR0FBRyxJQUFJLFlBQVksRUFBcUIsQ0FBQztRQUUxRCwyREFBMkQ7UUFFM0QsMkJBQXNCLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUVwRCwrREFBK0Q7UUFFL0Qsc0JBQWlCLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUUvQyw4REFBOEQ7UUFFOUQscUJBQWdCLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQTBDOUMsNENBQTRDO1FBQzVDLHNCQUFpQixHQUFHLEtBQUssQ0FBQztRQUUxQixjQUFjO1FBQ2QsVUFBSyxHQUFHLElBQUksQ0FBQztRQUViLHNFQUFzRTtRQUM3RCxnQkFBVyxHQUFvQixJQUFJLE9BQU8sRUFBVSxDQUFDO1FBRTlELDREQUE0RDtRQUNuRCw0QkFBdUIsR0FBa0IsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQUV0RSxjQUFjO1FBQ04sbUJBQWMsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO0lBUXpDLENBQUM7SUFFSixjQUFjO0lBQ2Qsa0JBQWtCO1FBQ2QsSUFBSSxDQUFDLDhCQUE4QixFQUFFLENBQUM7SUFDMUMsQ0FBQztJQUVELGNBQWM7SUFDZCxlQUFlO1FBQ1gsSUFBSSxDQUFDLDZCQUE2QixFQUFFLENBQUM7UUFDckMsSUFBSSxDQUFDLGdDQUFnQyxFQUFFLENBQUM7UUFDeEMsSUFBSSxDQUFDLDRDQUE0QyxFQUFFLENBQUM7UUFDcEQsSUFBSSxDQUFDLHlCQUF5QixFQUFFLENBQUM7SUFDckMsQ0FBQztJQUVELGNBQWM7SUFDZCxXQUFXO1FBQ1AsSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUN0QyxDQUFDO0lBRUQsY0FBYztJQUNkLHNCQUFzQixDQUFDLFFBQTJCO1FBQzlDLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ2xELENBQUM7SUFFRCxjQUFjO0lBQ2Qsd0JBQXdCLENBQUMsS0FBb0IsRUFBRSxRQUEyQjtRQUN0RSxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUMsRUFBRTtZQUMzQyxPQUFPO1NBQ1Y7UUFFRCxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDdkIsSUFBSSxDQUFDLHNCQUFzQixDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFFRCxjQUFjO0lBQ2QsaUNBQWlDLENBQUMsUUFBMkI7UUFDekQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtZQUMzQixHQUFHLENBQUMsS0FBSyxDQUFDLGlCQUFpQixHQUFHLEdBQUcsQ0FBQyxLQUFLLEtBQUssUUFBUSxDQUFDO1FBQ3pELENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBRXZDLElBQUksQ0FBQyxlQUFlLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztRQUU1QyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVELGNBQWM7SUFDZCxtQkFBbUIsQ0FBQyxFQUFFLEVBQUUsRUFBZTtRQUNuQyxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLEtBQUssRUFBRSxDQUFDLENBQUM7UUFDdEUsSUFBSSxHQUFHLEVBQUU7WUFDTCxNQUFNLGFBQWEsR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDO1lBQ2pDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQzNDLElBQUksQ0FBQyxhQUFhLEVBQUU7Z0JBQ2hCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7YUFDdEM7U0FDSjtJQUNMLENBQUM7SUFFRCxjQUFjO0lBQ2QsaUJBQWlCLENBQUMsS0FBb0IsRUFBRSxPQUFzQjtRQUMxRCxJQUFJLE9BQU8sQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDLEVBQUU7WUFDMUMsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3ZCLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQztTQUNwQjtJQUNMLENBQUM7SUFFRCxjQUFjO0lBQ2QsSUFBWSxpQkFBaUI7UUFDekIsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQzlCLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQ3pCLEdBQUcsQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxDQUFDLEVBQ3ZDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FDdkMsQ0FBQztJQUNOLENBQUM7SUFFRCxjQUFjO0lBQ04sY0FBYztRQUNsQixJQUFJLElBQUksQ0FBQyxrQkFBa0IsSUFBSSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxXQUFXLENBQUMsRUFBRTtZQUNsRSxJQUFJLENBQUMsa0JBQWtCLENBQUMsYUFBYSxFQUFFLENBQUM7U0FDM0M7SUFDTCxDQUFDO0lBRUQsY0FBYztJQUNOLDhCQUE4QjtRQUNsQyxJQUFJLENBQUMsNENBQTRDLEVBQUUsQ0FBQztJQUN4RCxDQUFDO0lBRUQsa0ZBQWtGO0lBQzFFLDZCQUE2QjtRQUNqQyxJQUFJLENBQUMsaUJBQWlCO2FBQ2pCLElBQUksQ0FDRCxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxFQUMvQixLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQ1Isa0JBQWtCLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUN2QzthQUNBLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FDWixJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FDaEcsQ0FBQztJQUNWLENBQUM7SUFFRCxjQUFjO0lBQ04sNENBQTRDO1FBQ2hELElBQUksQ0FBQyxpQkFBaUI7YUFDakIsSUFBSSxDQUNELEdBQUcsQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsSUFBSSxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUMxRCxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQ3ZDO2FBQ0EsU0FBUyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDaEIsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7UUFDMUIsQ0FBQyxDQUFDLENBQUM7SUFDWCxDQUFDO0lBRUQsY0FBYztJQUNOLGdDQUFnQztRQUNwQyxJQUFJLENBQUMsaUJBQWlCO2FBQ2pCLElBQUksQ0FDRCxHQUFHLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxvQkFBb0IsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDLEVBQ25GLFNBQVMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsU0FBUyxDQUFDLENBQUMsRUFDN0Msa0JBQWtCLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUN2QzthQUNBLFNBQVMsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQzFFLENBQUM7SUFFRCxjQUFjO0lBQ04sNENBQTRDO1FBQ2hELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUM3RSxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQzdELElBQUksR0FBc0IsQ0FBQztZQUUzQixJQUFJLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyx5QkFBeUIsRUFBRTtnQkFDOUMsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFO29CQUNqQixHQUFHLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsRUFBRSxLQUFLLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztpQkFDdEY7Z0JBRUQsSUFBSSxDQUFDLEdBQUcsRUFBRTtvQkFDTixHQUFHLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2lCQUN2RDthQUNKO1lBRUQsSUFBSSxHQUFHLElBQUksU0FBUyxLQUFLLEdBQUcsRUFBRTtnQkFDMUIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO2FBQ3BDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsY0FBYztJQUNOLHlCQUF5QjtRQUM3QixLQUFLLENBQUMsSUFBSSxDQUFDLHVCQUF1QixFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDO2FBQ3RELElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7YUFDMUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFFRCxjQUFjO0lBQ04sbUJBQW1CLENBQUMsUUFBMkIsRUFBRSxNQUFNLEdBQUcsSUFBSTtRQUNsRSxJQUFJLE1BQU0sRUFBRTtZQUNSLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLENBQUM7U0FDakM7UUFDRCxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO1lBQzNCLEdBQUcsQ0FBQyxNQUFNLEdBQUcsR0FBRyxDQUFDLEtBQUssS0FBSyxRQUFRLENBQUM7UUFDeEMsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsY0FBYztJQUNOLHNCQUFzQixDQUFDLFFBQTJCLEVBQUUsTUFBZTtRQUN2RSxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsZUFBZSxJQUFJLENBQUMsTUFBTSxDQUFDO1FBRWpELElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7WUFDM0IsTUFBTSxRQUFRLEdBQUcsR0FBRyxDQUFDLEtBQUssS0FBSyxRQUFRLElBQUksQ0FBQyxRQUFRLENBQUM7WUFFckQsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDNUIsR0FBRyxDQUFDLE1BQU0sR0FBRyxRQUFRLENBQUM7UUFDMUIsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsY0FBYztJQUNOLFVBQVUsQ0FBQyxRQUEyQixFQUFFLE1BQWUsRUFBRSxhQUFhLEdBQUcsSUFBSTtRQUNqRixJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUU7WUFDbkIsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFFBQVEsQ0FBQyxDQUFDO1NBQ3RDO2FBQU07WUFDSCxJQUFJLENBQUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUMsRUFBRTtnQkFDL0MsT0FBTzthQUNWO1lBRUQsSUFBSSxDQUFDLHNCQUFzQixDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUMsQ0FBQztTQUNqRDtRQUVELElBQUksYUFBYSxFQUFFO1lBQ2YsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1NBQ3pCO1FBRUQsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFRCxjQUFjO0lBQ04sY0FBYyxDQUFDLFFBQTJCO1FBQzlDLE1BQU0sWUFBWSxHQUFHLFFBQVEsQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDO1FBQ3ZELE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGFBQWEsQ0FBQztRQUM3RCxNQUFNLGdCQUFnQixHQUFHLFlBQVksQ0FBQyxTQUFTLEdBQUcsZ0JBQWdCLENBQUMsU0FBUyxDQUFDO1FBQzdFLE1BQU0sZ0JBQWdCLEdBQUcsZ0JBQWdCLENBQUMsWUFBWSxHQUFHLGdCQUFnQixDQUFDLFlBQVksQ0FBQztRQUN2RixNQUFNLHFCQUFxQixHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLENBQUM7UUFFcEUsSUFBSSxDQUFDLENBQUMscUJBQXFCLEtBQUssZ0JBQWdCLElBQUksZ0JBQWdCLEdBQUcsZ0JBQWdCLENBQUMsRUFBRTtZQUN0RixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDLENBQUM7WUFDckUsU0FBUyxDQUFDLGdCQUFnQixFQUFFLFFBQVEsQ0FBQztpQkFDaEMsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7aUJBQ3RFLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBQ3ZELFNBQVMsQ0FBQyxnQkFBZ0IsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO1NBQ2pEO1FBRUQsSUFBSSxJQUFJLENBQUMsMEJBQTBCLEVBQUU7WUFDakMsUUFBUSxDQUFDLDJCQUEyQixFQUFFLENBQUM7U0FDMUM7SUFDTCxDQUFDO0lBRUQsb0RBQW9EO0lBQzVDLHFCQUFxQixDQUFDLFFBQTJCLEVBQUUsTUFBZTtRQUN0RSxPQUFPLENBQUMsUUFBUSxDQUFDLFFBQVEsSUFBSSxNQUFNLEtBQUssUUFBUSxDQUFDLFFBQVEsSUFBSSxNQUFNLEtBQUssS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDaEgsQ0FBQztJQUVELGNBQWM7SUFDTixrQkFBa0IsQ0FBQyxRQUEyQjtRQUNsRCxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRXRDLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsS0FBSyxLQUFLLFFBQVEsQ0FBQyxDQUFDO1FBQ2hGLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDNUMsQ0FBQzs4R0E3VlEsZ0JBQWdCO2tHQUFoQixnQkFBZ0IsK25CQTFDZDtZQUNQLCtCQUErQixFQUFFO1lBQ2pDO2dCQUNJLE9BQU8sRUFBRSxjQUFjO2dCQUN2QixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLGdCQUFnQixDQUFDO2FBQ2xEO1NBQ0osdUZBa0dpQyxpQkFBaUIsa0ZBWXhDLHNCQUFzQiwyQkFBVSxVQUFVLDZHQUlmLFVBQVUsMERBSXJDLGtCQUFrQiwwR0FJRixhQUFhLCtEQUk3Qix1QkFBdUIsb0VBeEJwQixnQkFBZ0IsZ0VBSWhCLGdCQUFnQixnREM5TGxDLHE1S0EySEEsbzJrQkRwQ1EsdUJBQXVCLGtRQUN2QixLQUFLLG1IQUNMLHdCQUF3QiwrRkFDeEIsZ0JBQWdCLHFJQUNoQiwyQkFBMkIsMkhBQzNCLGdCQUFnQiwySEFDaEIsb0NBQW9DLG1KQUNwQyxnQkFBZ0Isb0pBQ2hCLElBQUksNkZBQ0osUUFBUSw2RUFDUixZQUFZLHFGQUNaLGtCQUFrQiwyRUFDbEIseUJBQXlCLDBGQUN6QixpQkFBaUIseUVBQ2pCLGdCQUFnQixxRkFDaEIsaUJBQWlCLHlFQUNqQixtQkFBbUIsNkVBQ25CLGVBQWUsOERBQ2YsZUFBZSxxRUFDZix1QkFBdUIsc0ZBQ3ZCLHFCQUFxQixpRkFDckIsdUJBQXVCLGtHQUN2QixzQkFBc0IsMkRBQ3RCLG9CQUFvQix1RkFDcEIsYUFBYSw4T0FDYixpQkFBaUIsNExBQ2pCLHdCQUF3QixrRUFDeEIsa0JBQWtCLDhLQUVsQixrQkFBa0IsbUtBQ2xCLGtCQUFrQjs7MkZBR2IsZ0JBQWdCO2tCQW5ENUIsU0FBUzsrQkFDSSxhQUFhLFFBR2pCO3dCQUNGLEtBQUssRUFBRSxnQkFBZ0I7cUJBQzFCLGlCQUNjLGlCQUFpQixDQUFDLElBQUksbUJBQ3BCLHVCQUF1QixDQUFDLE1BQU0sYUFDcEM7d0JBQ1AsK0JBQStCLEVBQUU7d0JBQ2pDOzRCQUNJLE9BQU8sRUFBRSxjQUFjOzRCQUN2QixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxpQkFBaUIsQ0FBQzt5QkFDbEQ7cUJBQ0osY0FDVyxJQUFJLFdBQ1A7d0JBQ0wsdUJBQXVCO3dCQUN2QixLQUFLO3dCQUNMLHdCQUF3Qjt3QkFDeEIsZ0JBQWdCO3dCQUNoQiwyQkFBMkI7d0JBQzNCLGdCQUFnQjt3QkFDaEIsb0NBQW9DO3dCQUNwQyxnQkFBZ0I7d0JBQ2hCLElBQUk7d0JBQ0osUUFBUTt3QkFDUixZQUFZO3dCQUNaLGtCQUFrQjt3QkFDbEIseUJBQXlCO3dCQUN6QixpQkFBaUI7d0JBQ2pCLGdCQUFnQjt3QkFDaEIsaUJBQWlCO3dCQUNqQixtQkFBbUI7d0JBQ25CLGVBQWU7d0JBQ2YsZUFBZTt3QkFDZix1QkFBdUI7d0JBQ3ZCLHFCQUFxQjt3QkFDckIsdUJBQXVCO3dCQUN2QixzQkFBc0I7d0JBQ3RCLG9CQUFvQjt3QkFDcEIsYUFBYTt3QkFDYixpQkFBaUI7d0JBQ2pCLHdCQUF3Qjt3QkFDeEIsa0JBQWtCO3dCQUNsQixhQUFhO3dCQUNiLGtCQUFrQjt3QkFDbEIsa0JBQWtCO3FCQUNyQjsrTEFLRCxJQUFJO3NCQURILEtBQUs7Z0JBUU4sSUFBSTtzQkFESCxLQUFLO2dCQUtOLGdCQUFnQjtzQkFEZixLQUFLO2dCQU1OLGNBQWM7c0JBRGIsS0FBSztnQkFLTixZQUFZO3NCQURYLEtBQUs7Z0JBS04sZ0JBQWdCO3NCQURmLEtBQUs7Z0JBS04sZUFBZTtzQkFEZCxLQUFLO2dCQUtOLFVBQVU7c0JBRFQsS0FBSztnQkFLTix5QkFBeUI7c0JBRHhCLEtBQUs7Z0JBS04sMEJBQTBCO3NCQUR6QixLQUFLO2dCQUtOLGlCQUFpQjtzQkFEaEIsTUFBTTtnQkFLUCxzQkFBc0I7c0JBRHJCLE1BQU07Z0JBS1AsaUJBQWlCO3NCQURoQixNQUFNO2dCQUtQLGdCQUFnQjtzQkFEZixNQUFNO2dCQUtQLFNBQVM7c0JBRFIsZUFBZTt1QkFBQyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsaUJBQWlCLENBQUM7Z0JBS3BELGNBQWM7c0JBRGIsWUFBWTt1QkFBQyxnQkFBZ0I7Z0JBSzlCLFVBQVU7c0JBRFQsWUFBWTt1QkFBQyxnQkFBZ0I7Z0JBSzlCLGVBQWU7c0JBRGQsU0FBUzt1QkFBQyxzQkFBc0IsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUU7Z0JBS3ZELGVBQWU7c0JBRGQsU0FBUzt1QkFBQyxpQkFBaUIsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUU7Z0JBS2xELFVBQVU7c0JBRFQsU0FBUzt1QkFBQyxrQkFBa0I7Z0JBSzdCLElBQUk7c0JBREgsU0FBUzt1QkFBQyxNQUFNLEVBQUUsRUFBRSxJQUFJLEVBQUUsYUFBYSxFQUFFO2dCQUtsQyxlQUFlO3NCQUR0QixTQUFTO3VCQUFDLHVCQUF1QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVOVEVSLCBTUEFDRSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9rZXljb2Rlcyc7XG5pbXBvcnQgeyBDZGtTY3JvbGxhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xuaW1wb3J0IHsgTmdGb3IsIE5nSWYsIE5nU3dpdGNoLCBOZ1N3aXRjaENhc2UsIE5nU3dpdGNoRGVmYXVsdCwgTmdUZW1wbGF0ZU91dGxldCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICAgIEFmdGVyQ29udGVudEluaXQsXG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgQ29udGVudENoaWxkcmVuLFxuICAgIERlc3Ryb3lSZWYsXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSW5wdXQsXG4gICAgT25EZXN0cm95LFxuICAgIE91dHB1dCxcbiAgICBRdWVyeUxpc3QsXG4gICAgVmlld0NoaWxkLFxuICAgIFZpZXdDaGlsZHJlbixcbiAgICBWaWV3RW5jYXBzdWxhdGlvbixcbiAgICBmb3J3YXJkUmVmXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgS2V5VXRpbCwgTnVsbGFibGUsIHNjcm9sbFRvcCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY2RrL3V0aWxzJztcbmltcG9ydCB7IENvbnRlbnREZW5zaXR5T2JzZXJ2ZXIsIGNvbnRlbnREZW5zaXR5T2JzZXJ2ZXJQcm92aWRlcnMgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvY29udGVudC1kZW5zaXR5JztcbmltcG9ydCB7XG4gICAgTWVudUNvbXBvbmVudCxcbiAgICBNZW51SW50ZXJhY3RpdmVDb21wb25lbnQsXG4gICAgTWVudUl0ZW1Db21wb25lbnQsXG4gICAgTWVudVRpdGxlRGlyZWN0aXZlLFxuICAgIE1lbnVUcmlnZ2VyRGlyZWN0aXZlXG59IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9tZW51JztcbmltcG9ydCB7XG4gICAgT3ZlcmZsb3dFeHBhbmREaXJlY3RpdmUsXG4gICAgT3ZlcmZsb3dJdGVtUmVmRGlyZWN0aXZlLFxuICAgIE92ZXJmbG93TGF5b3V0Q29tcG9uZW50LFxuICAgIE92ZXJmbG93TGF5b3V0Rm9jdXNhYmxlSXRlbURpcmVjdGl2ZSxcbiAgICBPdmVyZmxvd0xheW91dEl0ZW1EaXJlY3RpdmVcbn0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL292ZXJmbG93LWxheW91dCc7XG5pbXBvcnQgeyBTY3JvbGxTcHlEaXJlY3RpdmUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvc2Nyb2xsLXNweSc7XG5pbXBvcnQgeyBTY3JvbGxiYXJEaXJlY3RpdmUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvc2Nyb2xsYmFyJztcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YmplY3QsIFN1YnNjcmlwdGlvbiwgZnJvbUV2ZW50LCBtZXJnZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBkZWxheSwgZmlsdGVyLCBmaXJzdCwgbWFwLCBzdGFydFdpdGgsIHN3aXRjaE1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IFRhYkl0ZW1FeHBhbmRDb21wb25lbnQgfSBmcm9tICcuL3RhYi1pdGVtLWV4cGFuZC90YWItaXRlbS1leHBhbmQuY29tcG9uZW50JztcbmltcG9ydCB7IFRhYkl0ZW1EaXJlY3RpdmUgfSBmcm9tICcuL3RhYi1pdGVtL3RhYi1pdGVtLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBUYWJMaW5rRGlyZWN0aXZlIH0gZnJvbSAnLi90YWItbGluay90YWItbGluay5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgVGFiTGlzdENvbXBvbmVudEludGVyZmFjZSB9IGZyb20gJy4vdGFiLWxpc3QtY29tcG9uZW50LmludGVyZmFjZSc7XG5pbXBvcnQgeyBMSVNUX0NPTVBPTkVOVCB9IGZyb20gJy4vdGFiLWxpc3QudG9rZW4nO1xuaW1wb3J0IHsgVGFiUGFuZWxDb21wb25lbnQgfSBmcm9tICcuL3RhYi1wYW5lbC90YWItcGFuZWwuY29tcG9uZW50JztcbmltcG9ydCB7XG4gICAgVGFiQ291bnREaXJlY3RpdmUsXG4gICAgVGFiQ291bnRlckhlYWRlckRpcmVjdGl2ZSxcbiAgICBUYWJIZWFkZXJEaXJlY3RpdmUsXG4gICAgVGFiSWNvbkNvbXBvbmVudCxcbiAgICBUYWJMYWJlbERpcmVjdGl2ZSxcbiAgICBUYWJQcm9jZXNzRGlyZWN0aXZlLFxuICAgIFRhYlByb2Nlc3NJY29uRGlyZWN0aXZlLFxuICAgIFRhYlNlcGFyYXRvckRpcmVjdGl2ZSxcbiAgICBUYWJUYWdEaXJlY3RpdmVcbn0gZnJvbSAnLi90YWItdXRpbHMvdGFiLWRpcmVjdGl2ZXMnO1xuaW1wb3J0IHsgVGFiSW5mbyB9IGZyb20gJy4vdGFiLXV0aWxzL3RhYi1pbmZvLmNsYXNzJztcblxuZXhwb3J0IHR5cGUgVGFiTW9kZXMgPSAnaWNvbi1vbmx5JyB8ICdwcm9jZXNzJyB8ICdmaWx0ZXInO1xuXG5leHBvcnQgdHlwZSBUYWJTaXplcyA9ICdzJyB8ICdtJyB8ICdsJyB8ICd4bCcgfCAneHhsJztcblxuLyoqXG4gKiBSZXByZXNlbnRzIGEgbGlzdCBvZiB0YWItcGFuZWxzLlxuICovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2ZkLXRhYi1saXN0JyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vdGFiLWxpc3QuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL3RhYi1saXN0LmNvbXBvbmVudC5zY3NzJ10sXG4gICAgaG9zdDoge1xuICAgICAgICBjbGFzczogJ2ZkLXRhYnMtY3VzdG9tJ1xuICAgIH0sXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgY29udGVudERlbnNpdHlPYnNlcnZlclByb3ZpZGVycygpLFxuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBMSVNUX0NPTVBPTkVOVCxcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFRhYkxpc3RDb21wb25lbnQpXG4gICAgICAgIH1cbiAgICBdLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW1xuICAgICAgICBPdmVyZmxvd0xheW91dENvbXBvbmVudCxcbiAgICAgICAgTmdGb3IsXG4gICAgICAgIE92ZXJmbG93SXRlbVJlZkRpcmVjdGl2ZSxcbiAgICAgICAgVGFiSXRlbURpcmVjdGl2ZSxcbiAgICAgICAgT3ZlcmZsb3dMYXlvdXRJdGVtRGlyZWN0aXZlLFxuICAgICAgICBUYWJMaW5rRGlyZWN0aXZlLFxuICAgICAgICBPdmVyZmxvd0xheW91dEZvY3VzYWJsZUl0ZW1EaXJlY3RpdmUsXG4gICAgICAgIE5nVGVtcGxhdGVPdXRsZXQsXG4gICAgICAgIE5nSWYsXG4gICAgICAgIE5nU3dpdGNoLFxuICAgICAgICBOZ1N3aXRjaENhc2UsXG4gICAgICAgIFRhYkhlYWRlckRpcmVjdGl2ZSxcbiAgICAgICAgVGFiQ291bnRlckhlYWRlckRpcmVjdGl2ZSxcbiAgICAgICAgVGFiTGFiZWxEaXJlY3RpdmUsXG4gICAgICAgIFRhYkljb25Db21wb25lbnQsXG4gICAgICAgIFRhYkNvdW50RGlyZWN0aXZlLFxuICAgICAgICBUYWJQcm9jZXNzRGlyZWN0aXZlLFxuICAgICAgICBOZ1N3aXRjaERlZmF1bHQsXG4gICAgICAgIFRhYlRhZ0RpcmVjdGl2ZSxcbiAgICAgICAgVGFiUHJvY2Vzc0ljb25EaXJlY3RpdmUsXG4gICAgICAgIFRhYlNlcGFyYXRvckRpcmVjdGl2ZSxcbiAgICAgICAgT3ZlcmZsb3dFeHBhbmREaXJlY3RpdmUsXG4gICAgICAgIFRhYkl0ZW1FeHBhbmRDb21wb25lbnQsXG4gICAgICAgIE1lbnVUcmlnZ2VyRGlyZWN0aXZlLFxuICAgICAgICBNZW51Q29tcG9uZW50LFxuICAgICAgICBNZW51SXRlbUNvbXBvbmVudCxcbiAgICAgICAgTWVudUludGVyYWN0aXZlQ29tcG9uZW50LFxuICAgICAgICBTY3JvbGxTcHlEaXJlY3RpdmUsXG4gICAgICAgIENka1Njcm9sbGFibGUsXG4gICAgICAgIFNjcm9sbGJhckRpcmVjdGl2ZSxcbiAgICAgICAgTWVudVRpdGxlRGlyZWN0aXZlXG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBUYWJMaXN0Q29tcG9uZW50IGltcGxlbWVudHMgVGFiTGlzdENvbXBvbmVudEludGVyZmFjZSwgQWZ0ZXJDb250ZW50SW5pdCwgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcbiAgICAvKiogU2l6ZSBvZiB0YWIsIGl0J3MgbW9zdGx5IGFib3V0IGFkZGluZyBzcGFjaW5nIG9uIHRhYiBjb250YWluZXIsIGF2YWlsYWJsZSBzaXplcyAncycgfCAnbScgfCAnbCcgfCAneGwnIHwgJ3h4bCcgKi9cbiAgICBASW5wdXQoKVxuICAgIHNpemU6IFRhYlNpemVzID0gJ20nO1xuXG4gICAgLyoqXG4gICAgICogV2hldGhlciB1c2VyIHdhbnRzIHRvIHVzZSB0YWIgY29tcG9uZW50IGluIGNlcnRhaW4gbW9kZS4gTW9kZXMgYXZhaWxhYmxlOlxuICAgICAqICdpY29uLW9ubHknIHwgJ3Byb2Nlc3MnIHwgJ2ZpbHRlcidcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIG1vZGU6IFRhYk1vZGVzO1xuXG4gICAgLyoqIFdoZXRoZXIgdG8gbW92ZSB0YWJzIG92ZXJmbG93aW5nIGluIHRoZSB0YWIgYmFyIHRvIHRoZSBkcm9wZG93biAqL1xuICAgIEBJbnB1dCgpXG4gICAgY29sbGFwc2VPdmVyZmxvdyA9IHRydWU7XG5cbiAgICAvKiogTGltaXRzIHRoZSBtYXhpbXVtIG51bWJlciBvZiB0YWJzIHZpc2libGUgaW4gdGhlIHRhYiBiYXIgaW4gY29sbGFwc2VPdmVyZmxvdyBtb2RlLlxuICAgICAqIE90aGVyIHRhYnMgd2lsbCBiZSBtb3ZlZCB0byB0aGUgY29sbGFwc2VkIHRhYnMgZHJvcGRvd24gKi9cbiAgICBASW5wdXQoKVxuICAgIG1heFZpc2libGVUYWJzID0gSW5maW5pdHk7XG5cbiAgICAvKiogV2hldGhlciB0byBvcGVuIHRhYiBjb250ZW50IG9uZSB1bmRlciBhbm90aGVyIHdpdGhvdXQgY29sbGFwc2luZyAqL1xuICAgIEBJbnB1dCgpXG4gICAgc3RhY2tDb250ZW50ID0gZmFsc2U7XG5cbiAgICAvKiogTWF4aW11bSBoZWlnaHQgb2YgdGhlIGNvbnRlbnQgKi9cbiAgICBASW5wdXQoKVxuICAgIG1heENvbnRlbnRIZWlnaHQgPSAnMTAwJSc7XG5cbiAgICAvKiogV2hldGhlciB0byBlbmFibGUgY29sbGFwc2luZyBleHBhbmRlZCB0YWIgb24gZXhwYW5kZWQgdGFiIGNsaWNrICovXG4gICAgQElucHV0KClcbiAgICBjb2xsYXBzaWJsZVRhYnMgPSBmYWxzZTtcblxuICAgIC8qKiBJbml0aWFsbHkgc2VsZWN0ZWQgdGFiIChieSBpZCkuIEZpcnN0IG5vdCBkaXNhYmxlZCBvbmUgaWYgbm90IHNwZWNpZmllZC4gKi9cbiAgICBASW5wdXQoKVxuICAgIGRlZmF1bHRUYWI6IE51bGxhYmxlPHN0cmluZz47XG5cbiAgICAvKiogV2hldGhlciB0byB0cnkgdG8ga2VlcCBzZWxlY3RlZCB0YWIgKGRlZmF1bHQgdmFsdWUpIG9uIHRhYnMgY2hhbmdlIG9yIHRvIHNlbGVjdCBkZWZhdWx0IG9uZSAoZmlyc3QgaWYgbm90IHNwZWNpZmllZCkuICovXG4gICAgQElucHV0KClcbiAgICBzZWxlY3REZWZhdWx0T25UYWJzQ2hhbmdlID0gZmFsc2U7XG5cbiAgICAvKiogV2hldGhlciB0byBmb2N1cyB0aGUgZmlyc3QgZm9jdXNhYmxlIGVsZW1lbnQgaW4gYSB0YWIgcGFuZWwgd2hlbiB1c2luZyBzdGFja2VkIHRhYnMuICovXG4gICAgQElucHV0KClcbiAgICBmb2N1c0ZpcnN0Rm9jdXNhYmxlRWxlbWVudCA9IHRydWU7XG5cbiAgICAvKiogRXZlbnQgZW1pdHRlZCB3aGVuIHRoZSBzZWxlY3RlZCBwYW5lbCBjaGFuZ2VzLiAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHNlbGVjdGVkVGFiQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxUYWJQYW5lbENvbXBvbmVudD4oKTtcblxuICAgIC8qKiBFdmVudCBlbWl0dGVkIHdoZW4gdGhlIHNlbGVjdGVkIHBhbmVsIGluZGV4IGNoYW5nZXMuICovXG4gICAgQE91dHB1dCgpXG4gICAgc2VsZWN0ZWRUYWJJbmRleENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xuXG4gICAgLyoqIEV2ZW50IGVtaXR0ZWQgd2hlbiB2aXNpYmxlIGl0ZW1zIGNvdW50IGhhcyBiZWVuIGNoYW5nZWQuICovXG4gICAgQE91dHB1dCgpXG4gICAgdmlzaWJsZUl0ZW1zQ291bnQgPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcblxuICAgIC8qKiBFdmVudCBlbWl0dGVkIHdoZW4gaGlkZGVuIGl0ZW1zIGNvdW50IGhhcyBiZWVuIGNoYW5nZWQuICovXG4gICAgQE91dHB1dCgpXG4gICAgaGlkZGVuSXRlbXNDb3VudCA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAQ29udGVudENoaWxkcmVuKGZvcndhcmRSZWYoKCkgPT4gVGFiUGFuZWxDb21wb25lbnQpKVxuICAgIHRhYlBhbmVsczogUXVlcnlMaXN0PFRhYlBhbmVsQ29tcG9uZW50PjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQFZpZXdDaGlsZHJlbihUYWJMaW5rRGlyZWN0aXZlKVxuICAgIHRhYkhlYWRlckxpbmtzOiBRdWVyeUxpc3Q8VGFiTGlua0RpcmVjdGl2ZT47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBWaWV3Q2hpbGRyZW4oVGFiSXRlbURpcmVjdGl2ZSlcbiAgICB0YWJIZWFkZXJzOiBRdWVyeUxpc3Q8VGFiSXRlbURpcmVjdGl2ZT47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBWaWV3Q2hpbGQoVGFiSXRlbUV4cGFuZENvbXBvbmVudCwgeyByZWFkOiBFbGVtZW50UmVmIH0pXG4gICAgb3ZlcmZsb3dUcmlnZ2VyOiBFbGVtZW50UmVmO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAVmlld0NoaWxkKCdoZWFkZXJDb250YWluZXInLCB7IHJlYWQ6IEVsZW1lbnRSZWYgfSlcbiAgICBoZWFkZXJDb250YWluZXI6IEVsZW1lbnRSZWY7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBWaWV3Q2hpbGQoU2Nyb2xsYmFyRGlyZWN0aXZlKVxuICAgIF9zY3JvbGxiYXI6IFNjcm9sbGJhckRpcmVjdGl2ZTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQFZpZXdDaGlsZCgnbWVudScsIHsgcmVhZDogTWVudUNvbXBvbmVudCB9KVxuICAgIG1lbnU6IE1lbnVDb21wb25lbnQ7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBWaWV3Q2hpbGQoT3ZlcmZsb3dMYXlvdXRDb21wb25lbnQpXG4gICAgcHJpdmF0ZSBfb3ZlcmZsb3dMYXlvdXQ6IE92ZXJmbG93TGF5b3V0Q29tcG9uZW50O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBnZXQgY29udGVudENvbnRhaW5lcigpOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9zY3JvbGxiYXI/LmVsZW1lbnRSZWY7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gQ29sbGVjdGlvbiBvZiB0YWJzIGluIG9yaWdpbmFsIG9yZGVyICovXG4gICAgX3RhYkFycmF5OiBUYWJJbmZvW107XG5cbiAgICAvKiogQGhpZGRlbiBXaGV0aGVyIHRvIGRpc2FibGUgc2Nyb2xsIHNweSAqL1xuICAgIF9kaXNhYmxlU2Nyb2xsU3B5ID0gZmFsc2U7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9pbml0ID0gdHJ1ZTtcblxuICAgIC8qKiBFdmVudCBpcyB0aHJvd24gYWx3YXlzIHdoZW4gdGFiIGlzIHNlbGVjdGVkIGJ5IGtleWJvYXJkIGFjdGlvbnMgKi9cbiAgICByZWFkb25seSB0YWJTZWxlY3RlZDogU3ViamVjdDxudW1iZXI+ID0gbmV3IFN1YmplY3Q8bnVtYmVyPigpO1xuXG4gICAgLyoqIEV2ZW50IGlzIHRocm93biBhbHdheXMsIHdoZW4gc29tZSBwcm9wZXJ0eSBpcyBjaGFuZ2VkICovXG4gICAgcmVhZG9ubHkgdGFiUGFuZWxQcm9wZXJ0eUNoYW5nZWQ6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9zdWJzY3JpcHRpb25zID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBfY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICBwcml2YXRlIF9lbFJlZjogRWxlbWVudFJlZixcbiAgICAgICAgcmVhZG9ubHkgX2NvbnRlbnREZW5zaXR5T2JzZXJ2ZXI6IENvbnRlbnREZW5zaXR5T2JzZXJ2ZXIsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgX2Rlc3Ryb3lSZWY6IERlc3Ryb3lSZWZcbiAgICApIHt9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nQWZ0ZXJDb250ZW50SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fc2V0dXBUYWJQYW5lbHNDaGFuZ2VMaXN0ZW5lcnMoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5faW5pdFN0YWNrQ29udGVudFN1YnNjcmlwdGlvbigpO1xuICAgICAgICB0aGlzLl9saXN0ZW5PblRhYlBhbmVsc0V4cGFuZGVkQ2hhbmdlKCk7XG4gICAgICAgIHRoaXMuX2xpc3Rlbk9uVGFiUGFuZWxzQW5kSW5pdGlhbGx5RXhwYW5kVGFiUGFuZWwoKTtcbiAgICAgICAgdGhpcy5fbGlzdGVuT25Qcm9wZXJ0aWVzQ2hhbmdlKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fc3Vic2NyaXB0aW9ucy51bnN1YnNjcmliZSgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3RhYkhlYWRlckNsaWNrSGFuZGxlcih0YWJQYW5lbDogVGFiUGFuZWxDb21wb25lbnQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fZXhwYW5kVGFiKHRhYlBhbmVsLCAhdGFiUGFuZWwuZXhwYW5kZWQpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3RhYkhlYWRlcktleWRvd25IYW5kbGVyKGV2ZW50OiBLZXlib2FyZEV2ZW50LCB0YWJQYW5lbDogVGFiUGFuZWxDb21wb25lbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKCFLZXlVdGlsLmlzS2V5Q29kZShldmVudCwgW0VOVEVSLCBTUEFDRV0pKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB0aGlzLl90YWJIZWFkZXJDbGlja0hhbmRsZXIodGFiUGFuZWwpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX292ZXJmbG93aW5nVGFiSGVhZGVyQ2xpY2tIYW5kbGVyKHRhYlBhbmVsOiBUYWJQYW5lbENvbXBvbmVudCk6IHZvaWQge1xuICAgICAgICB0aGlzLl90YWJBcnJheS5mb3JFYWNoKCh0YWIpID0+IHtcbiAgICAgICAgICAgIHRhYi5wYW5lbC5fZm9yY2VkVmlzaWJpbGl0eSA9IHRhYi5wYW5lbCA9PT0gdGFiUGFuZWw7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuX2V4cGFuZFRhYih0YWJQYW5lbCwgdHJ1ZSwgZmFsc2UpO1xuXG4gICAgICAgIHRoaXMuX292ZXJmbG93TGF5b3V0LnRyaWdnZXJSZWNhbGN1bGF0aW9uKCk7XG5cbiAgICAgICAgdGhpcy5fZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2hpZ2hsaWdodEFjdGl2ZVRhYih7IGlkIH06IEhUTUxFbGVtZW50KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHRhYiA9IHRoaXMuX3RhYkFycmF5LmZpbmQoKF90YWIpID0+IF90YWIucGFuZWwuX3BhbmVsSWQgPT09IGlkKTtcbiAgICAgICAgaWYgKHRhYikge1xuICAgICAgICAgICAgY29uc3QgX3RhYldhc0FjdGl2ZSA9IHRhYi5hY3RpdmU7XG4gICAgICAgICAgICB0aGlzLl9hY3RpdmF0ZVN0YWNrZWRUYWIodGFiLnBhbmVsLCBmYWxzZSk7XG4gICAgICAgICAgICBpZiAoIV90YWJXYXNBY3RpdmUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9zZWxlY3RlZFRhYkNoYW5nZSh0YWIucGFuZWwpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfb25UcmlnZ2VyS2V5ZG93bihldmVudDogS2V5Ym9hcmRFdmVudCwgbWVudVJlZjogTWVudUNvbXBvbmVudCk6IHZvaWQge1xuICAgICAgICBpZiAoS2V5VXRpbC5pc0tleUNvZGUoZXZlbnQsIFtFTlRFUiwgU1BBQ0VdKSkge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIG1lbnVSZWYudG9nZ2xlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgZ2V0IF90YWJQYW5lbHNDaGFuZ2UkKCk6IE9ic2VydmFibGU8VGFiUGFuZWxDb21wb25lbnRbXT4ge1xuICAgICAgICByZXR1cm4gdGhpcy50YWJQYW5lbHMuY2hhbmdlcy5waXBlKFxuICAgICAgICAgICAgc3RhcnRXaXRoKHRoaXMudGFiUGFuZWxzKSxcbiAgICAgICAgICAgIG1hcCgodGFiUGFuZWxzKSA9PiB0YWJQYW5lbHMudG9BcnJheSgpKSxcbiAgICAgICAgICAgIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLl9kZXN0cm95UmVmKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZGV0ZWN0Q2hhbmdlcygpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuX2NoYW5nZURldGVjdG9yUmVmICYmICF0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZlsnZGVzdHJveWVkJ10pIHtcbiAgICAgICAgICAgIHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfc2V0dXBUYWJQYW5lbHNDaGFuZ2VMaXN0ZW5lcnMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2xpc3Rlbk9uVGFiUGFuZWxzQW5kVXBkYXRlU3RvcmFnZVN0cnVjdHVyZXMoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBTZXR1cCBtZWNoYW5pc21zIHJlcXVpcmVkIGZvciBoYW5kbGluZyB0aGUgc3RhY2tlZCBjb250ZW50IGJlaGF2aW9yICovXG4gICAgcHJpdmF0ZSBfaW5pdFN0YWNrQ29udGVudFN1YnNjcmlwdGlvbigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fdGFiUGFuZWxzQ2hhbmdlJFxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgZmlsdGVyKCgpID0+IHRoaXMuc3RhY2tDb250ZW50KSxcbiAgICAgICAgICAgICAgICBkZWxheSgwKSxcbiAgICAgICAgICAgICAgICB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5fZGVzdHJveVJlZilcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT5cbiAgICAgICAgICAgICAgICB0aGlzLl90YWJBcnJheS5maWx0ZXIoKHRhYikgPT4gIXRhYi5wYW5lbC5kaXNhYmxlZCkuZm9yRWFjaCgodGFiKSA9PiB0YWIucGFuZWwuX2V4cGFuZCh0cnVlKSlcbiAgICAgICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9saXN0ZW5PblRhYlBhbmVsc0FuZFVwZGF0ZVN0b3JhZ2VTdHJ1Y3R1cmVzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl90YWJQYW5lbHNDaGFuZ2UkXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBtYXAoKHRhYlBhbmVscykgPT4gdGFiUGFuZWxzLm1hcCgoZWwpID0+IG5ldyBUYWJJbmZvKGVsKSkpLFxuICAgICAgICAgICAgICAgIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLl9kZXN0cm95UmVmKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgodGFicykgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuX3RhYkFycmF5ID0gdGFicztcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfbGlzdGVuT25UYWJQYW5lbHNFeHBhbmRlZENoYW5nZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fdGFiUGFuZWxzQ2hhbmdlJFxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgbWFwKCh0YWJQYW5lbHMpID0+IHRhYlBhbmVscy5tYXAoKHRhYikgPT4gdGFiLl9leHBhbmRlZFN0YXRlQ2hhbmdlLmFzT2JzZXJ2YWJsZSgpKSksXG4gICAgICAgICAgICAgICAgc3dpdGNoTWFwKCh0YWJQYW5lbHMpID0+IG1lcmdlKC4uLnRhYlBhbmVscykpLFxuICAgICAgICAgICAgICAgIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLl9kZXN0cm95UmVmKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoZXZlbnQpID0+IHRoaXMuX2V4cGFuZFRhYihldmVudC50YXJnZXQsIGV2ZW50LnN0YXRlKSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9saXN0ZW5PblRhYlBhbmVsc0FuZEluaXRpYWxseUV4cGFuZFRhYlBhbmVsKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl90YWJQYW5lbHNDaGFuZ2UkLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuX2Rlc3Ryb3lSZWYpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgYWN0aXZlVGFiID0gdGhpcy5fdGFiQXJyYXkuZmluZCgoX3RhYikgPT4gX3RhYi5hY3RpdmUpO1xuICAgICAgICAgICAgbGV0IHRhYjogTnVsbGFibGU8VGFiSW5mbz47XG5cbiAgICAgICAgICAgIGlmICghYWN0aXZlVGFiIHx8IHRoaXMuc2VsZWN0RGVmYXVsdE9uVGFic0NoYW5nZSkge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmRlZmF1bHRUYWIpIHtcbiAgICAgICAgICAgICAgICAgICAgdGFiID0gdGhpcy5fdGFiQXJyYXkuZmluZCgoX3RhYikgPT4gIV90YWIuZGlzYWJsZWQgJiYgX3RhYi5pZCA9PT0gdGhpcy5kZWZhdWx0VGFiKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoIXRhYikge1xuICAgICAgICAgICAgICAgICAgICB0YWIgPSB0aGlzLl90YWJBcnJheS5maW5kKChfdGFiKSA9PiAhX3RhYi5kaXNhYmxlZCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAodGFiICYmIGFjdGl2ZVRhYiAhPT0gdGFiKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZXhwYW5kVGFiKHRhYi5wYW5lbCwgdHJ1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfbGlzdGVuT25Qcm9wZXJ0aWVzQ2hhbmdlKCk6IHZvaWQge1xuICAgICAgICBtZXJnZSh0aGlzLnRhYlBhbmVsUHJvcGVydHlDaGFuZ2VkLCB0aGlzLnRhYlBhbmVscy5jaGFuZ2VzKVxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuX2Rlc3Ryb3lSZWYpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB0aGlzLl9kZXRlY3RDaGFuZ2VzKCkpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfYWN0aXZhdGVTdGFja2VkVGFiKHRhYlBhbmVsOiBUYWJQYW5lbENvbXBvbmVudCwgc2Nyb2xsID0gdHJ1ZSk6IHZvaWQge1xuICAgICAgICBpZiAoc2Nyb2xsKSB7XG4gICAgICAgICAgICB0aGlzLl9zY3JvbGxUb1BhbmVsKHRhYlBhbmVsKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl90YWJBcnJheS5mb3JFYWNoKCh0YWIpID0+IHtcbiAgICAgICAgICAgIHRhYi5hY3RpdmUgPSB0YWIucGFuZWwgPT09IHRhYlBhbmVsO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2FjdGl2YXRlRXhwYW5kYWJsZVRhYih0YWJQYW5lbDogVGFiUGFuZWxDb21wb25lbnQsIGV4cGFuZDogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICBjb25zdCBjb2xsYXBzZSA9IHRoaXMuY29sbGFwc2libGVUYWJzICYmICFleHBhbmQ7XG5cbiAgICAgICAgdGhpcy5fdGFiQXJyYXkuZm9yRWFjaCgodGFiKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBpc0FjdGl2ZSA9IHRhYi5wYW5lbCA9PT0gdGFiUGFuZWwgJiYgIWNvbGxhcHNlO1xuXG4gICAgICAgICAgICB0YWIucGFuZWwuX2V4cGFuZChpc0FjdGl2ZSk7XG4gICAgICAgICAgICB0YWIuYWN0aXZlID0gaXNBY3RpdmU7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZXhwYW5kVGFiKHRhYlBhbmVsOiBUYWJQYW5lbENvbXBvbmVudCwgZXhwYW5kOiBib29sZWFuLCBkZXRlY3RDaGFuZ2VzID0gdHJ1ZSk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5zdGFja0NvbnRlbnQpIHtcbiAgICAgICAgICAgIHRoaXMuX2FjdGl2YXRlU3RhY2tlZFRhYih0YWJQYW5lbCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoIXRoaXMuX2NhbkNoYW5nZUV4cGFuZFN0YXRlKHRhYlBhbmVsLCBleHBhbmQpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLl9hY3RpdmF0ZUV4cGFuZGFibGVUYWIodGFiUGFuZWwsIGV4cGFuZCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZGV0ZWN0Q2hhbmdlcykge1xuICAgICAgICAgICAgdGhpcy5fZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fc2VsZWN0ZWRUYWJDaGFuZ2UodGFiUGFuZWwpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfc2Nyb2xsVG9QYW5lbCh0YWJQYW5lbDogVGFiUGFuZWxDb21wb25lbnQpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgcGFuZWxFbGVtZW50ID0gdGFiUGFuZWwuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xuICAgICAgICBjb25zdCBjb250YWluZXJFbGVtZW50ID0gdGhpcy5jb250ZW50Q29udGFpbmVyLm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgIGNvbnN0IGRpc3RhbmNlVG9TY3JvbGwgPSBwYW5lbEVsZW1lbnQub2Zmc2V0VG9wIC0gY29udGFpbmVyRWxlbWVudC5vZmZzZXRUb3A7XG4gICAgICAgIGNvbnN0IG1heGltdW1TY3JvbGxUb3AgPSBjb250YWluZXJFbGVtZW50LnNjcm9sbEhlaWdodCAtIGNvbnRhaW5lckVsZW1lbnQuY2xpZW50SGVpZ2h0O1xuICAgICAgICBjb25zdCBjdXJyZW50U2Nyb2xsUG9zaXRpb24gPSBNYXRoLmNlaWwoY29udGFpbmVyRWxlbWVudC5zY3JvbGxUb3ApO1xuXG4gICAgICAgIGlmICghKGN1cnJlbnRTY3JvbGxQb3NpdGlvbiA9PT0gbWF4aW11bVNjcm9sbFRvcCAmJiBkaXN0YW5jZVRvU2Nyb2xsID4gbWF4aW11bVNjcm9sbFRvcCkpIHtcbiAgICAgICAgICAgICF0aGlzLl9pbml0ID8gKHRoaXMuX2Rpc2FibGVTY3JvbGxTcHkgPSB0cnVlKSA6ICh0aGlzLl9pbml0ID0gZmFsc2UpO1xuICAgICAgICAgICAgZnJvbUV2ZW50KGNvbnRhaW5lckVsZW1lbnQsICdzY3JvbGwnKVxuICAgICAgICAgICAgICAgIC5waXBlKGRlYm91bmNlVGltZSgxMDApLCBmaXJzdCgpLCB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5fZGVzdHJveVJlZikpXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiAodGhpcy5fZGlzYWJsZVNjcm9sbFNweSA9IGZhbHNlKSk7XG4gICAgICAgICAgICBzY3JvbGxUb3AoY29udGFpbmVyRWxlbWVudCwgZGlzdGFuY2VUb1Njcm9sbCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5mb2N1c0ZpcnN0Rm9jdXNhYmxlRWxlbWVudCkge1xuICAgICAgICAgICAgdGFiUGFuZWwuX2ZvY3VzRmlyc3RGb2N1c2FibGVFbGVtZW50KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBXaGV0aGVyIHRhYiBjYW4gYmUgZXhwYW5kZWQvY29sbGFwc2VkICovXG4gICAgcHJpdmF0ZSBfY2FuQ2hhbmdlRXhwYW5kU3RhdGUodGFiUGFuZWw6IFRhYlBhbmVsQ29tcG9uZW50LCBleHBhbmQ6IGJvb2xlYW4pOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICF0YWJQYW5lbC5kaXNhYmxlZCAmJiBleHBhbmQgIT09IHRhYlBhbmVsLmV4cGFuZGVkICYmIGV4cGFuZCA9PT0gZmFsc2UgPyB0aGlzLmNvbGxhcHNpYmxlVGFicyA6IHRydWU7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9zZWxlY3RlZFRhYkNoYW5nZSh0YWJQYW5lbDogVGFiUGFuZWxDb21wb25lbnQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZFRhYkNoYW5nZS5lbWl0KHRhYlBhbmVsKTtcblxuICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMuX3RhYkFycmF5LmZpbmRJbmRleCgodGFiSW5mbykgPT4gdGFiSW5mby5wYW5lbCA9PT0gdGFiUGFuZWwpO1xuICAgICAgICB0aGlzLnNlbGVjdGVkVGFiSW5kZXhDaGFuZ2UuZW1pdChpbmRleCk7XG4gICAgfVxufVxuIiwiPGRpdiAjaGVhZGVyQ29udGFpbmVyIHJvbGU9XCJ0YWJsaXN0XCIgY2xhc3M9XCJmZC10YWJzXCIgW2NsYXNzXT1cIihtb2RlID8gJ2ZkLXRhYnMtLScgKyBtb2RlIDogJycpICsgKCcgZmQtdGFicy0tJyArIHNpemUpXCI+XG4gICAgPGZkLW92ZXJmbG93LWxheW91dFxuICAgICAgICBbbWF4VmlzaWJsZUl0ZW1zXT1cIm1heFZpc2libGVUYWJzXCJcbiAgICAgICAgW2VuYWJsZUtleWJvYXJkTmF2aWdhdGlvbl09XCJ0cnVlXCJcbiAgICAgICAgbmF2aWdhdGlvblRyaWdnZXI9XCJrZXlkb3duXCJcbiAgICAgICAgKGhpZGRlbkl0ZW1zQ291bnQpPVwiaGlkZGVuSXRlbXNDb3VudC5lbWl0KCRldmVudClcIlxuICAgICAgICAodmlzaWJsZUl0ZW1zQ291bnQpPVwidmlzaWJsZUl0ZW1zQ291bnQuZW1pdCgkZXZlbnQpXCJcbiAgICA+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHRhYiBvZiBfdGFiQXJyYXk7IGxldCBpID0gaW5kZXg7IGxldCBsYXN0ID0gbGFzdFwiPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGZkLXRhYi1pdGVtXG4gICAgICAgICAgICAgICAgKmZkT3ZlcmZsb3dJdGVtUmVmPVwidGFiXCJcbiAgICAgICAgICAgICAgICBmZE92ZXJmbG93TGF5b3V0SXRlbVxuICAgICAgICAgICAgICAgIFtmb3JjZVZpc2liaWxpdHldPVwidGFiLnBhbmVsLl9mb3JjZWRWaXNpYmlsaXR5XCJcbiAgICAgICAgICAgICAgICBbaGVhZGVyXT1cInRhYi5pc0hlYWRlclwiXG4gICAgICAgICAgICAgICAgW3RhYkl0ZW1TdGF0ZV09XCJ0YWIudGFiU3RhdGVcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgICAgIGZkLXRhYi1saW5rXG4gICAgICAgICAgICAgICAgICAgIHJvbGU9XCJ0YWJcIlxuICAgICAgICAgICAgICAgICAgICBbaWRdPVwidGFiLmlkXCJcbiAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1jb250cm9sc109XCJ0YWIucGFuZWxJZFwiXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwidGFiLmFyaWFMYWJlbCB8fCBudWxsXCJcbiAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cIiF0YWIuYXJpYUxhYmVsICYmIHRhYi5hcmlhTGFiZWxsZWRCeSA/IHRhYi5hcmlhTGFiZWxsZWRCeSA6IG51bGxcIlxuICAgICAgICAgICAgICAgICAgICBmZE92ZXJmbG93TGF5b3V0Rm9jdXNhYmxlSXRlbVxuICAgICAgICAgICAgICAgICAgICBbZm9jdXNhYmxlXT1cInRhYi5hY3RpdmVcIlxuICAgICAgICAgICAgICAgICAgICBbbmF2aWdhYmxlXT1cIiF0YWIuZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgICAgICBbYWN0aXZlXT1cInRhYi5hY3RpdmVcIlxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwidGFiLmRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICAgICAgKGtleWRvd24pPVwiX3RhYkhlYWRlcktleWRvd25IYW5kbGVyKCRldmVudCwgdGFiLnBhbmVsKVwiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJfdGFiSGVhZGVyQ2xpY2tIYW5kbGVyKHRhYi5wYW5lbClcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRhYi50aXRsZVRlbXBsYXRlIHx8IG51bGxcIj48L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXRhYi50aXRsZVRlbXBsYXRlXCIgW25nU3dpdGNoXT1cIm1vZGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidmaWx0ZXInXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gZmQtdGFiLWhlYWRlciAqbmdJZj1cInRhYi5pc0hlYWRlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBmZC10YWItY291bnRlci1oZWFkZXIgKm5nSWY9XCJ0YWIuY291bnRcIj57eyB0YWIuY291bnQgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGZkLXRhYi1sYWJlbCAqbmdJZj1cInRhYi50aXRsZVwiPnt7IHRhYi50aXRsZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiF0YWIuaXNIZWFkZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gZmQtdGFiLWljb24gW2ljb25dPVwidGFiLmdseXBoXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBmZC10YWItY291bnQ+e3sgdGFiLmNvdW50IH19PC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGZkLXRhYi1sYWJlbD57eyB0YWIudGl0bGUgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ2ljb24tb25seSdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBmZC10YWItaWNvbiBbaWNvbl09XCJ0YWIuZ2x5cGhcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgZmQtdGFiLWNvdW50Pnt7IHRhYi5jb3VudCB9fTwvcD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ3Byb2Nlc3MnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gZmQtdGFiLWljb24gKm5nSWY9XCJ0YWIuZ2x5cGhcIiBbaWNvbl09XCJ0YWIuZ2x5cGhcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBmZC10YWItcHJvY2Vzcz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gZmQtdGFiLWxhYmVsICpuZ0lmPVwidGFiLmNvdW50XCI+e3sgdGFiLmNvdW50IH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBmZC10YWItbGFiZWwgKm5nSWY9XCJ0YWIudGl0bGVcIj57eyB0YWIudGl0bGUgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hEZWZhdWx0PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGZkLXRhYi1jb3VudCAqbmdJZj1cInRhYi5jb3VudFwiPnt7IHRhYi5jb3VudCB9fTwvcD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBmZC10YWItdGFnPnt7IHRhYi50aXRsZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8L2E+XG5cbiAgICAgICAgICAgICAgICA8ZGl2IGZkLXRhYi1wcm9jZXNzLWljb24gKm5nSWY9XCJtb2RlID09PSAncHJvY2VzcycgJiYgIWxhc3RcIj48L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwidGFiLmlzSGVhZGVyXCIgZmQtdGFiLXNlcGFyYXRvcj48L2Rpdj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqZmRPdmVyZmxvd0V4cGFuZD1cImxldCB0YWJzOyBpdGVtczogX3RhYkFycmF5XCI+XG4gICAgICAgICAgICA8ZmQtaXRlbS1leHBhbmQgW2ZkTWVudVRyaWdnZXJdPVwibWVudVwiICpuZ0lmPVwidGFicy5sZW5ndGggPiAwXCIgKGtleWRvd24pPVwiX29uVHJpZ2dlcktleWRvd24oJGV2ZW50LCBtZW51KVwiPlxuICAgICAgICAgICAgPC9mZC1pdGVtLWV4cGFuZD5cblxuICAgICAgICAgICAgPGZkLW1lbnUgI21lbnU+XG4gICAgICAgICAgICAgICAgPGxpXG4gICAgICAgICAgICAgICAgICAgIGZkLW1lbnUtaXRlbVxuICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgdGFiIG9mIHRhYnNcIlxuICAgICAgICAgICAgICAgICAgICAob25TZWxlY3QpPVwiX292ZXJmbG93aW5nVGFiSGVhZGVyQ2xpY2tIYW5kbGVyKHRhYi5pdGVtLnBhbmVsKVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGZkLW1lbnUtaW50ZXJhY3RpdmU+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIXRhYi5pdGVtLnRpdGxlVGVtcGxhdGUgJiYgbW9kZSA9PT0gJ2ljb24tb25seSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gaWNvbk9ubHlUZW1wbGF0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB0YWIuaXRlbS50aXRsZVRlbXBsYXRlIHx8IHRleHRUaXRsZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dDogeyAkaW1wbGljaXQ6IHRhYi5pdGVtIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgPC9mZC1tZW51PlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2ZkLW92ZXJmbG93LWxheW91dD5cbjwvZGl2PlxuXG48ZGl2XG4gICAgY2xhc3M9XCJmZC10YWJzX19jb250ZW50XCJcbiAgICBbc3R5bGUubWF4LWhlaWdodF09XCJtYXhDb250ZW50SGVpZ2h0XCJcbiAgICBmZFNjcm9sbFNweVxuICAgIGZkLXNjcm9sbGJhclxuICAgIFtvdmVycmlkZVRhYmluZGV4XT1cImZhbHNlXCJcbiAgICBbdHJhY2tlZFRhZ3NdPVwiWydmZC10YWInXVwiXG4gICAgW3Njcm9sbFNweURpc2FibGVkXT1cIl9kaXNhYmxlU2Nyb2xsU3B5XCJcbiAgICAoc3B5Q2hhbmdlKT1cIl9oaWdobGlnaHRBY3RpdmVUYWIoJGV2ZW50KVwiXG4+XG4gICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZSAjdGV4dFRpdGxlIGxldC10YWI+XG4gICAgPHNwYW4gZmQtbWVudS10aXRsZT57eyB0YWIudGl0bGUgfX08L3NwYW4+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2ljb25Pbmx5VGVtcGxhdGUgbGV0LXRhYj5cbiAgICA8c3BhbiBmZC10YWItaWNvbiBbaWNvbl09XCJ0YWIuZ2x5cGhcIj5cbiAgICAgICAgPHAgZmQtdGFiLWNvdW50Pnt7IHRhYi5jb3VudCB9fTwvcD5cbiAgICA8L3NwYW4+XG48L25nLXRlbXBsYXRlPlxuIl19
354
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiLWxpc3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvdGFicy90YWItbGlzdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvc3JjL2xpYi90YWJzL3RhYi1saXN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDckQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxZQUFZLEVBQUUsZUFBZSxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekcsT0FBTyxFQUdILHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULGVBQWUsRUFDZixVQUFVLEVBQ1YsVUFBVSxFQUNWLFlBQVksRUFDWixLQUFLLEVBRUwsTUFBTSxFQUNOLFNBQVMsRUFDVCxTQUFTLEVBQ1QsWUFBWSxFQUNaLGlCQUFpQixFQUNqQixVQUFVLEVBQ2IsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDaEUsT0FBTyxFQUFFLE9BQU8sRUFBWSxTQUFTLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMxRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsK0JBQStCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUNoSCxPQUFPLEVBQ0gsYUFBYSxFQUNiLHdCQUF3QixFQUN4QixpQkFBaUIsRUFDakIsa0JBQWtCLEVBQ2xCLG9CQUFvQixFQUN2QixNQUFNLDRCQUE0QixDQUFDO0FBQ3BDLE9BQU8sRUFDSCx1QkFBdUIsRUFDdkIsd0JBQXdCLEVBQ3hCLHVCQUF1QixFQUN2QixvQ0FB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RHhCLEtBQUs7Z0JBS04sMEJBQTBCO3NCQUR6QixLQUFLO2dCQUtOLGlCQUFpQjtzQkFEaEIsTUFBTTtnQkFLUCxzQkFBc0I7c0JBRHJCLE1BQU07Z0JBS1AsaUJBQWlCO3NCQURoQixNQUFNO2dCQUtQLGdCQUFnQjtzQkFEZixNQUFNO2dCQUtQLFNBQVM7c0JBRFIsZUFBZTt1QkFBQyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsaUJBQWlCLENBQUM7Z0JBS3BELGNBQWM7c0JBRGIsWUFBWTt1QkFBQyxnQkFBZ0I7Z0JBSzlCLFVBQVU7c0JBRFQsWUFBWTt1QkFBQyxnQkFBZ0I7Z0JBSzlCLGVBQWU7c0JBRGQsU0FBUzt1QkFBQyxzQkFBc0IsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUU7Z0JBS3ZELGVBQWU7c0JBRGQsU0FBUzt1QkFBQyxpQkFBaUIsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUU7Z0JBS2xELFVBQVU7c0JBRFQsU0FBUzt1QkFBQyxrQkFBa0I7Z0JBSzdCLElBQUk7c0JBREgsU0FBUzt1QkFBQyxNQUFNLEVBQUUsRUFBRSxJQUFJLEVBQUUsYUFBYSxFQUFFO2dCQUtsQyxlQUFlO3NCQUR0QixTQUFTO3VCQUFDLHVCQUF1QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVOVEVSLCBTUEFDRSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9rZXljb2Rlcyc7XG5pbXBvcnQgeyBDZGtTY3JvbGxhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xuaW1wb3J0IHsgTmdGb3IsIE5nSWYsIE5nU3dpdGNoLCBOZ1N3aXRjaENhc2UsIE5nU3dpdGNoRGVmYXVsdCwgTmdUZW1wbGF0ZU91dGxldCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICAgIEFmdGVyQ29udGVudEluaXQsXG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgQ29udGVudENoaWxkcmVuLFxuICAgIERlc3Ryb3lSZWYsXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSW5wdXQsXG4gICAgT25EZXN0cm95LFxuICAgIE91dHB1dCxcbiAgICBRdWVyeUxpc3QsXG4gICAgVmlld0NoaWxkLFxuICAgIFZpZXdDaGlsZHJlbixcbiAgICBWaWV3RW5jYXBzdWxhdGlvbixcbiAgICBmb3J3YXJkUmVmXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgS2V5VXRpbCwgTnVsbGFibGUsIHNjcm9sbFRvcCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY2RrL3V0aWxzJztcbmltcG9ydCB7IENvbnRlbnREZW5zaXR5T2JzZXJ2ZXIsIGNvbnRlbnREZW5zaXR5T2JzZXJ2ZXJQcm92aWRlcnMgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvY29udGVudC1kZW5zaXR5JztcbmltcG9ydCB7XG4gICAgTWVudUNvbXBvbmVudCxcbiAgICBNZW51SW50ZXJhY3RpdmVDb21wb25lbnQsXG4gICAgTWVudUl0ZW1Db21wb25lbnQsXG4gICAgTWVudVRpdGxlRGlyZWN0aXZlLFxuICAgIE1lbnVUcmlnZ2VyRGlyZWN0aXZlXG59IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9tZW51JztcbmltcG9ydCB7XG4gICAgT3ZlcmZsb3dFeHBhbmREaXJlY3RpdmUsXG4gICAgT3ZlcmZsb3dJdGVtUmVmRGlyZWN0aXZlLFxuICAgIE92ZXJmbG93TGF5b3V0Q29tcG9uZW50LFxuICAgIE92ZXJmbG93TGF5b3V0Rm9jdXNhYmxlSXRlbURpcmVjdGl2ZSxcbiAgICBPdmVyZmxvd0xheW91dEl0ZW1EaXJlY3RpdmVcbn0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL292ZXJmbG93LWxheW91dCc7XG5pbXBvcnQgeyBTY3JvbGxTcHlEaXJlY3RpdmUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvc2Nyb2xsLXNweSc7XG5pbXBvcnQgeyBTY3JvbGxiYXJEaXJlY3RpdmUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvc2Nyb2xsYmFyJztcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YmplY3QsIFN1YnNjcmlwdGlvbiwgZnJvbUV2ZW50LCBtZXJnZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBkZWxheSwgZmlsdGVyLCBmaXJzdCwgbWFwLCBzdGFydFdpdGgsIHN3aXRjaE1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IFRhYkl0ZW1FeHBhbmRDb21wb25lbnQgfSBmcm9tICcuL3RhYi1pdGVtLWV4cGFuZC90YWItaXRlbS1leHBhbmQuY29tcG9uZW50JztcbmltcG9ydCB7IFRhYkl0ZW1EaXJlY3RpdmUgfSBmcm9tICcuL3RhYi1pdGVtL3RhYi1pdGVtLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBUYWJMaW5rRGlyZWN0aXZlIH0gZnJvbSAnLi90YWItbGluay90YWItbGluay5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgVGFiTGlzdENvbXBvbmVudEludGVyZmFjZSB9IGZyb20gJy4vdGFiLWxpc3QtY29tcG9uZW50LmludGVyZmFjZSc7XG5pbXBvcnQgeyBMSVNUX0NPTVBPTkVOVCB9IGZyb20gJy4vdGFiLWxpc3QudG9rZW4nO1xuaW1wb3J0IHsgVGFiUGFuZWxDb21wb25lbnQgfSBmcm9tICcuL3RhYi1wYW5lbC90YWItcGFuZWwuY29tcG9uZW50JztcbmltcG9ydCB7XG4gICAgVGFiQ291bnREaXJlY3RpdmUsXG4gICAgVGFiQ291bnRlckhlYWRlckRpcmVjdGl2ZSxcbiAgICBUYWJIZWFkZXJEaXJlY3RpdmUsXG4gICAgVGFiSWNvbkNvbXBvbmVudCxcbiAgICBUYWJMYWJlbERpcmVjdGl2ZSxcbiAgICBUYWJQcm9jZXNzRGlyZWN0aXZlLFxuICAgIFRhYlByb2Nlc3NJY29uRGlyZWN0aXZlLFxuICAgIFRhYlNlcGFyYXRvckRpcmVjdGl2ZSxcbiAgICBUYWJUYWdEaXJlY3RpdmVcbn0gZnJvbSAnLi90YWItdXRpbHMvdGFiLWRpcmVjdGl2ZXMnO1xuaW1wb3J0IHsgVGFiSW5mbyB9IGZyb20gJy4vdGFiLXV0aWxzL3RhYi1pbmZvLmNsYXNzJztcblxuZXhwb3J0IHR5cGUgVGFiTW9kZXMgPSAnaWNvbi1vbmx5JyB8ICdwcm9jZXNzJyB8ICdmaWx0ZXInO1xuXG5leHBvcnQgdHlwZSBUYWJTaXplcyA9ICdzJyB8ICdtJyB8ICdsJyB8ICd4bCcgfCAneHhsJztcblxuLyoqXG4gKiBSZXByZXNlbnRzIGEgbGlzdCBvZiB0YWItcGFuZWxzLlxuICovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2ZkLXRhYi1saXN0JyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vdGFiLWxpc3QuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL3RhYi1saXN0LmNvbXBvbmVudC5zY3NzJ10sXG4gICAgaG9zdDoge1xuICAgICAgICBjbGFzczogJ2ZkLXRhYnMtY3VzdG9tJ1xuICAgIH0sXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgY29udGVudERlbnNpdHlPYnNlcnZlclByb3ZpZGVycygpLFxuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBMSVNUX0NPTVBPTkVOVCxcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFRhYkxpc3RDb21wb25lbnQpXG4gICAgICAgIH1cbiAgICBdLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW1xuICAgICAgICBPdmVyZmxvd0xheW91dENvbXBvbmVudCxcbiAgICAgICAgTmdGb3IsXG4gICAgICAgIE92ZXJmbG93SXRlbVJlZkRpcmVjdGl2ZSxcbiAgICAgICAgVGFiSXRlbURpcmVjdGl2ZSxcbiAgICAgICAgT3ZlcmZsb3dMYXlvdXRJdGVtRGlyZWN0aXZlLFxuICAgICAgICBUYWJMaW5rRGlyZWN0aXZlLFxuICAgICAgICBPdmVyZmxvd0xheW91dEZvY3VzYWJsZUl0ZW1EaXJlY3RpdmUsXG4gICAgICAgIE5nVGVtcGxhdGVPdXRsZXQsXG4gICAgICAgIE5nSWYsXG4gICAgICAgIE5nU3dpdGNoLFxuICAgICAgICBOZ1N3aXRjaENhc2UsXG4gICAgICAgIFRhYkhlYWRlckRpcmVjdGl2ZSxcbiAgICAgICAgVGFiQ291bnRlckhlYWRlckRpcmVjdGl2ZSxcbiAgICAgICAgVGFiTGFiZWxEaXJlY3RpdmUsXG4gICAgICAgIFRhYkljb25Db21wb25lbnQsXG4gICAgICAgIFRhYkNvdW50RGlyZWN0aXZlLFxuICAgICAgICBUYWJQcm9jZXNzRGlyZWN0aXZlLFxuICAgICAgICBOZ1N3aXRjaERlZmF1bHQsXG4gICAgICAgIFRhYlRhZ0RpcmVjdGl2ZSxcbiAgICAgICAgVGFiUHJvY2Vzc0ljb25EaXJlY3RpdmUsXG4gICAgICAgIFRhYlNlcGFyYXRvckRpcmVjdGl2ZSxcbiAgICAgICAgT3ZlcmZsb3dFeHBhbmREaXJlY3RpdmUsXG4gICAgICAgIFRhYkl0ZW1FeHBhbmRDb21wb25lbnQsXG4gICAgICAgIE1lbnVUcmlnZ2VyRGlyZWN0aXZlLFxuICAgICAgICBNZW51Q29tcG9uZW50LFxuICAgICAgICBNZW51SXRlbUNvbXBvbmVudCxcbiAgICAgICAgTWVudUludGVyYWN0aXZlQ29tcG9uZW50LFxuICAgICAgICBTY3JvbGxTcHlEaXJlY3RpdmUsXG4gICAgICAgIENka1Njcm9sbGFibGUsXG4gICAgICAgIFNjcm9sbGJhckRpcmVjdGl2ZSxcbiAgICAgICAgTWVudVRpdGxlRGlyZWN0aXZlXG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBUYWJMaXN0Q29tcG9uZW50IGltcGxlbWVudHMgVGFiTGlzdENvbXBvbmVudEludGVyZmFjZSwgQWZ0ZXJDb250ZW50SW5pdCwgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcbiAgICAvKiogU2l6ZSBvZiB0YWIsIGl0J3MgbW9zdGx5IGFib3V0IGFkZGluZyBzcGFjaW5nIG9uIHRhYiBjb250YWluZXIsIGF2YWlsYWJsZSBzaXplcyAncycgfCAnbScgfCAnbCcgfCAneGwnIHwgJ3h4bCcgKi9cbiAgICBASW5wdXQoKVxuICAgIHNpemU6IFRhYlNpemVzID0gJ20nO1xuXG4gICAgLyoqXG4gICAgICogV2hldGhlciB1c2VyIHdhbnRzIHRvIHVzZSB0YWIgY29tcG9uZW50IGluIGNlcnRhaW4gbW9kZS4gTW9kZXMgYXZhaWxhYmxlOlxuICAgICAqICdpY29uLW9ubHknIHwgJ3Byb2Nlc3MnIHwgJ2ZpbHRlcidcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIG1vZGU6IFRhYk1vZGVzO1xuXG4gICAgLyoqIFdoZXRoZXIgdG8gbW92ZSB0YWJzIG92ZXJmbG93aW5nIGluIHRoZSB0YWIgYmFyIHRvIHRoZSBkcm9wZG93biAqL1xuICAgIEBJbnB1dCgpXG4gICAgY29sbGFwc2VPdmVyZmxvdyA9IHRydWU7XG5cbiAgICAvKiogTGltaXRzIHRoZSBtYXhpbXVtIG51bWJlciBvZiB0YWJzIHZpc2libGUgaW4gdGhlIHRhYiBiYXIgaW4gY29sbGFwc2VPdmVyZmxvdyBtb2RlLlxuICAgICAqIE90aGVyIHRhYnMgd2lsbCBiZSBtb3ZlZCB0byB0aGUgY29sbGFwc2VkIHRhYnMgZHJvcGRvd24gKi9cbiAgICBASW5wdXQoKVxuICAgIG1heFZpc2libGVUYWJzID0gSW5maW5pdHk7XG5cbiAgICAvKiogV2hldGhlciB0byBvcGVuIHRhYiBjb250ZW50IG9uZSB1bmRlciBhbm90aGVyIHdpdGhvdXQgY29sbGFwc2luZyAqL1xuICAgIEBJbnB1dCgpXG4gICAgc3RhY2tDb250ZW50ID0gZmFsc2U7XG5cbiAgICAvKiogTWF4aW11bSBoZWlnaHQgb2YgdGhlIGNvbnRlbnQgKi9cbiAgICBASW5wdXQoKVxuICAgIG1heENvbnRlbnRIZWlnaHQgPSAnMTAwJSc7XG5cbiAgICAvKiogV2hldGhlciB0byBlbmFibGUgY29sbGFwc2luZyBleHBhbmRlZCB0YWIgb24gZXhwYW5kZWQgdGFiIGNsaWNrICovXG4gICAgQElucHV0KClcbiAgICBjb2xsYXBzaWJsZVRhYnMgPSBmYWxzZTtcblxuICAgIC8qKiBJbml0aWFsbHkgc2VsZWN0ZWQgdGFiIChieSBpZCkuIEZpcnN0IG5vdCBkaXNhYmxlZCBvbmUgaWYgbm90IHNwZWNpZmllZC4gKi9cbiAgICBASW5wdXQoKVxuICAgIGRlZmF1bHRUYWI6IE51bGxhYmxlPHN0cmluZz47XG5cbiAgICAvKiogV2hldGhlciB0byB0cnkgdG8ga2VlcCBzZWxlY3RlZCB0YWIgKGRlZmF1bHQgdmFsdWUpIG9uIHRhYnMgY2hhbmdlIG9yIHRvIHNlbGVjdCBkZWZhdWx0IG9uZSAoZmlyc3QgaWYgbm90IHNwZWNpZmllZCkuICovXG4gICAgQElucHV0KClcbiAgICBzZWxlY3REZWZhdWx0T25UYWJzQ2hhbmdlID0gZmFsc2U7XG5cbiAgICAvKiogV2hldGhlciB0byBmb2N1cyB0aGUgZmlyc3QgZm9jdXNhYmxlIGVsZW1lbnQgaW4gYSB0YWIgcGFuZWwgd2hlbiB1c2luZyBzdGFja2VkIHRhYnMuICovXG4gICAgQElucHV0KClcbiAgICBmb2N1c0ZpcnN0Rm9jdXNhYmxlRWxlbWVudCA9IHRydWU7XG5cbiAgICAvKiogRXZlbnQgZW1pdHRlZCB3aGVuIHRoZSBzZWxlY3RlZCBwYW5lbCBjaGFuZ2VzLiAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHNlbGVjdGVkVGFiQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxUYWJQYW5lbENvbXBvbmVudD4oKTtcblxuICAgIC8qKiBFdmVudCBlbWl0dGVkIHdoZW4gdGhlIHNlbGVjdGVkIHBhbmVsIGluZGV4IGNoYW5nZXMuICovXG4gICAgQE91dHB1dCgpXG4gICAgc2VsZWN0ZWRUYWJJbmRleENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xuXG4gICAgLyoqIEV2ZW50IGVtaXR0ZWQgd2hlbiB2aXNpYmxlIGl0ZW1zIGNvdW50IGhhcyBiZWVuIGNoYW5nZWQuICovXG4gICAgQE91dHB1dCgpXG4gICAgdmlzaWJsZUl0ZW1zQ291bnQgPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcblxuICAgIC8qKiBFdmVudCBlbWl0dGVkIHdoZW4gaGlkZGVuIGl0ZW1zIGNvdW50IGhhcyBiZWVuIGNoYW5nZWQuICovXG4gICAgQE91dHB1dCgpXG4gICAgaGlkZGVuSXRlbXNDb3VudCA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAQ29udGVudENoaWxkcmVuKGZvcndhcmRSZWYoKCkgPT4gVGFiUGFuZWxDb21wb25lbnQpKVxuICAgIHRhYlBhbmVsczogUXVlcnlMaXN0PFRhYlBhbmVsQ29tcG9uZW50PjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQFZpZXdDaGlsZHJlbihUYWJMaW5rRGlyZWN0aXZlKVxuICAgIHRhYkhlYWRlckxpbmtzOiBRdWVyeUxpc3Q8VGFiTGlua0RpcmVjdGl2ZT47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBWaWV3Q2hpbGRyZW4oVGFiSXRlbURpcmVjdGl2ZSlcbiAgICB0YWJIZWFkZXJzOiBRdWVyeUxpc3Q8VGFiSXRlbURpcmVjdGl2ZT47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBWaWV3Q2hpbGQoVGFiSXRlbUV4cGFuZENvbXBvbmVudCwgeyByZWFkOiBFbGVtZW50UmVmIH0pXG4gICAgb3ZlcmZsb3dUcmlnZ2VyOiBFbGVtZW50UmVmO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAVmlld0NoaWxkKCdoZWFkZXJDb250YWluZXInLCB7IHJlYWQ6IEVsZW1lbnRSZWYgfSlcbiAgICBoZWFkZXJDb250YWluZXI6IEVsZW1lbnRSZWY7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBWaWV3Q2hpbGQoU2Nyb2xsYmFyRGlyZWN0aXZlKVxuICAgIF9zY3JvbGxiYXI6IFNjcm9sbGJhckRpcmVjdGl2ZTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQFZpZXdDaGlsZCgnbWVudScsIHsgcmVhZDogTWVudUNvbXBvbmVudCB9KVxuICAgIG1lbnU6IE1lbnVDb21wb25lbnQ7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBWaWV3Q2hpbGQoT3ZlcmZsb3dMYXlvdXRDb21wb25lbnQpXG4gICAgcHJpdmF0ZSBfb3ZlcmZsb3dMYXlvdXQ6IE92ZXJmbG93TGF5b3V0Q29tcG9uZW50O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBnZXQgY29udGVudENvbnRhaW5lcigpOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9zY3JvbGxiYXI/LmVsZW1lbnRSZWY7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gQ29sbGVjdGlvbiBvZiB0YWJzIGluIG9yaWdpbmFsIG9yZGVyICovXG4gICAgX3RhYkFycmF5OiBUYWJJbmZvW10gPSBbXTtcblxuICAgIC8qKiBAaGlkZGVuIFdoZXRoZXIgdG8gZGlzYWJsZSBzY3JvbGwgc3B5ICovXG4gICAgX2Rpc2FibGVTY3JvbGxTcHkgPSBmYWxzZTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2luaXQgPSB0cnVlO1xuXG4gICAgLyoqIEV2ZW50IGlzIHRocm93biBhbHdheXMgd2hlbiB0YWIgaXMgc2VsZWN0ZWQgYnkga2V5Ym9hcmQgYWN0aW9ucyAqL1xuICAgIHJlYWRvbmx5IHRhYlNlbGVjdGVkOiBTdWJqZWN0PG51bWJlcj4gPSBuZXcgU3ViamVjdDxudW1iZXI+KCk7XG5cbiAgICAvKiogRXZlbnQgaXMgdGhyb3duIGFsd2F5cywgd2hlbiBzb21lIHByb3BlcnR5IGlzIGNoYW5nZWQgKi9cbiAgICByZWFkb25seSB0YWJQYW5lbFByb3BlcnR5Q2hhbmdlZDogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3N1YnNjcmlwdGlvbnMgPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IF9jaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIHByaXZhdGUgX2VsUmVmOiBFbGVtZW50UmVmLFxuICAgICAgICByZWFkb25seSBfY29udGVudERlbnNpdHlPYnNlcnZlcjogQ29udGVudERlbnNpdHlPYnNlcnZlcixcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBfZGVzdHJveVJlZjogRGVzdHJveVJlZlxuICAgICkge31cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdBZnRlckNvbnRlbnRJbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9zZXR1cFRhYlBhbmVsc0NoYW5nZUxpc3RlbmVycygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9pbml0U3RhY2tDb250ZW50U3Vic2NyaXB0aW9uKCk7XG4gICAgICAgIHRoaXMuX2xpc3Rlbk9uVGFiUGFuZWxzRXhwYW5kZWRDaGFuZ2UoKTtcbiAgICAgICAgdGhpcy5fbGlzdGVuT25UYWJQYW5lbHNBbmRJbml0aWFsbHlFeHBhbmRUYWJQYW5lbCgpO1xuICAgICAgICB0aGlzLl9saXN0ZW5PblByb3BlcnRpZXNDaGFuZ2UoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9zdWJzY3JpcHRpb25zLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfdGFiSGVhZGVyQ2xpY2tIYW5kbGVyKHRhYlBhbmVsOiBUYWJQYW5lbENvbXBvbmVudCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9leHBhbmRUYWIodGFiUGFuZWwsICF0YWJQYW5lbC5leHBhbmRlZCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfdGFiSGVhZGVyS2V5ZG93bkhhbmRsZXIoZXZlbnQ6IEtleWJvYXJkRXZlbnQsIHRhYlBhbmVsOiBUYWJQYW5lbENvbXBvbmVudCk6IHZvaWQge1xuICAgICAgICBpZiAoIUtleVV0aWwuaXNLZXlDb2RlKGV2ZW50LCBbRU5URVIsIFNQQUNFXSkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIHRoaXMuX3RhYkhlYWRlckNsaWNrSGFuZGxlcih0YWJQYW5lbCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfb3ZlcmZsb3dpbmdUYWJIZWFkZXJDbGlja0hhbmRsZXIodGFiUGFuZWw6IFRhYlBhbmVsQ29tcG9uZW50KTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3RhYkFycmF5LmZvckVhY2goKHRhYikgPT4ge1xuICAgICAgICAgICAgdGFiLnBhbmVsLl9mb3JjZWRWaXNpYmlsaXR5ID0gdGFiLnBhbmVsID09PSB0YWJQYW5lbDtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5fZXhwYW5kVGFiKHRhYlBhbmVsLCB0cnVlLCBmYWxzZSk7XG5cbiAgICAgICAgdGhpcy5fb3ZlcmZsb3dMYXlvdXQudHJpZ2dlclJlY2FsY3VsYXRpb24oKTtcblxuICAgICAgICB0aGlzLl9kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfaGlnaGxpZ2h0QWN0aXZlVGFiKHsgaWQgfTogSFRNTEVsZW1lbnQpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgdGFiID0gdGhpcy5fdGFiQXJyYXkuZmluZCgoX3RhYikgPT4gX3RhYi5wYW5lbC5fcGFuZWxJZCA9PT0gaWQpO1xuICAgICAgICBpZiAodGFiKSB7XG4gICAgICAgICAgICBjb25zdCBfdGFiV2FzQWN0aXZlID0gdGFiLmFjdGl2ZTtcbiAgICAgICAgICAgIHRoaXMuX2FjdGl2YXRlU3RhY2tlZFRhYih0YWIucGFuZWwsIGZhbHNlKTtcbiAgICAgICAgICAgIGlmICghX3RhYldhc0FjdGl2ZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuX3NlbGVjdGVkVGFiQ2hhbmdlKHRhYi5wYW5lbCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9vblRyaWdnZXJLZXlkb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50LCBtZW51UmVmOiBNZW51Q29tcG9uZW50KTogdm9pZCB7XG4gICAgICAgIGlmIChLZXlVdGlsLmlzS2V5Q29kZShldmVudCwgW0VOVEVSLCBTUEFDRV0pKSB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgbWVudVJlZi50b2dnbGUoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBnZXQgX3RhYlBhbmVsc0NoYW5nZSQoKTogT2JzZXJ2YWJsZTxUYWJQYW5lbENvbXBvbmVudFtdPiB7XG4gICAgICAgIHJldHVybiB0aGlzLnRhYlBhbmVscy5jaGFuZ2VzLnBpcGUoXG4gICAgICAgICAgICBzdGFydFdpdGgodGhpcy50YWJQYW5lbHMpLFxuICAgICAgICAgICAgbWFwKCh0YWJQYW5lbHMpID0+IHRhYlBhbmVscy50b0FycmF5KCkpLFxuICAgICAgICAgICAgdGFrZVVudGlsRGVzdHJveWVkKHRoaXMuX2Rlc3Ryb3lSZWYpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9kZXRlY3RDaGFuZ2VzKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYgJiYgIXRoaXMuX2NoYW5nZURldGVjdG9yUmVmWydkZXN0cm95ZWQnXSkge1xuICAgICAgICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9zZXR1cFRhYlBhbmVsc0NoYW5nZUxpc3RlbmVycygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fbGlzdGVuT25UYWJQYW5lbHNBbmRVcGRhdGVTdG9yYWdlU3RydWN0dXJlcygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIFNldHVwIG1lY2hhbmlzbXMgcmVxdWlyZWQgZm9yIGhhbmRsaW5nIHRoZSBzdGFja2VkIGNvbnRlbnQgYmVoYXZpb3IgKi9cbiAgICBwcml2YXRlIF9pbml0U3RhY2tDb250ZW50U3Vic2NyaXB0aW9uKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl90YWJQYW5lbHNDaGFuZ2UkXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBmaWx0ZXIoKCkgPT4gdGhpcy5zdGFja0NvbnRlbnQpLFxuICAgICAgICAgICAgICAgIGRlbGF5KDApLFxuICAgICAgICAgICAgICAgIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLl9kZXN0cm95UmVmKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PlxuICAgICAgICAgICAgICAgIHRoaXMuX3RhYkFycmF5LmZpbHRlcigodGFiKSA9PiAhdGFiLnBhbmVsLmRpc2FibGVkKS5mb3JFYWNoKCh0YWIpID0+IHRhYi5wYW5lbC5fZXhwYW5kKHRydWUpKVxuICAgICAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2xpc3Rlbk9uVGFiUGFuZWxzQW5kVXBkYXRlU3RvcmFnZVN0cnVjdHVyZXMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3RhYlBhbmVsc0NoYW5nZSRcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIG1hcCgodGFiUGFuZWxzKSA9PlxuICAgICAgICAgICAgICAgICAgICB0YWJQYW5lbHMubWFwKChlbCkgPT4gdGhpcy5fdGFiQXJyYXk/LmZpbmQoKHRhYkluZm8pID0+IHRhYkluZm8ucGFuZWwgPT09IGVsKSB8fCBuZXcgVGFiSW5mbyhlbCkpXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5fZGVzdHJveVJlZilcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKHRhYnMpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLl90YWJBcnJheSA9IHRhYnM7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2xpc3Rlbk9uVGFiUGFuZWxzRXhwYW5kZWRDaGFuZ2UoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3RhYlBhbmVsc0NoYW5nZSRcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIG1hcCgodGFiUGFuZWxzKSA9PiB0YWJQYW5lbHMubWFwKCh0YWIpID0+IHRhYi5fZXhwYW5kZWRTdGF0ZUNoYW5nZS5hc09ic2VydmFibGUoKSkpLFxuICAgICAgICAgICAgICAgIHN3aXRjaE1hcCgodGFiUGFuZWxzKSA9PiBtZXJnZSguLi50YWJQYW5lbHMpKSxcbiAgICAgICAgICAgICAgICB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5fZGVzdHJveVJlZilcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKGV2ZW50KSA9PiB0aGlzLl9leHBhbmRUYWIoZXZlbnQudGFyZ2V0LCBldmVudC5zdGF0ZSkpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfbGlzdGVuT25UYWJQYW5lbHNBbmRJbml0aWFsbHlFeHBhbmRUYWJQYW5lbCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fdGFiUGFuZWxzQ2hhbmdlJC5waXBlKHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLl9kZXN0cm95UmVmKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGFjdGl2ZVRhYiA9IHRoaXMuX3RhYkFycmF5LmZpbmQoKF90YWIpID0+IF90YWIuYWN0aXZlKTtcbiAgICAgICAgICAgIGxldCB0YWI6IE51bGxhYmxlPFRhYkluZm8+O1xuXG4gICAgICAgICAgICBpZiAoIWFjdGl2ZVRhYiB8fCB0aGlzLnNlbGVjdERlZmF1bHRPblRhYnNDaGFuZ2UpIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5kZWZhdWx0VGFiKSB7XG4gICAgICAgICAgICAgICAgICAgIHRhYiA9IHRoaXMuX3RhYkFycmF5LmZpbmQoKF90YWIpID0+ICFfdGFiLmRpc2FibGVkICYmIF90YWIuaWQgPT09IHRoaXMuZGVmYXVsdFRhYik7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKCF0YWIpIHtcbiAgICAgICAgICAgICAgICAgICAgdGFiID0gdGhpcy5fdGFiQXJyYXkuZmluZCgoX3RhYikgPT4gIV90YWIuZGlzYWJsZWQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHRhYiAmJiBhY3RpdmVUYWIgIT09IHRhYikge1xuICAgICAgICAgICAgICAgIHRoaXMuX2V4cGFuZFRhYih0YWIucGFuZWwsIHRydWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2xpc3Rlbk9uUHJvcGVydGllc0NoYW5nZSgpOiB2b2lkIHtcbiAgICAgICAgbWVyZ2UodGhpcy50YWJQYW5lbFByb3BlcnR5Q2hhbmdlZCwgdGhpcy50YWJQYW5lbHMuY2hhbmdlcylcbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLl9kZXN0cm95UmVmKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5fZGV0ZWN0Q2hhbmdlcygpKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2FjdGl2YXRlU3RhY2tlZFRhYih0YWJQYW5lbDogVGFiUGFuZWxDb21wb25lbnQsIHNjcm9sbCA9IHRydWUpOiB2b2lkIHtcbiAgICAgICAgaWYgKHNjcm9sbCkge1xuICAgICAgICAgICAgdGhpcy5fc2Nyb2xsVG9QYW5lbCh0YWJQYW5lbCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fdGFiQXJyYXkuZm9yRWFjaCgodGFiKSA9PiB7XG4gICAgICAgICAgICB0YWIuYWN0aXZlID0gdGFiLnBhbmVsID09PSB0YWJQYW5lbDtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9hY3RpdmF0ZUV4cGFuZGFibGVUYWIodGFiUGFuZWw6IFRhYlBhbmVsQ29tcG9uZW50LCBleHBhbmQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgY29uc3QgY29sbGFwc2UgPSB0aGlzLmNvbGxhcHNpYmxlVGFicyAmJiAhZXhwYW5kO1xuXG4gICAgICAgIHRoaXMuX3RhYkFycmF5LmZvckVhY2goKHRhYikgPT4ge1xuICAgICAgICAgICAgY29uc3QgaXNBY3RpdmUgPSB0YWIucGFuZWwgPT09IHRhYlBhbmVsICYmICFjb2xsYXBzZTtcblxuICAgICAgICAgICAgdGFiLnBhbmVsLl9leHBhbmQoaXNBY3RpdmUpO1xuICAgICAgICAgICAgdGFiLmFjdGl2ZSA9IGlzQWN0aXZlO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2V4cGFuZFRhYih0YWJQYW5lbDogVGFiUGFuZWxDb21wb25lbnQsIGV4cGFuZDogYm9vbGVhbiwgZGV0ZWN0Q2hhbmdlcyA9IHRydWUpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuc3RhY2tDb250ZW50KSB7XG4gICAgICAgICAgICB0aGlzLl9hY3RpdmF0ZVN0YWNrZWRUYWIodGFiUGFuZWwpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKCF0aGlzLl9jYW5DaGFuZ2VFeHBhbmRTdGF0ZSh0YWJQYW5lbCwgZXhwYW5kKSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5fYWN0aXZhdGVFeHBhbmRhYmxlVGFiKHRhYlBhbmVsLCBleHBhbmQpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGRldGVjdENoYW5nZXMpIHtcbiAgICAgICAgICAgIHRoaXMuX2RldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX3NlbGVjdGVkVGFiQ2hhbmdlKHRhYlBhbmVsKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3Njcm9sbFRvUGFuZWwodGFiUGFuZWw6IFRhYlBhbmVsQ29tcG9uZW50KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHBhbmVsRWxlbWVudCA9IHRhYlBhbmVsLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtcbiAgICAgICAgY29uc3QgY29udGFpbmVyRWxlbWVudCA9IHRoaXMuY29udGVudENvbnRhaW5lci5uYXRpdmVFbGVtZW50O1xuICAgICAgICBjb25zdCBkaXN0YW5jZVRvU2Nyb2xsID0gcGFuZWxFbGVtZW50Lm9mZnNldFRvcCAtIGNvbnRhaW5lckVsZW1lbnQub2Zmc2V0VG9wO1xuICAgICAgICBjb25zdCBtYXhpbXVtU2Nyb2xsVG9wID0gY29udGFpbmVyRWxlbWVudC5zY3JvbGxIZWlnaHQgLSBjb250YWluZXJFbGVtZW50LmNsaWVudEhlaWdodDtcbiAgICAgICAgY29uc3QgY3VycmVudFNjcm9sbFBvc2l0aW9uID0gTWF0aC5jZWlsKGNvbnRhaW5lckVsZW1lbnQuc2Nyb2xsVG9wKTtcblxuICAgICAgICBpZiAoIShjdXJyZW50U2Nyb2xsUG9zaXRpb24gPT09IG1heGltdW1TY3JvbGxUb3AgJiYgZGlzdGFuY2VUb1Njcm9sbCA+IG1heGltdW1TY3JvbGxUb3ApKSB7XG4gICAgICAgICAgICAhdGhpcy5faW5pdCA/ICh0aGlzLl9kaXNhYmxlU2Nyb2xsU3B5ID0gdHJ1ZSkgOiAodGhpcy5faW5pdCA9IGZhbHNlKTtcbiAgICAgICAgICAgIGZyb21FdmVudChjb250YWluZXJFbGVtZW50LCAnc2Nyb2xsJylcbiAgICAgICAgICAgICAgICAucGlwZShkZWJvdW5jZVRpbWUoMTAwKSwgZmlyc3QoKSwgdGFrZVVudGlsRGVzdHJveWVkKHRoaXMuX2Rlc3Ryb3lSZWYpKVxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4gKHRoaXMuX2Rpc2FibGVTY3JvbGxTcHkgPSBmYWxzZSkpO1xuICAgICAgICAgICAgc2Nyb2xsVG9wKGNvbnRhaW5lckVsZW1lbnQsIGRpc3RhbmNlVG9TY3JvbGwpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuZm9jdXNGaXJzdEZvY3VzYWJsZUVsZW1lbnQpIHtcbiAgICAgICAgICAgIHRhYlBhbmVsLl9mb2N1c0ZpcnN0Rm9jdXNhYmxlRWxlbWVudCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gV2hldGhlciB0YWIgY2FuIGJlIGV4cGFuZGVkL2NvbGxhcHNlZCAqL1xuICAgIHByaXZhdGUgX2NhbkNoYW5nZUV4cGFuZFN0YXRlKHRhYlBhbmVsOiBUYWJQYW5lbENvbXBvbmVudCwgZXhwYW5kOiBib29sZWFuKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhdGFiUGFuZWwuZGlzYWJsZWQgJiYgZXhwYW5kICE9PSB0YWJQYW5lbC5leHBhbmRlZCAmJiBleHBhbmQgPT09IGZhbHNlID8gdGhpcy5jb2xsYXBzaWJsZVRhYnMgOiB0cnVlO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfc2VsZWN0ZWRUYWJDaGFuZ2UodGFiUGFuZWw6IFRhYlBhbmVsQ29tcG9uZW50KTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRUYWJDaGFuZ2UuZW1pdCh0YWJQYW5lbCk7XG5cbiAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLl90YWJBcnJheS5maW5kSW5kZXgoKHRhYkluZm8pID0+IHRhYkluZm8ucGFuZWwgPT09IHRhYlBhbmVsKTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZFRhYkluZGV4Q2hhbmdlLmVtaXQoaW5kZXgpO1xuICAgIH1cbn1cbiIsIjxkaXYgI2hlYWRlckNvbnRhaW5lciByb2xlPVwidGFibGlzdFwiIGNsYXNzPVwiZmQtdGFic1wiIFtjbGFzc109XCIobW9kZSA/ICdmZC10YWJzLS0nICsgbW9kZSA6ICcnKSArICgnIGZkLXRhYnMtLScgKyBzaXplKVwiPlxuICAgIDxmZC1vdmVyZmxvdy1sYXlvdXRcbiAgICAgICAgW21heFZpc2libGVJdGVtc109XCJtYXhWaXNpYmxlVGFic1wiXG4gICAgICAgIFtlbmFibGVLZXlib2FyZE5hdmlnYXRpb25dPVwidHJ1ZVwiXG4gICAgICAgIG5hdmlnYXRpb25UcmlnZ2VyPVwia2V5ZG93blwiXG4gICAgICAgIChoaWRkZW5JdGVtc0NvdW50KT1cImhpZGRlbkl0ZW1zQ291bnQuZW1pdCgkZXZlbnQpXCJcbiAgICAgICAgKHZpc2libGVJdGVtc0NvdW50KT1cInZpc2libGVJdGVtc0NvdW50LmVtaXQoJGV2ZW50KVwiXG4gICAgPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCB0YWIgb2YgX3RhYkFycmF5OyBsZXQgaSA9IGluZGV4OyBsZXQgbGFzdCA9IGxhc3RcIj5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBmZC10YWItaXRlbVxuICAgICAgICAgICAgICAgICpmZE92ZXJmbG93SXRlbVJlZj1cInRhYlwiXG4gICAgICAgICAgICAgICAgZmRPdmVyZmxvd0xheW91dEl0ZW1cbiAgICAgICAgICAgICAgICBbZm9yY2VWaXNpYmlsaXR5XT1cInRhYi5wYW5lbC5fZm9yY2VkVmlzaWJpbGl0eVwiXG4gICAgICAgICAgICAgICAgW2hlYWRlcl09XCJ0YWIuaXNIZWFkZXJcIlxuICAgICAgICAgICAgICAgIFt0YWJJdGVtU3RhdGVdPVwidGFiLnRhYlN0YXRlXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgICAgICBmZC10YWItbGlua1xuICAgICAgICAgICAgICAgICAgICByb2xlPVwidGFiXCJcbiAgICAgICAgICAgICAgICAgICAgW2lkXT1cInRhYi5pZFwiXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtY29udHJvbHNdPVwidGFiLnBhbmVsSWRcIlxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cInRhYi5hcmlhTGFiZWwgfHwgbnVsbFwiXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCIhdGFiLmFyaWFMYWJlbCAmJiB0YWIuYXJpYUxhYmVsbGVkQnkgPyB0YWIuYXJpYUxhYmVsbGVkQnkgOiBudWxsXCJcbiAgICAgICAgICAgICAgICAgICAgZmRPdmVyZmxvd0xheW91dEZvY3VzYWJsZUl0ZW1cbiAgICAgICAgICAgICAgICAgICAgW2ZvY3VzYWJsZV09XCJ0YWIuYWN0aXZlXCJcbiAgICAgICAgICAgICAgICAgICAgW25hdmlnYWJsZV09XCIhdGFiLmRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICAgICAgW2FjdGl2ZV09XCJ0YWIuYWN0aXZlXCJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInRhYi5kaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgICAgIChrZXlkb3duKT1cIl90YWJIZWFkZXJLZXlkb3duSGFuZGxlcigkZXZlbnQsIHRhYi5wYW5lbClcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiX3RhYkhlYWRlckNsaWNrSGFuZGxlcih0YWIucGFuZWwpXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0YWIudGl0bGVUZW1wbGF0ZSB8fCBudWxsXCI+PC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiF0YWIudGl0bGVUZW1wbGF0ZVwiIFtuZ1N3aXRjaF09XCJtb2RlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInZmlsdGVyJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGZkLXRhYi1oZWFkZXIgKm5nSWY9XCJ0YWIuaXNIZWFkZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gZmQtdGFiLWNvdW50ZXItaGVhZGVyICpuZ0lmPVwidGFiLmNvdW50XCI+e3sgdGFiLmNvdW50IH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBmZC10YWItbGFiZWwgKm5nSWY9XCJ0YWIudGl0bGVcIj57eyB0YWIudGl0bGUgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhdGFiLmlzSGVhZGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGZkLXRhYi1pY29uIFtpY29uXT1cInRhYi5nbHlwaFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgZmQtdGFiLWNvdW50Pnt7IHRhYi5jb3VudCB9fTwvcD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBmZC10YWItbGFiZWw+e3sgdGFiLnRpdGxlIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidpY29uLW9ubHknXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gZmQtdGFiLWljb24gW2ljb25dPVwidGFiLmdseXBoXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGZkLXRhYi1jb3VudD57eyB0YWIuY291bnQgfX08L3A+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidwcm9jZXNzJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGZkLXRhYi1pY29uICpuZ0lmPVwidGFiLmdseXBoXCIgW2ljb25dPVwidGFiLmdseXBoXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgZmQtdGFiLXByb2Nlc3M+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGZkLXRhYi1sYWJlbCAqbmdJZj1cInRhYi5jb3VudFwiPnt7IHRhYi5jb3VudCB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gZmQtdGFiLWxhYmVsICpuZ0lmPVwidGFiLnRpdGxlXCI+e3sgdGFiLnRpdGxlIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoRGVmYXVsdD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBmZC10YWItY291bnQgKm5nSWY9XCJ0YWIuY291bnRcIj57eyB0YWIuY291bnQgfX08L3A+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gZmQtdGFiLXRhZz57eyB0YWIudGl0bGUgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPC9hPlxuXG4gICAgICAgICAgICAgICAgPGRpdiBmZC10YWItcHJvY2Vzcy1pY29uICpuZ0lmPVwibW9kZSA9PT0gJ3Byb2Nlc3MnICYmICFsYXN0XCI+PC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cInRhYi5pc0hlYWRlclwiIGZkLXRhYi1zZXBhcmF0b3I+PC9kaXY+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgIDxuZy1jb250YWluZXIgKmZkT3ZlcmZsb3dFeHBhbmQ9XCJsZXQgdGFiczsgaXRlbXM6IF90YWJBcnJheVwiPlxuICAgICAgICAgICAgPGZkLWl0ZW0tZXhwYW5kIFtmZE1lbnVUcmlnZ2VyXT1cIm1lbnVcIiAqbmdJZj1cInRhYnMubGVuZ3RoID4gMFwiIChrZXlkb3duKT1cIl9vblRyaWdnZXJLZXlkb3duKCRldmVudCwgbWVudSlcIj5cbiAgICAgICAgICAgIDwvZmQtaXRlbS1leHBhbmQ+XG5cbiAgICAgICAgICAgIDxmZC1tZW51ICNtZW51PlxuICAgICAgICAgICAgICAgIDxsaVxuICAgICAgICAgICAgICAgICAgICBmZC1tZW51LWl0ZW1cbiAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IHRhYiBvZiB0YWJzXCJcbiAgICAgICAgICAgICAgICAgICAgKG9uU2VsZWN0KT1cIl9vdmVyZmxvd2luZ1RhYkhlYWRlckNsaWNrSGFuZGxlcih0YWIuaXRlbS5wYW5lbClcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBmZC1tZW51LWludGVyYWN0aXZlPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICF0YWIuaXRlbS50aXRsZVRlbXBsYXRlICYmIG1vZGUgPT09ICdpY29uLW9ubHknXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IGljb25Pbmx5VGVtcGxhdGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogdGFiLml0ZW0udGl0bGVUZW1wbGF0ZSB8fCB0ZXh0VGl0bGU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IHsgJGltcGxpY2l0OiB0YWIuaXRlbSB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgIDwvZmQtbWVudT5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9mZC1vdmVyZmxvdy1sYXlvdXQ+XG48L2Rpdj5cblxuPGRpdlxuICAgIGNsYXNzPVwiZmQtdGFic19fY29udGVudFwiXG4gICAgW3N0eWxlLm1heC1oZWlnaHRdPVwibWF4Q29udGVudEhlaWdodFwiXG4gICAgZmRTY3JvbGxTcHlcbiAgICBmZC1zY3JvbGxiYXJcbiAgICBbb3ZlcnJpZGVUYWJpbmRleF09XCJmYWxzZVwiXG4gICAgW3RyYWNrZWRUYWdzXT1cIlsnZmQtdGFiJ11cIlxuICAgIFtzY3JvbGxTcHlEaXNhYmxlZF09XCJfZGlzYWJsZVNjcm9sbFNweVwiXG4gICAgKHNweUNoYW5nZSk9XCJfaGlnaGxpZ2h0QWN0aXZlVGFiKCRldmVudClcIlxuPlxuICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbjwvZGl2PlxuXG48bmctdGVtcGxhdGUgI3RleHRUaXRsZSBsZXQtdGFiPlxuICAgIDxzcGFuIGZkLW1lbnUtdGl0bGU+e3sgdGFiLnRpdGxlIH19PC9zcGFuPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNpY29uT25seVRlbXBsYXRlIGxldC10YWI+XG4gICAgPHNwYW4gZmQtdGFiLWljb24gW2ljb25dPVwidGFiLmdseXBoXCI+XG4gICAgICAgIDxwIGZkLXRhYi1jb3VudD57eyB0YWIuY291bnQgfX08L3A+XG4gICAgPC9zcGFuPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
@@ -1,13 +1,14 @@
1
1
  import * as i0 from '@angular/core';
2
- import { EventEmitter, Directive, Input, Output, HostListener, NgModule } from '@angular/core';
2
+ import { EventEmitter, inject, ElementRef, DestroyRef, Directive, Input, Output, HostListener, NgModule } from '@angular/core';
3
+ import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
4
+ import { resizeObservable } from '@fundamental-ngx/cdk/utils';
5
+ import { debounceTime } from 'rxjs';
3
6
 
4
7
  /**
5
8
  * A directive designed to help navigation elements determine the element currently in view of the user.
6
9
  */
7
10
  class ScrollSpyDirective {
8
- /** @hidden */
9
- constructor(_elRef) {
10
- this._elRef = _elRef;
11
+ constructor() {
11
12
  /**
12
13
  * An array of tags to track.
13
14
  */
@@ -36,6 +37,10 @@ class ScrollSpyDirective {
36
37
  * The returned value is the HTMLElement itself.
37
38
  */
38
39
  this.spyChange = new EventEmitter();
40
+ /** @hidden */
41
+ this._elRef = inject(ElementRef);
42
+ /** @hidden */
43
+ this._destroyRef = inject(DestroyRef);
39
44
  }
40
45
  /** @hidden */
41
46
  onScroll(event) {
@@ -62,7 +67,16 @@ class ScrollSpyDirective {
62
67
  this.spyChange.emit(this._currentActive);
63
68
  }
64
69
  }
65
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: ScrollSpyDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
70
+ /** @hidden */
71
+ ngOnInit() {
72
+ // When the spy container being resized, re-evaluate scroll position.
73
+ resizeObservable(this._elRef.nativeElement)
74
+ .pipe(debounceTime(30), takeUntilDestroyed(this._destroyRef))
75
+ .subscribe(() => {
76
+ this.onScroll({ target: this._elRef.nativeElement });
77
+ });
78
+ }
79
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: ScrollSpyDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
66
80
  static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.7", type: ScrollSpyDirective, isStandalone: true, selector: "[fdScrollSpy]", inputs: { trackedTags: "trackedTags", fireEmpty: "fireEmpty", targetPercent: "targetPercent", targetOffset: "targetOffset", scrollSpyDisabled: "scrollSpyDisabled" }, outputs: { spyChange: "spyChange" }, host: { listeners: { "scroll": "onScroll($event)" } }, ngImport: i0 }); }
67
81
  }
68
82
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: ScrollSpyDirective, decorators: [{
@@ -71,7 +85,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.7", ngImpor
71
85
  selector: '[fdScrollSpy]',
72
86
  standalone: true
73
87
  }]
74
- }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { trackedTags: [{
88
+ }], propDecorators: { trackedTags: [{
75
89
  type: Input
76
90
  }], fireEmpty: [{
77
91
  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 standalone: true\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 constructor(private readonly _elRef: ElementRef) {}\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","import { NgModule } from '@angular/core';\n\nimport { ScrollSpyDirective } from './scroll-spy.directive';\n\n/**\n * @deprecated\n * Use direct `ScrollSpyDirective` import.\n */\n@NgModule({\n imports: [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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"}
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 {\n DestroyRef,\n Directive,\n ElementRef,\n EventEmitter,\n HostListener,\n Input,\n OnInit,\n Output,\n inject\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { resizeObservable } from '@fundamental-ngx/cdk/utils';\nimport { debounceTime } 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 standalone: true\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(DestroyRef);\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), takeUntilDestroyed(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/**\n * @deprecated\n * Use direct `ScrollSpyDirective` import.\n */\n@NgModule({\n imports: [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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"}
@@ -614,6 +614,8 @@ class TabListComponent {
614
614
  this.visibleItemsCount = new EventEmitter();
615
615
  /** Event emitted when hidden items count has been changed. */
616
616
  this.hiddenItemsCount = new EventEmitter();
617
+ /** @hidden Collection of tabs in original order */
618
+ this._tabArray = [];
617
619
  /** @hidden Whether to disable scroll spy */
618
620
  this._disableScrollSpy = false;
619
621
  /** @hidden */
@@ -702,7 +704,7 @@ class TabListComponent {
702
704
  /** @hidden */
703
705
  _listenOnTabPanelsAndUpdateStorageStructures() {
704
706
  this._tabPanelsChange$
705
- .pipe(map((tabPanels) => tabPanels.map((el) => new TabInfo(el))), takeUntilDestroyed(this._destroyRef))
707
+ .pipe(map((tabPanels) => tabPanels.map((el) => this._tabArray?.find((tabInfo) => tabInfo.panel === el) || new TabInfo(el))), takeUntilDestroyed(this._destroyRef))
706
708
  .subscribe((tabs) => {
707
709
  this._tabArray = tabs;
708
710
  });
@@ -1 +1 @@
1
- {"version":3,"file":"fundamental-ngx-core-tabs.mjs","sources":["../../../../libs/core/src/lib/tabs/tab-utils/tab-directives.ts","../../../../libs/core/src/lib/tabs/tab-item-expand/tab-item-expand.component.ts","../../../../libs/core/src/lib/tabs/tab-item-expand/tab-item-expand.component.html","../../../../libs/core/src/lib/tabs/tab-link/tab-link.directive.ts","../../../../libs/core/src/lib/tabs/tab-item/tab-item.directive.ts","../../../../libs/core/src/lib/tabs/tab-list.token.ts","../../../../libs/core/src/lib/tabs/tab-panel/tab-panel.component.ts","../../../../libs/core/src/lib/tabs/tab-panel/tab-panel.component.html","../../../../libs/core/src/lib/tabs/tab-utils/tab-info.class.ts","../../../../libs/core/src/lib/tabs/tab-list.component.ts","../../../../libs/core/src/lib/tabs/tab-list.component.html","../../../../libs/core/src/lib/tabs/tab-nav/tab-nav.component.ts","../../../../libs/core/src/lib/tabs/tabs.module.ts","../../../../libs/core/src/lib/tabs/fundamental-ngx-core-tabs.ts"],"sourcesContent":["import { NgIf } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n Directive,\n ElementRef,\n HostBinding,\n Input,\n OnChanges,\n ViewEncapsulation\n} from '@angular/core';\nimport { CssClassBuilder, applyCssClass } from '@fundamental-ngx/cdk/utils';\nimport { IconComponent } from '@fundamental-ngx/core/icon';\n\n/**\n * Directive used to identify the template which will populate the tab header.\n * Used to achieve complex headers that require more than a string.\n *\n * ```html\n * <fd-tab>\n * <ng-template fd-tab-title>\n * <fd-icon [glyph]=\"'delete'\"></fd-icon>\n * <span>Tab Label</span>\n * </ng-template>\n * </fd-tab>\n * ```\n */\n@Directive({\n selector: '[fdTabTitleTemplate], [fd-tab-title-template]',\n standalone: true\n})\nexport class TabTitleDirective {}\n\n/**\n * Directive for counter element, available in most of the modes on `tab` component\n */\n@Directive({\n selector: '[fdTabCount], [fd-tab-count]',\n standalone: true\n})\nexport class TabCountDirective {\n /** @hidden */\n @HostBinding('class.fd-tabs__count')\n fdTabsCountClass = true;\n}\n\n/**\n * Directive for icon element, available in most of the modes on `tab` component\n */\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: '[fd-tab-icon]',\n template: `\n <fd-icon role=\"presentation\" *ngIf=\"icon\" [glyph]=\"icon\"></fd-icon>\n <ng-content></ng-content>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n standalone: true,\n imports: [NgIf, IconComponent]\n})\nexport class TabIconComponent implements CssClassBuilder, OnChanges {\n /** Apply user custom styles */\n @Input()\n class: string;\n\n /**\n * The icon to include inside the element\n * See the icon page for the list of icons.\n */\n @Input()\n icon: string;\n\n /** @hidden */\n constructor(public readonly elementRef: ElementRef) {}\n\n /** @hidden\n * Function runs when component is initialized\n * function should build component css class\n * function should build css style\n */\n ngOnChanges(): void {\n this.buildComponentCssClass();\n }\n\n /** @hidden CssClassBuilder interface implementation\n * function must return single string\n * function is responsible for order which css classes are applied\n */\n @applyCssClass\n buildComponentCssClass(): string[] {\n return ['fd-tabs__icon', this.class];\n }\n}\n\n@Directive({\n selector: '[fdTabTag], [fd-tab-tag]',\n host: {\n class: 'fd-tabs__tag'\n },\n standalone: true\n})\nexport class TabTagDirective {}\n\n@Directive({\n selector: '[fdTabLabel], [fd-tab-label]',\n host: {\n class: 'fd-tabs__label'\n },\n standalone: true\n})\nexport class TabLabelDirective {}\n\n@Directive({\n selector: '[fdTabProcess], [fd-tab-process]',\n host: {\n class: 'fd-tabs__process'\n },\n standalone: true\n})\nexport class TabProcessDirective {}\n\n@Directive({\n selector: '[fdTabHeader], [fd-tab-header]',\n host: {\n class: 'fd-tabs__header'\n },\n standalone: true\n})\nexport class TabHeaderDirective {}\n\n@Directive({\n selector: '[fdTabCounterHeader], [fd-tab-counter-header]',\n host: {\n class: 'fd-tabs__counter-header'\n },\n standalone: true\n})\nexport class TabCounterHeaderDirective {}\n\n@Directive({\n selector: '[fdTabProcessIcon], [fd-tab-process-icon]',\n host: {\n class: 'fd-tabs__process-icon'\n },\n standalone: true\n})\nexport class TabProcessIconDirective {}\n\n@Directive({\n selector: '[fdTabSeparator], [fd-tab-separator]',\n host: {\n class: 'fd-tabs__separator'\n },\n standalone: true\n})\nexport class TabSeparatorDirective {}\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\nimport { IconComponent } from '@fundamental-ngx/core/icon';\nimport { FdTranslatePipe } from '@fundamental-ngx/i18n';\nimport { TabTagDirective } from '../tab-utils/tab-directives';\n\n/**\n * Represents a list of tab-panels.\n */\n@Component({\n selector: 'fd-item-expand',\n templateUrl: './tab-item-expand.component.html',\n styleUrls: ['./tab-item-expand.component.scss'],\n host: {\n role: 'tab',\n class: 'fd-tabs__item fd-tabs__item--overflow'\n },\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [TabTagDirective, IconComponent, FdTranslatePipe]\n})\nexport class TabItemExpandComponent {}\n","<a class=\"fd-tabs__link\" role=\"tab\" [attr.tabindex]=\"0\">\n <span fd-tab-tag>{{ 'coreTabs.tabListExpandButtonText' | fdTranslate }}</span>\n <fd-icon glyph=\"slim-arrow-down\" aria-label=\"See More\"></fd-icon>\n</a>\n","import { FocusableOption } from '@angular/cdk/a11y';\nimport { ENTER, SPACE } from '@angular/cdk/keycodes';\nimport { Directive, ElementRef, EventEmitter, HostBinding, HostListener, Input, Output } from '@angular/core';\nimport { AbstractFdNgxClass, KeyUtil } from '@fundamental-ngx/cdk/utils';\n\n/**\n * Tab link for nav mode\n *\n * ```html\n * <a fd-tab-link>\n * link\n * </a>\n * ```\n */\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[fd-tab-link]',\n host: {\n role: 'tab',\n tabindex: '-1'\n },\n standalone: true\n})\nexport class TabLinkDirective extends AbstractFdNgxClass implements FocusableOption {\n /** Whether the link is active */\n @Input()\n @HostBinding('attr.aria-selected')\n active: boolean;\n\n /**\n * Only visual / accessibility thing on tab-nav mode\n * RouterLink does not respect preventDefault/stopPropagation\n */\n @Input()\n @HostBinding('attr.aria-disabled')\n @HostBinding('class.is-disabled')\n disabled: boolean;\n\n /** Event Emitted always when, any keyboard event is dispatched on this element */\n @Output()\n readonly keyDown: EventEmitter<KeyboardEvent> = new EventEmitter<KeyboardEvent>();\n\n /** Event Emitted when item has been focused. */\n @Output()\n readonly focused = new EventEmitter<void>();\n\n /** @hidden */\n _setProperties(): void {\n this._addClassToElement('fd-tabs__link');\n if (this.active) {\n this._addClassToElement('is-selected');\n }\n }\n\n /** @hidden */\n constructor(public elementRef: ElementRef) {\n super(elementRef);\n }\n\n /** @hidden */\n @HostListener('focus')\n private _onFocus(): void {\n this.focused.emit();\n }\n\n /** @hidden */\n @HostListener('keyup', ['$event'])\n private _onKeyUp(event: KeyboardEvent): void {\n if (KeyUtil.isKeyCode(event, [ENTER, SPACE])) {\n this.focused.emit();\n }\n }\n\n /** @hidden */\n focus(): void {\n this.elementRef.nativeElement.focus();\n }\n}\n","import { ContentChild, Directive, ElementRef, HostBinding, Input, OnChanges, OnInit } from '@angular/core';\nimport { CssClassBuilder, Nullable, applyCssClass } from '@fundamental-ngx/cdk/utils';\nimport { TabLinkDirective } from '../tab-link/tab-link.directive';\n\nexport type TabItemState = 'success' | 'error' | 'warning' | 'information' | 'neutral';\n\n/**\n * Tab Item is optional wrapper for Tab link\n *\n * ```html\n * <div fd-tab-item>\n * <a fd-tab-link>\n * link\n * </a>\n * </div>\n * ```\n */\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[fd-tab-item]',\n standalone: true\n})\nexport class TabItemDirective implements CssClassBuilder, OnChanges, OnInit {\n /** Apply user custom styles */\n @Input()\n class = '';\n\n /** Semantic type of the tab item */\n @Input()\n tabItemState: Nullable<TabItemState>;\n\n /** This should be used only on `filterMode`. Flag should be enable for first item */\n @Input()\n header: boolean;\n\n /** Disabled state for tab item */\n @Input()\n @HostBinding('attr.aria-disabled')\n @HostBinding('class.is-disabled')\n disabled = false;\n\n /** Defines if there will be added fd-tabs__item class. Enabled by default. */\n @Input()\n fdTabItemClass = true;\n\n /** @hidden */\n @ContentChild(TabLinkDirective)\n linkItem: TabLinkDirective;\n\n /** @hidden */\n constructor(public readonly elementRef: ElementRef) {}\n\n /** @hidden */\n ngOnChanges(): void {\n this.buildComponentCssClass();\n }\n\n /** @hidden */\n ngOnInit(): void {\n this.buildComponentCssClass();\n }\n\n /** @hidden */\n @applyCssClass\n buildComponentCssClass(): string[] {\n return [\n this.fdTabItemClass ? 'fd-tabs__item' : '',\n this.header ? 'fd-tabs__item--header' : '',\n this.tabItemState ? `fd-tabs__item--${this.tabItemState}` : '',\n this.class\n ];\n }\n}\n","import { InjectionToken } from '@angular/core';\nimport { TabListComponentInterface } from './tab-list-component.interface';\n\nexport const LIST_COMPONENT = new InjectionToken<TabListComponentInterface>('ListComponent');\n","import { NgIf } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n ElementRef,\n EventEmitter,\n HostBinding,\n Inject,\n Input,\n NgZone,\n OnChanges,\n Optional,\n Output,\n TemplateRef,\n ViewEncapsulation\n} from '@angular/core';\nimport { Nullable } from '@fundamental-ngx/cdk/utils';\nimport { Subject, first } from 'rxjs';\nimport { TabItemState } from '../tab-item/tab-item.directive';\nimport { TabListComponentInterface } from '../tab-list-component.interface';\nimport { LIST_COMPONENT } from '../tab-list.token';\nimport { TabTitleDirective } from '../tab-utils/tab-directives';\n\nlet tabPanelUniqueId = 0;\n\nexport class TabPanelStateChange {\n /**\n * Tab panel state change event\n * @param target Tab panel that is being changed\n * @param state New state of the tab panel\n */\n constructor(public target: TabPanelComponent, public state: boolean) {}\n}\n\n/**\n * Represents the body of a tab element. It also contains elements pertaining to the associated tab header.\n */\n@Component({\n selector: 'fd-tab',\n templateUrl: './tab-panel.component.html',\n host: {\n role: 'tabpanel',\n class: 'fd-tabs__panel',\n '[id]': '_panelId',\n '[attr.aria-labelledby]': 'id'\n },\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [NgIf]\n})\nexport class TabPanelComponent implements OnChanges {\n /** Id of the tab. If none is provided, one will be generated. */\n @Input()\n id: string = 'fd-tab-panel' + tabPanelUniqueId++;\n\n /** Aria-label of the tab. */\n @Input()\n ariaLabel: Nullable<string>;\n\n /** Id of the element that labels the tab. */\n @Input()\n ariaLabelledBy: Nullable<string>;\n\n /** The title of tab, depending on mode used, it will be placed in different position */\n @Input()\n title: Nullable<string>;\n\n /** The count of tab, depending on mode used, it will be placed in different position */\n @Input()\n count: Nullable<string>;\n\n /** Glyph icon, it can be used only on */\n @Input()\n glyph: string;\n\n /** Glyph icon, it can be used only on */\n @Input()\n header = false;\n\n /** Disabled state for tab item */\n @Input()\n disabled = false;\n\n /** Semantic type of the tab item */\n @Input()\n tabState: Nullable<TabItemState>;\n\n /** Event that is emitted when the tab panel has been opened. */\n @Output()\n opened = new EventEmitter<void>();\n\n /** Event that is emitted when the tab panel has been closed. */\n @Output()\n closed = new EventEmitter<void>();\n\n /** @hidden */\n @ContentChild(TabTitleDirective, { read: TemplateRef })\n titleTemplate: TemplateRef<any>;\n\n /** @hidden Event that is emitted when the tab panel . */\n _expandedStateChange = new Subject<TabPanelStateChange>();\n\n /** @hidden */\n _forcedVisibility = false;\n\n /** @hidden */\n @HostBinding('class.is-expanded')\n _expandedClass = false;\n\n /** @hidden Whether to display tab panel content */\n private _expanded = false;\n\n /** @hidden */\n get _panelId(): string {\n return this.id + '-panel';\n }\n\n /** @hidden */\n constructor(\n public elementRef: ElementRef,\n private _changeDetRef: ChangeDetectorRef,\n private _ngZone: NgZone,\n @Optional() @Inject(LIST_COMPONENT) private readonly _tabsComponent: TabListComponentInterface | null\n ) {}\n\n /** @hidden\n * Thanks to OnPush change strategy detection on tab-list parent component,\n * every change of any property should be reported. */\n ngOnChanges(): void {\n this._tabsComponent?.tabPanelPropertyChanged.next();\n }\n\n /** Whether tab panel content is expanded */\n get expanded(): boolean {\n return this._expanded;\n }\n\n /** Whether to expand tab panel content */\n open(open: boolean): void {\n this._expandedStateChange.next(new TabPanelStateChange(this, open));\n }\n\n /** @hidden Set new expand state */\n _expand(expanded: boolean): void {\n if (this._expanded !== expanded) {\n this._expanded = expanded;\n\n if (expanded) {\n this.opened.emit();\n } else {\n this.closed.emit();\n }\n\n this._changeDetRef.detectChanges();\n\n this._ngZone.onStable.pipe(first()).subscribe(() => this._updateHost());\n }\n }\n\n /** @hidden */\n _focusFirstFocusableElement(): void {\n this.elementRef.nativeElement\n .querySelector('button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])')\n ?.focus({ preventScroll: true });\n }\n\n /** @hidden */\n private _updateHost(): void {\n this._expandedClass = this.expanded;\n }\n}\n","<ng-container *ngIf=\"expanded\">\n <ng-content></ng-content>\n</ng-container>\n","import { TemplateRef } from '@angular/core';\n\nimport { TabPanelComponent } from '../tab-panel/tab-panel.component';\nimport { TabItemState } from '../tab-item/tab-item.directive';\nimport { Nullable } from '@fundamental-ngx/cdk/utils';\n\n/** @hidden */\nexport class TabInfo {\n /** Whether the tab is active */\n active: boolean;\n\n /** @hidden Width of the tab header */\n headerWidth: number;\n\n /** Corresponding tab panel */\n panel: TabPanelComponent;\n\n /** @hidden */\n constructor(tabPanel: TabPanelComponent) {\n this.panel = tabPanel;\n this.active = tabPanel.expanded;\n }\n\n /** Tab header title */\n get title(): Nullable<string> {\n return this.panel.title;\n }\n\n /** Whether the tab is disabled */\n get disabled(): boolean {\n return this.panel.disabled;\n }\n\n /** Whether the tab is tab header */\n get isHeader(): boolean {\n return this.panel.header;\n }\n\n /** @hidden */\n get id(): Nullable<string> {\n return this.panel.id;\n }\n\n /** @hidden */\n get ariaLabel(): Nullable<string> {\n return this.panel.ariaLabel;\n }\n\n /** @hidden */\n get ariaLabelledBy(): Nullable<string> {\n return this.panel.ariaLabelledBy;\n }\n\n /** @hidden */\n get tabState(): Nullable<TabItemState> {\n return this.panel.tabState;\n }\n\n /** @hidden */\n get titleTemplate(): TemplateRef<any> {\n return this.panel.titleTemplate;\n }\n\n /** @hidden */\n get count(): Nullable<string> {\n return this.panel.count;\n }\n\n /** @hidden */\n get glyph(): string {\n return this.panel.glyph;\n }\n\n /** @hidden */\n get forcedVisibility(): boolean {\n return this.panel._forcedVisibility;\n }\n\n /** @hidden */\n get panelId(): string {\n return this.panel._panelId;\n }\n}\n","import { ENTER, SPACE } from '@angular/cdk/keycodes';\nimport { CdkScrollable } from '@angular/cdk/overlay';\nimport { NgFor, NgIf, NgSwitch, NgSwitchCase, NgSwitchDefault, NgTemplateOutlet } from '@angular/common';\nimport {\n AfterContentInit,\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChildren,\n DestroyRef,\n ElementRef,\n EventEmitter,\n Input,\n OnDestroy,\n Output,\n QueryList,\n ViewChild,\n ViewChildren,\n ViewEncapsulation,\n forwardRef\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { KeyUtil, Nullable, scrollTop } from '@fundamental-ngx/cdk/utils';\nimport { ContentDensityObserver, contentDensityObserverProviders } from '@fundamental-ngx/core/content-density';\nimport {\n MenuComponent,\n MenuInteractiveComponent,\n MenuItemComponent,\n MenuTitleDirective,\n MenuTriggerDirective\n} from '@fundamental-ngx/core/menu';\nimport {\n OverflowExpandDirective,\n OverflowItemRefDirective,\n OverflowLayoutComponent,\n OverflowLayoutFocusableItemDirective,\n OverflowLayoutItemDirective\n} from '@fundamental-ngx/core/overflow-layout';\nimport { ScrollSpyDirective } from '@fundamental-ngx/core/scroll-spy';\nimport { ScrollbarDirective } from '@fundamental-ngx/core/scrollbar';\nimport { Observable, Subject, Subscription, fromEvent, merge } from 'rxjs';\nimport { debounceTime, delay, filter, first, map, startWith, switchMap } from 'rxjs/operators';\nimport { TabItemExpandComponent } from './tab-item-expand/tab-item-expand.component';\nimport { TabItemDirective } from './tab-item/tab-item.directive';\nimport { TabLinkDirective } from './tab-link/tab-link.directive';\nimport { TabListComponentInterface } from './tab-list-component.interface';\nimport { LIST_COMPONENT } from './tab-list.token';\nimport { TabPanelComponent } from './tab-panel/tab-panel.component';\nimport {\n TabCountDirective,\n TabCounterHeaderDirective,\n TabHeaderDirective,\n TabIconComponent,\n TabLabelDirective,\n TabProcessDirective,\n TabProcessIconDirective,\n TabSeparatorDirective,\n TabTagDirective\n} from './tab-utils/tab-directives';\nimport { TabInfo } from './tab-utils/tab-info.class';\n\nexport type TabModes = 'icon-only' | 'process' | 'filter';\n\nexport type TabSizes = 's' | 'm' | 'l' | 'xl' | 'xxl';\n\n/**\n * Represents a list of tab-panels.\n */\n@Component({\n selector: 'fd-tab-list',\n templateUrl: './tab-list.component.html',\n styleUrls: ['./tab-list.component.scss'],\n host: {\n class: 'fd-tabs-custom'\n },\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n contentDensityObserverProviders(),\n {\n provide: LIST_COMPONENT,\n useExisting: forwardRef(() => TabListComponent)\n }\n ],\n standalone: true,\n imports: [\n OverflowLayoutComponent,\n NgFor,\n OverflowItemRefDirective,\n TabItemDirective,\n OverflowLayoutItemDirective,\n TabLinkDirective,\n OverflowLayoutFocusableItemDirective,\n NgTemplateOutlet,\n NgIf,\n NgSwitch,\n NgSwitchCase,\n TabHeaderDirective,\n TabCounterHeaderDirective,\n TabLabelDirective,\n TabIconComponent,\n TabCountDirective,\n TabProcessDirective,\n NgSwitchDefault,\n TabTagDirective,\n TabProcessIconDirective,\n TabSeparatorDirective,\n OverflowExpandDirective,\n TabItemExpandComponent,\n MenuTriggerDirective,\n MenuComponent,\n MenuItemComponent,\n MenuInteractiveComponent,\n ScrollSpyDirective,\n CdkScrollable,\n ScrollbarDirective,\n MenuTitleDirective\n ]\n})\nexport class TabListComponent implements TabListComponentInterface, AfterContentInit, AfterViewInit, OnDestroy {\n /** Size of tab, it's mostly about adding spacing on tab container, available sizes 's' | 'm' | 'l' | 'xl' | 'xxl' */\n @Input()\n size: TabSizes = 'm';\n\n /**\n * Whether user wants to use tab component in certain mode. Modes available:\n * 'icon-only' | 'process' | 'filter'\n */\n @Input()\n mode: TabModes;\n\n /** Whether to move tabs overflowing in the tab bar to the dropdown */\n @Input()\n collapseOverflow = true;\n\n /** Limits the maximum number of tabs visible in the tab bar in collapseOverflow mode.\n * Other tabs will be moved to the collapsed tabs dropdown */\n @Input()\n maxVisibleTabs = Infinity;\n\n /** Whether to open tab content one under another without collapsing */\n @Input()\n stackContent = false;\n\n /** Maximum height of the content */\n @Input()\n maxContentHeight = '100%';\n\n /** Whether to enable collapsing expanded tab on expanded tab click */\n @Input()\n collapsibleTabs = false;\n\n /** Initially selected tab (by id). First not disabled one if not specified. */\n @Input()\n defaultTab: Nullable<string>;\n\n /** Whether to try to keep selected tab (default value) on tabs change or to select default one (first if not specified). */\n @Input()\n selectDefaultOnTabsChange = false;\n\n /** Whether to focus the first focusable element in a tab panel when using stacked tabs. */\n @Input()\n focusFirstFocusableElement = true;\n\n /** Event emitted when the selected panel changes. */\n @Output()\n selectedTabChange = new EventEmitter<TabPanelComponent>();\n\n /** Event emitted when the selected panel index changes. */\n @Output()\n selectedTabIndexChange = new EventEmitter<number>();\n\n /** Event emitted when visible items count has been changed. */\n @Output()\n visibleItemsCount = new EventEmitter<number>();\n\n /** Event emitted when hidden items count has been changed. */\n @Output()\n hiddenItemsCount = new EventEmitter<number>();\n\n /** @hidden */\n @ContentChildren(forwardRef(() => TabPanelComponent))\n tabPanels: QueryList<TabPanelComponent>;\n\n /** @hidden */\n @ViewChildren(TabLinkDirective)\n tabHeaderLinks: QueryList<TabLinkDirective>;\n\n /** @hidden */\n @ViewChildren(TabItemDirective)\n tabHeaders: QueryList<TabItemDirective>;\n\n /** @hidden */\n @ViewChild(TabItemExpandComponent, { read: ElementRef })\n overflowTrigger: ElementRef;\n\n /** @hidden */\n @ViewChild('headerContainer', { read: ElementRef })\n headerContainer: ElementRef;\n\n /** @hidden */\n @ViewChild(ScrollbarDirective)\n _scrollbar: ScrollbarDirective;\n\n /** @hidden */\n @ViewChild('menu', { read: MenuComponent })\n menu: MenuComponent;\n\n /** @hidden */\n @ViewChild(OverflowLayoutComponent)\n private _overflowLayout: OverflowLayoutComponent;\n\n /** @hidden */\n get contentContainer(): ElementRef<HTMLElement> {\n return this._scrollbar?.elementRef;\n }\n\n /** @hidden Collection of tabs in original order */\n _tabArray: TabInfo[];\n\n /** @hidden Whether to disable scroll spy */\n _disableScrollSpy = false;\n\n /** @hidden */\n _init = true;\n\n /** Event is thrown always when tab is selected by keyboard actions */\n readonly tabSelected: Subject<number> = new Subject<number>();\n\n /** Event is thrown always, when some property is changed */\n readonly tabPanelPropertyChanged: Subject<void> = new Subject<void>();\n\n /** @hidden */\n private _subscriptions = new Subscription();\n\n /** @hidden */\n constructor(\n private readonly _changeDetectorRef: ChangeDetectorRef,\n private _elRef: ElementRef,\n readonly _contentDensityObserver: ContentDensityObserver,\n private readonly _destroyRef: DestroyRef\n ) {}\n\n /** @hidden */\n ngAfterContentInit(): void {\n this._setupTabPanelsChangeListeners();\n }\n\n /** @hidden */\n ngAfterViewInit(): void {\n this._initStackContentSubscription();\n this._listenOnTabPanelsExpandedChange();\n this._listenOnTabPanelsAndInitiallyExpandTabPanel();\n this._listenOnPropertiesChange();\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n\n /** @hidden */\n _tabHeaderClickHandler(tabPanel: TabPanelComponent): void {\n this._expandTab(tabPanel, !tabPanel.expanded);\n }\n\n /** @hidden */\n _tabHeaderKeydownHandler(event: KeyboardEvent, tabPanel: TabPanelComponent): void {\n if (!KeyUtil.isKeyCode(event, [ENTER, SPACE])) {\n return;\n }\n\n event.preventDefault();\n this._tabHeaderClickHandler(tabPanel);\n }\n\n /** @hidden */\n _overflowingTabHeaderClickHandler(tabPanel: TabPanelComponent): void {\n this._tabArray.forEach((tab) => {\n tab.panel._forcedVisibility = tab.panel === tabPanel;\n });\n\n this._expandTab(tabPanel, true, false);\n\n this._overflowLayout.triggerRecalculation();\n\n this._detectChanges();\n }\n\n /** @hidden */\n _highlightActiveTab({ id }: HTMLElement): void {\n const tab = this._tabArray.find((_tab) => _tab.panel._panelId === id);\n if (tab) {\n const _tabWasActive = tab.active;\n this._activateStackedTab(tab.panel, false);\n if (!_tabWasActive) {\n this._selectedTabChange(tab.panel);\n }\n }\n }\n\n /** @hidden */\n _onTriggerKeydown(event: KeyboardEvent, menuRef: MenuComponent): void {\n if (KeyUtil.isKeyCode(event, [ENTER, SPACE])) {\n event.preventDefault();\n menuRef.toggle();\n }\n }\n\n /** @hidden */\n private get _tabPanelsChange$(): Observable<TabPanelComponent[]> {\n return this.tabPanels.changes.pipe(\n startWith(this.tabPanels),\n map((tabPanels) => tabPanels.toArray()),\n takeUntilDestroyed(this._destroyRef)\n );\n }\n\n /** @hidden */\n private _detectChanges(): void {\n if (this._changeDetectorRef && !this._changeDetectorRef['destroyed']) {\n this._changeDetectorRef.detectChanges();\n }\n }\n\n /** @hidden */\n private _setupTabPanelsChangeListeners(): void {\n this._listenOnTabPanelsAndUpdateStorageStructures();\n }\n\n /** @hidden Setup mechanisms required for handling the stacked content behavior */\n private _initStackContentSubscription(): void {\n this._tabPanelsChange$\n .pipe(\n filter(() => this.stackContent),\n delay(0),\n takeUntilDestroyed(this._destroyRef)\n )\n .subscribe(() =>\n this._tabArray.filter((tab) => !tab.panel.disabled).forEach((tab) => tab.panel._expand(true))\n );\n }\n\n /** @hidden */\n private _listenOnTabPanelsAndUpdateStorageStructures(): void {\n this._tabPanelsChange$\n .pipe(\n map((tabPanels) => tabPanels.map((el) => new TabInfo(el))),\n takeUntilDestroyed(this._destroyRef)\n )\n .subscribe((tabs) => {\n this._tabArray = tabs;\n });\n }\n\n /** @hidden */\n private _listenOnTabPanelsExpandedChange(): void {\n this._tabPanelsChange$\n .pipe(\n map((tabPanels) => tabPanels.map((tab) => tab._expandedStateChange.asObservable())),\n switchMap((tabPanels) => merge(...tabPanels)),\n takeUntilDestroyed(this._destroyRef)\n )\n .subscribe((event) => this._expandTab(event.target, event.state));\n }\n\n /** @hidden */\n private _listenOnTabPanelsAndInitiallyExpandTabPanel(): void {\n this._tabPanelsChange$.pipe(takeUntilDestroyed(this._destroyRef)).subscribe(() => {\n const activeTab = this._tabArray.find((_tab) => _tab.active);\n let tab: Nullable<TabInfo>;\n\n if (!activeTab || this.selectDefaultOnTabsChange) {\n if (this.defaultTab) {\n tab = this._tabArray.find((_tab) => !_tab.disabled && _tab.id === this.defaultTab);\n }\n\n if (!tab) {\n tab = this._tabArray.find((_tab) => !_tab.disabled);\n }\n }\n\n if (tab && activeTab !== tab) {\n this._expandTab(tab.panel, true);\n }\n });\n }\n\n /** @hidden */\n private _listenOnPropertiesChange(): void {\n merge(this.tabPanelPropertyChanged, this.tabPanels.changes)\n .pipe(takeUntilDestroyed(this._destroyRef))\n .subscribe(() => this._detectChanges());\n }\n\n /** @hidden */\n private _activateStackedTab(tabPanel: TabPanelComponent, scroll = true): void {\n if (scroll) {\n this._scrollToPanel(tabPanel);\n }\n this._tabArray.forEach((tab) => {\n tab.active = tab.panel === tabPanel;\n });\n }\n\n /** @hidden */\n private _activateExpandableTab(tabPanel: TabPanelComponent, expand: boolean): void {\n const collapse = this.collapsibleTabs && !expand;\n\n this._tabArray.forEach((tab) => {\n const isActive = tab.panel === tabPanel && !collapse;\n\n tab.panel._expand(isActive);\n tab.active = isActive;\n });\n }\n\n /** @hidden */\n private _expandTab(tabPanel: TabPanelComponent, expand: boolean, detectChanges = true): void {\n if (this.stackContent) {\n this._activateStackedTab(tabPanel);\n } else {\n if (!this._canChangeExpandState(tabPanel, expand)) {\n return;\n }\n\n this._activateExpandableTab(tabPanel, expand);\n }\n\n if (detectChanges) {\n this._detectChanges();\n }\n\n this._selectedTabChange(tabPanel);\n }\n\n /** @hidden */\n private _scrollToPanel(tabPanel: TabPanelComponent): void {\n const panelElement = tabPanel.elementRef.nativeElement;\n const containerElement = this.contentContainer.nativeElement;\n const distanceToScroll = panelElement.offsetTop - containerElement.offsetTop;\n const maximumScrollTop = containerElement.scrollHeight - containerElement.clientHeight;\n const currentScrollPosition = Math.ceil(containerElement.scrollTop);\n\n if (!(currentScrollPosition === maximumScrollTop && distanceToScroll > maximumScrollTop)) {\n !this._init ? (this._disableScrollSpy = true) : (this._init = false);\n fromEvent(containerElement, 'scroll')\n .pipe(debounceTime(100), first(), takeUntilDestroyed(this._destroyRef))\n .subscribe(() => (this._disableScrollSpy = false));\n scrollTop(containerElement, distanceToScroll);\n }\n\n if (this.focusFirstFocusableElement) {\n tabPanel._focusFirstFocusableElement();\n }\n }\n\n /** @hidden Whether tab can be expanded/collapsed */\n private _canChangeExpandState(tabPanel: TabPanelComponent, expand: boolean): boolean {\n return !tabPanel.disabled && expand !== tabPanel.expanded && expand === false ? this.collapsibleTabs : true;\n }\n\n /** @hidden */\n private _selectedTabChange(tabPanel: TabPanelComponent): void {\n this.selectedTabChange.emit(tabPanel);\n\n const index = this._tabArray.findIndex((tabInfo) => tabInfo.panel === tabPanel);\n this.selectedTabIndexChange.emit(index);\n }\n}\n","<div #headerContainer role=\"tablist\" class=\"fd-tabs\" [class]=\"(mode ? 'fd-tabs--' + mode : '') + (' fd-tabs--' + size)\">\n <fd-overflow-layout\n [maxVisibleItems]=\"maxVisibleTabs\"\n [enableKeyboardNavigation]=\"true\"\n navigationTrigger=\"keydown\"\n (hiddenItemsCount)=\"hiddenItemsCount.emit($event)\"\n (visibleItemsCount)=\"visibleItemsCount.emit($event)\"\n >\n <ng-container *ngFor=\"let tab of _tabArray; let i = index; let last = last\">\n <div\n fd-tab-item\n *fdOverflowItemRef=\"tab\"\n fdOverflowLayoutItem\n [forceVisibility]=\"tab.panel._forcedVisibility\"\n [header]=\"tab.isHeader\"\n [tabItemState]=\"tab.tabState\"\n >\n <a\n fd-tab-link\n role=\"tab\"\n [id]=\"tab.id\"\n [attr.aria-controls]=\"tab.panelId\"\n [attr.aria-label]=\"tab.ariaLabel || null\"\n [attr.aria-labelledby]=\"!tab.ariaLabel && tab.ariaLabelledBy ? tab.ariaLabelledBy : null\"\n fdOverflowLayoutFocusableItem\n [focusable]=\"tab.active\"\n [navigable]=\"!tab.disabled\"\n [active]=\"tab.active\"\n [disabled]=\"tab.disabled\"\n (keydown)=\"_tabHeaderKeydownHandler($event, tab.panel)\"\n (click)=\"_tabHeaderClickHandler(tab.panel)\"\n >\n <ng-container *ngTemplateOutlet=\"tab.titleTemplate || null\"></ng-container>\n\n <ng-container *ngIf=\"!tab.titleTemplate\" [ngSwitch]=\"mode\">\n <ng-container *ngSwitchCase=\"'filter'\">\n <span fd-tab-header *ngIf=\"tab.isHeader\">\n <span fd-tab-counter-header *ngIf=\"tab.count\">{{ tab.count }}</span>\n <span fd-tab-label *ngIf=\"tab.title\">{{ tab.title }}</span>\n </span>\n <ng-container *ngIf=\"!tab.isHeader\">\n <span fd-tab-icon [icon]=\"tab.glyph\">\n <p fd-tab-count>{{ tab.count }}</p>\n </span>\n <span fd-tab-label>{{ tab.title }}</span>\n </ng-container>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'icon-only'\">\n <span fd-tab-icon [icon]=\"tab.glyph\">\n <p fd-tab-count>{{ tab.count }}</p>\n </span>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'process'\">\n <span fd-tab-icon *ngIf=\"tab.glyph\" [icon]=\"tab.glyph\"></span>\n <div fd-tab-process>\n <span fd-tab-label *ngIf=\"tab.count\">{{ tab.count }}</span>\n <span fd-tab-label *ngIf=\"tab.title\">{{ tab.title }}</span>\n </div>\n </ng-container>\n\n <ng-container *ngSwitchDefault>\n <p fd-tab-count *ngIf=\"tab.count\">{{ tab.count }}</p>\n <span fd-tab-tag>{{ tab.title }}</span>\n </ng-container>\n </ng-container>\n </a>\n\n <div fd-tab-process-icon *ngIf=\"mode === 'process' && !last\"></div>\n </div>\n\n <div *ngIf=\"tab.isHeader\" fd-tab-separator></div>\n </ng-container>\n\n <ng-container *fdOverflowExpand=\"let tabs; items: _tabArray\">\n <fd-item-expand [fdMenuTrigger]=\"menu\" *ngIf=\"tabs.length > 0\" (keydown)=\"_onTriggerKeydown($event, menu)\">\n </fd-item-expand>\n\n <fd-menu #menu>\n <li\n fd-menu-item\n *ngFor=\"let tab of tabs\"\n (onSelect)=\"_overflowingTabHeaderClickHandler(tab.item.panel)\"\n >\n <div fd-menu-interactive>\n <ng-container\n *ngTemplateOutlet=\"\n !tab.item.titleTemplate && mode === 'icon-only'\n ? iconOnlyTemplate\n : tab.item.titleTemplate || textTitle;\n context: { $implicit: tab.item }\n \"\n ></ng-container>\n </div>\n </li>\n </fd-menu>\n </ng-container>\n </fd-overflow-layout>\n</div>\n\n<div\n class=\"fd-tabs__content\"\n [style.max-height]=\"maxContentHeight\"\n fdScrollSpy\n fd-scrollbar\n [overrideTabindex]=\"false\"\n [trackedTags]=\"['fd-tab']\"\n [scrollSpyDisabled]=\"_disableScrollSpy\"\n (spyChange)=\"_highlightActiveTab($event)\"\n>\n <ng-content></ng-content>\n</div>\n\n<ng-template #textTitle let-tab>\n <span fd-menu-title>{{ tab.title }}</span>\n</ng-template>\n\n<ng-template #iconOnlyTemplate let-tab>\n <span fd-tab-icon [icon]=\"tab.glyph\">\n <p fd-tab-count>{{ tab.count }}</p>\n </span>\n</ng-template>\n","import { FocusKeyManager } from '@angular/cdk/a11y';\nimport { LEFT_ARROW, RIGHT_ARROW } from '@angular/cdk/keycodes';\nimport {\n AfterContentInit,\n ChangeDetectionStrategy,\n Component,\n ContentChildren,\n ElementRef,\n HostListener,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Optional,\n QueryList,\n ViewEncapsulation\n} from '@angular/core';\nimport { CssClassBuilder, KeyUtil, RtlService, applyCssClass } from '@fundamental-ngx/cdk/utils';\nimport { ContentDensityObserver, contentDensityObserverProviders } from '@fundamental-ngx/core/content-density';\nimport { Subject, Subscription, merge } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { TabItemDirective } from '../tab-item/tab-item.directive';\nimport { TabLinkDirective } from '../tab-link/tab-link.directive';\nimport { TabModes, TabSizes } from '../tab-list.component';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: '[fd-tab-nav]',\n template: ` <ng-content></ng-content>`,\n providers: [contentDensityObserverProviders()],\n styleUrls: ['./tab-nav.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true\n})\nexport class TabNavComponent implements AfterContentInit, OnChanges, OnInit, OnDestroy, CssClassBuilder {\n /** Apply user custom styles */\n @Input()\n class: string;\n\n /**\n * Whether user wants to use tab component in certain mode. Modes available:\n * 'icon-only' | 'process' | 'filter'\n */\n @Input()\n mode: TabModes;\n\n /** Size of tab, it's mostly about adding spacing on tab container, available sizes 's' | 'm' | 'l' | 'xl' | 'xxl' */\n @Input()\n size: TabSizes = 'm';\n\n /** @hidden */\n @ContentChildren(TabLinkDirective, { descendants: true })\n links: QueryList<TabLinkDirective>;\n\n /** @hidden */\n @ContentChildren(TabItemDirective, { descendants: true })\n items: QueryList<TabItemDirective>;\n\n /** @hidden */\n private _subscriptions = new Subscription();\n\n /** An RxJS Subject that will kill the data stream upon component’s destruction (for unsubscribing) */\n private readonly _onDestroy$: Subject<void> = new Subject<void>();\n\n /** @hidden */\n private _keyboardEventsManager: FocusKeyManager<TabLinkDirective>;\n\n /** @hidden */\n private _dir: 'ltr' | 'rtl' = this._rtlService?.rtl.value ? 'rtl' : 'ltr';\n\n /** @hidden */\n constructor(\n public readonly elementRef: ElementRef,\n private readonly _contentDensityObserver: ContentDensityObserver,\n @Optional() private readonly _rtlService: RtlService\n ) {\n this._contentDensityObserver.subscribe();\n }\n\n /** @hidden */\n ngAfterContentInit(): void {\n this._setupKeyManager();\n this._refreshSubscription();\n this._listenOnContentQueryListChange();\n }\n\n /** @hidden */\n ngOnChanges(): void {\n this.buildComponentCssClass();\n }\n\n /** @hidden */\n ngOnInit(): void {\n this.buildComponentCssClass();\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n this._onDestroy$.next();\n this._onDestroy$.complete();\n this._keyboardEventsManager?.destroy();\n }\n\n /** @hidden\n * CssClassBuilder interface implementation\n * function must return single string\n * function is responsible for order which css classes are applied\n */\n @applyCssClass\n buildComponentCssClass(): string[] {\n return [`fd-tabs`, this.mode ? 'fd-tabs--' + this.mode : '', `fd-tabs--${this.size}`, this.class];\n }\n\n /** Function that gives possibility to get all the link directives, with and without nav__item wrapper */\n get tabLinks(): TabLinkDirective[] {\n let tabLinks: TabLinkDirective[] = [];\n if (this.links) {\n tabLinks = tabLinks.concat(this.links.map((link) => link));\n }\n if (this.items) {\n tabLinks = tabLinks.concat(this.items.filter((item) => !!item.linkItem).map((item) => item.linkItem));\n }\n return tabLinks;\n }\n\n /**\n * Function to select a new tab from an index.\n * @param tabIndex Index of the tab to select.\n */\n selectTab(tabIndex: number): void {\n this.tabLinks[tabIndex].elementRef.nativeElement.click();\n }\n\n /**\n * @hidden\n * Every time any of query is changed, ex. tab is removed or added\n * reference to keydown subscriptions handler is renewed\n */\n private _listenOnContentQueryListChange(): void {\n merge(this.links.changes, this.items.changes)\n .pipe(takeUntil(this._onDestroy$))\n .subscribe(() => this._refreshSubscription());\n }\n\n /** Whether any QueryList detects any changes */\n private _refreshSubscription(): void {\n this._subscriptions.unsubscribe();\n this._subscriptions = new Subscription();\n this._listenToFocusedLinks();\n\n this.links.changes.pipe(takeUntil(this._onDestroy$)).subscribe(() => {\n this._listenToFocusedLinks();\n });\n }\n\n /** @hidden */\n private _listenToFocusedLinks(): void {\n const links = this.links.toArray();\n links.forEach((link) => {\n this._subscriptions.add(\n link.focused.subscribe(() => {\n this._keyboardEventsManager.setActiveItem(links.findIndex((item) => item === link));\n })\n );\n });\n }\n\n /** @hidden */\n private _setupKeyManager(): void {\n this._keyboardEventsManager?.destroy();\n this._keyboardEventsManager = new FocusKeyManager(this.links).withWrap().withHorizontalOrientation(this._dir);\n\n this._rtlService?.rtl.pipe(takeUntil(this._onDestroy$)).subscribe((isRtl) => {\n this._keyboardEventsManager.withHorizontalOrientation(isRtl ? 'rtl' : 'ltr');\n });\n }\n\n /** @hidden */\n @HostListener('keyup', ['$event'])\n private _keyUpHandler(event: KeyboardEvent): void {\n if (KeyUtil.isKeyCode(event, [LEFT_ARROW, RIGHT_ARROW])) {\n this._keyboardEventsManager.onKeydown(event);\n }\n }\n}\n","import { NgModule } from '@angular/core';\n\nimport { TabListComponent } from './tab-list.component';\nimport { TabPanelComponent } from './tab-panel/tab-panel.component';\n\nimport { TabItemDirective } from './tab-item/tab-item.directive';\nimport { TabLinkDirective } from './tab-link/tab-link.directive';\nimport { TabNavComponent } from './tab-nav/tab-nav.component';\nimport {\n TabCountDirective,\n TabCounterHeaderDirective,\n TabHeaderDirective,\n TabIconComponent,\n TabLabelDirective,\n TabProcessDirective,\n TabProcessIconDirective,\n TabSeparatorDirective,\n TabTagDirective,\n TabTitleDirective\n} from './tab-utils/tab-directives';\n\nconst components = [\n TabListComponent,\n TabPanelComponent,\n TabTitleDirective,\n TabNavComponent,\n TabItemDirective,\n TabLinkDirective,\n TabTagDirective,\n TabIconComponent,\n TabCountDirective,\n TabLabelDirective,\n TabProcessDirective,\n TabHeaderDirective,\n TabCounterHeaderDirective,\n TabProcessIconDirective,\n TabSeparatorDirective\n];\n\n@NgModule({\n imports: [...components],\n exports: [...components]\n})\nexport class TabsModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["first"],"mappings":"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"}
1
+ {"version":3,"file":"fundamental-ngx-core-tabs.mjs","sources":["../../../../libs/core/src/lib/tabs/tab-utils/tab-directives.ts","../../../../libs/core/src/lib/tabs/tab-item-expand/tab-item-expand.component.ts","../../../../libs/core/src/lib/tabs/tab-item-expand/tab-item-expand.component.html","../../../../libs/core/src/lib/tabs/tab-link/tab-link.directive.ts","../../../../libs/core/src/lib/tabs/tab-item/tab-item.directive.ts","../../../../libs/core/src/lib/tabs/tab-list.token.ts","../../../../libs/core/src/lib/tabs/tab-panel/tab-panel.component.ts","../../../../libs/core/src/lib/tabs/tab-panel/tab-panel.component.html","../../../../libs/core/src/lib/tabs/tab-utils/tab-info.class.ts","../../../../libs/core/src/lib/tabs/tab-list.component.ts","../../../../libs/core/src/lib/tabs/tab-list.component.html","../../../../libs/core/src/lib/tabs/tab-nav/tab-nav.component.ts","../../../../libs/core/src/lib/tabs/tabs.module.ts","../../../../libs/core/src/lib/tabs/fundamental-ngx-core-tabs.ts"],"sourcesContent":["import { NgIf } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n Directive,\n ElementRef,\n HostBinding,\n Input,\n OnChanges,\n ViewEncapsulation\n} from '@angular/core';\nimport { CssClassBuilder, applyCssClass } from '@fundamental-ngx/cdk/utils';\nimport { IconComponent } from '@fundamental-ngx/core/icon';\n\n/**\n * Directive used to identify the template which will populate the tab header.\n * Used to achieve complex headers that require more than a string.\n *\n * ```html\n * <fd-tab>\n * <ng-template fd-tab-title>\n * <fd-icon [glyph]=\"'delete'\"></fd-icon>\n * <span>Tab Label</span>\n * </ng-template>\n * </fd-tab>\n * ```\n */\n@Directive({\n selector: '[fdTabTitleTemplate], [fd-tab-title-template]',\n standalone: true\n})\nexport class TabTitleDirective {}\n\n/**\n * Directive for counter element, available in most of the modes on `tab` component\n */\n@Directive({\n selector: '[fdTabCount], [fd-tab-count]',\n standalone: true\n})\nexport class TabCountDirective {\n /** @hidden */\n @HostBinding('class.fd-tabs__count')\n fdTabsCountClass = true;\n}\n\n/**\n * Directive for icon element, available in most of the modes on `tab` component\n */\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: '[fd-tab-icon]',\n template: `\n <fd-icon role=\"presentation\" *ngIf=\"icon\" [glyph]=\"icon\"></fd-icon>\n <ng-content></ng-content>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n standalone: true,\n imports: [NgIf, IconComponent]\n})\nexport class TabIconComponent implements CssClassBuilder, OnChanges {\n /** Apply user custom styles */\n @Input()\n class: string;\n\n /**\n * The icon to include inside the element\n * See the icon page for the list of icons.\n */\n @Input()\n icon: string;\n\n /** @hidden */\n constructor(public readonly elementRef: ElementRef) {}\n\n /** @hidden\n * Function runs when component is initialized\n * function should build component css class\n * function should build css style\n */\n ngOnChanges(): void {\n this.buildComponentCssClass();\n }\n\n /** @hidden CssClassBuilder interface implementation\n * function must return single string\n * function is responsible for order which css classes are applied\n */\n @applyCssClass\n buildComponentCssClass(): string[] {\n return ['fd-tabs__icon', this.class];\n }\n}\n\n@Directive({\n selector: '[fdTabTag], [fd-tab-tag]',\n host: {\n class: 'fd-tabs__tag'\n },\n standalone: true\n})\nexport class TabTagDirective {}\n\n@Directive({\n selector: '[fdTabLabel], [fd-tab-label]',\n host: {\n class: 'fd-tabs__label'\n },\n standalone: true\n})\nexport class TabLabelDirective {}\n\n@Directive({\n selector: '[fdTabProcess], [fd-tab-process]',\n host: {\n class: 'fd-tabs__process'\n },\n standalone: true\n})\nexport class TabProcessDirective {}\n\n@Directive({\n selector: '[fdTabHeader], [fd-tab-header]',\n host: {\n class: 'fd-tabs__header'\n },\n standalone: true\n})\nexport class TabHeaderDirective {}\n\n@Directive({\n selector: '[fdTabCounterHeader], [fd-tab-counter-header]',\n host: {\n class: 'fd-tabs__counter-header'\n },\n standalone: true\n})\nexport class TabCounterHeaderDirective {}\n\n@Directive({\n selector: '[fdTabProcessIcon], [fd-tab-process-icon]',\n host: {\n class: 'fd-tabs__process-icon'\n },\n standalone: true\n})\nexport class TabProcessIconDirective {}\n\n@Directive({\n selector: '[fdTabSeparator], [fd-tab-separator]',\n host: {\n class: 'fd-tabs__separator'\n },\n standalone: true\n})\nexport class TabSeparatorDirective {}\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\nimport { IconComponent } from '@fundamental-ngx/core/icon';\nimport { FdTranslatePipe } from '@fundamental-ngx/i18n';\nimport { TabTagDirective } from '../tab-utils/tab-directives';\n\n/**\n * Represents a list of tab-panels.\n */\n@Component({\n selector: 'fd-item-expand',\n templateUrl: './tab-item-expand.component.html',\n styleUrls: ['./tab-item-expand.component.scss'],\n host: {\n role: 'tab',\n class: 'fd-tabs__item fd-tabs__item--overflow'\n },\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [TabTagDirective, IconComponent, FdTranslatePipe]\n})\nexport class TabItemExpandComponent {}\n","<a class=\"fd-tabs__link\" role=\"tab\" [attr.tabindex]=\"0\">\n <span fd-tab-tag>{{ 'coreTabs.tabListExpandButtonText' | fdTranslate }}</span>\n <fd-icon glyph=\"slim-arrow-down\" aria-label=\"See More\"></fd-icon>\n</a>\n","import { FocusableOption } from '@angular/cdk/a11y';\nimport { ENTER, SPACE } from '@angular/cdk/keycodes';\nimport { Directive, ElementRef, EventEmitter, HostBinding, HostListener, Input, Output } from '@angular/core';\nimport { AbstractFdNgxClass, KeyUtil } from '@fundamental-ngx/cdk/utils';\n\n/**\n * Tab link for nav mode\n *\n * ```html\n * <a fd-tab-link>\n * link\n * </a>\n * ```\n */\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[fd-tab-link]',\n host: {\n role: 'tab',\n tabindex: '-1'\n },\n standalone: true\n})\nexport class TabLinkDirective extends AbstractFdNgxClass implements FocusableOption {\n /** Whether the link is active */\n @Input()\n @HostBinding('attr.aria-selected')\n active: boolean;\n\n /**\n * Only visual / accessibility thing on tab-nav mode\n * RouterLink does not respect preventDefault/stopPropagation\n */\n @Input()\n @HostBinding('attr.aria-disabled')\n @HostBinding('class.is-disabled')\n disabled: boolean;\n\n /** Event Emitted always when, any keyboard event is dispatched on this element */\n @Output()\n readonly keyDown: EventEmitter<KeyboardEvent> = new EventEmitter<KeyboardEvent>();\n\n /** Event Emitted when item has been focused. */\n @Output()\n readonly focused = new EventEmitter<void>();\n\n /** @hidden */\n _setProperties(): void {\n this._addClassToElement('fd-tabs__link');\n if (this.active) {\n this._addClassToElement('is-selected');\n }\n }\n\n /** @hidden */\n constructor(public elementRef: ElementRef) {\n super(elementRef);\n }\n\n /** @hidden */\n @HostListener('focus')\n private _onFocus(): void {\n this.focused.emit();\n }\n\n /** @hidden */\n @HostListener('keyup', ['$event'])\n private _onKeyUp(event: KeyboardEvent): void {\n if (KeyUtil.isKeyCode(event, [ENTER, SPACE])) {\n this.focused.emit();\n }\n }\n\n /** @hidden */\n focus(): void {\n this.elementRef.nativeElement.focus();\n }\n}\n","import { ContentChild, Directive, ElementRef, HostBinding, Input, OnChanges, OnInit } from '@angular/core';\nimport { CssClassBuilder, Nullable, applyCssClass } from '@fundamental-ngx/cdk/utils';\nimport { TabLinkDirective } from '../tab-link/tab-link.directive';\n\nexport type TabItemState = 'success' | 'error' | 'warning' | 'information' | 'neutral';\n\n/**\n * Tab Item is optional wrapper for Tab link\n *\n * ```html\n * <div fd-tab-item>\n * <a fd-tab-link>\n * link\n * </a>\n * </div>\n * ```\n */\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[fd-tab-item]',\n standalone: true\n})\nexport class TabItemDirective implements CssClassBuilder, OnChanges, OnInit {\n /** Apply user custom styles */\n @Input()\n class = '';\n\n /** Semantic type of the tab item */\n @Input()\n tabItemState: Nullable<TabItemState>;\n\n /** This should be used only on `filterMode`. Flag should be enable for first item */\n @Input()\n header: boolean;\n\n /** Disabled state for tab item */\n @Input()\n @HostBinding('attr.aria-disabled')\n @HostBinding('class.is-disabled')\n disabled = false;\n\n /** Defines if there will be added fd-tabs__item class. Enabled by default. */\n @Input()\n fdTabItemClass = true;\n\n /** @hidden */\n @ContentChild(TabLinkDirective)\n linkItem: TabLinkDirective;\n\n /** @hidden */\n constructor(public readonly elementRef: ElementRef) {}\n\n /** @hidden */\n ngOnChanges(): void {\n this.buildComponentCssClass();\n }\n\n /** @hidden */\n ngOnInit(): void {\n this.buildComponentCssClass();\n }\n\n /** @hidden */\n @applyCssClass\n buildComponentCssClass(): string[] {\n return [\n this.fdTabItemClass ? 'fd-tabs__item' : '',\n this.header ? 'fd-tabs__item--header' : '',\n this.tabItemState ? `fd-tabs__item--${this.tabItemState}` : '',\n this.class\n ];\n }\n}\n","import { InjectionToken } from '@angular/core';\nimport { TabListComponentInterface } from './tab-list-component.interface';\n\nexport const LIST_COMPONENT = new InjectionToken<TabListComponentInterface>('ListComponent');\n","import { NgIf } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n ElementRef,\n EventEmitter,\n HostBinding,\n Inject,\n Input,\n NgZone,\n OnChanges,\n Optional,\n Output,\n TemplateRef,\n ViewEncapsulation\n} from '@angular/core';\nimport { Nullable } from '@fundamental-ngx/cdk/utils';\nimport { Subject, first } from 'rxjs';\nimport { TabItemState } from '../tab-item/tab-item.directive';\nimport { TabListComponentInterface } from '../tab-list-component.interface';\nimport { LIST_COMPONENT } from '../tab-list.token';\nimport { TabTitleDirective } from '../tab-utils/tab-directives';\n\nlet tabPanelUniqueId = 0;\n\nexport class TabPanelStateChange {\n /**\n * Tab panel state change event\n * @param target Tab panel that is being changed\n * @param state New state of the tab panel\n */\n constructor(public target: TabPanelComponent, public state: boolean) {}\n}\n\n/**\n * Represents the body of a tab element. It also contains elements pertaining to the associated tab header.\n */\n@Component({\n selector: 'fd-tab',\n templateUrl: './tab-panel.component.html',\n host: {\n role: 'tabpanel',\n class: 'fd-tabs__panel',\n '[id]': '_panelId',\n '[attr.aria-labelledby]': 'id'\n },\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [NgIf]\n})\nexport class TabPanelComponent implements OnChanges {\n /** Id of the tab. If none is provided, one will be generated. */\n @Input()\n id: string = 'fd-tab-panel' + tabPanelUniqueId++;\n\n /** Aria-label of the tab. */\n @Input()\n ariaLabel: Nullable<string>;\n\n /** Id of the element that labels the tab. */\n @Input()\n ariaLabelledBy: Nullable<string>;\n\n /** The title of tab, depending on mode used, it will be placed in different position */\n @Input()\n title: Nullable<string>;\n\n /** The count of tab, depending on mode used, it will be placed in different position */\n @Input()\n count: Nullable<string>;\n\n /** Glyph icon, it can be used only on */\n @Input()\n glyph: string;\n\n /** Glyph icon, it can be used only on */\n @Input()\n header = false;\n\n /** Disabled state for tab item */\n @Input()\n disabled = false;\n\n /** Semantic type of the tab item */\n @Input()\n tabState: Nullable<TabItemState>;\n\n /** Event that is emitted when the tab panel has been opened. */\n @Output()\n opened = new EventEmitter<void>();\n\n /** Event that is emitted when the tab panel has been closed. */\n @Output()\n closed = new EventEmitter<void>();\n\n /** @hidden */\n @ContentChild(TabTitleDirective, { read: TemplateRef })\n titleTemplate: TemplateRef<any>;\n\n /** @hidden Event that is emitted when the tab panel . */\n _expandedStateChange = new Subject<TabPanelStateChange>();\n\n /** @hidden */\n _forcedVisibility = false;\n\n /** @hidden */\n @HostBinding('class.is-expanded')\n _expandedClass = false;\n\n /** @hidden Whether to display tab panel content */\n private _expanded = false;\n\n /** @hidden */\n get _panelId(): string {\n return this.id + '-panel';\n }\n\n /** @hidden */\n constructor(\n public elementRef: ElementRef,\n private _changeDetRef: ChangeDetectorRef,\n private _ngZone: NgZone,\n @Optional() @Inject(LIST_COMPONENT) private readonly _tabsComponent: TabListComponentInterface | null\n ) {}\n\n /** @hidden\n * Thanks to OnPush change strategy detection on tab-list parent component,\n * every change of any property should be reported. */\n ngOnChanges(): void {\n this._tabsComponent?.tabPanelPropertyChanged.next();\n }\n\n /** Whether tab panel content is expanded */\n get expanded(): boolean {\n return this._expanded;\n }\n\n /** Whether to expand tab panel content */\n open(open: boolean): void {\n this._expandedStateChange.next(new TabPanelStateChange(this, open));\n }\n\n /** @hidden Set new expand state */\n _expand(expanded: boolean): void {\n if (this._expanded !== expanded) {\n this._expanded = expanded;\n\n if (expanded) {\n this.opened.emit();\n } else {\n this.closed.emit();\n }\n\n this._changeDetRef.detectChanges();\n\n this._ngZone.onStable.pipe(first()).subscribe(() => this._updateHost());\n }\n }\n\n /** @hidden */\n _focusFirstFocusableElement(): void {\n this.elementRef.nativeElement\n .querySelector('button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])')\n ?.focus({ preventScroll: true });\n }\n\n /** @hidden */\n private _updateHost(): void {\n this._expandedClass = this.expanded;\n }\n}\n","<ng-container *ngIf=\"expanded\">\n <ng-content></ng-content>\n</ng-container>\n","import { TemplateRef } from '@angular/core';\n\nimport { TabPanelComponent } from '../tab-panel/tab-panel.component';\nimport { TabItemState } from '../tab-item/tab-item.directive';\nimport { Nullable } from '@fundamental-ngx/cdk/utils';\n\n/** @hidden */\nexport class TabInfo {\n /** Whether the tab is active */\n active: boolean;\n\n /** @hidden Width of the tab header */\n headerWidth: number;\n\n /** Corresponding tab panel */\n panel: TabPanelComponent;\n\n /** @hidden */\n constructor(tabPanel: TabPanelComponent) {\n this.panel = tabPanel;\n this.active = tabPanel.expanded;\n }\n\n /** Tab header title */\n get title(): Nullable<string> {\n return this.panel.title;\n }\n\n /** Whether the tab is disabled */\n get disabled(): boolean {\n return this.panel.disabled;\n }\n\n /** Whether the tab is tab header */\n get isHeader(): boolean {\n return this.panel.header;\n }\n\n /** @hidden */\n get id(): Nullable<string> {\n return this.panel.id;\n }\n\n /** @hidden */\n get ariaLabel(): Nullable<string> {\n return this.panel.ariaLabel;\n }\n\n /** @hidden */\n get ariaLabelledBy(): Nullable<string> {\n return this.panel.ariaLabelledBy;\n }\n\n /** @hidden */\n get tabState(): Nullable<TabItemState> {\n return this.panel.tabState;\n }\n\n /** @hidden */\n get titleTemplate(): TemplateRef<any> {\n return this.panel.titleTemplate;\n }\n\n /** @hidden */\n get count(): Nullable<string> {\n return this.panel.count;\n }\n\n /** @hidden */\n get glyph(): string {\n return this.panel.glyph;\n }\n\n /** @hidden */\n get forcedVisibility(): boolean {\n return this.panel._forcedVisibility;\n }\n\n /** @hidden */\n get panelId(): string {\n return this.panel._panelId;\n }\n}\n","import { ENTER, SPACE } from '@angular/cdk/keycodes';\nimport { CdkScrollable } from '@angular/cdk/overlay';\nimport { NgFor, NgIf, NgSwitch, NgSwitchCase, NgSwitchDefault, NgTemplateOutlet } from '@angular/common';\nimport {\n AfterContentInit,\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChildren,\n DestroyRef,\n ElementRef,\n EventEmitter,\n Input,\n OnDestroy,\n Output,\n QueryList,\n ViewChild,\n ViewChildren,\n ViewEncapsulation,\n forwardRef\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { KeyUtil, Nullable, scrollTop } from '@fundamental-ngx/cdk/utils';\nimport { ContentDensityObserver, contentDensityObserverProviders } from '@fundamental-ngx/core/content-density';\nimport {\n MenuComponent,\n MenuInteractiveComponent,\n MenuItemComponent,\n MenuTitleDirective,\n MenuTriggerDirective\n} from '@fundamental-ngx/core/menu';\nimport {\n OverflowExpandDirective,\n OverflowItemRefDirective,\n OverflowLayoutComponent,\n OverflowLayoutFocusableItemDirective,\n OverflowLayoutItemDirective\n} from '@fundamental-ngx/core/overflow-layout';\nimport { ScrollSpyDirective } from '@fundamental-ngx/core/scroll-spy';\nimport { ScrollbarDirective } from '@fundamental-ngx/core/scrollbar';\nimport { Observable, Subject, Subscription, fromEvent, merge } from 'rxjs';\nimport { debounceTime, delay, filter, first, map, startWith, switchMap } from 'rxjs/operators';\nimport { TabItemExpandComponent } from './tab-item-expand/tab-item-expand.component';\nimport { TabItemDirective } from './tab-item/tab-item.directive';\nimport { TabLinkDirective } from './tab-link/tab-link.directive';\nimport { TabListComponentInterface } from './tab-list-component.interface';\nimport { LIST_COMPONENT } from './tab-list.token';\nimport { TabPanelComponent } from './tab-panel/tab-panel.component';\nimport {\n TabCountDirective,\n TabCounterHeaderDirective,\n TabHeaderDirective,\n TabIconComponent,\n TabLabelDirective,\n TabProcessDirective,\n TabProcessIconDirective,\n TabSeparatorDirective,\n TabTagDirective\n} from './tab-utils/tab-directives';\nimport { TabInfo } from './tab-utils/tab-info.class';\n\nexport type TabModes = 'icon-only' | 'process' | 'filter';\n\nexport type TabSizes = 's' | 'm' | 'l' | 'xl' | 'xxl';\n\n/**\n * Represents a list of tab-panels.\n */\n@Component({\n selector: 'fd-tab-list',\n templateUrl: './tab-list.component.html',\n styleUrls: ['./tab-list.component.scss'],\n host: {\n class: 'fd-tabs-custom'\n },\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n contentDensityObserverProviders(),\n {\n provide: LIST_COMPONENT,\n useExisting: forwardRef(() => TabListComponent)\n }\n ],\n standalone: true,\n imports: [\n OverflowLayoutComponent,\n NgFor,\n OverflowItemRefDirective,\n TabItemDirective,\n OverflowLayoutItemDirective,\n TabLinkDirective,\n OverflowLayoutFocusableItemDirective,\n NgTemplateOutlet,\n NgIf,\n NgSwitch,\n NgSwitchCase,\n TabHeaderDirective,\n TabCounterHeaderDirective,\n TabLabelDirective,\n TabIconComponent,\n TabCountDirective,\n TabProcessDirective,\n NgSwitchDefault,\n TabTagDirective,\n TabProcessIconDirective,\n TabSeparatorDirective,\n OverflowExpandDirective,\n TabItemExpandComponent,\n MenuTriggerDirective,\n MenuComponent,\n MenuItemComponent,\n MenuInteractiveComponent,\n ScrollSpyDirective,\n CdkScrollable,\n ScrollbarDirective,\n MenuTitleDirective\n ]\n})\nexport class TabListComponent implements TabListComponentInterface, AfterContentInit, AfterViewInit, OnDestroy {\n /** Size of tab, it's mostly about adding spacing on tab container, available sizes 's' | 'm' | 'l' | 'xl' | 'xxl' */\n @Input()\n size: TabSizes = 'm';\n\n /**\n * Whether user wants to use tab component in certain mode. Modes available:\n * 'icon-only' | 'process' | 'filter'\n */\n @Input()\n mode: TabModes;\n\n /** Whether to move tabs overflowing in the tab bar to the dropdown */\n @Input()\n collapseOverflow = true;\n\n /** Limits the maximum number of tabs visible in the tab bar in collapseOverflow mode.\n * Other tabs will be moved to the collapsed tabs dropdown */\n @Input()\n maxVisibleTabs = Infinity;\n\n /** Whether to open tab content one under another without collapsing */\n @Input()\n stackContent = false;\n\n /** Maximum height of the content */\n @Input()\n maxContentHeight = '100%';\n\n /** Whether to enable collapsing expanded tab on expanded tab click */\n @Input()\n collapsibleTabs = false;\n\n /** Initially selected tab (by id). First not disabled one if not specified. */\n @Input()\n defaultTab: Nullable<string>;\n\n /** Whether to try to keep selected tab (default value) on tabs change or to select default one (first if not specified). */\n @Input()\n selectDefaultOnTabsChange = false;\n\n /** Whether to focus the first focusable element in a tab panel when using stacked tabs. */\n @Input()\n focusFirstFocusableElement = true;\n\n /** Event emitted when the selected panel changes. */\n @Output()\n selectedTabChange = new EventEmitter<TabPanelComponent>();\n\n /** Event emitted when the selected panel index changes. */\n @Output()\n selectedTabIndexChange = new EventEmitter<number>();\n\n /** Event emitted when visible items count has been changed. */\n @Output()\n visibleItemsCount = new EventEmitter<number>();\n\n /** Event emitted when hidden items count has been changed. */\n @Output()\n hiddenItemsCount = new EventEmitter<number>();\n\n /** @hidden */\n @ContentChildren(forwardRef(() => TabPanelComponent))\n tabPanels: QueryList<TabPanelComponent>;\n\n /** @hidden */\n @ViewChildren(TabLinkDirective)\n tabHeaderLinks: QueryList<TabLinkDirective>;\n\n /** @hidden */\n @ViewChildren(TabItemDirective)\n tabHeaders: QueryList<TabItemDirective>;\n\n /** @hidden */\n @ViewChild(TabItemExpandComponent, { read: ElementRef })\n overflowTrigger: ElementRef;\n\n /** @hidden */\n @ViewChild('headerContainer', { read: ElementRef })\n headerContainer: ElementRef;\n\n /** @hidden */\n @ViewChild(ScrollbarDirective)\n _scrollbar: ScrollbarDirective;\n\n /** @hidden */\n @ViewChild('menu', { read: MenuComponent })\n menu: MenuComponent;\n\n /** @hidden */\n @ViewChild(OverflowLayoutComponent)\n private _overflowLayout: OverflowLayoutComponent;\n\n /** @hidden */\n get contentContainer(): ElementRef<HTMLElement> {\n return this._scrollbar?.elementRef;\n }\n\n /** @hidden Collection of tabs in original order */\n _tabArray: TabInfo[] = [];\n\n /** @hidden Whether to disable scroll spy */\n _disableScrollSpy = false;\n\n /** @hidden */\n _init = true;\n\n /** Event is thrown always when tab is selected by keyboard actions */\n readonly tabSelected: Subject<number> = new Subject<number>();\n\n /** Event is thrown always, when some property is changed */\n readonly tabPanelPropertyChanged: Subject<void> = new Subject<void>();\n\n /** @hidden */\n private _subscriptions = new Subscription();\n\n /** @hidden */\n constructor(\n private readonly _changeDetectorRef: ChangeDetectorRef,\n private _elRef: ElementRef,\n readonly _contentDensityObserver: ContentDensityObserver,\n private readonly _destroyRef: DestroyRef\n ) {}\n\n /** @hidden */\n ngAfterContentInit(): void {\n this._setupTabPanelsChangeListeners();\n }\n\n /** @hidden */\n ngAfterViewInit(): void {\n this._initStackContentSubscription();\n this._listenOnTabPanelsExpandedChange();\n this._listenOnTabPanelsAndInitiallyExpandTabPanel();\n this._listenOnPropertiesChange();\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n\n /** @hidden */\n _tabHeaderClickHandler(tabPanel: TabPanelComponent): void {\n this._expandTab(tabPanel, !tabPanel.expanded);\n }\n\n /** @hidden */\n _tabHeaderKeydownHandler(event: KeyboardEvent, tabPanel: TabPanelComponent): void {\n if (!KeyUtil.isKeyCode(event, [ENTER, SPACE])) {\n return;\n }\n\n event.preventDefault();\n this._tabHeaderClickHandler(tabPanel);\n }\n\n /** @hidden */\n _overflowingTabHeaderClickHandler(tabPanel: TabPanelComponent): void {\n this._tabArray.forEach((tab) => {\n tab.panel._forcedVisibility = tab.panel === tabPanel;\n });\n\n this._expandTab(tabPanel, true, false);\n\n this._overflowLayout.triggerRecalculation();\n\n this._detectChanges();\n }\n\n /** @hidden */\n _highlightActiveTab({ id }: HTMLElement): void {\n const tab = this._tabArray.find((_tab) => _tab.panel._panelId === id);\n if (tab) {\n const _tabWasActive = tab.active;\n this._activateStackedTab(tab.panel, false);\n if (!_tabWasActive) {\n this._selectedTabChange(tab.panel);\n }\n }\n }\n\n /** @hidden */\n _onTriggerKeydown(event: KeyboardEvent, menuRef: MenuComponent): void {\n if (KeyUtil.isKeyCode(event, [ENTER, SPACE])) {\n event.preventDefault();\n menuRef.toggle();\n }\n }\n\n /** @hidden */\n private get _tabPanelsChange$(): Observable<TabPanelComponent[]> {\n return this.tabPanels.changes.pipe(\n startWith(this.tabPanels),\n map((tabPanels) => tabPanels.toArray()),\n takeUntilDestroyed(this._destroyRef)\n );\n }\n\n /** @hidden */\n private _detectChanges(): void {\n if (this._changeDetectorRef && !this._changeDetectorRef['destroyed']) {\n this._changeDetectorRef.detectChanges();\n }\n }\n\n /** @hidden */\n private _setupTabPanelsChangeListeners(): void {\n this._listenOnTabPanelsAndUpdateStorageStructures();\n }\n\n /** @hidden Setup mechanisms required for handling the stacked content behavior */\n private _initStackContentSubscription(): void {\n this._tabPanelsChange$\n .pipe(\n filter(() => this.stackContent),\n delay(0),\n takeUntilDestroyed(this._destroyRef)\n )\n .subscribe(() =>\n this._tabArray.filter((tab) => !tab.panel.disabled).forEach((tab) => tab.panel._expand(true))\n );\n }\n\n /** @hidden */\n private _listenOnTabPanelsAndUpdateStorageStructures(): void {\n this._tabPanelsChange$\n .pipe(\n map((tabPanels) =>\n tabPanels.map((el) => this._tabArray?.find((tabInfo) => tabInfo.panel === el) || new TabInfo(el))\n ),\n takeUntilDestroyed(this._destroyRef)\n )\n .subscribe((tabs) => {\n this._tabArray = tabs;\n });\n }\n\n /** @hidden */\n private _listenOnTabPanelsExpandedChange(): void {\n this._tabPanelsChange$\n .pipe(\n map((tabPanels) => tabPanels.map((tab) => tab._expandedStateChange.asObservable())),\n switchMap((tabPanels) => merge(...tabPanels)),\n takeUntilDestroyed(this._destroyRef)\n )\n .subscribe((event) => this._expandTab(event.target, event.state));\n }\n\n /** @hidden */\n private _listenOnTabPanelsAndInitiallyExpandTabPanel(): void {\n this._tabPanelsChange$.pipe(takeUntilDestroyed(this._destroyRef)).subscribe(() => {\n const activeTab = this._tabArray.find((_tab) => _tab.active);\n let tab: Nullable<TabInfo>;\n\n if (!activeTab || this.selectDefaultOnTabsChange) {\n if (this.defaultTab) {\n tab = this._tabArray.find((_tab) => !_tab.disabled && _tab.id === this.defaultTab);\n }\n\n if (!tab) {\n tab = this._tabArray.find((_tab) => !_tab.disabled);\n }\n }\n\n if (tab && activeTab !== tab) {\n this._expandTab(tab.panel, true);\n }\n });\n }\n\n /** @hidden */\n private _listenOnPropertiesChange(): void {\n merge(this.tabPanelPropertyChanged, this.tabPanels.changes)\n .pipe(takeUntilDestroyed(this._destroyRef))\n .subscribe(() => this._detectChanges());\n }\n\n /** @hidden */\n private _activateStackedTab(tabPanel: TabPanelComponent, scroll = true): void {\n if (scroll) {\n this._scrollToPanel(tabPanel);\n }\n this._tabArray.forEach((tab) => {\n tab.active = tab.panel === tabPanel;\n });\n }\n\n /** @hidden */\n private _activateExpandableTab(tabPanel: TabPanelComponent, expand: boolean): void {\n const collapse = this.collapsibleTabs && !expand;\n\n this._tabArray.forEach((tab) => {\n const isActive = tab.panel === tabPanel && !collapse;\n\n tab.panel._expand(isActive);\n tab.active = isActive;\n });\n }\n\n /** @hidden */\n private _expandTab(tabPanel: TabPanelComponent, expand: boolean, detectChanges = true): void {\n if (this.stackContent) {\n this._activateStackedTab(tabPanel);\n } else {\n if (!this._canChangeExpandState(tabPanel, expand)) {\n return;\n }\n\n this._activateExpandableTab(tabPanel, expand);\n }\n\n if (detectChanges) {\n this._detectChanges();\n }\n\n this._selectedTabChange(tabPanel);\n }\n\n /** @hidden */\n private _scrollToPanel(tabPanel: TabPanelComponent): void {\n const panelElement = tabPanel.elementRef.nativeElement;\n const containerElement = this.contentContainer.nativeElement;\n const distanceToScroll = panelElement.offsetTop - containerElement.offsetTop;\n const maximumScrollTop = containerElement.scrollHeight - containerElement.clientHeight;\n const currentScrollPosition = Math.ceil(containerElement.scrollTop);\n\n if (!(currentScrollPosition === maximumScrollTop && distanceToScroll > maximumScrollTop)) {\n !this._init ? (this._disableScrollSpy = true) : (this._init = false);\n fromEvent(containerElement, 'scroll')\n .pipe(debounceTime(100), first(), takeUntilDestroyed(this._destroyRef))\n .subscribe(() => (this._disableScrollSpy = false));\n scrollTop(containerElement, distanceToScroll);\n }\n\n if (this.focusFirstFocusableElement) {\n tabPanel._focusFirstFocusableElement();\n }\n }\n\n /** @hidden Whether tab can be expanded/collapsed */\n private _canChangeExpandState(tabPanel: TabPanelComponent, expand: boolean): boolean {\n return !tabPanel.disabled && expand !== tabPanel.expanded && expand === false ? this.collapsibleTabs : true;\n }\n\n /** @hidden */\n private _selectedTabChange(tabPanel: TabPanelComponent): void {\n this.selectedTabChange.emit(tabPanel);\n\n const index = this._tabArray.findIndex((tabInfo) => tabInfo.panel === tabPanel);\n this.selectedTabIndexChange.emit(index);\n }\n}\n","<div #headerContainer role=\"tablist\" class=\"fd-tabs\" [class]=\"(mode ? 'fd-tabs--' + mode : '') + (' fd-tabs--' + size)\">\n <fd-overflow-layout\n [maxVisibleItems]=\"maxVisibleTabs\"\n [enableKeyboardNavigation]=\"true\"\n navigationTrigger=\"keydown\"\n (hiddenItemsCount)=\"hiddenItemsCount.emit($event)\"\n (visibleItemsCount)=\"visibleItemsCount.emit($event)\"\n >\n <ng-container *ngFor=\"let tab of _tabArray; let i = index; let last = last\">\n <div\n fd-tab-item\n *fdOverflowItemRef=\"tab\"\n fdOverflowLayoutItem\n [forceVisibility]=\"tab.panel._forcedVisibility\"\n [header]=\"tab.isHeader\"\n [tabItemState]=\"tab.tabState\"\n >\n <a\n fd-tab-link\n role=\"tab\"\n [id]=\"tab.id\"\n [attr.aria-controls]=\"tab.panelId\"\n [attr.aria-label]=\"tab.ariaLabel || null\"\n [attr.aria-labelledby]=\"!tab.ariaLabel && tab.ariaLabelledBy ? tab.ariaLabelledBy : null\"\n fdOverflowLayoutFocusableItem\n [focusable]=\"tab.active\"\n [navigable]=\"!tab.disabled\"\n [active]=\"tab.active\"\n [disabled]=\"tab.disabled\"\n (keydown)=\"_tabHeaderKeydownHandler($event, tab.panel)\"\n (click)=\"_tabHeaderClickHandler(tab.panel)\"\n >\n <ng-container *ngTemplateOutlet=\"tab.titleTemplate || null\"></ng-container>\n\n <ng-container *ngIf=\"!tab.titleTemplate\" [ngSwitch]=\"mode\">\n <ng-container *ngSwitchCase=\"'filter'\">\n <span fd-tab-header *ngIf=\"tab.isHeader\">\n <span fd-tab-counter-header *ngIf=\"tab.count\">{{ tab.count }}</span>\n <span fd-tab-label *ngIf=\"tab.title\">{{ tab.title }}</span>\n </span>\n <ng-container *ngIf=\"!tab.isHeader\">\n <span fd-tab-icon [icon]=\"tab.glyph\">\n <p fd-tab-count>{{ tab.count }}</p>\n </span>\n <span fd-tab-label>{{ tab.title }}</span>\n </ng-container>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'icon-only'\">\n <span fd-tab-icon [icon]=\"tab.glyph\">\n <p fd-tab-count>{{ tab.count }}</p>\n </span>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'process'\">\n <span fd-tab-icon *ngIf=\"tab.glyph\" [icon]=\"tab.glyph\"></span>\n <div fd-tab-process>\n <span fd-tab-label *ngIf=\"tab.count\">{{ tab.count }}</span>\n <span fd-tab-label *ngIf=\"tab.title\">{{ tab.title }}</span>\n </div>\n </ng-container>\n\n <ng-container *ngSwitchDefault>\n <p fd-tab-count *ngIf=\"tab.count\">{{ tab.count }}</p>\n <span fd-tab-tag>{{ tab.title }}</span>\n </ng-container>\n </ng-container>\n </a>\n\n <div fd-tab-process-icon *ngIf=\"mode === 'process' && !last\"></div>\n </div>\n\n <div *ngIf=\"tab.isHeader\" fd-tab-separator></div>\n </ng-container>\n\n <ng-container *fdOverflowExpand=\"let tabs; items: _tabArray\">\n <fd-item-expand [fdMenuTrigger]=\"menu\" *ngIf=\"tabs.length > 0\" (keydown)=\"_onTriggerKeydown($event, menu)\">\n </fd-item-expand>\n\n <fd-menu #menu>\n <li\n fd-menu-item\n *ngFor=\"let tab of tabs\"\n (onSelect)=\"_overflowingTabHeaderClickHandler(tab.item.panel)\"\n >\n <div fd-menu-interactive>\n <ng-container\n *ngTemplateOutlet=\"\n !tab.item.titleTemplate && mode === 'icon-only'\n ? iconOnlyTemplate\n : tab.item.titleTemplate || textTitle;\n context: { $implicit: tab.item }\n \"\n ></ng-container>\n </div>\n </li>\n </fd-menu>\n </ng-container>\n </fd-overflow-layout>\n</div>\n\n<div\n class=\"fd-tabs__content\"\n [style.max-height]=\"maxContentHeight\"\n fdScrollSpy\n fd-scrollbar\n [overrideTabindex]=\"false\"\n [trackedTags]=\"['fd-tab']\"\n [scrollSpyDisabled]=\"_disableScrollSpy\"\n (spyChange)=\"_highlightActiveTab($event)\"\n>\n <ng-content></ng-content>\n</div>\n\n<ng-template #textTitle let-tab>\n <span fd-menu-title>{{ tab.title }}</span>\n</ng-template>\n\n<ng-template #iconOnlyTemplate let-tab>\n <span fd-tab-icon [icon]=\"tab.glyph\">\n <p fd-tab-count>{{ tab.count }}</p>\n </span>\n</ng-template>\n","import { FocusKeyManager } from '@angular/cdk/a11y';\nimport { LEFT_ARROW, RIGHT_ARROW } from '@angular/cdk/keycodes';\nimport {\n AfterContentInit,\n ChangeDetectionStrategy,\n Component,\n ContentChildren,\n ElementRef,\n HostListener,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Optional,\n QueryList,\n ViewEncapsulation\n} from '@angular/core';\nimport { CssClassBuilder, KeyUtil, RtlService, applyCssClass } from '@fundamental-ngx/cdk/utils';\nimport { ContentDensityObserver, contentDensityObserverProviders } from '@fundamental-ngx/core/content-density';\nimport { Subject, Subscription, merge } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { TabItemDirective } from '../tab-item/tab-item.directive';\nimport { TabLinkDirective } from '../tab-link/tab-link.directive';\nimport { TabModes, TabSizes } from '../tab-list.component';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: '[fd-tab-nav]',\n template: ` <ng-content></ng-content>`,\n providers: [contentDensityObserverProviders()],\n styleUrls: ['./tab-nav.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true\n})\nexport class TabNavComponent implements AfterContentInit, OnChanges, OnInit, OnDestroy, CssClassBuilder {\n /** Apply user custom styles */\n @Input()\n class: string;\n\n /**\n * Whether user wants to use tab component in certain mode. Modes available:\n * 'icon-only' | 'process' | 'filter'\n */\n @Input()\n mode: TabModes;\n\n /** Size of tab, it's mostly about adding spacing on tab container, available sizes 's' | 'm' | 'l' | 'xl' | 'xxl' */\n @Input()\n size: TabSizes = 'm';\n\n /** @hidden */\n @ContentChildren(TabLinkDirective, { descendants: true })\n links: QueryList<TabLinkDirective>;\n\n /** @hidden */\n @ContentChildren(TabItemDirective, { descendants: true })\n items: QueryList<TabItemDirective>;\n\n /** @hidden */\n private _subscriptions = new Subscription();\n\n /** An RxJS Subject that will kill the data stream upon component’s destruction (for unsubscribing) */\n private readonly _onDestroy$: Subject<void> = new Subject<void>();\n\n /** @hidden */\n private _keyboardEventsManager: FocusKeyManager<TabLinkDirective>;\n\n /** @hidden */\n private _dir: 'ltr' | 'rtl' = this._rtlService?.rtl.value ? 'rtl' : 'ltr';\n\n /** @hidden */\n constructor(\n public readonly elementRef: ElementRef,\n private readonly _contentDensityObserver: ContentDensityObserver,\n @Optional() private readonly _rtlService: RtlService\n ) {\n this._contentDensityObserver.subscribe();\n }\n\n /** @hidden */\n ngAfterContentInit(): void {\n this._setupKeyManager();\n this._refreshSubscription();\n this._listenOnContentQueryListChange();\n }\n\n /** @hidden */\n ngOnChanges(): void {\n this.buildComponentCssClass();\n }\n\n /** @hidden */\n ngOnInit(): void {\n this.buildComponentCssClass();\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n this._onDestroy$.next();\n this._onDestroy$.complete();\n this._keyboardEventsManager?.destroy();\n }\n\n /** @hidden\n * CssClassBuilder interface implementation\n * function must return single string\n * function is responsible for order which css classes are applied\n */\n @applyCssClass\n buildComponentCssClass(): string[] {\n return [`fd-tabs`, this.mode ? 'fd-tabs--' + this.mode : '', `fd-tabs--${this.size}`, this.class];\n }\n\n /** Function that gives possibility to get all the link directives, with and without nav__item wrapper */\n get tabLinks(): TabLinkDirective[] {\n let tabLinks: TabLinkDirective[] = [];\n if (this.links) {\n tabLinks = tabLinks.concat(this.links.map((link) => link));\n }\n if (this.items) {\n tabLinks = tabLinks.concat(this.items.filter((item) => !!item.linkItem).map((item) => item.linkItem));\n }\n return tabLinks;\n }\n\n /**\n * Function to select a new tab from an index.\n * @param tabIndex Index of the tab to select.\n */\n selectTab(tabIndex: number): void {\n this.tabLinks[tabIndex].elementRef.nativeElement.click();\n }\n\n /**\n * @hidden\n * Every time any of query is changed, ex. tab is removed or added\n * reference to keydown subscriptions handler is renewed\n */\n private _listenOnContentQueryListChange(): void {\n merge(this.links.changes, this.items.changes)\n .pipe(takeUntil(this._onDestroy$))\n .subscribe(() => this._refreshSubscription());\n }\n\n /** Whether any QueryList detects any changes */\n private _refreshSubscription(): void {\n this._subscriptions.unsubscribe();\n this._subscriptions = new Subscription();\n this._listenToFocusedLinks();\n\n this.links.changes.pipe(takeUntil(this._onDestroy$)).subscribe(() => {\n this._listenToFocusedLinks();\n });\n }\n\n /** @hidden */\n private _listenToFocusedLinks(): void {\n const links = this.links.toArray();\n links.forEach((link) => {\n this._subscriptions.add(\n link.focused.subscribe(() => {\n this._keyboardEventsManager.setActiveItem(links.findIndex((item) => item === link));\n })\n );\n });\n }\n\n /** @hidden */\n private _setupKeyManager(): void {\n this._keyboardEventsManager?.destroy();\n this._keyboardEventsManager = new FocusKeyManager(this.links).withWrap().withHorizontalOrientation(this._dir);\n\n this._rtlService?.rtl.pipe(takeUntil(this._onDestroy$)).subscribe((isRtl) => {\n this._keyboardEventsManager.withHorizontalOrientation(isRtl ? 'rtl' : 'ltr');\n });\n }\n\n /** @hidden */\n @HostListener('keyup', ['$event'])\n private _keyUpHandler(event: KeyboardEvent): void {\n if (KeyUtil.isKeyCode(event, [LEFT_ARROW, RIGHT_ARROW])) {\n this._keyboardEventsManager.onKeydown(event);\n }\n }\n}\n","import { NgModule } from '@angular/core';\n\nimport { TabListComponent } from './tab-list.component';\nimport { TabPanelComponent } from './tab-panel/tab-panel.component';\n\nimport { TabItemDirective } from './tab-item/tab-item.directive';\nimport { TabLinkDirective } from './tab-link/tab-link.directive';\nimport { TabNavComponent } from './tab-nav/tab-nav.component';\nimport {\n TabCountDirective,\n TabCounterHeaderDirective,\n TabHeaderDirective,\n TabIconComponent,\n TabLabelDirective,\n TabProcessDirective,\n TabProcessIconDirective,\n TabSeparatorDirective,\n TabTagDirective,\n TabTitleDirective\n} from './tab-utils/tab-directives';\n\nconst components = [\n TabListComponent,\n TabPanelComponent,\n TabTitleDirective,\n TabNavComponent,\n TabItemDirective,\n TabLinkDirective,\n TabTagDirective,\n TabIconComponent,\n TabCountDirective,\n TabLabelDirective,\n TabProcessDirective,\n TabHeaderDirective,\n TabCounterHeaderDirective,\n TabProcessIconDirective,\n TabSeparatorDirective\n];\n\n@NgModule({\n imports: [...components],\n exports: [...components]\n})\nexport class TabsModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["first"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fundamental-ngx/core",
3
- "version": "0.46.0-rc.97",
3
+ "version": "0.46.0-rc.98",
4
4
  "schematics": "./schematics/collection.json",
5
5
  "ng-update": {
6
6
  "migrations": "./schematics/migrations.json"
@@ -23,8 +23,8 @@
23
23
  "@angular/forms": "^16.2.0",
24
24
  "@angular/platform-browser": "^16.2.0",
25
25
  "@angular/router": "^16.2.0",
26
- "@fundamental-ngx/cdk": "0.46.0-rc.97",
27
- "@fundamental-ngx/i18n": "0.46.0-rc.97",
26
+ "@fundamental-ngx/cdk": "0.46.0-rc.98",
27
+ "@fundamental-ngx/i18n": "0.46.0-rc.98",
28
28
  "@sap-theming/theming-base-content": "^11.6.0",
29
29
  "fundamental-styles": "0.30.2-rc.46",
30
30
  "rxjs": "^7.8.0"
@@ -54,21 +54,21 @@ function addExternalLibraries(options) {
54
54
  });
55
55
  }
56
56
  if (!(0, package_utils_1.hasPackage)(tree, '@fundamental-ngx/i18n') ||
57
- (0, package_utils_1.checkPackageVersion)(tree, '@fundamental-ngx/i18n', '0.46.0-rc.97', '<')) {
57
+ (0, package_utils_1.checkPackageVersion)(tree, '@fundamental-ngx/i18n', '0.46.0-rc.98', '<')) {
58
58
  dependencies.push({
59
59
  type: dependencies_1.NodeDependencyType.Default,
60
60
  // Will be replaced with the real version during sync-version script run
61
- version: `0.46.0-rc.97`,
61
+ version: `0.46.0-rc.98`,
62
62
  name: '@fundamental-ngx/i18n',
63
63
  overwrite: true
64
64
  });
65
65
  }
66
66
  if (!(0, package_utils_1.hasPackage)(tree, '@fundamental-ngx/cdk') ||
67
- (0, package_utils_1.checkPackageVersion)(tree, '@fundamental-ngx/cdk', '0.46.0-rc.97', '<')) {
67
+ (0, package_utils_1.checkPackageVersion)(tree, '@fundamental-ngx/cdk', '0.46.0-rc.98', '<')) {
68
68
  dependencies.push({
69
69
  type: dependencies_1.NodeDependencyType.Default,
70
70
  // Will be replaced with the real version during sync-version script run
71
- version: `0.46.0-rc.97`,
71
+ version: `0.46.0-rc.98`,
72
72
  name: '@fundamental-ngx/cdk',
73
73
  overwrite: true
74
74
  });
@@ -1,10 +1,9 @@
1
- import { ElementRef, EventEmitter } from '@angular/core';
1
+ import { EventEmitter, OnInit } from '@angular/core';
2
2
  import * as i0 from "@angular/core";
3
3
  /**
4
4
  * A directive designed to help navigation elements determine the element currently in view of the user.
5
5
  */
6
- export declare class ScrollSpyDirective {
7
- private readonly _elRef;
6
+ export declare class ScrollSpyDirective implements OnInit {
8
7
  /**
9
8
  * An array of tags to track.
10
9
  */
@@ -36,9 +35,13 @@ export declare class ScrollSpyDirective {
36
35
  /** @hidden */
37
36
  private _currentActive;
38
37
  /** @hidden */
39
- constructor(_elRef: ElementRef);
38
+ private readonly _elRef;
39
+ /** @hidden */
40
+ private readonly _destroyRef;
40
41
  /** @hidden */
41
42
  onScroll(event: Event): void;
43
+ /** @hidden */
44
+ ngOnInit(): void;
42
45
  static ɵfac: i0.ɵɵFactoryDeclaration<ScrollSpyDirective, never>;
43
46
  static ɵdir: i0.ɵɵDirectiveDeclaration<ScrollSpyDirective, "[fdScrollSpy]", never, { "trackedTags": { "alias": "trackedTags"; "required": false; }; "fireEmpty": { "alias": "fireEmpty"; "required": false; }; "targetPercent": { "alias": "targetPercent"; "required": false; }; "targetOffset": { "alias": "targetOffset"; "required": false; }; "scrollSpyDisabled": { "alias": "scrollSpyDisabled"; "required": false; }; }, { "spyChange": "spyChange"; }, never, never, true, never>;
44
47
  }