tango-app-ui-ticket-user 3.0.2-dev → 3.0.4-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 (25) hide show
  1. package/esm2022/lib/components/contact-details/contact-details.component.mjs +8 -7
  2. package/esm2022/lib/components/edge-cameraview/edge-cameraview.component.mjs +13 -10
  3. package/esm2022/lib/components/edgeapp-log/edgeapp-log.component.mjs +35 -9
  4. package/esm2022/lib/components/edit-details/edit-details.component.mjs +3 -3
  5. package/esm2022/lib/components/infratickets/infratickets.component.mjs +8 -7
  6. package/esm2022/lib/components/store-activity/store-activity.component.mjs +45 -58
  7. package/esm2022/lib/components/store-info/store-info.component.mjs +8 -6
  8. package/esm2022/lib/components/takeremote/takeremote.component.mjs +6 -6
  9. package/esm2022/lib/components/tango-ticket-users/tango-ticket-users.component.mjs +5 -5
  10. package/esm2022/lib/components/tickets/tickets.component.mjs +27 -18
  11. package/esm2022/lib/services/data.service.mjs +3 -3
  12. package/esm2022/lib/services/ticket-infra.service.mjs +5 -5
  13. package/esm2022/lib/tango-ticket-users-routing.module.mjs +4 -4
  14. package/esm2022/lib/tango-ticket-users.module.mjs +4 -4
  15. package/fesm2022/tango-app-ui-ticket-user.mjs +157 -132
  16. package/fesm2022/tango-app-ui-ticket-user.mjs.map +1 -1
  17. package/lib/components/contact-details/contact-details.component.d.ts +2 -2
  18. package/lib/components/edge-cameraview/edge-cameraview.component.d.ts +5 -4
  19. package/lib/components/edgeapp-log/edgeapp-log.component.d.ts +5 -0
  20. package/lib/components/infratickets/infratickets.component.d.ts +1 -1
  21. package/lib/components/store-activity/store-activity.component.d.ts +4 -8
  22. package/lib/components/tango-ticket-users/tango-ticket-users.component.d.ts +1 -1
  23. package/lib/components/tickets/tickets.component.d.ts +3 -1
  24. package/lib/services/ticket-infra.service.d.ts +1 -1
  25. package/package.json +1 -1
@@ -1,18 +1,11 @@
1
1
  import { Component, HostListener, Input } from '@angular/core';
2
- import dayjs from 'dayjs';
3
- import 'dayjs/locale/en';
4
- import utc from 'dayjs/plugin/utc';
5
- import timezone from 'dayjs/plugin/timezone';
6
2
  import { Subject, takeUntil } from 'rxjs';
7
3
  import * as i0 from "@angular/core";
8
4
  import * as i1 from "../../services/ticket-infra.service";
9
5
  import * as i2 from "../../services/data.service";
10
- import * as i3 from "tango-app-ui-shared";
6
+ import * as i3 from "tango-app-ui-global";
11
7
  import * as i4 from "@angular/common";
