tango-app-ui-ticket-user 3.0.54-dev → 3.0.56-dev

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (32) hide show
  1. package/esm2022/lib/components/audit-management/audit-management.component.mjs +89 -48
  2. package/esm2022/lib/components/audit-workspace/audit-workspace.component.mjs +133 -81
  3. package/esm2022/lib/components/contact-details/contact-details.component.mjs +3 -3
  4. package/esm2022/lib/components/dropdown/dropdown.component.mjs +3 -3
  5. package/esm2022/lib/components/edge-cameraview/edge-cameraview.component.mjs +3 -3
  6. package/esm2022/lib/components/edgeapp-log/edgeapp-log.component.mjs +3 -3
  7. package/esm2022/lib/components/edit-details/edit-details.component.mjs +3 -3
  8. package/esm2022/lib/components/infratickets/infratickets.component.mjs +9 -8
  9. package/esm2022/lib/components/installation/installation.component.mjs +3 -3
  10. package/esm2022/lib/components/store-activity/store-activity.component.mjs +3 -3
  11. package/esm2022/lib/components/store-info/store-info.component.mjs +3 -3
  12. package/esm2022/lib/components/takeremote/takeremote.component.mjs +3 -3
  13. package/esm2022/lib/components/tango-ticket-users/tango-ticket-users.component.mjs +5 -4
  14. package/esm2022/lib/components/tickets/tickets.component.mjs +3 -3
  15. package/esm2022/lib/components/viewhistory/viewhistory.component.mjs +21 -16
  16. package/esm2022/lib/route-wrappers/edge-wrapper.module.mjs +4 -4
  17. package/esm2022/lib/services/data.service.mjs +3 -3
  18. package/esm2022/lib/services/excel.service.mjs +3 -3
  19. package/esm2022/lib/services/ticket-infra.service.mjs +17 -24
  20. package/esm2022/lib/tango-ticket-users-routing.module.mjs +4 -4
  21. package/esm2022/lib/tango-ticket-users.module.mjs +4 -4
  22. package/fesm2022/{tango-app-ui-ticket-user-edge-wrapper.module-fMqNK7aH.mjs → tango-app-ui-ticket-user-edge-wrapper.module-CFDk0tvS.mjs} +5 -5
  23. package/fesm2022/{tango-app-ui-ticket-user-edge-wrapper.module-fMqNK7aH.mjs.map → tango-app-ui-ticket-user-edge-wrapper.module-CFDk0tvS.mjs.map} +1 -1
  24. package/fesm2022/tango-app-ui-ticket-user.mjs +307 -218
  25. package/fesm2022/tango-app-ui-ticket-user.mjs.map +1 -1
  26. package/lib/components/audit-management/audit-management.component.d.ts +20 -4
  27. package/lib/components/audit-workspace/audit-workspace.component.d.ts +14 -3
  28. package/lib/components/infratickets/infratickets.component.d.ts +1 -0
  29. package/lib/components/tango-ticket-users/tango-ticket-users.component.d.ts +1 -0
  30. package/lib/components/viewhistory/viewhistory.component.d.ts +1 -0
  31. package/lib/services/ticket-infra.service.d.ts +5 -8
  32. package/package.json +1 -1
@@ -1,14 +1,19 @@
1
1
  import { Component, Input } from '@angular/core';
2
2
  import dayjs from 'dayjs';
3
+ import { Subject } from 'rxjs';
3
4
  import * as i0 from "@angular/core";
4
5
  import * as i1 from "@angular/router";
5
6
  import * as i2 from "../../services/ticket-infra.service";
