@cqa-lib/cqa-ui 1.0.4 → 1.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (27) hide show
  1. package/esm2020/lib/button/button.component.mjs +10 -10
  2. package/esm2020/lib/dashboards/chart-card/chart-card.component.mjs +3 -3
  3. package/esm2020/lib/dashboards/coverage-module-card/coverage-module-card.component.mjs +3 -3
  4. package/esm2020/lib/dashboards/failed-test-cases-card/failed-test-cases-card.component.mjs +4 -4
  5. package/esm2020/lib/dashboards/insight-card/insight-card.component.mjs +3 -3
  6. package/esm2020/lib/dashboards/progress-text-card/progress-text-card.component.mjs +7 -7
  7. package/esm2020/lib/dashboards/test-distribution-card/test-distribution-card.component.mjs +29 -4
  8. package/esm2020/lib/empty-state/empty-state-presets.constants.mjs +54 -0
  9. package/esm2020/lib/empty-state/empty-state.component.mjs +39 -4
  10. package/esm2020/lib/search-bar/search-bar.component.mjs +3 -3
  11. package/esm2020/lib/selected-filters/selected-filters.component.mjs +3 -4
  12. package/esm2020/lib/table/dynamic-table/dynamic-table.component.mjs +3 -3
  13. package/esm2020/lib/templates/table-template.component.mjs +1 -1
  14. package/esm2020/lib/ui-kit.module.mjs +1 -5
  15. package/esm2020/public-api.mjs +2 -1
  16. package/fesm2015/cqa-lib-cqa-ui.mjs +176 -70
  17. package/fesm2015/cqa-lib-cqa-ui.mjs.map +1 -1
  18. package/fesm2020/cqa-lib-cqa-ui.mjs +176 -70
  19. package/fesm2020/cqa-lib-cqa-ui.mjs.map +1 -1
  20. package/lib/dashboards/test-distribution-card/test-distribution-card.component.d.ts +2 -0
  21. package/lib/empty-state/empty-state-presets.constants.d.ts +15 -0
  22. package/lib/empty-state/empty-state.component.d.ts +14 -3
  23. package/lib/ui-kit.module.d.ts +12 -13
  24. package/package.json +1 -1
  25. package/public-api.d.ts +1 -0
  26. package/storybook-static/assets/images/README.md +66 -0
  27. package/styles.css +1 -1
@@ -20,7 +20,7 @@ export class FailedTestCasesCardComponent {
20
20
  /** Optional extra class for the outer card */
21
21
  this.cardClass = '';
22
22
  /** Left border accent class */
23
- this.leftAccentClass = 'cqa-border-l-[4px] cqa-border-[#EF4444]';
23
+ this.leftAccentClass = 'cqa-border-l-[4px]';
24
24
  }
25
25
  get rootCauseDisplay() {
26
26
  return this.rootCause && this.rootCause.trim().length
@@ -29,10 +29,10 @@ export class FailedTestCasesCardComponent {
29
29
  }
30
30
  }
31
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 });
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-border cqa-border-solid cqa-border-[#E5E7EB] cqa-border-l-[#EF4444] 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
33
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: FailedTestCasesCardComponent, decorators: [{
34
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: [] }]
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-border cqa-border-solid cqa-border-[#E5E7EB] cqa-border-l-[#EF4444] 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
36
  }], propDecorators: { title: [{
37
37
  type: Input
38
38
  }], failures: [{
@@ -56,4 +56,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImpor
56
56
  }], leftAccentClass: [{
57
57
  type: Input
58
58
  }] } });
59
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFpbGVkLXRlc3QtY2FzZXMtY2FyZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2Rhc2hib2FyZHMvZmFpbGVkLXRlc3QtY2FzZXMtY2FyZC9mYWlsZWQtdGVzdC1jYXNlcy1jYXJkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvZGFzaGJvYXJkcy9mYWlsZWQtdGVzdC1jYXNlcy1jYXJkL2ZhaWxlZC10ZXN0LWNhc2VzLWNhcmQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7OztBQVExRSxNQUFNLE9BQU8sNEJBQTRCO0lBTnpDO1FBT0UsbUNBQW1DO1FBQzFCLFVBQUssR0FBVyxrQkFBa0IsQ0FBQztRQUM1QyxnREFBZ0Q7UUFDdkMsYUFBUSxHQUFXLENBQUMsQ0FBQztRQUM5QixvQ0FBb0M7UUFDM0Isa0JBQWEsR0FBVyxVQUFVLENBQUM7UUFDNUMsb0RBQW9EO1FBQzNDLGNBQVMsR0FBVyxxQ0FBcUMsQ0FBQztRQUduRSwrQ0FBK0M7UUFDdEMsbUJBQWMsR0FBVyxZQUFZLENBQUM7UUFDL0Msd0NBQXdDO1FBQy9CLGtCQUFhLEdBQVksSUFBSSxDQUFDO1FBR3ZDLDBCQUEwQjtRQUNqQixvQkFBZSxHQUFXLGFBQWEsQ0FBQztRQUNqRCw4Q0FBOEM7UUFDckMsY0FBUyxHQUFXLEVBQUUsQ0FBQztRQUNoQywrQkFBK0I7UUFDdEIsb0JBQWUsR0FBVyx5Q0FBeUMsQ0FBQztLQU85RTtJQUxDLElBQUksZ0JBQWdCO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDLE1BQU07WUFDbkQsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTO1lBQ2hCLENBQUMsQ0FBQyx5QkFBeUIsQ0FBQztJQUNoQyxDQUFDOzt5SEE1QlUsNEJBQTRCOzZHQUE1Qiw0QkFBNEIsZ1lDUnpDLHV0REE0Qk07MkZEcEJPLDRCQUE0QjtrQkFOeEMsU0FBUzsrQkFDRSw0QkFBNEIsbUJBR3JCLHVCQUF1QixDQUFDLE1BQU07OEJBSXRDLEtBQUs7c0JBQWIsS0FBSztnQkFFRyxRQUFRO3NCQUFoQixLQUFLO2dCQUVHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBRUcsU0FBUztzQkFBakIsS0FBSztnQkFFRyxTQUFTO3NCQUFqQixLQUFLO2dCQUVHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBRUcsYUFBYTtzQkFBckIsS0FBSztnQkFFRyxVQUFVO3NCQUFsQixLQUFLO2dCQUVHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBRUcsU0FBUztzQkFBakIsS0FBSztnQkFFRyxlQUFlO3NCQUF2QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY3FhLWZhaWxlZC10ZXN0LWNhc2VzLWNhcmQnLFxuICB0ZW1wbGF0ZVVybDogJy4vZmFpbGVkLXRlc3QtY2FzZXMtY2FyZC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogW10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBGYWlsZWRUZXN0Q2FzZXNDYXJkQ29tcG9uZW50IHtcbiAgLyoqIEUuZy4sIFwiQy02MjogVXBsb2FkIENvbnRlbnRcIiAqL1xuICBASW5wdXQoKSB0aXRsZTogc3RyaW5nID0gJ0ZhaWxlZCBUZXN0IENhc2UnO1xuICAvKiogTnVtYmVyIG9mIGZhaWx1cmVzIHRvIGRpc3BsYXkgaW4gdGhlIHBpbGwgKi9cbiAgQElucHV0KCkgZmFpbHVyZXM6IG51bWJlciA9IDA7XG4gIC8qKiBQaWxsIGxhYmVsIChlLmcuLCBcImZhaWx1cmVzXCIpICovXG4gIEBJbnB1dCgpIGZhaWx1cmVzTGFiZWw6IHN0cmluZyA9ICdmYWlsdXJlcyc7XG4gIC8qKiBPcHRpb25hbCBjdXN0b20gY2xhc3MgZm9yIHRoZSBwaWxsIGJhY2tncm91bmQgKi9cbiAgQElucHV0KCkgcGlsbENsYXNzOiBzdHJpbmcgPSAnY3FhLWJnLVsjRjE1RjVGXSBjcWEtdGV4dC1bI0ZBRkFGQV0nO1xuICAvKiogUm9vdCBjYXVzZSB0ZXh0OyB3aGVuIGVtcHR5LCBzaG93IGEgZGVmYXVsdCBtZXNzYWdlICovXG4gIEBJbnB1dCgpIHJvb3RDYXVzZT86IHN0cmluZztcbiAgLyoqIFJvb3QgY2F1c2UgbGFiZWwgKGxlZnQgcGFydCwgZW1waGFzaXplZCkgKi9cbiAgQElucHV0KCkgcm9vdENhdXNlTGFiZWw6IHN0cmluZyA9ICdSb290IGNhdXNlJztcbiAgLyoqIElmIGZhbHNlLCBoaWRlIHRoZSByb290IGNhdXNlIHJvdyAqL1xuICBASW5wdXQoKSBzaG93Um9vdENhdXNlOiBib29sZWFuID0gdHJ1ZTtcbiAgLyoqIExhc3QgZmFpbGVkIHRleHQgKGUuZy4sIFwiMiBob3VycyBhZ29cIikgKi9cbiAgQElucHV0KCkgbGFzdEZhaWxlZD86IHN0cmluZztcbiAgLyoqIExhYmVsIGZvciB0aW1lc3RhbXAgKi9cbiAgQElucHV0KCkgbGFzdEZhaWxlZExhYmVsOiBzdHJpbmcgPSAnTGFzdCBmYWlsZWQnO1xuICAvKiogT3B0aW9uYWwgZXh0cmEgY2xhc3MgZm9yIHRoZSBvdXRlciBjYXJkICovXG4gIEBJbnB1dCgpIGNhcmRDbGFzczogc3RyaW5nID0gJyc7XG4gIC8qKiBMZWZ0IGJvcmRlciBhY2NlbnQgY2xhc3MgKi9cbiAgQElucHV0KCkgbGVmdEFjY2VudENsYXNzOiBzdHJpbmcgPSAnY3FhLWJvcmRlci1sLVs0cHhdIGNxYS1ib3JkZXItWyNFRjQ0NDRdJztcblxuICBnZXQgcm9vdENhdXNlRGlzcGxheSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnJvb3RDYXVzZSAmJiB0aGlzLnJvb3RDYXVzZS50cmltKCkubGVuZ3RoXG4gICAgICA/IHRoaXMucm9vdENhdXNlXG4gICAgICA6ICdObyByb290IGNhdXNlIGF2YWlsYWJsZSc7XG4gIH1cbn1cblxuXG4iLCI8ZGl2IGlkPVwiY3FhLXVpLXJvb3RcIj5cbiAgPGRpdiBjbGFzcz1cImNxYS13LWZ1bGwgY3FhLWJnLVsjRkVGMkYyNDBdIGNxYS1yb3VuZGVkLVsxMHB4XSBjcWEtcC1bMTBweF0gY3FhLXBsLVsyMHB4XVwiXG4gICAgW25nQ2xhc3NdPVwiW2xlZnRBY2NlbnRDbGFzcywgY2FyZENsYXNzXVwiPlxuICAgIDxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtaXRlbXMtc3RhcnQgY3FhLWp1c3RpZnktYmV0d2VlbiBjcWEtZ2FwLTIgY3FhLWZsZXgtd3JhcFwiPlxuICAgICAgPCEtLSBUaXRsZSAtLT5cbiAgICAgIDxoMyBjbGFzcz1cImNxYS10ZXh0LVsxNHB4XSBjcWEtbGVhZGluZy1bMTdweF0gY3FhLWZvbnQtc2VtaWJvbGQgY3FhLXRleHQtWyMxQTFBMUFdXCI+e3sgdGl0bGUgfX08L2gzPlxuXG4gICAgICA8IS0tIEZhaWx1cmVzIHBpbGwgLS0+XG4gICAgICA8c3BhbiBjbGFzcz1cImNxYS1weC1bMTFweF0gY3FhLXB5LVszcHhdIGNxYS1yb3VuZGVkLWZ1bGwgY3FhLXRleHQtWzEycHhdIGNxYS1sZWFkaW5nLVsxNnB4XSBjcWEtZm9udC1tZWRpdW0gY3FhLXRyYWNraW5nLVswLjNweF1cIlxuICAgICAgICBbbmdDbGFzc109XCJwaWxsQ2xhc3NcIj5cbiAgICAgICAge3sgZmFpbHVyZXMgfCBudW1iZXIgfX0ge3sgZmFpbHVyZXNMYWJlbCB9fVxuICAgICAgPC9zcGFuPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cImNxYS1mbGV4IGNxYS1pdGVtcy1jZW50ZXIgY3FhLWp1c3RpZnktYmV0d2VlbiBjcWEtZmxleC13cmFwIGNxYS1tdC0yXCI+XG4gICAgICA8IS0tIFJvb3QgY2F1c2UgLS0+XG4gICAgICA8ZGl2ICpuZ0lmPVwic2hvd1Jvb3RDYXVzZVwiIGNsYXNzPVwibWQ6Y3FhLXB4LVsxMXB4XSBjcWEtcHktWzNweF0gY3FhLXRleHQtWzEycHhdIGNxYS1sZWFkaW5nLVsxNXB4XSBjcWEtdGV4dC1bI0YxNUY1Rl1cIj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJjcWEtZm9udC1zZW1pYm9sZFwiPnt7IHJvb3RDYXVzZUxhYmVsIH19OiA8L3NwYW4+e3sgcm9vdENhdXNlRGlzcGxheSB9fVxuICAgICAgPC9kaXY+XG5cbiAgICAgIDwhLS0gVGltZXN0YW1wIC0tPlxuICAgICAgPGRpdiAqbmdJZj1cImxhc3RGYWlsZWRcIlxuICAgICAgICBjbGFzcz1cImNxYS1weS1bM3B4XSBjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1nYXAtMSBjcWEtdGV4dC1bMTBweF0gY3FhLWxlYWRpbmctWzE1cHhdIGNxYS1mb250LW1lZGl1bSBjcWEtdGV4dC1kaWFsb2ctbXV0ZWRcIj5cbiAgICAgICAgPHN2ZyB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTJcIiB2aWV3Qm94PVwiMCAwIDEyIDEyXCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+PHBhdGggZD1cIk02IDExQzguNzYxNDIgMTEgMTEgOC43NjE0MiAxMSA2QzExIDMuMjM4NTggOC43NjE0MiAxIDYgMUMzLjIzODU4IDEgMSAzLjIzODU4IDEgNkMxIDguNzYxNDIgMy4yMzg1OCAxMSA2IDExWlwiIHN0cm9rZT1cIiM2QjcyODBcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+PHBhdGggZD1cIk02IDNWNkw4IDdcIiBzdHJva2U9XCIjNkI3MjgwXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPjwvc3ZnPlxuICAgICAgICA8c3Bhbj57eyBsYXN0RmFpbGVkTGFiZWwgfX06IHt7IGxhc3RGYWlsZWQgfX08L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj4iXX0=
59
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFpbGVkLXRlc3QtY2FzZXMtY2FyZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2Rhc2hib2FyZHMvZmFpbGVkLXRlc3QtY2FzZXMtY2FyZC9mYWlsZWQtdGVzdC1jYXNlcy1jYXJkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvZGFzaGJvYXJkcy9mYWlsZWQtdGVzdC1jYXNlcy1jYXJkL2ZhaWxlZC10ZXN0LWNhc2VzLWNhcmQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7OztBQVExRSxNQUFNLE9BQU8sNEJBQTRCO0lBTnpDO1FBT0UsbUNBQW1DO1FBQzFCLFVBQUssR0FBVyxrQkFBa0IsQ0FBQztRQUM1QyxnREFBZ0Q7UUFDdkMsYUFBUSxHQUFXLENBQUMsQ0FBQztRQUM5QixvQ0FBb0M7UUFDM0Isa0JBQWEsR0FBVyxVQUFVLENBQUM7UUFDNUMsb0RBQW9EO1FBQzNDLGNBQVMsR0FBVyxxQ0FBcUMsQ0FBQztRQUduRSwrQ0FBK0M7UUFDdEMsbUJBQWMsR0FBVyxZQUFZLENBQUM7UUFDL0Msd0NBQXdDO1FBQy9CLGtCQUFhLEdBQVksSUFBSSxDQUFDO1FBR3ZDLDBCQUEwQjtRQUNqQixvQkFBZSxHQUFXLGFBQWEsQ0FBQztRQUNqRCw4Q0FBOEM7UUFDckMsY0FBUyxHQUFXLEVBQUUsQ0FBQztRQUNoQywrQkFBK0I7UUFDdEIsb0JBQWUsR0FBVyxvQkFBb0IsQ0FBQztLQU96RDtJQUxDLElBQUksZ0JBQWdCO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDLE1BQU07WUFDbkQsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTO1lBQ2hCLENBQUMsQ0FBQyx5QkFBeUIsQ0FBQztJQUNoQyxDQUFDOzt5SEE1QlUsNEJBQTRCOzZHQUE1Qiw0QkFBNEIsZ1lDUnpDLCt4REE0Qk07MkZEcEJPLDRCQUE0QjtrQkFOeEMsU0FBUzsrQkFDRSw0QkFBNEIsbUJBR3JCLHVCQUF1QixDQUFDLE1BQU07OEJBSXRDLEtBQUs7c0JBQWIsS0FBSztnQkFFRyxRQUFRO3NCQUFoQixLQUFLO2dCQUVHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBRUcsU0FBUztzQkFBakIsS0FBSztnQkFFRyxTQUFTO3NCQUFqQixLQUFLO2dCQUVHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBRUcsYUFBYTtzQkFBckIsS0FBSztnQkFFRyxVQUFVO3NCQUFsQixLQUFLO2dCQUVHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBRUcsU0FBUztzQkFBakIsS0FBSztnQkFFRyxlQUFlO3NCQUF2QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY3FhLWZhaWxlZC10ZXN0LWNhc2VzLWNhcmQnLFxuICB0ZW1wbGF0ZVVybDogJy4vZmFpbGVkLXRlc3QtY2FzZXMtY2FyZC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogW10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBGYWlsZWRUZXN0Q2FzZXNDYXJkQ29tcG9uZW50IHtcbiAgLyoqIEUuZy4sIFwiQy02MjogVXBsb2FkIENvbnRlbnRcIiAqL1xuICBASW5wdXQoKSB0aXRsZTogc3RyaW5nID0gJ0ZhaWxlZCBUZXN0IENhc2UnO1xuICAvKiogTnVtYmVyIG9mIGZhaWx1cmVzIHRvIGRpc3BsYXkgaW4gdGhlIHBpbGwgKi9cbiAgQElucHV0KCkgZmFpbHVyZXM6IG51bWJlciA9IDA7XG4gIC8qKiBQaWxsIGxhYmVsIChlLmcuLCBcImZhaWx1cmVzXCIpICovXG4gIEBJbnB1dCgpIGZhaWx1cmVzTGFiZWw6IHN0cmluZyA9ICdmYWlsdXJlcyc7XG4gIC8qKiBPcHRpb25hbCBjdXN0b20gY2xhc3MgZm9yIHRoZSBwaWxsIGJhY2tncm91bmQgKi9cbiAgQElucHV0KCkgcGlsbENsYXNzOiBzdHJpbmcgPSAnY3FhLWJnLVsjRjE1RjVGXSBjcWEtdGV4dC1bI0ZBRkFGQV0nO1xuICAvKiogUm9vdCBjYXVzZSB0ZXh0OyB3aGVuIGVtcHR5LCBzaG93IGEgZGVmYXVsdCBtZXNzYWdlICovXG4gIEBJbnB1dCgpIHJvb3RDYXVzZT86IHN0cmluZztcbiAgLyoqIFJvb3QgY2F1c2UgbGFiZWwgKGxlZnQgcGFydCwgZW1waGFzaXplZCkgKi9cbiAgQElucHV0KCkgcm9vdENhdXNlTGFiZWw6IHN0cmluZyA9ICdSb290IGNhdXNlJztcbiAgLyoqIElmIGZhbHNlLCBoaWRlIHRoZSByb290IGNhdXNlIHJvdyAqL1xuICBASW5wdXQoKSBzaG93Um9vdENhdXNlOiBib29sZWFuID0gdHJ1ZTtcbiAgLyoqIExhc3QgZmFpbGVkIHRleHQgKGUuZy4sIFwiMiBob3VycyBhZ29cIikgKi9cbiAgQElucHV0KCkgbGFzdEZhaWxlZD86IHN0cmluZztcbiAgLyoqIExhYmVsIGZvciB0aW1lc3RhbXAgKi9cbiAgQElucHV0KCkgbGFzdEZhaWxlZExhYmVsOiBzdHJpbmcgPSAnTGFzdCBmYWlsZWQnO1xuICAvKiogT3B0aW9uYWwgZXh0cmEgY2xhc3MgZm9yIHRoZSBvdXRlciBjYXJkICovXG4gIEBJbnB1dCgpIGNhcmRDbGFzczogc3RyaW5nID0gJyc7XG4gIC8qKiBMZWZ0IGJvcmRlciBhY2NlbnQgY2xhc3MgKi9cbiAgQElucHV0KCkgbGVmdEFjY2VudENsYXNzOiBzdHJpbmcgPSAnY3FhLWJvcmRlci1sLVs0cHhdJztcblxuICBnZXQgcm9vdENhdXNlRGlzcGxheSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnJvb3RDYXVzZSAmJiB0aGlzLnJvb3RDYXVzZS50cmltKCkubGVuZ3RoXG4gICAgICA/IHRoaXMucm9vdENhdXNlXG4gICAgICA6ICdObyByb290IGNhdXNlIGF2YWlsYWJsZSc7XG4gIH1cbn1cblxuXG4iLCI8ZGl2IGlkPVwiY3FhLXVpLXJvb3RcIj5cbiAgPGRpdiBjbGFzcz1cImNxYS13LWZ1bGwgY3FhLWJnLVsjRkVGMkYyNDBdIGNxYS1ib3JkZXIgY3FhLWJvcmRlci1zb2xpZCBjcWEtYm9yZGVyLVsjRTVFN0VCXSBjcWEtYm9yZGVyLWwtWyNFRjQ0NDRdIGNxYS1yb3VuZGVkLVsxMHB4XSBjcWEtcC1bMTBweF0gY3FhLXBsLVsyMHB4XVwiXG4gICAgW25nQ2xhc3NdPVwiW2xlZnRBY2NlbnRDbGFzcywgY2FyZENsYXNzXVwiPlxuICAgIDxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtaXRlbXMtc3RhcnQgY3FhLWp1c3RpZnktYmV0d2VlbiBjcWEtZ2FwLTIgY3FhLWZsZXgtd3JhcFwiPlxuICAgICAgPCEtLSBUaXRsZSAtLT5cbiAgICAgIDxoMyBjbGFzcz1cImNxYS10ZXh0LVsxNHB4XSBjcWEtbGVhZGluZy1bMTdweF0gY3FhLWZvbnQtc2VtaWJvbGQgY3FhLXRleHQtWyMxQTFBMUFdXCI+e3sgdGl0bGUgfX08L2gzPlxuXG4gICAgICA8IS0tIEZhaWx1cmVzIHBpbGwgLS0+XG4gICAgICA8c3BhbiBjbGFzcz1cImNxYS1weC1bMTFweF0gY3FhLXB5LVszcHhdIGNxYS1yb3VuZGVkLWZ1bGwgY3FhLXRleHQtWzEycHhdIGNxYS1sZWFkaW5nLVsxNnB4XSBjcWEtZm9udC1tZWRpdW0gY3FhLXRyYWNraW5nLVswLjNweF1cIlxuICAgICAgICBbbmdDbGFzc109XCJwaWxsQ2xhc3NcIj5cbiAgICAgICAge3sgZmFpbHVyZXMgfCBudW1iZXIgfX0ge3sgZmFpbHVyZXNMYWJlbCB9fVxuICAgICAgPC9zcGFuPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cImNxYS1mbGV4IGNxYS1pdGVtcy1jZW50ZXIgY3FhLWp1c3RpZnktYmV0d2VlbiBjcWEtZmxleC13cmFwIGNxYS1tdC0yXCI+XG4gICAgICA8IS0tIFJvb3QgY2F1c2UgLS0+XG4gICAgICA8ZGl2ICpuZ0lmPVwic2hvd1Jvb3RDYXVzZVwiIGNsYXNzPVwibWQ6Y3FhLXB4LVsxMXB4XSBjcWEtcHktWzNweF0gY3FhLXRleHQtWzEycHhdIGNxYS1sZWFkaW5nLVsxNXB4XSBjcWEtdGV4dC1bI0YxNUY1Rl1cIj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJjcWEtZm9udC1zZW1pYm9sZFwiPnt7IHJvb3RDYXVzZUxhYmVsIH19OiA8L3NwYW4+e3sgcm9vdENhdXNlRGlzcGxheSB9fVxuICAgICAgPC9kaXY+XG5cbiAgICAgIDwhLS0gVGltZXN0YW1wIC0tPlxuICAgICAgPGRpdiAqbmdJZj1cImxhc3RGYWlsZWRcIlxuICAgICAgICBjbGFzcz1cImNxYS1weS1bM3B4XSBjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1nYXAtMSBjcWEtdGV4dC1bMTBweF0gY3FhLWxlYWRpbmctWzE1cHhdIGNxYS1mb250LW1lZGl1bSBjcWEtdGV4dC1kaWFsb2ctbXV0ZWRcIj5cbiAgICAgICAgPHN2ZyB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTJcIiB2aWV3Qm94PVwiMCAwIDEyIDEyXCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+PHBhdGggZD1cIk02IDExQzguNzYxNDIgMTEgMTEgOC43NjE0MiAxMSA2QzExIDMuMjM4NTggOC43NjE0MiAxIDYgMUMzLjIzODU4IDEgMSAzLjIzODU4IDEgNkMxIDguNzYxNDIgMy4yMzg1OCAxMSA2IDExWlwiIHN0cm9rZT1cIiM2QjcyODBcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+PHBhdGggZD1cIk02IDNWNkw4IDdcIiBzdHJva2U9XCIjNkI3MjgwXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPjwvc3ZnPlxuICAgICAgICA8c3Bhbj57eyBsYXN0RmFpbGVkTGFiZWwgfX06IHt7IGxhc3RGYWlsZWQgfX08L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj4iXX0=
@@ -163,10 +163,10 @@ export class InsightCardComponent {
163
163
  }
164
164
  }
165
165
  InsightCardComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: InsightCardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
