tango-app-ui-ticket-user 3.3.0-beta.6 → 3.3.0-beta.8

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.
@@ -133,6 +133,7 @@ export class AuditWorkspaceComponent {
133
133
  this.dropDown = !this.dropDown;
134
134
  }
135
135
  userValue(data) {
136
+ this.searchAudit = '';
136
137
  this.userData = data;
137
138
  this.limit = 10;
138
139
  this.offset = 1;
@@ -350,13 +351,13 @@ export class AuditWorkspaceComponent {
350
351
  this.selectedClient = false;
351
352
  }
352
353
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AuditWorkspaceComponent, deps: [{ token: i1.ActivatedRoute }, { token: i1.Router }, { token: i0.ChangeDetectorRef }, { token: i2.DataService }, { token: i3.ToastService }, { token: i4.TicketsService }, { token: i2.DataService }, { token: i5.GlobalStateService }, { token: i6.ExcelService }, { token: i7.NgbModal }, { token: i5.LayoutService }, { token: i8.AuthService }], target: i0.ɵɵFactoryTarget.Component });
353
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: AuditWorkspaceComponent, selector: "lib-audit-workspace", host: { listeners: { "document:click": "onClick($event)" } }, ngImport: i0, template: "<div class=\"card\">\r\n <div class=\"card-header border-0 pt-3\">\r\n <h3 class=\"card-title align-items-start flex-column\">\r\n <span class=\"card-label mb-2\">Audit Tickets</span>\r\n </h3>\r\n <div *ngIf=\"userData ==='Workspace'\" class=\"card-toolbar\">\r\n <div class=\"d-flex\">\r\n <div class=\"d-flex align-items-center position-relative my-1\">\r\n <span class=\"svg-icon svg-icon-1 position-absolute ms-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <rect opacity=\"0.5\" x=\"17.0365\" y=\"15.1223\" width=\"8.15546\" height=\"2\" rx=\"1\"\r\n transform=\"rotate(45 17.0365 15.1223)\" fill=\"currentColor\"></rect>\r\n <path\r\n d=\"M11 19C6.55556 19 3 15.4444 3 11C3 6.55556 6.55556 3 11 3C15.4444 3 19 6.55556 19 11C19 15.4444 15.4444 19 11 19ZM11 5C7.53333 5 5 7.53333 5 11C5 14.4667 7.53333 17 11 17C14.4667 17 17 14.4667 17 11C17 7.53333 14.4667 5 11 5Z\"\r\n fill=\"currentColor\"></path>\r\n </svg>\r\n </span>\r\n <input type=\"text\" class=\"form-control ps-14 me-2\" \r\n placeholder=\"Search\" autocomplete=\"off\" (change)=\"searchAudits($event)\"/>\r\n <button type=\"button\" (click)=\"exportAuditAsXlsx()\"\r\n class=\"btn btn-default mx-2 btn-outline btn-outline-default rounded-3 text-nowrap border-val\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M17.5 12.5V15.8333C17.5 16.2754 17.3244 16.6993 17.0118 17.0118C16.6993 17.3244 16.2754 17.5 15.8333 17.5H4.16667C3.72464 17.5 3.30072 17.3244 2.98816 17.0118C2.67559 16.6993 2.5 16.2754 2.5 15.8333V12.5M14.1667 6.66667L10 2.5M10 2.5L5.83333 6.66667M10 2.5V12.5\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n <span class=\"ms-2\">Export</span>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"userData ==='History'\" class=\"card-toolbar\">\r\n <div class=\"d-flex\">\r\n <div class=\"d-flex align-items-center position-relative my-1\">\r\n <span class=\"svg-icon svg-icon-1 position-absolute ms-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <rect opacity=\"0.5\" x=\"17.0365\" y=\"15.1223\" width=\"8.15546\" height=\"2\" rx=\"1\"\r\n transform=\"rotate(45 17.0365 15.1223)\" fill=\"currentColor\"></rect>\r\n <path\r\n d=\"M11 19C6.55556 19 3 15.4444 3 11C3 6.55556 6.55556 3 11 3C15.4444 3 19 6.55556 19 11C19 15.4444 15.4444 19 11 19ZM11 5C7.53333 5 5 7.53333 5 11C5 14.4667 7.53333 17 11 17C14.4667 17 17 14.4667 17 11C17 7.53333 14.4667 5 11 5Z\"\r\n fill=\"currentColor\"></path>\r\n </svg>\r\n </span>\r\n <input type=\"text\" class=\"form-control ps-14 me-2\" \r\n placeholder=\"Search\" autocomplete=\"off\" [(ngModel)]=\"searchHistory\" (input)=\"searchHistoryTable()\" />\r\n\r\n <lib-filters *ngIf=\"storeList\" [dataObject]=\"dataObject\" (appliedFilters)=\"receiveData($event)\" ></lib-filters>\r\n\r\n <div *ngIf=\"!historyNodata\" class=\"position-relative\">\r\n <button type=\"button\" (click)=\"exportHistoryasXlsx()\"\r\n class=\"btn btn-default mx-2 btn-outline btn-outline-default rounded-3 text-nowrap border-val\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M17.5 12.5V15.8333C17.5 16.2754 17.3244 16.6993 17.0118 17.0118C16.6993 17.3244 16.2754 17.5 15.8333 17.5H4.16667C3.72464 17.5 3.30072 17.3244 2.98816 17.0118C2.67559 16.6993 2.5 16.2754 2.5 15.8333V12.5M14.1667 6.66667L10 2.5M10 2.5L5.83333 6.66667M10 2.5V12.5\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n <span class=\"ms-2\">Export</span>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"card-body py-2\">\r\n <div class=\"d-flex overflow-auto h-55px\">\r\n <ul class=\"nav nav-stretch nav-line-tabs nav-line-tabs-2x border-transparent fs-5 fw-bolder flex-nowrap\">\r\n <li (click)=\"userValue('Workspace')\" class=\"nav-item cursor-pointer\"><a [ngClass]=\"userData ==='Workspace' ? 'active' :''\"\r\n class=\"nav-link text-active-primary me-6\">Workspace</a>\r\n </li>\r\n <li (click)=\"userValue('History')\" class=\"nav-item cursor-pointer\"><a [ngClass]=\"userData ==='History' ? 'active' :''\"\r\n class=\"nav-link text-active-primary me-6\">History</a></li>\r\n </ul>\r\n </div>\r\n <div class=\"d-flex justify-content-between mt-10\"><div class=\"d-flex\">\r\n <div *ngIf=\"userData === 'History'\" (click)=\"selectType('all')\" [ngClass]=\"selectedType === 'all' ? 'active text-primary' : 'textSub'\" class=\"pe-5 py-3 rounded-3 cursor-pointer fw-semibold\r\n fw-semibold \">All</div>\r\n <div (click)=\"selectType('traffic')\" [ngClass]=\"selectedType === 'traffic' ? 'active text-primary' : 'textSub'\" class=\"px-5 py-3 rounded-3 cursor-pointer fw-semibold\r\n fw-semibold \">Traffic</div>\r\n <div (click)=\"selectType('zone')\" [ngClass]=\"selectedType === 'zone' ? 'active text-primary' : 'textSub'\" class=\"px-5 py-3 rounded-3 cursor-pointer fw-semibold\r\n fw-semibold\">Zone</div></div>\r\n <div *ngIf=\"selectedClient\" (click)=\"backtoZone()\" class=\"btn btn-outline px-4 py-3 cursor-pointer\">\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\">\r\n <path d=\"M12.8327 6.99935H1.16602M1.16602 6.99935L6.99935 12.8327M1.16602 6.99935L6.99935 1.16602\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg> \r\n </div>\r\n </div>\r\n <!-- *ngIf=\"userData === 'History' && selectedType === 'traffic'\" -->\r\n <div *ngIf=\"userData === 'History'\">\r\n <div *ngIf=\"!historyLoading && !historyNodata\" class=\"pt-10\">\r\n <div class=\"table-responsive\"> \r\n <table class=\"table bottom-border text-nowrap\">\r\n <thead>\r\n <tr>\r\n <th><div class=\"cursor-pointer\" (click)=\"sortData('fileDate')\">\r\n File Date\r\n <span *ngIf=\"sortColumName === 'fileDate' && sortBy !== 1 || sortColumName !== 'fileDate' \">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M6.00016 1.33337V10.6667M6.00016 10.6667L10.6668 6.00004M6.00016 10.6667L1.3335 6.00004\"\r\n stroke=\"#667085\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <span *ngIf=\"sortColumName === 'fileDate' && sortBy !== -1\">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M6.00016 10.6667L6.00016 1.33337M6.00016 1.33337L1.3335 6.00004M6.00016 1.33337L10.6668 6.00004\"\r\n stroke=\"#009BF3\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n <th><div class=\"cursor-pointer\" (click)=\"sortData('clientName')\">\r\n Brand Name\r\n <span *ngIf=\"sortColumName === 'clientName' && sortBy !== 1 || sortColumName !== 'clientName' \">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M6.00016 1.33337V10.6667M6.00016 10.6667L10.6668 6.00004M6.00016 10.6667L1.3335 6.00004\"\r\n stroke=\"#667085\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <span *ngIf=\"sortColumName === 'clientName' && sortBy !== -1\">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M6.00016 10.6667L6.00016 1.33337M6.00016 1.33337L1.3335 6.00004M6.00016 1.33337L10.6668 6.00004\"\r\n stroke=\"#009BF3\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n </th>\r\n <th><div class=\"cursor-pointer\" (click)=\"sortData('clientId')\">\r\n Brand ID\r\n <span *ngIf=\"sortColumName === 'clientId' && sortBy !== 1 || sortColumName !== 'clientId' \">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M6.00016 1.33337V10.6667M6.00016 10.6667L10.6668 6.00004M6.00016 10.6667L1.3335 6.00004\"\r\n stroke=\"#667085\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <span *ngIf=\"sortColumName === 'clientId' && sortBy !== -1\">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M6.00016 10.6667L6.00016 1.33337M6.00016 1.33337L1.3335 6.00004M6.00016 1.33337L10.6668 6.00004\"\r\n stroke=\"#009BF3\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n </th>\r\n <th><div class=\"cursor-pointer\" (click)=\"sortData('storeName')\">\r\n Store Name\r\n <span *ngIf=\"sortColumName === 'storeName' && sortBy !== 1 || sortColumName !== 'storeName'\">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M6.00016 1.33337V10.6667M6.00016 10.6667L10.6668 6.00004M6.00016 10.6667L1.3335 6.00004\"\r\n stroke=\"#667085\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <span *ngIf=\"sortColumName === 'storeName' && sortBy !== -1\">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M6.00016 10.6667L6.00016 1.33337M6.00016 1.33337L1.3335 6.00004M6.00016 1.33337L10.6668 6.00004\"\r\n stroke=\"#009BF3\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n </th>\r\n <th><div class=\"cursor-pointer\" (click)=\"sortData('storeId')\">\r\n Store ID\r\n <span *ngIf=\"sortColumName === 'storeId' && sortBy !== 1 || sortColumName !== 'storeId'\">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M6.00016 1.33337V10.6667M6.00016 10.6667L10.6668 6.00004M6.00016 10.6667L1.3335 6.00004\"\r\n stroke=\"#667085\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <span *ngIf=\"sortColumName === 'storeId' && sortBy !== -1\">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M6.00016 10.6667L6.00016 1.33337M6.00016 1.33337L1.3335 6.00004M6.00016 1.33337L10.6668 6.00004\"\r\n stroke=\"#009BF3\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n </th>\r\n <th><div class=\"cursor-pointer\" (click)=\"sortData('auditType')\">Audit Type\r\n <span *ngIf=\"sortColumName === 'auditType' && sortBy !== 1 || sortColumName !== 'auditType'\">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M6.00016 1.33337V10.6667M6.00016 10.6667L10.6668 6.00004M6.00016 10.6667L1.3335 6.00004\"\r\n stroke=\"#667085\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <span *ngIf=\"sortColumName === 'auditType' && sortBy !== -1\">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M6.00016 10.6667L6.00016 1.33337M6.00016 1.33337L1.3335 6.00004M6.00016 1.33337L10.6668 6.00004\"\r\n stroke=\"#009BF3\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span></div>\r\n </th>\r\n <th *ngIf=\"selectedType === 'all'\">Product Type</th>\r\n <th *ngIf=\"selectedType !== 'traffic'\"><div class=\"cursor-pointer\" (click)=\"sortData('zoneName')\">\r\n Zone Name\r\n <span *ngIf=\"sortColumName === 'zoneName' && sortBy !== 1 || sortColumName !== 'zoneName'\">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M6.00016 1.33337V10.6667M6.00016 10.6667L10.6668 6.00004M6.00016 10.6667L1.3335 6.00004\"\r\n stroke=\"#667085\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <span *ngIf=\"sortColumName === 'zoneName' && sortBy !== -1\">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M6.00016 10.6667L6.00016 1.33337M6.00016 1.33337L1.3335 6.00004M6.00016 1.33337L10.6668 6.00004\"\r\n stroke=\"#009BF3\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span></div></th>\r\n <th><div class=\"cursor-pointer\" (click)=\"sortData('beforeCount')\">\r\n BC\r\n <span *ngIf=\"sortColumName === 'beforeCount' && sortBy !== 1 || sortColumName !== 'beforeCount'\">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M6.00016 1.33337V10.6667M6.00016 10.6667L10.6668 6.00004M6.00016 10.6667L1.3335 6.00004\"\r\n stroke=\"#667085\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <span *ngIf=\"sortColumName === 'beforeCount' && sortBy !== -1\">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M6.00016 10.6667L6.00016 1.33337M6.00016 1.33337L1.3335 6.00004M6.00016 1.33337L10.6668 6.00004\"\r\n stroke=\"#009BF3\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span></div>\r\n </th>\r\n <th><div class=\"cursor-pointer\" (click)=\"sortData('afterCount')\">\r\n AC\r\n <span *ngIf=\"sortColumName === 'afterCount' && sortBy !== 1 || sortColumName !== 'afterCount'\">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M6.00016 1.33337V10.6667M6.00016 10.6667L10.6668 6.00004M6.00016 10.6667L1.3335 6.00004\"\r\n stroke=\"#667085\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <span *ngIf=\"sortColumName === 'afterCount' && sortBy !== -1\">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M6.00016 10.6667L6.00016 1.33337M6.00016 1.33337L1.3335 6.00004M6.00016 1.33337L10.6668 6.00004\"\r\n stroke=\"#009BF3\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span></div>\r\n </th>\r\n <th><div class=\"cursor-pointer\" (click)=\"sortData('accuracy')\">Accuracy\r\n <span *ngIf=\"sortColumName === 'accuracy' && sortBy !== 1 || sortColumName !== 'accuracy'\">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M6.00016 1.33337V10.6667M6.00016 10.6667L10.6668 6.00004M6.00016 10.6667L1.3335 6.00004\"\r\n stroke=\"#667085\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <span *ngIf=\"sortColumName === 'accuracy' && sortBy !== -1\">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M6.00016 10.6667L6.00016 1.33337M6.00016 1.33337L1.3335 6.00004M6.00016 1.33337L10.6668 6.00004\"\r\n stroke=\"#009BF3\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span></div>\r\n </th>\r\n <th><div class=\"cursor-pointer\" (click)=\"sortData('startTime')\">Start Time\r\n <span *ngIf=\"sortColumName === 'startTime' && sortBy !== 1 || sortColumName !== 'startTime'\">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M6.00016 1.33337V10.6667M6.00016 10.6667L10.6668 6.00004M6.00016 10.6667L1.3335 6.00004\"\r\n stroke=\"#667085\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <span *ngIf=\"sortColumName === 'startTime' && sortBy !== -1\">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M6.00016 10.6667L6.00016 1.33337M6.00016 1.33337L1.3335 6.00004M6.00016 1.33337L10.6668 6.00004\"\r\n stroke=\"#009BF3\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span></div>\r\n </th>\r\n <th><div class=\"cursor-pointer\" (click)=\"sortData('endTime')\">End Time\r\n <span *ngIf=\"sortColumName === 'endTime' && sortBy !== 1 || sortColumName !== 'endTime'\">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M6.00016 1.33337V10.6667M6.00016 10.6667L10.6668 6.00004M6.00016 10.6667L1.3335 6.00004\"\r\n stroke=\"#667085\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <span *ngIf=\"sortColumName === 'endTime' && sortBy !== -1\">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M6.00016 10.6667L6.00016 1.33337M6.00016 1.33337L1.3335 6.00004M6.00016 1.33337L10.6668 6.00004\"\r\n stroke=\"#009BF3\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span></div>\r\n </th>\r\n <th><div class=\"cursor-pointer\" (click)=\"sortData('timeSpent')\">Time Spent\r\n <span *ngIf=\"sortColumName === 'timeSpent' && sortBy !== 1 || sortColumName !== 'timeSpent'\">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M6.00016 1.33337V10.6667M6.00016 10.6667L10.6668 6.00004M6.00016 10.6667L1.3335 6.00004\"\r\n stroke=\"#667085\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <span *ngIf=\"sortColumName === 'timeSpent' && sortBy !== -1\">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M6.00016 10.6667L6.00016 1.33337M6.00016 1.33337L1.3335 6.00004M6.00016 1.33337L10.6668 6.00004\"\r\n stroke=\"#009BF3\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span></div>\r\n </th>\r\n <th><div class=\"cursor-pointer\" (click)=\"sortData('createdAt')\">Audited Date\r\n <span *ngIf=\"sortColumName === 'createdAt' && sortBy !== 1 || sortColumName !== 'createdAt'\">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M6.00016 1.33337V10.6667M6.00016 10.6667L10.6668 6.00004M6.00016 10.6667L1.3335 6.00004\"\r\n stroke=\"#667085\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <span *ngIf=\"sortColumName === 'createdAt' && sortBy !== -1\">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M6.00016 10.6667L6.00016 1.33337M6.00016 1.33337L1.3335 6.00004M6.00016 1.33337L10.6668 6.00004\"\r\n stroke=\"#009BF3\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span></div>\r\n </th>\r\n <th><div class=\"cursor-pointer\" (click)=\"sortData('auditStatus')\">Status\r\n <span *ngIf=\"sortColumName === 'auditStatus' && sortBy !== 1 || sortColumName !== 'auditStatus'\">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M6.00016 1.33337V10.6667M6.00016 10.6667L10.6668 6.00004M6.00016 10.6667L1.3335 6.00004\"\r\n stroke=\"#667085\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <span *ngIf=\"sortColumName === 'auditStatus' && sortBy !== -1\">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M6.00016 10.6667L6.00016 1.33337M6.00016 1.33337L1.3335 6.00004M6.00016 1.33337L10.6668 6.00004\"\r\n stroke=\"#009BF3\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span></div>\r\n </th>\r\n <th>Action\r\n \r\n </th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let history of workHistorydata; let i = index\" class=\"tr-padding\">\r\n <td>{{history?.fileDate ? history?.fileDate : '--'}}</td>\r\n <td>{{history?.clientName ? history?.clientName :'--'}}</td>\r\n <td>{{history?.clientId ? history?.clientId :'--'}}</td>\r\n <td>{{history?.storeName ? history?.storeName : '--'}}</td>\r\n <td>{{history?.storeId ? history?.storeId : '--'}}</td>\r\n <td>{{history?.auditType ==='ReAudit' ? 'Re-Audit' : history?.auditType}}</td>\r\n <td *ngIf=\"selectedType === 'all'\">{{history?.moduleType | titlecase}}</td>\r\n <td *ngIf=\"selectedType !== 'traffic'\">{{ history?.moduleType ==='traffic' ? '--' : history?.zoneName}}</td>\r\n <td>{{history?.beforeCount ?? '--'}}</td>\r\n <td>{{history?.afterCount ?? '--'}}</td>\r\n <td>{{history?.accuracy ?? '--'}}</td>\r\n <td>{{history?.startTime ? history?.startTime :'--'}}</td>\r\n <td>{{history?.endTime ? history?.endTime :'--'}}</td>\r\n <td>{{history?.timeSpent ? history?.timeSpent :'--'}}</td>\r\n <td>{{history?.createdAt ? (history?.createdAt | customDateFormat) :'--'}}</td>\r\n <td>\r\n <span *ngIf=\"history.auditStatus !== 'not_assign'\" [ngClass]=\"history?.auditStatus ==='completed' ? 'badge-light-success' : (history?.auditStatus ==='drafted' ? 'badge-light-danger' :'badge-light-primary')\" class=\"badge\">{{history.auditStatus | titlecase}}</span>\r\n <span *ngIf=\"history.auditStatus === 'not_assign'\" class=\"badge badge-light-danger\">Not Assigned</span>\r\n </td>\r\n <td><span class=\"cursor-pointer\" (click)=\"viewHistory(history)\">\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=\"M0.833374 10C0.833374 10 4.16671 3.33337 10 3.33337C15.8334 3.33337 19.1667 10 19.1667 10C19.1667 10 15.8334 16.6667 10 16.6667C4.16671 16.6667 0.833374 10 0.833374 10Z\" stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n <path d=\"M10 12.5C11.3808 12.5 12.5 11.3808 12.5 10C12.5 8.61933 11.3808 7.50004 10 7.50004C8.61933 7.50004 7.50004 8.61933 7.50004 10C7.50004 11.3808 8.61933 12.5 10 12.5Z\" stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg></span>\r\n </td>\r\n </tr>\r\n </tbody>\r\n \r\n </table> \r\n </div>\r\n <lib-pagination [itemsPerPage]=\"limit\" [currentPage]=\"offset\"\r\n [totalItems]=\"totalCount\" [paginationSizes]=\"paginationSizes\" [pageSize]=\"setLimit()\"\r\n (pageChange)=\"onPageChange($event)\" (pageSizeChange)=\"onPageSizeChange($event)\"></lib-pagination>\r\n </div> \r\n <ng-container *ngIf=\"historyLoading\" >\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 \r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"historyNodata\">\r\n <div class=\"row\">\r\n <div class=\"col-lg-12 mb-3\">\r\n <div class=\"card-body d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-src\" src=\"./assets/tango/Icons/Nodata.svg\" alt=\"\">\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <div *ngIf=\"userData === 'Workspace'\">\r\n <lib-audit-management [searchAudit]=\"searchAudit\" [selectedType]=\"selectedType\" [selectedClient]=\"selectedClient\" [clientId]=\"clientId\"></lib-audit-management>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".rowbody{background:var(--Gray-50, #F9FAFB)}.issuecard{border-radius:8px;border:1px solid var(--Gray-100, #F2F4F7);background:var(--White, #FFF);box-shadow:0 1px 2px #1018280d;padding:14px 12px}.issuecard label{color:var(--Black, #101828);font-size:16px;line-height:24px}.issuecard.active{background:var(--Primary-25, #F6FCFF);box-shadow:0 2px 4px -2px #1018280f,0 4px 8px -2px #1018281a}.active{border:none;background:var(--Primary-50, #EAF8FF);padding:8px 12px}.fw-bold-700{font-weight:700!important}.fw-bold-400{font-weight:400!important}.profile{width:24px;height:24px;overflow:hidden;border-radius:200px}.msgprofile{width:48px!important;height:48px!important;border-radius:200px;overflow:hidden}.timingtext{color:var(--Gray-500, #667085);font-size:12px;line-height:18px}.bg-badge{background-color:#776f6f29!important}.items:hover,.tems.focus,.items.active,.camera.focus-visible{background:var(--Gray-50, #F9FAFB)}.textSub{color:var(--Gray-500, #667085);font-size:14px;font-weight:400;line-height:20px}.taketicket{color:var(--Gray-500, #667085);font-size:16px;line-height:24px}tr{vertical-align:middle!important}.img-src{width:25%}.mh-60vh{height:40vh!important}.min-height-60vh{min-height:50vh!important}.text-primary{color:var(--Primary-700, #009BF3)!important;font-family:Inter;font-size:14px;font-weight:500}table th,table td{height:44px!important;padding:12px 24px!important;align-items:center;gap:12px;align-self:stretch}.daterangepicker{display:block!important;top:153.85px!important;left:900px!important;right:0}.form-control{color:var(--Gray-700, #344054)!important;font-size:14px!important;font-weight:600;line-height:20px;text-transform:capitalize}::ng-deep .applyBtn{display:none!important}:host::ng-deep .md-drppicker .btn{line-height:10px!important}:host::ng-deep .daterangepicker-input+.ngx-daterangepicker-material .applyBtn{display:none}:host::ng-deep .md-drppicker.drops-down-right.ltr.double.show-ranges.shown{top:65px!important;left:-470px!important;height:450px!important}:host::ng-deep .md-drppicker .btn{border-radius:8px!important;border:1px solid var(--Primary-600, #00A3FF)!important;background:var(--Primary-600, #00A3FF)!important;box-shadow:0 1px 2px #1018280d!important;color:var(--White, #FFF)!important;font-size:14px!important;font-weight:600!important;line-height:20px;text-transform:capitalize}:host::ng-deep .md-drppicker .ranges ul li button{padding:12px 16px;width:160px;color:var(--Gray-700, #344054);font-size:14px;font-weight:400;line-height:20px;background:none;border:none;text-align:left;cursor:pointer}:host::ng-deep .md-drppicker td.active,:host::ng-deep .md-drppicker td.active:hover{background-color:#029cf4!important;border-radius:20px!important;color:var(--White, #FFF)!important;text-align:center!important;font-size:14px!important;font-weight:500!important;line-height:20px}:host::ng-deep .md-drppicker.ltr .ranges{float:left;margin-top:10px!important}:host::ng-deep .md-drppicker td.in-range{background:var(--Primary-50, #EAF8FF)}:host::ng-deep .md-drppicker .ranges ul li button.active{background:var(--Primary-50, #EAF8FF)!important;border-radius:8px!important;color:var(--Primary-700, #009BF3);font-size:14px!important;font-weight:500!important;line-height:20px!important}:host::ng-deep table th,:host::ng-deep table td{width:40px!important;height:40px!important;padding:10px 8px!important}:host::ng-deep .md-drppicker td.available.prev,:host::ng-deep .md-drppicker th.available.prev{background-image:url(data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB2aWV3Qm94PSIwIDAgMy43IDYiIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDMuNyA2IiB4bWw6c3BhY2U9InByZXNlcnZlIj4NCjxnPg0KCTxwYXRoIGQ9Ik0zLjcsMC43TDEuNCwzbDIuMywyLjNMMyw2TDAsM2wzLTNMMy43LDAuN3oiLz4NCjwvZz4NCjwvc3ZnPg0K)!important;background-repeat:no-repeat!important;background-size:.5em!important;background-position:center!important}:host::ng-deep .md-drppicker td.available.next,:host::ng-deep .md-drppicker th.available.next{background-image:url(data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB2aWV3Qm94PSIwIDAgMy43IDYiIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDMuNyA2IiB4bWw6c3BhY2U9InByZXNlcnZlIj4NCjxnPg0KCTxwYXRoIGQ9Ik0zLjcsMC43TDEuNCwzbDIuMywyLjNMMyw2TDAsM2wzLTNMMy43LDAuN3oiLz4NCjwvZz4NCjwvc3ZnPg0K)!important;background-repeat:no-repeat!important;background-size:.5em!important;background-position:center!important}:host::ng-deep .md-drppicker .btn.btn-default{border-radius:8px!important;border:1px solid var(--Gray-300, #D0D5DD)!important;background:var(--White, #FFF)!important;box-shadow:0 1px 2px #1018280d!important;color:var(--Gray-700, #344054)!important;font-size:14px!important;font-weight:600!important;line-height:20px;text-transform:capitalize;margin-right:10px!important}:host::ng-deep .md-drppicker td.available.invalid-date{text-decoration:line-through;pointer-events:none;color:#a9a9a9}:host::ng-deep .md-drppicker td.available.today:not(.invalid-date){text-decoration:unset;pointer-events:unset;color:unset}.test-col{color:var(--gray-800, #1D2939);font-family:Inter!important;font-size:32px;font-style:normal;font-weight:400;line-height:40px;letter-spacing:-.64px}.test{margin:11px 5px!important}.tr-padding{height:60px!important}\n"], dependencies: [{ kind: "directive", type: i9.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i9.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i9.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i10.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i10.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i10.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i3.PaginationComponent, selector: "lib-pagination", inputs: ["collection", "itemsPerPage", "currentPage", "totalItems", "directionLinks", "pageSize", "paginationSizes"], outputs: ["pageChange", "pageSizeChange"] }, { kind: "component", type: i3.FiltersComponent, selector: "lib-filters", inputs: ["dataObject"], outputs: ["appliedFilters"] }, { kind: "component", type: i11.AuditManagementComponent, selector: "lib-audit-management", inputs: ["searchAudit", "selectedType", "selectedClient", "clientId"] }, { kind: "pipe", type: i9.TitleCasePipe, name: "titlecase" }, { kind: "pipe", type: i3.CustomDateFormatPipe, name: "customDateFormat" }] });
354
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: AuditWorkspaceComponent, selector: "lib-audit-workspace", host: { listeners: { "document:click": "onClick($event)" } }, ngImport: i0, template: "<div class=\"card\">\r\n <div class=\"card-header border-0 pt-3\">\r\n <h3 class=\"card-title align-items-start flex-column\">\r\n <span class=\"card-label mb-2\">Audit Tickets</span>\r\n </h3>\r\n <div *ngIf=\"userData ==='Workspace'\" class=\"card-toolbar\">\r\n <div class=\"d-flex\">\r\n <div class=\"d-flex align-items-center position-relative my-1\">\r\n <span class=\"svg-icon svg-icon-1 position-absolute ms-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <rect opacity=\"0.5\" x=\"17.0365\" y=\"15.1223\" width=\"8.15546\" height=\"2\" rx=\"1\"\r\n transform=\"rotate(45 17.0365 15.1223)\" fill=\"currentColor\"></rect>\r\n <path\r\n d=\"M11 19C6.55556 19 3 15.4444 3 11C3 6.55556 6.55556 3 11 3C15.4444 3 19 6.55556 19 11C19 15.4444 15.4444 19 11 19ZM11 5C7.53333 5 5 7.53333 5 11C5 14.4667 7.53333 17 11 17C14.4667 17 17 14.4667 17 11C17 7.53333 14.4667 5 11 5Z\"\r\n fill=\"currentColor\"></path>\r\n </svg>\r\n </span>\r\n <input type=\"text\" class=\"form-control ps-14 me-2\" \r\n placeholder=\"Search\" autocomplete=\"off\" (change)=\"searchAudits($event)\"/>\r\n <button type=\"button\" (click)=\"exportAuditAsXlsx()\"\r\n class=\"btn btn-default mx-2 btn-outline btn-outline-default rounded-3 text-nowrap border-val\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M17.5 12.5V15.8333C17.5 16.2754 17.3244 16.6993 17.0118 17.0118C16.6993 17.3244 16.2754 17.5 15.8333 17.5H4.16667C3.72464 17.5 3.30072 17.3244 2.98816 17.0118C2.67559 16.6993 2.5 16.2754 2.5 15.8333V12.5M14.1667 6.66667L10 2.5M10 2.5L5.83333 6.66667M10 2.5V12.5\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n <span class=\"ms-2\">Export</span>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"userData ==='History'\" class=\"card-toolbar\">\r\n <div class=\"d-flex\">\r\n <div class=\"d-flex align-items-center position-relative my-1\">\r\n <span class=\"svg-icon svg-icon-1 position-absolute ms-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <rect opacity=\"0.5\" x=\"17.0365\" y=\"15.1223\" width=\"8.15546\" height=\"2\" rx=\"1\"\r\n transform=\"rotate(45 17.0365 15.1223)\" fill=\"currentColor\"></rect>\r\n <path\r\n d=\"M11 19C6.55556 19 3 15.4444 3 11C3 6.55556 6.55556 3 11 3C15.4444 3 19 6.55556 19 11C19 15.4444 15.4444 19 11 19ZM11 5C7.53333 5 5 7.53333 5 11C5 14.4667 7.53333 17 11 17C14.4667 17 17 14.4667 17 11C17 7.53333 14.4667 5 11 5Z\"\r\n fill=\"currentColor\"></path>\r\n </svg>\r\n </span>\r\n <input type=\"text\" class=\"form-control ps-14 me-2\" \r\n placeholder=\"Search\" autocomplete=\"off\" [(ngModel)]=\"searchHistory\" (input)=\"searchHistoryTable()\" />\r\n\r\n <lib-filters *ngIf=\"storeList\" [dataObject]=\"dataObject\" (appliedFilters)=\"receiveData($event)\" ></lib-filters>\r\n\r\n <div *ngIf=\"!historyNodata\" class=\"position-relative\">\r\n <button type=\"button\" (click)=\"exportHistoryasXlsx()\"\r\n class=\"btn btn-default mx-2 btn-outline btn-outline-default rounded-3 text-nowrap border-val\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M17.5 12.5V15.8333C17.5 16.2754 17.3244 16.6993 17.0118 17.0118C16.6993 17.3244 16.2754 17.5 15.8333 17.5H4.16667C3.72464 17.5 3.30072 17.3244 2.98816 17.0118C2.67559 16.6993 2.5 16.2754 2.5 15.8333V12.5M14.1667 6.66667L10 2.5M10 2.5L5.83333 6.66667M10 2.5V12.5\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n <span class=\"ms-2\">Export</span>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"card-body py-2\">\r\n <div class=\"d-flex overflow-auto h-55px\">\r\n <ul class=\"nav nav-stretch nav-line-tabs nav-line-tabs-2x border-transparent fs-5 fw-bolder flex-nowrap\">\r\n <li (click)=\"userValue('Workspace')\" class=\"nav-item cursor-pointer\"><a [ngClass]=\"userData ==='Workspace' ? 'active' :''\"\r\n class=\"nav-link text-active-primary me-6\">Workspace</a>\r\n </li>\r\n <li (click)=\"userValue('History')\" class=\"nav-item cursor-pointer\"><a [ngClass]=\"userData ==='History' ? 'active' :''\"\r\n class=\"nav-link text-active-primary me-6\">History</a></li>\r\n </ul>\r\n </div>\r\n <div class=\"d-flex justify-content-between mt-10\"><div class=\"d-flex\">\r\n <div *ngIf=\"userData === 'History'\" (click)=\"selectType('all')\" [ngClass]=\"selectedType === 'all' ? 'active text-primary' : 'textSub'\" class=\"pe-5 py-3 rounded-3 cursor-pointer fw-semibold\r\n fw-semibold \">All</div>\r\n <div (click)=\"selectType('traffic')\" [ngClass]=\"selectedType === 'traffic' ? 'active text-primary' : 'textSub'\" class=\"px-5 py-3 rounded-3 cursor-pointer fw-semibold\r\n fw-semibold \">Traffic</div>\r\n <div (click)=\"selectType('zone')\" [ngClass]=\"selectedType === 'zone' ? 'active text-primary' : 'textSub'\" class=\"px-5 py-3 rounded-3 cursor-pointer fw-semibold\r\n fw-semibold\">Zone</div></div>\r\n <div *ngIf=\"selectedClient\" (click)=\"backtoZone()\" class=\"btn btn-outline px-4 py-3 cursor-pointer\">\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\">\r\n <path d=\"M12.8327 6.99935H1.16602M1.16602 6.99935L6.99935 12.8327M1.16602 6.99935L6.99935 1.16602\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg> \r\n </div>\r\n </div>\r\n <!-- *ngIf=\"userData === 'History' && selectedType === 'traffic'\" -->\r\n <div *ngIf=\"userData === 'History'\">\r\n <div *ngIf=\"!historyLoading && !historyNodata\" class=\"pt-10\">\r\n <div class=\"table-responsive\"> \r\n <table class=\"table bottom-border text-nowrap\">\r\n <thead>\r\n <tr>\r\n <th><div class=\"cursor-pointer\" (click)=\"sortData('fileDate')\">\r\n File Date\r\n <span *ngIf=\"sortColumName === 'fileDate' && sortBy !== 1 || sortColumName !== 'fileDate' \">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M6.00016 1.33337V10.6667M6.00016 10.6667L10.6668 6.00004M6.00016 10.6667L1.3335 6.00004\"\r\n stroke=\"#667085\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <span *ngIf=\"sortColumName === 'fileDate' && sortBy !== -1\">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M6.00016 10.6667L6.00016 1.33337M6.00016 1.33337L1.3335 6.00004M6.00016 1.33337L10.6668 6.00004\"\r\n stroke=\"#009BF3\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n <th><div class=\"cursor-pointer\" (click)=\"sortData('clientName')\">\r\n Brand Name\r\n <span *ngIf=\"sortColumName === 'clientName' && sortBy !== 1 || sortColumName !== 'clientName' \">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M6.00016 1.33337V10.6667M6.00016 10.6667L10.6668 6.00004M6.00016 10.6667L1.3335 6.00004\"\r\n stroke=\"#667085\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <span *ngIf=\"sortColumName === 'clientName' && sortBy !== -1\">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M6.00016 10.6667L6.00016 1.33337M6.00016 1.33337L1.3335 6.00004M6.00016 1.33337L10.6668 6.00004\"\r\n stroke=\"#009BF3\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n </th>\r\n <th><div class=\"cursor-pointer\" (click)=\"sortData('clientId')\">\r\n Brand ID\r\n <span *ngIf=\"sortColumName === 'clientId' && sortBy !== 1 || sortColumName !== 'clientId' \">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M6.00016 1.33337V10.6667M6.00016 10.6667L10.6668 6.00004M6.00016 10.6667L1.3335 6.00004\"\r\n stroke=\"#667085\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <span *ngIf=\"sortColumName === 'clientId' && sortBy !== -1\">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M6.00016 10.6667L6.00016 1.33337M6.00016 1.33337L1.3335 6.00004M6.00016 1.33337L10.6668 6.00004\"\r\n stroke=\"#009BF3\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n </th>\r\n <th><div class=\"cursor-pointer\" (click)=\"sortData('storeName')\">\r\n Store Name\r\n <span *ngIf=\"sortColumName === 'storeName' && sortBy !== 1 || sortColumName !== 'storeName'\">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M6.00016 1.33337V10.6667M6.00016 10.6667L10.6668 6.00004M6.00016 10.6667L1.3335 6.00004\"\r\n stroke=\"#667085\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <span *ngIf=\"sortColumName === 'storeName' && sortBy !== -1\">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M6.00016 10.6667L6.00016 1.33337M6.00016 1.33337L1.3335 6.00004M6.00016 1.33337L10.6668 6.00004\"\r\n stroke=\"#009BF3\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n </th>\r\n <th><div class=\"cursor-pointer\" (click)=\"sortData('storeId')\">\r\n Store ID\r\n <span *ngIf=\"sortColumName === 'storeId' && sortBy !== 1 || sortColumName !== 'storeId'\">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M6.00016 1.33337V10.6667M6.00016 10.6667L10.6668 6.00004M6.00016 10.6667L1.3335 6.00004\"\r\n stroke=\"#667085\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <span *ngIf=\"sortColumName === 'storeId' && sortBy !== -1\">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M6.00016 10.6667L6.00016 1.33337M6.00016 1.33337L1.3335 6.00004M6.00016 1.33337L10.6668 6.00004\"\r\n stroke=\"#009BF3\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n </th>\r\n <th><div class=\"cursor-pointer\" (click)=\"sortData('auditType')\">Audit Type\r\n <span *ngIf=\"sortColumName === 'auditType' && sortBy !== 1 || sortColumName !== 'auditType'\">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M6.00016 1.33337V10.6667M6.00016 10.6667L10.6668 6.00004M6.00016 10.6667L1.3335 6.00004\"\r\n stroke=\"#667085\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <span *ngIf=\"sortColumName === 'auditType' && sortBy !== -1\">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M6.00016 10.6667L6.00016 1.33337M6.00016 1.33337L1.3335 6.00004M6.00016 1.33337L10.6668 6.00004\"\r\n stroke=\"#009BF3\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span></div>\r\n </th>\r\n <th *ngIf=\"selectedType === 'all'\">Product Type</th>\r\n <th *ngIf=\"selectedType !== 'traffic'\"><div class=\"cursor-pointer\" (click)=\"sortData('zoneName')\">\r\n Zone Name\r\n <span *ngIf=\"sortColumName === 'zoneName' && sortBy !== 1 || sortColumName !== 'zoneName'\">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M6.00016 1.33337V10.6667M6.00016 10.6667L10.6668 6.00004M6.00016 10.6667L1.3335 6.00004\"\r\n stroke=\"#667085\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <span *ngIf=\"sortColumName === 'zoneName' && sortBy !== -1\">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M6.00016 10.6667L6.00016 1.33337M6.00016 1.33337L1.3335 6.00004M6.00016 1.33337L10.6668 6.00004\"\r\n stroke=\"#009BF3\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span></div></th>\r\n <th><div class=\"cursor-pointer\" (click)=\"sortData('beforeCount')\">\r\n BC\r\n <span *ngIf=\"sortColumName === 'beforeCount' && sortBy !== 1 || sortColumName !== 'beforeCount'\">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M6.00016 1.33337V10.6667M6.00016 10.6667L10.6668 6.00004M6.00016 10.6667L1.3335 6.00004\"\r\n stroke=\"#667085\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <span *ngIf=\"sortColumName === 'beforeCount' && sortBy !== -1\">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M6.00016 10.6667L6.00016 1.33337M6.00016 1.33337L1.3335 6.00004M6.00016 1.33337L10.6668 6.00004\"\r\n stroke=\"#009BF3\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span></div>\r\n </th>\r\n <th><div class=\"cursor-pointer\" (click)=\"sortData('afterCount')\">\r\n AC\r\n <span *ngIf=\"sortColumName === 'afterCount' && sortBy !== 1 || sortColumName !== 'afterCount'\">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M6.00016 1.33337V10.6667M6.00016 10.6667L10.6668 6.00004M6.00016 10.6667L1.3335 6.00004\"\r\n stroke=\"#667085\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <span *ngIf=\"sortColumName === 'afterCount' && sortBy !== -1\">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M6.00016 10.6667L6.00016 1.33337M6.00016 1.33337L1.3335 6.00004M6.00016 1.33337L10.6668 6.00004\"\r\n stroke=\"#009BF3\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span></div>\r\n </th>\r\n <th><div class=\"cursor-pointer\" (click)=\"sortData('accuracy')\">Accuracy\r\n <span *ngIf=\"sortColumName === 'accuracy' && sortBy !== 1 || sortColumName !== 'accuracy'\">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M6.00016 1.33337V10.6667M6.00016 10.6667L10.6668 6.00004M6.00016 10.6667L1.3335 6.00004\"\r\n stroke=\"#667085\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <span *ngIf=\"sortColumName === 'accuracy' && sortBy !== -1\">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M6.00016 10.6667L6.00016 1.33337M6.00016 1.33337L1.3335 6.00004M6.00016 1.33337L10.6668 6.00004\"\r\n stroke=\"#009BF3\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span></div>\r\n </th>\r\n\r\n <th><div class=\"cursor-pointer\" (click)=\"sortData('createdAt')\">Audited Date\r\n <span *ngIf=\"sortColumName === 'createdAt' && sortBy !== 1 || sortColumName !== 'createdAt'\">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M6.00016 1.33337V10.6667M6.00016 10.6667L10.6668 6.00004M6.00016 10.6667L1.3335 6.00004\"\r\n stroke=\"#667085\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <span *ngIf=\"sortColumName === 'createdAt' && sortBy !== -1\">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M6.00016 10.6667L6.00016 1.33337M6.00016 1.33337L1.3335 6.00004M6.00016 1.33337L10.6668 6.00004\"\r\n stroke=\"#009BF3\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span></div>\r\n </th>\r\n <th><div class=\"cursor-pointer\" (click)=\"sortData('startTime')\">Start Time\r\n <span *ngIf=\"sortColumName === 'startTime' && sortBy !== 1 || sortColumName !== 'startTime'\">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M6.00016 1.33337V10.6667M6.00016 10.6667L10.6668 6.00004M6.00016 10.6667L1.3335 6.00004\"\r\n stroke=\"#667085\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <span *ngIf=\"sortColumName === 'startTime' && sortBy !== -1\">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M6.00016 10.6667L6.00016 1.33337M6.00016 1.33337L1.3335 6.00004M6.00016 1.33337L10.6668 6.00004\"\r\n stroke=\"#009BF3\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span></div>\r\n </th>\r\n <th><div class=\"cursor-pointer\" (click)=\"sortData('endTime')\">End Time\r\n <span *ngIf=\"sortColumName === 'endTime' && sortBy !== 1 || sortColumName !== 'endTime'\">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M6.00016 1.33337V10.6667M6.00016 10.6667L10.6668 6.00004M6.00016 10.6667L1.3335 6.00004\"\r\n stroke=\"#667085\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <span *ngIf=\"sortColumName === 'endTime' && sortBy !== -1\">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M6.00016 10.6667L6.00016 1.33337M6.00016 1.33337L1.3335 6.00004M6.00016 1.33337L10.6668 6.00004\"\r\n stroke=\"#009BF3\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span></div>\r\n </th>\r\n <th><div class=\"cursor-pointer\" (click)=\"sortData('timeSpent')\">Time Spent\r\n <span *ngIf=\"sortColumName === 'timeSpent' && sortBy !== 1 || sortColumName !== 'timeSpent'\">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M6.00016 1.33337V10.6667M6.00016 10.6667L10.6668 6.00004M6.00016 10.6667L1.3335 6.00004\"\r\n stroke=\"#667085\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <span *ngIf=\"sortColumName === 'timeSpent' && sortBy !== -1\">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M6.00016 10.6667L6.00016 1.33337M6.00016 1.33337L1.3335 6.00004M6.00016 1.33337L10.6668 6.00004\"\r\n stroke=\"#009BF3\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span></div>\r\n </th>\r\n \r\n <th><div class=\"cursor-pointer\" (click)=\"sortData('auditStatus')\">Status\r\n <span *ngIf=\"sortColumName === 'auditStatus' && sortBy !== 1 || sortColumName !== 'auditStatus'\">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M6.00016 1.33337V10.6667M6.00016 10.6667L10.6668 6.00004M6.00016 10.6667L1.3335 6.00004\"\r\n stroke=\"#667085\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <span *ngIf=\"sortColumName === 'auditStatus' && sortBy !== -1\">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M6.00016 10.6667L6.00016 1.33337M6.00016 1.33337L1.3335 6.00004M6.00016 1.33337L10.6668 6.00004\"\r\n stroke=\"#009BF3\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span></div>\r\n </th>\r\n <th>Action\r\n \r\n </th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let history of workHistorydata; let i = index\" class=\"tr-padding\">\r\n <td>{{history?.fileDate ? history?.fileDate : '--'}}</td>\r\n <td>{{history?.clientName ? history?.clientName :'--'}}</td>\r\n <td>{{history?.clientId ? history?.clientId :'--'}}</td>\r\n <td>{{history?.storeName ? history?.storeName : '--'}}</td>\r\n <td>{{history?.storeId ? history?.storeId : '--'}}</td>\r\n <td>{{history?.auditType ==='ReAudit' ? 'Re-Audit' : history?.auditType}}</td>\r\n <td *ngIf=\"selectedType === 'all'\">{{history?.moduleType | titlecase}}</td>\r\n <td *ngIf=\"selectedType !== 'traffic'\">{{ history?.moduleType ==='traffic' ? '--' : history?.zoneName}}</td>\r\n <td>{{history?.beforeCount ?? '--'}}</td>\r\n <td>{{history?.afterCount ?? '--'}}</td>\r\n <td>{{history?.accuracy ?? '--'}}</td>\r\n <td>{{history?.createdAt ? (history?.createdAt | customDateFormat) :'--'}}</td>\r\n <td>{{history?.startTime ? history?.startTime :'--'}}</td>\r\n <td>{{history?.endTime ? history?.endTime :'--'}}</td>\r\n <td>{{history?.timeSpent ? history?.timeSpent :'--'}}</td>\r\n <td>\r\n <span *ngIf=\"history.auditStatus !== 'not_assign'\" [ngClass]=\"history?.auditStatus ==='completed' ? 'badge-light-success' : (history?.auditStatus ==='drafted' ? 'badge-light-danger' :'badge-light-primary')\" class=\"badge\">{{history.auditStatus | titlecase}}</span>\r\n <span *ngIf=\"history.auditStatus === 'not_assign'\" class=\"badge badge-light-danger\">Not Assigned</span>\r\n </td>\r\n <td><span class=\"cursor-pointer\" (click)=\"viewHistory(history)\">\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=\"M0.833374 10C0.833374 10 4.16671 3.33337 10 3.33337C15.8334 3.33337 19.1667 10 19.1667 10C19.1667 10 15.8334 16.6667 10 16.6667C4.16671 16.6667 0.833374 10 0.833374 10Z\" stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n <path d=\"M10 12.5C11.3808 12.5 12.5 11.3808 12.5 10C12.5 8.61933 11.3808 7.50004 10 7.50004C8.61933 7.50004 7.50004 8.61933 7.50004 10C7.50004 11.3808 8.61933 12.5 10 12.5Z\" stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg></span>\r\n </td>\r\n </tr>\r\n </tbody>\r\n \r\n </table> \r\n </div>\r\n <lib-pagination [itemsPerPage]=\"limit\" [currentPage]=\"offset\"\r\n [totalItems]=\"totalCount\" [paginationSizes]=\"paginationSizes\" [pageSize]=\"setLimit()\"\r\n (pageChange)=\"onPageChange($event)\" (pageSizeChange)=\"onPageSizeChange($event)\"></lib-pagination>\r\n </div> \r\n <ng-container *ngIf=\"historyLoading\" >\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 \r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"historyNodata\">\r\n <div class=\"row\">\r\n <div class=\"col-lg-12 mb-3\">\r\n <div class=\"card-body d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-src\" src=\"./assets/tango/Icons/Nodata.svg\" alt=\"\">\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <div *ngIf=\"userData === 'Workspace'\">\r\n <lib-audit-management [searchAudit]=\"searchAudit\" [selectedType]=\"selectedType\" [selectedClient]=\"selectedClient\" [clientId]=\"clientId\"></lib-audit-management>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".rowbody{background:var(--Gray-50, #F9FAFB)}.issuecard{border-radius:8px;border:1px solid var(--Gray-100, #F2F4F7);background:var(--White, #FFF);box-shadow:0 1px 2px #1018280d;padding:14px 12px}.issuecard label{color:var(--Black, #101828);font-size:16px;line-height:24px}.issuecard.active{background:var(--Primary-25, #F6FCFF);box-shadow:0 2px 4px -2px #1018280f,0 4px 8px -2px #1018281a}.active{border:none;background:var(--Primary-50, #EAF8FF);padding:8px 12px}.fw-bold-700{font-weight:700!important}.fw-bold-400{font-weight:400!important}.profile{width:24px;height:24px;overflow:hidden;border-radius:200px}.msgprofile{width:48px!important;height:48px!important;border-radius:200px;overflow:hidden}.timingtext{color:var(--Gray-500, #667085);font-size:12px;line-height:18px}.bg-badge{background-color:#776f6f29!important}.items:hover,.tems.focus,.items.active,.camera.focus-visible{background:var(--Gray-50, #F9FAFB)}.textSub{color:var(--Gray-500, #667085);font-size:14px;font-weight:400;line-height:20px}.taketicket{color:var(--Gray-500, #667085);font-size:16px;line-height:24px}tr{vertical-align:middle!important}.img-src{width:25%}.mh-60vh{height:40vh!important}.min-height-60vh{min-height:50vh!important}.text-primary{color:var(--Primary-700, #009BF3)!important;font-family:Inter;font-size:14px;font-weight:500}table th,table td{height:44px!important;padding:12px 24px!important;align-items:center;gap:12px;align-self:stretch}.daterangepicker{display:block!important;top:153.85px!important;left:900px!important;right:0}.form-control{color:var(--Gray-700, #344054)!important;font-size:14px!important;font-weight:600;line-height:20px;text-transform:capitalize}::ng-deep .applyBtn{display:none!important}:host::ng-deep .md-drppicker .btn{line-height:10px!important}:host::ng-deep .daterangepicker-input+.ngx-daterangepicker-material .applyBtn{display:none}:host::ng-deep .md-drppicker.drops-down-right.ltr.double.show-ranges.shown{top:65px!important;left:-470px!important;height:450px!important}:host::ng-deep .md-drppicker .btn{border-radius:8px!important;border:1px solid var(--Primary-600, #00A3FF)!important;background:var(--Primary-600, #00A3FF)!important;box-shadow:0 1px 2px #1018280d!important;color:var(--White, #FFF)!important;font-size:14px!important;font-weight:600!important;line-height:20px;text-transform:capitalize}:host::ng-deep .md-drppicker .ranges ul li button{padding:12px 16px;width:160px;color:var(--Gray-700, #344054);font-size:14px;font-weight:400;line-height:20px;background:none;border:none;text-align:left;cursor:pointer}:host::ng-deep .md-drppicker td.active,:host::ng-deep .md-drppicker td.active:hover{background-color:#029cf4!important;border-radius:20px!important;color:var(--White, #FFF)!important;text-align:center!important;font-size:14px!important;font-weight:500!important;line-height:20px}:host::ng-deep .md-drppicker.ltr .ranges{float:left;margin-top:10px!important}:host::ng-deep .md-drppicker td.in-range{background:var(--Primary-50, #EAF8FF)}:host::ng-deep .md-drppicker .ranges ul li button.active{background:var(--Primary-50, #EAF8FF)!important;border-radius:8px!important;color:var(--Primary-700, #009BF3);font-size:14px!important;font-weight:500!important;line-height:20px!important}:host::ng-deep table th,:host::ng-deep table td{width:40px!important;height:40px!important;padding:10px 8px!important}:host::ng-deep .md-drppicker td.available.prev,:host::ng-deep .md-drppicker th.available.prev{background-image:url(data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB2aWV3Qm94PSIwIDAgMy43IDYiIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDMuNyA2IiB4bWw6c3BhY2U9InByZXNlcnZlIj4NCjxnPg0KCTxwYXRoIGQ9Ik0zLjcsMC43TDEuNCwzbDIuMywyLjNMMyw2TDAsM2wzLTNMMy43LDAuN3oiLz4NCjwvZz4NCjwvc3ZnPg0K)!important;background-repeat:no-repeat!important;background-size:.5em!important;background-position:center!important}:host::ng-deep .md-drppicker td.available.next,:host::ng-deep .md-drppicker th.available.next{background-image:url(data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB2aWV3Qm94PSIwIDAgMy43IDYiIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDMuNyA2IiB4bWw6c3BhY2U9InByZXNlcnZlIj4NCjxnPg0KCTxwYXRoIGQ9Ik0zLjcsMC43TDEuNCwzbDIuMywyLjNMMyw2TDAsM2wzLTNMMy43LDAuN3oiLz4NCjwvZz4NCjwvc3ZnPg0K)!important;background-repeat:no-repeat!important;background-size:.5em!important;background-position:center!important}:host::ng-deep .md-drppicker .btn.btn-default{border-radius:8px!important;border:1px solid var(--Gray-300, #D0D5DD)!important;background:var(--White, #FFF)!important;box-shadow:0 1px 2px #1018280d!important;color:var(--Gray-700, #344054)!important;font-size:14px!important;font-weight:600!important;line-height:20px;text-transform:capitalize;margin-right:10px!important}:host::ng-deep .md-drppicker td.available.invalid-date{text-decoration:line-through;pointer-events:none;color:#a9a9a9}:host::ng-deep .md-drppicker td.available.today:not(.invalid-date){text-decoration:unset;pointer-events:unset;color:unset}.test-col{color:var(--gray-800, #1D2939);font-family:Inter!important;font-size:32px;font-style:normal;font-weight:400;line-height:40px;letter-spacing:-.64px}.test{margin:11px 5px!important}.tr-padding{height:60px!important}\n"], dependencies: [{ kind: "directive", type: i9.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i9.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i9.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i10.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i10.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i10.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i3.PaginationComponent, selector: "lib-pagination", inputs: ["collection", "itemsPerPage", "currentPage", "totalItems", "directionLinks", "pageSize", "paginationSizes"], outputs: ["pageChange", "pageSizeChange"] }, { kind: "component", type: i3.FiltersComponent, selector: "lib-filters", inputs: ["dataObject"], outputs: ["appliedFilters"] }, { kind: "component", type: i11.AuditManagementComponent, selector: "lib-audit-management", inputs: ["searchAudit", "selectedType", "selectedClient", "clientId"] }, { kind: "pipe", type: i9.TitleCasePipe, name: "titlecase" }, { kind: "pipe", type: i3.CustomDateFormatPipe, name: "customDateFormat" }] });
354
355
  }
355
356
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AuditWorkspaceComponent, decorators: [{
356
357
  type: Component,
357
- args: [{ selector: 'lib-audit-workspace', template: "<div class=\"card\">\r\n <div class=\"card-header border-0 pt-3\">\r\n <h3 class=\"card-title align-items-start flex-column\">\r\n <span class=\"card-label mb-2\">Audit Tickets</span>\r\n </h3>\r\n <div *ngIf=\"userData ==='Workspace'\" class=\"card-toolbar\">\r\n <div class=\"d-flex\">\r\n <div class=\"d-flex align-items-center position-relative my-1\">\r\n <span class=\"svg-icon svg-icon-1 position-absolute ms-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <rect opacity=\"0.5\" x=\"17.0365\" y=\"15.1223\" width=\"8.15546\" height=\"2\" rx=\"1\"\r\n transform=\"rotate(45 17.0365 15.1223)\" fill=\"currentColor\"></rect>\r\n <path\r\n d=\"M11 19C6.55556 19 3 15.4444 3 11C3 6.55556 6.55556 3 11 3C15.4444 3 19 6.55556 19 11C19 15.4444 15.4444 19 11 19ZM11 5C7.53333 5 5 7.53333 5 11C5 14.4667 7.53333 17 11 17C14.4667 17 17 14.4667 17 11C17 7.53333 14.4667 5 11 5Z\"\r\n fill=\"currentColor\"></path>\r\n </svg>\r\n </span>\r\n <input type=\"text\" class=\"form-control ps-14 me-2\" \r\n placeholder=\"Search\" autocomplete=\"off\" (change)=\"searchAudits($event)\"/>\r\n <button type=\"button\" (click)=\"exportAuditAsXlsx()\"\r\n class=\"btn btn-default mx-2 btn-outline btn-outline-default rounded-3 text-nowrap border-val\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M17.5 12.5V15.8333C17.5 16.2754 17.3244 16.6993 17.0118 17.0118C16.6993 17.3244 16.2754 17.5 15.8333 17.5H4.16667C3.72464 17.5 3.30072 17.3244 2.98816 17.0118C2.67559 16.6993 2.5 16.2754 2.5 15.8333V12.5M14.1667 6.66667L10 2.5M10 2.5L5.83333 6.66667M10 2.5V12.5\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n <span class=\"ms-2\">Export</span>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"userData ==='History'\" class=\"card-toolbar\">\r\n <div class=\"d-flex\">\r\n <div class=\"d-flex align-items-center position-relative my-1\">\r\n <span class=\"svg-icon svg-icon-1 position-absolute ms-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <rect opacity=\"0.5\" x=\"17.0365\" y=\"15.1223\" width=\"8.15546\" height=\"2\" rx=\"1\"\r\n transform=\"rotate(45 17.0365 15.1223)\" fill=\"currentColor\"></rect>\r\n <path\r\n d=\"M11 19C6.55556 19 3 15.4444 3 11C3 6.55556 6.55556 3 11 3C15.4444 3 19 6.55556 19 11C19 15.4444 15.4444 19 11 19ZM11 5C7.53333 5 5 7.53333 5 11C5 14.4667 7.53333 17 11 17C14.4667 17 17 14.4667 17 11C17 7.53333 14.4667 5 11 5Z\"\r\n fill=\"currentColor\"></path>\r\n </svg>\r\n </span>\r\n <input type=\"text\" class=\"form-control ps-14 me-2\" \r\n placeholder=\"Search\" autocomplete=\"off\" [(ngModel)]=\"searchHistory\" (input)=\"searchHistoryTable()\" />\r\n\r\n <lib-filters *ngIf=\"storeList\" [dataObject]=\"dataObject\" (appliedFilters)=\"receiveData($event)\" ></lib-filters>\r\n\r\n <div *ngIf=\"!historyNodata\" class=\"position-relative\">\r\n <button type=\"button\" (click)=\"exportHistoryasXlsx()\"\r\n class=\"btn btn-default mx-2 btn-outline btn-outline-default rounded-3 text-nowrap border-val\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M17.5 12.5V15.8333C17.5 16.2754 17.3244 16.6993 17.0118 17.0118C16.6993 17.3244 16.2754 17.5 15.8333 17.5H4.16667C3.72464 17.5 3.30072 17.3244 2.98816 17.0118C2.67559 16.6993 2.5 16.2754 2.5 15.8333V12.5M14.1667 6.66667L10 2.5M10 2.5L5.83333 6.66667M10 2.5V12.5\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n <span class=\"ms-2\">Export</span>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"card-body py-2\">\r\n <div class=\"d-flex overflow-auto h-55px\">\r\n <ul class=\"nav nav-stretch nav-line-tabs nav-line-tabs-2x border-transparent fs-5 fw-bolder flex-nowrap\">\r\n <li (click)=\"userValue('Workspace')\" class=\"nav-item cursor-pointer\"><a [ngClass]=\"userData ==='Workspace' ? 'active' :''\"\r\n class=\"nav-link text-active-primary me-6\">Workspace</a>\r\n </li>\r\n <li (click)=\"userValue('History')\" class=\"nav-item cursor-pointer\"><a [ngClass]=\"userData ==='History' ? 'active' :''\"\r\n class=\"nav-link text-active-primary me-6\">History</a></li>\r\n </ul>\r\n </div>\r\n <div class=\"d-flex justify-content-between mt-10\"><div class=\"d-flex\">\r\n <div *ngIf=\"userData === 'History'\" (click)=\"selectType('all')\" [ngClass]=\"selectedType === 'all' ? 'active text-primary' : 'textSub'\" class=\"pe-5 py-3 rounded-3 cursor-pointer fw-semibold\r\n fw-semibold \">All</div>\r\n <div (click)=\"selectType('traffic')\" [ngClass]=\"selectedType === 'traffic' ? 'active text-primary' : 'textSub'\" class=\"px-5 py-3 rounded-3 cursor-pointer fw-semibold\r\n fw-semibold \">Traffic</div>\r\n <div (click)=\"selectType('zone')\" [ngClass]=\"selectedType === 'zone' ? 'active text-primary' : 'textSub'\" class=\"px-5 py-3 rounded-3 cursor-pointer fw-semibold\r\n fw-semibold\">Zone</div></div>\r\n <div *ngIf=\"selectedClient\" (click)=\"backtoZone()\" class=\"btn btn-outline px-4 py-3 cursor-pointer\">\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\">\r\n <path d=\"M12.8327 6.99935H1.16602M1.16602 6.99935L6.99935 12.8327M1.16602 6.99935L6.99935 1.16602\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg> \r\n </div>\r\n </div>\r\n <!-- *ngIf=\"userData === 'History' && selectedType === 'traffic'\" -->\r\n <div *ngIf=\"userData === 'History'\">\r\n <div *ngIf=\"!historyLoading && !historyNodata\" class=\"pt-10\">\r\n <div class=\"table-responsive\"> \r\n <table class=\"table bottom-border text-nowrap\">\r\n <thead>\r\n <tr>\r\n <th><div class=\"cursor-pointer\" (click)=\"sortData('fileDate')\">\r\n File Date\r\n <span *ngIf=\"sortColumName === 'fileDate' && sortBy !== 1 || sortColumName !== 'fileDate' \">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M6.00016 1.33337V10.6667M6.00016 10.6667L10.6668 6.00004M6.00016 10.6667L1.3335 6.00004\"\r\n stroke=\"#667085\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <span *ngIf=\"sortColumName === 'fileDate' && sortBy !== -1\">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M6.00016 10.6667L6.00016 1.33337M6.00016 1.33337L1.3335 6.00004M6.00016 1.33337L10.6668 6.00004\"\r\n stroke=\"#009BF3\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n <th><div class=\"cursor-pointer\" (click)=\"sortData('clientName')\">\r\n Brand Name\r\n <span *ngIf=\"sortColumName === 'clientName' && sortBy !== 1 || sortColumName !== 'clientName' \">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M6.00016 1.33337V10.6667M6.00016 10.6667L10.6668 6.00004M6.00016 10.6667L1.3335 6.00004\"\r\n stroke=\"#667085\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <span *ngIf=\"sortColumName === 'clientName' && sortBy !== -1\">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M6.00016 10.6667L6.00016 1.33337M6.00016 1.33337L1.3335 6.00004M6.00016 1.33337L10.6668 6.00004\"\r\n stroke=\"#009BF3\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n </th>\r\n <th><div class=\"cursor-pointer\" (click)=\"sortData('clientId')\">\r\n Brand ID\r\n <span *ngIf=\"sortColumName === 'clientId' && sortBy !== 1 || sortColumName !== 'clientId' \">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M6.00016 1.33337V10.6667M6.00016 10.6667L10.6668 6.00004M6.00016 10.6667L1.3335 6.00004\"\r\n stroke=\"#667085\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <span *ngIf=\"sortColumName === 'clientId' && sortBy !== -1\">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M6.00016 10.6667L6.00016 1.33337M6.00016 1.33337L1.3335 6.00004M6.00016 1.33337L10.6668 6.00004\"\r\n stroke=\"#009BF3\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n </th>\r\n <th><div class=\"cursor-pointer\" (click)=\"sortData('storeName')\">\r\n Store Name\r\n <span *ngIf=\"sortColumName === 'storeName' && sortBy !== 1 || sortColumName !== 'storeName'\">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M6.00016 1.33337V10.6667M6.00016 10.6667L10.6668 6.00004M6.00016 10.6667L1.3335 6.00004\"\r\n stroke=\"#667085\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <span *ngIf=\"sortColumName === 'storeName' && sortBy !== -1\">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M6.00016 10.6667L6.00016 1.33337M6.00016 1.33337L1.3335 6.00004M6.00016 1.33337L10.6668 6.00004\"\r\n stroke=\"#009BF3\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n </th>\r\n <th><div class=\"cursor-pointer\" (click)=\"sortData('storeId')\">\r\n Store ID\r\n <span *ngIf=\"sortColumName === 'storeId' && sortBy !== 1 || sortColumName !== 'storeId'\">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M6.00016 1.33337V10.6667M6.00016 10.6667L10.6668 6.00004M6.00016 10.6667L1.3335 6.00004\"\r\n stroke=\"#667085\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <span *ngIf=\"sortColumName === 'storeId' && sortBy !== -1\">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M6.00016 10.6667L6.00016 1.33337M6.00016 1.33337L1.3335 6.00004M6.00016 1.33337L10.6668 6.00004\"\r\n stroke=\"#009BF3\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n </th>\r\n <th><div class=\"cursor-pointer\" (click)=\"sortData('auditType')\">Audit Type\r\n <span *ngIf=\"sortColumName === 'auditType' && sortBy !== 1 || sortColumName !== 'auditType'\">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M6.00016 1.33337V10.6667M6.00016 10.6667L10.6668 6.00004M6.00016 10.6667L1.3335 6.00004\"\r\n stroke=\"#667085\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <span *ngIf=\"sortColumName === 'auditType' && sortBy !== -1\">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M6.00016 10.6667L6.00016 1.33337M6.00016 1.33337L1.3335 6.00004M6.00016 1.33337L10.6668 6.00004\"\r\n stroke=\"#009BF3\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span></div>\r\n </th>\r\n <th *ngIf=\"selectedType === 'all'\">Product Type</th>\r\n <th *ngIf=\"selectedType !== 'traffic'\"><div class=\"cursor-pointer\" (click)=\"sortData('zoneName')\">\r\n Zone Name\r\n <span *ngIf=\"sortColumName === 'zoneName' && sortBy !== 1 || sortColumName !== 'zoneName'\">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M6.00016 1.33337V10.6667M6.00016 10.6667L10.6668 6.00004M6.00016 10.6667L1.3335 6.00004\"\r\n stroke=\"#667085\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <span *ngIf=\"sortColumName === 'zoneName' && sortBy !== -1\">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M6.00016 10.6667L6.00016 1.33337M6.00016 1.33337L1.3335 6.00004M6.00016 1.33337L10.6668 6.00004\"\r\n stroke=\"#009BF3\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span></div></th>\r\n <th><div class=\"cursor-pointer\" (click)=\"sortData('beforeCount')\">\r\n BC\r\n <span *ngIf=\"sortColumName === 'beforeCount' && sortBy !== 1 || sortColumName !== 'beforeCount'\">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M6.00016 1.33337V10.6667M6.00016 10.6667L10.6668 6.00004M6.00016 10.6667L1.3335 6.00004\"\r\n stroke=\"#667085\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <span *ngIf=\"sortColumName === 'beforeCount' && sortBy !== -1\">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M6.00016 10.6667L6.00016 1.33337M6.00016 1.33337L1.3335 6.00004M6.00016 1.33337L10.6668 6.00004\"\r\n stroke=\"#009BF3\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span></div>\r\n </th>\r\n <th><div class=\"cursor-pointer\" (click)=\"sortData('afterCount')\">\r\n AC\r\n <span *ngIf=\"sortColumName === 'afterCount' && sortBy !== 1 || sortColumName !== 'afterCount'\">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M6.00016 1.33337V10.6667M6.00016 10.6667L10.6668 6.00004M6.00016 10.6667L1.3335 6.00004\"\r\n stroke=\"#667085\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <span *ngIf=\"sortColumName === 'afterCount' && sortBy !== -1\">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M6.00016 10.6667L6.00016 1.33337M6.00016 1.33337L1.3335 6.00004M6.00016 1.33337L10.6668 6.00004\"\r\n stroke=\"#009BF3\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span></div>\r\n </th>\r\n <th><div class=\"cursor-pointer\" (click)=\"sortData('accuracy')\">Accuracy\r\n <span *ngIf=\"sortColumName === 'accuracy' && sortBy !== 1 || sortColumName !== 'accuracy'\">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M6.00016 1.33337V10.6667M6.00016 10.6667L10.6668 6.00004M6.00016 10.6667L1.3335 6.00004\"\r\n stroke=\"#667085\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <span *ngIf=\"sortColumName === 'accuracy' && sortBy !== -1\">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M6.00016 10.6667L6.00016 1.33337M6.00016 1.33337L1.3335 6.00004M6.00016 1.33337L10.6668 6.00004\"\r\n stroke=\"#009BF3\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span></div>\r\n </th>\r\n <th><div class=\"cursor-pointer\" (click)=\"sortData('startTime')\">Start Time\r\n <span *ngIf=\"sortColumName === 'startTime' && sortBy !== 1 || sortColumName !== 'startTime'\">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M6.00016 1.33337V10.6667M6.00016 10.6667L10.6668 6.00004M6.00016 10.6667L1.3335 6.00004\"\r\n stroke=\"#667085\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <span *ngIf=\"sortColumName === 'startTime' && sortBy !== -1\">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M6.00016 10.6667L6.00016 1.33337M6.00016 1.33337L1.3335 6.00004M6.00016 1.33337L10.6668 6.00004\"\r\n stroke=\"#009BF3\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span></div>\r\n </th>\r\n <th><div class=\"cursor-pointer\" (click)=\"sortData('endTime')\">End Time\r\n <span *ngIf=\"sortColumName === 'endTime' && sortBy !== 1 || sortColumName !== 'endTime'\">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M6.00016 1.33337V10.6667M6.00016 10.6667L10.6668 6.00004M6.00016 10.6667L1.3335 6.00004\"\r\n stroke=\"#667085\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <span *ngIf=\"sortColumName === 'endTime' && sortBy !== -1\">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M6.00016 10.6667L6.00016 1.33337M6.00016 1.33337L1.3335 6.00004M6.00016 1.33337L10.6668 6.00004\"\r\n stroke=\"#009BF3\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span></div>\r\n </th>\r\n <th><div class=\"cursor-pointer\" (click)=\"sortData('timeSpent')\">Time Spent\r\n <span *ngIf=\"sortColumName === 'timeSpent' && sortBy !== 1 || sortColumName !== 'timeSpent'\">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M6.00016 1.33337V10.6667M6.00016 10.6667L10.6668 6.00004M6.00016 10.6667L1.3335 6.00004\"\r\n stroke=\"#667085\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <span *ngIf=\"sortColumName === 'timeSpent' && sortBy !== -1\">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M6.00016 10.6667L6.00016 1.33337M6.00016 1.33337L1.3335 6.00004M6.00016 1.33337L10.6668 6.00004\"\r\n stroke=\"#009BF3\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span></div>\r\n </th>\r\n <th><div class=\"cursor-pointer\" (click)=\"sortData('createdAt')\">Audited Date\r\n <span *ngIf=\"sortColumName === 'createdAt' && sortBy !== 1 || sortColumName !== 'createdAt'\">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M6.00016 1.33337V10.6667M6.00016 10.6667L10.6668 6.00004M6.00016 10.6667L1.3335 6.00004\"\r\n stroke=\"#667085\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <span *ngIf=\"sortColumName === 'createdAt' && sortBy !== -1\">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M6.00016 10.6667L6.00016 1.33337M6.00016 1.33337L1.3335 6.00004M6.00016 1.33337L10.6668 6.00004\"\r\n stroke=\"#009BF3\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span></div>\r\n </th>\r\n <th><div class=\"cursor-pointer\" (click)=\"sortData('auditStatus')\">Status\r\n <span *ngIf=\"sortColumName === 'auditStatus' && sortBy !== 1 || sortColumName !== 'auditStatus'\">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M6.00016 1.33337V10.6667M6.00016 10.6667L10.6668 6.00004M6.00016 10.6667L1.3335 6.00004\"\r\n stroke=\"#667085\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <span *ngIf=\"sortColumName === 'auditStatus' && sortBy !== -1\">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M6.00016 10.6667L6.00016 1.33337M6.00016 1.33337L1.3335 6.00004M6.00016 1.33337L10.6668 6.00004\"\r\n stroke=\"#009BF3\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span></div>\r\n </th>\r\n <th>Action\r\n \r\n </th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let history of workHistorydata; let i = index\" class=\"tr-padding\">\r\n <td>{{history?.fileDate ? history?.fileDate : '--'}}</td>\r\n <td>{{history?.clientName ? history?.clientName :'--'}}</td>\r\n <td>{{history?.clientId ? history?.clientId :'--'}}</td>\r\n <td>{{history?.storeName ? history?.storeName : '--'}}</td>\r\n <td>{{history?.storeId ? history?.storeId : '--'}}</td>\r\n <td>{{history?.auditType ==='ReAudit' ? 'Re-Audit' : history?.auditType}}</td>\r\n <td *ngIf=\"selectedType === 'all'\">{{history?.moduleType | titlecase}}</td>\r\n <td *ngIf=\"selectedType !== 'traffic'\">{{ history?.moduleType ==='traffic' ? '--' : history?.zoneName}}</td>\r\n <td>{{history?.beforeCount ?? '--'}}</td>\r\n <td>{{history?.afterCount ?? '--'}}</td>\r\n <td>{{history?.accuracy ?? '--'}}</td>\r\n <td>{{history?.startTime ? history?.startTime :'--'}}</td>\r\n <td>{{history?.endTime ? history?.endTime :'--'}}</td>\r\n <td>{{history?.timeSpent ? history?.timeSpent :'--'}}</td>\r\n <td>{{history?.createdAt ? (history?.createdAt | customDateFormat) :'--'}}</td>\r\n <td>\r\n <span *ngIf=\"history.auditStatus !== 'not_assign'\" [ngClass]=\"history?.auditStatus ==='completed' ? 'badge-light-success' : (history?.auditStatus ==='drafted' ? 'badge-light-danger' :'badge-light-primary')\" class=\"badge\">{{history.auditStatus | titlecase}}</span>\r\n <span *ngIf=\"history.auditStatus === 'not_assign'\" class=\"badge badge-light-danger\">Not Assigned</span>\r\n </td>\r\n <td><span class=\"cursor-pointer\" (click)=\"viewHistory(history)\">\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=\"M0.833374 10C0.833374 10 4.16671 3.33337 10 3.33337C15.8334 3.33337 19.1667 10 19.1667 10C19.1667 10 15.8334 16.6667 10 16.6667C4.16671 16.6667 0.833374 10 0.833374 10Z\" stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n <path d=\"M10 12.5C11.3808 12.5 12.5 11.3808 12.5 10C12.5 8.61933 11.3808 7.50004 10 7.50004C8.61933 7.50004 7.50004 8.61933 7.50004 10C7.50004 11.3808 8.61933 12.5 10 12.5Z\" stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg></span>\r\n </td>\r\n </tr>\r\n </tbody>\r\n \r\n </table> \r\n </div>\r\n <lib-pagination [itemsPerPage]=\"limit\" [currentPage]=\"offset\"\r\n [totalItems]=\"totalCount\" [paginationSizes]=\"paginationSizes\" [pageSize]=\"setLimit()\"\r\n (pageChange)=\"onPageChange($event)\" (pageSizeChange)=\"onPageSizeChange($event)\"></lib-pagination>\r\n </div> \r\n <ng-container *ngIf=\"historyLoading\" >\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 \r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"historyNodata\">\r\n <div class=\"row\">\r\n <div class=\"col-lg-12 mb-3\">\r\n <div class=\"card-body d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-src\" src=\"./assets/tango/Icons/Nodata.svg\" alt=\"\">\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <div *ngIf=\"userData === 'Workspace'\">\r\n <lib-audit-management [searchAudit]=\"searchAudit\" [selectedType]=\"selectedType\" [selectedClient]=\"selectedClient\" [clientId]=\"clientId\"></lib-audit-management>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".rowbody{background:var(--Gray-50, #F9FAFB)}.issuecard{border-radius:8px;border:1px solid var(--Gray-100, #F2F4F7);background:var(--White, #FFF);box-shadow:0 1px 2px #1018280d;padding:14px 12px}.issuecard label{color:var(--Black, #101828);font-size:16px;line-height:24px}.issuecard.active{background:var(--Primary-25, #F6FCFF);box-shadow:0 2px 4px -2px #1018280f,0 4px 8px -2px #1018281a}.active{border:none;background:var(--Primary-50, #EAF8FF);padding:8px 12px}.fw-bold-700{font-weight:700!important}.fw-bold-400{font-weight:400!important}.profile{width:24px;height:24px;overflow:hidden;border-radius:200px}.msgprofile{width:48px!important;height:48px!important;border-radius:200px;overflow:hidden}.timingtext{color:var(--Gray-500, #667085);font-size:12px;line-height:18px}.bg-badge{background-color:#776f6f29!important}.items:hover,.tems.focus,.items.active,.camera.focus-visible{background:var(--Gray-50, #F9FAFB)}.textSub{color:var(--Gray-500, #667085);font-size:14px;font-weight:400;line-height:20px}.taketicket{color:var(--Gray-500, #667085);font-size:16px;line-height:24px}tr{vertical-align:middle!important}.img-src{width:25%}.mh-60vh{height:40vh!important}.min-height-60vh{min-height:50vh!important}.text-primary{color:var(--Primary-700, #009BF3)!important;font-family:Inter;font-size:14px;font-weight:500}table th,table td{height:44px!important;padding:12px 24px!important;align-items:center;gap:12px;align-self:stretch}.daterangepicker{display:block!important;top:153.85px!important;left:900px!important;right:0}.form-control{color:var(--Gray-700, #344054)!important;font-size:14px!important;font-weight:600;line-height:20px;text-transform:capitalize}::ng-deep .applyBtn{display:none!important}:host::ng-deep .md-drppicker .btn{line-height:10px!important}:host::ng-deep .daterangepicker-input+.ngx-daterangepicker-material .applyBtn{display:none}:host::ng-deep .md-drppicker.drops-down-right.ltr.double.show-ranges.shown{top:65px!important;left:-470px!important;height:450px!important}:host::ng-deep .md-drppicker .btn{border-radius:8px!important;border:1px solid var(--Primary-600, #00A3FF)!important;background:var(--Primary-600, #00A3FF)!important;box-shadow:0 1px 2px #1018280d!important;color:var(--White, #FFF)!important;font-size:14px!important;font-weight:600!important;line-height:20px;text-transform:capitalize}:host::ng-deep .md-drppicker .ranges ul li button{padding:12px 16px;width:160px;color:var(--Gray-700, #344054);font-size:14px;font-weight:400;line-height:20px;background:none;border:none;text-align:left;cursor:pointer}:host::ng-deep .md-drppicker td.active,:host::ng-deep .md-drppicker td.active:hover{background-color:#029cf4!important;border-radius:20px!important;color:var(--White, #FFF)!important;text-align:center!important;font-size:14px!important;font-weight:500!important;line-height:20px}:host::ng-deep .md-drppicker.ltr .ranges{float:left;margin-top:10px!important}:host::ng-deep .md-drppicker td.in-range{background:var(--Primary-50, #EAF8FF)}:host::ng-deep .md-drppicker .ranges ul li button.active{background:var(--Primary-50, #EAF8FF)!important;border-radius:8px!important;color:var(--Primary-700, #009BF3);font-size:14px!important;font-weight:500!important;line-height:20px!important}:host::ng-deep table th,:host::ng-deep table td{width:40px!important;height:40px!important;padding:10px 8px!important}:host::ng-deep .md-drppicker td.available.prev,:host::ng-deep .md-drppicker th.available.prev{background-image:url(data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB2aWV3Qm94PSIwIDAgMy43IDYiIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDMuNyA2IiB4bWw6c3BhY2U9InByZXNlcnZlIj4NCjxnPg0KCTxwYXRoIGQ9Ik0zLjcsMC43TDEuNCwzbDIuMywyLjNMMyw2TDAsM2wzLTNMMy43LDAuN3oiLz4NCjwvZz4NCjwvc3ZnPg0K)!important;background-repeat:no-repeat!important;background-size:.5em!important;background-position:center!important}:host::ng-deep .md-drppicker td.available.next,:host::ng-deep .md-drppicker th.available.next{background-image:url(data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB2aWV3Qm94PSIwIDAgMy43IDYiIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDMuNyA2IiB4bWw6c3BhY2U9InByZXNlcnZlIj4NCjxnPg0KCTxwYXRoIGQ9Ik0zLjcsMC43TDEuNCwzbDIuMywyLjNMMyw2TDAsM2wzLTNMMy43LDAuN3oiLz4NCjwvZz4NCjwvc3ZnPg0K)!important;background-repeat:no-repeat!important;background-size:.5em!important;background-position:center!important}:host::ng-deep .md-drppicker .btn.btn-default{border-radius:8px!important;border:1px solid var(--Gray-300, #D0D5DD)!important;background:var(--White, #FFF)!important;box-shadow:0 1px 2px #1018280d!important;color:var(--Gray-700, #344054)!important;font-size:14px!important;font-weight:600!important;line-height:20px;text-transform:capitalize;margin-right:10px!important}:host::ng-deep .md-drppicker td.available.invalid-date{text-decoration:line-through;pointer-events:none;color:#a9a9a9}:host::ng-deep .md-drppicker td.available.today:not(.invalid-date){text-decoration:unset;pointer-events:unset;color:unset}.test-col{color:var(--gray-800, #1D2939);font-family:Inter!important;font-size:32px;font-style:normal;font-weight:400;line-height:40px;letter-spacing:-.64px}.test{margin:11px 5px!important}.tr-padding{height:60px!important}\n"] }]
358
+ args: [{ selector: 'lib-audit-workspace', template: "<div class=\"card\">\r\n <div class=\"card-header border-0 pt-3\">\r\n <h3 class=\"card-title align-items-start flex-column\">\r\n <span class=\"card-label mb-2\">Audit Tickets</span>\r\n </h3>\r\n <div *ngIf=\"userData ==='Workspace'\" class=\"card-toolbar\">\r\n <div class=\"d-flex\">\r\n <div class=\"d-flex align-items-center position-relative my-1\">\r\n <span class=\"svg-icon svg-icon-1 position-absolute ms-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <rect opacity=\"0.5\" x=\"17.0365\" y=\"15.1223\" width=\"8.15546\" height=\"2\" rx=\"1\"\r\n transform=\"rotate(45 17.0365 15.1223)\" fill=\"currentColor\"></rect>\r\n <path\r\n d=\"M11 19C6.55556 19 3 15.4444 3 11C3 6.55556 6.55556 3 11 3C15.4444 3 19 6.55556 19 11C19 15.4444 15.4444 19 11 19ZM11 5C7.53333 5 5 7.53333 5 11C5 14.4667 7.53333 17 11 17C14.4667 17 17 14.4667 17 11C17 7.53333 14.4667 5 11 5Z\"\r\n fill=\"currentColor\"></path>\r\n </svg>\r\n </span>\r\n <input type=\"text\" class=\"form-control ps-14 me-2\" \r\n placeholder=\"Search\" autocomplete=\"off\" (change)=\"searchAudits($event)\"/>\r\n <button type=\"button\" (click)=\"exportAuditAsXlsx()\"\r\n class=\"btn btn-default mx-2 btn-outline btn-outline-default rounded-3 text-nowrap border-val\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M17.5 12.5V15.8333C17.5 16.2754 17.3244 16.6993 17.0118 17.0118C16.6993 17.3244 16.2754 17.5 15.8333 17.5H4.16667C3.72464 17.5 3.30072 17.3244 2.98816 17.0118C2.67559 16.6993 2.5 16.2754 2.5 15.8333V12.5M14.1667 6.66667L10 2.5M10 2.5L5.83333 6.66667M10 2.5V12.5\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n <span class=\"ms-2\">Export</span>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"userData ==='History'\" class=\"card-toolbar\">\r\n <div class=\"d-flex\">\r\n <div class=\"d-flex align-items-center position-relative my-1\">\r\n <span class=\"svg-icon svg-icon-1 position-absolute ms-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <rect opacity=\"0.5\" x=\"17.0365\" y=\"15.1223\" width=\"8.15546\" height=\"2\" rx=\"1\"\r\n transform=\"rotate(45 17.0365 15.1223)\" fill=\"currentColor\"></rect>\r\n <path\r\n d=\"M11 19C6.55556 19 3 15.4444 3 11C3 6.55556 6.55556 3 11 3C15.4444 3 19 6.55556 19 11C19 15.4444 15.4444 19 11 19ZM11 5C7.53333 5 5 7.53333 5 11C5 14.4667 7.53333 17 11 17C14.4667 17 17 14.4667 17 11C17 7.53333 14.4667 5 11 5Z\"\r\n fill=\"currentColor\"></path>\r\n </svg>\r\n </span>\r\n <input type=\"text\" class=\"form-control ps-14 me-2\" \r\n placeholder=\"Search\" autocomplete=\"off\" [(ngModel)]=\"searchHistory\" (input)=\"searchHistoryTable()\" />\r\n\r\n <lib-filters *ngIf=\"storeList\" [dataObject]=\"dataObject\" (appliedFilters)=\"receiveData($event)\" ></lib-filters>\r\n\r\n <div *ngIf=\"!historyNodata\" class=\"position-relative\">\r\n <button type=\"button\" (click)=\"exportHistoryasXlsx()\"\r\n class=\"btn btn-default mx-2 btn-outline btn-outline-default rounded-3 text-nowrap border-val\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M17.5 12.5V15.8333C17.5 16.2754 17.3244 16.6993 17.0118 17.0118C16.6993 17.3244 16.2754 17.5 15.8333 17.5H4.16667C3.72464 17.5 3.30072 17.3244 2.98816 17.0118C2.67559 16.6993 2.5 16.2754 2.5 15.8333V12.5M14.1667 6.66667L10 2.5M10 2.5L5.83333 6.66667M10 2.5V12.5\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n <span class=\"ms-2\">Export</span>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"card-body py-2\">\r\n <div class=\"d-flex overflow-auto h-55px\">\r\n <ul class=\"nav nav-stretch nav-line-tabs nav-line-tabs-2x border-transparent fs-5 fw-bolder flex-nowrap\">\r\n <li (click)=\"userValue('Workspace')\" class=\"nav-item cursor-pointer\"><a [ngClass]=\"userData ==='Workspace' ? 'active' :''\"\r\n class=\"nav-link text-active-primary me-6\">Workspace</a>\r\n </li>\r\n <li (click)=\"userValue('History')\" class=\"nav-item cursor-pointer\"><a [ngClass]=\"userData ==='History' ? 'active' :''\"\r\n class=\"nav-link text-active-primary me-6\">History</a></li>\r\n </ul>\r\n </div>\r\n <div class=\"d-flex justify-content-between mt-10\"><div class=\"d-flex\">\r\n <div *ngIf=\"userData === 'History'\" (click)=\"selectType('all')\" [ngClass]=\"selectedType === 'all' ? 'active text-primary' : 'textSub'\" class=\"pe-5 py-3 rounded-3 cursor-pointer fw-semibold\r\n fw-semibold \">All</div>\r\n <div (click)=\"selectType('traffic')\" [ngClass]=\"selectedType === 'traffic' ? 'active text-primary' : 'textSub'\" class=\"px-5 py-3 rounded-3 cursor-pointer fw-semibold\r\n fw-semibold \">Traffic</div>\r\n <div (click)=\"selectType('zone')\" [ngClass]=\"selectedType === 'zone' ? 'active text-primary' : 'textSub'\" class=\"px-5 py-3 rounded-3 cursor-pointer fw-semibold\r\n fw-semibold\">Zone</div></div>\r\n <div *ngIf=\"selectedClient\" (click)=\"backtoZone()\" class=\"btn btn-outline px-4 py-3 cursor-pointer\">\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\">\r\n <path d=\"M12.8327 6.99935H1.16602M1.16602 6.99935L6.99935 12.8327M1.16602 6.99935L6.99935 1.16602\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg> \r\n </div>\r\n </div>\r\n <!-- *ngIf=\"userData === 'History' && selectedType === 'traffic'\" -->\r\n <div *ngIf=\"userData === 'History'\">\r\n <div *ngIf=\"!historyLoading && !historyNodata\" class=\"pt-10\">\r\n <div class=\"table-responsive\"> \r\n <table class=\"table bottom-border text-nowrap\">\r\n <thead>\r\n <tr>\r\n <th><div class=\"cursor-pointer\" (click)=\"sortData('fileDate')\">\r\n File Date\r\n <span *ngIf=\"sortColumName === 'fileDate' && sortBy !== 1 || sortColumName !== 'fileDate' \">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M6.00016 1.33337V10.6667M6.00016 10.6667L10.6668 6.00004M6.00016 10.6667L1.3335 6.00004\"\r\n stroke=\"#667085\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <span *ngIf=\"sortColumName === 'fileDate' && sortBy !== -1\">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M6.00016 10.6667L6.00016 1.33337M6.00016 1.33337L1.3335 6.00004M6.00016 1.33337L10.6668 6.00004\"\r\n stroke=\"#009BF3\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n <th><div class=\"cursor-pointer\" (click)=\"sortData('clientName')\">\r\n Brand Name\r\n <span *ngIf=\"sortColumName === 'clientName' && sortBy !== 1 || sortColumName !== 'clientName' \">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M6.00016 1.33337V10.6667M6.00016 10.6667L10.6668 6.00004M6.00016 10.6667L1.3335 6.00004\"\r\n stroke=\"#667085\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <span *ngIf=\"sortColumName === 'clientName' && sortBy !== -1\">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M6.00016 10.6667L6.00016 1.33337M6.00016 1.33337L1.3335 6.00004M6.00016 1.33337L10.6668 6.00004\"\r\n stroke=\"#009BF3\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n </th>\r\n <th><div class=\"cursor-pointer\" (click)=\"sortData('clientId')\">\r\n Brand ID\r\n <span *ngIf=\"sortColumName === 'clientId' && sortBy !== 1 || sortColumName !== 'clientId' \">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M6.00016 1.33337V10.6667M6.00016 10.6667L10.6668 6.00004M6.00016 10.6667L1.3335 6.00004\"\r\n stroke=\"#667085\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <span *ngIf=\"sortColumName === 'clientId' && sortBy !== -1\">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M6.00016 10.6667L6.00016 1.33337M6.00016 1.33337L1.3335 6.00004M6.00016 1.33337L10.6668 6.00004\"\r\n stroke=\"#009BF3\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n </th>\r\n <th><div class=\"cursor-pointer\" (click)=\"sortData('storeName')\">\r\n Store Name\r\n <span *ngIf=\"sortColumName === 'storeName' && sortBy !== 1 || sortColumName !== 'storeName'\">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M6.00016 1.33337V10.6667M6.00016 10.6667L10.6668 6.00004M6.00016 10.6667L1.3335 6.00004\"\r\n stroke=\"#667085\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <span *ngIf=\"sortColumName === 'storeName' && sortBy !== -1\">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M6.00016 10.6667L6.00016 1.33337M6.00016 1.33337L1.3335 6.00004M6.00016 1.33337L10.6668 6.00004\"\r\n stroke=\"#009BF3\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n </th>\r\n <th><div class=\"cursor-pointer\" (click)=\"sortData('storeId')\">\r\n Store ID\r\n <span *ngIf=\"sortColumName === 'storeId' && sortBy !== 1 || sortColumName !== 'storeId'\">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M6.00016 1.33337V10.6667M6.00016 10.6667L10.6668 6.00004M6.00016 10.6667L1.3335 6.00004\"\r\n stroke=\"#667085\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <span *ngIf=\"sortColumName === 'storeId' && sortBy !== -1\">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M6.00016 10.6667L6.00016 1.33337M6.00016 1.33337L1.3335 6.00004M6.00016 1.33337L10.6668 6.00004\"\r\n stroke=\"#009BF3\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n </th>\r\n <th><div class=\"cursor-pointer\" (click)=\"sortData('auditType')\">Audit Type\r\n <span *ngIf=\"sortColumName === 'auditType' && sortBy !== 1 || sortColumName !== 'auditType'\">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M6.00016 1.33337V10.6667M6.00016 10.6667L10.6668 6.00004M6.00016 10.6667L1.3335 6.00004\"\r\n stroke=\"#667085\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <span *ngIf=\"sortColumName === 'auditType' && sortBy !== -1\">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M6.00016 10.6667L6.00016 1.33337M6.00016 1.33337L1.3335 6.00004M6.00016 1.33337L10.6668 6.00004\"\r\n stroke=\"#009BF3\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span></div>\r\n </th>\r\n <th *ngIf=\"selectedType === 'all'\">Product Type</th>\r\n <th *ngIf=\"selectedType !== 'traffic'\"><div class=\"cursor-pointer\" (click)=\"sortData('zoneName')\">\r\n Zone Name\r\n <span *ngIf=\"sortColumName === 'zoneName' && sortBy !== 1 || sortColumName !== 'zoneName'\">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M6.00016 1.33337V10.6667M6.00016 10.6667L10.6668 6.00004M6.00016 10.6667L1.3335 6.00004\"\r\n stroke=\"#667085\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <span *ngIf=\"sortColumName === 'zoneName' && sortBy !== -1\">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M6.00016 10.6667L6.00016 1.33337M6.00016 1.33337L1.3335 6.00004M6.00016 1.33337L10.6668 6.00004\"\r\n stroke=\"#009BF3\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span></div></th>\r\n <th><div class=\"cursor-pointer\" (click)=\"sortData('beforeCount')\">\r\n BC\r\n <span *ngIf=\"sortColumName === 'beforeCount' && sortBy !== 1 || sortColumName !== 'beforeCount'\">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M6.00016 1.33337V10.6667M6.00016 10.6667L10.6668 6.00004M6.00016 10.6667L1.3335 6.00004\"\r\n stroke=\"#667085\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <span *ngIf=\"sortColumName === 'beforeCount' && sortBy !== -1\">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M6.00016 10.6667L6.00016 1.33337M6.00016 1.33337L1.3335 6.00004M6.00016 1.33337L10.6668 6.00004\"\r\n stroke=\"#009BF3\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span></div>\r\n </th>\r\n <th><div class=\"cursor-pointer\" (click)=\"sortData('afterCount')\">\r\n AC\r\n <span *ngIf=\"sortColumName === 'afterCount' && sortBy !== 1 || sortColumName !== 'afterCount'\">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M6.00016 1.33337V10.6667M6.00016 10.6667L10.6668 6.00004M6.00016 10.6667L1.3335 6.00004\"\r\n stroke=\"#667085\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <span *ngIf=\"sortColumName === 'afterCount' && sortBy !== -1\">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M6.00016 10.6667L6.00016 1.33337M6.00016 1.33337L1.3335 6.00004M6.00016 1.33337L10.6668 6.00004\"\r\n stroke=\"#009BF3\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span></div>\r\n </th>\r\n <th><div class=\"cursor-pointer\" (click)=\"sortData('accuracy')\">Accuracy\r\n <span *ngIf=\"sortColumName === 'accuracy' && sortBy !== 1 || sortColumName !== 'accuracy'\">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M6.00016 1.33337V10.6667M6.00016 10.6667L10.6668 6.00004M6.00016 10.6667L1.3335 6.00004\"\r\n stroke=\"#667085\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <span *ngIf=\"sortColumName === 'accuracy' && sortBy !== -1\">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M6.00016 10.6667L6.00016 1.33337M6.00016 1.33337L1.3335 6.00004M6.00016 1.33337L10.6668 6.00004\"\r\n stroke=\"#009BF3\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span></div>\r\n </th>\r\n\r\n <th><div class=\"cursor-pointer\" (click)=\"sortData('createdAt')\">Audited Date\r\n <span *ngIf=\"sortColumName === 'createdAt' && sortBy !== 1 || sortColumName !== 'createdAt'\">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M6.00016 1.33337V10.6667M6.00016 10.6667L10.6668 6.00004M6.00016 10.6667L1.3335 6.00004\"\r\n stroke=\"#667085\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <span *ngIf=\"sortColumName === 'createdAt' && sortBy !== -1\">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M6.00016 10.6667L6.00016 1.33337M6.00016 1.33337L1.3335 6.00004M6.00016 1.33337L10.6668 6.00004\"\r\n stroke=\"#009BF3\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span></div>\r\n </th>\r\n <th><div class=\"cursor-pointer\" (click)=\"sortData('startTime')\">Start Time\r\n <span *ngIf=\"sortColumName === 'startTime' && sortBy !== 1 || sortColumName !== 'startTime'\">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M6.00016 1.33337V10.6667M6.00016 10.6667L10.6668 6.00004M6.00016 10.6667L1.3335 6.00004\"\r\n stroke=\"#667085\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <span *ngIf=\"sortColumName === 'startTime' && sortBy !== -1\">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M6.00016 10.6667L6.00016 1.33337M6.00016 1.33337L1.3335 6.00004M6.00016 1.33337L10.6668 6.00004\"\r\n stroke=\"#009BF3\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span></div>\r\n </th>\r\n <th><div class=\"cursor-pointer\" (click)=\"sortData('endTime')\">End Time\r\n <span *ngIf=\"sortColumName === 'endTime' && sortBy !== 1 || sortColumName !== 'endTime'\">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M6.00016 1.33337V10.6667M6.00016 10.6667L10.6668 6.00004M6.00016 10.6667L1.3335 6.00004\"\r\n stroke=\"#667085\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <span *ngIf=\"sortColumName === 'endTime' && sortBy !== -1\">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M6.00016 10.6667L6.00016 1.33337M6.00016 1.33337L1.3335 6.00004M6.00016 1.33337L10.6668 6.00004\"\r\n stroke=\"#009BF3\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span></div>\r\n </th>\r\n <th><div class=\"cursor-pointer\" (click)=\"sortData('timeSpent')\">Time Spent\r\n <span *ngIf=\"sortColumName === 'timeSpent' && sortBy !== 1 || sortColumName !== 'timeSpent'\">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M6.00016 1.33337V10.6667M6.00016 10.6667L10.6668 6.00004M6.00016 10.6667L1.3335 6.00004\"\r\n stroke=\"#667085\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <span *ngIf=\"sortColumName === 'timeSpent' && sortBy !== -1\">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M6.00016 10.6667L6.00016 1.33337M6.00016 1.33337L1.3335 6.00004M6.00016 1.33337L10.6668 6.00004\"\r\n stroke=\"#009BF3\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span></div>\r\n </th>\r\n \r\n <th><div class=\"cursor-pointer\" (click)=\"sortData('auditStatus')\">Status\r\n <span *ngIf=\"sortColumName === 'auditStatus' && sortBy !== 1 || sortColumName !== 'auditStatus'\">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M6.00016 1.33337V10.6667M6.00016 10.6667L10.6668 6.00004M6.00016 10.6667L1.3335 6.00004\"\r\n stroke=\"#667085\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <span *ngIf=\"sortColumName === 'auditStatus' && sortBy !== -1\">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M6.00016 10.6667L6.00016 1.33337M6.00016 1.33337L1.3335 6.00004M6.00016 1.33337L10.6668 6.00004\"\r\n stroke=\"#009BF3\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span></div>\r\n </th>\r\n <th>Action\r\n \r\n </th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let history of workHistorydata; let i = index\" class=\"tr-padding\">\r\n <td>{{history?.fileDate ? history?.fileDate : '--'}}</td>\r\n <td>{{history?.clientName ? history?.clientName :'--'}}</td>\r\n <td>{{history?.clientId ? history?.clientId :'--'}}</td>\r\n <td>{{history?.storeName ? history?.storeName : '--'}}</td>\r\n <td>{{history?.storeId ? history?.storeId : '--'}}</td>\r\n <td>{{history?.auditType ==='ReAudit' ? 'Re-Audit' : history?.auditType}}</td>\r\n <td *ngIf=\"selectedType === 'all'\">{{history?.moduleType | titlecase}}</td>\r\n <td *ngIf=\"selectedType !== 'traffic'\">{{ history?.moduleType ==='traffic' ? '--' : history?.zoneName}}</td>\r\n <td>{{history?.beforeCount ?? '--'}}</td>\r\n <td>{{history?.afterCount ?? '--'}}</td>\r\n <td>{{history?.accuracy ?? '--'}}</td>\r\n <td>{{history?.createdAt ? (history?.createdAt | customDateFormat) :'--'}}</td>\r\n <td>{{history?.startTime ? history?.startTime :'--'}}</td>\r\n <td>{{history?.endTime ? history?.endTime :'--'}}</td>\r\n <td>{{history?.timeSpent ? history?.timeSpent :'--'}}</td>\r\n <td>\r\n <span *ngIf=\"history.auditStatus !== 'not_assign'\" [ngClass]=\"history?.auditStatus ==='completed' ? 'badge-light-success' : (history?.auditStatus ==='drafted' ? 'badge-light-danger' :'badge-light-primary')\" class=\"badge\">{{history.auditStatus | titlecase}}</span>\r\n <span *ngIf=\"history.auditStatus === 'not_assign'\" class=\"badge badge-light-danger\">Not Assigned</span>\r\n </td>\r\n <td><span class=\"cursor-pointer\" (click)=\"viewHistory(history)\">\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=\"M0.833374 10C0.833374 10 4.16671 3.33337 10 3.33337C15.8334 3.33337 19.1667 10 19.1667 10C19.1667 10 15.8334 16.6667 10 16.6667C4.16671 16.6667 0.833374 10 0.833374 10Z\" stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n <path d=\"M10 12.5C11.3808 12.5 12.5 11.3808 12.5 10C12.5 8.61933 11.3808 7.50004 10 7.50004C8.61933 7.50004 7.50004 8.61933 7.50004 10C7.50004 11.3808 8.61933 12.5 10 12.5Z\" stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg></span>\r\n </td>\r\n </tr>\r\n </tbody>\r\n \r\n </table> \r\n </div>\r\n <lib-pagination [itemsPerPage]=\"limit\" [currentPage]=\"offset\"\r\n [totalItems]=\"totalCount\" [paginationSizes]=\"paginationSizes\" [pageSize]=\"setLimit()\"\r\n (pageChange)=\"onPageChange($event)\" (pageSizeChange)=\"onPageSizeChange($event)\"></lib-pagination>\r\n </div> \r\n <ng-container *ngIf=\"historyLoading\" >\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 \r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"historyNodata\">\r\n <div class=\"row\">\r\n <div class=\"col-lg-12 mb-3\">\r\n <div class=\"card-body d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-src\" src=\"./assets/tango/Icons/Nodata.svg\" alt=\"\">\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <div *ngIf=\"userData === 'Workspace'\">\r\n <lib-audit-management [searchAudit]=\"searchAudit\" [selectedType]=\"selectedType\" [selectedClient]=\"selectedClient\" [clientId]=\"clientId\"></lib-audit-management>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".rowbody{background:var(--Gray-50, #F9FAFB)}.issuecard{border-radius:8px;border:1px solid var(--Gray-100, #F2F4F7);background:var(--White, #FFF);box-shadow:0 1px 2px #1018280d;padding:14px 12px}.issuecard label{color:var(--Black, #101828);font-size:16px;line-height:24px}.issuecard.active{background:var(--Primary-25, #F6FCFF);box-shadow:0 2px 4px -2px #1018280f,0 4px 8px -2px #1018281a}.active{border:none;background:var(--Primary-50, #EAF8FF);padding:8px 12px}.fw-bold-700{font-weight:700!important}.fw-bold-400{font-weight:400!important}.profile{width:24px;height:24px;overflow:hidden;border-radius:200px}.msgprofile{width:48px!important;height:48px!important;border-radius:200px;overflow:hidden}.timingtext{color:var(--Gray-500, #667085);font-size:12px;line-height:18px}.bg-badge{background-color:#776f6f29!important}.items:hover,.tems.focus,.items.active,.camera.focus-visible{background:var(--Gray-50, #F9FAFB)}.textSub{color:var(--Gray-500, #667085);font-size:14px;font-weight:400;line-height:20px}.taketicket{color:var(--Gray-500, #667085);font-size:16px;line-height:24px}tr{vertical-align:middle!important}.img-src{width:25%}.mh-60vh{height:40vh!important}.min-height-60vh{min-height:50vh!important}.text-primary{color:var(--Primary-700, #009BF3)!important;font-family:Inter;font-size:14px;font-weight:500}table th,table td{height:44px!important;padding:12px 24px!important;align-items:center;gap:12px;align-self:stretch}.daterangepicker{display:block!important;top:153.85px!important;left:900px!important;right:0}.form-control{color:var(--Gray-700, #344054)!important;font-size:14px!important;font-weight:600;line-height:20px;text-transform:capitalize}::ng-deep .applyBtn{display:none!important}:host::ng-deep .md-drppicker .btn{line-height:10px!important}:host::ng-deep .daterangepicker-input+.ngx-daterangepicker-material .applyBtn{display:none}:host::ng-deep .md-drppicker.drops-down-right.ltr.double.show-ranges.shown{top:65px!important;left:-470px!important;height:450px!important}:host::ng-deep .md-drppicker .btn{border-radius:8px!important;border:1px solid var(--Primary-600, #00A3FF)!important;background:var(--Primary-600, #00A3FF)!important;box-shadow:0 1px 2px #1018280d!important;color:var(--White, #FFF)!important;font-size:14px!important;font-weight:600!important;line-height:20px;text-transform:capitalize}:host::ng-deep .md-drppicker .ranges ul li button{padding:12px 16px;width:160px;color:var(--Gray-700, #344054);font-size:14px;font-weight:400;line-height:20px;background:none;border:none;text-align:left;cursor:pointer}:host::ng-deep .md-drppicker td.active,:host::ng-deep .md-drppicker td.active:hover{background-color:#029cf4!important;border-radius:20px!important;color:var(--White, #FFF)!important;text-align:center!important;font-size:14px!important;font-weight:500!important;line-height:20px}:host::ng-deep .md-drppicker.ltr .ranges{float:left;margin-top:10px!important}:host::ng-deep .md-drppicker td.in-range{background:var(--Primary-50, #EAF8FF)}:host::ng-deep .md-drppicker .ranges ul li button.active{background:var(--Primary-50, #EAF8FF)!important;border-radius:8px!important;color:var(--Primary-700, #009BF3);font-size:14px!important;font-weight:500!important;line-height:20px!important}:host::ng-deep table th,:host::ng-deep table td{width:40px!important;height:40px!important;padding:10px 8px!important}:host::ng-deep .md-drppicker td.available.prev,:host::ng-deep .md-drppicker th.available.prev{background-image:url(data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB2aWV3Qm94PSIwIDAgMy43IDYiIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDMuNyA2IiB4bWw6c3BhY2U9InByZXNlcnZlIj4NCjxnPg0KCTxwYXRoIGQ9Ik0zLjcsMC43TDEuNCwzbDIuMywyLjNMMyw2TDAsM2wzLTNMMy43LDAuN3oiLz4NCjwvZz4NCjwvc3ZnPg0K)!important;background-repeat:no-repeat!important;background-size:.5em!important;background-position:center!important}:host::ng-deep .md-drppicker td.available.next,:host::ng-deep .md-drppicker th.available.next{background-image:url(data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB2aWV3Qm94PSIwIDAgMy43IDYiIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDMuNyA2IiB4bWw6c3BhY2U9InByZXNlcnZlIj4NCjxnPg0KCTxwYXRoIGQ9Ik0zLjcsMC43TDEuNCwzbDIuMywyLjNMMyw2TDAsM2wzLTNMMy43LDAuN3oiLz4NCjwvZz4NCjwvc3ZnPg0K)!important;background-repeat:no-repeat!important;background-size:.5em!important;background-position:center!important}:host::ng-deep .md-drppicker .btn.btn-default{border-radius:8px!important;border:1px solid var(--Gray-300, #D0D5DD)!important;background:var(--White, #FFF)!important;box-shadow:0 1px 2px #1018280d!important;color:var(--Gray-700, #344054)!important;font-size:14px!important;font-weight:600!important;line-height:20px;text-transform:capitalize;margin-right:10px!important}:host::ng-deep .md-drppicker td.available.invalid-date{text-decoration:line-through;pointer-events:none;color:#a9a9a9}:host::ng-deep .md-drppicker td.available.today:not(.invalid-date){text-decoration:unset;pointer-events:unset;color:unset}.test-col{color:var(--gray-800, #1D2939);font-family:Inter!important;font-size:32px;font-style:normal;font-weight:400;line-height:40px;letter-spacing:-.64px}.test{margin:11px 5px!important}.tr-padding{height:60px!important}\n"] }]
358
359
  }], ctorParameters: () => [{ type: i1.ActivatedRoute }, { type: i1.Router }, { type: i0.ChangeDetectorRef }, { type: i2.DataService }, { type: i3.ToastService }, { type: i4.TicketsService }, { type: i2.DataService }, { type: i5.GlobalStateService }, { type: i6.ExcelService }, { type: i7.NgbModal }, { type: i5.LayoutService }, { type: i8.AuthService }], propDecorators: { onClick: [{
359
360
  type: HostListener,
360
361
  args: ["document:click", ["$event"]]
361
362
  }] } });
362
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXVkaXQtd29ya3NwYWNlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RhbmdvLXRpY2tldC11c2VyL3NyYy9saWIvY29tcG9uZW50cy9hdWRpdC13b3Jrc3BhY2UvYXVkaXQtd29ya3NwYWNlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RhbmdvLXRpY2tldC11c2VyL3NyYy9saWIvY29tcG9uZW50cy9hdWRpdC13b3Jrc3BhY2UvYXVkaXQtd29ya3NwYWNlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsWUFBWSxFQUErQixNQUFNLGVBQWUsQ0FBQztBQUs3RixPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUkxQyxPQUFPLEtBQUssTUFBTSxPQUFPLENBQUM7QUFHMUIsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7Ozs7Ozs7Ozs7Ozs7QUFPNUUsTUFBTSxPQUFPLHVCQUF1QjtJQXNEZDtJQUErQjtJQUN6QztJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0Q7SUFDQztJQUNBO0lBQ0E7SUFDQTtJQS9EVixZQUFZLENBQU07SUFDbEIsUUFBUSxDQUFTO0lBQ2pCLElBQUksQ0FBTTtJQUNWLFFBQVEsQ0FBTTtJQUNkLFVBQVUsQ0FBTTtJQUNoQixjQUFjLEdBQVksSUFBSSxDQUFDO0lBQy9CLGFBQWEsR0FBWSxLQUFLLENBQUM7SUFDL0IsTUFBTSxDQUFVO0lBQ2hCLFFBQVEsR0FBWSxLQUFLLENBQUM7SUFDMUIsZUFBZSxDQUFNO0lBQ3JCLE1BQU0sR0FBUSxDQUFDLENBQUM7SUFDaEIsTUFBTSxHQUFRLENBQUMsQ0FBQyxDQUFDO0lBQ2pCLEtBQUssR0FBUSxFQUFFLENBQUM7SUFDaEIsYUFBYSxHQUFRLFVBQVUsQ0FBQztJQUNoQyxhQUFhLENBQU07SUFDbkIsV0FBVyxHQUFPLENBQUMsZ0JBQWdCLEVBQUMsZUFBZSxDQUFDLENBQUE7SUFDcEQsZUFBZSxHQUFLLEVBQUUsQ0FBQztJQUNOLFFBQVEsR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO0lBQzFDLFdBQVcsR0FBUSxFQUFFLENBQUM7SUFDdEIsZUFBZSxHQUFRLEVBQUUsQ0FBQztJQUMxQixjQUFjLEdBQVEsRUFBRSxDQUFDO0lBQ3pCLFlBQVksR0FBUSxFQUFFLENBQUM7SUFDdkIsY0FBYyxHQUFNLEVBQUUsQ0FBQztJQUN2QixtQkFBbUIsQ0FBTTtJQUN6QixhQUFhLENBQU07SUFDbkIsTUFBTSxHQUFPLEVBQUUsQ0FBQztJQUNoQixZQUFZLENBQUs7SUFDakIsWUFBWSxHQUFRLEVBQUUsQ0FBQztJQUN2QixnQkFBZ0IsQ0FBTTtJQUN0QixLQUFLLEdBQUcsS0FBSyxDQUFDO0lBQ04sV0FBVyxHQUFtQixFQUFFLENBQUM7SUFDekMsWUFBWSxHQUFHLENBQUMsQ0FBYyxFQUFFLEVBQUU7UUFDaEMsTUFBTSxXQUFXLEdBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUN0QyxPQUFPLFdBQVcsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7SUFDaEQsQ0FBQyxDQUFBO0lBQ0MsaUJBQWlCLEdBQVEsRUFBRSxDQUFDO0lBQzVCLGVBQWUsR0FBUTtRQUNyQixNQUFNLEVBQUUsSUFBSTtRQUNaLFVBQVUsRUFBQyxJQUFJO1FBQ2YsT0FBTyxFQUFFLEVBQUU7UUFDWCxLQUFLLEVBQUUsSUFBSTtRQUNYLE1BQU0sRUFBRSxFQUFFO1FBQ1YsSUFBSSxFQUFFLElBQUk7S0FDWCxDQUFDO0lBQ0YsS0FBSyxDQUFNO0lBQ1gsTUFBTSxDQUFVO0lBQ2hCLFFBQVEsR0FBUSxVQUFVLENBQUM7SUFDM0IsU0FBUyxDQUFNO0lBQ2YsU0FBUyxDQUFTO0lBQ2xCLE9BQU8sQ0FBUztJQUNoQixVQUFVLENBQU07SUFDaEIsZUFBZSxHQUFPLENBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLENBQUMsQ0FBQztJQUVqQyxZQUFvQixLQUFxQixFQUFVLE1BQWMsRUFDdkQsRUFBcUIsRUFDckIsV0FBd0IsRUFDeEIsWUFBMEIsRUFDMUIsT0FBdUIsRUFDdkIsV0FBd0IsRUFDekIsRUFBc0IsRUFDckIsS0FBbUIsRUFDbkIsWUFBc0IsRUFDdEIsTUFBcUIsRUFDckIsT0FBb0I7UUFWVixVQUFLLEdBQUwsS0FBSyxDQUFnQjtRQUFVLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDdkQsT0FBRSxHQUFGLEVBQUUsQ0FBbUI7UUFDckIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsWUFBTyxHQUFQLE9BQU8sQ0FBZ0I7UUFDdkIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDekIsT0FBRSxHQUFGLEVBQUUsQ0FBb0I7UUFDckIsVUFBSyxHQUFMLEtBQUssQ0FBYztRQUNuQixpQkFBWSxHQUFaLFlBQVksQ0FBVTtRQUN0QixXQUFNLEdBQU4sTUFBTSxDQUFlO1FBQ3JCLFlBQU8sR0FBUCxPQUFPLENBQWE7SUFHOUIsQ0FBQztJQUdELE9BQU8sQ0FBQyxLQUFpQjtRQUN2QixNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsTUFBcUIsQ0FBQztRQUMzQyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsRUFBRTtZQUNoQyxJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztTQUN2QjtJQUNILENBQUM7SUFDRCxNQUFNO1FBQ0osSUFBRyxJQUFJLENBQUMsUUFBUSxLQUFLLFNBQVMsRUFBQztZQUM3QixJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQTtTQUMxQjthQUFLLElBQUcsSUFBSSxDQUFDLFFBQVEsS0FBSyxXQUFXLEVBQUM7WUFDckMsSUFBSSxDQUFDLFlBQVksR0FBRyxTQUFTLENBQUE7U0FDOUI7SUFDSCxDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxRQUFRLEdBQUcsV0FBVyxDQUFDO1FBQzVCLElBQUksQ0FBQyxFQUFFLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBUyxFQUFFLEVBQUU7WUFDNUUsSUFBSSxJQUFJLElBQUksSUFBSSxFQUFFO2dCQUNoQixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQTtnQkFDL0QsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUM7Z0JBQ3pCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFlBQVksRUFBRSxPQUFPLENBQUM7Z0JBQzNDLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxHQUFHLENBQUE7Z0JBQzVCLElBQUcsSUFBSSxDQUFDLFFBQVEsS0FBSyxTQUFTLEVBQUM7b0JBQzdCLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztvQkFDbkIsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO2lCQUNyQjtnQkFDRCxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7YUFDZjtRQUNILENBQUMsQ0FBQyxDQUFDO0lBRUwsQ0FBQztJQUdELFdBQVc7UUFDVCxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7UUFDbkQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDekIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRUgsWUFBWSxDQUFDLEtBQWlCO1FBQzVCLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN4QixJQUFJLENBQUMsUUFBUSxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUNqQyxDQUFDO0lBRUQsU0FBUyxDQUFDLElBQVM7UUFDakIsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7UUFDckIsSUFBSSxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7UUFDaEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7UUFDaEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztRQUNqQixJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDZCxJQUFJLElBQUksQ0FBQyxRQUFRLElBQUksU0FBUyxFQUFFO1lBQzlCLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLFVBQVUsR0FBRztnQkFDbEMsRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFDLElBQUksRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsVUFBVSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsRUFBRSxFQUFDLEVBQUUsRUFBQyxhQUFhLEVBQUUsSUFBSSxFQUFFLGNBQWMsRUFBRSxDQUFDLEVBQUU7Z0JBQ3JJLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFO2dCQUN6QyxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsT0FBTyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFDLEVBQUUsRUFBQyxTQUFTLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxDQUFDLEVBQUU7Z0JBQ3hHLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxZQUFZLEVBQUUsSUFBSSxFQUFFLGFBQWEsRUFBRSxFQUFDLEVBQUMsRUFBRSxFQUFDLFNBQVMsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLEVBQUMsRUFBQyxFQUFFLEVBQUMsU0FBUyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsRUFBQyxFQUFDLEVBQUUsRUFBQyxXQUFXLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxDQUFDLEVBQUM7YUFDbkwsQ0FBQTtZQUNELElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUNwQixJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7U0FDcEI7SUFDSCxDQUFDO0lBRUQsVUFBVSxDQUFDLElBQVE7UUFDakIsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUM7UUFDekIsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7UUFDaEIsSUFBSSxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7UUFDaEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztRQUNqQixJQUFHLElBQUksQ0FBQyxRQUFRLEtBQUksU0FBUyxFQUFDO1lBQzVCLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNuQixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7U0FDckI7SUFDSCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksSUFBSSxHQUFHO1lBQ1QsUUFBUSxFQUFFLElBQUksQ0FBQyxZQUFZLEVBQUUsSUFBSSxFQUFFLFNBQVM7WUFDNUMsTUFBTSxFQUFFLElBQUksQ0FBQyxZQUFZLEVBQUUsSUFBSSxFQUFFLE9BQU87WUFDeEMsUUFBUSxFQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFVBQVU7WUFDbkQsY0FBYyxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDOUQsZUFBZSxFQUFFLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDakUsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUM3RCxrQkFBa0IsRUFBRSxJQUFJLENBQUMsWUFBWSxLQUFLLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQztZQUMxRixXQUFXLEVBQUUsSUFBSSxDQUFDLGFBQWE7WUFDL0IsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRO1lBQ3ZCLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSztZQUNqQixNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU07WUFDbkIsY0FBYyxFQUFFLElBQUksQ0FBQyxhQUFhO1lBQ2xDLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTTtZQUNuQixRQUFRLEVBQUUsS0FBSztTQUNoQixDQUFDO1FBQ0YsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUM7UUFDM0IsSUFBSSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUM7UUFDM0IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7WUFDckUsSUFBSSxFQUFFLENBQUMsR0FBUSxFQUFFLEVBQUU7Z0JBQ2pCLElBQUksR0FBRyxJQUFJLEdBQUcsRUFBRSxJQUFJLElBQUksR0FBRyxFQUFFO29CQUMzQixJQUFJLENBQUMsVUFBVSxHQUFHLEdBQUcsRUFBRSxJQUFJLEVBQUUsS0FBSyxDQUFDO29CQUNuQyxJQUFJLENBQUMsZUFBZSxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDO29CQUN2QyxJQUFHLElBQUksQ0FBQyxVQUFVLEdBQUcsRUFBRSxFQUFDO3dCQUFDLElBQUksQ0FBQyxlQUFlLEdBQUcsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUE7cUJBQUM7eUJBQU07d0JBQ3RFLElBQUksQ0FBQyxlQUFlLEdBQUUsQ0FBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsQ0FBQyxDQUFBO3FCQUNqQztvQkFDRCxJQUFJLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQztvQkFDNUIsSUFBSSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUM7aUJBQzVCO3FCQUFNO29CQUNMLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO29CQUMxQixJQUFJLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQztpQkFDN0I7Z0JBQ0QsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUMxQixDQUFDO1lBQ0QsS0FBSyxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUU7Z0JBQ2IsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUM7Z0JBQzFCLElBQUksQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFDO1lBQzlCLENBQUM7WUFDRCxRQUFRLEtBQUksQ0FBQztTQUNkLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBRyxJQUFJLENBQUMsVUFBVSxHQUFHLEVBQUUsRUFBQztZQUN0QixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUE7U0FDdkI7YUFBSTtZQUFFLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQTtTQUFFO0lBQzVCLENBQUM7SUFFRCxZQUFZO1FBQ1YsSUFBSSxJQUFJLEdBQUc7WUFDVCxVQUFVLEVBQUUsSUFBSSxDQUFDLFFBQVE7U0FDMUIsQ0FBQTtRQUNELElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO1lBQ3ZFLElBQUksRUFBQyxDQUFDLEdBQU8sRUFBRSxFQUFFO2dCQUNmLElBQUcsR0FBRyxJQUFJLEdBQUcsRUFBRSxJQUFJLEtBQUksR0FBRyxFQUFDO29CQUN6QixJQUFJLENBQUMsU0FBUyxHQUFHLEdBQUcsRUFBRSxJQUFJLEVBQUUsTUFBTSxDQUFDO29CQUNuQyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLEdBQUcsQ0FBQyxDQUFDLEdBQVEsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxHQUFHLENBQUMsU0FBUyxFQUFDLEVBQUUsRUFBQyxHQUFHLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDO29CQUMzRixNQUFNLFlBQVksR0FBUyxFQUFFLENBQUM7b0JBQzlCLE1BQU0sT0FBTyxHQUFHLElBQUksR0FBRyxFQUFFLENBQUM7b0JBQzFCLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFTLEVBQUUsRUFBRTt3QkFDM0IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFOzRCQUM1QixPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQzs0QkFDeEIsWUFBWSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQzt5QkFDMUI7b0JBQ0gsQ0FBQyxDQUFDLENBQUM7b0JBQ0gsTUFBTSxhQUFhLEdBQUcsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQVEsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLFdBQVcsS0FBSyxZQUFZLENBQUMsQ0FBQyxDQUFBO29CQUM1RixhQUFhLENBQUMsTUFBTSxHQUFHLFlBQVksQ0FBQztpQkFDckM7WUFDSCxDQUFDO1lBQ0QsS0FBSyxFQUFDLENBQUMsR0FBTyxFQUFDLEVBQUU7WUFFakIsQ0FBQztZQUNELFFBQVEsS0FBSSxDQUFDO1NBQ2hCLENBQUMsQ0FBQTtJQUNELENBQUM7SUFFRixZQUFZLENBQUMsS0FBUztRQUNwQixJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDO0lBQ3hDLENBQUM7SUFFRCxpQkFBaUI7UUFDZixJQUFJLE9BQU8sR0FBRztZQUNaLE1BQU0sRUFBRyxJQUFJLENBQUMsTUFBTTtZQUNwQixLQUFLLEVBQUUsS0FBSztZQUNaLFdBQVcsRUFBRSxJQUFJLENBQUMsV0FBVztZQUM3QixRQUFRLEVBQUcsSUFBSTtZQUNmLFVBQVUsRUFBQyxJQUFJLENBQUMsWUFBWTtZQUM1QixRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVE7WUFDdkIsY0FBYyxFQUFDLElBQUksQ0FBQyxhQUFhO1lBQ2pDLE1BQU0sRUFBQyxJQUFJLENBQUMsTUFBTTtTQUNuQixDQUFBO1FBQ0QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDO1lBQ3JDLElBQUksRUFBQyxDQUFDLEdBQU8sRUFBQyxFQUFFO2dCQUNkLElBQUksR0FBRyxFQUFFO29CQUNQLElBQUksQ0FBQyxXQUFXLENBQUMsZUFBZSxDQUFDLEdBQUcsRUFBRSxXQUFXLENBQUMsQ0FBQztpQkFDcEQ7Z0JBQ0QsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUMxQixDQUFDO1lBQ0QsS0FBSyxFQUFDLENBQUMsR0FBTyxFQUFDLEVBQUU7WUFDakIsQ0FBQztZQUNELFFBQVEsS0FBSSxDQUFDO1NBQ2QsQ0FBQyxDQUFBO0lBQ0osQ0FBQztJQUNELFlBQVksQ0FBQyxVQUFrQjtRQUM3QixJQUFJLENBQUMsTUFBTSxHQUFHLFVBQVUsQ0FBQztRQUN6QixJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDckIsQ0FBQztJQUVELGdCQUFnQixDQUFDLFFBQWdCO1FBQy9CLElBQUksQ0FBQyxLQUFLLEdBQUcsUUFBUSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1FBQ2hCLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNyQixDQUFDO0lBRUQsbUJBQW1CO1FBQ2pCLElBQUksVUFBVSxHQUFHO1lBQ2YsUUFBUSxFQUFFLElBQUksQ0FBQyxZQUFZLEVBQUUsSUFBSSxFQUFFLFNBQVM7WUFDNUMsTUFBTSxFQUFFLElBQUksQ0FBQyxZQUFZLEVBQUUsSUFBSSxFQUFFLE9BQU87WUFDeEMsUUFBUSxFQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFVBQVU7WUFDbkQsY0FBYyxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDOUQsZUFBZSxFQUFFLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDakUsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUM3RCxrQkFBa0IsRUFBRSxJQUFJLENBQUMsWUFBWSxLQUFLLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQztZQUMxRixXQUFXLEVBQUUsSUFBSSxDQUFDLGFBQWE7WUFDL0IsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRO1lBQ3ZCLEtBQUssRUFBRSxLQUFLO1lBQ1osTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNO1lBQ25CLGNBQWMsRUFBRSxJQUFJLENBQUMsYUFBYTtZQUNsQyxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU07WUFDbkIsUUFBUSxFQUFFLElBQUk7U0FDZixDQUFBO1FBQ0QsSUFBSSxDQUFDLE9BQU87YUFDVCxrQkFBa0IsQ0FBQyxVQUFVLENBQUM7YUFDOUIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7YUFDOUIsU0FBUyxDQUFDO1lBQ1QsSUFBSSxFQUFFLENBQUMsR0FBUSxFQUFFLEVBQUU7Z0JBQ2pCLElBQUksR0FBRyxFQUFFO29CQUNQLElBQUksQ0FBQyxXQUFXLENBQUMsZUFBZSxDQUFDLEdBQUcsRUFBRSxTQUFTLENBQUMsQ0FBQztpQkFDbEQ7Z0JBQ0QsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUMxQixDQUFDO1lBQ0QsS0FBSyxFQUFFLENBQUMsR0FBTyxFQUFFLEVBQUU7Z0JBQ2pCLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO2dCQUMxQixJQUFJLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQztZQUM5QixDQUFDO1lBQ0QsUUFBUSxLQUFJLENBQUM7U0FDZCxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsUUFBUSxDQUFDLEtBQVU7UUFDakIsSUFBSSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUM7UUFDM0IsSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUMsQ0FBQztRQUNsQixJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDckIsQ0FBQztJQUVELFdBQVcsQ0FBQyxJQUFXO1FBQ3JCLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSTthQUN4QixJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxXQUFXLEtBQUssWUFBWSxDQUFDO1lBQ2hELEVBQUUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQVMsRUFBRSxFQUFFLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ3hDLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FDN0IsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxXQUFXLEtBQUssUUFBUSxDQUN0QyxFQUFFLE1BQU0sRUFBRSxFQUFFLENBQUM7UUFDZCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQ3ZCLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsV0FBVyxLQUFLLFdBQVcsQ0FDekMsRUFBRSxNQUFNLEVBQUUsRUFBRSxDQUFDO1FBQ2QsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJO2FBQ25CLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLFdBQVcsS0FBSyxZQUFZLENBQUM7WUFDaEQsRUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBUyxFQUFFLEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFMUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3JCLENBQUM7SUFFRCxrQkFBa0I7UUFDaEIsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3JCLENBQUM7SUFDRCxnQkFBZ0IsQ0FBQyxLQUFTO1FBQ3hCLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxLQUFLLENBQUM7UUFDakMsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7SUFDN0IsQ0FBQztJQUVELFdBQVcsQ0FBQyxJQUFRO1FBQ2pCLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLG9CQUFvQixFQUFDLEVBQUUsUUFBUSxFQUFDLElBQUksRUFBQyxJQUFJLEVBQUMsSUFBSSxFQUFDLENBQUMsQ0FBQTtRQUN4RixRQUFRLENBQUMsaUJBQWlCLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztJQUMxQyxDQUFDO0lBRUQsWUFBWSxDQUFDLEtBQVM7UUFDcEIsSUFBSSxLQUFLLEVBQUUsTUFBTSxFQUFFO1lBQ2pCLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFZLEVBQUUsRUFBRTtnQkFDN0IsSUFBSSxPQUFPLENBQUMsV0FBVyxLQUFLLFFBQVEsRUFBRTtvQkFDcEMsSUFBSSxDQUFDLGFBQWEsR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQVEsRUFBRSxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDO2lCQUNoRTtZQUNILENBQUMsQ0FBQyxDQUFBO1NBQ0Q7UUFDRCxJQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxLQUFLLENBQUM7WUFDaEMsSUFBSSxDQUFDLGFBQWEsR0FBRSxFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUVELFVBQVU7UUFDUixJQUFJLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQztJQUM5QixDQUFDO3dHQXZWVSx1QkFBdUI7NEZBQXZCLHVCQUF1Qix5SENuQnBDLGcwcENBeVlBOzs0RkR0WGEsdUJBQXVCO2tCQUxuQyxTQUFTOytCQUNFLHFCQUFxQjs2WEEwRS9CLE9BQU87c0JBRE4sWUFBWTt1QkFBQyxnQkFBZ0IsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBIb3N0TGlzdGVuZXIsIENoYW5nZURldGVjdG9yUmVmLCBPbkRlc3Ryb3l9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgVG9hc3RTZXJ2aWNlIH0gZnJvbSAndGFuZ28tYXBwLXVpLXNoYXJlZCc7XHJcbmltcG9ydCB7IEdsb2JhbFN0YXRlU2VydmljZSwgTGF5b3V0U2VydmljZSB9IGZyb20gJ3RhbmdvLWFwcC11aS1nbG9iYWwnO1xyXG5pbXBvcnQgeyBOZ2JNb2RhbCB9IGZyb20gJ0BuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwJztcclxuaW1wb3J0IHsgU3ViamVjdCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IEV4Y2VsU2VydmljZSB9IGZyb20gXCIuLi8uLi9zZXJ2aWNlcy9leGNlbC5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IFRpY2tldHNTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL3NlcnZpY2VzL3RpY2tldC1pbmZyYS5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IERhdGFTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL3NlcnZpY2VzL2RhdGEuc2VydmljZVwiO1xyXG5pbXBvcnQgZGF5anMgZnJvbSAnZGF5anMnO1xyXG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gXCJ0YW5nby1hcHAtdWktYXV0aFwiOyBcclxuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSBcInJ4anNcIjtcclxuaW1wb3J0IHsgVmlld2hpc3RvcnlDb21wb25lbnQgfSBmcm9tICcuLi92aWV3aGlzdG9yeS92aWV3aGlzdG9yeS5jb21wb25lbnQnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdsaWItYXVkaXQtd29ya3NwYWNlJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vYXVkaXQtd29ya3NwYWNlLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybDogJy4vYXVkaXQtd29ya3NwYWNlLmNvbXBvbmVudC5zY3NzJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgQXVkaXRXb3Jrc3BhY2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsT25EZXN0cm95IHtcclxuICBoZWFkZXJGaWx0ZXI6IGFueTtcclxuICB1c2VyRGF0YTogc3RyaW5nO1xyXG4gIHVzZXI6IGFueTtcclxuICBjbGllbnRJZDogYW55O1xyXG4gIGRhdGFPYmplY3Q6IGFueTtcclxuICBoaXN0b3J5TG9hZGluZzogYm9vbGVhbiA9IHRydWU7XHJcbiAgaGlzdG9yeU5vZGF0YTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGlzT3BlbjogYm9vbGVhbjtcclxuICBkcm9wRG93bjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHNlYXJjaFdvcmtzcGFjZTogYW55O1xyXG4gIG9mZnNldDogYW55ID0gMTtcclxuICBzb3J0Qnk6IGFueSA9IC0xO1xyXG4gIGxpbWl0OiBhbnkgPSAxMDtcclxuICBzb3J0Q29sdW1OYW1lOiBhbnkgPSAnZmlsZURhdGUnO1xyXG4gIHNlYXJjaEhpc3Rvcnk6IGFueTtcclxuICBFeHBvcnRJdGVtczphbnkgPSBbJ092ZXJhbGwgcmVwb3J0JywnSG91cmx5IFJlcG9ydCddXHJcbiAgd29ya0hpc3RvcnlkYXRhOmFueT1bXTtcclxuICBwcml2YXRlIHJlYWRvbmx5IGRlc3Ryb3kkID0gbmV3IFN1YmplY3QoKTtcclxuICBzZWFyY2hBdWRpdDogYW55ID0gJyc7XHJcbiAgZmlsdGVyQnlTdG9yZUlkOiBhbnkgPSBbXTtcclxuICBmaWx0ZXJCeVN0YXR1czogYW55ID0gW107XHJcbiAgZmlsdGVyQnlUeXBlOiBhbnkgPSBbXTtcclxuICBzZWxlY3RlZENsaWVudDphbnkgPScnO1xyXG4gIHNlbGVjdGVkRXhwb3J0SXNzdWU6IGFueTtcclxuICBzZWxlY3RlZElzc3VlOiBhbnk7XHJcbiAgdXNlcklkOmFueSA9ICcnO1xyXG4gIHNlbGVjdGVkVHlwZTphbnk7XHJcbiAgZmlsdGVyU3RvcmVzOiBhbnkgPSBbXTtcclxuICB3b3JrSGlzdG9yeVRhYmxlOiBhbnk7XHJcbiAgZGF5anMgPSBkYXlqcztcclxuICBwcml2YXRlIHVuc3Vic2NyaWJlOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xyXG4gIGlzQ3VzdG9tRGF0ZSA9IChtOiBkYXlqcy5EYXlqcykgPT4ge1xyXG4gICAgY29uc3QgaXNWYWxpZERhdGUgPSAgbSA+IHRoaXMuZGF5anMoKTsgICAgXHJcbiAgICByZXR1cm4gaXNWYWxpZERhdGUgPyAnaW52YWxpZC1kYXRlJyA6IGZhbHNlO1xyXG59XHJcbiAgc2VsZWN0ZWREYXRlUmFuZ2U6IGFueSA9IHt9O1xyXG4gIHNlbGVjdGVkRmlsdGVyczogYW55ID0ge1xyXG4gICAgY2xpZW50OiBudWxsLFxyXG4gICAgY2xpZW50TmFtZTpudWxsLFxyXG4gICAgY2xpZW50czogW10sXHJcbiAgICBzdG9yZTogbnVsbCxcclxuICAgIHN0b3JlczogW10sXHJcbiAgICBkYXRlOiBudWxsLFxyXG4gIH07XHJcbiAgdXNlcnM6IGFueTtcclxuICBsb2FkZWQ6IGJvb2xlYW47XHJcbiAgZmlsZVR5cGU6IGFueSA9ICdmaWxlRGF0ZSc7XHJcbiAgc3RvcmVMaXN0OiBhbnk7XHJcbiAgc3RhcnREYXRlOiBzdHJpbmc7XHJcbiAgZW5kRGF0ZTogc3RyaW5nO1xyXG4gIHRvdGFsQ291bnQ6IGFueTtcclxuICBwYWdpbmF0aW9uU2l6ZXM6YW55ID0gWzEwLDIwLDMwXTtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSByb3V0ZTogQWN0aXZhdGVkUm91dGUsIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXHJcbiAgICBwcml2YXRlIGNkOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgIHByaXZhdGUgZGF0YVNlcnZpY2U6IERhdGFTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSB0b2FzdFNlcnZpY2U6IFRvYXN0U2VydmljZSxcclxuICAgIHByaXZhdGUgU2VydmljZTogVGlja2V0c1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIGRhdGFzZXJ2aWNlOiBEYXRhU2VydmljZSxcclxuICAgIHB1YmxpYyBnczogR2xvYmFsU3RhdGVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBleGNlbDogRXhjZWxTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBtb2RhbHNlcnZpY2U6IE5nYk1vZGFsLFxyXG4gICAgcHJpdmF0ZSBsYXlvdXQ6IExheW91dFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHNlcnZpY2U6IEF1dGhTZXJ2aWNlLFxyXG4gICkge1xyXG4gICAgIFxyXG4gIH1cclxuXHJcbiAgQEhvc3RMaXN0ZW5lcihcImRvY3VtZW50OmNsaWNrXCIsIFtcIiRldmVudFwiXSlcclxuICBvbkNsaWNrKGV2ZW50OiBNb3VzZUV2ZW50KSB7XHJcbiAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQ7XHJcbiAgICBpZiAoIXRhcmdldC5jbG9zZXN0KFwiLmRyb3Bkb3duXCIpKSB7XHJcbiAgICAgIHRoaXMuZHJvcERvd24gPSBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcbiAgZ2V0VGFiKCl7XHJcbiAgICBpZih0aGlzLnVzZXJEYXRhID09PSAnSGlzdG9yeScpe1xyXG4gICAgICB0aGlzLnNlbGVjdGVkVHlwZSA9ICdhbGwnXHJcbiAgICB9ZWxzZSBpZih0aGlzLnVzZXJEYXRhID09PSAnV29ya3NwYWNlJyl7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRUeXBlID0gJ3RyYWZmaWMnXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMudXNlckRhdGEgPSAnV29ya3NwYWNlJztcclxuICAgIHRoaXMuZ3MuZGF0YVJhbmdlVmFsdWUucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSgoZGF0YTogYW55KSA9PiB7XHJcbiAgICAgIGlmIChkYXRhICE9IG51bGwpIHtcclxuICAgICAgICB0aGlzLnVzZXIgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKCd1c2VyLWluZm8nKSB8fCBcIlwiKVxyXG4gICAgICAgIHRoaXMuaGVhZGVyRmlsdGVyID0gZGF0YTtcclxuICAgICAgICB0aGlzLmNsaWVudElkID0gdGhpcy5oZWFkZXJGaWx0ZXI/LmNsaWVudHM7XHJcbiAgICAgICAgdGhpcy51c2VySWQgPSB0aGlzLnVzZXI/Ll9pZFxyXG4gICAgICAgIGlmKHRoaXMudXNlckRhdGEgPT09ICdIaXN0b3J5Jyl7XHJcbiAgICAgICAgICB0aGlzLndvcmtIaXN0b3J5KCk7XHJcbiAgICAgICAgICB0aGlzLmdldHN0b3JlTGlzdCgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmdldFRhYigpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgfVxyXG5cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLnVuc3Vic2NyaWJlLmZvckVhY2goKHNiKSA9PiBzYi51bnN1YnNjcmliZSgpKTtcclxuICAgIHRoaXMuZGVzdHJveSQubmV4dCh0cnVlKTtcclxuICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcclxuICB9XHJcblxyXG5vcGVuRHJvcGRvd24oZXZlbnQ6IE1vdXNlRXZlbnQpIHtcclxuICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICB0aGlzLmRyb3BEb3duID0gIXRoaXMuZHJvcERvd247XHJcbn1cclxuXHJcbnVzZXJWYWx1ZShkYXRhOiBhbnkpIHtcclxuICB0aGlzLnVzZXJEYXRhID0gZGF0YTtcclxuICB0aGlzLmxpbWl0ID0gMTA7XHJcbiAgdGhpcy5vZmZzZXQgPSAxO1xyXG4gIHRoaXMuc29ydEJ5ID0gLTE7XHJcbiAgdGhpcy5nZXRUYWIoKTtcclxuICBpZiAodGhpcy51c2VyRGF0YSA9PSBcIkhpc3RvcnlcIikge1xyXG4gICAgdGhpcy5kYXRhT2JqZWN0ID0gdGhpcy5kYXRhT2JqZWN0ID0gW1xyXG4gICAgICB7IERlc2NyaXB0aW9uOiAnRmlsZSBEYXRlJyx0eXBlIDonc2luZ2xlJywgSXNzdWVzOiBbe2lkOidmaWxlRGF0ZScsIHRleHQ6IFwiRmlsZSBEYXRlXCIgfSwge2lkOidhdWRpdGVkRGF0ZScsIHRleHQ6IFwiQXVkaXRlZCBEYXRlXCIgfV0gfSxcclxuICAgICAgeyBEZXNjcmlwdGlvbjogJ1N0b3JlIE5hbWUnLCBJc3N1ZXM6IFtdIH0sXHJcbiAgICAgIHsgRGVzY3JpcHRpb246ICdBdWRpdCBUeXBlJywgSXNzdWVzOiBbe2lkOidBdWRpdCcsIHRleHQ6IFwiQXVkaXRcIiB9LCB7aWQ6J1JlQXVkaXQnLCB0ZXh0OiBcIlJlLUF1ZGl0XCIgfV0gfSxcclxuICAgICAgeyBEZXNjcmlwdGlvbjogJ1N0YXR1cycsIElzc3VlczogW3tpZDonaW5wcm9ncmVzcycsIHRleHQ6IFwiSW4gUHJvZ3Jlc3NcIiB9LHtpZDonZHJhZnRlZCcsIHRleHQ6IFwiRHJhZnRlZFwiIH0se2lkOidza2lwcGVkJywgdGV4dDogXCJTa2lwcGVkXCIgfSx7aWQ6J2NvbXBsZXRlZCcsIHRleHQ6IFwiQ29tcGxldGVkXCIgfV19LFxyXG4gICAgXVxyXG4gICAgdGhpcy5nZXRzdG9yZUxpc3QoKTtcclxuICAgIHRoaXMud29ya0hpc3RvcnkoKTtcclxuICB9XHJcbn1cclxuXHJcbnNlbGVjdFR5cGUodHlwZTphbnkpe1xyXG4gIHRoaXMuc2VsZWN0ZWRUeXBlID0gdHlwZTtcclxuICB0aGlzLm9mZnNldCA9IDE7XHJcbiAgdGhpcy5saW1pdCA9IDEwO1xyXG4gIHRoaXMuc29ydEJ5ID0gLTE7XHJcbiAgaWYodGhpcy51c2VyRGF0YSA9PT0nSGlzdG9yeScpe1xyXG4gICAgdGhpcy53b3JrSGlzdG9yeSgpO1xyXG4gICAgdGhpcy5nZXRzdG9yZUxpc3QoKTtcclxuICB9XHJcbn1cclxuXHJcbndvcmtIaXN0b3J5KCkge1xyXG4gIGxldCBkYXRhID0ge1xyXG4gICAgZnJvbURhdGU6IHRoaXMuaGVhZGVyRmlsdGVyPy5kYXRlPy5zdGFydERhdGUsXHJcbiAgICB0b0RhdGU6IHRoaXMuaGVhZGVyRmlsdGVyPy5kYXRlPy5lbmREYXRlLFxyXG4gICAgZGF0ZVR5cGU6dGhpcy5maWxlVHlwZSA/IHRoaXMuZmlsZVR5cGUgOiAnZmlsZURhdGUnLFxyXG4gICAgZmlsdGVyQnlTdGF0dXM6IHRoaXMuZmlsdGVyQnlTdGF0dXMgPyB0aGlzLmZpbHRlckJ5U3RhdHVzIDogW10sXHJcbiAgICBmaWx0ZXJCeVN0b3JlSWQ6IHRoaXMuZmlsdGVyQnlTdG9yZUlkID8gdGhpcy5maWx0ZXJCeVN0b3JlSWQgOiBbXSxcclxuICAgIGZpbHRlckJ5QXVkaXRUeXBlOiB0aGlzLmZpbHRlckJ5VHlwZSA/IHRoaXMuZmlsdGVyQnlUeXBlIDogW10sXHJcbiAgICBmaWx0ZXJCeU1vZHVsZVR5cGU6IHRoaXMuc2VsZWN0ZWRUeXBlID09PSAnYWxsJyA/IFsnem9uZScsJ3RyYWZmaWMnXSA6IFt0aGlzLnNlbGVjdGVkVHlwZV0sXHJcbiAgICBzZWFyY2hWYWx1ZTogdGhpcy5zZWFyY2hIaXN0b3J5LFxyXG4gICAgY2xpZW50SWQ6IHRoaXMuY2xpZW50SWQsXHJcbiAgICBsaW1pdDogdGhpcy5saW1pdCxcclxuICAgIG9mZnNldDogdGhpcy5vZmZzZXQsXHJcbiAgICBzb3J0Q29sdW1uTmFtZTogdGhpcy5zb3J0Q29sdW1OYW1lLFxyXG4gICAgc29ydEJ5OiB0aGlzLnNvcnRCeSxcclxuICAgIGlzRXhwb3J0OiBmYWxzZVxyXG4gIH07XHJcbiAgdGhpcy5oaXN0b3J5TG9hZGluZyA9IHRydWU7XHJcbiAgdGhpcy5oaXN0b3J5Tm9kYXRhID0gZmFsc2U7XHJcbiAgdGhpcy5TZXJ2aWNlLmF1ZGl0SGlzdG9yeShkYXRhKS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKHJlcyAmJiByZXM/LmNvZGUgPT0gMjAwKSB7XHJcbiAgICAgICAgICB0aGlzLnRvdGFsQ291bnQgPSByZXM/LmRhdGE/LmNvdW50O1xyXG4gICAgICAgICAgdGhpcy53b3JrSGlzdG9yeWRhdGEgPSByZXMuZGF0YS5yZXN1bHQ7XHJcbiAgICAgICAgICBpZih0aGlzLnRvdGFsQ291bnQgPCAxMCl7dGhpcy5wYWdpbmF0aW9uU2l6ZXMgPSBbdGhpcy50b3RhbENvdW50XX0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMucGFnaW5hdGlvblNpemVzID1bMTAsMjAsMzBdXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLmhpc3RvcnlMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLmhpc3RvcnlOb2RhdGEgPSBmYWxzZTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5oaXN0b3J5Tm9kYXRhID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuaGlzdG9yeUxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIH0sXHJcbiAgICAgIGVycm9yOiAoZXJyKSA9PiB7XHJcbiAgICAgICAgdGhpcy5oaXN0b3J5Tm9kYXRhID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmhpc3RvcnlMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgIH0sXHJcbiAgICAgIGNvbXBsZXRlKCkge30sXHJcbiAgICB9KTtcclxufVxyXG5cclxuc2V0TGltaXQoKXtcclxuICBpZih0aGlzLnRvdGFsQ291bnQgPCAxMCl7XHJcbiAgICByZXR1cm4gdGhpcy50b3RhbENvdW50XHJcbiAgfWVsc2V7IHJldHVybiB0aGlzLmxpbWl0IH1cclxufVxyXG5cclxuZ2V0c3RvcmVMaXN0KCl7XHJcbiAgbGV0IGRhdGEgPSB7XHJcbiAgICBcImNsaWVudElkXCI6IHRoaXMuY2xpZW50SWRcclxuICB9XHJcbiAgdGhpcy5TZXJ2aWNlLmdldHN0b3JlTGlzdChkYXRhKS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKHtcclxuICAgIG5leHQ6KHJlczphbnkpID0+IHtcclxuICAgICAgaWYocmVzICYmIHJlcz8uY29kZSA9PT0yMDApe1xyXG4gICAgICAgIHRoaXMuc3RvcmVMaXN0ID0gcmVzPy5kYXRhPy5yZXN1bHQ7XHJcbiAgICAgICAgY29uc3QgaXNzdWVzID0gdGhpcy5zdG9yZUxpc3Q/Lm1hcCgob2JqOiBhbnkpID0+ICh7IHRleHQ6IG9iai5zdG9yZU5hbWUsaWQ6b2JqLnN0b3JlSWQgfSkpO1xyXG4gICAgICAgIGNvbnN0IHVuaXF1ZUlzc3VlczphbnlbXSA9IFtdO1xyXG4gICAgICAgIGNvbnN0IENsaWVudHMgPSBuZXcgU2V0KCk7XHJcbiAgICAgICAgaXNzdWVzLmZvckVhY2goKGlzc3VlOmFueSkgPT4ge1xyXG4gICAgICAgICAgaWYgKCFDbGllbnRzLmhhcyhpc3N1ZS50ZXh0KSkge1xyXG4gICAgICAgICAgICBDbGllbnRzLmFkZChpc3N1ZS50ZXh0KTtcclxuICAgICAgICAgICAgdW5pcXVlSXNzdWVzLnB1c2goaXNzdWUpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGNvbnN0IGZpbHRyZWRPYmplY3QgPSAodGhpcy5kYXRhT2JqZWN0LmZpbmQoKG9iajogYW55KSA9PiBvYmouRGVzY3JpcHRpb24gPT09IFwiU3RvcmUgTmFtZVwiKSlcclxuICAgICAgICBmaWx0cmVkT2JqZWN0Lklzc3VlcyA9IHVuaXF1ZUlzc3VlcztcclxuICAgICAgfVxyXG4gICAgfSxcclxuICAgIGVycm9yOihlcnI6YW55KT0+IHtcclxuICAgICAgICBcclxuICAgIH0sXHJcbiAgICBjb21wbGV0ZSgpIHt9XHJcbn0pXHJcbiB9XHJcblxyXG5zZWFyY2hBdWRpdHMoZXZlbnQ6YW55KXtcclxuICB0aGlzLnNlYXJjaEF1ZGl0ID0gZXZlbnQudGFyZ2V0LnZhbHVlO1xyXG59XHJcblxyXG5leHBvcnRBdWRpdEFzWGxzeCgpIHtcclxuICBsZXQgcGF5bG9hZCA9IHtcclxuICAgIG9mZnNldCA6IHRoaXMub2Zmc2V0LFxyXG4gICAgbGltaXQ6IDEwMDAwLFxyXG4gICAgc2VhcmNoVmFsdWU6IHRoaXMuc2VhcmNoQXVkaXQsXHJcbiAgICBpc0V4cG9ydCA6IHRydWUsXHJcbiAgICBtb2R1bGVUeXBlOnRoaXMuc2VsZWN0ZWRUeXBlLFxyXG4gICAgY2xpZW50SWQ6IHRoaXMuY2xpZW50SWQsXHJcbiAgICBzb3J0Q29sdW1uTmFtZTp0aGlzLnNvcnRDb2x1bU5hbWUsXHJcbiAgICBzb3J0Qnk6dGhpcy5zb3J0QnlcclxuICB9XHJcbiAgdGhpcy5TZXJ2aWNlLmV4cG9ydChwYXlsb2FkKS5zdWJzY3JpYmUoe1xyXG4gICAgbmV4dDoocmVzOmFueSk9PntcclxuICAgICAgaWYgKHJlcykge1xyXG4gICAgICAgIHRoaXMuZGF0YVNlcnZpY2Uuc2F2ZUFzRXhjZWxGaWxlKHJlcywgXCJ3b3Jrc3BhY2VcIik7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9LFxyXG4gICAgZXJyb3I6KGVycjphbnkpPT57IFxyXG4gICAgfSxcclxuICAgIGNvbXBsZXRlKCkge31cclxuICB9KVxyXG59XHJcbm9uUGFnZUNoYW5nZShwYWdlT2Zmc2V0OiBudW1iZXIpIHtcclxuICB0aGlzLm9mZnNldCA9IHBhZ2VPZmZzZXQ7XHJcbiAgdGhpcy53b3JrSGlzdG9yeSgpO1xyXG59XHJcblxyXG5vblBhZ2VTaXplQ2hhbmdlKHBhZ2VTaXplOiBudW1iZXIpIHtcclxuICB0aGlzLmxpbWl0ID0gcGFnZVNpemU7XHJcbiAgdGhpcy5vZmZzZXQgPSAxO1xyXG4gIHRoaXMud29ya0hpc3RvcnkoKTtcclxufVxyXG5cclxuZXhwb3J0SGlzdG9yeWFzWGxzeCgpIHtcclxuICBsZXQgZXhwb3J0RGF0YSA9IHtcclxuICAgIGZyb21EYXRlOiB0aGlzLmhlYWRlckZpbHRlcj8uZGF0ZT8uc3RhcnREYXRlLFxyXG4gICAgdG9EYXRlOiB0aGlzLmhlYWRlckZpbHRlcj8uZGF0ZT8uZW5kRGF0ZSxcclxuICAgIGRhdGVUeXBlOnRoaXMuZmlsZVR5cGUgPyB0aGlzLmZpbGVUeXBlIDogJ2ZpbGVEYXRlJyxcclxuICAgIGZpbHRlckJ5U3RhdHVzOiB0aGlzLmZpbHRlckJ5U3RhdHVzID8gdGhpcy5maWx0ZXJCeVN0YXR1cyA6IFtdLFxyXG4gICAgZmlsdGVyQnlTdG9yZUlkOiB0aGlzLmZpbHRlckJ5U3RvcmVJZCA/IHRoaXMuZmlsdGVyQnlTdG9yZUlkIDogW10sXHJcbiAgICBmaWx0ZXJCeUF1ZGl0VHlwZTogdGhpcy5maWx0ZXJCeVR5cGUgPyB0aGlzLmZpbHRlckJ5VHlwZSA6IFtdLFxyXG4gICAgZmlsdGVyQnlNb2R1bGVUeXBlOiB0aGlzLnNlbGVjdGVkVHlwZSA9PT0gJ2FsbCcgPyBbJ3pvbmUnLCd0cmFmZmljJ10gOiBbdGhpcy5zZWxlY3RlZFR5cGVdLFxyXG4gICAgc2VhcmNoVmFsdWU6IHRoaXMuc2VhcmNoSGlzdG9yeSxcclxuICAgIGNsaWVudElkOiB0aGlzLmNsaWVudElkLFxyXG4gICAgbGltaXQ6IDEwMDAwLFxyXG4gICAgb2Zmc2V0OiB0aGlzLm9mZnNldCxcclxuICAgIHNvcnRDb2x1bW5OYW1lOiB0aGlzLnNvcnRDb2x1bU5hbWUsXHJcbiAgICBzb3J0Qnk6IHRoaXMuc29ydEJ5LFxyXG4gICAgaXNFeHBvcnQ6IHRydWVcclxuICB9XHJcbiAgdGhpcy5TZXJ2aWNlXHJcbiAgICAuYXVkaXRIaXN0b3J5RXhwb3J0KGV4cG9ydERhdGEpXHJcbiAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICAuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKHJlcykge1xyXG4gICAgICAgICAgdGhpcy5kYXRhU2VydmljZS5zYXZlQXNFeGNlbEZpbGUocmVzLCBcIkhpc3RvcnlcIik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB9LFxyXG4gICAgICBlcnJvcjogKGVycjphbnkpID0+IHtcclxuICAgICAgICB0aGlzLmhpc3RvcnlOb2RhdGEgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuaGlzdG9yeUxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgfSxcclxuICAgICAgY29tcGxldGUoKSB7fSxcclxuICAgIH0pO1xyXG59XHJcblxyXG5zb3J0RGF0YSh2YWx1ZTogYW55KSB7XHJcbiAgdGhpcy5zb3J0Q29sdW1OYW1lID0gdmFsdWU7XHJcbiAgdGhpcy5zb3J0QnkgKj0gLTE7XHJcbiAgdGhpcy53b3JrSGlzdG9yeSgpO1xyXG59XHJcblxyXG5yZWNlaXZlRGF0YShkYXRhOiBhbnlbXSkge1xyXG4gIHRoaXMuZmlsdGVyQnlTdG9yZUlkID0gZGF0YVxyXG4gICAgLmZpbmQoKG9iaikgPT4gb2JqLkRlc2NyaXB0aW9uID09PSBcIlN0b3JlIE5hbWVcIilcclxuICAgID8uSXNzdWVzLm1hcCgoaXRlbTogYW55KSA9PiBpdGVtPy5pZCk7XHJcbiAgdGhpcy5maWx0ZXJCeVN0YXR1cyA9IGRhdGEuZmluZChcclxuICAgIChvYmopID0+IG9iai5EZXNjcmlwdGlvbiA9PT0gXCJTdGF0dXNcIlxyXG4gICk/Lklzc3Vlcz8uaWQ7XHJcbiAgdGhpcy5maWxlVHlwZSA9IGRhdGEuZmluZChcclxuICAgIChvYmopID0+IG9iai5EZXNjcmlwdGlvbiA9PT0gXCJGaWxlIERhdGVcIlxyXG4gICk/Lklzc3Vlcz8uaWQ7XHJcbiAgdGhpcy5maWx0ZXJCeVR5cGUgPSBkYXRhXHJcbiAgICAgIC5maW5kKChvYmopID0+IG9iai5EZXNjcmlwdGlvbiA9PT0gXCJBdWRpdCBUeXBlXCIpXHJcbiAgICAgID8uSXNzdWVzLm1hcCgoaXRlbTogYW55KSA9PiBpdGVtPy5pZCk7XHJcbiAgXHJcbiAgdGhpcy53b3JrSGlzdG9yeSgpO1xyXG59XHJcblxyXG5zZWFyY2hIaXN0b3J5VGFibGUoKSB7XHJcbiAgdGhpcy53b3JrSGlzdG9yeSgpO1xyXG59XHJcbnNlbGVjdEV4cG9ydEl0ZW0odmFsdWU6YW55KXtcclxuICB0aGlzLnNlbGVjdGVkRXhwb3J0SXNzdWUgPSB2YWx1ZTtcclxuICB0aGlzLmV4cG9ydEhpc3Rvcnlhc1hsc3goKTtcclxufVxyXG5cclxudmlld0hpc3RvcnkoZGF0YTphbnkpe1xyXG4gICBjb25zdCBtb2RhbFJlZiA9IHRoaXMubW9kYWxzZXJ2aWNlLm9wZW4oVmlld2hpc3RvcnlDb21wb25lbnQseyBjZW50ZXJlZDp0cnVlLHNpemU6J3hsJ30pXHJcbiAgIG1vZGFsUmVmLmNvbXBvbmVudEluc3RhbmNlLmRhdGEgPSBkYXRhO1xyXG59XHJcblxyXG5hcHBseUZpbHRlcnMoZXZlbnQ6YW55KXtcclxuICBpZiAoZXZlbnQ/Lmxlbmd0aCkge1xyXG4gICAgZXZlbnQuZm9yRWFjaCgoZWxlbWVudDogYW55KSA9PiB7XHJcbiAgICAgIGlmIChlbGVtZW50LkRlc2NyaXB0aW9uID09PSBcIlN0YXR1c1wiKSB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZElzc3VlID0gZWxlbWVudC5Jc3N1ZXMubWFwKCh2YWw6IGFueSkgPT4gdmFsPy5pZCk7XHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgICB9XHJcbiAgICBpZih0aGlzLnNlbGVjdGVkSXNzdWUubGVuZ3RoID09PSA2KVxyXG4gICAgICB0aGlzLnNlbGVjdGVkSXNzdWUgPVtdO1xyXG4gIH1cclxuXHJcbiAgYmFja3RvWm9uZSgpe1xyXG4gICAgdGhpcy5zZWxlY3RlZENsaWVudCA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgLy8gZnJvbUNoaWxkKGV2ZW50OmFueSl7XHJcbiAgLy8gICB0aGlzLnNlbGVjdGVkQ2xpZW50ID0gZXZlbnQ7XHJcbiAgLy8gfVxyXG5cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwiY2FyZFwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyIGJvcmRlci0wIHB0LTNcIj5cclxuICAgICAgICA8aDMgY2xhc3M9XCJjYXJkLXRpdGxlIGFsaWduLWl0ZW1zLXN0YXJ0IGZsZXgtY29sdW1uXCI+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2FyZC1sYWJlbCBtYi0yXCI+QXVkaXQgVGlja2V0czwvc3Bhbj5cclxuICAgICAgICA8L2gzPlxyXG4gICAgICAgIDxkaXYgKm5nSWY9XCJ1c2VyRGF0YSA9PT0nV29ya3NwYWNlJ1wiIGNsYXNzPVwiY2FyZC10b29sYmFyXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXhcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIHBvc2l0aW9uLXJlbGF0aXZlIG15LTFcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN2Zy1pY29uIHN2Zy1pY29uLTEgcG9zaXRpb24tYWJzb2x1dGUgbXMtM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IG9wYWNpdHk9XCIwLjVcIiB4PVwiMTcuMDM2NVwiIHk9XCIxNS4xMjIzXCIgd2lkdGg9XCI4LjE1NTQ2XCIgaGVpZ2h0PVwiMlwiIHJ4PVwiMVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtPVwicm90YXRlKDQ1IDE3LjAzNjUgMTUuMTIyMylcIiBmaWxsPVwiY3VycmVudENvbG9yXCI+PC9yZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTExIDE5QzYuNTU1NTYgMTkgMyAxNS40NDQ0IDMgMTFDMyA2LjU1NTU2IDYuNTU1NTYgMyAxMSAzQzE1LjQ0NDQgMyAxOSA2LjU1NTU2IDE5IDExQzE5IDE1LjQ0NDQgMTUuNDQ0NCAxOSAxMSAxOVpNMTEgNUM3LjUzMzMzIDUgNSA3LjUzMzMzIDUgMTFDNSAxNC40NjY3IDcuNTMzMzMgMTcgMTEgMTdDMTQuNDY2NyAxNyAxNyAxNC40NjY3IDE3IDExQzE3IDcuNTMzMzMgMTQuNDY2NyA1IDExIDVaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwiY3VycmVudENvbG9yXCI+PC9wYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2wgcHMtMTQgbWUtMlwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJTZWFyY2hcIiBhdXRvY29tcGxldGU9XCJvZmZcIiAoY2hhbmdlKT1cInNlYXJjaEF1ZGl0cygkZXZlbnQpXCIvPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJleHBvcnRBdWRpdEFzWGxzeCgpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLWRlZmF1bHQgbXgtMiBidG4tb3V0bGluZSBidG4tb3V0bGluZS1kZWZhdWx0IHJvdW5kZWQtMyB0ZXh0LW5vd3JhcCBib3JkZXItdmFsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTE3LjUgMTIuNVYxNS44MzMzQzE3LjUgMTYuMjc1NCAxNy4zMjQ0IDE2LjY5OTMgMTcuMDExOCAxNy4wMTE4QzE2LjY5OTMgMTcuMzI0NCAxNi4yNzU0IDE3LjUgMTUuODMzMyAxNy41SDQuMTY2NjdDMy43MjQ2NCAxNy41IDMuMzAwNzIgMTcuMzI0NCAyLjk4ODE2IDE3LjAxMThDMi42NzU1OSAxNi42OTkzIDIuNSAxNi4yNzU0IDIuNSAxNS44MzMzVjEyLjVNMTQuMTY2NyA2LjY2NjY3TDEwIDIuNU0xMCAyLjVMNS44MzMzMyA2LjY2NjY3TTEwIDIuNVYxMi41XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjMzQ0MDU0XCIgc3Ryb2tlLXdpZHRoPVwiMS42N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1zLTJcIj5FeHBvcnQ8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiAqbmdJZj1cInVzZXJEYXRhID09PSdIaXN0b3J5J1wiIGNsYXNzPVwiY2FyZC10b29sYmFyXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXhcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIHBvc2l0aW9uLXJlbGF0aXZlIG15LTFcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN2Zy1pY29uIHN2Zy1pY29uLTEgcG9zaXRpb24tYWJzb2x1dGUgbXMtM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IG9wYWNpdHk9XCIwLjVcIiB4PVwiMTcuMDM2NVwiIHk9XCIxNS4xMjIzXCIgd2lkdGg9XCI4LjE1NTQ2XCIgaGVpZ2h0PVwiMlwiIHJ4PVwiMVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtPVwicm90YXRlKDQ1IDE3LjAzNjUgMTUuMTIyMylcIiBmaWxsPVwiY3VycmVudENvbG9yXCI+PC9yZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTExIDE5QzYuNTU1NTYgMTkgMyAxNS40NDQ0IDMgMTFDMyA2LjU1NTU2IDYuNTU1NTYgMyAxMSAzQzE1LjQ0NDQgMyAxOSA2LjU1NTU2IDE5IDExQzE5IDE1LjQ0NDQgMTUuNDQ0NCAxOSAxMSAxOVpNMTEgNUM3LjUzMzMzIDUgNSA3LjUzMzMzIDUgMTFDNSAxNC40NjY3IDcuNTMzMzMgMTcgMTEgMTdDMTQuNDY2NyAxNyAxNyAxNC40NjY3IDE3IDExQzE3IDcuNTMzMzMgMTQuNDY2NyA1IDExIDVaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwiY3VycmVudENvbG9yXCI+PC9wYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2wgcHMtMTQgbWUtMlwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJTZWFyY2hcIiBhdXRvY29tcGxldGU9XCJvZmZcIiBbKG5nTW9kZWwpXT1cInNlYXJjaEhpc3RvcnlcIiAoaW5wdXQpPVwic2VhcmNoSGlzdG9yeVRhYmxlKClcIiAvPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8bGliLWZpbHRlcnMgKm5nSWY9XCJzdG9yZUxpc3RcIiBbZGF0YU9iamVjdF09XCJkYXRhT2JqZWN0XCIgKGFwcGxpZWRGaWx0ZXJzKT1cInJlY2VpdmVEYXRhKCRldmVudClcIiA+PC9saWItZmlsdGVycz5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiFoaXN0b3J5Tm9kYXRhXCIgY2xhc3M9XCJwb3NpdGlvbi1yZWxhdGl2ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJleHBvcnRIaXN0b3J5YXNYbHN4KClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tZGVmYXVsdCBteC0yIGJ0bi1vdXRsaW5lIGJ0bi1vdXRsaW5lLWRlZmF1bHQgcm91bmRlZC0zIHRleHQtbm93cmFwIGJvcmRlci12YWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTcuNSAxMi41VjE1LjgzMzNDMTcuNSAxNi4yNzU0IDE3LjMyNDQgMTYuNjk5MyAxNy4wMTE4IDE3LjAxMThDMTYuNjk5MyAxNy4zMjQ0IDE2LjI3NTQgMTcuNSAxNS44MzMzIDE3LjVINC4xNjY2N0MzLjcyNDY0IDE3LjUgMy4zMDA3MiAxNy4zMjQ0IDIuOTg4MTYgMTcuMDExOEMyLjY3NTU5IDE2LjY5OTMgMi41IDE2LjI3NTQgMi41IDE1LjgzMzNWMTIuNU0xNC4xNjY3IDYuNjY2NjdMMTAgMi41TTEwIDIuNUw1LjgzMzMzIDYuNjY2NjdNMTAgMi41VjEyLjVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiMzNDQwNTRcIiBzdHJva2Utd2lkdGg9XCIxLjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXMtMlwiPkV4cG9ydDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHkgcHktMlwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggb3ZlcmZsb3ctYXV0byBoLTU1cHhcIj5cclxuICAgICAgICAgICAgPHVsIGNsYXNzPVwibmF2IG5hdi1zdHJldGNoIG5hdi1saW5lLXRhYnMgbmF2LWxpbmUtdGFicy0yeCBib3JkZXItdHJhbnNwYXJlbnQgZnMtNSBmdy1ib2xkZXIgZmxleC1ub3dyYXBcIj5cclxuICAgICAgICAgICAgICAgIDxsaSAoY2xpY2spPVwidXNlclZhbHVlKCdXb3Jrc3BhY2UnKVwiICBjbGFzcz1cIm5hdi1pdGVtIGN1cnNvci1wb2ludGVyXCI+PGEgW25nQ2xhc3NdPVwidXNlckRhdGEgPT09J1dvcmtzcGFjZScgPyAnYWN0aXZlJyA6JydcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm5hdi1saW5rIHRleHQtYWN0aXZlLXByaW1hcnkgbWUtNlwiPldvcmtzcGFjZTwvYT5cclxuICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICA8bGkgKGNsaWNrKT1cInVzZXJWYWx1ZSgnSGlzdG9yeScpXCIgY2xhc3M9XCJuYXYtaXRlbSBjdXJzb3ItcG9pbnRlclwiPjxhIFtuZ0NsYXNzXT1cInVzZXJEYXRhID09PSdIaXN0b3J5JyA/ICdhY3RpdmUnIDonJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibmF2LWxpbmsgdGV4dC1hY3RpdmUtcHJpbWFyeSBtZS02XCI+SGlzdG9yeTwvYT48L2xpPlxyXG4gICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gbXQtMTBcIj48ZGl2IGNsYXNzPVwiZC1mbGV4XCI+XHJcbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJ1c2VyRGF0YSA9PT0gJ0hpc3RvcnknXCIgKGNsaWNrKT1cInNlbGVjdFR5cGUoJ2FsbCcpXCIgW25nQ2xhc3NdPVwic2VsZWN0ZWRUeXBlID09PSAnYWxsJyA/ICdhY3RpdmUgdGV4dC1wcmltYXJ5JyA6ICd0ZXh0U3ViJ1wiIGNsYXNzPVwicGUtNSBweS0zIHJvdW5kZWQtMyBjdXJzb3ItcG9pbnRlciBmdy1zZW1pYm9sZFxyXG4gICAgICAgICAgICBmdy1zZW1pYm9sZCBcIj5BbGw8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiAoY2xpY2spPVwic2VsZWN0VHlwZSgndHJhZmZpYycpXCIgW25nQ2xhc3NdPVwic2VsZWN0ZWRUeXBlID09PSAndHJhZmZpYycgPyAnYWN0aXZlIHRleHQtcHJpbWFyeScgOiAndGV4dFN1YidcIiBjbGFzcz1cInB4LTUgcHktMyByb3VuZGVkLTMgY3Vyc29yLXBvaW50ZXIgZnctc2VtaWJvbGRcclxuICAgICAgICAgICAgZnctc2VtaWJvbGQgXCI+VHJhZmZpYzwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IChjbGljayk9XCJzZWxlY3RUeXBlKCd6b25lJylcIiBbbmdDbGFzc109XCJzZWxlY3RlZFR5cGUgPT09ICd6b25lJyA/ICdhY3RpdmUgdGV4dC1wcmltYXJ5JyA6ICd0ZXh0U3ViJ1wiIGNsYXNzPVwicHgtNSBweS0zIHJvdW5kZWQtMyBjdXJzb3ItcG9pbnRlciBmdy1zZW1pYm9sZFxyXG4gICAgICAgICAgICBmdy1zZW1pYm9sZFwiPlpvbmU8L2Rpdj48L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cInNlbGVjdGVkQ2xpZW50XCIgKGNsaWNrKT1cImJhY2t0b1pvbmUoKVwiIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lIHB4LTQgcHktMyBjdXJzb3ItcG9pbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgPHN2Z1xyXG4gICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTRcIiBoZWlnaHQ9XCIxNFwiIHZpZXdCb3g9XCIwIDAgMTQgMTRcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xMi44MzI3IDYuOTk5MzVIMS4xNjYwMk0xLjE2NjAyIDYuOTk5MzVMNi45OTkzNSAxMi44MzI3TTEuMTY2MDIgNi45OTkzNUw2Ljk5OTM1IDEuMTY2MDJcIlxyXG4gICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiMzNDQwNTRcIiBzdHJva2Utd2lkdGg9XCIxLjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgPC9zdmc+IFxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8IS0tICpuZ0lmPVwidXNlckRhdGEgPT09ICdIaXN0b3J5JyAmJiBzZWxlY3RlZFR5cGUgPT09ICd0cmFmZmljJ1wiIC0tPlxyXG4gICAgICAgIDxkaXYgKm5nSWY9XCJ1c2VyRGF0YSA9PT0gJ0hpc3RvcnknXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIWhpc3RvcnlMb2FkaW5nICYmICFoaXN0b3J5Tm9kYXRhXCIgY2xhc3M9XCJwdC0xMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1yZXNwb25zaXZlXCI+ICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz1cInRhYmxlIGJvdHRvbS1ib3JkZXIgdGV4dC1ub3dyYXBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGhlYWQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPjxkaXYgY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJzb3J0RGF0YSgnZmlsZURhdGUnKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmlsZSBEYXRlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInNvcnRDb2x1bU5hbWUgPT09ICdmaWxlRGF0ZScgJiYgc29ydEJ5ICE9PSAxIHx8IHNvcnRDb2x1bU5hbWUgIT09ICdmaWxlRGF0ZScgXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTJcIiB2aWV3Qm94PVwiMCAwIDEyIDEyXCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNNi4wMDAxNiAxLjMzMzM3VjEwLjY2NjdNNi4wMDAxNiAxMC42NjY3TDEwLjY2NjggNi4wMDAwNE02LjAwMDE2IDEwLjY2NjdMMS4zMzM1IDYuMDAwMDRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzY2NzA4NVwiIHN0cm9rZS13aWR0aD1cIjEuMzMzMzNcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJzb3J0Q29sdW1OYW1lID09PSAnZmlsZURhdGUnICYmIHNvcnRCeSAhPT0gLTFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIxMlwiIHZpZXdCb3g9XCIwIDAgMTIgMTJcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk02LjAwMDE2IDEwLjY2NjdMNi4wMDAxNiAxLjMzMzM3TTYuMDAwMTYgMS4zMzMzN0wxLjMzMzUgNi4wMDAwNE02LjAwMDE2IDEuMzMzMzdMMTAuNjY2OCA2LjAwMDA0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiMwMDlCRjNcIiBzdHJva2Utd2lkdGg9XCIxLjMzMzMzXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+PGRpdiBjbGFzcz1cImN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cInNvcnREYXRhKCdjbGllbnROYW1lJylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCcmFuZCBOYW1lXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJzb3J0Q29sdW1OYW1lID09PSAnY2xpZW50TmFtZScgJiYgc29ydEJ5ICE9PSAxIHx8IHNvcnRDb2x1bU5hbWUgIT09ICdjbGllbnROYW1lJyBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTJcIiB2aWV3Qm94PVwiMCAwIDEyIDEyXCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTYuMDAwMTYgMS4zMzMzN1YxMC42NjY3TTYuMDAwMTYgMTAuNjY2N0wxMC42NjY4IDYuMDAwMDRNNi4wMDAxNiAxMC42NjY3TDEuMzMzNSA2LjAwMDA0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMS4zMzMzM1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInNvcnRDb2x1bU5hbWUgPT09ICdjbGllbnROYW1lJyAmJiBzb3J0QnkgIT09IC0xXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCIgdmlld0JveD1cIjAgMCAxMiAxMlwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk02LjAwMDE2IDEwLjY2NjdMNi4wMDAxNiAxLjMzMzM3TTYuMDAwMTYgMS4zMzMzN0wxLjMzMzUgNi4wMDAwNE02LjAwMDE2IDEuMzMzMzdMMTAuNjY2OCA2LjAwMDA0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjMDA5QkYzXCIgc3Ryb2tlLXdpZHRoPVwiMS4zMzMzM1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD48ZGl2IGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwic29ydERhdGEoJ2NsaWVudElkJylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJyYW5kIElEXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInNvcnRDb2x1bU5hbWUgPT09ICdjbGllbnRJZCcgJiYgc29ydEJ5ICE9PSAxIHx8IHNvcnRDb2x1bU5hbWUgIT09ICdjbGllbnRJZCcgXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTJcIiB2aWV3Qm94PVwiMCAwIDEyIDEyXCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNNi4wMDAxNiAxLjMzMzM3VjEwLjY2NjdNNi4wMDAxNiAxMC42NjY3TDEwLjY2NjggNi4wMDAwNE02LjAwMDE2IDEwLjY2NjdMMS4zMzM1IDYuMDAwMDRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzY2NzA4NVwiIHN0cm9rZS13aWR0aD1cIjEuMzMzMzNcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJzb3J0Q29sdW1OYW1lID09PSAnY2xpZW50SWQnICYmIHNvcnRCeSAhPT0gLTFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIxMlwiIHZpZXdCb3g9XCIwIDAgMTIgMTJcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk02LjAwMDE2IDEwLjY2NjdMNi4wMDAxNiAxLjMzMzM3TTYuMDAwMTYgMS4zMzMzN0wxLjMzMzUgNi4wMDAwNE02LjAwMDE2IDEuMzMzMzdMMTAuNjY2OCA2LjAwMDA0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiMwMDlCRjNcIiBzdHJva2Utd2lkdGg9XCIxLjMzMzMzXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+PGRpdiBjbGFzcz1cImN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cInNvcnREYXRhKCdzdG9yZU5hbWUnKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0b3JlIE5hbWVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInNvcnRDb2x1bU5hbWUgPT09ICdzdG9yZU5hbWUnICYmIHNvcnRCeSAhPT0gMSB8fCBzb3J0Q29sdW1OYW1lICE9PSAnc3RvcmVOYW1lJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIxMlwiIHZpZXdCb3g9XCIwIDAgMTIgMTJcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNNi4wMDAxNiAxLjMzMzM3VjEwLjY2NjdNNi4wMDAxNiAxMC42NjY3TDEwLjY2NjggNi4wMDAwNE02LjAwMDE2IDEwLjY2NjdMMS4zMzM1IDYuMDAwMDRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM2NjcwODVcIiBzdHJva2Utd2lkdGg9XCIxLjMzMzMzXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwic29ydENvbHVtTmFtZSA9PT0gJ3N0b3JlTmFtZScgJiYgc29ydEJ5ICE9PSAtMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIxMlwiIHZpZXdCb3g9XCIwIDAgMTIgMTJcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNNi4wMDAxNiAxMC42NjY3TDYuMDAwMTYgMS4zMzMzN002LjAwMDE2IDEuMzMzMzdMMS4zMzM1IDYuMDAwMDRNNi4wMDAxNiAxLjMzMzM3TDEwLjY2NjggNi4wMDAwNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzAwOUJGM1wiIHN0cm9rZS13aWR0aD1cIjEuMzMzMzNcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+PGRpdiBjbGFzcz1cImN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cInNvcnREYXRhKCdzdG9yZUlkJylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0b3JlIElEXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInNvcnRDb2x1bU5hbWUgPT09ICdzdG9yZUlkJyAmJiBzb3J0QnkgIT09IDEgfHwgc29ydENvbHVtTmFtZSAhPT0gJ3N0b3JlSWQnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTJcIiB2aWV3Qm94PVwiMCAwIDEyIDEyXCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNNi4wMDAxNiAxLjMzMzM3VjEwLjY2NjdNNi4wMDAxNiAxMC42NjY3TDEwLjY2NjggNi4wMDAwNE02LjAwMDE2IDEwLjY2NjdMMS4zMzM1IDYuMDAwMDRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzY2NzA4NVwiIHN0cm9rZS13aWR0aD1cIjEuMzMzMzNcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJzb3J0Q29sdW1OYW1lID09PSAnc3RvcmVJZCcgJiYgc29ydEJ5ICE9PSAtMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCIgdmlld0JveD1cIjAgMCAxMiAxMlwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTYuMDAwMTYgMTAuNjY2N0w2LjAwMDE2IDEuMzMzMzdNNi4wMDAxNiAxLjMzMzM3TDEuMzMzNSA2LjAwMDA0TTYuMDAwMTYgMS4zMzMzN0wxMC42NjY4IDYuMDAwMDRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzAwOUJGM1wiIHN0cm9rZS13aWR0aD1cIjEuMzMzMzNcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD48ZGl2IGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwic29ydERhdGEoJ2F1ZGl0VHlwZScpXCI+QXVkaXQgVHlwZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJzb3J0Q29sdW1OYW1lID09PSAnYXVkaXRUeXBlJyAmJiBzb3J0QnkgIT09IDEgfHwgc29ydENvbHVtTmFtZSAhPT0gJ2F1ZGl0VHlwZSdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIxMlwiIHZpZXdCb3g9XCIwIDAgMTIgMTJcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk02LjAwMDE2IDEuMzMzMzdWMTAuNjY2N002LjAwMDE2IDEwLjY2NjdMMTAuNjY2OCA2LjAwMDA0TTYuMDAwMTYgMTAuNjY2N0wxLjMzMzUgNi4wMDAwNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMS4zMzMzM1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInNvcnRDb2x1bU5hbWUgPT09ICdhdWRpdFR5cGUnICYmIHNvcnRCeSAhPT0gLTFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIxMlwiIHZpZXdCb3g9XCIwIDAgMTIgMTJcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk02LjAwMDE2IDEwLjY2NjdMNi4wMDAxNiAxLjMzMzM3TTYuMDAwMTYgMS4zMzMzN0wxLjMzMzUgNi4wMDAwNE02LjAwMDE2IDEuMzMzMzdMMTAuNjY2OCA2LjAwMDA0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiMwMDlCRjNcIiBzdHJva2Utd2lkdGg9XCIxLjMzMzMzXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoICpuZ0lmPVwic2VsZWN0ZWRUeXBlID09PSAnYWxsJ1wiPlByb2R1Y3QgVHlwZTwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCAqbmdJZj1cInNlbGVjdGVkVHlwZSAhPT0gJ3RyYWZmaWMnXCI+PGRpdiBjbGFzcz1cImN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cInNvcnREYXRhKCd6b25lTmFtZScpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBab25lIE5hbWVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInNvcnRDb2x1bU5hbWUgPT09ICd6b25lTmFtZScgJiYgc29ydEJ5ICE9PSAxIHx8IHNvcnRDb2x1bU5hbWUgIT09ICd6b25lTmFtZSdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTJcIiB2aWV3Qm94PVwiMCAwIDEyIDEyXCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTYuMDAwMTYgMS4zMzMzN1YxMC42NjY3TTYuMDAwMTYgMTAuNjY2N0wxMC42NjY4IDYuMDAwMDRNNi4wMDAxNiAxMC42NjY3TDEuMzMzNSA2LjAwMDA0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMS4zMzMzM1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInNvcnRDb2x1bU5hbWUgPT09ICd6b25lTmFtZScgJiYgc29ydEJ5ICE9PSAtMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIxMlwiIHZpZXdCb3g9XCIwIDAgMTIgMTJcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNNi4wMDAxNiAxMC42NjY3TDYuMDAwMTYgMS4zMzMzN002LjAwMDE2IDEuMzMzMzdMMS4zMzM1IDYuMDAwMDRNNi4wMDAxNiAxLjMzMzM3TDEwLjY2NjggNi4wMDAwNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzAwOUJGM1wiIHN0cm9rZS13aWR0aD1cIjEuMzMzMzNcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+PC9kaXY+PC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD48ZGl2IGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwic29ydERhdGEoJ2JlZm9yZUNvdW50JylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJDXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJzb3J0Q29sdW1OYW1lID09PSAnYmVmb3JlQ291bnQnICYmIHNvcnRCeSAhPT0gMSB8fCBzb3J0Q29sdW1OYW1lICE9PSAnYmVmb3JlQ291bnQnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCIgdmlld0JveD1cIjAgMCAxMiAxMlwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk02LjAwMDE2IDEuMzMzMzdWMTAuNjY2N002LjAwMDE2IDEwLjY2NjdMMTAuNjY2OCA2LjAwMDA0TTYuMDAwMTYgMTAuNjY2N0wxLjMzMzUgNi4wMDAwNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzY2NzA4NVwiIHN0cm9rZS13aWR0aD1cIjEuMzMzMzNcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJzb3J0Q29sdW1OYW1lID09PSAnYmVmb3JlQ291bnQnICYmIHNvcnRCeSAhPT0gLTFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTJcIiB2aWV3Qm94PVwiMCAwIDEyIDEyXCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTYuMDAwMTYgMTAuNjY2N0w2LjAwMDE2IDEuMzMzMzdNNi4wMDAxNiAxLjMzMzM3TDEuMzMzNSA2LjAwMDA0TTYuMDAwMTYgMS4zMzMzN0wxMC42NjY4IDYuMDAwMDRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiMwMDlCRjNcIiBzdHJva2Utd2lkdGg9XCIxLjMzMzMzXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD48ZGl2IGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwic29ydERhdGEoJ2FmdGVyQ291bnQnKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQUNcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInNvcnRDb2x1bU5hbWUgPT09ICdhZnRlckNvdW50JyAmJiBzb3J0QnkgIT09IDEgfHwgc29ydENvbHVtTmFtZSAhPT0gJ2FmdGVyQ291bnQnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCIgdmlld0JveD1cIjAgMCAxMiAxMlwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk02LjAwMDE2IDEuMzMzMzdWMTAuNjY2N002LjAwMDE2IDEwLjY2NjdMMTAuNjY2OCA2LjAwMDA0TTYuMDAwMTYgMTAuNjY2N0wxLjMzMzUgNi4wMDAwNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzY2NzA4NVwiIHN0cm9rZS13aWR0aD1cIjEuMzMzMzNcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJzb3J0Q29sdW1OYW1lID09PSAnYWZ0ZXJDb3VudCcgJiYgc29ydEJ5ICE9PSAtMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIxMlwiIHZpZXdCb3g9XCIwIDAgMTIgMTJcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNNi4wMDAxNiAxMC42NjY3TDYuMDAwMTYgMS4zMzMzN002LjAwMDE2IDEuMzMzMzdMMS4zMzM1IDYuMDAwMDRNNi4wMDAxNiAxLjMzMzM3TDEwLjY2NjggNi4wMDAwNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzAwOUJGM1wiIHN0cm9rZS13aWR0aD1cIjEuMzMzMzNcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+PGRpdiBjbGFzcz1cImN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cInNvcnREYXRhKCdhY2N1cmFjeScpXCI+QWNjdXJhY3lcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwic29ydENvbHVtTmFtZSA9PT0gJ2FjY3VyYWN5JyAmJiBzb3J0QnkgIT09IDEgfHwgc29ydENvbHVtTmFtZSAhPT0gJ2FjY3VyYWN5J1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCIgdmlld0JveD1cIjAgMCAxMiAxMlwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTYuMDAwMTYgMS4zMzMzN1YxMC42NjY3TTYuMDAwMTYgMTAuNjY2N0wxMC42NjY4IDYuMDAwMDRNNi4wMDAxNiAxMC42NjY3TDEuMzMzNSA2LjAwMDA0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM2NjcwODVcIiBzdHJva2Utd2lkdGg9XCIxLjMzMzMzXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwic29ydENvbHVtTmFtZSA9PT0gJ2FjY3VyYWN5JyAmJiBzb3J0QnkgIT09IC0xXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTJcIiB2aWV3Qm94PVwiMCAwIDEyIDEyXCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNNi4wMDAxNiAxMC42NjY3TDYuMDAwMTYgMS4zMzMzN002LjAwMDE2IDEuMzMzMzdMMS4zMzM1IDYuMDAwMDRNNi4wMDAxNiAxLjMzMzM3TDEwLjY2NjggNi4wMDAwNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjMDA5QkYzXCIgc3Ryb2tlLXdpZHRoPVwiMS4zMzMzM1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD48ZGl2IGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwic29ydERhdGEoJ3N0YXJ0VGltZScpXCI+U3RhcnQgVGltZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJzb3J0Q29sdW1OYW1lID09PSAnc3RhcnRUaW1lJyAmJiBzb3J0QnkgIT09IDEgfHwgc29ydENvbHVtTmFtZSAhPT0gJ3N0YXJ0VGltZSdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIxMlwiIHZpZXdCb3g9XCIwIDAgMTIgMTJcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk02LjAwMDE2IDEuMzMzMzdWMTAuNjY2N002LjAwMDE2IDEwLjY2NjdMMTAuNjY2OCA2LjAwMDA0TTYuMDAwMTYgMTAuNjY2N0wxLjMzMzUgNi4wMDAwNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMS4zMzMzM1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInNvcnRDb2x1bU5hbWUgPT09ICdzdGFydFRpbWUnICYmIHNvcnRCeSAhPT0gLTFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIxMlwiIHZpZXdCb3g9XCIwIDAgMTIgMTJcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk02LjAwMDE2IDEwLjY2NjdMNi4wMDAxNiAxLjMzMzM3TTYuMDAwMTYgMS4zMzMzN0wxLjMzMzUgNi4wMDAwNE02LjAwMDE2IDEuMzMzMzdMMTAuNjY2OCA2LjAwMDA0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiMwMDlCRjNcIiBzdHJva2Utd2lkdGg9XCIxLjMzMzMzXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPjxkaXYgY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJzb3J0RGF0YSgnZW5kVGltZScpXCI+RW5kIFRpbWVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwic29ydENvbHVtTmFtZSA9PT0gJ2VuZFRpbWUnICYmIHNvcnRCeSAhPT0gMSB8fCBzb3J0Q29sdW1OYW1lICE9PSAnZW5kVGltZSdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIxMlwiIHZpZXdCb3g9XCIwIDAgMTIgMTJcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk02LjAwMDE2IDEuMzMzMzdWMTAuNjY2N002LjAwMDE2IDEwLjY2NjdMMTAuNjY2OCA2LjAwMDA0TTYuMDAwMTYgMTAuNjY2N0wxLjMzMzUgNi4wMDAwNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMS4zMzMzM1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInNvcnRDb2x1bU5hbWUgPT09ICdlbmRUaW1lJyAmJiBzb3J0QnkgIT09IC0xXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTJcIiB2aWV3Qm94PVwiMCAwIDEyIDEyXCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNNi4wMDAxNiAxMC42NjY3TDYuMDAwMTYgMS4zMzMzN002LjAwMDE2IDEuMzMzMzdMMS4zMzM1IDYuMDAwMDRNNi4wMDAxNiAxLjMzMzM3TDEwLjY2NjggNi4wMDAwNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjMDA5QkYzXCIgc3Ryb2tlLXdpZHRoPVwiMS4zMzMzM1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD48ZGl2IGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwic29ydERhdGEoJ3RpbWVTcGVudCcpXCI+VGltZSBTcGVudFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJzb3J0Q29sdW1OYW1lID09PSAndGltZVNwZW50JyAmJiBzb3J0QnkgIT09IDEgfHwgc29ydENvbHVtTmFtZSAhPT0gJ3RpbWVTcGVudCdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIxMlwiIHZpZXdCb3g9XCIwIDAgMTIgMTJcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk02LjAwMDE2IDEuMzMzMzdWMTAuNjY2N002LjAwMDE2IDEwLjY2NjdMMTAuNjY2OCA2LjAwMDA0TTYuMDAwMTYgMTAuNjY2N0wxLjMzMzUgNi4wMDAwNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMS4zMzMzM1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInNvcnRDb2x1bU5hbWUgPT09ICd0aW1lU3BlbnQnICYmIHNvcnRCeSAhPT0gLTFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIxMlwiIHZpZXdCb3g9XCIwIDAgMTIgMTJcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk02LjAwMDE2IDEwLjY2NjdMNi4wMDAxNiAxLjMzMzM3TTYuMDAwMTYgMS4zMzMzN0wxLjMzMzUgNi4wMDAwNE02LjAwMDE2IDEuMzMzMzdMMTAuNjY2OCA2LjAwMDA0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiMwMDlCRjNcIiBzdHJva2Utd2lkdGg9XCIxLjMzMzMzXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPjxkaXYgY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJzb3J0RGF0YSgnY3JlYXRlZEF0JylcIj5BdWRpdGVkIERhdGVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwic29ydENvbHVtTmFtZSA9PT0gJ2NyZWF0ZWRBdCcgJiYgc29ydEJ5ICE9PSAxIHx8IHNvcnRDb2x1bU5hbWUgIT09ICdjcmVhdGVkQXQnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTJcIiB2aWV3Qm94PVwiMCAwIDEyIDEyXCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNNi4wMDAxNiAxLjMzMzM3VjEwLjY2NjdNNi4wMDAxNiAxMC42NjY3TDEwLjY2NjggNi4wMDAwNE02LjAwMDE2IDEwLjY2NjdMMS4zMzM1IDYuMDAwMDRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzY2NzA4NVwiIHN0cm9rZS13aWR0aD1cIjEuMzMzMzNcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJzb3J0Q29sdW1OYW1lID09PSAnY3JlYXRlZEF0JyAmJiBzb3J0QnkgIT09IC0xXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTJcIiB2aWV3Qm94PVwiMCAwIDEyIDEyXCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNNi4wMDAxNiAxMC42NjY3TDYuMDAwMTYgMS4zMzMzN002LjAwMDE2IDEuMzMzMzdMMS4zMzM1IDYuMDAwMDRNNi4wMDAxNiAxLjMzMzM3TDEwLjY2NjggNi4wMDAwNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjMDA5QkYzXCIgc3Ryb2tlLXdpZHRoPVwiMS4zMzMzM1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+PGRpdiBjbGFzcz1cImN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cInNvcnREYXRhKCdhdWRpdFN0YXR1cycpXCI+U3RhdHVzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInNvcnRDb2x1bU5hbWUgPT09ICdhdWRpdFN0YXR1cycgJiYgc29ydEJ5ICE9PSAxIHx8IHNvcnRDb2x1bU5hbWUgIT09ICdhdWRpdFN0YXR1cydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIxMlwiIHZpZXdCb3g9XCIwIDAgMTIgMTJcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk02LjAwMDE2IDEuMzMzMzdWMTAuNjY2N002LjAwMDE2IDEwLjY2NjdMMTAuNjY2OCA2LjAwMDA0TTYuMDAwMTYgMTAuNjY2N0wxLjMzMzUgNi4wMDAwNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMS4zMzMzM1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInNvcnRDb2x1bU5hbWUgPT09ICdhdWRpdFN0YXR1cycgJiYgc29ydEJ5ICE9PSAtMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCIgdmlld0JveD1cIjAgMCAxMiAxMlwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTYuMDAwMTYgMTAuNjY2N0w2LjAwMDE2IDEuMzMzMzdNNi4wMDAxNiAxLjMzMzM3TDEuMzMzNSA2LjAwMDA0TTYuMDAwMTYgMS4zMzMzN0wxMC42NjY4IDYuMDAwMDRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzAwOUJGM1wiIHN0cm9rZS13aWR0aD1cIjEuMzMzMzNcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+QWN0aW9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoZWFkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0Ym9keT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyICpuZ0Zvcj1cImxldCBoaXN0b3J5IG9mIHdvcmtIaXN0b3J5ZGF0YTsgbGV0IGkgPSBpbmRleFwiIGNsYXNzPVwidHItcGFkZGluZ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7aGlzdG9yeT8uZmlsZURhdGUgPyBoaXN0b3J5Py5maWxlRGF0ZSA6ICctLSd9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3toaXN0b3J5Py5jbGllbnROYW1lID8gaGlzdG9yeT8uY2xpZW50TmFtZSA6Jy0tJ319PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57e2hpc3Rvcnk/LmNsaWVudElkID8gaGlzdG9yeT8uY2xpZW50SWQgOictLSd9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3toaXN0b3J5Py5zdG9yZU5hbWUgPyBoaXN0b3J5Py5zdG9yZU5hbWUgOiAnLS0nfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7aGlzdG9yeT8uc3RvcmVJZCA/IGhpc3Rvcnk/LnN0b3JlSWQgOiAnLS0nfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7aGlzdG9yeT8uYXVkaXRUeXBlID09PSdSZUF1ZGl0JyA/ICdSZS1BdWRpdCcgOiBoaXN0b3J5Py5hdWRpdFR5cGV9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgKm5nSWY9XCJzZWxlY3RlZFR5cGUgPT09ICdhbGwnXCI+e3toaXN0b3J5Py5tb2R1bGVUeXBlIHwgdGl0bGVjYXNlfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkICpuZ0lmPVwic2VsZWN0ZWRUeXBlICE9PSAndHJhZmZpYydcIj57eyBoaXN0b3J5Py5tb2R1bGVUeXBlID09PSd0cmFmZmljJyA/ICctLScgOiBoaXN0b3J5Py56b25lTmFtZX19PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57e2hpc3Rvcnk/LmJlZm9yZUNvdW50ID8/ICctLSd9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3toaXN0b3J5Py5hZnRlckNvdW50ID8/ICctLSd9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3toaXN0b3J5Py5hY2N1cmFjeSA/PyAnLS0nfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7aGlzdG9yeT8uc3RhcnRUaW1lID8gaGlzdG9yeT8uc3RhcnRUaW1lIDonLS0nfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7aGlzdG9yeT8uZW5kVGltZSA/IGhpc3Rvcnk/LmVuZFRpbWUgOictLSd9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3toaXN0b3J5Py50aW1lU3BlbnQgPyBoaXN0b3J5Py50aW1lU3BlbnQgOictLSd9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3toaXN0b3J5Py5jcmVhdGVkQXQgPyAoaGlzdG9yeT8uY3JlYXRlZEF0IHwgY3VzdG9tRGF0ZUZvcm1hdCkgOictLSd9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImhpc3RvcnkuYXVkaXRTdGF0dXMgIT09ICdub3RfYXNzaWduJ1wiIFtuZ0NsYXNzXT1cImhpc3Rvcnk/LmF1ZGl0U3RhdHVzID09PSdjb21wbGV0ZWQnID8gJ2JhZGdlLWxpZ2h0LXN1Y2Nlc3MnIDogKGhpc3Rvcnk/LmF1ZGl0U3RhdHVzID09PSdkcmFmdGVkJyA/ICdiYWRnZS1saWdodC1kYW5nZXInIDonYmFkZ2UtbGlnaHQtcHJpbWFyeScpXCIgY2xhc3M9XCJiYWRnZVwiPnt7aGlzdG9yeS5hdWRpdFN0YXR1cyB8IHRpdGxlY2FzZX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJoaXN0b3J5LmF1ZGl0U3RhdHVzID09PSAnbm90X2Fzc2lnbidcIiBjbGFzcz1cImJhZGdlIGJhZGdlLWxpZ2h0LWRhbmdlclwiPk5vdCBBc3NpZ25lZDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjxzcGFuIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwidmlld0hpc3RvcnkoaGlzdG9yeSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMC44MzMzNzQgMTBDMC44MzMzNzQgMTAgNC4xNjY3MSAzLjMzMzM3IDEwIDMuMzMzMzdDMTUuODMzNCAzLjMzMzM3IDE5LjE2NjcgMTAgMTkuMTY2NyAxMEMxOS4xNjY3IDEwIDE1LjgzMzQgMTYuNjY2NyAxMCAxNi42NjY3QzQuMTY2NzEgMTYuNjY2NyAwLjgzMzM3NCAxMCAwLjgzMzM3NCAxMFpcIiBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMS42NjY2N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTEwIDEyLjVDMTEuMzgwOCAxMi41IDEyLjUgMTEuMzgwOCAxMi41IDEwQzEyLjUgOC42MTkzMyAxMS4zODA4IDcuNTAwMDQgMTAgNy41MDAwNEM4LjYxOTMzIDcuNTAwMDQgNy41MDAwNCA4LjYxOTMzIDcuNTAwMDQgMTBDNy41MDAwNCAxMS4zODA4IDguNjE5MzMgMTIuNSAxMCAxMi41WlwiIHN0cm9rZT1cIiM2NjcwODVcIiBzdHJva2Utd2lkdGg9XCIxLjY2NjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3Rib2R5PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4gICBcclxuICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgIDxsaWItcGFnaW5hdGlvbiBbaXRlbXNQZXJQYWdlXT1cImxpbWl0XCIgW2N1cnJlbnRQYWdlXT1cIm9mZnNldFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3RvdGFsSXRlbXNdPVwidG90YWxDb3VudFwiIFtwYWdpbmF0aW9uU2l6ZXNdPVwicGFnaW5hdGlvblNpemVzXCIgW3BhZ2VTaXplXT1cInNldExpbWl0KClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwYWdlQ2hhbmdlKT1cIm9uUGFnZUNoYW5nZSgkZXZlbnQpXCIgKHBhZ2VTaXplQ2hhbmdlKT1cIm9uUGFnZVNpemVDaGFuZ2UoJGV2ZW50KVwiPjwvbGliLXBhZ2luYXRpb24+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj4gXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImhpc3RvcnlMb2FkaW5nXCIgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBsb2FkZXIgIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaGltbWVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3cmFwcGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIHRpdGxlXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGxpbmtcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgZGVzY3JpcHRpb25cIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaGltbWVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3cmFwcGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIHRpdGxlXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGxpbmtcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgZGVzY3JpcHRpb25cIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJoaXN0b3J5Tm9kYXRhXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy0xMiBtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHkgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyIGZsZXgtY29sdW1uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIGNsYXNzPVwiaW1nLXNyY1wiIHNyYz1cIi4vYXNzZXRzL3RhbmdvL0ljb25zL05vZGF0YS5zdmdcIiBhbHQ9XCJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiAqbmdJZj1cInVzZXJEYXRhID09PSAnV29ya3NwYWNlJ1wiPlxyXG4gICAgICAgICAgICAgICAgPGxpYi1hdWRpdC1tYW5hZ2VtZW50IFtzZWFyY2hBdWRpdF09XCJzZWFyY2hBdWRpdFwiIFtzZWxlY3RlZFR5cGVdPVwic2VsZWN0ZWRUeXBlXCIgW3NlbGVjdGVkQ2xpZW50XT1cInNlbGVjdGVkQ2xpZW50XCIgW2NsaWVudElkXT1cImNsaWVudElkXCI+PC9saWItYXVkaXQtbWFuYWdlbWVudD5cclxuICAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuPC9kaXY+XHJcbiJdfQ==
363
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXVkaXQtd29ya3NwYWNlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RhbmdvLXRpY2tldC11c2VyL3NyYy9saWIvY29tcG9uZW50cy9hdWRpdC13b3Jrc3BhY2UvYXVkaXQtd29ya3NwYWNlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RhbmdvLXRpY2tldC11c2VyL3NyYy9saWIvY29tcG9uZW50cy9hdWRpdC13b3Jrc3BhY2UvYXVkaXQtd29ya3NwYWNlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsWUFBWSxFQUErQixNQUFNLGVBQWUsQ0FBQztBQUs3RixPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUkxQyxPQUFPLEtBQUssTUFBTSxPQUFPLENBQUM7QUFHMUIsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7Ozs7Ozs7Ozs7Ozs7QUFPNUUsTUFBTSxPQUFPLHVCQUF1QjtJQXNEZDtJQUErQjtJQUN6QztJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0Q7SUFDQztJQUNBO0lBQ0E7SUFDQTtJQS9EVixZQUFZLENBQU07SUFDbEIsUUFBUSxDQUFTO0lBQ2pCLElBQUksQ0FBTTtJQUNWLFFBQVEsQ0FBTTtJQUNkLFVBQVUsQ0FBTTtJQUNoQixjQUFjLEdBQVksSUFBSSxDQUFDO0lBQy9CLGFBQWEsR0FBWSxLQUFLLENBQUM7SUFDL0IsTUFBTSxDQUFVO0lBQ2hCLFFBQVEsR0FBWSxLQUFLLENBQUM7SUFDMUIsZUFBZSxDQUFNO0lBQ3JCLE1BQU0sR0FBUSxDQUFDLENBQUM7SUFDaEIsTUFBTSxHQUFRLENBQUMsQ0FBQyxDQUFDO0lBQ2pCLEtBQUssR0FBUSxFQUFFLENBQUM7SUFDaEIsYUFBYSxHQUFRLFVBQVUsQ0FBQztJ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QXVCO2tCQUxuQyxTQUFTOytCQUNFLHFCQUFxQjs2WEEwRS9CLE9BQU87c0JBRE4sWUFBWTt1QkFBQyxnQkFBZ0IsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBIb3N0TGlzdGVuZXIsIENoYW5nZURldGVjdG9yUmVmLCBPbkRlc3Ryb3l9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgVG9hc3RTZXJ2aWNlIH0gZnJvbSAndGFuZ28tYXBwLXVpLXNoYXJlZCc7XHJcbmltcG9ydCB7IEdsb2JhbFN0YXRlU2VydmljZSwgTGF5b3V0U2VydmljZSB9IGZyb20gJ3RhbmdvLWFwcC11aS1nbG9iYWwnO1xyXG5pbXBvcnQgeyBOZ2JNb2RhbCB9IGZyb20gJ0BuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwJztcclxuaW1wb3J0IHsgU3ViamVjdCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IEV4Y2VsU2VydmljZSB9IGZyb20gXCIuLi8uLi9zZXJ2aWNlcy9leGNlbC5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IFRpY2tldHNTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL3NlcnZpY2VzL3RpY2tldC1pbmZyYS5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IERhdGFTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL3NlcnZpY2VzL2RhdGEuc2VydmljZVwiO1xyXG5pbXBvcnQgZGF5anMgZnJvbSAnZGF5anMnO1xyXG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gXCJ0YW5nby1hcHAtdWktYXV0aFwiOyBcclxuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSBcInJ4anNcIjtcclxuaW1wb3J0IHsgVmlld2hpc3RvcnlDb21wb25lbnQgfSBmcm9tICcuLi92aWV3aGlzdG9yeS92aWV3aGlzdG9yeS5jb21wb25lbnQnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdsaWItYXVkaXQtd29ya3NwYWNlJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vYXVkaXQtd29ya3NwYWNlLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybDogJy4vYXVkaXQtd29ya3NwYWNlLmNvbXBvbmVudC5zY3NzJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgQXVkaXRXb3Jrc3BhY2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsT25EZXN0cm95IHtcclxuICBoZWFkZXJGaWx0ZXI6IGFueTtcclxuICB1c2VyRGF0YTogc3RyaW5nO1xyXG4gIHVzZXI6IGFueTtcclxuICBjbGllbnRJZDogYW55O1xyXG4gIGRhdGFPYmplY3Q6IGFueTtcclxuICBoaXN0b3J5TG9hZGluZzogYm9vbGVhbiA9IHRydWU7XHJcbiAgaGlzdG9yeU5vZGF0YTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGlzT3BlbjogYm9vbGVhbjtcclxuICBkcm9wRG93bjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHNlYXJjaFdvcmtzcGFjZTogYW55O1xyXG4gIG9mZnNldDogYW55ID0gMTtcclxuICBzb3J0Qnk6IGFueSA9IC0xO1xyXG4gIGxpbWl0OiBhbnkgPSAxMDtcclxuICBzb3J0Q29sdW1OYW1lOiBhbnkgPSAnZmlsZURhdGUnO1xyXG4gIHNlYXJjaEhpc3Rvcnk6IGFueTtcclxuICBFeHBvcnRJdGVtczphbnkgPSBbJ092ZXJhbGwgcmVwb3J0JywnSG91cmx5IFJlcG9ydCddXHJcbiAgd29ya0hpc3RvcnlkYXRhOmFueT1bXTtcclxuICBwcml2YXRlIHJlYWRvbmx5IGRlc3Ryb3kkID0gbmV3IFN1YmplY3QoKTtcclxuICBzZWFyY2hBdWRpdDogYW55ID0gJyc7XHJcbiAgZmlsdGVyQnlTdG9yZUlkOiBhbnkgPSBbXTtcclxuICBmaWx0ZXJCeVN0YXR1czogYW55ID0gW107XHJcbiAgZmlsdGVyQnlUeXBlOiBhbnkgPSBbXTtcclxuICBzZWxlY3RlZENsaWVudDphbnkgPScnO1xyXG4gIHNlbGVjdGVkRXhwb3J0SXNzdWU6IGFueTtcclxuICBzZWxlY3RlZElzc3VlOiBhbnk7XHJcbiAgdXNlcklkOmFueSA9ICcnO1xyXG4gIHNlbGVjdGVkVHlwZTphbnk7XHJcbiAgZmlsdGVyU3RvcmVzOiBhbnkgPSBbXTtcclxuICB3b3JrSGlzdG9yeVRhYmxlOiBhbnk7XHJcbiAgZGF5anMgPSBkYXlqcztcclxuICBwcml2YXRlIHVuc3Vic2NyaWJlOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xyXG4gIGlzQ3VzdG9tRGF0ZSA9IChtOiBkYXlqcy5EYXlqcykgPT4ge1xyXG4gICAgY29uc3QgaXNWYWxpZERhdGUgPSAgbSA+IHRoaXMuZGF5anMoKTsgICAgXHJcbiAgICByZXR1cm4gaXNWYWxpZERhdGUgPyAnaW52YWxpZC1kYXRlJyA6IGZhbHNlO1xyXG59XHJcbiAgc2VsZWN0ZWREYXRlUmFuZ2U6IGFueSA9IHt9O1xyXG4gIHNlbGVjdGVkRmlsdGVyczogYW55ID0ge1xyXG4gICAgY2xpZW50OiBudWxsLFxyXG4gICAgY2xpZW50TmFtZTpudWxsLFxyXG4gICAgY2xpZW50czogW10sXHJcbiAgICBzdG9yZTogbnVsbCxcclxuICAgIHN0b3JlczogW10sXHJcbiAgICBkYXRlOiBudWxsLFxyXG4gIH07XHJcbiAgdXNlcnM6IGFueTtcclxuICBsb2FkZWQ6IGJvb2xlYW47XHJcbiAgZmlsZVR5cGU6IGFueSA9ICdmaWxlRGF0ZSc7XHJcbiAgc3RvcmVMaXN0OiBhbnk7XHJcbiAgc3RhcnREYXRlOiBzdHJpbmc7XHJcbiAgZW5kRGF0ZTogc3RyaW5nO1xyXG4gIHRvdGFsQ291bnQ6IGFueTtcclxuICBwYWdpbmF0aW9uU2l6ZXM6YW55ID0gWzEwLDIwLDMwXTtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSByb3V0ZTogQWN0aXZhdGVkUm91dGUsIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXHJcbiAgICBwcml2YXRlIGNkOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgIHByaXZhdGUgZGF0YVNlcnZpY2U6IERhdGFTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSB0b2FzdFNlcnZpY2U6IFRvYXN0U2VydmljZSxcclxuICAgIHByaXZhdGUgU2VydmljZTogVGlja2V0c1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIGRhdGFzZXJ2aWNlOiBEYXRhU2VydmljZSxcclxuICAgIHB1YmxpYyBnczogR2xvYmFsU3RhdGVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBleGNlbDogRXhjZWxTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBtb2RhbHNlcnZpY2U6IE5nYk1vZGFsLFxyXG4gICAgcHJpdmF0ZSBsYXlvdXQ6IExheW91dFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHNlcnZpY2U6IEF1dGhTZXJ2aWNlLFxyXG4gICkge1xyXG4gICAgIFxyXG4gIH1cclxuXHJcbiAgQEhvc3RMaXN0ZW5lcihcImRvY3VtZW50OmNsaWNrXCIsIFtcIiRldmVudFwiXSlcclxuICBvbkNsaWNrKGV2ZW50OiBNb3VzZUV2ZW50KSB7XHJcbiAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQ7XHJcbiAgICBpZiAoIXRhcmdldC5jbG9zZXN0KFwiLmRyb3Bkb3duXCIpKSB7XHJcbiAgICAgIHRoaXMuZHJvcERvd24gPSBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcbiAgZ2V0VGFiKCl7XHJcbiAgICBpZih0aGlzLnVzZXJEYXRhID09PSAnSGlzdG9yeScpe1xyXG4gICAgICB0aGlzLnNlbGVjdGVkVHlwZSA9ICdhbGwnXHJcbiAgICB9ZWxzZSBpZih0aGlzLnVzZXJEYXRhID09PSAnV29ya3NwYWNlJyl7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRUeXBlID0gJ3RyYWZmaWMnXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMudXNlckRhdGEgPSAnV29ya3NwYWNlJztcclxuICAgIHRoaXMuZ3MuZGF0YVJhbmdlVmFsdWUucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSgoZGF0YTogYW55KSA9PiB7XHJcbiAgICAgIGlmIChkYXRhICE9IG51bGwpIHtcclxuICAgICAgICB0aGlzLnVzZXIgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKCd1c2VyLWluZm8nKSB8fCBcIlwiKVxyXG4gICAgICAgIHRoaXMuaGVhZGVyRmlsdGVyID0gZGF0YTtcclxuICAgICAgICB0aGlzLmNsaWVudElkID0gdGhpcy5oZWFkZXJGaWx0ZXI/LmNsaWVudHM7XHJcbiAgICAgICAgdGhpcy51c2VySWQgPSB0aGlzLnVzZXI/Ll9pZFxyXG4gICAgICAgIGlmKHRoaXMudXNlckRhdGEgPT09ICdIaXN0b3J5Jyl7XHJcbiAgICAgICAgICB0aGlzLndvcmtIaXN0b3J5KCk7XHJcbiAgICAgICAgICB0aGlzLmdldHN0b3JlTGlzdCgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmdldFRhYigpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgfVxyXG5cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLnVuc3Vic2NyaWJlLmZvckVhY2goKHNiKSA9PiBzYi51bnN1YnNjcmliZSgpKTtcclxuICAgIHRoaXMuZGVzdHJveSQubmV4dCh0cnVlKTtcclxuICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcclxuICB9XHJcblxyXG5vcGVuRHJvcGRvd24oZXZlbnQ6IE1vdXNlRXZlbnQpIHtcclxuICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICB0aGlzLmRyb3BEb3duID0gIXRoaXMuZHJvcERvd247XHJcbn1cclxuXHJcbnVzZXJWYWx1ZShkYXRhOiBhbnkpIHtcclxuICB0aGlzLnNlYXJjaEF1ZGl0ID0gJyc7XHJcbiAgdGhpcy51c2VyRGF0YSA9IGRhdGE7XHJcbiAgdGhpcy5saW1pdCA9IDEwO1xyXG4gIHRoaXMub2Zmc2V0ID0gMTtcclxuICB0aGlzLnNvcnRCeSA9IC0xO1xyXG4gIHRoaXMuZ2V0VGFiKCk7XHJcbiAgaWYgKHRoaXMudXNlckRhdGEgPT0gXCJIaXN0b3J5XCIpIHtcclxuICAgIHRoaXMuZGF0YU9iamVjdCA9IHRoaXMuZGF0YU9iamVjdCA9IFtcclxuICAgICAgeyBEZXNjcmlwdGlvbjogJ0ZpbGUgRGF0ZScsdHlwZSA6J3NpbmdsZScsIElzc3VlczogW3tpZDonZmlsZURhdGUnLCB0ZXh0OiBcIkZpbGUgRGF0ZVwiIH0sIHtpZDonYXVkaXRlZERhdGUnLCB0ZXh0OiBcIkF1ZGl0ZWQgRGF0ZVwiIH1dIH0sXHJcbiAgICAgIHsgRGVzY3JpcHRpb246ICdTdG9yZSBOYW1lJywgSXNzdWVzOiBbXSB9LFxyXG4gICAgICB7IERlc2NyaXB0aW9uOiAnQXVkaXQgVHlwZScsIElzc3VlczogW3tpZDonQXVkaXQnLCB0ZXh0OiBcIkF1ZGl0XCIgfSwge2lkOidSZUF1ZGl0JywgdGV4dDogXCJSZS1BdWRpdFwiIH1dIH0sXHJcbiAgICAgIHsgRGVzY3JpcHRpb246ICdTdGF0dXMnLCBJc3N1ZXM6IFt7aWQ6J2lucHJvZ3Jlc3MnLCB0ZXh0OiBcIkluIFByb2dyZXNzXCIgfSx7aWQ6J2RyYWZ0ZWQnLCB0ZXh0OiBcIkRyYWZ0ZWRcIiB9LHtpZDonc2tpcHBlZCcsIHRleHQ6IFwiU2tpcHBlZFwiIH0se2lkOidjb21wbGV0ZWQnLCB0ZXh0OiBcIkNvbXBsZXRlZFwiIH1dfSxcclxuICAgIF1cclxuICAgIHRoaXMuZ2V0c3RvcmVMaXN0KCk7XHJcbiAgICB0aGlzLndvcmtIaXN0b3J5KCk7XHJcbiAgfVxyXG59XHJcblxyXG5zZWxlY3RUeXBlKHR5cGU6YW55KXtcclxuICB0aGlzLnNlbGVjdGVkVHlwZSA9IHR5cGU7XHJcbiAgdGhpcy5vZmZzZXQgPSAxO1xyXG4gIHRoaXMubGltaXQgPSAxMDtcclxuICB0aGlzLnNvcnRCeSA9IC0xO1xyXG4gIGlmKHRoaXMudXNlckRhdGEgPT09J0hpc3RvcnknKXtcclxuICAgIHRoaXMud29ya0hpc3RvcnkoKTtcclxuICAgIHRoaXMuZ2V0c3RvcmVMaXN0KCk7XHJcbiAgfVxyXG59XHJcblxyXG53b3JrSGlzdG9yeSgpIHtcclxuICBsZXQgZGF0YSA9IHtcclxuICAgIGZyb21EYXRlOiB0aGlzLmhlYWRlckZpbHRlcj8uZGF0ZT8uc3RhcnREYXRlLFxyXG4gICAgdG9EYXRlOiB0aGlzLmhlYWRlckZpbHRlcj8uZGF0ZT8uZW5kRGF0ZSxcclxuICAgIGRhdGVUeXBlOnRoaXMuZmlsZVR5cGUgPyB0aGlzLmZpbGVUeXBlIDogJ2ZpbGVEYXRlJyxcclxuICAgIGZpbHRlckJ5U3RhdHVzOiB0aGlzLmZpbHRlckJ5U3RhdHVzID8gdGhpcy5maWx0ZXJCeVN0YXR1cyA6IFtdLFxyXG4gICAgZmlsdGVyQnlTdG9yZUlkOiB0aGlzLmZpbHRlckJ5U3RvcmVJZCA/IHRoaXMuZmlsdGVyQnlTdG9yZUlkIDogW10sXHJcbiAgICBmaWx0ZXJCeUF1ZGl0VHlwZTogdGhpcy5maWx0ZXJCeVR5cGUgPyB0aGlzLmZpbHRlckJ5VHlwZSA6IFtdLFxyXG4gICAgZmlsdGVyQnlNb2R1bGVUeXBlOiB0aGlzLnNlbGVjdGVkVHlwZSA9PT0gJ2FsbCcgPyBbJ3pvbmUnLCd0cmFmZmljJ10gOiBbdGhpcy5zZWxlY3RlZFR5cGVdLFxyXG4gICAgc2VhcmNoVmFsdWU6IHRoaXMuc2VhcmNoSGlzdG9yeSxcclxuICAgIGNsaWVudElkOiB0aGlzLmNsaWVudElkLFxyXG4gICAgbGltaXQ6IHRoaXMubGltaXQsXHJcbiAgICBvZmZzZXQ6IHRoaXMub2Zmc2V0LFxyXG4gICAgc29ydENvbHVtbk5hbWU6IHRoaXMuc29ydENvbHVtTmFtZSxcclxuICAgIHNvcnRCeTogdGhpcy5zb3J0QnksXHJcbiAgICBpc0V4cG9ydDogZmFsc2VcclxuICB9O1xyXG4gIHRoaXMuaGlzdG9yeUxvYWRpbmcgPSB0cnVlO1xyXG4gIHRoaXMuaGlzdG9yeU5vZGF0YSA9IGZhbHNlO1xyXG4gIHRoaXMuU2VydmljZS5hdWRpdEhpc3RvcnkoZGF0YSkucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChyZXMgJiYgcmVzPy5jb2RlID09IDIwMCkge1xyXG4gICAgICAgICAgdGhpcy50b3RhbENvdW50ID0gcmVzPy5kYXRhPy5jb3VudDtcclxuICAgICAgICAgIHRoaXMud29ya0hpc3RvcnlkYXRhID0gcmVzLmRhdGEucmVzdWx0O1xyXG4gICAgICAgICAgaWYodGhpcy50b3RhbENvdW50IDwgMTApe3RoaXMucGFnaW5hdGlvblNpemVzID0gW3RoaXMudG90YWxDb3VudF19IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLnBhZ2luYXRpb25TaXplcyA9WzEwLDIwLDMwXVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5oaXN0b3J5TG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5oaXN0b3J5Tm9kYXRhID0gZmFsc2U7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuaGlzdG9yeU5vZGF0YSA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLmhpc3RvcnlMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB9LFxyXG4gICAgICBlcnJvcjogKGVycikgPT4ge1xyXG4gICAgICAgIHRoaXMuaGlzdG9yeU5vZGF0YSA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5oaXN0b3J5TG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICB9LFxyXG4gICAgICBjb21wbGV0ZSgpIHt9LFxyXG4gICAgfSk7XHJcbn1cclxuXHJcbnNldExpbWl0KCl7XHJcbiAgaWYodGhpcy50b3RhbENvdW50IDwgMTApe1xyXG4gICAgcmV0dXJuIHRoaXMudG90YWxDb3VudFxyXG4gIH1lbHNleyByZXR1cm4gdGhpcy5saW1pdCB9XHJcbn1cclxuXHJcbmdldHN0b3JlTGlzdCgpe1xyXG4gIGxldCBkYXRhID0ge1xyXG4gICAgXCJjbGllbnRJZFwiOiB0aGlzLmNsaWVudElkXHJcbiAgfVxyXG4gIHRoaXMuU2VydmljZS5nZXRzdG9yZUxpc3QoZGF0YSkucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSh7XHJcbiAgICBuZXh0OihyZXM6YW55KSA9PiB7XHJcbiAgICAgIGlmKHJlcyAmJiByZXM/LmNvZGUgPT09MjAwKXtcclxuICAgICAgICB0aGlzLnN0b3JlTGlzdCA9IHJlcz8uZGF0YT8ucmVzdWx0O1xyXG4gICAgICAgIGNvbnN0IGlzc3VlcyA9IHRoaXMuc3RvcmVMaXN0Py5tYXAoKG9iajogYW55KSA9PiAoeyB0ZXh0OiBvYmouc3RvcmVOYW1lLGlkOm9iai5zdG9yZUlkIH0pKTtcclxuICAgICAgICBjb25zdCB1bmlxdWVJc3N1ZXM6YW55W10gPSBbXTtcclxuICAgICAgICBjb25zdCBDbGllbnRzID0gbmV3IFNldCgpO1xyXG4gICAgICAgIGlzc3Vlcy5mb3JFYWNoKChpc3N1ZTphbnkpID0+IHtcclxuICAgICAgICAgIGlmICghQ2xpZW50cy5oYXMoaXNzdWUudGV4dCkpIHtcclxuICAgICAgICAgICAgQ2xpZW50cy5hZGQoaXNzdWUudGV4dCk7XHJcbiAgICAgICAgICAgIHVuaXF1ZUlzc3Vlcy5wdXNoKGlzc3VlKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgICBjb25zdCBmaWx0cmVkT2JqZWN0ID0gKHRoaXMuZGF0YU9iamVjdC5maW5kKChvYmo6IGFueSkgPT4gb2JqLkRlc2NyaXB0aW9uID09PSBcIlN0b3JlIE5hbWVcIikpXHJcbiAgICAgICAgZmlsdHJlZE9iamVjdC5Jc3N1ZXMgPSB1bmlxdWVJc3N1ZXM7XHJcbiAgICAgIH1cclxuICAgIH0sXHJcbiAgICBlcnJvcjooZXJyOmFueSk9PiB7XHJcbiAgICAgICAgXHJcbiAgICB9LFxyXG4gICAgY29tcGxldGUoKSB7fVxyXG59KVxyXG4gfVxyXG5cclxuc2VhcmNoQXVkaXRzKGV2ZW50OmFueSl7XHJcbiAgdGhpcy5zZWFyY2hBdWRpdCA9IGV2ZW50LnRhcmdldC52YWx1ZTtcclxufVxyXG5cclxuZXhwb3J0QXVkaXRBc1hsc3goKSB7XHJcbiAgbGV0IHBheWxvYWQgPSB7XHJcbiAgICBvZmZzZXQgOiB0aGlzLm9mZnNldCxcclxuICAgIGxpbWl0OiAxMDAwMCxcclxuICAgIHNlYXJjaFZhbHVlOiB0aGlzLnNlYXJjaEF1ZGl0LFxyXG4gICAgaXNFeHBvcnQgOiB0cnVlLFxyXG4gICAgbW9kdWxlVHlwZTp0aGlzLnNlbGVjdGVkVHlwZSxcclxuICAgIGNsaWVudElkOiB0aGlzLmNsaWVudElkLFxyXG4gICAgc29ydENvbHVtbk5hbWU6dGhpcy5zb3J0Q29sdW1OYW1lLFxyXG4gICAgc29ydEJ5OnRoaXMuc29ydEJ5XHJcbiAgfVxyXG4gIHRoaXMuU2VydmljZS5leHBvcnQocGF5bG9hZCkuc3Vic2NyaWJlKHtcclxuICAgIG5leHQ6KHJlczphbnkpPT57XHJcbiAgICAgIGlmIChyZXMpIHtcclxuICAgICAgICB0aGlzLmRhdGFTZXJ2aWNlLnNhdmVBc0V4Y2VsRmlsZShyZXMsIFwid29ya3NwYWNlXCIpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfSxcclxuICAgIGVycm9yOihlcnI6YW55KT0+eyBcclxuICAgIH0sXHJcbiAgICBjb21wbGV0ZSgpIHt9XHJcbiAgfSlcclxufVxyXG5vblBhZ2VDaGFuZ2UocGFnZU9mZnNldDogbnVtYmVyKSB7XHJcbiAgdGhpcy5vZmZzZXQgPSBwYWdlT2Zmc2V0O1xyXG4gIHRoaXMud29ya0hpc3RvcnkoKTtcclxufVxyXG5cclxub25QYWdlU2l6ZUNoYW5nZShwYWdlU2l6ZTogbnVtYmVyKSB7XHJcbiAgdGhpcy5saW1pdCA9IHBhZ2VTaXplO1xyXG4gIHRoaXMub2Zmc2V0ID0gMTtcclxuICB0aGlzLndvcmtIaXN0b3J5KCk7XHJcbn1cclxuXHJcbmV4cG9ydEhpc3Rvcnlhc1hsc3goKSB7XHJcbiAgbGV0IGV4cG9ydERhdGEgPSB7XHJcbiAgICBmcm9tRGF0ZTogdGhpcy5oZWFkZXJGaWx0ZXI/LmRhdGU/LnN0YXJ0RGF0ZSxcclxuICAgIHRvRGF0ZTogdGhpcy5oZWFkZXJGaWx0ZXI/LmRhdGU/LmVuZERhdGUsXHJcbiAgICBkYXRlVHlwZTp0aGlzLmZpbGVUeXBlID8gdGhpcy5maWxlVHlwZSA6ICdmaWxlRGF0ZScsXHJcbiAgICBmaWx0ZXJCeVN0YXR1czogdGhpcy5maWx0ZXJCeVN0YXR1cyA/IHRoaXMuZmlsdGVyQnlTdGF0dXMgOiBbXSxcclxuICAgIGZpbHRlckJ5U3RvcmVJZDogdGhpcy5maWx0ZXJCeVN0b3JlSWQgPyB0aGlzLmZpbHRlckJ5U3RvcmVJZCA6IFtdLFxyXG4gICAgZmlsdGVyQnlBdWRpdFR5cGU6IHRoaXMuZmlsdGVyQnlUeXBlID8gdGhpcy5maWx0ZXJCeVR5cGUgOiBbXSxcclxuICAgIGZpbHRlckJ5TW9kdWxlVHlwZTogdGhpcy5zZWxlY3RlZFR5cGUgPT09ICdhbGwnID8gWyd6b25lJywndHJhZmZpYyddIDogW3RoaXMuc2VsZWN0ZWRUeXBlXSxcclxuICAgIHNlYXJjaFZhbHVlOiB0aGlzLnNlYXJjaEhpc3RvcnksXHJcbiAgICBjbGllbnRJZDogdGhpcy5jbGllbnRJZCxcclxuICAgIGxpbWl0OiAxMDAwMCxcclxuICAgIG9mZnNldDogdGhpcy5vZmZzZXQsXHJcbiAgICBzb3J0Q29sdW1uTmFtZTogdGhpcy5zb3J0Q29sdW1OYW1lLFxyXG4gICAgc29ydEJ5OiB0aGlzLnNvcnRCeSxcclxuICAgIGlzRXhwb3J0OiB0cnVlXHJcbiAgfVxyXG4gIHRoaXMuU2VydmljZVxyXG4gICAgLmF1ZGl0SGlzdG9yeUV4cG9ydChleHBvcnREYXRhKVxyXG4gICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChyZXMpIHtcclxuICAgICAgICAgIHRoaXMuZGF0YVNlcnZpY2Uuc2F2ZUFzRXhjZWxGaWxlKHJlcywgXCJIaXN0b3J5XCIpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgfSxcclxuICAgICAgZXJyb3I6IChlcnI6YW55KSA9PiB7XHJcbiAgICAgICAgdGhpcy5oaXN0b3J5Tm9kYXRhID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmhpc3RvcnlMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgIH0sXHJcbiAgICAgIGNvbXBsZXRlKCkge30sXHJcbiAgICB9KTtcclxufVxyXG5cclxuc29ydERhdGEodmFsdWU6IGFueSkge1xyXG4gIHRoaXMuc29ydENvbHVtTmFtZSA9IHZhbHVlO1xyXG4gIHRoaXMuc29ydEJ5ICo9IC0xO1xyXG4gIHRoaXMud29ya0hpc3RvcnkoKTtcclxufVxyXG5cclxucmVjZWl2ZURhdGEoZGF0YTogYW55W10pIHtcclxuICB0aGlzLmZpbHRlckJ5U3RvcmVJZCA9IGRhdGFcclxuICAgIC5maW5kKChvYmopID0+IG9iai5EZXNjcmlwdGlvbiA9PT0gXCJTdG9yZSBOYW1lXCIpXHJcbiAgICA/Lklzc3Vlcy5tYXAoKGl0ZW06IGFueSkgPT4gaXRlbT8uaWQpO1xyXG4gIHRoaXMuZmlsdGVyQnlTdGF0dXMgPSBkYXRhLmZpbmQoXHJcbiAgICAob2JqKSA9PiBvYmouRGVzY3JpcHRpb24gPT09IFwiU3RhdHVzXCJcclxuICApPy5Jc3N1ZXM/LmlkO1xyXG4gIHRoaXMuZmlsZVR5cGUgPSBkYXRhLmZpbmQoXHJcbiAgICAob2JqKSA9PiBvYmouRGVzY3JpcHRpb24gPT09IFwiRmlsZSBEYXRlXCJcclxuICApPy5Jc3N1ZXM/LmlkO1xyXG4gIHRoaXMuZmlsdGVyQnlUeXBlID0gZGF0YVxyXG4gICAgICAuZmluZCgob2JqKSA9PiBvYmouRGVzY3JpcHRpb24gPT09IFwiQXVkaXQgVHlwZVwiKVxyXG4gICAgICA/Lklzc3Vlcy5tYXAoKGl0ZW06IGFueSkgPT4gaXRlbT8uaWQpO1xyXG4gIFxyXG4gIHRoaXMud29ya0hpc3RvcnkoKTtcclxufVxyXG5cclxuc2VhcmNoSGlzdG9yeVRhYmxlKCkge1xyXG4gIHRoaXMud29ya0hpc3RvcnkoKTtcclxufVxyXG5zZWxlY3RFeHBvcnRJdGVtKHZhbHVlOmFueSl7XHJcbiAgdGhpcy5zZWxlY3RlZEV4cG9ydElzc3VlID0gdmFsdWU7XHJcbiAgdGhpcy5leHBvcnRIaXN0b3J5YXNYbHN4KCk7XHJcbn1cclxuXHJcbnZpZXdIaXN0b3J5KGRhdGE6YW55KXtcclxuICAgY29uc3QgbW9kYWxSZWYgPSB0aGlzLm1vZGFsc2VydmljZS5vcGVuKFZpZXdoaXN0b3J5Q29tcG9uZW50LHsgY2VudGVyZWQ6dHJ1ZSxzaXplOid4bCd9KVxyXG4gICBtb2RhbFJlZi5jb21wb25lbnRJbnN0YW5jZS5kYXRhID0gZGF0YTtcclxufVxyXG5cclxuYXBwbHlGaWx0ZXJzKGV2ZW50OmFueSl7XHJcbiAgaWYgKGV2ZW50Py5sZW5ndGgpIHtcclxuICAgIGV2ZW50LmZvckVhY2goKGVsZW1lbnQ6IGFueSkgPT4ge1xyXG4gICAgICBpZiAoZWxlbWVudC5EZXNjcmlwdGlvbiA9PT0gXCJTdGF0dXNcIikge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRJc3N1ZSA9IGVsZW1lbnQuSXNzdWVzLm1hcCgodmFsOiBhbnkpID0+IHZhbD8uaWQpO1xyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gICAgfVxyXG4gICAgaWYodGhpcy5zZWxlY3RlZElzc3VlLmxlbmd0aCA9PT0gNilcclxuICAgICAgdGhpcy5zZWxlY3RlZElzc3VlID1bXTtcclxuICB9XHJcblxyXG4gIGJhY2t0b1pvbmUoKXtcclxuICAgIHRoaXMuc2VsZWN0ZWRDbGllbnQgPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIC8vIGZyb21DaGlsZChldmVudDphbnkpe1xyXG4gIC8vICAgdGhpcy5zZWxlY3RlZENsaWVudCA9IGV2ZW50O1xyXG4gIC8vIH1cclxuXHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImNhcmRcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlciBib3JkZXItMCBwdC0zXCI+XHJcbiAgICAgICAgPGgzIGNsYXNzPVwiY2FyZC10aXRsZSBhbGlnbi1pdGVtcy1zdGFydCBmbGV4LWNvbHVtblwiPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNhcmQtbGFiZWwgbWItMlwiPkF1ZGl0IFRpY2tldHM8L3NwYW4+XHJcbiAgICAgICAgPC9oMz5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwidXNlckRhdGEgPT09J1dvcmtzcGFjZSdcIiBjbGFzcz1cImNhcmQtdG9vbGJhclwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBwb3NpdGlvbi1yZWxhdGl2ZSBteS0xXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzdmctaWNvbiBzdmctaWNvbi0xIHBvc2l0aW9uLWFic29sdXRlIG1zLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCBvcGFjaXR5PVwiMC41XCIgeD1cIjE3LjAzNjVcIiB5PVwiMTUuMTIyM1wiIHdpZHRoPVwiOC4xNTU0NlwiIGhlaWdodD1cIjJcIiByeD1cIjFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybT1cInJvdGF0ZSg0NSAxNy4wMzY1IDE1LjEyMjMpXCIgZmlsbD1cImN1cnJlbnRDb2xvclwiPjwvcmVjdD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xMSAxOUM2LjU1NTU2IDE5IDMgMTUuNDQ0NCAzIDExQzMgNi41NTU1NiA2LjU1NTU2IDMgMTEgM0MxNS40NDQ0IDMgMTkgNi41NTU1NiAxOSAxMUMxOSAxNS40NDQ0IDE1LjQ0NDQgMTkgMTEgMTlaTTExIDVDNy41MzMzMyA1IDUgNy41MzMzMyA1IDExQzUgMTQuNDY2NyA3LjUzMzMzIDE3IDExIDE3QzE0LjQ2NjcgMTcgMTcgMTQuNDY2NyAxNyAxMUMxNyA3LjUzMzMzIDE0LjQ2NjcgNSAxMSA1WlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cImN1cnJlbnRDb2xvclwiPjwvcGF0aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sIHBzLTE0IG1lLTJcIiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiU2VhcmNoXCIgYXV0b2NvbXBsZXRlPVwib2ZmXCIgKGNoYW5nZSk9XCJzZWFyY2hBdWRpdHMoJGV2ZW50KVwiLz5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwiZXhwb3J0QXVkaXRBc1hsc3goKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1kZWZhdWx0IG14LTIgYnRuLW91dGxpbmUgYnRuLW91dGxpbmUtZGVmYXVsdCByb3VuZGVkLTMgdGV4dC1ub3dyYXAgYm9yZGVyLXZhbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xNy41IDEyLjVWMTUuODMzM0MxNy41IDE2LjI3NTQgMTcuMzI0NCAxNi42OTkzIDE3LjAxMTggMTcuMDExOEMxNi42OTkzIDE3LjMyNDQgMTYuMjc1NCAxNy41IDE1LjgzMzMgMTcuNUg0LjE2NjY3QzMuNzI0NjQgMTcuNSAzLjMwMDcyIDE3LjMyNDQgMi45ODgxNiAxNy4wMTE4QzIuNjc1NTkgMTYuNjk5MyAyLjUgMTYuMjc1NCAyLjUgMTUuODMzM1YxMi41TTE0LjE2NjcgNi42NjY2N0wxMCAyLjVNMTAgMi41TDUuODMzMzMgNi42NjY2N00xMCAyLjVWMTIuNVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzM0NDA1NFwiIHN0cm9rZS13aWR0aD1cIjEuNjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcy0yXCI+RXhwb3J0PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgKm5nSWY9XCJ1c2VyRGF0YSA9PT0nSGlzdG9yeSdcIiBjbGFzcz1cImNhcmQtdG9vbGJhclwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBwb3NpdGlvbi1yZWxhdGl2ZSBteS0xXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzdmctaWNvbiBzdmctaWNvbi0xIHBvc2l0aW9uLWFic29sdXRlIG1zLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCBvcGFjaXR5PVwiMC41XCIgeD1cIjE3LjAzNjVcIiB5PVwiMTUuMTIyM1wiIHdpZHRoPVwiOC4xNTU0NlwiIGhlaWdodD1cIjJcIiByeD1cIjFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybT1cInJvdGF0ZSg0NSAxNy4wMzY1IDE1LjEyMjMpXCIgZmlsbD1cImN1cnJlbnRDb2xvclwiPjwvcmVjdD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xMSAxOUM2LjU1NTU2IDE5IDMgMTUuNDQ0NCAzIDExQzMgNi41NTU1NiA2LjU1NTU2IDMgMTEgM0MxNS40NDQ0IDMgMTkgNi41NTU1NiAxOSAxMUMxOSAxNS40NDQ0IDE1LjQ0NDQgMTkgMTEgMTlaTTExIDVDNy41MzMzMyA1IDUgNy41MzMzMyA1IDExQzUgMTQuNDY2NyA3LjUzMzMzIDE3IDExIDE3QzE0LjQ2NjcgMTcgMTcgMTQuNDY2NyAxNyAxMUMxNyA3LjUzMzMzIDE0LjQ2NjcgNSAxMSA1WlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cImN1cnJlbnRDb2xvclwiPjwvcGF0aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sIHBzLTE0IG1lLTJcIiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiU2VhcmNoXCIgYXV0b2NvbXBsZXRlPVwib2ZmXCIgWyhuZ01vZGVsKV09XCJzZWFyY2hIaXN0b3J5XCIgKGlucHV0KT1cInNlYXJjaEhpc3RvcnlUYWJsZSgpXCIgLz5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPGxpYi1maWx0ZXJzICpuZ0lmPVwic3RvcmVMaXN0XCIgW2RhdGFPYmplY3RdPVwiZGF0YU9iamVjdFwiIChhcHBsaWVkRmlsdGVycyk9XCJyZWNlaXZlRGF0YSgkZXZlbnQpXCIgPjwvbGliLWZpbHRlcnM+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhaGlzdG9yeU5vZGF0YVwiIGNsYXNzPVwicG9zaXRpb24tcmVsYXRpdmVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwiZXhwb3J0SGlzdG9yeWFzWGxzeCgpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLWRlZmF1bHQgbXgtMiBidG4tb3V0bGluZSBidG4tb3V0bGluZS1kZWZhdWx0IHJvdW5kZWQtMyB0ZXh0LW5vd3JhcCBib3JkZXItdmFsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTE3LjUgMTIuNVYxNS44MzMzQzE3LjUgMTYuMjc1NCAxNy4zMjQ0IDE2LjY5OTMgMTcuMDExOCAxNy4wMTE4QzE2LjY5OTMgMTcuMzI0NCAxNi4yNzU0IDE3LjUgMTUuODMzMyAxNy41SDQuMTY2NjdDMy43MjQ2NCAxNy41IDMuMzAwNzIgMTcuMzI0NCAyLjk4ODE2IDE3LjAxMThDMi42NzU1OSAxNi42OTkzIDIuNSAxNi4yNzU0IDIuNSAxNS44MzMzVjEyLjVNMTQuMTY2NyA2LjY2NjY3TDEwIDIuNU0xMCAyLjVMNS44MzMzMyA2LjY2NjY3TTEwIDIuNVYxMi41XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjMzQ0MDU0XCIgc3Ryb2tlLXdpZHRoPVwiMS42N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1zLTJcIj5FeHBvcnQ8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IHB5LTJcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IG92ZXJmbG93LWF1dG8gaC01NXB4XCI+XHJcbiAgICAgICAgICAgIDx1bCBjbGFzcz1cIm5hdiBuYXYtc3RyZXRjaCBuYXYtbGluZS10YWJzIG5hdi1saW5lLXRhYnMtMnggYm9yZGVyLXRyYW5zcGFyZW50IGZzLTUgZnctYm9sZGVyIGZsZXgtbm93cmFwXCI+XHJcbiAgICAgICAgICAgICAgICA8bGkgKGNsaWNrKT1cInVzZXJWYWx1ZSgnV29ya3NwYWNlJylcIiAgY2xhc3M9XCJuYXYtaXRlbSBjdXJzb3ItcG9pbnRlclwiPjxhIFtuZ0NsYXNzXT1cInVzZXJEYXRhID09PSdXb3Jrc3BhY2UnID8gJ2FjdGl2ZScgOicnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJuYXYtbGluayB0ZXh0LWFjdGl2ZS1wcmltYXJ5IG1lLTZcIj5Xb3Jrc3BhY2U8L2E+XHJcbiAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgPGxpIChjbGljayk9XCJ1c2VyVmFsdWUoJ0hpc3RvcnknKVwiIGNsYXNzPVwibmF2LWl0ZW0gY3Vyc29yLXBvaW50ZXJcIj48YSBbbmdDbGFzc109XCJ1c2VyRGF0YSA9PT0nSGlzdG9yeScgPyAnYWN0aXZlJyA6JydcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm5hdi1saW5rIHRleHQtYWN0aXZlLXByaW1hcnkgbWUtNlwiPkhpc3Rvcnk8L2E+PC9saT5cclxuICAgICAgICAgICAgPC91bD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIG10LTEwXCI+PGRpdiBjbGFzcz1cImQtZmxleFwiPlxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwidXNlckRhdGEgPT09ICdIaXN0b3J5J1wiIChjbGljayk9XCJzZWxlY3RUeXBlKCdhbGwnKVwiIFtuZ0NsYXNzXT1cInNlbGVjdGVkVHlwZSA9PT0gJ2FsbCcgPyAnYWN0aXZlIHRleHQtcHJpbWFyeScgOiAndGV4dFN1YidcIiBjbGFzcz1cInBlLTUgcHktMyByb3VuZGVkLTMgY3Vyc29yLXBvaW50ZXIgZnctc2VtaWJvbGRcclxuICAgICAgICAgICAgZnctc2VtaWJvbGQgXCI+QWxsPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgKGNsaWNrKT1cInNlbGVjdFR5cGUoJ3RyYWZmaWMnKVwiIFtuZ0NsYXNzXT1cInNlbGVjdGVkVHlwZSA9PT0gJ3RyYWZmaWMnID8gJ2FjdGl2ZSB0ZXh0LXByaW1hcnknIDogJ3RleHRTdWInXCIgY2xhc3M9XCJweC01IHB5LTMgcm91bmRlZC0zIGN1cnNvci1wb2ludGVyIGZ3LXNlbWlib2xkXHJcbiAgICAgICAgICAgIGZ3LXNlbWlib2xkIFwiPlRyYWZmaWM8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiAoY2xpY2spPVwic2VsZWN0VHlwZSgnem9uZScpXCIgW25nQ2xhc3NdPVwic2VsZWN0ZWRUeXBlID09PSAnem9uZScgPyAnYWN0aXZlIHRleHQtcHJpbWFyeScgOiAndGV4dFN1YidcIiBjbGFzcz1cInB4LTUgcHktMyByb3VuZGVkLTMgY3Vyc29yLXBvaW50ZXIgZnctc2VtaWJvbGRcclxuICAgICAgICAgICAgZnctc2VtaWJvbGRcIj5ab25lPC9kaXY+PC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJzZWxlY3RlZENsaWVudFwiIChjbGljayk9XCJiYWNrdG9ab25lKClcIiBjbGFzcz1cImJ0biBidG4tb3V0bGluZSBweC00IHB5LTMgY3Vyc29yLXBvaW50ZXJcIj5cclxuICAgICAgICAgICAgICAgIDxzdmdcclxuICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE0XCIgaGVpZ2h0PVwiMTRcIiB2aWV3Qm94PVwiMCAwIDE0IDE0XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTIuODMyNyA2Ljk5OTM1SDEuMTY2MDJNMS4xNjYwMiA2Ljk5OTM1TDYuOTk5MzUgMTIuODMyN00xLjE2NjAyIDYuOTk5MzVMNi45OTkzNSAxLjE2NjAyXCJcclxuICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjMzQ0MDU0XCIgc3Ryb2tlLXdpZHRoPVwiMS42N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgIDwvc3ZnPiBcclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPCEtLSAqbmdJZj1cInVzZXJEYXRhID09PSAnSGlzdG9yeScgJiYgc2VsZWN0ZWRUeXBlID09PSAndHJhZmZpYydcIiAtLT5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwidXNlckRhdGEgPT09ICdIaXN0b3J5J1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiFoaXN0b3J5TG9hZGluZyAmJiAhaGlzdG9yeU5vZGF0YVwiIGNsYXNzPVwicHQtMTBcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtcmVzcG9uc2l2ZVwiPiAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9XCJ0YWJsZSBib3R0b20tYm9yZGVyIHRleHQtbm93cmFwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoZWFkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD48ZGl2IGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwic29ydERhdGEoJ2ZpbGVEYXRlJylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZpbGUgRGF0ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJzb3J0Q29sdW1OYW1lID09PSAnZmlsZURhdGUnICYmIHNvcnRCeSAhPT0gMSB8fCBzb3J0Q29sdW1OYW1lICE9PSAnZmlsZURhdGUnIFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCIgdmlld0JveD1cIjAgMCAxMiAxMlwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTYuMDAwMTYgMS4zMzMzN1YxMC42NjY3TTYuMDAwMTYgMTAuNjY2N0wxMC42NjY4IDYuMDAwMDRNNi4wMDAxNiAxMC42NjY3TDEuMzMzNSA2LjAwMDA0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM2NjcwODVcIiBzdHJva2Utd2lkdGg9XCIxLjMzMzMzXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwic29ydENvbHVtTmFtZSA9PT0gJ2ZpbGVEYXRlJyAmJiBzb3J0QnkgIT09IC0xXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTJcIiB2aWV3Qm94PVwiMCAwIDEyIDEyXCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNNi4wMDAxNiAxMC42NjY3TDYuMDAwMTYgMS4zMzMzN002LjAwMDE2IDEuMzMzMzdMMS4zMzM1IDYuMDAwMDRNNi4wMDAxNiAxLjMzMzM3TDEwLjY2NjggNi4wMDAwNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjMDA5QkYzXCIgc3Ryb2tlLXdpZHRoPVwiMS4zMzMzM1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPjxkaXYgY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJzb3J0RGF0YSgnY2xpZW50TmFtZScpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQnJhbmQgTmFtZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwic29ydENvbHVtTmFtZSA9PT0gJ2NsaWVudE5hbWUnICYmIHNvcnRCeSAhPT0gMSB8fCBzb3J0Q29sdW1OYW1lICE9PSAnY2xpZW50TmFtZScgXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCIgdmlld0JveD1cIjAgMCAxMiAxMlwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk02LjAwMDE2IDEuMzMzMzdWMTAuNjY2N002LjAwMDE2IDEwLjY2NjdMMTAuNjY2OCA2LjAwMDA0TTYuMDAwMTYgMTAuNjY2N0wxLjMzMzUgNi4wMDAwNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzY2NzA4NVwiIHN0cm9rZS13aWR0aD1cIjEuMzMzMzNcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJzb3J0Q29sdW1OYW1lID09PSAnY2xpZW50TmFtZScgJiYgc29ydEJ5ICE9PSAtMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIxMlwiIHZpZXdCb3g9XCIwIDAgMTIgMTJcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNNi4wMDAxNiAxMC42NjY3TDYuMDAwMTYgMS4zMzMzN002LjAwMDE2IDEuMzMzMzdMMS4zMzM1IDYuMDAwMDRNNi4wMDAxNiAxLjMzMzM3TDEwLjY2NjggNi4wMDAwNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzAwOUJGM1wiIHN0cm9rZS13aWR0aD1cIjEuMzMzMzNcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+PGRpdiBjbGFzcz1cImN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cInNvcnREYXRhKCdjbGllbnRJZCcpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCcmFuZCBJRFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJzb3J0Q29sdW1OYW1lID09PSAnY2xpZW50SWQnICYmIHNvcnRCeSAhPT0gMSB8fCBzb3J0Q29sdW1OYW1lICE9PSAnY2xpZW50SWQnIFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCIgdmlld0JveD1cIjAgMCAxMiAxMlwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTYuMDAwMTYgMS4zMzMzN1YxMC42NjY3TTYuMDAwMTYgMTAuNjY2N0wxMC42NjY4IDYuMDAwMDRNNi4wMDAxNiAxMC42NjY3TDEuMzMzNSA2LjAwMDA0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM2NjcwODVcIiBzdHJva2Utd2lkdGg9XCIxLjMzMzMzXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwic29ydENvbHVtTmFtZSA9PT0gJ2NsaWVudElkJyAmJiBzb3J0QnkgIT09IC0xXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTJcIiB2aWV3Qm94PVwiMCAwIDEyIDEyXCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNNi4wMDAxNiAxMC42NjY3TDYuMDAwMTYgMS4zMzMzN002LjAwMDE2IDEuMzMzMzdMMS4zMzM1IDYuMDAwMDRNNi4wMDAxNiAxLjMzMzM3TDEwLjY2NjggNi4wMDAwNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjMDA5QkYzXCIgc3Ryb2tlLXdpZHRoPVwiMS4zMzMzM1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPjxkaXYgY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJzb3J0RGF0YSgnc3RvcmVOYW1lJylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdG9yZSBOYW1lXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJzb3J0Q29sdW1OYW1lID09PSAnc3RvcmVOYW1lJyAmJiBzb3J0QnkgIT09IDEgfHwgc29ydENvbHVtTmFtZSAhPT0gJ3N0b3JlTmFtZSdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTJcIiB2aWV3Qm94PVwiMCAwIDEyIDEyXCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTYuMDAwMTYgMS4zMzMzN1YxMC42NjY3TTYuMDAwMTYgMTAuNjY2N0wxMC42NjY4IDYuMDAwMDRNNi4wMDAxNiAxMC42NjY3TDEuMzMzNSA2LjAwMDA0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMS4zMzMzM1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInNvcnRDb2x1bU5hbWUgPT09ICdzdG9yZU5hbWUnICYmIHNvcnRCeSAhPT0gLTFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTJcIiB2aWV3Qm94PVwiMCAwIDEyIDEyXCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTYuMDAwMTYgMTAuNjY2N0w2LjAwMDE2IDEuMzMzMzdNNi4wMDAxNiAxLjMzMzM3TDEuMzMzNSA2LjAwMDA0TTYuMDAwMTYgMS4zMzMzN0wxMC42NjY4IDYuMDAwMDRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiMwMDlCRjNcIiBzdHJva2Utd2lkdGg9XCIxLjMzMzMzXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPjxkaXYgY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJzb3J0RGF0YSgnc3RvcmVJZCcpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdG9yZSBJRFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJzb3J0Q29sdW1OYW1lID09PSAnc3RvcmVJZCcgJiYgc29ydEJ5ICE9PSAxIHx8IHNvcnRDb2x1bU5hbWUgIT09ICdzdG9yZUlkJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCIgdmlld0JveD1cIjAgMCAxMiAxMlwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTYuMDAwMTYgMS4zMzMzN1YxMC42NjY3TTYuMDAwMTYgMTAuNjY2N0wxMC42NjY4IDYuMDAwMDRNNi4wMDAxNiAxMC42NjY3TDEuMzMzNSA2LjAwMDA0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM2NjcwODVcIiBzdHJva2Utd2lkdGg9XCIxLjMzMzMzXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwic29ydENvbHVtTmFtZSA9PT0gJ3N0b3JlSWQnICYmIHNvcnRCeSAhPT0gLTFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIxMlwiIHZpZXdCb3g9XCIwIDAgMTIgMTJcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk02LjAwMDE2IDEwLjY2NjdMNi4wMDAxNiAxLjMzMzM3TTYuMDAwMTYgMS4zMzMzN0wxLjMzMzUgNi4wMDAwNE02LjAwMDE2IDEuMzMzMzdMMTAuNjY2OCA2LjAwMDA0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiMwMDlCRjNcIiBzdHJva2Utd2lkdGg9XCIxLjMzMzMzXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+PGRpdiBjbGFzcz1cImN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cInNvcnREYXRhKCdhdWRpdFR5cGUnKVwiPkF1ZGl0IFR5cGVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwic29ydENvbHVtTmFtZSA9PT0gJ2F1ZGl0VHlwZScgJiYgc29ydEJ5ICE9PSAxIHx8IHNvcnRDb2x1bU5hbWUgIT09ICdhdWRpdFR5cGUnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTJcIiB2aWV3Qm94PVwiMCAwIDEyIDEyXCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNNi4wMDAxNiAxLjMzMzM3VjEwLjY2NjdNNi4wMDAxNiAxMC42NjY3TDEwLjY2NjggNi4wMDAwNE02LjAwMDE2IDEwLjY2NjdMMS4zMzM1IDYuMDAwMDRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzY2NzA4NVwiIHN0cm9rZS13aWR0aD1cIjEuMzMzMzNcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJzb3J0Q29sdW1OYW1lID09PSAnYXVkaXRUeXBlJyAmJiBzb3J0QnkgIT09IC0xXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTJcIiB2aWV3Qm94PVwiMCAwIDEyIDEyXCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNNi4wMDAxNiAxMC42NjY3TDYuMDAwMTYgMS4zMzMzN002LjAwMDE2IDEuMzMzMzdMMS4zMzM1IDYuMDAwMDRNNi4wMDAxNiAxLjMzMzM3TDEwLjY2NjggNi4wMDAwNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjMDA5QkYzXCIgc3Ryb2tlLXdpZHRoPVwiMS4zMzMzM1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCAqbmdJZj1cInNlbGVjdGVkVHlwZSA9PT0gJ2FsbCdcIj5Qcm9kdWN0IFR5cGU8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggKm5nSWY9XCJzZWxlY3RlZFR5cGUgIT09ICd0cmFmZmljJ1wiPjxkaXYgY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJzb3J0RGF0YSgnem9uZU5hbWUnKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWm9uZSBOYW1lXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJzb3J0Q29sdW1OYW1lID09PSAnem9uZU5hbWUnICYmIHNvcnRCeSAhPT0gMSB8fCBzb3J0Q29sdW1OYW1lICE9PSAnem9uZU5hbWUnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCIgdmlld0JveD1cIjAgMCAxMiAxMlwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk02LjAwMDE2IDEuMzMzMzdWMTAuNjY2N002LjAwMDE2IDEwLjY2NjdMMTAuNjY2OCA2LjAwMDA0TTYuMDAwMTYgMTAuNjY2N0wxLjMzMzUgNi4wMDAwNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzY2NzA4NVwiIHN0cm9rZS13aWR0aD1cIjEuMzMzMzNcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJzb3J0Q29sdW1OYW1lID09PSAnem9uZU5hbWUnICYmIHNvcnRCeSAhPT0gLTFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTJcIiB2aWV3Qm94PVwiMCAwIDEyIDEyXCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTYuMDAwMTYgMTAuNjY2N0w2LjAwMDE2IDEuMzMzMzdNNi4wMDAxNiAxLjMzMzM3TDEuMzMzNSA2LjAwMDA0TTYuMDAwMTYgMS4zMzMzN0wxMC42NjY4IDYuMDAwMDRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiMwMDlCRjNcIiBzdHJva2Utd2lkdGg9XCIxLjMzMzMzXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPjwvZGl2PjwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+PGRpdiBjbGFzcz1cImN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cInNvcnREYXRhKCdiZWZvcmVDb3VudCcpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCQ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwic29ydENvbHVtTmFtZSA9PT0gJ2JlZm9yZUNvdW50JyAmJiBzb3J0QnkgIT09IDEgfHwgc29ydENvbHVtTmFtZSAhPT0gJ2JlZm9yZUNvdW50J1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIxMlwiIHZpZXdCb3g9XCIwIDAgMTIgMTJcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNNi4wMDAxNiAxLjMzMzM3VjEwLjY2NjdNNi4wMDAxNiAxMC42NjY3TDEwLjY2NjggNi4wMDAwNE02LjAwMDE2IDEwLjY2NjdMMS4zMzM1IDYuMDAwMDRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM2NjcwODVcIiBzdHJva2Utd2lkdGg9XCIxLjMzMzMzXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwic29ydENvbHVtTmFtZSA9PT0gJ2JlZm9yZUNvdW50JyAmJiBzb3J0QnkgIT09IC0xXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCIgdmlld0JveD1cIjAgMCAxMiAxMlwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk02LjAwMDE2IDEwLjY2NjdMNi4wMDAxNiAxLjMzMzM3TTYuMDAwMTYgMS4zMzMzN0wxLjMzMzUgNi4wMDAwNE02LjAwMDE2IDEuMzMzMzdMMTAuNjY2OCA2LjAwMDA0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjMDA5QkYzXCIgc3Ryb2tlLXdpZHRoPVwiMS4zMzMzM1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+PGRpdiBjbGFzcz1cImN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cInNvcnREYXRhKCdhZnRlckNvdW50JylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFDXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJzb3J0Q29sdW1OYW1lID09PSAnYWZ0ZXJDb3VudCcgJiYgc29ydEJ5ICE9PSAxIHx8IHNvcnRDb2x1bU5hbWUgIT09ICdhZnRlckNvdW50J1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIxMlwiIHZpZXdCb3g9XCIwIDAgMTIgMTJcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNNi4wMDAxNiAxLjMzMzM3VjEwLjY2NjdNNi4wMDAxNiAxMC42NjY3TDEwLjY2NjggNi4wMDAwNE02LjAwMDE2IDEwLjY2NjdMMS4zMzM1IDYuMDAwMDRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM2NjcwODVcIiBzdHJva2Utd2lkdGg9XCIxLjMzMzMzXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwic29ydENvbHVtTmFtZSA9PT0gJ2FmdGVyQ291bnQnICYmIHNvcnRCeSAhPT0gLTFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTJcIiB2aWV3Qm94PVwiMCAwIDEyIDEyXCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTYuMDAwMTYgMTAuNjY2N0w2LjAwMDE2IDEuMzMzMzdNNi4wMDAxNiAxLjMzMzM3TDEuMzMzNSA2LjAwMDA0TTYuMDAwMTYgMS4zMzMzN0wxMC42NjY4IDYuMDAwMDRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiMwMDlCRjNcIiBzdHJva2Utd2lkdGg9XCIxLjMzMzMzXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPjxkaXYgY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJzb3J0RGF0YSgnYWNjdXJhY3knKVwiPkFjY3VyYWN5XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInNvcnRDb2x1bU5hbWUgPT09ICdhY2N1cmFjeScgJiYgc29ydEJ5ICE9PSAxIHx8IHNvcnRDb2x1bU5hbWUgIT09ICdhY2N1cmFjeSdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIxMlwiIHZpZXdCb3g9XCIwIDAgMTIgMTJcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk02LjAwMDE2IDEuMzMzMzdWMTAuNjY2N002LjAwMDE2IDEwLjY2NjdMMTAuNjY2OCA2LjAwMDA0TTYuMDAwMTYgMTAuNjY2N0wxLjMzMzUgNi4wMDAwNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMS4zMzMzM1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInNvcnRDb2x1bU5hbWUgPT09ICdhY2N1cmFjeScgJiYgc29ydEJ5ICE9PSAtMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCIgdmlld0JveD1cIjAgMCAxMiAxMlwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTYuMDAwMTYgMTAuNjY2N0w2LjAwMDE2IDEuMzMzMzdNNi4wMDAxNiAxLjMzMzM3TDEuMzMzNSA2LjAwMDA0TTYuMDAwMTYgMS4zMzMzN0wxMC42NjY4IDYuMDAwMDRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzAwOUJGM1wiIHN0cm9rZS13aWR0aD1cIjEuMzMzMzNcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPjxkaXYgY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJzb3J0RGF0YSgnY3JlYXRlZEF0JylcIj5BdWRpdGVkIERhdGVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwic29ydENvbHVtTmFtZSA9PT0gJ2NyZWF0ZWRBdCcgJiYgc29ydEJ5ICE9PSAxIHx8IHNvcnRDb2x1bU5hbWUgIT09ICdjcmVhdGVkQXQnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTJcIiB2aWV3Qm94PVwiMCAwIDEyIDEyXCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNNi4wMDAxNiAxLjMzMzM3VjEwLjY2NjdNNi4wMDAxNiAxMC42NjY3TDEwLjY2NjggNi4wMDAwNE02LjAwMDE2IDEwLjY2NjdMMS4zMzM1IDYuMDAwMDRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzY2NzA4NVwiIHN0cm9rZS13aWR0aD1cIjEuMzMzMzNcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJzb3J0Q29sdW1OYW1lID09PSAnY3JlYXRlZEF0JyAmJiBzb3J0QnkgIT09IC0xXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTJcIiB2aWV3Qm94PVwiMCAwIDEyIDEyXCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNNi4wMDAxNiAxMC42NjY3TDYuMDAwMTYgMS4zMzMzN002LjAwMDE2IDEuMzMzMzdMMS4zMzM1IDYuMDAwMDRNNi4wMDAxNiAxLjMzMzM3TDEwLjY2NjggNi4wMDAwNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjMDA5QkYzXCIgc3Ryb2tlLXdpZHRoPVwiMS4zMzMzM1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD48ZGl2IGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwic29ydERhdGEoJ3N0YXJ0VGltZScpXCI+U3RhcnQgVGltZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJzb3J0Q29sdW1OYW1lID09PSAnc3RhcnRUaW1lJyAmJiBzb3J0QnkgIT09IDEgfHwgc29ydENvbHVtTmFtZSAhPT0gJ3N0YXJ0VGltZSdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIxMlwiIHZpZXdCb3g9XCIwIDAgMTIgMTJcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk02LjAwMDE2IDEuMzMzMzdWMTAuNjY2N002LjAwMDE2IDEwLjY2NjdMMTAuNjY2OCA2LjAwMDA0TTYuMDAwMTYgMTAuNjY2N0wxLjMzMzUgNi4wMDAwNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMS4zMzMzM1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInNvcnRDb2x1bU5hbWUgPT09ICdzdGFydFRpbWUnICYmIHNvcnRCeSAhPT0gLTFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIxMlwiIHZpZXdCb3g9XCIwIDAgMTIgMTJcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk02LjAwMDE2IDEwLjY2NjdMNi4wMDAxNiAxLjMzMzM3TTYuMDAwMTYgMS4zMzMzN0wxLjMzMzUgNi4wMDAwNE02LjAwMDE2IDEuMzMzMzdMMTAuNjY2OCA2LjAwMDA0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiMwMDlCRjNcIiBzdHJva2Utd2lkdGg9XCIxLjMzMzMzXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPjxkaXYgY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJzb3J0RGF0YSgnZW5kVGltZScpXCI+RW5kIFRpbWVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwic29ydENvbHVtTmFtZSA9PT0gJ2VuZFRpbWUnICYmIHNvcnRCeSAhPT0gMSB8fCBzb3J0Q29sdW1OYW1lICE9PSAnZW5kVGltZSdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIxMlwiIHZpZXdCb3g9XCIwIDAgMTIgMTJcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk02LjAwMDE2IDEuMzMzMzdWMTAuNjY2N002LjAwMDE2IDEwLjY2NjdMMTAuNjY2OCA2LjAwMDA0TTYuMDAwMTYgMTAuNjY2N0wxLjMzMzUgNi4wMDAwNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMS4zMzMzM1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInNvcnRDb2x1bU5hbWUgPT09ICdlbmRUaW1lJyAmJiBzb3J0QnkgIT09IC0xXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTJcIiB2aWV3Qm94PVwiMCAwIDEyIDEyXCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNNi4wMDAxNiAxMC42NjY3TDYuMDAwMTYgMS4zMzMzN002LjAwMDE2IDEuMzMzMzdMMS4zMzM1IDYuMDAwMDRNNi4wMDAxNiAxLjMzMzM3TDEwLjY2NjggNi4wMDAwNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjMDA5QkYzXCIgc3Ryb2tlLXdpZHRoPVwiMS4zMzMzM1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD48ZGl2IGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwic29ydERhdGEoJ3RpbWVTcGVudCcpXCI+VGltZSBTcGVudFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJzb3J0Q29sdW1OYW1lID09PSAndGltZVNwZW50JyAmJiBzb3J0QnkgIT09IDEgfHwgc29ydENvbHVtTmFtZSAhPT0gJ3RpbWVTcGVudCdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIxMlwiIHZpZXdCb3g9XCIwIDAgMTIgMTJcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk02LjAwMDE2IDEuMzMzMzdWMTAuNjY2N002LjAwMDE2IDEwLjY2NjdMMTAuNjY2OCA2LjAwMDA0TTYuMDAwMTYgMTAuNjY2N0wxLjMzMzUgNi4wMDAwNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMS4zMzMzM1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInNvcnRDb2x1bU5hbWUgPT09ICd0aW1lU3BlbnQnICYmIHNvcnRCeSAhPT0gLTFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIxMlwiIHZpZXdCb3g9XCIwIDAgMTIgMTJcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk02LjAwMDE2IDEwLjY2NjdMNi4wMDAxNiAxLjMzMzM3TTYuMDAwMTYgMS4zMzMzN0wxLjMzMzUgNi4wMDAwNE02LjAwMDE2IDEuMzMzMzdMMTAuNjY2OCA2LjAwMDA0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiMwMDlCRjNcIiBzdHJva2Utd2lkdGg9XCIxLjMzMzMzXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+PGRpdiBjbGFzcz1cImN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cInNvcnREYXRhKCdhdWRpdFN0YXR1cycpXCI+U3RhdHVzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInNvcnRDb2x1bU5hbWUgPT09ICdhdWRpdFN0YXR1cycgJiYgc29ydEJ5ICE9PSAxIHx8IHNvcnRDb2x1bU5hbWUgIT09ICdhdWRpdFN0YXR1cydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIxMlwiIHZpZXdCb3g9XCIwIDAgMTIgMTJcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk02LjAwMDE2IDEuMzMzMzdWMTAuNjY2N002LjAwMDE2IDEwLjY2NjdMMTAuNjY2OCA2LjAwMDA0TTYuMDAwMTYgMTAuNjY2N0wxLjMzMzUgNi4wMDAwNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMS4zMzMzM1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInNvcnRDb2x1bU5hbWUgPT09ICdhdWRpdFN0YXR1cycgJiYgc29ydEJ5ICE9PSAtMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCIgdmlld0JveD1cIjAgMCAxMiAxMlwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTYuMDAwMTYgMTAuNjY2N0w2LjAwMDE2IDEuMzMzMzdNNi4wMDAxNiAxLjMzMzM3TDEuMzMzNSA2LjAwMDA0TTYuMDAwMTYgMS4zMzMzN0wxMC42NjY4IDYuMDAwMDRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzAwOUJGM1wiIHN0cm9rZS13aWR0aD1cIjEuMzMzMzNcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+QWN0aW9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoZWFkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0Ym9keT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyICpuZ0Zvcj1cImxldCBoaXN0b3J5IG9mIHdvcmtIaXN0b3J5ZGF0YTsgbGV0IGkgPSBpbmRleFwiIGNsYXNzPVwidHItcGFkZGluZ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7aGlzdG9yeT8uZmlsZURhdGUgPyBoaXN0b3J5Py5maWxlRGF0ZSA6ICctLSd9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3toaXN0b3J5Py5jbGllbnROYW1lID8gaGlzdG9yeT8uY2xpZW50TmFtZSA6Jy0tJ319PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57e2hpc3Rvcnk/LmNsaWVudElkID8gaGlzdG9yeT8uY2xpZW50SWQgOictLSd9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3toaXN0b3J5Py5zdG9yZU5hbWUgPyBoaXN0b3J5Py5zdG9yZU5hbWUgOiAnLS0nfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7aGlzdG9yeT8uc3RvcmVJZCA/IGhpc3Rvcnk/LnN0b3JlSWQgOiAnLS0nfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7aGlzdG9yeT8uYXVkaXRUeXBlID09PSdSZUF1ZGl0JyA/ICdSZS1BdWRpdCcgOiBoaXN0b3J5Py5hdWRpdFR5cGV9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgKm5nSWY9XCJzZWxlY3RlZFR5cGUgPT09ICdhbGwnXCI+e3toaXN0b3J5Py5tb2R1bGVUeXBlIHwgdGl0bGVjYXNlfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkICpuZ0lmPVwic2VsZWN0ZWRUeXBlICE9PSAndHJhZmZpYydcIj57eyBoaXN0b3J5Py5tb2R1bGVUeXBlID09PSd0cmFmZmljJyA/ICctLScgOiBoaXN0b3J5Py56b25lTmFtZX19PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57e2hpc3Rvcnk/LmJlZm9yZUNvdW50ID8/ICctLSd9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3toaXN0b3J5Py5hZnRlckNvdW50ID8/ICctLSd9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3toaXN0b3J5Py5hY2N1cmFjeSA/PyAnLS0nfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7aGlzdG9yeT8uY3JlYXRlZEF0ID8gKGhpc3Rvcnk/LmNyZWF0ZWRBdCB8IGN1c3RvbURhdGVGb3JtYXQpIDonLS0nfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7aGlzdG9yeT8uc3RhcnRUaW1lID8gaGlzdG9yeT8uc3RhcnRUaW1lIDonLS0nfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7aGlzdG9yeT8uZW5kVGltZSA/IGhpc3Rvcnk/LmVuZFRpbWUgOictLSd9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3toaXN0b3J5Py50aW1lU3BlbnQgPyBoaXN0b3J5Py50aW1lU3BlbnQgOictLSd9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImhpc3RvcnkuYXVkaXRTdGF0dXMgIT09ICdub3RfYXNzaWduJ1wiIFtuZ0NsYXNzXT1cImhpc3Rvcnk/LmF1ZGl0U3RhdHVzID09PSdjb21wbGV0ZWQnID8gJ2JhZGdlLWxpZ2h0LXN1Y2Nlc3MnIDogKGhpc3Rvcnk/LmF1ZGl0U3RhdHVzID09PSdkcmFmdGVkJyA/ICdiYWRnZS1saWdodC1kYW5nZXInIDonYmFkZ2UtbGlnaHQtcHJpbWFyeScpXCIgY2xhc3M9XCJiYWRnZVwiPnt7aGlzdG9yeS5hdWRpdFN0YXR1cyB8IHRpdGxlY2FzZX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJoaXN0b3J5LmF1ZGl0U3RhdHVzID09PSAnbm90X2Fzc2lnbidcIiBjbGFzcz1cImJhZGdlIGJhZGdlLWxpZ2h0LWRhbmdlclwiPk5vdCBBc3NpZ25lZDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjxzcGFuIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwidmlld0hpc3RvcnkoaGlzdG9yeSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMC44MzMzNzQgMTBDMC44MzMzNzQgMTAgNC4xNjY3MSAzLjMzMzM3IDEwIDMuMzMzMzdDMTUuODMzNCAzLjMzMzM3IDE5LjE2NjcgMTAgMTkuMTY2NyAxMEMxOS4xNjY3IDEwIDE1LjgzMzQgMTYuNjY2NyAxMCAxNi42NjY3QzQuMTY2NzEgMTYuNjY2NyAwLjgzMzM3NCAxMCAwLjgzMzM3NCAxMFpcIiBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMS42NjY2N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTEwIDEyLjVDMTEuMzgwOCAxMi41IDEyLjUgMTEuMzgwOCAxMi41IDEwQzEyLjUgOC42MTkzMyAxMS4zODA4IDcuNTAwMDQgMTAgNy41MDAwNEM4LjYxOTMzIDcuNTAwMDQgNy41MDAwNCA4LjYxOTMzIDcuNTAwMDQgMTBDNy41MDAwNCAxMS4zODA4IDguNjE5MzMgMTIuNSAxMCAxMi41WlwiIHN0cm9rZT1cIiM2NjcwODVcIiBzdHJva2Utd2lkdGg9XCIxLjY2NjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3Rib2R5PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4gICBcclxuICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgIDxsaWItcGFnaW5hdGlvbiBbaXRlbXNQZXJQYWdlXT1cImxpbWl0XCIgW2N1cnJlbnRQYWdlXT1cIm9mZnNldFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3RvdGFsSXRlbXNdPVwidG90YWxDb3VudFwiIFtwYWdpbmF0aW9uU2l6ZXNdPVwicGFnaW5hdGlvblNpemVzXCIgW3BhZ2VTaXplXT1cInNldExpbWl0KClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwYWdlQ2hhbmdlKT1cIm9uUGFnZUNoYW5nZSgkZXZlbnQpXCIgKHBhZ2VTaXplQ2hhbmdlKT1cIm9uUGFnZVNpemVDaGFuZ2UoJGV2ZW50KVwiPjwvbGliLXBhZ2luYXRpb24+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj4gXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImhpc3RvcnlMb2FkaW5nXCIgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBsb2FkZXIgIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaGltbWVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3cmFwcGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIHRpdGxlXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGxpbmtcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgZGVzY3JpcHRpb25cIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaGltbWVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3cmFwcGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIHRpdGxlXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGxpbmtcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgZGVzY3JpcHRpb25cIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJoaXN0b3J5Tm9kYXRhXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy0xMiBtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHkgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyIGZsZXgtY29sdW1uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIGNsYXNzPVwiaW1nLXNyY1wiIHNyYz1cIi4vYXNzZXRzL3RhbmdvL0ljb25zL05vZGF0YS5zdmdcIiBhbHQ9XCJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiAqbmdJZj1cInVzZXJEYXRhID09PSAnV29ya3NwYWNlJ1wiPlxyXG4gICAgICAgICAgICAgICAgPGxpYi1hdWRpdC1tYW5hZ2VtZW50IFtzZWFyY2hBdWRpdF09XCJzZWFyY2hBdWRpdFwiIFtzZWxlY3RlZFR5cGVdPVwic2VsZWN0ZWRUeXBlXCIgW3NlbGVjdGVkQ2xpZW50XT1cInNlbGVjdGVkQ2xpZW50XCIgW2NsaWVudElkXT1cImNsaWVudElkXCI+PC9saWItYXVkaXQtbWFuYWdlbWVudD5cclxuICAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuPC9kaXY+XHJcbiJdfQ==