@myrmidon/cadmus-ui 8.0.0 → 8.1.0

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.
@@ -28,8 +28,8 @@ import { PartBadgeComponent } from './components/part-badge/part-badge.component
28
28
  import { ThesaurusTreeComponent } from './components/thesaurus-tree/thesaurus-tree.component';
29
29
  import * as i0 from "@angular/core";
30
30
  export class CadmusUiModule {
31
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: CadmusUiModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
32
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.4", ngImport: i0, type: CadmusUiModule, declarations: [CloseSaveButtonsComponent,
31
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: CadmusUiModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
32
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.0.0", ngImport: i0, type: CadmusUiModule, declarations: [CloseSaveButtonsComponent,
33
33
  DecoratedTokenTextComponent,
34
34
  ErrorListComponent,
35
35
  FacetBadgeComponent,
@@ -63,7 +63,7 @@ export class CadmusUiModule {
63
63
  LookupPinComponent,
64
64
  PartBadgeComponent,
65
65
  ThesaurusTreeComponent] }); }
66
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: CadmusUiModule, imports: [CommonModule,
66
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: CadmusUiModule, imports: [CommonModule,
67
67
  FormsModule,
68
68
  RouterModule,
69
69
  ReactiveFormsModule,
@@ -82,7 +82,7 @@ export class CadmusUiModule {
82
82
  CadmusCoreModule,
83
83
  RefLookupComponent] }); }
84
84
  }
85
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: CadmusUiModule, decorators: [{
85
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: CadmusUiModule, decorators: [{
86
86
  type: NgModule,
87
87
  args: [{
88
88
  imports: [
@@ -1,8 +1,7 @@
1
1
  import { Component, Input, Output, EventEmitter } from '@angular/core';
2
2
  import * as i0 from "@angular/core";
3
- import * as i1 from "@angular/common";
4
- import * as i2 from "@angular/material/button";
5
- import * as i3 from "@angular/material/icon";
3
+ import * as i1 from "@angular/material/button";
4
+ import * as i2 from "@angular/material/icon";
6
5
  export class CloseSaveButtonsComponent {
7
6
  constructor() {
8
7
  this.closeRequest = new EventEmitter();
@@ -10,12 +9,12 @@ export class CloseSaveButtonsComponent {
10
9
  close() {
11
10
  this.closeRequest.emit();
12
11
  }
13
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: CloseSaveButtonsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
14
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.4", type: CloseSaveButtonsComponent, selector: "cadmus-close-save-buttons", inputs: { form: "form", noSave: "noSave" }, outputs: { closeRequest: "closeRequest" }, ngImport: i0, template: "<ng-container *ngIf=\"form\">\r\n <button type=\"button\" mat-raised-button color=\"warn\" (click)=\"close()\">\r\n <mat-icon>cancel</mat-icon>\r\n close\r\n </button>\r\n <button\r\n *ngIf=\"!noSave\"\r\n type=\"submit\"\r\n [disabled]=\"form.invalid\"\r\n mat-raised-button\r\n color=\"primary\"\r\n style=\"margin-left:8px\"\r\n >\r\n <mat-icon>check_circle</mat-icon>\r\n save\r\n </button>\r\n</ng-container>\r\n", styles: [""], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }] }); }
12
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: CloseSaveButtonsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
13
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.0", type: CloseSaveButtonsComponent, selector: "cadmus-close-save-buttons", inputs: { form: "form", noSave: "noSave" }, outputs: { closeRequest: "closeRequest" }, ngImport: i0, template: "@if (form) {\n <button type=\"button\" mat-raised-button color=\"warn\" (click)=\"close()\">\n <mat-icon>cancel</mat-icon>\n close\n </button>\n @if (!noSave) {\n <button\n type=\"submit\"\n [disabled]=\"form.invalid\"\n mat-raised-button\n color=\"primary\"\n style=\"margin-left:8px\"\n >\n <mat-icon>check_circle</mat-icon>\n save\n </button>\n }\n}\n", styles: [""], dependencies: [{ kind: "component", type: i1.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }] }); }
15
14
  }
16
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: CloseSaveButtonsComponent, decorators: [{
15
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: CloseSaveButtonsComponent, decorators: [{
17
16
  type: Component,
18
- args: [{ selector: 'cadmus-close-save-buttons', template: "<ng-container *ngIf=\"form\">\r\n <button type=\"button\" mat-raised-button color=\"warn\" (click)=\"close()\">\r\n <mat-icon>cancel</mat-icon>\r\n close\r\n </button>\r\n <button\r\n *ngIf=\"!noSave\"\r\n type=\"submit\"\r\n [disabled]=\"form.invalid\"\r\n mat-raised-button\r\n color=\"primary\"\r\n style=\"margin-left:8px\"\r\n >\r\n <mat-icon>check_circle</mat-icon>\r\n save\r\n </button>\r\n</ng-container>\r\n" }]
17
+ args: [{ selector: 'cadmus-close-save-buttons', template: "@if (form) {\n <button type=\"button\" mat-raised-button color=\"warn\" (click)=\"close()\">\n <mat-icon>cancel</mat-icon>\n close\n </button>\n @if (!noSave) {\n <button\n type=\"submit\"\n [disabled]=\"form.invalid\"\n mat-raised-button\n color=\"primary\"\n style=\"margin-left:8px\"\n >\n <mat-icon>check_circle</mat-icon>\n save\n </button>\n }\n}\n" }]
19
18
  }], ctorParameters: () => [], propDecorators: { form: [{
20
19
  type: Input
21
20
  }], noSave: [{
@@ -23,4 +22,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.4", ngImpor
23
22
  }], closeRequest: [{
24
23
  type: Output
25
24
  }] } });
26
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xvc2Utc2F2ZS1idXR0b25zLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL215cm1pZG9uL2NhZG11cy11aS9zcmMvbGliL2NvbXBvbmVudHMvY2xvc2Utc2F2ZS1idXR0b25zL2Nsb3NlLXNhdmUtYnV0dG9ucy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9teXJtaWRvbi9jYWRtdXMtdWkvc3JjL2xpYi9jb21wb25lbnRzL2Nsb3NlLXNhdmUtYnV0dG9ucy9jbG9zZS1zYXZlLWJ1dHRvbnMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQzs7Ozs7QUFRdkUsTUFBTSxPQUFPLHlCQUF5QjtJQVNwQztRQUNFLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztJQUN6QyxDQUFDO0lBRU0sS0FBSztRQUNWLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDM0IsQ0FBQzs4R0FmVSx5QkFBeUI7a0dBQXpCLHlCQUF5Qix3SkNSdEMsc2NBaUJBOzsyRkRUYSx5QkFBeUI7a0JBTHJDLFNBQVM7K0JBQ0UsMkJBQTJCO3dEQU05QixJQUFJO3NCQURWLEtBQUs7Z0JBR0MsTUFBTTtzQkFEWixLQUFLO2dCQUlDLFlBQVk7c0JBRGxCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3JtR3JvdXAsIFVudHlwZWRGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2NhZG11cy1jbG9zZS1zYXZlLWJ1dHRvbnMnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9jbG9zZS1zYXZlLWJ1dHRvbnMuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2Nsb3NlLXNhdmUtYnV0dG9ucy5jb21wb25lbnQuY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIENsb3NlU2F2ZUJ1dHRvbnNDb21wb25lbnQge1xyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGZvcm0/OiBGb3JtR3JvdXAgfCBVbnR5cGVkRm9ybUdyb3VwO1xyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIG5vU2F2ZT86IGJvb2xlYW47XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIHB1YmxpYyBjbG9zZVJlcXVlc3Q6IEV2ZW50RW1pdHRlcjxhbnk+O1xyXG5cclxuICBjb25zdHJ1Y3RvcigpIHtcclxuICAgIHRoaXMuY2xvc2VSZXF1ZXN0ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGNsb3NlKCk6IHZvaWQge1xyXG4gICAgdGhpcy5jbG9zZVJlcXVlc3QuZW1pdCgpO1xyXG4gIH1cclxufVxyXG4iLCI8bmctY29udGFpbmVyICpuZ0lmPVwiZm9ybVwiPlxyXG4gIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIG1hdC1yYWlzZWQtYnV0dG9uIGNvbG9yPVwid2FyblwiIChjbGljayk9XCJjbG9zZSgpXCI+XHJcbiAgICA8bWF0LWljb24+Y2FuY2VsPC9tYXQtaWNvbj5cclxuICAgIGNsb3NlXHJcbiAgPC9idXR0b24+XHJcbiAgPGJ1dHRvblxyXG4gICAgKm5nSWY9XCIhbm9TYXZlXCJcclxuICAgIHR5cGU9XCJzdWJtaXRcIlxyXG4gICAgW2Rpc2FibGVkXT1cImZvcm0uaW52YWxpZFwiXHJcbiAgICBtYXQtcmFpc2VkLWJ1dHRvblxyXG4gICAgY29sb3I9XCJwcmltYXJ5XCJcclxuICAgIHN0eWxlPVwibWFyZ2luLWxlZnQ6OHB4XCJcclxuICA+XHJcbiAgICA8bWF0LWljb24+Y2hlY2tfY2lyY2xlPC9tYXQtaWNvbj5cclxuICAgIHNhdmVcclxuICA8L2J1dHRvbj5cclxuPC9uZy1jb250YWluZXI+XHJcbiJdfQ==
25
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xvc2Utc2F2ZS1idXR0b25zLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL215cm1pZG9uL2NhZG11cy11aS9zcmMvbGliL2NvbXBvbmVudHMvY2xvc2Utc2F2ZS1idXR0b25zL2Nsb3NlLXNhdmUtYnV0dG9ucy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9teXJtaWRvbi9jYWRtdXMtdWkvc3JjL2xpYi9jb21wb25lbnRzL2Nsb3NlLXNhdmUtYnV0dG9ucy9jbG9zZS1zYXZlLWJ1dHRvbnMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQzs7OztBQVF2RSxNQUFNLE9BQU8seUJBQXlCO0lBU3BDO1FBQ0UsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO0lBQ3pDLENBQUM7SUFFTSxLQUFLO1FBQ1YsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUMzQixDQUFDOzhHQWZVLHlCQUF5QjtrR0FBekIseUJBQXlCLHdKQ1J0Qyw0WkFrQkE7OzJGRFZhLHlCQUF5QjtrQkFMckMsU0FBUzsrQkFDRSwyQkFBMkI7d0RBTTlCLElBQUk7c0JBRFYsS0FBSztnQkFHQyxNQUFNO3NCQURaLEtBQUs7Z0JBSUMsWUFBWTtzQkFEbEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1Hcm91cCwgVW50eXBlZEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnY2FkbXVzLWNsb3NlLXNhdmUtYnV0dG9ucycsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2Nsb3NlLXNhdmUtYnV0dG9ucy5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vY2xvc2Utc2F2ZS1idXR0b25zLmNvbXBvbmVudC5jc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ2xvc2VTYXZlQnV0dG9uc0NvbXBvbmVudCB7XHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgZm9ybT86IEZvcm1Hcm91cCB8IFVudHlwZWRGb3JtR3JvdXA7XHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgbm9TYXZlPzogYm9vbGVhbjtcclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgcHVibGljIGNsb3NlUmVxdWVzdDogRXZlbnRFbWl0dGVyPGFueT47XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgdGhpcy5jbG9zZVJlcXVlc3QgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgY2xvc2UoKTogdm9pZCB7XHJcbiAgICB0aGlzLmNsb3NlUmVxdWVzdC5lbWl0KCk7XHJcbiAgfVxyXG59XHJcbiIsIkBpZiAoZm9ybSkge1xuICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBtYXQtcmFpc2VkLWJ1dHRvbiBjb2xvcj1cIndhcm5cIiAoY2xpY2spPVwiY2xvc2UoKVwiPlxuICAgIDxtYXQtaWNvbj5jYW5jZWw8L21hdC1pY29uPlxuICAgIGNsb3NlXG4gIDwvYnV0dG9uPlxuICBAaWYgKCFub1NhdmUpIHtcbiAgICA8YnV0dG9uXG4gICAgICB0eXBlPVwic3VibWl0XCJcbiAgICAgIFtkaXNhYmxlZF09XCJmb3JtLmludmFsaWRcIlxuICAgICAgbWF0LXJhaXNlZC1idXR0b25cbiAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICBzdHlsZT1cIm1hcmdpbi1sZWZ0OjhweFwiXG4gICAgICA+XG4gICAgICA8bWF0LWljb24+Y2hlY2tfY2lyY2xlPC9tYXQtaWNvbj5cbiAgICAgIHNhdmVcbiAgICA8L2J1dHRvbj5cbiAgfVxufVxuIl19
@@ -48,10 +48,10 @@ export class DecoratedTokenTextComponent {
48
48
  decorate() {
49
49
  this.text = this._textLayerService.render(this._baseText, this._locations, this._selectedLoc);
50
50
  }
51
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: DecoratedTokenTextComponent, deps: [{ token: i1.TextLayerService }], target: i0.ɵɵFactoryTarget.Component }); }
52
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.4", type: DecoratedTokenTextComponent, selector: "cadmus-decorated-token-text", inputs: { baseText: "baseText", locations: "locations", selectedLocation: "selectedLocation" }, viewQueries: [{ propertyName: "_textElement", first: true, predicate: ["textElem"], descendants: true }], ngImport: i0, template: "<div [innerHtml]=\"text | safeHtml: 'html'\" id=\"text\" #textElem></div>\r\n", styles: [":host ::ng-deep div#text{counter-reset:text-y-counter}:host ::ng-deep div#text p:before{content:counter(text-y-counter);counter-increment:text-y-counter;margin-right:6px;color:#a0a0a0}:host ::ng-deep span.fr{background-color:#ff0;border:1px solid silver;border-radius:6px;padding:0 4px}:host ::ng-deep span.fr-sel{background-color:orange;font-weight:700;border:1px solid #404040}\n"], dependencies: [{ kind: "pipe", type: i2.SafeHtmlPipe, name: "safeHtml" }] }); }
51
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: DecoratedTokenTextComponent, deps: [{ token: i1.TextLayerService }], target: i0.ɵɵFactoryTarget.Component }); }
52
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.0", type: DecoratedTokenTextComponent, selector: "cadmus-decorated-token-text", inputs: { baseText: "baseText", locations: "locations", selectedLocation: "selectedLocation" }, viewQueries: [{ propertyName: "_textElement", first: true, predicate: ["textElem"], descendants: true }], ngImport: i0, template: "<div [innerHtml]=\"text | safeHtml: 'html'\" id=\"text\" #textElem></div>\r\n", styles: [":host ::ng-deep div#text{counter-reset:text-y-counter}:host ::ng-deep div#text p:before{content:counter(text-y-counter);counter-increment:text-y-counter;margin-right:6px;color:#a0a0a0}:host ::ng-deep span.fr{background-color:#ff0;border:1px solid silver;border-radius:6px;padding:0 4px}:host ::ng-deep span.fr-sel{background-color:orange;font-weight:700;border:1px solid #404040}\n"], dependencies: [{ kind: "pipe", type: i2.SafeHtmlPipe, name: "safeHtml" }] }); }
53
53
  }