166
- InsightCardComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: InsightCardComponent, selector: "cqa-insight-card", inputs: { title: "title", description: "description", badges: "badges", metadata: "metadata", prerequisiteSection: "prerequisiteSection", testDataSection: "testDataSection", metadataExpanded: "metadataExpanded", isPrerequisiteMissing: "isPrerequisiteMissing", isTestDataMissing: "isTestDataMissing" }, outputs: { metadataToggle: "metadataToggle", sectionToggle: "sectionToggle", sectionActionClick: "sectionActionClick", onApplySuggestionClick: "onApplySuggestionClick", onAttachPrerequisitesClick: "onAttachPrerequisitesClick", onImportTestDataClick: "onImportTestDataClick" }, ngImport: i0, template: "<div id=\"cqa-ui-root\">\n <div class=\"cqa-font-inter cqa-flex cqa-flex-col cqa-gap-4 cqa-px-[21px] cqa-py-3 cqa-border cqa-border-[#ECECEC] cqa-rounded-xl cqa-shadow-card\">\n <!-- Section 1: Badges -->\n <div class=\"cqa-flex cqa-items-center cqa-gap-3 cqapy-[1.5]\" *ngIf=\"visibleBadges.length > 0\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M14.4866 12.0005L9.15329 2.66714C9.037 2.46194 8.86836 2.29127 8.66457 2.17252C8.46078 2.05378 8.22915 1.99121 7.99329 1.99121C7.75743 1.99121 7.52579 2.05378 7.322 2.17252C7.11822 2.29127 6.94958 2.46194 6.83329 2.66714L1.49995 12.0005C1.38241 12.204 1.32077 12.4351 1.32129 12.6701C1.32181 12.9052 1.38447 13.136 1.50292 13.339C1.62136 13.5421 1.79138 13.7102 1.99575 13.8264C2.20011 13.9425 2.43156 14.0026 2.66662 14.0005H13.3333C13.5672 14.0002 13.797 13.9385 13.9995 13.8213C14.202 13.7042 14.3701 13.5359 14.487 13.3332C14.6038 13.1306 14.6653 12.9007 14.6653 12.6668C14.6652 12.4329 14.6036 12.2031 14.4866 12.0005Z\" stroke=\"#E2AC20\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M8 6V8.66667\" stroke=\"#E2AC20\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M8 11.333H8.00667\" stroke=\"#E2AC20\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>\n <div class=\"cqa-flex cqa-flex-wrap cqa-gap-2\">\n <cqa-badge \n *ngFor=\"let badge of visibleBadges\" \n [label]=\"badge.label\"\n [icon]=\"badge.icon\"\n [variant]=\"badge.variant || 'default'\"\n ></cqa-badge>\n </div>\n </div>\n\n <!-- Section 2: Title & Description -->\n <div class=\"cqa-flex cqa-flex-col cqa-gap-3\">\n <h2 class=\"cqa-font-medium cqa-text-lg cqa-leading-[22px] cqa-text-title\">\n {{ title }}\n </h2>\n <p class=\"cqa-text-base cqa-font-normal cqa-text-description\">\n {{ description }}\n </p>\n </div>\n\n <!-- Section 3: Metadata Section (always visible) -->\n <div *ngIf=\"metadata\" class=\"cqa-flex cqa-flex-col cqa-gap-4\">\n <div class=\"cqa-bg-surface-default cqa-rounded-[10px] cqa-px-4 cqa-py-3 cqa-border-t cqa-border-t-primary-surface\">\n <div class=\"cqa-flex cqa-flex-wrap cqa-items-center cqa-gap-[25px]\">\n <ng-container *ngFor=\"let item of metadata | keyvalue; let last = last\">\n <div class=\"cqa-flex cqa-items-center cqa-gap-[6px]\">\n <span class=\"cqa-text-xs cqa-font-normal cqa-font-inter cqa-text-metadata-key\">\n {{ item.key }}:\n </span>\n <span \n [ngClass]=\"getMetadataValueClasses(item.key, item.value)\" \n [ngStyle]=\"getMetadataValueStyle(item.key, item.value)\"\n class=\"cqa-font-normal cqa-leading-[18px] cqa-font-inter cqa-text-sm cqa-text-title\">\n {{ getMetadataValue(item.value) }}\n </span>\n </div>\n <div *ngIf=\"!last\" class=\"cqa-h-4 cqa-w-px cqa-bg-gray-200\"></div>\n </ng-container>\n </div>\n </div>\n\n <!-- Section 4: Metadata toggle -->\n <button *ngIf=\"metadata && (isPrerequisiteMissing || isTestDataMissing)\" type=\"button\"\n class=\"cqa-text-sm cqa-text-primary cqa-inline-flex cqa-font-inter cqa-items-center cqa-gap-[6px]\"\n (click)=\"toggleMetadata()\">\n <span>{{ metadataExpanded ? 'Hide details' : 'Show details' }}</span>\n <mat-icon class=\"cqa-w-[14px] cqa-h-[14px] cqa-text-[14px] cqa-leading-[14px]\">\n {{ metadataExpanded ? 'expand_less' : 'expand_more' }}\n </mat-icon>\n </button>\n\n <!-- Section 5: Sections (toggle visibility) -->\n <div *ngIf=\"metadataExpanded && visibleSections?.length\" class=\"cqa-flex cqa-flex-col cqa-gap-4\">\n <div\n *ngFor=\"let section of visibleSections\"\n class=\"cqa-border-l-4 cqa-border-[#FBBF24] cqa-rounded-[10px] cqa-overflow-hidden\"\n [ngClass]=\"getSectionBorderClass(section)\"\n >\n <div class=\"cqa-p-[10px] cqa-pl-[20px] cqa-flex cqa-flex-col cqa-gap-3\">\n <!-- Section Title with Inline Collapse Button -->\n <div class=\"cqa-flex cqa-items-center cqa-gap-2\">\n <h3 [ngClass]=\"getSectionTitleClasses(section)\" class=\"\">\n {{ section.title }}\n </h3>\n <button\n type=\"button\"\n class=\"cqa-ml-auto cqa-inline-flex\"\n (click)=\"toggleSection(section)\"\n [attr.aria-label]=\"section.expanded !== false ? 'Collapse section' : 'Expand section'\"\n >\n <mat-icon [ngClass]=\"getSectionIconColor(section)\" class=\"cqa-w-4 cqa-h-4 cqa-text-[16px] cqa-leading-[16px]\">\n {{ section.expanded !== false ? 'expand_less' : 'expand_more' }}\n </mat-icon>\n </button>\n </div>\n\n <!-- Collapsible Content: Reason and Action Button -->\n <div *ngIf=\"section.expanded !== false\" class=\"cqa-flex cqa-flex-col cqa-gap-[10px]\">\n <!-- Reason -->\n <p class=\"cqa-text-sm cqa-font-normal cqa-leading-[18px] cqa-text-neutral-600\">\n Reason: {{ section.reason }}\n </p>\n \n <!-- Action Button -->\n <div>\n <cqa-button\n variant=\"outlined\"\n (clicked)=\"onSectionAction(section.id)\"\n [customClass]=\"'cqa-py-[9px] cqa-text-[14px] cqa-leading-[17px] cqa-border-slate cqa-text-slate'\"\n >\n {{ section.actionButtonLabel }}\n </cqa-button>\n </div>\n </div>\n </div>\n </div>\n </div>\n \n <cqa-button\n variant=\"filled\"\n (clicked)=\"onMainAction()\"\n [disabled]=\"isApplying\"\n [customClass]=\"'!cqa-w-full !cqa-text-[14px] !cqa-leading-[20px] !cqa-font-semibold'\"\n >\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 {{ isApplying ? 'Applying suggestion' : 'Apply suggestion' }}\n </cqa-button>\n </div>\n</div>\n \n", components: [{ type: i1.BadgeComponent, selector: "cqa-badge", inputs: ["label", "icon", "variant", "backgroundColor", "textColor", "iconBackgroundColor", "iconColor"] }, { type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i3.ButtonComponent, selector: "cqa-button", inputs: ["variant", "disabled", "icon", "iconPosition", "fullWidth", "iconColor", "type", "text", "customClass"], outputs: ["clicked"] }], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i4.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }], pipes: { "keyvalue": i4.KeyValuePipe } });
166
+ InsightCardComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: InsightCardComponent, selector: "cqa-insight-card", inputs: { title: "title", description: "description", badges: "badges", metadata: "metadata", prerequisiteSection: "prerequisiteSection", testDataSection: "testDataSection", metadataExpanded: "metadataExpanded", isPrerequisiteMissing: "isPrerequisiteMissing", isTestDataMissing: "isTestDataMissing" }, outputs: { metadataToggle: "metadataToggle", sectionToggle: "sectionToggle", sectionActionClick: "sectionActionClick", onApplySuggestionClick: "onApplySuggestionClick", onAttachPrerequisitesClick: "onAttachPrerequisitesClick", onImportTestDataClick: "onImportTestDataClick" }, ngImport: i0, template: "<div id=\"cqa-ui-root\">\n <div class=\"cqa-font-inter cqa-flex cqa-flex-col cqa-gap-4 cqa-px-[21px] cqa-py-3 cqa-border cqa-border-solid cqa-border-[#ECECEC] cqa-rounded-xl cqa-shadow-card\">\n <!-- Section 1: Badges -->\n <div class=\"cqa-flex cqa-items-center cqa-gap-3 cqa-py-[1.5]\" *ngIf=\"visibleBadges.length > 0\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M14.4866 12.0005L9.15329 2.66714C9.037 2.46194 8.86836 2.29127 8.66457 2.17252C8.46078 2.05378 8.22915 1.99121 7.99329 1.99121C7.75743 1.99121 7.52579 2.05378 7.322 2.17252C7.11822 2.29127 6.94958 2.46194 6.83329 2.66714L1.49995 12.0005C1.38241 12.204 1.32077 12.4351 1.32129 12.6701C1.32181 12.9052 1.38447 13.136 1.50292 13.339C1.62136 13.5421 1.79138 13.7102 1.99575 13.8264C2.20011 13.9425 2.43156 14.0026 2.66662 14.0005H13.3333C13.5672 14.0002 13.797 13.9385 13.9995 13.8213C14.202 13.7042 14.3701 13.5359 14.487 13.3332C14.6038 13.1306 14.6653 12.9007 14.6653 12.6668C14.6652 12.4329 14.6036 12.2031 14.4866 12.0005Z\" stroke=\"#E2AC20\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M8 6V8.66667\" stroke=\"#E2AC20\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M8 11.333H8.00667\" stroke=\"#E2AC20\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>\n <div class=\"cqa-flex cqa-flex-wrap cqa-gap-2\">\n <cqa-badge \n *ngFor=\"let badge of visibleBadges\" \n [label]=\"badge.label\"\n [icon]=\"badge.icon\"\n [variant]=\"badge.variant || 'default'\"\n ></cqa-badge>\n </div>\n </div>\n\n <!-- Section 2: Title & Description -->\n <div class=\"cqa-flex cqa-flex-col cqa-gap-3\">\n <h2 class=\"cqa-font-medium cqa-text-lg cqa-leading-[22px] cqa-text-title\">\n {{ title }}\n </h2>\n <p class=\"cqa-text-base cqa-font-normal cqa-text-description\">\n {{ description }}\n </p>\n </div>\n\n <!-- Section 3: Metadata Section (always visible) -->\n <div *ngIf=\"metadata\" class=\"cqa-flex cqa-flex-col cqa-gap-4\">\n <div class=\"cqa-bg-surface-default cqa-rounded-[10px] cqa-px-4 cqa-py-3 cqa-border-t cqa-border-solid cqa-border-t-primary-surface\">\n <div class=\"cqa-flex cqa-flex-wrap cqa-items-center cqa-gap-[25px]\">\n <ng-container *ngFor=\"let item of metadata | keyvalue; let last = last\">\n <div class=\"cqa-flex cqa-items-center cqa-gap-[6px]\">\n <span class=\"cqa-text-xs cqa-font-normal cqa-font-inter cqa-text-metadata-key\">\n {{ item.key }}:\n </span>\n <span \n [ngClass]=\"getMetadataValueClasses(item.key, item.value)\" \n [ngStyle]=\"getMetadataValueStyle(item.key, item.value)\"\n class=\"cqa-font-normal cqa-leading-[18px] cqa-font-inter cqa-text-sm cqa-text-title\">\n {{ getMetadataValue(item.value) }}\n </span>\n </div>\n <div *ngIf=\"!last\" class=\"cqa-h-4 cqa-w-px cqa-bg-gray-200\"></div>\n </ng-container>\n </div>\n </div>\n\n <!-- Section 4: Metadata toggle -->\n <button *ngIf=\"metadata && (isPrerequisiteMissing || isTestDataMissing)\" type=\"button\"\n class=\"cqa-text-sm cqa-text-primary cqa-inline-flex cqa-font-inter cqa-items-center cqa-gap-[6px]\"\n (click)=\"toggleMetadata()\">\n <span>{{ metadataExpanded ? 'Hide details' : 'Show details' }}</span>\n <mat-icon class=\"cqa-w-[14px] cqa-h-[14px] cqa-text-[14px] cqa-leading-[14px]\">\n {{ metadataExpanded ? 'expand_less' : 'expand_more' }}\n </mat-icon>\n </button>\n\n <!-- Section 5: Sections (toggle visibility) -->\n <div *ngIf=\"metadataExpanded && visibleSections?.length\" class=\"cqa-flex cqa-flex-col cqa-gap-4\">\n <div\n *ngFor=\"let section of visibleSections\"\n class=\"cqa-border-l-4 cqa-border-solid cqa-border-[#FBBF24] cqa-rounded-[10px] cqa-overflow-hidden\"\n [ngClass]=\"getSectionBorderClass(section)\"\n >\n <div class=\"cqa-p-[10px] cqa-pl-[20px] cqa-flex cqa-flex-col cqa-gap-3\">\n <!-- Section Title with Inline Collapse Button -->\n <div class=\"cqa-flex cqa-items-center cqa-gap-2\">\n <h3 [ngClass]=\"getSectionTitleClasses(section)\" class=\"\">\n {{ section.title }}\n </h3>\n <button\n type=\"button\"\n class=\"cqa-ml-auto cqa-inline-flex\"\n (click)=\"toggleSection(section)\"\n [attr.aria-label]=\"section.expanded !== false ? 'Collapse section' : 'Expand section'\"\n >\n <mat-icon [ngClass]=\"getSectionIconColor(section)\" class=\"cqa-w-4 cqa-h-4 cqa-text-[16px] cqa-leading-[16px]\">\n {{ section.expanded !== false ? 'expand_less' : 'expand_more' }}\n </mat-icon>\n </button>\n </div>\n\n <!-- Collapsible Content: Reason and Action Button -->\n <div *ngIf=\"section.expanded !== false\" class=\"cqa-flex cqa-flex-col cqa-gap-[10px]\">\n <!-- Reason -->\n <p class=\"cqa-text-sm cqa-font-normal cqa-leading-[18px] cqa-text-neutral-600\">\n Reason: {{ section.reason }}\n </p>\n \n <!-- Action Button -->\n <div>\n <cqa-button\n variant=\"outlined\"\n (clicked)=\"onSectionAction(section.id)\"\n [customClass]=\"'cqa-py-[9px] cqa-text-[14px] cqa-leading-[17px] cqa-border-slate cqa-text-slate'\"\n >\n {{ section.actionButtonLabel }}\n </cqa-button>\n </div>\n </div>\n </div>\n </div>\n </div>\n \n <cqa-button\n variant=\"filled\"\n (clicked)=\"onMainAction()\"\n [disabled]=\"isApplying\"\n [customClass]=\"'!cqa-w-full !cqa-text-[14px] !cqa-leading-[20px] !cqa-font-semibold'\"\n >\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 {{ isApplying ? 'Applying suggestion' : 'Apply suggestion' }}\n </cqa-button>\n </div>\n</div>\n \n", components: [{ type: i1.BadgeComponent, selector: "cqa-badge", inputs: ["label", "icon", "variant", "backgroundColor", "textColor", "iconBackgroundColor", "iconColor"] }, { type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i3.ButtonComponent, selector: "cqa-button", inputs: ["variant", "disabled", "icon", "iconPosition", "fullWidth", "iconColor", "type", "text", "customClass"], outputs: ["clicked"] }], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i4.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }], pipes: { "keyvalue": i4.KeyValuePipe } });
167
167
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: InsightCardComponent, decorators: [{
168
168
  type: Component,
169
- args: [{ selector: 'cqa-insight-card', template: "<div id=\"cqa-ui-root\">\n <div class=\"cqa-font-inter cqa-flex cqa-flex-col cqa-gap-4 cqa-px-[21px] cqa-py-3 cqa-border cqa-border-[#ECECEC] cqa-rounded-xl cqa-shadow-card\">\n <!-- Section 1: Badges -->\n <div class=\"cqa-flex cqa-items-center cqa-gap-3 cqapy-[1.5]\" *ngIf=\"visibleBadges.length > 0\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M14.4866 12.0005L9.15329 2.66714C9.037 2.46194 8.86836 2.29127 8.66457 2.17252C8.46078 2.05378 8.22915 1.99121 7.99329 1.99121C7.75743 1.99121 7.52579 2.05378 7.322 2.17252C7.11822 2.29127 6.94958 2.46194 6.83329 2.66714L1.49995 12.0005C1.38241 12.204 1.32077 12.4351 1.32129 12.6701C1.32181 12.9052 1.38447 13.136 1.50292 13.339C1.62136 13.5421 1.79138 13.7102 1.99575 13.8264C2.20011 13.9425 2.43156 14.0026 2.66662 14.0005H13.3333C13.5672 14.0002 13.797 13.9385 13.9995 13.8213C14.202 13.7042 14.3701 13.5359 14.487 13.3332C14.6038 13.1306 14.6653 12.9007 14.6653 12.6668C14.6652 12.4329 14.6036 12.2031 14.4866 12.0005Z\" stroke=\"#E2AC20\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M8 6V8.66667\" stroke=\"#E2AC20\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M8 11.333H8.00667\" stroke=\"#E2AC20\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>\n <div class=\"cqa-flex cqa-flex-wrap cqa-gap-2\">\n <cqa-badge \n *ngFor=\"let badge of visibleBadges\" \n [label]=\"badge.label\"\n [icon]=\"badge.icon\"\n [variant]=\"badge.variant || 'default'\"\n ></cqa-badge>\n </div>\n </div>\n\n <!-- Section 2: Title & Description -->\n <div class=\"cqa-flex cqa-flex-col cqa-gap-3\">\n <h2 class=\"cqa-font-medium cqa-text-lg cqa-leading-[22px] cqa-text-title\">\n {{ title }}\n </h2>\n <p class=\"cqa-text-base cqa-font-normal cqa-text-description\">\n {{ description }}\n </p>\n </div>\n\n <!-- Section 3: Metadata Section (always visible) -->\n <div *ngIf=\"metadata\" class=\"cqa-flex cqa-flex-col cqa-gap-4\">\n <div class=\"cqa-bg-surface-default cqa-rounded-[10px] cqa-px-4 cqa-py-3 cqa-border-t cqa-border-t-primary-surface\">\n <div class=\"cqa-flex cqa-flex-wrap cqa-items-center cqa-gap-[25px]\">\n <ng-container *ngFor=\"let item of metadata | keyvalue; let last = last\">\n <div class=\"cqa-flex cqa-items-center cqa-gap-[6px]\">\n <span class=\"cqa-text-xs cqa-font-normal cqa-font-inter cqa-text-metadata-key\">\n {{ item.key }}:\n </span>\n <span \n [ngClass]=\"getMetadataValueClasses(item.key, item.value)\" \n [ngStyle]=\"getMetadataValueStyle(item.key, item.value)\"\n class=\"cqa-font-normal cqa-leading-[18px] cqa-font-inter cqa-text-sm cqa-text-title\">\n {{ getMetadataValue(item.value) }}\n </span>\n </div>\n <div *ngIf=\"!last\" class=\"cqa-h-4 cqa-w-px cqa-bg-gray-200\"></div>\n </ng-container>\n </div>\n </div>\n\n <!-- Section 4: Metadata toggle -->\n <button *ngIf=\"metadata && (isPrerequisiteMissing || isTestDataMissing)\" type=\"button\"\n class=\"cqa-text-sm cqa-text-primary cqa-inline-flex cqa-font-inter cqa-items-center cqa-gap-[6px]\"\n (click)=\"toggleMetadata()\">\n <span>{{ metadataExpanded ? 'Hide details' : 'Show details' }}</span>\n <mat-icon class=\"cqa-w-[14px] cqa-h-[14px] cqa-text-[14px] cqa-leading-[14px]\">\n {{ metadataExpanded ? 'expand_less' : 'expand_more' }}\n </mat-icon>\n </button>\n\n <!-- Section 5: Sections (toggle visibility) -->\n <div *ngIf=\"metadataExpanded && visibleSections?.length\" class=\"cqa-flex cqa-flex-col cqa-gap-4\">\n <div\n *ngFor=\"let section of visibleSections\"\n class=\"cqa-border-l-4 cqa-border-[#FBBF24] cqa-rounded-[10px] cqa-overflow-hidden\"\n [ngClass]=\"getSectionBorderClass(section)\"\n >\n <div class=\"cqa-p-[10px] cqa-pl-[20px] cqa-flex cqa-flex-col cqa-gap-3\">\n <!-- Section Title with Inline Collapse Button -->\n <div class=\"cqa-flex cqa-items-center cqa-gap-2\">\n <h3 [ngClass]=\"getSectionTitleClasses(section)\" class=\"\">\n {{ section.title }}\n </h3>\n <button\n type=\"button\"\n class=\"cqa-ml-auto cqa-inline-flex\"\n (click)=\"toggleSection(section)\"\n [attr.aria-label]=\"section.expanded !== false ? 'Collapse section' : 'Expand section'\"\n >\n <mat-icon [ngClass]=\"getSectionIconColor(section)\" class=\"cqa-w-4 cqa-h-4 cqa-text-[16px] cqa-leading-[16px]\">\n {{ section.expanded !== false ? 'expand_less' : 'expand_more' }}\n </mat-icon>\n </button>\n </div>\n\n <!-- Collapsible Content: Reason and Action Button -->\n <div *ngIf=\"section.expanded !== false\" class=\"cqa-flex cqa-flex-col cqa-gap-[10px]\">\n <!-- Reason -->\n <p class=\"cqa-text-sm cqa-font-normal cqa-leading-[18px] cqa-text-neutral-600\">\n Reason: {{ section.reason }}\n </p>\n \n <!-- Action Button -->\n <div>\n <cqa-button\n variant=\"outlined\"\n (clicked)=\"onSectionAction(section.id)\"\n [customClass]=\"'cqa-py-[9px] cqa-text-[14px] cqa-leading-[17px] cqa-border-slate cqa-text-slate'\"\n >\n {{ section.actionButtonLabel }}\n </cqa-button>\n </div>\n </div>\n </div>\n </div>\n </div>\n \n <cqa-button\n variant=\"filled\"\n (clicked)=\"onMainAction()\"\n [disabled]=\"isApplying\"\n [customClass]=\"'!cqa-w-full !cqa-text-[14px] !cqa-leading-[20px] !cqa-font-semibold'\"\n >\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 {{ isApplying ? 'Applying suggestion' : 'Apply suggestion' }}\n </cqa-button>\n </div>\n</div>\n \n", styles: [] }]
169
+ args: [{ selector: 'cqa-insight-card', template: "<div id=\"cqa-ui-root\">\n <div class=\"cqa-font-inter cqa-flex cqa-flex-col cqa-gap-4 cqa-px-[21px] cqa-py-3 cqa-border cqa-border-solid cqa-border-[#ECECEC] cqa-rounded-xl cqa-shadow-card\">\n <!-- Section 1: Badges -->\n <div class=\"cqa-flex cqa-items-center cqa-gap-3 cqa-py-[1.5]\" *ngIf=\"visibleBadges.length > 0\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M14.4866 12.0005L9.15329 2.66714C9.037 2.46194 8.86836 2.29127 8.66457 2.17252C8.46078 2.05378 8.22915 1.99121 7.99329 1.99121C7.75743 1.99121 7.52579 2.05378 7.322 2.17252C7.11822 2.29127 6.94958 2.46194 6.83329 2.66714L1.49995 12.0005C1.38241 12.204 1.32077 12.4351 1.32129 12.6701C1.32181 12.9052 1.38447 13.136 1.50292 13.339C1.62136 13.5421 1.79138 13.7102 1.99575 13.8264C2.20011 13.9425 2.43156 14.0026 2.66662 14.0005H13.3333C13.5672 14.0002 13.797 13.9385 13.9995 13.8213C14.202 13.7042 14.3701 13.5359 14.487 13.3332C14.6038 13.1306 14.6653 12.9007 14.6653 12.6668C14.6652 12.4329 14.6036 12.2031 14.4866 12.0005Z\" stroke=\"#E2AC20\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M8 6V8.66667\" stroke=\"#E2AC20\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M8 11.333H8.00667\" stroke=\"#E2AC20\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>\n <div class=\"cqa-flex cqa-flex-wrap cqa-gap-2\">\n <cqa-badge \n *ngFor=\"let badge of visibleBadges\" \n [label]=\"badge.label\"\n [icon]=\"badge.icon\"\n [variant]=\"badge.variant || 'default'\"\n ></cqa-badge>\n </div>\n </div>\n\n <!-- Section 2: Title & Description -->\n <div class=\"cqa-flex cqa-flex-col cqa-gap-3\">\n <h2 class=\"cqa-font-medium cqa-text-lg cqa-leading-[22px] cqa-text-title\">\n {{ title }}\n </h2>\n <p class=\"cqa-text-base cqa-font-normal cqa-text-description\">\n {{ description }}\n </p>\n </div>\n\n <!-- Section 3: Metadata Section (always visible) -->\n <div *ngIf=\"metadata\" class=\"cqa-flex cqa-flex-col cqa-gap-4\">\n <div class=\"cqa-bg-surface-default cqa-rounded-[10px] cqa-px-4 cqa-py-3 cqa-border-t cqa-border-solid cqa-border-t-primary-surface\">\n <div class=\"cqa-flex cqa-flex-wrap cqa-items-center cqa-gap-[25px]\">\n <ng-container *ngFor=\"let item of metadata | keyvalue; let last = last\">\n <div class=\"cqa-flex cqa-items-center cqa-gap-[6px]\">\n <span class=\"cqa-text-xs cqa-font-normal cqa-font-inter cqa-text-metadata-key\">\n {{ item.key }}:\n </span>\n <span \n [ngClass]=\"getMetadataValueClasses(item.key, item.value)\" \n [ngStyle]=\"getMetadataValueStyle(item.key, item.value)\"\n class=\"cqa-font-normal cqa-leading-[18px] cqa-font-inter cqa-text-sm cqa-text-title\">\n {{ getMetadataValue(item.value) }}\n </span>\n </div>\n <div *ngIf=\"!last\" class=\"cqa-h-4 cqa-w-px cqa-bg-gray-200\"></div>\n </ng-container>\n </div>\n </div>\n\n <!-- Section 4: Metadata toggle -->\n <button *ngIf=\"metadata && (isPrerequisiteMissing || isTestDataMissing)\" type=\"button\"\n class=\"cqa-text-sm cqa-text-primary cqa-inline-flex cqa-font-inter cqa-items-center cqa-gap-[6px]\"\n (click)=\"toggleMetadata()\">\n <span>{{ metadataExpanded ? 'Hide details' : 'Show details' }}</span>\n <mat-icon class=\"cqa-w-[14px] cqa-h-[14px] cqa-text-[14px] cqa-leading-[14px]\">\n {{ metadataExpanded ? 'expand_less' : 'expand_more' }}\n </mat-icon>\n </button>\n\n <!-- Section 5: Sections (toggle visibility) -->\n <div *ngIf=\"metadataExpanded && visibleSections?.length\" class=\"cqa-flex cqa-flex-col cqa-gap-4\">\n <div\n *ngFor=\"let section of visibleSections\"\n class=\"cqa-border-l-4 cqa-border-solid cqa-border-[#FBBF24] cqa-rounded-[10px] cqa-overflow-hidden\"\n [ngClass]=\"getSectionBorderClass(section)\"\n >\n <div class=\"cqa-p-[10px] cqa-pl-[20px] cqa-flex cqa-flex-col cqa-gap-3\">\n <!-- Section Title with Inline Collapse Button -->\n <div class=\"cqa-flex cqa-items-center cqa-gap-2\">\n <h3 [ngClass]=\"getSectionTitleClasses(section)\" class=\"\">\n {{ section.title }}\n </h3>\n <button\n type=\"button\"\n class=\"cqa-ml-auto cqa-inline-flex\"\n (click)=\"toggleSection(section)\"\n [attr.aria-label]=\"section.expanded !== false ? 'Collapse section' : 'Expand section'\"\n >\n <mat-icon [ngClass]=\"getSectionIconColor(section)\" class=\"cqa-w-4 cqa-h-4 cqa-text-[16px] cqa-leading-[16px]\">\n {{ section.expanded !== false ? 'expand_less' : 'expand_more' }}\n </mat-icon>\n </button>\n </div>\n\n <!-- Collapsible Content: Reason and Action Button -->\n <div *ngIf=\"section.expanded !== false\" class=\"cqa-flex cqa-flex-col cqa-gap-[10px]\">\n <!-- Reason -->\n <p class=\"cqa-text-sm cqa-font-normal cqa-leading-[18px] cqa-text-neutral-600\">\n Reason: {{ section.reason }}\n </p>\n \n <!-- Action Button -->\n <div>\n <cqa-button\n variant=\"outlined\"\n (clicked)=\"onSectionAction(section.id)\"\n [customClass]=\"'cqa-py-[9px] cqa-text-[14px] cqa-leading-[17px] cqa-border-slate cqa-text-slate'\"\n >\n {{ section.actionButtonLabel }}\n </cqa-button>\n </div>\n </div>\n </div>\n </div>\n </div>\n \n <cqa-button\n variant=\"filled\"\n (clicked)=\"onMainAction()\"\n [disabled]=\"isApplying\"\n [customClass]=\"'!cqa-w-full !cqa-text-[14px] !cqa-leading-[20px] !cqa-font-semibold'\"\n >\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 {{ isApplying ? 'Applying suggestion' : 'Apply suggestion' }}\n </cqa-button>\n </div>\n</div>\n \n", styles: [] }]
170
170
  }], propDecorators: { title: [{
171
171
  type: Input
172
172
  }], description: [{
@@ -198,4 +198,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImpor
198
198
  }], onImportTestDataClick: [{
199
199
  type: Output
200
200
  }] } });
