tango-app-ui-manage-tickets 3.7.0-beta.83 → 3.7.0-beta.85
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/audit-mapping-list/audit-mapping-list.component.mjs +6 -6
- package/esm2022/lib/components/tango-manage-tickets/tango-manage-tickets.component.mjs +13 -3
- package/esm2022/lib/components/ticket-footfall-new/ticket-footfall-new.component.mjs +7 -4
- package/fesm2022/tango-app-ui-manage-tickets.mjs +23 -10
- package/fesm2022/tango-app-ui-manage-tickets.mjs.map +1 -1
- package/lib/components/audit-mapping-list/audit-mapping-list.component.d.ts +0 -1
- package/lib/components/tango-manage-tickets/tango-manage-tickets.component.d.ts +2 -0
- package/lib/components/ticket-footfall-new/ticket-footfall-new.component.d.ts +1 -0
- package/package.json +1 -1
|
@@ -37,7 +37,7 @@ export class AuditMappingListComponent {
|
|
|
37
37
|
employeecount = 0;
|
|
38
38
|
employeimage = [];
|
|
39
39
|
filedetails;
|
|
40
|
-
demographic;
|
|
40
|
+
// demographic: any;
|
|
41
41
|
submitted = false;
|
|
42
42
|
dummymapping;
|
|
43
43
|
destroy$ = new Subject();
|
|
@@ -115,7 +115,7 @@ export class AuditMappingListComponent {
|
|
|
115
115
|
this.auditmappingdata = [];
|
|
116
116
|
this.customercount = 0;
|
|
117
117
|
}
|
|
118
|
-
this.demographic = this.auditmappingdata.filter((data) => data.demographic === 'd').length;
|
|
118
|
+
// this.demographic = this.auditmappingdata.filter((data: any) => data.demographic === 'd').length;
|
|
119
119
|
}
|
|
120
120
|
this.category.map((data) => {
|
|
121
121
|
var count = JSON.parse(sessionStorage.getItem(data?.type) || '{}');
|
|
@@ -501,19 +501,19 @@ export class AuditMappingListComponent {
|
|
|
501
501
|
}
|
|
502
502
|
}
|
|
503
503
|
});
|
|
504
|
-
this.demographic = this.auditmappingdata.filter((data) => data.demographic === 'd').length;
|
|
504
|
+
// this.demographic = this.auditmappingdata.filter((data: any) => data.demographic === 'd').length;
|
|
505
505
|
const jsonString = JSON.stringify(this.auditmappingdata);
|
|
506
506
|
const compressedData = LZString.compress(jsonString);
|
|
507
507
|
sessionStorage.setItem('audit', compressedData);
|
|
508
508
|
}
|
|
509
509
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AuditMappingListComponent, deps: [{ token: i1.NgbModal }, { token: i2.Router }, { token: i3.AuditService }, { token: i4.ToastService }, { token: i2.ActivatedRoute }, { token: i0.ChangeDetectorRef }, { token: i5.TimerService }], target: i0.ɵɵFactoryTarget.Component });
|
|
510
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: AuditMappingListComponent, selector: "lib-audit-mapping-list", viewQueries: [{ propertyName: "confirmDraft", first: true, predicate: ["confirmDraft"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div *ngIf=\"!auditLoading\" class=\"card\" >\r\n <div class=\"card-header\" >\r\n <div class=\"card-title\">\r\n <h3 class=\"flex-column\">\r\n <!-- <span class=\"card-label fw-bold\">{{filedetails?.queueName}}<span class=\"mx-3 arrow-code\"> - </span> -->\r\n <span>{{filedetails?.storeId}}</span>\r\n \r\n <span class=\"mx-3 arrow-code\"> - </span>\r\n <span >{{filedetails?.Date}}</span>\r\n <!-- <span class=\"mx-3 arrow-code\"> - </span>\r\n <span >{{filedetails?.type}}</span> -->\r\n <!-- </span> -->\r\n </h3>\r\n \r\n <div class=\"rounded-3 ms-3 d-flex align-items-center bg-timer\">\r\n <span class=\"me-3 text-timer fw-semibold\">{{ formattedTime }}</span>\r\n <span><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M9.16667 2.87071C9.16667 2.62023 9.26617 2.38001 9.44329 2.20289C9.62041 2.02577 9.86063 1.92627 10.1111 1.92627H13.8889C14.1394 1.92627 14.3796 2.02577 14.5567 2.20289C14.7338 2.38001 14.8333 2.62023 14.8333 2.87071C14.8333 3.1212 14.7338 3.36142 14.5567 3.53854C14.3796 3.71565 14.1394 3.81516 13.8889 3.81516H12.9444V5.07442L12.9432 5.12605C14.5396 5.30097 16.0528 5.92787 17.3053 6.93308L17.3141 6.92553L18.2585 5.98108C18.374 5.85676 18.5208 5.76588 18.6835 5.71801C18.8463 5.67014 19.019 5.66706 19.1833 5.70908C19.3477 5.75111 19.4977 5.83669 19.6175 5.9568C19.7373 6.07692 19.8225 6.22713 19.8641 6.3916C19.906 6.55578 19.903 6.72823 19.8554 6.89085C19.8077 7.05348 19.7172 7.20029 19.5933 7.3159L18.6489 8.26034L18.6413 8.26915C19.6403 9.51974 20.2658 11.027 20.446 12.6174C20.6261 14.2078 20.3536 15.8167 19.6597 17.2591C18.9658 18.7014 17.8788 19.9185 16.5237 20.7704C15.1686 21.6222 13.6006 22.0741 12 22.0741C10.3994 22.0741 8.83137 21.6222 7.47629 20.7704C6.12122 19.9185 5.03419 18.7014 4.3403 17.2591C3.64641 15.8167 3.37386 14.2078 3.55402 12.6174C3.73418 11.027 4.35973 9.51974 5.35867 8.26915L5.35111 8.26034L4.40667 7.3159C4.23964 7.1369 4.14865 6.90003 4.15287 6.65524C4.1571 6.41045 4.25622 6.17687 4.42934 6.00375C4.60246 5.83063 4.83604 5.73151 5.08083 5.72728C5.32562 5.72306 5.56249 5.81405 5.74149 5.98108L6.68593 6.92553L6.69474 6.93308C7.94681 5.92809 9.45963 5.3012 11.0556 5.12605V3.81516H10.1111C9.86063 3.81516 9.62041 3.71565 9.44329 3.53854C9.26617 3.36142 9.16667 3.1212 9.16667 2.87071ZM12 20.1855C13.7535 20.1854 15.4352 19.4886 16.675 18.2485C17.9148 17.0085 18.6113 15.3267 18.6111 13.5732C18.6109 11.8196 17.9142 10.138 16.6741 8.89813C15.4341 7.65831 13.7523 6.96188 11.9987 6.96204C10.2452 6.96221 8.56354 7.65896 7.32372 8.89902C6.0839 10.1391 5.38747 11.8209 5.38763 13.5744C5.3878 15.328 6.08455 17.0096 7.32461 18.2494C8.56467 19.4893 10.2465 20.1857 12 20.1855ZM12.4899 11.7485L14.1647 10.0737C14.2517 9.98343 14.3559 9.91143 14.4711 9.86188C14.5863 9.81233 14.7102 9.78622 14.8356 9.78507C14.9611 9.78392 15.0854 9.80776 15.2015 9.85519C15.3176 9.90262 15.4231 9.9727 15.5118 10.0613C15.6005 10.15 15.6707 10.2554 15.7182 10.3714C15.7658 10.4875 15.7897 10.6118 15.7887 10.7372C15.7877 10.8626 15.7617 10.9866 15.7122 11.1018C15.6628 11.2171 15.5909 11.3213 15.5007 11.4085L13.8259 13.0846C13.9003 13.3645 13.9095 13.6579 13.8526 13.942C13.7958 14.226 13.6745 14.4933 13.4981 14.7231C13.3217 14.9529 13.0949 15.1391 12.8352 15.2675C12.5754 15.3958 12.2897 15.4628 12 15.4633C11.7327 15.461 11.4688 15.4019 11.226 15.29C10.9832 15.1781 10.767 15.0159 10.5916 14.8141C10.4162 14.6123 10.2857 14.3755 10.2087 14.1195C10.1316 13.8635 10.1099 13.594 10.1448 13.329C10.1798 13.0639 10.2706 12.8093 10.4114 12.582C10.5522 12.3547 10.7396 12.1599 10.9613 12.0104C11.183 11.861 11.4339 11.7604 11.6974 11.7152C11.9609 11.6701 12.231 11.6814 12.4899 11.7485Z\" fill=\"black\"/>\r\n </svg></span>\r\n </div>\r\n <!-- <span *ngIf=\"demographic\" class=\"badge badge-light-success ms-3\">{{demographic}} {{demographic > 1 ? 'Demographics' : 'Demographic'}}</span> -->\r\n </div>\r\n\r\n <div class=\"card-toolbar \">\r\n <div class=\"d-flex\">\r\n <div class=\"d-flex align-items-center position-relative my-1\">\r\n <a *ngIf=\"!showvalue1\" class=\"btn btn-sm btn-default btn-outline py-2 mx-2\" (click)=\"changesdata()\"><span\r\n class=\"svg-icon svg-icon-primary svg-icon-2x\" ><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M15.8337 10.0001H4.16699M4.16699 10.0001L10.0003 15.8334M4.16699 10.0001L10.0003 4.16675\" stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg></span><span class=\"ms-3\">Back to Tagging</span></a>\r\n <button *ngIf=\"!showvalue\" class=\"btn btn-sm btn-primary py-2 mx-2\" (click)=\"submitaudit()\" >Submit\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M4.16699 9.99984H15.8337M15.8337 9.99984L10.0003 4.1665M15.8337 9.99984L10.0003 15.8332\" stroke=\"white\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n </button>\r\n \r\n <button *ngIf=\"showvalue\" class=\"btn btn-primary btn-sm py-2 mx-2\" [disabled]=\"submitted\" (click)=\"taggingview()\">Retag <span\r\n class=\"svg-icon svg-icon-primary svg-icon-2x\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M4.16666 9.99996H15.8333M15.8333 9.99996L9.99999 4.16663M15.8333 9.99996L9.99999 15.8333\" stroke=\"white\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg></span>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n\r\n \r\n</div>\r\n\r\n\r\n<div class=\"row\"> \r\n <div *ngIf=\"auditLoading\" class=\"card mt-5\">\r\n <div class=\"card-body\">\r\n <div class=\"row loader d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div> \r\n </div>\r\n <!-- <h5 class=\"text-dark-600 fs-3 fw-bold text-center \">Loading Audit file......</h5> -->\r\n </div>\r\n </div>\r\n <div *ngIf=\"!auditLoading\" class=\"col-md-7\">\r\n <div class=\"card mt-5\">\r\n <div class=\"h-1000px\">\r\n <div ngbAccordion *ngFor=\"let item of category\">\r\n <div *ngIf=\"item?.count !==0\" class=\"mt-6\" ngbAccordionItem [collapsed]=\"!item?.count\">\r\n <div ngbAccordionHeader>\r\n <button class=\"mainheading\" ngbAccordionButton>\r\n <div>\r\n {{item?.name}} <span class=\"sub-text mt-2 ms-2\">\r\n <span class=\"badge badge-light-default\"><svg class=\"me-2\" xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_14508_18583)\">\r\n <path d=\"M2.5 10.5H9.5C10.0523 10.5 10.5 10.0523 10.5 9.5V2.5C10.5 1.94772 10.0523 1.5 9.5 1.5H2.5C1.94772 1.5 1.5 1.94772 1.5 2.5V9.5C1.5 10.0523 1.94772 10.5 2.5 10.5ZM2.5 10.5L8 5L10.5 7.5M5 4.25C5 4.66421 4.66421 5 4.25 5C3.83579 5 3.5 4.66421 3.5 4.25C3.5 3.83579 3.83579 3.5 4.25 3.5C4.66421 3.5 5 3.83579 5 4.25Z\" stroke=\"#667085\" stroke-width=\"1.1\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_14508_18583\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\"/>\r\n </clipPath>\r\n </defs>\r\n </svg>{{item?.count}}</span>\r\n </span>\r\n </div>\r\n <div class=\"divider\"></div>\r\n </button>\r\n </div>\r\n \r\n <div ngbAccordionCollapse>\r\n <div ngbAccordionBody class=\"py-0\">\r\n <ng-template>\r\n <div class=\"h-auto\" (dragover)=\"allowDrop($event)\">\r\n <div class=\"col-md-12 item\" >\r\n <div class=\"item\" *ngFor=\"let obj of item?.value\" >\r\n <img draggable=\"true\" (dragstart)=\"drag($event)\" id=\"{{obj.img_id}}\" name=\"{{item.type}}\"\r\n class=\"my-3 mx-2 img\" [src]=\"obj.img_path\">\r\n <div class=\"text-center m-0 fs-7 fw-bold\">{{obj.img_name}}</div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n \r\n \r\n </div>\r\n <div ngbAccordion>\r\n <div class=\"mt-6\" ngbAccordionItem [collapsed]=\"!(!junkcount && !employeecount)\">\r\n <div ngbAccordionHeader>\r\n <button class=\"mainheading\" ngbAccordionButton>\r\n <div>\r\n Unique Customer <span class=\"sub-text mt-2 ms-2\">\r\n <span class=\"badge badge-light-default\"><svg class=\"me-2\" xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_15800_3911)\">\r\n <path d=\"M8.5 10.5V9.5C8.5 8.96957 8.28929 8.46086 7.91421 8.08579C7.53914 7.71071 7.03043 7.5 6.5 7.5H2.5C1.96957 7.5 1.46086 7.71071 1.08579 8.08579C0.710714 8.46086 0.5 8.96957 0.5 9.5V10.5M11.5 10.5V9.5C11.4997 9.05686 11.3522 8.62639 11.0807 8.27616C10.8092 7.92593 10.4291 7.67578 10 7.565M8 1.565C8.43021 1.67515 8.81152 1.92535 9.08382 2.27616C9.35612 2.62696 9.50392 3.05841 9.50392 3.5025C9.50392 3.94659 9.35612 4.37804 9.08382 4.72884C8.81152 5.07965 8.43021 5.32985 8 5.44M6.5 3.5C6.5 4.60457 5.60457 5.5 4.5 5.5C3.39543 5.5 2.5 4.60457 2.5 3.5C2.5 2.39543 3.39543 1.5 4.5 1.5C5.60457 1.5 6.5 2.39543 6.5 3.5Z\" stroke=\"#667085\" stroke-width=\"1.1\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_15800_3911\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\"/>\r\n </clipPath>\r\n </defs>\r\n </svg> {{customercount}}</span>\r\n </span>\r\n </div>\r\n <div class=\"divider\"></div>\r\n </button>\r\n </div>\r\n \r\n <div ngbAccordionCollapse>\r\n <div ngbAccordionBody class=\"py-0\">\r\n <ng-template>\r\n <div>\r\n <div class=\"h-500\" (dragover)=\"allowDrop($event)\">\r\n <ng-container *ngIf=\"resetGroupNumber() === null\"></ng-container>\r\n <ng-container *ngFor=\"let obj of auditmappingdata;let i=index\">\r\n <div *ngIf=\"obj?.count === 1\" class=\"item\">\r\n <div>\r\n <div *ngFor=\"let img of obj?.mappedid\">\r\n <img draggable=\"true\" name=\"{{obj.img_id}}\" (dragstart)=\"drag($event)\" (click)=\"toggleImage(img?.img_name )\"\r\n id=\"{{img.img_id}}\" class=\"my-3 mx-2 img\" [src]=\"img.img_path\">\r\n <div class=\"text-center m-0 fs-7 fw-bold\">{{img.img_name}}</div>\r\n <!-- <span *ngIf=\"obj?.demographic !== 'd'\" class=\"notify-badge2 w-25px h-25px cursor-pointer\" (click)=\"toggleImage(img?.img_name )\">\r\n </span>\r\n <span *ngIf=\"obj?.demographic === 'd'\" class=\"notify-badge\" (click)=\"toggleImage(img?.img_name )\"><i class=\"fa fa-check\" aria-hidden=\"true\"\r\n style=\"font-size:15px;color:#00A3FF\"></i></span> -->\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <ng-container class=\"mt-5\" *ngFor=\"let obj of auditmappingdata;let i=index\">\r\n <div *ngIf=\"obj?.count > 1\" class=\"card-label mt-3\">Group {{ getGroupNumber(obj) }} <span class=\"sub-text mt-3 ms-2\">\r\n <span class=\"badge badge-light-default\"><svg class=\"me-2\" xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_14508_18583)\">\r\n <path d=\"M2.5 10.5H9.5C10.0523 10.5 10.5 10.0523 10.5 9.5V2.5C10.5 1.94772 10.0523 1.5 9.5 1.5H2.5C1.94772 1.5 1.5 1.94772 1.5 2.5V9.5C1.5 10.0523 1.94772 10.5 2.5 10.5ZM2.5 10.5L8 5L10.5 7.5M5 4.25C5 4.66421 4.66421 5 4.25 5C3.83579 5 3.5 4.66421 3.5 4.25C3.5 3.83579 3.83579 3.5 4.25 3.5C4.66421 3.5 5 3.83579 5 4.25Z\" stroke=\"#667085\" stroke-width=\"1.1\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_14508_18583\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\"/>\r\n </clipPath>\r\n </defs>\r\n </svg>{{obj.count}}</span>\r\n </span> \r\n <!-- <span *ngIf=\"obj?.demographic !== 'd'\" class=\"kid-badge cursor-pointer ms-3 me-3\" style=\"padding:2px 10.5px !important\" (click)=\"toggleImage(obj?.img_name)\">\r\n </span>\r\n <span *ngIf=\"obj?.demographic === 'd'\" class=\"kid-badge cursor-pointer ms-3 me-3\" (click)=\"toggleImage(obj?.img_name)\"><i class=\"fa fa-check\" aria-hidden=\"true\"\r\n style=\"font-size:15px;color:#00A3FF\"></i></span> Mark as demographic -->\r\n </div>\r\n <div *ngIf=\"obj.count > 1\" class=\"item\">\r\n <div>\r\n <div *ngFor=\"let img of obj?.mappedid\" class=\"item\">\r\n <img draggable=\"true\" name=\"{{obj.img_id}}\" (dragstart)=\"drag($event)\"\r\n id=\"{{img.img_id}}\" class=\"my-3 mx-2 img\" [src]=\"img.img_path\">\r\n <div class=\"text-center m-0 fs-7 fw-bold\">{{img.img_name}}</div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n \r\n </div>\r\n </div>\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"!auditLoading\" class=\"col-md-5\">\r\n <div class=\"card mt-5\">\r\n <!-- (change)=\"imagearray()\" -->\r\n <div class=\"card-body h-1000px\" (drop)=\"dropforretag($event)\" (dragover)=\"allowDrop($event)\" >\r\n <div class=\"card-label fw-bold text-dark mb-5\">Images for Retagging</div>\r\n <div class=\"col-md-12 item\" >\r\n <div class=\"item\" *ngFor=\"let item of retagimage\">\r\n <img [src]=\"item.img_path\" class=\"my-2 mx-4 img-ret\">\r\n <div class=\"text-center m-0 fs-7 fw-bold\">{{item.img_name}}</div>\r\n <span class=\"notify-badge1 cursor-pointer\" (click)=\"removeimage(item)\"><i class=\"fa fa-close\" aria-hidden=\"true\"\r\n style=\"font-size:15px;color:#00A3FF\"></i>\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<ng-template #confirmDraft let-modal>\r\n <div class=\"card h-auto p-10\">\r\n <div class=\"card-header d-grid p-0 border-0\">\r\n <span><img src=\"./assets/tango/Images/Successtoast.png\"></span>\r\n <!-- <span *ngIf=\"getBack\"><img src=\"./assets/tango/custompopup-Icons/danger-icon.svg\"></span> -->\r\n <div class=\"card-label mt-5\">Do you want to submit your changes without demographic?</div>\r\n <!-- <div *ngIf=\"getBack\" class=\"card-label mt-5\">Unsaved Changes</div> -->\r\n </div>\r\n <div class=\"card-body p-0\">\r\n <div class=\"w-100 d-flex mt-10\">\r\n <button class=\"btn btn-outline w-50 me-2 fw-bold\" (click)=\"modal.close('isDenied')\">Cancel</button>\r\n <button class=\"btn btn-primary savebtn w-50 ms-2\" (click)=\"modal.close('isConfirmed')\">Ok</button>\r\n </div>\r\n </div>\r\n </div>\r\n</ng-template>\r\n", styles: [".img{width:90px;height:200px}.card-label{font-family:Inter;font-style:normal;font-weight:600!important;font-size:18px!important}.text-col{font-family:Inter;font-style:normal;font-weight:400;font-size:14px;line-height:17px;color:#3f4254}.img-ret{width:90px;height:170px}.butn-flag{border:1px solid #009ef7!important;border-right-style:none!important;border-radius:.5rem 0rem 0rem .5rem!important;padding:calc(.25rem + 1px) calc(1.5rem + 1px)!important;background-color:#fff!important}.butn-flag1{border:1px solid #009ef7!important;border-radius:0rem .5rem .5rem 0rem!important;padding:calc(.25rem + 1px) calc(1.5rem + 1px)!important;background-color:#fff!important}.btn.btn-light-primary:hover:not(.btn-active){background-color:#fff!important}.butn{border:1px solid #009ef7!important;padding:calc(.65rem + 1px) calc(1.5rem + 1px)!important}.h-800px{min-height:120px;max-height:auto}.h-500{min-height:300px}.h-1000px{overflow:auto}.item{position:relative;display:inline-block}.notify-badge{position:absolute;right:0;top:195px;background:var(--Primary-50, #EAF8FF);text-align:center;border-radius:6px;color:#00a3ff;border:2px solid var(--Primary-600, #00A3FF);padding:8px;font-size:20px}.notify-badge{position:absolute;right:4px;top:8px;background:var(--Primary-50, #EAF8FF);text-align:center;border-radius:6px;color:#00a3ff;border:2px solid var(--Primary-600, #00A3FF);padding:0 5px;font-size:15px;width:25px;height:25px}.kid-badge{background:var(--Primary-50, #EAF8FF);text-align:center;border-radius:6px;color:#00a3ff;border:2px solid var(--Primary-600, #00A3FF);padding:2px 4px;font-size:15px;width:25px;height:25px}.nav-menu{position:sticky;position:-webkit-sticky;top:0}.notify-badge1{position:absolute;right:8px;top:4px;background:var(--Primary-50, #EAF8FF);color:#00a3ff;border:2px solid var(--Primary-600, #00A3FF);text-align:center;border-radius:6px;padding:1px 5px 0;font-size:15px;width:25px;height:25px}.notify-badge2{position:absolute;right:4px;top:8px;background:var(--Primary-50, #EAF8FF);color:#00a3ff;border:2px solid var(--Primary-600, #00A3FF);text-align:center;border-radius:6px;padding:0 8px;font-size:20px}.loader1{width:90px;height:90px;margin-left:580px}.svg-icon.svg-icon-2x svg{width:20px!important;height:20px!important}.mapping-height{min-height:auto;max-height:1000px}.mapping-height .h-100{height:96%!important}.btn-outline{border-radius:8px;border:1px solid var(--Gray-300, #D0D5DD);background:var(--White, #FFF);box-shadow:0 1px 2px #1018280d;color:var(--Gray-700, #344054);font-size:14px;font-weight:500;line-height:24px}.text-timer{color:var(--Gray-900, #101828);font-size:24px;line-height:32px}.bg-timer{border-radius:12px;background:var(--Primary-25, #F6FCFF);padding:4px}\n"], dependencies: [{ kind: "directive", type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgbAccordionButton, selector: "button[ngbAccordionButton]" }, { kind: "directive", type: i1.NgbAccordionDirective, selector: "[ngbAccordion]", inputs: ["animation", "closeOthers", "destroyOnHide"], outputs: ["show", "shown", "hide", "hidden"], exportAs: ["ngbAccordion"] }, { kind: "directive", type: i1.NgbAccordionItem, selector: "[ngbAccordionItem]", inputs: ["ngbAccordionItem", "destroyOnHide", "disabled", "collapsed"], outputs: ["show", "shown", "hide", "hidden"], exportAs: ["ngbAccordionItem"] }, { kind: "directive", type: i1.NgbAccordionHeader, selector: "[ngbAccordionHeader]" }, { kind: "directive", type: i1.NgbAccordionBody, selector: "[ngbAccordionBody]" }, { kind: "directive", type: i1.NgbAccordionCollapse, selector: "[ngbAccordionCollapse]", exportAs: ["ngbAccordionCollapse"] }] });
|
|
510
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: AuditMappingListComponent, selector: "lib-audit-mapping-list", viewQueries: [{ propertyName: "confirmDraft", first: true, predicate: ["confirmDraft"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div *ngIf=\"!auditLoading\" class=\"card\" >\r\n <div class=\"card-header\" >\r\n <div class=\"card-title\">\r\n <h3 class=\"flex-column\">\r\n <!-- <span class=\"card-label fw-bold\">{{filedetails?.queueName}}<span class=\"mx-3 arrow-code\"> - </span> -->\r\n <span>{{filedetails?.storeId}}</span>\r\n \r\n <span class=\"mx-3 arrow-code\"> - </span>\r\n <span >{{filedetails?.Date}}</span>\r\n <!-- <span class=\"mx-3 arrow-code\"> - </span>\r\n <span >{{filedetails?.type}}</span> -->\r\n <!-- </span> -->\r\n </h3>\r\n \r\n <div class=\"rounded-3 ms-3 d-flex align-items-center bg-timer\">\r\n <span class=\"me-3 text-timer fw-semibold\">{{ formattedTime }}</span>\r\n <span><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M9.16667 2.87071C9.16667 2.62023 9.26617 2.38001 9.44329 2.20289C9.62041 2.02577 9.86063 1.92627 10.1111 1.92627H13.8889C14.1394 1.92627 14.3796 2.02577 14.5567 2.20289C14.7338 2.38001 14.8333 2.62023 14.8333 2.87071C14.8333 3.1212 14.7338 3.36142 14.5567 3.53854C14.3796 3.71565 14.1394 3.81516 13.8889 3.81516H12.9444V5.07442L12.9432 5.12605C14.5396 5.30097 16.0528 5.92787 17.3053 6.93308L17.3141 6.92553L18.2585 5.98108C18.374 5.85676 18.5208 5.76588 18.6835 5.71801C18.8463 5.67014 19.019 5.66706 19.1833 5.70908C19.3477 5.75111 19.4977 5.83669 19.6175 5.9568C19.7373 6.07692 19.8225 6.22713 19.8641 6.3916C19.906 6.55578 19.903 6.72823 19.8554 6.89085C19.8077 7.05348 19.7172 7.20029 19.5933 7.3159L18.6489 8.26034L18.6413 8.26915C19.6403 9.51974 20.2658 11.027 20.446 12.6174C20.6261 14.2078 20.3536 15.8167 19.6597 17.2591C18.9658 18.7014 17.8788 19.9185 16.5237 20.7704C15.1686 21.6222 13.6006 22.0741 12 22.0741C10.3994 22.0741 8.83137 21.6222 7.47629 20.7704C6.12122 19.9185 5.03419 18.7014 4.3403 17.2591C3.64641 15.8167 3.37386 14.2078 3.55402 12.6174C3.73418 11.027 4.35973 9.51974 5.35867 8.26915L5.35111 8.26034L4.40667 7.3159C4.23964 7.1369 4.14865 6.90003 4.15287 6.65524C4.1571 6.41045 4.25622 6.17687 4.42934 6.00375C4.60246 5.83063 4.83604 5.73151 5.08083 5.72728C5.32562 5.72306 5.56249 5.81405 5.74149 5.98108L6.68593 6.92553L6.69474 6.93308C7.94681 5.92809 9.45963 5.3012 11.0556 5.12605V3.81516H10.1111C9.86063 3.81516 9.62041 3.71565 9.44329 3.53854C9.26617 3.36142 9.16667 3.1212 9.16667 2.87071ZM12 20.1855C13.7535 20.1854 15.4352 19.4886 16.675 18.2485C17.9148 17.0085 18.6113 15.3267 18.6111 13.5732C18.6109 11.8196 17.9142 10.138 16.6741 8.89813C15.4341 7.65831 13.7523 6.96188 11.9987 6.96204C10.2452 6.96221 8.56354 7.65896 7.32372 8.89902C6.0839 10.1391 5.38747 11.8209 5.38763 13.5744C5.3878 15.328 6.08455 17.0096 7.32461 18.2494C8.56467 19.4893 10.2465 20.1857 12 20.1855ZM12.4899 11.7485L14.1647 10.0737C14.2517 9.98343 14.3559 9.91143 14.4711 9.86188C14.5863 9.81233 14.7102 9.78622 14.8356 9.78507C14.9611 9.78392 15.0854 9.80776 15.2015 9.85519C15.3176 9.90262 15.4231 9.9727 15.5118 10.0613C15.6005 10.15 15.6707 10.2554 15.7182 10.3714C15.7658 10.4875 15.7897 10.6118 15.7887 10.7372C15.7877 10.8626 15.7617 10.9866 15.7122 11.1018C15.6628 11.2171 15.5909 11.3213 15.5007 11.4085L13.8259 13.0846C13.9003 13.3645 13.9095 13.6579 13.8526 13.942C13.7958 14.226 13.6745 14.4933 13.4981 14.7231C13.3217 14.9529 13.0949 15.1391 12.8352 15.2675C12.5754 15.3958 12.2897 15.4628 12 15.4633C11.7327 15.461 11.4688 15.4019 11.226 15.29C10.9832 15.1781 10.767 15.0159 10.5916 14.8141C10.4162 14.6123 10.2857 14.3755 10.2087 14.1195C10.1316 13.8635 10.1099 13.594 10.1448 13.329C10.1798 13.0639 10.2706 12.8093 10.4114 12.582C10.5522 12.3547 10.7396 12.1599 10.9613 12.0104C11.183 11.861 11.4339 11.7604 11.6974 11.7152C11.9609 11.6701 12.231 11.6814 12.4899 11.7485Z\" fill=\"black\"/>\r\n </svg></span>\r\n </div>\r\n <!-- <span *ngIf=\"demographic\" class=\"badge badge-light-success ms-3\">{{demographic}} {{demographic > 1 ? 'Demographics' : 'Demographic'}}</span> -->\r\n </div>\r\n\r\n <div class=\"card-toolbar \">\r\n <div class=\"d-flex\">\r\n <div class=\"d-flex align-items-center position-relative my-1\">\r\n <a *ngIf=\"!showvalue1\" class=\"btn btn-sm btn-default btn-outline py-2 mx-2\" (click)=\"changesdata()\"><span\r\n class=\"svg-icon svg-icon-primary svg-icon-2x\" ><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M15.8337 10.0001H4.16699M4.16699 10.0001L10.0003 15.8334M4.16699 10.0001L10.0003 4.16675\" stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg></span><span class=\"ms-3\">Back to Tagging</span></a>\r\n <button *ngIf=\"!showvalue\" class=\"btn btn-sm btn-primary py-2 mx-2\" (click)=\"submitaudit()\" >Submit\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M4.16699 9.99984H15.8337M15.8337 9.99984L10.0003 4.1665M15.8337 9.99984L10.0003 15.8332\" stroke=\"white\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n </button>\r\n \r\n <button *ngIf=\"showvalue\" class=\"btn btn-primary btn-sm py-2 mx-2\" [disabled]=\"submitted\" (click)=\"taggingview()\">Retag <span\r\n class=\"svg-icon svg-icon-primary svg-icon-2x\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M4.16666 9.99996H15.8333M15.8333 9.99996L9.99999 4.16663M15.8333 9.99996L9.99999 15.8333\" stroke=\"white\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg></span>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n\r\n \r\n</div>\r\n\r\n\r\n<div class=\"row\"> \r\n <div *ngIf=\"auditLoading\" class=\"card mt-5\">\r\n <div class=\"card-body\">\r\n <div class=\"row loader d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div> \r\n </div>\r\n <!-- <h5 class=\"text-dark-600 fs-3 fw-bold text-center \">Loading Audit file......</h5> -->\r\n </div>\r\n </div>\r\n <div *ngIf=\"!auditLoading\" class=\"col-md-7\">\r\n <div class=\"card mt-5\">\r\n <div class=\"h-1000px\">\r\n <div ngbAccordion *ngFor=\"let item of category\">\r\n <div *ngIf=\"item?.count !==0\" class=\"mt-6\" ngbAccordionItem [collapsed]=\"!item?.count\">\r\n <div ngbAccordionHeader>\r\n <button class=\"mainheading\" ngbAccordionButton>\r\n <div>\r\n {{item?.name}} <span class=\"sub-text mt-2 ms-2\">\r\n <span class=\"badge badge-light-default\"><svg class=\"me-2\" xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_14508_18583)\">\r\n <path d=\"M2.5 10.5H9.5C10.0523 10.5 10.5 10.0523 10.5 9.5V2.5C10.5 1.94772 10.0523 1.5 9.5 1.5H2.5C1.94772 1.5 1.5 1.94772 1.5 2.5V9.5C1.5 10.0523 1.94772 10.5 2.5 10.5ZM2.5 10.5L8 5L10.5 7.5M5 4.25C5 4.66421 4.66421 5 4.25 5C3.83579 5 3.5 4.66421 3.5 4.25C3.5 3.83579 3.83579 3.5 4.25 3.5C4.66421 3.5 5 3.83579 5 4.25Z\" stroke=\"#667085\" stroke-width=\"1.1\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_14508_18583\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\"/>\r\n </clipPath>\r\n </defs>\r\n </svg>{{item?.count}}</span>\r\n </span>\r\n </div>\r\n <div class=\"divider\"></div>\r\n </button>\r\n </div>\r\n \r\n <div ngbAccordionCollapse>\r\n <div ngbAccordionBody class=\"py-0\">\r\n <ng-template>\r\n <div class=\"h-auto\" (dragover)=\"allowDrop($event)\">\r\n <div class=\"col-md-12 item\" >\r\n <div class=\"item\" *ngFor=\"let obj of item?.value\" >\r\n <img draggable=\"true\" (dragstart)=\"drag($event)\" id=\"{{obj.img_id}}\" name=\"{{item.type}}\"\r\n class=\"my-3 mx-2 img\" [src]=\"obj.img_path\">\r\n <div class=\"text-center m-0 fs-7 fw-bold\">{{obj.img_name}}</div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n \r\n \r\n </div>\r\n <div ngbAccordion>\r\n <div class=\"mt-6\" ngbAccordionItem [collapsed]=\"!(!junkcount && !employeecount)\">\r\n <div ngbAccordionHeader>\r\n <button class=\"mainheading\" ngbAccordionButton>\r\n <div>\r\n Unique Customer <span class=\"sub-text mt-2 ms-2\">\r\n <span class=\"badge badge-light-default\"><svg class=\"me-2\" xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_15800_3911)\">\r\n <path d=\"M8.5 10.5V9.5C8.5 8.96957 8.28929 8.46086 7.91421 8.08579C7.53914 7.71071 7.03043 7.5 6.5 7.5H2.5C1.96957 7.5 1.46086 7.71071 1.08579 8.08579C0.710714 8.46086 0.5 8.96957 0.5 9.5V10.5M11.5 10.5V9.5C11.4997 9.05686 11.3522 8.62639 11.0807 8.27616C10.8092 7.92593 10.4291 7.67578 10 7.565M8 1.565C8.43021 1.67515 8.81152 1.92535 9.08382 2.27616C9.35612 2.62696 9.50392 3.05841 9.50392 3.5025C9.50392 3.94659 9.35612 4.37804 9.08382 4.72884C8.81152 5.07965 8.43021 5.32985 8 5.44M6.5 3.5C6.5 4.60457 5.60457 5.5 4.5 5.5C3.39543 5.5 2.5 4.60457 2.5 3.5C2.5 2.39543 3.39543 1.5 4.5 1.5C5.60457 1.5 6.5 2.39543 6.5 3.5Z\" stroke=\"#667085\" stroke-width=\"1.1\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_15800_3911\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\"/>\r\n </clipPath>\r\n </defs>\r\n </svg> {{customercount}}</span>\r\n </span>\r\n </div>\r\n <div class=\"divider\"></div>\r\n </button>\r\n </div>\r\n \r\n <div ngbAccordionCollapse>\r\n <div ngbAccordionBody class=\"py-0\">\r\n <ng-template>\r\n <div>\r\n <div class=\"h-500\" (dragover)=\"allowDrop($event)\">\r\n <ng-container *ngIf=\"resetGroupNumber() === null\"></ng-container>\r\n <ng-container *ngFor=\"let obj of auditmappingdata;let i=index\">\r\n <div *ngIf=\"obj?.count === 1\" class=\"item\">\r\n <div>\r\n <div *ngFor=\"let img of obj?.mappedid\">\r\n <img draggable=\"true\" name=\"{{obj.img_id}}\" (dragstart)=\"drag($event)\" (click)=\"toggleImage(img?.img_name )\"\r\n id=\"{{img.img_id}}\" class=\"my-3 mx-2 img\" [src]=\"img.img_path\">\r\n <div class=\"text-center m-0 fs-7 fw-bold\">{{img.img_name}}</div>\r\n <!-- <span *ngIf=\"obj?.demographic !== 'd'\" class=\"notify-badge2 w-25px h-25px cursor-pointer\" (click)=\"toggleImage(img?.img_name )\">\r\n </span>\r\n <span *ngIf=\"obj?.demographic === 'd'\" class=\"notify-badge\" (click)=\"toggleImage(img?.img_name )\"><i class=\"fa fa-check\" aria-hidden=\"true\"\r\n style=\"font-size:15px;color:#00A3FF\"></i></span> -->\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <ng-container class=\"mt-5\" *ngFor=\"let obj of auditmappingdata;let i=index\">\r\n <div *ngIf=\"obj?.count > 1\" class=\"card-label mt-3\">Group {{ getGroupNumber(obj) }} <span class=\"sub-text mt-3 ms-2\">\r\n <span class=\"badge badge-light-default\"><svg class=\"me-2\" xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_14508_18583)\">\r\n <path d=\"M2.5 10.5H9.5C10.0523 10.5 10.5 10.0523 10.5 9.5V2.5C10.5 1.94772 10.0523 1.5 9.5 1.5H2.5C1.94772 1.5 1.5 1.94772 1.5 2.5V9.5C1.5 10.0523 1.94772 10.5 2.5 10.5ZM2.5 10.5L8 5L10.5 7.5M5 4.25C5 4.66421 4.66421 5 4.25 5C3.83579 5 3.5 4.66421 3.5 4.25C3.5 3.83579 3.83579 3.5 4.25 3.5C4.66421 3.5 5 3.83579 5 4.25Z\" stroke=\"#667085\" stroke-width=\"1.1\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_14508_18583\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\"/>\r\n </clipPath>\r\n </defs>\r\n </svg>{{obj.count}}</span>\r\n </span> \r\n <!-- <span *ngIf=\"obj?.demographic !== 'd'\" class=\"kid-badge cursor-pointer ms-3 me-3\" style=\"padding:2px 10.5px !important\" (click)=\"toggleImage(obj?.img_name)\">\r\n </span>\r\n <span *ngIf=\"obj?.demographic === 'd'\" class=\"kid-badge cursor-pointer ms-3 me-3\" (click)=\"toggleImage(obj?.img_name)\"><i class=\"fa fa-check\" aria-hidden=\"true\"\r\n style=\"font-size:15px;color:#00A3FF\"></i></span> Mark as demographic -->\r\n </div>\r\n <div *ngIf=\"obj.count > 1\" class=\"item\">\r\n <div>\r\n <div *ngFor=\"let img of obj?.mappedid\" class=\"item\">\r\n <img draggable=\"true\" name=\"{{obj.img_id}}\" (dragstart)=\"drag($event)\"\r\n id=\"{{img.img_id}}\" class=\"my-3 mx-2 img\" [src]=\"img.img_path\">\r\n <div class=\"text-center m-0 fs-7 fw-bold\">{{img.img_name}}</div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n \r\n </div>\r\n </div>\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"!auditLoading\" class=\"col-md-5\">\r\n <div class=\"card mt-5\">\r\n <!-- (change)=\"imagearray()\" -->\r\n <div class=\"card-body h-1000px\" (drop)=\"dropforretag($event)\" (dragover)=\"allowDrop($event)\" >\r\n <div class=\"card-label fw-bold text-dark mb-5\">Images for Retagging</div>\r\n <div class=\"col-md-12 item\" >\r\n <div class=\"item\" *ngFor=\"let item of retagimage\">\r\n <img [src]=\"item.img_path\" class=\"my-2 mx-4 img-ret\">\r\n <div class=\"text-center m-0 fs-7 fw-bold\">{{item.img_name}}</div>\r\n <span class=\"notify-badge1 cursor-pointer\" (click)=\"removeimage(item)\"><i class=\"fa fa-close\" aria-hidden=\"true\"\r\n style=\"font-size:15px;color:#00A3FF\"></i>\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<ng-template #confirmDraft let-modal>\r\n <div class=\"card h-auto p-10\">\r\n <div class=\"card-header d-grid p-0 border-0\">\r\n <span><img src=\"./assets/tango/Images/Successtoast.png\"></span>\r\n <!-- <span *ngIf=\"getBack\"><img src=\"./assets/tango/custompopup-Icons/danger-icon.svg\"></span> -->\r\n <!-- <div class=\"card-label mt-5\">Do you want to submit your changes without demographic?</div> -->\r\n <!-- <div *ngIf=\"getBack\" class=\"card-label mt-5\">Unsaved Changes</div> -->\r\n </div>\r\n <div class=\"card-body p-0\">\r\n <div class=\"w-100 d-flex mt-10\">\r\n <button class=\"btn btn-outline w-50 me-2 fw-bold\" (click)=\"modal.close('isDenied')\">Cancel</button>\r\n <button class=\"btn btn-primary savebtn w-50 ms-2\" (click)=\"modal.close('isConfirmed')\">Ok</button>\r\n </div>\r\n </div>\r\n </div>\r\n</ng-template>\r\n", styles: [".img{width:90px;height:200px}.card-label{font-family:Inter;font-style:normal;font-weight:600!important;font-size:18px!important}.text-col{font-family:Inter;font-style:normal;font-weight:400;font-size:14px;line-height:17px;color:#3f4254}.img-ret{width:90px;height:170px}.butn-flag{border:1px solid #009ef7!important;border-right-style:none!important;border-radius:.5rem 0rem 0rem .5rem!important;padding:calc(.25rem + 1px) calc(1.5rem + 1px)!important;background-color:#fff!important}.butn-flag1{border:1px solid #009ef7!important;border-radius:0rem .5rem .5rem 0rem!important;padding:calc(.25rem + 1px) calc(1.5rem + 1px)!important;background-color:#fff!important}.btn.btn-light-primary:hover:not(.btn-active){background-color:#fff!important}.butn{border:1px solid #009ef7!important;padding:calc(.65rem + 1px) calc(1.5rem + 1px)!important}.h-800px{min-height:120px;max-height:auto}.h-500{min-height:300px}.h-1000px{overflow:auto}.item{position:relative;display:inline-block}.notify-badge{position:absolute;right:0;top:195px;background:var(--Primary-50, #EAF8FF);text-align:center;border-radius:6px;color:#00a3ff;border:2px solid var(--Primary-600, #00A3FF);padding:8px;font-size:20px}.notify-badge{position:absolute;right:4px;top:8px;background:var(--Primary-50, #EAF8FF);text-align:center;border-radius:6px;color:#00a3ff;border:2px solid var(--Primary-600, #00A3FF);padding:0 5px;font-size:15px;width:25px;height:25px}.kid-badge{background:var(--Primary-50, #EAF8FF);text-align:center;border-radius:6px;color:#00a3ff;border:2px solid var(--Primary-600, #00A3FF);padding:2px 4px;font-size:15px;width:25px;height:25px}.nav-menu{position:sticky;position:-webkit-sticky;top:0}.notify-badge1{position:absolute;right:8px;top:4px;background:var(--Primary-50, #EAF8FF);color:#00a3ff;border:2px solid var(--Primary-600, #00A3FF);text-align:center;border-radius:6px;padding:1px 5px 0;font-size:15px;width:25px;height:25px}.notify-badge2{position:absolute;right:4px;top:8px;background:var(--Primary-50, #EAF8FF);color:#00a3ff;border:2px solid var(--Primary-600, #00A3FF);text-align:center;border-radius:6px;padding:0 8px;font-size:20px}.loader1{width:90px;height:90px;margin-left:580px}.svg-icon.svg-icon-2x svg{width:20px!important;height:20px!important}.mapping-height{min-height:auto;max-height:1000px}.mapping-height .h-100{height:96%!important}.btn-outline{border-radius:8px;border:1px solid var(--Gray-300, #D0D5DD);background:var(--White, #FFF);box-shadow:0 1px 2px #1018280d;color:var(--Gray-700, #344054);font-size:14px;font-weight:500;line-height:24px}.text-timer{color:var(--Gray-900, #101828);font-size:24px;line-height:32px}.bg-timer{border-radius:12px;background:var(--Primary-25, #F6FCFF);padding:4px}\n"], dependencies: [{ kind: "directive", type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgbAccordionButton, selector: "button[ngbAccordionButton]" }, { kind: "directive", type: i1.NgbAccordionDirective, selector: "[ngbAccordion]", inputs: ["animation", "closeOthers", "destroyOnHide"], outputs: ["show", "shown", "hide", "hidden"], exportAs: ["ngbAccordion"] }, { kind: "directive", type: i1.NgbAccordionItem, selector: "[ngbAccordionItem]", inputs: ["ngbAccordionItem", "destroyOnHide", "disabled", "collapsed"], outputs: ["show", "shown", "hide", "hidden"], exportAs: ["ngbAccordionItem"] }, { kind: "directive", type: i1.NgbAccordionHeader, selector: "[ngbAccordionHeader]" }, { kind: "directive", type: i1.NgbAccordionBody, selector: "[ngbAccordionBody]" }, { kind: "directive", type: i1.NgbAccordionCollapse, selector: "[ngbAccordionCollapse]", exportAs: ["ngbAccordionCollapse"] }] });
|
|
511
511
|
}
|
|
512
512
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AuditMappingListComponent, decorators: [{
|
|
513
513
|
type: Component,
|
|
514
|
-
args: [{ selector: 'lib-audit-mapping-list', template: "<div *ngIf=\"!auditLoading\" class=\"card\" >\r\n <div class=\"card-header\" >\r\n <div class=\"card-title\">\r\n <h3 class=\"flex-column\">\r\n <!-- <span class=\"card-label fw-bold\">{{filedetails?.queueName}}<span class=\"mx-3 arrow-code\"> - </span> -->\r\n <span>{{filedetails?.storeId}}</span>\r\n \r\n <span class=\"mx-3 arrow-code\"> - </span>\r\n <span >{{filedetails?.Date}}</span>\r\n <!-- <span class=\"mx-3 arrow-code\"> - </span>\r\n <span >{{filedetails?.type}}</span> -->\r\n <!-- </span> -->\r\n </h3>\r\n \r\n <div class=\"rounded-3 ms-3 d-flex align-items-center bg-timer\">\r\n <span class=\"me-3 text-timer fw-semibold\">{{ formattedTime }}</span>\r\n <span><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M9.16667 2.87071C9.16667 2.62023 9.26617 2.38001 9.44329 2.20289C9.62041 2.02577 9.86063 1.92627 10.1111 1.92627H13.8889C14.1394 1.92627 14.3796 2.02577 14.5567 2.20289C14.7338 2.38001 14.8333 2.62023 14.8333 2.87071C14.8333 3.1212 14.7338 3.36142 14.5567 3.53854C14.3796 3.71565 14.1394 3.81516 13.8889 3.81516H12.9444V5.07442L12.9432 5.12605C14.5396 5.30097 16.0528 5.92787 17.3053 6.93308L17.3141 6.92553L18.2585 5.98108C18.374 5.85676 18.5208 5.76588 18.6835 5.71801C18.8463 5.67014 19.019 5.66706 19.1833 5.70908C19.3477 5.75111 19.4977 5.83669 19.6175 5.9568C19.7373 6.07692 19.8225 6.22713 19.8641 6.3916C19.906 6.55578 19.903 6.72823 19.8554 6.89085C19.8077 7.05348 19.7172 7.20029 19.5933 7.3159L18.6489 8.26034L18.6413 8.26915C19.6403 9.51974 20.2658 11.027 20.446 12.6174C20.6261 14.2078 20.3536 15.8167 19.6597 17.2591C18.9658 18.7014 17.8788 19.9185 16.5237 20.7704C15.1686 21.6222 13.6006 22.0741 12 22.0741C10.3994 22.0741 8.83137 21.6222 7.47629 20.7704C6.12122 19.9185 5.03419 18.7014 4.3403 17.2591C3.64641 15.8167 3.37386 14.2078 3.55402 12.6174C3.73418 11.027 4.35973 9.51974 5.35867 8.26915L5.35111 8.26034L4.40667 7.3159C4.23964 7.1369 4.14865 6.90003 4.15287 6.65524C4.1571 6.41045 4.25622 6.17687 4.42934 6.00375C4.60246 5.83063 4.83604 5.73151 5.08083 5.72728C5.32562 5.72306 5.56249 5.81405 5.74149 5.98108L6.68593 6.92553L6.69474 6.93308C7.94681 5.92809 9.45963 5.3012 11.0556 5.12605V3.81516H10.1111C9.86063 3.81516 9.62041 3.71565 9.44329 3.53854C9.26617 3.36142 9.16667 3.1212 9.16667 2.87071ZM12 20.1855C13.7535 20.1854 15.4352 19.4886 16.675 18.2485C17.9148 17.0085 18.6113 15.3267 18.6111 13.5732C18.6109 11.8196 17.9142 10.138 16.6741 8.89813C15.4341 7.65831 13.7523 6.96188 11.9987 6.96204C10.2452 6.96221 8.56354 7.65896 7.32372 8.89902C6.0839 10.1391 5.38747 11.8209 5.38763 13.5744C5.3878 15.328 6.08455 17.0096 7.32461 18.2494C8.56467 19.4893 10.2465 20.1857 12 20.1855ZM12.4899 11.7485L14.1647 10.0737C14.2517 9.98343 14.3559 9.91143 14.4711 9.86188C14.5863 9.81233 14.7102 9.78622 14.8356 9.78507C14.9611 9.78392 15.0854 9.80776 15.2015 9.85519C15.3176 9.90262 15.4231 9.9727 15.5118 10.0613C15.6005 10.15 15.6707 10.2554 15.7182 10.3714C15.7658 10.4875 15.7897 10.6118 15.7887 10.7372C15.7877 10.8626 15.7617 10.9866 15.7122 11.1018C15.6628 11.2171 15.5909 11.3213 15.5007 11.4085L13.8259 13.0846C13.9003 13.3645 13.9095 13.6579 13.8526 13.942C13.7958 14.226 13.6745 14.4933 13.4981 14.7231C13.3217 14.9529 13.0949 15.1391 12.8352 15.2675C12.5754 15.3958 12.2897 15.4628 12 15.4633C11.7327 15.461 11.4688 15.4019 11.226 15.29C10.9832 15.1781 10.767 15.0159 10.5916 14.8141C10.4162 14.6123 10.2857 14.3755 10.2087 14.1195C10.1316 13.8635 10.1099 13.594 10.1448 13.329C10.1798 13.0639 10.2706 12.8093 10.4114 12.582C10.5522 12.3547 10.7396 12.1599 10.9613 12.0104C11.183 11.861 11.4339 11.7604 11.6974 11.7152C11.9609 11.6701 12.231 11.6814 12.4899 11.7485Z\" fill=\"black\"/>\r\n </svg></span>\r\n </div>\r\n <!-- <span *ngIf=\"demographic\" class=\"badge badge-light-success ms-3\">{{demographic}} {{demographic > 1 ? 'Demographics' : 'Demographic'}}</span> -->\r\n </div>\r\n\r\n <div class=\"card-toolbar \">\r\n <div class=\"d-flex\">\r\n <div class=\"d-flex align-items-center position-relative my-1\">\r\n <a *ngIf=\"!showvalue1\" class=\"btn btn-sm btn-default btn-outline py-2 mx-2\" (click)=\"changesdata()\"><span\r\n class=\"svg-icon svg-icon-primary svg-icon-2x\" ><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M15.8337 10.0001H4.16699M4.16699 10.0001L10.0003 15.8334M4.16699 10.0001L10.0003 4.16675\" stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg></span><span class=\"ms-3\">Back to Tagging</span></a>\r\n <button *ngIf=\"!showvalue\" class=\"btn btn-sm btn-primary py-2 mx-2\" (click)=\"submitaudit()\" >Submit\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M4.16699 9.99984H15.8337M15.8337 9.99984L10.0003 4.1665M15.8337 9.99984L10.0003 15.8332\" stroke=\"white\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n </button>\r\n \r\n <button *ngIf=\"showvalue\" class=\"btn btn-primary btn-sm py-2 mx-2\" [disabled]=\"submitted\" (click)=\"taggingview()\">Retag <span\r\n class=\"svg-icon svg-icon-primary svg-icon-2x\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M4.16666 9.99996H15.8333M15.8333 9.99996L9.99999 4.16663M15.8333 9.99996L9.99999 15.8333\" stroke=\"white\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg></span>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n\r\n \r\n</div>\r\n\r\n\r\n<div class=\"row\"> \r\n <div *ngIf=\"auditLoading\" class=\"card mt-5\">\r\n <div class=\"card-body\">\r\n <div class=\"row loader d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div> \r\n </div>\r\n <!-- <h5 class=\"text-dark-600 fs-3 fw-bold text-center \">Loading Audit file......</h5> -->\r\n </div>\r\n </div>\r\n <div *ngIf=\"!auditLoading\" class=\"col-md-7\">\r\n <div class=\"card mt-5\">\r\n <div class=\"h-1000px\">\r\n <div ngbAccordion *ngFor=\"let item of category\">\r\n <div *ngIf=\"item?.count !==0\" class=\"mt-6\" ngbAccordionItem [collapsed]=\"!item?.count\">\r\n <div ngbAccordionHeader>\r\n <button class=\"mainheading\" ngbAccordionButton>\r\n <div>\r\n {{item?.name}} <span class=\"sub-text mt-2 ms-2\">\r\n <span class=\"badge badge-light-default\"><svg class=\"me-2\" xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_14508_18583)\">\r\n <path d=\"M2.5 10.5H9.5C10.0523 10.5 10.5 10.0523 10.5 9.5V2.5C10.5 1.94772 10.0523 1.5 9.5 1.5H2.5C1.94772 1.5 1.5 1.94772 1.5 2.5V9.5C1.5 10.0523 1.94772 10.5 2.5 10.5ZM2.5 10.5L8 5L10.5 7.5M5 4.25C5 4.66421 4.66421 5 4.25 5C3.83579 5 3.5 4.66421 3.5 4.25C3.5 3.83579 3.83579 3.5 4.25 3.5C4.66421 3.5 5 3.83579 5 4.25Z\" stroke=\"#667085\" stroke-width=\"1.1\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_14508_18583\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\"/>\r\n </clipPath>\r\n </defs>\r\n </svg>{{item?.count}}</span>\r\n </span>\r\n </div>\r\n <div class=\"divider\"></div>\r\n </button>\r\n </div>\r\n \r\n <div ngbAccordionCollapse>\r\n <div ngbAccordionBody class=\"py-0\">\r\n <ng-template>\r\n <div class=\"h-auto\" (dragover)=\"allowDrop($event)\">\r\n <div class=\"col-md-12 item\" >\r\n <div class=\"item\" *ngFor=\"let obj of item?.value\" >\r\n <img draggable=\"true\" (dragstart)=\"drag($event)\" id=\"{{obj.img_id}}\" name=\"{{item.type}}\"\r\n class=\"my-3 mx-2 img\" [src]=\"obj.img_path\">\r\n <div class=\"text-center m-0 fs-7 fw-bold\">{{obj.img_name}}</div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n \r\n \r\n </div>\r\n <div ngbAccordion>\r\n <div class=\"mt-6\" ngbAccordionItem [collapsed]=\"!(!junkcount && !employeecount)\">\r\n <div ngbAccordionHeader>\r\n <button class=\"mainheading\" ngbAccordionButton>\r\n <div>\r\n Unique Customer <span class=\"sub-text mt-2 ms-2\">\r\n <span class=\"badge badge-light-default\"><svg class=\"me-2\" xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_15800_3911)\">\r\n <path d=\"M8.5 10.5V9.5C8.5 8.96957 8.28929 8.46086 7.91421 8.08579C7.53914 7.71071 7.03043 7.5 6.5 7.5H2.5C1.96957 7.5 1.46086 7.71071 1.08579 8.08579C0.710714 8.46086 0.5 8.96957 0.5 9.5V10.5M11.5 10.5V9.5C11.4997 9.05686 11.3522 8.62639 11.0807 8.27616C10.8092 7.92593 10.4291 7.67578 10 7.565M8 1.565C8.43021 1.67515 8.81152 1.92535 9.08382 2.27616C9.35612 2.62696 9.50392 3.05841 9.50392 3.5025C9.50392 3.94659 9.35612 4.37804 9.08382 4.72884C8.81152 5.07965 8.43021 5.32985 8 5.44M6.5 3.5C6.5 4.60457 5.60457 5.5 4.5 5.5C3.39543 5.5 2.5 4.60457 2.5 3.5C2.5 2.39543 3.39543 1.5 4.5 1.5C5.60457 1.5 6.5 2.39543 6.5 3.5Z\" stroke=\"#667085\" stroke-width=\"1.1\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_15800_3911\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\"/>\r\n </clipPath>\r\n </defs>\r\n </svg> {{customercount}}</span>\r\n </span>\r\n </div>\r\n <div class=\"divider\"></div>\r\n </button>\r\n </div>\r\n \r\n <div ngbAccordionCollapse>\r\n <div ngbAccordionBody class=\"py-0\">\r\n <ng-template>\r\n <div>\r\n <div class=\"h-500\" (dragover)=\"allowDrop($event)\">\r\n <ng-container *ngIf=\"resetGroupNumber() === null\"></ng-container>\r\n <ng-container *ngFor=\"let obj of auditmappingdata;let i=index\">\r\n <div *ngIf=\"obj?.count === 1\" class=\"item\">\r\n <div>\r\n <div *ngFor=\"let img of obj?.mappedid\">\r\n <img draggable=\"true\" name=\"{{obj.img_id}}\" (dragstart)=\"drag($event)\" (click)=\"toggleImage(img?.img_name )\"\r\n id=\"{{img.img_id}}\" class=\"my-3 mx-2 img\" [src]=\"img.img_path\">\r\n <div class=\"text-center m-0 fs-7 fw-bold\">{{img.img_name}}</div>\r\n <!-- <span *ngIf=\"obj?.demographic !== 'd'\" class=\"notify-badge2 w-25px h-25px cursor-pointer\" (click)=\"toggleImage(img?.img_name )\">\r\n </span>\r\n <span *ngIf=\"obj?.demographic === 'd'\" class=\"notify-badge\" (click)=\"toggleImage(img?.img_name )\"><i class=\"fa fa-check\" aria-hidden=\"true\"\r\n style=\"font-size:15px;color:#00A3FF\"></i></span> -->\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <ng-container class=\"mt-5\" *ngFor=\"let obj of auditmappingdata;let i=index\">\r\n <div *ngIf=\"obj?.count > 1\" class=\"card-label mt-3\">Group {{ getGroupNumber(obj) }} <span class=\"sub-text mt-3 ms-2\">\r\n <span class=\"badge badge-light-default\"><svg class=\"me-2\" xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_14508_18583)\">\r\n <path d=\"M2.5 10.5H9.5C10.0523 10.5 10.5 10.0523 10.5 9.5V2.5C10.5 1.94772 10.0523 1.5 9.5 1.5H2.5C1.94772 1.5 1.5 1.94772 1.5 2.5V9.5C1.5 10.0523 1.94772 10.5 2.5 10.5ZM2.5 10.5L8 5L10.5 7.5M5 4.25C5 4.66421 4.66421 5 4.25 5C3.83579 5 3.5 4.66421 3.5 4.25C3.5 3.83579 3.83579 3.5 4.25 3.5C4.66421 3.5 5 3.83579 5 4.25Z\" stroke=\"#667085\" stroke-width=\"1.1\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_14508_18583\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\"/>\r\n </clipPath>\r\n </defs>\r\n </svg>{{obj.count}}</span>\r\n </span> \r\n <!-- <span *ngIf=\"obj?.demographic !== 'd'\" class=\"kid-badge cursor-pointer ms-3 me-3\" style=\"padding:2px 10.5px !important\" (click)=\"toggleImage(obj?.img_name)\">\r\n </span>\r\n <span *ngIf=\"obj?.demographic === 'd'\" class=\"kid-badge cursor-pointer ms-3 me-3\" (click)=\"toggleImage(obj?.img_name)\"><i class=\"fa fa-check\" aria-hidden=\"true\"\r\n style=\"font-size:15px;color:#00A3FF\"></i></span> Mark as demographic -->\r\n </div>\r\n <div *ngIf=\"obj.count > 1\" class=\"item\">\r\n <div>\r\n <div *ngFor=\"let img of obj?.mappedid\" class=\"item\">\r\n <img draggable=\"true\" name=\"{{obj.img_id}}\" (dragstart)=\"drag($event)\"\r\n id=\"{{img.img_id}}\" class=\"my-3 mx-2 img\" [src]=\"img.img_path\">\r\n <div class=\"text-center m-0 fs-7 fw-bold\">{{img.img_name}}</div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n \r\n </div>\r\n </div>\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"!auditLoading\" class=\"col-md-5\">\r\n <div class=\"card mt-5\">\r\n <!-- (change)=\"imagearray()\" -->\r\n <div class=\"card-body h-1000px\" (drop)=\"dropforretag($event)\" (dragover)=\"allowDrop($event)\" >\r\n <div class=\"card-label fw-bold text-dark mb-5\">Images for Retagging</div>\r\n <div class=\"col-md-12 item\" >\r\n <div class=\"item\" *ngFor=\"let item of retagimage\">\r\n <img [src]=\"item.img_path\" class=\"my-2 mx-4 img-ret\">\r\n <div class=\"text-center m-0 fs-7 fw-bold\">{{item.img_name}}</div>\r\n <span class=\"notify-badge1 cursor-pointer\" (click)=\"removeimage(item)\"><i class=\"fa fa-close\" aria-hidden=\"true\"\r\n style=\"font-size:15px;color:#00A3FF\"></i>\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<ng-template #confirmDraft let-modal>\r\n <div class=\"card h-auto p-10\">\r\n <div class=\"card-header d-grid p-0 border-0\">\r\n <span><img src=\"./assets/tango/Images/Successtoast.png\"></span>\r\n <!-- <span *ngIf=\"getBack\"><img src=\"./assets/tango/custompopup-Icons/danger-icon.svg\"></span> -->\r\n <div class=\"card-label mt-5\">Do you want to submit your changes without demographic?</div>\r\n <!-- <div *ngIf=\"getBack\" class=\"card-label mt-5\">Unsaved Changes</div> -->\r\n </div>\r\n <div class=\"card-body p-0\">\r\n <div class=\"w-100 d-flex mt-10\">\r\n <button class=\"btn btn-outline w-50 me-2 fw-bold\" (click)=\"modal.close('isDenied')\">Cancel</button>\r\n <button class=\"btn btn-primary savebtn w-50 ms-2\" (click)=\"modal.close('isConfirmed')\">Ok</button>\r\n </div>\r\n </div>\r\n </div>\r\n</ng-template>\r\n", styles: [".img{width:90px;height:200px}.card-label{font-family:Inter;font-style:normal;font-weight:600!important;font-size:18px!important}.text-col{font-family:Inter;font-style:normal;font-weight:400;font-size:14px;line-height:17px;color:#3f4254}.img-ret{width:90px;height:170px}.butn-flag{border:1px solid #009ef7!important;border-right-style:none!important;border-radius:.5rem 0rem 0rem .5rem!important;padding:calc(.25rem + 1px) calc(1.5rem + 1px)!important;background-color:#fff!important}.butn-flag1{border:1px solid #009ef7!important;border-radius:0rem .5rem .5rem 0rem!important;padding:calc(.25rem + 1px) calc(1.5rem + 1px)!important;background-color:#fff!important}.btn.btn-light-primary:hover:not(.btn-active){background-color:#fff!important}.butn{border:1px solid #009ef7!important;padding:calc(.65rem + 1px) calc(1.5rem + 1px)!important}.h-800px{min-height:120px;max-height:auto}.h-500{min-height:300px}.h-1000px{overflow:auto}.item{position:relative;display:inline-block}.notify-badge{position:absolute;right:0;top:195px;background:var(--Primary-50, #EAF8FF);text-align:center;border-radius:6px;color:#00a3ff;border:2px solid var(--Primary-600, #00A3FF);padding:8px;font-size:20px}.notify-badge{position:absolute;right:4px;top:8px;background:var(--Primary-50, #EAF8FF);text-align:center;border-radius:6px;color:#00a3ff;border:2px solid var(--Primary-600, #00A3FF);padding:0 5px;font-size:15px;width:25px;height:25px}.kid-badge{background:var(--Primary-50, #EAF8FF);text-align:center;border-radius:6px;color:#00a3ff;border:2px solid var(--Primary-600, #00A3FF);padding:2px 4px;font-size:15px;width:25px;height:25px}.nav-menu{position:sticky;position:-webkit-sticky;top:0}.notify-badge1{position:absolute;right:8px;top:4px;background:var(--Primary-50, #EAF8FF);color:#00a3ff;border:2px solid var(--Primary-600, #00A3FF);text-align:center;border-radius:6px;padding:1px 5px 0;font-size:15px;width:25px;height:25px}.notify-badge2{position:absolute;right:4px;top:8px;background:var(--Primary-50, #EAF8FF);color:#00a3ff;border:2px solid var(--Primary-600, #00A3FF);text-align:center;border-radius:6px;padding:0 8px;font-size:20px}.loader1{width:90px;height:90px;margin-left:580px}.svg-icon.svg-icon-2x svg{width:20px!important;height:20px!important}.mapping-height{min-height:auto;max-height:1000px}.mapping-height .h-100{height:96%!important}.btn-outline{border-radius:8px;border:1px solid var(--Gray-300, #D0D5DD);background:var(--White, #FFF);box-shadow:0 1px 2px #1018280d;color:var(--Gray-700, #344054);font-size:14px;font-weight:500;line-height:24px}.text-timer{color:var(--Gray-900, #101828);font-size:24px;line-height:32px}.bg-timer{border-radius:12px;background:var(--Primary-25, #F6FCFF);padding:4px}\n"] }]
|
|
514
|
+
args: [{ selector: 'lib-audit-mapping-list', template: "<div *ngIf=\"!auditLoading\" class=\"card\" >\r\n <div class=\"card-header\" >\r\n <div class=\"card-title\">\r\n <h3 class=\"flex-column\">\r\n <!-- <span class=\"card-label fw-bold\">{{filedetails?.queueName}}<span class=\"mx-3 arrow-code\"> - </span> -->\r\n <span>{{filedetails?.storeId}}</span>\r\n \r\n <span class=\"mx-3 arrow-code\"> - </span>\r\n <span >{{filedetails?.Date}}</span>\r\n <!-- <span class=\"mx-3 arrow-code\"> - </span>\r\n <span >{{filedetails?.type}}</span> -->\r\n <!-- </span> -->\r\n </h3>\r\n \r\n <div class=\"rounded-3 ms-3 d-flex align-items-center bg-timer\">\r\n <span class=\"me-3 text-timer fw-semibold\">{{ formattedTime }}</span>\r\n <span><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M9.16667 2.87071C9.16667 2.62023 9.26617 2.38001 9.44329 2.20289C9.62041 2.02577 9.86063 1.92627 10.1111 1.92627H13.8889C14.1394 1.92627 14.3796 2.02577 14.5567 2.20289C14.7338 2.38001 14.8333 2.62023 14.8333 2.87071C14.8333 3.1212 14.7338 3.36142 14.5567 3.53854C14.3796 3.71565 14.1394 3.81516 13.8889 3.81516H12.9444V5.07442L12.9432 5.12605C14.5396 5.30097 16.0528 5.92787 17.3053 6.93308L17.3141 6.92553L18.2585 5.98108C18.374 5.85676 18.5208 5.76588 18.6835 5.71801C18.8463 5.67014 19.019 5.66706 19.1833 5.70908C19.3477 5.75111 19.4977 5.83669 19.6175 5.9568C19.7373 6.07692 19.8225 6.22713 19.8641 6.3916C19.906 6.55578 19.903 6.72823 19.8554 6.89085C19.8077 7.05348 19.7172 7.20029 19.5933 7.3159L18.6489 8.26034L18.6413 8.26915C19.6403 9.51974 20.2658 11.027 20.446 12.6174C20.6261 14.2078 20.3536 15.8167 19.6597 17.2591C18.9658 18.7014 17.8788 19.9185 16.5237 20.7704C15.1686 21.6222 13.6006 22.0741 12 22.0741C10.3994 22.0741 8.83137 21.6222 7.47629 20.7704C6.12122 19.9185 5.03419 18.7014 4.3403 17.2591C3.64641 15.8167 3.37386 14.2078 3.55402 12.6174C3.73418 11.027 4.35973 9.51974 5.35867 8.26915L5.35111 8.26034L4.40667 7.3159C4.23964 7.1369 4.14865 6.90003 4.15287 6.65524C4.1571 6.41045 4.25622 6.17687 4.42934 6.00375C4.60246 5.83063 4.83604 5.73151 5.08083 5.72728C5.32562 5.72306 5.56249 5.81405 5.74149 5.98108L6.68593 6.92553L6.69474 6.93308C7.94681 5.92809 9.45963 5.3012 11.0556 5.12605V3.81516H10.1111C9.86063 3.81516 9.62041 3.71565 9.44329 3.53854C9.26617 3.36142 9.16667 3.1212 9.16667 2.87071ZM12 20.1855C13.7535 20.1854 15.4352 19.4886 16.675 18.2485C17.9148 17.0085 18.6113 15.3267 18.6111 13.5732C18.6109 11.8196 17.9142 10.138 16.6741 8.89813C15.4341 7.65831 13.7523 6.96188 11.9987 6.96204C10.2452 6.96221 8.56354 7.65896 7.32372 8.89902C6.0839 10.1391 5.38747 11.8209 5.38763 13.5744C5.3878 15.328 6.08455 17.0096 7.32461 18.2494C8.56467 19.4893 10.2465 20.1857 12 20.1855ZM12.4899 11.7485L14.1647 10.0737C14.2517 9.98343 14.3559 9.91143 14.4711 9.86188C14.5863 9.81233 14.7102 9.78622 14.8356 9.78507C14.9611 9.78392 15.0854 9.80776 15.2015 9.85519C15.3176 9.90262 15.4231 9.9727 15.5118 10.0613C15.6005 10.15 15.6707 10.2554 15.7182 10.3714C15.7658 10.4875 15.7897 10.6118 15.7887 10.7372C15.7877 10.8626 15.7617 10.9866 15.7122 11.1018C15.6628 11.2171 15.5909 11.3213 15.5007 11.4085L13.8259 13.0846C13.9003 13.3645 13.9095 13.6579 13.8526 13.942C13.7958 14.226 13.6745 14.4933 13.4981 14.7231C13.3217 14.9529 13.0949 15.1391 12.8352 15.2675C12.5754 15.3958 12.2897 15.4628 12 15.4633C11.7327 15.461 11.4688 15.4019 11.226 15.29C10.9832 15.1781 10.767 15.0159 10.5916 14.8141C10.4162 14.6123 10.2857 14.3755 10.2087 14.1195C10.1316 13.8635 10.1099 13.594 10.1448 13.329C10.1798 13.0639 10.2706 12.8093 10.4114 12.582C10.5522 12.3547 10.7396 12.1599 10.9613 12.0104C11.183 11.861 11.4339 11.7604 11.6974 11.7152C11.9609 11.6701 12.231 11.6814 12.4899 11.7485Z\" fill=\"black\"/>\r\n </svg></span>\r\n </div>\r\n <!-- <span *ngIf=\"demographic\" class=\"badge badge-light-success ms-3\">{{demographic}} {{demographic > 1 ? 'Demographics' : 'Demographic'}}</span> -->\r\n </div>\r\n\r\n <div class=\"card-toolbar \">\r\n <div class=\"d-flex\">\r\n <div class=\"d-flex align-items-center position-relative my-1\">\r\n <a *ngIf=\"!showvalue1\" class=\"btn btn-sm btn-default btn-outline py-2 mx-2\" (click)=\"changesdata()\"><span\r\n class=\"svg-icon svg-icon-primary svg-icon-2x\" ><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M15.8337 10.0001H4.16699M4.16699 10.0001L10.0003 15.8334M4.16699 10.0001L10.0003 4.16675\" stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg></span><span class=\"ms-3\">Back to Tagging</span></a>\r\n <button *ngIf=\"!showvalue\" class=\"btn btn-sm btn-primary py-2 mx-2\" (click)=\"submitaudit()\" >Submit\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M4.16699 9.99984H15.8337M15.8337 9.99984L10.0003 4.1665M15.8337 9.99984L10.0003 15.8332\" stroke=\"white\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n </button>\r\n \r\n <button *ngIf=\"showvalue\" class=\"btn btn-primary btn-sm py-2 mx-2\" [disabled]=\"submitted\" (click)=\"taggingview()\">Retag <span\r\n class=\"svg-icon svg-icon-primary svg-icon-2x\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M4.16666 9.99996H15.8333M15.8333 9.99996L9.99999 4.16663M15.8333 9.99996L9.99999 15.8333\" stroke=\"white\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg></span>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n\r\n \r\n</div>\r\n\r\n\r\n<div class=\"row\"> \r\n <div *ngIf=\"auditLoading\" class=\"card mt-5\">\r\n <div class=\"card-body\">\r\n <div class=\"row loader d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div> \r\n </div>\r\n <!-- <h5 class=\"text-dark-600 fs-3 fw-bold text-center \">Loading Audit file......</h5> -->\r\n </div>\r\n </div>\r\n <div *ngIf=\"!auditLoading\" class=\"col-md-7\">\r\n <div class=\"card mt-5\">\r\n <div class=\"h-1000px\">\r\n <div ngbAccordion *ngFor=\"let item of category\">\r\n <div *ngIf=\"item?.count !==0\" class=\"mt-6\" ngbAccordionItem [collapsed]=\"!item?.count\">\r\n <div ngbAccordionHeader>\r\n <button class=\"mainheading\" ngbAccordionButton>\r\n <div>\r\n {{item?.name}} <span class=\"sub-text mt-2 ms-2\">\r\n <span class=\"badge badge-light-default\"><svg class=\"me-2\" xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_14508_18583)\">\r\n <path d=\"M2.5 10.5H9.5C10.0523 10.5 10.5 10.0523 10.5 9.5V2.5C10.5 1.94772 10.0523 1.5 9.5 1.5H2.5C1.94772 1.5 1.5 1.94772 1.5 2.5V9.5C1.5 10.0523 1.94772 10.5 2.5 10.5ZM2.5 10.5L8 5L10.5 7.5M5 4.25C5 4.66421 4.66421 5 4.25 5C3.83579 5 3.5 4.66421 3.5 4.25C3.5 3.83579 3.83579 3.5 4.25 3.5C4.66421 3.5 5 3.83579 5 4.25Z\" stroke=\"#667085\" stroke-width=\"1.1\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_14508_18583\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\"/>\r\n </clipPath>\r\n </defs>\r\n </svg>{{item?.count}}</span>\r\n </span>\r\n </div>\r\n <div class=\"divider\"></div>\r\n </button>\r\n </div>\r\n \r\n <div ngbAccordionCollapse>\r\n <div ngbAccordionBody class=\"py-0\">\r\n <ng-template>\r\n <div class=\"h-auto\" (dragover)=\"allowDrop($event)\">\r\n <div class=\"col-md-12 item\" >\r\n <div class=\"item\" *ngFor=\"let obj of item?.value\" >\r\n <img draggable=\"true\" (dragstart)=\"drag($event)\" id=\"{{obj.img_id}}\" name=\"{{item.type}}\"\r\n class=\"my-3 mx-2 img\" [src]=\"obj.img_path\">\r\n <div class=\"text-center m-0 fs-7 fw-bold\">{{obj.img_name}}</div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n \r\n \r\n </div>\r\n <div ngbAccordion>\r\n <div class=\"mt-6\" ngbAccordionItem [collapsed]=\"!(!junkcount && !employeecount)\">\r\n <div ngbAccordionHeader>\r\n <button class=\"mainheading\" ngbAccordionButton>\r\n <div>\r\n Unique Customer <span class=\"sub-text mt-2 ms-2\">\r\n <span class=\"badge badge-light-default\"><svg class=\"me-2\" xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_15800_3911)\">\r\n <path d=\"M8.5 10.5V9.5C8.5 8.96957 8.28929 8.46086 7.91421 8.08579C7.53914 7.71071 7.03043 7.5 6.5 7.5H2.5C1.96957 7.5 1.46086 7.71071 1.08579 8.08579C0.710714 8.46086 0.5 8.96957 0.5 9.5V10.5M11.5 10.5V9.5C11.4997 9.05686 11.3522 8.62639 11.0807 8.27616C10.8092 7.92593 10.4291 7.67578 10 7.565M8 1.565C8.43021 1.67515 8.81152 1.92535 9.08382 2.27616C9.35612 2.62696 9.50392 3.05841 9.50392 3.5025C9.50392 3.94659 9.35612 4.37804 9.08382 4.72884C8.81152 5.07965 8.43021 5.32985 8 5.44M6.5 3.5C6.5 4.60457 5.60457 5.5 4.5 5.5C3.39543 5.5 2.5 4.60457 2.5 3.5C2.5 2.39543 3.39543 1.5 4.5 1.5C5.60457 1.5 6.5 2.39543 6.5 3.5Z\" stroke=\"#667085\" stroke-width=\"1.1\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_15800_3911\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\"/>\r\n </clipPath>\r\n </defs>\r\n </svg> {{customercount}}</span>\r\n </span>\r\n </div>\r\n <div class=\"divider\"></div>\r\n </button>\r\n </div>\r\n \r\n <div ngbAccordionCollapse>\r\n <div ngbAccordionBody class=\"py-0\">\r\n <ng-template>\r\n <div>\r\n <div class=\"h-500\" (dragover)=\"allowDrop($event)\">\r\n <ng-container *ngIf=\"resetGroupNumber() === null\"></ng-container>\r\n <ng-container *ngFor=\"let obj of auditmappingdata;let i=index\">\r\n <div *ngIf=\"obj?.count === 1\" class=\"item\">\r\n <div>\r\n <div *ngFor=\"let img of obj?.mappedid\">\r\n <img draggable=\"true\" name=\"{{obj.img_id}}\" (dragstart)=\"drag($event)\" (click)=\"toggleImage(img?.img_name )\"\r\n id=\"{{img.img_id}}\" class=\"my-3 mx-2 img\" [src]=\"img.img_path\">\r\n <div class=\"text-center m-0 fs-7 fw-bold\">{{img.img_name}}</div>\r\n <!-- <span *ngIf=\"obj?.demographic !== 'd'\" class=\"notify-badge2 w-25px h-25px cursor-pointer\" (click)=\"toggleImage(img?.img_name )\">\r\n </span>\r\n <span *ngIf=\"obj?.demographic === 'd'\" class=\"notify-badge\" (click)=\"toggleImage(img?.img_name )\"><i class=\"fa fa-check\" aria-hidden=\"true\"\r\n style=\"font-size:15px;color:#00A3FF\"></i></span> -->\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <ng-container class=\"mt-5\" *ngFor=\"let obj of auditmappingdata;let i=index\">\r\n <div *ngIf=\"obj?.count > 1\" class=\"card-label mt-3\">Group {{ getGroupNumber(obj) }} <span class=\"sub-text mt-3 ms-2\">\r\n <span class=\"badge badge-light-default\"><svg class=\"me-2\" xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_14508_18583)\">\r\n <path d=\"M2.5 10.5H9.5C10.0523 10.5 10.5 10.0523 10.5 9.5V2.5C10.5 1.94772 10.0523 1.5 9.5 1.5H2.5C1.94772 1.5 1.5 1.94772 1.5 2.5V9.5C1.5 10.0523 1.94772 10.5 2.5 10.5ZM2.5 10.5L8 5L10.5 7.5M5 4.25C5 4.66421 4.66421 5 4.25 5C3.83579 5 3.5 4.66421 3.5 4.25C3.5 3.83579 3.83579 3.5 4.25 3.5C4.66421 3.5 5 3.83579 5 4.25Z\" stroke=\"#667085\" stroke-width=\"1.1\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_14508_18583\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\"/>\r\n </clipPath>\r\n </defs>\r\n </svg>{{obj.count}}</span>\r\n </span> \r\n <!-- <span *ngIf=\"obj?.demographic !== 'd'\" class=\"kid-badge cursor-pointer ms-3 me-3\" style=\"padding:2px 10.5px !important\" (click)=\"toggleImage(obj?.img_name)\">\r\n </span>\r\n <span *ngIf=\"obj?.demographic === 'd'\" class=\"kid-badge cursor-pointer ms-3 me-3\" (click)=\"toggleImage(obj?.img_name)\"><i class=\"fa fa-check\" aria-hidden=\"true\"\r\n style=\"font-size:15px;color:#00A3FF\"></i></span> Mark as demographic -->\r\n </div>\r\n <div *ngIf=\"obj.count > 1\" class=\"item\">\r\n <div>\r\n <div *ngFor=\"let img of obj?.mappedid\" class=\"item\">\r\n <img draggable=\"true\" name=\"{{obj.img_id}}\" (dragstart)=\"drag($event)\"\r\n id=\"{{img.img_id}}\" class=\"my-3 mx-2 img\" [src]=\"img.img_path\">\r\n <div class=\"text-center m-0 fs-7 fw-bold\">{{img.img_name}}</div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n \r\n </div>\r\n </div>\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"!auditLoading\" class=\"col-md-5\">\r\n <div class=\"card mt-5\">\r\n <!-- (change)=\"imagearray()\" -->\r\n <div class=\"card-body h-1000px\" (drop)=\"dropforretag($event)\" (dragover)=\"allowDrop($event)\" >\r\n <div class=\"card-label fw-bold text-dark mb-5\">Images for Retagging</div>\r\n <div class=\"col-md-12 item\" >\r\n <div class=\"item\" *ngFor=\"let item of retagimage\">\r\n <img [src]=\"item.img_path\" class=\"my-2 mx-4 img-ret\">\r\n <div class=\"text-center m-0 fs-7 fw-bold\">{{item.img_name}}</div>\r\n <span class=\"notify-badge1 cursor-pointer\" (click)=\"removeimage(item)\"><i class=\"fa fa-close\" aria-hidden=\"true\"\r\n style=\"font-size:15px;color:#00A3FF\"></i>\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<ng-template #confirmDraft let-modal>\r\n <div class=\"card h-auto p-10\">\r\n <div class=\"card-header d-grid p-0 border-0\">\r\n <span><img src=\"./assets/tango/Images/Successtoast.png\"></span>\r\n <!-- <span *ngIf=\"getBack\"><img src=\"./assets/tango/custompopup-Icons/danger-icon.svg\"></span> -->\r\n <!-- <div class=\"card-label mt-5\">Do you want to submit your changes without demographic?</div> -->\r\n <!-- <div *ngIf=\"getBack\" class=\"card-label mt-5\">Unsaved Changes</div> -->\r\n </div>\r\n <div class=\"card-body p-0\">\r\n <div class=\"w-100 d-flex mt-10\">\r\n <button class=\"btn btn-outline w-50 me-2 fw-bold\" (click)=\"modal.close('isDenied')\">Cancel</button>\r\n <button class=\"btn btn-primary savebtn w-50 ms-2\" (click)=\"modal.close('isConfirmed')\">Ok</button>\r\n </div>\r\n </div>\r\n </div>\r\n</ng-template>\r\n", styles: [".img{width:90px;height:200px}.card-label{font-family:Inter;font-style:normal;font-weight:600!important;font-size:18px!important}.text-col{font-family:Inter;font-style:normal;font-weight:400;font-size:14px;line-height:17px;color:#3f4254}.img-ret{width:90px;height:170px}.butn-flag{border:1px solid #009ef7!important;border-right-style:none!important;border-radius:.5rem 0rem 0rem .5rem!important;padding:calc(.25rem + 1px) calc(1.5rem + 1px)!important;background-color:#fff!important}.butn-flag1{border:1px solid #009ef7!important;border-radius:0rem .5rem .5rem 0rem!important;padding:calc(.25rem + 1px) calc(1.5rem + 1px)!important;background-color:#fff!important}.btn.btn-light-primary:hover:not(.btn-active){background-color:#fff!important}.butn{border:1px solid #009ef7!important;padding:calc(.65rem + 1px) calc(1.5rem + 1px)!important}.h-800px{min-height:120px;max-height:auto}.h-500{min-height:300px}.h-1000px{overflow:auto}.item{position:relative;display:inline-block}.notify-badge{position:absolute;right:0;top:195px;background:var(--Primary-50, #EAF8FF);text-align:center;border-radius:6px;color:#00a3ff;border:2px solid var(--Primary-600, #00A3FF);padding:8px;font-size:20px}.notify-badge{position:absolute;right:4px;top:8px;background:var(--Primary-50, #EAF8FF);text-align:center;border-radius:6px;color:#00a3ff;border:2px solid var(--Primary-600, #00A3FF);padding:0 5px;font-size:15px;width:25px;height:25px}.kid-badge{background:var(--Primary-50, #EAF8FF);text-align:center;border-radius:6px;color:#00a3ff;border:2px solid var(--Primary-600, #00A3FF);padding:2px 4px;font-size:15px;width:25px;height:25px}.nav-menu{position:sticky;position:-webkit-sticky;top:0}.notify-badge1{position:absolute;right:8px;top:4px;background:var(--Primary-50, #EAF8FF);color:#00a3ff;border:2px solid var(--Primary-600, #00A3FF);text-align:center;border-radius:6px;padding:1px 5px 0;font-size:15px;width:25px;height:25px}.notify-badge2{position:absolute;right:4px;top:8px;background:var(--Primary-50, #EAF8FF);color:#00a3ff;border:2px solid var(--Primary-600, #00A3FF);text-align:center;border-radius:6px;padding:0 8px;font-size:20px}.loader1{width:90px;height:90px;margin-left:580px}.svg-icon.svg-icon-2x svg{width:20px!important;height:20px!important}.mapping-height{min-height:auto;max-height:1000px}.mapping-height .h-100{height:96%!important}.btn-outline{border-radius:8px;border:1px solid var(--Gray-300, #D0D5DD);background:var(--White, #FFF);box-shadow:0 1px 2px #1018280d;color:var(--Gray-700, #344054);font-size:14px;font-weight:500;line-height:24px}.text-timer{color:var(--Gray-900, #101828);font-size:24px;line-height:32px}.bg-timer{border-radius:12px;background:var(--Primary-25, #F6FCFF);padding:4px}\n"] }]
|
|
515
515
|
}], ctorParameters: () => [{ type: i1.NgbModal }, { type: i2.Router }, { type: i3.AuditService }, { type: i4.ToastService }, { type: i2.ActivatedRoute }, { type: i0.ChangeDetectorRef }, { type: i5.TimerService }], propDecorators: { confirmDraft: [{
|
|
516
516
|
type: ViewChild,
|
|
517
517
|
args: ['confirmDraft']
|
|
518
518
|
}] } });
|
|
519
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXVkaXQtbWFwcGluZy1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RhbmdvLW1hbmFnZS10aWNrZXRzL3NyYy9saWIvY29tcG9uZW50cy9hdWRpdC1tYXBwaW5nLWxpc3QvYXVkaXQtbWFwcGluZy1saXN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RhbmdvLW1hbmFnZS10aWNrZXRzL3NyYy9saWIvY29tcG9uZW50cy9hdWRpdC1tYXBwaW5nLWxpc3QvYXVkaXQtbWFwcGluZy1saXN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWtFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUtySCxPQUFPLEtBQUssUUFBUSxNQUFNLFdBQVcsQ0FBQztBQUN0QyxrR0FBa0c7QUFDbEcsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBRXhELE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLG9EQUFvRCxDQUFDOzs7Ozs7OztBQU8vRixNQUFNLE9BQU8seUJBQXlCO0lBaUNqQjtJQUFnQztJQUF3QjtJQUFvQztJQUE4QjtJQUNuSTtJQUErQjtJQWhDekMsU0FBUyxHQUFHLENBQUMsQ0FBQztJQUNkLFFBQVEsR0FBRyxDQUFDLENBQUM7SUFDYixJQUFJLEdBQUcsQ0FBQyxDQUFDO0lBQ1QsUUFBUSxHQUFHLENBQUMsQ0FBQztJQUNiLFlBQVksR0FBUSxDQUFDLENBQUM7SUFDdEIsU0FBUyxHQUFZLEtBQUssQ0FBQztJQUMzQixZQUFZLEdBQVksS0FBSyxDQUFDO0lBQzlCLFVBQVUsR0FBWSxLQUFLLENBQUM7SUFDNUIsU0FBUyxHQUFRLEVBQUUsQ0FBQTtJQUNuQixVQUFVLEdBQVEsRUFBRSxDQUFBO0lBQ3BCLFdBQVcsR0FBWSxJQUFJLENBQUM7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O3VCQUFDLGNBQWMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgT25DaGFuZ2VzLCBTaW1wbGVDaGFuZ2VzLCBPbkRlc3Ryb3ksIENoYW5nZURldGVjdG9yUmVmLCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IE5nYk1vZGFsIH0gZnJvbSAnQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAnO1xyXG5pbXBvcnQgeyBUb2FzdFNlcnZpY2UgfSBmcm9tICd0YW5nby1hcHAtdWktc2hhcmVkJztcclxuaW1wb3J0IHsgQXVkaXRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvYXVkaXQuc2VydmljZSc7XHJcbmltcG9ydCAqIGFzIExaU3RyaW5nIGZyb20gJ2x6LXN0cmluZyc7XHJcbi8vIGltcG9ydCB7IEF1ZGl0UmVwb3J0UG9wdXBDb21wb25lbnQgfSBmcm9tICcuLi9hdWRpdC1yZXBvcnQtcG9wdXAvYXVkaXQtcmVwb3J0LXBvcHVwLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFN1YmplY3QsIHRha2VVbnRpbCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IFRpbWVyU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3RpbWVyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBdWRpdFJlcG9ydFBvcHVwQ29tcG9uZW50IH0gZnJvbSAnLi4vYXVkaXQtcmVwb3J0LXBvcHVwL2F1ZGl0LXJlcG9ydC1wb3B1cC5jb21wb25lbnQnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdsaWItYXVkaXQtbWFwcGluZy1saXN0JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vYXVkaXQtbWFwcGluZy1saXN0LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybDogJy4vYXVkaXQtbWFwcGluZy1saXN0LmNvbXBvbmVudC5zY3NzJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgQXVkaXRNYXBwaW5nTGlzdENvbXBvbmVudCB7XHJcblxyXG4gIHRvdGFsZmlsZSA9IDA7XHJcbiAgY3VzdG9tZXIgPSAwO1xyXG4gIGp1bmsgPSAwO1xyXG4gIGVtcGxveWVlID0gMDtcclxuICBjdXJyZW50VmFsdWU6IGFueSA9IDA7XHJcbiAgc2hvd3ZhbHVlOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcmV0Z2dpbmdwYWdlOiBib29sZWFuID0gZmFsc2U7XHJcbiAgc2hvd3ZhbHVlMTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGp1bmtpbWFnZTogYW55ID0gW11cclxuICByZXRhZ2ltYWdlOiBhbnkgPSBbXVxyXG4gIHN1Ym1pdHZhbHVlOiBib29sZWFuID0gdHJ1ZTtcclxuICBhdWRpdG1hcHBpbmdkYXRhOiBhbnk7XHJcbiAgY3VzdG9tZXJjb3VudDogYW55O1xyXG4gIGF1ZGl0TG9hZGluZyA9IHRydWU7XHJcbiAgc2VsZWN0ZWRUeXBlOiBhbnk7XHJcblxyXG4gIGp1bmtjb3VudDogYW55ID0gMDtcclxuICBlbXBsb3llZWNvdW50OiBhbnkgPSAwO1xyXG4gIGVtcGxveWVpbWFnZTogYW55ID0gW107XHJcbiAgZmlsZWRldGFpbHM6IGFueTtcclxuICBkZW1vZ3JhcGhpYzogYW55O1xyXG4gIHN1Ym1pdHRlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGR1bW15bWFwcGluZzogYW55O1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgZGVzdHJveSQgPSBuZXcgU3ViamVjdCgpO1xyXG4gIHRpbWVQYXNzZWQ6IG51bWJlciA9IDA7XHJcbiAgc3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb24gfCBudWxsID0gbnVsbDtcclxuICBmb3JtYXR0ZWRUaW1lOiBzdHJpbmcgPSAnMDA6MDA6MDAnO1xyXG4gIGNvdW50OiBhbnk7XHJcbiAgY2F0ZWdvcnk6IGFueSA9IFtdXHJcbiAgQFZpZXdDaGlsZCgnY29uZmlybURyYWZ0JykgY29uZmlybURyYWZ0OiBhbnk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBtb2RhbFNlcnZpY2U6IE5nYk1vZGFsLCBwcml2YXRlIHJvdXRlcjogUm91dGVyLCBwcml2YXRlIGF1ZGl0U2VydmljZTogQXVkaXRTZXJ2aWNlLCBwcml2YXRlIHRvYXN0cjogVG9hc3RTZXJ2aWNlLCBwcml2YXRlIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcclxuICAgIHByaXZhdGUgY2Q6IENoYW5nZURldGVjdG9yUmVmLCBwcml2YXRlIHRpbWVyU2VydmljZTogVGltZXJTZXJ2aWNlKSB7XHJcbiAgICB0aGlzLnNlbGVjdGVkVHlwZSA9IHRoaXMucm91dGUuc25hcHNob3QucGFyYW1NYXAuZ2V0KCd0eXBlJylcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5nZXRBdWRpdENvbmZpZygpXHJcbiAgICAvLyB0aGlzLmluaXRpYWxfZGF0YV9sb2FkaW5nKCk7XHJcbiAgICBpZiAodGhpcy5yZXRhZ2ltYWdlLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5zaG93dmFsdWUgPSB0cnVlXHJcbiAgICB9XHJcbiAgICB0aGlzLnNldFRpbWVyKCk7XHJcbiAgfVxyXG4gIGdldEF1ZGl0Q29uZmlnKCkge1xyXG5cclxuICAgIGxldCBmaWxlZGF0YSA9IEpTT04ucGFyc2Uoc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSgndG90YWxmaWxlcycpIHx8ICd7fScpXHJcbiAgICB0aGlzLmF1ZGl0U2VydmljZS5nZXRBdWRpdGNvbmZpZyhmaWxlZGF0YT8uZmlsZWRldGFpbHM/LmNsaWVudElkKS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKHJlcyAmJiByZXM/LmNvZGUgPT0gMjAwKSB7XHJcbiAgICAgICAgICB0aGlzLmNhdGVnb3J5ID0gcmVzLmRhdGEuZm9vdGZhbGxEaXJlY3RvcnlDb25maWdzLnRhZ2dpbmdMaW1pdGF0aW9uXHJcbiAgICAgICAgICAvLyB0aGlzLmluaXRpYWxfZGF0YV9sb2FkaW5nKClcclxuICAgICAgICAgIC8vIHRoaXMuc2F2ZURyYWZ0aW1nKCk7XHJcbiAgICAgICAgICB0aGlzLmdldG1hcHBpbmdkYXRhKClcclxuXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gIH1cclxuICBzZXRUaW1lcigpIHtcclxuICAgIHRoaXMuc3Vic2NyaXB0aW9uID0gdGhpcy50aW1lclNlcnZpY2UuZ2V0VGltZVBhc3NlZCgpLnN1YnNjcmliZSh0aW1lID0+IHtcclxuICAgICAgdGhpcy50aW1lUGFzc2VkID0gdGltZTtcclxuICAgICAgdGhpcy5mb3JtYXR0ZWRUaW1lID0gdGhpcy50aW1lclNlcnZpY2UuZm9ybWF0VGltZSh0aW1lKTtcclxuICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9KTtcclxuICAgIHRoaXMudGltZXJTZXJ2aWNlLnN0YXJ0VGltZXIoKTtcclxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIHRoaXMuaGFuZGxlR2xvYmFsTW91c2VFdmVudCk7XHJcbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIHRoaXMuaGFuZGxlR2xvYmFsTW91c2VFdmVudCk7XHJcbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWVudGVyJywgdGhpcy5oYW5kbGVHbG9iYWxNb3VzZUV2ZW50KTtcclxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIHRoaXMuaGFuZGxlR2xvYmFsTW91c2VFdmVudCk7XHJcblxyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQodHJ1ZSk7XHJcbiAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XHJcbiAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZW1vdmUnLCB0aGlzLmhhbmRsZUdsb2JhbE1vdXNlRXZlbnQpO1xyXG4gICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignY2xpY2snLCB0aGlzLmhhbmRsZUdsb2JhbE1vdXNlRXZlbnQpO1xyXG4gICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2VlbnRlcicsIHRoaXMuaGFuZGxlR2xvYmFsTW91c2VFdmVudCk7XHJcbiAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdzY3JvbGwnLCB0aGlzLmhhbmRsZUdsb2JhbE1vdXNlRXZlbnQpO1xyXG4gICAgdGhpcy50aW1lclNlcnZpY2UuY2xlYXJUaW1lcigpXHJcbiAgfVxyXG5cclxuICBoYW5kbGVHbG9iYWxNb3VzZUV2ZW50ID0gKCk6IHZvaWQgPT4ge1xyXG4gICAgdGhpcy50aW1lclNlcnZpY2Uuc3RhcnRUaW1lcigpO1xyXG4gIH1cclxuXHJcbiAgaW5pdGlhbF9kYXRhX2xvYWRpbmcoKSB7XHJcbiAgICBpZiAoJ2F1ZGl0JyBpbiBzZXNzaW9uU3RvcmFnZSkge1xyXG4gICAgICBsZXQgc3RyaW5naWZ5ZGF0YSA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oJ2F1ZGl0JykgfHwgJ3t9J1xyXG4gICAgICBjb25zdCBkZWNvbXByZXNzZWREYXRhID0gTFpTdHJpbmcuZGVjb21wcmVzcyhzdHJpbmdpZnlkYXRhKTtcclxuICAgICAgdmFyIGF1ZGl0ZGF0YSA9IEpTT04ucGFyc2UoZGVjb21wcmVzc2VkRGF0YSB8fCAne30nKVxyXG5cclxuICAgICAgaWYgKGF1ZGl0ZGF0YS5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgdGhpcy5hdWRpdG1hcHBpbmdkYXRhID0gYXVkaXRkYXRhO1xyXG4gICAgICAgIHRoaXMuY3VzdG9tZXJjb3VudCA9IHRoaXMuYXVkaXRtYXBwaW5nZGF0YS5sZW5ndGhcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmF1ZGl0bWFwcGluZ2RhdGEgPSBbXVxyXG4gICAgICAgIHRoaXMuY3VzdG9tZXJjb3VudCA9IDBcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmRlbW9ncmFwaGljID0gdGhpcy5hdWRpdG1hcHBpbmdkYXRhLmZpbHRlcigoZGF0YTogYW55KSA9PiBkYXRhLmRlbW9ncmFwaGljID09PSAnZCcpLmxlbmd0aDtcclxuICAgIH1cclxuICAgIHRoaXMuY2F0ZWdvcnkubWFwKChkYXRhOiBhbnkpID0+IHtcclxuICAgICAgdmFyIGNvdW50ID0gSlNPTi5wYXJzZShzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKGRhdGE/LnR5cGUpIHx8ICd7fScpXHJcbiAgICAgIGRhdGEuY291bnQgPSBjb3VudD8ubGVuZ3RoXHJcbiAgICB9KVxyXG4gICAgaWYgKCdyZXRhZycgaW4gc2Vzc2lvblN0b3JhZ2UpIHtcclxuICAgICAgdmFyIHJldGFnZGF0YSA9IEpTT04ucGFyc2Uoc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSgncmV0YWcnKSB8fCAne30nKVxyXG4gICAgICBpZiAocmV0YWdkYXRhLmxlbmd0aCA+IDApIHtcclxuICAgICAgICB0aGlzLnJldGFnaW1hZ2UgPSByZXRhZ2RhdGE7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5yZXRhZ2ltYWdlID0gW107XHJcbiAgICAgICAgaWYgKHRoaXMucmV0YWdpbWFnZS5sZW5ndGggPT0gMCkge1xyXG4gICAgICAgICAgdGhpcy5zaG93dmFsdWUgPSBmYWxzZVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKCd0b3RhbGZpbGVzJyBpbiBzZXNzaW9uU3RvcmFnZSkge1xyXG4gICAgICB2YXIgZmlsZXMgPSBKU09OLnBhcnNlKHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oJ3RvdGFsZmlsZXMnKSB8fCAne30nKVxyXG4gICAgICB0aGlzLnRvdGFsZmlsZSA9IGZpbGVzPy50b3RhbGZpbGVzXHJcbiAgICAgIHRoaXMuZmlsZWRldGFpbHMgPSBmaWxlcz8uZmlsZWRldGFpbHNcclxuICAgIH1cclxuXHJcbiAgfVxyXG5cclxuICBnZXRtYXBwaW5nZGF0YSgpIHtcclxuICAgIHZhciB0b3RhbGZpbGU6IGFueSA9IEpTT04ucGFyc2Uoc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSgndG90YWxmaWxlcycpIHx8ICd7fScpO1xyXG4gICAgdGhpcy5maWxlZGV0YWlscyA9IHRvdGFsZmlsZT8uZmlsZWRldGFpbHNcclxuICAgIGxldCB0aWNrZXR0eXBlID0gc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSgndGlja2V0VHlwZScpXHJcbiAgICB2YXIgcGF5bG9hZDogYW55ID0ge1xyXG4gICAgICBzdG9yZUlkOiB0b3RhbGZpbGU/LmZpbGVkZXRhaWxzPy5zdG9yZUlkLFxyXG4gICAgICBmaWxlRGF0ZTogdG90YWxmaWxlPy5maWxlZGV0YWlscz8uRGF0ZSxcclxuICAgICAgYXVkaXRJZDogdG90YWxmaWxlPy5hdWRpdElkLFxyXG4gICAgICBjb3VudDogdG90YWxmaWxlPy50b3RhbGZpbGVzLFxyXG4gICAgICB0aWNrZXR0eXBlOiB0aWNrZXR0eXBlXHJcbiAgICB9XHJcbiAgICB0aGlzLmF1ZGl0U2VydmljZS5nZXRBdWRpdG1hcHBpbmdsaXN0KHBheWxvYWQpLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAocmVzICYmIHJlcz8uY29kZSA9PSAyMDApIHtcclxuICAgICAgICAgIHRoaXMuYXVkaXRMb2FkaW5nID0gZmFsc2U7XHJcblxyXG5cclxuXHJcblxyXG4gICAgICAgICAgdGhpcy5jYXRlZ29yeS5tYXAoKGRhdGE6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICBsZXQgZmlsdGVyRGF0YSA9IHJlcz8uZGF0YT8ucmVzdWx0Py5kcmFmdGVkRGF0YT8uZmlsdGVyKCh4OiBhbnkpID0+IHgudHlwZSA9PT0gZGF0YS50eXBlKVxyXG4gICAgICAgICAgICBkYXRhLnZhbHVlID0gZmlsdGVyRGF0YVswXT8udmFsdWUgJiYgZmlsdGVyRGF0YVswXT8udmFsdWUubGVuZ3RoID4gMCA/IGZpbHRlckRhdGFbMF0/LnZhbHVlIDogW11cclxuICAgICAgICAgICAgZGF0YS5jb3VudCA9IGRhdGE/LnZhbHVlPy5sZW5ndGhcclxuICAgICAgICAgICAgc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbShkYXRhPy50eXBlLCBKU09OLnN0cmluZ2lmeShkYXRhPy52YWx1ZSAmJiBkYXRhPy52YWx1ZS5sZW5ndGggPiAwID8gZGF0YT8udmFsdWUgOiBbXSkpXHJcblxyXG4gICAgICAgICAgfSlcclxuICAgICAgICAgIGxldCBjdXN0b21lckRhdGEgPSByZXM/LmRhdGE/LnJlc3VsdD8uZHJhZnRlZERhdGE/LmZpbHRlcigoeDogYW55KSA9PiB4LnR5cGUgPT09ICdjdXN0b21lcicpXHJcblxyXG4gICAgICAgICAgdGhpcy5hdWRpdG1hcHBpbmdkYXRhID0gY3VzdG9tZXJEYXRhWzBdPy52YWx1ZVxyXG4gICAgICAgICAgY29uc3QganNvblN0cmluZyA9IEpTT04uc3RyaW5naWZ5KGN1c3RvbWVyRGF0YVswXT8udmFsdWUpO1xyXG4gICAgICAgICAgY29uc3QgY29tcHJlc3NlZERhdGEgPSBMWlN0cmluZy5jb21wcmVzcyhqc29uU3RyaW5nKTtcclxuICAgICAgICAgIHNlc3Npb25TdG9yYWdlLnNldEl0ZW0oJ2F1ZGl0JywgY29tcHJlc3NlZERhdGEpXHJcblxyXG5cclxuXHJcbiAgICAgICAgICB2YXIgcmV0YWdpYW1nZSA9IEpTT04ucGFyc2Uoc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSgncmV0YWcnKSB8fCAnW10nKVxyXG4gICAgICAgICAgaWYgKHJldGFnaWFtZ2UubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICBsZXQgc3RyaW5naWZ5ZGF0YSA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oJ2F1ZGl0JykgfHwgJ3t9J1xyXG4gICAgICAgICAgICBjb25zdCBkZWNvbXByZXNzZWREYXRhID0gTFpTdHJpbmcuZGVjb21wcmVzcyhzdHJpbmdpZnlkYXRhKTtcclxuICAgICAgICAgICAgdmFyIGN1c3RvbWVyID0gSlNPTi5wYXJzZShkZWNvbXByZXNzZWREYXRhIHx8ICd7fScpXHJcbiAgICAgICAgICAgIGN1c3RvbWVyID0gWy4uLmN1c3RvbWVyLCAuLi5yZXRhZ2lhbWdlXVxyXG4gICAgICAgICAgICBjb25zdCBqc29uU3RyaW5nID0gSlNPTi5zdHJpbmdpZnkoY3VzdG9tZXIpO1xyXG4gICAgICAgICAgICBjb25zdCBjb21wcmVzc2VkRGF0YSA9IExaU3RyaW5nLmNvbXByZXNzKGpzb25TdHJpbmcpO1xyXG4gICAgICAgICAgICBzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKCdhdWRpdCcsIGNvbXByZXNzZWREYXRhKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgc2Vzc2lvblN0b3JhZ2UucmVtb3ZlSXRlbSgncmV0YWcnKVxyXG4gICAgICAgICAgdGhpcy5yZXRhZ2ltYWdlID0gW11cclxuICAgICAgICAgIHRoaXMuaW5pdGlhbF9kYXRhX2xvYWRpbmcoKVxyXG4gICAgICAgICAgaWYgKHRoaXMucmV0YWdpbWFnZS5sZW5ndGggPT0gMCkge1xyXG4gICAgICAgICAgICB0aGlzLnNob3d2YWx1ZSA9IGZhbHNlXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICBlcnJvcjogKGVycjogYW55KSA9PiB7XHJcblxyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgcmVkaXJlYWN0OiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIGJhY2tUb1RhZ2dpbmcoKSB7XHJcbiAgICB0aGlzLnJlZGlyZWFjdCA9IHRydWU7XHJcbiAgICB0aGlzLnNhdmVEcmFmdGltZygpO1xyXG4gIH1cclxuXHJcbiAgY2hhbmdlc2RhdGEoKSB7XHJcbiAgICB2YXIgdXNlciA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3VzZXItaW5mbycpIHx8ICd7fScpXHJcbiAgICB2YXIgdG90YWxmaWxlOiBhbnkgPSBKU09OLnBhcnNlKHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oJ3RvdGFsZmlsZXMnKSB8fCAne30nKTtcclxuICAgIHZhciBwYXlsb2FkOiBhbnkgPSB7XHJcbiAgICAgIHN0b3JlSWQ6IHRvdGFsZmlsZT8uZmlsZWRldGFpbHM/LnN0b3JlSWQsXHJcbiAgICAgIGZpbGVEYXRlOiB0b3RhbGZpbGU/LmZpbGVkZXRhaWxzPy5EYXRlLFxyXG4gICAgICBhdWRpdElkOiB0b3RhbGZpbGU/LmF1ZGl0SWQsXHJcbiAgICAgIGNvdW50OiB0b3RhbGZpbGU/LnRvdGFsZmlsZXNcclxuICAgIH1cclxuICAgIHRoaXMuYXVkaXRTZXJ2aWNlLmdldEF1ZGl0bWFwcGluZ2xpc3QocGF5bG9hZCkucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChyZXMgJiYgcmVzPy5jb2RlID09IDIwMCkge1xyXG4gICAgICAgICAgdGhpcy5hdWRpdExvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgIHNlc3Npb25TdG9yYWdlLnJlbW92ZUl0ZW0oJ3JldGFnJylcclxuICAgICAgICAgIHRoaXMucmV0YWdpbWFnZSA9IFtdXHJcbiAgICAgICAgICB0aGlzLmNhdGVnb3J5Lm1hcCgoZGF0YTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIGxldCBmaWx0ZXJEYXRhID0gcmVzPy5kYXRhPy5yZXN1bHQ/LmRyYWZ0ZWREYXRhPy5maWx0ZXIoKHg6IGFueSkgPT4geC50eXBlID09PSBkYXRhLnR5cGUpXHJcbiAgICAgICAgICAgIGRhdGEudmFsdWUgPSBmaWx0ZXJEYXRhWzBdPy52YWx1ZSAmJiBmaWx0ZXJEYXRhWzBdPy52YWx1ZS5sZW5ndGggPiAwID8gZmlsdGVyRGF0YVswXT8udmFsdWUgOiBbXVxyXG4gICAgICAgICAgICBkYXRhLmNvdW50ID0gZGF0YT8udmFsdWU/Lmxlbmd0aFxyXG4gICAgICAgICAgICBzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKGRhdGE/LnR5cGUsIEpTT04uc3RyaW5naWZ5KGRhdGE/LnZhbHVlICYmIGRhdGE/LnZhbHVlLmxlbmd0aCA+IDAgPyBkYXRhPy52YWx1ZSA6IFtdKSlcclxuXHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICAgbGV0IGN1c3RvbWVyRGF0YSA9IHJlcz8uZGF0YT8ucmVzdWx0Py5kcmFmdGVkRGF0YT8uZmlsdGVyKCh4OiBhbnkpID0+IHgudHlwZSA9PT0gJ2N1c3RvbWVyJylcclxuXHJcbiAgICAgICAgICB0aGlzLmF1ZGl0bWFwcGluZ2RhdGEgPSBjdXN0b21lckRhdGFbMF0/LnZhbHVlXHJcbiAgICAgICAgICBjb25zdCBqc29uU3RyaW5nID0gSlNPTi5zdHJpbmdpZnkoY3VzdG9tZXJEYXRhWzBdPy52YWx1ZSk7XHJcbiAgICAgICAgICBjb25zdCBjb21wcmVzc2VkRGF0YSA9IExaU3RyaW5nLmNvbXByZXNzKGpzb25TdHJpbmcpO1xyXG4gICAgICAgICAgc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbSgnYXVkaXQnLCBjb21wcmVzc2VkRGF0YSlcclxuICAgICAgICAgIGlmICh0aGlzLnJldGFnaW1hZ2UubGVuZ3RoID09IDApIHtcclxuICAgICAgICAgICAgdGhpcy5zaG93dmFsdWUgPSBmYWxzZVxyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtcIi9tYW5hZ2UvdGlja2V0cy9hdWRpdFwiXSlcclxuICAgICAgICB9XHJcbiAgICAgIH0sXHJcbiAgICAgIGVycm9yOiAoZXJyOiBhbnkpID0+IHtcclxuXHJcbiAgICAgIH1cclxuICAgIH0pXHJcblxyXG4gIH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gICAgaWYgKGNoYW5nZXNbJ2F1ZGl0bWFwcGluZ2RhdGEnXSkge1xyXG4gICAgICB0aGlzLmR1bW15bWFwcGluZyA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoY2hhbmdlc1snYXVkaXRtYXBwaW5nZGF0YSddLmN1cnJlbnRWYWx1ZSkpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYWxsb3dEcm9wKGV2OiBhbnkpIHtcclxuICAgIGV2LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgfVxyXG5cclxuICBkcmFnKGV2OiBhbnkpIHtcclxuICAgIGV2LmRhdGFUcmFuc2Zlci5zZXREYXRhKFwidGV4dC9wbGFpblwiLCBldi50YXJnZXQuaWQpO1xyXG4gIH1cclxuXHJcbiAgZHJvcGZvcnJldGFnKGV2OiBhbnkpIHtcclxuICAgIGV2LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICBjb25zdCBkcmFnZ2VkSW1hZ2VJZCA9IGV2LmRhdGFUcmFuc2Zlci5nZXREYXRhKCd0ZXh0L3BsYWluJyk7XHJcbiAgICBjb25zdCBkcmFnZ2VkSW1hZ2UgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChkcmFnZ2VkSW1hZ2VJZCk7XHJcbiAgICB0aGlzLnNob3d2YWx1ZSA9IHRydWU7XHJcbiAgICBjb25zdCBodG1sdGFnID0gZXYuZGF0YVRyYW5zZmVyLmdldERhdGEoJ3RleHQvaHRtbCcpO1xyXG4gICAgdmFyIE5hbWUgPSBnZXRUYWdOYW1lRnJvbUhUTUwoaHRtbHRhZyk7XHJcbiAgICBjb25zb2xlLmxvZyhcIvCfmoAgfiBBdWRpdE1hcHBpbmdMaXN0Q29tcG9uZW50IH4gZHJvcGZvcnJldGFnIH4gTmFtZTpcIiwgTmFtZSwgZHJhZ2dlZEltYWdlSWQsIHRoaXMuY2F0ZWdvcnkuZmlsdGVyKChkYXRhOiBhbnkpID0+IGRhdGE/LnR5cGUgPT09IE5hbWUpPy5sZW5ndGggPiAwKVxyXG5cclxuICAgIGlmIChOYW1lICE9IG51bGwgJiYgdGhpcy5jYXRlZ29yeS5maWx0ZXIoKGRhdGE6IGFueSkgPT4gZGF0YT8udHlwZSA9PT0gTmFtZSk/Lmxlbmd0aCA+IDApIHtcclxuXHJcbiAgICAgIGxldCBpbWFnZURhdGEgPSBKU09OLnBhcnNlKHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oTmFtZSkgfHwgJ3t9JylcclxuICAgICAgdmFyIHNwbGljZWR2YWx1ZSA9IGltYWdlRGF0YS5zcGxpY2UoaW1hZ2VEYXRhLmZpbmRJbmRleCgoeyBpbWdfaWQgfTogeyBpbWdfaWQ6IHN0cmluZyB9KSA9PiBpbWdfaWQgPT0gZHJhZ2dlZEltYWdlSWQpLCAxKTtcclxuXHJcbiAgICAgIHRoaXMuY2F0ZWdvcnkubWFwKChkYXRhOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAoZGF0YT8udHlwZSA9PSBOYW1lKSB7XHJcbiAgICAgICAgICBkYXRhLnZhbHVlID0gaW1hZ2VEYXRhXHJcbiAgICAgICAgICBkYXRhLmNvdW50ID0gaW1hZ2VEYXRhLmxlbmd0aFxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgIH0pXHJcbiAgICAgIHNlc3Npb25TdG9yYWdlLnNldEl0ZW0oTmFtZSwgSlNPTi5zdHJpbmdpZnkoaW1hZ2VEYXRhKSlcclxuICAgICAgdmFyIG9sZHJldGFnID0gSlNPTi5wYXJzZShzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKCdyZXRhZycpIHx8ICd7fScpXHJcbiAgICAgIHZhciBuZXd0YWc6IGFueSA9IFtdXHJcbiAgICAgIHNwbGljZWR2YWx1ZVswXS5zZWxlY3RlZCA9IGZhbHNlXHJcbiAgICAgIGNvbnNvbGUubG9nKFwi8J+agCB+IEF1ZGl0TWFwcGluZ0xpc3RDb21wb25lbnQgfiBkcm9wZm9ycmV0YWcgfiBzcGxpY2VkdmFsdWU6XCIsIHNwbGljZWR2YWx1ZSlcclxuICAgICAgaWYgKE51bWJlcihvbGRyZXRhZy5sZW5ndGgpID4gMCkge1xyXG4gICAgICAgIG5ld3RhZyA9IFsuLi5vbGRyZXRhZywgLi4uc3BsaWNlZHZhbHVlXVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIG5ld3RhZyA9IHNwbGljZWR2YWx1ZVxyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLnJldGFnaW1hZ2UgPSBuZXd0YWdcclxuICAgICAgc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbSgncmV0YWcnLCBKU09OLnN0cmluZ2lmeSh0aGlzLnJldGFnaW1hZ2UpKVxyXG5cclxuXHJcbiAgICAgIGlmIChOYW1lID09PSAnZHVwbGljYXRlJykge1xyXG4gICAgICAgIHRoaXMuYXVkaXRtYXBwaW5nZGF0YS5tYXAoKG1haW5EYXRhOiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmIChtYWluRGF0YS5jb3VudCA+IDEpIHtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coXCLwn5qAIH4gQXVkaXRNYXBwaW5nTGlzdENvbXBvbmVudCB+IGRyb3Bmb3JyZXRhZyB+IG1haW5EYXRhOlwiLCBtYWluRGF0YSlcclxuICAgICAgICAgICAgbWFpbkRhdGEubWFwcGVkaWQgPSBtYWluRGF0YS5tYXBwZWRpZC5maWx0ZXIoKGRhdGE6IGFueSkgPT4gZGF0YS5pbWdfaWQgIT0gZHJhZ2dlZEltYWdlSWQpXHJcbiAgICAgICAgICAgIG1haW5EYXRhLmNvdW50ID0gbWFpbkRhdGEubWFwcGVkaWQubGVuZ3RoXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgICAgICBjb25zdCBqc29uU3RyaW5nID0gSlNPTi5zdHJpbmdpZnkodGhpcy5hdWRpdG1hcHBpbmdkYXRhKTtcclxuICAgICAgICBjb25zdCBjb21wcmVzc2VkRGF0YSA9IExaU3RyaW5nLmNvbXByZXNzKGpzb25TdHJpbmcpO1xyXG4gICAgICAgIHNlc3Npb25TdG9yYWdlLnNldEl0ZW0oJ2F1ZGl0JywgY29tcHJlc3NlZERhdGEpXHJcbiAgICAgIH1cclxuXHJcblxyXG5cclxuICAgIH0gZWxzZSBpZiAoTmFtZSAhPSBudWxsKSB7XHJcbiAgICAgIHZhciBpbnNlcnRJbmRleCA9IHRoaXMuYXVkaXRtYXBwaW5nZGF0YS5maW5kSW5kZXgoKHsgaW1nX2lkIH06IHsgaW1nX2lkOiBzdHJpbmcgfSkgPT4gaW1nX2lkID09IE5hbWUpXHJcbiAgICAgIHZhciBtYWluYXJyYXkgPSB0aGlzLmF1ZGl0bWFwcGluZ2RhdGEuc3BsaWNlKHRoaXMuYXVkaXRtYXBwaW5nZGF0YS5maW5kSW5kZXgoKHsgaW1nX2lkIH06IHsgaW1nX2lkOiBzdHJpbmcgfSkgPT4gaW1nX2lkID09IE5hbWUpLCAxKTtcclxuICAgICAgdGhpcy5jdXN0b21lcmNvdW50ID0gdGhpcy5hdWRpdG1hcHBpbmdkYXRhPy5sZW5ndGg7XHJcblxyXG5cclxuXHJcblxyXG4gICAgICBpZiAoJ2R1cGxpY2F0ZScgaW4gc2Vzc2lvblN0b3JhZ2UpIHtcclxuICAgICAgICBsZXQgZmluZER1cGxpY2F0ZSA9IEpTT04ucGFyc2Uoc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSgnZHVwbGljYXRlJykgfHwgJ1tdJylcclxuICAgICAgICBsZXQgZmlsdGVyRGF0YSA9IGZpbmREdXBsaWNhdGUuZmlsdGVyKChkYXRhOiBhbnkpID0+IGRhdGEuaW1nX2lkICE9IGRyYWdnZWRJbWFnZUlkKVxyXG4gICAgICAgIGNvbnNvbGUubG9nKFwi8J+agCB+IEF1ZGl0TWFwcGluZ0xpc3RDb21wb25lbnQgfiBkcm9wZm9ycmV0YWcgfiBsZXQgZmlsdGVyRGF0YTpcIiwgZmlsdGVyRGF0YSlcclxuICAgICAgICBzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKCdkdXBsaWNhdGUnLCBKU09OLnN0cmluZ2lmeShmaWx0ZXJEYXRhKSlcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKG1haW5hcnJheT8ubGVuZ3RoID4gMCAmJiBtYWluYXJyYXlbMF0ubWFwcGVkaWQubGVuZ3RoID4gMSkge1xyXG4gICAgICAgIHZhciBjaGVja2luZGV4ID0gbWFpbmFycmF5WzBdLm1hcHBlZGlkLmZpbmRJbmRleCgoeyBpbWdfaWQgfTogeyBpbWdfaWQ6IHN0cmluZyB9KSA9PiBpbWdfaWQgPT0gZHJhZ2dlZEltYWdlSWQpXHJcblxyXG4gICAgICAgIHZhciBzdWJhcnJheSA9IG1haW5hcnJheVswXS5tYXBwZWRpZC5zcGxpY2UobWFpbmFycmF5WzBdLm1hcHBlZGlkLmZpbmRJbmRleCgoeyBpbWdfaWQgfTogeyBpbWdfaWQ6IHN0cmluZyB9KSA9PiBpbWdfaWQgPT0gZHJhZ2dlZEltYWdlSWQpLCAxKTtcclxuICAgICAgICBjb25zb2xlLmxvZyhcIvCfmoAgfiBBdWRpdE1hcHBpbmdMaXN0Q29tcG9uZW50IH4gZHJvcGZvcnJldGFnIH4gc3ViYXJyYXk6XCIsIHN1YmFycmF5KVxyXG4gICAgICAgIGlmIChjaGVja2luZGV4ID09IDApIHtcclxuICAgICAgICAgIG1haW5hcnJheVswXS5pbWdfbmFtZSA9IG1haW5hcnJheVswXS5tYXBwZWRpZFswXS5pbWdfbmFtZVxyXG4gICAgICAgICAgbWFpbmFycmF5WzBdLmltZ19pZCA9IG1haW5hcnJheVswXS5tYXBwZWRpZFswXS5pbWdfaWRcclxuICAgICAgICAgIG1haW5hcnJheVswXS5pbWdfcGF0aCA9IG1haW5hcnJheVswXS5tYXBwZWRpZFswXS5pbWdfcGF0aFxyXG4gICAgICAgIH1cclxuICAgICAgICBtYWluYXJyYXlbMF0uY291bnQgPSBtYWluYXJyYXlbMF0uY291bnQgLSAxXHJcbiAgICAgICAgc3ViYXJyYXlbMF0ubWFwcGVkaWQgPSBbXVxyXG4gICAgICAgIGxldCBvYmogPSB7XHJcbiAgICAgICAgICBpbWdfbmFtZTogc3ViYXJyYXlbMF0uaW1nX25hbWUsXHJcbiAgICAgICAgICBpbWdfaWQ6IHN1YmFycmF5WzBdLmltZ19pZCxcclxuICAgICAgICAgIGltZ19wYXRoOiBzdWJhcnJheVswXS5pbWdfcGF0aFxyXG4gICAgICAgIH1cclxuICAgICAgICBzdWJhcnJheVswXS5tYXBwZWRpZC5wdXNoKG9iailcclxuICAgICAgICBzdWJhcnJheVswXS5zZWxlY3RlZCA9IGZhbHNlXHJcbiAgICAgICAgc3ViYXJyYXlbMF0uZHJvcHBlZCA9IGZhbHNlXHJcbiAgICAgICAgc3ViYXJyYXlbMF0uZGVtb2dyYXBoaWMgPSAnJ1xyXG4gICAgICAgIHN1YmFycmF5WzBdLmNvdW50ID0gMTtcclxuICAgICAgICB2YXIgb2xkcmV0YWcgPSBKU09OLnBhcnNlKHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oJ3JldGFnJykgfHwgJ3t9JylcclxuICAgICAgICBjb25zb2xlLmxvZyhcIvCfmoAgfiBBdWRpdE1hcHBpbmdMaXN0Q29tcG9uZW50IH4gZHJvcGZvcnJldGFnIH4gb2xkcmV0YWc6XCIsIG9sZHJldGFnKVxyXG4gICAgICAgIHZhciBuZXd0YWc6IGFueSA9IFtdXHJcbiAgICAgICAgaWYgKE51bWJlcihvbGRyZXRhZy5sZW5ndGgpID4gMCkge1xyXG4gICAgICAgICAgbmV3dGFnID0gWy4uLm9sZHJldGFnLCAuLi5zdWJhcnJheV1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgbmV3dGFnID0gc3ViYXJyYXlcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5yZXRhZ2ltYWdlID0gbmV3dGFnXHJcbiAgICAgICAgY29uc29sZS5sb2coXCLwn5qAIH4gQXVkaXRNYXBwaW5nTGlzdENvbXBvbmVudCB+IGRyb3Bmb3JyZXRhZyB+IHRoaXMucmV0YWdpbWFnZToxXCIsIHRoaXMucmV0YWdpbWFnZSlcclxuICAgICAgICBzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKCdyZXRhZycsIEpTT04uc3RyaW5naWZ5KHRoaXMucmV0YWdpbWFnZSkpXHJcbiAgICAgICAgdGhpcy5hdWRpdG1hcHBpbmdkYXRhLnNwbGljZShpbnNlcnRJbmRleCwgMCwgLi4ubWFpbmFycmF5KTtcclxuICAgICAgICBjb25zdCBqc29uU3RyaW5nID0gSlNPTi5zdHJpbmdpZnkodGhpcy5hdWRpdG1hcHBpbmdkYXRhKTtcclxuICAgICAgICBjb25zdCBjb21wcmVzc2VkRGF0YSA9IExaU3RyaW5nLmNvbXByZXNzKGpzb25TdHJpbmcpO1xyXG4gICAgICAgIHNlc3Npb25TdG9yYWdlLnNldEl0ZW0oJ2F1ZGl0JywgY29tcHJlc3NlZERhdGEpXHJcbiAgICAgICAgdGhpcy5jYXRlZ29yeS5tYXAoKGRhdGE6IGFueSkgPT4ge1xyXG4gICAgICAgICAgbGV0IHNlc3Npb252YWx1ZSA9IEpTT04ucGFyc2Uoc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbShkYXRhLnR5cGUpIHx8ICdbXScpO1xyXG4gICAgICAgICAgZGF0YS5jb3VudCA9IHNlc3Npb252YWx1ZS5sZW5ndGhcclxuICAgICAgICAgIGRhdGEudmFsdWUgPSBzZXNzaW9udmFsdWUgJiYgc2Vzc2lvbnZhbHVlLmxlbmd0aCA+IDAgPyBzZXNzaW9udmFsdWUgOiBbXVxyXG4gICAgICAgIH0pXHJcbiAgICAgICAgY29uc29sZS5sb2coXCLwn5qAIH4gQXVkaXRNYXBwaW5nTGlzdENvbXBvbmVudCB+IGRyb3Bmb3JyZXRhZyB+IHRoaXMuY2F0ZWdvcnk6XCIsIHRoaXMuY2F0ZWdvcnkpXHJcbiAgICAgIH0gZWxzZSB7XHJcblxyXG4gICAgICAgIHZhciBvbGRyZXRhZyA9IEpTT04ucGFyc2Uoc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSgncmV0YWcnKSB8fCAne30nKVxyXG4gICAgICAgIHZhciBuZXd0YWc6IGFueSA9IFtdXHJcbiAgICAgICAgaWYgKE51bWJlcihvbGRyZXRhZy5sZW5ndGgpID4gMCkge1xyXG4gICAgICAgICAgbmV3dGFnID0gWy4uLm9sZHJldGFnLCAuLi5tYWluYXJyYXldXHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIG5ld3RhZyA9IG1haW5hcnJheVxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnJldGFnaW1hZ2UgPSBuZXd0YWdcclxuICAgICAgICBjb25zb2xlLmxvZyhcIvCfmoAgfiBBdWRpdE1hcHBpbmdMaXN0Q29tcG9uZW50IH4gZHJvcGZvcnJldGFnIH4gdGhpcy5yZXRhZ2ltYWdlOjJcIiwgdGhpcy5yZXRhZ2ltYWdlKVxyXG4gICAgICAgIHNlc3Npb25TdG9yYWdlLnNldEl0ZW0oJ3JldGFnJywgSlNPTi5zdHJpbmdpZnkodGhpcy5yZXRhZ2ltYWdlKSlcclxuICAgICAgICBjb25zdCBqc29uU3RyaW5nID0gSlNPTi5zdHJpbmdpZnkodGhpcy5hdWRpdG1hcHBpbmdkYXRhKTtcclxuICAgICAgICBjb25zdCBjb21wcmVzc2VkRGF0YSA9IExaU3RyaW5nLmNvbXByZXNzKGpzb25TdHJpbmcpO1xyXG4gICAgICAgIHNlc3Npb25TdG9yYWdlLnNldEl0ZW0oJ2F1ZGl0JywgY29tcHJlc3NlZERhdGEpXHJcbiAgICAgIH1cclxuXHJcbiAgICB9XHJcblxyXG4gICAgZnVuY3Rpb24gZ2V0VGFnTmFtZUZyb21IVE1MKGh0bWw6IGFueSkge1xyXG4gICAgICB2YXIgdGVtcEVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcclxuICAgICAgdGVtcEVsZW1lbnQuaW5uZXJIVE1MID0gaHRtbDtcclxuICAgICAgdmFyIGZpcnN0Q2hpbGQ6IGFueSA9IHRlbXBFbGVtZW50LmZpcnN0Q2hpbGQ7XHJcbiAgICAgIGlmIChmaXJzdENoaWxkLmhhc0F0dHJpYnV0ZSgnbmFtZScpKSB7XHJcbiAgICAgICAgdmFyIG5hbWVQcm9wZXJ0eVZhbHVlID0gZmlyc3RDaGlsZC5nZXRBdHRyaWJ1dGUoJ25hbWUnKTtcclxuICAgICAgICByZXR1cm4gbmFtZVByb3BlcnR5VmFsdWU7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgICBzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKCdyZXRhZycsIEpTT04uc3RyaW5naWZ5KHRoaXMucmV0YWdpbWFnZSkpXHJcblxyXG4gICAgaWYgKCdyZXRhZycgaW4gc2Vzc2lvblN0b3JhZ2UpIHtcclxuICAgICAgdmFyIHJldGFnZGF0YSA9IEpTT04ucGFyc2Uoc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSgncmV0YWcnKSB8fCAne30nKVxyXG4gICAgICB0aGlzLnJldGFnaW1hZ2UgPSByZXRhZ2RhdGE7XHJcblxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmVtb3ZlaW1hZ2UoZGF0YTogYW55KSB7XHJcbiAgICB2YXIgcmVtb3ZlZF9pbWcgPSB0aGlzLnJldGFnaW1hZ2UuZmlsdGVyKChldjogYW55KSA9PiBldi5pbWdfaWQgPT0gZGF0YS5pbWdfaWQpXHJcbiAgICB0aGlzLnJldGFnaW1hZ2Uuc3BsaWNlKHRoaXMucmV0YWdpbWFnZS5maW5kSW5kZXgoKHsgaW1nX2lkIH06IHsgaW1nX2lkOiBzdHJpbmcgfSkgPT4gaW1nX2lkID09IGRhdGEuaW1nX2lkKSwgMSk7XHJcbiAgICB0aGlzLmF1ZGl0bWFwcGluZ2RhdGEgPSBbLi4udGhpcy5hdWRpdG1hcHBpbmdkYXRhLCAuLi5yZW1vdmVkX2ltZ11cclxuICAgIHRoaXMuY3VzdG9tZXJjb3VudCA9IHRoaXMuYXVkaXRtYXBwaW5nZGF0YT8ubGVuZ3RoO1xyXG4gICAgaWYgKCF0aGlzLnJldGFnaW1hZ2UubGVuZ3RoKSB7IHRoaXMuc2hvd3ZhbHVlID0gZmFsc2UgfVxyXG4gICAgbGV0IHN0cmluZ2lmeWRhdGEgPSBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKCdhdWRpdCcpIHx8ICd7fSdcclxuICAgIGNvbnN0IGRlY29tcHJlc3NlZERhdGEgPSBMWlN0cmluZy5kZWNvbXByZXNzKHN0cmluZ2lmeWRhdGEpO1xyXG4gICAgY29uc3QgY29tcGxldGVEYXRlID0gSlNPTi5wYXJzZShkZWNvbXByZXNzZWREYXRhIHx8ICd7fScpXHJcbiAgICBjb25zdCBqc29uU3RyaW5nID0gSlNPTi5zdHJpbmdpZnkodGhpcy5hdWRpdG1hcHBpbmdkYXRhKTtcclxuICAgIGNvbnN0IGNvbXByZXNzZWREYXRhID0gTFpTdHJpbmcuY29tcHJlc3MoanNvblN0cmluZyk7XHJcbiAgICBzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKCdhdWRpdCcsIGNvbXByZXNzZWREYXRhKVxyXG4gICAgc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbSgncmV0YWcnLCBKU09OLnN0cmluZ2lmeSh0aGlzLnJldGFnaW1hZ2UpKVxyXG4gICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBzYXZlRHJhZnRpbWcoKSB7XHJcbiAgICB0aGlzLnN1Ym1pdHRlZCA9IHRydWU7XHJcblxyXG4gICAgdmFyIHRvdGFsZmlsZTogYW55ID0gSlNPTi5wYXJzZShzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKCd0b3RhbGZpbGVzJykgfHwgJ3t9Jyk7XHJcbiAgICB0aGlzLnRpbWVQYXNzZWQgPSBKU09OLnBhcnNlKHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oJ3RpbWVTcGVudCcpIHx8ICd7fScpXHJcbiAgICBpZiAoJ3JldGFnJyBpbiBzZXNzaW9uU3RvcmFnZSkge1xyXG4gICAgICB2YXIgcmV0YWdkYXRhID0gSlNPTi5wYXJzZShzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKCdyZXRhZycpIHx8ICd7fScpXHJcbiAgICAgIHRoaXMucmV0YWdpbWFnZSA9IHJldGFnZGF0YTtcclxuICAgIH1cclxuICAgIGxldCBzdG9yZWREYXRhID0gW1xyXG4gICAgICB7XHJcbiAgICAgICAgdHlwZTogXCJjdXN0b21lclwiLFxyXG4gICAgICAgIHZhbHVlOiB0aGlzLmF1ZGl0bWFwcGluZ2RhdGEgPyB0aGlzLmF1ZGl0bWFwcGluZ2RhdGEgOiBbXSxcclxuICAgICAgfVxyXG4gICAgXVxyXG5cclxuICAgIHRoaXMuY2F0ZWdvcnkubWFwKChkYXRhOiBhbnkpID0+IHtcclxuICAgICAgbGV0IHNlc3Npb252YWx1ZSA9IEpTT04ucGFyc2Uoc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbShkYXRhLnR5cGUpIHx8ICd7fScpO1xyXG4gICAgICBzdG9yZWREYXRhLnB1c2goe1xyXG4gICAgICAgIHR5cGU6IGRhdGEudHlwZSxcclxuICAgICAgICB2YWx1ZTogc2Vzc2lvbnZhbHVlICYmIHNlc3Npb252YWx1ZS5sZW5ndGggPiAwID8gc2Vzc2lvbnZhbHVlIDogW11cclxuICAgICAgfSlcclxuICAgIH0pXHJcbiAgICB2YXIgaW5zZXJvYmo6IGFueSA9IHtcclxuICAgICAgc3RvcmVJZDogdG90YWxmaWxlPy5maWxlZGV0YWlscz8uc3RvcmVJZCxcclxuICAgICAgZmlsZURhdGU6IHRvdGFsZmlsZT8uZmlsZWRldGFpbHM/LkRhdGUsXHJcbiAgICAgIGF1ZGl0SWQ6IHRvdGFsZmlsZT8uYXVkaXRJZCA/IHRvdGFsZmlsZT8uYXVkaXRJZCA6IHRvdGFsZmlsZT8uZmlsZWRldGFpbHM/LmF1ZGl0SWQsXHJcbiAgICAgIHRvdGFsQ291bnQ6IHRvdGFsZmlsZT8udG90YWxmaWxlcyA/IHRvdGFsZmlsZS50b3RhbGZpbGVzIDogMCxcclxuICAgICAgcmV0YWdDb3VudDogdGhpcy5yZXRhZ2ltYWdlLmxlbmd0aCxcclxuICAgICAgdGltZVNwZW50OiB0aGlzLnRpbWVQYXNzZWQsXHJcbiAgICAgIHJldGFnSW1hZ2U6IHRoaXMucmV0YWdpbWFnZSA/IHRoaXMucmV0YWdpbWFnZSA6IFtdXHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5hdWRpdFNlcnZpY2Uuc2F2ZURyYWZ0KGluc2Vyb2JqKS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgaWYgKCF0aGlzLnJlZGlyZWFjdCkge1xyXG4gICAgICAgIHRoaXMuc3VibWl0dGVkID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5nZXRtYXBwaW5nZGF0YSgpXHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5jaGFuZ2VzZGF0YSgpXHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgfVxyXG5cclxuXHJcbiAgdGFnZ2luZ3ZpZXcoKSB7XHJcbiAgICB0aGlzLnN1Ym1pdHRlZCA9IHRydWU7XHJcbiAgICB2YXIgdG90YWxmaWxlOiBhbnkgPSBKU09OLnBhcnNlKHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oJ3RvdGFsZmlsZXMnKSB8fCAne30nKTtcclxuICAgIHRoaXMuc2hvd3ZhbHVlID0gZmFsc2U7XHJcbiAgICB0aGlzLnNob3d2YWx1ZTEgPSB0cnVlO1xyXG4gICAgdGhpcy5yZXRnZ2luZ3BhZ2UgPSB0cnVlO1xyXG4gICAgbGV0IHN0cmluZ2lmeWRhdGEgPSBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKCdhdWRpdCcpIHx8ICd7fSdcclxuICAgIGNvbnN0IGRlY29tcHJlc3NlZERhdGEgPSBMWlN0cmluZy5kZWNvbXByZXNzKHN0cmluZ2lmeWRhdGEpO1xyXG4gICAgdmFyIGN1c3RvbWVyID0gSlNPTi5wYXJzZShkZWNvbXByZXNzZWREYXRhIHx8ICd7fScpXHJcbiAgICBsZXQgc3RvcmVkRGF0YSA9IFtcclxuICAgICAge1xyXG4gICAgICAgIHR5cGU6IFwiY3VzdG9tZXJcIixcclxuICAgICAgICB2YWx1ZTogY3VzdG9tZXIgPyBjdXN0b21lciA6IFtdLFxyXG4gICAgICB9XHJcbiAgICBdXHJcblxyXG4gICAgdGhpcy5jYXRlZ29yeS5tYXAoKGRhdGE6IGFueSkgPT4ge1xyXG4gICAgICBsZXQgc2Vzc2lvbnZhbHVlID0gSlNPTi5wYXJzZShzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKGRhdGEudHlwZSkgfHwgJ3t9Jyk7XHJcbiAgICAgIHN0b3JlZERhdGEucHVzaCh7XHJcbiAgICAgICAgdHlwZTogZGF0YS50eXBlLFxyXG4gICAgICAgIHZhbHVlOiBzZXNzaW9udmFsdWUgJiYgc2Vzc2lvbnZhbHVlLmxlbmd0aCA+IDAgPyBzZXNzaW9udmFsdWUgOiBbXVxyXG4gICAgICB9KVxyXG4gICAgfSlcclxuICAgIHZhciBpbnNlcm9iajogYW55ID0ge1xyXG4gICAgICBzdG9yZUlkOiB0b3RhbGZpbGU/LmZpbGVkZXRhaWxzPy5zdG9yZV9pZCxcclxuICAgICAgZmlsZURhdGU6IHRvdGFsZmlsZT8uZmlsZWRldGFpbHM/LmZpbGVfZGF0ZSxcclxuICAgICAgYXVkaXRJZDogdG90YWxmaWxlPy5hdWRpdElkID8gdG90YWxmaWxlPy5hdWRpdElkIDogdG90YWxmaWxlPy5maWxlZGV0YWlscy5hdWRpdElkLFxyXG4gICAgICB0b3RhbENvdW50OiB0b3RhbGZpbGU/LnRvdGFsZmlsZXMgPyB0b3RhbGZpbGUudG90YWxmaWxlcyA6IDAsXHJcbiAgICAgIHJldGFnQ291bnQ6IHRoaXMucmV0YWdpbWFnZS5sZW5ndGgsXHJcbiAgICAgIHRpbWVTcGVudDogdGhpcy50aW1lUGFzc2VkLFxyXG4gICAgICByZXRhZ0ltYWdlOiB0aGlzLnJldGFnaW1hZ2UgPyB0aGlzLnJldGFnaW1hZ2UgOiBbXVxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuYXVkaXRTZXJ2aWNlLnNhdmVEcmFmdChpbnNlcm9iaikucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSgoKSA9PiB7IHRoaXMuc3VibWl0dGVkID0gZmFsc2U7IH0pXHJcbiAgICBpZiAoJ3JldGFnJyBpbiBzZXNzaW9uU3RvcmFnZSkge1xyXG4gICAgICB2YXIgcmV0YWdkYXRhID0gSlNPTi5wYXJzZShzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKCdyZXRhZycpIHx8ICd7fScpXHJcbiAgICAgIHRoaXMucmV0YWdpbWFnZSA9IHJldGFnZGF0YTtcclxuXHJcbiAgICB9XHJcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbXCIvbWFuYWdlL3RpY2tldHMvcmV0YWctbWFwcGluZ1wiXSlcclxuICB9XHJcblxyXG4gIHN1Ym1pdGF1ZGl0KCkge1xyXG4gICAgY29uc3QgbW9kYWxSZWYgPSB0aGlzLm1vZGFsU2VydmljZS5vcGVuKEF1ZGl0UmVwb3J0UG9wdXBDb21wb25lbnQsIHtcclxuICAgICAgc2l6ZTogJ2xnJyxcclxuICAgICAgY2VudGVyZWQ6IHRydWVcclxuICAgIH0pXHJcbiAgICBtb2RhbFJlZi5jb21wb25lbnRJbnN0YW5jZS5zZWxlY3RlZFR5cGUgPSB0aGlzLnNlbGVjdGVkVHlwZTtcclxuICB9XHJcblxyXG5cclxuXHJcbiAgc2V0VmFsdWUoaTogYW55KSB7XHJcbiAgICBsZXQgaW5kZXggPSAwO1xyXG4gICAgaWYgKGkgPiBpbmRleCkge1xyXG4gICAgICByZXR1cm4gdGhpcy5jdXJyZW50VmFsdWUgPSB0aGlzLmN1cnJlbnRWYWx1ZSArIDE7XHJcbiAgICB9XHJcblxyXG4gIH1cclxuICBjdXJyZW50R3JvdXBOdW1iZXI6IGFueSA9IDA7XHJcblxyXG4gIGdldEdyb3VwTnVtYmVyKG9iajogYW55KTogbnVtYmVyIHwgbnVsbCB7XHJcbiAgICBpZiAob2JqLmNvdW50ID4gMSkge1xyXG4gICAgICByZXR1cm4gKyt0aGlzLmN1cnJlbnRHcm91cE51bWJlcjtcclxuICAgIH1cclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuXHJcbiAgcmVzZXRHcm91cE51bWJlcigpIHtcclxuICAgIHRoaXMuY3VycmVudEdyb3VwTnVtYmVyID0gMDtcclxuICB9XHJcblxyXG4gIGdldEZpbHRlcmVkRGF0YShjb3VudDogbnVtYmVyKSB7XHJcbiAgICByZXR1cm4gdGhpcy5hdWRpdG1hcHBpbmdkYXRhLmZpbHRlcigob2JqOiBhbnkpID0+IG9iai5jb3VudCA9PT0gY291bnQpO1xyXG5cclxuICB9XHJcblxyXG4gIHRvZ2dsZUltYWdlKGltZ19uYW1lOiBhbnkpIHtcclxuICAgIHRoaXMuYXVkaXRtYXBwaW5nZGF0YS5tYXAoKGRhdGE6IGFueSkgPT4ge1xyXG4gICAgICBpZiAoZGF0YS5pbWdfbmFtZSA9PSBpbWdfbmFtZSkge1xyXG4gICAgICAgIGlmIChkYXRhLm1hcHBlZGlkLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgIGRhdGEuZGVtb2dyYXBoaWMgIT09ICdkJyA/IGRhdGEuZGVtb2dyYXBoaWMgPSAnZCcgOiBkYXRhLmRlbW9ncmFwaGljID0gJydcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgZGF0YS5kcm9wcGVkID0gIWRhdGEuZHJvcHBlZFxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSlcclxuICAgIHRoaXMuZGVtb2dyYXBoaWMgPSB0aGlzLmF1ZGl0bWFwcGluZ2RhdGEuZmlsdGVyKChkYXRhOiBhbnkpID0+IGRhdGEuZGVtb2dyYXBoaWMgPT09ICdkJykubGVuZ3RoO1xyXG4gICAgY29uc3QganNvblN0cmluZyA9IEpTT04uc3RyaW5naWZ5KHRoaXMuYXVkaXRtYXBwaW5nZGF0YSk7XHJcbiAgICBjb25zdCBjb21wcmVzc2VkRGF0YSA9IExaU3RyaW5nLmNvbXByZXNzKGpzb25TdHJpbmcpO1xyXG4gICAgc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbSgnYXVkaXQnLCBjb21wcmVzc2VkRGF0YSlcclxuICB9XHJcbn0iLCI8ZGl2ICpuZ0lmPVwiIWF1ZGl0TG9hZGluZ1wiIGNsYXNzPVwiY2FyZFwiID5cclxuICAgIDxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlclwiID5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC10aXRsZVwiPlxyXG4gICAgICAgICAgICA8aDMgY2xhc3M9XCJmbGV4LWNvbHVtblwiPlxyXG4gICAgICAgICAgICAgICAgPCEtLSA8c3BhbiBjbGFzcz1cImNhcmQtbGFiZWwgZnctYm9sZFwiPnt7ZmlsZWRldGFpbHM/LnF1ZXVlTmFtZX19PHNwYW4gY2xhc3M9XCJteC0zIGFycm93LWNvZGVcIj4gLSA8L3NwYW4+IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7ZmlsZWRldGFpbHM/LnN0b3JlSWR9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm14LTMgYXJyb3ctY29kZVwiPiAtIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiA+e3tmaWxlZGV0YWlscz8uRGF0ZX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gPHNwYW4gY2xhc3M9XCJteC0zIGFycm93LWNvZGVcIj4gLSA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gPnt7ZmlsZWRldGFpbHM/LnR5cGV9fTwvc3Bhbj4gLS0+XHJcbiAgICAgICAgICAgICAgICA8IS0tIDwvc3Bhbj4gLS0+XHJcbiAgICAgICAgICAgIDwvaDM+XHJcbiAgICBcclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdW5kZWQtMyBtcy0zIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgYmctdGltZXJcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWUtMyB0ZXh0LXRpbWVyIGZ3LXNlbWlib2xkXCI+e3sgZm9ybWF0dGVkVGltZSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxzcGFuPjxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgPHBhdGggZD1cIk05LjE2NjY3IDIuODcwNzFDOS4xNjY2NyAyLjYyMDIzIDkuMjY2MTcgMi4zODAwMSA5LjQ0MzI5IDIuMjAyODlDOS42MjA0MSAyLjAyNTc3IDkuODYwNjMgMS45MjYyNyAxMC4xMTExIDEuOTI2MjdIMTMuODg4OUMxNC4xMzk0IDEuOTI2MjcgMTQuMzc5NiAyLjAyNTc3IDE0LjU1NjcgMi4yMDI4OUMxNC43MzM4IDIuMzgwMDEgMTQuODMzMyAyLjYyMDIzIDE0LjgzMzMgMi44NzA3MUMxNC44MzMzIDMuMTIxMiAxNC43MzM4IDMuMzYxNDIgMTQuNTU2NyAzLjUzODU0QzE0LjM3OTYgMy43MTU2NSAxNC4xMzk0IDMuODE1MTYgMTMuODg4OSAzLjgxNTE2SDEyLjk0NDRWNS4wNzQ0MkwxMi45NDMyIDUuMTI2MDVDMTQuNTM5NiA1LjMwMDk3IDE2LjA1MjggNS45Mjc4NyAxNy4zMDUzIDYuOTMzMDhMMTcuMzE0MSA2LjkyNTUzTDE4LjI1ODUgNS45ODEwOEMxOC4zNzQgNS44NTY3NiAxOC41MjA4IDUuNzY1ODggMTguNjgzNSA1LjcxODAxQzE4Ljg0NjMgNS42NzAxNCAxOS4wMTkgNS42NjcwNiAxOS4xODMzIDUuNzA5MDhDMTkuMzQ3NyA1Ljc1MTExIDE5LjQ5NzcgNS44MzY2OSAxOS42MTc1IDUuOTU2OEMxOS43MzczIDYuMDc2OTIgMTkuODIyNSA2LjIyNzEzIDE5Ljg2NDEgNi4zOTE2QzE5LjkwNiA2LjU1NTc4IDE5LjkwMyA2LjcyODIzIDE5Ljg1NTQgNi44OTA4NUMxOS44MDc3IDcuMDUzNDggMTkuNzE3MiA3LjIwMDI5IDE5LjU5MzMgNy4zMTU5TDE4LjY0ODkgOC4yNjAzNEwxOC42NDEzIDguMjY5MTVDMTkuNjQwMyA5LjUxOTc0IDIwLjI2NTggMTEuMDI3IDIwLjQ0NiAxMi42MTc0QzIwLjYyNjEgMTQuMjA3OCAyMC4zNTM2IDE1LjgxNjcgMTkuNjU5NyAxNy4yNTkxQzE4Ljk2NTggMTguNzAxNCAxNy44Nzg4IDE5LjkxODUgMTYuNTIzNyAyMC43NzA0QzE1LjE2ODYgMjEuNjIyMiAxMy42MDA2IDIyLjA3NDEgMTIgMjIuMDc0MUMxMC4zOTk0IDIyLjA3NDEgOC44MzEzNyAyMS42MjIyIDcuNDc2MjkgMjAuNzcwNEM2LjEyMTIyIDE5LjkxODUgNS4wMzQxOSAxOC43MDE0IDQuMzQwMyAxNy4yNTkxQzMuNjQ2NDEgMTUuODE2NyAzLjM3Mzg2IDE0LjIwNzggMy41NTQwMiAxMi42MTc0QzMuNzM0MTggMTEuMDI3IDQuMzU5NzMgOS41MTk3NCA1LjM1ODY3IDguMjY5MTVMNS4zNTExMSA4LjI2MDM0TDQuNDA2NjcgNy4zMTU5QzQuMjM5NjQgNy4xMzY5IDQuMTQ4NjUgNi45MDAwMyA0LjE1Mjg3IDYuNjU1MjRDNC4xNTcxIDYuNDEwNDUgNC4yNTYyMiA2LjE3Njg3IDQuNDI5MzQgNi4wMDM3NUM0LjYwMjQ2IDUuODMwNjMgNC44MzYwNCA1LjczMTUxIDUuMDgwODMgNS43MjcyOEM1LjMyNTYyIDUuNzIzMDYgNS41NjI0OSA1LjgxNDA1IDUuNzQxNDkgNS45ODEwOEw2LjY4NTkzIDYuOTI1NTNMNi42OTQ3NCA2LjkzMzA4QzcuOTQ2ODEgNS45MjgwOSA5LjQ1OTYzIDUuMzAxMiAxMS4wNTU2IDUuMTI2MDVWMy44MTUxNkgxMC4xMTExQzkuODYwNjMgMy44MTUxNiA5LjYyMDQxIDMuNzE1NjUgOS40NDMyOSAzLjUzODU0QzkuMjY2MTcgMy4zNjE0MiA5LjE2NjY3IDMuMTIxMiA5LjE2NjY3IDIuODcwNzFaTTEyIDIwLjE4NTVDMTMuNzUzNSAyMC4xODU0IDE1LjQzNTIgMTkuNDg4NiAxNi42NzUgMTguMjQ4NUMxNy45MTQ4IDE3LjAwODUgMTguNjExMyAxNS4zMjY3IDE4LjYxMTEgMTMuNTczMkMxOC42MTA5IDExLjgxOTYgMTcuOTE0MiAxMC4xMzggMTYuNjc0MSA4Ljg5ODEzQzE1LjQzNDEgNy42NTgzMSAxMy43NTIzIDYuOTYxODggMTEuOTk4NyA2Ljk2MjA0QzEwLjI0NTIgNi45NjIyMSA4LjU2MzU0IDcuNjU4OTYgNy4zMjM3MiA4Ljg5OTAyQzYuMDgzOSAxMC4xMzkxIDUuMzg3NDcgMTEuODIwOSA1LjM4NzYzIDEzLjU3NDRDNS4zODc4IDE1LjMyOCA2LjA4NDU1IDE3LjAwOTYgNy4zMjQ2MSAxOC4yNDk0QzguNTY0NjcgMTkuNDg5MyAxMC4yNDY1IDIwLjE4NTcgMTIgMjAuMTg1NVpNMTIuNDg5OSAxMS43NDg1TDE0LjE2NDcgMTAuMDczN0MxNC4yNTE3IDkuOTgzNDMgMTQuMzU1OSA5LjkxMTQzIDE0LjQ3MTEgOS44NjE4OEMxNC41ODYzIDkuODEyMzMgMTQuNzEwMiA5Ljc4NjIyIDE0LjgzNTYgOS43ODUwN0MxNC45NjExIDkuNzgzOTIgMTUuMDg1NCA5LjgwNzc2IDE1LjIwMTUgOS44NTUxOUMxNS4zMTc2IDkuOTAyNjIgMTUuNDIzMSA5Ljk3MjcgMTUuNTExOCAxMC4wNjEzQzE1LjYwMDUgMTAuMTUgMTUuNjcwNyAxMC4yNTU0IDE1LjcxODIgMTAuMzcxNEMxNS43NjU4IDEwLjQ4NzUgMTUuNzg5NyAxMC42MTE4IDE1Ljc4ODcgMTAuNzM3MkMxNS43ODc3IDEwLjg2MjYgMTUuNzYxNyAxMC45ODY2IDE1LjcxMjIgMTEuMTAxOEMxNS42NjI4IDExLjIxNzEgMTUuNTkwOSAxMS4zMjEzIDE1LjUwMDcgMTEuNDA4NUwxMy44MjU5IDEzLjA4NDZDMTMuOTAwMyAxMy4zNjQ1IDEzLjkwOTUgMTMuNjU3OSAxMy44NTI2IDEzLjk0MkMxMy43OTU4IDE0LjIyNiAxMy42NzQ1IDE0LjQ5MzMgMTMuNDk4MSAxNC43MjMxQzEzLjMyMTcgMTQuOTUyOSAxMy4wOTQ5IDE1LjEzOTEgMTIuODM1MiAxNS4yNjc1QzEyLjU3NTQgMTUuMzk1OCAxMi4yODk3IDE1LjQ2MjggMTIgMTUuNDYzM0MxMS43MzI3IDE1LjQ2MSAxMS40Njg4IDE1LjQwMTkgMTEuMjI2IDE1LjI5QzEwLjk4MzIgMTUuMTc4MSAxMC43NjcgMTUuMDE1OSAxMC41OTE2IDE0LjgxNDFDMTAuNDE2MiAxNC42MTIzIDEwLjI4NTcgMTQuMzc1NSAxMC4yMDg3IDE0LjExOTVDMTAuMTMxNiAxMy44NjM1IDEwLjEwOTkgMTMuNTk0IDEwLjE0NDggMTMuMzI5QzEwLjE3OTggMTMuMDYzOSAxMC4yNzA2IDEyLjgwOTMgMTAuNDExNCAxMi41ODJDMTAuNTUyMiAxMi4zNTQ3IDEwLjczOTYgMTIuMTU5OSAxMC45NjEzIDEyLjAxMDRDMTEuMTgzIDExLjg2MSAxMS40MzM5IDExLjc2MDQgMTEuNjk3NCAxMS43MTUyQzExLjk2MDkgMTEuNjcwMSAxMi4yMzEgMTEuNjgxNCAxMi40ODk5IDExLjc0ODVaXCIgZmlsbD1cImJsYWNrXCIvPlxyXG4gICAgICAgICAgICAgICAgPC9zdmc+PC9zcGFuPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPCEtLSA8c3BhbiAqbmdJZj1cImRlbW9ncmFwaGljXCIgY2xhc3M9XCJiYWRnZSBiYWRnZS1saWdodC1zdWNjZXNzIG1zLTNcIj57e2RlbW9ncmFwaGljfX0ge3tkZW1vZ3JhcGhpYyA+IDEgPyAnRGVtb2dyYXBoaWNzJyA6ICdEZW1vZ3JhcGhpYyd9fTwvc3Bhbj4gLS0+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLXRvb2xiYXIgXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXhcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIHBvc2l0aW9uLXJlbGF0aXZlIG15LTFcIj5cclxuICAgICAgICAgICAgICAgICAgICA8YSAqbmdJZj1cIiFzaG93dmFsdWUxXCIgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1kZWZhdWx0IGJ0bi1vdXRsaW5lIHB5LTIgbXgtMlwiIChjbGljayk9XCJjaGFuZ2VzZGF0YSgpXCI+PHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwic3ZnLWljb24gc3ZnLWljb24tcHJpbWFyeSBzdmctaWNvbi0yeFwiID48c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTE1LjgzMzcgMTAuMDAwMUg0LjE2Njk5TTQuMTY2OTkgMTAuMDAwMUwxMC4wMDAzIDE1LjgzMzRNNC4xNjY5OSAxMC4wMDAxTDEwLjAwMDMgNC4xNjY3NVwiIHN0cm9rZT1cIiMzNDQwNTRcIiBzdHJva2Utd2lkdGg9XCIxLjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPjwvc3Bhbj48c3BhbiBjbGFzcz1cIm1zLTNcIj5CYWNrIHRvIFRhZ2dpbmc8L3NwYW4+PC9hPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cIiFzaG93dmFsdWVcIiBjbGFzcz1cImJ0biBidG4tc20gYnRuLXByaW1hcnkgcHktMiBteC0yXCIgKGNsaWNrKT1cInN1Ym1pdGF1ZGl0KClcIiAgPlN1Ym1pdFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTQuMTY2OTkgOS45OTk4NEgxNS44MzM3TTE1LjgzMzcgOS45OTk4NEwxMC4wMDAzIDQuMTY2NU0xNS44MzM3IDkuOTk5ODRMMTAuMDAwMyAxNS44MzMyXCIgc3Ryb2tlPVwid2hpdGVcIiBzdHJva2Utd2lkdGg9XCIxLjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cInNob3d2YWx1ZVwiIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IGJ0bi1zbSBweS0yIG14LTJcIiBbZGlzYWJsZWRdPVwic3VibWl0dGVkXCIgKGNsaWNrKT1cInRhZ2dpbmd2aWV3KClcIj5SZXRhZyA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzdmctaWNvbiBzdmctaWNvbi1wcmltYXJ5IHN2Zy1pY29uLTJ4XCI+PHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk00LjE2NjY2IDkuOTk5OTZIMTUuODMzM00xNS44MzMzIDkuOTk5OTZMOS45OTk5OSA0LjE2NjYzTTE1LjgzMzMgOS45OTk5Nkw5Ljk5OTk5IDE1LjgzMzNcIiBzdHJva2U9XCJ3aGl0ZVwiIHN0cm9rZS13aWR0aD1cIjEuNjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICBcclxuPC9kaXY+XHJcblxyXG5cclxuPGRpdiBjbGFzcz1cInJvd1wiPiBcclxuICAgIDxkaXYgKm5nSWY9XCJhdWRpdExvYWRpbmdcIiBjbGFzcz1cImNhcmQgbXQtNVwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbG9hZGVyIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNoaW1tZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid3JhcHBlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIHRpdGxlXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgbGlua1wiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGRlc2NyaXB0aW9uXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2hpbW1lclwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3cmFwcGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgdGl0bGVcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBsaW5rXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgZGVzY3JpcHRpb25cIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+ICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwhLS0gPGg1IGNsYXNzPVwidGV4dC1kYXJrLTYwMCBmcy0zIGZ3LWJvbGQgdGV4dC1jZW50ZXIgXCI+TG9hZGluZyBBdWRpdCBmaWxlLi4uLi4uPC9oNT4gLS0+XHJcbiAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiAqbmdJZj1cIiFhdWRpdExvYWRpbmdcIiBjbGFzcz1cImNvbC1tZC03XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQgbXQtNVwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaC0xMDAwcHhcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgbmdiQWNjb3JkaW9uICpuZ0Zvcj1cImxldCBpdGVtIG9mIGNhdGVnb3J5XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIml0ZW0/LmNvdW50ICE9PTBcIiBjbGFzcz1cIm10LTZcIiBuZ2JBY2NvcmRpb25JdGVtIFtjb2xsYXBzZWRdPVwiIWl0ZW0/LmNvdW50XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgbmdiQWNjb3JkaW9uSGVhZGVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cIm1haW5oZWFkaW5nXCIgbmdiQWNjb3JkaW9uQnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7aXRlbT8ubmFtZX19IDxzcGFuIGNsYXNzPVwic3ViLXRleHQgbXQtMiBtcy0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYmFkZ2UgYmFkZ2UtbGlnaHQtZGVmYXVsdFwiPjxzdmcgY2xhc3M9XCJtZS0yXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIxMlwiIHZpZXdCb3g9XCIwIDAgMTIgMTJcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF8xNDUwOF8xODU4MylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMi41IDEwLjVIOS41QzEwLjA1MjMgMTAuNSAxMC41IDEwLjA1MjMgMTAuNSA5LjVWMi41QzEwLjUgMS45NDc3MiAxMC4wNTIzIDEuNSA5LjUgMS41SDIuNUMxLjk0NzcyIDEuNSAxLjUgMS45NDc3MiAxLjUgMi41VjkuNUMxLjUgMTAuMDUyMyAxLjk0NzcyIDEwLjUgMi41IDEwLjVaTTIuNSAxMC41TDggNUwxMC41IDcuNU01IDQuMjVDNSA0LjY2NDIxIDQuNjY0MjEgNSA0LjI1IDVDMy44MzU3OSA1IDMuNSA0LjY2NDIxIDMuNSA0LjI1QzMuNSAzLjgzNTc5IDMuODM1NzkgMy41IDQuMjUgMy41QzQuNjY0MjEgMy41IDUgMy44MzU3OSA1IDQuMjVaXCIgc3Ryb2tlPVwiIzY2NzA4NVwiIHN0cm9rZS13aWR0aD1cIjEuMVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMTQ1MDhfMTg1ODNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIxMlwiIGZpbGw9XCJ3aGl0ZVwiLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz57e2l0ZW0/LmNvdW50fX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkaXZpZGVyXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IG5nYkFjY29yZGlvbkNvbGxhcHNlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBuZ2JBY2NvcmRpb25Cb2R5IGNsYXNzPVwicHktMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImgtYXV0b1wiIChkcmFnb3Zlcik9XCJhbGxvd0Ryb3AoJGV2ZW50KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMiBpdGVtXCIgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpdGVtXCIgKm5nRm9yPVwibGV0IG9iaiBvZiBpdGVtPy52YWx1ZVwiID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgZHJhZ2dhYmxlPVwidHJ1ZVwiIChkcmFnc3RhcnQpPVwiZHJhZygkZXZlbnQpXCIgaWQ9XCJ7e29iai5pbWdfaWR9fVwiIG5hbWU9XCJ7e2l0ZW0udHlwZX19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJteS0zIG14LTIgaW1nXCIgW3NyY109XCJvYmouaW1nX3BhdGhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1jZW50ZXIgbS0wIGZzLTcgZnctYm9sZFwiPnt7b2JqLmltZ19uYW1lfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IG5nYkFjY29yZGlvbj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtNlwiIG5nYkFjY29yZGlvbkl0ZW0gW2NvbGxhcHNlZF09XCIhKCFqdW5rY291bnQgJiYgIWVtcGxveWVlY291bnQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgbmdiQWNjb3JkaW9uSGVhZGVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cIm1haW5oZWFkaW5nXCIgbmdiQWNjb3JkaW9uQnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaXF1ZSBDdXN0b21lciAgPHNwYW4gY2xhc3M9XCJzdWItdGV4dCBtdC0yIG1zLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJiYWRnZSBiYWRnZS1saWdodC1kZWZhdWx0XCI+PHN2ZyBjbGFzcz1cIm1lLTJcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCIgdmlld0JveD1cIjAgMCAxMiAxMlwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzE1ODAwXzM5MTEpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTguNSAxMC41VjkuNUM4LjUgOC45Njk1NyA4LjI4OTI5IDguNDYwODYgNy45MTQyMSA4LjA4NTc5QzcuNTM5MTQgNy43MTA3MSA3LjAzMDQzIDcuNSA2LjUgNy41SDIuNUMxLjk2OTU3IDcuNSAxLjQ2MDg2IDcuNzEwNzEgMS4wODU3OSA4LjA4NTc5QzAuNzEwNzE0IDguNDYwODYgMC41IDguOTY5NTcgMC41IDkuNVYxMC41TTExLjUgMTAuNVY5LjVDMTEuNDk5NyA5LjA1Njg2IDExLjM1MjIgOC42MjYzOSAxMS4wODA3IDguMjc2MTZDMTAuODA5MiA3LjkyNTkzIDEwLjQyOTEgNy42NzU3OCAxMCA3LjU2NU04IDEuNTY1QzguNDMwMjEgMS42NzUxNSA4LjgxMTUyIDEuOTI1MzUgOS4wODM4MiAyLjI3NjE2QzkuMzU2MTIgMi42MjY5NiA5LjUwMzkyIDMuMDU4NDEgOS41MDM5MiAzLjUwMjVDOS41MDM5MiAzLjk0NjU5IDkuMzU2MTIgNC4zNzgwNCA5LjA4MzgyIDQuNzI4ODRDOC44MTE1MiA1LjA3OTY1IDguNDMwMjEgNS4zMjk4NSA4IDUuNDRNNi41IDMuNUM2LjUgNC42MDQ1NyA1LjYwNDU3IDUuNSA0LjUgNS41QzMuMzk1NDMgNS41IDIuNSA0LjYwNDU3IDIuNSAzLjVDMi41IDIuMzk1NDMgMy4zOTU0MyAxLjUgNC41IDEuNUM1LjYwNDU3IDEuNSA2LjUgMi4zOTU0MyA2LjUgMy41WlwiIHN0cm9rZT1cIiM2NjcwODVcIiBzdHJva2Utd2lkdGg9XCIxLjFcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzE1ODAwXzM5MTFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIxMlwiIGZpbGw9XCJ3aGl0ZVwiLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz4ge3tjdXN0b21lcmNvdW50fX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkaXZpZGVyXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IG5nYkFjY29yZGlvbkNvbGxhcHNlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBuZ2JBY2NvcmRpb25Cb2R5IGNsYXNzPVwicHktMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoLTUwMFwiIChkcmFnb3Zlcik9XCJhbGxvd0Ryb3AoJGV2ZW50KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJyZXNldEdyb3VwTnVtYmVyKCkgPT09IG51bGxcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBvYmogb2YgYXVkaXRtYXBwaW5nZGF0YTtsZXQgaT1pbmRleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwib2JqPy5jb3VudCA9PT0gMVwiIGNsYXNzPVwiaXRlbVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBpbWcgb2Ygb2JqPy5tYXBwZWRpZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIGRyYWdnYWJsZT1cInRydWVcIiBuYW1lPVwie3tvYmouaW1nX2lkfX1cIiAoZHJhZ3N0YXJ0KT1cImRyYWcoJGV2ZW50KVwiIChjbGljayk9XCJ0b2dnbGVJbWFnZShpbWc/LmltZ19uYW1lIClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cInt7aW1nLmltZ19pZH19XCIgY2xhc3M9XCJteS0zIG14LTIgaW1nXCIgW3NyY109XCJpbWcuaW1nX3BhdGhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtY2VudGVyIG0tMCBmcy03IGZ3LWJvbGRcIj57e2ltZy5pbWdfbmFtZX19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPHNwYW4gKm5nSWY9XCJvYmo/LmRlbW9ncmFwaGljICE9PSAnZCdcIiBjbGFzcz1cIm5vdGlmeS1iYWRnZTIgdy0yNXB4IGgtMjVweCBjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJ0b2dnbGVJbWFnZShpbWc/LmltZ19uYW1lIClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIm9iaj8uZGVtb2dyYXBoaWMgPT09ICdkJ1wiIGNsYXNzPVwibm90aWZ5LWJhZGdlXCIgKGNsaWNrKT1cInRvZ2dsZUltYWdlKGltZz8uaW1nX25hbWUgKVwiPjxpIGNsYXNzPVwiZmEgZmEtY2hlY2tcIiBhcmlhLWhpZGRlbj1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJmb250LXNpemU6MTVweDtjb2xvcjojMDBBM0ZGXCI+PC9pPjwvc3Bhbj4gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBjbGFzcz1cIm10LTVcIiAqbmdGb3I9XCJsZXQgb2JqIG9mIGF1ZGl0bWFwcGluZ2RhdGE7bGV0IGk9aW5kZXhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIm9iaj8uY291bnQgPiAxXCIgY2xhc3M9XCJjYXJkLWxhYmVsIG10LTNcIj5Hcm91cCB7eyBnZXRHcm91cE51bWJlcihvYmopIH19IDxzcGFuIGNsYXNzPVwic3ViLXRleHQgbXQtMyBtcy0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImJhZGdlIGJhZGdlLWxpZ2h0LWRlZmF1bHRcIj48c3ZnIGNsYXNzPVwibWUtMlwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTJcIiB2aWV3Qm94PVwiMCAwIDEyIDEyXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzE0NTA4XzE4NTgzKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMi41IDEwLjVIOS41QzEwLjA1MjMgMTAuNSAxMC41IDEwLjA1MjMgMTAuNSA5LjVWMi41QzEwLjUgMS45NDc3MiAxMC4wNTIzIDEuNSA5LjUgMS41SDIuNUMxLjk0NzcyIDEuNSAxLjUgMS45NDc3MiAxLjUgMi41VjkuNUMxLjUgMTAuMDUyMyAxLjk0NzcyIDEwLjUgMi41IDEwLjVaTTIuNSAxMC41TDggNUwxMC41IDcuNU01IDQuMjVDNSA0LjY2NDIxIDQuNjY0MjEgNSA0LjI1IDVDMy44MzU3OSA1IDMuNSA0LjY2NDIxIDMuNSA0LjI1QzMuNSAzLjgzNTc5IDMuODM1NzkgMy41IDQuMjUgMy41QzQuNjY0MjEgMy41IDUgMy44MzU3OSA1IDQuMjVaXCIgc3Ryb2tlPVwiIzY2NzA4NVwiIHN0cm9rZS13aWR0aD1cIjEuMVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMTQ1MDhfMTg1ODNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTJcIiBmaWxsPVwid2hpdGVcIi8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+e3tvYmouY291bnR9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4gXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxzcGFuICpuZ0lmPVwib2JqPy5kZW1vZ3JhcGhpYyAhPT0gJ2QnXCIgY2xhc3M9XCJraWQtYmFkZ2UgY3Vyc29yLXBvaW50ZXIgbXMtMyBtZS0zXCIgc3R5bGU9XCJwYWRkaW5nOjJweCAxMC41cHggIWltcG9ydGFudFwiIChjbGljayk9XCJ0b2dnbGVJbWFnZShvYmo/LmltZ19uYW1lKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJvYmo/LmRlbW9ncmFwaGljID09PSAnZCdcIiBjbGFzcz1cImtpZC1iYWRnZSBjdXJzb3ItcG9pbnRlciBtcy0zIG1lLTNcIiAoY2xpY2spPVwidG9nZ2xlSW1hZ2Uob2JqPy5pbWdfbmFtZSlcIj48aSBjbGFzcz1cImZhIGZhLWNoZWNrXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cImZvbnQtc2l6ZToxNXB4O2NvbG9yOiMwMEEzRkZcIj48L2k+PC9zcGFuPiBNYXJrIGFzIGRlbW9ncmFwaGljIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIm9iai5jb3VudCA+IDFcIiBjbGFzcz1cIml0ZW1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgaW1nIG9mIG9iaj8ubWFwcGVkaWRcIiBjbGFzcz1cIml0ZW1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBkcmFnZ2FibGU9XCJ0cnVlXCIgbmFtZT1cInt7b2JqLmltZ19pZH19XCIgKGRyYWdzdGFydCk9XCJkcmFnKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cInt7aW1nLmltZ19pZH19XCIgY2xhc3M9XCJteS0zIG14LTIgaW1nXCIgW3NyY109XCJpbWcuaW1nX3BhdGhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtY2VudGVyIG0tMCBmcy03IGZ3LWJvbGRcIj57e2ltZy5pbWdfbmFtZX19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgKm5nSWY9XCIhYXVkaXRMb2FkaW5nXCIgY2xhc3M9XCJjb2wtbWQtNVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkIG10LTVcIj5cclxuICAgICAgICAgICAgPCEtLSAoY2hhbmdlKT1cImltYWdlYXJyYXkoKVwiIC0tPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IGgtMTAwMHB4XCIgKGRyb3ApPVwiZHJvcGZvcnJldGFnKCRldmVudClcIiAoZHJhZ292ZXIpPVwiYWxsb3dEcm9wKCRldmVudClcIiA+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1sYWJlbCBmdy1ib2xkIHRleHQtZGFyayBtYi01XCI+SW1hZ2VzIGZvciBSZXRhZ2dpbmc8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTIgaXRlbVwiID5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpdGVtXCIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgcmV0YWdpbWFnZVwiPlxyXG4gICAgICAgICAgICAgICAgPGltZyAgW3NyY109XCJpdGVtLmltZ19wYXRoXCIgY2xhc3M9XCJteS0yIG14LTQgaW1nLXJldFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiAgY2xhc3M9XCJ0ZXh0LWNlbnRlciBtLTAgZnMtNyBmdy1ib2xkXCI+e3tpdGVtLmltZ19uYW1lfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibm90aWZ5LWJhZGdlMSBjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJyZW1vdmVpbWFnZShpdGVtKVwiPjxpIGNsYXNzPVwiZmEgZmEtY2xvc2VcIiBhcmlhLWhpZGRlbj1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgIHN0eWxlPVwiZm9udC1zaXplOjE1cHg7Y29sb3I6IzAwQTNGRlwiPjwvaT5cclxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG48L2Rpdj5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjY29uZmlybURyYWZ0IGxldC1tb2RhbD5cclxuICAgIDxkaXYgY2xhc3M9XCJjYXJkIGgtYXV0byBwLTEwXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyIGQtZ3JpZCBwLTAgYm9yZGVyLTBcIj5cclxuICAgICAgICAgICAgPHNwYW4+PGltZyBzcmM9XCIuL2Fzc2V0cy90YW5nby9JbWFnZXMvU3VjY2Vzc3RvYXN0LnBuZ1wiPjwvc3Bhbj5cclxuICAgICAgICAgICAgPCEtLSA8c3BhbiAqbmdJZj1cImdldEJhY2tcIj48aW1nIHNyYz1cIi4vYXNzZXRzL3RhbmdvL2N1c3RvbXBvcHVwLUljb25zL2Rhbmdlci1pY29uLnN2Z1wiPjwvc3Bhbj4gIC0tPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1sYWJlbCBtdC01XCI+RG8geW91IHdhbnQgdG8gc3VibWl0IHlvdXIgY2hhbmdlcyB3aXRob3V0IGRlbW9ncmFwaGljPzwvZGl2PlxyXG4gICAgICAgICAgICA8IS0tIDxkaXYgKm5nSWY9XCJnZXRCYWNrXCIgY2xhc3M9XCJjYXJkLWxhYmVsIG10LTVcIj5VbnNhdmVkIENoYW5nZXM8L2Rpdj4gLS0+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keSBwLTBcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInctMTAwIGQtZmxleCBtdC0xMFwiPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tb3V0bGluZSB3LTUwIG1lLTIgZnctYm9sZFwiIChjbGljayk9XCJtb2RhbC5jbG9zZSgnaXNEZW5pZWQnKVwiPkNhbmNlbDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBzYXZlYnRuIHctNTAgbXMtMlwiIChjbGljayk9XCJtb2RhbC5jbG9zZSgnaXNDb25maXJtZWQnKVwiPk9rPC9idXR0b24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcbiJdfQ==
|
|
519
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXVkaXQtbWFwcGluZy1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RhbmdvLW1hbmFnZS10aWNrZXRzL3NyYy9saWIvY29tcG9uZW50cy9hdWRpdC1tYXBwaW5nLWxpc3QvYXVkaXQtbWFwcGluZy1saXN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RhbmdvLW1hbmFnZS10aWNrZXRzL3NyYy9saWIvY29tcG9uZW50cy9hdWRpdC1tYXBwaW5nLWxpc3QvYXVkaXQtbWFwcGluZy1saXN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWtFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUtySCxPQUFPLEtBQUssUUFBUSxNQUFNLFdBQVcsQ0FBQztBQUN0QyxrR0FBa0c7QUFDbEcsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBRXhELE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLG9EQUFvRCxDQUFDOzs7Ozs7OztBQU8vRixNQUFNLE9BQU8seUJBQXlCO0lBaUNqQjtJQUFnQztJQUF3QjtJQUFvQztJQUE4QjtJQUNuSTtJQUErQjtJQWhDekMsU0FBUyxHQUFHLENBQUMsQ0FBQztJQUNkLFFBQVEsR0FBRyxDQUFDLENBQUM7SUFDYixJQUFJLEdBQUcsQ0FBQyxDQUFDO0lBQ1QsUUFBUSxHQUFHLENBQUMsQ0FBQztJQUNiLFlBQVksR0FBUSxDQUFDLENBQUM7SUFDdEIsU0FBUyxHQUFZLEtBQUssQ0FBQztJQUMzQixZQUFZLEdBQVksS0FBSyxDQUFDO0lBQzlCLFVBQVUsR0FBWSxLQUFLLENBQUM7SUFDNUIsU0FBUyxHQUFRLEVBQUUsQ0FBQTtJQUNuQixVQUFVLEdBQVEsRUFBRSxDQUFBO0lBQ3BCLFdBQVcsR0FBWSxJQUFJLENBQUM7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QixJQUFJLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBUyxFQUFFLEVBQUU7WUFDdEMsSUFBSSxJQUFJLENBQUMsUUFBUSxJQUFJLFFBQVEsRUFBRTtnQkFDN0IsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7b0JBQzVCLElBQUksQ0FBQyxXQUFXLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxFQUFFLENBQUE7aUJBQzFFO3FCQUFNO29CQUNMLElBQUksQ0FBQyxPQUFPLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFBO2lCQUM3QjthQUNGO1FBQ0gsQ0FBQyxDQUFDLENBQUE7UUFDRixtR0FBbUc7UUFDbkcsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUN6RCxNQUFNLGNBQWMsR0FBRyxRQUFRLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3JELGNBQWMsQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLGNBQWMsQ0FBQyxDQUFBO0lBQ2pELENBQUM7d0dBbmlCVSx5QkFBeUI7NEZBQXpCLHlCQUF5QixpTUNoQnRDLGsxb0JBME9BOzs0RkQxTmEseUJBQXlCO2tCQUxyQyxTQUFTOytCQUNFLHdCQUF3QjtnUEFtQ1AsWUFBWTtzQkFBdEMsU0FBUzt1QkFBQyxjQUFjIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIE9uQ2hhbmdlcywgU2ltcGxlQ2hhbmdlcywgT25EZXN0cm95LCBDaGFuZ2VEZXRlY3RvclJlZiwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBOZ2JNb2RhbCB9IGZyb20gJ0BuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwJztcclxuaW1wb3J0IHsgVG9hc3RTZXJ2aWNlIH0gZnJvbSAndGFuZ28tYXBwLXVpLXNoYXJlZCc7XHJcbmltcG9ydCB7IEF1ZGl0U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2F1ZGl0LnNlcnZpY2UnO1xyXG5pbXBvcnQgKiBhcyBMWlN0cmluZyBmcm9tICdsei1zdHJpbmcnO1xyXG4vLyBpbXBvcnQgeyBBdWRpdFJlcG9ydFBvcHVwQ29tcG9uZW50IH0gZnJvbSAnLi4vYXVkaXQtcmVwb3J0LXBvcHVwL2F1ZGl0LXJlcG9ydC1wb3B1cC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBTdWJqZWN0LCB0YWtlVW50aWwsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBUaW1lclNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy90aW1lci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQXVkaXRSZXBvcnRQb3B1cENvbXBvbmVudCB9IGZyb20gJy4uL2F1ZGl0LXJlcG9ydC1wb3B1cC9hdWRpdC1yZXBvcnQtcG9wdXAuY29tcG9uZW50JztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLWF1ZGl0LW1hcHBpbmctbGlzdCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2F1ZGl0LW1hcHBpbmctbGlzdC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL2F1ZGl0LW1hcHBpbmctbGlzdC5jb21wb25lbnQuc2NzcydcclxufSlcclxuZXhwb3J0IGNsYXNzIEF1ZGl0TWFwcGluZ0xpc3RDb21wb25lbnQge1xyXG5cclxuICB0b3RhbGZpbGUgPSAwO1xyXG4gIGN1c3RvbWVyID0gMDtcclxuICBqdW5rID0gMDtcclxuICBlbXBsb3llZSA9IDA7XHJcbiAgY3VycmVudFZhbHVlOiBhbnkgPSAwO1xyXG4gIHNob3d2YWx1ZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHJldGdnaW5ncGFnZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHNob3d2YWx1ZTE6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBqdW5raW1hZ2U6IGFueSA9IFtdXHJcbiAgcmV0YWdpbWFnZTogYW55ID0gW11cclxuICBzdWJtaXR2YWx1ZTogYm9vbGVhbiA9IHRydWU7XHJcbiAgYXVkaXRtYXBwaW5nZGF0YTogYW55O1xyXG4gIGN1c3RvbWVyY291bnQ6IGFueTtcclxuICBhdWRpdExvYWRpbmcgPSB0cnVlO1xyXG4gIHNlbGVjdGVkVHlwZTogYW55O1xyXG5cclxuICBqdW5rY291bnQ6IGFueSA9IDA7XHJcbiAgZW1wbG95ZWVjb3VudDogYW55ID0gMDtcclxuICBlbXBsb3llaW1hZ2U6IGFueSA9IFtdO1xyXG4gIGZpbGVkZXRhaWxzOiBhbnk7XHJcbiAgLy8gZGVtb2dyYXBoaWM6IGFueTtcclxuICBzdWJtaXR0ZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBkdW1teW1hcHBpbmc6IGFueTtcclxuICBwcml2YXRlIHJlYWRvbmx5IGRlc3Ryb3kkID0gbmV3IFN1YmplY3QoKTtcclxuICB0aW1lUGFzc2VkOiBudW1iZXIgPSAwO1xyXG4gIHN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uIHwgbnVsbCA9IG51bGw7XHJcbiAgZm9ybWF0dGVkVGltZTogc3RyaW5nID0gJzAwOjAwOjAwJztcclxuICBjb3VudDogYW55O1xyXG4gIGNhdGVnb3J5OiBhbnkgPSBbXVxyXG4gIEBWaWV3Q2hpbGQoJ2NvbmZpcm1EcmFmdCcpIGNvbmZpcm1EcmFmdDogYW55O1xyXG5cclxuICBjb25zdHJ1Y3RvcihwdWJsaWMgbW9kYWxTZXJ2aWNlOiBOZ2JNb2RhbCwgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlciwgcHJpdmF0ZSBhdWRpdFNlcnZpY2U6IEF1ZGl0U2VydmljZSwgcHJpdmF0ZSB0b2FzdHI6IFRvYXN0U2VydmljZSwgcHJpdmF0ZSByb3V0ZTogQWN0aXZhdGVkUm91dGUsXHJcbiAgICBwcml2YXRlIGNkOiBDaGFuZ2VEZXRlY3RvclJlZiwgcHJpdmF0ZSB0aW1lclNlcnZpY2U6IFRpbWVyU2VydmljZSkge1xyXG4gICAgdGhpcy5zZWxlY3RlZFR5cGUgPSB0aGlzLnJvdXRlLnNuYXBzaG90LnBhcmFtTWFwLmdldCgndHlwZScpXHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuZ2V0QXVkaXRDb25maWcoKVxyXG4gICAgLy8gdGhpcy5pbml0aWFsX2RhdGFfbG9hZGluZygpO1xyXG4gICAgaWYgKHRoaXMucmV0YWdpbWFnZS5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMuc2hvd3ZhbHVlID0gdHJ1ZVxyXG4gICAgfVxyXG4gICAgdGhpcy5zZXRUaW1lcigpO1xyXG4gIH1cclxuICBnZXRBdWRpdENvbmZpZygpIHtcclxuXHJcbiAgICBsZXQgZmlsZWRhdGEgPSBKU09OLnBhcnNlKHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oJ3RvdGFsZmlsZXMnKSB8fCAne30nKVxyXG4gICAgdGhpcy5hdWRpdFNlcnZpY2UuZ2V0QXVkaXRjb25maWcoZmlsZWRhdGE/LmZpbGVkZXRhaWxzPy5jbGllbnRJZCkucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChyZXMgJiYgcmVzPy5jb2RlID09IDIwMCkge1xyXG4gICAgICAgICAgdGhpcy5jYXRlZ29yeSA9IHJlcy5kYXRhLmZvb3RmYWxsRGlyZWN0b3J5Q29uZmlncy50YWdnaW5nTGltaXRhdGlvblxyXG4gICAgICAgICAgLy8gdGhpcy5pbml0aWFsX2RhdGFfbG9hZGluZygpXHJcbiAgICAgICAgICAvLyB0aGlzLnNhdmVEcmFmdGltZygpO1xyXG4gICAgICAgICAgdGhpcy5nZXRtYXBwaW5nZGF0YSgpXHJcblxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSlcclxuICB9XHJcbiAgc2V0VGltZXIoKSB7XHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbiA9IHRoaXMudGltZXJTZXJ2aWNlLmdldFRpbWVQYXNzZWQoKS5zdWJzY3JpYmUodGltZSA9PiB7XHJcbiAgICAgIHRoaXMudGltZVBhc3NlZCA9IHRpbWU7XHJcbiAgICAgIHRoaXMuZm9ybWF0dGVkVGltZSA9IHRoaXMudGltZXJTZXJ2aWNlLmZvcm1hdFRpbWUodGltZSk7XHJcbiAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfSk7XHJcbiAgICB0aGlzLnRpbWVyU2VydmljZS5zdGFydFRpbWVyKCk7XHJcbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZW1vdmUnLCB0aGlzLmhhbmRsZUdsb2JhbE1vdXNlRXZlbnQpO1xyXG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCB0aGlzLmhhbmRsZUdsb2JhbE1vdXNlRXZlbnQpO1xyXG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2VlbnRlcicsIHRoaXMuaGFuZGxlR2xvYmFsTW91c2VFdmVudCk7XHJcbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCB0aGlzLmhhbmRsZUdsb2JhbE1vdXNlRXZlbnQpO1xyXG5cclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5kZXN0cm95JC5uZXh0KHRydWUpO1xyXG4gICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xyXG4gICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgdGhpcy5oYW5kbGVHbG9iYWxNb3VzZUV2ZW50KTtcclxuICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgdGhpcy5oYW5kbGVHbG9iYWxNb3VzZUV2ZW50KTtcclxuICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNlZW50ZXInLCB0aGlzLmhhbmRsZUdsb2JhbE1vdXNlRXZlbnQpO1xyXG4gICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgdGhpcy5oYW5kbGVHbG9iYWxNb3VzZUV2ZW50KTtcclxuICAgIHRoaXMudGltZXJTZXJ2aWNlLmNsZWFyVGltZXIoKVxyXG4gIH1cclxuXHJcbiAgaGFuZGxlR2xvYmFsTW91c2VFdmVudCA9ICgpOiB2b2lkID0+IHtcclxuICAgIHRoaXMudGltZXJTZXJ2aWNlLnN0YXJ0VGltZXIoKTtcclxuICB9XHJcblxyXG4gIGluaXRpYWxfZGF0YV9sb2FkaW5nKCkge1xyXG4gICAgaWYgKCdhdWRpdCcgaW4gc2Vzc2lvblN0b3JhZ2UpIHtcclxuICAgICAgbGV0IHN0cmluZ2lmeWRhdGEgPSBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKCdhdWRpdCcpIHx8ICd7fSdcclxuICAgICAgY29uc3QgZGVjb21wcmVzc2VkRGF0YSA9IExaU3RyaW5nLmRlY29tcHJlc3Moc3RyaW5naWZ5ZGF0YSk7XHJcbiAgICAgIHZhciBhdWRpdGRhdGEgPSBKU09OLnBhcnNlKGRlY29tcHJlc3NlZERhdGEgfHwgJ3t9JylcclxuXHJcbiAgICAgIGlmIChhdWRpdGRhdGEubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIHRoaXMuYXVkaXRtYXBwaW5nZGF0YSA9IGF1ZGl0ZGF0YTsgICAgICAgXHJcbiAgICAgICAgdGhpcy5jdXN0b21lcmNvdW50ID0gdGhpcy5hdWRpdG1hcHBpbmdkYXRhLmxlbmd0aFxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuYXVkaXRtYXBwaW5nZGF0YSA9IFtdXHJcbiAgICAgICAgdGhpcy5jdXN0b21lcmNvdW50ID0gMFxyXG4gICAgICB9XHJcbiAgICAgIC8vIHRoaXMuZGVtb2dyYXBoaWMgPSB0aGlzLmF1ZGl0bWFwcGluZ2RhdGEuZmlsdGVyKChkYXRhOiBhbnkpID0+IGRhdGEuZGVtb2dyYXBoaWMgPT09ICdkJykubGVuZ3RoO1xyXG4gICAgfVxyXG4gICAgdGhpcy5jYXRlZ29yeS5tYXAoKGRhdGE6IGFueSkgPT4ge1xyXG4gICAgICB2YXIgY291bnQgPSBKU09OLnBhcnNlKHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oZGF0YT8udHlwZSkgfHwgJ3t9JylcclxuICAgICAgZGF0YS5jb3VudCA9IGNvdW50Py5sZW5ndGhcclxuICAgIH0pXHJcbiAgICBpZiAoJ3JldGFnJyBpbiBzZXNzaW9uU3RvcmFnZSkge1xyXG4gICAgICB2YXIgcmV0YWdkYXRhID0gSlNPTi5wYXJzZShzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKCdyZXRhZycpIHx8ICd7fScpXHJcbiAgICAgIGlmIChyZXRhZ2RhdGEubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIHRoaXMucmV0YWdpbWFnZSA9IHJldGFnZGF0YTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnJldGFnaW1hZ2UgPSBbXTtcclxuICAgICAgICBpZiAodGhpcy5yZXRhZ2ltYWdlLmxlbmd0aCA9PSAwKSB7XHJcbiAgICAgICAgICB0aGlzLnNob3d2YWx1ZSA9IGZhbHNlXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAoJ3RvdGFsZmlsZXMnIGluIHNlc3Npb25TdG9yYWdlKSB7XHJcbiAgICAgIHZhciBmaWxlcyA9IEpTT04ucGFyc2Uoc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSgndG90YWxmaWxlcycpIHx8ICd7fScpXHJcbiAgICAgIHRoaXMudG90YWxmaWxlID0gZmlsZXM/LnRvdGFsZmlsZXNcclxuICAgICAgdGhpcy5maWxlZGV0YWlscyA9IGZpbGVzPy5maWxlZGV0YWlsc1xyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIGdldG1hcHBpbmdkYXRhKCkge1xyXG4gICAgdmFyIHRvdGFsZmlsZTogYW55ID0gSlNPTi5wYXJzZShzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKCd0b3RhbGZpbGVzJykgfHwgJ3t9Jyk7XHJcbiAgICB0aGlzLmZpbGVkZXRhaWxzID0gdG90YWxmaWxlPy5maWxlZGV0YWlsc1xyXG4gICAgbGV0IHRpY2tldHR5cGUgPSBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKCd0aWNrZXRUeXBlJylcclxuICAgIHZhciBwYXlsb2FkOiBhbnkgPSB7XHJcbiAgICAgIHN0b3JlSWQ6IHRvdGFsZmlsZT8uZmlsZWRldGFpbHM/LnN0b3JlSWQsXHJcbiAgICAgIGZpbGVEYXRlOiB0b3RhbGZpbGU/LmZpbGVkZXRhaWxzPy5EYXRlLFxyXG4gICAgICBhdWRpdElkOiB0b3RhbGZpbGU/LmF1ZGl0SWQsXHJcbiAgICAgIGNvdW50OiB0b3RhbGZpbGU/LnRvdGFsZmlsZXMsXHJcbiAgICAgIHRpY2tldHR5cGU6IHRpY2tldHR5cGVcclxuICAgIH1cclxuICAgIHRoaXMuYXVkaXRTZXJ2aWNlLmdldEF1ZGl0bWFwcGluZ2xpc3QocGF5bG9hZCkucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChyZXMgJiYgcmVzPy5jb2RlID09IDIwMCkge1xyXG4gICAgICAgICAgdGhpcy5hdWRpdExvYWRpbmcgPSBmYWxzZTtcclxuXHJcblxyXG5cclxuXHJcbiAgICAgICAgICB0aGlzLmNhdGVnb3J5Lm1hcCgoZGF0YTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIGxldCBmaWx0ZXJEYXRhID0gcmVzPy5kYXRhPy5yZXN1bHQ/LmRyYWZ0ZWREYXRhPy5maWx0ZXIoKHg6IGFueSkgPT4geC50eXBlID09PSBkYXRhLnR5cGUpXHJcbiAgICAgICAgICAgIGRhdGEudmFsdWUgPSBmaWx0ZXJEYXRhWzBdPy52YWx1ZSAmJiBmaWx0ZXJEYXRhWzBdPy52YWx1ZS5sZW5ndGggPiAwID8gZmlsdGVyRGF0YVswXT8udmFsdWUgOiBbXVxyXG4gICAgICAgICAgICBkYXRhLmNvdW50ID0gZGF0YT8udmFsdWU/Lmxlbmd0aFxyXG4gICAgICAgICAgICBzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKGRhdGE/LnR5cGUsIEpTT04uc3RyaW5naWZ5KGRhdGE/LnZhbHVlICYmIGRhdGE/LnZhbHVlLmxlbmd0aCA+IDAgPyBkYXRhPy52YWx1ZSA6IFtdKSlcclxuXHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICAgbGV0IGN1c3RvbWVyRGF0YSA9IHJlcz8uZGF0YT8ucmVzdWx0Py5kcmFmdGVkRGF0YT8uZmlsdGVyKCh4OiBhbnkpID0+IHgudHlwZSA9PT0gJ2N1c3RvbWVyJylcclxuXHJcbiAgICAgICAgICB0aGlzLmF1ZGl0bWFwcGluZ2RhdGEgPSBjdXN0b21lckRhdGFbMF0/LnZhbHVlXHJcbiAgICAgICAgICBjb25zdCBqc29uU3RyaW5nID0gSlNPTi5zdHJpbmdpZnkoY3VzdG9tZXJEYXRhWzBdPy52YWx1ZSk7XHJcbiAgICAgICAgICBjb25zdCBjb21wcmVzc2VkRGF0YSA9IExaU3RyaW5nLmNvbXByZXNzKGpzb25TdHJpbmcpO1xyXG4gICAgICAgICAgc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbSgnYXVkaXQnLCBjb21wcmVzc2VkRGF0YSlcclxuXHJcblxyXG5cclxuICAgICAgICAgIHZhciByZXRhZ2lhbWdlID0gSlNPTi5wYXJzZShzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKCdyZXRhZycpIHx8ICdbXScpXHJcbiAgICAgICAgICBpZiAocmV0YWdpYW1nZS5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIGxldCBzdHJpbmdpZnlkYXRhID0gc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSgnYXVkaXQnKSB8fCAne30nXHJcbiAgICAgICAgICAgIGNvbnN0IGRlY29tcHJlc3NlZERhdGEgPSBMWlN0cmluZy5kZWNvbXByZXNzKHN0cmluZ2lmeWRhdGEpO1xyXG4gICAgICAgICAgICB2YXIgY3VzdG9tZXIgPSBKU09OLnBhcnNlKGRlY29tcHJlc3NlZERhdGEgfHwgJ3t9JylcclxuICAgICAgICAgICAgY3VzdG9tZXIgPSBbLi4uY3VzdG9tZXIsIC4uLnJldGFnaWFtZ2VdXHJcbiAgICAgICAgICAgIGNvbnN0IGpzb25TdHJpbmcgPSBKU09OLnN0cmluZ2lmeShjdXN0b21lcik7XHJcbiAgICAgICAgICAgIGNvbnN0IGNvbXByZXNzZWREYXRhID0gTFpTdHJpbmcuY29tcHJlc3MoanNvblN0cmluZyk7XHJcbiAgICAgICAgICAgIHNlc3Npb25TdG9yYWdlLnNldEl0ZW0oJ2F1ZGl0JywgY29tcHJlc3NlZERhdGEpXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBzZXNzaW9uU3RvcmFnZS5yZW1vdmVJdGVtKCdyZXRhZycpXHJcbiAgICAgICAgICB0aGlzLnJldGFnaW1hZ2UgPSBbXVxyXG4gICAgICAgICAgdGhpcy5pbml0aWFsX2RhdGFfbG9hZGluZygpXHJcbiAgICAgICAgICBpZiAodGhpcy5yZXRhZ2ltYWdlLmxlbmd0aCA9PSAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2hvd3ZhbHVlID0gZmFsc2VcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0sXHJcbiAgICAgIGVycm9yOiAoZXJyOiBhbnkpID0+IHtcclxuXHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICByZWRpcmVhY3Q6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgYmFja1RvVGFnZ2luZygpIHtcclxuICAgIHRoaXMucmVkaXJlYWN0ID0gdHJ1ZTtcclxuICAgIHRoaXMuc2F2ZURyYWZ0aW1nKCk7XHJcbiAgfVxyXG5cclxuICBjaGFuZ2VzZGF0YSgpIHtcclxuICAgIHZhciB1c2VyID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgndXNlci1pbmZvJykgfHwgJ3t9JylcclxuICAgIHZhciB0b3RhbGZpbGU6IGFueSA9IEpTT04ucGFyc2Uoc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSgndG90YWxmaWxlcycpIHx8ICd7fScpO1xyXG4gICAgdmFyIHBheWxvYWQ6IGFueSA9IHtcclxuICAgICAgc3RvcmVJZDogdG90YWxmaWxlPy5maWxlZGV0YWlscz8uc3RvcmVJZCxcclxuICAgICAgZmlsZURhdGU6IHRvdGFsZmlsZT8uZmlsZWRldGFpbHM/LkRhdGUsXHJcbiAgICAgIGF1ZGl0SWQ6IHRvdGFsZmlsZT8uYXVkaXRJZCxcclxuICAgICAgY291bnQ6IHRvdGFsZmlsZT8udG90YWxmaWxlc1xyXG4gICAgfVxyXG4gICAgdGhpcy5hdWRpdFNlcnZpY2UuZ2V0QXVkaXRtYXBwaW5nbGlzdChwYXlsb2FkKS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKHJlcyAmJiByZXM/LmNvZGUgPT0gMjAwKSB7XHJcbiAgICAgICAgICB0aGlzLmF1ZGl0TG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgc2Vzc2lvblN0b3JhZ2UucmVtb3ZlSXRlbSgncmV0YWcnKVxyXG4gICAgICAgICAgdGhpcy5yZXRhZ2ltYWdlID0gW11cclxuICAgICAgICAgIHRoaXMuY2F0ZWdvcnkubWFwKChkYXRhOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgbGV0IGZpbHRlckRhdGEgPSByZXM/LmRhdGE/LnJlc3VsdD8uZHJhZnRlZERhdGE/LmZpbHRlcigoeDogYW55KSA9PiB4LnR5cGUgPT09IGRhdGEudHlwZSlcclxuICAgICAgICAgICAgZGF0YS52YWx1ZSA9IGZpbHRlckRhdGFbMF0/LnZhbHVlICYmIGZpbHRlckRhdGFbMF0/LnZhbHVlLmxlbmd0aCA+IDAgPyBmaWx0ZXJEYXRhWzBdPy52YWx1ZSA6IFtdXHJcbiAgICAgICAgICAgIGRhdGEuY291bnQgPSBkYXRhPy52YWx1ZT8ubGVuZ3RoXHJcbiAgICAgICAgICAgIHNlc3Npb25TdG9yYWdlLnNldEl0ZW0oZGF0YT8udHlwZSwgSlNPTi5zdHJpbmdpZnkoZGF0YT8udmFsdWUgJiYgZGF0YT8udmFsdWUubGVuZ3RoID4gMCA/IGRhdGE/LnZhbHVlIDogW10pKVxyXG5cclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgICBsZXQgY3VzdG9tZXJEYXRhID0gcmVzPy5kYXRhPy5yZXN1bHQ/LmRyYWZ0ZWREYXRhPy5maWx0ZXIoKHg6IGFueSkgPT4geC50eXBlID09PSAnY3VzdG9tZXInKVxyXG5cclxuICAgICAgICAgIHRoaXMuYXVkaXRtYXBwaW5nZGF0YSA9IGN1c3RvbWVyRGF0YVswXT8udmFsdWVcclxuICAgICAgICAgIGNvbnN0IGpzb25TdHJpbmcgPSBKU09OLnN0cmluZ2lmeShjdXN0b21lckRhdGFbMF0/LnZhbHVlKTtcclxuICAgICAgICAgIGNvbnN0IGNvbXByZXNzZWREYXRhID0gTFpTdHJpbmcuY29tcHJlc3MoanNvblN0cmluZyk7XHJcbiAgICAgICAgICBzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKCdhdWRpdCcsIGNvbXByZXNzZWREYXRhKVxyXG4gICAgICAgICAgaWYgKHRoaXMucmV0YWdpbWFnZS5sZW5ndGggPT0gMCkge1xyXG4gICAgICAgICAgICB0aGlzLnNob3d2YWx1ZSA9IGZhbHNlXHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW1wiL21hbmFnZS90aWNrZXRzL2F1ZGl0XCJdKVxyXG4gICAgICAgIH1cclxuICAgICAgfSxcclxuICAgICAgZXJyb3I6IChlcnI6IGFueSkgPT4ge1xyXG5cclxuICAgICAgfVxyXG4gICAgfSlcclxuXHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICBpZiAoY2hhbmdlc1snYXVkaXRtYXBwaW5nZGF0YSddKSB7XHJcbiAgICAgIHRoaXMuZHVtbXltYXBwaW5nID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShjaGFuZ2VzWydhdWRpdG1hcHBpbmdkYXRhJ10uY3VycmVudFZhbHVlKSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhbGxvd0Ryb3AoZXY6IGFueSkge1xyXG4gICAgZXYucHJldmVudERlZmF1bHQoKTtcclxuICB9XHJcblxyXG4gIGRyYWcoZXY6IGFueSkge1xyXG4gICAgZXYuZGF0YVRyYW5zZmVyLnNldERhdGEoXCJ0ZXh0L3BsYWluXCIsIGV2LnRhcmdldC5pZCk7XHJcbiAgfVxyXG5cclxuICBkcm9wZm9ycmV0YWcoZXY6IGFueSkge1xyXG4gICAgZXYucHJldmVudERlZmF1bHQoKTtcclxuICAgIGNvbnN0IGRyYWdnZWRJbWFnZUlkID0gZXYuZGF0YVRyYW5zZmVyLmdldERhdGEoJ3RleHQvcGxhaW4nKTtcclxuICAgIGNvbnN0IGRyYWdnZWRJbWFnZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGRyYWdnZWRJbWFnZUlkKTtcclxuICAgIHRoaXMuc2hvd3ZhbHVlID0gdHJ1ZTtcclxuICAgIGNvbnN0IGh0bWx0YWcgPSBldi5kYXRhVHJhbnNmZXIuZ2V0RGF0YSgndGV4dC9odG1sJyk7XHJcbiAgICB2YXIgTmFtZSA9IGdldFRhZ05hbWVGcm9tSFRNTChodG1sdGFnKTtcclxuICAgIGNvbnNvbGUubG9nKFwi8J+agCB+IEF1ZGl0TWFwcGluZ0xpc3RDb21wb25lbnQgfiBkcm9wZm9ycmV0YWcgfiBOYW1lOlwiLCBOYW1lLCBkcmFnZ2VkSW1hZ2VJZCwgdGhpcy5jYXRlZ29yeS5maWx0ZXIoKGRhdGE6IGFueSkgPT4gZGF0YT8udHlwZSA9PT0gTmFtZSk/Lmxlbmd0aCA+IDApXHJcblxyXG4gICAgaWYgKE5hbWUgIT0gbnVsbCAmJiB0aGlzLmNhdGVnb3J5LmZpbHRlcigoZGF0YTogYW55KSA9PiBkYXRhPy50eXBlID09PSBOYW1lKT8ubGVuZ3RoID4gMCkge1xyXG5cclxuICAgICAgbGV0IGltYWdlRGF0YSA9IEpTT04ucGFyc2Uoc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbShOYW1lKSB8fCAne30nKVxyXG4gICAgICB2YXIgc3BsaWNlZHZhbHVlID0gaW1hZ2VEYXRhLnNwbGljZShpbWFnZURhdGEuZmluZEluZGV4KCh7IGltZ19pZCB9OiB7IGltZ19pZDogc3RyaW5nIH0pID0+IGltZ19pZCA9PSBkcmFnZ2VkSW1hZ2VJZCksIDEpO1xyXG5cclxuICAgICAgdGhpcy5jYXRlZ29yeS5tYXAoKGRhdGE6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChkYXRhPy50eXBlID09IE5hbWUpIHtcclxuICAgICAgICAgIGRhdGEudmFsdWUgPSBpbWFnZURhdGFcclxuICAgICAgICAgIGRhdGEuY291bnQgPSBpbWFnZURhdGEubGVuZ3RoXHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgfSlcclxuICAgICAgc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbShOYW1lLCBKU09OLnN0cmluZ2lmeShpbWFnZURhdGEpKVxyXG4gICAgICB2YXIgb2xkcmV0YWcgPSBKU09OLnBhcnNlKHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oJ3JldGFnJykgfHwgJ3t9JylcclxuICAgICAgdmFyIG5ld3RhZzogYW55ID0gW11cclxuICAgICAgc3BsaWNlZHZhbHVlWzBdLnNlbGVjdGVkID0gZmFsc2VcclxuICAgICAgY29uc29sZS5sb2coXCLwn5qAIH4gQXVkaXRNYXBwaW5nTGlzdENvbXBvbmVudCB+IGRyb3Bmb3JyZXRhZyB+IHNwbGljZWR2YWx1ZTpcIiwgc3BsaWNlZHZhbHVlKVxyXG4gICAgICBpZiAoTnVtYmVyKG9sZHJldGFnLmxlbmd0aCkgPiAwKSB7XHJcbiAgICAgICAgbmV3dGFnID0gWy4uLm9sZHJldGFnLCAuLi5zcGxpY2VkdmFsdWVdXHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgbmV3dGFnID0gc3BsaWNlZHZhbHVlXHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMucmV0YWdpbWFnZSA9IG5ld3RhZ1xyXG4gICAgICBzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKCdyZXRhZycsIEpTT04uc3RyaW5naWZ5KHRoaXMucmV0YWdpbWFnZSkpXHJcblxyXG5cclxuICAgICAgaWYgKE5hbWUgPT09ICdkdXBsaWNhdGUnKSB7XHJcbiAgICAgICAgdGhpcy5hdWRpdG1hcHBpbmdkYXRhLm1hcCgobWFpbkRhdGE6IGFueSkgPT4ge1xyXG4gICAgICAgICAgaWYgKG1haW5EYXRhLmNvdW50ID4gMSkge1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcIvCfmoAgfiBBdWRpdE1hcHBpbmdMaXN0Q29tcG9uZW50IH4gZHJvcGZvcnJldGFnIH4gbWFpbkRhdGE6XCIsIG1haW5EYXRhKVxyXG4gICAgICAgICAgICBtYWluRGF0YS5tYXBwZWRpZCA9IG1haW5EYXRhLm1hcHBlZGlkLmZpbHRlcigoZGF0YTogYW55KSA9PiBkYXRhLmltZ19pZCAhPSBkcmFnZ2VkSW1hZ2VJZClcclxuICAgICAgICAgICAgbWFpbkRhdGEuY291bnQgPSBtYWluRGF0YS5tYXBwZWRpZC5sZW5ndGhcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgICAgIGNvbnN0IGpzb25TdHJpbmcgPSBKU09OLnN0cmluZ2lmeSh0aGlzLmF1ZGl0bWFwcGluZ2RhdGEpO1xyXG4gICAgICAgIGNvbnN0IGNvbXByZXNzZWREYXRhID0gTFpTdHJpbmcuY29tcHJlc3MoanNvblN0cmluZyk7XHJcbiAgICAgICAgc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbSgnYXVkaXQnLCBjb21wcmVzc2VkRGF0YSlcclxuICAgICAgfVxyXG5cclxuXHJcblxyXG4gICAgfSBlbHNlIGlmIChOYW1lICE9IG51bGwpIHtcclxuICAgICAgdmFyIGluc2VydEluZGV4ID0gdGhpcy5hdWRpdG1hcHBpbmdkYXRhLmZpbmRJbmRleCgoeyBpbWdfaWQgfTogeyBpbWdfaWQ6IHN0cmluZyB9KSA9PiBpbWdfaWQgPT0gTmFtZSlcclxuICAgICAgdmFyIG1haW5hcnJheSA9IHRoaXMuYXVkaXRtYXBwaW5nZGF0YS5zcGxpY2UodGhpcy5hdWRpdG1hcHBpbmdkYXRhLmZpbmRJbmRleCgoeyBpbWdfaWQgfTogeyBpbWdfaWQ6IHN0cmluZyB9KSA9PiBpbWdfaWQgPT0gTmFtZSksIDEpO1xyXG4gICAgICB0aGlzLmN1c3RvbWVyY291bnQgPSB0aGlzLmF1ZGl0bWFwcGluZ2RhdGE/Lmxlbmd0aDtcclxuXHJcblxyXG5cclxuXHJcbiAgICAgIGlmICgnZHVwbGljYXRlJyBpbiBzZXNzaW9uU3RvcmFnZSkge1xyXG4gICAgICAgIGxldCBmaW5kRHVwbGljYXRlID0gSlNPTi5wYXJzZShzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKCdkdXBsaWNhdGUnKSB8fCAnW10nKVxyXG4gICAgICAgIGxldCBmaWx0ZXJEYXRhID0gZmluZER1cGxpY2F0ZS5maWx0ZXIoKGRhdGE6IGFueSkgPT4gZGF0YS5pbWdfaWQgIT0gZHJhZ2dlZEltYWdlSWQpXHJcbiAgICAgICAgY29uc29sZS5sb2coXCLwn5qAIH4gQXVkaXRNYXBwaW5nTGlzdENvbXBvbmVudCB+IGRyb3Bmb3JyZXRhZyB+IGxldCBmaWx0ZXJEYXRhOlwiLCBmaWx0ZXJEYXRhKVxyXG4gICAgICAgIHNlc3Npb25TdG9yYWdlLnNldEl0ZW0oJ2R1cGxpY2F0ZScsIEpTT04uc3RyaW5naWZ5KGZpbHRlckRhdGEpKVxyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAobWFpbmFycmF5Py5sZW5ndGggPiAwICYmIG1haW5hcnJheVswXS5tYXBwZWRpZC5sZW5ndGggPiAxKSB7XHJcbiAgICAgICAgdmFyIGNoZWNraW5kZXggPSBtYWluYXJyYXlbMF0ubWFwcGVkaWQuZmluZEluZGV4KCh7IGltZ19pZCB9OiB7IGltZ19pZDogc3RyaW5nIH0pID0+IGltZ19pZCA9PSBkcmFnZ2VkSW1hZ2VJZClcclxuXHJcbiAgICAgICAgdmFyIHN1YmFycmF5ID0gbWFpbmFycmF5WzBdLm1hcHBlZGlkLnNwbGljZShtYWluYXJyYXlbMF0ubWFwcGVkaWQuZmluZEluZGV4KCh7IGltZ19pZCB9OiB7IGltZ19pZDogc3RyaW5nIH0pID0+IGltZ19pZCA9PSBkcmFnZ2VkSW1hZ2VJZCksIDEpO1xyXG4gICAgICAgIGNvbnNvbGUubG9nKFwi8J+agCB+IEF1ZGl0TWFwcGluZ0xpc3RDb21wb25lbnQgfiBkcm9wZm9ycmV0YWcgfiBzdWJhcnJheTpcIiwgc3ViYXJyYXkpXHJcbiAgICAgICAgaWYgKGNoZWNraW5kZXggPT0gMCkge1xyXG4gICAgICAgICAgbWFpbmFycmF5WzBdLmltZ19uYW1lID0gbWFpbmFycmF5WzBdLm1hcHBlZGlkWzBdLmltZ19uYW1lXHJcbiAgICAgICAgICBtYWluYXJyYXlbMF0uaW1nX2lkID0gbWFpbmFycmF5WzBdLm1hcHBlZGlkWzBdLmltZ19pZFxyXG4gICAgICAgICAgbWFpbmFycmF5WzBdLmltZ19wYXRoID0gbWFpbmFycmF5WzBdLm1hcHBlZGlkWzBdLmltZ19wYXRoXHJcbiAgICAgICAgfVxyXG4gICAgICAgIG1haW5hcnJheVswXS5jb3VudCA9IG1haW5hcnJheVswXS5jb3VudCAtIDFcclxuICAgICAgICBzdWJhcnJheVswXS5tYXBwZWRpZCA9IFtdXHJcbiAgICAgICAgbGV0IG9iaiA9IHtcclxuICAgICAgICAgIGltZ19uYW1lOiBzdWJhcnJheVswXS5pbWdfbmFtZSxcclxuICAgICAgICAgIGltZ19pZDogc3ViYXJyYXlbMF0uaW1nX2lkLFxyXG4gICAgICAgICAgaW1nX3BhdGg6IHN1YmFycmF5WzBdLmltZ19wYXRoXHJcbiAgICAgICAgfVxyXG4gICAgICAgIHN1YmFycmF5WzBdLm1hcHBlZGlkLnB1c2gob2JqKVxyXG4gICAgICAgIHN1YmFycmF5WzBdLnNlbGVjdGVkID0gZmFsc2VcclxuICAgICAgICBzdWJhcnJheVswXS5kcm9wcGVkID0gZmFsc2VcclxuICAgICAgICBzdWJhcnJheVswXS5kZW1vZ3JhcGhpYyA9ICcnXHJcbiAgICAgICAgc3ViYXJyYXlbMF0uY291bnQgPSAxO1xyXG4gICAgICAgIHZhciBvbGRyZXRhZyA9IEpTT04ucGFyc2Uoc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSgncmV0YWcnKSB8fCAne30nKVxyXG4gICAgICAgIGNvbnNvbGUubG9nKFwi8J+agCB+IEF1ZGl0TWFwcGluZ0xpc3RDb21wb25lbnQgfiBkcm9wZm9ycmV0YWcgfiBvbGRyZXRhZzpcIiwgb2xkcmV0YWcpXHJcbiAgICAgICAgdmFyIG5ld3RhZzogYW55ID0gW11cclxuICAgICAgICBpZiAoTnVtYmVyKG9sZHJldGFnLmxlbmd0aCkgPiAwKSB7XHJcbiAgICAgICAgICBuZXd0YWcgPSBbLi4ub2xkcmV0YWcsIC4uLnN1YmFycmF5XVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBuZXd0YWcgPSBzdWJhcnJheVxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnJldGFnaW1hZ2UgPSBuZXd0YWdcclxuICAgICAgICBjb25zb2xlLmxvZyhcIvCfmoAgfiBBdWRpdE1hcHBpbmdMaXN0Q29tcG9uZW50IH4gZHJvcGZvcnJldGFnIH4gdGhpcy5yZXRhZ2ltYWdlOjFcIiwgdGhpcy5yZXRhZ2ltYWdlKVxyXG4gICAgICAgIHNlc3Npb25TdG9yYWdlLnNldEl0ZW0oJ3JldGFnJywgSlNPTi5zdHJpbmdpZnkodGhpcy5yZXRhZ2ltYWdlKSlcclxuICAgICAgICB0aGlzLmF1ZGl0bWFwcGluZ2RhdGEuc3BsaWNlKGluc2VydEluZGV4LCAwLCAuLi5tYWluYXJyYXkpO1xyXG4gICAgICAgIGNvbnN0IGpzb25TdHJpbmcgPSBKU09OLnN0cmluZ2lmeSh0aGlzLmF1ZGl0bWFwcGluZ2RhdGEpO1xyXG4gICAgICAgIGNvbnN0IGNvbXByZXNzZWREYXRhID0gTFpTdHJpbmcuY29tcHJlc3MoanNvblN0cmluZyk7XHJcbiAgICAgICAgc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbSgnYXVkaXQnLCBjb21wcmVzc2VkRGF0YSlcclxuICAgICAgICB0aGlzLmNhdGVnb3J5Lm1hcCgoZGF0YTogYW55KSA9PiB7XHJcbiAgICAgICAgICBsZXQgc2Vzc2lvbnZhbHVlID0gSlNPTi5wYXJzZShzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKGRhdGEudHlwZSkgfHwgJ1tdJyk7XHJcbiAgICAgICAgICBkYXRhLmNvdW50ID0gc2Vzc2lvbnZhbHVlLmxlbmd0aFxyXG4gICAgICAgICAgZGF0YS52YWx1ZSA9IHNlc3Npb252YWx1ZSAmJiBzZXNzaW9udmFsdWUubGVuZ3RoID4gMCA/IHNlc3Npb252YWx1ZSA6IFtdXHJcbiAgICAgICAgfSlcclxuICAgICAgICBjb25zb2xlLmxvZyhcIvCfmoAgfiBBdWRpdE1hcHBpbmdMaXN0Q29tcG9uZW50IH4gZHJvcGZvcnJldGFnIH4gdGhpcy5jYXRlZ29yeTpcIiwgdGhpcy5jYXRlZ29yeSlcclxuICAgICAgfSBlbHNlIHtcclxuXHJcbiAgICAgICAgdmFyIG9sZHJldGFnID0gSlNPTi5wYXJzZShzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKCdyZXRhZycpIHx8ICd7fScpXHJcbiAgICAgICAgdmFyIG5ld3RhZzogYW55ID0gW11cclxuICAgICAgICBpZiAoTnVtYmVyKG9sZHJldGFnLmxlbmd0aCkgPiAwKSB7XHJcbiAgICAgICAgICBuZXd0YWcgPSBbLi4ub2xkcmV0YWcsIC4uLm1haW5hcnJheV1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgbmV3dGFnID0gbWFpbmFycmF5XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMucmV0YWdpbWFnZSA9IG5ld3RhZ1xyXG4gICAgICAgIGNvbnNvbGUubG9nKFwi8J+agCB+IEF1ZGl0TWFwcGluZ0xpc3RDb21wb25lbnQgfiBkcm9wZm9ycmV0YWcgfiB0aGlzLnJldGFnaW1hZ2U6MlwiLCB0aGlzLnJldGFnaW1hZ2UpXHJcbiAgICAgICAgc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbSgncmV0YWcnLCBKU09OLnN0cmluZ2lmeSh0aGlzLnJldGFnaW1hZ2UpKVxyXG4gICAgICAgIGNvbnN0IGpzb25TdHJpbmcgPSBKU09OLnN0cmluZ2lmeSh0aGlzLmF1ZGl0bWFwcGluZ2RhdGEpO1xyXG4gICAgICAgIGNvbnN0IGNvbXByZXNzZWREYXRhID0gTFpTdHJpbmcuY29tcHJlc3MoanNvblN0cmluZyk7XHJcbiAgICAgICAgc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbSgnYXVkaXQnLCBjb21wcmVzc2VkRGF0YSlcclxuICAgICAgfVxyXG5cclxuICAgIH1cclxuXHJcbiAgICBmdW5jdGlvbiBnZXRUYWdOYW1lRnJvbUhUTUwoaHRtbDogYW55KSB7XHJcbiAgICAgIHZhciB0ZW1wRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xyXG4gICAgICB0ZW1wRWxlbWVudC5pbm5lckhUTUwgPSBodG1sO1xyXG4gICAgICB2YXIgZmlyc3RDaGlsZDogYW55ID0gdGVtcEVsZW1lbnQuZmlyc3RDaGlsZDtcclxuICAgICAgaWYgKGZpcnN0Q2hpbGQuaGFzQXR0cmlidXRlKCduYW1lJykpIHtcclxuICAgICAgICB2YXIgbmFtZVByb3BlcnR5VmFsdWUgPSBmaXJzdENoaWxkLmdldEF0dHJpYnV0ZSgnbmFtZScpO1xyXG4gICAgICAgIHJldHVybiBuYW1lUHJvcGVydHlWYWx1ZTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuICAgIHNlc3Npb25TdG9yYWdlLnNldEl0ZW0oJ3JldGFnJywgSlNPTi5zdHJpbmdpZnkodGhpcy5yZXRhZ2ltYWdlKSlcclxuXHJcbiAgICBpZiAoJ3JldGFnJyBpbiBzZXNzaW9uU3RvcmFnZSkge1xyXG4gICAgICB2YXIgcmV0YWdkYXRhID0gSlNPTi5wYXJzZShzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKCdyZXRhZycpIHx8ICd7fScpXHJcbiAgICAgIHRoaXMucmV0YWdpbWFnZSA9IHJldGFnZGF0YTtcclxuXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZW1vdmVpbWFnZShkYXRhOiBhbnkpIHtcclxuICAgIHZhciByZW1vdmVkX2ltZyA9IHRoaXMucmV0YWdpbWFnZS5maWx0ZXIoKGV2OiBhbnkpID0+IGV2LmltZ19pZCA9PSBkYXRhLmltZ19pZClcclxuICAgIHRoaXMucmV0YWdpbWFnZS5zcGxpY2UodGhpcy5yZXRhZ2ltYWdlLmZpbmRJbmRleCgoeyBpbWdfaWQgfTogeyBpbWdfaWQ6IHN0cmluZyB9KSA9PiBpbWdfaWQgPT0gZGF0YS5pbWdfaWQpLCAxKTtcclxuICAgIHRoaXMuYXVkaXRtYXBwaW5nZGF0YSA9IFsuLi50aGlzLmF1ZGl0bWFwcGluZ2RhdGEsIC4uLnJlbW92ZWRfaW1nXVxyXG4gICAgdGhpcy5jdXN0b21lcmNvdW50ID0gdGhpcy5hdWRpdG1hcHBpbmdkYXRhPy5sZW5ndGg7XHJcbiAgICBpZiAoIXRoaXMucmV0YWdpbWFnZS5sZW5ndGgpIHsgdGhpcy5zaG93dmFsdWUgPSBmYWxzZSB9XHJcbiAgICBsZXQgc3RyaW5naWZ5ZGF0YSA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oJ2F1ZGl0JykgfHwgJ3t9J1xyXG4gICAgY29uc3QgZGVjb21wcmVzc2VkRGF0YSA9IExaU3RyaW5nLmRlY29tcHJlc3Moc3RyaW5naWZ5ZGF0YSk7XHJcbiAgICBjb25zdCBjb21wbGV0ZURhdGUgPSBKU09OLnBhcnNlKGRlY29tcHJlc3NlZERhdGEgfHwgJ3t9JylcclxuICAgIGNvbnN0IGpzb25TdHJpbmcgPSBKU09OLnN0cmluZ2lmeSh0aGlzLmF1ZGl0bWFwcGluZ2RhdGEpO1xyXG4gICAgY29uc3QgY29tcHJlc3NlZERhdGEgPSBMWlN0cmluZy5jb21wcmVzcyhqc29uU3RyaW5nKTtcclxuICAgIHNlc3Npb25TdG9yYWdlLnNldEl0ZW0oJ2F1ZGl0JywgY29tcHJlc3NlZERhdGEpXHJcbiAgICBzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKCdyZXRhZycsIEpTT04uc3RyaW5naWZ5KHRoaXMucmV0YWdpbWFnZSkpXHJcbiAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIHNhdmVEcmFmdGltZygpIHtcclxuICAgIHRoaXMuc3VibWl0dGVkID0gdHJ1ZTtcclxuXHJcbiAgICB2YXIgdG90YWxmaWxlOiBhbnkgPSBKU09OLnBhcnNlKHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oJ3RvdGFsZmlsZXMnKSB8fCAne30nKTtcclxuICAgIHRoaXMudGltZVBhc3NlZCA9IEpTT04ucGFyc2Uoc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSgndGltZVNwZW50JykgfHwgJ3t9JylcclxuICAgIGlmICgncmV0YWcnIGluIHNlc3Npb25TdG9yYWdlKSB7XHJcbiAgICAgIHZhciByZXRhZ2RhdGEgPSBKU09OLnBhcnNlKHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oJ3JldGFnJykgfHwgJ3t9JylcclxuICAgICAgdGhpcy5yZXRhZ2ltYWdlID0gcmV0YWdkYXRhO1xyXG4gICAgfVxyXG4gICAgbGV0IHN0b3JlZERhdGEgPSBbXHJcbiAgICAgIHtcclxuICAgICAgICB0eXBlOiBcImN1c3RvbWVyXCIsXHJcbiAgICAgICAgdmFsdWU6IHRoaXMuYXVkaXRtYXBwaW5nZGF0YSA/IHRoaXMuYXVkaXRtYXBwaW5nZGF0YSA6IFtdLFxyXG4gICAgICB9XHJcbiAgICBdXHJcblxyXG4gICAgdGhpcy5jYXRlZ29yeS5tYXAoKGRhdGE6IGFueSkgPT4ge1xyXG4gICAgICBsZXQgc2Vzc2lvbnZhbHVlID0gSlNPTi5wYXJzZShzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKGRhdGEudHlwZSkgfHwgJ3t9Jyk7XHJcbiAgICAgIHN0b3JlZERhdGEucHVzaCh7XHJcbiAgICAgICAgdHlwZTogZGF0YS50eXBlLFxyXG4gICAgICAgIHZhbHVlOiBzZXNzaW9udmFsdWUgJiYgc2Vzc2lvbnZhbHVlLmxlbmd0aCA+IDAgPyBzZXNzaW9udmFsdWUgOiBbXVxyXG4gICAgICB9KVxyXG4gICAgfSlcclxuICAgIHZhciBpbnNlcm9iajogYW55ID0ge1xyXG4gICAgICBzdG9yZUlkOiB0b3RhbGZpbGU/LmZpbGVkZXRhaWxzPy5zdG9yZUlkLFxyXG4gICAgICBmaWxlRGF0ZTogdG90YWxmaWxlPy5maWxlZGV0YWlscz8uRGF0ZSxcclxuICAgICAgYXVkaXRJZDogdG90YWxmaWxlPy5hdWRpdElkID8gdG90YWxmaWxlPy5hdWRpdElkIDogdG90YWxmaWxlPy5maWxlZGV0YWlscz8uYXVkaXRJZCxcclxuICAgICAgdG90YWxDb3VudDogdG90YWxmaWxlPy50b3RhbGZpbGVzID8gdG90YWxmaWxlLnRvdGFsZmlsZXMgOiAwLFxyXG4gICAgICByZXRhZ0NvdW50OiB0aGlzLnJldGFnaW1hZ2UubGVuZ3RoLFxyXG4gICAgICB0aW1lU3BlbnQ6IHRoaXMudGltZVBhc3NlZCxcclxuICAgICAgcmV0YWdJbWFnZTogdGhpcy5yZXRhZ2ltYWdlID8gdGhpcy5yZXRhZ2ltYWdlIDogW11cclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmF1ZGl0U2VydmljZS5zYXZlRHJhZnQoaW5zZXJvYmopLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICBpZiAoIXRoaXMucmVkaXJlYWN0KSB7XHJcbiAgICAgICAgdGhpcy5zdWJtaXR0ZWQgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmdldG1hcHBpbmdkYXRhKClcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmNoYW5nZXNkYXRhKClcclxuICAgICAgfVxyXG4gICAgfSlcclxuICB9XHJcblxyXG5cclxuICB0YWdnaW5ndmlldygpIHtcclxuICAgIHRoaXMuc3VibWl0dGVkID0gdHJ1ZTtcclxuICAgIHZhciB0b3RhbGZpbGU6IGFueSA9IEpTT04ucGFyc2Uoc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSgndG90YWxmaWxlcycpIHx8ICd7fScpO1xyXG4gICAgdGhpcy5zaG93dmFsdWUgPSBmYWxzZTtcclxuICAgIHRoaXMuc2hvd3ZhbHVlMSA9IHRydWU7XHJcbiAgICB0aGlzLnJldGdnaW5ncGFnZSA9IHRydWU7XHJcbiAgICBsZXQgc3RyaW5naWZ5ZGF0YSA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oJ2F1ZGl0JykgfHwgJ3t9J1xyXG4gICAgY29uc3QgZGVjb21wcmVzc2VkRGF0YSA9IExaU3RyaW5nLmRlY29tcHJlc3Moc3RyaW5naWZ5ZGF0YSk7XHJcbiAgICB2YXIgY3VzdG9tZXIgPSBKU09OLnBhcnNlKGRlY29tcHJlc3NlZERhdGEgfHwgJ3t9JylcclxuICAgIGxldCBzdG9yZWREYXRhID0gW1xyXG4gICAgICB7XHJcbiAgICAgICAgdHlwZTogXCJjdXN0b21lclwiLFxyXG4gICAgICAgIHZhbHVlOiBjdXN0b21lciA/IGN1c3RvbWVyIDogW10sXHJcbiAgICAgIH1cclxuICAgIF1cclxuXHJcbiAgICB0aGlzLmNhdGVnb3J5Lm1hcCgoZGF0YTogYW55KSA9PiB7XHJcbiAgICAgIGxldCBzZXNzaW9udmFsdWUgPSBKU09OLnBhcnNlKHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oZGF0YS50eXBlKSB8fCAne30nKTtcclxuICAgICAgc3RvcmVkRGF0YS5wdXNoKHtcclxuICAgICAgICB0eXBlOiBkYXRhLnR5cGUsXHJcbiAgICAgICAgdmFsdWU6IHNlc3Npb252YWx1ZSAmJiBzZXNzaW9udmFsdWUubGVuZ3RoID4gMCA/IHNlc3Npb252YWx1ZSA6IFtdXHJcbiAgICAgIH0pXHJcbiAgICB9KVxyXG4gICAgdmFyIGluc2Vyb2JqOiBhbnkgPSB7XHJcbiAgICAgIHN0b3JlSWQ6IHRvdGFsZmlsZT8uZmlsZWRldGFpbHM/LnN0b3JlX2lkLFxyXG4gICAgICBmaWxlRGF0ZTogdG90YWxmaWxlPy5maWxlZGV0YWlscz8uZmlsZV9kYXRlLFxyXG4gICAgICBhdWRpdElkOiB0b3RhbGZpbGU/LmF1ZGl0SWQgPyB0b3RhbGZpbGU/LmF1ZGl0SWQgOiB0b3RhbGZpbGU/LmZpbGVkZXRhaWxzLmF1ZGl0SWQsXHJcbiAgICAgIHRvdGFsQ291bnQ6IHRvdGFsZmlsZT8udG90YWxmaWxlcyA/IHRvdGFsZmlsZS50b3RhbGZpbGVzIDogMCxcclxuICAgICAgcmV0YWdDb3VudDogdGhpcy5yZXRhZ2ltYWdlLmxlbmd0aCxcclxuICAgICAgdGltZVNwZW50OiB0aGlzLnRpbWVQYXNzZWQsXHJcbiAgICAgIHJldGFnSW1hZ2U6IHRoaXMucmV0YWdpbWFnZSA/IHRoaXMucmV0YWdpbWFnZSA6IFtdXHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5hdWRpdFNlcnZpY2Uuc2F2ZURyYWZ0KGluc2Vyb2JqKS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKCgpID0+IHsgdGhpcy5zdWJtaXR0ZWQgPSBmYWxzZTsgfSlcclxuICAgIGlmICgncmV0YWcnIGluIHNlc3Npb25TdG9yYWdlKSB7XHJcbiAgICAgIHZhciByZXRhZ2RhdGEgPSBKU09OLnBhcnNlKHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oJ3JldGFnJykgfHwgJ3t9JylcclxuICAgICAgdGhpcy5yZXRhZ2ltYWdlID0gcmV0YWdkYXRhO1xyXG5cclxuICAgIH1cclxuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtcIi9tYW5hZ2UvdGlja2V0cy9yZXRhZy1tYXBwaW5nXCJdKVxyXG4gIH1cclxuXHJcbiAgc3VibWl0YXVkaXQoKSB7XHJcbiAgICBjb25zdCBtb2RhbFJlZiA9IHRoaXMubW9kYWxTZXJ2aWNlLm9wZW4oQXVkaXRSZXBvcnRQb3B1cENvbXBvbmVudCwge1xyXG4gICAgICBzaXplOiAnbGcnLFxyXG4gICAgICBjZW50ZXJlZDogdHJ1ZVxyXG4gICAgfSlcclxuICAgIG1vZGFsUmVmLmNvbXBvbmVudEluc3RhbmNlLnNlbGVjdGVkVHlwZSA9IHRoaXMuc2VsZWN0ZWRUeXBlO1xyXG4gIH1cclxuXHJcblxyXG5cclxuICBzZXRWYWx1ZShpOiBhbnkpIHtcclxuICAgIGxldCBpbmRleCA9IDA7XHJcbiAgICBpZiAoaSA+IGluZGV4KSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmN1cnJlbnRWYWx1ZSA9IHRoaXMuY3VycmVudFZhbHVlICsgMTtcclxuICAgIH1cclxuXHJcbiAgfVxyXG4gIGN1cnJlbnRHcm91cE51bWJlcjogYW55ID0gMDtcclxuXHJcbiAgZ2V0R3JvdXBOdW1iZXIob2JqOiBhbnkpOiBudW1iZXIgfCBudWxsIHtcclxuICAgIGlmIChvYmouY291bnQgPiAxKSB7XHJcbiAgICAgIHJldHVybiArK3RoaXMuY3VycmVudEdyb3VwTnVtYmVyO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG5cclxuICByZXNldEdyb3VwTnVtYmVyKCkge1xyXG4gICAgdGhpcy5jdXJyZW50R3JvdXBOdW1iZXIgPSAwO1xyXG4gIH1cclxuXHJcbiAgZ2V0RmlsdGVyZWREYXRhKGNvdW50OiBudW1iZXIpIHtcclxuICAgIHJldHVybiB0aGlzLmF1ZGl0bWFwcGluZ2RhdGEuZmlsdGVyKChvYmo6IGFueSkgPT4gb2JqLmNvdW50ID09PSBjb3VudCk7XHJcblxyXG4gIH1cclxuXHJcbiAgdG9nZ2xlSW1hZ2UoaW1nX25hbWU6IGFueSkge1xyXG4gICAgdGhpcy5hdWRpdG1hcHBpbmdkYXRhLm1hcCgoZGF0YTogYW55KSA9PiB7XHJcbiAgICAgIGlmIChkYXRhLmltZ19uYW1lID09IGltZ19uYW1lKSB7XHJcbiAgICAgICAgaWYgKGRhdGEubWFwcGVkaWQubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgZGF0YS5kZW1vZ3JhcGhpYyAhPT0gJ2QnID8gZGF0YS5kZW1vZ3JhcGhpYyA9ICdkJyA6IGRhdGEuZGVtb2dyYXBoaWMgPSAnJ1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBkYXRhLmRyb3BwZWQgPSAhZGF0YS5kcm9wcGVkXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gICAgLy8gdGhpcy5kZW1vZ3JhcGhpYyA9IHRoaXMuYXVkaXRtYXBwaW5nZGF0YS5maWx0ZXIoKGRhdGE6IGFueSkgPT4gZGF0YS5kZW1vZ3JhcGhpYyA9PT0gJ2QnKS5sZW5ndGg7XHJcbiAgICBjb25zdCBqc29uU3RyaW5nID0gSlNPTi5zdHJpbmdpZnkodGhpcy5hdWRpdG1hcHBpbmdkYXRhKTtcclxuICAgIGNvbnN0IGNvbXByZXNzZWREYXRhID0gTFpTdHJpbmcuY29tcHJlc3MoanNvblN0cmluZyk7XHJcbiAgICBzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKCdhdWRpdCcsIGNvbXByZXNzZWREYXRhKVxyXG4gIH1cclxufSIsIjxkaXYgKm5nSWY9XCIhYXVkaXRMb2FkaW5nXCIgY2xhc3M9XCJjYXJkXCIgPlxyXG4gICAgPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyXCIgPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLXRpdGxlXCI+XHJcbiAgICAgICAgICAgIDxoMyBjbGFzcz1cImZsZXgtY29sdW1uXCI+XHJcbiAgICAgICAgICAgICAgICA8IS0tIDxzcGFuIGNsYXNzPVwiY2FyZC1sYWJlbCBmdy1ib2xkXCI+e3tmaWxlZGV0YWlscz8ucXVldWVOYW1lfX08c3BhbiBjbGFzcz1cIm14LTMgYXJyb3ctY29kZVwiPiAtIDwvc3Bhbj4gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3tmaWxlZGV0YWlscz8uc3RvcmVJZH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXgtMyBhcnJvdy1jb2RlXCI+IC0gPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuID57e2ZpbGVkZXRhaWxzPy5EYXRlfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLSA8c3BhbiBjbGFzcz1cIm14LTMgYXJyb3ctY29kZVwiPiAtIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiA+e3tmaWxlZGV0YWlscz8udHlwZX19PC9zcGFuPiAtLT5cclxuICAgICAgICAgICAgICAgIDwhLS0gPC9zcGFuPiAtLT5cclxuICAgICAgICAgICAgPC9oMz5cclxuICAgIFxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm91bmRlZC0zIG1zLTMgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBiZy10aW1lclwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtZS0zIHRleHQtdGltZXIgZnctc2VtaWJvbGRcIj57eyBmb3JtYXR0ZWRUaW1lIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4+PHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTkuMTY2NjcgMi44NzA3MUM5LjE2NjY3IDIuNjIwMjMgOS4yNjYxNyAyLjM4MDAxIDkuNDQzMjkgMi4yMDI4OUM5LjYyMDQxIDIuMDI1NzcgOS44NjA2MyAxLjkyNjI3IDEwLjExMTEgMS45MjYyN0gxMy44ODg5QzE0LjEzOTQgMS45MjYyNyAxNC4zNzk2IDIuMDI1NzcgMTQuNTU2NyAyLjIwMjg5QzE0LjczMzggMi4zODAwMSAxNC44MzMzIDIuNjIwMjMgMTQuODMzMyAyLjg3MDcxQzE0LjgzMzMgMy4xMjEyIDE0LjczMzggMy4zNjE0MiAxNC41NTY3IDMuNTM4NTRDMTQuMzc5NiAzLjcxNTY1IDE0LjEzOTQgMy44MTUxNiAxMy44ODg5IDMuODE1MTZIMTIuOTQ0NFY1LjA3NDQyTDEyLjk0MzIgNS4xMjYwNUMxNC41Mzk2IDUuMzAwOTcgMTYuMDUyOCA1LjkyNzg3IDE3LjMwNTMgNi45MzMwOEwxNy4zMTQxIDYuOTI1NTNMMTguMjU4NSA1Ljk4MTA4QzE4LjM3NCA1Ljg1Njc2IDE4LjUyMDggNS43NjU4OCAxOC42ODM1IDUuNzE4MDFDMTguODQ2MyA1LjY3MDE0IDE5LjAxOSA1LjY2NzA2IDE5LjE4MzMgNS43MDkwOEMxOS4zNDc3IDUuNzUxMTEgMTkuNDk3NyA1LjgzNjY5IDE5LjYxNzUgNS45NTY4QzE5LjczNzMgNi4wNzY5MiAxOS44MjI1IDYuMjI3MTMgMTkuODY0MSA2LjM5MTZDMTkuOTA2IDYuNTU1NzggMTkuOTAzIDYuNzI4MjMgMTkuODU1NCA2Ljg5MDg1QzE5LjgwNzcgNy4wNTM0OCAxOS43MTcyIDcuMjAwMjkgMTkuNTkzMyA3LjMxNTlMMTguNjQ4OSA4LjI2MDM0TDE4LjY0MTMgOC4yNjkxNUMxOS42NDAzIDkuNTE5NzQgMjAuMjY1OCAxMS4wMjcgMjAuNDQ2IDEyLjYxNzRDMjAuNjI2MSAxNC4yMDc4IDIwLjM1MzYgMTUuODE2NyAxOS42NTk3IDE3LjI1OTFDMTguOTY1OCAxOC43MDE0IDE3Ljg3ODggMTkuOTE4NSAxNi41MjM3IDIwLjc3MDRDMTUuMTY4NiAyMS42MjIyIDEzLjYwMDYgMjIuMDc0MSAxMiAyMi4wNzQxQzEwLjM5OTQgMjIuMDc0MSA4LjgzMTM3IDIxLjYyMjIgNy40NzYyOSAyMC43NzA0QzYuMTIxMjIgMTkuOTE4NSA1LjAzNDE5IDE4LjcwMTQgNC4zNDAzIDE3LjI1OTFDMy42NDY0MSAxNS44MTY3IDMuMzczODYgMTQuMjA3OCAzLjU1NDAyIDEyLjYxNzRDMy43MzQxOCAxMS4wMjcgNC4zNTk3MyA5LjUxOTc0IDUuMzU4NjcgOC4yNjkxNUw1LjM1MTExIDguMjYwMzRMNC40MDY2NyA3LjMxNTlDNC4yMzk2NCA3LjEzNjkgNC4xNDg2NSA2LjkwMDAzIDQuMTUyODcgNi42NTUyNEM0LjE1NzEgNi40MTA0NSA0LjI1NjIyIDYuMTc2ODcgNC40MjkzNCA2LjAwMzc1QzQuNjAyNDYgNS44MzA2MyA0LjgzNjA0IDUuNzMxNTEgNS4wODA4MyA1LjcyNzI4QzUuMzI1NjIgNS43MjMwNiA1LjU2MjQ5IDUuODE0MDUgNS43NDE0OSA1Ljk4MTA4TDYuNjg1OTMgNi45MjU1M0w2LjY5NDc0IDYuOTMzMDhDNy45NDY4MSA1LjkyODA5IDkuNDU5NjMgNS4zMDEyIDExLjA1NTYgNS4xMjYwNVYzLjgxNTE2SDEwLjExMTFDOS44NjA2MyAzLjgxNTE2IDkuNjIwNDEgMy43MTU2NSA5LjQ0MzI5IDMuNTM4NTRDOS4yNjYxNyAzLjM2MTQyIDkuMTY2NjcgMy4xMjEyIDkuMTY2NjcgMi44NzA3MVpNMTIgMjAuMTg1NUMxMy43NTM1IDIwLjE4NTQgMTUuNDM1MiAxOS40ODg2IDE2LjY3NSAxOC4yNDg1QzE3LjkxNDggMTcuMDA4NSAxOC42MTEzIDE1LjMyNjcgMTguNjExMSAxMy41NzMyQzE4LjYxMDkgMTEuODE5NiAxNy45MTQyIDEwLjEzOCAxNi42NzQxIDguODk4MTNDMTUuNDM0MSA3LjY1ODMxIDEzLjc1MjMgNi45NjE4OCAxMS45OTg3IDYuOTYyMDRDMTAuMjQ1MiA2Ljk2MjIxIDguNTYzNTQgNy42NTg5NiA3LjMyMzcyIDguODk5MDJDNi4wODM5IDEwLjEzOTEgNS4zODc0NyAxMS44MjA5IDUuMzg3NjMgMTMuNTc0NEM1LjM4NzggMTUuMzI4IDYuMDg0NTUgMTcuMDA5NiA3LjMyNDYxIDE4LjI0OTRDOC41NjQ2NyAxOS40ODkzIDEwLjI0NjUgMjAuMTg1NyAxMiAyMC4xODU1Wk0xMi40ODk5IDExLjc0ODVMMTQuMTY0NyAxMC4wNzM3QzE0LjI1MTcgOS45ODM0MyAxNC4zNTU5IDkuOTExNDMgMTQuNDcxMSA5Ljg2MTg4QzE0LjU4NjMgOS44MTIzMyAxNC43MTAyIDkuNzg2MjIgMTQuODM1NiA5Ljc4NTA3QzE0Ljk2MTEgOS43ODM5MiAxNS4wODU0IDkuODA3NzYgMTUuMjAxNSA5Ljg1NTE5QzE1LjMxNzYgOS45MDI2MiAxNS40MjMxIDkuOTcyNyAxNS41MTE4IDEwLjA2MTNDMTUuNjAwNSAxMC4xNSAxNS42NzA3IDEwLjI1NTQgMTUuNzE4MiAxMC4zNzE0QzE1Ljc2NTggMTAuNDg3NSAxNS43ODk3IDEwLjYxMTggMTUuNzg4NyAxMC43MzcyQzE1Ljc4NzcgMTAuODYyNiAxNS43NjE3IDEwLjk4NjYgMTUuNzEyMiAxMS4xMDE4QzE1LjY2MjggMTEuMjE3MSAxNS41OTA5IDExLjMyMTMgMTUuNTAwNyAxMS40MDg1TDEzLjgyNTkgMTMuMDg0NkMxMy45MDAzIDEzLjM2NDUgMTMuOTA5NSAxMy42NTc5IDEzLjg1MjYgMTMuOTQyQzEzLjc5NTggMTQuMjI2IDEzLjY3NDUgMTQuNDkzMyAxMy40OTgxIDE0LjcyMzFDMTMuMzIxNyAxNC45NTI5IDEzLjA5NDkgMTUuMTM5MSAxMi44MzUyIDE1LjI2NzVDMTIuNTc1NCAxNS4zOTU4IDEyLjI4OTcgMTUuNDYyOCAxMiAxNS40NjMzQzExLjczMjcgMTUuNDYxIDExLjQ2ODggMTUuNDAxOSAxMS4yMjYgMTUuMjlDMTAuOTgzMiAxNS4xNzgxIDEwLjc2NyAxNS4wMTU5IDEwLjU5MTYgMTQuODE0MUMxMC40MTYyIDE0LjYxMjMgMTAuMjg1NyAxNC4zNzU1IDEwLjIwODcgMTQuMTE5NUMxMC4xMzE2IDEzLjg2MzUgMTAuMTA5OSAxMy41OTQgMTAuMTQ0OCAxMy4zMjlDMTAuMTc5OCAxMy4wNjM5IDEwLjI3MDYgMTIuODA5MyAxMC40MTE0IDEyLjU4MkMxMC41NTIyIDEyLjM1NDcgMTAuNzM5NiAxMi4xNTk5IDEwLjk2MTMgMTIuMDEwNEMxMS4xODMgMTEuODYxIDExLjQzMzkgMTEuNzYwNCAxMS42OTc0IDExLjcxNTJDMTEuOTYwOSAxMS42NzAxIDEyLjIzMSAxMS42ODE0IDEyLjQ4OTkgMTEuNzQ4NVpcIiBmaWxsPVwiYmxhY2tcIi8+XHJcbiAgICAgICAgICAgICAgICA8L3N2Zz48L3NwYW4+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8IS0tIDxzcGFuICpuZ0lmPVwiZGVtb2dyYXBoaWNcIiBjbGFzcz1cImJhZGdlIGJhZGdlLWxpZ2h0LXN1Y2Nlc3MgbXMtM1wiPnt7ZGVtb2dyYXBoaWN9fSB7e2RlbW9ncmFwaGljID4gMSA/ICdEZW1vZ3JhcGhpY3MnIDogJ0RlbW9ncmFwaGljJ319PC9zcGFuPiAtLT5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtdG9vbGJhciBcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgcG9zaXRpb24tcmVsYXRpdmUgbXktMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxhICpuZ0lmPVwiIXNob3d2YWx1ZTFcIiBjbGFzcz1cImJ0biBidG4tc20gYnRuLWRlZmF1bHQgYnRuLW91dGxpbmUgcHktMiBteC0yXCIgKGNsaWNrKT1cImNoYW5nZXNkYXRhKClcIj48c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzdmctaWNvbiBzdmctaWNvbi1wcmltYXJ5IHN2Zy1pY29uLTJ4XCIgPjxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTUuODMzNyAxMC4wMDAxSDQuMTY2OTlNNC4xNjY5OSAxMC4wMDAxTDEwLjAwMDMgMTUuODMzNE00LjE2Njk5IDEwLjAwMDFMMTAuMDAwMyA0LjE2Njc1XCIgc3Ryb2tlPVwiIzM0NDA1NFwiIHN0cm9rZS13aWR0aD1cIjEuNjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+PC9zcGFuPjxzcGFuIGNsYXNzPVwibXMtM1wiPkJhY2sgdG8gVGFnZ2luZzwvc3Bhbj48L2E+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiIXNob3d2YWx1ZVwiIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tcHJpbWFyeSBweS0yIG14LTJcIiAoY2xpY2spPVwic3VibWl0YXVkaXQoKVwiICA+U3VibWl0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNNC4xNjY5OSA5Ljk5OTg0SDE1LjgzMzdNMTUuODMzNyA5Ljk5OTg0TDEwLjAwMDMgNC4xNjY1TTE1LjgzMzcgOS45OTk4NEwxMC4wMDAzIDE1LjgzMzJcIiBzdHJva2U9XCJ3aGl0ZVwiIHN0cm9rZS13aWR0aD1cIjEuNjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwic2hvd3ZhbHVlXCIgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgYnRuLXNtIHB5LTIgbXgtMlwiIFtkaXNhYmxlZF09XCJzdWJtaXR0ZWRcIiAoY2xpY2spPVwidGFnZ2luZ3ZpZXcoKVwiPlJldGFnIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInN2Zy1pY29uIHN2Zy1pY29uLXByaW1hcnkgc3ZnLWljb24tMnhcIj48c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTQuMTY2NjYgOS45OTk5NkgxNS44MzMzTTE1LjgzMzMgOS45OTk5Nkw5Ljk5OTk5IDQuMTY2NjNNMTUuODMzMyA5Ljk5OTk2TDkuOTk5OTkgMTUuODMzM1wiIHN0cm9rZT1cIndoaXRlXCIgc3Ryb2tlLXdpZHRoPVwiMS42N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIFxyXG48L2Rpdj5cclxuXHJcblxyXG48ZGl2IGNsYXNzPVwicm93XCI+IFxyXG4gICAgPGRpdiAqbmdJZj1cImF1ZGl0TG9hZGluZ1wiIGNsYXNzPVwiY2FyZCBtdC01XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHlcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBsb2FkZXIgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2hpbW1lclwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3cmFwcGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgdGl0bGVcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBsaW5rXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgZGVzY3JpcHRpb25cIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaGltbWVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndyYXBwZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSB0aXRsZVwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGxpbmtcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBkZXNjcmlwdGlvblwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj4gICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPCEtLSA8aDUgY2xhc3M9XCJ0ZXh0LWRhcmstNjAwIGZzLTMgZnctYm9sZCB0ZXh0LWNlbnRlciBcIj5Mb2FkaW5nIEF1ZGl0IGZpbGUuLi4uLi48L2g1PiAtLT5cclxuICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2ICpuZ0lmPVwiIWF1ZGl0TG9hZGluZ1wiIGNsYXNzPVwiY29sLW1kLTdcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZCBtdC01XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoLTEwMDBweFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBuZ2JBY2NvcmRpb24gKm5nRm9yPVwibGV0IGl0ZW0gb2YgY2F0ZWdvcnlcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiaXRlbT8uY291bnQgIT09MFwiIGNsYXNzPVwibXQtNlwiIG5nYkFjY29yZGlvbkl0ZW0gW2NvbGxhcHNlZF09XCIhaXRlbT8uY291bnRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBuZ2JBY2NvcmRpb25IZWFkZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwibWFpbmhlYWRpbmdcIiBuZ2JBY2NvcmRpb25CdXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tpdGVtPy5uYW1lfX0gPHNwYW4gY2xhc3M9XCJzdWItdGV4dCBtdC0yIG1zLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJiYWRnZSBiYWRnZS1saWdodC1kZWZhdWx0XCI+PHN2ZyBjbGFzcz1cIm1lLTJcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCIgdmlld0JveD1cIjAgMCAxMiAxMlwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzE0NTA4XzE4NTgzKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0yLjUgMTAuNUg5LjVDMTAuMDUyMyAxMC41IDEwLjUgMTAuMDUyMyAxMC41IDkuNVYyLjVDMTAuNSAxLjk0NzcyIDEwLjA1MjMgMS41IDkuNSAxLjVIMi41QzEuOTQ3NzIgMS41IDEuNSAxLjk0NzcyIDEuNSAyLjVWOS41QzEuNSAxMC4wNTIzIDEuOTQ3NzIgMTAuNSAyLjUgMTAuNVpNMi41IDEwLjVMOCA1TDEwLjUgNy41TTUgNC4yNUM1IDQuNjY0MjEgNC42NjQyMSA1IDQuMjUgNUMzLjgzNTc5IDUgMy41IDQuNjY0MjEgMy41IDQuMjVDMy41IDMuODM1NzkgMy44MzU3OSAzLjUgNC4yNSAzLjVDNC42NjQyMSAzLjUgNSAzLjgzNTc5IDUgNC4yNVpcIiBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMS4xXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF8xNDUwOF8xODU4M1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCIgZmlsbD1cIndoaXRlXCIvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPnt7aXRlbT8uY291bnR9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRpdmlkZXJcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgbmdiQWNjb3JkaW9uQ29sbGFwc2U+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IG5nYkFjY29yZGlvbkJvZHkgY2xhc3M9XCJweS0wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaC1hdXRvXCIgKGRyYWdvdmVyKT1cImFsbG93RHJvcCgkZXZlbnQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyIGl0ZW1cIiA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIml0ZW1cIiAqbmdGb3I9XCJsZXQgb2JqIG9mIGl0ZW0/LnZhbHVlXCIgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBkcmFnZ2FibGU9XCJ0cnVlXCIgKGRyYWdzdGFydCk9XCJkcmFnKCRldmVudClcIiBpZD1cInt7b2JqLmltZ19pZH19XCIgbmFtZT1cInt7aXRlbS50eXBlfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm15LTMgbXgtMiBpbWdcIiBbc3JjXT1cIm9iai5pbWdfcGF0aFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWNlbnRlciBtLTAgZnMtNyBmdy1ib2xkXCI+e3tvYmouaW1nX25hbWV9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgbmdiQWNjb3JkaW9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdC02XCIgbmdiQWNjb3JkaW9uSXRlbSBbY29sbGFwc2VkXT1cIiEoIWp1bmtjb3VudCAmJiAhZW1wbG95ZWVjb3VudClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBuZ2JBY2NvcmRpb25IZWFkZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwibWFpbmhlYWRpbmdcIiBuZ2JBY2NvcmRpb25CdXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pcXVlIEN1c3RvbWVyICA8c3BhbiBjbGFzcz1cInN1Yi10ZXh0IG10LTIgbXMtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImJhZGdlIGJhZGdlLWxpZ2h0LWRlZmF1bHRcIj48c3ZnIGNsYXNzPVwibWUtMlwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTJcIiB2aWV3Qm94PVwiMCAwIDEyIDEyXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfMTU4MDBfMzkxMSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNOC41IDEwLjVWOS41QzguNSA4Ljk2OTU3IDguMjg5MjkgOC40NjA4NiA3LjkxNDIxIDguMDg1NzlDNy41MzkxNCA3LjcxMDcxIDcuMDMwNDMgNy41IDYuNSA3LjVIMi41QzEuOTY5NTcgNy41IDEuNDYwODYgNy43MTA3MSAxLjA4NTc5IDguMDg1NzlDMC43MTA3MTQgOC40NjA4NiAwLjUgOC45Njk1NyAwLjUgOS41VjEwLjVNMTEuNSAxMC41VjkuNUMxMS40OTk3IDkuMDU2ODYgMTEuMzUyMiA4LjYyNjM5IDExLjA4MDcgOC4yNzYxNkMxMC44MDkyIDcuOTI1OTMgMTAuNDI5MSA3LjY3NTc4IDEwIDcuNTY1TTggMS41NjVDOC40MzAyMSAxLjY3NTE1IDguODExNTIgMS45MjUzNSA5LjA4MzgyIDIuMjc2MTZDOS4zNTYxMiAyLjYyNjk2IDkuNTAzOTIgMy4wNTg0MSA5LjUwMzkyIDMuNTAyNUM5LjUwMzkyIDMuOTQ2NTkgOS4zNTYxMiA0LjM3ODA0IDkuMDgzODIgNC43Mjg4NEM4LjgxMTUyIDUuMDc5NjUgOC40MzAyMSA1LjMyOTg1IDggNS40NE02LjUgMy41QzYuNSA0LjYwNDU3IDUuNjA0NTcgNS41IDQuNSA1LjVDMy4zOTU0MyA1LjUgMi41IDQuNjA0NTcgMi41IDMuNUMyLjUgMi4zOTU0MyAzLjM5NTQzIDEuNSA0LjUgMS41QzUuNjA0NTcgMS41IDYuNSAyLjM5NTQzIDYuNSAzLjVaXCIgc3Ryb2tlPVwiIzY2NzA4NVwiIHN0cm9rZS13aWR0aD1cIjEuMVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMTU4MDBfMzkxMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCIgZmlsbD1cIndoaXRlXCIvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPiB7e2N1c3RvbWVyY291bnR9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRpdmlkZXJcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgbmdiQWNjb3JkaW9uQ29sbGFwc2U+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IG5nYkFjY29yZGlvbkJvZHkgY2xhc3M9XCJweS0wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImgtNTAwXCIgKGRyYWdvdmVyKT1cImFsbG93RHJvcCgkZXZlbnQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInJlc2V0R3JvdXBOdW1iZXIoKSA9PT0gbnVsbFwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IG9iaiBvZiBhdWRpdG1hcHBpbmdkYXRhO2xldCBpPWluZGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJvYmo/LmNvdW50ID09PSAxXCIgY2xhc3M9XCJpdGVtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGltZyBvZiBvYmo/Lm1hcHBlZGlkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgZHJhZ2dhYmxlPVwidHJ1ZVwiIG5hbWU9XCJ7e29iai5pbWdfaWR9fVwiIChkcmFnc3RhcnQpPVwiZHJhZygkZXZlbnQpXCIgKGNsaWNrKT1cInRvZ2dsZUltYWdlKGltZz8uaW1nX25hbWUgKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwie3tpbWcuaW1nX2lkfX1cIiBjbGFzcz1cIm15LTMgbXgtMiBpbWdcIiBbc3JjXT1cImltZy5pbWdfcGF0aFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1jZW50ZXIgbS0wIGZzLTcgZnctYm9sZFwiPnt7aW1nLmltZ19uYW1lfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8c3BhbiAqbmdJZj1cIm9iaj8uZGVtb2dyYXBoaWMgIT09ICdkJ1wiIGNsYXNzPVwibm90aWZ5LWJhZGdlMiB3LTI1cHggaC0yNXB4IGN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cInRvZ2dsZUltYWdlKGltZz8uaW1nX25hbWUgKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwib2JqPy5kZW1vZ3JhcGhpYyA9PT0gJ2QnXCIgY2xhc3M9XCJub3RpZnktYmFkZ2VcIiAoY2xpY2spPVwidG9nZ2xlSW1hZ2UoaW1nPy5pbWdfbmFtZSApXCI+PGkgY2xhc3M9XCJmYSBmYS1jaGVja1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cImZvbnQtc2l6ZToxNXB4O2NvbG9yOiMwMEEzRkZcIj48L2k+PC9zcGFuPiAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIGNsYXNzPVwibXQtNVwiICpuZ0Zvcj1cImxldCBvYmogb2YgYXVkaXRtYXBwaW5nZGF0YTtsZXQgaT1pbmRleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwib2JqPy5jb3VudCA+IDFcIiBjbGFzcz1cImNhcmQtbGFiZWwgbXQtM1wiPkdyb3VwIHt7IGdldEdyb3VwTnVtYmVyKG9iaikgfX0gPHNwYW4gY2xhc3M9XCJzdWItdGV4dCBtdC0zIG1zLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYmFkZ2UgYmFkZ2UtbGlnaHQtZGVmYXVsdFwiPjxzdmcgY2xhc3M9XCJtZS0yXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIxMlwiIHZpZXdCb3g9XCIwIDAgMTIgMTJcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfMTQ1MDhfMTg1ODMpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0yLjUgMTAuNUg5LjVDMTAuMDUyMyAxMC41IDEwLjUgMTAuMDUyMyAxMC41IDkuNVYyLjVDMTAuNSAxLjk0NzcyIDEwLjA1MjMgMS41IDkuNSAxLjVIMi41QzEuOTQ3NzIgMS41IDEuNSAxLjk0NzcyIDEuNSAyLjVWOS41QzEuNSAxMC4wNTIzIDEuOTQ3NzIgMTAuNSAyLjUgMTAuNVpNMi41IDEwLjVMOCA1TDEwLjUgNy41TTUgNC4yNUM1IDQuNjY0MjEgNC42NjQyMSA1IDQuMjUgNUMzLjgzNTc5IDUgMy41IDQuNjY0MjEgMy41IDQuMjVDMy41IDMuODM1NzkgMy44MzU3OSAzLjUgNC4yNSAzLjVDNC42NjQyMSAzLjUgNSAzLjgzNTc5IDUgNC4yNVpcIiBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMS4xXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF8xNDUwOF8xODU4M1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIxMlwiIGZpbGw9XCJ3aGl0ZVwiLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz57e29iai5jb3VudH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPHNwYW4gKm5nSWY9XCJvYmo/LmRlbW9ncmFwaGljICE9PSAnZCdcIiBjbGFzcz1cImtpZC1iYWRnZSBjdXJzb3ItcG9pbnRlciBtcy0zIG1lLTNcIiBzdHlsZT1cInBhZGRpbmc6MnB4IDEwLjVweCAhaW1wb3J0YW50XCIgKGNsaWNrKT1cInRvZ2dsZUltYWdlKG9iaj8uaW1nX25hbWUpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIm9iaj8uZGVtb2dyYXBoaWMgPT09ICdkJ1wiIGNsYXNzPVwia2lkLWJhZGdlIGN1cnNvci1wb2ludGVyIG1zLTMgbWUtM1wiIChjbGljayk9XCJ0b2dnbGVJbWFnZShvYmo/LmltZ19uYW1lKVwiPjxpIGNsYXNzPVwiZmEgZmEtY2hlY2tcIiBhcmlhLWhpZGRlbj1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwiZm9udC1zaXplOjE1cHg7Y29sb3I6IzAwQTNGRlwiPjwvaT48L3NwYW4+IE1hcmsgYXMgZGVtb2dyYXBoaWMgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwib2JqLmNvdW50ID4gMVwiIGNsYXNzPVwiaXRlbVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBpbWcgb2Ygb2JqPy5tYXBwZWRpZFwiIGNsYXNzPVwiaXRlbVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIGRyYWdnYWJsZT1cInRydWVcIiBuYW1lPVwie3tvYmouaW1nX2lkfX1cIiAoZHJhZ3N0YXJ0KT1cImRyYWcoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwie3tpbWcuaW1nX2lkfX1cIiBjbGFzcz1cIm15LTMgbXgtMiBpbWdcIiBbc3JjXT1cImltZy5pbWdfcGF0aFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1jZW50ZXIgbS0wIGZzLTcgZnctYm9sZFwiPnt7aW1nLmltZ19uYW1lfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiAqbmdJZj1cIiFhdWRpdExvYWRpbmdcIiBjbGFzcz1cImNvbC1tZC01XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQgbXQtNVwiPlxyXG4gICAgICAgICAgICA8IS0tIChjaGFuZ2UpPVwiaW1hZ2VhcnJheSgpXCIgLS0+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHkgaC0xMDAwcHhcIiAoZHJvcCk9XCJkcm9wZm9ycmV0YWcoJGV2ZW50KVwiIChkcmFnb3Zlcik9XCJhbGxvd0Ryb3AoJGV2ZW50KVwiID5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWxhYmVsIGZ3LWJvbGQgdGV4dC1kYXJrIG1iLTVcIj5JbWFnZXMgZm9yIFJldGFnZ2luZzwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMiBpdGVtXCIgPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIml0ZW1cIiAqbmdGb3I9XCJsZXQgaXRlbSBvZiByZXRhZ2ltYWdlXCI+XHJcbiAgICAgICAgICAgICAgICA8aW1nICBbc3JjXT1cIml0ZW0uaW1nX3BhdGhcIiBjbGFzcz1cIm15LTIgbXgtNCBpbWctcmV0XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2ICBjbGFzcz1cInRleHQtY2VudGVyIG0tMCBmcy03IGZ3LWJvbGRcIj57e2l0ZW0uaW1nX25hbWV9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJub3RpZnktYmFkZ2UxIGN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cInJlbW92ZWltYWdlKGl0ZW0pXCI+PGkgY2xhc3M9XCJmYSBmYS1jbG9zZVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJmb250LXNpemU6MTVweDtjb2xvcjojMDBBM0ZGXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbjwvZGl2PlxyXG5cclxuPG5nLXRlbXBsYXRlICNjb25maXJtRHJhZnQgbGV0LW1vZGFsPlxyXG4gICAgPGRpdiBjbGFzcz1cImNhcmQgaC1hdXRvIHAtMTBcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1oZWFkZXIgZC1ncmlkIHAtMCBib3JkZXItMFwiPlxyXG4gICAgICAgICAgICA8c3Bhbj48aW1nIHNyYz1cIi4vYXNzZXRzL3RhbmdvL0ltYWdlcy9TdWNjZXNzdG9hc3QucG5nXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICA8IS0tIDxzcGFuICpuZ0lmPVwiZ2V0QmFja1wiPjxpbWcgc3JjPVwiLi9hc3NldHMvdGFuZ28vY3VzdG9tcG9wdXAtSWNvbnMvZGFuZ2VyLWljb24uc3ZnXCI+PC9zcGFuPiAgLS0+XHJcbiAgICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cImNhcmQtbGFiZWwgbXQtNVwiPkRvIHlvdSB3YW50IHRvIHN1Ym1pdCB5b3VyIGNoYW5nZXMgd2l0aG91dCBkZW1vZ3JhcGhpYz88L2Rpdj4gLS0+XHJcbiAgICAgICAgICAgIDwhLS0gPGRpdiAqbmdJZj1cImdldEJhY2tcIiBjbGFzcz1cImNhcmQtbGFiZWwgbXQtNVwiPlVuc2F2ZWQgQ2hhbmdlczwvZGl2PiAtLT5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IHAtMFwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidy0xMDAgZC1mbGV4IG10LTEwXCI+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lIHctNTAgbWUtMiBmdy1ib2xkXCIgKGNsaWNrKT1cIm1vZGFsLmNsb3NlKCdpc0RlbmllZCcpXCI+Q2FuY2VsPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IHNhdmVidG4gdy01MCBtcy0yXCIgKGNsaWNrKT1cIm1vZGFsLmNsb3NlKCdpc0NvbmZpcm1lZCcpXCI+T2s8L2J1dHRvbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuIl19
|