tango-app-ui-analyse-trax 3.6.1 → 3.6.2-bulktask-3
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/esm2022/lib/components/action-centre/action-centre.component.mjs +3 -3
- package/esm2022/lib/components/activity-log-v2/activity-log-v2.component.mjs +3 -2
- package/esm2022/lib/components/activity-log-v2/log-view-popup/store-user-dropdown/store-user-dropdown.component.mjs +3 -3
- package/esm2022/lib/components/activity-log-v2/log-view-popup/view-action/view-action.component.mjs +3 -3
- package/esm2022/lib/components/add-multitask/add-multitask.component.mjs +540 -0
- package/esm2022/lib/components/add-multitask/bulkcreationmodel/bulkcreationmodel.component.mjs +270 -0
- package/esm2022/lib/components/add-multitask/create-task.data.mjs +306 -0
- package/esm2022/lib/components/add-multitask/create-task.interface.mjs +2 -0
- package/esm2022/lib/components/add-multitask/unique-string-validator.mjs +10 -0
- package/esm2022/lib/components/add-multitask/whitespace-validator.mjs +10 -0
- package/esm2022/lib/components/add-task/add-task.component.mjs +3 -1
- package/esm2022/lib/components/checklist-configure/checklist-configure.component.mjs +3 -3
- package/esm2022/lib/components/dashboard/dashboard.component.mjs +3 -3
- package/esm2022/lib/components/dashboard-info/dashboard-info.component.mjs +3 -3
- package/esm2022/lib/components/disabled-select/disabled-select.component.mjs +158 -0
- package/esm2022/lib/components/flags/flags.component.mjs +1 -1
- package/esm2022/lib/components/flags-info/flags-info.component.mjs +1 -1
- package/esm2022/lib/components/gallery/gallery.component.mjs +260 -24
- package/esm2022/lib/components/reactive-select/reactive-select.component.mjs +6 -3
- package/esm2022/lib/components/task-configure/task-configure.component.mjs +5 -5
- package/esm2022/lib/components/task-info/task-info.component.mjs +11 -7
- package/esm2022/lib/services/trax.service.mjs +17 -2
- package/esm2022/lib/tango-analyse-trax.module.mjs +12 -5
- package/fesm2022/{tango-app-ui-analyse-trax-eye-test-audit.module-BeDM0cg8.mjs → tango-app-ui-analyse-trax-eye-test-audit.module-CPw9sMQk.mjs} +7 -7
- package/fesm2022/{tango-app-ui-analyse-trax-eye-test-audit.module-BeDM0cg8.mjs.map → tango-app-ui-analyse-trax-eye-test-audit.module-CPw9sMQk.mjs.map} +1 -1
- package/fesm2022/{tango-app-ui-analyse-trax-tango-app-ui-analyse-trax-CscGaVfu.mjs → tango-app-ui-analyse-trax-tango-app-ui-analyse-trax-D_xt382M.mjs} +1755 -229
- package/fesm2022/tango-app-ui-analyse-trax-tango-app-ui-analyse-trax-D_xt382M.mjs.map +1 -0
- package/fesm2022/tango-app-ui-analyse-trax.mjs +1 -1
- package/lib/components/activity-log-v2/activity-log-v2.component.d.ts +1 -0
- package/lib/components/add-multitask/add-multitask.component.d.ts +95 -0
- package/lib/components/add-multitask/bulkcreationmodel/bulkcreationmodel.component.d.ts +42 -0
- package/lib/components/add-multitask/create-task.data.d.ts +244 -0
- package/lib/components/add-multitask/create-task.interface.d.ts +147 -0
- package/lib/components/add-multitask/unique-string-validator.d.ts +2 -0
- package/lib/components/add-multitask/whitespace-validator.d.ts +2 -0
- package/lib/components/disabled-select/disabled-select.component.d.ts +34 -0
- package/lib/components/gallery/gallery.component.d.ts +21 -1
- package/lib/components/reactive-select/reactive-select.component.d.ts +2 -2
- package/lib/components/task-configure/task-configure.component.d.ts +2 -2
- package/lib/components/task-info/task-info.component.d.ts +1 -0
- package/lib/services/trax.service.d.ts +5 -1
- package/lib/tango-analyse-trax.module.d.ts +11 -8
- package/package.json +1 -1
- package/fesm2022/tango-app-ui-analyse-trax-tango-app-ui-analyse-trax-CscGaVfu.mjs.map +0 -1
package/esm2022/lib/components/activity-log-v2/log-view-popup/view-action/view-action.component.mjs
CHANGED
|
@@ -107,11 +107,11 @@ export class ViewActionComponent {
|
|
|
107
107
|
return typeMappings[answerType] || answerType || '-';
|
|
108
108
|
}
|
|
109
109
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ViewActionComponent, deps: [{ token: i1.NgbActiveModal }], target: i0.ɵɵFactoryTarget.Component });
|
|
110
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ViewActionComponent, selector: "lib-view-action", inputs: { logDetails: "logDetails", checkListName: "checkListName", storeName: "storeName", actionType: "actionType", receivedData: "receivedData" }, ngImport: i0, template: "<div>\r\n <div class=\"card-header\">\r\n <div class=\"logheader d-flex justify-content-between W-100\">\r\n <span *ngIf=\"actionType === 'edited'\" class=\"card-header logheadertext\">Checklist Updates</span>\r\n <span *ngIf=\"actionType === 'updated' || actionType === 'draft'\" class=\"card-header logheadertext\">Configuration Updates</span>\r\n <div class=\"cursor-pointer\" (click)=\"closePopup()\"><span><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"32\" height=\"32\" viewBox=\"0 0 32 32\" fill=\"none\">\r\n <path d=\"M24 8L8 24M8 8L24 24\" stroke=\"#008EDF\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></span></div>\r\n </div>\r\n </div>\r\n <!-- edited -->\r\n <div class=\"card-body checklistscroll p-8\">\r\n <div *ngIf=\"actionType === 'edited'\">\r\n <!-- Checklist Name -->\r\n <!-- *ngIf=\"updatedChecklistName\" -->\r\n <div class=\"checklistframe my-6\" *ngIf=\"updatedChecklistName?.previous || updatedChecklistName?.new\">\r\n <div class=\"table-responsive\">\r\n <table>\r\n <thead>\r\n <tr class=\"frametext\">\r\n <th class=\"frametext1 col-2\">Fields</th>\r\n <th class=\"frametext col-5\">Previous</th>\r\n <th class=\"frametextprimary col-5\">Updated</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr>\r\n <td class=\"questionfieldtext col-2\">Checklist Name</td>\r\n <td class=\"Previousfieldtext col-5\">{{ updatedChecklistName?.previous || '-' }}</td>\r\n <td class=\"changesfieldtext col-5\">{{ updatedChecklistName?.new || '-' }}</td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n </div>\r\n <!-- Checklist Name End -->\r\n <!-- <div class=\"borderline\"></div> -->\r\n <!-- Checklist Description Start -->\r\n <div class=\"checklistframe my-6\" *ngIf=\"updatedChecklistDescription?.previous || updatedChecklistDescription?.new\">\r\n <!-- <h4 class=\"text-lg font-semibold\">Checklist Description Updated</h4> -->\r\n <div class=\"table-responsive\">\r\n <table>\r\n <thead>\r\n <tr class=\"frametext\">\r\n <th class=\"frametext1 col-2\">Fields</th>\r\n <th class=\"frametext col-5\">Previous</th>\r\n <th class=\"frametextprimary col-5\">Updated</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr>\r\n <td class=\"questionfieldtext col-2\">Checklist Description</td>\r\n <td class=\"Previousfieldtext col-5\">{{ updatedChecklistDescription?.previous || '-' }}</td>\r\n <td class=\"changesfieldtext col-5\">{{ updatedChecklistDescription?.new || '-' }}</td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n </div>\r\n \r\n <!-- Checklist Description End -->\r\n\r\n <!-- Section Name Start -->\r\n <div class=\"checklistframe my-6\" *ngIf=\"updatedSectionNames.length > 0\">\r\n <!-- <h4 class=\"text-lg font-semibold\">Section Names Updated</h4> -->\r\n <div class=\"table-responsive\">\r\n <table *ngFor=\"let section of updatedSectionNames\">\r\n <thead>\r\n <tr class=\"frametext\">\r\n <th class=\"frametext1 col-2\">Fields</th>\r\n <th class=\"frametext col-5\">Previous</th>\r\n <th class=\"frametextprimary col-5\">Updated</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr >\r\n <td class=\"questionfieldtext col-2\">Section Name</td>\r\n <td class=\"Previousfieldtext col-5\">{{ section?.previous || '-' }}</td>\r\n <td class=\"changesfieldtext col-5\">{{ section?.new || '-' }}</td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n </div>\r\n <!-- Section Name End -->\r\n\r\n <!-- Question Added varient start -->\r\n <div *ngIf=\"addedQuestions.length > 0\">\r\n <div *ngFor=\"let section of addedQuestions\">\r\n <div class=\"questext\">Section Name: <span class=\"quessubtext\">{{ section?.sectionName || '-' }}</span></div>\r\n <div *ngFor=\"let question of section.questions; let i = index\" >\r\n <div class=\"questext mt-2\">Question No : <span class=\"quessubtext\">{{ question?.qno || '-' }}</span></div>\r\n <div class=\"checklistframe my-6\">\r\n <div class=\"table-responsive\">\r\n <table >\r\n <thead>\r\n <tr class=\"frametext\">\r\n <th class=\"frametext1 col-2\">Fields</th>\r\n <th class=\"frametext col-5\">Previous</th>\r\n <th class=\"frametextprimary col-5\">Updated</th>\r\n </tr>\r\n </thead>\r\n <tbody >\r\n <tr>\r\n <td class=\"questionfieldtext col-2\">Question Added</td>\r\n <td class=\"Previousfieldtext col-5\"> - </td>\r\n <td class=\"changesfieldtext col-5\">{{ question?.qname || '-' }}</td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- Question Added varient end -->\r\n\r\n <!-- Question Deleted varient start -->\r\n <div *ngIf=\"deletedQuestions.length > 0\">\r\n <div *ngFor=\"let section of deletedQuestions\">\r\n <div class=\"questext\">Section Name: <span class=\"quessubtext\">{{ section.sectionName }}</span></div>\r\n <div *ngFor=\"let question of section.questions; let i = index\" >\r\n <div class=\"questext mt-2\">Question No : <span class=\"quessubtext\">{{ question?.qno || '-' }}</span></div>\r\n <div class=\"checklistframe my-6\">\r\n <div class=\"table-responsive\">\r\n <table >\r\n <thead>\r\n <tr class=\"frametext\">\r\n <th class=\"frametext1 col-2\">Fields</th>\r\n <th class=\"frametext col-5\">Previous</th>\r\n <th class=\"frametextprimary col-5\">Updated</th>\r\n </tr>\r\n </thead>\r\n <tbody >\r\n <tr>\r\n <td class=\"questionfieldtext col-2\">Question Deleted</td>\r\n <td class=\"Previousfieldtext col-5\"> - </td>\r\n <td class=\"changesfieldtext col-5\">{{ question?.qname || '-' }}</td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n \r\n <!-- Question Deleted varient end -->\r\n\r\n <!-- Question Edited varient start -->\r\n <div *ngIf=\"editedQuestions.length > 0\">\r\n <div *ngFor=\"let section of editedQuestions\">\r\n <div class=\"questext\">Section Name: <span class=\"quessubtext\">{{ section.sectionName || '-' }}</span></div>\r\n \r\n <div *ngFor=\"let question of section.questions\">\r\n <div class=\"questext mt-2\">Question No : <span class=\"quessubtext\">{{ question?.previous?.qno || question?.new?.qno || '-' }}</span></div>\r\n \r\n <div class=\"checklistframe my-6\">\r\n <div class=\"table-responsive\">\r\n <table>\r\n <thead>\r\n <tr class=\"frametext\">\r\n <th class=\"frametext1 col-2\">Fields</th>\r\n <th class=\"frametext col-5 previous-field\">Previous</th>\r\n <th class=\"frametextprimary col-5 updated-field\">Updated</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <!-- Question Name -->\r\n <tr>\r\n <td class=\"questionfieldtext col-2\">Question Edited</td>\r\n <td class=\"Previousfieldtext col-5\">{{ question.previous?.qname || '-' }}</td>\r\n <td class=\"changesfieldtext col-5\">{{ question.new?.qname || '-' }}</td>\r\n </tr>\r\n \r\n <!-- Answer Type -->\r\n <tr>\r\n <td class=\"questionfieldtext col-2\">Type</td>\r\n <td class=\"Previousfieldtext col-5\">{{ getAnswerTypeLabel(question.previous?.answerType) || '-' }}</td>\r\n <td class=\"changesfieldtext col-5\">{{ getAnswerTypeLabel(question.new?.answerType) || '-' }}\r\n </td>\r\n </tr>\r\n \r\n <!-- Reference Image -->\r\n <tr>\r\n <td class=\"questionfieldtext col-2\">Reference Image</td>\r\n <td class=\"Previousfieldtext col-5\">-</td>\r\n \r\n <td class=\"changesfieldtext col-5\"> {{\r\n question.previous?.questionReferenceImage && !question.new?.questionReferenceImage ? 'Deleted' :\r\n !question.previous?.questionReferenceImage && question.new?.questionReferenceImage ? 'Added' :\r\n question.previous?.questionReferenceImage !== question.new?.questionReferenceImage ? 'Updated' :\r\n '-'\r\n }}</td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- Question Edited varient end -->\r\n </div>\r\n\r\n <!-- updated -->\r\n <!-- Configuration Updates start -->\r\n <div *ngIf=\"actionType === 'updated' || actionType === 'draft'\" class=\"checklistframe my-6\">\r\n <div class=\"table-responsive\">\r\n <table>\r\n <thead>\r\n <tr class=\"frametext\">\r\n <th class=\"frametext1 col-2\">Fields</th>\r\n <th class=\"frametext col-5 w-50\">Previous</th>\r\n <th class=\"frametextprimary col-5 w-50\">Updated</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr>\r\n <td class=\"questionfieldtext col-2\">Store Added</td>\r\n <td class=\"configPreviousfieldtext col-5 w-50\"> - </td>\r\n <td class=\"changesfieldtext col-5 w-50\">\r\n <ng-container *ngIf=\"logDetails?.storeAdded?.length; else noData\">\r\n <lib-store-user-dropdown [items]=\"logDetails.storeAdded\" title=\"Stores\"></lib-store-user-dropdown>\r\n </ng-container>\r\n <ng-template #noData>-</ng-template>\r\n </td>\r\n </tr>\r\n \r\n <!-- Schedule Update -->\r\n <tr>\r\n <td class=\"questionfieldtext col-2\">Schedule</td>\r\n <td class=\"configPreviousfieldtext col-5\">\r\n <span *ngIf=\"receivedData === 'checklist' && logDetails?.schedule?.previous?.scheduleRepeatedType === 'onetime'\">\r\n <span class=\"my-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M16 2V6M8 2V6M3 10H21M5 4H19C20.1046 4 21 4.89543 21 6V20C21 21.1046 20.1046 22 19 22H5C3.89543 22 3 21.1046 3 20V6C3 4.89543 3.89543 4 5 4Z\" stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n <span class=\"ms-2 mt-2\">\r\n <span *ngIf=\"logDetails?.schedule?.previous?.scheduleRepeatedType === 'onetime'\">Once on</span>\r\n </span> \r\n <span>\r\n <span class=\"ms-1\">\r\n {{ logDetails?.schedule?.previous?.scheduleDateString ? formatDate(logDetails.schedule.previous.scheduleDateString) : '-' }}</span>\r\n </span>\r\n </span><br>\r\n <span class=\"previouslineheight\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M12 6V12L16 14M22 12C22 17.5228 17.5228 22 12 22C6.47715 22 2 17.5228 2 12C2 6.47715 6.47715 2 12 2C17.5228 2 22 6.47715 22 12Z\" stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n <span class=\"ms-2\">{{ logDetails?.schedule?.previous?.time || '-' }}</span>\r\n </span><br>\r\n </span>\r\n <span *ngIf=\"receivedData === 'task' && logDetails?.schedule?.previous?.scheduleDateString\">\r\n <span class=\"my-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M16 2V6M8 2V6M3 10H21M5 4H19C20.1046 4 21 4.89543 21 6V20C21 21.1046 20.1046 22 19 22H5C3.89543 22 3 21.1046 3 20V6C3 4.89543 3.89543 4 5 4Z\"\r\n stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n <span class=\"ms-2 mt-2\">Due Date</span> \r\n <span class=\"ms-1\">\r\n {{ logDetails?.schedule?.previous?.scheduleDateString ? formatDate(logDetails.schedule.previous.scheduleDateString) : '-' }}\r\n </span>\r\n </span><br>\r\n \r\n <span class=\"previouslineheight\" *ngIf=\"logDetails?.schedule?.previous?.time\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M12 6V12L16 14M22 12C22 17.5228 17.5228 22 12 22C6.47715 22 2 17.5228 2 12C2 6.47715 6.47715 2 12 2C17.5228 2 22 6.47715 22 12Z\"\r\n stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n <span class=\"ms-2\">{{ logDetails?.schedule?.previous?.time || '-' }}</span>\r\n </span>\r\n </span>\r\n <span *ngIf=\"logDetails?.schedule?.previous?.scheduleRepeatedType === 'weekday'\">\r\n <span class=\"my-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M16 2V6M8 2V6M3 10H21M5 4H19C20.1046 4 21 4.89543 21 6V20C21 21.1046 20.1046 22 19 22H5C3.89543 22 3 21.1046 3 20V6C3 4.89543 3.89543 4 5 4Z\" stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n <span class=\"ms-2\">Every {{ logDetails?.schedule?.previous?.schedule || '-' }}</span> \r\n <span *ngIf=\"logDetails?.schedule?.previous?.configStartDate\">\r\n <span class=\"ms-2\">Starts from {{ formatDate(logDetails?.schedule?.previous?.configStartDate) }} -</span>\r\n </span>\r\n <span *ngIf=\"logDetails?.schedule?.previous?.configStartDate && logDetails?.schedule?.previous?.configEndDate\" class=\"ms-2\">- Every -</span>\r\n <span class=\"ms-2\">{{ logDetails?.schedule?.previous?.scheduleRepeatedDay || '-' }}</span> \r\n <span class=\"ms-2\">{{ logDetails?.schedule?.previous?.scheduleRepeatedType || '-' }}</span> -\r\n <span class=\"ms-2\">{{ logDetails?.schedule?.previous?.scheduleWeekDays || '-' }}</span> \r\n\r\n <span *ngIf=\"logDetails?.schedule?.previous?.configEndDate\">\r\n <span class=\"ms-2\">- Ends on {{ formatDate(logDetails?.schedule?.previous?.configEndDate) }}</span>\r\n </span>\r\n </span><br>\r\n <span class=\"previouslineheight\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M12 6V12L16 14M22 12C22 17.5228 17.5228 22 12 22C6.47715 22 2 17.5228 2 12C2 6.47715 6.47715 2 12 2C17.5228 2 22 6.47715 22 12Z\" stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n <span class=\"ms-2\">{{ logDetails?.schedule?.previous?.time || '-' }}</span>\r\n </span><br>\r\n </span>\r\n <span *ngIf=\"logDetails?.schedule?.previous?.scheduleRepeatedType === 'daily'\">\r\n <span class=\"my-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M16 2V6M8 2V6M3 10H21M5 4H19C20.1046 4 21 4.89543 21 6V20C21 21.1046 20.1046 22 19 22H5C3.89543 22 3 21.1046 3 20V6C3 4.89543 3.89543 4 5 4Z\" stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n <span class=\"ms-2\">Repeats {{ logDetails?.schedule?.previous?.schedule || '-' }} -</span>\r\n <span *ngIf=\"logDetails?.schedule?.previous?.configStartDate\">\r\n <span class=\"ms-2\">Starts from {{ formatDate(logDetails?.schedule?.previous?.configStartDate) }} -</span>\r\n </span>\r\n <span *ngIf=\"logDetails?.schedule?.previous?.configStartDate && logDetails?.schedule?.previous?.configEndDate\" class=\"ms-2\">- Every -</span>\r\n <span class=\"ms-2\">{{ logDetails?.schedule?.previous?.scheduleRepeatedDay || '-' }}</span>\r\n <span class=\"ms-2\">{{ logDetails?.schedule?.previous?.scheduleRepeatedType || '-' }}</span> \r\n <span *ngIf=\"logDetails?.schedule?.previous?.configEndDate\">\r\n <span class=\"ms-2\">- Ends on {{ formatDate(logDetails?.schedule?.previous?.configEndDate) }}</span>\r\n </span>\r\n </span><br>\r\n <span class=\"previouslineheight\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M12 6V12L16 14M22 12C22 17.5228 17.5228 22 12 22C6.47715 22 2 17.5228 2 12C2 6.47715 6.47715 2 12 2C17.5228 2 22 6.47715 22 12Z\" stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n <span class=\"ms-2\">{{ logDetails?.schedule?.previous?.time || '-' }}</span>\r\n </span><br>\r\n </span>\r\n <span *ngIf=\"logDetails?.schedule?.previous?.scheduleRepeatedType === 'weekly'\">\r\n <span class=\"my-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M16 2V6M8 2V6M3 10H21M5 4H19C20.1046 4 21 4.89543 21 6V20C21 21.1046 20.1046 22 19 22H5C3.89543 22 3 21.1046 3 20V6C3 4.89543 3.89543 4 5 4Z\" stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n <span class=\"ms-2\">Repeats {{ logDetails?.schedule?.previous?.schedule || '-' }} -</span> \r\n <span *ngIf=\"logDetails?.schedule?.previous?.configStartDate\">\r\n <span class=\"ms-2\">Starts from {{ formatDate(logDetails?.schedule?.previous?.configStartDate) }} -</span>\r\n </span>\r\n <span *ngIf=\"logDetails?.schedule?.previous?.configStartDate && logDetails?.schedule?.previous?.configEndDate\" class=\"ms-2\">- Every -</span>\r\n <span class=\"ms-2\">{{ logDetails?.schedule?.previous?.scheduleRepeatedDay || '-' }}</span> \r\n <span class=\"ms-2\">{{ logDetails?.schedule?.previous?.scheduleRepeatedType || '-' }}</span> -\r\n <span class=\"ms-2\">{{ logDetails?.schedule?.previous?.scheduleWeekDays || '-' }}</span> \r\n\r\n <span *ngIf=\"logDetails?.schedule?.previous?.configEndDate\">\r\n <span class=\"ms-2\">- Ends on {{ formatDate(logDetails?.schedule?.previous?.configEndDate) }}</span>\r\n </span>\r\n </span><br>\r\n <span class=\"previouslineheight\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M12 6V12L16 14M22 12C22 17.5228 17.5228 22 12 22C6.47715 22 2 17.5228 2 12C2 6.47715 6.47715 2 12 2C17.5228 2 22 6.47715 22 12Z\" stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n <span class=\"ms-2\">{{ logDetails?.schedule?.previous?.time || '-' }}</span>\r\n </span><br>\r\n </span>\r\n <span *ngIf=\"logDetails?.schedule?.previous?.scheduleRepeatedType === 'monthly'\">\r\n <span class=\"my-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M16 2V6M8 2V6M3 10H21M5 4H19C20.1046 4 21 4.89543 21 6V20C21 21.1046 20.1046 22 19 22H5C3.89543 22 3 21.1046 3 20V6C3 4.89543 3.89543 4 5 4Z\" stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n <span class=\"ms-2\">Repeats {{ logDetails?.schedule?.previous?.schedule || '-' }} -</span>\r\n <span *ngIf=\"logDetails?.schedule?.previous?.configStartDate\">\r\n <span class=\"ms-2\">Starts from {{ formatDate(logDetails?.schedule?.previous?.configStartDate) }} -</span>\r\n </span>\r\n <span *ngIf=\"logDetails?.schedule?.previous?.configStartDate && logDetails?.schedule?.previous?.configEndDate\" class=\"ms-2\">- Every -</span>\r\n <span class=\"ms-2\">{{ logDetails?.schedule?.previous?.scheduleRepeatedDay || '-' }}</span> \r\n <span class=\"ms-2\">{{ logDetails?.schedule?.previous?.scheduleRepeatedType || '-' }}</span> -\r\n <span *ngIf=\"!(logDetails?.schedule?.previous?.scheduleRepeatedMonthWeek?.length === 1)\">On the</span>\r\n\r\n <span *ngIf=\"logDetails?.schedule?.previous?.scheduleRepeatedMonthWeek?.length === 1\">On day</span>\r\n \r\n <span *ngIf=\"logDetails?.schedule?.previous?.scheduleRepeatedMonthWeek || logDetails?.schedule?.previous?.specificDate\">\r\n <span *ngIf=\"scheduleWeeksArray().length; else showSpecificDate\">\r\n <span *ngFor=\"let week of scheduleWeeksArray(); let i = index\">\r\n {{ getWeekOrdinal(parseWeekNumber(week.split(' ')[0])) }} {{ week.split(' ')[1] }}\r\n <span *ngIf=\"i < scheduleWeeksArray().length - 1\">, </span>\r\n </span>\r\n </span>\r\n <ng-template #showSpecificDate>\r\n <span *ngIf=\"logDetails?.schedule?.previous?.specificDate?.length > 0\">\r\n {{ logDetails?.schedule?.previous?.specificDate.join(', ') }}\r\n </span>\r\n </ng-template>\r\n </span>\r\n\r\n <span *ngIf=\"logDetails?.schedule?.previous?.configEndDate\">\r\n <span class=\"ms-2\">- Ends on {{ formatDate(logDetails?.schedule?.previous?.configEndDate) }}</span>\r\n </span>\r\n </span><br>\r\n <span class=\"previouslineheight\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M12 6V12L16 14M22 12C22 17.5228 17.5228 22 12 22C6.47715 22 2 17.5228 2 12C2 6.47715 6.47715 2 12 2C17.5228 2 22 6.47715 22 12Z\" stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n <span class=\"ms-2\">{{ logDetails?.schedule?.previous?.time || '-' }}</span>\r\n </span><br>\r\n </span>\r\n <span *ngIf=\"logDetails?.schedule?.previous?.scheduleRepeatedType === 'range'\">\r\n <span class=\"my-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M16 2V6M8 2V6M3 10H21M5 4H19C20.1046 4 21 4.89543 21 6V20C21 21.1046 20.1046 22 19 22H5C3.89543 22 3 21.1046 3 20V6C3 4.89543 3.89543 4 5 4Z\" stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n <span class=\"ms-2\">Custom Range</span> -\r\n <span *ngIf=\"logDetails?.schedule?.previous?.configStartDate\">\r\n <span class=\"ms-2\">Starts from {{ formatDate(logDetails?.schedule?.previous?.configStartDate) }} -</span>\r\n </span>\r\n <span *ngIf=\"logDetails?.schedule?.new?.specificDate\" class=\"ms-2\">- On the Specific Dates - </span>\r\n <!-- <span class=\"ms-2\">{{ logDetails?.schedule?.previous?.scheduleRepeatedDay || '-' }}</span> -->\r\n <span class=\"ms-2\">{{ formatDateString(logDetails?.schedule?.previous?.specificDate[0]) }}</span>\r\n <span *ngIf=\"logDetails?.schedule?.previous?.configEndDate\">\r\n <span class=\"ms-2\">- Ends on {{ formatDate(logDetails?.schedule?.previous?.configEndDate) }}</span>\r\n </span>\r\n </span><br>\r\n <span class=\"previouslineheight\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M12 6V12L16 14M22 12C22 17.5228 17.5228 22 12 22C6.47715 22 2 17.5228 2 12C2 6.47715 6.47715 2 12 2C17.5228 2 22 6.47715 22 12Z\" stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n <span class=\"ms-2\">{{ logDetails?.schedule?.previous?.time || '-' }}</span>\r\n </span><br>\r\n </span>\r\n </td>\r\n\r\n <!-- <td class=\"configPreviousfieldtext col-5\">\r\n <span class=\"my-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M16 2V6M8 2V6M3 10H21M5 4H19C20.1046 4 21 4.89543 21 6V20C21 21.1046 20.1046 22 19 22H5C3.89543 22 3 21.1046 3 20V6C3 4.89543 3.89543 4 5 4Z\" stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n <span class=\"ms-2\">{{ logDetails?.schedule?.previous?.schedule || 'N/A' }} on</span> \r\n <span class=\"ms-2\">{{ logDetails?.schedule?.previous?.repeats || 'N/A' }}</span> \r\n <span *ngIf=\"logDetails?.schedule?.previous?.scheduleStartTime_iso\">\r\n <span class=\"ms-2\">- Starts from: {{ formatDate(logDetails?.schedule?.previous?.scheduleStartTime_iso) }}</span>\r\n </span>\r\n <span *ngIf=\"logDetails?.schedule?.previous?.occurs?.length > 0\">\r\n <span class=\"ms-2\">{{ logDetails?.schedule?.previous?.occurs?.join(', ') || 'N/A' }}</span>\r\n </span>\r\n </span><br>\r\n <span>\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M12 6V12L16 14M22 12C22 17.5228 17.5228 22 12 22C6.47715 22 2 17.5228 2 12C2 6.47715 6.47715 2 12 2C17.5228 2 22 6.47715 22 12Z\" stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n <span class=\"ms-2\">{{ logDetails?.schedule?.previous?.time || 'N/A' }}</span>\r\n </span><br>\r\n \r\n </td> -->\r\n\r\n <td class=\"changesfieldtext col-5\">\r\n <span *ngIf=\"logDetails?.schedule?.new?.scheduleRepeatedType === 'onetime'\">\r\n <span class=\"my-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M16 2V6M8 2V6M3 10H21M5 4H19C20.1046 4 21 4.89543 21 6V20C21 21.1046 20.1046 22 19 22H5C3.89543 22 3 21.1046 3 20V6C3 4.89543 3.89543 4 5 4Z\" stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n <span class=\"ms-2 mt-2\">\r\n <span *ngIf=\"logDetails?.schedule?.new?.scheduleRepeatedType === 'onetime'\">Once on</span>\r\n </span> \r\n <span>\r\n <span class=\"ms-1\"> {{ logDetails?.schedule?.new?.scheduleDateString ? formatDate(logDetails.schedule.new.scheduleDateString) : '-' }}</span>\r\n </span>\r\n </span><br>\r\n <span class=\"newlineheight\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M12 6V12L16 14M22 12C22 17.5228 17.5228 22 12 22C6.47715 22 2 17.5228 2 12C2 6.47715 6.47715 2 12 2C17.5228 2 22 6.47715 22 12Z\" stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n <span class=\"ms-2\">{{ logDetails?.schedule?.new?.time || '-' }}</span>\r\n </span><br>\r\n </span>\r\n <span *ngIf=\"receivedData === 'task' && logDetails?.schedule?.new?.scheduleDateString\">\r\n <span class=\"my-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M16 2V6M8 2V6M3 10H21M5 4H19C20.1046 4 21 4.89543 21 6V20C21 21.1046 20.1046 22 19 22H5C3.89543 22 3 21.1046 3 20V6C3 4.89543 3.89543 4 5 4Z\"\r\n stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n <span class=\"ms-2 mt-2\">Due Date</span> \r\n <span class=\"ms-1\">\r\n {{ logDetails?.schedule?.new?.scheduleDateString ? formatDate(logDetails.schedule.new.scheduleDateString) : '-' }}\r\n </span>\r\n </span><br>\r\n \r\n <span class=\"previouslineheight\" *ngIf=\"logDetails?.schedule?.new?.time\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M12 6V12L16 14M22 12C22 17.5228 17.5228 22 12 22C6.47715 22 2 17.5228 2 12C2 6.47715 6.47715 2 12 2C17.5228 2 22 6.47715 22 12Z\"\r\n stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n <span class=\"ms-2\">{{ logDetails?.schedule?.new?.time || '-' }}</span>\r\n </span>\r\n </span>\r\n <span *ngIf=\"logDetails?.schedule?.new?.scheduleRepeatedType === 'weekday'\">\r\n <span class=\"my-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M16 2V6M8 2V6M3 10H21M5 4H19C20.1046 4 21 4.89543 21 6V20C21 21.1046 20.1046 22 19 22H5C3.89543 22 3 21.1046 3 20V6C3 4.89543 3.89543 4 5 4Z\" stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n <span class=\"ms-2\">Every {{ logDetails?.schedule?.new?.schedule || '-' }}</span> \r\n <span *ngIf=\"logDetails?.schedule?.new?.configStartDate\">\r\n <span class=\"ms-2\">Starts from {{ formatDate(logDetails?.schedule?.new?.configStartDate) }} -</span>\r\n </span>\r\n <span *ngIf=\"logDetails?.schedule?.new?.configStartDate && logDetails?.schedule?.new?.configEndDate\" class=\"ms-2\"> Every -</span>\r\n <span class=\"ms-2\">{{ logDetails?.schedule?.new?.scheduleRepeatedDay || '-' }}</span> \r\n <span class=\"ms-2\">{{ logDetails?.schedule?.new?.scheduleRepeatedType || '-' }}</span> -\r\n <span class=\"ms-2\">{{ logDetails?.schedule?.new?.scheduleWeekDays || '-' }}</span> \r\n \r\n <span *ngIf=\"logDetails?.schedule?.new?.configEndDate\">\r\n <span class=\"ms-2\">- Ends on {{ formatDate(logDetails?.schedule?.new?.configEndDate) }}</span>\r\n </span>\r\n </span><br>\r\n <span class=\"newlineheight\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M12 6V12L16 14M22 12C22 17.5228 17.5228 22 12 22C6.47715 22 2 17.5228 2 12C2 6.47715 6.47715 2 12 2C17.5228 2 22 6.47715 22 12Z\" stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n <span class=\"ms-2\">{{ logDetails?.schedule?.new?.time || '-' }}</span>\r\n </span><br>\r\n </span>\r\n <span *ngIf=\"logDetails?.schedule?.new?.scheduleRepeatedType === 'daily'\">\r\n <span class=\"my-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M16 2V6M8 2V6M3 10H21M5 4H19C20.1046 4 21 4.89543 21 6V20C21 21.1046 20.1046 22 19 22H5C3.89543 22 3 21.1046 3 20V6C3 4.89543 3.89543 4 5 4Z\" stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n <span class=\"ms-2\">Repeats {{ logDetails?.schedule?.new?.schedule || '-' }} -</span> \r\n <span *ngIf=\"logDetails?.schedule?.new?.configStartDate\">\r\n <span class=\"ms-2\">Starts from {{ formatDate(logDetails?.schedule?.new?.configStartDate) }} -</span>\r\n </span>\r\n <span *ngIf=\"logDetails?.schedule?.new?.configStartDate && logDetails?.schedule?.new?.configEndDate\" class=\"ms-2\">- Every -</span>\r\n <span class=\"ms-2\">{{ logDetails?.schedule?.new?.scheduleRepeatedDay || '-' }}</span>\r\n <span class=\"ms-2\">{{ logDetails?.schedule?.new?.scheduleRepeatedType || '-' }}</span> \r\n <span *ngIf=\"logDetails?.schedule?.new?.configEndDate\">\r\n <span class=\"ms-2\">- Ends on {{ formatDate(logDetails?.schedule?.new?.configEndDate) }}</span>\r\n </span>\r\n </span><br>\r\n <span class=\"newlineheight\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M12 6V12L16 14M22 12C22 17.5228 17.5228 22 12 22C6.47715 22 2 17.5228 2 12C2 6.47715 6.47715 2 12 2C17.5228 2 22 6.47715 22 12Z\" stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n <span class=\"ms-2\">{{ logDetails?.schedule?.new?.time || '-' }}</span>\r\n </span><br>\r\n </span>\r\n <span *ngIf=\"logDetails?.schedule?.new?.scheduleRepeatedType === 'weekly'\">\r\n <span class=\"my-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M16 2V6M8 2V6M3 10H21M5 4H19C20.1046 4 21 4.89543 21 6V20C21 21.1046 20.1046 22 19 22H5C3.89543 22 3 21.1046 3 20V6C3 4.89543 3.89543 4 5 4Z\" stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n <span class=\"ms-2\">Repeats {{ logDetails?.schedule?.new?.schedule || '-' }} -</span>\r\n <span *ngIf=\"logDetails?.schedule?.new?.configStartDate\">\r\n <span class=\"ms-2\">Starts from {{ formatDate(logDetails?.schedule?.new?.configStartDate) }} -</span>\r\n </span>\r\n <span *ngIf=\"logDetails?.schedule?.new?.configStartDate && logDetails?.schedule?.new?.configEndDate\" class=\"ms-2\">- Every -</span>\r\n <span class=\"ms-2\">{{ logDetails?.schedule?.new?.scheduleRepeatedDay || '-' }}</span> \r\n <span class=\"ms-2\">{{ logDetails?.schedule?.new?.scheduleRepeatedType || '-' }}</span> -\r\n <span class=\"ms-2\">{{ logDetails?.schedule?.new?.scheduleWeekDays || '-' }}</span> \r\n \r\n <span *ngIf=\"logDetails?.schedule?.new?.configEndDate\">\r\n <span class=\"ms-2\">- Ends on {{ formatDate(logDetails?.schedule?.new?.configEndDate) }}</span>\r\n </span>\r\n </span><br>\r\n <span class=\"newlineheight\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M12 6V12L16 14M22 12C22 17.5228 17.5228 22 12 22C6.47715 22 2 17.5228 2 12C2 6.47715 6.47715 2 12 2C17.5228 2 22 6.47715 22 12Z\" stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n <span class=\"ms-2\">{{ logDetails?.schedule?.new?.time || '-' }}</span>\r\n </span><br>\r\n </span>\r\n <span *ngIf=\"logDetails?.schedule?.new?.scheduleRepeatedType === 'monthly'\">\r\n <span class=\"my-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M16 2V6M8 2V6M3 10H21M5 4H19C20.1046 4 21 4.89543 21 6V20C21 21.1046 20.1046 22 19 22H5C3.89543 22 3 21.1046 3 20V6C3 4.89543 3.89543 4 5 4Z\" stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n <span class=\"ms-2\">Repeats {{ logDetails?.schedule?.new?.schedule || '-' }} -</span>\r\n <span *ngIf=\"logDetails?.schedule?.new?.configStartDate\">\r\n <span class=\"ms-2\">Starts from {{ formatDate(logDetails?.schedule?.new?.configStartDate) }} -</span>\r\n </span>\r\n <span *ngIf=\"logDetails?.schedule?.new?.configStartDate && logDetails?.schedule?.new?.configEndDate\" class=\"ms-2\">- Every -</span>\r\n <span class=\"ms-2\">{{ logDetails?.schedule?.new?.scheduleRepeatedDay || '-' }}</span> \r\n <span class=\"ms-2\">{{ logDetails?.schedule?.new?.scheduleRepeatedType || '-' }}</span> -\r\n <span *ngIf=\"!(logDetails?.schedule?.new?.scheduleRepeatedMonthWeek?.length === 1)\">On the </span>\r\n\r\n <span *ngIf=\"logDetails?.schedule?.new?.scheduleRepeatedMonthWeek?.length === 1\">On day</span>\r\n \r\n <span *ngIf=\"logDetails?.schedule?.new?.scheduleRepeatedMonthWeek || logDetails?.schedule?.new?.specificDate\">\r\n <span *ngIf=\"scheduleWeeksArray().length; else showSpecificDate\">\r\n <span *ngFor=\"let week of scheduleWeeksArray(); let i = index\">\r\n {{ getWeekOrdinal(parseWeekNumber(week.split(' ')[0])) }} {{ week.split(' ')[1] }}\r\n <span *ngIf=\"i < scheduleWeeksArray().length - 1\">, </span>\r\n </span>\r\n </span>\r\n <ng-template #showSpecificDate>\r\n <span *ngIf=\"logDetails?.schedule?.new?.specificDate?.length > 0\">\r\n {{ logDetails?.schedule?.new?.specificDate.join(', ') }}\r\n </span>\r\n </ng-template>\r\n </span>\r\n <span *ngIf=\"logDetails?.schedule?.new?.configEndDate\">\r\n <span class=\"ms-2\">- Ends on {{ formatDate(logDetails?.schedule?.new?.configEndDate) }}</span>\r\n </span>\r\n </span><br>\r\n <span class=\"newlineheight\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M12 6V12L16 14M22 12C22 17.5228 17.5228 22 12 22C6.47715 22 2 17.5228 2 12C2 6.47715 6.47715 2 12 2C17.5228 2 22 6.47715 22 12Z\" stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n <span class=\"ms-2\">{{ logDetails?.schedule?.new?.time || '-' }}</span>\r\n </span><br>\r\n </span>\r\n <span *ngIf=\"logDetails?.schedule?.new?.scheduleRepeatedType === 'range'\">\r\n <span class=\"my-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M16 2V6M8 2V6M3 10H21M5 4H19C20.1046 4 21 4.89543 21 6V20C21 21.1046 20.1046 22 19 22H5C3.89543 22 3 21.1046 3 20V6C3 4.89543 3.89543 4 5 4Z\" stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n <span class=\"ms-2\">Custom Range</span> -\r\n <span *ngIf=\"logDetails?.schedule?.new?.configStartDate\">\r\n <span class=\"ms-2\">Starts from {{ formatDate(logDetails?.schedule?.new?.configStartDate) }} -</span>\r\n </span>\r\n <span *ngIf=\"logDetails?.schedule?.new?.specificDate\" class=\"ms-2\">- On the Specific Dates - </span>\r\n <!-- <span class=\"ms-2\">{{ logDetails?.schedule?.new?.scheduleRepeatedDay || '-' }}</span> -->\r\n <span class=\"ms-2\">{{ formatDateString(logDetails?.schedule?.new?.specificDate[0]) }}</span>\r\n <span *ngIf=\"logDetails?.schedule?.new?.configEndDate\">\r\n <span class=\"ms-2\">- Ends on {{ formatDate(logDetails?.schedule?.new?.configEndDate) }}</span>\r\n </span>\r\n </span><br>\r\n <span class=\"newlineheight\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M12 6V12L16 14M22 12C22 17.5228 17.5228 22 12 22C6.47715 22 2 17.5228 2 12C2 6.47715 6.47715 2 12 2C17.5228 2 22 6.47715 22 12Z\" stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n <span class=\"ms-2\">{{ logDetails?.schedule?.new?.time || '-' }}</span>\r\n </span><br>\r\n </span>\r\n </td>\r\n </tr>\r\n \r\n <tr>\r\n <td class=\"questionfieldtext col-2\">Response</td>\r\n <td class=\"configPreviousfieldtext col-5\">\r\n <ng-container *ngIf=\"logDetails?.response?.previous?.length; else noPreviousData\">\r\n <ul>\r\n <li *ngFor=\"let item of logDetails?.response?.previous\">{{ item }}</li>\r\n </ul>\r\n </ng-container>\r\n <ng-template #noPreviousData>-</ng-template>\r\n </td>\r\n <td class=\"changesfieldtext col-5\">\r\n <ng-container *ngIf=\"logDetails?.response?.new?.length; else noNewData\">\r\n <ul>\r\n <li *ngFor=\"let item of logDetails?.response?.new\">{{ item }}</li>\r\n </ul>\r\n </ng-container>\r\n <ng-template #noNewData>-</ng-template>\r\n </td>\r\n </tr>\r\n <tr>\r\n <td class=\"questionfieldtext col-2\">Owner</td>\r\n <td class=\"configPreviousfieldtext col-5\">\r\n <ng-container *ngIf=\"logDetails?.owner?.previous; else noPreviousData\">\r\n {{ logDetails?.owner?.previous || '-' }}\r\n </ng-container>\r\n <ng-template #noPreviousData>-</ng-template>\r\n </td>\r\n <td class=\"changesfieldtext col-5\">\r\n <ng-container *ngIf=\"logDetails?.owner?.new; else noNewData\">\r\n {{ logDetails?.owner?.new || '-' }}\r\n </ng-container>\r\n <ng-template #noNewData>-</ng-template>\r\n </td>\r\n </tr>\r\n \r\n <tr>\r\n <td class=\"questionfieldtext col-2\">Approver</td>\r\n <td class=\"configPreviousfieldtext col-5\">\r\n <ng-container *ngIf=\"logDetails?.approver?.previous; else noData\">\r\n {{ logDetails?.approver?.previous || '-' }}\r\n </ng-container>\r\n <ng-template #noData>-</ng-template>\r\n </td>\r\n <td class=\"changesfieldtext col-5\">\r\n <ng-container *ngIf=\"logDetails?.approver?.new; else noData\">\r\n {{ logDetails?.approver?.new || '-' }}\r\n </ng-container>\r\n <ng-template #noData>-</ng-template>\r\n </td>\r\n </tr>\r\n\r\n <tr *ngIf=\"receivedData === 'task'\">\r\n <td class=\"questionfieldtext col-2\">Priority</td>\r\n <td class=\"configPreviousfieldtext col-5\">\r\n <ng-container *ngIf=\"logDetails?.schedule?.previous.priority; else noData\">\r\n {{ logDetails?.schedule?.previous.priority || '-' }}\r\n </ng-container>\r\n <ng-template #noData>-</ng-template>\r\n </td>\r\n <td class=\"changesfieldtext col-5\">\r\n <ng-container *ngIf=\"logDetails?.schedule?.new?.priority; else noData\">\r\n {{ logDetails?.schedule?.new?.priority || '-' }}\r\n </ng-container>\r\n <ng-template #noData>-</ng-template>\r\n </td>\r\n </tr>\r\n \r\n \r\n <tr>\r\n <td class=\"questionfieldtext col-2\">Store Removed</td>\r\n <td class=\"configPreviousfieldtext col-5\"> - </td>\r\n <td class=\"changesfieldtext col-5\">\r\n <ng-container *ngIf=\"logDetails?.storeRemoved?.length; else noData\">\r\n <lib-store-user-dropdown [items]=\"logDetails?.storeRemoved\" title=\"Stores\"></lib-store-user-dropdown>\r\n </ng-container>\r\n <ng-template #noData>-</ng-template>\r\n </td>\r\n </tr>\r\n \r\n <tr>\r\n <td class=\"questionfieldtext col-2\">User Added</td>\r\n <td class=\"configPreviousfieldtext col-5\"> - </td>\r\n <td class=\"changesfieldtext col-5\">\r\n <ng-container *ngIf=\"logDetails?.userAdded?.length; else noData\">\r\n <lib-store-user-dropdown [items]=\"logDetails?.userAdded\" title=\"Users\"></lib-store-user-dropdown>\r\n </ng-container>\r\n <ng-template #noData>-</ng-template>\r\n </td>\r\n </tr>\r\n \r\n <tr>\r\n <td class=\"questionfieldtext col-2\">User Removed</td>\r\n <td class=\"configPreviousfieldtext col-5\"> - </td>\r\n <td class=\"changesfieldtext col-5\">\r\n <ng-container *ngIf=\"logDetails?.userRemoved?.length; else noData\">\r\n <lib-store-user-dropdown [items]=\"logDetails?.userRemoved\" title=\"Users\"></lib-store-user-dropdown>\r\n </ng-container>\r\n <ng-template #noData>-</ng-template>\r\n </td>\r\n </tr>\r\n \r\n </tbody>\r\n </table>\r\n </div>\r\n </div>\r\n<!-- Configuration Updates end -->\r\n\r\n </div>\r\n</div>\r\n\r\n", styles: [".logheader{display:flex;padding:16px;justify-content:space-between;align-items:center;flex:1 0 0;border-radius:6px;opacity:.8;background:var(--Primary-100, #DAF1FF)}.logheadertext{color:var(--Primary-800, #008EDF);text-align:center;font-family:Inter;font-size:18px;font-style:normal;font-weight:500;line-height:28px}.questext{color:var(--Gray-900, #101828);font-family:Inter;font-size:18px;font-style:normal;font-weight:600;line-height:28px}.quessubtext{color:var(--Gray-700, #344054);font-family:Inter;font-size:18px;font-style:normal;font-weight:500;line-height:28px}.checklistframe{align-items:flex-start;align-self:stretch;border-radius:16px!important;border:1px solid var(--Gray-100, #F2F4F7)}.table th,.table td{vertical-align:middle;text-align:start}.image-grid{display:flex;flex-wrap:wrap;justify-content:center;gap:10px}.image-grid img{width:100px;height:100px;object-fit:cover;border-radius:5px}.questionfieldtext{color:var(--Gray-900, #101828)!important;font-family:Inter;font-size:18px!important;font-weight:600!important;line-height:28px;border:1px solid var(--Gray-100, #F2F4F7)!important;text-align:start!important;width:150px}.frametext{color:var(--Gray-500, #667085)!important;font-family:Inter;font-size:16px!important;font-style:normal;font-weight:500!important;line-height:24px;background:var(--Gray-200, #EAECF0)!important;text-align:start!important}.frametext1{color:var(--Gray-500, #667085)!important;font-family:Inter;font-size:16px!important;font-style:normal;font-weight:500!important;line-height:24px;background:var(--Gray-100, #F2F4F7)!important}.frametextprimary{background:var(--Primary-50, #EAF8FF)!important;color:var(--Primary-600, #00A3FF)!important;font-family:Inter;font-size:16px!important;font-style:normal;font-weight:500!important;line-height:24px}.Previousfieldtext{color:var(--Gray-500, #667085)!important;font-family:Inter;font-size:16px!important;font-style:normal;font-weight:500!important;line-height:24px;background:var(--Gray-100, #F2F4F7)!important;border:1px solid var(--Gray-100, #F2F4F7)!important;text-align:start!important}.changesfieldtext{color:var(--Black, #101828)!important;font-family:Inter;font-size:16px!important;font-style:normal;font-weight:500!important;line-height:24px;border:1px solid var(--Gray-100, #F2F4F7)!important;text-align:start!important}.changesfieldimg{border-radius:8px;border:1px solid var(--Gray-100, #F2F4F7)}.checklistscroll{overflow-y:scroll;min-height:250px;max-height:600px}.configPreviousfieldtext{color:var(--Gray-500, #667085)!important;font-family:Inter;font-size:16px!important;font-style:normal;font-weight:500!important;line-height:24px;background:var(--Gray-100, #F2F4F7)!important;border:1px solid var(--Gray-100, #F2F4F7)!important;text-align:start!important}.newlineheight,.previouslineheight{line-height:50px!important}.w-50{width:50px!important}.table-responsive{width:100%;display:flex;justify-content:center}table{width:100%;border-collapse:collapse;table-layout:fixed}th,td{text-align:left;padding:12px;vertical-align:middle;word-wrap:break-word}th{background-color:#f4f4f4;font-weight:700}.frametext1,.questionfieldtext{width:22%}.frametext,.configPreviousfieldtext,.frametextprimary,.changesfieldtext{width:40%}@media (max-width: 1024px){th,td{font-size:14px;padding:10px}}@media (max-width: 768px){table{display:block}thead{display:none}tbody tr{display:flex;flex-direction:column;margin-bottom:10px}td{display:flex;justify-content:space-between;padding:8px;font-size:14px}}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.StoreUserDropdownComponent, selector: "lib-store-user-dropdown", inputs: ["title", "items"] }] });
|
|
110
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ViewActionComponent, selector: "lib-view-action", inputs: { logDetails: "logDetails", checkListName: "checkListName", storeName: "storeName", actionType: "actionType", receivedData: "receivedData" }, ngImport: i0, template: "<div>\r\n <div class=\"card-header\">\r\n <div class=\"logheader d-flex justify-content-between W-100\">\r\n <span *ngIf=\"actionType === 'edited'\" class=\"card-header logheadertext\">Checklist Updates</span>\r\n <span *ngIf=\"actionType === 'updated' || actionType === 'draft'\" class=\"card-header logheadertext\">Configuration Updates</span>\r\n <div class=\"cursor-pointer\" (click)=\"closePopup()\"><span><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"32\" height=\"32\" viewBox=\"0 0 32 32\" fill=\"none\">\r\n <path d=\"M24 8L8 24M8 8L24 24\" stroke=\"#008EDF\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></span></div>\r\n </div>\r\n </div>\r\n <!-- edited -->\r\n <div class=\"card-body checklistscroll p-8\">\r\n <div *ngIf=\"actionType === 'edited'\">\r\n <!-- Checklist Name -->\r\n <!-- *ngIf=\"updatedChecklistName\" -->\r\n <div class=\"checklistframe my-6\" *ngIf=\"updatedChecklistName?.previous || updatedChecklistName?.new\">\r\n <div class=\"table-responsive\">\r\n <table>\r\n <thead>\r\n <tr class=\"frametext\">\r\n <th class=\"frametext1 col-2\">Fields</th>\r\n <th class=\"frametext col-5\">Previous</th>\r\n <th class=\"frametextprimary col-5\">Updated</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr>\r\n <td class=\"questionfieldtext col-2\">Checklist Name</td>\r\n <td class=\"Previousfieldtext col-5\">{{ updatedChecklistName?.previous || '-' }}</td>\r\n <td class=\"changesfieldtext col-5\">{{ updatedChecklistName?.new || '-' }}</td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n </div>\r\n <!-- Checklist Name End -->\r\n <!-- <div class=\"borderline\"></div> -->\r\n <!-- Checklist Description Start -->\r\n <div class=\"checklistframe my-6\" *ngIf=\"updatedChecklistDescription?.previous || updatedChecklistDescription?.new\">\r\n <!-- <h4 class=\"text-lg font-semibold\">Checklist Description Updated</h4> -->\r\n <div class=\"table-responsive\">\r\n <table>\r\n <thead>\r\n <tr class=\"frametext\">\r\n <th class=\"frametext1 col-2\">Fields</th>\r\n <th class=\"frametext col-5\">Previous</th>\r\n <th class=\"frametextprimary col-5\">Updated</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr>\r\n <td class=\"questionfieldtext col-2\">Checklist Description</td>\r\n <td class=\"Previousfieldtext col-5\">{{ updatedChecklistDescription?.previous || '-' }}</td>\r\n <td class=\"changesfieldtext col-5\">{{ updatedChecklistDescription?.new || '-' }}</td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n </div>\r\n \r\n <!-- Checklist Description End -->\r\n\r\n <!-- Section Name Start -->\r\n <div class=\"checklistframe my-6\" *ngIf=\"updatedSectionNames.length > 0\">\r\n <!-- <h4 class=\"text-lg font-semibold\">Section Names Updated</h4> -->\r\n <div class=\"table-responsive\">\r\n <table *ngFor=\"let section of updatedSectionNames\">\r\n <thead>\r\n <tr class=\"frametext\">\r\n <th class=\"frametext1 col-2\">Fields</th>\r\n <th class=\"frametext col-5\">Previous</th>\r\n <th class=\"frametextprimary col-5\">Updated</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr >\r\n <td class=\"questionfieldtext col-2\">Section Name</td>\r\n <td class=\"Previousfieldtext col-5\">{{ section?.previous || '-' }}</td>\r\n <td class=\"changesfieldtext col-5\">{{ section?.new || '-' }}</td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n </div>\r\n <!-- Section Name End -->\r\n\r\n <!-- Question Added varient start -->\r\n <div *ngIf=\"addedQuestions.length > 0\">\r\n <div *ngFor=\"let section of addedQuestions\">\r\n <div class=\"questext\">Section Name: <span class=\"quessubtext\">{{ section?.sectionName || '-' }}</span></div>\r\n <div *ngFor=\"let question of section.questions; let i = index\" >\r\n <div class=\"questext mt-2\">Question No : <span class=\"quessubtext\">{{ question?.qno || '-' }}</span></div>\r\n <div class=\"checklistframe my-6\">\r\n <div class=\"table-responsive\">\r\n <table >\r\n <thead>\r\n <tr class=\"frametext\">\r\n <th class=\"frametext1 col-2\">Fields</th>\r\n <th class=\"frametext col-5\">Previous</th>\r\n <th class=\"frametextprimary col-5\">Updated</th>\r\n </tr>\r\n </thead>\r\n <tbody >\r\n <tr>\r\n <td class=\"questionfieldtext col-2\">Question Added</td>\r\n <td class=\"Previousfieldtext col-5\"> - </td>\r\n <td class=\"changesfieldtext col-5\">{{ question?.qname || '-' }}</td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- Question Added varient end -->\r\n\r\n <!-- Question Deleted varient start -->\r\n <div *ngIf=\"deletedQuestions.length > 0\">\r\n <div *ngFor=\"let section of deletedQuestions\">\r\n <div class=\"questext\">Section Name: <span class=\"quessubtext\">{{ section.sectionName }}</span></div>\r\n <div *ngFor=\"let question of section.questions; let i = index\" >\r\n <div class=\"questext mt-2\">Question No : <span class=\"quessubtext\">{{ question?.qno || '-' }}</span></div>\r\n <div class=\"checklistframe my-6\">\r\n <div class=\"table-responsive\">\r\n <table >\r\n <thead>\r\n <tr class=\"frametext\">\r\n <th class=\"frametext1 col-2\">Fields</th>\r\n <th class=\"frametext col-5\">Previous</th>\r\n <th class=\"frametextprimary col-5\">Updated</th>\r\n </tr>\r\n </thead>\r\n <tbody >\r\n <tr>\r\n <td class=\"questionfieldtext col-2\">Question Deleted</td>\r\n <td class=\"Previousfieldtext col-5\"> - </td>\r\n <td class=\"changesfieldtext col-5\">{{ question?.qname || '-' }}</td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n \r\n <!-- Question Deleted varient end -->\r\n\r\n <!-- Question Edited varient start -->\r\n <div *ngIf=\"editedQuestions.length > 0\">\r\n <div *ngFor=\"let section of editedQuestions\">\r\n <div class=\"questext\">Section Name: <span class=\"quessubtext\">{{ section.sectionName || '-' }}</span></div>\r\n \r\n <div *ngFor=\"let question of section.questions\">\r\n <div class=\"questext mt-2\">Question No : <span class=\"quessubtext\">{{ question?.previous?.qno || question?.new?.qno || '-' }}</span></div>\r\n \r\n <div class=\"checklistframe my-6\">\r\n <div class=\"table-responsive\">\r\n <table>\r\n <thead>\r\n <tr class=\"frametext\">\r\n <th class=\"frametext1 col-2\">Fields</th>\r\n <th class=\"frametext col-5 previous-field\">Previous</th>\r\n <th class=\"frametextprimary col-5 updated-field\">Updated</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <!-- Question Name -->\r\n <tr>\r\n <td class=\"questionfieldtext col-2\">Question Edited</td>\r\n <td class=\"Previousfieldtext col-5\">{{ question.previous?.qname || '-' }}</td>\r\n <td class=\"changesfieldtext col-5\">{{ question.new?.qname || '-' }}</td>\r\n </tr>\r\n \r\n <!-- Answer Type -->\r\n <tr>\r\n <td class=\"questionfieldtext col-2\">Type</td>\r\n <td class=\"Previousfieldtext col-5\">{{ getAnswerTypeLabel(question.previous?.answerType) || '-' }}</td>\r\n <td class=\"changesfieldtext col-5\">{{ getAnswerTypeLabel(question.new?.answerType) || '-' }}\r\n </td>\r\n </tr>\r\n \r\n <!-- Reference Image -->\r\n <tr>\r\n <td class=\"questionfieldtext col-2\">Reference Image</td>\r\n <td class=\"Previousfieldtext col-5\">-</td>\r\n \r\n <td class=\"changesfieldtext col-5\"> {{\r\n question.previous?.questionReferenceImage && !question.new?.questionReferenceImage ? 'Deleted' :\r\n !question.previous?.questionReferenceImage && question.new?.questionReferenceImage ? 'Added' :\r\n question.previous?.questionReferenceImage !== question.new?.questionReferenceImage ? 'Updated' :\r\n '-'\r\n }}</td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- Question Edited varient end -->\r\n </div>\r\n\r\n <!-- updated -->\r\n <!-- Configuration Updates start -->\r\n <div *ngIf=\"actionType === 'updated' || actionType === 'draft'\" class=\"checklistframe my-6\">\r\n <div class=\"table-responsive\">\r\n <table>\r\n <thead>\r\n <tr class=\"frametext\">\r\n <th class=\"frametext1 col-2\">Fields</th>\r\n <th class=\"frametext col-5 w-50\">Previous</th>\r\n <th class=\"frametextprimary col-5 w-50\">Updated</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr>\r\n <td class=\"questionfieldtext col-2\">Store Added</td>\r\n <td class=\"configPreviousfieldtext col-5 w-50\"> - </td>\r\n <td class=\"changesfieldtext col-5 w-50\">\r\n <ng-container *ngIf=\"logDetails?.storeAdded?.length; else noData\">\r\n <lib-store-user-dropdown [items]=\"logDetails.storeAdded\" title=\"Stores\"></lib-store-user-dropdown>\r\n </ng-container>\r\n <ng-template #noData>-</ng-template>\r\n </td>\r\n </tr>\r\n \r\n <!-- Schedule Update -->\r\n <tr>\r\n <td class=\"questionfieldtext col-2\">Schedule</td>\r\n <td class=\"configPreviousfieldtext col-5\">\r\n <span *ngIf=\"receivedData === 'checklist' && logDetails?.schedule?.previous?.scheduleRepeatedType === 'onetime'\">\r\n <span class=\"my-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M16 2V6M8 2V6M3 10H21M5 4H19C20.1046 4 21 4.89543 21 6V20C21 21.1046 20.1046 22 19 22H5C3.89543 22 3 21.1046 3 20V6C3 4.89543 3.89543 4 5 4Z\" stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n <span class=\"ms-2 mt-2\">\r\n <span *ngIf=\"logDetails?.schedule?.previous?.scheduleRepeatedType === 'onetime'\">Once on</span>\r\n </span> \r\n <span>\r\n <span class=\"ms-1\">\r\n {{ logDetails?.schedule?.previous?.scheduleDateString ? formatDate(logDetails.schedule.previous.scheduleDateString) : '-' }}</span>\r\n </span>\r\n </span><br>\r\n <span class=\"previouslineheight\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M12 6V12L16 14M22 12C22 17.5228 17.5228 22 12 22C6.47715 22 2 17.5228 2 12C2 6.47715 6.47715 2 12 2C17.5228 2 22 6.47715 22 12Z\" stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n <span class=\"ms-2\">{{ logDetails?.schedule?.previous?.time || '-' }}</span>\r\n </span><br>\r\n </span>\r\n <span *ngIf=\"receivedData === 'task' && logDetails?.schedule?.previous?.scheduleDateString\">\r\n <span class=\"my-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M16 2V6M8 2V6M3 10H21M5 4H19C20.1046 4 21 4.89543 21 6V20C21 21.1046 20.1046 22 19 22H5C3.89543 22 3 21.1046 3 20V6C3 4.89543 3.89543 4 5 4Z\"\r\n stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n <span class=\"ms-2 mt-2\">Due Date</span> \r\n <span class=\"ms-1\">\r\n {{ logDetails?.schedule?.previous?.scheduleDateString ? formatDate(logDetails.schedule.previous.scheduleDateString) : '-' }}\r\n </span>\r\n </span><br>\r\n \r\n <span class=\"previouslineheight\" *ngIf=\"logDetails?.schedule?.previous?.time\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M12 6V12L16 14M22 12C22 17.5228 17.5228 22 12 22C6.47715 22 2 17.5228 2 12C2 6.47715 6.47715 2 12 2C17.5228 2 22 6.47715 22 12Z\"\r\n stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n <span class=\"ms-2\">{{ logDetails?.schedule?.previous?.time || '-' }}</span>\r\n </span>\r\n </span>\r\n <span *ngIf=\"logDetails?.schedule?.previous?.scheduleRepeatedType === 'weekday'\">\r\n <span class=\"my-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M16 2V6M8 2V6M3 10H21M5 4H19C20.1046 4 21 4.89543 21 6V20C21 21.1046 20.1046 22 19 22H5C3.89543 22 3 21.1046 3 20V6C3 4.89543 3.89543 4 5 4Z\" stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n <span class=\"ms-2\">Every {{ logDetails?.schedule?.previous?.schedule || '-' }}</span> \r\n <span *ngIf=\"logDetails?.schedule?.previous?.configStartDate\">\r\n <span class=\"ms-2\">Starts from {{ formatDate(logDetails?.schedule?.previous?.configStartDate) }} -</span>\r\n </span>\r\n <span *ngIf=\"logDetails?.schedule?.previous?.configStartDate && logDetails?.schedule?.previous?.configEndDate\" class=\"ms-2\">- Every -</span>\r\n <span class=\"ms-2\">{{ logDetails?.schedule?.previous?.scheduleRepeatedDay || '-' }}</span> \r\n <span class=\"ms-2\">{{ logDetails?.schedule?.previous?.scheduleRepeatedType || '-' }}</span> -\r\n <span class=\"ms-2\">{{ logDetails?.schedule?.previous?.scheduleWeekDays || '-' }}</span> \r\n\r\n <span *ngIf=\"logDetails?.schedule?.previous?.configEndDate\">\r\n <span class=\"ms-2\">- Ends on {{ formatDate(logDetails?.schedule?.previous?.configEndDate) }}</span>\r\n </span>\r\n </span><br>\r\n <span class=\"previouslineheight\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M12 6V12L16 14M22 12C22 17.5228 17.5228 22 12 22C6.47715 22 2 17.5228 2 12C2 6.47715 6.47715 2 12 2C17.5228 2 22 6.47715 22 12Z\" stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n <span class=\"ms-2\">{{ logDetails?.schedule?.previous?.time || '-' }}</span>\r\n </span><br>\r\n </span>\r\n <span *ngIf=\"logDetails?.schedule?.previous?.scheduleRepeatedType === 'daily'\">\r\n <span class=\"my-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M16 2V6M8 2V6M3 10H21M5 4H19C20.1046 4 21 4.89543 21 6V20C21 21.1046 20.1046 22 19 22H5C3.89543 22 3 21.1046 3 20V6C3 4.89543 3.89543 4 5 4Z\" stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n <span class=\"ms-2\">Repeats {{ logDetails?.schedule?.previous?.schedule || '-' }} -</span>\r\n <span *ngIf=\"logDetails?.schedule?.previous?.configStartDate\">\r\n <span class=\"ms-2\">Starts from {{ formatDate(logDetails?.schedule?.previous?.configStartDate) }} -</span>\r\n </span>\r\n <span *ngIf=\"logDetails?.schedule?.previous?.configStartDate && logDetails?.schedule?.previous?.configEndDate\" class=\"ms-2\">- Every -</span>\r\n <span class=\"ms-2\">{{ logDetails?.schedule?.previous?.scheduleRepeatedDay || '-' }}</span>\r\n <span class=\"ms-2\">{{ logDetails?.schedule?.previous?.scheduleRepeatedType || '-' }}</span> \r\n <span *ngIf=\"logDetails?.schedule?.previous?.configEndDate\">\r\n <span class=\"ms-2\">- Ends on {{ formatDate(logDetails?.schedule?.previous?.configEndDate) }}</span>\r\n </span>\r\n </span><br>\r\n <span class=\"previouslineheight\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M12 6V12L16 14M22 12C22 17.5228 17.5228 22 12 22C6.47715 22 2 17.5228 2 12C2 6.47715 6.47715 2 12 2C17.5228 2 22 6.47715 22 12Z\" stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n <span class=\"ms-2\">{{ logDetails?.schedule?.previous?.time || '-' }}</span>\r\n </span><br>\r\n </span>\r\n <span *ngIf=\"logDetails?.schedule?.previous?.scheduleRepeatedType === 'weekly'\">\r\n <span class=\"my-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M16 2V6M8 2V6M3 10H21M5 4H19C20.1046 4 21 4.89543 21 6V20C21 21.1046 20.1046 22 19 22H5C3.89543 22 3 21.1046 3 20V6C3 4.89543 3.89543 4 5 4Z\" stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n <span class=\"ms-2\">Repeats {{ logDetails?.schedule?.previous?.schedule || '-' }} -</span> \r\n <span *ngIf=\"logDetails?.schedule?.previous?.configStartDate\">\r\n <span class=\"ms-2\">Starts from {{ formatDate(logDetails?.schedule?.previous?.configStartDate) }} -</span>\r\n </span>\r\n <span *ngIf=\"logDetails?.schedule?.previous?.configStartDate && logDetails?.schedule?.previous?.configEndDate\" class=\"ms-2\">- Every -</span>\r\n <span class=\"ms-2\">{{ logDetails?.schedule?.previous?.scheduleRepeatedDay || '-' }}</span> \r\n <span class=\"ms-2\">{{ logDetails?.schedule?.previous?.scheduleRepeatedType || '-' }}</span> -\r\n <span class=\"ms-2\">{{ logDetails?.schedule?.previous?.scheduleWeekDays || '-' }}</span> \r\n\r\n <span *ngIf=\"logDetails?.schedule?.previous?.configEndDate\">\r\n <span class=\"ms-2\">- Ends on {{ formatDate(logDetails?.schedule?.previous?.configEndDate) }}</span>\r\n </span>\r\n </span><br>\r\n <span class=\"previouslineheight\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M12 6V12L16 14M22 12C22 17.5228 17.5228 22 12 22C6.47715 22 2 17.5228 2 12C2 6.47715 6.47715 2 12 2C17.5228 2 22 6.47715 22 12Z\" stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n <span class=\"ms-2\">{{ logDetails?.schedule?.previous?.time || '-' }}</span>\r\n </span><br>\r\n </span>\r\n <span *ngIf=\"logDetails?.schedule?.previous?.scheduleRepeatedType === 'monthly'\">\r\n <span class=\"my-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M16 2V6M8 2V6M3 10H21M5 4H19C20.1046 4 21 4.89543 21 6V20C21 21.1046 20.1046 22 19 22H5C3.89543 22 3 21.1046 3 20V6C3 4.89543 3.89543 4 5 4Z\" stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n <span class=\"ms-2\">Repeats {{ logDetails?.schedule?.previous?.schedule || '-' }} -</span>\r\n <span *ngIf=\"logDetails?.schedule?.previous?.configStartDate\">\r\n <span class=\"ms-2\">Starts from {{ formatDate(logDetails?.schedule?.previous?.configStartDate) }} -</span>\r\n </span>\r\n <span *ngIf=\"logDetails?.schedule?.previous?.configStartDate && logDetails?.schedule?.previous?.configEndDate\" class=\"ms-2\">- Every -</span>\r\n <span class=\"ms-2\">{{ logDetails?.schedule?.previous?.scheduleRepeatedDay || '-' }}</span> \r\n <span class=\"ms-2\">{{ logDetails?.schedule?.previous?.scheduleRepeatedType || '-' }}</span> -\r\n <span *ngIf=\"!(logDetails?.schedule?.previous?.scheduleRepeatedMonthWeek?.length === 1)\">On the</span>\r\n\r\n <span *ngIf=\"logDetails?.schedule?.previous?.scheduleRepeatedMonthWeek?.length === 1\">On day</span>\r\n \r\n <span *ngIf=\"logDetails?.schedule?.previous?.scheduleRepeatedMonthWeek || logDetails?.schedule?.previous?.specificDate\">\r\n <span *ngIf=\"scheduleWeeksArray().length; else showSpecificDate\">\r\n <span *ngFor=\"let week of scheduleWeeksArray(); let i = index\">\r\n {{ getWeekOrdinal(parseWeekNumber(week.split(' ')[0])) }} {{ week.split(' ')[1] }}\r\n <span *ngIf=\"i < scheduleWeeksArray().length - 1\">, </span>\r\n </span>\r\n </span>\r\n <ng-template #showSpecificDate>\r\n <span *ngIf=\"logDetails?.schedule?.previous?.specificDate?.length > 0\">\r\n {{ logDetails?.schedule?.previous?.specificDate.join(', ') }}\r\n </span>\r\n </ng-template>\r\n </span>\r\n\r\n <span *ngIf=\"logDetails?.schedule?.previous?.configEndDate\">\r\n <span class=\"ms-2\">- Ends on {{ formatDate(logDetails?.schedule?.previous?.configEndDate) }}</span>\r\n </span>\r\n </span><br>\r\n <span class=\"previouslineheight\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M12 6V12L16 14M22 12C22 17.5228 17.5228 22 12 22C6.47715 22 2 17.5228 2 12C2 6.47715 6.47715 2 12 2C17.5228 2 22 6.47715 22 12Z\" stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n <span class=\"ms-2\">{{ logDetails?.schedule?.previous?.time || '-' }}</span>\r\n </span><br>\r\n </span>\r\n <span *ngIf=\"logDetails?.schedule?.previous?.scheduleRepeatedType === 'range'\">\r\n <span class=\"my-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M16 2V6M8 2V6M3 10H21M5 4H19C20.1046 4 21 4.89543 21 6V20C21 21.1046 20.1046 22 19 22H5C3.89543 22 3 21.1046 3 20V6C3 4.89543 3.89543 4 5 4Z\" stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n <span class=\"ms-2\">Custom Range</span> -\r\n <span *ngIf=\"logDetails?.schedule?.previous?.configStartDate\">\r\n <span class=\"ms-2\">Starts from {{ formatDate(logDetails?.schedule?.previous?.configStartDate) }} -</span>\r\n </span>\r\n <span *ngIf=\"logDetails?.schedule?.new?.specificDate\" class=\"ms-2\">- On the Specific Dates - </span>\r\n <!-- <span class=\"ms-2\">{{ logDetails?.schedule?.previous?.scheduleRepeatedDay || '-' }}</span> -->\r\n <span class=\"ms-2\">{{ formatDateString(logDetails?.schedule?.previous?.specificDate[0]) }}</span>\r\n <span *ngIf=\"logDetails?.schedule?.previous?.configEndDate\">\r\n <span class=\"ms-2\">- Ends on {{ formatDate(logDetails?.schedule?.previous?.configEndDate) }}</span>\r\n </span>\r\n </span><br>\r\n <span class=\"previouslineheight\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M12 6V12L16 14M22 12C22 17.5228 17.5228 22 12 22C6.47715 22 2 17.5228 2 12C2 6.47715 6.47715 2 12 2C17.5228 2 22 6.47715 22 12Z\" stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n <span class=\"ms-2\">{{ logDetails?.schedule?.previous?.time || '-' }}</span>\r\n </span><br>\r\n </span>\r\n </td>\r\n\r\n <!-- <td class=\"configPreviousfieldtext col-5\">\r\n <span class=\"my-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M16 2V6M8 2V6M3 10H21M5 4H19C20.1046 4 21 4.89543 21 6V20C21 21.1046 20.1046 22 19 22H5C3.89543 22 3 21.1046 3 20V6C3 4.89543 3.89543 4 5 4Z\" stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n <span class=\"ms-2\">{{ logDetails?.schedule?.previous?.schedule || 'N/A' }} on</span> \r\n <span class=\"ms-2\">{{ logDetails?.schedule?.previous?.repeats || 'N/A' }}</span> \r\n <span *ngIf=\"logDetails?.schedule?.previous?.scheduleStartTime_iso\">\r\n <span class=\"ms-2\">- Starts from: {{ formatDate(logDetails?.schedule?.previous?.scheduleStartTime_iso) }}</span>\r\n </span>\r\n <span *ngIf=\"logDetails?.schedule?.previous?.occurs?.length > 0\">\r\n <span class=\"ms-2\">{{ logDetails?.schedule?.previous?.occurs?.join(', ') || 'N/A' }}</span>\r\n </span>\r\n </span><br>\r\n <span>\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M12 6V12L16 14M22 12C22 17.5228 17.5228 22 12 22C6.47715 22 2 17.5228 2 12C2 6.47715 6.47715 2 12 2C17.5228 2 22 6.47715 22 12Z\" stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n <span class=\"ms-2\">{{ logDetails?.schedule?.previous?.time || 'N/A' }}</span>\r\n </span><br>\r\n \r\n </td> -->\r\n\r\n <td class=\"changesfieldtext col-5\">\r\n <span *ngIf=\"logDetails?.schedule?.new?.scheduleRepeatedType === 'onetime'\">\r\n <span class=\"my-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M16 2V6M8 2V6M3 10H21M5 4H19C20.1046 4 21 4.89543 21 6V20C21 21.1046 20.1046 22 19 22H5C3.89543 22 3 21.1046 3 20V6C3 4.89543 3.89543 4 5 4Z\" stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n <span class=\"ms-2 mt-2\">\r\n <span *ngIf=\"logDetails?.schedule?.new?.scheduleRepeatedType === 'onetime'\">Once on</span>\r\n </span> \r\n <span>\r\n <span class=\"ms-1\"> {{ logDetails?.schedule?.new?.scheduleDateString ? formatDate(logDetails.schedule.new.scheduleDateString) : '-' }}</span>\r\n </span>\r\n </span><br>\r\n <span class=\"newlineheight\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M12 6V12L16 14M22 12C22 17.5228 17.5228 22 12 22C6.47715 22 2 17.5228 2 12C2 6.47715 6.47715 2 12 2C17.5228 2 22 6.47715 22 12Z\" stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n <span class=\"ms-2\">{{ logDetails?.schedule?.new?.time || '-' }}</span>\r\n </span><br>\r\n </span>\r\n <span *ngIf=\"receivedData === 'task' && logDetails?.schedule?.new?.scheduleDateString\">\r\n <span class=\"my-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M16 2V6M8 2V6M3 10H21M5 4H19C20.1046 4 21 4.89543 21 6V20C21 21.1046 20.1046 22 19 22H5C3.89543 22 3 21.1046 3 20V6C3 4.89543 3.89543 4 5 4Z\"\r\n stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n <span class=\"ms-2 mt-2\">Due Date</span> \r\n <span class=\"ms-1\">\r\n {{ logDetails?.schedule?.new?.scheduleDateString ? formatDate(logDetails.schedule.new.scheduleDateString) : '-' }}\r\n </span>\r\n </span><br>\r\n \r\n <span class=\"previouslineheight\" *ngIf=\"logDetails?.schedule?.new?.time\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M12 6V12L16 14M22 12C22 17.5228 17.5228 22 12 22C6.47715 22 2 17.5228 2 12C2 6.47715 6.47715 2 12 2C17.5228 2 22 6.47715 22 12Z\"\r\n stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n <span class=\"ms-2\">{{ logDetails?.schedule?.new?.time || '-' }}</span>\r\n </span>\r\n </span>\r\n <span *ngIf=\"logDetails?.schedule?.new?.scheduleRepeatedType === 'weekday'\">\r\n <span class=\"my-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M16 2V6M8 2V6M3 10H21M5 4H19C20.1046 4 21 4.89543 21 6V20C21 21.1046 20.1046 22 19 22H5C3.89543 22 3 21.1046 3 20V6C3 4.89543 3.89543 4 5 4Z\" stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n <span class=\"ms-2\">Every {{ logDetails?.schedule?.new?.schedule || '-' }}</span> \r\n <span *ngIf=\"logDetails?.schedule?.new?.configStartDate\">\r\n <span class=\"ms-2\">Starts from {{ formatDate(logDetails?.schedule?.new?.configStartDate) }} -</span>\r\n </span>\r\n <span *ngIf=\"logDetails?.schedule?.new?.configStartDate && logDetails?.schedule?.new?.configEndDate\" class=\"ms-2\"> Every -</span>\r\n <span class=\"ms-2\">{{ logDetails?.schedule?.new?.scheduleRepeatedDay || '-' }}</span> \r\n <span class=\"ms-2\">{{ logDetails?.schedule?.new?.scheduleRepeatedType || '-' }}</span> -\r\n <span class=\"ms-2\">{{ logDetails?.schedule?.new?.scheduleWeekDays || '-' }}</span> \r\n \r\n <span *ngIf=\"logDetails?.schedule?.new?.configEndDate\">\r\n <span class=\"ms-2\">- Ends on {{ formatDate(logDetails?.schedule?.new?.configEndDate) }}</span>\r\n </span>\r\n </span><br>\r\n <span class=\"newlineheight\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M12 6V12L16 14M22 12C22 17.5228 17.5228 22 12 22C6.47715 22 2 17.5228 2 12C2 6.47715 6.47715 2 12 2C17.5228 2 22 6.47715 22 12Z\" stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n <span class=\"ms-2\">{{ logDetails?.schedule?.new?.time || '-' }}</span>\r\n </span><br>\r\n </span>\r\n <span *ngIf=\"logDetails?.schedule?.new?.scheduleRepeatedType === 'daily'\">\r\n <span class=\"my-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M16 2V6M8 2V6M3 10H21M5 4H19C20.1046 4 21 4.89543 21 6V20C21 21.1046 20.1046 22 19 22H5C3.89543 22 3 21.1046 3 20V6C3 4.89543 3.89543 4 5 4Z\" stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n <span class=\"ms-2\">Repeats {{ logDetails?.schedule?.new?.schedule || '-' }} -</span> \r\n <span *ngIf=\"logDetails?.schedule?.new?.configStartDate\">\r\n <span class=\"ms-2\">Starts from {{ formatDate(logDetails?.schedule?.new?.configStartDate) }} -</span>\r\n </span>\r\n <span *ngIf=\"logDetails?.schedule?.new?.configStartDate && logDetails?.schedule?.new?.configEndDate\" class=\"ms-2\">- Every -</span>\r\n <span class=\"ms-2\">{{ logDetails?.schedule?.new?.scheduleRepeatedDay || '-' }}</span>\r\n <span class=\"ms-2\">{{ logDetails?.schedule?.new?.scheduleRepeatedType || '-' }}</span> \r\n <span *ngIf=\"logDetails?.schedule?.new?.configEndDate\">\r\n <span class=\"ms-2\">- Ends on {{ formatDate(logDetails?.schedule?.new?.configEndDate) }}</span>\r\n </span>\r\n </span><br>\r\n <span class=\"newlineheight\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M12 6V12L16 14M22 12C22 17.5228 17.5228 22 12 22C6.47715 22 2 17.5228 2 12C2 6.47715 6.47715 2 12 2C17.5228 2 22 6.47715 22 12Z\" stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n <span class=\"ms-2\">{{ logDetails?.schedule?.new?.time || '-' }}</span>\r\n </span><br>\r\n </span>\r\n <span *ngIf=\"logDetails?.schedule?.new?.scheduleRepeatedType === 'weekly'\">\r\n <span class=\"my-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M16 2V6M8 2V6M3 10H21M5 4H19C20.1046 4 21 4.89543 21 6V20C21 21.1046 20.1046 22 19 22H5C3.89543 22 3 21.1046 3 20V6C3 4.89543 3.89543 4 5 4Z\" stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n <span class=\"ms-2\">Repeats {{ logDetails?.schedule?.new?.schedule || '-' }} -</span>\r\n <span *ngIf=\"logDetails?.schedule?.new?.configStartDate\">\r\n <span class=\"ms-2\">Starts from {{ formatDate(logDetails?.schedule?.new?.configStartDate) }} -</span>\r\n </span>\r\n <span *ngIf=\"logDetails?.schedule?.new?.configStartDate && logDetails?.schedule?.new?.configEndDate\" class=\"ms-2\">- Every -</span>\r\n <span class=\"ms-2\">{{ logDetails?.schedule?.new?.scheduleRepeatedDay || '-' }}</span> \r\n <span class=\"ms-2\">{{ logDetails?.schedule?.new?.scheduleRepeatedType || '-' }}</span> -\r\n <span class=\"ms-2\">{{ logDetails?.schedule?.new?.scheduleWeekDays || '-' }}</span> \r\n \r\n <span *ngIf=\"logDetails?.schedule?.new?.configEndDate\">\r\n <span class=\"ms-2\">- Ends on {{ formatDate(logDetails?.schedule?.new?.configEndDate) }}</span>\r\n </span>\r\n </span><br>\r\n <span class=\"newlineheight\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M12 6V12L16 14M22 12C22 17.5228 17.5228 22 12 22C6.47715 22 2 17.5228 2 12C2 6.47715 6.47715 2 12 2C17.5228 2 22 6.47715 22 12Z\" stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n <span class=\"ms-2\">{{ logDetails?.schedule?.new?.time || '-' }}</span>\r\n </span><br>\r\n </span>\r\n <span *ngIf=\"logDetails?.schedule?.new?.scheduleRepeatedType === 'monthly'\">\r\n <span class=\"my-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M16 2V6M8 2V6M3 10H21M5 4H19C20.1046 4 21 4.89543 21 6V20C21 21.1046 20.1046 22 19 22H5C3.89543 22 3 21.1046 3 20V6C3 4.89543 3.89543 4 5 4Z\" stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n <span class=\"ms-2\">Repeats {{ logDetails?.schedule?.new?.schedule || '-' }} -</span>\r\n <span *ngIf=\"logDetails?.schedule?.new?.configStartDate\">\r\n <span class=\"ms-2\">Starts from {{ formatDate(logDetails?.schedule?.new?.configStartDate) }} -</span>\r\n </span>\r\n <span *ngIf=\"logDetails?.schedule?.new?.configStartDate && logDetails?.schedule?.new?.configEndDate\" class=\"ms-2\">- Every -</span>\r\n <span class=\"ms-2\">{{ logDetails?.schedule?.new?.scheduleRepeatedDay || '-' }}</span> \r\n <span class=\"ms-2\">{{ logDetails?.schedule?.new?.scheduleRepeatedType || '-' }}</span> -\r\n <span *ngIf=\"!(logDetails?.schedule?.new?.scheduleRepeatedMonthWeek?.length === 1)\">On the </span>\r\n\r\n <span *ngIf=\"logDetails?.schedule?.new?.scheduleRepeatedMonthWeek?.length === 1\">On day</span>\r\n \r\n <span *ngIf=\"logDetails?.schedule?.new?.scheduleRepeatedMonthWeek || logDetails?.schedule?.new?.specificDate\">\r\n <span *ngIf=\"scheduleWeeksArray().length; else showSpecificDate\">\r\n <span *ngFor=\"let week of scheduleWeeksArray(); let i = index\">\r\n {{ getWeekOrdinal(parseWeekNumber(week.split(' ')[0])) }} {{ week.split(' ')[1] }}\r\n <span *ngIf=\"i < scheduleWeeksArray().length - 1\">, </span>\r\n </span>\r\n </span>\r\n <ng-template #showSpecificDate>\r\n <span *ngIf=\"logDetails?.schedule?.new?.specificDate?.length > 0\">\r\n {{ logDetails?.schedule?.new?.specificDate.join(', ') }}\r\n </span>\r\n </ng-template>\r\n </span>\r\n <span *ngIf=\"logDetails?.schedule?.new?.configEndDate\">\r\n <span class=\"ms-2\">- Ends on {{ formatDate(logDetails?.schedule?.new?.configEndDate) }}</span>\r\n </span>\r\n </span><br>\r\n <span class=\"newlineheight\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M12 6V12L16 14M22 12C22 17.5228 17.5228 22 12 22C6.47715 22 2 17.5228 2 12C2 6.47715 6.47715 2 12 2C17.5228 2 22 6.47715 22 12Z\" stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n <span class=\"ms-2\">{{ logDetails?.schedule?.new?.time || '-' }}</span>\r\n </span><br>\r\n </span>\r\n <span *ngIf=\"logDetails?.schedule?.new?.scheduleRepeatedType === 'range'\">\r\n <span class=\"my-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M16 2V6M8 2V6M3 10H21M5 4H19C20.1046 4 21 4.89543 21 6V20C21 21.1046 20.1046 22 19 22H5C3.89543 22 3 21.1046 3 20V6C3 4.89543 3.89543 4 5 4Z\" stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n <span class=\"ms-2\">Custom Range</span> -\r\n <span *ngIf=\"logDetails?.schedule?.new?.configStartDate\">\r\n <span class=\"ms-2\">Starts from {{ formatDate(logDetails?.schedule?.new?.configStartDate) }} -</span>\r\n </span>\r\n <span *ngIf=\"logDetails?.schedule?.new?.specificDate\" class=\"ms-2\">- On the Specific Dates - </span>\r\n <!-- <span class=\"ms-2\">{{ logDetails?.schedule?.new?.scheduleRepeatedDay || '-' }}</span> -->\r\n <span class=\"ms-2\">{{ formatDateString(logDetails?.schedule?.new?.specificDate[0]) }}</span>\r\n <span *ngIf=\"logDetails?.schedule?.new?.configEndDate\">\r\n <span class=\"ms-2\">- Ends on {{ formatDate(logDetails?.schedule?.new?.configEndDate) }}</span>\r\n </span>\r\n </span><br>\r\n <span class=\"newlineheight\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M12 6V12L16 14M22 12C22 17.5228 17.5228 22 12 22C6.47715 22 2 17.5228 2 12C2 6.47715 6.47715 2 12 2C17.5228 2 22 6.47715 22 12Z\" stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n <span class=\"ms-2\">{{ logDetails?.schedule?.new?.time || '-' }}</span>\r\n </span><br>\r\n </span>\r\n </td>\r\n </tr>\r\n \r\n <tr>\r\n <td class=\"questionfieldtext col-2\">Response</td>\r\n <td class=\"configPreviousfieldtext col-5\">\r\n <ng-container *ngIf=\"logDetails?.response?.previous?.length; else noPreviousData\">\r\n <ul>\r\n <li *ngFor=\"let item of logDetails?.response?.previous\">{{ item }}</li>\r\n </ul>\r\n </ng-container>\r\n <ng-template #noPreviousData>-</ng-template>\r\n </td>\r\n <td class=\"changesfieldtext col-5\">\r\n <ng-container *ngIf=\"logDetails?.response?.new?.length; else noNewData\">\r\n <ul>\r\n <li *ngFor=\"let item of logDetails?.response?.new\">{{ item }}</li>\r\n </ul>\r\n </ng-container>\r\n <ng-template #noNewData>-</ng-template>\r\n </td>\r\n </tr>\r\n <tr>\r\n <td class=\"questionfieldtext col-2\">Owner</td>\r\n <td class=\"configPreviousfieldtext col-5\">\r\n <ng-container *ngIf=\"logDetails?.owner?.previous; else noPreviousData\">\r\n {{ logDetails?.owner?.previous || '-' }}\r\n </ng-container>\r\n <ng-template #noPreviousData>-</ng-template>\r\n </td>\r\n <td class=\"changesfieldtext col-5\">\r\n <ng-container *ngIf=\"logDetails?.owner?.new; else noNewData\">\r\n {{ logDetails?.owner?.new || '-' }}\r\n </ng-container>\r\n <ng-template #noNewData>-</ng-template>\r\n </td>\r\n </tr>\r\n \r\n <tr>\r\n <td class=\"questionfieldtext col-2\">Approver</td>\r\n <td class=\"configPreviousfieldtext col-5\">\r\n <ng-container *ngIf=\"logDetails?.approver?.previous; else noData\">\r\n {{ logDetails?.approver?.previous || '-' }}\r\n </ng-container>\r\n <ng-template #noData>-</ng-template>\r\n </td>\r\n <td class=\"changesfieldtext col-5\">\r\n <ng-container *ngIf=\"logDetails?.approver?.new; else noData\">\r\n {{ logDetails?.approver?.new || '-' }}\r\n </ng-container>\r\n <ng-template #noData>-</ng-template>\r\n </td>\r\n </tr>\r\n\r\n <tr *ngIf=\"receivedData === 'task'\">\r\n <td class=\"questionfieldtext col-2\">Priority</td>\r\n <td class=\"configPreviousfieldtext col-5\">\r\n <ng-container *ngIf=\"logDetails?.schedule?.previous.priority; else noData\">\r\n {{ logDetails?.schedule?.previous.priority || '-' }}\r\n </ng-container>\r\n <ng-template #noData>-</ng-template>\r\n </td>\r\n <td class=\"changesfieldtext col-5\">\r\n <ng-container *ngIf=\"logDetails?.schedule?.new?.priority; else noData\">\r\n {{ logDetails?.schedule?.new?.priority || '-' }}\r\n </ng-container>\r\n <ng-template #noData>-</ng-template>\r\n </td>\r\n </tr>\r\n \r\n \r\n <tr>\r\n <td class=\"questionfieldtext col-2\">Store Removed</td>\r\n <td class=\"configPreviousfieldtext col-5\"> - </td>\r\n <td class=\"changesfieldtext col-5\">\r\n <ng-container *ngIf=\"logDetails?.storeRemoved?.length; else noData\">\r\n <lib-store-user-dropdown [items]=\"logDetails?.storeRemoved\" title=\"Stores\"></lib-store-user-dropdown>\r\n </ng-container>\r\n <ng-template #noData>-</ng-template>\r\n </td>\r\n </tr>\r\n \r\n <tr>\r\n <td class=\"questionfieldtext col-2\">User Added</td>\r\n <td class=\"configPreviousfieldtext col-5\"> - </td>\r\n <td class=\"changesfieldtext col-5\">\r\n <ng-container *ngIf=\"logDetails?.userAdded?.length; else noData\">\r\n <lib-store-user-dropdown [items]=\"logDetails?.userAdded\" title=\"Users\"></lib-store-user-dropdown>\r\n </ng-container>\r\n <ng-template #noData>-</ng-template>\r\n </td>\r\n </tr>\r\n \r\n <tr>\r\n <td class=\"questionfieldtext col-2\">User Removed</td>\r\n <td class=\"configPreviousfieldtext col-5\"> - </td>\r\n <td class=\"changesfieldtext col-5\">\r\n <ng-container *ngIf=\"logDetails?.userRemoved?.length; else noData\">\r\n <lib-store-user-dropdown [items]=\"logDetails?.userRemoved\" title=\"Users\"></lib-store-user-dropdown>\r\n </ng-container>\r\n <ng-template #noData>-</ng-template>\r\n </td>\r\n </tr>\r\n \r\n </tbody>\r\n </table>\r\n </div>\r\n </div>\r\n<!-- Configuration Updates end -->\r\n\r\n </div>\r\n</div>", styles: [".logheader{display:flex;padding:16px;justify-content:space-between;align-items:center;flex:1 0 0;border-radius:6px;opacity:.8;background:var(--Primary-100, #DAF1FF)}.logheadertext{color:var(--Primary-800, #008EDF);text-align:center;font-family:Inter;font-size:18px;font-style:normal;font-weight:500;line-height:28px}.questext{color:var(--Gray-900, #101828);font-family:Inter;font-size:18px;font-style:normal;font-weight:600;line-height:28px}.quessubtext{color:var(--Gray-700, #344054);font-family:Inter;font-size:18px;font-style:normal;font-weight:500;line-height:28px}.checklistframe{align-items:flex-start;align-self:stretch;border-radius:16px!important;border:1px solid var(--Gray-100, #F2F4F7)}.table th,.table td{vertical-align:middle;text-align:start}.image-grid{display:flex;flex-wrap:wrap;justify-content:center;gap:10px}.image-grid img{width:100px;height:100px;object-fit:cover;border-radius:5px}.questionfieldtext{color:var(--Gray-900, #101828)!important;font-family:Inter;font-size:18px!important;font-weight:600!important;line-height:28px;border:1px solid var(--Gray-100, #F2F4F7)!important;text-align:start!important;width:150px}.frametext{color:var(--Gray-500, #667085)!important;font-family:Inter;font-size:16px!important;font-style:normal;font-weight:500!important;line-height:24px;background:var(--Gray-200, #EAECF0)!important;text-align:start!important}.frametext1{color:var(--Gray-500, #667085)!important;font-family:Inter;font-size:16px!important;font-style:normal;font-weight:500!important;line-height:24px;background:var(--Gray-100, #F2F4F7)!important}.frametextprimary{background:var(--Primary-50, #EAF8FF)!important;color:var(--Primary-600, #00A3FF)!important;font-family:Inter;font-size:16px!important;font-style:normal;font-weight:500!important;line-height:24px}.Previousfieldtext{color:var(--Gray-500, #667085)!important;font-family:Inter;font-size:16px!important;font-style:normal;font-weight:500!important;line-height:24px;background:var(--Gray-100, #F2F4F7)!important;border:1px solid var(--Gray-100, #F2F4F7)!important;text-align:start!important}.changesfieldtext{color:var(--Black, #101828)!important;font-family:Inter;font-size:16px!important;font-style:normal;font-weight:500!important;line-height:24px;border:1px solid var(--Gray-100, #F2F4F7)!important;text-align:start!important}.changesfieldimg{border-radius:8px;border:1px solid var(--Gray-100, #F2F4F7)}.checklistscroll{overflow-y:scroll;min-height:250px;max-height:600px}.configPreviousfieldtext{color:var(--Gray-500, #667085)!important;font-family:Inter;font-size:16px!important;font-style:normal;font-weight:500!important;line-height:24px;background:var(--Gray-100, #F2F4F7)!important;border:1px solid var(--Gray-100, #F2F4F7)!important;text-align:start!important}.newlineheight,.previouslineheight{line-height:50px!important}.w-50{width:50px!important}.table-responsive{width:100%;display:flex;justify-content:center}table{width:100%;border-collapse:collapse;table-layout:fixed}th,td{text-align:left;padding:12px;vertical-align:middle;word-wrap:break-word}th{background-color:#f4f4f4;font-weight:700}.frametext1,.questionfieldtext{width:22%}.frametext,.configPreviousfieldtext,.frametextprimary,.changesfieldtext{width:40%}@media (max-width: 1024px){th,td{font-size:14px;padding:10px}}@media (max-width: 768px){table{display:block}thead{display:none}tbody tr{display:flex;flex-direction:column;margin-bottom:10px}td{display:flex;justify-content:space-between;padding:8px;font-size:14px}}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.StoreUserDropdownComponent, selector: "lib-store-user-dropdown", inputs: ["title", "items"] }] });
|
|
111
111
|
}
|
|
112
112
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ViewActionComponent, decorators: [{
|
|
113
113
|
type: Component,
|
|
114
|
-
args: [{ selector: 'lib-view-action', template: "<div>\r\n <div class=\"card-header\">\r\n <div class=\"logheader d-flex justify-content-between W-100\">\r\n <span *ngIf=\"actionType === 'edited'\" class=\"card-header logheadertext\">Checklist Updates</span>\r\n <span *ngIf=\"actionType === 'updated' || actionType === 'draft'\" class=\"card-header logheadertext\">Configuration Updates</span>\r\n <div class=\"cursor-pointer\" (click)=\"closePopup()\"><span><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"32\" height=\"32\" viewBox=\"0 0 32 32\" fill=\"none\">\r\n <path d=\"M24 8L8 24M8 8L24 24\" stroke=\"#008EDF\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></span></div>\r\n </div>\r\n </div>\r\n <!-- edited -->\r\n <div class=\"card-body checklistscroll p-8\">\r\n <div *ngIf=\"actionType === 'edited'\">\r\n <!-- Checklist Name -->\r\n <!-- *ngIf=\"updatedChecklistName\" -->\r\n <div class=\"checklistframe my-6\" *ngIf=\"updatedChecklistName?.previous || updatedChecklistName?.new\">\r\n <div class=\"table-responsive\">\r\n <table>\r\n <thead>\r\n <tr class=\"frametext\">\r\n <th class=\"frametext1 col-2\">Fields</th>\r\n <th class=\"frametext col-5\">Previous</th>\r\n <th class=\"frametextprimary col-5\">Updated</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr>\r\n <td class=\"questionfieldtext col-2\">Checklist Name</td>\r\n <td class=\"Previousfieldtext col-5\">{{ updatedChecklistName?.previous || '-' }}</td>\r\n <td class=\"changesfieldtext col-5\">{{ updatedChecklistName?.new || '-' }}</td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n </div>\r\n <!-- Checklist Name End -->\r\n <!-- <div class=\"borderline\"></div> -->\r\n <!-- Checklist Description Start -->\r\n <div class=\"checklistframe my-6\" *ngIf=\"updatedChecklistDescription?.previous || updatedChecklistDescription?.new\">\r\n <!-- <h4 class=\"text-lg font-semibold\">Checklist Description Updated</h4> -->\r\n <div class=\"table-responsive\">\r\n <table>\r\n <thead>\r\n <tr class=\"frametext\">\r\n <th class=\"frametext1 col-2\">Fields</th>\r\n <th class=\"frametext col-5\">Previous</th>\r\n <th class=\"frametextprimary col-5\">Updated</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr>\r\n <td class=\"questionfieldtext col-2\">Checklist Description</td>\r\n <td class=\"Previousfieldtext col-5\">{{ updatedChecklistDescription?.previous || '-' }}</td>\r\n <td class=\"changesfieldtext col-5\">{{ updatedChecklistDescription?.new || '-' }}</td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n </div>\r\n \r\n <!-- Checklist Description End -->\r\n\r\n <!-- Section Name Start -->\r\n <div class=\"checklistframe my-6\" *ngIf=\"updatedSectionNames.length > 0\">\r\n <!-- <h4 class=\"text-lg font-semibold\">Section Names Updated</h4> -->\r\n <div class=\"table-responsive\">\r\n <table *ngFor=\"let section of updatedSectionNames\">\r\n <thead>\r\n <tr class=\"frametext\">\r\n <th class=\"frametext1 col-2\">Fields</th>\r\n <th class=\"frametext col-5\">Previous</th>\r\n <th class=\"frametextprimary col-5\">Updated</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr >\r\n <td class=\"questionfieldtext col-2\">Section Name</td>\r\n <td class=\"Previousfieldtext col-5\">{{ section?.previous || '-' }}</td>\r\n <td class=\"changesfieldtext col-5\">{{ section?.new || '-' }}</td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n </div>\r\n <!-- Section Name End -->\r\n\r\n <!-- Question Added varient start -->\r\n <div *ngIf=\"addedQuestions.length > 0\">\r\n <div *ngFor=\"let section of addedQuestions\">\r\n <div class=\"questext\">Section Name: <span class=\"quessubtext\">{{ section?.sectionName || '-' }}</span></div>\r\n <div *ngFor=\"let question of section.questions; let i = index\" >\r\n <div class=\"questext mt-2\">Question No : <span class=\"quessubtext\">{{ question?.qno || '-' }}</span></div>\r\n <div class=\"checklistframe my-6\">\r\n <div class=\"table-responsive\">\r\n <table >\r\n <thead>\r\n <tr class=\"frametext\">\r\n <th class=\"frametext1 col-2\">Fields</th>\r\n <th class=\"frametext col-5\">Previous</th>\r\n <th class=\"frametextprimary col-5\">Updated</th>\r\n </tr>\r\n </thead>\r\n <tbody >\r\n <tr>\r\n <td class=\"questionfieldtext col-2\">Question Added</td>\r\n <td class=\"Previousfieldtext col-5\"> - </td>\r\n <td class=\"changesfieldtext col-5\">{{ question?.qname || '-' }}</td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- Question Added varient end -->\r\n\r\n <!-- Question Deleted varient start -->\r\n <div *ngIf=\"deletedQuestions.length > 0\">\r\n <div *ngFor=\"let section of deletedQuestions\">\r\n <div class=\"questext\">Section Name: <span class=\"quessubtext\">{{ section.sectionName }}</span></div>\r\n <div *ngFor=\"let question of section.questions; let i = index\" >\r\n <div class=\"questext mt-2\">Question No : <span class=\"quessubtext\">{{ question?.qno || '-' }}</span></div>\r\n <div class=\"checklistframe my-6\">\r\n <div class=\"table-responsive\">\r\n <table >\r\n <thead>\r\n <tr class=\"frametext\">\r\n <th class=\"frametext1 col-2\">Fields</th>\r\n <th class=\"frametext col-5\">Previous</th>\r\n <th class=\"frametextprimary col-5\">Updated</th>\r\n </tr>\r\n </thead>\r\n <tbody >\r\n <tr>\r\n <td class=\"questionfieldtext col-2\">Question Deleted</td>\r\n <td class=\"Previousfieldtext col-5\"> - </td>\r\n <td class=\"changesfieldtext col-5\">{{ question?.qname || '-' }}</td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n \r\n <!-- Question Deleted varient end -->\r\n\r\n <!-- Question Edited varient start -->\r\n <div *ngIf=\"editedQuestions.length > 0\">\r\n <div *ngFor=\"let section of editedQuestions\">\r\n <div class=\"questext\">Section Name: <span class=\"quessubtext\">{{ section.sectionName || '-' }}</span></div>\r\n \r\n <div *ngFor=\"let question of section.questions\">\r\n <div class=\"questext mt-2\">Question No : <span class=\"quessubtext\">{{ question?.previous?.qno || question?.new?.qno || '-' }}</span></div>\r\n \r\n <div class=\"checklistframe my-6\">\r\n <div class=\"table-responsive\">\r\n <table>\r\n <thead>\r\n <tr class=\"frametext\">\r\n <th class=\"frametext1 col-2\">Fields</th>\r\n <th class=\"frametext col-5 previous-field\">Previous</th>\r\n <th class=\"frametextprimary col-5 updated-field\">Updated</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <!-- Question Name -->\r\n <tr>\r\n <td class=\"questionfieldtext col-2\">Question Edited</td>\r\n <td class=\"Previousfieldtext col-5\">{{ question.previous?.qname || '-' }}</td>\r\n <td class=\"changesfieldtext col-5\">{{ question.new?.qname || '-' }}</td>\r\n </tr>\r\n \r\n <!-- Answer Type -->\r\n <tr>\r\n <td class=\"questionfieldtext col-2\">Type</td>\r\n <td class=\"Previousfieldtext col-5\">{{ getAnswerTypeLabel(question.previous?.answerType) || '-' }}</td>\r\n <td class=\"changesfieldtext col-5\">{{ getAnswerTypeLabel(question.new?.answerType) || '-' }}\r\n </td>\r\n </tr>\r\n \r\n <!-- Reference Image -->\r\n <tr>\r\n <td class=\"questionfieldtext col-2\">Reference Image</td>\r\n <td class=\"Previousfieldtext col-5\">-</td>\r\n \r\n <td class=\"changesfieldtext col-5\"> {{\r\n question.previous?.questionReferenceImage && !question.new?.questionReferenceImage ? 'Deleted' :\r\n !question.previous?.questionReferenceImage && question.new?.questionReferenceImage ? 'Added' :\r\n question.previous?.questionReferenceImage !== question.new?.questionReferenceImage ? 'Updated' :\r\n '-'\r\n }}</td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- Question Edited varient end -->\r\n </div>\r\n\r\n <!-- updated -->\r\n <!-- Configuration Updates start -->\r\n <div *ngIf=\"actionType === 'updated' || actionType === 'draft'\" class=\"checklistframe my-6\">\r\n <div class=\"table-responsive\">\r\n <table>\r\n <thead>\r\n <tr class=\"frametext\">\r\n <th class=\"frametext1 col-2\">Fields</th>\r\n <th class=\"frametext col-5 w-50\">Previous</th>\r\n <th class=\"frametextprimary col-5 w-50\">Updated</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr>\r\n <td class=\"questionfieldtext col-2\">Store Added</td>\r\n <td class=\"configPreviousfieldtext col-5 w-50\"> - </td>\r\n <td class=\"changesfieldtext col-5 w-50\">\r\n <ng-container *ngIf=\"logDetails?.storeAdded?.length; else noData\">\r\n <lib-store-user-dropdown [items]=\"logDetails.storeAdded\" title=\"Stores\"></lib-store-user-dropdown>\r\n </ng-container>\r\n <ng-template #noData>-</ng-template>\r\n </td>\r\n </tr>\r\n \r\n <!-- Schedule Update -->\r\n <tr>\r\n <td class=\"questionfieldtext col-2\">Schedule</td>\r\n <td class=\"configPreviousfieldtext col-5\">\r\n <span *ngIf=\"receivedData === 'checklist' && logDetails?.schedule?.previous?.scheduleRepeatedType === 'onetime'\">\r\n <span class=\"my-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M16 2V6M8 2V6M3 10H21M5 4H19C20.1046 4 21 4.89543 21 6V20C21 21.1046 20.1046 22 19 22H5C3.89543 22 3 21.1046 3 20V6C3 4.89543 3.89543 4 5 4Z\" stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n <span class=\"ms-2 mt-2\">\r\n <span *ngIf=\"logDetails?.schedule?.previous?.scheduleRepeatedType === 'onetime'\">Once on</span>\r\n </span> \r\n <span>\r\n <span class=\"ms-1\">\r\n {{ logDetails?.schedule?.previous?.scheduleDateString ? formatDate(logDetails.schedule.previous.scheduleDateString) : '-' }}</span>\r\n </span>\r\n </span><br>\r\n <span class=\"previouslineheight\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M12 6V12L16 14M22 12C22 17.5228 17.5228 22 12 22C6.47715 22 2 17.5228 2 12C2 6.47715 6.47715 2 12 2C17.5228 2 22 6.47715 22 12Z\" stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n <span class=\"ms-2\">{{ logDetails?.schedule?.previous?.time || '-' }}</span>\r\n </span><br>\r\n </span>\r\n <span *ngIf=\"receivedData === 'task' && logDetails?.schedule?.previous?.scheduleDateString\">\r\n <span class=\"my-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M16 2V6M8 2V6M3 10H21M5 4H19C20.1046 4 21 4.89543 21 6V20C21 21.1046 20.1046 22 19 22H5C3.89543 22 3 21.1046 3 20V6C3 4.89543 3.89543 4 5 4Z\"\r\n stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n <span class=\"ms-2 mt-2\">Due Date</span> \r\n <span class=\"ms-1\">\r\n {{ logDetails?.schedule?.previous?.scheduleDateString ? formatDate(logDetails.schedule.previous.scheduleDateString) : '-' }}\r\n </span>\r\n </span><br>\r\n \r\n <span class=\"previouslineheight\" *ngIf=\"logDetails?.schedule?.previous?.time\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M12 6V12L16 14M22 12C22 17.5228 17.5228 22 12 22C6.47715 22 2 17.5228 2 12C2 6.47715 6.47715 2 12 2C17.5228 2 22 6.47715 22 12Z\"\r\n stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n <span class=\"ms-2\">{{ logDetails?.schedule?.previous?.time || '-' }}</span>\r\n </span>\r\n </span>\r\n <span *ngIf=\"logDetails?.schedule?.previous?.scheduleRepeatedType === 'weekday'\">\r\n <span class=\"my-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M16 2V6M8 2V6M3 10H21M5 4H19C20.1046 4 21 4.89543 21 6V20C21 21.1046 20.1046 22 19 22H5C3.89543 22 3 21.1046 3 20V6C3 4.89543 3.89543 4 5 4Z\" stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n <span class=\"ms-2\">Every {{ logDetails?.schedule?.previous?.schedule || '-' }}</span> \r\n <span *ngIf=\"logDetails?.schedule?.previous?.configStartDate\">\r\n <span class=\"ms-2\">Starts from {{ formatDate(logDetails?.schedule?.previous?.configStartDate) }} -</span>\r\n </span>\r\n <span *ngIf=\"logDetails?.schedule?.previous?.configStartDate && logDetails?.schedule?.previous?.configEndDate\" class=\"ms-2\">- Every -</span>\r\n <span class=\"ms-2\">{{ logDetails?.schedule?.previous?.scheduleRepeatedDay || '-' }}</span> \r\n <span class=\"ms-2\">{{ logDetails?.schedule?.previous?.scheduleRepeatedType || '-' }}</span> -\r\n <span class=\"ms-2\">{{ logDetails?.schedule?.previous?.scheduleWeekDays || '-' }}</span> \r\n\r\n <span *ngIf=\"logDetails?.schedule?.previous?.configEndDate\">\r\n <span class=\"ms-2\">- Ends on {{ formatDate(logDetails?.schedule?.previous?.configEndDate) }}</span>\r\n </span>\r\n </span><br>\r\n <span class=\"previouslineheight\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M12 6V12L16 14M22 12C22 17.5228 17.5228 22 12 22C6.47715 22 2 17.5228 2 12C2 6.47715 6.47715 2 12 2C17.5228 2 22 6.47715 22 12Z\" stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n <span class=\"ms-2\">{{ logDetails?.schedule?.previous?.time || '-' }}</span>\r\n </span><br>\r\n </span>\r\n <span *ngIf=\"logDetails?.schedule?.previous?.scheduleRepeatedType === 'daily'\">\r\n <span class=\"my-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M16 2V6M8 2V6M3 10H21M5 4H19C20.1046 4 21 4.89543 21 6V20C21 21.1046 20.1046 22 19 22H5C3.89543 22 3 21.1046 3 20V6C3 4.89543 3.89543 4 5 4Z\" stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n <span class=\"ms-2\">Repeats {{ logDetails?.schedule?.previous?.schedule || '-' }} -</span>\r\n <span *ngIf=\"logDetails?.schedule?.previous?.configStartDate\">\r\n <span class=\"ms-2\">Starts from {{ formatDate(logDetails?.schedule?.previous?.configStartDate) }} -</span>\r\n </span>\r\n <span *ngIf=\"logDetails?.schedule?.previous?.configStartDate && logDetails?.schedule?.previous?.configEndDate\" class=\"ms-2\">- Every -</span>\r\n <span class=\"ms-2\">{{ logDetails?.schedule?.previous?.scheduleRepeatedDay || '-' }}</span>\r\n <span class=\"ms-2\">{{ logDetails?.schedule?.previous?.scheduleRepeatedType || '-' }}</span> \r\n <span *ngIf=\"logDetails?.schedule?.previous?.configEndDate\">\r\n <span class=\"ms-2\">- Ends on {{ formatDate(logDetails?.schedule?.previous?.configEndDate) }}</span>\r\n </span>\r\n </span><br>\r\n <span class=\"previouslineheight\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M12 6V12L16 14M22 12C22 17.5228 17.5228 22 12 22C6.47715 22 2 17.5228 2 12C2 6.47715 6.47715 2 12 2C17.5228 2 22 6.47715 22 12Z\" stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n <span class=\"ms-2\">{{ logDetails?.schedule?.previous?.time || '-' }}</span>\r\n </span><br>\r\n </span>\r\n <span *ngIf=\"logDetails?.schedule?.previous?.scheduleRepeatedType === 'weekly'\">\r\n <span class=\"my-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M16 2V6M8 2V6M3 10H21M5 4H19C20.1046 4 21 4.89543 21 6V20C21 21.1046 20.1046 22 19 22H5C3.89543 22 3 21.1046 3 20V6C3 4.89543 3.89543 4 5 4Z\" stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n <span class=\"ms-2\">Repeats {{ logDetails?.schedule?.previous?.schedule || '-' }} -</span> \r\n <span *ngIf=\"logDetails?.schedule?.previous?.configStartDate\">\r\n <span class=\"ms-2\">Starts from {{ formatDate(logDetails?.schedule?.previous?.configStartDate) }} -</span>\r\n </span>\r\n <span *ngIf=\"logDetails?.schedule?.previous?.configStartDate && logDetails?.schedule?.previous?.configEndDate\" class=\"ms-2\">- Every -</span>\r\n <span class=\"ms-2\">{{ logDetails?.schedule?.previous?.scheduleRepeatedDay || '-' }}</span> \r\n <span class=\"ms-2\">{{ logDetails?.schedule?.previous?.scheduleRepeatedType || '-' }}</span> -\r\n <span class=\"ms-2\">{{ logDetails?.schedule?.previous?.scheduleWeekDays || '-' }}</span> \r\n\r\n <span *ngIf=\"logDetails?.schedule?.previous?.configEndDate\">\r\n <span class=\"ms-2\">- Ends on {{ formatDate(logDetails?.schedule?.previous?.configEndDate) }}</span>\r\n </span>\r\n </span><br>\r\n <span class=\"previouslineheight\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M12 6V12L16 14M22 12C22 17.5228 17.5228 22 12 22C6.47715 22 2 17.5228 2 12C2 6.47715 6.47715 2 12 2C17.5228 2 22 6.47715 22 12Z\" stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n <span class=\"ms-2\">{{ logDetails?.schedule?.previous?.time || '-' }}</span>\r\n </span><br>\r\n </span>\r\n <span *ngIf=\"logDetails?.schedule?.previous?.scheduleRepeatedType === 'monthly'\">\r\n <span class=\"my-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M16 2V6M8 2V6M3 10H21M5 4H19C20.1046 4 21 4.89543 21 6V20C21 21.1046 20.1046 22 19 22H5C3.89543 22 3 21.1046 3 20V6C3 4.89543 3.89543 4 5 4Z\" stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n <span class=\"ms-2\">Repeats {{ logDetails?.schedule?.previous?.schedule || '-' }} -</span>\r\n <span *ngIf=\"logDetails?.schedule?.previous?.configStartDate\">\r\n <span class=\"ms-2\">Starts from {{ formatDate(logDetails?.schedule?.previous?.configStartDate) }} -</span>\r\n </span>\r\n <span *ngIf=\"logDetails?.schedule?.previous?.configStartDate && logDetails?.schedule?.previous?.configEndDate\" class=\"ms-2\">- Every -</span>\r\n <span class=\"ms-2\">{{ logDetails?.schedule?.previous?.scheduleRepeatedDay || '-' }}</span> \r\n <span class=\"ms-2\">{{ logDetails?.schedule?.previous?.scheduleRepeatedType || '-' }}</span> -\r\n <span *ngIf=\"!(logDetails?.schedule?.previous?.scheduleRepeatedMonthWeek?.length === 1)\">On the</span>\r\n\r\n <span *ngIf=\"logDetails?.schedule?.previous?.scheduleRepeatedMonthWeek?.length === 1\">On day</span>\r\n \r\n <span *ngIf=\"logDetails?.schedule?.previous?.scheduleRepeatedMonthWeek || logDetails?.schedule?.previous?.specificDate\">\r\n <span *ngIf=\"scheduleWeeksArray().length; else showSpecificDate\">\r\n <span *ngFor=\"let week of scheduleWeeksArray(); let i = index\">\r\n {{ getWeekOrdinal(parseWeekNumber(week.split(' ')[0])) }} {{ week.split(' ')[1] }}\r\n <span *ngIf=\"i < scheduleWeeksArray().length - 1\">, </span>\r\n </span>\r\n </span>\r\n <ng-template #showSpecificDate>\r\n <span *ngIf=\"logDetails?.schedule?.previous?.specificDate?.length > 0\">\r\n {{ logDetails?.schedule?.previous?.specificDate.join(', ') }}\r\n </span>\r\n </ng-template>\r\n </span>\r\n\r\n <span *ngIf=\"logDetails?.schedule?.previous?.configEndDate\">\r\n <span class=\"ms-2\">- Ends on {{ formatDate(logDetails?.schedule?.previous?.configEndDate) }}</span>\r\n </span>\r\n </span><br>\r\n <span class=\"previouslineheight\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M12 6V12L16 14M22 12C22 17.5228 17.5228 22 12 22C6.47715 22 2 17.5228 2 12C2 6.47715 6.47715 2 12 2C17.5228 2 22 6.47715 22 12Z\" stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n <span class=\"ms-2\">{{ logDetails?.schedule?.previous?.time || '-' }}</span>\r\n </span><br>\r\n </span>\r\n <span *ngIf=\"logDetails?.schedule?.previous?.scheduleRepeatedType === 'range'\">\r\n <span class=\"my-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M16 2V6M8 2V6M3 10H21M5 4H19C20.1046 4 21 4.89543 21 6V20C21 21.1046 20.1046 22 19 22H5C3.89543 22 3 21.1046 3 20V6C3 4.89543 3.89543 4 5 4Z\" stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n <span class=\"ms-2\">Custom Range</span> -\r\n <span *ngIf=\"logDetails?.schedule?.previous?.configStartDate\">\r\n <span class=\"ms-2\">Starts from {{ formatDate(logDetails?.schedule?.previous?.configStartDate) }} -</span>\r\n </span>\r\n <span *ngIf=\"logDetails?.schedule?.new?.specificDate\" class=\"ms-2\">- On the Specific Dates - </span>\r\n <!-- <span class=\"ms-2\">{{ logDetails?.schedule?.previous?.scheduleRepeatedDay || '-' }}</span> -->\r\n <span class=\"ms-2\">{{ formatDateString(logDetails?.schedule?.previous?.specificDate[0]) }}</span>\r\n <span *ngIf=\"logDetails?.schedule?.previous?.configEndDate\">\r\n <span class=\"ms-2\">- Ends on {{ formatDate(logDetails?.schedule?.previous?.configEndDate) }}</span>\r\n </span>\r\n </span><br>\r\n <span class=\"previouslineheight\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M12 6V12L16 14M22 12C22 17.5228 17.5228 22 12 22C6.47715 22 2 17.5228 2 12C2 6.47715 6.47715 2 12 2C17.5228 2 22 6.47715 22 12Z\" stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n <span class=\"ms-2\">{{ logDetails?.schedule?.previous?.time || '-' }}</span>\r\n </span><br>\r\n </span>\r\n </td>\r\n\r\n <!-- <td class=\"configPreviousfieldtext col-5\">\r\n <span class=\"my-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M16 2V6M8 2V6M3 10H21M5 4H19C20.1046 4 21 4.89543 21 6V20C21 21.1046 20.1046 22 19 22H5C3.89543 22 3 21.1046 3 20V6C3 4.89543 3.89543 4 5 4Z\" stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n <span class=\"ms-2\">{{ logDetails?.schedule?.previous?.schedule || 'N/A' }} on</span> \r\n <span class=\"ms-2\">{{ logDetails?.schedule?.previous?.repeats || 'N/A' }}</span> \r\n <span *ngIf=\"logDetails?.schedule?.previous?.scheduleStartTime_iso\">\r\n <span class=\"ms-2\">- Starts from: {{ formatDate(logDetails?.schedule?.previous?.scheduleStartTime_iso) }}</span>\r\n </span>\r\n <span *ngIf=\"logDetails?.schedule?.previous?.occurs?.length > 0\">\r\n <span class=\"ms-2\">{{ logDetails?.schedule?.previous?.occurs?.join(', ') || 'N/A' }}</span>\r\n </span>\r\n </span><br>\r\n <span>\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M12 6V12L16 14M22 12C22 17.5228 17.5228 22 12 22C6.47715 22 2 17.5228 2 12C2 6.47715 6.47715 2 12 2C17.5228 2 22 6.47715 22 12Z\" stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n <span class=\"ms-2\">{{ logDetails?.schedule?.previous?.time || 'N/A' }}</span>\r\n </span><br>\r\n \r\n </td> -->\r\n\r\n <td class=\"changesfieldtext col-5\">\r\n <span *ngIf=\"logDetails?.schedule?.new?.scheduleRepeatedType === 'onetime'\">\r\n <span class=\"my-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M16 2V6M8 2V6M3 10H21M5 4H19C20.1046 4 21 4.89543 21 6V20C21 21.1046 20.1046 22 19 22H5C3.89543 22 3 21.1046 3 20V6C3 4.89543 3.89543 4 5 4Z\" stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n <span class=\"ms-2 mt-2\">\r\n <span *ngIf=\"logDetails?.schedule?.new?.scheduleRepeatedType === 'onetime'\">Once on</span>\r\n </span> \r\n <span>\r\n <span class=\"ms-1\"> {{ logDetails?.schedule?.new?.scheduleDateString ? formatDate(logDetails.schedule.new.scheduleDateString) : '-' }}</span>\r\n </span>\r\n </span><br>\r\n <span class=\"newlineheight\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M12 6V12L16 14M22 12C22 17.5228 17.5228 22 12 22C6.47715 22 2 17.5228 2 12C2 6.47715 6.47715 2 12 2C17.5228 2 22 6.47715 22 12Z\" stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n <span class=\"ms-2\">{{ logDetails?.schedule?.new?.time || '-' }}</span>\r\n </span><br>\r\n </span>\r\n <span *ngIf=\"receivedData === 'task' && logDetails?.schedule?.new?.scheduleDateString\">\r\n <span class=\"my-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M16 2V6M8 2V6M3 10H21M5 4H19C20.1046 4 21 4.89543 21 6V20C21 21.1046 20.1046 22 19 22H5C3.89543 22 3 21.1046 3 20V6C3 4.89543 3.89543 4 5 4Z\"\r\n stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n <span class=\"ms-2 mt-2\">Due Date</span> \r\n <span class=\"ms-1\">\r\n {{ logDetails?.schedule?.new?.scheduleDateString ? formatDate(logDetails.schedule.new.scheduleDateString) : '-' }}\r\n </span>\r\n </span><br>\r\n \r\n <span class=\"previouslineheight\" *ngIf=\"logDetails?.schedule?.new?.time\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M12 6V12L16 14M22 12C22 17.5228 17.5228 22 12 22C6.47715 22 2 17.5228 2 12C2 6.47715 6.47715 2 12 2C17.5228 2 22 6.47715 22 12Z\"\r\n stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n <span class=\"ms-2\">{{ logDetails?.schedule?.new?.time || '-' }}</span>\r\n </span>\r\n </span>\r\n <span *ngIf=\"logDetails?.schedule?.new?.scheduleRepeatedType === 'weekday'\">\r\n <span class=\"my-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M16 2V6M8 2V6M3 10H21M5 4H19C20.1046 4 21 4.89543 21 6V20C21 21.1046 20.1046 22 19 22H5C3.89543 22 3 21.1046 3 20V6C3 4.89543 3.89543 4 5 4Z\" stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n <span class=\"ms-2\">Every {{ logDetails?.schedule?.new?.schedule || '-' }}</span> \r\n <span *ngIf=\"logDetails?.schedule?.new?.configStartDate\">\r\n <span class=\"ms-2\">Starts from {{ formatDate(logDetails?.schedule?.new?.configStartDate) }} -</span>\r\n </span>\r\n <span *ngIf=\"logDetails?.schedule?.new?.configStartDate && logDetails?.schedule?.new?.configEndDate\" class=\"ms-2\"> Every -</span>\r\n <span class=\"ms-2\">{{ logDetails?.schedule?.new?.scheduleRepeatedDay || '-' }}</span> \r\n <span class=\"ms-2\">{{ logDetails?.schedule?.new?.scheduleRepeatedType || '-' }}</span> -\r\n <span class=\"ms-2\">{{ logDetails?.schedule?.new?.scheduleWeekDays || '-' }}</span> \r\n \r\n <span *ngIf=\"logDetails?.schedule?.new?.configEndDate\">\r\n <span class=\"ms-2\">- Ends on {{ formatDate(logDetails?.schedule?.new?.configEndDate) }}</span>\r\n </span>\r\n </span><br>\r\n <span class=\"newlineheight\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M12 6V12L16 14M22 12C22 17.5228 17.5228 22 12 22C6.47715 22 2 17.5228 2 12C2 6.47715 6.47715 2 12 2C17.5228 2 22 6.47715 22 12Z\" stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n <span class=\"ms-2\">{{ logDetails?.schedule?.new?.time || '-' }}</span>\r\n </span><br>\r\n </span>\r\n <span *ngIf=\"logDetails?.schedule?.new?.scheduleRepeatedType === 'daily'\">\r\n <span class=\"my-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M16 2V6M8 2V6M3 10H21M5 4H19C20.1046 4 21 4.89543 21 6V20C21 21.1046 20.1046 22 19 22H5C3.89543 22 3 21.1046 3 20V6C3 4.89543 3.89543 4 5 4Z\" stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n <span class=\"ms-2\">Repeats {{ logDetails?.schedule?.new?.schedule || '-' }} -</span> \r\n <span *ngIf=\"logDetails?.schedule?.new?.configStartDate\">\r\n <span class=\"ms-2\">Starts from {{ formatDate(logDetails?.schedule?.new?.configStartDate) }} -</span>\r\n </span>\r\n <span *ngIf=\"logDetails?.schedule?.new?.configStartDate && logDetails?.schedule?.new?.configEndDate\" class=\"ms-2\">- Every -</span>\r\n <span class=\"ms-2\">{{ logDetails?.schedule?.new?.scheduleRepeatedDay || '-' }}</span>\r\n <span class=\"ms-2\">{{ logDetails?.schedule?.new?.scheduleRepeatedType || '-' }}</span> \r\n <span *ngIf=\"logDetails?.schedule?.new?.configEndDate\">\r\n <span class=\"ms-2\">- Ends on {{ formatDate(logDetails?.schedule?.new?.configEndDate) }}</span>\r\n </span>\r\n </span><br>\r\n <span class=\"newlineheight\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M12 6V12L16 14M22 12C22 17.5228 17.5228 22 12 22C6.47715 22 2 17.5228 2 12C2 6.47715 6.47715 2 12 2C17.5228 2 22 6.47715 22 12Z\" stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n <span class=\"ms-2\">{{ logDetails?.schedule?.new?.time || '-' }}</span>\r\n </span><br>\r\n </span>\r\n <span *ngIf=\"logDetails?.schedule?.new?.scheduleRepeatedType === 'weekly'\">\r\n <span class=\"my-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M16 2V6M8 2V6M3 10H21M5 4H19C20.1046 4 21 4.89543 21 6V20C21 21.1046 20.1046 22 19 22H5C3.89543 22 3 21.1046 3 20V6C3 4.89543 3.89543 4 5 4Z\" stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n <span class=\"ms-2\">Repeats {{ logDetails?.schedule?.new?.schedule || '-' }} -</span>\r\n <span *ngIf=\"logDetails?.schedule?.new?.configStartDate\">\r\n <span class=\"ms-2\">Starts from {{ formatDate(logDetails?.schedule?.new?.configStartDate) }} -</span>\r\n </span>\r\n <span *ngIf=\"logDetails?.schedule?.new?.configStartDate && logDetails?.schedule?.new?.configEndDate\" class=\"ms-2\">- Every -</span>\r\n <span class=\"ms-2\">{{ logDetails?.schedule?.new?.scheduleRepeatedDay || '-' }}</span> \r\n <span class=\"ms-2\">{{ logDetails?.schedule?.new?.scheduleRepeatedType || '-' }}</span> -\r\n <span class=\"ms-2\">{{ logDetails?.schedule?.new?.scheduleWeekDays || '-' }}</span> \r\n \r\n <span *ngIf=\"logDetails?.schedule?.new?.configEndDate\">\r\n <span class=\"ms-2\">- Ends on {{ formatDate(logDetails?.schedule?.new?.configEndDate) }}</span>\r\n </span>\r\n </span><br>\r\n <span class=\"newlineheight\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M12 6V12L16 14M22 12C22 17.5228 17.5228 22 12 22C6.47715 22 2 17.5228 2 12C2 6.47715 6.47715 2 12 2C17.5228 2 22 6.47715 22 12Z\" stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n <span class=\"ms-2\">{{ logDetails?.schedule?.new?.time || '-' }}</span>\r\n </span><br>\r\n </span>\r\n <span *ngIf=\"logDetails?.schedule?.new?.scheduleRepeatedType === 'monthly'\">\r\n <span class=\"my-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M16 2V6M8 2V6M3 10H21M5 4H19C20.1046 4 21 4.89543 21 6V20C21 21.1046 20.1046 22 19 22H5C3.89543 22 3 21.1046 3 20V6C3 4.89543 3.89543 4 5 4Z\" stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n <span class=\"ms-2\">Repeats {{ logDetails?.schedule?.new?.schedule || '-' }} -</span>\r\n <span *ngIf=\"logDetails?.schedule?.new?.configStartDate\">\r\n <span class=\"ms-2\">Starts from {{ formatDate(logDetails?.schedule?.new?.configStartDate) }} -</span>\r\n </span>\r\n <span *ngIf=\"logDetails?.schedule?.new?.configStartDate && logDetails?.schedule?.new?.configEndDate\" class=\"ms-2\">- Every -</span>\r\n <span class=\"ms-2\">{{ logDetails?.schedule?.new?.scheduleRepeatedDay || '-' }}</span> \r\n <span class=\"ms-2\">{{ logDetails?.schedule?.new?.scheduleRepeatedType || '-' }}</span> -\r\n <span *ngIf=\"!(logDetails?.schedule?.new?.scheduleRepeatedMonthWeek?.length === 1)\">On the </span>\r\n\r\n <span *ngIf=\"logDetails?.schedule?.new?.scheduleRepeatedMonthWeek?.length === 1\">On day</span>\r\n \r\n <span *ngIf=\"logDetails?.schedule?.new?.scheduleRepeatedMonthWeek || logDetails?.schedule?.new?.specificDate\">\r\n <span *ngIf=\"scheduleWeeksArray().length; else showSpecificDate\">\r\n <span *ngFor=\"let week of scheduleWeeksArray(); let i = index\">\r\n {{ getWeekOrdinal(parseWeekNumber(week.split(' ')[0])) }} {{ week.split(' ')[1] }}\r\n <span *ngIf=\"i < scheduleWeeksArray().length - 1\">, </span>\r\n </span>\r\n </span>\r\n <ng-template #showSpecificDate>\r\n <span *ngIf=\"logDetails?.schedule?.new?.specificDate?.length > 0\">\r\n {{ logDetails?.schedule?.new?.specificDate.join(', ') }}\r\n </span>\r\n </ng-template>\r\n </span>\r\n <span *ngIf=\"logDetails?.schedule?.new?.configEndDate\">\r\n <span class=\"ms-2\">- Ends on {{ formatDate(logDetails?.schedule?.new?.configEndDate) }}</span>\r\n </span>\r\n </span><br>\r\n <span class=\"newlineheight\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M12 6V12L16 14M22 12C22 17.5228 17.5228 22 12 22C6.47715 22 2 17.5228 2 12C2 6.47715 6.47715 2 12 2C17.5228 2 22 6.47715 22 12Z\" stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n <span class=\"ms-2\">{{ logDetails?.schedule?.new?.time || '-' }}</span>\r\n </span><br>\r\n </span>\r\n <span *ngIf=\"logDetails?.schedule?.new?.scheduleRepeatedType === 'range'\">\r\n <span class=\"my-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M16 2V6M8 2V6M3 10H21M5 4H19C20.1046 4 21 4.89543 21 6V20C21 21.1046 20.1046 22 19 22H5C3.89543 22 3 21.1046 3 20V6C3 4.89543 3.89543 4 5 4Z\" stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n <span class=\"ms-2\">Custom Range</span> -\r\n <span *ngIf=\"logDetails?.schedule?.new?.configStartDate\">\r\n <span class=\"ms-2\">Starts from {{ formatDate(logDetails?.schedule?.new?.configStartDate) }} -</span>\r\n </span>\r\n <span *ngIf=\"logDetails?.schedule?.new?.specificDate\" class=\"ms-2\">- On the Specific Dates - </span>\r\n <!-- <span class=\"ms-2\">{{ logDetails?.schedule?.new?.scheduleRepeatedDay || '-' }}</span> -->\r\n <span class=\"ms-2\">{{ formatDateString(logDetails?.schedule?.new?.specificDate[0]) }}</span>\r\n <span *ngIf=\"logDetails?.schedule?.new?.configEndDate\">\r\n <span class=\"ms-2\">- Ends on {{ formatDate(logDetails?.schedule?.new?.configEndDate) }}</span>\r\n </span>\r\n </span><br>\r\n <span class=\"newlineheight\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M12 6V12L16 14M22 12C22 17.5228 17.5228 22 12 22C6.47715 22 2 17.5228 2 12C2 6.47715 6.47715 2 12 2C17.5228 2 22 6.47715 22 12Z\" stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n <span class=\"ms-2\">{{ logDetails?.schedule?.new?.time || '-' }}</span>\r\n </span><br>\r\n </span>\r\n </td>\r\n </tr>\r\n \r\n <tr>\r\n <td class=\"questionfieldtext col-2\">Response</td>\r\n <td class=\"configPreviousfieldtext col-5\">\r\n <ng-container *ngIf=\"logDetails?.response?.previous?.length; else noPreviousData\">\r\n <ul>\r\n <li *ngFor=\"let item of logDetails?.response?.previous\">{{ item }}</li>\r\n </ul>\r\n </ng-container>\r\n <ng-template #noPreviousData>-</ng-template>\r\n </td>\r\n <td class=\"changesfieldtext col-5\">\r\n <ng-container *ngIf=\"logDetails?.response?.new?.length; else noNewData\">\r\n <ul>\r\n <li *ngFor=\"let item of logDetails?.response?.new\">{{ item }}</li>\r\n </ul>\r\n </ng-container>\r\n <ng-template #noNewData>-</ng-template>\r\n </td>\r\n </tr>\r\n <tr>\r\n <td class=\"questionfieldtext col-2\">Owner</td>\r\n <td class=\"configPreviousfieldtext col-5\">\r\n <ng-container *ngIf=\"logDetails?.owner?.previous; else noPreviousData\">\r\n {{ logDetails?.owner?.previous || '-' }}\r\n </ng-container>\r\n <ng-template #noPreviousData>-</ng-template>\r\n </td>\r\n <td class=\"changesfieldtext col-5\">\r\n <ng-container *ngIf=\"logDetails?.owner?.new; else noNewData\">\r\n {{ logDetails?.owner?.new || '-' }}\r\n </ng-container>\r\n <ng-template #noNewData>-</ng-template>\r\n </td>\r\n </tr>\r\n \r\n <tr>\r\n <td class=\"questionfieldtext col-2\">Approver</td>\r\n <td class=\"configPreviousfieldtext col-5\">\r\n <ng-container *ngIf=\"logDetails?.approver?.previous; else noData\">\r\n {{ logDetails?.approver?.previous || '-' }}\r\n </ng-container>\r\n <ng-template #noData>-</ng-template>\r\n </td>\r\n <td class=\"changesfieldtext col-5\">\r\n <ng-container *ngIf=\"logDetails?.approver?.new; else noData\">\r\n {{ logDetails?.approver?.new || '-' }}\r\n </ng-container>\r\n <ng-template #noData>-</ng-template>\r\n </td>\r\n </tr>\r\n\r\n <tr *ngIf=\"receivedData === 'task'\">\r\n <td class=\"questionfieldtext col-2\">Priority</td>\r\n <td class=\"configPreviousfieldtext col-5\">\r\n <ng-container *ngIf=\"logDetails?.schedule?.previous.priority; else noData\">\r\n {{ logDetails?.schedule?.previous.priority || '-' }}\r\n </ng-container>\r\n <ng-template #noData>-</ng-template>\r\n </td>\r\n <td class=\"changesfieldtext col-5\">\r\n <ng-container *ngIf=\"logDetails?.schedule?.new?.priority; else noData\">\r\n {{ logDetails?.schedule?.new?.priority || '-' }}\r\n </ng-container>\r\n <ng-template #noData>-</ng-template>\r\n </td>\r\n </tr>\r\n \r\n \r\n <tr>\r\n <td class=\"questionfieldtext col-2\">Store Removed</td>\r\n <td class=\"configPreviousfieldtext col-5\"> - </td>\r\n <td class=\"changesfieldtext col-5\">\r\n <ng-container *ngIf=\"logDetails?.storeRemoved?.length; else noData\">\r\n <lib-store-user-dropdown [items]=\"logDetails?.storeRemoved\" title=\"Stores\"></lib-store-user-dropdown>\r\n </ng-container>\r\n <ng-template #noData>-</ng-template>\r\n </td>\r\n </tr>\r\n \r\n <tr>\r\n <td class=\"questionfieldtext col-2\">User Added</td>\r\n <td class=\"configPreviousfieldtext col-5\"> - </td>\r\n <td class=\"changesfieldtext col-5\">\r\n <ng-container *ngIf=\"logDetails?.userAdded?.length; else noData\">\r\n <lib-store-user-dropdown [items]=\"logDetails?.userAdded\" title=\"Users\"></lib-store-user-dropdown>\r\n </ng-container>\r\n <ng-template #noData>-</ng-template>\r\n </td>\r\n </tr>\r\n \r\n <tr>\r\n <td class=\"questionfieldtext col-2\">User Removed</td>\r\n <td class=\"configPreviousfieldtext col-5\"> - </td>\r\n <td class=\"changesfieldtext col-5\">\r\n <ng-container *ngIf=\"logDetails?.userRemoved?.length; else noData\">\r\n <lib-store-user-dropdown [items]=\"logDetails?.userRemoved\" title=\"Users\"></lib-store-user-dropdown>\r\n </ng-container>\r\n <ng-template #noData>-</ng-template>\r\n </td>\r\n </tr>\r\n \r\n </tbody>\r\n </table>\r\n </div>\r\n </div>\r\n<!-- Configuration Updates end -->\r\n\r\n </div>\r\n</div>\r\n\r\n", styles: [".logheader{display:flex;padding:16px;justify-content:space-between;align-items:center;flex:1 0 0;border-radius:6px;opacity:.8;background:var(--Primary-100, #DAF1FF)}.logheadertext{color:var(--Primary-800, #008EDF);text-align:center;font-family:Inter;font-size:18px;font-style:normal;font-weight:500;line-height:28px}.questext{color:var(--Gray-900, #101828);font-family:Inter;font-size:18px;font-style:normal;font-weight:600;line-height:28px}.quessubtext{color:var(--Gray-700, #344054);font-family:Inter;font-size:18px;font-style:normal;font-weight:500;line-height:28px}.checklistframe{align-items:flex-start;align-self:stretch;border-radius:16px!important;border:1px solid var(--Gray-100, #F2F4F7)}.table th,.table td{vertical-align:middle;text-align:start}.image-grid{display:flex;flex-wrap:wrap;justify-content:center;gap:10px}.image-grid img{width:100px;height:100px;object-fit:cover;border-radius:5px}.questionfieldtext{color:var(--Gray-900, #101828)!important;font-family:Inter;font-size:18px!important;font-weight:600!important;line-height:28px;border:1px solid var(--Gray-100, #F2F4F7)!important;text-align:start!important;width:150px}.frametext{color:var(--Gray-500, #667085)!important;font-family:Inter;font-size:16px!important;font-style:normal;font-weight:500!important;line-height:24px;background:var(--Gray-200, #EAECF0)!important;text-align:start!important}.frametext1{color:var(--Gray-500, #667085)!important;font-family:Inter;font-size:16px!important;font-style:normal;font-weight:500!important;line-height:24px;background:var(--Gray-100, #F2F4F7)!important}.frametextprimary{background:var(--Primary-50, #EAF8FF)!important;color:var(--Primary-600, #00A3FF)!important;font-family:Inter;font-size:16px!important;font-style:normal;font-weight:500!important;line-height:24px}.Previousfieldtext{color:var(--Gray-500, #667085)!important;font-family:Inter;font-size:16px!important;font-style:normal;font-weight:500!important;line-height:24px;background:var(--Gray-100, #F2F4F7)!important;border:1px solid var(--Gray-100, #F2F4F7)!important;text-align:start!important}.changesfieldtext{color:var(--Black, #101828)!important;font-family:Inter;font-size:16px!important;font-style:normal;font-weight:500!important;line-height:24px;border:1px solid var(--Gray-100, #F2F4F7)!important;text-align:start!important}.changesfieldimg{border-radius:8px;border:1px solid var(--Gray-100, #F2F4F7)}.checklistscroll{overflow-y:scroll;min-height:250px;max-height:600px}.configPreviousfieldtext{color:var(--Gray-500, #667085)!important;font-family:Inter;font-size:16px!important;font-style:normal;font-weight:500!important;line-height:24px;background:var(--Gray-100, #F2F4F7)!important;border:1px solid var(--Gray-100, #F2F4F7)!important;text-align:start!important}.newlineheight,.previouslineheight{line-height:50px!important}.w-50{width:50px!important}.table-responsive{width:100%;display:flex;justify-content:center}table{width:100%;border-collapse:collapse;table-layout:fixed}th,td{text-align:left;padding:12px;vertical-align:middle;word-wrap:break-word}th{background-color:#f4f4f4;font-weight:700}.frametext1,.questionfieldtext{width:22%}.frametext,.configPreviousfieldtext,.frametextprimary,.changesfieldtext{width:40%}@media (max-width: 1024px){th,td{font-size:14px;padding:10px}}@media (max-width: 768px){table{display:block}thead{display:none}tbody tr{display:flex;flex-direction:column;margin-bottom:10px}td{display:flex;justify-content:space-between;padding:8px;font-size:14px}}\n"] }]
|
|
114
|
+
args: [{ selector: 'lib-view-action', template: "<div>\r\n <div class=\"card-header\">\r\n <div class=\"logheader d-flex justify-content-between W-100\">\r\n <span *ngIf=\"actionType === 'edited'\" class=\"card-header logheadertext\">Checklist Updates</span>\r\n <span *ngIf=\"actionType === 'updated' || actionType === 'draft'\" class=\"card-header logheadertext\">Configuration Updates</span>\r\n <div class=\"cursor-pointer\" (click)=\"closePopup()\"><span><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"32\" height=\"32\" viewBox=\"0 0 32 32\" fill=\"none\">\r\n <path d=\"M24 8L8 24M8 8L24 24\" stroke=\"#008EDF\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></span></div>\r\n </div>\r\n </div>\r\n <!-- edited -->\r\n <div class=\"card-body checklistscroll p-8\">\r\n <div *ngIf=\"actionType === 'edited'\">\r\n <!-- Checklist Name -->\r\n <!-- *ngIf=\"updatedChecklistName\" -->\r\n <div class=\"checklistframe my-6\" *ngIf=\"updatedChecklistName?.previous || updatedChecklistName?.new\">\r\n <div class=\"table-responsive\">\r\n <table>\r\n <thead>\r\n <tr class=\"frametext\">\r\n <th class=\"frametext1 col-2\">Fields</th>\r\n <th class=\"frametext col-5\">Previous</th>\r\n <th class=\"frametextprimary col-5\">Updated</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr>\r\n <td class=\"questionfieldtext col-2\">Checklist Name</td>\r\n <td class=\"Previousfieldtext col-5\">{{ updatedChecklistName?.previous || '-' }}</td>\r\n <td class=\"changesfieldtext col-5\">{{ updatedChecklistName?.new || '-' }}</td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n </div>\r\n <!-- Checklist Name End -->\r\n <!-- <div class=\"borderline\"></div> -->\r\n <!-- Checklist Description Start -->\r\n <div class=\"checklistframe my-6\" *ngIf=\"updatedChecklistDescription?.previous || updatedChecklistDescription?.new\">\r\n <!-- <h4 class=\"text-lg font-semibold\">Checklist Description Updated</h4> -->\r\n <div class=\"table-responsive\">\r\n <table>\r\n <thead>\r\n <tr class=\"frametext\">\r\n <th class=\"frametext1 col-2\">Fields</th>\r\n <th class=\"frametext col-5\">Previous</th>\r\n <th class=\"frametextprimary col-5\">Updated</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr>\r\n <td class=\"questionfieldtext col-2\">Checklist Description</td>\r\n <td class=\"Previousfieldtext col-5\">{{ updatedChecklistDescription?.previous || '-' }}</td>\r\n <td class=\"changesfieldtext col-5\">{{ updatedChecklistDescription?.new || '-' }}</td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n </div>\r\n \r\n <!-- Checklist Description End -->\r\n\r\n <!-- Section Name Start -->\r\n <div class=\"checklistframe my-6\" *ngIf=\"updatedSectionNames.length > 0\">\r\n <!-- <h4 class=\"text-lg font-semibold\">Section Names Updated</h4> -->\r\n <div class=\"table-responsive\">\r\n <table *ngFor=\"let section of updatedSectionNames\">\r\n <thead>\r\n <tr class=\"frametext\">\r\n <th class=\"frametext1 col-2\">Fields</th>\r\n <th class=\"frametext col-5\">Previous</th>\r\n <th class=\"frametextprimary col-5\">Updated</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr >\r\n <td class=\"questionfieldtext col-2\">Section Name</td>\r\n <td class=\"Previousfieldtext col-5\">{{ section?.previous || '-' }}</td>\r\n <td class=\"changesfieldtext col-5\">{{ section?.new || '-' }}</td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n </div>\r\n <!-- Section Name End -->\r\n\r\n <!-- Question Added varient start -->\r\n <div *ngIf=\"addedQuestions.length > 0\">\r\n <div *ngFor=\"let section of addedQuestions\">\r\n <div class=\"questext\">Section Name: <span class=\"quessubtext\">{{ section?.sectionName || '-' }}</span></div>\r\n <div *ngFor=\"let question of section.questions; let i = index\" >\r\n <div class=\"questext mt-2\">Question No : <span class=\"quessubtext\">{{ question?.qno || '-' }}</span></div>\r\n <div class=\"checklistframe my-6\">\r\n <div class=\"table-responsive\">\r\n <table >\r\n <thead>\r\n <tr class=\"frametext\">\r\n <th class=\"frametext1 col-2\">Fields</th>\r\n <th class=\"frametext col-5\">Previous</th>\r\n <th class=\"frametextprimary col-5\">Updated</th>\r\n </tr>\r\n </thead>\r\n <tbody >\r\n <tr>\r\n <td class=\"questionfieldtext col-2\">Question Added</td>\r\n <td class=\"Previousfieldtext col-5\"> - </td>\r\n <td class=\"changesfieldtext col-5\">{{ question?.qname || '-' }}</td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- Question Added varient end -->\r\n\r\n <!-- Question Deleted varient start -->\r\n <div *ngIf=\"deletedQuestions.length > 0\">\r\n <div *ngFor=\"let section of deletedQuestions\">\r\n <div class=\"questext\">Section Name: <span class=\"quessubtext\">{{ section.sectionName }}</span></div>\r\n <div *ngFor=\"let question of section.questions; let i = index\" >\r\n <div class=\"questext mt-2\">Question No : <span class=\"quessubtext\">{{ question?.qno || '-' }}</span></div>\r\n <div class=\"checklistframe my-6\">\r\n <div class=\"table-responsive\">\r\n <table >\r\n <thead>\r\n <tr class=\"frametext\">\r\n <th class=\"frametext1 col-2\">Fields</th>\r\n <th class=\"frametext col-5\">Previous</th>\r\n <th class=\"frametextprimary col-5\">Updated</th>\r\n </tr>\r\n </thead>\r\n <tbody >\r\n <tr>\r\n <td class=\"questionfieldtext col-2\">Question Deleted</td>\r\n <td class=\"Previousfieldtext col-5\"> - </td>\r\n <td class=\"changesfieldtext col-5\">{{ question?.qname || '-' }}</td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n \r\n <!-- Question Deleted varient end -->\r\n\r\n <!-- Question Edited varient start -->\r\n <div *ngIf=\"editedQuestions.length > 0\">\r\n <div *ngFor=\"let section of editedQuestions\">\r\n <div class=\"questext\">Section Name: <span class=\"quessubtext\">{{ section.sectionName || '-' }}</span></div>\r\n \r\n <div *ngFor=\"let question of section.questions\">\r\n <div class=\"questext mt-2\">Question No : <span class=\"quessubtext\">{{ question?.previous?.qno || question?.new?.qno || '-' }}</span></div>\r\n \r\n <div class=\"checklistframe my-6\">\r\n <div class=\"table-responsive\">\r\n <table>\r\n <thead>\r\n <tr class=\"frametext\">\r\n <th class=\"frametext1 col-2\">Fields</th>\r\n <th class=\"frametext col-5 previous-field\">Previous</th>\r\n <th class=\"frametextprimary col-5 updated-field\">Updated</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <!-- Question Name -->\r\n <tr>\r\n <td class=\"questionfieldtext col-2\">Question Edited</td>\r\n <td class=\"Previousfieldtext col-5\">{{ question.previous?.qname || '-' }}</td>\r\n <td class=\"changesfieldtext col-5\">{{ question.new?.qname || '-' }}</td>\r\n </tr>\r\n \r\n <!-- Answer Type -->\r\n <tr>\r\n <td class=\"questionfieldtext col-2\">Type</td>\r\n <td class=\"Previousfieldtext col-5\">{{ getAnswerTypeLabel(question.previous?.answerType) || '-' }}</td>\r\n <td class=\"changesfieldtext col-5\">{{ getAnswerTypeLabel(question.new?.answerType) || '-' }}\r\n </td>\r\n </tr>\r\n \r\n <!-- Reference Image -->\r\n <tr>\r\n <td class=\"questionfieldtext col-2\">Reference Image</td>\r\n <td class=\"Previousfieldtext col-5\">-</td>\r\n \r\n <td class=\"changesfieldtext col-5\"> {{\r\n question.previous?.questionReferenceImage && !question.new?.questionReferenceImage ? 'Deleted' :\r\n !question.previous?.questionReferenceImage && question.new?.questionReferenceImage ? 'Added' :\r\n question.previous?.questionReferenceImage !== question.new?.questionReferenceImage ? 'Updated' :\r\n '-'\r\n }}</td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- Question Edited varient end -->\r\n </div>\r\n\r\n <!-- updated -->\r\n <!-- Configuration Updates start -->\r\n <div *ngIf=\"actionType === 'updated' || actionType === 'draft'\" class=\"checklistframe my-6\">\r\n <div class=\"table-responsive\">\r\n <table>\r\n <thead>\r\n <tr class=\"frametext\">\r\n <th class=\"frametext1 col-2\">Fields</th>\r\n <th class=\"frametext col-5 w-50\">Previous</th>\r\n <th class=\"frametextprimary col-5 w-50\">Updated</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr>\r\n <td class=\"questionfieldtext col-2\">Store Added</td>\r\n <td class=\"configPreviousfieldtext col-5 w-50\"> - </td>\r\n <td class=\"changesfieldtext col-5 w-50\">\r\n <ng-container *ngIf=\"logDetails?.storeAdded?.length; else noData\">\r\n <lib-store-user-dropdown [items]=\"logDetails.storeAdded\" title=\"Stores\"></lib-store-user-dropdown>\r\n </ng-container>\r\n <ng-template #noData>-</ng-template>\r\n </td>\r\n </tr>\r\n \r\n <!-- Schedule Update -->\r\n <tr>\r\n <td class=\"questionfieldtext col-2\">Schedule</td>\r\n <td class=\"configPreviousfieldtext col-5\">\r\n <span *ngIf=\"receivedData === 'checklist' && logDetails?.schedule?.previous?.scheduleRepeatedType === 'onetime'\">\r\n <span class=\"my-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M16 2V6M8 2V6M3 10H21M5 4H19C20.1046 4 21 4.89543 21 6V20C21 21.1046 20.1046 22 19 22H5C3.89543 22 3 21.1046 3 20V6C3 4.89543 3.89543 4 5 4Z\" stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n <span class=\"ms-2 mt-2\">\r\n <span *ngIf=\"logDetails?.schedule?.previous?.scheduleRepeatedType === 'onetime'\">Once on</span>\r\n </span> \r\n <span>\r\n <span class=\"ms-1\">\r\n {{ logDetails?.schedule?.previous?.scheduleDateString ? formatDate(logDetails.schedule.previous.scheduleDateString) : '-' }}</span>\r\n </span>\r\n </span><br>\r\n <span class=\"previouslineheight\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M12 6V12L16 14M22 12C22 17.5228 17.5228 22 12 22C6.47715 22 2 17.5228 2 12C2 6.47715 6.47715 2 12 2C17.5228 2 22 6.47715 22 12Z\" stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n <span class=\"ms-2\">{{ logDetails?.schedule?.previous?.time || '-' }}</span>\r\n </span><br>\r\n </span>\r\n <span *ngIf=\"receivedData === 'task' && logDetails?.schedule?.previous?.scheduleDateString\">\r\n <span class=\"my-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M16 2V6M8 2V6M3 10H21M5 4H19C20.1046 4 21 4.89543 21 6V20C21 21.1046 20.1046 22 19 22H5C3.89543 22 3 21.1046 3 20V6C3 4.89543 3.89543 4 5 4Z\"\r\n stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n <span class=\"ms-2 mt-2\">Due Date</span> \r\n <span class=\"ms-1\">\r\n {{ logDetails?.schedule?.previous?.scheduleDateString ? formatDate(logDetails.schedule.previous.scheduleDateString) : '-' }}\r\n </span>\r\n </span><br>\r\n \r\n <span class=\"previouslineheight\" *ngIf=\"logDetails?.schedule?.previous?.time\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M12 6V12L16 14M22 12C22 17.5228 17.5228 22 12 22C6.47715 22 2 17.5228 2 12C2 6.47715 6.47715 2 12 2C17.5228 2 22 6.47715 22 12Z\"\r\n stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n <span class=\"ms-2\">{{ logDetails?.schedule?.previous?.time || '-' }}</span>\r\n </span>\r\n </span>\r\n <span *ngIf=\"logDetails?.schedule?.previous?.scheduleRepeatedType === 'weekday'\">\r\n <span class=\"my-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M16 2V6M8 2V6M3 10H21M5 4H19C20.1046 4 21 4.89543 21 6V20C21 21.1046 20.1046 22 19 22H5C3.89543 22 3 21.1046 3 20V6C3 4.89543 3.89543 4 5 4Z\" stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n <span class=\"ms-2\">Every {{ logDetails?.schedule?.previous?.schedule || '-' }}</span> \r\n <span *ngIf=\"logDetails?.schedule?.previous?.configStartDate\">\r\n <span class=\"ms-2\">Starts from {{ formatDate(logDetails?.schedule?.previous?.configStartDate) }} -</span>\r\n </span>\r\n <span *ngIf=\"logDetails?.schedule?.previous?.configStartDate && logDetails?.schedule?.previous?.configEndDate\" class=\"ms-2\">- Every -</span>\r\n <span class=\"ms-2\">{{ logDetails?.schedule?.previous?.scheduleRepeatedDay || '-' }}</span> \r\n <span class=\"ms-2\">{{ logDetails?.schedule?.previous?.scheduleRepeatedType || '-' }}</span> -\r\n <span class=\"ms-2\">{{ logDetails?.schedule?.previous?.scheduleWeekDays || '-' }}</span> \r\n\r\n <span *ngIf=\"logDetails?.schedule?.previous?.configEndDate\">\r\n <span class=\"ms-2\">- Ends on {{ formatDate(logDetails?.schedule?.previous?.configEndDate) }}</span>\r\n </span>\r\n </span><br>\r\n <span class=\"previouslineheight\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M12 6V12L16 14M22 12C22 17.5228 17.5228 22 12 22C6.47715 22 2 17.5228 2 12C2 6.47715 6.47715 2 12 2C17.5228 2 22 6.47715 22 12Z\" stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n <span class=\"ms-2\">{{ logDetails?.schedule?.previous?.time || '-' }}</span>\r\n </span><br>\r\n </span>\r\n <span *ngIf=\"logDetails?.schedule?.previous?.scheduleRepeatedType === 'daily'\">\r\n <span class=\"my-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M16 2V6M8 2V6M3 10H21M5 4H19C20.1046 4 21 4.89543 21 6V20C21 21.1046 20.1046 22 19 22H5C3.89543 22 3 21.1046 3 20V6C3 4.89543 3.89543 4 5 4Z\" stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n <span class=\"ms-2\">Repeats {{ logDetails?.schedule?.previous?.schedule || '-' }} -</span>\r\n <span *ngIf=\"logDetails?.schedule?.previous?.configStartDate\">\r\n <span class=\"ms-2\">Starts from {{ formatDate(logDetails?.schedule?.previous?.configStartDate) }} -</span>\r\n </span>\r\n <span *ngIf=\"logDetails?.schedule?.previous?.configStartDate && logDetails?.schedule?.previous?.configEndDate\" class=\"ms-2\">- Every -</span>\r\n <span class=\"ms-2\">{{ logDetails?.schedule?.previous?.scheduleRepeatedDay || '-' }}</span>\r\n <span class=\"ms-2\">{{ logDetails?.schedule?.previous?.scheduleRepeatedType || '-' }}</span> \r\n <span *ngIf=\"logDetails?.schedule?.previous?.configEndDate\">\r\n <span class=\"ms-2\">- Ends on {{ formatDate(logDetails?.schedule?.previous?.configEndDate) }}</span>\r\n </span>\r\n </span><br>\r\n <span class=\"previouslineheight\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M12 6V12L16 14M22 12C22 17.5228 17.5228 22 12 22C6.47715 22 2 17.5228 2 12C2 6.47715 6.47715 2 12 2C17.5228 2 22 6.47715 22 12Z\" stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n <span class=\"ms-2\">{{ logDetails?.schedule?.previous?.time || '-' }}</span>\r\n </span><br>\r\n </span>\r\n <span *ngIf=\"logDetails?.schedule?.previous?.scheduleRepeatedType === 'weekly'\">\r\n <span class=\"my-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M16 2V6M8 2V6M3 10H21M5 4H19C20.1046 4 21 4.89543 21 6V20C21 21.1046 20.1046 22 19 22H5C3.89543 22 3 21.1046 3 20V6C3 4.89543 3.89543 4 5 4Z\" stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n <span class=\"ms-2\">Repeats {{ logDetails?.schedule?.previous?.schedule || '-' }} -</span> \r\n <span *ngIf=\"logDetails?.schedule?.previous?.configStartDate\">\r\n <span class=\"ms-2\">Starts from {{ formatDate(logDetails?.schedule?.previous?.configStartDate) }} -</span>\r\n </span>\r\n <span *ngIf=\"logDetails?.schedule?.previous?.configStartDate && logDetails?.schedule?.previous?.configEndDate\" class=\"ms-2\">- Every -</span>\r\n <span class=\"ms-2\">{{ logDetails?.schedule?.previous?.scheduleRepeatedDay || '-' }}</span> \r\n <span class=\"ms-2\">{{ logDetails?.schedule?.previous?.scheduleRepeatedType || '-' }}</span> -\r\n <span class=\"ms-2\">{{ logDetails?.schedule?.previous?.scheduleWeekDays || '-' }}</span> \r\n\r\n <span *ngIf=\"logDetails?.schedule?.previous?.configEndDate\">\r\n <span class=\"ms-2\">- Ends on {{ formatDate(logDetails?.schedule?.previous?.configEndDate) }}</span>\r\n </span>\r\n </span><br>\r\n <span class=\"previouslineheight\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M12 6V12L16 14M22 12C22 17.5228 17.5228 22 12 22C6.47715 22 2 17.5228 2 12C2 6.47715 6.47715 2 12 2C17.5228 2 22 6.47715 22 12Z\" stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n <span class=\"ms-2\">{{ logDetails?.schedule?.previous?.time || '-' }}</span>\r\n </span><br>\r\n </span>\r\n <span *ngIf=\"logDetails?.schedule?.previous?.scheduleRepeatedType === 'monthly'\">\r\n <span class=\"my-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M16 2V6M8 2V6M3 10H21M5 4H19C20.1046 4 21 4.89543 21 6V20C21 21.1046 20.1046 22 19 22H5C3.89543 22 3 21.1046 3 20V6C3 4.89543 3.89543 4 5 4Z\" stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n <span class=\"ms-2\">Repeats {{ logDetails?.schedule?.previous?.schedule || '-' }} -</span>\r\n <span *ngIf=\"logDetails?.schedule?.previous?.configStartDate\">\r\n <span class=\"ms-2\">Starts from {{ formatDate(logDetails?.schedule?.previous?.configStartDate) }} -</span>\r\n </span>\r\n <span *ngIf=\"logDetails?.schedule?.previous?.configStartDate && logDetails?.schedule?.previous?.configEndDate\" class=\"ms-2\">- Every -</span>\r\n <span class=\"ms-2\">{{ logDetails?.schedule?.previous?.scheduleRepeatedDay || '-' }}</span> \r\n <span class=\"ms-2\">{{ logDetails?.schedule?.previous?.scheduleRepeatedType || '-' }}</span> -\r\n <span *ngIf=\"!(logDetails?.schedule?.previous?.scheduleRepeatedMonthWeek?.length === 1)\">On the</span>\r\n\r\n <span *ngIf=\"logDetails?.schedule?.previous?.scheduleRepeatedMonthWeek?.length === 1\">On day</span>\r\n \r\n <span *ngIf=\"logDetails?.schedule?.previous?.scheduleRepeatedMonthWeek || logDetails?.schedule?.previous?.specificDate\">\r\n <span *ngIf=\"scheduleWeeksArray().length; else showSpecificDate\">\r\n <span *ngFor=\"let week of scheduleWeeksArray(); let i = index\">\r\n {{ getWeekOrdinal(parseWeekNumber(week.split(' ')[0])) }} {{ week.split(' ')[1] }}\r\n <span *ngIf=\"i < scheduleWeeksArray().length - 1\">, </span>\r\n </span>\r\n </span>\r\n <ng-template #showSpecificDate>\r\n <span *ngIf=\"logDetails?.schedule?.previous?.specificDate?.length > 0\">\r\n {{ logDetails?.schedule?.previous?.specificDate.join(', ') }}\r\n </span>\r\n </ng-template>\r\n </span>\r\n\r\n <span *ngIf=\"logDetails?.schedule?.previous?.configEndDate\">\r\n <span class=\"ms-2\">- Ends on {{ formatDate(logDetails?.schedule?.previous?.configEndDate) }}</span>\r\n </span>\r\n </span><br>\r\n <span class=\"previouslineheight\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M12 6V12L16 14M22 12C22 17.5228 17.5228 22 12 22C6.47715 22 2 17.5228 2 12C2 6.47715 6.47715 2 12 2C17.5228 2 22 6.47715 22 12Z\" stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n <span class=\"ms-2\">{{ logDetails?.schedule?.previous?.time || '-' }}</span>\r\n </span><br>\r\n </span>\r\n <span *ngIf=\"logDetails?.schedule?.previous?.scheduleRepeatedType === 'range'\">\r\n <span class=\"my-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M16 2V6M8 2V6M3 10H21M5 4H19C20.1046 4 21 4.89543 21 6V20C21 21.1046 20.1046 22 19 22H5C3.89543 22 3 21.1046 3 20V6C3 4.89543 3.89543 4 5 4Z\" stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n <span class=\"ms-2\">Custom Range</span> -\r\n <span *ngIf=\"logDetails?.schedule?.previous?.configStartDate\">\r\n <span class=\"ms-2\">Starts from {{ formatDate(logDetails?.schedule?.previous?.configStartDate) }} -</span>\r\n </span>\r\n <span *ngIf=\"logDetails?.schedule?.new?.specificDate\" class=\"ms-2\">- On the Specific Dates - </span>\r\n <!-- <span class=\"ms-2\">{{ logDetails?.schedule?.previous?.scheduleRepeatedDay || '-' }}</span> -->\r\n <span class=\"ms-2\">{{ formatDateString(logDetails?.schedule?.previous?.specificDate[0]) }}</span>\r\n <span *ngIf=\"logDetails?.schedule?.previous?.configEndDate\">\r\n <span class=\"ms-2\">- Ends on {{ formatDate(logDetails?.schedule?.previous?.configEndDate) }}</span>\r\n </span>\r\n </span><br>\r\n <span class=\"previouslineheight\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M12 6V12L16 14M22 12C22 17.5228 17.5228 22 12 22C6.47715 22 2 17.5228 2 12C2 6.47715 6.47715 2 12 2C17.5228 2 22 6.47715 22 12Z\" stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n <span class=\"ms-2\">{{ logDetails?.schedule?.previous?.time || '-' }}</span>\r\n </span><br>\r\n </span>\r\n </td>\r\n\r\n <!-- <td class=\"configPreviousfieldtext col-5\">\r\n <span class=\"my-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M16 2V6M8 2V6M3 10H21M5 4H19C20.1046 4 21 4.89543 21 6V20C21 21.1046 20.1046 22 19 22H5C3.89543 22 3 21.1046 3 20V6C3 4.89543 3.89543 4 5 4Z\" stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n <span class=\"ms-2\">{{ logDetails?.schedule?.previous?.schedule || 'N/A' }} on</span> \r\n <span class=\"ms-2\">{{ logDetails?.schedule?.previous?.repeats || 'N/A' }}</span> \r\n <span *ngIf=\"logDetails?.schedule?.previous?.scheduleStartTime_iso\">\r\n <span class=\"ms-2\">- Starts from: {{ formatDate(logDetails?.schedule?.previous?.scheduleStartTime_iso) }}</span>\r\n </span>\r\n <span *ngIf=\"logDetails?.schedule?.previous?.occurs?.length > 0\">\r\n <span class=\"ms-2\">{{ logDetails?.schedule?.previous?.occurs?.join(', ') || 'N/A' }}</span>\r\n </span>\r\n </span><br>\r\n <span>\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M12 6V12L16 14M22 12C22 17.5228 17.5228 22 12 22C6.47715 22 2 17.5228 2 12C2 6.47715 6.47715 2 12 2C17.5228 2 22 6.47715 22 12Z\" stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n <span class=\"ms-2\">{{ logDetails?.schedule?.previous?.time || 'N/A' }}</span>\r\n </span><br>\r\n \r\n </td> -->\r\n\r\n <td class=\"changesfieldtext col-5\">\r\n <span *ngIf=\"logDetails?.schedule?.new?.scheduleRepeatedType === 'onetime'\">\r\n <span class=\"my-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M16 2V6M8 2V6M3 10H21M5 4H19C20.1046 4 21 4.89543 21 6V20C21 21.1046 20.1046 22 19 22H5C3.89543 22 3 21.1046 3 20V6C3 4.89543 3.89543 4 5 4Z\" stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n <span class=\"ms-2 mt-2\">\r\n <span *ngIf=\"logDetails?.schedule?.new?.scheduleRepeatedType === 'onetime'\">Once on</span>\r\n </span> \r\n <span>\r\n <span class=\"ms-1\"> {{ logDetails?.schedule?.new?.scheduleDateString ? formatDate(logDetails.schedule.new.scheduleDateString) : '-' }}</span>\r\n </span>\r\n </span><br>\r\n <span class=\"newlineheight\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M12 6V12L16 14M22 12C22 17.5228 17.5228 22 12 22C6.47715 22 2 17.5228 2 12C2 6.47715 6.47715 2 12 2C17.5228 2 22 6.47715 22 12Z\" stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n <span class=\"ms-2\">{{ logDetails?.schedule?.new?.time || '-' }}</span>\r\n </span><br>\r\n </span>\r\n <span *ngIf=\"receivedData === 'task' && logDetails?.schedule?.new?.scheduleDateString\">\r\n <span class=\"my-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M16 2V6M8 2V6M3 10H21M5 4H19C20.1046 4 21 4.89543 21 6V20C21 21.1046 20.1046 22 19 22H5C3.89543 22 3 21.1046 3 20V6C3 4.89543 3.89543 4 5 4Z\"\r\n stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n <span class=\"ms-2 mt-2\">Due Date</span> \r\n <span class=\"ms-1\">\r\n {{ logDetails?.schedule?.new?.scheduleDateString ? formatDate(logDetails.schedule.new.scheduleDateString) : '-' }}\r\n </span>\r\n </span><br>\r\n \r\n <span class=\"previouslineheight\" *ngIf=\"logDetails?.schedule?.new?.time\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M12 6V12L16 14M22 12C22 17.5228 17.5228 22 12 22C6.47715 22 2 17.5228 2 12C2 6.47715 6.47715 2 12 2C17.5228 2 22 6.47715 22 12Z\"\r\n stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n <span class=\"ms-2\">{{ logDetails?.schedule?.new?.time || '-' }}</span>\r\n </span>\r\n </span>\r\n <span *ngIf=\"logDetails?.schedule?.new?.scheduleRepeatedType === 'weekday'\">\r\n <span class=\"my-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M16 2V6M8 2V6M3 10H21M5 4H19C20.1046 4 21 4.89543 21 6V20C21 21.1046 20.1046 22 19 22H5C3.89543 22 3 21.1046 3 20V6C3 4.89543 3.89543 4 5 4Z\" stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n <span class=\"ms-2\">Every {{ logDetails?.schedule?.new?.schedule || '-' }}</span> \r\n <span *ngIf=\"logDetails?.schedule?.new?.configStartDate\">\r\n <span class=\"ms-2\">Starts from {{ formatDate(logDetails?.schedule?.new?.configStartDate) }} -</span>\r\n </span>\r\n <span *ngIf=\"logDetails?.schedule?.new?.configStartDate && logDetails?.schedule?.new?.configEndDate\" class=\"ms-2\"> Every -</span>\r\n <span class=\"ms-2\">{{ logDetails?.schedule?.new?.scheduleRepeatedDay || '-' }}</span> \r\n <span class=\"ms-2\">{{ logDetails?.schedule?.new?.scheduleRepeatedType || '-' }}</span> -\r\n <span class=\"ms-2\">{{ logDetails?.schedule?.new?.scheduleWeekDays || '-' }}</span> \r\n \r\n <span *ngIf=\"logDetails?.schedule?.new?.configEndDate\">\r\n <span class=\"ms-2\">- Ends on {{ formatDate(logDetails?.schedule?.new?.configEndDate) }}</span>\r\n </span>\r\n </span><br>\r\n <span class=\"newlineheight\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M12 6V12L16 14M22 12C22 17.5228 17.5228 22 12 22C6.47715 22 2 17.5228 2 12C2 6.47715 6.47715 2 12 2C17.5228 2 22 6.47715 22 12Z\" stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n <span class=\"ms-2\">{{ logDetails?.schedule?.new?.time || '-' }}</span>\r\n </span><br>\r\n </span>\r\n <span *ngIf=\"logDetails?.schedule?.new?.scheduleRepeatedType === 'daily'\">\r\n <span class=\"my-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M16 2V6M8 2V6M3 10H21M5 4H19C20.1046 4 21 4.89543 21 6V20C21 21.1046 20.1046 22 19 22H5C3.89543 22 3 21.1046 3 20V6C3 4.89543 3.89543 4 5 4Z\" stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n <span class=\"ms-2\">Repeats {{ logDetails?.schedule?.new?.schedule || '-' }} -</span> \r\n <span *ngIf=\"logDetails?.schedule?.new?.configStartDate\">\r\n <span class=\"ms-2\">Starts from {{ formatDate(logDetails?.schedule?.new?.configStartDate) }} -</span>\r\n </span>\r\n <span *ngIf=\"logDetails?.schedule?.new?.configStartDate && logDetails?.schedule?.new?.configEndDate\" class=\"ms-2\">- Every -</span>\r\n <span class=\"ms-2\">{{ logDetails?.schedule?.new?.scheduleRepeatedDay || '-' }}</span>\r\n <span class=\"ms-2\">{{ logDetails?.schedule?.new?.scheduleRepeatedType || '-' }}</span> \r\n <span *ngIf=\"logDetails?.schedule?.new?.configEndDate\">\r\n <span class=\"ms-2\">- Ends on {{ formatDate(logDetails?.schedule?.new?.configEndDate) }}</span>\r\n </span>\r\n </span><br>\r\n <span class=\"newlineheight\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M12 6V12L16 14M22 12C22 17.5228 17.5228 22 12 22C6.47715 22 2 17.5228 2 12C2 6.47715 6.47715 2 12 2C17.5228 2 22 6.47715 22 12Z\" stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n <span class=\"ms-2\">{{ logDetails?.schedule?.new?.time || '-' }}</span>\r\n </span><br>\r\n </span>\r\n <span *ngIf=\"logDetails?.schedule?.new?.scheduleRepeatedType === 'weekly'\">\r\n <span class=\"my-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M16 2V6M8 2V6M3 10H21M5 4H19C20.1046 4 21 4.89543 21 6V20C21 21.1046 20.1046 22 19 22H5C3.89543 22 3 21.1046 3 20V6C3 4.89543 3.89543 4 5 4Z\" stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n <span class=\"ms-2\">Repeats {{ logDetails?.schedule?.new?.schedule || '-' }} -</span>\r\n <span *ngIf=\"logDetails?.schedule?.new?.configStartDate\">\r\n <span class=\"ms-2\">Starts from {{ formatDate(logDetails?.schedule?.new?.configStartDate) }} -</span>\r\n </span>\r\n <span *ngIf=\"logDetails?.schedule?.new?.configStartDate && logDetails?.schedule?.new?.configEndDate\" class=\"ms-2\">- Every -</span>\r\n <span class=\"ms-2\">{{ logDetails?.schedule?.new?.scheduleRepeatedDay || '-' }}</span> \r\n <span class=\"ms-2\">{{ logDetails?.schedule?.new?.scheduleRepeatedType || '-' }}</span> -\r\n <span class=\"ms-2\">{{ logDetails?.schedule?.new?.scheduleWeekDays || '-' }}</span> \r\n \r\n <span *ngIf=\"logDetails?.schedule?.new?.configEndDate\">\r\n <span class=\"ms-2\">- Ends on {{ formatDate(logDetails?.schedule?.new?.configEndDate) }}</span>\r\n </span>\r\n </span><br>\r\n <span class=\"newlineheight\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M12 6V12L16 14M22 12C22 17.5228 17.5228 22 12 22C6.47715 22 2 17.5228 2 12C2 6.47715 6.47715 2 12 2C17.5228 2 22 6.47715 22 12Z\" stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n <span class=\"ms-2\">{{ logDetails?.schedule?.new?.time || '-' }}</span>\r\n </span><br>\r\n </span>\r\n <span *ngIf=\"logDetails?.schedule?.new?.scheduleRepeatedType === 'monthly'\">\r\n <span class=\"my-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M16 2V6M8 2V6M3 10H21M5 4H19C20.1046 4 21 4.89543 21 6V20C21 21.1046 20.1046 22 19 22H5C3.89543 22 3 21.1046 3 20V6C3 4.89543 3.89543 4 5 4Z\" stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n <span class=\"ms-2\">Repeats {{ logDetails?.schedule?.new?.schedule || '-' }} -</span>\r\n <span *ngIf=\"logDetails?.schedule?.new?.configStartDate\">\r\n <span class=\"ms-2\">Starts from {{ formatDate(logDetails?.schedule?.new?.configStartDate) }} -</span>\r\n </span>\r\n <span *ngIf=\"logDetails?.schedule?.new?.configStartDate && logDetails?.schedule?.new?.configEndDate\" class=\"ms-2\">- Every -</span>\r\n <span class=\"ms-2\">{{ logDetails?.schedule?.new?.scheduleRepeatedDay || '-' }}</span> \r\n <span class=\"ms-2\">{{ logDetails?.schedule?.new?.scheduleRepeatedType || '-' }}</span> -\r\n <span *ngIf=\"!(logDetails?.schedule?.new?.scheduleRepeatedMonthWeek?.length === 1)\">On the </span>\r\n\r\n <span *ngIf=\"logDetails?.schedule?.new?.scheduleRepeatedMonthWeek?.length === 1\">On day</span>\r\n \r\n <span *ngIf=\"logDetails?.schedule?.new?.scheduleRepeatedMonthWeek || logDetails?.schedule?.new?.specificDate\">\r\n <span *ngIf=\"scheduleWeeksArray().length; else showSpecificDate\">\r\n <span *ngFor=\"let week of scheduleWeeksArray(); let i = index\">\r\n {{ getWeekOrdinal(parseWeekNumber(week.split(' ')[0])) }} {{ week.split(' ')[1] }}\r\n <span *ngIf=\"i < scheduleWeeksArray().length - 1\">, </span>\r\n </span>\r\n </span>\r\n <ng-template #showSpecificDate>\r\n <span *ngIf=\"logDetails?.schedule?.new?.specificDate?.length > 0\">\r\n {{ logDetails?.schedule?.new?.specificDate.join(', ') }}\r\n </span>\r\n </ng-template>\r\n </span>\r\n <span *ngIf=\"logDetails?.schedule?.new?.configEndDate\">\r\n <span class=\"ms-2\">- Ends on {{ formatDate(logDetails?.schedule?.new?.configEndDate) }}</span>\r\n </span>\r\n </span><br>\r\n <span class=\"newlineheight\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M12 6V12L16 14M22 12C22 17.5228 17.5228 22 12 22C6.47715 22 2 17.5228 2 12C2 6.47715 6.47715 2 12 2C17.5228 2 22 6.47715 22 12Z\" stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n <span class=\"ms-2\">{{ logDetails?.schedule?.new?.time || '-' }}</span>\r\n </span><br>\r\n </span>\r\n <span *ngIf=\"logDetails?.schedule?.new?.scheduleRepeatedType === 'range'\">\r\n <span class=\"my-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M16 2V6M8 2V6M3 10H21M5 4H19C20.1046 4 21 4.89543 21 6V20C21 21.1046 20.1046 22 19 22H5C3.89543 22 3 21.1046 3 20V6C3 4.89543 3.89543 4 5 4Z\" stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n <span class=\"ms-2\">Custom Range</span> -\r\n <span *ngIf=\"logDetails?.schedule?.new?.configStartDate\">\r\n <span class=\"ms-2\">Starts from {{ formatDate(logDetails?.schedule?.new?.configStartDate) }} -</span>\r\n </span>\r\n <span *ngIf=\"logDetails?.schedule?.new?.specificDate\" class=\"ms-2\">- On the Specific Dates - </span>\r\n <!-- <span class=\"ms-2\">{{ logDetails?.schedule?.new?.scheduleRepeatedDay || '-' }}</span> -->\r\n <span class=\"ms-2\">{{ formatDateString(logDetails?.schedule?.new?.specificDate[0]) }}</span>\r\n <span *ngIf=\"logDetails?.schedule?.new?.configEndDate\">\r\n <span class=\"ms-2\">- Ends on {{ formatDate(logDetails?.schedule?.new?.configEndDate) }}</span>\r\n </span>\r\n </span><br>\r\n <span class=\"newlineheight\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M12 6V12L16 14M22 12C22 17.5228 17.5228 22 12 22C6.47715 22 2 17.5228 2 12C2 6.47715 6.47715 2 12 2C17.5228 2 22 6.47715 22 12Z\" stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n <span class=\"ms-2\">{{ logDetails?.schedule?.new?.time || '-' }}</span>\r\n </span><br>\r\n </span>\r\n </td>\r\n </tr>\r\n \r\n <tr>\r\n <td class=\"questionfieldtext col-2\">Response</td>\r\n <td class=\"configPreviousfieldtext col-5\">\r\n <ng-container *ngIf=\"logDetails?.response?.previous?.length; else noPreviousData\">\r\n <ul>\r\n <li *ngFor=\"let item of logDetails?.response?.previous\">{{ item }}</li>\r\n </ul>\r\n </ng-container>\r\n <ng-template #noPreviousData>-</ng-template>\r\n </td>\r\n <td class=\"changesfieldtext col-5\">\r\n <ng-container *ngIf=\"logDetails?.response?.new?.length; else noNewData\">\r\n <ul>\r\n <li *ngFor=\"let item of logDetails?.response?.new\">{{ item }}</li>\r\n </ul>\r\n </ng-container>\r\n <ng-template #noNewData>-</ng-template>\r\n </td>\r\n </tr>\r\n <tr>\r\n <td class=\"questionfieldtext col-2\">Owner</td>\r\n <td class=\"configPreviousfieldtext col-5\">\r\n <ng-container *ngIf=\"logDetails?.owner?.previous; else noPreviousData\">\r\n {{ logDetails?.owner?.previous || '-' }}\r\n </ng-container>\r\n <ng-template #noPreviousData>-</ng-template>\r\n </td>\r\n <td class=\"changesfieldtext col-5\">\r\n <ng-container *ngIf=\"logDetails?.owner?.new; else noNewData\">\r\n {{ logDetails?.owner?.new || '-' }}\r\n </ng-container>\r\n <ng-template #noNewData>-</ng-template>\r\n </td>\r\n </tr>\r\n \r\n <tr>\r\n <td class=\"questionfieldtext col-2\">Approver</td>\r\n <td class=\"configPreviousfieldtext col-5\">\r\n <ng-container *ngIf=\"logDetails?.approver?.previous; else noData\">\r\n {{ logDetails?.approver?.previous || '-' }}\r\n </ng-container>\r\n <ng-template #noData>-</ng-template>\r\n </td>\r\n <td class=\"changesfieldtext col-5\">\r\n <ng-container *ngIf=\"logDetails?.approver?.new; else noData\">\r\n {{ logDetails?.approver?.new || '-' }}\r\n </ng-container>\r\n <ng-template #noData>-</ng-template>\r\n </td>\r\n </tr>\r\n\r\n <tr *ngIf=\"receivedData === 'task'\">\r\n <td class=\"questionfieldtext col-2\">Priority</td>\r\n <td class=\"configPreviousfieldtext col-5\">\r\n <ng-container *ngIf=\"logDetails?.schedule?.previous.priority; else noData\">\r\n {{ logDetails?.schedule?.previous.priority || '-' }}\r\n </ng-container>\r\n <ng-template #noData>-</ng-template>\r\n </td>\r\n <td class=\"changesfieldtext col-5\">\r\n <ng-container *ngIf=\"logDetails?.schedule?.new?.priority; else noData\">\r\n {{ logDetails?.schedule?.new?.priority || '-' }}\r\n </ng-container>\r\n <ng-template #noData>-</ng-template>\r\n </td>\r\n </tr>\r\n \r\n \r\n <tr>\r\n <td class=\"questionfieldtext col-2\">Store Removed</td>\r\n <td class=\"configPreviousfieldtext col-5\"> - </td>\r\n <td class=\"changesfieldtext col-5\">\r\n <ng-container *ngIf=\"logDetails?.storeRemoved?.length; else noData\">\r\n <lib-store-user-dropdown [items]=\"logDetails?.storeRemoved\" title=\"Stores\"></lib-store-user-dropdown>\r\n </ng-container>\r\n <ng-template #noData>-</ng-template>\r\n </td>\r\n </tr>\r\n \r\n <tr>\r\n <td class=\"questionfieldtext col-2\">User Added</td>\r\n <td class=\"configPreviousfieldtext col-5\"> - </td>\r\n <td class=\"changesfieldtext col-5\">\r\n <ng-container *ngIf=\"logDetails?.userAdded?.length; else noData\">\r\n <lib-store-user-dropdown [items]=\"logDetails?.userAdded\" title=\"Users\"></lib-store-user-dropdown>\r\n </ng-container>\r\n <ng-template #noData>-</ng-template>\r\n </td>\r\n </tr>\r\n \r\n <tr>\r\n <td class=\"questionfieldtext col-2\">User Removed</td>\r\n <td class=\"configPreviousfieldtext col-5\"> - </td>\r\n <td class=\"changesfieldtext col-5\">\r\n <ng-container *ngIf=\"logDetails?.userRemoved?.length; else noData\">\r\n <lib-store-user-dropdown [items]=\"logDetails?.userRemoved\" title=\"Users\"></lib-store-user-dropdown>\r\n </ng-container>\r\n <ng-template #noData>-</ng-template>\r\n </td>\r\n </tr>\r\n \r\n </tbody>\r\n </table>\r\n </div>\r\n </div>\r\n<!-- Configuration Updates end -->\r\n\r\n </div>\r\n</div>", styles: [".logheader{display:flex;padding:16px;justify-content:space-between;align-items:center;flex:1 0 0;border-radius:6px;opacity:.8;background:var(--Primary-100, #DAF1FF)}.logheadertext{color:var(--Primary-800, #008EDF);text-align:center;font-family:Inter;font-size:18px;font-style:normal;font-weight:500;line-height:28px}.questext{color:var(--Gray-900, #101828);font-family:Inter;font-size:18px;font-style:normal;font-weight:600;line-height:28px}.quessubtext{color:var(--Gray-700, #344054);font-family:Inter;font-size:18px;font-style:normal;font-weight:500;line-height:28px}.checklistframe{align-items:flex-start;align-self:stretch;border-radius:16px!important;border:1px solid var(--Gray-100, #F2F4F7)}.table th,.table td{vertical-align:middle;text-align:start}.image-grid{display:flex;flex-wrap:wrap;justify-content:center;gap:10px}.image-grid img{width:100px;height:100px;object-fit:cover;border-radius:5px}.questionfieldtext{color:var(--Gray-900, #101828)!important;font-family:Inter;font-size:18px!important;font-weight:600!important;line-height:28px;border:1px solid var(--Gray-100, #F2F4F7)!important;text-align:start!important;width:150px}.frametext{color:var(--Gray-500, #667085)!important;font-family:Inter;font-size:16px!important;font-style:normal;font-weight:500!important;line-height:24px;background:var(--Gray-200, #EAECF0)!important;text-align:start!important}.frametext1{color:var(--Gray-500, #667085)!important;font-family:Inter;font-size:16px!important;font-style:normal;font-weight:500!important;line-height:24px;background:var(--Gray-100, #F2F4F7)!important}.frametextprimary{background:var(--Primary-50, #EAF8FF)!important;color:var(--Primary-600, #00A3FF)!important;font-family:Inter;font-size:16px!important;font-style:normal;font-weight:500!important;line-height:24px}.Previousfieldtext{color:var(--Gray-500, #667085)!important;font-family:Inter;font-size:16px!important;font-style:normal;font-weight:500!important;line-height:24px;background:var(--Gray-100, #F2F4F7)!important;border:1px solid var(--Gray-100, #F2F4F7)!important;text-align:start!important}.changesfieldtext{color:var(--Black, #101828)!important;font-family:Inter;font-size:16px!important;font-style:normal;font-weight:500!important;line-height:24px;border:1px solid var(--Gray-100, #F2F4F7)!important;text-align:start!important}.changesfieldimg{border-radius:8px;border:1px solid var(--Gray-100, #F2F4F7)}.checklistscroll{overflow-y:scroll;min-height:250px;max-height:600px}.configPreviousfieldtext{color:var(--Gray-500, #667085)!important;font-family:Inter;font-size:16px!important;font-style:normal;font-weight:500!important;line-height:24px;background:var(--Gray-100, #F2F4F7)!important;border:1px solid var(--Gray-100, #F2F4F7)!important;text-align:start!important}.newlineheight,.previouslineheight{line-height:50px!important}.w-50{width:50px!important}.table-responsive{width:100%;display:flex;justify-content:center}table{width:100%;border-collapse:collapse;table-layout:fixed}th,td{text-align:left;padding:12px;vertical-align:middle;word-wrap:break-word}th{background-color:#f4f4f4;font-weight:700}.frametext1,.questionfieldtext{width:22%}.frametext,.configPreviousfieldtext,.frametextprimary,.changesfieldtext{width:40%}@media (max-width: 1024px){th,td{font-size:14px;padding:10px}}@media (max-width: 768px){table{display:block}thead{display:none}tbody tr{display:flex;flex-direction:column;margin-bottom:10px}td{display:flex;justify-content:space-between;padding:8px;font-size:14px}}\n"] }]
|
|
115
115
|
}], ctorParameters: () => [{ type: i1.NgbActiveModal }], propDecorators: { logDetails: [{
|
|
116
116
|
type: Input
|
|
117
117
|
}], checkListName: [{
|
|
@@ -123,4 +123,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
123
123
|
}], receivedData: [{
|
|
124
124
|
type: Input
|
|
125
125
|
}] } });
|
|
126
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlldy1hY3Rpb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGFuZ28tYW5hbHlzZS10cmF4L3NyYy9saWIvY29tcG9uZW50cy9hY3Rpdml0eS1sb2ctdjIvbG9nLXZpZXctcG9wdXAvdmlldy1hY3Rpb24vdmlldy1hY3Rpb24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGFuZ28tYW5hbHlzZS10cmF4L3NyYy9saWIvY29tcG9uZW50cy9hY3Rpdml0eS1sb2ctdjIvbG9nLXZpZXctcG9wdXAvdmlldy1hY3Rpb24vdmlldy1hY3Rpb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFFekQsT0FBTyxLQUFLLE1BQU0sT0FBTyxDQUFDOzs7OztBQU8xQixNQUFNLE9BQU8sbUJBQW1CO0lBcUJYO0lBcEJWLFVBQVUsQ0FBTTtJQUNoQixhQUFhLENBQVM7SUFDdEIsU0FBUyxDQUFTO0lBQ2xCLFVBQVUsQ0FBUztJQUNuQixZQUFZLENBQVU7SUFFL0Isb0JBQW9CLENBQU07SUFDMUIsMkJBQTJCLENBQU07SUFDakMsbUJBQW1CLEdBQVUsRUFBRSxDQUFDO0lBQ2hDLGNBQWMsR0FBVSxFQUFFLENBQUM7SUFDM0IsZUFBZSxHQUFVLEVBQUUsQ0FBQztJQUM1QixnQkFBZ0IsR0FBVSxFQUFFLENBQUM7SUFDN0IsdUJBQXVCLENBQVM7SUFDaEMsb0JBQW9CLENBQVM7SUFDN0Isc0JBQXNCLENBQVc7SUFDakMsa0JBQWtCLENBQVM7SUFDM0IsZUFBZSxDQUFTO0lBQ3hCLGlCQUFpQixDQUFXO0lBQzVCLGFBQWEsR0FBVyxHQUFHLENBQUM7SUFFNUIsWUFBbUIsV0FBMkI7UUFBM0IsZ0JBQVcsR0FBWCxXQUFXLENBQWdCO1FBRTVDLGlCQUFpQjtRQUNqQixvRkFBb0Y7UUFDcEYsS0FBSztJQUNQLENBQUM7SUFDRCx3Q0FBd0M7SUFDeEMsbUNBQW1DO0lBQ25DLCtDQUErQztJQUMvQyxNQUFNO0lBQ04sSUFBSTtJQUVKLFFBQVE7UUFDTixPQUFPLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDekMsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLFlBQVksQ0FBQztRQUNoRSxJQUFJLFVBQVUsRUFBRTtZQUNkLElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDLFVBQVUsRUFBRSxVQUFVLENBQUMsQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7U0FDMUU7UUFFRCxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDbkIsSUFBSSxDQUFDLG9CQUFvQixHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsb0JBQW9CLENBQUM7WUFDakUsSUFBSSxDQUFDLDJCQUEyQixHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsMkJBQTJCLENBQUM7WUFDL0UsSUFBSSxDQUFDLG1CQUFtQixHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsa0JBQWtCLElBQUksRUFBRSxDQUFDO1lBQ3BFLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLElBQUksRUFBRSxDQUFDO1lBQ3hELElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxZQUFZLElBQUksRUFBRSxDQUFDO1lBQzFELElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLGNBQWMsSUFBSSxFQUFFLENBQUM7WUFDN0QsSUFBSSxDQUFDLHVCQUF1QixHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRSxPQUFPLElBQUksRUFBRSxDQUFDO1lBQ2pGLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxRQUFRLEVBQUUsSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUMzRSxJQUFJLENBQUMsc0JBQXNCLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsUUFBUSxFQUFFLE1BQU0sSUFBSSxFQUFFLENBQUM7WUFDL0UsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLEdBQUcsRUFBRSxPQUFPLElBQUksRUFBRSxDQUFDO1lBQ3ZFLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsR0FBRyxFQUFFLElBQUksSUFBSSxFQUFFLENBQUM7WUFDakUsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLEdBQUcsRUFBRSxNQUFNLElBQUksRUFBRSxDQUFDO1NBQ3RFO0lBQ0gsQ0FBQztJQUVELFVBQVUsQ0FBQyxVQUFxQztRQUM5QyxJQUFJLENBQUMsVUFBVTtZQUFFLE9BQU8sY0FBYyxDQUFDO1FBRXZDLE1BQU0sSUFBSSxHQUFHLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ2xDLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUFFLE9BQU8sY0FBYyxDQUFDLENBQUMseUJBQXlCO1FBRTNFLE1BQU0sT0FBTyxHQUErQixFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLENBQUM7UUFDaEcsT0FBTyxJQUFJLENBQUMsa0JBQWtCLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMseUJBQXlCO0lBQzdFLENBQUM7SUFDRCxnQkFBZ0IsQ0FBQyxPQUFlO1FBQzlCLE1BQU0sTUFBTSxHQUFHLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztRQUNwRyxNQUFNLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUMxRCxPQUFPLEdBQUcsR0FBRyxJQUFJLE1BQU0sQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLElBQUksSUFBSSxFQUFFLENBQUM7SUFDL0MsQ0FBQztJQUVELGNBQWMsQ0FBQyxLQUFhO1FBQzFCLE1BQU0sVUFBVSxHQUE4QjtZQUM1QyxDQUFDLEVBQUUsT0FBTztZQUNWLENBQUMsRUFBRSxRQUFRO1lBQ1gsQ0FBQyxFQUFFLE9BQU87WUFDVixDQUFDLEVBQUUsUUFBUTtZQUNYLENBQUMsRUFBRSxNQUFNO1NBQ1YsQ0FBQztRQUNGLE9BQU8sVUFBVSxDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLGtDQUFrQztJQUNsRixDQUFDO0lBQ0Qsa0JBQWtCO1FBQ2hCLE1BQU0sS0FBSyxHQUF1QixJQUFJLENBQUMsVUFBVSxFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUUseUJBQXlCLENBQUM7UUFDNUYsT0FBTyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBWSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQzVFLENBQUM7SUFFRCxlQUFlLENBQUMsS0FBYTtRQUMzQixPQUFPLFFBQVEsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsb0NBQW9DO0lBQ3ZFLENBQUM7SUFDRCxVQUFVO1FBQ1IsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRUQsa0JBQWtCLENBQUMsVUFBa0I7UUFDbkMsTUFBTSxZQUFZLEdBQThCO1lBQzlDLFdBQVcsRUFBRSxvQkFBb0I7WUFDakMsUUFBUSxFQUFFLGNBQWM7WUFDeEIsb0JBQW9CLEVBQUUsMENBQTBDO1lBQ2hFLHNCQUFzQixFQUFFLDRDQUE0QztZQUNwRSxnQkFBZ0IsRUFBRSxnQ0FBZ0M7WUFDbEQsS0FBSyxFQUFFLHlCQUF5QjtZQUNoQyxLQUFLLEVBQUUseUJBQXlCO1lBQ2hDLGFBQWEsRUFBRSx3QkFBd0I7WUFDdkMsSUFBSSxFQUFFLG1CQUFtQjtZQUN6QixXQUFXLEVBQUUsY0FBYztZQUMzQixJQUFJLEVBQUUsTUFBTTtTQUNiLENBQUM7UUFFRixPQUFPLFlBQVksQ0FBQyxVQUFVLENBQUMsSUFBSSxVQUFVLElBQUksR0FBRyxDQUFDO0lBQ3ZELENBQUM7d0dBN0dZLG1CQUFtQjs0RkFBbkIsbUJBQW1CLDZNQ1RoQyx3eXFEQXF0QkE7OzRGRDVzQmEsbUJBQW1CO2tCQUwvQixTQUFTOytCQUNFLGlCQUFpQjttRkFLbEIsVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE5nYkFjdGl2ZU1vZGFsIH0gZnJvbSAnQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAnO1xyXG5pbXBvcnQgZGF5anMgZnJvbSBcImRheWpzXCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi12aWV3LWFjdGlvbicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3ZpZXctYWN0aW9uLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybDogJy4vdmlldy1hY3Rpb24uY29tcG9uZW50LnNjc3MnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBWaWV3QWN0aW9uQ29tcG9uZW50IHtcclxuICBASW5wdXQoKSBsb2dEZXRhaWxzOiBhbnk7XHJcbiAgQElucHV0KCkgY2hlY2tMaXN0TmFtZTogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHN0b3JlTmFtZTogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIGFjdGlvblR5cGU6IHN0cmluZztcclxuICBASW5wdXQoKSByZWNlaXZlZERhdGEhOiBzdHJpbmc7XHJcblxyXG4gIHVwZGF0ZWRDaGVja2xpc3ROYW1lOiBhbnk7XHJcbiAgdXBkYXRlZENoZWNrbGlzdERlc2NyaXB0aW9uOiBhbnk7XHJcbiAgdXBkYXRlZFNlY3Rpb25OYW1lczogYW55W10gPSBbXTtcclxuICBhZGRlZFF1ZXN0aW9uczogYW55W10gPSBbXTtcclxuICBlZGl0ZWRRdWVzdGlvbnM6IGFueVtdID0gW107XHJcbiAgZGVsZXRlZFF1ZXN0aW9uczogYW55W10gPSBbXTtcclxuICBzY2hlZHVsZVByZXZpb3VzUmVwZWF0czogc3RyaW5nO1xyXG4gIHNjaGVkdWxlUHJldmlvdXNUaW1lOiBzdHJpbmc7XHJcbiAgc2NoZWR1bGVQcmV2aW91c09jY3Vyczogc3RyaW5nW107XHJcbiAgc2NoZWR1bGVOZXdSZXBlYXRzOiBzdHJpbmc7XHJcbiAgc2NoZWR1bGVOZXdUaW1lOiBzdHJpbmc7XHJcbiAgc2NoZWR1bGVOZXdPY2N1cnM6IHN0cmluZ1tdO1xyXG4gIGZvcm1hdHRlZERhdGU6IHN0cmluZyA9ICctJztcclxuXHJcbiAgY29uc3RydWN0b3IocHVibGljIGFjdGl2ZU1vZGFsOiBOZ2JBY3RpdmVNb2RhbCkge1xyXG4gICAgXHJcbiAgICAvLyBsb2dEZXRhaWxzID0ge1xyXG4gICAgLy8gICBzdG9yZUFkZGVkOiBbXCJMS1NUMDExXCIsIFwiTEtTVDAyMlwiLCBcIkxLU1QzNDQ0XCIsIFwiTEtTVDQ1NVwiLCBcIkxLU1Q1NjZcIiwgXCJMS1NUNjY2XCJdXHJcbiAgICAvLyB9O1xyXG4gIH1cclxuICAvLyBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XHJcbiAgLy8gICBpZiAoY2hhbmdlc1sncmVjZWl2ZWREYXRhJ10pIHtcclxuICAvLyAgICAgY29uc29sZS5sb2coXCJ2aWV3OlwiLCB0aGlzLnJlY2VpdmVkRGF0YSk7XHJcbiAgLy8gICB9XHJcbiAgLy8gfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIGNvbnNvbGUubG9nKFwiUnZpdXJlXCIsIHRoaXMucmVjZWl2ZWREYXRhKTtcclxuICAgIGNvbnN0IGRhdGVTdHJpbmcgPSB0aGlzLmxvZ0RldGFpbHM/LnNjaGVkdWxlPy5uZXc/LnNwZWNpZmljRGF0ZTtcclxuICAgIGlmIChkYXRlU3RyaW5nKSB7XHJcbiAgICAgIHRoaXMuZm9ybWF0dGVkRGF0ZSA9IGRheWpzKGRhdGVTdHJpbmcsICdELU0tWVlZWScpLmZvcm1hdCgnREQgTU1NIFlZWVknKTtcclxuICAgIH1cclxuICAgIFxyXG4gICAgaWYgKHRoaXMubG9nRGV0YWlscykge1xyXG4gICAgICB0aGlzLnVwZGF0ZWRDaGVja2xpc3ROYW1lID0gdGhpcy5sb2dEZXRhaWxzLnVwZGF0ZWRDaGVja2xpc3ROYW1lO1xyXG4gICAgICB0aGlzLnVwZGF0ZWRDaGVja2xpc3REZXNjcmlwdGlvbiA9IHRoaXMubG9nRGV0YWlscy51cGRhdGVkQ2hlY2tsaXN0RGVzY3JpcHRpb247XHJcbiAgICAgIHRoaXMudXBkYXRlZFNlY3Rpb25OYW1lcyA9IHRoaXMubG9nRGV0YWlscy51cGRhdGVkU2VjdGlvbk5hbWUgfHwgW107XHJcbiAgICAgIHRoaXMuYWRkZWRRdWVzdGlvbnMgPSB0aGlzLmxvZ0RldGFpbHMucXVlc3Rpb25BZGQgfHwgW107XHJcbiAgICAgIHRoaXMuZWRpdGVkUXVlc3Rpb25zID0gdGhpcy5sb2dEZXRhaWxzLnF1ZXN0aW9uRWRpdCB8fCBbXTtcclxuICAgICAgdGhpcy5kZWxldGVkUXVlc3Rpb25zID0gdGhpcy5sb2dEZXRhaWxzLnF1ZXN0aW9uRGVsZXRlIHx8IFtdO1xyXG4gICAgICB0aGlzLnNjaGVkdWxlUHJldmlvdXNSZXBlYXRzID0gdGhpcy5sb2dEZXRhaWxzLnNjaGVkdWxlPy5wcmV2aW91cz8ucmVwZWF0cyB8fCAnJztcclxuICAgICAgdGhpcy5zY2hlZHVsZVByZXZpb3VzVGltZSA9IHRoaXMubG9nRGV0YWlscy5zY2hlZHVsZT8ucHJldmlvdXM/LnRpbWUgfHwgJyc7XHJcbiAgICAgIHRoaXMuc2NoZWR1bGVQcmV2aW91c09jY3VycyA9IHRoaXMubG9nRGV0YWlscy5zY2hlZHVsZT8ucHJldmlvdXM/Lm9jY3VycyB8fCBbXTtcclxuICAgICAgdGhpcy5zY2hlZHVsZU5ld1JlcGVhdHMgPSB0aGlzLmxvZ0RldGFpbHMuc2NoZWR1bGU/Lm5ldz8ucmVwZWF0cyB8fCAnJztcclxuICAgICAgdGhpcy5zY2hlZHVsZU5ld1RpbWUgPSB0aGlzLmxvZ0RldGFpbHMuc2NoZWR1bGU/Lm5ldz8udGltZSB8fCAnJztcclxuICAgICAgdGhpcy5zY2hlZHVsZU5ld09jY3VycyA9IHRoaXMubG9nRGV0YWlscy5zY2hlZHVsZT8ubmV3Py5vY2N1cnMgfHwgW107XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBmb3JtYXREYXRlKGRhdGVTdHJpbmc6IHN0cmluZyB8IHVuZGVmaW5lZCB8IG51bGwpOiBzdHJpbmcge1xyXG4gICAgaWYgKCFkYXRlU3RyaW5nKSByZXR1cm4gJ0ludmFsaWQgRGF0ZSc7XHJcbiAgXHJcbiAgICBjb25zdCBkYXRlID0gbmV3IERhdGUoZGF0ZVN0cmluZyk7XHJcbiAgICBpZiAoaXNOYU4oZGF0ZS5nZXRUaW1lKCkpKSByZXR1cm4gJ0ludmFsaWQgRGF0ZSc7IC8vIENoZWNrIGlmIGRhdGUgaXMgdmFsaWRcclxuICBcclxuICAgIGNvbnN0IG9wdGlvbnM6IEludGwuRGF0ZVRpbWVGb3JtYXRPcHRpb25zID0geyBkYXk6ICcyLWRpZ2l0JywgbW9udGg6ICdzaG9ydCcsIHllYXI6ICdudW1lcmljJyB9O1xyXG4gICAgcmV0dXJuIGRhdGUudG9Mb2NhbGVEYXRlU3RyaW5nKCdlbi1HQicsIG9wdGlvbnMpOyAvLyBPdXRwdXRzOiBcIjI2IE1hciAyMDI1XCJcclxuICB9XHJcbiAgZm9ybWF0RGF0ZVN0cmluZyhkYXRlU3RyOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgY29uc3QgbW9udGhzID0gW1wiSmFuXCIsIFwiRmViXCIsIFwiTWFyXCIsIFwiQXByXCIsIFwiTWF5XCIsIFwiSnVuXCIsIFwiSnVsXCIsIFwiQXVnXCIsIFwiU2VwXCIsIFwiT2N0XCIsIFwiTm92XCIsIFwiRGVjXCJdO1xyXG4gICAgY29uc3QgW2RheSwgbW9udGgsIHllYXJdID0gZGF0ZVN0ci5zcGxpdCgnLScpLm1hcChOdW1iZXIpO1xyXG4gICAgcmV0dXJuIGAke2RheX0gJHttb250aHNbbW9udGggLSAxXX0gJHt5ZWFyfWA7XHJcbiAgfVxyXG4gIFxyXG4gIGdldFdlZWtPcmRpbmFsKHZhbHVlOiBudW1iZXIpOiBzdHJpbmcge1xyXG4gICAgY29uc3Qgb3JkaW5hbE1hcDogeyBba2V5OiBudW1iZXJdOiBzdHJpbmcgfSA9IHtcclxuICAgICAgMTogJ0ZpcnN0JyxcclxuICAgICAgMjogJ1NlY29uZCcsXHJcbiAgICAgIDM6ICdUaGlyZCcsXHJcbiAgICAgIDQ6ICdGb3VydGgnLFxyXG4gICAgICA1OiAnTGFzdCdcclxuICAgIH07XHJcbiAgICByZXR1cm4gb3JkaW5hbE1hcFt2YWx1ZV0gfHwgdmFsdWUudG9TdHJpbmcoKTsgLy8gRGVmYXVsdCB0byBudW1iZXIgaWYgbm90IG1hcHBlZFxyXG4gIH1cclxuICBzY2hlZHVsZVdlZWtzQXJyYXkoKTogc3RyaW5nW10ge1xyXG4gICAgY29uc3Qgd2Vla3M6IHN0cmluZyB8IHVuZGVmaW5lZCA9IHRoaXMubG9nRGV0YWlscz8uc2NoZWR1bGU/Lm5ldz8uc2NoZWR1bGVSZXBlYXRlZE1vbnRoV2VlaztcclxuICAgIHJldHVybiB3ZWVrcyA/IHdlZWtzLnNwbGl0KCcsJykubWFwKChpdGVtOiBzdHJpbmcpID0+IGl0ZW0udHJpbSgpKSA6IFtdO1xyXG59XHJcblxyXG5wYXJzZVdlZWtOdW1iZXIodmFsdWU6IHN0cmluZyk6IG51bWJlciB7XHJcbiAgcmV0dXJuIHBhcnNlSW50KHZhbHVlLCAxMCkgfHwgMDsgLy8gQ29udmVydCB0byBudW1iZXIgb3IgZGVmYXVsdCB0byAwXHJcbn1cclxuY2xvc2VQb3B1cCgpIHtcclxuICB0aGlzLmFjdGl2ZU1vZGFsLmNsb3NlKCk7XHJcbn1cclxuXHJcbmdldEFuc3dlclR5cGVMYWJlbChhbnN3ZXJUeXBlOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gIGNvbnN0IHR5cGVNYXBwaW5nczogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSA9IHtcclxuICAgIGRlc2NyaXB0aXZlOiAnRGVzY3JpcHRpdmUgQW5zd2VyJyxcclxuICAgICd5ZXMvbm8nOiAnQS9CIFF1ZXN0aW9uJyxcclxuICAgIG11bHRpcGxlY2hvaWNlc2luZ2xlOiAnTXVsdGlwbGUgQ2hvaWNlIFF1ZXN0aW9uIC0gU2luZ2xlIEFuc3dlcicsXHJcbiAgICBtdWx0aXBsZWNob2ljZW11bHRpcGxlOiAnTXVsdGlwbGUgQ2hvaWNlIFF1ZXN0aW9uIC0gTXVsdGlwbGUgQW5zd2VyJyxcclxuICAgIGRlc2NyaXB0aXZlSW1hZ2U6ICdDYXB0dXJlIEltYWdlIHdpdGggRGVzY3JpcHRpb24nLFxyXG4gICAgaW1hZ2U6ICdDYXB0dXJlIEltYWdlIGFzIEFuc3dlcicsXHJcbiAgICB2aWRlbzogJ0NhcHR1cmUgVmlkZW8gYXMgQW5zd2VyJyxcclxuICAgIG11bHRpcGxlSW1hZ2U6ICdDYXB0dXJlIE11bHRpcGxlIEltYWdlJyxcclxuICAgIGRhdGU6ICdEYXRlIC0gREQvTU0vWVlZWScsXHJcbiAgICBsaW5lYXJzY2FsZTogJ0xpbmVhciBTY2FsZScsXHJcbiAgICB0aW1lOiAnVGltZScsXHJcbiAgfTtcclxuXHJcbiAgcmV0dXJuIHR5cGVNYXBwaW5nc1thbnN3ZXJUeXBlXSB8fCBhbnN3ZXJUeXBlIHx8ICctJztcclxufVxyXG5cclxuXHJcbn1cclxuIiwiPGRpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlclwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJsb2doZWFkZXIgZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIFctMTAwXCI+XHJcbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiYWN0aW9uVHlwZSA9PT0gJ2VkaXRlZCdcIiBjbGFzcz1cImNhcmQtaGVhZGVyIGxvZ2hlYWRlcnRleHRcIj5DaGVja2xpc3QgVXBkYXRlczwvc3Bhbj5cclxuICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJhY3Rpb25UeXBlID09PSAndXBkYXRlZCcgfHwgYWN0aW9uVHlwZSA9PT0gJ2RyYWZ0J1wiIGNsYXNzPVwiY2FyZC1oZWFkZXIgbG9naGVhZGVydGV4dFwiPkNvbmZpZ3VyYXRpb24gVXBkYXRlczwvc3Bhbj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cImNsb3NlUG9wdXAoKVwiPjxzcGFuPjxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMzJcIiBoZWlnaHQ9XCIzMlwiIHZpZXdCb3g9XCIwIDAgMzIgMzJcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTI0IDhMOCAyNE04IDhMMjQgMjRcIiBzdHJva2U9XCIjMDA4RURGXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvc3ZnPjwvc3Bhbj48L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPCEtLSBlZGl0ZWQgLS0+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IGNoZWNrbGlzdHNjcm9sbCBwLThcIj5cclxuICAgIDxkaXYgICpuZ0lmPVwiYWN0aW9uVHlwZSA9PT0gJ2VkaXRlZCdcIj5cclxuICAgICAgIDwhLS0gQ2hlY2tsaXN0IE5hbWUgLS0+XHJcbiAgICAgICA8IS0tICpuZ0lmPVwidXBkYXRlZENoZWNrbGlzdE5hbWVcIiAtLT5cclxuICAgIDxkaXYgY2xhc3M9XCJjaGVja2xpc3RmcmFtZSBteS02XCIgKm5nSWY9XCJ1cGRhdGVkQ2hlY2tsaXN0TmFtZT8ucHJldmlvdXMgfHwgdXBkYXRlZENoZWNrbGlzdE5hbWU/Lm5ld1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1yZXNwb25zaXZlXCI+XHJcbiAgICAgICAgICAgIDx0YWJsZT5cclxuICAgICAgICAgICAgICAgIDx0aGVhZD5cclxuICAgICAgICAgICAgICAgICAgICA8dHIgY2xhc3M9XCJmcmFtZXRleHRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwiZnJhbWV0ZXh0MSBjb2wtMlwiPkZpZWxkczwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cImZyYW1ldGV4dCBjb2wtNVwiPlByZXZpb3VzPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwiZnJhbWV0ZXh0cHJpbWFyeSBjb2wtNVwiPlVwZGF0ZWQ8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICA8L3RoZWFkPlxyXG4gICAgICAgICAgICAgICAgPHRib2R5PlxyXG4gICAgICAgICAgICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwicXVlc3Rpb25maWVsZHRleHQgY29sLTJcIj5DaGVja2xpc3QgTmFtZTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cIlByZXZpb3VzZmllbGR0ZXh0IGNvbC01XCI+e3sgdXBkYXRlZENoZWNrbGlzdE5hbWU/LnByZXZpb3VzIHx8ICctJyB9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cImNoYW5nZXNmaWVsZHRleHQgY29sLTVcIj57eyB1cGRhdGVkQ2hlY2tsaXN0TmFtZT8ubmV3IHx8ICctJyB9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgIDwvdGJvZHk+XHJcbiAgICAgICAgICAgIDwvdGFibGU+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgICAgICA8IS0tIENoZWNrbGlzdCBOYW1lIEVuZCAtLT5cclxuICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwiYm9yZGVybGluZVwiPjwvZGl2PiAtLT5cclxuICAgICAgICAgICA8IS0tIENoZWNrbGlzdCBEZXNjcmlwdGlvbiBTdGFydCAtLT5cclxuICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlY2tsaXN0ZnJhbWUgbXktNlwiICpuZ0lmPVwidXBkYXRlZENoZWNrbGlzdERlc2NyaXB0aW9uPy5wcmV2aW91cyB8fCB1cGRhdGVkQ2hlY2tsaXN0RGVzY3JpcHRpb24/Lm5ld1wiPlxyXG4gICAgICAgICAgICA8IS0tIDxoNCBjbGFzcz1cInRleHQtbGcgZm9udC1zZW1pYm9sZFwiPkNoZWNrbGlzdCBEZXNjcmlwdGlvbiBVcGRhdGVkPC9oND4gLS0+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1yZXNwb25zaXZlXCI+XHJcbiAgICAgICAgICAgICAgICA8dGFibGU+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRoZWFkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dHIgY2xhc3M9XCJmcmFtZXRleHRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cImZyYW1ldGV4dDEgY29sLTJcIj5GaWVsZHM8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwiZnJhbWV0ZXh0IGNvbC01XCI+UHJldmlvdXM8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwiZnJhbWV0ZXh0cHJpbWFyeSBjb2wtNVwiPlVwZGF0ZWQ8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdGhlYWQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRib2R5PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJxdWVzdGlvbmZpZWxkdGV4dCBjb2wtMlwiPkNoZWNrbGlzdCBEZXNjcmlwdGlvbjwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJQcmV2aW91c2ZpZWxkdGV4dCBjb2wtNVwiPnt7IHVwZGF0ZWRDaGVja2xpc3REZXNjcmlwdGlvbj8ucHJldmlvdXMgfHwgJy0nIH19PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cImNoYW5nZXNmaWVsZHRleHQgY29sLTVcIj57eyB1cGRhdGVkQ2hlY2tsaXN0RGVzY3JpcHRpb24/Lm5ldyB8fCAnLScgfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+XHJcbiAgICAgICAgICAgICAgICA8L3RhYmxlPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIFxyXG4gICAgICAgIDwhLS0gQ2hlY2tsaXN0IERlc2NyaXB0aW9uIEVuZCAtLT5cclxuXHJcbiAgICAgICAgICAgICA8IS0tIFNlY3Rpb24gTmFtZSBTdGFydCAtLT5cclxuICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVja2xpc3RmcmFtZSBteS02XCIgKm5nSWY9XCJ1cGRhdGVkU2VjdGlvbk5hbWVzLmxlbmd0aCA+IDBcIj5cclxuICAgICAgICAgICAgICAgIDwhLS0gPGg0IGNsYXNzPVwidGV4dC1sZyBmb250LXNlbWlib2xkXCI+U2VjdGlvbiBOYW1lcyBVcGRhdGVkPC9oND4gLS0+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtcmVzcG9uc2l2ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0YWJsZSAqbmdGb3I9XCJsZXQgc2VjdGlvbiBvZiB1cGRhdGVkU2VjdGlvbk5hbWVzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aGVhZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ciBjbGFzcz1cImZyYW1ldGV4dFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cImZyYW1ldGV4dDEgY29sLTJcIj5GaWVsZHM8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cImZyYW1ldGV4dCBjb2wtNVwiPlByZXZpb3VzPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJmcmFtZXRleHRwcmltYXJ5IGNvbC01XCI+VXBkYXRlZDwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RoZWFkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGJvZHk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHIgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cInF1ZXN0aW9uZmllbGR0ZXh0IGNvbC0yXCI+U2VjdGlvbiBOYW1lPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJQcmV2aW91c2ZpZWxkdGV4dCBjb2wtNVwiPnt7IHNlY3Rpb24/LnByZXZpb3VzIHx8ICctJyB9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiY2hhbmdlc2ZpZWxkdGV4dCBjb2wtNVwiPnt7IHNlY3Rpb24/Lm5ldyB8fCAnLScgfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC90Ym9keT5cclxuICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8IS0tIFNlY3Rpb24gTmFtZSBFbmQgLS0+XHJcblxyXG4gICAgICAgIDwhLS0gUXVlc3Rpb24gQWRkZWQgdmFyaWVudCBzdGFydCAtLT5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwiYWRkZWRRdWVzdGlvbnMubGVuZ3RoID4gMFwiPlxyXG4gICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IHNlY3Rpb24gb2YgYWRkZWRRdWVzdGlvbnNcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInF1ZXN0ZXh0XCI+U2VjdGlvbiBOYW1lOiA8c3BhbiBjbGFzcz1cInF1ZXNzdWJ0ZXh0XCI+e3sgc2VjdGlvbj8uc2VjdGlvbk5hbWUgfHwgJy0nIH19PC9zcGFuPjwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBxdWVzdGlvbiBvZiBzZWN0aW9uLnF1ZXN0aW9uczsgbGV0IGkgPSBpbmRleFwiID5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInF1ZXN0ZXh0IG10LTJcIj5RdWVzdGlvbiBObyA6IDxzcGFuIGNsYXNzPVwicXVlc3N1YnRleHRcIj57eyBxdWVzdGlvbj8ucW5vIHx8ICctJyB9fTwvc3Bhbj48L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZWNrbGlzdGZyYW1lIG15LTZcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1yZXNwb25zaXZlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRhYmxlID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoZWFkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyIGNsYXNzPVwiZnJhbWV0ZXh0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwiZnJhbWV0ZXh0MSBjb2wtMlwiPkZpZWxkczwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwiZnJhbWV0ZXh0IGNvbC01XCI+UHJldmlvdXM8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cImZyYW1ldGV4dHByaW1hcnkgY29sLTVcIj5VcGRhdGVkPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGhlYWQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0Ym9keSA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwicXVlc3Rpb25maWVsZHRleHQgY29sLTJcIj5RdWVzdGlvbiBBZGRlZDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiUHJldmlvdXNmaWVsZHRleHQgY29sLTVcIj4gLSA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cImNoYW5nZXNmaWVsZHRleHQgY29sLTVcIj57eyBxdWVzdGlvbj8ucW5hbWUgfHwgJy0nIH19PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+XHJcbiAgICAgICAgICAgICAgICAgICAgPC90YWJsZT5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8IS0tIFF1ZXN0aW9uIEFkZGVkIHZhcmllbnQgZW5kIC0tPlxyXG5cclxuICAgICAgICA8IS0tIFF1ZXN0aW9uIERlbGV0ZWQgdmFyaWVudCBzdGFydCAtLT5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwiZGVsZXRlZFF1ZXN0aW9ucy5sZW5ndGggPiAwXCI+XHJcbiAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgc2VjdGlvbiBvZiBkZWxldGVkUXVlc3Rpb25zXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJxdWVzdGV4dFwiPlNlY3Rpb24gTmFtZTogPHNwYW4gY2xhc3M9XCJxdWVzc3VidGV4dFwiPnt7IHNlY3Rpb24uc2VjdGlvbk5hbWUgfX08L3NwYW4+PC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IHF1ZXN0aW9uIG9mIHNlY3Rpb24ucXVlc3Rpb25zOyBsZXQgaSA9IGluZGV4XCIgPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicXVlc3RleHQgbXQtMlwiPlF1ZXN0aW9uIE5vIDogPHNwYW4gY2xhc3M9XCJxdWVzc3VidGV4dFwiPnt7IHF1ZXN0aW9uPy5xbm8gfHwgJy0nIH19PC9zcGFuPjwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlY2tsaXN0ZnJhbWUgbXktNlwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLXJlc3BvbnNpdmVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8dGFibGUgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGhlYWQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHIgY2xhc3M9XCJmcmFtZXRleHRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJmcmFtZXRleHQxIGNvbC0yXCI+RmllbGRzPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJmcmFtZXRleHQgY29sLTVcIj5QcmV2aW91czwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwiZnJhbWV0ZXh0cHJpbWFyeSBjb2wtNVwiPlVwZGF0ZWQ8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC90aGVhZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRib2R5ID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJxdWVzdGlvbmZpZWxkdGV4dCBjb2wtMlwiPlF1ZXN0aW9uIERlbGV0ZWQ8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cIlByZXZpb3VzZmllbGR0ZXh0IGNvbC01XCI+IC0gPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJjaGFuZ2VzZmllbGR0ZXh0IGNvbC01XCI+e3sgcXVlc3Rpb24/LnFuYW1lIHx8ICctJyB9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3Rib2R5PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdGFibGU+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIFxyXG4gICAgICAgIDwhLS0gUXVlc3Rpb24gRGVsZXRlZCB2YXJpZW50IGVuZCAtLT5cclxuXHJcbiAgICAgICAgPCEtLSBRdWVzdGlvbiBFZGl0ZWQgdmFyaWVudCBzdGFydCAtLT5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwiZWRpdGVkUXVlc3Rpb25zLmxlbmd0aCA+IDBcIj5cclxuICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBzZWN0aW9uIG9mIGVkaXRlZFF1ZXN0aW9uc1wiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInF1ZXN0ZXh0XCI+U2VjdGlvbiBOYW1lOiA8c3BhbiBjbGFzcz1cInF1ZXNzdWJ0ZXh0XCI+e3sgc2VjdGlvbi5zZWN0aW9uTmFtZSB8fCAnLScgfX08L3NwYW4+PC9kaXY+XHJcbiAgICAgIFxyXG4gICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgcXVlc3Rpb24gb2Ygc2VjdGlvbi5xdWVzdGlvbnNcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicXVlc3RleHQgbXQtMlwiPlF1ZXN0aW9uIE5vIDogPHNwYW4gY2xhc3M9XCJxdWVzc3VidGV4dFwiPnt7IHF1ZXN0aW9uPy5wcmV2aW91cz8ucW5vIHx8IHF1ZXN0aW9uPy5uZXc/LnFubyB8fCAnLScgfX08L3NwYW4+PC9kaXY+XHJcbiAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZWNrbGlzdGZyYW1lIG15LTZcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLXJlc3BvbnNpdmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDx0YWJsZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8dGhlYWQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ciBjbGFzcz1cImZyYW1ldGV4dFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwiZnJhbWV0ZXh0MSBjb2wtMlwiPkZpZWxkczwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJmcmFtZXRleHQgY29sLTUgcHJldmlvdXMtZmllbGRcIj5QcmV2aW91czwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJmcmFtZXRleHRwcmltYXJ5IGNvbC01IHVwZGF0ZWQtZmllbGRcIj5VcGRhdGVkPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoZWFkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDx0Ym9keT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBRdWVzdGlvbiBOYW1lIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJxdWVzdGlvbmZpZWxkdGV4dCBjb2wtMlwiPlF1ZXN0aW9uIEVkaXRlZDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJQcmV2aW91c2ZpZWxkdGV4dCBjb2wtNVwiPnt7IHF1ZXN0aW9uLnByZXZpb3VzPy5xbmFtZSB8fCAnLScgfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiY2hhbmdlc2ZpZWxkdGV4dCBjb2wtNVwiPnt7IHF1ZXN0aW9uLm5ldz8ucW5hbWUgfHwgJy0nIH19PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gQW5zd2VyIFR5cGUgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cInF1ZXN0aW9uZmllbGR0ZXh0IGNvbC0yXCI+VHlwZTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJQcmV2aW91c2ZpZWxkdGV4dCBjb2wtNVwiPnt7IGdldEFuc3dlclR5cGVMYWJlbChxdWVzdGlvbi5wcmV2aW91cz8uYW5zd2VyVHlwZSkgfHwgJy0nIH19PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cImNoYW5nZXNmaWVsZHRleHQgY29sLTVcIj57eyBnZXRBbnN3ZXJUeXBlTGFiZWwocXVlc3Rpb24ubmV3Py5hbnN3ZXJUeXBlKSB8fCAnLScgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIFJlZmVyZW5jZSBJbWFnZSAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwicXVlc3Rpb25maWVsZHRleHQgY29sLTJcIj5SZWZlcmVuY2UgSW1hZ2U8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiUHJldmlvdXNmaWVsZHRleHQgY29sLTVcIj4tPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiY2hhbmdlc2ZpZWxkdGV4dCBjb2wtNVwiPiB7e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBxdWVzdGlvbi5wcmV2aW91cz8ucXVlc3Rpb25SZWZlcmVuY2VJbWFnZSAmJiAhcXVlc3Rpb24ubmV3Py5xdWVzdGlvblJlZmVyZW5jZUltYWdlID8gJ0RlbGV0ZWQnIDpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIXF1ZXN0aW9uLnByZXZpb3VzPy5xdWVzdGlvblJlZmVyZW5jZUltYWdlICYmIHF1ZXN0aW9uLm5ldz8ucXVlc3Rpb25SZWZlcmVuY2VJbWFnZSA/ICdBZGRlZCcgOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBxdWVzdGlvbi5wcmV2aW91cz8ucXVlc3Rpb25SZWZlcmVuY2VJbWFnZSAhPT0gcXVlc3Rpb24ubmV3Py5xdWVzdGlvblJlZmVyZW5jZUltYWdlID8gJ1VwZGF0ZWQnIDpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy0nXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgICAgPCEtLSBRdWVzdGlvbiBFZGl0ZWQgdmFyaWVudCBlbmQgLS0+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8IS0tIHVwZGF0ZWQgLS0+XHJcbiAgICAgICAgIDwhLS0gQ29uZmlndXJhdGlvbiBVcGRhdGVzIHN0YXJ0IC0tPlxyXG4gICAgICAgICA8ZGl2ICAqbmdJZj1cImFjdGlvblR5cGUgPT09ICd1cGRhdGVkJyB8fCBhY3Rpb25UeXBlID09PSAnZHJhZnQnXCIgY2xhc3M9XCJjaGVja2xpc3RmcmFtZSBteS02XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1yZXNwb25zaXZlXCI+XHJcbiAgICAgICAgICAgICAgPHRhYmxlPlxyXG4gICAgICAgICAgICAgICAgPHRoZWFkPlxyXG4gICAgICAgICAgICAgICAgICA8dHIgY2xhc3M9XCJmcmFtZXRleHRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJmcmFtZXRleHQxIGNvbC0yXCI+RmllbGRzPC90aD5cclxuICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJmcmFtZXRleHQgY29sLTUgdy01MFwiPlByZXZpb3VzPC90aD5cclxuICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJmcmFtZXRleHRwcmltYXJ5IGNvbC01IHctNTBcIj5VcGRhdGVkPC90aD5cclxuICAgICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgIDwvdGhlYWQ+XHJcbiAgICAgICAgICAgICAgICA8dGJvZHk+XHJcbiAgICAgICAgICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJxdWVzdGlvbmZpZWxkdGV4dCBjb2wtMlwiPlN0b3JlIEFkZGVkPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJjb25maWdQcmV2aW91c2ZpZWxkdGV4dCBjb2wtNSB3LTUwXCI+IC0gPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJjaGFuZ2VzZmllbGR0ZXh0IGNvbC01IHctNTBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJsb2dEZXRhaWxzPy5zdG9yZUFkZGVkPy5sZW5ndGg7IGVsc2Ugbm9EYXRhXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsaWItc3RvcmUtdXNlci1kcm9wZG93biBbaXRlbXNdPVwibG9nRGV0YWlscy5zdG9yZUFkZGVkXCIgdGl0bGU9XCJTdG9yZXNcIj48L2xpYi1zdG9yZS11c2VyLWRyb3Bkb3duPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI25vRGF0YT4tPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgPCEtLSBTY2hlZHVsZSBVcGRhdGUgLS0+XHJcbiAgICAgICAgICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJxdWVzdGlvbmZpZWxkdGV4dCBjb2wtMlwiPlNjaGVkdWxlPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJjb25maWdQcmV2aW91c2ZpZWxkdGV4dCBjb2wtNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJyZWNlaXZlZERhdGEgPT09ICdjaGVja2xpc3QnICYmIGxvZ0RldGFpbHM/LnNjaGVkdWxlPy5wcmV2aW91cz8uc2NoZWR1bGVSZXBlYXRlZFR5cGUgPT09ICdvbmV0aW1lJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJteS0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTYgMlY2TTggMlY2TTMgMTBIMjFNNSA0SDE5QzIwLjEwNDYgNCAyMSA0Ljg5NTQzIDIxIDZWMjBDMjEgMjEuMTA0NiAyMC4xMDQ2IDIyIDE5IDIySDVDMy44OTU0MyAyMiAzIDIxLjEwNDYgMyAyMFY2QzMgNC44OTU0MyAzLjg5NTQzIDQgNSA0WlwiIHN0cm9rZT1cIiM2NjcwODVcIiBzdHJva2Utd2lkdGg9XCIxLjRcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1zLTIgbXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwibG9nRGV0YWlscz8uc2NoZWR1bGU/LnByZXZpb3VzPy5zY2hlZHVsZVJlcGVhdGVkVHlwZSA9PT0gJ29uZXRpbWUnXCI+T25jZSBvbjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcy0xXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBsb2dEZXRhaWxzPy5zY2hlZHVsZT8ucHJldmlvdXM/LnNjaGVkdWxlRGF0ZVN0cmluZyA/IGZvcm1hdERhdGUobG9nRGV0YWlscy5zY2hlZHVsZS5wcmV2aW91cy5zY2hlZHVsZURhdGVTdHJpbmcpIDogJy0nIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+PGJyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwcmV2aW91c2xpbmVoZWlnaHRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xMiA2VjEyTDE2IDE0TTIyIDEyQzIyIDE3LjUyMjggMTcuNTIyOCAyMiAxMiAyMkM2LjQ3NzE1IDIyIDIgMTcuNTIyOCAyIDEyQzIgNi40NzcxNSA2LjQ3NzE1IDIgMTIgMkMxNy41MjI4IDIgMjIgNi40NzcxNSAyMiAxMlpcIiBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMS40XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcy0yXCI+e3sgbG9nRGV0YWlscz8uc2NoZWR1bGU/LnByZXZpb3VzPy50aW1lIHx8ICctJyB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj48YnI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwicmVjZWl2ZWREYXRhID09PSAndGFzaycgJiYgbG9nRGV0YWlscz8uc2NoZWR1bGU/LnByZXZpb3VzPy5zY2hlZHVsZURhdGVTdHJpbmdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXktM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTE2IDJWNk04IDJWNk0zIDEwSDIxTTUgNEgxOUMyMC4xMDQ2IDQgMjEgNC44OTU0MyAyMSA2VjIwQzIxIDIxLjEwNDYgMjAuMTA0NiAyMiAxOSAyMkg1QzMuODk1NDMgMjIgMyAyMS4xMDQ2IDMgMjBWNkMzIDQuODk1NDMgMy44OTU0MyA0IDUgNFpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMS40XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXMtMiBtdC0yXCI+RHVlIERhdGU8L3NwYW4+IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXMtMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBsb2dEZXRhaWxzPy5zY2hlZHVsZT8ucHJldmlvdXM/LnNjaGVkdWxlRGF0ZVN0cmluZyA/IGZvcm1hdERhdGUobG9nRGV0YWlscy5zY2hlZHVsZS5wcmV2aW91cy5zY2hlZHVsZURhdGVTdHJpbmcpIDogJy0nIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPjxicj5cclxuICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInByZXZpb3VzbGluZWhlaWdodFwiICpuZ0lmPVwibG9nRGV0YWlscz8uc2NoZWR1bGU/LnByZXZpb3VzPy50aW1lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTIgNlYxMkwxNiAxNE0yMiAxMkMyMiAxNy41MjI4IDE3LjUyMjggMjIgMTIgMjJDNi40NzcxNSAyMiAyIDE3LjUyMjggMiAxMkMyIDYuNDc3MTUgNi40NzcxNSAyIDEyIDJDMTcuNTIyOCAyIDIyIDYuNDc3MTUgMjIgMTJaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzY2NzA4NVwiIHN0cm9rZS13aWR0aD1cIjEuNFwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1zLTJcIj57eyBsb2dEZXRhaWxzPy5zY2hlZHVsZT8ucHJldmlvdXM/LnRpbWUgfHwgJy0nIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJsb2dEZXRhaWxzPy5zY2hlZHVsZT8ucHJldmlvdXM/LnNjaGVkdWxlUmVwZWF0ZWRUeXBlID09PSAnd2Vla2RheSdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXktM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTE2IDJWNk04IDJWNk0zIDEwSDIxTTUgNEgxOUMyMC4xMDQ2IDQgMjEgNC44OTU0MyAyMSA2VjIwQzIxIDIxLjEwNDYgMjAuMTA0NiAyMiAxOSAyMkg1QzMuODk1NDMgMjIgMyAyMS4xMDQ2IDMgMjBWNkMzIDQuODk1NDMgMy44OTU0MyA0IDUgNFpcIiBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMS40XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcy0yXCI+RXZlcnkge3sgbG9nRGV0YWlscz8uc2NoZWR1bGU/LnByZXZpb3VzPy5zY2hlZHVsZSB8fCAnLScgfX08L3NwYW4+IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImxvZ0RldGFpbHM/LnNjaGVkdWxlPy5wcmV2aW91cz8uY29uZmlnU3RhcnREYXRlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcy0yXCI+U3RhcnRzIGZyb20ge3sgZm9ybWF0RGF0ZShsb2dEZXRhaWxzPy5zY2hlZHVsZT8ucHJldmlvdXM/LmNvbmZpZ1N0YXJ0RGF0ZSkgfX0gLTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImxvZ0RldGFpbHM/LnNjaGVkdWxlPy5wcmV2aW91cz8uY29uZmlnU3RhcnREYXRlICYmIGxvZ0RldGFpbHM/LnNjaGVkdWxlPy5wcmV2aW91cz8uY29uZmlnRW5kRGF0ZVwiIGNsYXNzPVwibXMtMlwiPi0gRXZlcnkgLTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcy0yXCI+e3sgbG9nRGV0YWlscz8uc2NoZWR1bGU/LnByZXZpb3VzPy5zY2hlZHVsZVJlcGVhdGVkRGF5IHx8ICctJyB9fTwvc3Bhbj4gXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXMtMlwiPnt7IGxvZ0RldGFpbHM/LnNjaGVkdWxlPy5wcmV2aW91cz8uc2NoZWR1bGVSZXBlYXRlZFR5cGUgfHwgJy0nIH19PC9zcGFuPiAtXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXMtMlwiPnt7IGxvZ0RldGFpbHM/LnNjaGVkdWxlPy5wcmV2aW91cz8uc2NoZWR1bGVXZWVrRGF5cyB8fCAnLScgfX08L3NwYW4+IFxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJsb2dEZXRhaWxzPy5zY2hlZHVsZT8ucHJldmlvdXM/LmNvbmZpZ0VuZERhdGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1zLTJcIj4tIEVuZHMgb24gIHt7IGZvcm1hdERhdGUobG9nRGV0YWlscz8uc2NoZWR1bGU/LnByZXZpb3VzPy5jb25maWdFbmREYXRlKSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPjxicj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicHJldmlvdXNsaW5laGVpZ2h0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTIgNlYxMkwxNiAxNE0yMiAxMkMyMiAxNy41MjI4IDE3LjUyMjggMjIgMTIgMjJDNi40NzcxNSAyMiAyIDE3LjUyMjggMiAxMkMyIDYuNDc3MTUgNi40NzcxNSAyIDEyIDJDMTcuNTIyOCAyIDIyIDYuNDc3MTUgMjIgMTJaXCIgc3Ryb2tlPVwiIzY2NzA4NVwiIHN0cm9rZS13aWR0aD1cIjEuNFwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXMtMlwiPnt7IGxvZ0RldGFpbHM/LnNjaGVkdWxlPy5wcmV2aW91cz8udGltZSB8fCAnLScgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+PGJyPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImxvZ0RldGFpbHM/LnNjaGVkdWxlPy5wcmV2aW91cz8uc2NoZWR1bGVSZXBlYXRlZFR5cGUgPT09ICdkYWlseSdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXktM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTE2IDJWNk04IDJWNk0zIDEwSDIxTTUgNEgxOUMyMC4xMDQ2IDQgMjEgNC44OTU0MyAyMSA2VjIwQzIxIDIxLjEwNDYgMjAuMTA0NiAyMiAxOSAyMkg1QzMuODk1NDMgMjIgMyAyMS4xMDQ2IDMgMjBWNkMzIDQuODk1NDMgMy44OTU0MyA0IDUgNFpcIiBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMS40XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcy0yXCI+UmVwZWF0cyB7eyBsb2dEZXRhaWxzPy5zY2hlZHVsZT8ucHJldmlvdXM/LnNjaGVkdWxlIHx8ICctJyB9fSAtPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImxvZ0RldGFpbHM/LnNjaGVkdWxlPy5wcmV2aW91cz8uY29uZmlnU3RhcnREYXRlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcy0yXCI+U3RhcnRzIGZyb20ge3sgZm9ybWF0RGF0ZShsb2dEZXRhaWxzPy5zY2hlZHVsZT8ucHJldmlvdXM/LmNvbmZpZ1N0YXJ0RGF0ZSkgfX0gLTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImxvZ0RldGFpbHM/LnNjaGVkdWxlPy5wcmV2aW91cz8uY29uZmlnU3RhcnREYXRlICYmIGxvZ0RldGFpbHM/LnNjaGVkdWxlPy5wcmV2aW91cz8uY29uZmlnRW5kRGF0ZVwiIGNsYXNzPVwibXMtMlwiPi0gRXZlcnkgLTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcy0yXCI+e3sgbG9nRGV0YWlscz8uc2NoZWR1bGU/LnByZXZpb3VzPy5zY2hlZHVsZVJlcGVhdGVkRGF5IHx8ICctJyB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcy0yXCI+e3sgbG9nRGV0YWlscz8uc2NoZWR1bGU/LnByZXZpb3VzPy5zY2hlZHVsZVJlcGVhdGVkVHlwZSB8fCAnLScgfX08L3NwYW4+IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImxvZ0RldGFpbHM/LnNjaGVkdWxlPy5wcmV2aW91cz8uY29uZmlnRW5kRGF0ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXMtMlwiPi0gRW5kcyBvbiAge3sgZm9ybWF0RGF0ZShsb2dEZXRhaWxzPy5zY2hlZHVsZT8ucHJldmlvdXM/LmNvbmZpZ0VuZERhdGUpIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+PGJyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwcmV2aW91c2xpbmVoZWlnaHRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xMiA2VjEyTDE2IDE0TTIyIDEyQzIyIDE3LjUyMjggMTcuNTIyOCAyMiAxMiAyMkM2LjQ3NzE1IDIyIDIgMTcuNTIyOCAyIDEyQzIgNi40NzcxNSA2LjQ3NzE1IDIgMTIgMkMxNy41MjI4IDIgMjIgNi40NzcxNSAyMiAxMlpcIiBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMS40XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcy0yXCI+e3sgbG9nRGV0YWlscz8uc2NoZWR1bGU/LnByZXZpb3VzPy50aW1lIHx8ICctJyB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj48YnI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwibG9nRGV0YWlscz8uc2NoZWR1bGU/LnByZXZpb3VzPy5zY2hlZHVsZVJlcGVhdGVkVHlwZSA9PT0gJ3dlZWtseSdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXktM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTE2IDJWNk04IDJWNk0zIDEwSDIxTTUgNEgxOUMyMC4xMDQ2IDQgMjEgNC44OTU0MyAyMSA2VjIwQzIxIDIxLjEwNDYgMjAuMTA0NiAyMiAxOSAyMkg1QzMuODk1NDMgMjIgMyAyMS4xMDQ2IDMgMjBWNkMzIDQuODk1NDMgMy44OTU0MyA0IDUgNFpcIiBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMS40XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcy0yXCI+UmVwZWF0cyB7eyBsb2dEZXRhaWxzPy5zY2hlZHVsZT8ucHJldmlvdXM/LnNjaGVkdWxlIHx8ICctJyB9fSAtPC9zcGFuPiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJsb2dEZXRhaWxzPy5zY2hlZHVsZT8ucHJldmlvdXM/LmNvbmZpZ1N0YXJ0RGF0ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXMtMlwiPlN0YXJ0cyBmcm9tIHt7IGZvcm1hdERhdGUobG9nRGV0YWlscz8uc2NoZWR1bGU/LnByZXZpb3VzPy5jb25maWdTdGFydERhdGUpIH19IC08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJsb2dEZXRhaWxzPy5zY2hlZHVsZT8ucHJldmlvdXM/LmNvbmZpZ1N0YXJ0RGF0ZSAmJiBsb2dEZXRhaWxzPy5zY2hlZHVsZT8ucHJldmlvdXM/LmNvbmZpZ0VuZERhdGVcIiBjbGFzcz1cIm1zLTJcIj4tIEV2ZXJ5IC08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXMtMlwiPnt7IGxvZ0RldGFpbHM/LnNjaGVkdWxlPy5wcmV2aW91cz8uc2NoZWR1bGVSZXBlYXRlZERheSB8fCAnLScgfX08L3NwYW4+IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1zLTJcIj57eyBsb2dEZXRhaWxzPy5zY2hlZHVsZT8ucHJldmlvdXM/LnNjaGVkdWxlUmVwZWF0ZWRUeXBlIHx8ICctJyB9fTwvc3Bhbj4gLVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1zLTJcIj57eyBsb2dEZXRhaWxzPy5zY2hlZHVsZT8ucHJldmlvdXM/LnNjaGVkdWxlV2Vla0RheXMgfHwgJy0nIH19PC9zcGFuPiBcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwibG9nRGV0YWlscz8uc2NoZWR1bGU/LnByZXZpb3VzPy5jb25maWdFbmREYXRlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcy0yXCI+LSBFbmRzIG9uICB7eyBmb3JtYXREYXRlKGxvZ0RldGFpbHM/LnNjaGVkdWxlPy5wcmV2aW91cz8uY29uZmlnRW5kRGF0ZSkgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj48YnI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInByZXZpb3VzbGluZWhlaWdodFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTEyIDZWMTJMMTYgMTRNMjIgMTJDMjIgMTcuNTIyOCAxNy41MjI4IDIyIDEyIDIyQzYuNDc3MTUgMjIgMiAxNy41MjI4IDIgMTJDMiA2LjQ3NzE1IDYuNDc3MTUgMiAxMiAyQzE3LjUyMjggMiAyMiA2LjQ3NzE1IDIyIDEyWlwiIHN0cm9rZT1cIiM2NjcwODVcIiBzdHJva2Utd2lkdGg9XCIxLjRcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1zLTJcIj57eyBsb2dEZXRhaWxzPy5zY2hlZHVsZT8ucHJldmlvdXM/LnRpbWUgfHwgJy0nIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPjxicj5cclxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJsb2dEZXRhaWxzPy5zY2hlZHVsZT8ucHJldmlvdXM/LnNjaGVkdWxlUmVwZWF0ZWRUeXBlID09PSAnbW9udGhseSdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXktM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTE2IDJWNk04IDJWNk0zIDEwSDIxTTUgNEgxOUMyMC4xMDQ2IDQgMjEgNC44OTU0MyAyMSA2VjIwQzIxIDIxLjEwNDYgMjAuMTA0NiAyMiAxOSAyMkg1QzMuODk1NDMgMjIgMyAyMS4xMDQ2IDMgMjBWNkMzIDQuODk1NDMgMy44OTU0MyA0IDUgNFpcIiBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMS40XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcy0yXCI+UmVwZWF0cyB7eyBsb2dEZXRhaWxzPy5zY2hlZHVsZT8ucHJldmlvdXM/LnNjaGVkdWxlIHx8ICctJyB9fSAtPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImxvZ0RldGFpbHM/LnNjaGVkdWxlPy5wcmV2aW91cz8uY29uZmlnU3RhcnREYXRlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcy0yXCI+U3RhcnRzIGZyb20ge3sgZm9ybWF0RGF0ZShsb2dEZXRhaWxzPy5zY2hlZHVsZT8ucHJldmlvdXM/LmNvbmZpZ1N0YXJ0RGF0ZSkgfX0gLTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImxvZ0RldGFpbHM/LnNjaGVkdWxlPy5wcmV2aW91cz8uY29uZmlnU3RhcnREYXRlICYmIGxvZ0RldGFpbHM/LnNjaGVkdWxlPy5wcmV2aW91cz8uY29uZmlnRW5kRGF0ZVwiIGNsYXNzPVwibXMtMlwiPi0gRXZlcnkgLTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcy0yXCI+e3sgbG9nRGV0YWlscz8uc2NoZWR1bGU/LnByZXZpb3VzPy5zY2hlZHVsZVJlcGVhdGVkRGF5IHx8ICctJyB9fTwvc3Bhbj4gXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXMtMlwiPnt7IGxvZ0RldGFpbHM/LnNjaGVkdWxlPy5wcmV2aW91cz8uc2NoZWR1bGVSZXBlYXRlZFR5cGUgfHwgJy0nIH19PC9zcGFuPiAtXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIShsb2dEZXRhaWxzPy5zY2hlZHVsZT8ucHJldmlvdXM/LnNjaGVkdWxlUmVwZWF0ZWRNb250aFdlZWs/Lmxlbmd0aCA9PT0gMSlcIj5PbiB0aGU8L3NwYW4+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImxvZ0RldGFpbHM/LnNjaGVkdWxlPy5wcmV2aW91cz8uc2NoZWR1bGVSZXBlYXRlZE1vbnRoV2Vlaz8ubGVuZ3RoID09PSAxXCI+T24gZGF5PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJsb2dEZXRhaWxzPy5zY2hlZHVsZT8ucHJldmlvdXM/LnNjaGVkdWxlUmVwZWF0ZWRNb250aFdlZWsgfHwgbG9nRGV0YWlscz8uc2NoZWR1bGU/LnByZXZpb3VzPy5zcGVjaWZpY0RhdGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInNjaGVkdWxlV2Vla3NBcnJheSgpLmxlbmd0aDsgZWxzZSBzaG93U3BlY2lmaWNEYXRlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdGb3I9XCJsZXQgd2VlayBvZiBzY2hlZHVsZVdlZWtzQXJyYXkoKTsgbGV0IGkgPSBpbmRleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBnZXRXZWVrT3JkaW5hbChwYXJzZVdlZWtOdW1iZXIod2Vlay5zcGxpdCgnICcpWzBdKSkgfX0ge3sgd2Vlay5zcGxpdCgnICcpWzFdIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiaSA8IHNjaGVkdWxlV2Vla3NBcnJheSgpLmxlbmd0aCAtIDFcIj4sIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNzaG93U3BlY2lmaWNEYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJsb2dEZXRhaWxzPy5zY2hlZHVsZT8ucHJldmlvdXM/LnNwZWNpZmljRGF0ZT8ubGVuZ3RoID4gMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBsb2dEZXRhaWxzPy5zY2hlZHVsZT8ucHJldmlvdXM/LnNwZWNpZmljRGF0ZS5qb2luKCcsICcpIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJsb2dEZXRhaWxzPy5zY2hlZHVsZT8ucHJldmlvdXM/LmNvbmZpZ0VuZERhdGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1zLTJcIj4tIEVuZHMgb24gIHt7IGZvcm1hdERhdGUobG9nRGV0YWlscz8uc2NoZWR1bGU/LnByZXZpb3VzPy5jb25maWdFbmREYXRlKSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPjxicj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicHJldmlvdXNsaW5laGVpZ2h0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTIgNlYxMkwxNiAxNE0yMiAxMkMyMiAxNy41MjI4IDE3LjUyMjggMjIgMTIgMjJDNi40NzcxNSAyMiAyIDE3LjUyMjggMiAxMkMyIDYuNDc3MTUgNi40NzcxNSAyIDEyIDJDMTcuNTIyOCAyIDIyIDYuNDc3MTUgMjIgMTJaXCIgc3Ryb2tlPVwiIzY2NzA4NVwiIHN0cm9rZS13aWR0aD1cIjEuNFwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXMtMlwiPnt7IGxvZ0RldGFpbHM/LnNjaGVkdWxlPy5wcmV2aW91cz8udGltZSB8fCAnLScgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+PGJyPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImxvZ0RldGFpbHM/LnNjaGVkdWxlPy5wcmV2aW91cz8uc2NoZWR1bGVSZXBlYXRlZFR5cGUgPT09ICdyYW5nZSdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXktM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTE2IDJWNk04IDJWNk0zIDEwSDIxTTUgNEgxOUMyMC4xMDQ2IDQgMjEgNC44OTU0MyAyMSA2VjIwQzIxIDIxLjEwNDYgMjAuMTA0NiAyMiAxOSAyMkg1QzMuODk1NDMgMjIgMyAyMS4xMDQ2IDMgMjBWNkMzIDQuODk1NDMgMy44OTU0MyA0IDUgNFpcIiBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMS40XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcy0yXCI+Q3VzdG9tIFJhbmdlPC9zcGFuPiAtXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwibG9nRGV0YWlscz8uc2NoZWR1bGU/LnByZXZpb3VzPy5jb25maWdTdGFydERhdGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1zLTJcIj5TdGFydHMgZnJvbSB7eyBmb3JtYXREYXRlKGxvZ0RldGFpbHM/LnNjaGVkdWxlPy5wcmV2aW91cz8uY29uZmlnU3RhcnREYXRlKSB9fSAtPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwibG9nRGV0YWlscz8uc2NoZWR1bGU/Lm5ldz8uc3BlY2lmaWNEYXRlXCIgY2xhc3M9XCJtcy0yXCI+LSBPbiB0aGUgU3BlY2lmaWMgRGF0ZXMgLSA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPHNwYW4gY2xhc3M9XCJtcy0yXCI+e3sgbG9nRGV0YWlscz8uc2NoZWR1bGU/LnByZXZpb3VzPy5zY2hlZHVsZVJlcGVhdGVkRGF5IHx8ICctJyB9fTwvc3Bhbj4gIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1zLTJcIj57eyBmb3JtYXREYXRlU3RyaW5nKGxvZ0RldGFpbHM/LnNjaGVkdWxlPy5wcmV2aW91cz8uc3BlY2lmaWNEYXRlWzBdKSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJsb2dEZXRhaWxzPy5zY2hlZHVsZT8ucHJldmlvdXM/LmNvbmZpZ0VuZERhdGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1zLTJcIj4tIEVuZHMgb24gIHt7IGZvcm1hdERhdGUobG9nRGV0YWlscz8uc2NoZWR1bGU/LnByZXZpb3VzPy5jb25maWdFbmREYXRlKSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPjxicj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicHJldmlvdXNsaW5laGVpZ2h0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTIgNlYxMkwxNiAxNE0yMiAxMkMyMiAxNy41MjI4IDE3LjUyMjggMjIgMTIgMjJDNi40NzcxNSAyMiAyIDE3LjUyMjggMiAxMkMyIDYuNDc3MTUgNi40NzcxNSAyIDEyIDJDMTcuNTIyOCAyIDIyIDYuNDc3MTUgMjIgMTJaXCIgc3Ryb2tlPVwiIzY2NzA4NVwiIHN0cm9rZS13aWR0aD1cIjEuNFwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXMtMlwiPnt7IGxvZ0RldGFpbHM/LnNjaGVkdWxlPy5wcmV2aW91cz8udGltZSB8fCAnLScgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+PGJyPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8IS0tIDx0ZCBjbGFzcz1cImNvbmZpZ1ByZXZpb3VzZmllbGR0ZXh0IGNvbC01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm15LTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xNiAyVjZNOCAyVjZNMyAxMEgyMU01IDRIMTlDMjAuMTA0NiA0IDIxIDQuODk1NDMgMjEgNlYyMEMyMSAyMS4xMDQ2IDIwLjEwNDYgMjIgMTkgMjJINUMzLjg5NTQzIDIyIDMgMjEuMTA0NiAzIDIwVjZDMyA0Ljg5NTQzIDMuODk1NDMgNCA1IDRaXCIgc3Ryb2tlPVwiIzY2NzA4NVwiIHN0cm9rZS13aWR0aD1cIjEuNFwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXMtMlwiPnt7IGxvZ0RldGFpbHM/LnNjaGVkdWxlPy5wcmV2aW91cz8uc2NoZWR1bGUgfHwgJ04vQScgfX0gb248L3NwYW4+IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1zLTJcIj57eyBsb2dEZXRhaWxzPy5zY2hlZHVsZT8ucHJldmlvdXM/LnJlcGVhdHMgfHwgJ04vQScgfX08L3NwYW4+IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImxvZ0RldGFpbHM/LnNjaGVkdWxlPy5wcmV2aW91cz8uc2NoZWR1bGVTdGFydFRpbWVfaXNvXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcy0yXCI+LSBTdGFydHMgZnJvbTogIHt7IGZvcm1hdERhdGUobG9nRGV0YWlscz8uc2NoZWR1bGU/LnByZXZpb3VzPy5zY2hlZHVsZVN0YXJ0VGltZV9pc28pIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwibG9nRGV0YWlscz8uc2NoZWR1bGU/LnByZXZpb3VzPy5vY2N1cnM/Lmxlbmd0aCA+IDBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1zLTJcIj57eyBsb2dEZXRhaWxzPy5zY2hlZHVsZT8ucHJldmlvdXM/Lm9jY3Vycz8uam9pbignLCAnKSB8fCAnTi9BJyB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPjxicj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTEyIDZWMTJMMTYgMTRNMjIgMTJDMjIgMTcuNTIyOCAxNy41MjI4IDIyIDEyIDIyQzYuNDc3MTUgMjIgMiAxNy41MjI4IDIgMTJDMiA2LjQ3NzE1IDYuNDc3MTUgMiAxMiAyQzE3LjUyMjggMiAyMiA2LjQ3NzE1IDIyIDEyWlwiIHN0cm9rZT1cIiM2NjcwODVcIiBzdHJva2Utd2lkdGg9XCIxLjRcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1zLTJcIj57eyBsb2dEZXRhaWxzPy5zY2hlZHVsZT8ucHJldmlvdXM/LnRpbWUgfHwgJ04vQScgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+PGJyPlxyXG4gICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICA8L3RkPiAtLT5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiY2hhbmdlc2ZpZWxkdGV4dCBjb2wtNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJsb2dEZXRhaWxzPy5zY2hlZHVsZT8ubmV3Py5zY2hlZHVsZVJlcGVhdGVkVHlwZSA9PT0gJ29uZXRpbWUnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXktM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xNiAyVjZNOCAyVjZNMyAxMEgyMU01IDRIMTlDMjAuMTA0NiA0IDIxIDQuODk1NDMgMjEgNlYyMEMyMSAyMS4xMDQ2IDIwLjEwNDYgMjIgMTkgMjJINUMzLjg5NTQzIDIyIDMgMjEuMTA0NiAzIDIwVjZDMyA0Ljg5NTQzIDMuODk1NDMgNCA1IDRaXCIgc3Ryb2tlPVwiIzY2NzA4NVwiIHN0cm9rZS13aWR0aD1cIjEuNFwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1zLTIgbXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJsb2dEZXRhaWxzPy5zY2hlZHVsZT8ubmV3Py5zY2hlZHVsZVJlcGVhdGVkVHlwZSA9PT0gJ29uZXRpbWUnXCI+T25jZSBvbjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcy0xXCI+IHt7IGxvZ0RldGFpbHM/LnNjaGVkdWxlPy5uZXc/LnNjaGVkdWxlRGF0ZVN0cmluZyA/IGZvcm1hdERhdGUobG9nRGV0YWlscy5zY2hlZHVsZS5uZXcuc2NoZWR1bGVEYXRlU3RyaW5nKSA6ICctJyB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj48YnI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibmV3bGluZWhlaWdodFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xMiA2VjEyTDE2IDE0TTIyIDEyQzIyIDE3LjUyMjggMTcuNTIyOCAyMiAxMiAyMkM2LjQ3NzE1IDIyIDIgMTcuNTIyOCAyIDEyQzIgNi40NzcxNSA2LjQ3NzE1IDIgMTIgMkMxNy41MjI4IDIgMjIgNi40NzcxNSAyMiAxMlpcIiBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMS40XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXMtMlwiPnt7IGxvZ0RldGFpbHM/LnNjaGVkdWxlPy5uZXc/LnRpbWUgfHwgJy0nIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+PGJyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJyZWNlaXZlZERhdGEgPT09ICd0YXNrJyAmJiBsb2dEZXRhaWxzPy5zY2hlZHVsZT8ubmV3Py5zY2hlZHVsZURhdGVTdHJpbmdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJteS0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTE2IDJWNk04IDJWNk0zIDEwSDIxTTUgNEgxOUMyMC4xMDQ2IDQgMjEgNC44OTU0MyAyMSA2VjIwQzIxIDIxLjEwNDYgMjAuMTA0NiAyMiAxOSAyMkg1QzMuODk1NDMgMjIgMyAyMS4xMDQ2IDMgMjBWNkMzIDQuODk1NDMgMy44OTU0MyA0IDUgNFpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM2NjcwODVcIiBzdHJva2Utd2lkdGg9XCIxLjRcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXMtMiBtdC0yXCI+RHVlIERhdGU8L3NwYW4+IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcy0xXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgbG9nRGV0YWlscz8uc2NoZWR1bGU/Lm5ldz8uc2NoZWR1bGVEYXRlU3RyaW5nID8gZm9ybWF0RGF0ZShsb2dEZXRhaWxzLnNjaGVkdWxlLm5ldy5zY2hlZHVsZURhdGVTdHJpbmcpIDogJy0nIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj48YnI+XHJcbiAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicHJldmlvdXNsaW5laGVpZ2h0XCIgKm5nSWY9XCJsb2dEZXRhaWxzPy5zY2hlZHVsZT8ubmV3Py50aW1lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTEyIDZWMTJMMTYgMTRNMjIgMTJDMjIgMTcuNTIyOCAxNy41MjI4IDIyIDEyIDIyQzYuNDc3MTUgMjIgMiAxNy41MjI4IDIgMTJDMiA2LjQ3NzE1IDYuNDc3MTUgMiAxMiAyQzE3LjUyMjggMiAyMiA2LjQ3NzE1IDIyIDEyWlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzY2NzA4NVwiIHN0cm9rZS13aWR0aD1cIjEuNFwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcy0yXCI+e3sgbG9nRGV0YWlscz8uc2NoZWR1bGU/Lm5ldz8udGltZSB8fCAnLScgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImxvZ0RldGFpbHM/LnNjaGVkdWxlPy5uZXc/LnNjaGVkdWxlUmVwZWF0ZWRUeXBlID09PSAnd2Vla2RheSdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJteS0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTE2IDJWNk04IDJWNk0zIDEwSDIxTTUgNEgxOUMyMC4xMDQ2IDQgMjEgNC44OTU0MyAyMSA2VjIwQzIxIDIxLjEwNDYgMjAuMTA0NiAyMiAxOSAyMkg1QzMuODk1NDMgMjIgMyAyMS4xMDQ2IDMgMjBWNkMzIDQuODk1NDMgMy44OTU0MyA0IDUgNFpcIiBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMS40XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXMtMlwiPkV2ZXJ5IHt7IGxvZ0RldGFpbHM/LnNjaGVkdWxlPy5uZXc/LnNjaGVkdWxlIHx8ICctJyB9fTwvc3Bhbj4gXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJsb2dEZXRhaWxzPy5zY2hlZHVsZT8ubmV3Py5jb25maWdTdGFydERhdGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXMtMlwiPlN0YXJ0cyBmcm9tIHt7IGZvcm1hdERhdGUobG9nRGV0YWlscz8uc2NoZWR1bGU/Lm5ldz8uY29uZmlnU3RhcnREYXRlKSB9fSAtPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImxvZ0RldGFpbHM/LnNjaGVkdWxlPy5uZXc/LmNvbmZpZ1N0YXJ0RGF0ZSAmJiBsb2dEZXRhaWxzPy5zY2hlZHVsZT8ubmV3Py5jb25maWdFbmREYXRlXCIgY2xhc3M9XCJtcy0yXCI+IEV2ZXJ5IC08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcy0yXCI+e3sgbG9nRGV0YWlscz8uc2NoZWR1bGU/Lm5ldz8uc2NoZWR1bGVSZXBlYXRlZERheSB8fCAnLScgfX08L3NwYW4+IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXMtMlwiPnt7IGxvZ0RldGFpbHM/LnNjaGVkdWxlPy5uZXc/LnNjaGVkdWxlUmVwZWF0ZWRUeXBlIHx8ICctJyB9fTwvc3Bhbj4gLVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXMtMlwiPnt7IGxvZ0RldGFpbHM/LnNjaGVkdWxlPy5uZXc/LnNjaGVkdWxlV2Vla0RheXMgfHwgJy0nIH19PC9zcGFuPiBcclxuICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImxvZ0RldGFpbHM/LnNjaGVkdWxlPy5uZXc/LmNvbmZpZ0VuZERhdGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXMtMlwiPi0gRW5kcyBvbiAge3sgZm9ybWF0RGF0ZShsb2dEZXRhaWxzPy5zY2hlZHVsZT8ubmV3Py5jb25maWdFbmREYXRlKSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj48YnI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibmV3bGluZWhlaWdodFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xMiA2VjEyTDE2IDE0TTIyIDEyQzIyIDE3LjUyMjggMTcuNTIyOCAyMiAxMiAyMkM2LjQ3NzE1IDIyIDIgMTcuNTIyOCAyIDEyQzIgNi40NzcxNSA2LjQ3NzE1IDIgMTIgMkMxNy41MjI4IDIgMjIgNi40NzcxNSAyMiAxMlpcIiBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMS40XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXMtMlwiPnt7IGxvZ0RldGFpbHM/LnNjaGVkdWxlPy5uZXc/LnRpbWUgfHwgJy0nIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+PGJyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJsb2dEZXRhaWxzPy5zY2hlZHVsZT8ubmV3Py5zY2hlZHVsZVJlcGVhdGVkVHlwZSA9PT0gJ2RhaWx5J1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm15LTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTYgMlY2TTggMlY2TTMgMTBIMjFNNSA0SDE5QzIwLjEwNDYgNCAyMSA0Ljg5NTQzIDIxIDZWMjBDMjEgMjEuMTA0NiAyMC4xMDQ2IDIyIDE5IDIySDVDMy44OTU0MyAyMiAzIDIxLjEwNDYgMyAyMFY2QzMgNC44OTU0MyAzLjg5NTQzIDQgNSA0WlwiIHN0cm9rZT1cIiM2NjcwODVcIiBzdHJva2Utd2lkdGg9XCIxLjRcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcy0yXCI+UmVwZWF0cyB7eyBsb2dEZXRhaWxzPy5zY2hlZHVsZT8ubmV3Py5zY2hlZHVsZSB8fCAnLScgfX0gLTwvc3Bhbj4gXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJsb2dEZXRhaWxzPy5zY2hlZHVsZT8ubmV3Py5jb25maWdTdGFydERhdGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXMtMlwiPlN0YXJ0cyBmcm9tIHt7IGZvcm1hdERhdGUobG9nRGV0YWlscz8uc2NoZWR1bGU/Lm5ldz8uY29uZmlnU3RhcnREYXRlKSB9fSAtPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImxvZ0RldGFpbHM/LnNjaGVkdWxlPy5uZXc/LmNvbmZpZ1N0YXJ0RGF0ZSAmJiBsb2dEZXRhaWxzPy5zY2hlZHVsZT8ubmV3Py5jb25maWdFbmREYXRlXCIgY2xhc3M9XCJtcy0yXCI+LSBFdmVyeSAtPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXMtMlwiPnt7IGxvZ0RldGFpbHM/LnNjaGVkdWxlPy5uZXc/LnNjaGVkdWxlUmVwZWF0ZWREYXkgfHwgJy0nIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXMtMlwiPnt7IGxvZ0RldGFpbHM/LnNjaGVkdWxlPy5uZXc/LnNjaGVkdWxlUmVwZWF0ZWRUeXBlIHx8ICctJyB9fTwvc3Bhbj4gXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJsb2dEZXRhaWxzPy5zY2hlZHVsZT8ubmV3Py5jb25maWdFbmREYXRlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1zLTJcIj4tIEVuZHMgb24gIHt7IGZvcm1hdERhdGUobG9nRGV0YWlscz8uc2NoZWR1bGU/Lm5ldz8uY29uZmlnRW5kRGF0ZSkgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+PGJyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm5ld2xpbmVoZWlnaHRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTIgNlYxMkwxNiAxNE0yMiAxMkMyMiAxNy41MjI4IDE3LjUyMjggMjIgMTIgMjJDNi40NzcxNSAyMiAyIDE3LjUyMjggMiAxMkMyIDYuNDc3MTUgNi40NzcxNSAyIDEyIDJDMTcuNTIyOCAyIDIyIDYuNDc3MTUgMjIgMTJaXCIgc3Ryb2tlPVwiIzY2NzA4NVwiIHN0cm9rZS13aWR0aD1cIjEuNFwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1zLTJcIj57eyBsb2dEZXRhaWxzPy5zY2hlZHVsZT8ubmV3Py50aW1lIHx8ICctJyB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPjxicj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwibG9nRGV0YWlscz8uc2NoZWR1bGU/Lm5ldz8uc2NoZWR1bGVSZXBlYXRlZFR5cGUgPT09ICd3ZWVrbHknXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXktM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xNiAyVjZNOCAyVjZNMyAxMEgyMU01IDRIMTlDMjAuMTA0NiA0IDIxIDQuODk1NDMgMjEgNlYyMEMyMSAyMS4xMDQ2IDIwLjEwNDYgMjIgMTkgMjJINUMzLjg5NTQzIDIyIDMgMjEuMTA0NiAzIDIwVjZDMyA0Ljg5NTQzIDMuODk1NDMgNCA1IDRaXCIgc3Ryb2tlPVwiIzY2NzA4NVwiIHN0cm9rZS13aWR0aD1cIjEuNFwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1zLTJcIj5SZXBlYXRzIHt7IGxvZ0RldGFpbHM/LnNjaGVkdWxlPy5uZXc/LnNjaGVkdWxlIHx8ICctJyB9fSAtPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwibG9nRGV0YWlscz8uc2NoZWR1bGU/Lm5ldz8uY29uZmlnU3RhcnREYXRlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1zLTJcIj5TdGFydHMgZnJvbSB7eyBmb3JtYXREYXRlKGxvZ0RldGFpbHM/LnNjaGVkdWxlPy5uZXc/LmNvbmZpZ1N0YXJ0RGF0ZSkgfX0gLTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJsb2dEZXRhaWxzPy5zY2hlZHVsZT8ubmV3Py5jb25maWdTdGFydERhdGUgJiYgbG9nRGV0YWlscz8uc2NoZWR1bGU/Lm5ldz8uY29uZmlnRW5kRGF0ZVwiIGNsYXNzPVwibXMtMlwiPi0gRXZlcnkgLTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1zLTJcIj57eyBsb2dEZXRhaWxzPy5zY2hlZHVsZT8ubmV3Py5zY2hlZHVsZVJlcGVhdGVkRGF5IHx8ICctJyB9fTwvc3Bhbj4gXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcy0yXCI+e3sgbG9nRGV0YWlscz8uc2NoZWR1bGU/Lm5ldz8uc2NoZWR1bGVSZXBlYXRlZFR5cGUgfHwgJy0nIH19PC9zcGFuPiAtXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcy0yXCI+e3sgbG9nRGV0YWlscz8uc2NoZWR1bGU/Lm5ldz8uc2NoZWR1bGVXZWVrRGF5cyB8fCAnLScgfX08L3NwYW4+IFxyXG4gIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwibG9nRGV0YWlscz8uc2NoZWR1bGU/Lm5ldz8uY29uZmlnRW5kRGF0ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcy0yXCI+LSBFbmRzIG9uICB7eyBmb3JtYXREYXRlKGxvZ0RldGFpbHM/LnNjaGVkdWxlPy5uZXc/LmNvbmZpZ0VuZERhdGUpIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPjxicj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJuZXdsaW5laGVpZ2h0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTEyIDZWMTJMMTYgMTRNMjIgMTJDMjIgMTcuNTIyOCAxNy41MjI4IDIyIDEyIDIyQzYuNDc3MTUgMjIgMiAxNy41MjI4IDIgMTJDMiA2LjQ3NzE1IDYuNDc3MTUgMiAxMiAyQzE3LjUyMjggMiAyMiA2LjQ3NzE1IDIyIDEyWlwiIHN0cm9rZT1cIiM2NjcwODVcIiBzdHJva2Utd2lkdGg9XCIxLjRcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcy0yXCI+e3sgbG9nRGV0YWlscz8uc2NoZWR1bGU/Lm5ldz8udGltZSB8fCAnLScgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj48YnI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImxvZ0RldGFpbHM/LnNjaGVkdWxlPy5uZXc/LnNjaGVkdWxlUmVwZWF0ZWRUeXBlID09PSAnbW9udGhseSdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJteS0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTE2IDJWNk04IDJWNk0zIDEwSDIxTTUgNEgxOUMyMC4xMDQ2IDQgMjEgNC44OTU0MyAyMSA2VjIwQzIxIDIxLjEwNDYgMjAuMTA0NiAyMiAxOSAyMkg1QzMuODk1NDMgMjIgMyAyMS4xMDQ2IDMgMjBWNkMzIDQuODk1NDMgMy44OTU0MyA0IDUgNFpcIiBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMS40XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXMtMlwiPlJlcGVhdHMge3sgbG9nRGV0YWlscz8uc2NoZWR1bGU/Lm5ldz8uc2NoZWR1bGUgfHwgJy0nIH19IC08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJsb2dEZXRhaWxzPy5zY2hlZHVsZT8ubmV3Py5jb25maWdTdGFydERhdGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXMtMlwiPlN0YXJ0cyBmcm9tIHt7IGZvcm1hdERhdGUobG9nRGV0YWlscz8uc2NoZWR1bGU/Lm5ldz8uY29uZmlnU3RhcnREYXRlKSB9fSAtPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImxvZ0RldGFpbHM/LnNjaGVkdWxlPy5uZXc/LmNvbmZpZ1N0YXJ0RGF0ZSAmJiBsb2dEZXRhaWxzPy5zY2hlZHVsZT8ubmV3Py5jb25maWdFbmREYXRlXCIgY2xhc3M9XCJtcy0yXCI+LSBFdmVyeSAtPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXMtMlwiPnt7IGxvZ0RldGFpbHM/LnNjaGVkdWxlPy5uZXc/LnNjaGVkdWxlUmVwZWF0ZWREYXkgfHwgJy0nIH19PC9zcGFuPiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1zLTJcIj57eyBsb2dEZXRhaWxzPy5zY2hlZHVsZT8ubmV3Py5zY2hlZHVsZVJlcGVhdGVkVHlwZSB8fCAnLScgfX08L3NwYW4+IC1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiEobG9nRGV0YWlscz8uc2NoZWR1bGU/Lm5ldz8uc2NoZWR1bGVSZXBlYXRlZE1vbnRoV2Vlaz8ubGVuZ3RoID09PSAxKVwiPk9uIHRoZSA8L3NwYW4+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwibG9nRGV0YWlscz8uc2NoZWR1bGU/Lm5ldz8uc2NoZWR1bGVSZXBlYXRlZE1vbnRoV2Vlaz8ubGVuZ3RoID09PSAxXCI+T24gZGF5PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwibG9nRGV0YWlscz8uc2NoZWR1bGU/Lm5ldz8uc2NoZWR1bGVSZXBlYXRlZE1vbnRoV2VlayB8fCBsb2dEZXRhaWxzPy5zY2hlZHVsZT8ubmV3Py5zcGVjaWZpY0RhdGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwic2NoZWR1bGVXZWVrc0FycmF5KCkubGVuZ3RoOyBlbHNlIHNob3dTcGVjaWZpY0RhdGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nRm9yPVwibGV0IHdlZWsgb2Ygc2NoZWR1bGVXZWVrc0FycmF5KCk7IGxldCBpID0gaW5kZXhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBnZXRXZWVrT3JkaW5hbChwYXJzZVdlZWtOdW1iZXIod2Vlay5zcGxpdCgnICcpWzBdKSkgfX0ge3sgd2Vlay5zcGxpdCgnICcpWzFdIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJpIDwgc2NoZWR1bGVXZWVrc0FycmF5KCkubGVuZ3RoIC0gMVwiPiwgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI3Nob3dTcGVjaWZpY0RhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwibG9nRGV0YWlscz8uc2NoZWR1bGU/Lm5ldz8uc3BlY2lmaWNEYXRlPy5sZW5ndGggPiAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgbG9nRGV0YWlscz8uc2NoZWR1bGU/Lm5ldz8uc3BlY2lmaWNEYXRlLmpvaW4oJywgJykgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJsb2dEZXRhaWxzPy5zY2hlZHVsZT8ubmV3Py5jb25maWdFbmREYXRlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1zLTJcIj4tIEVuZHMgb24gIHt7IGZvcm1hdERhdGUobG9nRGV0YWlscz8uc2NoZWR1bGU/Lm5ldz8uY29uZmlnRW5kRGF0ZSkgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+PGJyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm5ld2xpbmVoZWlnaHRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTIgNlYxMkwxNiAxNE0yMiAxMkMyMiAxNy41MjI4IDE3LjUyMjggMjIgMTIgMjJDNi40NzcxNSAyMiAyIDE3LjUyMjggMiAxMkMyIDYuNDc3MTUgNi40NzcxNSAyIDEyIDJDMTcuNTIyOCAyIDIyIDYuNDc3MTUgMjIgMTJaXCIgc3Ryb2tlPVwiIzY2NzA4NVwiIHN0cm9rZS13aWR0aD1cIjEuNFwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1zLTJcIj57eyBsb2dEZXRhaWxzPy5zY2hlZHVsZT8ubmV3Py50aW1lIHx8ICctJyB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPjxicj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwibG9nRGV0YWlscz8uc2NoZWR1bGU/Lm5ldz8uc2NoZWR1bGVSZXBlYXRlZFR5cGUgPT09ICdyYW5nZSdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJteS0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTE2IDJWNk04IDJWNk0zIDEwSDIxTTUgNEgxOUMyMC4xMDQ2IDQgMjEgNC44OTU0MyAyMSA2VjIwQzIxIDIxLjEwNDYgMjAuMTA0NiAyMiAxOSAyMkg1QzMuODk1NDMgMjIgMyAyMS4xMDQ2IDMgMjBWNkMzIDQuODk1NDMgMy44OTU0MyA0IDUgNFpcIiBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMS40XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXMtMlwiPkN1c3RvbSBSYW5nZTwvc3Bhbj4gLVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwibG9nRGV0YWlscz8uc2NoZWR1bGU/Lm5ldz8uY29uZmlnU3RhcnREYXRlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1zLTJcIj5TdGFydHMgZnJvbSB7eyBmb3JtYXREYXRlKGxvZ0RldGFpbHM/LnNjaGVkdWxlPy5uZXc/LmNvbmZpZ1N0YXJ0RGF0ZSkgfX0gLTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJsb2dEZXRhaWxzPy5zY2hlZHVsZT8ubmV3Py5zcGVjaWZpY0RhdGVcIiBjbGFzcz1cIm1zLTJcIj4tIE9uIHRoZSBTcGVjaWZpYyBEYXRlcyAtIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxzcGFuIGNsYXNzPVwibXMtMlwiPnt7IGxvZ0RldGFpbHM/LnNjaGVkdWxlPy5uZXc/LnNjaGVkdWxlUmVwZWF0ZWREYXkgfHwgJy0nIH19PC9zcGFuPiAgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcy0yXCI+e3sgZm9ybWF0RGF0ZVN0cmluZyhsb2dEZXRhaWxzPy5zY2hlZHVsZT8ubmV3Py5zcGVjaWZpY0RhdGVbMF0pIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwibG9nRGV0YWlscz8uc2NoZWR1bGU/Lm5ldz8uY29uZmlnRW5kRGF0ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcy0yXCI+LSBFbmRzIG9uICB7eyBmb3JtYXREYXRlKGxvZ0RldGFpbHM/LnNjaGVkdWxlPy5uZXc/LmNvbmZpZ0VuZERhdGUpIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPjxicj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJuZXdsaW5laGVpZ2h0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTEyIDZWMTJMMTYgMTRNMjIgMTJDMjIgMTcuNTIyOCAxNy41MjI4IDIyIDEyIDIyQzYuNDc3MTUgMjIgMiAxNy41MjI4IDIgMTJDMiA2LjQ3NzE1IDYuNDc3MTUgMiAxMiAyQzE3LjUyMjggMiAyMiA2LjQ3NzE1IDIyIDEyWlwiIHN0cm9rZT1cIiM2NjcwODVcIiBzdHJva2Utd2lkdGg9XCIxLjRcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcy0yXCI+e3sgbG9nRGV0YWlscz8uc2NoZWR1bGU/Lm5ldz8udGltZSB8fCAnLScgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj48YnI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwicXVlc3Rpb25maWVsZHRleHQgY29sLTJcIj5SZXNwb25zZTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiY29uZmlnUHJldmlvdXNmaWVsZHRleHQgY29sLTVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJsb2dEZXRhaWxzPy5yZXNwb25zZT8ucHJldmlvdXM/Lmxlbmd0aDsgZWxzZSBub1ByZXZpb3VzRGF0YVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgKm5nRm9yPVwibGV0IGl0ZW0gb2YgbG9nRGV0YWlscz8ucmVzcG9uc2U/LnByZXZpb3VzXCI+e3sgaXRlbSB9fTwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjbm9QcmV2aW91c0RhdGE+LTwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJjaGFuZ2VzZmllbGR0ZXh0IGNvbC01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibG9nRGV0YWlscz8ucmVzcG9uc2U/Lm5ldz8ubGVuZ3RoOyBlbHNlIG5vTmV3RGF0YVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgKm5nRm9yPVwibGV0IGl0ZW0gb2YgbG9nRGV0YWlscz8ucmVzcG9uc2U/Lm5ld1wiPnt7IGl0ZW0gfX08L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI25vTmV3RGF0YT4tPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwicXVlc3Rpb25maWVsZHRleHQgY29sLTJcIj5Pd25lcjwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiY29uZmlnUHJldmlvdXNmaWVsZHRleHQgY29sLTVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJsb2dEZXRhaWxzPy5vd25lcj8ucHJldmlvdXM7IGVsc2Ugbm9QcmV2aW91c0RhdGFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3sgbG9nRGV0YWlscz8ub3duZXI/LnByZXZpb3VzIHx8ICctJyB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI25vUHJldmlvdXNEYXRhPi08L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiY2hhbmdlc2ZpZWxkdGV4dCBjb2wtNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImxvZ0RldGFpbHM/Lm93bmVyPy5uZXc7IGVsc2Ugbm9OZXdEYXRhXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IGxvZ0RldGFpbHM/Lm93bmVyPy5uZXcgfHwgJy0nIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjbm9OZXdEYXRhPi08L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwicXVlc3Rpb25maWVsZHRleHQgY29sLTJcIj5BcHByb3ZlcjwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiY29uZmlnUHJldmlvdXNmaWVsZHRleHQgY29sLTVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJsb2dEZXRhaWxzPy5hcHByb3Zlcj8ucHJldmlvdXM7IGVsc2Ugbm9EYXRhXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IGxvZ0RldGFpbHM/LmFwcHJvdmVyPy5wcmV2aW91cyB8fCAnLScgfX1cclxuICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNub0RhdGE+LTwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJjaGFuZ2VzZmllbGR0ZXh0IGNvbC01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibG9nRGV0YWlscz8uYXBwcm92ZXI/Lm5ldzsgZWxzZSBub0RhdGFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3sgbG9nRGV0YWlscz8uYXBwcm92ZXI/Lm5ldyB8fCAnLScgfX1cclxuICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNub0RhdGE+LTwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgPC90cj5cclxuXHJcbiAgICAgICAgICAgICAgICAgIDx0ciAqbmdJZj1cInJlY2VpdmVkRGF0YSA9PT0gJ3Rhc2snXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwicXVlc3Rpb25maWVsZHRleHQgY29sLTJcIj5Qcmlvcml0eTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiY29uZmlnUHJldmlvdXNmaWVsZHRleHQgY29sLTVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJsb2dEZXRhaWxzPy5zY2hlZHVsZT8ucHJldmlvdXMucHJpb3JpdHk7IGVsc2Ugbm9EYXRhXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IGxvZ0RldGFpbHM/LnNjaGVkdWxlPy5wcmV2aW91cy5wcmlvcml0eSB8fCAnLScgfX1cclxuICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNub0RhdGE+LTwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJjaGFuZ2VzZmllbGR0ZXh0IGNvbC01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibG9nRGV0YWlscz8uc2NoZWR1bGU/Lm5ldz8ucHJpb3JpdHk7IGVsc2Ugbm9EYXRhXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IGxvZ0RldGFpbHM/LnNjaGVkdWxlPy5uZXc/LnByaW9yaXR5IHx8ICctJyB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI25vRGF0YT4tPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwicXVlc3Rpb25maWVsZHRleHQgY29sLTJcIj5TdG9yZSBSZW1vdmVkPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJjb25maWdQcmV2aW91c2ZpZWxkdGV4dCBjb2wtNVwiPiAtIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiY2hhbmdlc2ZpZWxkdGV4dCBjb2wtNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImxvZ0RldGFpbHM/LnN0b3JlUmVtb3ZlZD8ubGVuZ3RoOyBlbHNlIG5vRGF0YVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGliLXN0b3JlLXVzZXItZHJvcGRvd24gW2l0ZW1zXT1cImxvZ0RldGFpbHM/LnN0b3JlUmVtb3ZlZFwiIHRpdGxlPVwiU3RvcmVzXCI+PC9saWItc3RvcmUtdXNlci1kcm9wZG93bj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNub0RhdGE+LTwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJxdWVzdGlvbmZpZWxkdGV4dCBjb2wtMlwiPlVzZXIgQWRkZWQ8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cImNvbmZpZ1ByZXZpb3VzZmllbGR0ZXh0IGNvbC01XCI+IC0gPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJjaGFuZ2VzZmllbGR0ZXh0IGNvbC01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibG9nRGV0YWlscz8udXNlckFkZGVkPy5sZW5ndGg7IGVsc2Ugbm9EYXRhXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsaWItc3RvcmUtdXNlci1kcm9wZG93biBbaXRlbXNdPVwibG9nRGV0YWlscz8udXNlckFkZGVkXCIgdGl0bGU9XCJVc2Vyc1wiPjwvbGliLXN0b3JlLXVzZXItZHJvcGRvd24+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjbm9EYXRhPi08L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cInF1ZXN0aW9uZmllbGR0ZXh0IGNvbC0yXCI+VXNlciBSZW1vdmVkPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJjb25maWdQcmV2aW91c2ZpZWxkdGV4dCBjb2wtNVwiPiAtIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiY2hhbmdlc2ZpZWxkdGV4dCBjb2wtNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImxvZ0RldGFpbHM/LnVzZXJSZW1vdmVkPy5sZW5ndGg7IGVsc2Ugbm9EYXRhXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsaWItc3RvcmUtdXNlci1kcm9wZG93biBbaXRlbXNdPVwibG9nRGV0YWlscz8udXNlclJlbW92ZWRcIiB0aXRsZT1cIlVzZXJzXCI+PC9saWItc3RvcmUtdXNlci1kcm9wZG93bj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNub0RhdGE+LTwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICA8L3Rib2R5PlxyXG4gICAgICAgICAgICAgIDwvdGFibGU+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbjwhLS0gQ29uZmlndXJhdGlvbiBVcGRhdGVzIGVuZCAtLT5cclxuXHJcbiAgICA8L2Rpdj5cclxuPC9kaXY+XHJcblxyXG4iXX0=
|
|
126
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlldy1hY3Rpb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGFuZ28tYW5hbHlzZS10cmF4L3NyYy9saWIvY29tcG9uZW50cy9hY3Rpdml0eS1sb2ctdjIvbG9nLXZpZXctcG9wdXAvdmlldy1hY3Rpb24vdmlldy1hY3Rpb24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGFuZ28tYW5hbHlzZS10cmF4L3NyYy9saWIvY29tcG9uZW50cy9hY3Rpdml0eS1sb2ctdjIvbG9nLXZpZXctcG9wdXAvdmlldy1hY3Rpb24vdmlldy1hY3Rpb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFFekQsT0FBTyxLQUFLLE1BQU0sT0FBTyxDQUFDOzs7OztBQU8xQixNQUFNLE9BQU8sbUJBQW1CO0lBcUJYO0lBcEJWLFVBQVUsQ0FBTTtJQUNoQixhQUFhLENBQVM7SUFDdEIsU0FBUyxDQUFTO0lBQ2xCLFVBQVUsQ0FBUztJQUNuQixZQUFZLENBQVU7SUFFL0Isb0JBQW9CLENBQU07SUFDMUIsMkJBQTJCLENBQU07SUFDakMsbUJBQW1CLEdBQVUsRUFBRSxDQUFDO0lBQ2hDLGNBQWMsR0FBVSxFQUFFLENBQUM7SUFDM0IsZUFBZSxHQUFVLEVBQUUsQ0FBQztJQUM1QixnQkFBZ0IsR0FBVSxFQUFFLENBQUM7SUFDN0IsdUJBQXVCLENBQVM7SUFDaEMsb0JBQW9CLENBQVM7SUFDN0Isc0JBQXNCLENBQVc7SUFDakMsa0JBQWtCLENBQVM7SUFDM0IsZUFBZSxDQUFTO0lBQ3hCLGlCQUFpQixDQUFXO0lBQzVCLGFBQWEsR0FBVyxHQUFHLENBQUM7SUFFNUIsWUFBbUIsV0FBMkI7UUFBM0IsZ0JBQVcsR0FBWCxXQUFXLENBQWdCO1FBRTVDLGlCQUFpQjtRQUNqQixvRkFBb0Y7UUFDcEYsS0FBSztJQUNQLENBQUM7SUFDRCx3Q0FBd0M7SUFDeEMsbUNBQW1DO0lBQ25DLCtDQUErQztJQUMvQyxNQUFNO0lBQ04sSUFBSTtJQUVKLFFBQVE7UUFDTixPQUFPLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDekMsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLFlBQVksQ0FBQztRQUNoRSxJQUFJLFVBQVUsRUFBRTtZQUNkLElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDLFVBQVUsRUFBRSxVQUFVLENBQUMsQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7U0FDMUU7UUFFRCxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDbkIsSUFBSSxDQUFDLG9CQUFvQixHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsb0JBQW9CLENBQUM7WUFDakUsSUFBSSxDQUFDLDJCQUEyQixHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsMkJBQTJCLENBQUM7WUFDL0UsSUFBSSxDQUFDLG1CQUFtQixHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsa0JBQWtCLElBQUksRUFBRSxDQUFDO1lBQ3BFLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLElBQUksRUFBRSxDQUFDO1lBQ3hELElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxZQUFZLElBQUksRUFBRSxDQUFDO1lBQzFELElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLGNBQWMsSUFBSSxFQUFFLENBQUM7WUFDN0QsSUFBSSxDQUFDLHVCQUF1QixHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRSxPQUFPLElBQUksRUFBRSxDQUFDO1lBQ2pGLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxRQUFRLEVBQUUsSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUMzRSxJQUFJLENBQUMsc0JBQXNCLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsUUFBUSxFQUFFLE1BQU0sSUFBSSxFQUFFLENBQUM7WUFDL0UsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLEdBQUcsRUFBRSxPQUFPLElBQUksRUFBRSxDQUFDO1lBQ3ZFLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsR0FBRyxFQUFFLElBQUksSUFBSSxFQUFFLENBQUM7WUFDakUsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLEdBQUcsRUFBRSxNQUFNLElBQUksRUFBRSxDQUFDO1NBQ3RFO0lBQ0gsQ0FBQztJQUVELFVBQVUsQ0FBQyxVQUFxQztRQUM5QyxJQUFJLENBQUMsVUFBVTtZQUFFLE9BQU8sY0FBYyxDQUFDO1FBRXZDLE1BQU0sSUFBSSxHQUFHLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ2xDLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUFFLE9BQU8sY0FBYyxDQUFDLENBQUMseUJBQXlCO1FBRTNFLE1BQU0sT0FBTyxHQUErQixFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLENBQUM7UUFDaEcsT0FBTyxJQUFJLENBQUMsa0JBQWtCLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMseUJBQXlCO0lBQzdFLENBQUM7SUFDRCxnQkFBZ0IsQ0FBQyxPQUFlO1FBQzlCLE1BQU0sTUFBTSxHQUFHLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztRQUNwRyxNQUFNLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUMxRCxPQUFPLEdBQUcsR0FBRyxJQUFJLE1BQU0sQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLElBQUksSUFBSSxFQUFFLENBQUM7SUFDL0MsQ0FBQztJQUVELGNBQWMsQ0FBQyxLQUFhO1FBQzFCLE1BQU0sVUFBVSxHQUE4QjtZQUM1QyxDQUFDLEVBQUUsT0FBTztZQUNWLENBQUMsRUFBRSxRQUFRO1lBQ1gsQ0FBQyxFQUFFLE9BQU87WUFDVixDQUFDLEVBQUUsUUFBUTtZQUNYLENBQUMsRUFBRSxNQUFNO1NBQ1YsQ0FBQztRQUNGLE9BQU8sVUFBVSxDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLGtDQUFrQztJQUNsRixDQUFDO0lBQ0Qsa0JBQWtCO1FBQ2hCLE1BQU0sS0FBSyxHQUF1QixJQUFJLENBQUMsVUFBVSxFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUUseUJBQXlCLENBQUM7UUFDNUYsT0FBTyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBWSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQzVFLENBQUM7SUFFRCxlQUFlLENBQUMsS0FBYTtRQUMzQixPQUFPLFFBQVEsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsb0NBQW9DO0lBQ3ZFLENBQUM7SUFDRCxVQUFVO1FBQ1IsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRUQsa0JBQWtCLENBQUMsVUFBa0I7UUFDbkMsTUFBTSxZQUFZLEdBQThCO1lBQzlDLFdBQVcsRUFBRSxvQkFBb0I7WUFDakMsUUFBUSxFQUFFLGNBQWM7WUFDeEIsb0JBQW9CLEVBQUUsMENBQTBDO1lBQ2hFLHNCQUFzQixFQUFFLDRDQUE0QztZQUNwRSxnQkFBZ0IsRUFBRSxnQ0FBZ0M7WUFDbEQsS0FBSyxFQUFFLHlCQUF5QjtZQUNoQyxLQUFLLEVBQUUseUJBQXlCO1lBQ2hDLGFBQWEsRUFBRSx3QkFBd0I7WUFDdkMsSUFBSSxFQUFFLG1CQUFtQjtZQUN6QixXQUFXLEVBQUUsY0FBYztZQUMzQixJQUFJLEVBQUUsTUFBTTtTQUNiLENBQUM7UUFFRixPQUFPLFlBQVksQ0FBQyxVQUFVLENBQUMsSUFBSSxVQUFVLElBQUksR0FBRyxDQUFDO0lBQ3ZELENBQUM7d0dBN0dZLG1CQUFtQjs0RkFBbkIsbUJBQW1CLDZNQ1RoQyxneXFEQW10Qk07OzRGRDFzQk8sbUJBQW1CO2tCQUwvQixTQUFTOytCQUNFLGlCQUFpQjttRkFLbEIsVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE5nYkFjdGl2ZU1vZGFsIH0gZnJvbSAnQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAnO1xyXG5pbXBvcnQgZGF5anMgZnJvbSBcImRheWpzXCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi12aWV3LWFjdGlvbicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3ZpZXctYWN0aW9uLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybDogJy4vdmlldy1hY3Rpb24uY29tcG9uZW50LnNjc3MnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBWaWV3QWN0aW9uQ29tcG9uZW50IHtcclxuICBASW5wdXQoKSBsb2dEZXRhaWxzOiBhbnk7XHJcbiAgQElucHV0KCkgY2hlY2tMaXN0TmFtZTogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHN0b3JlTmFtZTogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIGFjdGlvblR5cGU6IHN0cmluZztcclxuICBASW5wdXQoKSByZWNlaXZlZERhdGEhOiBzdHJpbmc7XHJcblxyXG4gIHVwZGF0ZWRDaGVja2xpc3ROYW1lOiBhbnk7XHJcbiAgdXBkYXRlZENoZWNrbGlzdERlc2NyaXB0aW9uOiBhbnk7XHJcbiAgdXBkYXRlZFNlY3Rpb25OYW1lczogYW55W10gPSBbXTtcclxuICBhZGRlZFF1ZXN0aW9uczogYW55W10gPSBbXTtcclxuICBlZGl0ZWRRdWVzdGlvbnM6IGFueVtdID0gW107XHJcbiAgZGVsZXRlZFF1ZXN0aW9uczogYW55W10gPSBbXTtcclxuICBzY2hlZHVsZVByZXZpb3VzUmVwZWF0czogc3RyaW5nO1xyXG4gIHNjaGVkdWxlUHJldmlvdXNUaW1lOiBzdHJpbmc7XHJcbiAgc2NoZWR1bGVQcmV2aW91c09jY3Vyczogc3RyaW5nW107XHJcbiAgc2NoZWR1bGVOZXdSZXBlYXRzOiBzdHJpbmc7XHJcbiAgc2NoZWR1bGVOZXdUaW1lOiBzdHJpbmc7XHJcbiAgc2NoZWR1bGVOZXdPY2N1cnM6IHN0cmluZ1tdO1xyXG4gIGZvcm1hdHRlZERhdGU6IHN0cmluZyA9ICctJztcclxuXHJcbiAgY29uc3RydWN0b3IocHVibGljIGFjdGl2ZU1vZGFsOiBOZ2JBY3RpdmVNb2RhbCkge1xyXG4gICAgXHJcbiAgICAvLyBsb2dEZXRhaWxzID0ge1xyXG4gICAgLy8gICBzdG9yZUFkZGVkOiBbXCJMS1NUMDExXCIsIFwiTEtTVDAyMlwiLCBcIkxLU1QzNDQ0XCIsIFwiTEtTVDQ1NVwiLCBcIkxLU1Q1NjZcIiwgXCJMS1NUNjY2XCJdXHJcbiAgICAvLyB9O1xyXG4gIH1cclxuICAvLyBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XHJcbiAgLy8gICBpZiAoY2hhbmdlc1sncmVjZWl2ZWREYXRhJ10pIHtcclxuICAvLyAgICAgY29uc29sZS5sb2coXCJ2aWV3OlwiLCB0aGlzLnJlY2VpdmVkRGF0YSk7XHJcbiAgLy8gICB9XHJcbiAgLy8gfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIGNvbnNvbGUubG9nKFwiUnZpdXJlXCIsIHRoaXMucmVjZWl2ZWREYXRhKTtcclxuICAgIGNvbnN0IGRhdGVTdHJpbmcgPSB0aGlzLmxvZ0RldGFpbHM/LnNjaGVkdWxlPy5uZXc/LnNwZWNpZmljRGF0ZTtcclxuICAgIGlmIChkYXRlU3RyaW5nKSB7XHJcbiAgICAgIHRoaXMuZm9ybWF0dGVkRGF0ZSA9IGRheWpzKGRhdGVTdHJpbmcsICdELU0tWVlZWScpLmZvcm1hdCgnREQgTU1NIFlZWVknKTtcclxuICAgIH1cclxuICAgIFxyXG4gICAgaWYgKHRoaXMubG9nRGV0YWlscykge1xyXG4gICAgICB0aGlzLnVwZGF0ZWRDaGVja2xpc3ROYW1lID0gdGhpcy5sb2dEZXRhaWxzLnVwZGF0ZWRDaGVja2xpc3ROYW1lO1xyXG4gICAgICB0aGlzLnVwZGF0ZWRDaGVja2xpc3REZXNjcmlwdGlvbiA9IHRoaXMubG9nRGV0YWlscy51cGRhdGVkQ2hlY2tsaXN0RGVzY3JpcHRpb247XHJcbiAgICAgIHRoaXMudXBkYXRlZFNlY3Rpb25OYW1lcyA9IHRoaXMubG9nRGV0YWlscy51cGRhdGVkU2VjdGlvbk5hbWUgfHwgW107XHJcbiAgICAgIHRoaXMuYWRkZWRRdWVzdGlvbnMgPSB0aGlzLmxvZ0RldGFpbHMucXVlc3Rpb25BZGQgfHwgW107XHJcbiAgICAgIHRoaXMuZWRpdGVkUXVlc3Rpb25zID0gdGhpcy5sb2dEZXRhaWxzLnF1ZXN0aW9uRWRpdCB8fCBbXTtcclxuICAgICAgdGhpcy5kZWxldGVkUXVlc3Rpb25zID0gdGhpcy5sb2dEZXRhaWxzLnF1ZXN0aW9uRGVsZXRlIHx8IFtdO1xyXG4gICAgICB0aGlzLnNjaGVkdWxlUHJldmlvdXNSZXBlYXRzID0gdGhpcy5sb2dEZXRhaWxzLnNjaGVkdWxlPy5wcmV2aW91cz8ucmVwZWF0cyB8fCAnJztcclxuICAgICAgdGhpcy5zY2hlZHVsZVByZXZpb3VzVGltZSA9IHRoaXMubG9nRGV0YWlscy5zY2hlZHVsZT8ucHJldmlvdXM/LnRpbWUgfHwgJyc7XHJcbiAgICAgIHRoaXMuc2NoZWR1bGVQcmV2aW91c09jY3VycyA9IHRoaXMubG9nRGV0YWlscy5zY2hlZHVsZT8ucHJldmlvdXM/Lm9jY3VycyB8fCBbXTtcclxuICAgICAgdGhpcy5zY2hlZHVsZU5ld1JlcGVhdHMgPSB0aGlzLmxvZ0RldGFpbHMuc2NoZWR1bGU/Lm5ldz8ucmVwZWF0cyB8fCAnJztcclxuICAgICAgdGhpcy5zY2hlZHVsZU5ld1RpbWUgPSB0aGlzLmxvZ0RldGFpbHMuc2NoZWR1bGU/Lm5ldz8udGltZSB8fCAnJztcclxuICAgICAgdGhpcy5zY2hlZHVsZU5ld09jY3VycyA9IHRoaXMubG9nRGV0YWlscy5zY2hlZHVsZT8ubmV3Py5vY2N1cnMgfHwgW107XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBmb3JtYXREYXRlKGRhdGVTdHJpbmc6IHN0cmluZyB8IHVuZGVmaW5lZCB8IG51bGwpOiBzdHJpbmcge1xyXG4gICAgaWYgKCFkYXRlU3RyaW5nKSByZXR1cm4gJ0ludmFsaWQgRGF0ZSc7XHJcbiAgXHJcbiAgICBjb25zdCBkYXRlID0gbmV3IERhdGUoZGF0ZVN0cmluZyk7XHJcbiAgICBpZiAoaXNOYU4oZGF0ZS5nZXRUaW1lKCkpKSByZXR1cm4gJ0ludmFsaWQgRGF0ZSc7IC8vIENoZWNrIGlmIGRhdGUgaXMgdmFsaWRcclxuICBcclxuICAgIGNvbnN0IG9wdGlvbnM6IEludGwuRGF0ZVRpbWVGb3JtYXRPcHRpb25zID0geyBkYXk6ICcyLWRpZ2l0JywgbW9udGg6ICdzaG9ydCcsIHllYXI6ICdudW1lcmljJyB9O1xyXG4gICAgcmV0dXJuIGRhdGUudG9Mb2NhbGVEYXRlU3RyaW5nKCdlbi1HQicsIG9wdGlvbnMpOyAvLyBPdXRwdXRzOiBcIjI2IE1hciAyMDI1XCJcclxuICB9XHJcbiAgZm9ybWF0RGF0ZVN0cmluZyhkYXRlU3RyOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgY29uc3QgbW9udGhzID0gW1wiSmFuXCIsIFwiRmViXCIsIFwiTWFyXCIsIFwiQXByXCIsIFwiTWF5XCIsIFwiSnVuXCIsIFwiSnVsXCIsIFwiQXVnXCIsIFwiU2VwXCIsIFwiT2N0XCIsIFwiTm92XCIsIFwiRGVjXCJdO1xyXG4gICAgY29uc3QgW2RheSwgbW9udGgsIHllYXJdID0gZGF0ZVN0ci5zcGxpdCgnLScpLm1hcChOdW1iZXIpO1xyXG4gICAgcmV0dXJuIGAke2RheX0gJHttb250aHNbbW9udGggLSAxXX0gJHt5ZWFyfWA7XHJcbiAgfVxyXG4gIFxyXG4gIGdldFdlZWtPcmRpbmFsKHZhbHVlOiBudW1iZXIpOiBzdHJpbmcge1xyXG4gICAgY29uc3Qgb3JkaW5hbE1hcDogeyBba2V5OiBudW1iZXJdOiBzdHJpbmcgfSA9IHtcclxuICAgICAgMTogJ0ZpcnN0JyxcclxuICAgICAgMjogJ1NlY29uZCcsXHJcbiAgICAgIDM6ICdUaGlyZCcsXHJcbiAgICAgIDQ6ICdGb3VydGgnLFxyXG4gICAgICA1OiAnTGFzdCdcclxuICAgIH07XHJcbiAgICByZXR1cm4gb3JkaW5hbE1hcFt2YWx1ZV0gfHwgdmFsdWUudG9TdHJpbmcoKTsgLy8gRGVmYXVsdCB0byBudW1iZXIgaWYgbm90IG1hcHBlZFxyXG4gIH1cclxuICBzY2hlZHVsZVdlZWtzQXJyYXkoKTogc3RyaW5nW10ge1xyXG4gICAgY29uc3Qgd2Vla3M6IHN0cmluZyB8IHVuZGVmaW5lZCA9IHRoaXMubG9nRGV0YWlscz8uc2NoZWR1bGU/Lm5ldz8uc2NoZWR1bGVSZXBlYXRlZE1vbnRoV2VlaztcclxuICAgIHJldHVybiB3ZWVrcyA/IHdlZWtzLnNwbGl0KCcsJykubWFwKChpdGVtOiBzdHJpbmcpID0+IGl0ZW0udHJpbSgpKSA6IFtdO1xyXG59XHJcblxyXG5wYXJzZVdlZWtOdW1iZXIodmFsdWU6IHN0cmluZyk6IG51bWJlciB7XHJcbiAgcmV0dXJuIHBhcnNlSW50KHZhbHVlLCAxMCkgfHwgMDsgLy8gQ29udmVydCB0byBudW1iZXIgb3IgZGVmYXVsdCB0byAwXHJcbn1cclxuY2xvc2VQb3B1cCgpIHtcclxuICB0aGlzLmFjdGl2ZU1vZGFsLmNsb3NlKCk7XHJcbn1cclxuXHJcbmdldEFuc3dlclR5cGVMYWJlbChhbnN3ZXJUeXBlOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gIGNvbnN0IHR5cGVNYXBwaW5nczogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSA9IHtcclxuICAgIGRlc2NyaXB0aXZlOiAnRGVzY3JpcHRpdmUgQW5zd2VyJyxcclxuICAgICd5ZXMvbm8nOiAnQS9CIFF1ZXN0aW9uJyxcclxuICAgIG11bHRpcGxlY2hvaWNlc2luZ2xlOiAnTXVsdGlwbGUgQ2hvaWNlIFF1ZXN0aW9uIC0gU2luZ2xlIEFuc3dlcicsXHJcbiAgICBtdWx0aXBsZWNob2ljZW11bHRpcGxlOiAnTXVsdGlwbGUgQ2hvaWNlIFF1ZXN0aW9uIC0gTXVsdGlwbGUgQW5zd2VyJyxcclxuICAgIGRlc2NyaXB0aXZlSW1hZ2U6ICdDYXB0dXJlIEltYWdlIHdpdGggRGVzY3JpcHRpb24nLFxyXG4gICAgaW1hZ2U6ICdDYXB0dXJlIEltYWdlIGFzIEFuc3dlcicsXHJcbiAgICB2aWRlbzogJ0NhcHR1cmUgVmlkZW8gYXMgQW5zd2VyJyxcclxuICAgIG11bHRpcGxlSW1hZ2U6ICdDYXB0dXJlIE11bHRpcGxlIEltYWdlJyxcclxuICAgIGRhdGU6ICdEYXRlIC0gREQvTU0vWVlZWScsXHJcbiAgICBsaW5lYXJzY2FsZTogJ0xpbmVhciBTY2FsZScsXHJcbiAgICB0aW1lOiAnVGltZScsXHJcbiAgfTtcclxuXHJcbiAgcmV0dXJuIHR5cGVNYXBwaW5nc1thbnN3ZXJUeXBlXSB8fCBhbnN3ZXJUeXBlIHx8ICctJztcclxufVxyXG5cclxuXHJcbn1cclxuIiwiPGRpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlclwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJsb2doZWFkZXIgZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIFctMTAwXCI+XHJcbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiYWN0aW9uVHlwZSA9PT0gJ2VkaXRlZCdcIiBjbGFzcz1cImNhcmQtaGVhZGVyIGxvZ2hlYWRlcnRleHRcIj5DaGVja2xpc3QgVXBkYXRlczwvc3Bhbj5cclxuICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJhY3Rpb25UeXBlID09PSAndXBkYXRlZCcgfHwgYWN0aW9uVHlwZSA9PT0gJ2RyYWZ0J1wiIGNsYXNzPVwiY2FyZC1oZWFkZXIgbG9naGVhZGVydGV4dFwiPkNvbmZpZ3VyYXRpb24gVXBkYXRlczwvc3Bhbj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cImNsb3NlUG9wdXAoKVwiPjxzcGFuPjxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMzJcIiBoZWlnaHQ9XCIzMlwiIHZpZXdCb3g9XCIwIDAgMzIgMzJcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTI0IDhMOCAyNE04IDhMMjQgMjRcIiBzdHJva2U9XCIjMDA4RURGXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvc3ZnPjwvc3Bhbj48L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPCEtLSBlZGl0ZWQgLS0+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IGNoZWNrbGlzdHNjcm9sbCBwLThcIj5cclxuICAgIDxkaXYgICpuZ0lmPVwiYWN0aW9uVHlwZSA9PT0gJ2VkaXRlZCdcIj5cclxuICAgICAgIDwhLS0gQ2hlY2tsaXN0IE5hbWUgLS0+XHJcbiAgICAgICA8IS0tICpuZ0lmPVwidXBkYXRlZENoZWNrbGlzdE5hbWVcIiAtLT5cclxuICAgIDxkaXYgY2xhc3M9XCJjaGVja2xpc3RmcmFtZSBteS02XCIgKm5nSWY9XCJ1cGRhdGVkQ2hlY2tsaXN0TmFtZT8ucHJldmlvdXMgfHwgdXBkYXRlZENoZWNrbGlzdE5hbWU/Lm5ld1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1yZXNwb25zaXZlXCI+XHJcbiAgICAgICAgICAgIDx0YWJsZT5cclxuICAgICAgICAgICAgICAgIDx0aGVhZD5cclxuICAgICAgICAgICAgICAgICAgICA8dHIgY2xhc3M9XCJmcmFtZXRleHRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwiZnJhbWV0ZXh0MSBjb2wtMlwiPkZpZWxkczwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cImZyYW1ldGV4dCBjb2wtNVwiPlByZXZpb3VzPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwiZnJhbWV0ZXh0cHJpbWFyeSBjb2wtNVwiPlVwZGF0ZWQ8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICA8L3RoZWFkPlxyXG4gICAgICAgICAgICAgICAgPHRib2R5PlxyXG4gICAgICAgICAgICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwicXVlc3Rpb25maWVsZHRleHQgY29sLTJcIj5DaGVja2xpc3QgTmFtZTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cIlByZXZpb3VzZmllbGR0ZXh0IGNvbC01XCI+e3sgdXBkYXRlZENoZWNrbGlzdE5hbWU/LnByZXZpb3VzIHx8ICctJyB9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cImNoYW5nZXNmaWVsZHRleHQgY29sLTVcIj57eyB1cGRhdGVkQ2hlY2tsaXN0TmFtZT8ubmV3IHx8ICctJyB9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgIDwvdGJvZHk+XHJcbiAgICAgICAgICAgIDwvdGFibGU+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgICAgICA8IS0tIENoZWNrbGlzdCBOYW1lIEVuZCAtLT5cclxuICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwiYm9yZGVybGluZVwiPjwvZGl2PiAtLT5cclxuICAgICAgICAgICA8IS0tIENoZWNrbGlzdCBEZXNjcmlwdGlvbiBTdGFydCAtLT5cclxuICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlY2tsaXN0ZnJhbWUgbXktNlwiICpuZ0lmPVwidXBkYXRlZENoZWNrbGlzdERlc2NyaXB0aW9uPy5wcmV2aW91cyB8fCB1cGRhdGVkQ2hlY2tsaXN0RGVzY3JpcHRpb24/Lm5ld1wiPlxyXG4gICAgICAgICAgICA8IS0tIDxoNCBjbGFzcz1cInRleHQtbGcgZm9udC1zZW1pYm9sZFwiPkNoZWNrbGlzdCBEZXNjcmlwdGlvbiBVcGRhdGVkPC9oND4gLS0+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1yZXNwb25zaXZlXCI+XHJcbiAgICAgICAgICAgICAgICA8dGFibGU+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRoZWFkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dHIgY2xhc3M9XCJmcmFtZXRleHRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cImZyYW1ldGV4dDEgY29sLTJcIj5GaWVsZHM8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwiZnJhbWV0ZXh0IGNvbC01XCI+UHJldmlvdXM8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwiZnJhbWV0ZXh0cHJpbWFyeSBjb2wtNVwiPlVwZGF0ZWQ8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdGhlYWQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRib2R5PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJxdWVzdGlvbmZpZWxkdGV4dCBjb2wtMlwiPkNoZWNrbGlzdCBEZXNjcmlwdGlvbjwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJQcmV2aW91c2ZpZWxkdGV4dCBjb2wtNVwiPnt7IHVwZGF0ZWRDaGVja2xpc3REZXNjcmlwdGlvbj8ucHJldmlvdXMgfHwgJy0nIH19PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cImNoYW5nZXNmaWVsZHRleHQgY29sLTVcIj57eyB1cGRhdGVkQ2hlY2tsaXN0RGVzY3JpcHRpb24/Lm5ldyB8fCAnLScgfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+XHJcbiAgICAgICAgICAgICAgICA8L3RhYmxlPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIFxyXG4gICAgICAgIDwhLS0gQ2hlY2tsaXN0IERlc2NyaXB0aW9uIEVuZCAtLT5cclxuXHJcbiAgICAgICAgICAgICA8IS0tIFNlY3Rpb24gTmFtZSBTdGFydCAtLT5cclxuICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVja2xpc3RmcmFtZSBteS02XCIgKm5nSWY9XCJ1cGRhdGVkU2VjdGlvbk5hbWVzLmxlbmd0aCA+IDBcIj5cclxuICAgICAgICAgICAgICAgIDwhLS0gPGg0IGNsYXNzPVwidGV4dC1sZyBmb250LXNlbWlib2xkXCI+U2VjdGlvbiBOYW1lcyBVcGRhdGVkPC9oND4gLS0+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtcmVzcG9uc2l2ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0YWJsZSAqbmdGb3I9XCJsZXQgc2VjdGlvbiBvZiB1cGRhdGVkU2VjdGlvbk5hbWVzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aGVhZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ciBjbGFzcz1cImZyYW1ldGV4dFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cImZyYW1ldGV4dDEgY29sLTJcIj5GaWVsZHM8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cImZyYW1ldGV4dCBjb2wtNVwiPlByZXZpb3VzPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJmcmFtZXRleHRwcmltYXJ5IGNvbC01XCI+VXBkYXRlZDwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RoZWFkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGJvZHk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHIgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cInF1ZXN0aW9uZmllbGR0ZXh0IGNvbC0yXCI+U2VjdGlvbiBOYW1lPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJQcmV2aW91c2ZpZWxkdGV4dCBjb2wtNVwiPnt7IHNlY3Rpb24/LnByZXZpb3VzIHx8ICctJyB9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiY2hhbmdlc2ZpZWxkdGV4dCBjb2wtNVwiPnt7IHNlY3Rpb24/Lm5ldyB8fCAnLScgfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC90Ym9keT5cclxuICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8IS0tIFNlY3Rpb24gTmFtZSBFbmQgLS0+XHJcblxyXG4gICAgICAgIDwhLS0gUXVlc3Rpb24gQWRkZWQgdmFyaWVudCBzdGFydCAtLT5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwiYWRkZWRRdWVzdGlvbnMubGVuZ3RoID4gMFwiPlxyXG4gICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IHNlY3Rpb24gb2YgYWRkZWRRdWVzdGlvbnNcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInF1ZXN0ZXh0XCI+U2VjdGlvbiBOYW1lOiA8c3BhbiBjbGFzcz1cInF1ZXNzdWJ0ZXh0XCI+e3sgc2VjdGlvbj8uc2VjdGlvbk5hbWUgfHwgJy0nIH19PC9zcGFuPjwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBxdWVzdGlvbiBvZiBzZWN0aW9uLnF1ZXN0aW9uczsgbGV0IGkgPSBpbmRleFwiID5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInF1ZXN0ZXh0IG10LTJcIj5RdWVzdGlvbiBObyA6IDxzcGFuIGNsYXNzPVwicXVlc3N1YnRleHRcIj57eyBxdWVzdGlvbj8ucW5vIHx8ICctJyB9fTwvc3Bhbj48L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZWNrbGlzdGZyYW1lIG15LTZcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1yZXNwb25zaXZlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRhYmxlID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoZWFkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyIGNsYXNzPVwiZnJhbWV0ZXh0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwiZnJhbWV0ZXh0MSBjb2wtMlwiPkZpZWxkczwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwiZnJhbWV0ZXh0IGNvbC01XCI+UHJldmlvdXM8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cImZyYW1ldGV4dHByaW1hcnkgY29sLTVcIj5VcGRhdGVkPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGhlYWQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0Ym9keSA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwicXVlc3Rpb25maWVsZHRleHQgY29sLTJcIj5RdWVzdGlvbiBBZGRlZDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiUHJldmlvdXNmaWVsZHRleHQgY29sLTVcIj4gLSA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cImNoYW5nZXNmaWVsZHRleHQgY29sLTVcIj57eyBxdWVzdGlvbj8ucW5hbWUgfHwgJy0nIH19PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+XHJcbiAgICAgICAgICAgICAgICAgICAgPC90YWJsZT5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8IS0tIFF1ZXN0aW9uIEFkZGVkIHZhcmllbnQgZW5kIC0tPlxyXG5cclxuICAgICAgICA8IS0tIFF1ZXN0aW9uIERlbGV0ZWQgdmFyaWVudCBzdGFydCAtLT5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwiZGVsZXRlZFF1ZXN0aW9ucy5sZW5ndGggPiAwXCI+XHJcbiAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgc2VjdGlvbiBvZiBkZWxldGVkUXVlc3Rpb25zXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJxdWVzdGV4dFwiPlNlY3Rpb24gTmFtZTogPHNwYW4gY2xhc3M9XCJxdWVzc3VidGV4dFwiPnt7IHNlY3Rpb24uc2VjdGlvbk5hbWUgfX08L3NwYW4+PC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IHF1ZXN0aW9uIG9mIHNlY3Rpb24ucXVlc3Rpb25zOyBsZXQgaSA9IGluZGV4XCIgPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicXVlc3RleHQgbXQtMlwiPlF1ZXN0aW9uIE5vIDogPHNwYW4gY2xhc3M9XCJxdWVzc3VidGV4dFwiPnt7IHF1ZXN0aW9uPy5xbm8gfHwgJy0nIH19PC9zcGFuPjwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlY2tsaXN0ZnJhbWUgbXktNlwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLXJlc3BvbnNpdmVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8dGFibGUgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGhlYWQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHIgY2xhc3M9XCJmcmFtZXRleHRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJmcmFtZXRleHQxIGNvbC0yXCI+RmllbGRzPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJmcmFtZXRleHQgY29sLTVcIj5QcmV2aW91czwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwiZnJhbWV0ZXh0cHJpbWFyeSBjb2wtNVwiPlVwZGF0ZWQ8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC90aGVhZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRib2R5ID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJxdWVzdGlvbmZpZWxkdGV4dCBjb2wtMlwiPlF1ZXN0aW9uIERlbGV0ZWQ8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cIlByZXZpb3VzZmllbGR0ZXh0IGNvbC01XCI+IC0gPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJjaGFuZ2VzZmllbGR0ZXh0IGNvbC01XCI+e3sgcXVlc3Rpb24/LnFuYW1lIHx8ICctJyB9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3Rib2R5PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdGFibGU+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIFxyXG4gICAgICAgIDwhLS0gUXVlc3Rpb24gRGVsZXRlZCB2YXJpZW50IGVuZCAtLT5cclxuXHJcbiAgICAgICAgPCEtLSBRdWVzdGlvbiBFZGl0ZWQgdmFyaWVudCBzdGFydCAtLT5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwiZWRpdGVkUXVlc3Rpb25zLmxlbmd0aCA+IDBcIj5cclxuICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBzZWN0aW9uIG9mIGVkaXRlZFF1ZXN0aW9uc1wiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInF1ZXN0ZXh0XCI+U2VjdGlvbiBOYW1lOiA8c3BhbiBjbGFzcz1cInF1ZXNzdWJ0ZXh0XCI+e3sgc2VjdGlvbi5zZWN0aW9uTmFtZSB8fCAnLScgfX08L3NwYW4+PC9kaXY+XHJcbiAgICAgIFxyXG4gICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgcXVlc3Rpb24gb2Ygc2VjdGlvbi5xdWVzdGlvbnNcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicXVlc3RleHQgbXQtMlwiPlF1ZXN0aW9uIE5vIDogPHNwYW4gY2xhc3M9XCJxdWVzc3VidGV4dFwiPnt7IHF1ZXN0aW9uPy5wcmV2aW91cz8ucW5vIHx8IHF1ZXN0aW9uPy5uZXc/LnFubyB8fCAnLScgfX08L3NwYW4+PC9kaXY+XHJcbiAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZWNrbGlzdGZyYW1lIG15LTZcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLXJlc3BvbnNpdmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDx0YWJsZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8dGhlYWQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ciBjbGFzcz1cImZyYW1ldGV4dFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwiZnJhbWV0ZXh0MSBjb2wtMlwiPkZpZWxkczwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJmcmFtZXRleHQgY29sLTUgcHJldmlvdXMtZmllbGRcIj5QcmV2aW91czwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJmcmFtZXRleHRwcmltYXJ5IGNvbC01IHVwZGF0ZWQtZmllbGRcIj5VcGRhdGVkPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoZWFkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDx0Ym9keT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBRdWVzdGlvbiBOYW1lIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJxdWVzdGlvbmZpZWxkdGV4dCBjb2wtMlwiPlF1ZXN0aW9uIEVkaXRlZDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJQcmV2aW91c2ZpZWxkdGV4dCBjb2wtNVwiPnt7IHF1ZXN0aW9uLnByZXZpb3VzPy5xbmFtZSB8fCAnLScgfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiY2hhbmdlc2ZpZWxkdGV4dCBjb2wtNVwiPnt7IHF1ZXN0aW9uLm5ldz8ucW5hbWUgfHwgJy0nIH19PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gQW5zd2VyIFR5cGUgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cInF1ZXN0aW9uZmllbGR0ZXh0IGNvbC0yXCI+VHlwZTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJQcmV2aW91c2ZpZWxkdGV4dCBjb2wtNVwiPnt7IGdldEFuc3dlclR5cGVMYWJlbChxdWVzdGlvbi5wcmV2aW91cz8uYW5zd2VyVHlwZSkgfHwgJy0nIH19PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cImNoYW5nZXNmaWVsZHRleHQgY29sLTVcIj57eyBnZXRBbnN3ZXJUeXBlTGFiZWwocXVlc3Rpb24ubmV3Py5hbnN3ZXJUeXBlKSB8fCAnLScgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIFJlZmVyZW5jZSBJbWFnZSAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwicXVlc3Rpb25maWVsZHRleHQgY29sLTJcIj5SZWZlcmVuY2UgSW1hZ2U8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiUHJldmlvdXNmaWVsZHRleHQgY29sLTVcIj4tPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiY2hhbmdlc2ZpZWxkdGV4dCBjb2wtNVwiPiB7e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBxdWVzdGlvbi5wcmV2aW91cz8ucXVlc3Rpb25SZWZlcmVuY2VJbWFnZSAmJiAhcXVlc3Rpb24ubmV3Py5xdWVzdGlvblJlZmVyZW5jZUltYWdlID8gJ0RlbGV0ZWQnIDpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIXF1ZXN0aW9uLnByZXZpb3VzPy5xdWVzdGlvblJlZmVyZW5jZUltYWdlICYmIHF1ZXN0aW9uLm5ldz8ucXVlc3Rpb25SZWZlcmVuY2VJbWFnZSA/ICdBZGRlZCcgOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBxdWVzdGlvbi5wcmV2aW91cz8ucXVlc3Rpb25SZWZlcmVuY2VJbWFnZSAhPT0gcXVlc3Rpb24ubmV3Py5xdWVzdGlvblJlZmVyZW5jZUltYWdlID8gJ1VwZGF0ZWQnIDpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy0nXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgICAgPCEtLSBRdWVzdGlvbiBFZGl0ZWQgdmFyaWVudCBlbmQgLS0+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8IS0tIHVwZGF0ZWQgLS0+XHJcbiAgICAgICAgIDwhLS0gQ29uZmlndXJhdGlvbiBVcGRhdGVzIHN0YXJ0IC0tPlxyXG4gICAgICAgICA8ZGl2ICAqbmdJZj1cImFjdGlvblR5cGUgPT09ICd1cGRhdGVkJyB8fCBhY3Rpb25UeXBlID09PSAnZHJhZnQnXCIgY2xhc3M9XCJjaGVja2xpc3RmcmFtZSBteS02XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1yZXNwb25zaXZlXCI+XHJcbiAgICAgICAgICAgICAgPHRhYmxlPlxyXG4gICAgICAgICAgICAgICAgPHRoZWFkPlxyXG4gICAgICAgICAgICAgICAgICA8dHIgY2xhc3M9XCJmcmFtZXRleHRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJmcmFtZXRleHQxIGNvbC0yXCI+RmllbGRzPC90aD5cclxuICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJmcmFtZXRleHQgY29sLTUgdy01MFwiPlByZXZpb3VzPC90aD5cclxuICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJmcmFtZXRleHRwcmltYXJ5IGNvbC01IHctNTBcIj5VcGRhdGVkPC90aD5cclxuICAgICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgIDwvdGhlYWQ+XHJcbiAgICAgICAgICAgICAgICA8dGJvZHk+XHJcbiAgICAgICAgICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJxdWVzdGlvbmZpZWxkdGV4dCBjb2wtMlwiPlN0b3JlIEFkZGVkPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJjb25maWdQcmV2aW91c2ZpZWxkdGV4dCBjb2wtNSB3LTUwXCI+IC0gPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJjaGFuZ2VzZmllbGR0ZXh0IGNvbC01IHctNTBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJsb2dEZXRhaWxzPy5zdG9yZUFkZGVkPy5sZW5ndGg7IGVsc2Ugbm9EYXRhXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsaWItc3RvcmUtdXNlci1kcm9wZG93biBbaXRlbXNdPVwibG9nRGV0YWlscy5zdG9yZUFkZGVkXCIgdGl0bGU9XCJTdG9yZXNcIj48L2xpYi1zdG9yZS11c2VyLWRyb3Bkb3duPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI25vRGF0YT4tPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgPCEtLSBTY2hlZHVsZSBVcGRhdGUgLS0+XHJcbiAgICAgICAgICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJxdWVzdGlvbmZpZWxkdGV4dCBjb2wtMlwiPlNjaGVkdWxlPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJjb25maWdQcmV2aW91c2ZpZWxkdGV4dCBjb2wtNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJyZWNlaXZlZERhdGEgPT09ICdjaGVja2xpc3QnICYmIGxvZ0RldGFpbHM/LnNjaGVkdWxlPy5wcmV2aW91cz8uc2NoZWR1bGVSZXBlYXRlZFR5cGUgPT09ICdvbmV0aW1lJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJteS0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTYgMlY2TTggMlY2TTMgMTBIMjFNNSA0SDE5QzIwLjEwNDYgNCAyMSA0Ljg5NTQzIDIxIDZWMjBDMjEgMjEuMTA0NiAyMC4xMDQ2IDIyIDE5IDIySDVDMy44OTU0MyAyMiAzIDIxLjEwNDYgMyAyMFY2QzMgNC44OTU0MyAzLjg5NTQzIDQgNSA0WlwiIHN0cm9rZT1cIiM2NjcwODVcIiBzdHJva2Utd2lkdGg9XCIxLjRcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1zLTIgbXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwibG9nRGV0YWlscz8uc2NoZWR1bGU/LnByZXZpb3VzPy5zY2hlZHVsZVJlcGVhdGVkVHlwZSA9PT0gJ29uZXRpbWUnXCI+T25jZSBvbjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcy0xXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBsb2dEZXRhaWxzPy5zY2hlZHVsZT8ucHJldmlvdXM/LnNjaGVkdWxlRGF0ZVN0cmluZyA/IGZvcm1hdERhdGUobG9nRGV0YWlscy5zY2hlZHVsZS5wcmV2aW91cy5zY2hlZHVsZURhdGVTdHJpbmcpIDogJy0nIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+PGJyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwcmV2aW91c2xpbmVoZWlnaHRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xMiA2VjEyTDE2IDE0TTIyIDEyQzIyIDE3LjUyMjggMTcuNTIyOCAyMiAxMiAyMkM2LjQ3NzE1IDIyIDIgMTcuNTIyOCAyIDEyQzIgNi40NzcxNSA2LjQ3NzE1IDIgMTIgMkMxNy41MjI4IDIgMjIgNi40NzcxNSAyMiAxMlpcIiBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMS40XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcy0yXCI+e3sgbG9nRGV0YWlscz8uc2NoZWR1bGU/LnByZXZpb3VzPy50aW1lIHx8ICctJyB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj48YnI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwicmVjZWl2ZWREYXRhID09PSAndGFzaycgJiYgbG9nRGV0YWlscz8uc2NoZWR1bGU/LnByZXZpb3VzPy5zY2hlZHVsZURhdGVTdHJpbmdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXktM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTE2IDJWNk04IDJWNk0zIDEwSDIxTTUgNEgxOUMyMC4xMDQ2IDQgMjEgNC44OTU0MyAyMSA2VjIwQzIxIDIxLjEwNDYgMjAuMTA0NiAyMiAxOSAyMkg1QzMuODk1NDMgMjIgMyAyMS4xMDQ2IDMgMjBWNkMzIDQuODk1NDMgMy44OTU0MyA0IDUgNFpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMS40XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXMtMiBtdC0yXCI+RHVlIERhdGU8L3NwYW4+IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXMtMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBsb2dEZXRhaWxzPy5zY2hlZHVsZT8ucHJldmlvdXM/LnNjaGVkdWxlRGF0ZVN0cmluZyA/IGZvcm1hdERhdGUobG9nRGV0YWlscy5zY2hlZHVsZS5wcmV2aW91cy5zY2hlZHVsZURhdGVTdHJpbmcpIDogJy0nIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPjxicj5cclxuICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInByZXZpb3VzbGluZWhlaWdodFwiICpuZ0lmPVwibG9nRGV0YWlscz8uc2NoZWR1bGU/LnByZXZpb3VzPy50aW1lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTIgNlYxMkwxNiAxNE0yMiAxMkMyMiAxNy41MjI4IDE3LjUyMjggMjIgMTIgMjJDNi40NzcxNSAyMiAyIDE3LjUyMjggMiAxMkMyIDYuNDc3MTUgNi40NzcxNSAyIDEyIDJDMTcuNTIyOCAyIDIyIDYuNDc3MTUgMjIgMTJaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzY2NzA4NVwiIHN0cm9rZS13aWR0aD1cIjEuNFwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1zLTJcIj57eyBsb2dEZXRhaWxzPy5zY2hlZHVsZT8ucHJldmlvdXM/LnRpbWUgfHwgJy0nIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJsb2dEZXRhaWxzPy5zY2hlZHVsZT8ucHJldmlvdXM/LnNjaGVkdWxlUmVwZWF0ZWRUeXBlID09PSAnd2Vla2RheSdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXktM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTE2IDJWNk04IDJWNk0zIDEwSDIxTTUgNEgxOUMyMC4xMDQ2IDQgMjEgNC44OTU0MyAyMSA2VjIwQzIxIDIxLjEwNDYgMjAuMTA0NiAyMiAxOSAyMkg1QzMuODk1NDMgMjIgMyAyMS4xMDQ2IDMgMjBWNkMzIDQuODk1NDMgMy44OTU0MyA0IDUgNFpcIiBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMS40XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcy0yXCI+RXZlcnkge3sgbG9nRGV0YWlscz8uc2NoZWR1bGU/LnByZXZpb3VzPy5zY2hlZHVsZSB8fCAnLScgfX08L3NwYW4+IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImxvZ0RldGFpbHM/LnNjaGVkdWxlPy5wcmV2aW91cz8uY29uZmlnU3RhcnREYXRlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcy0yXCI+U3RhcnRzIGZyb20ge3sgZm9ybWF0RGF0ZShsb2dEZXRhaWxzPy5zY2hlZHVsZT8ucHJldmlvdXM/LmNvbmZpZ1N0YXJ0RGF0ZSkgfX0gLTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImxvZ0RldGFpbHM/LnNjaGVkdWxlPy5wcmV2aW91cz8uY29uZmlnU3RhcnREYXRlICYmIGxvZ0RldGFpbHM/LnNjaGVkdWxlPy5wcmV2aW91cz8uY29uZmlnRW5kRGF0ZVwiIGNsYXNzPVwibXMtMlwiPi0gRXZlcnkgLTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcy0yXCI+e3sgbG9nRGV0YWlscz8uc2NoZWR1bGU/LnByZXZpb3VzPy5zY2hlZHVsZVJlcGVhdGVkRGF5IHx8ICctJyB9fTwvc3Bhbj4gXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXMtMlwiPnt7IGxvZ0RldGFpbHM/LnNjaGVkdWxlPy5wcmV2aW91cz8uc2NoZWR1bGVSZXBlYXRlZFR5cGUgfHwgJy0nIH19PC9zcGFuPiAtXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXMtMlwiPnt7IGxvZ0RldGFpbHM/LnNjaGVkdWxlPy5wcmV2aW91cz8uc2NoZWR1bGVXZWVrRGF5cyB8fCAnLScgfX08L3NwYW4+IFxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJsb2dEZXRhaWxzPy5zY2hlZHVsZT8ucHJldmlvdXM/LmNvbmZpZ0VuZERhdGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1zLTJcIj4tIEVuZHMgb24gIHt7IGZvcm1hdERhdGUobG9nRGV0YWlscz8uc2NoZWR1bGU/LnByZXZpb3VzPy5jb25maWdFbmREYXRlKSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPjxicj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicHJldmlvdXNsaW5laGVpZ2h0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTIgNlYxMkwxNiAxNE0yMiAxMkMyMiAxNy41MjI4IDE3LjUyMjggMjIgMTIgMjJDNi40NzcxNSAyMiAyIDE3LjUyMjggMiAxMkMyIDYuNDc3MTUgNi40NzcxNSAyIDEyIDJDMTcuNTIyOCAyIDIyIDYuNDc3MTUgMjIgMTJaXCIgc3Ryb2tlPVwiIzY2NzA4NVwiIHN0cm9rZS13aWR0aD1cIjEuNFwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXMtMlwiPnt7IGxvZ0RldGFpbHM/LnNjaGVkdWxlPy5wcmV2aW91cz8udGltZSB8fCAnLScgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+PGJyPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImxvZ0RldGFpbHM/LnNjaGVkdWxlPy5wcmV2aW91cz8uc2NoZWR1bGVSZXBlYXRlZFR5cGUgPT09ICdkYWlseSdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXktM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTE2IDJWNk04IDJWNk0zIDEwSDIxTTUgNEgxOUMyMC4xMDQ2IDQgMjEgNC44OTU0MyAyMSA2VjIwQzIxIDIxLjEwNDYgMjAuMTA0NiAyMiAxOSAyMkg1QzMuODk1NDMgMjIgMyAyMS4xMDQ2IDMgMjBWNkMzIDQuODk1NDMgMy44OTU0MyA0IDUgNFpcIiBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMS40XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcy0yXCI+UmVwZWF0cyB7eyBsb2dEZXRhaWxzPy5zY2hlZHVsZT8ucHJldmlvdXM/LnNjaGVkdWxlIHx8ICctJyB9fSAtPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImxvZ0RldGFpbHM/LnNjaGVkdWxlPy5wcmV2aW91cz8uY29uZmlnU3RhcnREYXRlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcy0yXCI+U3RhcnRzIGZyb20ge3sgZm9ybWF0RGF0ZShsb2dEZXRhaWxzPy5zY2hlZHVsZT8ucHJldmlvdXM/LmNvbmZpZ1N0YXJ0RGF0ZSkgfX0gLTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImxvZ0RldGFpbHM/LnNjaGVkdWxlPy5wcmV2aW91cz8uY29uZmlnU3RhcnREYXRlICYmIGxvZ0RldGFpbHM/LnNjaGVkdWxlPy5wcmV2aW91cz8uY29uZmlnRW5kRGF0ZVwiIGNsYXNzPVwibXMtMlwiPi0gRXZlcnkgLTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcy0yXCI+e3sgbG9nRGV0YWlscz8uc2NoZWR1bGU/LnByZXZpb3VzPy5zY2hlZHVsZVJlcGVhdGVkRGF5IHx8ICctJyB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcy0yXCI+e3sgbG9nRGV0YWlscz8uc2NoZWR1bGU/LnByZXZpb3VzPy5zY2hlZHVsZVJlcGVhdGVkVHlwZSB8fCAnLScgfX08L3NwYW4+IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImxvZ0RldGFpbHM/LnNjaGVkdWxlPy5wcmV2aW91cz8uY29uZmlnRW5kRGF0ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXMtMlwiPi0gRW5kcyBvbiAge3sgZm9ybWF0RGF0ZShsb2dEZXRhaWxzPy5zY2hlZHVsZT8ucHJldmlvdXM/LmNvbmZpZ0VuZERhdGUpIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+PGJyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwcmV2aW91c2xpbmVoZWlnaHRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xMiA2VjEyTDE2IDE0TTIyIDEyQzIyIDE3LjUyMjggMTcuNTIyOCAyMiAxMiAyMkM2LjQ3NzE1IDIyIDIgMTcuNTIyOCAyIDEyQzIgNi40NzcxNSA2LjQ3NzE1IDIgMTIgMkMxNy41MjI4IDIgMjIgNi40NzcxNSAyMiAxMlpcIiBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMS40XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcy0yXCI+e3sgbG9nRGV0YWlscz8uc2NoZWR1bGU/LnByZXZpb3VzPy50aW1lIHx8ICctJyB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj48YnI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwibG9nRGV0YWlscz8uc2NoZWR1bGU/LnByZXZpb3VzPy5zY2hlZHVsZVJlcGVhdGVkVHlwZSA9PT0gJ3dlZWtseSdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXktM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTE2IDJWNk04IDJWNk0zIDEwSDIxTTUgNEgxOUMyMC4xMDQ2IDQgMjEgNC44OTU0MyAyMSA2VjIwQzIxIDIxLjEwNDYgMjAuMTA0NiAyMiAxOSAyMkg1QzMuODk1NDMgMjIgMyAyMS4xMDQ2IDMgMjBWNkMzIDQuODk1NDMgMy44OTU0MyA0IDUgNFpcIiBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMS40XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcy0yXCI+UmVwZWF0cyB7eyBsb2dEZXRhaWxzPy5zY2hlZHVsZT8ucHJldmlvdXM/LnNjaGVkdWxlIHx8ICctJyB9fSAtPC9zcGFuPiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJsb2dEZXRhaWxzPy5zY2hlZHVsZT8ucHJldmlvdXM/LmNvbmZpZ1N0YXJ0RGF0ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXMtMlwiPlN0YXJ0cyBmcm9tIHt7IGZvcm1hdERhdGUobG9nRGV0YWlscz8uc2NoZWR1bGU/LnByZXZpb3VzPy5jb25maWdTdGFydERhdGUpIH19IC08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJsb2dEZXRhaWxzPy5zY2hlZHVsZT8ucHJldmlvdXM/LmNvbmZpZ1N0YXJ0RGF0ZSAmJiBsb2dEZXRhaWxzPy5zY2hlZHVsZT8ucHJldmlvdXM/LmNvbmZpZ0VuZERhdGVcIiBjbGFzcz1cIm1zLTJcIj4tIEV2ZXJ5IC08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXMtMlwiPnt7IGxvZ0RldGFpbHM/LnNjaGVkdWxlPy5wcmV2aW91cz8uc2NoZWR1bGVSZXBlYXRlZERheSB8fCAnLScgfX08L3NwYW4+IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1zLTJcIj57eyBsb2dEZXRhaWxzPy5zY2hlZHVsZT8ucHJldmlvdXM/LnNjaGVkdWxlUmVwZWF0ZWRUeXBlIHx8ICctJyB9fTwvc3Bhbj4gLVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1zLTJcIj57eyBsb2dEZXRhaWxzPy5zY2hlZHVsZT8ucHJldmlvdXM/LnNjaGVkdWxlV2Vla0RheXMgfHwgJy0nIH19PC9zcGFuPiBcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwibG9nRGV0YWlscz8uc2NoZWR1bGU/LnByZXZpb3VzPy5jb25maWdFbmREYXRlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcy0yXCI+LSBFbmRzIG9uICB7eyBmb3JtYXREYXRlKGxvZ0RldGFpbHM/LnNjaGVkdWxlPy5wcmV2aW91cz8uY29uZmlnRW5kRGF0ZSkgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj48YnI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInByZXZpb3VzbGluZWhlaWdodFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTEyIDZWMTJMMTYgMTRNMjIgMTJDMjIgMTcuNTIyOCAxNy41MjI4IDIyIDEyIDIyQzYuNDc3MTUgMjIgMiAxNy41MjI4IDIgMTJDMiA2LjQ3NzE1IDYuNDc3MTUgMiAxMiAyQzE3LjUyMjggMiAyMiA2LjQ3NzE1IDIyIDEyWlwiIHN0cm9rZT1cIiM2NjcwODVcIiBzdHJva2Utd2lkdGg9XCIxLjRcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1zLTJcIj57eyBsb2dEZXRhaWxzPy5zY2hlZHVsZT8ucHJldmlvdXM/LnRpbWUgfHwgJy0nIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPjxicj5cclxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJsb2dEZXRhaWxzPy5zY2hlZHVsZT8ucHJldmlvdXM/LnNjaGVkdWxlUmVwZWF0ZWRUeXBlID09PSAnbW9udGhseSdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXktM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTE2IDJWNk04IDJWNk0zIDEwSDIxTTUgNEgxOUMyMC4xMDQ2IDQgMjEgNC44OTU0MyAyMSA2VjIwQzIxIDIxLjEwNDYgMjAuMTA0NiAyMiAxOSAyMkg1QzMuODk1NDMgMjIgMyAyMS4xMDQ2IDMgMjBWNkMzIDQuODk1NDMgMy44OTU0MyA0IDUgNFpcIiBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMS40XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcy0yXCI+UmVwZWF0cyB7eyBsb2dEZXRhaWxzPy5zY2hlZHVsZT8ucHJldmlvdXM/LnNjaGVkdWxlIHx8ICctJyB9fSAtPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImxvZ0RldGFpbHM/LnNjaGVkdWxlPy5wcmV2aW91cz8uY29uZmlnU3RhcnREYXRlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcy0yXCI+U3RhcnRzIGZyb20ge3sgZm9ybWF0RGF0ZShsb2dEZXRhaWxzPy5zY2hlZHVsZT8ucHJldmlvdXM/LmNvbmZpZ1N0YXJ0RGF0ZSkgfX0gLTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImxvZ0RldGFpbHM/LnNjaGVkdWxlPy5wcmV2aW91cz8uY29uZmlnU3RhcnREYXRlICYmIGxvZ0RldGFpbHM/LnNjaGVkdWxlPy5wcmV2aW91cz8uY29uZmlnRW5kRGF0ZVwiIGNsYXNzPVwibXMtMlwiPi0gRXZlcnkgLTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcy0yXCI+e3sgbG9nRGV0YWlscz8uc2NoZWR1bGU/LnByZXZpb3VzPy5zY2hlZHVsZVJlcGVhdGVkRGF5IHx8ICctJyB9fTwvc3Bhbj4gXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXMtMlwiPnt7IGxvZ0RldGFpbHM/LnNjaGVkdWxlPy5wcmV2aW91cz8uc2NoZWR1bGVSZXBlYXRlZFR5cGUgfHwgJy0nIH19PC9zcGFuPiAtXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIShsb2dEZXRhaWxzPy5zY2hlZHVsZT8ucHJldmlvdXM/LnNjaGVkdWxlUmVwZWF0ZWRNb250aFdlZWs/Lmxlbmd0aCA9PT0gMSlcIj5PbiB0aGU8L3NwYW4+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImxvZ0RldGFpbHM/LnNjaGVkdWxlPy5wcmV2aW91cz8uc2NoZWR1bGVSZXBlYXRlZE1vbnRoV2Vlaz8ubGVuZ3RoID09PSAxXCI+T24gZGF5PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJsb2dEZXRhaWxzPy5zY2hlZHVsZT8ucHJldmlvdXM/LnNjaGVkdWxlUmVwZWF0ZWRNb250aFdlZWsgfHwgbG9nRGV0YWlscz8uc2NoZWR1bGU/LnByZXZpb3VzPy5zcGVjaWZpY0RhdGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInNjaGVkdWxlV2Vla3NBcnJheSgpLmxlbmd0aDsgZWxzZSBzaG93U3BlY2lmaWNEYXRlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdGb3I9XCJsZXQgd2VlayBvZiBzY2hlZHVsZVdlZWtzQXJyYXkoKTsgbGV0IGkgPSBpbmRleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBnZXRXZWVrT3JkaW5hbChwYXJzZVdlZWtOdW1iZXIod2Vlay5zcGxpdCgnICcpWzBdKSkgfX0ge3sgd2Vlay5zcGxpdCgnICcpWzFdIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiaSA8IHNjaGVkdWxlV2Vla3NBcnJheSgpLmxlbmd0aCAtIDFcIj4sIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNzaG93U3BlY2lmaWNEYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJsb2dEZXRhaWxzPy5zY2hlZHVsZT8ucHJldmlvdXM/LnNwZWNpZmljRGF0ZT8ubGVuZ3RoID4gMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBsb2dEZXRhaWxzPy5zY2hlZHVsZT8ucHJldmlvdXM/LnNwZWNpZmljRGF0ZS5qb2luKCcsICcpIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJsb2dEZXRhaWxzPy5zY2hlZHVsZT8ucHJldmlvdXM/LmNvbmZpZ0VuZERhdGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1zLTJcIj4tIEVuZHMgb24gIHt7IGZvcm1hdERhdGUobG9nRGV0YWlscz8uc2NoZWR1bGU/LnByZXZpb3VzPy5jb25maWdFbmREYXRlKSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPjxicj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicHJldmlvdXNsaW5laGVpZ2h0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTIgNlYxMkwxNiAxNE0yMiAxMkMyMiAxNy41MjI4IDE3LjUyMjggMjIgMTIgMjJDNi40NzcxNSAyMiAyIDE3LjUyMjggMiAxMkMyIDYuNDc3MTUgNi40NzcxNSAyIDEyIDJDMTcuNTIyOCAyIDIyIDYuNDc3MTUgMjIgMTJaXCIgc3Ryb2tlPVwiIzY2NzA4NVwiIHN0cm9rZS13aWR0aD1cIjEuNFwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXMtMlwiPnt7IGxvZ0RldGFpbHM/LnNjaGVkdWxlPy5wcmV2aW91cz8udGltZSB8fCAnLScgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+PGJyPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImxvZ0RldGFpbHM/LnNjaGVkdWxlPy5wcmV2aW91cz8uc2NoZWR1bGVSZXBlYXRlZFR5cGUgPT09ICdyYW5nZSdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXktM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTE2IDJWNk04IDJWNk0zIDEwSDIxTTUgNEgxOUMyMC4xMDQ2IDQgMjEgNC44OTU0MyAyMSA2VjIwQzIxIDIxLjEwNDYgMjAuMTA0NiAyMiAxOSAyMkg1QzMuODk1NDMgMjIgMyAyMS4xMDQ2IDMgMjBWNkMzIDQuODk1NDMgMy44OTU0MyA0IDUgNFpcIiBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMS40XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcy0yXCI+Q3VzdG9tIFJhbmdlPC9zcGFuPiAtXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwibG9nRGV0YWlscz8uc2NoZWR1bGU/LnByZXZpb3VzPy5jb25maWdTdGFydERhdGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1zLTJcIj5TdGFydHMgZnJvbSB7eyBmb3JtYXREYXRlKGxvZ0RldGFpbHM/LnNjaGVkdWxlPy5wcmV2aW91cz8uY29uZmlnU3RhcnREYXRlKSB9fSAtPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwibG9nRGV0YWlscz8uc2NoZWR1bGU/Lm5ldz8uc3BlY2lmaWNEYXRlXCIgY2xhc3M9XCJtcy0yXCI+LSBPbiB0aGUgU3BlY2lmaWMgRGF0ZXMgLSA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPHNwYW4gY2xhc3M9XCJtcy0yXCI+e3sgbG9nRGV0YWlscz8uc2NoZWR1bGU/LnByZXZpb3VzPy5zY2hlZHVsZVJlcGVhdGVkRGF5IHx8ICctJyB9fTwvc3Bhbj4gIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1zLTJcIj57eyBmb3JtYXREYXRlU3RyaW5nKGxvZ0RldGFpbHM/LnNjaGVkdWxlPy5wcmV2aW91cz8uc3BlY2lmaWNEYXRlWzBdKSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJsb2dEZXRhaWxzPy5zY2hlZHVsZT8ucHJldmlvdXM/LmNvbmZpZ0VuZERhdGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1zLTJcIj4tIEVuZHMgb24gIHt7IGZvcm1hdERhdGUobG9nRGV0YWlscz8uc2NoZWR1bGU/LnByZXZpb3VzPy5jb25maWdFbmREYXRlKSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPjxicj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicHJldmlvdXNsaW5laGVpZ2h0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTIgNlYxMkwxNiAxNE0yMiAxMkMyMiAxNy41MjI4IDE3LjUyMjggMjIgMTIgMjJDNi40NzcxNSAyMiAyIDE3LjUyMjggMiAxMkMyIDYuNDc3MTUgNi40NzcxNSAyIDEyIDJDMTcuNTIyOCAyIDIyIDYuNDc3MTUgMjIgMTJaXCIgc3Ryb2tlPVwiIzY2NzA4NVwiIHN0cm9rZS13aWR0aD1cIjEuNFwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXMtMlwiPnt7IGxvZ0RldGFpbHM/LnNjaGVkdWxlPy5wcmV2aW91cz8udGltZSB8fCAnLScgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+PGJyPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8IS0tIDx0ZCBjbGFzcz1cImNvbmZpZ1ByZXZpb3VzZmllbGR0ZXh0IGNvbC01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm15LTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xNiAyVjZNOCAyVjZNMyAxMEgyMU01IDRIMTlDMjAuMTA0NiA0IDIxIDQuODk1NDMgMjEgNlYyMEMyMSAyMS4xMDQ2IDIwLjEwNDYgMjIgMTkgMjJINUMzLjg5NTQzIDIyIDMgMjEuMTA0NiAzIDIwVjZDMyA0Ljg5NTQzIDMuODk1NDMgNCA1IDRaXCIgc3Ryb2tlPVwiIzY2NzA4NVwiIHN0cm9rZS13aWR0aD1cIjEuNFwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXMtMlwiPnt7IGxvZ0RldGFpbHM/LnNjaGVkdWxlPy5wcmV2aW91cz8uc2NoZWR1bGUgfHwgJ04vQScgfX0gb248L3NwYW4+IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1zLTJcIj57eyBsb2dEZXRhaWxzPy5zY2hlZHVsZT8ucHJldmlvdXM/LnJlcGVhdHMgfHwgJ04vQScgfX08L3NwYW4+IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImxvZ0RldGFpbHM/LnNjaGVkdWxlPy5wcmV2aW91cz8uc2NoZWR1bGVTdGFydFRpbWVfaXNvXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcy0yXCI+LSBTdGFydHMgZnJvbTogIHt7IGZvcm1hdERhdGUobG9nRGV0YWlscz8uc2NoZWR1bGU/LnByZXZpb3VzPy5zY2hlZHVsZVN0YXJ0VGltZV9pc28pIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwibG9nRGV0YWlscz8uc2NoZWR1bGU/LnByZXZpb3VzPy5vY2N1cnM/Lmxlbmd0aCA+IDBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1zLTJcIj57eyBsb2dEZXRhaWxzPy5zY2hlZHVsZT8ucHJldmlvdXM/Lm9jY3Vycz8uam9pbignLCAnKSB8fCAnTi9BJyB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPjxicj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTEyIDZWMTJMMTYgMTRNMjIgMTJDMjIgMTcuNTIyOCAxNy41MjI4IDIyIDEyIDIyQzYuNDc3MTUgMjIgMiAxNy41MjI4IDIgMTJDMiA2LjQ3NzE1IDYuNDc3MTUgMiAxMiAyQzE3LjUyMjggMiAyMiA2LjQ3NzE1IDIyIDEyWlwiIHN0cm9rZT1cIiM2NjcwODVcIiBzdHJva2Utd2lkdGg9XCIxLjRcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1zLTJcIj57eyBsb2dEZXRhaWxzPy5zY2hlZHVsZT8ucHJldmlvdXM/LnRpbWUgfHwgJ04vQScgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+PGJyPlxyXG4gICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICA8L3RkPiAtLT5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiY2hhbmdlc2ZpZWxkdGV4dCBjb2wtNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJsb2dEZXRhaWxzPy5zY2hlZHVsZT8ubmV3Py5zY2hlZHVsZVJlcGVhdGVkVHlwZSA9PT0gJ29uZXRpbWUnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXktM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xNiAyVjZNOCAyVjZNMyAxMEgyMU01IDRIMTlDMjAuMTA0NiA0IDIxIDQuODk1NDMgMjEgNlYyMEMyMSAyMS4xMDQ2IDIwLjEwNDYgMjIgMTkgMjJINUMzLjg5NTQzIDIyIDMgMjEuMTA0NiAzIDIwVjZDMyA0Ljg5NTQzIDMuODk1NDMgNCA1IDRaXCIgc3Ryb2tlPVwiIzY2NzA4NVwiIHN0cm9rZS13aWR0aD1cIjEuNFwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1zLTIgbXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJsb2dEZXRhaWxzPy5zY2hlZHVsZT8ubmV3Py5zY2hlZHVsZVJlcGVhdGVkVHlwZSA9PT0gJ29uZXRpbWUnXCI+T25jZSBvbjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcy0xXCI+IHt7IGxvZ0RldGFpbHM/LnNjaGVkdWxlPy5uZXc/LnNjaGVkdWxlRGF0ZVN0cmluZyA/IGZvcm1hdERhdGUobG9nRGV0YWlscy5zY2hlZHVsZS5uZXcuc2NoZWR1bGVEYXRlU3RyaW5nKSA6ICctJyB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj48YnI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibmV3bGluZWhlaWdodFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xMiA2VjEyTDE2IDE0TTIyIDEyQzIyIDE3LjUyMjggMTcuNTIyOCAyMiAxMiAyMkM2LjQ3NzE1IDIyIDIgMTcuNTIyOCAyIDEyQzIgNi40NzcxNSA2LjQ3NzE1IDIgMTIgMkMxNy41MjI4IDIgMjIgNi40NzcxNSAyMiAxMlpcIiBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMS40XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXMtMlwiPnt7IGxvZ0RldGFpbHM/LnNjaGVkdWxlPy5uZXc/LnRpbWUgfHwgJy0nIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+PGJyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJyZWNlaXZlZERhdGEgPT09ICd0YXNrJyAmJiBsb2dEZXRhaWxzPy5zY2hlZHVsZT8ubmV3Py5zY2hlZHVsZURhdGVTdHJpbmdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJteS0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTE2IDJWNk04IDJWNk0zIDEwSDIxTTUgNEgxOUMyMC4xMDQ2IDQgMjEgNC44OTU0MyAyMSA2VjIwQzIxIDIxLjEwNDYgMjAuMTA0NiAyMiAxOSAyMkg1QzMuODk1NDMgMjIgMyAyMS4xMDQ2IDMgMjBWNkMzIDQuODk1NDMgMy44OTU0MyA0IDUgNFpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM2NjcwODVcIiBzdHJva2Utd2lkdGg9XCIxLjRcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXMtMiBtdC0yXCI+RHVlIERhdGU8L3NwYW4+IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcy0xXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgbG9nRGV0YWlscz8uc2NoZWR1bGU/Lm5ldz8uc2NoZWR1bGVEYXRlU3RyaW5nID8gZm9ybWF0RGF0ZShsb2dEZXRhaWxzLnNjaGVkdWxlLm5ldy5zY2hlZHVsZURhdGVTdHJpbmcpIDogJy0nIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj48YnI+XHJcbiAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicHJldmlvdXNsaW5laGVpZ2h0XCIgKm5nSWY9XCJsb2dEZXRhaWxzPy5zY2hlZHVsZT8ubmV3Py50aW1lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTEyIDZWMTJMMTYgMTRNMjIgMTJDMjIgMTcuNTIyOCAxNy41MjI4IDIyIDEyIDIyQzYuNDc3MTUgMjIgMiAxNy41MjI4IDIgMTJDMiA2LjQ3NzE1IDYuNDc3MTUgMiAxMiAyQzE3LjUyMjggMiAyMiA2LjQ3NzE1IDIyIDEyWlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzY2NzA4NVwiIHN0cm9rZS13aWR0aD1cIjEuNFwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcy0yXCI+e3sgbG9nRGV0YWlscz8uc2NoZWR1bGU/Lm5ldz8udGltZSB8fCAnLScgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImxvZ0RldGFpbHM/LnNjaGVkdWxlPy5uZXc/LnNjaGVkdWxlUmVwZWF0ZWRUeXBlID09PSAnd2Vla2RheSdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJteS0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTE2IDJWNk04IDJWNk0zIDEwSDIxTTUgNEgxOUMyMC4xMDQ2IDQgMjEgNC44OTU0MyAyMSA2VjIwQzIxIDIxLjEwNDYgMjAuMTA0NiAyMiAxOSAyMkg1QzMuODk1NDMgMjIgMyAyMS4xMDQ2IDMgMjBWNkMzIDQuODk1NDMgMy44OTU0MyA0IDUgNFpcIiBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMS40XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXMtMlwiPkV2ZXJ5IHt7IGxvZ0RldGFpbHM/LnNjaGVkdWxlPy5uZXc/LnNjaGVkdWxlIHx8ICctJyB9fTwvc3Bhbj4gXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJsb2dEZXRhaWxzPy5zY2hlZHVsZT8ubmV3Py5jb25maWdTdGFydERhdGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXMtMlwiPlN0YXJ0cyBmcm9tIHt7IGZvcm1hdERhdGUobG9nRGV0YWlscz8uc2NoZWR1bGU/Lm5ldz8uY29uZmlnU3RhcnREYXRlKSB9fSAtPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImxvZ0RldGFpbHM/LnNjaGVkdWxlPy5uZXc/LmNvbmZpZ1N0YXJ0RGF0ZSAmJiBsb2dEZXRhaWxzPy5zY2hlZHVsZT8ubmV3Py5jb25maWdFbmREYXRlXCIgY2xhc3M9XCJtcy0yXCI+IEV2ZXJ5IC08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcy0yXCI+e3sgbG9nRGV0YWlscz8uc2NoZWR1bGU/Lm5ldz8uc2NoZWR1bGVSZXBlYXRlZERheSB8fCAnLScgfX08L3NwYW4+IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXMtMlwiPnt7IGxvZ0RldGFpbHM/LnNjaGVkdWxlPy5uZXc/LnNjaGVkdWxlUmVwZWF0ZWRUeXBlIHx8ICctJyB9fTwvc3Bhbj4gLVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXMtMlwiPnt7IGxvZ0RldGFpbHM/LnNjaGVkdWxlPy5uZXc/LnNjaGVkdWxlV2Vla0RheXMgfHwgJy0nIH19PC9zcGFuPiBcclxuICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImxvZ0RldGFpbHM/LnNjaGVkdWxlPy5uZXc/LmNvbmZpZ0VuZERhdGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXMtMlwiPi0gRW5kcyBvbiAge3sgZm9ybWF0RGF0ZShsb2dEZXRhaWxzPy5zY2hlZHVsZT8ubmV3Py5jb25maWdFbmREYXRlKSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj48YnI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibmV3bGluZWhlaWdodFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xMiA2VjEyTDE2IDE0TTIyIDEyQzIyIDE3LjUyMjggMTcuNTIyOCAyMiAxMiAyMkM2LjQ3NzE1IDIyIDIgMTcuNTIyOCAyIDEyQzIgNi40NzcxNSA2LjQ3NzE1IDIgMTIgMkMxNy41MjI4IDIgMjIgNi40NzcxNSAyMiAxMlpcIiBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMS40XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXMtMlwiPnt7IGxvZ0RldGFpbHM/LnNjaGVkdWxlPy5uZXc/LnRpbWUgfHwgJy0nIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+PGJyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJsb2dEZXRhaWxzPy5zY2hlZHVsZT8ubmV3Py5zY2hlZHVsZVJlcGVhdGVkVHlwZSA9PT0gJ2RhaWx5J1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm15LTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTYgMlY2TTggMlY2TTMgMTBIMjFNNSA0SDE5QzIwLjEwNDYgNCAyMSA0Ljg5NTQzIDIxIDZWMjBDMjEgMjEuMTA0NiAyMC4xMDQ2IDIyIDE5IDIySDVDMy44OTU0MyAyMiAzIDIxLjEwNDYgMyAyMFY2QzMgNC44OTU0MyAzLjg5NTQzIDQgNSA0WlwiIHN0cm9rZT1cIiM2NjcwODVcIiBzdHJva2Utd2lkdGg9XCIxLjRcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcy0yXCI+UmVwZWF0cyB7eyBsb2dEZXRhaWxzPy5zY2hlZHVsZT8ubmV3Py5zY2hlZHVsZSB8fCAnLScgfX0gLTwvc3Bhbj4gXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJsb2dEZXRhaWxzPy5zY2hlZHVsZT8ubmV3Py5jb25maWdTdGFydERhdGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXMtMlwiPlN0YXJ0cyBmcm9tIHt7IGZvcm1hdERhdGUobG9nRGV0YWlscz8uc2NoZWR1bGU/Lm5ldz8uY29uZmlnU3RhcnREYXRlKSB9fSAtPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImxvZ0RldGFpbHM/LnNjaGVkdWxlPy5uZXc/LmNvbmZpZ1N0YXJ0RGF0ZSAmJiBsb2dEZXRhaWxzPy5zY2hlZHVsZT8ubmV3Py5jb25maWdFbmREYXRlXCIgY2xhc3M9XCJtcy0yXCI+LSBFdmVyeSAtPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXMtMlwiPnt7IGxvZ0RldGFpbHM/LnNjaGVkdWxlPy5uZXc/LnNjaGVkdWxlUmVwZWF0ZWREYXkgfHwgJy0nIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXMtMlwiPnt7IGxvZ0RldGFpbHM/LnNjaGVkdWxlPy5uZXc/LnNjaGVkdWxlUmVwZWF0ZWRUeXBlIHx8ICctJyB9fTwvc3Bhbj4gXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJsb2dEZXRhaWxzPy5zY2hlZHVsZT8ubmV3Py5jb25maWdFbmREYXRlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1zLTJcIj4tIEVuZHMgb24gIHt7IGZvcm1hdERhdGUobG9nRGV0YWlscz8uc2NoZWR1bGU/Lm5ldz8uY29uZmlnRW5kRGF0ZSkgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+PGJyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm5ld2xpbmVoZWlnaHRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTIgNlYxMkwxNiAxNE0yMiAxMkMyMiAxNy41MjI4IDE3LjUyMjggMjIgMTIgMjJDNi40NzcxNSAyMiAyIDE3LjUyMjggMiAxMkMyIDYuNDc3MTUgNi40NzcxNSAyIDEyIDJDMTcuNTIyOCAyIDIyIDYuNDc3MTUgMjIgMTJaXCIgc3Ryb2tlPVwiIzY2NzA4NVwiIHN0cm9rZS13aWR0aD1cIjEuNFwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1zLTJcIj57eyBsb2dEZXRhaWxzPy5zY2hlZHVsZT8ubmV3Py50aW1lIHx8ICctJyB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPjxicj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwibG9nRGV0YWlscz8uc2NoZWR1bGU/Lm5ldz8uc2NoZWR1bGVSZXBlYXRlZFR5cGUgPT09ICd3ZWVrbHknXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXktM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xNiAyVjZNOCAyVjZNMyAxMEgyMU01IDRIMTlDMjAuMTA0NiA0IDIxIDQuODk1NDMgMjEgNlYyMEMyMSAyMS4xMDQ2IDIwLjEwNDYgMjIgMTkgMjJINUMzLjg5NTQzIDIyIDMgMjEuMTA0NiAzIDIwVjZDMyA0Ljg5NTQzIDMuODk1NDMgNCA1IDRaXCIgc3Ryb2tlPVwiIzY2NzA4NVwiIHN0cm9rZS13aWR0aD1cIjEuNFwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1zLTJcIj5SZXBlYXRzIHt7IGxvZ0RldGFpbHM/LnNjaGVkdWxlPy5uZXc/LnNjaGVkdWxlIHx8ICctJyB9fSAtPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwibG9nRGV0YWlscz8uc2NoZWR1bGU/Lm5ldz8uY29uZmlnU3RhcnREYXRlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1zLTJcIj5TdGFydHMgZnJvbSB7eyBmb3JtYXREYXRlKGxvZ0RldGFpbHM/LnNjaGVkdWxlPy5uZXc/LmNvbmZpZ1N0YXJ0RGF0ZSkgfX0gLTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJsb2dEZXRhaWxzPy5zY2hlZHVsZT8ubmV3Py5jb25maWdTdGFydERhdGUgJiYgbG9nRGV0YWlscz8uc2NoZWR1bGU/Lm5ldz8uY29uZmlnRW5kRGF0ZVwiIGNsYXNzPVwibXMtMlwiPi0gRXZlcnkgLTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1zLTJcIj57eyBsb2dEZXRhaWxzPy5zY2hlZHVsZT8ubmV3Py5zY2hlZHVsZVJlcGVhdGVkRGF5IHx8ICctJyB9fTwvc3Bhbj4gXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcy0yXCI+e3sgbG9nRGV0YWlscz8uc2NoZWR1bGU/Lm5ldz8uc2NoZWR1bGVSZXBlYXRlZFR5cGUgfHwgJy0nIH19PC9zcGFuPiAtXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcy0yXCI+e3sgbG9nRGV0YWlscz8uc2NoZWR1bGU/Lm5ldz8uc2NoZWR1bGVXZWVrRGF5cyB8fCAnLScgfX08L3NwYW4+IFxyXG4gIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwibG9nRGV0YWlscz8uc2NoZWR1bGU/Lm5ldz8uY29uZmlnRW5kRGF0ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcy0yXCI+LSBFbmRzIG9uICB7eyBmb3JtYXREYXRlKGxvZ0RldGFpbHM/LnNjaGVkdWxlPy5uZXc/LmNvbmZpZ0VuZERhdGUpIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPjxicj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJuZXdsaW5laGVpZ2h0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTEyIDZWMTJMMTYgMTRNMjIgMTJDMjIgMTcuNTIyOCAxNy41MjI4IDIyIDEyIDIyQzYuNDc3MTUgMjIgMiAxNy41MjI4IDIgMTJDMiA2LjQ3NzE1IDYuNDc3MTUgMiAxMiAyQzE3LjUyMjggMiAyMiA2LjQ3NzE1IDIyIDEyWlwiIHN0cm9rZT1cIiM2NjcwODVcIiBzdHJva2Utd2lkdGg9XCIxLjRcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcy0yXCI+e3sgbG9nRGV0YWlscz8uc2NoZWR1bGU/Lm5ldz8udGltZSB8fCAnLScgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj48YnI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImxvZ0RldGFpbHM/LnNjaGVkdWxlPy5uZXc/LnNjaGVkdWxlUmVwZWF0ZWRUeXBlID09PSAnbW9udGhseSdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJteS0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTE2IDJWNk04IDJWNk0zIDEwSDIxTTUgNEgxOUMyMC4xMDQ2IDQgMjEgNC44OTU0MyAyMSA2VjIwQzIxIDIxLjEwNDYgMjAuMTA0NiAyMiAxOSAyMkg1QzMuODk1NDMgMjIgMyAyMS4xMDQ2IDMgMjBWNkMzIDQuODk1NDMgMy44OTU0MyA0IDUgNFpcIiBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMS40XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXMtMlwiPlJlcGVhdHMge3sgbG9nRGV0YWlscz8uc2NoZWR1bGU/Lm5ldz8uc2NoZWR1bGUgfHwgJy0nIH19IC08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJsb2dEZXRhaWxzPy5zY2hlZHVsZT8ubmV3Py5jb25maWdTdGFydERhdGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXMtMlwiPlN0YXJ0cyBmcm9tIHt7IGZvcm1hdERhdGUobG9nRGV0YWlscz8uc2NoZWR1bGU/Lm5ldz8uY29uZmlnU3RhcnREYXRlKSB9fSAtPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImxvZ0RldGFpbHM/LnNjaGVkdWxlPy5uZXc/LmNvbmZpZ1N0YXJ0RGF0ZSAmJiBsb2dEZXRhaWxzPy5zY2hlZHVsZT8ubmV3Py5jb25maWdFbmREYXRlXCIgY2xhc3M9XCJtcy0yXCI+LSBFdmVyeSAtPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXMtMlwiPnt7IGxvZ0RldGFpbHM/LnNjaGVkdWxlPy5uZXc/LnNjaGVkdWxlUmVwZWF0ZWREYXkgfHwgJy0nIH19PC9zcGFuPiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1zLTJcIj57eyBsb2dEZXRhaWxzPy5zY2hlZHVsZT8ubmV3Py5zY2hlZHVsZVJlcGVhdGVkVHlwZSB8fCAnLScgfX08L3NwYW4+IC1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiEobG9nRGV0YWlscz8uc2NoZWR1bGU/Lm5ldz8uc2NoZWR1bGVSZXBlYXRlZE1vbnRoV2Vlaz8ubGVuZ3RoID09PSAxKVwiPk9uIHRoZSA8L3NwYW4+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwibG9nRGV0YWlscz8uc2NoZWR1bGU/Lm5ldz8uc2NoZWR1bGVSZXBlYXRlZE1vbnRoV2Vlaz8ubGVuZ3RoID09PSAxXCI+T24gZGF5PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwibG9nRGV0YWlscz8uc2NoZWR1bGU/Lm5ldz8uc2NoZWR1bGVSZXBlYXRlZE1vbnRoV2VlayB8fCBsb2dEZXRhaWxzPy5zY2hlZHVsZT8ubmV3Py5zcGVjaWZpY0RhdGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwic2NoZWR1bGVXZWVrc0FycmF5KCkubGVuZ3RoOyBlbHNlIHNob3dTcGVjaWZpY0RhdGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nRm9yPVwibGV0IHdlZWsgb2Ygc2NoZWR1bGVXZWVrc0FycmF5KCk7IGxldCBpID0gaW5kZXhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBnZXRXZWVrT3JkaW5hbChwYXJzZVdlZWtOdW1iZXIod2Vlay5zcGxpdCgnICcpWzBdKSkgfX0ge3sgd2Vlay5zcGxpdCgnICcpWzFdIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJpIDwgc2NoZWR1bGVXZWVrc0FycmF5KCkubGVuZ3RoIC0gMVwiPiwgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI3Nob3dTcGVjaWZpY0RhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwibG9nRGV0YWlscz8uc2NoZWR1bGU/Lm5ldz8uc3BlY2lmaWNEYXRlPy5sZW5ndGggPiAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgbG9nRGV0YWlscz8uc2NoZWR1bGU/Lm5ldz8uc3BlY2lmaWNEYXRlLmpvaW4oJywgJykgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJsb2dEZXRhaWxzPy5zY2hlZHVsZT8ubmV3Py5jb25maWdFbmREYXRlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1zLTJcIj4tIEVuZHMgb24gIHt7IGZvcm1hdERhdGUobG9nRGV0YWlscz8uc2NoZWR1bGU/Lm5ldz8uY29uZmlnRW5kRGF0ZSkgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+PGJyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm5ld2xpbmVoZWlnaHRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTIgNlYxMkwxNiAxNE0yMiAxMkMyMiAxNy41MjI4IDE3LjUyMjggMjIgMTIgMjJDNi40NzcxNSAyMiAyIDE3LjUyMjggMiAxMkMyIDYuNDc3MTUgNi40NzcxNSAyIDEyIDJDMTcuNTIyOCAyIDIyIDYuNDc3MTUgMjIgMTJaXCIgc3Ryb2tlPVwiIzY2NzA4NVwiIHN0cm9rZS13aWR0aD1cIjEuNFwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1zLTJcIj57eyBsb2dEZXRhaWxzPy5zY2hlZHVsZT8ubmV3Py50aW1lIHx8ICctJyB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPjxicj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwibG9nRGV0YWlscz8uc2NoZWR1bGU/Lm5ldz8uc2NoZWR1bGVSZXBlYXRlZFR5cGUgPT09ICdyYW5nZSdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJteS0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTE2IDJWNk04IDJWNk0zIDEwSDIxTTUgNEgxOUMyMC4xMDQ2IDQgMjEgNC44OTU0MyAyMSA2VjIwQzIxIDIxLjEwNDYgMjAuMTA0NiAyMiAxOSAyMkg1QzMuODk1NDMgMjIgMyAyMS4xMDQ2IDMgMjBWNkMzIDQuODk1NDMgMy44OTU0MyA0IDUgNFpcIiBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMS40XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXMtMlwiPkN1c3RvbSBSYW5nZTwvc3Bhbj4gLVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwibG9nRGV0YWlscz8uc2NoZWR1bGU/Lm5ldz8uY29uZmlnU3RhcnREYXRlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1zLTJcIj5TdGFydHMgZnJvbSB7eyBmb3JtYXREYXRlKGxvZ0RldGFpbHM/LnNjaGVkdWxlPy5uZXc/LmNvbmZpZ1N0YXJ0RGF0ZSkgfX0gLTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJsb2dEZXRhaWxzPy5zY2hlZHVsZT8ubmV3Py5zcGVjaWZpY0RhdGVcIiBjbGFzcz1cIm1zLTJcIj4tIE9uIHRoZSBTcGVjaWZpYyBEYXRlcyAtIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxzcGFuIGNsYXNzPVwibXMtMlwiPnt7IGxvZ0RldGFpbHM/LnNjaGVkdWxlPy5uZXc/LnNjaGVkdWxlUmVwZWF0ZWREYXkgfHwgJy0nIH19PC9zcGFuPiAgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcy0yXCI+e3sgZm9ybWF0RGF0ZVN0cmluZyhsb2dEZXRhaWxzPy5zY2hlZHVsZT8ubmV3Py5zcGVjaWZpY0RhdGVbMF0pIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwibG9nRGV0YWlscz8uc2NoZWR1bGU/Lm5ldz8uY29uZmlnRW5kRGF0ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcy0yXCI+LSBFbmRzIG9uICB7eyBmb3JtYXREYXRlKGxvZ0RldGFpbHM/LnNjaGVkdWxlPy5uZXc/LmNvbmZpZ0VuZERhdGUpIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPjxicj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJuZXdsaW5laGVpZ2h0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTEyIDZWMTJMMTYgMTRNMjIgMTJDMjIgMTcuNTIyOCAxNy41MjI4IDIyIDEyIDIyQzYuNDc3MTUgMjIgMiAxNy41MjI4IDIgMTJDMiA2LjQ3NzE1IDYuNDc3MTUgMiAxMiAyQzE3LjUyMjggMiAyMiA2LjQ3NzE1IDIyIDEyWlwiIHN0cm9rZT1cIiM2NjcwODVcIiBzdHJva2Utd2lkdGg9XCIxLjRcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcy0yXCI+e3sgbG9nRGV0YWlscz8uc2NoZWR1bGU/Lm5ldz8udGltZSB8fCAnLScgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj48YnI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwicXVlc3Rpb25maWVsZHRleHQgY29sLTJcIj5SZXNwb25zZTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiY29uZmlnUHJldmlvdXNmaWVsZHRleHQgY29sLTVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJsb2dEZXRhaWxzPy5yZXNwb25zZT8ucHJldmlvdXM/Lmxlbmd0aDsgZWxzZSBub1ByZXZpb3VzRGF0YVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgKm5nRm9yPVwibGV0IGl0ZW0gb2YgbG9nRGV0YWlscz8ucmVzcG9uc2U/LnByZXZpb3VzXCI+e3sgaXRlbSB9fTwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjbm9QcmV2aW91c0RhdGE+LTwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJjaGFuZ2VzZmllbGR0ZXh0IGNvbC01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibG9nRGV0YWlscz8ucmVzcG9uc2U/Lm5ldz8ubGVuZ3RoOyBlbHNlIG5vTmV3RGF0YVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgKm5nRm9yPVwibGV0IGl0ZW0gb2YgbG9nRGV0YWlscz8ucmVzcG9uc2U/Lm5ld1wiPnt7IGl0ZW0gfX08L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI25vTmV3RGF0YT4tPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwicXVlc3Rpb25maWVsZHRleHQgY29sLTJcIj5Pd25lcjwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiY29uZmlnUHJldmlvdXNmaWVsZHRleHQgY29sLTVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJsb2dEZXRhaWxzPy5vd25lcj8ucHJldmlvdXM7IGVsc2Ugbm9QcmV2aW91c0RhdGFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3sgbG9nRGV0YWlscz8ub3duZXI/LnByZXZpb3VzIHx8ICctJyB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI25vUHJldmlvdXNEYXRhPi08L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiY2hhbmdlc2ZpZWxkdGV4dCBjb2wtNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImxvZ0RldGFpbHM/Lm93bmVyPy5uZXc7IGVsc2Ugbm9OZXdEYXRhXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IGxvZ0RldGFpbHM/Lm93bmVyPy5uZXcgfHwgJy0nIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjbm9OZXdEYXRhPi08L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwicXVlc3Rpb25maWVsZHRleHQgY29sLTJcIj5BcHByb3ZlcjwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiY29uZmlnUHJldmlvdXNmaWVsZHRleHQgY29sLTVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJsb2dEZXRhaWxzPy5hcHByb3Zlcj8ucHJldmlvdXM7IGVsc2Ugbm9EYXRhXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IGxvZ0RldGFpbHM/LmFwcHJvdmVyPy5wcmV2aW91cyB8fCAnLScgfX1cclxuICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNub0RhdGE+LTwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJjaGFuZ2VzZmllbGR0ZXh0IGNvbC01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibG9nRGV0YWlscz8uYXBwcm92ZXI/Lm5ldzsgZWxzZSBub0RhdGFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3sgbG9nRGV0YWlscz8uYXBwcm92ZXI/Lm5ldyB8fCAnLScgfX1cclxuICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNub0RhdGE+LTwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgPC90cj5cclxuXHJcbiAgICAgICAgICAgICAgICAgIDx0ciAqbmdJZj1cInJlY2VpdmVkRGF0YSA9PT0gJ3Rhc2snXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwicXVlc3Rpb25maWVsZHRleHQgY29sLTJcIj5Qcmlvcml0eTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiY29uZmlnUHJldmlvdXNmaWVsZHRleHQgY29sLTVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJsb2dEZXRhaWxzPy5zY2hlZHVsZT8ucHJldmlvdXMucHJpb3JpdHk7IGVsc2Ugbm9EYXRhXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IGxvZ0RldGFpbHM/LnNjaGVkdWxlPy5wcmV2aW91cy5wcmlvcml0eSB8fCAnLScgfX1cclxuICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNub0RhdGE+LTwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJjaGFuZ2VzZmllbGR0ZXh0IGNvbC01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibG9nRGV0YWlscz8uc2NoZWR1bGU/Lm5ldz8ucHJpb3JpdHk7IGVsc2Ugbm9EYXRhXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IGxvZ0RldGFpbHM/LnNjaGVkdWxlPy5uZXc/LnByaW9yaXR5IHx8ICctJyB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI25vRGF0YT4tPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwicXVlc3Rpb25maWVsZHRleHQgY29sLTJcIj5TdG9yZSBSZW1vdmVkPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJjb25maWdQcmV2aW91c2ZpZWxkdGV4dCBjb2wtNVwiPiAtIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiY2hhbmdlc2ZpZWxkdGV4dCBjb2wtNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImxvZ0RldGFpbHM/LnN0b3JlUmVtb3ZlZD8ubGVuZ3RoOyBlbHNlIG5vRGF0YVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGliLXN0b3JlLXVzZXItZHJvcGRvd24gW2l0ZW1zXT1cImxvZ0RldGFpbHM/LnN0b3JlUmVtb3ZlZFwiIHRpdGxlPVwiU3RvcmVzXCI+PC9saWItc3RvcmUtdXNlci1kcm9wZG93bj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNub0RhdGE+LTwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJxdWVzdGlvbmZpZWxkdGV4dCBjb2wtMlwiPlVzZXIgQWRkZWQ8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cImNvbmZpZ1ByZXZpb3VzZmllbGR0ZXh0IGNvbC01XCI+IC0gPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJjaGFuZ2VzZmllbGR0ZXh0IGNvbC01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibG9nRGV0YWlscz8udXNlckFkZGVkPy5sZW5ndGg7IGVsc2Ugbm9EYXRhXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsaWItc3RvcmUtdXNlci1kcm9wZG93biBbaXRlbXNdPVwibG9nRGV0YWlscz8udXNlckFkZGVkXCIgdGl0bGU9XCJVc2Vyc1wiPjwvbGliLXN0b3JlLXVzZXItZHJvcGRvd24+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjbm9EYXRhPi08L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cInF1ZXN0aW9uZmllbGR0ZXh0IGNvbC0yXCI+VXNlciBSZW1vdmVkPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJjb25maWdQcmV2aW91c2ZpZWxkdGV4dCBjb2wtNVwiPiAtIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiY2hhbmdlc2ZpZWxkdGV4dCBjb2wtNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImxvZ0RldGFpbHM/LnVzZXJSZW1vdmVkPy5sZW5ndGg7IGVsc2Ugbm9EYXRhXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsaWItc3RvcmUtdXNlci1kcm9wZG93biBbaXRlbXNdPVwibG9nRGV0YWlscz8udXNlclJlbW92ZWRcIiB0aXRsZT1cIlVzZXJzXCI+PC9saWItc3RvcmUtdXNlci1kcm9wZG93bj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNub0RhdGE+LTwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICA8L3Rib2R5PlxyXG4gICAgICAgICAgICAgIDwvdGFibGU+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbjwhLS0gQ29uZmlndXJhdGlvbiBVcGRhdGVzIGVuZCAtLT5cclxuXHJcbiAgICA8L2Rpdj5cclxuPC9kaXY+Il19
|