12
- import * as i5 from "@angular/forms";
13
- import * as i6 from "ngx-daterangepicker-material";
14
- dayjs.extend(utc);
15
- dayjs.extend(timezone);
8
+ import * as i5 from "tango-app-ui-shared";
16
9
  export class StoreActivityComponent {
17
10
  service;
18
11
  dataservice;
@@ -20,13 +13,13 @@ export class StoreActivityComponent {
20
13
  gs;
21
14
  selectCard;
22
15
  state;
23
- filteredIssue = 'Camera Issues';
16
+ filteredIssue = '';
24
17
  selectedIssue = 'internet';
25
18
  updated = true;
26
19
  noData = false;
27
20
  loading = true;
28
21
  storeTicket;
29
- viewTickets;
22
+ ticketInfo;
30
23
  resolvedIssue = true;
31
24
  issueObject = ['Store Operation Issue', 'Internet Issue', 'Camera Issue', 'System Issue', 'Application Issue'];
32
25
  dropDown = false;
@@ -35,12 +28,11 @@ export class StoreActivityComponent {
35
28
  ticketId;
36
29
  dateRangeFilter;
37
30
  ticketCard;
38
- viewTicketList;
31
+ viewTicketData;
39
32
  headerFilter;
40
33
  user;
41
34
  destroy$ = new Subject();
42
35
  storeId;
43
- dayjs = dayjs;
44
36
  constructor(service, dataservice, cd, gs) {
45
37
  this.service = service;
46
38
  this.dataservice = dataservice;
@@ -125,12 +117,13 @@ export class StoreActivityComponent {
125
117
  };
126
118
  this.service.viewTicket(data).subscribe({
127
119
  next: (res) => {
128
- if (res && res.code == 200 && Array.isArray(res.data.ticketActivity)) {
129
- this.viewTickets = res?.data;
130
- this.viewTicketList = res?.data?.ticketActivity.slice().reverse();
131
- // this.viewTicketList.forEach((e: any) => {
132
- // e.timeStamp = this.getRelativeTime(e.timeStamp);
133
- // });
120
+ if (res && res.code == 200) {
121
+ this.ticketInfo = res?.data;
122
+ this.viewTicketData = res.data.ticketActivity.slice().reverse();
123
+ this.viewTicketData.forEach((e) => {
124
+ e.timeStamp = this.getRelativeTime(e.timeStamp);
125
+ });
126
+ this.viewTicketData = this.viewTicketData.filter((e) => e.actionType != "statusCheck");
134
127
  this.cd.detectChanges();
135
128
  }
136
129
  },
@@ -140,6 +133,27 @@ export class StoreActivityComponent {
140
133
  },
141
134
  });
142
135
  }
136
+ getRelativeTime(timestamp) {
137
+ const date = new Date(timestamp);
138
+ const currentDate = new Date();
139
+ const difference = currentDate.getTime() - date.getTime();
140
+ const seconds = Math.floor(difference / 1000);
141
+ const minutes = Math.floor(seconds / 60);
142
+ const hours = Math.floor(minutes / 60);
143
+ const days = Math.floor(hours / 24);
144
+ if (days > 0) {
145
+ return days === 1 ? '1 day ago' : `${days} days ago`;
146
+ }
147
+ else if (hours > 0) {
148
+ return hours === 1 ? '1 hour ago' : `${hours} hours ago`;
149
+ }
150
+ else if (minutes > 0) {
151
+ return minutes === 1 ? '1 minute ago' : `${minutes} minutes ago`;
152
+ }
153
+ else {
154
+ return 'Just now';
155
+ }
156
+ }
143
157
  exportStoreListasXlsx() {
144
158
  let data = {
145
159
  storeId: this.storeId,
@@ -169,56 +183,29 @@ export class StoreActivityComponent {
169
183
  this.storeTicketList();
170
184
  }
171
185
  selectItem(value) {
172
- this.filteredIssue = value;
186
+ if (value === 'All') {
187
+ this.filteredIssue = '';
188
+ }
189
+ else {
190
+ this.filteredIssue = value;
191
+ }
173
192
  this.dropDown = false;
193
+ this.storeTicketList();
174
194
  }
175
195
  openDropdown(event) {
176
196
  event.stopPropagation();
177
197
  this.dropDown = !this.dropDown;
178
198
  }
179
- ranges = {
180
- 'Today': [this.dayjs(), this.dayjs()],
181
- 'Yesterday': [this.dayjs().subtract(1, 'days'), this.dayjs().subtract(1, 'days')],
182
- 'This Week': [this.dayjs().subtract(6, 'days'), this.dayjs()],
183
- 'Last Week': [this.dayjs().subtract(14, 'days').startOf('days'), this.dayjs().subtract(8, 'days').endOf('days')],
184
- 'This Month': [this.dayjs().startOf('month'), this.dayjs().endOf('month')],
185
- 'Last Month': [
186
- this.dayjs().subtract(1, 'month').startOf('month'),
187
- this.dayjs().subtract(1, 'month').endOf('month')
188
- ]
189
- };
190
- datechange(event) {
191
- if (event && event.startDate && event.endDate) {
192
- if (this.dayjs(event.startDate).isValid() && this.dayjs(event.endDate).isValid()) {
193
- // Dates are valid, proceed with formatting
194
- this.selectedDateRange.startDate = this.dayjs(event.startDate).utc().format('DD-MM-YYYY');
195
- this.selectedDateRange.endDate = this.dayjs(event.endDate).utc().format('DD-MM-YYYY');
196
- }
197
- else {
198
- // Dates are not valid, handle the scenario accordingly
199
- console.error('Invalid dates provided:', event.startDate, event.endDate);
200
- // If you want to fallback to stored filters when the dates are invalid, you can keep the existing logic
201
- const storedFilters = JSON.parse(localStorage.getItem('dateRangeFilters') || '{}');
202
- if (storedFilters.startDate && storedFilters.endDate) {
203
- this.selectedDateRange.startDate = this.dayjs(storedFilters.startDate).format('DD-MM-YYYY');
204
- this.selectedDateRange.endDate = this.dayjs(storedFilters.endDate).format('DD-MM-YYYY');
205
- }
206
- }
207
- }
208
- else {
209
- console.error('Invalid event object:', event);
210
- }
211
- }
212
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: StoreActivityComponent, deps: [{ token: i1.TicketsService }, { token: i2.DataService }, { token: i0.ChangeDetectorRef }, { token: i3.GlobalStateService }], target: i0.ɵɵFactoryTarget.Component });
213
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.8", type: StoreActivityComponent, selector: "lib-store-activity", inputs: { storeId: "storeId" }, host: { listeners: { "document:click": "onClick($event)" } }, ngImport: i0, template: "<div class=\"card\">\r\n <div class=\"card-header border-0\">\r\n <div class=\"card-title flex-column\"> \r\n <span class=\"card-label\">\r\n Activity \r\n </span>\r\n <span class=\"text-sub\">\r\n An overview of the store issues and the downtime for 02 July, 2023\r\n </span>\r\n </div>\r\n <div class=\"card-toolbar\">\r\n <div class=\"position-relative\">\r\n <button type=\"button\" (click)=\"openDropdown($event)\"\r\n class=\"btn btn-default mx-2 btn-outline btn-outline-default rounded-3 text-nowrap border-val\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\" viewBox=\"0 0 20 21\" fill=\"none\">\r\n <path d=\"M5 10.0264H15M2.5 5.02637H17.5M7.5 15.0264H12.5\" stroke=\"#344054\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n <span class=\"ms-2\">Filter</span> </button>\r\n <div *ngIf=\"dropDown\" class=\"card py-1 w-200px position-absolute top-50px end-0 z-1\">\r\n <ul *ngFor=\"let item of dropdownItems\" class=\"list-unstyled\">\r\n <li [ngClass]=\"this.filteredIssue == item ? 'active' : ''\" class=\"camera px-5 items fw-semibold cursor-pointer py-2\" (click)=\"selectItem(item)\">{{item}}</li>\r\n </ul>\r\n </div>\r\n </div>\r\n <div class=\"btn btn-default btn-outline\" (click)=\"exportStoreListasXlsx()\">\r\n <span><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\" viewBox=\"0 0 20 21\" fill=\"none\">\r\n <path d=\"M17.5 12.5264V15.8597C17.5 16.3017 17.3244 16.7257 17.0118 17.0382C16.6993 17.3508 16.2754 17.5264 15.8333 17.5264H4.16667C3.72464 17.5264 3.30072 17.3508 2.98816 17.0382C2.67559 16.7257 2.5 16.3017 2.5 15.8597V12.5264M14.1667 6.69303L10 2.52637M10 2.52637L5.83333 6.69303M10 2.52637V12.5264\" stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg></span> Export\r\n </div>\r\n <div class=\"d-flex align-items-center position-relative my-1 ms-3\">\r\n <span class=\"svg-icon svg-icon-1 position-absolute ms-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M13.3333 1.66663V4.99996M6.66667 1.66663V4.99996M2.5 8.33329H17.5M4.16667 3.33329H15.8333C16.7538 3.33329 17.5 4.07948 17.5 4.99996V16.6666C17.5 17.5871 16.7538 18.3333 15.8333 18.3333H4.16667C3.24619 18.3333 2.5 17.5871 2.5 16.6666V4.99996C2.5 4.07948 3.24619 3.33329 4.16667 3.33329Z\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <input class=\"fx-date-range form-control ps-14\" type=\"text\" matInput ngxDaterangepickerMd [drops]=\"'down'\"\r\n [opens]=\"'right'\" [ranges]=\"ranges\" [showCustomRangeLabel]=\"true\" [alwaysShowCalendars]=\"false\"\r\n [keepCalendarOpeningWithRange]=\"true\" [showCancel]=\"true\" autocomplete=\"off\" [(ngModel)]=\"selectedDateRange\"\r\n [locale]=\"{ format: 'DD-MM-YYYY', firstDay: 1, monthNames: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'] }\"\r\n (datesUpdated)=\"datechange($event)\" name=\"daterange\" />\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"card-body\">\r\n <div class=\"d-flex\">\r\n <div *ngFor=\"let issue of ticketCard\" class=\"card card-view p-5 me-5\">\r\n <span class=\"title fw-bold\">{{issue.count}}</span>\r\n <span class=\"sub-title fw-semibold\">{{issue.name}}</span>\r\n </div>\r\n </div>\r\n <div class=\"rounded-3 border border-gray border-1 mt-5\">\r\n <div *ngIf=\"!loading && !noData\" class=\"row p-5\">\r\n <div class=\"col-sm-6\">\r\n <div *ngFor=\"let data of storeTicket;let index = index\" class=\"issuecard w-100 mb-4 cursor-pointer\" (click)=\"ShowTicket(index,data?.ticketId)\" [ngClass]=\"selectCard == index ? 'active' : ''\">\r\n <div class=\"maincard-label fw-bold d-flex justify-content-between mb-5\"><span> <img src='./assets/tango/Images/ticket.svg'> {{data?.ticketId}}</span> <span class=\"badge text-success\"\r\n [ngClass]=\"data.status == 'closed' ? 'badge-light-success' :(data.status == 'inprogress' ? 'badge-light-primary':'badge-light-warning')\">{{data.status}}</span>\r\n </div>\r\n <div *ngIf=\"data.issueStatus === 'notidentified'\" class=\"mb-5 contenttext\">\r\n We have not received data from your store. We are currently investigating the issue.\r\n </div>\r\n <div *ngIf=\"data.issueStatus ==='identified'\" class=\"mb-5 contenttext\">Store is currently encountering a <span class=\"fw-bold-700\">{{data.primaryIssue}}</span> which is \r\n <span *ngFor=\"let secondary of data.secondaryIssue; let last = last\" class=\"fw-bold-700\">{{secondary?.name}}<ng-container *ngIf=\"!last\"> ,</ng-container> </span>.</div>\r\n \r\n <div class=\"d-flex justify-content-between\">\r\n <div class=\"profile d-flex align-items-centre justify-content-centre\">\r\n <img class=\"\" src=\"./assets/tango/Images/gropmodal.png\" alt=\"\">\r\n </div>\r\n <div class=\"d-flex justify-content-between\" > \r\n <span class=\"contenttext px-3\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path d=\"M14 10C14 10.3536 13.8595 10.6928 13.6095 10.9428C13.3594 11.1929 13.0203 11.3333 12.6667 11.3333H4.66667L2 14V3.33333C2 2.97971 2.14048 2.64057 2.39052 2.39052C2.64057 2.14048 2.97971 2 3.33333 2H12.6667C13.0203 2 13.3594 2.14048 13.6095 2.39052C13.8595 2.64057 14 2.97971 14 3.33333V10Z\" stroke=\"#667085\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg> {{data.comments}} </span>\r\n <span class=\"contenttext px-3\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path d=\"M10.6667 1.33398V4.00065M5.33333 1.33398V4.00065M2 6.66732H14M3.33333 2.66732H12.6667C13.403 2.66732 14 3.26427 14 4.00065V13.334C14 14.0704 13.403 14.6673 12.6667 14.6673H3.33333C2.59695 14.6673 2 14.0704 2 13.334V4.00065C2 3.26427 2.59695 2.66732 3.33333 2.66732Z\" stroke=\"#667085\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg> {{data.Date}}</span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-sm-6\">\r\n <div class=\"maincard-label fw-bold d-flex justify-content-between\">\r\n <span><img src='./assets/tango/Images/ticket.svg'>{{viewTickets?.ticketId}}</span>\r\n <span class=\"badge badge-light-primary\">{{viewTickets?.status}}</span>\r\n </div>\r\n <div *ngFor=\"let activity of viewTicketList\" class=\"\"> \r\n <!-- User code starts here -->\r\n <div *ngIf=\"activity.actionBy == 'User'\" class=\"d-flex mt-10 ms-5\">\r\n <div class=\"d-flex flex-column justify-content-center align-items-center pe-3\">\r\n <div class=\"d-flex align-items-centre justify-content-centre\">\r\n <img class=\"msgprofile\" src='https://images.unsplash.com/photo-1441986300917-64674bd600d8?w=500&auto=format&fit=crop&q=60&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxzZWFyY2h8Mnx8c3RvcmV8ZW58MHx8MHx8fDA%3D'>\r\n </div>\r\n <div class=\"p-0 h-100 mt-3 border border-1 border-gray\" style=\"width:0px\"></div>\r\n </div> \r\n <div class=\"py-3\">\r\n <div class=\"d-flex mb-3\">\r\n <span class=\"headingtext\">Olivia Rhye</span>\r\n <span class=\"timingtext px-3\">Now</span>\r\n </div>\r\n <div *ngFor=\"let user of activity.reasons; let j =index\">\r\n <span class=\"profile-label font-bold-400\">User has replied to the issue</span>\r\n <!-- <div *ngIf=\"resolvedIssue\" class=\"profile-label fw-bold-400 mt-5\">Issue has been <span class=\"fw-bold-700\">resolved</span>.\r\n <div class=\"\"> It takes 7 more days to resolve.</div>\r\n </div> -->\r\n <div *ngIf=\"user.primaryIssue === 'Camera Issues' \">\r\n <span class=\"profile-label fw-bold-400\">Are all CCTV cameras functioning properly?</span>\r\n <div class=\"row\">\r\n <div class=\"col-sm-4\">\r\n <span class=\"\">Camera 1</span>\r\n <div class=\"d-flex align-items-centre justify-content-centre rounded-3 overflow-hidden\">\r\n <img class=\"w-100\" src='https://images.unsplash.com/photo-1441986300917-64674bd600d8?w=500&auto=format&fit=crop&q=60&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxzZWFyY2h8Mnx8c3RvcmV8ZW58MHx8MHx8fDA%3D'>\r\n </div>\r\n </div>\r\n <div class=\"col-sm-4\">\r\n <span class=\"\">Camera 2</span>\r\n <div class=\"d-flex align-items-centre justify-content-centre rounded-3 overflow-hidden\">\r\n <img class=\"w-100\" src='https://images.unsplash.com/photo-1441986300917-64674bd600d8?w=500&auto=format&fit=crop&q=60&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxzZWFyY2h8Mnx8c3RvcmV8ZW58MHx8MHx8fDA%3D'>\r\n </div>\r\n </div>\r\n <div class=\"col-sm-4\">\r\n <span class=\"\">Camera 3</span>\r\n <div class=\"d-flex align-items-centre justify-content-centre rounded-3 overflow-hidden\">\r\n <img class=\"w-100\" src='https://images.unsplash.com/photo-1441986300917-64674bd600d8?w=500&auto=format&fit=crop&q=60&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxzZWFyY2h8Mnx8c3RvcmV8ZW58MHx8MHx8fDA%3D'>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"profile-label fw-bold-400 mt-5\">\r\n The above camera streaming are not working due <span class=\"fw-bold-700\">power issue</span> to the camera.\r\n </div>\r\n </div>\r\n <div>\r\n <div class=\"contenttext fw-semibold mt-3\">\r\n We're currently encountering an <span class=\"fw-bold-700\">{{user.primaryIssue}}</span>\r\n </div>\r\n <div *ngFor=\"let issue of user.secondaryIssue; let k =index\" class=\"mt-3\">\r\n <span class=\"profile-label fw-bold-400\">The following are the relevant problem facing</span>\r\n <ul class=\"timingtext fw-bold-400 mt-3\">\r\n <li>{{issue.name}}</li>\r\n </ul>\r\n </div>\r\n </div>\r\n </div> \r\n </div>\r\n <!-- User code ends here -->\r\n </div>\r\n <!-- Tango code starts here -->\r\n <div *ngIf=\"activity.actionBy == 'Tango'\" class=\"d-flex mt-10 ms-5\">\r\n <div class=\"d-flex flex-column justify-content-center align-items-center pe-3\">\r\n <div class=\"d-flex align-items-centre justify-content-centre\">\r\n <img class=\"msgprofile\" src=\"./assets/tango/Images/tangoprofile.png\">\r\n </div>\r\n <div class=\"p-0 h-100 mt-3 border border-1 border-gray\" style=\"width:0px\"></div>\r\n </div> \r\n <div class=\"py-3\">\r\n <div class=\"d-flex mb-3\">\r\n <span class=\"headingtext\">Tango</span>\r\n <span class=\"timingtext px-3\">Now</span>\r\n </div>\r\n <div *ngIf=\"activity.actionType !== 'defaultInfra'\" class=\"mb-3\">\r\n <span class=\"profile-label fw-bold-400\">tango has replied to the issue</span>\r\n <!-- <div *ngIf=\"updated\" class=\"textupdates fw-bold-400 mt-3\">Thank you for the Update.<span *ngIf=\"\">The ticket will be closed when the data is processed.</span></div> -->\r\n \r\n <div class=\"mt-3\">\r\n <span class=\"textupdates fw-bold-400\">Please follow the below steps to resolve the above issue</span>\r\n <div *ngFor=\"let data of activity.reasons; let index=index\" class=\"mt-5\">\r\n <span class=\"fw-semibold\">{{data?.primaryIssue}}</span>\r\n <ul *ngFor=\"let issue of data?.secondaryIssue\" class=\"mt-3 timingtext fw-bold-400\">\r\n <li>{{issue?.name}}</li>\r\n </ul>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"activity.actionType === 'defaultInfra'\" class=\"profile-label fw-bold-400\">We have not received data from your store. We are currently investigating the issue</div>\r\n </div> \r\n </div>\r\n <!-- Tango code ends here -->\r\n </div>\r\n \r\n </div>\r\n </div>\r\n </div>\r\n <ng-container *ngIf=\"loading\" >\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=\"noData\">\r\n <div class=\"row\">\r\n <div class=\"col-lg-12 mb-3\">\r\n <div class=\"card-body d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-src\" src=\"./assets/tango/Icons/Nodata.svg\" alt=\"\">\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container> \r\n\r\n</div>\r\n", styles: [".card-label{font-size:16px!important;line-height:24px!important}.card-view{width:250px}.card-view .title{color:var(--Gray-900, #101828);font-size:20px;line-height:30px}.card-view .sub-title{color:var(--Gray-700, #344054);font-size:14px;line-height:20px}.issuecard{width:240px;border-radius:10px;border:1px solid var(--Gray-200, #EAECF0);padding:16px}.issuecard label{color:var(--Black, #101828);font-size:14px;line-height:20px}.issuecard.active,.card-view.active{border:none!important;background:var(--Primary-25, #F6FCFF);box-shadow:0 0 0 4px #e9f7ff}.contenttext{color:var(--Gray-500, #667085);font-size:14px;font-weight:400;line-height:20px}.maincard-content{border-radius:8px;border:1px solid var(--Gray-300, #D0D5DD)}.maincard-label{color:var(--Gray-900, #101828);font-size:16px;line-height:24px}.profile{width:24px;height:24px;overflow:hidden;border-radius:200px}.fw-bold-700{font-weight:700!important}.fw-bold-400{font-weight:400!important}.msgprofile{width:48px!important;height:48px!important;border-radius:200px;overflow:hidden}.timingtext{color:var(--Gray-500, #667085);font-size:12px;line-height:18px}.profile-label{font-size:16px;color:var(--Gray-500, #667085);line-height:24px}.w-45{width:49%}.textupdates{color:var(--Gray-700, #344054);font-size:16px;line-height:24px}.textupdates1{color:var(--Gray-700, #344054);font-size:14px;line-height:24px}.items:hover,.tems.focus,.items.active,.camera.focus-visible{background:var(--Gray-50, #F9FAFB)}.daterangepicker{display:block!important;top:153.85px!important;left:900px!important;right:0}.form-control{color:var(--Gray-700, #344054)!important;font-size:14px!important;font-weight:600;line-height:20px;text-transform:capitalize}:host::ng-deep .md-drppicker .btn{line-height:10px!important}:host::ng-deep .md-drppicker.drops-down-right.ltr.double.show-ranges.shown{top:65px!important;left:-470px!important;height:400px!important}:host::ng-deep .md-drppicker .btn{border-radius:8px!important;border:1px solid var(--Primary-600, #00A3FF)!important;background:var(--Primary-600, #00A3FF)!important;box-shadow:0 1px 2px #1018280d!important;color:var(--White, #FFF)!important;font-size:14px!important;font-weight:600!important;line-height:20px;text-transform:capitalize}:host::ng-deep .md-drppicker .ranges ul li button{padding:12px 16px;width:160px;color:var(--Gray-700, #344054);font-size:14px;font-weight:400;line-height:20px;background:none;border:none;text-align:left;cursor:pointer}:host::ng-deep .md-drppicker td.active,:host::ng-deep .md-drppicker td.active:hover{background-color:#029cf4!important;border-radius:20px!important;color:var(--White, #FFF)!important;text-align:center!important;font-size:14px!important;font-weight:500!important;line-height:20px}:host::ng-deep .md-drppicker.ltr .ranges{float:left;margin-top:10px!important}:host::ng-deep .md-drppicker td.in-range{background:var(--Primary-50, #EAF8FF)}:host::ng-deep .md-drppicker .ranges ul li button.active{background:var(--Primary-50, #EAF8FF)!important;border-radius:8px!important;color:var(--Primary-700, #009BF3);font-size:14px!important;font-weight:500!important;line-height:20px!important}:host::ng-deep table th,:host::ng-deep table td{width:40px!important;height:40px!important;padding:10px 8px!important}:host::ng-deep .md-drppicker td.available.prev,:host::ng-deep .md-drppicker th.available.prev{background-image:url(data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB2aWV3Qm94PSIwIDAgMy43IDYiIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDMuNyA2IiB4bWw6c3BhY2U9InByZXNlcnZlIj4NCjxnPg0KCTxwYXRoIGQ9Ik0zLjcsMC43TDEuNCwzbDIuMywyLjNMMyw2TDAsM2wzLTNMMy43LDAuN3oiLz4NCjwvZz4NCjwvc3ZnPg0K)!important;background-repeat:no-repeat!important;background-size:.5em!important;background-position:center!important}:host::ng-deep .md-drppicker td.available.next,:host::ng-deep .md-drppicker th.available.next{background-image:url(data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB2aWV3Qm94PSIwIDAgMy43IDYiIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDMuNyA2IiB4bWw6c3BhY2U9InByZXNlcnZlIj4NCjxnPg0KCTxwYXRoIGQ9Ik0zLjcsMC43TDEuNCwzbDIuMywyLjNMMyw2TDAsM2wzLTNMMy43LDAuN3oiLz4NCjwvZz4NCjwvc3ZnPg0K)!important;background-repeat:no-repeat!important;background-size:.5em!important;background-position:center!important}:host::ng-deep table th{border-bottom:0px solid var(--Gray-200, #EAECF0)!important;background:transparent!important;color:var(--Gray-700, #344054)!important;text-align:center;font-size:16px!important;font-weight:500!important;line-height:24px}:host::ng-deep .md-drppicker td.available.invalid-date{text-decoration:line-through;pointer-events:none;color:#a9a9a9}:host::ng-deep .md-drppicker td.available.today:not(.invalid-date){text-decoration:unset;pointer-events:unset;color:unset}:host::ng-deep .md-drppicker .btn.btn-default{border-radius:8px!important;border:1px solid var(--Gray-300, #D0D5DD)!important;background:var(--White, #FFF)!important;box-shadow:0 1px 2px #1018280d!important;color:var(--Gray-700, #344054)!important;font-size:14px!important;font-weight:600!important;line-height:20px;text-transform:capitalize;margin-right:10px!important}.loader .title{width:65%}.loader .link{width:85%}.loader .description{width:95%}.loader .shimmer{padding:15px;width:95%;height:120px;margin:10px auto;background:#fff}.loader .shimmer .image-card{height:90px;width:90px;float:right;border-radius:8px}.loader .stroke{height:15px;background:#777;margin-top:20px}.loader .wrapper{width:0px;animation:fullView .5s forwards linear}@keyframes fullView{to{width:100%}}.loader .animate{animation:shimmer 3s;animation-iteration-count:infinite;background:linear-gradient(to right,#e6e6e6 5%,#ccc 25%,#e6e6e6 35%);background-size:1000px 100%}@keyframes shimmer{0%{background-position:-1000px 0}to{background-position:1000px 0}}.img-src{width:25%!important}\n"], dependencies: [{ kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i6.DaterangepickerDirective, selector: "input[ngxDaterangepickerMd]", inputs: ["minDate", "maxDate", "autoApply", "alwaysShowCalendars", "showCustomRangeLabel", "linkedCalendars", "dateLimit", "singleDatePicker", "showWeekNumbers", "showISOWeekNumbers", "showDropdowns", "isInvalidDate", "isCustomDate", "isTooltipDate", "showClearButton", "customRangeDirection", "ranges", "opens", "drops", "firstMonthDayClass", "lastMonthDayClass", "emptyWeekRowClass", "emptyWeekColumnClass", "firstDayOfNextMonthClass", "lastDayOfPreviousMonthClass", "keepCalendarOpeningWithRange", "showRangeLabelOnInput", "showCancel", "lockStartDate", "timePicker", "timePicker24Hour", "timePickerIncrement", "timePickerSeconds", "closeOnAutoApply", "endKeyHolder", "startKey", "locale", "endKey"], outputs: ["change", "rangeClicked", "datesUpdated", "startDateChanged", "endDateChanged", "clearClicked"] }] });
199
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.2", ngImport: i0, type: StoreActivityComponent, deps: [{ token: i1.TicketsService }, { token: i2.DataService }, { token: i0.ChangeDetectorRef }, { token: i3.GlobalStateService }], target: i0.ɵɵFactoryTarget.Component });
200
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.2", type: StoreActivityComponent, selector: "lib-store-activity", inputs: { storeId: "storeId" }, host: { listeners: { "document:click": "onClick($event)" } }, ngImport: i0, template: "<div class=\"card\">\r\n <div class=\"card-header border-0\">\r\n <div class=\"card-title flex-column\">\r\n <span class=\"card-label\">\r\n Activity\r\n </span>\r\n <span class=\"text-sub\">\r\n An overview of the store issues and the downtime for {{headerFilter?.date?.startDate|customDateFormat}}\r\n - {{headerFilter?.date?.endDate|customDateFormat}}\r\n </span>\r\n </div>\r\n <div class=\"card-toolbar\">\r\n <div class=\"position-relative\">\r\n <button type=\"button\" (click)=\"openDropdown($event)\"\r\n class=\"btn btn-default mx-2 btn-outline btn-outline-default rounded-3 text-nowrap border-val\"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\" viewBox=\"0 0 20 21\" fill=\"none\">\r\n <path d=\"M5 10.0264H15M2.5 5.02637H17.5M7.5 15.0264H12.5\" stroke=\"#344054\" stroke-width=\"2\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n <span class=\"ms-2\">Filter</span> </button>\r\n <div *ngIf=\"dropDown\" class=\"card py-1 w-200px position-absolute top-50px end-0 z-1\">\r\n <ul *ngFor=\"let item of dropdownItems\" class=\"list-unstyled\">\r\n <li [ngClass]=\"this.filteredIssue == item ? 'active' : ''\"\r\n class=\"camera px-5 items fw-semibold cursor-pointer py-2\" (click)=\"selectItem(item)\">\r\n {{item}}</li>\r\n </ul>\r\n </div>\r\n </div>\r\n <div class=\"btn btn-default btn-outline\" (click)=\"exportStoreListasXlsx()\">\r\n <span><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\" viewBox=\"0 0 20 21\" fill=\"none\">\r\n <path\r\n d=\"M17.5 12.5264V15.8597C17.5 16.3017 17.3244 16.7257 17.0118 17.0382C16.6993 17.3508 16.2754 17.5264 15.8333 17.5264H4.16667C3.72464 17.5264 3.30072 17.3508 2.98816 17.0382C2.67559 16.7257 2.5 16.3017 2.5 15.8597V12.5264M14.1667 6.69303L10 2.52637M10 2.52637L5.83333 6.69303M10 2.52637V12.5264\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span> Export\r\n </div>\r\n <!-- <div class=\"d-flex align-items-center position-relative my-1 ms-3\">\r\n <span class=\"svg-icon svg-icon-1 position-absolute ms-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M13.3333 1.66663V4.99996M6.66667 1.66663V4.99996M2.5 8.33329H17.5M4.16667 3.33329H15.8333C16.7538 3.33329 17.5 4.07948 17.5 4.99996V16.6666C17.5 17.5871 16.7538 18.3333 15.8333 18.3333H4.16667C3.24619 18.3333 2.5 17.5871 2.5 16.6666V4.99996C2.5 4.07948 3.24619 3.33329 4.16667 3.33329Z\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <input class=\"fx-date-range form-control ps-14\" type=\"text\" matInput ngxDaterangepickerMd [drops]=\"'down'\"\r\n [opens]=\"'right'\" [ranges]=\"ranges\" [showCustomRangeLabel]=\"true\" [alwaysShowCalendars]=\"false\"\r\n [keepCalendarOpeningWithRange]=\"true\" [showCancel]=\"true\" autocomplete=\"off\" [(ngModel)]=\"selectedDateRange\"\r\n [locale]=\"{ format: 'DD-MM-YYYY', firstDay: 1, monthNames: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'] }\"\r\n (datesUpdated)=\"datechange($event)\" name=\"daterange\" />\r\n </div> -->\r\n </div>\r\n </div>\r\n <div class=\"card-body\">\r\n <div class=\"d-flex\">\r\n <div *ngFor=\"let issue of ticketCard\" class=\"card card-view p-5 me-5\">\r\n <span class=\"title fw-bold\">{{issue.count}}</span>\r\n <span class=\"sub-title fw-semibold\">{{issue.name}}</span>\r\n </div>\r\n </div>\r\n <div class=\"rounded-3 border border-gray border-1 mt-5\">\r\n <div *ngIf=\"!loading && !noData\" class=\"row p-5\">\r\n <div class=\"col-sm-6\">\r\n <div *ngFor=\"let data of storeTicket;let index = index\" class=\"issuecard w-100 mb-4 cursor-pointer\"\r\n (click)=\"ShowTicket(index,data?.ticketId)\" [ngClass]=\"selectCard == index ? 'active' : ''\">\r\n <div class=\"maincard-label fw-bold d-flex justify-content-between mb-5\"><span> <img\r\n src='./assets/tango/Images/ticket.svg'> {{data?.ticketId}}</span> <span\r\n class=\"badge text-success\"\r\n [ngClass]=\"data.status == 'closed' ? 'badge-light-success' :(data.status == 'inprogress' ? 'badge-light-primary':'badge-light-warning')\">{{data.status}}</span>\r\n </div>\r\n <div *ngIf=\"data.issueStatus === 'notidentified'\" class=\"mb-5 contenttext\">\r\n We have not received data from your store. We are currently investigating the issue.\r\n </div>\r\n <div *ngIf=\"data.issueStatus ==='identified'\" class=\"mb-5 contenttext\">Store is currently\r\n encountering a <span class=\"fw-bold-700\">{{data.primaryIssue}}</span> which is\r\n <span *ngFor=\"let secondary of data.secondaryIssue; let last = last\"\r\n class=\"fw-bold-700\">{{secondary?.name}}<ng-container *ngIf=\"!last\"> ,</ng-container>\r\n </span>.\r\n </div>\r\n\r\n <div class=\"d-flex justify-content-between\">\r\n <div class=\"profile d-flex align-items-centre justify-content-centre\">\r\n <img class=\"\" src=\"./assets/tango/Images/gropmodal.png\" alt=\"\">\r\n </div>\r\n <div class=\"d-flex justify-content-between\">\r\n <span class=\"contenttext px-3\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\"\r\n height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M14 10C14 10.3536 13.8595 10.6928 13.6095 10.9428C13.3594 11.1929 13.0203 11.3333 12.6667 11.3333H4.66667L2 14V3.33333C2 2.97971 2.14048 2.64057 2.39052 2.39052C2.64057 2.14048 2.97971 2 3.33333 2H12.6667C13.0203 2 13.3594 2.14048 13.6095 2.39052C13.8595 2.64057 14 2.97971 14 3.33333V10Z\"\r\n stroke=\"#667085\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg> {{data.comments}} </span>\r\n <span class=\"contenttext px-3\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\"\r\n height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M10.6667 1.33398V4.00065M5.33333 1.33398V4.00065M2 6.66732H14M3.33333 2.66732H12.6667C13.403 2.66732 14 3.26427 14 4.00065V13.334C14 14.0704 13.403 14.6673 12.6667 14.6673H3.33333C2.59695 14.6673 2 14.0704 2 13.334V4.00065C2 3.26427 2.59695 2.66732 3.33333 2.66732Z\"\r\n stroke=\"#667085\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg> {{data.Date}}</span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-sm-6\">\r\n <div class=\"maincard-label fw-bold d-flex justify-content-between\">\r\n <span><img src='./assets/tango/Images/ticket.svg'>{{ticketInfo?.ticketId}}</span>\r\n <span class=\"badge badge-light-primary\">{{ticketInfo?.status}}</span>\r\n </div>\r\n <div *ngFor=\"let obj of viewTicketData;let i=index\" class=\"\">\r\n <!-- User code start -->\r\n <div *ngIf=\"obj.actionBy === 'User'\" class=\"d-flex ms-5\">\r\n <div *ngIf=\"obj.actionType !=='statusChange'\"\r\n class=\"d-flex flex-column justify-content-center align-items-center pe-3\">\r\n <div class=\"d-flex align-items-centre justify-content-centre\">\r\n <img class=\"msgprofile\"\r\n src='https://images.unsplash.com/photo-1441986300917-64674bd600d8?w=500&auto=format&fit=crop&q=60&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxzZWFyY2h8Mnx8c3RvcmV8ZW58MHx8MHx8fDA%3D'>\r\n </div>\r\n <div class=\"p-0 h-100 mt-3 border border-1 border-gray\" style=\"width:0px\"></div>\r\n </div>\r\n <div class=\"py-3\">\r\n <div *ngIf=\"obj.actionType !=='statusChange'\">\r\n <div class=\"d-flex mb-3\">\r\n <span class=\"headingtext fw-bold\">{{obj?.actionBy}}</span>\r\n <span class=\"timingtext px-3 pt-1 fw-bold-400\">{{obj?.timeStamp}}</span>\r\n </div>\r\n <span class=\"profile-label font-bold-400\">User has replied</span>\r\n </div>\r\n <div *ngIf=\"obj.actionType == 'statusCheckReply'\">\r\n <div class=\"textupdates fw-bold-400 mt-3\">Issue has been <b><span\r\n *ngIf=\"obj.statusCheckReply=='No'\">not</span> resolved.</b>\r\n\r\n </div>\r\n <div class=\"textupdates fw-bold-400\" *ngIf=\"obj.statusCheckReply=='No'\"> It takes\r\n {{obj?.hibernationDays}} more days to resolve.</div>\r\n </div>\r\n <div *ngIf=\"\" class=\"\">\r\n <span class=\"investigation fw-bold-400\">Are all CCTV cameras functioning\r\n properly?</span>\r\n <div class=\"row\">\r\n <div class=\"col-sm-4\">\r\n <span class=\"\">Camera 1</span>\r\n <div\r\n class=\"d-flex align-items-centre justify-content-centre rounded-3 overflow-hidden\">\r\n <img class=\"w-100\"\r\n src='https://images.unsplash.com/photo-1441986300917-64674bd600d8?w=500&auto=format&fit=crop&q=60&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxzZWFyY2h8Mnx8c3RvcmV8ZW58MHx8MHx8fDA%3D'>\r\n </div>\r\n </div>\r\n <div class=\"col-sm-4\">\r\n <span class=\"\">Camera 2</span>\r\n <div\r\n class=\"d-flex align-items-centre justify-content-centre rounded-3 overflow-hidden\">\r\n <img class=\"w-100\"\r\n src='https://images.unsplash.com/photo-1441986300917-64674bd600d8?w=500&auto=format&fit=crop&q=60&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxzZWFyY2h8Mnx8c3RvcmV8ZW58MHx8MHx8fDA%3D'>\r\n </div>\r\n </div>\r\n <div class=\"col-sm-4\">\r\n <span class=\"\">Camera 3</span>\r\n <div\r\n class=\"d-flex align-items-centre justify-content-centre rounded-3 overflow-hidden\">\r\n <img class=\"w-100\"\r\n src='https://images.unsplash.com/photo-1441986300917-64674bd600d8?w=500&auto=format&fit=crop&q=60&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxzZWFyY2h8Mnx8c3RvcmV8ZW58MHx8MHx8fDA%3D'>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"textupdates fw-bold-400 mt-5\">\r\n The above camera streaming are not working due <span class=\"fw-bold-700\">power\r\n issue</span> to the camera.\r\n </div>\r\n </div>\r\n <div *ngIf=\"obj.actionType ==='issueUpdate'\">\r\n <div *ngFor=\"let res of obj?.reasons\">\r\n <div class=\"textupdates fw-semibold mt-3\">\r\n We're currently encountering an <span\r\n class=\"fw-bold-700\">{{res.primaryIssue}}</span>\r\n </div>\r\n <div class=\"mt-3\">\r\n <span class=\"investigation fw-bold-400\">The following are the relevant\r\n problem\r\n facing</span>\r\n <ul class=\"timingtext fw-bold-400 mt-3\"\r\n *ngFor=\"let secIssues of res?.secondaryIssue\">\r\n <li>{{secIssues.name}}</li>\r\n </ul>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"selectedIssue === ''\" class=\"profile-label fw-semibold mt-2\">\r\n Kindly choose the option below that corresponds to the issue you are experiencing in\r\n the\r\n store.\r\n </div>\r\n </div>\r\n </div>\r\n <!-- User code end -->\r\n <!-- Tango code start -->\r\n <div *ngIf=\"obj.actionBy === 'Tango'\" class=\"d-flex mb-5 ms-5\">\r\n <div class=\"d-flex flex-column justify-content-center align-items-center pe-3\">\r\n <div class=\"d-flex align-items-centre justify-content-centre\">\r\n <img class=\"msgprofile\" src=\"./assets/tango/Images/tangoprofile.png\">\r\n </div>\r\n <div class=\"p-0 h-100 mt-3 border border-1 border-gray\" style=\"width:0px\"></div>\r\n </div>\r\n <div class=\"py-3\">\r\n <div class=\"d-flex mb-3\">\r\n <span class=\"headingtext fw-bold\">{{obj?.actionBy}}</span>\r\n <span class=\"timingtext fw-bold-400 px-3 pt-1\">{{obj?.timeStamp}}</span>\r\n </div>\r\n <div class=\"mb-3\">\r\n <span class=\"profile-label fw-bold-400\">tango has replied to the\r\n issue</span>\r\n <div *ngIf=\"obj.actionType == 'dataRecived'\">\r\n <div class=\"textupdates fw-bold-400 mt-3\">Data Received\r\n </div>\r\n </div>\r\n <div *ngIf=\"obj.actionType == 'statusCheckMonitor'\">\r\n <div class=\"textupdates fw-bold-400 mt-3\">Thank you for the update. We\u2019ll get back after the buffer time you provided.\r\n </div>\r\n </div>\r\n <div *ngIf=\"obj.actionType ==='stepsToResolve'\" class=\"mt-3\">\r\n <span class=\"textupdates fw-bold-400\">Please follow the below steps to resolve\r\n the above issue</span>\r\n <div *ngFor=\"let res of obj?.reasons\">\r\n <div class=\"mt-5\">\r\n <span class=\"headingtext fw-semibold\">{{res.primaryIssue}}</span>\r\n <ul class=\"mt-3 timingtext fw-bold-400\"\r\n *ngFor=\"let secIssues of res?.secondaryIssue\">\r\n <li>{{secIssues.name}}</li>\r\n </ul>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n <!-- defaultInfra start -->\r\n <div *ngIf=\"obj.actionType ==='defaultInfra'\" class=\"contenttext fw-bold-400\">We have\r\n not\r\n received data from your store. We are currently investigating the issue</div>\r\n <!-- defaultInfra end -->\r\n\r\n\r\n\r\n\r\n\r\n </div>\r\n </div>\r\n <!-- Tango code end -->\r\n </div>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n <ng-container *ngIf=\"loading\">\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=\"noData\">\r\n <div class=\"row\">\r\n <div class=\"col-lg-12 mb-3\">\r\n <div class=\"card-body d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-src\" src=\"./assets/tango/Icons/Nodata.svg\" alt=\"\">\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n </div>", styles: [".card-label{font-size:16px!important;line-height:24px!important}.card-view{width:250px}.card-view .title{color:var(--Gray-900, #101828);font-size:20px;line-height:30px}.card-view .sub-title{color:var(--Gray-700, #344054);font-size:14px;line-height:20px}.issuecard{width:240px;border-radius:10px;border:1px solid var(--Gray-200, #EAECF0);padding:16px}.issuecard label{color:var(--Black, #101828);font-size:14px;line-height:20px}.issuecard.active,.card-view.active{border:none!important;background:var(--Primary-25, #F6FCFF);box-shadow:0 0 0 4px #e9f7ff}.contenttext{color:var(--Gray-500, #667085);font-size:14px;font-weight:400;line-height:20px}.maincard-content{border-radius:8px;border:1px solid var(--Gray-300, #D0D5DD)}.maincard-label{color:var(--Gray-900, #101828);font-size:16px;line-height:24px}.profile{width:24px;height:24px;overflow:hidden;border-radius:200px}.fw-bold-700{font-weight:700!important}.fw-bold-400{font-weight:400!important}.msgprofile{width:48px!important;height:48px!important;border-radius:200px;overflow:hidden}.timingtext{color:var(--Gray-500, #667085);font-size:12px;line-height:18px}.profile-label{font-size:16px;color:var(--Gray-500, #667085);line-height:24px}.w-45{width:49%}.textupdates{color:var(--Gray-700, #344054);font-size:16px;line-height:24px}.textupdates1{color:var(--Gray-700, #344054);font-size:14px;line-height:24px}.items:hover,.tems.focus,.items.active,.camera.focus-visible{background:var(--Gray-50, #F9FAFB)}.daterangepicker{display:block!important;top:153.85px!important;left:900px!important;right:0}.form-control{color:var(--Gray-700, #344054)!important;font-size:14px!important;font-weight:600;line-height:20px;text-transform:capitalize}:host::ng-deep .md-drppicker .btn{line-height:10px!important}:host::ng-deep .md-drppicker.drops-down-right.ltr.double.show-ranges.shown{top:65px!important;left:-470px!important;height:400px!important}:host::ng-deep .md-drppicker .btn{border-radius:8px!important;border:1px solid var(--Primary-600, #00A3FF)!important;background:var(--Primary-600, #00A3FF)!important;box-shadow:0 1px 2px #1018280d!important;color:var(--White, #FFF)!important;font-size:14px!important;font-weight:600!important;line-height:20px;text-transform:capitalize}:host::ng-deep .md-drppicker .ranges ul li button{padding:12px 16px;width:160px;color:var(--Gray-700, #344054);font-size:14px;font-weight:400;line-height:20px;background:none;border:none;text-align:left;cursor:pointer}:host::ng-deep .md-drppicker td.active,:host::ng-deep .md-drppicker td.active:hover{background-color:#029cf4!important;border-radius:20px!important;color:var(--White, #FFF)!important;text-align:center!important;font-size:14px!important;font-weight:500!important;line-height:20px}:host::ng-deep .md-drppicker.ltr .ranges{float:left;margin-top:10px!important}:host::ng-deep .md-drppicker td.in-range{background:var(--Primary-50, #EAF8FF)}:host::ng-deep .md-drppicker .ranges ul li button.active{background:var(--Primary-50, #EAF8FF)!important;border-radius:8px!important;color:var(--Primary-700, #009BF3);font-size:14px!important;font-weight:500!important;line-height:20px!important}:host::ng-deep table th,:host::ng-deep table td{width:40px!important;height:40px!important;padding:10px 8px!important}:host::ng-deep .md-drppicker td.available.prev,:host::ng-deep .md-drppicker th.available.prev{background-image:url(data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB2aWV3Qm94PSIwIDAgMy43IDYiIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDMuNyA2IiB4bWw6c3BhY2U9InByZXNlcnZlIj4NCjxnPg0KCTxwYXRoIGQ9Ik0zLjcsMC43TDEuNCwzbDIuMywyLjNMMyw2TDAsM2wzLTNMMy43LDAuN3oiLz4NCjwvZz4NCjwvc3ZnPg0K)!important;background-repeat:no-repeat!important;background-size:.5em!important;background-position:center!important}:host::ng-deep .md-drppicker td.available.next,:host::ng-deep .md-drppicker th.available.next{background-image:url(data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB2aWV3Qm94PSIwIDAgMy43IDYiIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDMuNyA2IiB4bWw6c3BhY2U9InByZXNlcnZlIj4NCjxnPg0KCTxwYXRoIGQ9Ik0zLjcsMC43TDEuNCwzbDIuMywyLjNMMyw2TDAsM2wzLTNMMy43LDAuN3oiLz4NCjwvZz4NCjwvc3ZnPg0K)!important;background-repeat:no-repeat!important;background-size:.5em!important;background-position:center!important}:host::ng-deep table th{border-bottom:0px solid var(--Gray-200, #EAECF0)!important;background:transparent!important;color:var(--Gray-700, #344054)!important;text-align:center;font-size:16px!important;font-weight:500!important;line-height:24px}:host::ng-deep .md-drppicker td.available.invalid-date{text-decoration:line-through;pointer-events:none;color:#a9a9a9}:host::ng-deep .md-drppicker td.available.today:not(.invalid-date){text-decoration:unset;pointer-events:unset;color:unset}:host::ng-deep .md-drppicker .btn.btn-default{border-radius:8px!important;border:1px solid var(--Gray-300, #D0D5DD)!important;background:var(--White, #FFF)!important;box-shadow:0 1px 2px #1018280d!important;color:var(--Gray-700, #344054)!important;font-size:14px!important;font-weight:600!important;line-height:20px;text-transform:capitalize;margin-right:10px!important}.loader .title{width:65%}.loader .link{width:85%}.loader .description{width:95%}.loader .shimmer{padding:15px;width:95%;height:120px;margin:10px auto;background:#fff}.loader .shimmer .image-card{height:90px;width:90px;float:right;border-radius:8px}.loader .stroke{height:15px;background:#777;margin-top:20px}.loader .wrapper{width:0px;animation:fullView .5s forwards linear}@keyframes fullView{to{width:100%}}.loader .animate{animation:shimmer 3s;animation-iteration-count:infinite;background:linear-gradient(to right,#e6e6e6 5%,#ccc 25%,#e6e6e6 35%);background-size:1000px 100%}@keyframes shimmer{0%{background-position:-1000px 0}to{background-position:1000px 0}}.img-src{width:25%!important}\n"], dependencies: [{ kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i5.CustomDateFormatPipe, name: "customDateFormat" }] });
214
201
  }