54
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: DecoratedTokenTextComponent, decorators: [{
54
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: DecoratedTokenTextComponent, decorators: [{
55
55
  type: Component,
56
56
  args: [{ selector: 'cadmus-decorated-token-text', template: "<div [innerHtml]=\"text | safeHtml: 'html'\" id=\"text\" #textElem></div>\r\n", styles: [":host ::ng-deep div#text{counter-reset:text-y-counter}:host ::ng-deep div#text p:before{content:counter(text-y-counter);counter-increment:text-y-counter;margin-right:6px;color:#a0a0a0}:host ::ng-deep span.fr{background-color:#ff0;border:1px solid silver;border-radius:6px;padding:0 4px}:host ::ng-deep span.fr-sel{background-color:orange;font-weight:700;border:1px solid #404040}\n"] }]
57
57
  }], ctorParameters: () => [{ type: i1.TextLayerService }], propDecorators: { _textElement: [{
@@ -1,17 +1,16 @@
1
1
  import { Component, Input } from '@angular/core';
2
2
  import * as i0 from "@angular/core";
3
- import * as i1 from "@angular/common";
4
3
  export class ErrorListComponent {
5
4
  constructor() { }
6
5
  ngOnInit() {
7
6
  }
8
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: ErrorListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
9
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.4", type: ErrorListComponent, selector: "cadmus-error-list", inputs: { errors: "errors" }, ngImport: i0, template: "<ul *ngIf=\"errors\">\r\n <li *ngFor=\"let error of errors\">{{error}}</li>\r\n</ul>\r\n", styles: [""], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
7
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: ErrorListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
8
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.0", type: ErrorListComponent, selector: "cadmus-error-list", inputs: { errors: "errors" }, ngImport: i0, template: "@if (errors) {\n <ul>\n @for (error of errors; track error) {\n <li>{{error}}</li>\n }\n </ul>\n}\n", styles: [""] }); }
10
9
  }
11
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: ErrorListComponent, decorators: [{
10
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: ErrorListComponent, decorators: [{
12
11
  type: Component,
13
- args: [{ selector: 'cadmus-error-list', template: "<ul *ngIf=\"errors\">\r\n <li *ngFor=\"let error of errors\">{{error}}</li>\r\n</ul>\r\n" }]
12
+ args: [{ selector: 'cadmus-error-list', template: "@if (errors) {\n <ul>\n @for (error of errors; track error) {\n <li>{{error}}</li>\n }\n </ul>\n}\n" }]
14
13
  }], ctorParameters: () => [], propDecorators: { errors: [{
15
14
  type: Input
16
15
  }] } });
17
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3ItbGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9teXJtaWRvbi9jYWRtdXMtdWkvc3JjL2xpYi9jb21wb25lbnRzL2Vycm9yLWxpc3QvZXJyb3ItbGlzdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9teXJtaWRvbi9jYWRtdXMtdWkvc3JjL2xpYi9jb21wb25lbnRzL2Vycm9yLWxpc3QvZXJyb3ItbGlzdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQzs7O0FBT3pELE1BQU0sT0FBTyxrQkFBa0I7SUFJN0IsZ0JBQWdCLENBQUM7SUFFVixRQUFRO0lBQ2YsQ0FBQzs4R0FQVSxrQkFBa0I7a0dBQWxCLGtCQUFrQix1RkNQL0IsMkZBR0E7OzJGRElhLGtCQUFrQjtrQkFMOUIsU0FBUzsrQkFDRSxtQkFBbUI7d0RBTXRCLE1BQU07c0JBRFosS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdjYWRtdXMtZXJyb3ItbGlzdCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2Vycm9yLWxpc3QuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2Vycm9yLWxpc3QuY29tcG9uZW50LmNzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBFcnJvckxpc3RDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGVycm9ycz86IHN0cmluZ1tdO1xyXG5cclxuICBjb25zdHJ1Y3RvcigpIHsgfVxyXG5cclxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgfVxyXG59XHJcbiIsIjx1bCAqbmdJZj1cImVycm9yc1wiPlxyXG4gIDxsaSAqbmdGb3I9XCJsZXQgZXJyb3Igb2YgZXJyb3JzXCI+e3tlcnJvcn19PC9saT5cclxuPC91bD5cclxuIl19
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3ItbGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9teXJtaWRvbi9jYWRtdXMtdWkvc3JjL2xpYi9jb21wb25lbnRzL2Vycm9yLWxpc3QvZXJyb3ItbGlzdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9teXJtaWRvbi9jYWRtdXMtdWkvc3JjL2xpYi9jb21wb25lbnRzL2Vycm9yLWxpc3QvZXJyb3ItbGlzdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFPekQsTUFBTSxPQUFPLGtCQUFrQjtJQUk3QixnQkFBZ0IsQ0FBQztJQUVWLFFBQVE7SUFDZixDQUFDOzhHQVBVLGtCQUFrQjtrR0FBbEIsa0JBQWtCLHVGQ1AvQixrSEFPQTs7MkZEQWEsa0JBQWtCO2tCQUw5QixTQUFTOytCQUNFLG1CQUFtQjt3REFNdEIsTUFBTTtzQkFEWixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2NhZG11cy1lcnJvci1saXN0JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZXJyb3ItbGlzdC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vZXJyb3ItbGlzdC5jb21wb25lbnQuY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIEVycm9yTGlzdENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgZXJyb3JzPzogc3RyaW5nW107XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkgeyB9XHJcblxyXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICB9XHJcbn1cclxuIiwiQGlmIChlcnJvcnMpIHtcbiAgPHVsPlxuICAgIEBmb3IgKGVycm9yIG9mIGVycm9yczsgdHJhY2sgZXJyb3IpIHtcbiAgICAgIDxsaT57e2Vycm9yfX08L2xpPlxuICAgIH1cbiAgPC91bD5cbn1cbiJdfQ==
@@ -76,10 +76,10 @@ export class FacetBadgeComponent {
76
76
  this.contrastColor = this._colorService.getContrastColor(this.color);
77
77
  this.tip = this.getFacetTip(this._data?.facetId || '') ?? undefined;
78
78
  }
79
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: FacetBadgeComponent, deps: [{ token: i1.ColorService }], target: i0.ɵɵFactoryTarget.Component }); }
80
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.4", type: FacetBadgeComponent, selector: "cadmus-facet-badge", inputs: { data: "data" }, ngImport: i0, template: "<span\r\n class=\"model-type\"\r\n [style.background-color]=\"color\"\r\n [style.color]=\"contrastColor\"\r\n matTooltip=\"{{ tip }}\"\r\n >{{ data?.facetId }}\r\n</span>\r\n", styles: ["span.model-type{padding:4px;border-radius:6px}\n"], dependencies: [{ kind: "directive", type: i2.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }] }); }
79
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: FacetBadgeComponent, deps: [{ token: i1.ColorService }], target: i0.ɵɵFactoryTarget.Component }); }
80
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.0", type: FacetBadgeComponent, selector: "cadmus-facet-badge", inputs: { data: "data" }, ngImport: i0, template: "<span\r\n class=\"model-type\"\r\n [style.background-color]=\"color\"\r\n [style.color]=\"contrastColor\"\r\n matTooltip=\"{{ tip }}\"\r\n >{{ data?.facetId }}\r\n</span>\r\n", styles: ["span.model-type{padding:4px;border-radius:6px}\n"], dependencies: [{ kind: "directive", type: i2.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }] }); }
81
81
  }
