@hestia-earth/ui-components 0.27.19 → 0.27.21

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.
Files changed (40) hide show
  1. package/bibliographies/bibliographies-search-confirm/bibliographies-search-confirm.component.d.ts +7 -5
  2. package/chart/bar-chart/bar-chart.component.d.ts +1 -1
  3. package/common/issue-confirm/issue-confirm.component.d.ts +8 -6
  4. package/common/maps-drawing-confirm/maps-drawing-confirm.component.d.ts +2 -0
  5. package/common/node-utils.d.ts +2 -0
  6. package/common/utils.d.ts +1 -1
  7. package/esm2022/bibliographies/bibliographies-search-confirm/bibliographies-search-confirm.component.mjs +15 -10
  8. package/esm2022/chart/bar-chart/bar-chart.component.mjs +3 -3
  9. package/esm2022/chart/chart.component.mjs +3 -3
  10. package/esm2022/common/issue-confirm/issue-confirm.component.mjs +15 -9
  11. package/esm2022/common/maps-drawing-confirm/maps-drawing-confirm.component.mjs +10 -4
  12. package/esm2022/common/node-utils.mjs +25 -1
  13. package/esm2022/common/utils.mjs +4 -3
  14. package/esm2022/cycles/cycles-completeness/cycles-completeness.component.mjs +1 -1
  15. package/esm2022/cycles/cycles-nodes/cycles-nodes.component.mjs +2 -2
  16. package/esm2022/files/files-error.model.mjs +2 -2
  17. package/esm2022/files/files-form-editable/files-form-editable.component.mjs +2 -2
  18. package/esm2022/impact-assessments/impact-assessments-products/impact-assessments-products.component.mjs +3 -3
  19. package/esm2022/node/node-csv-export-confirm/node-csv-export-confirm.component.mjs +15 -9
  20. package/esm2022/sites/index.mjs +2 -1
  21. package/esm2022/sites/sites-management-chart/sites-management-chart.component.mjs +98 -0
  22. package/esm2022/sites/sites-nodes/sites-nodes.component.mjs +15 -7
  23. package/fesm2022/hestia-earth-ui-components.mjs +184 -43
  24. package/fesm2022/hestia-earth-ui-components.mjs.map +1 -1
  25. package/node/node-csv-export-confirm/node-csv-export-confirm.component.d.ts +9 -7
  26. package/package.json +1 -1
  27. package/sites/index.d.ts +1 -0
  28. package/sites/sites-management-chart/sites-management-chart.component.d.ts +21 -0
  29. package/sites/sites-nodes/sites-nodes.component.d.ts +11 -8
  30. package/svg-icons/bell.svg +12 -0
  31. package/svg-icons/checkmark-circle.svg +5 -0
  32. package/svg-icons/exclamation-triangle.svg +12 -0
  33. package/svg-icons/file-indexed.svg +20 -0
  34. package/svg-icons/file-progress.svg +5 -0
  35. package/svg-icons/file-review.svg +22 -0
  36. package/svg-icons/google-outlined.svg +3 -0
  37. package/svg-icons/guide.svg +9 -0
  38. package/svg-icons/icons.json +40 -0
  39. package/svg-icons/linkedin-outlined.svg +3 -0
  40. package/svg-icons/orcid-outlined.svg +13 -0