201
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5zaWdodC1jYXJkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvZGFzaGJvYXJkcy9pbnNpZ2h0LWNhcmQvaW5zaWdodC1jYXJkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvZGFzaGJvYXJkcy9pbnNpZ2h0LWNhcmQvaW5zaWdodC1jYXJkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkUsT0FBTyxFQUFFLHFCQUFxQixJQUFJLHFCQUFxQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7Ozs7OztBQXdCbEcsTUFBTSxPQUFPLG9CQUFvQjtJQUxqQztRQU1XLFVBQUssR0FBVyxFQUFFLENBQUM7UUFDbkIsZ0JBQVcsR0FBVyxFQUFFLENBQUM7UUFDMUIsWUFBTyxHQUFtQixFQUFFLENBQUM7UUFXNUIscUJBQWdCLEdBQVksSUFBSSxDQUFDO1FBQ2pDLDBCQUFxQixHQUFZLEtBQUssQ0FBQztRQUN2QyxzQkFBaUIsR0FBWSxLQUFLLENBQUM7UUFFNUMsb0NBQW9DO1FBQzVCLHlCQUFvQixHQUF5QixJQUFJLEdBQUcsRUFBRSxDQUFDO1FBRS9ELGdDQUFnQztRQUNoQyxlQUFVLEdBQVksS0FBSyxDQUFDO1FBRWxCLG1CQUFjLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQztRQUM3QyxrQkFBYSxHQUFHLElBQUksWUFBWSxFQUFxQyxDQUFDO1FBQ3RFLHVCQUFrQixHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7UUFDaEQsMkJBQXNCLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUNsRCwrQkFBMEIsR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBQ3RELDBCQUFxQixHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7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LENBQUM7U0FDOUI7SUFDSCxDQUFDOztpSEF2TFUsb0JBQW9CO3FHQUFwQixvQkFBb0IsMm5CQ3pCakMsaXVYQW1IQTsyRkQxRmEsb0JBQW9CO2tCQUxoQyxTQUFTOytCQUNFLGtCQUFrQjs4QkFLbkIsS0FBSztzQkFBYixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBR0YsTUFBTTtzQkFEVCxLQUFLO2dCQU9HLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csbUJBQW1CO3NCQUEzQixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNHLHFCQUFxQjtzQkFBN0IsS0FBSztnQkFDRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBUUksY0FBYztzQkFBdkIsTUFBTTtnQkFDRyxhQUFhO3NCQUF0QixNQUFNO2dCQUNHLGtCQUFrQjtzQkFBM0IsTUFBTTtnQkFDRyxzQkFBc0I7c0JBQS9CLE1BQU07Z0JBQ0csMEJBQTBCO3NCQUFuQyxNQUFNO2dCQUNHLHFCQUFxQjtzQkFBOUIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBnZXRNZXRhZGF0YVZhbHVlU3R5bGUgYXMgZ2V0TWV0YWRhdGFDb2xvclN0eWxlIH0gZnJvbSAnLi4vLi4vdXRpbHMvbWV0YWRhdGEtY29sb3JzLnV0aWwnO1xuaW1wb3J0IHsgQmFkZ2VDb21wb25lbnQgfSBmcm9tICcuLi8uLi9iYWRnZS9iYWRnZS5jb21wb25lbnQnO1xuXG4vLyBVc2UgQmFkZ2VDb21wb25lbnQgaW5wdXRzIGRpcmVjdGx5IGluc3RlYWQgb2YgYSBzZXBhcmF0ZSBpbnRlcmZhY2VcbmV4cG9ydCB0eXBlIEluc2lnaHRCYWRnZSA9IFBpY2s8QmFkZ2VDb21wb25lbnQsICdsYWJlbCcgfCAnaWNvbicgfCAndmFyaWFudCc+O1xuXG5leHBvcnQgaW50ZXJmYWNlIEluc2lnaHRNZXRhZGF0YSB7XG4gIFtrZXk6IHN0cmluZ106IHN0cmluZyB8IHsgbGFiZWw6IHN0cmluZzsgdmFsdWU6IHN0cmluZzsgaGlnaGxpZ2h0PzogYm9vbGVhbiB9O1xufVxuXG5pbnRlcmZhY2UgSW50ZXJuYWxJbnNpZ2h0U2VjdGlvbiB7XG4gIGlkOiBzdHJpbmc7XG4gIHRpdGxlOiBzdHJpbmc7XG4gIHZhcmlhbnQ6ICd3YXJuaW5nJyB8ICdlcnJvcicgfCAnZGVmYXVsdCc7XG4gIHJlYXNvbjogc3RyaW5nO1xuICBhY3Rpb25CdXR0b25MYWJlbDogc3RyaW5nO1xuICBleHBhbmRlZD86IGJvb2xlYW47XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2NxYS1pbnNpZ2h0LWNhcmQnLFxuICB0ZW1wbGF0ZVVybDogJy4vaW5zaWdodC1jYXJkLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbXVxufSlcbmV4cG9ydCBjbGFzcyBJbnNpZ2h0Q2FyZENvbXBvbmVudCB7XG4gIEBJbnB1dCgpIHRpdGxlOiBzdHJpbmcgPSAnJztcbiAgQElucHV0KCkgZGVzY3JpcHRpb246IHN0cmluZyA9ICcnO1xuICBwcml2YXRlIF9iYWRnZXM6IEluc2lnaHRCYWRnZVtdID0gW107XG4gIEBJbnB1dCgpXG4gIHNldCBiYWRnZXModmFsdWU6IEluc2lnaHRCYWRnZVtdKSB7XG4gICAgdGhpcy5fYmFkZ2VzID0gdmFsdWU7XG4gIH1cbiAgZ2V0IGJhZGdlcygpOiBJbnNpZ2h0QmFkZ2VbXSB7XG4gICAgcmV0dXJuIHRoaXMuX2JhZGdlcztcbiAgfVxuICBASW5wdXQoKSBtZXRhZGF0YT86IEluc2lnaHRNZXRhZGF0YTtcbiAgQElucHV0KCkgcHJlcmVxdWlzaXRlU2VjdGlvbj86IHN0cmluZztcbiAgQElucHV0KCkgdGVzdERhdGFTZWN0aW9uPzogc3RyaW5nO1xuICBASW5wdXQoKSBtZXRhZGF0YUV4cGFuZGVkOiBib29sZWFuID0gdHJ1ZTtcbiAgQElucHV0KCkgaXNQcmVyZXF1aXNpdGVNaXNzaW5nOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIGlzVGVzdERhdGFNaXNzaW5nOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLy8gVHJhY2sgZXhwYW5kZWQgc3RhdGUgZm9yIHNlY3Rpb25zXG4gIHByaXZhdGUgc2VjdGlvbkV4cGFuZGVkU3RhdGU6IE1hcDxzdHJpbmcsIGJvb2xlYW4+ID0gbmV3IE1hcCgpO1xuICBcbiAgLy8gTG9hZGluZyBzdGF0ZSBmb3IgbWFpbiBhY3Rpb25cbiAgaXNBcHBseWluZzogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIEBPdXRwdXQoKSBtZXRhZGF0YVRvZ2dsZSA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcbiAgQE91dHB1dCgpIHNlY3Rpb25Ub2dnbGUgPSBuZXcgRXZlbnRFbWl0dGVyPHsgaWQ6IHN0cmluZzsgZXhwYW5kZWQ6IGJvb2xlYW4gfT4oKTtcbiAgQE91dHB1dCgpIHNlY3Rpb25BY3Rpb25DbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuICBAT3V0cHV0KCkgb25BcHBseVN1Z2dlc3Rpb25DbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgQE91dHB1dCgpIG9uQXR0YWNoUHJlcmVxdWlzaXRlc0NsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICBAT3V0cHV0KCkgb25JbXBvcnRUZXN0RGF0YUNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gIHRvZ2dsZU1ldGFkYXRhKCk6IHZvaWQge1xuICAgIHRoaXMubWV0YWRhdGFFeHBhbmRlZCA9ICF0aGlzLm1ldGFkYXRhRXhwYW5kZWQ7XG4gICAgdGhpcy5tZXRhZGF0YVRvZ2dsZS5lbWl0KHRoaXMubWV0YWRhdGFFeHBhbmRlZCk7XG4gIH1cblxuICB0b2dnbGVTZWN0aW9uKHNlY3Rpb246IEludGVybmFsSW5zaWdodFNlY3Rpb24pOiB2b2lkIHtcbiAgICBjb25zdCBjdXJyZW50U3RhdGUgPSB0aGlzLnNlY3Rpb25FeHBhbmRlZFN0YXRlLmdldChzZWN0aW9uLmlkKSA/PyAoc2VjdGlvbi5leHBhbmRlZCA/PyB0cnVlKTtcbiAgICBjb25zdCBuZXdTdGF0ZSA9ICFjdXJyZW50U3RhdGU7XG4gICAgdGhpcy5zZWN0aW9uRXhwYW5kZWRTdGF0ZS5zZXQoc2VjdGlvbi5pZCwgbmV3U3RhdGUpO1xuICAgIFxuICAgIHRoaXMuc2VjdGlvblRvZ2dsZS5lbWl0KHsgaWQ6IHNlY3Rpb24uaWQsIGV4cGFuZGVkOiBuZXdTdGF0ZSB9KTtcbiAgfVxuXG4gIG9uU2VjdGlvbkFjdGlvbihzZWN0aW9uSWQ6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuc2VjdGlvbkFjdGlvbkNsaWNrLmVtaXQoc2VjdGlvbklkKTtcbiAgICBcbiAgICAvLyBFbWl0IHNwZWNpZmljIGV2ZW50cyBmb3Iga25vd24gYWN0aW9uc1xuICAgIGlmIChzZWN0aW9uSWQgPT09ICdwcmVyZXF1aXNpdGUnKSB7XG4gICAgICB0aGlzLm9uQXR0YWNoUHJlcmVxdWlzaXRlc0NsaWNrLmVtaXQoKTtcbiAgICB9IGVsc2UgaWYgKHNlY3Rpb25JZCA9PT0gJ3Rlc3QtZGF0YScpIHtcbiAgICAgIHRoaXMub25JbXBvcnRUZXN0RGF0YUNsaWNrLmVtaXQoKTtcbiAgICB9XG4gIH1cblxuICBnZXQgdmlzaWJsZUJhZGdlcygpOiBJbnNpZ2h0QmFkZ2VbXSB7XG4gICAgY29uc3QgdmlzaWJsZTogSW5zaWdodEJhZGdlW10gPSBbXTtcbiAgICBpZiAodGhpcy5pc1ByZXJlcXVpc2l0ZU1pc3NpbmcpIHtcbiAgICAgIHZpc2libGUucHVzaCh7IGxhYmVsOiAnUHJlcmVxdWlzaXRlIE1pc3NpbmcnLCB2YXJpYW50OiAnd2FybmluZycgfSk7XG4gICAgfVxuICAgIGlmICh0aGlzLmlzVGVzdERhdGFNaXNzaW5nKSB7XG4gICAgICB2aXNpYmxlLnB1c2goeyBsYWJlbDogJ1Rlc3QgRGF0YSBNaXNzaW5nJywgdmFyaWFudDogJ2Vycm9yJyB9KTtcbiAgICB9XG4gICAgLy8gQWxzbyBpbmNsdWRlIGFueSBjdXN0b20gYmFkZ2VzXG4gICAgaWYgKHRoaXMuYmFkZ2VzKSB7XG4gICAgICB2aXNpYmxlLnB1c2goLi4udGhpcy5iYWRnZXMpO1xuICAgIH1cbiAgICByZXR1cm4gdmlzaWJsZTtcbiAgfVxuXG4gIGdldCB2aXNpYmxlU2VjdGlvbnMoKTogSW50ZXJuYWxJbnNpZ2h0U2VjdGlvbltdIHtcbiAgICBjb25zdCB2aXNpYmxlOiBJbnRlcm5hbEluc2lnaHRTZWN0aW9uW10gPSBbXTtcbiAgICBcbiAgICBpZiAodGhpcy5pc1ByZXJlcXVpc2l0ZU1pc3NpbmcgJiYgdGhpcy5wcmVyZXF1aXNpdGVTZWN0aW9uKSB7XG4gICAgICAvLyBVc2Ugc3RvcmVkIHN0YXRlIGlmIGF2YWlsYWJsZSwgb3RoZXJ3aXNlIGRlZmF1bHQgdG8gdHJ1ZVxuICAgICAgY29uc3QgZXhwYW5kZWQgPSB0aGlzLnNlY3Rpb25FeHBhbmRlZFN0YXRlLmhhcygncHJlcmVxdWlzaXRlJykgXG4gICAgICAgID8gdGhpcy5zZWN0aW9uRXhwYW5kZWRTdGF0ZS5nZXQoJ3ByZXJlcXVpc2l0ZScpIVxuICAgICAgICA6IHRydWU7XG4gICAgICBcbiAgICAgIHZpc2libGUucHVzaCh7XG4gICAgICAgIGlkOiAncHJlcmVxdWlzaXRlJyxcbiAgICAgICAgdGl0bGU6ICdQcmVyZXF1aXNpdGUgTWlzc2luZycsXG4gICAgICAgIHZhcmlhbnQ6ICd3YXJuaW5nJyxcbiAgICAgICAgcmVhc29uOiB0aGlzLnByZXJlcXVpc2l0ZVNlY3Rpb24sXG4gICAgICAgIGFjdGlvbkJ1dHRvbkxhYmVsOiAnQXR0YWNoIFByZXJlcXVpc2l0ZXMnLFxuICAgICAgICBleHBhbmRlZDogZXhwYW5kZWQsXG4gICAgICB9KTtcbiAgICB9XG4gICAgXG4gICAgaWYgKHRoaXMuaXNUZXN0RGF0YU1pc3NpbmcgJiYgdGhpcy50ZXN0RGF0YVNlY3Rpb24pIHtcbiAgICAgIC8vIFVzZSBzdG9yZWQgc3RhdGUgaWYgYXZhaWxhYmxlLCBvdGhlcndpc2UgZGVmYXVsdCB0byB0cnVlXG4gICAgICBjb25zdCBleHBhbmRlZCA9IHRoaXMuc2VjdGlvbkV4cGFuZGVkU3RhdGUuaGFzKCd0ZXN0LWRhdGEnKVxuICAgICAgICA/IHRoaXMuc2VjdGlvbkV4cGFuZGVkU3RhdGUuZ2V0KCd0ZXN0LWRhdGEnKSFcbiAgICAgICAgOiB0cnVlO1xuICAgICAgXG4gICAgICB2aXNpYmxlLnB1c2goe1xuICAgICAgICBpZDogJ3Rlc3QtZGF0YScsXG4gICAgICAgIHRpdGxlOiAnVGVzdCBEYXRhIE1pc3NpbmcnLFxuICAgICAgICB2YXJpYW50OiAnZXJyb3InLFxuICAgICAgICByZWFzb246IHRoaXMudGVzdERhdGFTZWN0aW9uLFxuICAgICAgICBhY3Rpb25CdXR0b25MYWJlbDogJ0ltcG9ydCBUZXN0IERhdGEnLFxuICAgICAgICBleHBhbmRlZDogZXhwYW5kZWQsXG4gICAgICB9KTtcbiAgICB9XG4gICAgXG4gICAgcmV0dXJuIHZpc2libGU7XG4gIH1cblxuICBhc3luYyBvbk1haW5BY3Rpb24oKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKHRoaXMuaXNBcHBseWluZykge1xuICAgICAgcmV0dXJuOyAvLyBQcmV2ZW50IG11bHRpcGxlIGNsaWNrc1xuICAgIH1cbiAgICBcbiAgICB0aGlzLmlzQXBwbHlpbmcgPSB0cnVlO1xuICAgIFxuICAgIHRyeSB7XG4gICAgICB0aGlzLm9uQXBwbHlTdWdnZXN0aW9uQ2xpY2suZW1pdCgpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICAvLyBSZXNldCBsb2FkaW5nIHN0YXRlIGFmdGVyIGFjdGlvbiBjb21wbGV0ZXNcbiAgICAgIC8vIElmIHlvdSBuZWVkIHRvIGtlZXAgdGhlIGxvYWRpbmcgc3RhdGUgbG9uZ2VyLCBjYWxsIHJlc2V0QXBwbHlpbmdTdGF0ZSgpIG1hbnVhbGx5XG4gICAgICAvLyBhZnRlciB5b3VyIGFzeW5jIG9wZXJhdGlvbiBjb21wbGV0ZXNcbiAgICAgIHRoaXMuaXNBcHBseWluZyA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIC8vIE1ldGhvZCB0byByZXNldCBsb2FkaW5nIHN0YXRlIChjYW4gYmUgY2FsbGVkIGV4dGVybmFsbHkgaWYgbmVlZGVkKVxuICByZXNldEFwcGx5aW5nU3RhdGUoKTogdm9pZCB7XG4gICAgdGhpcy5pc0FwcGx5aW5nID0gZmFsc2U7XG4gIH1cblxuICAvLyBSZW1vdmVkIGdldEJhZGdlQ2xhc3NlcyAtIG5vdyB1c2luZyBCYWRnZUNvbXBvbmVudFxuXG4gIGdldFNlY3Rpb25Cb3JkZXJDbGFzcyhzZWN0aW9uOiBJbnRlcm5hbEluc2lnaHRTZWN0aW9uKTogc3RyaW5nIHtcbiAgICBzd2l0Y2ggKHNlY3Rpb24udmFyaWFudCkge1xuICAgICAgY2FzZSAnd2FybmluZyc6XG4gICAgICAgIHJldHVybiAnY3FhLWJvcmRlci1sLTQgY3FhLWJvcmRlci1sLXllbGxvdy01MDAnO1xuICAgICAgY2FzZSAnZXJyb3InOlxuICAgICAgICByZXR1cm4gJ2NxYS1ib3JkZXItbC00IGNxYS1ib3JkZXItbC1yZWQtNTAwJztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiAnY3FhLWJvcmRlci1sLTQgY3FhLWJvcmRlci1sLWdyYXktNTAwJztcbiAgICB9XG4gIH1cblxuICBnZXRNZXRhZGF0YVZhbHVlQ2xhc3NlcyhrZXk6IHN0cmluZywgdmFsdWU6IHN0cmluZyB8IHsgbGFiZWw6IHN0cmluZzsgdmFsdWU6IHN0cmluZzsgaGlnaGxpZ2h0PzogYm9vbGVhbiB9KTogc3RyaW5nIHtcbiAgICAvLyBCYXNlIGNsYXNzZXMgZm9yIGFsbCB2YWx1ZXMgKGZvbnQtc2l6ZTogMTRweCwgbGluZS1oZWlnaHQ6IDE4cHgsIGZvbnQtd2VpZ2h0OiA0MDApXG4gICAgcmV0dXJuICdjcWEtZm9udC1ub3JtYWwgY3FhLWxlYWRpbmctWzE4cHhdIGNxYS10cmFja2luZy1ub3JtYWwnO1xuICB9XG5cbiAgZ2V0TWV0YWRhdGFWYWx1ZSh2YWx1ZTogc3RyaW5nIHwgeyBsYWJlbDogc3RyaW5nOyB2YWx1ZTogc3RyaW5nOyBoaWdobGlnaHQ/OiBib29sZWFuIH0pOiBzdHJpbmcge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuICAgIHJldHVybiB2YWx1ZS52YWx1ZTtcbiAgfVxuXG4gIGdldE1ldGFkYXRhVmFsdWVTdHlsZShrZXk6IHN0cmluZywgdmFsdWU6IHN0cmluZyB8IHsgbGFiZWw6IHN0cmluZzsgdmFsdWU6IHN0cmluZzsgaGlnaGxpZ2h0PzogYm9vbGVhbiB9KTogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSB7XG4gICAgLy8gVXNlIHRoZSBzaGFyZWQgdXRpbGl0eSBmdW5jdGlvbiBmb3IgY29uc2lzdGVudCBjb2xvcnNcbiAgICByZXR1cm4gZ2V0TWV0YWRhdGFDb2xvclN0eWxlKGtleSwgdmFsdWUpO1xuICB9XG5cbiAgZ2V0U2VjdGlvblRpdGxlQ2xhc3NlcyhzZWN0aW9uOiBJbnRlcm5hbEluc2lnaHRTZWN0aW9uKTogc3RyaW5nIHtcbiAgICBjb25zdCBiYXNlQ2xhc3NlcyA9IFsnY3FhLXRleHQtc20nLCAnY3FhLWxlYWRpbmctWzE3cHhdJywgJ2NxYS1mb250LXNlbWlib2xkJ107XG4gICAgXG4gICAgc3dpdGNoIChzZWN0aW9uLnZhcmlhbnQpIHtcbiAgICAgIGNhc2UgJ3dhcm5pbmcnOlxuICAgICAgICByZXR1cm4gWy4uLmJhc2VDbGFzc2VzLCAnY3FhLXRleHQtWyM3ODM1MEZdJ10uam9pbignICcpO1xuICAgICAgY2FzZSAnZXJyb3InOlxuICAgICAgICByZXR1cm4gWy4uLmJhc2VDbGFzc2VzLCAnY3FhLXRleHQtWyM4ODEzMzddJ10uam9pbignICcpO1xuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gWy4uLmJhc2VDbGFzc2VzLCAnY3FhLXRleHQtaW5rJ10uam9pbignICcpO1xuICAgIH1cbiAgfVxuXG4gIGdldFNlY3Rpb25JY29uQ29sb3Ioc2VjdGlvbjogSW50ZXJuYWxJbnNpZ2h0U2VjdGlvbik6IHN0cmluZyB7XG4gICAgc3dpdGNoIChzZWN0aW9uLnZhcmlhbnQpIHtcbiAgICAgIGNhc2UgJ3dhcm5pbmcnOlxuICAgICAgICByZXR1cm4gJ2NxYS10ZXh0LVsjNzgzNTBGXSc7XG4gICAgICBjYXNlICdlcnJvcic6XG4gICAgICAgIHJldHVybiAnY3FhLXRleHQtWyM4ODEzMzddJztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiAnY3FhLXRleHQtZ3JheS00MDAnO1xuICAgIH1cbiAgfVxufVxuXG5cbiIsIjxkaXYgaWQ9XCJjcWEtdWktcm9vdFwiPlxuICA8ZGl2IGNsYXNzPVwiY3FhLWZvbnQtaW50ZXIgY3FhLWZsZXggY3FhLWZsZXgtY29sIGNxYS1nYXAtNCBjcWEtcHgtWzIxcHhdIGNxYS1weS0zIGNxYS1ib3JkZXIgY3FhLWJvcmRlci1bI0VDRUNFQ10gY3FhLXJvdW5kZWQteGwgY3FhLXNoYWRvdy1jYXJkXCI+XG4gICAgPCEtLSBTZWN0aW9uIDE6IEJhZGdlcyAtLT5cbiAgICA8ZGl2IGNsYXNzPVwiY3FhLWZsZXggY3FhLWl0ZW1zLWNlbnRlciBjcWEtZ2FwLTMgY3FhcHktWzEuNV1cIiAqbmdJZj1cInZpc2libGVCYWRnZXMubGVuZ3RoID4gMFwiPlxuICAgICAgPHN2ZyB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIiB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+PHBhdGggZD1cIk0xNC40ODY2IDEyLjAwMDVMOS4xNTMyOSAyLjY2NzE0QzkuMDM3IDIuNDYxOTQgOC44NjgzNiAyLjI5MTI3IDguNjY0NTcgMi4xNzI1MkM4LjQ2MDc4IDIuMDUzNzggOC4yMjkxNSAxLjk5MTIxIDcuOTkzMjkgMS45OTEyMUM3Ljc1NzQzIDEuOTkxMjEgNy41MjU3OSAyLjA1Mzc4IDcuMzIyIDIuMTcyNTJDNy4xMTgyMiAyLjI5MTI3IDYuOTQ5NTggMi40NjE5NCA2LjgzMzI5IDIuNjY3MTRMMS40OTk5NSAxMi4wMDA1QzEuMzgyNDEgMTIuMjA0IDEuMzIwNzcgMTIuNDM1MSAxLjMyMTI5IDEyLjY3MDFDMS4zMjE4MSAxMi45MDUyIDEuMzg0NDcgMTMuMTM2IDEuNTAyOTIgMTMuMzM5QzEuNjIxMzYgMTMuNTQyMSAxLjc5MTM4IDEzLjcxMDIgMS45OTU3NSAxMy44MjY0QzIuMjAwMTEgMTMuOTQyNSAyLjQzMTU2IDE0LjAwMjYgMi42NjY2MiAxNC4wMDA1SDEzLjMzMzNDMTMuNTY3MiAxNC4wMDAyIDEzLjc5NyAxMy45Mzg1IDEzLjk5OTUgMTMuODIxM0MxNC4yMDIgMTMuNzA0MiAxNC4zNzAxIDEzLjUzNTkgMTQuNDg3IDEzLjMzMzJDMTQuNjAzOCAxMy4xMzA2IDE0LjY2NTMgMTIuOTAwNyAxNC42NjUzIDEyLjY2NjhDMTQuNjY1MiAxMi40MzI5IDE0LjYwMzYgMTIuMjAzMSAxNC40ODY2IDEyLjAwMDVaXCIgc3Ryb2tlPVwiI0UyQUMyMFwiIHN0cm9rZS13aWR0aD1cIjEuMzMzMzNcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+PHBhdGggZD1cIk04IDZWOC42NjY2N1wiIHN0cm9rZT1cIiNFMkFDMjBcIiBzdHJva2Utd2lkdGg9XCIxLjMzMzMzXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPjxwYXRoIGQ9XCJNOCAxMS4zMzNIOC4wMDY2N1wiIHN0cm9rZT1cIiNFMkFDMjBcIiBzdHJva2Utd2lkdGg9XCIxLjMzMzMzXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPjwvc3ZnPlxuICAgICAgPGRpdiBjbGFzcz1cImNxYS1mbGV4IGNxYS1mbGV4LXdyYXAgY3FhLWdhcC0yXCI+XG4gICAgICAgIDxjcWEtYmFkZ2UgXG4gICAgICAgICAgKm5nRm9yPVwibGV0IGJhZGdlIG9mIHZpc2libGVCYWRnZXNcIiBcbiAgICAgICAgICBbbGFiZWxdPVwiYmFkZ2UubGFiZWxcIlxuICAgICAgICAgIFtpY29uXT1cImJhZGdlLmljb25cIlxuICAgICAgICAgIFt2YXJpYW50XT1cImJhZGdlLnZhcmlhbnQgfHwgJ2RlZmF1bHQnXCJcbiAgICAgICAgPjwvY3FhLWJhZGdlPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8IS0tIFNlY3Rpb24gMjogVGl0bGUgJiBEZXNjcmlwdGlvbiAtLT5cbiAgICA8ZGl2IGNsYXNzPVwiY3FhLWZsZXggY3FhLWZsZXgtY29sIGNxYS1nYXAtM1wiPlxuICAgICAgPGgyIGNsYXNzPVwiY3FhLWZvbnQtbWVkaXVtIGNxYS10ZXh0LWxnIGNxYS1sZWFkaW5nLVsyMnB4XSBjcWEtdGV4dC10aXRsZVwiPlxuICAgICAgICB7eyB0aXRsZSB9fVxuICAgICAgPC9oMj5cbiAgICAgIDxwIGNsYXNzPVwiY3FhLXRleHQtYmFzZSBjcWEtZm9udC1ub3JtYWwgY3FhLXRleHQtZGVzY3JpcHRpb25cIj5cbiAgICAgICAge3sgZGVzY3JpcHRpb24gfX1cbiAgICAgIDwvcD5cbiAgICA8L2Rpdj5cblxuICA8IS0tIFNlY3Rpb24gMzogTWV0YWRhdGEgU2VjdGlvbiAoYWx3YXlzIHZpc2libGUpIC0tPlxuICA8ZGl2ICpuZ0lmPVwibWV0YWRhdGFcIiBjbGFzcz1cImNxYS1mbGV4IGNxYS1mbGV4LWNvbCBjcWEtZ2FwLTRcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY3FhLWJnLXN1cmZhY2UtZGVmYXVsdCBjcWEtcm91bmRlZC1bMTBweF0gY3FhLXB4LTQgY3FhLXB5LTMgY3FhLWJvcmRlci10IGNxYS1ib3JkZXItdC1wcmltYXJ5LXN1cmZhY2VcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtZmxleC13cmFwIGNxYS1pdGVtcy1jZW50ZXIgY3FhLWdhcC1bMjVweF1cIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaXRlbSBvZiBtZXRhZGF0YSB8IGtleXZhbHVlOyBsZXQgbGFzdCA9IGxhc3RcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3FhLWZsZXggY3FhLWl0ZW1zLWNlbnRlciBjcWEtZ2FwLVs2cHhdXCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNxYS10ZXh0LXhzIGNxYS1mb250LW5vcm1hbCBjcWEtZm9udC1pbnRlciBjcWEtdGV4dC1tZXRhZGF0YS1rZXlcIj5cbiAgICAgICAgICAgICAge3sgaXRlbS5rZXkgfX06XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8c3BhbiBcbiAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiZ2V0TWV0YWRhdGFWYWx1ZUNsYXNzZXMoaXRlbS5rZXksIGl0ZW0udmFsdWUpXCIgXG4gICAgICAgICAgICAgIFtuZ1N0eWxlXT1cImdldE1ldGFkYXRhVmFsdWVTdHlsZShpdGVtLmtleSwgaXRlbS52YWx1ZSlcIlxuICAgICAgICAgICAgICBjbGFzcz1cImNxYS1mb250LW5vcm1hbCBjcWEtbGVhZGluZy1bMThweF0gY3FhLWZvbnQtaW50ZXIgY3FhLXRleHQtc20gY3FhLXRleHQtdGl0bGVcIj5cbiAgICAgICAgICAgICAge3sgZ2V0TWV0YWRhdGFWYWx1ZShpdGVtLnZhbHVlKSB9fVxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgKm5nSWY9XCIhbGFzdFwiIGNsYXNzPVwiY3FhLWgtNCBjcWEtdy1weCBjcWEtYmctZ3JheS0yMDBcIj48L2Rpdj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDwhLS0gU2VjdGlvbiA0OiBNZXRhZGF0YSB0b2dnbGUgLS0+XG4gICAgPGJ1dHRvbiAqbmdJZj1cIm1ldGFkYXRhICYmIChpc1ByZXJlcXVpc2l0ZU1pc3NpbmcgfHwgaXNUZXN0RGF0YU1pc3NpbmcpXCIgdHlwZT1cImJ1dHRvblwiXG4gICAgICBjbGFzcz1cImNxYS10ZXh0LXNtIGNxYS10ZXh0LXByaW1hcnkgY3FhLWlubGluZS1mbGV4IGNxYS1mb250LWludGVyIGNxYS1pdGVtcy1jZW50ZXIgY3FhLWdhcC1bNnB4XVwiXG4gICAgICAoY2xpY2spPVwidG9nZ2xlTWV0YWRhdGEoKVwiPlxuICAgICAgPHNwYW4+e3sgbWV0YWRhdGFFeHBhbmRlZCA/ICdIaWRlIGRldGFpbHMnIDogJ1Nob3cgZGV0YWlscycgfX08L3NwYW4+XG4gICAgICA8bWF0LWljb24gY2xhc3M9XCJjcWEtdy1bMTRweF0gY3FhLWgtWzE0cHhdIGNxYS10ZXh0LVsxNHB4XSBjcWEtbGVhZGluZy1bMTRweF1cIj5cbiAgICAgICAge3sgbWV0YWRhdGFFeHBhbmRlZCA/ICdleHBhbmRfbGVzcycgOiAnZXhwYW5kX21vcmUnIH19XG4gICAgICA8L21hdC1pY29uPlxuICAgIDwvYnV0dG9uPlxuXG4gIDwhLS0gU2VjdGlvbiA1OiBTZWN0aW9ucyAodG9nZ2xlIHZpc2liaWxpdHkpIC0tPlxuICA8ZGl2ICpuZ0lmPVwibWV0YWRhdGFFeHBhbmRlZCAmJiB2aXNpYmxlU2VjdGlvbnM/Lmxlbmd0aFwiIGNsYXNzPVwiY3FhLWZsZXggY3FhLWZsZXgtY29sIGNxYS1nYXAtNFwiPlxuICAgIDxkaXZcbiAgICAgICpuZ0Zvcj1cImxldCBzZWN0aW9uIG9mIHZpc2libGVTZWN0aW9uc1wiXG4gICAgICBjbGFzcz1cImNxYS1ib3JkZXItbC00IGNxYS1ib3JkZXItWyNGQkJGMjRdIGNxYS1yb3VuZGVkLVsxMHB4XSBjcWEtb3ZlcmZsb3ctaGlkZGVuXCJcbiAgICAgIFtuZ0NsYXNzXT1cImdldFNlY3Rpb25Cb3JkZXJDbGFzcyhzZWN0aW9uKVwiXG4gICAgPlxuICAgICAgPGRpdiBjbGFzcz1cImNxYS1wLVsxMHB4XSBjcWEtcGwtWzIwcHhdIGNxYS1mbGV4IGNxYS1mbGV4LWNvbCBjcWEtZ2FwLTNcIj5cbiAgICAgICAgPCEtLSBTZWN0aW9uIFRpdGxlIHdpdGggSW5saW5lIENvbGxhcHNlIEJ1dHRvbiAtLT5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNxYS1mbGV4IGNxYS1pdGVtcy1jZW50ZXIgY3FhLWdhcC0yXCI+XG4gICAgICAgICAgPGgzIFtuZ0NsYXNzXT1cImdldFNlY3Rpb25UaXRsZUNsYXNzZXMoc2VjdGlvbilcIiBjbGFzcz1cIlwiPlxuICAgICAgICAgICAge3sgc2VjdGlvbi50aXRsZSB9fVxuICAgICAgICAgIDwvaDM+XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICBjbGFzcz1cImNxYS1tbC1hdXRvIGNxYS1pbmxpbmUtZmxleFwiXG4gICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlU2VjdGlvbihzZWN0aW9uKVwiXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cInNlY3Rpb24uZXhwYW5kZWQgIT09IGZhbHNlID8gJ0NvbGxhcHNlIHNlY3Rpb24nIDogJ0V4cGFuZCBzZWN0aW9uJ1wiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPG1hdC1pY29uIFtuZ0NsYXNzXT1cImdldFNlY3Rpb25JY29uQ29sb3Ioc2VjdGlvbilcIiBjbGFzcz1cImNxYS13LTQgY3FhLWgtNCBjcWEtdGV4dC1bMTZweF0gY3FhLWxlYWRpbmctWzE2cHhdXCI+XG4gICAgICAgICAgICAgIHt7IHNlY3Rpb24uZXhwYW5kZWQgIT09IGZhbHNlID8gJ2V4cGFuZF9sZXNzJyA6ICdleHBhbmRfbW9yZScgfX1cbiAgICAgICAgICAgIDwvbWF0LWljb24+XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDwhLS0gQ29sbGFwc2libGUgQ29udGVudDogUmVhc29uIGFuZCBBY3Rpb24gQnV0dG9uIC0tPlxuICAgICAgICA8ZGl2ICpuZ0lmPVwic2VjdGlvbi5leHBhbmRlZCAhPT0gZmFsc2VcIiBjbGFzcz1cImNxYS1mbGV4IGNxYS1mbGV4LWNvbCBjcWEtZ2FwLVsxMHB4XVwiPlxuICAgICAgICAgIDwhLS0gUmVhc29uIC0tPlxuICAgICAgICAgIDxwIGNsYXNzPVwiY3FhLXRleHQtc20gY3FhLWZvbnQtbm9ybWFsIGNxYS1sZWFkaW5nLVsxOHB4XSBjcWEtdGV4dC1uZXV0cmFsLTYwMFwiPlxuICAgICAgICAgICAgUmVhc29uOiB7eyBzZWN0aW9uLnJlYXNvbiB9fVxuICAgICAgICAgIDwvcD5cbiAgICAgICAgICBcbiAgICAgICAgICA8IS0tIEFjdGlvbiBCdXR0b24gLS0+XG4gICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgIDxjcWEtYnV0dG9uXG4gICAgICAgICAgICAgIHZhcmlhbnQ9XCJvdXRsaW5lZFwiXG4gICAgICAgICAgICAgIChjbGlja2VkKT1cIm9uU2VjdGlvbkFjdGlvbihzZWN0aW9uLmlkKVwiXG4gICAgICAgICAgICAgIFtjdXN0b21DbGFzc109XCInY3FhLXB5LVs5cHhdIGNxYS10ZXh0LVsxNHB4XSBjcWEtbGVhZGluZy1bMTdweF0gY3FhLWJvcmRlci1zbGF0ZSBjcWEtdGV4dC1zbGF0ZSdcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7eyBzZWN0aW9uLmFjdGlvbkJ1dHRvbkxhYmVsIH19XG4gICAgICAgICAgICA8L2NxYS1idXR0b24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICBcbiAgPGNxYS1idXR0b25cbiAgICAgIHZhcmlhbnQ9XCJmaWxsZWRcIlxuICAgICAgKGNsaWNrZWQpPVwib25NYWluQWN0aW9uKClcIlxuICAgICAgW2Rpc2FibGVkXT1cImlzQXBwbHlpbmdcIlxuICAgICAgW2N1c3RvbUNsYXNzXT1cIichY3FhLXctZnVsbCAhY3FhLXRleHQtWzE0cHhdICFjcWEtbGVhZGluZy1bMjBweF0gIWNxYS1mb250LXNlbWlib2xkJ1wiXG4gICAgPlxuICAgICAgPHN2ZyB3aWR0aD1cIjE4XCIgaGVpZ2h0PVwiMThcIiB2aWV3Qm94PVwiMCAwIDE4IDE4XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+PHBhdGggZD1cIk05LjAxODgyIDBDOS4xMjk3OSAwLjA0NTQ3NjcgOS4xNzcxOCAwLjE1NjUzIDkuMjIyNjEgMC4yNTk2OTFDOS4yNDUzOSAwLjMxOTc5OSA5LjI2NjI4IDAuMzgwMjM0IDkuMjg2NTcgMC40NDExNUM5LjI5NDUyIDAuNDY0NDkzIDkuMzAyNDYgMC40ODc4MzYgOS4zMTA2NSAwLjUxMTg4NkM5LjQxNjEzIDAuODI2MDA5IDkuNTEwMDggMS4xNDM1IDkuNjA0NTcgMS40NjA3NkM5LjYyNTkzIDEuNTMyMzggOS42NDczOSAxLjYwMzk3IDkuNjY4ODUgMS42NzU1N0M5Ljc3ODEgMi4wNDAwNyA5Ljg4NjU0IDIuNDA0OCA5Ljk5NDM4IDIuNzY5NjlDMTAuMDA5NSAyLjgyMDkzIDEwLjAyNDcgMi44NzIxOCAxMC4wMzk4IDIuOTIzNDJDMTAuMDgyNiAzLjA2NzkgMTAuMTI1MiAzLjIxMjM5IDEwLjE2NzcgMy4zNTY5NEMxMC4yNTczIDMuNjYyMzkgMTAuMzQ5NSAzLjk2Njk1IDEwLjQ0NzYgNC4yNzAwMkMxMC40NTYxIDQuMjk2NTMgMTAuNDY0NyA0LjMyMzA1IDEwLjQ3MzUgNC4zNTAzNkMxMC43Mjg0IDUuMTI5OTkgMTEuMDg5NiA1LjgyODc1IDExLjY4MTggNi40MjM5M0MxMS42OTY1IDYuNDM5NCAxMS43MTExIDYuNDU0ODggMTEuNzI2MiA2LjQ3MDgzQzExLjk3OSA2LjcyODc1IDEyLjMwMzQgNi45MzU0MSAxMi42Mjc2IDcuMTAyMjFDMTIuNjQ0MSA3LjExMDg1IDEyLjY2MDYgNy4xMTk0OCAxMi42Nzc2IDcuMTI4MzhDMTMuNjMxNyA3LjYxODUxIDE0Ljc3OSA3LjgzNDA3IDE1LjgxMjQgOC4xMjEwMUMxNi4yNjUyIDguMjQ2ODEgMTYuNzE2NiA4LjM3NjU4IDE3LjE2NjMgOC41MTIwNkMxNy4xOTc5IDguNTIxNTcgMTcuMjI5NiA4LjUzMTA3IDE3LjI2MTIgOC41NDA1NUMxNy4zNTU3IDguNTY4OSAxNy40NSA4LjU5Nzc0IDE3LjU0NDIgOC42MjY5NEMxNy41NjYyIDguNjMzNTggMTcuNTg4MiA4LjY0MDIzIDE3LjYxMDggOC42NDcwN0MxNy43NDA2IDguNjg4MTIgMTcuODY0OCA4LjczNjU4IDE3Ljk3MTMgOC44MjA1NEMxOC4wMDM4IDguODg4MzcgMTguMDAzOCA4Ljg4ODM3IDE3Ljk5NSA4Ljk1NjE5QzE3Ljg5MTMgOS4wNTQ3MiAxNy43ODg0IDkuMTAwOTIgMTcuNjUxNiA5LjE0NTk5QzE3LjYzMiA5LjE1MjY0IDE3LjYxMjQgOS4xNTkzIDE3LjU5MjMgOS4xNjYxNUMxNy4zNjEyIDkuMjQzNjYgMTcuMTI3IDkuMzExNDkgMTYuODkyNSA5LjM3ODcxQzE2Ljg0NDQgOS4zOTI2MSAxNi43OTYzIDkuNDA2NTEgMTYuNzQ4MiA5LjQyMDQyQzE2LjQ1MTQgOS41MDYwMyAxNi4xNTQyIDkuNTg5OCAxNS44NTY2IDkuNjcyNjNDMTUuNDY0NiA5Ljc4MTc1IDE1LjA3MzMgOS44OTI2OCAxNC42ODIzIDEwLjAwNDlDMTQuNjE4MiAxMC4wMjMyIDE0LjU1NDEgMTAuMDQxNiAxNC40OSAxMC4wNTk4QzE0LjE1MzQgMTAuMTU1NyAxMy44MTg1IDEwLjI1NTEgMTMuNDg2MyAxMC4zNjQyQzEzLjQ1ODcgMTAuMzczMiAxMy40MzEyIDEwLjM4MjIgMTMuNDAyOCAxMC4zOTE1QzEyLjI5MDIgMTAuNzYxNiAxMS40NDIyIDExLjQ1MjIgMTAuOTExNCAxMi40NjJDMTAuNjI1MyAxMy4wMjk1IDEwLjQ1NjUgMTMuNjQzMiAxMC4yODQzIDE0LjI0ODlDMTAuMjM3NyAxNC40MTI0IDEwLjE4ODIgMTQuNTc0OSAxMC4xMzgxIDE0LjczNzRDMTAuMDk4OCAxNC44NjUyIDEwLjA2MDQgMTQuOTkzMyAxMC4wMjMgMTUuMTIxNkMxMC4wMTg1IDE1LjEzNjkgMTAuMDE0MSAxNS4xNTIyIDEwLjAwOTUgMTUuMTY3OUM5Ljk4Nzg4IDE1LjI0MTkgOS45NjYzOCAxNS4zMTU5IDkuOTQ1MDMgMTUuMzg5OUM5Ljg5MDM5IDE1LjU3NzYgOS44MzE1NiAxNS43NjM3IDkuNzcxMTEgMTUuOTQ5OEM5LjY2MzgzIDE2LjI4MDQgOS41NjYyIDE2LjYxMzUgOS40NjkxNyAxNi45NDdDOS4zMjI4OCAxNy40NDkxIDkuMzIyODggMTcuNDQ5MSA5LjIzOTkzIDE3LjY5MDVDOS4yMzQ0MyAxNy43MDY3IDkuMjI4OTMgMTcuNzIyOSA5LjIyMzI2IDE3LjczOTZDOS4xOTI5OCAxNy44MjU2IDkuMTYxODMgMTcuOTA0NyA5LjEwNDUzIDE3Ljk3NzRDOS4wMTczNCAxNy45OTU4IDkuMDE3MzQgMTcuOTk1OCA4LjkzOTAxIDE4QzguODQ5NDYgMTcuODc1MiA4Ljc5MDE2IDE3Ljc1NDIgOC43NDI2NSAxNy42MTAyQzguNzM1NzQgMTcuNTg5NyA4LjcyODgyIDE3LjU2OTMgOC43MjE3IDE3LjU0ODNDOC42MzM2OCAxNy4yODUgOC41NTUwMiAxNy4wMTg5IDguNDc2MzQgMTYuNzUyOUM4LjQ1ODMyIDE2LjY5MjEgOC40NDAyMiAxNi42MzEzIDguNDIyMTEgMTYuNTcwNUM4LjI4NzIgMTYuMTE3MyA4LjE1NDUxIDE1LjY2MzUgOC4wMjIwMiAxNS4yMDk2QzcuNDcwMTQgMTIuOTY0NSA3LjQ3MDE0IDEyLjk2NDUgNi4wNzggMTEuMTQ5M0M2LjA1NTY5IDExLjEzMTkgNi4wMzMzOCAxMS4xMTQ1IDYuMDEwMzkgMTEuMDk2NkM1LjA5ODI2IDEwLjM5OCAzLjg5NjY3IDEwLjEzOTQgMi43OTYzIDkuODM2MjdDMi41MjQxNSA5Ljc2MTI0IDIuMjUyMSA5LjY4NTg3IDEuOTgwMDYgOS42MTA0NkMxLjk1NjI4IDkuNjAzODYgMS45NTYyOCA5LjYwMzg2IDEuOTMyMDEgOS41OTcxNEMxLjUzOTYyIDkuNDg4MzQgMS4xNDczNSA5LjM3OTI1IDAuNzU2NDQ4IDkuMjY1NjZDMC43Mzk5MTEgOS4yNjA4OSAwLjcyMzM3NSA5LjI1NjEyIDAuNzA2MzM4IDkuMjUxMjFDMC4xMDU3OTggOS4wNzc2NyAwLjEwNTc5OCA5LjA3NzY3IDAuMDAxMjkzMDcgOC45NTYxOUMtMC4wMDE2NjI1MiA4LjkwMTA4IC0wLjAwMTY2MjUyIDguOTAxMDggMC4wMjQ5Mzc4IDguODQzMTVDMC4xMzQxNjcgOC43NDA4IDAuMjQwMTUzIDguNjk2OTYgMC4zODQzMiA4LjY1MjM4QzAuNDA1MTk0IDguNjQ1NjcgMC40MjYwNjggOC42Mzg5NyAwLjQ0NzU3NCA4LjYzMjA2QzAuNTExNTA2IDguNjExNjQgMC41NzU1NzcgOC41OTE2OSAwLjYzOTcwMiA4LjU3MTgzQzAuNjU4MDAxIDguNTY2MDkgMC42NzYzMDEgOC41NjAzNSAwLjY5NTE1NSA4LjU1NDQzQzAuODI0NTcgOC41MTM4NSAwLjk1NDQ1IDguNDc0NzkgMS4wODQ1MiA4LjQzNjE4QzEuMTE2NDggOC40MjY2NSAxLjExNjQ4IDguNDI2NjUgMS4xNDkwOSA4LjQxNjkzQzEuNzA0NTQgOC4yNTE3NCAyLjI2MzYxIDguMDk4MDEgMi44MjI1MiA3Ljk0MzkyQzMuMjM4OTkgNy44MjkwOSAzLjY1NDc2IDcuNzEyMzYgNC4wNjkyMSA3LjU5MDk3QzQuMDg4MjUgNy41ODU0MiA0LjEwNzMgNy41Nzk4NyA0LjEyNjkyIDcuNTc0MTVDNS4wODcgNy4yOTM5MyA2LjAyNTU3IDYuODk2MzIgNi42NDU0NyA2LjEwNzRDNi42NTQ3NSA2LjA5NTY5IDYuNjY0MDMgNi4wODM5OSA2LjY3MzYgNi4wNzE5NEM3LjM2Mzk1IDUuMTk2MyA3LjYzMzE1IDQuMTMxNDUgNy45MzM5MSAzLjA5MjQxQzguMDMyODUgMi43NTA2OSA4LjEzMjk4IDIuNDA5MjkgOC4yMzM0NSAyLjA2Nzk4QzguMjYxMjcgMS45NzM0NyA4LjI4OTA2IDEuODc4OTQgOC4zMTY3MyAxLjc4NDM5QzguNDI3ODggMS40MDQ1OCA4LjU0MDcgMS4wMjUyOCA4LjY2IDAuNjQ3NzI3QzguNjcxMTYgMC42MTIzNzIgOC42ODIyNyAwLjU3NzAwMSA4LjY5MzMzIDAuNTQxNjE0QzguODYwMzUgMC4wMDc5NzUyMiA4Ljg2MDM1IDAuMDA3OTc1MjIgOS4wMTg4MiAwWlwiIGZpbGw9XCIjRkJGQ0ZGXCIvPjxwYXRoIGQ9XCJNMTQuNDcxOSAxLjExMDY5QzE0LjU4MDUgMS4yMjgxNyAxNC42MDIyIDEuMzY2MjQgMTQuNjM2IDEuNTE2MjVDMTQuNzQ4NyAxLjk4NzUxIDE0Ljg3ODYgMi40MjA4NCAxNS4zMjkzIDIuNjk0NkMxNS42MDc0IDIuODQxNjcgMTUuOTM4OSAyLjkwODU5IDE2LjI0NyAyLjk3MThDMTYuMzc3MSAyLjk5OTAyIDE2LjQ4NjkgMy4wMzUxNSAxNi41OTg1IDMuMTA3NEMxNi42MjM2IDMuMTQ1NTUgMTYuNjIzNiAzLjE0NTU1IDE2LjYyMjEgMy4yMTE5N0MxNi41OTYzIDMuMjkyNzMgMTYuNTczNiAzLjMxODc4IDE2LjUwNTQgMy4zNzE2NUMxNi40MzA4IDMuMzk1NDkgMTYuNDMwOCAzLjM5NTQ5IDE2LjM0MTMgMy40MTQwNEMxNi4zMDc1IDMuNDIxNDcgMTYuMjczNiAzLjQyODk4IDE2LjIzOTggMy40MzY1NkMxNi4yMjE3IDMuNDQwNTggMTYuMjAzNiAzLjQ0NDYgMTYuMTg0OSAzLjQ0ODc0QzE1LjYzMzkgMy41NzA2MiAxNS42MzM5IDMuNTcwNjIgMTUuMTU3NiAzLjg0NjQ1QzE1LjE0MjEgMy44NTgzNyAxNS4xMjY3IDMuODcwMjkgMTUuMTEwNyAzLjg4MjU3QzE0Ljc3MDMgNC4xNjk1OSAxNC42OTgzIDQuNjQ3MDMgMTQuNTk1OCA1LjA0Njk5QzE0LjU5IDUuMDY4OTYgMTQuNTg0MSA1LjA5MDkyIDE0LjU3OCA1LjExMzU1QzE0LjU3MyA1LjEzMyAxNC41Njc5IDUuMTUyNDQgMTQuNTYyNyA1LjE3MjQ4QzE0LjU0MDUgNS4yMzE4NSAxNC41MTc2IDUuMjcwNTcgMTQuNDcxOSA1LjMxNjA3QzE0LjM0NDcgNS4zMzE1MiAxNC4zNDQ3IDUuMzMxNTIgMTQuMjgyOCA1LjMxNjA3QzE0LjE4NDMgNS4yNDMwOSAxNC4xNjIzIDUuMTU5OTcgMTQuMTM2NiA1LjA0ODI4QzE0LjEzMjIgNS4wMzA5OSAxNC4xMjc5IDUuMDEzNjkgMTQuMTIzNSA0Ljk5NTg3QzE0LjEwOTggNC45NDA2NCAxNC4wOTY1IDQuODg1MzEgMTQuMDgzMyA0LjgyOTk2QzEzLjk3OTYgNC4zOTg5MSAxMy44NjI1IDMuOTc2IDEzLjQ0OSAzLjcyMzMzQzEzLjEyNTggMy41NTEwMSAxMi43MzI5IDMuNDY5NTEgMTIuMzcxNyAzLjQwMzdDMTIuMjcyNyAzLjM4Mzk5IDEyLjIxNiAzLjM1OTIgMTIuMTU0NyAzLjI4MTIxQzEyLjE0MTQgMy4yMDIwOCAxMi4xNDE0IDMuMjAyMDggMTIuMTU0NyAzLjEyMjk0QzEyLjI0ODkgMy4wMjk3MSAxMi4zNDggMy4wMDY5NiAxMi40NzU0IDIuOTc4ODFDMTIuNTE1NiAyLjk2OTMgMTIuNTU1NyAyLjk1OTczIDEyLjU5NTggMi45NTAxQzEyLjYxNjUgMi45NDUxNiAxMi42MzcyIDIuOTQwMjIgMTIuNjU4NiAyLjkzNTEyQzEyLjc2NDIgMi45MDkxMSAxMi44Njg5IDIuODc5OTUgMTIuOTczNCAyLjg1MDIxQzEyLjk5MjQgMi44NDQ5NCAxMy4wMTE0IDIuODM5NjcgMTMuMDMxIDIuODM0MjRDMTMuMjQzNiAyLjc3MzQ2IDEzLjQyNzEgMi42OTU3MSAxMy41OTcxIDIuNTU3N0MxMy42MTI5IDIuNTQ1MjMgMTMuNjI4OCAyLjUzMjc2IDEzLjY0NTEgMi41MTk5QzEzLjkwOTYgMi4yOTIyOCAxMy45OTk1IDEuOTUwMzIgMTQuMDgxIDEuNjMxMjRDMTQuMDg3MyAxLjYwNzAyIDE0LjA5MzUgMS41ODI4IDE0LjA5OTkgMS41NTc4NEMxNC4xMTIzIDEuNTA5MTggMTQuMTI0NCAxLjQ2MDQ2IDE0LjEzNjMgMS40MTE3QzE0LjE0NDkgMS4zNzc3NiAxNC4xNDQ5IDEuMzc3NzYgMTQuMTUzNSAxLjM0MzE1QzE0LjE1ODUgMS4zMjI4OCAxNC4xNjM1IDEuMzAyNjEgMTQuMTY4NiAxLjI4MTcyQzE0LjE5MDQgMS4yMTcxOSAxNC4yMTkgMS4xNjY1MiAxNC4yNTkxIDEuMTEwNjlDMTQuMzM2MiAxLjA3Mzg1IDE0LjM5MDMgMS4wOTA1IDE0LjQ3MTkgMS4xMTA2OVpcIiBmaWxsPVwiI0ZCRkNGRlwiLz48cGF0aCBkPVwiTTMuNTkwODkgMTIuNDk0MkMzLjYxOTAyIDEyLjQ5NDQgMy42MTkwMiAxMi40OTQ0IDMuNjQ3NzIgMTIuNDk0NkMzLjg0OTU0IDEyLjUwMDQgMy45ODYwOSAxMi41NjIzIDQuMTM0NzIgMTIuNjkyQzQuMzA3NjcgMTIuODcwNyA0LjM4NzUzIDEzLjA3MjIgNC4zODI5OSAxMy4zMTNDNC4zNjM1NyAxMy41MDgyIDQuMjQzMTYgMTMuNjc4NyA0LjA5NTQ3IDEzLjgxMDdDMy45MjE2MyAxMy45NDQ4IDMuNzQ2MjYgMTMuOTg5MiAzLjUyNDExIDEzLjk4M0MzLjMzNjgxIDEzLjk2MjEgMy4xNjA2IDEzLjg3NyAzLjAyNzg1IDEzLjc0OUMyLjg2Mjc2IDEzLjUzMzYgMi44MTQ1IDEzLjMzNjEgMi44Mzg2OSAxMy4wNzA3QzIuODg4NjcgMTIuODYxOCAzLjAzMjc0IDEyLjY5MjMgMy4yMTcwMSAxMi41NzMzQzMuMzQ1MDIgMTIuNTExMyAzLjQ0Nzk4IDEyLjQ5MyAzLjU5MDg5IDEyLjQ5NDJaXCIgZmlsbD1cIiNGQkZDRkZcIi8+PC9zdmc+XG4gICAgICB7eyBpc0FwcGx5aW5nID8gJ0FwcGx5aW5nIHN1Z2dlc3Rpb24nIDogJ0FwcGx5IHN1Z2dlc3Rpb24nIH19XG4gICAgPC9jcWEtYnV0dG9uPlxuICA8L2Rpdj5cbjwvZGl2PlxuIFxuIl19
201
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5zaWdodC1jYXJkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvZGFzaGJvYXJkcy9pbnNpZ2h0LWNhcmQvaW5zaWdodC1jYXJkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvZGFzaGJvYXJkcy9pbnNpZ2h0LWNhcmQvaW5zaWdodC1jYXJkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkUsT0FBTyxFQUFFLHFCQUFxQixJQUFJLHFCQUFxQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7Ozs7OztBQXdCbEcsTUFBTSxPQUFPLG9CQUFvQjtJQUxqQztRQU1XLFVBQUssR0FBVyxFQUFFLENBQUM7UUFDbkIsZ0JBQVcsR0FBVyxFQUFFLENBQUM7UUFDMUIsWUFBTyxHQUFtQixFQUFFLENBQUM7UUFXNUIscUJBQWdCLEdBQVksSUFBSSxDQUFDO1FBQ2pDLDBCQUFxQixHQUFZLEtBQUssQ0FBQztRQUN2QyxzQkFBaUIsR0FBWSxLQUFLLENBQUM7UUFFNUMsb0NBQW9DO1FBQzVCLHlCQUFvQixHQUF5QixJQUFJLEdBQUcsRUFBRSxDQUFDO1FBRS9ELGdDQUFnQztRQUNoQyxlQUFVLEdBQVksS0FBSyxDQUFDO1FBRWxCLG1CQUFjLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQztRQUM3QyxrQkFBYSxHQUFHLElBQUksWUFBWSxFQUFxQyxDQUFDO1FBQ3RFLHVCQUFrQixHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7UUFDaEQsMkJBQXNCLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUNsRCwrQkFBMEIsR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBQ3RELDBCQUFxQixHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7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LENBQUM7U0FDOUI7SUFDSCxDQUFDOztpSEF2TFUsb0JBQW9CO3FHQUFwQixvQkFBb0IsMm5CQ3pCakMscXhYQW1IQTsyRkQxRmEsb0JBQW9CO2tCQUxoQyxTQUFTOytCQUNFLGtCQUFrQjs4QkFLbkIsS0FBSztzQkFBYixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBR0YsTUFBTTtzQkFEVCxLQUFLO2dCQU9HLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csbUJBQW1CO3NCQUEzQixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNHLHFCQUFxQjtzQkFBN0IsS0FBSztnQkFDRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBUUksY0FBYztzQkFBdkIsTUFBTTtnQkFDRyxhQUFhO3NCQUF0QixNQUFNO2dCQUNHLGtCQUFrQjtzQkFBM0IsTUFBTTtnQkFDRyxzQkFBc0I7c0JBQS9CLE1BQU07Z0JBQ0csMEJBQTBCO3NCQUFuQyxNQUFNO2dCQUNHLHFCQUFxQjtzQkFBOUIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBnZXRNZXRhZGF0YVZhbHVlU3R5bGUgYXMgZ2V0TWV0YWRhdGFDb2xvclN0eWxlIH0gZnJvbSAnLi4vLi4vdXRpbHMvbWV0YWRhdGEtY29sb3JzLnV0aWwnO1xuaW1wb3J0IHsgQmFkZ2VDb21wb25lbnQgfSBmcm9tICcuLi8uLi9iYWRnZS9iYWRnZS5jb21wb25lbnQnO1xuXG4vLyBVc2UgQmFkZ2VDb21wb25lbnQgaW5wdXRzIGRpcmVjdGx5IGluc3RlYWQgb2YgYSBzZXBhcmF0ZSBpbnRlcmZhY2VcbmV4cG9ydCB0eXBlIEluc2lnaHRCYWRnZSA9IFBpY2s8QmFkZ2VDb21wb25lbnQsICdsYWJlbCcgfCAnaWNvbicgfCAndmFyaWFudCc+O1xuXG5leHBvcnQgaW50ZXJmYWNlIEluc2lnaHRNZXRhZGF0YSB7XG4gIFtrZXk6IHN0cmluZ106IHN0cmluZyB8IHsgbGFiZWw6IHN0cmluZzsgdmFsdWU6IHN0cmluZzsgaGlnaGxpZ2h0PzogYm9vbGVhbiB9O1xufVxuXG5pbnRlcmZhY2UgSW50ZXJuYWxJbnNpZ2h0U2VjdGlvbiB7XG4gIGlkOiBzdHJpbmc7XG4gIHRpdGxlOiBzdHJpbmc7XG4gIHZhcmlhbnQ6ICd3YXJuaW5nJyB8ICdlcnJvcicgfCAnZGVmYXVsdCc7XG4gIHJlYXNvbjogc3RyaW5nO1xuICBhY3Rpb25CdXR0b25MYWJlbDogc3RyaW5nO1xuICBleHBhbmRlZD86IGJvb2xlYW47XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2NxYS1pbnNpZ2h0LWNhcmQnLFxuICB0ZW1wbGF0ZVVybDogJy4vaW5zaWdodC1jYXJkLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbXVxufSlcbmV4cG9ydCBjbGFzcyBJbnNpZ2h0Q2FyZENvbXBvbmVudCB7XG4gIEBJbnB1dCgpIHRpdGxlOiBzdHJpbmcgPSAnJztcbiAgQElucHV0KCkgZGVzY3JpcHRpb246IHN0cmluZyA9ICcnO1xuICBwcml2YXRlIF9iYWRnZXM6IEluc2lnaHRCYWRnZVtdID0gW107XG4gIEBJbnB1dCgpXG4gIHNldCBiYWRnZXModmFsdWU6IEluc2lnaHRCYWRnZVtdKSB7XG4gICAgdGhpcy5fYmFkZ2VzID0gdmFsdWU7XG4gIH1cbiAgZ2V0IGJhZGdlcygpOiBJbnNpZ2h0QmFkZ2VbXSB7XG4gICAgcmV0dXJuIHRoaXMuX2JhZGdlcztcbiAgfVxuICBASW5wdXQoKSBtZXRhZGF0YT86IEluc2lnaHRNZXRhZGF0YTtcbiAgQElucHV0KCkgcHJlcmVxdWlzaXRlU2VjdGlvbj86IHN0cmluZztcbiAgQElucHV0KCkgdGVzdERhdGFTZWN0aW9uPzogc3RyaW5nO1xuICBASW5wdXQoKSBtZXRhZGF0YUV4cGFuZGVkOiBib29sZWFuID0gdHJ1ZTtcbiAgQElucHV0KCkgaXNQcmVyZXF1aXNpdGVNaXNzaW5nOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIGlzVGVzdERhdGFNaXNzaW5nOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLy8gVHJhY2sgZXhwYW5kZWQgc3RhdGUgZm9yIHNlY3Rpb25zXG4gIHByaXZhdGUgc2VjdGlvbkV4cGFuZGVkU3RhdGU6IE1hcDxzdHJpbmcsIGJvb2xlYW4+ID0gbmV3IE1hcCgpO1xuICBcbiAgLy8gTG9hZGluZyBzdGF0ZSBmb3IgbWFpbiBhY3Rpb25cbiAgaXNBcHBseWluZzogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIEBPdXRwdXQoKSBtZXRhZGF0YVRvZ2dsZSA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcbiAgQE91dHB1dCgpIHNlY3Rpb25Ub2dnbGUgPSBuZXcgRXZlbnRFbWl0dGVyPHsgaWQ6IHN0cmluZzsgZXhwYW5kZWQ6IGJvb2xlYW4gfT4oKTtcbiAgQE91dHB1dCgpIHNlY3Rpb25BY3Rpb25DbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuICBAT3V0cHV0KCkgb25BcHBseVN1Z2dlc3Rpb25DbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgQE91dHB1dCgpIG9uQXR0YWNoUHJlcmVxdWlzaXRlc0NsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICBAT3V0cHV0KCkgb25JbXBvcnRUZXN0RGF0YUNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gIHRvZ2dsZU1ldGFkYXRhKCk6IHZvaWQge1xuICAgIHRoaXMubWV0YWRhdGFFeHBhbmRlZCA9ICF0aGlzLm1ldGFkYXRhRXhwYW5kZWQ7XG4gICAgdGhpcy5tZXRhZGF0YVRvZ2dsZS5lbWl0KHRoaXMubWV0YWRhdGFFeHBhbmRlZCk7XG4gIH1cblxuICB0b2dnbGVTZWN0aW9uKHNlY3Rpb246IEludGVybmFsSW5zaWdodFNlY3Rpb24pOiB2b2lkIHtcbiAgICBjb25zdCBjdXJyZW50U3RhdGUgPSB0aGlzLnNlY3Rpb25FeHBhbmRlZFN0YXRlLmdldChzZWN0aW9uLmlkKSA/PyAoc2VjdGlvbi5leHBhbmRlZCA/PyB0cnVlKTtcbiAgICBjb25zdCBuZXdTdGF0ZSA9ICFjdXJyZW50U3RhdGU7XG4gICAgdGhpcy5zZWN0aW9uRXhwYW5kZWRTdGF0ZS5zZXQoc2VjdGlvbi5pZCwgbmV3U3RhdGUpO1xuICAgIFxuICAgIHRoaXMuc2VjdGlvblRvZ2dsZS5lbWl0KHsgaWQ6IHNlY3Rpb24uaWQsIGV4cGFuZGVkOiBuZXdTdGF0ZSB9KTtcbiAgfVxuXG4gIG9uU2VjdGlvbkFjdGlvbihzZWN0aW9uSWQ6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuc2VjdGlvbkFjdGlvbkNsaWNrLmVtaXQoc2VjdGlvbklkKTtcbiAgICBcbiAgICAvLyBFbWl0IHNwZWNpZmljIGV2ZW50cyBmb3Iga25vd24gYWN0aW9uc1xuICAgIGlmIChzZWN0aW9uSWQgPT09ICdwcmVyZXF1aXNpdGUnKSB7XG4gICAgICB0aGlzLm9uQXR0YWNoUHJlcmVxdWlzaXRlc0NsaWNrLmVtaXQoKTtcbiAgICB9IGVsc2UgaWYgKHNlY3Rpb25JZCA9PT0gJ3Rlc3QtZGF0YScpIHtcbiAgICAgIHRoaXMub25JbXBvcnRUZXN0RGF0YUNsaWNrLmVtaXQoKTtcbiAgICB9XG4gIH1cblxuICBnZXQgdmlzaWJsZUJhZGdlcygpOiBJbnNpZ2h0QmFkZ2VbXSB7XG4gICAgY29uc3QgdmlzaWJsZTogSW5zaWdodEJhZGdlW10gPSBbXTtcbiAgICBpZiAodGhpcy5pc1ByZXJlcXVpc2l0ZU1pc3NpbmcpIHtcbiAgICAgIHZpc2libGUucHVzaCh7IGxhYmVsOiAnUHJlcmVxdWlzaXRlIE1pc3NpbmcnLCB2YXJpYW50OiAnd2FybmluZycgfSk7XG4gICAgfVxuICAgIGlmICh0aGlzLmlzVGVzdERhdGFNaXNzaW5nKSB7XG4gICAgICB2aXNpYmxlLnB1c2goeyBsYWJlbDogJ1Rlc3QgRGF0YSBNaXNzaW5nJywgdmFyaWFudDogJ2Vycm9yJyB9KTtcbiAgICB9XG4gICAgLy8gQWxzbyBpbmNsdWRlIGFueSBjdXN0b20gYmFkZ2VzXG4gICAgaWYgKHRoaXMuYmFkZ2VzKSB7XG4gICAgICB2aXNpYmxlLnB1c2goLi4udGhpcy5iYWRnZXMpO1xuICAgIH1cbiAgICByZXR1cm4gdmlzaWJsZTtcbiAgfVxuXG4gIGdldCB2aXNpYmxlU2VjdGlvbnMoKTogSW50ZXJuYWxJbnNpZ2h0U2VjdGlvbltdIHtcbiAgICBjb25zdCB2aXNpYmxlOiBJbnRlcm5hbEluc2lnaHRTZWN0aW9uW10gPSBbXTtcbiAgICBcbiAgICBpZiAodGhpcy5pc1ByZXJlcXVpc2l0ZU1pc3NpbmcgJiYgdGhpcy5wcmVyZXF1aXNpdGVTZWN0aW9uKSB7XG4gICAgICAvLyBVc2Ugc3RvcmVkIHN0YXRlIGlmIGF2YWlsYWJsZSwgb3RoZXJ3aXNlIGRlZmF1bHQgdG8gdHJ1ZVxuICAgICAgY29uc3QgZXhwYW5kZWQgPSB0aGlzLnNlY3Rpb25FeHBhbmRlZFN0YXRlLmhhcygncHJlcmVxdWlzaXRlJykgXG4gICAgICAgID8gdGhpcy5zZWN0aW9uRXhwYW5kZWRTdGF0ZS5nZXQoJ3ByZXJlcXVpc2l0ZScpIVxuICAgICAgICA6IHRydWU7XG4gICAgICBcbiAgICAgIHZpc2libGUucHVzaCh7XG4gICAgICAgIGlkOiAncHJlcmVxdWlzaXRlJyxcbiAgICAgICAgdGl0bGU6ICdQcmVyZXF1aXNpdGUgTWlzc2luZycsXG4gICAgICAgIHZhcmlhbnQ6ICd3YXJuaW5nJyxcbiAgICAgICAgcmVhc29uOiB0aGlzLnByZXJlcXVpc2l0ZVNlY3Rpb24sXG4gICAgICAgIGFjdGlvbkJ1dHRvbkxhYmVsOiAnQXR0YWNoIFByZXJlcXVpc2l0ZXMnLFxuICAgICAgICBleHBhbmRlZDogZXhwYW5kZWQsXG4gICAgICB9KTtcbiAgICB9XG4gICAgXG4gICAgaWYgKHRoaXMuaXNUZXN0RGF0YU1pc3NpbmcgJiYgdGhpcy50ZXN0RGF0YVNlY3Rpb24pIHtcbiAgICAgIC8vIFVzZSBzdG9yZWQgc3RhdGUgaWYgYXZhaWxhYmxlLCBvdGhlcndpc2UgZGVmYXVsdCB0byB0cnVlXG4gICAgICBjb25zdCBleHBhbmRlZCA9IHRoaXMuc2VjdGlvbkV4cGFuZGVkU3RhdGUuaGFzKCd0ZXN0LWRhdGEnKVxuICAgICAgICA/IHRoaXMuc2VjdGlvbkV4cGFuZGVkU3RhdGUuZ2V0KCd0ZXN0LWRhdGEnKSFcbiAgICAgICAgOiB0cnVlO1xuICAgICAgXG4gICAgICB2aXNpYmxlLnB1c2goe1xuICAgICAgICBpZDogJ3Rlc3QtZGF0YScsXG4gICAgICAgIHRpdGxlOiAnVGVzdCBEYXRhIE1pc3NpbmcnLFxuICAgICAgICB2YXJpYW50OiAnZXJyb3InLFxuICAgICAgICByZWFzb246IHRoaXMudGVzdERhdGFTZWN0aW9uLFxuICAgICAgICBhY3Rpb25CdXR0b25MYWJlbDogJ0ltcG9ydCBUZXN0IERhdGEnLFxuICAgICAgICBleHBhbmRlZDogZXhwYW5kZWQsXG4gICAgICB9KTtcbiAgICB9XG4gICAgXG4gICAgcmV0dXJuIHZpc2libGU7XG4gIH1cblxuICBhc3luYyBvbk1haW5BY3Rpb24oKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKHRoaXMuaXNBcHBseWluZykge1xuICAgICAgcmV0dXJuOyAvLyBQcmV2ZW50IG11bHRpcGxlIGNsaWNrc1xuICAgIH1cbiAgICBcbiAgICB0aGlzLmlzQXBwbHlpbmcgPSB0cnVlO1xuICAgIFxuICAgIHRyeSB7XG4gICAgICB0aGlzLm9uQXBwbHlTdWdnZXN0aW9uQ2xpY2suZW1pdCgpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICAvLyBSZXNldCBsb2FkaW5nIHN0YXRlIGFmdGVyIGFjdGlvbiBjb21wbGV0ZXNcbiAgICAgIC8vIElmIHlvdSBuZWVkIHRvIGtlZXAgdGhlIGxvYWRpbmcgc3RhdGUgbG9uZ2VyLCBjYWxsIHJlc2V0QXBwbHlpbmdTdGF0ZSgpIG1hbnVhbGx5XG4gICAgICAvLyBhZnRlciB5b3VyIGFzeW5jIG9wZXJhdGlvbiBjb21wbGV0ZXNcbiAgICAgIHRoaXMuaXNBcHBseWluZyA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIC8vIE1ldGhvZCB0byByZXNldCBsb2FkaW5nIHN0YXRlIChjYW4gYmUgY2FsbGVkIGV4dGVybmFsbHkgaWYgbmVlZGVkKVxuICByZXNldEFwcGx5aW5nU3RhdGUoKTogdm9pZCB7XG4gICAgdGhpcy5pc0FwcGx5aW5nID0gZmFsc2U7XG4gIH1cblxuICAvLyBSZW1vdmVkIGdldEJhZGdlQ2xhc3NlcyAtIG5vdyB1c2luZyBCYWRnZUNvbXBvbmVudFxuXG4gIGdldFNlY3Rpb25Cb3JkZXJDbGFzcyhzZWN0aW9uOiBJbnRlcm5hbEluc2lnaHRTZWN0aW9uKTogc3RyaW5nIHtcbiAgICBzd2l0Y2ggKHNlY3Rpb24udmFyaWFudCkge1xuICAgICAgY2FzZSAnd2FybmluZyc6XG4gICAgICAgIHJldHVybiAnY3FhLWJvcmRlci1sLTQgY3FhLWJvcmRlci1sLXllbGxvdy01MDAnO1xuICAgICAgY2FzZSAnZXJyb3InOlxuICAgICAgICByZXR1cm4gJ2NxYS1ib3JkZXItbC00IGNxYS1ib3JkZXItbC1yZWQtNTAwJztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiAnY3FhLWJvcmRlci1sLTQgY3FhLWJvcmRlci1sLWdyYXktNTAwJztcbiAgICB9XG4gIH1cblxuICBnZXRNZXRhZGF0YVZhbHVlQ2xhc3NlcyhrZXk6IHN0cmluZywgdmFsdWU6IHN0cmluZyB8IHsgbGFiZWw6IHN0cmluZzsgdmFsdWU6IHN0cmluZzsgaGlnaGxpZ2h0PzogYm9vbGVhbiB9KTogc3RyaW5nIHtcbiAgICAvLyBCYXNlIGNsYXNzZXMgZm9yIGFsbCB2YWx1ZXMgKGZvbnQtc2l6ZTogMTRweCwgbGluZS1oZWlnaHQ6IDE4cHgsIGZvbnQtd2VpZ2h0OiA0MDApXG4gICAgcmV0dXJuICdjcWEtZm9udC1ub3JtYWwgY3FhLWxlYWRpbmctWzE4cHhdIGNxYS10cmFja2luZy1ub3JtYWwnO1xuICB9XG5cbiAgZ2V0TWV0YWRhdGFWYWx1ZSh2YWx1ZTogc3RyaW5nIHwgeyBsYWJlbDogc3RyaW5nOyB2YWx1ZTogc3RyaW5nOyBoaWdobGlnaHQ/OiBib29sZWFuIH0pOiBzdHJpbmcge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuICAgIHJldHVybiB2YWx1ZS52YWx1ZTtcbiAgfVxuXG4gIGdldE1ldGFkYXRhVmFsdWVTdHlsZShrZXk6IHN0cmluZywgdmFsdWU6IHN0cmluZyB8IHsgbGFiZWw6IHN0cmluZzsgdmFsdWU6IHN0cmluZzsgaGlnaGxpZ2h0PzogYm9vbGVhbiB9KTogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSB7XG4gICAgLy8gVXNlIHRoZSBzaGFyZWQgdXRpbGl0eSBmdW5jdGlvbiBmb3IgY29uc2lzdGVudCBjb2xvcnNcbiAgICByZXR1cm4gZ2V0TWV0YWRhdGFDb2xvclN0eWxlKGtleSwgdmFsdWUpO1xuICB9XG5cbiAgZ2V0U2VjdGlvblRpdGxlQ2xhc3NlcyhzZWN0aW9uOiBJbnRlcm5hbEluc2lnaHRTZWN0aW9uKTogc3RyaW5nIHtcbiAgICBjb25zdCBiYXNlQ2xhc3NlcyA9IFsnY3FhLXRleHQtc20nLCAnY3FhLWxlYWRpbmctWzE3cHhdJywgJ2NxYS1mb250LXNlbWlib2xkJ107XG4gICAgXG4gICAgc3dpdGNoIChzZWN0aW9uLnZhcmlhbnQpIHtcbiAgICAgIGNhc2UgJ3dhcm5pbmcnOlxuICAgICAgICByZXR1cm4gWy4uLmJhc2VDbGFzc2VzLCAnY3FhLXRleHQtWyM3ODM1MEZdJ10uam9pbignICcpO1xuICAgICAgY2FzZSAnZXJyb3InOlxuICAgICAgICByZXR1cm4gWy4uLmJhc2VDbGFzc2VzLCAnY3FhLXRleHQtWyM4ODEzMzddJ10uam9pbignICcpO1xuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gWy4uLmJhc2VDbGFzc2VzLCAnY3FhLXRleHQtaW5rJ10uam9pbignICcpO1xuICAgIH1cbiAgfVxuXG4gIGdldFNlY3Rpb25JY29uQ29sb3Ioc2VjdGlvbjogSW50ZXJuYWxJbnNpZ2h0U2VjdGlvbik6IHN0cmluZyB7XG4gICAgc3dpdGNoIChzZWN0aW9uLnZhcmlhbnQpIHtcbiAgICAgIGNhc2UgJ3dhcm5pbmcnOlxuICAgICAgICByZXR1cm4gJ2NxYS10ZXh0LVsjNzgzNTBGXSc7XG4gICAgICBjYXNlICdlcnJvcic6XG4gICAgICAgIHJldHVybiAnY3FhLXRleHQtWyM4ODEzMzddJztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiAnY3FhLXRleHQtZ3JheS00MDAnO1xuICAgIH1cbiAgfVxufVxuXG5cbiIsIjxkaXYgaWQ9XCJjcWEtdWktcm9vdFwiPlxuICA8ZGl2IGNsYXNzPVwiY3FhLWZvbnQtaW50ZXIgY3FhLWZsZXggY3FhLWZsZXgtY29sIGNxYS1nYXAtNCBjcWEtcHgtWzIxcHhdIGNxYS1weS0zIGNxYS1ib3JkZXIgY3FhLWJvcmRlci1zb2xpZCBjcWEtYm9yZGVyLVsjRUNFQ0VDXSBjcWEtcm91bmRlZC14bCBjcWEtc2hhZG93LWNhcmRcIj5cbiAgICA8IS0tIFNlY3Rpb24gMTogQmFkZ2VzIC0tPlxuICAgIDxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1nYXAtMyBjcWEtcHktWzEuNV1cIiAqbmdJZj1cInZpc2libGVCYWRnZXMubGVuZ3RoID4gMFwiPlxuICAgICAgPHN2ZyB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIiB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+PHBhdGggZD1cIk0xNC40ODY2IDEyLjAwMDVMOS4xNTMyOSAyLjY2NzE0QzkuMDM3IDIuNDYxOTQgOC44NjgzNiAyLjI5MTI3IDguNjY0NTcgMi4xNzI1MkM4LjQ2MDc4IDIuMDUzNzggOC4yMjkxNSAxLjk5MTIxIDcuOTkzMjkgMS45OTEyMUM3Ljc1NzQzIDEuOTkxMjEgNy41MjU3OSAyLjA1Mzc4IDcuMzIyIDIuMTcyNTJDNy4xMTgyMiAyLjI5MTI3IDYuOTQ5NTggMi40NjE5NCA2LjgzMzI5IDIuNjY3MTRMMS40OTk5NSAxMi4wMDA1QzEuMzgyNDEgMTIuMjA0IDEuMzIwNzcgMTIuNDM1MSAxLjMyMTI5IDEyLjY3MDFDMS4zMjE4MSAxMi45MDUyIDEuMzg0NDcgMTMuMTM2IDEuNTAyOTIgMTMuMzM5QzEuNjIxMzYgMTMuNTQyMSAxLjc5MTM4IDEzLjcxMDIgMS45OTU3NSAxMy44MjY0QzIuMjAwMTEgMTMuOTQyNSAyLjQzMTU2IDE0LjAwMjYgMi42NjY2MiAxNC4wMDA1SDEzLjMzMzNDMTMuNTY3MiAxNC4wMDAyIDEzLjc5NyAxMy45Mzg1IDEzLjk5OTUgMTMuODIxM0MxNC4yMDIgMTMuNzA0MiAxNC4zNzAxIDEzLjUzNTkgMTQuNDg3IDEzLjMzMzJDMTQuNjAzOCAxMy4xMzA2IDE0LjY2NTMgMTIuOTAwNyAxNC42NjUzIDEyLjY2NjhDMTQuNjY1MiAxMi40MzI5IDE0LjYwMzYgMTIuMjAzMSAxNC40ODY2IDEyLjAwMDVaXCIgc3Ryb2tlPVwiI0UyQUMyMFwiIHN0cm9rZS13aWR0aD1cIjEuMzMzMzNcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+PHBhdGggZD1cIk04IDZWOC42NjY2N1wiIHN0cm9rZT1cIiNFMkFDMjBcIiBzdHJva2Utd2lkdGg9XCIxLjMzMzMzXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPjxwYXRoIGQ9XCJNOCAxMS4zMzNIOC4wMDY2N1wiIHN0cm9rZT1cIiNFMkFDMjBcIiBzdHJva2Utd2lkdGg9XCIxLjMzMzMzXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPjwvc3ZnPlxuICAgICAgPGRpdiBjbGFzcz1cImNxYS1mbGV4IGNxYS1mbGV4LXdyYXAgY3FhLWdhcC0yXCI+XG4gICAgICAgIDxjcWEtYmFkZ2UgXG4gICAgICAgICAgKm5nRm9yPVwibGV0IGJhZGdlIG9mIHZpc2libGVCYWRnZXNcIiBcbiAgICAgICAgICBbbGFiZWxdPVwiYmFkZ2UubGFiZWxcIlxuICAgICAgICAgIFtpY29uXT1cImJhZGdlLmljb25cIlxuICAgICAgICAgIFt2YXJpYW50XT1cImJhZGdlLnZhcmlhbnQgfHwgJ2RlZmF1bHQnXCJcbiAgICAgICAgPjwvY3FhLWJhZGdlPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8IS0tIFNlY3Rpb24gMjogVGl0bGUgJiBEZXNjcmlwdGlvbiAtLT5cbiAgICA8ZGl2IGNsYXNzPVwiY3FhLWZsZXggY3FhLWZsZXgtY29sIGNxYS1nYXAtM1wiPlxuICAgICAgPGgyIGNsYXNzPVwiY3FhLWZvbnQtbWVkaXVtIGNxYS10ZXh0LWxnIGNxYS1sZWFkaW5nLVsyMnB4XSBjcWEtdGV4dC10aXRsZVwiPlxuICAgICAgICB7eyB0aXRsZSB9fVxuICAgICAgPC9oMj5cbiAgICAgIDxwIGNsYXNzPVwiY3FhLXRleHQtYmFzZSBjcWEtZm9udC1ub3JtYWwgY3FhLXRleHQtZGVzY3JpcHRpb25cIj5cbiAgICAgICAge3sgZGVzY3JpcHRpb24gfX1cbiAgICAgIDwvcD5cbiAgICA8L2Rpdj5cblxuICA8IS0tIFNlY3Rpb24gMzogTWV0YWRhdGEgU2VjdGlvbiAoYWx3YXlzIHZpc2libGUpIC0tPlxuICA8ZGl2ICpuZ0lmPVwibWV0YWRhdGFcIiBjbGFzcz1cImNxYS1mbGV4IGNxYS1mbGV4LWNvbCBjcWEtZ2FwLTRcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY3FhLWJnLXN1cmZhY2UtZGVmYXVsdCBjcWEtcm91bmRlZC1bMTBweF0gY3FhLXB4LTQgY3FhLXB5LTMgY3FhLWJvcmRlci10IGNxYS1ib3JkZXItc29saWQgY3FhLWJvcmRlci10LXByaW1hcnktc3VyZmFjZVwiPlxuICAgICAgPGRpdiBjbGFzcz1cImNxYS1mbGV4IGNxYS1mbGV4LXdyYXAgY3FhLWl0ZW1zLWNlbnRlciBjcWEtZ2FwLVsyNXB4XVwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBpdGVtIG9mIG1ldGFkYXRhIHwga2V5dmFsdWU7IGxldCBsYXN0ID0gbGFzdFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1nYXAtWzZweF1cIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3FhLXRleHQteHMgY3FhLWZvbnQtbm9ybWFsIGNxYS1mb250LWludGVyIGNxYS10ZXh0LW1ldGFkYXRhLWtleVwiPlxuICAgICAgICAgICAgICB7eyBpdGVtLmtleSB9fTpcbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuIFxuICAgICAgICAgICAgICBbbmdDbGFzc109XCJnZXRNZXRhZGF0YVZhbHVlQ2xhc3NlcyhpdGVtLmtleSwgaXRlbS52YWx1ZSlcIiBcbiAgICAgICAgICAgICAgW25nU3R5bGVdPVwiZ2V0TWV0YWRhdGFWYWx1ZVN0eWxlKGl0ZW0ua2V5LCBpdGVtLnZhbHVlKVwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiY3FhLWZvbnQtbm9ybWFsIGNxYS1sZWFkaW5nLVsxOHB4XSBjcWEtZm9udC1pbnRlciBjcWEtdGV4dC1zbSBjcWEtdGV4dC10aXRsZVwiPlxuICAgICAgICAgICAgICB7eyBnZXRNZXRhZGF0YVZhbHVlKGl0ZW0udmFsdWUpIH19XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiAqbmdJZj1cIiFsYXN0XCIgY2xhc3M9XCJjcWEtaC00IGNxYS13LXB4IGNxYS1iZy1ncmF5LTIwMFwiPjwvZGl2PlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPCEtLSBTZWN0aW9uIDQ6IE1ldGFkYXRhIHRvZ2dsZSAtLT5cbiAgICA8YnV0dG9uICpuZ0lmPVwibWV0YWRhdGEgJiYgKGlzUHJlcmVxdWlzaXRlTWlzc2luZyB8fCBpc1Rlc3REYXRhTWlzc2luZylcIiB0eXBlPVwiYnV0dG9uXCJcbiAgICAgIGNsYXNzPVwiY3FhLXRleHQtc20gY3FhLXRleHQtcHJpbWFyeSBjcWEtaW5saW5lLWZsZXggY3FhLWZvbnQtaW50ZXIgY3FhLWl0ZW1zLWNlbnRlciBjcWEtZ2FwLVs2cHhdXCJcbiAgICAgIChjbGljayk9XCJ0b2dnbGVNZXRhZGF0YSgpXCI+XG4gICAgICA8c3Bhbj57eyBtZXRhZGF0YUV4cGFuZGVkID8gJ0hpZGUgZGV0YWlscycgOiAnU2hvdyBkZXRhaWxzJyB9fTwvc3Bhbj5cbiAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImNxYS13LVsxNHB4XSBjcWEtaC1bMTRweF0gY3FhLXRleHQtWzE0cHhdIGNxYS1sZWFkaW5nLVsxNHB4XVwiPlxuICAgICAgICB7eyBtZXRhZGF0YUV4cGFuZGVkID8gJ2V4cGFuZF9sZXNzJyA6ICdleHBhbmRfbW9yZScgfX1cbiAgICAgIDwvbWF0LWljb24+XG4gICAgPC9idXR0b24+XG5cbiAgPCEtLSBTZWN0aW9uIDU6IFNlY3Rpb25zICh0b2dnbGUgdmlzaWJpbGl0eSkgLS0+XG4gIDxkaXYgKm5nSWY9XCJtZXRhZGF0YUV4cGFuZGVkICYmIHZpc2libGVTZWN0aW9ucz8ubGVuZ3RoXCIgY2xhc3M9XCJjcWEtZmxleCBjcWEtZmxleC1jb2wgY3FhLWdhcC00XCI+XG4gICAgPGRpdlxuICAgICAgKm5nRm9yPVwibGV0IHNlY3Rpb24gb2YgdmlzaWJsZVNlY3Rpb25zXCJcbiAgICAgIGNsYXNzPVwiY3FhLWJvcmRlci1sLTQgY3FhLWJvcmRlci1zb2xpZCBjcWEtYm9yZGVyLVsjRkJCRjI0XSBjcWEtcm91bmRlZC1bMTBweF0gY3FhLW92ZXJmbG93LWhpZGRlblwiXG4gICAgICBbbmdDbGFzc109XCJnZXRTZWN0aW9uQm9yZGVyQ2xhc3Moc2VjdGlvbilcIlxuICAgID5cbiAgICAgIDxkaXYgY2xhc3M9XCJjcWEtcC1bMTBweF0gY3FhLXBsLVsyMHB4XSBjcWEtZmxleCBjcWEtZmxleC1jb2wgY3FhLWdhcC0zXCI+XG4gICAgICAgIDwhLS0gU2VjdGlvbiBUaXRsZSB3aXRoIElubGluZSBDb2xsYXBzZSBCdXR0b24gLS0+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1nYXAtMlwiPlxuICAgICAgICAgIDxoMyBbbmdDbGFzc109XCJnZXRTZWN0aW9uVGl0bGVDbGFzc2VzKHNlY3Rpb24pXCIgY2xhc3M9XCJcIj5cbiAgICAgICAgICAgIHt7IHNlY3Rpb24udGl0bGUgfX1cbiAgICAgICAgICA8L2gzPlxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgY2xhc3M9XCJjcWEtbWwtYXV0byBjcWEtaW5saW5lLWZsZXhcIlxuICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZVNlY3Rpb24oc2VjdGlvbilcIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJzZWN0aW9uLmV4cGFuZGVkICE9PSBmYWxzZSA/ICdDb2xsYXBzZSBzZWN0aW9uJyA6ICdFeHBhbmQgc2VjdGlvbidcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxtYXQtaWNvbiBbbmdDbGFzc109XCJnZXRTZWN0aW9uSWNvbkNvbG9yKHNlY3Rpb24pXCIgY2xhc3M9XCJjcWEtdy00IGNxYS1oLTQgY3FhLXRleHQtWzE2cHhdIGNxYS1sZWFkaW5nLVsxNnB4XVwiPlxuICAgICAgICAgICAgICB7eyBzZWN0aW9uLmV4cGFuZGVkICE9PSBmYWxzZSA/ICdleHBhbmRfbGVzcycgOiAnZXhwYW5kX21vcmUnIH19XG4gICAgICAgICAgICA8L21hdC1pY29uPlxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8IS0tIENvbGxhcHNpYmxlIENvbnRlbnQ6IFJlYXNvbiBhbmQgQWN0aW9uIEJ1dHRvbiAtLT5cbiAgICAgICAgPGRpdiAqbmdJZj1cInNlY3Rpb24uZXhwYW5kZWQgIT09IGZhbHNlXCIgY2xhc3M9XCJjcWEtZmxleCBjcWEtZmxleC1jb2wgY3FhLWdhcC1bMTBweF1cIj5cbiAgICAgICAgICA8IS0tIFJlYXNvbiAtLT5cbiAgICAgICAgICA8cCBjbGFzcz1cImNxYS10ZXh0LXNtIGNxYS1mb250LW5vcm1hbCBjcWEtbGVhZGluZy1bMThweF0gY3FhLXRleHQtbmV1dHJhbC02MDBcIj5cbiAgICAgICAgICAgIFJlYXNvbjoge3sgc2VjdGlvbi5yZWFzb24gfX1cbiAgICAgICAgICA8L3A+XG4gICAgICAgICAgXG4gICAgICAgICAgPCEtLSBBY3Rpb24gQnV0dG9uIC0tPlxuICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICA8Y3FhLWJ1dHRvblxuICAgICAgICAgICAgICB2YXJpYW50PVwib3V0bGluZWRcIlxuICAgICAgICAgICAgICAoY2xpY2tlZCk9XCJvblNlY3Rpb25BY3Rpb24oc2VjdGlvbi5pZClcIlxuICAgICAgICAgICAgICBbY3VzdG9tQ2xhc3NdPVwiJ2NxYS1weS1bOXB4XSBjcWEtdGV4dC1bMTRweF0gY3FhLWxlYWRpbmctWzE3cHhdIGNxYS1ib3JkZXItc2xhdGUgY3FhLXRleHQtc2xhdGUnXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3sgc2VjdGlvbi5hY3Rpb25CdXR0b25MYWJlbCB9fVxuICAgICAgICAgICAgPC9jcWEtYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgXG4gIDxjcWEtYnV0dG9uXG4gICAgICB2YXJpYW50PVwiZmlsbGVkXCJcbiAgICAgIChjbGlja2VkKT1cIm9uTWFpbkFjdGlvbigpXCJcbiAgICAgIFtkaXNhYmxlZF09XCJpc0FwcGx5aW5nXCJcbiAgICAgIFtjdXN0b21DbGFzc109XCInIWNxYS13LWZ1bGwgIWNxYS10ZXh0LVsxNHB4XSAhY3FhLWxlYWRpbmctWzIwcHhdICFjcWEtZm9udC1zZW1pYm9sZCdcIlxuICAgID5cbiAgICAgIDxzdmcgd2lkdGg9XCIxOFwiIGhlaWdodD1cIjE4XCIgdmlld0JveD1cIjAgMCAxOCAxOFwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPjxwYXRoIGQ9XCJNOS4wMTg4MiAwQzkuMTI5NzkgMC4wNDU0NzY3IDkuMTc3MTggMC4xNTY1MyA5LjIyMjYxIDAuMjU5NjkxQzkuMjQ1MzkgMC4zMTk3OTkgOS4yNjYyOCAwLjM4MDIzNCA5LjI4NjU3IDAuNDQxMTVDOS4yOTQ1MiAwLjQ2NDQ5MyA5LjMwMjQ2IDAuNDg3ODM2IDkuMzEwNjUgMC41MTE4ODZDOS40MTYxMyAwLjgyNjAwOSA5LjUxMDA4IDEuMTQzNSA5LjYwNDU3IDEuNDYwNzZDOS42MjU5MyAxLjUzMjM4IDkuNjQ3MzkgMS42MDM5NyA5LjY2ODg1IDEuNjc1NTdDOS43NzgxIDIuMDQwMDcgOS44ODY1NCAyLjQwNDggOS45OTQzOCAyLjc2OTY5QzEwLjAwOTUgMi44MjA5MyAxMC4wMjQ3IDIuODcyMTggMTAuMDM5OCAyLjkyMzQyQzEwLjA4MjYgMy4wNjc5IDEwLjEyNTIgMy4yMTIzOSAxMC4xNjc3IDMuMzU2OTRDMTAuMjU3MyAzLjY2MjM5IDEwLjM0OTUgMy45NjY5NSAxMC40NDc2IDQuMjcwMDJDMTAuNDU2MSA0LjI5NjUzIDEwLjQ2NDcgNC4zMjMwNSAxMC40NzM1IDQuMzUwMzZDMTAuNzI4NCA1LjEyOTk5IDExLjA4OTYgNS44Mjg3NSAxMS42ODE4IDYuNDIzOTNDMTEuNjk2NSA2LjQzOTQgMTEuNzExMSA2LjQ1NDg4IDExLjcyNjIgNi40NzA4M0MxMS45NzkgNi43Mjg3NSAxMi4zMDM0IDYuOTM1NDEgMTIuNjI3NiA3LjEwMjIxQzEyLjY0NDEgNy4xMTA4NSAxMi42NjA2IDcuMTE5NDggMTIuNjc3NiA3LjEyODM4QzEzLjYzMTcgNy42MTg1MSAxNC43NzkgNy44MzQwNyAxNS44MTI0IDguMTIxMDFDMTYuMjY1MiA4LjI0NjgxIDE2LjcxNjYgOC4zNzY1OCAxNy4xNjYzIDguNTEyMDZDMTcuMTk3OSA4LjUyMTU3IDE3LjIyOTYgOC41MzEwNyAxNy4yNjEyIDguNTQwNTVDMTcuMzU1NyA4LjU2ODkgMTcuNDUgOC41OTc3NCAxNy41NDQyIDguNjI2OTRDMTcuNTY2MiA4LjYzMzU4IDE3LjU4ODIgOC42NDAyMyAxNy42MTA4IDguNjQ3MDdDMTcuNzQwNiA4LjY4ODEyIDE3Ljg2NDggOC43MzY1OCAxNy45NzEzIDguODIwNTRDMTguMDAzOCA4Ljg4ODM3IDE4LjAwMzggOC44ODgzNyAxNy45OTUgOC45NTYxOUMxNy44OTEzIDkuMDU0NzIgMTcuNzg4NCA5LjEwMDkyIDE3LjY1MTYgOS4xNDU5OUMxNy42MzIgOS4xNTI2NCAxNy42MTI0IDkuMTU5MyAxNy41OTIzIDkuMTY2MTVDMTcuMzYxMiA5LjI0MzY2IDE3LjEyNyA5LjMxMTQ5IDE2Ljg5MjUgOS4zNzg3MUMxNi44NDQ0IDkuMzkyNjEgMTYuNzk2MyA5LjQwNjUxIDE2Ljc0ODIgOS40MjA0MkMxNi40NTE0IDkuNTA2MDMgMTYuMTU0MiA5LjU4OTggMTUuODU2NiA5LjY3MjYzQzE1LjQ2NDYgOS43ODE3NSAxNS4wNzMzIDkuODkyNjggMTQuNjgyMyAxMC4wMDQ5QzE0LjYxODIgMTAuMDIzMiAxNC41NTQxIDEwLjA0MTYgMTQuNDkgMTAuMDU5OEMxNC4xNTM0IDEwLjE1NTcgMTMuODE4NSAxMC4yNTUxIDEzLjQ4NjMgMTAuMzY0MkMxMy40NTg3IDEwLjM3MzIgMTMuNDMxMiAxMC4zODIyIDEzLjQwMjggMTAuMzkxNUMxMi4yOTAyIDEwLjc2MTYgMTEuNDQyMiAxMS40NTIyIDEwLjkxMTQgMTIuNDYyQzEwLjYyNTMgMTMuMDI5NSAxMC40NTY1IDEzLjY0MzIgMTAuMjg0MyAxNC4yNDg5QzEwLjIzNzcgMTQuNDEyNCAxMC4xODgyIDE0LjU3NDkgMTAuMTM4MSAxNC43Mzc0QzEwLjA5ODggMTQuODY1MiAxMC4wNjA0IDE0Ljk5MzMgMTAuMDIzIDE1LjEyMTZDMTAuMDE4NSAxNS4xMzY5IDEwLjAxNDEgMTUuMTUyMiAxMC4wMDk1IDE1LjE2NzlDOS45ODc4OCAxNS4yNDE5IDkuOTY2MzggMTUuMzE1OSA5Ljk0NTAzIDE1LjM4OTlDOS44OTAzOSAxNS41Nzc2IDkuODMxNTYgMTUuNzYzNyA5Ljc3MTExIDE1Ljk0OThDOS42NjM4MyAxNi4yODA0IDkuNTY2MiAxNi42MTM1IDkuNDY5MTcgMTYuOTQ3QzkuMzIyODggMTcuNDQ5MSA5LjMyMjg4IDE3LjQ0OTEgOS4yMzk5MyAxNy42OTA1QzkuMjM0NDMgMTcuNzA2NyA5LjIyODkzIDE3LjcyMjkgOS4yMjMyNiAxNy43Mzk2QzkuMTkyOTggMTcuODI1NiA5LjE2MTgzIDE3LjkwNDcgOS4xMDQ1MyAxNy45Nzc0QzkuMDE3MzQgMTcuOTk1OCA5LjAxNzM0IDE3Ljk5NTggOC45MzkwMSAxOEM4Ljg0OTQ2IDE3Ljg3NTIgOC43OTAxNiAxNy43NTQyIDguNzQyNjUgMTcuNjEwMkM4LjczNTc0IDE3LjU4OTcgOC43Mjg4MiAxNy41NjkzIDguNzIxNyAxNy41NDgzQzguNjMzNjggMTcuMjg1IDguNTU1MDIgMTcuMDE4OSA4LjQ3NjM0IDE2Ljc1MjlDOC40NTgzMiAxNi42OTIxIDguNDQwMjIgMTYuNjMxMyA4LjQyMjExIDE2LjU3MDVDOC4yODcyIDE2LjExNzMgOC4xNTQ1MSAxNS42NjM1IDguMDIyMDIgMTUuMjA5NkM3LjQ3MDE0IDEyLjk2NDUgNy40NzAxNCAxMi45NjQ1IDYuMDc4IDExLjE0OTNDNi4wNTU2OSAxMS4xMzE5IDYuMDMzMzggMTEuMTE0NSA2LjAxMDM5IDExLjA5NjZDNS4wOTgyNiAxMC4zOTggMy44OTY2NyAxMC4xMzk0IDIuNzk2MyA5LjgzNjI3QzIuNTI0MTUgOS43NjEyNCAyLjI1MjEgOS42ODU4NyAxLjk4MDA2IDkuNjEwNDZDMS45NTYyOCA5LjYwMzg2IDEuOTU2MjggOS42MDM4NiAxLjkzMjAxIDkuNTk3MTRDMS41Mzk2MiA5LjQ4ODM0IDEuMTQ3MzUgOS4zNzkyNSAwLjc1NjQ0OCA5LjI2NTY2QzAuNzM5OTExIDkuMjYwODkgMC43MjMzNzUgOS4yNTYxMiAwLjcwNjMzOCA5LjI1MTIxQzAuMTA1Nzk4IDkuMDc3NjcgMC4xMDU3OTggOS4wNzc2NyAwLjAwMTI5MzA3IDguOTU2MTlDLTAuMDAxNjYyNTIgOC45MDEwOCAtMC4wMDE2NjI1MiA4LjkwMTA4IDAuMDI0OTM3OCA4Ljg0MzE1QzAuMTM0MTY3IDguNzQwOCAwLjI0MDE1MyA4LjY5Njk2IDAuMzg0MzIgOC42NTIzOEMwLjQwNTE5NCA4LjY0NTY3IDAuNDI2MDY4IDguNjM4OTcgMC40NDc1NzQgOC42MzIwNkMwLjUxMTUwNiA4LjYxMTY0IDAuNTc1NTc3IDguNTkxNjkgMC42Mzk3MDIgOC41NzE4M0MwLjY1ODAwMSA4LjU2NjA5IDAuNjc2MzAxIDguNTYwMzUgMC42OTUxNTUgOC41NTQ0M0MwLjgyNDU3IDguNTEzODUgMC45NTQ0NSA4LjQ3NDc5IDEuMDg0NTIgOC40MzYxOEMxLjExNjQ4IDguNDI2NjUgMS4xMTY0OCA4LjQyNjY1IDEuMTQ5MDkgOC40MTY5M0MxLjcwNDU0IDguMjUxNzQgMi4yNjM2MSA4LjA5ODAxIDIuODIyNTIgNy45NDM5MkMzLjIzODk5IDcuODI5MDkgMy42NTQ3NiA3LjcxMjM2IDQuMDY5MjEgNy41OTA5N0M0LjA4ODI1IDcuNTg1NDIgNC4xMDczIDcuNTc5ODcgNC4xMjY5MiA3LjU3NDE1QzUuMDg3IDcuMjkzOTMgNi4wMjU1NyA2Ljg5NjMyIDYuNjQ1NDcgNi4xMDc0QzYuNjU0NzUgNi4wOTU2OSA2LjY2NDAzIDYuMDgzOTkgNi42NzM2IDYuMDcxOTRDNy4zNjM5NSA1LjE5NjMgNy42MzMxNSA0LjEzMTQ1IDcuOTMzOTEgMy4wOTI0MUM4LjAzMjg1IDIuNzUwNjkgOC4xMzI5OCAyLjQwOTI5IDguMjMzNDUgMi4wNjc5OEM4LjI2MTI3IDEuOTczNDcgOC4yODkwNiAxLjg3ODk0IDguMzE2NzMgMS43ODQzOUM4LjQyNzg4IDEuNDA0NTggOC41NDA3IDEuMDI1MjggOC42NiAwLjY0NzcyN0M4LjY3MTE2IDAuNjEyMzcyIDguNjgyMjcgMC41NzcwMDEgOC42OTMzMyAwLjU0MTYxNEM4Ljg2MDM1IDAuMDA3OTc1MjIgOC44NjAzNSAwLjAwNzk3NTIyIDkuMDE4ODIgMFpcIiBmaWxsPVwiI0ZCRkNGRlwiLz48cGF0aCBkPVwiTTE0LjQ3MTkgMS4xMTA2OUMxNC41ODA1IDEuMjI4MTcgMTQuNjAyMiAxLjM2NjI0IDE0LjYzNiAxLjUxNjI1QzE0Ljc0ODcgMS45ODc1MSAxNC44Nzg2IDIuNDIwODQgMTUuMzI5MyAyLjY5NDZDMTUuNjA3NCAyLjg0MTY3IDE1LjkzODkgMi45MDg1OSAxNi4yNDcgMi45NzE4QzE2LjM3NzEgMi45OTkwMiAxNi40ODY5IDMuMDM1MTUgMTYuNTk4NSAzLjEwNzRDMTYuNjIzNiAzLjE0NTU1IDE2LjYyMzYgMy4xNDU1NSAxNi42MjIxIDMuMjExOTdDMTYuNTk2MyAzLjI5MjczIDE2LjU3MzYgMy4zMTg3OCAxNi41MDU0IDMuMzcxNjVDMTYuNDMwOCAzLjM5NTQ5IDE2LjQzMDggMy4zOTU0OSAxNi4zNDEzIDMuNDE0MDRDMTYuMzA3NSAzLjQyMTQ3IDE2LjI3MzYgMy40Mjg5OCAxNi4yMzk4IDMuNDM2NTZDMTYuMjIxNyAzLjQ0MDU4IDE2LjIwMzYgMy40NDQ2IDE2LjE4NDkgMy40NDg3NEMxNS42MzM5IDMuNTcwNjIgMTUuNjMzOSAzLjU3MDYyIDE1LjE1NzYgMy44NDY0NUMxNS4xNDIxIDMuODU4MzcgMTUuMTI2NyAzLjg3MDI5IDE1LjExMDcgMy44ODI1N0MxNC43NzAzIDQuMTY5NTkgMTQuNjk4MyA0LjY0NzAzIDE0LjU5NTggNS4wNDY5OUMxNC41OSA1LjA2ODk2IDE0LjU4NDEgNS4wOTA5MiAxNC41NzggNS4xMTM1NUMxNC41NzMgNS4xMzMgMTQuNTY3OSA1LjE1MjQ0IDE0LjU2MjcgNS4xNzI0OEMxNC41NDA1IDUuMjMxODUgMTQuNTE3NiA1LjI3MDU3IDE0LjQ3MTkgNS4zMTYwN0MxNC4zNDQ3IDUuMzMxNTIgMTQuMzQ0NyA1LjMzMTUyIDE0LjI4MjggNS4zMTYwN0MxNC4xODQzIDUuMjQzMDkgMTQuMTYyMyA1LjE1OTk3IDE0LjEzNjYgNS4wNDgyOEMxNC4xMzIyIDUuMDMwOTkgMTQuMTI3OSA1LjAxMzY5IDE0LjEyMzUgNC45OTU4N0MxNC4xMDk4IDQuOTQwNjQgMTQuMDk2NSA0Ljg4NTMxIDE0LjA4MzMgNC44Mjk5NkMxMy45Nzk2IDQuMzk4OTEgMTMuODYyNSAzLjk3NiAxMy40NDkgMy43MjMzM0MxMy4xMjU4IDMuNTUxMDEgMTIuNzMyOSAzLjQ2OTUxIDEyLjM3MTcgMy40MDM3QzEyLjI3MjcgMy4zODM5OSAxMi4yMTYgMy4zNTkyIDEyLjE1NDcgMy4yODEyMUMxMi4xNDE0IDMuMjAyMDggMTIuMTQxNCAzLjIwMjA4IDEyLjE1NDcgMy4xMjI5NEMxMi4yNDg5IDMuMDI5NzEgMTIuMzQ4IDMuMDA2OTYgMTIuNDc1NCAyLjk3ODgxQzEyLjUxNTYgMi45NjkzIDEyLjU1NTcgMi45NTk3MyAxMi41OTU4IDIuOTUwMUMxMi42MTY1IDIuOTQ1MTYgMTIuNjM3MiAyLjk0MDIyIDEyLjY1ODYgMi45MzUxMkMxMi43NjQyIDIuOTA5MTEgMTIuODY4OSAyLjg3OTk1IDEyLjk3MzQgMi44NTAyMUMxMi45OTI0IDIuODQ0OTQgMTMuMDExNCAyLjgzOTY3IDEzLjAzMSAyLjgzNDI0QzEzLjI0MzYgMi43NzM0NiAxMy40MjcxIDIuNjk1NzEgMTMuNTk3MSAyLjU1NzdDMTMuNjEyOSAyLjU0NTIzIDEzLjYyODggMi41MzI3NiAxMy42NDUxIDIuNTE5OUMxMy45MDk2IDIuMjkyMjggMTMuOTk5NSAxLjk1MDMyIDE0LjA4MSAxLjYzMTI0QzE0LjA4NzMgMS42MDcwMiAxNC4wOTM1IDEuNTgyOCAxNC4wOTk5IDEuNTU3ODRDMTQuMTEyMyAxLjUwOTE4IDE0LjEyNDQgMS40NjA0NiAxNC4xMzYzIDEuNDExN0MxNC4xNDQ5IDEuMzc3NzYgMTQuMTQ0OSAxLjM3Nzc2IDE0LjE1MzUgMS4zNDMxNUMxNC4xNTg1IDEuMzIyODggMTQuMTYzNSAxLjMwMjYxIDE0LjE2ODYgMS4yODE3MkMxNC4xOTA0IDEuMjE3MTkgMTQuMjE5IDEuMTY2NTIgMTQuMjU5MSAxLjExMDY5QzE0LjMzNjIgMS4wNzM4NSAxNC4zOTAzIDEuMDkwNSAxNC40NzE5IDEuMTEwNjlaXCIgZmlsbD1cIiNGQkZDRkZcIi8+PHBhdGggZD1cIk0zLjU5MDg5IDEyLjQ5NDJDMy42MTkwMiAxMi40OTQ0IDMuNjE5MDIgMTIuNDk0NCAzLjY0NzcyIDEyLjQ5NDZDMy44NDk1NCAxMi41MDA0IDMuOTg2MDkgMTIuNTYyMyA0LjEzNDcyIDEyLjY5MkM0LjMwNzY3IDEyLjg3MDcgNC4zODc1MyAxMy4wNzIyIDQuMzgyOTkgMTMuMzEzQzQuMzYzNTcgMTMuNTA4MiA0LjI0MzE2IDEzLjY3ODcgNC4wOTU0NyAxMy44MTA3QzMuOTIxNjMgMTMuOTQ0OCAzLjc0NjI2IDEzLjk4OTIgMy41MjQxMSAxMy45ODNDMy4zMzY4MSAxMy45NjIxIDMuMTYwNiAxMy44NzcgMy4wMjc4NSAxMy43NDlDMi44NjI3NiAxMy41MzM2IDIuODE0NSAxMy4zMzYxIDIuODM4NjkgMTMuMDcwN0MyLjg4ODY3IDEyLjg2MTggMy4wMzI3NCAxMi42OTIzIDMuMjE3MDEgMTIuNTczM0MzLjM0NTAyIDEyLjUxMTMgMy40NDc5OCAxMi40OTMgMy41OTA4OSAxMi40OTQyWlwiIGZpbGw9XCIjRkJGQ0ZGXCIvPjwvc3ZnPlxuICAgICAge3sgaXNBcHBseWluZyA/ICdBcHBseWluZyBzdWdnZXN0aW9uJyA6ICdBcHBseSBzdWdnZXN0aW9uJyB9fVxuICAgIDwvY3FhLWJ1dHRvbj5cbiAgPC9kaXY+XG48L2Rpdj5cbiBcbiJdfQ==
@@ -18,20 +18,20 @@ export class ProgressTextCardComponent {
18
18
  }