82
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: FacetBadgeComponent, decorators: [{
82
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: FacetBadgeComponent, decorators: [{
83
83
  type: Component,
84
84
  args: [{ selector: 'cadmus-facet-badge', template: "<span\r\n class=\"model-type\"\r\n [style.background-color]=\"color\"\r\n [style.color]=\"contrastColor\"\r\n matTooltip=\"{{ tip }}\"\r\n >{{ data?.facetId }}\r\n</span>\r\n", styles: ["span.model-type{padding:4px;border-radius:6px}\n"] }]
85
85
  }], ctorParameters: () => [{ type: i1.ColorService }], propDecorators: { data: [{
@@ -1,7 +1,6 @@
1
1
  import { Component, Input } from '@angular/core';
2
2
  import * as i0 from "@angular/core";
3
- import * as i1 from "@angular/common";
4
- import * as i2 from "@angular/material/tooltip";
3
+ import * as i1 from "@angular/material/tooltip";
5
4
  /**
6
5
  * Badge with item's flags. Each flag is represented by a circle filled
7
6
  * with the flag's color key.
@@ -26,13 +25,13 @@ export class FlagsBadgeComponent {
26
25
  return def.id & this._data.flags;
27
26
  });
28
27
  }
29
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: FlagsBadgeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
30
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.4", type: FlagsBadgeComponent, selector: "cadmus-flags-badge", inputs: { data: "data" }, ngImport: i0, template: "<div>\r\n <span\r\n class=\"badge-flag\"\r\n *ngFor=\"let def of badgeFlags\"\r\n [style.color]=\"'#' + def.colorKey\"\r\n [matTooltip]=\"def.label\"\r\n >\r\n &#x2b24;\r\n </span>\r\n</div>\r\n", styles: ["span.badge-flag{font-size:1rem;cursor:default}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }] }); }
28
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: FlagsBadgeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
29
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.0", type: FlagsBadgeComponent, selector: "cadmus-flags-badge", inputs: { data: "data" }, ngImport: i0, template: "<div>\n @for (def of badgeFlags; track def) {\n <span\n class=\"badge-flag\"\n [style.color]=\"'#' + def.colorKey\"\n [matTooltip]=\"def.label\"\n >\n &#x2b24;\n </span>\n }\n</div>\n", styles: ["span.badge-flag{font-size:1rem;cursor:default}\n"], dependencies: [{ kind: "directive", type: i1.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }] }); }
31
30
  }
32
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: FlagsBadgeComponent, decorators: [{
31
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: FlagsBadgeComponent, decorators: [{
33
32
  type: Component,
34
- args: [{ selector: 'cadmus-flags-badge', template: "<div>\r\n <span\r\n class=\"badge-flag\"\r\n *ngFor=\"let def of badgeFlags\"\r\n [style.color]=\"'#' + def.colorKey\"\r\n [matTooltip]=\"def.label\"\r\n >\r\n &#x2b24;\r\n </span>\r\n</div>\r\n", styles: ["span.badge-flag{font-size:1rem;cursor:default}\n"] }]
33
+ args: [{ selector: 'cadmus-flags-badge', template: "<div>\n @for (def of badgeFlags; track def) {\n <span\n class=\"badge-flag\"\n [style.color]=\"'#' + def.colorKey\"\n [matTooltip]=\"def.label\"\n >\n &#x2b24;\n </span>\n }\n</div>\n", styles: ["span.badge-flag{font-size:1rem;cursor:default}\n"] }]
35
34
  }], ctorParameters: () => [], propDecorators: { data: [{
36
35
  type: Input
37
36
  }] } });
38
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxhZ3MtYmFkZ2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXlybWlkb24vY2FkbXVzLXVpL3NyYy9saWIvY29tcG9uZW50cy9mbGFncy1iYWRnZS9mbGFncy1iYWRnZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9teXJtaWRvbi9jYWRtdXMtdWkvc3JjL2xpYi9jb21wb25lbnRzL2ZsYWdzLWJhZGdlL2ZsYWdzLWJhZGdlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7O0FBV2pEOzs7R0FHRztBQU1ILE1BQU0sT0FBTyxtQkFBbUI7SUFLOUIsSUFDVyxJQUFJO1FBQ2IsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQ3BCLENBQUM7SUFDRCxJQUFXLElBQUksQ0FBQyxLQUF3QztRQUN0RCxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNuQixJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDckIsQ0FBQztJQUVEO1FBQ0UsSUFBSSxDQUFDLFVBQVUsR0FBRyxFQUFFLENBQUM7SUFDdkIsQ0FBQztJQUVPLFdBQVc7UUFDakIsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNoQixPQUFPO1FBQ1QsQ0FBQztRQUNELElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7WUFDdEQsdUNBQXVDO1lBQ3ZDLE9BQU8sR0FBRyxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsS0FBTSxDQUFDLEtBQUssQ0FBQztRQUNwQyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7OEdBMUJVLG1CQUFtQjtrR0FBbkIsbUJBQW1CLG9GQ3BCaEMsc05BVUE7OzJGRFVhLG1CQUFtQjtrQkFML0IsU0FBUzsrQkFDRSxvQkFBb0I7d0RBVW5CLElBQUk7c0JBRGQsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRmxhZ0RlZmluaXRpb24gfSBmcm9tICdAbXlybWlkb24vY2FkbXVzLWNvcmUnO1xyXG5cclxuLyoqXHJcbiAqIERhdGEgZm9yIEZsYWdzQmFkZ2VDb21wb25lbnQsIGluY2x1ZGluZyBmbGFncyBhbmQgdGhlaXIgZGVmaW5pdGlvbnMuXHJcbiAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIEZsYWdzQmFkZ2VEYXRhIHtcclxuICBkZWZpbml0aW9uczogRmxhZ0RlZmluaXRpb25bXTtcclxuICBmbGFnczogbnVtYmVyO1xyXG59XHJcblxyXG4vKipcclxuICogQmFkZ2Ugd2l0aCBpdGVtJ3MgZmxhZ3MuIEVhY2ggZmxhZyBpcyByZXByZXNlbnRlZCBieSBhIGNpcmNsZSBmaWxsZWRcclxuICogd2l0aCB0aGUgZmxhZydzIGNvbG9yIGtleS5cclxuICovXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnY2FkbXVzLWZsYWdzLWJhZGdlJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZmxhZ3MtYmFkZ2UuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2ZsYWdzLWJhZGdlLmNvbXBvbmVudC5jc3MnXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIEZsYWdzQmFkZ2VDb21wb25lbnQge1xyXG4gIHByaXZhdGUgX2RhdGE/OiBGbGFnc0JhZGdlRGF0YSB8IG51bGw7XHJcblxyXG4gIHB1YmxpYyBiYWRnZUZsYWdzOiBGbGFnRGVmaW5pdGlvbltdO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBnZXQgZGF0YSgpOiBGbGFnc0JhZGdlRGF0YSB8IHVuZGVmaW5lZCB8IG51bGwge1xyXG4gICAgcmV0dXJuIHRoaXMuX2RhdGE7XHJcbiAgfVxyXG4gIHB1YmxpYyBzZXQgZGF0YSh2YWx1ZTogRmxhZ3NCYWRnZURhdGEgfCB1bmRlZmluZWQgfCBudWxsKSB7XHJcbiAgICB0aGlzLl9kYXRhID0gdmFsdWU7XHJcbiAgICB0aGlzLnVwZGF0ZUJhZGdlKCk7XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3RvcigpIHtcclxuICAgIHRoaXMuYmFkZ2VGbGFncyA9IFtdO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB1cGRhdGVCYWRnZSgpIHtcclxuICAgIGlmICghdGhpcy5fZGF0YSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLmJhZGdlRmxhZ3MgPSB0aGlzLl9kYXRhLmRlZmluaXRpb25zLmZpbHRlcigoZGVmKSA9PiB7XHJcbiAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogbm8tYml0d2lzZVxyXG4gICAgICByZXR1cm4gZGVmLmlkICYgdGhpcy5fZGF0YSEuZmxhZ3M7XHJcbiAgICB9KTtcclxuICB9XHJcbn1cclxuIiwiPGRpdj5cclxuICA8c3BhblxyXG4gICAgY2xhc3M9XCJiYWRnZS1mbGFnXCJcclxuICAgICpuZ0Zvcj1cImxldCBkZWYgb2YgYmFkZ2VGbGFnc1wiXHJcbiAgICBbc3R5bGUuY29sb3JdPVwiJyMnICsgZGVmLmNvbG9yS2V5XCJcclxuICAgIFttYXRUb29sdGlwXT1cImRlZi5sYWJlbFwiXHJcbiAgPlxyXG4gICAgJiN4MmIyNDtcclxuICA8L3NwYW4+XHJcbjwvZGl2PlxyXG4iXX0=
37
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxhZ3MtYmFkZ2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXlybWlkb24vY2FkbXVzLXVpL3NyYy9saWIvY29tcG9uZW50cy9mbGFncy1iYWRnZS9mbGFncy1iYWRnZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9teXJtaWRvbi9jYWRtdXMtdWkvc3JjL2xpYi9jb21wb25lbnRzL2ZsYWdzLWJhZGdlL2ZsYWdzLWJhZGdlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7QUFXakQ7OztHQUdHO0FBTUgsTUFBTSxPQUFPLG1CQUFtQjtJQUs5QixJQUNXLElBQUk7UUFDYixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDcEIsQ0FBQztJQUNELElBQVcsSUFBSSxDQUFDLEtBQXdDO1FBQ3RELElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNyQixDQUFDO0lBRUQ7UUFDRSxJQUFJLENBQUMsVUFBVSxHQUFHLEVBQUUsQ0FBQztJQUN2QixDQUFDO0lBRU8sV0FBVztRQUNqQixJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ2hCLE9BQU87UUFDVCxDQUFDO1FBQ0QsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtZQUN0RCx1Q0FBdUM7WUFDdkMsT0FBTyxHQUFHLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxLQUFNLENBQUMsS0FBSyxDQUFDO1FBQ3BDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs4R0ExQlUsbUJBQW1CO2tHQUFuQixtQkFBbUIsb0ZDcEJoQywwTkFXQTs7MkZEU2EsbUJBQW1CO2tCQUwvQixTQUFTOytCQUNFLG9CQUFvQjt3REFVbkIsSUFBSTtzQkFEZCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGbGFnRGVmaW5pdGlvbiB9IGZyb20gJ0BteXJtaWRvbi9jYWRtdXMtY29yZSc7XHJcblxyXG4vKipcclxuICogRGF0YSBmb3IgRmxhZ3NCYWRnZUNvbXBvbmVudCwgaW5jbHVkaW5nIGZsYWdzIGFuZCB0aGVpciBkZWZpbml0aW9ucy5cclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgRmxhZ3NCYWRnZURhdGEge1xyXG4gIGRlZmluaXRpb25zOiBGbGFnRGVmaW5pdGlvbltdO1xyXG4gIGZsYWdzOiBudW1iZXI7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBCYWRnZSB3aXRoIGl0ZW0ncyBmbGFncy4gRWFjaCBmbGFnIGlzIHJlcHJlc2VudGVkIGJ5IGEgY2lyY2xlIGZpbGxlZFxyXG4gKiB3aXRoIHRoZSBmbGFnJ3MgY29sb3Iga2V5LlxyXG4gKi9cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdjYWRtdXMtZmxhZ3MtYmFkZ2UnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9mbGFncy1iYWRnZS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vZmxhZ3MtYmFkZ2UuY29tcG9uZW50LmNzcyddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRmxhZ3NCYWRnZUNvbXBvbmVudCB7XHJcbiAgcHJpdmF0ZSBfZGF0YT86IEZsYWdzQmFkZ2VEYXRhIHwgbnVsbDtcclxuXHJcbiAgcHVibGljIGJhZGdlRmxhZ3M6IEZsYWdEZWZpbml0aW9uW107XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGdldCBkYXRhKCk6IEZsYWdzQmFkZ2VEYXRhIHwgdW5kZWZpbmVkIHwgbnVsbCB7XHJcbiAgICByZXR1cm4gdGhpcy5fZGF0YTtcclxuICB9XHJcbiAgcHVibGljIHNldCBkYXRhKHZhbHVlOiBGbGFnc0JhZGdlRGF0YSB8IHVuZGVmaW5lZCB8IG51bGwpIHtcclxuICAgIHRoaXMuX2RhdGEgPSB2YWx1ZTtcclxuICAgIHRoaXMudXBkYXRlQmFkZ2UoKTtcclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgdGhpcy5iYWRnZUZsYWdzID0gW107XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHVwZGF0ZUJhZGdlKCkge1xyXG4gICAgaWYgKCF0aGlzLl9kYXRhKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMuYmFkZ2VGbGFncyA9IHRoaXMuX2RhdGEuZGVmaW5pdGlvbnMuZmlsdGVyKChkZWYpID0+IHtcclxuICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOiBuby1iaXR3aXNlXHJcbiAgICAgIHJldHVybiBkZWYuaWQgJiB0aGlzLl9kYXRhIS5mbGFncztcclxuICAgIH0pO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2PlxuICBAZm9yIChkZWYgb2YgYmFkZ2VGbGFnczsgdHJhY2sgZGVmKSB7XG4gICAgPHNwYW5cbiAgICAgIGNsYXNzPVwiYmFkZ2UtZmxhZ1wiXG4gICAgICBbc3R5bGUuY29sb3JdPVwiJyMnICsgZGVmLmNvbG9yS2V5XCJcbiAgICAgIFttYXRUb29sdGlwXT1cImRlZi5sYWJlbFwiXG4gICAgICA+XG4gICAgICAmI3gyYjI0O1xuICAgIDwvc3Bhbj5cbiAgfVxuPC9kaXY+XG4iXX0=
@@ -2,11 +2,10 @@ import { Component, Input, Output, EventEmitter } from '@angular/core';
2
2
  import * as i0 from "@angular/core";
3
3
  import * as i1 from "@angular/forms";
4
4
  import * as i2 from "@myrmidon/ng-mat-tools";
5
- import * as i3 from "@angular/common";
6
- import * as i4 from "@angular/material/button";
7
- import * as i5 from "@angular/material/checkbox";
8
- import * as i6 from "@angular/material/icon";
9
- import * as i7 from "@angular/material/tooltip";
5
+ import * as i3 from "@angular/material/button";
6
+ import * as i4 from "@angular/material/checkbox";
7
+ import * as i5 from "@angular/material/icon";
8
+ import * as i6 from "@angular/material/tooltip";
10
9
  export class LayerHintsComponent {
11
10
  get hints() {
12
11
  return this._hints;
@@ -75,12 +74,12 @@ export class LayerHintsComponent {
75
74
  }
76
75
  });
77
76
  }
78
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: LayerHintsComponent, deps: [{ token: i1.FormBuilder }, { token: i2.DialogService }], target: i0.ɵɵFactoryTarget.Component }); }
79
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.4", type: LayerHintsComponent, selector: "cadmus-layer-hints", inputs: { hints: "hints", targetLocation: "targetLocation", disabled: "disabled", readonly: "readonly" }, outputs: { requestEdit: "requestEdit", requestDelete: "requestDelete", requestMove: "requestMove", requestPatch: "requestPatch" }, ngImport: i0, template: "<form *ngIf=\"hints\" [formGroup]=\"form\" (submit)=\"emitRequestPatch()\">\r\n <table class=\"patches\">\r\n <thead>\r\n <tr>\r\n <th></th>\r\n <th>location</th>\r\n <th>description</th>\r\n <th>patch</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let hint of hints; let i = index\">\r\n <td *ngIf=\"!readonly\">\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n matTooltip=\"Edit this fragment\"\r\n [disabled]=\"disabled\"\r\n >\r\n <mat-icon>edit</mat-icon>\r\n </button>\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n matTooltip=\"Move this fragment to {{ targetLocation }}\"\r\n [disabled]=\"\r\n disabled || !targetLocation || targetLocation === hint.location\r\n \"\r\n (click)=\"emitRequestMove(hint)\"\r\n >\r\n <mat-icon>arrow_forward</mat-icon>\r\n </button>\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n matTooltip=\"Delete this fragment\"\r\n color=\"warn\"\r\n [disabled]=\"disabled\"\r\n (click)=\"emitRequestDelete(hint)\"\r\n >\r\n <mat-icon>delete</mat-icon>\r\n </button>\r\n </td>\r\n <td>{{ hint.location }}</td>\r\n <td>{{ hint.description }}</td>\r\n <td>\r\n <mat-checkbox\r\n *ngIf=\"hint.patchOperation\"\r\n matTooltip=\"Apply this patch\"\r\n [disabled]=\"disabled\"\r\n [value]=\"(i + 1).toString()\"\r\n >\r\n {{ hint.patchOperation }}\r\n </mat-checkbox>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n <div *ngIf=\"targetLocation\">move target: {{ targetLocation }}</div>\r\n <button\r\n type=\"submit\"\r\n mat-raised-button\r\n [disabled]=\"readonly || disabled || form.invalid\"\r\n >\r\n apply patches\r\n </button>\r\n</form>\r\n", styles: ["table.patches th{font-weight:400;color:#bdbdbd}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i4.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i4.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: i5.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i7.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }] }); }
77
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: LayerHintsComponent, deps: [{ token: i1.FormBuilder }, { token: i2.DialogService }], target: i0.ɵɵFactoryTarget.Component }); }
78
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.0", type: LayerHintsComponent, selector: "cadmus-layer-hints", inputs: { hints: "hints", targetLocation: "targetLocation", disabled: "disabled", readonly: "readonly" }, outputs: { requestEdit: "requestEdit", requestDelete: "requestDelete", requestMove: "requestMove", requestPatch: "requestPatch" }, ngImport: i0, template: "@if (hints) {\n <form [formGroup]=\"form\" (submit)=\"emitRequestPatch()\">\n <table class=\"patches\">\n <thead>\n <tr>\n <th></th>\n <th>location</th>\n <th>description</th>\n <th>patch</th>\n </tr>\n </thead>\n <tbody>\n @for (hint of hints; track hint; let i = $index) {\n <tr>\n @if (!readonly) {\n <td>\n <button\n type=\"button\"\n mat-icon-button\n matTooltip=\"Edit this fragment\"\n [disabled]=\"disabled\"\n >\n <mat-icon>edit</mat-icon>\n </button>\n <button\n type=\"button\"\n mat-icon-button\n matTooltip=\"Move this fragment to {{ targetLocation }}\"\n [disabled]=\"\r\n disabled || !targetLocation || targetLocation === hint.location\r\n \"\r\n (click)=\"emitRequestMove(hint)\"\n >\n <mat-icon>arrow_forward</mat-icon>\n </button>\n <button\n type=\"button\"\n mat-icon-button\n matTooltip=\"Delete this fragment\"\n color=\"warn\"\n [disabled]=\"disabled\"\n (click)=\"emitRequestDelete(hint)\"\n >\n <mat-icon>delete</mat-icon>\n </button>\n </td>\n }\n <td>{{ hint.location }}</td>\n <td>{{ hint.description }}</td>\n <td>\n @if (hint.patchOperation) {\n <mat-checkbox\n matTooltip=\"Apply this patch\"\n [disabled]=\"disabled\"\n [value]=\"(i + 1).toString()\"\n >\n {{ hint.patchOperation }}\n </mat-checkbox>\n }\n </td>\n </tr>\n }\n </tbody>\n </table>\n @if (targetLocation) {\n <div>move target: {{ targetLocation }}</div>\n }\n <button\n type=\"submit\"\n mat-raised-button\n [disabled]=\"readonly || disabled || form.invalid\"\n >\n apply patches\n </button>\n </form>\n}\n", styles: ["table.patches th{font-weight:400;color:#bdbdbd}\n"], dependencies: [{ kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i3.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i3.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: i4.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i6.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }] }); }
80
79
  }
81
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: LayerHintsComponent, decorators: [{
80
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: LayerHintsComponent, decorators: [{
82
81
  type: Component,
83
- args: [{ selector: 'cadmus-layer-hints', template: "<form *ngIf=\"hints\" [formGroup]=\"form\" (submit)=\"emitRequestPatch()\">\r\n <table class=\"patches\">\r\n <thead>\r\n <tr>\r\n <th></th>\r\n <th>location</th>\r\n <th>description</th>\r\n <th>patch</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let hint of hints; let i = index\">\r\n <td *ngIf=\"!readonly\">\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n matTooltip=\"Edit this fragment\"\r\n [disabled]=\"disabled\"\r\n >\r\n <mat-icon>edit</mat-icon>\r\n </button>\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n matTooltip=\"Move this fragment to {{ targetLocation }}\"\r\n [disabled]=\"\r\n disabled || !targetLocation || targetLocation === hint.location\r\n \"\r\n (click)=\"emitRequestMove(hint)\"\r\n >\r\n <mat-icon>arrow_forward</mat-icon>\r\n </button>\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n matTooltip=\"Delete this fragment\"\r\n color=\"warn\"\r\n [disabled]=\"disabled\"\r\n (click)=\"emitRequestDelete(hint)\"\r\n >\r\n <mat-icon>delete</mat-icon>\r\n </button>\r\n </td>\r\n <td>{{ hint.location }}</td>\r\n <td>{{ hint.description }}</td>\r\n <td>\r\n <mat-checkbox\r\n *ngIf=\"hint.patchOperation\"\r\n matTooltip=\"Apply this patch\"\r\n [disabled]=\"disabled\"\r\n [value]=\"(i + 1).toString()\"\r\n >\r\n {{ hint.patchOperation }}\r\n </mat-checkbox>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n <div *ngIf=\"targetLocation\">move target: {{ targetLocation }}</div>\r\n <button\r\n type=\"submit\"\r\n mat-raised-button\r\n [disabled]=\"readonly || disabled || form.invalid\"\r\n >\r\n apply patches\r\n </button>\r\n</form>\r\n", styles: ["table.patches th{font-weight:400;color:#bdbdbd}\n"] }]
82
+ args: [{ selector: 'cadmus-layer-hints', template: "@if (hints) {\n <form [formGroup]=\"form\" (submit)=\"emitRequestPatch()\">\n <table class=\"patches\">\n <thead>\n <tr>\n <th></th>\n <th>location</th>\n <th>description</th>\n <th>patch</th>\n </tr>\n </thead>\n <tbody>\n @for (hint of hints; track hint; let i = $index) {\n <tr>\n @if (!readonly) {\n <td>\n <button\n type=\"button\"\n mat-icon-button\n matTooltip=\"Edit this fragment\"\n [disabled]=\"disabled\"\n >\n <mat-icon>edit</mat-icon>\n </button>\n <button\n type=\"button\"\n mat-icon-button\n matTooltip=\"Move this fragment to {{ targetLocation }}\"\n [disabled]=\"\r\n disabled || !targetLocation || targetLocation === hint.location\r\n \"\r\n (click)=\"emitRequestMove(hint)\"\n >\n <mat-icon>arrow_forward</mat-icon>\n </button>\n <button\n type=\"button\"\n mat-icon-button\n matTooltip=\"Delete this fragment\"\n color=\"warn\"\n [disabled]=\"disabled\"\n (click)=\"emitRequestDelete(hint)\"\n >\n <mat-icon>delete</mat-icon>\n </button>\n </td>\n }\n <td>{{ hint.location }}</td>\n <td>{{ hint.description }}</td>\n <td>\n @if (hint.patchOperation) {\n <mat-checkbox\n matTooltip=\"Apply this patch\"\n [disabled]=\"disabled\"\n [value]=\"(i + 1).toString()\"\n >\n {{ hint.patchOperation }}\n </mat-checkbox>\n }\n </td>\n </tr>\n }\n </tbody>\n </table>\n @if (targetLocation) {\n <div>move target: {{ targetLocation }}</div>\n }\n <button\n type=\"submit\"\n mat-raised-button\n [disabled]=\"readonly || disabled || form.invalid\"\n >\n apply patches\n </button>\n </form>\n}\n", styles: ["table.patches th{font-weight:400;color:#bdbdbd}\n"] }]
84
83
  }], ctorParameters: () => [{ type: i1.FormBuilder }, { type: i2.DialogService }], propDecorators: { hints: [{
85
84
  type: Input
86
85
  }], targetLocation: [{
@@ -98,4 +97,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.4", ngImpor
98
97
  }], requestPatch: [{
99
98
  type: Output
100
99
  }] } });
101
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF5ZXItaGludHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXlybWlkb24vY2FkbXVzLXVpL3NyYy9saWIvY29tcG9uZW50cy9sYXllci1oaW50cy9sYXllci1oaW50cy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9teXJtaWRvbi9jYWRtdXMtdWkvc3JjL2xpYi9jb21wb25lbnRzL2xheWVyLWhpbnRzL2xheWVyLWhpbnRzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7Ozs7OztBQWlCL0UsTUFBTSxPQUFPLG1CQUFtQjtJQUc5QixJQUNXLEtBQUs7UUFDZCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDckIsQ0FBQztJQUNELElBQVcsS0FBSyxDQUFDLEtBQWtCO1FBQ2pDLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxJQUFJLEVBQUUsQ0FBQztRQUMxQixJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUM7UUFDMUIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDNUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUNyRCxDQUFDO0lBQ0gsQ0FBQztJQXFCRCxZQUNVLFlBQXlCLEVBQ3pCLGNBQTZCO1FBRDdCLGlCQUFZLEdBQVosWUFBWSxDQUFhO1FBQ3pCLG1CQUFjLEdBQWQsY0FBYyxDQUFlO1FBRXJDLElBQUksQ0FBQyxXQUFXLEdB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QUs7Z0JBYUMsY0FBYztzQkFEcEIsS0FBSztnQkFHQyxRQUFRO3NCQURkLEtBQUs7Z0JBR0MsUUFBUTtzQkFEZCxLQUFLO2dCQUlDLFdBQVc7c0JBRGpCLE1BQU07Z0JBR0EsYUFBYTtzQkFEbkIsTUFBTTtnQkFHQSxXQUFXO3NCQURqQixNQUFNO2dCQUdBLFlBQVk7c0JBRGxCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7XHJcbiAgRm9ybUdyb3VwLFxyXG4gIEZvcm1BcnJheSxcclxuICBGb3JtQnVpbGRlcixcclxuICBGb3JtQ29udHJvbCxcclxuICBWYWxpZGF0b3JzLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuXHJcbmltcG9ydCB7IExheWVySGludCB9IGZyb20gJ0BteXJtaWRvbi9jYWRtdXMtY29yZSc7XHJcbmltcG9ydCB7IERpYWxvZ1NlcnZpY2UgfSBmcm9tICdAbXlybWlkb24vbmctbWF0LXRvb2xzJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnY2FkbXVzLWxheWVyLWhpbnRzJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vbGF5ZXItaGludHMuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2xheWVyLWhpbnRzLmNvbXBvbmVudC5jc3MnXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIExheWVySGludHNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIHByaXZhdGUgX2hpbnRzOiBMYXllckhpbnRbXTtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgZ2V0IGhpbnRzKCk6IExheWVySGludFtdIHtcclxuICAgIHJldHVybiB0aGlzLl9oaW50cztcclxuICB9XHJcbiAgcHVibGljIHNldCBoaW50cyh2YWx1ZTogTGF5ZXJIaW50W10pIHtcclxuICAgIHRoaXMuX2hpbnRzID0gdmFsdWUgfHwgW107XHJcbiAgICB0aGlzLmNoZWNrcy5jb250cm9scyA9IFtdO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLl9oaW50cy5sZW5ndGg7IGkrKykge1xyXG4gICAgICB0aGlzLmNoZWNrcy5wdXNoKHRoaXMuX2Zvcm1CdWlsZGVyLmNvbnRyb2woZmFsc2UpKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHRhcmdldExvY2F0aW9uPzogc3RyaW5nO1xyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGRpc2FibGVkPzogYm9vbGVhbjtcclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyByZWFkb25seT86IGJvb2xlYW47XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIHB1YmxpYyByZXF1ZXN0RWRpdDogRXZlbnRFbWl0dGVyPExheWVySGludD47XHJcbiAgQE91dHB1dCgpXHJcbiAgcHVibGljIHJlcXVlc3REZWxldGU6IEV2ZW50RW1pdHRlcjxMYXllckhpbnQ+O1xyXG4gIEBPdXRwdXQoKVxyXG4gIHB1YmxpYyByZXF1ZXN0TW92ZTogRXZlbnRFbWl0dGVyPExheWVySGludD47XHJcbiAgQE91dHB1dCgpXHJcbiAgcHVibGljIHJlcXVlc3RQYXRjaDogRXZlbnRFbWl0dGVyPHN0cmluZ1tdPjtcclxuXHJcbiAgcHVibGljIGZvcm06IEZvcm1Hcm91cDtcclxuICBwdWJsaWMgY2hlY2tzOiBGb3JtQXJyYXk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBfZm9ybUJ1aWxkZXI6IEZvcm1CdWlsZGVyLFxyXG4gICAgcHJpdmF0ZSBfZGlhbG9nU2VydmljZTogRGlhbG9nU2VydmljZVxyXG4gICkge1xyXG4gICAgdGhpcy5yZXF1ZXN0RWRpdCA9IG5ldyBFdmVudEVtaXR0ZXI8TGF5ZXJIaW50PigpO1xyXG4gICAgdGhpcy5yZXF1ZXN0RGVsZXRlID0gbmV3IEV2ZW50RW1pdHRlcjxMYXllckhpbnQ+KCk7XHJcbiAgICB0aGlzLnJlcXVlc3RNb3ZlID0gbmV3IEV2ZW50RW1pdHRlcjxMYXllckhpbnQ+KCk7XHJcbiAgICB0aGlzLnJlcXVlc3RQYXRjaCA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nW10+KCk7XHJcbiAgICB0aGlzLl9oaW50cyA9IFtdO1xyXG5cclxuICAgIHRoaXMuY2hlY2tzID0gX2Zvcm1CdWlsZGVyLmFycmF5KFtdKTtcclxuICAgIHRoaXMuZm9ybSA9IF9mb3JtQnVpbGRlci5ncm91cCh7XHJcbiAgICAgIGNoZWNrczogdGhpcy5jaGVja3MsXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge31cclxuXHJcbiAgcHVibGljIGVtaXRSZXF1ZXN0RWRpdChoaW50OiBMYXllckhpbnQpIHtcclxuICAgIHRoaXMucmVxdWVzdEVkaXQuZW1pdChoaW50KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBlbWl0UmVxdWVzdERlbGV0ZShoaW50OiBMYXllckhpbnQpIHtcclxuICAgIHRoaXMuX2RpYWxvZ1NlcnZpY2VcclxuICAgICAgLmNvbmZpcm0oJ0NvbmZpcm0gRGVsZXRpb24nLCBgRGVsZXRlIGZyYWdtZW50IGF0IFwiJHtoaW50LmxvY2F0aW9ufVwiP2ApXHJcbiAgICAgIC5zdWJzY3JpYmUoKG9rOiBib29sZWFuKSA9PiB7XHJcbiAgICAgICAgaWYgKG9rKSB7XHJcbiAgICAgICAgICB0aGlzLnJlcXVlc3REZWxldGUuZW1pdChoaW50KTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGVtaXRSZXF1ZXN0TW92ZShoaW50OiBMYXllckhpbnQpIHtcclxuICAgIGlmICghdGhpcy50YXJnZXRMb2NhdGlvbikge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLl9kaWFsb2dTZXJ2aWNlXHJcbiAgICAgIC5jb25maXJtKFxyXG4gICAgICAgICdDb25maXJtIE1vdmUnLFxyXG4gICAgICAgIGBNb3ZlIGZyYWdtZW50IGF0ICR7aGludC5sb2NhdGlvbn0gdG8gJHt0aGlzLnRhcmdldExvY2F0aW9ufT9gXHJcbiAgICAgIClcclxuICAgICAgLnN1YnNjcmliZSgob2s6IGJvb2xlYW4pID0+IHtcclxuICAgICAgICBpZiAob2spIHtcclxuICAgICAgICAgIHRoaXMucmVxdWVzdE1vdmUuZW1pdChoaW50KTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGVtaXRSZXF1ZXN0UGF0Y2goKSB7XHJcbiAgICBpZiAodGhpcy5mb3JtLmludmFsaWQpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy5fZGlhbG9nU2VydmljZVxyXG4gICAgICAuY29uZmlybSgnQ29uZmlybSBQYXRjaCcsIGBQYXRjaCB0aGUgc2VsZWN0ZWQgZnJhZ21lbnRzP2ApXHJcbiAgICAgIC5zdWJzY3JpYmUoKG9rOiBib29sZWFuKSA9PiB7XHJcbiAgICAgICAgaWYgKG9rKSB7XHJcbiAgICAgICAgICBjb25zdCBwYXRjaGVzOiBzdHJpbmdbXSA9IFtdO1xyXG4gICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmNoZWNrcy5jb250cm9scy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBjb25zdCBuID0gdGhpcy5jaGVja3MuY29udHJvbHNbaV0udmFsdWU7XHJcbiAgICAgICAgICAgIGlmIChuKSB7XHJcbiAgICAgICAgICAgICAgcGF0Y2hlcy5wdXNoKHRoaXMuX2hpbnRzW24gLSAxXS5wYXRjaE9wZXJhdGlvbiEpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLnJlcXVlc3RQYXRjaC5lbWl0KHBhdGNoZXMpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgfVxyXG59XHJcbiIsIjxmb3JtICpuZ0lmPVwiaGludHNcIiBbZm9ybUdyb3VwXT1cImZvcm1cIiAoc3VibWl0KT1cImVtaXRSZXF1ZXN0UGF0Y2goKVwiPlxyXG4gIDx0YWJsZSBjbGFzcz1cInBhdGNoZXNcIj5cclxuICAgIDx0aGVhZD5cclxuICAgICAgPHRyPlxyXG4gICAgICAgIDx0aD48L3RoPlxyXG4gICAgICAgIDx0aD5sb2NhdGlvbjwvdGg+XHJcbiAgICAgICAgPHRoPmRlc2NyaXB0aW9uPC90aD5cclxuICAgICAgICA8dGg+cGF0Y2g8L3RoPlxyXG4gICAgICA8L3RyPlxyXG4gICAgPC90aGVhZD5cclxuICAgIDx0Ym9keT5cclxuICAgICAgPHRyICpuZ0Zvcj1cImxldCBoaW50IG9mIGhpbnRzOyBsZXQgaSA9IGluZGV4XCI+XHJcbiAgICAgICAgPHRkICpuZ0lmPVwiIXJlYWRvbmx5XCI+XHJcbiAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICBtYXQtaWNvbi1idXR0b25cclxuICAgICAgICAgICAgbWF0VG9vbHRpcD1cIkVkaXQgdGhpcyBmcmFnbWVudFwiXHJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxtYXQtaWNvbj5lZGl0PC9tYXQtaWNvbj5cclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgbWF0LWljb24tYnV0dG9uXHJcbiAgICAgICAgICAgIG1hdFRvb2x0aXA9XCJNb3ZlIHRoaXMgZnJhZ21lbnQgdG8ge3sgdGFyZ2V0TG9jYXRpb24gfX1cIlxyXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiXHJcbiAgICAgICAgICAgICAgZGlzYWJsZWQgfHwgIXRhcmdldExvY2F0aW9uIHx8IHRhcmdldExvY2F0aW9uID09PSBoaW50LmxvY2F0aW9uXHJcbiAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJlbWl0UmVxdWVzdE1vdmUoaGludClcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8bWF0LWljb24+YXJyb3dfZm9yd2FyZDwvbWF0LWljb24+XHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgIG1hdC1pY29uLWJ1dHRvblxyXG4gICAgICAgICAgICBtYXRUb29sdGlwPVwiRGVsZXRlIHRoaXMgZnJhZ21lbnRcIlxyXG4gICAgICAgICAgICBjb2xvcj1cIndhcm5cIlxyXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwiZW1pdFJlcXVlc3REZWxldGUoaGludClcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8bWF0LWljb24+ZGVsZXRlPC9tYXQtaWNvbj5cclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDwvdGQ+XHJcbiAgICAgICAgPHRkPnt7IGhpbnQubG9jYXRpb24gfX08L3RkPlxyXG4gICAgICAgIDx0ZD57eyBoaW50LmRlc2NyaXB0aW9uIH19PC90ZD5cclxuICAgICAgICA8dGQ+XHJcbiAgICAgICAgICA8bWF0LWNoZWNrYm94XHJcbiAgICAgICAgICAgICpuZ0lmPVwiaGludC5wYXRjaE9wZXJhdGlvblwiXHJcbiAgICAgICAgICAgIG1hdFRvb2x0aXA9XCJBcHBseSB0aGlzIHBhdGNoXCJcclxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcclxuICAgICAgICAgICAgW3ZhbHVlXT1cIihpICsgMSkudG9TdHJpbmcoKVwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIHt7IGhpbnQucGF0Y2hPcGVyYXRpb24gfX1cclxuICAgICAgICAgIDwvbWF0LWNoZWNrYm94PlxyXG4gICAgICAgIDwvdGQ+XHJcbiAgICAgIDwvdHI+XHJcbiAgICA8L3Rib2R5PlxyXG4gIDwvdGFibGU+XHJcbiAgPGRpdiAqbmdJZj1cInRhcmdldExvY2F0aW9uXCI+bW92ZSB0YXJnZXQ6IHt7IHRhcmdldExvY2F0aW9uIH19PC9kaXY+XHJcbiAgPGJ1dHRvblxyXG4gICAgdHlwZT1cInN1Ym1pdFwiXHJcbiAgICBtYXQtcmFpc2VkLWJ1dHRvblxyXG4gICAgW2Rpc2FibGVkXT1cInJlYWRvbmx5IHx8IGRpc2FibGVkIHx8IGZvcm0uaW52YWxpZFwiXHJcbiAgPlxyXG4gICAgYXBwbHkgcGF0Y2hlc1xyXG4gIDwvYnV0dG9uPlxyXG48L2Zvcm0+XHJcbiJdfQ==
100
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF5ZXItaGludHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXlybWlkb24vY2FkbXVzLXVpL3NyYy9saWIvY29tcG9uZW50cy9sYXllci1oaW50cy9sYXllci1oaW50cy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9teXJtaWRvbi9jYWRtdXMtdWkvc3JjL2xpYi9jb21wb25lbnRzL2xheWVyLWhpbnRzL2xheWVyLWhpbnRzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7Ozs7O0FBaUIvRSxNQUFNLE9BQU8sbUJBQW1CO0lBRzlCLElBQ1csS0FBSztRQUNkLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUNyQixDQUFDO0lBQ0QsSUFBVyxLQUFLLENBQUMsS0FBa0I7UUFDakMsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLElBQUksRUFBRSxDQUFDO1FBQzFCLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxHQUFHLEVBQUUsQ0FBQztRQUMxQixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUM1QyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ3JELENBQUM7SUFDSCxDQUFDO0lBcUJELFlBQ1UsWUFBeUIsRUFDekIsY0FBNkI7UUFEN0IsaUJBQVksR0FBWixZQUFZLENBQWE7UUFDekIsbUJBQWMsR0FBZCxjQUFjLENBQWU7UUFFckMsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLFlBQVksRUFBYSxDQUFDO1FBQ2pELElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxZQUFZLEVBQWEsQ0FBQztRQUNuRCxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksWUFBWSxFQUFhLENBQUM7UUFDakQsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLFlBQVksRUFBWSxDQUFDO1FBQ2pELElBQUksQ0FBQyxNQUFNLEdBQUcsRUFBRSxDQUFDO1FBRWpCLElBQUksQ0FBQyxNQUFNLEdBQUcsWUFBWSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNyQyxJQUFJLENBQUMsSUFBSSxHQUFHLFlBQVksQ0FBQyxLQUFLLENBQUM7WUFDN0IsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNO1NBQ3BCLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxRQUFRLEtBQVUsQ0FBQztJQUVaLGVBQWUsQ0FBQyxJQUFlO1FBQ3BDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzlCLENBQUM7SUFFTSxpQkFBaUIsQ0FBQyxJQUFlO1FBQ3RDLElBQUksQ0FBQyxjQUFjO2FBQ2hCLE9BQU8sQ0FBQyxrQkFBa0IsRUFBRSx1QkFBdUIsSUFBSSxDQUFDLFFBQVEsSUFBSSxDQUFDO2FBQ3JFLFNBQVMsQ0FBQyxDQUFDLEVBQVcsRUFBRSxFQUFFO1lBQ3pCLElBQUksRUFBRSxFQUFFLENBQUM7Z0JBQ1AsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDaEMsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVNLGVBQWUsQ0FBQyxJQUFlO1FBQ3BDLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDekIsT0FBTztRQUNULENBQUM7UUFDRCxJQUFJLENBQUMsY0FBYzthQUNoQixPQUFPLENBQ04sY0FBYyxFQUNkLG9CQUFvQixJQUFJLENBQUMsUUFBUSxPQUFPLElBQUksQ0FBQyxjQUFjLEdBQUcsQ0FDL0Q7YUFDQSxTQUFTLENBQUMsQ0FBQyxFQUFXLEVBQUUsRUFBRTtZQUN6QixJQUFJLEVBQUUsRUFBRSxDQUFDO2dCQUNQLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzlCLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFTSxnQkFBZ0I7UUFDckIsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ3RCLE9BQU87UUFDVCxDQUFDO1FBQ0QsSUFBSSxDQUFDLGNBQWM7YUFDaEIsT0FBTyxDQUFDLGVBQWUsRUFBRSwrQkFBK0IsQ0FBQzthQUN6RCxTQUFTLENBQUMsQ0FBQyxFQUFXLEVBQUUsRUFBRTtZQUN6QixJQUFJLEVBQUUsRUFBRSxDQUFDO2dCQUNQLE1BQU0sT0FBTyxHQUFhLEVBQUUsQ0FBQztnQkFDN0IsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO29CQUNyRCxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7b0JBQ3hDLElBQUksQ0FBQyxFQUFFLENBQUM7d0JBQ04sT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxjQUFlLENBQUMsQ0FBQztvQkFDbkQsQ0FBQztnQkFDSCxDQUFDO2dCQUNELElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ2xDLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7OEdBcEdVLG1CQUFtQjtrR0FBbkIsbUJBQW1CLHVTQ2pCaEMsbXpFQTRFQTs7MkZEM0RhLG1CQUFtQjtrQkFML0IsU0FBUzsrQkFDRSxvQkFBb0I7NEdBUW5CLEtBQUs7c0JBRGYsS0FBSztnQkFhQyxjQUFjO3NCQURwQixLQUFLO2dCQUdDLFFBQVE7c0JBRGQsS0FBSztnQkFHQyxRQUFRO3NCQURkLEtBQUs7Z0JBSUMsV0FBVztzQkFEakIsTUFBTTtnQkFHQSxhQUFhO3NCQURuQixNQUFNO2dCQUdBLFdBQVc7c0JBRGpCLE1BQU07Z0JBR0EsWUFBWTtzQkFEbEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbnB1dCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtcclxuICBGb3JtR3JvdXAsXHJcbiAgRm9ybUFycmF5LFxyXG4gIEZvcm1CdWlsZGVyLFxyXG4gIEZvcm1Db250cm9sLFxyXG4gIFZhbGlkYXRvcnMsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5cclxuaW1wb3J0IHsgTGF5ZXJIaW50IH0gZnJvbSAnQG15cm1pZG9uL2NhZG11cy1jb3JlJztcclxuaW1wb3J0IHsgRGlhbG9nU2VydmljZSB9IGZyb20gJ0BteXJtaWRvbi9uZy1tYXQtdG9vbHMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdjYWRtdXMtbGF5ZXItaGludHMnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9sYXllci1oaW50cy5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vbGF5ZXItaGludHMuY29tcG9uZW50LmNzcyddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgTGF5ZXJIaW50c0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgcHJpdmF0ZSBfaGludHM6IExheWVySGludFtdO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBnZXQgaGludHMoKTogTGF5ZXJIaW50W10ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2hpbnRzO1xyXG4gIH1cclxuICBwdWJsaWMgc2V0IGhpbnRzKHZhbHVlOiBMYXllckhpbnRbXSkge1xyXG4gICAgdGhpcy5faGludHMgPSB2YWx1ZSB8fCBbXTtcclxuICAgIHRoaXMuY2hlY2tzLmNvbnRyb2xzID0gW107XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuX2hpbnRzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIHRoaXMuY2hlY2tzLnB1c2godGhpcy5fZm9ybUJ1aWxkZXIuY29udHJvbChmYWxzZSkpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgdGFyZ2V0TG9jYXRpb24/OiBzdHJpbmc7XHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgZGlzYWJsZWQ/OiBib29sZWFuO1xyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHJlYWRvbmx5PzogYm9vbGVhbjtcclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgcHVibGljIHJlcXVlc3RFZGl0OiBFdmVudEVtaXR0ZXI8TGF5ZXJIaW50PjtcclxuICBAT3V0cHV0KClcclxuICBwdWJsaWMgcmVxdWVzdERlbGV0ZTogRXZlbnRFbWl0dGVyPExheWVySGludD47XHJcbiAgQE91dHB1dCgpXHJcbiAgcHVibGljIHJlcXVlc3RNb3ZlOiBFdmVudEVtaXR0ZXI8TGF5ZXJIaW50PjtcclxuICBAT3V0cHV0KClcclxuICBwdWJsaWMgcmVxdWVzdFBhdGNoOiBFdmVudEVtaXR0ZXI8c3RyaW5nW10+O1xyXG5cclxuICBwdWJsaWMgZm9ybTogRm9ybUdyb3VwO1xyXG4gIHB1YmxpYyBjaGVja3M6IEZvcm1BcnJheTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIF9mb3JtQnVpbGRlcjogRm9ybUJ1aWxkZXIsXHJcbiAgICBwcml2YXRlIF9kaWFsb2dTZXJ2aWNlOiBEaWFsb2dTZXJ2aWNlXHJcbiAgKSB7XHJcbiAgICB0aGlzLnJlcXVlc3RFZGl0ID0gbmV3IEV2ZW50RW1pdHRlcjxMYXllckhpbnQ+KCk7XHJcbiAgICB0aGlzLnJlcXVlc3REZWxldGUgPSBuZXcgRXZlbnRFbWl0dGVyPExheWVySGludD4oKTtcclxuICAgIHRoaXMucmVxdWVzdE1vdmUgPSBuZXcgRXZlbnRFbWl0dGVyPExheWVySGludD4oKTtcclxuICAgIHRoaXMucmVxdWVzdFBhdGNoID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmdbXT4oKTtcclxuICAgIHRoaXMuX2hpbnRzID0gW107XHJcblxyXG4gICAgdGhpcy5jaGVja3MgPSBfZm9ybUJ1aWxkZXIuYXJyYXkoW10pO1xyXG4gICAgdGhpcy5mb3JtID0gX2Zvcm1CdWlsZGVyLmdyb3VwKHtcclxuICAgICAgY2hlY2tzOiB0aGlzLmNoZWNrcyxcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7fVxyXG5cclxuICBwdWJsaWMgZW1pdFJlcXVlc3RFZGl0KGhpbnQ6IExheWVySGludCkge1xyXG4gICAgdGhpcy5yZXF1ZXN0RWRpdC5lbWl0KGhpbnQpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGVtaXRSZXF1ZXN0RGVsZXRlKGhpbnQ6IExheWVySGludCkge1xyXG4gICAgdGhpcy5fZGlhbG9nU2VydmljZVxyXG4gICAgICAuY29uZmlybSgnQ29uZmlybSBEZWxldGlvbicsIGBEZWxldGUgZnJhZ21lbnQgYXQgXCIke2hpbnQubG9jYXRpb259XCI/YClcclxuICAgICAgLnN1YnNjcmliZSgob2s6IGJvb2xlYW4pID0+IHtcclxuICAgICAgICBpZiAob2spIHtcclxuICAgICAgICAgIHRoaXMucmVxdWVzdERlbGV0ZS5lbWl0KGhpbnQpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZW1pdFJlcXVlc3RNb3ZlKGhpbnQ6IExheWVySGludCkge1xyXG4gICAgaWYgKCF0aGlzLnRhcmdldExvY2F0aW9uKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMuX2RpYWxvZ1NlcnZpY2VcclxuICAgICAgLmNvbmZpcm0oXHJcbiAgICAgICAgJ0NvbmZpcm0gTW92ZScsXHJcbiAgICAgICAgYE1vdmUgZnJhZ21lbnQgYXQgJHtoaW50LmxvY2F0aW9ufSB0byAke3RoaXMudGFyZ2V0TG9jYXRpb259P2BcclxuICAgICAgKVxyXG4gICAgICAuc3Vic2NyaWJlKChvazogYm9vbGVhbikgPT4ge1xyXG4gICAgICAgIGlmIChvaykge1xyXG4gICAgICAgICAgdGhpcy5yZXF1ZXN0TW92ZS5lbWl0KGhpbnQpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZW1pdFJlcXVlc3RQYXRjaCgpIHtcclxuICAgIGlmICh0aGlzLmZvcm0uaW52YWxpZCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLl9kaWFsb2dTZXJ2aWNlXHJcbiAgICAgIC5jb25maXJtKCdDb25maXJtIFBhdGNoJywgYFBhdGNoIHRoZSBzZWxlY3RlZCBmcmFnbWVudHM/YClcclxuICAgICAgLnN1YnNjcmliZSgob2s6IGJvb2xlYW4pID0+IHtcclxuICAgICAgICBpZiAob2spIHtcclxuICAgICAgICAgIGNvbnN0IHBhdGNoZXM6IHN0cmluZ1tdID0gW107XHJcbiAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuY2hlY2tzLmNvbnRyb2xzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IG4gPSB0aGlzLmNoZWNrcy5jb250cm9sc1tpXS52YWx1ZTtcclxuICAgICAgICAgICAgaWYgKG4pIHtcclxuICAgICAgICAgICAgICBwYXRjaGVzLnB1c2godGhpcy5faGludHNbbiAtIDFdLnBhdGNoT3BlcmF0aW9uISk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMucmVxdWVzdFBhdGNoLmVtaXQocGF0Y2hlcyk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICB9XHJcbn1cclxuIiwiQGlmIChoaW50cykge1xuICA8Zm9ybSBbZm9ybUdyb3VwXT1cImZvcm1cIiAoc3VibWl0KT1cImVtaXRSZXF1ZXN0UGF0Y2goKVwiPlxuICAgIDx0YWJsZSBjbGFzcz1cInBhdGNoZXNcIj5cbiAgICAgIDx0aGVhZD5cbiAgICAgICAgPHRyPlxuICAgICAgICAgIDx0aD48L3RoPlxuICAgICAgICAgIDx0aD5sb2NhdGlvbjwvdGg+XG4gICAgICAgICAgPHRoPmRlc2NyaXB0aW9uPC90aD5cbiAgICAgICAgICA8dGg+cGF0Y2g8L3RoPlxuICAgICAgICA8L3RyPlxuICAgICAgPC90aGVhZD5cbiAgICAgIDx0Ym9keT5cbiAgICAgICAgQGZvciAoaGludCBvZiBoaW50czsgdHJhY2sgaGludDsgbGV0IGkgPSAkaW5kZXgpIHtcbiAgICAgICAgICA8dHI+XG4gICAgICAgICAgICBAaWYgKCFyZWFkb25seSkge1xuICAgICAgICAgICAgICA8dGQ+XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICBtYXQtaWNvbi1idXR0b25cbiAgICAgICAgICAgICAgICAgIG1hdFRvb2x0aXA9XCJFZGl0IHRoaXMgZnJhZ21lbnRcIlxuICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5lZGl0PC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgIG1hdC1pY29uLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgbWF0VG9vbHRpcD1cIk1vdmUgdGhpcyBmcmFnbWVudCB0byB7eyB0YXJnZXRMb2NhdGlvbiB9fVwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiXHJcbiAgICAgICAgICAgICAgZGlzYWJsZWQgfHwgIXRhcmdldExvY2F0aW9uIHx8IHRhcmdldExvY2F0aW9uID09PSBoaW50LmxvY2F0aW9uXHJcbiAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJlbWl0UmVxdWVzdE1vdmUoaGludClcIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPmFycm93X2ZvcndhcmQ8L21hdC1pY29uPlxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgbWF0LWljb24tYnV0dG9uXG4gICAgICAgICAgICAgICAgICBtYXRUb29sdGlwPVwiRGVsZXRlIHRoaXMgZnJhZ21lbnRcIlxuICAgICAgICAgICAgICAgICAgY29sb3I9XCJ3YXJuXCJcbiAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwiZW1pdFJlcXVlc3REZWxldGUoaGludClcIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPmRlbGV0ZTwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICA8dGQ+e3sgaGludC5sb2NhdGlvbiB9fTwvdGQ+XG4gICAgICAgICAgICA8dGQ+e3sgaGludC5kZXNjcmlwdGlvbiB9fTwvdGQ+XG4gICAgICAgICAgICA8dGQ+XG4gICAgICAgICAgICAgIEBpZiAoaGludC5wYXRjaE9wZXJhdGlvbikge1xuICAgICAgICAgICAgICAgIDxtYXQtY2hlY2tib3hcbiAgICAgICAgICAgICAgICAgIG1hdFRvb2x0aXA9XCJBcHBseSB0aGlzIHBhdGNoXCJcbiAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgICBbdmFsdWVdPVwiKGkgKyAxKS50b1N0cmluZygpXCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIHt7IGhpbnQucGF0Y2hPcGVyYXRpb24gfX1cbiAgICAgICAgICAgICAgICA8L21hdC1jaGVja2JveD5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICA8L3RyPlxuICAgICAgICB9XG4gICAgICA8L3Rib2R5PlxuICAgIDwvdGFibGU+XG4gICAgQGlmICh0YXJnZXRMb2NhdGlvbikge1xuICAgICAgPGRpdj5tb3ZlIHRhcmdldDoge3sgdGFyZ2V0TG9jYXRpb24gfX08L2Rpdj5cbiAgICB9XG4gICAgPGJ1dHRvblxuICAgICAgdHlwZT1cInN1Ym1pdFwiXG4gICAgICBtYXQtcmFpc2VkLWJ1dHRvblxuICAgICAgW2Rpc2FibGVkXT1cInJlYWRvbmx5IHx8IGRpc2FibGVkIHx8IGZvcm0uaW52YWxpZFwiXG4gICAgICA+XG4gICAgICBhcHBseSBwYXRjaGVzXG4gICAgPC9idXR0b24+XG4gIDwvZm9ybT5cbn1cbiJdfQ==
@@ -4,14 +4,14 @@ import { debounceTime, distinctUntilChanged, map, switchMap, take, } from 'rxjs/
4
4
  import * as i0 from "@angular/core";
5
5
  import * as i1 from "@angular/forms";
6
6
  import * as i2 from "@myrmidon/cadmus-api";
7
- import * as i3 from "@angular/common";
8
- import * as i4 from "@angular/material/autocomplete";
9
- import * as i5 from "@angular/material/core";
10
- import * as i6 from "@angular/material/button";
11
- import * as i7 from "@angular/material/form-field";
12
- import * as i8 from "@angular/material/icon";
13
- import * as i9 from "@angular/material/input";
14
- import * as i10 from "@angular/material/tooltip";
7
+ import * as i3 from "@angular/material/autocomplete";
8
+ import * as i4 from "@angular/material/core";
9
+ import * as i5 from "@angular/material/button";
10
+ import * as i6 from "@angular/material/form-field";
11
+ import * as i7 from "@angular/material/icon";
12
+ import * as i8 from "@angular/material/input";
13
+ import * as i9 from "@angular/material/tooltip";
14
+ import * as i10 from "@angular/common";
15
15
  /**
16
16
  * Generic data pin lookup component. This allows users typing a part
17
17
  * of a pin's value, and get the full pin. For instance, if you have
@@ -110,12 +110,12 @@ export class LookupPinComponent {
110
110
  this.clear();
111
111
  }
112
112
  }
113
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: LookupPinComponent, deps: [{ token: i1.UntypedFormBuilder }, { token: i2.ItemService }, { token: 'indexLookupDefinitions' }], target: i0.ɵɵFactoryTarget.Component }); }
114
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.4", type: LookupPinComponent, selector: "cadmus-lookup-pin", inputs: { initialValue: "initialValue", label: "label", limit: "limit", resetOnPick: "resetOnPick", lookupKey: "lookupKey" }, outputs: { entryChange: "entryChange" }, ngImport: i0, template: "<form [formGroup]=\"form\">\r\n <mat-autocomplete #lookupAuto=\"matAutocomplete\" [displayWith]=\"entryToName\">\r\n <mat-option\r\n *ngFor=\"let entry of entries$ | async\"\r\n [value]=\"entry\"\r\n (onSelectionChange)=\"pickEntry(entry)\"\r\n >\r\n {{ entry?.value }}\r\n </mat-option>\r\n </mat-autocomplete>\r\n\r\n <mat-form-field>\r\n <input\r\n matInput\r\n type=\"text\"\r\n [placeholder]=\"label\"\r\n [formControl]=\"lookup\"\r\n [matAutocomplete]=\"lookupAuto\"\r\n />\r\n </mat-form-field>\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n color=\"warn\"\r\n (click)=\"clear()\"\r\n [disabled]=\"!entry\"\r\n matTooltip=\"Clear\"\r\n >\r\n <mat-icon>clear</mat-icon>\r\n </button>\r\n</form>\r\n", styles: [""], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i4.MatAutocomplete, selector: "mat-autocomplete", inputs: ["aria-label", "aria-labelledby", "displayWith", "autoActiveFirstOption", "autoSelectActiveOption", "requireSelection", "panelWidth", "disableRipple", "class", "hideSingleSelectionIndicator"], outputs: ["optionSelected", "opened", "closed", "optionActivated"], exportAs: ["matAutocomplete"] }, { kind: "component", type: i5.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "directive", type: i4.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", inputs: ["matAutocomplete", "matAutocompletePosition", "matAutocompleteConnectedTo", "autocomplete", "matAutocompleteDisabled"], exportAs: ["matAutocompleteTrigger"] }, { kind: "component", type: i6.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: i7.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "component", type: i8.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i9.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "directive", type: i10.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }] }); }
113
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: LookupPinComponent, deps: [{ token: i1.UntypedFormBuilder }, { token: i2.ItemService }, { token: 'indexLookupDefinitions' }], target: i0.ɵɵFactoryTarget.Component }); }
114
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.0", type: LookupPinComponent, selector: "cadmus-lookup-pin", inputs: { initialValue: "initialValue", label: "label", limit: "limit", resetOnPick: "resetOnPick", lookupKey: "lookupKey" }, outputs: { entryChange: "entryChange" }, ngImport: i0, template: "<form [formGroup]=\"form\">\n <mat-autocomplete #lookupAuto=\"matAutocomplete\" [displayWith]=\"entryToName\">\n @for (entry of entries$ | async; track entry) {\n <mat-option\n [value]=\"entry\"\n (onSelectionChange)=\"pickEntry(entry)\"\n >\n {{ entry?.value }}\n </mat-option>\n }\n </mat-autocomplete>\n\n <mat-form-field>\n <input\n matInput\n type=\"text\"\n [placeholder]=\"label\"\n [formControl]=\"lookup\"\n [matAutocomplete]=\"lookupAuto\"\n />\n </mat-form-field>\n <button\n type=\"button\"\n mat-icon-button\n color=\"warn\"\n (click)=\"clear()\"\n [disabled]=\"!entry\"\n matTooltip=\"Clear\"\n >\n <mat-icon>clear</mat-icon>\n </button>\n </form>\n", styles: [""], dependencies: [{ kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i3.MatAutocomplete, selector: "mat-autocomplete", inputs: ["aria-label", "aria-labelledby", "displayWith", "autoActiveFirstOption", "autoSelectActiveOption", "requireSelection", "panelWidth", "disableRipple", "class", "hideSingleSelectionIndicator"], outputs: ["optionSelected", "opened", "closed", "optionActivated"], exportAs: ["matAutocomplete"] }, { kind: "component", type: i4.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "directive", type: i3.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", inputs: ["matAutocomplete", "matAutocompletePosition", "matAutocompleteConnectedTo", "autocomplete", "matAutocompleteDisabled"], exportAs: ["matAutocompleteTrigger"] }, { kind: "component", type: i5.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: i6.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "component", type: i7.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i8.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "directive", type: i9.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "pipe", type: i10.AsyncPipe, name: "async" }] }); }
115
115
  }
116
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: LookupPinComponent, decorators: [{
116
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: LookupPinComponent, decorators: [{
117
117
  type: Component,
118
- args: [{ selector: 'cadmus-lookup-pin', template: "<form [formGroup]=\"form\">\r\n <mat-autocomplete #lookupAuto=\"matAutocomplete\" [displayWith]=\"entryToName\">\r\n <mat-option\r\n *ngFor=\"let entry of entries$ | async\"\r\n [value]=\"entry\"\r\n (onSelectionChange)=\"pickEntry(entry)\"\r\n >\r\n {{ entry?.value }}\r\n </mat-option>\r\n </mat-autocomplete>\r\n\r\n <mat-form-field>\r\n <input\r\n matInput\r\n type=\"text\"\r\n [placeholder]=\"label\"\r\n [formControl]=\"lookup\"\r\n [matAutocomplete]=\"lookupAuto\"\r\n />\r\n </mat-form-field>\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n color=\"warn\"\r\n (click)=\"clear()\"\r\n [disabled]=\"!entry\"\r\n matTooltip=\"Clear\"\r\n >\r\n <mat-icon>clear</mat-icon>\r\n </button>\r\n</form>\r\n" }]
118
+ args: [{ selector: 'cadmus-lookup-pin', template: "<form [formGroup]=\"form\">\n <mat-autocomplete #lookupAuto=\"matAutocomplete\" [displayWith]=\"entryToName\">\n @for (entry of entries$ | async; track entry) {\n <mat-option\n [value]=\"entry\"\n (onSelectionChange)=\"pickEntry(entry)\"\n >\n {{ entry?.value }}\n </mat-option>\n }\n </mat-autocomplete>\n\n <mat-form-field>\n <input\n matInput\n type=\"text\"\n [placeholder]=\"label\"\n [formControl]=\"lookup\"\n [matAutocomplete]=\"lookupAuto\"\n />\n </mat-form-field>\n <button\n type=\"button\"\n mat-icon-button\n color=\"warn\"\n (click)=\"clear()\"\n [disabled]=\"!entry\"\n matTooltip=\"Clear\"\n >\n <mat-icon>clear</mat-icon>\n </button>\n </form>\n" }]
119
119
  }], ctorParameters: () => [{ type: i1.UntypedFormBuilder }, { type: i2.ItemService }, { type: undefined, decorators: [{
120
120
  type: Inject,
121
121
  args: ['indexLookupDefinitions']
@@ -132,4 +132,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.4", ngImpor
132
132
  }], lookupKey: [{
133
133
  type: Input
134
134
  }] } });
135
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9va3VwLXBpbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9teXJtaWRvbi9jYWRtdXMtdWkvc3JjL2xpYi9jb21wb25lbnRzL2xvb2t1cC1waW4vbG9va3VwLXBpbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9teXJtaWRvbi9jYWRtdXMtdWkvc3JjL2xpYi9jb21wb25lbnRzL2xvb2t1cC1waW4vbG9va3VwLXBpbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUVMLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQWMsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3RDLE9BQU8sRUFDTCxZQUFZLEVBQ1osb0JBQW9CLEVBQ3BCLEdBQUcsRUFDSCxTQUFTLEVBQ1QsSUFBSSxHQUNMLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7Ozs7OztBQU14Qjs7Ozs7Ozs7Ozs7R0FXRztBQU1ILE1BQU0sT0FBTyxrQkFBa0I7SUFHN0I7O09BRUc7SUFDSCxJQUNXLFlBQVk7UUFDckIsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDO0lBQzVCLENBQUM7SUFDRCxJQUFXLFlBQVksQ0FBQyxLQUF5QjtRQUMvQyxJQUFJLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQztRQUMzQixJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNoQixJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDeEIsQ0FBQztJQUNILENBQUM7SUFvQ0QsWUFDRSxXQUErQixFQUN2QixZQUF5QixFQUV6QixXQUFtQztRQUZuQyxpQkFBWSxHQUFaLFlBQVksQ0FBYTtRQUV6QixnQkFBVyxHQUFYLFdBQVcsQ0FBd0I7UUFFM0MsSUFBSSxDQUFD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LE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDaEUsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRU0sS0FBSztRQUNWLElBQUksQ0FBQyxLQUFLLEdBQUcsU0FBUyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzNCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzlCLENBQUM7SUFFTSxXQUFXLENBQUMsS0FBa0I7UUFDbkMsT0FBTyxLQUFLLEVBQUUsS0FBSyxDQUFDO0lBQ3RCLENBQUM7SUFFTSxTQUFTLENBQUMsS0FBa0I7UUFDakMsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbkIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDN0IsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDckIsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ2YsQ0FBQztJQUNILENBQUM7OEdBcEpVLGtCQUFrQiwrRUFzRG5CLHdCQUF3QjtrR0F0RHZCLGtCQUFrQixnT0N2Qy9CLG15QkErQkE7OzJGRFFhLGtCQUFrQjtrQkFMOUIsU0FBUzsrQkFDRSxtQkFBbUI7OzBCQTBEMUIsTUFBTTsyQkFBQyx3QkFBd0I7eUNBL0N2QixZQUFZO3NCQUR0QixLQUFLO2dCQWVDLEtBQUs7c0JBRFgsS0FBSztnQkFRQyxLQUFLO3NCQURYLEtBQUs7Z0JBVUMsV0FBVztzQkFEakIsS0FBSztnQkFRQyxXQUFXO3NCQURqQixNQUFNO2dCQThCQSxTQUFTO3NCQURmLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgSW5qZWN0LFxyXG4gIElucHV0LFxyXG4gIE9uSW5pdCxcclxuICBPdXRwdXQsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFVudHlwZWRGb3JtQnVpbGRlciwgVW50eXBlZEZvcm1Db250cm9sLCBVbnR5cGVkRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQge1xyXG4gIGRlYm91bmNlVGltZSxcclxuICBkaXN0aW5jdFVudGlsQ2hhbmdlZCxcclxuICBtYXAsXHJcbiAgc3dpdGNoTWFwLFxyXG4gIHRha2UsXHJcbn0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5cclxuaW1wb3J0IHsgRGF0YVBpbkluZm8sIEluZGV4TG9va3VwRGVmaW5pdGlvbnMgfSBmcm9tICdAbXlybWlkb24vY2FkbXVzLWNvcmUnO1xyXG5pbXBvcnQgeyBJdGVtU2VydmljZSB9IGZyb20gJ0BteXJtaWRvbi9jYWRtdXMtYXBpJztcclxuaW1wb3J0IHsgRGF0YVBhZ2UsIEVycm9yV3JhcHBlciB9IGZyb20gJ0BteXJtaWRvbi9uZy10b29scyc7XHJcblxyXG4vKipcclxuICogR2VuZXJpYyBkYXRhIHBpbiBsb29rdXAgY29tcG9uZW50LiBUaGlzIGFsbG93cyB1c2VycyB0eXBpbmcgYSBwYXJ0XHJcbiAqIG9mIGEgcGluJ3MgdmFsdWUsIGFuZCBnZXQgdGhlIGZ1bGwgcGluLiBGb3IgaW5zdGFuY2UsIGlmIHlvdSBoYXZlXHJcbiAqIGEgbG9va3VwIHNldCBvZiBjb2xvcnMgYW5kIHR5cGUgXCJnclwiLCB5b3UgbWlnaHQgZ2V0IHRoZSBwaW5zXHJcbiAqIGNvcnJlc3BvbmRpbmcgdG8gXCJncmVlblwiIChlLmcuIGlkPWNvbG9yLCB2YWx1ZT1ncmVlbiksIFwiZ3JheVwiLCBldGMuXHJcbiAqIFVzYWdlOiBhZGQgYSBGb3JtQ29udHJvbCB0byBob2xkIGEgRGF0YVBpbkluZm8gdmFsdWU7IGluIHRoZSBIVE1MXHJcbiAqIHRlbXBsYXRlIHNldCB0aGUgY29tcG9uZW50J3MgbG9va3VwS2V5LCBsYWJlbCwgaW5pdGlhbFZhbHVlLCBhbmRcclxuICogZW50cnlDaGFuZ2UgaGFuZGxlci4gVGhlIGluaXRpYWxWYWx1ZSwgaWYgYW55LCBzaG91bGQgYmUgdGhlIGluaXRpYWxcclxuICogRGF0YVBpbkluZm8gdmFsdWUuXHJcbiAqIElmIHlvdSBhcmUgdXNpbmcgdGhpcyBjb21wb25lbnQgYXMgYSBwdXJlIGxvb2t1cCBkZXZpY2UsIGRvbid0IHNldFxyXG4gKiB0aGUgaW5pdGlhbFZhbHVlIGFuZCBzZXQgcmVzZXRPblBpY2s9dHJ1ZS5cclxuICovXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnY2FkbXVzLWxvb2t1cC1waW4nLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9sb29rdXAtcGluLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9sb29rdXAtcGluLmNvbXBvbmVudC5jc3MnXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIExvb2t1cFBpbkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgcHJpdmF0ZSBfaW5pdGlhbFZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQ7XHJcblxyXG4gIC8qKlxyXG4gICAqIFRoZSBlbnRyeSB2YWx1ZSBpbml0aWFsbHkgc2V0IHdoZW4gdGhlIGNvbXBvbmVudCBsb2Fkcy5cclxuICAgKi9cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBnZXQgaW5pdGlhbFZhbHVlKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XHJcbiAgICByZXR1cm4gdGhpcy5faW5pdGlhbFZhbHVlO1xyXG4gIH1cclxuICBwdWJsaWMgc2V0IGluaXRpYWxWYWx1ZSh2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkKSB7XHJcbiAgICB0aGlzLl9pbml0aWFsVmFsdWUgPSB2YWx1ZTtcclxuICAgIGlmICh0aGlzLmxvb2t1cCkge1xyXG4gICAgICB0aGlzLnJlc2V0VG9Jbml0aWFsKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBUaGUgbGFiZWwgdG8gYmUgZGlzcGxheWVkIGZvciB0aGlzIGxvb2t1cC5cclxuICAgKi9cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBsYWJlbDogc3RyaW5nO1xyXG5cclxuICAvKipcclxuICAgKiBUaGUgbWF4aW11bSBjb3VudCBvZiBsb29rdXAgZW50cmllcyB0byByZXRyaWV2ZS5cclxuICAgKiBEZWZhdWx0IGlzIDEwLlxyXG4gICAqL1xyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGxpbWl0OiBudW1iZXI7XHJcblxyXG4gIC8qKlxyXG4gICAqIFRydWUgdG8gcmVzZXQgdGhlIGxvb2t1cCB2YWx1ZSBhZnRlciBpdCBpcyBwaWNrZWQuXHJcbiAgICogVGhpcyBpcyB0eXBpY2FsbHkgdXNlZCB3aGVuIHlvdSB1c2UgdGhpcyBjb21wb25lbnRcclxuICAgKiBhcyBhIHB1cmUgbG9va3VwIGRldmljZSwgc3RvcmluZyB0aGUgcGlja2VkIHZhbHVlXHJcbiAgICogZWxzZXdoZXJlIHdoZW4gaGFuZGxpbmcgaXRzIGVudHJ5Q2hhbmdlIGV2ZW50LlxyXG4gICAqL1xyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHJlc2V0T25QaWNrOiBib29sZWFuIHwgdW5kZWZpbmVkO1xyXG5cclxuICAvKipcclxuICAgKiBGaXJlZCB3aGVuZXZlciBhbiBlbnRyeSBpcyBwaWNrZWQuIFVzdWFsbHkgeW91IHNob3VsZFxyXG4gICAqIGNhc3QgdGhlIHJlY2VpdmVkIGFyZ3VtZW50IHRvIGEgbW9yZSBzcGVjaWZpYyB0eXBlLlxyXG4gICAqL1xyXG4gIEBPdXRwdXQoKVxyXG4gIHB1YmxpYyBlbnRyeUNoYW5nZTogRXZlbnRFbWl0dGVyPERhdGFQaW5JbmZvIHwgbnVsbD47XHJcblxyXG4gIHB1YmxpYyBmb3JtOiBVbnR5cGVkRm9ybUdyb3VwO1xyXG4gIHB1YmxpYyBsb29rdXA6IFVudHlwZWRGb3JtQ29udHJvbDtcclxuICBwdWJsaWMgZW50cmllcyQ6IE9ic2VydmFibGU8RGF0YVBpbkluZm9bXT4gfCB1bmRlZmluZWQ7XHJcbiAgcHVibGljIGVudHJ5OiBEYXRhUGluSW5mbyB8IHVuZGVmaW5lZDtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBmb3JtQnVpbGRlcjogVW50eXBlZEZvcm1CdWlsZGVyLFxyXG4gICAgcHJpdmF0ZSBfaXRlbVNlcnZpY2U6IEl0ZW1TZXJ2aWNlLFxyXG4gICAgQEluamVjdCgnaW5kZXhMb29rdXBEZWZpbml0aW9ucycpXHJcbiAgICBwcml2YXRlIF9sb29rdXBEZWZzOiBJbmRleExvb2t1cERlZmluaXRpb25zXHJcbiAgKSB7XHJcbiAgICB0aGlzLmxhYmVsID0gJyc7XHJcbiAgICAvLyBldmVudHNcclxuICAgIHRoaXMuZW50cnlDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPERhdGFQaW5JbmZvIHwgbnVsbD4oKTtcclxuICAgIC8vIGZvcm1cclxuICAgIHRoaXMubG9va3VwID0gZm9ybUJ1aWxkZXIuY29udHJvbChudWxsKTtcclxuICAgIHRoaXMuZm9ybSA9IGZvcm1CdWlsZGVyLmdyb3VwKHtcclxuICAgICAgbG9va3VwOiB0aGlzLmxvb2t1cCxcclxuICAgIH0pO1xyXG4gICAgdGhpcy5saW1pdCA9IDEwO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVGhlIGxvb2t1cCBrZXkgdG8gYmUgdXNlZCBmb3IgdGhpcyBjb21wb25lbnQuXHJcbiAgICogVGhpcyBzaG91bGQgYmUgYSBrZXkgZnJvbSB0aGUgaW5qZWN0YWJsZSBpbmRleExvb2t1cERlZmluaXRpb25zLlxyXG4gICAqL1xyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGxvb2t1cEtleTogc3RyaW5nIHwgdW5kZWZpbmVkO1xyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuZW50cmllcyQgPSB0aGlzLmxvb2t1cC52YWx1ZUNoYW5nZXMucGlwZShcclxuICAgICAgZGVib3VuY2VUaW1lKDMwMCksXHJcbiAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXHJcbiAgICAgIHN3aXRjaE1hcCgodmFsdWU6IERhdGFQaW5JbmZvIHwgc3RyaW5nKSA9PiB7XHJcbiAgICAgICAgLy8gaWYgaXQncyBhIHN0cmluZyBpdCdzIGEgZmlsdGVyOyBlbHNlIGl0J3MgdGhlIGVudHJ5IGdvdFxyXG4gICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgICByZXR1cm4gdGhpcy5sb29rdXBFbnRyaWVzKHZhbHVlLCB0aGlzLmxpbWl0IHx8IDEwKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgcmV0dXJuIG9mKFt2YWx1ZV0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgICAvLyBzZXR1cCBpbml0aWFsIHZhbHVlIGlmIGl0cyBuYW1lIHdhcyBzcGVjaWZpZWRcclxuICAgIGlmICh0aGlzLl9pbml0aWFsVmFsdWUpIHtcclxuICAgICAgdGhpcy5yZXNldFRvSW5pdGlhbCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBsb29rdXBFbnRyaWVzKFxyXG4gICAgZmlsdGVyOiBzdHJpbmcsXHJcbiAgICBsaW1pdDogbnVtYmVyXHJcbiAgKTogT2JzZXJ2YWJsZTxEYXRhUGluSW5mb1tdPiB7XHJcbiAgICAvLyBnZXQgdGhlIGxvb2t1cCBkZWZpbml0aW9uXHJcbiAgICBpZiAoIXRoaXMubG9va3VwS2V5IHx8ICFmaWx0ZXIpIHtcclxuICAgICAgcmV0dXJuIG9mKFtdKTtcclxuICAgIH1cclxuICAgIGNvbnN0IGxkID0gdGhpcy5fbG9va3VwRGVmc1t0aGlzLmxvb2t1cEtleV07XHJcbiAgICBpZiAoIWxkKSB7XHJcbiAgICAgIHJldHVybiBvZihbXSk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gYnVpbGQgcXVlcnlcclxuICAgIGNvbnN0IHF1ZXJ5ID0gbGQucm9sZUlkXHJcbiAgICAgID8gYFtwYXJ0VHlwZUlkPSR7bGQudHlwZUlkfV0gQU5EIFtyb2xlSWQ9JHtsZC5yb2xlSWR9XSBBTkQgW25hbWU9JHtsZC5uYW1lfV0gQU5EIFt2YWx1ZV49JHtmaWx0ZXJ9XWBcclxuICAgICAgOiBgW3BhcnRUeXBlSWQ9JHtsZC50eXBlSWR9XSBBTkQgW25hbWU9JHtsZC5uYW1lfV0gQU5EIFt2YWx1ZV49JHtmaWx0ZXJ9XWA7XHJcblxyXG4gICAgLy8gc2VhcmNoXHJcbiAgICByZXR1cm4gdGhpcy5faXRlbVNlcnZpY2Uuc2VhcmNoUGlucyhxdWVyeSwgMSwgbGltaXQpLnBpcGUoXHJcbiAgICAgIG1hcCgodzogRXJyb3JXcmFwcGVyPERhdGFQYWdlPERhdGFQaW5JbmZvPj4pID0+IHtcclxuICAgICAgICBpZiAody5lcnJvcikge1xyXG4gICAgICAgICAgcmV0dXJuIFtdO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICByZXR1cm4gdy52YWx1ZT8uaXRlbXMgfHwgW107XHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcmVzZXRUb0luaXRpYWwoKTogdm9pZCB7XHJcbiAgICB0aGlzLmxvb2t1cEVudHJpZXModGhpcy5faW5pdGlhbFZhbHVlIHx8ICcnLCAxKVxyXG4gICAgICAucGlwZSh0YWtlKDEpKVxyXG4gICAgICAuc3Vic2NyaWJlKChlbnRyaWVzKSA9PiB7XHJcbiAgICAgICAgdGhpcy5sb29rdXAuc2V0VmFsdWUoZW50cmllcy5sZW5ndGggPyBlbnRyaWVzWzBdIDogdW5kZWZpbmVkKTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgY2xlYXIoKTogdm9pZCB7XHJcbiAgICB0aGlzLmVudHJ5ID0gdW5kZWZpbmVkO1xyXG4gICAgdGhpcy5sb29rdXAuc2V0VmFsdWUobnVsbCk7XHJcbiAgICB0aGlzLmVudHJ5Q2hhbmdlLmVtaXQobnVsbCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZW50cnlUb05hbWUoZW50cnk6IERhdGFQaW5JbmZvKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBlbnRyeT8udmFsdWU7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgcGlja0VudHJ5KGVudHJ5OiBEYXRhUGluSW5mbyk6IHZvaWQge1xyXG4gICAgdGhpcy5lbnRyeSA9IGVudHJ5O1xyXG4gICAgdGhpcy5lbnRyeUNoYW5nZS5lbWl0KGVudHJ5KTtcclxuICAgIGlmICh0aGlzLnJlc2V0T25QaWNrKSB7XHJcbiAgICAgIHRoaXMuY2xlYXIoKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiPGZvcm0gW2Zvcm1Hcm91cF09XCJmb3JtXCI+XHJcbiAgPG1hdC1hdXRvY29tcGxldGUgI2xvb2t1cEF1dG89XCJtYXRBdXRvY29tcGxldGVcIiBbZGlzcGxheVdpdGhdPVwiZW50cnlUb05hbWVcIj5cclxuICAgIDxtYXQtb3B0aW9uXHJcbiAgICAgICpuZ0Zvcj1cImxldCBlbnRyeSBvZiBlbnRyaWVzJCB8IGFzeW5jXCJcclxuICAgICAgW3ZhbHVlXT1cImVudHJ5XCJcclxuICAgICAgKG9uU2VsZWN0aW9uQ2hhbmdlKT1cInBpY2tFbnRyeShlbnRyeSlcIlxyXG4gICAgPlxyXG4gICAgICB7eyBlbnRyeT8udmFsdWUgfX1cclxuICAgIDwvbWF0LW9wdGlvbj5cclxuICA8L21hdC1hdXRvY29tcGxldGU+XHJcblxyXG4gIDxtYXQtZm9ybS1maWVsZD5cclxuICAgIDxpbnB1dFxyXG4gICAgICBtYXRJbnB1dFxyXG4gICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgIFtwbGFjZWhvbGRlcl09XCJsYWJlbFwiXHJcbiAgICAgIFtmb3JtQ29udHJvbF09XCJsb29rdXBcIlxyXG4gICAgICBbbWF0QXV0b2NvbXBsZXRlXT1cImxvb2t1cEF1dG9cIlxyXG4gICAgLz5cclxuICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gIDxidXR0b25cclxuICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgbWF0LWljb24tYnV0dG9uXHJcbiAgICBjb2xvcj1cIndhcm5cIlxyXG4gICAgKGNsaWNrKT1cImNsZWFyKClcIlxyXG4gICAgW2Rpc2FibGVkXT1cIiFlbnRyeVwiXHJcbiAgICBtYXRUb29sdGlwPVwiQ2xlYXJcIlxyXG4gID5cclxuICAgIDxtYXQtaWNvbj5jbGVhcjwvbWF0LWljb24+XHJcbiAgPC9idXR0b24+XHJcbjwvZm9ybT5cclxuIl19
135
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9va3VwLXBpbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9teXJtaWRvbi9jYWRtdXMtdWkvc3JjL2xpYi9jb21wb25lbnRzL2xvb2t1cC1waW4vbG9va3VwLXBpbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9teXJtaWRvbi9jYWRtdXMtdWkvc3JjL2xpYi9jb21wb25lbnRzL2xvb2t1cC1waW4vbG9va3VwLXBpbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUVMLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQWMsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3RDLE9BQU8sRUFDTCxZQUFZLEVBQ1osb0JBQW9CLEVBQ3BCLEdBQUcsRUFDSCxTQUFTLEVBQ1QsSUFBSSxHQUNMLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7Ozs7OztBQU14Qjs7Ozs7Ozs7Ozs7R0FXRztBQU1ILE1BQU0sT0FBTyxrQkFBa0I7SUFHN0I7O09BRUc7SUFDSCxJQUNXLFlBQVk7UUFDckIsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDO0lBQzVCLENBQUM7SUFDRCxJQUFXLFlBQVksQ0FBQyxLQUF5QjtRQUMvQyxJQUFJLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQztRQUMzQixJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNoQixJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDeEIsQ0FBQztJQUNILENBQUM7SUFvQ0QsWUFDRSxXQUErQixFQUN2QixZQUF5QixFQUV6QixXQUFtQztRQUZuQyxpQkFBWSxHQUFaLFlBQVksQ0FBYTtRQUV6QixnQkFBVyxHQUFYLFdBQVcsQ0FBd0I7UUFFM0MsSUFBSSxDQUFD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LE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDaEUsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRU0sS0FBSztRQUNWLElBQUksQ0FBQyxLQUFLLEdBQUcsU0FBUyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzNCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzlCLENBQUM7SUFFTSxXQUFXLENBQUMsS0FBa0I7UUFDbkMsT0FBTyxLQUFLLEVBQUUsS0FBSyxDQUFDO0lBQ3RCLENBQUM7SUFFTSxTQUFTLENBQUMsS0FBa0I7UUFDakMsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbkIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDN0IsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDckIsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ2YsQ0FBQztJQUNILENBQUM7OEdBcEpVLGtCQUFrQiwrRUFzRG5CLHdCQUF3QjtrR0F0RHZCLGtCQUFrQixnT0N2Qy9CLDJ4QkFnQ0E7OzJGRE9hLGtCQUFrQjtrQkFMOUIsU0FBUzsrQkFDRSxtQkFBbUI7OzBCQTBEMUIsTUFBTTsyQkFBQyx3QkFBd0I7eUNBL0N2QixZQUFZO3NCQUR0QixLQUFLO2dCQWVDLEtBQUs7c0JBRFgsS0FBSztnQkFRQyxLQUFLO3NCQURYLEtBQUs7Z0JBVUMsV0FBVztzQkFEakIsS0FBSztnQkFRQyxXQUFXO3NCQURqQixNQUFNO2dCQThCQSxTQUFTO3NCQURmLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgSW5qZWN0LFxyXG4gIElucHV0LFxyXG4gIE9uSW5pdCxcclxuICBPdXRwdXQsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFVudHlwZWRGb3JtQnVpbGRlciwgVW50eXBlZEZvcm1Db250cm9sLCBVbnR5cGVkRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQge1xyXG4gIGRlYm91bmNlVGltZSxcclxuICBkaXN0aW5jdFVudGlsQ2hhbmdlZCxcclxuICBtYXAsXHJcbiAgc3dpdGNoTWFwLFxyXG4gIHRha2UsXHJcbn0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5cclxuaW1wb3J0IHsgRGF0YVBpbkluZm8sIEluZGV4TG9va3VwRGVmaW5pdGlvbnMgfSBmcm9tICdAbXlybWlkb24vY2FkbXVzLWNvcmUnO1xyXG5pbXBvcnQgeyBJdGVtU2VydmljZSB9IGZyb20gJ0BteXJtaWRvbi9jYWRtdXMtYXBpJztcclxuaW1wb3J0IHsgRGF0YVBhZ2UsIEVycm9yV3JhcHBlciB9IGZyb20gJ0BteXJtaWRvbi9uZy10b29scyc7XHJcblxyXG4vKipcclxuICogR2VuZXJpYyBkYXRhIHBpbiBsb29rdXAgY29tcG9uZW50LiBUaGlzIGFsbG93cyB1c2VycyB0eXBpbmcgYSBwYXJ0XHJcbiAqIG9mIGEgcGluJ3MgdmFsdWUsIGFuZCBnZXQgdGhlIGZ1bGwgcGluLiBGb3IgaW5zdGFuY2UsIGlmIHlvdSBoYXZlXHJcbiAqIGEgbG9va3VwIHNldCBvZiBjb2xvcnMgYW5kIHR5cGUgXCJnclwiLCB5b3UgbWlnaHQgZ2V0IHRoZSBwaW5zXHJcbiAqIGNvcnJlc3BvbmRpbmcgdG8gXCJncmVlblwiIChlLmcuIGlkPWNvbG9yLCB2YWx1ZT1ncmVlbiksIFwiZ3JheVwiLCBldGMuXHJcbiAqIFVzYWdlOiBhZGQgYSBGb3JtQ29udHJvbCB0byBob2xkIGEgRGF0YVBpbkluZm8gdmFsdWU7IGluIHRoZSBIVE1MXHJcbiAqIHRlbXBsYXRlIHNldCB0aGUgY29tcG9uZW50J3MgbG9va3VwS2V5LCBsYWJlbCwgaW5pdGlhbFZhbHVlLCBhbmRcclxuICogZW50cnlDaGFuZ2UgaGFuZGxlci4gVGhlIGluaXRpYWxWYWx1ZSwgaWYgYW55LCBzaG91bGQgYmUgdGhlIGluaXRpYWxcclxuICogRGF0YVBpbkluZm8gdmFsdWUuXHJcbiAqIElmIHlvdSBhcmUgdXNpbmcgdGhpcyBjb21wb25lbnQgYXMgYSBwdXJlIGxvb2t1cCBkZXZpY2UsIGRvbid0IHNldFxyXG4gKiB0aGUgaW5pdGlhbFZhbHVlIGFuZCBzZXQgcmVzZXRPblBpY2s9dHJ1ZS5cclxuICovXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnY2FkbXVzLWxvb2t1cC1waW4nLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9sb29rdXAtcGluLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9sb29rdXAtcGluLmNvbXBvbmVudC5jc3MnXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIExvb2t1cFBpbkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgcHJpdmF0ZSBfaW5pdGlhbFZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQ7XHJcblxyXG4gIC8qKlxyXG4gICAqIFRoZSBlbnRyeSB2YWx1ZSBpbml0aWFsbHkgc2V0IHdoZW4gdGhlIGNvbXBvbmVudCBsb2Fkcy5cclxuICAgKi9cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBnZXQgaW5pdGlhbFZhbHVlKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XHJcbiAgICByZXR1cm4gdGhpcy5faW5pdGlhbFZhbHVlO1xyXG4gIH1cclxuICBwdWJsaWMgc2V0IGluaXRpYWxWYWx1ZSh2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkKSB7XHJcbiAgICB0aGlzLl9pbml0aWFsVmFsdWUgPSB2YWx1ZTtcclxuICAgIGlmICh0aGlzLmxvb2t1cCkge1xyXG4gICAgICB0aGlzLnJlc2V0VG9Jbml0aWFsKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBUaGUgbGFiZWwgdG8gYmUgZGlzcGxheWVkIGZvciB0aGlzIGxvb2t1cC5cclxuICAgKi9cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBsYWJlbDogc3RyaW5nO1xyXG5cclxuICAvKipcclxuICAgKiBUaGUgbWF4aW11bSBjb3VudCBvZiBsb29rdXAgZW50cmllcyB0byByZXRyaWV2ZS5cclxuICAgKiBEZWZhdWx0IGlzIDEwLlxyXG4gICAqL1xyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGxpbWl0OiBudW1iZXI7XHJcblxyXG4gIC8qKlxyXG4gICAqIFRydWUgdG8gcmVzZXQgdGhlIGxvb2t1cCB2YWx1ZSBhZnRlciBpdCBpcyBwaWNrZWQuXHJcbiAgICogVGhpcyBpcyB0eXBpY2FsbHkgdXNlZCB3aGVuIHlvdSB1c2UgdGhpcyBjb21wb25lbnRcclxuICAgKiBhcyBhIHB1cmUgbG9va3VwIGRldmljZSwgc3RvcmluZyB0aGUgcGlja2VkIHZhbHVlXHJcbiAgICogZWxzZXdoZXJlIHdoZW4gaGFuZGxpbmcgaXRzIGVudHJ5Q2hhbmdlIGV2ZW50LlxyXG4gICAqL1xyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHJlc2V0T25QaWNrOiBib29sZWFuIHwgdW5kZWZpbmVkO1xyXG5cclxuICAvKipcclxuICAgKiBGaXJlZCB3aGVuZXZlciBhbiBlbnRyeSBpcyBwaWNrZWQuIFVzdWFsbHkgeW91IHNob3VsZFxyXG4gICAqIGNhc3QgdGhlIHJlY2VpdmVkIGFyZ3VtZW50IHRvIGEgbW9yZSBzcGVjaWZpYyB0eXBlLlxyXG4gICAqL1xyXG4gIEBPdXRwdXQoKVxyXG4gIHB1YmxpYyBlbnRyeUNoYW5nZTogRXZlbnRFbWl0dGVyPERhdGFQaW5JbmZvIHwgbnVsbD47XHJcblxyXG4gIHB1YmxpYyBmb3JtOiBVbnR5cGVkRm9ybUdyb3VwO1xyXG4gIHB1YmxpYyBsb29rdXA6IFVudHlwZWRGb3JtQ29udHJvbDtcclxuICBwdWJsaWMgZW50cmllcyQ6IE9ic2VydmFibGU8RGF0YVBpbkluZm9bXT4gfCB1bmRlZmluZWQ7XHJcbiAgcHVibGljIGVudHJ5OiBEYXRhUGluSW5mbyB8IHVuZGVmaW5lZDtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBmb3JtQnVpbGRlcjogVW50eXBlZEZvcm1CdWlsZGVyLFxyXG4gICAgcHJpdmF0ZSBfaXRlbVNlcnZpY2U6IEl0ZW1TZXJ2aWNlLFxyXG4gICAgQEluamVjdCgnaW5kZXhMb29rdXBEZWZpbml0aW9ucycpXHJcbiAgICBwcml2YXRlIF9sb29rdXBEZWZzOiBJbmRleExvb2t1cERlZmluaXRpb25zXHJcbiAgKSB7XHJcbiAgICB0aGlzLmxhYmVsID0gJyc7XHJcbiAgICAvLyBldmVudHNcclxuICAgIHRoaXMuZW50cnlDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPERhdGFQaW5JbmZvIHwgbnVsbD4oKTtcclxuICAgIC8vIGZvcm1cclxuICAgIHRoaXMubG9va3VwID0gZm9ybUJ1aWxkZXIuY29udHJvbChudWxsKTtcclxuICAgIHRoaXMuZm9ybSA9IGZvcm1CdWlsZGVyLmdyb3VwKHtcclxuICAgICAgbG9va3VwOiB0aGlzLmxvb2t1cCxcclxuICAgIH0pO1xyXG4gICAgdGhpcy5saW1pdCA9IDEwO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVGhlIGxvb2t1cCBrZXkgdG8gYmUgdXNlZCBmb3IgdGhpcyBjb21wb25lbnQuXHJcbiAgICogVGhpcyBzaG91bGQgYmUgYSBrZXkgZnJvbSB0aGUgaW5qZWN0YWJsZSBpbmRleExvb2t1cERlZmluaXRpb25zLlxyXG4gICAqL1xyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGxvb2t1cEtleTogc3RyaW5nIHwgdW5kZWZpbmVkO1xyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuZW50cmllcyQgPSB0aGlzLmxvb2t1cC52YWx1ZUNoYW5nZXMucGlwZShcclxuICAgICAgZGVib3VuY2VUaW1lKDMwMCksXHJcbiAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXHJcbiAgICAgIHN3aXRjaE1hcCgodmFsdWU6IERhdGFQaW5JbmZvIHwgc3RyaW5nKSA9PiB7XHJcbiAgICAgICAgLy8gaWYgaXQncyBhIHN0cmluZyBpdCdzIGEgZmlsdGVyOyBlbHNlIGl0J3MgdGhlIGVudHJ5IGdvdFxyXG4gICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgICByZXR1cm4gdGhpcy5sb29rdXBFbnRyaWVzKHZhbHVlLCB0aGlzLmxpbWl0IHx8IDEwKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgcmV0dXJuIG9mKFt2YWx1ZV0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgICAvLyBzZXR1cCBpbml0aWFsIHZhbHVlIGlmIGl0cyBuYW1lIHdhcyBzcGVjaWZpZWRcclxuICAgIGlmICh0aGlzLl9pbml0aWFsVmFsdWUpIHtcclxuICAgICAgdGhpcy5yZXNldFRvSW5pdGlhbCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBsb29rdXBFbnRyaWVzKFxyXG4gICAgZmlsdGVyOiBzdHJpbmcsXHJcbiAgICBsaW1pdDogbnVtYmVyXHJcbiAgKTogT2JzZXJ2YWJsZTxEYXRhUGluSW5mb1tdPiB7XHJcbiAgICAvLyBnZXQgdGhlIGxvb2t1cCBkZWZpbml0aW9uXHJcbiAgICBpZiAoIXRoaXMubG9va3VwS2V5IHx8ICFmaWx0ZXIpIHtcclxuICAgICAgcmV0dXJuIG9mKFtdKTtcclxuICAgIH1cclxuICAgIGNvbnN0IGxkID0gdGhpcy5fbG9va3VwRGVmc1t0aGlzLmxvb2t1cEtleV07XHJcbiAgICBpZiAoIWxkKSB7XHJcbiAgICAgIHJldHVybiBvZihbXSk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gYnVpbGQgcXVlcnlcclxuICAgIGNvbnN0IHF1ZXJ5ID0gbGQucm9sZUlkXHJcbiAgICAgID8gYFtwYXJ0VHlwZUlkPSR7bGQudHlwZUlkfV0gQU5EIFtyb2xlSWQ9JHtsZC5yb2xlSWR9XSBBTkQgW25hbWU9JHtsZC5uYW1lfV0gQU5EIFt2YWx1ZV49JHtmaWx0ZXJ9XWBcclxuICAgICAgOiBgW3BhcnRUeXBlSWQ9JHtsZC50eXBlSWR9XSBBTkQgW25hbWU9JHtsZC5uYW1lfV0gQU5EIFt2YWx1ZV49JHtmaWx0ZXJ9XWA7XHJcblxyXG4gICAgLy8gc2VhcmNoXHJcbiAgICByZXR1cm4gdGhpcy5faXRlbVNlcnZpY2Uuc2VhcmNoUGlucyhxdWVyeSwgMSwgbGltaXQpLnBpcGUoXHJcbiAgICAgIG1hcCgodzogRXJyb3JXcmFwcGVyPERhdGFQYWdlPERhdGFQaW5JbmZvPj4pID0+IHtcclxuICAgICAgICBpZiAody5lcnJvcikge1xyXG4gICAgICAgICAgcmV0dXJuIFtdO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICByZXR1cm4gdy52YWx1ZT8uaXRlbXMgfHwgW107XHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcmVzZXRUb0luaXRpYWwoKTogdm9pZCB7XHJcbiAgICB0aGlzLmxvb2t1cEVudHJpZXModGhpcy5faW5pdGlhbFZhbHVlIHx8ICcnLCAxKVxyXG4gICAgICAucGlwZSh0YWtlKDEpKVxyXG4gICAgICAuc3Vic2NyaWJlKChlbnRyaWVzKSA9PiB7XHJcbiAgICAgICAgdGhpcy5sb29rdXAuc2V0VmFsdWUoZW50cmllcy5sZW5ndGggPyBlbnRyaWVzWzBdIDogdW5kZWZpbmVkKTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgY2xlYXIoKTogdm9pZCB7XHJcbiAgICB0aGlzLmVudHJ5ID0gdW5kZWZpbmVkO1xyXG4gICAgdGhpcy5sb29rdXAuc2V0VmFsdWUobnVsbCk7XHJcbiAgICB0aGlzLmVudHJ5Q2hhbmdlLmVtaXQobnVsbCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZW50cnlUb05hbWUoZW50cnk6IERhdGFQaW5JbmZvKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBlbnRyeT8udmFsdWU7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgcGlja0VudHJ5KGVudHJ5OiBEYXRhUGluSW5mbyk6IHZvaWQge1xyXG4gICAgdGhpcy5lbnRyeSA9IGVudHJ5O1xyXG4gICAgdGhpcy5lbnRyeUNoYW5nZS5lbWl0KGVudHJ5KTtcclxuICAgIGlmICh0aGlzLnJlc2V0T25QaWNrKSB7XHJcbiAgICAgIHRoaXMuY2xlYXIoKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiPGZvcm0gW2Zvcm1Hcm91cF09XCJmb3JtXCI+XG4gIDxtYXQtYXV0b2NvbXBsZXRlICNsb29rdXBBdXRvPVwibWF0QXV0b2NvbXBsZXRlXCIgW2Rpc3BsYXlXaXRoXT1cImVudHJ5VG9OYW1lXCI+XG4gICAgQGZvciAoZW50cnkgb2YgZW50cmllcyQgfCBhc3luYzsgdHJhY2sgZW50cnkpIHtcbiAgICAgIDxtYXQtb3B0aW9uXG4gICAgICAgIFt2YWx1ZV09XCJlbnRyeVwiXG4gICAgICAgIChvblNlbGVjdGlvbkNoYW5nZSk9XCJwaWNrRW50cnkoZW50cnkpXCJcbiAgICAgICAgPlxuICAgICAgICB7eyBlbnRyeT8udmFsdWUgfX1cbiAgICAgIDwvbWF0LW9wdGlvbj5cbiAgICB9XG4gIDwvbWF0LWF1dG9jb21wbGV0ZT5cblxuICA8bWF0LWZvcm0tZmllbGQ+XG4gICAgPGlucHV0XG4gICAgICBtYXRJbnB1dFxuICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgW3BsYWNlaG9sZGVyXT1cImxhYmVsXCJcbiAgICAgIFtmb3JtQ29udHJvbF09XCJsb29rdXBcIlxuICAgICAgW21hdEF1dG9jb21wbGV0ZV09XCJsb29rdXBBdXRvXCJcbiAgICAgIC8+XG4gICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICA8YnV0dG9uXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgIG1hdC1pY29uLWJ1dHRvblxuICAgICAgY29sb3I9XCJ3YXJuXCJcbiAgICAgIChjbGljayk9XCJjbGVhcigpXCJcbiAgICAgIFtkaXNhYmxlZF09XCIhZW50cnlcIlxuICAgICAgbWF0VG9vbHRpcD1cIkNsZWFyXCJcbiAgICAgID5cbiAgICAgIDxtYXQtaWNvbj5jbGVhcjwvbWF0LWljb24+XG4gICAgPC9idXR0b24+XG4gIDwvZm9ybT5cbiJdfQ==