215
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: StoreActivityComponent, decorators: [{
202
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.2", ngImport: i0, type: StoreActivityComponent, decorators: [{
216
203
  type: Component,
217
- args: [{ selector: 'lib-store-activity', template: "<div class=\"card\">\r\n <div class=\"card-header border-0\">\r\n <div class=\"card-title flex-column\"> \r\n <span class=\"card-label\">\r\n Activity \r\n </span>\r\n <span class=\"text-sub\">\r\n An overview of the store issues and the downtime for 02 July, 2023\r\n </span>\r\n </div>\r\n <div class=\"card-toolbar\">\r\n <div class=\"position-relative\">\r\n <button type=\"button\" (click)=\"openDropdown($event)\"\r\n class=\"btn btn-default mx-2 btn-outline btn-outline-default rounded-3 text-nowrap border-val\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\" viewBox=\"0 0 20 21\" fill=\"none\">\r\n <path d=\"M5 10.0264H15M2.5 5.02637H17.5M7.5 15.0264H12.5\" stroke=\"#344054\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n <span class=\"ms-2\">Filter</span> </button>\r\n <div *ngIf=\"dropDown\" class=\"card py-1 w-200px position-absolute top-50px end-0 z-1\">\r\n <ul *ngFor=\"let item of dropdownItems\" class=\"list-unstyled\">\r\n <li [ngClass]=\"this.filteredIssue == item ? 'active' : ''\" class=\"camera px-5 items fw-semibold cursor-pointer py-2\" (click)=\"selectItem(item)\">{{item}}</li>\r\n </ul>\r\n </div>\r\n </div>\r\n <div class=\"btn btn-default btn-outline\" (click)=\"exportStoreListasXlsx()\">\r\n <span><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\" viewBox=\"0 0 20 21\" fill=\"none\">\r\n <path d=\"M17.5 12.5264V15.8597C17.5 16.3017 17.3244 16.7257 17.0118 17.0382C16.6993 17.3508 16.2754 17.5264 15.8333 17.5264H4.16667C3.72464 17.5264 3.30072 17.3508 2.98816 17.0382C2.67559 16.7257 2.5 16.3017 2.5 15.8597V12.5264M14.1667 6.69303L10 2.52637M10 2.52637L5.83333 6.69303M10 2.52637V12.5264\" stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg></span> Export\r\n </div>\r\n <div class=\"d-flex align-items-center position-relative my-1 ms-3\">\r\n <span class=\"svg-icon svg-icon-1 position-absolute ms-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M13.3333 1.66663V4.99996M6.66667 1.66663V4.99996M2.5 8.33329H17.5M4.16667 3.33329H15.8333C16.7538 3.33329 17.5 4.07948 17.5 4.99996V16.6666C17.5 17.5871 16.7538 18.3333 15.8333 18.3333H4.16667C3.24619 18.3333 2.5 17.5871 2.5 16.6666V4.99996C2.5 4.07948 3.24619 3.33329 4.16667 3.33329Z\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <input class=\"fx-date-range form-control ps-14\" type=\"text\" matInput ngxDaterangepickerMd [drops]=\"'down'\"\r\n [opens]=\"'right'\" [ranges]=\"ranges\" [showCustomRangeLabel]=\"true\" [alwaysShowCalendars]=\"false\"\r\n [keepCalendarOpeningWithRange]=\"true\" [showCancel]=\"true\" autocomplete=\"off\" [(ngModel)]=\"selectedDateRange\"\r\n [locale]=\"{ format: 'DD-MM-YYYY', firstDay: 1, monthNames: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'] }\"\r\n (datesUpdated)=\"datechange($event)\" name=\"daterange\" />\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"card-body\">\r\n <div class=\"d-flex\">\r\n <div *ngFor=\"let issue of ticketCard\" class=\"card card-view p-5 me-5\">\r\n <span class=\"title fw-bold\">{{issue.count}}</span>\r\n <span class=\"sub-title fw-semibold\">{{issue.name}}</span>\r\n </div>\r\n </div>\r\n <div class=\"rounded-3 border border-gray border-1 mt-5\">\r\n <div *ngIf=\"!loading && !noData\" class=\"row p-5\">\r\n <div class=\"col-sm-6\">\r\n <div *ngFor=\"let data of storeTicket;let index = index\" class=\"issuecard w-100 mb-4 cursor-pointer\" (click)=\"ShowTicket(index,data?.ticketId)\" [ngClass]=\"selectCard == index ? 'active' : ''\">\r\n <div class=\"maincard-label fw-bold d-flex justify-content-between mb-5\"><span> <img src='./assets/tango/Images/ticket.svg'> {{data?.ticketId}}</span> <span class=\"badge text-success\"\r\n [ngClass]=\"data.status == 'closed' ? 'badge-light-success' :(data.status == 'inprogress' ? 'badge-light-primary':'badge-light-warning')\">{{data.status}}</span>\r\n </div>\r\n <div *ngIf=\"data.issueStatus === 'notidentified'\" class=\"mb-5 contenttext\">\r\n We have not received data from your store. We are currently investigating the issue.\r\n </div>\r\n <div *ngIf=\"data.issueStatus ==='identified'\" class=\"mb-5 contenttext\">Store is currently encountering a <span class=\"fw-bold-700\">{{data.primaryIssue}}</span> which is \r\n <span *ngFor=\"let secondary of data.secondaryIssue; let last = last\" class=\"fw-bold-700\">{{secondary?.name}}<ng-container *ngIf=\"!last\"> ,</ng-container> </span>.</div>\r\n \r\n <div class=\"d-flex justify-content-between\">\r\n <div class=\"profile d-flex align-items-centre justify-content-centre\">\r\n <img class=\"\" src=\"./assets/tango/Images/gropmodal.png\" alt=\"\">\r\n </div>\r\n <div class=\"d-flex justify-content-between\" > \r\n <span class=\"contenttext px-3\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path d=\"M14 10C14 10.3536 13.8595 10.6928 13.6095 10.9428C13.3594 11.1929 13.0203 11.3333 12.6667 11.3333H4.66667L2 14V3.33333C2 2.97971 2.14048 2.64057 2.39052 2.39052C2.64057 2.14048 2.97971 2 3.33333 2H12.6667C13.0203 2 13.3594 2.14048 13.6095 2.39052C13.8595 2.64057 14 2.97971 14 3.33333V10Z\" stroke=\"#667085\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg> {{data.comments}} </span>\r\n <span class=\"contenttext px-3\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path d=\"M10.6667 1.33398V4.00065M5.33333 1.33398V4.00065M2 6.66732H14M3.33333 2.66732H12.6667C13.403 2.66732 14 3.26427 14 4.00065V13.334C14 14.0704 13.403 14.6673 12.6667 14.6673H3.33333C2.59695 14.6673 2 14.0704 2 13.334V4.00065C2 3.26427 2.59695 2.66732 3.33333 2.66732Z\" stroke=\"#667085\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg> {{data.Date}}</span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-sm-6\">\r\n <div class=\"maincard-label fw-bold d-flex justify-content-between\">\r\n <span><img src='./assets/tango/Images/ticket.svg'>{{viewTickets?.ticketId}}</span>\r\n <span class=\"badge badge-light-primary\">{{viewTickets?.status}}</span>\r\n </div>\r\n <div *ngFor=\"let activity of viewTicketList\" class=\"\"> \r\n <!-- User code starts here -->\r\n <div *ngIf=\"activity.actionBy == 'User'\" class=\"d-flex mt-10 ms-5\">\r\n <div class=\"d-flex flex-column justify-content-center align-items-center pe-3\">\r\n <div class=\"d-flex align-items-centre justify-content-centre\">\r\n <img class=\"msgprofile\" src='https://images.unsplash.com/photo-1441986300917-64674bd600d8?w=500&auto=format&fit=crop&q=60&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxzZWFyY2h8Mnx8c3RvcmV8ZW58MHx8MHx8fDA%3D'>\r\n </div>\r\n <div class=\"p-0 h-100 mt-3 border border-1 border-gray\" style=\"width:0px\"></div>\r\n </div> \r\n <div class=\"py-3\">\r\n <div class=\"d-flex mb-3\">\r\n <span class=\"headingtext\">Olivia Rhye</span>\r\n <span class=\"timingtext px-3\">Now</span>\r\n </div>\r\n <div *ngFor=\"let user of activity.reasons; let j =index\">\r\n <span class=\"profile-label font-bold-400\">User has replied to the issue</span>\r\n <!-- <div *ngIf=\"resolvedIssue\" class=\"profile-label fw-bold-400 mt-5\">Issue has been <span class=\"fw-bold-700\">resolved</span>.\r\n <div class=\"\"> It takes 7 more days to resolve.</div>\r\n </div> -->\r\n <div *ngIf=\"user.primaryIssue === 'Camera Issues' \">\r\n <span class=\"profile-label fw-bold-400\">Are all CCTV cameras functioning properly?</span>\r\n <div class=\"row\">\r\n <div class=\"col-sm-4\">\r\n <span class=\"\">Camera 1</span>\r\n <div class=\"d-flex align-items-centre justify-content-centre rounded-3 overflow-hidden\">\r\n <img class=\"w-100\" src='https://images.unsplash.com/photo-1441986300917-64674bd600d8?w=500&auto=format&fit=crop&q=60&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxzZWFyY2h8Mnx8c3RvcmV8ZW58MHx8MHx8fDA%3D'>\r\n </div>\r\n </div>\r\n <div class=\"col-sm-4\">\r\n <span class=\"\">Camera 2</span>\r\n <div class=\"d-flex align-items-centre justify-content-centre rounded-3 overflow-hidden\">\r\n <img class=\"w-100\" src='https://images.unsplash.com/photo-1441986300917-64674bd600d8?w=500&auto=format&fit=crop&q=60&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxzZWFyY2h8Mnx8c3RvcmV8ZW58MHx8MHx8fDA%3D'>\r\n </div>\r\n </div>\r\n <div class=\"col-sm-4\">\r\n <span class=\"\">Camera 3</span>\r\n <div class=\"d-flex align-items-centre justify-content-centre rounded-3 overflow-hidden\">\r\n <img class=\"w-100\" src='https://images.unsplash.com/photo-1441986300917-64674bd600d8?w=500&auto=format&fit=crop&q=60&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxzZWFyY2h8Mnx8c3RvcmV8ZW58MHx8MHx8fDA%3D'>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"profile-label fw-bold-400 mt-5\">\r\n The above camera streaming are not working due <span class=\"fw-bold-700\">power issue</span> to the camera.\r\n </div>\r\n </div>\r\n <div>\r\n <div class=\"contenttext fw-semibold mt-3\">\r\n We're currently encountering an <span class=\"fw-bold-700\">{{user.primaryIssue}}</span>\r\n </div>\r\n <div *ngFor=\"let issue of user.secondaryIssue; let k =index\" class=\"mt-3\">\r\n <span class=\"profile-label fw-bold-400\">The following are the relevant problem facing</span>\r\n <ul class=\"timingtext fw-bold-400 mt-3\">\r\n <li>{{issue.name}}</li>\r\n </ul>\r\n </div>\r\n </div>\r\n </div> \r\n </div>\r\n <!-- User code ends here -->\r\n </div>\r\n <!-- Tango code starts here -->\r\n <div *ngIf=\"activity.actionBy == 'Tango'\" class=\"d-flex mt-10 ms-5\">\r\n <div class=\"d-flex flex-column justify-content-center align-items-center pe-3\">\r\n <div class=\"d-flex align-items-centre justify-content-centre\">\r\n <img class=\"msgprofile\" src=\"./assets/tango/Images/tangoprofile.png\">\r\n </div>\r\n <div class=\"p-0 h-100 mt-3 border border-1 border-gray\" style=\"width:0px\"></div>\r\n </div> \r\n <div class=\"py-3\">\r\n <div class=\"d-flex mb-3\">\r\n <span class=\"headingtext\">Tango</span>\r\n <span class=\"timingtext px-3\">Now</span>\r\n </div>\r\n <div *ngIf=\"activity.actionType !== 'defaultInfra'\" class=\"mb-3\">\r\n <span class=\"profile-label fw-bold-400\">tango has replied to the issue</span>\r\n <!-- <div *ngIf=\"updated\" class=\"textupdates fw-bold-400 mt-3\">Thank you for the Update.<span *ngIf=\"\">The ticket will be closed when the data is processed.</span></div> -->\r\n \r\n <div class=\"mt-3\">\r\n <span class=\"textupdates fw-bold-400\">Please follow the below steps to resolve the above issue</span>\r\n <div *ngFor=\"let data of activity.reasons; let index=index\" class=\"mt-5\">\r\n <span class=\"fw-semibold\">{{data?.primaryIssue}}</span>\r\n <ul *ngFor=\"let issue of data?.secondaryIssue\" class=\"mt-3 timingtext fw-bold-400\">\r\n <li>{{issue?.name}}</li>\r\n </ul>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"activity.actionType === 'defaultInfra'\" class=\"profile-label fw-bold-400\">We have not received data from your store. We are currently investigating the issue</div>\r\n </div> \r\n </div>\r\n <!-- Tango code ends here -->\r\n </div>\r\n \r\n </div>\r\n </div>\r\n </div>\r\n <ng-container *ngIf=\"loading\" >\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=\"noData\">\r\n <div class=\"row\">\r\n <div class=\"col-lg-12 mb-3\">\r\n <div class=\"card-body d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-src\" src=\"./assets/tango/Icons/Nodata.svg\" alt=\"\">\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container> \r\n\r\n</div>\r\n", styles: [".card-label{font-size:16px!important;line-height:24px!important}.card-view{width:250px}.card-view .title{color:var(--Gray-900, #101828);font-size:20px;line-height:30px}.card-view .sub-title{color:var(--Gray-700, #344054);font-size:14px;line-height:20px}.issuecard{width:240px;border-radius:10px;border:1px solid var(--Gray-200, #EAECF0);padding:16px}.issuecard label{color:var(--Black, #101828);font-size:14px;line-height:20px}.issuecard.active,.card-view.active{border:none!important;background:var(--Primary-25, #F6FCFF);box-shadow:0 0 0 4px #e9f7ff}.contenttext{color:var(--Gray-500, #667085);font-size:14px;font-weight:400;line-height:20px}.maincard-content{border-radius:8px;border:1px solid var(--Gray-300, #D0D5DD)}.maincard-label{color:var(--Gray-900, #101828);font-size:16px;line-height:24px}.profile{width:24px;height:24px;overflow:hidden;border-radius:200px}.fw-bold-700{font-weight:700!important}.fw-bold-400{font-weight:400!important}.msgprofile{width:48px!important;height:48px!important;border-radius:200px;overflow:hidden}.timingtext{color:var(--Gray-500, #667085);font-size:12px;line-height:18px}.profile-label{font-size:16px;color:var(--Gray-500, #667085);line-height:24px}.w-45{width:49%}.textupdates{color:var(--Gray-700, #344054);font-size:16px;line-height:24px}.textupdates1{color:var(--Gray-700, #344054);font-size:14px;line-height:24px}.items:hover,.tems.focus,.items.active,.camera.focus-visible{background:var(--Gray-50, #F9FAFB)}.daterangepicker{display:block!important;top:153.85px!important;left:900px!important;right:0}.form-control{color:var(--Gray-700, #344054)!important;font-size:14px!important;font-weight:600;line-height:20px;text-transform:capitalize}:host::ng-deep .md-drppicker .btn{line-height:10px!important}:host::ng-deep .md-drppicker.drops-down-right.ltr.double.show-ranges.shown{top:65px!important;left:-470px!important;height:400px!important}:host::ng-deep .md-drppicker .btn{border-radius:8px!important;border:1px solid var(--Primary-600, #00A3FF)!important;background:var(--Primary-600, #00A3FF)!important;box-shadow:0 1px 2px #1018280d!important;color:var(--White, #FFF)!important;font-size:14px!important;font-weight:600!important;line-height:20px;text-transform:capitalize}:host::ng-deep .md-drppicker .ranges ul li button{padding:12px 16px;width:160px;color:var(--Gray-700, #344054);font-size:14px;font-weight:400;line-height:20px;background:none;border:none;text-align:left;cursor:pointer}:host::ng-deep .md-drppicker td.active,:host::ng-deep .md-drppicker td.active:hover{background-color:#029cf4!important;border-radius:20px!important;color:var(--White, #FFF)!important;text-align:center!important;font-size:14px!important;font-weight:500!important;line-height:20px}:host::ng-deep .md-drppicker.ltr .ranges{float:left;margin-top:10px!important}:host::ng-deep .md-drppicker td.in-range{background:var(--Primary-50, #EAF8FF)}:host::ng-deep .md-drppicker .ranges ul li button.active{background:var(--Primary-50, #EAF8FF)!important;border-radius:8px!important;color:var(--Primary-700, #009BF3);font-size:14px!important;font-weight:500!important;line-height:20px!important}:host::ng-deep table th,:host::ng-deep table td{width:40px!important;height:40px!important;padding:10px 8px!important}:host::ng-deep .md-drppicker td.available.prev,:host::ng-deep .md-drppicker th.available.prev{background-image:url(data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB2aWV3Qm94PSIwIDAgMy43IDYiIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDMuNyA2IiB4bWw6c3BhY2U9InByZXNlcnZlIj4NCjxnPg0KCTxwYXRoIGQ9Ik0zLjcsMC43TDEuNCwzbDIuMywyLjNMMyw2TDAsM2wzLTNMMy43LDAuN3oiLz4NCjwvZz4NCjwvc3ZnPg0K)!important;background-repeat:no-repeat!important;background-size:.5em!important;background-position:center!important}:host::ng-deep .md-drppicker td.available.next,:host::ng-deep .md-drppicker th.available.next{background-image:url(data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB2aWV3Qm94PSIwIDAgMy43IDYiIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDMuNyA2IiB4bWw6c3BhY2U9InByZXNlcnZlIj4NCjxnPg0KCTxwYXRoIGQ9Ik0zLjcsMC43TDEuNCwzbDIuMywyLjNMMyw2TDAsM2wzLTNMMy43LDAuN3oiLz4NCjwvZz4NCjwvc3ZnPg0K)!important;background-repeat:no-repeat!important;background-size:.5em!important;background-position:center!important}:host::ng-deep table th{border-bottom:0px solid var(--Gray-200, #EAECF0)!important;background:transparent!important;color:var(--Gray-700, #344054)!important;text-align:center;font-size:16px!important;font-weight:500!important;line-height:24px}:host::ng-deep .md-drppicker td.available.invalid-date{text-decoration:line-through;pointer-events:none;color:#a9a9a9}:host::ng-deep .md-drppicker td.available.today:not(.invalid-date){text-decoration:unset;pointer-events:unset;color:unset}:host::ng-deep .md-drppicker .btn.btn-default{border-radius:8px!important;border:1px solid var(--Gray-300, #D0D5DD)!important;background:var(--White, #FFF)!important;box-shadow:0 1px 2px #1018280d!important;color:var(--Gray-700, #344054)!important;font-size:14px!important;font-weight:600!important;line-height:20px;text-transform:capitalize;margin-right:10px!important}.loader .title{width:65%}.loader .link{width:85%}.loader .description{width:95%}.loader .shimmer{padding:15px;width:95%;height:120px;margin:10px auto;background:#fff}.loader .shimmer .image-card{height:90px;width:90px;float:right;border-radius:8px}.loader .stroke{height:15px;background:#777;margin-top:20px}.loader .wrapper{width:0px;animation:fullView .5s forwards linear}@keyframes fullView{to{width:100%}}.loader .animate{animation:shimmer 3s;animation-iteration-count:infinite;background:linear-gradient(to right,#e6e6e6 5%,#ccc 25%,#e6e6e6 35%);background-size:1000px 100%}@keyframes shimmer{0%{background-position:-1000px 0}to{background-position:1000px 0}}.img-src{width:25%!important}\n"] }]
204
+ args: [{ selector: 'lib-store-activity', template: "<div class=\"card\">\r\n <div class=\"card-header border-0\">\r\n <div class=\"card-title flex-column\">\r\n <span class=\"card-label\">\r\n Activity\r\n </span>\r\n <span class=\"text-sub\">\r\n An overview of the store issues and the downtime for {{headerFilter?.date?.startDate|customDateFormat}}\r\n - {{headerFilter?.date?.endDate|customDateFormat}}\r\n </span>\r\n </div>\r\n <div class=\"card-toolbar\">\r\n <div class=\"position-relative\">\r\n <button type=\"button\" (click)=\"openDropdown($event)\"\r\n class=\"btn btn-default mx-2 btn-outline btn-outline-default rounded-3 text-nowrap border-val\"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\" viewBox=\"0 0 20 21\" fill=\"none\">\r\n <path d=\"M5 10.0264H15M2.5 5.02637H17.5M7.5 15.0264H12.5\" stroke=\"#344054\" stroke-width=\"2\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n <span class=\"ms-2\">Filter</span> </button>\r\n <div *ngIf=\"dropDown\" class=\"card py-1 w-200px position-absolute top-50px end-0 z-1\">\r\n <ul *ngFor=\"let item of dropdownItems\" class=\"list-unstyled\">\r\n <li [ngClass]=\"this.filteredIssue == item ? 'active' : ''\"\r\n class=\"camera px-5 items fw-semibold cursor-pointer py-2\" (click)=\"selectItem(item)\">\r\n {{item}}</li>\r\n </ul>\r\n </div>\r\n </div>\r\n <div class=\"btn btn-default btn-outline\" (click)=\"exportStoreListasXlsx()\">\r\n <span><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\" viewBox=\"0 0 20 21\" fill=\"none\">\r\n <path\r\n d=\"M17.5 12.5264V15.8597C17.5 16.3017 17.3244 16.7257 17.0118 17.0382C16.6993 17.3508 16.2754 17.5264 15.8333 17.5264H4.16667C3.72464 17.5264 3.30072 17.3508 2.98816 17.0382C2.67559 16.7257 2.5 16.3017 2.5 15.8597V12.5264M14.1667 6.69303L10 2.52637M10 2.52637L5.83333 6.69303M10 2.52637V12.5264\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span> Export\r\n </div>\r\n <!-- <div class=\"d-flex align-items-center position-relative my-1 ms-3\">\r\n <span class=\"svg-icon svg-icon-1 position-absolute ms-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M13.3333 1.66663V4.99996M6.66667 1.66663V4.99996M2.5 8.33329H17.5M4.16667 3.33329H15.8333C16.7538 3.33329 17.5 4.07948 17.5 4.99996V16.6666C17.5 17.5871 16.7538 18.3333 15.8333 18.3333H4.16667C3.24619 18.3333 2.5 17.5871 2.5 16.6666V4.99996C2.5 4.07948 3.24619 3.33329 4.16667 3.33329Z\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <input class=\"fx-date-range form-control ps-14\" type=\"text\" matInput ngxDaterangepickerMd [drops]=\"'down'\"\r\n [opens]=\"'right'\" [ranges]=\"ranges\" [showCustomRangeLabel]=\"true\" [alwaysShowCalendars]=\"false\"\r\n [keepCalendarOpeningWithRange]=\"true\" [showCancel]=\"true\" autocomplete=\"off\" [(ngModel)]=\"selectedDateRange\"\r\n [locale]=\"{ format: 'DD-MM-YYYY', firstDay: 1, monthNames: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'] }\"\r\n (datesUpdated)=\"datechange($event)\" name=\"daterange\" />\r\n </div> -->\r\n </div>\r\n </div>\r\n <div class=\"card-body\">\r\n <div class=\"d-flex\">\r\n <div *ngFor=\"let issue of ticketCard\" class=\"card card-view p-5 me-5\">\r\n <span class=\"title fw-bold\">{{issue.count}}</span>\r\n <span class=\"sub-title fw-semibold\">{{issue.name}}</span>\r\n </div>\r\n </div>\r\n <div class=\"rounded-3 border border-gray border-1 mt-5\">\r\n <div *ngIf=\"!loading && !noData\" class=\"row p-5\">\r\n <div class=\"col-sm-6\">\r\n <div *ngFor=\"let data of storeTicket;let index = index\" class=\"issuecard w-100 mb-4 cursor-pointer\"\r\n (click)=\"ShowTicket(index,data?.ticketId)\" [ngClass]=\"selectCard == index ? 'active' : ''\">\r\n <div class=\"maincard-label fw-bold d-flex justify-content-between mb-5\"><span> <img\r\n src='./assets/tango/Images/ticket.svg'> {{data?.ticketId}}</span> <span\r\n class=\"badge text-success\"\r\n [ngClass]=\"data.status == 'closed' ? 'badge-light-success' :(data.status == 'inprogress' ? 'badge-light-primary':'badge-light-warning')\">{{data.status}}</span>\r\n </div>\r\n <div *ngIf=\"data.issueStatus === 'notidentified'\" class=\"mb-5 contenttext\">\r\n We have not received data from your store. We are currently investigating the issue.\r\n </div>\r\n <div *ngIf=\"data.issueStatus ==='identified'\" class=\"mb-5 contenttext\">Store is currently\r\n encountering a <span class=\"fw-bold-700\">{{data.primaryIssue}}</span> which is\r\n <span *ngFor=\"let secondary of data.secondaryIssue; let last = last\"\r\n class=\"fw-bold-700\">{{secondary?.name}}<ng-container *ngIf=\"!last\"> ,</ng-container>\r\n </span>.\r\n </div>\r\n\r\n <div class=\"d-flex justify-content-between\">\r\n <div class=\"profile d-flex align-items-centre justify-content-centre\">\r\n <img class=\"\" src=\"./assets/tango/Images/gropmodal.png\" alt=\"\">\r\n </div>\r\n <div class=\"d-flex justify-content-between\">\r\n <span class=\"contenttext px-3\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\"\r\n height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M14 10C14 10.3536 13.8595 10.6928 13.6095 10.9428C13.3594 11.1929 13.0203 11.3333 12.6667 11.3333H4.66667L2 14V3.33333C2 2.97971 2.14048 2.64057 2.39052 2.39052C2.64057 2.14048 2.97971 2 3.33333 2H12.6667C13.0203 2 13.3594 2.14048 13.6095 2.39052C13.8595 2.64057 14 2.97971 14 3.33333V10Z\"\r\n stroke=\"#667085\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg> {{data.comments}} </span>\r\n <span class=\"contenttext px-3\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\"\r\n height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M10.6667 1.33398V4.00065M5.33333 1.33398V4.00065M2 6.66732H14M3.33333 2.66732H12.6667C13.403 2.66732 14 3.26427 14 4.00065V13.334C14 14.0704 13.403 14.6673 12.6667 14.6673H3.33333C2.59695 14.6673 2 14.0704 2 13.334V4.00065C2 3.26427 2.59695 2.66732 3.33333 2.66732Z\"\r\n stroke=\"#667085\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg> {{data.Date}}</span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-sm-6\">\r\n <div class=\"maincard-label fw-bold d-flex justify-content-between\">\r\n <span><img src='./assets/tango/Images/ticket.svg'>{{ticketInfo?.ticketId}}</span>\r\n <span class=\"badge badge-light-primary\">{{ticketInfo?.status}}</span>\r\n </div>\r\n <div *ngFor=\"let obj of viewTicketData;let i=index\" class=\"\">\r\n <!-- User code start -->\r\n <div *ngIf=\"obj.actionBy === 'User'\" class=\"d-flex ms-5\">\r\n <div *ngIf=\"obj.actionType !=='statusChange'\"\r\n class=\"d-flex flex-column justify-content-center align-items-center pe-3\">\r\n <div class=\"d-flex align-items-centre justify-content-centre\">\r\n <img class=\"msgprofile\"\r\n src='https://images.unsplash.com/photo-1441986300917-64674bd600d8?w=500&auto=format&fit=crop&q=60&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxzZWFyY2h8Mnx8c3RvcmV8ZW58MHx8MHx8fDA%3D'>\r\n </div>\r\n <div class=\"p-0 h-100 mt-3 border border-1 border-gray\" style=\"width:0px\"></div>\r\n </div>\r\n <div class=\"py-3\">\r\n <div *ngIf=\"obj.actionType !=='statusChange'\">\r\n <div class=\"d-flex mb-3\">\r\n <span class=\"headingtext fw-bold\">{{obj?.actionBy}}</span>\r\n <span class=\"timingtext px-3 pt-1 fw-bold-400\">{{obj?.timeStamp}}</span>\r\n </div>\r\n <span class=\"profile-label font-bold-400\">User has replied</span>\r\n </div>\r\n <div *ngIf=\"obj.actionType == 'statusCheckReply'\">\r\n <div class=\"textupdates fw-bold-400 mt-3\">Issue has been <b><span\r\n *ngIf=\"obj.statusCheckReply=='No'\">not</span> resolved.</b>\r\n\r\n </div>\r\n <div class=\"textupdates fw-bold-400\" *ngIf=\"obj.statusCheckReply=='No'\"> It takes\r\n {{obj?.hibernationDays}} more days to resolve.</div>\r\n </div>\r\n <div *ngIf=\"\" class=\"\">\r\n <span class=\"investigation fw-bold-400\">Are all CCTV cameras functioning\r\n properly?</span>\r\n <div class=\"row\">\r\n <div class=\"col-sm-4\">\r\n <span class=\"\">Camera 1</span>\r\n <div\r\n class=\"d-flex align-items-centre justify-content-centre rounded-3 overflow-hidden\">\r\n <img class=\"w-100\"\r\n src='https://images.unsplash.com/photo-1441986300917-64674bd600d8?w=500&auto=format&fit=crop&q=60&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxzZWFyY2h8Mnx8c3RvcmV8ZW58MHx8MHx8fDA%3D'>\r\n </div>\r\n </div>\r\n <div class=\"col-sm-4\">\r\n <span class=\"\">Camera 2</span>\r\n <div\r\n class=\"d-flex align-items-centre justify-content-centre rounded-3 overflow-hidden\">\r\n <img class=\"w-100\"\r\n src='https://images.unsplash.com/photo-1441986300917-64674bd600d8?w=500&auto=format&fit=crop&q=60&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxzZWFyY2h8Mnx8c3RvcmV8ZW58MHx8MHx8fDA%3D'>\r\n </div>\r\n </div>\r\n <div class=\"col-sm-4\">\r\n <span class=\"\">Camera 3</span>\r\n <div\r\n class=\"d-flex align-items-centre justify-content-centre rounded-3 overflow-hidden\">\r\n <img class=\"w-100\"\r\n src='https://images.unsplash.com/photo-1441986300917-64674bd600d8?w=500&auto=format&fit=crop&q=60&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxzZWFyY2h8Mnx8c3RvcmV8ZW58MHx8MHx8fDA%3D'>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"textupdates fw-bold-400 mt-5\">\r\n The above camera streaming are not working due <span class=\"fw-bold-700\">power\r\n issue</span> to the camera.\r\n </div>\r\n </div>\r\n <div *ngIf=\"obj.actionType ==='issueUpdate'\">\r\n <div *ngFor=\"let res of obj?.reasons\">\r\n <div class=\"textupdates fw-semibold mt-3\">\r\n We're currently encountering an <span\r\n class=\"fw-bold-700\">{{res.primaryIssue}}</span>\r\n </div>\r\n <div class=\"mt-3\">\r\n <span class=\"investigation fw-bold-400\">The following are the relevant\r\n problem\r\n facing</span>\r\n <ul class=\"timingtext fw-bold-400 mt-3\"\r\n *ngFor=\"let secIssues of res?.secondaryIssue\">\r\n <li>{{secIssues.name}}</li>\r\n </ul>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"selectedIssue === ''\" class=\"profile-label fw-semibold mt-2\">\r\n Kindly choose the option below that corresponds to the issue you are experiencing in\r\n the\r\n store.\r\n </div>\r\n </div>\r\n </div>\r\n <!-- User code end -->\r\n <!-- Tango code start -->\r\n <div *ngIf=\"obj.actionBy === 'Tango'\" class=\"d-flex mb-5 ms-5\">\r\n <div class=\"d-flex flex-column justify-content-center align-items-center pe-3\">\r\n <div class=\"d-flex align-items-centre justify-content-centre\">\r\n <img class=\"msgprofile\" src=\"./assets/tango/Images/tangoprofile.png\">\r\n </div>\r\n <div class=\"p-0 h-100 mt-3 border border-1 border-gray\" style=\"width:0px\"></div>\r\n </div>\r\n <div class=\"py-3\">\r\n <div class=\"d-flex mb-3\">\r\n <span class=\"headingtext fw-bold\">{{obj?.actionBy}}</span>\r\n <span class=\"timingtext fw-bold-400 px-3 pt-1\">{{obj?.timeStamp}}</span>\r\n </div>\r\n <div class=\"mb-3\">\r\n <span class=\"profile-label fw-bold-400\">tango has replied to the\r\n issue</span>\r\n <div *ngIf=\"obj.actionType == 'dataRecived'\">\r\n <div class=\"textupdates fw-bold-400 mt-3\">Data Received\r\n </div>\r\n </div>\r\n <div *ngIf=\"obj.actionType == 'statusCheckMonitor'\">\r\n <div class=\"textupdates fw-bold-400 mt-3\">Thank you for the update. We\u2019ll get back after the buffer time you provided.\r\n </div>\r\n </div>\r\n <div *ngIf=\"obj.actionType ==='stepsToResolve'\" class=\"mt-3\">\r\n <span class=\"textupdates fw-bold-400\">Please follow the below steps to resolve\r\n the above issue</span>\r\n <div *ngFor=\"let res of obj?.reasons\">\r\n <div class=\"mt-5\">\r\n <span class=\"headingtext fw-semibold\">{{res.primaryIssue}}</span>\r\n <ul class=\"mt-3 timingtext fw-bold-400\"\r\n *ngFor=\"let secIssues of res?.secondaryIssue\">\r\n <li>{{secIssues.name}}</li>\r\n </ul>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n <!-- defaultInfra start -->\r\n <div *ngIf=\"obj.actionType ==='defaultInfra'\" class=\"contenttext fw-bold-400\">We have\r\n not\r\n received data from your store. We are currently investigating the issue</div>\r\n <!-- defaultInfra end -->\r\n\r\n\r\n\r\n\r\n\r\n </div>\r\n </div>\r\n <!-- Tango code end -->\r\n </div>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n <ng-container *ngIf=\"loading\">\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=\"noData\">\r\n <div class=\"row\">\r\n <div class=\"col-lg-12 mb-3\">\r\n <div class=\"card-body d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-src\" src=\"./assets/tango/Icons/Nodata.svg\" alt=\"\">\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n </div>", styles: [".card-label{font-size:16px!important;line-height:24px!important}.card-view{width:250px}.card-view .title{color:var(--Gray-900, #101828);font-size:20px;line-height:30px}.card-view .sub-title{color:var(--Gray-700, #344054);font-size:14px;line-height:20px}.issuecard{width:240px;border-radius:10px;border:1px solid var(--Gray-200, #EAECF0);padding:16px}.issuecard label{color:var(--Black, #101828);font-size:14px;line-height:20px}.issuecard.active,.card-view.active{border:none!important;background:var(--Primary-25, #F6FCFF);box-shadow:0 0 0 4px #e9f7ff}.contenttext{color:var(--Gray-500, #667085);font-size:14px;font-weight:400;line-height:20px}.maincard-content{border-radius:8px;border:1px solid var(--Gray-300, #D0D5DD)}.maincard-label{color:var(--Gray-900, #101828);font-size:16px;line-height:24px}.profile{width:24px;height:24px;overflow:hidden;border-radius:200px}.fw-bold-700{font-weight:700!important}.fw-bold-400{font-weight:400!important}.msgprofile{width:48px!important;height:48px!important;border-radius:200px;overflow:hidden}.timingtext{color:var(--Gray-500, #667085);font-size:12px;line-height:18px}.profile-label{font-size:16px;color:var(--Gray-500, #667085);line-height:24px}.w-45{width:49%}.textupdates{color:var(--Gray-700, #344054);font-size:16px;line-height:24px}.textupdates1{color:var(--Gray-700, #344054);font-size:14px;line-height:24px}.items:hover,.tems.focus,.items.active,.camera.focus-visible{background:var(--Gray-50, #F9FAFB)}.daterangepicker{display:block!important;top:153.85px!important;left:900px!important;right:0}.form-control{color:var(--Gray-700, #344054)!important;font-size:14px!important;font-weight:600;line-height:20px;text-transform:capitalize}:host::ng-deep .md-drppicker .btn{line-height:10px!important}:host::ng-deep .md-drppicker.drops-down-right.ltr.double.show-ranges.shown{top:65px!important;left:-470px!important;height:400px!important}:host::ng-deep .md-drppicker .btn{border-radius:8px!important;border:1px solid var(--Primary-600, #00A3FF)!important;background:var(--Primary-600, #00A3FF)!important;box-shadow:0 1px 2px #1018280d!important;color:var(--White, #FFF)!important;font-size:14px!important;font-weight:600!important;line-height:20px;text-transform:capitalize}:host::ng-deep .md-drppicker .ranges ul li button{padding:12px 16px;width:160px;color:var(--Gray-700, #344054);font-size:14px;font-weight:400;line-height:20px;background:none;border:none;text-align:left;cursor:pointer}:host::ng-deep .md-drppicker td.active,:host::ng-deep .md-drppicker td.active:hover{background-color:#029cf4!important;border-radius:20px!important;color:var(--White, #FFF)!important;text-align:center!important;font-size:14px!important;font-weight:500!important;line-height:20px}:host::ng-deep .md-drppicker.ltr .ranges{float:left;margin-top:10px!important}:host::ng-deep .md-drppicker td.in-range{background:var(--Primary-50, #EAF8FF)}:host::ng-deep .md-drppicker .ranges ul li button.active{background:var(--Primary-50, #EAF8FF)!important;border-radius:8px!important;color:var(--Primary-700, #009BF3);font-size:14px!important;font-weight:500!important;line-height:20px!important}:host::ng-deep table th,:host::ng-deep table td{width:40px!important;height:40px!important;padding:10px 8px!important}:host::ng-deep .md-drppicker td.available.prev,:host::ng-deep .md-drppicker th.available.prev{background-image:url(data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB2aWV3Qm94PSIwIDAgMy43IDYiIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDMuNyA2IiB4bWw6c3BhY2U9InByZXNlcnZlIj4NCjxnPg0KCTxwYXRoIGQ9Ik0zLjcsMC43TDEuNCwzbDIuMywyLjNMMyw2TDAsM2wzLTNMMy43LDAuN3oiLz4NCjwvZz4NCjwvc3ZnPg0K)!important;background-repeat:no-repeat!important;background-size:.5em!important;background-position:center!important}:host::ng-deep .md-drppicker td.available.next,:host::ng-deep .md-drppicker th.available.next{background-image:url(data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB2aWV3Qm94PSIwIDAgMy43IDYiIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDMuNyA2IiB4bWw6c3BhY2U9InByZXNlcnZlIj4NCjxnPg0KCTxwYXRoIGQ9Ik0zLjcsMC43TDEuNCwzbDIuMywyLjNMMyw2TDAsM2wzLTNMMy43LDAuN3oiLz4NCjwvZz4NCjwvc3ZnPg0K)!important;background-repeat:no-repeat!important;background-size:.5em!important;background-position:center!important}:host::ng-deep table th{border-bottom:0px solid var(--Gray-200, #EAECF0)!important;background:transparent!important;color:var(--Gray-700, #344054)!important;text-align:center;font-size:16px!important;font-weight:500!important;line-height:24px}:host::ng-deep .md-drppicker td.available.invalid-date{text-decoration:line-through;pointer-events:none;color:#a9a9a9}:host::ng-deep .md-drppicker td.available.today:not(.invalid-date){text-decoration:unset;pointer-events:unset;color:unset}:host::ng-deep .md-drppicker .btn.btn-default{border-radius:8px!important;border:1px solid var(--Gray-300, #D0D5DD)!important;background:var(--White, #FFF)!important;box-shadow:0 1px 2px #1018280d!important;color:var(--Gray-700, #344054)!important;font-size:14px!important;font-weight:600!important;line-height:20px;text-transform:capitalize;margin-right:10px!important}.loader .title{width:65%}.loader .link{width:85%}.loader .description{width:95%}.loader .shimmer{padding:15px;width:95%;height:120px;margin:10px auto;background:#fff}.loader .shimmer .image-card{height:90px;width:90px;float:right;border-radius:8px}.loader .stroke{height:15px;background:#777;margin-top:20px}.loader .wrapper{width:0px;animation:fullView .5s forwards linear}@keyframes fullView{to{width:100%}}.loader .animate{animation:shimmer 3s;animation-iteration-count:infinite;background:linear-gradient(to right,#e6e6e6 5%,#ccc 25%,#e6e6e6 35%);background-size:1000px 100%}@keyframes shimmer{0%{background-position:-1000px 0}to{background-position:1000px 0}}.img-src{width:25%!important}\n"] }]
218
205
  }], ctorParameters: () => [{ type: i1.TicketsService }, { type: i2.DataService }, { type: i0.ChangeDetectorRef }, { type: i3.GlobalStateService }], propDecorators: { storeId: [{
219
206
  type: Input
220
207
  }], onClick: [{
221
208
  type: HostListener,
222
209
  args: ['document:click', ['$event']]
223
210
  }] } });
