@cqa-lib/cqa-ui 0.1.2 → 1.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/lib/action-menu/action-menu.component.mjs +42 -0
- package/esm2020/lib/assets/images/image-assets.constants.mjs +28 -0
- package/esm2020/lib/badge/badge.component.mjs +141 -0
- package/esm2020/lib/button/button.component.mjs +42 -67
- package/esm2020/lib/column-visibility/column-visibility.component.mjs +69 -0
- package/esm2020/lib/dashboards/chart-card/chart-card.component.mjs +22 -0
- package/esm2020/lib/dashboards/coverage-module-card/coverage-module-card.component.mjs +105 -0
- package/esm2020/lib/dashboards/dashboard-header/dashboard-header.component.mjs +82 -0
- package/esm2020/lib/dashboards/failed-test-cases-card/failed-test-cases-card.component.mjs +59 -0
- package/esm2020/lib/dashboards/heat-error-map-cell/heat-error-map-cell.component.mjs +45 -0
- package/esm2020/lib/dashboards/insight-card/insight-card.component.mjs +201 -0
- package/esm2020/lib/dashboards/metrics-card/metrics-block.component.mjs +41 -0
- package/esm2020/lib/dashboards/metrics-card/metrics-card-item.interface.mjs +2 -0
- package/esm2020/lib/dashboards/metrics-card/metrics-card.component.mjs +62 -0
- package/esm2020/lib/dashboards/progress-text-card/progress-text-card.component.mjs +46 -0
- package/esm2020/lib/dashboards/test-distribution-card/test-distribution-card.component.mjs +35 -0
- package/esm2020/lib/dialog/dialog.component.mjs +4 -4
- package/esm2020/lib/dropdown-button/dropdown-button.component.mjs +189 -0
- package/esm2020/lib/dynamic-select/dynamic-select-field.component.mjs +160 -0
- package/esm2020/lib/empty-state/empty-state.component.mjs +37 -0
- package/esm2020/lib/filters/dynamic-filter/dynamic-filter.component.mjs +239 -0
- package/esm2020/lib/full-table-loader/full-table-loader.component.mjs +16 -0
- package/esm2020/lib/inline-sort/inline-sort.component.mjs +58 -0
- package/esm2020/lib/other-button/other-button.component.mjs +76 -0
- package/esm2020/lib/pagination/pagination.component.mjs +102 -0
- package/esm2020/lib/search-bar/search-bar.component.mjs +3 -3
- package/esm2020/lib/segment-control/segment-control.component.mjs +3 -3
- package/esm2020/lib/selected-filters/selected-filters.component.mjs +27 -0
- package/esm2020/lib/table/dynamic-table/dynamic-cell.directive.mjs +35 -0
- package/esm2020/lib/table/dynamic-table/dynamic-table.component.mjs +258 -0
- package/esm2020/lib/table-action-toolbar/table-action-toolbar.component.mjs +52 -0
- package/esm2020/lib/table-data-loader/table-data-loader.component.mjs +19 -0
- package/esm2020/lib/templates/table-template.component.mjs +365 -0
- package/esm2020/lib/ui-kit.module.mjs +196 -17
- package/esm2020/lib/utils/metadata-colors.util.mjs +100 -0
- package/esm2020/lib/utils/tw-overlay-container.mjs +22 -0
- package/esm2020/public-api.mjs +29 -1
- package/fesm2015/cqa-lib-cqa-ui.mjs +2899 -133
- package/fesm2015/cqa-lib-cqa-ui.mjs.map +1 -1
- package/fesm2020/cqa-lib-cqa-ui.mjs +2867 -133
- package/fesm2020/cqa-lib-cqa-ui.mjs.map +1 -1
- package/lib/action-menu/action-menu.component.d.ts +17 -0
- package/lib/assets/images/image-assets.constants.d.ts +20 -0
- package/lib/badge/badge.component.d.ts +25 -0
- package/lib/button/button.component.d.ts +6 -5
- package/lib/column-visibility/column-visibility.component.d.ts +33 -0
- package/lib/dashboards/chart-card/chart-card.component.d.ts +8 -0
- package/lib/dashboards/coverage-module-card/coverage-module-card.component.d.ts +44 -0
- package/lib/dashboards/dashboard-header/dashboard-header.component.d.ts +30 -0
- package/lib/dashboards/failed-test-cases-card/failed-test-cases-card.component.d.ts +28 -0
- package/lib/dashboards/heat-error-map-cell/heat-error-map-cell.component.d.ts +14 -0
- package/lib/dashboards/insight-card/insight-card.component.d.ts +73 -0
- package/lib/dashboards/metrics-card/metrics-block.component.d.ts +12 -0
- package/lib/dashboards/metrics-card/metrics-card-item.interface.d.ts +12 -0
- package/lib/dashboards/metrics-card/metrics-card.component.d.ts +17 -0
- package/lib/dashboards/progress-text-card/progress-text-card.component.d.ts +13 -0
- package/lib/dashboards/test-distribution-card/test-distribution-card.component.d.ts +29 -0
- package/lib/dropdown-button/dropdown-button.component.d.ts +32 -0
- package/lib/dynamic-select/dynamic-select-field.component.d.ts +43 -0
- package/lib/empty-state/empty-state.component.d.ts +20 -0
- package/lib/filters/dynamic-filter/dynamic-filter.component.d.ts +56 -0
- package/lib/full-table-loader/full-table-loader.component.d.ts +6 -0
- package/lib/inline-sort/inline-sort.component.d.ts +12 -0
- package/lib/other-button/other-button.component.d.ts +37 -0
- package/lib/pagination/pagination.component.d.ts +37 -0
- package/lib/selected-filters/selected-filters.component.d.ts +17 -0
- package/lib/table/dynamic-table/dynamic-cell.directive.d.ts +16 -0
- package/lib/table/dynamic-table/dynamic-table.component.d.ts +72 -0
- package/lib/table-action-toolbar/table-action-toolbar.component.d.ts +34 -0
- package/lib/table-data-loader/table-data-loader.component.d.ts +7 -0
- package/lib/templates/table-template.component.d.ts +90 -0
- package/lib/ui-kit.module.d.ts +43 -6
- package/lib/utils/metadata-colors.util.d.ts +50 -0
- package/lib/utils/tw-overlay-container.d.ts +12 -0
- package/package.json +1 -1
- package/public-api.d.ts +28 -0
- package/src/assets/fonts/SFUIText-Bold/SF-UI-Text-Bold.eot +0 -0
- package/src/assets/fonts/SFUIText-Bold/SF-UI-Text-Bold.otf +0 -0
- package/src/assets/fonts/SFUIText-Bold/SF-UI-Text-Bold.svg +14730 -0
- package/src/assets/fonts/SFUIText-Bold/SF-UI-Text-Bold.ttf +0 -0
- package/src/assets/fonts/SFUIText-Bold/SF-UI-Text-Bold.woff +0 -0
- package/src/assets/fonts/SFUIText-Bold/SF-UI-Text-Bold.woff2 +0 -0
- package/src/assets/fonts/SFUIText-Light/SF-UI-Text-Light.eot +0 -0
- package/src/assets/fonts/SFUIText-Light/SF-UI-Text-Light.otf +0 -0
- package/src/assets/fonts/SFUIText-Light/SF-UI-Text-Light.svg +21333 -0
- package/src/assets/fonts/SFUIText-Light/SF-UI-Text-Light.ttf +0 -0
- package/src/assets/fonts/SFUIText-Light/SF-UI-Text-Light.woff +0 -0
- package/src/assets/fonts/SFUIText-Light/SF-UI-Text-Light.woff2 +0 -0
- package/src/assets/fonts/SFUIText-Medium/SF-UI-Text-Medium.eot +0 -0
- package/src/assets/fonts/SFUIText-Medium/SF-UI-Text-Medium.otf +0 -0
- package/src/assets/fonts/SFUIText-Medium/SF-UI-Text-Medium.svg +14584 -0
- package/src/assets/fonts/SFUIText-Medium/SF-UI-Text-Medium.ttf +0 -0
- package/src/assets/fonts/SFUIText-Medium/SF-UI-Text-Medium.woff +0 -0
- package/src/assets/fonts/SFUIText-Medium/SF-UI-Text-Medium.woff2 +0 -0
- package/src/assets/fonts/SFUIText-Regular/SF-UI-Text-Regular.eot +0 -0
- package/src/assets/fonts/SFUIText-Regular/SF-UI-Text-Regular.otf +0 -0
- package/src/assets/fonts/SFUIText-Regular/SF-UI-Text-Regular.svg +17870 -0
- package/src/assets/fonts/SFUIText-Regular/SF-UI-Text-Regular.ttf +0 -0
- package/src/assets/fonts/SFUIText-Regular/SF-UI-Text-Regular.woff +0 -0
- package/src/assets/fonts/SFUIText-Regular/SF-UI-Text-Regular.woff2 +0 -0
- package/src/assets/fonts/SFUIText-Semibold/SF-UI-Text-Semibold.eot +0 -0
- package/src/assets/fonts/SFUIText-Semibold/SF-UI-Text-Semibold.otf +0 -0
- package/src/assets/fonts/SFUIText-Semibold/SF-UI-Text-Semibold.svg +14732 -0
- package/src/assets/fonts/SFUIText-Semibold/SF-UI-Text-Semibold.ttf +0 -0
- package/src/assets/fonts/SFUIText-Semibold/SF-UI-Text-Semibold.woff +0 -0
- package/src/assets/fonts/SFUIText-Semibold/SF-UI-Text-Semibold.woff2 +0 -0
- package/src/lib/assets/images/.gitkeep +0 -0
- package/src/lib/assets/images/DashboardIcon.png +0 -0
- package/src/lib/assets/images/FilesIcon.png +0 -0
- package/src/lib/assets/images/README.md +66 -0
- package/src/lib/assets/images/ReportsIcon.png +0 -0
- package/src/lib/assets/images/SearchIcon.png +0 -0
- package/src/lib/assets/images/StepsIcon.png +0 -0
- package/src/lib/assets/images/TestCaseIcon.png +0 -0
- package/src/lib/assets/images/analytics-chart-icon.svg +11 -0
- package/src/lib/assets/images/checklist-add-icon.svg +10 -0
- package/src/lib/assets/images/document-gear-icon.svg +9 -0
- package/src/lib/assets/images/empty-state-default-icon.svg +8 -0
- package/src/lib/assets/images/image-assets.constants.ts +38 -0
- package/src/lib/assets/images/search-debug-icon.svg +8 -0
- package/src/lib/assets/images/test-case-icon.svg +9 -0
- package/src/lib/assets/images/upload-folder-icon.svg +7 -0
- package/src/lib/utils/metadata-colors.constants.js +33 -0
- package/storybook-static/assets/images/README.md +66 -0
- package/styles.css +1 -1
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, Input } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
import * as i1 from "@angular/common";
|
|
4
|
+
export class ChartCardComponent {
|
|
5
|
+
constructor() {
|
|
6
|
+
this.title = 'Chart';
|
|
7
|
+
this.cardClass = '';
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
ChartCardComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: ChartCardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
11
|
+
ChartCardComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: ChartCardComponent, selector: "cqa-chart-card", inputs: { title: "title", subtitle: "subtitle", cardClass: "cardClass" }, ngImport: i0, template: "<div id=\"cqa-ui-root\">\n <div\n class=\"cqa-w-full cqa-box-border cqa-flex cqa-flex-col cqa-bg-white cqa-border cqa-border-solid cqa-border-[#E5E7EB] cqa-rounded-[10px]\"\n [ngClass]=\"cardClass\">\n <!-- Header -->\n <div\n class=\"cqa-flex cqa-items-center cqa-justify-between cqa-px-4 sm:cqa-px-6 cqa-py-3 cqa-border-b cqa-border-[#E5E7EB]\">\n <div class=\"cqa-flex cqa-flex-col\">\n <div class=\"cqa-text-[14px] cqa-leading-5 cqa-font-semibold cqa-text-[#101828]\">{{ title }}</div>\n <div *ngIf=\"subtitle\" class=\"cqa-text-[12px] cqa-leading-4 cqa-text-[#6A7282] cqa-mt-0.5\">{{ subtitle }}</div>\n </div>\n <!-- Right-side actions slot -->\n <div class=\"cqa-flex cqa-items-center cqa-gap-2\">\n <ng-content select=\"[chart-actions]\"></ng-content>\n </div>\n </div>\n\n <!-- Chart/content area -->\n <div class=\"cqa-p-3 sm:cqa-p-4\">\n <div class=\"cqa-w-full cqa-min-h-[220px]\">\n <ng-content></ng-content>\n </div>\n </div>\n </div>\n</div>", directives: [{ type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
12
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: ChartCardComponent, decorators: [{
|
|
13
|
+
type: Component,
|
|
14
|
+
args: [{ selector: 'cqa-chart-card', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div id=\"cqa-ui-root\">\n <div\n class=\"cqa-w-full cqa-box-border cqa-flex cqa-flex-col cqa-bg-white cqa-border cqa-border-solid cqa-border-[#E5E7EB] cqa-rounded-[10px]\"\n [ngClass]=\"cardClass\">\n <!-- Header -->\n <div\n class=\"cqa-flex cqa-items-center cqa-justify-between cqa-px-4 sm:cqa-px-6 cqa-py-3 cqa-border-b cqa-border-[#E5E7EB]\">\n <div class=\"cqa-flex cqa-flex-col\">\n <div class=\"cqa-text-[14px] cqa-leading-5 cqa-font-semibold cqa-text-[#101828]\">{{ title }}</div>\n <div *ngIf=\"subtitle\" class=\"cqa-text-[12px] cqa-leading-4 cqa-text-[#6A7282] cqa-mt-0.5\">{{ subtitle }}</div>\n </div>\n <!-- Right-side actions slot -->\n <div class=\"cqa-flex cqa-items-center cqa-gap-2\">\n <ng-content select=\"[chart-actions]\"></ng-content>\n </div>\n </div>\n\n <!-- Chart/content area -->\n <div class=\"cqa-p-3 sm:cqa-p-4\">\n <div class=\"cqa-w-full cqa-min-h-[220px]\">\n <ng-content></ng-content>\n </div>\n </div>\n </div>\n</div>", styles: [] }]
|
|
15
|
+
}], propDecorators: { title: [{
|
|
16
|
+
type: Input
|
|
17
|
+
}], subtitle: [{
|
|
18
|
+
type: Input
|
|
19
|
+
}], cardClass: [{
|
|
20
|
+
type: Input
|
|
21
|
+
}] } });
|
|
22
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhcnQtY2FyZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2Rhc2hib2FyZHMvY2hhcnQtY2FyZC9jaGFydC1jYXJkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvZGFzaGJvYXJkcy9jaGFydC1jYXJkL2NoYXJ0LWNhcmQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7OztBQVExRSxNQUFNLE9BQU8sa0JBQWtCO0lBTi9CO1FBT1csVUFBSyxHQUFXLE9BQU8sQ0FBQztRQUV4QixjQUFTLEdBQVcsRUFBRSxDQUFDO0tBQ2pDOzsrR0FKWSxrQkFBa0I7bUdBQWxCLGtCQUFrQixnSUNSL0IsNGhDQXdCTTsyRkRoQk8sa0JBQWtCO2tCQU45QixTQUFTOytCQUNFLGdCQUFnQixtQkFHVCx1QkFBdUIsQ0FBQyxNQUFNOzhCQUd0QyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY3FhLWNoYXJ0LWNhcmQnLFxuICB0ZW1wbGF0ZVVybDogJy4vY2hhcnQtY2FyZC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogW10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBDaGFydENhcmRDb21wb25lbnQge1xuICBASW5wdXQoKSB0aXRsZTogc3RyaW5nID0gJ0NoYXJ0JztcbiAgQElucHV0KCkgc3VidGl0bGU/OiBzdHJpbmc7XG4gIEBJbnB1dCgpIGNhcmRDbGFzczogc3RyaW5nID0gJyc7XG59XG5cblxuIiwiPGRpdiBpZD1cImNxYS11aS1yb290XCI+XG4gIDxkaXZcbiAgICBjbGFzcz1cImNxYS13LWZ1bGwgY3FhLWJveC1ib3JkZXIgY3FhLWZsZXggY3FhLWZsZXgtY29sIGNxYS1iZy13aGl0ZSBjcWEtYm9yZGVyIGNxYS1ib3JkZXItc29saWQgY3FhLWJvcmRlci1bI0U1RTdFQl0gY3FhLXJvdW5kZWQtWzEwcHhdXCJcbiAgICBbbmdDbGFzc109XCJjYXJkQ2xhc3NcIj5cbiAgICA8IS0tIEhlYWRlciAtLT5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cImNxYS1mbGV4IGNxYS1pdGVtcy1jZW50ZXIgY3FhLWp1c3RpZnktYmV0d2VlbiBjcWEtcHgtNCBzbTpjcWEtcHgtNiBjcWEtcHktMyBjcWEtYm9yZGVyLWIgY3FhLWJvcmRlci1bI0U1RTdFQl1cIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtZmxleC1jb2xcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNxYS10ZXh0LVsxNHB4XSBjcWEtbGVhZGluZy01IGNxYS1mb250LXNlbWlib2xkIGNxYS10ZXh0LVsjMTAxODI4XVwiPnt7IHRpdGxlIH19PC9kaXY+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJzdWJ0aXRsZVwiIGNsYXNzPVwiY3FhLXRleHQtWzEycHhdIGNxYS1sZWFkaW5nLTQgY3FhLXRleHQtWyM2QTcyODJdIGNxYS1tdC0wLjVcIj57eyBzdWJ0aXRsZSB9fTwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8IS0tIFJpZ2h0LXNpZGUgYWN0aW9ucyBzbG90IC0tPlxuICAgICAgPGRpdiBjbGFzcz1cImNxYS1mbGV4IGNxYS1pdGVtcy1jZW50ZXIgY3FhLWdhcC0yXCI+XG4gICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltjaGFydC1hY3Rpb25zXVwiPjwvbmctY29udGVudD5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPCEtLSBDaGFydC9jb250ZW50IGFyZWEgLS0+XG4gICAgPGRpdiBjbGFzcz1cImNxYS1wLTMgc206Y3FhLXAtNFwiPlxuICAgICAgPGRpdiBjbGFzcz1cImNxYS13LWZ1bGwgY3FhLW1pbi1oLVsyMjBweF1cIj5cbiAgICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+Il19
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
import * as i1 from "../../button/button.component";
|
|
4
|
+
import * as i2 from "@angular/common";
|
|
5
|
+
export class CoverageModuleCardComponent {
|
|
6
|
+
constructor() {
|
|
7
|
+
/** Card title, e.g. "AI Ask" */
|
|
8
|
+
this.title = 'Coverage';
|
|
9
|
+
/** Number of issues to display next to title */
|
|
10
|
+
this.issues = 0;
|
|
11
|
+
/** Optional "View" action visibility */
|
|
12
|
+
this.showViewAction = true;
|
|
13
|
+
/** Middle metrics: left group */
|
|
14
|
+
this.positiveCount = 0;
|
|
15
|
+
this.negativeCount = 0;
|
|
16
|
+
this.edgeCaseCount = 0;
|
|
17
|
+
this.positiveLabel = 'Positive';
|
|
18
|
+
this.negativeLabel = 'Negative';
|
|
19
|
+
this.edgeCaseLabel = 'Edge Case';
|
|
20
|
+
/** Middle metrics: right group */
|
|
21
|
+
this.aiCount = 0;
|
|
22
|
+
this.humanCount = 0;
|
|
23
|
+
this.aiLabel = 'AI';
|
|
24
|
+
this.humanLabel = 'Human';
|
|
25
|
+
/** Rows of coverage with percentage bars */
|
|
26
|
+
this.items = [];
|
|
27
|
+
/** CTA button label */
|
|
28
|
+
this.ctaText = 'AI Coverage';
|
|
29
|
+
/** Disable CTA */
|
|
30
|
+
this.ctaDisabled = false;
|
|
31
|
+
this.view = new EventEmitter();
|
|
32
|
+
this.ctaClicked = new EventEmitter();
|
|
33
|
+
}
|
|
34
|
+
statusColorClass(item) {
|
|
35
|
+
const status = item.status ?? 'neutral';
|
|
36
|
+
switch (status) {
|
|
37
|
+
case 'success':
|
|
38
|
+
return 'cqa-bg-[#10B981]'; // green
|
|
39
|
+
case 'error':
|
|
40
|
+
return 'cqa-bg-[#EF4444]'; // red
|
|
41
|
+
default:
|
|
42
|
+
return 'cqa-bg-[#3B82F6]'; // blue
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
textColorClass(item) {
|
|
46
|
+
const status = item.status ?? 'neutral';
|
|
47
|
+
switch (status) {
|
|
48
|
+
case 'success':
|
|
49
|
+
return 'cqa-text-[#10B981]';
|
|
50
|
+
case 'error':
|
|
51
|
+
return 'cqa-text-[#EF4444]';
|
|
52
|
+
default:
|
|
53
|
+
return 'cqa-text-[#374151]';
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
formatPercent(pct) {
|
|
57
|
+
if (pct === undefined || pct === null || Number.isNaN(pct))
|
|
58
|
+
return '0%';
|
|
59
|
+
const clamped = Math.max(0, Math.min(100, pct));
|
|
60
|
+
return `${clamped}%`;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
CoverageModuleCardComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: CoverageModuleCardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
64
|
+
CoverageModuleCardComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: CoverageModuleCardComponent, selector: "cqa-coverage-module-card", inputs: { title: "title", issues: "issues", showViewAction: "showViewAction", positiveCount: "positiveCount", negativeCount: "negativeCount", edgeCaseCount: "edgeCaseCount", positiveLabel: "positiveLabel", negativeLabel: "negativeLabel", edgeCaseLabel: "edgeCaseLabel", aiCount: "aiCount", humanCount: "humanCount", aiLabel: "aiLabel", humanLabel: "humanLabel", items: "items", ctaText: "ctaText", ctaDisabled: "ctaDisabled" }, outputs: { view: "view", ctaClicked: "ctaClicked" }, ngImport: i0, template: "<div id=\"cqa-ui-root\">\n <div\n class=\"cqa-w-full cqa-bg-white cqa-rounded-[8px] cqa-border cqa-border-solid cqa-border-[#E5E7EB] cqa-py-[10px] md:cqa-px-[17px] cqa-px-3 cqa-shadow-card\">\n <!-- Header -->\n <div class=\"cqa-flex cqa-items-start cqa-justify-between cqa-mb-3\">\n <h3 class=\"cqa-text-[18px] cqa-leading-[28px] cqa-font-bold cqa-text-dialog\">{{ title }}</h3>\n <div class=\"cqa-flex cqa-items-center cqa-gap-2\">\n <span\n class=\"cqa-px-[10px] cqa-py-[4px] cqa-text-[12px] cqa-leading-[16px] cqa-flex cqa-items-center cqa-gap-1 cqa-rounded-full cqa-bg-warning-light cqa-text-danger\">\n {{ issues }} {{ issues === 1 ? 'issue' : 'issues' }}\n </span>\n <button type=\"button\"\n class=\"cqa-text-[14px] cqa-leading-[20px] cqa-text-primary cqa-flex cqa-items-center cqa-gap-1\"\n *ngIf=\"showViewAction\" (click)=\"view.emit()\">\n View\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M6 12L10 8L6 4\" stroke=\"#4F46E5\" stroke-width=\"1.33333\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n </button>\n </div>\n </div>\n\n <!-- Middle metrics row -->\n <div class=\"cqa-grid md:cqa-grid-cols-4 cqa-grid-cols-2 cqa-gap-3 cqa-mb-4 cqa-border-t cqa-border-b cqa-border-surface-[#F3F4F6] cqa-py-2\">\n <!-- Left: Positive / Negative / Edge Case -->\n <div class=\"cqa-text-center\">\n <div class=\"cqa-text-[18px] cqa-leading-[28px] cqa-font-bold cqa-text-[#059669]\">{{ positiveCount }}</div>\n <div class=\"cqa-text-[12px] cqa-leading-[16px] cqa-text-dialog-muted\">{{ positiveLabel }}</div>\n </div>\n <div class=\"cqa-text-center\">\n <div class=\"cqa-text-[18px] cqa-leading-[28px] cqa-font-bold cqa-text-[#EF4444]\">{{ negativeCount }}</div>\n <div class=\"cqa-text-[12px] cqa-leading-[16px] cqa-text-dialog-muted\">{{ negativeLabel }}</div>\n </div>\n <div class=\"cqa-text-center\">\n <div class=\"cqa-text-[18px] cqa-leading-[28px] cqa-font-bold cqa-text-[#F59E0B]\">{{ edgeCaseCount }}</div>\n <div class=\"cqa-text-[12px] cqa-leading-[16px] cqa-text-dialog-muted\">{{ edgeCaseLabel }}</div>\n </div>\n\n <!-- Right: AI / Human -->\n <div class=\"cqa-text-center cqa-flex cqa-items-center cqa-justify-center cqa-flex-col\">\n <div class=\"cqa-flex cqa-items-center cqa-justify-center\">\n <div class=\"cqa-flex cqa-flex-col cqa-gap-1 cqa-items-center cqa-justify-center cqa-w-[60px]\">\n <span class=\"cqa-text-[12px] cqa-leading-[16px] cqa-font-bold cqa-text-primary cqa-flex cqa-items-center cqa-gap-[2px]\">\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><g clip-path=\"url(#clip0_7415_11751)\"><path d=\"M4.9685 7.75012C4.92386 7.57709 4.83367 7.41918 4.70731 7.29282C4.58095 7.16646 4.42304 7.07626 4.25 7.03162L1.1825 6.24062C1.13017 6.22577 1.08411 6.19425 1.05131 6.15085C1.01851 6.10744 1.00076 6.05453 1.00076 6.00012C1.00076 5.94572 1.01851 5.89281 1.05131 5.8494C1.08411 5.806 1.13017 5.77448 1.1825 5.75962L4.25 4.96812C4.42298 4.92353 4.58085 4.83341 4.7072 4.70714C4.83356 4.58088 4.92378 4.42307 4.9685 4.25012L5.7595 1.18262C5.7742 1.13008 5.80569 1.0838 5.84916 1.05082C5.89263 1.01785 5.94569 1 6.00025 1C6.05481 1 6.10787 1.01785 6.15134 1.05082C6.19481 1.0838 6.2263 1.13008 6.241 1.18262L7.0315 4.25012C7.07614 4.42316 7.16633 4.58107 7.29269 4.70743C7.41905 4.83379 7.57696 4.92399 7.75 4.96862L10.8175 5.75912C10.8703 5.77367 10.9168 5.80513 10.9499 5.84866C10.9831 5.8922 11.001 5.94541 11.001 6.00012C11.001 6.05484 10.9831 6.10805 10.9499 6.15159C10.9168 6.19512 10.8703 6.22657 10.8175 6.24112L7.75 7.03162C7.57696 7.07626 7.41905 7.16646 7.29269 7.29282C7.16633 7.41918 7.07614 7.57709 7.0315 7.75012L6.2405 10.8176C6.2258 10.8702 6.19431 10.9165 6.15084 10.9494C6.10737 10.9824 6.05431 11.0002 5.99975 11.0002C5.94519 11.0002 5.89213 10.9824 5.84866 10.9494C5.80519 10.9165 5.7737 10.8702 5.759 10.8176L4.9685 7.75012Z\" stroke=\"#7C3AED\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M10 1.5V3.5\" stroke=\"#7C3AED\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M11 2.5H9\" stroke=\"#7C3AED\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M2 8.5V9.5\" stroke=\"#7C3AED\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M2.5 9H1.5\" stroke=\"#7C3AED\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></g><defs><clipPath id=\"clip0_7415_11751\"><rect width=\"12\" height=\"12\" fill=\"white\"/></clipPath></defs></svg>\n {{ aiLabel }}\n </span>\n <span class=\"cqa-text-[14px] cqa-leading-[20px] cqa-font-bold cqa-text-dialog\">{{ aiCount }}</span>\n </div>\n <div class=\"cqa-bg-primary-surface cqa-w-[2px] cqa-h-full cqa-mx-[3.5px]\"></div>\n <div class=\"cqa-flex cqa-flex-col cqa-gap-1 cqa-items-center cqa-justify-center cqa-w-[60px]\">\n <span class=\"cqa-text-[12px] cqa-leading-[16px] cqa-font-bold cqa-text-dialog-secondary cqa-flex cqa-items-center cqa-gap-[2px]\">\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M9.5 10.5V9.5C9.5 8.96957 9.28929 8.46086 8.91421 8.08579C8.53914 7.71071 8.03043 7.5 7.5 7.5H4.5C3.96957 7.5 3.46086 7.71071 3.08579 8.08579C2.71071 8.46086 2.5 8.96957 2.5 9.5V10.5\" stroke=\"#3F43EE\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M6 5.5C7.10457 5.5 8 4.60457 8 3.5C8 2.39543 7.10457 1.5 6 1.5C4.89543 1.5 4 2.39543 4 3.5C4 4.60457 4.89543 5.5 6 5.5Z\" stroke=\"#3F43EE\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>\n {{ humanLabel }}\n </span>\n <span class=\"cqa-text-[14px] cqa-leading-[20px] cqa-font-bold cqa-text-dialog\">{{ humanCount }}</span>\n </div>\n </div>\n <div class=\"cqa-text-[12px] cqa-leading-[16px] cqa-text-dialog-muted cqa-pt-[2px] cqa-pb-1\">Coverage</div>\n </div>\n </div>\n\n <!-- Body -->\n <div class=\"cqa-flex cqa-flex-col cqa-gap-2 cqa-mb-3\">\n <div *ngFor=\"let it of items\" class=\"cqa-flex cqa-items-center cqa-gap-2\">\n <span class=\"md:cqa-w-full md:cqa-max-w-[216px] cqa-text-[12px] cqa-leading-[16px] cqa-text-dialog-secondary cqa-flex cqa-items-center cqa-gap-2\">\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M12.8333 6.46309V6.99976C12.8326 8.25767 12.4253 9.48165 11.6721 10.4892C10.9189 11.4967 9.86025 12.2337 8.65396 12.5904C7.44767 12.947 6.1584 12.9042 4.97844 12.4683C3.79848 12.0323 2.79105 11.2266 2.10639 10.1714C1.42174 9.11611 1.09654 7.8678 1.17931 6.61261C1.26208 5.35742 1.74837 4.16262 2.56566 3.20638C3.38295 2.25015 4.48746 1.58373 5.71444 1.30651C6.94143 1.02929 8.22515 1.15612 9.37417 1.66809\" stroke=\"#10B981\" stroke-width=\"1.16667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M5.25 6.41634L7 8.16634L12.8333 2.33301\" stroke=\"#10B981\" stroke-width=\"1.16667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>\n <!-- <svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M7 12.8337C10.2217 12.8337 12.8333 10.222 12.8333 7.00033C12.8333 3.77866 10.2217 1.16699 7 1.16699C3.77834 1.16699 1.16666 3.77866 1.16666 7.00033C1.16666 10.222 3.77834 12.8337 7 12.8337Z\" stroke=\"#EF4444\" stroke-width=\"1.16667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M7 4.66699V7.00033\" stroke=\"#EF4444\" stroke-width=\"1.16667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M7 9.33301H7.00583\" stroke=\"#EF4444\" stroke-width=\"1.16667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg> -->\n {{ it.label }}\n </span>\n <div class=\"cqa-flex-1 cqa-h-[6px] cqa-rounded-full cqa-bg-[#F3F4F6] cqa-overflow-hidden\">\n <div class=\"cqa-h-full cqa-rounded-full\" [ngClass]=\"statusColorClass(it)\"\n [style.width]=\"formatPercent(it.percent)\"></div>\n </div>\n <span class=\"cqa-min-w-[40px] cqa-text-[12px] cqa-leading-[16px] cqa-font-bold\" [ngClass]=\"textColorClass(it)\">{{\n formatPercent(it.percent) }}</span>\n </div>\n </div>\n\n <!-- Footer -->\n <cqa-button variant=\"filled\" [customClass]=\"'cqa-w-full cqa-text-[14px] cqa-leading-[20px] cqa-font-semibold'\">\n <svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M9.01882 0C9.12979 0.0454767 9.17718 0.15653 9.22261 0.259691C9.24539 0.319799 9.26628 0.380234 9.28657 0.44115C9.29452 0.464493 9.30246 0.487836 9.31065 0.511886C9.41613 0.826009 9.51008 1.1435 9.60457 1.46076C9.62593 1.53238 9.64739 1.60397 9.66885 1.67557C9.7781 2.04007 9.88654 2.4048 9.99438 2.76969C10.0095 2.82093 10.0247 2.87218 10.0398 2.92342C10.0826 3.0679 10.1252 3.21239 10.1677 3.35694C10.2573 3.66239 10.3495 3.96695 10.4476 4.27002C10.4561 4.29653 10.4647 4.32305 10.4735 4.35036C10.7284 5.12999 11.0896 5.82875 11.6818 6.42393C11.6965 6.4394 11.7111 6.45488 11.7262 6.47083C11.979 6.72875 12.3034 6.93541 12.6276 7.10221C12.6441 7.11085 12.6606 7.11948 12.6776 7.12838C13.6317 7.61851 14.779 7.83407 15.8124 8.12101C16.2652 8.24681 16.7166 8.37658 17.1663 8.51206C17.1979 8.52157 17.2296 8.53107 17.2612 8.54055C17.3557 8.5689 17.45 8.59774 17.5442 8.62694C17.5662 8.63358 17.5882 8.64023 17.6108 8.64707C17.7406 8.68812 17.8648 8.73658 17.9713 8.82054C18.0038 8.88837 18.0038 8.88837 17.995 8.95619C17.8913 9.05472 17.7884 9.10092 17.6516 9.14599C17.632 9.15264 17.6124 9.1593 17.5923 9.16615C17.3612 9.24366 17.127 9.31149 16.8925 9.37871C16.8444 9.39261 16.7963 9.40651 16.7482 9.42042C16.4514 9.50603 16.1542 9.5898 15.8566 9.67263C15.4646 9.78175 15.0733 9.89268 14.6823 10.0049C14.6182 10.0232 14.5541 10.0416 14.49 10.0598C14.1534 10.1557 13.8185 10.2551 13.4863 10.3642C13.4587 10.3732 13.4312 10.3822 13.4028 10.3915C12.2902 10.7616 11.4422 11.4522 10.9114 12.462C10.6253 13.0295 10.4565 13.6432 10.2843 14.2489C10.2377 14.4124 10.1882 14.5749 10.1381 14.7374C10.0988 14.8652 10.0604 14.9933 10.023 15.1216C10.0185 15.1369 10.0141 15.1522 10.0095 15.1679C9.98788 15.2419 9.96638 15.3159 9.94503 15.3899C9.89039 15.5776 9.83156 15.7637 9.77111 15.9498C9.66383 16.2804 9.5662 16.6135 9.46917 16.947C9.32288 17.4491 9.32288 17.4491 9.23993 17.6905C9.23443 17.7067 9.22893 17.7229 9.22326 17.7396C9.19298 17.8256 9.16183 17.9047 9.10453 17.9774C9.01734 17.9958 9.01734 17.9958 8.93901 18C8.84946 17.8752 8.79016 17.7542 8.74265 17.6102C8.73574 17.5897 8.72882 17.5693 8.7217 17.5483C8.63368 17.285 8.55502 17.0189 8.47634 16.7529C8.45832 16.6921 8.44022 16.6313 8.42211 16.5705C8.2872 16.1173 8.15451 15.6635 8.02202 15.2096C7.47014 12.9645 7.47014 12.9645 6.078 11.1493C6.05569 11.1319 6.03338 11.1145 6.01039 11.0966C5.09826 10.398 3.89667 10.1394 2.7963 9.83627C2.52415 9.76124 2.2521 9.68587 1.98006 9.61046C1.95628 9.60386 1.95628 9.60386 1.93201 9.59714C1.53962 9.48834 1.14735 9.37925 0.756448 9.26566C0.739911 9.26089 0.723375 9.25612 0.706338 9.25121C0.105798 9.07767 0.105798 9.07767 0.00129307 8.95619C-0.00166252 8.90108 -0.00166252 8.90108 0.0249378 8.84315C0.134167 8.7408 0.240153 8.69696 0.38432 8.65238C0.405194 8.64567 0.426068 8.63897 0.447574 8.63206C0.511506 8.61164 0.575577 8.59169 0.639702 8.57183C0.658001 8.56609 0.676301 8.56035 0.695155 8.55443C0.82457 8.51385 0.95445 8.47479 1.08452 8.43618C1.11648 8.42665 1.11648 8.42665 1.14909 8.41693C1.70454 8.25174 2.26361 8.09801 2.82252 7.94392C3.23899 7.82909 3.65476 7.71236 4.06921 7.59097C4.08825 7.58542 4.1073 7.57987 4.12692 7.57415C5.087 7.29393 6.02557 6.89632 6.64547 6.1074C6.65475 6.09569 6.66403 6.08399 6.6736 6.07194C7.36395 5.1963 7.63315 4.13145 7.93391 3.09241C8.03285 2.75069 8.13298 2.40929 8.23345 2.06798C8.26127 1.97347 8.28906 1.87894 8.31673 1.78439C8.42788 1.40458 8.5407 1.02528 8.66 0.647727C8.67116 0.612372 8.68227 0.577001 8.69333 0.541614C8.86035 0.00797522 8.86035 0.00797522 9.01882 0Z\" fill=\"#FBFCFF\"/><path d=\"M14.4719 1.11069C14.5805 1.22817 14.6022 1.36624 14.636 1.51625C14.7487 1.98751 14.8786 2.42084 15.3293 2.6946C15.6074 2.84167 15.9389 2.90859 16.247 2.9718C16.3771 2.99902 16.4869 3.03515 16.5985 3.1074C16.6236 3.14555 16.6236 3.14555 16.6221 3.21197C16.5963 3.29273 16.5736 3.31878 16.5054 3.37165C16.4308 3.39549 16.4308 3.39549 16.3413 3.41404C16.3075 3.42147 16.2736 3.42898 16.2398 3.43656C16.2217 3.44058 16.2036 3.4446 16.1849 3.44874C15.6339 3.57062 15.6339 3.57062 15.1576 3.84645C15.1421 3.85837 15.1267 3.87029 15.1107 3.88257C14.7703 4.16959 14.6983 4.64703 14.5958 5.04699C14.59 5.06896 14.5841 5.09092 14.578 5.11355C14.573 5.133 14.5679 5.15244 14.5627 5.17248C14.5405 5.23185 14.5176 5.27057 14.4719 5.31607C14.3447 5.33152 14.3447 5.33152 14.2828 5.31607C14.1843 5.24309 14.1623 5.15997 14.1366 5.04828C14.1322 5.03099 14.1279 5.01369 14.1235 4.99587C14.1098 4.94064 14.0965 4.88531 14.0833 4.82996C13.9796 4.39891 13.8625 3.976 13.449 3.72333C13.1258 3.55101 12.7329 3.46951 12.3717 3.4037C12.2727 3.38399 12.216 3.3592 12.1547 3.28121C12.1414 3.20208 12.1414 3.20208 12.1547 3.12294C12.2489 3.02971 12.348 3.00696 12.4754 2.97881C12.5156 2.9693 12.5557 2.95973 12.5958 2.9501C12.6165 2.94516 12.6372 2.94022 12.6586 2.93512C12.7642 2.90911 12.8689 2.87995 12.9734 2.85021C12.9924 2.84494 13.0114 2.83967 13.031 2.83424C13.2436 2.77346 13.4271 2.69571 13.5971 2.5577C13.6129 2.54523 13.6288 2.53276 13.6451 2.5199C13.9096 2.29228 13.9995 1.95032 14.081 1.63124C14.0873 1.60702 14.0935 1.5828 14.0999 1.55784C14.1123 1.50918 14.1244 1.46046 14.1363 1.4117C14.1449 1.37776 14.1449 1.37776 14.1535 1.34315C14.1585 1.32288 14.1635 1.30261 14.1686 1.28172C14.1904 1.21719 14.219 1.16652 14.2591 1.11069C14.3362 1.07385 14.3903 1.0905 14.4719 1.11069Z\" fill=\"#FBFCFF\"/><path d=\"M3.59089 12.4942C3.61902 12.4944 3.61902 12.4944 3.64772 12.4946C3.84954 12.5004 3.98609 12.5623 4.13472 12.692C4.30767 12.8707 4.38753 13.0722 4.38299 13.313C4.36357 13.5082 4.24316 13.6787 4.09547 13.8107C3.92163 13.9448 3.74626 13.9892 3.52411 13.983C3.33681 13.9621 3.1606 13.877 3.02785 13.749C2.86276 13.5336 2.8145 13.3361 2.83869 13.0707C2.88867 12.8618 3.03274 12.6923 3.21701 12.5733C3.34502 12.5113 3.44798 12.493 3.59089 12.4942Z\" fill=\"#FBFCFF\"/></svg>\n {{ ctaText }}\n </cqa-button>\n </div>\n</div>", components: [{ type: i1.ButtonComponent, selector: "cqa-button", inputs: ["variant", "disabled", "icon", "iconPosition", "fullWidth", "iconColor", "type", "text", "customClass"], outputs: ["clicked"] }], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
65
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: CoverageModuleCardComponent, decorators: [{
|
|
66
|
+
type: Component,
|
|
67
|
+
args: [{ selector: 'cqa-coverage-module-card', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div id=\"cqa-ui-root\">\n <div\n class=\"cqa-w-full cqa-bg-white cqa-rounded-[8px] cqa-border cqa-border-solid cqa-border-[#E5E7EB] cqa-py-[10px] md:cqa-px-[17px] cqa-px-3 cqa-shadow-card\">\n <!-- Header -->\n <div class=\"cqa-flex cqa-items-start cqa-justify-between cqa-mb-3\">\n <h3 class=\"cqa-text-[18px] cqa-leading-[28px] cqa-font-bold cqa-text-dialog\">{{ title }}</h3>\n <div class=\"cqa-flex cqa-items-center cqa-gap-2\">\n <span\n class=\"cqa-px-[10px] cqa-py-[4px] cqa-text-[12px] cqa-leading-[16px] cqa-flex cqa-items-center cqa-gap-1 cqa-rounded-full cqa-bg-warning-light cqa-text-danger\">\n {{ issues }} {{ issues === 1 ? 'issue' : 'issues' }}\n </span>\n <button type=\"button\"\n class=\"cqa-text-[14px] cqa-leading-[20px] cqa-text-primary cqa-flex cqa-items-center cqa-gap-1\"\n *ngIf=\"showViewAction\" (click)=\"view.emit()\">\n View\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M6 12L10 8L6 4\" stroke=\"#4F46E5\" stroke-width=\"1.33333\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n </button>\n </div>\n </div>\n\n <!-- Middle metrics row -->\n <div class=\"cqa-grid md:cqa-grid-cols-4 cqa-grid-cols-2 cqa-gap-3 cqa-mb-4 cqa-border-t cqa-border-b cqa-border-surface-[#F3F4F6] cqa-py-2\">\n <!-- Left: Positive / Negative / Edge Case -->\n <div class=\"cqa-text-center\">\n <div class=\"cqa-text-[18px] cqa-leading-[28px] cqa-font-bold cqa-text-[#059669]\">{{ positiveCount }}</div>\n <div class=\"cqa-text-[12px] cqa-leading-[16px] cqa-text-dialog-muted\">{{ positiveLabel }}</div>\n </div>\n <div class=\"cqa-text-center\">\n <div class=\"cqa-text-[18px] cqa-leading-[28px] cqa-font-bold cqa-text-[#EF4444]\">{{ negativeCount }}</div>\n <div class=\"cqa-text-[12px] cqa-leading-[16px] cqa-text-dialog-muted\">{{ negativeLabel }}</div>\n </div>\n <div class=\"cqa-text-center\">\n <div class=\"cqa-text-[18px] cqa-leading-[28px] cqa-font-bold cqa-text-[#F59E0B]\">{{ edgeCaseCount }}</div>\n <div class=\"cqa-text-[12px] cqa-leading-[16px] cqa-text-dialog-muted\">{{ edgeCaseLabel }}</div>\n </div>\n\n <!-- Right: AI / Human -->\n <div class=\"cqa-text-center cqa-flex cqa-items-center cqa-justify-center cqa-flex-col\">\n <div class=\"cqa-flex cqa-items-center cqa-justify-center\">\n <div class=\"cqa-flex cqa-flex-col cqa-gap-1 cqa-items-center cqa-justify-center cqa-w-[60px]\">\n <span class=\"cqa-text-[12px] cqa-leading-[16px] cqa-font-bold cqa-text-primary cqa-flex cqa-items-center cqa-gap-[2px]\">\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><g clip-path=\"url(#clip0_7415_11751)\"><path d=\"M4.9685 7.75012C4.92386 7.57709 4.83367 7.41918 4.70731 7.29282C4.58095 7.16646 4.42304 7.07626 4.25 7.03162L1.1825 6.24062C1.13017 6.22577 1.08411 6.19425 1.05131 6.15085C1.01851 6.10744 1.00076 6.05453 1.00076 6.00012C1.00076 5.94572 1.01851 5.89281 1.05131 5.8494C1.08411 5.806 1.13017 5.77448 1.1825 5.75962L4.25 4.96812C4.42298 4.92353 4.58085 4.83341 4.7072 4.70714C4.83356 4.58088 4.92378 4.42307 4.9685 4.25012L5.7595 1.18262C5.7742 1.13008 5.80569 1.0838 5.84916 1.05082C5.89263 1.01785 5.94569 1 6.00025 1C6.05481 1 6.10787 1.01785 6.15134 1.05082C6.19481 1.0838 6.2263 1.13008 6.241 1.18262L7.0315 4.25012C7.07614 4.42316 7.16633 4.58107 7.29269 4.70743C7.41905 4.83379 7.57696 4.92399 7.75 4.96862L10.8175 5.75912C10.8703 5.77367 10.9168 5.80513 10.9499 5.84866C10.9831 5.8922 11.001 5.94541 11.001 6.00012C11.001 6.05484 10.9831 6.10805 10.9499 6.15159C10.9168 6.19512 10.8703 6.22657 10.8175 6.24112L7.75 7.03162C7.57696 7.07626 7.41905 7.16646 7.29269 7.29282C7.16633 7.41918 7.07614 7.57709 7.0315 7.75012L6.2405 10.8176C6.2258 10.8702 6.19431 10.9165 6.15084 10.9494C6.10737 10.9824 6.05431 11.0002 5.99975 11.0002C5.94519 11.0002 5.89213 10.9824 5.84866 10.9494C5.80519 10.9165 5.7737 10.8702 5.759 10.8176L4.9685 7.75012Z\" stroke=\"#7C3AED\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M10 1.5V3.5\" stroke=\"#7C3AED\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M11 2.5H9\" stroke=\"#7C3AED\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M2 8.5V9.5\" stroke=\"#7C3AED\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M2.5 9H1.5\" stroke=\"#7C3AED\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></g><defs><clipPath id=\"clip0_7415_11751\"><rect width=\"12\" height=\"12\" fill=\"white\"/></clipPath></defs></svg>\n {{ aiLabel }}\n </span>\n <span class=\"cqa-text-[14px] cqa-leading-[20px] cqa-font-bold cqa-text-dialog\">{{ aiCount }}</span>\n </div>\n <div class=\"cqa-bg-primary-surface cqa-w-[2px] cqa-h-full cqa-mx-[3.5px]\"></div>\n <div class=\"cqa-flex cqa-flex-col cqa-gap-1 cqa-items-center cqa-justify-center cqa-w-[60px]\">\n <span class=\"cqa-text-[12px] cqa-leading-[16px] cqa-font-bold cqa-text-dialog-secondary cqa-flex cqa-items-center cqa-gap-[2px]\">\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M9.5 10.5V9.5C9.5 8.96957 9.28929 8.46086 8.91421 8.08579C8.53914 7.71071 8.03043 7.5 7.5 7.5H4.5C3.96957 7.5 3.46086 7.71071 3.08579 8.08579C2.71071 8.46086 2.5 8.96957 2.5 9.5V10.5\" stroke=\"#3F43EE\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M6 5.5C7.10457 5.5 8 4.60457 8 3.5C8 2.39543 7.10457 1.5 6 1.5C4.89543 1.5 4 2.39543 4 3.5C4 4.60457 4.89543 5.5 6 5.5Z\" stroke=\"#3F43EE\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>\n {{ humanLabel }}\n </span>\n <span class=\"cqa-text-[14px] cqa-leading-[20px] cqa-font-bold cqa-text-dialog\">{{ humanCount }}</span>\n </div>\n </div>\n <div class=\"cqa-text-[12px] cqa-leading-[16px] cqa-text-dialog-muted cqa-pt-[2px] cqa-pb-1\">Coverage</div>\n </div>\n </div>\n\n <!-- Body -->\n <div class=\"cqa-flex cqa-flex-col cqa-gap-2 cqa-mb-3\">\n <div *ngFor=\"let it of items\" class=\"cqa-flex cqa-items-center cqa-gap-2\">\n <span class=\"md:cqa-w-full md:cqa-max-w-[216px] cqa-text-[12px] cqa-leading-[16px] cqa-text-dialog-secondary cqa-flex cqa-items-center cqa-gap-2\">\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M12.8333 6.46309V6.99976C12.8326 8.25767 12.4253 9.48165 11.6721 10.4892C10.9189 11.4967 9.86025 12.2337 8.65396 12.5904C7.44767 12.947 6.1584 12.9042 4.97844 12.4683C3.79848 12.0323 2.79105 11.2266 2.10639 10.1714C1.42174 9.11611 1.09654 7.8678 1.17931 6.61261C1.26208 5.35742 1.74837 4.16262 2.56566 3.20638C3.38295 2.25015 4.48746 1.58373 5.71444 1.30651C6.94143 1.02929 8.22515 1.15612 9.37417 1.66809\" stroke=\"#10B981\" stroke-width=\"1.16667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M5.25 6.41634L7 8.16634L12.8333 2.33301\" stroke=\"#10B981\" stroke-width=\"1.16667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>\n <!-- <svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M7 12.8337C10.2217 12.8337 12.8333 10.222 12.8333 7.00033C12.8333 3.77866 10.2217 1.16699 7 1.16699C3.77834 1.16699 1.16666 3.77866 1.16666 7.00033C1.16666 10.222 3.77834 12.8337 7 12.8337Z\" stroke=\"#EF4444\" stroke-width=\"1.16667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M7 4.66699V7.00033\" stroke=\"#EF4444\" stroke-width=\"1.16667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M7 9.33301H7.00583\" stroke=\"#EF4444\" stroke-width=\"1.16667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg> -->\n {{ it.label }}\n </span>\n <div class=\"cqa-flex-1 cqa-h-[6px] cqa-rounded-full cqa-bg-[#F3F4F6] cqa-overflow-hidden\">\n <div class=\"cqa-h-full cqa-rounded-full\" [ngClass]=\"statusColorClass(it)\"\n [style.width]=\"formatPercent(it.percent)\"></div>\n </div>\n <span class=\"cqa-min-w-[40px] cqa-text-[12px] cqa-leading-[16px] cqa-font-bold\" [ngClass]=\"textColorClass(it)\">{{\n formatPercent(it.percent) }}</span>\n </div>\n </div>\n\n <!-- Footer -->\n <cqa-button variant=\"filled\" [customClass]=\"'cqa-w-full cqa-text-[14px] cqa-leading-[20px] cqa-font-semibold'\">\n <svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M9.01882 0C9.12979 0.0454767 9.17718 0.15653 9.22261 0.259691C9.24539 0.319799 9.26628 0.380234 9.28657 0.44115C9.29452 0.464493 9.30246 0.487836 9.31065 0.511886C9.41613 0.826009 9.51008 1.1435 9.60457 1.46076C9.62593 1.53238 9.64739 1.60397 9.66885 1.67557C9.7781 2.04007 9.88654 2.4048 9.99438 2.76969C10.0095 2.82093 10.0247 2.87218 10.0398 2.92342C10.0826 3.0679 10.1252 3.21239 10.1677 3.35694C10.2573 3.66239 10.3495 3.96695 10.4476 4.27002C10.4561 4.29653 10.4647 4.32305 10.4735 4.35036C10.7284 5.12999 11.0896 5.82875 11.6818 6.42393C11.6965 6.4394 11.7111 6.45488 11.7262 6.47083C11.979 6.72875 12.3034 6.93541 12.6276 7.10221C12.6441 7.11085 12.6606 7.11948 12.6776 7.12838C13.6317 7.61851 14.779 7.83407 15.8124 8.12101C16.2652 8.24681 16.7166 8.37658 17.1663 8.51206C17.1979 8.52157 17.2296 8.53107 17.2612 8.54055C17.3557 8.5689 17.45 8.59774 17.5442 8.62694C17.5662 8.63358 17.5882 8.64023 17.6108 8.64707C17.7406 8.68812 17.8648 8.73658 17.9713 8.82054C18.0038 8.88837 18.0038 8.88837 17.995 8.95619C17.8913 9.05472 17.7884 9.10092 17.6516 9.14599C17.632 9.15264 17.6124 9.1593 17.5923 9.16615C17.3612 9.24366 17.127 9.31149 16.8925 9.37871C16.8444 9.39261 16.7963 9.40651 16.7482 9.42042C16.4514 9.50603 16.1542 9.5898 15.8566 9.67263C15.4646 9.78175 15.0733 9.89268 14.6823 10.0049C14.6182 10.0232 14.5541 10.0416 14.49 10.0598C14.1534 10.1557 13.8185 10.2551 13.4863 10.3642C13.4587 10.3732 13.4312 10.3822 13.4028 10.3915C12.2902 10.7616 11.4422 11.4522 10.9114 12.462C10.6253 13.0295 10.4565 13.6432 10.2843 14.2489C10.2377 14.4124 10.1882 14.5749 10.1381 14.7374C10.0988 14.8652 10.0604 14.9933 10.023 15.1216C10.0185 15.1369 10.0141 15.1522 10.0095 15.1679C9.98788 15.2419 9.96638 15.3159 9.94503 15.3899C9.89039 15.5776 9.83156 15.7637 9.77111 15.9498C9.66383 16.2804 9.5662 16.6135 9.46917 16.947C9.32288 17.4491 9.32288 17.4491 9.23993 17.6905C9.23443 17.7067 9.22893 17.7229 9.22326 17.7396C9.19298 17.8256 9.16183 17.9047 9.10453 17.9774C9.01734 17.9958 9.01734 17.9958 8.93901 18C8.84946 17.8752 8.79016 17.7542 8.74265 17.6102C8.73574 17.5897 8.72882 17.5693 8.7217 17.5483C8.63368 17.285 8.55502 17.0189 8.47634 16.7529C8.45832 16.6921 8.44022 16.6313 8.42211 16.5705C8.2872 16.1173 8.15451 15.6635 8.02202 15.2096C7.47014 12.9645 7.47014 12.9645 6.078 11.1493C6.05569 11.1319 6.03338 11.1145 6.01039 11.0966C5.09826 10.398 3.89667 10.1394 2.7963 9.83627C2.52415 9.76124 2.2521 9.68587 1.98006 9.61046C1.95628 9.60386 1.95628 9.60386 1.93201 9.59714C1.53962 9.48834 1.14735 9.37925 0.756448 9.26566C0.739911 9.26089 0.723375 9.25612 0.706338 9.25121C0.105798 9.07767 0.105798 9.07767 0.00129307 8.95619C-0.00166252 8.90108 -0.00166252 8.90108 0.0249378 8.84315C0.134167 8.7408 0.240153 8.69696 0.38432 8.65238C0.405194 8.64567 0.426068 8.63897 0.447574 8.63206C0.511506 8.61164 0.575577 8.59169 0.639702 8.57183C0.658001 8.56609 0.676301 8.56035 0.695155 8.55443C0.82457 8.51385 0.95445 8.47479 1.08452 8.43618C1.11648 8.42665 1.11648 8.42665 1.14909 8.41693C1.70454 8.25174 2.26361 8.09801 2.82252 7.94392C3.23899 7.82909 3.65476 7.71236 4.06921 7.59097C4.08825 7.58542 4.1073 7.57987 4.12692 7.57415C5.087 7.29393 6.02557 6.89632 6.64547 6.1074C6.65475 6.09569 6.66403 6.08399 6.6736 6.07194C7.36395 5.1963 7.63315 4.13145 7.93391 3.09241C8.03285 2.75069 8.13298 2.40929 8.23345 2.06798C8.26127 1.97347 8.28906 1.87894 8.31673 1.78439C8.42788 1.40458 8.5407 1.02528 8.66 0.647727C8.67116 0.612372 8.68227 0.577001 8.69333 0.541614C8.86035 0.00797522 8.86035 0.00797522 9.01882 0Z\" fill=\"#FBFCFF\"/><path d=\"M14.4719 1.11069C14.5805 1.22817 14.6022 1.36624 14.636 1.51625C14.7487 1.98751 14.8786 2.42084 15.3293 2.6946C15.6074 2.84167 15.9389 2.90859 16.247 2.9718C16.3771 2.99902 16.4869 3.03515 16.5985 3.1074C16.6236 3.14555 16.6236 3.14555 16.6221 3.21197C16.5963 3.29273 16.5736 3.31878 16.5054 3.37165C16.4308 3.39549 16.4308 3.39549 16.3413 3.41404C16.3075 3.42147 16.2736 3.42898 16.2398 3.43656C16.2217 3.44058 16.2036 3.4446 16.1849 3.44874C15.6339 3.57062 15.6339 3.57062 15.1576 3.84645C15.1421 3.85837 15.1267 3.87029 15.1107 3.88257C14.7703 4.16959 14.6983 4.64703 14.5958 5.04699C14.59 5.06896 14.5841 5.09092 14.578 5.11355C14.573 5.133 14.5679 5.15244 14.5627 5.17248C14.5405 5.23185 14.5176 5.27057 14.4719 5.31607C14.3447 5.33152 14.3447 5.33152 14.2828 5.31607C14.1843 5.24309 14.1623 5.15997 14.1366 5.04828C14.1322 5.03099 14.1279 5.01369 14.1235 4.99587C14.1098 4.94064 14.0965 4.88531 14.0833 4.82996C13.9796 4.39891 13.8625 3.976 13.449 3.72333C13.1258 3.55101 12.7329 3.46951 12.3717 3.4037C12.2727 3.38399 12.216 3.3592 12.1547 3.28121C12.1414 3.20208 12.1414 3.20208 12.1547 3.12294C12.2489 3.02971 12.348 3.00696 12.4754 2.97881C12.5156 2.9693 12.5557 2.95973 12.5958 2.9501C12.6165 2.94516 12.6372 2.94022 12.6586 2.93512C12.7642 2.90911 12.8689 2.87995 12.9734 2.85021C12.9924 2.84494 13.0114 2.83967 13.031 2.83424C13.2436 2.77346 13.4271 2.69571 13.5971 2.5577C13.6129 2.54523 13.6288 2.53276 13.6451 2.5199C13.9096 2.29228 13.9995 1.95032 14.081 1.63124C14.0873 1.60702 14.0935 1.5828 14.0999 1.55784C14.1123 1.50918 14.1244 1.46046 14.1363 1.4117C14.1449 1.37776 14.1449 1.37776 14.1535 1.34315C14.1585 1.32288 14.1635 1.30261 14.1686 1.28172C14.1904 1.21719 14.219 1.16652 14.2591 1.11069C14.3362 1.07385 14.3903 1.0905 14.4719 1.11069Z\" fill=\"#FBFCFF\"/><path d=\"M3.59089 12.4942C3.61902 12.4944 3.61902 12.4944 3.64772 12.4946C3.84954 12.5004 3.98609 12.5623 4.13472 12.692C4.30767 12.8707 4.38753 13.0722 4.38299 13.313C4.36357 13.5082 4.24316 13.6787 4.09547 13.8107C3.92163 13.9448 3.74626 13.9892 3.52411 13.983C3.33681 13.9621 3.1606 13.877 3.02785 13.749C2.86276 13.5336 2.8145 13.3361 2.83869 13.0707C2.88867 12.8618 3.03274 12.6923 3.21701 12.5733C3.34502 12.5113 3.44798 12.493 3.59089 12.4942Z\" fill=\"#FBFCFF\"/></svg>\n {{ ctaText }}\n </cqa-button>\n </div>\n</div>", styles: [] }]
|
|
68
|
+
}], propDecorators: { title: [{
|
|
69
|
+
type: Input
|
|
70
|
+
}], issues: [{
|
|
71
|
+
type: Input
|
|
72
|
+
}], showViewAction: [{
|
|
73
|
+
type: Input
|
|
74
|
+
}], positiveCount: [{
|
|
75
|
+
type: Input
|
|
76
|
+
}], negativeCount: [{
|
|
77
|
+
type: Input
|
|
78
|
+
}], edgeCaseCount: [{
|
|
79
|
+
type: Input
|
|
80
|
+
}], positiveLabel: [{
|
|
81
|
+
type: Input
|
|
82
|
+
}], negativeLabel: [{
|
|
83
|
+
type: Input
|
|
84
|
+
}], edgeCaseLabel: [{
|
|
85
|
+
type: Input
|
|
86
|
+
}], aiCount: [{
|
|
87
|
+
type: Input
|
|
88
|
+
}], humanCount: [{
|
|
89
|
+
type: Input
|
|
90
|
+
}], aiLabel: [{
|
|
91
|
+
type: Input
|
|
92
|
+
}], humanLabel: [{
|
|
93
|
+
type: Input
|
|
94
|
+
}], items: [{
|
|
95
|
+
type: Input
|
|
96
|
+
}], ctaText: [{
|
|
97
|
+
type: Input
|
|
98
|
+
}], ctaDisabled: [{
|
|
99
|
+
type: Input
|
|
100
|
+
}], view: [{
|
|
101
|
+
type: Output
|
|
102
|
+
}], ctaClicked: [{
|
|
103
|
+
type: Output
|
|
104
|
+
}] } });
|
|
105
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY292ZXJhZ2UtbW9kdWxlLWNhcmQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9kYXNoYm9hcmRzL2NvdmVyYWdlLW1vZHVsZS1jYXJkL2NvdmVyYWdlLW1vZHVsZS1jYXJkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvZGFzaGJvYXJkcy9jb3ZlcmFnZS1tb2R1bGUtY2FyZC9jb3ZlcmFnZS1tb2R1bGUtY2FyZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7O0FBbUJoRyxNQUFNLE9BQU8sMkJBQTJCO0lBTnhDO1FBT0UsZ0NBQWdDO1FBQ3ZCLFVBQUssR0FBVyxVQUFVLENBQUM7UUFDcEMsZ0RBQWdEO1FBQ3ZDLFdBQU0sR0FBVyxDQUFDLENBQUM7UUFDNUIsd0NBQXdDO1FBQy9CLG1CQUFjLEdBQVksSUFBSSxDQUFDO1FBQ3hDLGlDQUFpQztRQUN4QixrQkFBYSxHQUFXLENBQUMsQ0FBQztRQUMxQixrQkFBYSxHQUFXLENBQUMsQ0FBQztRQUMxQixrQkFBYSxHQUFXLENBQUMsQ0FBQztRQUMxQixrQkFBYSxHQUFXLFVBQVUsQ0FBQztRQUNuQyxrQkFBYSxHQUFXLFVBQVUsQ0FBQztRQUNuQyxrQkFBYSxHQUFXLFdBQVcsQ0FBQztRQUM3QyxrQ0FBa0M7UUFDekIsWUFBTyxHQUFXLENBQUMsQ0FBQztRQUNwQixlQUFVLEdBQVcsQ0FBQyxDQUFDO1FBQ3ZCLFlBQU8sR0FBVyxJQUFJLENBQUM7UUFDdkIsZUFBVSxHQUFXLE9BQU8sQ0FBQztRQUN0Qyw0Q0FBNEM7UUFDbkMsVUFBSyxHQUFtQixFQUFFLENBQUM7UUFDcEMsdUJBQXVCO1FBQ2QsWUFBTyxHQUFXLGFBQWEsQ0FBQztRQUN6QyxrQkFBa0I7UUFDVCxnQkFBVyxHQUFZLEtBQUssQ0FBQztRQUU1QixTQUFJLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUNoQyxlQUFVLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztLQStCakQ7SUE3QkMsZ0JBQWdCLENBQUMsSUFBa0I7UUFDakMsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sSUFBSSxTQUFTLENBQUM7UUFDeEMsUUFBUSxNQUFNLEVBQUU7WUFDZCxLQUFLLFNBQVM7Z0JBQ1osT0FBTyxrQkFBa0IsQ0FBQyxDQUFDLFFBQVE7WUFDckMsS0FBSyxPQUFPO2dCQUNWLE9BQU8sa0JBQWtCLENBQUMsQ0FBQyxNQUFNO1lBQ25DO2dCQUNFLE9BQU8sa0JBQWtCLENBQUMsQ0FBQyxPQUFPO1NBQ3JDO0lBQ0gsQ0FBQztJQUVELGNBQWMsQ0FBQyxJQUFrQjtRQUMvQixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxJQUFJLFNBQVMsQ0FBQztRQUN4QyxRQUFRLE1BQU0sRUFBRTtZQUNkLEtBQUssU0FBUztnQkFDWixPQUFPLG9CQUFvQixDQUFDO1lBQzlCLEtBQUssT0FBTztnQkFDVixPQUFPLG9CQUFvQixDQUFDO1lBQzlCO2dCQUNFLE9BQU8sb0JBQW9CLENBQUM7U0FDL0I7SUFDSCxDQUFDO0lBRUQsYUFBYSxDQUFDLEdBQVc7UUFDdkIsSUFBSSxHQUFHLEtBQUssU0FBUyxJQUFJLEdBQUcsS0FBSyxJQUFJLElBQUksTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUM7WUFBRSxPQUFPLElBQUksQ0FBQztRQUN4RSxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ2hELE9BQU8sR0FBRyxPQUFPLEdBQUcsQ0FBQztJQUN2QixDQUFDOzt3SEF6RFUsMkJBQTJCOzRHQUEzQiwyQkFBMkIsaWlCQ25CeEMsbTJjQXFGTTsyRkRsRU8sMkJBQTJCO2tCQU52QyxTQUFTOytCQUNFLDBCQUEwQixtQkFHbkIsdUJBQXVCLENBQUMsTUFBTTs4QkFJdEMsS0FBSztzQkFBYixLQUFLO2dCQUVHLE1BQU07c0JBQWQsS0FBSztnQkFFRyxjQUFjO3NCQUF0QixLQUFLO2dCQUVHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUVHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUVHLEtBQUs7c0JBQWIsS0FBSztnQkFFRyxPQUFPO3NCQUFmLEtBQUs7Z0JBRUcsV0FBVztzQkFBbkIsS0FBSztnQkFFSSxJQUFJO3NCQUFiLE1BQU07Z0JBQ0csVUFBVTtzQkFBbkIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5leHBvcnQgdHlwZSBDb3ZlcmFnZVN0YXR1cyA9ICdzdWNjZXNzJyB8ICdlcnJvcicgfCAnbmV1dHJhbCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ292ZXJhZ2VJdGVtIHtcbiAgLyoqIFJvdyBsYWJlbCwgZS5nLiBcIklucHV0IFZhbGlkYXRpb25cIiAqL1xuICBsYWJlbDogc3RyaW5nO1xuICAvKiogVmFsdWUgaW4gcGVyY2VudCAoMC0xMDApICovXG4gIHBlcmNlbnQ6IG51bWJlcjtcbiAgLyoqIFZpc3VhbCBzdGF0dXMgdG8gY29sb3JpemUgdGhlIGJhci90ZXh0ICovXG4gIHN0YXR1cz86IENvdmVyYWdlU3RhdHVzO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjcWEtY292ZXJhZ2UtbW9kdWxlLWNhcmQnLFxuICB0ZW1wbGF0ZVVybDogJy4vY292ZXJhZ2UtbW9kdWxlLWNhcmQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFtdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgQ292ZXJhZ2VNb2R1bGVDYXJkQ29tcG9uZW50IHtcbiAgLyoqIENhcmQgdGl0bGUsIGUuZy4gXCJBSSBBc2tcIiAqL1xuICBASW5wdXQoKSB0aXRsZTogc3RyaW5nID0gJ0NvdmVyYWdlJztcbiAgLyoqIE51bWJlciBvZiBpc3N1ZXMgdG8gZGlzcGxheSBuZXh0IHRvIHRpdGxlICovXG4gIEBJbnB1dCgpIGlzc3VlczogbnVtYmVyID0gMDtcbiAgLyoqIE9wdGlvbmFsIFwiVmlld1wiIGFjdGlvbiB2aXNpYmlsaXR5ICovXG4gIEBJbnB1dCgpIHNob3dWaWV3QWN0aW9uOiBib29sZWFuID0gdHJ1ZTtcbiAgLyoqIE1pZGRsZSBtZXRyaWNzOiBsZWZ0IGdyb3VwICovXG4gIEBJbnB1dCgpIHBvc2l0aXZlQ291bnQ6IG51bWJlciA9IDA7XG4gIEBJbnB1dCgpIG5lZ2F0aXZlQ291bnQ6IG51bWJlciA9IDA7XG4gIEBJbnB1dCgpIGVkZ2VDYXNlQ291bnQ6IG51bWJlciA9IDA7XG4gIEBJbnB1dCgpIHBvc2l0aXZlTGFiZWw6IHN0cmluZyA9ICdQb3NpdGl2ZSc7XG4gIEBJbnB1dCgpIG5lZ2F0aXZlTGFiZWw6IHN0cmluZyA9ICdOZWdhdGl2ZSc7XG4gIEBJbnB1dCgpIGVkZ2VDYXNlTGFiZWw6IHN0cmluZyA9ICdFZGdlIENhc2UnO1xuICAvKiogTWlkZGxlIG1ldHJpY3M6IHJpZ2h0IGdyb3VwICovXG4gIEBJbnB1dCgpIGFpQ291bnQ6IG51bWJlciA9IDA7XG4gIEBJbnB1dCgpIGh1bWFuQ291bnQ6IG51bWJlciA9IDA7XG4gIEBJbnB1dCgpIGFpTGFiZWw6IHN0cmluZyA9ICdBSSc7XG4gIEBJbnB1dCgpIGh1bWFuTGFiZWw6IHN0cmluZyA9ICdIdW1hbic7XG4gIC8qKiBSb3dzIG9mIGNvdmVyYWdlIHdpdGggcGVyY2VudGFnZSBiYXJzICovXG4gIEBJbnB1dCgpIGl0ZW1zOiBDb3ZlcmFnZUl0ZW1bXSA9IFtdO1xuICAvKiogQ1RBIGJ1dHRvbiBsYWJlbCAqL1xuICBASW5wdXQoKSBjdGFUZXh0OiBzdHJpbmcgPSAnQUkgQ292ZXJhZ2UnO1xuICAvKiogRGlzYWJsZSBDVEEgKi9cbiAgQElucHV0KCkgY3RhRGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBAT3V0cHV0KCkgdmlldyA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgQE91dHB1dCgpIGN0YUNsaWNrZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgc3RhdHVzQ29sb3JDbGFzcyhpdGVtOiBDb3ZlcmFnZUl0ZW0pOiBzdHJpbmcge1xuICAgIGNvbnN0IHN0YXR1cyA9IGl0ZW0uc3RhdHVzID8/ICduZXV0cmFsJztcbiAgICBzd2l0Y2ggKHN0YXR1cykge1xuICAgICAgY2FzZSAnc3VjY2Vzcyc6XG4gICAgICAgIHJldHVybiAnY3FhLWJnLVsjMTBCOTgxXSc7IC8vIGdyZWVuXG4gICAgICBjYXNlICdlcnJvcic6XG4gICAgICAgIHJldHVybiAnY3FhLWJnLVsjRUY0NDQ0XSc7IC8vIHJlZFxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuICdjcWEtYmctWyMzQjgyRjZdJzsgLy8gYmx1ZVxuICAgIH1cbiAgfVxuXG4gIHRleHRDb2xvckNsYXNzKGl0ZW06IENvdmVyYWdlSXRlbSk6IHN0cmluZyB7XG4gICAgY29uc3Qgc3RhdHVzID0gaXRlbS5zdGF0dXMgPz8gJ25ldXRyYWwnO1xuICAgIHN3aXRjaCAoc3RhdHVzKSB7XG4gICAgICBjYXNlICdzdWNjZXNzJzpcbiAgICAgICAgcmV0dXJuICdjcWEtdGV4dC1bIzEwQjk4MV0nO1xuICAgICAgY2FzZSAnZXJyb3InOlxuICAgICAgICByZXR1cm4gJ2NxYS10ZXh0LVsjRUY0NDQ0XSc7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gJ2NxYS10ZXh0LVsjMzc0MTUxXSc7XG4gICAgfVxuICB9XG5cbiAgZm9ybWF0UGVyY2VudChwY3Q6IG51bWJlcik6IHN0cmluZyB7XG4gICAgaWYgKHBjdCA9PT0gdW5kZWZpbmVkIHx8IHBjdCA9PT0gbnVsbCB8fCBOdW1iZXIuaXNOYU4ocGN0KSkgcmV0dXJuICcwJSc7XG4gICAgY29uc3QgY2xhbXBlZCA9IE1hdGgubWF4KDAsIE1hdGgubWluKDEwMCwgcGN0KSk7XG4gICAgcmV0dXJuIGAke2NsYW1wZWR9JWA7XG4gIH1cbn1cblxuXG4iLCI8ZGl2IGlkPVwiY3FhLXVpLXJvb3RcIj5cbiAgPGRpdlxuICAgIGNsYXNzPVwiY3FhLXctZnVsbCBjcWEtYmctd2hpdGUgY3FhLXJvdW5kZWQtWzhweF0gY3FhLWJvcmRlciBjcWEtYm9yZGVyLXNvbGlkIGNxYS1ib3JkZXItWyNFNUU3RUJdIGNxYS1weS1bMTBweF0gbWQ6Y3FhLXB4LVsxN3B4XSBjcWEtcHgtMyBjcWEtc2hhZG93LWNhcmRcIj5cbiAgICA8IS0tIEhlYWRlciAtLT5cbiAgICA8ZGl2IGNsYXNzPVwiY3FhLWZsZXggY3FhLWl0ZW1zLXN0YXJ0IGNxYS1qdXN0aWZ5LWJldHdlZW4gY3FhLW1iLTNcIj5cbiAgICAgIDxoMyBjbGFzcz1cImNxYS10ZXh0LVsxOHB4XSBjcWEtbGVhZGluZy1bMjhweF0gY3FhLWZvbnQtYm9sZCBjcWEtdGV4dC1kaWFsb2dcIj57eyB0aXRsZSB9fTwvaDM+XG4gICAgICA8ZGl2IGNsYXNzPVwiY3FhLWZsZXggY3FhLWl0ZW1zLWNlbnRlciBjcWEtZ2FwLTJcIj5cbiAgICAgICAgPHNwYW5cbiAgICAgICAgICBjbGFzcz1cImNxYS1weC1bMTBweF0gY3FhLXB5LVs0cHhdIGNxYS10ZXh0LVsxMnB4XSBjcWEtbGVhZGluZy1bMTZweF0gY3FhLWZsZXggY3FhLWl0ZW1zLWNlbnRlciBjcWEtZ2FwLTEgY3FhLXJvdW5kZWQtZnVsbCBjcWEtYmctd2FybmluZy1saWdodCBjcWEtdGV4dC1kYW5nZXJcIj5cbiAgICAgICAgICB7eyBpc3N1ZXMgfX0ge3sgaXNzdWVzID09PSAxID8gJ2lzc3VlJyA6ICdpc3N1ZXMnIH19XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICBjbGFzcz1cImNxYS10ZXh0LVsxNHB4XSBjcWEtbGVhZGluZy1bMjBweF0gY3FhLXRleHQtcHJpbWFyeSBjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1nYXAtMVwiXG4gICAgICAgICAgKm5nSWY9XCJzaG93Vmlld0FjdGlvblwiIChjbGljayk9XCJ2aWV3LmVtaXQoKVwiPlxuICAgICAgICAgIFZpZXdcbiAgICAgICAgICA8c3ZnIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbiAgICAgICAgICAgIDxwYXRoIGQ9XCJNNiAxMkwxMCA4TDYgNFwiIHN0cm9rZT1cIiM0RjQ2RTVcIiBzdHJva2Utd2lkdGg9XCIxLjMzMzMzXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDwhLS0gTWlkZGxlIG1ldHJpY3Mgcm93IC0tPlxuICAgIDxkaXYgY2xhc3M9XCJjcWEtZ3JpZCBtZDpjcWEtZ3JpZC1jb2xzLTQgY3FhLWdyaWQtY29scy0yIGNxYS1nYXAtMyBjcWEtbWItNCBjcWEtYm9yZGVyLXQgY3FhLWJvcmRlci1iIGNxYS1ib3JkZXItc3VyZmFjZS1bI0YzRjRGNl0gY3FhLXB5LTJcIj5cbiAgICAgIDwhLS0gTGVmdDogUG9zaXRpdmUgLyBOZWdhdGl2ZSAvIEVkZ2UgQ2FzZSAtLT5cbiAgICAgIDxkaXYgY2xhc3M9XCJjcWEtdGV4dC1jZW50ZXJcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNxYS10ZXh0LVsxOHB4XSBjcWEtbGVhZGluZy1bMjhweF0gY3FhLWZvbnQtYm9sZCBjcWEtdGV4dC1bIzA1OTY2OV1cIj57eyBwb3NpdGl2ZUNvdW50IH19PC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjcWEtdGV4dC1bMTJweF0gY3FhLWxlYWRpbmctWzE2cHhdIGNxYS10ZXh0LWRpYWxvZy1tdXRlZFwiPnt7IHBvc2l0aXZlTGFiZWwgfX08L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImNxYS10ZXh0LWNlbnRlclwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY3FhLXRleHQtWzE4cHhdIGNxYS1sZWFkaW5nLVsyOHB4XSBjcWEtZm9udC1ib2xkIGNxYS10ZXh0LVsjRUY0NDQ0XVwiPnt7IG5lZ2F0aXZlQ291bnQgfX08L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNxYS10ZXh0LVsxMnB4XSBjcWEtbGVhZGluZy1bMTZweF0gY3FhLXRleHQtZGlhbG9nLW11dGVkXCI+e3sgbmVnYXRpdmVMYWJlbCB9fTwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiY3FhLXRleHQtY2VudGVyXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjcWEtdGV4dC1bMThweF0gY3FhLWxlYWRpbmctWzI4cHhdIGNxYS1mb250LWJvbGQgY3FhLXRleHQtWyNGNTlFMEJdXCI+e3sgZWRnZUNhc2VDb3VudCB9fTwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY3FhLXRleHQtWzEycHhdIGNxYS1sZWFkaW5nLVsxNnB4XSBjcWEtdGV4dC1kaWFsb2ctbXV0ZWRcIj57eyBlZGdlQ2FzZUxhYmVsIH19PC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPCEtLSBSaWdodDogQUkgLyBIdW1hbiAtLT5cbiAgICAgIDxkaXYgY2xhc3M9XCJjcWEtdGV4dC1jZW50ZXIgY3FhLWZsZXggY3FhLWl0ZW1zLWNlbnRlciBjcWEtanVzdGlmeS1jZW50ZXIgY3FhLWZsZXgtY29sXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1qdXN0aWZ5LWNlbnRlclwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtZmxleC1jb2wgY3FhLWdhcC0xIGNxYS1pdGVtcy1jZW50ZXIgY3FhLWp1c3RpZnktY2VudGVyIGNxYS13LVs2MHB4XVwiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjcWEtdGV4dC1bMTJweF0gY3FhLWxlYWRpbmctWzE2cHhdIGNxYS1mb250LWJvbGQgY3FhLXRleHQtcHJpbWFyeSBjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1nYXAtWzJweF1cIj5cbiAgICAgICAgICAgICAgPHN2ZyB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTJcIiB2aWV3Qm94PVwiMCAwIDEyIDEyXCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+PGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF83NDE1XzExNzUxKVwiPjxwYXRoIGQ9XCJNNC45Njg1IDcuNzUwMTJDNC45MjM4NiA3LjU3NzA5IDQuODMzNjcgNy40MTkxOCA0LjcwNzMxIDcuMjkyODJDNC41ODA5NSA3LjE2NjQ2IDQuNDIzMDQgNy4wNzYyNiA0LjI1IDcuMDMxNjJMMS4xODI1IDYuMjQwNjJDMS4xMzAxNyA2LjIyNTc3IDEuMDg0MTEgNi4xOTQyNSAxLjA1MTMxIDYuMTUwODVDMS4wMTg1MSA2LjEwNzQ0IDEuMDAwNzYgNi4wNTQ1MyAxLjAwMDc2IDYuMDAwMTJDMS4wMDA3NiA1Ljk0NTcyIDEuMDE4NTEgNS44OTI4MSAxLjA1MTMxIDUuODQ5NEMxLjA4NDExIDUuODA2IDEuMTMwMTcgNS43NzQ0OCAxLjE4MjUgNS43NTk2Mkw0LjI1IDQuOTY4MTJDNC40MjI5OCA0LjkyMzUzIDQuNTgwODUgNC44MzM0MSA0LjcwNzIgNC43MDcxNEM0LjgzMzU2IDQuNTgwODggNC45MjM3OCA0LjQyMzA3IDQuOTY4NSA0LjI1MDEyTDUuNzU5NSAxLjE4MjYyQzUuNzc0MiAxLjEzMDA4IDUuODA1NjkgMS4wODM4IDUuODQ5MTYgMS4wNTA4MkM1Ljg5MjYzIDEuMDE3ODUgNS45NDU2OSAxIDYuMDAwMjUgMUM2LjA1NDgxIDEgNi4xMDc4NyAxLjAxNzg1IDYuMTUxMzQgMS4wNTA4MkM2LjE5NDgxIDEuMDgzOCA2LjIyNjMgMS4xMzAwOCA2LjI0MSAxLjE4MjYyTDcuMDMxNSA0LjI1MDEyQzcuMDc2MTQgNC40MjMxNiA3LjE2NjMzIDQuNTgxMDcgNy4yOTI2OSA0LjcwNzQzQzcuNDE5MDUgNC44MzM3OSA3LjU3Njk2IDQuOTIzOTkgNy43NSA0Ljk2ODYyTDEwLjgxNzUgNS43NTkxMkMxMC44NzAzIDUuNzczNjcgMTAuOTE2OCA1LjgwNTEzIDEwLjk0OTkgNS44NDg2NkMxMC45ODMxIDUuODkyMiAxMS4wMDEgNS45NDU0MSAxMS4wMDEgNi4wMDAxMkMxMS4wMDEgNi4wNTQ4NCAxMC45ODMxIDYuMTA4MDUgMTAuOTQ5OSA2LjE1MTU5QzEwLjkxNjggNi4xOTUxMiAxMC44NzAzIDYuMjI2NTcgMTAuODE3NSA2LjI0MTEyTDcuNzUgNy4wMzE2MkM3LjU3Njk2IDcuMDc2MjYgNy40MTkwNSA3LjE2NjQ2IDcuMjkyNjkgNy4yOTI4MkM3LjE2NjMzIDcuNDE5MTggNy4wNzYxNCA3LjU3NzA5IDcuMDMxNSA3Ljc1MDEyTDYuMjQwNSAxMC44MTc2QzYuMjI1OCAxMC44NzAyIDYuMTk0MzEgMTAuOTE2NSA2LjE1MDg0IDEwLjk0OTRDNi4xMDczNyAxMC45ODI0IDYuMDU0MzEgMTEuMDAwMiA1Ljk5OTc1IDExLjAwMDJDNS45NDUxOSAxMS4wMDAyIDUuODkyMTMgMTAuOTgyNCA1Ljg0ODY2IDEwLjk0OTRDNS44MDUxOSAxMC45MTY1IDUuNzczNyAxMC44NzAyIDUuNzU5IDEwLjgxNzZMNC45Njg1IDcuNzUwMTJaXCIgc3Ryb2tlPVwiIzdDM0FFRFwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz48cGF0aCBkPVwiTTEwIDEuNVYzLjVcIiBzdHJva2U9XCIjN0MzQUVEXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPjxwYXRoIGQ9XCJNMTEgMi41SDlcIiBzdHJva2U9XCIjN0MzQUVEXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPjxwYXRoIGQ9XCJNMiA4LjVWOS41XCIgc3Ryb2tlPVwiIzdDM0FFRFwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz48cGF0aCBkPVwiTTIuNSA5SDEuNVwiIHN0cm9rZT1cIiM3QzNBRURcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+PC9nPjxkZWZzPjxjbGlwUGF0aCBpZD1cImNsaXAwXzc0MTVfMTE3NTFcIj48cmVjdCB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTJcIiBmaWxsPVwid2hpdGVcIi8+PC9jbGlwUGF0aD48L2RlZnM+PC9zdmc+XG4gICAgICAgICAgICAgIHt7IGFpTGFiZWwgfX1cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3FhLXRleHQtWzE0cHhdIGNxYS1sZWFkaW5nLVsyMHB4XSBjcWEtZm9udC1ib2xkIGNxYS10ZXh0LWRpYWxvZ1wiPnt7IGFpQ291bnQgfX08L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNxYS1iZy1wcmltYXJ5LXN1cmZhY2UgY3FhLXctWzJweF0gY3FhLWgtZnVsbCBjcWEtbXgtWzMuNXB4XVwiPjwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtZmxleC1jb2wgY3FhLWdhcC0xIGNxYS1pdGVtcy1jZW50ZXIgY3FhLWp1c3RpZnktY2VudGVyIGNxYS13LVs2MHB4XVwiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjcWEtdGV4dC1bMTJweF0gY3FhLWxlYWRpbmctWzE2cHhdIGNxYS1mb250LWJvbGQgY3FhLXRleHQtZGlhbG9nLXNlY29uZGFyeSBjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1nYXAtWzJweF1cIj5cbiAgICAgICAgICAgICAgPHN2ZyB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTJcIiB2aWV3Qm94PVwiMCAwIDEyIDEyXCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+PHBhdGggZD1cIk05LjUgMTAuNVY5LjVDOS41IDguOTY5NTcgOS4yODkyOSA4LjQ2MDg2IDguOTE0MjEgOC4wODU3OUM4LjUzOTE0IDcuNzEwNzEgOC4wMzA0MyA3LjUgNy41IDcuNUg0LjVDMy45Njk1NyA3LjUgMy40NjA4NiA3LjcxMDcxIDMuMDg1NzkgOC4wODU3OUMyLjcxMDcxIDguNDYwODYgMi41IDguOTY5NTcgMi41IDkuNVYxMC41XCIgc3Ryb2tlPVwiIzNGNDNFRVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz48cGF0aCBkPVwiTTYgNS41QzcuMTA0NTcgNS41IDggNC42MDQ1NyA4IDMuNUM4IDIuMzk1NDMgNy4xMDQ1NyAxLjUgNiAxLjVDNC44OTU0MyAxLjUgNCAyLjM5NTQzIDQgMy41QzQgNC42MDQ1NyA0Ljg5NTQzIDUuNSA2IDUuNVpcIiBzdHJva2U9XCIjM0Y0M0VFXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPjwvc3ZnPlxuICAgICAgICAgICAgICB7eyBodW1hbkxhYmVsIH19XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNxYS10ZXh0LVsxNHB4XSBjcWEtbGVhZGluZy1bMjBweF0gY3FhLWZvbnQtYm9sZCBjcWEtdGV4dC1kaWFsb2dcIj57eyBodW1hbkNvdW50IH19PC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNxYS10ZXh0LVsxMnB4XSBjcWEtbGVhZGluZy1bMTZweF0gY3FhLXRleHQtZGlhbG9nLW11dGVkIGNxYS1wdC1bMnB4XSBjcWEtcGItMVwiPkNvdmVyYWdlPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDwhLS0gQm9keSAtLT5cbiAgICA8ZGl2IGNsYXNzPVwiY3FhLWZsZXggY3FhLWZsZXgtY29sIGNxYS1nYXAtMiBjcWEtbWItM1wiPlxuICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgaXQgb2YgaXRlbXNcIiBjbGFzcz1cImNxYS1mbGV4IGNxYS1pdGVtcy1jZW50ZXIgY3FhLWdhcC0yXCI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwibWQ6Y3FhLXctZnVsbCBtZDpjcWEtbWF4LXctWzIxNnB4XSBjcWEtdGV4dC1bMTJweF0gY3FhLWxlYWRpbmctWzE2cHhdIGNxYS10ZXh0LWRpYWxvZy1zZWNvbmRhcnkgY3FhLWZsZXggY3FhLWl0ZW1zLWNlbnRlciBjcWEtZ2FwLTJcIj5cbiAgICAgICAgICA8c3ZnIHdpZHRoPVwiMTRcIiBoZWlnaHQ9XCIxNFwiIHZpZXdCb3g9XCIwIDAgMTQgMTRcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj48cGF0aCBkPVwiTTEyLjgzMzMgNi40NjMwOVY2Ljk5OTc2QzEyLjgzMjYgOC4yNTc2NyAxMi40MjUzIDkuNDgxNjUgMTEuNjcyMSAxMC40ODkyQzEwLjkxODkgMTEuNDk2NyA5Ljg2MDI1IDEyLjIzMzcgOC42NTM5NiAxMi41OTA0QzcuNDQ3NjcgMTIuOTQ3IDYuMTU4NCAxMi45MDQyIDQuOTc4NDQgMTIuNDY4M0MzLjc5ODQ4IDEyLjAzMjMgMi43OTEwNSAxMS4yMjY2IDIuMTA2MzkgMTAuMTcxNEMxLjQyMTc0IDkuMTE2MTEgMS4wOTY1NCA3Ljg2NzggMS4xNzkzMSA2LjYxMjYxQzEuMjYyMDggNS4zNTc0MiAxLjc0ODM3IDQuMTYyNjIgMi41NjU2NiAzLjIwNjM4QzMuMzgyOTUgMi4yNTAxNSA0LjQ4NzQ2IDEuNTgzNzMgNS43MTQ0NCAxLjMwNjUxQzYuOTQxNDMgMS4wMjkyOSA4LjIyNTE1IDEuMTU2MTIgOS4zNzQxNyAxLjY2ODA5XCIgc3Ryb2tlPVwiIzEwQjk4MVwiIHN0cm9rZS13aWR0aD1cIjEuMTY2NjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+PHBhdGggZD1cIk01LjI1IDYuNDE2MzRMNyA4LjE2NjM0TDEyLjgzMzMgMi4zMzMwMVwiIHN0cm9rZT1cIiMxMEI5ODFcIiBzdHJva2Utd2lkdGg9XCIxLjE2NjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPjwvc3ZnPlxuICAgICAgICAgIDwhLS0gPHN2ZyB3aWR0aD1cIjE0XCIgaGVpZ2h0PVwiMTRcIiB2aWV3Qm94PVwiMCAwIDE0IDE0XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+PHBhdGggZD1cIk03IDEyLjgzMzdDMTAuMjIxNyAxMi44MzM3IDEyLjgzMzMgMTAuMjIyIDEyLjgzMzMgNy4wMDAzM0MxMi44MzMzIDMuNzc4NjYgMTAuMjIxNyAxLjE2Njk5IDcgMS4xNjY5OUMzLjc3ODM0IDEuMTY2OTkgMS4xNjY2NiAzLjc3ODY2IDEuMTY2NjYgNy4wMDAzM0MxLjE2NjY2IDEwLjIyMiAzLjc3ODM0IDEyLjgzMzcgNyAxMi44MzM3WlwiIHN0cm9rZT1cIiNFRjQ0NDRcIiBzdHJva2Utd2lkdGg9XCIxLjE2NjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPjxwYXRoIGQ9XCJNNyA0LjY2Njk5VjcuMDAwMzNcIiBzdHJva2U9XCIjRUY0NDQ0XCIgc3Ryb2tlLXdpZHRoPVwiMS4xNjY2N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz48cGF0aCBkPVwiTTcgOS4zMzMwMUg3LjAwNTgzXCIgc3Ryb2tlPVwiI0VGNDQ0NFwiIHN0cm9rZS13aWR0aD1cIjEuMTY2NjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+PC9zdmc+IC0tPlxuICAgICAgICAgIHt7IGl0LmxhYmVsIH19XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNxYS1mbGV4LTEgY3FhLWgtWzZweF0gY3FhLXJvdW5kZWQtZnVsbCBjcWEtYmctWyNGM0Y0RjZdIGNxYS1vdmVyZmxvdy1oaWRkZW5cIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3FhLWgtZnVsbCBjcWEtcm91bmRlZC1mdWxsXCIgW25nQ2xhc3NdPVwic3RhdHVzQ29sb3JDbGFzcyhpdClcIlxuICAgICAgICAgICAgW3N0eWxlLndpZHRoXT1cImZvcm1hdFBlcmNlbnQoaXQucGVyY2VudClcIj48L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiY3FhLW1pbi13LVs0MHB4XSBjcWEtdGV4dC1bMTJweF0gY3FhLWxlYWRpbmctWzE2cHhdIGNxYS1mb250LWJvbGRcIiBbbmdDbGFzc109XCJ0ZXh0Q29sb3JDbGFzcyhpdClcIj57e1xuICAgICAgICAgIGZvcm1hdFBlcmNlbnQoaXQucGVyY2VudCkgfX08L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDwhLS0gRm9vdGVyIC0tPlxuICAgICA8Y3FhLWJ1dHRvbiB2YXJpYW50PVwiZmlsbGVkXCIgW2N1c3RvbUNsYXNzXT1cIidjcWEtdy1mdWxsIGNxYS10ZXh0LVsxNHB4XSBjcWEtbGVhZGluZy1bMjBweF0gY3FhLWZvbnQtc2VtaWJvbGQnXCI+XG4gICAgICA8c3ZnIHdpZHRoPVwiMThcIiBoZWlnaHQ9XCIxOFwiIHZpZXdCb3g9XCIwIDAgMTggMThcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj48cGF0aCBkPVwiTTkuMDE4ODIgMEM5LjEyOTc5IDAuMDQ1NDc2NyA5LjE3NzE4IDAuMTU2NTMgOS4yMjI2MSAwLjI1OTY5MUM5LjI0NTM5IDAuMzE5Nzk5IDkuMjY2MjggMC4zODAyMzQgOS4yODY1NyAwLjQ0MTE1QzkuMjk0NTIgMC40NjQ0OTMgOS4zMDI0NiAwLjQ4NzgzNiA5LjMxMDY1IDAuNTExODg2QzkuNDE2MTMgMC44MjYwMDkgOS41MTAwOCAxLjE0MzUgOS42MDQ1NyAxLjQ2MDc2QzkuNjI1OTMgMS41MzIzOCA5LjY0NzM5IDEuNjAzOTcgOS42Njg4NSAxLjY3NTU3QzkuNzc4MSAyLjA0MDA3IDkuODg2NTQgMi40MDQ4IDkuOTk0MzggMi43Njk2OUMxMC4wMDk1IDIuODIwOTMgMTAuMDI0NyAyLjg3MjE4IDEwLjAzOTggMi45MjM0MkMxMC4wODI2IDMuMDY3OSAxMC4xMjUyIDMuMjEyMzkgMTAuMTY3NyAzLjM1Njk0QzEwLjI1NzMgMy42NjIzOSAxMC4zNDk1IDMuOTY2OTUgMTAuNDQ3NiA0LjI3MDAyQzEwLjQ1NjEgNC4yOTY1MyAxMC40NjQ3IDQuMzIzMDUgMTAuNDczNSA0LjM1MDM2QzEwLjcyODQgNS4xMjk5OSAxMS4wODk2IDUuODI4NzUgMTEuNjgxOCA2LjQyMzkzQzExLjY5NjUgNi40Mzk0IDExLjcxMTEgNi40NTQ4OCAxMS43MjYyIDYuNDcwODNDMTEuOTc5IDYuNzI4NzUgMTIuMzAzNCA2LjkzNTQxIDEyLjYyNzYgNy4xMDIyMUMxMi42NDQxIDcuMTEwODUgMTIuNjYwNiA3LjExOTQ4IDEyLjY3NzYgNy4xMjgzOEMxMy42MzE3IDcuNjE4NTEgMTQuNzc5IDcuODM0MDcgMTUuODEyNCA4LjEyMTAxQzE2LjI2NTIgOC4yNDY4MSAxNi43MTY2IDguMzc2NTggMTcuMTY2MyA4LjUxMjA2QzE3LjE5NzkgOC41MjE1NyAxNy4yMjk2IDguNTMxMDcgMTcuMjYxMiA4LjU0MDU1QzE3LjM1NTcgOC41Njg5IDE3LjQ1IDguNTk3NzQgMTcuNTQ0MiA4LjYyNjk0QzE3LjU2NjIgOC42MzM1OCAxNy41ODgyIDguNjQwMjMgMTcuNjEwOCA4LjY0NzA3QzE3Ljc0MDYgOC42ODgxMiAxNy44NjQ4IDguNzM2NTggMTcuOTcxMyA4LjgyMDU0QzE4LjAwMzggOC44ODgzNyAxOC4wMDM4IDguODg4MzcgMTcuOTk1IDguOTU2MTlDMTcuODkxMyA5LjA1NDcyIDE3Ljc4ODQgOS4xMDA5MiAxNy42NTE2IDkuMTQ1OTlDMTcuNjMyIDkuMTUyNjQgMTcuNjEyNCA5LjE1OTMgMTcuNTkyMyA5LjE2NjE1QzE3LjM2MTIgOS4yNDM2NiAxNy4xMjcgOS4zMTE0OSAxNi44OTI1IDkuMzc4NzFDMTYuODQ0NCA5LjM5MjYxIDE2Ljc5NjMgOS40MDY1MSAxNi43NDgyIDkuNDIwNDJDMTYuNDUxNCA5LjUwNjAzIDE2LjE1NDIgOS41ODk4IDE1Ljg1NjYgOS42NzI2M0MxNS40NjQ2IDkuNzgxNzUgMTUuMDczMyA5Ljg5MjY4IDE0LjY4MjMgMTAuMDA0OUMxNC42MTgyIDEwLjAyMzIgMTQuNTU0MSAxMC4wNDE2IDE0LjQ5IDEwLjA1OThDMTQuMTUzNCAxMC4xNTU3IDEzLjgxODUgMTAuMjU1MSAxMy40ODYzIDEwLjM2NDJDMTMuNDU4NyAxMC4zNzMyIDEzLjQzMTIgMTAuMzgyMiAxMy40MDI4IDEwLjM5MTVDMTIuMjkwMiAxMC43NjE2IDExLjQ0MjIgMTEuNDUyMiAxMC45MTE0IDEyLjQ2MkMxMC42MjUzIDEzLjAyOTUgMTAuNDU2NSAxMy42NDMyIDEwLjI4NDMgMTQuMjQ4OUMxMC4yMzc3IDE0LjQxMjQgMTAuMTg4MiAxNC41NzQ5IDEwLjEzODEgMTQuNzM3NEMxMC4wOTg4IDE0Ljg2NTIgMTAuMDYwNCAxNC45OTMzIDEwLjAyMyAxNS4xMjE2QzEwLjAxODUgMTUuMTM2OSAxMC4wMTQxIDE1LjE1MjIgMTAuMDA5NSAxNS4xNjc5QzkuOTg3ODggMTUuMjQxOSA5Ljk2NjM4IDE1LjMxNTkgOS45NDUwMyAxNS4zODk5QzkuODkwMzkgMTUuNTc3NiA5LjgzMTU2IDE1Ljc2MzcgOS43NzExMSAxNS45NDk4QzkuNjYzODMgMTYuMjgwNCA5LjU2NjIgMTYuNjEzNSA5LjQ2OTE3IDE2Ljk0N0M5LjMyMjg4IDE3LjQ0OTEgOS4zMjI4OCAxNy40NDkxIDkuMjM5OTMgMTcuNjkwNUM5LjIzNDQzIDE3LjcwNjcgOS4yMjg5MyAxNy43MjI5IDkuMjIzMjYgMTcuNzM5NkM5LjE5Mjk4IDE3LjgyNTYgOS4xNjE4MyAxNy45MDQ3IDkuMTA0NTMgMTcuOTc3NEM5LjAxNzM0IDE3Ljk5NTggOS4wMTczNCAxNy45OTU4IDguOTM5MDEgMThDOC44NDk0NiAxNy44NzUyIDguNzkwMTYgMTcuNzU0MiA4Ljc0MjY1IDE3LjYxMDJDOC43MzU3NCAxNy41ODk3IDguNzI4ODIgMTcuNTY5MyA4LjcyMTcgMTcuNTQ4M0M4LjYzMzY4IDE3LjI4NSA4LjU1NTAyIDE3LjAxODkgOC40NzYzNCAxNi43NTI5QzguNDU4MzIgMTYuNjkyMSA4LjQ0MDIyIDE2LjYzMTMgOC40MjIxMSAxNi41NzA1QzguMjg3MiAxNi4xMTczIDguMTU0NTEgMTUuNjYzNSA4LjAyMjAyIDE1LjIwOTZDNy40NzAxNCAxMi45NjQ1IDcuNDcwMTQgMTIuOTY0NSA2LjA3OCAxMS4xNDkzQzYuMDU1NjkgMTEuMTMxOSA2LjAzMzM4IDExLjExNDUgNi4wMTAzOSAxMS4wOTY2QzUuMDk4MjYgMTAuMzk4IDMuODk2NjcgMTAuMTM5NCAyLjc5NjMgOS44MzYyN0MyLjUyNDE1IDkuNzYxMjQgMi4yNTIxIDkuNjg1ODcgMS45ODAwNiA5LjYxMDQ2QzEuOTU2MjggOS42MDM4NiAxLjk1NjI4IDkuNjAzODYgMS45MzIwMSA5LjU5NzE0QzEuNTM5NjIgOS40ODgzNCAxLjE0NzM1IDkuMzc5MjUgMC43NTY0NDggOS4yNjU2NkMwLjczOTkxMSA5LjI2MDg5IDAuNzIzMzc1IDkuMjU2MTIgMC43MDYzMzggOS4yNTEyMUMwLjEwNTc5OCA5LjA3NzY3IDAuMTA1Nzk4IDkuMDc3NjcgMC4wMDEyOTMwNyA4Ljk1NjE5Qy0wLjAwMTY2MjUyIDguOTAxMDggLTAuMDAxNjYyNTIgOC45MDEwOCAwLjAyNDkzNzggOC44NDMxNUMwLjEzNDE2NyA4Ljc0MDggMC4yNDAxNTMgOC42OTY5NiAwLjM4NDMyIDguNjUyMzhDMC40MDUxOTQgOC42NDU2NyAwLjQyNjA2OCA4LjYzODk3IDAuNDQ3NTc0IDguNjMyMDZDMC41MTE1MDYgOC42MTE2NCAwLjU3NTU3NyA4LjU5MTY5IDAuNjM5NzAyIDguNTcxODNDMC42NTgwMDEgOC41NjYwOSAwLjY3NjMwMSA4LjU2MDM1IDAuNjk1MTU1IDguNTU0NDNDMC44MjQ1NyA4LjUxMzg1IDAuOTU0NDUgOC40NzQ3OSAxLjA4NDUyIDguNDM2MThDMS4xMTY0OCA4LjQyNjY1IDEuMTE2NDggOC40MjY2NSAxLjE0OTA5IDguNDE2OTNDMS43MDQ1NCA4LjI1MTc0IDIuMjYzNjEgOC4wOTgwMSAyLjgyMjUyIDcuOTQzOTJDMy4yMzg5OSA3LjgyOTA5IDMuNjU0NzYgNy43MTIzNiA0LjA2OTIxIDcuNTkwOTdDNC4wODgyNSA3LjU4NTQyIDQuMTA3MyA3LjU3OTg3IDQuMTI2OTIgNy41NzQxNUM1LjA4NyA3LjI5MzkzIDYuMDI1NTcgNi44OTYzMiA2LjY0NTQ3IDYuMTA3NEM2LjY1NDc1IDYuMDk1NjkgNi42NjQwMyA2LjA4Mzk5IDYuNjczNiA2LjA3MTk0QzcuMzYzOTUgNS4xOTYzIDcuNjMzMTUgNC4xMzE0NSA3LjkzMzkxIDMuMDkyNDFDOC4wMzI4NSAyLjc1MDY5IDguMTMyOTggMi40MDkyOSA4LjIzMzQ1IDIuMDY3OThDOC4yNjEyNyAxLjk3MzQ3IDguMjg5MDYgMS44Nzg5NCA4LjMxNjczIDEuNzg0MzlDOC40Mjc4OCAxLjQwNDU4IDguNTQwNyAxLjAyNTI4IDguNjYgMC42NDc3MjdDOC42NzExNiAwLjYxMjM3MiA4LjY4MjI3IDAuNTc3MDAxIDguNjkzMzMgMC41NDE2MTRDOC44NjAzNSAwLjAwNzk3NTIyIDguODYwMzUgMC4wMDc5NzUyMiA5LjAxODgyIDBaXCIgZmlsbD1cIiNGQkZDRkZcIi8+PHBhdGggZD1cIk0xNC40NzE5IDEuMTEwNjlDMTQuNTgwNSAxLjIyODE3IDE0LjYwMjIgMS4zNjYyNCAxNC42MzYgMS41MTYyNUMxNC43NDg3IDEuOTg3NTEgMTQuODc4NiAyLjQyMDg0IDE1LjMyOTMgMi42OTQ2QzE1LjYwNzQgMi44NDE2NyAxNS45Mzg5IDIuOTA4NTkgMTYuMjQ3IDIuOTcxOEMxNi4zNzcxIDIuOTk5MDIgMTYuNDg2OSAzLjAzNTE1IDE2LjU5ODUgMy4xMDc0QzE2LjYyMzYgMy4xNDU1NSAxNi42MjM2IDMuMTQ1NTUgMTYuNjIyMSAzLjIxMTk3QzE2LjU5NjMgMy4yOTI3MyAxNi41NzM2IDMuMzE4NzggMTYuNTA1NCAzLjM3MTY1QzE2LjQzMDggMy4zOTU0OSAxNi40MzA4IDMuMzk1NDkgMTYuMzQxMyAzLjQxNDA0QzE2LjMwNzUgMy40MjE0NyAxNi4yNzM2IDMuNDI4OTggMTYuMjM5OCAzLjQzNjU2QzE2LjIyMTcgMy40NDA1OCAxNi4yMDM2IDMuNDQ0NiAxNi4xODQ5IDMuNDQ4NzRDMTUuNjMzOSAzLjU3MDYyIDE1LjYzMzkgMy41NzA2MiAxNS4xNTc2IDMuODQ2NDVDMTUuMTQyMSAzLjg1ODM3IDE1LjEyNjcgMy44NzAyOSAxNS4xMTA3IDMuODgyNTdDMTQuNzcwMyA0LjE2OTU5IDE0LjY5ODMgNC42NDcwMyAxNC41OTU4IDUuMDQ2OTlDMTQuNTkgNS4wNjg5NiAxNC41ODQxIDUuMDkwOTIgMTQuNTc4IDUuMTEzNTVDMTQuNTczIDUuMTMzIDE0LjU2NzkgNS4xNTI0NCAxNC41NjI3IDUuMTcyNDhDMTQuNTQwNSA1LjIzMTg1IDE0LjUxNzYgNS4yNzA1NyAxNC40NzE5IDUuMzE2MDdDMTQuMzQ0NyA1LjMzMTUyIDE0LjM0NDcgNS4zMzE1MiAxNC4yODI4IDUuMzE2MDdDMTQuMTg0MyA1LjI0MzA5IDE0LjE2MjMgNS4xNTk5NyAxNC4xMzY2IDUuMDQ4MjhDMTQuMTMyMiA1LjAzMDk5IDE0LjEyNzkgNS4wMTM2OSAxNC4xMjM1IDQuOTk1ODdDMTQuMTA5OCA0Ljk0MDY0IDE0LjA5NjUgNC44ODUzMSAxNC4wODMzIDQuODI5OTZDMTMuOTc5NiA0LjM5ODkxIDEzLjg2MjUgMy45NzYgMTMuNDQ5IDMuNzIzMzNDMTMuMTI1OCAzLjU1MTAxIDEyLjczMjkgMy40Njk1MSAxMi4zNzE3IDMuNDAzN0MxMi4yNzI3IDMuMzgzOTkgMTIuMjE2IDMuMzU5MiAxMi4xNTQ3IDMuMjgxMjFDMTIuMTQxNCAzLjIwMjA4IDEyLjE0MTQgMy4yMDIwOCAxMi4xNTQ3IDMuMTIyOTRDMTIuMjQ4OSAzLjAyOTcxIDEyLjM0OCAzLjAwNjk2IDEyLjQ3NTQgMi45Nzg4MUMxMi41MTU2IDIuOTY5MyAxMi41NTU3IDIuOTU5NzMgMTIuNTk1OCAyLjk1MDFDMTIuNjE2NSAyLjk0NTE2IDEyLjYzNzIgMi45NDAyMiAxMi42NTg2IDIuOTM1MTJDMTIuNzY0MiAyLjkwOTExIDEyLjg2ODkgMi44Nzk5NSAxMi45NzM0IDIuODUwMjFDMTIuOTkyNCAyLjg0NDk0IDEzLjAxMTQgMi44Mzk2NyAxMy4wMzEgMi44MzQyNEMxMy4yNDM2IDIuNzczNDYgMTMuNDI3MSAyLjY5NTcxIDEzLjU5NzEgMi41NTc3QzEzLjYxMjkgMi41NDUyMyAxMy42Mjg4IDIuNTMyNzYgMTMuNjQ1MSAyLjUxOTlDMTMuOTA5NiAyLjI5MjI4IDEzLjk5OTUgMS45NTAzMiAxNC4wODEgMS42MzEyNEMxNC4wODczIDEuNjA3MDIgMTQuMDkzNSAxLjU4MjggMTQuMDk5OSAxLjU1Nzg0QzE0LjExMjMgMS41MDkxOCAxNC4xMjQ0IDEuNDYwNDYgMTQuMTM2MyAxLjQxMTdDMTQuMTQ0OSAxLjM3Nzc2IDE0LjE0NDkgMS4zNzc3NiAxNC4xNTM1IDEuMzQzMTVDMTQuMTU4NSAxLjMyMjg4IDE0LjE2MzUgMS4zMDI2MSAxNC4xNjg2IDEuMjgxNzJDMTQuMTkwNCAxLjIxNzE5IDE0LjIxOSAxLjE2NjUyIDE0LjI1OTEgMS4xMTA2OUMxNC4zMzYyIDEuMDczODUgMTQuMzkwMyAxLjA5MDUgMTQuNDcxOSAxLjExMDY5WlwiIGZpbGw9XCIjRkJGQ0ZGXCIvPjxwYXRoIGQ9XCJNMy41OTA4OSAxMi40OTQyQzMuNjE5MDIgMTIuNDk0NCAzLjYxOTAyIDEyLjQ5NDQgMy42NDc3MiAxMi40OTQ2QzMuODQ5NTQgMTIuNTAwNCAzLjk4NjA5IDEyLjU2MjMgNC4xMzQ3MiAxMi42OTJDNC4zMDc2NyAxMi44NzA3IDQuMzg3NTMgMTMuMDcyMiA0LjM4Mjk5IDEzLjMxM0M0LjM2MzU3IDEzLjUwODIgNC4yNDMxNiAxMy42Nzg3IDQuMDk1NDcgMTMuODEwN0MzLjkyMTYzIDEzLjk0NDggMy43NDYyNiAxMy45ODkyIDMuNTI0MTEgMTMuOTgzQzMuMzM2ODEgMTMuOTYyMSAzLjE2MDYgMTMuODc3IDMuMDI3ODUgMTMuNzQ5QzIuODYyNzYgMTMuNTMzNiAyLjgxNDUgMTMuMzM2MSAyLjgzODY5IDEzLjA3MDdDMi44ODg2NyAxMi44NjE4IDMuMDMyNzQgMTIuNjkyMyAzLjIxNzAxIDEyLjU3MzNDMy4zNDUwMiAxMi41MTEzIDMuNDQ3OTggMTIuNDkzIDMuNTkwODkgMTIuNDk0MlpcIiBmaWxsPVwiI0ZCRkNGRlwiLz48L3N2Zz5cbiAgICAgIHt7IGN0YVRleHQgfX1cbiAgICA8L2NxYS1idXR0b24+XG4gIDwvZGl2PlxuPC9kaXY+Il19
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';
|
|
2
|
+
import { FormControl, FormGroup } from '@angular/forms';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "../../button/button.component";
|
|
5
|
+
import * as i2 from "../../dynamic-select/dynamic-select-field.component";
|
|
6
|
+
import * as i3 from "@angular/common";
|
|
7
|
+
export class DashboardHeaderComponent {
|
|
8
|
+
constructor() {
|
|
9
|
+
this.title = '';
|
|
10
|
+
this.badgeClass = 'bg-[#D1FAE5] text-[#065F46]';
|
|
11
|
+
this.headerClass = '';
|
|
12
|
+
// Optional workspace select on the right
|
|
13
|
+
this.workspaceOptions = [];
|
|
14
|
+
this.workspacePlaceholder = 'Workspace';
|
|
15
|
+
this.workspaceDisabled = false;
|
|
16
|
+
this.workspaceMultiple = true;
|
|
17
|
+
this.workspaceSearchable = false;
|
|
18
|
+
this.workspaceValueChange = new EventEmitter();
|
|
19
|
+
this.workspaceForm = new FormGroup({
|
|
20
|
+
workspace: new FormControl(),
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
ngOnInit() {
|
|
24
|
+
this.syncFormFromInput();
|
|
25
|
+
this.workspaceForm.get('workspace')?.valueChanges.subscribe((v) => {
|
|
26
|
+
this.workspaceValue = v;
|
|
27
|
+
this.workspaceValueChange.emit(v);
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
ngOnChanges(_changes) {
|
|
31
|
+
this.syncFormFromInput();
|
|
32
|
+
}
|
|
33
|
+
get workspaceConfig() {
|
|
34
|
+
return {
|
|
35
|
+
key: 'workspace',
|
|
36
|
+
placeholder: this.workspacePlaceholder,
|
|
37
|
+
disabled: this.workspaceDisabled,
|
|
38
|
+
multiple: this.workspaceMultiple,
|
|
39
|
+
searchable: this.workspaceSearchable,
|
|
40
|
+
options: this.workspaceOptions,
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
syncFormFromInput() {
|
|
44
|
+
const ctrl = this.workspaceForm.get('workspace');
|
|
45
|
+
if (!ctrl)
|
|
46
|
+
return;
|
|
47
|
+
const val = this.workspaceValue;
|
|
48
|
+
const normalized = this.workspaceMultiple
|
|
49
|
+
? Array.isArray(val) ? val : (val != null ? [val] : [])
|
|
50
|
+
: (Array.isArray(val) ? (val.length ? val[0] : undefined) : val);
|
|
51
|
+
ctrl.setValue(normalized, { emitEvent: false });
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
DashboardHeaderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: DashboardHeaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
55
|
+
DashboardHeaderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: DashboardHeaderComponent, selector: "cqa-dashboard-header", inputs: { title: "title", badgeText: "badgeText", badgeClass: "badgeClass", headerClass: "headerClass", workspaceOptions: "workspaceOptions", workspacePlaceholder: "workspacePlaceholder", workspaceDisabled: "workspaceDisabled", workspaceValue: "workspaceValue", workspaceMultiple: "workspaceMultiple", workspaceSearchable: "workspaceSearchable" }, outputs: { workspaceValueChange: "workspaceValueChange" }, usesOnChanges: true, ngImport: i0, template: "<div id=\"cqa-ui-root\">\n <div\n class=\"cqa-w-full cqa-flex cqa-items-end cqa-justify-between cqa-bg-white cqa-pr-6 cqa-pl-2 lg:cqa-px-6 lg:cqa-py-[6px] cqa-py-2 cqa-border-b cqa-border-default cqa-shadow-header\"\n [ngClass]=\"headerClass\">\n <!-- Left branding block -->\n <div class=\"cqa-flex cqa-items-center cqa-gap-2 cqa-min-w-0\">\n <div class=\"cqa-pr-4 lg:cqa-hidden cqa-gap-2 md:cqa-flex\">\n <cqa-button variant=\"filled\" icon=\"\" [customClass]=\"'!cqa-rounded-[10px] !cqa-p-[7px] !cqa-min-w-[47px]'\">\n <svg width=\"31\" height=\"22\" viewBox=\"0 0 31 22\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M5.16675 11H25.8334\" stroke=\"white\" stroke-width=\"1.83333\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n <path d=\"M5.16675 16.5H25.8334\" stroke=\"white\" stroke-width=\"1.83333\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n <path d=\"M5.16675 5.5H25.8334\" stroke=\"white\" stroke-width=\"1.83333\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n </cqa-button>\n <span class=\"cqa-border-l cqa-border-primary-surface cqa-hidden md:cqa-flex\"></span>\n <cqa-button variant=\"filled\" icon=\"\" class=\"cqa-hidden md:cqa-flex\" [customClass]=\"'!cqa-rounded-[10px] !cqa-p-[7px] !cqa-min-w-[47px]'\">\n <svg width=\"22\" height=\"22\" viewBox=\"0 0 22 22\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M4.58337 11H17.4167\" stroke=\"white\" stroke-width=\"1.33333\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n <path d=\"M11 4.58301V17.4163\" stroke=\"white\" stroke-width=\"1.33333\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n </cqa-button>\n </div>\n <!-- Optional projected logo -->\n <svg width=\"32\" height=\"32\" viewBox=\"0 0 32 32\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\n xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n <rect x=\"0.5\" y=\"0.5\" width=\"31\" height=\"31\" rx=\"15.5\" fill=\"url(#pattern0_6303_22035)\" />\n <rect x=\"0.5\" y=\"0.5\" width=\"31\" height=\"31\" rx=\"15.5\" stroke=\"#D8D9FC\" />\n <defs>\n <pattern id=\"pattern0_6303_22035\" patternContentUnits=\"objectBoundingBox\" width=\"1\" height=\"1\">\n <use xlink:href=\"#image0_6303_22035\" transform=\"scale(0.005)\" />\n </pattern>\n <image id=\"image0_6303_22035\" width=\"200\" height=\"200\" preserveAspectRatio=\"none\"\n xlink:href=\"data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wCEAAkGBw8SEBMQEBASEBAQEBYRFRUXFRARERASGRkWGxYXGBUYHigsGBomGxUYITEhJSkrLjouGSAzODMsNygtLjcBCgoKDg0OGxAQGy4dICUrNy0rKysrMDctLisvLS0tKy0tLTcuLS0tMDctNi0tLSstLS0rLS0rLTEtLS0tLS0tLf/AABEIAMgAyAMBIgACEQEDEQH/xAAcAAEAAgIDAQAAAAAAAAAAAAAABQYCBwEDBAj/xABBEAABAwICAwsKBQUAAwEAAAABAAIDBBEFIQYSQQciMVFSYXGBkaHRExQWIzJUkqKxwRdCYnKyU4LC4fAkNPEV/8QAGwEBAAIDAQEAAAAAAAAAAAAAAAIDAQQFBgf/xAAuEQACAQIEAwYGAwAAAAAAAAAAAQIDEQQSIVETMUEFUmGBkbEUIjJCccEVodH/2gAMAwEAAhEDEQA/AN4oiIAiIgCIiAIiIAiIgCIiAIiIAiIgCIiAIiIAiIgCIiAIiIAiIgCIiAIiIAiIgCIiAIiIAiIgCIiAIiIAiIgCIiAIiIAiIgCIiAIiIAiIgCIiAIiIAiIgCIiAIiIAiIgCIiAIiIAiIgCIiA81XK5jdcDWDc3DaW8Y5xwrkyFzNeIg3F2n8ruZd6r/AJbzSo1DlTzm7eKN+3qz71KKuRbsS1JViVhLbtIJa4H2mOHCCF1UNfrPdC+zZo7awzs5p4HtvsPdwKMxwuppRVxi7HEMmbyh+V3SuNI4TJEytpT66Aa7CPzxn2mnjy2KagvJ+5jMyS8/1JxBLl5S5hdsfbNzDxOHeOtcYjiBgc18n/rvIa539F/5Sf0k5X2G3Go9zosSorsOo/hBz1oZm8Gf/ZFdOjOLCshkpapvr4wY5mG2/GY1gmTq+nMZiD08bidNeopqqV1OTvm70mHrtm1Uf00xP3uT5PBbI0br3QzvwmrOvqj1DnWPlYiCdU9X3CoWnui5optaME08pJZw7w7WH7LcoON8kkvB7lM780eT00xP3uT5PBPTTE/e5Pk8FAItvhQ2RVne5P8AppifvcnyeCemmJ+9yfJ4KAROFDZDO9yz0GnmIxyNe6YytBzY4N1XDaLgZHnW4cAxqGrhE0JyOTm/mY7aCvndTeiekMlFOJG3MbspGctvHzEcK16+GUleK1J06jT1PoBVTTKmrmtM9JO8Bou6MWOXG247lY6KqZLG2WN2sx7Q5p4wu9cqUbqx0KFXhTU7J+DNLeleIe8v+XwT0rxD3l/y+Cm9P9GvJONTC31TzvwOBjuPoJVKXOm5wdmz2uFjhcRTU4wXoia9K8Q95f8AL4J6V4h7y/5fBQqKGeW5sfCUO4vRE16V4h7y/wCXwWUel1eCD5w42PAQ0g9OSg0Wc8tw8HQ7i9Ebo0X0hjq49Yb2Vvts4uccYU4tD4ViMlPK2aI2c09ThtBW6MExSOphbLHwEZja120FbtGrnVnzPJ9qdnPDSzR+l/14EiiIrzknCjseofLQOaPaG+b0j/rKSXCynZ3MNXViuYBVNqad1PLmWt1ect2HpC8OiVa6KV9FKeBx1P3bR0EZrpmd5rXEjJhdf+x3D3/RYabQmKojqGZF4vf9bbfay21FN5ej18ym7tfY80U3/wCbiTozlTTkHmAPAf7XXHQsdNo30VbFiEIykNnjYSALg/ub/FerTyJs9HDVtHs2vzNdYEdTgEa7z7B3tOcsDevWZmO1uXWVJdJv8MxuvNGG6DTCelhxGnO+hs4OHDqEjva77qUopIsWw4tfYOcNV3HHK3gcO49ahNzesE1PNQy5t1SWj9Drhw6jn/covc7rXUte+kkOUrjGeLyjL2PWLjrCw4NRcesdV+DKlqnuUSupHwyPikFnxuLXDnH1C6FsTdewgNljq2jKUaj/AN7RvT1t/itdrepTzwUiicbOwREVhEIiIDYu5PpCWyGikO9ku6L9L8y5vQRn1c62svmmmndG9sjDZ7HBwPEQvoXB8WingjnDmjyjA61xkdo7brmYulaWZdTZoyurM9dXTMkY6N4u14LSOMLSWPYW6mqHwuz1Tdp5TTwFbv8AOGctvaFSd0uhZJC2oYWl0R1XWIuWOsO427VzMRTco32O92Ni+FXyN6S9+hrVERc89mEREAVn0Exw09QGPNoZiGu4mu/K77KsLlShJxd0U4ihGtTcJdT6DuigtDcUNRSMc43e0ajukbesWPWuV1Iu6uj5/VpunNwlzROoiLJWVDTeHfRv4wW9lrfVYY563DY5dsZF+0sPfZe7TZvqmHik+oK8EG+wuYckn6tK24P5YvZlEvqaOnBfXYbUwHPUDiP5N+YKO3Mqq00sJ4JI9a3O3/Tu5SGgJuZ2bHMb3aw+6rmgj9XEIhx67fkd4K5rSovMhfWLOjRmTzXFWsvZomfCecG4HfZYadtNPirpWZG8c7emwv3tKx0kPk8VkI/LUNd/Er37rbLVcR44P8nKa1nF7oj9r8GXLTumbUYZK5udmNnb1WP8b9q0Wt+YR6zCmA569Jq/JZaDWMJpmjsyVbowiItwpCIiAIiIAso3WIPEViijKKasydObjJSXRkui4jOQ6AuV42Ss2j6pTlmgnugiIokwiIgL5uV1lpJoScnNDx0jI/UdiKK3OpCK9g5THjuv9lyujh3eB4vtuChim91f9G3URFcckrWmz/VRjjeT2A+K8EO9wuY8o/5NCz02mvJGzktJ7f8A4sdIfU4fFDteRcdrj3kLbgvlit2US+ps6NAsjO88DWD/ACP2Vc0DYXYhEeIPcfgd9yrJhfqMLqJjkZAQP4DvJUfuZ03rJp3ZNjYG36bk9zVc5aVH5EEtYor2kI8pisgGetUtZ3tH2Xv3W5L1cbeTAO9zl59EojU4o2QjLyj53cwFyPmIXVpmTVYs6Jme/ZA3sAPzXVi0mlsjH2vxZsjC/VYUwnLUo9b5LrQa3lugVbafDZGtyL2tgYOmwPygrRqjhNVKW7M1uiCIi3CkIiIAiKUotHa2Zgkip5JI3Xs4DI2JH1Cw5Jcxa/Ii0U36I4j7pL8Kwn0Zro2l8lNIyNvtOIsAFCVWCTdyynTlKSilzZjGMh0LlEXjpO8mz6pTjlilsgiIsEgiIgLRucx3r2nksee633RS+5XR76acjIARt7y77IujhlaB4vtqanin4K37NjLhFFaSV3koTb25N437nsV8Vd2OQ3ZXK9GzzuuJ4WB1zxajbfX7rq0vkdPVsp2Zllm/3OzPdZTeG07aOldLJ7ZGs7/Fv/ca8eiVAbvrZvafctvsGes5bSkk822iKbPluR26DO2Gnho2bcz+1vB2k9yyrGeYYOWnKacWPHrP4R1M+i68IpjiFe+reP8Ax4XAMB4HW9kD+R6QurSVrsRxBlHGfU0+cjhwAm2t15BvSpq2kH01Zjd+SMtAKVtLRzV8o9ppLf2Nv9T9FF7meHOnq5K2QXEZJB45X3+gJ7QpjdBqCWwYXSt38pbdo2MbbVHRcX/tUnWTw4RhwaLOeBZo2yzHhPRfPoCw5tptc5exlJabIpu61jIknZSsO9p8388jgPo36lUFdlRM57nPeS5z3FxO0krrW9ShkiolEnd3CIisIhERAeigpHzSshjF3yODQOc/ZfROF0LYIY4WezGwNHPbb2qgblOjZaPPpW5uBbCOJvA5/Xwdq2SuXi6uaWVdDaoxsrhUPdPxWzGUrTm867+Zo9kdv0VxxSvZBE6aQ2awX5zxAc91pHFa99RM+Z/tPde3ENg7FzMRUyxtueg7Fwbq1eI+Ufc8iIi0D2AREQBcgXyGZ4FwrjueYCZZfOJB6qI73ifJ/r6qUIuTsa+KxEaFJ1JF70UwvzaljjPt21nfuOZ7ODqRTCLqJWVkeAqTdSbm+bOHEAXPAFC0lOZ5vOXj1bMoWnb+sqVqIdcap9n8w5XN0LKVhLbNOrsvxdCmnbkVtXITEITVzCLgp4XXkP8AUfyR0LHSIvl1aGn3rpB6xw4IYfE8AHSpuGFrGajAAAMhn3rGkpGsueF7zrPceF5+w2WUlO3lyI5SJr3CjpmwUzLzP9XC3K7n7XG+wcJK68LoYcOpHySHWf7cr/zSSHIAceZsOlTEVIPKGV2+kI1QdjGclv1J/wBLiajD5GPfm2M3Y3Zr8o8ZGxM/T1M5SuYPRCnE2J15DZ5RrG+fkGcDWDjNrDuWrtLdIpK2cyOu2Nu9jZyG7TzklbA0y0cxOuksHxMp2HeM1nZnlONsz9FW/wAL6/lw/E7wW5QlTXzSevsUTUnoloUdFePwvr+XD8TvBPwvr+XD8TvBbPxFPvFfDlsUdFePwvr+XD8TvBPwvr+XD8TvBPiKfeHDlsUdWvQTRN1ZLryAimjO+P8AUPIB+qlsO3LqkyN8vJG2K++1CS4jiFx3raNBRxwxtiiaGRsFgBsVFfFJK0GWQpO92d0cYaA1oAaBYAZAAJLIGgucQABck8ACzKqul2F11V6qFzGQbbuOtIeew4OZcuTaV1qb1CnGc1GTyrdlL000kNVJqRm0EZ3v6zyj9lWVb/w9reVF8TvBPw9reVF8TvBaEqdSTu0exoYzBUKahCasioIrf+Htbyovid4J+Htbyovid4KPBnsXfyeF76Kgit/4e1vKi+J3gsotzyrJGs+MNvmQXEgdFlngz2MPtPC99EJo5gclXKGNyYM3u2Nb4rctBRxwxtijbqsYLALpwbCoqaIRRCwHCdrjxkr3rcpUsi8Ty3aOPlip6aRXL/TlERXHNCIiAIiIAiIgCIiAIiIAiIgCIiAIiIAiIgCIiAIiIAiIgCIiAIiIAiIgCIiAIiIAiIgCIiAIiIAiIgCIiAIiIAiIgCIiAIiIAiIgCIiAIiIAiIgCIiAIiIAiIgCIiAIiIAiIgCIiAIiIAiIgCIiAIiIAiIgCIiAIiIAiIgCIiAIiIAiIgCIiAIiIAiIgCIiA/9k=\" />\n </defs>\n </svg>\n\n <!-- Title + optional badge -->\n <div class=\"cqa-items-end cqa-gap-3 cqa-min-w-0 cqa-hidden md:cqa-flex\">\n <div\n class=\"cqa-truncate cqa-text-[#22223B] cqa-font-extrabold cqa-text-[32px] cqa-font-nunito-sans cqa-leading-[1]\">\n {{ title }}</div>\n <span *ngIf=\"badgeText\"\n class=\"cqa-px-2 cqa-py-[2px] cqa-rounded-lg cqa-text-[12px] cqa-font-medium cqa-leading-4 cqa-whitespace-nowrap cqa-text-[#007A55] cqa-bg-[#D0FAE5] cqa-border cqa-border-[#A4F4CF]\"\n [ngClass]=\"badgeClass\">{{ badgeText }}</span>\n </div>\n </div>\n\n <!-- Right controls/actions -->\n <div class=\"cqa-flex cqa-items-center cqa-gap-3 cqa-flex-1\">\n <!-- Optional workspace select -->\n <div *ngIf=\"workspaceOptions?.length\" class=\"cqa-w-full cqa-max-w-[199px] cqa-ml-auto header-dropdown\">\n <cqa-dynamic-select [form]=\"workspaceForm\" [config]=\"workspaceConfig\">\n </cqa-dynamic-select>\n </div>\n\n <ng-content></ng-content>\n </div>\n </div>\n</div>", components: [{ type: i1.ButtonComponent, selector: "cqa-button", inputs: ["variant", "disabled", "icon", "iconPosition", "fullWidth", "iconColor", "type", "text", "customClass"], outputs: ["clicked"] }, { type: i2.DynamicSelectFieldComponent, selector: "cqa-dynamic-select", inputs: ["form", "config"] }], directives: [{ type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
56
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: DashboardHeaderComponent, decorators: [{
|
|
57
|
+
type: Component,
|
|
58
|
+
args: [{ selector: 'cqa-dashboard-header', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div id=\"cqa-ui-root\">\n <div\n class=\"cqa-w-full cqa-flex cqa-items-end cqa-justify-between cqa-bg-white cqa-pr-6 cqa-pl-2 lg:cqa-px-6 lg:cqa-py-[6px] cqa-py-2 cqa-border-b cqa-border-default cqa-shadow-header\"\n [ngClass]=\"headerClass\">\n <!-- Left branding block -->\n <div class=\"cqa-flex cqa-items-center cqa-gap-2 cqa-min-w-0\">\n <div class=\"cqa-pr-4 lg:cqa-hidden cqa-gap-2 md:cqa-flex\">\n <cqa-button variant=\"filled\" icon=\"\" [customClass]=\"'!cqa-rounded-[10px] !cqa-p-[7px] !cqa-min-w-[47px]'\">\n <svg width=\"31\" height=\"22\" viewBox=\"0 0 31 22\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M5.16675 11H25.8334\" stroke=\"white\" stroke-width=\"1.83333\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n <path d=\"M5.16675 16.5H25.8334\" stroke=\"white\" stroke-width=\"1.83333\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n <path d=\"M5.16675 5.5H25.8334\" stroke=\"white\" stroke-width=\"1.83333\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n </cqa-button>\n <span class=\"cqa-border-l cqa-border-primary-surface cqa-hidden md:cqa-flex\"></span>\n <cqa-button variant=\"filled\" icon=\"\" class=\"cqa-hidden md:cqa-flex\" [customClass]=\"'!cqa-rounded-[10px] !cqa-p-[7px] !cqa-min-w-[47px]'\">\n <svg width=\"22\" height=\"22\" viewBox=\"0 0 22 22\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M4.58337 11H17.4167\" stroke=\"white\" stroke-width=\"1.33333\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n <path d=\"M11 4.58301V17.4163\" stroke=\"white\" stroke-width=\"1.33333\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n </cqa-button>\n </div>\n <!-- Optional projected logo -->\n <svg width=\"32\" height=\"32\" viewBox=\"0 0 32 32\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\n xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n <rect x=\"0.5\" y=\"0.5\" width=\"31\" height=\"31\" rx=\"15.5\" fill=\"url(#pattern0_6303_22035)\" />\n <rect x=\"0.5\" y=\"0.5\" width=\"31\" height=\"31\" rx=\"15.5\" stroke=\"#D8D9FC\" />\n <defs>\n <pattern id=\"pattern0_6303_22035\" patternContentUnits=\"objectBoundingBox\" width=\"1\" height=\"1\">\n <use xlink:href=\"#image0_6303_22035\" transform=\"scale(0.005)\" />\n </pattern>\n <image id=\"image0_6303_22035\" width=\"200\" height=\"200\" preserveAspectRatio=\"none\"\n xlink:href=\"data:image/jpeg;base64,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\" />\n </defs>\n </svg>\n\n <!-- Title + optional badge -->\n <div class=\"cqa-items-end cqa-gap-3 cqa-min-w-0 cqa-hidden md:cqa-flex\">\n <div\n class=\"cqa-truncate cqa-text-[#22223B] cqa-font-extrabold cqa-text-[32px] cqa-font-nunito-sans cqa-leading-[1]\">\n {{ title }}</div>\n <span *ngIf=\"badgeText\"\n class=\"cqa-px-2 cqa-py-[2px] cqa-rounded-lg cqa-text-[12px] cqa-font-medium cqa-leading-4 cqa-whitespace-nowrap cqa-text-[#007A55] cqa-bg-[#D0FAE5] cqa-border cqa-border-[#A4F4CF]\"\n [ngClass]=\"badgeClass\">{{ badgeText }}</span>\n </div>\n </div>\n\n <!-- Right controls/actions -->\n <div class=\"cqa-flex cqa-items-center cqa-gap-3 cqa-flex-1\">\n <!-- Optional workspace select -->\n <div *ngIf=\"workspaceOptions?.length\" class=\"cqa-w-full cqa-max-w-[199px] cqa-ml-auto header-dropdown\">\n <cqa-dynamic-select [form]=\"workspaceForm\" [config]=\"workspaceConfig\">\n </cqa-dynamic-select>\n </div>\n\n <ng-content></ng-content>\n </div>\n </div>\n</div>", styles: [] }]
|
|
59
|
+
}], propDecorators: { title: [{
|
|
60
|
+
type: Input
|
|
61
|
+
}], badgeText: [{
|
|
62
|
+
type: Input
|
|
63
|
+
}], badgeClass: [{
|
|
64
|
+
type: Input
|
|
65
|
+
}], headerClass: [{
|
|
66
|
+
type: Input
|
|
67
|
+
}], workspaceOptions: [{
|
|
68
|
+
type: Input
|
|
69
|
+
}], workspacePlaceholder: [{
|
|
70
|
+
type: Input
|
|
71
|
+
}], workspaceDisabled: [{
|
|
72
|
+
type: Input
|
|
73
|
+
}], workspaceValue: [{
|
|
74
|
+
type: Input
|
|
75
|
+
}], workspaceMultiple: [{
|
|
76
|
+
type: Input
|
|
77
|
+
}], workspaceSearchable: [{
|
|
78
|
+
type: Input
|
|
79
|
+
}], workspaceValueChange: [{
|
|
80
|
+
type: Output
|
|
81
|
+
}] } });
|
|
82
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGFzaGJvYXJkLWhlYWRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2Rhc2hib2FyZHMvZGFzaGJvYXJkLWhlYWRlci9kYXNoYm9hcmQtaGVhZGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvZGFzaGJvYXJkcy9kYXNoYm9hcmQtaGVhZGVyL2Rhc2hib2FyZC1oZWFkZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBQ2xJLE9BQU8sRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7O0FBZ0J4RCxNQUFNLE9BQU8sd0JBQXdCO0lBTnJDO1FBT1csVUFBSyxHQUFXLEVBQUUsQ0FBQztRQUVuQixlQUFVLEdBQVcsNkJBQTZCLENBQUM7UUFDbkQsZ0JBQVcsR0FBVyxFQUFFLENBQUM7UUFFbEMseUNBQXlDO1FBQ2hDLHFCQUFnQixHQUF5QixFQUFFLENBQUM7UUFDNUMseUJBQW9CLEdBQVcsV0FBVyxDQUFDO1FBQzNDLHNCQUFpQixHQUFZLEtBQUssQ0FBQztRQUVuQyxzQkFBaUIsR0FBWSxJQUFJLENBQUM7UUFDbEMsd0JBQW1CLEdBQVksS0FBSyxDQUFDO1FBQ3BDLHlCQUFvQixHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7UUFFekQsa0JBQWEsR0FBYyxJQUFJLFNBQVMsQ0FBQztZQUN2QyxTQUFTLEVBQUUsSUFBSSxXQUFXLEVBQUU7U0FDN0IsQ0FBQyxDQUFDO0tBa0NKO0lBaENDLFFBQVE7UUFDTixJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUN6QixJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsRUFBRSxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7WUFDaEUsSUFBSSxDQUFDLGNBQWMsR0FBRyxDQUFDLENBQUM7WUFDeEIsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNwQyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxXQUFXLENBQUMsUUFBdUI7UUFDakMsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUVELElBQUksZUFBZTtRQUNqQixPQUFPO1lBQ0wsR0FBRyxFQUFFLFdBQVc7WUFDaEIsV0FBVyxFQUFFLElBQUksQ0FBQyxvQkFBb0I7WUFDdEMsUUFBUSxFQUFFLElBQUksQ0FBQyxpQkFBaUI7WUFDaEMsUUFBUSxFQUFFLElBQUksQ0FBQyxpQkFBaUI7WUFDaEMsVUFBVSxFQUFFLElBQUksQ0FBQyxtQkFBbUI7WUFDcEMsT0FBTyxFQUFFLElBQUksQ0FBQyxnQkFBZ0I7U0FDL0IsQ0FBQztJQUNKLENBQUM7SUFFTyxpQkFBaUI7UUFDdkIsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDakQsSUFBSSxDQUFDLElBQUk7WUFBRSxPQUFPO1FBQ2xCLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUM7UUFDaEMsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLGlCQUFpQjtZQUN2QyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUN2RCxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ25FLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxFQUFFLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDbEQsQ0FBQzs7cUhBbERVLHdCQUF3Qjt5R0FBeEIsd0JBQXdCLHdlQ2pCckMsK2pSQStETTsyRkQ5Q08sd0JBQXdCO2tCQU5wQyxTQUFTOytCQUNFLHNCQUFzQixtQkFHZix1QkFBdUIsQ0FBQyxNQUFNOzhCQUd0QyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBR0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNHLG9CQUFvQjtzQkFBNUIsS0FBSztnQkFDRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBQ0csbUJBQW1CO3NCQUEzQixLQUFLO2dCQUNJLG9CQUFvQjtzQkFBN0IsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uQ2hhbmdlcywgT25Jbml0LCBPdXRwdXQsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1Db250cm9sLCBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBEeW5hbWljU2VsZWN0RmllbGRDb25maWcgfSBmcm9tICcuLi8uLi9keW5hbWljLXNlbGVjdC9keW5hbWljLXNlbGVjdC1maWVsZC5jb21wb25lbnQnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEhlYWRlclNlbGVjdE9wdGlvbiB7XG4gIGlkPzogYW55O1xuICB2YWx1ZT86IGFueTtcbiAgbmFtZT86IHN0cmluZztcbiAgbGFiZWw/OiBzdHJpbmc7XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2NxYS1kYXNoYm9hcmQtaGVhZGVyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Rhc2hib2FyZC1oZWFkZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFtdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgRGFzaGJvYXJkSGVhZGVyQ29tcG9uZW50IHtcbiAgQElucHV0KCkgdGl0bGU6IHN0cmluZyA9ICcnO1xuICBASW5wdXQoKSBiYWRnZVRleHQ/OiBzdHJpbmc7XG4gIEBJbnB1dCgpIGJhZGdlQ2xhc3M6IHN0cmluZyA9ICdiZy1bI0QxRkFFNV0gdGV4dC1bIzA2NUY0Nl0nO1xuICBASW5wdXQoKSBoZWFkZXJDbGFzczogc3RyaW5nID0gJyc7XG5cbiAgLy8gT3B0aW9uYWwgd29ya3NwYWNlIHNlbGVjdCBvbiB0aGUgcmlnaHRcbiAgQElucHV0KCkgd29ya3NwYWNlT3B0aW9uczogSGVhZGVyU2VsZWN0T3B0aW9uW10gPSBbXTtcbiAgQElucHV0KCkgd29ya3NwYWNlUGxhY2Vob2xkZXI6IHN0cmluZyA9ICdXb3Jrc3BhY2UnO1xuICBASW5wdXQoKSB3b3Jrc3BhY2VEaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSB3b3Jrc3BhY2VWYWx1ZT86IGFueTtcbiAgQElucHV0KCkgd29ya3NwYWNlTXVsdGlwbGU6IGJvb2xlYW4gPSB0cnVlO1xuICBASW5wdXQoKSB3b3Jrc3BhY2VTZWFyY2hhYmxlOiBib29sZWFuID0gZmFsc2U7XG4gIEBPdXRwdXQoKSB3b3Jrc3BhY2VWYWx1ZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIHdvcmtzcGFjZUZvcm06IEZvcm1Hcm91cCA9IG5ldyBGb3JtR3JvdXAoe1xuICAgIHdvcmtzcGFjZTogbmV3IEZvcm1Db250cm9sKCksXG4gIH0pO1xuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuc3luY0Zvcm1Gcm9tSW5wdXQoKTtcbiAgICB0aGlzLndvcmtzcGFjZUZvcm0uZ2V0KCd3b3Jrc3BhY2UnKT8udmFsdWVDaGFuZ2VzLnN1YnNjcmliZSgodikgPT4ge1xuICAgICAgdGhpcy53b3Jrc3BhY2VWYWx1ZSA9IHY7XG4gICAgICB0aGlzLndvcmtzcGFjZVZhbHVlQ2hhbmdlLmVtaXQodik7XG4gICAgfSk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhfY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIHRoaXMuc3luY0Zvcm1Gcm9tSW5wdXQoKTtcbiAgfVxuXG4gIGdldCB3b3Jrc3BhY2VDb25maWcoKTogRHluYW1pY1NlbGVjdEZpZWxkQ29uZmlnIHtcbiAgICByZXR1cm4ge1xuICAgICAga2V5OiAnd29ya3NwYWNlJyxcbiAgICAgIHBsYWNlaG9sZGVyOiB0aGlzLndvcmtzcGFjZVBsYWNlaG9sZGVyLFxuICAgICAgZGlzYWJsZWQ6IHRoaXMud29ya3NwYWNlRGlzYWJsZWQsXG4gICAgICBtdWx0aXBsZTogdGhpcy53b3Jrc3BhY2VNdWx0aXBsZSxcbiAgICAgIHNlYXJjaGFibGU6IHRoaXMud29ya3NwYWNlU2VhcmNoYWJsZSxcbiAgICAgIG9wdGlvbnM6IHRoaXMud29ya3NwYWNlT3B0aW9ucyxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBzeW5jRm9ybUZyb21JbnB1dCgpOiB2b2lkIHtcbiAgICBjb25zdCBjdHJsID0gdGhpcy53b3Jrc3BhY2VGb3JtLmdldCgnd29ya3NwYWNlJyk7XG4gICAgaWYgKCFjdHJsKSByZXR1cm47XG4gICAgY29uc3QgdmFsID0gdGhpcy53b3Jrc3BhY2VWYWx1ZTtcbiAgICBjb25zdCBub3JtYWxpemVkID0gdGhpcy53b3Jrc3BhY2VNdWx0aXBsZVxuICAgICAgPyBBcnJheS5pc0FycmF5KHZhbCkgPyB2YWwgOiAodmFsICE9IG51bGwgPyBbdmFsXSA6IFtdKVxuICAgICAgOiAoQXJyYXkuaXNBcnJheSh2YWwpID8gKHZhbC5sZW5ndGggPyB2YWxbMF0gOiB1bmRlZmluZWQpIDogdmFsKTtcbiAgICBjdHJsLnNldFZhbHVlKG5vcm1hbGl6ZWQsIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgfVxufVxuXG5cbiIsIjxkaXYgaWQ9XCJjcWEtdWktcm9vdFwiPlxuICA8ZGl2XG4gICAgY2xhc3M9XCJjcWEtdy1mdWxsIGNxYS1mbGV4IGNxYS1pdGVtcy1lbmQgY3FhLWp1c3RpZnktYmV0d2VlbiBjcWEtYmctd2hpdGUgY3FhLXByLTYgY3FhLXBsLTIgbGc6Y3FhLXB4LTYgbGc6Y3FhLXB5LVs2cHhdIGNxYS1weS0yIGNxYS1ib3JkZXItYiBjcWEtYm9yZGVyLWRlZmF1bHQgY3FhLXNoYWRvdy1oZWFkZXJcIlxuICAgIFtuZ0NsYXNzXT1cImhlYWRlckNsYXNzXCI+XG4gICAgPCEtLSBMZWZ0IGJyYW5kaW5nIGJsb2NrIC0tPlxuICAgIDxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1nYXAtMiBjcWEtbWluLXctMFwiPlxuICAgICAgPGRpdiBjbGFzcz1cImNxYS1wci00IGxnOmNxYS1oaWRkZW4gY3FhLWdhcC0yIG1kOmNxYS1mbGV4XCI+XG4gICAgICAgIDxjcWEtYnV0dG9uIHZhcmlhbnQ9XCJmaWxsZWRcIiBpY29uPVwiXCIgW2N1c3RvbUNsYXNzXT1cIichY3FhLXJvdW5kZWQtWzEwcHhdICFjcWEtcC1bN3B4XSAhY3FhLW1pbi13LVs0N3B4XSdcIj5cbiAgICAgICAgICA8c3ZnIHdpZHRoPVwiMzFcIiBoZWlnaHQ9XCIyMlwiIHZpZXdCb3g9XCIwIDAgMzEgMjJcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbiAgICAgICAgICAgIDxwYXRoIGQ9XCJNNS4xNjY3NSAxMUgyNS44MzM0XCIgc3Ryb2tlPVwid2hpdGVcIiBzdHJva2Utd2lkdGg9XCIxLjgzMzMzXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9XCJNNS4xNjY3NSAxNi41SDI1LjgzMzRcIiBzdHJva2U9XCJ3aGl0ZVwiIHN0cm9rZS13aWR0aD1cIjEuODMzMzNcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgPHBhdGggZD1cIk01LjE2Njc1IDUuNUgyNS44MzM0XCIgc3Ryb2tlPVwid2hpdGVcIiBzdHJva2Utd2lkdGg9XCIxLjgzMzMzXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgPC9jcWEtYnV0dG9uPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImNxYS1ib3JkZXItbCBjcWEtYm9yZGVyLXByaW1hcnktc3VyZmFjZSBjcWEtaGlkZGVuIG1kOmNxYS1mbGV4XCI+PC9zcGFuPlxuICAgICAgICA8Y3FhLWJ1dHRvbiB2YXJpYW50PVwiZmlsbGVkXCIgaWNvbj1cIlwiIGNsYXNzPVwiY3FhLWhpZGRlbiBtZDpjcWEtZmxleFwiIFtjdXN0b21DbGFzc109XCInIWNxYS1yb3VuZGVkLVsxMHB4XSAhY3FhLXAtWzdweF0gIWNxYS1taW4tdy1bNDdweF0nXCI+XG4gICAgICAgICAgPHN2ZyB3aWR0aD1cIjIyXCIgaGVpZ2h0PVwiMjJcIiB2aWV3Qm94PVwiMCAwIDIyIDIyXCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gICAgICAgICAgICA8cGF0aCBkPVwiTTQuNTgzMzcgMTFIMTcuNDE2N1wiIHN0cm9rZT1cIndoaXRlXCIgc3Ryb2tlLXdpZHRoPVwiMS4zMzMzM1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxuICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPVwiTTExIDQuNTgzMDFWMTcuNDE2M1wiIHN0cm9rZT1cIndoaXRlXCIgc3Ryb2tlLXdpZHRoPVwiMS4zMzMzM1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxuICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgPC9zdmc+XG4gICAgICAgIDwvY3FhLWJ1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgICAgPCEtLSBPcHRpb25hbCBwcm9qZWN0ZWQgbG9nbyAtLT5cbiAgICAgIDxzdmcgd2lkdGg9XCIzMlwiIGhlaWdodD1cIjMyXCIgdmlld0JveD1cIjAgMCAzMiAzMlwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICAgIHhtbG5zOnhsaW5rPVwiaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlua1wiPlxuICAgICAgICA8cmVjdCB4PVwiMC41XCIgeT1cIjAuNVwiIHdpZHRoPVwiMzFcIiBoZWlnaHQ9XCIzMVwiIHJ4PVwiMTUuNVwiIGZpbGw9XCJ1cmwoI3BhdHRlcm4wXzYzMDNfMjIwMzUpXCIgLz5cbiAgICAgICAgPHJlY3QgeD1cIjAuNVwiIHk9XCIwLjVcIiB3aWR0aD1cIjMxXCIgaGVpZ2h0PVwiMzFcIiByeD1cIjE1LjVcIiBzdHJva2U9XCIjRDhEOUZDXCIgLz5cbiAgICAgICAgPGRlZnM+XG4gICAgICAgICAgPHBhdHRlcm4gaWQ9XCJwYXR0ZXJuMF82MzAzXzIyMDM1XCIgcGF0dGVybkNvbnRlbnRVbml0cz1cIm9iamVjdEJvdW5kaW5nQm94XCIgd2lkdGg9XCIxXCIgaGVpZ2h0PVwiMVwiPlxuICAgICAgICAgICAgPHVzZSB4bGluazpocmVmPVwiI2ltYWdlMF82MzAzXzIyMDM1XCIgdHJhbnNmb3JtPVwic2NhbGUoMC4wMDUpXCIgLz5cbiAgICAgICAgICA8L3BhdHRlcm4+XG4gICAgICAgICAgPGltYWdlIGlkPVwiaW1hZ2UwXzYzMDNfMjIwMzVcIiB3aWR0aD1cIjIwMFwiIGhlaWdodD1cIjIwMFwiIHByZXNlcnZlQXNwZWN0UmF0aW89XCJub25lXCJcbiAgICAgICAgICAgIHhsaW5rOmhyZWY9XCJkYXRhOmltYWdlL2pwZWc7YmFzZTY0LC85ai80QUFRU2taSlJnQUJBUUFBQVFBQkFBRC8yd0NFQUFrR0J3OFNFQk1RRUJBU0VCQVFFQllSRlJVWEZSQVJFUkFTR1JrV0d4WVhHQlVZSGlnc0dCb21HeFVZSVRFaEpTa3JMam91R1NBek9ETXNOeWd0TGpjQkNnb0tEZzBPR3hBUUd5NGRJQ1VyTnkwckt5c3JNRGN0TGlzdkxTMHRLeTB0TFRjdUxTMHRNRGN0TmkwdExTc3RMUzByTFMwckxURXRMUzB0TFMwdExmL0FBQkVJQU1nQXlBTUJJZ0FDRVFFREVRSC94QUFjQUFFQUFnSURBUUFBQUFBQUFBQUFBQUFBQlFZQ0J3RURCQWoveEFCQkVBQUJBd0lDQXdzS0JRVUFBd0VBQUFBQkFBSURCQkVGSVFZU1FRY2lNVkZTWVhHQmthSFJFeFFXSXpKVWtxS3h3UmRDWW5LeVU0TEM0ZkFrTlBFVi84UUFHd0VCQUFJREFRRUFBQUFBQUFBQUFBQUFBQUlEQVFRRkJnZi94QUF1RVFBQ0FRSUVBd1lHQXdBQUFBQUFBQUFBQVFJREVRUVNJVkVUTVVFRlVtR0JrYkVVSWpKQ2NjRVZvZEgvMmdBTUF3RUFBaEVERVFBL0FONG9pSUFpSWdDSWlBSWlJQWlJZ0NJaUFJaUlBaUlnQ0lpQUlpSUFpSWdDSWlBSWlJQWlJZ0NJaUFJaUlBaUlnQ0lpQUlpSUFpSWdDSWlBSWlJQWlJZ0NJaUFJaUlBaUlnQ0lpQUlpSUFpSWdDSWlBSWlJQWlJZ0NJaUFJaUlBaUlnQ0lpQUlpSUFpSWdDSWlBODFYSzVqZGNEV0RjM0RhVzhZNXh3cmt5RnpOZUlnM0YybjhydVpkNnIvQUpielNvMURsVHptN2VLTiszcXo3MUtLdVJic1MxSlZpVmhMYnRJSmE0SDJtT0hDQ0YxVU5mclBkQyt6Wm83YXd6czVwNEh0dnNQZHdLTXh3dXBwUlZ4aTdIRU1tYnloK1YzU3VOSTRUSkV5dHBUNjZBYTdDUHp4bjJtbmp5MkthZ3ZKKzVqTXlTOC8xSnhCTGw1UzVoZHNmYk56RHhPSGVPdGNZamlCZ2MxOG4vcnZJYTUzOUYvNVNmMGs1WDJHM0dvOXpvc1NvcnNPby9oQnoxb1ptOEdmL1pGZE9qT0xDc2hrcGFwdnI0d1k1bUcyL0dZMWdtVHErbk1aaUQwOGJpZE5lb3BxcVYxT1R2bTcwbUhydG0xVWYwMHhQM3VUNVBCYkkwYnIzUXp2d21yT3ZxajFEbldQbFlpQ2RVOVgzQ29XbnVpNW9wdGFNRTA4cEpadzd3N1dIN0xjb09OOGtrdkI3bE03ODBlVDAweFAzdVQ1UEJQVFRFL2U1UGs4RkFJdHZoUTJSVm5lNVA4QXBwaWZ2Y255ZUNlbW1KKzl5Zko0S0FST0ZEWkRPOXl6MEdubUl4eU5lNll5dEJ6WTROMVhEYUxnWkhuVzRjQXhxR3JoRTBKeU9UbS9tWTdhQ3ZuZFRlaWVrTWxGT0pHM01ic3BHY3R2SHpFY0sxNitHVWxlSzFKMDZqVDFQb0JWVFRLbXJtdE05Sk84Qm91Nk1XT1hHMjQ3bFk2S3FaTEcyV04yc3g3UTVwNHd1OWNxVWJxeDBLRlhoVFU3SitETkxlbGVJZTh2K1h3VDByeEQzbC95K0NtOVA5R3ZKT05UQzMxVHp2d09CanVQb0pWS1hPbTV3ZG16MnVGamhjUlRVNHdYb2lhOUs4UTk1ZjhBTDRKNlY0aDd5LzVmQlFxS0dlVzVzZkNVTzR2UkUxNlY0aDd5L3dDWHdXVWVsMWVDRDV3NDJQQVEwZzlPU2cwV2M4dHc4SFE3aTlFYm8wWDBoanE0OVliMlZ2dHM0dWNjWVU0dEQ0VmlNbFBLMmFJMmMwOVRodEJXNk1FeFNPcGhiTEh3RVpqYTEyMEZidEdyblZuelBKOXFkblBEU3pSK2wvMTRFaWlJcnprbkNqc2VvZkxRT2FQYUcrYjBqL3JLU1hDeW5aM01OWFZpdVlCVk5xYWQxUExtV3QxZWN0MkhwQzhPaVZhNktWOUZLZUJ4MVAzYlIwRVpycG1kNXJYRWpKaGRmK3gzRDMvUllhYlFtS29qcUdaRjR2ZjliYmZheTIxRk41ZWoxOHltN3RmWTgwVTMvd0NiaVRvemxUVGtIbUFQQWY3WFhIUXNkTm8zMFZiRmlFSXlrTm5qWVNBTGcvdWIvRmVyVHlKczlIRFZ0SHMydnpOZFlFZFRnRWE3ejdCM3RPY3NEZXZXWm1PMXVYV1ZKZEp2OE14dXZOR0c2RFRDZWxoeEduTytoczRPSERxRWp2YTc3cVVvcElzV3c0dGZZT2NOVjNISEszZ2NPNDlhaE56ZXNFMVBOUXk1dDFTV2o5RHJodzZqbi9jb3ZjN3JYVXRlK2trT1VyakdlTHlqTDJQV0xqckN3NE5SY2VzZFYrREtscW51VVN1cEh3eVBpa0ZueHVMWERuSDFDNkZzVGRld2dObGpxMmpLVWFqL0FON1J2VDF0L2l0ZHJlcFR6d1VpaWNiT3dSRVZoRUlpSURZdTVQcENXeUdpa085a3U2TDlMOHk1dlFSbjFjNjJzdm1tbW5kRzlzakRaN0hCd1BFUXZvWEI4V2luZ2puRG1qeWpBNjF4a2RvN2JybVl1bGFXWmRUWm95dXJNOWRYVE1rWTZONHUxNExTT01MU1dQWVc2bXFId3V6MVRkcDVUVHdGYnY4QU9HY3R2YUZTZDB1aFpKQzJvWVdsMFIxWFdJdVdPc080MjdWek1SVGNvMzJPOTJOaStGWHlONlM5K2hyVkVSYzg5bUVSRUFWbjBFeHcwOVFHUE5vWmlHdTRtdS9LNzdLc0xsU2hKeGQwVTRpaEd0VGNKZFQ2RHVpZ3REY1VOUlNNYzQzZTBhanVrYmVzV1BXdVYxSXU2dWo1L1ZwdW5Od2x6Uk9vaUxKV1ZEVGVIZlJ2NHdXOWxyZlZZWTU2M0RZNWRzWkYrMHNQZlplN1RadnFtSGlrK29LOEVHK3d1WWNrbjZ0SzI0UDVZdlpsRXZxYU9uQmZYWWJVd0hQVURpUDVOK1lLTzNNcXEwMHNKNEpJOWEzTzMvVHU1U0dnSnVaMmJITWIzYXcrNnJtZ2o5WEVJaHg2N2ZrZDRLNXJTb3ZNaGZXTE9qUm1UelhGV3N2Wm9tZkNlY0c0SGZaWWFkdE5QaXJwV1pHOGM3ZW13djN0S3gwa1BrOFZrSS9MVU5kL0VyMzdyYkxWY1I0NFA4bkthMW5GN29qOXI4R1hMVHVtYlVZWks1dWRtTm5iMVdQOGI5cTBXdCtZUjZ6Q21BNTY5SnEvSlphRFdNSnBtanN5VmJvd2lJdHdwQ0lpQUlpSUFzbzNXSVBFVmlpaktLYXN5ZE9iakpTWFJrdWk0ak9RNkF1VjQyU3MyajZwVGxtZ251Z2lJb2t3aUlnTDV1VjFscEpvU2NuTkR4MGpJL1VkaUtLM09wQ0s5ZzVUSGp1djlseXVqaDNlQjR2dHVDaGltOTFmOUczVVJGY2Nrcldtei9WUmpqZVQyQStLOEVPOXd1WThvLzVOQ3owMm12Skd6a3RKN2Y4QTRzZElmVTRmRkR0ZVJjZHJqM2tMYmd2bGl0MlVTK3BzNk5Bc2pPODhEV0QvQUNQMlZjMERZWFloRWVJUGNmZ2Q5eXJKaGZxTUxxSmprWkFRUDREdkpVZnVaMDNySnAzWk5qWUczNmJrOXpWYzVhVkg1RUV0WW9yMmtJOHBpc2dHZXRVdFozdEgyWHYzVzVMMWNiZVRBTzl6bDU5RW9qVTRvMlFqTHlqNTNjd0Z5UG1JWFZwbVRWWXM2Sm1lL1pBM3NBUHpYVmkwbWxzakgydnhac2pDL1ZZVXduTFVvOWI1THJRYTNsdWdWYmFmRFpHdHlMMnRnWU9td1B5Z3JScWpoTlZLVzdNMXVpQ0lpM0NrSWlJQWlLVW90SGEyWmdraXA1SkkzWHM0REkySkgxQ3c1SmN4YS9JaTBVMzZJNGo3cEw4S3duMFpybzJsOGxOSXlOdnRPSXNBRkNWV0NUZHl5blRsS1NpbHpaakdNaDBMbEVYanBPOG16NnBUamxpbHNnaUlzRWdpSWdMUnVjeDNyMm5rc2VlNjMzUlMrNVhSNzZhY2pJQVJ0N3k3N0l1amhsYUI0dnRxYW5pbjRLMzdOakxoRkZhU1Yza29UYjI1TjQzN25zVjhWZDJPUTNaWEs5R3p6dXVKNFdCMXp4YWpiZlg3cnEwdmtkUFZzcDJabGxtLzNPelBkWlRlRzA3YU9sZExKN1pHczcvRnYvY2E4ZWlWQWJ2clp2YWZjdHZzR2VzNWJTa2s4MjJpS2JQbHVSMjZETzJHbmhvMmJjeisxdkIyazl5eXJHZVlZT1duS2FjV1BIclA0UjFNK2k2OElwamlGZStyZVA4QXg0WEFNQjRIVzlrRCtSNlF1clNWcnNSeEJsSEdmVTArY2pod0FtMnQxNUJ2U3BxMmtIMDFaamQrU010QUtWdExSelY4bzlwcExmMk52OVQ5RkY3bWVIT25xNUsyUVhFWkpCNDVYMytnSjdRcGpkQnFDV3dZWFN0MzhwYmRvMk1iYlZIUmNYL3RVbldUdzRSaHdhTE9lQlpvMnl6SGhQUmZQb0N3NXRwdGM1ZXhsSmFiSXB1NjFqSWtuWlNzTzlwODM4OGpnUG8zNmxVRmRsUk01N25QZVM1ejNGeE8wa3JyVzlTaGtpb2xFbmQzQ0lpc0loRVJBZWlncEh6U3NoakYzeU9EUU9jL1pmUk9GMExZSVk0V2V6R3dOSFBiYjJxZ2JsT2paYVBQcFc1dUJiQ09KdkE1L1h3ZHEyU3VYaTZ1YVdWZERhb3hzcmhVUGRQeFd6R1VyVG04NjcrWm85a2R2MFZ4eFN2WkJFNmFRMmF3WDV6eEFjOTFwSEZhOTlSTStaL3RQZGUzRU5nN0Z6TVJVeXh0dWVnN0Z3YnExZUkrVWZjOGlJaTBEMkFSRVFCY2dYeUdaNEZ3cmp1ZVlDWlpmT0pCNnFJNzNpZkovcjZxVUl1VHNhK0t4RWFGSjFKRjcwVXd2emFsampQdDIxbmZ1T1o3T0RxUlRDTHFKV1ZrZUFxVGRTYm0rYk9IRUFYUEFGQzBsT1o1dk9YajFiTW9XbmIrc3FWcUlkY2FwOW44dzVYTjBMS1ZoTGJOT3JzdnhkQ21uYmtWdFhJVEVJVFZ6Q0xncDRYWGtQOEFVZnlSMExIU0l2bDFhR24zcnBCNnh3NElZZkU4QUhTcHVHRnJHYWpBQUFNaG4zckdrcEdzdWVGN3pyUGNlRjUrdzJXVWxPM2x5STVTSnIzQ2pwbXdVekx6UDlYQzNLN243WEcrd2NKSzY4TG9ZY09wSHlTSFdmN2NyL3pTU0hJQWNlWnNPbFRFVklQS0dWMitrSTFRZGpHY2x2MUovd0JMaWFqRDVHUGZtMk0zWTNacjhvOFpHeE0vVDFNNVN1WVBSQ25FMkoxNURaNVJyRytma0djRFdEak5yRHVXcnRMZElwSzJjeU91Mk51OWpaeUc3VHprbGJBMHkwY3hPdWtzSHhNcDJIZU0xblpubE9Oc3o5Rlcvd0FMNi9sdy9FN3dXNVFsVFh6U2V2c1VUVW5vbG9VZEZlUHd2citYRDhUdkJQd3ZyK1hEOFR2QmJQeEZQdkZmRGxzVWRGZVB3dnIrWEQ4VHZCUHd2citYRDhUdkJQaUtmZUhEbHNVZFd2UVRSTjFaTHJ5QWltak8rUDhBVVBJQitxbHNPM0xxa3lOOHZKRzJLKysxQ1M0amlGeDNyYU5CUnh3eHRpaWFHUnNGZ0JzVkZmRkpLMEdXUXBPOTJkMGNZYUExb0FhQllBWkFBSkxJR2d1Y1FBQmNrOEFDektxdWwyRjExVjZxRnpHUWJidU90SWVldzRPWmN1VGFWMXFiMUNuR2MxR1R5cmRsTDAwMGtOVkpxUm0wRVozdjZ6eWo5bFdWYi93OXJlVkY4VHZCUHc5cmVWRjhUdkJhRXFkU1R1MGV4b1l6QlVLYWhDYXNpb0lyZitIdGJ5b3ZpZDRKK0h0YnlvdmlkNEtQQm5zWGZ5ZUY3NktnaXQvNGUxdktpK0ozZ3NvdHp5ckpHcytNTnZtUVhFZ2RGbG5nejJNUHRQQzk5RUpvNWdjbFhLR055WU0zdTJOYjRyY3RCUnh3eHRpamJxc1lMQUxwd2JDb3FhSVJSQ3dIQ2RyanhrcjNyY3BVc2k4VHkzYU9QbGlwNmFSWEwvVGxFUlhITkNJaUFJaUlBaUlnQ0lpQUlpSUFpSWdDSWlBSWlJQWlJZ0NJaUFJaUlBaUlnQ0lpQUlpSUFpSWdDSWlBSWlJQWlJZ0NJaUFJaUlBaUlnQ0lpQUlpSUFpSWdDSWlBSWlJQWlJZ0NJaUFJaUlBaUlnQ0lpQUlpSUFpSWdDSWlBSWlJQWlJZ0NJaUFJaUlBaUlnQ0lpQUlpSUFpSWdDSWlBSWlJQWlJZ0NJaUFJaUlBaUlnQ0lpQUlpSUFpSWdDSWlBLzlrPVwiIC8+XG4gICAgICAgIDwvZGVmcz5cbiAgICAgIDwvc3ZnPlxuXG4gICAgICA8IS0tIFRpdGxlICsgb3B0aW9uYWwgYmFkZ2UgLS0+XG4gICAgICA8ZGl2IGNsYXNzPVwiY3FhLWl0ZW1zLWVuZCBjcWEtZ2FwLTMgY3FhLW1pbi13LTAgY3FhLWhpZGRlbiBtZDpjcWEtZmxleFwiPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJjcWEtdHJ1bmNhdGUgY3FhLXRleHQtWyMyMjIyM0JdIGNxYS1mb250LWV4dHJhYm9sZCBjcWEtdGV4dC1bMzJweF0gY3FhLWZvbnQtbnVuaXRvLXNhbnMgY3FhLWxlYWRpbmctWzFdXCI+XG4gICAgICAgICAge3sgdGl0bGUgfX08L2Rpdj5cbiAgICAgICAgPHNwYW4gKm5nSWY9XCJiYWRnZVRleHRcIlxuICAgICAgICAgIGNsYXNzPVwiY3FhLXB4LTIgY3FhLXB5LVsycHhdIGNxYS1yb3VuZGVkLWxnIGNxYS10ZXh0LVsxMnB4XSBjcWEtZm9udC1tZWRpdW0gY3FhLWxlYWRpbmctNCBjcWEtd2hpdGVzcGFjZS1ub3dyYXAgY3FhLXRleHQtWyMwMDdBNTVdIGNxYS1iZy1bI0QwRkFFNV0gY3FhLWJvcmRlciBjcWEtYm9yZGVyLVsjQTRGNENGXVwiXG4gICAgICAgICAgW25nQ2xhc3NdPVwiYmFkZ2VDbGFzc1wiPnt7IGJhZGdlVGV4dCB9fTwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPCEtLSBSaWdodCBjb250cm9scy9hY3Rpb25zIC0tPlxuICAgIDxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1nYXAtMyBjcWEtZmxleC0xXCI+XG4gICAgICA8IS0tIE9wdGlvbmFsIHdvcmtzcGFjZSBzZWxlY3QgLS0+XG4gICAgICA8ZGl2ICpuZ0lmPVwid29ya3NwYWNlT3B0aW9ucz8ubGVuZ3RoXCIgY2xhc3M9XCJjcWEtdy1mdWxsIGNxYS1tYXgtdy1bMTk5cHhdIGNxYS1tbC1hdXRvIGhlYWRlci1kcm9wZG93blwiPlxuICAgICAgICA8Y3FhLWR5bmFtaWMtc2VsZWN0IFtmb3JtXT1cIndvcmtzcGFjZUZvcm1cIiBbY29uZmlnXT1cIndvcmtzcGFjZUNvbmZpZ1wiPlxuICAgICAgICA8L2NxYS1keW5hbWljLXNlbGVjdD5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+Il19
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, Input } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
import * as i1 from "@angular/common";
|
|
4
|
+
export class FailedTestCasesCardComponent {
|
|
5
|
+
constructor() {
|
|
6
|
+
/** E.g., "C-62: Upload Content" */
|
|
7
|
+
this.title = 'Failed Test Case';
|
|
8
|
+
/** Number of failures to display in the pill */
|
|
9
|
+
this.failures = 0;
|
|
10
|
+
/** Pill label (e.g., "failures") */
|
|
11
|
+
this.failuresLabel = 'failures';
|
|
12
|
+
/** Optional custom class for the pill background */
|
|
13
|
+
this.pillClass = 'cqa-bg-[#F15F5F] cqa-text-[#FAFAFA]';
|
|
14
|
+
/** Root cause label (left part, emphasized) */
|
|
15
|
+
this.rootCauseLabel = 'Root cause';
|
|
16
|
+
/** If false, hide the root cause row */
|
|
17
|
+
this.showRootCause = true;
|
|
18
|
+
/** Label for timestamp */
|
|
19
|
+
this.lastFailedLabel = 'Last failed';
|
|
20
|
+
/** Optional extra class for the outer card */
|
|
21
|
+
this.cardClass = '';
|
|
22
|
+
/** Left border accent class */
|
|
23
|
+
this.leftAccentClass = 'cqa-border-l-[4px] cqa-border-[#EF4444]';
|
|
24
|
+
}
|
|
25
|
+
get rootCauseDisplay() {
|
|
26
|
+
return this.rootCause && this.rootCause.trim().length
|
|
27
|
+
? this.rootCause
|
|
28
|
+
: 'No root cause available';
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
FailedTestCasesCardComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: FailedTestCasesCardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
32
|
+
FailedTestCasesCardComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: FailedTestCasesCardComponent, selector: "cqa-failed-test-cases-card", inputs: { title: "title", failures: "failures", failuresLabel: "failuresLabel", pillClass: "pillClass", rootCause: "rootCause", rootCauseLabel: "rootCauseLabel", showRootCause: "showRootCause", lastFailed: "lastFailed", lastFailedLabel: "lastFailedLabel", cardClass: "cardClass", leftAccentClass: "leftAccentClass" }, ngImport: i0, template: "<div id=\"cqa-ui-root\">\n <div class=\"cqa-w-full cqa-bg-[#FEF2F240] cqa-rounded-[10px] cqa-p-[10px] cqa-pl-[20px]\"\n [ngClass]=\"[leftAccentClass, cardClass]\">\n <div class=\"cqa-flex cqa-items-start cqa-justify-between cqa-gap-2 cqa-flex-wrap\">\n <!-- Title -->\n <h3 class=\"cqa-text-[14px] cqa-leading-[17px] cqa-font-semibold cqa-text-[#1A1A1A]\">{{ title }}</h3>\n\n <!-- Failures pill -->\n <span class=\"cqa-px-[11px] cqa-py-[3px] cqa-rounded-full cqa-text-[12px] cqa-leading-[16px] cqa-font-medium cqa-tracking-[0.3px]\"\n [ngClass]=\"pillClass\">\n {{ failures | number }} {{ failuresLabel }}\n </span>\n </div>\n\n <div class=\"cqa-flex cqa-items-center cqa-justify-between cqa-flex-wrap cqa-mt-2\">\n <!-- Root cause -->\n <div *ngIf=\"showRootCause\" class=\"md:cqa-px-[11px] cqa-py-[3px] cqa-text-[12px] cqa-leading-[15px] cqa-text-[#F15F5F]\">\n <span class=\"cqa-font-semibold\">{{ rootCauseLabel }}: </span>{{ rootCauseDisplay }}\n </div>\n\n <!-- Timestamp -->\n <div *ngIf=\"lastFailed\"\n class=\"cqa-py-[3px] cqa-flex cqa-items-center cqa-gap-1 cqa-text-[10px] cqa-leading-[15px] cqa-font-medium cqa-text-dialog-muted\">\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M6 11C8.76142 11 11 8.76142 11 6C11 3.23858 8.76142 1 6 1C3.23858 1 1 3.23858 1 6C1 8.76142 3.23858 11 6 11Z\" stroke=\"#6B7280\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M6 3V6L8 7\" stroke=\"#6B7280\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>\n <span>{{ lastFailedLabel }}: {{ lastFailed }}</span>\n </div>\n </div>\n </div>\n</div>", directives: [{ type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], pipes: { "number": i1.DecimalPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
33
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: FailedTestCasesCardComponent, decorators: [{
|
|
34
|
+
type: Component,
|
|
35
|
+
args: [{ selector: 'cqa-failed-test-cases-card', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div id=\"cqa-ui-root\">\n <div class=\"cqa-w-full cqa-bg-[#FEF2F240] cqa-rounded-[10px] cqa-p-[10px] cqa-pl-[20px]\"\n [ngClass]=\"[leftAccentClass, cardClass]\">\n <div class=\"cqa-flex cqa-items-start cqa-justify-between cqa-gap-2 cqa-flex-wrap\">\n <!-- Title -->\n <h3 class=\"cqa-text-[14px] cqa-leading-[17px] cqa-font-semibold cqa-text-[#1A1A1A]\">{{ title }}</h3>\n\n <!-- Failures pill -->\n <span class=\"cqa-px-[11px] cqa-py-[3px] cqa-rounded-full cqa-text-[12px] cqa-leading-[16px] cqa-font-medium cqa-tracking-[0.3px]\"\n [ngClass]=\"pillClass\">\n {{ failures | number }} {{ failuresLabel }}\n </span>\n </div>\n\n <div class=\"cqa-flex cqa-items-center cqa-justify-between cqa-flex-wrap cqa-mt-2\">\n <!-- Root cause -->\n <div *ngIf=\"showRootCause\" class=\"md:cqa-px-[11px] cqa-py-[3px] cqa-text-[12px] cqa-leading-[15px] cqa-text-[#F15F5F]\">\n <span class=\"cqa-font-semibold\">{{ rootCauseLabel }}: </span>{{ rootCauseDisplay }}\n </div>\n\n <!-- Timestamp -->\n <div *ngIf=\"lastFailed\"\n class=\"cqa-py-[3px] cqa-flex cqa-items-center cqa-gap-1 cqa-text-[10px] cqa-leading-[15px] cqa-font-medium cqa-text-dialog-muted\">\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M6 11C8.76142 11 11 8.76142 11 6C11 3.23858 8.76142 1 6 1C3.23858 1 1 3.23858 1 6C1 8.76142 3.23858 11 6 11Z\" stroke=\"#6B7280\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M6 3V6L8 7\" stroke=\"#6B7280\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>\n <span>{{ lastFailedLabel }}: {{ lastFailed }}</span>\n </div>\n </div>\n </div>\n</div>", styles: [] }]
|
|
36
|
+
}], propDecorators: { title: [{
|
|
37
|
+
type: Input
|
|
38
|
+
}], failures: [{
|
|
39
|
+
type: Input
|
|
40
|
+
}], failuresLabel: [{
|
|
41
|
+
type: Input
|
|
42
|
+
}], pillClass: [{
|
|
43
|
+
type: Input
|
|
44
|
+
}], rootCause: [{
|
|
45
|
+
type: Input
|
|
46
|
+
}], rootCauseLabel: [{
|
|
47
|
+
type: Input
|
|
48
|
+
}], showRootCause: [{
|
|
49
|
+
type: Input
|
|
50
|
+
}], lastFailed: [{
|
|
51
|
+
type: Input
|
|
52
|
+
}], lastFailedLabel: [{
|
|
53
|
+
type: Input
|
|
54
|
+
}], cardClass: [{
|
|
55
|
+
type: Input
|
|
56
|
+
}], leftAccentClass: [{
|
|
57
|
+
type: Input
|
|
58
|
+
}] } });
|
|
59
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFpbGVkLXRlc3QtY2FzZXMtY2FyZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2Rhc2hib2FyZHMvZmFpbGVkLXRlc3QtY2FzZXMtY2FyZC9mYWlsZWQtdGVzdC1jYXNlcy1jYXJkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvZGFzaGJvYXJkcy9mYWlsZWQtdGVzdC1jYXNlcy1jYXJkL2ZhaWxlZC10ZXN0LWNhc2VzLWNhcmQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7OztBQVExRSxNQUFNLE9BQU8sNEJBQTRCO0lBTnpDO1FBT0UsbUNBQW1DO1FBQzFCLFVBQUssR0FBVyxrQkFBa0IsQ0FBQztRQUM1QyxnREFBZ0Q7UUFDdkMsYUFBUSxHQUFXLENBQUMsQ0FBQztRQUM5QixvQ0FBb0M7UUFDM0Isa0JBQWEsR0FBVyxVQUFVLENBQUM7UUFDNUMsb0RBQW9EO1FBQzNDLGNBQVMsR0FBVyxxQ0FBcUMsQ0FBQztRQUduRSwrQ0FBK0M7UUFDdEMsbUJBQWMsR0FBVyxZQUFZLENBQUM7UUFDL0Msd0NBQXdDO1FBQy9CLGtCQUFhLEdBQVksSUFBSSxDQUFDO1FBR3ZDLDBCQUEwQjtRQUNqQixvQkFBZSxHQUFXLGFBQWEsQ0FBQztRQUNqRCw4Q0FBOEM7UUFDckMsY0FBUyxHQUFXLEVBQUUsQ0FBQztRQUNoQywrQkFBK0I7UUFDdEIsb0JBQWUsR0FBVyx5Q0FBeUMsQ0FBQztLQU85RTtJQUxDLElBQUksZ0JBQWdCO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDLE1BQU07WUFDbkQsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTO1lBQ2hCLENBQUMsQ0FBQyx5QkFBeUIsQ0FBQztJQUNoQyxDQUFDOzt5SEE1QlUsNEJBQTRCOzZHQUE1Qiw0QkFBNEIsZ1lDUnpDLHV0REE0Qk07MkZEcEJPLDRCQUE0QjtrQkFOeEMsU0FBUzsrQkFDRSw0QkFBNEIsbUJBR3JCLHVCQUF1QixDQUFDLE1BQU07OEJBSXRDLEtBQUs7c0JBQWIsS0FBSztnQkFFRyxRQUFRO3NCQUFoQixLQUFLO2dCQUVHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBRUcsU0FBUztzQkFBakIsS0FBSztnQkFFRyxTQUFTO3NCQUFqQixLQUFLO2dCQUVHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBRUcsYUFBYTtzQkFBckIsS0FBSztnQkFFRyxVQUFVO3NCQUFsQixLQUFLO2dCQUVHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBRUcsU0FBUztzQkFBakIsS0FBSztnQkFFRyxlQUFlO3NCQUF2QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY3FhLWZhaWxlZC10ZXN0LWNhc2VzLWNhcmQnLFxuICB0ZW1wbGF0ZVVybDogJy4vZmFpbGVkLXRlc3QtY2FzZXMtY2FyZC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogW10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBGYWlsZWRUZXN0Q2FzZXNDYXJkQ29tcG9uZW50IHtcbiAgLyoqIEUuZy4sIFwiQy02MjogVXBsb2FkIENvbnRlbnRcIiAqL1xuICBASW5wdXQoKSB0aXRsZTogc3RyaW5nID0gJ0ZhaWxlZCBUZXN0IENhc2UnO1xuICAvKiogTnVtYmVyIG9mIGZhaWx1cmVzIHRvIGRpc3BsYXkgaW4gdGhlIHBpbGwgKi9cbiAgQElucHV0KCkgZmFpbHVyZXM6IG51bWJlciA9IDA7XG4gIC8qKiBQaWxsIGxhYmVsIChlLmcuLCBcImZhaWx1cmVzXCIpICovXG4gIEBJbnB1dCgpIGZhaWx1cmVzTGFiZWw6IHN0cmluZyA9ICdmYWlsdXJlcyc7XG4gIC8qKiBPcHRpb25hbCBjdXN0b20gY2xhc3MgZm9yIHRoZSBwaWxsIGJhY2tncm91bmQgKi9cbiAgQElucHV0KCkgcGlsbENsYXNzOiBzdHJpbmcgPSAnY3FhLWJnLVsjRjE1RjVGXSBjcWEtdGV4dC1bI0ZBRkFGQV0nO1xuICAvKiogUm9vdCBjYXVzZSB0ZXh0OyB3aGVuIGVtcHR5LCBzaG93IGEgZGVmYXVsdCBtZXNzYWdlICovXG4gIEBJbnB1dCgpIHJvb3RDYXVzZT86IHN0cmluZztcbiAgLyoqIFJvb3QgY2F1c2UgbGFiZWwgKGxlZnQgcGFydCwgZW1waGFzaXplZCkgKi9cbiAgQElucHV0KCkgcm9vdENhdXNlTGFiZWw6IHN0cmluZyA9ICdSb290IGNhdXNlJztcbiAgLyoqIElmIGZhbHNlLCBoaWRlIHRoZSByb290IGNhdXNlIHJvdyAqL1xuICBASW5wdXQoKSBzaG93Um9vdENhdXNlOiBib29sZWFuID0gdHJ1ZTtcbiAgLyoqIExhc3QgZmFpbGVkIHRleHQgKGUuZy4sIFwiMiBob3VycyBhZ29cIikgKi9cbiAgQElucHV0KCkgbGFzdEZhaWxlZD86IHN0cmluZztcbiAgLyoqIExhYmVsIGZvciB0aW1lc3RhbXAgKi9cbiAgQElucHV0KCkgbGFzdEZhaWxlZExhYmVsOiBzdHJpbmcgPSAnTGFzdCBmYWlsZWQnO1xuICAvKiogT3B0aW9uYWwgZXh0cmEgY2xhc3MgZm9yIHRoZSBvdXRlciBjYXJkICovXG4gIEBJbnB1dCgpIGNhcmRDbGFzczogc3RyaW5nID0gJyc7XG4gIC8qKiBMZWZ0IGJvcmRlciBhY2NlbnQgY2xhc3MgKi9cbiAgQElucHV0KCkgbGVmdEFjY2VudENsYXNzOiBzdHJpbmcgPSAnY3FhLWJvcmRlci1sLVs0cHhdIGNxYS1ib3JkZXItWyNFRjQ0NDRdJztcblxuICBnZXQgcm9vdENhdXNlRGlzcGxheSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnJvb3RDYXVzZSAmJiB0aGlzLnJvb3RDYXVzZS50cmltKCkubGVuZ3RoXG4gICAgICA/IHRoaXMucm9vdENhdXNlXG4gICAgICA6ICdObyByb290IGNhdXNlIGF2YWlsYWJsZSc7XG4gIH1cbn1cblxuXG4iLCI8ZGl2IGlkPVwiY3FhLXVpLXJvb3RcIj5cbiAgPGRpdiBjbGFzcz1cImNxYS13LWZ1bGwgY3FhLWJnLVsjRkVGMkYyNDBdIGNxYS1yb3VuZGVkLVsxMHB4XSBjcWEtcC1bMTBweF0gY3FhLXBsLVsyMHB4XVwiXG4gICAgW25nQ2xhc3NdPVwiW2xlZnRBY2NlbnRDbGFzcywgY2FyZENsYXNzXVwiPlxuICAgIDxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtaXRlbXMtc3RhcnQgY3FhLWp1c3RpZnktYmV0d2VlbiBjcWEtZ2FwLTIgY3FhLWZsZXgtd3JhcFwiPlxuICAgICAgPCEtLSBUaXRsZSAtLT5cbiAgICAgIDxoMyBjbGFzcz1cImNxYS10ZXh0LVsxNHB4XSBjcWEtbGVhZGluZy1bMTdweF0gY3FhLWZvbnQtc2VtaWJvbGQgY3FhLXRleHQtWyMxQTFBMUFdXCI+e3sgdGl0bGUgfX08L2gzPlxuXG4gICAgICA8IS0tIEZhaWx1cmVzIHBpbGwgLS0+XG4gICAgICA8c3BhbiBjbGFzcz1cImNxYS1weC1bMTFweF0gY3FhLXB5LVszcHhdIGNxYS1yb3VuZGVkLWZ1bGwgY3FhLXRleHQtWzEycHhdIGNxYS1sZWFkaW5nLVsxNnB4XSBjcWEtZm9udC1tZWRpdW0gY3FhLXRyYWNraW5nLVswLjNweF1cIlxuICAgICAgICBbbmdDbGFzc109XCJwaWxsQ2xhc3NcIj5cbiAgICAgICAge3sgZmFpbHVyZXMgfCBudW1iZXIgfX0ge3sgZmFpbHVyZXNMYWJlbCB9fVxuICAgICAgPC9zcGFuPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cImNxYS1mbGV4IGNxYS1pdGVtcy1jZW50ZXIgY3FhLWp1c3RpZnktYmV0d2VlbiBjcWEtZmxleC13cmFwIGNxYS1tdC0yXCI+XG4gICAgICA8IS0tIFJvb3QgY2F1c2UgLS0+XG4gICAgICA8ZGl2ICpuZ0lmPVwic2hvd1Jvb3RDYXVzZVwiIGNsYXNzPVwibWQ6Y3FhLXB4LVsxMXB4XSBjcWEtcHktWzNweF0gY3FhLXRleHQtWzEycHhdIGNxYS1sZWFkaW5nLVsxNXB4XSBjcWEtdGV4dC1bI0YxNUY1Rl1cIj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJjcWEtZm9udC1zZW1pYm9sZFwiPnt7IHJvb3RDYXVzZUxhYmVsIH19OiA8L3NwYW4+e3sgcm9vdENhdXNlRGlzcGxheSB9fVxuICAgICAgPC9kaXY+XG5cbiAgICAgIDwhLS0gVGltZXN0YW1wIC0tPlxuICAgICAgPGRpdiAqbmdJZj1cImxhc3RGYWlsZWRcIlxuICAgICAgICBjbGFzcz1cImNxYS1weS1bM3B4XSBjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1nYXAtMSBjcWEtdGV4dC1bMTBweF0gY3FhLWxlYWRpbmctWzE1cHhdIGNxYS1mb250LW1lZGl1bSBjcWEtdGV4dC1kaWFsb2ctbXV0ZWRcIj5cbiAgICAgICAgPHN2ZyB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTJcIiB2aWV3Qm94PVwiMCAwIDEyIDEyXCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+PHBhdGggZD1cIk02IDExQzguNzYxNDIgMTEgMTEgOC43NjE0MiAxMSA2QzExIDMuMjM4NTggOC43NjE0MiAxIDYgMUMzLjIzODU4IDEgMSAzLjIzODU4IDEgNkMxIDguNzYxNDIgMy4yMzg1OCAxMSA2IDExWlwiIHN0cm9rZT1cIiM2QjcyODBcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+PHBhdGggZD1cIk02IDNWNkw4IDdcIiBzdHJva2U9XCIjNkI3MjgwXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPjwvc3ZnPlxuICAgICAgICA8c3Bhbj57eyBsYXN0RmFpbGVkTGFiZWwgfX06IHt7IGxhc3RGYWlsZWQgfX08L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj4iXX0=
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { Component, Input } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
import * as i1 from "@angular/common";
|
|
4
|
+
export class HeatErrorMapCellComponent {
|
|
5
|
+
constructor() {
|
|
6
|
+
this.type = 'smoke';
|
|
7
|
+
this.cases = 0;
|
|
8
|
+
this.defects = 0;
|
|
9
|
+
this.progress = 0; // Progress value from 0 to 100
|
|
10
|
+
}
|
|
11
|
+
get backgroundColorStyle() {
|
|
12
|
+
switch (this.type) {
|
|
13
|
+
case 'smoke':
|
|
14
|
+
return { 'background-color': '#FDBA74' }; // orange-300
|
|
15
|
+
case 'sanity':
|
|
16
|
+
return { 'background-color': '#FCD34D' }; // amber-300
|
|
17
|
+
case 'regression':
|
|
18
|
+
return { 'background-color': '#A7F3D0' }; // emerald-200
|
|
19
|
+
case 'revisit':
|
|
20
|
+
return { 'background-color': '#F4F4F5' }; // zinc-100
|
|
21
|
+
default:
|
|
22
|
+
return { 'background-color': '#FDBA74' }; // orange-300
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
get progressWidth() {
|
|
26
|
+
// Clamp progress between 0 and 100
|
|
27
|
+
const clampedProgress = Math.max(0, Math.min(100, this.progress));
|
|
28
|
+
return `${clampedProgress}%`;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
HeatErrorMapCellComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: HeatErrorMapCellComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
32
|
+
HeatErrorMapCellComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: HeatErrorMapCellComponent, selector: "cqa-heat-error-map-cell", inputs: { type: "type", cases: "cases", defects: "defects", progress: "progress" }, ngImport: i0, template: "<div id=\"cqa-ui-root\" style=\"width: 14rem; height: 6rem; display: inline-flex; justify-content: space-between; align-items: flex-start;\">\n <div class=\"min-w-56 min-h-24 cqa-self-stretch cqa-flex cqa-flex-col cqa-rounded-2xl cqa-justify-start cqa-items-start cqa-gap-4 cqa-p-4\" [ngStyle]=\"backgroundColorStyle\">\n <!-- section 1 -->\n <div class=\"cqa-self-stretch cqa-flex cqa-flex-col cqa-justify-start cqa-items-start cqa-gap-px\">\n <div class=\"cqa-self-stretch cqa-flex cqa-flex-col cqa-justify-start cqa-items-start\">\n <div class=\"cqa-self-stretch cqa-justify-center cqa-text-gray-900 cqa-text-base cqa-font-bold cqa-leading-5 cqa-font-geist\">\n {{ cases }} cases\n </div>\n </div>\n <div class=\"cqa-self-stretch cqa-flex cqa-flex-col cqa-justify-start cqa-items-start\">\n <div class=\"cqa-self-stretch cqa-justify-center cqa-text-gray-900 cqa-text-xs cqa-font-normal cqa-leading-4 cqa-font-geist\">\n {{ defects }} defects\n </div>\n </div>\n </div>\n <!-- section 2 -->\n <div class=\"cqa-self-stretch cqa-h-1 cqa-relative cqa-rounded-full cqa-overflow-hidden cqa-bg-white/70\">\n <div \n class=\"cqa-h-1 cqa-left-0 cqa-top-0 cqa-absolute cqa-bg-red-500 cqa-rounded-full\"\n [style.width]=\"progressWidth\"\n ></div>\n </div>\n </div>\n</div>\n\n\n", directives: [{ type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }] });
|
|
33
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: HeatErrorMapCellComponent, decorators: [{
|
|
34
|
+
type: Component,
|
|
35
|
+
args: [{ selector: 'cqa-heat-error-map-cell', template: "<div id=\"cqa-ui-root\" style=\"width: 14rem; height: 6rem; display: inline-flex; justify-content: space-between; align-items: flex-start;\">\n <div class=\"min-w-56 min-h-24 cqa-self-stretch cqa-flex cqa-flex-col cqa-rounded-2xl cqa-justify-start cqa-items-start cqa-gap-4 cqa-p-4\" [ngStyle]=\"backgroundColorStyle\">\n <!-- section 1 -->\n <div class=\"cqa-self-stretch cqa-flex cqa-flex-col cqa-justify-start cqa-items-start cqa-gap-px\">\n <div class=\"cqa-self-stretch cqa-flex cqa-flex-col cqa-justify-start cqa-items-start\">\n <div class=\"cqa-self-stretch cqa-justify-center cqa-text-gray-900 cqa-text-base cqa-font-bold cqa-leading-5 cqa-font-geist\">\n {{ cases }} cases\n </div>\n </div>\n <div class=\"cqa-self-stretch cqa-flex cqa-flex-col cqa-justify-start cqa-items-start\">\n <div class=\"cqa-self-stretch cqa-justify-center cqa-text-gray-900 cqa-text-xs cqa-font-normal cqa-leading-4 cqa-font-geist\">\n {{ defects }} defects\n </div>\n </div>\n </div>\n <!-- section 2 -->\n <div class=\"cqa-self-stretch cqa-h-1 cqa-relative cqa-rounded-full cqa-overflow-hidden cqa-bg-white/70\">\n <div \n class=\"cqa-h-1 cqa-left-0 cqa-top-0 cqa-absolute cqa-bg-red-500 cqa-rounded-full\"\n [style.width]=\"progressWidth\"\n ></div>\n </div>\n </div>\n</div>\n\n\n", styles: [] }]
|
|
36
|
+
}], propDecorators: { type: [{
|
|
37
|
+
type: Input
|
|
38
|
+
}], cases: [{
|
|
39
|
+
type: Input
|
|
40
|
+
}], defects: [{
|
|
41
|
+
type: Input
|
|
42
|
+
}], progress: [{
|
|
43
|
+
type: Input
|
|
44
|
+
}] } });
|
|
45
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVhdC1lcnJvci1tYXAtY2VsbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2Rhc2hib2FyZHMvaGVhdC1lcnJvci1tYXAtY2VsbC9oZWF0LWVycm9yLW1hcC1jZWxsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvZGFzaGJvYXJkcy9oZWF0LWVycm9yLW1hcC1jZWxsL2hlYXQtZXJyb3ItbWFwLWNlbGwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7OztBQVNqRCxNQUFNLE9BQU8seUJBQXlCO0lBTHRDO1FBTVcsU0FBSSxHQUF5QixPQUFPLENBQUM7UUFDckMsVUFBSyxHQUFXLENBQUMsQ0FBQztRQUNsQixZQUFPLEdBQVcsQ0FBQyxDQUFDO1FBQ3BCLGFBQVEsR0FBVyxDQUFDLENBQUMsQ0FBQywrQkFBK0I7S0FzQi9EO0lBcEJDLElBQUksb0JBQW9CO1FBQ3RCLFFBQVEsSUFBSSxDQUFDLElBQUksRUFBRTtZQUNqQixLQUFLLE9BQU87Z0JBQ1YsT0FBTyxFQUFFLGtCQUFrQixFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUMsYUFBYTtZQUN6RCxLQUFLLFFBQVE7Z0JBQ1gsT0FBTyxFQUFFLGtCQUFrQixFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUMsWUFBWTtZQUN4RCxLQUFLLFlBQVk7Z0JBQ2YsT0FBTyxFQUFFLGtCQUFrQixFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUMsY0FBYztZQUMxRCxLQUFLLFNBQVM7Z0JBQ1osT0FBTyxFQUFFLGtCQUFrQixFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUMsV0FBVztZQUN2RDtnQkFDRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQyxhQUFhO1NBQzFEO0lBQ0gsQ0FBQztJQUVELElBQUksYUFBYTtRQUNmLG1DQUFtQztRQUNuQyxNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztRQUNsRSxPQUFPLEdBQUcsZUFBZSxHQUFHLENBQUM7SUFDL0IsQ0FBQzs7c0hBekJVLHlCQUF5QjswR0FBekIseUJBQXlCLG1KQ1R0Qyx1MkNBMEJBOzJGRGpCYSx5QkFBeUI7a0JBTHJDLFNBQVM7K0JBQ0UseUJBQXlCOzhCQUsxQixJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5leHBvcnQgdHlwZSBIZWF0RXJyb3JNYXBDZWxsVHlwZSA9ICdzbW9rZScgfCAnc2FuaXR5JyB8ICdyZWdyZXNzaW9uJyB8ICdyZXZpc2l0JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY3FhLWhlYXQtZXJyb3ItbWFwLWNlbGwnLFxuICB0ZW1wbGF0ZVVybDogJy4vaGVhdC1lcnJvci1tYXAtY2VsbC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogW11cbn0pXG5leHBvcnQgY2xhc3MgSGVhdEVycm9yTWFwQ2VsbENvbXBvbmVudCB7XG4gIEBJbnB1dCgpIHR5cGU6IEhlYXRFcnJvck1hcENlbGxUeXBlID0gJ3Ntb2tlJztcbiAgQElucHV0KCkgY2FzZXM6IG51bWJlciA9IDA7XG4gIEBJbnB1dCgpIGRlZmVjdHM6IG51bWJlciA9IDA7XG4gIEBJbnB1dCgpIHByb2dyZXNzOiBudW1iZXIgPSAwOyAvLyBQcm9ncmVzcyB2YWx1ZSBmcm9tIDAgdG8gMTAwXG5cbiAgZ2V0IGJhY2tncm91bmRDb2xvclN0eWxlKCk6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0ge1xuICAgIHN3aXRjaCAodGhpcy50eXBlKSB7XG4gICAgICBjYXNlICdzbW9rZSc6XG4gICAgICAgIHJldHVybiB7ICdiYWNrZ3JvdW5kLWNvbG9yJzogJyNGREJBNzQnIH07IC8vIG9yYW5nZS0zMDBcbiAgICAgIGNhc2UgJ3Nhbml0eSc6XG4gICAgICAgIHJldHVybiB7ICdiYWNrZ3JvdW5kLWNvbG9yJzogJyNGQ0QzNEQnIH07IC8vIGFtYmVyLTMwMFxuICAgICAgY2FzZSAncmVncmVzc2lvbic6XG4gICAgICAgIHJldHVybiB7ICdiYWNrZ3JvdW5kLWNvbG9yJzogJyNBN0YzRDAnIH07IC8vIGVtZXJhbGQtMjAwXG4gICAgICBjYXNlICdyZXZpc2l0JzpcbiAgICAgICAgcmV0dXJuIHsgJ2JhY2tncm91bmQtY29sb3InOiAnI0Y0RjRGNScgfTsgLy8gemluYy0xMDBcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiB7ICdiYWNrZ3JvdW5kLWNvbG9yJzogJyNGREJBNzQnIH07IC8vIG9yYW5nZS0zMDBcbiAgICB9XG4gIH1cblxuICBnZXQgcHJvZ3Jlc3NXaWR0aCgpOiBzdHJpbmcge1xuICAgIC8vIENsYW1wIHByb2dyZXNzIGJldHdlZW4gMCBhbmQgMTAwXG4gICAgY29uc3QgY2xhbXBlZFByb2dyZXNzID0gTWF0aC5tYXgoMCwgTWF0aC5taW4oMTAwLCB0aGlzLnByb2dyZXNzKSk7XG4gICAgcmV0dXJuIGAke2NsYW1wZWRQcm9ncmVzc30lYDtcbiAgfVxufVxuXG5cbiIsIjxkaXYgaWQ9XCJjcWEtdWktcm9vdFwiIHN0eWxlPVwid2lkdGg6IDE0cmVtOyBoZWlnaHQ6IDZyZW07IGRpc3BsYXk6IGlubGluZS1mbGV4OyBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47IGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1wiPlxuICA8ZGl2IGNsYXNzPVwibWluLXctNTYgbWluLWgtMjQgY3FhLXNlbGYtc3RyZXRjaCBjcWEtZmxleCBjcWEtZmxleC1jb2wgY3FhLXJvdW5kZWQtMnhsIGNxYS1qdXN0aWZ5LXN0YXJ0IGNxYS1pdGVtcy1zdGFydCBjcWEtZ2FwLTQgY3FhLXAtNFwiIFtuZ1N0eWxlXT1cImJhY2tncm91bmRDb2xvclN0eWxlXCI+XG4gICAgPCEtLSBzZWN0aW9uIDEgLS0+XG4gICAgPGRpdiBjbGFzcz1cImNxYS1zZWxmLXN0cmV0Y2ggY3FhLWZsZXggY3FhLWZsZXgtY29sIGNxYS1qdXN0aWZ5LXN0YXJ0IGNxYS1pdGVtcy1zdGFydCBjcWEtZ2FwLXB4XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiY3FhLXNlbGYtc3RyZXRjaCBjcWEtZmxleCBjcWEtZmxleC1jb2wgY3FhLWp1c3RpZnktc3RhcnQgY3FhLWl0ZW1zLXN0YXJ0XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjcWEtc2VsZi1zdHJldGNoIGNxYS1qdXN0aWZ5LWNlbnRlciBjcWEtdGV4dC1ncmF5LTkwMCBjcWEtdGV4dC1iYXNlIGNxYS1mb250LWJvbGQgY3FhLWxlYWRpbmctNSBjcWEtZm9udC1nZWlzdFwiPlxuICAgICAgICAgIHt7IGNhc2VzIH19IGNhc2VzXG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiY3FhLXNlbGYtc3RyZXRjaCBjcWEtZmxleCBjcWEtZmxleC1jb2wgY3FhLWp1c3RpZnktc3RhcnQgY3FhLWl0ZW1zLXN0YXJ0XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjcWEtc2VsZi1zdHJldGNoIGNxYS1qdXN0aWZ5LWNlbnRlciBjcWEtdGV4dC1ncmF5LTkwMCBjcWEtdGV4dC14cyBjcWEtZm9udC1ub3JtYWwgY3FhLWxlYWRpbmctNCBjcWEtZm9udC1nZWlzdFwiPlxuICAgICAgICAgIHt7IGRlZmVjdHMgfX0gZGVmZWN0c1xuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDwhLS0gc2VjdGlvbiAyIC0tPlxuICAgIDxkaXYgY2xhc3M9XCJjcWEtc2VsZi1zdHJldGNoIGNxYS1oLTEgY3FhLXJlbGF0aXZlIGNxYS1yb3VuZGVkLWZ1bGwgY3FhLW92ZXJmbG93LWhpZGRlbiBjcWEtYmctd2hpdGUvNzBcIj5cbiAgICAgIDxkaXYgXG4gICAgICAgIGNsYXNzPVwiY3FhLWgtMSBjcWEtbGVmdC0wIGNxYS10b3AtMCBjcWEtYWJzb2x1dGUgY3FhLWJnLXJlZC01MDAgY3FhLXJvdW5kZWQtZnVsbFwiXG4gICAgICAgIFtzdHlsZS53aWR0aF09XCJwcm9ncmVzc1dpZHRoXCJcbiAgICAgID48L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cblxuXG4iXX0=
|