ngx-edu-sharing-metaqs2 0.9.36 → 0.9.38

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,11 +1,11 @@
1
1
  import { Component, Input } from '@angular/core';
2
- import { CountsWithHistoryComponent, } from '../counts-with-history/counts-with-history.component';
3
- import { BehaviorSubject, zip } from 'rxjs';
4
- import { filter, finalize, map, switchMap, tap } from 'rxjs/operators';
2
+ import { BaseHistoricDataTableDirective } from '../counts-with-history/counts-with-history.component';
3
+ import { BehaviorSubject, combineLatest, of } from 'rxjs';
4
+ import { finalize, map, switchMap, take, tap } from 'rxjs/operators';
5
5
  import { AsyncPipe, NgForOf, NgIf } from '@angular/common';
6
6
  import { DatepickerComponent } from '../components/filter/datepicker/datepicker.component';
7
7
  import { MatCard, MatCardContent, MatCardHeader, MatCardTitle } from '@angular/material/card';
8
- import { MatCell, MatCellDef, MatColumnDef, MatHeaderCell, MatHeaderRow, MatHeaderRowDef, MatRow, MatRowDef, MatTable, MatTableModule, } from '@angular/material/table';
8
+ import { MatCell, MatCellDef, MatColumnDef, MatHeaderCell, MatHeaderRow, MatHeaderRowDef, MatRow, MatRowDef, MatTable, MatTableModule } from '@angular/material/table';
9
9
  import { MatIcon } from '@angular/material/icon';
10
10
  import { MatSlideToggle } from '@angular/material/slide-toggle';
11
11
  import { MatTooltip } from '@angular/material/tooltip';
@@ -13,36 +13,34 @@ import { ProgressSpinnerComponent } from '../components/loading_indicator/progre
13
13
  import { TranslateModule } from '@ngx-translate/core';
14
14
  import { FormsModule } from '@angular/forms';
15
15
  import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
16
+ import { MatRipple } from '@angular/material/core';
16
17
  import * as i0 from "@angular/core";
17
18
  import * as i1 from "@angular/material/table";
18
19
  import * as i2 from "@ngx-translate/core";
19
20
  import * as i3 from "@angular/forms";