224
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmUtYWN0aXZpdHkuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGFuZ28tdGlja2V0LXVzZXIvc3JjL2xpYi9jb21wb25lbnRzL3N0b3JlLWFjdGl2aXR5L3N0b3JlLWFjdGl2aXR5LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RhbmdvLXRpY2tldC11c2VyL3NyYy9saWIvY29tcG9uZW50cy9zdG9yZS1hY3Rpdml0eS9zdG9yZS1hY3Rpdml0eS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFDLFlBQVksRUFBQyxLQUFLLEVBQTBCLE1BQU0sZUFBZSxDQUFDO0FBRXJGLE9BQVEsS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUMzQixPQUFPLGlCQUFpQixDQUFDO0FBQ3pCLE9BQU8sR0FBRyxNQUFNLGtCQUFrQixDQUFDO0FBQ25DLE9BQU8sUUFBUSxNQUFNLHVCQUF1QixDQUFDO0FBSzdDLE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7Ozs7OztBQUUxQyxLQUFLLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ2xCLEtBQUssQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUE7QUFPdEIsTUFBTSxPQUFPLHNCQUFzQjtJQXlCYjtJQUNWO0lBQ0E7SUFDQTtJQTNCVixVQUFVLENBQUs7SUFDZixLQUFLLENBQUs7SUFDVixhQUFhLEdBQU8sZUFBZSxDQUFDO0lBQ3BDLGFBQWEsR0FBTyxVQUFVLENBQUU7SUFDaEMsT0FBTyxHQUFXLElBQUksQ0FBQztJQUN2QixNQUFNLEdBQVcsS0FBSyxDQUFDO0lBQ3ZCLE9BQU8sR0FBVyxJQUFJLENBQUM7SUFDdkIsV0FBVyxDQUFLO0lBQ2hCLFdBQVcsQ0FBSztJQUNoQixhQUFhLEdBQVcsSUFBSSxDQUFDO0lBQzdCLFdBQVcsR0FBUyxDQUFDLHVCQUF1QixFQUFDLGdCQUFnQixFQUFDLGNBQWMsRUFBQyxjQUFjLEVBQUMsbUJBQW1CLENBQUMsQ0FBQTtJQUNoSCxRQUFRLEdBQVksS0FBSyxDQUFDO0lBQzFCLGFBQWEsR0FBUyxDQUFDLEtBQUssRUFBQyx1QkFBdUIsRUFBQyxnQkFBZ0IsRUFBQyxjQUFjLEVBQUUsY0FBYyxFQUFDLG1CQUFtQixDQUFDLENBQUE7SUFFekgsaUJBQWlCLEdBQVEsRUFBRSxDQUFDO0lBQzVCLFFBQVEsQ0FBTTtJQUNkLGVBQWUsQ0FBTTtJQUNyQixVQUFVLENBQU07SUFDaEIsY0FBYyxDQUFNO0lBQ3BCLFlBQVksQ0FBTTtJQUNsQixJQUFJLENBQU07SUFDTyxRQUFRLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztJQUNqQyxPQUFPLENBQU87SUFDekIsS0FBSyxHQUFFLEtBQUssQ0FBQTtJQUNWLFlBQW9CLE9BQXNCLEVBQ2hDLFdBQXVCLEVBQ3ZCLEVBQXFCLEVBQ3JCLEVBQXFCO1FBSFgsWUFBTyxHQUFQLE9BQU8sQ0FBZTtRQUNoQyxnQkFBVyxHQUFYLFdBQVcsQ0FBWTtRQUN2QixPQUFFLEdBQUYsRUFBRSxDQUFtQjtRQUNyQixPQUFFLEdBQUYsRUFBRSxDQUFtQjtRQUM3QixXQUFXLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQVEsRUFBQyxFQUFFO1lBQ3RDLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO1FBQ3BCLENBQUMsQ0FBQyxDQUFBO0lBQ0osQ0FBQztJQUdELE9BQU8sQ0FBRSxLQUFpQjtRQUN4QixNQUNFLE1BQU0sR0FBRyxLQUFLLENBQUMsTUFBcUIsQ0FBQztRQUN2QyxJQUFHLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsRUFBRTtZQUMvQixJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztTQUN2QjtJQUNILENBQUM7SUFFRCxRQUFRO1FBRU4sSUFBSSxDQUFDLEVBQUUsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFTLEVBQUUsRUFBRTtZQUM1RSxJQUFHLElBQUksSUFBRSxJQUFJLEVBQUM7Z0JBQ1osSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLElBQUUsRUFBRSxDQUFDLENBQUE7Z0JBQzdELElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO2dCQUN6QixJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7Z0JBQ3ZCLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQzthQUN4QjtRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN6QixJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFRCxlQUFlO1FBQ2IsSUFBSSxJQUFJLEdBQUU7WUFDUixPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU87WUFDckIsUUFBUSxFQUFFLElBQUksQ0FBQyxZQUFZLEVBQUUsSUFBSSxFQUFFLFNBQVM7WUFDNUMsTUFBTSxFQUFFLElBQUksQ0FBQyxZQUFZLEVBQUUsSUFBSSxFQUFFLE9BQU87U0FDekMsQ0FBQTtRQUNELElBQUksQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDLFNBQVMsQ0FBQztZQUMzQyxJQUFJLEVBQUMsQ0FBQyxHQUFPLEVBQUMsRUFBRTtnQkFDZCxJQUFHLEdBQUcsSUFBSSxHQUFHLEVBQUUsSUFBSSxJQUFJLEdBQUcsRUFBQztvQkFDeEIsSUFBSSxDQUFDLFVBQVUsR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztpQkFDbEM7WUFDSCxDQUFDO1lBQ0QsS0FBSyxDQUFDLEdBQUc7WUFFVCxDQUFDO1lBQ0QsUUFBUTtZQUVSLENBQUM7U0FDRixDQUFDLENBQUE7SUFDSixDQUFDO0lBRUQsZUFBZTtRQUNiLElBQUksSUFBSSxHQUFFO1lBQ1IsT0FBTyxFQUFDLElBQUksQ0FBQyxPQUFPO1lBQ3BCLFFBQVEsRUFBRSxJQUFJLENBQUMsWUFBWSxFQUFFLElBQUksRUFBRSxTQUFTO1lBQzVDLE1BQU0sRUFBRSxJQUFJLENBQUMsWUFBWSxFQUFFLElBQUksRUFBRSxPQUFPO1lBQ3hDLE1BQU0sRUFBRSxJQUFJLENBQUMsYUFBYTtZQUMxQixNQUFNLEVBQUMsS0FBSztTQUNiLENBQUE7UUFDRCxJQUFJLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxTQUFTLENBQUM7WUFDM0MsSUFBSSxFQUFDLENBQUMsR0FBTyxFQUFDLEVBQUU7Z0JBQ2QsSUFBRyxHQUFHLElBQUksR0FBRyxDQUFDLElBQUksSUFBSSxHQUFHLEVBQUM7b0JBQ3hCLElBQUksQ0FBQyxXQUFXLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUE7b0JBQ2hDLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsRUFBRSxRQUFRLENBQUM7b0JBQzlDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztvQkFDbEIsSUFBSSxDQUFDLE9BQU8sR0FBQyxLQUFLLENBQUM7b0JBQ25CLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO2lCQUNyQjtxQkFBSTtvQkFDSCxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztvQkFDbkIsSUFBSSxDQUFDLE9BQU8sR0FBQyxLQUFLLENBQUM7aUJBQ3BCO2dCQUNELElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDMUIsQ0FBQztZQUNELEtBQUssRUFBQyxDQUFDLEdBQUcsRUFBQyxFQUFFO2dCQUNULElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO2dCQUNuQixJQUFJLENBQUMsT0FBTyxHQUFDLEtBQUssQ0FBQztZQUN2QixDQUFDO1lBQ0QsUUFBUSxFQUFDLEdBQUUsRUFBRTtZQUViLENBQUM7U0FDRixDQUFDLENBQUE7SUFDSixDQUFDO0lBRUQsVUFBVTtRQUNSLElBQUksSUFBSSxHQUFHO1lBQ1QsVUFBVSxFQUFDLElBQUksQ0FBQyxRQUFRO1NBQ3pCLENBQUE7UUFDRCxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxTQUFTLENBQUM7WUFDdEMsSUFBSSxFQUFDLENBQUMsR0FBTyxFQUFDLEVBQUU7Z0JBQ2QsSUFBRyxHQUFHLElBQUksR0FBRyxDQUFDLElBQUksSUFBSSxHQUFHLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxFQUFDO29CQUNsRSxJQUFJLENBQUMsV0FBVyxHQUFHLEdBQUcsRUFBRSxJQUFJLENBQUM7b0JBQzdCLElBQUksQ0FBQyxjQUFjLEdBQUcsR0FBRyxFQUFFLElBQUksRUFBRSxjQUFjLENBQUMsS0FBSyxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUM7b0JBQ2xFLDRDQUE0QztvQkFDNUMscURBQXFEO29CQUNyRCxNQUFNO29CQUNOLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxFQUFFLENBQUM7aUJBQ3pCO1lBQ0gsQ0FBQztZQUNELEtBQUssRUFBQyxDQUFDLEdBQUcsRUFBQyxFQUFFO1lBQ2IsQ0FBQztZQUNELFFBQVEsRUFBQyxHQUFFLEVBQUU7WUFDYixDQUFDO1NBQ0YsQ0FBQyxDQUFBO0lBQ0osQ0FBQztJQUVELHFCQUFxQjtRQUNuQixJQUFJLElBQUksR0FBRTtZQUNSLE9BQU8sRUFBQyxJQUFJLENBQUMsT0FBTztZQUNwQixRQUFRLEVBQUUsSUFBSSxDQUFDLFlBQVksRUFBRSxJQUFJLEVBQUUsU0FBUztZQUM1QyxNQUFNLEVBQUUsSUFBSSxDQUFDLFlBQVksRUFBRSxJQUFJLEVBQUUsT0FBTztZQUN4QyxNQUFNLEVBQUUsSUFBSSxDQUFDLGFBQWE7WUFDMUIsTUFBTSxFQUFFLElBQUk7U0FDYixDQUFBO1FBQ0QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxTQUFTLENBQUM7WUFDakQsSUFBSSxFQUFDLENBQUMsR0FBTyxFQUFDLEVBQUU7Z0JBQ2QsSUFBSSxTQUFTLEdBQUcsR0FBRyxDQUFDO2dCQUNwQixJQUFJLENBQUMsV0FBVyxDQUFDLGVBQWUsQ0FBQyxTQUFTLEVBQUMsT0FBTyxDQUFDLENBQUE7WUFDckQsQ0FBQztZQUNELEtBQUssRUFBQyxDQUFDLEdBQUcsRUFBQyxFQUFFO1lBQ2IsQ0FBQztZQUNELFFBQVE7WUFFUixDQUFDO1NBQ0YsQ0FBQyxDQUFBO0lBQ0osQ0FBQztJQUVELFVBQVUsQ0FBQyxLQUFTLEVBQUMsS0FBUztRQUM1QixJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDcEMsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7UUFDdEIsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQ3BCLENBQUM7SUFFRCxXQUFXLENBQUMsS0FBUztRQUNsQixJQUFJLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQztRQUMzQixJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVELFVBQVUsQ0FBQyxLQUFTO1FBQ2xCLElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDO1FBQzNCLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO0lBQ3hCLENBQUM7SUFFRCxZQUFZLENBQUMsS0FBZ0I7UUFDM0IsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxRQUFRLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ2pDLENBQUM7SUFHRCxNQUFNLEdBQVE7UUFDWixPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ3JDLFdBQVcsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ2pGLFdBQVcsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUM3RCxXQUFXLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsUUFBUSxDQUFDLEVBQUUsRUFBRSxNQUFNLENBQUMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ2hILFlBQVksRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUMxRSxZQUFZLEVBQUU7WUFDWixJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDO1lBQ2xELElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUM7U0FDakQ7S0FDRixDQUFDO0lBRUYsVUFBVSxDQUFDLEtBQVU7UUFDckIsSUFBSSxLQUFLLElBQUksS0FBSyxDQUFDLFNBQVMsSUFBSSxLQUFLLENBQUMsT0FBTyxFQUFFO1lBQzdDLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsT0FBTyxFQUFFLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7Z0JBQ2hGLDJDQUEyQztnQkFDM0MsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7Z0JBQzFGLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO2FBQ3ZGO2lCQUFNO2dCQUNMLHVEQUF1RDtnQkFDdkQsT0FBTyxDQUFDLEtBQUssQ0FBQyx5QkFBeUIsRUFBRSxLQUFLLENBQUMsU0FBUyxFQUFFLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFDekUsd0dBQXdHO2dCQUN4RyxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsa0JBQWtCLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQztnQkFDbkYsSUFBSSxhQUFhLENBQUMsU0FBUyxJQUFJLGFBQWEsQ0FBQyxPQUFPLEVBQUU7b0JBQ3BELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO29CQUM1RixJQUFJLENBQUMsaUJBQWlCLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztpQkFDekY7YUFDRjtTQUNGO2FBQU07WUFDTCxPQUFPLENBQUMsS0FBSyxDQUFDLHVCQUF1QixFQUFFLEtBQUssQ0FBQyxDQUFDO1NBQy9DO0lBQ0gsQ0FBQzt1R0FqTlksc0JBQXNCOzJGQUF0QixzQkFBc0Isd0pDcEJuQyxtNWdCQWtOQTs7MkZEOUxhLHNCQUFzQjtrQkFMbEMsU0FBUzsrQkFDRSxvQkFBb0I7OEtBMkJyQixPQUFPO3NCQUFmLEtBQUs7Z0JBWU4sT0FBTztzQkFETixZQUFZO3VCQUFDLGdCQUFnQixFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LEhvc3RMaXN0ZW5lcixJbnB1dCxPbkRlc3Ryb3ksT25Jbml0LE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgIGRheWpzIGZyb20gJ2RheWpzJztcclxuaW1wb3J0ICdkYXlqcy9sb2NhbGUvZW4nO1xyXG5pbXBvcnQgdXRjIGZyb20gJ2RheWpzL3BsdWdpbi91dGMnO1xyXG5pbXBvcnQgdGltZXpvbmUgZnJvbSAnZGF5anMvcGx1Z2luL3RpbWV6b25lJztcclxuaW1wb3J0IHsgRGF0YVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9kYXRhLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBUaWNrZXRzU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3RpY2tldC1pbmZyYS5zZXJ2aWNlJztcclxuLy8gaW1wb3J0IHsgR2xvYmFsU3RhdGVTZXJ2aWNlIH0gZnJvbSAncHJvamVjdHMvdGFuZ28tYXBwLXNoYXJlZC9zcmMvcHVibGljLWFwaSc7XHJcbmltcG9ydCB7IEdsb2JhbFN0YXRlU2VydmljZSB9IGZyb20gJ3RhbmdvLWFwcC11aS1zaGFyZWQnO1xyXG5pbXBvcnQgeyBTdWJqZWN0LCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcclxuXHJcbmRheWpzLmV4dGVuZCh1dGMpO1xyXG5kYXlqcy5leHRlbmQodGltZXpvbmUpXHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi1zdG9yZS1hY3Rpdml0eScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3N0b3JlLWFjdGl2aXR5LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybDogJy4vc3RvcmUtYWN0aXZpdHkuY29tcG9uZW50LnNjc3MnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTdG9yZUFjdGl2aXR5Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LE9uRGVzdHJveSB7XHJcbiAgc2VsZWN0Q2FyZDphbnk7XHJcbiAgc3RhdGU6YW55O1xyXG4gIGZpbHRlcmVkSXNzdWU6YW55ID0gJ0NhbWVyYSBJc3N1ZXMnO1xyXG4gIHNlbGVjdGVkSXNzdWU6YW55ID0gJ2ludGVybmV0JyA7XHJcbiAgdXBkYXRlZDpib29sZWFuID0gdHJ1ZTtcclxuICBub0RhdGE6Ym9vbGVhbiA9IGZhbHNlO1xyXG4gIGxvYWRpbmc6Ym9vbGVhbiA9IHRydWU7XHJcbiAgc3RvcmVUaWNrZXQ6YW55O1xyXG4gIHZpZXdUaWNrZXRzOmFueTtcclxuICByZXNvbHZlZElzc3VlOmJvb2xlYW4gPSB0cnVlO1xyXG4gIGlzc3VlT2JqZWN0OmFueVtdID0gWydTdG9yZSBPcGVyYXRpb24gSXNzdWUnLCdJbnRlcm5ldCBJc3N1ZScsJ0NhbWVyYSBJc3N1ZScsJ1N5c3RlbSBJc3N1ZScsJ0FwcGxpY2F0aW9uIElzc3VlJ11cclxuICBkcm9wRG93bjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGRyb3Bkb3duSXRlbXM6YW55W10gPSBbJ0FsbCcsJ1N0b3JlIE9wZXJhdGlvbiBJc3N1ZScsJ0ludGVybmV0IElzc3VlJywnQ2FtZXJhIElzc3VlJyAsJ1N5c3RlbSBJc3N1ZScsJ0FwcGxpY2F0aW9uIElzc3VlJ11cclxuXHJcbiAgc2VsZWN0ZWREYXRlUmFuZ2U6IGFueSA9IHt9O1xyXG4gIHRpY2tldElkOiBhbnk7XHJcbiAgZGF0ZVJhbmdlRmlsdGVyOiBhbnk7XHJcbiAgdGlja2V0Q2FyZDogYW55O1xyXG4gIHZpZXdUaWNrZXRMaXN0OiBhbnk7XHJcbiAgaGVhZGVyRmlsdGVyOiBhbnk7XHJcbiAgdXNlcjogYW55O1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgZGVzdHJveSQgPSBuZXcgU3ViamVjdCgpO1xyXG4gIEBJbnB1dCgpIHN0b3JlSWQgOiBhbnk7XHJcbmRheWpzID1kYXlqc1xyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgc2VydmljZTpUaWNrZXRzU2VydmljZSxcclxuICAgIHByaXZhdGUgZGF0YXNlcnZpY2U6RGF0YVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGNkIDpDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgIHByaXZhdGUgZ3M6R2xvYmFsU3RhdGVTZXJ2aWNlKXtcclxuICAgIGRhdGFzZXJ2aWNlLmRhdGEkLnN1YnNjcmliZSgoZGF0YTphbnkpPT57XHJcbiAgICAgIHRoaXMuc3RhdGUgPSBkYXRhO1xyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmNsaWNrJywgWyckZXZlbnQnXSlcclxuICBvbkNsaWNrIChldmVudDogTW91c2VFdmVudCkge1xyXG4gICAgY29uc3RcclxuICAgICAgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xyXG4gICAgaWYoIXRhcmdldC5jbG9zZXN0KCcuZHJvcGRvd24nKSkge1xyXG4gICAgICB0aGlzLmRyb3BEb3duID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpe1xyXG5cclxuICAgIHRoaXMuZ3MuZGF0YVJhbmdlVmFsdWUucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSgoZGF0YTogYW55KSA9PiB7XHJcbiAgICAgIGlmKGRhdGEhPW51bGwpe1xyXG4gICAgICAgIHRoaXMudXNlcj0gIEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3VzZXItaW5mbycpfHxcIlwiKVxyXG4gICAgICAgIHRoaXMuaGVhZGVyRmlsdGVyID0gZGF0YTtcclxuICAgICAgICB0aGlzLnN0b3JlVGlja2V0Y2FyZCgpO1xyXG4gICAgICAgIHRoaXMuc3RvcmVUaWNrZXRMaXN0KCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQodHJ1ZSk7XHJcbiAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XHJcbiAgfVxyXG5cclxuICBzdG9yZVRpY2tldGNhcmQoKXtcclxuICAgIGxldCBkYXRhID17XHJcbiAgICAgIHN0b3JlSWQ6IHRoaXMuc3RvcmVJZCxcclxuICAgICAgZnJvbURhdGU6IHRoaXMuaGVhZGVyRmlsdGVyPy5kYXRlPy5zdGFydERhdGUsXHJcbiAgICAgIHRvRGF0ZTogdGhpcy5oZWFkZXJGaWx0ZXI/LmRhdGU/LmVuZERhdGUsXHJcbiAgICB9XHJcbiAgICB0aGlzLnNlcnZpY2Uuc3RvcmVUaWNrZXRjYXJkKGRhdGEpLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6KHJlczphbnkpPT57XHJcbiAgICAgICAgaWYocmVzICYmIHJlcz8uY29kZSA9PSAyMDApe1xyXG4gICAgICAgICAgIHRoaXMudGlja2V0Q2FyZCA9IHJlcy5kYXRhLmRhdGE7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICBlcnJvcihlcnIpIHtcclxuICAgICAgICBcclxuICAgICAgfSxcclxuICAgICAgY29tcGxldGUoKSB7XHJcbiAgICAgICAgXHJcbiAgICAgIH0sXHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgc3RvcmVUaWNrZXRMaXN0KCl7XHJcbiAgICBsZXQgZGF0YSA9e1xyXG4gICAgICBzdG9yZUlkOnRoaXMuc3RvcmVJZCxcclxuICAgICAgZnJvbURhdGU6IHRoaXMuaGVhZGVyRmlsdGVyPy5kYXRlPy5zdGFydERhdGUsXHJcbiAgICAgIHRvRGF0ZTogdGhpcy5oZWFkZXJGaWx0ZXI/LmRhdGU/LmVuZERhdGUsXHJcbiAgICAgIGZpbHRlcjogdGhpcy5maWx0ZXJlZElzc3VlLFxyXG4gICAgICBleHBvcnQ6ZmFsc2VcclxuICAgIH0gXHJcbiAgICB0aGlzLnNlcnZpY2Uuc3RvcmVUaWNrZXRMaXN0KGRhdGEpLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6KHJlczphbnkpPT4ge1xyXG4gICAgICAgIGlmKHJlcyAmJiByZXMuY29kZSA9PSAyMDApe1xyXG4gICAgICAgICAgdGhpcy5zdG9yZVRpY2tldCA9IHJlcy5kYXRhLmRhdGFcclxuICAgICAgICAgIHRoaXMudGlja2V0SWQgPSB0aGlzLnN0b3JlVGlja2V0WzBdPy50aWNrZXRJZDtcclxuICAgICAgICAgIHRoaXMudmlld1RpY2tldCgpO1xyXG4gICAgICAgICAgdGhpcy5sb2FkaW5nPWZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5ub0RhdGEgPSBmYWxzZTtcclxuICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgIHRoaXMubm9EYXRhID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMubG9hZGluZz1mYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIH0sXHJcbiAgICAgIGVycm9yOihlcnIpPT4ge1xyXG4gICAgICAgICAgdGhpcy5ub0RhdGEgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5sb2FkaW5nPWZhbHNlO1xyXG4gICAgICB9LFxyXG4gICAgICBjb21wbGV0ZTooKT0+IHtcclxuICAgICAgICBcclxuICAgICAgfSxcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICB2aWV3VGlja2V0KCl7XHJcbiAgICBsZXQgZGF0YSA9IHsgXHJcbiAgICAgIFwidGlja2V0SWRcIjp0aGlzLnRpY2tldElkXHJcbiAgICB9XHJcbiAgICB0aGlzLnNlcnZpY2Uudmlld1RpY2tldChkYXRhKS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OihyZXM6YW55KT0+e1xyXG4gICAgICAgIGlmKHJlcyAmJiByZXMuY29kZSA9PSAyMDAgJiYgQXJyYXkuaXNBcnJheShyZXMuZGF0YS50aWNrZXRBY3Rpdml0eSkpe1xyXG4gICAgICAgICAgdGhpcy52aWV3VGlja2V0cyA9IHJlcz8uZGF0YTtcclxuICAgICAgICAgIHRoaXMudmlld1RpY2tldExpc3QgPSByZXM/LmRhdGE/LnRpY2tldEFjdGl2aXR5LnNsaWNlKCkucmV2ZXJzZSgpO1xyXG4gICAgICAgICAgLy8gdGhpcy52aWV3VGlja2V0TGlzdC5mb3JFYWNoKChlOiBhbnkpID0+IHtcclxuICAgICAgICAgIC8vICAgZS50aW1lU3RhbXAgPSB0aGlzLmdldFJlbGF0aXZlVGltZShlLnRpbWVTdGFtcCk7XHJcbiAgICAgICAgICAvLyB9KTtcclxuICAgICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSxcclxuICAgICAgZXJyb3I6KGVycik9PntcclxuICAgICAgfSxcclxuICAgICAgY29tcGxldGU6KCk9PntcclxuICAgICAgfSxcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBleHBvcnRTdG9yZUxpc3Rhc1hsc3goKXtcclxuICAgIGxldCBkYXRhID17XHJcbiAgICAgIHN0b3JlSWQ6dGhpcy5zdG9yZUlkLFxyXG4gICAgICBmcm9tRGF0ZTogdGhpcy5oZWFkZXJGaWx0ZXI/LmRhdGU/LnN0YXJ0RGF0ZSxcclxuICAgICAgdG9EYXRlOiB0aGlzLmhlYWRlckZpbHRlcj8uZGF0ZT8uZW5kRGF0ZSxcclxuICAgICAgZmlsdGVyOiB0aGlzLmZpbHRlcmVkSXNzdWUsXHJcbiAgICAgIGV4cG9ydDogdHJ1ZVxyXG4gICAgfVxyXG4gICAgdGhpcy5zZXJ2aWNlLnN0b3JlVGlja2V0TGlzdEV4cG9ydChkYXRhKS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OihyZXM6YW55KT0+e1xyXG4gICAgICAgIGxldCBleGNlbERhdGEgPSByZXM7XHJcbiAgICAgICAgdGhpcy5kYXRhc2VydmljZS5zYXZlQXNFeGNlbEZpbGUoZXhjZWxEYXRhLCdzdG9yZScpXHJcbiAgICAgIH0sXHJcbiAgICAgIGVycm9yOihlcnIpPT4ge1xyXG4gICAgICB9LFxyXG4gICAgICBjb21wbGV0ZSgpIHtcclxuICAgICAgICBcclxuICAgICAgfSxcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBTaG93VGlja2V0KGluZGV4OmFueSx2YWx1ZTphbnkpe1xyXG4gICAgdGhpcy5zZWxlY3RDYXJkID0gaW5kZXggPyBpbmRleCA6IDA7XHJcbiAgICB0aGlzLnRpY2tldElkID0gdmFsdWU7XHJcbiAgICB0aGlzLnZpZXdUaWNrZXQoKTtcclxuICB9XHJcblxyXG4gIEZpbHRlcklzc3VlKHZhbHVlOmFueSl7XHJcbiAgICAgdGhpcy5maWx0ZXJlZElzc3VlID0gdmFsdWU7XHJcbiAgICAgdGhpcy5zdG9yZVRpY2tldExpc3QoKTtcclxuICB9XHJcblxyXG4gIHNlbGVjdEl0ZW0odmFsdWU6YW55KXtcclxuICAgIHRoaXMuZmlsdGVyZWRJc3N1ZSA9IHZhbHVlO1xyXG4gICAgdGhpcy5kcm9wRG93biA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgb3BlbkRyb3Bkb3duKGV2ZW50Ok1vdXNlRXZlbnQpe1xyXG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICB0aGlzLmRyb3BEb3duID0gIXRoaXMuZHJvcERvd247XHJcbiAgfVxyXG5cclxuXHJcbiAgcmFuZ2VzOiBhbnkgPSB7XHJcbiAgICAnVG9kYXknOiBbdGhpcy5kYXlqcygpLCB0aGlzLmRheWpzKCldLFxyXG4gICAgJ1llc3RlcmRheSc6IFt0aGlzLmRheWpzKCkuc3VidHJhY3QoMSwgJ2RheXMnKSwgdGhpcy5kYXlqcygpLnN1YnRyYWN0KDEsICdkYXlzJyldLFxyXG4gICAgJ1RoaXMgV2Vlayc6IFt0aGlzLmRheWpzKCkuc3VidHJhY3QoNiwgJ2RheXMnKSwgdGhpcy5kYXlqcygpXSxcclxuICAgICdMYXN0IFdlZWsnOiBbdGhpcy5kYXlqcygpLnN1YnRyYWN0KDE0LCAnZGF5cycpLnN0YXJ0T2YoJ2RheXMnKSwgdGhpcy5kYXlqcygpLnN1YnRyYWN0KDgsICdkYXlzJykuZW5kT2YoJ2RheXMnKV0sXHJcbiAgICAnVGhpcyBNb250aCc6IFt0aGlzLmRheWpzKCkuc3RhcnRPZignbW9udGgnKSwgdGhpcy5kYXlqcygpLmVuZE9mKCdtb250aCcpXSxcclxuICAgICdMYXN0IE1vbnRoJzogW1xyXG4gICAgICB0aGlzLmRheWpzKCkuc3VidHJhY3QoMSwgJ21vbnRoJykuc3RhcnRPZignbW9udGgnKSxcclxuICAgICAgdGhpcy5kYXlqcygpLnN1YnRyYWN0KDEsICdtb250aCcpLmVuZE9mKCdtb250aCcpXHJcbiAgICBdXHJcbiAgfTtcclxuXHJcbiAgZGF0ZWNoYW5nZShldmVudDogYW55KSB7XHJcbiAgaWYgKGV2ZW50ICYmIGV2ZW50LnN0YXJ0RGF0ZSAmJiBldmVudC5lbmREYXRlKSB7XHJcbiAgICBpZiAodGhpcy5kYXlqcyhldmVudC5zdGFydERhdGUpLmlzVmFsaWQoKSAmJiB0aGlzLmRheWpzKGV2ZW50LmVuZERhdGUpLmlzVmFsaWQoKSkge1xyXG4gICAgICAvLyBEYXRlcyBhcmUgdmFsaWQsIHByb2NlZWQgd2l0aCBmb3JtYXR0aW5nXHJcbiAgICAgIHRoaXMuc2VsZWN0ZWREYXRlUmFuZ2Uuc3RhcnREYXRlID0gdGhpcy5kYXlqcyhldmVudC5zdGFydERhdGUpLnV0YygpLmZvcm1hdCgnREQtTU0tWVlZWScpO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkRGF0ZVJhbmdlLmVuZERhdGUgPSB0aGlzLmRheWpzKGV2ZW50LmVuZERhdGUpLnV0YygpLmZvcm1hdCgnREQtTU0tWVlZWScpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgLy8gRGF0ZXMgYXJlIG5vdCB2YWxpZCwgaGFuZGxlIHRoZSBzY2VuYXJpbyBhY2NvcmRpbmdseVxyXG4gICAgICBjb25zb2xlLmVycm9yKCdJbnZhbGlkIGRhdGVzIHByb3ZpZGVkOicsIGV2ZW50LnN0YXJ0RGF0ZSwgZXZlbnQuZW5kRGF0ZSk7XHJcbiAgICAgIC8vIElmIHlvdSB3YW50IHRvIGZhbGxiYWNrIHRvIHN0b3JlZCBmaWx0ZXJzIHdoZW4gdGhlIGRhdGVzIGFyZSBpbnZhbGlkLCB5b3UgY2FuIGtlZXAgdGhlIGV4aXN0aW5nIGxvZ2ljXHJcbiAgICAgIGNvbnN0IHN0b3JlZEZpbHRlcnMgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdkYXRlUmFuZ2VGaWx0ZXJzJykgfHwgJ3t9Jyk7XHJcbiAgICAgIGlmIChzdG9yZWRGaWx0ZXJzLnN0YXJ0RGF0ZSAmJiBzdG9yZWRGaWx0ZXJzLmVuZERhdGUpIHtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZVJhbmdlLnN0YXJ0RGF0ZSA9IHRoaXMuZGF5anMoc3RvcmVkRmlsdGVycy5zdGFydERhdGUpLmZvcm1hdCgnREQtTU0tWVlZWScpO1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlUmFuZ2UuZW5kRGF0ZSA9IHRoaXMuZGF5anMoc3RvcmVkRmlsdGVycy5lbmREYXRlKS5mb3JtYXQoJ0RELU1NLVlZWVknKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH0gZWxzZSB7XHJcbiAgICBjb25zb2xlLmVycm9yKCdJbnZhbGlkIGV2ZW50IG9iamVjdDonLCBldmVudCk7XHJcbiAgfVxyXG59XHJcblxyXG5cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwiY2FyZFwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyIGJvcmRlci0wXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtdGl0bGUgZmxleC1jb2x1bW5cIj4gICAgXHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2FyZC1sYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAgQWN0aXZpdHkgXHJcbiAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LXN1YlwiPlxyXG4gICAgICAgICAgICAgICAgQW4gb3ZlcnZpZXcgb2YgdGhlIHN0b3JlIGlzc3VlcyBhbmQgdGhlIGRvd250aW1lIGZvciAwMiBKdWx5LCAyMDIzXHJcbiAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC10b29sYmFyXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwb3NpdGlvbi1yZWxhdGl2ZVwiPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cIm9wZW5Ecm9wZG93bigkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1kZWZhdWx0IG14LTIgYnRuLW91dGxpbmUgYnRuLW91dGxpbmUtZGVmYXVsdCByb3VuZGVkLTMgdGV4dC1ub3dyYXAgYm9yZGVyLXZhbFwiPjxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMVwiIHZpZXdCb3g9XCIwIDAgMjAgMjFcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNNSAxMC4wMjY0SDE1TTIuNSA1LjAyNjM3SDE3LjVNNy41IDE1LjAyNjRIMTIuNVwiIHN0cm9rZT1cIiMzNDQwNTRcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcy0yXCI+RmlsdGVyPC9zcGFuPiA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJkcm9wRG93blwiIGNsYXNzPVwiY2FyZCBweS0xIHctMjAwcHggcG9zaXRpb24tYWJzb2x1dGUgdG9wLTUwcHggZW5kLTAgei0xXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx1bCAqbmdGb3I9XCJsZXQgaXRlbSBvZiBkcm9wZG93bkl0ZW1zXCIgY2xhc3M9XCJsaXN0LXVuc3R5bGVkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBbbmdDbGFzc109XCJ0aGlzLmZpbHRlcmVkSXNzdWUgPT0gaXRlbSA/ICdhY3RpdmUnIDogJydcIiBjbGFzcz1cImNhbWVyYSBweC01IGl0ZW1zIGZ3LXNlbWlib2xkIGN1cnNvci1wb2ludGVyIHB5LTJcIiAoY2xpY2spPVwic2VsZWN0SXRlbShpdGVtKVwiPnt7aXRlbX19PC9saT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJ0biBidG4tZGVmYXVsdCBidG4tb3V0bGluZVwiIChjbGljayk9XCJleHBvcnRTdG9yZUxpc3Rhc1hsc3goKVwiPlxyXG4gICAgICAgICAgICA8c3Bhbj48c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjFcIiB2aWV3Qm94PVwiMCAwIDIwIDIxXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTcuNSAxMi41MjY0VjE1Ljg1OTdDMTcuNSAxNi4zMDE3IDE3LjMyNDQgMTYuNzI1NyAxNy4wMTE4IDE3LjAzODJDMTYuNjk5MyAxNy4zNTA4IDE2LjI3NTQgMTcuNTI2NCAxNS44MzMzIDE3LjUyNjRINC4xNjY2N0MzLjcyNDY0IDE3LjUyNjQgMy4zMDA3MiAxNy4zNTA4IDIuOTg4MTYgMTcuMDM4MkMyLjY3NTU5IDE2LjcyNTcgMi41IDE2LjMwMTcgMi41IDE1Ljg1OTdWMTIuNTI2NE0xNC4xNjY3IDYuNjkzMDNMMTAgMi41MjYzN00xMCAyLjUyNjM3TDUuODMzMzMgNi42OTMwM00xMCAyLjUyNjM3VjEyLjUyNjRcIiBzdHJva2U9XCIjMzQ0MDU0XCIgc3Ryb2tlLXdpZHRoPVwiMS42N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cclxuICAgICAgICAgICAgICAgIDwvc3ZnPjwvc3Bhbj4gRXhwb3J0XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBwb3NpdGlvbi1yZWxhdGl2ZSBteS0xIG1zLTNcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3ZnLWljb24gc3ZnLWljb24tMSBwb3NpdGlvbi1hYnNvbHV0ZSBtcy0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTEzLjMzMzMgMS42NjY2M1Y0Ljk5OTk2TTYuNjY2NjcgMS42NjY2M1Y0Ljk5OTk2TTIuNSA4LjMzMzI5SDE3LjVNNC4xNjY2NyAzLjMzMzI5SDE1LjgzMzNDMTYuNzUzOCAzLjMzMzI5IDE3LjUgNC4wNzk0OCAxNy41IDQuOTk5OTZWMTYuNjY2NkMxNy41IDE3LjU4NzEgMTYuNzUzOCAxOC4zMzMzIDE1LjgzMzMgMTguMzMzM0g0LjE2NjY3QzMuMjQ2MTkgMTguMzMzMyAyLjUgMTcuNTg3MSAyLjUgMTYuNjY2NlY0Ljk5OTk2QzIuNSA0LjA3OTQ4IDMuMjQ2MTkgMy4zMzMyOSA0LjE2NjY3IDMuMzMzMjlaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiMzNDQwNTRcIiBzdHJva2Utd2lkdGg9XCIxLjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImZ4LWRhdGUtcmFuZ2UgZm9ybS1jb250cm9sIHBzLTE0XCIgdHlwZT1cInRleHRcIiBtYXRJbnB1dCBuZ3hEYXRlcmFuZ2VwaWNrZXJNZCBbZHJvcHNdPVwiJ2Rvd24nXCJcclxuICAgICAgICAgICAgICAgICAgICBbb3BlbnNdPVwiJ3JpZ2h0J1wiIFtyYW5nZXNdPVwicmFuZ2VzXCIgW3Nob3dDdXN0b21SYW5nZUxhYmVsXT1cInRydWVcIiBbYWx3YXlzU2hvd0NhbGVuZGFyc109XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2tlZXBDYWxlbmRhck9wZW5pbmdXaXRoUmFuZ2VdPVwidHJ1ZVwiIFtzaG93Q2FuY2VsXT1cInRydWVcIiBhdXRvY29tcGxldGU9XCJvZmZcIiBbKG5nTW9kZWwpXT1cInNlbGVjdGVkRGF0ZVJhbmdlXCJcclxuICAgICAgICAgICAgICAgICAgICBbbG9jYWxlXT1cInsgZm9ybWF0OiAnREQtTU0tWVlZWScsIGZpcnN0RGF5OiAxLCBtb250aE5hbWVzOiBbJ0phbnVhcnknLCAnRmVicnVhcnknLCAnTWFyY2gnLCAnQXByaWwnLCAnTWF5JywgJ0p1bmUnLCAnSnVseScsICdBdWd1c3QnLCAnU2VwdGVtYmVyJywgJ09jdG9iZXInLCAnTm92ZW1iZXInLCAnRGVjZW1iZXInXSB9XCJcclxuICAgICAgICAgICAgICAgICAgICAoZGF0ZXNVcGRhdGVkKT1cImRhdGVjaGFuZ2UoJGV2ZW50KVwiIG5hbWU9XCJkYXRlcmFuZ2VcIiAvPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgPC9kaXY+XHJcbiAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHlcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJkLWZsZXhcIj5cclxuICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBpc3N1ZSBvZiB0aWNrZXRDYXJkXCIgY2xhc3M9XCJjYXJkIGNhcmQtdmlldyBwLTUgbWUtNVwiPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRpdGxlIGZ3LWJvbGRcIj57e2lzc3VlLmNvdW50fX08L3NwYW4+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3ViLXRpdGxlIGZ3LXNlbWlib2xkXCI+e3tpc3N1ZS5uYW1lfX08L3NwYW4+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJyb3VuZGVkLTMgYm9yZGVyIGJvcmRlci1ncmF5IGJvcmRlci0xIG10LTVcIj5cclxuICAgICAgICA8ZGl2ICAqbmdJZj1cIiFsb2FkaW5nICYmICFub0RhdGFcIiAgY2xhc3M9XCJyb3cgcC01XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tNlwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgZGF0YSBvZiBzdG9yZVRpY2tldDtsZXQgaW5kZXggPSBpbmRleFwiIGNsYXNzPVwiaXNzdWVjYXJkIHctMTAwIG1iLTQgY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwiU2hvd1RpY2tldChpbmRleCxkYXRhPy50aWNrZXRJZClcIiBbbmdDbGFzc109XCJzZWxlY3RDYXJkID09IGluZGV4ID8gJ2FjdGl2ZScgOiAnJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYWluY2FyZC1sYWJlbCBmdy1ib2xkIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBtYi01XCI+PHNwYW4+IDxpbWcgc3JjPScuL2Fzc2V0cy90YW5nby9JbWFnZXMvdGlja2V0LnN2Zyc+IHt7ZGF0YT8udGlja2V0SWR9fTwvc3Bhbj4gPHNwYW4gY2xhc3M9XCJiYWRnZSB0ZXh0LXN1Y2Nlc3NcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiZGF0YS5zdGF0dXMgPT0gJ2Nsb3NlZCcgPyAnYmFkZ2UtbGlnaHQtc3VjY2VzcycgOihkYXRhLnN0YXR1cyA9PSAnaW5wcm9ncmVzcycgPyAnYmFkZ2UtbGlnaHQtcHJpbWFyeSc6J2JhZGdlLWxpZ2h0LXdhcm5pbmcnKVwiPnt7ZGF0YS5zdGF0dXN9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImRhdGEuaXNzdWVTdGF0dXMgPT09ICdub3RpZGVudGlmaWVkJ1wiIGNsYXNzPVwibWItNSBjb250ZW50dGV4dFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBXZSBoYXZlIG5vdCByZWNlaXZlZCBkYXRhIGZyb20geW91ciBzdG9yZS4gV2UgYXJlIGN1cnJlbnRseSBpbnZlc3RpZ2F0aW5nIHRoZSBpc3N1ZS5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZGF0YS5pc3N1ZVN0YXR1cyA9PT0naWRlbnRpZmllZCdcIiBjbGFzcz1cIm1iLTUgY29udGVudHRleHRcIj5TdG9yZSBpcyBjdXJyZW50bHkgZW5jb3VudGVyaW5nIGEgPHNwYW4gY2xhc3M9XCJmdy1ib2xkLTcwMFwiPnt7ZGF0YS5wcmltYXJ5SXNzdWV9fTwvc3Bhbj4gd2hpY2ggaXMgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0Zvcj1cImxldCBzZWNvbmRhcnkgb2YgZGF0YS5zZWNvbmRhcnlJc3N1ZTsgbGV0IGxhc3QgPSBsYXN0XCIgY2xhc3M9XCJmdy1ib2xkLTcwMFwiPnt7c2Vjb25kYXJ5Py5uYW1lfX08bmctY29udGFpbmVyICpuZ0lmPVwiIWxhc3RcIj4gLDwvbmctY29udGFpbmVyPiA8L3NwYW4+LjwvZGl2PlxyXG4gICAgXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcm9maWxlIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50cmUganVzdGlmeS1jb250ZW50LWNlbnRyZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIGNsYXNzPVwiXCIgc3JjPVwiLi9hc3NldHMvdGFuZ28vSW1hZ2VzL2dyb3Btb2RhbC5wbmdcIiBhbHQ9XCJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuXCIgPiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjb250ZW50dGV4dCBweC0zXCI+PHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCIgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTE0IDEwQzE0IDEwLjM1MzYgMTMuODU5NSAxMC42OTI4IDEzLjYwOTUgMTAuOTQyOEMxMy4zNTk0IDExLjE5MjkgMTMuMDIwMyAxMS4zMzMzIDEyLjY2NjcgMTEuMzMzM0g0LjY2NjY3TDIgMTRWMy4zMzMzM0MyIDIuOTc5NzEgMi4xNDA0OCAyLjY0MDU3IDIuMzkwNTIgMi4zOTA1MkMyLjY0MDU3IDIuMTQwNDggMi45Nzk3MSAyIDMuMzMzMzMgMkgxMi42NjY3QzEzLjAyMDMgMiAxMy4zNTk0IDIuMTQwNDggMTMuNjA5NSAyLjM5MDUyQzEzLjg1OTUgMi42NDA1NyAxNCAyLjk3OTcxIDE0IDMuMzMzMzNWMTBaXCIgc3Ryb2tlPVwiIzY2NzA4NVwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPiB7e2RhdGEuY29tbWVudHN9fSA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNvbnRlbnR0ZXh0IHB4LTNcIj48c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIiB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xMC42NjY3IDEuMzMzOThWNC4wMDA2NU01LjMzMzMzIDEuMzMzOThWNC4wMDA2NU0yIDYuNjY3MzJIMTRNMy4zMzMzMyAyLjY2NzMySDEyLjY2NjdDMTMuNDAzIDIuNjY3MzIgMTQgMy4yNjQyNyAxNCA0LjAwMDY1VjEzLjMzNEMxNCAxNC4wNzA0IDEzLjQwMyAxNC42NjczIDEyLjY2NjcgMTQuNjY3M0gzLjMzMzMzQzIuNTk2OTUgMTQuNjY3MyAyIDE0LjA3MDQgMiAxMy4zMzRWNC4wMDA2NUMyIDMuMjY0MjcgMi41OTY5NSAyLjY2NzMyIDMuMzMzMzMgMi42NjczMlpcIiBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz4ge3tkYXRhLkRhdGV9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS02XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWFpbmNhcmQtbGFiZWwgZnctYm9sZCBkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW5cIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3Bhbj48aW1nIHNyYz0nLi9hc3NldHMvdGFuZ28vSW1hZ2VzL3RpY2tldC5zdmcnPnt7dmlld1RpY2tldHM/LnRpY2tldElkfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJiYWRnZSBiYWRnZS1saWdodC1wcmltYXJ5XCI+e3t2aWV3VGlja2V0cz8uc3RhdHVzfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGFjdGl2aXR5IG9mIHZpZXdUaWNrZXRMaXN0XCIgY2xhc3M9XCJcIj4gICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgIDwhLS0gVXNlciBjb2RlIHN0YXJ0cyBoZXJlIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImFjdGl2aXR5LmFjdGlvbkJ5ID09ICdVc2VyJ1wiIGNsYXNzPVwiZC1mbGV4IG10LTEwIG1zLTVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtY29sdW1uIGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyIHBlLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50cmUganVzdGlmeS1jb250ZW50LWNlbnRyZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBjbGFzcz1cIm1zZ3Byb2ZpbGVcIiBzcmM9J2h0dHBzOi8vaW1hZ2VzLnVuc3BsYXNoLmNvbS9waG90by0xNDQxOTg2MzAwOTE3LTY0Njc0YmQ2MDBkOD93PTUwMCZhdXRvPWZvcm1hdCZmaXQ9Y3JvcCZxPTYwJml4bGliPXJiLTQuMC4zJml4aWQ9TTN3eE1qQTNmREI4TUh4elpXRnlZMmg4TW54OGMzUnZjbVY4Wlc1OE1IeDhNSHg4ZkRBJTNEJz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLTAgaC0xMDAgbXQtMyBib3JkZXIgYm9yZGVyLTEgYm9yZGVyLWdyYXlcIiBzdHlsZT1cIndpZHRoOjBweFwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PiAgIFxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJweS0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaGVhZGluZ3RleHRcIj5PbGl2aWEgUmh5ZTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0aW1pbmd0ZXh0IHB4LTNcIj5Ob3c8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgdXNlciBvZiBhY3Rpdml0eS5yZWFzb25zOyBsZXQgaiA9aW5kZXhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwcm9maWxlLWxhYmVsIGZvbnQtYm9sZC00MDBcIj5Vc2VyIGhhcyByZXBsaWVkIHRvIHRoZSBpc3N1ZTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPGRpdiAqbmdJZj1cInJlc29sdmVkSXNzdWVcIiBjbGFzcz1cInByb2ZpbGUtbGFiZWwgZnctYm9sZC00MDAgbXQtNVwiPklzc3VlIGhhcyBiZWVuIDxzcGFuIGNsYXNzPVwiZnctYm9sZC03MDBcIj5yZXNvbHZlZDwvc3Bhbj4uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJcIj4gSXQgdGFrZXMgNyBtb3JlIGRheXMgdG8gcmVzb2x2ZS48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PiAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJ1c2VyLnByaW1hcnlJc3N1ZSA9PT0gJ0NhbWVyYSBJc3N1ZXMnIFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicHJvZmlsZS1sYWJlbCBmdy1ib2xkLTQwMFwiPkFyZSBhbGwgQ0NUViBjYW1lcmFzIGZ1bmN0aW9uaW5nIHByb3Blcmx5Pzwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tNFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiXCI+Q2FtZXJhIDE8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50cmUganVzdGlmeS1jb250ZW50LWNlbnRyZSByb3VuZGVkLTMgb3ZlcmZsb3ctaGlkZGVuXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIGNsYXNzPVwidy0xMDBcIiBzcmM9J2h0dHBzOi8vaW1hZ2VzLnVuc3BsYXNoLmNvbS9waG90by0xNDQxOTg2MzAwOTE3LTY0Njc0YmQ2MDBkOD93PTUwMCZhdXRvPWZvcm1hdCZmaXQ9Y3JvcCZxPTYwJml4bGliPXJiLTQuMC4zJml4aWQ9TTN3eE1qQTNmREI4TUh4elpXRnlZMmg4TW54OGMzUnZjbVY4Wlc1OE1IeDhNSHg4ZkRBJTNEJz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tNFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJcIj5DYW1lcmEgMjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudHJlIGp1c3RpZnktY29udGVudC1jZW50cmUgcm91bmRlZC0zIG92ZXJmbG93LWhpZGRlblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJ3LTEwMFwiIHNyYz0naHR0cHM6Ly9pbWFnZXMudW5zcGxhc2guY29tL3Bob3RvLTE0NDE5ODYzMDA5MTctNjQ2NzRiZDYwMGQ4P3c9NTAwJmF1dG89Zm9ybWF0JmZpdD1jcm9wJnE9NjAmaXhsaWI9cmItNC4wLjMmaXhpZD1NM3d4TWpBM2ZEQjhNSHh6WldGeVkyaDhNbng4YzNSdmNtVjhaVzU4TUh4OE1IeDhmREElM0QnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tNFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJcIj5DYW1lcmEgMzwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudHJlIGp1c3RpZnktY29udGVudC1jZW50cmUgcm91bmRlZC0zIG92ZXJmbG93LWhpZGRlblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJ3LTEwMFwiIHNyYz0naHR0cHM6Ly9pbWFnZXMudW5zcGxhc2guY29tL3Bob3RvLTE0NDE5ODYzMDA5MTctNjQ2NzRiZDYwMGQ4P3c9NTAwJmF1dG89Zm9ybWF0JmZpdD1jcm9wJnE9NjAmaXhsaWI9cmItNC4wLjMmaXhpZD1NM3d4TWpBM2ZEQjhNSHh6WldGeVkyaDhNbng4YzNSdmNtVjhaVzU4TUh4OE1IeDhmREElM0QnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInByb2ZpbGUtbGFiZWwgZnctYm9sZC00MDAgbXQtNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgYWJvdmUgY2FtZXJhIHN0cmVhbWluZyBhcmUgbm90IHdvcmtpbmcgZHVlIDxzcGFuIGNsYXNzPVwiZnctYm9sZC03MDBcIj5wb3dlciBpc3N1ZTwvc3Bhbj4gdG8gdGhlIGNhbWVyYS5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGVudHRleHQgZnctc2VtaWJvbGQgbXQtM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZSdyZSBjdXJyZW50bHkgZW5jb3VudGVyaW5nIGFuIDxzcGFuIGNsYXNzPVwiZnctYm9sZC03MDBcIj57e3VzZXIucHJpbWFyeUlzc3VlfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgaXNzdWUgb2YgdXNlci5zZWNvbmRhcnlJc3N1ZTsgbGV0IGsgPWluZGV4XCIgY2xhc3M9XCJtdC0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicHJvZmlsZS1sYWJlbCBmdy1ib2xkLTQwMFwiPlRoZSBmb2xsb3dpbmcgYXJlIHRoZSByZWxldmFudCBwcm9ibGVtIGZhY2luZzwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPVwidGltaW5ndGV4dCBmdy1ib2xkLTQwMCBtdC0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+e3tpc3N1ZS5uYW1lfX08L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PiBcclxuICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gVXNlciBjb2RlIGVuZHMgaGVyZSAtLT5cclxuICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gVGFuZ28gY29kZSBzdGFydHMgaGVyZSAtLT5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiYWN0aXZpdHkuYWN0aW9uQnkgPT0gJ1RhbmdvJ1wiIGNsYXNzPVwiZC1mbGV4IG10LTEwIG1zLTVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtY29sdW1uIGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyIHBlLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50cmUganVzdGlmeS1jb250ZW50LWNlbnRyZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBjbGFzcz1cIm1zZ3Byb2ZpbGVcIiBzcmM9XCIuL2Fzc2V0cy90YW5nby9JbWFnZXMvdGFuZ29wcm9maWxlLnBuZ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtMCBoLTEwMCBtdC0zIGJvcmRlciBib3JkZXItMSBib3JkZXItZ3JheVwiIHN0eWxlPVwid2lkdGg6MHB4XCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+ICAgXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB5LTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaGVhZGluZ3RleHRcIj5UYW5nbzwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0aW1pbmd0ZXh0IHB4LTNcIj5Ob3c8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiYWN0aXZpdHkuYWN0aW9uVHlwZSAhPT0gJ2RlZmF1bHRJbmZyYSdcIiBjbGFzcz1cIm1iLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicHJvZmlsZS1sYWJlbCBmdy1ib2xkLTQwMFwiPnRhbmdvIGhhcyByZXBsaWVkIHRvIHRoZSBpc3N1ZTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPGRpdiAqbmdJZj1cInVwZGF0ZWRcIiBjbGFzcz1cInRleHR1cGRhdGVzIGZ3LWJvbGQtNDAwIG10LTNcIj5UaGFuayB5b3UgZm9yIHRoZSBVcGRhdGUuPHNwYW4gKm5nSWY9XCJcIj5UaGUgdGlja2V0IHdpbGwgYmUgY2xvc2VkIHdoZW4gdGhlIGRhdGEgaXMgcHJvY2Vzc2VkLjwvc3Bhbj48L2Rpdj4gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHR1cGRhdGVzIGZ3LWJvbGQtNDAwXCI+UGxlYXNlIGZvbGxvdyB0aGUgYmVsb3cgc3RlcHMgdG8gcmVzb2x2ZSB0aGUgYWJvdmUgaXNzdWU8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGRhdGEgb2YgYWN0aXZpdHkucmVhc29uczsgbGV0IGluZGV4PWluZGV4XCIgY2xhc3M9XCJtdC01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZ3LXNlbWlib2xkXCI+e3tkYXRhPy5wcmltYXJ5SXNzdWV9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCAqbmdGb3I9XCJsZXQgaXNzdWUgb2YgZGF0YT8uc2Vjb25kYXJ5SXNzdWVcIiBjbGFzcz1cIm10LTMgdGltaW5ndGV4dCBmdy1ib2xkLTQwMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPnt7aXNzdWU/Lm5hbWV9fTwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImFjdGl2aXR5LmFjdGlvblR5cGUgPT09ICdkZWZhdWx0SW5mcmEnXCIgY2xhc3M9XCJwcm9maWxlLWxhYmVsIGZ3LWJvbGQtNDAwXCI+V2UgaGF2ZSBub3QgcmVjZWl2ZWQgZGF0YSBmcm9tIHlvdXIgc3RvcmUuIFdlIGFyZSBjdXJyZW50bHkgaW52ZXN0aWdhdGluZyB0aGUgaXNzdWU8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj4gXHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLSBUYW5nbyBjb2RlIGVuZHMgaGVyZSAtLT5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICBcclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICA8L2Rpdj5cclxuIDxuZy1jb250YWluZXIgKm5nSWY9XCJsb2FkaW5nXCIgPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBsb2FkZXIgIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaGltbWVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3cmFwcGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIHRpdGxlXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGxpbmtcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgZGVzY3JpcHRpb25cIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaGltbWVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3cmFwcGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIHRpdGxlXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGxpbmtcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgZGVzY3JpcHRpb25cIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJub0RhdGFcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTEyIG1iLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keSBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXIgZmxleC1jb2x1bW5cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJpbWctc3JjXCIgc3JjPVwiLi9hc3NldHMvdGFuZ28vSWNvbnMvTm9kYXRhLnN2Z1wiIGFsdD1cIlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj4gICBcclxuXHJcbjwvZGl2PlxyXG4iXX0=
211
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmUtYWN0aXZpdHkuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGFuZ28tdGlja2V0LXVzZXIvc3JjL2xpYi9jb21wb25lbnRzL3N0b3JlLWFjdGl2aXR5L3N0b3JlLWFjdGl2aXR5LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RhbmdvLXRpY2tldC11c2VyL3NyYy9saWIvY29tcG9uZW50cy9zdG9yZS1hY3Rpdml0eS9zdG9yZS1hY3Rpdml0eS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFDLFlBQVksRUFBQyxLQUFLLEVBQTBCLE1BQU0sZUFBZSxDQUFDO0FBTXJGLE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7Ozs7O0FBTzFDLE1BQU0sT0FBTyxzQkFBc0I7SUF3QmI7SUFDVjtJQUNBO0lBQ0E7SUExQlYsVUFBVSxDQUFLO0lBQ2YsS0FBSyxDQUFLO0lBQ1YsYUFBYSxHQUFPLEVBQUUsQ0FBQztJQUN2QixhQUFhLEdBQU8sVUFBVSxDQUFFO0lBQ2hDLE9BQU8sR0FBVyxJQUFJLENBQUM7SUFDdkIsTUFBTSxHQUFXLEtBQUssQ0FBQztJQUN2QixPQUFPLEdBQVcsSUFBSSxDQUFDO0lBQ3ZCLFdBQVcsQ0FBSztJQUNoQixVQUFVLENBQUs7SUFDZixhQUFhLEdBQVcsSUFBSSxDQUFDO0lBQzdCLFdBQVcsR0FBUyxDQUFDLHVCQUF1QixFQUFDLGdCQUFnQixFQUFDLGNBQWMsRUFBQyxjQUFjLEVBQUMsbUJBQW1CLENBQUMsQ0FBQTtJQUNoSCxRQUFRLEdBQVksS0FBSyxDQUFDO0lBQzFCLGFBQWEsR0FBUyxDQUFDLEtBQUssRUFBQyx1QkFBdUIsRUFBQyxnQkFBZ0IsRUFBQyxjQUFjLEVBQUUsY0FBYyxFQUFDLG1CQUFtQixDQUFDLENBQUE7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TixZQUFZO3VCQUFDLGdCQUFnQixFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LEhvc3RMaXN0ZW5lcixJbnB1dCxPbkRlc3Ryb3ksT25Jbml0LE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBEYXRhU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2RhdGEuc2VydmljZSc7XHJcbmltcG9ydCB7IFRpY2tldHNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdGlja2V0LWluZnJhLnNlcnZpY2UnO1xyXG4vLyBpbXBvcnQgeyBHbG9iYWxTdGF0ZVNlcnZpY2UgfSBmcm9tICdwcm9qZWN0cy90YW5nby1hcHAtc2hhcmVkL3NyYy9wdWJsaWMtYXBpJztcclxuaW1wb3J0IHsgR2xvYmFsU3RhdGVTZXJ2aWNlIH0gZnJvbSAndGFuZ28tYXBwLXVpLWdsb2JhbCc7XHJcbmltcG9ydCB7IFN1YmplY3QsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdsaWItc3RvcmUtYWN0aXZpdHknLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9zdG9yZS1hY3Rpdml0eS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL3N0b3JlLWFjdGl2aXR5LmNvbXBvbmVudC5zY3NzJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgU3RvcmVBY3Rpdml0eUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCxPbkRlc3Ryb3kge1xyXG4gIHNlbGVjdENhcmQ6YW55O1xyXG4gIHN0YXRlOmFueTtcclxuICBmaWx0ZXJlZElzc3VlOmFueSA9ICcnO1xyXG4gIHNlbGVjdGVkSXNzdWU6YW55ID0gJ2ludGVybmV0JyA7XHJcbiAgdXBkYXRlZDpib29sZWFuID0gdHJ1ZTtcclxuICBub0RhdGE6Ym9vbGVhbiA9IGZhbHNlO1xyXG4gIGxvYWRpbmc6Ym9vbGVhbiA9IHRydWU7XHJcbiAgc3RvcmVUaWNrZXQ6YW55O1xyXG4gIHRpY2tldEluZm86YW55O1xyXG4gIHJlc29sdmVkSXNzdWU6Ym9vbGVhbiA9IHRydWU7XHJcbiAgaXNzdWVPYmplY3Q6YW55W10gPSBbJ1N0b3JlIE9wZXJhdGlvbiBJc3N1ZScsJ0ludGVybmV0IElzc3VlJywnQ2FtZXJhIElzc3VlJywnU3lzdGVtIElzc3VlJywnQXBwbGljYXRpb24gSXNzdWUnXVxyXG4gIGRyb3BEb3duOiBib29sZWFuID0gZmFsc2U7XHJcbiAgZHJvcGRvd25JdGVtczphbnlbXSA9IFsnQWxsJywnU3RvcmUgT3BlcmF0aW9uIElzc3VlJywnSW50ZXJuZXQgSXNzdWUnLCdDYW1lcmEgSXNzdWUnICwnU3lzdGVtIElzc3VlJywnQXBwbGljYXRpb24gSXNzdWUnXVxyXG5cclxuICBzZWxlY3RlZERhdGVSYW5nZTogYW55ID0ge307XHJcbiAgdGlja2V0SWQ6IGFueTtcclxuICBkYXRlUmFuZ2VGaWx0ZXI6IGFueTtcclxuICB0aWNrZXRDYXJkOiBhbnk7XHJcbiAgdmlld1RpY2tldERhdGE6IGFueTtcclxuICBoZWFkZXJGaWx0ZXI6IGFueTtcclxuICB1c2VyOiBhbnk7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBkZXN0cm95JCA9IG5ldyBTdWJqZWN0KCk7XHJcbiAgQElucHV0KCkgc3RvcmVJZCA6IGFueTtcclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHNlcnZpY2U6VGlja2V0c1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIGRhdGFzZXJ2aWNlOkRhdGFTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBjZCA6Q2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBwcml2YXRlIGdzOkdsb2JhbFN0YXRlU2VydmljZSl7XHJcbiAgICBkYXRhc2VydmljZS5kYXRhJC5zdWJzY3JpYmUoKGRhdGE6YW55KT0+e1xyXG4gICAgICB0aGlzLnN0YXRlID0gZGF0YTtcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDpjbGljaycsIFsnJGV2ZW50J10pXHJcbiAgb25DbGljayAoZXZlbnQ6IE1vdXNlRXZlbnQpIHtcclxuICAgIGNvbnN0XHJcbiAgICAgIHRhcmdldCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudDtcclxuICAgIGlmKCF0YXJnZXQuY2xvc2VzdCgnLmRyb3Bkb3duJykpIHtcclxuICAgICAgdGhpcy5kcm9wRG93biA9IGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKXtcclxuXHJcbiAgICB0aGlzLmdzLmRhdGFSYW5nZVZhbHVlLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoKGRhdGE6IGFueSkgPT4ge1xyXG4gICAgICBpZihkYXRhIT1udWxsKXtcclxuICAgICAgICB0aGlzLnVzZXI9ICBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKCd1c2VyLWluZm8nKXx8XCJcIilcclxuICAgICAgICB0aGlzLmhlYWRlckZpbHRlciA9IGRhdGE7XHJcbiAgICAgICAgdGhpcy5zdG9yZVRpY2tldGNhcmQoKTtcclxuICAgICAgICB0aGlzLnN0b3JlVGlja2V0TGlzdCgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5kZXN0cm95JC5uZXh0KHRydWUpO1xyXG4gICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xyXG4gIH1cclxuXHJcbiAgc3RvcmVUaWNrZXRjYXJkKCl7XHJcbiAgICBsZXQgZGF0YSA9e1xyXG4gICAgICBzdG9yZUlkOiB0aGlzLnN0b3JlSWQsXHJcbiAgICAgIGZyb21EYXRlOiB0aGlzLmhlYWRlckZpbHRlcj8uZGF0ZT8uc3RhcnREYXRlLFxyXG4gICAgICB0b0RhdGU6IHRoaXMuaGVhZGVyRmlsdGVyPy5kYXRlPy5lbmREYXRlLFxyXG4gICAgfVxyXG4gICAgdGhpcy5zZXJ2aWNlLnN0b3JlVGlja2V0Y2FyZChkYXRhKS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OihyZXM6YW55KT0+e1xyXG4gICAgICAgIGlmKHJlcyAmJiByZXM/LmNvZGUgPT0gMjAwKXtcclxuICAgICAgICAgICB0aGlzLnRpY2tldENhcmQgPSByZXMuZGF0YS5kYXRhO1xyXG4gICAgICAgIH1cclxuICAgICAgfSxcclxuICAgICAgZXJyb3IoZXJyKSB7XHJcbiAgICAgICAgXHJcbiAgICAgIH0sXHJcbiAgICAgIGNvbXBsZXRlKCkge1xyXG4gICAgICAgIFxyXG4gICAgICB9LFxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIHN0b3JlVGlja2V0TGlzdCgpe1xyXG4gICAgbGV0IGRhdGEgPXtcclxuICAgICAgc3RvcmVJZDp0aGlzLnN0b3JlSWQsXHJcbiAgICAgIGZyb21EYXRlOiB0aGlzLmhlYWRlckZpbHRlcj8uZGF0ZT8uc3RhcnREYXRlLFxyXG4gICAgICB0b0RhdGU6IHRoaXMuaGVhZGVyRmlsdGVyPy5kYXRlPy5lbmREYXRlLFxyXG4gICAgICBmaWx0ZXI6IHRoaXMuZmlsdGVyZWRJc3N1ZSxcclxuICAgICAgZXhwb3J0OmZhbHNlXHJcbiAgICB9IFxyXG4gICAgdGhpcy5zZXJ2aWNlLnN0b3JlVGlja2V0TGlzdChkYXRhKS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OihyZXM6YW55KT0+IHtcclxuICAgICAgICBpZihyZXMgJiYgcmVzLmNvZGUgPT0gMjAwKXtcclxuICAgICAgICAgIHRoaXMuc3RvcmVUaWNrZXQgPSByZXMuZGF0YS5kYXRhXHJcbiAgICAgICAgICB0aGlzLnRpY2tldElkID0gdGhpcy5zdG9yZVRpY2tldFswXT8udGlja2V0SWQ7XHJcbiAgICAgICAgICB0aGlzLnZpZXdUaWNrZXQoKTtcclxuICAgICAgICAgIHRoaXMubG9hZGluZz1mYWxzZTtcclxuICAgICAgICAgIHRoaXMubm9EYXRhID0gZmFsc2U7XHJcbiAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICB0aGlzLm5vRGF0YSA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLmxvYWRpbmc9ZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB9LFxyXG4gICAgICBlcnJvcjooZXJyKT0+IHtcclxuICAgICAgICAgIHRoaXMubm9EYXRhID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMubG9hZGluZz1mYWxzZTtcclxuICAgICAgfSxcclxuICAgICAgY29tcGxldGU6KCk9PiB7XHJcbiAgICAgICAgXHJcbiAgICAgIH0sXHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgdmlld1RpY2tldCgpe1xyXG4gICAgbGV0IGRhdGEgPSB7IFxyXG4gICAgICBcInRpY2tldElkXCI6dGhpcy50aWNrZXRJZFxyXG4gICAgfVxyXG4gICAgdGhpcy5zZXJ2aWNlLnZpZXdUaWNrZXQoZGF0YSkuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDoocmVzOmFueSk9PntcclxuICAgICAgICBpZihyZXMgJiYgcmVzLmNvZGUgPT0gMjAwICl7XHJcbiAgICAgICAgICB0aGlzLnRpY2tldEluZm8gPSByZXM/LmRhdGFcclxuICAgICAgICAgIHRoaXMudmlld1RpY2tldERhdGEgPSByZXMuZGF0YS50aWNrZXRBY3Rpdml0eS5zbGljZSgpLnJldmVyc2UoKTtcclxuICAgICAgICAgIHRoaXMudmlld1RpY2tldERhdGEuZm9yRWFjaCgoZTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIGUudGltZVN0YW1wID0gdGhpcy5nZXRSZWxhdGl2ZVRpbWUoZS50aW1lU3RhbXApO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICB0aGlzLnZpZXdUaWNrZXREYXRhID0gdGhpcy52aWV3VGlja2V0RGF0YS5maWx0ZXIoKGU6IGFueSkgPT4gZS5hY3Rpb25UeXBlICE9IFwic3RhdHVzQ2hlY2tcIik7ICAgICAgICAgIFxyXG4gICAgICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICBlcnJvcjooZXJyKT0+e1xyXG4gICAgICB9LFxyXG4gICAgICBjb21wbGV0ZTooKT0+e1xyXG4gICAgICB9LFxyXG4gICAgfSlcclxuICB9XHJcbiAgZ2V0UmVsYXRpdmVUaW1lKHRpbWVzdGFtcDogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZSh0aW1lc3RhbXApO1xyXG4gICAgY29uc3QgY3VycmVudERhdGUgPSBuZXcgRGF0ZSgpO1xyXG4gICAgY29uc3QgZGlmZmVyZW5jZSA9IGN1cnJlbnREYXRlLmdldFRpbWUoKSAtIGRhdGUuZ2V0VGltZSgpO1xyXG4gICAgY29uc3Qgc2Vjb25kcyA9IE1hdGguZmxvb3IoZGlmZmVyZW5jZSAvIDEwMDApO1xyXG4gICAgY29uc3QgbWludXRlcyA9IE1hdGguZmxvb3Ioc2Vjb25kcyAvIDYwKTtcclxuICAgIGNvbnN0IGhvdXJzID0gTWF0aC5mbG9vcihtaW51dGVzIC8gNjApO1xyXG4gICAgY29uc3QgZGF5cyA9IE1hdGguZmxvb3IoaG91cnMgLyAyNCk7XHJcblxyXG4gICAgaWYgKGRheXMgPiAwKSB7XHJcbiAgICAgIHJldHVybiBkYXlzID09PSAxID8gJzEgZGF5IGFnbycgOiBgJHtkYXlzfSBkYXlzIGFnb2A7XHJcbiAgICB9IGVsc2UgaWYgKGhvdXJzID4gMCkge1xyXG4gICAgICByZXR1cm4gaG91cnMgPT09IDEgPyAnMSBob3VyIGFnbycgOiBgJHtob3Vyc30gaG91cnMgYWdvYDtcclxuICAgIH0gZWxzZSBpZiAobWludXRlcyA+IDApIHtcclxuICAgICAgcmV0dXJuIG1pbnV0ZXMgPT09IDEgPyAnMSBtaW51dGUgYWdvJyA6IGAke21pbnV0ZXN9IG1pbnV0ZXMgYWdvYDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiAnSnVzdCBub3cnO1xyXG4gICAgfVxyXG4gIH1cclxuICBleHBvcnRTdG9yZUxpc3Rhc1hsc3goKXtcclxuICAgIGxldCBkYXRhID17XHJcbiAgICAgIHN0b3JlSWQ6dGhpcy5zdG9yZUlkLFxyXG4gICAgICBmcm9tRGF0ZTogdGhpcy5oZWFkZXJGaWx0ZXI/LmRhdGU/LnN0YXJ0RGF0ZSxcclxuICAgICAgdG9EYXRlOiB0aGlzLmhlYWRlckZpbHRlcj8uZGF0ZT8uZW5kRGF0ZSxcclxuICAgICAgZmlsdGVyOiB0aGlzLmZpbHRlcmVkSXNzdWUsXHJcbiAgICAgIGV4cG9ydDogdHJ1ZVxyXG4gICAgfVxyXG4gICAgdGhpcy5zZXJ2aWNlLnN0b3JlVGlja2V0TGlzdEV4cG9ydChkYXRhKS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OihyZXM6YW55KT0+e1xyXG4gICAgICAgIGxldCBleGNlbERhdGEgPSByZXM7XHJcbiAgICAgICAgdGhpcy5kYXRhc2VydmljZS5zYXZlQXNFeGNlbEZpbGUoZXhjZWxEYXRhLCdzdG9yZScpXHJcbiAgICAgIH0sXHJcbiAgICAgIGVycm9yOihlcnIpPT4ge1xyXG4gICAgICB9LFxyXG4gICAgICBjb21wbGV0ZSgpIHtcclxuICAgICAgICBcclxuICAgICAgfSxcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBTaG93VGlja2V0KGluZGV4OmFueSx2YWx1ZTphbnkpe1xyXG4gICAgdGhpcy5zZWxlY3RDYXJkID0gaW5kZXggPyBpbmRleCA6IDA7XHJcbiAgICB0aGlzLnRpY2tldElkID0gdmFsdWU7XHJcbiAgICB0aGlzLnZpZXdUaWNrZXQoKTtcclxuICB9XHJcblxyXG4gIEZpbHRlcklzc3VlKHZhbHVlOmFueSl7XHJcbiAgICAgdGhpcy5maWx0ZXJlZElzc3VlID0gdmFsdWU7XHJcbiAgICAgdGhpcy5zdG9yZVRpY2tldExpc3QoKTtcclxuICB9XHJcblxyXG4gIHNlbGVjdEl0ZW0odmFsdWU6YW55KXtcclxuICAgIGlmKHZhbHVlID09PSAnQWxsJyl7XHJcbiAgICAgIHRoaXMuZmlsdGVyZWRJc3N1ZSA9ICcnO1xyXG5cclxuICAgIH1lbHNle1xyXG4gICAgICB0aGlzLmZpbHRlcmVkSXNzdWUgPSB2YWx1ZTtcclxuXHJcbiAgICB9XHJcbiAgICB0aGlzLmRyb3BEb3duID0gZmFsc2U7XHJcbiAgICB0aGlzLnN0b3JlVGlja2V0TGlzdCgpXHJcbiAgfVxyXG5cclxuICBvcGVuRHJvcGRvd24oZXZlbnQ6TW91c2VFdmVudCl7XHJcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgIHRoaXMuZHJvcERvd24gPSAhdGhpcy5kcm9wRG93bjtcclxuICB9XHJcblxyXG5cclxuLy8gICByYW5nZXM6IGFueSA9IHtcclxuLy8gICAgICdUb2RheSc6IFtkYXlqcygpLCBkYXlqcygpXSxcclxuLy8gICAgICdZZXN0ZXJkYXknOiBbZGF5anMoKS5zdWJ0cmFjdCgxLCAnZGF5cycpLCBkYXlqcygpLnN1YnRyYWN0KDEsICdkYXlzJyldLFxyXG4vLyAgICAgJ1RoaXMgV2Vlayc6IFtkYXlqcygpLnN1YnRyYWN0KDYsICdkYXlzJyksIGRheWpzKCldLFxyXG4vLyAgICAgJ0xhc3QgV2Vlayc6IFtkYXlqcygpLnN1YnRyYWN0KDE0LCAnZGF5cycpLnN0YXJ0T2YoJ2RheXMnKSwgZGF5anMoKS5zdWJ0cmFjdCg4LCAnZGF5cycpLmVuZE9mKCdkYXlzJyldLFxyXG4vLyAgICAgJ1RoaXMgTW9udGgnOiBbZGF5anMoKS5zdGFydE9mKCdtb250aCcpLCBkYXlqcygpLmVuZE9mKCdtb250aCcpXSxcclxuLy8gICAgICdMYXN0IE1vbnRoJzogW1xyXG4vLyAgICAgICBkYXlqcygpLnN1YnRyYWN0KDEsICdtb250aCcpLnN0YXJ0T2YoJ21vbnRoJyksXHJcbi8vICAgICAgIGRheWpzKCkuc3VidHJhY3QoMSwgJ21vbnRoJykuZW5kT2YoJ21vbnRoJylcclxuLy8gICAgIF1cclxuLy8gICB9O1xyXG5cclxuLy8gICBkYXRlY2hhbmdlKGV2ZW50OiBhbnkpIHtcclxuLy8gICBpZiAoZXZlbnQgJiYgZXZlbnQuc3RhcnREYXRlICYmIGV2ZW50LmVuZERhdGUpIHtcclxuLy8gICAgIGlmIChkYXlqcyhldmVudC5zdGFydERhdGUpLmlzVmFsaWQoKSAmJiBkYXlqcyhldmVudC5lbmREYXRlKS5pc1ZhbGlkKCkpIHtcclxuLy8gICAgICAgLy8gRGF0ZXMgYXJlIHZhbGlkLCBwcm9jZWVkIHdpdGggZm9ybWF0dGluZ1xyXG4vLyAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZVJhbmdlLnN0YXJ0RGF0ZSA9IGRheWpzKGV2ZW50LnN0YXJ0RGF0ZSkudXRjKCkuZm9ybWF0KCdERC1NTS1ZWVlZJyk7XHJcbi8vICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlUmFuZ2UuZW5kRGF0ZSA9IGRheWpzKGV2ZW50LmVuZERhdGUpLnV0YygpLmZvcm1hdCgnREQtTU0tWVlZWScpO1xyXG4vLyAgICAgfSBlbHNlIHtcclxuLy8gICAgICAgLy8gRGF0ZXMgYXJlIG5vdCB2YWxpZCwgaGFuZGxlIHRoZSBzY2VuYXJpbyBhY2NvcmRpbmdseVxyXG4vLyAgICAgICBjb25zb2xlLmVycm9yKCdJbnZhbGlkIGRhdGVzIHByb3ZpZGVkOicsIGV2ZW50LnN0YXJ0RGF0ZSwgZXZlbnQuZW5kRGF0ZSk7XHJcbi8vICAgICAgIC8vIElmIHlvdSB3YW50IHRvIGZhbGxiYWNrIHRvIHN0b3JlZCBmaWx0ZXJzIHdoZW4gdGhlIGRhdGVzIGFyZSBpbnZhbGlkLCB5b3UgY2FuIGtlZXAgdGhlIGV4aXN0aW5nIGxvZ2ljXHJcbi8vICAgICAgIGNvbnN0IHN0b3JlZEZpbHRlcnMgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdkYXRlUmFuZ2VGaWx0ZXJzJykgfHwgJ3t9Jyk7XHJcbi8vICAgICAgIGlmIChzdG9yZWRGaWx0ZXJzLnN0YXJ0RGF0ZSAmJiBzdG9yZWRGaWx0ZXJzLmVuZERhdGUpIHtcclxuLy8gICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZVJhbmdlLnN0YXJ0RGF0ZSA9IGRheWpzKHN0b3JlZEZpbHRlcnMuc3RhcnREYXRlKS5mb3JtYXQoJ0RELU1NLVlZWVknKTtcclxuLy8gICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZVJhbmdlLmVuZERhdGUgPSBkYXlqcyhzdG9yZWRGaWx0ZXJzLmVuZERhdGUpLmZvcm1hdCgnREQtTU0tWVlZWScpO1xyXG4vLyAgICAgICB9XHJcbi8vICAgICB9XHJcbi8vICAgfSBlbHNlIHtcclxuLy8gICAgIGNvbnNvbGUuZXJyb3IoJ0ludmFsaWQgZXZlbnQgb2JqZWN0OicsIGV2ZW50KTtcclxuLy8gICB9XHJcbi8vIH1cclxuXHJcblxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJjYXJkXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY2FyZC1oZWFkZXIgYm9yZGVyLTBcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC10aXRsZSBmbGV4LWNvbHVtblwiPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNhcmQtbGFiZWxcIj5cclxuICAgICAgICAgICAgICAgIEFjdGl2aXR5XHJcbiAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LXN1YlwiPlxyXG4gICAgICAgICAgICAgICAgQW4gb3ZlcnZpZXcgb2YgdGhlIHN0b3JlIGlzc3VlcyBhbmQgdGhlIGRvd250aW1lIGZvciB7e2hlYWRlckZpbHRlcj8uZGF0ZT8uc3RhcnREYXRlfGN1c3RvbURhdGVGb3JtYXR9fVxyXG4gICAgICAgICAgICAgICAgLSB7e2hlYWRlckZpbHRlcj8uZGF0ZT8uZW5kRGF0ZXxjdXN0b21EYXRlRm9ybWF0fX1cclxuICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLXRvb2xiYXJcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBvc2l0aW9uLXJlbGF0aXZlXCI+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwib3BlbkRyb3Bkb3duKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1kZWZhdWx0IG14LTIgYnRuLW91dGxpbmUgYnRuLW91dGxpbmUtZGVmYXVsdCByb3VuZGVkLTMgdGV4dC1ub3dyYXAgYm9yZGVyLXZhbFwiPjxzdmdcclxuICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMVwiIHZpZXdCb3g9XCIwIDAgMjAgMjFcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTUgMTAuMDI2NEgxNU0yLjUgNS4wMjYzN0gxNy41TTcuNSAxNS4wMjY0SDEyLjVcIiBzdHJva2U9XCIjMzQ0MDU0XCIgc3Ryb2tlLXdpZHRoPVwiMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXMtMlwiPkZpbHRlcjwvc3Bhbj4gPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZHJvcERvd25cIiBjbGFzcz1cImNhcmQgcHktMSB3LTIwMHB4IHBvc2l0aW9uLWFic29sdXRlIHRvcC01MHB4IGVuZC0wIHotMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDx1bCAqbmdGb3I9XCJsZXQgaXRlbSBvZiBkcm9wZG93bkl0ZW1zXCIgY2xhc3M9XCJsaXN0LXVuc3R5bGVkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBbbmdDbGFzc109XCJ0aGlzLmZpbHRlcmVkSXNzdWUgPT0gaXRlbSA/ICdhY3RpdmUnIDogJydcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjYW1lcmEgcHgtNSBpdGVtcyBmdy1zZW1pYm9sZCBjdXJzb3ItcG9pbnRlciBweS0yXCIgKGNsaWNrKT1cInNlbGVjdEl0ZW0oaXRlbSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7aXRlbX19PC9saT5cclxuICAgICAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnRuIGJ0bi1kZWZhdWx0IGJ0bi1vdXRsaW5lXCIgKGNsaWNrKT1cImV4cG9ydFN0b3JlTGlzdGFzWGxzeCgpXCI+XHJcbiAgICAgICAgICAgICAgICA8c3Bhbj48c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjFcIiB2aWV3Qm94PVwiMCAwIDIwIDIxXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTcuNSAxMi41MjY0VjE1Ljg1OTdDMTcuNSAxNi4zMDE3IDE3LjMyNDQgMTYuNzI1NyAxNy4wMTE4IDE3LjAzODJDMTYuNjk5MyAxNy4zNTA4IDE2LjI3NTQgMTcuNTI2NCAxNS44MzMzIDE3LjUyNjRINC4xNjY2N0MzLjcyNDY0IDE3LjUyNjQgMy4zMDA3MiAxNy4zNTA4IDIuOTg4MTYgMTcuMDM4MkMyLjY3NTU5IDE2LjcyNTcgMi41IDE2LjMwMTcgMi41IDE1Ljg1OTdWMTIuNTI2NE0xNC4xNjY3IDYuNjkzMDNMMTAgMi41MjYzN00xMCAyLjUyNjM3TDUuODMzMzMgNi42OTMwM00xMCAyLjUyNjM3VjEyLjUyNjRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzM0NDA1NFwiIHN0cm9rZS13aWR0aD1cIjEuNjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvc3ZnPjwvc3Bhbj4gRXhwb3J0XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIHBvc2l0aW9uLXJlbGF0aXZlIG15LTEgbXMtM1wiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzdmctaWNvbiBzdmctaWNvbi0xIHBvc2l0aW9uLWFic29sdXRlIG1zLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTMuMzMzMyAxLjY2NjYzVjQuOTk5OTZNNi42NjY2NyAxLjY2NjYzVjQuOTk5OTZNMi41IDguMzMzMjlIMTcuNU00LjE2NjY3IDMuMzMzMjlIMTUuODMzM0MxNi43NTM4IDMuMzMzMjkgMTcuNSA0LjA3OTQ4IDE3LjUgNC45OTk5NlYxNi42NjY2QzE3LjUgMTcuNTg3MSAxNi43NTM4IDE4LjMzMzMgMTUuODMzMyAxOC4zMzMzSDQuMTY2NjdDMy4yNDYxOSAxOC4zMzMzIDIuNSAxNy41ODcxIDIuNSAxNi42NjY2VjQuOTk5OTZDMi41IDQuMDc5NDggMy4yNDYxOSAzLjMzMzI5IDQuMTY2NjcgMy4zMzMyOVpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzM0NDA1NFwiIHN0cm9rZS13aWR0aD1cIjEuNjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiZngtZGF0ZS1yYW5nZSBmb3JtLWNvbnRyb2wgcHMtMTRcIiB0eXBlPVwidGV4dFwiIG1hdElucHV0IG5neERhdGVyYW5nZXBpY2tlck1kIFtkcm9wc109XCInZG93bidcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtvcGVuc109XCIncmlnaHQnXCIgW3Jhbmdlc109XCJyYW5nZXNcIiBbc2hvd0N1c3RvbVJhbmdlTGFiZWxdPVwidHJ1ZVwiIFthbHdheXNTaG93Q2FsZW5kYXJzXT1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICBba2VlcENhbGVuZGFyT3BlbmluZ1dpdGhSYW5nZV09XCJ0cnVlXCIgW3Nob3dDYW5jZWxdPVwidHJ1ZVwiIGF1dG9jb21wbGV0ZT1cIm9mZlwiIFsobmdNb2RlbCldPVwic2VsZWN0ZWREYXRlUmFuZ2VcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtsb2NhbGVdPVwieyBmb3JtYXQ6ICdERC1NTS1ZWVlZJywgZmlyc3REYXk6IDEsIG1vbnRoTmFtZXM6IFsnSmFudWFyeScsICdGZWJydWFyeScsICdNYXJjaCcsICdBcHJpbCcsICdNYXknLCAnSnVuZScsICdKdWx5JywgJ0F1Z3VzdCcsICdTZXB0ZW1iZXInLCAnT2N0b2JlcicsICdOb3ZlbWJlcicsICdEZWNlbWJlciddIH1cIlxyXG4gICAgICAgICAgICAgICAgICAgIChkYXRlc1VwZGF0ZWQpPVwiZGF0ZWNoYW5nZSgkZXZlbnQpXCIgbmFtZT1cImRhdGVyYW5nZVwiIC8+XHJcbiAgICAgICAgICAgIDwvZGl2PiAtLT5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXhcIj5cclxuICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgaXNzdWUgb2YgdGlja2V0Q2FyZFwiIGNsYXNzPVwiY2FyZCBjYXJkLXZpZXcgcC01IG1lLTVcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGl0bGUgZnctYm9sZFwiPnt7aXNzdWUuY291bnR9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3ViLXRpdGxlIGZ3LXNlbWlib2xkXCI+e3tpc3N1ZS5uYW1lfX08L3NwYW4+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3VuZGVkLTMgYm9yZGVyIGJvcmRlci1ncmF5IGJvcmRlci0xIG10LTVcIj5cclxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiFsb2FkaW5nICYmICFub0RhdGFcIiBjbGFzcz1cInJvdyBwLTVcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGRhdGEgb2Ygc3RvcmVUaWNrZXQ7bGV0IGluZGV4ID0gaW5kZXhcIiBjbGFzcz1cImlzc3VlY2FyZCB3LTEwMCBtYi00IGN1cnNvci1wb2ludGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIlNob3dUaWNrZXQoaW5kZXgsZGF0YT8udGlja2V0SWQpXCIgW25nQ2xhc3NdPVwic2VsZWN0Q2FyZCA9PSBpbmRleCA/ICdhY3RpdmUnIDogJydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1haW5jYXJkLWxhYmVsIGZ3LWJvbGQgZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIG1iLTVcIj48c3Bhbj4gPGltZ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmM9Jy4vYXNzZXRzL3RhbmdvL0ltYWdlcy90aWNrZXQuc3ZnJz4ge3tkYXRhPy50aWNrZXRJZH19PC9zcGFuPiA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYmFkZ2UgdGV4dC1zdWNjZXNzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJkYXRhLnN0YXR1cyA9PSAnY2xvc2VkJyA/ICdiYWRnZS1saWdodC1zdWNjZXNzJyA6KGRhdGEuc3RhdHVzID09ICdpbnByb2dyZXNzJyA/ICdiYWRnZS1saWdodC1wcmltYXJ5JzonYmFkZ2UtbGlnaHQtd2FybmluZycpXCI+e3tkYXRhLnN0YXR1c319PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImRhdGEuaXNzdWVTdGF0dXMgPT09ICdub3RpZGVudGlmaWVkJ1wiIGNsYXNzPVwibWItNSBjb250ZW50dGV4dFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgV2UgaGF2ZSBub3QgcmVjZWl2ZWQgZGF0YSBmcm9tIHlvdXIgc3RvcmUuIFdlIGFyZSBjdXJyZW50bHkgaW52ZXN0aWdhdGluZyB0aGUgaXNzdWUuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZGF0YS5pc3N1ZVN0YXR1cyA9PT0naWRlbnRpZmllZCdcIiBjbGFzcz1cIm1iLTUgY29udGVudHRleHRcIj5TdG9yZSBpcyBjdXJyZW50bHlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuY291bnRlcmluZyBhIDxzcGFuIGNsYXNzPVwiZnctYm9sZC03MDBcIj57e2RhdGEucHJpbWFyeUlzc3VlfX08L3NwYW4+IHdoaWNoIGlzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdGb3I9XCJsZXQgc2Vjb25kYXJ5IG9mIGRhdGEuc2Vjb25kYXJ5SXNzdWU7IGxldCBsYXN0ID0gbGFzdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmdy1ib2xkLTcwMFwiPnt7c2Vjb25kYXJ5Py5uYW1lfX08bmctY29udGFpbmVyICpuZ0lmPVwiIWxhc3RcIj4gLDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPi5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHJvZmlsZSBkLWZsZXggYWxpZ24taXRlbXMtY2VudHJlIGp1c3RpZnktY29udGVudC1jZW50cmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIGNsYXNzPVwiXCIgc3JjPVwiLi9hc3NldHMvdGFuZ28vSW1hZ2VzL2dyb3Btb2RhbC5wbmdcIiBhbHQ9XCJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY29udGVudHRleHQgcHgtM1wiPjxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PVwiMTZcIiB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xNCAxMEMxNCAxMC4zNTM2IDEzLjg1OTUgMTAuNjkyOCAxMy42MDk1IDEwLjk0MjhDMTMuMzU5NCAxMS4xOTI5IDEzLjAyMDMgMTEuMzMzMyAxMi42NjY3IDExLjMzMzNINC42NjY2N0wyIDE0VjMuMzMzMzNDMiAyLjk3OTcxIDIuMTQwNDggMi42NDA1NyAyLjM5MDUyIDIuMzkwNTJDMi42NDA1NyAyLjE0MDQ4IDIuOTc5NzEgMiAzLjMzMzMzIDJIMTIuNjY2N0MxMy4wMjAzIDIgMTMuMzU5NCAyLjE0MDQ4IDEzLjYwOTUgMi4zOTA1MkMxMy44NTk1IDIuNjQwNTcgMTQgMi45Nzk3MSAxNCAzLjMzMzMzVjEwWlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzY2NzA4NVwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+IHt7ZGF0YS5jb21tZW50c319IDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNvbnRlbnR0ZXh0IHB4LTNcIj48c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE2XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD1cIjE2XCIgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTAuNjY2NyAxLjMzMzk4VjQuMDAwNjVNNS4zMzMzMyAxLjMzMzk4VjQuMDAwNjVNMiA2LjY2NzMySDE0TTMuMzMzMzMgMi42NjczMkgxMi42NjY3QzEzLjQwMyAyLjY2NzMyIDE0IDMuMjY0MjcgMTQgNC4wMDA2NVYxMy4zMzRDMTQgMTQuMDcwNCAxMy40MDMgMTQuNjY3MyAxMi42NjY3IDE0LjY2NzNIMy4zMzMzM0MyLjU5Njk1IDE0LjY2NzMgMiAxNC4wNzA0IDIgMTMuMzM0VjQuMDAwNjVDMiAzLjI2NDI3IDIuNTk2OTUgMi42NjczMiAzLjMzMzMzIDIuNjY3MzJaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz4ge3tkYXRhLkRhdGV9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS02XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1haW5jYXJkLWxhYmVsIGZ3LWJvbGQgZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPjxpbWcgc3JjPScuL2Fzc2V0cy90YW5nby9JbWFnZXMvdGlja2V0LnN2Zyc+e3t0aWNrZXRJbmZvPy50aWNrZXRJZH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImJhZGdlIGJhZGdlLWxpZ2h0LXByaW1hcnlcIj57e3RpY2tldEluZm8/LnN0YXR1c319PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IG9iaiBvZiB2aWV3VGlja2V0RGF0YTtsZXQgaT1pbmRleFwiIGNsYXNzPVwiXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBVc2VyIGNvZGUgc3RhcnQgIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJvYmouYWN0aW9uQnkgPT09ICdVc2VyJ1wiIGNsYXNzPVwiZC1mbGV4ICBtcy01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwib2JqLmFjdGlvblR5cGUgIT09J3N0YXR1c0NoYW5nZSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGZsZXgtY29sdW1uIGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyIHBlLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRyZSBqdXN0aWZ5LWNvbnRlbnQtY2VudHJlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJtc2dwcm9maWxlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYz0naHR0cHM6Ly9pbWFnZXMudW5zcGxhc2guY29tL3Bob3RvLTE0NDE5ODYzMDA5MTctNjQ2NzRiZDYwMGQ4P3c9NTAwJmF1dG89Zm9ybWF0JmZpdD1jcm9wJnE9NjAmaXhsaWI9cmItNC4wLjMmaXhpZD1NM3d4TWpBM2ZEQjhNSHh6WldGeVkyaDhNbng4YzNSdmNtVjhaVzU4TUh4OE1IeDhmREElM0QnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLTAgaC0xMDAgbXQtMyBib3JkZXIgYm9yZGVyLTEgYm9yZGVyLWdyYXlcIiBzdHlsZT1cIndpZHRoOjBweFwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHktM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJvYmouYWN0aW9uVHlwZSAhPT0nc3RhdHVzQ2hhbmdlJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IG1iLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaGVhZGluZ3RleHQgZnctYm9sZFwiPnt7b2JqPy5hY3Rpb25CeX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0aW1pbmd0ZXh0IHB4LTMgcHQtMSBmdy1ib2xkLTQwMFwiPnt7b2JqPy50aW1lU3RhbXB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicHJvZmlsZS1sYWJlbCBmb250LWJvbGQtNDAwXCI+VXNlciBoYXMgcmVwbGllZDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwib2JqLmFjdGlvblR5cGUgPT0gJ3N0YXR1c0NoZWNrUmVwbHknXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0dXBkYXRlcyBmdy1ib2xkLTQwMCBtdC0zXCI+SXNzdWUgaGFzIGJlZW4gPGI+PHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJvYmouc3RhdHVzQ2hlY2tSZXBseT09J05vJ1wiPm5vdDwvc3Bhbj4gcmVzb2x2ZWQuPC9iPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0dXBkYXRlcyBmdy1ib2xkLTQwMFwiICpuZ0lmPVwib2JqLnN0YXR1c0NoZWNrUmVwbHk9PSdObydcIj4gSXQgdGFrZXNcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7b2JqPy5oaWJlcm5hdGlvbkRheXN9fSBtb3JlIGRheXMgdG8gcmVzb2x2ZS48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiXCIgY2xhc3M9XCJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJpbnZlc3RpZ2F0aW9uIGZ3LWJvbGQtNDAwXCI+QXJlIGFsbCBDQ1RWIGNhbWVyYXMgZnVuY3Rpb25pbmdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3Blcmx5Pzwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS00XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJcIj5DYW1lcmEgMTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRyZSBqdXN0aWZ5LWNvbnRlbnQtY2VudHJlIHJvdW5kZWQtMyBvdmVyZmxvdy1oaWRkZW5cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBjbGFzcz1cInctMTAwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYz0naHR0cHM6Ly9pbWFnZXMudW5zcGxhc2guY29tL3Bob3RvLTE0NDE5ODYzMDA5MTctNjQ2NzRiZDYwMGQ4P3c9NTAwJmF1dG89Zm9ybWF0JmZpdD1jcm9wJnE9NjAmaXhsaWI9cmItNC4wLjMmaXhpZD1NM3d4TWpBM2ZEQjhNSHh6WldGeVkyaDhNbng4YzNSdmNtVjhaVzU4TUh4OE1IeDhmREElM0QnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIlwiPkNhbWVyYSAyPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudHJlIGp1c3RpZnktY29udGVudC1jZW50cmUgcm91bmRlZC0zIG92ZXJmbG93LWhpZGRlblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIGNsYXNzPVwidy0xMDBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjPSdodHRwczovL2ltYWdlcy51bnNwbGFzaC5jb20vcGhvdG8tMTQ0MTk4NjMwMDkxNy02NDY3NGJkNjAwZDg/dz01MDAmYXV0bz1mb3JtYXQmZml0PWNyb3AmcT02MCZpeGxpYj1yYi00LjAuMyZpeGlkPU0zd3hNakEzZkRCOE1IeHpaV0Z5WTJoOE1ueDhjM1J2Y21WOFpXNThNSHg4TUh4OGZEQSUzRCc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tNFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiXCI+Q2FtZXJhIDM8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50cmUganVzdGlmeS1jb250ZW50LWNlbnRyZSByb3VuZGVkLTMgb3ZlcmZsb3ctaGlkZGVuXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJ3LTEwMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmM9J2h0dHBzOi8vaW1hZ2VzLnVuc3BsYXNoLmNvbS9waG90by0xNDQxOTg2MzAwOTE3LTY0Njc0YmQ2MDBkOD93PTUwMCZhdXRvPWZvcm1hdCZmaXQ9Y3JvcCZxPTYwJml4bGliPXJiLTQuMC4zJml4aWQ9TTN3eE1qQTNmREI4TUh4elpXRnlZMmg4TW54OGMzUnZjbVY4Wlc1OE1IeDhNSHg4ZkRBJTNEJz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHR1cGRhdGVzIGZ3LWJvbGQtNDAwIG10LTVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBhYm92ZSBjYW1lcmEgc3RyZWFtaW5nIGFyZSBub3Qgd29ya2luZyBkdWUgPHNwYW4gY2xhc3M9XCJmdy1ib2xkLTcwMFwiPnBvd2VyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNzdWU8L3NwYW4+IHRvIHRoZSBjYW1lcmEuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJvYmouYWN0aW9uVHlwZSA9PT0naXNzdWVVcGRhdGUnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IHJlcyBvZiBvYmo/LnJlYXNvbnNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0dXBkYXRlcyBmdy1zZW1pYm9sZCBtdC0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2UncmUgY3VycmVudGx5IGVuY291bnRlcmluZyBhbiA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZ3LWJvbGQtNzAwXCI+e3tyZXMucHJpbWFyeUlzc3VlfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdC0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJpbnZlc3RpZ2F0aW9uIGZ3LWJvbGQtNDAwXCI+VGhlIGZvbGxvd2luZyBhcmUgdGhlIHJlbGV2YW50XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2JsZW1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFjaW5nPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz1cInRpbWluZ3RleHQgZnctYm9sZC00MDAgbXQtM1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBzZWNJc3N1ZXMgb2YgcmVzPy5zZWNvbmRhcnlJc3N1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+e3tzZWNJc3N1ZXMubmFtZX19PC9saT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwic2VsZWN0ZWRJc3N1ZSA9PT0gJydcIiBjbGFzcz1cInByb2ZpbGUtbGFiZWwgZnctc2VtaWJvbGQgbXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBLaW5kbHkgY2hvb3NlIHRoZSBvcHRpb24gYmVsb3cgdGhhdCBjb3JyZXNwb25kcyB0byB0aGUgaXNzdWUgeW91IGFyZSBleHBlcmllbmNpbmcgaW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0b3JlLlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tIFVzZXIgY29kZSBlbmQgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gVGFuZ28gY29kZSBzdGFydCAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIm9iai5hY3Rpb25CeSA9PT0gJ1RhbmdvJ1wiIGNsYXNzPVwiZC1mbGV4IG1iLTUgIG1zLTVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1jb2x1bW4ganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXIgcGUtM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudHJlIGp1c3RpZnktY29udGVudC1jZW50cmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBjbGFzcz1cIm1zZ3Byb2ZpbGVcIiBzcmM9XCIuL2Fzc2V0cy90YW5nby9JbWFnZXMvdGFuZ29wcm9maWxlLnBuZ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLTAgaC0xMDAgbXQtMyBib3JkZXIgYm9yZGVyLTEgYm9yZGVyLWdyYXlcIiBzdHlsZT1cIndpZHRoOjBweFwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHktM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggbWItM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImhlYWRpbmd0ZXh0IGZ3LWJvbGRcIj57e29iaj8uYWN0aW9uQnl9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0aW1pbmd0ZXh0IGZ3LWJvbGQtNDAwIHB4LTMgcHQtMVwiPnt7b2JqPy50aW1lU3RhbXB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInByb2ZpbGUtbGFiZWwgZnctYm9sZC00MDBcIj50YW5nbyBoYXMgcmVwbGllZCB0byB0aGVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzc3VlPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwib2JqLmFjdGlvblR5cGUgPT0gJ2RhdGFSZWNpdmVkJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHR1cGRhdGVzIGZ3LWJvbGQtNDAwIG10LTNcIj5EYXRhIFJlY2VpdmVkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJvYmouYWN0aW9uVHlwZSA9PSAnc3RhdHVzQ2hlY2tNb25pdG9yJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHR1cGRhdGVzIGZ3LWJvbGQtNDAwIG10LTNcIj5UaGFuayB5b3UgZm9yIHRoZSB1cGRhdGUuIFdl4oCZbGwgZ2V0IGJhY2sgYWZ0ZXIgdGhlIGJ1ZmZlciB0aW1lIHlvdSBwcm92aWRlZC5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIm9iai5hY3Rpb25UeXBlID09PSdzdGVwc1RvUmVzb2x2ZSdcIiBjbGFzcz1cIm10LTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dHVwZGF0ZXMgZnctYm9sZC00MDBcIj5QbGVhc2UgZm9sbG93IHRoZSBiZWxvdyBzdGVwcyB0byByZXNvbHZlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGFib3ZlIGlzc3VlPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgcmVzIG9mIG9iaj8ucmVhc29uc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdC01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaGVhZGluZ3RleHQgZnctc2VtaWJvbGRcIj57e3Jlcy5wcmltYXJ5SXNzdWV9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPVwibXQtMyB0aW1pbmd0ZXh0IGZ3LWJvbGQtNDAwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBzZWNJc3N1ZXMgb2YgcmVzPy5zZWNvbmRhcnlJc3N1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPnt7c2VjSXNzdWVzLm5hbWV9fTwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gZGVmYXVsdEluZnJhIHN0YXJ0IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJvYmouYWN0aW9uVHlwZSA9PT0nZGVmYXVsdEluZnJhJ1wiIGNsYXNzPVwiY29udGVudHRleHQgZnctYm9sZC00MDBcIj5XZSBoYXZlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vdFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWNlaXZlZCBkYXRhIGZyb20geW91ciBzdG9yZS4gV2UgYXJlIGN1cnJlbnRseSBpbnZlc3RpZ2F0aW5nIHRoZSBpc3N1ZTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gZGVmYXVsdEluZnJhIGVuZCAtLT5cclxuXHJcblxyXG5cclxuXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tIFRhbmdvIGNvZGUgZW5kIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibG9hZGluZ1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IGxvYWRlciAgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2hpbW1lclwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3cmFwcGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSB0aXRsZVwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgbGlua1wiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgZGVzY3JpcHRpb25cIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNoaW1tZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid3JhcHBlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgdGl0bGVcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGxpbmtcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGRlc2NyaXB0aW9uXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJub0RhdGFcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy0xMiBtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keSBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXIgZmxleC1jb2x1bW5cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBjbGFzcz1cImltZy1zcmNcIiBzcmM9XCIuL2Fzc2V0cy90YW5nby9JY29ucy9Ob2RhdGEuc3ZnXCIgYWx0PVwiXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgPC9kaXY+Il19