19
19
  deltaClass() {
20
20
  if (this.deltaPercent === undefined || this.deltaPercent === null || Number.isNaN(this.deltaPercent)) {
21
- return 'text-[#6B7280]';
21
+ return 'cqa-text-[#6B7280]';
22
22
  }
23
23
  if (this.deltaPercent > 0)
24
- return 'text-[#10B981]';
24
+ return 'cqa-text-[#0B9D68]';
25
25
  if (this.deltaPercent < 0)
26
- return 'text-[#EF4444]';
27
- return 'text-[#6B7280]';
26
+ return 'cqa-text-[#EF4444]';
27
+ return 'cqa-text-[#6B7280]';
28
28
  }
29
29
  }
30
30
  ProgressTextCardComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: ProgressTextCardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
31
- ProgressTextCardComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: ProgressTextCardComponent, selector: "cqa-progress-text-card", inputs: { value: "value", label: "label", deltaPercent: "deltaPercent", deltaSuffix: "deltaSuffix", 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] cqa-p-4 sm:cqa-p-5\"\n [ngClass]=\"cardClass\">\n <div class=\"cqa-flex cqa-items-baseline cqa-gap-2\">\n <div\n class=\"cqa-text-[28px] sm:cqa-text-[32px] cqa-leading-[36px] cqa-font-bold cqa-tracking-[-0.3px] cqa-text-[#111827]\">\n {{ percentText }}</div>\n <div class=\"cqa-text-[18px] sm:cqa-text-[20px] cqa-leading-[28px] cqa-text-[#111827]\">{{ label }}</div>\n </div>\n <div class=\"cqa-mt-4 cqa-w-full cqa-h-[14px] cqa-bg-[#E5E7EB] cqa-rounded-full cqa-overflow-hidden\">\n <div class=\"cqa-h-full cqa-rounded-full\" [style.width]=\"fillWidth\"\n [style.background]=\"'linear-gradient(90deg, #DD5A38 0%, #F59E0B 40%, #10B981 100%)'\">\n </div>\n </div>\n <div class=\"cqa-mt-2 cqa-text-[14px] cqa-leading-5\" [ngClass]=\"deltaClass()\" *ngIf=\"deltaPercent !== undefined\">\n {{ deltaPercent > 0 ? '+' : ''}}{{ deltaPercent }}% {{ deltaSuffix }}\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 });
31
+ ProgressTextCardComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: ProgressTextCardComponent, selector: "cqa-progress-text-card", inputs: { value: "value", label: "label", deltaPercent: "deltaPercent", deltaSuffix: "deltaSuffix", 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] cqa-p-4 sm:cqa-p-5\"\n [ngClass]=\"cardClass\">\n <div class=\"cqa-flex cqa-items-baseline cqa-gap-2\">\n <div\n class=\"cqa-text-[16px] cqa-leading-[24px] cqa-font-bold cqa-tracking-[-0.3px] cqa-text-[#111827]\">\n {{ percentText }}</div>\n <div class=\"cqa-text-[16px] cqa-leading-[24px] cqa-text-[#111827]\">{{ label }}</div>\n </div>\n <div class=\"cqa-mt-4 cqa-mb-2 cqa-w-full cqa-h-[14px] cqa-bg-[#E5E7EB] cqa-rounded-full cqa-overflow-hidden\">\n <div class=\"cqa-h-full cqa-rounded-full\" [style.width]=\"fillWidth\"\n [style.background]=\"'linear-gradient(90deg, #DD5A38 0%, #F59E0B 40%, #10B981 100%)'\">\n </div>\n </div>\n <div class=\"cqa-text-[12px] cqa-leading-5\" [ngClass]=\"deltaClass()\" *ngIf=\"deltaPercent !== undefined\">\n {{ deltaPercent > 0 ? '+' : ''}}{{ deltaPercent }}% {{ deltaSuffix }}\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 });
32
32
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: ProgressTextCardComponent, decorators: [{
33
33
  type: Component,
34
- args: [{ selector: 'cqa-progress-text-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] cqa-p-4 sm:cqa-p-5\"\n [ngClass]=\"cardClass\">\n <div class=\"cqa-flex cqa-items-baseline cqa-gap-2\">\n <div\n class=\"cqa-text-[28px] sm:cqa-text-[32px] cqa-leading-[36px] cqa-font-bold cqa-tracking-[-0.3px] cqa-text-[#111827]\">\n {{ percentText }}</div>\n <div class=\"cqa-text-[18px] sm:cqa-text-[20px] cqa-leading-[28px] cqa-text-[#111827]\">{{ label }}</div>\n </div>\n <div class=\"cqa-mt-4 cqa-w-full cqa-h-[14px] cqa-bg-[#E5E7EB] cqa-rounded-full cqa-overflow-hidden\">\n <div class=\"cqa-h-full cqa-rounded-full\" [style.width]=\"fillWidth\"\n [style.background]=\"'linear-gradient(90deg, #DD5A38 0%, #F59E0B 40%, #10B981 100%)'\">\n </div>\n </div>\n <div class=\"cqa-mt-2 cqa-text-[14px] cqa-leading-5\" [ngClass]=\"deltaClass()\" *ngIf=\"deltaPercent !== undefined\">\n {{ deltaPercent > 0 ? '+' : ''}}{{ deltaPercent }}% {{ deltaSuffix }}\n </div>\n </div>\n</div>", styles: [] }]
34
+ args: [{ selector: 'cqa-progress-text-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] cqa-p-4 sm:cqa-p-5\"\n [ngClass]=\"cardClass\">\n <div class=\"cqa-flex cqa-items-baseline cqa-gap-2\">\n <div\n class=\"cqa-text-[16px] cqa-leading-[24px] cqa-font-bold cqa-tracking-[-0.3px] cqa-text-[#111827]\">\n {{ percentText }}</div>\n <div class=\"cqa-text-[16px] cqa-leading-[24px] cqa-text-[#111827]\">{{ label }}</div>\n </div>\n <div class=\"cqa-mt-4 cqa-mb-2 cqa-w-full cqa-h-[14px] cqa-bg-[#E5E7EB] cqa-rounded-full cqa-overflow-hidden\">\n <div class=\"cqa-h-full cqa-rounded-full\" [style.width]=\"fillWidth\"\n [style.background]=\"'linear-gradient(90deg, #DD5A38 0%, #F59E0B 40%, #10B981 100%)'\">\n </div>\n </div>\n <div class=\"cqa-text-[12px] cqa-leading-5\" [ngClass]=\"deltaClass()\" *ngIf=\"deltaPercent !== undefined\">\n {{ deltaPercent > 0 ? '+' : ''}}{{ deltaPercent }}% {{ deltaSuffix }}\n </div>\n </div>\n</div>", styles: [] }]
35
35
  }], propDecorators: { value: [{
36
36
  type: Input
37
37
  }], label: [{
@@ -43,4 +43,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImpor
43
43
  }], cardClass: [{
44
44
  type: Input
45
45
  }] } });
46
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZ3Jlc3MtdGV4dC1jYXJkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvZGFzaGJvYXJkcy9wcm9ncmVzcy10ZXh0LWNhcmQvcHJvZ3Jlc3MtdGV4dC1jYXJkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvZGFzaGJvYXJkcy9wcm9ncmVzcy10ZXh0LWNhcmQvcHJvZ3Jlc3MtdGV4dC1jYXJkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7QUFRMUUsTUFBTSxPQUFPLHlCQUF5QjtJQU50QztRQU9XLFVBQUssR0FBVyxDQUFDLENBQUMsQ0FBQyxVQUFVO1FBQzdCLFVBQUssR0FBVyxtQkFBbUIsQ0FBQztRQUVwQyxnQkFBVyxHQUFXLGdCQUFnQixDQUFDO1FBQ3ZDLGNBQVMsR0FBVyxFQUFFLENBQUM7S0FvQmpDO0lBbEJDLElBQUksV0FBVztRQUNiLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM5RCxPQUFPLEdBQUcsQ0FBQyxHQUFHLENBQUM7SUFDakIsQ0FBQztJQUVELElBQUksU0FBUztRQUNYLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM5RCxPQUFPLENBQUMsR0FBRyxHQUFHLENBQUM7SUFDakIsQ0FBQztJQUVELFVBQVU7UUFDUixJQUFJLElBQUksQ0FBQyxZQUFZLEtBQUssU0FBUyxJQUFJLElBQUksQ0FBQyxZQUFZLEtBQUssSUFBSSxJQUFJLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxFQUFFO1lBQ3BHLE9BQU8sZ0JBQWdCLENBQUM7U0FDekI7UUFDRCxJQUFJLElBQUksQ0FBQyxZQUFZLEdBQUcsQ0FBQztZQUFFLE9BQU8sZ0JBQWdCLENBQUM7UUFDbkQsSUFBSSxJQUFJLENBQUMsWUFBWSxHQUFHLENBQUM7WUFBRSxPQUFPLGdCQUFnQixDQUFDO1FBQ25ELE9BQU8sZ0JBQWdCLENBQUM7SUFDMUIsQ0FBQzs7c0hBeEJVLHlCQUF5QjswR0FBekIseUJBQXlCLDRMQ1J0QyxxbUNBbUJNOzJGRFhPLHlCQUF5QjtrQkFOckMsU0FBUzsrQkFDRSx3QkFBd0IsbUJBR2pCLHVCQUF1QixDQUFDLE1BQU07OEJBR3RDLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjcWEtcHJvZ3Jlc3MtdGV4dC1jYXJkJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3Byb2dyZXNzLXRleHQtY2FyZC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogW10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBQcm9ncmVzc1RleHRDYXJkQ29tcG9uZW50IHtcbiAgQElucHV0KCkgdmFsdWU6IG51bWJlciA9IDA7IC8vIDAgLSAxMDBcbiAgQElucHV0KCkgbGFiZWw6IHN0cmluZyA9ICdUZXN0IFN1Y2Nlc3MgUmF0ZSc7XG4gIEBJbnB1dCgpIGRlbHRhUGVyY2VudD86IG51bWJlcjsgLy8gZS5nLiwgKzhcbiAgQElucHV0KCkgZGVsdGFTdWZmaXg6IHN0cmluZyA9ICdzaW5jZSBsYXN0IHJ1bic7XG4gIEBJbnB1dCgpIGNhcmRDbGFzczogc3RyaW5nID0gJyc7XG5cbiAgZ2V0IHBlcmNlbnRUZXh0KCk6IHN0cmluZyB7XG4gICAgY29uc3QgdiA9IE1hdGgubWF4KDAsIE1hdGgubWluKDEwMCwgTnVtYmVyKHRoaXMudmFsdWUpIHx8IDApKTtcbiAgICByZXR1cm4gYCR7dn0lYDtcbiAgfVxuXG4gIGdldCBmaWxsV2lkdGgoKTogc3RyaW5nIHtcbiAgICBjb25zdCB2ID0gTWF0aC5tYXgoMCwgTWF0aC5taW4oMTAwLCBOdW1iZXIodGhpcy52YWx1ZSkgfHwgMCkpO1xuICAgIHJldHVybiB2ICsgJyUnO1xuICB9XG5cbiAgZGVsdGFDbGFzcygpOiBzdHJpbmcge1xuICAgIGlmICh0aGlzLmRlbHRhUGVyY2VudCA9PT0gdW5kZWZpbmVkIHx8IHRoaXMuZGVsdGFQZXJjZW50ID09PSBudWxsIHx8IE51bWJlci5pc05hTih0aGlzLmRlbHRhUGVyY2VudCkpIHtcbiAgICAgIHJldHVybiAndGV4dC1bIzZCNzI4MF0nO1xuICAgIH1cbiAgICBpZiAodGhpcy5kZWx0YVBlcmNlbnQgPiAwKSByZXR1cm4gJ3RleHQtWyMxMEI5ODFdJztcbiAgICBpZiAodGhpcy5kZWx0YVBlcmNlbnQgPCAwKSByZXR1cm4gJ3RleHQtWyNFRjQ0NDRdJztcbiAgICByZXR1cm4gJ3RleHQtWyM2QjcyODBdJztcbiAgfVxufVxuXG5cbiIsIjxkaXYgaWQ9XCJjcWEtdWktcm9vdFwiPlxuICA8ZGl2XG4gICAgY2xhc3M9XCJjcWEtdy1mdWxsIGNxYS1ib3gtYm9yZGVyIGNxYS1mbGV4IGNxYS1mbGV4LWNvbCBjcWEtYmctd2hpdGUgY3FhLWJvcmRlciBjcWEtYm9yZGVyLXNvbGlkIGNxYS1ib3JkZXItWyNFNUU3RUJdIGNxYS1yb3VuZGVkLVsxMHB4XSBjcWEtcC00IHNtOmNxYS1wLTVcIlxuICAgIFtuZ0NsYXNzXT1cImNhcmRDbGFzc1wiPlxuICAgIDxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtaXRlbXMtYmFzZWxpbmUgY3FhLWdhcC0yXCI+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwiY3FhLXRleHQtWzI4cHhdIHNtOmNxYS10ZXh0LVszMnB4XSBjcWEtbGVhZGluZy1bMzZweF0gY3FhLWZvbnQtYm9sZCBjcWEtdHJhY2tpbmctWy0wLjNweF0gY3FhLXRleHQtWyMxMTE4MjddXCI+XG4gICAgICAgIHt7IHBlcmNlbnRUZXh0IH19PC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiY3FhLXRleHQtWzE4cHhdIHNtOmNxYS10ZXh0LVsyMHB4XSBjcWEtbGVhZGluZy1bMjhweF0gY3FhLXRleHQtWyMxMTE4MjddXCI+e3sgbGFiZWwgfX08L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiY3FhLW10LTQgY3FhLXctZnVsbCBjcWEtaC1bMTRweF0gY3FhLWJnLVsjRTVFN0VCXSBjcWEtcm91bmRlZC1mdWxsIGNxYS1vdmVyZmxvdy1oaWRkZW5cIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjcWEtaC1mdWxsIGNxYS1yb3VuZGVkLWZ1bGxcIiBbc3R5bGUud2lkdGhdPVwiZmlsbFdpZHRoXCJcbiAgICAgICAgW3N0eWxlLmJhY2tncm91bmRdPVwiJ2xpbmVhci1ncmFkaWVudCg5MGRlZywgI0RENUEzOCAwJSwgI0Y1OUUwQiA0MCUsICMxMEI5ODEgMTAwJSknXCI+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiY3FhLW10LTIgY3FhLXRleHQtWzE0cHhdIGNxYS1sZWFkaW5nLTVcIiBbbmdDbGFzc109XCJkZWx0YUNsYXNzKClcIiAqbmdJZj1cImRlbHRhUGVyY2VudCAhPT0gdW5kZWZpbmVkXCI+XG4gICAgICB7eyBkZWx0YVBlcmNlbnQgPiAwID8gJysnIDogJyd9fXt7IGRlbHRhUGVyY2VudCB9fSUge3sgZGVsdGFTdWZmaXggfX1cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj4iXX0=
46
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZ3Jlc3MtdGV4dC1jYXJkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvZGFzaGJvYXJkcy9wcm9ncmVzcy10ZXh0LWNhcmQvcHJvZ3Jlc3MtdGV4dC1jYXJkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvZGFzaGJvYXJkcy9wcm9ncmVzcy10ZXh0LWNhcmQvcHJvZ3Jlc3MtdGV4dC1jYXJkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7QUFRMUUsTUFBTSxPQUFPLHlCQUF5QjtJQU50QztRQU9XLFVBQUssR0FBVyxDQUFDLENBQUMsQ0FBQyxVQUFVO1FBQzdCLFVBQUssR0FBVyxtQkFBbUIsQ0FBQztRQUVwQyxnQkFBVyxHQUFXLGdCQUFnQixDQUFDO1FBQ3ZDLGNBQVMsR0FBVyxFQUFFLENBQUM7S0FvQmpDO0lBbEJDLElBQUksV0FBVztRQUNiLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM5RCxPQUFPLEdBQUcsQ0FBQyxHQUFHLENBQUM7SUFDakIsQ0FBQztJQUVELElBQUksU0FBUztRQUNYLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM5RCxPQUFPLENBQUMsR0FBRyxHQUFHLENBQUM7SUFDakIsQ0FBQztJQUVELFVBQVU7UUFDUixJQUFJLElBQUksQ0FBQyxZQUFZLEtBQUssU0FBUyxJQUFJLElBQUksQ0FBQyxZQUFZLEtBQUssSUFBSSxJQUFJLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxFQUFFO1lBQ3BHLE9BQU8sb0JBQW9CLENBQUM7U0FDN0I7UUFDRCxJQUFJLElBQUksQ0FBQyxZQUFZLEdBQUcsQ0FBQztZQUFFLE9BQU8sb0JBQW9CLENBQUM7UUFDdkQsSUFBSSxJQUFJLENBQUMsWUFBWSxHQUFHLENBQUM7WUFBRSxPQUFPLG9CQUFvQixDQUFDO1FBQ3ZELE9BQU8sb0JBQW9CLENBQUM7SUFDOUIsQ0FBQzs7c0hBeEJVLHlCQUF5QjswR0FBekIseUJBQXlCLDRMQ1J0QywrakNBbUJNOzJGRFhPLHlCQUF5QjtrQkFOckMsU0FBUzsrQkFDRSx3QkFBd0IsbUJBR2pCLHVCQUF1QixDQUFDLE1BQU07OEJBR3RDLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjcWEtcHJvZ3Jlc3MtdGV4dC1jYXJkJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3Byb2dyZXNzLXRleHQtY2FyZC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogW10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBQcm9ncmVzc1RleHRDYXJkQ29tcG9uZW50IHtcbiAgQElucHV0KCkgdmFsdWU6IG51bWJlciA9IDA7IC8vIDAgLSAxMDBcbiAgQElucHV0KCkgbGFiZWw6IHN0cmluZyA9ICdUZXN0IFN1Y2Nlc3MgUmF0ZSc7XG4gIEBJbnB1dCgpIGRlbHRhUGVyY2VudD86IG51bWJlcjsgLy8gZS5nLiwgKzhcbiAgQElucHV0KCkgZGVsdGFTdWZmaXg6IHN0cmluZyA9ICdzaW5jZSBsYXN0IHJ1bic7XG4gIEBJbnB1dCgpIGNhcmRDbGFzczogc3RyaW5nID0gJyc7XG5cbiAgZ2V0IHBlcmNlbnRUZXh0KCk6IHN0cmluZyB7XG4gICAgY29uc3QgdiA9IE1hdGgubWF4KDAsIE1hdGgubWluKDEwMCwgTnVtYmVyKHRoaXMudmFsdWUpIHx8IDApKTtcbiAgICByZXR1cm4gYCR7dn0lYDtcbiAgfVxuXG4gIGdldCBmaWxsV2lkdGgoKTogc3RyaW5nIHtcbiAgICBjb25zdCB2ID0gTWF0aC5tYXgoMCwgTWF0aC5taW4oMTAwLCBOdW1iZXIodGhpcy52YWx1ZSkgfHwgMCkpO1xuICAgIHJldHVybiB2ICsgJyUnO1xuICB9XG5cbiAgZGVsdGFDbGFzcygpOiBzdHJpbmcge1xuICAgIGlmICh0aGlzLmRlbHRhUGVyY2VudCA9PT0gdW5kZWZpbmVkIHx8IHRoaXMuZGVsdGFQZXJjZW50ID09PSBudWxsIHx8IE51bWJlci5pc05hTih0aGlzLmRlbHRhUGVyY2VudCkpIHtcbiAgICAgIHJldHVybiAnY3FhLXRleHQtWyM2QjcyODBdJztcbiAgICB9XG4gICAgaWYgKHRoaXMuZGVsdGFQZXJjZW50ID4gMCkgcmV0dXJuICdjcWEtdGV4dC1bIzBCOUQ2OF0nO1xuICAgIGlmICh0aGlzLmRlbHRhUGVyY2VudCA8IDApIHJldHVybiAnY3FhLXRleHQtWyNFRjQ0NDRdJztcbiAgICByZXR1cm4gJ2NxYS10ZXh0LVsjNkI3MjgwXSc7XG4gIH1cbn1cblxuXG4iLCI8ZGl2IGlkPVwiY3FhLXVpLXJvb3RcIj5cbiAgPGRpdlxuICAgIGNsYXNzPVwiY3FhLXctZnVsbCBjcWEtYm94LWJvcmRlciBjcWEtZmxleCBjcWEtZmxleC1jb2wgY3FhLWJnLXdoaXRlIGNxYS1ib3JkZXIgY3FhLWJvcmRlci1zb2xpZCBjcWEtYm9yZGVyLVsjRTVFN0VCXSBjcWEtcm91bmRlZC1bMTBweF0gY3FhLXAtNCBzbTpjcWEtcC01XCJcbiAgICBbbmdDbGFzc109XCJjYXJkQ2xhc3NcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY3FhLWZsZXggY3FhLWl0ZW1zLWJhc2VsaW5lIGNxYS1nYXAtMlwiPlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cImNxYS10ZXh0LVsxNnB4XSBjcWEtbGVhZGluZy1bMjRweF0gY3FhLWZvbnQtYm9sZCBjcWEtdHJhY2tpbmctWy0wLjNweF0gY3FhLXRleHQtWyMxMTE4MjddXCI+XG4gICAgICAgIHt7IHBlcmNlbnRUZXh0IH19PC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiY3FhLXRleHQtWzE2cHhdIGNxYS1sZWFkaW5nLVsyNHB4XSBjcWEtdGV4dC1bIzExMTgyN11cIj57eyBsYWJlbCB9fTwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJjcWEtbXQtNCBjcWEtbWItMiBjcWEtdy1mdWxsIGNxYS1oLVsxNHB4XSBjcWEtYmctWyNFNUU3RUJdIGNxYS1yb3VuZGVkLWZ1bGwgY3FhLW92ZXJmbG93LWhpZGRlblwiPlxuICAgICAgPGRpdiBjbGFzcz1cImNxYS1oLWZ1bGwgY3FhLXJvdW5kZWQtZnVsbFwiIFtzdHlsZS53aWR0aF09XCJmaWxsV2lkdGhcIlxuICAgICAgICBbc3R5bGUuYmFja2dyb3VuZF09XCInbGluZWFyLWdyYWRpZW50KDkwZGVnLCAjREQ1QTM4IDAlLCAjRjU5RTBCIDQwJSwgIzEwQjk4MSAxMDAlKSdcIj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJjcWEtdGV4dC1bMTJweF0gY3FhLWxlYWRpbmctNVwiIFtuZ0NsYXNzXT1cImRlbHRhQ2xhc3MoKVwiICpuZ0lmPVwiZGVsdGFQZXJjZW50ICE9PSB1bmRlZmluZWRcIj5cbiAgICAgIHt7IGRlbHRhUGVyY2VudCA+IDAgPyAnKycgOiAnJ319e3sgZGVsdGFQZXJjZW50IH19JSB7eyBkZWx0YVN1ZmZpeCB9fVxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PiJdfQ==
@@ -1,6 +1,7 @@
1
1
  import { ChangeDetectionStrategy, Component, Input } from '@angular/core';
2
2
  import * as i0 from "@angular/core";
3
- import * as i1 from "@angular/common";
3
+ import * as i1 from "@angular/material/icon";
4
+ import * as i2 from "@angular/common";
4
5
  export class TestDistributionCardComponent {
5
6
  constructor() {
6
7
  this.title = 'Test Distribution';
@@ -18,12 +19,36 @@ export class TestDistributionCardComponent {
18
19
  segmentColor(segment, fallback) {
19
20
  return segment.colorClass || fallback;
20
21
  }
22
+ getChildIcon(label) {
23
+ const normalizedLabel = label.toLowerCase().trim();
24
+ if (normalizedLabel === 'ios' || normalizedLabel === 'apple') {
25
+ return 'apple';
26
+ }
27
+ else if (normalizedLabel === 'android') {
28
+ return 'android';
29
+ }
30
+ return null;
31
+ }
32
+ getItemIconColor(item) {
33
+ // Return color based on label or use default
34
+ const label = item.label.toLowerCase();
35
+ if (label === 'web') {
36
+ return '#4F46E5';
37
+ }
38
+ else if (label === 'mobile') {
39
+ return '#9333EA';
40
+ }
41
+ else if (label === 'api') {
42
+ return '#059669';
43
+ }
44
+ return '#4F46E5'; // default
45
+ }
21
46
  }
22
47
  TestDistributionCardComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: TestDistributionCardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
23
- TestDistributionCardComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: TestDistributionCardComponent, selector: "cqa-test-distribution-card", inputs: { title: "title", segments: "segments", items: "items" }, ngImport: i0, template: "<div id=\"cqa-ui-root\">\n <div class=\"cqa-bg-white cqa-rounded-[8px] cqa-border cqa-border-border-default cqa-py-[14.5px] cqa-px-[17px] cqa-shadow-card\">\n <!-- Title -->\n <h3 class=\"cqa-text-[16px] cqa-leading-6 cqa-text-[#111827] cqa-mb-2\">{{ title }}</h3>\n\n <!-- Stacked segments pill -->\n <div class=\"cqa-w-full cqa-h-[24px] cqa-rounded-full cqa-bg-[#F3F4F6] cqa-overflow-hidden cqa-flex cqa-mb-2\">\n <ng-container *ngFor=\"let s of segments; let i = index; let last = last\">\n <div\n class=\"cqa-h-full cqa-flex cqa-items-center cqa-justify-center cqa-text-white cqa-text-[12px] cqa-leading-[16px]\"\n [ngClass]=\"[\n segmentColor(s, i === 0 ? 'cqa-bg-[#4F46E5]' : i === segments.length - 1 ? 'cqa-bg-[#059669]' : 'cqa-bg-[#9333EA]'),\n i === 0 ? 'cqa-rounded-l-full' : '',\n last ? 'cqa-rounded-r-full' : ''\n ]\" [style.width]=\"segmentWidth(s)\">\n {{ s.label }}\n </div>\n </ng-container>\n </div>\n\n <!-- Items list -->\n <div class=\"cqa-flex cqa-flex-col cqa-gap-[6px]\">\n <div *ngFor=\"let it of items\" class=\"cqa-flex cqa-flex-col cqa-gap-[6px]\">\n <!-- Parent row -->\n <div class=\"cqa-flex cqa-items-center cqa-justify-between\">\n <div class=\"cqa-flex cqa-items-center\">\n <span class=\"cqa-w-[4px] cqa-h-[12px] cqa-rounded-full cqa-bg-[#4F46E5]\"></span>\n <div class=\"cqa-ml-[8px] cqa-mr-[6px]\">\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M7.00008 12.8337C10.2217 12.8337 12.8334 10.222 12.8334 7.00033C12.8334 3.77866 10.2217 1.16699 7.00008 1.16699C3.77842 1.16699 1.16675 3.77866 1.16675 7.00033C1.16675 10.222 3.77842 12.8337 7.00008 12.8337Z\" stroke=\"#4F46E5\" stroke-width=\"1.16667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M7.00008 1.16699C5.50222 2.73975 4.66675 4.82842 4.66675 7.00033C4.66675 9.17223 5.50222 11.2609 7.00008 12.8337C8.49794 11.2609 9.33341 9.17223 9.33341 7.00033C9.33341 4.82842 8.49794 2.73975 7.00008 1.16699Z\" stroke=\"#4F46E5\" stroke-width=\"1.16667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M1.16675 7H12.8334\" stroke=\"#4F46E5\" 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=\"M9.91675 1.16699H4.08341C3.43908 1.16699 2.91675 1.68933 2.91675 2.33366V11.667C2.91675 12.3113 3.43908 12.8337 4.08341 12.8337H9.91675C10.5611 12.8337 11.0834 12.3113 11.0834 11.667V2.33366C11.0834 1.68933 10.5611 1.16699 9.91675 1.16699Z\" stroke=\"#9333EA\" stroke-width=\"1.16667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M7 10.5H7.00583\" stroke=\"#9333EA\" 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=\"M9.33325 10.5L12.8333 7L9.33325 3.5\" stroke=\"#059669\" stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M4.66675 3.5L1.16675 7L4.66675 10.5\" stroke=\"#059669\" stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg> -->\n </div>\n <span class=\"cqa-text-[12px] cqa-leading-[18px] cqa-text-dialog-muted\">{{ it.label }}</span>\n </div>\n <div class=\"cqa-text-[12px] cqa-leading-4 cqa-font-bold\">{{ it.value | number }}</div>\n </div>\n\n <!-- Children rows -->\n <div *ngIf=\"it.children?.length\" class=\"cqa-flex cqa-items-center cqa-gap-2\">\n <div *ngFor=\"let ch of it.children\"\n class=\"cqa-flex cqa-items-center cqa-flex-1 cqa-rounded-[4px] cqa-bg-[#F9FAFB] cqa-border-l-4 cqa-border-[#9333EA]\">\n <div class=\"cqa-flex cqa-items-center cqa-text-[10px] cqa-leading-[15px] cqa-text-[#4B5563]\">\n <div class=\"cqa-pl-2 cqa-pr-1\">{{ ch.label }}</div>\n <span class=\"cqa-font-bold cqa-text-[#111827]\">{{ ch.value }}</span>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>", directives: [{ type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { 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 });
48
+ TestDistributionCardComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: TestDistributionCardComponent, selector: "cqa-test-distribution-card", inputs: { title: "title", segments: "segments", items: "items" }, ngImport: i0, template: "<div id=\"cqa-ui-root\">\n <div class=\"cqa-bg-white cqa-rounded-[8px] cqa-border cqa-border-solid cqa-border-border-default cqa-py-[14.5px] cqa-px-[17px] cqa-shadow-card\">\n <!-- Title -->\n <h3 class=\"cqa-text-[16px] cqa-leading-6 cqa-text-[#111827] cqa-mb-2\">{{ title }}</h3>\n\n <!-- Stacked segments pill -->\n <div class=\"cqa-w-full cqa-h-[24px] cqa-rounded-full cqa-bg-[#F3F4F6] cqa-overflow-hidden cqa-flex cqa-mb-2\">\n <ng-container *ngFor=\"let s of segments; let i = index; let last = last\">\n <div\n class=\"cqa-h-full cqa-flex cqa-items-center cqa-justify-center cqa-text-white cqa-text-[12px] cqa-leading-[16px]\"\n [ngClass]=\"[\n segmentColor(s, i === 0 ? 'cqa-bg-[#4F46E5]' : i === segments.length - 1 ? 'cqa-bg-[#059669]' : 'cqa-bg-[#9333EA]'),\n i === 0 ? 'cqa-rounded-l-full' : '',\n last ? 'cqa-rounded-r-full' : ''\n ]\" [style.width]=\"segmentWidth(s)\">\n {{ s.label }}\n </div>\n </ng-container>\n </div>\n\n <!-- Items list -->\n <div class=\"cqa-flex cqa-flex-col cqa-gap-[6px]\">\n <div *ngFor=\"let it of items\" class=\"cqa-flex cqa-flex-col cqa-gap-[6px]\">\n <!-- Parent row -->\n <div class=\"cqa-flex cqa-items-center cqa-justify-between\">\n <div class=\"cqa-flex cqa-items-center\">\n <span class=\"cqa-w-[4px] cqa-h-[12px] cqa-rounded-full\" [style.background-color]=\"getItemIconColor(it)\"></span>\n <div class=\"cqa-ml-[8px] cqa-mr-[6px]\">\n <mat-icon *ngIf=\"it.icon\" class=\"cqa-w-[14px] cqa-h-[14px] cqa-text-[14px] cqa-leading-[14px]\" [style.color]=\"getItemIconColor(it)\">\n {{ it.icon }}\n </mat-icon>\n </div>\n <span class=\"cqa-text-[12px] cqa-leading-[18px] cqa-text-dialog-muted\">{{ it.label }}</span>\n </div>\n <div class=\"cqa-text-[12px] cqa-leading-4 cqa-font-bold\">{{ it.value | number }}</div>\n </div>\n\n <!-- Children rows -->\n <div *ngIf=\"it.children?.length\" class=\"cqa-flex cqa-items-center cqa-gap-2\">\n <div *ngFor=\"let ch of it.children\"\n class=\"cqa-flex cqa-items-center cqa-justify-between cqa-flex-1 cqa-rounded-[4px] cqa-bg-[#F9FAFB]\">\n <div class=\"cqa-flex cqa-items-center cqa-text-[10px] cqa-leading-[15px] cqa-text-[#4B5563]\">\n <mat-icon *ngIf=\"getChildIcon(ch.label)\" class=\"cqa-w-[14px] cqa-h-[14px] cqa-text-[14px] cqa-leading-[14px] cqa-ml-2 cqa-mr-1 cqa-text-[#4B5563]\">\n {{ getChildIcon(ch.label) }}\n </mat-icon>\n <div class=\"cqa-pr-1\" [ngClass]=\"getChildIcon(ch.label) ? 'cqa-pl-0' : 'cqa-pl-2'\">{{ ch.label }}</div>\n </div>\n <span class=\"cqa-font-bold cqa-text-[#111827] cqa-text-[10px] cqa-leading-[15px]\">{{ ch.value }}</span>\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>", components: [{ type: i1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], directives: [{ type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], pipes: { "number": i2.DecimalPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
24
49
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: TestDistributionCardComponent, decorators: [{
25
50
  type: Component,
26
- args: [{ selector: 'cqa-test-distribution-card', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div id=\"cqa-ui-root\">\n <div class=\"cqa-bg-white cqa-rounded-[8px] cqa-border cqa-border-border-default cqa-py-[14.5px] cqa-px-[17px] cqa-shadow-card\">\n <!-- Title -->\n <h3 class=\"cqa-text-[16px] cqa-leading-6 cqa-text-[#111827] cqa-mb-2\">{{ title }}</h3>\n\n <!-- Stacked segments pill -->\n <div class=\"cqa-w-full cqa-h-[24px] cqa-rounded-full cqa-bg-[#F3F4F6] cqa-overflow-hidden cqa-flex cqa-mb-2\">\n <ng-container *ngFor=\"let s of segments; let i = index; let last = last\">\n <div\n class=\"cqa-h-full cqa-flex cqa-items-center cqa-justify-center cqa-text-white cqa-text-[12px] cqa-leading-[16px]\"\n [ngClass]=\"[\n segmentColor(s, i === 0 ? 'cqa-bg-[#4F46E5]' : i === segments.length - 1 ? 'cqa-bg-[#059669]' : 'cqa-bg-[#9333EA]'),\n i === 0 ? 'cqa-rounded-l-full' : '',\n last ? 'cqa-rounded-r-full' : ''\n ]\" [style.width]=\"segmentWidth(s)\">\n {{ s.label }}\n </div>\n </ng-container>\n </div>\n\n <!-- Items list -->\n <div class=\"cqa-flex cqa-flex-col cqa-gap-[6px]\">\n <div *ngFor=\"let it of items\" class=\"cqa-flex cqa-flex-col cqa-gap-[6px]\">\n <!-- Parent row -->\n <div class=\"cqa-flex cqa-items-center cqa-justify-between\">\n <div class=\"cqa-flex cqa-items-center\">\n <span class=\"cqa-w-[4px] cqa-h-[12px] cqa-rounded-full cqa-bg-[#4F46E5]\"></span>\n <div class=\"cqa-ml-[8px] cqa-mr-[6px]\">\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M7.00008 12.8337C10.2217 12.8337 12.8334 10.222 12.8334 7.00033C12.8334 3.77866 10.2217 1.16699 7.00008 1.16699C3.77842 1.16699 1.16675 3.77866 1.16675 7.00033C1.16675 10.222 3.77842 12.8337 7.00008 12.8337Z\" stroke=\"#4F46E5\" stroke-width=\"1.16667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M7.00008 1.16699C5.50222 2.73975 4.66675 4.82842 4.66675 7.00033C4.66675 9.17223 5.50222 11.2609 7.00008 12.8337C8.49794 11.2609 9.33341 9.17223 9.33341 7.00033C9.33341 4.82842 8.49794 2.73975 7.00008 1.16699Z\" stroke=\"#4F46E5\" stroke-width=\"1.16667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M1.16675 7H12.8334\" stroke=\"#4F46E5\" 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=\"M9.91675 1.16699H4.08341C3.43908 1.16699 2.91675 1.68933 2.91675 2.33366V11.667C2.91675 12.3113 3.43908 12.8337 4.08341 12.8337H9.91675C10.5611 12.8337 11.0834 12.3113 11.0834 11.667V2.33366C11.0834 1.68933 10.5611 1.16699 9.91675 1.16699Z\" stroke=\"#9333EA\" stroke-width=\"1.16667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M7 10.5H7.00583\" stroke=\"#9333EA\" 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=\"M9.33325 10.5L12.8333 7L9.33325 3.5\" stroke=\"#059669\" stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M4.66675 3.5L1.16675 7L4.66675 10.5\" stroke=\"#059669\" stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg> -->\n </div>\n <span class=\"cqa-text-[12px] cqa-leading-[18px] cqa-text-dialog-muted\">{{ it.label }}</span>\n </div>\n <div class=\"cqa-text-[12px] cqa-leading-4 cqa-font-bold\">{{ it.value | number }}</div>\n </div>\n\n <!-- Children rows -->\n <div *ngIf=\"it.children?.length\" class=\"cqa-flex cqa-items-center cqa-gap-2\">\n <div *ngFor=\"let ch of it.children\"\n class=\"cqa-flex cqa-items-center cqa-flex-1 cqa-rounded-[4px] cqa-bg-[#F9FAFB] cqa-border-l-4 cqa-border-[#9333EA]\">\n <div class=\"cqa-flex cqa-items-center cqa-text-[10px] cqa-leading-[15px] cqa-text-[#4B5563]\">\n <div class=\"cqa-pl-2 cqa-pr-1\">{{ ch.label }}</div>\n <span class=\"cqa-font-bold cqa-text-[#111827]\">{{ ch.value }}</span>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>", styles: [] }]
51
+ args: [{ selector: 'cqa-test-distribution-card', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div id=\"cqa-ui-root\">\n <div class=\"cqa-bg-white cqa-rounded-[8px] cqa-border cqa-border-solid cqa-border-border-default cqa-py-[14.5px] cqa-px-[17px] cqa-shadow-card\">\n <!-- Title -->\n <h3 class=\"cqa-text-[16px] cqa-leading-6 cqa-text-[#111827] cqa-mb-2\">{{ title }}</h3>\n\n <!-- Stacked segments pill -->\n <div class=\"cqa-w-full cqa-h-[24px] cqa-rounded-full cqa-bg-[#F3F4F6] cqa-overflow-hidden cqa-flex cqa-mb-2\">\n <ng-container *ngFor=\"let s of segments; let i = index; let last = last\">\n <div\n class=\"cqa-h-full cqa-flex cqa-items-center cqa-justify-center cqa-text-white cqa-text-[12px] cqa-leading-[16px]\"\n [ngClass]=\"[\n segmentColor(s, i === 0 ? 'cqa-bg-[#4F46E5]' : i === segments.length - 1 ? 'cqa-bg-[#059669]' : 'cqa-bg-[#9333EA]'),\n i === 0 ? 'cqa-rounded-l-full' : '',\n last ? 'cqa-rounded-r-full' : ''\n ]\" [style.width]=\"segmentWidth(s)\">\n {{ s.label }}\n </div>\n </ng-container>\n </div>\n\n <!-- Items list -->\n <div class=\"cqa-flex cqa-flex-col cqa-gap-[6px]\">\n <div *ngFor=\"let it of items\" class=\"cqa-flex cqa-flex-col cqa-gap-[6px]\">\n <!-- Parent row -->\n <div class=\"cqa-flex cqa-items-center cqa-justify-between\">\n <div class=\"cqa-flex cqa-items-center\">\n <span class=\"cqa-w-[4px] cqa-h-[12px] cqa-rounded-full\" [style.background-color]=\"getItemIconColor(it)\"></span>\n <div class=\"cqa-ml-[8px] cqa-mr-[6px]\">\n <mat-icon *ngIf=\"it.icon\" class=\"cqa-w-[14px] cqa-h-[14px] cqa-text-[14px] cqa-leading-[14px]\" [style.color]=\"getItemIconColor(it)\">\n {{ it.icon }}\n </mat-icon>\n </div>\n <span class=\"cqa-text-[12px] cqa-leading-[18px] cqa-text-dialog-muted\">{{ it.label }}</span>\n </div>\n <div class=\"cqa-text-[12px] cqa-leading-4 cqa-font-bold\">{{ it.value | number }}</div>\n </div>\n\n <!-- Children rows -->\n <div *ngIf=\"it.children?.length\" class=\"cqa-flex cqa-items-center cqa-gap-2\">\n <div *ngFor=\"let ch of it.children\"\n class=\"cqa-flex cqa-items-center cqa-justify-between cqa-flex-1 cqa-rounded-[4px] cqa-bg-[#F9FAFB]\">\n <div class=\"cqa-flex cqa-items-center cqa-text-[10px] cqa-leading-[15px] cqa-text-[#4B5563]\">\n <mat-icon *ngIf=\"getChildIcon(ch.label)\" class=\"cqa-w-[14px] cqa-h-[14px] cqa-text-[14px] cqa-leading-[14px] cqa-ml-2 cqa-mr-1 cqa-text-[#4B5563]\">\n {{ getChildIcon(ch.label) }}\n </mat-icon>\n <div class=\"cqa-pr-1\" [ngClass]=\"getChildIcon(ch.label) ? 'cqa-pl-0' : 'cqa-pl-2'\">{{ ch.label }}</div>\n </div>\n <span class=\"cqa-font-bold cqa-text-[#111827] cqa-text-[10px] cqa-leading-[15px]\">{{ ch.value }}</span>\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>", styles: [] }]
27
52
  }], propDecorators: { title: [{
28
53
  type: Input
29
54
  }], segments: [{
@@ -31,4 +56,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImpor
31
56
  }], items: [{
32
57
  type: Input
33
58
  }] } });
34
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdC1kaXN0cmlidXRpb24tY2FyZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2Rhc2hib2FyZHMvdGVzdC1kaXN0cmlidXRpb24tY2FyZC90ZXN0LWRpc3RyaWJ1dGlvbi1jYXJkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvZGFzaGJvYXJkcy90ZXN0LWRpc3RyaWJ1dGlvbi1jYXJkL3Rlc3QtZGlzdHJpYnV0aW9uLWNhcmQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7OztBQTZCMUUsTUFBTSxPQUFPLDZCQUE2QjtJQU4xQztRQU9XLFVBQUssR0FBVyxtQkFBbUIsQ0FBQztRQUNwQyxhQUFRLEdBQTBCLEVBQUUsQ0FBQztRQUNyQyxVQUFLLEdBQXVCLEVBQUUsQ0FBQztLQWV6QztJQWJDLGFBQWE7UUFDWCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDeEUsQ0FBQztJQUVELFlBQVksQ0FBQyxPQUE0QjtRQUN2QyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDbkMsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDdEUsT0FBTyxHQUFHLEdBQUcsR0FBRyxDQUFDO0lBQ25CLENBQUM7SUFFRCxZQUFZLENBQUMsT0FBNEIsRUFBRSxRQUFnQjtRQUN6RCxPQUFPLE9BQU8sQ0FBQyxVQUFVLElBQUksUUFBUSxDQUFDO0lBQ3hDLENBQUM7OzBIQWpCVSw2QkFBNkI7OEdBQTdCLDZCQUE2QixvSUM3QjFDLGl3SUFrRE07MkZEckJPLDZCQUE2QjtrQkFOekMsU0FBUzsrQkFDRSw0QkFBNEIsbUJBR3JCLHVCQUF1QixDQUFDLE1BQU07OEJBR3RDLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGlzdHJpYnV0aW9uU2VnbWVudCB7XG4gIGxhYmVsOiBzdHJpbmc7XG4gIHZhbHVlOiBudW1iZXI7XG4gIC8qKiBUYWlsd2luZC1saWtlIGNsYXNzIG9yIGhleCBiZyBjb2xvciAqL1xuICBjb2xvckNsYXNzPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERpc3RyaWJ1dGlvbkNoaWxkSXRlbSB7XG4gIGxhYmVsOiBzdHJpbmc7XG4gIHZhbHVlOiBudW1iZXI7XG4gIGNvbG9yQ2xhc3M/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGlzdHJpYnV0aW9uSXRlbSB7XG4gIGljb24/OiBzdHJpbmc7XG4gIGxhYmVsOiBzdHJpbmc7XG4gIHZhbHVlOiBudW1iZXI7XG4gIGNvbG9yQ2xhc3M/OiBzdHJpbmc7IC8vIHVzZWQgZm9yIGljb24vYWNjZW50IGlmIGRlc2lyZWRcbiAgY2hpbGRyZW4/OiBEaXN0cmlidXRpb25DaGlsZEl0ZW1bXTtcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY3FhLXRlc3QtZGlzdHJpYnV0aW9uLWNhcmQnLFxuICB0ZW1wbGF0ZVVybDogJy4vdGVzdC1kaXN0cmlidXRpb24tY2FyZC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogW10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBUZXN0RGlzdHJpYnV0aW9uQ2FyZENvbXBvbmVudCB7XG4gIEBJbnB1dCgpIHRpdGxlOiBzdHJpbmcgPSAnVGVzdCBEaXN0cmlidXRpb24nO1xuICBASW5wdXQoKSBzZWdtZW50czogRGlzdHJpYnV0aW9uU2VnbWVudFtdID0gW107XG4gIEBJbnB1dCgpIGl0ZW1zOiBEaXN0cmlidXRpb25JdGVtW10gPSBbXTtcblxuICB0b3RhbFNlZ21lbnRzKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuc2VnbWVudHMucmVkdWNlKChzdW0sIHMpID0+IHN1bSArIChzLnZhbHVlIHx8IDApLCAwKSB8fCAxO1xuICB9XG5cbiAgc2VnbWVudFdpZHRoKHNlZ21lbnQ6IERpc3RyaWJ1dGlvblNlZ21lbnQpOiBzdHJpbmcge1xuICAgIGNvbnN0IHRvdGFsID0gdGhpcy50b3RhbFNlZ21lbnRzKCk7XG4gICAgY29uc3QgcGN0ID0gTWF0aC5tYXgoMCwgTWF0aC5taW4oMTAwLCAoc2VnbWVudC52YWx1ZSAvIHRvdGFsKSAqIDEwMCkpO1xuICAgIHJldHVybiBwY3QgKyAnJSc7XG4gIH1cblxuICBzZWdtZW50Q29sb3Ioc2VnbWVudDogRGlzdHJpYnV0aW9uU2VnbWVudCwgZmFsbGJhY2s6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHNlZ21lbnQuY29sb3JDbGFzcyB8fCBmYWxsYmFjaztcbiAgfVxufVxuXG5cbiIsIjxkaXYgaWQ9XCJjcWEtdWktcm9vdFwiPlxuICA8ZGl2IGNsYXNzPVwiY3FhLWJnLXdoaXRlIGNxYS1yb3VuZGVkLVs4cHhdIGNxYS1ib3JkZXIgY3FhLWJvcmRlci1ib3JkZXItZGVmYXVsdCBjcWEtcHktWzE0LjVweF0gY3FhLXB4LVsxN3B4XSBjcWEtc2hhZG93LWNhcmRcIj5cbiAgICA8IS0tIFRpdGxlIC0tPlxuICAgIDxoMyBjbGFzcz1cImNxYS10ZXh0LVsxNnB4XSBjcWEtbGVhZGluZy02IGNxYS10ZXh0LVsjMTExODI3XSBjcWEtbWItMlwiPnt7IHRpdGxlIH19PC9oMz5cblxuICAgIDwhLS0gU3RhY2tlZCBzZWdtZW50cyBwaWxsIC0tPlxuICAgIDxkaXYgY2xhc3M9XCJjcWEtdy1mdWxsIGNxYS1oLVsyNHB4XSBjcWEtcm91bmRlZC1mdWxsIGNxYS1iZy1bI0YzRjRGNl0gY3FhLW92ZXJmbG93LWhpZGRlbiBjcWEtZmxleCBjcWEtbWItMlwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgcyBvZiBzZWdtZW50czsgbGV0IGkgPSBpbmRleDsgbGV0IGxhc3QgPSBsYXN0XCI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cImNxYS1oLWZ1bGwgY3FhLWZsZXggY3FhLWl0ZW1zLWNlbnRlciBjcWEtanVzdGlmeS1jZW50ZXIgY3FhLXRleHQtd2hpdGUgY3FhLXRleHQtWzEycHhdIGNxYS1sZWFkaW5nLVsxNnB4XVwiXG4gICAgICAgICAgW25nQ2xhc3NdPVwiW1xuICAgICAgICAgICAgc2VnbWVudENvbG9yKHMsIGkgPT09IDAgPyAnY3FhLWJnLVsjNEY0NkU1XScgOiBpID09PSBzZWdtZW50cy5sZW5ndGggLSAxID8gJ2NxYS1iZy1bIzA1OTY2OV0nIDogJ2NxYS1iZy1bIzkzMzNFQV0nKSxcbiAgICAgICAgICAgIGkgPT09IDAgPyAnY3FhLXJvdW5kZWQtbC1mdWxsJyA6ICcnLFxuICAgICAgICAgICAgbGFzdCA/ICdjcWEtcm91bmRlZC1yLWZ1bGwnIDogJydcbiAgICAgICAgICBdXCIgW3N0eWxlLndpZHRoXT1cInNlZ21lbnRXaWR0aChzKVwiPlxuICAgICAgICAgIHt7IHMubGFiZWwgfX1cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cblxuICAgIDwhLS0gSXRlbXMgbGlzdCAtLT5cbiAgICA8ZGl2IGNsYXNzPVwiY3FhLWZsZXggY3FhLWZsZXgtY29sIGNxYS1nYXAtWzZweF1cIj5cbiAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGl0IG9mIGl0ZW1zXCIgY2xhc3M9XCJjcWEtZmxleCBjcWEtZmxleC1jb2wgY3FhLWdhcC1bNnB4XVwiPlxuICAgICAgICA8IS0tIFBhcmVudCByb3cgLS0+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1qdXN0aWZ5LWJldHdlZW5cIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3FhLWZsZXggY3FhLWl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjcWEtdy1bNHB4XSBjcWEtaC1bMTJweF0gY3FhLXJvdW5kZWQtZnVsbCBjcWEtYmctWyM0RjQ2RTVdXCI+PC9zcGFuPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNxYS1tbC1bOHB4XSBjcWEtbXItWzZweF1cIj5cbiAgICAgICAgICAgICAgPHN2ZyB3aWR0aD1cIjE0XCIgaGVpZ2h0PVwiMTRcIiB2aWV3Qm94PVwiMCAwIDE0IDE0XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+PHBhdGggZD1cIk03LjAwMDA4IDEyLjgzMzdDMTAuMjIxNyAxMi44MzM3IDEyLjgzMzQgMTAuMjIyIDEyLjgzMzQgNy4wMDAzM0MxMi44MzM0IDMuNzc4NjYgMTAuMjIxNyAxLjE2Njk5IDcuMDAwMDggMS4xNjY5OUMzLjc3ODQyIDEuMTY2OTkgMS4xNjY3NSAzLjc3ODY2IDEuMTY2NzUgNy4wMDAzM0MxLjE2Njc1IDEwLjIyMiAzLjc3ODQyIDEyLjgzMzcgNy4wMDAwOCAxMi44MzM3WlwiIHN0cm9rZT1cIiM0RjQ2RTVcIiBzdHJva2Utd2lkdGg9XCIxLjE2NjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPjxwYXRoIGQ9XCJNNy4wMDAwOCAxLjE2Njk5QzUuNTAyMjIgMi43Mzk3NSA0LjY2Njc1IDQuODI4NDIgNC42NjY3NSA3LjAwMDMzQzQuNjY2NzUgOS4xNzIyMyA1LjUwMjIyIDExLjI2MDkgNy4wMDAwOCAxMi44MzM3QzguNDk3OTQgMTEuMjYwOSA5LjMzMzQxIDkuMTcyMjMgOS4zMzM0MSA3LjAwMDMzQzkuMzMzNDEgNC44Mjg0MiA4LjQ5Nzk0IDIuNzM5NzUgNy4wMDAwOCAxLjE2Njk5WlwiIHN0cm9rZT1cIiM0RjQ2RTVcIiBzdHJva2Utd2lkdGg9XCIxLjE2NjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPjxwYXRoIGQ9XCJNMS4xNjY3NSA3SDEyLjgzMzRcIiBzdHJva2U9XCIjNEY0NkU1XCIgc3Ryb2tlLXdpZHRoPVwiMS4xNjY2N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz48L3N2Zz5cbiAgICAgICAgICAgICAgPCEtLSA8c3ZnIHdpZHRoPVwiMTRcIiBoZWlnaHQ9XCIxNFwiIHZpZXdCb3g9XCIwIDAgMTQgMTRcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj48cGF0aCBkPVwiTTkuOTE2NzUgMS4xNjY5OUg0LjA4MzQxQzMuNDM5MDggMS4xNjY5OSAyLjkxNjc1IDEuNjg5MzMgMi45MTY3NSAyLjMzMzY2VjExLjY2N0MyLjkxNjc1IDEyLjMxMTMgMy40MzkwOCAxMi44MzM3IDQuMDgzNDEgMTIuODMzN0g5LjkxNjc1QzEwLjU2MTEgMTIuODMzNyAxMS4wODM0IDEyLjMxMTMgMTEuMDgzNCAxMS42NjdWMi4zMzM2NkMxMS4wODM0IDEuNjg5MzMgMTAuNTYxMSAxLjE2Njk5IDkuOTE2NzUgMS4xNjY5OVpcIiBzdHJva2U9XCIjOTMzM0VBXCIgc3Ryb2tlLXdpZHRoPVwiMS4xNjY2N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz48cGF0aCBkPVwiTTcgMTAuNUg3LjAwNTgzXCIgc3Ryb2tlPVwiIzkzMzNFQVwiIHN0cm9rZS13aWR0aD1cIjEuMTY2NjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+PC9zdmc+IC0tPlxuICAgICAgICAgICAgICA8IS0tIDxzdmcgd2lkdGg9XCIxNFwiIGhlaWdodD1cIjE0XCIgdmlld0JveD1cIjAgMCAxNCAxNFwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPjxwYXRoIGQ9XCJNOS4zMzMyNSAxMC41TDEyLjgzMzMgN0w5LjMzMzI1IDMuNVwiIHN0cm9rZT1cIiMwNTk2NjlcIiBzdHJva2Utd2lkdGg9XCIxLjY2NjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPjxwYXRoIGQ9XCJNNC42NjY3NSAzLjVMMS4xNjY3NSA3TDQuNjY2NzUgMTAuNVwiIHN0cm9rZT1cIiMwNTk2NjlcIiBzdHJva2Utd2lkdGg9XCIxLjY2NjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPjwvc3ZnPiAtLT5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjcWEtdGV4dC1bMTJweF0gY3FhLWxlYWRpbmctWzE4cHhdIGNxYS10ZXh0LWRpYWxvZy1tdXRlZFwiPnt7IGl0LmxhYmVsIH19PC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjcWEtdGV4dC1bMTJweF0gY3FhLWxlYWRpbmctNCBjcWEtZm9udC1ib2xkXCI+e3sgaXQudmFsdWUgfCBudW1iZXIgfX08L2Rpdj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPCEtLSBDaGlsZHJlbiByb3dzIC0tPlxuICAgICAgICA8ZGl2ICpuZ0lmPVwiaXQuY2hpbGRyZW4/Lmxlbmd0aFwiIGNsYXNzPVwiY3FhLWZsZXggY3FhLWl0ZW1zLWNlbnRlciBjcWEtZ2FwLTJcIj5cbiAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBjaCBvZiBpdC5jaGlsZHJlblwiXG4gICAgICAgICAgICBjbGFzcz1cImNxYS1mbGV4IGNxYS1pdGVtcy1jZW50ZXIgY3FhLWZsZXgtMSBjcWEtcm91bmRlZC1bNHB4XSBjcWEtYmctWyNGOUZBRkJdIGNxYS1ib3JkZXItbC00IGNxYS1ib3JkZXItWyM5MzMzRUFdXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3FhLWZsZXggY3FhLWl0ZW1zLWNlbnRlciBjcWEtdGV4dC1bMTBweF0gY3FhLWxlYWRpbmctWzE1cHhdIGNxYS10ZXh0LVsjNEI1NTYzXVwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3FhLXBsLTIgY3FhLXByLTFcIj57eyBjaC5sYWJlbCB9fTwvZGl2PlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNxYS1mb250LWJvbGQgY3FhLXRleHQtWyMxMTE4MjddXCI+e3sgY2gudmFsdWUgfX08L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj4iXX0=
59
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdC1kaXN0cmlidXRpb24tY2FyZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2Rhc2hib2FyZHMvdGVzdC1kaXN0cmlidXRpb24tY2FyZC90ZXN0LWRpc3RyaWJ1dGlvbi1jYXJkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvZGFzaGJvYXJkcy90ZXN0LWRpc3RyaWJ1dGlvbi1jYXJkL3Rlc3QtZGlzdHJpYnV0aW9uLWNhcmQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7QUE2QjFFLE1BQU0sT0FBTyw2QkFBNkI7SUFOMUM7UUFPVyxVQUFLLEdBQVcsbUJBQW1CLENBQUM7UUFDcEMsYUFBUSxHQUEwQixFQUFFLENBQUM7UUFDckMsVUFBSyxHQUF1QixFQUFFLENBQUM7S0FzQ3pDO0lBcENDLGFBQWE7UUFDWCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDeEUsQ0FBQztJQUVELFlBQVksQ0FBQyxPQUE0QjtRQUN2QyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDbkMsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDdEUsT0FBTyxHQUFHLEdBQUcsR0FBRyxDQUFDO0lBQ25CLENBQUM7SUFFRCxZQUFZLENBQUMsT0FBNEIsRUFBRSxRQUFnQjtRQUN6RCxPQUFPLE9BQU8sQ0FBQyxVQUFVLElBQUksUUFBUSxDQUFDO0lBQ3hDLENBQUM7SUFFRCxZQUFZLENBQUMsS0FBYTtRQUN4QixNQUFNLGVBQWUsR0FBRyxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDbkQsSUFBSSxlQUFlLEtBQUssS0FBSyxJQUFJLGVBQWUsS0FBSyxPQUFPLEVBQUU7WUFDNUQsT0FBTyxPQUFPLENBQUM7U0FDaEI7YUFBTSxJQUFJLGVBQWUsS0FBSyxTQUFTLEVBQUU7WUFDeEMsT0FBTyxTQUFTLENBQUM7U0FDbEI7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxJQUFzQjtRQUNyQyw2Q0FBNkM7UUFDN0MsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUN2QyxJQUFJLEtBQUssS0FBSyxLQUFLLEVBQUU7WUFDbkIsT0FBTyxTQUFTLENBQUM7U0FDbEI7YUFBTSxJQUFJLEtBQUssS0FBSyxRQUFRLEVBQUU7WUFDN0IsT0FBTyxTQUFTLENBQUM7U0FDbEI7YUFBTSxJQUFJLEtBQUssS0FBSyxLQUFLLEVBQUU7WUFDMUIsT0FBTyxTQUFTLENBQUM7U0FDbEI7UUFDRCxPQUFPLFNBQVMsQ0FBQyxDQUFDLFVBQVU7SUFDOUIsQ0FBQzs7MEhBeENVLDZCQUE2Qjs4R0FBN0IsNkJBQTZCLG9JQzdCMUMsODdGQXFETTsyRkR4Qk8sNkJBQTZCO2tCQU56QyxTQUFTOytCQUNFLDRCQUE0QixtQkFHckIsdUJBQXVCLENBQUMsTUFBTTs4QkFHdEMsS0FBSztzQkFBYixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuZXhwb3J0IGludGVyZmFjZSBEaXN0cmlidXRpb25TZWdtZW50IHtcbiAgbGFiZWw6IHN0cmluZztcbiAgdmFsdWU6IG51bWJlcjtcbiAgLyoqIFRhaWx3aW5kLWxpa2UgY2xhc3Mgb3IgaGV4IGJnIGNvbG9yICovXG4gIGNvbG9yQ2xhc3M/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGlzdHJpYnV0aW9uQ2hpbGRJdGVtIHtcbiAgbGFiZWw6IHN0cmluZztcbiAgdmFsdWU6IG51bWJlcjtcbiAgY29sb3JDbGFzcz86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEaXN0cmlidXRpb25JdGVtIHtcbiAgaWNvbj86IHN0cmluZztcbiAgbGFiZWw6IHN0cmluZztcbiAgdmFsdWU6IG51bWJlcjtcbiAgY29sb3JDbGFzcz86IHN0cmluZzsgLy8gdXNlZCBmb3IgaWNvbi9hY2NlbnQgaWYgZGVzaXJlZFxuICBjaGlsZHJlbj86IERpc3RyaWJ1dGlvbkNoaWxkSXRlbVtdO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjcWEtdGVzdC1kaXN0cmlidXRpb24tY2FyZCcsXG4gIHRlbXBsYXRlVXJsOiAnLi90ZXN0LWRpc3RyaWJ1dGlvbi1jYXJkLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIFRlc3REaXN0cmlidXRpb25DYXJkQ29tcG9uZW50IHtcbiAgQElucHV0KCkgdGl0bGU6IHN0cmluZyA9ICdUZXN0IERpc3RyaWJ1dGlvbic7XG4gIEBJbnB1dCgpIHNlZ21lbnRzOiBEaXN0cmlidXRpb25TZWdtZW50W10gPSBbXTtcbiAgQElucHV0KCkgaXRlbXM6IERpc3RyaWJ1dGlvbkl0ZW1bXSA9IFtdO1xuXG4gIHRvdGFsU2VnbWVudHMoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5zZWdtZW50cy5yZWR1Y2UoKHN1bSwgcykgPT4gc3VtICsgKHMudmFsdWUgfHwgMCksIDApIHx8IDE7XG4gIH1cblxuICBzZWdtZW50V2lkdGgoc2VnbWVudDogRGlzdHJpYnV0aW9uU2VnbWVudCk6IHN0cmluZyB7XG4gICAgY29uc3QgdG90YWwgPSB0aGlzLnRvdGFsU2VnbWVudHMoKTtcbiAgICBjb25zdCBwY3QgPSBNYXRoLm1heCgwLCBNYXRoLm1pbigxMDAsIChzZWdtZW50LnZhbHVlIC8gdG90YWwpICogMTAwKSk7XG4gICAgcmV0dXJuIHBjdCArICclJztcbiAgfVxuXG4gIHNlZ21lbnRDb2xvcihzZWdtZW50OiBEaXN0cmlidXRpb25TZWdtZW50LCBmYWxsYmFjazogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gc2VnbWVudC5jb2xvckNsYXNzIHx8IGZhbGxiYWNrO1xuICB9XG5cbiAgZ2V0Q2hpbGRJY29uKGxhYmVsOiBzdHJpbmcpOiBzdHJpbmcgfCBudWxsIHtcbiAgICBjb25zdCBub3JtYWxpemVkTGFiZWwgPSBsYWJlbC50b0xvd2VyQ2FzZSgpLnRyaW0oKTtcbiAgICBpZiAobm9ybWFsaXplZExhYmVsID09PSAnaW9zJyB8fCBub3JtYWxpemVkTGFiZWwgPT09ICdhcHBsZScpIHtcbiAgICAgIHJldHVybiAnYXBwbGUnO1xuICAgIH0gZWxzZSBpZiAobm9ybWFsaXplZExhYmVsID09PSAnYW5kcm9pZCcpIHtcbiAgICAgIHJldHVybiAnYW5kcm9pZCc7XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgZ2V0SXRlbUljb25Db2xvcihpdGVtOiBEaXN0cmlidXRpb25JdGVtKTogc3RyaW5nIHtcbiAgICAvLyBSZXR1cm4gY29sb3IgYmFzZWQgb24gbGFiZWwgb3IgdXNlIGRlZmF1bHRcbiAgICBjb25zdCBsYWJlbCA9IGl0ZW0ubGFiZWwudG9Mb3dlckNhc2UoKTtcbiAgICBpZiAobGFiZWwgPT09ICd3ZWInKSB7XG4gICAgICByZXR1cm4gJyM0RjQ2RTUnO1xuICAgIH0gZWxzZSBpZiAobGFiZWwgPT09ICdtb2JpbGUnKSB7XG4gICAgICByZXR1cm4gJyM5MzMzRUEnO1xuICAgIH0gZWxzZSBpZiAobGFiZWwgPT09ICdhcGknKSB7XG4gICAgICByZXR1cm4gJyMwNTk2NjknO1xuICAgIH1cbiAgICByZXR1cm4gJyM0RjQ2RTUnOyAvLyBkZWZhdWx0XG4gIH1cbn1cblxuXG4iLCI8ZGl2IGlkPVwiY3FhLXVpLXJvb3RcIj5cbiAgPGRpdiBjbGFzcz1cImNxYS1iZy13aGl0ZSBjcWEtcm91bmRlZC1bOHB4XSBjcWEtYm9yZGVyIGNxYS1ib3JkZXItc29saWQgY3FhLWJvcmRlci1ib3JkZXItZGVmYXVsdCBjcWEtcHktWzE0LjVweF0gY3FhLXB4LVsxN3B4XSBjcWEtc2hhZG93LWNhcmRcIj5cbiAgICA8IS0tIFRpdGxlIC0tPlxuICAgIDxoMyBjbGFzcz1cImNxYS10ZXh0LVsxNnB4XSBjcWEtbGVhZGluZy02IGNxYS10ZXh0LVsjMTExODI3XSBjcWEtbWItMlwiPnt7IHRpdGxlIH19PC9oMz5cblxuICAgIDwhLS0gU3RhY2tlZCBzZWdtZW50cyBwaWxsIC0tPlxuICAgIDxkaXYgY2xhc3M9XCJjcWEtdy1mdWxsIGNxYS1oLVsyNHB4XSBjcWEtcm91bmRlZC1mdWxsIGNxYS1iZy1bI0YzRjRGNl0gY3FhLW92ZXJmbG93LWhpZGRlbiBjcWEtZmxleCBjcWEtbWItMlwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgcyBvZiBzZWdtZW50czsgbGV0IGkgPSBpbmRleDsgbGV0IGxhc3QgPSBsYXN0XCI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cImNxYS1oLWZ1bGwgY3FhLWZsZXggY3FhLWl0ZW1zLWNlbnRlciBjcWEtanVzdGlmeS1jZW50ZXIgY3FhLXRleHQtd2hpdGUgY3FhLXRleHQtWzEycHhdIGNxYS1sZWFkaW5nLVsxNnB4XVwiXG4gICAgICAgICAgW25nQ2xhc3NdPVwiW1xuICAgICAgICAgICAgc2VnbWVudENvbG9yKHMsIGkgPT09IDAgPyAnY3FhLWJnLVsjNEY0NkU1XScgOiBpID09PSBzZWdtZW50cy5sZW5ndGggLSAxID8gJ2NxYS1iZy1bIzA1OTY2OV0nIDogJ2NxYS1iZy1bIzkzMzNFQV0nKSxcbiAgICAgICAgICAgIGkgPT09IDAgPyAnY3FhLXJvdW5kZWQtbC1mdWxsJyA6ICcnLFxuICAgICAgICAgICAgbGFzdCA/ICdjcWEtcm91bmRlZC1yLWZ1bGwnIDogJydcbiAgICAgICAgICBdXCIgW3N0eWxlLndpZHRoXT1cInNlZ21lbnRXaWR0aChzKVwiPlxuICAgICAgICAgIHt7IHMubGFiZWwgfX1cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cblxuICAgIDwhLS0gSXRlbXMgbGlzdCAtLT5cbiAgICA8ZGl2IGNsYXNzPVwiY3FhLWZsZXggY3FhLWZsZXgtY29sIGNxYS1nYXAtWzZweF1cIj5cbiAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGl0IG9mIGl0ZW1zXCIgY2xhc3M9XCJjcWEtZmxleCBjcWEtZmxleC1jb2wgY3FhLWdhcC1bNnB4XVwiPlxuICAgICAgICA8IS0tIFBhcmVudCByb3cgLS0+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1qdXN0aWZ5LWJldHdlZW5cIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3FhLWZsZXggY3FhLWl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjcWEtdy1bNHB4XSBjcWEtaC1bMTJweF0gY3FhLXJvdW5kZWQtZnVsbFwiIFtzdHlsZS5iYWNrZ3JvdW5kLWNvbG9yXT1cImdldEl0ZW1JY29uQ29sb3IoaXQpXCI+PC9zcGFuPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNxYS1tbC1bOHB4XSBjcWEtbXItWzZweF1cIj5cbiAgICAgICAgICAgICAgPG1hdC1pY29uICpuZ0lmPVwiaXQuaWNvblwiIGNsYXNzPVwiY3FhLXctWzE0cHhdIGNxYS1oLVsxNHB4XSBjcWEtdGV4dC1bMTRweF0gY3FhLWxlYWRpbmctWzE0cHhdXCIgW3N0eWxlLmNvbG9yXT1cImdldEl0ZW1JY29uQ29sb3IoaXQpXCI+XG4gICAgICAgICAgICAgICAge3sgaXQuaWNvbiB9fVxuICAgICAgICAgICAgICA8L21hdC1pY29uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNxYS10ZXh0LVsxMnB4XSBjcWEtbGVhZGluZy1bMThweF0gY3FhLXRleHQtZGlhbG9nLW11dGVkXCI+e3sgaXQubGFiZWwgfX08L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNxYS10ZXh0LVsxMnB4XSBjcWEtbGVhZGluZy00IGNxYS1mb250LWJvbGRcIj57eyBpdC52YWx1ZSB8IG51bWJlciB9fTwvZGl2PlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8IS0tIENoaWxkcmVuIHJvd3MgLS0+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJpdC5jaGlsZHJlbj8ubGVuZ3RoXCIgY2xhc3M9XCJjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1nYXAtMlwiPlxuICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGNoIG9mIGl0LmNoaWxkcmVuXCJcbiAgICAgICAgICAgIGNsYXNzPVwiY3FhLWZsZXggY3FhLWl0ZW1zLWNlbnRlciBjcWEtanVzdGlmeS1iZXR3ZWVuIGNxYS1mbGV4LTEgY3FhLXJvdW5kZWQtWzRweF0gY3FhLWJnLVsjRjlGQUZCXVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNxYS1mbGV4IGNxYS1pdGVtcy1jZW50ZXIgY3FhLXRleHQtWzEwcHhdIGNxYS1sZWFkaW5nLVsxNXB4XSBjcWEtdGV4dC1bIzRCNTU2M11cIj5cbiAgICAgICAgICAgICAgPG1hdC1pY29uICpuZ0lmPVwiZ2V0Q2hpbGRJY29uKGNoLmxhYmVsKVwiIGNsYXNzPVwiY3FhLXctWzE0cHhdIGNxYS1oLVsxNHB4XSBjcWEtdGV4dC1bMTRweF0gY3FhLWxlYWRpbmctWzE0cHhdIGNxYS1tbC0yIGNxYS1tci0xIGNxYS10ZXh0LVsjNEI1NTYzXVwiPlxuICAgICAgICAgICAgICAgIHt7IGdldENoaWxkSWNvbihjaC5sYWJlbCkgfX1cbiAgICAgICAgICAgICAgPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNxYS1wci0xXCIgW25nQ2xhc3NdPVwiZ2V0Q2hpbGRJY29uKGNoLmxhYmVsKSA/ICdjcWEtcGwtMCcgOiAnY3FhLXBsLTInXCI+e3sgY2gubGFiZWwgfX08L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjcWEtZm9udC1ib2xkIGNxYS10ZXh0LVsjMTExODI3XSBjcWEtdGV4dC1bMTBweF0gY3FhLWxlYWRpbmctWzE1cHhdXCI+e3sgY2gudmFsdWUgfX08L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+Il19