@cqa-lib/cqa-ui 1.1.233 → 1.1.235
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/lib/add-prerequisite-cases-section/add-prerequisite-cases-section.component.mjs +48 -8
- package/esm2020/lib/execution-screen/api-step/api-step.component.mjs +21 -3
- package/esm2020/lib/execution-screen/basic-step/basic-step.component.mjs +19 -1
- package/esm2020/lib/execution-screen/db-verification-step/db-verification-step.component.mjs +285 -18
- package/esm2020/lib/execution-screen/execution-step.models.mjs +1 -1
- package/esm2020/lib/execution-screen/live-execution-step/live-execution-step.component.mjs +21 -1
- package/esm2020/lib/execution-screen/loop-step/loop-step.component.mjs +19 -1
- package/esm2020/lib/execution-screen/main-step-collapse/main-step-collapse.component.mjs +13 -8
- package/esm2020/lib/execution-screen/step-renderer/step-renderer.component.mjs +5 -3
- package/esm2020/lib/test-case-details/test-case-details.component.mjs +3 -3
- package/fesm2015/cqa-lib-cqa-ui.mjs +380 -53
- package/fesm2015/cqa-lib-cqa-ui.mjs.map +1 -1
- package/fesm2020/cqa-lib-cqa-ui.mjs +438 -52
- package/fesm2020/cqa-lib-cqa-ui.mjs.map +1 -1
- package/lib/add-prerequisite-cases-section/add-prerequisite-cases-section.component.d.ts +20 -2
- package/lib/execution-screen/db-verification-step/db-verification-step.component.d.ts +19 -3
- package/lib/execution-screen/execution-step.models.d.ts +1 -0
- package/lib/execution-screen/main-step-collapse/main-step-collapse.component.d.ts +2 -1
- package/package.json +1 -1
- package/styles.css +1 -1
|
@@ -109,10 +109,10 @@ export class TestCaseDetailsComponent {
|
|
|
109
109
|
}
|
|
110
110
|
}
|
|
111
111
|
TestCaseDetailsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: TestCaseDetailsComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
112
|
-
TestCaseDetailsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: TestCaseDetailsComponent, selector: "cqa-test-case-details", inputs: { editing: "editing", startInEditMode: "startInEditMode", descriptionTitle: "descriptionTitle", descriptionContent: "descriptionContent", enableMarkdown: "enableMarkdown", showEditButton: "showEditButton", metadataItems: "metadataItems", labels: "labels", configTitle: "configTitle", configSections: "configSections", configSectionsRow2: "configSectionsRow2", platform: "platform", selectConfigOverrides: "selectConfigOverrides" }, outputs: { editDescription: "editDescription", cancel: "cancel", saveChanges: "saveChanges", metadataLinkClick: "metadataLinkClick", selectSearch: "selectSearch", selectLoadMore: "selectLoadMore", selectOpened: "selectOpened", selectionChange: "selectionChange", labelAdded: "labelAdded" }, ngImport: i0, template: "<!-- Edit mode: show edit form (Figma design) -->\n<cqa-test-case-details-edit\n *ngIf=\"isEditing\"\n [descriptionTitle]=\"descriptionTitle\"\n [descriptionContent]=\"descriptionContent\"\n [enableMarkdown]=\"enableMarkdown\"\n [metadataItems]=\"metadataItems\"\n [labels]=\"labels\"\n [configTitle]=\"configTitle\"\n [configSections]=\"configSections\"\n [configSectionsRow2]=\"configSectionsRow2\"\n [platform]=\"platform\"\n [selectConfigOverrides]=\"selectConfigOverrides\"\n (save)=\"onSaveChanges($event)\"\n (cancel)=\"onCancelEdit()\"\n (selectSearch)=\"selectSearch.emit($event)\"\n (selectLoadMore)=\"selectLoadMore.emit($event)\"\n (selectOpened)=\"selectOpened.emit($event)\"\n (selectionChange)=\"selectionChange.emit($event)\"\n (labelAdded)=\"labelAdded.emit($event)\">\n</cqa-test-case-details-edit>\n\n<!-- View mode: read-only details -->\n<div *ngIf=\"!isEditing\" class=\"cqa-self-stretch cqa-py-4 cqa-px-0 cqa-flex cqa-flex-col cqa-justify-start cqa-items-start cqa-gap-4 cqa-text-sm cqa-leading-[19.6px]\">\n <div class=\"cqa-self-stretch cqa-flex cqa-flex-col cqa-justify-start cqa-items-start cqa-gap-4 cqa-text-sm cqa-leading-[19.6px]\">\n <!-- Description Section -->\n <div class=\"cqa-self-stretch cqa-flex cqa-flex-col cqa-justify-start cqa-items-start cqa-gap-2.5\">\n <div class=\"cqa-self-stretch cqa-inline-flex cqa-justify-between cqa-items-center\">\n <div class=\"cqa-flex cqa-items-center cqa-gap-2\">\n <div class=\"cqa-w-5 cqa-h-5 cqa-p-1 cqa-flex-shrink-0 cqa-bg-[#3F43EE1A] cqa-rounded-md cqa-inline-flex cqa-justify-center cqa-items-center\">\n <mat-icon class=\"cqa-text-[#1B1FEB] cqa-text-[12px] cqa-w-3 cqa-h-3 cqa-leading-none cqa-block\">description</mat-icon>\n </div>\n <span class=\"cqa-text-[#374151] cqa-text-sm cqa-font-semibold cqa-leading-[19.6px]\">{{ descriptionTitle }}</span>\n </div>\n <button\n *ngIf=\"showEditButton\"\n type=\"button\"\n class=\"cqa-flex cqa-justify-end cqa-items-center cqa-gap-2 cqa-text-[#A3A3A3] cqa-text-xs cqa-font-semibold hover:cqa-text-[#737373] cqa-transition-colors focus:cqa-outline-none focus-visible:cqa-ring-2 focus-visible:cqa-ring-[#3F43EE] focus-visible:cqa-ring-offset-2\"\n (click)=\"onEditClick()\">\n <mat-icon class=\"cqa-text-[14px] cqa-w-4 cqa-h-4\">edit</mat-icon>\n Edit\n </button>\n </div>\n <div *ngIf=\"descriptionContent\" class=\"cqa-self-stretch cqa-flex cqa-flex-col cqa-justify-start cqa-items-start\">\n <div *ngIf=\"enableMarkdown\" class=\"cqa-self-stretch cqa-text-[#111827] cqa-text-sm cqa-leading-[19.6px] cqa-font-normal cqa-prose cqa-prose-sm cqa-max-w-none\" [innerHTML]=\"descriptionContent\"></div>\n <div *ngIf=\"!enableMarkdown\" class=\"cqa-self-stretch cqa-text-[#111827] cqa-text-sm cqa-leading-[19.6px] cqa-font-normal\">{{ descriptionContent }}</div>\n </div>\n </div>\n\n <!-- Metadata Section -->\n <div *ngIf=\"metadataItems.length\" class=\"cqa-self-stretch cqa-flex cqa-flex-col cqa-justify-start cqa-items-start cqa-gap-2.5\">\n <div class=\"cqa-self-stretch cqa-grid cqa-grid-cols-2 cqa-gap-
|
|
112
|
+
TestCaseDetailsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: TestCaseDetailsComponent, selector: "cqa-test-case-details", inputs: { editing: "editing", startInEditMode: "startInEditMode", descriptionTitle: "descriptionTitle", descriptionContent: "descriptionContent", enableMarkdown: "enableMarkdown", showEditButton: "showEditButton", metadataItems: "metadataItems", labels: "labels", configTitle: "configTitle", configSections: "configSections", configSectionsRow2: "configSectionsRow2", platform: "platform", selectConfigOverrides: "selectConfigOverrides" }, outputs: { editDescription: "editDescription", cancel: "cancel", saveChanges: "saveChanges", metadataLinkClick: "metadataLinkClick", selectSearch: "selectSearch", selectLoadMore: "selectLoadMore", selectOpened: "selectOpened", selectionChange: "selectionChange", labelAdded: "labelAdded" }, ngImport: i0, template: "<!-- Edit mode: show edit form (Figma design) -->\n<cqa-test-case-details-edit\n *ngIf=\"isEditing\"\n [descriptionTitle]=\"descriptionTitle\"\n [descriptionContent]=\"descriptionContent\"\n [enableMarkdown]=\"enableMarkdown\"\n [metadataItems]=\"metadataItems\"\n [labels]=\"labels\"\n [configTitle]=\"configTitle\"\n [configSections]=\"configSections\"\n [configSectionsRow2]=\"configSectionsRow2\"\n [platform]=\"platform\"\n [selectConfigOverrides]=\"selectConfigOverrides\"\n (save)=\"onSaveChanges($event)\"\n (cancel)=\"onCancelEdit()\"\n (selectSearch)=\"selectSearch.emit($event)\"\n (selectLoadMore)=\"selectLoadMore.emit($event)\"\n (selectOpened)=\"selectOpened.emit($event)\"\n (selectionChange)=\"selectionChange.emit($event)\"\n (labelAdded)=\"labelAdded.emit($event)\">\n</cqa-test-case-details-edit>\n\n<!-- View mode: read-only details -->\n<div *ngIf=\"!isEditing\" class=\"cqa-self-stretch cqa-py-4 cqa-px-0 cqa-flex cqa-flex-col cqa-justify-start cqa-items-start cqa-gap-4 cqa-text-sm cqa-leading-[19.6px]\">\n <div class=\"cqa-self-stretch cqa-flex cqa-flex-col cqa-justify-start cqa-items-start cqa-gap-4 cqa-text-sm cqa-leading-[19.6px]\">\n <!-- Description Section -->\n <div class=\"cqa-self-stretch cqa-flex cqa-flex-col cqa-justify-start cqa-items-start cqa-gap-2.5\">\n <div class=\"cqa-self-stretch cqa-inline-flex cqa-justify-between cqa-items-center\">\n <div class=\"cqa-flex cqa-items-center cqa-gap-2\">\n <div class=\"cqa-w-5 cqa-h-5 cqa-p-1 cqa-flex-shrink-0 cqa-bg-[#3F43EE1A] cqa-rounded-md cqa-inline-flex cqa-justify-center cqa-items-center\">\n <mat-icon class=\"cqa-text-[#1B1FEB] cqa-text-[12px] cqa-w-3 cqa-h-3 cqa-leading-none cqa-block\">description</mat-icon>\n </div>\n <span class=\"cqa-text-[#374151] cqa-text-sm cqa-font-semibold cqa-leading-[19.6px]\">{{ descriptionTitle }}</span>\n </div>\n <button\n *ngIf=\"showEditButton\"\n type=\"button\"\n class=\"cqa-flex cqa-justify-end cqa-items-center cqa-gap-2 cqa-text-[#A3A3A3] cqa-text-xs cqa-font-semibold hover:cqa-text-[#737373] cqa-transition-colors focus:cqa-outline-none focus-visible:cqa-ring-2 focus-visible:cqa-ring-[#3F43EE] focus-visible:cqa-ring-offset-2\"\n (click)=\"onEditClick()\">\n <mat-icon class=\"cqa-text-[14px] cqa-w-4 cqa-h-4\">edit</mat-icon>\n Edit\n </button>\n </div>\n <div *ngIf=\"descriptionContent\" class=\"cqa-self-stretch cqa-flex cqa-flex-col cqa-justify-start cqa-items-start\">\n <div *ngIf=\"enableMarkdown\" class=\"cqa-self-stretch cqa-text-[#111827] cqa-text-sm cqa-leading-[19.6px] cqa-font-normal cqa-prose cqa-prose-sm cqa-max-w-none\" [innerHTML]=\"descriptionContent\"></div>\n <div *ngIf=\"!enableMarkdown\" class=\"cqa-self-stretch cqa-text-[#111827] cqa-text-sm cqa-leading-[19.6px] cqa-font-normal\">{{ descriptionContent }}</div>\n </div>\n </div>\n\n <!-- Metadata Section -->\n <div *ngIf=\"metadataItems.length\" class=\"cqa-self-stretch cqa-flex cqa-flex-col cqa-justify-start cqa-items-start cqa-gap-2.5\">\n <div class=\"cqa-self-stretch cqa-grid cqa-grid-cols-2 cqa-gap-2 cqa-gap-y-4\">\n <ng-container *ngFor=\"let item of metadataItems; trackBy: trackByMetadataLabel\">\n <div class=\"cqa-flex cqa-flex-col cqa-justify-start cqa-items-start cqa-gap-0.5\">\n <div class=\"cqa-text-[#6B7280] cqa-text-xs cqa-leading-[15px] cqa-font-medium\">{{ item.label }}</div>\n <div\n class=\"cqa-flex cqa-justify-start cqa-items-center cqa-gap-[5px] cqa-min-w-0 cqa-w-full cqa-text-left cqa-text-[#0A0A0A] cqa-border cqa-border-[#F5F5F5]\">\n <mat-icon *ngIf=\"item.icon && (!item.iconLibrary || item.iconLibrary === 'mat')\" class=\"cqa-text-[#6B7280] cqa-text-sm cqa-w-4 cqa-h-4\">\n {{ item.icon }}\n </mat-icon>\n <span *ngIf=\"item.statusColor\" class=\"cqa-w-3.5 cqa-h-3.5 cqa-rounded-full cqa-flex-shrink-0\" [ngClass]=\"getStatusDotClass(item)\"></span>\n <a\n *ngIf=\"item.link\"\n href=\"javascript:void(0)\"\n class=\"cqa-text-[#2563EB] cqa-text-xs cqa-leading-[12px] cqa-font-normal hover:cqa-underline cqa-cursor-pointer cqa-block cqa-truncate cqa-min-w-0\"\n (click)=\"onMetadataLinkClick(item); $event.preventDefault()\">\n {{ item.value }}\n </a>\n <span *ngIf=\"!item.link\" class=\"cqa-text-xs cqa-leading-[12px] cqa-font-normal cqa-align-middle\" [ngClass]=\"getValueTextClass(item)\">\n {{ item.value }}\n </span>\n </div>\n </div>\n </ng-container>\n </div>\n </div>\n\n <!-- Labels (Figma: Labels title, cqa-badge chips with tag icon) -->\n <div *ngIf=\"labels.length\" class=\"cqa-self-stretch cqa-flex cqa-flex-col cqa-justify-start cqa-items-start cqa-gap-2 cqa-text-sm cqa-leading-[19.6px]\">\n <span class=\"cqa-text-[#111827] cqa-text-sm cqa-font-medium cqa-leading-5\">Labels</span>\n <div class=\"cqa-flex cqa-flex-wrap cqa-gap-2\">\n <cqa-badge\n *ngFor=\"let label of labels\"\n [label]=\"label\"\n icon=\"label\"\n variant=\"outline\"\n size=\"small\"\n backgroundColor=\"#ffffff\"\n textColor=\"#475569\"\n borderColor=\"#E2E8F0\"\n iconColor=\"#94A3B8\">\n </cqa-badge>\n </div>\n </div>\n\n <!-- Configuration Section -->\n <div *ngIf=\"configSections.length || configSectionsRow2.length\" class=\"cqa-self-stretch cqa-flex cqa-flex-col cqa-justify-start cqa-items-start cqa-gap-2.5\">\n <div class=\"cqa-self-stretch cqa-inline-flex cqa-justify-start cqa-items-center\">\n <div class=\"cqa-flex cqa-items-center cqa-gap-2\">\n <div class=\"cqa-w-5 cqa-h-5 cqa-p-1 cqa-flex-shrink-0 cqa-bg-[#3F43EE1A] cqa-rounded-md cqa-inline-flex cqa-justify-center cqa-items-center\">\n <mat-icon class=\"cqa-text-[#1B1FEB] cqa-text-[12px] cqa-w-3 cqa-h-3 cqa-leading-none cqa-block\">settings</mat-icon>\n </div>\n <span class=\"cqa-text-[#374151] cqa-text-sm cqa-font-semibold cqa-leading-[19.6px]\">{{ configTitle }}</span>\n </div>\n </div>\n <div class=\"cqa-self-stretch cqa-flex cqa-flex-col cqa-justify-start cqa-items-start cqa-gap-2.5\">\n <div class=\"cqa-self-stretch cqa-grid cqa-grid-cols-1 cqa-gap-2.5\">\n <ng-container *ngFor=\"let section of configSections; trackBy: trackByConfigTitle\">\n <cqa-configuration-card\n [icon]=\"section.icon || 'tune'\"\n [title]=\"section.title\"\n [data]=\"section.items\">\n </cqa-configuration-card>\n </ng-container>\n </div>\n <div *ngIf=\"configSectionsRow2.length\" class=\"cqa-self-stretch cqa-flex cqa-flex-col cqa-gap-4 cqa-text-sm cqa-leading-[19.6px]\">\n <cqa-configuration-card\n *ngFor=\"let section of configSectionsRow2; trackBy: trackByConfigTitle\"\n [icon]=\"section.icon || 'tune'\"\n [title]=\"section.title\"\n [data]=\"section.items\">\n </cqa-configuration-card>\n </div>\n </div>\n </div>\n </div>\n</div>\n", components: [{ type: i1.TestCaseDetailsEditComponent, selector: "cqa-test-case-details-edit", inputs: ["descriptionTitle", "descriptionContent", "enableMarkdown", "metadataItems", "labels", "configTitle", "configSections", "configSectionsRow2", "prerequisiteCaseOptions", "platform", "selectConfigOverrides"], outputs: ["save", "cancel", "selectSearch", "selectLoadMore", "selectOpened", "selectionChange", "labelAdded"] }, { type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i3.BadgeComponent, selector: "cqa-badge", inputs: ["type", "label", "icon", "iconLibrary", "variant", "size", "backgroundColor", "textColor", "borderColor", "iconBackgroundColor", "iconColor", "iconSize", "inlineStyles", "key", "value", "keyTextColor", "valueTextColor", "isLoading"] }, { type: i4.ConfigurationCardComponent, selector: "cqa-configuration-card", inputs: ["icon", "title", "data"] }], directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
113
113
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: TestCaseDetailsComponent, decorators: [{
|
|
114
114
|
type: Component,
|
|
115
|
-
args: [{ selector: 'cqa-test-case-details', changeDetection: ChangeDetectionStrategy.OnPush, template: "<!-- Edit mode: show edit form (Figma design) -->\n<cqa-test-case-details-edit\n *ngIf=\"isEditing\"\n [descriptionTitle]=\"descriptionTitle\"\n [descriptionContent]=\"descriptionContent\"\n [enableMarkdown]=\"enableMarkdown\"\n [metadataItems]=\"metadataItems\"\n [labels]=\"labels\"\n [configTitle]=\"configTitle\"\n [configSections]=\"configSections\"\n [configSectionsRow2]=\"configSectionsRow2\"\n [platform]=\"platform\"\n [selectConfigOverrides]=\"selectConfigOverrides\"\n (save)=\"onSaveChanges($event)\"\n (cancel)=\"onCancelEdit()\"\n (selectSearch)=\"selectSearch.emit($event)\"\n (selectLoadMore)=\"selectLoadMore.emit($event)\"\n (selectOpened)=\"selectOpened.emit($event)\"\n (selectionChange)=\"selectionChange.emit($event)\"\n (labelAdded)=\"labelAdded.emit($event)\">\n</cqa-test-case-details-edit>\n\n<!-- View mode: read-only details -->\n<div *ngIf=\"!isEditing\" class=\"cqa-self-stretch cqa-py-4 cqa-px-0 cqa-flex cqa-flex-col cqa-justify-start cqa-items-start cqa-gap-4 cqa-text-sm cqa-leading-[19.6px]\">\n <div class=\"cqa-self-stretch cqa-flex cqa-flex-col cqa-justify-start cqa-items-start cqa-gap-4 cqa-text-sm cqa-leading-[19.6px]\">\n <!-- Description Section -->\n <div class=\"cqa-self-stretch cqa-flex cqa-flex-col cqa-justify-start cqa-items-start cqa-gap-2.5\">\n <div class=\"cqa-self-stretch cqa-inline-flex cqa-justify-between cqa-items-center\">\n <div class=\"cqa-flex cqa-items-center cqa-gap-2\">\n <div class=\"cqa-w-5 cqa-h-5 cqa-p-1 cqa-flex-shrink-0 cqa-bg-[#3F43EE1A] cqa-rounded-md cqa-inline-flex cqa-justify-center cqa-items-center\">\n <mat-icon class=\"cqa-text-[#1B1FEB] cqa-text-[12px] cqa-w-3 cqa-h-3 cqa-leading-none cqa-block\">description</mat-icon>\n </div>\n <span class=\"cqa-text-[#374151] cqa-text-sm cqa-font-semibold cqa-leading-[19.6px]\">{{ descriptionTitle }}</span>\n </div>\n <button\n *ngIf=\"showEditButton\"\n type=\"button\"\n class=\"cqa-flex cqa-justify-end cqa-items-center cqa-gap-2 cqa-text-[#A3A3A3] cqa-text-xs cqa-font-semibold hover:cqa-text-[#737373] cqa-transition-colors focus:cqa-outline-none focus-visible:cqa-ring-2 focus-visible:cqa-ring-[#3F43EE] focus-visible:cqa-ring-offset-2\"\n (click)=\"onEditClick()\">\n <mat-icon class=\"cqa-text-[14px] cqa-w-4 cqa-h-4\">edit</mat-icon>\n Edit\n </button>\n </div>\n <div *ngIf=\"descriptionContent\" class=\"cqa-self-stretch cqa-flex cqa-flex-col cqa-justify-start cqa-items-start\">\n <div *ngIf=\"enableMarkdown\" class=\"cqa-self-stretch cqa-text-[#111827] cqa-text-sm cqa-leading-[19.6px] cqa-font-normal cqa-prose cqa-prose-sm cqa-max-w-none\" [innerHTML]=\"descriptionContent\"></div>\n <div *ngIf=\"!enableMarkdown\" class=\"cqa-self-stretch cqa-text-[#111827] cqa-text-sm cqa-leading-[19.6px] cqa-font-normal\">{{ descriptionContent }}</div>\n </div>\n </div>\n\n <!-- Metadata Section -->\n <div *ngIf=\"metadataItems.length\" class=\"cqa-self-stretch cqa-flex cqa-flex-col cqa-justify-start cqa-items-start cqa-gap-2.5\">\n <div class=\"cqa-self-stretch cqa-grid cqa-grid-cols-2 cqa-gap-
|
|
115
|
+
args: [{ selector: 'cqa-test-case-details', changeDetection: ChangeDetectionStrategy.OnPush, template: "<!-- Edit mode: show edit form (Figma design) -->\n<cqa-test-case-details-edit\n *ngIf=\"isEditing\"\n [descriptionTitle]=\"descriptionTitle\"\n [descriptionContent]=\"descriptionContent\"\n [enableMarkdown]=\"enableMarkdown\"\n [metadataItems]=\"metadataItems\"\n [labels]=\"labels\"\n [configTitle]=\"configTitle\"\n [configSections]=\"configSections\"\n [configSectionsRow2]=\"configSectionsRow2\"\n [platform]=\"platform\"\n [selectConfigOverrides]=\"selectConfigOverrides\"\n (save)=\"onSaveChanges($event)\"\n (cancel)=\"onCancelEdit()\"\n (selectSearch)=\"selectSearch.emit($event)\"\n (selectLoadMore)=\"selectLoadMore.emit($event)\"\n (selectOpened)=\"selectOpened.emit($event)\"\n (selectionChange)=\"selectionChange.emit($event)\"\n (labelAdded)=\"labelAdded.emit($event)\">\n</cqa-test-case-details-edit>\n\n<!-- View mode: read-only details -->\n<div *ngIf=\"!isEditing\" class=\"cqa-self-stretch cqa-py-4 cqa-px-0 cqa-flex cqa-flex-col cqa-justify-start cqa-items-start cqa-gap-4 cqa-text-sm cqa-leading-[19.6px]\">\n <div class=\"cqa-self-stretch cqa-flex cqa-flex-col cqa-justify-start cqa-items-start cqa-gap-4 cqa-text-sm cqa-leading-[19.6px]\">\n <!-- Description Section -->\n <div class=\"cqa-self-stretch cqa-flex cqa-flex-col cqa-justify-start cqa-items-start cqa-gap-2.5\">\n <div class=\"cqa-self-stretch cqa-inline-flex cqa-justify-between cqa-items-center\">\n <div class=\"cqa-flex cqa-items-center cqa-gap-2\">\n <div class=\"cqa-w-5 cqa-h-5 cqa-p-1 cqa-flex-shrink-0 cqa-bg-[#3F43EE1A] cqa-rounded-md cqa-inline-flex cqa-justify-center cqa-items-center\">\n <mat-icon class=\"cqa-text-[#1B1FEB] cqa-text-[12px] cqa-w-3 cqa-h-3 cqa-leading-none cqa-block\">description</mat-icon>\n </div>\n <span class=\"cqa-text-[#374151] cqa-text-sm cqa-font-semibold cqa-leading-[19.6px]\">{{ descriptionTitle }}</span>\n </div>\n <button\n *ngIf=\"showEditButton\"\n type=\"button\"\n class=\"cqa-flex cqa-justify-end cqa-items-center cqa-gap-2 cqa-text-[#A3A3A3] cqa-text-xs cqa-font-semibold hover:cqa-text-[#737373] cqa-transition-colors focus:cqa-outline-none focus-visible:cqa-ring-2 focus-visible:cqa-ring-[#3F43EE] focus-visible:cqa-ring-offset-2\"\n (click)=\"onEditClick()\">\n <mat-icon class=\"cqa-text-[14px] cqa-w-4 cqa-h-4\">edit</mat-icon>\n Edit\n </button>\n </div>\n <div *ngIf=\"descriptionContent\" class=\"cqa-self-stretch cqa-flex cqa-flex-col cqa-justify-start cqa-items-start\">\n <div *ngIf=\"enableMarkdown\" class=\"cqa-self-stretch cqa-text-[#111827] cqa-text-sm cqa-leading-[19.6px] cqa-font-normal cqa-prose cqa-prose-sm cqa-max-w-none\" [innerHTML]=\"descriptionContent\"></div>\n <div *ngIf=\"!enableMarkdown\" class=\"cqa-self-stretch cqa-text-[#111827] cqa-text-sm cqa-leading-[19.6px] cqa-font-normal\">{{ descriptionContent }}</div>\n </div>\n </div>\n\n <!-- Metadata Section -->\n <div *ngIf=\"metadataItems.length\" class=\"cqa-self-stretch cqa-flex cqa-flex-col cqa-justify-start cqa-items-start cqa-gap-2.5\">\n <div class=\"cqa-self-stretch cqa-grid cqa-grid-cols-2 cqa-gap-2 cqa-gap-y-4\">\n <ng-container *ngFor=\"let item of metadataItems; trackBy: trackByMetadataLabel\">\n <div class=\"cqa-flex cqa-flex-col cqa-justify-start cqa-items-start cqa-gap-0.5\">\n <div class=\"cqa-text-[#6B7280] cqa-text-xs cqa-leading-[15px] cqa-font-medium\">{{ item.label }}</div>\n <div\n class=\"cqa-flex cqa-justify-start cqa-items-center cqa-gap-[5px] cqa-min-w-0 cqa-w-full cqa-text-left cqa-text-[#0A0A0A] cqa-border cqa-border-[#F5F5F5]\">\n <mat-icon *ngIf=\"item.icon && (!item.iconLibrary || item.iconLibrary === 'mat')\" class=\"cqa-text-[#6B7280] cqa-text-sm cqa-w-4 cqa-h-4\">\n {{ item.icon }}\n </mat-icon>\n <span *ngIf=\"item.statusColor\" class=\"cqa-w-3.5 cqa-h-3.5 cqa-rounded-full cqa-flex-shrink-0\" [ngClass]=\"getStatusDotClass(item)\"></span>\n <a\n *ngIf=\"item.link\"\n href=\"javascript:void(0)\"\n class=\"cqa-text-[#2563EB] cqa-text-xs cqa-leading-[12px] cqa-font-normal hover:cqa-underline cqa-cursor-pointer cqa-block cqa-truncate cqa-min-w-0\"\n (click)=\"onMetadataLinkClick(item); $event.preventDefault()\">\n {{ item.value }}\n </a>\n <span *ngIf=\"!item.link\" class=\"cqa-text-xs cqa-leading-[12px] cqa-font-normal cqa-align-middle\" [ngClass]=\"getValueTextClass(item)\">\n {{ item.value }}\n </span>\n </div>\n </div>\n </ng-container>\n </div>\n </div>\n\n <!-- Labels (Figma: Labels title, cqa-badge chips with tag icon) -->\n <div *ngIf=\"labels.length\" class=\"cqa-self-stretch cqa-flex cqa-flex-col cqa-justify-start cqa-items-start cqa-gap-2 cqa-text-sm cqa-leading-[19.6px]\">\n <span class=\"cqa-text-[#111827] cqa-text-sm cqa-font-medium cqa-leading-5\">Labels</span>\n <div class=\"cqa-flex cqa-flex-wrap cqa-gap-2\">\n <cqa-badge\n *ngFor=\"let label of labels\"\n [label]=\"label\"\n icon=\"label\"\n variant=\"outline\"\n size=\"small\"\n backgroundColor=\"#ffffff\"\n textColor=\"#475569\"\n borderColor=\"#E2E8F0\"\n iconColor=\"#94A3B8\">\n </cqa-badge>\n </div>\n </div>\n\n <!-- Configuration Section -->\n <div *ngIf=\"configSections.length || configSectionsRow2.length\" class=\"cqa-self-stretch cqa-flex cqa-flex-col cqa-justify-start cqa-items-start cqa-gap-2.5\">\n <div class=\"cqa-self-stretch cqa-inline-flex cqa-justify-start cqa-items-center\">\n <div class=\"cqa-flex cqa-items-center cqa-gap-2\">\n <div class=\"cqa-w-5 cqa-h-5 cqa-p-1 cqa-flex-shrink-0 cqa-bg-[#3F43EE1A] cqa-rounded-md cqa-inline-flex cqa-justify-center cqa-items-center\">\n <mat-icon class=\"cqa-text-[#1B1FEB] cqa-text-[12px] cqa-w-3 cqa-h-3 cqa-leading-none cqa-block\">settings</mat-icon>\n </div>\n <span class=\"cqa-text-[#374151] cqa-text-sm cqa-font-semibold cqa-leading-[19.6px]\">{{ configTitle }}</span>\n </div>\n </div>\n <div class=\"cqa-self-stretch cqa-flex cqa-flex-col cqa-justify-start cqa-items-start cqa-gap-2.5\">\n <div class=\"cqa-self-stretch cqa-grid cqa-grid-cols-1 cqa-gap-2.5\">\n <ng-container *ngFor=\"let section of configSections; trackBy: trackByConfigTitle\">\n <cqa-configuration-card\n [icon]=\"section.icon || 'tune'\"\n [title]=\"section.title\"\n [data]=\"section.items\">\n </cqa-configuration-card>\n </ng-container>\n </div>\n <div *ngIf=\"configSectionsRow2.length\" class=\"cqa-self-stretch cqa-flex cqa-flex-col cqa-gap-4 cqa-text-sm cqa-leading-[19.6px]\">\n <cqa-configuration-card\n *ngFor=\"let section of configSectionsRow2; trackBy: trackByConfigTitle\"\n [icon]=\"section.icon || 'tune'\"\n [title]=\"section.title\"\n [data]=\"section.items\">\n </cqa-configuration-card>\n </div>\n </div>\n </div>\n </div>\n</div>\n", styles: [] }]
|
|
116
116
|
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { editing: [{
|
|
117
117
|
type: Input
|
|
118
118
|
}], startInEditMode: [{
|
|
@@ -158,4 +158,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImpor
|
|
|
158
158
|
}], labelAdded: [{
|
|
159
159
|
type: Output
|
|
160
160
|
}] } });
|
|
161
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdC1jYXNlLWRldGFpbHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi90ZXN0LWNhc2UtZGV0YWlscy90ZXN0LWNhc2UtZGV0YWlscy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL3Rlc3QtY2FzZS1kZXRhaWxzL3Rlc3QtY2FzZS1kZXRhaWxzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsS0FBSyxFQUNMLE1BQU0sRUFDTixZQUFZLEVBQ1osdUJBQXVCLEdBR3hCLE1BQU0sZUFBZSxDQUFDOzs7Ozs7O0FBZ0J2QixNQUFNLE9BQU8sd0JBQXdCO0lBZW5DLFlBQW9CLEdBQXNCO1FBQXRCLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBZDFDLDJEQUEyRDtRQUNuRCxhQUFRLEdBQUcsS0FBSyxDQUFDO1FBS3pCLDREQUE0RDtRQUNuRCxvQkFBZSxHQUFHLEtBQUssQ0FBQztRQWNqQyxnQ0FBZ0M7UUFDdkIscUJBQWdCLEdBQUcsYUFBYSxDQUFDO1FBRTFDLCtCQUErQjtRQUN0Qix1QkFBa0IsR0FBRyxFQUFFLENBQUM7UUFFakMsc0ZBQXNGO1FBQzdFLG1CQUFjLEdBQUcsS0FBSyxDQUFDO1FBRWhDLGdFQUFnRTtRQUN2RCxtQkFBYyxHQUFHLEtBQUssQ0FBQztRQUVoQyw2RkFBNkY7UUFDcEYsa0JBQWEsR0FBa0MsRUFBRSxDQUFDO1FBRTNELHFEQUFxRDtRQUM1QyxXQUFNLEdBQWEsRUFBRSxDQUFDO1FBRS9CLGtDQUFrQztRQUN6QixnQkFBVyxHQUFHLGVBQWUsQ0FBQztRQUV2QyxnRUFBZ0U7UUFDdkQsbUJBQWMsR0FBbUMsRUFBRSxDQUFDO1FBRTdELDBGQUEwRjtRQUNqRix1QkFBa0IsR0FBbUMsRUFBRSxDQUFDO1FBQ2pFLHVGQUF1RjtRQUM5RSxhQUFRLEdBQXFCLEtBQUssQ0FBQztRQUU1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SUFBSSxDQUFDLFdBQVcsS0FBSyxLQUFLLEVBQUU7WUFDOUIsT0FBTyxvQkFBb0IsQ0FBQztTQUM3QjtRQUNELE9BQU8sb0JBQW9CLENBQUM7SUFDOUIsQ0FBQzs7cUhBNUhVLHdCQUF3Qjt5R0FBeEIsd0JBQXdCLHd4QkN4QnJDLCt1T0ErSEE7MkZEdkdhLHdCQUF3QjtrQkFOcEMsU0FBUzsrQkFDRSx1QkFBdUIsbUJBR2hCLHVCQUF1QixDQUFDLE1BQU07d0dBT3RDLE9BQU87c0JBQWYsS0FBSztnQkFHRyxlQUFlO3NCQUF2QixLQUFLO2dCQWVHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFHRyxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBR0csY0FBYztzQkFBdEIsS0FBSztnQkFHRyxjQUFjO3NCQUF0QixLQUFLO2dCQUdHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBR0csTUFBTTtzQkFBZCxLQUFLO2dCQUdHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBR0csY0FBYztzQkFBdEIsS0FBSztnQkFHRyxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBRUcsUUFBUTtzQkFBaEIsS0FBSztnQkFHRyxxQkFBcUI7c0JBQTdCLEtBQUs7Z0JBRUksZUFBZTtzQkFBeEIsTUFBTTtnQkFDRyxNQUFNO3NCQUFmLE1BQU07Z0JBQ0csV0FBVztzQkFBcEIsTUFBTTtnQkFDRyxpQkFBaUI7c0JBQTFCLE1BQU07Z0JBQ0csWUFBWTtzQkFBckIsTUFBTTtnQkFDRyxjQUFjO3NCQUF2QixNQUFNO2dCQUNHLFlBQVk7c0JBQXJCLE1BQU07Z0JBQ0csZUFBZTtzQkFBeEIsTUFBTTtnQkFDRyxVQUFVO3NCQUFuQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBJbnB1dCxcbiAgT3V0cHV0LFxuICBFdmVudEVtaXR0ZXIsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgT25Jbml0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIFRlc3RDYXNlRGV0YWlsc0NvbmZpZ1NlY3Rpb24sXG4gIFRlc3RDYXNlRGV0YWlsc01ldGFkYXRhSXRlbSxcbn0gZnJvbSAnLi90ZXN0LWNhc2UtZGV0YWlscy5tb2RlbHMnO1xuaW1wb3J0IHtcbiAgVGVzdENhc2VEZXRhaWxzRWRpdEZvcm1EYXRhLFxuICBTZWxlY3RDb25maWdPdmVycmlkZXMsXG59IGZyb20gJy4vdGVzdC1jYXNlLWRldGFpbHMtZWRpdC90ZXN0LWNhc2UtZGV0YWlscy1lZGl0LmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2NxYS10ZXN0LWNhc2UtZGV0YWlscycsXG4gIHRlbXBsYXRlVXJsOiAnLi90ZXN0LWNhc2UtZGV0YWlscy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogW10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBUZXN0Q2FzZURldGFpbHNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICAvKiogSW50ZXJuYWwgZWRpdGluZyBzdGF0ZSB3aGVuIG5vdCBjb250cm9sbGVkIGJ5IHBhcmVudCAqL1xuICBwcml2YXRlIF9lZGl0aW5nID0gZmFsc2U7XG5cbiAgLyoqIFdoZW4gcHJvdmlkZWQgYnkgcGFyZW50LCB1c2UgdGhpcyBpbnN0ZWFkIG9mIGludGVybmFsIHN0YXRlIChmaXhlcyBTdG9yeWJvb2sgZXZlbnQgZmxvdykuICovXG4gIEBJbnB1dCgpIGVkaXRpbmc/OiBib29sZWFuO1xuXG4gIC8qKiBXaGVuIHRydWUsIHN0YXJ0IGluIGVkaXQgbW9kZSAodXNlZnVsIGZvciBTdG9yeWJvb2spLiAqL1xuICBASW5wdXQoKSBzdGFydEluRWRpdE1vZGUgPSBmYWxzZTtcblxuICAvKiogUmVzb2x2ZWQgZWRpdGluZyBzdGF0ZTogcGFyZW50LWNvbnRyb2xsZWQgb3IgaW50ZXJuYWwgKi9cbiAgZ2V0IGlzRWRpdGluZygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5lZGl0aW5nICE9PSB1bmRlZmluZWQgPyB0aGlzLmVkaXRpbmcgOiB0aGlzLl9lZGl0aW5nO1xuICB9XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmKSB7fVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnN0YXJ0SW5FZGl0TW9kZSkge1xuICAgICAgdGhpcy5fZWRpdGluZyA9IHRydWU7XG4gICAgfVxuICB9XG4gIC8qKiBEZXNjcmlwdGlvbiBzZWN0aW9uIHRpdGxlICovXG4gIEBJbnB1dCgpIGRlc2NyaXB0aW9uVGl0bGUgPSAnRGVzY3JpcHRpb24nO1xuXG4gIC8qKiBEZXNjcmlwdGlvbiB0ZXh0IGNvbnRlbnQgKi9cbiAgQElucHV0KCkgZGVzY3JpcHRpb25Db250ZW50ID0gJyc7XG5cbiAgLyoqIFdoZW4gdHJ1ZSwgZGVzY3JpcHRpb24gc3VwcG9ydHMgcmljaCB0ZXh0IChIVE1MKS4gUmVuZGVycyBhcyBIVE1MIGluIHZpZXcgbW9kZS4gKi9cbiAgQElucHV0KCkgZW5hYmxlTWFya2Rvd24gPSBmYWxzZTtcblxuICAvKiogV2hldGhlciB0byBzaG93IHRoZSBFZGl0IGJ1dHRvbiBpbiB0aGUgRGVzY3JpcHRpb24gaGVhZGVyICovXG4gIEBJbnB1dCgpIHNob3dFZGl0QnV0dG9uID0gZmFsc2U7XG5cbiAgLyoqIE1ldGFkYXRhIGl0ZW1zIChjcmVhdGVkT24sIHN0YXR1cywgcHJpb3JpdHksIGVudmlyb25tZW50LCB2ZXJzaW9uLCB0ZXN0UGxhbk5hbWUsIGV0Yy4pICovXG4gIEBJbnB1dCgpIG1ldGFkYXRhSXRlbXM6IFRlc3RDYXNlRGV0YWlsc01ldGFkYXRhSXRlbVtdID0gW107XG5cbiAgLyoqIExhYmVscy90YWdzIChlLmcuIEF1dG9tYXRpb24sIEFQSSwgU0RLLCBVSS9VWCkgKi9cbiAgQElucHV0KCkgbGFiZWxzOiBzdHJpbmdbXSA9IFtdO1xuXG4gIC8qKiBDb25maWd1cmF0aW9uIHNlY3Rpb24gdGl0bGUgKi9cbiAgQElucHV0KCkgY29uZmlnVGl0bGUgPSAnQ29uZmlndXJhdGlvbic7XG5cbiAgLyoqIENvbmZpZ3VyYXRpb24gc2VjdGlvbnMgKGUuZy4gRXhlY3V0aW9uLCBBSSBDb25maWd1cmF0aW9uKSAqL1xuICBASW5wdXQoKSBjb25maWdTZWN0aW9uczogVGVzdENhc2VEZXRhaWxzQ29uZmlnU2VjdGlvbltdID0gW107XG5cbiAgLyoqIE9wdGlvbmFsIGNvbmZpZyBzZWN0aW9ucyBkaXNwbGF5ZWQgaW4gYSAyLWNvbHVtbiByb3cgKGUuZy4gV2FpdHMgJiBSZXRyaWVzLCBEZXZpY2UpICovXG4gIEBJbnB1dCgpIGNvbmZpZ1NlY3Rpb25zUm93MjogVGVzdENhc2VEZXRhaWxzQ29uZmlnU2VjdGlvbltdID0gW107XG4gIC8qKiBQbGF0Zm9ybTogJ3dlYicgb3IgJ21vYmlsZScuIERlZmF1bHRzIHRvICd3ZWInLiBVc2VkIGZvciBEZXZpY2UgU2V0dGluZ3MgZmllbGRzLiAqL1xuICBASW5wdXQoKSBwbGF0Zm9ybTogJ3dlYicgfCAnbW9iaWxlJyA9ICd3ZWInO1xuXG4gIC8qKiBPdmVycmlkZSBjb25maWcgcGVyIHNlbGVjdCBmb3IgQVBJLWRyaXZlbiBvcHRpb25zLCBzZXJ2ZXIgc2VhcmNoLCBsb2FkIG1vcmUuICovXG4gIEBJbnB1dCgpIHNlbGVjdENvbmZpZ092ZXJyaWRlczogU2VsZWN0Q29uZmlnT3ZlcnJpZGVzID0ge307XG5cbiAgQE91dHB1dCgpIGVkaXREZXNjcmlwdGlvbiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgQE91dHB1dCgpIGNhbmNlbCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgQE91dHB1dCgpIHNhdmVDaGFuZ2VzID0gbmV3IEV2ZW50RW1pdHRlcjxUZXN0Q2FzZURldGFpbHNFZGl0Rm9ybURhdGE+KCk7XG4gIEBPdXRwdXQoKSBtZXRhZGF0YUxpbmtDbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8VGVzdENhc2VEZXRhaWxzTWV0YWRhdGFJdGVtPigpO1xuICBAT3V0cHV0KCkgc2VsZWN0U2VhcmNoID0gbmV3IEV2ZW50RW1pdHRlcjx7IGtleTogc3RyaW5nOyBxdWVyeTogc3RyaW5nIH0+KCk7XG4gIEBPdXRwdXQoKSBzZWxlY3RMb2FkTW9yZSA9IG5ldyBFdmVudEVtaXR0ZXI8eyBrZXk6IHN0cmluZzsgcXVlcnk6IHN0cmluZyB9PigpO1xuICBAT3V0cHV0KCkgc2VsZWN0T3BlbmVkID0gbmV3IEV2ZW50RW1pdHRlcjx7IGtleTogc3RyaW5nIH0+KCk7XG4gIEBPdXRwdXQoKSBzZWxlY3Rpb25DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHsga2V5OiBzdHJpbmc7IHZhbHVlOiB1bmtub3duIH0+KCk7XG4gIEBPdXRwdXQoKSBsYWJlbEFkZGVkID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG5cbiAgb25FZGl0Q2xpY2soKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZWRpdGluZyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLl9lZGl0aW5nID0gdHJ1ZTtcbiAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG4gICAgdGhpcy5lZGl0RGVzY3JpcHRpb24uZW1pdCgpO1xuICB9XG5cbiAgb25TYXZlQ2hhbmdlcyhkYXRhOiBUZXN0Q2FzZURldGFpbHNFZGl0Rm9ybURhdGEpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5lZGl0aW5nID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuX2VkaXRpbmcgPSBmYWxzZTtcbiAgICB9XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIHRoaXMuc2F2ZUNoYW5nZXMuZW1pdChkYXRhKTtcbiAgfVxuXG4gIG9uQ2FuY2VsRWRpdCgpOiB2b2lkIHtcbiAgICB0aGlzLmNhbmNlbC5lbWl0KCk7XG4gICAgaWYgKHRoaXMuZWRpdGluZyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLl9lZGl0aW5nID0gZmFsc2U7XG4gICAgfVxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIHRyYWNrQnlDb25maWdUaXRsZShfaTogbnVtYmVyLCBzZWN0aW9uOiBUZXN0Q2FzZURldGFpbHNDb25maWdTZWN0aW9uKTogc3RyaW5nIHtcbiAgICByZXR1cm4gc2VjdGlvbi50aXRsZTtcbiAgfVxuXG4gIHRyYWNrQnlNZXRhZGF0YUxhYmVsKF9pOiBudW1iZXIsIGl0ZW06IFRlc3RDYXNlRGV0YWlsc01ldGFkYXRhSXRlbSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGl0ZW0ubGFiZWw7XG4gIH1cblxuXG4gIG9uTWV0YWRhdGFMaW5rQ2xpY2soaXRlbTogVGVzdENhc2VEZXRhaWxzTWV0YWRhdGFJdGVtKTogdm9pZCB7XG4gICAgaWYgKGl0ZW0ubGluaykge1xuICAgICAgdGhpcy5tZXRhZGF0YUxpbmtDbGljay5lbWl0KGl0ZW0pO1xuICAgIH1cbiAgfVxuXG4gIGdldFN0YXR1c0RvdENsYXNzKGl0ZW06IFRlc3RDYXNlRGV0YWlsc01ldGFkYXRhSXRlbSk6IHN0cmluZyB7XG4gICAgaWYgKCFpdGVtLnN0YXR1c0NvbG9yKSByZXR1cm4gJyc7XG4gICAgc3dpdGNoIChpdGVtLnN0YXR1c0NvbG9yKSB7XG4gICAgICBjYXNlICd5ZWxsb3cnOlxuICAgICAgICByZXR1cm4gJ2NxYS1iZy1bI0VBQjMwOF0nO1xuICAgICAgY2FzZSAncmVkJzpcbiAgICAgICAgcmV0dXJuICdjcWEtYmctWyNEQzI2MjZdJztcbiAgICAgIGNhc2UgJ2dyZWVuJzpcbiAgICAgICAgcmV0dXJuICdjcWEtYmctWyMxNkEzNEFdJztcbiAgICAgIGNhc2UgJ2dyYXknOlxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuICdjcWEtYmctWyM5NEEzQjhdJztcbiAgICB9XG4gIH1cblxuICAvKiogVGV4dCBjb2xvciBmb3IgbWV0YWRhdGEgdmFsdWUgKGUuZy4gcmVkIGZvciBjcml0aWNhbCBwcmlvcml0eSkgKi9cbiAgZ2V0VmFsdWVUZXh0Q2xhc3MoaXRlbTogVGVzdENhc2VEZXRhaWxzTWV0YWRhdGFJdGVtKTogc3RyaW5nIHtcbiAgICBpZiAoaXRlbS5zdGF0dXNDb2xvciA9PT0gJ3JlZCcpIHtcbiAgICAgIHJldHVybiAnY3FhLXRleHQtWyNEQzI2MjZdJztcbiAgICB9XG4gICAgcmV0dXJuICdjcWEtdGV4dC1bIzExMTgyN10nO1xuICB9XG59XG4iLCI8IS0tIEVkaXQgbW9kZTogc2hvdyBlZGl0IGZvcm0gKEZpZ21hIGRlc2lnbikgLS0+XG48Y3FhLXRlc3QtY2FzZS1kZXRhaWxzLWVkaXRcbiAgKm5nSWY9XCJpc0VkaXRpbmdcIlxuICBbZGVzY3JpcHRpb25UaXRsZV09XCJkZXNjcmlwdGlvblRpdGxlXCJcbiAgW2Rlc2NyaXB0aW9uQ29udGVudF09XCJkZXNjcmlwdGlvbkNvbnRlbnRcIlxuICBbZW5hYmxlTWFya2Rvd25dPVwiZW5hYmxlTWFya2Rvd25cIlxuICBbbWV0YWRhdGFJdGVtc109XCJtZXRhZGF0YUl0ZW1zXCJcbiAgW2xhYmVsc109XCJsYWJlbHNcIlxuICBbY29uZmlnVGl0bGVdPVwiY29uZmlnVGl0bGVcIlxuICBbY29uZmlnU2VjdGlvbnNdPVwiY29uZmlnU2VjdGlvbnNcIlxuICBbY29uZmlnU2VjdGlvbnNSb3cyXT1cImNvbmZpZ1NlY3Rpb25zUm93MlwiXG4gIFtwbGF0Zm9ybV09XCJwbGF0Zm9ybVwiXG4gIFtzZWxlY3RDb25maWdPdmVycmlkZXNdPVwic2VsZWN0Q29uZmlnT3ZlcnJpZGVzXCJcbiAgKHNhdmUpPVwib25TYXZlQ2hhbmdlcygkZXZlbnQpXCJcbiAgKGNhbmNlbCk9XCJvbkNhbmNlbEVkaXQoKVwiXG4gIChzZWxlY3RTZWFyY2gpPVwic2VsZWN0U2VhcmNoLmVtaXQoJGV2ZW50KVwiXG4gIChzZWxlY3RMb2FkTW9yZSk9XCJzZWxlY3RMb2FkTW9yZS5lbWl0KCRldmVudClcIlxuICAoc2VsZWN0T3BlbmVkKT1cInNlbGVjdE9wZW5lZC5lbWl0KCRldmVudClcIlxuICAoc2VsZWN0aW9uQ2hhbmdlKT1cInNlbGVjdGlvbkNoYW5nZS5lbWl0KCRldmVudClcIlxuICAobGFiZWxBZGRlZCk9XCJsYWJlbEFkZGVkLmVtaXQoJGV2ZW50KVwiPlxuPC9jcWEtdGVzdC1jYXNlLWRldGFpbHMtZWRpdD5cblxuPCEtLSBWaWV3IG1vZGU6IHJlYWQtb25seSBkZXRhaWxzIC0tPlxuPGRpdiAqbmdJZj1cIiFpc0VkaXRpbmdcIiBjbGFzcz1cImNxYS1zZWxmLXN0cmV0Y2ggY3FhLXB5LTQgY3FhLXB4LTAgY3FhLWZsZXggY3FhLWZsZXgtY29sIGNxYS1qdXN0aWZ5LXN0YXJ0IGNxYS1pdGVtcy1zdGFydCBjcWEtZ2FwLTQgY3FhLXRleHQtc20gY3FhLWxlYWRpbmctWzE5LjZweF1cIj5cbiAgPGRpdiBjbGFzcz1cImNxYS1zZWxmLXN0cmV0Y2ggY3FhLWZsZXggY3FhLWZsZXgtY29sIGNxYS1qdXN0aWZ5LXN0YXJ0IGNxYS1pdGVtcy1zdGFydCBjcWEtZ2FwLTQgY3FhLXRleHQtc20gY3FhLWxlYWRpbmctWzE5LjZweF1cIj5cbiAgICA8IS0tIERlc2NyaXB0aW9uIFNlY3Rpb24gLS0+XG4gICAgPGRpdiBjbGFzcz1cImNxYS1zZWxmLXN0cmV0Y2ggY3FhLWZsZXggY3FhLWZsZXgtY29sIGNxYS1qdXN0aWZ5LXN0YXJ0IGNxYS1pdGVtcy1zdGFydCBjcWEtZ2FwLTIuNVwiPlxuICAgICAgPGRpdiBjbGFzcz1cImNxYS1zZWxmLXN0cmV0Y2ggY3FhLWlubGluZS1mbGV4IGNxYS1qdXN0aWZ5LWJldHdlZW4gY3FhLWl0ZW1zLWNlbnRlclwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY3FhLWZsZXggY3FhLWl0ZW1zLWNlbnRlciBjcWEtZ2FwLTJcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3FhLXctNSBjcWEtaC01IGNxYS1wLTEgY3FhLWZsZXgtc2hyaW5rLTAgY3FhLWJnLVsjM0Y0M0VFMUFdIGNxYS1yb3VuZGVkLW1kIGNxYS1pbmxpbmUtZmxleCBjcWEtanVzdGlmeS1jZW50ZXIgY3FhLWl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwiY3FhLXRleHQtWyMxQjFGRUJdIGNxYS10ZXh0LVsxMnB4XSBjcWEtdy0zIGNxYS1oLTMgY3FhLWxlYWRpbmctbm9uZSBjcWEtYmxvY2tcIj5kZXNjcmlwdGlvbjwvbWF0LWljb24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJjcWEtdGV4dC1bIzM3NDE1MV0gY3FhLXRleHQtc20gY3FhLWZvbnQtc2VtaWJvbGQgY3FhLWxlYWRpbmctWzE5LjZweF1cIj57eyBkZXNjcmlwdGlvblRpdGxlIH19PC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICpuZ0lmPVwic2hvd0VkaXRCdXR0b25cIlxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgIGNsYXNzPVwiY3FhLWZsZXggY3FhLWp1c3RpZnktZW5kIGNxYS1pdGVtcy1jZW50ZXIgY3FhLWdhcC0yIGNxYS10ZXh0LVsjQTNBM0EzXSBjcWEtdGV4dC14cyBjcWEtZm9udC1zZW1pYm9sZCBob3ZlcjpjcWEtdGV4dC1bIzczNzM3M10gY3FhLXRyYW5zaXRpb24tY29sb3JzIGZvY3VzOmNxYS1vdXRsaW5lLW5vbmUgZm9jdXMtdmlzaWJsZTpjcWEtcmluZy0yIGZvY3VzLXZpc2libGU6Y3FhLXJpbmctWyMzRjQzRUVdIGZvY3VzLXZpc2libGU6Y3FhLXJpbmctb2Zmc2V0LTJcIlxuICAgICAgICAgIChjbGljayk9XCJvbkVkaXRDbGljaygpXCI+XG4gICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwiY3FhLXRleHQtWzE0cHhdIGNxYS13LTQgY3FhLWgtNFwiPmVkaXQ8L21hdC1pY29uPlxuICAgICAgICAgIEVkaXRcbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgKm5nSWY9XCJkZXNjcmlwdGlvbkNvbnRlbnRcIiBjbGFzcz1cImNxYS1zZWxmLXN0cmV0Y2ggY3FhLWZsZXggY3FhLWZsZXgtY29sIGNxYS1qdXN0aWZ5LXN0YXJ0IGNxYS1pdGVtcy1zdGFydFwiPlxuICAgICAgICA8ZGl2ICpuZ0lmPVwiZW5hYmxlTWFya2Rvd25cIiBjbGFzcz1cImNxYS1zZWxmLXN0cmV0Y2ggY3FhLXRleHQtWyMxMTE4MjddIGNxYS10ZXh0LXNtIGNxYS1sZWFkaW5nLVsxOS42cHhdIGNxYS1mb250LW5vcm1hbCBjcWEtcHJvc2UgY3FhLXByb3NlLXNtIGNxYS1tYXgtdy1ub25lXCIgW2lubmVySFRNTF09XCJkZXNjcmlwdGlvbkNvbnRlbnRcIj48L2Rpdj5cbiAgICAgICAgPGRpdiAqbmdJZj1cIiFlbmFibGVNYXJrZG93blwiIGNsYXNzPVwiY3FhLXNlbGYtc3RyZXRjaCBjcWEtdGV4dC1bIzExMTgyN10gY3FhLXRleHQtc20gY3FhLWxlYWRpbmctWzE5LjZweF0gY3FhLWZvbnQtbm9ybWFsXCI+e3sgZGVzY3JpcHRpb25Db250ZW50IH19PC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDwhLS0gTWV0YWRhdGEgU2VjdGlvbiAtLT5cbiAgICA8ZGl2ICpuZ0lmPVwibWV0YWRhdGFJdGVtcy5sZW5ndGhcIiBjbGFzcz1cImNxYS1zZWxmLXN0cmV0Y2ggY3FhLWZsZXggY3FhLWZsZXgtY29sIGNxYS1qdXN0aWZ5LXN0YXJ0IGNxYS1pdGVtcy1zdGFydCBjcWEtZ2FwLTIuNVwiPlxuICAgICAgPGRpdiBjbGFzcz1cImNxYS1zZWxmLXN0cmV0Y2ggY3FhLWdyaWQgY3FhLWdyaWQtY29scy0yIGNxYS1nYXAteC0wIGNxYS1nYXAteS00XCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgbWV0YWRhdGFJdGVtczsgdHJhY2tCeTogdHJhY2tCeU1ldGFkYXRhTGFiZWxcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3FhLWZsZXggY3FhLWZsZXgtY29sIGNxYS1qdXN0aWZ5LXN0YXJ0IGNxYS1pdGVtcy1zdGFydCBjcWEtZ2FwLTAuNVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNxYS10ZXh0LVsjNkI3MjgwXSBjcWEtdGV4dC14cyBjcWEtbGVhZGluZy1bMTVweF0gY3FhLWZvbnQtbWVkaXVtXCI+e3sgaXRlbS5sYWJlbCB9fTwvZGl2PlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBjbGFzcz1cImNxYS1mbGV4IGNxYS1qdXN0aWZ5LXN0YXJ0IGNxYS1pdGVtcy1jZW50ZXIgY3FhLWdhcC1bNXB4XSBjcWEtbWluLXctMCBjcWEtdy1mdWxsIGNxYS10ZXh0LWxlZnQgY3FhLXRleHQtWyMwQTBBMEFdIGNxYS1ib3JkZXIgY3FhLWJvcmRlci1bI0Y1RjVGNV1cIj5cbiAgICAgICAgICAgICAgPG1hdC1pY29uICpuZ0lmPVwiaXRlbS5pY29uICYmICghaXRlbS5pY29uTGlicmFyeSB8fCBpdGVtLmljb25MaWJyYXJ5ID09PSAnbWF0JylcIiBjbGFzcz1cImNxYS10ZXh0LVsjNkI3MjgwXSBjcWEtdGV4dC1zbSBjcWEtdy00IGNxYS1oLTRcIj5cbiAgICAgICAgICAgICAgICB7eyBpdGVtLmljb24gfX1cbiAgICAgICAgICAgICAgPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJpdGVtLnN0YXR1c0NvbG9yXCIgY2xhc3M9XCJjcWEtdy0zLjUgY3FhLWgtMy41IGNxYS1yb3VuZGVkLWZ1bGwgY3FhLWZsZXgtc2hyaW5rLTBcIiBbbmdDbGFzc109XCJnZXRTdGF0dXNEb3RDbGFzcyhpdGVtKVwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgICAqbmdJZj1cIml0ZW0ubGlua1wiXG4gICAgICAgICAgICAgICAgaHJlZj1cImphdmFzY3JpcHQ6dm9pZCgwKVwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjcWEtdGV4dC1bIzI1NjNFQl0gY3FhLXRleHQteHMgY3FhLWxlYWRpbmctWzEycHhdIGNxYS1mb250LW5vcm1hbCBob3ZlcjpjcWEtdW5kZXJsaW5lIGNxYS1jdXJzb3ItcG9pbnRlciBjcWEtYmxvY2sgY3FhLXRydW5jYXRlIGNxYS1taW4tdy0wXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwib25NZXRhZGF0YUxpbmtDbGljayhpdGVtKTsgJGV2ZW50LnByZXZlbnREZWZhdWx0KClcIj5cbiAgICAgICAgICAgICAgICB7eyBpdGVtLnZhbHVlIH19XG4gICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhaXRlbS5saW5rXCIgY2xhc3M9XCJjcWEtdGV4dC14cyBjcWEtbGVhZGluZy1bMTJweF0gY3FhLWZvbnQtbm9ybWFsIGNxYS1hbGlnbi1taWRkbGVcIiBbbmdDbGFzc109XCJnZXRWYWx1ZVRleHRDbGFzcyhpdGVtKVwiPlxuICAgICAgICAgICAgICAgIHt7IGl0ZW0udmFsdWUgfX1cbiAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8IS0tIExhYmVscyAoRmlnbWE6IExhYmVscyB0aXRsZSwgY3FhLWJhZGdlIGNoaXBzIHdpdGggdGFnIGljb24pIC0tPlxuICAgIDxkaXYgKm5nSWY9XCJsYWJlbHMubGVuZ3RoXCIgY2xhc3M9XCJjcWEtc2VsZi1zdHJldGNoIGNxYS1mbGV4IGNxYS1mbGV4LWNvbCBjcWEtanVzdGlmeS1zdGFydCBjcWEtaXRlbXMtc3RhcnQgY3FhLWdhcC0yIGNxYS10ZXh0LXNtIGNxYS1sZWFkaW5nLVsxOS42cHhdXCI+XG4gICAgICA8c3BhbiBjbGFzcz1cImNxYS10ZXh0LVsjMTExODI3XSBjcWEtdGV4dC1zbSBjcWEtZm9udC1tZWRpdW0gY3FhLWxlYWRpbmctNVwiPkxhYmVsczwvc3Bhbj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtZmxleC13cmFwIGNxYS1nYXAtMlwiPlxuICAgICAgICA8Y3FhLWJhZGdlXG4gICAgICAgICAgKm5nRm9yPVwibGV0IGxhYmVsIG9mIGxhYmVsc1wiXG4gICAgICAgICAgW2xhYmVsXT1cImxhYmVsXCJcbiAgICAgICAgICBpY29uPVwibGFiZWxcIlxuICAgICAgICAgIHZhcmlhbnQ9XCJvdXRsaW5lXCJcbiAgICAgICAgICBzaXplPVwic21hbGxcIlxuICAgICAgICAgIGJhY2tncm91bmRDb2xvcj1cIiNmZmZmZmZcIlxuICAgICAgICAgIHRleHRDb2xvcj1cIiM0NzU1NjlcIlxuICAgICAgICAgIGJvcmRlckNvbG9yPVwiI0UyRThGMFwiXG4gICAgICAgICAgaWNvbkNvbG9yPVwiIzk0QTNCOFwiPlxuICAgICAgICA8L2NxYS1iYWRnZT5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPCEtLSBDb25maWd1cmF0aW9uIFNlY3Rpb24gLS0+XG4gICAgPGRpdiAqbmdJZj1cImNvbmZpZ1NlY3Rpb25zLmxlbmd0aCB8fCBjb25maWdTZWN0aW9uc1JvdzIubGVuZ3RoXCIgY2xhc3M9XCJjcWEtc2VsZi1zdHJldGNoIGNxYS1mbGV4IGNxYS1mbGV4LWNvbCBjcWEtanVzdGlmeS1zdGFydCBjcWEtaXRlbXMtc3RhcnQgY3FhLWdhcC0yLjVcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjcWEtc2VsZi1zdHJldGNoIGNxYS1pbmxpbmUtZmxleCBjcWEtanVzdGlmeS1zdGFydCBjcWEtaXRlbXMtY2VudGVyXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1nYXAtMlwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjcWEtdy01IGNxYS1oLTUgY3FhLXAtMSBjcWEtZmxleC1zaHJpbmstMCBjcWEtYmctWyMzRjQzRUUxQV0gY3FhLXJvdW5kZWQtbWQgY3FhLWlubGluZS1mbGV4IGNxYS1qdXN0aWZ5LWNlbnRlciBjcWEtaXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJjcWEtdGV4dC1bIzFCMUZFQl0gY3FhLXRleHQtWzEycHhdIGNxYS13LTMgY3FhLWgtMyBjcWEtbGVhZGluZy1ub25lIGNxYS1ibG9ja1wiPnNldHRpbmdzPC9tYXQtaWNvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImNxYS10ZXh0LVsjMzc0MTUxXSBjcWEtdGV4dC1zbSBjcWEtZm9udC1zZW1pYm9sZCBjcWEtbGVhZGluZy1bMTkuNnB4XVwiPnt7IGNvbmZpZ1RpdGxlIH19PC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImNxYS1zZWxmLXN0cmV0Y2ggY3FhLWZsZXggY3FhLWZsZXgtY29sIGNxYS1qdXN0aWZ5LXN0YXJ0IGNxYS1pdGVtcy1zdGFydCBjcWEtZ2FwLTIuNVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY3FhLXNlbGYtc3RyZXRjaCBjcWEtZ3JpZCBjcWEtZ3JpZC1jb2xzLTEgY3FhLWdhcC0yLjVcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBzZWN0aW9uIG9mIGNvbmZpZ1NlY3Rpb25zOyB0cmFja0J5OiB0cmFja0J5Q29uZmlnVGl0bGVcIj5cbiAgICAgICAgICAgIDxjcWEtY29uZmlndXJhdGlvbi1jYXJkXG4gICAgICAgICAgICAgIFtpY29uXT1cInNlY3Rpb24uaWNvbiB8fCAndHVuZSdcIlxuICAgICAgICAgICAgICBbdGl0bGVdPVwic2VjdGlvbi50aXRsZVwiXG4gICAgICAgICAgICAgIFtkYXRhXT1cInNlY3Rpb24uaXRlbXNcIj5cbiAgICAgICAgICAgIDwvY3FhLWNvbmZpZ3VyYXRpb24tY2FyZD5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJjb25maWdTZWN0aW9uc1JvdzIubGVuZ3RoXCIgY2xhc3M9XCJjcWEtc2VsZi1zdHJldGNoIGNxYS1mbGV4IGNxYS1mbGV4LWNvbCBjcWEtZ2FwLTQgY3FhLXRleHQtc20gY3FhLWxlYWRpbmctWzE5LjZweF1cIj5cbiAgICAgICAgICA8Y3FhLWNvbmZpZ3VyYXRpb24tY2FyZFxuICAgICAgICAgICAgKm5nRm9yPVwibGV0IHNlY3Rpb24gb2YgY29uZmlnU2VjdGlvbnNSb3cyOyB0cmFja0J5OiB0cmFja0J5Q29uZmlnVGl0bGVcIlxuICAgICAgICAgICAgW2ljb25dPVwic2VjdGlvbi5pY29uIHx8ICd0dW5lJ1wiXG4gICAgICAgICAgICBbdGl0bGVdPVwic2VjdGlvbi50aXRsZVwiXG4gICAgICAgICAgICBbZGF0YV09XCJzZWN0aW9uLml0ZW1zXCI+XG4gICAgICAgICAgPC9jcWEtY29uZmlndXJhdGlvbi1jYXJkPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
|
|
161
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdC1jYXNlLWRldGFpbHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi90ZXN0LWNhc2UtZGV0YWlscy90ZXN0LWNhc2UtZGV0YWlscy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL3Rlc3QtY2FzZS1kZXRhaWxzL3Rlc3QtY2FzZS1kZXRhaWxzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsS0FBSyxFQUNMLE1BQU0sRUFDTixZQUFZLEVBQ1osdUJBQXVCLEdBR3hCLE1BQU0sZUFBZSxDQUFDOzs7Ozs7O0FBZ0J2QixNQUFNLE9BQU8sd0JBQXdCO0lBZW5DLFlBQW9CLEdBQXNCO1FBQXRCLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBZDFDLDJEQUEyRDtRQUNuRCxhQUFRLEdBQUcsS0FBSyxDQUFDO1FBS3pCLDREQUE0RDtRQUNuRCxvQkFBZSxHQUFHLEtBQUssQ0FBQztRQWNqQyxnQ0FBZ0M7UUFDdkIscUJBQWdCLEdBQUcsYUFBYSxDQUFDO1FBRTFDLCtCQUErQjtRQUN0Qix1QkFBa0IsR0FBRyxFQUFFLENBQUM7UUFFakMsc0ZBQXNGO1FBQzdFLG1CQUFjLEdBQUcsS0FBSyxDQUFDO1FBRWhDLGdFQUFnRTtRQUN2RCxtQkFBYyxHQUFHLEtBQUssQ0FBQztRQUVoQyw2RkFBNkY7UUFDcEYsa0JBQWEsR0FBa0MsRUFBRSxDQUFDO1FBRTNELHFEQUFxRDtRQUM1QyxXQUFNLEdBQWEsRUFBRSxDQUFDO1FBRS9CLGtDQUFrQztRQUN6QixnQkFBVyxHQUFHLGVBQWUsQ0FBQztRQUV2QyxnRUFBZ0U7UUFDdkQsbUJBQWMsR0FBbUMsRUFBRSxDQUFDO1FBRTdELDBGQUEwRjtRQUNqRix1QkFBa0IsR0FBbUMsRUFBRSxDQUFDO1FBQ2pFLHVGQUF1RjtRQUM5RSxhQUFRLEdBQXFCLEtBQUssQ0FBQztRQUU1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SUFBSSxDQUFDLFdBQVcsS0FBSyxLQUFLLEVBQUU7WUFDOUIsT0FBTyxvQkFBb0IsQ0FBQztTQUM3QjtRQUNELE9BQU8sb0JBQW9CLENBQUM7SUFDOUIsQ0FBQzs7cUhBNUhVLHdCQUF3Qjt5R0FBeEIsd0JBQXdCLHd4QkN4QnJDLDZ1T0ErSEE7MkZEdkdhLHdCQUF3QjtrQkFOcEMsU0FBUzsrQkFDRSx1QkFBdUIsbUJBR2hCLHVCQUF1QixDQUFDLE1BQU07d0dBT3RDLE9BQU87c0JBQWYsS0FBSztnQkFHRyxlQUFlO3NCQUF2QixLQUFLO2dCQWVHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFHRyxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBR0csY0FBYztzQkFBdEIsS0FBSztnQkFHRyxjQUFjO3NCQUF0QixLQUFLO2dCQUdHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBR0csTUFBTTtzQkFBZCxLQUFLO2dCQUdHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBR0csY0FBYztzQkFBdEIsS0FBSztnQkFHRyxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBRUcsUUFBUTtzQkFBaEIsS0FBSztnQkFHRyxxQkFBcUI7c0JBQTdCLEtBQUs7Z0JBRUksZUFBZTtzQkFBeEIsTUFBTTtnQkFDRyxNQUFNO3NCQUFmLE1BQU07Z0JBQ0csV0FBVztzQkFBcEIsTUFBTTtnQkFDRyxpQkFBaUI7c0JBQTFCLE1BQU07Z0JBQ0csWUFBWTtzQkFBckIsTUFBTTtnQkFDRyxjQUFjO3NCQUF2QixNQUFNO2dCQUNHLFlBQVk7c0JBQXJCLE1BQU07Z0JBQ0csZUFBZTtzQkFBeEIsTUFBTTtnQkFDRyxVQUFVO3NCQUFuQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBJbnB1dCxcbiAgT3V0cHV0LFxuICBFdmVudEVtaXR0ZXIsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgT25Jbml0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIFRlc3RDYXNlRGV0YWlsc0NvbmZpZ1NlY3Rpb24sXG4gIFRlc3RDYXNlRGV0YWlsc01ldGFkYXRhSXRlbSxcbn0gZnJvbSAnLi90ZXN0LWNhc2UtZGV0YWlscy5tb2RlbHMnO1xuaW1wb3J0IHtcbiAgVGVzdENhc2VEZXRhaWxzRWRpdEZvcm1EYXRhLFxuICBTZWxlY3RDb25maWdPdmVycmlkZXMsXG59IGZyb20gJy4vdGVzdC1jYXNlLWRldGFpbHMtZWRpdC90ZXN0LWNhc2UtZGV0YWlscy1lZGl0LmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2NxYS10ZXN0LWNhc2UtZGV0YWlscycsXG4gIHRlbXBsYXRlVXJsOiAnLi90ZXN0LWNhc2UtZGV0YWlscy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogW10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBUZXN0Q2FzZURldGFpbHNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICAvKiogSW50ZXJuYWwgZWRpdGluZyBzdGF0ZSB3aGVuIG5vdCBjb250cm9sbGVkIGJ5IHBhcmVudCAqL1xuICBwcml2YXRlIF9lZGl0aW5nID0gZmFsc2U7XG5cbiAgLyoqIFdoZW4gcHJvdmlkZWQgYnkgcGFyZW50LCB1c2UgdGhpcyBpbnN0ZWFkIG9mIGludGVybmFsIHN0YXRlIChmaXhlcyBTdG9yeWJvb2sgZXZlbnQgZmxvdykuICovXG4gIEBJbnB1dCgpIGVkaXRpbmc/OiBib29sZWFuO1xuXG4gIC8qKiBXaGVuIHRydWUsIHN0YXJ0IGluIGVkaXQgbW9kZSAodXNlZnVsIGZvciBTdG9yeWJvb2spLiAqL1xuICBASW5wdXQoKSBzdGFydEluRWRpdE1vZGUgPSBmYWxzZTtcblxuICAvKiogUmVzb2x2ZWQgZWRpdGluZyBzdGF0ZTogcGFyZW50LWNvbnRyb2xsZWQgb3IgaW50ZXJuYWwgKi9cbiAgZ2V0IGlzRWRpdGluZygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5lZGl0aW5nICE9PSB1bmRlZmluZWQgPyB0aGlzLmVkaXRpbmcgOiB0aGlzLl9lZGl0aW5nO1xuICB9XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmKSB7fVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnN0YXJ0SW5FZGl0TW9kZSkge1xuICAgICAgdGhpcy5fZWRpdGluZyA9IHRydWU7XG4gICAgfVxuICB9XG4gIC8qKiBEZXNjcmlwdGlvbiBzZWN0aW9uIHRpdGxlICovXG4gIEBJbnB1dCgpIGRlc2NyaXB0aW9uVGl0bGUgPSAnRGVzY3JpcHRpb24nO1xuXG4gIC8qKiBEZXNjcmlwdGlvbiB0ZXh0IGNvbnRlbnQgKi9cbiAgQElucHV0KCkgZGVzY3JpcHRpb25Db250ZW50ID0gJyc7XG5cbiAgLyoqIFdoZW4gdHJ1ZSwgZGVzY3JpcHRpb24gc3VwcG9ydHMgcmljaCB0ZXh0IChIVE1MKS4gUmVuZGVycyBhcyBIVE1MIGluIHZpZXcgbW9kZS4gKi9cbiAgQElucHV0KCkgZW5hYmxlTWFya2Rvd24gPSBmYWxzZTtcblxuICAvKiogV2hldGhlciB0byBzaG93IHRoZSBFZGl0IGJ1dHRvbiBpbiB0aGUgRGVzY3JpcHRpb24gaGVhZGVyICovXG4gIEBJbnB1dCgpIHNob3dFZGl0QnV0dG9uID0gZmFsc2U7XG5cbiAgLyoqIE1ldGFkYXRhIGl0ZW1zIChjcmVhdGVkT24sIHN0YXR1cywgcHJpb3JpdHksIGVudmlyb25tZW50LCB2ZXJzaW9uLCB0ZXN0UGxhbk5hbWUsIGV0Yy4pICovXG4gIEBJbnB1dCgpIG1ldGFkYXRhSXRlbXM6IFRlc3RDYXNlRGV0YWlsc01ldGFkYXRhSXRlbVtdID0gW107XG5cbiAgLyoqIExhYmVscy90YWdzIChlLmcuIEF1dG9tYXRpb24sIEFQSSwgU0RLLCBVSS9VWCkgKi9cbiAgQElucHV0KCkgbGFiZWxzOiBzdHJpbmdbXSA9IFtdO1xuXG4gIC8qKiBDb25maWd1cmF0aW9uIHNlY3Rpb24gdGl0bGUgKi9cbiAgQElucHV0KCkgY29uZmlnVGl0bGUgPSAnQ29uZmlndXJhdGlvbic7XG5cbiAgLyoqIENvbmZpZ3VyYXRpb24gc2VjdGlvbnMgKGUuZy4gRXhlY3V0aW9uLCBBSSBDb25maWd1cmF0aW9uKSAqL1xuICBASW5wdXQoKSBjb25maWdTZWN0aW9uczogVGVzdENhc2VEZXRhaWxzQ29uZmlnU2VjdGlvbltdID0gW107XG5cbiAgLyoqIE9wdGlvbmFsIGNvbmZpZyBzZWN0aW9ucyBkaXNwbGF5ZWQgaW4gYSAyLWNvbHVtbiByb3cgKGUuZy4gV2FpdHMgJiBSZXRyaWVzLCBEZXZpY2UpICovXG4gIEBJbnB1dCgpIGNvbmZpZ1NlY3Rpb25zUm93MjogVGVzdENhc2VEZXRhaWxzQ29uZmlnU2VjdGlvbltdID0gW107XG4gIC8qKiBQbGF0Zm9ybTogJ3dlYicgb3IgJ21vYmlsZScuIERlZmF1bHRzIHRvICd3ZWInLiBVc2VkIGZvciBEZXZpY2UgU2V0dGluZ3MgZmllbGRzLiAqL1xuICBASW5wdXQoKSBwbGF0Zm9ybTogJ3dlYicgfCAnbW9iaWxlJyA9ICd3ZWInO1xuXG4gIC8qKiBPdmVycmlkZSBjb25maWcgcGVyIHNlbGVjdCBmb3IgQVBJLWRyaXZlbiBvcHRpb25zLCBzZXJ2ZXIgc2VhcmNoLCBsb2FkIG1vcmUuICovXG4gIEBJbnB1dCgpIHNlbGVjdENvbmZpZ092ZXJyaWRlczogU2VsZWN0Q29uZmlnT3ZlcnJpZGVzID0ge307XG5cbiAgQE91dHB1dCgpIGVkaXREZXNjcmlwdGlvbiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgQE91dHB1dCgpIGNhbmNlbCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgQE91dHB1dCgpIHNhdmVDaGFuZ2VzID0gbmV3IEV2ZW50RW1pdHRlcjxUZXN0Q2FzZURldGFpbHNFZGl0Rm9ybURhdGE+KCk7XG4gIEBPdXRwdXQoKSBtZXRhZGF0YUxpbmtDbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8VGVzdENhc2VEZXRhaWxzTWV0YWRhdGFJdGVtPigpO1xuICBAT3V0cHV0KCkgc2VsZWN0U2VhcmNoID0gbmV3IEV2ZW50RW1pdHRlcjx7IGtleTogc3RyaW5nOyBxdWVyeTogc3RyaW5nIH0+KCk7XG4gIEBPdXRwdXQoKSBzZWxlY3RMb2FkTW9yZSA9IG5ldyBFdmVudEVtaXR0ZXI8eyBrZXk6IHN0cmluZzsgcXVlcnk6IHN0cmluZyB9PigpO1xuICBAT3V0cHV0KCkgc2VsZWN0T3BlbmVkID0gbmV3IEV2ZW50RW1pdHRlcjx7IGtleTogc3RyaW5nIH0+KCk7XG4gIEBPdXRwdXQoKSBzZWxlY3Rpb25DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHsga2V5OiBzdHJpbmc7IHZhbHVlOiB1bmtub3duIH0+KCk7XG4gIEBPdXRwdXQoKSBsYWJlbEFkZGVkID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG5cbiAgb25FZGl0Q2xpY2soKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZWRpdGluZyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLl9lZGl0aW5nID0gdHJ1ZTtcbiAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG4gICAgdGhpcy5lZGl0RGVzY3JpcHRpb24uZW1pdCgpO1xuICB9XG5cbiAgb25TYXZlQ2hhbmdlcyhkYXRhOiBUZXN0Q2FzZURldGFpbHNFZGl0Rm9ybURhdGEpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5lZGl0aW5nID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuX2VkaXRpbmcgPSBmYWxzZTtcbiAgICB9XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIHRoaXMuc2F2ZUNoYW5nZXMuZW1pdChkYXRhKTtcbiAgfVxuXG4gIG9uQ2FuY2VsRWRpdCgpOiB2b2lkIHtcbiAgICB0aGlzLmNhbmNlbC5lbWl0KCk7XG4gICAgaWYgKHRoaXMuZWRpdGluZyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLl9lZGl0aW5nID0gZmFsc2U7XG4gICAgfVxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIHRyYWNrQnlDb25maWdUaXRsZShfaTogbnVtYmVyLCBzZWN0aW9uOiBUZXN0Q2FzZURldGFpbHNDb25maWdTZWN0aW9uKTogc3RyaW5nIHtcbiAgICByZXR1cm4gc2VjdGlvbi50aXRsZTtcbiAgfVxuXG4gIHRyYWNrQnlNZXRhZGF0YUxhYmVsKF9pOiBudW1iZXIsIGl0ZW06IFRlc3RDYXNlRGV0YWlsc01ldGFkYXRhSXRlbSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGl0ZW0ubGFiZWw7XG4gIH1cblxuXG4gIG9uTWV0YWRhdGFMaW5rQ2xpY2soaXRlbTogVGVzdENhc2VEZXRhaWxzTWV0YWRhdGFJdGVtKTogdm9pZCB7XG4gICAgaWYgKGl0ZW0ubGluaykge1xuICAgICAgdGhpcy5tZXRhZGF0YUxpbmtDbGljay5lbWl0KGl0ZW0pO1xuICAgIH1cbiAgfVxuXG4gIGdldFN0YXR1c0RvdENsYXNzKGl0ZW06IFRlc3RDYXNlRGV0YWlsc01ldGFkYXRhSXRlbSk6IHN0cmluZyB7XG4gICAgaWYgKCFpdGVtLnN0YXR1c0NvbG9yKSByZXR1cm4gJyc7XG4gICAgc3dpdGNoIChpdGVtLnN0YXR1c0NvbG9yKSB7XG4gICAgICBjYXNlICd5ZWxsb3cnOlxuICAgICAgICByZXR1cm4gJ2NxYS1iZy1bI0VBQjMwOF0nO1xuICAgICAgY2FzZSAncmVkJzpcbiAgICAgICAgcmV0dXJuICdjcWEtYmctWyNEQzI2MjZdJztcbiAgICAgIGNhc2UgJ2dyZWVuJzpcbiAgICAgICAgcmV0dXJuICdjcWEtYmctWyMxNkEzNEFdJztcbiAgICAgIGNhc2UgJ2dyYXknOlxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuICdjcWEtYmctWyM5NEEzQjhdJztcbiAgICB9XG4gIH1cblxuICAvKiogVGV4dCBjb2xvciBmb3IgbWV0YWRhdGEgdmFsdWUgKGUuZy4gcmVkIGZvciBjcml0aWNhbCBwcmlvcml0eSkgKi9cbiAgZ2V0VmFsdWVUZXh0Q2xhc3MoaXRlbTogVGVzdENhc2VEZXRhaWxzTWV0YWRhdGFJdGVtKTogc3RyaW5nIHtcbiAgICBpZiAoaXRlbS5zdGF0dXNDb2xvciA9PT0gJ3JlZCcpIHtcbiAgICAgIHJldHVybiAnY3FhLXRleHQtWyNEQzI2MjZdJztcbiAgICB9XG4gICAgcmV0dXJuICdjcWEtdGV4dC1bIzExMTgyN10nO1xuICB9XG59XG4iLCI8IS0tIEVkaXQgbW9kZTogc2hvdyBlZGl0IGZvcm0gKEZpZ21hIGRlc2lnbikgLS0+XG48Y3FhLXRlc3QtY2FzZS1kZXRhaWxzLWVkaXRcbiAgKm5nSWY9XCJpc0VkaXRpbmdcIlxuICBbZGVzY3JpcHRpb25UaXRsZV09XCJkZXNjcmlwdGlvblRpdGxlXCJcbiAgW2Rlc2NyaXB0aW9uQ29udGVudF09XCJkZXNjcmlwdGlvbkNvbnRlbnRcIlxuICBbZW5hYmxlTWFya2Rvd25dPVwiZW5hYmxlTWFya2Rvd25cIlxuICBbbWV0YWRhdGFJdGVtc109XCJtZXRhZGF0YUl0ZW1zXCJcbiAgW2xhYmVsc109XCJsYWJlbHNcIlxuICBbY29uZmlnVGl0bGVdPVwiY29uZmlnVGl0bGVcIlxuICBbY29uZmlnU2VjdGlvbnNdPVwiY29uZmlnU2VjdGlvbnNcIlxuICBbY29uZmlnU2VjdGlvbnNSb3cyXT1cImNvbmZpZ1NlY3Rpb25zUm93MlwiXG4gIFtwbGF0Zm9ybV09XCJwbGF0Zm9ybVwiXG4gIFtzZWxlY3RDb25maWdPdmVycmlkZXNdPVwic2VsZWN0Q29uZmlnT3ZlcnJpZGVzXCJcbiAgKHNhdmUpPVwib25TYXZlQ2hhbmdlcygkZXZlbnQpXCJcbiAgKGNhbmNlbCk9XCJvbkNhbmNlbEVkaXQoKVwiXG4gIChzZWxlY3RTZWFyY2gpPVwic2VsZWN0U2VhcmNoLmVtaXQoJGV2ZW50KVwiXG4gIChzZWxlY3RMb2FkTW9yZSk9XCJzZWxlY3RMb2FkTW9yZS5lbWl0KCRldmVudClcIlxuICAoc2VsZWN0T3BlbmVkKT1cInNlbGVjdE9wZW5lZC5lbWl0KCRldmVudClcIlxuICAoc2VsZWN0aW9uQ2hhbmdlKT1cInNlbGVjdGlvbkNoYW5nZS5lbWl0KCRldmVudClcIlxuICAobGFiZWxBZGRlZCk9XCJsYWJlbEFkZGVkLmVtaXQoJGV2ZW50KVwiPlxuPC9jcWEtdGVzdC1jYXNlLWRldGFpbHMtZWRpdD5cblxuPCEtLSBWaWV3IG1vZGU6IHJlYWQtb25seSBkZXRhaWxzIC0tPlxuPGRpdiAqbmdJZj1cIiFpc0VkaXRpbmdcIiBjbGFzcz1cImNxYS1zZWxmLXN0cmV0Y2ggY3FhLXB5LTQgY3FhLXB4LTAgY3FhLWZsZXggY3FhLWZsZXgtY29sIGNxYS1qdXN0aWZ5LXN0YXJ0IGNxYS1pdGVtcy1zdGFydCBjcWEtZ2FwLTQgY3FhLXRleHQtc20gY3FhLWxlYWRpbmctWzE5LjZweF1cIj5cbiAgPGRpdiBjbGFzcz1cImNxYS1zZWxmLXN0cmV0Y2ggY3FhLWZsZXggY3FhLWZsZXgtY29sIGNxYS1qdXN0aWZ5LXN0YXJ0IGNxYS1pdGVtcy1zdGFydCBjcWEtZ2FwLTQgY3FhLXRleHQtc20gY3FhLWxlYWRpbmctWzE5LjZweF1cIj5cbiAgICA8IS0tIERlc2NyaXB0aW9uIFNlY3Rpb24gLS0+XG4gICAgPGRpdiBjbGFzcz1cImNxYS1zZWxmLXN0cmV0Y2ggY3FhLWZsZXggY3FhLWZsZXgtY29sIGNxYS1qdXN0aWZ5LXN0YXJ0IGNxYS1pdGVtcy1zdGFydCBjcWEtZ2FwLTIuNVwiPlxuICAgICAgPGRpdiBjbGFzcz1cImNxYS1zZWxmLXN0cmV0Y2ggY3FhLWlubGluZS1mbGV4IGNxYS1qdXN0aWZ5LWJldHdlZW4gY3FhLWl0ZW1zLWNlbnRlclwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY3FhLWZsZXggY3FhLWl0ZW1zLWNlbnRlciBjcWEtZ2FwLTJcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3FhLXctNSBjcWEtaC01IGNxYS1wLTEgY3FhLWZsZXgtc2hyaW5rLTAgY3FhLWJnLVsjM0Y0M0VFMUFdIGNxYS1yb3VuZGVkLW1kIGNxYS1pbmxpbmUtZmxleCBjcWEtanVzdGlmeS1jZW50ZXIgY3FhLWl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwiY3FhLXRleHQtWyMxQjFGRUJdIGNxYS10ZXh0LVsxMnB4XSBjcWEtdy0zIGNxYS1oLTMgY3FhLWxlYWRpbmctbm9uZSBjcWEtYmxvY2tcIj5kZXNjcmlwdGlvbjwvbWF0LWljb24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJjcWEtdGV4dC1bIzM3NDE1MV0gY3FhLXRleHQtc20gY3FhLWZvbnQtc2VtaWJvbGQgY3FhLWxlYWRpbmctWzE5LjZweF1cIj57eyBkZXNjcmlwdGlvblRpdGxlIH19PC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICpuZ0lmPVwic2hvd0VkaXRCdXR0b25cIlxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgIGNsYXNzPVwiY3FhLWZsZXggY3FhLWp1c3RpZnktZW5kIGNxYS1pdGVtcy1jZW50ZXIgY3FhLWdhcC0yIGNxYS10ZXh0LVsjQTNBM0EzXSBjcWEtdGV4dC14cyBjcWEtZm9udC1zZW1pYm9sZCBob3ZlcjpjcWEtdGV4dC1bIzczNzM3M10gY3FhLXRyYW5zaXRpb24tY29sb3JzIGZvY3VzOmNxYS1vdXRsaW5lLW5vbmUgZm9jdXMtdmlzaWJsZTpjcWEtcmluZy0yIGZvY3VzLXZpc2libGU6Y3FhLXJpbmctWyMzRjQzRUVdIGZvY3VzLXZpc2libGU6Y3FhLXJpbmctb2Zmc2V0LTJcIlxuICAgICAgICAgIChjbGljayk9XCJvbkVkaXRDbGljaygpXCI+XG4gICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwiY3FhLXRleHQtWzE0cHhdIGNxYS13LTQgY3FhLWgtNFwiPmVkaXQ8L21hdC1pY29uPlxuICAgICAgICAgIEVkaXRcbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgKm5nSWY9XCJkZXNjcmlwdGlvbkNvbnRlbnRcIiBjbGFzcz1cImNxYS1zZWxmLXN0cmV0Y2ggY3FhLWZsZXggY3FhLWZsZXgtY29sIGNxYS1qdXN0aWZ5LXN0YXJ0IGNxYS1pdGVtcy1zdGFydFwiPlxuICAgICAgICA8ZGl2ICpuZ0lmPVwiZW5hYmxlTWFya2Rvd25cIiBjbGFzcz1cImNxYS1zZWxmLXN0cmV0Y2ggY3FhLXRleHQtWyMxMTE4MjddIGNxYS10ZXh0LXNtIGNxYS1sZWFkaW5nLVsxOS42cHhdIGNxYS1mb250LW5vcm1hbCBjcWEtcHJvc2UgY3FhLXByb3NlLXNtIGNxYS1tYXgtdy1ub25lXCIgW2lubmVySFRNTF09XCJkZXNjcmlwdGlvbkNvbnRlbnRcIj48L2Rpdj5cbiAgICAgICAgPGRpdiAqbmdJZj1cIiFlbmFibGVNYXJrZG93blwiIGNsYXNzPVwiY3FhLXNlbGYtc3RyZXRjaCBjcWEtdGV4dC1bIzExMTgyN10gY3FhLXRleHQtc20gY3FhLWxlYWRpbmctWzE5LjZweF0gY3FhLWZvbnQtbm9ybWFsXCI+e3sgZGVzY3JpcHRpb25Db250ZW50IH19PC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDwhLS0gTWV0YWRhdGEgU2VjdGlvbiAtLT5cbiAgICA8ZGl2ICpuZ0lmPVwibWV0YWRhdGFJdGVtcy5sZW5ndGhcIiBjbGFzcz1cImNxYS1zZWxmLXN0cmV0Y2ggY3FhLWZsZXggY3FhLWZsZXgtY29sIGNxYS1qdXN0aWZ5LXN0YXJ0IGNxYS1pdGVtcy1zdGFydCBjcWEtZ2FwLTIuNVwiPlxuICAgICAgPGRpdiBjbGFzcz1cImNxYS1zZWxmLXN0cmV0Y2ggY3FhLWdyaWQgY3FhLWdyaWQtY29scy0yIGNxYS1nYXAtMiBjcWEtZ2FwLXktNFwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBpdGVtIG9mIG1ldGFkYXRhSXRlbXM7IHRyYWNrQnk6IHRyYWNrQnlNZXRhZGF0YUxhYmVsXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNxYS1mbGV4IGNxYS1mbGV4LWNvbCBjcWEtanVzdGlmeS1zdGFydCBjcWEtaXRlbXMtc3RhcnQgY3FhLWdhcC0wLjVcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjcWEtdGV4dC1bIzZCNzI4MF0gY3FhLXRleHQteHMgY3FhLWxlYWRpbmctWzE1cHhdIGNxYS1mb250LW1lZGl1bVwiPnt7IGl0ZW0ubGFiZWwgfX08L2Rpdj5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgY2xhc3M9XCJjcWEtZmxleCBjcWEtanVzdGlmeS1zdGFydCBjcWEtaXRlbXMtY2VudGVyIGNxYS1nYXAtWzVweF0gY3FhLW1pbi13LTAgY3FhLXctZnVsbCBjcWEtdGV4dC1sZWZ0IGNxYS10ZXh0LVsjMEEwQTBBXSBjcWEtYm9yZGVyIGNxYS1ib3JkZXItWyNGNUY1RjVdXCI+XG4gICAgICAgICAgICAgIDxtYXQtaWNvbiAqbmdJZj1cIml0ZW0uaWNvbiAmJiAoIWl0ZW0uaWNvbkxpYnJhcnkgfHwgaXRlbS5pY29uTGlicmFyeSA9PT0gJ21hdCcpXCIgY2xhc3M9XCJjcWEtdGV4dC1bIzZCNzI4MF0gY3FhLXRleHQtc20gY3FhLXctNCBjcWEtaC00XCI+XG4gICAgICAgICAgICAgICAge3sgaXRlbS5pY29uIH19XG4gICAgICAgICAgICAgIDwvbWF0LWljb24+XG4gICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiaXRlbS5zdGF0dXNDb2xvclwiIGNsYXNzPVwiY3FhLXctMy41IGNxYS1oLTMuNSBjcWEtcm91bmRlZC1mdWxsIGNxYS1mbGV4LXNocmluay0wXCIgW25nQ2xhc3NdPVwiZ2V0U3RhdHVzRG90Q2xhc3MoaXRlbSlcIj48L3NwYW4+XG4gICAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJpdGVtLmxpbmtcIlxuICAgICAgICAgICAgICAgIGhyZWY9XCJqYXZhc2NyaXB0OnZvaWQoMClcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY3FhLXRleHQtWyMyNTYzRUJdIGNxYS10ZXh0LXhzIGNxYS1sZWFkaW5nLVsxMnB4XSBjcWEtZm9udC1ub3JtYWwgaG92ZXI6Y3FhLXVuZGVybGluZSBjcWEtY3Vyc29yLXBvaW50ZXIgY3FhLWJsb2NrIGNxYS10cnVuY2F0ZSBjcWEtbWluLXctMFwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uTWV0YWRhdGFMaW5rQ2xpY2soaXRlbSk7ICRldmVudC5wcmV2ZW50RGVmYXVsdCgpXCI+XG4gICAgICAgICAgICAgICAge3sgaXRlbS52YWx1ZSB9fVxuICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIWl0ZW0ubGlua1wiIGNsYXNzPVwiY3FhLXRleHQteHMgY3FhLWxlYWRpbmctWzEycHhdIGNxYS1mb250LW5vcm1hbCBjcWEtYWxpZ24tbWlkZGxlXCIgW25nQ2xhc3NdPVwiZ2V0VmFsdWVUZXh0Q2xhc3MoaXRlbSlcIj5cbiAgICAgICAgICAgICAgICB7eyBpdGVtLnZhbHVlIH19XG4gICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPCEtLSBMYWJlbHMgKEZpZ21hOiBMYWJlbHMgdGl0bGUsIGNxYS1iYWRnZSBjaGlwcyB3aXRoIHRhZyBpY29uKSAtLT5cbiAgICA8ZGl2ICpuZ0lmPVwibGFiZWxzLmxlbmd0aFwiIGNsYXNzPVwiY3FhLXNlbGYtc3RyZXRjaCBjcWEtZmxleCBjcWEtZmxleC1jb2wgY3FhLWp1c3RpZnktc3RhcnQgY3FhLWl0ZW1zLXN0YXJ0IGNxYS1nYXAtMiBjcWEtdGV4dC1zbSBjcWEtbGVhZGluZy1bMTkuNnB4XVwiPlxuICAgICAgPHNwYW4gY2xhc3M9XCJjcWEtdGV4dC1bIzExMTgyN10gY3FhLXRleHQtc20gY3FhLWZvbnQtbWVkaXVtIGNxYS1sZWFkaW5nLTVcIj5MYWJlbHM8L3NwYW4+XG4gICAgICA8ZGl2IGNsYXNzPVwiY3FhLWZsZXggY3FhLWZsZXgtd3JhcCBjcWEtZ2FwLTJcIj5cbiAgICAgICAgPGNxYS1iYWRnZVxuICAgICAgICAgICpuZ0Zvcj1cImxldCBsYWJlbCBvZiBsYWJlbHNcIlxuICAgICAgICAgIFtsYWJlbF09XCJsYWJlbFwiXG4gICAgICAgICAgaWNvbj1cImxhYmVsXCJcbiAgICAgICAgICB2YXJpYW50PVwib3V0bGluZVwiXG4gICAgICAgICAgc2l6ZT1cInNtYWxsXCJcbiAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I9XCIjZmZmZmZmXCJcbiAgICAgICAgICB0ZXh0Q29sb3I9XCIjNDc1NTY5XCJcbiAgICAgICAgICBib3JkZXJDb2xvcj1cIiNFMkU4RjBcIlxuICAgICAgICAgIGljb25Db2xvcj1cIiM5NEEzQjhcIj5cbiAgICAgICAgPC9jcWEtYmFkZ2U+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDwhLS0gQ29uZmlndXJhdGlvbiBTZWN0aW9uIC0tPlxuICAgIDxkaXYgKm5nSWY9XCJjb25maWdTZWN0aW9ucy5sZW5ndGggfHwgY29uZmlnU2VjdGlvbnNSb3cyLmxlbmd0aFwiIGNsYXNzPVwiY3FhLXNlbGYtc3RyZXRjaCBjcWEtZmxleCBjcWEtZmxleC1jb2wgY3FhLWp1c3RpZnktc3RhcnQgY3FhLWl0ZW1zLXN0YXJ0IGNxYS1nYXAtMi41XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiY3FhLXNlbGYtc3RyZXRjaCBjcWEtaW5saW5lLWZsZXggY3FhLWp1c3RpZnktc3RhcnQgY3FhLWl0ZW1zLWNlbnRlclwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY3FhLWZsZXggY3FhLWl0ZW1zLWNlbnRlciBjcWEtZ2FwLTJcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3FhLXctNSBjcWEtaC01IGNxYS1wLTEgY3FhLWZsZXgtc2hyaW5rLTAgY3FhLWJnLVsjM0Y0M0VFMUFdIGNxYS1yb3VuZGVkLW1kIGNxYS1pbmxpbmUtZmxleCBjcWEtanVzdGlmeS1jZW50ZXIgY3FhLWl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwiY3FhLXRleHQtWyMxQjFGRUJdIGNxYS10ZXh0LVsxMnB4XSBjcWEtdy0zIGNxYS1oLTMgY3FhLWxlYWRpbmctbm9uZSBjcWEtYmxvY2tcIj5zZXR0aW5nczwvbWF0LWljb24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJjcWEtdGV4dC1bIzM3NDE1MV0gY3FhLXRleHQtc20gY3FhLWZvbnQtc2VtaWJvbGQgY3FhLWxlYWRpbmctWzE5LjZweF1cIj57eyBjb25maWdUaXRsZSB9fTwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjcWEtc2VsZi1zdHJldGNoIGNxYS1mbGV4IGNxYS1mbGV4LWNvbCBjcWEtanVzdGlmeS1zdGFydCBjcWEtaXRlbXMtc3RhcnQgY3FhLWdhcC0yLjVcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNxYS1zZWxmLXN0cmV0Y2ggY3FhLWdyaWQgY3FhLWdyaWQtY29scy0xIGNxYS1nYXAtMi41XCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgc2VjdGlvbiBvZiBjb25maWdTZWN0aW9uczsgdHJhY2tCeTogdHJhY2tCeUNvbmZpZ1RpdGxlXCI+XG4gICAgICAgICAgICA8Y3FhLWNvbmZpZ3VyYXRpb24tY2FyZFxuICAgICAgICAgICAgICBbaWNvbl09XCJzZWN0aW9uLmljb24gfHwgJ3R1bmUnXCJcbiAgICAgICAgICAgICAgW3RpdGxlXT1cInNlY3Rpb24udGl0bGVcIlxuICAgICAgICAgICAgICBbZGF0YV09XCJzZWN0aW9uLml0ZW1zXCI+XG4gICAgICAgICAgICA8L2NxYS1jb25maWd1cmF0aW9uLWNhcmQ+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2ICpuZ0lmPVwiY29uZmlnU2VjdGlvbnNSb3cyLmxlbmd0aFwiIGNsYXNzPVwiY3FhLXNlbGYtc3RyZXRjaCBjcWEtZmxleCBjcWEtZmxleC1jb2wgY3FhLWdhcC00IGNxYS10ZXh0LXNtIGNxYS1sZWFkaW5nLVsxOS42cHhdXCI+XG4gICAgICAgICAgPGNxYS1jb25maWd1cmF0aW9uLWNhcmRcbiAgICAgICAgICAgICpuZ0Zvcj1cImxldCBzZWN0aW9uIG9mIGNvbmZpZ1NlY3Rpb25zUm93MjsgdHJhY2tCeTogdHJhY2tCeUNvbmZpZ1RpdGxlXCJcbiAgICAgICAgICAgIFtpY29uXT1cInNlY3Rpb24uaWNvbiB8fCAndHVuZSdcIlxuICAgICAgICAgICAgW3RpdGxlXT1cInNlY3Rpb24udGl0bGVcIlxuICAgICAgICAgICAgW2RhdGFdPVwic2VjdGlvbi5pdGVtc1wiPlxuICAgICAgICAgIDwvY3FhLWNvbmZpZ3VyYXRpb24tY2FyZD5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
|