@@ -6,13 +6,14 @@ export declare class BibliographiesSearchConfirmComponent {
6
6
  private formBuilder;
7
7
  private mendeleyService;
8
8
  private searchService;
9
+ private readonly activeModal;
9
10
  protected readonly faTimes: import("@fortawesome/fontawesome-common-types").IconDefinition;
10
11
  protected readonly faSpinner: import("@fortawesome/fontawesome-common-types").IconDefinition;
11
12
  protected readonly faExternalLinkAlt: import("@fortawesome/fontawesome-common-types").IconDefinition;
12
- protected search: import("@angular/core").InputSignal<string>;
13
- protected searchSources: import("@angular/core").InputSignal<boolean>;
14
- protected searchBibliographies: import("@angular/core").InputSignal<boolean>;
15
- protected searchBy: import("@angular/core").InputSignal<searchByFields>;
13
+ protected search: import("@angular/core").ModelSignal<string>;
14
+ protected searchSources: import("@angular/core").ModelSignal<boolean>;
15
+ protected searchBibliographies: import("@angular/core").ModelSignal<boolean>;
16
+ protected searchBy: import("@angular/core").ModelSignal<searchByFields>;
16
17
  private searchLimit;
17
18
  protected closed: import("@angular/core").OutputEmitterRef<Result>;
18
19
  protected loading: import("@angular/core").WritableSignal<boolean>;
@@ -30,7 +31,8 @@ export declare class BibliographiesSearchConfirmComponent {
30
31
  protected resetSearch(): void;
31
32
  protected confirm(): void;
32
33
  protected cancel(): void;
34
+ protected close(value: any): void;
33
35
  static ɵfac: i0.ɵɵFactoryDeclaration<BibliographiesSearchConfirmComponent, never>;
34
- static ɵcmp: i0.ɵɵComponentDeclaration<BibliographiesSearchConfirmComponent, "he-bibliographies-search-confirm", never, { "search": { "alias": "search"; "required": false; "isSignal": true; }; "searchSources": { "alias": "searchSources"; "required": false; "isSignal": true; }; "searchBibliographies": { "alias": "searchBibliographies"; "required": false; "isSignal": true; }; "searchBy": { "alias": "searchBy"; "required": false; "isSignal": true; }; }, { "closed": "closed"; }, never, never, true, never>;
36
+ static ɵcmp: i0.ɵɵComponentDeclaration<BibliographiesSearchConfirmComponent, "he-bibliographies-search-confirm", never, { "search": { "alias": "search"; "required": false; "isSignal": true; }; "searchSources": { "alias": "searchSources"; "required": false; "isSignal": true; }; "searchBibliographies": { "alias": "searchBibliographies"; "required": false; "isSignal": true; }; "searchBy": { "alias": "searchBy"; "required": false; "isSignal": true; }; }, { "search": "searchChange"; "searchSources": "searchSourcesChange"; "searchBibliographies": "searchBibliographiesChange"; "searchBy": "searchByChange"; "closed": "closed"; }, never, never, true, never>;
35
37
  }
36
38
  export {};
@@ -19,5 +19,5 @@ export declare class BarChartComponent {
19
19
  protected dataConfig: Signal<ChartData>;
20
20
  protected configuration: Signal<Partial<ChartConfiguration>>;
21
21
  static ɵfac: i0.ɵɵFactoryDeclaration<BarChartComponent, never>;
22
- static ɵcmp: i0.ɵɵComponentDeclaration<BarChartComponent, "he-bar-chart", never, { "data": { "alias": "data"; "required": true; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; "datasets": { "alias": "datasets"; "required": false; "isSignal": true; }; "config": { "alias": "config"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
22
+ static ɵcmp: i0.ɵɵComponentDeclaration<BarChartComponent, "he-bar-chart", never, { "data": { "alias": "data"; "required": false; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; "datasets": { "alias": "datasets"; "required": false; "isSignal": true; }; "config": { "alias": "config"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
23
23
  }
@@ -1,11 +1,12 @@
1
1
  import { Repository, Template } from '../utils';
2
2
  import * as i0 from "@angular/core";
3
3
  export declare class IssueConfirmComponent {
4
- protected title: import("@angular/core").InputSignal<string>;
5
- protected repository: import("@angular/core").InputSignal<Repository>;
6
- protected template: import("@angular/core").InputSignal<Template>;
7
- protected isCommunity: import("@angular/core").InputSignal<boolean>;
8
- protected closed: import("@angular/core").OutputEmitterRef<boolean>;
4
+ private readonly activeModal;
5
+ protected title: import("@angular/core").ModelSignal<string>;
6
+ protected repository: import("@angular/core").ModelSignal<Repository>;
7
+ protected template: import("@angular/core").ModelSignal<Template>;
8
+ protected isCommunity: import("@angular/core").ModelSignal<boolean>;
9
+ protected closed: import("@angular/core").OutputEmitterRef<void>;
9
10
  protected Repository: typeof Repository;
10
11
  protected Template: typeof Template;
11
12
  protected repositories: import("@angular/core").Signal<Repository[]>;
@@ -13,6 +14,7 @@ export declare class IssueConfirmComponent {
13
14
  protected selectedRepository: import("@angular/core").WritableSignal<Repository>;
14
15
  protected selectedTemplate: import("@angular/core").WritableSignal<Template>;
15
16
  constructor();
17
+ protected close(): void;
16
18
  static ɵfac: i0.ɵɵFactoryDeclaration<IssueConfirmComponent, never>;
17
- static ɵcmp: i0.ɵɵComponentDeclaration<IssueConfirmComponent, "he-issue-confirm", never, { "title": { "alias": "title"; "required": false; "isSignal": true; }; "repository": { "alias": "repository"; "required": false; "isSignal": true; }; "template": { "alias": "template"; "required": false; "isSignal": true; }; "isCommunity": { "alias": "isCommunity"; "required": false; "isSignal": true; }; }, { "closed": "closed"; }, never, never, true, never>;
19
+ static ɵcmp: i0.ɵɵComponentDeclaration<IssueConfirmComponent, "he-issue-confirm", never, { "title": { "alias": "title"; "required": false; "isSignal": true; }; "repository": { "alias": "repository"; "required": false; "isSignal": true; }; "template": { "alias": "template"; "required": false; "isSignal": true; }; "isCommunity": { "alias": "isCommunity"; "required": false; "isSignal": true; }; }, { "title": "titleChange"; "repository": "repositoryChange"; "template": "templateChange"; "isCommunity": "isCommunityChange"; "closed": "closed"; }, never, never, true, never>;
18
20
  }
@@ -4,6 +4,7 @@ import * as i0 from "@angular/core";
4
4
  export declare class MapsDrawingConfirmComponent implements OnInit, OnDestroy {
5
5
  private destroyRef;
6
6
  protected mapLoaded$: import("rxjs").Observable<boolean>;
7
+ private readonly activeModal;
7
8
  protected readonly faTimes: import("@fortawesome/fontawesome-common-types").IconDefinition;
8
9
  private listeners;
9
10
  private shapes;
@@ -28,6 +29,7 @@ export declare class MapsDrawingConfirmComponent implements OnInit, OnDestroy {
28
29
  protected mapInitialized(): void;
29
30
  protected confirm(): void;
30
31
  protected clear(): void;
32
+ protected close(value: google.maps.LatLngLiteral | string): void;
31
33
  static ɵfac: i0.ɵɵFactoryDeclaration<MapsDrawingConfirmComponent, never>;
32
34
  static ɵcmp: i0.ɵɵComponentDeclaration<MapsDrawingConfirmComponent, "he-maps-drawing-confirm", never, { "value": { "alias": "value"; "required": false; }; "modes": { "alias": "modes"; "required": false; }; "center": { "alias": "center"; "required": false; }; "zoom": { "alias": "zoom"; "required": false; }; }, { "closed": "closed"; }, never, never, true, never>;
33
35
  }
@@ -1,5 +1,7 @@
1
1
  import { Term, ICycleJSONLD, ISiteJSONLD, IImpactAssessmentJSONLD, EmissionMethodTier, ITermJSONLD, Indicator, Animal, Transformation, blankNodesType, blankNodesKey } from '@hestia-earth/schema';
2
2
  import { propertyValueType } from '@hestia-earth/utils/dist/term';
3
+ export declare const formatDate: (date: string, isStart?: boolean) => Date;
4
+ export declare const getDatesBetween: (startDate: string, endDate: string) => Date[];
3
5
  export declare const filterBlankNode: (filterTerm: string) => ({ term }: blankNodesType) => boolean;
4
6
  export declare const ignoreKeys: string[];
5
7
  export declare const isValidKey: (key: string) => boolean;
package/common/utils.d.ts CHANGED
@@ -4,7 +4,7 @@ export declare const isChrome: () => boolean;
4
4
  export declare const baseUrl: () => string;
5
5
  export declare const baseApiUrl: () => string;
6
6
  export declare const isExternal: () => boolean;
7
- export declare const handleAPIError: (error: any) => never;
7
+ export declare const handleAPIError: (err: any) => never;
8
8
  export declare const errorText: (error: any) => string;
9
9
  export declare const filterParams: (obj: any) => {
10
10
  [x: string]: string;
@@ -1,8 +1,8 @@
1
- import { Component, ChangeDetectionStrategy, inject, input, effect, signal, computed, output } from '@angular/core';
1
+ import { Component, ChangeDetectionStrategy, inject, model, effect, signal, computed, output } from '@angular/core';
2
2
  import { toSignal } from '@angular/core/rxjs-interop';
3
3
  import { UntypedFormBuilder, Validators, FormsModule, ReactiveFormsModule } from '@angular/forms';
4
4
  import { NgTemplateOutlet } from '@angular/common';
5
- import { NgbHighlight } from '@ng-bootstrap/ng-bootstrap';
5
+ import { NgbActiveModal, NgbHighlight } from '@ng-bootstrap/ng-bootstrap';
6
6
  import { FaIconComponent } from '@fortawesome/angular-fontawesome';
7
7
  import { faExternalLinkAlt, faSpinner, faTimes } from '@fortawesome/free-solid-svg-icons';
8
8
  import { catchError, debounceTime, distinctUntilChanged, map, switchMap, tap } from 'rxjs/operators';
@@ -17,13 +17,14 @@ export class BibliographiesSearchConfirmComponent {
17
17
  this.formBuilder = inject(UntypedFormBuilder);
18
18
  this.mendeleyService = inject(HeMendeleyService);
19
19
  this.searchService = inject(HeSearchService);
20
+ this.activeModal = inject(NgbActiveModal, { optional: true });
20
21
  this.faTimes = faTimes;
21
22
  this.faSpinner = faSpinner;
22
23
  this.faExternalLinkAlt = faExternalLinkAlt;
23
- this.search = input('');
24
- this.searchSources = input(true);
25
- this.searchBibliographies = input(true);
26
- this.searchBy = input('title');
24
+ this.search = model('');
25
+ this.searchSources = model(true);
26
+ this.searchBibliographies = model(true);
27
+ this.searchBy = model('title');
27
28
  this.searchLimit = computed(() => limit / ([this.searchSources(), this.searchBibliographies()].filter(Boolean).length || 1));
28
29
  this.closed = output();
29
30
  this.loading = signal(true);
@@ -72,16 +73,20 @@ export class BibliographiesSearchConfirmComponent {
72
73
  this.searchControl.setValue('');
73
74
  }
74
75
  confirm() {
75
- this.closed.emit(this.selectedResult());
76
+ return this.close(this.selectedResult());
76
77
  }
77
78
  cancel() {
78
- this.closed.emit(null);
79
+ return this.close(null);
80
+ }
81
+ close(value) {
82
+ this.closed.emit(value);
83
+ this.activeModal?.close(value);
79
84
  }
80
85
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: BibliographiesSearchConfirmComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
81
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.8", type: BibliographiesSearchConfirmComponent, isStandalone: true, selector: "he-bibliographies-search-confirm", inputs: { search: { classPropertyName: "search", publicName: "search", isSignal: true, isRequired: false, transformFunction: null }, searchSources: { classPropertyName: "searchSources", publicName: "searchSources", isSignal: true, isRequired: false, transformFunction: null }, searchBibliographies: { classPropertyName: "searchBibliographies", publicName: "searchBibliographies", isSignal: true, isRequired: false, transformFunction: null }, searchBy: { classPropertyName: "searchBy", publicName: "searchBy", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { closed: "closed" }, ngImport: i0, template: "<div class=\"modal is-large is-active\">\n <div class=\"modal-background\"></div>\n <div class=\"modal-card\">\n <header class=\"modal-card-head\">\n <p class=\"modal-card-title\">Search Bibliographies</p>\n <button class=\"delete\" aria-label=\"close\" (click)=\"cancel()\"></button>\n </header>\n <section class=\"modal-card-body\">\n <form [formGroup]=\"formGroup\" novalidate>\n <div class=\"field has-addons\">\n <div class=\"control is-expanded has-icons-right\">\n <input\n class=\"input search-input\"\n [attr.placeholder]=\"'Search bibliography by ' + searchBy()\"\n formControlName=\"search\"\n name=\"bibliography\"\n autocomplete=\"off\"\n (focus)=\"searchFocus($event)\" />\n <a class=\"icon is-small is-right\" [class.is-hidden]=\"loading()\" (click)=\"resetSearch()\">\n <fa-icon [icon]=\"faTimes\"></fa-icon>\n </a>\n\n <span class=\"icon is-right has-text-grey-dark\" [class.is-hidden]=\"!loading()\">\n <fa-icon [icon]=\"faSpinner\" [pulse]=\"true\" size=\"sm\"></fa-icon>\n </span>\n </div>\n </div>\n </form>\n\n <div class=\"is-mt-2\">\n <span [class.is-hidden]=\"loading() || !searchControl?.value || hasResults()\">\n No bibliographies found matching query.\n </span>\n\n <ul>\n @for (result of results(); track result) {\n <li>\n <a\n class=\"is-block p-1 search-result\"\n (click)=\"selectedResult.set(result)\"\n [class.is-active]=\"selectedResult() === result\">\n <ngb-highlight\n [result]=\"result.bibliography?.title ?? result.title\"\n [term]=\"searchControl?.value\"></ngb-highlight>\n <span class=\"px-1\">-</span>\n <span class=\"px-1\">\n <i>{{ result.name }}</i>\n </span>\n @if (result.bibliography?.documentDOI || result.documentDOI) {\n <span class=\"px-1\">\n -\n <b>documentDOI:</b>\n </span>\n }\n <ngb-highlight\n [result]=\"result.bibliography?.documentDOI ?? result.documentDOI\"\n [term]=\"searchControl?.value\"></ngb-highlight>\n @if (result.bibliography?.scopus || result.scopus) {\n <span class=\"px-1\">\n -\n <b>scopus:</b>\n </span>\n }\n <ngb-highlight\n [result]=\"result.bibliography?.scopus ?? result.scopus\"\n [term]=\"searchControl?.value\"></ngb-highlight>\n <span>\n <ng-container\n *ngTemplateOutlet=\"\n mendeleyLink;\n context: { $implicit: result.bibliography?.mendeleyID ?? result.mendeleyID }\n \"></ng-container>\n </span>\n </a>\n </li>\n }\n </ul>\n </div>\n </section>\n <footer class=\"modal-card-foot\">\n <button class=\"button is-primary\" (click)=\"confirm()\" [disabled]=\"!selectedResult()\">\n <span>Confirm</span>\n </button>\n <button class=\"button is-ghost\" (click)=\"cancel()\">\n <span>Close</span>\n </button>\n </footer>\n </div>\n</div>\n\n<ng-template #mendeleyLink let-id>\n @if (id) {\n <a [href]=\"'https://www.mendeley.com/catalogue/' + id\" target=\"_blank\" (click)=\"$event.stopPropagation()\">\n <fa-icon class=\"ml-2\" [icon]=\"faExternalLinkAlt\" size=\"sm\"></fa-icon>\n </a>\n }\n</ng-template>\n", styles: ["ngb-highlight,span{vertical-align:middle;white-space:normal;width:auto}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { 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: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "animation", "spin", "pulse", "mask", "styles", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "classes", "transform", "a11yRole"] }, { kind: "component", type: NgbHighlight, selector: "ngb-highlight", inputs: ["highlightClass", "result", "term", "accentSensitive"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
86
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.8", type: BibliographiesSearchConfirmComponent, isStandalone: true, selector: "he-bibliographies-search-confirm", inputs: { search: { classPropertyName: "search", publicName: "search", isSignal: true, isRequired: false, transformFunction: null }, searchSources: { classPropertyName: "searchSources", publicName: "searchSources", isSignal: true, isRequired: false, transformFunction: null }, searchBibliographies: { classPropertyName: "searchBibliographies", publicName: "searchBibliographies", isSignal: true, isRequired: false, transformFunction: null }, searchBy: { classPropertyName: "searchBy", publicName: "searchBy", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { search: "searchChange", searchSources: "searchSourcesChange", searchBibliographies: "searchBibliographiesChange", searchBy: "searchByChange", closed: "closed" }, ngImport: i0, template: "<div class=\"modal is-large is-active\">\n <div class=\"modal-background\"></div>\n <div class=\"modal-card\">\n <header class=\"modal-card-head\">\n <p class=\"modal-card-title\">Search Bibliographies</p>\n <button class=\"delete\" aria-label=\"close\" (click)=\"cancel()\"></button>\n </header>\n <section class=\"modal-card-body\">\n <form [formGroup]=\"formGroup\" novalidate>\n <div class=\"field has-addons\">\n <div class=\"control is-expanded has-icons-right\">\n <input\n class=\"input search-input\"\n [attr.placeholder]=\"'Search bibliography by ' + searchBy()\"\n formControlName=\"search\"\n name=\"bibliography\"\n autocomplete=\"off\"\n (focus)=\"searchFocus($event)\" />\n <a class=\"icon is-small is-right\" [class.is-hidden]=\"loading()\" (click)=\"resetSearch()\">\n <fa-icon [icon]=\"faTimes\"></fa-icon>\n </a>\n\n <span class=\"icon is-right has-text-grey-dark\" [class.is-hidden]=\"!loading()\">\n <fa-icon [icon]=\"faSpinner\" [pulse]=\"true\" size=\"sm\"></fa-icon>\n </span>\n </div>\n </div>\n </form>\n\n <div class=\"is-mt-2\">\n <span [class.is-hidden]=\"loading() || !searchControl?.value || hasResults()\">\n No bibliographies found matching query.\n </span>\n\n <ul>\n @for (result of results(); track result) {\n <li>\n <a\n class=\"is-block p-1 search-result\"\n (click)=\"selectedResult.set(result)\"\n [class.is-active]=\"selectedResult() === result\">\n <ngb-highlight\n [result]=\"result.bibliography?.title ?? result.title\"\n [term]=\"searchControl?.value\"></ngb-highlight>\n <span class=\"px-1\">-</span>\n <span class=\"px-1\">\n <i>{{ result.name }}</i>\n </span>\n @if (result.bibliography?.documentDOI || result.documentDOI) {\n <span class=\"px-1\">\n -\n <b>documentDOI:</b>\n </span>\n }\n <ngb-highlight\n [result]=\"result.bibliography?.documentDOI ?? result.documentDOI\"\n [term]=\"searchControl?.value\"></ngb-highlight>\n @if (result.bibliography?.scopus || result.scopus) {\n <span class=\"px-1\">\n -\n <b>scopus:</b>\n </span>\n }\n <ngb-highlight\n [result]=\"result.bibliography?.scopus ?? result.scopus\"\n [term]=\"searchControl?.value\"></ngb-highlight>\n <span>\n <ng-container\n *ngTemplateOutlet=\"\n mendeleyLink;\n context: { $implicit: result.bibliography?.mendeleyID ?? result.mendeleyID }\n \"></ng-container>\n </span>\n </a>\n </li>\n }\n </ul>\n </div>\n </section>\n <footer class=\"modal-card-foot\">\n <button class=\"button is-primary\" (click)=\"confirm()\" [disabled]=\"!selectedResult()\">\n <span>Confirm</span>\n </button>\n <button class=\"button is-ghost\" (click)=\"cancel()\">\n <span>Close</span>\n </button>\n </footer>\n </div>\n</div>\n\n<ng-template #mendeleyLink let-id>\n @if (id) {\n <a [href]=\"'https://www.mendeley.com/catalogue/' + id\" target=\"_blank\" (click)=\"$event.stopPropagation()\">\n <fa-icon class=\"ml-2\" [icon]=\"faExternalLinkAlt\" size=\"sm\"></fa-icon>\n </a>\n }\n</ng-template>\n", styles: ["ngb-highlight,span{vertical-align:middle;white-space:normal;width:auto}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { 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: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "animation", "spin", "pulse", "mask", "styles", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "classes", "transform", "a11yRole"] }, { kind: "component", type: NgbHighlight, selector: "ngb-highlight", inputs: ["highlightClass", "result", "term", "accentSensitive"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
82
87
  }
83
88
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: BibliographiesSearchConfirmComponent, decorators: [{
84
89
  type: Component,
85
90
  args: [{ selector: 'he-bibliographies-search-confirm', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [FormsModule, ReactiveFormsModule, FaIconComponent, NgbHighlight, NgTemplateOutlet], template: "<div class=\"modal is-large is-active\">\n <div class=\"modal-background\"></div>\n <div class=\"modal-card\">\n <header class=\"modal-card-head\">\n <p class=\"modal-card-title\">Search Bibliographies</p>\n <button class=\"delete\" aria-label=\"close\" (click)=\"cancel()\"></button>\n </header>\n <section class=\"modal-card-body\">\n <form [formGroup]=\"formGroup\" novalidate>\n <div class=\"field has-addons\">\n <div class=\"control is-expanded has-icons-right\">\n <input\n class=\"input search-input\"\n [attr.placeholder]=\"'Search bibliography by ' + searchBy()\"\n formControlName=\"search\"\n name=\"bibliography\"\n autocomplete=\"off\"\n (focus)=\"searchFocus($event)\" />\n <a class=\"icon is-small is-right\" [class.is-hidden]=\"loading()\" (click)=\"resetSearch()\">\n <fa-icon [icon]=\"faTimes\"></fa-icon>\n </a>\n\n <span class=\"icon is-right has-text-grey-dark\" [class.is-hidden]=\"!loading()\">\n <fa-icon [icon]=\"faSpinner\" [pulse]=\"true\" size=\"sm\"></fa-icon>\n </span>\n </div>\n </div>\n </form>\n\n <div class=\"is-mt-2\">\n <span [class.is-hidden]=\"loading() || !searchControl?.value || hasResults()\">\n No bibliographies found matching query.\n </span>\n\n <ul>\n @for (result of results(); track result) {\n <li>\n <a\n class=\"is-block p-1 search-result\"\n (click)=\"selectedResult.set(result)\"\n [class.is-active]=\"selectedResult() === result\">\n <ngb-highlight\n [result]=\"result.bibliography?.title ?? result.title\"\n [term]=\"searchControl?.value\"></ngb-highlight>\n <span class=\"px-1\">-</span>\n <span class=\"px-1\">\n <i>{{ result.name }}</i>\n </span>\n @if (result.bibliography?.documentDOI || result.documentDOI) {\n <span class=\"px-1\">\n -\n <b>documentDOI:</b>\n </span>\n }\n <ngb-highlight\n [result]=\"result.bibliography?.documentDOI ?? result.documentDOI\"\n [term]=\"searchControl?.value\"></ngb-highlight>\n @if (result.bibliography?.scopus || result.scopus) {\n <span class=\"px-1\">\n -\n <b>scopus:</b>\n </span>\n }\n <ngb-highlight\n [result]=\"result.bibliography?.scopus ?? result.scopus\"\n [term]=\"searchControl?.value\"></ngb-highlight>\n <span>\n <ng-container\n *ngTemplateOutlet=\"\n mendeleyLink;\n context: { $implicit: result.bibliography?.mendeleyID ?? result.mendeleyID }\n \"></ng-container>\n </span>\n </a>\n </li>\n }\n </ul>\n </div>\n </section>\n <footer class=\"modal-card-foot\">\n <button class=\"button is-primary\" (click)=\"confirm()\" [disabled]=\"!selectedResult()\">\n <span>Confirm</span>\n </button>\n <button class=\"button is-ghost\" (click)=\"cancel()\">\n <span>Close</span>\n </button>\n </footer>\n </div>\n</div>\n\n<ng-template #mendeleyLink let-id>\n @if (id) {\n <a [href]=\"'https://www.mendeley.com/catalogue/' + id\" target=\"_blank\" (click)=\"$event.stopPropagation()\">\n <fa-icon class=\"ml-2\" [icon]=\"faExternalLinkAlt\" size=\"sm\"></fa-icon>\n </a>\n }\n</ng-template>\n", styles: ["ngb-highlight,span{vertical-align:middle;white-space:normal;width:auto}\n"] }]
86
91
  }], ctorParameters: () => [] });
87
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmlibGlvZ3JhcGhpZXMtc2VhcmNoLWNvbmZpcm0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2JpYmxpb2dyYXBoaWVzL2JpYmxpb2dyYXBoaWVzLXNlYXJjaC1jb25maXJtL2JpYmxpb2dyYXBoaWVzLXNlYXJjaC1jb25maXJtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3NyYy9iaWJsaW9ncmFwaGllcy9iaWJsaW9ncmFwaGllcy1zZWFyY2gtY29uZmlybS9iaWJsaW9ncmFwaGllcy1zZWFyY2gtY29uZmlybS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3BILE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2xHLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDbkUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUMxRixPQUFPLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxvQkFBb0IsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JHLE9BQU8sRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxD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Iiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgaW5qZWN0LCBpbnB1dCwgZWZmZWN0LCBzaWduYWwsIGNvbXB1dGVkLCBvdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHRvU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgVW50eXBlZEZvcm1CdWlsZGVyLCBWYWxpZGF0b3JzLCBGb3Jtc01vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE5nVGVtcGxhdGVPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTmdiSGlnaGxpZ2h0IH0gZnJvbSAnQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAnO1xuaW1wb3J0IHsgRmFJY29uQ29tcG9uZW50IH0gZnJvbSAnQGZvcnRhd2Vzb21lL2FuZ3VsYXItZm9udGF3ZXNvbWUnO1xuaW1wb3J0IHsgZmFFeHRlcm5hbExpbmtBbHQsIGZhU3Bpbm5lciwgZmFUaW1lcyB9IGZyb20gJ0Bmb3J0YXdlc29tZS9mcmVlLXNvbGlkLXN2Zy1pY29ucyc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBkZWJvdW5jZVRpbWUsIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBtYXAsIHN3aXRjaE1hcCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgb2YsIHppcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQmlibGlvZ3JhcGh5LCBTb3VyY2UgfSBmcm9tICdAaGVzdGlhLWVhcnRoL3NjaGVtYSc7XG5cbmltcG9ydCB7IEhlTWVuZGVsZXlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vbWVuZGVsZXkvbWVuZGVsZXkuc2VydmljZSc7XG5pbXBvcnQgeyBIZVNlYXJjaFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZWFyY2gvc2VhcmNoLnNlcnZpY2UnO1xuXG50eXBlIHNlYXJjaEJ5RmllbGRzID0gJ3RpdGxlJyB8ICdkb2N1bWVudERPSScgfCAnc2NvcHVzJztcbnR5cGUgUmVzdWx0ID0gUGFydGlhbDxTb3VyY2U+IHwgUGFydGlhbDxCaWJsaW9ncmFwaHk+O1xuY29uc3QgbGltaXQgPSAxMDtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnaGUtYmlibGlvZ3JhcGhpZXMtc2VhcmNoLWNvbmZpcm0nLFxuICB0ZW1wbGF0ZVVybDogJy4vYmlibGlvZ3JhcGhpZXMtc2VhcmNoLWNvbmZpcm0uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9iaWJsaW9ncmFwaGllcy1zZWFyY2gtY29uZmlybS5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0Zvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlLCBGYUljb25Db21wb25lbnQsIE5nYkhpZ2hsaWdodCwgTmdUZW1wbGF0ZU91dGxldF1cbn0pXG5leHBvcnQgY2xhc3MgQmlibGlvZ3JhcGhpZXNTZWFyY2hDb25maXJtQ29tcG9uZW50IHtcbiAgcHJpdmF0ZSBmb3JtQnVpbGRlciA9IGluamVjdChVbnR5cGVkRm9ybUJ1aWxkZXIpO1xuICBwcml2YXRlIG1lbmRlbGV5U2VydmljZSA9IGluamVjdChIZU1lbmRlbGV5U2VydmljZSk7XG4gIHByaXZhdGUgc2VhcmNoU2VydmljZSA9IGluamVjdChIZVNlYXJjaFNlcnZpY2UpO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBmYVRpbWVzID0gZmFUaW1lcztcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGZhU3Bpbm5lciA9IGZhU3Bpbm5lcjtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGZhRXh0ZXJuYWxMaW5rQWx0ID0gZmFFeHRlcm5hbExpbmtBbHQ7XG5cbiAgcHJvdGVjdGVkIHNlYXJjaCA9IGlucHV0KCcnKTtcblxuICBwcm90ZWN0ZWQgc2VhcmNoU291cmNlcyA9IGlucHV0KHRydWUpO1xuICBwcm90ZWN0ZWQgc2VhcmNoQmlibGlvZ3JhcGhpZXMgPSBpbnB1dCh0cnVlKTtcbiAgcHJvdGVjdGVkIHNlYXJjaEJ5ID0gaW5wdXQ8c2VhcmNoQnlGaWVsZHM+KCd0aXRsZScpO1xuXG4gIHByaXZhdGUgc2VhcmNoTGltaXQgPSBjb21wdXRlZChcbiAgICAoKSA9PiBsaW1pdCAvIChbdGhpcy5zZWFyY2hTb3VyY2VzKCksIHRoaXMuc2VhcmNoQmlibGlvZ3JhcGhpZXMoKV0uZmlsdGVyKEJvb2xlYW4pLmxlbmd0aCB8fCAxKVxuICApO1xuXG4gIHByb3RlY3RlZCBjbG9zZWQgPSBvdXRwdXQ8UmVzdWx0PigpO1xuXG4gIHByb3RlY3RlZCBsb2FkaW5nID0gc2lnbmFsKHRydWUpO1xuICBwcm90ZWN0ZWQgZm9ybUdyb3VwID0gdGhpcy5mb3JtQnVpbGRlci5ncm91cCh7XG4gICAgc2VhcmNoOiBbJycsIFZhbGlkYXRvcnMucmVxdWlyZWRdXG4gIH0pO1xuICBwcm90ZWN0ZWQgc2VhcmNoQ29udHJvbCA9IHRoaXMuZm9ybUdyb3VwLmdldCgnc2VhcmNoJyk7XG5cbiAgcHJpdmF0ZSBfcmVzdWx0cyA9IHRoaXMuc2VhcmNoQ29udHJvbCEudmFsdWVDaGFuZ2VzLnBpcGUoXG4gICAgZGVib3VuY2VUaW1lKDMwMCksXG4gICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICB0YXAoKCkgPT4gdGhpcy5sb2FkaW5nLnNldCh0cnVlKSksXG4gICAgdGFwKCgpID0+IHRoaXMuc2VsZWN0ZWRSZXN1bHQuc2V0KHVuZGVmaW5lZCkpLFxuICAgIHN3aXRjaE1hcCh0ZXJtID0+ICh0ZXJtLmxlbmd0aCA+IDEgPyB0aGlzLnJ1blNlYXJjaCh0ZXJtKSA6IG9mKFtdIGFzIGFueSkpKSxcbiAgICB0YXAoKCkgPT4gdGhpcy5sb2FkaW5nLnNldChmYWxzZSkpXG4gICk7XG4gIHByb3RlY3RlZCByZXN1bHRzID0gdG9TaWduYWwodGhpcy5fcmVzdWx0cyk7XG4gIHByb3RlY3RlZCBzZWxlY3RlZFJlc3VsdCA9IHNpZ25hbCh1bmRlZmluZWQgYXMgUmVzdWx0KTtcbiAgcHJvdGVjdGVkIGhhc1Jlc3VsdHMgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnJlc3VsdHMoKT8ubGVuZ3RoID4gMCk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgZWZmZWN0KCgpID0+IHtcbiAgICAgIGNvbnN0IHNlYXJjaCA9IHRoaXMuc2VhcmNoKCk7XG4gICAgICB0aGlzLnNlYXJjaENvbnRyb2whLnNldFZhbHVlKHNlYXJjaCB8fCAnJyk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHJ1blNlYXJjaFNvdXJjZXModGVybTogc3RyaW5nKSB7XG4gICAgY29uc3QgZmllbGRzID0gW2BiaWJsaW9ncmFwaHkuJHt0aGlzLnNlYXJjaEJ5fWBdO1xuICAgIGNvbnN0IGluY2x1ZGVzID0gWydiaWJsaW9ncmFwaHkudGl0bGUnLCAnYmlibGlvZ3JhcGh5LmRvY3VtZW50RE9JJywgJ2JpYmxpb2dyYXBoeS5zY29wdXMnXTtcbiAgICByZXR1cm4gdGhpcy5zZWFyY2hTb3VyY2VzXG4gICAgICA/IHRoaXMuc2VhcmNoU2VydmljZS5zdWdnZXN0U291cmNlJCh0ZXJtLCB0aGlzLnNlYXJjaExpbWl0KCksIGZpZWxkcywgaW5jbHVkZXMpXG4gICAgICA6IG9mKFtdIGFzIFBhcnRpYWw8U291cmNlPltdKTtcbiAgfVxuXG4gIHByaXZhdGUgcnVuU2VhcmNoQmlibGlvZ3JhcGhpZXModGVybTogc3RyaW5nKSB7XG4gICAgLy8gc2NvcHVzXG4gICAgY29uc3QgcGFyYW1zID1cbiAgICAgIHRoaXMuc2VhcmNoQnkoKSA9PT0gJ3RpdGxlJ1xuICAgICAgICA/IHsgdGl0bGU6IHRlcm0gfVxuICAgICAgICA6IHRoaXMuc2VhcmNoQnkoKSA9PT0gJ2RvY3VtZW50RE9JJ1xuICAgICAgICAgID8geyBkb2k6IHRlcm0gfVxuICAgICAgICAgIDogeyBzY29wdXM6IHRlcm0gfTtcbiAgICByZXR1cm4gdGhpcy5zZWFyY2hCaWJsaW9ncmFwaGllc1xuICAgICAgPyB0aGlzLm1lbmRlbGV5U2VydmljZS5maW5kKHsgLi4ucGFyYW1zLCBsaW1pdDogdGhpcy5zZWFyY2hMaW1pdCgpIH0pLnBpcGUobWFwKCh7IHJlc3VsdHMgfSkgPT4gcmVzdWx0cykpXG4gICAgICA6IG9mKFtdIGFzIFBhcnRpYWw8QmlibGlvZ3JhcGh5PltdKTtcbiAgfVxuXG4gIHByaXZhdGUgcnVuU2VhcmNoKHRlcm06IHN0cmluZykge1xuICAgIHJldHVybiB6aXAodGhpcy5ydW5TZWFyY2hTb3VyY2VzKHRlcm0pLCB0aGlzLnJ1blNlYXJjaEJpYmxpb2dyYXBoaWVzKHRlcm0pKS5waXBlKFxuICAgICAgY2F0Y2hFcnJvcigoKSA9PiBvZihbXSkpLFxuICAgICAgbWFwKHJlcyA9PiByZXMuZmxhdCgpKVxuICAgICk7XG4gIH1cblxuICBwcm90ZWN0ZWQgc2VhcmNoRm9jdXMoZTogRXZlbnQpIHtcbiAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgY29uc3QgaW5wdXRFdmVudCA9IG5ldyBFdmVudCgnaW5wdXQnKTtcbiAgICAgIGUudGFyZ2V0Py5kaXNwYXRjaEV2ZW50KGlucHV0RXZlbnQpO1xuICAgIH0sIDApO1xuICB9XG5cbiAgcHJvdGVjdGVkIHJlc2V0U2VhcmNoKCkge1xuICAgIHRoaXMuc2VhcmNoQ29udHJvbCEuc2V0VmFsdWUoJycpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGNvbmZpcm0oKSB7XG4gICAgdGhpcy5jbG9zZWQuZW1pdCh0aGlzLnNlbGVjdGVkUmVzdWx0KCkpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGNhbmNlbCgpIHtcbiAgICB0aGlzLmNsb3NlZC5lbWl0KG51bGwpO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwibW9kYWwgaXMtbGFyZ2UgaXMtYWN0aXZlXCI+XG4gIDxkaXYgY2xhc3M9XCJtb2RhbC1iYWNrZ3JvdW5kXCI+PC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJtb2RhbC1jYXJkXCI+XG4gICAgPGhlYWRlciBjbGFzcz1cIm1vZGFsLWNhcmQtaGVhZFwiPlxuICAgICAgPHAgY2xhc3M9XCJtb2RhbC1jYXJkLXRpdGxlXCI+U2VhcmNoIEJpYmxpb2dyYXBoaWVzPC9wPlxuICAgICAgPGJ1dHRvbiBjbGFzcz1cImRlbGV0ZVwiIGFyaWEtbGFiZWw9XCJjbG9zZVwiIChjbGljayk9XCJjYW5jZWwoKVwiPjwvYnV0dG9uPlxuICAgIDwvaGVhZGVyPlxuICAgIDxzZWN0aW9uIGNsYXNzPVwibW9kYWwtY2FyZC1ib2R5XCI+XG4gICAgICA8Zm9ybSBbZm9ybUdyb3VwXT1cImZvcm1Hcm91cFwiIG5vdmFsaWRhdGU+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmaWVsZCBoYXMtYWRkb25zXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRyb2wgaXMtZXhwYW5kZWQgaGFzLWljb25zLXJpZ2h0XCI+XG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgY2xhc3M9XCJpbnB1dCBzZWFyY2gtaW5wdXRcIlxuICAgICAgICAgICAgICBbYXR0ci5wbGFjZWhvbGRlcl09XCInU2VhcmNoIGJpYmxpb2dyYXBoeSBieSAnICsgc2VhcmNoQnkoKVwiXG4gICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInNlYXJjaFwiXG4gICAgICAgICAgICAgIG5hbWU9XCJiaWJsaW9ncmFwaHlcIlxuICAgICAgICAgICAgICBhdXRvY29tcGxldGU9XCJvZmZcIlxuICAgICAgICAgICAgICAoZm9jdXMpPVwic2VhcmNoRm9jdXMoJGV2ZW50KVwiIC8+XG4gICAgICAgICAgICA8YSBjbGFzcz1cImljb24gaXMtc21hbGwgaXMtcmlnaHRcIiBbY2xhc3MuaXMtaGlkZGVuXT1cImxvYWRpbmcoKVwiIChjbGljayk9XCJyZXNldFNlYXJjaCgpXCI+XG4gICAgICAgICAgICAgIDxmYS1pY29uIFtpY29uXT1cImZhVGltZXNcIj48L2ZhLWljb24+XG4gICAgICAgICAgICA8L2E+XG5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaWNvbiBpcy1yaWdodCBoYXMtdGV4dC1ncmV5LWRhcmtcIiBbY2xhc3MuaXMtaGlkZGVuXT1cIiFsb2FkaW5nKClcIj5cbiAgICAgICAgICAgICAgPGZhLWljb24gW2ljb25dPVwiZmFTcGlubmVyXCIgW3B1bHNlXT1cInRydWVcIiBzaXplPVwic21cIj48L2ZhLWljb24+XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9mb3JtPlxuXG4gICAgICA8ZGl2IGNsYXNzPVwiaXMtbXQtMlwiPlxuICAgICAgICA8c3BhbiBbY2xhc3MuaXMtaGlkZGVuXT1cImxvYWRpbmcoKSB8fCAhc2VhcmNoQ29udHJvbD8udmFsdWUgfHwgaGFzUmVzdWx0cygpXCI+XG4gICAgICAgICAgTm8gYmlibGlvZ3JhcGhpZXMgZm91bmQgbWF0Y2hpbmcgcXVlcnkuXG4gICAgICAgIDwvc3Bhbj5cblxuICAgICAgICA8dWw+XG4gICAgICAgICAgQGZvciAocmVzdWx0IG9mIHJlc3VsdHMoKTsgdHJhY2sgcmVzdWx0KSB7XG4gICAgICAgICAgICA8bGk+XG4gICAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJpcy1ibG9jayBwLTEgc2VhcmNoLXJlc3VsdFwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdGVkUmVzdWx0LnNldChyZXN1bHQpXCJcbiAgICAgICAgICAgICAgICBbY2xhc3MuaXMtYWN0aXZlXT1cInNlbGVjdGVkUmVzdWx0KCkgPT09IHJlc3VsdFwiPlxuICAgICAgICAgICAgICAgIDxuZ2ItaGlnaGxpZ2h0XG4gICAgICAgICAgICAgICAgICBbcmVzdWx0XT1cInJlc3VsdC5iaWJsaW9ncmFwaHk/LnRpdGxlID8/IHJlc3VsdC50aXRsZVwiXG4gICAgICAgICAgICAgICAgICBbdGVybV09XCJzZWFyY2hDb250cm9sPy52YWx1ZVwiPjwvbmdiLWhpZ2hsaWdodD5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInB4LTFcIj4tPC9zcGFuPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicHgtMVwiPlxuICAgICAgICAgICAgICAgICAgPGk+e3sgcmVzdWx0Lm5hbWUgfX08L2k+XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIEBpZiAocmVzdWx0LmJpYmxpb2dyYXBoeT8uZG9jdW1lbnRET0kgfHwgcmVzdWx0LmRvY3VtZW50RE9JKSB7XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInB4LTFcIj5cbiAgICAgICAgICAgICAgICAgICAgLVxuICAgICAgICAgICAgICAgICAgICA8Yj5kb2N1bWVudERPSTo8L2I+XG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDxuZ2ItaGlnaGxpZ2h0XG4gICAgICAgICAgICAgICAgICBbcmVzdWx0XT1cInJlc3VsdC5iaWJsaW9ncmFwaHk/LmRvY3VtZW50RE9JID8/IHJlc3VsdC5kb2N1bWVudERPSVwiXG4gICAgICAgICAgICAgICAgICBbdGVybV09XCJzZWFyY2hDb250cm9sPy52YWx1ZVwiPjwvbmdiLWhpZ2hsaWdodD5cbiAgICAgICAgICAgICAgICBAaWYgKHJlc3VsdC5iaWJsaW9ncmFwaHk/LnNjb3B1cyB8fCByZXN1bHQuc2NvcHVzKSB7XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInB4LTFcIj5cbiAgICAgICAgICAgICAgICAgICAgLVxuICAgICAgICAgICAgICAgICAgICA8Yj5zY29wdXM6PC9iPlxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8bmdiLWhpZ2hsaWdodFxuICAgICAgICAgICAgICAgICAgW3Jlc3VsdF09XCJyZXN1bHQuYmlibGlvZ3JhcGh5Py5zY29wdXMgPz8gcmVzdWx0LnNjb3B1c1wiXG4gICAgICAgICAgICAgICAgICBbdGVybV09XCJzZWFyY2hDb250cm9sPy52YWx1ZVwiPjwvbmdiLWhpZ2hsaWdodD5cbiAgICAgICAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAgICAgICAgICAgICBtZW5kZWxleUxpbms7XG4gICAgICAgICAgICAgICAgICAgICAgY29udGV4dDogeyAkaW1wbGljaXQ6IHJlc3VsdC5iaWJsaW9ncmFwaHk/Lm1lbmRlbGV5SUQgPz8gcmVzdWx0Lm1lbmRlbGV5SUQgfVxuICAgICAgICAgICAgICAgICAgICBcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgfVxuICAgICAgICA8L3VsPlxuICAgICAgPC9kaXY+XG4gICAgPC9zZWN0aW9uPlxuICAgIDxmb290ZXIgY2xhc3M9XCJtb2RhbC1jYXJkLWZvb3RcIj5cbiAgICAgIDxidXR0b24gY2xhc3M9XCJidXR0b24gaXMtcHJpbWFyeVwiIChjbGljayk9XCJjb25maXJtKClcIiBbZGlzYWJsZWRdPVwiIXNlbGVjdGVkUmVzdWx0KClcIj5cbiAgICAgICAgPHNwYW4+Q29uZmlybTwvc3Bhbj5cbiAgICAgIDwvYnV0dG9uPlxuICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ1dHRvbiBpcy1naG9zdFwiIChjbGljayk9XCJjYW5jZWwoKVwiPlxuICAgICAgICA8c3Bhbj5DbG9zZTwvc3Bhbj5cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvZm9vdGVyPlxuICA8L2Rpdj5cbjwvZGl2PlxuXG48bmctdGVtcGxhdGUgI21lbmRlbGV5TGluayBsZXQtaWQ+XG4gIEBpZiAoaWQpIHtcbiAgICA8YSBbaHJlZl09XCInaHR0cHM6Ly93d3cubWVuZGVsZXkuY29tL2NhdGFsb2d1ZS8nICsgaWRcIiB0YXJnZXQ9XCJfYmxhbmtcIiAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCI+XG4gICAgICA8ZmEtaWNvbiBjbGFzcz1cIm1sLTJcIiBbaWNvbl09XCJmYUV4dGVybmFsTGlua0FsdFwiIHNpemU9XCJzbVwiPjwvZmEtaWNvbj5cbiAgICA8L2E+XG4gIH1cbjwvbmctdGVtcGxhdGU+XG4iXX0=
92
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmlibGlvZ3JhcGhpZXMtc2VhcmNoLWNvbmZpcm0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2JpYmxpb2dyYXBoaWVzL2JpYmxpb2dyYXBoaWVzLXNlYXJjaC1jb25maXJtL2JpYmxpb2dyYXBoaWVzLXNlYXJjaC1jb25maXJtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3NyYy9iaWJsaW9ncmFwaGllcy9iaWJsaW9ncmFwaGllcy1zZWFyY2gtY29uZmlybS9iaWJsaW9ncmFwaGllcy1zZWFyY2gtY29uZmlybS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3BILE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2xHLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxjQUFjLEVBQUUsWUFBWSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDMUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDMUYsT0FBTyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsb0JBQW9CLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyRyxPQUFPLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxN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SEFpR0Esa0lEekVZLFdBQVcsMnBCQUFFLG1CQUFtQixnVkFBRSxlQUFlLGtQQUFFLFlBQVksMkhBQUUsZ0JBQWdCOzsyRkFFaEYsb0NBQW9DO2tCQVJoRCxTQUFTOytCQUNFLGtDQUFrQyxtQkFHM0IsdUJBQXVCLENBQUMsTUFBTSxjQUNuQyxJQUFJLFdBQ1AsQ0FBQyxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsZUFBZSxFQUFFLFlBQVksRUFBRSxnQkFBZ0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIGluamVjdCwgbW9kZWwsIGVmZmVjdCwgc2lnbmFsLCBjb21wdXRlZCwgb3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0b1NpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7IFVudHlwZWRGb3JtQnVpbGRlciwgVmFsaWRhdG9ycywgRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBOZ1RlbXBsYXRlT3V0bGV0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE5nYkFjdGl2ZU1vZGFsLCBOZ2JIaWdobGlnaHQgfSBmcm9tICdAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcCc7XG5pbXBvcnQgeyBGYUljb25Db21wb25lbnQgfSBmcm9tICdAZm9ydGF3ZXNvbWUvYW5ndWxhci1mb250YXdlc29tZSc7XG5pbXBvcnQgeyBmYUV4dGVybmFsTGlua0FsdCwgZmFTcGlubmVyLCBmYVRpbWVzIH0gZnJvbSAnQGZvcnRhd2Vzb21lL2ZyZWUtc29saWQtc3ZnLWljb25zJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIGRlYm91bmNlVGltZSwgZGlzdGluY3RVbnRpbENoYW5nZWQsIG1hcCwgc3dpdGNoTWFwLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBvZiwgemlwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBCaWJsaW9ncmFwaHksIFNvdXJjZSB9IGZyb20gJ0BoZXN0aWEtZWFydGgvc2NoZW1hJztcblxuaW1wb3J0IHsgSGVNZW5kZWxleVNlcnZpY2UgfSBmcm9tICcuLi8uLi9tZW5kZWxleS9tZW5kZWxleS5zZXJ2aWNlJztcbmltcG9ydCB7IEhlU2VhcmNoU2VydmljZSB9IGZyb20gJy4uLy4uL3NlYXJjaC9zZWFyY2guc2VydmljZSc7XG5cbnR5cGUgc2VhcmNoQnlGaWVsZHMgPSAndGl0bGUnIHwgJ2RvY3VtZW50RE9JJyB8ICdzY29wdXMnO1xudHlwZSBSZXN1bHQgPSBQYXJ0aWFsPFNvdXJjZT4gfCBQYXJ0aWFsPEJpYmxpb2dyYXBoeT47XG5jb25zdCBsaW1pdCA9IDEwO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdoZS1iaWJsaW9ncmFwaGllcy1zZWFyY2gtY29uZmlybScsXG4gIHRlbXBsYXRlVXJsOiAnLi9iaWJsaW9ncmFwaGllcy1zZWFyY2gtY29uZmlybS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2JpYmxpb2dyYXBoaWVzLXNlYXJjaC1jb25maXJtLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUsIEZhSWNvbkNvbXBvbmVudCwgTmdiSGlnaGxpZ2h0LCBOZ1RlbXBsYXRlT3V0bGV0XVxufSlcbmV4cG9ydCBjbGFzcyBCaWJsaW9ncmFwaGllc1NlYXJjaENvbmZpcm1Db21wb25lbnQge1xuICBwcml2YXRlIGZvcm1CdWlsZGVyID0gaW5qZWN0KFVudHlwZWRGb3JtQnVpbGRlcik7XG4gIHByaXZhdGUgbWVuZGVsZXlTZXJ2aWNlID0gaW5qZWN0KEhlTWVuZGVsZXlTZXJ2aWNlKTtcbiAgcHJpdmF0ZSBzZWFyY2hTZXJ2aWNlID0gaW5qZWN0KEhlU2VhcmNoU2VydmljZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgYWN0aXZlTW9kYWwgPSBpbmplY3QoTmdiQWN0aXZlTW9kYWwsIHsgb3B0aW9uYWw6IHRydWUgfSk7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGZhVGltZXMgPSBmYVRpbWVzO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZmFTcGlubmVyID0gZmFTcGlubmVyO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZmFFeHRlcm5hbExpbmtBbHQgPSBmYUV4dGVybmFsTGlua0FsdDtcblxuICBwcm90ZWN0ZWQgc2VhcmNoID0gbW9kZWwoJycpO1xuXG4gIHByb3RlY3RlZCBzZWFyY2hTb3VyY2VzID0gbW9kZWwodHJ1ZSk7XG4gIHByb3RlY3RlZCBzZWFyY2hCaWJsaW9ncmFwaGllcyA9IG1vZGVsKHRydWUpO1xuICBwcm90ZWN0ZWQgc2VhcmNoQnkgPSBtb2RlbDxzZWFyY2hCeUZpZWxkcz4oJ3RpdGxlJyk7XG5cbiAgcHJpdmF0ZSBzZWFyY2hMaW1pdCA9IGNvbXB1dGVkKFxuICAgICgpID0+IGxpbWl0IC8gKFt0aGlzLnNlYXJjaFNvdXJjZXMoKSwgdGhpcy5zZWFyY2hCaWJsaW9ncmFwaGllcygpXS5maWx0ZXIoQm9vbGVhbikubGVuZ3RoIHx8IDEpXG4gICk7XG5cbiAgcHJvdGVjdGVkIGNsb3NlZCA9IG91dHB1dDxSZXN1bHQ+KCk7XG5cbiAgcHJvdGVjdGVkIGxvYWRpbmcgPSBzaWduYWwodHJ1ZSk7XG4gIHByb3RlY3RlZCBmb3JtR3JvdXAgPSB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKHtcbiAgICBzZWFyY2g6IFsnJywgVmFsaWRhdG9ycy5yZXF1aXJlZF1cbiAgfSk7XG4gIHByb3RlY3RlZCBzZWFyY2hDb250cm9sID0gdGhpcy5mb3JtR3JvdXAuZ2V0KCdzZWFyY2gnKTtcblxuICBwcml2YXRlIF9yZXN1bHRzID0gdGhpcy5zZWFyY2hDb250cm9sIS52YWx1ZUNoYW5nZXMucGlwZShcbiAgICBkZWJvdW5jZVRpbWUoMzAwKSxcbiAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgIHRhcCgoKSA9PiB0aGlzLmxvYWRpbmcuc2V0KHRydWUpKSxcbiAgICB0YXAoKCkgPT4gdGhpcy5zZWxlY3RlZFJlc3VsdC5zZXQodW5kZWZpbmVkKSksXG4gICAgc3dpdGNoTWFwKHRlcm0gPT4gKHRlcm0ubGVuZ3RoID4gMSA/IHRoaXMucnVuU2VhcmNoKHRlcm0pIDogb2YoW10gYXMgYW55KSkpLFxuICAgIHRhcCgoKSA9PiB0aGlzLmxvYWRpbmcuc2V0KGZhbHNlKSlcbiAgKTtcbiAgcHJvdGVjdGVkIHJlc3VsdHMgPSB0b1NpZ25hbCh0aGlzLl9yZXN1bHRzKTtcbiAgcHJvdGVjdGVkIHNlbGVjdGVkUmVzdWx0ID0gc2lnbmFsKHVuZGVmaW5lZCBhcyBSZXN1bHQpO1xuICBwcm90ZWN0ZWQgaGFzUmVzdWx0cyA9IGNvbXB1dGVkKCgpID0+IHRoaXMucmVzdWx0cygpPy5sZW5ndGggPiAwKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgY29uc3Qgc2VhcmNoID0gdGhpcy5zZWFyY2goKTtcbiAgICAgIHRoaXMuc2VhcmNoQ29udHJvbCEuc2V0VmFsdWUoc2VhcmNoIHx8ICcnKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgcnVuU2VhcmNoU291cmNlcyh0ZXJtOiBzdHJpbmcpIHtcbiAgICBjb25zdCBmaWVsZHMgPSBbYGJpYmxpb2dyYXBoeS4ke3RoaXMuc2VhcmNoQnl9YF07XG4gICAgY29uc3QgaW5jbHVkZXMgPSBbJ2JpYmxpb2dyYXBoeS50aXRsZScsICdiaWJsaW9ncmFwaHkuZG9jdW1lbnRET0knLCAnYmlibGlvZ3JhcGh5LnNjb3B1cyddO1xuICAgIHJldHVybiB0aGlzLnNlYXJjaFNvdXJjZXNcbiAgICAgID8gdGhpcy5zZWFyY2hTZXJ2aWNlLnN1Z2dlc3RTb3VyY2UkKHRlcm0sIHRoaXMuc2VhcmNoTGltaXQoKSwgZmllbGRzLCBpbmNsdWRlcylcbiAgICAgIDogb2YoW10gYXMgUGFydGlhbDxTb3VyY2U+W10pO1xuICB9XG5cbiAgcHJpdmF0ZSBydW5TZWFyY2hCaWJsaW9ncmFwaGllcyh0ZXJtOiBzdHJpbmcpIHtcbiAgICAvLyBzY29wdXNcbiAgICBjb25zdCBwYXJhbXMgPVxuICAgICAgdGhpcy5zZWFyY2hCeSgpID09PSAndGl0bGUnXG4gICAgICAgID8geyB0aXRsZTogdGVybSB9XG4gICAgICAgIDogdGhpcy5zZWFyY2hCeSgpID09PSAnZG9jdW1lbnRET0knXG4gICAgICAgICAgPyB7IGRvaTogdGVybSB9XG4gICAgICAgICAgOiB7IHNjb3B1czogdGVybSB9O1xuICAgIHJldHVybiB0aGlzLnNlYXJjaEJpYmxpb2dyYXBoaWVzXG4gICAgICA/IHRoaXMubWVuZGVsZXlTZXJ2aWNlLmZpbmQoeyAuLi5wYXJhbXMsIGxpbWl0OiB0aGlzLnNlYXJjaExpbWl0KCkgfSkucGlwZShtYXAoKHsgcmVzdWx0cyB9KSA9PiByZXN1bHRzKSlcbiAgICAgIDogb2YoW10gYXMgUGFydGlhbDxCaWJsaW9ncmFwaHk+W10pO1xuICB9XG5cbiAgcHJpdmF0ZSBydW5TZWFyY2godGVybTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHppcCh0aGlzLnJ1blNlYXJjaFNvdXJjZXModGVybSksIHRoaXMucnVuU2VhcmNoQmlibGlvZ3JhcGhpZXModGVybSkpLnBpcGUoXG4gICAgICBjYXRjaEVycm9yKCgpID0+IG9mKFtdKSksXG4gICAgICBtYXAocmVzID0+IHJlcy5mbGF0KCkpXG4gICAgKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBzZWFyY2hGb2N1cyhlOiBFdmVudCkge1xuICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBjb25zdCBpbnB1dEV2ZW50ID0gbmV3IEV2ZW50KCdpbnB1dCcpO1xuICAgICAgZS50YXJnZXQ/LmRpc3BhdGNoRXZlbnQoaW5wdXRFdmVudCk7XG4gICAgfSwgMCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgcmVzZXRTZWFyY2goKSB7XG4gICAgdGhpcy5zZWFyY2hDb250cm9sIS5zZXRWYWx1ZSgnJyk7XG4gIH1cblxuICBwcm90ZWN0ZWQgY29uZmlybSgpIHtcbiAgICByZXR1cm4gdGhpcy5jbG9zZSh0aGlzLnNlbGVjdGVkUmVzdWx0KCkpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGNhbmNlbCgpIHtcbiAgICByZXR1cm4gdGhpcy5jbG9zZShudWxsKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBjbG9zZSh2YWx1ZSkge1xuICAgIHRoaXMuY2xvc2VkLmVtaXQodmFsdWUpO1xuICAgIHRoaXMuYWN0aXZlTW9kYWw/LmNsb3NlKHZhbHVlKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cIm1vZGFsIGlzLWxhcmdlIGlzLWFjdGl2ZVwiPlxuICA8ZGl2IGNsYXNzPVwibW9kYWwtYmFja2dyb3VuZFwiPjwvZGl2PlxuICA8ZGl2IGNsYXNzPVwibW9kYWwtY2FyZFwiPlxuICAgIDxoZWFkZXIgY2xhc3M9XCJtb2RhbC1jYXJkLWhlYWRcIj5cbiAgICAgIDxwIGNsYXNzPVwibW9kYWwtY2FyZC10aXRsZVwiPlNlYXJjaCBCaWJsaW9ncmFwaGllczwvcD5cbiAgICAgIDxidXR0b24gY2xhc3M9XCJkZWxldGVcIiBhcmlhLWxhYmVsPVwiY2xvc2VcIiAoY2xpY2spPVwiY2FuY2VsKClcIj48L2J1dHRvbj5cbiAgICA8L2hlYWRlcj5cbiAgICA8c2VjdGlvbiBjbGFzcz1cIm1vZGFsLWNhcmQtYm9keVwiPlxuICAgICAgPGZvcm0gW2Zvcm1Hcm91cF09XCJmb3JtR3JvdXBcIiBub3ZhbGlkYXRlPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmllbGQgaGFzLWFkZG9uc1wiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb250cm9sIGlzLWV4cGFuZGVkIGhhcy1pY29ucy1yaWdodFwiPlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgIGNsYXNzPVwiaW5wdXQgc2VhcmNoLWlucHV0XCJcbiAgICAgICAgICAgICAgW2F0dHIucGxhY2Vob2xkZXJdPVwiJ1NlYXJjaCBiaWJsaW9ncmFwaHkgYnkgJyArIHNlYXJjaEJ5KClcIlxuICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJzZWFyY2hcIlxuICAgICAgICAgICAgICBuYW1lPVwiYmlibGlvZ3JhcGh5XCJcbiAgICAgICAgICAgICAgYXV0b2NvbXBsZXRlPVwib2ZmXCJcbiAgICAgICAgICAgICAgKGZvY3VzKT1cInNlYXJjaEZvY3VzKCRldmVudClcIiAvPlxuICAgICAgICAgICAgPGEgY2xhc3M9XCJpY29uIGlzLXNtYWxsIGlzLXJpZ2h0XCIgW2NsYXNzLmlzLWhpZGRlbl09XCJsb2FkaW5nKClcIiAoY2xpY2spPVwicmVzZXRTZWFyY2goKVwiPlxuICAgICAgICAgICAgICA8ZmEtaWNvbiBbaWNvbl09XCJmYVRpbWVzXCI+PC9mYS1pY29uPlxuICAgICAgICAgICAgPC9hPlxuXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImljb24gaXMtcmlnaHQgaGFzLXRleHQtZ3JleS1kYXJrXCIgW2NsYXNzLmlzLWhpZGRlbl09XCIhbG9hZGluZygpXCI+XG4gICAgICAgICAgICAgIDxmYS1pY29uIFtpY29uXT1cImZhU3Bpbm5lclwiIFtwdWxzZV09XCJ0cnVlXCIgc2l6ZT1cInNtXCI+PC9mYS1pY29uPlxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZm9ybT5cblxuICAgICAgPGRpdiBjbGFzcz1cImlzLW10LTJcIj5cbiAgICAgICAgPHNwYW4gW2NsYXNzLmlzLWhpZGRlbl09XCJsb2FkaW5nKCkgfHwgIXNlYXJjaENvbnRyb2w/LnZhbHVlIHx8IGhhc1Jlc3VsdHMoKVwiPlxuICAgICAgICAgIE5vIGJpYmxpb2dyYXBoaWVzIGZvdW5kIG1hdGNoaW5nIHF1ZXJ5LlxuICAgICAgICA8L3NwYW4+XG5cbiAgICAgICAgPHVsPlxuICAgICAgICAgIEBmb3IgKHJlc3VsdCBvZiByZXN1bHRzKCk7IHRyYWNrIHJlc3VsdCkge1xuICAgICAgICAgICAgPGxpPlxuICAgICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgIGNsYXNzPVwiaXMtYmxvY2sgcC0xIHNlYXJjaC1yZXN1bHRcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RlZFJlc3VsdC5zZXQocmVzdWx0KVwiXG4gICAgICAgICAgICAgICAgW2NsYXNzLmlzLWFjdGl2ZV09XCJzZWxlY3RlZFJlc3VsdCgpID09PSByZXN1bHRcIj5cbiAgICAgICAgICAgICAgICA8bmdiLWhpZ2hsaWdodFxuICAgICAgICAgICAgICAgICAgW3Jlc3VsdF09XCJyZXN1bHQuYmlibGlvZ3JhcGh5Py50aXRsZSA/PyByZXN1bHQudGl0bGVcIlxuICAgICAgICAgICAgICAgICAgW3Rlcm1dPVwic2VhcmNoQ29udHJvbD8udmFsdWVcIj48L25nYi1oaWdobGlnaHQ+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJweC0xXCI+LTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInB4LTFcIj5cbiAgICAgICAgICAgICAgICAgIDxpPnt7IHJlc3VsdC5uYW1lIH19PC9pPlxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICBAaWYgKHJlc3VsdC5iaWJsaW9ncmFwaHk/LmRvY3VtZW50RE9JIHx8IHJlc3VsdC5kb2N1bWVudERPSSkge1xuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJweC0xXCI+XG4gICAgICAgICAgICAgICAgICAgIC1cbiAgICAgICAgICAgICAgICAgICAgPGI+ZG9jdW1lbnRET0k6PC9iPlxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8bmdiLWhpZ2hsaWdodFxuICAgICAgICAgICAgICAgICAgW3Jlc3VsdF09XCJyZXN1bHQuYmlibGlvZ3JhcGh5Py5kb2N1bWVudERPSSA/PyByZXN1bHQuZG9jdW1lbnRET0lcIlxuICAgICAgICAgICAgICAgICAgW3Rlcm1dPVwic2VhcmNoQ29udHJvbD8udmFsdWVcIj48L25nYi1oaWdobGlnaHQ+XG4gICAgICAgICAgICAgICAgQGlmIChyZXN1bHQuYmlibGlvZ3JhcGh5Py5zY29wdXMgfHwgcmVzdWx0LnNjb3B1cykge1xuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJweC0xXCI+XG4gICAgICAgICAgICAgICAgICAgIC1cbiAgICAgICAgICAgICAgICAgICAgPGI+c2NvcHVzOjwvYj5cbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPG5nYi1oaWdobGlnaHRcbiAgICAgICAgICAgICAgICAgIFtyZXN1bHRdPVwicmVzdWx0LmJpYmxpb2dyYXBoeT8uc2NvcHVzID8/IHJlc3VsdC5zY29wdXNcIlxuICAgICAgICAgICAgICAgICAgW3Rlcm1dPVwic2VhcmNoQ29udHJvbD8udmFsdWVcIj48L25nYi1oaWdobGlnaHQ+XG4gICAgICAgICAgICAgICAgPHNwYW4+XG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgICAgICAgICAgICAgbWVuZGVsZXlMaW5rO1xuICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IHsgJGltcGxpY2l0OiByZXN1bHQuYmlibGlvZ3JhcGh5Py5tZW5kZWxleUlEID8/IHJlc3VsdC5tZW5kZWxleUlEIH1cbiAgICAgICAgICAgICAgICAgICAgXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICA8L2xpPlxuICAgICAgICAgIH1cbiAgICAgICAgPC91bD5cbiAgICAgIDwvZGl2PlxuICAgIDwvc2VjdGlvbj5cbiAgICA8Zm9vdGVyIGNsYXNzPVwibW9kYWwtY2FyZC1mb290XCI+XG4gICAgICA8YnV0dG9uIGNsYXNzPVwiYnV0dG9uIGlzLXByaW1hcnlcIiAoY2xpY2spPVwiY29uZmlybSgpXCIgW2Rpc2FibGVkXT1cIiFzZWxlY3RlZFJlc3VsdCgpXCI+XG4gICAgICAgIDxzcGFuPkNvbmZpcm08L3NwYW4+XG4gICAgICA8L2J1dHRvbj5cbiAgICAgIDxidXR0b24gY2xhc3M9XCJidXR0b24gaXMtZ2hvc3RcIiAoY2xpY2spPVwiY2FuY2VsKClcIj5cbiAgICAgICAgPHNwYW4+Q2xvc2U8L3NwYW4+XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2Zvb3Rlcj5cbiAgPC9kaXY+XG48L2Rpdj5cblxuPG5nLXRlbXBsYXRlICNtZW5kZWxleUxpbmsgbGV0LWlkPlxuICBAaWYgKGlkKSB7XG4gICAgPGEgW2hyZWZdPVwiJ2h0dHBzOi8vd3d3Lm1lbmRlbGV5LmNvbS9jYXRhbG9ndWUvJyArIGlkXCIgdGFyZ2V0PVwiX2JsYW5rXCIgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiPlxuICAgICAgPGZhLWljb24gY2xhc3M9XCJtbC0yXCIgW2ljb25dPVwiZmFFeHRlcm5hbExpbmtBbHRcIiBzaXplPVwic21cIj48L2ZhLWljb24+XG4gICAgPC9hPlxuICB9XG48L25nLXRlbXBsYXRlPlxuIl19
@@ -36,7 +36,7 @@ const defaultDatasets = {
36
36
  };
37
37
  export class BarChartComponent {
38
38
  constructor() {
39
- this.data = input.required();
39
+ this.data = input([]);
40
40
  this.max = input();
41
41
  this.datasets = input([]);
42
42
  this.config = input({});
@@ -88,10 +88,10 @@ export class BarChartComponent {
88
88
  this.configuration = computed(() => merge(defaultSettings, this.defaultConfig(), this.config()));
89
89
  }
90
90
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: BarChartComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
91
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "17.3.8", type: BarChartComponent, isStandalone: true, selector: "he-bar-chart", inputs: { data: { classPropertyName: "data", publicName: "data", isSignal: true, isRequired: true, transformFunction: null }, max: { classPropertyName: "max", publicName: "max", isSignal: true, isRequired: false, transformFunction: null }, datasets: { classPropertyName: "datasets", publicName: "datasets", isSignal: true, isRequired: false, transformFunction: null }, config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<he-chart [data]=\"dataConfig()\" [config]=\"configuration()\"></he-chart>\n", styles: [":host{display:block}\n"], dependencies: [{ kind: "component", type: ChartComponent, selector: "he-chart", inputs: ["data", "config"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
91
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "17.3.8", type: BarChartComponent, isStandalone: true, selector: "he-bar-chart", inputs: { data: { classPropertyName: "data", publicName: "data", isSignal: true, isRequired: false, transformFunction: null }, max: { classPropertyName: "max", publicName: "max", isSignal: true, isRequired: false, transformFunction: null }, datasets: { classPropertyName: "datasets", publicName: "datasets", isSignal: true, isRequired: false, transformFunction: null }, config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<he-chart [data]=\"dataConfig()\" [config]=\"configuration()\"></he-chart>\n", styles: [":host{display:block}\n"], dependencies: [{ kind: "component", type: ChartComponent, selector: "he-chart", inputs: ["data", "config"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
92
92
  }
93
93
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: BarChartComponent, decorators: [{
94
94
  type: Component,
95
95
  args: [{ selector: 'he-bar-chart', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [ChartComponent], template: "<he-chart [data]=\"dataConfig()\" [config]=\"configuration()\"></he-chart>\n", styles: [":host{display:block}\n"] }]
96
96
  }] });
97
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFyLWNoYXJ0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jaGFydC9iYXItY2hhcnQvYmFyLWNoYXJ0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3NyYy9jaGFydC9iYXItY2hhcnQvYmFyLWNoYXJ0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUU1RixPQUFPLEtBQUssTUFBTSxjQUFjLENBQUM7QUFFakMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9CQUFvQixDQUFDOztBQVVwRCxNQUFNLGVBQWUsR0FBZ0M7SUFDbkQsSUFBSSxFQUFFLGVBQWU7SUFDckIsT0FBTyxFQUFFO1FBQ1AsTUFBTSxFQUFFLEVBQUU7UUFDVixTQUFTLEVBQUU7WUFDVCxRQUFRLEVBQUUsQ0FBQztTQUNaO1FBQ0QsUUFBUSxFQUFFO1lBQ1IsT0FBTyxFQUFFLEtBQUs7U0FDZjtRQUNELE1BQU0sRUFBRTtZQUNOLEtBQUssRUFBRTtnQkFDTDtvQkFDRSxPQUFPLEVBQUUsSUFBSTtvQkFDYixRQUFRLEVBQUUsTUFBTTtvQkFDaEIsU0FBUyxFQUFFO3dCQUNULE9BQU8sRUFBRSxLQUFLO3FCQUNmO29CQUNELEtBQUssRUFBRTt3QkFDTCxVQUFVLEVBQUUsUUFBUTtxQkFDZDtpQkFDVDthQUNGO1NBQ0Y7S0FDRjtDQUNGLENBQUM7QUFFRixNQUFNLGVBQWUsR0FBa0I7SUFDckMsYUFBYTtJQUNiLGFBQWEsRUFBRSxHQUFHO0lBQ2xCLFlBQVksRUFBRSxDQUFDO0lBQ2YsZUFBZSxFQUFFLEVBQUU7Q0FDcEIsQ0FBQztBQVVGLE1BQU0sT0FBTyxpQkFBaUI7SUFSOUI7UUFTWSxTQUFJLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBbUIsQ0FBQztRQUN6QyxRQUFHLEdBQUcsS0FBSyxFQUFVLENBQUM7UUFDdEIsYUFBUSxHQUFHLEtBQUssQ0FBMkIsRUFBRSxDQUFDLENBQUM7UUFDL0MsV0FBTSxHQUFHLEtBQUssQ0FBOEIsRUFBRSxDQUFDLENBQUM7UUFFbEQsY0FBUyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDcEUsa0JBQWEsR0FBd0MsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7WUFDM0UsT0FBTyxFQUFFO2dCQUNQLE1BQU0sRUFBRTtvQkFDTixLQUFLLEVBQUUsT0FBTztpQkFDZjtnQkFDRCxNQUFNLEVBQUU7b0JBQ04sS0FBSyxFQUFFO3dCQUNMOzRCQUNFLE9BQU8sRUFBRSxLQUFLOzRCQUNkLEtBQUssRUFBRTtnQ0FDTCxHQUFHLEVBQUUsQ0FBQztnQ0FDTixHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUU7NkJBQ3BCO3lCQUNGO3FCQUNGO29CQUNELEtBQUssRUFBRTt3QkFDTDs0QkFDRSxLQUFLLEVBQUU7Z0NBQ0wsU0FBUyxFQUFFLFNBQVM7Z0NBQ3BCLFVBQVUsRUFBRSxNQUFNO2dDQUNsQixRQUFRLEVBQUUsRUFBRTtnQ0FDWixTQUFTLEVBQUUsS0FBSzs2QkFDakI7eUJBQ0Y7cUJBQ0Y7aUJBQ0Y7YUFDRjtTQUNGLENBQUMsQ0FBQyxDQUFDO1FBRUksb0JBQWUsR0FBcUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUN4RSxJQUFJLENBQUMsUUFBUSxFQUFFLEVBQUUsTUFBTTtZQUNyQixDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNqQixDQUFDLENBQUM7Z0JBQ0U7b0JBQ0UsZUFBZTtvQkFDZixlQUFlLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsZUFBZSxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsQ0FBQyxlQUFlLElBQUksS0FBSyxDQUFDO29CQUMxRixXQUFXLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsQ0FBQyxXQUFXLElBQUksS0FBSyxDQUFDO29CQUM5RSxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQztpQkFDNUM7YUFDRixDQUNOLENBQUM7UUFFUSxlQUFVLEdBQXNCLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO1lBQ3hELElBQUksRUFBRTtnQkFDSixRQUFRLEVBQUUsSUFBSSxDQUFDLGVBQWUsRUFBRTtnQkFDaEMsTUFBTSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUM7YUFDOUM7U0FDRixDQUFDLENBQUMsQ0FBQztRQUNNLGtCQUFhLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQyxlQUFlLEVBQUUsSUFBSSxDQUFDLGFBQWEsRUFBRSxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUM7S0FDdkc7OEdBeERZLGlCQUFpQjtrR0FBakIsaUJBQWlCLHNqQkN4RDlCLDhFQUNBLGdGRHFEWSxjQUFjOzsyRkFFYixpQkFBaUI7a0JBUjdCLFNBQVM7K0JBQ0UsY0FBYyxtQkFHUCx1QkFBdUIsQ0FBQyxNQUFNLGNBQ25DLElBQUksV0FDUCxDQUFDLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIGNvbXB1dGVkLCBpbnB1dCwgU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDaGFydENvbmZpZ3VyYXRpb24sIENoYXJ0RGF0YSwgQ2hhcnREYXRhU2V0cyB9IGZyb20gJ2NoYXJ0LmpzJztcbmltcG9ydCBtZXJnZSBmcm9tICdsb2Rhc2gubWVyZ2UnO1xuXG5pbXBvcnQgeyBDaGFydENvbXBvbmVudCB9IGZyb20gJy4uL2NoYXJ0LmNvbXBvbmVudCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2hhcnREYXRhSXRlbSB7XG4gIGxhYmVsOiBzdHJpbmc7XG4gIGNvdW50OiBudW1iZXI7XG4gIGNvbG9yPzogc3RyaW5nO1xuICBiYWNrZ3JvdW5kQ29sb3I/OiBzdHJpbmc7XG4gIGJvcmRlckNvbG9yPzogc3RyaW5nO1xufVxuXG5jb25zdCBkZWZhdWx0U2V0dGluZ3M6IFBhcnRpYWw8Q2hhcnRDb25maWd1cmF0aW9uPiA9IHtcbiAgdHlwZTogJ2hvcml6b250YWxCYXInLFxuICBvcHRpb25zOiB7XG4gICAgZXZlbnRzOiBbXSxcbiAgICBhbmltYXRpb246IHtcbiAgICAgIGR1cmF0aW9uOiAwXG4gICAgfSxcbiAgICB0b29sdGlwczoge1xuICAgICAgZW5hYmxlZDogZmFsc2VcbiAgICB9LFxuICAgIHNjYWxlczoge1xuICAgICAgeUF4ZXM6IFtcbiAgICAgICAge1xuICAgICAgICAgIGRpc3BsYXk6IHRydWUsXG4gICAgICAgICAgcG9zaXRpb246ICdsZWZ0JyxcbiAgICAgICAgICBncmlkTGluZXM6IHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGZhbHNlXG4gICAgICAgICAgfSxcbiAgICAgICAgICB0aWNrczoge1xuICAgICAgICAgICAgY3Jvc3NBbGlnbjogJ2NlbnRlcidcbiAgICAgICAgICB9IGFzIGFueVxuICAgICAgICB9XG4gICAgICBdXG4gICAgfVxuICB9XG59O1xuXG5jb25zdCBkZWZhdWx0RGF0YXNldHM6IENoYXJ0RGF0YVNldHMgPSB7XG4gIC8vIGF4aXM6ICd5JyxcbiAgYmFyUGVyY2VudGFnZTogMC41LFxuICBiYXJUaGlja25lc3M6IDgsXG4gIG1heEJhclRoaWNrbmVzczogMTJcbn07XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2hlLWJhci1jaGFydCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9iYXItY2hhcnQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9iYXItY2hhcnQuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDaGFydENvbXBvbmVudF1cbn0pXG5leHBvcnQgY2xhc3MgQmFyQ2hhcnRDb21wb25lbnQge1xuICBwcm90ZWN0ZWQgZGF0YSA9IGlucHV0LnJlcXVpcmVkPENoYXJ0RGF0YUl0ZW1bXT4oKTtcbiAgcHJvdGVjdGVkIG1heCA9IGlucHV0PG51bWJlcj4oKTtcbiAgcHJvdGVjdGVkIGRhdGFzZXRzID0gaW5wdXQ8UGFydGlhbDxDaGFydERhdGFTZXRzPltdPihbXSk7XG4gIHByb3RlY3RlZCBjb25maWcgPSBpbnB1dDxQYXJ0aWFsPENoYXJ0Q29uZmlndXJhdGlvbj4+KHt9KTtcblxuICBwcml2YXRlIG1heENvbmZpZyA9IGNvbXB1dGVkKCgpID0+ICh0aGlzLm1heCgpID8geyBtYXg6IHRoaXMubWF4KCkgfSA6IHt9KSk7XG4gIHByaXZhdGUgZGVmYXVsdENvbmZpZzogU2lnbmFsPFBhcnRpYWw8Q2hhcnRDb25maWd1cmF0aW9uPj4gPSBjb21wdXRlZCgoKSA9PiAoe1xuICAgIG9wdGlvbnM6IHtcbiAgICAgIGxlZ2VuZDoge1xuICAgICAgICBhbGlnbjogJ3N0YXJ0J1xuICAgICAgfSxcbiAgICAgIHNjYWxlczoge1xuICAgICAgICB4QXhlczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGZhbHNlLFxuICAgICAgICAgICAgdGlja3M6IHtcbiAgICAgICAgICAgICAgbWluOiAwLFxuICAgICAgICAgICAgICAuLi50aGlzLm1heENvbmZpZygpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICBdLFxuICAgICAgICB5QXhlczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIHRpY2tzOiB7XG4gICAgICAgICAgICAgIGZvbnRDb2xvcjogJyM0QTRBNEEnLFxuICAgICAgICAgICAgICBmb250RmFtaWx5OiAnTGF0bycsXG4gICAgICAgICAgICAgIGZvbnRTaXplOiAxMCxcbiAgICAgICAgICAgICAgZm9udFN0eWxlOiAnNDAwJ1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgICAgfVxuICAgIH1cbiAgfSkpO1xuXG4gIHByaXZhdGUgZGVmYXVsdERhdGFzZXRzOiBTaWduYWw8UGFydGlhbDxDaGFydERhdGFTZXRzPltdPiA9IGNvbXB1dGVkKCgpID0+XG4gICAgdGhpcy5kYXRhc2V0cygpPy5sZW5ndGhcbiAgICAgID8gdGhpcy5kYXRhc2V0cygpXG4gICAgICA6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBkZWZhdWx0RGF0YXNldHMsXG4gICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IHRoaXMuZGF0YSgpLm1hcCgoeyBiYWNrZ3JvdW5kQ29sb3IsIGNvbG9yIH0pID0+IGJhY2tncm91bmRDb2xvciB8fCBjb2xvciksXG4gICAgICAgICAgICBib3JkZXJDb2xvcjogdGhpcy5kYXRhKCkubWFwKCh7IGJvcmRlckNvbG9yLCBjb2xvciB9KSA9PiBib3JkZXJDb2xvciB8fCBjb2xvciksXG4gICAgICAgICAgICBkYXRhOiB0aGlzLmRhdGEoKS5tYXAoKHsgY291bnQgfSkgPT4gY291bnQpXG4gICAgICAgICAgfVxuICAgICAgICBdXG4gICk7XG5cbiAgcHJvdGVjdGVkIGRhdGFDb25maWc6IFNpZ25hbDxDaGFydERhdGE+ID0gY29tcHV0ZWQoKCkgPT4gKHtcbiAgICBkYXRhOiB7XG4gICAgICBkYXRhc2V0czogdGhpcy5kZWZhdWx0RGF0YXNldHMoKSxcbiAgICAgIGxhYmVsczogdGhpcy5kYXRhKCkubWFwKCh7IGxhYmVsIH0pID0+IGxhYmVsKVxuICAgIH1cbiAgfSkpO1xuICBwcm90ZWN0ZWQgY29uZmlndXJhdGlvbiA9IGNvbXB1dGVkKCgpID0+IG1lcmdlKGRlZmF1bHRTZXR0aW5ncywgdGhpcy5kZWZhdWx0Q29uZmlnKCksIHRoaXMuY29uZmlnKCkpKTtcbn1cbiIsIjxoZS1jaGFydCBbZGF0YV09XCJkYXRhQ29uZmlnKClcIiBbY29uZmlnXT1cImNvbmZpZ3VyYXRpb24oKVwiPjwvaGUtY2hhcnQ+XG4iXX0=
97
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFyLWNoYXJ0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jaGFydC9iYXItY2hhcnQvYmFyLWNoYXJ0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3NyYy9jaGFydC9iYXItY2hhcnQvYmFyLWNoYXJ0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUU1RixPQUFPLEtBQUssTUFBTSxjQUFjLENBQUM7QUFFakMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9CQUFvQixDQUFDOztBQVVwRCxNQUFNLGVBQWUsR0FBZ0M7SUFDbkQsSUFBSSxFQUFFLGVBQWU7SUFDckIsT0FBTyxFQUFFO1FBQ1AsTUFBTSxFQUFFLEVBQUU7UUFDVixTQUFTLEVBQUU7WUFDVCxRQUFRLEVBQUUsQ0FBQztTQUNaO1FBQ0QsUUFBUSxFQUFFO1lBQ1IsT0FBTyxFQUFFLEtBQUs7U0FDZjtRQUNELE1BQU0sRUFBRTtZQUNOLEtBQUssRUFBRTtnQkFDTDtvQkFDRSxPQUFPLEVBQUUsSUFBSTtvQkFDYixRQUFRLEVBQUUsTUFBTTtvQkFDaEIsU0FBUyxFQUFFO3dCQUNULE9BQU8sRUFBRSxLQUFLO3FCQUNmO29CQUNELEtBQUssRUFBRTt3QkFDTCxVQUFVLEVBQUUsUUFBUTtxQkFDZDtpQkFDVDthQUNGO1NBQ0Y7S0FDRjtDQUNGLENBQUM7QUFFRixNQUFNLGVBQWUsR0FBa0I7SUFDckMsYUFBYTtJQUNiLGFBQWEsRUFBRSxHQUFHO0lBQ2xCLFlBQVksRUFBRSxDQUFDO0lBQ2YsZUFBZSxFQUFFLEVBQUU7Q0FDcEIsQ0FBQztBQVVGLE1BQU0sT0FBTyxpQkFBaUI7SUFSOUI7UUFTWSxTQUFJLEdBQUcsS0FBSyxDQUFrQixFQUFFLENBQUMsQ0FBQztRQUNsQyxRQUFHLEdBQUcsS0FBSyxFQUFVLENBQUM7UUFDdEIsYUFBUSxHQUFHLEtBQUssQ0FBMkIsRUFBRSxDQUFDLENBQUM7UUFDL0MsV0FBTSxHQUFHLEtBQUssQ0FBOEIsRUFBRSxDQUFDLENBQUM7UUFFbEQsY0FBUyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDcEUsa0JBQWEsR0FBd0MsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7WUFDM0UsT0FBTyxFQUFFO2dCQUNQLE1BQU0sRUFBRTtvQkFDTixLQUFLLEVBQUUsT0FBTztpQkFDZjtnQkFDRCxNQUFNLEVBQUU7b0JBQ04sS0FBSyxFQUFFO3dCQUNMOzRCQUNFLE9BQU8sRUFBRSxLQUFLOzRCQUNkLEtBQUssRUFBRTtnQ0FDTCxHQUFHLEVBQUUsQ0FBQztnQ0FDTixHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUU7NkJBQ3BCO3lCQUNGO3FCQUNGO29CQUNELEtBQUssRUFBRTt3QkFDTDs0QkFDRSxLQUFLLEVBQUU7Z0NBQ0wsU0FBUyxFQUFFLFNBQVM7Z0NBQ3BCLFVBQVUsRUFBRSxNQUFNO2dDQUNsQixRQUFRLEVBQUUsRUFBRTtnQ0FDWixTQUFTLEVBQUUsS0FBSzs2QkFDakI7eUJBQ0Y7cUJBQ0Y7aUJBQ0Y7YUFDRjtTQUNGLENBQUMsQ0FBQyxDQUFDO1FBRUksb0JBQWUsR0FBcUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUN4RSxJQUFJLENBQUMsUUFBUSxFQUFFLEVBQUUsTUFBTTtZQUNyQixDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNqQixDQUFDLENBQUM7Z0JBQ0U7b0JBQ0UsZUFBZTtvQkFDZixlQUFlLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsZUFBZSxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsQ0FBQyxlQUFlLElBQUksS0FBSyxDQUFDO29CQUMxRixXQUFXLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsQ0FBQyxXQUFXLElBQUksS0FBSyxDQUFDO29CQUM5RSxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQztpQkFDNUM7YUFDRixDQUNOLENBQUM7UUFFUSxlQUFVLEdBQXNCLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO1lBQ3hELElBQUksRUFBRTtnQkFDSixRQUFRLEVBQUUsSUFBSSxDQUFDLGVBQWUsRUFBRTtnQkFDaEMsTUFBTSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUM7YUFDOUM7U0FDRixDQUFDLENBQUMsQ0FBQztRQUNNLGtCQUFhLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQyxlQUFlLEVBQUUsSUFBSSxDQUFDLGFBQWEsRUFBRSxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUM7S0FDdkc7OEdBeERZLGlCQUFpQjtrR0FBakIsaUJBQWlCLHVqQkN4RDlCLDhFQUNBLGdGRHFEWSxjQUFjOzsyRkFFYixpQkFBaUI7a0JBUjdCLFNBQVM7K0JBQ0UsY0FBYyxtQkFHUCx1QkFBdUIsQ0FBQyxNQUFNLGNBQ25DLElBQUksV0FDUCxDQUFDLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIGNvbXB1dGVkLCBpbnB1dCwgU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDaGFydENvbmZpZ3VyYXRpb24sIENoYXJ0RGF0YSwgQ2hhcnREYXRhU2V0cyB9IGZyb20gJ2NoYXJ0LmpzJztcbmltcG9ydCBtZXJnZSBmcm9tICdsb2Rhc2gubWVyZ2UnO1xuXG5pbXBvcnQgeyBDaGFydENvbXBvbmVudCB9IGZyb20gJy4uL2NoYXJ0LmNvbXBvbmVudCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2hhcnREYXRhSXRlbSB7XG4gIGxhYmVsOiBzdHJpbmc7XG4gIGNvdW50OiBudW1iZXI7XG4gIGNvbG9yPzogc3RyaW5nO1xuICBiYWNrZ3JvdW5kQ29sb3I/OiBzdHJpbmc7XG4gIGJvcmRlckNvbG9yPzogc3RyaW5nO1xufVxuXG5jb25zdCBkZWZhdWx0U2V0dGluZ3M6IFBhcnRpYWw8Q2hhcnRDb25maWd1cmF0aW9uPiA9IHtcbiAgdHlwZTogJ2hvcml6b250YWxCYXInLFxuICBvcHRpb25zOiB7XG4gICAgZXZlbnRzOiBbXSxcbiAgICBhbmltYXRpb246IHtcbiAgICAgIGR1cmF0aW9uOiAwXG4gICAgfSxcbiAgICB0b29sdGlwczoge1xuICAgICAgZW5hYmxlZDogZmFsc2VcbiAgICB9LFxuICAgIHNjYWxlczoge1xuICAgICAgeUF4ZXM6IFtcbiAgICAgICAge1xuICAgICAgICAgIGRpc3BsYXk6IHRydWUsXG4gICAgICAgICAgcG9zaXRpb246ICdsZWZ0JyxcbiAgICAgICAgICBncmlkTGluZXM6IHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGZhbHNlXG4gICAgICAgICAgfSxcbiAgICAgICAgICB0aWNrczoge1xuICAgICAgICAgICAgY3Jvc3NBbGlnbjogJ2NlbnRlcidcbiAgICAgICAgICB9IGFzIGFueVxuICAgICAgICB9XG4gICAgICBdXG4gICAgfVxuICB9XG59O1xuXG5jb25zdCBkZWZhdWx0RGF0YXNldHM6IENoYXJ0RGF0YVNldHMgPSB7XG4gIC8vIGF4aXM6ICd5JyxcbiAgYmFyUGVyY2VudGFnZTogMC41LFxuICBiYXJUaGlja25lc3M6IDgsXG4gIG1heEJhclRoaWNrbmVzczogMTJcbn07XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2hlLWJhci1jaGFydCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9iYXItY2hhcnQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9iYXItY2hhcnQuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDaGFydENvbXBvbmVudF1cbn0pXG5leHBvcnQgY2xhc3MgQmFyQ2hhcnRDb21wb25lbnQge1xuICBwcm90ZWN0ZWQgZGF0YSA9IGlucHV0PENoYXJ0RGF0YUl0ZW1bXT4oW10pO1xuICBwcm90ZWN0ZWQgbWF4ID0gaW5wdXQ8bnVtYmVyPigpO1xuICBwcm90ZWN0ZWQgZGF0YXNldHMgPSBpbnB1dDxQYXJ0aWFsPENoYXJ0RGF0YVNldHM+W10+KFtdKTtcbiAgcHJvdGVjdGVkIGNvbmZpZyA9IGlucHV0PFBhcnRpYWw8Q2hhcnRDb25maWd1cmF0aW9uPj4oe30pO1xuXG4gIHByaXZhdGUgbWF4Q29uZmlnID0gY29tcHV0ZWQoKCkgPT4gKHRoaXMubWF4KCkgPyB7IG1heDogdGhpcy5tYXgoKSB9IDoge30pKTtcbiAgcHJpdmF0ZSBkZWZhdWx0Q29uZmlnOiBTaWduYWw8UGFydGlhbDxDaGFydENvbmZpZ3VyYXRpb24+PiA9IGNvbXB1dGVkKCgpID0+ICh7XG4gICAgb3B0aW9uczoge1xuICAgICAgbGVnZW5kOiB7XG4gICAgICAgIGFsaWduOiAnc3RhcnQnXG4gICAgICB9LFxuICAgICAgc2NhbGVzOiB7XG4gICAgICAgIHhBeGVzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgZGlzcGxheTogZmFsc2UsXG4gICAgICAgICAgICB0aWNrczoge1xuICAgICAgICAgICAgICBtaW46IDAsXG4gICAgICAgICAgICAgIC4uLnRoaXMubWF4Q29uZmlnKClcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIF0sXG4gICAgICAgIHlBeGVzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgdGlja3M6IHtcbiAgICAgICAgICAgICAgZm9udENvbG9yOiAnIzRBNEE0QScsXG4gICAgICAgICAgICAgIGZvbnRGYW1pbHk6ICdMYXRvJyxcbiAgICAgICAgICAgICAgZm9udFNpemU6IDEwLFxuICAgICAgICAgICAgICBmb250U3R5bGU6ICc0MDAnXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICBdXG4gICAgICB9XG4gICAgfVxuICB9KSk7XG5cbiAgcHJpdmF0ZSBkZWZhdWx0RGF0YXNldHM6IFNpZ25hbDxQYXJ0aWFsPENoYXJ0RGF0YVNldHM+W10+ID0gY29tcHV0ZWQoKCkgPT5cbiAgICB0aGlzLmRhdGFzZXRzKCk/Lmxlbmd0aFxuICAgICAgPyB0aGlzLmRhdGFzZXRzKClcbiAgICAgIDogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGRlZmF1bHREYXRhc2V0cyxcbiAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogdGhpcy5kYXRhKCkubWFwKCh7IGJhY2tncm91bmRDb2xvciwgY29sb3IgfSkgPT4gYmFja2dyb3VuZENvbG9yIHx8IGNvbG9yKSxcbiAgICAgICAgICAgIGJvcmRlckNvbG9yOiB0aGlzLmRhdGEoKS5tYXAoKHsgYm9yZGVyQ29sb3IsIGNvbG9yIH0pID0+IGJvcmRlckNvbG9yIHx8IGNvbG9yKSxcbiAgICAgICAgICAgIGRhdGE6IHRoaXMuZGF0YSgpLm1hcCgoeyBjb3VudCB9KSA9PiBjb3VudClcbiAgICAgICAgICB9XG4gICAgICAgIF1cbiAgKTtcblxuICBwcm90ZWN0ZWQgZGF0YUNvbmZpZzogU2lnbmFsPENoYXJ0RGF0YT4gPSBjb21wdXRlZCgoKSA9PiAoe1xuICAgIGRhdGE6IHtcbiAgICAgIGRhdGFzZXRzOiB0aGlzLmRlZmF1bHREYXRhc2V0cygpLFxuICAgICAgbGFiZWxzOiB0aGlzLmRhdGEoKS5tYXAoKHsgbGFiZWwgfSkgPT4gbGFiZWwpXG4gICAgfVxuICB9KSk7XG4gIHByb3RlY3RlZCBjb25maWd1cmF0aW9uID0gY29tcHV0ZWQoKCkgPT4gbWVyZ2UoZGVmYXVsdFNldHRpbmdzLCB0aGlzLmRlZmF1bHRDb25maWcoKSwgdGhpcy5jb25maWcoKSkpO1xufVxuIiwiPGhlLWNoYXJ0IFtkYXRhXT1cImRhdGFDb25maWcoKVwiIFtjb25maWddPVwiY29uZmlndXJhdGlvbigpXCI+PC9oZS1jaGFydD5cbiJdfQ==
@@ -21,10 +21,10 @@ export class ChartComponent {
21
21
  }));
22
22
  }
23
23
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: ChartComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
24
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "17.3.8", type: ChartComponent, isStandalone: true, selector: "he-chart", inputs: { data: { classPropertyName: "data", publicName: "data", isSignal: true, isRequired: false, transformFunction: null }, config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<div class=\"chart-container\" #container>\n <canvas [chartConfiguration]=\"configuration()\" [chartContainer]=\"container\"></canvas>\n</div>\n", styles: [":host{display:block;overflow:visible}.chart-container{height:100%;min-height:50px;position:relative}\n"], dependencies: [{ kind: "directive", type: ChartConfigurationDirective, selector: "[chartConfiguration]", inputs: ["chartConfiguration", "chartContainer"], exportAs: ["chart"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
24
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "17.3.8", type: ChartComponent, isStandalone: true, selector: "he-chart", inputs: { data: { classPropertyName: "data", publicName: "data", isSignal: true, isRequired: false, transformFunction: null }, config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<div class=\"chart-container\" #container>\n <canvas [chartConfiguration]=\"configuration()\" [chartContainer]=\"container\"></canvas>\n</div>\n", styles: [":host{display:block;height:100%;overflow:visible}.chart-container{height:100%;min-height:50px;position:relative}\n"], dependencies: [{ kind: "directive", type: ChartConfigurationDirective, selector: "[chartConfiguration]", inputs: ["chartConfiguration", "chartContainer"], exportAs: ["chart"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
25
25
  }
26
26
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: ChartComponent, decorators: [{
27
27
  type: Component,
28
- args: [{ selector: 'he-chart', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [ChartConfigurationDirective], template: "<div class=\"chart-container\" #container>\n <canvas [chartConfiguration]=\"configuration()\" [chartContainer]=\"container\"></canvas>\n</div>\n", styles: [":host{display:block;overflow:visible}.chart-container{height:100%;min-height:50px;position:relative}\n"] }]
28
+ args: [{ selector: 'he-chart', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [ChartConfigurationDirective], template: "<div class=\"chart-container\" #container>\n <canvas [chartConfiguration]=\"configuration()\" [chartContainer]=\"container\"></canvas>\n</div>\n", styles: [":host{display:block;height:100%;overflow:visible}.chart-container{height:100%;min-height:50px;position:relative}\n"] }]
29
29
  }] });
30
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhcnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NoYXJ0L2NoYXJ0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uL3NyYy9jaGFydC9jaGFydC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFcEYsT0FBTyxLQUFLLE1BQU0sY0FBYyxDQUFDO0FBRWpDLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDOztBQUU5RSxNQUFNLGVBQWUsR0FBZ0M7SUFDbkQsT0FBTyxFQUFFO1FBQ1AsVUFBVSxFQUFFLElBQUk7UUFDaEIsbUJBQW1CLEVBQUUsS0FBSztRQUMxQixNQUFNLEVBQUU7WUFDTixPQUFPLEVBQUUsS0FBSztTQUNmO0tBQ0Y7Q0FDRixDQUFDO0FBVUYsTUFBTSxPQUFPLGNBQWM7SUFSM0I7UUFTWSxTQUFJLEdBQUcsS0FBSyxDQUFZLEVBQUUsQ0FBQyxDQUFDO1FBQzVCLFdBQU0sR0FBRyxLQUFLLENBQThCLEVBQUUsQ0FBQyxDQUFDO1FBRWhELGtCQUFhLEdBQUcsUUFBUSxDQUNoQyxHQUF1QixFQUFFLENBQUMsQ0FBQztZQUN6QixHQUFHLEtBQUssQ0FBQyxlQUFlLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ3hDLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFO1NBQ2xCLENBQUMsQ0FDSCxDQUFDO0tBQ0g7OEdBVlksY0FBYztrR0FBZCxjQUFjLGdVQ3hCM0IsbUpBR0EsZ0tEbUJZLDJCQUEyQjs7MkZBRTFCLGNBQWM7a0JBUjFCLFNBQVM7K0JBQ0UsVUFBVSxtQkFHSCx1QkFBdUIsQ0FBQyxNQUFNLGNBQ25DLElBQUksV0FDUCxDQUFDLDJCQUEyQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgY29tcHV0ZWQsIGlucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDaGFydENvbmZpZ3VyYXRpb24sIENoYXJ0RGF0YSB9IGZyb20gJ2NoYXJ0LmpzJztcbmltcG9ydCBtZXJnZSBmcm9tICdsb2Rhc2gubWVyZ2UnO1xuXG5pbXBvcnQgeyBDaGFydENvbmZpZ3VyYXRpb25EaXJlY3RpdmUgfSBmcm9tICcuL2NoYXJ0LWNvbmZpZ3VyYXRpb24uZGlyZWN0aXZlJztcblxuY29uc3QgZGVmYXVsdFNldHRpbmdzOiBQYXJ0aWFsPENoYXJ0Q29uZmlndXJhdGlvbj4gPSB7XG4gIG9wdGlvbnM6IHtcbiAgICByZXNwb25zaXZlOiB0cnVlLFxuICAgIG1haW50YWluQXNwZWN0UmF0aW86IGZhbHNlLFxuICAgIGxlZ2VuZDoge1xuICAgICAgZGlzcGxheTogZmFsc2VcbiAgICB9XG4gIH1cbn07XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2hlLWNoYXJ0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NoYXJ0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY2hhcnQuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDaGFydENvbmZpZ3VyYXRpb25EaXJlY3RpdmVdXG59KVxuZXhwb3J0IGNsYXNzIENoYXJ0Q29tcG9uZW50IHtcbiAgcHJvdGVjdGVkIGRhdGEgPSBpbnB1dDxDaGFydERhdGE+KHt9KTtcbiAgcHJvdGVjdGVkIGNvbmZpZyA9IGlucHV0PFBhcnRpYWw8Q2hhcnRDb25maWd1cmF0aW9uPj4oe30pO1xuXG4gIHByb3RlY3RlZCBjb25maWd1cmF0aW9uID0gY29tcHV0ZWQoXG4gICAgKCk6IENoYXJ0Q29uZmlndXJhdGlvbiA9PiAoe1xuICAgICAgLi4ubWVyZ2UoZGVmYXVsdFNldHRpbmdzLCB0aGlzLmNvbmZpZygpKSxcbiAgICAgIGRhdGE6IHRoaXMuZGF0YSgpXG4gICAgfSlcbiAgKTtcbn1cbiIsIjxkaXYgY2xhc3M9XCJjaGFydC1jb250YWluZXJcIiAjY29udGFpbmVyPlxuICA8Y2FudmFzIFtjaGFydENvbmZpZ3VyYXRpb25dPVwiY29uZmlndXJhdGlvbigpXCIgW2NoYXJ0Q29udGFpbmVyXT1cImNvbnRhaW5lclwiPjwvY2FudmFzPlxuPC9kaXY+XG4iXX0=
30
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhcnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NoYXJ0L2NoYXJ0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uL3NyYy9jaGFydC9jaGFydC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFcEYsT0FBTyxLQUFLLE1BQU0sY0FBYyxDQUFDO0FBRWpDLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDOztBQUU5RSxNQUFNLGVBQWUsR0FBZ0M7SUFDbkQsT0FBTyxFQUFFO1FBQ1AsVUFBVSxFQUFFLElBQUk7UUFDaEIsbUJBQW1CLEVBQUUsS0FBSztRQUMxQixNQUFNLEVBQUU7WUFDTixPQUFPLEVBQUUsS0FBSztTQUNmO0tBQ0Y7Q0FDRixDQUFDO0FBVUYsTUFBTSxPQUFPLGNBQWM7SUFSM0I7UUFTWSxTQUFJLEdBQUcsS0FBSyxDQUFZLEVBQUUsQ0FBQyxDQUFDO1FBQzVCLFdBQU0sR0FBRyxLQUFLLENBQThCLEVBQUUsQ0FBQyxDQUFDO1FBRWhELGtCQUFhLEdBQUcsUUFBUSxDQUNoQyxHQUF1QixFQUFFLENBQUMsQ0FBQztZQUN6QixHQUFHLEtBQUssQ0FBQyxlQUFlLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ3hDLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFO1NBQ2xCLENBQUMsQ0FDSCxDQUFDO0tBQ0g7OEdBVlksY0FBYztrR0FBZCxjQUFjLGdVQ3hCM0IsbUpBR0EsNEtEbUJZLDJCQUEyQjs7MkZBRTFCLGNBQWM7a0JBUjFCLFNBQVM7K0JBQ0UsVUFBVSxtQkFHSCx1QkFBdUIsQ0FBQyxNQUFNLGNBQ25DLElBQUksV0FDUCxDQUFDLDJCQUEyQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgY29tcHV0ZWQsIGlucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDaGFydENvbmZpZ3VyYXRpb24sIENoYXJ0RGF0YSB9IGZyb20gJ2NoYXJ0LmpzJztcbmltcG9ydCBtZXJnZSBmcm9tICdsb2Rhc2gubWVyZ2UnO1xuXG5pbXBvcnQgeyBDaGFydENvbmZpZ3VyYXRpb25EaXJlY3RpdmUgfSBmcm9tICcuL2NoYXJ0LWNvbmZpZ3VyYXRpb24uZGlyZWN0aXZlJztcblxuY29uc3QgZGVmYXVsdFNldHRpbmdzOiBQYXJ0aWFsPENoYXJ0Q29uZmlndXJhdGlvbj4gPSB7XG4gIG9wdGlvbnM6IHtcbiAgICByZXNwb25zaXZlOiB0cnVlLFxuICAgIG1haW50YWluQXNwZWN0UmF0aW86IGZhbHNlLFxuICAgIGxlZ2VuZDoge1xuICAgICAgZGlzcGxheTogZmFsc2VcbiAgICB9XG4gIH1cbn07XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2hlLWNoYXJ0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NoYXJ0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY2hhcnQuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDaGFydENvbmZpZ3VyYXRpb25EaXJlY3RpdmVdXG59KVxuZXhwb3J0IGNsYXNzIENoYXJ0Q29tcG9uZW50IHtcbiAgcHJvdGVjdGVkIGRhdGEgPSBpbnB1dDxDaGFydERhdGE+KHt9KTtcbiAgcHJvdGVjdGVkIGNvbmZpZyA9IGlucHV0PFBhcnRpYWw8Q2hhcnRDb25maWd1cmF0aW9uPj4oe30pO1xuXG4gIHByb3RlY3RlZCBjb25maWd1cmF0aW9uID0gY29tcHV0ZWQoXG4gICAgKCk6IENoYXJ0Q29uZmlndXJhdGlvbiA9PiAoe1xuICAgICAgLi4ubWVyZ2UoZGVmYXVsdFNldHRpbmdzLCB0aGlzLmNvbmZpZygpKSxcbiAgICAgIGRhdGE6IHRoaXMuZGF0YSgpXG4gICAgfSlcbiAgKTtcbn1cbiIsIjxkaXYgY2xhc3M9XCJjaGFydC1jb250YWluZXJcIiAjY29udGFpbmVyPlxuICA8Y2FudmFzIFtjaGFydENvbmZpZ3VyYXRpb25dPVwiY29uZmlndXJhdGlvbigpXCIgW2NoYXJ0Q29udGFpbmVyXT1cImNvbnRhaW5lclwiPjwvY2FudmFzPlxuPC9kaXY+XG4iXX0=
@@ -1,15 +1,17 @@
1
- import { Component, computed, effect, input, output, signal } from '@angular/core';
1
+ import { Component, computed, effect, inject, model, output, signal } from '@angular/core';
2
+ import { FormsModule } from '@angular/forms';
3
+ import { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap';
2
4
  import { Repository, Template, reportIssueUrl } from '../utils';
3
5
  import { KeysPipe } from '../keys.pipe';
4
- import { FormsModule } from '@angular/forms';
5
6
  import * as i0 from "@angular/core";
6
7
  import * as i1 from "@angular/forms";
7
8
  export class IssueConfirmComponent {
8
9
  constructor() {
9
- this.title = input('Submit Feedback');
10
- this.repository = input();
11
- this.template = input();
12
- this.isCommunity = input(false);
10
+ this.activeModal = inject(NgbActiveModal, { optional: true });
11
+ this.title = model('Submit Feedback');
12
+ this.repository = model();
13
+ this.template = model();
14
+ this.isCommunity = model(false);
13
15
  this.closed = output();
14
16
  this.Repository = Repository;
15
17
  this.Template = Template;
@@ -28,11 +30,15 @@ export class IssueConfirmComponent {
28
30
  }
29
31
  }, { allowSignalWrites: true });
30
32
  }
33
+ close() {
34
+ this.closed.emit();
35
+ this.activeModal?.close();
36
+ }
31
37
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: IssueConfirmComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
32
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.8", type: IssueConfirmComponent, isStandalone: true, selector: "he-issue-confirm", inputs: { title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, repository: { classPropertyName: "repository", publicName: "repository", isSignal: true, isRequired: false, transformFunction: null }, template: { classPropertyName: "template", publicName: "template", isSignal: true, isRequired: false, transformFunction: null }, isCommunity: { classPropertyName: "isCommunity", publicName: "isCommunity", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { closed: "closed" }, ngImport: i0, template: "<div class=\"modal is-active\">\n <div class=\"modal-background\"></div>\n <div class=\"modal-card\">\n <header class=\"modal-card-head\">\n <p class=\"modal-card-title\">{{ title() }}</p>\n <button class=\"delete\" aria-label=\"close\" (click)=\"closed.emit(false)\"></button>\n </header>\n <section class=\"modal-card-body\">\n <p class=\"mb-2\">Please select the type of issue from the list below to start:</p>\n\n <div class=\"field is-horizontal my-3\">\n <div class=\"field-label is-normal\">\n <label class=\"label\" for=\"repository\">Category</label>\n </div>\n <div class=\"field-body\">\n <div class=\"field\">\n <div class=\"control is-expanded\">\n <div class=\"select is-multiple is-fullwidth\">\n <select\n [ngModel]=\"selectedRepository()\"\n (change)=\"selectedRepository.set($event.target.value)\"\n name=\"repository\"\n required>\n <option [ngValue]=\"undefined\">Select from the list</option>\n @for (repo of repositories(); track repo) {\n <option [value]=\"repo\">\n @switch (repo) {\n @case (Repository.glossary) {\n Glossary of terms / lookup issues\n }\n @case (Repository.models) {\n Calculation issues\n }\n @case (Repository.orchestrator) {\n Orchestration issues\n }\n @case (Repository.aggregation) {\n Aggregated Data issues\n }\n @case (Repository.community) {\n UI/UX or API issues\n }\n @case (Repository.poorenemeck) {\n Conversion from P&N Spreadsheet\n }\n @case (Repository.frontend) {\n Other issues\n }\n }\n </option>\n }\n </select>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n @if (repository()) {\n <div class=\"field is-horizontal my-3\">\n <div class=\"field-label is-normal\">\n <label class=\"label\" for=\"template\">Issue</label>\n </div>\n <div class=\"field-body\">\n <div class=\"field\">\n <div class=\"control is-expanded\">\n <div class=\"select is-multiple is-fullwidth\">\n <select\n [ngModel]=\"selectedTemplate()\"\n (change)=\"selectedTemplate.set($event.target.value)\"\n name=\"template\"\n required>\n <option [ngValue]=\"undefined\">Select from the list</option>\n @for (t of Template | keys; track t) {\n <option [value]=\"t.value\">\n @switch (t.value) {\n @case (Template.bug) {\n I found a bug\n }\n @case (Template.feature) {\n I would like a new feature\n }\n }\n </option>\n }\n </select>\n </div>\n </div>\n </div>\n </div>\n </div>\n }\n\n @if (issueUrl()) {\n <p>\n <span>Please report the issue on Gitlab using</span>\n <a class=\"pl-1\" [href]=\"issueUrl()\" target=\"_blank\">this link</a>\n .\n </p>\n }\n </section>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "pipe", type: KeysPipe, name: "keys" }] }); }
38
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.8", type: IssueConfirmComponent, isStandalone: true, selector: "he-issue-confirm", inputs: { title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, repository: { classPropertyName: "repository", publicName: "repository", isSignal: true, isRequired: false, transformFunction: null }, template: { classPropertyName: "template", publicName: "template", isSignal: true, isRequired: false, transformFunction: null }, isCommunity: { classPropertyName: "isCommunity", publicName: "isCommunity", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { title: "titleChange", repository: "repositoryChange", template: "templateChange", isCommunity: "isCommunityChange", closed: "closed" }, ngImport: i0, template: "<div class=\"modal is-active\">\n <div class=\"modal-background\"></div>\n <div class=\"modal-card\">\n <header class=\"modal-card-head\">\n <p class=\"modal-card-title\">{{ title() }}</p>\n <button class=\"delete\" aria-label=\"close\" (click)=\"close()\"></button>\n </header>\n <section class=\"modal-card-body\">\n <p class=\"mb-2\">Please select the type of issue from the list below to start:</p>\n\n <div class=\"field is-horizontal my-3\">\n <div class=\"field-label is-normal\">\n <label class=\"label\" for=\"repository\">Category</label>\n </div>\n <div class=\"field-body\">\n <div class=\"field\">\n <div class=\"control is-expanded\">\n <div class=\"select is-multiple is-fullwidth\">\n <select\n [ngModel]=\"selectedRepository()\"\n (change)=\"selectedRepository.set($event.target.value)\"\n name=\"repository\"\n required>\n <option [ngValue]=\"undefined\">Select from the list</option>\n @for (repo of repositories(); track repo) {\n <option [value]=\"repo\">\n @switch (repo) {\n @case (Repository.glossary) {\n Glossary of terms / lookup issues\n }\n @case (Repository.models) {\n Calculation issues\n }\n @case (Repository.orchestrator) {\n Orchestration issues\n }\n @case (Repository.aggregation) {\n Aggregated Data issues\n }\n @case (Repository.community) {\n UI/UX or API issues\n }\n @case (Repository.poorenemeck) {\n Conversion from P&N Spreadsheet\n }\n @case (Repository.frontend) {\n Other issues\n }\n }\n </option>\n }\n </select>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n @if (repository()) {\n <div class=\"field is-horizontal my-3\">\n <div class=\"field-label is-normal\">\n <label class=\"label\" for=\"template\">Issue</label>\n </div>\n <div class=\"field-body\">\n <div class=\"field\">\n <div class=\"control is-expanded\">\n <div class=\"select is-multiple is-fullwidth\">\n <select\n [ngModel]=\"selectedTemplate()\"\n (change)=\"selectedTemplate.set($event.target.value)\"\n name=\"template\"\n required>\n <option [ngValue]=\"undefined\">Select from the list</option>\n @for (t of Template | keys; track t) {\n <option [value]=\"t.value\">\n @switch (t.value) {\n @case (Template.bug) {\n I found a bug\n }\n @case (Template.feature) {\n I would like a new feature\n }\n }\n </option>\n }\n </select>\n </div>\n </div>\n </div>\n </div>\n </div>\n }\n\n @if (issueUrl()) {\n <p>\n <span>Please report the issue on Gitlab using</span>\n <a class=\"pl-1\" [href]=\"issueUrl()\" target=\"_blank\">this link</a>\n .\n </p>\n }\n </section>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "pipe", type: KeysPipe, name: "keys" }] }); }
33
39
  }
34
40
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: IssueConfirmComponent, decorators: [{
35
41
  type: Component,
36
- args: [{ selector: 'he-issue-confirm', standalone: true, imports: [FormsModule, KeysPipe], template: "<div class=\"modal is-active\">\n <div class=\"modal-background\"></div>\n <div class=\"modal-card\">\n <header class=\"modal-card-head\">\n <p class=\"modal-card-title\">{{ title() }}</p>\n <button class=\"delete\" aria-label=\"close\" (click)=\"closed.emit(false)\"></button>\n </header>\n <section class=\"modal-card-body\">\n <p class=\"mb-2\">Please select the type of issue from the list below to start:</p>\n\n <div class=\"field is-horizontal my-3\">\n <div class=\"field-label is-normal\">\n <label class=\"label\" for=\"repository\">Category</label>\n </div>\n <div class=\"field-body\">\n <div class=\"field\">\n <div class=\"control is-expanded\">\n <div class=\"select is-multiple is-fullwidth\">\n <select\n [ngModel]=\"selectedRepository()\"\n (change)=\"selectedRepository.set($event.target.value)\"\n name=\"repository\"\n required>\n <option [ngValue]=\"undefined\">Select from the list</option>\n @for (repo of repositories(); track repo) {\n <option [value]=\"repo\">\n @switch (repo) {\n @case (Repository.glossary) {\n Glossary of terms / lookup issues\n }\n @case (Repository.models) {\n Calculation issues\n }\n @case (Repository.orchestrator) {\n Orchestration issues\n }\n @case (Repository.aggregation) {\n Aggregated Data issues\n }\n @case (Repository.community) {\n UI/UX or API issues\n }\n @case (Repository.poorenemeck) {\n Conversion from P&N Spreadsheet\n }\n @case (Repository.frontend) {\n Other issues\n }\n }\n </option>\n }\n </select>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n @if (repository()) {\n <div class=\"field is-horizontal my-3\">\n <div class=\"field-label is-normal\">\n <label class=\"label\" for=\"template\">Issue</label>\n </div>\n <div class=\"field-body\">\n <div class=\"field\">\n <div class=\"control is-expanded\">\n <div class=\"select is-multiple is-fullwidth\">\n <select\n [ngModel]=\"selectedTemplate()\"\n (change)=\"selectedTemplate.set($event.target.value)\"\n name=\"template\"\n required>\n <option [ngValue]=\"undefined\">Select from the list</option>\n @for (t of Template | keys; track t) {\n <option [value]=\"t.value\">\n @switch (t.value) {\n @case (Template.bug) {\n I found a bug\n }\n @case (Template.feature) {\n I would like a new feature\n }\n }\n </option>\n }\n </select>\n </div>\n </div>\n </div>\n </div>\n </div>\n }\n\n @if (issueUrl()) {\n <p>\n <span>Please report the issue on Gitlab using</span>\n <a class=\"pl-1\" [href]=\"issueUrl()\" target=\"_blank\">this link</a>\n .\n </p>\n }\n </section>\n </div>\n</div>\n" }]
42
+ args: [{ selector: 'he-issue-confirm', standalone: true, imports: [FormsModule, KeysPipe], template: "<div class=\"modal is-active\">\n <div class=\"modal-background\"></div>\n <div class=\"modal-card\">\n <header class=\"modal-card-head\">\n <p class=\"modal-card-title\">{{ title() }}</p>\n <button class=\"delete\" aria-label=\"close\" (click)=\"close()\"></button>\n </header>\n <section class=\"modal-card-body\">\n <p class=\"mb-2\">Please select the type of issue from the list below to start:</p>\n\n <div class=\"field is-horizontal my-3\">\n <div class=\"field-label is-normal\">\n <label class=\"label\" for=\"repository\">Category</label>\n </div>\n <div class=\"field-body\">\n <div class=\"field\">\n <div class=\"control is-expanded\">\n <div class=\"select is-multiple is-fullwidth\">\n <select\n [ngModel]=\"selectedRepository()\"\n (change)=\"selectedRepository.set($event.target.value)\"\n name=\"repository\"\n required>\n <option [ngValue]=\"undefined\">Select from the list</option>\n @for (repo of repositories(); track repo) {\n <option [value]=\"repo\">\n @switch (repo) {\n @case (Repository.glossary) {\n Glossary of terms / lookup issues\n }\n @case (Repository.models) {\n Calculation issues\n }\n @case (Repository.orchestrator) {\n Orchestration issues\n }\n @case (Repository.aggregation) {\n Aggregated Data issues\n }\n @case (Repository.community) {\n UI/UX or API issues\n }\n @case (Repository.poorenemeck) {\n Conversion from P&N Spreadsheet\n }\n @case (Repository.frontend) {\n Other issues\n }\n }\n </option>\n }\n </select>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n @if (repository()) {\n <div class=\"field is-horizontal my-3\">\n <div class=\"field-label is-normal\">\n <label class=\"label\" for=\"template\">Issue</label>\n </div>\n <div class=\"field-body\">\n <div class=\"field\">\n <div class=\"control is-expanded\">\n <div class=\"select is-multiple is-fullwidth\">\n <select\n [ngModel]=\"selectedTemplate()\"\n (change)=\"selectedTemplate.set($event.target.value)\"\n name=\"template\"\n required>\n <option [ngValue]=\"undefined\">Select from the list</option>\n @for (t of Template | keys; track t) {\n <option [value]=\"t.value\">\n @switch (t.value) {\n @case (Template.bug) {\n I found a bug\n }\n @case (Template.feature) {\n I would like a new feature\n }\n }\n </option>\n }\n </select>\n </div>\n </div>\n </div>\n </div>\n </div>\n }\n\n @if (issueUrl()) {\n <p>\n <span>Please report the issue on Gitlab using</span>\n <a class=\"pl-1\" [href]=\"issueUrl()\" target=\"_blank\">this link</a>\n .\n </p>\n }\n </section>\n </div>\n</div>\n" }]
37
43
  }], ctorParameters: () => [] });
38
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXNzdWUtY29uZmlybS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29tbW9uL2lzc3VlLWNvbmZpcm0vaXNzdWUtY29uZmlybS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9zcmMvY29tbW9uL2lzc3VlLWNvbmZpcm0vaXNzdWUtY29uZmlybS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFbkYsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsY0FBYyxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ2hFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDeEMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7QUFTN0MsTUFBTSxPQUFPLHFCQUFxQjtJQW9CaEM7UUFuQlUsVUFBSyxHQUFHLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQ2pDLGVBQVUsR0FBRyxLQUFLLEVBQWMsQ0FBQztRQUNqQyxhQUFRLEdBQUcsS0FBSyxFQUFZLENBQUM7UUFDN0IsZ0JBQVcsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFM0IsV0FBTSxHQUFHLE1BQU0sRUFBVyxDQUFDO1FBRTNCLGVBQVUsR0FBRyxVQUFVLENBQUM7UUFDeEIsYUFBUSxHQUFHLFFBQVEsQ0FBQztRQUNwQixpQkFBWSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FDckMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLEtBQUssVUFBVSxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FDaEcsQ0FBQztRQUNRLGFBQVEsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQ2pDLElBQUksQ0FBQyxVQUFVLEVBQUUsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FDakcsQ0FBQztRQUVRLHVCQUFrQixHQUFHLE1BQU0sQ0FBYSxTQUFTLENBQUMsQ0FBQztRQUNuRCxxQkFBZ0IsR0FBRyxNQUFNLENBQVcsU0FBUyxDQUFDLENBQUM7UUFHdkQsTUFBTSxDQUNKLEdBQUcsRUFBRTtZQUNILElBQUksQ0FBQyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQztnQkFDcEQsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQztZQUNqRCxDQUFDO1FBQ0gsQ0FBQyxFQUNELEVBQUUsaUJBQWlCLEVBQUUsSUFBSSxFQUFFLENBQzVCLENBQUM7UUFFRixNQUFNLENBQ0osR0FBRyxFQUFFO1lBQ0gsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDO2dCQUNoRCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1lBQzdDLENBQUM7UUFDSCxDQUFDLEVBQ0QsRUFBRSxpQkFBaUIsRUFBRSxJQUFJLEVBQUUsQ0FDNUIsQ0FBQztJQUNKLENBQUM7OEdBdENVLHFCQUFxQjtrR0FBckIscUJBQXFCLGlvQkNibEMsKzVIQXVHQSx5REQ1RlksV0FBVyxrOUJBQUUsUUFBUTs7MkZBRXBCLHFCQUFxQjtrQkFQakMsU0FBUzsrQkFDRSxrQkFBa0IsY0FHaEIsSUFBSSxXQUNQLENBQUMsV0FBVyxFQUFFLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgY29tcHV0ZWQsIGVmZmVjdCwgaW5wdXQsIG91dHB1dCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IFJlcG9zaXRvcnksIFRlbXBsYXRlLCByZXBvcnRJc3N1ZVVybCB9IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCB7IEtleXNQaXBlIH0gZnJvbSAnLi4va2V5cy5waXBlJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdoZS1pc3N1ZS1jb25maXJtJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2lzc3VlLWNvbmZpcm0uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9pc3N1ZS1jb25maXJtLmNvbXBvbmVudC5zY3NzJ10sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtGb3Jtc01vZHVsZSwgS2V5c1BpcGVdXG59KVxuZXhwb3J0IGNsYXNzIElzc3VlQ29uZmlybUNvbXBvbmVudCB7XG4gIHByb3RlY3RlZCB0aXRsZSA9IGlucHV0KCdTdWJtaXQgRmVlZGJhY2snKTtcbiAgcHJvdGVjdGVkIHJlcG9zaXRvcnkgPSBpbnB1dDxSZXBvc2l0b3J5PigpO1xuICBwcm90ZWN0ZWQgdGVtcGxhdGUgPSBpbnB1dDxUZW1wbGF0ZT4oKTtcbiAgcHJvdGVjdGVkIGlzQ29tbXVuaXR5ID0gaW5wdXQoZmFsc2UpO1xuXG4gIHByb3RlY3RlZCBjbG9zZWQgPSBvdXRwdXQ8Ym9vbGVhbj4oKTtcblxuICBwcm90ZWN0ZWQgUmVwb3NpdG9yeSA9IFJlcG9zaXRvcnk7XG4gIHByb3RlY3RlZCBUZW1wbGF0ZSA9IFRlbXBsYXRlO1xuICBwcm90ZWN0ZWQgcmVwb3NpdG9yaWVzID0gY29tcHV0ZWQoKCkgPT5cbiAgICBPYmplY3QudmFsdWVzKFJlcG9zaXRvcnkpLmZpbHRlcih2YWx1ZSA9PiB2YWx1ZSAhPT0gUmVwb3NpdG9yeS5jb21tdW5pdHkgfHwgdGhpcy5pc0NvbW11bml0eSgpKVxuICApO1xuICBwcm90ZWN0ZWQgaXNzdWVVcmwgPSBjb21wdXRlZCgoKSA9PlxuICAgIHRoaXMucmVwb3NpdG9yeSgpICYmIHRoaXMudGVtcGxhdGUoKSA/IHJlcG9ydElzc3VlVXJsKHRoaXMucmVwb3NpdG9yeSgpLCB0aGlzLnRlbXBsYXRlKCkpIDogbnVsbFxuICApO1xuXG4gIHByb3RlY3RlZCBzZWxlY3RlZFJlcG9zaXRvcnkgPSBzaWduYWw8UmVwb3NpdG9yeT4odW5kZWZpbmVkKTtcbiAgcHJvdGVjdGVkIHNlbGVjdGVkVGVtcGxhdGUgPSBzaWduYWw8VGVtcGxhdGU+KHVuZGVmaW5lZCk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgZWZmZWN0KFxuICAgICAgKCkgPT4ge1xuICAgICAgICBpZiAoIXRoaXMuc2VsZWN0ZWRSZXBvc2l0b3J5KCkgJiYgdGhpcy5yZXBvc2l0b3J5KCkpIHtcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkUmVwb3NpdG9yeS5zZXQodGhpcy5yZXBvc2l0b3J5KCkpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgeyBhbGxvd1NpZ25hbFdyaXRlczogdHJ1ZSB9XG4gICAgKTtcblxuICAgIGVmZmVjdChcbiAgICAgICgpID0+IHtcbiAgICAgICAgaWYgKCF0aGlzLnNlbGVjdGVkVGVtcGxhdGUoKSAmJiB0aGlzLnRlbXBsYXRlKCkpIHtcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkVGVtcGxhdGUuc2V0KHRoaXMudGVtcGxhdGUoKSk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB7IGFsbG93U2lnbmFsV3JpdGVzOiB0cnVlIH1cbiAgICApO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwibW9kYWwgaXMtYWN0aXZlXCI+XG4gIDxkaXYgY2xhc3M9XCJtb2RhbC1iYWNrZ3JvdW5kXCI+PC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJtb2RhbC1jYXJkXCI+XG4gICAgPGhlYWRlciBjbGFzcz1cIm1vZGFsLWNhcmQtaGVhZFwiPlxuICAgICAgPHAgY2xhc3M9XCJtb2RhbC1jYXJkLXRpdGxlXCI+e3sgdGl0bGUoKSB9fTwvcD5cbiAgICAgIDxidXR0b24gY2xhc3M9XCJkZWxldGVcIiBhcmlhLWxhYmVsPVwiY2xvc2VcIiAoY2xpY2spPVwiY2xvc2VkLmVtaXQoZmFsc2UpXCI+PC9idXR0b24+XG4gICAgPC9oZWFkZXI+XG4gICAgPHNlY3Rpb24gY2xhc3M9XCJtb2RhbC1jYXJkLWJvZHlcIj5cbiAgICAgIDxwIGNsYXNzPVwibWItMlwiPlBsZWFzZSBzZWxlY3QgdGhlIHR5cGUgb2YgaXNzdWUgZnJvbSB0aGUgbGlzdCBiZWxvdyB0byBzdGFydDo8L3A+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJmaWVsZCBpcy1ob3Jpem9udGFsIG15LTNcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZpZWxkLWxhYmVsIGlzLW5vcm1hbFwiPlxuICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImxhYmVsXCIgZm9yPVwicmVwb3NpdG9yeVwiPkNhdGVnb3J5PC9sYWJlbD5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmaWVsZC1ib2R5XCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZpZWxkXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29udHJvbCBpcy1leHBhbmRlZFwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VsZWN0IGlzLW11bHRpcGxlIGlzLWZ1bGx3aWR0aFwiPlxuICAgICAgICAgICAgICAgIDxzZWxlY3RcbiAgICAgICAgICAgICAgICAgIFtuZ01vZGVsXT1cInNlbGVjdGVkUmVwb3NpdG9yeSgpXCJcbiAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwic2VsZWN0ZWRSZXBvc2l0b3J5LnNldCgkZXZlbnQudGFyZ2V0LnZhbHVlKVwiXG4gICAgICAgICAgICAgICAgICBuYW1lPVwicmVwb3NpdG9yeVwiXG4gICAgICAgICAgICAgICAgICByZXF1aXJlZD5cbiAgICAgICAgICAgICAgICAgIDxvcHRpb24gW25nVmFsdWVdPVwidW5kZWZpbmVkXCI+U2VsZWN0IGZyb20gdGhlIGxpc3Q8L29wdGlvbj5cbiAgICAgICAgICAgICAgICAgIEBmb3IgKHJlcG8gb2YgcmVwb3NpdG9yaWVzKCk7IHRyYWNrIHJlcG8pIHtcbiAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiBbdmFsdWVdPVwicmVwb1wiPlxuICAgICAgICAgICAgICAgICAgICAgIEBzd2l0Y2ggKHJlcG8pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIEBjYXNlIChSZXBvc2l0b3J5Lmdsb3NzYXJ5KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIEdsb3NzYXJ5IG9mIHRlcm1zIC8gbG9va3VwIGlzc3Vlc1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgQGNhc2UgKFJlcG9zaXRvcnkubW9kZWxzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENhbGN1bGF0aW9uIGlzc3Vlc1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgQGNhc2UgKFJlcG9zaXRvcnkub3JjaGVzdHJhdG9yKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIE9yY2hlc3RyYXRpb24gaXNzdWVzXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBAY2FzZSAoUmVwb3NpdG9yeS5hZ2dyZWdhdGlvbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBBZ2dyZWdhdGVkIERhdGEgaXNzdWVzXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBAY2FzZSAoUmVwb3NpdG9yeS5jb21tdW5pdHkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgVUkvVVggb3IgQVBJIGlzc3Vlc1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgQGNhc2UgKFJlcG9zaXRvcnkucG9vcmVuZW1lY2spIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udmVyc2lvbiBmcm9tIFAmTiBTcHJlYWRzaGVldFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgQGNhc2UgKFJlcG9zaXRvcnkuZnJvbnRlbmQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgT3RoZXIgaXNzdWVzXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA8L29wdGlvbj5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8L3NlbGVjdD5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgQGlmIChyZXBvc2l0b3J5KCkpIHtcbiAgICAgICAgPGRpdiBjbGFzcz1cImZpZWxkIGlzLWhvcml6b250YWwgbXktM1wiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWVsZC1sYWJlbCBpcy1ub3JtYWxcIj5cbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImxhYmVsXCIgZm9yPVwidGVtcGxhdGVcIj5Jc3N1ZTwvbGFiZWw+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZpZWxkLWJvZHlcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWVsZFwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29udHJvbCBpcy1leHBhbmRlZFwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWxlY3QgaXMtbXVsdGlwbGUgaXMtZnVsbHdpZHRoXCI+XG4gICAgICAgICAgICAgICAgICA8c2VsZWN0XG4gICAgICAgICAgICAgICAgICAgIFtuZ01vZGVsXT1cInNlbGVjdGVkVGVtcGxhdGUoKVwiXG4gICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwic2VsZWN0ZWRUZW1wbGF0ZS5zZXQoJGV2ZW50LnRhcmdldC52YWx1ZSlcIlxuICAgICAgICAgICAgICAgICAgICBuYW1lPVwidGVtcGxhdGVcIlxuICAgICAgICAgICAgICAgICAgICByZXF1aXJlZD5cbiAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiBbbmdWYWx1ZV09XCJ1bmRlZmluZWRcIj5TZWxlY3QgZnJvbSB0aGUgbGlzdDwvb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICBAZm9yICh0IG9mIFRlbXBsYXRlIHwga2V5czsgdHJhY2sgdCkge1xuICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gW3ZhbHVlXT1cInQudmFsdWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIEBzd2l0Y2ggKHQudmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQGNhc2UgKFRlbXBsYXRlLmJ1Zykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEkgZm91bmQgYSBidWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICBAY2FzZSAoVGVtcGxhdGUuZmVhdHVyZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEkgd291bGQgbGlrZSBhIG5ldyBmZWF0dXJlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICA8L29wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgfVxuXG4gICAgICBAaWYgKGlzc3VlVXJsKCkpIHtcbiAgICAgICAgPHA+XG4gICAgICAgICAgPHNwYW4+UGxlYXNlIHJlcG9ydCB0aGUgaXNzdWUgb24gR2l0bGFiIHVzaW5nPC9zcGFuPlxuICAgICAgICAgIDxhIGNsYXNzPVwicGwtMVwiIFtocmVmXT1cImlzc3VlVXJsKClcIiB0YXJnZXQ9XCJfYmxhbmtcIj50aGlzIGxpbms8L2E+XG4gICAgICAgICAgLlxuICAgICAgICA8L3A+XG4gICAgICB9XG4gICAgPC9zZWN0aW9uPlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
44
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXNzdWUtY29uZmlybS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29tbW9uL2lzc3VlLWNvbmZpcm0vaXNzdWUtY29uZmlybS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9zcmMvY29tbW9uL2lzc3VlLWNvbmZpcm0vaXNzdWUtY29uZmlybS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNGLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFNUQsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsY0FBYyxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ2hFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxjQUFjLENBQUM7OztBQVN4QyxNQUFNLE9BQU8scUJBQXFCO0lBc0JoQztRQXJCaUIsZ0JBQVcsR0FBRyxNQUFNLENBQUMsY0FBYyxFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFFaEUsVUFBSyxHQUFHLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQ2pDLGVBQVUsR0FBRyxLQUFLLEVBQWMsQ0FBQztRQUNqQyxhQUFRLEdBQUcsS0FBSyxFQUFZLENBQUM7UUFDN0IsZ0JBQVcsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFM0IsV0FBTSxHQUFHLE1BQU0sRUFBRSxDQUFDO1FBRWxCLGVBQVUsR0FBRyxVQUFVLENBQUM7UUFDeEIsYUFBUSxHQUFHLFFBQVEsQ0FBQztRQUNwQixpQkFBWSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FDckMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLEtBQUssVUFBVSxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FDaEcsQ0FBQztRQUNRLGFBQVEsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQ2pDLElBQUksQ0FBQyxVQUFVLEVBQUUsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FDakcsQ0FBQztRQUVRLHVCQUFrQixHQUFHLE1BQU0sQ0FBYSxTQUFTLENBQUMsQ0FBQztRQUNuRCxxQkFBZ0IsR0FBRyxNQUFNLENBQVcsU0FBUyxDQUFDLENBQUM7UUFHdkQsTUFBTSxDQUNKLEdBQUcsRUFBRTtZQUNILElBQUksQ0FBQyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQztnQkFDcEQsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQztZQUNqRCxDQUFDO1FBQ0gsQ0FBQyxFQUNELEVBQUUsaUJBQWlCLEVBQUUsSUFBSSxFQUFFLENBQzVCLENBQUM7UUFFRixNQUFNLENBQ0osR0FBRyxFQUFFO1lBQ0gsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDO2dCQUNoRCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1lBQzdDLENBQUM7UUFDSCxDQUFDLEVBQ0QsRUFBRSxpQkFBaUIsRUFBRSxJQUFJLEVBQUUsQ0FDNUIsQ0FBQztJQUNKLENBQUM7SUFFUyxLQUFLO1FBQ2IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNuQixJQUFJLENBQUMsV0FBVyxFQUFFLEtBQUssRUFBRSxDQUFDO0lBQzVCLENBQUM7OEdBN0NVLHFCQUFxQjtrR0FBckIscUJBQXFCLHF2QkNkbEMsbzVIQXVHQSx5REQzRlksV0FBVyxrOUJBQUUsUUFBUTs7MkZBRXBCLHFCQUFxQjtrQkFQakMsU0FBUzsrQkFDRSxrQkFBa0IsY0FHaEIsSUFBSSxXQUNQLENBQUMsV0FBVyxFQUFFLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgY29tcHV0ZWQsIGVmZmVjdCwgaW5qZWN0LCBtb2RlbCwgb3V0cHV0LCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTmdiQWN0aXZlTW9kYWwgfSBmcm9tICdAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcCc7XG5cbmltcG9ydCB7IFJlcG9zaXRvcnksIFRlbXBsYXRlLCByZXBvcnRJc3N1ZVVybCB9IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCB7IEtleXNQaXBlIH0gZnJvbSAnLi4va2V5cy5waXBlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnaGUtaXNzdWUtY29uZmlybScsXG4gIHRlbXBsYXRlVXJsOiAnLi9pc3N1ZS1jb25maXJtLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vaXNzdWUtY29uZmlybS5jb21wb25lbnQuc2NzcyddLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbRm9ybXNNb2R1bGUsIEtleXNQaXBlXVxufSlcbmV4cG9ydCBjbGFzcyBJc3N1ZUNvbmZpcm1Db21wb25lbnQge1xuICBwcml2YXRlIHJlYWRvbmx5IGFjdGl2ZU1vZGFsID0gaW5qZWN0KE5nYkFjdGl2ZU1vZGFsLCB7IG9wdGlvbmFsOiB0cnVlIH0pO1xuXG4gIHByb3RlY3RlZCB0aXRsZSA9IG1vZGVsKCdTdWJtaXQgRmVlZGJhY2snKTtcbiAgcHJvdGVjdGVkIHJlcG9zaXRvcnkgPSBtb2RlbDxSZXBvc2l0b3J5PigpO1xuICBwcm90ZWN0ZWQgdGVtcGxhdGUgPSBtb2RlbDxUZW1wbGF0ZT4oKTtcbiAgcHJvdGVjdGVkIGlzQ29tbXVuaXR5ID0gbW9kZWwoZmFsc2UpO1xuXG4gIHByb3RlY3RlZCBjbG9zZWQgPSBvdXRwdXQoKTtcblxuICBwcm90ZWN0ZWQgUmVwb3NpdG9yeSA9IFJlcG9zaXRvcnk7XG4gIHByb3RlY3RlZCBUZW1wbGF0ZSA9IFRlbXBsYXRlO1xuICBwcm90ZWN0ZWQgcmVwb3NpdG9yaWVzID0gY29tcHV0ZWQoKCkgPT5cbiAgICBPYmplY3QudmFsdWVzKFJlcG9zaXRvcnkpLmZpbHRlcih2YWx1ZSA9PiB2YWx1ZSAhPT0gUmVwb3NpdG9yeS5jb21tdW5pdHkgfHwgdGhpcy5pc0NvbW11bml0eSgpKVxuICApO1xuICBwcm90ZWN0ZWQgaXNzdWVVcmwgPSBjb21wdXRlZCgoKSA9PlxuICAgIHRoaXMucmVwb3NpdG9yeSgpICYmIHRoaXMudGVtcGxhdGUoKSA/IHJlcG9ydElzc3VlVXJsKHRoaXMucmVwb3NpdG9yeSgpLCB0aGlzLnRlbXBsYXRlKCkpIDogbnVsbFxuICApO1xuXG4gIHByb3RlY3RlZCBzZWxlY3RlZFJlcG9zaXRvcnkgPSBzaWduYWw8UmVwb3NpdG9yeT4odW5kZWZpbmVkKTtcbiAgcHJvdGVjdGVkIHNlbGVjdGVkVGVtcGxhdGUgPSBzaWduYWw8VGVtcGxhdGU+KHVuZGVmaW5lZCk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgZWZmZWN0KFxuICAgICAgKCkgPT4ge1xuICAgICAgICBpZiAoIXRoaXMuc2VsZWN0ZWRSZXBvc2l0b3J5KCkgJiYgdGhpcy5yZXBvc2l0b3J5KCkpIHtcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkUmVwb3NpdG9yeS5zZXQodGhpcy5yZXBvc2l0b3J5KCkpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgeyBhbGxvd1NpZ25hbFdyaXRlczogdHJ1ZSB9XG4gICAgKTtcblxuICAgIGVmZmVjdChcbiAgICAgICgpID0+IHtcbiAgICAgICAgaWYgKCF0aGlzLnNlbGVjdGVkVGVtcGxhdGUoKSAmJiB0aGlzLnRlbXBsYXRlKCkpIHtcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkVGVtcGxhdGUuc2V0KHRoaXMudGVtcGxhdGUoKSk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB7IGFsbG93U2lnbmFsV3JpdGVzOiB0cnVlIH1cbiAgICApO1xuICB9XG5cbiAgcHJvdGVjdGVkIGNsb3NlKCkge1xuICAgIHRoaXMuY2xvc2VkLmVtaXQoKTtcbiAgICB0aGlzLmFjdGl2ZU1vZGFsPy5jbG9zZSgpO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwibW9kYWwgaXMtYWN0aXZlXCI+XG4gIDxkaXYgY2xhc3M9XCJtb2RhbC1iYWNrZ3JvdW5kXCI+PC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJtb2RhbC1jYXJkXCI+XG4gICAgPGhlYWRlciBjbGFzcz1cIm1vZGFsLWNhcmQtaGVhZFwiPlxuICAgICAgPHAgY2xhc3M9XCJtb2RhbC1jYXJkLXRpdGxlXCI+e3sgdGl0bGUoKSB9fTwvcD5cbiAgICAgIDxidXR0b24gY2xhc3M9XCJkZWxldGVcIiBhcmlhLWxhYmVsPVwiY2xvc2VcIiAoY2xpY2spPVwiY2xvc2UoKVwiPjwvYnV0dG9uPlxuICAgIDwvaGVhZGVyPlxuICAgIDxzZWN0aW9uIGNsYXNzPVwibW9kYWwtY2FyZC1ib2R5XCI+XG4gICAgICA8cCBjbGFzcz1cIm1iLTJcIj5QbGVhc2Ugc2VsZWN0IHRoZSB0eXBlIG9mIGlzc3VlIGZyb20gdGhlIGxpc3QgYmVsb3cgdG8gc3RhcnQ6PC9wPlxuXG4gICAgICA8ZGl2IGNsYXNzPVwiZmllbGQgaXMtaG9yaXpvbnRhbCBteS0zXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmaWVsZC1sYWJlbCBpcy1ub3JtYWxcIj5cbiAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJsYWJlbFwiIGZvcj1cInJlcG9zaXRvcnlcIj5DYXRlZ29yeTwvbGFiZWw+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmllbGQtYm9keVwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWVsZFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRyb2wgaXMtZXhwYW5kZWRcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlbGVjdCBpcy1tdWx0aXBsZSBpcy1mdWxsd2lkdGhcIj5cbiAgICAgICAgICAgICAgICA8c2VsZWN0XG4gICAgICAgICAgICAgICAgICBbbmdNb2RlbF09XCJzZWxlY3RlZFJlcG9zaXRvcnkoKVwiXG4gICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cInNlbGVjdGVkUmVwb3NpdG9yeS5zZXQoJGV2ZW50LnRhcmdldC52YWx1ZSlcIlxuICAgICAgICAgICAgICAgICAgbmFtZT1cInJlcG9zaXRvcnlcIlxuICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ+XG4gICAgICAgICAgICAgICAgICA8b3B0aW9uIFtuZ1ZhbHVlXT1cInVuZGVmaW5lZFwiPlNlbGVjdCBmcm9tIHRoZSBsaXN0PC9vcHRpb24+XG4gICAgICAgICAgICAgICAgICBAZm9yIChyZXBvIG9mIHJlcG9zaXRvcmllcygpOyB0cmFjayByZXBvKSB7XG4gICAgICAgICAgICAgICAgICAgIDxvcHRpb24gW3ZhbHVlXT1cInJlcG9cIj5cbiAgICAgICAgICAgICAgICAgICAgICBAc3dpdGNoIChyZXBvKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBAY2FzZSAoUmVwb3NpdG9yeS5nbG9zc2FyeSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBHbG9zc2FyeSBvZiB0ZXJtcyAvIGxvb2t1cCBpc3N1ZXNcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIEBjYXNlIChSZXBvc2l0b3J5Lm1vZGVscykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxhdGlvbiBpc3N1ZXNcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIEBjYXNlIChSZXBvc2l0b3J5Lm9yY2hlc3RyYXRvcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBPcmNoZXN0cmF0aW9uIGlzc3Vlc1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgQGNhc2UgKFJlcG9zaXRvcnkuYWdncmVnYXRpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQWdncmVnYXRlZCBEYXRhIGlzc3Vlc1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgQGNhc2UgKFJlcG9zaXRvcnkuY29tbXVuaXR5KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFVJL1VYIG9yIEFQSSBpc3N1ZXNcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIEBjYXNlIChSZXBvc2l0b3J5LnBvb3JlbmVtZWNrKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIENvbnZlcnNpb24gZnJvbSBQJk4gU3ByZWFkc2hlZXRcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIEBjYXNlIChSZXBvc2l0b3J5LmZyb250ZW5kKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIE90aGVyIGlzc3Vlc1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgPC9vcHRpb24+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC9zZWxlY3Q+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIEBpZiAocmVwb3NpdG9yeSgpKSB7XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmaWVsZCBpcy1ob3Jpem9udGFsIG15LTNcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmllbGQtbGFiZWwgaXMtbm9ybWFsXCI+XG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJsYWJlbFwiIGZvcj1cInRlbXBsYXRlXCI+SXNzdWU8L2xhYmVsPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWVsZC1ib2R5XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmllbGRcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRyb2wgaXMtZXhwYW5kZWRcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VsZWN0IGlzLW11bHRpcGxlIGlzLWZ1bGx3aWR0aFwiPlxuICAgICAgICAgICAgICAgICAgPHNlbGVjdFxuICAgICAgICAgICAgICAgICAgICBbbmdNb2RlbF09XCJzZWxlY3RlZFRlbXBsYXRlKClcIlxuICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cInNlbGVjdGVkVGVtcGxhdGUuc2V0KCRldmVudC50YXJnZXQudmFsdWUpXCJcbiAgICAgICAgICAgICAgICAgICAgbmFtZT1cInRlbXBsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ+XG4gICAgICAgICAgICAgICAgICAgIDxvcHRpb24gW25nVmFsdWVdPVwidW5kZWZpbmVkXCI+U2VsZWN0IGZyb20gdGhlIGxpc3Q8L29wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgQGZvciAodCBvZiBUZW1wbGF0ZSB8IGtleXM7IHRyYWNrIHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIFt2YWx1ZV09XCJ0LnZhbHVlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICBAc3dpdGNoICh0LnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIEBjYXNlIChUZW1wbGF0ZS5idWcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBJIGZvdW5kIGEgYnVnXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgQGNhc2UgKFRlbXBsYXRlLmZlYXR1cmUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBJIHdvdWxkIGxpa2UgYSBuZXcgZmVhdHVyZVxuICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgPC9vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIH1cblxuICAgICAgQGlmIChpc3N1ZVVybCgpKSB7XG4gICAgICAgIDxwPlxuICAgICAgICAgIDxzcGFuPlBsZWFzZSByZXBvcnQgdGhlIGlzc3VlIG9uIEdpdGxhYiB1c2luZzwvc3Bhbj5cbiAgICAgICAgICA8YSBjbGFzcz1cInBsLTFcIiBbaHJlZl09XCJpc3N1ZVVybCgpXCIgdGFyZ2V0PVwiX2JsYW5rXCI+dGhpcyBsaW5rPC9hPlxuICAgICAgICAgIC5cbiAgICAgICAgPC9wPlxuICAgICAgfVxuICAgIDwvc2VjdGlvbj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==