6
- import * as i3 from "@angular/common";
7
- import * as i4 from "tango-app-ui-shared";
7
+ import * as i3 from "tango-app-ui-global";
8
+ import * as i4 from "@ng-bootstrap/ng-bootstrap";
9
+ import * as i5 from "@angular/common";
10
+ import * as i6 from "tango-app-ui-shared";
8
11
  export class AuditManagementComponent {
9
12
  changedetector;
10
13
  router;
11
14
  audit;
15
+ gs;
16
+ modalService;
12
17
  dataSource = [];
13
18
  size = 10;
14
19
  offset = 1;
@@ -39,10 +44,23 @@ export class AuditManagementComponent {
39
44
  datalist;
40
45
  itemheight;
41
46
  searchAudit;
42
- constructor(changedetector, router, audit) {
47
+ selectedType;
48
+ selectedClient;
49
+ // selectedType:any = 'traffic';
50
+ // @Output() cildEvent = new EventEmitter<any>();
51
+ // @ViewChild('AuditZone') AuditZone:any;
52
+ sortColumName = '';
53
+ sortBy = 1;
54
+ unsubscribe = [];
55
+ destroy$ = new Subject();
56
+ headerFilter;
57
+ paginationSizes = [10, 20, 30];
58
+ constructor(changedetector, router, audit, gs, modalService) {
43
59
  this.changedetector = changedetector;
44
60
  this.router = router;
45
61
  this.audit = audit;
62
+ this.gs = gs;
63
+ this.modalService = modalService;
46
64
  }
47
65
  ngOnInit() {
48
66
  this.size = 10;
@@ -54,7 +72,6 @@ export class AuditManagementComponent {
54
72
  this.singledate = this.dayjs(new Date()).format('YYYY-MM-DD');
55
73
  if ('user-info' in localStorage) {
56
74
  this.userinfo = JSON.parse(localStorage.getItem('user-info') || '{}');
57
- console.log('userinfo', this.userinfo);
58
75
  this.user = this.userinfo?.user;
59
76
  // this.getauditcard(this.filter)
60
77
  this.searchData(this.searchAudit);
@@ -69,60 +86,62 @@ export class AuditManagementComponent {
69
86
  });
70
87
  }
71
88
  }
89
+ ngOnDestroy() {
90
+ this.unsubscribe.forEach((sb) => sb.unsubscribe());
91
+ this.destroy$.next(true);
92
+ this.destroy$.complete();
93
+ }
72
94
  ngOnChanges(changes) {
73
95
  if (changes['searchAudit']) {
74
96
  this.searchData(changes['searchAudit'].currentValue);
75
97
  }
98
+ if (changes['selectedType']) {
99
+ this.getauditdata();
100
+ this.size = 10;
101
+ this.offset = 1;
102
+ }
76
103
  }
77
104
  getauditdata() {
78
105
  let isExport = false;
79
- this.audit.getAudit(this.offset, parseInt(this.size.toString()), this.searchAudit, isExport).subscribe((res) => {
80
- if (!res || res.code == 204) {
81
- this.auditLoading = false;
82
- this.auditNoData = true;
83
- }
84
- else if (res && res.code == 200) {
85
- this.datalist = res.data;
86
- this.dataSource = res?.data?.result;
87
- this.recordsTotal = res?.data?.count;
88
- this.recordsCount = this.dataSource.length;
89
- if (this.dataSource.length) {
90
- this.auditLoading = false;
91
- this.auditNoData = false;
92
- }
93
- else {
106
+ this.audit.getAudit(this.offset, parseInt(this.size.toString()), this.searchAudit, isExport, this.selectedType).subscribe({
107
+ next: (res) => {
108
+ if (!res || res.code == 204) {
94
109
  this.auditLoading = false;
95
110
  this.auditNoData = true;
96
111
  }
97
- }
112
+ else if (res && res.code == 200) {
113
+ this.datalist = res.data;
114
+ this.dataSource = res?.data?.result;
115
+ this.recordsTotal = res?.data?.count;
116
+ this.recordsCount = this.dataSource.length;
117
+ if (this.recordsTotal < 10) {
118
+ this.paginationSizes = [this.recordsTotal];
119
+ }
120
+ else {
121
+ this.paginationSizes = [10, 20, 30];
122
+ }
123
+ if (this.dataSource.length) {
124
+ this.auditLoading = false;
125
+ this.auditNoData = false;
126
+ }
127
+ else {
128
+ this.auditLoading = false;
129
+ this.auditNoData = true;
130
+ }
131
+ }
132
+ },
133
+ error: (err) => {
134
+ this.auditLoading = false;
135
+ this.auditNoData = true;
136
+ },
137
+ complete() { }
98
138
  });
99
139
  }
100
140
  searchData(value) {
101
141
  this.searchAudit = value;
102
142
  this.getauditdata();
103
- // this.audit.getAudit(1, parseInt(this.size.toString()), this.searchAudit, this.user).subscribe((res: any) => {
104
- // if (!res || res.code == 204) {
105
- // this.auditLoading = false;
106
- // this.auditNoData = true;
107
- // } else if (res && res.code == 200) {
108
- // this.currentValue = 1; this.pageStart =0; this.pageEnd =5;
109
- // this.dataSource = res?.data?.result;
110
- // if (this.dataSource.length) {
111
- // }
112
- // this.recordsTotal = res?.data?.count;
113
- // this.recordsCount = this.dataSource.length
114
- // if (this.dataSource.length) {
115
- // this.auditLoading = false;
116
- // this.auditNoData = false;
117
- // } else {
118
- // this.auditLoading = false;
119
- // this.auditNoData = true;
120
- // }
121
- // }
122
- // })
123
143
  }
124
144
  mappingdata(data) {
125
- console.log;
126
145
  var obj = {
127
146
  totalfiles: {}
128
147
  };
@@ -132,11 +151,15 @@ export class AuditManagementComponent {
132
151
  obj.totalfiles.queueName = data.queueName;
133
152
  sessionStorage.setItem('totalfiles', JSON.stringify(obj));
134
153
  }
135
- this.router.navigate(['/tickets/audit']);
154
+ this.router.navigate(['/tickets/audit'], { queryParams: { type: this.selectedType } });
136
155
  }
137
156
  datechange(date) {
138
157
  this.singledate = date;
139
158
  }
159
+ redirectTozone(source) {
160
+ this.selectedClient = source?.clientId;
161
+ // this.cildEvent.emit(this.selectedClient)
162
+ }
140
163
  getToday() {
141
164
  return new Date().toISOString().split('T')[0];
142
165
  }
@@ -146,15 +169,33 @@ export class AuditManagementComponent {
146
169
  }
147
170
  onPageSizeChange(pageSize) {
148
171
  this.size = pageSize;
172
+ this.offset = 1;
173
+ this.getauditdata();
174
+ }
175
+ sortData(value) {
176
+ this.sortColumName = value;
177
+ this.sortBy *= -1;
149
178
  this.getauditdata();
150
179
  }
151
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: AuditManagementComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.Router }, { token: i2.TicketsService }], target: i0.ɵɵFactoryTarget.Component });
152
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: AuditManagementComponent, selector: "lib-audit-management", inputs: { searchAudit: "searchAudit" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"card border-0\">\r\n <!-- <div class=\"card-header border-0 p-0\"> -->\r\n <!-- <h3 class=\"card-title align-items-start flex-column\">\r\n <span class=\"card-label fw-bold text-dark\">Audit Management</span> -->\r\n <!-- <p class=\"text-gray-400 fw-bold fs-5 mt-1\">\r\n Total {{datalist ? datalist?.totalStores:'0'}} Stores</p> -->\r\n <!-- </h3> -->\r\n <!-- <div class=\"card-toolbar \">\r\n <div class=\"d-flex\">\r\n <div class=\"d-flex align-items-center position-relative my-1\">\r\n <span class=\"svg-icon svg-icon-1 position-absolute ms-6\">\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\" (change)=\"searchData()\" [(ngModel)]=\"searchValue\" \r\n class=\"form-control w-300px ps-14\" name=\"search\" autocomplete=\"off\"\r\n placeholder=\"Search by Client Name / ID\" autocomplete=\"off\" />\r\n <div class=\"cursor-pointer ms-3\">\r\n <button class=\"btn btn-outline\" [disabled]=\"auditLoading || auditNoData\"\r\n (click)=\"exportAsXlsx()\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path 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\" stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg><span class=\"ms-2\">{{exportBtnText}}</span> </button></div>\r\n </div>\r\n </div>\r\n </div> -->\r\n <!-- </div> -->\r\n <div class=\"card-body px-0 pt-10\" *ngIf=\"!auditLoading && !auditNoData\">\r\n <div>\r\n <div class=\"table-responsive\"> \r\n <table class=\"table bottom-border text-nowrap\">\r\n <thead>\r\n <tr>\r\n <th>Client Name</th>\r\n <th>Client Id</th>\r\n <th>Pending Queue</th>\r\n <th>Pending User</th>\r\n <th>Completed</th>\r\n <th>Action</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let source of dataSource ; let i = index\">\r\n <td>{{source?.clientName}}</td>\r\n <td>{{source?.clientId}}</td>\r\n <td>{{source?.pendingByQueue ? source?.pendingByQueue :'--'}}</td>\r\n <td>{{source?.pendingByUser ? source?.pendingByUser : '--'}}\r\n </td>\r\n <td>{{source?.completedCount ? source?.completedCount :'--'}}</td>\r\n \r\n <td><button class=\"btn btn-default btn btn-outline text-capitalize cursor-pointer\"\r\n (click)=\"mappingdata(source)\" [disabled]=\"!source?.isEnable\" > START </button>\r\n <!-- *ngIf=\"!source?.isEnable\" -->\r\n <!-- <span class=\"badge py-3 px-4 fs-7 badge-light-secondary text-secondary text-capitalize\"\r\n >START</span> -->\r\n </td>\r\n </tr>\r\n </tbody>\r\n \r\n </table> \r\n </div>\r\n <lib-pagination [itemsPerPage]=\"size\" [currentPage]=\"offset\"\r\n [totalItems]=\"recordsTotal\" [paginationSizes]=\"[10,20,30]\" [pageSize]=\"size\"\r\n (pageChange)=\"onPageChange($event)\" (pageSizeChange)=\"onPageSizeChange($event)\"></lib-pagination>\r\n </div>\r\n </div>\r\n\r\n <ng-container *ngIf=\"auditLoading\" >\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=\"auditNoData\">\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 w-25\" 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 \r\n <!-- <app-date-range-picker name=\"app-range-picker-single\" type=\"single\" (change)=\"dateChanged($event)\"\r\n id=\"dateclass\">\r\n </app-date-range-picker> -->", styles: ["tr{vertical-align:middle!important}.scroll-y{overflow-y:auto!important;position:relative!important}input[type=date]{position:relative}input[type=date]::-webkit-calendar-picker-indicator{background-position:right;background-size:auto;cursor:pointer;position:absolute;bottom:10;left:0;right:0;top:5;width:auto}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.PaginationComponent, selector: "lib-pagination", inputs: ["collection", "itemsPerPage", "currentPage", "totalItems", "directionLinks", "pageSize", "paginationSizes"], outputs: ["pageChange", "pageSizeChange"] }] });
180
+ setpageSize() {
181
+ if (this.recordsTotal < 10) {
182
+ return this.recordsTotal;
183
+ }
184
+ else {
185
+ return this.size;
186
+ }
187
+ }
188
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AuditManagementComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.Router }, { token: i2.TicketsService }, { token: i3.GlobalStateService }, { token: i4.NgbModal }], target: i0.ɵɵFactoryTarget.Component });
189
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: AuditManagementComponent, selector: "lib-audit-management", inputs: { searchAudit: "searchAudit", selectedType: "selectedType", selectedClient: "selectedClient" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"card border-0\">\r\n <!-- <div class=\"card-header border-0 p-0\"> -->\r\n <!-- <h3 class=\"card-title align-items-start flex-column\">\r\n <span class=\"card-label fw-bold text-dark\">Audit Management</span> -->\r\n <!-- <p class=\"text-gray-400 fw-bold fs-5 mt-1\">\r\n Total {{datalist ? datalist?.totalStores:'0'}} Stores</p> -->\r\n <!-- </h3> -->\r\n <!-- <div class=\"card-toolbar \">\r\n <div class=\"d-flex\">\r\n <div class=\"d-flex align-items-center position-relative my-1\">\r\n <span class=\"svg-icon svg-icon-1 position-absolute ms-6\">\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\" (change)=\"searchData()\" [(ngModel)]=\"searchValue\" \r\n class=\"form-control w-300px ps-14\" name=\"search\" autocomplete=\"off\"\r\n placeholder=\"Search by Client Name / ID\" autocomplete=\"off\" />\r\n <div class=\"cursor-pointer ms-3\">\r\n <button class=\"btn btn-outline\" [disabled]=\"auditLoading || auditNoData\"\r\n (click)=\"exportAsXlsx()\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path 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\" stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg><span class=\"ms-2\">{{exportBtnText}}</span> </button></div>\r\n </div>\r\n </div>\r\n </div> -->\r\n <!-- </div> -->\r\n <div class=\"card-body px-0 pt-10\" *ngIf=\"!auditLoading && !auditNoData && selectedType ==='traffic'\">\r\n <div>\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('clientName')\">Client 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=\"#667085\" 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('clientId')\">Client 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=\"#667085\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span></div></th>\r\n <th>Pending Queue</th>\r\n <th>Pending User</th>\r\n <th>Completed</th>\r\n <th>Action</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let source of dataSource ; let i = index\">\r\n <td> {{source?.clientName}} \r\n <!-- <div class=\"d-flex mt-3\"> -->\r\n <span *ngIf=\"source?.isDraft\" class=\"badge badge-light-primary mx-2\">Draft</span>\r\n <span *ngIf=\"source?.isAssigned\" class=\"badge badge-light-primary mx-2\">Assigned</span>\r\n <!-- </div> -->\r\n </td>\r\n <td>{{source?.clientId ? source?.clientId : '--'}}</td>\r\n <td>{{source?.pendingByQueue ?? '--'}}</td>\r\n <td>{{source?.pendingByUser ?? '--'}}</td>\r\n <td> {{source?.completedCount ?? '--'}} \r\n <div *ngIf=\"source?.completedCount\" class=\"d-flex align-items-center mt-3\">\r\n <div class=\"w-10px h-10px rounded-5 bg-success me-5\"></div>\r\n <span>{{source?.completedRatio}} %</span>\r\n </div></td> \r\n <td><button class=\"btn btn-default btn btn-outline text-capitalize cursor-pointer\"\r\n (click)=\"mappingdata(source)\" [disabled]=\"!source?.isEnable\"> Start </button>\r\n <!-- *ngIf=\"!source?.isEnable\" -->\r\n <!-- <span class=\"badge py-3 px-4 fs-7 badge-light-secondary text-secondary text-capitalize\"\r\n >START</span> -->\r\n </td>\r\n </tr>\r\n </tbody>\r\n \r\n </table> \r\n </div>\r\n <lib-pagination [itemsPerPage]=\"size\" [currentPage]=\"offset\"\r\n [totalItems]=\"recordsTotal\" [paginationSizes]=\"paginationSizes\" [pageSize]=\"setpageSize()\"\r\n (pageChange)=\"onPageChange($event)\" (pageSizeChange)=\"onPageSizeChange($event)\"></lib-pagination>\r\n </div>\r\n </div>\r\n\r\n <div class=\"card-body px-0 pt-10\" *ngIf=\"!auditLoading && !auditNoData && selectedType ==='zone'\">\r\n <div>\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('clientName')\">Client 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=\"#667085\" 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('clientId')\">Client 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=\"#667085\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span></div></th>\r\n <th>Pending Queue</th>\r\n <th>Pending User</th>\r\n <th>Completed</th>\r\n <th>Action</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let source of dataSource ; let i = index\">\r\n <td> {{source?.clientName}} \r\n <!-- <div class=\"d-flex mt-3\"> -->\r\n <span *ngIf=\"source?.isDraft\" class=\"badge badge-light-primary mx-2\">Draft</span>\r\n <span *ngIf=\"source?.isAssigned\" class=\"badge badge-light-primary mx-2\">Assigned</span>\r\n <!-- </div> -->\r\n </td>\r\n <td>{{source?.clientId ? source?.clientId : '--'}}</td>\r\n <td>{{source?.pendingByQueue ?? '--'}}</td>\r\n <td>{{source?.pendingByUser ?? '--'}}</td>\r\n <td> {{source?.completedCount ?? '--'}} \r\n <div *ngIf=\"source?.completedCount\" class=\"d-flex align-items-center mt-3\">\r\n <div class=\"w-10px h-10px rounded-5 bg-success me-5\"></div>\r\n <span>{{source?.completedRatio}} %</span>\r\n </div></td> \r\n <td><button class=\"btn btn-default btn btn-outline text-capitalize cursor-pointer\"\r\n (click)=\"mappingdata(source)\" [disabled]=\"!source?.isEnable\"> Start </button>\r\n <!-- *ngIf=\"!source?.isEnable\" -->\r\n <!-- <span class=\"badge py-3 px-4 fs-7 badge-light-secondary text-secondary text-capitalize\"\r\n >START</span> -->\r\n </td>\r\n </tr>\r\n </tbody>\r\n \r\n </table> \r\n </div>\r\n <lib-pagination [itemsPerPage]=\"size\" [currentPage]=\"offset\"\r\n [totalItems]=\"recordsTotal\" [paginationSizes]=\"paginationSizes\" [pageSize]=\"setpageSize()\"\r\n (pageChange)=\"onPageChange($event)\" (pageSizeChange)=\"onPageSizeChange($event)\"></lib-pagination>\r\n </div>\r\n </div>\r\n\r\n <ng-container *ngIf=\"auditLoading\" >\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=\"auditNoData\">\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 w-25\" 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\r\n <!-- <app-date-range-picker name=\"app-range-picker-single\" type=\"single\" (change)=\"dateChanged($event)\"\r\n id=\"dateclass\">\r\n </app-date-range-picker> -->", styles: ["tr{vertical-align:middle!important}.scroll-y{overflow-y:auto!important;position:relative!important}input[type=date]{position:relative}input[type=date]::-webkit-calendar-picker-indicator{background-position:right;background-size:auto;cursor:pointer;position:absolute;bottom:10;left:0;right:0;top:5;width:auto}\n"], dependencies: [{ kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i6.PaginationComponent, selector: "lib-pagination", inputs: ["collection", "itemsPerPage", "currentPage", "totalItems", "directionLinks", "pageSize", "paginationSizes"], outputs: ["pageChange", "pageSizeChange"] }] });
153
190
  }