20
- export class TreeLicenseComponent extends CountsWithHistoryComponent {
21
+ export class TreeLicenseComponent extends BaseHistoricDataTableDirective {
21
22
  constructor() {
22
23
  super(...arguments);
23
24
  this.colId$ = new BehaviorSubject('defaultCollection');
24
25
  this.sourceType = 'collection';
25
- this.apiMethod = 'getLicenseCountsByLicenseGroup';
26
26
  }
27
27
  set collectionId(id) {
28
28
  this.colId$.next(id);
29
29
  }
30
- getCountByDate(date) {
31
- this.loadingCount.update((it) => it + 1);
30
+ getCountByDate(data) {
32
31
  const filter = {
33
32
  field: 'asOf',
34
- values: [{ id: date.toISO({ includeOffset: false }), label: '' }],
33
+ values: [{ id: data.date.toISO({ includeOffset: false }), label: '' }],
35
34
  };
36
- return this.metaApi[this.apiMethod](this.colId$.getValue(), [filter]).pipe(finalize(() => this.loadingCount.update((it) => it - 1)), map((response) => {
35
+ return of(undefined).pipe(tap(() => this.loadingCount.update((it) => it + 1)), switchMap(() => {
36
+ return this.metaApi[this.apiMethod](this.colId$.getValue(), [filter]).pipe(finalize(() => this.loadingCount.update((it) => it - 1)));
37
+ }), map((response) => {
37
38
  const castedRows = response.rows.map((row) => row);
38
39
  return {
39
40
  ...response,
40
41
  // return the sufficient part of the counts, because the api return a QualityMatrix not a MatrixWithCounts
41
42
  rows: castedRows.map((row) => {
42
- const counts = Object.entries(row.counts).reduce((acc, [key, count]) => {
43
- acc[key] = count.sufficient;
44
- return acc;
45
- }, {});
43
+ const counts = Object.fromEntries(Object.entries(row.counts).map(([key, value]) => [key, value.sufficient]));
46
44
  return {
47
45
  ...row,
48
46
  counts,
@@ -52,20 +50,52 @@ export class TreeLicenseComponent extends CountsWithHistoryComponent {
52
50
  }));
53
51
  }
54
52
  ngOnInit() {
55
- this.colId$
56
- .pipe(filter((colid) => colid !== undefined), filter(() => {
57
- return this.range.controls.start.value !== null && this.range.controls.end.value !== null;
58
- }), switchMap(() => {
59
- return zip(this.getCountByDate(this.range.controls.start.getRawValue()), this.getCountByDate(this.range.controls.end.getRawValue()));
60
- }), tap(([past, recent]) => {
61
- this.pastTypeCount$.next(past);
62
- this.recentTypeCount$.next(recent);
53
+ this.apiMethod ??= 'getLicenseCountsByLicenseGroup';
54
+ combineLatest([this.colId$, this.range.valueChanges])
55
+ .pipe(tap(([collectionId, range]) => {
56
+ this.dataForPastData$.next({
57
+ date: range.start,
58
+ collectionId: collectionId,
59
+ });
60
+ this.dataForRecentData$.next({
61
+ date: range.end,
62
+ collectionId: collectionId,
63
+ });
63
64
  }), takeUntilDestroyed(this.destroyRef))
64
65
  .subscribe();
65
- super.ngOnInit();
66
+ this.isHistoryEnabled$
67
+ .pipe(tap((enabled) => {
68
+ this.range.controls.end.reset();
69
+ if (!enabled) {
70
+ this.startDateSubscription?.unsubscribe();
71
+ this.startValuesSubscription?.unsubscribe();
72
+ return;
73
+ }
74
+ this.range.controls.start.reset();
75
+ if (!this.timeFilterLoaded()) {
76
+ this.startDateSubscription = this.timerangeStart$
77
+ .pipe(take(1), tap(() => {
78
+ this.startValuesSubscription = this.startValues$.subscribe();
79
+ this.range.controls.start.reset();
80
+ }))
81
+ .subscribe();
82
+ }
83
+ else {
84
+ this.startValuesSubscription = this.startValues$.subscribe();
85
+ this.range.controls.start.reset();
86
+ }
87
+ }), takeUntilDestroyed(this.destroyRef))
88
+ .subscribe();
89
+ this.endValues$.subscribe();
90
+ }
91
+ validateLoadingData(data) {
92
+ return !!data?.collectionId && (data.date?.isValid ?? false);
93
+ }
94
+ compareLoadingDataEqual(a, b) {
95
+ return a.collectionId === b.collectionId && a.date.equals(b.date);
66
96
  }
67
97
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TreeLicenseComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
68
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: TreeLicenseComponent, isStandalone: true, selector: "metaqs2-tree-license", inputs: { collectionId: "collectionId", sourceType: "sourceType", apiMethod: "apiMethod" }, usesInheritance: true, ngImport: i0, template: "<mat-card appearance=\"raised\">\n <mat-card-header *ngIf=\"pageTitle\">\n <mat-card-title data-test-id=\"page-title\">\n Qualit\u00E4tsmetrik: {{ pageTitle | translate }}{{ isLoading() ? \": Lade neue Daten.\" : \"\" }}\n </mat-card-title>\n </mat-card-header>\n <!-- consider to put the filter in the table header to avoid that it is scrolled out of view-->\n <!-- show the filter after the values are loaded to avoid loading current data twice -->\n <mat-card-content class=\"toolbar\">\n <metaqs2-datepicker [disabled]=\"isLoading() || !isHistoryEnabled()\" [inputGroup]=\"range\" *ngIf=\"timeFilterLoaded() && isHistoryEnabled()\"></metaqs2-datepicker>\n <div style=\"flex: 1 1 auto\"></div>\n <mat-slide-toggle [ngModel]=\"isHistoryEnabled()\" (ngModelChange)=\"isHistoryEnabled.set($event)\" [disabled]=\"isLoading()\" *ngIf=\"timeFilterLoaded()\">\n <label>Zeige historische Daten</label>\n </mat-slide-toggle>\n </mat-card-content>\n</mat-card>\n<mat-card>\n <metaqs2-progress-spinner [displayProgressSpinner]=\"isLoading()\"></metaqs2-progress-spinner>\n <table [class.while-loading]=\"isLoading()\" mat-table [dataSource]=\"recentTypeCount$.value.rows\"\n class=\"quality-matrix\">\n <!-- Define columns of table -->\n <!-- Row Header Column -->\n <ng-container matColumnDef=\"label-col\" sticky>\n <th [attr.rowspan]=\"isHistoryEnabled() ? '2' : '1'\" mat-header-cell *matHeaderCellDef>\n <div>Quelle</div>\n </th>\n <td\n mat-cell\n *matCellDef=\"let row\"\n [matTooltip]=\"row.meta.alt_label\"\n class=\"label-col mat-cell-level-{{row.meta.level + 1}}\"\n >\n {{ row.meta.label }}\n </td>\n </ng-container>\n <!-- one column for each type -->\n <ng-container *ngFor=\"let col of (recentTypeCount$ | async)?.columns; trackBy:columnIdent\"\n [matColumnDef]=\"col.id + '_type'\">\n <th [attr.colspan]=\"isHistoryEnabled() ? '2' : '1'\" mat-header-cell *matHeaderCellDef [matTooltip]=\"col.label\">\n {{ columnTranslationkey ? (columnTranslationkey + col.label | translate) : col.label }}\n </th>\n </ng-container>\n <!-- one column for each type for the most current date-->\n <ng-container *ngFor=\"let col of (recentTypeCount$ | async)?.columns; trackBy:columnIdent\"\n [matColumnDef]=\"col.id + '_recent'\">\n <th class=\"recent-data-cell\" mat-header-cell *matHeaderCellDef\n matTooltip=\"no tooltip\">{{ range.controls.end.value.toLocaleString(DateTime.DATE_SHORT) }}\n </th>\n <td class=\"recent-data-cell\" mat-cell *matCellDef=\"let row\">\n <a [attr.href]=\"openInEditor(row.meta.id, col.id) | async\" target=\"editor_frontend\">{{ row.counts[col.id] ?? '\u2013' }}</a>\n </td>\n </ng-container>\n <!-- one column for each type for the older date-->\n <ng-container *ngFor=\"let col of (recentTypeCount$ | async)?.columns; trackBy:columnIdent\"\n [matColumnDef]=\"col.id + '_past'\">\n <th class=\"past-data-cell\" mat-header-cell *matHeaderCellDef matTooltip=\"no tooltip\">\n {{ (pastTypeCount$ | async)?.rows?.length ? range.controls.start.value.toLocaleString(DateTime.DATE_SHORT) : 'no past data' }}\n </th>\n <td class=\"past-data-cell\" mat-cell *matCellDef=\"let row;\" >\n <ng-container *ngIf=\"(pastTypeCount$ | async)?.rows?.length && pastTypeCount(row, col.id) as trend\">\n <span [class]=\"trend.trend\"> {{ trend.value ?? '\u2013' }}\n <mat-icon *ngIf=\"trend.value\" aria-hidden=\"false\" [attr.aria-label]=\"trend.trend\" [fontIcon]=\"trend.trend!\" /></span>\n <span class=\"cdk-visually-hidden\">{{ trend.trend }}</span>\n </ng-container>\n </td>\n </ng-container>\n <!-- generate actual table -->\n <tr mat-header-row *matHeaderRowDef=\"['label-col'].concat(typeColumns()); sticky:true;\"></tr>\n <tr [hidden]=\"!isHistoryEnabled()\" mat-header-row *matHeaderRowDef=\"allColumns(); sticky: true;\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: ['label-col'].concat(allColumns())\"></tr>\n\n </table>\n</mat-card>\n", styles: [".while-loading{filter:blur(2px)}.mat-cell-level-1{padding-left:20px!important;text-align:left}.mat-cell-level-1:before{content:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNMjAuMyA5LjkwMDA1QzIwLjIgOS43MDAwNSAyMC4xIDkuNjAwMDUgMjAgOS40MDAwNUwxMyAzLjMwMDA1QzEyLjUgMi44MDAwNSAxMS41IDIuODAwMDUgMTEgMy4zMDAwNUw0IDkuNDAwMDVDMy41IDkuOTAwMDUgMy41IDEwLjcgNCAxMS4xTDExIDE3LjJDMTEuNSAxNy43IDEyLjUgMTcuNyAxMyAxNy4yTDIwIDExLjFDMjAuMyAxMC44IDIwLjQgMTAuNSAyMC40IDEwLjJDMjAuNCAxMC4xIDIwLjQgMTAgMjAuMyA5LjkwMDA1Wk01IDEwLjNMMTIgNC4yMDAwNUwxOSAxMC4zTDEyIDE2LjRMNSAxMC4zWk0yMCAxMi45TDEyIDE5LjhMNCAxMi45TDMgMTMuOEwxMSAyMC43MDAxQzExLjUgMjEuMjAwMSAxMi41IDIxLjIwMDEgMTMgMjAuNzAwMUwyMSAxMy44TDIwIDEyLjlaIiBmaWxsPSIjMDAzQjdDIi8+PC9zdmc+);padding-right:5px}.mat-cell-level-2{padding-left:40px!important;text-align:left}.mat-cell-level-2:before{content:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNMjAuMyA5LjkwMDA1QzIwLjIgOS43MDAwNSAyMC4xIDkuNjAwMDUgMjAgOS40MDAwNUwxMyAzLjMwMDA1QzEyLjUgMi44MDAwNSAxMS41IDIuODAwMDUgMTEgMy4zMDAwNUw0IDkuNDAwMDVDMy41IDkuOTAwMDUgMy41IDEwLjcgNCAxMS4xTDExIDE3LjJDMTEuNSAxNy43IDEyLjUgMTcuNyAxMyAxNy4yTDIwIDExLjFDMjAuMyAxMC44IDIwLjQgMTAuNSAyMC40IDEwLjJDMjAuNCAxMC4xIDIwLjQgMTAgMjAuMyA5LjkwMDA1Wk01IDEwLjNMMTIgNC4yMDAwNUwxOSAxMC4zTDEyIDE2LjRMNSAxMC4zWk0yMCAxMi45TDEyIDE5LjhMNCAxMi45TDMgMTMuOEwxMSAyMC43MDAxQzExLjUgMjEuMjAwMSAxMi41IDIxLjIwMDEgMTMgMjAuNzAwMUwyMSAxMy44TDIwIDEyLjlaIiBmaWxsPSIjMDAzQjdDIi8+PC9zdmc+);padding-right:5px}.mat-cell-level-3{padding-left:60px!important;text-align:left}.mat-cell-level-3:before{content:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNMjAuMyA5LjkwMDA1QzIwLjIgOS43MDAwNSAyMC4xIDkuNjAwMDUgMjAgOS40MDAwNUwxMyAzLjMwMDA1QzEyLjUgMi44MDAwNSAxMS41IDIuODAwMDUgMTEgMy4zMDAwNUw0IDkuNDAwMDVDMy41IDkuOTAwMDUgMy41IDEwLjcgNCAxMS4xTDExIDE3LjJDMTEuNSAxNy43IDEyLjUgMTcuNyAxMyAxNy4yTDIwIDExLjFDMjAuMyAxMC44IDIwLjQgMTAuNSAyMC40IDEwLjJDMjAuNCAxMC4xIDIwLjQgMTAgMjAuMyA5LjkwMDA1Wk01IDEwLjNMMTIgNC4yMDAwNUwxOSAxMC4zTDEyIDE2LjRMNSAxMC4zWk0yMCAxMi45TDEyIDE5LjhMNCAxMi45TDMgMTMuOEwxMSAyMC43MDAxQzExLjUgMjEuMjAwMSAxMi41IDIxLjIwMDEgMTMgMjAuNzAwMUwyMSAxMy44TDIwIDEyLjlaIiBmaWxsPSIjMDAzQjdDIi8+PC9zdmc+);padding-right:5px}.mat-cell-level-4{padding-left:80px!important;text-align:left}.mat-cell-level-4:before{content:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNMjAuMyA5LjkwMDA1QzIwLjIgOS43MDAwNSAyMC4xIDkuNjAwMDUgMjAgOS40MDAwNUwxMyAzLjMwMDA1QzEyLjUgMi44MDAwNSAxMS41IDIuODAwMDUgMTEgMy4zMDAwNUw0IDkuNDAwMDVDMy41IDkuOTAwMDUgMy41IDEwLjcgNCAxMS4xTDExIDE3LjJDMTEuNSAxNy43IDEyLjUgMTcuNyAxMyAxNy4yTDIwIDExLjFDMjAuMyAxMC44IDIwLjQgMTAuNSAyMC40IDEwLjJDMjAuNCAxMC4xIDIwLjQgMTAgMjAuMyA5LjkwMDA1Wk01IDEwLjNMMTIgNC4yMDAwNUwxOSAxMC4zTDEyIDE2LjRMNSAxMC4zWk0yMCAxMi45TDEyIDE5LjhMNCAxMi45TDMgMTMuOEwxMSAyMC43MDAxQzExLjUgMjEuMjAwMSAxMi41IDIxLjIwMDEgMTMgMjAuNzAwMUwyMSAxMy44TDIwIDEyLjlaIiBmaWxsPSIjMDAzQjdDIi8+PC9zdmc+);padding-right:5px}.mat-cell-level-5{padding-left:100px!important;text-align:left}.mat-cell-level-5:before{content:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNMjAuMyA5LjkwMDA1QzIwLjIgOS43MDAwNSAyMC4xIDkuNjAwMDUgMjAgOS40MDAwNUwxMyAzLjMwMDA1QzEyLjUgMi44MDAwNSAxMS41IDIuODAwMDUgMTEgMy4zMDAwNUw0IDkuNDAwMDVDMy41IDkuOTAwMDUgMy41IDEwLjcgNCAxMS4xTDExIDE3LjJDMTEuNSAxNy43IDEyLjUgMTcuNyAxMyAxNy4yTDIwIDExLjFDMjAuMyAxMC44IDIwLjQgMTAuNSAyMC40IDEwLjJDMjAuNCAxMC4xIDIwLjQgMTAgMjAuMyA5LjkwMDA1Wk01IDEwLjNMMTIgNC4yMDAwNUwxOSAxMC4zTDEyIDE2LjRMNSAxMC4zWk0yMCAxMi45TDEyIDE5LjhMNCAxMi45TDMgMTMuOEwxMSAyMC43MDAxQzExLjUgMjEuMjAwMSAxMi41IDIxLjIwMDEgMTMgMjAuNzAwMUwyMSAxMy44TDIwIDEyLjlaIiBmaWxsPSIjMDAzQjdDIi8+PC9zdmc+);padding-right:5px}.mat-cell-level-6{padding-left:120px!important;text-align:left}.mat-cell-level-6:before{content:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNMjAuMyA5LjkwMDA1QzIwLjIgOS43MDAwNSAyMC4xIDkuNjAwMDUgMjAgOS40MDAwNUwxMyAzLjMwMDA1QzEyLjUgMi44MDAwNSAxMS41IDIuODAwMDUgMTEgMy4zMDAwNUw0IDkuNDAwMDVDMy41IDkuOTAwMDUgMy41IDEwLjcgNCAxMS4xTDExIDE3LjJDMTEuNSAxNy43IDEyLjUgMTcuNyAxMyAxNy4yTDIwIDExLjFDMjAuMyAxMC44IDIwLjQgMTAuNSAyMC40IDEwLjJDMjAuNCAxMC4xIDIwLjQgMTAgMjAuMyA5LjkwMDA1Wk01IDEwLjNMMTIgNC4yMDAwNUwxOSAxMC4zTDEyIDE2LjRMNSAxMC4zWk0yMCAxMi45TDEyIDE5LjhMNCAxMi45TDMgMTMuOEwxMSAyMC43MDAxQzExLjUgMjEuMjAwMSAxMi41IDIxLjIwMDEgMTMgMjAuNzAwMUwyMSAxMy44TDIwIDEyLjlaIiBmaWxsPSIjMDAzQjdDIi8+PC9zdmc+);padding-right:5px}.mat-cell-level-7{padding-left:140px!important;text-align:left}.mat-cell-level-7:before{content:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNMjAuMyA5LjkwMDA1QzIwLjIgOS43MDAwNSAyMC4xIDkuNjAwMDUgMjAgOS40MDAwNUwxMyAzLjMwMDA1QzEyLjUgMi44MDAwNSAxMS41IDIuODAwMDUgMTEgMy4zMDAwNUw0IDkuNDAwMDVDMy41IDkuOTAwMDUgMy41IDEwLjcgNCAxMS4xTDExIDE3LjJDMTEuNSAxNy43IDEyLjUgMTcuNyAxMyAxNy4yTDIwIDExLjFDMjAuMyAxMC44IDIwLjQgMTAuNSAyMC40IDEwLjJDMjAuNCAxMC4xIDIwLjQgMTAgMjAuMyA5LjkwMDA1Wk01IDEwLjNMMTIgNC4yMDAwNUwxOSAxMC4zTDEyIDE2LjRMNSAxMC4zWk0yMCAxMi45TDEyIDE5LjhMNCAxMi45TDMgMTMuOEwxMSAyMC43MDAxQzExLjUgMjEuMjAwMSAxMi41IDIxLjIwMDEgMTMgMjAuNzAwMUwyMSAxMy44TDIwIDEyLjlaIiBmaWxsPSIjMDAzQjdDIi8+PC9zdmc+);padding-right:5px}.mat-cell-level-8{padding-left:160px!important;text-align:left}.mat-cell-level-8:before{content:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNMjAuMyA5LjkwMDA1QzIwLjIgOS43MDAwNSAyMC4xIDkuNjAwMDUgMjAgOS40MDAwNUwxMyAzLjMwMDA1QzEyLjUgMi44MDAwNSAxMS41IDIuODAwMDUgMTEgMy4zMDAwNUw0IDkuNDAwMDVDMy41IDkuOTAwMDUgMy41IDEwLjcgNCAxMS4xTDExIDE3LjJDMTEuNSAxNy43IDEyLjUgMTcuNyAxMyAxNy4yTDIwIDExLjFDMjAuMyAxMC44IDIwLjQgMTAuNSAyMC40IDEwLjJDMjAuNCAxMC4xIDIwLjQgMTAgMjAuMyA5LjkwMDA1Wk01IDEwLjNMMTIgNC4yMDAwNUwxOSAxMC4zTDEyIDE2LjRMNSAxMC4zWk0yMCAxMi45TDEyIDE5LjhMNCAxMi45TDMgMTMuOEwxMSAyMC43MDAxQzExLjUgMjEuMjAwMSAxMi41IDIxLjIwMDEgMTMgMjAuNzAwMUwyMSAxMy44TDIwIDEyLjlaIiBmaWxsPSIjMDAzQjdDIi8+PC9zdmc+);padding-right:5px}.mat-cell-level-2:before{content:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNMjAuMyA5LjkwMDA1QzIwLjIgOS43MDAwNSAyMC4xIDkuNjAwMDUgMjAgOS40MDAwNUwxMyAzLjMwMDA1QzEyLjUgMi44MDAwNSAxMS41IDIuODAwMDUgMTEgMy4zMDAwNUw0IDkuNDAwMDVDMy41IDkuOTAwMDUgMy41IDEwLjcgNCAxMS4xTDExIDE3LjJDMTEuNSAxNy43IDEyLjUgMTcuNyAxMyAxNy4yTDIwIDExLjFDMjAuMyAxMC44IDIwLjQgMTAuNSAyMC40IDEwLjJDMjAuNCAxMC4xIDIwLjQgMTAgMjAuMyA5LjkwMDA1Wk01IDEwLjNMMTIgNC4yMDAwNUwxOSAxMC4zTDEyIDE2LjRMNSAxMC4zWk0yMCAxMi45TDEyIDE5LjhMNCAxMi45TDMgMTMuOEwxMSAyMC43MDAxQzExLjUgMjEuMjAwMSAxMi41IDIxLjIwMDEgMTMgMjAuNzAwMUwyMSAxMy44TDIwIDEyLjlaIiBmaWxsPSIjMDAzQjdDIi8+PHBhdGggb3BhY2l0eT0iMC4zIiBkPSJNMTkgMTAuM0wxMiAxNi4zTDUgMTAuM0wxMiA0LjE5OTk1TDE5IDEwLjNaIiBmaWxsPSIjMDAzQjdDIi8+PC9zdmc+)}.mat-cell-level-0:before,.mat-cell-level-1:before{content:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNNCAxMi45TDMgMTMuOEwxMSAyMC43QzExLjYgMjEuMiAxMi40IDIxLjIgMTMgMjAuN0wyMSAxMy44TDIwIDEyLjlMMTIgMTkuOEw0IDEyLjlaTTExIDMuNDAwMDJMNCA5LjQwMDAyQzMuNCA5LjkwMDAyIDMuNCAxMC43IDQgMTEuMUwxMSAxNy4yQzExLjYgMTcuNyAxMi40IDE3LjcgMTMgMTcuMkwyMCAxMS4xQzIwLjUgMTAuNiAyMC41IDkuODAwMDIgMjAgOS40MDAwMkwxMyAzLjMwMDAyQzEyLjQgMi45MDAwMiAxMS42IDIuOTAwMDIgMTEgMy40MDAwMloiIGZpbGw9IiMwMDNCN0MiLz48L3N2Zz4=)}.trending_down{color:#4abeff}.trending_up{color:#c20808}\n"], dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "component", type: DatepickerComponent, selector: "metaqs2-datepicker", inputs: ["disabled", "inputGroup"] }, { kind: "component", type: MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: MatCardContent, selector: "mat-card-content" }, { kind: "component", type: MatCardHeader, selector: "mat-card-header" }, { kind: "directive", type: MatCardTitle, selector: "mat-card-title, [mat-card-title], [matCardTitle]" }, { kind: "directive", type: MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "ngmodule", type: MatTableModule }, { kind: "component", type: i1.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i1.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i1.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i1.MatColumnDef, selector: "[matColumnDef]", inputs: ["matColumnDef"] }, { kind: "directive", type: i1.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i1.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i1.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "component", type: i1.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i1.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: MatSlideToggle, selector: "mat-slide-toggle", inputs: ["name", "id", "labelPosition", "aria-label", "aria-labelledby", "aria-describedby", "required", "color", "disabled", "disableRipple", "tabIndex", "checked", "hideIcon", "disabledInteractive"], outputs: ["change", "toggleChange"], exportAs: ["matSlideToggle"] }, { kind: "directive", type: MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "directive", type: NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: ProgressSpinnerComponent, selector: "metaqs2-progress-spinner", inputs: ["color", "diameter", "strokeWidth", "backdropEnabled", "positionGloballyCenter", "displayProgressSpinner"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] }); }
98
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: TreeLicenseComponent, isStandalone: true, selector: "metaqs2-tree-license", inputs: { collectionId: "collectionId", sourceType: "sourceType" }, usesInheritance: true, ngImport: i0, template: "<mat-card appearance=\"raised\">\n <mat-card-header *ngIf=\"pageTitle\">\n <mat-card-title data-test-id=\"page-title\">\n Qualit\u00E4tsmetrik: {{ pageTitle | translate }}{{ isLoading() ? \": Lade neue Daten.\" : \"\" }}\n </mat-card-title>\n </mat-card-header>\n <!-- consider to put the filter in the table header to avoid that it is scrolled out of view-->\n <!-- show the filter after the values are loaded to avoid loading current data twice -->\n <mat-card-content class=\"toolbar\">\n <metaqs2-datepicker style=\"display: inline-block\" matRipple [disabled]=\"isLoading() || !isHistoryEnabled()\" [inputGroup]=\"range\" *ngIf=\"timeFilterLoaded() && isHistoryEnabled()\"></metaqs2-datepicker>\n <div style=\"flex: 1 1 auto\"></div>\n <mat-slide-toggle [ngModel]=\"isHistoryEnabled()\" (ngModelChange)=\"isHistoryEnabled.set($event)\" [disabled]=\"isLoading()\">\n <label>Zeige historische Daten</label>\n </mat-slide-toggle>\n </mat-card-content>\n</mat-card>\n<mat-card>\n <metaqs2-progress-spinner [displayProgressSpinner]=\"isLoading()\"></metaqs2-progress-spinner>\n <table [class.while-loading]=\"isLoading()\" mat-table [dataSource]=\"recentTypeCount$.value.rows\"\n class=\"quality-matrix\">\n <!-- Define columns of table -->\n <!-- Row Header Column -->\n <ng-container matColumnDef=\"label-col\" sticky>\n <th [attr.rowspan]=\"isHistoryEnabled() ? '2' : '1'\" mat-header-cell *matHeaderCellDef>\n <div>Quelle</div>\n </th>\n <td\n mat-cell\n *matCellDef=\"let row\"\n [matTooltip]=\"row.meta.alt_label\"\n class=\"label-col mat-cell-level-{{row.meta.level + 1}}\"\n >\n {{ row.meta.label }}\n </td>\n </ng-container>\n <!-- one column for each type -->\n <ng-container *ngFor=\"let col of (recentTypeCount$ | async)?.columns; trackBy:columnIdent\"\n [matColumnDef]=\"col.id + '_type'\">\n <th [attr.colspan]=\"isHistoryEnabled() ? '2' : '1'\" mat-header-cell *matHeaderCellDef [matTooltip]=\"col.label\">\n {{ columnTranslationkey ? (columnTranslationkey + col.label | translate) : col.label }}\n </th>\n </ng-container>\n <!-- one column for each type for the most current date-->\n <ng-container *ngFor=\"let col of (recentTypeCount$ | async)?.columns; trackBy:columnIdent\"\n [matColumnDef]=\"col.id + '_recent'\">\n <th class=\"recent-data-cell\" mat-header-cell *matHeaderCellDef\n matTooltip=\"no tooltip\">{{ range.controls.end.value.toLocaleString(DateTime.DATE_SHORT) }}\n </th>\n <td class=\"recent-data-cell\" mat-cell *matCellDef=\"let row\">\n <a [attr.href]=\"openInEditor(row.meta.id, col.id) | async\" target=\"editor_frontend\">{{ row.counts[col.id] ?? '\u2013' }}</a>\n </td>\n </ng-container>\n <!-- one column for each type for the older date-->\n <ng-container *ngFor=\"let col of (recentTypeCount$ | async)?.columns; trackBy:columnIdent\"\n [matColumnDef]=\"col.id + '_past'\">\n <th class=\"past-data-cell\" mat-header-cell *matHeaderCellDef matTooltip=\"no tooltip\">\n {{ (pastTypeCount$ | async)?.rows?.length ? range.controls.start.value.toLocaleString(DateTime.DATE_SHORT) : 'no past data' }}\n </th>\n <td class=\"past-data-cell\" mat-cell *matCellDef=\"let row;\" >\n <ng-container *ngIf=\"(pastTypeCount$ | async)?.rows?.length && pastTypeCount(row, col.id) as trend\">\n <span [class]=\"trend.trend\"> {{ trend.value ?? '\u2013' }}\n <mat-icon *ngIf=\"trend.value\" aria-hidden=\"false\" [attr.aria-label]=\"trend.trend\" [fontIcon]=\"trend.trend!\" /></span>\n <span class=\"cdk-visually-hidden\">{{ trend.trend }}</span>\n </ng-container>\n </td>\n </ng-container>\n <!-- generate actual table -->\n <tr mat-header-row *matHeaderRowDef=\"['label-col'].concat(typeColumns()); sticky:true;\"></tr>\n <tr [hidden]=\"!isHistoryEnabled()\" mat-header-row *matHeaderRowDef=\"allColumns(); sticky: true;\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: ['label-col'].concat(allColumns())\"></tr>\n\n </table>\n</mat-card>\n", styles: [".while-loading{filter:blur(2px)}tr:nth-child(2n){background-color:#e4e4e4}tr:nth-child(2n)>td.label-col,tr:nth-child(2n) td.recent-data-cell{border-right:1px solid white}tr:nth-child(odd){background-color:#fff}tr:nth-child(odd)>td.label-col,tr:nth-child(odd) td.recent-data-cell{border-right:1px solid #e4e4e4}td.label-col{text-align:left}.mat-mdc-header-cell,.mat-mdc-cell{text-align:center}.mat-mdc-header-cell a[href],.mat-mdc-cell a[href]{color:var(--mat-table-row-item-label-text-color);cursor:pointer;text-decoration:underline}.mat-mdc-header-cell a[href]:hover,.mat-mdc-cell a[href]:hover{text-decoration:underline}.mat-mdc-header-cell mat-icon,.mat-mdc-cell mat-icon{margin-left:5px;vertical-align:middle}.trending_down{color:#4abeff}.trending_up{color:#c20808}.toolbar,.actionbar{display:flex;flex-direction:row;justify-content:flex-start;align-items:center;gap:.5rem}\n", ".while-loading{filter:blur(2px)}tr:nth-child(2n),tr:nth-child(odd){background-color:#fff}tr:nth-child(2n)>td.label-col,tr:nth-child(2n) td.recent-data-cell,tr:nth-child(odd)>td.label-col,tr:nth-child(odd) td.recent-data-cell{border-right:1px solid #e4e4e4}.mat-cell-level-1{padding-left:20px!important;text-align:left}.mat-cell-level-1:before{content:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNMjAuMyA5LjkwMDA1QzIwLjIgOS43MDAwNSAyMC4xIDkuNjAwMDUgMjAgOS40MDAwNUwxMyAzLjMwMDA1QzEyLjUgMi44MDAwNSAxMS41IDIuODAwMDUgMTEgMy4zMDAwNUw0IDkuNDAwMDVDMy41IDkuOTAwMDUgMy41IDEwLjcgNCAxMS4xTDExIDE3LjJDMTEuNSAxNy43IDEyLjUgMTcuNyAxMyAxNy4yTDIwIDExLjFDMjAuMyAxMC44IDIwLjQgMTAuNSAyMC40IDEwLjJDMjAuNCAxMC4xIDIwLjQgMTAgMjAuMyA5LjkwMDA1Wk01IDEwLjNMMTIgNC4yMDAwNUwxOSAxMC4zTDEyIDE2LjRMNSAxMC4zWk0yMCAxMi45TDEyIDE5LjhMNCAxMi45TDMgMTMuOEwxMSAyMC43MDAxQzExLjUgMjEuMjAwMSAxMi41IDIxLjIwMDEgMTMgMjAuNzAwMUwyMSAxMy44TDIwIDEyLjlaIiBmaWxsPSIjMDAzQjdDIi8+PC9zdmc+);padding-right:5px}.mat-cell-level-2{padding-left:40px!important;text-align:left}.mat-cell-level-2:before{content:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNMjAuMyA5LjkwMDA1QzIwLjIgOS43MDAwNSAyMC4xIDkuNjAwMDUgMjAgOS40MDAwNUwxMyAzLjMwMDA1QzEyLjUgMi44MDAwNSAxMS41IDIuODAwMDUgMTEgMy4zMDAwNUw0IDkuNDAwMDVDMy41IDkuOTAwMDUgMy41IDEwLjcgNCAxMS4xTDExIDE3LjJDMTEuNSAxNy43IDEyLjUgMTcuNyAxMyAxNy4yTDIwIDExLjFDMjAuMyAxMC44IDIwLjQgMTAuNSAyMC40IDEwLjJDMjAuNCAxMC4xIDIwLjQgMTAgMjAuMyA5LjkwMDA1Wk01IDEwLjNMMTIgNC4yMDAwNUwxOSAxMC4zTDEyIDE2LjRMNSAxMC4zWk0yMCAxMi45TDEyIDE5LjhMNCAxMi45TDMgMTMuOEwxMSAyMC43MDAxQzExLjUgMjEuMjAwMSAxMi41IDIxLjIwMDEgMTMgMjAuNzAwMUwyMSAxMy44TDIwIDEyLjlaIiBmaWxsPSIjMDAzQjdDIi8+PC9zdmc+);padding-right:5px}.mat-cell-level-3{padding-left:60px!important;text-align:left}.mat-cell-level-3:before{content:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNMjAuMyA5LjkwMDA1QzIwLjIgOS43MDAwNSAyMC4xIDkuNjAwMDUgMjAgOS40MDAwNUwxMyAzLjMwMDA1QzEyLjUgMi44MDAwNSAxMS41IDIuODAwMDUgMTEgMy4zMDAwNUw0IDkuNDAwMDVDMy41IDkuOTAwMDUgMy41IDEwLjcgNCAxMS4xTDExIDE3LjJDMTEuNSAxNy43IDEyLjUgMTcuNyAxMyAxNy4yTDIwIDExLjFDMjAuMyAxMC44IDIwLjQgMTAuNSAyMC40IDEwLjJDMjAuNCAxMC4xIDIwLjQgMTAgMjAuMyA5LjkwMDA1Wk01IDEwLjNMMTIgNC4yMDAwNUwxOSAxMC4zTDEyIDE2LjRMNSAxMC4zWk0yMCAxMi45TDEyIDE5LjhMNCAxMi45TDMgMTMuOEwxMSAyMC43MDAxQzExLjUgMjEuMjAwMSAxMi41IDIxLjIwMDEgMTMgMjAuNzAwMUwyMSAxMy44TDIwIDEyLjlaIiBmaWxsPSIjMDAzQjdDIi8+PC9zdmc+);padding-right:5px}.mat-cell-level-4{padding-left:80px!important;text-align:left}.mat-cell-level-4:before{content:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNMjAuMyA5LjkwMDA1QzIwLjIgOS43MDAwNSAyMC4xIDkuNjAwMDUgMjAgOS40MDAwNUwxMyAzLjMwMDA1QzEyLjUgMi44MDAwNSAxMS41IDIuODAwMDUgMTEgMy4zMDAwNUw0IDkuNDAwMDVDMy41IDkuOTAwMDUgMy41IDEwLjcgNCAxMS4xTDExIDE3LjJDMTEuNSAxNy43IDEyLjUgMTcuNyAxMyAxNy4yTDIwIDExLjFDMjAuMyAxMC44IDIwLjQgMTAuNSAyMC40IDEwLjJDMjAuNCAxMC4xIDIwLjQgMTAgMjAuMyA5LjkwMDA1Wk01IDEwLjNMMTIgNC4yMDAwNUwxOSAxMC4zTDEyIDE2LjRMNSAxMC4zWk0yMCAxMi45TDEyIDE5LjhMNCAxMi45TDMgMTMuOEwxMSAyMC43MDAxQzExLjUgMjEuMjAwMSAxMi41IDIxLjIwMDEgMTMgMjAuNzAwMUwyMSAxMy44TDIwIDEyLjlaIiBmaWxsPSIjMDAzQjdDIi8+PC9zdmc+);padding-right:5px}.mat-cell-level-5{padding-left:100px!important;text-align:left}.mat-cell-level-5:before{content:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNMjAuMyA5LjkwMDA1QzIwLjIgOS43MDAwNSAyMC4xIDkuNjAwMDUgMjAgOS40MDAwNUwxMyAzLjMwMDA1QzEyLjUgMi44MDAwNSAxMS41IDIuODAwMDUgMTEgMy4zMDAwNUw0IDkuNDAwMDVDMy41IDkuOTAwMDUgMy41IDEwLjcgNCAxMS4xTDExIDE3LjJDMTEuNSAxNy43IDEyLjUgMTcuNyAxMyAxNy4yTDIwIDExLjFDMjAuMyAxMC44IDIwLjQgMTAuNSAyMC40IDEwLjJDMjAuNCAxMC4xIDIwLjQgMTAgMjAuMyA5LjkwMDA1Wk01IDEwLjNMMTIgNC4yMDAwNUwxOSAxMC4zTDEyIDE2LjRMNSAxMC4zWk0yMCAxMi45TDEyIDE5LjhMNCAxMi45TDMgMTMuOEwxMSAyMC43MDAxQzExLjUgMjEuMjAwMSAxMi41IDIxLjIwMDEgMTMgMjAuNzAwMUwyMSAxMy44TDIwIDEyLjlaIiBmaWxsPSIjMDAzQjdDIi8+PC9zdmc+);padding-right:5px}.mat-cell-level-6{padding-left:120px!important;text-align:left}.mat-cell-level-6:before{content:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNMjAuMyA5LjkwMDA1QzIwLjIgOS43MDAwNSAyMC4xIDkuNjAwMDUgMjAgOS40MDAwNUwxMyAzLjMwMDA1QzEyLjUgMi44MDAwNSAxMS41IDIuODAwMDUgMTEgMy4zMDAwNUw0IDkuNDAwMDVDMy41IDkuOTAwMDUgMy41IDEwLjcgNCAxMS4xTDExIDE3LjJDMTEuNSAxNy43IDEyLjUgMTcuNyAxMyAxNy4yTDIwIDExLjFDMjAuMyAxMC44IDIwLjQgMTAuNSAyMC40IDEwLjJDMjAuNCAxMC4xIDIwLjQgMTAgMjAuMyA5LjkwMDA1Wk01IDEwLjNMMTIgNC4yMDAwNUwxOSAxMC4zTDEyIDE2LjRMNSAxMC4zWk0yMCAxMi45TDEyIDE5LjhMNCAxMi45TDMgMTMuOEwxMSAyMC43MDAxQzExLjUgMjEuMjAwMSAxMi41IDIxLjIwMDEgMTMgMjAuNzAwMUwyMSAxMy44TDIwIDEyLjlaIiBmaWxsPSIjMDAzQjdDIi8+PC9zdmc+);padding-right:5px}.mat-cell-level-7{padding-left:140px!important;text-align:left}.mat-cell-level-7:before{content:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNMjAuMyA5LjkwMDA1QzIwLjIgOS43MDAwNSAyMC4xIDkuNjAwMDUgMjAgOS40MDAwNUwxMyAzLjMwMDA1QzEyLjUgMi44MDAwNSAxMS41IDIuODAwMDUgMTEgMy4zMDAwNUw0IDkuNDAwMDVDMy41IDkuOTAwMDUgMy41IDEwLjcgNCAxMS4xTDExIDE3LjJDMTEuNSAxNy43IDEyLjUgMTcuNyAxMyAxNy4yTDIwIDExLjFDMjAuMyAxMC44IDIwLjQgMTAuNSAyMC40IDEwLjJDMjAuNCAxMC4xIDIwLjQgMTAgMjAuMyA5LjkwMDA1Wk01IDEwLjNMMTIgNC4yMDAwNUwxOSAxMC4zTDEyIDE2LjRMNSAxMC4zWk0yMCAxMi45TDEyIDE5LjhMNCAxMi45TDMgMTMuOEwxMSAyMC43MDAxQzExLjUgMjEuMjAwMSAxMi41IDIxLjIwMDEgMTMgMjAuNzAwMUwyMSAxMy44TDIwIDEyLjlaIiBmaWxsPSIjMDAzQjdDIi8+PC9zdmc+);padding-right:5px}.mat-cell-level-8{padding-left:160px!important;text-align:left}.mat-cell-level-8:before{content:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNMjAuMyA5LjkwMDA1QzIwLjIgOS43MDAwNSAyMC4xIDkuNjAwMDUgMjAgOS40MDAwNUwxMyAzLjMwMDA1QzEyLjUgMi44MDAwNSAxMS41IDIuODAwMDUgMTEgMy4zMDAwNUw0IDkuNDAwMDVDMy41IDkuOTAwMDUgMy41IDEwLjcgNCAxMS4xTDExIDE3LjJDMTEuNSAxNy43IDEyLjUgMTcuNyAxMyAxNy4yTDIwIDExLjFDMjAuMyAxMC44IDIwLjQgMTAuNSAyMC40IDEwLjJDMjAuNCAxMC4xIDIwLjQgMTAgMjAuMyA5LjkwMDA1Wk01IDEwLjNMMTIgNC4yMDAwNUwxOSAxMC4zTDEyIDE2LjRMNSAxMC4zWk0yMCAxMi45TDEyIDE5LjhMNCAxMi45TDMgMTMuOEwxMSAyMC43MDAxQzExLjUgMjEuMjAwMSAxMi41IDIxLjIwMDEgMTMgMjAuNzAwMUwyMSAxMy44TDIwIDEyLjlaIiBmaWxsPSIjMDAzQjdDIi8+PC9zdmc+);padding-right:5px}.mat-cell-level-2:before{content:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNMjAuMyA5LjkwMDA1QzIwLjIgOS43MDAwNSAyMC4xIDkuNjAwMDUgMjAgOS40MDAwNUwxMyAzLjMwMDA1QzEyLjUgMi44MDAwNSAxMS41IDIuODAwMDUgMTEgMy4zMDAwNUw0IDkuNDAwMDVDMy41IDkuOTAwMDUgMy41IDEwLjcgNCAxMS4xTDExIDE3LjJDMTEuNSAxNy43IDEyLjUgMTcuNyAxMyAxNy4yTDIwIDExLjFDMjAuMyAxMC44IDIwLjQgMTAuNSAyMC40IDEwLjJDMjAuNCAxMC4xIDIwLjQgMTAgMjAuMyA5LjkwMDA1Wk01IDEwLjNMMTIgNC4yMDAwNUwxOSAxMC4zTDEyIDE2LjRMNSAxMC4zWk0yMCAxMi45TDEyIDE5LjhMNCAxMi45TDMgMTMuOEwxMSAyMC43MDAxQzExLjUgMjEuMjAwMSAxMi41IDIxLjIwMDEgMTMgMjAuNzAwMUwyMSAxMy44TDIwIDEyLjlaIiBmaWxsPSIjMDAzQjdDIi8+PHBhdGggb3BhY2l0eT0iMC4zIiBkPSJNMTkgMTAuM0wxMiAxNi4zTDUgMTAuM0wxMiA0LjE5OTk1TDE5IDEwLjNaIiBmaWxsPSIjMDAzQjdDIi8+PC9zdmc+)}.mat-cell-level-0:before,.mat-cell-level-1:before{content:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNNCAxMi45TDMgMTMuOEwxMSAyMC43QzExLjYgMjEuMiAxMi40IDIxLjIgMTMgMjAuN0wyMSAxMy44TDIwIDEyLjlMMTIgMTkuOEw0IDEyLjlaTTExIDMuNDAwMDJMNCA5LjQwMDAyQzMuNCA5LjkwMDAyIDMuNCAxMC43IDQgMTEuMUwxMSAxNy4yQzExLjYgMTcuNyAxMi40IDE3LjcgMTMgMTcuMkwyMCAxMS4xQzIwLjUgMTAuNiAyMC41IDkuODAwMDIgMjAgOS40MDAwMkwxMyAzLjMwMDAyQzEyLjQgMi45MDAwMiAxMS42IDIuOTAwMDIgMTEgMy40MDAwMloiIGZpbGw9IiMwMDNCN0MiLz48L3N2Zz4=)}.trending_down{color:#4abeff}.trending_up{color:#c20808}\n"], dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "component", type: DatepickerComponent, selector: "metaqs2-datepicker", inputs: ["disabled", "inputGroup"] }, { kind: "component", type: MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: MatCardContent, selector: "mat-card-content" }, { kind: "component", type: MatCardHeader, selector: "mat-card-header" }, { kind: "directive", type: MatCardTitle, selector: "mat-card-title, [mat-card-title], [matCardTitle]" }, { kind: "directive", type: MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "ngmodule", type: MatTableModule }, { kind: "component", type: i1.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i1.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i1.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i1.MatColumnDef, selector: "[matColumnDef]", inputs: ["matColumnDef"] }, { kind: "directive", type: i1.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i1.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i1.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "component", type: i1.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i1.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: MatRipple, selector: "[mat-ripple], [matRipple]", inputs: ["matRippleColor", "matRippleUnbounded", "matRippleCentered", "matRippleRadius", "matRippleAnimation", "matRippleDisabled", "matRippleTrigger"], exportAs: ["matRipple"] }, { kind: "component", type: MatSlideToggle, selector: "mat-slide-toggle", inputs: ["name", "id", "labelPosition", "aria-label", "aria-labelledby", "aria-describedby", "required", "color", "disabled", "disableRipple", "tabIndex", "checked", "hideIcon", "disabledInteractive"], outputs: ["change", "toggleChange"], exportAs: ["matSlideToggle"] }, { kind: "directive", type: MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "directive", type: NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: ProgressSpinnerComponent, selector: "metaqs2-progress-spinner", inputs: ["color", "diameter", "strokeWidth", "backdropEnabled", "positionGloballyCenter", "displayProgressSpinner"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] }); }
69
99
  }
70
100
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TreeLicenseComponent, decorators: [{
71
101
  type: Component,
@@ -84,6 +114,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
84
114
  MatHeaderRow,
85
115
  MatHeaderRowDef,
86
116
  MatIcon,
117
+ MatRipple,
87
118
  MatRow,
88
119
  MatRowDef,
89
120
  MatSlideToggle,
@@ -94,15 +125,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
94
125
  ProgressSpinnerComponent,
95
126
  TranslateModule,
96
127
  FormsModule,
97
- ], template: "<mat-card appearance=\"raised\">\n <mat-card-header *ngIf=\"pageTitle\">\n <mat-card-title data-test-id=\"page-title\">\n Qualit\u00E4tsmetrik: {{ pageTitle | translate }}{{ isLoading() ? \": Lade neue Daten.\" : \"\" }}\n </mat-card-title>\n </mat-card-header>\n <!-- consider to put the filter in the table header to avoid that it is scrolled out of view-->\n <!-- show the filter after the values are loaded to avoid loading current data twice -->\n <mat-card-content class=\"toolbar\">\n <metaqs2-datepicker [disabled]=\"isLoading() || !isHistoryEnabled()\" [inputGroup]=\"range\" *ngIf=\"timeFilterLoaded() && isHistoryEnabled()\"></metaqs2-datepicker>\n <div style=\"flex: 1 1 auto\"></div>\n <mat-slide-toggle [ngModel]=\"isHistoryEnabled()\" (ngModelChange)=\"isHistoryEnabled.set($event)\" [disabled]=\"isLoading()\" *ngIf=\"timeFilterLoaded()\">\n <label>Zeige historische Daten</label>\n </mat-slide-toggle>\n </mat-card-content>\n</mat-card>\n<mat-card>\n <metaqs2-progress-spinner [displayProgressSpinner]=\"isLoading()\"></metaqs2-progress-spinner>\n <table [class.while-loading]=\"isLoading()\" mat-table [dataSource]=\"recentTypeCount$.value.rows\"\n class=\"quality-matrix\">\n <!-- Define columns of table -->\n <!-- Row Header Column -->\n <ng-container matColumnDef=\"label-col\" sticky>\n <th [attr.rowspan]=\"isHistoryEnabled() ? '2' : '1'\" mat-header-cell *matHeaderCellDef>\n <div>Quelle</div>\n </th>\n <td\n mat-cell\n *matCellDef=\"let row\"\n [matTooltip]=\"row.meta.alt_label\"\n class=\"label-col mat-cell-level-{{row.meta.level + 1}}\"\n >\n {{ row.meta.label }}\n </td>\n </ng-container>\n <!-- one column for each type -->\n <ng-container *ngFor=\"let col of (recentTypeCount$ | async)?.columns; trackBy:columnIdent\"\n [matColumnDef]=\"col.id + '_type'\">\n <th [attr.colspan]=\"isHistoryEnabled() ? '2' : '1'\" mat-header-cell *matHeaderCellDef [matTooltip]=\"col.label\">\n {{ columnTranslationkey ? (columnTranslationkey + col.label | translate) : col.label }}\n </th>\n </ng-container>\n <!-- one column for each type for the most current date-->\n <ng-container *ngFor=\"let col of (recentTypeCount$ | async)?.columns; trackBy:columnIdent\"\n [matColumnDef]=\"col.id + '_recent'\">\n <th class=\"recent-data-cell\" mat-header-cell *matHeaderCellDef\n matTooltip=\"no tooltip\">{{ range.controls.end.value.toLocaleString(DateTime.DATE_SHORT) }}\n </th>\n <td class=\"recent-data-cell\" mat-cell *matCellDef=\"let row\">\n <a [attr.href]=\"openInEditor(row.meta.id, col.id) | async\" target=\"editor_frontend\">{{ row.counts[col.id] ?? '\u2013' }}</a>\n </td>\n </ng-container>\n <!-- one column for each type for the older date-->\n <ng-container *ngFor=\"let col of (recentTypeCount$ | async)?.columns; trackBy:columnIdent\"\n [matColumnDef]=\"col.id + '_past'\">\n <th class=\"past-data-cell\" mat-header-cell *matHeaderCellDef matTooltip=\"no tooltip\">\n {{ (pastTypeCount$ | async)?.rows?.length ? range.controls.start.value.toLocaleString(DateTime.DATE_SHORT) : 'no past data' }}\n </th>\n <td class=\"past-data-cell\" mat-cell *matCellDef=\"let row;\" >\n <ng-container *ngIf=\"(pastTypeCount$ | async)?.rows?.length && pastTypeCount(row, col.id) as trend\">\n <span [class]=\"trend.trend\"> {{ trend.value ?? '\u2013' }}\n <mat-icon *ngIf=\"trend.value\" aria-hidden=\"false\" [attr.aria-label]=\"trend.trend\" [fontIcon]=\"trend.trend!\" /></span>\n <span class=\"cdk-visually-hidden\">{{ trend.trend }}</span>\n </ng-container>\n </td>\n </ng-container>\n <!-- generate actual table -->\n <tr mat-header-row *matHeaderRowDef=\"['label-col'].concat(typeColumns()); sticky:true;\"></tr>\n <tr [hidden]=\"!isHistoryEnabled()\" mat-header-row *matHeaderRowDef=\"allColumns(); sticky: true;\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: ['label-col'].concat(allColumns())\"></tr>\n\n </table>\n</mat-card>\n", styles: [".while-loading{filter:blur(2px)}.mat-cell-level-1{padding-left:20px!important;text-align:left}.mat-cell-level-1:before{content:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNMjAuMyA5LjkwMDA1QzIwLjIgOS43MDAwNSAyMC4xIDkuNjAwMDUgMjAgOS40MDAwNUwxMyAzLjMwMDA1QzEyLjUgMi44MDAwNSAxMS41IDIuODAwMDUgMTEgMy4zMDAwNUw0IDkuNDAwMDVDMy41IDkuOTAwMDUgMy41IDEwLjcgNCAxMS4xTDExIDE3LjJDMTEuNSAxNy43IDEyLjUgMTcuNyAxMyAxNy4yTDIwIDExLjFDMjAuMyAxMC44IDIwLjQgMTAuNSAyMC40IDEwLjJDMjAuNCAxMC4xIDIwLjQgMTAgMjAuMyA5LjkwMDA1Wk01IDEwLjNMMTIgNC4yMDAwNUwxOSAxMC4zTDEyIDE2LjRMNSAxMC4zWk0yMCAxMi45TDEyIDE5LjhMNCAxMi45TDMgMTMuOEwxMSAyMC43MDAxQzExLjUgMjEuMjAwMSAxMi41IDIxLjIwMDEgMTMgMjAuNzAwMUwyMSAxMy44TDIwIDEyLjlaIiBmaWxsPSIjMDAzQjdDIi8+PC9zdmc+);padding-right:5px}.mat-cell-level-2{padding-left:40px!important;text-align:left}.mat-cell-level-2:before{content:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNMjAuMyA5LjkwMDA1QzIwLjIgOS43MDAwNSAyMC4xIDkuNjAwMDUgMjAgOS40MDAwNUwxMyAzLjMwMDA1QzEyLjUgMi44MDAwNSAxMS41IDIuODAwMDUgMTEgMy4zMDAwNUw0IDkuNDAwMDVDMy41IDkuOTAwMDUgMy41IDEwLjcgNCAxMS4xTDExIDE3LjJDMTEuNSAxNy43IDEyLjUgMTcuNyAxMyAxNy4yTDIwIDExLjFDMjAuMyAxMC44IDIwLjQgMTAuNSAyMC40IDEwLjJDMjAuNCAxMC4xIDIwLjQgMTAgMjAuMyA5LjkwMDA1Wk01IDEwLjNMMTIgNC4yMDAwNUwxOSAxMC4zTDEyIDE2LjRMNSAxMC4zWk0yMCAxMi45TDEyIDE5LjhMNCAxMi45TDMgMTMuOEwxMSAyMC43MDAxQzExLjUgMjEuMjAwMSAxMi41IDIxLjIwMDEgMTMgMjAuNzAwMUwyMSAxMy44TDIwIDEyLjlaIiBmaWxsPSIjMDAzQjdDIi8+PC9zdmc+);padding-right:5px}.mat-cell-level-3{padding-left:60px!important;text-align:left}.mat-cell-level-3:before{content:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNMjAuMyA5LjkwMDA1QzIwLjIgOS43MDAwNSAyMC4xIDkuNjAwMDUgMjAgOS40MDAwNUwxMyAzLjMwMDA1QzEyLjUgMi44MDAwNSAxMS41IDIuODAwMDUgMTEgMy4zMDAwNUw0IDkuNDAwMDVDMy41IDkuOTAwMDUgMy41IDEwLjcgNCAxMS4xTDExIDE3LjJDMTEuNSAxNy43IDEyLjUgMTcuNyAxMyAxNy4yTDIwIDExLjFDMjAuMyAxMC44IDIwLjQgMTAuNSAyMC40IDEwLjJDMjAuNCAxMC4xIDIwLjQgMTAgMjAuMyA5LjkwMDA1Wk01IDEwLjNMMTIgNC4yMDAwNUwxOSAxMC4zTDEyIDE2LjRMNSAxMC4zWk0yMCAxMi45TDEyIDE5LjhMNCAxMi45TDMgMTMuOEwxMSAyMC43MDAxQzExLjUgMjEuMjAwMSAxMi41IDIxLjIwMDEgMTMgMjAuNzAwMUwyMSAxMy44TDIwIDEyLjlaIiBmaWxsPSIjMDAzQjdDIi8+PC9zdmc+);padding-right:5px}.mat-cell-level-4{padding-left:80px!important;text-align:left}.mat-cell-level-4:before{content:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNMjAuMyA5LjkwMDA1QzIwLjIgOS43MDAwNSAyMC4xIDkuNjAwMDUgMjAgOS40MDAwNUwxMyAzLjMwMDA1QzEyLjUgMi44MDAwNSAxMS41IDIuODAwMDUgMTEgMy4zMDAwNUw0IDkuNDAwMDVDMy41IDkuOTAwMDUgMy41IDEwLjcgNCAxMS4xTDExIDE3LjJDMTEuNSAxNy43IDEyLjUgMTcuNyAxMyAxNy4yTDIwIDExLjFDMjAuMyAxMC44IDIwLjQgMTAuNSAyMC40IDEwLjJDMjAuNCAxMC4xIDIwLjQgMTAgMjAuMyA5LjkwMDA1Wk01IDEwLjNMMTIgNC4yMDAwNUwxOSAxMC4zTDEyIDE2LjRMNSAxMC4zWk0yMCAxMi45TDEyIDE5LjhMNCAxMi45TDMgMTMuOEwxMSAyMC43MDAxQzExLjUgMjEuMjAwMSAxMi41IDIxLjIwMDEgMTMgMjAuNzAwMUwyMSAxMy44TDIwIDEyLjlaIiBmaWxsPSIjMDAzQjdDIi8+PC9zdmc+);padding-right:5px}.mat-cell-level-5{padding-left:100px!important;text-align:left}.mat-cell-level-5:before{content:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNMjAuMyA5LjkwMDA1QzIwLjIgOS43MDAwNSAyMC4xIDkuNjAwMDUgMjAgOS40MDAwNUwxMyAzLjMwMDA1QzEyLjUgMi44MDAwNSAxMS41IDIuODAwMDUgMTEgMy4zMDAwNUw0IDkuNDAwMDVDMy41IDkuOTAwMDUgMy41IDEwLjcgNCAxMS4xTDExIDE3LjJDMTEuNSAxNy43IDEyLjUgMTcuNyAxMyAxNy4yTDIwIDExLjFDMjAuMyAxMC44IDIwLjQgMTAuNSAyMC40IDEwLjJDMjAuNCAxMC4xIDIwLjQgMTAgMjAuMyA5LjkwMDA1Wk01IDEwLjNMMTIgNC4yMDAwNUwxOSAxMC4zTDEyIDE2LjRMNSAxMC4zWk0yMCAxMi45TDEyIDE5LjhMNCAxMi45TDMgMTMuOEwxMSAyMC43MDAxQzExLjUgMjEuMjAwMSAxMi41IDIxLjIwMDEgMTMgMjAuNzAwMUwyMSAxMy44TDIwIDEyLjlaIiBmaWxsPSIjMDAzQjdDIi8+PC9zdmc+);padding-right:5px}.mat-cell-level-6{padding-left:120px!important;text-align:left}.mat-cell-level-6:before{content:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNMjAuMyA5LjkwMDA1QzIwLjIgOS43MDAwNSAyMC4xIDkuNjAwMDUgMjAgOS40MDAwNUwxMyAzLjMwMDA1QzEyLjUgMi44MDAwNSAxMS41IDIuODAwMDUgMTEgMy4zMDAwNUw0IDkuNDAwMDVDMy41IDkuOTAwMDUgMy41IDEwLjcgNCAxMS4xTDExIDE3LjJDMTEuNSAxNy43IDEyLjUgMTcuNyAxMyAxNy4yTDIwIDExLjFDMjAuMyAxMC44IDIwLjQgMTAuNSAyMC40IDEwLjJDMjAuNCAxMC4xIDIwLjQgMTAgMjAuMyA5LjkwMDA1Wk01IDEwLjNMMTIgNC4yMDAwNUwxOSAxMC4zTDEyIDE2LjRMNSAxMC4zWk0yMCAxMi45TDEyIDE5LjhMNCAxMi45TDMgMTMuOEwxMSAyMC43MDAxQzExLjUgMjEuMjAwMSAxMi41IDIxLjIwMDEgMTMgMjAuNzAwMUwyMSAxMy44TDIwIDEyLjlaIiBmaWxsPSIjMDAzQjdDIi8+PC9zdmc+);padding-right:5px}.mat-cell-level-7{padding-left:140px!important;text-align:left}.mat-cell-level-7:before{content:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNMjAuMyA5LjkwMDA1QzIwLjIgOS43MDAwNSAyMC4xIDkuNjAwMDUgMjAgOS40MDAwNUwxMyAzLjMwMDA1QzEyLjUgMi44MDAwNSAxMS41IDIuODAwMDUgMTEgMy4zMDAwNUw0IDkuNDAwMDVDMy41IDkuOTAwMDUgMy41IDEwLjcgNCAxMS4xTDExIDE3LjJDMTEuNSAxNy43IDEyLjUgMTcuNyAxMyAxNy4yTDIwIDExLjFDMjAuMyAxMC44IDIwLjQgMTAuNSAyMC40IDEwLjJDMjAuNCAxMC4xIDIwLjQgMTAgMjAuMyA5LjkwMDA1Wk01IDEwLjNMMTIgNC4yMDAwNUwxOSAxMC4zTDEyIDE2LjRMNSAxMC4zWk0yMCAxMi45TDEyIDE5LjhMNCAxMi45TDMgMTMuOEwxMSAyMC43MDAxQzExLjUgMjEuMjAwMSAxMi41IDIxLjIwMDEgMTMgMjAuNzAwMUwyMSAxMy44TDIwIDEyLjlaIiBmaWxsPSIjMDAzQjdDIi8+PC9zdmc+);padding-right:5px}.mat-cell-level-8{padding-left:160px!important;text-align:left}.mat-cell-level-8:before{content:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNMjAuMyA5LjkwMDA1QzIwLjIgOS43MDAwNSAyMC4xIDkuNjAwMDUgMjAgOS40MDAwNUwxMyAzLjMwMDA1QzEyLjUgMi44MDAwNSAxMS41IDIuODAwMDUgMTEgMy4zMDAwNUw0IDkuNDAwMDVDMy41IDkuOTAwMDUgMy41IDEwLjcgNCAxMS4xTDExIDE3LjJDMTEuNSAxNy43IDEyLjUgMTcuNyAxMyAxNy4yTDIwIDExLjFDMjAuMyAxMC44IDIwLjQgMTAuNSAyMC40IDEwLjJDMjAuNCAxMC4xIDIwLjQgMTAgMjAuMyA5LjkwMDA1Wk01IDEwLjNMMTIgNC4yMDAwNUwxOSAxMC4zTDEyIDE2LjRMNSAxMC4zWk0yMCAxMi45TDEyIDE5LjhMNCAxMi45TDMgMTMuOEwxMSAyMC43MDAxQzExLjUgMjEuMjAwMSAxMi41IDIxLjIwMDEgMTMgMjAuNzAwMUwyMSAxMy44TDIwIDEyLjlaIiBmaWxsPSIjMDAzQjdDIi8+PC9zdmc+);padding-right:5px}.mat-cell-level-2:before{content:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNMjAuMyA5LjkwMDA1QzIwLjIgOS43MDAwNSAyMC4xIDkuNjAwMDUgMjAgOS40MDAwNUwxMyAzLjMwMDA1QzEyLjUgMi44MDAwNSAxMS41IDIuODAwMDUgMTEgMy4zMDAwNUw0IDkuNDAwMDVDMy41IDkuOTAwMDUgMy41IDEwLjcgNCAxMS4xTDExIDE3LjJDMTEuNSAxNy43IDEyLjUgMTcuNyAxMyAxNy4yTDIwIDExLjFDMjAuMyAxMC44IDIwLjQgMTAuNSAyMC40IDEwLjJDMjAuNCAxMC4xIDIwLjQgMTAgMjAuMyA5LjkwMDA1Wk01IDEwLjNMMTIgNC4yMDAwNUwxOSAxMC4zTDEyIDE2LjRMNSAxMC4zWk0yMCAxMi45TDEyIDE5LjhMNCAxMi45TDMgMTMuOEwxMSAyMC43MDAxQzExLjUgMjEuMjAwMSAxMi41IDIxLjIwMDEgMTMgMjAuNzAwMUwyMSAxMy44TDIwIDEyLjlaIiBmaWxsPSIjMDAzQjdDIi8+PHBhdGggb3BhY2l0eT0iMC4zIiBkPSJNMTkgMTAuM0wxMiAxNi4zTDUgMTAuM0wxMiA0LjE5OTk1TDE5IDEwLjNaIiBmaWxsPSIjMDAzQjdDIi8+PC9zdmc+)}.mat-cell-level-0:before,.mat-cell-level-1:before{content:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNNCAxMi45TDMgMTMuOEwxMSAyMC43QzExLjYgMjEuMiAxMi40IDIxLjIgMTMgMjAuN0wyMSAxMy44TDIwIDEyLjlMMTIgMTkuOEw0IDEyLjlaTTExIDMuNDAwMDJMNCA5LjQwMDAyQzMuNCA5LjkwMDAyIDMuNCAxMC43IDQgMTEuMUwxMSAxNy4yQzExLjYgMTcuNyAxMi40IDE3LjcgMTMgMTcuMkwyMCAxMS4xQzIwLjUgMTAuNiAyMC41IDkuODAwMDIgMjAgOS40MDAwMkwxMyAzLjMwMDAyQzEyLjQgMi45MDAwMiAxMS42IDIuOTAwMDIgMTEgMy40MDAwMloiIGZpbGw9IiMwMDNCN0MiLz48L3N2Zz4=)}.trending_down{color:#4abeff}.trending_up{color:#c20808}\n"] }]
128
+ ], template: "<mat-card appearance=\"raised\">\n <mat-card-header *ngIf=\"pageTitle\">\n <mat-card-title data-test-id=\"page-title\">\n Qualit\u00E4tsmetrik: {{ pageTitle | translate }}{{ isLoading() ? \": Lade neue Daten.\" : \"\" }}\n </mat-card-title>\n </mat-card-header>\n <!-- consider to put the filter in the table header to avoid that it is scrolled out of view-->\n <!-- show the filter after the values are loaded to avoid loading current data twice -->\n <mat-card-content class=\"toolbar\">\n <metaqs2-datepicker style=\"display: inline-block\" matRipple [disabled]=\"isLoading() || !isHistoryEnabled()\" [inputGroup]=\"range\" *ngIf=\"timeFilterLoaded() && isHistoryEnabled()\"></metaqs2-datepicker>\n <div style=\"flex: 1 1 auto\"></div>\n <mat-slide-toggle [ngModel]=\"isHistoryEnabled()\" (ngModelChange)=\"isHistoryEnabled.set($event)\" [disabled]=\"isLoading()\">\n <label>Zeige historische Daten</label>\n </mat-slide-toggle>\n </mat-card-content>\n</mat-card>\n<mat-card>\n <metaqs2-progress-spinner [displayProgressSpinner]=\"isLoading()\"></metaqs2-progress-spinner>\n <table [class.while-loading]=\"isLoading()\" mat-table [dataSource]=\"recentTypeCount$.value.rows\"\n class=\"quality-matrix\">\n <!-- Define columns of table -->\n <!-- Row Header Column -->\n <ng-container matColumnDef=\"label-col\" sticky>\n <th [attr.rowspan]=\"isHistoryEnabled() ? '2' : '1'\" mat-header-cell *matHeaderCellDef>\n <div>Quelle</div>\n </th>\n <td\n mat-cell\n *matCellDef=\"let row\"\n [matTooltip]=\"row.meta.alt_label\"\n class=\"label-col mat-cell-level-{{row.meta.level + 1}}\"\n >\n {{ row.meta.label }}\n </td>\n </ng-container>\n <!-- one column for each type -->\n <ng-container *ngFor=\"let col of (recentTypeCount$ | async)?.columns; trackBy:columnIdent\"\n [matColumnDef]=\"col.id + '_type'\">\n <th [attr.colspan]=\"isHistoryEnabled() ? '2' : '1'\" mat-header-cell *matHeaderCellDef [matTooltip]=\"col.label\">\n {{ columnTranslationkey ? (columnTranslationkey + col.label | translate) : col.label }}\n </th>\n </ng-container>\n <!-- one column for each type for the most current date-->\n <ng-container *ngFor=\"let col of (recentTypeCount$ | async)?.columns; trackBy:columnIdent\"\n [matColumnDef]=\"col.id + '_recent'\">\n <th class=\"recent-data-cell\" mat-header-cell *matHeaderCellDef\n matTooltip=\"no tooltip\">{{ range.controls.end.value.toLocaleString(DateTime.DATE_SHORT) }}\n </th>\n <td class=\"recent-data-cell\" mat-cell *matCellDef=\"let row\">\n <a [attr.href]=\"openInEditor(row.meta.id, col.id) | async\" target=\"editor_frontend\">{{ row.counts[col.id] ?? '\u2013' }}</a>\n </td>\n </ng-container>\n <!-- one column for each type for the older date-->\n <ng-container *ngFor=\"let col of (recentTypeCount$ | async)?.columns; trackBy:columnIdent\"\n [matColumnDef]=\"col.id + '_past'\">\n <th class=\"past-data-cell\" mat-header-cell *matHeaderCellDef matTooltip=\"no tooltip\">\n {{ (pastTypeCount$ | async)?.rows?.length ? range.controls.start.value.toLocaleString(DateTime.DATE_SHORT) : 'no past data' }}\n </th>\n <td class=\"past-data-cell\" mat-cell *matCellDef=\"let row;\" >\n <ng-container *ngIf=\"(pastTypeCount$ | async)?.rows?.length && pastTypeCount(row, col.id) as trend\">\n <span [class]=\"trend.trend\"> {{ trend.value ?? '\u2013' }}\n <mat-icon *ngIf=\"trend.value\" aria-hidden=\"false\" [attr.aria-label]=\"trend.trend\" [fontIcon]=\"trend.trend!\" /></span>\n <span class=\"cdk-visually-hidden\">{{ trend.trend }}</span>\n </ng-container>\n </td>\n </ng-container>\n <!-- generate actual table -->\n <tr mat-header-row *matHeaderRowDef=\"['label-col'].concat(typeColumns()); sticky:true;\"></tr>\n <tr [hidden]=\"!isHistoryEnabled()\" mat-header-row *matHeaderRowDef=\"allColumns(); sticky: true;\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: ['label-col'].concat(allColumns())\"></tr>\n\n </table>\n</mat-card>\n", styles: [".while-loading{filter:blur(2px)}tr:nth-child(2n){background-color:#e4e4e4}tr:nth-child(2n)>td.label-col,tr:nth-child(2n) td.recent-data-cell{border-right:1px solid white}tr:nth-child(odd){background-color:#fff}tr:nth-child(odd)>td.label-col,tr:nth-child(odd) td.recent-data-cell{border-right:1px solid #e4e4e4}td.label-col{text-align:left}.mat-mdc-header-cell,.mat-mdc-cell{text-align:center}.mat-mdc-header-cell a[href],.mat-mdc-cell a[href]{color:var(--mat-table-row-item-label-text-color);cursor:pointer;text-decoration:underline}.mat-mdc-header-cell a[href]:hover,.mat-mdc-cell a[href]:hover{text-decoration:underline}.mat-mdc-header-cell mat-icon,.mat-mdc-cell mat-icon{margin-left:5px;vertical-align:middle}.trending_down{color:#4abeff}.trending_up{color:#c20808}.toolbar,.actionbar{display:flex;flex-direction:row;justify-content:flex-start;align-items:center;gap:.5rem}\n", ".while-loading{filter:blur(2px)}tr:nth-child(2n),tr:nth-child(odd){background-color:#fff}tr:nth-child(2n)>td.label-col,tr:nth-child(2n) td.recent-data-cell,tr:nth-child(odd)>td.label-col,tr:nth-child(odd) td.recent-data-cell{border-right:1px solid #e4e4e4}.mat-cell-level-1{padding-left:20px!important;text-align:left}.mat-cell-level-1:before{content:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNMjAuMyA5LjkwMDA1QzIwLjIgOS43MDAwNSAyMC4xIDkuNjAwMDUgMjAgOS40MDAwNUwxMyAzLjMwMDA1QzEyLjUgMi44MDAwNSAxMS41IDIuODAwMDUgMTEgMy4zMDAwNUw0IDkuNDAwMDVDMy41IDkuOTAwMDUgMy41IDEwLjcgNCAxMS4xTDExIDE3LjJDMTEuNSAxNy43IDEyLjUgMTcuNyAxMyAxNy4yTDIwIDExLjFDMjAuMyAxMC44IDIwLjQgMTAuNSAyMC40IDEwLjJDMjAuNCAxMC4xIDIwLjQgMTAgMjAuMyA5LjkwMDA1Wk01IDEwLjNMMTIgNC4yMDAwNUwxOSAxMC4zTDEyIDE2LjRMNSAxMC4zWk0yMCAxMi45TDEyIDE5LjhMNCAxMi45TDMgMTMuOEwxMSAyMC43MDAxQzExLjUgMjEuMjAwMSAxMi41IDIxLjIwMDEgMTMgMjAuNzAwMUwyMSAxMy44TDIwIDEyLjlaIiBmaWxsPSIjMDAzQjdDIi8+PC9zdmc+);padding-right:5px}.mat-cell-level-2{padding-left:40px!important;text-align:left}.mat-cell-level-2:before{content:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNMjAuMyA5LjkwMDA1QzIwLjIgOS43MDAwNSAyMC4xIDkuNjAwMDUgMjAgOS40MDAwNUwxMyAzLjMwMDA1QzEyLjUgMi44MDAwNSAxMS41IDIuODAwMDUgMTEgMy4zMDAwNUw0IDkuNDAwMDVDMy41IDkuOTAwMDUgMy41IDEwLjcgNCAxMS4xTDExIDE3LjJDMTEuNSAxNy43IDEyLjUgMTcuNyAxMyAxNy4yTDIwIDExLjFDMjAuMyAxMC44IDIwLjQgMTAuNSAyMC40IDEwLjJDMjAuNCAxMC4xIDIwLjQgMTAgMjAuMyA5LjkwMDA1Wk01IDEwLjNMMTIgNC4yMDAwNUwxOSAxMC4zTDEyIDE2LjRMNSAxMC4zWk0yMCAxMi45TDEyIDE5LjhMNCAxMi45TDMgMTMuOEwxMSAyMC43MDAxQzExLjUgMjEuMjAwMSAxMi41IDIxLjIwMDEgMTMgMjAuNzAwMUwyMSAxMy44TDIwIDEyLjlaIiBmaWxsPSIjMDAzQjdDIi8+PC9zdmc+);padding-right:5px}.mat-cell-level-3{padding-left:60px!important;text-align:left}.mat-cell-level-3:before{content:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNMjAuMyA5LjkwMDA1QzIwLjIgOS43MDAwNSAyMC4xIDkuNjAwMDUgMjAgOS40MDAwNUwxMyAzLjMwMDA1QzEyLjUgMi44MDAwNSAxMS41IDIuODAwMDUgMTEgMy4zMDAwNUw0IDkuNDAwMDVDMy41IDkuOTAwMDUgMy41IDEwLjcgNCAxMS4xTDExIDE3LjJDMTEuNSAxNy43IDEyLjUgMTcuNyAxMyAxNy4yTDIwIDExLjFDMjAuMyAxMC44IDIwLjQgMTAuNSAyMC40IDEwLjJDMjAuNCAxMC4xIDIwLjQgMTAgMjAuMyA5LjkwMDA1Wk01IDEwLjNMMTIgNC4yMDAwNUwxOSAxMC4zTDEyIDE2LjRMNSAxMC4zWk0yMCAxMi45TDEyIDE5LjhMNCAxMi45TDMgMTMuOEwxMSAyMC43MDAxQzExLjUgMjEuMjAwMSAxMi41IDIxLjIwMDEgMTMgMjAuNzAwMUwyMSAxMy44TDIwIDEyLjlaIiBmaWxsPSIjMDAzQjdDIi8+PC9zdmc+);padding-right:5px}.mat-cell-level-4{padding-left:80px!important;text-align:left}.mat-cell-level-4:before{content:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNMjAuMyA5LjkwMDA1QzIwLjIgOS43MDAwNSAyMC4xIDkuNjAwMDUgMjAgOS40MDAwNUwxMyAzLjMwMDA1QzEyLjUgMi44MDAwNSAxMS41IDIuODAwMDUgMTEgMy4zMDAwNUw0IDkuNDAwMDVDMy41IDkuOTAwMDUgMy41IDEwLjcgNCAxMS4xTDExIDE3LjJDMTEuNSAxNy43IDEyLjUgMTcuNyAxMyAxNy4yTDIwIDExLjFDMjAuMyAxMC44IDIwLjQgMTAuNSAyMC40IDEwLjJDMjAuNCAxMC4xIDIwLjQgMTAgMjAuMyA5LjkwMDA1Wk01IDEwLjNMMTIgNC4yMDAwNUwxOSAxMC4zTDEyIDE2LjRMNSAxMC4zWk0yMCAxMi45TDEyIDE5LjhMNCAxMi45TDMgMTMuOEwxMSAyMC43MDAxQzExLjUgMjEuMjAwMSAxMi41IDIxLjIwMDEgMTMgMjAuNzAwMUwyMSAxMy44TDIwIDEyLjlaIiBmaWxsPSIjMDAzQjdDIi8+PC9zdmc+);padding-right:5px}.mat-cell-level-5{padding-left:100px!important;text-align:left}.mat-cell-level-5:before{content:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNMjAuMyA5LjkwMDA1QzIwLjIgOS43MDAwNSAyMC4xIDkuNjAwMDUgMjAgOS40MDAwNUwxMyAzLjMwMDA1QzEyLjUgMi44MDAwNSAxMS41IDIuODAwMDUgMTEgMy4zMDAwNUw0IDkuNDAwMDVDMy41IDkuOTAwMDUgMy41IDEwLjcgNCAxMS4xTDExIDE3LjJDMTEuNSAxNy43IDEyLjUgMTcuNyAxMyAxNy4yTDIwIDExLjFDMjAuMyAxMC44IDIwLjQgMTAuNSAyMC40IDEwLjJDMjAuNCAxMC4xIDIwLjQgMTAgMjAuMyA5LjkwMDA1Wk01IDEwLjNMMTIgNC4yMDAwNUwxOSAxMC4zTDEyIDE2LjRMNSAxMC4zWk0yMCAxMi45TDEyIDE5LjhMNCAxMi45TDMgMTMuOEwxMSAyMC43MDAxQzExLjUgMjEuMjAwMSAxMi41IDIxLjIwMDEgMTMgMjAuNzAwMUwyMSAxMy44TDIwIDEyLjlaIiBmaWxsPSIjMDAzQjdDIi8+PC9zdmc+);padding-right:5px}.mat-cell-level-6{padding-left:120px!important;text-align:left}.mat-cell-level-6:before{content:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNMjAuMyA5LjkwMDA1QzIwLjIgOS43MDAwNSAyMC4xIDkuNjAwMDUgMjAgOS40MDAwNUwxMyAzLjMwMDA1QzEyLjUgMi44MDAwNSAxMS41IDIuODAwMDUgMTEgMy4zMDAwNUw0IDkuNDAwMDVDMy41IDkuOTAwMDUgMy41IDEwLjcgNCAxMS4xTDExIDE3LjJDMTEuNSAxNy43IDEyLjUgMTcuNyAxMyAxNy4yTDIwIDExLjFDMjAuMyAxMC44IDIwLjQgMTAuNSAyMC40IDEwLjJDMjAuNCAxMC4xIDIwLjQgMTAgMjAuMyA5LjkwMDA1Wk01IDEwLjNMMTIgNC4yMDAwNUwxOSAxMC4zTDEyIDE2LjRMNSAxMC4zWk0yMCAxMi45TDEyIDE5LjhMNCAxMi45TDMgMTMuOEwxMSAyMC43MDAxQzExLjUgMjEuMjAwMSAxMi41IDIxLjIwMDEgMTMgMjAuNzAwMUwyMSAxMy44TDIwIDEyLjlaIiBmaWxsPSIjMDAzQjdDIi8+PC9zdmc+);padding-right:5px}.mat-cell-level-7{padding-left:140px!important;text-align:left}.mat-cell-level-7:before{content:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNMjAuMyA5LjkwMDA1QzIwLjIgOS43MDAwNSAyMC4xIDkuNjAwMDUgMjAgOS40MDAwNUwxMyAzLjMwMDA1QzEyLjUgMi44MDAwNSAxMS41IDIuODAwMDUgMTEgMy4zMDAwNUw0IDkuNDAwMDVDMy41IDkuOTAwMDUgMy41IDEwLjcgNCAxMS4xTDExIDE3LjJDMTEuNSAxNy43IDEyLjUgMTcuNyAxMyAxNy4yTDIwIDExLjFDMjAuMyAxMC44IDIwLjQgMTAuNSAyMC40IDEwLjJDMjAuNCAxMC4xIDIwLjQgMTAgMjAuMyA5LjkwMDA1Wk01IDEwLjNMMTIgNC4yMDAwNUwxOSAxMC4zTDEyIDE2LjRMNSAxMC4zWk0yMCAxMi45TDEyIDE5LjhMNCAxMi45TDMgMTMuOEwxMSAyMC43MDAxQzExLjUgMjEuMjAwMSAxMi41IDIxLjIwMDEgMTMgMjAuNzAwMUwyMSAxMy44TDIwIDEyLjlaIiBmaWxsPSIjMDAzQjdDIi8+PC9zdmc+);padding-right:5px}.mat-cell-level-8{padding-left:160px!important;text-align:left}.mat-cell-level-8:before{content:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNMjAuMyA5LjkwMDA1QzIwLjIgOS43MDAwNSAyMC4xIDkuNjAwMDUgMjAgOS40MDAwNUwxMyAzLjMwMDA1QzEyLjUgMi44MDAwNSAxMS41IDIuODAwMDUgMTEgMy4zMDAwNUw0IDkuNDAwMDVDMy41IDkuOTAwMDUgMy41IDEwLjcgNCAxMS4xTDExIDE3LjJDMTEuNSAxNy43IDEyLjUgMTcuNyAxMyAxNy4yTDIwIDExLjFDMjAuMyAxMC44IDIwLjQgMTAuNSAyMC40IDEwLjJDMjAuNCAxMC4xIDIwLjQgMTAgMjAuMyA5LjkwMDA1Wk01IDEwLjNMMTIgNC4yMDAwNUwxOSAxMC4zTDEyIDE2LjRMNSAxMC4zWk0yMCAxMi45TDEyIDE5LjhMNCAxMi45TDMgMTMuOEwxMSAyMC43MDAxQzExLjUgMjEuMjAwMSAxMi41IDIxLjIwMDEgMTMgMjAuNzAwMUwyMSAxMy44TDIwIDEyLjlaIiBmaWxsPSIjMDAzQjdDIi8+PC9zdmc+);padding-right:5px}.mat-cell-level-2:before{content:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNMjAuMyA5LjkwMDA1QzIwLjIgOS43MDAwNSAyMC4xIDkuNjAwMDUgMjAgOS40MDAwNUwxMyAzLjMwMDA1QzEyLjUgMi44MDAwNSAxMS41IDIuODAwMDUgMTEgMy4zMDAwNUw0IDkuNDAwMDVDMy41IDkuOTAwMDUgMy41IDEwLjcgNCAxMS4xTDExIDE3LjJDMTEuNSAxNy43IDEyLjUgMTcuNyAxMyAxNy4yTDIwIDExLjFDMjAuMyAxMC44IDIwLjQgMTAuNSAyMC40IDEwLjJDMjAuNCAxMC4xIDIwLjQgMTAgMjAuMyA5LjkwMDA1Wk01IDEwLjNMMTIgNC4yMDAwNUwxOSAxMC4zTDEyIDE2LjRMNSAxMC4zWk0yMCAxMi45TDEyIDE5LjhMNCAxMi45TDMgMTMuOEwxMSAyMC43MDAxQzExLjUgMjEuMjAwMSAxMi41IDIxLjIwMDEgMTMgMjAuNzAwMUwyMSAxMy44TDIwIDEyLjlaIiBmaWxsPSIjMDAzQjdDIi8+PHBhdGggb3BhY2l0eT0iMC4zIiBkPSJNMTkgMTAuM0wxMiAxNi4zTDUgMTAuM0wxMiA0LjE5OTk1TDE5IDEwLjNaIiBmaWxsPSIjMDAzQjdDIi8+PC9zdmc+)}.mat-cell-level-0:before,.mat-cell-level-1:before{content:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNNCAxMi45TDMgMTMuOEwxMSAyMC43QzExLjYgMjEuMiAxMi40IDIxLjIgMTMgMjAuN0wyMSAxMy44TDIwIDEyLjlMMTIgMTkuOEw0IDEyLjlaTTExIDMuNDAwMDJMNCA5LjQwMDAyQzMuNCA5LjkwMDAyIDMuNCAxMC43IDQgMTEuMUwxMSAxNy4yQzExLjYgMTcuNyAxMi40IDE3LjcgMTMgMTcuMkwyMCAxMS4xQzIwLjUgMTAuNiAyMC41IDkuODAwMDIgMjAgOS40MDAwMkwxMyAzLjMwMDAyQzEyLjQgMi45MDAwMiAxMS42IDIuOTAwMDIgMTEgMy40MDAwMloiIGZpbGw9IiMwMDNCN0MiLz48L3N2Zz4=)}.trending_down{color:#4abeff}.trending_up{color:#c20808}\n"] }]
98
129
  }], propDecorators: { collectionId: [{
99
130
  type: Input,
100
131
  args: [{ required: true }]
101
132
  }], sourceType: [{
102
133
  type: Input,
103
134
  args: [{ required: false }]
104
- }], apiMethod: [{
105
- type: Input,
106
- args: [{ required: false }]
107
135
  }] } });