154
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: AuditManagementComponent, decorators: [{
191
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AuditManagementComponent, decorators: [{
155
192
  type: Component,
156
- args: [{ selector: 'lib-audit-management', template: "<div class=\"card border-0\">\r\n <!-- <div class=\"card-header border-0 p-0\"> -->\r\n <!-- <h3 class=\"card-title align-items-start flex-column\">\r\n <span class=\"card-label fw-bold text-dark\">Audit Management</span> -->\r\n <!-- <p class=\"text-gray-400 fw-bold fs-5 mt-1\">\r\n Total {{datalist ? datalist?.totalStores:'0'}} Stores</p> -->\r\n <!-- </h3> -->\r\n <!-- <div class=\"card-toolbar \">\r\n <div class=\"d-flex\">\r\n <div class=\"d-flex align-items-center position-relative my-1\">\r\n <span class=\"svg-icon svg-icon-1 position-absolute ms-6\">\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\" (change)=\"searchData()\" [(ngModel)]=\"searchValue\" \r\n class=\"form-control w-300px ps-14\" name=\"search\" autocomplete=\"off\"\r\n placeholder=\"Search by Client Name / ID\" autocomplete=\"off\" />\r\n <div class=\"cursor-pointer ms-3\">\r\n <button class=\"btn btn-outline\" [disabled]=\"auditLoading || auditNoData\"\r\n (click)=\"exportAsXlsx()\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path 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\" stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg><span class=\"ms-2\">{{exportBtnText}}</span> </button></div>\r\n </div>\r\n </div>\r\n </div> -->\r\n <!-- </div> -->\r\n <div class=\"card-body px-0 pt-10\" *ngIf=\"!auditLoading && !auditNoData\">\r\n <div>\r\n <div class=\"table-responsive\"> \r\n <table class=\"table bottom-border text-nowrap\">\r\n <thead>\r\n <tr>\r\n <th>Client Name</th>\r\n <th>Client Id</th>\r\n <th>Pending Queue</th>\r\n <th>Pending User</th>\r\n <th>Completed</th>\r\n <th>Action</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let source of dataSource ; let i = index\">\r\n <td>{{source?.clientName}}</td>\r\n <td>{{source?.clientId}}</td>\r\n <td>{{source?.pendingByQueue ? source?.pendingByQueue :'--'}}</td>\r\n <td>{{source?.pendingByUser ? source?.pendingByUser : '--'}}\r\n </td>\r\n <td>{{source?.completedCount ? source?.completedCount :'--'}}</td>\r\n \r\n <td><button class=\"btn btn-default btn btn-outline text-capitalize cursor-pointer\"\r\n (click)=\"mappingdata(source)\" [disabled]=\"!source?.isEnable\" > START </button>\r\n <!-- *ngIf=\"!source?.isEnable\" -->\r\n <!-- <span class=\"badge py-3 px-4 fs-7 badge-light-secondary text-secondary text-capitalize\"\r\n >START</span> -->\r\n </td>\r\n </tr>\r\n </tbody>\r\n \r\n </table> \r\n </div>\r\n <lib-pagination [itemsPerPage]=\"size\" [currentPage]=\"offset\"\r\n [totalItems]=\"recordsTotal\" [paginationSizes]=\"[10,20,30]\" [pageSize]=\"size\"\r\n (pageChange)=\"onPageChange($event)\" (pageSizeChange)=\"onPageSizeChange($event)\"></lib-pagination>\r\n </div>\r\n </div>\r\n\r\n <ng-container *ngIf=\"auditLoading\" >\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=\"auditNoData\">\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 w-25\" 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 \r\n <!-- <app-date-range-picker name=\"app-range-picker-single\" type=\"single\" (change)=\"dateChanged($event)\"\r\n id=\"dateclass\">\r\n </app-date-range-picker> -->", styles: ["tr{vertical-align:middle!important}.scroll-y{overflow-y:auto!important;position:relative!important}input[type=date]{position:relative}input[type=date]::-webkit-calendar-picker-indicator{background-position:right;background-size:auto;cursor:pointer;position:absolute;bottom:10;left:0;right:0;top:5;width:auto}\n"] }]
157
- }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i1.Router }, { type: i2.TicketsService }], propDecorators: { searchAudit: [{
193
+ args: [{ selector: 'lib-audit-management', template: "<div class=\"card border-0\">\r\n <!-- <div class=\"card-header border-0 p-0\"> -->\r\n <!-- <h3 class=\"card-title align-items-start flex-column\">\r\n <span class=\"card-label fw-bold text-dark\">Audit Management</span> -->\r\n <!-- <p class=\"text-gray-400 fw-bold fs-5 mt-1\">\r\n Total {{datalist ? datalist?.totalStores:'0'}} Stores</p> -->\r\n <!-- </h3> -->\r\n <!-- <div class=\"card-toolbar \">\r\n <div class=\"d-flex\">\r\n <div class=\"d-flex align-items-center position-relative my-1\">\r\n <span class=\"svg-icon svg-icon-1 position-absolute ms-6\">\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\" (change)=\"searchData()\" [(ngModel)]=\"searchValue\" \r\n class=\"form-control w-300px ps-14\" name=\"search\" autocomplete=\"off\"\r\n placeholder=\"Search by Client Name / ID\" autocomplete=\"off\" />\r\n <div class=\"cursor-pointer ms-3\">\r\n <button class=\"btn btn-outline\" [disabled]=\"auditLoading || auditNoData\"\r\n (click)=\"exportAsXlsx()\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path 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\" stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg><span class=\"ms-2\">{{exportBtnText}}</span> </button></div>\r\n </div>\r\n </div>\r\n </div> -->\r\n <!-- </div> -->\r\n <div class=\"card-body px-0 pt-10\" *ngIf=\"!auditLoading && !auditNoData && selectedType ==='traffic'\">\r\n <div>\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('clientName')\">Client 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=\"#667085\" 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('clientId')\">Client 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=\"#667085\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span></div></th>\r\n <th>Pending Queue</th>\r\n <th>Pending User</th>\r\n <th>Completed</th>\r\n <th>Action</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let source of dataSource ; let i = index\">\r\n <td> {{source?.clientName}} \r\n <!-- <div class=\"d-flex mt-3\"> -->\r\n <span *ngIf=\"source?.isDraft\" class=\"badge badge-light-primary mx-2\">Draft</span>\r\n <span *ngIf=\"source?.isAssigned\" class=\"badge badge-light-primary mx-2\">Assigned</span>\r\n <!-- </div> -->\r\n </td>\r\n <td>{{source?.clientId ? source?.clientId : '--'}}</td>\r\n <td>{{source?.pendingByQueue ?? '--'}}</td>\r\n <td>{{source?.pendingByUser ?? '--'}}</td>\r\n <td> {{source?.completedCount ?? '--'}} \r\n <div *ngIf=\"source?.completedCount\" class=\"d-flex align-items-center mt-3\">\r\n <div class=\"w-10px h-10px rounded-5 bg-success me-5\"></div>\r\n <span>{{source?.completedRatio}} %</span>\r\n </div></td> \r\n <td><button class=\"btn btn-default btn btn-outline text-capitalize cursor-pointer\"\r\n (click)=\"mappingdata(source)\" [disabled]=\"!source?.isEnable\"> Start </button>\r\n <!-- *ngIf=\"!source?.isEnable\" -->\r\n <!-- <span class=\"badge py-3 px-4 fs-7 badge-light-secondary text-secondary text-capitalize\"\r\n >START</span> -->\r\n </td>\r\n </tr>\r\n </tbody>\r\n \r\n </table> \r\n </div>\r\n <lib-pagination [itemsPerPage]=\"size\" [currentPage]=\"offset\"\r\n [totalItems]=\"recordsTotal\" [paginationSizes]=\"paginationSizes\" [pageSize]=\"setpageSize()\"\r\n (pageChange)=\"onPageChange($event)\" (pageSizeChange)=\"onPageSizeChange($event)\"></lib-pagination>\r\n </div>\r\n </div>\r\n\r\n <div class=\"card-body px-0 pt-10\" *ngIf=\"!auditLoading && !auditNoData && selectedType ==='zone'\">\r\n <div>\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('clientName')\">Client 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=\"#667085\" 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('clientId')\">Client 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=\"#667085\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span></div></th>\r\n <th>Pending Queue</th>\r\n <th>Pending User</th>\r\n <th>Completed</th>\r\n <th>Action</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let source of dataSource ; let i = index\">\r\n <td> {{source?.clientName}} \r\n <!-- <div class=\"d-flex mt-3\"> -->\r\n <span *ngIf=\"source?.isDraft\" class=\"badge badge-light-primary mx-2\">Draft</span>\r\n <span *ngIf=\"source?.isAssigned\" class=\"badge badge-light-primary mx-2\">Assigned</span>\r\n <!-- </div> -->\r\n </td>\r\n <td>{{source?.clientId ? source?.clientId : '--'}}</td>\r\n <td>{{source?.pendingByQueue ?? '--'}}</td>\r\n <td>{{source?.pendingByUser ?? '--'}}</td>\r\n <td> {{source?.completedCount ?? '--'}} \r\n <div *ngIf=\"source?.completedCount\" class=\"d-flex align-items-center mt-3\">\r\n <div class=\"w-10px h-10px rounded-5 bg-success me-5\"></div>\r\n <span>{{source?.completedRatio}} %</span>\r\n </div></td> \r\n <td><button class=\"btn btn-default btn btn-outline text-capitalize cursor-pointer\"\r\n (click)=\"mappingdata(source)\" [disabled]=\"!source?.isEnable\"> Start </button>\r\n <!-- *ngIf=\"!source?.isEnable\" -->\r\n <!-- <span class=\"badge py-3 px-4 fs-7 badge-light-secondary text-secondary text-capitalize\"\r\n >START</span> -->\r\n </td>\r\n </tr>\r\n </tbody>\r\n \r\n </table> \r\n </div>\r\n <lib-pagination [itemsPerPage]=\"size\" [currentPage]=\"offset\"\r\n [totalItems]=\"recordsTotal\" [paginationSizes]=\"paginationSizes\" [pageSize]=\"setpageSize()\"\r\n (pageChange)=\"onPageChange($event)\" (pageSizeChange)=\"onPageSizeChange($event)\"></lib-pagination>\r\n </div>\r\n </div>\r\n\r\n <ng-container *ngIf=\"auditLoading\" >\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=\"auditNoData\">\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 w-25\" 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\r\n <!-- <app-date-range-picker name=\"app-range-picker-single\" type=\"single\" (change)=\"dateChanged($event)\"\r\n id=\"dateclass\">\r\n </app-date-range-picker> -->", styles: ["tr{vertical-align:middle!important}.scroll-y{overflow-y:auto!important;position:relative!important}input[type=date]{position:relative}input[type=date]::-webkit-calendar-picker-indicator{background-position:right;background-size:auto;cursor:pointer;position:absolute;bottom:10;left:0;right:0;top:5;width:auto}\n"] }]
194
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i1.Router }, { type: i2.TicketsService }, { type: i3.GlobalStateService }, { type: i4.NgbModal }], propDecorators: { searchAudit: [{
195
+ type: Input
196
+ }], selectedType: [{
197
+ type: Input
198
+ }], selectedClient: [{
158
199
  type: Input
159
200
  }] } });
160
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXVkaXQtbWFuYWdlbWVudC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby10aWNrZXQtdXNlci9zcmMvbGliL2NvbXBvbmVudHMvYXVkaXQtbWFuYWdlbWVudC9hdWRpdC1tYW5hZ2VtZW50LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RhbmdvLXRpY2tldC11c2VyL3NyYy9saWIvY29tcG9uZW50cy9hdWRpdC1tYW5hZ2VtZW50L2F1ZGl0LW1hbmFnZW1lbnQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBNEIsS0FBSyxFQUEwQixNQUFNLGVBQWUsQ0FBQztBQUVuRyxPQUFPLEtBQUssTUFBTSxPQUFPLENBQUM7Ozs7OztBQVExQixNQUFNLE9BQU8sd0JBQXdCO0lBZ0NmO0lBQ1Y7SUFBd0I7SUEvQmxDLFVBQVUsR0FBTyxFQUFFLENBQUM7SUFDcEIsSUFBSSxHQUFXLEVBQUUsQ0FBQztJQUNsQixNQUFNLEdBQVcsQ0FBQyxDQUFDO0lBQ25CLFdBQVcsR0FBUSxDQUFDLENBQUM7SUFDckIsU0FBUyxDQUFNO0lBQ2YsV0FBVyxDQUFNO0lBQ2pCLFNBQVMsR0FBRyxDQUFDLENBQUM7SUFDZCxPQUFPLEdBQUcsQ0FBQyxDQUFDO0lBQ1osT0FBTyxHQUFZLElBQUksQ0FBQztJQUN4QixPQUFPLEdBQVksSUFBSSxDQUFDO0lBQ3hCLGNBQWMsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUMxQixZQUFZLEdBQUcsQ0FBQyxDQUFDO0lBQ2pCLFlBQVksQ0FBTTtJQUNsQixZQUFZLEdBQUcsQ0FBQyxDQUFDO0lBQ2pCLFdBQVcsR0FBUSxFQUFFLENBQUM7SUFDdEIsWUFBWSxHQUFZLElBQUksQ0FBQztJQUM3QixXQUFXLEdBQVksS0FBSyxDQUFDO0lBQzdCLFNBQVMs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QXVHOEI7OzRGRDdGakIsd0JBQXdCO2tCQUxwQyxTQUFTOytCQUNFLHNCQUFzQjt3SUFtQ3ZCLFdBQVc7c0JBQW5CLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIENoYW5nZURldGVjdG9yUmVmLCBPbkluaXQsSW5wdXQsT25DaGFuZ2VzLFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IGRheWpzIGZyb20gJ2RheWpzJztcclxuaW1wb3J0IHsgVGlja2V0c1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy90aWNrZXQtaW5mcmEuc2VydmljZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi1hdWRpdC1tYW5hZ2VtZW50JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vYXVkaXQtbWFuYWdlbWVudC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL2F1ZGl0LW1hbmFnZW1lbnQuY29tcG9uZW50LnNjc3MnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBdWRpdE1hbmFnZW1lbnRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsT25DaGFuZ2VzIHtcclxuXHJcbiAgZGF0YVNvdXJjZTphbnkgPSBbXTtcclxuICBzaXplOiBudW1iZXIgPSAxMDtcclxuICBvZmZzZXQ6IG51bWJlciA9IDE7XHJcbiAgb2Zmc2V0dmFsdWU6IGFueSA9IDA7XHJcbiAgcGFnZVZhbHVlOiBhbnk7XHJcbiAgcGFnZURpc3BsYXk6IGFueTtcclxuICBwYWdlU3RhcnQgPSAwO1xyXG4gIHBhZ2VFbmQgPSA1O1xyXG4gIG5leHRidG46IGJvb2xlYW4gPSB0cnVlO1xyXG4gIGJhY2tidG46IGJvb2xlYW4gPSB0cnVlO1xyXG4gIHBhZ2luYXRpb25TaXplID0gWzEwLCAyMF07XHJcbiAgY3VycmVudFZhbHVlID0gMTtcclxuICByZWNvcmRzQ291bnQ6IGFueTtcclxuICByZWNvcmRzVG90YWwgPSAwO1xyXG4gIHNlYXJjaFZhbHVlOiBhbnkgPSAnJztcclxuICBhdWRpdExvYWRpbmc6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIGF1ZGl0Tm9EYXRhOiBib29sZWFuID0gZmFsc2U7XHJcbiAgc3VibWl0dGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgc2luZ2xlZGF0ZTogYW55O1xyXG4gIGV4cG9ydEJ0blRleHQgPSAnRXhwb3J0J1xyXG4gIGxvZ2RhdGE6IGFueTtcclxuICBhY3RpdmVsb2dub2RhdGE6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBmaWx0ZXI6IGFueSA9IDBcclxuICB1c2VyaW5mbzogYW55O1xyXG4gIGRheWpzID0gZGF5anM7XHJcbiAgY2FyZGRhdGE6IGFueTtcclxuICB1c2VyOiBhbnk7XHJcbiAgZGF0YWxpc3Q6IGFueTtcclxuICBpdGVtaGVpZ2h0OiBhbnk7XHJcbiAgQElucHV0KCkgc2VhcmNoQXVkaXQ6YW55O1xyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY2hhbmdlZGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlciwgcHJpdmF0ZSBhdWRpdDogVGlja2V0c1NlcnZpY2UpIHsgfVxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5zaXplID0gMTA7XHJcbiAgICBzZXNzaW9uU3RvcmFnZS5yZW1vdmVJdGVtKCdhdWRpdCcpXHJcbiAgICBzZXNzaW9uU3RvcmFnZS5yZW1vdmVJdGVtKCd0b3RhbGZpbGVzJylcclxuICAgIHNlc3Npb25TdG9yYWdlLnJlbW92ZUl0ZW0oJ2p1bmsnKVxyXG4gICAgc2Vzc2lvblN0b3JhZ2UucmVtb3ZlSXRlbSgnZW1wbG95ZWUnKVxyXG4gICAgc2Vzc2lvblN0b3JhZ2UucmVtb3ZlSXRlbSgncmV0YWcnKVxyXG5cclxuICAgIHRoaXMuc2luZ2xlZGF0ZSA9IHRoaXMuZGF5anMobmV3IERhdGUoKSkuZm9ybWF0KCdZWVlZLU1NLUREJylcclxuXHJcbiAgICBpZiAoJ3VzZXItaW5mbycgaW4gbG9jYWxTdG9yYWdlKSB7XHJcbiAgICAgIHRoaXMudXNlcmluZm8gPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKCd1c2VyLWluZm8nKSB8fCAne30nKVxyXG4gICAgICBjb25zb2xlLmxvZygndXNlcmluZm8nLHRoaXMudXNlcmluZm8pXHJcbiAgICAgIHRoaXMudXNlciA9IHRoaXMudXNlcmluZm8/LnVzZXIgIFxyXG4gICAgICAvLyB0aGlzLmdldGF1ZGl0Y2FyZCh0aGlzLmZpbHRlcilcclxuICAgICAgdGhpcy5zZWFyY2hEYXRhKHRoaXMuc2VhcmNoQXVkaXQpO1xyXG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbXCIvdGlja2V0cy91c2Vyc1wiXSwgeyBxdWVyeVBhcmFtczoge3R5cGU6J2F1ZGl0J30gfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmF1ZGl0LnVzZXJEZXRhaWxzKCkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChyZXMgJiYgcmVzLmRhdGEpIHtcclxuICAgICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCd1c2VyLWluZm8nLCBKU09OLnN0cmluZ2lmeShyZXMuZGF0YSkpO1xyXG4gICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW1wiL3RpY2tldHMvdXNlcnNcIl0sIHsgcXVlcnlQYXJhbXM6IHt0eXBlOidhdWRpdCd9IH0pO1xyXG5cclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gICAgICBpZihjaGFuZ2VzWydzZWFyY2hBdWRpdCddKXtcclxuICAgICAgICB0aGlzLnNlYXJjaERhdGEoY2hhbmdlc1snc2VhcmNoQXVkaXQnXS5jdXJyZW50VmFsdWUpO1xyXG4gICAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRhdWRpdGRhdGEoKSB7XHJcbiAgICBsZXQgaXNFeHBvcnQgPSBmYWxzZTtcclxuICAgIHRoaXMuYXVkaXQuZ2V0QXVkaXQodGhpcy5vZmZzZXQsIHBhcnNlSW50KHRoaXMuc2l6ZS50b1N0cmluZygpKSwgdGhpcy5zZWFyY2hBdWRpdCxpc0V4cG9ydCkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICBpZiAoIXJlcyB8fCByZXMuY29kZSA9PSAyMDQpIHtcclxuICAgICAgICB0aGlzLmF1ZGl0TG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuYXVkaXROb0RhdGEgPSB0cnVlO1xyXG4gICAgICB9IGVsc2UgaWYgKHJlcyAmJiByZXMuY29kZSA9PSAyMDApIHtcclxuICAgICAgICB0aGlzLmRhdGFsaXN0ID0gcmVzLmRhdGE7XHJcbiAgICAgICAgdGhpcy5kYXRhU291cmNlID0gcmVzPy5kYXRhPy5yZXN1bHQ7XHJcbiAgICAgICAgdGhpcy5yZWNvcmRzVG90YWwgPSByZXM/LmRhdGE/LmNvdW50O1xyXG4gICAgICAgIHRoaXMucmVjb3Jkc0NvdW50ID0gdGhpcy5kYXRhU291cmNlLmxlbmd0aFxyXG4gICAgICAgIGlmICh0aGlzLmRhdGFTb3VyY2UubGVuZ3RoKSB7XHJcbiAgICAgICAgICB0aGlzLmF1ZGl0TG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5hdWRpdE5vRGF0YSA9IGZhbHNlO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLmF1ZGl0TG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5hdWRpdE5vRGF0YSA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KVxyXG5cclxuICB9XHJcblxyXG4gIHNlYXJjaERhdGEodmFsdWU6YW55KSB7XHJcbiAgICB0aGlzLnNlYXJjaEF1ZGl0ID0gdmFsdWU7XHJcbiAgICB0aGlzLmdldGF1ZGl0ZGF0YSgpO1xyXG4gICAgLy8gdGhpcy5hdWRpdC5nZXRBdWRpdCgxLCBwYXJzZUludCh0aGlzLnNpemUudG9TdHJpbmcoKSksIHRoaXMuc2VhcmNoQXVkaXQsIHRoaXMudXNlcikuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgLy8gICBpZiAoIXJlcyB8fCByZXMuY29kZSA9PSAyMDQpIHtcclxuICAgIC8vICAgICB0aGlzLmF1ZGl0TG9hZGluZyA9IGZhbHNlO1xyXG4gICAgLy8gICAgIHRoaXMuYXVkaXROb0RhdGEgPSB0cnVlO1xyXG4gICAgLy8gICB9IGVsc2UgaWYgKHJlcyAmJiByZXMuY29kZSA9PSAyMDApIHtcclxuICAgIC8vICAgICB0aGlzLmN1cnJlbnRWYWx1ZSA9IDE7ICAgdGhpcy5wYWdlU3RhcnQgPTA7IHRoaXMucGFnZUVuZCA9NTtcclxuICAgIC8vICAgICB0aGlzLmRhdGFTb3VyY2UgPSByZXM/LmRhdGE/LnJlc3VsdDtcclxuICAgIC8vICAgICBpZiAodGhpcy5kYXRhU291cmNlLmxlbmd0aCkge1xyXG4gICAgLy8gICAgIH1cclxuICAgIC8vICAgICB0aGlzLnJlY29yZHNUb3RhbCA9IHJlcz8uZGF0YT8uY291bnQ7XHJcbiAgICAvLyAgICAgdGhpcy5yZWNvcmRzQ291bnQgPSB0aGlzLmRhdGFTb3VyY2UubGVuZ3RoXHJcbiAgICAvLyAgICAgaWYgKHRoaXMuZGF0YVNvdXJjZS5sZW5ndGgpIHtcclxuICAgIC8vICAgICAgIHRoaXMuYXVkaXRMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAvLyAgICAgICB0aGlzLmF1ZGl0Tm9EYXRhID0gZmFsc2U7XHJcbiAgICAvLyAgICAgfSBlbHNlIHtcclxuICAgIC8vICAgICAgIHRoaXMuYXVkaXRMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAvLyAgICAgICB0aGlzLmF1ZGl0Tm9EYXRhID0gdHJ1ZTtcclxuICAgIC8vICAgICB9XHJcbiAgICAvLyAgIH1cclxuICAgIC8vIH0pXHJcbiAgfVxyXG5cclxuICBtYXBwaW5nZGF0YShkYXRhOiBhbnkpIHtcclxuICBjb25zb2xlLmxvZ1xyXG4gICAgdmFyIG9iajogYW55ID0ge1xyXG4gICAgICB0b3RhbGZpbGVzOiB7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGlmICgndG90YWxmaWxlcycgaW4gc2Vzc2lvblN0b3JhZ2UpIHtcclxuXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBvYmoudG90YWxmaWxlcy5xdWV1ZU5hbWUgPSBkYXRhLnF1ZXVlTmFtZVxyXG4gICAgICBzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKCd0b3RhbGZpbGVzJywgSlNPTi5zdHJpbmdpZnkob2JqKSlcclxuICAgIH1cclxuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnL3RpY2tldHMvYXVkaXQnXSlcclxuXHJcbiAgfVxyXG4gIFxyXG4gIGRhdGVjaGFuZ2UoZGF0ZTogYW55KSB7XHJcbiAgICB0aGlzLnNpbmdsZWRhdGUgPSBkYXRlXHJcblxyXG4gIH1cclxuXHJcbiAgZ2V0VG9kYXkoKSB7XHJcbiAgICByZXR1cm4gbmV3IERhdGUoKS50b0lTT1N0cmluZygpLnNwbGl0KCdUJylbMF1cclxuIH1cclxuIG9uUGFnZUNoYW5nZShwYWdlT2Zmc2V0OmFueSl7XHJcbiAgIHRoaXMub2Zmc2V0ID0gcGFnZU9mZnNldDtcclxuICAgdGhpcy5nZXRhdWRpdGRhdGEoKTtcclxuIH1cclxuIG9uUGFnZVNpemVDaGFuZ2UocGFnZVNpemU6YW55KXtcclxuICAgIHRoaXMuc2l6ZSA9IHBhZ2VTaXplO1xyXG4gICAgdGhpcy5nZXRhdWRpdGRhdGEoKTtcclxuIH1cclxuXHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImNhcmQgYm9yZGVyLTBcIj5cclxuICAgIDwhLS0gPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyIGJvcmRlci0wIHAtMFwiPiAtLT5cclxuICAgICAgICA8IS0tIDxoMyBjbGFzcz1cImNhcmQtdGl0bGUgYWxpZ24taXRlbXMtc3RhcnQgZmxleC1jb2x1bW5cIj5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cImNhcmQtbGFiZWwgZnctYm9sZCB0ZXh0LWRhcmtcIj5BdWRpdCBNYW5hZ2VtZW50PC9zcGFuPiAtLT5cclxuICAgICAgICA8IS0tIDxwIGNsYXNzPVwidGV4dC1ncmF5LTQwMCBmdy1ib2xkIGZzLTUgbXQtMVwiPlxyXG4gICAgICAgICAgICBUb3RhbCB7e2RhdGFsaXN0ID8gZGF0YWxpc3Q/LnRvdGFsU3RvcmVzOicwJ319IFN0b3JlczwvcD4gLS0+XHJcbiAgICAgICAgPCEtLSA8L2gzPiAtLT5cclxuICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJjYXJkLXRvb2xiYXIgXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleFwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBwb3NpdGlvbi1yZWxhdGl2ZSBteS0xXCI+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3ZnLWljb24gc3ZnLWljb24tMSBwb3NpdGlvbi1hYnNvbHV0ZSBtcy02XCI+XHJcbiAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgIDxyZWN0IG9wYWNpdHk9XCIwLjVcIiB4PVwiMTcuMDM2NVwiIHk9XCIxNS4xMjIzXCIgd2lkdGg9XCI4LjE1NTQ2XCIgaGVpZ2h0PVwiMlwiIHJ4PVwiMVwiXHJcbiAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtPVwicm90YXRlKDQ1IDE3LjAzNjUgMTUuMTIyMylcIiBmaWxsPVwiY3VycmVudENvbG9yXCI+PC9yZWN0PlxyXG4gICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICBkPVwiTTExIDE5QzYuNTU1NTYgMTkgMyAxNS40NDQ0IDMgMTFDMyA2LjU1NTU2IDYuNTU1NTYgMyAxMSAzQzE1LjQ0NDQgMyAxOSA2LjU1NTU2IDE5IDExQzE5IDE1LjQ0NDQgMTUuNDQ0NCAxOSAxMSAxOVpNMTEgNUM3LjUzMzMzIDUgNSA3LjUzMzMzIDUgMTFDNSAxNC40NjY3IDcuNTMzMzMgMTcgMTEgMTdDMTQuNDY2NyAxNyAxNyAxNC40NjY3IDE3IDExQzE3IDcuNTMzMzMgMTQuNDY2NyA1IDExIDVaXCJcclxuICAgICAgICAgICAgICAgICAgICBmaWxsPVwiY3VycmVudENvbG9yXCI+PC9wYXRoPlxyXG4gICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgKGNoYW5nZSk9XCJzZWFyY2hEYXRhKClcIiBbKG5nTW9kZWwpXT1cInNlYXJjaFZhbHVlXCIgXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCB3LTMwMHB4IHBzLTE0XCIgbmFtZT1cInNlYXJjaFwiIGF1dG9jb21wbGV0ZT1cIm9mZlwiXHJcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlNlYXJjaCBieSBDbGllbnQgTmFtZSAvIElEXCIgYXV0b2NvbXBsZXRlPVwib2ZmXCIgLz5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImN1cnNvci1wb2ludGVyIG1zLTNcIj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLW91dGxpbmVcIiBbZGlzYWJsZWRdPVwiYXVkaXRMb2FkaW5nIHx8IGF1ZGl0Tm9EYXRhXCJcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJleHBvcnRBc1hsc3goKVwiPjxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTcuNSAxMi41VjE1LjgzMzNDMTcuNSAxNi4yNzU0IDE3LjMyNDQgMTYuNjk5MyAxNy4wMTE4IDE3LjAxMThDMTYuNjk5MyAxNy4zMjQ0IDE2LjI3NTQgMTcuNSAxNS44MzMzIDE3LjVINC4xNjY2N0MzLjcyNDY0IDE3LjUgMy4zMDA3MiAxNy4zMjQ0IDIuOTg4MTYgMTcuMDExOEMyLjY3NTU5IDE2LjY5OTMgMi41IDE2LjI3NTQgMi41IDE1LjgzMzNWMTIuNU0xNC4xNjY3IDYuNjY2NjdMMTAgMi41TTEwIDIuNUw1LjgzMzMzIDYuNjY2NjdNMTAgMi41VjEyLjVcIiBzdHJva2U9XCIjMzQ0MDU0XCIgc3Ryb2tlLXdpZHRoPVwiMS42N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cclxuICAgICAgICAgICAgICAgICAgICA8L3N2Zz48c3BhbiBjbGFzcz1cIm1zLTJcIj57e2V4cG9ydEJ0blRleHR9fTwvc3Bhbj4gPC9idXR0b24+PC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PiAtLT5cclxuICAgIDwhLS0gPC9kaXY+IC0tPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHkgcHgtMCBwdC0xMFwiICpuZ0lmPVwiIWF1ZGl0TG9hZGluZyAmJiAhYXVkaXROb0RhdGFcIj5cclxuICAgICAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1yZXNwb25zaXZlXCI+ICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz1cInRhYmxlIGJvdHRvbS1ib3JkZXIgdGV4dC1ub3dyYXBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGhlYWQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPkNsaWVudCBOYW1lPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPkNsaWVudCBJZDwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+UGVuZGluZyBRdWV1ZTwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+UGVuZGluZyBVc2VyPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5Db21wbGV0ZWQ8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+QWN0aW9uPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoZWFkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0Ym9keT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyICpuZ0Zvcj1cImxldCBzb3VyY2Ugb2YgZGF0YVNvdXJjZSA7IGxldCBpID0gaW5kZXhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57e3NvdXJjZT8uY2xpZW50TmFtZX19PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57e3NvdXJjZT8uY2xpZW50SWR9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3tzb3VyY2U/LnBlbmRpbmdCeVF1ZXVlID8gc291cmNlPy5wZW5kaW5nQnlRdWV1ZSA6Jy0tJ319PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57e3NvdXJjZT8ucGVuZGluZ0J5VXNlciA/IHNvdXJjZT8ucGVuZGluZ0J5VXNlciA6ICctLSd9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57e3NvdXJjZT8uY29tcGxldGVkQ291bnQgPyBzb3VyY2U/LmNvbXBsZXRlZENvdW50IDonLS0nfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD48YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1kZWZhdWx0IGJ0biBidG4tb3V0bGluZSB0ZXh0LWNhcGl0YWxpemUgY3Vyc29yLXBvaW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm1hcHBpbmdkYXRhKHNvdXJjZSlcIiBbZGlzYWJsZWRdPVwiIXNvdXJjZT8uaXNFbmFibGVcIiA+IFNUQVJUIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSAqbmdJZj1cIiFzb3VyY2U/LmlzRW5hYmxlXCIgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxzcGFuIGNsYXNzPVwiYmFkZ2UgcHktMyBweC00IGZzLTcgYmFkZ2UtbGlnaHQtc2Vjb25kYXJ5IHRleHQtc2Vjb25kYXJ5IHRleHQtY2FwaXRhbGl6ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+U1RBUlQ8L3NwYW4+IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPiAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8bGliLXBhZ2luYXRpb24gW2l0ZW1zUGVyUGFnZV09XCJzaXplXCIgW2N1cnJlbnRQYWdlXT1cIm9mZnNldFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdG90YWxJdGVtc109XCJyZWNvcmRzVG90YWxcIiBbcGFnaW5hdGlvblNpemVzXT1cIlsxMCwyMCwzMF1cIiBbcGFnZVNpemVdPVwic2l6ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAocGFnZUNoYW5nZSk9XCJvblBhZ2VDaGFuZ2UoJGV2ZW50KVwiIChwYWdlU2l6ZUNoYW5nZSk9XCJvblBhZ2VTaXplQ2hhbmdlKCRldmVudClcIj48L2xpYi1wYWdpbmF0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImF1ZGl0TG9hZGluZ1wiID5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBsb2FkZXIgIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNoaW1tZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid3JhcHBlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgdGl0bGVcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGxpbmtcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGRlc2NyaXB0aW9uXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNoaW1tZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid3JhcHBlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgdGl0bGVcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGxpbmtcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGRlc2NyaXB0aW9uXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImF1ZGl0Tm9EYXRhXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctMTIgbWItM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHkgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyIGZsZXgtY29sdW1uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJpbWctc3JjIHctMjVcIiBzcmM9XCIuL2Fzc2V0cy90YW5nby9JY29ucy9Ob2RhdGEuc3ZnXCIgYWx0PVwiXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8L2Rpdj4gXHJcbiAgXHJcbiAgICA8IS0tIDxhcHAtZGF0ZS1yYW5nZS1waWNrZXIgbmFtZT1cImFwcC1yYW5nZS1waWNrZXItc2luZ2xlXCIgdHlwZT1cInNpbmdsZVwiIChjaGFuZ2UpPVwiZGF0ZUNoYW5nZWQoJGV2ZW50KVwiXHJcbiAgICBpZD1cImRhdGVjbGFzc1wiPlxyXG4gIDwvYXBwLWRhdGUtcmFuZ2UtcGlja2VyPiAtLT4iXX0=
201
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXVkaXQtbWFuYWdlbWVudC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby10aWNrZXQtdXNlci9zcmMvbGliL2NvbXBvbmVudHMvYXVkaXQtbWFuYWdlbWVudC9hdWRpdC1tYW5hZ2VtZW50LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RhbmdvLXRpY2tldC11c2VyL3NyYy9saWIvY29tcG9uZW50cy9hdWRpdC1tYW5hZ2VtZW50L2F1ZGl0LW1hbmFnZW1lbnQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBNEIsS0FBSyxFQUFnRixNQUFNLGVBQWUsQ0FBQztBQUV6SixPQUFPLEtBQUssTUFBTSxPQUFPLENBQUM7QUFLMUIsT0FBTyxFQUFFLE9BQU8sRUFBYSxNQUFNLE1BQU0sQ0FBQzs7Ozs7Ozs7QUFPMUMsTUFBTSxPQUFPLHdCQUF3QjtJQTJDZjtJQUNWO0lBQXdCO0lBQThCO0lBQThCO0lBMUM5RixVQUFVLEdBQU8sRUFBRSxDQUFDO0lBQ3BCLElBQUksR0FBVyxFQUFFLENBQUM7SUFDbEIsTUFBTSxHQUFXLENBQUMsQ0FBQztJQUNuQixXQUFXLEdBQVEsQ0FBQyxDQUFDO0lBQ3JCLFNBQVMsQ0FBTTtJQUNmLFdBQVcsQ0FBTTtJQUNqQixTQUFTLEdBQUcsQ0FBQyxDQUFDO0lBQ2QsT0FBTyxHQUFHLENBQUMsQ0FBQztJQUNaLE9BQU8sR0FBWSxJQUFJLENBQUM7SUFDeEIsT0FBTyxHQUFZLElBQUksQ0FBQztJQUN4QixjQUFjLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDMUIsWUFBWSxHQUFHLENBQUMsQ0FBQztJQUNqQixZQUFZLENBQU07SUFDbEIsWUFBWSxHQUFHLENBQUMsQ0FBQztJQUNqQixXQUFXLEdBQVEsRUFBRSxDQUFDO0lBQ3RCLFlB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QztJQUN2QixDQUFDO0lBQ0QsUUFBUSxDQUFDLEtBQVM7UUFDakIsSUFBSSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUM7UUFDM0IsSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUMsQ0FBQztRQUNsQixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDckIsQ0FBQztJQUVELFdBQVc7UUFDVixJQUFHLElBQUksQ0FBQyxZQUFZLEdBQUcsRUFBRSxFQUFDO1lBQ3ZCLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQztTQUMzQjthQUFJO1lBQ0gsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDO1NBQ2xCO0lBQ0YsQ0FBQzt3R0EzS1csd0JBQXdCOzRGQUF4Qix3QkFBd0IseUxDZHJDLDBqZkE2TThCOzs0RkQvTGpCLHdCQUF3QjtrQkFMcEMsU0FBUzsrQkFDRSxzQkFBc0I7Z01BbUN2QixXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgQ2hhbmdlRGV0ZWN0b3JSZWYsIE9uSW5pdCxJbnB1dCxPbkNoYW5nZXMsU2ltcGxlQ2hhbmdlcywgT25EZXN0cm95LCBWaWV3Q2hpbGQsIHZpZXdDaGlsZCwgT3V0cHV0LEV2ZW50RW1pdHRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgZGF5anMgZnJvbSAnZGF5anMnO1xyXG5pbXBvcnQgeyBUaWNrZXRzU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3RpY2tldC1pbmZyYS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgR2xvYmFsU3RhdGVTZXJ2aWNlIH0gZnJvbSAndGFuZ28tYXBwLXVpLWdsb2JhbCc7XHJcbmltcG9ydCB7IE5nYk1vZGFsLE5nYkFjdGl2ZU1vZGFsIH0gZnJvbSAnQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAnO1xyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQgeyBTdWJqZWN0LCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLWF1ZGl0LW1hbmFnZW1lbnQnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9hdWRpdC1tYW5hZ2VtZW50LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybDogJy4vYXVkaXQtbWFuYWdlbWVudC5jb21wb25lbnQuc2NzcydcclxufSlcclxuZXhwb3J0IGNsYXNzIEF1ZGl0TWFuYWdlbWVudENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCxPbkNoYW5nZXMsT25EZXN0cm95IHtcclxuXHJcbiAgZGF0YVNvdXJjZTphbnkgPSBbXTtcclxuICBzaXplOiBudW1iZXIgPSAxMDtcclxuICBvZmZzZXQ6IG51bWJlciA9IDE7XHJcbiAgb2Zmc2V0dmFsdWU6IGFueSA9IDA7XHJcbiAgcGFnZVZhbHVlOiBhbnk7XHJcbiAgcGFnZURpc3BsYXk6IGFueTtcclxuICBwYWdlU3RhcnQgPSAwO1xyXG4gIHBhZ2VFbmQgPSA1O1xyXG4gIG5leHRidG46IGJvb2xlYW4gPSB0cnVlO1xyXG4gIGJhY2tidG46IGJvb2xlYW4gPSB0cnVlO1xyXG4gIHBhZ2luYXRpb25TaXplID0gWzEwLCAyMF07XHJcbiAgY3VycmVudFZhbHVlID0gMTtcclxuICByZWNvcmRzQ291bnQ6IGFueTtcclxuICByZWNvcmRzVG90YWwgPSAwO1xyXG4gIHNlYXJjaFZhbHVlOiBhbnkgPSAnJztcclxuICBhdWRpdExvYWRpbmc6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIGF1ZGl0Tm9EYXRhOiBib29sZWFuID0gZmFsc2U7XHJcbiAgc3VibWl0dGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgc2luZ2xlZGF0ZTogYW55O1xyXG4gIGV4cG9ydEJ0blRleHQgPSAnRXhwb3J0J1xyXG4gIGxvZ2RhdGE6IGFueTtcclxuICBhY3RpdmVsb2dub2RhdGE6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBmaWx0ZXI6IGFueSA9IDBcclxuICB1c2VyaW5mbzogYW55O1xyXG4gIGRheWpzID0gZGF5anM7XHJcbiAgY2FyZGRhdGE6IGFueTtcclxuICB1c2VyOiBhbnk7XHJcbiAgZGF0YWxpc3Q6IGFueTtcclxuICBpdGVtaGVpZ2h0OiBhbnk7XHJcbiAgQElucHV0KCkgc2VhcmNoQXVkaXQ6YW55O1xyXG4gIEBJbnB1dCgpIHNlbGVjdGVkVHlwZTphbnk7XHJcbiAgQElucHV0KCkgc2VsZWN0ZWRDbGllbnQ6YW55O1xyXG4gIC8vIHNlbGVjdGVkVHlwZTphbnkgPSAndHJhZmZpYyc7XHJcbiAgLy8gQE91dHB1dCgpIGNpbGRFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gIC8vIEBWaWV3Q2hpbGQoJ0F1ZGl0Wm9uZScpIEF1ZGl0Wm9uZTphbnk7XHJcbiAgc29ydENvbHVtTmFtZTogYW55ID0gJyc7XHJcbiAgc29ydEJ5OiBhbnkgPSAxO1xyXG4gIHByaXZhdGUgdW5zdWJzY3JpYmU6IFN1YnNjcmlwdGlvbltdID0gW107XHJcbiAgcHJpdmF0ZSByZWFkb25seSBkZXN0cm95JCA9IG5ldyBTdWJqZWN0KCk7XHJcbiAgaGVhZGVyRmlsdGVyOiBhbnk7XHJcbiAgcGFnaW5hdGlvblNpemVzOmFueSA9IFsxMCwyMCwzMF07XHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjaGFuZ2VkZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLCBwcml2YXRlIGF1ZGl0OiBUaWNrZXRzU2VydmljZSxwcml2YXRlIGdzOkdsb2JhbFN0YXRlU2VydmljZSxwcml2YXRlIG1vZGFsU2VydmljZTogTmdiTW9kYWwpIHsgfVxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5zaXplID0gMTA7XHJcbiAgICBzZXNzaW9uU3RvcmFnZS5yZW1vdmVJdGVtKCdhdWRpdCcpXHJcbiAgICBzZXNzaW9uU3RvcmFnZS5yZW1vdmVJdGVtKCd0b3RhbGZpbGVzJylcclxuICAgIHNlc3Npb25TdG9yYWdlLnJlbW92ZUl0ZW0oJ2p1bmsnKVxyXG4gICAgc2Vzc2lvblN0b3JhZ2UucmVtb3ZlSXRlbSgnZW1wbG95ZWUnKVxyXG4gICAgc2Vzc2lvblN0b3JhZ2UucmVtb3ZlSXRlbSgncmV0YWcnKVxyXG5cclxuICAgIHRoaXMuc2luZ2xlZGF0ZSA9IHRoaXMuZGF5anMobmV3IERhdGUoKSkuZm9ybWF0KCdZWVlZLU1NLUREJylcclxuXHJcbiAgICBpZiAoJ3VzZXItaW5mbycgaW4gbG9jYWxTdG9yYWdlKSB7XHJcbiAgICAgIHRoaXMudXNlcmluZm8gPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKCd1c2VyLWluZm8nKSB8fCAne30nKVxyXG4gICAgICB0aGlzLnVzZXIgPSB0aGlzLnVzZXJpbmZvPy51c2VyICBcclxuICAgICAgLy8gdGhpcy5nZXRhdWRpdGNhcmQodGhpcy5maWx0ZXIpXHJcbiAgICAgIHRoaXMuc2VhcmNoRGF0YSh0aGlzLnNlYXJjaEF1ZGl0KTtcclxuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW1wiL3RpY2tldHMvdXNlcnNcIl0sIHsgcXVlcnlQYXJhbXM6IHt0eXBlOidhdWRpdCd9IH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5hdWRpdC51c2VyRGV0YWlscygpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAocmVzICYmIHJlcy5kYXRhKSB7XHJcbiAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgndXNlci1pbmZvJywgSlNPTi5zdHJpbmdpZnkocmVzLmRhdGEpKTtcclxuICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtcIi90aWNrZXRzL3VzZXJzXCJdLCB7IHF1ZXJ5UGFyYW1zOiB7dHlwZTonYXVkaXQnfSB9KTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMudW5zdWJzY3JpYmUuZm9yRWFjaCgoc2IpID0+IHNiLnVuc3Vic2NyaWJlKCkpO1xyXG4gICAgdGhpcy5kZXN0cm95JC5uZXh0KHRydWUpO1xyXG4gICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gICAgICBpZihjaGFuZ2VzWydzZWFyY2hBdWRpdCddKXtcclxuICAgICAgICB0aGlzLnNlYXJjaERhdGEoY2hhbmdlc1snc2VhcmNoQXVkaXQnXS5jdXJyZW50VmFsdWUpO1xyXG4gICAgICB9XHJcbiAgICAgIGlmKGNoYW5nZXNbJ3NlbGVjdGVkVHlwZSddKXtcclxuICAgICAgICB0aGlzLmdldGF1ZGl0ZGF0YSgpO1xyXG4gICAgICAgIHRoaXMuc2l6ZSA9IDEwO1xyXG4gICAgICAgIHRoaXMub2Zmc2V0ID0gMTtcclxuICAgICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0YXVkaXRkYXRhKCkge1xyXG4gICAgbGV0IGlzRXhwb3J0ID0gZmFsc2U7XHJcbiAgICB0aGlzLmF1ZGl0LmdldEF1ZGl0KHRoaXMub2Zmc2V0LCBwYXJzZUludCh0aGlzLnNpemUudG9TdHJpbmcoKSksdGhpcy5zZWFyY2hBdWRpdCxpc0V4cG9ydCx0aGlzLnNlbGVjdGVkVHlwZSkuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDoocmVzOmFueSk9PntcclxuICAgICAgICBpZiAoIXJlcyB8fCByZXMuY29kZSA9PSAyMDQpIHtcclxuICAgICAgICAgIHRoaXMuYXVkaXRMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLmF1ZGl0Tm9EYXRhID0gdHJ1ZTtcclxuICAgICAgICB9IGVsc2UgaWYgKHJlcyAmJiByZXMuY29kZSA9PSAyMDApIHtcclxuICAgICAgICAgIHRoaXMuZGF0YWxpc3QgPSByZXMuZGF0YTtcclxuICAgICAgICAgIHRoaXMuZGF0YVNvdXJjZSA9IHJlcz8uZGF0YT8ucmVzdWx0O1xyXG4gICAgICAgICAgdGhpcy5yZWNvcmRzVG90YWwgPSByZXM/LmRhdGE/LmNvdW50O1xyXG4gICAgICAgICAgdGhpcy5yZWNvcmRzQ291bnQgPSB0aGlzLmRhdGFTb3VyY2UubGVuZ3RoXHJcbiAgICAgICAgICBpZih0aGlzLnJlY29yZHNUb3RhbCA8IDEwKXsgdGhpcy5wYWdpbmF0aW9uU2l6ZXMgPSBbdGhpcy5yZWNvcmRzVG90YWxdfWVsc2Uge3RoaXMucGFnaW5hdGlvblNpemVzID0gWzEwLDIwLDMwXX1cclxuICAgICAgICAgIGlmICh0aGlzLmRhdGFTb3VyY2UubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIHRoaXMuYXVkaXRMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuYXVkaXROb0RhdGEgPSBmYWxzZTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuYXVkaXRMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuYXVkaXROb0RhdGEgPSB0cnVlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gIFxyXG4gICAgICB9LFxyXG4gICAgICBlcnJvcjooZXJyOmFueSk9PiB7XHJcbiAgICAgICAgdGhpcy5hdWRpdExvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmF1ZGl0Tm9EYXRhID0gdHJ1ZTtcclxuICAgICAgfSxcclxuICAgICAgY29tcGxldGUoKSB7fVxyXG4gICAgfSlcclxuXHJcbiAgfVxyXG5cclxuICBzZWFyY2hEYXRhKHZhbHVlOmFueSkge1xyXG4gICAgdGhpcy5zZWFyY2hBdWRpdCA9IHZhbHVlO1xyXG4gICAgdGhpcy5nZXRhdWRpdGRhdGEoKTtcclxuICB9XHJcblxyXG4gIG1hcHBpbmdkYXRhKGRhdGE6IGFueSkge1xyXG4gICAgICB2YXIgb2JqOiBhbnkgPSB7XHJcbiAgICAgICAgdG90YWxmaWxlczoge1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBpZiAoJ3RvdGFsZmlsZXMnIGluIHNlc3Npb25TdG9yYWdlKSB7XHJcbiAgXHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgb2JqLnRvdGFsZmlsZXMucXVldWVOYW1lID0gZGF0YS5xdWV1ZU5hbWVcclxuICAgICAgICBzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKCd0b3RhbGZpbGVzJywgSlNPTi5zdHJpbmdpZnkob2JqKSlcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy90aWNrZXRzL2F1ZGl0J10seyBxdWVyeVBhcmFtczoge3R5cGU6IHRoaXMuc2VsZWN0ZWRUeXBlfSB9KVxyXG4gIH1cclxuICBcclxuICBkYXRlY2hhbmdlKGRhdGU6IGFueSkge1xyXG4gICAgdGhpcy5zaW5nbGVkYXRlID0gZGF0ZVxyXG4gIH1cclxuXHJcbiAgcmVkaXJlY3RUb3pvbmUoc291cmNlOmFueSl7XHJcbiAgICAgdGhpcy5zZWxlY3RlZENsaWVudCA9IHNvdXJjZT8uY2xpZW50SWQ7XHJcbiAgICAvLyAgdGhpcy5jaWxkRXZlbnQuZW1pdCh0aGlzLnNlbGVjdGVkQ2xpZW50KVxyXG4gIH1cclxuXHJcbiAgZ2V0VG9kYXkoKSB7XHJcbiAgICByZXR1cm4gbmV3IERhdGUoKS50b0lTT1N0cmluZygpLnNwbGl0KCdUJylbMF1cclxuIH1cclxuIG9uUGFnZUNoYW5nZShwYWdlT2Zmc2V0OmFueSl7XHJcbiAgIHRoaXMub2Zmc2V0ID0gcGFnZU9mZnNldDtcclxuICAgdGhpcy5nZXRhdWRpdGRhdGEoKTtcclxuIH1cclxuIG9uUGFnZVNpemVDaGFuZ2UocGFnZVNpemU6YW55KXtcclxuICAgIHRoaXMuc2l6ZSA9IHBhZ2VTaXplO1xyXG4gICAgdGhpcy5vZmZzZXQgPSAxO1xyXG4gICAgdGhpcy5nZXRhdWRpdGRhdGEoKTtcclxuIH1cclxuIHNvcnREYXRhKHZhbHVlOmFueSl7XHJcbiAgdGhpcy5zb3J0Q29sdW1OYW1lID0gdmFsdWU7XHJcbiAgdGhpcy5zb3J0QnkgKj0gLTE7XHJcbiAgdGhpcy5nZXRhdWRpdGRhdGEoKTtcclxuIH1cclxuXHJcbiBzZXRwYWdlU2l6ZSgpe1xyXG4gIGlmKHRoaXMucmVjb3Jkc1RvdGFsIDwgMTApe1xyXG4gICAgIHJldHVybiB0aGlzLnJlY29yZHNUb3RhbDtcclxuICB9ZWxzZXsgXHJcbiAgICByZXR1cm4gdGhpcy5zaXplO1xyXG4gIH1cclxuIH1cclxuXHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImNhcmQgYm9yZGVyLTBcIj5cclxuICAgIDwhLS0gPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyIGJvcmRlci0wIHAtMFwiPiAtLT5cclxuICAgICAgICA8IS0tIDxoMyBjbGFzcz1cImNhcmQtdGl0bGUgYWxpZ24taXRlbXMtc3RhcnQgZmxleC1jb2x1bW5cIj5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cImNhcmQtbGFiZWwgZnctYm9sZCB0ZXh0LWRhcmtcIj5BdWRpdCBNYW5hZ2VtZW50PC9zcGFuPiAtLT5cclxuICAgICAgICA8IS0tIDxwIGNsYXNzPVwidGV4dC1ncmF5LTQwMCBmdy1ib2xkIGZzLTUgbXQtMVwiPlxyXG4gICAgICAgICAgICBUb3RhbCB7e2RhdGFsaXN0ID8gZGF0YWxpc3Q/LnRvdGFsU3RvcmVzOicwJ319IFN0b3JlczwvcD4gLS0+XHJcbiAgICAgICAgPCEtLSA8L2gzPiAtLT5cclxuICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJjYXJkLXRvb2xiYXIgXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleFwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBwb3NpdGlvbi1yZWxhdGl2ZSBteS0xXCI+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3ZnLWljb24gc3ZnLWljb24tMSBwb3NpdGlvbi1hYnNvbHV0ZSBtcy02XCI+XHJcbiAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgIDxyZWN0IG9wYWNpdHk9XCIwLjVcIiB4PVwiMTcuMDM2NVwiIHk9XCIxNS4xMjIzXCIgd2lkdGg9XCI4LjE1NTQ2XCIgaGVpZ2h0PVwiMlwiIHJ4PVwiMVwiXHJcbiAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtPVwicm90YXRlKDQ1IDE3LjAzNjUgMTUuMTIyMylcIiBmaWxsPVwiY3VycmVudENvbG9yXCI+PC9yZWN0PlxyXG4gICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICBkPVwiTTExIDE5QzYuNTU1NTYgMTkgMyAxNS40NDQ0IDMgMTFDMyA2LjU1NTU2IDYuNTU1NTYgMyAxMSAzQzE1LjQ0NDQgMyAxOSA2LjU1NTU2IDE5IDExQzE5IDE1LjQ0NDQgMTUuNDQ0NCAxOSAxMSAxOVpNMTEgNUM3LjUzMzMzIDUgNSA3LjUzMzMzIDUgMTFDNSAxNC40NjY3IDcuNTMzMzMgMTcgMTEgMTdDMTQuNDY2NyAxNyAxNyAxNC40NjY3IDE3IDExQzE3IDcuNTMzMzMgMTQuNDY2NyA1IDExIDVaXCJcclxuICAgICAgICAgICAgICAgICAgICBmaWxsPVwiY3VycmVudENvbG9yXCI+PC9wYXRoPlxyXG4gICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgKGNoYW5nZSk9XCJzZWFyY2hEYXRhKClcIiBbKG5nTW9kZWwpXT1cInNlYXJjaFZhbHVlXCIgXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCB3LTMwMHB4IHBzLTE0XCIgbmFtZT1cInNlYXJjaFwiIGF1dG9jb21wbGV0ZT1cIm9mZlwiXHJcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlNlYXJjaCBieSBDbGllbnQgTmFtZSAvIElEXCIgYXV0b2NvbXBsZXRlPVwib2ZmXCIgLz5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImN1cnNvci1wb2ludGVyIG1zLTNcIj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLW91dGxpbmVcIiBbZGlzYWJsZWRdPVwiYXVkaXRMb2FkaW5nIHx8IGF1ZGl0Tm9EYXRhXCJcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJleHBvcnRBc1hsc3goKVwiPjxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTcuNSAxMi41VjE1LjgzMzNDMTcuNSAxNi4yNzU0IDE3LjMyNDQgMTYuNjk5MyAxNy4wMTE4IDE3LjAxMThDMTYuNjk5MyAxNy4zMjQ0IDE2LjI3NTQgMTcuNSAxNS44MzMzIDE3LjVINC4xNjY2N0MzLjcyNDY0IDE3LjUgMy4zMDA3MiAxNy4zMjQ0IDIuOTg4MTYgMTcuMDExOEMyLjY3NTU5IDE2LjY5OTMgMi41IDE2LjI3NTQgMi41IDE1LjgzMzNWMTIuNU0xNC4xNjY3IDYuNjY2NjdMMTAgMi41TTEwIDIuNUw1LjgzMzMzIDYuNjY2NjdNMTAgMi41VjEyLjVcIiBzdHJva2U9XCIjMzQ0MDU0XCIgc3Ryb2tlLXdpZHRoPVwiMS42N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cclxuICAgICAgICAgICAgICAgICAgICA8L3N2Zz48c3BhbiBjbGFzcz1cIm1zLTJcIj57e2V4cG9ydEJ0blRleHR9fTwvc3Bhbj4gPC9idXR0b24+PC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PiAtLT5cclxuICAgIDwhLS0gPC9kaXY+IC0tPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHkgcHgtMCBwdC0xMFwiICpuZ0lmPVwiIWF1ZGl0TG9hZGluZyAmJiAhYXVkaXROb0RhdGEgJiYgc2VsZWN0ZWRUeXBlID09PSd0cmFmZmljJ1wiPlxyXG4gICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1yZXNwb25zaXZlXCI+ICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPVwidGFibGUgYm90dG9tLWJvcmRlciB0ZXh0LW5vd3JhcFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoZWFkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+PGRpdiBjbGFzcz1cImN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cInNvcnREYXRhKCdjbGllbnROYW1lJylcIj5DbGllbnQgTmFtZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInNvcnRDb2x1bU5hbWUgPT09ICdjbGllbnROYW1lJyAmJiBzb3J0QnkgIT09IDEgfHwgc29ydENvbHVtTmFtZSAhPT0gJ2NsaWVudE5hbWUnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIxMlwiIHZpZXdCb3g9XCIwIDAgMTIgMTJcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTYuMDAwMTYgMS4zMzMzN1YxMC42NjY3TTYuMDAwMTYgMTAuNjY2N0wxMC42NjY4IDYuMDAwMDRNNi4wMDAxNiAxMC42NjY3TDEuMzMzNSA2LjAwMDA0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzY2NzA4NVwiIHN0cm9rZS13aWR0aD1cIjEuMzMzMzNcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJzb3J0Q29sdW1OYW1lID09PSAnY2xpZW50TmFtZScgJiYgc29ydEJ5ICE9PSAtMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTJcIiB2aWV3Qm94PVwiMCAwIDEyIDEyXCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk02LjAwMDE2IDEwLjY2NjdMNi4wMDAxNiAxLjMzMzM3TTYuMDAwMTYgMS4zMzMzN0wxLjMzMzUgNi4wMDAwNE02LjAwMDE2IDEuMzMzMzdMMTAuNjY2OCA2LjAwMDA0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzY2NzA4NVwiIHN0cm9rZS13aWR0aD1cIjEuMzMzMzNcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj48L2Rpdj48L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD48ZGl2IGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwic29ydERhdGEoJ2NsaWVudElkJylcIj5DbGllbnQgSWRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJzb3J0Q29sdW1OYW1lID09PSAnY2xpZW50SWQnICYmIHNvcnRCeSAhPT0gMSB8fCBzb3J0Q29sdW1OYW1lICE9PSAnY2xpZW50SWQnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIxMlwiIHZpZXdCb3g9XCIwIDAgMTIgMTJcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTYuMDAwMTYgMS4zMzMzN1YxMC42NjY3TTYuMDAwMTYgMTAuNjY2N0wxMC42NjY4IDYuMDAwMDRNNi4wMDAxNiAxMC42NjY3TDEuMzMzNSA2LjAwMDA0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzY2NzA4NVwiIHN0cm9rZS13aWR0aD1cIjEuMzMzMzNcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJzb3J0Q29sdW1OYW1lID09PSAnY2xpZW50SWQnICYmIHNvcnRCeSAhPT0gLTFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCIgdmlld0JveD1cIjAgMCAxMiAxMlwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNNi4wMDAxNiAxMC42NjY3TDYuMDAwMTYgMS4zMzMzN002LjAwMDE2IDEuMzMzMzdMMS4zMzM1IDYuMDAwMDRNNi4wMDAxNiAxLjMzMzM3TDEwLjY2NjggNi4wMDAwNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM2NjcwODVcIiBzdHJva2Utd2lkdGg9XCIxLjMzMzMzXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+PC9kaXY+PC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPlBlbmRpbmcgUXVldWU8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+UGVuZGluZyBVc2VyPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPkNvbXBsZXRlZDwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPkFjdGlvbjwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGhlYWQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGJvZHk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyICpuZ0Zvcj1cImxldCBzb3VyY2Ugb2YgZGF0YVNvdXJjZSA7IGxldCBpID0gaW5kZXhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPiB7e3NvdXJjZT8uY2xpZW50TmFtZX19IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwiZC1mbGV4IG10LTNcIj4gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJzb3VyY2U/LmlzRHJhZnRcIiBjbGFzcz1cImJhZGdlIGJhZGdlLWxpZ2h0LXByaW1hcnkgbXgtMlwiPkRyYWZ0PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwic291cmNlPy5pc0Fzc2lnbmVkXCIgY2xhc3M9XCJiYWRnZSBiYWRnZS1saWdodC1wcmltYXJ5IG14LTJcIj5Bc3NpZ25lZDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPC9kaXY+IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3tzb3VyY2U/LmNsaWVudElkID8gc291cmNlPy5jbGllbnRJZCA6ICctLSd9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57e3NvdXJjZT8ucGVuZGluZ0J5UXVldWUgPz8gJy0tJ319PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7c291cmNlPy5wZW5kaW5nQnlVc2VyID8/ICctLSd9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4ge3tzb3VyY2U/LmNvbXBsZXRlZENvdW50ID8/ICctLSd9fSBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJzb3VyY2U/LmNvbXBsZXRlZENvdW50XCIgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIG10LTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidy0xMHB4IGgtMTBweCByb3VuZGVkLTUgYmctc3VjY2VzcyBtZS01XCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3tzb3VyY2U/LmNvbXBsZXRlZFJhdGlvfX0gJTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PjwvdGQ+IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD48YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1kZWZhdWx0IGJ0biBidG4tb3V0bGluZSB0ZXh0LWNhcGl0YWxpemUgY3Vyc29yLXBvaW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwibWFwcGluZ2RhdGEoc291cmNlKVwiIFtkaXNhYmxlZF09XCIhc291cmNlPy5pc0VuYWJsZVwiPiBTdGFydCA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSAqbmdJZj1cIiFzb3VyY2U/LmlzRW5hYmxlXCIgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPHNwYW4gY2xhc3M9XCJiYWRnZSBweS0zIHB4LTQgZnMtNyBiYWRnZS1saWdodC1zZWNvbmRhcnkgdGV4dC1zZWNvbmRhcnkgdGV4dC1jYXBpdGFsaXplXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlNUQVJUPC9zcGFuPiAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3Rib2R5PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+ICAgXHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8bGliLXBhZ2luYXRpb24gW2l0ZW1zUGVyUGFnZV09XCJzaXplXCIgW2N1cnJlbnRQYWdlXT1cIm9mZnNldFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFt0b3RhbEl0ZW1zXT1cInJlY29yZHNUb3RhbFwiIFtwYWdpbmF0aW9uU2l6ZXNdPVwicGFnaW5hdGlvblNpemVzXCIgW3BhZ2VTaXplXT1cInNldHBhZ2VTaXplKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAocGFnZUNoYW5nZSk9XCJvblBhZ2VDaGFuZ2UoJGV2ZW50KVwiIChwYWdlU2l6ZUNoYW5nZSk9XCJvblBhZ2VTaXplQ2hhbmdlKCRldmVudClcIj48L2xpYi1wYWdpbmF0aW9uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keSBweC0wIHB0LTEwXCIgKm5nSWY9XCIhYXVkaXRMb2FkaW5nICYmICFhdWRpdE5vRGF0YSAmJiBzZWxlY3RlZFR5cGUgPT09J3pvbmUnXCI+XHJcbiAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtcmVzcG9uc2l2ZVwiPiAgXHJcbiAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPVwidGFibGUgYm90dG9tLWJvcmRlciB0ZXh0LW5vd3JhcFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGhlYWQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+PGRpdiBjbGFzcz1cImN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cInNvcnREYXRhKCdjbGllbnROYW1lJylcIj5DbGllbnQgTmFtZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwic29ydENvbHVtTmFtZSA9PT0gJ2NsaWVudE5hbWUnICYmIHNvcnRCeSAhPT0gMSB8fCBzb3J0Q29sdW1OYW1lICE9PSAnY2xpZW50TmFtZSdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTJcIiB2aWV3Qm94PVwiMCAwIDEyIDEyXCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTYuMDAwMTYgMS4zMzMzN1YxMC42NjY3TTYuMDAwMTYgMTAuNjY2N0wxMC42NjY4IDYuMDAwMDRNNi4wMDAxNiAxMC42NjY3TDEuMzMzNSA2LjAwMDA0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMS4zMzMzM1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInNvcnRDb2x1bU5hbWUgPT09ICdjbGllbnROYW1lJyAmJiBzb3J0QnkgIT09IC0xXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCIgdmlld0JveD1cIjAgMCAxMiAxMlwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk02LjAwMDE2IDEwLjY2NjdMNi4wMDAxNiAxLjMzMzM3TTYuMDAwMTYgMS4zMzMzN0wxLjMzMzUgNi4wMDAwNE02LjAwMDE2IDEuMzMzMzdMMTAuNjY2OCA2LjAwMDA0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMS4zMzMzM1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj48L2Rpdj48L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPjxkaXYgY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJzb3J0RGF0YSgnY2xpZW50SWQnKVwiPkNsaWVudCBJZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwic29ydENvbHVtTmFtZSA9PT0gJ2NsaWVudElkJyAmJiBzb3J0QnkgIT09IDEgfHwgc29ydENvbHVtTmFtZSAhPT0gJ2NsaWVudElkJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIxMlwiIHZpZXdCb3g9XCIwIDAgMTIgMTJcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNNi4wMDAxNiAxLjMzMzM3VjEwLjY2NjdNNi4wMDAxNiAxMC42NjY3TDEwLjY2NjggNi4wMDAwNE02LjAwMDE2IDEwLjY2NjdMMS4zMzM1IDYuMDAwMDRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM2NjcwODVcIiBzdHJva2Utd2lkdGg9XCIxLjMzMzMzXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwic29ydENvbHVtTmFtZSA9PT0gJ2NsaWVudElkJyAmJiBzb3J0QnkgIT09IC0xXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCIgdmlld0JveD1cIjAgMCAxMiAxMlwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk02LjAwMDE2IDEwLjY2NjdMNi4wMDAxNiAxLjMzMzM3TTYuMDAwMTYgMS4zMzMzN0wxLjMzMzUgNi4wMDAwNE02LjAwMDE2IDEuMzMzMzdMMTAuNjY2OCA2LjAwMDA0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMS4zMzMzM1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj48L2Rpdj48L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5QZW5kaW5nIFF1ZXVlPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+UGVuZGluZyBVc2VyPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+Q29tcGxldGVkPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5BY3Rpb248L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC90aGVhZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRib2R5PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyICpuZ0Zvcj1cImxldCBzb3VyY2Ugb2YgZGF0YVNvdXJjZSA7IGxldCBpID0gaW5kZXhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+IHt7c291cmNlPy5jbGllbnROYW1lfX0gXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cImQtZmxleCBtdC0zXCI+IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJzb3VyY2U/LmlzRHJhZnRcIiBjbGFzcz1cImJhZGdlIGJhZGdlLWxpZ2h0LXByaW1hcnkgbXgtMlwiPkRyYWZ0PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJzb3VyY2U/LmlzQXNzaWduZWRcIiBjbGFzcz1cImJhZGdlIGJhZGdlLWxpZ2h0LXByaW1hcnkgbXgtMlwiPkFzc2lnbmVkPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDwvZGl2PiAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57e3NvdXJjZT8uY2xpZW50SWQgPyBzb3VyY2U/LmNsaWVudElkIDogJy0tJ319PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3tzb3VyY2U/LnBlbmRpbmdCeVF1ZXVlID8/ICctLSd9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7c291cmNlPy5wZW5kaW5nQnlVc2VyID8/ICctLSd9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPiB7e3NvdXJjZT8uY29tcGxldGVkQ291bnQgPz8gJy0tJ319IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwic291cmNlPy5jb21wbGV0ZWRDb3VudFwiIGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBtdC0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidy0xMHB4IGgtMTBweCByb3VuZGVkLTUgYmctc3VjY2VzcyBtZS01XCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57e3NvdXJjZT8uY29tcGxldGVkUmF0aW99fSAlPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj48L3RkPiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD48YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1kZWZhdWx0IGJ0biBidG4tb3V0bGluZSB0ZXh0LWNhcGl0YWxpemUgY3Vyc29yLXBvaW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJtYXBwaW5nZGF0YShzb3VyY2UpXCIgW2Rpc2FibGVkXT1cIiFzb3VyY2U/LmlzRW5hYmxlXCI+IFN0YXJ0IDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gKm5nSWY9XCIhc291cmNlPy5pc0VuYWJsZVwiIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPHNwYW4gY2xhc3M9XCJiYWRnZSBweS0zIHB4LTQgZnMtNyBiYWRnZS1saWdodC1zZWNvbmRhcnkgdGV4dC1zZWNvbmRhcnkgdGV4dC1jYXBpdGFsaXplXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+U1RBUlQ8L3NwYW4+IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIDwvdGFibGU+ICAgXHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGxpYi1wYWdpbmF0aW9uIFtpdGVtc1BlclBhZ2VdPVwic2l6ZVwiIFtjdXJyZW50UGFnZV09XCJvZmZzZXRcIlxyXG4gICAgICAgICAgICAgICAgICAgIFt0b3RhbEl0ZW1zXT1cInJlY29yZHNUb3RhbFwiIFtwYWdpbmF0aW9uU2l6ZXNdPVwicGFnaW5hdGlvblNpemVzXCIgW3BhZ2VTaXplXT1cInNldHBhZ2VTaXplKClcIlxyXG4gICAgICAgICAgICAgICAgICAgIChwYWdlQ2hhbmdlKT1cIm9uUGFnZUNoYW5nZSgkZXZlbnQpXCIgKHBhZ2VTaXplQ2hhbmdlKT1cIm9uUGFnZVNpemVDaGFuZ2UoJGV2ZW50KVwiPjwvbGliLXBhZ2luYXRpb24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJhdWRpdExvYWRpbmdcIiA+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbG9hZGVyICBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaGltbWVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndyYXBwZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIHRpdGxlXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBsaW5rXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBkZXNjcmlwdGlvblwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaGltbWVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndyYXBwZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIHRpdGxlXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBsaW5rXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBkZXNjcmlwdGlvblwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJhdWRpdE5vRGF0YVwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTEyIG1iLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlciBmbGV4LWNvbHVtblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aW1nIGNsYXNzPVwiaW1nLXNyYyB3LTI1XCIgc3JjPVwiLi9hc3NldHMvdGFuZ28vSWNvbnMvTm9kYXRhLnN2Z1wiIGFsdD1cIlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPC9kaXY+IFxyXG5cclxuICAgIDwhLS0gPGFwcC1kYXRlLXJhbmdlLXBpY2tlciBuYW1lPVwiYXBwLXJhbmdlLXBpY2tlci1zaW5nbGVcIiB0eXBlPVwic2luZ2xlXCIgKGNoYW5nZSk9XCJkYXRlQ2hhbmdlZCgkZXZlbnQpXCJcclxuICAgIGlkPVwiZGF0ZWNsYXNzXCI+XHJcbiAgPC9hcHAtZGF0ZS1yYW5nZS1waWNrZXI+IC0tPiJdfQ==