108
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS1saWNlbnNlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLW1ldGEtd2lkZ2V0cy1saWIvc3JjL2xpYi90cmVlLWxpY2Vuc2UvdHJlZS1saWNlbnNlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLW1ldGEtd2lkZ2V0cy1saWIvc3JjL2xpYi9jb3VudHMtd2l0aC1oaXN0b3J5L2NvdW50cy13aXRoLWhpc3RvcnkuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDekQsT0FBTyxFQUNMLDBCQUEwQixHQUczQixNQUFNLHNEQUFzRCxDQUFDO0FBQzlELE9BQU8sRUFBRSxlQUFlLEVBQWMsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXhELE9BQU8sRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHdkUsT0FBTyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0QsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sc0RBQXNELENBQUM7QUFDM0YsT0FBTyxFQUFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzlGLE9BQU8sRUFDTCxPQUFPLEVBQ1AsVUFBVSxFQUNWLFlBQVksRUFDWixhQUFhLEVBQ2IsWUFBWSxFQUNaLGVBQWUsRUFDZixNQUFNLEVBQ04sU0FBUyxFQUNULFFBQVEsRUFDUixjQUFjLEdBQ2YsTUFBTSx5QkFBeUIsQ0FBQztBQUNqQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDakQsT0FBTyxF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WUFBWTt3QkFDWixPQUFPO3dCQUNQLGNBQWM7d0JBQ2QsVUFBVTt3QkFDVixZQUFZO3dCQUNaLGFBQWE7d0JBQ2IsWUFBWTt3QkFDWixlQUFlO3dCQUNmLE9BQU87d0JBQ1AsTUFBTTt3QkFDTixTQUFTO3dCQUNULGNBQWM7d0JBQ2QsUUFBUTt3QkFDUixVQUFVO3dCQUNWLE9BQU87d0JBQ1AsSUFBSTt3QkFDSix3QkFBd0I7d0JBQ3hCLGVBQWU7d0JBQ2YsV0FBVztxQkFDWjs4QkFPRyxZQUFZO3NCQURmLEtBQUs7dUJBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFO2dCQU16QixVQUFVO3NCQURULEtBQUs7dUJBQUMsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFO2dCQUkxQixTQUFTO3NCQURSLEtBQUs7dUJBQUMsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBDb3VudHNXaXRoSGlzdG9yeUNvbXBvbmVudCxcbiAgTWV0aG9kVHlwZSxcbiAgUGlja0tleXNCeVByb3BlcnR5VHlwZSxcbn0gZnJvbSAnLi4vY291bnRzLXdpdGgtaGlzdG9yeS9jb3VudHMtd2l0aC1oaXN0b3J5LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUsIHppcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRmlsdGVyLCBNYXRyaXhXaXRoQ291bnRzLCBRdWFsaXR5TWF0cml4Um93IH0gZnJvbSAnLi4vamF2YS1hcGknO1xuaW1wb3J0IHsgZmlsdGVyLCBmaW5hbGl6ZSwgbWFwLCBzd2l0Y2hNYXAsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IERhdGVUaW1lIH0gZnJvbSAnbHV4b24nO1xuaW1wb3J0IHsgTWV0YUFwaVNlcnZpY2UgfSBmcm9tICcuLi9tZXRhLWFwaS5zZXJ2aWNlJztcbmltcG9ydCB7IEFzeW5jUGlwZSwgTmdGb3JPZiwgTmdJZiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBEYXRlcGlja2VyQ29tcG9uZW50IH0gZnJvbSAnLi4vY29tcG9uZW50cy9maWx0ZXIvZGF0ZXBpY2tlci9kYXRlcGlja2VyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBNYXRDYXJkLCBNYXRDYXJkQ29udGVudCwgTWF0Q2FyZEhlYWRlciwgTWF0Q2FyZFRpdGxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY2FyZCc7XG5pbXBvcnQge1xuICBNYXRDZWxsLFxuICBNYXRDZWxsRGVmLFxuICBNYXRDb2x1bW5EZWYsXG4gIE1hdEhlYWRlckNlbGwsXG4gIE1hdEhlYWRlclJvdyxcbiAgTWF0SGVhZGVyUm93RGVmLFxuICBNYXRSb3csXG4gIE1hdFJvd0RlZixcbiAgTWF0VGFibGUsXG4gIE1hdFRhYmxlTW9kdWxlLFxufSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90YWJsZSc7XG5pbXBvcnQgeyBNYXRJY29uIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XG5pbXBvcnQgeyBNYXRTbGlkZVRvZ2dsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NsaWRlLXRvZ2dsZSc7XG5pbXBvcnQgeyBNYXRUb29sdGlwIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdG9vbHRpcCc7XG5pbXBvcnQgeyBQcm9ncmVzc1NwaW5uZXJDb21wb25lbnQgfSBmcm9tICcuLi9jb21wb25lbnRzL2xvYWRpbmdfaW5kaWNhdG9yL3Byb2dyZXNzLXNwaW5uZXIvcHJvZ3Jlc3Mtc3Bpbm5lci5jb21wb25lbnQnO1xuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFF1YWxpdHlNYXRyaXhSZXBsaWNhdGlvblNvdXJjZUNvdW50cyB9IGZyb20gJy4uL2phdmEtYXBpJztcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21ldGFxczItdHJlZS1saWNlbnNlJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIEFzeW5jUGlwZSxcbiAgICBEYXRlcGlja2VyQ29tcG9uZW50LFxuICAgIE1hdENhcmQsXG4gICAgTWF0Q2FyZENvbnRlbnQsXG4gICAgTWF0Q2FyZEhlYWRlcixcbiAgICBNYXRDYXJkVGl0bGUsXG4gICAgTWF0Q2VsbCxcbiAgICBNYXRUYWJsZU1vZHVsZSxcbiAgICBNYXRDZWxsRGVmLFxuICAgIE1hdENvbHVtbkRlZixcbiAgICBNYXRIZWFkZXJDZWxsLFxuICAgIE1hdEhlYWRlclJvdyxcbiAgICBNYXRIZWFkZXJSb3dEZWYsXG4gICAgTWF0SWNvbixcbiAgICBNYXRSb3csXG4gICAgTWF0Um93RGVmLFxuICAgIE1hdFNsaWRlVG9nZ2xlLFxuICAgIE1hdFRhYmxlLFxuICAgIE1hdFRvb2x0aXAsXG4gICAgTmdGb3JPZixcbiAgICBOZ0lmLFxuICAgIFByb2dyZXNzU3Bpbm5lckNvbXBvbmVudCxcbiAgICBUcmFuc2xhdGVNb2R1bGUsXG4gICAgRm9ybXNNb2R1bGUsXG4gIF0sXG4gIHRlbXBsYXRlVXJsOiAnLi4vY291bnRzLXdpdGgtaGlzdG9yeS9jb3VudHMtd2l0aC1oaXN0b3J5LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL3RyZWUtbGljZW5zZS5jb21wb25lbnQuc2NzcycsXG59KVxuZXhwb3J0IGNsYXNzIFRyZWVMaWNlbnNlQ29tcG9uZW50IGV4dGVuZHMgQ291bnRzV2l0aEhpc3RvcnlDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBwcml2YXRlIGNvbElkJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nPignZGVmYXVsdENvbGxlY3Rpb24nKTtcbiAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSlcbiAgc2V0IGNvbGxlY3Rpb25JZChpZDogc3RyaW5nKSB7XG4gICAgdGhpcy5jb2xJZCQubmV4dChpZCk7XG4gIH1cblxuICBASW5wdXQoeyByZXF1aXJlZDogZmFsc2UgfSlcbiAgc291cmNlVHlwZTogJ3JlcGxpY2F0aW9uU291cmNlJyB8ICdjb2xsZWN0aW9uJyA9ICdjb2xsZWN0aW9uJztcblxuICBASW5wdXQoeyByZXF1aXJlZDogZmFsc2UgfSlcbiAgYXBpTWV0aG9kOiBQaWNrS2V5c0J5UHJvcGVydHlUeXBlPE1ldGFBcGlTZXJ2aWNlLCBNZXRob2RUeXBlPiA9ICdnZXRMaWNlbnNlQ291bnRzQnlMaWNlbnNlR3JvdXAnO1xuXG4gIHByb3RlY3RlZCBnZXRDb3VudEJ5RGF0ZShkYXRlOiBEYXRlVGltZSk6IE9ic2VydmFibGU8TWF0cml4V2l0aENvdW50cz4ge1xuICAgIHRoaXMubG9hZGluZ0NvdW50LnVwZGF0ZSgoaXQpID0+IGl0ICsgMSk7XG4gICAgY29uc3QgZmlsdGVyOiBGaWx0ZXIgPSB7XG4gICAgICBmaWVsZDogJ2FzT2YnLFxuICAgICAgdmFsdWVzOiBbeyBpZDogZGF0ZS50b0lTTyh7IGluY2x1ZGVPZmZzZXQ6IGZhbHNlIH0pISwgbGFiZWw6ICcnIH1dLFxuICAgIH07XG4gICAgcmV0dXJuICh0aGlzLm1ldGFBcGlbdGhpcy5hcGlNZXRob2RdIGFzICh4OiBzdHJpbmcsIHk6IEZpbHRlcltdKSA9PiBPYnNlcnZhYmxlPE1hdHJpeFdpdGhDb3VudHM+KShcbiAgICAgIHRoaXMuY29sSWQkLmdldFZhbHVlKCksXG4gICAgICBbZmlsdGVyXVxuICAgICkucGlwZShcbiAgICAgIGZpbmFsaXplKCgpID0+IHRoaXMubG9hZGluZ0NvdW50LnVwZGF0ZSgoaXQpID0+IGl0IC0gMSkpLFxuICAgICAgbWFwKChyZXNwb25zZSkgPT4ge1xuICAgICAgICBjb25zdCBjYXN0ZWRSb3dzID0gcmVzcG9uc2Uucm93cy5tYXAoKHJvdykgPT4gcm93IGFzIHVua25vd24gYXMgUXVhbGl0eU1hdHJpeFJvdyk7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAuLi5yZXNwb25zZSxcbiAgICAgICAgICAvLyByZXR1cm4gdGhlIHN1ZmZpY2llbnQgcGFydCBvZiB0aGUgY291bnRzLCBiZWNhdXNlIHRoZSBhcGkgcmV0dXJuIGEgUXVhbGl0eU1hdHJpeCBub3QgYSBNYXRyaXhXaXRoQ291bnRzXG5cbiAgICAgICAgICByb3dzOiBjYXN0ZWRSb3dzLm1hcCgocm93KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBjb3VudHMgPSBPYmplY3QuZW50cmllcyhyb3cuY291bnRzKS5yZWR1Y2UoKGFjYywgW2tleSwgY291bnRdKSA9PiB7XG4gICAgICAgICAgICAgIGFjY1trZXldID0gKGNvdW50IGFzIFF1YWxpdHlNYXRyaXhSZXBsaWNhdGlvblNvdXJjZUNvdW50cykuc3VmZmljaWVudDtcbiAgICAgICAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgICAgICAgIH0sIHt9IGFzIHsgW2tleTogc3RyaW5nXTogYW55IH0pO1xuXG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAuLi5yb3csXG4gICAgICAgICAgICAgIGNvdW50cyxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfSksXG4gICAgICAgIH07XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmNvbElkJFxuICAgICAgLnBpcGUoXG4gICAgICAgIGZpbHRlcigoY29saWQpID0+IGNvbGlkICE9PSB1bmRlZmluZWQpLFxuICAgICAgICBmaWx0ZXIoKCkgPT4ge1xuICAgICAgICAgIHJldHVybiB0aGlzLnJhbmdlLmNvbnRyb2xzLnN0YXJ0LnZhbHVlICE9PSBudWxsICYmIHRoaXMucmFuZ2UuY29udHJvbHMuZW5kLnZhbHVlICE9PSBudWxsO1xuICAgICAgICB9KSxcbiAgICAgICAgc3dpdGNoTWFwKCgpID0+IHtcbiAgICAgICAgICByZXR1cm4gemlwKFxuICAgICAgICAgICAgdGhpcy5nZXRDb3VudEJ5RGF0ZSh0aGlzLnJhbmdlLmNvbnRyb2xzLnN0YXJ0LmdldFJhd1ZhbHVlKCkpLFxuICAgICAgICAgICAgdGhpcy5nZXRDb3VudEJ5RGF0ZSh0aGlzLnJhbmdlLmNvbnRyb2xzLmVuZC5nZXRSYXdWYWx1ZSgpKVxuICAgICAgICAgICk7XG4gICAgICAgIH0pLFxuICAgICAgICB0YXAoKFtwYXN0LCByZWNlbnRdKSA9PiB7XG4gICAgICAgICAgdGhpcy5wYXN0VHlwZUNvdW50JC5uZXh0KHBhc3QpO1xuICAgICAgICAgIHRoaXMucmVjZW50VHlwZUNvdW50JC5uZXh0KHJlY2VudCk7XG4gICAgICAgIH0pLFxuICAgICAgICB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgpO1xuICAgIHN1cGVyLm5nT25Jbml0KCk7XG4gIH1cbn1cbiIsIjxtYXQtY2FyZCBhcHBlYXJhbmNlPVwicmFpc2VkXCI+XG4gIDxtYXQtY2FyZC1oZWFkZXIgKm5nSWY9XCJwYWdlVGl0bGVcIj5cbiAgICA8bWF0LWNhcmQtdGl0bGUgZGF0YS10ZXN0LWlkPVwicGFnZS10aXRsZVwiPlxuICAgICAgUXVhbGl0w6R0c21ldHJpazoge3sgcGFnZVRpdGxlIHwgdHJhbnNsYXRlIH19e3sgaXNMb2FkaW5nKCkgPyBcIjogTGFkZSBuZXVlIERhdGVuLlwiIDogXCJcIiB9fVxuICAgIDwvbWF0LWNhcmQtdGl0bGU+XG4gIDwvbWF0LWNhcmQtaGVhZGVyPlxuICA8IS0tIGNvbnNpZGVyIHRvIHB1dCB0aGUgZmlsdGVyIGluIHRoZSB0YWJsZSBoZWFkZXIgdG8gYXZvaWQgdGhhdCBpdCBpcyBzY3JvbGxlZCBvdXQgb2Ygdmlldy0tPlxuICA8IS0tIHNob3cgdGhlIGZpbHRlciBhZnRlciB0aGUgdmFsdWVzIGFyZSBsb2FkZWQgdG8gYXZvaWQgbG9hZGluZyBjdXJyZW50IGRhdGEgdHdpY2UgLS0+XG4gIDxtYXQtY2FyZC1jb250ZW50IGNsYXNzPVwidG9vbGJhclwiPlxuICAgIDxtZXRhcXMyLWRhdGVwaWNrZXIgW2Rpc2FibGVkXT1cImlzTG9hZGluZygpIHx8ICFpc0hpc3RvcnlFbmFibGVkKClcIiBbaW5wdXRHcm91cF09XCJyYW5nZVwiICpuZ0lmPVwidGltZUZpbHRlckxvYWRlZCgpICYmIGlzSGlzdG9yeUVuYWJsZWQoKVwiPjwvbWV0YXFzMi1kYXRlcGlja2VyPlxuICAgIDxkaXYgc3R5bGU9XCJmbGV4OiAxIDEgYXV0b1wiPjwvZGl2PlxuICAgIDxtYXQtc2xpZGUtdG9nZ2xlIFtuZ01vZGVsXT1cImlzSGlzdG9yeUVuYWJsZWQoKVwiIChuZ01vZGVsQ2hhbmdlKT1cImlzSGlzdG9yeUVuYWJsZWQuc2V0KCRldmVudClcIiBbZGlzYWJsZWRdPVwiaXNMb2FkaW5nKClcIiAqbmdJZj1cInRpbWVGaWx0ZXJMb2FkZWQoKVwiPlxuICAgICAgPGxhYmVsPlplaWdlIGhpc3RvcmlzY2hlIERhdGVuPC9sYWJlbD5cbiAgICA8L21hdC1zbGlkZS10b2dnbGU+XG4gIDwvbWF0LWNhcmQtY29udGVudD5cbjwvbWF0LWNhcmQ+XG48bWF0LWNhcmQ+XG4gIDxtZXRhcXMyLXByb2dyZXNzLXNwaW5uZXIgW2Rpc3BsYXlQcm9ncmVzc1NwaW5uZXJdPVwiaXNMb2FkaW5nKClcIj48L21ldGFxczItcHJvZ3Jlc3Mtc3Bpbm5lcj5cbiAgPHRhYmxlIFtjbGFzcy53aGlsZS1sb2FkaW5nXT1cImlzTG9hZGluZygpXCIgbWF0LXRhYmxlIFtkYXRhU291cmNlXT1cInJlY2VudFR5cGVDb3VudCQudmFsdWUucm93c1wiXG4gICAgICAgICBjbGFzcz1cInF1YWxpdHktbWF0cml4XCI+XG4gICAgPCEtLSBEZWZpbmUgY29sdW1ucyBvZiB0YWJsZSAtLT5cbiAgICA8IS0tIFJvdyBIZWFkZXIgQ29sdW1uIC0tPlxuICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwibGFiZWwtY29sXCIgc3RpY2t5PlxuICAgICAgPHRoIFthdHRyLnJvd3NwYW5dPVwiaXNIaXN0b3J5RW5hYmxlZCgpID8gJzInIDogJzEnXCIgbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmPlxuICAgICAgICA8ZGl2PlF1ZWxsZTwvZGl2PlxuICAgICAgPC90aD5cbiAgICAgIDx0ZFxuICAgICAgICBtYXQtY2VsbFxuICAgICAgICAqbWF0Q2VsbERlZj1cImxldCByb3dcIlxuICAgICAgICBbbWF0VG9vbHRpcF09XCJyb3cubWV0YS5hbHRfbGFiZWxcIlxuICAgICAgICBjbGFzcz1cImxhYmVsLWNvbCBtYXQtY2VsbC1sZXZlbC17e3Jvdy5tZXRhLmxldmVsICsgMX19XCJcbiAgICAgID5cbiAgICAgICAge3sgcm93Lm1ldGEubGFiZWwgfX1cbiAgICAgIDwvdGQ+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPCEtLSBvbmUgY29sdW1uIGZvciBlYWNoIHR5cGUgLS0+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgY29sIG9mIChyZWNlbnRUeXBlQ291bnQkIHwgYXN5bmMpPy5jb2x1bW5zOyB0cmFja0J5OmNvbHVtbklkZW50XCJcbiAgICAgICAgICAgICAgICAgIFttYXRDb2x1bW5EZWZdPVwiY29sLmlkICsgJ190eXBlJ1wiPlxuICAgICAgPHRoIFthdHRyLmNvbHNwYW5dPVwiaXNIaXN0b3J5RW5hYmxlZCgpID8gJzInIDogJzEnXCIgbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmIFttYXRUb29sdGlwXT1cImNvbC5sYWJlbFwiPlxuICAgICAgICB7eyBjb2x1bW5UcmFuc2xhdGlvbmtleSA/IChjb2x1bW5UcmFuc2xhdGlvbmtleSArIGNvbC5sYWJlbCB8IHRyYW5zbGF0ZSkgOiBjb2wubGFiZWwgfX1cbiAgICAgIDwvdGg+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPCEtLSBvbmUgY29sdW1uIGZvciBlYWNoIHR5cGUgZm9yIHRoZSBtb3N0IGN1cnJlbnQgZGF0ZS0tPlxuICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGNvbCBvZiAocmVjZW50VHlwZUNvdW50JCB8IGFzeW5jKT8uY29sdW1uczsgdHJhY2tCeTpjb2x1bW5JZGVudFwiXG4gICAgICAgICAgICAgICAgICBbbWF0Q29sdW1uRGVmXT1cImNvbC5pZCArICdfcmVjZW50J1wiPlxuICAgICAgPHRoIGNsYXNzPVwicmVjZW50LWRhdGEtY2VsbFwiIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZlxuICAgICAgICAgIG1hdFRvb2x0aXA9XCJubyB0b29sdGlwXCI+e3sgcmFuZ2UuY29udHJvbHMuZW5kLnZhbHVlLnRvTG9jYWxlU3RyaW5nKERhdGVUaW1lLkRBVEVfU0hPUlQpIH19XG4gICAgICA8L3RoPlxuICAgICAgPHRkIGNsYXNzPVwicmVjZW50LWRhdGEtY2VsbFwiIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IHJvd1wiPlxuICAgICAgICA8YSBbYXR0ci5ocmVmXT1cIm9wZW5JbkVkaXRvcihyb3cubWV0YS5pZCwgY29sLmlkKSB8IGFzeW5jXCIgdGFyZ2V0PVwiZWRpdG9yX2Zyb250ZW5kXCI+e3sgcm93LmNvdW50c1tjb2wuaWRdID8/ICfigJMnIH19PC9hPlxuICAgICAgPC90ZD5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8IS0tIG9uZSBjb2x1bW4gZm9yIGVhY2ggdHlwZSBmb3IgdGhlIG9sZGVyIGRhdGUtLT5cbiAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBjb2wgb2YgKHJlY2VudFR5cGVDb3VudCQgfCBhc3luYyk/LmNvbHVtbnM7IHRyYWNrQnk6Y29sdW1uSWRlbnRcIlxuICAgICAgICAgICAgICAgICAgW21hdENvbHVtbkRlZl09XCJjb2wuaWQgKyAnX3Bhc3QnXCI+XG4gICAgICA8dGggY2xhc3M9XCJwYXN0LWRhdGEtY2VsbFwiIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZiBtYXRUb29sdGlwPVwibm8gdG9vbHRpcFwiPlxuICAgICAgICB7eyAocGFzdFR5cGVDb3VudCQgfCBhc3luYyk/LnJvd3M/Lmxlbmd0aCA/IHJhbmdlLmNvbnRyb2xzLnN0YXJ0LnZhbHVlLnRvTG9jYWxlU3RyaW5nKERhdGVUaW1lLkRBVEVfU0hPUlQpIDogJ25vIHBhc3QgZGF0YScgfX1cbiAgICAgIDwvdGg+XG4gICAgICA8dGQgY2xhc3M9XCJwYXN0LWRhdGEtY2VsbFwiIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IHJvdztcIiA+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIocGFzdFR5cGVDb3VudCQgfCBhc3luYyk/LnJvd3M/Lmxlbmd0aCAmJiBwYXN0VHlwZUNvdW50KHJvdywgY29sLmlkKSBhcyB0cmVuZFwiPlxuICAgICAgICAgIDxzcGFuIFtjbGFzc109XCJ0cmVuZC50cmVuZFwiPiB7eyB0cmVuZC52YWx1ZSA/PyAn4oCTJyB9fVxuICAgICAgICAgICAgPG1hdC1pY29uICpuZ0lmPVwidHJlbmQudmFsdWVcIiBhcmlhLWhpZGRlbj1cImZhbHNlXCIgW2F0dHIuYXJpYS1sYWJlbF09XCJ0cmVuZC50cmVuZFwiIFtmb250SWNvbl09XCJ0cmVuZC50cmVuZCFcIiAvPjwvc3Bhbj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImNkay12aXN1YWxseS1oaWRkZW5cIj57eyB0cmVuZC50cmVuZCB9fTwvc3Bhbj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L3RkPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwhLS0gZ2VuZXJhdGUgYWN0dWFsIHRhYmxlIC0tPlxuICAgIDx0ciBtYXQtaGVhZGVyLXJvdyAqbWF0SGVhZGVyUm93RGVmPVwiWydsYWJlbC1jb2wnXS5jb25jYXQodHlwZUNvbHVtbnMoKSk7IHN0aWNreTp0cnVlO1wiPjwvdHI+XG4gICAgPHRyIFtoaWRkZW5dPVwiIWlzSGlzdG9yeUVuYWJsZWQoKVwiIG1hdC1oZWFkZXItcm93ICptYXRIZWFkZXJSb3dEZWY9XCJhbGxDb2x1bW5zKCk7IHN0aWNreTogdHJ1ZTtcIj48L3RyPlxuICAgIDx0ciBtYXQtcm93ICptYXRSb3dEZWY9XCJsZXQgcm93OyBjb2x1bW5zOiBbJ2xhYmVsLWNvbCddLmNvbmNhdChhbGxDb2x1bW5zKCkpXCI+PC90cj5cblxuICA8L3RhYmxlPlxuPC9tYXQtY2FyZD5cbiJdfQ==
136
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS1saWNlbnNlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLW1ldGEtd2lkZ2V0cy1saWIvc3JjL2xpYi90cmVlLWxpY2Vuc2UvdHJlZS1saWNlbnNlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLW1ldGEtd2lkZ2V0cy1saWIvc3JjL2xpYi9jb3VudHMtd2l0aC1oaXN0b3J5L2NvdW50cy13aXRoLWhpc3RvcnkuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDekQsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sc0RBQXNELENBQUM7QUFDdEcsT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQWMsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXRFLE9BQU8sRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFckUsT0FBTyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0QsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sc0RBQXNELENBQUM7QUFDM0YsT0FBTyxFQUFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzlGLE9BQU8sRUFDSCxPQUFPLEVBQ1AsVUFBVSxFQUNWLFlBQVksRUFDWixhQUFhLEVBQ2IsWUFBWSxFQUNaLGVBQWUsRUFDZixNQUFNLEVBQ04sU0FBUyxFQUNULFFBQVEsRUFDUixjQUFjLEVBQ2pCLE1BQU0seUJBQXlCLENBQUM7QUFDakMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FB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RkFDZixXQUFXOzs0RkFLRixvQkFBb0I7a0JBakNoQyxTQUFTOytCQUNFLHNCQUFzQixjQUNwQixJQUFJLFdBQ1A7d0JBQ1AsU0FBUzt3QkFDVCxtQkFBbUI7d0JBQ25CLE9BQU87d0JBQ1AsY0FBYzt3QkFDZCxhQUFhO3dCQUNiLFlBQVk7d0JBQ1osT0FBTzt3QkFDUCxjQUFjO3dCQUNkLFVBQVU7d0JBQ1YsWUFBWTt3QkFDWixhQUFhO3dCQUNiLFlBQVk7d0JBQ1osZUFBZTt3QkFDZixPQUFPO3dCQUNQLFNBQVM7d0JBQ1QsTUFBTTt3QkFDTixTQUFTO3dCQUNULGNBQWM7d0JBQ2QsUUFBUTt3QkFDUixVQUFVO3dCQUNWLE9BQU87d0JBQ1AsSUFBSTt3QkFDSix3QkFBd0I7d0JBQ3hCLGVBQWU7d0JBQ2YsV0FBVztxQkFDWjs4QkFjRyxZQUFZO3NCQURmLEtBQUs7dUJBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFO2dCQU16QixVQUFVO3NCQURULEtBQUs7dUJBQUMsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCYXNlSGlzdG9yaWNEYXRhVGFibGVEaXJlY3RpdmUgfSBmcm9tICcuLi9jb3VudHMtd2l0aC1oaXN0b3J5L2NvdW50cy13aXRoLWhpc3RvcnkuY29tcG9uZW50JztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgY29tYmluZUxhdGVzdCwgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEZpbHRlciwgTWF0cml4V2l0aENvdW50cywgUXVhbGl0eU1hdHJpeCwgUXVhbGl0eU1hdHJpeFJvdyB9IGZyb20gJy4uL2phdmEtYXBpJztcbmltcG9ydCB7IGZpbmFsaXplLCBtYXAsIHN3aXRjaE1hcCwgdGFrZSwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgRGF0ZVRpbWUgfSBmcm9tICdsdXhvbic7XG5pbXBvcnQgeyBBc3luY1BpcGUsIE5nRm9yT2YsIE5nSWYgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgRGF0ZXBpY2tlckNvbXBvbmVudCB9IGZyb20gJy4uL2NvbXBvbmVudHMvZmlsdGVyL2RhdGVwaWNrZXIvZGF0ZXBpY2tlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgTWF0Q2FyZCwgTWF0Q2FyZENvbnRlbnQsIE1hdENhcmRIZWFkZXIsIE1hdENhcmRUaXRsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NhcmQnO1xuaW1wb3J0IHtcbiAgICBNYXRDZWxsLFxuICAgIE1hdENlbGxEZWYsXG4gICAgTWF0Q29sdW1uRGVmLFxuICAgIE1hdEhlYWRlckNlbGwsXG4gICAgTWF0SGVhZGVyUm93LFxuICAgIE1hdEhlYWRlclJvd0RlZixcbiAgICBNYXRSb3csXG4gICAgTWF0Um93RGVmLFxuICAgIE1hdFRhYmxlLFxuICAgIE1hdFRhYmxlTW9kdWxlXG59IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3RhYmxlJztcbmltcG9ydCB7IE1hdEljb24gfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcbmltcG9ydCB7IE1hdFNsaWRlVG9nZ2xlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc2xpZGUtdG9nZ2xlJztcbmltcG9ydCB7IE1hdFRvb2x0aXAgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90b29sdGlwJztcbmltcG9ydCB7IFByb2dyZXNzU3Bpbm5lckNvbXBvbmVudCB9IGZyb20gJy4uL2NvbXBvbmVudHMvbG9hZGluZ19pbmRpY2F0b3IvcHJvZ3Jlc3Mtc3Bpbm5lci9wcm9ncmVzcy1zcGlubmVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgTWF0UmlwcGxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZSc7XG5cbnR5cGUgTG9hZGluZ0RhdGEgPSB7XG4gIGRhdGU6IERhdGVUaW1lO1xuICBjb2xsZWN0aW9uSWQ6IHN0cmluZztcbn07XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21ldGFxczItdHJlZS1saWNlbnNlJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIEFzeW5jUGlwZSxcbiAgICBEYXRlcGlja2VyQ29tcG9uZW50LFxuICAgIE1hdENhcmQsXG4gICAgTWF0Q2FyZENvbnRlbnQsXG4gICAgTWF0Q2FyZEhlYWRlcixcbiAgICBNYXRDYXJkVGl0bGUsXG4gICAgTWF0Q2VsbCxcbiAgICBNYXRUYWJsZU1vZHVsZSxcbiAgICBNYXRDZWxsRGVmLFxuICAgIE1hdENvbHVtbkRlZixcbiAgICBNYXRIZWFkZXJDZWxsLFxuICAgIE1hdEhlYWRlclJvdyxcbiAgICBNYXRIZWFkZXJSb3dEZWYsXG4gICAgTWF0SWNvbixcbiAgICBNYXRSaXBwbGUsXG4gICAgTWF0Um93LFxuICAgIE1hdFJvd0RlZixcbiAgICBNYXRTbGlkZVRvZ2dsZSxcbiAgICBNYXRUYWJsZSxcbiAgICBNYXRUb29sdGlwLFxuICAgIE5nRm9yT2YsXG4gICAgTmdJZixcbiAgICBQcm9ncmVzc1NwaW5uZXJDb21wb25lbnQsXG4gICAgVHJhbnNsYXRlTW9kdWxlLFxuICAgIEZvcm1zTW9kdWxlLFxuICBdLFxuICB0ZW1wbGF0ZVVybDogJy4uL2NvdW50cy13aXRoLWhpc3RvcnkvY291bnRzLXdpdGgtaGlzdG9yeS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuLi9jb3VudHMtd2l0aC1oaXN0b3J5L2NvdW50cy13aXRoLWhpc3RvcnkuY29tcG9uZW50LnNjc3MnLCAnLi90cmVlLWxpY2Vuc2UuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgVHJlZUxpY2Vuc2VDb21wb25lbnRcbiAgZXh0ZW5kcyBCYXNlSGlzdG9yaWNEYXRhVGFibGVEaXJlY3RpdmU8XG4gICAgTG9hZGluZ0RhdGEsXG4gICAgKGNvbGxlY3Rpb25JZDogc3RyaW5nLCBmaWx0ZXJzOiBGaWx0ZXJbXSkgPT4gT2JzZXJ2YWJsZTxRdWFsaXR5TWF0cml4PlxuICA+XG4gIGltcGxlbWVudHMgT25Jbml0XG57XG4gIHByaXZhdGUgY29sSWQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+KCdkZWZhdWx0Q29sbGVjdGlvbicpO1xuXG4gIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlIH0pXG4gIHNldCBjb2xsZWN0aW9uSWQoaWQ6IHN0cmluZykge1xuICAgIHRoaXMuY29sSWQkLm5leHQoaWQpO1xuICB9XG5cbiAgQElucHV0KHsgcmVxdWlyZWQ6IGZhbHNlIH0pXG4gIHNvdXJjZVR5cGU6ICdyZXBsaWNhdGlvblNvdXJjZScgfCAnY29sbGVjdGlvbicgPSAnY29sbGVjdGlvbic7XG5cbiAgcHJvdGVjdGVkIGdldENvdW50QnlEYXRlKGRhdGE6IExvYWRpbmdEYXRhKTogT2JzZXJ2YWJsZTxNYXRyaXhXaXRoQ291bnRzPiB7XG4gICAgY29uc3QgZmlsdGVyOiBGaWx0ZXIgPSB7XG4gICAgICBmaWVsZDogJ2FzT2YnLFxuICAgICAgdmFsdWVzOiBbeyBpZDogZGF0YS5kYXRlLnRvSVNPKHsgaW5jbHVkZU9mZnNldDogZmFsc2UgfSkhLCBsYWJlbDogJycgfV0sXG4gICAgfTtcbiAgICByZXR1cm4gb2YodW5kZWZpbmVkKS5waXBlKFxuICAgICAgdGFwKCgpID0+IHRoaXMubG9hZGluZ0NvdW50LnVwZGF0ZSgoaXQpID0+IGl0ICsgMSkpLFxuICAgICAgc3dpdGNoTWFwKCgpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWV0YUFwaVt0aGlzLmFwaU1ldGhvZF0odGhpcy5jb2xJZCQuZ2V0VmFsdWUoKSwgW2ZpbHRlcl0pLnBpcGUoXG4gICAgICAgICAgZmluYWxpemUoKCkgPT4gdGhpcy5sb2FkaW5nQ291bnQudXBkYXRlKChpdCkgPT4gaXQgLSAxKSlcbiAgICAgICAgKTtcbiAgICAgIH0pLFxuICAgICAgbWFwKChyZXNwb25zZSkgPT4ge1xuICAgICAgICBjb25zdCBjYXN0ZWRSb3dzID0gcmVzcG9uc2Uucm93cy5tYXAoKHJvdykgPT4gcm93IGFzIHVua25vd24gYXMgUXVhbGl0eU1hdHJpeFJvdyk7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAuLi5yZXNwb25zZSxcbiAgICAgICAgICAvLyByZXR1cm4gdGhlIHN1ZmZpY2llbnQgcGFydCBvZiB0aGUgY291bnRzLCBiZWNhdXNlIHRoZSBhcGkgcmV0dXJuIGEgUXVhbGl0eU1hdHJpeCBub3QgYSBNYXRyaXhXaXRoQ291bnRzXG5cbiAgICAgICAgICByb3dzOiBjYXN0ZWRSb3dzLm1hcCgocm93KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBjb3VudHMgPSBPYmplY3QuZnJvbUVudHJpZXMoXG4gICAgICAgICAgICAgIE9iamVjdC5lbnRyaWVzKHJvdy5jb3VudHMpLm1hcCgoW2tleSwgdmFsdWVdKSA9PiBba2V5LCB2YWx1ZS5zdWZmaWNpZW50XSBhcyBjb25zdClcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgIC4uLnJvdyxcbiAgICAgICAgICAgICAgY291bnRzLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9KSxcbiAgICAgICAgfTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuYXBpTWV0aG9kID8/PSAnZ2V0TGljZW5zZUNvdW50c0J5TGljZW5zZUdyb3VwJztcblxuICAgIGNvbWJpbmVMYXRlc3QoW3RoaXMuY29sSWQkLCB0aGlzLnJhbmdlLnZhbHVlQ2hhbmdlc10pXG4gICAgICAucGlwZShcbiAgICAgICAgdGFwKChbY29sbGVjdGlvbklkLCByYW5nZV0pID0+IHtcbiAgICAgICAgICB0aGlzLmRhdGFGb3JQYXN0RGF0YSQubmV4dCh7XG4gICAgICAgICAgICBkYXRlOiByYW5nZS5zdGFydCxcbiAgICAgICAgICAgIGNvbGxlY3Rpb25JZDogY29sbGVjdGlvbklkLFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIHRoaXMuZGF0YUZvclJlY2VudERhdGEkLm5leHQoe1xuICAgICAgICAgICAgZGF0ZTogcmFuZ2UuZW5kLFxuICAgICAgICAgICAgY29sbGVjdGlvbklkOiBjb2xsZWN0aW9uSWQsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pLFxuICAgICAgICB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgpO1xuXG4gICAgdGhpcy5pc0hpc3RvcnlFbmFibGVkJFxuICAgICAgLnBpcGUoXG4gICAgICAgIHRhcCgoZW5hYmxlZCkgPT4ge1xuICAgICAgICAgIHRoaXMucmFuZ2UuY29udHJvbHMuZW5kLnJlc2V0KCk7XG4gICAgICAgICAgaWYgKCFlbmFibGVkKSB7XG4gICAgICAgICAgICB0aGlzLnN0YXJ0RGF0ZVN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgICAgIHRoaXMuc3RhcnRWYWx1ZXNTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMucmFuZ2UuY29udHJvbHMuc3RhcnQucmVzZXQoKTtcbiAgICAgICAgICBpZiAoIXRoaXMudGltZUZpbHRlckxvYWRlZCgpKSB7XG4gICAgICAgICAgICB0aGlzLnN0YXJ0RGF0ZVN1YnNjcmlwdGlvbiA9IHRoaXMudGltZXJhbmdlU3RhcnQkXG4gICAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIHRha2UoMSksXG4gICAgICAgICAgICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgIHRoaXMuc3RhcnRWYWx1ZXNTdWJzY3JpcHRpb24gPSB0aGlzLnN0YXJ0VmFsdWVzJC5zdWJzY3JpYmUoKTtcbiAgICAgICAgICAgICAgICAgIHRoaXMucmFuZ2UuY29udHJvbHMuc3RhcnQucmVzZXQoKTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIC5zdWJzY3JpYmUoKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5zdGFydFZhbHVlc1N1YnNjcmlwdGlvbiA9IHRoaXMuc3RhcnRWYWx1ZXMkLnN1YnNjcmliZSgpO1xuICAgICAgICAgICAgdGhpcy5yYW5nZS5jb250cm9scy5zdGFydC5yZXNldCgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSksXG4gICAgICAgIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG5cbiAgICB0aGlzLmVuZFZhbHVlcyQuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgdmFsaWRhdGVMb2FkaW5nRGF0YShkYXRhOiBQYXJ0aWFsPExvYWRpbmdEYXRhPik6IGRhdGEgaXMgTG9hZGluZ0RhdGEge1xuICAgIHJldHVybiAhIWRhdGE/LmNvbGxlY3Rpb25JZCAmJiAoZGF0YS5kYXRlPy5pc1ZhbGlkID8/IGZhbHNlKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBjb21wYXJlTG9hZGluZ0RhdGFFcXVhbChhOiBMb2FkaW5nRGF0YSwgYjogTG9hZGluZ0RhdGEpOiBib29sZWFuIHtcbiAgICByZXR1cm4gYS5jb2xsZWN0aW9uSWQgPT09IGIuY29sbGVjdGlvbklkICYmIGEuZGF0ZS5lcXVhbHMoYi5kYXRlKTtcbiAgfVxufVxuIiwiPG1hdC1jYXJkIGFwcGVhcmFuY2U9XCJyYWlzZWRcIj5cbiAgPG1hdC1jYXJkLWhlYWRlciAqbmdJZj1cInBhZ2VUaXRsZVwiPlxuICAgIDxtYXQtY2FyZC10aXRsZSBkYXRhLXRlc3QtaWQ9XCJwYWdlLXRpdGxlXCI+XG4gICAgICBRdWFsaXTDpHRzbWV0cmlrOiB7eyBwYWdlVGl0bGUgfCB0cmFuc2xhdGUgfX17eyBpc0xvYWRpbmcoKSA/IFwiOiBMYWRlIG5ldWUgRGF0ZW4uXCIgOiBcIlwiIH19XG4gICAgPC9tYXQtY2FyZC10aXRsZT5cbiAgPC9tYXQtY2FyZC1oZWFkZXI+XG4gIDwhLS0gY29uc2lkZXIgdG8gcHV0IHRoZSBmaWx0ZXIgaW4gdGhlIHRhYmxlIGhlYWRlciB0byBhdm9pZCB0aGF0IGl0IGlzIHNjcm9sbGVkIG91dCBvZiB2aWV3LS0+XG4gIDwhLS0gc2hvdyB0aGUgZmlsdGVyIGFmdGVyIHRoZSB2YWx1ZXMgYXJlIGxvYWRlZCB0byBhdm9pZCBsb2FkaW5nIGN1cnJlbnQgZGF0YSB0d2ljZSAtLT5cbiAgPG1hdC1jYXJkLWNvbnRlbnQgY2xhc3M9XCJ0b29sYmFyXCI+XG4gICAgPG1ldGFxczItZGF0ZXBpY2tlciBzdHlsZT1cImRpc3BsYXk6IGlubGluZS1ibG9ja1wiIG1hdFJpcHBsZSBbZGlzYWJsZWRdPVwiaXNMb2FkaW5nKCkgfHwgIWlzSGlzdG9yeUVuYWJsZWQoKVwiIFtpbnB1dEdyb3VwXT1cInJhbmdlXCIgKm5nSWY9XCJ0aW1lRmlsdGVyTG9hZGVkKCkgJiYgaXNIaXN0b3J5RW5hYmxlZCgpXCI+PC9tZXRhcXMyLWRhdGVwaWNrZXI+XG4gICAgPGRpdiBzdHlsZT1cImZsZXg6IDEgMSBhdXRvXCI+PC9kaXY+XG4gICAgPG1hdC1zbGlkZS10b2dnbGUgW25nTW9kZWxdPVwiaXNIaXN0b3J5RW5hYmxlZCgpXCIgKG5nTW9kZWxDaGFuZ2UpPVwiaXNIaXN0b3J5RW5hYmxlZC5zZXQoJGV2ZW50KVwiIFtkaXNhYmxlZF09XCJpc0xvYWRpbmcoKVwiPlxuICAgICAgPGxhYmVsPlplaWdlIGhpc3RvcmlzY2hlIERhdGVuPC9sYWJlbD5cbiAgICA8L21hdC1zbGlkZS10b2dnbGU+XG4gIDwvbWF0LWNhcmQtY29udGVudD5cbjwvbWF0LWNhcmQ+XG48bWF0LWNhcmQ+XG4gIDxtZXRhcXMyLXByb2dyZXNzLXNwaW5uZXIgW2Rpc3BsYXlQcm9ncmVzc1NwaW5uZXJdPVwiaXNMb2FkaW5nKClcIj48L21ldGFxczItcHJvZ3Jlc3Mtc3Bpbm5lcj5cbiAgPHRhYmxlIFtjbGFzcy53aGlsZS1sb2FkaW5nXT1cImlzTG9hZGluZygpXCIgbWF0LXRhYmxlIFtkYXRhU291cmNlXT1cInJlY2VudFR5cGVDb3VudCQudmFsdWUucm93c1wiXG4gICAgICAgICBjbGFzcz1cInF1YWxpdHktbWF0cml4XCI+XG4gICAgPCEtLSBEZWZpbmUgY29sdW1ucyBvZiB0YWJsZSAtLT5cbiAgICA8IS0tIFJvdyBIZWFkZXIgQ29sdW1uIC0tPlxuICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwibGFiZWwtY29sXCIgc3RpY2t5PlxuICAgICAgPHRoIFthdHRyLnJvd3NwYW5dPVwiaXNIaXN0b3J5RW5hYmxlZCgpID8gJzInIDogJzEnXCIgbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmPlxuICAgICAgICA8ZGl2PlF1ZWxsZTwvZGl2PlxuICAgICAgPC90aD5cbiAgICAgIDx0ZFxuICAgICAgICBtYXQtY2VsbFxuICAgICAgICAqbWF0Q2VsbERlZj1cImxldCByb3dcIlxuICAgICAgICBbbWF0VG9vbHRpcF09XCJyb3cubWV0YS5hbHRfbGFiZWxcIlxuICAgICAgICBjbGFzcz1cImxhYmVsLWNvbCBtYXQtY2VsbC1sZXZlbC17e3Jvdy5tZXRhLmxldmVsICsgMX19XCJcbiAgICAgID5cbiAgICAgICAge3sgcm93Lm1ldGEubGFiZWwgfX1cbiAgICAgIDwvdGQ+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPCEtLSBvbmUgY29sdW1uIGZvciBlYWNoIHR5cGUgLS0+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgY29sIG9mIChyZWNlbnRUeXBlQ291bnQkIHwgYXN5bmMpPy5jb2x1bW5zOyB0cmFja0J5OmNvbHVtbklkZW50XCJcbiAgICAgICAgICAgICAgICAgIFttYXRDb2x1bW5EZWZdPVwiY29sLmlkICsgJ190eXBlJ1wiPlxuICAgICAgPHRoIFthdHRyLmNvbHNwYW5dPVwiaXNIaXN0b3J5RW5hYmxlZCgpID8gJzInIDogJzEnXCIgbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmIFttYXRUb29sdGlwXT1cImNvbC5sYWJlbFwiPlxuICAgICAgICB7eyBjb2x1bW5UcmFuc2xhdGlvbmtleSA/IChjb2x1bW5UcmFuc2xhdGlvbmtleSArIGNvbC5sYWJlbCB8IHRyYW5zbGF0ZSkgOiBjb2wubGFiZWwgfX1cbiAgICAgIDwvdGg+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPCEtLSBvbmUgY29sdW1uIGZvciBlYWNoIHR5cGUgZm9yIHRoZSBtb3N0IGN1cnJlbnQgZGF0ZS0tPlxuICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGNvbCBvZiAocmVjZW50VHlwZUNvdW50JCB8IGFzeW5jKT8uY29sdW1uczsgdHJhY2tCeTpjb2x1bW5JZGVudFwiXG4gICAgICAgICAgICAgICAgICBbbWF0Q29sdW1uRGVmXT1cImNvbC5pZCArICdfcmVjZW50J1wiPlxuICAgICAgPHRoIGNsYXNzPVwicmVjZW50LWRhdGEtY2VsbFwiIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZlxuICAgICAgICAgIG1hdFRvb2x0aXA9XCJubyB0b29sdGlwXCI+e3sgcmFuZ2UuY29udHJvbHMuZW5kLnZhbHVlLnRvTG9jYWxlU3RyaW5nKERhdGVUaW1lLkRBVEVfU0hPUlQpIH19XG4gICAgICA8L3RoPlxuICAgICAgPHRkIGNsYXNzPVwicmVjZW50LWRhdGEtY2VsbFwiIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IHJvd1wiPlxuICAgICAgICA8YSBbYXR0ci5ocmVmXT1cIm9wZW5JbkVkaXRvcihyb3cubWV0YS5pZCwgY29sLmlkKSB8IGFzeW5jXCIgdGFyZ2V0PVwiZWRpdG9yX2Zyb250ZW5kXCI+e3sgcm93LmNvdW50c1tjb2wuaWRdID8/ICfigJMnIH19PC9hPlxuICAgICAgPC90ZD5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8IS0tIG9uZSBjb2x1bW4gZm9yIGVhY2ggdHlwZSBmb3IgdGhlIG9sZGVyIGRhdGUtLT5cbiAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBjb2wgb2YgKHJlY2VudFR5cGVDb3VudCQgfCBhc3luYyk/LmNvbHVtbnM7IHRyYWNrQnk6Y29sdW1uSWRlbnRcIlxuICAgICAgICAgICAgICAgICAgW21hdENvbHVtbkRlZl09XCJjb2wuaWQgKyAnX3Bhc3QnXCI+XG4gICAgICA8dGggY2xhc3M9XCJwYXN0LWRhdGEtY2VsbFwiIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZiBtYXRUb29sdGlwPVwibm8gdG9vbHRpcFwiPlxuICAgICAgICB7eyAocGFzdFR5cGVDb3VudCQgfCBhc3luYyk/LnJvd3M/Lmxlbmd0aCA/IHJhbmdlLmNvbnRyb2xzLnN0YXJ0LnZhbHVlLnRvTG9jYWxlU3RyaW5nKERhdGVUaW1lLkRBVEVfU0hPUlQpIDogJ25vIHBhc3QgZGF0YScgfX1cbiAgICAgIDwvdGg+XG4gICAgICA8dGQgY2xhc3M9XCJwYXN0LWRhdGEtY2VsbFwiIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IHJvdztcIiA+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIocGFzdFR5cGVDb3VudCQgfCBhc3luYyk/LnJvd3M/Lmxlbmd0aCAmJiBwYXN0VHlwZUNvdW50KHJvdywgY29sLmlkKSBhcyB0cmVuZFwiPlxuICAgICAgICAgIDxzcGFuIFtjbGFzc109XCJ0cmVuZC50cmVuZFwiPiB7eyB0cmVuZC52YWx1ZSA/PyAn4oCTJyB9fVxuICAgICAgICAgICAgPG1hdC1pY29uICpuZ0lmPVwidHJlbmQudmFsdWVcIiBhcmlhLWhpZGRlbj1cImZhbHNlXCIgW2F0dHIuYXJpYS1sYWJlbF09XCJ0cmVuZC50cmVuZFwiIFtmb250SWNvbl09XCJ0cmVuZC50cmVuZCFcIiAvPjwvc3Bhbj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImNkay12aXN1YWxseS1oaWRkZW5cIj57eyB0cmVuZC50cmVuZCB9fTwvc3Bhbj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L3RkPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwhLS0gZ2VuZXJhdGUgYWN0dWFsIHRhYmxlIC0tPlxuICAgIDx0ciBtYXQtaGVhZGVyLXJvdyAqbWF0SGVhZGVyUm93RGVmPVwiWydsYWJlbC1jb2wnXS5jb25jYXQodHlwZUNvbHVtbnMoKSk7IHN0aWNreTp0cnVlO1wiPjwvdHI+XG4gICAgPHRyIFtoaWRkZW5dPVwiIWlzSGlzdG9yeUVuYWJsZWQoKVwiIG1hdC1oZWFkZXItcm93ICptYXRIZWFkZXJSb3dEZWY9XCJhbGxDb2x1bW5zKCk7IHN0aWNreTogdHJ1ZTtcIj48L3RyPlxuICAgIDx0ciBtYXQtcm93ICptYXRSb3dEZWY9XCJsZXQgcm93OyBjb2x1bW5zOiBbJ2xhYmVsLWNvbCddLmNvbmNhdChhbGxDb2x1bW5zKCkpXCI+PC90cj5cblxuICA8L3RhYmxlPlxuPC9tYXQtY2FyZD5cbiJdfQ==