tango-app-ui-store-ticket-infra 3.7.5 → 3.7.7

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.
@@ -1,28 +1,19 @@
1
- import { Component, Input } from '@angular/core';
1
+ import { Component, Input, ViewChild } from '@angular/core';
2
2
  import { Subject, debounceTime, distinctUntilChanged, takeUntil } from 'rxjs';
3
3
  import * as i0 from "@angular/core";
4
4
  import * as i1 from "tango-app-ui-global";
5
5
  import * as i2 from "../../services/tickets.service";
6
6
  import * as i3 from "@angular/router";
7
- import * as i4 from "@angular/common";
8
- import * as i5 from "@angular/forms";
9
- import * as i6 from "tango-app-ui-shared";
10
- // ===========================================================================
11
- // TEMPORARY MOCK DATA — the last block still to be replaced. The issue cards
12
- // and the ticket list are live; only the picker's secondary reasons remain.
13
- // ===========================================================================
14
- /** /infra/PrimaryReasons — the secondary reasons offered under each primary */
15
- const MOCK_SECONDARY_REASONS = {
16
- 'Internet Issues': ['No internet connection', 'Intermittent connectivity', 'Low bandwidth'],
17
- 'Camera Issues': ['Camera not powered on', 'Lens blurred or dirty', 'Camera angle changed'],
18
- 'System Issues': ['NVR / DVR is off', 'Hard disk full', 'System restarted'],
19
- 'Store Operation Issues': ['Store closed', 'Renovation in progress', 'Power shutdown'],
20
- 'Application Issues': ['Edge app not running', 'App version outdated'],
21
- };
7
+ import * as i4 from "@ng-bootstrap/ng-bootstrap";
8
+ import * as i5 from "tango-app-ui-shared";
9
+ import * as i6 from "@angular/common";
10
+ import * as i7 from "@angular/forms";
22
11
  export class TicketInfraV2Component {
23
12
  gs;
24
13
  ticketservice;
25
14
  route;
15
+ modalService;
16
+ toastservice;
26
17
  selectedTab;
27
18
  destroy$ = new Subject();
28
19
  headerFilter;
@@ -42,6 +33,9 @@ export class TicketInfraV2Component {
42
33
  // separately - the left column must not flash on every selection.
43
34
  detailLoading = false;
44
35
  // Issue identification, mirroring the V1 tab's flow.
36
+ // `submitting` guards the double click: identify answers 409 the second time,
37
+ // so an unguarded form turns one slow request into a visible error.
38
+ submitting = false;
45
39
  selectedIssue = '';
46
40
  secondaryIssues = [];
47
41
  hibernationDays = 0;
@@ -53,10 +47,18 @@ export class TicketInfraV2Component {
53
47
  * another card is not overridden by a stale query param.
54
48
  */
55
49
  requestedTicketId = '';
56
- constructor(gs, ticketservice, route) {
50
+ // The down-streams popup. Held as a template rather than its own component:
51
+ // it is a read-only list with no state of its own, and the library already
52
+ // opens its dialogs this way (raise-ticket, ticket-camera-angle).
53
+ streamsModal;
54
+ streams = [];
55
+ streamsCycleId = '';
56
+ constructor(gs, ticketservice, route, modalService, toastservice) {
57
57
  this.gs = gs;
58
58
  this.ticketservice = ticketservice;
59
59
  this.route = route;
60
+ this.modalService = modalService;
61
+ this.toastservice = toastservice;
60
62
  }
61
63
  // V1 also has a refreshticket branch here that omits the selectedIssue check,
62
64
  // which makes the picker and the chosen-issue block render together. There is
@@ -66,7 +68,9 @@ export class TicketInfraV2Component {
66
68
  // Watch has already found.
67
69
  get canIdentify() {
68
70
  const t = this.ticketInfo;
69
- return !!t && !t.storeResponded && t.status !== 'closed';
71
+ // issueStatus, not storeResponded: the API sends no such field, so once the
72
+ // mock stopped setting it locally the picker would never close again.
73
+ return !!t && t.issueStatus !== 'identified' && t.status !== 'closed';
70
74
  }
71
75
  get showIssuePicker() { return this.canIdentify && this.selectedIssue === ''; }
72
76
  get showIssueDetail() { return this.canIdentify && this.selectedIssue !== ''; }
@@ -178,6 +182,12 @@ export class TicketInfraV2Component {
178
182
  next: (res) => {
179
183
  const ticket = res?.code === 200 ? res?.data?.ticket : null;
180
184
  this.ticketInfo = ticket ? this.withViewState(ticket) : null;
185
+ // The detail response carries a fresh parent, shaped by the same
186
+ // storeTicketRows the list uses, so the card is refreshed from it too.
187
+ // Without this the badge keeps the status the list call saw and can
188
+ // contradict the children rendered beside it.
189
+ if (ticket)
190
+ this.ticketList[index] = { ...ticket, children: undefined };
181
191
  this.detailLoading = false;
182
192
  },
183
193
  error: () => { this.ticketInfo = null; this.detailLoading = false; },
@@ -198,7 +208,22 @@ export class TicketInfraV2Component {
198
208
  // Rows open independently, so several can be expanded at once.
199
209
  toggleChild(child) { child.expanded = !child.expanded; }
200
210
  toggleAnalysis(entry) { entry.showAnalysis = !entry.showAnalysis; }
201
- /** Tango and Tango Watch get the product logo; anyone else gets a person icon. */
211
+ /**
212
+ * Opens the down-streams popup for one child.
213
+ *
214
+ * stopPropagation is load-bearing: the pill sits inside the accordion header,
215
+ * which toggles the row on click, so without it every open would also collapse
216
+ * the row underneath.
217
+ */
218
+ openStreams(child, event) {
219
+ event.stopPropagation();
220
+ if (!child.downStreams?.length)
221
+ return;
222
+ this.streams = child.downStreams;
223
+ this.streamsCycleId = child.cycleId;
224
+ this.modalService.open(this.streamsModal, { centered: true, size: 'lg' });
225
+ }
226
+ /** Tango and Tango Watch get the product mark; anyone else gets the person avatar. */
202
227
  isTangoAuthor(author) {
203
228
  return author.toLowerCase().startsWith('tango');
204
229
  }
@@ -209,6 +234,13 @@ export class TicketInfraV2Component {
209
234
  const raw = String(entry?.agentStatus ?? '').replace(/_/g, ' ');
210
235
  return raw ? raw.charAt(0).toUpperCase() + raw.slice(1) : '';
211
236
  }
237
+ // The role line under the author, split by which side wrote the entry.
238
+ // authorType comes from the stored actionBy, so it needs no guesswork here.
239
+ replyLabel(entry) {
240
+ return entry.authorType === 'user'
241
+ ? 'store has replied to the issue'
242
+ : 'tango has replied to the issue';
243
+ }
212
244
  // Amber keeps escalated looking like the alert it is; everything else is
213
245
  // neutral, so the pill reports without shouting.
214
246
  agentPillClass(entry) {
@@ -245,7 +277,20 @@ export class TicketInfraV2Component {
245
277
  // '' clears the selection and returns to the option list — same contract as V1.
246
278
  choosenIssue(value) {
247
279
  this.selectedIssue = value;
248
- this.secondaryIssues = (MOCK_SECONDARY_REASONS[value] ?? []).map((name) => ({ name, checked: false }));
280
+ this.secondaryIssues = [];
281
+ if (!value) {
282
+ return;
283
+ }
284
+ // The API is the only source of valid names: identify checks every one
285
+ // against infraReasons and rejects the whole call on the first miss.
286
+ this.ticketservice.secondaryReason({ primaryIssue: value }).pipe(takeUntil(this.destroy$)).subscribe({
287
+ next: (res) => {
288
+ this.secondaryIssues = res?.code === 200
289
+ ? (res?.data?.result ?? []).map((r) => ({ name: r.name, checked: false }))
290
+ : [];
291
+ },
292
+ error: () => { this.secondaryIssues = []; },
293
+ });
249
294
  this.hibernationDays = 0;
250
295
  this.comments = '';
251
296
  }
@@ -260,44 +305,57 @@ export class TicketInfraV2Component {
260
305
  get canSubmitIssue() {
261
306
  return this.secondaryIssues.some((r) => r.checked);
262
307
  }
263
- // Mocked: writes straight onto the selected row so the change survives
264
- // switching tickets. No request is made.
265
308
  submitIssue() {
266
309
  const t = this.ticketInfo;
267
- if (!t || !this.canSubmitIssue) {
310
+ if (!t || !this.canSubmitIssue || this.submitting) {
268
311
  return;
269
312
  }
270
- const reasons = this.secondaryIssues.filter((r) => r.checked).map((r) => r.name);
271
- t.issueStatus = 'identified';
272
- t.storeResponded = true;
273
- t.primaryIssue = this.selectedIssue;
274
- t.secondaryIssue = reasons.join(', ');
275
- t.comments = t.comments + 1;
276
- // The same child the form was shown under - the live one, not the oldest.
277
- const child = this.identifyChild;
278
- if (child) {
279
- const parts = [`Issue identified as ${this.selectedIssue} - ${t.secondaryIssue}.`];
280
- if (this.hibernationDays > 0) {
281
- parts.push(`Hibernated for ${this.hibernationDays} day${this.hibernationDays === 1 ? '' : 's'}.`);
282
- }
283
- if (this.comments.trim()) {
284
- parts.push(this.comments.trim());
285
- }
286
- child.entries.push({ kind: 'raised', author: 'Store', at: new Date().toLocaleString('en-GB', { day: '2-digit', month: 'short', year: 'numeric', hour: '2-digit', minute: '2-digit' }), text: parts.join(' ') });
313
+ const body = {
314
+ primary: this.selectedIssue,
315
+ secondary: this.secondaryIssues.filter((r) => r.checked).map((r) => r.name),
316
+ comment: this.comments.trim(),
317
+ };
318
+ // Omitted rather than sent as 0: the API branches on the key being present,
319
+ // scheduling a status check when it is absent.
320
+ if (this.hibernationDays > 0) {
321
+ body.hibernationDays = this.hibernationDays;
287
322
  }
288
- this.choosenIssue('');
323
+ this.submitting = true;
324
+ this.ticketservice.infraV2IdentifyIssue(t.ticketId, body).pipe(takeUntil(this.destroy$)).subscribe({
325
+ next: (res) => {
326
+ this.submitting = false;
327
+ if (res?.code !== 200) {
328
+ this.toastservice.getErrorToast(res?.message || 'Could not update the issue');
329
+ return;
330
+ }
331
+ this.choosenIssue('');
332
+ this.comments = '';
333
+ this.hibernationDays = 0;
334
+ // Re-read rather than patching in place: the response carries no ticket,
335
+ // and the timeline, status and comment count all move together on the
336
+ // server. showTicket refreshes the card as well as the pane.
337
+ this.showTicket(this.selectCard);
338
+ },
339
+ error: (err) => {
340
+ this.submitting = false;
341
+ this.toastservice.getErrorToast(err?.error?.message || 'Could not update the issue');
342
+ },
343
+ });
289
344
  }
290
345
  ngOnDestroy() {
291
346
  this.destroy$.next(true);
292
347
  this.destroy$.complete();
293
348
  }
294
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TicketInfraV2Component, deps: [{ token: i1.GlobalStateService }, { token: i2.TicketsService }, { token: i3.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component });
295
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: TicketInfraV2Component, selector: "lib-ticket-infra-v2", inputs: { selectedTab: "selectedTab" }, ngImport: i0, template: "<div class=\"card\">\r\n <div class=\"card-header border-0 pt-3\">\r\n <h3 class=\"card-title align-items-start flex-column\">\r\n <span class=\"card-label mb-2\">Infra Tickets v2</span>\r\n <span *ngIf=\"headerFilter?.date?.startDate === headerFilter?.date?.endDate\" class=\"text-sub mb-2\">An overview of all the tickets for till {{ headerFilter?.date?.endDate | customDateFormat }}</span>\r\n <span *ngIf=\"headerFilter?.date?.startDate !== headerFilter?.date?.endDate\" class=\"text-sub mb-2\">An overview of all the tickets for {{ headerFilter?.date?.startDate | customDateFormat }} - {{ headerFilter?.date?.endDate | customDateFormat }}</span>\r\n </h3>\r\n <!-- Filter and Export render inert: lib-filters needs real facets, and\r\n there is nothing to export while the data is mocked. -->\r\n <div class=\"card-toolbar\">\r\n <button type=\"button\" class=\"btn btn-default mx-2 btn-outline btn-outline-default rounded-3 text-nowrap border-val\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M2.5 5H17.5M5 10H15M8.33333 15H11.6667\" stroke=\"#101828\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n <span class=\"ms-2\">Filter</span>\r\n </button>\r\n <button type=\"button\" class=\"btn btn-default mx-2 btn-outline btn-outline-default rounded-3 text-nowrap border-val\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M17.5 12.5V15.8333C17.5 16.2754 17.3244 16.6993 17.0118 17.0118C16.6993 17.3244 16.2754 17.5 15.8333 17.5H4.16667C3.72464 17.5 3.30072 17.3244 2.98816 17.0118C2.67559 16.6993 2.5 16.2754 2.5 15.8333V12.5M14.1667 6.66667L10 2.5M10 2.5L5.83333 6.66667M10 2.5V12.5\"\r\n stroke=\"#101828\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n <span class=\"ms-2\">Export</span>\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <div class=\"card-body\">\r\n <!-- Shimmer while either call is in flight. The styles are the shell's\r\n (styles.scss `.loader`), so the .loader > .shimmer > .wrapper > .stroke\r\n nesting has to stay as it is here. -->\r\n <div *ngIf=\"loading\" class=\"row loader d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <ng-container *ngIf=\"!loading\">\r\n <div class=\"d-flex justify-content-between gap-3 mb-7\">\r\n <div *ngFor=\"let issue of ticketCard\" class=\"issuecard\">\r\n <div><span class=\"title\">{{ issue.count }}</span></div>\r\n <span class=\"label fw-semibold\">{{ issue.name }}</span>\r\n </div>\r\n </div>\r\n\r\n <div class=\"maincard-content\">\r\n <div class=\"row p-10\">\r\n\r\n <!-- Left: unchanged from the Tickets tab. -->\r\n <div class=\"col-sm-6 cursor-pointer\">\r\n <div *ngFor=\"let data of ticketList; let index = index\" class=\"issuecard w-100 mb-4\"\r\n (click)=\"showTicket(index)\" [ngClass]=\"selectCard === index ? 'active' : ''\">\r\n\r\n <div class=\"maincard-label fw-bold d-flex justify-content-between mb-5\">\r\n <span><img src=\"./assets/tango/Images/ticket.svg\"> {{ data.ticketId }}</span>\r\n <div class=\"contenttext d-flex justify-content-center align-items-center text-center fw-semibold px-3\">\r\n <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\"\r\n stroke=\"#667085\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n <span class=\"mx-1\">{{ data.createdAt | date: 'dd-MM-yyyy' }}</span>\r\n <span *ngIf=\"data.issueClosedDate\" class=\"contenttext fw-semibold pe-3\">- {{ data.issueClosedDate | date: 'dd-MM-yyyy' }}</span>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"cardMessage(data)\" class=\"mb-5 contenttext fw-semibold\">{{ cardMessage(data) }}</div>\r\n <div *ngIf=\"!cardMessage(data)\" class=\"mb-5 contenttext fw-semibold\">\r\n Store is currently encountering a <span class=\"fw-bold-700\">{{ data.primaryIssue }}</span> which is\r\n <span class=\"fw-bold-700\">{{ data.secondaryIssue }}.</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 src=\"./assets/tango/Images/userProfile.svg\" alt=\"\">\r\n </div>\r\n <div class=\"d-flex justify-content-between\">\r\n <span class=\"contenttext fw-semibold px-3\">\r\n <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\"\r\n stroke=\"#667085\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg><span class=\"mx-1\">{{ data.comments }}</span> comments\r\n </span>\r\n <span [ngClass]=\"statusBadge(data.status)\">{{ data.status | titlecase }}</span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Right: the selected parent, with its cycle children as an accordion -->\r\n <!-- Only this column reloads when a card is clicked, so it\r\n shimmers on its own rather than blanking the whole tab. -->\r\n <div *ngIf=\"detailLoading\" class=\"col-sm-6\">\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>\r\n </div>\r\n\r\n <div *ngIf=\"!detailLoading && ticketInfo\" class=\"col-sm-6\">\r\n <div class=\"maincard-label fw-bold d-flex justify-content-between align-items-center mb-5\">\r\n <span><img src=\"./assets/tango/Images/ticket.svg\"><span class=\"mx-2\">{{ ticketInfo.ticketId }}</span></span>\r\n </div>\r\n\r\n <!-- Cycle children. Rows open independently. -->\r\n <div *ngFor=\"let child of ticketInfo.children\" class=\"child-row mb-4\">\r\n <div class=\"child-head d-flex justify-content-between align-items-center cursor-pointer px-4 py-3\" (click)=\"toggleChild(child)\">\r\n <div class=\"d-flex align-items-center flex-wrap\">\r\n <span class=\"chevron me-3\" [class.open]=\"child.expanded\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\">\r\n <path d=\"M5 2.5L9.5 7L5 11.5\" stroke=\"#101828\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <span class=\"meta-pill cycle-id timingtext fw-semibold me-3\">{{ child.cycleId }}</span>\r\n <span class=\"streams-pill timingtext me-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"14\" height=\"14\" viewBox=\"0 0 24 20\" fill=\"none\">\r\n <path d=\"M23 17C23 17.5304 22.7893 18.0391 22.4142 18.4142C22.0391 18.7893 21.5304 19 21 19H3C2.46957 19 1.96086 18.7893 1.58579 18.4142C1.21071 18.0391 1 17.5304 1 17V6C1 5.46957 1.21071 4.96086 1.58579 4.58579C1.96086 4.21071 2.46957 4 3 4H7L9 1H15L17 4H21C21.5304 4 22.0391 4.21071 22.4142 4.58579C22.7893 4.96086 23 5.46957 23 6V17Z\"\r\n stroke=\"#F04438\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n <span class=\"fw-bold mx-1\">{{ child.streamsDown }}</span> streams down\r\n </span>\r\n </div>\r\n <span [ngClass]=\"statusBadge(child.status)\" class=\"flex-shrink-0\">{{ child.status | titlecase }}</span>\r\n </div>\r\n\r\n <div *ngIf=\"child.expanded\" class=\"child-body px-5 py-5\">\r\n <div class=\"inner-card px-5 py-5\">\r\n <div *ngFor=\"let entry of child.entries; let last = last; let first = first\" class=\"d-flex\" [class.pt-5]=\"!first\">\r\n <div class=\"d-flex flex-column align-items-center me-4\">\r\n <span class=\"avatar\">\r\n <img *ngIf=\"isTangoAuthor(entry.author); else personIcon\" class=\"avatar-logo\" src=\"./assets/tango/Images/tangoEye-mark.svg\" alt=\"Tango\">\r\n <ng-template #personIcon>\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"14\" height=\"14\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path d=\"M13.3327 14V12.6667C13.3327 11.9594 13.0517 11.2811 12.5516 10.781C12.0515 10.281 11.3733 10 10.666 10H5.33268C4.62544 10 3.94716 10.281 3.44706 10.781C2.94697 11.2811 2.66602 11.9594 2.66602 12.6667V14M10.666 4.66667C10.666 6.13943 9.47211 7.33333 7.99935 7.33333C6.52659 7.33333 5.33268 6.13943 5.33268 4.66667C5.33268 3.19391 6.52659 2 7.99935 2C9.47211 2 10.666 3.19391 10.666 4.66667Z\"\r\n stroke=\"#009BF3\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </ng-template>\r\n </span>\r\n <div *ngIf=\"!last\" class=\"connector\"></div>\r\n </div>\r\n\r\n <div class=\"w-100 pb-2\">\r\n <div class=\"d-flex align-items-center flex-wrap\">\r\n <span class=\"maincard-label fw-bold\">{{ entry.author }}</span>\r\n <span *ngIf=\"entry.at\" class=\"timingtext mx-3\">{{ entry.at }}</span>\r\n <!-- The agent's verdict, whatever it is - not only escalated.\r\n Absent when the agent never reported. -->\r\n <span *ngIf=\"entry.agentStatus\" [ngClass]=\"agentPillClass(entry)\"\r\n class=\"timingtext fw-semibold ms-auto text-uppercase\"><span class=\"dot me-2\"\r\n [class.dot-amber]=\"entry.escalated\"\r\n [class.dot-grey]=\"!entry.escalated\"></span>{{ agentLabel(entry) }}</span>\r\n </div>\r\n\r\n <div *ngIf=\"entry.text\" class=\"contenttext fw-semibold mt-2\">{{ entry.text }}</div>\r\n\r\n <!-- Analysis entry: label/value pairs, then the expander -->\r\n <ng-container *ngIf=\"entry.kind === 'analysis'\">\r\n <div class=\"d-flex mt-3\">\r\n <span class=\"meta-label timingtext fw-semibold\">ISSUE CATEGORY</span>\r\n <span class=\"meta-value contenttext fw-semibold\">{{ entry.issueCategory }}</span>\r\n </div>\r\n <div class=\"d-flex mt-2\">\r\n <span class=\"meta-label timingtext fw-semibold\">ROOT CAUSE</span>\r\n <span class=\"meta-value contenttext fw-semibold\">{{ entry.rootCause }}</span>\r\n </div>\r\n <div class=\"analysis-link contenttext fw-semibold cursor-pointer mt-4\" (click)=\"toggleAnalysis(entry)\">\r\n <span class=\"chevron-down me-2\" [class.open]=\"entry.showAnalysis\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\" viewBox=\"0 0 14 14\" fill=\"none\">\r\n <path d=\"M3 5L7 9.5L11 5\" stroke=\"#009BF3\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n {{ entry.showAnalysis ? 'Hide the full analysis' : 'Show the full analysis' }}\r\n </div>\r\n <div *ngIf=\"entry.showAnalysis && entry.analysis\" class=\"mt-3\">\r\n <div class=\"analysis-row d-flex mb-4\">\r\n <span class=\"dot analysis-dot me-3\"></span>\r\n <div class=\"timingtext fw-semibold\">\r\n <span class=\"analysis-label timingtext fw-semibold me-3\">CAUSE</span>{{ entry.analysis.cause }}\r\n </div>\r\n </div>\r\n <div class=\"analysis-row d-flex mb-4\">\r\n <span class=\"dot analysis-dot me-3\"></span>\r\n <div class=\"timingtext fw-semibold\">\r\n <span class=\"analysis-label timingtext fw-semibold me-3\">PROOF</span>{{ entry.analysis.proof }}\r\n </div>\r\n </div>\r\n <div class=\"analysis-row d-flex mb-4\">\r\n <span class=\"dot analysis-dot me-3\"></span>\r\n <div class=\"timingtext fw-semibold\">\r\n <span class=\"analysis-label timingtext fw-semibold me-3\">FIX</span>{{ entry.analysis.fix }}\r\n </div>\r\n </div>\r\n <div class=\"analysis-row d-flex\">\r\n <span class=\"dot analysis-dot me-3\"></span>\r\n <div class=\"timingtext fw-semibold\">\r\n <span class=\"analysis-label timingtext fw-semibold me-3\">NOTES</span>{{ entry.analysis.notes }}\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n </div>\r\n </div>\r\n\r\n <!-- Issue identification, inside the child panel. Icons are copied\r\n from the V1 tab so the two tabs render identically. Only the\r\n live cycle carries it - a closed one has nothing to answer -\r\n so it still appears at most once per parent. -->\r\n <div *ngIf=\"showIssuePicker && isIdentifyChild(child)\" class=\"investigation fw-semibold mt-5\">\r\n Kindly choose the option below that corresponds to the issue you are\r\n experiencing in the store.\r\n <ul class=\"list-unstyled px-4\">\r\n <li class=\"py-4 cursor-pointer\" (click)=\"choosenIssue('Internet Issues')\">\r\n <ng-container *ngTemplateOutlet=\"internetIcon\"></ng-container> <span class=\"px-3\">Internet Issues</span>\r\n </li>\r\n <li class=\"py-4 cursor-pointer\" (click)=\"choosenIssue('Camera Issues')\">\r\n <ng-container *ngTemplateOutlet=\"cameraIcon\"></ng-container> <span class=\"px-3\">Camera Issues</span>\r\n </li>\r\n <li class=\"py-4 cursor-pointer\" (click)=\"choosenIssue('System Issues')\">\r\n <ng-container *ngTemplateOutlet=\"systemIcon\"></ng-container> <span class=\"px-3\">System Issues</span>\r\n </li>\r\n <li class=\"py-4 cursor-pointer\" (click)=\"choosenIssue('Store Operation Issues')\">\r\n <ng-container *ngTemplateOutlet=\"storeIcon\"></ng-container> <span class=\"px-3\">Store Operation Issues</span>\r\n </li>\r\n <li class=\"py-4 cursor-pointer\" (click)=\"choosenIssue('Application Issues')\">\r\n <ng-container *ngTemplateOutlet=\"appIcon\"></ng-container> <span class=\"px-3\">Application Issues</span>\r\n </li>\r\n </ul>\r\n </div>\r\n\r\n <div *ngIf=\"showIssueDetail && isIdentifyChild(child)\" class=\"mt-5\">\r\n <div class=\"openedissue d-flex justify-content-between align-items-center\">\r\n <span class=\"profile-label fw-semibold\">\r\n <ng-container *ngIf=\"selectedIssue === 'Internet Issues'\" [ngTemplateOutlet]=\"internetIcon\"></ng-container>\r\n <ng-container *ngIf=\"selectedIssue === 'Camera Issues'\" [ngTemplateOutlet]=\"cameraIcon\"></ng-container>\r\n <ng-container *ngIf=\"selectedIssue === 'System Issues'\" [ngTemplateOutlet]=\"systemIcon\"></ng-container>\r\n <ng-container *ngIf=\"selectedIssue === 'Store Operation Issues'\" [ngTemplateOutlet]=\"storeIcon\"></ng-container>\r\n <ng-container *ngIf=\"selectedIssue === 'Application Issues'\" [ngTemplateOutlet]=\"appIcon\"></ng-container>\r\n <span class=\"ms-2\">{{ selectedIssue }}</span>\r\n </span>\r\n <div (click)=\"choosenIssue('')\" class=\"maincard-content bg-white px-3 py-2 cursor-pointer\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\">\r\n <path d=\"M12.8327 6.99935H1.16602M1.16602 6.99935L6.99935 12.8327M1.16602 6.99935L6.99935 1.16602\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </div>\r\n </div>\r\n\r\n <div class=\"maincard-content w-100 mt-2 px-4 py-2 pb-4\">\r\n <div class=\"maincard-label fw-semibold py-2\">Please select the relevant problem facing from the following</div>\r\n <div *ngFor=\"let issue of secondaryIssues; let index = index\"\r\n class=\"maincard-content d-flex justify-content-between align-items-center w-100 mt-2 px-4 py-4 cursor-pointer\"\r\n (click)=\"toggleCheckbox(index)\">\r\n <div class=\"d-flex justify-content-between align-items-center\">\r\n <span><img class=\"pe-3\" src=\"./assets/tango/Images/Featured icon.png\"></span>\r\n <span class=\"headingtext\">{{ issue.name }}</span>\r\n </div>\r\n <div class=\"roundedcheck d-flex align-items-center\">\r\n <input type=\"checkbox\" [checked]=\"issue.checked\" class=\"p-0\">\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Hibernation + comment row, copied from the V1 tab\r\n (ticket-infra.component.html:333) so both read the same. -->\r\n <div class=\"form-group pt-6\">\r\n <label for=\"hibernationV2\" class=\"maincard-label fw-semibold mb-2\">Hibernation (in days) *</label>\r\n <div class=\"w-250px position-relative\">\r\n <div class=\"position-absolute translate-middle-y top-50 me-5 ps-3 ticketDays\">\r\n <span class=\"svg-icon toggle-off svg-icon-1\" [ngClass]=\"hibernationDays === 0 ? 'pe-none' : ''\" (click)=\"decreaseHibernation()\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"21\" height=\"20\" viewBox=\"0 0 21 20\" fill=\"none\">\r\n <path d=\"M4.66602 10H16.3327\" stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n <input type=\"text\" class=\"form-control\" id=\"hibernationV2\" style=\"text-align: center;\"\r\n [value]=\"hibernationDays\" placeholder=\"0\" readonly />\r\n <div class=\"position-absolute translate-middle-y top-50 end-0 me-3\">\r\n <span class=\"svg-icon toggle-on svg-icon-1 ticketDays\" (click)=\"increaseHibernation()\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"21\" height=\"20\" viewBox=\"0 0 21 20\" fill=\"none\">\r\n <path d=\"M10.4993 4.1665V15.8332M4.66602 9.99984H16.3327\" stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- The paperclip is inert: V1 posts to uploadAttachments/, and there\r\n is nowhere to upload to while the data is mocked. -->\r\n <div class=\"d-flex justify-content-between align-items-center mt-10 mb-5\">\r\n <input class=\"form-control\" type=\"text\" [(ngModel)]=\"comments\" placeholder=\"Add your comments..\">\r\n <button type=\"button\" class=\"cursor-pointer btn btn-default btn-outline 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 d=\"M17.8666 9.20835L10.2082 16.8667C9.27005 17.8049 7.99757 18.332 6.67075 18.332C5.34393 18.332 4.07145 17.8049 3.13325 16.8667C2.19505 15.9285 1.66797 14.656 1.66797 13.3292C1.66797 12.0024 2.19505 10.7299 3.13325 9.79168L10.7916 2.13335C11.4171 1.50788 12.2654 1.15649 13.1499 1.15649C14.0345 1.15649 14.8828 1.50788 15.5082 2.13335C16.1337 2.75882 16.4851 3.60713 16.4851 4.49168C16.4851 5.37623 16.1337 6.22455 15.5082 6.85002L7.84158 14.5083C7.52885 14.8211 7.10469 14.9968 6.66242 14.9968C6.22014 14.9968 5.79598 14.8211 5.48325 14.5083C5.17051 14.1956 4.99482 13.7715 4.99482 13.3292C4.99482 12.8869 5.17051 12.4627 5.48325 12.15L12.5582 5.08335\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </button>\r\n <button type=\"button\" class=\"btn btn-primary ms-3\" [disabled]=\"!canSubmitIssue\" (click)=\"submitIssue()\">Submit</button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n</div>\r\n\r\n<!-- Option icons, defined once because each is used twice: in the option list\r\n and again in the chosen-issue bar. Paths are copied verbatim from\r\n ticket-infra.component.html so the two tabs match pixel for pixel. -->\r\n<ng-template #internetIcon>\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M21 12C21 7.0293 16.9707 3 12 3C7.0293 3 3 7.0293 3 12C3 16.9707 7.0293 21 12 21\" fill=\"white\" />\r\n <path d=\"M12.9 3.04504C12.9 3.04504 15.6 6.60004 15.6 12L12.9 3.04504ZM11.1 20.955C11.1 20.955 8.4 17.4 8.4 12C8.4 6.60004 11.1 3.04504 11.1 3.04504M3.567 15.15H12H3.567ZM3.567 8.85004H20.433H3.567Z\" fill=\"white\" />\r\n <path d=\"M20.8911 17.3252C21.3357 17.5988 21.3078 18.2639 20.8506 18.3161L18.5403 18.578L17.5044 20.6588C17.2992 21.0719 16.6647 20.8694 16.5594 20.3582L15.4299 14.8538C15.3408 14.4218 15.7296 14.15 16.1049 14.3813L20.8911 17.3252Z\" fill=\"white\" />\r\n <path d=\"M20.25 12C20.25 12.4142 20.5858 12.75 21 12.75C21.4142 12.75 21.75 12.4142 21.75 12H20.25ZM12 21.75C12.4142 21.75 12.75 21.4142 12.75 21C12.75 20.5858 12.4142 20.25 12 20.25V21.75ZM13.4973 2.59142C13.2467 2.26156 12.7762 2.19725 12.4464 2.44778C12.1165 2.6983 12.0522 3.1688 12.3027 3.49866L13.4973 2.59142ZM14.85 12C14.85 12.4143 15.1858 12.75 15.6 12.75C16.0142 12.75 16.35 12.4143 16.35 12H14.85ZM10.5027 21.4087C10.7533 21.7385 11.2238 21.8028 11.5536 21.5523C11.8835 21.3018 11.9478 20.8313 11.6973 20.5014L10.5027 21.4087ZM11.6973 3.49866C11.9478 3.1688 11.8835 2.6983 11.5536 2.44778C11.2238 2.19725 10.7533 2.26156 10.5027 2.59142L11.6973 3.49866ZM3.567 14.4C3.15279 14.4 2.817 14.7358 2.817 15.15C2.817 15.5643 3.15279 15.9 3.567 15.9V14.4ZM12 15.9C12.4142 15.9 12.75 15.5643 12.75 15.15C12.75 14.7358 12.4142 14.4 12 14.4V15.9ZM3.567 8.10004C3.15279 8.10004 2.817 8.43583 2.817 8.85004C2.817 9.26426 3.15279 9.60004 3.567 9.60004V8.10004ZM20.433 9.60004C20.8472 9.60004 21.183 9.26426 21.183 8.85004C21.183 8.43583 20.8472 8.10004 20.433 8.10004V9.60004ZM20.8911 17.3252L21.2842 16.6865L21.284 16.6864L20.8911 17.3252ZM20.8506 18.3161L20.9351 19.0613L20.9357 19.0613L20.8506 18.3161ZM18.5403 18.578L18.4558 17.8328L18.0506 17.8787L17.8689 18.2438L18.5403 18.578ZM17.5044 20.6588L16.833 20.3246L16.8327 20.3252L17.5044 20.6588ZM16.5594 20.3582L15.8247 20.509L15.8248 20.5095L16.5594 20.3582ZM15.4299 14.8538L16.1646 14.703L16.1644 14.7023L15.4299 14.8538ZM16.1049 14.3813L15.7114 15.0198L15.712 15.0201L16.1049 14.3813ZM21.75 12C21.75 6.61509 17.3849 2.25 12 2.25V3.75C16.5565 3.75 20.25 7.44351 20.25 12H21.75ZM12 2.25C6.61509 2.25 2.25 6.61509 2.25 12H3.75C3.75 7.44351 7.44351 3.75 12 3.75V2.25ZM2.25 12C2.25 17.3849 6.61509 21.75 12 21.75V20.25C7.44351 20.25 3.75 16.5565 3.75 12H2.25ZM12.9 3.04504C12.3027 3.49866 12.3026 3.49846 12.3024 3.49828C12.3024 3.49823 12.3023 3.49806 12.3022 3.49797C12.3021 3.49779 12.302 3.49767 12.3019 3.4976C12.3018 3.49746 12.3019 3.49753 12.3021 3.49781C12.3025 3.49838 12.3036 3.4998 12.3053 3.50206C12.3086 3.50658 12.3144 3.51447 12.3225 3.52567C12.3387 3.54809 12.3641 3.58375 12.3973 3.63226C12.4638 3.72929 12.5616 3.87752 12.6805 4.07361C12.9183 4.46606 13.2393 5.04863 13.5614 5.79478C14.2061 7.28837 14.85 9.42526 14.85 12H16.35C16.35 9.17483 15.6439 6.83422 14.9386 5.20031C14.5857 4.38271 14.2317 3.73902 13.9633 3.29616C13.829 3.0746 13.7159 2.90291 13.6347 2.78443C13.5941 2.72518 13.5615 2.6792 13.5381 2.6469C13.5265 2.63075 13.5171 2.61802 13.5102 2.60876C13.5068 2.60413 13.504 2.60036 13.5018 2.59747C13.5007 2.59602 13.4998 2.5948 13.4991 2.59379C13.4987 2.59329 13.4983 2.59284 13.498 2.59244C13.4979 2.59224 13.4977 2.59199 13.4976 2.59189C13.4974 2.59165 13.4973 2.59142 12.9 3.04504ZM11.1 20.955C11.6973 20.5014 11.6974 20.5016 11.6976 20.5018C11.6976 20.5019 11.6977 20.502 11.6978 20.5021C11.6979 20.5023 11.698 20.5024 11.6981 20.5025C11.6982 20.5026 11.6981 20.5026 11.6979 20.5023C11.6975 20.5017 11.6964 20.5003 11.6948 20.498C11.6914 20.4935 11.6856 20.4856 11.6775 20.4744C11.6613 20.452 11.6359 20.4163 11.6027 20.3678C11.5362 20.2708 11.4384 20.1226 11.3195 19.9265C11.0817 19.534 10.7607 18.9515 10.4386 18.2053C9.79388 16.7117 9.15 14.5748 9.15 12H7.65C7.65 14.8253 8.35613 17.1659 9.06142 18.7998C9.41434 19.6174 9.76833 20.2611 10.0367 20.7039C10.171 20.9255 10.2841 21.0972 10.3653 21.2157C10.4059 21.2749 10.4385 21.3209 10.4619 21.3532C10.4735 21.3693 10.4829 21.3821 10.4898 21.3913C10.4932 21.396 10.496 21.3997 10.4982 21.4026C10.4993 21.4041 10.5002 21.4053 10.5009 21.4063C10.5013 21.4068 10.5017 21.4073 10.502 21.4076C10.5021 21.4078 10.5023 21.4081 10.5024 21.4082C10.5026 21.4084 10.5027 21.4087 11.1 20.955ZM9.15 12C9.15 9.42526 9.79388 7.28837 10.4386 5.79478C10.7607 5.04863 11.0817 4.46606 11.3195 4.07361C11.4384 3.87752 11.5362 3.72929 11.6027 3.63226C11.6359 3.58375 11.6613 3.54809 11.6775 3.52567C11.6856 3.51447 11.6914 3.50658 11.6948 3.50206C11.6964 3.4998 11.6975 3.49838 11.6979 3.49781C11.6981 3.49753 11.6982 3.49746 11.6981 3.4976C11.698 3.49767 11.6979 3.49779 11.6978 3.49797C11.6977 3.49806 11.6976 3.49823 11.6976 3.49828C11.6974 3.49846 11.6973 3.49866 11.1 3.04504C10.5027 2.59142 10.5026 2.59165 10.5024 2.59189C10.5023 2.59199 10.5021 2.59224 10.502 2.59244C10.5017 2.59284 10.5013 2.59329 10.5009 2.59379C10.5002 2.5948 10.4993 2.59602 10.4982 2.59747C10.496 2.60036 10.4932 2.60413 10.4898 2.60876C10.4829 2.61802 10.4735 2.63075 10.4619 2.6469C10.4385 2.6792 10.4059 2.72518 10.3653 2.78443C10.2841 2.90291 10.171 3.0746 10.0367 3.29616C9.76833 3.73902 9.41434 4.38271 9.06142 5.20031C8.35613 6.83422 7.65 9.17483 7.65 12H9.15ZM3.567 15.9H12V14.4H3.567V15.9ZM3.567 9.60004H20.433V8.10004H3.567V9.60004ZM20.498 17.9639C20.4792 17.9524 20.4575 17.9252 20.4597 17.8727C20.4609 17.8434 20.4715 17.7772 20.5297 17.7054C20.5961 17.6235 20.6889 17.5797 20.7655 17.5709L20.9357 19.0613C21.6167 18.9835 21.9384 18.4179 21.9584 17.9346C21.9776 17.4682 21.7476 16.9717 21.2842 16.6865L20.498 17.9639ZM20.7661 17.5709L18.4558 17.8328L18.6248 19.3232L20.9351 19.0613L20.7661 17.5709ZM17.8689 18.2438L16.833 20.3246L18.1758 20.9931L19.2117 18.9123L17.8689 18.2438ZM16.8327 20.3252C16.8668 20.2565 16.9395 20.1839 17.0398 20.1492C17.1277 20.1188 17.194 20.1316 17.2221 20.1405C17.272 20.1564 17.2896 20.1857 17.294 20.2069L15.8248 20.5095C15.9345 21.0419 16.322 21.4281 16.7668 21.5697C17.2286 21.7168 17.8707 21.6073 18.1761 20.9925L16.8327 20.3252ZM17.2941 20.2074L16.1646 14.703L14.6952 15.0046L15.8247 20.509L17.2941 20.2074ZM16.1644 14.7023C16.1723 14.7406 16.1666 14.883 16.0232 14.9833C15.88 15.0835 15.7446 15.0402 15.7114 15.0198L16.4984 13.7428C16.0899 13.4911 15.5724 13.468 15.1633 13.7543C14.754 14.0407 14.5984 14.535 14.6954 15.0053L16.1644 14.7023ZM15.712 15.0201L20.4982 17.964L21.284 16.6864L16.4978 13.7425L15.712 15.0201Z\" fill=\"#475467\" />\r\n </svg>\r\n</ng-template>\r\n\r\n<ng-template #cameraIcon>\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"20\" viewBox=\"0 0 24 20\" fill=\"none\">\r\n <path d=\"M23 17C23 17.5304 22.7893 18.0391 22.4142 18.4142C22.0391 18.7893 21.5304 19 21 19H3C2.46957 19 1.96086 18.7893 1.58579 18.4142C1.21071 18.0391 1 17.5304 1 17V6C1 5.46957 1.21071 4.96086 1.58579 4.58579C1.96086 4.21071 2.46957 4 3 4H7L9 1H15L17 4H21C21.5304 4 22.0391 4.21071 22.4142 4.58579C22.7893 4.96086 23 5.46957 23 6V17Z\"\r\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n <path d=\"M12 15C14.2091 15 16 13.2091 16 11C16 8.79086 14.2091 7 12 7C9.79086 7 8 8.79086 8 11C8 13.2091 9.79086 15 12 15Z\"\r\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n</ng-template>\r\n\r\n<ng-template #systemIcon>\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"14\" viewBox=\"0 0 20 14\" fill=\"none\">\r\n <path d=\"M12 2V9H2V2H12ZM2 0C0.896875 0 0 0.896875 0 2V9C0 10.1031 0.896875 11 2 11H5.66563L5.33125 12H3C2.44688 12 2 12.4469 2 13C2 13.5531 2.44688 14 3 14H11C11.5531 14 12 13.5531 12 13C12 12.4469 11.5531 12 11 12H8.66562L8.33125 11H12C13.1031 11 14 10.1031 14 9V2C14 0.896875 13.1031 0 12 0H2ZM16.5 0C15.6719 0 15 0.671875 15 1.5V12.5C15 13.3281 15.6719 14 16.5 14H18.5C19.3281 14 20 13.3281 20 12.5V1.5C20 0.671875 19.3281 0 18.5 0H16.5ZM17 2H18C18.275 2 18.5 2.225 18.5 2.5C18.5 2.775 18.275 3 18 3H17C16.725 3 16.5 2.775 16.5 2.5C16.5 2.225 16.725 2 17 2ZM16.5 4.5C16.5 4.225 16.725 4 17 4H18C18.275 4 18.5 4.225 18.5 4.5C18.5 4.775 18.275 5 18 5H17C16.725 5 16.5 4.775 16.5 4.5ZM17.5 9.5C17.7652 9.5 18.0196 9.60536 18.2071 9.79289C18.3946 9.98043 18.5 10.2348 18.5 10.5C18.5 10.7652 18.3946 11.0196 18.2071 11.2071C18.0196 11.3946 17.7652 11.5 17.5 11.5C17.2348 11.5 16.9804 11.3946 16.7929 11.2071C16.6054 11.0196 16.5 10.7652 16.5 10.5C16.5 10.2348 16.6054 9.98043 16.7929 9.79289C16.9804 9.60536 17.2348 9.5 17.5 9.5Z\"\r\n fill=\"#475467\" />\r\n </svg>\r\n</ng-template>\r\n\r\n<ng-template #storeIcon>\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M3.08995 6.88369L3.02401 6.98669C2.30358 8.25557 3.06101 9.87945 4.46464 10.0662C4.58627 10.0811 4.70112 10.0892 4.8145 10.0892C5.55255 10.0892 6.20523 9.77229 6.65953 9.27917L7.21286 8.67854L7.76432 9.28089C8.21367 9.77171 8.8652 10.0892 9.60776 10.0892C10.3471 10.0892 11.0022 9.77137 11.4512 9.28089L12.0044 8.67665L12.5576 9.28089C13.0066 9.77137 13.6617 10.0892 14.401 10.0892C15.1404 10.0892 15.7954 9.77137 16.2445 9.28089L16.7977 8.67665L17.3508 9.28089C17.7999 9.77137 18.4549 10.0892 19.1943 10.0892C19.3041 10.0892 19.4223 10.0811 19.5433 10.0663C20.9772 9.87168 21.7355 8.16387 20.9155 6.88419C20.9154 6.88413 20.9154 6.88407 20.9154 6.88402L18.8056 3.59429L18.8056 3.59429L18.8046 3.59282C18.7582 3.52002 18.6649 3.46423 18.5584 3.46423H5.44307C5.3365 3.46423 5.24326 3.52002 5.19681 3.59282L5.19619 3.59379L3.08995 6.88369ZM4.81818 12.7499C4.71644 12.7499 4.616 12.7468 4.5169 12.741V16.6428V18.9642C4.5169 19.8211 5.22663 20.5357 6.11942 20.5357H17.882C18.7748 20.5357 19.4845 19.8211 19.4845 18.9642V16.6428V12.7415C19.3874 12.747 19.2893 12.7499 19.1906 12.7499C19.0022 12.7499 18.8157 12.7398 18.632 12.7202V16.6428V17.3928H17.882H6.11942H5.36942V16.6428V12.721C5.18866 12.74 5.00472 12.7499 4.81818 12.7499Z\"\r\n stroke=\"#475467\" stroke-width=\"1.5\" />\r\n </svg>\r\n</ng-template>\r\n\r\n<ng-template #appIcon>\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M8 1H1V8H8V1Z\" stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n <path d=\"M19 1H12V8H19V1Z\" stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n <path d=\"M19 12H12V19H19V12Z\" stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n <path d=\"M8 12H1V19H8V12Z\" stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n</ng-template>\r\n", styles: [".card-label{font-size:18px!important}.issuecard{flex:1 1 0;min-width:0;border-radius:10px;border:1px solid var(--Gray-200, #EAECF0);padding:16px}.issuecard label,.issuecard .label{color:var(--Black, #101828);font-size:14px;line-height:20px}.issuecard.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;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}.profile-label{font-size:12px;color:var(--Gray-500, #344054);line-height:16px}.timingtext{color:var(--Gray-500, #667085);font-size:12px;line-height:18px}.fw-bold-700{font-weight:700!important}.child-row{border-radius:10px;border:1px solid var(--Gray-200, #EAECF0);overflow:hidden}.child-head{background:#fff;gap:8px}.chevron{display:inline-flex;transition:transform .15s ease-in-out}.chevron.open{transform:rotate(90deg)}.chevron-down{display:inline-flex;transition:transform .15s ease-in-out}.chevron-down.open{transform:rotate(180deg)}.streams-pill{display:inline-flex;align-items:center;border-radius:16px;border:1px solid var(--Gray-200, #EAECF0);padding:2px 10px;white-space:nowrap}.meta-pill{display:inline-flex;align-items:center;white-space:nowrap}.cycle-id{color:var(--Black, #101828)}.dot{display:inline-block;width:6px;height:6px;border-radius:50%}.dot-amber{background:#f79009}.dot-grey{background:var(--Gray-500, #667085)}.child-body{background:var(--Gray-50, #F9FAFB)}.inner-card{border-radius:10px;border:1px solid var(--Gray-200, #EAECF0);background:#fff}.escalated-pill,.status-pill{display:inline-flex;align-items:center;border-radius:16px;font-size:10px;line-height:16px;padding:0 8px}.escalated-pill .dot,.status-pill .dot{width:5px;height:5px}.escalated-pill{background:#fffaeb;color:#b54708}.status-pill{background:var(--Gray-100, #F2F4F7);color:var(--Gray-700, #344054)}.avatar{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:50%;background:var(--Primary-25, #F6FCFF);flex-shrink:0;overflow:hidden}.avatar-logo{width:18px;height:18px;object-fit:contain}.connector{width:0;height:100%;margin-top:6px;border-left:1px solid var(--Gray-200, #EAECF0)}.meta-label{width:130px;flex-shrink:0}.meta-value{color:var(--Gray-900, #101828)}.analysis-link{color:var(--Primary-700, #009BF3)}.ticketDays{cursor:pointer}.analysis-row .analysis-dot{margin-top:7px;flex-shrink:0;background:var(--Gray-400, #98A2B3)}.analysis-row .analysis-label{letter-spacing:.04em;color:var(--Black, #101828);background:var(--Gray-100, #F2F4F7);border-radius:4px;padding:1px 6px;white-space:nowrap}.investigation{color:var(--Gray-500, #344054);font-size:15px;line-height:24px}.openedissue{border-radius:6px;background:var(--Gray-50, #F9FAFB);padding:8px 12px}.headingtext{color:var(--Gray-700, #344054)!important;font-size:15px!important;font-weight:500;line-height:20px}.roundedcheck input[type=checkbox]{width:16px!important;height:16px!important;border-radius:10px!important;-webkit-appearance:none;-moz-appearance:none;-o-appearance:none;appearance:none;border:1px solid var(--Gray-300, #D0D5DD);background:#fff;cursor:pointer}.roundedcheck input[type=checkbox]:checked{border-color:var(--Primary-700, #009BF3);background:var(--Primary-700, #009BF3);background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Cpath fill='none' stroke='%23fff' stroke-width='2' stroke-linecap='round' stroke-linejoin='round' d='M2.5 6.3l2.4 2.4 4.6-5'/%3E%3C/svg%3E\");background-repeat:no-repeat;background-position:center}\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: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { 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: "pipe", type: i4.TitleCasePipe, name: "titlecase" }, { kind: "pipe", type: i4.DatePipe, name: "date" }, { kind: "pipe", type: i6.CustomDateFormatPipe, name: "customDateFormat" }] });
349
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TicketInfraV2Component, deps: [{ token: i1.GlobalStateService }, { token: i2.TicketsService }, { token: i3.ActivatedRoute }, { token: i4.NgbModal }, { token: i5.ToastService }], target: i0.ɵɵFactoryTarget.Component });
350
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: TicketInfraV2Component, selector: "lib-ticket-infra-v2", inputs: { selectedTab: "selectedTab" }, viewQueries: [{ propertyName: "streamsModal", first: true, predicate: ["streamsModal"], descendants: true }], ngImport: i0, template: "<div class=\"card\">\r\n <div class=\"card-header border-0 pt-3\">\r\n <h3 class=\"card-title align-items-start flex-column\">\r\n <span class=\"card-label mb-2\">Infra Tickets v2</span>\r\n <span *ngIf=\"headerFilter?.date?.startDate === headerFilter?.date?.endDate\" class=\"text-sub mb-2\">An overview of all the tickets for till {{ headerFilter?.date?.endDate | customDateFormat }}</span>\r\n <span *ngIf=\"headerFilter?.date?.startDate !== headerFilter?.date?.endDate\" class=\"text-sub mb-2\">An overview of all the tickets for {{ headerFilter?.date?.startDate | customDateFormat }} - {{ headerFilter?.date?.endDate | customDateFormat }}</span>\r\n </h3>\r\n <!-- Filter and Export render inert: lib-filters needs real facets, and\r\n there is nothing to export while the data is mocked. -->\r\n <div class=\"card-toolbar\">\r\n <button type=\"button\" class=\"btn btn-default mx-2 btn-outline btn-outline-default rounded-3 text-nowrap border-val\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M2.5 5H17.5M5 10H15M8.33333 15H11.6667\" stroke=\"#101828\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n <span class=\"ms-2\">Filter</span>\r\n </button>\r\n <button type=\"button\" class=\"btn btn-default mx-2 btn-outline btn-outline-default rounded-3 text-nowrap border-val\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M17.5 12.5V15.8333C17.5 16.2754 17.3244 16.6993 17.0118 17.0118C16.6993 17.3244 16.2754 17.5 15.8333 17.5H4.16667C3.72464 17.5 3.30072 17.3244 2.98816 17.0118C2.67559 16.6993 2.5 16.2754 2.5 15.8333V12.5M14.1667 6.66667L10 2.5M10 2.5L5.83333 6.66667M10 2.5V12.5\"\r\n stroke=\"#101828\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n <span class=\"ms-2\">Export</span>\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <div class=\"card-body\">\r\n <!-- Shimmer while either call is in flight. The styles are the shell's\r\n (styles.scss `.loader`), so the .loader > .shimmer > .wrapper > .stroke\r\n nesting has to stay as it is here. -->\r\n <div *ngIf=\"loading\" class=\"row loader d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <ng-container *ngIf=\"!loading\">\r\n <div class=\"d-flex justify-content-between gap-3 mb-7\">\r\n <div *ngFor=\"let issue of ticketCard\" class=\"issuecard\">\r\n <div><span class=\"title\">{{ issue.count }}</span></div>\r\n <span class=\"label fw-semibold\">{{ issue.name }}</span>\r\n </div>\r\n </div>\r\n\r\n <div class=\"maincard-content\">\r\n <div class=\"row p-10\">\r\n\r\n <!-- Left: unchanged from the Tickets tab. -->\r\n <div class=\"col-sm-6\">\r\n <div *ngFor=\"let data of ticketList; let index = index\" class=\"issuecard w-100 mb-4 cursor-pointer\"\r\n (click)=\"showTicket(index)\" [ngClass]=\"selectCard === index ? 'active' : ''\">\r\n\r\n <div class=\"maincard-label fw-bold d-flex justify-content-between mb-5\">\r\n <span><img src=\"./assets/tango/Images/ticket.svg\"> {{ data.ticketId }}</span>\r\n <div class=\"contenttext d-flex justify-content-center align-items-center text-center fw-semibold px-3\">\r\n <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\"\r\n stroke=\"#667085\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n <span class=\"mx-1\">{{ data.createdAt | date: 'dd-MM-yyyy' }}</span>\r\n <span *ngIf=\"data.issueClosedDate\" class=\"contenttext fw-semibold pe-3\">- {{ data.issueClosedDate | date: 'dd-MM-yyyy' }}</span>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"cardMessage(data)\" class=\"mb-5 contenttext fw-semibold\">{{ cardMessage(data) }}</div>\r\n <div *ngIf=\"!cardMessage(data)\" class=\"mb-5 contenttext fw-semibold\">\r\n Store is currently encountering a <span class=\"fw-bold-700\">{{ data.primaryIssue }}</span> which is\r\n <span class=\"fw-bold-700\">{{ data.secondaryIssue }}.</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 src=\"./assets/tango/Images/userProfile.svg\" alt=\"\">\r\n </div>\r\n <div class=\"d-flex justify-content-between\">\r\n <span class=\"contenttext fw-semibold px-3\">\r\n <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\"\r\n stroke=\"#667085\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg><span class=\"mx-1\">{{ data.comments }}</span> comments\r\n </span>\r\n <span [ngClass]=\"statusBadge(data.status)\">{{ data.status | titlecase }}</span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Right: the selected parent, with its cycle children as an accordion -->\r\n <!-- Only this column reloads when a card is clicked, so it\r\n shimmers on its own rather than blanking the whole tab. -->\r\n <div *ngIf=\"detailLoading\" class=\"col-sm-6\">\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>\r\n </div>\r\n\r\n <div *ngIf=\"!detailLoading && ticketInfo\" class=\"col-sm-6\">\r\n <div class=\"maincard-label fw-bold d-flex justify-content-between align-items-center mb-5\">\r\n <span><img src=\"./assets/tango/Images/ticket.svg\"><span class=\"mx-2\">{{ ticketInfo.ticketId }}</span></span>\r\n </div>\r\n\r\n <!-- Cycle children. Rows open independently. -->\r\n <div *ngFor=\"let child of ticketInfo.children\" class=\"child-row mb-4\">\r\n <div class=\"child-head d-flex justify-content-between align-items-center cursor-pointer px-4 py-3\" (click)=\"toggleChild(child)\">\r\n <div class=\"d-flex align-items-center flex-wrap\">\r\n <span class=\"chevron me-3\" [class.open]=\"child.expanded\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\">\r\n <path d=\"M5 2.5L9.5 7L5 11.5\" stroke=\"#101828\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <span class=\"meta-pill cycle-id timingtext fw-semibold me-3\">{{ child.cycleId }}</span>\r\n <span class=\"streams-pill timingtext me-3\" [class.clickable]=\"child.streamsDown\"\r\n (click)=\"openStreams(child, $event)\"\r\n [title]=\"child.streamsDown ? 'See which streams were down' : ''\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"14\" height=\"14\" viewBox=\"0 0 24 20\" fill=\"none\">\r\n <path d=\"M23 17C23 17.5304 22.7893 18.0391 22.4142 18.4142C22.0391 18.7893 21.5304 19 21 19H3C2.46957 19 1.96086 18.7893 1.58579 18.4142C1.21071 18.0391 1 17.5304 1 17V6C1 5.46957 1.21071 4.96086 1.58579 4.58579C1.96086 4.21071 2.46957 4 3 4H7L9 1H15L17 4H21C21.5304 4 22.0391 4.21071 22.4142 4.58579C22.7893 4.96086 23 5.46957 23 6V17Z\"\r\n stroke=\"#F04438\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n <span class=\"fw-bold mx-1\">{{ child.streamsDown }}</span> streams down\r\n </span>\r\n </div>\r\n <span [ngClass]=\"statusBadge(child.status)\" class=\"flex-shrink-0\">{{ child.status | titlecase }}</span>\r\n </div>\r\n\r\n <div *ngIf=\"child.expanded\" class=\"child-body px-5 py-5\">\r\n <div class=\"inner-card px-5 py-5\">\r\n <div *ngFor=\"let entry of child.entries; let last = last; let first = first\" class=\"d-flex\" [class.pt-5]=\"!first\">\r\n <div class=\"d-flex flex-column align-items-center me-4\">\r\n <!-- Both avatars are V1's, so the two tabs read alike: the Tango\r\n peak is inline there too, and cannot 404 the way an asset can. -->\r\n <svg *ngIf=\"isTangoAuthor(entry.author); else personIcon\" class=\"avatar-logo\" viewBox=\"0 0 40 40\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect width=\"40\" height=\"40\" rx=\"20\" fill=\"#EAF8FF\"/>\r\n <path d=\"M30.4932 28.3351L29.6867 27.5286L20.9965 18.8384L23.5744 16.2605L24.1921 15.6416C24.251 15.5818 24.2843 15.5014 24.2847 15.4174C24.2845 15.3759 24.2761 15.3349 24.26 15.2966C24.2439 15.2584 24.2204 15.2237 24.1909 15.1945L23.572 14.5756L20.8381 11.8368L20.2192 11.218C20.19 11.1882 20.1551 11.1645 20.1166 11.1484C20.0781 11.1323 20.0368 11.124 19.995 11.124C19.9533 11.124 19.912 11.1323 19.8735 11.1484C19.835 11.1645 19.8001 11.1882 19.7709 11.218L19.152 11.8381L15.8016 15.1884C15.7719 15.2176 15.7483 15.2523 15.7322 15.2907C15.7161 15.3291 15.7077 15.3703 15.7077 15.412C15.7077 15.4536 15.7161 15.4948 15.7322 15.5332C15.7483 15.5716 15.7719 15.6064 15.8016 15.6355L19.0021 18.8372L10.3107 27.5286L9.50787 28.3351C9.44834 28.3941 9.41461 28.4743 9.41406 28.5581C9.41441 28.6391 9.4453 28.717 9.50056 28.7762C9.53007 28.8077 9.56573 28.8328 9.60533 28.85C9.64494 28.8672 9.68765 28.8761 9.73082 28.8761H17.5487C17.6326 28.8757 17.713 28.8423 17.7723 28.7829C17.8316 28.7236 17.8651 28.6432 17.8654 28.5593V27.782C17.8654 27.6979 17.8321 27.6172 17.7727 27.5576C17.7134 27.498 17.6328 27.4644 17.5487 27.464H12.3709L19.9987 19.8362L27.6265 27.464H22.4036C22.3195 27.4644 22.2389 27.498 22.1796 27.5576C22.1202 27.6172 22.0869 27.6979 22.0869 27.782V28.5593C22.0867 28.601 22.0949 28.6424 22.111 28.6809C22.1272 28.7194 22.1508 28.7543 22.1807 28.7835C22.2399 28.8426 22.32 28.8758 22.4036 28.8761H30.269C30.3124 28.8762 30.3553 28.8674 30.3952 28.8502C30.435 28.833 30.4708 28.8078 30.5005 28.7762C30.5574 28.7164 30.5885 28.6367 30.5872 28.5542C30.5858 28.4716 30.552 28.393 30.4932 28.3351ZM19.9938 12.9906L22.4219 15.4187L19.9999 17.8407L17.5718 15.4126L19.9938 12.9906Z\" fill=\"#00A3FF\"/>\r\n </svg>\r\n <ng-template #personIcon>\r\n <img class=\"avatar-logo\" src=\"./assets/tango/Images/userProfile.svg\" alt=\"\">\r\n </ng-template>\r\n <div *ngIf=\"!last\" class=\"connector\"></div>\r\n </div>\r\n\r\n <div class=\"w-100 pb-2\">\r\n <div class=\"d-flex align-items-center flex-wrap\">\r\n <span class=\"maincard-label fw-bold\">{{ entry.author }}</span>\r\n <span *ngIf=\"entry.at\" class=\"timingtext mx-3\">{{ entry.at }}</span>\r\n <!-- The agent's verdict, whatever it is - not only escalated.\r\n Absent when the agent never reported. -->\r\n <span *ngIf=\"entry.agentStatus\" [ngClass]=\"agentPillClass(entry)\"\r\n class=\"timingtext fw-semibold ms-auto text-uppercase\"><span class=\"dot me-2\"\r\n [class.dot-amber]=\"entry.escalated\"\r\n [class.dot-grey]=\"!entry.escalated\"></span>{{ agentLabel(entry) }}</span>\r\n </div>\r\n\r\n <div *ngIf=\"entry.text\" class=\"contenttext fw-semibold mt-2\">{{ entry.text }}</div>\r\n\r\n <!-- Analysis entry: label/value pairs, then the expander -->\r\n <ng-container *ngIf=\"entry.kind === 'analysis'\">\r\n <div class=\"d-flex mt-3\">\r\n <span class=\"meta-label timingtext fw-semibold\">ISSUE CATEGORY</span>\r\n <span class=\"meta-value contenttext fw-semibold\">{{ entry.issueCategory }}</span>\r\n </div>\r\n <div class=\"d-flex mt-2\">\r\n <span class=\"meta-label timingtext fw-semibold\">ROOT CAUSE</span>\r\n <span class=\"meta-value contenttext fw-semibold\">{{ entry.rootCause }}</span>\r\n </div>\r\n <div class=\"analysis-link contenttext fw-semibold cursor-pointer mt-4\" (click)=\"toggleAnalysis(entry)\">\r\n <span class=\"chevron-down me-2\" [class.open]=\"entry.showAnalysis\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\" viewBox=\"0 0 14 14\" fill=\"none\">\r\n <path d=\"M3 5L7 9.5L11 5\" stroke=\"#009BF3\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n {{ entry.showAnalysis ? 'Hide the full analysis' : 'Show the full analysis' }}\r\n </div>\r\n <div *ngIf=\"entry.showAnalysis && entry.analysis\" class=\"mt-3\">\r\n <div class=\"analysis-row d-flex mb-4\">\r\n <span class=\"dot analysis-dot me-3\"></span>\r\n <div class=\"timingtext fw-semibold\">\r\n <span class=\"analysis-label timingtext fw-semibold me-3\">CAUSE</span>{{ entry.analysis.cause }}\r\n </div>\r\n </div>\r\n <div class=\"analysis-row d-flex mb-4\">\r\n <span class=\"dot analysis-dot me-3\"></span>\r\n <div class=\"timingtext fw-semibold\">\r\n <span class=\"analysis-label timingtext fw-semibold me-3\">PROOF</span>{{ entry.analysis.proof }}\r\n </div>\r\n </div>\r\n <div class=\"analysis-row d-flex mb-4\">\r\n <span class=\"dot analysis-dot me-3\"></span>\r\n <div class=\"timingtext fw-semibold\">\r\n <span class=\"analysis-label timingtext fw-semibold me-3\">FIX</span>{{ entry.analysis.fix }}\r\n </div>\r\n </div>\r\n <div class=\"analysis-row d-flex\">\r\n <span class=\"dot analysis-dot me-3\"></span>\r\n <div class=\"timingtext fw-semibold\">\r\n <span class=\"analysis-label timingtext fw-semibold me-3\">NOTES</span>{{ entry.analysis.notes }}\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n <!-- Which side wrote this, under the name. Only on stored\r\n rows: the open / closed notes and the agent card speak\r\n for themselves. -->\r\n <div *ngIf=\"entry.authorType\" class=\"profile-label mt-1\">{{ replyLabel(entry) }}</div>\r\n\r\n <!-- A stored identification, laid out from its reasons rather\r\n than summarised into a sentence. The Tango rows written\r\n alongside it - the fix steps and the status-check timer -\r\n are filtered out by the API, so one submission is one row. -->\r\n <ng-container *ngIf=\"entry.kind === 'activity' && entry.activityKind === 'issueIdentified'\">\r\n <div *ngFor=\"let reason of entry.reasons\">\r\n <div class=\"contenttext fw-semibold mt-3\">\r\n We're currently encountering an <span class=\"fw-bold-700\">{{ reason.primaryIssue }}</span>\r\n </div>\r\n <div *ngIf=\"reason.secondaryIssue.length\" class=\"mt-1\">\r\n <span class=\"investigation fw-semibold\">The following are the relevant problem facing</span>\r\n <ul class=\"profile-label mt-2\">\r\n <li *ngFor=\"let secondary of reason.secondaryIssue\">{{ secondary.name }}</li>\r\n </ul>\r\n </div>\r\n </div>\r\n <div *ngIf=\"entry.comment\" class=\"timingtext mt-2\">{{ entry.comment }}</div>\r\n </ng-container>\r\n\r\n </div>\r\n </div>\r\n\r\n <!-- Issue identification, inside the child panel. Icons are copied\r\n from the V1 tab so the two tabs render identically. Only the\r\n live cycle carries it - a closed one has nothing to answer -\r\n so it still appears at most once per parent. -->\r\n <div *ngIf=\"showIssuePicker && isIdentifyChild(child)\" class=\"investigation fw-semibold mt-5\">\r\n Kindly choose the option below that corresponds to the issue you are\r\n experiencing in the store.\r\n <ul class=\"list-unstyled px-4\">\r\n <li class=\"py-4 cursor-pointer\" (click)=\"choosenIssue('Internet Issues')\">\r\n <ng-container *ngTemplateOutlet=\"internetIcon\"></ng-container> <span class=\"px-3\">Internet Issues</span>\r\n </li>\r\n <li class=\"py-4 cursor-pointer\" (click)=\"choosenIssue('Camera Issues')\">\r\n <ng-container *ngTemplateOutlet=\"cameraIcon\"></ng-container> <span class=\"px-3\">Camera Issues</span>\r\n </li>\r\n <li class=\"py-4 cursor-pointer\" (click)=\"choosenIssue('System Issues')\">\r\n <ng-container *ngTemplateOutlet=\"systemIcon\"></ng-container> <span class=\"px-3\">System Issues</span>\r\n </li>\r\n <li class=\"py-4 cursor-pointer\" (click)=\"choosenIssue('Store Operation Issues')\">\r\n <ng-container *ngTemplateOutlet=\"storeIcon\"></ng-container> <span class=\"px-3\">Store Operation Issues</span>\r\n </li>\r\n <li class=\"py-4 cursor-pointer\" (click)=\"choosenIssue('Application Issues')\">\r\n <ng-container *ngTemplateOutlet=\"appIcon\"></ng-container> <span class=\"px-3\">Application Issues</span>\r\n </li>\r\n </ul>\r\n </div>\r\n\r\n <div *ngIf=\"showIssueDetail && isIdentifyChild(child)\" class=\"mt-5\">\r\n <div class=\"openedissue d-flex justify-content-between align-items-center\">\r\n <span class=\"profile-label fw-semibold\">\r\n <ng-container *ngIf=\"selectedIssue === 'Internet Issues'\" [ngTemplateOutlet]=\"internetIcon\"></ng-container>\r\n <ng-container *ngIf=\"selectedIssue === 'Camera Issues'\" [ngTemplateOutlet]=\"cameraIcon\"></ng-container>\r\n <ng-container *ngIf=\"selectedIssue === 'System Issues'\" [ngTemplateOutlet]=\"systemIcon\"></ng-container>\r\n <ng-container *ngIf=\"selectedIssue === 'Store Operation Issues'\" [ngTemplateOutlet]=\"storeIcon\"></ng-container>\r\n <ng-container *ngIf=\"selectedIssue === 'Application Issues'\" [ngTemplateOutlet]=\"appIcon\"></ng-container>\r\n <span class=\"ms-2\">{{ selectedIssue }}</span>\r\n </span>\r\n <div (click)=\"choosenIssue('')\" class=\"maincard-content bg-white px-3 py-2 cursor-pointer\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\">\r\n <path d=\"M12.8327 6.99935H1.16602M1.16602 6.99935L6.99935 12.8327M1.16602 6.99935L6.99935 1.16602\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </div>\r\n </div>\r\n\r\n <div class=\"maincard-content w-100 mt-2 px-4 py-2 pb-4\">\r\n <div class=\"maincard-label fw-semibold py-2\">Please select the relevant problem facing from the following</div>\r\n <div *ngFor=\"let issue of secondaryIssues; let index = index\"\r\n class=\"maincard-content d-flex justify-content-between align-items-center w-100 mt-2 px-4 py-4 cursor-pointer\"\r\n (click)=\"toggleCheckbox(index)\">\r\n <div class=\"d-flex justify-content-between align-items-center\">\r\n <span><img class=\"pe-3\" src=\"./assets/tango/Images/Featured icon.png\"></span>\r\n <span class=\"headingtext\">{{ issue.name }}</span>\r\n </div>\r\n <div class=\"roundedcheck d-flex align-items-center\">\r\n <input type=\"checkbox\" [checked]=\"issue.checked\" class=\"p-0\">\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Hibernation + comment row, copied from the V1 tab\r\n (ticket-infra.component.html:333) so both read the same. -->\r\n <div class=\"form-group pt-6\">\r\n <label for=\"hibernationV2\" class=\"maincard-label fw-semibold mb-2\">Hibernation (in days) *</label>\r\n <div class=\"w-250px position-relative\">\r\n <div class=\"position-absolute translate-middle-y top-50 me-5 ps-3 ticketDays\">\r\n <span class=\"svg-icon toggle-off svg-icon-1\" [ngClass]=\"hibernationDays === 0 ? 'pe-none' : ''\" (click)=\"decreaseHibernation()\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"21\" height=\"20\" viewBox=\"0 0 21 20\" fill=\"none\">\r\n <path d=\"M4.66602 10H16.3327\" stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n <input type=\"text\" class=\"form-control\" id=\"hibernationV2\" style=\"text-align: center;\"\r\n [value]=\"hibernationDays\" placeholder=\"0\" readonly />\r\n <div class=\"position-absolute translate-middle-y top-50 end-0 me-3\">\r\n <span class=\"svg-icon toggle-on svg-icon-1 ticketDays\" (click)=\"increaseHibernation()\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"21\" height=\"20\" viewBox=\"0 0 21 20\" fill=\"none\">\r\n <path d=\"M10.4993 4.1665V15.8332M4.66602 9.99984H16.3327\" stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- The paperclip is inert: V1 posts to uploadAttachments/, and there\r\n is nowhere to upload to while the data is mocked. -->\r\n <div class=\"d-flex justify-content-between align-items-center mt-10 mb-5\">\r\n <input class=\"form-control\" type=\"text\" [(ngModel)]=\"comments\" placeholder=\"Add your comments..\">\r\n <button type=\"button\" class=\"cursor-pointer btn btn-default btn-outline 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 d=\"M17.8666 9.20835L10.2082 16.8667C9.27005 17.8049 7.99757 18.332 6.67075 18.332C5.34393 18.332 4.07145 17.8049 3.13325 16.8667C2.19505 15.9285 1.66797 14.656 1.66797 13.3292C1.66797 12.0024 2.19505 10.7299 3.13325 9.79168L10.7916 2.13335C11.4171 1.50788 12.2654 1.15649 13.1499 1.15649C14.0345 1.15649 14.8828 1.50788 15.5082 2.13335C16.1337 2.75882 16.4851 3.60713 16.4851 4.49168C16.4851 5.37623 16.1337 6.22455 15.5082 6.85002L7.84158 14.5083C7.52885 14.8211 7.10469 14.9968 6.66242 14.9968C6.22014 14.9968 5.79598 14.8211 5.48325 14.5083C5.17051 14.1956 4.99482 13.7715 4.99482 13.3292C4.99482 12.8869 5.17051 12.4627 5.48325 12.15L12.5582 5.08335\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </button>\r\n <button type=\"button\" class=\"btn btn-primary ms-3\" [disabled]=\"!canSubmitIssue || submitting\" (click)=\"submitIssue()\">{{ submitting ? 'Submitting...' : 'Submit' }}</button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n</div>\r\n\r\n<!-- Option icons, defined once because each is used twice: in the option list\r\n and again in the chosen-issue bar. Paths are copied verbatim from\r\n ticket-infra.component.html so the two tabs match pixel for pixel. -->\r\n<ng-template #internetIcon>\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M21 12C21 7.0293 16.9707 3 12 3C7.0293 3 3 7.0293 3 12C3 16.9707 7.0293 21 12 21\" fill=\"white\" />\r\n <path d=\"M12.9 3.04504C12.9 3.04504 15.6 6.60004 15.6 12L12.9 3.04504ZM11.1 20.955C11.1 20.955 8.4 17.4 8.4 12C8.4 6.60004 11.1 3.04504 11.1 3.04504M3.567 15.15H12H3.567ZM3.567 8.85004H20.433H3.567Z\" fill=\"white\" />\r\n <path d=\"M20.8911 17.3252C21.3357 17.5988 21.3078 18.2639 20.8506 18.3161L18.5403 18.578L17.5044 20.6588C17.2992 21.0719 16.6647 20.8694 16.5594 20.3582L15.4299 14.8538C15.3408 14.4218 15.7296 14.15 16.1049 14.3813L20.8911 17.3252Z\" fill=\"white\" />\r\n <path d=\"M20.25 12C20.25 12.4142 20.5858 12.75 21 12.75C21.4142 12.75 21.75 12.4142 21.75 12H20.25ZM12 21.75C12.4142 21.75 12.75 21.4142 12.75 21C12.75 20.5858 12.4142 20.25 12 20.25V21.75ZM13.4973 2.59142C13.2467 2.26156 12.7762 2.19725 12.4464 2.44778C12.1165 2.6983 12.0522 3.1688 12.3027 3.49866L13.4973 2.59142ZM14.85 12C14.85 12.4143 15.1858 12.75 15.6 12.75C16.0142 12.75 16.35 12.4143 16.35 12H14.85ZM10.5027 21.4087C10.7533 21.7385 11.2238 21.8028 11.5536 21.5523C11.8835 21.3018 11.9478 20.8313 11.6973 20.5014L10.5027 21.4087ZM11.6973 3.49866C11.9478 3.1688 11.8835 2.6983 11.5536 2.44778C11.2238 2.19725 10.7533 2.26156 10.5027 2.59142L11.6973 3.49866ZM3.567 14.4C3.15279 14.4 2.817 14.7358 2.817 15.15C2.817 15.5643 3.15279 15.9 3.567 15.9V14.4ZM12 15.9C12.4142 15.9 12.75 15.5643 12.75 15.15C12.75 14.7358 12.4142 14.4 12 14.4V15.9ZM3.567 8.10004C3.15279 8.10004 2.817 8.43583 2.817 8.85004C2.817 9.26426 3.15279 9.60004 3.567 9.60004V8.10004ZM20.433 9.60004C20.8472 9.60004 21.183 9.26426 21.183 8.85004C21.183 8.43583 20.8472 8.10004 20.433 8.10004V9.60004ZM20.8911 17.3252L21.2842 16.6865L21.284 16.6864L20.8911 17.3252ZM20.8506 18.3161L20.9351 19.0613L20.9357 19.0613L20.8506 18.3161ZM18.5403 18.578L18.4558 17.8328L18.0506 17.8787L17.8689 18.2438L18.5403 18.578ZM17.5044 20.6588L16.833 20.3246L16.8327 20.3252L17.5044 20.6588ZM16.5594 20.3582L15.8247 20.509L15.8248 20.5095L16.5594 20.3582ZM15.4299 14.8538L16.1646 14.703L16.1644 14.7023L15.4299 14.8538ZM16.1049 14.3813L15.7114 15.0198L15.712 15.0201L16.1049 14.3813ZM21.75 12C21.75 6.61509 17.3849 2.25 12 2.25V3.75C16.5565 3.75 20.25 7.44351 20.25 12H21.75ZM12 2.25C6.61509 2.25 2.25 6.61509 2.25 12H3.75C3.75 7.44351 7.44351 3.75 12 3.75V2.25ZM2.25 12C2.25 17.3849 6.61509 21.75 12 21.75V20.25C7.44351 20.25 3.75 16.5565 3.75 12H2.25ZM12.9 3.04504C12.3027 3.49866 12.3026 3.49846 12.3024 3.49828C12.3024 3.49823 12.3023 3.49806 12.3022 3.49797C12.3021 3.49779 12.302 3.49767 12.3019 3.4976C12.3018 3.49746 12.3019 3.49753 12.3021 3.49781C12.3025 3.49838 12.3036 3.4998 12.3053 3.50206C12.3086 3.50658 12.3144 3.51447 12.3225 3.52567C12.3387 3.54809 12.3641 3.58375 12.3973 3.63226C12.4638 3.72929 12.5616 3.87752 12.6805 4.07361C12.9183 4.46606 13.2393 5.04863 13.5614 5.79478C14.2061 7.28837 14.85 9.42526 14.85 12H16.35C16.35 9.17483 15.6439 6.83422 14.9386 5.20031C14.5857 4.38271 14.2317 3.73902 13.9633 3.29616C13.829 3.0746 13.7159 2.90291 13.6347 2.78443C13.5941 2.72518 13.5615 2.6792 13.5381 2.6469C13.5265 2.63075 13.5171 2.61802 13.5102 2.60876C13.5068 2.60413 13.504 2.60036 13.5018 2.59747C13.5007 2.59602 13.4998 2.5948 13.4991 2.59379C13.4987 2.59329 13.4983 2.59284 13.498 2.59244C13.4979 2.59224 13.4977 2.59199 13.4976 2.59189C13.4974 2.59165 13.4973 2.59142 12.9 3.04504ZM11.1 20.955C11.6973 20.5014 11.6974 20.5016 11.6976 20.5018C11.6976 20.5019 11.6977 20.502 11.6978 20.5021C11.6979 20.5023 11.698 20.5024 11.6981 20.5025C11.6982 20.5026 11.6981 20.5026 11.6979 20.5023C11.6975 20.5017 11.6964 20.5003 11.6948 20.498C11.6914 20.4935 11.6856 20.4856 11.6775 20.4744C11.6613 20.452 11.6359 20.4163 11.6027 20.3678C11.5362 20.2708 11.4384 20.1226 11.3195 19.9265C11.0817 19.534 10.7607 18.9515 10.4386 18.2053C9.79388 16.7117 9.15 14.5748 9.15 12H7.65C7.65 14.8253 8.35613 17.1659 9.06142 18.7998C9.41434 19.6174 9.76833 20.2611 10.0367 20.7039C10.171 20.9255 10.2841 21.0972 10.3653 21.2157C10.4059 21.2749 10.4385 21.3209 10.4619 21.3532C10.4735 21.3693 10.4829 21.3821 10.4898 21.3913C10.4932 21.396 10.496 21.3997 10.4982 21.4026C10.4993 21.4041 10.5002 21.4053 10.5009 21.4063C10.5013 21.4068 10.5017 21.4073 10.502 21.4076C10.5021 21.4078 10.5023 21.4081 10.5024 21.4082C10.5026 21.4084 10.5027 21.4087 11.1 20.955ZM9.15 12C9.15 9.42526 9.79388 7.28837 10.4386 5.79478C10.7607 5.04863 11.0817 4.46606 11.3195 4.07361C11.4384 3.87752 11.5362 3.72929 11.6027 3.63226C11.6359 3.58375 11.6613 3.54809 11.6775 3.52567C11.6856 3.51447 11.6914 3.50658 11.6948 3.50206C11.6964 3.4998 11.6975 3.49838 11.6979 3.49781C11.6981 3.49753 11.6982 3.49746 11.6981 3.4976C11.698 3.49767 11.6979 3.49779 11.6978 3.49797C11.6977 3.49806 11.6976 3.49823 11.6976 3.49828C11.6974 3.49846 11.6973 3.49866 11.1 3.04504C10.5027 2.59142 10.5026 2.59165 10.5024 2.59189C10.5023 2.59199 10.5021 2.59224 10.502 2.59244C10.5017 2.59284 10.5013 2.59329 10.5009 2.59379C10.5002 2.5948 10.4993 2.59602 10.4982 2.59747C10.496 2.60036 10.4932 2.60413 10.4898 2.60876C10.4829 2.61802 10.4735 2.63075 10.4619 2.6469C10.4385 2.6792 10.4059 2.72518 10.3653 2.78443C10.2841 2.90291 10.171 3.0746 10.0367 3.29616C9.76833 3.73902 9.41434 4.38271 9.06142 5.20031C8.35613 6.83422 7.65 9.17483 7.65 12H9.15ZM3.567 15.9H12V14.4H3.567V15.9ZM3.567 9.60004H20.433V8.10004H3.567V9.60004ZM20.498 17.9639C20.4792 17.9524 20.4575 17.9252 20.4597 17.8727C20.4609 17.8434 20.4715 17.7772 20.5297 17.7054C20.5961 17.6235 20.6889 17.5797 20.7655 17.5709L20.9357 19.0613C21.6167 18.9835 21.9384 18.4179 21.9584 17.9346C21.9776 17.4682 21.7476 16.9717 21.2842 16.6865L20.498 17.9639ZM20.7661 17.5709L18.4558 17.8328L18.6248 19.3232L20.9351 19.0613L20.7661 17.5709ZM17.8689 18.2438L16.833 20.3246L18.1758 20.9931L19.2117 18.9123L17.8689 18.2438ZM16.8327 20.3252C16.8668 20.2565 16.9395 20.1839 17.0398 20.1492C17.1277 20.1188 17.194 20.1316 17.2221 20.1405C17.272 20.1564 17.2896 20.1857 17.294 20.2069L15.8248 20.5095C15.9345 21.0419 16.322 21.4281 16.7668 21.5697C17.2286 21.7168 17.8707 21.6073 18.1761 20.9925L16.8327 20.3252ZM17.2941 20.2074L16.1646 14.703L14.6952 15.0046L15.8247 20.509L17.2941 20.2074ZM16.1644 14.7023C16.1723 14.7406 16.1666 14.883 16.0232 14.9833C15.88 15.0835 15.7446 15.0402 15.7114 15.0198L16.4984 13.7428C16.0899 13.4911 15.5724 13.468 15.1633 13.7543C14.754 14.0407 14.5984 14.535 14.6954 15.0053L16.1644 14.7023ZM15.712 15.0201L20.4982 17.964L21.284 16.6864L16.4978 13.7425L15.712 15.0201Z\" fill=\"#475467\" />\r\n </svg>\r\n</ng-template>\r\n\r\n<ng-template #cameraIcon>\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"20\" viewBox=\"0 0 24 20\" fill=\"none\">\r\n <path d=\"M23 17C23 17.5304 22.7893 18.0391 22.4142 18.4142C22.0391 18.7893 21.5304 19 21 19H3C2.46957 19 1.96086 18.7893 1.58579 18.4142C1.21071 18.0391 1 17.5304 1 17V6C1 5.46957 1.21071 4.96086 1.58579 4.58579C1.96086 4.21071 2.46957 4 3 4H7L9 1H15L17 4H21C21.5304 4 22.0391 4.21071 22.4142 4.58579C22.7893 4.96086 23 5.46957 23 6V17Z\"\r\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n <path d=\"M12 15C14.2091 15 16 13.2091 16 11C16 8.79086 14.2091 7 12 7C9.79086 7 8 8.79086 8 11C8 13.2091 9.79086 15 12 15Z\"\r\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n</ng-template>\r\n\r\n<ng-template #systemIcon>\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"14\" viewBox=\"0 0 20 14\" fill=\"none\">\r\n <path d=\"M12 2V9H2V2H12ZM2 0C0.896875 0 0 0.896875 0 2V9C0 10.1031 0.896875 11 2 11H5.66563L5.33125 12H3C2.44688 12 2 12.4469 2 13C2 13.5531 2.44688 14 3 14H11C11.5531 14 12 13.5531 12 13C12 12.4469 11.5531 12 11 12H8.66562L8.33125 11H12C13.1031 11 14 10.1031 14 9V2C14 0.896875 13.1031 0 12 0H2ZM16.5 0C15.6719 0 15 0.671875 15 1.5V12.5C15 13.3281 15.6719 14 16.5 14H18.5C19.3281 14 20 13.3281 20 12.5V1.5C20 0.671875 19.3281 0 18.5 0H16.5ZM17 2H18C18.275 2 18.5 2.225 18.5 2.5C18.5 2.775 18.275 3 18 3H17C16.725 3 16.5 2.775 16.5 2.5C16.5 2.225 16.725 2 17 2ZM16.5 4.5C16.5 4.225 16.725 4 17 4H18C18.275 4 18.5 4.225 18.5 4.5C18.5 4.775 18.275 5 18 5H17C16.725 5 16.5 4.775 16.5 4.5ZM17.5 9.5C17.7652 9.5 18.0196 9.60536 18.2071 9.79289C18.3946 9.98043 18.5 10.2348 18.5 10.5C18.5 10.7652 18.3946 11.0196 18.2071 11.2071C18.0196 11.3946 17.7652 11.5 17.5 11.5C17.2348 11.5 16.9804 11.3946 16.7929 11.2071C16.6054 11.0196 16.5 10.7652 16.5 10.5C16.5 10.2348 16.6054 9.98043 16.7929 9.79289C16.9804 9.60536 17.2348 9.5 17.5 9.5Z\"\r\n fill=\"#475467\" />\r\n </svg>\r\n</ng-template>\r\n\r\n<ng-template #storeIcon>\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M3.08995 6.88369L3.02401 6.98669C2.30358 8.25557 3.06101 9.87945 4.46464 10.0662C4.58627 10.0811 4.70112 10.0892 4.8145 10.0892C5.55255 10.0892 6.20523 9.77229 6.65953 9.27917L7.21286 8.67854L7.76432 9.28089C8.21367 9.77171 8.8652 10.0892 9.60776 10.0892C10.3471 10.0892 11.0022 9.77137 11.4512 9.28089L12.0044 8.67665L12.5576 9.28089C13.0066 9.77137 13.6617 10.0892 14.401 10.0892C15.1404 10.0892 15.7954 9.77137 16.2445 9.28089L16.7977 8.67665L17.3508 9.28089C17.7999 9.77137 18.4549 10.0892 19.1943 10.0892C19.3041 10.0892 19.4223 10.0811 19.5433 10.0663C20.9772 9.87168 21.7355 8.16387 20.9155 6.88419C20.9154 6.88413 20.9154 6.88407 20.9154 6.88402L18.8056 3.59429L18.8056 3.59429L18.8046 3.59282C18.7582 3.52002 18.6649 3.46423 18.5584 3.46423H5.44307C5.3365 3.46423 5.24326 3.52002 5.19681 3.59282L5.19619 3.59379L3.08995 6.88369ZM4.81818 12.7499C4.71644 12.7499 4.616 12.7468 4.5169 12.741V16.6428V18.9642C4.5169 19.8211 5.22663 20.5357 6.11942 20.5357H17.882C18.7748 20.5357 19.4845 19.8211 19.4845 18.9642V16.6428V12.7415C19.3874 12.747 19.2893 12.7499 19.1906 12.7499C19.0022 12.7499 18.8157 12.7398 18.632 12.7202V16.6428V17.3928H17.882H6.11942H5.36942V16.6428V12.721C5.18866 12.74 5.00472 12.7499 4.81818 12.7499Z\"\r\n stroke=\"#475467\" stroke-width=\"1.5\" />\r\n </svg>\r\n</ng-template>\r\n\r\n<ng-template #appIcon>\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M8 1H1V8H8V1Z\" stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n <path d=\"M19 1H12V8H19V1Z\" stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n <path d=\"M19 12H12V19H19V12Z\" stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n <path d=\"M8 12H1V19H8V12Z\" stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n</ng-template>\r\n\r\n<!-- Opened from the \"N streams down\" pill on a child row. Read-only: the API\r\n sends both timestamps already formatted, so nothing here derives a value. -->\r\n<ng-template #streamsModal let-modal>\r\n <div class=\"streams-dialog px-8 py-7\">\r\n <div class=\"mb-5\">\r\n <div class=\"maincard-label fw-bold\">Streams down</div>\r\n <div class=\"timingtext mt-1\">{{ streamsCycleId }}</div>\r\n </div>\r\n\r\n <div class=\"table-responsive\">\r\n <table class=\"table streams-table align-middle mb-0\">\r\n <thead>\r\n <tr>\r\n <th>Stream</th>\r\n <th>Down from</th>\r\n <th>Down to</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let stream of streams\">\r\n <td><span class=\"stream-name\" [title]=\"stream.streamName\">{{ stream.streamName }}</span></td>\r\n <td>{{ stream.from || '--' }}</td>\r\n <td>{{ stream.to || '--' }}</td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n\r\n <div class=\"d-flex justify-content-end mt-7\">\r\n <button type=\"button\" class=\"btn btn-default btn-primary\" (click)=\"modal.dismiss()\">Close</button>\r\n </div>\r\n </div>\r\n</ng-template>\r\n", styles: [".card-label{font-size:18px!important}.issuecard{flex:1 1 0;min-width:0;border-radius:10px;border:1px solid var(--Gray-200, #EAECF0);padding:16px}.issuecard label,.issuecard .label{color:var(--Black, #101828);font-size:14px;line-height:20px}.issuecard.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;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}.profile-label{font-size:12px;color:var(--Gray-500, #344054);line-height:16px}.timingtext{color:var(--Gray-500, #667085);font-size:12px;line-height:18px}.fw-bold-700{font-weight:700!important}.child-row{border-radius:10px;border:1px solid var(--Gray-200, #EAECF0);overflow:hidden}.child-head{background:#fff;gap:8px}.chevron{display:inline-flex;transition:transform .15s ease-in-out}.chevron.open{transform:rotate(90deg)}.chevron-down{display:inline-flex;transition:transform .15s ease-in-out}.chevron-down.open{transform:rotate(180deg)}.streams-pill{display:inline-flex;align-items:center;border-radius:16px;border:1px solid var(--Gray-200, #EAECF0);padding:2px 10px;white-space:nowrap}.streams-pill.clickable{cursor:pointer}.streams-pill.clickable:hover{border-color:var(--Gray-400, #98A2B3)}.streams-dialog .streams-table th{color:var(--Gray-500, #667085);font-size:12px;font-weight:500;white-space:nowrap}.streams-dialog .streams-table td{color:var(--Gray-700, #344054);font-size:13px}.streams-dialog .streams-table .stream-name{display:inline-block;max-width:260px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;vertical-align:bottom}.meta-pill{display:inline-flex;align-items:center;white-space:nowrap}.cycle-id{color:var(--Black, #101828)}.dot{display:inline-block;width:6px;height:6px;border-radius:50%}.dot-amber{background:#f79009}.dot-grey{background:var(--Gray-500, #667085)}.child-body{background:var(--Gray-50, #F9FAFB)}.inner-card{border-radius:10px;border:1px solid var(--Gray-200, #EAECF0);background:#fff}.escalated-pill,.status-pill{display:inline-flex;align-items:center;border-radius:16px;font-size:10px;line-height:16px;padding:0 8px}.escalated-pill .dot,.status-pill .dot{width:5px;height:5px}.escalated-pill{background:#fffaeb;color:#b54708}.status-pill{background:var(--Gray-100, #F2F4F7);color:var(--Gray-700, #344054)}.avatar-logo{width:28px;height:28px;flex-shrink:0}.connector{width:0;height:100%;margin-top:6px;border-left:1px solid var(--Gray-200, #EAECF0)}.meta-label{width:130px;flex-shrink:0}.meta-value{color:var(--Gray-900, #101828)}.analysis-link{color:var(--Primary-700, #009BF3)}.ticketDays{cursor:pointer}.analysis-row .analysis-dot{margin-top:7px;flex-shrink:0;background:var(--Gray-400, #98A2B3)}.analysis-row .analysis-label{letter-spacing:.04em;color:var(--Black, #101828);background:var(--Gray-100, #F2F4F7);border-radius:4px;padding:1px 6px;white-space:nowrap}.investigation{color:var(--Gray-500, #344054);font-size:15px;line-height:24px}.openedissue{border-radius:6px;background:var(--Gray-50, #F9FAFB);padding:8px 12px}.headingtext{color:var(--Gray-700, #344054)!important;font-size:15px!important;font-weight:500;line-height:20px}.roundedcheck input[type=checkbox]{width:16px!important;height:16px!important;border-radius:10px!important;-webkit-appearance:none;-moz-appearance:none;-o-appearance:none;appearance:none;border:1px solid var(--Gray-300, #D0D5DD);background:#fff;cursor:pointer}.roundedcheck input[type=checkbox]:checked{border-color:var(--Primary-700, #009BF3);background:var(--Primary-700, #009BF3);background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Cpath fill='none' stroke='%23fff' stroke-width='2' stroke-linecap='round' stroke-linejoin='round' d='M2.5 6.3l2.4 2.4 4.6-5'/%3E%3C/svg%3E\");background-repeat:no-repeat;background-position:center}\n"], dependencies: [{ kind: "directive", type: i6.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i6.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i7.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: i7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i7.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "pipe", type: i6.TitleCasePipe, name: "titlecase" }, { kind: "pipe", type: i6.DatePipe, name: "date" }, { kind: "pipe", type: i5.CustomDateFormatPipe, name: "customDateFormat" }] });
296
351
  }
297
352
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TicketInfraV2Component, decorators: [{
298
353
  type: Component,
299
- args: [{ selector: 'lib-ticket-infra-v2', template: "<div class=\"card\">\r\n <div class=\"card-header border-0 pt-3\">\r\n <h3 class=\"card-title align-items-start flex-column\">\r\n <span class=\"card-label mb-2\">Infra Tickets v2</span>\r\n <span *ngIf=\"headerFilter?.date?.startDate === headerFilter?.date?.endDate\" class=\"text-sub mb-2\">An overview of all the tickets for till {{ headerFilter?.date?.endDate | customDateFormat }}</span>\r\n <span *ngIf=\"headerFilter?.date?.startDate !== headerFilter?.date?.endDate\" class=\"text-sub mb-2\">An overview of all the tickets for {{ headerFilter?.date?.startDate | customDateFormat }} - {{ headerFilter?.date?.endDate | customDateFormat }}</span>\r\n </h3>\r\n <!-- Filter and Export render inert: lib-filters needs real facets, and\r\n there is nothing to export while the data is mocked. -->\r\n <div class=\"card-toolbar\">\r\n <button type=\"button\" class=\"btn btn-default mx-2 btn-outline btn-outline-default rounded-3 text-nowrap border-val\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M2.5 5H17.5M5 10H15M8.33333 15H11.6667\" stroke=\"#101828\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n <span class=\"ms-2\">Filter</span>\r\n </button>\r\n <button type=\"button\" class=\"btn btn-default mx-2 btn-outline btn-outline-default rounded-3 text-nowrap border-val\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M17.5 12.5V15.8333C17.5 16.2754 17.3244 16.6993 17.0118 17.0118C16.6993 17.3244 16.2754 17.5 15.8333 17.5H4.16667C3.72464 17.5 3.30072 17.3244 2.98816 17.0118C2.67559 16.6993 2.5 16.2754 2.5 15.8333V12.5M14.1667 6.66667L10 2.5M10 2.5L5.83333 6.66667M10 2.5V12.5\"\r\n stroke=\"#101828\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n <span class=\"ms-2\">Export</span>\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <div class=\"card-body\">\r\n <!-- Shimmer while either call is in flight. The styles are the shell's\r\n (styles.scss `.loader`), so the .loader > .shimmer > .wrapper > .stroke\r\n nesting has to stay as it is here. -->\r\n <div *ngIf=\"loading\" class=\"row loader d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <ng-container *ngIf=\"!loading\">\r\n <div class=\"d-flex justify-content-between gap-3 mb-7\">\r\n <div *ngFor=\"let issue of ticketCard\" class=\"issuecard\">\r\n <div><span class=\"title\">{{ issue.count }}</span></div>\r\n <span class=\"label fw-semibold\">{{ issue.name }}</span>\r\n </div>\r\n </div>\r\n\r\n <div class=\"maincard-content\">\r\n <div class=\"row p-10\">\r\n\r\n <!-- Left: unchanged from the Tickets tab. -->\r\n <div class=\"col-sm-6 cursor-pointer\">\r\n <div *ngFor=\"let data of ticketList; let index = index\" class=\"issuecard w-100 mb-4\"\r\n (click)=\"showTicket(index)\" [ngClass]=\"selectCard === index ? 'active' : ''\">\r\n\r\n <div class=\"maincard-label fw-bold d-flex justify-content-between mb-5\">\r\n <span><img src=\"./assets/tango/Images/ticket.svg\"> {{ data.ticketId }}</span>\r\n <div class=\"contenttext d-flex justify-content-center align-items-center text-center fw-semibold px-3\">\r\n <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\"\r\n stroke=\"#667085\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n <span class=\"mx-1\">{{ data.createdAt | date: 'dd-MM-yyyy' }}</span>\r\n <span *ngIf=\"data.issueClosedDate\" class=\"contenttext fw-semibold pe-3\">- {{ data.issueClosedDate | date: 'dd-MM-yyyy' }}</span>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"cardMessage(data)\" class=\"mb-5 contenttext fw-semibold\">{{ cardMessage(data) }}</div>\r\n <div *ngIf=\"!cardMessage(data)\" class=\"mb-5 contenttext fw-semibold\">\r\n Store is currently encountering a <span class=\"fw-bold-700\">{{ data.primaryIssue }}</span> which is\r\n <span class=\"fw-bold-700\">{{ data.secondaryIssue }}.</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 src=\"./assets/tango/Images/userProfile.svg\" alt=\"\">\r\n </div>\r\n <div class=\"d-flex justify-content-between\">\r\n <span class=\"contenttext fw-semibold px-3\">\r\n <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\"\r\n stroke=\"#667085\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg><span class=\"mx-1\">{{ data.comments }}</span> comments\r\n </span>\r\n <span [ngClass]=\"statusBadge(data.status)\">{{ data.status | titlecase }}</span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Right: the selected parent, with its cycle children as an accordion -->\r\n <!-- Only this column reloads when a card is clicked, so it\r\n shimmers on its own rather than blanking the whole tab. -->\r\n <div *ngIf=\"detailLoading\" class=\"col-sm-6\">\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>\r\n </div>\r\n\r\n <div *ngIf=\"!detailLoading && ticketInfo\" class=\"col-sm-6\">\r\n <div class=\"maincard-label fw-bold d-flex justify-content-between align-items-center mb-5\">\r\n <span><img src=\"./assets/tango/Images/ticket.svg\"><span class=\"mx-2\">{{ ticketInfo.ticketId }}</span></span>\r\n </div>\r\n\r\n <!-- Cycle children. Rows open independently. -->\r\n <div *ngFor=\"let child of ticketInfo.children\" class=\"child-row mb-4\">\r\n <div class=\"child-head d-flex justify-content-between align-items-center cursor-pointer px-4 py-3\" (click)=\"toggleChild(child)\">\r\n <div class=\"d-flex align-items-center flex-wrap\">\r\n <span class=\"chevron me-3\" [class.open]=\"child.expanded\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\">\r\n <path d=\"M5 2.5L9.5 7L5 11.5\" stroke=\"#101828\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <span class=\"meta-pill cycle-id timingtext fw-semibold me-3\">{{ child.cycleId }}</span>\r\n <span class=\"streams-pill timingtext me-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"14\" height=\"14\" viewBox=\"0 0 24 20\" fill=\"none\">\r\n <path d=\"M23 17C23 17.5304 22.7893 18.0391 22.4142 18.4142C22.0391 18.7893 21.5304 19 21 19H3C2.46957 19 1.96086 18.7893 1.58579 18.4142C1.21071 18.0391 1 17.5304 1 17V6C1 5.46957 1.21071 4.96086 1.58579 4.58579C1.96086 4.21071 2.46957 4 3 4H7L9 1H15L17 4H21C21.5304 4 22.0391 4.21071 22.4142 4.58579C22.7893 4.96086 23 5.46957 23 6V17Z\"\r\n stroke=\"#F04438\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n <span class=\"fw-bold mx-1\">{{ child.streamsDown }}</span> streams down\r\n </span>\r\n </div>\r\n <span [ngClass]=\"statusBadge(child.status)\" class=\"flex-shrink-0\">{{ child.status | titlecase }}</span>\r\n </div>\r\n\r\n <div *ngIf=\"child.expanded\" class=\"child-body px-5 py-5\">\r\n <div class=\"inner-card px-5 py-5\">\r\n <div *ngFor=\"let entry of child.entries; let last = last; let first = first\" class=\"d-flex\" [class.pt-5]=\"!first\">\r\n <div class=\"d-flex flex-column align-items-center me-4\">\r\n <span class=\"avatar\">\r\n <img *ngIf=\"isTangoAuthor(entry.author); else personIcon\" class=\"avatar-logo\" src=\"./assets/tango/Images/tangoEye-mark.svg\" alt=\"Tango\">\r\n <ng-template #personIcon>\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"14\" height=\"14\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path d=\"M13.3327 14V12.6667C13.3327 11.9594 13.0517 11.2811 12.5516 10.781C12.0515 10.281 11.3733 10 10.666 10H5.33268C4.62544 10 3.94716 10.281 3.44706 10.781C2.94697 11.2811 2.66602 11.9594 2.66602 12.6667V14M10.666 4.66667C10.666 6.13943 9.47211 7.33333 7.99935 7.33333C6.52659 7.33333 5.33268 6.13943 5.33268 4.66667C5.33268 3.19391 6.52659 2 7.99935 2C9.47211 2 10.666 3.19391 10.666 4.66667Z\"\r\n stroke=\"#009BF3\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </ng-template>\r\n </span>\r\n <div *ngIf=\"!last\" class=\"connector\"></div>\r\n </div>\r\n\r\n <div class=\"w-100 pb-2\">\r\n <div class=\"d-flex align-items-center flex-wrap\">\r\n <span class=\"maincard-label fw-bold\">{{ entry.author }}</span>\r\n <span *ngIf=\"entry.at\" class=\"timingtext mx-3\">{{ entry.at }}</span>\r\n <!-- The agent's verdict, whatever it is - not only escalated.\r\n Absent when the agent never reported. -->\r\n <span *ngIf=\"entry.agentStatus\" [ngClass]=\"agentPillClass(entry)\"\r\n class=\"timingtext fw-semibold ms-auto text-uppercase\"><span class=\"dot me-2\"\r\n [class.dot-amber]=\"entry.escalated\"\r\n [class.dot-grey]=\"!entry.escalated\"></span>{{ agentLabel(entry) }}</span>\r\n </div>\r\n\r\n <div *ngIf=\"entry.text\" class=\"contenttext fw-semibold mt-2\">{{ entry.text }}</div>\r\n\r\n <!-- Analysis entry: label/value pairs, then the expander -->\r\n <ng-container *ngIf=\"entry.kind === 'analysis'\">\r\n <div class=\"d-flex mt-3\">\r\n <span class=\"meta-label timingtext fw-semibold\">ISSUE CATEGORY</span>\r\n <span class=\"meta-value contenttext fw-semibold\">{{ entry.issueCategory }}</span>\r\n </div>\r\n <div class=\"d-flex mt-2\">\r\n <span class=\"meta-label timingtext fw-semibold\">ROOT CAUSE</span>\r\n <span class=\"meta-value contenttext fw-semibold\">{{ entry.rootCause }}</span>\r\n </div>\r\n <div class=\"analysis-link contenttext fw-semibold cursor-pointer mt-4\" (click)=\"toggleAnalysis(entry)\">\r\n <span class=\"chevron-down me-2\" [class.open]=\"entry.showAnalysis\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\" viewBox=\"0 0 14 14\" fill=\"none\">\r\n <path d=\"M3 5L7 9.5L11 5\" stroke=\"#009BF3\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n {{ entry.showAnalysis ? 'Hide the full analysis' : 'Show the full analysis' }}\r\n </div>\r\n <div *ngIf=\"entry.showAnalysis && entry.analysis\" class=\"mt-3\">\r\n <div class=\"analysis-row d-flex mb-4\">\r\n <span class=\"dot analysis-dot me-3\"></span>\r\n <div class=\"timingtext fw-semibold\">\r\n <span class=\"analysis-label timingtext fw-semibold me-3\">CAUSE</span>{{ entry.analysis.cause }}\r\n </div>\r\n </div>\r\n <div class=\"analysis-row d-flex mb-4\">\r\n <span class=\"dot analysis-dot me-3\"></span>\r\n <div class=\"timingtext fw-semibold\">\r\n <span class=\"analysis-label timingtext fw-semibold me-3\">PROOF</span>{{ entry.analysis.proof }}\r\n </div>\r\n </div>\r\n <div class=\"analysis-row d-flex mb-4\">\r\n <span class=\"dot analysis-dot me-3\"></span>\r\n <div class=\"timingtext fw-semibold\">\r\n <span class=\"analysis-label timingtext fw-semibold me-3\">FIX</span>{{ entry.analysis.fix }}\r\n </div>\r\n </div>\r\n <div class=\"analysis-row d-flex\">\r\n <span class=\"dot analysis-dot me-3\"></span>\r\n <div class=\"timingtext fw-semibold\">\r\n <span class=\"analysis-label timingtext fw-semibold me-3\">NOTES</span>{{ entry.analysis.notes }}\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n </div>\r\n </div>\r\n\r\n <!-- Issue identification, inside the child panel. Icons are copied\r\n from the V1 tab so the two tabs render identically. Only the\r\n live cycle carries it - a closed one has nothing to answer -\r\n so it still appears at most once per parent. -->\r\n <div *ngIf=\"showIssuePicker && isIdentifyChild(child)\" class=\"investigation fw-semibold mt-5\">\r\n Kindly choose the option below that corresponds to the issue you are\r\n experiencing in the store.\r\n <ul class=\"list-unstyled px-4\">\r\n <li class=\"py-4 cursor-pointer\" (click)=\"choosenIssue('Internet Issues')\">\r\n <ng-container *ngTemplateOutlet=\"internetIcon\"></ng-container> <span class=\"px-3\">Internet Issues</span>\r\n </li>\r\n <li class=\"py-4 cursor-pointer\" (click)=\"choosenIssue('Camera Issues')\">\r\n <ng-container *ngTemplateOutlet=\"cameraIcon\"></ng-container> <span class=\"px-3\">Camera Issues</span>\r\n </li>\r\n <li class=\"py-4 cursor-pointer\" (click)=\"choosenIssue('System Issues')\">\r\n <ng-container *ngTemplateOutlet=\"systemIcon\"></ng-container> <span class=\"px-3\">System Issues</span>\r\n </li>\r\n <li class=\"py-4 cursor-pointer\" (click)=\"choosenIssue('Store Operation Issues')\">\r\n <ng-container *ngTemplateOutlet=\"storeIcon\"></ng-container> <span class=\"px-3\">Store Operation Issues</span>\r\n </li>\r\n <li class=\"py-4 cursor-pointer\" (click)=\"choosenIssue('Application Issues')\">\r\n <ng-container *ngTemplateOutlet=\"appIcon\"></ng-container> <span class=\"px-3\">Application Issues</span>\r\n </li>\r\n </ul>\r\n </div>\r\n\r\n <div *ngIf=\"showIssueDetail && isIdentifyChild(child)\" class=\"mt-5\">\r\n <div class=\"openedissue d-flex justify-content-between align-items-center\">\r\n <span class=\"profile-label fw-semibold\">\r\n <ng-container *ngIf=\"selectedIssue === 'Internet Issues'\" [ngTemplateOutlet]=\"internetIcon\"></ng-container>\r\n <ng-container *ngIf=\"selectedIssue === 'Camera Issues'\" [ngTemplateOutlet]=\"cameraIcon\"></ng-container>\r\n <ng-container *ngIf=\"selectedIssue === 'System Issues'\" [ngTemplateOutlet]=\"systemIcon\"></ng-container>\r\n <ng-container *ngIf=\"selectedIssue === 'Store Operation Issues'\" [ngTemplateOutlet]=\"storeIcon\"></ng-container>\r\n <ng-container *ngIf=\"selectedIssue === 'Application Issues'\" [ngTemplateOutlet]=\"appIcon\"></ng-container>\r\n <span class=\"ms-2\">{{ selectedIssue }}</span>\r\n </span>\r\n <div (click)=\"choosenIssue('')\" class=\"maincard-content bg-white px-3 py-2 cursor-pointer\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\">\r\n <path d=\"M12.8327 6.99935H1.16602M1.16602 6.99935L6.99935 12.8327M1.16602 6.99935L6.99935 1.16602\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </div>\r\n </div>\r\n\r\n <div class=\"maincard-content w-100 mt-2 px-4 py-2 pb-4\">\r\n <div class=\"maincard-label fw-semibold py-2\">Please select the relevant problem facing from the following</div>\r\n <div *ngFor=\"let issue of secondaryIssues; let index = index\"\r\n class=\"maincard-content d-flex justify-content-between align-items-center w-100 mt-2 px-4 py-4 cursor-pointer\"\r\n (click)=\"toggleCheckbox(index)\">\r\n <div class=\"d-flex justify-content-between align-items-center\">\r\n <span><img class=\"pe-3\" src=\"./assets/tango/Images/Featured icon.png\"></span>\r\n <span class=\"headingtext\">{{ issue.name }}</span>\r\n </div>\r\n <div class=\"roundedcheck d-flex align-items-center\">\r\n <input type=\"checkbox\" [checked]=\"issue.checked\" class=\"p-0\">\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Hibernation + comment row, copied from the V1 tab\r\n (ticket-infra.component.html:333) so both read the same. -->\r\n <div class=\"form-group pt-6\">\r\n <label for=\"hibernationV2\" class=\"maincard-label fw-semibold mb-2\">Hibernation (in days) *</label>\r\n <div class=\"w-250px position-relative\">\r\n <div class=\"position-absolute translate-middle-y top-50 me-5 ps-3 ticketDays\">\r\n <span class=\"svg-icon toggle-off svg-icon-1\" [ngClass]=\"hibernationDays === 0 ? 'pe-none' : ''\" (click)=\"decreaseHibernation()\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"21\" height=\"20\" viewBox=\"0 0 21 20\" fill=\"none\">\r\n <path d=\"M4.66602 10H16.3327\" stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n <input type=\"text\" class=\"form-control\" id=\"hibernationV2\" style=\"text-align: center;\"\r\n [value]=\"hibernationDays\" placeholder=\"0\" readonly />\r\n <div class=\"position-absolute translate-middle-y top-50 end-0 me-3\">\r\n <span class=\"svg-icon toggle-on svg-icon-1 ticketDays\" (click)=\"increaseHibernation()\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"21\" height=\"20\" viewBox=\"0 0 21 20\" fill=\"none\">\r\n <path d=\"M10.4993 4.1665V15.8332M4.66602 9.99984H16.3327\" stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- The paperclip is inert: V1 posts to uploadAttachments/, and there\r\n is nowhere to upload to while the data is mocked. -->\r\n <div class=\"d-flex justify-content-between align-items-center mt-10 mb-5\">\r\n <input class=\"form-control\" type=\"text\" [(ngModel)]=\"comments\" placeholder=\"Add your comments..\">\r\n <button type=\"button\" class=\"cursor-pointer btn btn-default btn-outline 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 d=\"M17.8666 9.20835L10.2082 16.8667C9.27005 17.8049 7.99757 18.332 6.67075 18.332C5.34393 18.332 4.07145 17.8049 3.13325 16.8667C2.19505 15.9285 1.66797 14.656 1.66797 13.3292C1.66797 12.0024 2.19505 10.7299 3.13325 9.79168L10.7916 2.13335C11.4171 1.50788 12.2654 1.15649 13.1499 1.15649C14.0345 1.15649 14.8828 1.50788 15.5082 2.13335C16.1337 2.75882 16.4851 3.60713 16.4851 4.49168C16.4851 5.37623 16.1337 6.22455 15.5082 6.85002L7.84158 14.5083C7.52885 14.8211 7.10469 14.9968 6.66242 14.9968C6.22014 14.9968 5.79598 14.8211 5.48325 14.5083C5.17051 14.1956 4.99482 13.7715 4.99482 13.3292C4.99482 12.8869 5.17051 12.4627 5.48325 12.15L12.5582 5.08335\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </button>\r\n <button type=\"button\" class=\"btn btn-primary ms-3\" [disabled]=\"!canSubmitIssue\" (click)=\"submitIssue()\">Submit</button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n</div>\r\n\r\n<!-- Option icons, defined once because each is used twice: in the option list\r\n and again in the chosen-issue bar. Paths are copied verbatim from\r\n ticket-infra.component.html so the two tabs match pixel for pixel. -->\r\n<ng-template #internetIcon>\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M21 12C21 7.0293 16.9707 3 12 3C7.0293 3 3 7.0293 3 12C3 16.9707 7.0293 21 12 21\" fill=\"white\" />\r\n <path d=\"M12.9 3.04504C12.9 3.04504 15.6 6.60004 15.6 12L12.9 3.04504ZM11.1 20.955C11.1 20.955 8.4 17.4 8.4 12C8.4 6.60004 11.1 3.04504 11.1 3.04504M3.567 15.15H12H3.567ZM3.567 8.85004H20.433H3.567Z\" fill=\"white\" />\r\n <path d=\"M20.8911 17.3252C21.3357 17.5988 21.3078 18.2639 20.8506 18.3161L18.5403 18.578L17.5044 20.6588C17.2992 21.0719 16.6647 20.8694 16.5594 20.3582L15.4299 14.8538C15.3408 14.4218 15.7296 14.15 16.1049 14.3813L20.8911 17.3252Z\" fill=\"white\" />\r\n <path d=\"M20.25 12C20.25 12.4142 20.5858 12.75 21 12.75C21.4142 12.75 21.75 12.4142 21.75 12H20.25ZM12 21.75C12.4142 21.75 12.75 21.4142 12.75 21C12.75 20.5858 12.4142 20.25 12 20.25V21.75ZM13.4973 2.59142C13.2467 2.26156 12.7762 2.19725 12.4464 2.44778C12.1165 2.6983 12.0522 3.1688 12.3027 3.49866L13.4973 2.59142ZM14.85 12C14.85 12.4143 15.1858 12.75 15.6 12.75C16.0142 12.75 16.35 12.4143 16.35 12H14.85ZM10.5027 21.4087C10.7533 21.7385 11.2238 21.8028 11.5536 21.5523C11.8835 21.3018 11.9478 20.8313 11.6973 20.5014L10.5027 21.4087ZM11.6973 3.49866C11.9478 3.1688 11.8835 2.6983 11.5536 2.44778C11.2238 2.19725 10.7533 2.26156 10.5027 2.59142L11.6973 3.49866ZM3.567 14.4C3.15279 14.4 2.817 14.7358 2.817 15.15C2.817 15.5643 3.15279 15.9 3.567 15.9V14.4ZM12 15.9C12.4142 15.9 12.75 15.5643 12.75 15.15C12.75 14.7358 12.4142 14.4 12 14.4V15.9ZM3.567 8.10004C3.15279 8.10004 2.817 8.43583 2.817 8.85004C2.817 9.26426 3.15279 9.60004 3.567 9.60004V8.10004ZM20.433 9.60004C20.8472 9.60004 21.183 9.26426 21.183 8.85004C21.183 8.43583 20.8472 8.10004 20.433 8.10004V9.60004ZM20.8911 17.3252L21.2842 16.6865L21.284 16.6864L20.8911 17.3252ZM20.8506 18.3161L20.9351 19.0613L20.9357 19.0613L20.8506 18.3161ZM18.5403 18.578L18.4558 17.8328L18.0506 17.8787L17.8689 18.2438L18.5403 18.578ZM17.5044 20.6588L16.833 20.3246L16.8327 20.3252L17.5044 20.6588ZM16.5594 20.3582L15.8247 20.509L15.8248 20.5095L16.5594 20.3582ZM15.4299 14.8538L16.1646 14.703L16.1644 14.7023L15.4299 14.8538ZM16.1049 14.3813L15.7114 15.0198L15.712 15.0201L16.1049 14.3813ZM21.75 12C21.75 6.61509 17.3849 2.25 12 2.25V3.75C16.5565 3.75 20.25 7.44351 20.25 12H21.75ZM12 2.25C6.61509 2.25 2.25 6.61509 2.25 12H3.75C3.75 7.44351 7.44351 3.75 12 3.75V2.25ZM2.25 12C2.25 17.3849 6.61509 21.75 12 21.75V20.25C7.44351 20.25 3.75 16.5565 3.75 12H2.25ZM12.9 3.04504C12.3027 3.49866 12.3026 3.49846 12.3024 3.49828C12.3024 3.49823 12.3023 3.49806 12.3022 3.49797C12.3021 3.49779 12.302 3.49767 12.3019 3.4976C12.3018 3.49746 12.3019 3.49753 12.3021 3.49781C12.3025 3.49838 12.3036 3.4998 12.3053 3.50206C12.3086 3.50658 12.3144 3.51447 12.3225 3.52567C12.3387 3.54809 12.3641 3.58375 12.3973 3.63226C12.4638 3.72929 12.5616 3.87752 12.6805 4.07361C12.9183 4.46606 13.2393 5.04863 13.5614 5.79478C14.2061 7.28837 14.85 9.42526 14.85 12H16.35C16.35 9.17483 15.6439 6.83422 14.9386 5.20031C14.5857 4.38271 14.2317 3.73902 13.9633 3.29616C13.829 3.0746 13.7159 2.90291 13.6347 2.78443C13.5941 2.72518 13.5615 2.6792 13.5381 2.6469C13.5265 2.63075 13.5171 2.61802 13.5102 2.60876C13.5068 2.60413 13.504 2.60036 13.5018 2.59747C13.5007 2.59602 13.4998 2.5948 13.4991 2.59379C13.4987 2.59329 13.4983 2.59284 13.498 2.59244C13.4979 2.59224 13.4977 2.59199 13.4976 2.59189C13.4974 2.59165 13.4973 2.59142 12.9 3.04504ZM11.1 20.955C11.6973 20.5014 11.6974 20.5016 11.6976 20.5018C11.6976 20.5019 11.6977 20.502 11.6978 20.5021C11.6979 20.5023 11.698 20.5024 11.6981 20.5025C11.6982 20.5026 11.6981 20.5026 11.6979 20.5023C11.6975 20.5017 11.6964 20.5003 11.6948 20.498C11.6914 20.4935 11.6856 20.4856 11.6775 20.4744C11.6613 20.452 11.6359 20.4163 11.6027 20.3678C11.5362 20.2708 11.4384 20.1226 11.3195 19.9265C11.0817 19.534 10.7607 18.9515 10.4386 18.2053C9.79388 16.7117 9.15 14.5748 9.15 12H7.65C7.65 14.8253 8.35613 17.1659 9.06142 18.7998C9.41434 19.6174 9.76833 20.2611 10.0367 20.7039C10.171 20.9255 10.2841 21.0972 10.3653 21.2157C10.4059 21.2749 10.4385 21.3209 10.4619 21.3532C10.4735 21.3693 10.4829 21.3821 10.4898 21.3913C10.4932 21.396 10.496 21.3997 10.4982 21.4026C10.4993 21.4041 10.5002 21.4053 10.5009 21.4063C10.5013 21.4068 10.5017 21.4073 10.502 21.4076C10.5021 21.4078 10.5023 21.4081 10.5024 21.4082C10.5026 21.4084 10.5027 21.4087 11.1 20.955ZM9.15 12C9.15 9.42526 9.79388 7.28837 10.4386 5.79478C10.7607 5.04863 11.0817 4.46606 11.3195 4.07361C11.4384 3.87752 11.5362 3.72929 11.6027 3.63226C11.6359 3.58375 11.6613 3.54809 11.6775 3.52567C11.6856 3.51447 11.6914 3.50658 11.6948 3.50206C11.6964 3.4998 11.6975 3.49838 11.6979 3.49781C11.6981 3.49753 11.6982 3.49746 11.6981 3.4976C11.698 3.49767 11.6979 3.49779 11.6978 3.49797C11.6977 3.49806 11.6976 3.49823 11.6976 3.49828C11.6974 3.49846 11.6973 3.49866 11.1 3.04504C10.5027 2.59142 10.5026 2.59165 10.5024 2.59189C10.5023 2.59199 10.5021 2.59224 10.502 2.59244C10.5017 2.59284 10.5013 2.59329 10.5009 2.59379C10.5002 2.5948 10.4993 2.59602 10.4982 2.59747C10.496 2.60036 10.4932 2.60413 10.4898 2.60876C10.4829 2.61802 10.4735 2.63075 10.4619 2.6469C10.4385 2.6792 10.4059 2.72518 10.3653 2.78443C10.2841 2.90291 10.171 3.0746 10.0367 3.29616C9.76833 3.73902 9.41434 4.38271 9.06142 5.20031C8.35613 6.83422 7.65 9.17483 7.65 12H9.15ZM3.567 15.9H12V14.4H3.567V15.9ZM3.567 9.60004H20.433V8.10004H3.567V9.60004ZM20.498 17.9639C20.4792 17.9524 20.4575 17.9252 20.4597 17.8727C20.4609 17.8434 20.4715 17.7772 20.5297 17.7054C20.5961 17.6235 20.6889 17.5797 20.7655 17.5709L20.9357 19.0613C21.6167 18.9835 21.9384 18.4179 21.9584 17.9346C21.9776 17.4682 21.7476 16.9717 21.2842 16.6865L20.498 17.9639ZM20.7661 17.5709L18.4558 17.8328L18.6248 19.3232L20.9351 19.0613L20.7661 17.5709ZM17.8689 18.2438L16.833 20.3246L18.1758 20.9931L19.2117 18.9123L17.8689 18.2438ZM16.8327 20.3252C16.8668 20.2565 16.9395 20.1839 17.0398 20.1492C17.1277 20.1188 17.194 20.1316 17.2221 20.1405C17.272 20.1564 17.2896 20.1857 17.294 20.2069L15.8248 20.5095C15.9345 21.0419 16.322 21.4281 16.7668 21.5697C17.2286 21.7168 17.8707 21.6073 18.1761 20.9925L16.8327 20.3252ZM17.2941 20.2074L16.1646 14.703L14.6952 15.0046L15.8247 20.509L17.2941 20.2074ZM16.1644 14.7023C16.1723 14.7406 16.1666 14.883 16.0232 14.9833C15.88 15.0835 15.7446 15.0402 15.7114 15.0198L16.4984 13.7428C16.0899 13.4911 15.5724 13.468 15.1633 13.7543C14.754 14.0407 14.5984 14.535 14.6954 15.0053L16.1644 14.7023ZM15.712 15.0201L20.4982 17.964L21.284 16.6864L16.4978 13.7425L15.712 15.0201Z\" fill=\"#475467\" />\r\n </svg>\r\n</ng-template>\r\n\r\n<ng-template #cameraIcon>\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"20\" viewBox=\"0 0 24 20\" fill=\"none\">\r\n <path d=\"M23 17C23 17.5304 22.7893 18.0391 22.4142 18.4142C22.0391 18.7893 21.5304 19 21 19H3C2.46957 19 1.96086 18.7893 1.58579 18.4142C1.21071 18.0391 1 17.5304 1 17V6C1 5.46957 1.21071 4.96086 1.58579 4.58579C1.96086 4.21071 2.46957 4 3 4H7L9 1H15L17 4H21C21.5304 4 22.0391 4.21071 22.4142 4.58579C22.7893 4.96086 23 5.46957 23 6V17Z\"\r\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n <path d=\"M12 15C14.2091 15 16 13.2091 16 11C16 8.79086 14.2091 7 12 7C9.79086 7 8 8.79086 8 11C8 13.2091 9.79086 15 12 15Z\"\r\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n</ng-template>\r\n\r\n<ng-template #systemIcon>\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"14\" viewBox=\"0 0 20 14\" fill=\"none\">\r\n <path d=\"M12 2V9H2V2H12ZM2 0C0.896875 0 0 0.896875 0 2V9C0 10.1031 0.896875 11 2 11H5.66563L5.33125 12H3C2.44688 12 2 12.4469 2 13C2 13.5531 2.44688 14 3 14H11C11.5531 14 12 13.5531 12 13C12 12.4469 11.5531 12 11 12H8.66562L8.33125 11H12C13.1031 11 14 10.1031 14 9V2C14 0.896875 13.1031 0 12 0H2ZM16.5 0C15.6719 0 15 0.671875 15 1.5V12.5C15 13.3281 15.6719 14 16.5 14H18.5C19.3281 14 20 13.3281 20 12.5V1.5C20 0.671875 19.3281 0 18.5 0H16.5ZM17 2H18C18.275 2 18.5 2.225 18.5 2.5C18.5 2.775 18.275 3 18 3H17C16.725 3 16.5 2.775 16.5 2.5C16.5 2.225 16.725 2 17 2ZM16.5 4.5C16.5 4.225 16.725 4 17 4H18C18.275 4 18.5 4.225 18.5 4.5C18.5 4.775 18.275 5 18 5H17C16.725 5 16.5 4.775 16.5 4.5ZM17.5 9.5C17.7652 9.5 18.0196 9.60536 18.2071 9.79289C18.3946 9.98043 18.5 10.2348 18.5 10.5C18.5 10.7652 18.3946 11.0196 18.2071 11.2071C18.0196 11.3946 17.7652 11.5 17.5 11.5C17.2348 11.5 16.9804 11.3946 16.7929 11.2071C16.6054 11.0196 16.5 10.7652 16.5 10.5C16.5 10.2348 16.6054 9.98043 16.7929 9.79289C16.9804 9.60536 17.2348 9.5 17.5 9.5Z\"\r\n fill=\"#475467\" />\r\n </svg>\r\n</ng-template>\r\n\r\n<ng-template #storeIcon>\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M3.08995 6.88369L3.02401 6.98669C2.30358 8.25557 3.06101 9.87945 4.46464 10.0662C4.58627 10.0811 4.70112 10.0892 4.8145 10.0892C5.55255 10.0892 6.20523 9.77229 6.65953 9.27917L7.21286 8.67854L7.76432 9.28089C8.21367 9.77171 8.8652 10.0892 9.60776 10.0892C10.3471 10.0892 11.0022 9.77137 11.4512 9.28089L12.0044 8.67665L12.5576 9.28089C13.0066 9.77137 13.6617 10.0892 14.401 10.0892C15.1404 10.0892 15.7954 9.77137 16.2445 9.28089L16.7977 8.67665L17.3508 9.28089C17.7999 9.77137 18.4549 10.0892 19.1943 10.0892C19.3041 10.0892 19.4223 10.0811 19.5433 10.0663C20.9772 9.87168 21.7355 8.16387 20.9155 6.88419C20.9154 6.88413 20.9154 6.88407 20.9154 6.88402L18.8056 3.59429L18.8056 3.59429L18.8046 3.59282C18.7582 3.52002 18.6649 3.46423 18.5584 3.46423H5.44307C5.3365 3.46423 5.24326 3.52002 5.19681 3.59282L5.19619 3.59379L3.08995 6.88369ZM4.81818 12.7499C4.71644 12.7499 4.616 12.7468 4.5169 12.741V16.6428V18.9642C4.5169 19.8211 5.22663 20.5357 6.11942 20.5357H17.882C18.7748 20.5357 19.4845 19.8211 19.4845 18.9642V16.6428V12.7415C19.3874 12.747 19.2893 12.7499 19.1906 12.7499C19.0022 12.7499 18.8157 12.7398 18.632 12.7202V16.6428V17.3928H17.882H6.11942H5.36942V16.6428V12.721C5.18866 12.74 5.00472 12.7499 4.81818 12.7499Z\"\r\n stroke=\"#475467\" stroke-width=\"1.5\" />\r\n </svg>\r\n</ng-template>\r\n\r\n<ng-template #appIcon>\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M8 1H1V8H8V1Z\" stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n <path d=\"M19 1H12V8H19V1Z\" stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n <path d=\"M19 12H12V19H19V12Z\" stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n <path d=\"M8 12H1V19H8V12Z\" stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n</ng-template>\r\n", styles: [".card-label{font-size:18px!important}.issuecard{flex:1 1 0;min-width:0;border-radius:10px;border:1px solid var(--Gray-200, #EAECF0);padding:16px}.issuecard label,.issuecard .label{color:var(--Black, #101828);font-size:14px;line-height:20px}.issuecard.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;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}.profile-label{font-size:12px;color:var(--Gray-500, #344054);line-height:16px}.timingtext{color:var(--Gray-500, #667085);font-size:12px;line-height:18px}.fw-bold-700{font-weight:700!important}.child-row{border-radius:10px;border:1px solid var(--Gray-200, #EAECF0);overflow:hidden}.child-head{background:#fff;gap:8px}.chevron{display:inline-flex;transition:transform .15s ease-in-out}.chevron.open{transform:rotate(90deg)}.chevron-down{display:inline-flex;transition:transform .15s ease-in-out}.chevron-down.open{transform:rotate(180deg)}.streams-pill{display:inline-flex;align-items:center;border-radius:16px;border:1px solid var(--Gray-200, #EAECF0);padding:2px 10px;white-space:nowrap}.meta-pill{display:inline-flex;align-items:center;white-space:nowrap}.cycle-id{color:var(--Black, #101828)}.dot{display:inline-block;width:6px;height:6px;border-radius:50%}.dot-amber{background:#f79009}.dot-grey{background:var(--Gray-500, #667085)}.child-body{background:var(--Gray-50, #F9FAFB)}.inner-card{border-radius:10px;border:1px solid var(--Gray-200, #EAECF0);background:#fff}.escalated-pill,.status-pill{display:inline-flex;align-items:center;border-radius:16px;font-size:10px;line-height:16px;padding:0 8px}.escalated-pill .dot,.status-pill .dot{width:5px;height:5px}.escalated-pill{background:#fffaeb;color:#b54708}.status-pill{background:var(--Gray-100, #F2F4F7);color:var(--Gray-700, #344054)}.avatar{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:50%;background:var(--Primary-25, #F6FCFF);flex-shrink:0;overflow:hidden}.avatar-logo{width:18px;height:18px;object-fit:contain}.connector{width:0;height:100%;margin-top:6px;border-left:1px solid var(--Gray-200, #EAECF0)}.meta-label{width:130px;flex-shrink:0}.meta-value{color:var(--Gray-900, #101828)}.analysis-link{color:var(--Primary-700, #009BF3)}.ticketDays{cursor:pointer}.analysis-row .analysis-dot{margin-top:7px;flex-shrink:0;background:var(--Gray-400, #98A2B3)}.analysis-row .analysis-label{letter-spacing:.04em;color:var(--Black, #101828);background:var(--Gray-100, #F2F4F7);border-radius:4px;padding:1px 6px;white-space:nowrap}.investigation{color:var(--Gray-500, #344054);font-size:15px;line-height:24px}.openedissue{border-radius:6px;background:var(--Gray-50, #F9FAFB);padding:8px 12px}.headingtext{color:var(--Gray-700, #344054)!important;font-size:15px!important;font-weight:500;line-height:20px}.roundedcheck input[type=checkbox]{width:16px!important;height:16px!important;border-radius:10px!important;-webkit-appearance:none;-moz-appearance:none;-o-appearance:none;appearance:none;border:1px solid var(--Gray-300, #D0D5DD);background:#fff;cursor:pointer}.roundedcheck input[type=checkbox]:checked{border-color:var(--Primary-700, #009BF3);background:var(--Primary-700, #009BF3);background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Cpath fill='none' stroke='%23fff' stroke-width='2' stroke-linecap='round' stroke-linejoin='round' d='M2.5 6.3l2.4 2.4 4.6-5'/%3E%3C/svg%3E\");background-repeat:no-repeat;background-position:center}\n"] }]
300
- }], ctorParameters: () => [{ type: i1.GlobalStateService }, { type: i2.TicketsService }, { type: i3.ActivatedRoute }], propDecorators: { selectedTab: [{
354
+ args: [{ selector: 'lib-ticket-infra-v2', template: "<div class=\"card\">\r\n <div class=\"card-header border-0 pt-3\">\r\n <h3 class=\"card-title align-items-start flex-column\">\r\n <span class=\"card-label mb-2\">Infra Tickets v2</span>\r\n <span *ngIf=\"headerFilter?.date?.startDate === headerFilter?.date?.endDate\" class=\"text-sub mb-2\">An overview of all the tickets for till {{ headerFilter?.date?.endDate | customDateFormat }}</span>\r\n <span *ngIf=\"headerFilter?.date?.startDate !== headerFilter?.date?.endDate\" class=\"text-sub mb-2\">An overview of all the tickets for {{ headerFilter?.date?.startDate | customDateFormat }} - {{ headerFilter?.date?.endDate | customDateFormat }}</span>\r\n </h3>\r\n <!-- Filter and Export render inert: lib-filters needs real facets, and\r\n there is nothing to export while the data is mocked. -->\r\n <div class=\"card-toolbar\">\r\n <button type=\"button\" class=\"btn btn-default mx-2 btn-outline btn-outline-default rounded-3 text-nowrap border-val\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M2.5 5H17.5M5 10H15M8.33333 15H11.6667\" stroke=\"#101828\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n <span class=\"ms-2\">Filter</span>\r\n </button>\r\n <button type=\"button\" class=\"btn btn-default mx-2 btn-outline btn-outline-default rounded-3 text-nowrap border-val\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M17.5 12.5V15.8333C17.5 16.2754 17.3244 16.6993 17.0118 17.0118C16.6993 17.3244 16.2754 17.5 15.8333 17.5H4.16667C3.72464 17.5 3.30072 17.3244 2.98816 17.0118C2.67559 16.6993 2.5 16.2754 2.5 15.8333V12.5M14.1667 6.66667L10 2.5M10 2.5L5.83333 6.66667M10 2.5V12.5\"\r\n stroke=\"#101828\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n <span class=\"ms-2\">Export</span>\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <div class=\"card-body\">\r\n <!-- Shimmer while either call is in flight. The styles are the shell's\r\n (styles.scss `.loader`), so the .loader > .shimmer > .wrapper > .stroke\r\n nesting has to stay as it is here. -->\r\n <div *ngIf=\"loading\" class=\"row loader d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <ng-container *ngIf=\"!loading\">\r\n <div class=\"d-flex justify-content-between gap-3 mb-7\">\r\n <div *ngFor=\"let issue of ticketCard\" class=\"issuecard\">\r\n <div><span class=\"title\">{{ issue.count }}</span></div>\r\n <span class=\"label fw-semibold\">{{ issue.name }}</span>\r\n </div>\r\n </div>\r\n\r\n <div class=\"maincard-content\">\r\n <div class=\"row p-10\">\r\n\r\n <!-- Left: unchanged from the Tickets tab. -->\r\n <div class=\"col-sm-6\">\r\n <div *ngFor=\"let data of ticketList; let index = index\" class=\"issuecard w-100 mb-4 cursor-pointer\"\r\n (click)=\"showTicket(index)\" [ngClass]=\"selectCard === index ? 'active' : ''\">\r\n\r\n <div class=\"maincard-label fw-bold d-flex justify-content-between mb-5\">\r\n <span><img src=\"./assets/tango/Images/ticket.svg\"> {{ data.ticketId }}</span>\r\n <div class=\"contenttext d-flex justify-content-center align-items-center text-center fw-semibold px-3\">\r\n <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\"\r\n stroke=\"#667085\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n <span class=\"mx-1\">{{ data.createdAt | date: 'dd-MM-yyyy' }}</span>\r\n <span *ngIf=\"data.issueClosedDate\" class=\"contenttext fw-semibold pe-3\">- {{ data.issueClosedDate | date: 'dd-MM-yyyy' }}</span>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"cardMessage(data)\" class=\"mb-5 contenttext fw-semibold\">{{ cardMessage(data) }}</div>\r\n <div *ngIf=\"!cardMessage(data)\" class=\"mb-5 contenttext fw-semibold\">\r\n Store is currently encountering a <span class=\"fw-bold-700\">{{ data.primaryIssue }}</span> which is\r\n <span class=\"fw-bold-700\">{{ data.secondaryIssue }}.</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 src=\"./assets/tango/Images/userProfile.svg\" alt=\"\">\r\n </div>\r\n <div class=\"d-flex justify-content-between\">\r\n <span class=\"contenttext fw-semibold px-3\">\r\n <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\"\r\n stroke=\"#667085\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg><span class=\"mx-1\">{{ data.comments }}</span> comments\r\n </span>\r\n <span [ngClass]=\"statusBadge(data.status)\">{{ data.status | titlecase }}</span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Right: the selected parent, with its cycle children as an accordion -->\r\n <!-- Only this column reloads when a card is clicked, so it\r\n shimmers on its own rather than blanking the whole tab. -->\r\n <div *ngIf=\"detailLoading\" class=\"col-sm-6\">\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>\r\n </div>\r\n\r\n <div *ngIf=\"!detailLoading && ticketInfo\" class=\"col-sm-6\">\r\n <div class=\"maincard-label fw-bold d-flex justify-content-between align-items-center mb-5\">\r\n <span><img src=\"./assets/tango/Images/ticket.svg\"><span class=\"mx-2\">{{ ticketInfo.ticketId }}</span></span>\r\n </div>\r\n\r\n <!-- Cycle children. Rows open independently. -->\r\n <div *ngFor=\"let child of ticketInfo.children\" class=\"child-row mb-4\">\r\n <div class=\"child-head d-flex justify-content-between align-items-center cursor-pointer px-4 py-3\" (click)=\"toggleChild(child)\">\r\n <div class=\"d-flex align-items-center flex-wrap\">\r\n <span class=\"chevron me-3\" [class.open]=\"child.expanded\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\">\r\n <path d=\"M5 2.5L9.5 7L5 11.5\" stroke=\"#101828\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <span class=\"meta-pill cycle-id timingtext fw-semibold me-3\">{{ child.cycleId }}</span>\r\n <span class=\"streams-pill timingtext me-3\" [class.clickable]=\"child.streamsDown\"\r\n (click)=\"openStreams(child, $event)\"\r\n [title]=\"child.streamsDown ? 'See which streams were down' : ''\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"14\" height=\"14\" viewBox=\"0 0 24 20\" fill=\"none\">\r\n <path d=\"M23 17C23 17.5304 22.7893 18.0391 22.4142 18.4142C22.0391 18.7893 21.5304 19 21 19H3C2.46957 19 1.96086 18.7893 1.58579 18.4142C1.21071 18.0391 1 17.5304 1 17V6C1 5.46957 1.21071 4.96086 1.58579 4.58579C1.96086 4.21071 2.46957 4 3 4H7L9 1H15L17 4H21C21.5304 4 22.0391 4.21071 22.4142 4.58579C22.7893 4.96086 23 5.46957 23 6V17Z\"\r\n stroke=\"#F04438\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n <span class=\"fw-bold mx-1\">{{ child.streamsDown }}</span> streams down\r\n </span>\r\n </div>\r\n <span [ngClass]=\"statusBadge(child.status)\" class=\"flex-shrink-0\">{{ child.status | titlecase }}</span>\r\n </div>\r\n\r\n <div *ngIf=\"child.expanded\" class=\"child-body px-5 py-5\">\r\n <div class=\"inner-card px-5 py-5\">\r\n <div *ngFor=\"let entry of child.entries; let last = last; let first = first\" class=\"d-flex\" [class.pt-5]=\"!first\">\r\n <div class=\"d-flex flex-column align-items-center me-4\">\r\n <!-- Both avatars are V1's, so the two tabs read alike: the Tango\r\n peak is inline there too, and cannot 404 the way an asset can. -->\r\n <svg *ngIf=\"isTangoAuthor(entry.author); else personIcon\" class=\"avatar-logo\" viewBox=\"0 0 40 40\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect width=\"40\" height=\"40\" rx=\"20\" fill=\"#EAF8FF\"/>\r\n <path d=\"M30.4932 28.3351L29.6867 27.5286L20.9965 18.8384L23.5744 16.2605L24.1921 15.6416C24.251 15.5818 24.2843 15.5014 24.2847 15.4174C24.2845 15.3759 24.2761 15.3349 24.26 15.2966C24.2439 15.2584 24.2204 15.2237 24.1909 15.1945L23.572 14.5756L20.8381 11.8368L20.2192 11.218C20.19 11.1882 20.1551 11.1645 20.1166 11.1484C20.0781 11.1323 20.0368 11.124 19.995 11.124C19.9533 11.124 19.912 11.1323 19.8735 11.1484C19.835 11.1645 19.8001 11.1882 19.7709 11.218L19.152 11.8381L15.8016 15.1884C15.7719 15.2176 15.7483 15.2523 15.7322 15.2907C15.7161 15.3291 15.7077 15.3703 15.7077 15.412C15.7077 15.4536 15.7161 15.4948 15.7322 15.5332C15.7483 15.5716 15.7719 15.6064 15.8016 15.6355L19.0021 18.8372L10.3107 27.5286L9.50787 28.3351C9.44834 28.3941 9.41461 28.4743 9.41406 28.5581C9.41441 28.6391 9.4453 28.717 9.50056 28.7762C9.53007 28.8077 9.56573 28.8328 9.60533 28.85C9.64494 28.8672 9.68765 28.8761 9.73082 28.8761H17.5487C17.6326 28.8757 17.713 28.8423 17.7723 28.7829C17.8316 28.7236 17.8651 28.6432 17.8654 28.5593V27.782C17.8654 27.6979 17.8321 27.6172 17.7727 27.5576C17.7134 27.498 17.6328 27.4644 17.5487 27.464H12.3709L19.9987 19.8362L27.6265 27.464H22.4036C22.3195 27.4644 22.2389 27.498 22.1796 27.5576C22.1202 27.6172 22.0869 27.6979 22.0869 27.782V28.5593C22.0867 28.601 22.0949 28.6424 22.111 28.6809C22.1272 28.7194 22.1508 28.7543 22.1807 28.7835C22.2399 28.8426 22.32 28.8758 22.4036 28.8761H30.269C30.3124 28.8762 30.3553 28.8674 30.3952 28.8502C30.435 28.833 30.4708 28.8078 30.5005 28.7762C30.5574 28.7164 30.5885 28.6367 30.5872 28.5542C30.5858 28.4716 30.552 28.393 30.4932 28.3351ZM19.9938 12.9906L22.4219 15.4187L19.9999 17.8407L17.5718 15.4126L19.9938 12.9906Z\" fill=\"#00A3FF\"/>\r\n </svg>\r\n <ng-template #personIcon>\r\n <img class=\"avatar-logo\" src=\"./assets/tango/Images/userProfile.svg\" alt=\"\">\r\n </ng-template>\r\n <div *ngIf=\"!last\" class=\"connector\"></div>\r\n </div>\r\n\r\n <div class=\"w-100 pb-2\">\r\n <div class=\"d-flex align-items-center flex-wrap\">\r\n <span class=\"maincard-label fw-bold\">{{ entry.author }}</span>\r\n <span *ngIf=\"entry.at\" class=\"timingtext mx-3\">{{ entry.at }}</span>\r\n <!-- The agent's verdict, whatever it is - not only escalated.\r\n Absent when the agent never reported. -->\r\n <span *ngIf=\"entry.agentStatus\" [ngClass]=\"agentPillClass(entry)\"\r\n class=\"timingtext fw-semibold ms-auto text-uppercase\"><span class=\"dot me-2\"\r\n [class.dot-amber]=\"entry.escalated\"\r\n [class.dot-grey]=\"!entry.escalated\"></span>{{ agentLabel(entry) }}</span>\r\n </div>\r\n\r\n <div *ngIf=\"entry.text\" class=\"contenttext fw-semibold mt-2\">{{ entry.text }}</div>\r\n\r\n <!-- Analysis entry: label/value pairs, then the expander -->\r\n <ng-container *ngIf=\"entry.kind === 'analysis'\">\r\n <div class=\"d-flex mt-3\">\r\n <span class=\"meta-label timingtext fw-semibold\">ISSUE CATEGORY</span>\r\n <span class=\"meta-value contenttext fw-semibold\">{{ entry.issueCategory }}</span>\r\n </div>\r\n <div class=\"d-flex mt-2\">\r\n <span class=\"meta-label timingtext fw-semibold\">ROOT CAUSE</span>\r\n <span class=\"meta-value contenttext fw-semibold\">{{ entry.rootCause }}</span>\r\n </div>\r\n <div class=\"analysis-link contenttext fw-semibold cursor-pointer mt-4\" (click)=\"toggleAnalysis(entry)\">\r\n <span class=\"chevron-down me-2\" [class.open]=\"entry.showAnalysis\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\" viewBox=\"0 0 14 14\" fill=\"none\">\r\n <path d=\"M3 5L7 9.5L11 5\" stroke=\"#009BF3\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n {{ entry.showAnalysis ? 'Hide the full analysis' : 'Show the full analysis' }}\r\n </div>\r\n <div *ngIf=\"entry.showAnalysis && entry.analysis\" class=\"mt-3\">\r\n <div class=\"analysis-row d-flex mb-4\">\r\n <span class=\"dot analysis-dot me-3\"></span>\r\n <div class=\"timingtext fw-semibold\">\r\n <span class=\"analysis-label timingtext fw-semibold me-3\">CAUSE</span>{{ entry.analysis.cause }}\r\n </div>\r\n </div>\r\n <div class=\"analysis-row d-flex mb-4\">\r\n <span class=\"dot analysis-dot me-3\"></span>\r\n <div class=\"timingtext fw-semibold\">\r\n <span class=\"analysis-label timingtext fw-semibold me-3\">PROOF</span>{{ entry.analysis.proof }}\r\n </div>\r\n </div>\r\n <div class=\"analysis-row d-flex mb-4\">\r\n <span class=\"dot analysis-dot me-3\"></span>\r\n <div class=\"timingtext fw-semibold\">\r\n <span class=\"analysis-label timingtext fw-semibold me-3\">FIX</span>{{ entry.analysis.fix }}\r\n </div>\r\n </div>\r\n <div class=\"analysis-row d-flex\">\r\n <span class=\"dot analysis-dot me-3\"></span>\r\n <div class=\"timingtext fw-semibold\">\r\n <span class=\"analysis-label timingtext fw-semibold me-3\">NOTES</span>{{ entry.analysis.notes }}\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n <!-- Which side wrote this, under the name. Only on stored\r\n rows: the open / closed notes and the agent card speak\r\n for themselves. -->\r\n <div *ngIf=\"entry.authorType\" class=\"profile-label mt-1\">{{ replyLabel(entry) }}</div>\r\n\r\n <!-- A stored identification, laid out from its reasons rather\r\n than summarised into a sentence. The Tango rows written\r\n alongside it - the fix steps and the status-check timer -\r\n are filtered out by the API, so one submission is one row. -->\r\n <ng-container *ngIf=\"entry.kind === 'activity' && entry.activityKind === 'issueIdentified'\">\r\n <div *ngFor=\"let reason of entry.reasons\">\r\n <div class=\"contenttext fw-semibold mt-3\">\r\n We're currently encountering an <span class=\"fw-bold-700\">{{ reason.primaryIssue }}</span>\r\n </div>\r\n <div *ngIf=\"reason.secondaryIssue.length\" class=\"mt-1\">\r\n <span class=\"investigation fw-semibold\">The following are the relevant problem facing</span>\r\n <ul class=\"profile-label mt-2\">\r\n <li *ngFor=\"let secondary of reason.secondaryIssue\">{{ secondary.name }}</li>\r\n </ul>\r\n </div>\r\n </div>\r\n <div *ngIf=\"entry.comment\" class=\"timingtext mt-2\">{{ entry.comment }}</div>\r\n </ng-container>\r\n\r\n </div>\r\n </div>\r\n\r\n <!-- Issue identification, inside the child panel. Icons are copied\r\n from the V1 tab so the two tabs render identically. Only the\r\n live cycle carries it - a closed one has nothing to answer -\r\n so it still appears at most once per parent. -->\r\n <div *ngIf=\"showIssuePicker && isIdentifyChild(child)\" class=\"investigation fw-semibold mt-5\">\r\n Kindly choose the option below that corresponds to the issue you are\r\n experiencing in the store.\r\n <ul class=\"list-unstyled px-4\">\r\n <li class=\"py-4 cursor-pointer\" (click)=\"choosenIssue('Internet Issues')\">\r\n <ng-container *ngTemplateOutlet=\"internetIcon\"></ng-container> <span class=\"px-3\">Internet Issues</span>\r\n </li>\r\n <li class=\"py-4 cursor-pointer\" (click)=\"choosenIssue('Camera Issues')\">\r\n <ng-container *ngTemplateOutlet=\"cameraIcon\"></ng-container> <span class=\"px-3\">Camera Issues</span>\r\n </li>\r\n <li class=\"py-4 cursor-pointer\" (click)=\"choosenIssue('System Issues')\">\r\n <ng-container *ngTemplateOutlet=\"systemIcon\"></ng-container> <span class=\"px-3\">System Issues</span>\r\n </li>\r\n <li class=\"py-4 cursor-pointer\" (click)=\"choosenIssue('Store Operation Issues')\">\r\n <ng-container *ngTemplateOutlet=\"storeIcon\"></ng-container> <span class=\"px-3\">Store Operation Issues</span>\r\n </li>\r\n <li class=\"py-4 cursor-pointer\" (click)=\"choosenIssue('Application Issues')\">\r\n <ng-container *ngTemplateOutlet=\"appIcon\"></ng-container> <span class=\"px-3\">Application Issues</span>\r\n </li>\r\n </ul>\r\n </div>\r\n\r\n <div *ngIf=\"showIssueDetail && isIdentifyChild(child)\" class=\"mt-5\">\r\n <div class=\"openedissue d-flex justify-content-between align-items-center\">\r\n <span class=\"profile-label fw-semibold\">\r\n <ng-container *ngIf=\"selectedIssue === 'Internet Issues'\" [ngTemplateOutlet]=\"internetIcon\"></ng-container>\r\n <ng-container *ngIf=\"selectedIssue === 'Camera Issues'\" [ngTemplateOutlet]=\"cameraIcon\"></ng-container>\r\n <ng-container *ngIf=\"selectedIssue === 'System Issues'\" [ngTemplateOutlet]=\"systemIcon\"></ng-container>\r\n <ng-container *ngIf=\"selectedIssue === 'Store Operation Issues'\" [ngTemplateOutlet]=\"storeIcon\"></ng-container>\r\n <ng-container *ngIf=\"selectedIssue === 'Application Issues'\" [ngTemplateOutlet]=\"appIcon\"></ng-container>\r\n <span class=\"ms-2\">{{ selectedIssue }}</span>\r\n </span>\r\n <div (click)=\"choosenIssue('')\" class=\"maincard-content bg-white px-3 py-2 cursor-pointer\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\">\r\n <path d=\"M12.8327 6.99935H1.16602M1.16602 6.99935L6.99935 12.8327M1.16602 6.99935L6.99935 1.16602\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </div>\r\n </div>\r\n\r\n <div class=\"maincard-content w-100 mt-2 px-4 py-2 pb-4\">\r\n <div class=\"maincard-label fw-semibold py-2\">Please select the relevant problem facing from the following</div>\r\n <div *ngFor=\"let issue of secondaryIssues; let index = index\"\r\n class=\"maincard-content d-flex justify-content-between align-items-center w-100 mt-2 px-4 py-4 cursor-pointer\"\r\n (click)=\"toggleCheckbox(index)\">\r\n <div class=\"d-flex justify-content-between align-items-center\">\r\n <span><img class=\"pe-3\" src=\"./assets/tango/Images/Featured icon.png\"></span>\r\n <span class=\"headingtext\">{{ issue.name }}</span>\r\n </div>\r\n <div class=\"roundedcheck d-flex align-items-center\">\r\n <input type=\"checkbox\" [checked]=\"issue.checked\" class=\"p-0\">\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Hibernation + comment row, copied from the V1 tab\r\n (ticket-infra.component.html:333) so both read the same. -->\r\n <div class=\"form-group pt-6\">\r\n <label for=\"hibernationV2\" class=\"maincard-label fw-semibold mb-2\">Hibernation (in days) *</label>\r\n <div class=\"w-250px position-relative\">\r\n <div class=\"position-absolute translate-middle-y top-50 me-5 ps-3 ticketDays\">\r\n <span class=\"svg-icon toggle-off svg-icon-1\" [ngClass]=\"hibernationDays === 0 ? 'pe-none' : ''\" (click)=\"decreaseHibernation()\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"21\" height=\"20\" viewBox=\"0 0 21 20\" fill=\"none\">\r\n <path d=\"M4.66602 10H16.3327\" stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n <input type=\"text\" class=\"form-control\" id=\"hibernationV2\" style=\"text-align: center;\"\r\n [value]=\"hibernationDays\" placeholder=\"0\" readonly />\r\n <div class=\"position-absolute translate-middle-y top-50 end-0 me-3\">\r\n <span class=\"svg-icon toggle-on svg-icon-1 ticketDays\" (click)=\"increaseHibernation()\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"21\" height=\"20\" viewBox=\"0 0 21 20\" fill=\"none\">\r\n <path d=\"M10.4993 4.1665V15.8332M4.66602 9.99984H16.3327\" stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- The paperclip is inert: V1 posts to uploadAttachments/, and there\r\n is nowhere to upload to while the data is mocked. -->\r\n <div class=\"d-flex justify-content-between align-items-center mt-10 mb-5\">\r\n <input class=\"form-control\" type=\"text\" [(ngModel)]=\"comments\" placeholder=\"Add your comments..\">\r\n <button type=\"button\" class=\"cursor-pointer btn btn-default btn-outline 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 d=\"M17.8666 9.20835L10.2082 16.8667C9.27005 17.8049 7.99757 18.332 6.67075 18.332C5.34393 18.332 4.07145 17.8049 3.13325 16.8667C2.19505 15.9285 1.66797 14.656 1.66797 13.3292C1.66797 12.0024 2.19505 10.7299 3.13325 9.79168L10.7916 2.13335C11.4171 1.50788 12.2654 1.15649 13.1499 1.15649C14.0345 1.15649 14.8828 1.50788 15.5082 2.13335C16.1337 2.75882 16.4851 3.60713 16.4851 4.49168C16.4851 5.37623 16.1337 6.22455 15.5082 6.85002L7.84158 14.5083C7.52885 14.8211 7.10469 14.9968 6.66242 14.9968C6.22014 14.9968 5.79598 14.8211 5.48325 14.5083C5.17051 14.1956 4.99482 13.7715 4.99482 13.3292C4.99482 12.8869 5.17051 12.4627 5.48325 12.15L12.5582 5.08335\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </button>\r\n <button type=\"button\" class=\"btn btn-primary ms-3\" [disabled]=\"!canSubmitIssue || submitting\" (click)=\"submitIssue()\">{{ submitting ? 'Submitting...' : 'Submit' }}</button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n</div>\r\n\r\n<!-- Option icons, defined once because each is used twice: in the option list\r\n and again in the chosen-issue bar. Paths are copied verbatim from\r\n ticket-infra.component.html so the two tabs match pixel for pixel. -->\r\n<ng-template #internetIcon>\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M21 12C21 7.0293 16.9707 3 12 3C7.0293 3 3 7.0293 3 12C3 16.9707 7.0293 21 12 21\" fill=\"white\" />\r\n <path d=\"M12.9 3.04504C12.9 3.04504 15.6 6.60004 15.6 12L12.9 3.04504ZM11.1 20.955C11.1 20.955 8.4 17.4 8.4 12C8.4 6.60004 11.1 3.04504 11.1 3.04504M3.567 15.15H12H3.567ZM3.567 8.85004H20.433H3.567Z\" fill=\"white\" />\r\n <path d=\"M20.8911 17.3252C21.3357 17.5988 21.3078 18.2639 20.8506 18.3161L18.5403 18.578L17.5044 20.6588C17.2992 21.0719 16.6647 20.8694 16.5594 20.3582L15.4299 14.8538C15.3408 14.4218 15.7296 14.15 16.1049 14.3813L20.8911 17.3252Z\" fill=\"white\" />\r\n <path d=\"M20.25 12C20.25 12.4142 20.5858 12.75 21 12.75C21.4142 12.75 21.75 12.4142 21.75 12H20.25ZM12 21.75C12.4142 21.75 12.75 21.4142 12.75 21C12.75 20.5858 12.4142 20.25 12 20.25V21.75ZM13.4973 2.59142C13.2467 2.26156 12.7762 2.19725 12.4464 2.44778C12.1165 2.6983 12.0522 3.1688 12.3027 3.49866L13.4973 2.59142ZM14.85 12C14.85 12.4143 15.1858 12.75 15.6 12.75C16.0142 12.75 16.35 12.4143 16.35 12H14.85ZM10.5027 21.4087C10.7533 21.7385 11.2238 21.8028 11.5536 21.5523C11.8835 21.3018 11.9478 20.8313 11.6973 20.5014L10.5027 21.4087ZM11.6973 3.49866C11.9478 3.1688 11.8835 2.6983 11.5536 2.44778C11.2238 2.19725 10.7533 2.26156 10.5027 2.59142L11.6973 3.49866ZM3.567 14.4C3.15279 14.4 2.817 14.7358 2.817 15.15C2.817 15.5643 3.15279 15.9 3.567 15.9V14.4ZM12 15.9C12.4142 15.9 12.75 15.5643 12.75 15.15C12.75 14.7358 12.4142 14.4 12 14.4V15.9ZM3.567 8.10004C3.15279 8.10004 2.817 8.43583 2.817 8.85004C2.817 9.26426 3.15279 9.60004 3.567 9.60004V8.10004ZM20.433 9.60004C20.8472 9.60004 21.183 9.26426 21.183 8.85004C21.183 8.43583 20.8472 8.10004 20.433 8.10004V9.60004ZM20.8911 17.3252L21.2842 16.6865L21.284 16.6864L20.8911 17.3252ZM20.8506 18.3161L20.9351 19.0613L20.9357 19.0613L20.8506 18.3161ZM18.5403 18.578L18.4558 17.8328L18.0506 17.8787L17.8689 18.2438L18.5403 18.578ZM17.5044 20.6588L16.833 20.3246L16.8327 20.3252L17.5044 20.6588ZM16.5594 20.3582L15.8247 20.509L15.8248 20.5095L16.5594 20.3582ZM15.4299 14.8538L16.1646 14.703L16.1644 14.7023L15.4299 14.8538ZM16.1049 14.3813L15.7114 15.0198L15.712 15.0201L16.1049 14.3813ZM21.75 12C21.75 6.61509 17.3849 2.25 12 2.25V3.75C16.5565 3.75 20.25 7.44351 20.25 12H21.75ZM12 2.25C6.61509 2.25 2.25 6.61509 2.25 12H3.75C3.75 7.44351 7.44351 3.75 12 3.75V2.25ZM2.25 12C2.25 17.3849 6.61509 21.75 12 21.75V20.25C7.44351 20.25 3.75 16.5565 3.75 12H2.25ZM12.9 3.04504C12.3027 3.49866 12.3026 3.49846 12.3024 3.49828C12.3024 3.49823 12.3023 3.49806 12.3022 3.49797C12.3021 3.49779 12.302 3.49767 12.3019 3.4976C12.3018 3.49746 12.3019 3.49753 12.3021 3.49781C12.3025 3.49838 12.3036 3.4998 12.3053 3.50206C12.3086 3.50658 12.3144 3.51447 12.3225 3.52567C12.3387 3.54809 12.3641 3.58375 12.3973 3.63226C12.4638 3.72929 12.5616 3.87752 12.6805 4.07361C12.9183 4.46606 13.2393 5.04863 13.5614 5.79478C14.2061 7.28837 14.85 9.42526 14.85 12H16.35C16.35 9.17483 15.6439 6.83422 14.9386 5.20031C14.5857 4.38271 14.2317 3.73902 13.9633 3.29616C13.829 3.0746 13.7159 2.90291 13.6347 2.78443C13.5941 2.72518 13.5615 2.6792 13.5381 2.6469C13.5265 2.63075 13.5171 2.61802 13.5102 2.60876C13.5068 2.60413 13.504 2.60036 13.5018 2.59747C13.5007 2.59602 13.4998 2.5948 13.4991 2.59379C13.4987 2.59329 13.4983 2.59284 13.498 2.59244C13.4979 2.59224 13.4977 2.59199 13.4976 2.59189C13.4974 2.59165 13.4973 2.59142 12.9 3.04504ZM11.1 20.955C11.6973 20.5014 11.6974 20.5016 11.6976 20.5018C11.6976 20.5019 11.6977 20.502 11.6978 20.5021C11.6979 20.5023 11.698 20.5024 11.6981 20.5025C11.6982 20.5026 11.6981 20.5026 11.6979 20.5023C11.6975 20.5017 11.6964 20.5003 11.6948 20.498C11.6914 20.4935 11.6856 20.4856 11.6775 20.4744C11.6613 20.452 11.6359 20.4163 11.6027 20.3678C11.5362 20.2708 11.4384 20.1226 11.3195 19.9265C11.0817 19.534 10.7607 18.9515 10.4386 18.2053C9.79388 16.7117 9.15 14.5748 9.15 12H7.65C7.65 14.8253 8.35613 17.1659 9.06142 18.7998C9.41434 19.6174 9.76833 20.2611 10.0367 20.7039C10.171 20.9255 10.2841 21.0972 10.3653 21.2157C10.4059 21.2749 10.4385 21.3209 10.4619 21.3532C10.4735 21.3693 10.4829 21.3821 10.4898 21.3913C10.4932 21.396 10.496 21.3997 10.4982 21.4026C10.4993 21.4041 10.5002 21.4053 10.5009 21.4063C10.5013 21.4068 10.5017 21.4073 10.502 21.4076C10.5021 21.4078 10.5023 21.4081 10.5024 21.4082C10.5026 21.4084 10.5027 21.4087 11.1 20.955ZM9.15 12C9.15 9.42526 9.79388 7.28837 10.4386 5.79478C10.7607 5.04863 11.0817 4.46606 11.3195 4.07361C11.4384 3.87752 11.5362 3.72929 11.6027 3.63226C11.6359 3.58375 11.6613 3.54809 11.6775 3.52567C11.6856 3.51447 11.6914 3.50658 11.6948 3.50206C11.6964 3.4998 11.6975 3.49838 11.6979 3.49781C11.6981 3.49753 11.6982 3.49746 11.6981 3.4976C11.698 3.49767 11.6979 3.49779 11.6978 3.49797C11.6977 3.49806 11.6976 3.49823 11.6976 3.49828C11.6974 3.49846 11.6973 3.49866 11.1 3.04504C10.5027 2.59142 10.5026 2.59165 10.5024 2.59189C10.5023 2.59199 10.5021 2.59224 10.502 2.59244C10.5017 2.59284 10.5013 2.59329 10.5009 2.59379C10.5002 2.5948 10.4993 2.59602 10.4982 2.59747C10.496 2.60036 10.4932 2.60413 10.4898 2.60876C10.4829 2.61802 10.4735 2.63075 10.4619 2.6469C10.4385 2.6792 10.4059 2.72518 10.3653 2.78443C10.2841 2.90291 10.171 3.0746 10.0367 3.29616C9.76833 3.73902 9.41434 4.38271 9.06142 5.20031C8.35613 6.83422 7.65 9.17483 7.65 12H9.15ZM3.567 15.9H12V14.4H3.567V15.9ZM3.567 9.60004H20.433V8.10004H3.567V9.60004ZM20.498 17.9639C20.4792 17.9524 20.4575 17.9252 20.4597 17.8727C20.4609 17.8434 20.4715 17.7772 20.5297 17.7054C20.5961 17.6235 20.6889 17.5797 20.7655 17.5709L20.9357 19.0613C21.6167 18.9835 21.9384 18.4179 21.9584 17.9346C21.9776 17.4682 21.7476 16.9717 21.2842 16.6865L20.498 17.9639ZM20.7661 17.5709L18.4558 17.8328L18.6248 19.3232L20.9351 19.0613L20.7661 17.5709ZM17.8689 18.2438L16.833 20.3246L18.1758 20.9931L19.2117 18.9123L17.8689 18.2438ZM16.8327 20.3252C16.8668 20.2565 16.9395 20.1839 17.0398 20.1492C17.1277 20.1188 17.194 20.1316 17.2221 20.1405C17.272 20.1564 17.2896 20.1857 17.294 20.2069L15.8248 20.5095C15.9345 21.0419 16.322 21.4281 16.7668 21.5697C17.2286 21.7168 17.8707 21.6073 18.1761 20.9925L16.8327 20.3252ZM17.2941 20.2074L16.1646 14.703L14.6952 15.0046L15.8247 20.509L17.2941 20.2074ZM16.1644 14.7023C16.1723 14.7406 16.1666 14.883 16.0232 14.9833C15.88 15.0835 15.7446 15.0402 15.7114 15.0198L16.4984 13.7428C16.0899 13.4911 15.5724 13.468 15.1633 13.7543C14.754 14.0407 14.5984 14.535 14.6954 15.0053L16.1644 14.7023ZM15.712 15.0201L20.4982 17.964L21.284 16.6864L16.4978 13.7425L15.712 15.0201Z\" fill=\"#475467\" />\r\n </svg>\r\n</ng-template>\r\n\r\n<ng-template #cameraIcon>\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"20\" viewBox=\"0 0 24 20\" fill=\"none\">\r\n <path d=\"M23 17C23 17.5304 22.7893 18.0391 22.4142 18.4142C22.0391 18.7893 21.5304 19 21 19H3C2.46957 19 1.96086 18.7893 1.58579 18.4142C1.21071 18.0391 1 17.5304 1 17V6C1 5.46957 1.21071 4.96086 1.58579 4.58579C1.96086 4.21071 2.46957 4 3 4H7L9 1H15L17 4H21C21.5304 4 22.0391 4.21071 22.4142 4.58579C22.7893 4.96086 23 5.46957 23 6V17Z\"\r\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n <path d=\"M12 15C14.2091 15 16 13.2091 16 11C16 8.79086 14.2091 7 12 7C9.79086 7 8 8.79086 8 11C8 13.2091 9.79086 15 12 15Z\"\r\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n</ng-template>\r\n\r\n<ng-template #systemIcon>\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"14\" viewBox=\"0 0 20 14\" fill=\"none\">\r\n <path d=\"M12 2V9H2V2H12ZM2 0C0.896875 0 0 0.896875 0 2V9C0 10.1031 0.896875 11 2 11H5.66563L5.33125 12H3C2.44688 12 2 12.4469 2 13C2 13.5531 2.44688 14 3 14H11C11.5531 14 12 13.5531 12 13C12 12.4469 11.5531 12 11 12H8.66562L8.33125 11H12C13.1031 11 14 10.1031 14 9V2C14 0.896875 13.1031 0 12 0H2ZM16.5 0C15.6719 0 15 0.671875 15 1.5V12.5C15 13.3281 15.6719 14 16.5 14H18.5C19.3281 14 20 13.3281 20 12.5V1.5C20 0.671875 19.3281 0 18.5 0H16.5ZM17 2H18C18.275 2 18.5 2.225 18.5 2.5C18.5 2.775 18.275 3 18 3H17C16.725 3 16.5 2.775 16.5 2.5C16.5 2.225 16.725 2 17 2ZM16.5 4.5C16.5 4.225 16.725 4 17 4H18C18.275 4 18.5 4.225 18.5 4.5C18.5 4.775 18.275 5 18 5H17C16.725 5 16.5 4.775 16.5 4.5ZM17.5 9.5C17.7652 9.5 18.0196 9.60536 18.2071 9.79289C18.3946 9.98043 18.5 10.2348 18.5 10.5C18.5 10.7652 18.3946 11.0196 18.2071 11.2071C18.0196 11.3946 17.7652 11.5 17.5 11.5C17.2348 11.5 16.9804 11.3946 16.7929 11.2071C16.6054 11.0196 16.5 10.7652 16.5 10.5C16.5 10.2348 16.6054 9.98043 16.7929 9.79289C16.9804 9.60536 17.2348 9.5 17.5 9.5Z\"\r\n fill=\"#475467\" />\r\n </svg>\r\n</ng-template>\r\n\r\n<ng-template #storeIcon>\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M3.08995 6.88369L3.02401 6.98669C2.30358 8.25557 3.06101 9.87945 4.46464 10.0662C4.58627 10.0811 4.70112 10.0892 4.8145 10.0892C5.55255 10.0892 6.20523 9.77229 6.65953 9.27917L7.21286 8.67854L7.76432 9.28089C8.21367 9.77171 8.8652 10.0892 9.60776 10.0892C10.3471 10.0892 11.0022 9.77137 11.4512 9.28089L12.0044 8.67665L12.5576 9.28089C13.0066 9.77137 13.6617 10.0892 14.401 10.0892C15.1404 10.0892 15.7954 9.77137 16.2445 9.28089L16.7977 8.67665L17.3508 9.28089C17.7999 9.77137 18.4549 10.0892 19.1943 10.0892C19.3041 10.0892 19.4223 10.0811 19.5433 10.0663C20.9772 9.87168 21.7355 8.16387 20.9155 6.88419C20.9154 6.88413 20.9154 6.88407 20.9154 6.88402L18.8056 3.59429L18.8056 3.59429L18.8046 3.59282C18.7582 3.52002 18.6649 3.46423 18.5584 3.46423H5.44307C5.3365 3.46423 5.24326 3.52002 5.19681 3.59282L5.19619 3.59379L3.08995 6.88369ZM4.81818 12.7499C4.71644 12.7499 4.616 12.7468 4.5169 12.741V16.6428V18.9642C4.5169 19.8211 5.22663 20.5357 6.11942 20.5357H17.882C18.7748 20.5357 19.4845 19.8211 19.4845 18.9642V16.6428V12.7415C19.3874 12.747 19.2893 12.7499 19.1906 12.7499C19.0022 12.7499 18.8157 12.7398 18.632 12.7202V16.6428V17.3928H17.882H6.11942H5.36942V16.6428V12.721C5.18866 12.74 5.00472 12.7499 4.81818 12.7499Z\"\r\n stroke=\"#475467\" stroke-width=\"1.5\" />\r\n </svg>\r\n</ng-template>\r\n\r\n<ng-template #appIcon>\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M8 1H1V8H8V1Z\" stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n <path d=\"M19 1H12V8H19V1Z\" stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n <path d=\"M19 12H12V19H19V12Z\" stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n <path d=\"M8 12H1V19H8V12Z\" stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n</ng-template>\r\n\r\n<!-- Opened from the \"N streams down\" pill on a child row. Read-only: the API\r\n sends both timestamps already formatted, so nothing here derives a value. -->\r\n<ng-template #streamsModal let-modal>\r\n <div class=\"streams-dialog px-8 py-7\">\r\n <div class=\"mb-5\">\r\n <div class=\"maincard-label fw-bold\">Streams down</div>\r\n <div class=\"timingtext mt-1\">{{ streamsCycleId }}</div>\r\n </div>\r\n\r\n <div class=\"table-responsive\">\r\n <table class=\"table streams-table align-middle mb-0\">\r\n <thead>\r\n <tr>\r\n <th>Stream</th>\r\n <th>Down from</th>\r\n <th>Down to</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let stream of streams\">\r\n <td><span class=\"stream-name\" [title]=\"stream.streamName\">{{ stream.streamName }}</span></td>\r\n <td>{{ stream.from || '--' }}</td>\r\n <td>{{ stream.to || '--' }}</td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n\r\n <div class=\"d-flex justify-content-end mt-7\">\r\n <button type=\"button\" class=\"btn btn-default btn-primary\" (click)=\"modal.dismiss()\">Close</button>\r\n </div>\r\n </div>\r\n</ng-template>\r\n", styles: [".card-label{font-size:18px!important}.issuecard{flex:1 1 0;min-width:0;border-radius:10px;border:1px solid var(--Gray-200, #EAECF0);padding:16px}.issuecard label,.issuecard .label{color:var(--Black, #101828);font-size:14px;line-height:20px}.issuecard.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;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}.profile-label{font-size:12px;color:var(--Gray-500, #344054);line-height:16px}.timingtext{color:var(--Gray-500, #667085);font-size:12px;line-height:18px}.fw-bold-700{font-weight:700!important}.child-row{border-radius:10px;border:1px solid var(--Gray-200, #EAECF0);overflow:hidden}.child-head{background:#fff;gap:8px}.chevron{display:inline-flex;transition:transform .15s ease-in-out}.chevron.open{transform:rotate(90deg)}.chevron-down{display:inline-flex;transition:transform .15s ease-in-out}.chevron-down.open{transform:rotate(180deg)}.streams-pill{display:inline-flex;align-items:center;border-radius:16px;border:1px solid var(--Gray-200, #EAECF0);padding:2px 10px;white-space:nowrap}.streams-pill.clickable{cursor:pointer}.streams-pill.clickable:hover{border-color:var(--Gray-400, #98A2B3)}.streams-dialog .streams-table th{color:var(--Gray-500, #667085);font-size:12px;font-weight:500;white-space:nowrap}.streams-dialog .streams-table td{color:var(--Gray-700, #344054);font-size:13px}.streams-dialog .streams-table .stream-name{display:inline-block;max-width:260px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;vertical-align:bottom}.meta-pill{display:inline-flex;align-items:center;white-space:nowrap}.cycle-id{color:var(--Black, #101828)}.dot{display:inline-block;width:6px;height:6px;border-radius:50%}.dot-amber{background:#f79009}.dot-grey{background:var(--Gray-500, #667085)}.child-body{background:var(--Gray-50, #F9FAFB)}.inner-card{border-radius:10px;border:1px solid var(--Gray-200, #EAECF0);background:#fff}.escalated-pill,.status-pill{display:inline-flex;align-items:center;border-radius:16px;font-size:10px;line-height:16px;padding:0 8px}.escalated-pill .dot,.status-pill .dot{width:5px;height:5px}.escalated-pill{background:#fffaeb;color:#b54708}.status-pill{background:var(--Gray-100, #F2F4F7);color:var(--Gray-700, #344054)}.avatar-logo{width:28px;height:28px;flex-shrink:0}.connector{width:0;height:100%;margin-top:6px;border-left:1px solid var(--Gray-200, #EAECF0)}.meta-label{width:130px;flex-shrink:0}.meta-value{color:var(--Gray-900, #101828)}.analysis-link{color:var(--Primary-700, #009BF3)}.ticketDays{cursor:pointer}.analysis-row .analysis-dot{margin-top:7px;flex-shrink:0;background:var(--Gray-400, #98A2B3)}.analysis-row .analysis-label{letter-spacing:.04em;color:var(--Black, #101828);background:var(--Gray-100, #F2F4F7);border-radius:4px;padding:1px 6px;white-space:nowrap}.investigation{color:var(--Gray-500, #344054);font-size:15px;line-height:24px}.openedissue{border-radius:6px;background:var(--Gray-50, #F9FAFB);padding:8px 12px}.headingtext{color:var(--Gray-700, #344054)!important;font-size:15px!important;font-weight:500;line-height:20px}.roundedcheck input[type=checkbox]{width:16px!important;height:16px!important;border-radius:10px!important;-webkit-appearance:none;-moz-appearance:none;-o-appearance:none;appearance:none;border:1px solid var(--Gray-300, #D0D5DD);background:#fff;cursor:pointer}.roundedcheck input[type=checkbox]:checked{border-color:var(--Primary-700, #009BF3);background:var(--Primary-700, #009BF3);background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Cpath fill='none' stroke='%23fff' stroke-width='2' stroke-linecap='round' stroke-linejoin='round' d='M2.5 6.3l2.4 2.4 4.6-5'/%3E%3C/svg%3E\");background-repeat:no-repeat;background-position:center}\n"] }]
355
+ }], ctorParameters: () => [{ type: i1.GlobalStateService }, { type: i2.TicketsService }, { type: i3.ActivatedRoute }, { type: i4.NgbModal }, { type: i5.ToastService }], propDecorators: { selectedTab: [{
301
356
  type: Input
357
+ }], streamsModal: [{
358
+ type: ViewChild,
359
+ args: ['streamsModal']
302
360
  }] } });
303
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGlja2V0LWluZnJhLXYyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RhbmdvLXN0b3JlLXRpY2tldC1pbmZyYS9zcmMvbGliL2NvbXBvbmVudHMvdGlja2V0LWluZnJhLXYyL3RpY2tldC1pbmZyYS12Mi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1zdG9yZS10aWNrZXQtaW5mcmEvc3JjL2xpYi9jb21wb25lbnRzL3RpY2tldC1pbmZyYS12Mi90aWNrZXQtaW5mcmEtdjIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFLG9CQUFvQixFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7Ozs7Ozs7QUFzRTlFLDhFQUE4RTtBQUM5RSw2RUFBNkU7QUFDN0UsNEVBQTRFO0FBQzVFLDhFQUE4RTtBQUU5RSwrRUFBK0U7QUFDL0UsTUFBTSxzQkFBc0IsR0FBNkI7SUFDdkQsaUJBQWlCLEVBQUUsQ0FBQyx3QkFBd0IsRUFBRSwyQkFBMkIsRUFBRSxlQUFlLENBQUM7SUFDM0YsZUFBZSxFQUFFLENBQUMsdUJBQXVCLEVBQUUsdUJBQXVCLEVBQUUsc0JBQXNCLENBQUM7SUFDM0YsZUFBZSxFQUFFLENBQUMsa0JBQWtCLEVBQUUsZ0JBQWdCLEVBQUUsa0JBQWtCLENBQUM7SUFDM0Usd0JBQXdCLEVBQUUsQ0FBQyxjQUFjLEVBQUUsd0JBQXdCLEVBQUUsZ0JBQWdCLENBQUM7SUFDdEYsb0JBQW9CLEVBQUUsQ0FBQyxzQkFBc0IsRUFBRSxzQkFBc0IsQ0FBQztDQUN2RSxDQUFDO0FBT0YsTUFBTSxPQUFPLHNCQUFzQjtJQXVDdkI7SUFDQTtJQUNBO0lBeENELFdBQVcsQ0FB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RUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7U0FDak47UUFFRCxJQUFJLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3hCLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDekIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUMzQixDQUFDO3dHQXBTVSxzQkFBc0I7NEZBQXRCLHNCQUFzQixtR0MxRm5DLDYzdUNBZ1hBOzs0RkR0UmEsc0JBQXNCO2tCQUxsQyxTQUFTOytCQUNFLHFCQUFxQjtpSkFLdEIsV0FBVztzQkFBbkIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFN1YmplY3QsIGRlYm91bmNlVGltZSwgZGlzdGluY3RVbnRpbENoYW5nZWQsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IEdsb2JhbFN0YXRlU2VydmljZSB9IGZyb20gJ3RhbmdvLWFwcC11aS1nbG9iYWwnO1xyXG5pbXBvcnQgeyBUaWNrZXRzU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3RpY2tldHMuc2VydmljZSc7XHJcblxyXG50eXBlIFRpY2tldFN0YXR1cyA9ICdvcGVuJyB8ICdpbnByb2dyZXNzJyB8ICdjbG9zZWQnO1xyXG5cclxuaW50ZXJmYWNlIElzc3VlQ2FyZCB7IG5hbWU6IHN0cmluZzsgY291bnQ6IG51bWJlcjsgfVxyXG5cclxuLyoqXHJcbiAqIE9uZSBlbnRyeSBpbiBhIGNoaWxkIHRpY2tldCdzIHRpbWVsaW5lLiBgYW5hbHlzaXNgIGFkZHMgdGhlIGVzY2FsYXRpb24gcGlsbCxcclxuICogdGhlIHJvb3QgY2F1c2UgLyBpc3N1ZSBjYXRlZ29yeSBwYWlyIGFuZCB0aGUgZXhwYW5kYWJsZSBhbmFseXNpczsgYHJhaXNlZGAgaXNcclxuICogcGxhaW4gdGV4dC5cclxuICovXHJcbnR5cGUgRW50cnlLaW5kID0gJ3JhaXNlZCcgfCAnYW5hbHlzaXMnO1xyXG5cclxuaW50ZXJmYWNlIFRpbWVsaW5lRW50cnkge1xyXG4gIGtpbmQ6IEVudHJ5S2luZDtcclxuICBhdXRob3I6IHN0cmluZztcclxuICBhdDogc3RyaW5nO1xyXG4gIHRleHQ6IHN0cmluZztcclxuICBlc2NhbGF0ZWQ/OiBib29sZWFuO1xyXG4gIC8qKiBUaGUgYWdlbnQncyBvd24gdmVyZGljdCwgc2hvd24gYXMgYSBwaWxsLiAnJyB3aGVuIGl0IG5ldmVyIHJlcG9ydGVkLiAqL1xyXG4gIGFnZW50U3RhdHVzPzogc3RyaW5nO1xyXG4gIHJvb3RDYXVzZT86IHN0cmluZztcclxuICBpc3N1ZUNhdGVnb3J5Pzogc3RyaW5nO1xyXG4gIC8qKlxyXG4gICAqIFJldmVhbGVkIGJ5IFwiU2hvdyB0aGUgZnVsbCBhbmFseXNpc1wiLiBUaGUgZm91ciBrZXlzIG1hdGNoIHdoYXRcclxuICAgKiBQVVQgL3RpY2tldEFnZW50IHdyaXRlcyBvbnRvIHRoZSBjaGlsZCdzIGBhZ2VudGAgc3ViLWRvY3VtZW50LCBzbyB0aGlzIG1hcHNcclxuICAgKiBzdHJhaWdodCBhY3Jvc3Mgd2hlbiB0aGUgZW5kcG9pbnQgaXMgd2lyZWQgdXAuXHJcbiAgICovXHJcbiAgYW5hbHlzaXM/OiB7IGNhdXNlOiBzdHJpbmc7IHByb29mOiBzdHJpbmc7IGZpeDogc3RyaW5nOyBub3Rlczogc3RyaW5nIH07XHJcbiAgc2hvd0FuYWx5c2lzPzogYm9vbGVhbjtcclxufVxyXG5cclxuLyoqXHJcbiAqIEEgY3ljbGUgY2hpbGQgb2YgdGhlIHBhcmVudCB0aWNrZXQuIFRoZSBhY2NvcmRpb24gcm93IHNob3dzIHRoZSBjeWNsZSBpZCBhbmRcclxuICogaG93IG1hbnkgc3RyZWFtcyB3ZXJlIGRvd247IGV4cGFuZGluZyBpdCByZXZlYWxzIHRoZSB0aW1lbGluZS5cclxuICovXHJcbmludGVyZmFjZSBDaGlsZFRpY2tldCB7XHJcbiAgY3ljbGVJZDogc3RyaW5nO1xyXG4gIHN0cmVhbXNEb3duOiBudW1iZXI7XHJcbiAgc3RhdHVzOiBUaWNrZXRTdGF0dXM7XHJcbiAgZXhwYW5kZWQ6IGJvb2xlYW47XHJcbiAgZW50cmllczogVGltZWxpbmVFbnRyeVtdO1xyXG59XHJcblxyXG5pbnRlcmZhY2UgVGlja2V0Um93IHtcclxuICB0aWNrZXRJZDogc3RyaW5nO1xyXG4gIGNyZWF0ZWRBdDogc3RyaW5nO1xyXG4gIGlzc3VlQ2xvc2VkRGF0ZTogc3RyaW5nIHwgbnVsbDtcclxuICBzdGF0dXM6IFRpY2tldFN0YXR1cztcclxuICBpc3N1ZVN0YXR1czogJ2lkZW50aWZpZWQnIHwgJ25vdGlkZW50aWZpZWQnO1xyXG4gIHByaW1hcnlJc3N1ZTogc3RyaW5nO1xyXG4gIHNlY29uZGFyeUlzc3VlOiBzdHJpbmc7XHJcbiAgY29tbWVudHM6IG51bWJlcjtcclxuICAvKipcclxuICAgKiBTZXQgb25jZSB0aGUgc3RvcmUgc3VibWl0cyBpdHMgb3duIGlkZW50aWZpY2F0aW9uLiBTZXBhcmF0ZSBmcm9tXHJcbiAgICogaXNzdWVTdGF0dXMsIHdoaWNoIFRhbmdvIFdhdGNoIGFsc28gc2V0cyAtIGFuIGlucHJvZ3Jlc3MgdGlja2V0IGNhbiBoYXZlIGFcclxuICAgKiBUYW5nby1pZGVudGlmaWVkIHJvb3QgY2F1c2UgYW5kIHN0aWxsIGJlIHdhaXRpbmcgb24gdGhlIHN0b3JlLlxyXG4gICAqL1xyXG4gIHN0b3JlUmVzcG9uZGVkPzogYm9vbGVhbjtcclxuICAvKipcclxuICAgKiBUaGUgbmV3ZXN0IGNoaWxkJ3Mgcm9vdCBjYXVzZSwgc2VudCBvbiB0aGUgbGlzdCByb3cgc28gYSBjYXJkIGNhbiB3b3JkXHJcbiAgICogaXRzZWxmIHdpdGhvdXQgdGhlIHRpbWVsaW5lcy4gJycgd2hlbiBub2JvZHkgaGFzIGRpYWdub3NlZCB0aGUgdGlja2V0LlxyXG4gICAqL1xyXG4gIHJvb3RDYXVzZTogc3RyaW5nO1xyXG4gIC8qKiBBYnNlbnQgb24gYSBsaXN0IHJvdzsgZmlsbGVkIGJ5IHRoZSBkZXRhaWwgY2FsbCB3aGVuIHRoZSBjYXJkIGlzIGNsaWNrZWQuICovXHJcbiAgY2hpbGRyZW4/OiBDaGlsZFRpY2tldFtdO1xyXG59XHJcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxyXG4vLyBURU1QT1JBUlkgTU9DSyBEQVRBIOKAlCB0aGUgbGFzdCBibG9jayBzdGlsbCB0byBiZSByZXBsYWNlZC4gVGhlIGlzc3VlIGNhcmRzXHJcbi8vIGFuZCB0aGUgdGlja2V0IGxpc3QgYXJlIGxpdmU7IG9ubHkgdGhlIHBpY2tlcidzIHNlY29uZGFyeSByZWFzb25zIHJlbWFpbi5cclxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XHJcblxyXG4vKiogL2luZnJhL1ByaW1hcnlSZWFzb25zIOKAlCB0aGUgc2Vjb25kYXJ5IHJlYXNvbnMgb2ZmZXJlZCB1bmRlciBlYWNoIHByaW1hcnkgKi9cclxuY29uc3QgTU9DS19TRUNPTkRBUllfUkVBU09OUzogUmVjb3JkPHN0cmluZywgc3RyaW5nW10+ID0ge1xyXG4gICdJbnRlcm5ldCBJc3N1ZXMnOiBbJ05vIGludGVybmV0IGNvbm5lY3Rpb24nLCAnSW50ZXJtaXR0ZW50IGNvbm5lY3Rpdml0eScsICdMb3cgYmFuZHdpZHRoJ10sXHJcbiAgJ0NhbWVyYSBJc3N1ZXMnOiBbJ0NhbWVyYSBub3QgcG93ZXJlZCBvbicsICdMZW5zIGJsdXJyZWQgb3IgZGlydHknLCAnQ2FtZXJhIGFuZ2xlIGNoYW5nZWQnXSxcclxuICAnU3lzdGVtIElzc3Vlcyc6IFsnTlZSIC8gRFZSIGlzIG9mZicsICdIYXJkIGRpc2sgZnVsbCcsICdTeXN0ZW0gcmVzdGFydGVkJ10sXHJcbiAgJ1N0b3JlIE9wZXJhdGlvbiBJc3N1ZXMnOiBbJ1N0b3JlIGNsb3NlZCcsICdSZW5vdmF0aW9uIGluIHByb2dyZXNzJywgJ1Bvd2VyIHNodXRkb3duJ10sXHJcbiAgJ0FwcGxpY2F0aW9uIElzc3Vlcyc6IFsnRWRnZSBhcHAgbm90IHJ1bm5pbmcnLCAnQXBwIHZlcnNpb24gb3V0ZGF0ZWQnXSxcclxufTtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLXRpY2tldC1pbmZyYS12MicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3RpY2tldC1pbmZyYS12Mi5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL3RpY2tldC1pbmZyYS12Mi5jb21wb25lbnQuc2NzcycsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUaWNrZXRJbmZyYVYyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG4gIEBJbnB1dCgpIHNlbGVjdGVkVGFiOiBhbnk7XHJcblxyXG4gIHByaXZhdGUgcmVhZG9ubHkgZGVzdHJveSQgPSBuZXcgU3ViamVjdDxib29sZWFuPigpO1xyXG4gIGhlYWRlckZpbHRlcjogYW55O1xyXG5cclxuICAvLyBFbXB0eSB1bnRpbCB0aGUgaGVhZGVyIGZpbHRlciBhcnJpdmVzIC0gdGhlIGVuZHBvaW50IGFsd2F5cyByZXR1cm5zIGV2ZXJ5XHJcbiAgLy8gY2FyZCwgc28gbm90aGluZyBuZWVkcyBzZWVkaW5nIGhlcmUuXHJcbiAgdGlja2V0Q2FyZDogSXNzdWVDYXJkW10gPSBbXTtcclxuICB0aWNrZXRMaXN0OiBUaWNrZXRSb3dbXSA9IFtdO1xyXG4gIHNlbGVjdENhcmQgPSAwO1xyXG4gIHRpY2tldEluZm86IFRpY2tldFJvdyB8IG51bGwgPSBudWxsO1xyXG5cclxuICAvLyBCb3RoIHN0YXJ0IHRydWUgc28gdGhlIGZpcnN0IHBhaW50IGlzIHRoZSBzaGltbWVyIHJhdGhlciB0aGFuIGEgcGFnZSB0aGF0XHJcbiAgLy8gbG9va3MgbGlrZSBhIHN0b3JlIHdpdGggbm8gdGlja2V0cy4gT25lIGZsYWcgcGVyIGNhbGwsIGNvbWJpbmVkIGZvciB0aGVcclxuICAvLyB2aWV3OiB0aGUgY2FyZHMgYW5kIHRoZSBsaXN0IGFyZSBhIHNpbmdsZSBibG9jayBvbiBzY3JlZW4uXHJcbiAgY2FyZHNMb2FkaW5nID0gdHJ1ZTtcclxuICBsaXN0TG9hZGluZyA9IHRydWU7XHJcbiAgZ2V0IGxvYWRpbmcoKTogYm9vbGVhbiB7IHJldHVybiB0aGlzLmNhcmRzTG9hZGluZyB8fCB0aGlzLmxpc3RMb2FkaW5nOyB9XHJcblxyXG4gIC8vIFRoZSBkZXRhaWwgcGFuZSByZWxvYWRzIG9uIGl0cyBvd24gd2hlbiBhIGNhcmQgaXMgY2xpY2tlZCwgc28gaXQgc2hpbW1lcnNcclxuICAvLyBzZXBhcmF0ZWx5IC0gdGhlIGxlZnQgY29sdW1uIG11c3Qgbm90IGZsYXNoIG9uIGV2ZXJ5IHNlbGVjdGlvbi5cclxuICBkZXRhaWxMb2FkaW5nID0gZmFsc2U7XHJcblxyXG4gIC8vIElzc3VlIGlkZW50aWZpY2F0aW9uLCBtaXJyb3JpbmcgdGhlIFYxIHRhYidzIGZsb3cuXHJcbiAgc2VsZWN0ZWRJc3N1ZSA9ICcnO1xyXG4gIHNlY29uZGFyeUlzc3VlczogeyBuYW1lOiBzdHJpbmc7IGNoZWNrZWQ6IGJvb2xlYW4gfVtdID0gW107XHJcbiAgaGliZXJuYXRpb25EYXlzID0gMDtcclxuICBjb21tZW50cyA9ICcnO1xyXG5cclxuICAvKipcclxuICAgKiBTZXQgd2hlbiB0aGUgc3VtbWFyeSBwYWdlIGxpbmtzIHN0cmFpZ2h0IHRvIG9uZSB0aWNrZXQuIFJlYWQgZnJvbSB0aGUgcm91dGVcclxuICAgKiByYXRoZXIgdGhhbiB0YWtlbiBhcyBhbiBASW5wdXQ6IHRoZSBwYXJlbnQgaGFzIG5vIG90aGVyIHVzZSBmb3IgaXQuXHJcbiAgICogQ29uc3VtZWQgb24gdGhlIGZpcnN0IGxpc3QgbG9hZCBzbyBhIGxhdGVyIGZpbHRlciBjaGFuZ2Ugb3IgYSBjbGljayBvblxyXG4gICAqIGFub3RoZXIgY2FyZCBpcyBub3Qgb3ZlcnJpZGRlbiBieSBhIHN0YWxlIHF1ZXJ5IHBhcmFtLlxyXG4gICAqL1xyXG4gIHByaXZhdGUgcmVxdWVzdGVkVGlja2V0SWQgPSAnJztcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGdzOiBHbG9iYWxTdGF0ZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHRpY2tldHNlcnZpY2U6IFRpY2tldHNTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByb3V0ZTogQWN0aXZhdGVkUm91dGUsXHJcbiAgKSB7fVxyXG5cclxuICAvLyBWMSBhbHNvIGhhcyBhIHJlZnJlc2h0aWNrZXQgYnJhbmNoIGhlcmUgdGhhdCBvbWl0cyB0aGUgc2VsZWN0ZWRJc3N1ZSBjaGVjayxcclxuICAvLyB3aGljaCBtYWtlcyB0aGUgcGlja2VyIGFuZCB0aGUgY2hvc2VuLWlzc3VlIGJsb2NrIHJlbmRlciB0b2dldGhlci4gVGhlcmUgaXNcclxuICAvLyBubyByZWZyZXNoIHRpY2tldCBpbiBWMiwgc28gdGhhdCBicmFuY2ggaXMgbm90IHJlcHJvZHVjZWQuXHJcbiAgLy8gU2hvd24gb24gYW55IHRpY2tldCB0aGF0IGlzIHN0aWxsIGxpdmUgYW5kIHRoYXQgdGhlIHN0b3JlIGhhcyBub3QgYW5zd2VyZWRcclxuICAvLyB5ZXQsIHNvIGl0IGFsc28gYXBwZWFycyB1bmRlciBhbiBpbnByb2dyZXNzIHRpY2tldCB3aG9zZSByb290IGNhdXNlIFRhbmdvXHJcbiAgLy8gV2F0Y2ggaGFzIGFscmVhZHkgZm91bmQuXHJcbiAgcHJpdmF0ZSBnZXQgY2FuSWRlbnRpZnkoKTogYm9vbGVhbiB7XHJcbiAgICBjb25zdCB0ID0gdGhpcy50aWNrZXRJbmZvO1xyXG4gICAgcmV0dXJuICEhdCAmJiAhdC5zdG9yZVJlc3BvbmRlZCAmJiB0LnN0YXR1cyAhPT0gJ2Nsb3NlZCc7XHJcbiAgfVxyXG5cclxuICBnZXQgc2hvd0lzc3VlUGlja2VyKCk6IGJvb2xlYW4geyByZXR1cm4gdGhpcy5jYW5JZGVudGlmeSAmJiB0aGlzLnNlbGVjdGVkSXNzdWUgPT09ICcnOyB9XHJcbiAgZ2V0IHNob3dJc3N1ZURldGFpbCgpOiBib29sZWFuIHsgcmV0dXJuIHRoaXMuY2FuSWRlbnRpZnkgJiYgdGhpcy5zZWxlY3RlZElzc3VlICE9PSAnJzsgfVxyXG5cclxuICAvKipcclxuICAgKiBUaGUgY3ljbGUgdGhlIHN0b3JlIGNhbiBzdGlsbCBhbnN3ZXIgb246IHRoZSBuZXdlc3QgY2hpbGQgdGhhdCBpcyBub3RcclxuICAgKiBjbG9zZWQuIENoaWxkcmVuIGFycml2ZSBuZXdlc3QgZmlyc3QsIHNvIHRoZSBmaXJzdCBtYXRjaCBpcyB0aGUgbGl2ZSBvbmUuXHJcbiAgICogVGhpcyByZXBsYWNlcyBhIHBvc2l0aW9uYWwgXCJsYXN0IGNoaWxkXCIgdGVzdCwgd2hpY2ggdG9vayB0aGUgb2xkZXN0IGN5Y2xlXHJcbiAgICogYW5kIHNvIHB1dCB0aGUgcGlja2VyIGluc2lkZSBhIGNsb3NlZCBvbmUuXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBnZXQgaWRlbnRpZnlDaGlsZCgpOiBDaGlsZFRpY2tldCB8IG51bGwge1xyXG4gICAgcmV0dXJuICh0aGlzLnRpY2tldEluZm8/LmNoaWxkcmVuID8/IFtdKS5maW5kKChjKSA9PiBjLnN0YXR1cyAhPT0gJ2Nsb3NlZCcpID8/IG51bGw7XHJcbiAgfVxyXG5cclxuICBpc0lkZW50aWZ5Q2hpbGQoY2hpbGQ6IENoaWxkVGlja2V0KTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gISF0aGlzLmlkZW50aWZ5Q2hpbGQgJiYgY2hpbGQgPT09IHRoaXMuaWRlbnRpZnlDaGlsZDtcclxuICB9XHJcblxyXG4gIC8vIFRoZSBoZWFkZXIgcHVzaGVzIHNldmVyYWwgdmFsdWVzIHdoaWxlIHRoZSBwYWdlIGluaXRpYWxpc2VzLCBhbmQgYXJyaXZpbmdcclxuICAvLyBmcm9tIHRoZSBmbGVldCB0YWJsZSBhZGRzIG9uZSBtb3JlIC0gdGhhdCBjb21wb25lbnQgY2FsbHNcclxuICAvLyBkYXRhUmFuZ2VWYWx1ZS5uZXh0KCkganVzdCBiZWZvcmUgbmF2aWdhdGluZyBoZXJlLiBXaXRob3V0IHRoaXMgZ3VhcmQgZXZlcnlcclxuICAvLyBvbmUgb2YgdGhlbSByZWZldGNoZWQgdGhlIGNhcmRzLCB0aGUgbGlzdCBhbmQgdGhlIHRvcCBjYXJkJ3MgZGV0YWlsLiBTYW1lXHJcbiAgLy8gc2hhcGUgYXMgdGhlIGZsZWV0IEluZnJhIFYyIHRhYiwga2V5ZWQgb24gdGhlIHNjb3BlIHRoaXMgcGFnZSBhY3R1YWxseSB1c2VzLlxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5yZXF1ZXN0ZWRUaWNrZXRJZCA9IHRoaXMucm91dGUuc25hcHNob3QucXVlcnlQYXJhbXNbJ3RpY2tldElkJ10gfHwgJyc7XHJcbiAgICB0aGlzLmdzLmRhdGFSYW5nZVZhbHVlLnBpcGUoXHJcbiAgICAgIGRlYm91bmNlVGltZSgxNTApLFxyXG4gICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgoYTogYW55LCBiOiBhbnkpID0+XHJcbiAgICAgICAgSlNPTi5zdHJpbmdpZnkoeyBzOiBhPy5zdG9yZSwgYzogYT8uY2xpZW50LCBkOiBhPy5kYXRlIH0pID09PVxyXG4gICAgICAgIEpTT04uc3RyaW5naWZ5KHsgczogYj8uc3RvcmUsIGM6IGI/LmNsaWVudCwgZDogYj8uZGF0ZSB9KSksXHJcbiAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSxcclxuICAgICkuc3Vic2NyaWJlKChkYXRhOiBhbnkpID0+IHtcclxuICAgICAgaWYgKGRhdGEpIHtcclxuICAgICAgICB0aGlzLmhlYWRlckZpbHRlciA9IGRhdGE7XHJcbiAgICAgICAgY29uc3QgYm9keSA9IHRoaXMuc2NvcGVCb2R5KCk7XHJcbiAgICAgICAgaWYgKGJvZHkpIHtcclxuICAgICAgICAgIHRoaXMuZ2V0SXNzdWVDYXJkcyhib2R5KTtcclxuICAgICAgICAgIHRoaXMuZ2V0VGlja2V0TGlzdChib2R5KTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLy8gQm90aCBlbmRwb2ludHMgdGFrZSB0aGUgc2FtZSBzdG9yZSArIGRhdGUgc2NvcGUuIE51bGwgd2hlbiB0aGUgaGVhZGVyIGhhc1xyXG4gIC8vIG5vdCByZXNvbHZlZCBhIHN0b3JlIHlldCwgd2hpY2ggaXMgdGhlIGNhc2Ugb24gdGhlIGZpcnN0IGVtaXNzaW9uLlxyXG4gIHByaXZhdGUgc2NvcGVCb2R5KCk6IGFueSB7XHJcbiAgICBjb25zdCBzdG9yZUlkID0gdGhpcy5oZWFkZXJGaWx0ZXI/LnN0b3JlO1xyXG4gICAgY29uc3QgY2xpZW50SWQgPSB0aGlzLmhlYWRlckZpbHRlcj8uY2xpZW50O1xyXG4gICAgLy8gTm90aGluZyB0byBmZXRjaCwgc28gbm90aGluZyB0byB3YWl0IGZvciAtIHdpdGhvdXQgdGhpcyB0aGUgcGFnZSB3b3VsZFxyXG4gICAgLy8gc2hpbW1lciBmb3IgYSBoZWFkZXIgdGhhdCBuZXZlciByZXNvbHZlcyBhIHN0b3JlLlxyXG4gICAgaWYgKCFzdG9yZUlkIHx8ICFjbGllbnRJZCkge1xyXG4gICAgICB0aGlzLmNhcmRzTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmxpc3RMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgY2xpZW50SWQ6IFtjbGllbnRJZF0sXHJcbiAgICAgIHN0b3JlSWQ6IHN0b3JlSWQsXHJcbiAgICAgIGZyb21EYXRlOiB0aGlzLmhlYWRlckZpbHRlcj8uZGF0ZT8uc3RhcnREYXRlLFxyXG4gICAgICB0b0RhdGU6IHRoaXMuaGVhZGVyRmlsdGVyPy5kYXRlPy5lbmREYXRlLFxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIC8vIFRoZSBlbmRwb2ludCBhbHdheXMgYW5zd2VycyB3aXRoIGFsbCBmaXZlIGNhcmRzLCBzbyBhIGZhaWx1cmUgaXMgdGhlIG9ubHlcclxuICAvLyBjYXNlIHRoYXQgbmVlZHMgY2xlYXJpbmcgLSBvdGhlcndpc2UgdGhlIHByZXZpb3VzIHN0b3JlJ3MgbnVtYmVycyB3b3VsZCBzaXRcclxuICAvLyB1bmRlciB0aGUgbmV3IHN0b3JlJ3MgbmFtZS5cclxuICBwcml2YXRlIGdldElzc3VlQ2FyZHMoYm9keTogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLmNhcmRzTG9hZGluZyA9IHRydWU7XHJcbiAgICB0aGlzLnRpY2tldHNlcnZpY2UuaW5mcmFWMlN0b3JlSXNzdWVDYXJkcyhib2R5KS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKHtcclxuICAgICAgLy8gQ2xlYXJlZCBvbiBmYWlsdXJlIHRvbywgb3Igb25lIGJhZCByZXNwb25zZSBsZWF2ZXMgdGhlIHBhZ2Ugc2hpbW1lcmluZy5cclxuICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgdGhpcy50aWNrZXRDYXJkID0gcmVzPy5jb2RlID09PSAyMDAgPyAocmVzPy5kYXRhPy5jYXJkcyA/PyBbXSkgOiBbXTtcclxuICAgICAgICB0aGlzLmNhcmRzTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICB9LFxyXG4gICAgICBlcnJvcjogKCkgPT4geyB0aGlzLnRpY2tldENhcmQgPSBbXTsgdGhpcy5jYXJkc0xvYWRpbmcgPSBmYWxzZTsgfSxcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRUaWNrZXRMaXN0KGJvZHk6IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5saXN0TG9hZGluZyA9IHRydWU7XHJcbiAgICB0aGlzLnRpY2tldHNlcnZpY2UuaW5mcmFWMlN0b3JlVGlja2V0TGlzdChib2R5KS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgdGhpcy5zZXRUaWNrZXRzKHJlcz8uY29kZSA9PT0gMjAwID8gKHJlcz8uZGF0YT8udGlja2V0cyA/PyBbXSkgOiBbXSk7XHJcbiAgICAgICAgdGhpcy5saXN0TG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICB9LFxyXG4gICAgICBlcnJvcjogKCkgPT4geyB0aGlzLnNldFRpY2tldHMoW10pOyB0aGlzLmxpc3RMb2FkaW5nID0gZmFsc2U7IH0sXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8vIExpc3Qgcm93cyBjYXJyeSBubyBjaGlsZHJlbiwgc28gdGhlIGZpcnN0IG9uZSBpcyBvcGVuZWQgdGhyb3VnaCB0aGUgc2FtZVxyXG4gIC8vIHBhdGggYSBjbGljayB0YWtlcyAtIG9uZSBwbGFjZSB0aGF0IGtub3dzIGhvdyB0byBmZXRjaCBhIHRpY2tldC5cclxuICBwcml2YXRlIHNldFRpY2tldHModGlja2V0czogVGlja2V0Um93W10pOiB2b2lkIHtcclxuICAgIHRoaXMudGlja2V0TGlzdCA9IHRpY2tldHM7XHJcbiAgICB0aGlzLnRpY2tldEluZm8gPSBudWxsO1xyXG5cclxuICAgIC8vIEEgbGlua2VkIHRpY2tldCBvcGVucyBpbnN0ZWFkIG9mIHRoZSBuZXdlc3QsIG9uY2UuIEl0IGZhbGxzIGJhY2sgdG8gdGhlXHJcbiAgICAvLyBuZXdlc3Qgd2hlbiB0aGUgaWQgaXMgbm90IGluIHRoZSBsaXN0IC0gYSBzdGFsZSBsaW5rLCBvciBhIHJhbmdlIHRoYXQgbm9cclxuICAgIC8vIGxvbmdlciBjb250YWlucyBpdC5cclxuICAgIGNvbnN0IGxpbmtlZCA9IHRoaXMucmVxdWVzdGVkVGlja2V0SWRcclxuICAgICAgPyB0aGlzLnRpY2tldExpc3QuZmluZEluZGV4KCh0KSA9PiB0LnRpY2tldElkID09PSB0aGlzLnJlcXVlc3RlZFRpY2tldElkKVxyXG4gICAgICA6IC0xO1xyXG4gICAgdGhpcy5yZXF1ZXN0ZWRUaWNrZXRJZCA9ICcnO1xyXG5cclxuICAgIGlmICh0aGlzLnRpY2tldExpc3QubGVuZ3RoKSB7IHRoaXMuc2hvd1RpY2tldChsaW5rZWQgPj0gMCA/IGxpbmtlZCA6IDApOyB9IGVsc2UgeyB0aGlzLmNob29zZW5Jc3N1ZSgnJyk7IH1cclxuICB9XHJcblxyXG4gIHNob3dUaWNrZXQoaW5kZXg6IG51bWJlcik6IHZvaWQge1xyXG4gICAgdGhpcy5zZWxlY3RDYXJkID0gaW5kZXg7XHJcbiAgICB0aGlzLmNob29zZW5Jc3N1ZSgnJyk7XHJcblxyXG4gICAgY29uc3Qgcm93ID0gdGhpcy50aWNrZXRMaXN0W2luZGV4XTtcclxuICAgIGNvbnN0IGJvZHkgPSB0aGlzLnNjb3BlQm9keSgpO1xyXG4gICAgaWYgKCFyb3cgfHwgIWJvZHkpIHsgdGhpcy50aWNrZXRJbmZvID0gbnVsbDsgcmV0dXJuOyB9XHJcblxyXG4gICAgdGhpcy5kZXRhaWxMb2FkaW5nID0gdHJ1ZTtcclxuICAgIHRoaXMudGlja2V0c2VydmljZS5pbmZyYVYyU3RvcmVUaWNrZXREZXRhaWwoeyAuLi5ib2R5LCB0aWNrZXRJZDogcm93LnRpY2tldElkIH0pXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICAgIGNvbnN0IHRpY2tldCA9IHJlcz8uY29kZSA9PT0gMjAwID8gcmVzPy5kYXRhPy50aWNrZXQgOiBudWxsO1xyXG4gICAgICAgICAgdGhpcy50aWNrZXRJbmZvID0gdGlja2V0ID8gdGhpcy53aXRoVmlld1N0YXRlKHRpY2tldCkgOiBudWxsO1xyXG4gICAgICAgICAgdGhpcy5kZXRhaWxMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBlcnJvcjogKCkgPT4geyB0aGlzLnRpY2tldEluZm8gPSBudWxsOyB0aGlzLmRldGFpbExvYWRpbmcgPSBmYWxzZTsgfSxcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICAvLyBgZXhwYW5kZWRgIGFuZCBgc2hvd0FuYWx5c2lzYCBhcmUgdmlldyBzdGF0ZSB0aGUgQVBJIGRvZXMgbm90IHNlbmQsIHNvIHRoZXlcclxuICAvLyBhcmUgc2VlZGVkIGhlcmUuIFRoZSBuZXdlc3QgY3ljbGUgb3BlbnMgYnkgZGVmYXVsdDsgdGhlIHJlc3Qgc3RheSBjb2xsYXBzZWQuXHJcbiAgcHJpdmF0ZSB3aXRoVmlld1N0YXRlKHRpY2tldDogVGlja2V0Um93KTogVGlja2V0Um93IHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIC4uLnRpY2tldCxcclxuICAgICAgY2hpbGRyZW46ICh0aWNrZXQuY2hpbGRyZW4gPz8gW10pLm1hcCgoY2hpbGQsIGkpID0+ICh7XHJcbiAgICAgICAgLi4uY2hpbGQsXHJcbiAgICAgICAgZXhwYW5kZWQ6IGkgPT09IDAsXHJcbiAgICAgICAgZW50cmllczogKGNoaWxkLmVudHJpZXMgPz8gW10pLm1hcCgoZW50cnkpID0+ICh7IC4uLmVudHJ5LCBzaG93QW5hbHlzaXM6IGZhbHNlIH0pKSxcclxuICAgICAgfSkpLFxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIC8vIFJvd3Mgb3BlbiBpbmRlcGVuZGVudGx5LCBzbyBzZXZlcmFsIGNhbiBiZSBleHBhbmRlZCBhdCBvbmNlLlxyXG4gIHRvZ2dsZUNoaWxkKGNoaWxkOiBDaGlsZFRpY2tldCk6IHZvaWQgeyBjaGlsZC5leHBhbmRlZCA9ICFjaGlsZC5leHBhbmRlZDsgfVxyXG4gIHRvZ2dsZUFuYWx5c2lzKGVudHJ5OiBUaW1lbGluZUVudHJ5KTogdm9pZCB7IGVudHJ5LnNob3dBbmFseXNpcyA9ICFlbnRyeS5zaG93QW5hbHlzaXM7IH1cclxuXHJcbiAgLyoqIFRhbmdvIGFuZCBUYW5nbyBXYXRjaCBnZXQgdGhlIHByb2R1Y3QgbG9nbzsgYW55b25lIGVsc2UgZ2V0cyBhIHBlcnNvbiBpY29uLiAqL1xyXG4gIGlzVGFuZ29BdXRob3IoYXV0aG9yOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgIHJldHVybiBhdXRob3IudG9Mb3dlckNhc2UoKS5zdGFydHNXaXRoKCd0YW5nbycpO1xyXG4gIH1cclxuXHJcbiAgLy8gVGhlIGVudW0gc3BlbGxzIG5vX2FjdGlvbiB3aXRoIGFuIHVuZGVyc2NvcmUgYW5kIHN0b3JlcyBVbnJlYWNoYWJsZVxyXG4gIC8vIGNhcGl0YWxpc2VkOyBvbmx5IHRoZSBkaXNwbGF5IG5vcm1hbGlzZXMgdGhlbS4gU2FtZSB0cmVhdG1lbnQgYXMgdGhlXHJcbiAgLy8gQWdlbnQgU3RhdHVzIGNvbHVtbnMgb24gdGhlIHRpY2tldHMgYW5kIHN1bW1hcnkgdGFibGVzLlxyXG4gIGFnZW50TGFiZWwoZW50cnk6IFRpbWVsaW5lRW50cnkpOiBzdHJpbmcge1xyXG4gICAgY29uc3QgcmF3ID0gU3RyaW5nKGVudHJ5Py5hZ2VudFN0YXR1cyA/PyAnJykucmVwbGFjZSgvXy9nLCAnICcpO1xyXG4gICAgcmV0dXJuIHJhdyA/IHJhdy5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIHJhdy5zbGljZSgxKSA6ICcnO1xyXG4gIH1cclxuXHJcbiAgLy8gQW1iZXIga2VlcHMgZXNjYWxhdGVkIGxvb2tpbmcgbGlrZSB0aGUgYWxlcnQgaXQgaXM7IGV2ZXJ5dGhpbmcgZWxzZSBpc1xyXG4gIC8vIG5ldXRyYWwsIHNvIHRoZSBwaWxsIHJlcG9ydHMgd2l0aG91dCBzaG91dGluZy5cclxuICBhZ2VudFBpbGxDbGFzcyhlbnRyeTogVGltZWxpbmVFbnRyeSk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gZW50cnk/LmVzY2FsYXRlZCA/ICdlc2NhbGF0ZWQtcGlsbCcgOiAnc3RhdHVzLXBpbGwnO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUm9vdCBjYXVzZSBpZGVudGlmaWVkIG9uIHRoZSBtb3N0IHJlY2VudCBjaGlsZC4gUmVhZCBzdHJhaWdodCBvZmYgdGhlIHJvdyAtXHJcbiAgICogdGhlIGxpc3Qgbm8gbG9uZ2VyIGNhcnJpZXMgdGhlIHRpbWVsaW5lcyB0byBkaWcgdGhyb3VnaC5cclxuICAgKi9cclxuICBwcml2YXRlIHJlY2VudFJvb3RDYXVzZSh0OiBUaWNrZXRSb3cpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHQucm9vdENhdXNlID8/ICcnO1xyXG4gIH1cclxuXHJcbiAgLy8gV29yZGluZyBpcyBzdGF0dXMtZHJpdmVuIHJhdGhlciB0aGFuIHN0b3JlZCB0ZXh0LCBtYXRjaGluZyB0aGUgVjEgdGFiLiBBXHJcbiAgLy8gY2xvc2VkIHRpY2tldCBzaG93cyB3aGF0IHdhcyBhY3R1YWxseSBmb3VuZCwgZmFsbGluZyBiYWNrIHRvIHRoZSBnZW5lcmljXHJcbiAgLy8gY2xvc2UgbWVzc2FnZSB3aGVuIG5vIGNoaWxkIGNhcnJpZXMgYSByb290IGNhdXNlLlxyXG4gIGNhcmRNZXNzYWdlKHQ6IFRpY2tldFJvdyk6IHN0cmluZyB7XHJcbiAgICBpZiAodC5zdGF0dXMgPT09ICdjbG9zZWQnKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLnJlY2VudFJvb3RDYXVzZSh0KSB8fCAnVGhhbmsgeW91IGZvciB5b3VyIGFzc2lzdGFuY2UuIFdlIGhhdmUgcmVjZWl2ZWQgdGhlIGRhdGEgZnJvbSB5b3VyIFN0b3JlLic7XHJcbiAgICB9XHJcbiAgICAvLyBpc3N1ZVN0YXR1cyBmbGlwcyB0byAnaWRlbnRpZmllZCcgYmVmb3JlIHRoZSByZWFzb25zIGFyZSB3cml0dGVuLCBzbyB0aGVcclxuICAgIC8vIGZpZWxkcyB0aGVtc2VsdmVzIGRlY2lkZSB3aGV0aGVyIHRoZXJlIGlzIGFueXRoaW5nIHRvIG5hbWUuIFdpdGhvdXQgdGhpc1xyXG4gICAgLy8gdGhlIGNhcmQgcmVhZHMgXCJTdG9yZSBpcyBjdXJyZW50bHkgZW5jb3VudGVyaW5nIGEgIHdoaWNoIGlzIC5cIlxyXG4gICAgaWYgKHQuaXNzdWVTdGF0dXMgPT09ICdub3RpZGVudGlmaWVkJyB8fCAhdC5wcmltYXJ5SXNzdWUgfHwgIXQuc2Vjb25kYXJ5SXNzdWUpIHtcclxuICAgICAgcmV0dXJuICdXZSBoYXZlIG5vdCByZWNlaXZlZCBkYXRhIGZyb20geW91ciBzdG9yZS4gV2UgYXJlIGN1cnJlbnRseSBpbnZlc3RpZ2F0aW5nIHRoZSBpc3N1ZS4nO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuICcnO1xyXG4gIH1cclxuXHJcbiAgc3RhdHVzQmFkZ2Uoc3RhdHVzOiBUaWNrZXRTdGF0dXMpOiBzdHJpbmcge1xyXG4gICAgaWYgKHN0YXR1cyA9PT0gJ2Nsb3NlZCcpIHsgcmV0dXJuICdiYWRnZSBiYWRnZS1saWdodC1zdWNjZXNzJzsgfVxyXG4gICAgcmV0dXJuIHN0YXR1cyA9PT0gJ2lucHJvZ3Jlc3MnID8gJ2JhZGdlIGJhZGdlLWxpZ2h0LXByaW1hcnknIDogJ2JhZGdlIGJhZGdlLWxpZ2h0LXdhcm5pbmcnO1xyXG4gIH1cclxuXHJcbiAgLy8gJycgY2xlYXJzIHRoZSBzZWxlY3Rpb24gYW5kIHJldHVybnMgdG8gdGhlIG9wdGlvbiBsaXN0IOKAlCBzYW1lIGNvbnRyYWN0IGFzIFYxLlxyXG4gIGNob29zZW5Jc3N1ZSh2YWx1ZTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLnNlbGVjdGVkSXNzdWUgPSB2YWx1ZTtcclxuICAgIHRoaXMuc2Vjb25kYXJ5SXNzdWVzID0gKE1PQ0tfU0VDT05EQVJZX1JFQVNPTlNbdmFsdWVdID8/IFtdKS5tYXAoKG5hbWUpID0+ICh7IG5hbWUsIGNoZWNrZWQ6IGZhbHNlIH0pKTtcclxuICAgIHRoaXMuaGliZXJuYXRpb25EYXlzID0gMDtcclxuICAgIHRoaXMuY29tbWVudHMgPSAnJztcclxuICB9XHJcblxyXG4gIHRvZ2dsZUNoZWNrYm94KGluZGV4OiBudW1iZXIpOiB2b2lkIHtcclxuICAgIHRoaXMuc2Vjb25kYXJ5SXNzdWVzW2luZGV4XS5jaGVja2VkID0gIXRoaXMuc2Vjb25kYXJ5SXNzdWVzW2luZGV4XS5jaGVja2VkO1xyXG4gIH1cclxuXHJcbiAgLy8gTWlycm9ycyBkZWNyZXNlQ291bnQoKSAvIGluY3JlYXNlQ291bnQoKSBvbiB0aGUgVjEgdGFiLlxyXG4gIGRlY3JlYXNlSGliZXJuYXRpb24oKTogdm9pZCB7IGlmICh0aGlzLmhpYmVybmF0aW9uRGF5cyA+IDApIHsgdGhpcy5oaWJlcm5hdGlvbkRheXMgLT0gMTsgfSB9XHJcbiAgaW5jcmVhc2VIaWJlcm5hdGlvbigpOiB2b2lkIHsgdGhpcy5oaWJlcm5hdGlvbkRheXMgKz0gMTsgfVxyXG5cclxuICBnZXQgY2FuU3VibWl0SXNzdWUoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5zZWNvbmRhcnlJc3N1ZXMuc29tZSgocikgPT4gci5jaGVja2VkKTtcclxuICB9XHJcblxyXG4gIC8vIE1vY2tlZDogd3JpdGVzIHN0cmFpZ2h0IG9udG8gdGhlIHNlbGVjdGVkIHJvdyBzbyB0aGUgY2hhbmdlIHN1cnZpdmVzXHJcbiAgLy8gc3dpdGNoaW5nIHRpY2tldHMuIE5vIHJlcXVlc3QgaXMgbWFkZS5cclxuICBzdWJtaXRJc3N1ZSgpOiB2b2lkIHtcclxuICAgIGNvbnN0IHQgPSB0aGlzLnRpY2tldEluZm87XHJcbiAgICBpZiAoIXQgfHwgIXRoaXMuY2FuU3VibWl0SXNzdWUpIHsgcmV0dXJuOyB9XHJcbiAgICBjb25zdCByZWFzb25zID0gdGhpcy5zZWNvbmRhcnlJc3N1ZXMuZmlsdGVyKChyKSA9PiByLmNoZWNrZWQpLm1hcCgocikgPT4gci5uYW1lKTtcclxuICAgIHQuaXNzdWVTdGF0dXMgPSAnaWRlbnRpZmllZCc7XHJcbiAgICB0LnN0b3JlUmVzcG9uZGVkID0gdHJ1ZTtcclxuICAgIHQucHJpbWFyeUlzc3VlID0gdGhpcy5zZWxlY3RlZElzc3VlO1xyXG4gICAgdC5zZWNvbmRhcnlJc3N1ZSA9IHJlYXNvbnMuam9pbignLCAnKTtcclxuICAgIHQuY29tbWVudHMgPSB0LmNvbW1lbnRzICsgMTtcclxuXHJcbiAgICAvLyBUaGUgc2FtZSBjaGlsZCB0aGUgZm9ybSB3YXMgc2hvd24gdW5kZXIgLSB0aGUgbGl2ZSBvbmUsIG5vdCB0aGUgb2xkZXN0LlxyXG4gICAgY29uc3QgY2hpbGQgPSB0aGlzLmlkZW50aWZ5Q2hpbGQ7XHJcbiAgICBpZiAoY2hpbGQpIHtcclxuICAgICAgY29uc3QgcGFydHMgPSBbYElzc3VlIGlkZW50aWZpZWQgYXMgJHt0aGlzLnNlbGVjdGVkSXNzdWV9IC0gJHt0LnNlY29uZGFyeUlzc3VlfS5gXTtcclxuICAgICAgaWYgKHRoaXMuaGliZXJuYXRpb25EYXlzID4gMCkgeyBwYXJ0cy5wdXNoKGBIaWJlcm5hdGVkIGZvciAke3RoaXMuaGliZXJuYXRpb25EYXlzfSBkYXkke3RoaXMuaGliZXJuYXRpb25EYXlzID09PSAxID8gJycgOiAncyd9LmApOyB9XHJcbiAgICAgIGlmICh0aGlzLmNvbW1lbnRzLnRyaW0oKSkgeyBwYXJ0cy5wdXNoKHRoaXMuY29tbWVudHMudHJpbSgpKTsgfVxyXG4gICAgICBjaGlsZC5lbnRyaWVzLnB1c2goeyBraW5kOiAncmFpc2VkJywgYXV0aG9yOiAnU3RvcmUnLCBhdDogbmV3IERhdGUoKS50b0xvY2FsZVN0cmluZygnZW4tR0InLCB7IGRheTogJzItZGlnaXQnLCBtb250aDogJ3Nob3J0JywgeWVhcjogJ251bWVyaWMnLCBob3VyOiAnMi1kaWdpdCcsIG1pbnV0ZTogJzItZGlnaXQnIH0pLCB0ZXh0OiBwYXJ0cy5qb2luKCcgJykgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5jaG9vc2VuSXNzdWUoJycpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQodHJ1ZSk7XHJcbiAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJjYXJkXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY2FyZC1oZWFkZXIgYm9yZGVyLTAgcHQtM1wiPlxyXG4gICAgICAgIDxoMyBjbGFzcz1cImNhcmQtdGl0bGUgYWxpZ24taXRlbXMtc3RhcnQgZmxleC1jb2x1bW5cIj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjYXJkLWxhYmVsIG1iLTJcIj5JbmZyYSBUaWNrZXRzIHYyPC9zcGFuPlxyXG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cImhlYWRlckZpbHRlcj8uZGF0ZT8uc3RhcnREYXRlID09PSBoZWFkZXJGaWx0ZXI/LmRhdGU/LmVuZERhdGVcIiBjbGFzcz1cInRleHQtc3ViIG1iLTJcIj5BbiBvdmVydmlldyBvZiBhbGwgdGhlIHRpY2tldHMgZm9yIHRpbGwge3sgaGVhZGVyRmlsdGVyPy5kYXRlPy5lbmREYXRlIHwgY3VzdG9tRGF0ZUZvcm1hdCB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJoZWFkZXJGaWx0ZXI/LmRhdGU/LnN0YXJ0RGF0ZSAhPT0gaGVhZGVyRmlsdGVyPy5kYXRlPy5lbmREYXRlXCIgY2xhc3M9XCJ0ZXh0LXN1YiBtYi0yXCI+QW4gb3ZlcnZpZXcgb2YgYWxsIHRoZSB0aWNrZXRzIGZvciB7eyBoZWFkZXJGaWx0ZXI/LmRhdGU/LnN0YXJ0RGF0ZSB8IGN1c3RvbURhdGVGb3JtYXQgfX0gLSB7eyBoZWFkZXJGaWx0ZXI/LmRhdGU/LmVuZERhdGUgfCBjdXN0b21EYXRlRm9ybWF0IH19PC9zcGFuPlxyXG4gICAgICAgIDwvaDM+XHJcbiAgICAgICAgPCEtLSBGaWx0ZXIgYW5kIEV4cG9ydCByZW5kZXIgaW5lcnQ6IGxpYi1maWx0ZXJzIG5lZWRzIHJlYWwgZmFjZXRzLCBhbmRcclxuICAgICAgICAgICAgIHRoZXJlIGlzIG5vdGhpbmcgdG8gZXhwb3J0IHdoaWxlIHRoZSBkYXRhIGlzIG1vY2tlZC4gLS0+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtdG9vbGJhclwiPlxyXG4gICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tZGVmYXVsdCBteC0yIGJ0bi1vdXRsaW5lIGJ0bi1vdXRsaW5lLWRlZmF1bHQgcm91bmRlZC0zIHRleHQtbm93cmFwIGJvcmRlci12YWxcIj5cclxuICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMi41IDVIMTcuNU01IDEwSDE1TTguMzMzMzMgMTVIMTEuNjY2N1wiIHN0cm9rZT1cIiMxMDE4MjhcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcy0yXCI+RmlsdGVyPC9zcGFuPlxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLWRlZmF1bHQgbXgtMiBidG4tb3V0bGluZSBidG4tb3V0bGluZS1kZWZhdWx0IHJvdW5kZWQtMyB0ZXh0LW5vd3JhcCBib3JkZXItdmFsXCI+XHJcbiAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTE3LjUgMTIuNVYxNS44MzMzQzE3LjUgMTYuMjc1NCAxNy4zMjQ0IDE2LjY5OTMgMTcuMDExOCAxNy4wMTE4QzE2LjY5OTMgMTcuMzI0NCAxNi4yNzU0IDE3LjUgMTUuODMzMyAxNy41SDQuMTY2NjdDMy43MjQ2NCAxNy41IDMuMzAwNzIgMTcuMzI0NCAyLjk4ODE2IDE3LjAxMThDMi42NzU1OSAxNi42OTkzIDIuNSAxNi4yNzU0IDIuNSAxNS44MzMzVjEyLjVNMTQuMTY2NyA2LjY2NjY3TDEwIDIuNU0xMCAyLjVMNS44MzMzMyA2LjY2NjY3TTEwIDIuNVYxMi41XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzEwMTgyOFwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1zLTJcIj5FeHBvcnQ8L3NwYW4+XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keVwiPlxyXG4gICAgICAgIDwhLS0gU2hpbW1lciB3aGlsZSBlaXRoZXIgY2FsbCBpcyBpbiBmbGlnaHQuIFRoZSBzdHlsZXMgYXJlIHRoZSBzaGVsbCdzXHJcbiAgICAgICAgICAgICAoc3R5bGVzLnNjc3MgYC5sb2FkZXJgKSwgc28gdGhlIC5sb2FkZXIgPiAuc2hpbW1lciA+IC53cmFwcGVyID4gLnN0cm9rZVxyXG4gICAgICAgICAgICAgbmVzdGluZyBoYXMgdG8gc3RheSBhcyBpdCBpcyBoZXJlLiAtLT5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwibG9hZGluZ1wiIGNsYXNzPVwicm93IGxvYWRlciBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNoaW1tZXJcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3cmFwcGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIHRpdGxlXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGxpbmtcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgZGVzY3JpcHRpb25cIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNoaW1tZXJcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3cmFwcGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIHRpdGxlXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGxpbmtcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgZGVzY3JpcHRpb25cIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFsb2FkaW5nXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBnYXAtMyBtYi03XCI+XHJcbiAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGlzc3VlIG9mIHRpY2tldENhcmRcIiBjbGFzcz1cImlzc3VlY2FyZFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdj48c3BhbiBjbGFzcz1cInRpdGxlXCI+e3sgaXNzdWUuY291bnQgfX08L3NwYW4+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsIGZ3LXNlbWlib2xkXCI+e3sgaXNzdWUubmFtZSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJtYWluY2FyZC1jb250ZW50XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgcC0xMFwiPlxyXG5cclxuICAgICAgICAgICAgICAgIDwhLS0gTGVmdDogdW5jaGFuZ2VkIGZyb20gdGhlIFRpY2tldHMgdGFiLiAtLT5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tNiBjdXJzb3ItcG9pbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGRhdGEgb2YgdGlja2V0TGlzdDsgbGV0IGluZGV4ID0gaW5kZXhcIiBjbGFzcz1cImlzc3VlY2FyZCB3LTEwMCBtYi00XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNob3dUaWNrZXQoaW5kZXgpXCIgW25nQ2xhc3NdPVwic2VsZWN0Q2FyZCA9PT0gaW5kZXggPyAnYWN0aXZlJyA6ICcnXCI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWFpbmNhcmQtbGFiZWwgZnctYm9sZCBkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gbWItNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+PGltZyBzcmM9XCIuL2Fzc2V0cy90YW5nby9JbWFnZXMvdGlja2V0LnN2Z1wiPiB7eyBkYXRhLnRpY2tldElkIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRlbnR0ZXh0IGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlciB0ZXh0LWNlbnRlciBmdy1zZW1pYm9sZCBweC0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCIgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTAuNjY2NyAxLjMzMzk4VjQuMDAwNjVNNS4zMzMzMyAxLjMzMzk4VjQuMDAwNjVNMiA2LjY2NzMySDE0TTMuMzMzMzMgMi42NjczMkgxMi42NjY3QzEzLjQwMyAyLjY2NzMyIDE0IDMuMjY0MjcgMTQgNC4wMDA2NVYxMy4zMzRDMTQgMTQuMDcwNCAxMy40MDMgMTQuNjY3MyAxMi42NjY3IDE0LjY2NzNIMy4zMzMzM0MyLjU5Njk1IDE0LjY2NzMgMiAxNC4wNzA0IDIgMTMuMzM0VjQuMDAwNjVDMiAzLjI2NDI3IDIuNTk2OTUgMi42NjczMiAzLjMzMzMzIDIuNjY3MzJaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM2NjcwODVcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXgtMVwiPnt7IGRhdGEuY3JlYXRlZEF0IHwgZGF0ZTogJ2RkLU1NLXl5eXknIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZGF0YS5pc3N1ZUNsb3NlZERhdGVcIiBjbGFzcz1cImNvbnRlbnR0ZXh0IGZ3LXNlbWlib2xkIHBlLTNcIj4tIHt7IGRhdGEuaXNzdWVDbG9zZWREYXRlIHwgZGF0ZTogJ2RkLU1NLXl5eXknIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImNhcmRNZXNzYWdlKGRhdGEpXCIgY2xhc3M9XCJtYi01IGNvbnRlbnR0ZXh0IGZ3LXNlbWlib2xkXCI+e3sgY2FyZE1lc3NhZ2UoZGF0YSkgfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiFjYXJkTWVzc2FnZShkYXRhKVwiIGNsYXNzPVwibWItNSBjb250ZW50dGV4dCBmdy1zZW1pYm9sZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RvcmUgaXMgY3VycmVudGx5IGVuY291bnRlcmluZyBhIDxzcGFuIGNsYXNzPVwiZnctYm9sZC03MDBcIj57eyBkYXRhLnByaW1hcnlJc3N1ZSB9fTwvc3Bhbj4gd2hpY2ggaXNcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZnctYm9sZC03MDBcIj57eyBkYXRhLnNlY29uZGFyeUlzc3VlIH19Ljwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHJvZmlsZSBkLWZsZXggYWxpZ24taXRlbXMtY2VudHJlIGp1c3RpZnktY29udGVudC1jZW50cmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz1cIi4vYXNzZXRzL3RhbmdvL0ltYWdlcy91c2VyUHJvZmlsZS5zdmdcIiBhbHQ9XCJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY29udGVudHRleHQgZnctc2VtaWJvbGQgcHgtM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIiB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTQgMTBDMTQgMTAuMzUzNiAxMy44NTk1IDEwLjY5MjggMTMuNjA5NSAxMC45NDI4QzEzLjM1OTQgMTEuMTkyOSAxMy4wMjAzIDExLjMzMzMgMTIuNjY2NyAxMS4zMzMzSDQuNjY2NjdMMiAxNFYzLjMzMzMzQzIgMi45Nzk3MSAyLjE0MDQ4IDIuNjQwNTcgMi4zOTA1MiAyLjM5MDUyQzIuNjQwNTcgMi4xNDA0OCAyLjk3OTcxIDIgMy4zMzMzMyAySDEyLjY2NjdDMTMuMDIwMyAyIDEzLjM1OTQgMi4xNDA0OCAxMy42MDk1IDIuMzkwNTJDMTMuODU5NSAyLjY0MDU3IDE0IDIuOTc5NzEgMTQgMy4zMzMzM1YxMFpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM2NjcwODVcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48c3BhbiBjbGFzcz1cIm14LTFcIj57eyBkYXRhLmNvbW1lbnRzIH19PC9zcGFuPiBjb21tZW50c1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBbbmdDbGFzc109XCJzdGF0dXNCYWRnZShkYXRhLnN0YXR1cylcIj57eyBkYXRhLnN0YXR1cyB8IHRpdGxlY2FzZSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgIDwhLS0gUmlnaHQ6IHRoZSBzZWxlY3RlZCBwYXJlbnQsIHdpdGggaXRzIGN5Y2xlIGNoaWxkcmVuIGFzIGFuIGFjY29yZGlvbiAtLT5cclxuICAgICAgICAgICAgICAgIDwhLS0gT25seSB0aGlzIGNvbHVtbiByZWxvYWRzIHdoZW4gYSBjYXJkIGlzIGNsaWNrZWQsIHNvIGl0XHJcbiAgICAgICAgICAgICAgICAgICAgIHNoaW1tZXJzIG9uIGl0cyBvd24gcmF0aGVyIHRoYW4gYmxhbmtpbmcgdGhlIHdob2xlIHRhYi4gLS0+XHJcbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZGV0YWlsTG9hZGluZ1wiIGNsYXNzPVwiY29sLXNtLTZcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IGxvYWRlciBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNoaW1tZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3cmFwcGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIHRpdGxlXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGxpbmtcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgZGVzY3JpcHRpb25cIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhZGV0YWlsTG9hZGluZyAmJiB0aWNrZXRJbmZvXCIgY2xhc3M9XCJjb2wtc20tNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYWluY2FyZC1sYWJlbCBmdy1ib2xkIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXIgbWItNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj48aW1nIHNyYz1cIi4vYXNzZXRzL3RhbmdvL0ltYWdlcy90aWNrZXQuc3ZnXCI+PHNwYW4gY2xhc3M9XCJteC0yXCI+e3sgdGlja2V0SW5mby50aWNrZXRJZCB9fTwvc3Bhbj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gQ3ljbGUgY2hpbGRyZW4uIFJvd3Mgb3BlbiBpbmRlcGVuZGVudGx5LiAtLT5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBjaGlsZCBvZiB0aWNrZXRJbmZvLmNoaWxkcmVuXCIgY2xhc3M9XCJjaGlsZC1yb3cgbWItNFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hpbGQtaGVhZCBkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyIGN1cnNvci1wb2ludGVyIHB4LTQgcHktM1wiIChjbGljayk9XCJ0b2dnbGVDaGlsZChjaGlsZClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGZsZXgtd3JhcFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hldnJvbiBtZS0zXCIgW2NsYXNzLm9wZW5dPVwiY2hpbGQuZXhwYW5kZWRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxNFwiIGhlaWdodD1cIjE0XCIgdmlld0JveD1cIjAgMCAxNCAxNFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTUgMi41TDkuNSA3TDUgMTEuNVwiIHN0cm9rZT1cIiMxMDE4MjhcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWV0YS1waWxsIGN5Y2xlLWlkIHRpbWluZ3RleHQgZnctc2VtaWJvbGQgbWUtM1wiPnt7IGNoaWxkLmN5Y2xlSWQgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzdHJlYW1zLXBpbGwgdGltaW5ndGV4dCBtZS0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTRcIiBoZWlnaHQ9XCIxNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjBcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0yMyAxN0MyMyAxNy41MzA0IDIyLjc4OTMgMTguMDM5MSAyMi40MTQyIDE4LjQxNDJDMjIuMDM5MSAxOC43ODkzIDIxLjUzMDQgMTkgMjEgMTlIM0MyLjQ2OTU3IDE5IDEuOTYwODYgMTguNzg5MyAxLjU4NTc5IDE4LjQxNDJDMS4yMTA3MSAxOC4wMzkxIDEgMTcuNTMwNCAxIDE3VjZDMSA1LjQ2OTU3IDEuMjEwNzEgNC45NjA4NiAxLjU4NTc5IDQuNTg1NzlDMS45NjA4NiA0LjIxMDcxIDIuNDY5NTcgNCAzIDRIN0w5IDFIMTVMMTcgNEgyMUMyMS41MzA0IDQgMjIuMDM5MSA0LjIxMDcxIDIyLjQxNDIgNC41ODU3OUMyMi43ODkzIDQuOTYwODYgMjMgNS40Njk1NyAyMyA2VjE3WlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiI0YwNDQzOFwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmdy1ib2xkIG14LTFcIj57eyBjaGlsZC5zdHJlYW1zRG93biB9fTwvc3Bhbj4gc3RyZWFtcyBkb3duXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBbbmdDbGFzc109XCJzdGF0dXNCYWRnZShjaGlsZC5zdGF0dXMpXCIgY2xhc3M9XCJmbGV4LXNocmluay0wXCI+e3sgY2hpbGQuc3RhdHVzIHwgdGl0bGVjYXNlIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJjaGlsZC5leHBhbmRlZFwiIGNsYXNzPVwiY2hpbGQtYm9keSBweC01IHB5LTVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbm5lci1jYXJkIHB4LTUgcHktNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGVudHJ5IG9mIGNoaWxkLmVudHJpZXM7IGxldCBsYXN0ID0gbGFzdDsgbGV0IGZpcnN0ID0gZmlyc3RcIiBjbGFzcz1cImQtZmxleFwiIFtjbGFzcy5wdC01XT1cIiFmaXJzdFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtY29sdW1uIGFsaWduLWl0ZW1zLWNlbnRlciBtZS00XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImF2YXRhclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgKm5nSWY9XCJpc1RhbmdvQXV0aG9yKGVudHJ5LmF1dGhvcik7IGVsc2UgcGVyc29uSWNvblwiIGNsYXNzPVwiYXZhdGFyLWxvZ29cIiBzcmM9XCIuL2Fzc2V0cy90YW5nby9JbWFnZXMvdGFuZ29FeWUtbWFyay5zdmdcIiBhbHQ9XCJUYW5nb1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjcGVyc29uSWNvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxNFwiIGhlaWdodD1cIjE0XCIgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTEzLjMzMjcgMTRWMTIuNjY2N0MxMy4zMzI3IDExLjk1OTQgMTMuMDUxNyAxMS4yODExIDEyLjU1MTYgMTAuNzgxQzEyLjA1MTUgMTAuMjgxIDExLjM3MzMgMTAgMTAuNjY2IDEwSDUuMzMyNjhDNC42MjU0NCAxMCAzLjk0NzE2IDEwLjI4MSAzLjQ0NzA2IDEwLjc4MUMyLjk0Njk3IDExLjI4MTEgMi42NjYwMiAxMS45NTk0IDIuNjY2MDIgMTIuNjY2N1YxNE0xMC42NjYgNC42NjY2N0MxMC42NjYgNi4xMzk0MyA5LjQ3MjExIDcuMzMzMzMgNy45OTkzNSA3LjMzMzMzQzYuNTI2NTkgNy4zMzMzMyA1LjMzMjY4IDYuMTM5NDMgNS4zMzI2OCA0LjY2NjY3QzUuMzMyNjggMy4xOTM5MSA2LjUyNjU5IDIgNy45OTkzNSAyQzkuNDcyMTEgMiAxMC42NjYgMy4xOTM5MSAxMC42NjYgNC42NjY2N1pcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiMwMDlCRjNcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiFsYXN0XCIgY2xhc3M9XCJjb25uZWN0b3JcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidy0xMDAgcGItMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZmxleC13cmFwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtYWluY2FyZC1sYWJlbCBmdy1ib2xkXCI+e3sgZW50cnkuYXV0aG9yIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZW50cnkuYXRcIiBjbGFzcz1cInRpbWluZ3RleHQgbXgtM1wiPnt7IGVudHJ5LmF0IH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gVGhlIGFnZW50J3MgdmVyZGljdCwgd2hhdGV2ZXIgaXQgaXMgLSBub3Qgb25seSBlc2NhbGF0ZWQuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBYnNlbnQgd2hlbiB0aGUgYWdlbnQgbmV2ZXIgcmVwb3J0ZWQuIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZW50cnkuYWdlbnRTdGF0dXNcIiBbbmdDbGFzc109XCJhZ2VudFBpbGxDbGFzcyhlbnRyeSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInRpbWluZ3RleHQgZnctc2VtaWJvbGQgbXMtYXV0byB0ZXh0LXVwcGVyY2FzZVwiPjxzcGFuIGNsYXNzPVwiZG90IG1lLTJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmRvdC1hbWJlcl09XCJlbnRyeS5lc2NhbGF0ZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmRvdC1ncmV5XT1cIiFlbnRyeS5lc2NhbGF0ZWRcIj48L3NwYW4+e3sgYWdlbnRMYWJlbChlbnRyeSkgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZW50cnkudGV4dFwiIGNsYXNzPVwiY29udGVudHRleHQgZnctc2VtaWJvbGQgbXQtMlwiPnt7IGVudHJ5LnRleHQgfX08L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIEFuYWx5c2lzIGVudHJ5OiBsYWJlbC92YWx1ZSBwYWlycywgdGhlbiB0aGUgZXhwYW5kZXIgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZW50cnkua2luZCA9PT0gJ2FuYWx5c2lzJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggbXQtM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1ldGEtbGFiZWwgdGltaW5ndGV4dCBmdy1zZW1pYm9sZFwiPklTU1VFIENBVEVHT1JZPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1ldGEtdmFsdWUgY29udGVudHRleHQgZnctc2VtaWJvbGRcIj57eyBlbnRyeS5pc3N1ZUNhdGVnb3J5IH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggbXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1ldGEtbGFiZWwgdGltaW5ndGV4dCBmdy1zZW1pYm9sZFwiPlJPT1QgQ0FVU0U8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWV0YS12YWx1ZSBjb250ZW50dGV4dCBmdy1zZW1pYm9sZFwiPnt7IGVudHJ5LnJvb3RDYXVzZSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYW5hbHlzaXMtbGluayBjb250ZW50dGV4dCBmdy1zZW1pYm9sZCBjdXJzb3ItcG9pbnRlciBtdC00XCIgKGNsaWNrKT1cInRvZ2dsZUFuYWx5c2lzKGVudHJ5KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoZXZyb24tZG93biBtZS0yXCIgW2NsYXNzLm9wZW5dPVwiZW50cnkuc2hvd0FuYWx5c2lzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTJcIiB2aWV3Qm94PVwiMCAwIDE0IDE0XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTMgNUw3IDkuNUwxMSA1XCIgc3Ryb2tlPVwiIzAwOUJGM1wiIHN0cm9rZS13aWR0aD1cIjEuNjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgZW50cnkuc2hvd0FuYWx5c2lzID8gJ0hpZGUgdGhlIGZ1bGwgYW5hbHlzaXMnIDogJ1Nob3cgdGhlIGZ1bGwgYW5hbHlzaXMnIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImVudHJ5LnNob3dBbmFseXNpcyAmJiBlbnRyeS5hbmFseXNpc1wiIGNsYXNzPVwibXQtM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYW5hbHlzaXMtcm93IGQtZmxleCBtYi00XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRvdCBhbmFseXNpcy1kb3QgbWUtM1wiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aW1pbmd0ZXh0IGZ3LXNlbWlib2xkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhbmFseXNpcy1sYWJlbCB0aW1pbmd0ZXh0IGZ3LXNlbWlib2xkIG1lLTNcIj5DQVVTRTwvc3Bhbj57eyBlbnRyeS5hbmFseXNpcy5jYXVzZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYW5hbHlzaXMtcm93IGQtZmxleCBtYi00XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRvdCBhbmFseXNpcy1kb3QgbWUtM1wiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aW1pbmd0ZXh0IGZ3LXNlbWlib2xkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhbmFseXNpcy1sYWJlbCB0aW1pbmd0ZXh0IGZ3LXNlbWlib2xkIG1lLTNcIj5QUk9PRjwvc3Bhbj57eyBlbnRyeS5hbmFseXNpcy5wcm9vZiB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYW5hbHlzaXMtcm93IGQtZmxleCBtYi00XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRvdCBhbmFseXNpcy1kb3QgbWUtM1wiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aW1pbmd0ZXh0IGZ3LXNlbWlib2xkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhbmFseXNpcy1sYWJlbCB0aW1pbmd0ZXh0IGZ3LXNlbWlib2xkIG1lLTNcIj5GSVg8L3NwYW4+e3sgZW50cnkuYW5hbHlzaXMuZml4IH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhbmFseXNpcy1yb3cgZC1mbGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRvdCBhbmFseXNpcy1kb3QgbWUtM1wiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aW1pbmd0ZXh0IGZ3LXNlbWlib2xkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhbmFseXNpcy1sYWJlbCB0aW1pbmd0ZXh0IGZ3LXNlbWlib2xkIG1lLTNcIj5OT1RFUzwvc3Bhbj57eyBlbnRyeS5hbmFseXNpcy5ub3RlcyB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBJc3N1ZSBpZGVudGlmaWNhdGlvbiwgaW5zaWRlIHRoZSBjaGlsZCBwYW5lbC4gSWNvbnMgYXJlIGNvcGllZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbSB0aGUgVjEgdGFiIHNvIHRoZSB0d28gdGFicyByZW5kZXIgaWRlbnRpY2FsbHkuIE9ubHkgdGhlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaXZlIGN5Y2xlIGNhcnJpZXMgaXQgLSBhIGNsb3NlZCBvbmUgaGFzIG5vdGhpbmcgdG8gYW5zd2VyIC1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvIGl0IHN0aWxsIGFwcGVhcnMgYXQgbW9zdCBvbmNlIHBlciBwYXJlbnQuIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJzaG93SXNzdWVQaWNrZXIgJiYgaXNJZGVudGlmeUNoaWxkKGNoaWxkKVwiIGNsYXNzPVwiaW52ZXN0aWdhdGlvbiBmdy1zZW1pYm9sZCBtdC01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEtpbmRseSBjaG9vc2UgdGhlIG9wdGlvbiBiZWxvdyB0aGF0IGNvcnJlc3BvbmRzIHRvIHRoZSBpc3N1ZSB5b3UgYXJlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVyaWVuY2luZyBpbiB0aGUgc3RvcmUuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz1cImxpc3QtdW5zdHlsZWQgcHgtNFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwicHktNCBjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJjaG9vc2VuSXNzdWUoJ0ludGVybmV0IElzc3VlcycpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImludGVybmV0SWNvblwiPjwvbmctY29udGFpbmVyPiA8c3BhbiBjbGFzcz1cInB4LTNcIj5JbnRlcm5ldCBJc3N1ZXM8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwicHktNCBjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJjaG9vc2VuSXNzdWUoJ0NhbWVyYSBJc3N1ZXMnKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjYW1lcmFJY29uXCI+PC9uZy1jb250YWluZXI+IDxzcGFuIGNsYXNzPVwicHgtM1wiPkNhbWVyYSBJc3N1ZXM8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwicHktNCBjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJjaG9vc2VuSXNzdWUoJ1N5c3RlbSBJc3N1ZXMnKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJzeXN0ZW1JY29uXCI+PC9uZy1jb250YWluZXI+IDxzcGFuIGNsYXNzPVwicHgtM1wiPlN5c3RlbSBJc3N1ZXM8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwicHktNCBjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJjaG9vc2VuSXNzdWUoJ1N0b3JlIE9wZXJhdGlvbiBJc3N1ZXMnKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJzdG9yZUljb25cIj48L25nLWNvbnRhaW5lcj4gPHNwYW4gY2xhc3M9XCJweC0zXCI+U3RvcmUgT3BlcmF0aW9uIElzc3Vlczwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJweS00IGN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cImNob29zZW5Jc3N1ZSgnQXBwbGljYXRpb24gSXNzdWVzJylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiYXBwSWNvblwiPjwvbmctY29udGFpbmVyPiA8c3BhbiBjbGFzcz1cInB4LTNcIj5BcHBsaWNhdGlvbiBJc3N1ZXM8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwic2hvd0lzc3VlRGV0YWlsICYmIGlzSWRlbnRpZnlDaGlsZChjaGlsZClcIiBjbGFzcz1cIm10LTVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm9wZW5lZGlzc3VlIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicHJvZmlsZS1sYWJlbCBmdy1zZW1pYm9sZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzZWxlY3RlZElzc3VlID09PSAnSW50ZXJuZXQgSXNzdWVzJ1wiIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImludGVybmV0SWNvblwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzZWxlY3RlZElzc3VlID09PSAnQ2FtZXJhIElzc3VlcydcIiBbbmdUZW1wbGF0ZU91dGxldF09XCJjYW1lcmFJY29uXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNlbGVjdGVkSXNzdWUgPT09ICdTeXN0ZW0gSXNzdWVzJ1wiIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInN5c3RlbUljb25cIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2VsZWN0ZWRJc3N1ZSA9PT0gJ1N0b3JlIE9wZXJhdGlvbiBJc3N1ZXMnXCIgW25nVGVtcGxhdGVPdXRsZXRdPVwic3RvcmVJY29uXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNlbGVjdGVkSXNzdWUgPT09ICdBcHBsaWNhdGlvbiBJc3N1ZXMnXCIgW25nVGVtcGxhdGVPdXRsZXRdPVwiYXBwSWNvblwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXMtMlwiPnt7IHNlbGVjdGVkSXNzdWUgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IChjbGljayk9XCJjaG9vc2VuSXNzdWUoJycpXCIgY2xhc3M9XCJtYWluY2FyZC1jb250ZW50IGJnLXdoaXRlIHB4LTMgcHktMiBjdXJzb3ItcG9pbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTRcIiBoZWlnaHQ9XCIxNFwiIHZpZXdCb3g9XCIwIDAgMTQgMTRcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTEyLjgzMjcgNi45OTkzNUgxLjE2NjAyTTEuMTY2MDIgNi45OTkzNUw2Ljk5OTM1IDEyLjgzMjdNMS4xNjYwMiA2Ljk5OTM1TDYuOTk5MzUgMS4xNjYwMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjMzQ0MDU0XCIgc3Ryb2tlLXdpZHRoPVwiMS42N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWFpbmNhcmQtY29udGVudCB3LTEwMCBtdC0yIHB4LTQgcHktMiBwYi00XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWFpbmNhcmQtbGFiZWwgZnctc2VtaWJvbGQgcHktMlwiPlBsZWFzZSBzZWxlY3QgdGhlIHJlbGV2YW50IHByb2JsZW0gZmFjaW5nIGZyb20gdGhlIGZvbGxvd2luZzwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgaXNzdWUgb2Ygc2Vjb25kYXJ5SXNzdWVzOyBsZXQgaW5kZXggPSBpbmRleFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtYWluY2FyZC1jb250ZW50IGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXIgdy0xMDAgbXQtMiBweC00IHB5LTQgY3Vyc29yLXBvaW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVDaGVja2JveChpbmRleClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj48aW1nIGNsYXNzPVwicGUtM1wiIHNyYz1cIi4vYXNzZXRzL3RhbmdvL0ltYWdlcy9GZWF0dXJlZCBpY29uLnBuZ1wiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJoZWFkaW5ndGV4dFwiPnt7IGlzc3VlLm5hbWUgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdW5kZWRjaGVjayBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBbY2hlY2tlZF09XCJpc3N1ZS5jaGVja2VkXCIgY2xhc3M9XCJwLTBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gSGliZXJuYXRpb24gKyBjb21tZW50IHJvdywgY29waWVkIGZyb20gdGhlIFYxIHRhYlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0aWNrZXQtaW5mcmEuY29tcG9uZW50Lmh0bWw6MzMzKSBzbyBib3RoIHJlYWQgdGhlIHNhbWUuIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cCBwdC02XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwiaGliZXJuYXRpb25WMlwiIGNsYXNzPVwibWFpbmNhcmQtbGFiZWwgZnctc2VtaWJvbGQgbWItMlwiPkhpYmVybmF0aW9uIChpbiBkYXlzKSAqPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3LTI1MHB4IHBvc2l0aW9uLXJlbGF0aXZlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBvc2l0aW9uLWFic29sdXRlIHRyYW5zbGF0ZS1taWRkbGUteSB0b3AtNTAgbWUtNSBwcy0zIHRpY2tldERheXNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzdmctaWNvbiB0b2dnbGUtb2ZmIHN2Zy1pY29uLTFcIiBbbmdDbGFzc109XCJoaWJlcm5hdGlvbkRheXMgPT09IDAgPyAncGUtbm9uZScgOiAnJ1wiIChjbGljayk9XCJkZWNyZWFzZUhpYmVybmF0aW9uKClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjFcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjEgMjBcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNNC42NjYwMiAxMEgxNi4zMzI3XCIgc3Ryb2tlPVwiIzM0NDA1NFwiIHN0cm9rZS13aWR0aD1cIjEuNjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIGlkPVwiaGliZXJuYXRpb25WMlwiIHN0eWxlPVwidGV4dC1hbGlnbjogY2VudGVyO1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJoaWJlcm5hdGlvbkRheXNcIiBwbGFjZWhvbGRlcj1cIjBcIiByZWFkb25seSAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwb3NpdGlvbi1hYnNvbHV0ZSB0cmFuc2xhdGUtbWlkZGxlLXkgdG9wLTUwIGVuZC0wIG1lLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzdmctaWNvbiB0b2dnbGUtb24gc3ZnLWljb24tMSB0aWNrZXREYXlzXCIgKGNsaWNrKT1cImluY3JlYXNlSGliZXJuYXRpb24oKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMVwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMSAyMFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xMC40OTkzIDQuMTY2NVYxNS44MzMyTTQuNjY2MDIgOS45OTk4NEgxNi4zMzI3XCIgc3Ryb2tlPVwiIzM0NDA1NFwiIHN0cm9rZS13aWR0aD1cIjEuNjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gVGhlIHBhcGVyY2xpcCBpcyBpbmVydDogVjEgcG9zdHMgdG8gdXBsb2FkQXR0YWNobWVudHMvLCBhbmQgdGhlcmVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcyBub3doZXJlIHRvIHVwbG9hZCB0byB3aGlsZSB0aGUgZGF0YSBpcyBtb2NrZWQuIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlciBtdC0xMCBtYi01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiB0eXBlPVwidGV4dFwiIFsobmdNb2RlbCldPVwiY29tbWVudHNcIiBwbGFjZWhvbGRlcj1cIkFkZCB5b3VyIGNvbW1lbnRzLi5cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXIgYnRuIGJ0bi1kZWZhdWx0IGJ0bi1vdXRsaW5lIG1zLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xNy44NjY2IDkuMjA4MzVMMTAuMjA4MiAxNi44NjY3QzkuMjcwMDUgMTcuODA0OSA3Ljk5NzU3IDE4LjMzMiA2LjY3MDc1IDE4LjMzMkM1LjM0MzkzIDE4LjMzMiA0LjA3MTQ1IDE3LjgwNDkgMy4xMzMyNSAxNi44NjY3QzIuMTk1MDUgMTUuOTI4NSAxLjY2Nzk3IDE0LjY1NiAxLjY2Nzk3IDEzLjMyOTJDMS42Njc5NyAxMi4wMDI0IDIuMTk1MDUgMTAuNzI5OSAzLjEzMzI1IDkuNzkxNjhMMTAuNzkxNiAyLjEzMzM1QzExLjQxNzEgMS41MDc4OCAxMi4yNjU0IDEuMTU2NDkgMTMuMTQ5OSAxLjE1NjQ5QzE0LjAzNDUgMS4xNTY0OSAxNC44ODI4IDEuNTA3ODggMTUuNTA4MiAyLjEzMzM1QzE2LjEzMzcgMi43NTg4MiAxNi40ODUxIDMuNjA3MTMgMTYuNDg1MSA0LjQ5MTY4QzE2LjQ4NTEgNS4zNzYyMyAxNi4xMzM3IDYuMjI0NTUgMTUuNTA4MiA2Ljg1MDAyTDcuODQxNTggMTQuNTA4M0M3LjUyODg1IDE0LjgyMTEgNy4xMDQ2OSAxNC45OTY4IDYuNjYyNDIgMTQuOTk2OEM2LjIyMDE0IDE0Ljk5NjggNS43OTU5OCAxNC44MjExIDUuNDgzMjUgMTQuNTA4M0M1LjE3MDUxIDE0LjE5NTYgNC45OTQ4MiAxMy43NzE1IDQuOTk0ODIgMTMuMzI5MkM0Ljk5NDgyIDEyLjg4NjkgNS4xNzA1MSAxMi40NjI3IDUuNDgzMjUgMTIuMTVMMTIuNTU4MiA1LjA4MzM1XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiMzNDQwNTRcIiBzdHJva2Utd2lkdGg9XCIxLjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgbXMtM1wiIFtkaXNhYmxlZF09XCIhY2FuU3VibWl0SXNzdWVcIiAoY2xpY2spPVwic3VibWl0SXNzdWUoKVwiPlN1Ym1pdDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8L2Rpdj5cclxuPC9kaXY+XHJcblxyXG48IS0tIE9wdGlvbiBpY29ucywgZGVmaW5lZCBvbmNlIGJlY2F1c2UgZWFjaCBpcyB1c2VkIHR3aWNlOiBpbiB0aGUgb3B0aW9uIGxpc3RcclxuICAgICBhbmQgYWdhaW4gaW4gdGhlIGNob3Nlbi1pc3N1ZSBiYXIuIFBhdGhzIGFyZSBjb3BpZWQgdmVyYmF0aW0gZnJvbVxyXG4gICAgIHRpY2tldC1pbmZyYS5jb21wb25lbnQuaHRtbCBzbyB0aGUgdHdvIHRhYnMgbWF0Y2ggcGl4ZWwgZm9yIHBpeGVsLiAtLT5cclxuPG5nLXRlbXBsYXRlICNpbnRlcm5ldEljb24+XHJcbiAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICA8cGF0aCBkPVwiTTIxIDEyQzIxIDcuMDI5MyAxNi45NzA3IDMgMTIgM0M3LjAyOTMgMyAzIDcuMDI5MyAzIDEyQzMgMTYuOTcwNyA3LjAyOTMgMjEgMTIgMjFcIiBmaWxsPVwid2hpdGVcIiAvPlxyXG4gICAgICAgIDxwYXRoIGQ9XCJNMTIuOSAzLjA0NTA0QzEyLjkgMy4wNDUwNCAxNS42IDYuNjAwMDQgMTUuNiAxMkwxMi45IDMuMDQ1MDRaTTExLjEgMjAuOTU1QzExLjEgMjAuOTU1IDguNCAxNy40IDguNCAxMkM4LjQgNi42MDAwNCAxMS4xIDMuMDQ1MDQgMTEuMSAzLjA0NTA0TTMuNTY3IDE1LjE1SDEySDMuNTY3Wk0zLjU2NyA4Ljg1MDA0SDIwLjQzM0gzLjU2N1pcIiBmaWxsPVwid2hpdGVcIiAvPlxyXG4gICAgICAgIDxwYXRoIGQ9XCJNMjAuODkxMSAxNy4zMjUyQzIxLjMzNTcgMTcuNTk4OCAyMS4zMDc4IDE4LjI2MzkgMjAuODUwNiAxOC4zMTYxTDE4LjU0MDMgMTguNTc4TDE3LjUwNDQgMjAuNjU4OEMxNy4yOTkyIDIxLjA3MTkgMTYuNjY0NyAyMC44Njk0IDE2LjU1OTQgMjAuMzU4MkwxNS40Mjk5IDE0Ljg1MzhDMTUuMzQwOCAxNC40MjE4IDE1LjcyOTYgMTQuMTUgMTYuMTA0OSAxNC4zODEzTDIwLjg5MTEgMTcuMzI1MlpcIiBmaWxsPVwid2hpdGVcIiAvPlxyXG4gICAgICAgIDxwYXRoIGQ9XCJNMjAuMjUgMTJDMjAuMjUgMTIuNDE0MiAyMC41ODU4IDEyLjc1IDIxIDEyLjc1QzIxLjQxNDIgMTIuNzUgMjEuNzUgMTIuNDE0MiAyMS43NSAxMkgyMC4yNVpNMTIgMjEuNzVDMTIuNDE0MiAyMS43NSAxMi43NSAyMS40MTQyIDEyLjc1IDIxQzEyLjc1IDIwLjU4NTggMTIuNDE0MiAyMC4yNSAxMiAyMC4yNVYyMS43NVpNMTMuNDk3MyAyLjU5MTQyQzEzLjI0NjcgMi4yNjE1NiAxMi43NzYyIDIuMTk3MjUgMTIuNDQ2NCAyLjQ0Nzc4QzEyLjExNjUgMi42OTgzIDEyLjA1MjIgMy4xNjg4IDEyLjMwMjcgMy40OTg2NkwxMy40OTczIDIuNTkxNDJaTTE0Ljg1IDEyQzE0Ljg1IDEyLjQxNDMgMTUuMTg1OCAxMi43NSAxNS42IDEyLjc1QzE2LjAxNDIgMTIuNzUgMTYuMzUgMTIuNDE0MyAxNi4zNSAxMkgxNC44NVpNMTAuNTAyNyAyMS40MDg3QzEwLjc1MzMgMjEuNzM4NSAxMS4yMjM4IDIxLjgwMjggMTEuNTUzNiAyMS41NTIzQzExLjg4MzUgMjEuMzAxOCAxMS45NDc4IDIwLjgzMTMgMTEuNjk3MyAyMC41MDE0TDEwLjUwMjcgMjEuNDA4N1pNMTEuNjk3MyAzLjQ5ODY2QzExLjk0NzggMy4xNjg4IDExLjg4MzUgMi42OTgzIDExLjU1MzYgMi40NDc3OEMxMS4yMjM4IDIuMTk3MjUgMTAuNzUzMyAyLjI2MTU2IDEwLjUwMjcgMi41OTE0MkwxMS42OTczIDMuNDk4NjZaTTMuNTY3IDE0LjRDMy4xNTI3OSAxNC40IDIuODE3IDE0LjczNTggMi44MTcgMTUuMTVDMi44MTcgMTUuNTY0MyAzLjE1Mjc5IDE1LjkgMy41NjcgMTUuOVYxNC40Wk0xMiAxNS45QzEyLjQxNDIgMTUuOSAxMi43NSAxNS41NjQzIDEyLjc1IDE1LjE1QzEyLjc1IDE0LjczNTggMTIuNDE0MiAxNC40IDEyIDE0LjRWMTUuOVpNMy41NjcgOC4xMDAwNEMzLjE1Mjc5IDguMTAwMDQgMi44MTcgOC40MzU4MyAyLjgxNyA4Ljg1MDA0QzIuODE3IDkuMjY0MjYgMy4xNTI3OSA5LjYwMDA0IDMuNTY3IDkuNjAwMDRWOC4xMDAwNFpNMjAuNDMzIDkuNjAwMDRDMjAuODQ3MiA5LjYwMDA0IDIxLjE4MyA5LjI2NDI2IDIxLjE4MyA4Ljg1MDA0QzIxLjE4MyA4LjQzNTgzIDIwLjg0NzIgOC4xMDAwNCAyMC40MzMgOC4xMDAwNFY5LjYwMDA0Wk0yMC44OTExIDE3LjMyNTJMMjEuMjg0MiAxNi42ODY1TDIxLjI4NCAxNi42ODY0TDIwLjg5MTEgMTcuMzI1MlpNMjAuODUwNiAxOC4zMTYxTDIwLjkzNTEgMTkuMDYxM0wyMC45MzU3IDE5LjA2MTNMMjAuODUwNiAxOC4zMTYxWk0xOC41NDAzIDE4LjU3OEwxOC40NTU4IDE3LjgzMjhMMTguMDUwNiAxNy44Nzg3TDE3Ljg2ODkgMTguMjQzOEwxOC41NDAzIDE4LjU3OFpNMTcuNTA0NCAyMC42NTg4TDE2LjgzMyAyMC4zMjQ2TDE2LjgzMjcgMjAuMzI1MkwxNy41MDQ0IDIwLjY1ODhaTTE2LjU1OTQgMjAuMzU4MkwxNS44MjQ3IDIwLjUwOUwxNS44MjQ4IDIwLjUwOTVMMTYuNTU5NCAyMC4zNTgyWk0xNS40Mjk5IDE0Ljg1MzhMMTYuMTY0NiAxNC43MDNMMTYuMTY0NCAxNC43MDIzTDE1LjQyOTkgMTQuODUzOFpNMTYuMTA0OSAxNC4zODEzTDE1LjcxMTQgMTUuMDE5OEwxNS43MTIgMTUuMDIwMUwxNi4xMDQ5IDE0LjM4MTNaTTIxLjc1IDEyQzIxLjc1IDYuNjE1MDkgMTcuMzg0OSAyLjI1IDEyIDIuMjVWMy43NUMxNi41NTY1IDMuNzUgMjAuMjUgNy40NDM1MSAyMC4yNSAxMkgyMS43NVpNMTIgMi4yNUM2LjYxNTA5IDIuMjUgMi4yNSA2LjYxNTA5IDIuMjUgMTJIMy43NUMzLjc1IDcuNDQzNTEgNy40NDM1MSAzLjc1IDEyIDMuNzVWMi4yNVpNMi4yNSAxMkMyLjI1IDE3LjM4NDkgNi42MTUwOSAyMS43NSAxMiAyMS43NVYyMC4yNUM3LjQ0MzUxIDIwLjI1IDMuNzUgMTYuNTU2NSAzLjc1IDEySDIuMjVaTTEyLjkgMy4wNDUwNEMxMi4zMDI3IDMuNDk4NjYgMTIuMzAyNiAzLjQ5ODQ2IDEyLjMwMjQgMy40OTgyOEMxMi4zMDI0IDMuNDk4MjMgMTIuMzAyMyAzLjQ5ODA2IDEyLjMwMjIgMy40OTc5N0MxMi4zMDIxIDMuNDk3NzkgMTIuMzAyIDMuNDk3NjcgMTIuMzAxOSAzLjQ5NzZDMTIuMzAxOCAzLjQ5NzQ2IDEyLjMwMTkgMy40OTc1MyAxMi4zMDIxIDMuNDk3ODFDMTIuMzAyNSAzLjQ5ODM4IDEyLjMwMzYgMy40OTk4IDEyLjMwNTMgMy41MDIwNkMxMi4zMDg2IDMuNTA2NTggMTIuMzE0NCAzLjUxNDQ3IDEyLjMyMjUgMy41MjU2N0MxMi4zMzg3IDMuNTQ4MDkgMTIuMzY0MSAzLjU4Mzc1IDEyLjM5NzMgMy42MzIyNkMxMi40NjM4IDMuNzI5MjkgMTIuNTYxNiAzLjg3NzUyIDEyLjY4MDUgNC4wNzM2MUMxMi45MTgzIDQuNDY2MDYgMTMuMjM5MyA1LjA0ODYzIDEzLjU2MTQgNS43OTQ3OEMxNC4yMDYxIDcuMjg4MzcgMTQuODUgOS40MjUyNiAxNC44NSAxMkgxNi4zNUMxNi4zNSA5LjE3NDgzIDE1LjY0MzkgNi44MzQyMiAxNC45Mzg2IDUuMjAwMzFDMTQuNTg1NyA0LjM4MjcxIDE0LjIzMTcgMy43MzkwMiAxMy45NjMzIDMuMjk2MTZDMTMuODI5IDMuMDc0NiAxMy43MTU5IDIuOTAyOTEgMTMuNjM0NyAyLjc4NDQzQzEzLjU5NDEgMi43MjUxOCAxMy41NjE1IDIuNjc5MiAxMy41MzgxIDIuNjQ2OUMxMy41MjY1IDIuNjMwNzUgMTMuNTE3MSAyLjYxODAyIDEzLjUxMDIgMi42MDg3NkMxMy41MDY4IDIuNjA0MTMgMTMuNTA0IDIuNjAwMzYgMTMuNTAxOCAyLjU5NzQ3QzEzLjUwMDcgMi41OTYwMiAxMy40OTk4IDIuNTk0OCAxMy40OTkxIDIuNTkzNzlDMTMuNDk4NyAyLjU5MzI5IDEzLjQ5ODMgMi41OTI4NCAxMy40OTggMi41OTI0NEMxMy40OTc5IDIuNTkyMjQgMTMuNDk3NyAyLjU5MTk5IDEzLjQ5NzYgMi41OTE4OUMxMy40OTc0IDIuNTkxNjUgMTMuNDk3MyAyLjU5MTQyIDEyLjkgMy4wNDUwNFpNMTEuMSAyMC45NTVDMTEuNjk3MyAyMC41MDE0IDExLjY5NzQgMjAuNTAxNiAxMS42OTc2IDIwLjUwMThDMTEuNjk3NiAyMC41MDE5IDExLjY5NzcgMjAuNTAyIDExLjY5NzggMjAuNTAyMUMxMS42OTc5IDIwLjUwMjMgMTEuNjk4IDIwLjUwMjQgMTEuNjk4MSAyMC41MDI1QzExLjY5ODIgMjAuNTAyNiAxMS42OTgxIDIwLjUwMjYgMTEuNjk3OSAyMC41MDIzQzExLjY5NzUgMjAuNTAxNyAxMS42OTY0IDIwLjUwMDMgMTEuNjk0OCAyMC40OThDMTEuNjkxNCAyMC40OTM1IDExLjY4NTYgMjAuNDg1NiAxMS42Nzc1IDIwLjQ3NDRDMTEuNjYxMyAyMC40NTIgMTEuNjM1OSAyMC40MTYzIDExLjYwMjcgMjAuMzY3OEMxMS41MzYyIDIwLjI3MDggMTEuNDM4NCAyMC4xMjI2IDExLjMxOTUgMTkuOTI2NUMxMS4wODE3IDE5LjUzNCAxMC43NjA3IDE4Ljk1MTUgMTAuNDM4NiAxOC4yMDUzQzkuNzkzODggMTYuNzExNyA5LjE1IDE0LjU3NDggOS4xNSAxMkg3LjY1QzcuNjUgMTQuODI1MyA4LjM1NjEzIDE3LjE2NTkgOS4wNjE0MiAxOC43OTk4QzkuNDE0MzQgMTkuNjE3NCA5Ljc2ODMzIDIwLjI2MTEgMTAuMDM2NyAyMC43MDM5QzEwLjE3MSAyMC45MjU1IDEwLjI4NDEgMjEuMDk3MiAxMC4zNjUzIDIxLjIxNTdDMTAuNDA1OSAyMS4yNzQ5IDEwLjQzODUgMjEuMzIwOSAxMC40NjE5IDIxLjM1MzJDMTAuNDczNSAyMS4zNjkzIDEwLjQ4MjkgMjEuMzgyMSAxMC40ODk4IDIxLjM5MTNDMTAuNDkzMiAyMS4zOTYgMTAuNDk2IDIxLjM5OTcgMTAuNDk4MiAyMS40MDI2QzEwLjQ5OTMgMjEuNDA0MSAxMC41MDAyIDIxLjQwNTMgMTAuNTAwOSAyMS40MDYzQzEwLjUwMTMgMjEuNDA2OCAxMC41MDE3IDIxLjQwNzMgMTAuNTAyIDIxLjQwNzZDMTAuNTAyMSAyMS40MDc4IDEwLjUwMjMgMjEuNDA4MSAxMC41MDI0IDIxLjQwODJDMTAuNTAyNiAyMS40MDg0IDEwLjUwMjcgMjEuNDA4NyAxMS4xIDIwLjk1NVpNOS4xNSAxMkM5LjE1IDkuNDI1MjYgOS43OTM4OCA3LjI4ODM3IDEwLjQzODYgNS43OTQ3OEMxMC43NjA3IDUuMDQ4NjMgMTEuMDgxNyA0LjQ2NjA2IDExLjMxOTUgNC4wNzM2MUMxMS40Mzg0IDMuODc3NTIgMTEuNTM2MiAzLjcyOTI5IDExLjYwMjcgMy42MzIyNkMxMS42MzU5IDMuNTgzNzUgMTEuNjYxMyAzLjU0ODA5IDExLjY3NzUgMy41MjU2N0MxMS42ODU2IDMuNTE0NDcgMTEuNjkxNCAzLjUwNjU4IDExLjY5NDggMy41MDIwNkMxMS42OTY0IDMuNDk5OCAxMS42OTc1IDMuNDk4MzggMTEuNjk3OSAzLjQ5NzgxQzExLjY5ODEgMy40OTc1MyAxMS42OTgyIDMuNDk3NDYgMTEuNjk4MSAzLjQ5NzZDMTEuNjk4IDMuNDk3NjcgMTEuNjk3OSAzLjQ5Nzc5IDExLjY5NzggMy40OTc5N0MxMS42OTc3IDMuNDk4MDYgMTEuNjk3NiAzLjQ5ODIzIDExLjY5NzYgMy40OTgyOEMxMS42OTc0IDMuNDk4NDYgMTEuNjk3MyAzLjQ5ODY2IDExLjEgMy4wNDUwNEMxMC41MDI3IDIuNTkxNDIgMTAuNTAyNiAyLjU5MTY1IDEwLjUwMjQgMi41OTE4OUMxMC41MDIzIDIuNTkxOTkgMTAuNTAyMSAyLjU5MjI0IDEwLjUwMiAyLjU5MjQ0QzEwLjUwMTcgMi41OTI4NCAxMC41MDEzIDIuNTkzMjkgMTAuNTAwOSAyLjU5Mzc5QzEwLjUwMDIgMi41OTQ4IDEwLjQ5OTMgMi41OTYwMiAxMC40OTgyIDIuNTk3NDdDMTAuNDk2IDIuNjAwMzYgMTAuNDkzMiAyLjYwNDEzIDEwLjQ4OTggMi42MDg3NkMxMC40ODI5IDIuNjE4MDIgMTAuNDczNSAyLjYzMDc1IDEwLjQ2MTkgMi42NDY5QzEwLjQzODUgMi42NzkyIDEwLjQwNTkgMi43MjUxOCAxMC4zNjUzIDIuNzg0NDNDMTAuMjg0MSAyLjkwMjkxIDEwLjE3MSAzLjA3NDYgMTAuMDM2NyAzLjI5NjE2QzkuNzY4MzMgMy43MzkwMiA5LjQxNDM0IDQuMzgyNzEgOS4wNjE0MiA1LjIwMDMxQzguMzU2MTMgNi44MzQyMiA3LjY1IDkuMTc0ODMgNy42NSAxMkg5LjE1Wk0zLjU2NyAxNS45SDEyVjE0LjRIMy41NjdWMTUuOVpNMy41NjcgOS42MDAwNEgyMC40MzNWOC4xMDAwNEgzLjU2N1Y5LjYwMDA0Wk0yMC40OTggMTcuOTYzOUMyMC40NzkyIDE3Ljk1MjQgMjAuNDU3NSAxNy45MjUyIDIwLjQ1OTcgMTcuODcyN0MyMC40NjA5IDE3Ljg0MzQgMjAuNDcxNSAxNy43NzcyIDIwLjUyOTcgMTcuNzA1NEMyMC41OTYxIDE3LjYyMzUgMjAuNjg4OSAxNy41Nzk3IDIwLjc2NTUgMTcuNTcwOUwyMC45MzU3IDE5LjA2MTNDMjEuNjE2NyAxOC45ODM1IDIxLjkzODQgMTguNDE3OSAyMS45NTg0IDE3LjkzNDZDMjEuOTc3NiAxNy40NjgyIDIxLjc0NzYgMTYuOTcxNyAyMS4yODQyIDE2LjY4NjVMMjAuNDk4IDE3Ljk2MzlaTTIwLjc2NjEgMTcuNTcwOUwxOC40NTU4IDE3LjgzMjhMMTguNjI0OCAxOS4zMjMyTDIwLjkzNTEgMTkuMDYxM0wyMC43NjYxIDE3LjU3MDlaTTE3Ljg2ODkgMTguMjQzOEwxNi44MzMgMjAuMzI0NkwxOC4xNzU4IDIwLjk5MzFMMTkuMjExNyAxOC45MTIzTDE3Ljg2ODkgMTguMjQzOFpNMTYuODMyNyAyMC4zMjUyQzE2Ljg2NjggMjAuMjU2NSAxNi45Mzk1IDIwLjE4MzkgMTcuMDM5OCAyMC4xNDkyQzE3LjEyNzcgMjAuMTE4OCAxNy4xOTQgMjAuMTMxNiAxNy4yMjIxIDIwLjE0MDVDMTcuMjcyIDIwLjE1NjQgMTcuMjg5NiAyMC4xODU3IDE3LjI5NCAyMC4yMDY5TDE1LjgyNDggMjAuNTA5NUMxNS45MzQ1IDIxLjA0MTkgMTYuMzIyIDIxLjQyODEgMTYuNzY2OCAyMS41Njk3QzE3LjIyODYgMjEuNzE2OCAxNy44NzA3IDIxLjYwNzMgMTguMTc2MSAyMC45OTI1TDE2LjgzMjcgMjAuMzI1MlpNMTcuMjk0MSAyMC4yMDc0TDE2LjE2NDYgMTQuNzAzTDE0LjY5NTIgMTUuMDA0NkwxNS44MjQ3IDIwLjUwOUwxNy4yOTQxIDIwLjIwNzRaTTE2LjE2NDQgMTQuNzAyM0MxNi4xNzIzIDE0Ljc0MDYgMTYuMTY2NiAxNC44ODMgMTYuMDIzMiAxNC45ODMzQzE1Ljg4IDE1LjA4MzUgMTUuNzQ0NiAxNS4wNDAyIDE1LjcxMTQgMTUuMDE5OEwxNi40OTg0IDEzLjc0MjhDMTYuMDg5OSAxMy40OTExIDE1LjU3MjQgMTMuNDY4IDE1LjE2MzMgMTMuNzU0M0MxNC43NTQgMTQuMDQwNyAxNC41OTg0IDE0LjUzNSAxNC42OTU0IDE1LjAwNTNMMTYuMTY0NCAxNC43MDIzWk0xNS43MTIgMTUuMDIwMUwyMC40OTgyIDE3Ljk2NEwyMS4yODQgMTYuNjg2NEwxNi40OTc4IDEzLjc0MjVMMTUuNzEyIDE1LjAyMDFaXCIgZmlsbD1cIiM0NzU0NjdcIiAvPlxyXG4gICAgPC9zdmc+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI2NhbWVyYUljb24+XHJcbiAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDI0IDIwXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICA8cGF0aCBkPVwiTTIzIDE3QzIzIDE3LjUzMDQgMjIuNzg5MyAxOC4wMzkxIDIyLjQxNDIgMTguNDE0MkMyMi4wMzkxIDE4Ljc4OTMgMjEuNTMwNCAxOSAyMSAxOUgzQzIuNDY5NTcgMTkgMS45NjA4NiAxOC43ODkzIDEuNTg1NzkgMTguNDE0MkMxLjIxMDcxIDE4LjAzOTEgMSAxNy41MzA0IDEgMTdWNkMxIDUuNDY5NTcgMS4yMTA3MSA0Ljk2MDg2IDEuNTg1NzkgNC41ODU3OUMxLjk2MDg2IDQuMjEwNzEgMi40Njk1NyA0IDMgNEg3TDkgMUgxNUwxNyA0SDIxQzIxLjUzMDQgNCAyMi4wMzkxIDQuMjEwNzEgMjIuNDE0MiA0LjU4NTc5QzIyLjc4OTMgNC45NjA4NiAyMyA1LjQ2OTU3IDIzIDZWMTdaXCJcclxuICAgICAgICAgICAgc3Ryb2tlPVwiIzQ3NTQ2N1wiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgIDxwYXRoIGQ9XCJNMTIgMTVDMTQuMjA5MSAxNSAxNiAxMy4yMDkxIDE2IDExQzE2IDguNzkwODYgMTQuMjA5MSA3IDEyIDdDOS43OTA4NiA3IDggOC43OTA4NiA4IDExQzggMTMuMjA5MSA5Ljc5MDg2IDE1IDEyIDE1WlwiXHJcbiAgICAgICAgICAgIHN0cm9rZT1cIiM0NzU0NjdcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgIDwvc3ZnPlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICNzeXN0ZW1JY29uPlxyXG4gICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjE0XCIgdmlld0JveD1cIjAgMCAyMCAxNFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgPHBhdGggZD1cIk0xMiAyVjlIMlYySDEyWk0yIDBDMC44OTY4NzUgMCAwIDAuODk2ODc1IDAgMlY5QzAgMTAuMTAzMSAwLjg5Njg3NSAxMSAyIDExSDUuNjY1NjNMNS4zMzEyNSAxMkgzQzIuNDQ2ODggMTIgMiAxMi40NDY5IDIgMTNDMiAxMy41NTMxIDIuNDQ2ODggMTQgMyAxNEgxMUMxMS41NTMxIDE0IDEyIDEzLjU1MzEgMTIgMTNDMTIgMTIuNDQ2OSAxMS41NTMxIDEyIDExIDEySDguNjY1NjJMOC4zMzEyNSAxMUgxMkMxMy4xMDMxIDExIDE0IDEwLjEwMzEgMTQgOVYyQzE0IDAuODk2ODc1IDEzLjEwMzEgMCAxMiAwSDJaTTE2LjUgMEMxNS42NzE5IDAgMTUgMC42NzE4NzUgMTUgMS41VjEyLjVDMTUgMTMuMzI4MSAxNS42NzE5IDE0IDE2LjUgMTRIMTguNUMxOS4zMjgxIDE0IDIwIDEzLjMyODEgMjAgMTIuNVYxLjVDMjAgMC42NzE4NzUgMTkuMzI4MSAwIDE4LjUgMEgxNi41Wk0xNyAySDE4QzE4LjI3NSAyIDE4LjUgMi4yMjUgMTguNSAyLjVDMTguNSAyLjc3NSAxOC4yNzUgMyAxOCAzSDE3QzE2LjcyNSAzIDE2LjUgMi43NzUgMTYuNSAyLjVDMTYuNSAyLjIyNSAxNi43MjUgMiAxNyAyWk0xNi41IDQuNUMxNi41IDQuMjI1IDE2LjcyNSA0IDE3IDRIMThDMTguMjc1IDQgMTguNSA0LjIyNSAxOC41IDQuNUMxOC41IDQuNzc1IDE4LjI3NSA1IDE4IDVIMTdDMTYuNzI1IDUgMTYuNSA0Ljc3NSAxNi41IDQuNVpNMTcuNSA5LjVDMTcuNzY1MiA5LjUgMTguMDE5NiA5LjYwNTM2IDE4LjIwNzEgOS43OTI4OUMxOC4zOTQ2IDkuOTgwNDMgMTguNSAxMC4yMzQ4IDE4LjUgMTAuNUMxOC41IDEwLjc2NTIgMTguMzk0NiAxMS4wMTk2IDE4LjIwNzEgMTEuMjA3MUMxOC4wMTk2IDExLjM5NDYgMTcuNzY1MiAxMS41IDE3LjUgMTEuNUMxNy4yMzQ4IDExLjUgMTYuOTgwNCAxMS4zOTQ2IDE2Ljc5MjkgMTEuMjA3MUMxNi42MDU0IDExLjAxOTYgMTYuNSAxMC43NjUyIDE2LjUgMTAuNUMxNi41IDEwLjIzNDggMTYuNjA1NCA5Ljk4MDQzIDE2Ljc5MjkgOS43OTI4OUMxNi45ODA0IDkuNjA1MzYgMTcuMjM0OCA5LjUgMTcuNSA5LjVaXCJcclxuICAgICAgICAgICAgZmlsbD1cIiM0NzU0NjdcIiAvPlxyXG4gICAgPC9zdmc+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI3N0b3JlSWNvbj5cclxuICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgIDxwYXRoIGQ9XCJNMy4wODk5NSA2Ljg4MzY5TDMuMDI0MDEgNi45ODY2OUMyLjMwMzU4IDguMjU1NTcgMy4wNjEwMSA5Ljg3OTQ1IDQuNDY0NjQgMTAuMDY2MkM0LjU4NjI3IDEwLjA4MTEgNC43MDExMiAxMC4wODkyIDQuODE0NSAxMC4wODkyQzUuNTUyNTUgMTAuMDg5MiA2LjIwNTIzIDkuNzcyMjkgNi42NTk1MyA5LjI3OTE3TDcuMjEyODYgOC42Nzg1NEw3Ljc2NDMyIDkuMjgwODlDOC4yMTM2NyA5Ljc3MTcxIDguODY1MiAxMC4wODkyIDkuNjA3NzYgMTAuMDg5MkMxMC4zNDcxIDEwLjA4OTIgMTEuMDAyMiA5Ljc3MTM3IDExLjQ1MTIgOS4yODA4OUwxMi4wMDQ0IDguNjc2NjVMMTIuNTU3NiA5LjI4MDg5QzEzLjAwNjYgOS43NzEzNyAxMy42NjE3IDEwLjA4OTIgMTQuNDAxIDEwLjA4OTJDMTUuMTQwNCAxMC4wODkyIDE1Ljc5NTQgOS43NzEzNyAxNi4yNDQ1IDkuMjgwODlMMTYuNzk3NyA4LjY3NjY1TDE3LjM1MDggOS4yODA4OUMxNy43OTk5IDkuNzcxMzcgMTguNDU0OSAxMC4wODkyIDE5LjE5NDMgMTAuMDg5MkMxOS4zMDQxIDEwLjA4OTIgMTkuNDIyMyAxMC4wODExIDE5LjU0MzMgMTAuMDY2M0MyMC45NzcyIDkuODcxNjggMjEuNzM1NSA4LjE2Mzg3IDIwLjkxNTUgNi44ODQxOUMyMC45MTU0IDYuODg0MTMgMjAuOTE1NCA2Ljg4NDA3IDIwLjkxNTQgNi44ODQwMkwxOC44MDU2IDMuNTk0MjlMMTguODA1NiAzLjU5NDI5TDE4LjgwNDYgMy41OTI4MkMxOC43NTgyIDMuNTIwMDIgMTguNjY0OSAzLjQ2NDIzIDE4LjU1ODQgMy40NjQyM0g1LjQ0MzA3QzUuMzM2NSAzLjQ2NDIzIDUuMjQzMjYgMy41MjAwMiA1LjE5NjgxIDMuNTkyODJMNS4xOTYxOSAzLjU5Mzc5TDMuMDg5OTUgNi44ODM2OVpNNC44MTgxOCAxMi43NDk5QzQuNzE2NDQgMTIuNzQ5OSA0LjYxNiAxMi43NDY4IDQuNTE2OSAxMi43NDFWMTYuNjQyOFYxOC45NjQyQzQuNTE2OSAxOS44MjExIDUuMjI2NjMgMjAuNTM1NyA2LjExOTQyIDIwLjUzNTdIMTcuODgyQzE4Ljc3NDggMjAuNTM1NyAxOS40ODQ1IDE5LjgyMTEgMTkuNDg0NSAxOC45NjQyVjE2LjY0MjhWMTIuNzQxNUMxOS4zODc0IDEyLjc0NyAxOS4yODkzIDEyLjc0OTkgMTkuMTkwNiAxMi43NDk5QzE5LjAwMjIgMTIuNzQ5OSAxOC44MTU3IDEyLjczOTggMTguNjMyIDEyLjcyMDJWMTYuNjQyOFYxNy4zOTI4SDE3Ljg4Mkg2LjExOTQySDUuMzY5NDJWMTYuNjQyOFYxMi43MjFDNS4xODg2NiAxMi43NCA1LjAwNDcyIDEyLjc0OTkgNC44MTgxOCAxMi43NDk5WlwiXHJcbiAgICAgICAgICAgIHN0cm9rZT1cIiM0NzU0NjdcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiAvPlxyXG4gICAgPC9zdmc+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI2FwcEljb24+XHJcbiAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICA8cGF0aCBkPVwiTTggMUgxVjhIOFYxWlwiIHN0cm9rZT1cIiM0NzU0NjdcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICA8cGF0aCBkPVwiTTE5IDFIMTJWOEgxOVYxWlwiIHN0cm9rZT1cIiM0NzU0NjdcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICA8cGF0aCBkPVwiTTE5IDEySDEyVjE5SDE5VjEyWlwiIHN0cm9rZT1cIiM0NzU0NjdcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICA8cGF0aCBkPVwiTTggMTJIMVYxOUg4VjEyWlwiIHN0cm9rZT1cIiM0NzU0NjdcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgIDwvc3ZnPlxyXG48L25nLXRlbXBsYXRlPlxyXG4iXX0=
361
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGlja2V0LWluZnJhLXYyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RhbmdvLXN0b3JlLXRpY2tldC1pbmZyYS9zcmMvbGliL2NvbXBvbmVudHMvdGlja2V0LWluZnJhLXYyL3RpY2tldC1pbmZyYS12Mi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1zdG9yZS10aWNrZXQtaW5mcmEvc3JjL2xpYi9jb21wb25lbnRzL3RpY2tldC1pbmZyYS12Mi90aWNrZXQtaW5mcmEtdjIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQWtDLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM1RixPQUFPLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxvQkFBb0IsRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7Ozs7OztBQThGOUUsTUFBTSxPQUFPLHNCQUFzQjtJQWlEdkI7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQXBERCxXQUFXLENBQU07SUFFVCxRQUFRLEdBQUcsSUFBSSxPQUFPLEVBQVcsQ0FBQztJQUNuRCxZQUFZLENBQU07SUFFbEIsNEVBQTRFO0lBQzVFLHVDQUF1QztJQUN2QyxVQUFVLEdBQWdCLEVBQUUsQ0FBQztJQUM3QixVQUFVLEdBQWdCLEVBQUUsQ0FBQztJQUM3QixVQUFVLEdBQUcsQ0FBQyxDQUFDO0lBQ2YsVUFBVSxHQUFxQixJQUFJLENBQUM7SUFFcEMsNEVBQTRFO0lBQzVFLDBFQUEwRTtJQUMxRSw2REFBNkQ7SUFDN0QsWUFBWSxHQUFHLElBQUksQ0FBQztJQUNwQixXQUFXLEdBQUcsSUFBSSxDQUFDO0lBQ25CLElBQUksT0FBTyxLQUFjLE9BQU8sSUFBSSxDQUFDLFlBQVksSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztJ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LENBQUMsQ0FBQztZQUNuQyxDQUFDO1lBQ0QsS0FBSyxFQUFFLENBQUMsR0FBUSxFQUFFLEVBQUU7Z0JBQ2xCLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO2dCQUN4QixJQUFJLENBQUMsWUFBWSxDQUFDLGFBQWEsQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFLE9BQU8sSUFBSSw0QkFBNEIsQ0FBQyxDQUFDO1lBQ3ZGLENBQUM7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3pCLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDM0IsQ0FBQzt3R0FuV1Usc0JBQXNCOzRGQUF0QixzQkFBc0IsaU5DL0ZuQywrajVDQTRhQTs7NEZEN1VhLHNCQUFzQjtrQkFMbEMsU0FBUzsrQkFDRSxxQkFBcUI7bU1BS3RCLFdBQVc7c0JBQW5CLEtBQUs7Z0JBMkNxQixZQUFZO3NCQUF0QyxTQUFTO3VCQUFDLGNBQWMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgVGVtcGxhdGVSZWYsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBTdWJqZWN0LCBkZWJvdW5jZVRpbWUsIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBOZ2JNb2RhbCB9IGZyb20gJ0BuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwJztcclxuaW1wb3J0IHsgR2xvYmFsU3RhdGVTZXJ2aWNlIH0gZnJvbSAndGFuZ28tYXBwLXVpLWdsb2JhbCc7XHJcbmltcG9ydCB7IFRvYXN0U2VydmljZSB9IGZyb20gJ3RhbmdvLWFwcC11aS1zaGFyZWQnO1xyXG5pbXBvcnQgeyBUaWNrZXRzU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3RpY2tldHMuc2VydmljZSc7XHJcblxyXG50eXBlIFRpY2tldFN0YXR1cyA9ICdvcGVuJyB8ICdpbnByb2dyZXNzJyB8ICdjbG9zZWQnO1xyXG5cclxuaW50ZXJmYWNlIElzc3VlQ2FyZCB7IG5hbWU6IHN0cmluZzsgY291bnQ6IG51bWJlcjsgfVxyXG5cclxuLyoqXHJcbiAqIE9uZSBlbnRyeSBpbiBhIGNoaWxkIHRpY2tldCdzIHRpbWVsaW5lLiBgYW5hbHlzaXNgIGFkZHMgdGhlIGVzY2FsYXRpb24gcGlsbCxcclxuICogdGhlIHJvb3QgY2F1c2UgLyBpc3N1ZSBjYXRlZ29yeSBwYWlyIGFuZCB0aGUgZXhwYW5kYWJsZSBhbmFseXNpczsgYGFjdGl2aXR5YFxyXG4gKiBpcyBhIHN0b3JlZCB0aWNrZXRBY3Rpdml0eSByb3csIGxhaWQgb3V0IGZyb20gYHJlYXNvbnNgOyBgcmFpc2VkYCBpcyBwbGFpblxyXG4gKiB0ZXh0LlxyXG4gKi9cclxudHlwZSBFbnRyeUtpbmQgPSAncmFpc2VkJyB8ICdhbmFseXNpcycgfCAnYWN0aXZpdHknO1xyXG5cclxuLyoqIEEgcHJpbWFyeSBpc3N1ZSB3aXRoIHRoZSBzZWNvbmRhcnkgcmVhc29ucyBjaG9zZW4gdW5kZXIgaXQuICovXHJcbmludGVyZmFjZSBSZWFzb24ge1xyXG4gIHByaW1hcnlJc3N1ZTogc3RyaW5nO1xyXG4gIHNlY29uZGFyeUlzc3VlOiB7IG5hbWU6IHN0cmluZyB9W107XHJcbn1cclxuXHJcbmludGVyZmFjZSBUaW1lbGluZUVudHJ5IHtcclxuICBraW5kOiBFbnRyeUtpbmQ7XHJcbiAgYXV0aG9yOiBzdHJpbmc7XHJcbiAgYXQ6IHN0cmluZztcclxuICB0ZXh0OiBzdHJpbmc7XHJcbiAgLyoqIFdoaWNoIHN0b3JlZCByb3cgdGhpcyBpcyAtIG9ubHkgc2V0IG9uIGBhY3Rpdml0eWAgZW50cmllcy4gKi9cclxuICBhY3Rpdml0eUtpbmQ/OiBzdHJpbmc7XHJcbiAgLyoqIFdoaWNoIHNpZGUgd3JvdGUgaXQ6ICd0YW5nbycsICd1c2VyJyBvciAnc3lzdGVtJy4gKi9cclxuICBhdXRob3JUeXBlPzogc3RyaW5nO1xyXG4gIHJlYXNvbnM/OiBSZWFzb25bXTtcclxuICBjb21tZW50Pzogc3RyaW5nO1xyXG4gIGVzY2FsYXRlZD86IGJvb2xlYW47XHJcbiAgLyoqIFRoZSBhZ2VudCdzIG93biB2ZXJkaWN0LCBzaG93biBhcyBhIHBpbGwuICcnIHdoZW4gaXQgbmV2ZXIgcmVwb3J0ZWQuICovXHJcbiAgYWdlbnRTdGF0dXM/OiBzdHJpbmc7XHJcbiAgcm9vdENhdXNlPzogc3RyaW5nO1xyXG4gIGlzc3VlQ2F0ZWdvcnk/OiBzdHJpbmc7XHJcbiAgLyoqXHJcbiAgICogUmV2ZWFsZWQgYnkgXCJTaG93IHRoZSBmdWxsIGFuYWx5c2lzXCIuIFRoZSBmb3VyIGtleXMgbWF0Y2ggd2hhdFxyXG4gICAqIFBVVCAvdGlja2V0QWdlbnQgd3JpdGVzIG9udG8gdGhlIGNoaWxkJ3MgYGFnZW50YCBzdWItZG9jdW1lbnQsIHNvIHRoaXMgbWFwc1xyXG4gICAqIHN0cmFpZ2h0IGFjcm9zcyB3aGVuIHRoZSBlbmRwb2ludCBpcyB3aXJlZCB1cC5cclxuICAgKi9cclxuICBhbmFseXNpcz86IHsgY2F1c2U6IHN0cmluZzsgcHJvb2Y6IHN0cmluZzsgZml4OiBzdHJpbmc7IG5vdGVzOiBzdHJpbmcgfTtcclxuICBzaG93QW5hbHlzaXM/OiBib29sZWFuO1xyXG59XHJcblxyXG4vKiogT25lIGRvd24gc3RyZWFtLCB3aXRoIGl0cyB3aW5kb3cgYWxyZWFkeSBmb3JtYXR0ZWQgYnkgdGhlIEFQSS4gKi9cclxuaW50ZXJmYWNlIERvd25TdHJlYW0ge1xyXG4gIHN0cmVhbU5hbWU6IHN0cmluZztcclxuICBmcm9tOiBzdHJpbmc7XHJcbiAgdG86IHN0cmluZztcclxufVxyXG5cclxuLyoqXHJcbiAqIEEgY3ljbGUgY2hpbGQgb2YgdGhlIHBhcmVudCB0aWNrZXQuIFRoZSBhY2NvcmRpb24gcm93IHNob3dzIHRoZSBjeWNsZSBpZCBhbmRcclxuICogaG93IG1hbnkgc3RyZWFtcyB3ZXJlIGRvd247IGV4cGFuZGluZyBpdCByZXZlYWxzIHRoZSB0aW1lbGluZS4gQ2xpY2tpbmcgdGhlXHJcbiAqIGNvdW50IG9wZW5zIGBkb3duU3RyZWFtc2AsIHdoaWNoIG5hbWVzIGVhY2ggb25lIGFuZCB3aGVuIGl0IHdlbnQgZG93bi5cclxuICovXHJcbmludGVyZmFjZSBDaGlsZFRpY2tldCB7XHJcbiAgY3ljbGVJZDogc3RyaW5nO1xyXG4gIHN0cmVhbXNEb3duOiBudW1iZXI7XHJcbiAgZG93blN0cmVhbXM6IERvd25TdHJlYW1bXTtcclxuICBzdGF0dXM6IFRpY2tldFN0YXR1cztcclxuICBleHBhbmRlZDogYm9vbGVhbjtcclxuICBlbnRyaWVzOiBUaW1lbGluZUVudHJ5W107XHJcbn1cclxuXHJcbmludGVyZmFjZSBUaWNrZXRSb3cge1xyXG4gIHRpY2tldElkOiBzdHJpbmc7XHJcbiAgY3JlYXRlZEF0OiBzdHJpbmc7XHJcbiAgaXNzdWVDbG9zZWREYXRlOiBzdHJpbmcgfCBudWxsO1xyXG4gIHN0YXR1czogVGlja2V0U3RhdHVzO1xyXG4gIGlzc3VlU3RhdHVzOiAnaWRlbnRpZmllZCcgfCAnbm90aWRlbnRpZmllZCc7XHJcbiAgcHJpbWFyeUlzc3VlOiBzdHJpbmc7XHJcbiAgc2Vjb25kYXJ5SXNzdWU6IHN0cmluZztcclxuICBjb21tZW50czogbnVtYmVyO1xyXG4gIC8qKlxyXG4gICAqIFRoZSBuZXdlc3QgY2hpbGQncyByb290IGNhdXNlLCBzZW50IG9uIHRoZSBsaXN0IHJvdyBzbyBhIGNhcmQgY2FuIHdvcmRcclxuICAgKiBpdHNlbGYgd2l0aG91dCB0aGUgdGltZWxpbmVzLiAnJyB3aGVuIG5vYm9keSBoYXMgZGlhZ25vc2VkIHRoZSB0aWNrZXQuXHJcbiAgICovXHJcbiAgcm9vdENhdXNlOiBzdHJpbmc7XHJcbiAgLyoqIEFic2VudCBvbiBhIGxpc3Qgcm93OyBmaWxsZWQgYnkgdGhlIGRldGFpbCBjYWxsIHdoZW4gdGhlIGNhcmQgaXMgY2xpY2tlZC4gKi9cclxuICBjaGlsZHJlbj86IENoaWxkVGlja2V0W107XHJcbn1cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLXRpY2tldC1pbmZyYS12MicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3RpY2tldC1pbmZyYS12Mi5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL3RpY2tldC1pbmZyYS12Mi5jb21wb25lbnQuc2NzcycsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUaWNrZXRJbmZyYVYyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG4gIEBJbnB1dCgpIHNlbGVjdGVkVGFiOiBhbnk7XHJcblxyXG4gIHByaXZhdGUgcmVhZG9ubHkgZGVzdHJveSQgPSBuZXcgU3ViamVjdDxib29sZWFuPigpO1xyXG4gIGhlYWRlckZpbHRlcjogYW55O1xyXG5cclxuICAvLyBFbXB0eSB1bnRpbCB0aGUgaGVhZGVyIGZpbHRlciBhcnJpdmVzIC0gdGhlIGVuZHBvaW50IGFsd2F5cyByZXR1cm5zIGV2ZXJ5XHJcbiAgLy8gY2FyZCwgc28gbm90aGluZyBuZWVkcyBzZWVkaW5nIGhlcmUuXHJcbiAgdGlja2V0Q2FyZDogSXNzdWVDYXJkW10gPSBbXTtcclxuICB0aWNrZXRMaXN0OiBUaWNrZXRSb3dbXSA9IFtdO1xyXG4gIHNlbGVjdENhcmQgPSAwO1xyXG4gIHRpY2tldEluZm86IFRpY2tldFJvdyB8IG51bGwgPSBudWxsO1xyXG5cclxuICAvLyBCb3RoIHN0YXJ0IHRydWUgc28gdGhlIGZpcnN0IHBhaW50IGlzIHRoZSBzaGltbWVyIHJhdGhlciB0aGFuIGEgcGFnZSB0aGF0XHJcbiAgLy8gbG9va3MgbGlrZSBhIHN0b3JlIHdpdGggbm8gdGlja2V0cy4gT25lIGZsYWcgcGVyIGNhbGwsIGNvbWJpbmVkIGZvciB0aGVcclxuICAvLyB2aWV3OiB0aGUgY2FyZHMgYW5kIHRoZSBsaXN0IGFyZSBhIHNpbmdsZSBibG9jayBvbiBzY3JlZW4uXHJcbiAgY2FyZHNMb2FkaW5nID0gdHJ1ZTtcclxuICBsaXN0TG9hZGluZyA9IHRydWU7XHJcbiAgZ2V0IGxvYWRpbmcoKTogYm9vbGVhbiB7IHJldHVybiB0aGlzLmNhcmRzTG9hZGluZyB8fCB0aGlzLmxpc3RMb2FkaW5nOyB9XHJcblxyXG4gIC8vIFRoZSBkZXRhaWwgcGFuZSByZWxvYWRzIG9uIGl0cyBvd24gd2hlbiBhIGNhcmQgaXMgY2xpY2tlZCwgc28gaXQgc2hpbW1lcnNcclxuICAvLyBzZXBhcmF0ZWx5IC0gdGhlIGxlZnQgY29sdW1uIG11c3Qgbm90IGZsYXNoIG9uIGV2ZXJ5IHNlbGVjdGlvbi5cclxuICBkZXRhaWxMb2FkaW5nID0gZmFsc2U7XHJcblxyXG4gIC8vIElzc3VlIGlkZW50aWZpY2F0aW9uLCBtaXJyb3JpbmcgdGhlIFYxIHRhYidzIGZsb3cuXHJcbiAgLy8gYHN1Ym1pdHRpbmdgIGd1YXJkcyB0aGUgZG91YmxlIGNsaWNrOiBpZGVudGlmeSBhbnN3ZXJzIDQwOSB0aGUgc2Vjb25kIHRpbWUsXHJcbiAgLy8gc28gYW4gdW5ndWFyZGVkIGZvcm0gdHVybnMgb25lIHNsb3cgcmVxdWVzdCBpbnRvIGEgdmlzaWJsZSBlcnJvci5cclxuICBzdWJtaXR0aW5nID0gZmFsc2U7XHJcbiAgc2VsZWN0ZWRJc3N1ZSA9ICcnO1xyXG4gIHNlY29uZGFyeUlzc3VlczogeyBuYW1lOiBzdHJpbmc7IGNoZWNrZWQ6IGJvb2xlYW4gfVtdID0gW107XHJcbiAgaGliZXJuYXRpb25EYXlzID0gMDtcclxuICBjb21tZW50cyA9ICcnO1xyXG5cclxuICAvKipcclxuICAgKiBTZXQgd2hlbiB0aGUgc3VtbWFyeSBwYWdlIGxpbmtzIHN0cmFpZ2h0IHRvIG9uZSB0aWNrZXQuIFJlYWQgZnJvbSB0aGUgcm91dGVcclxuICAgKiByYXRoZXIgdGhhbiB0YWtlbiBhcyBhbiBASW5wdXQ6IHRoZSBwYXJlbnQgaGFzIG5vIG90aGVyIHVzZSBmb3IgaXQuXHJcbiAgICogQ29uc3VtZWQgb24gdGhlIGZpcnN0IGxpc3QgbG9hZCBzbyBhIGxhdGVyIGZpbHRlciBjaGFuZ2Ugb3IgYSBjbGljayBvblxyXG4gICAqIGFub3RoZXIgY2FyZCBpcyBub3Qgb3ZlcnJpZGRlbiBieSBhIHN0YWxlIHF1ZXJ5IHBhcmFtLlxyXG4gICAqL1xyXG4gIHByaXZhdGUgcmVxdWVzdGVkVGlja2V0SWQgPSAnJztcclxuXHJcbiAgLy8gVGhlIGRvd24tc3RyZWFtcyBwb3B1cC4gSGVsZCBhcyBhIHRlbXBsYXRlIHJhdGhlciB0aGFuIGl0cyBvd24gY29tcG9uZW50OlxyXG4gIC8vIGl0IGlzIGEgcmVhZC1vbmx5IGxpc3Qgd2l0aCBubyBzdGF0ZSBvZiBpdHMgb3duLCBhbmQgdGhlIGxpYnJhcnkgYWxyZWFkeVxyXG4gIC8vIG9wZW5zIGl0cyBkaWFsb2dzIHRoaXMgd2F5IChyYWlzZS10aWNrZXQsIHRpY2tldC1jYW1lcmEtYW5nbGUpLlxyXG4gIEBWaWV3Q2hpbGQoJ3N0cmVhbXNNb2RhbCcpIHN0cmVhbXNNb2RhbCE6IFRlbXBsYXRlUmVmPHVua25vd24+O1xyXG4gIHN0cmVhbXM6IERvd25TdHJlYW1bXSA9IFtdO1xyXG4gIHN0cmVhbXNDeWNsZUlkID0gJyc7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBnczogR2xvYmFsU3RhdGVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSB0aWNrZXRzZXJ2aWNlOiBUaWNrZXRzU2VydmljZSxcclxuICAgIHByaXZhdGUgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxyXG4gICAgcHJpdmF0ZSBtb2RhbFNlcnZpY2U6IE5nYk1vZGFsLFxyXG4gICAgcHJpdmF0ZSB0b2FzdHNlcnZpY2U6IFRvYXN0U2VydmljZSxcclxuICApIHt9XHJcblxyXG4gIC8vIFYxIGFsc28gaGFzIGEgcmVmcmVzaHRpY2tldCBicmFuY2ggaGVyZSB0aGF0IG9taXRzIHRoZSBzZWxlY3RlZElzc3VlIGNoZWNrLFxyXG4gIC8vIHdoaWNoIG1ha2VzIHRoZSBwaWNrZXIgYW5kIHRoZSBjaG9zZW4taXNzdWUgYmxvY2sgcmVuZGVyIHRvZ2V0aGVyLiBUaGVyZSBpc1xyXG4gIC8vIG5vIHJlZnJlc2ggdGlja2V0IGluIFYyLCBzbyB0aGF0IGJyYW5jaCBpcyBub3QgcmVwcm9kdWNlZC5cclxuICAvLyBTaG93biBvbiBhbnkgdGlja2V0IHRoYXQgaXMgc3RpbGwgbGl2ZSBhbmQgdGhhdCB0aGUgc3RvcmUgaGFzIG5vdCBhbnN3ZXJlZFxyXG4gIC8vIHlldCwgc28gaXQgYWxzbyBhcHBlYXJzIHVuZGVyIGFuIGlucHJvZ3Jlc3MgdGlja2V0IHdob3NlIHJvb3QgY2F1c2UgVGFuZ29cclxuICAvLyBXYXRjaCBoYXMgYWxyZWFkeSBmb3VuZC5cclxuICBwcml2YXRlIGdldCBjYW5JZGVudGlmeSgpOiBib29sZWFuIHtcclxuICAgIGNvbnN0IHQgPSB0aGlzLnRpY2tldEluZm87XHJcbiAgICAvLyBpc3N1ZVN0YXR1cywgbm90IHN0b3JlUmVzcG9uZGVkOiB0aGUgQVBJIHNlbmRzIG5vIHN1Y2ggZmllbGQsIHNvIG9uY2UgdGhlXHJcbiAgICAvLyBtb2NrIHN0b3BwZWQgc2V0dGluZyBpdCBsb2NhbGx5IHRoZSBwaWNrZXIgd291bGQgbmV2ZXIgY2xvc2UgYWdhaW4uXHJcbiAgICByZXR1cm4gISF0ICYmIHQuaXNzdWVTdGF0dXMgIT09ICdpZGVudGlmaWVkJyAmJiB0LnN0YXR1cyAhPT0gJ2Nsb3NlZCc7XHJcbiAgfVxyXG5cclxuICBnZXQgc2hvd0lzc3VlUGlja2VyKCk6IGJvb2xlYW4geyByZXR1cm4gdGhpcy5jYW5JZGVudGlmeSAmJiB0aGlzLnNlbGVjdGVkSXNzdWUgPT09ICcnOyB9XHJcbiAgZ2V0IHNob3dJc3N1ZURldGFpbCgpOiBib29sZWFuIHsgcmV0dXJuIHRoaXMuY2FuSWRlbnRpZnkgJiYgdGhpcy5zZWxlY3RlZElzc3VlICE9PSAnJzsgfVxyXG5cclxuICAvKipcclxuICAgKiBUaGUgY3ljbGUgdGhlIHN0b3JlIGNhbiBzdGlsbCBhbnN3ZXIgb246IHRoZSBuZXdlc3QgY2hpbGQgdGhhdCBpcyBub3RcclxuICAgKiBjbG9zZWQuIENoaWxkcmVuIGFycml2ZSBuZXdlc3QgZmlyc3QsIHNvIHRoZSBmaXJzdCBtYXRjaCBpcyB0aGUgbGl2ZSBvbmUuXHJcbiAgICogVGhpcyByZXBsYWNlcyBhIHBvc2l0aW9uYWwgXCJsYXN0IGNoaWxkXCIgdGVzdCwgd2hpY2ggdG9vayB0aGUgb2xkZXN0IGN5Y2xlXHJcbiAgICogYW5kIHNvIHB1dCB0aGUgcGlja2VyIGluc2lkZSBhIGNsb3NlZCBvbmUuXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBnZXQgaWRlbnRpZnlDaGlsZCgpOiBDaGlsZFRpY2tldCB8IG51bGwge1xyXG4gICAgcmV0dXJuICh0aGlzLnRpY2tldEluZm8/LmNoaWxkcmVuID8/IFtdKS5maW5kKChjKSA9PiBjLnN0YXR1cyAhPT0gJ2Nsb3NlZCcpID8/IG51bGw7XHJcbiAgfVxyXG5cclxuICBpc0lkZW50aWZ5Q2hpbGQoY2hpbGQ6IENoaWxkVGlja2V0KTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gISF0aGlzLmlkZW50aWZ5Q2hpbGQgJiYgY2hpbGQgPT09IHRoaXMuaWRlbnRpZnlDaGlsZDtcclxuICB9XHJcblxyXG4gIC8vIFRoZSBoZWFkZXIgcHVzaGVzIHNldmVyYWwgdmFsdWVzIHdoaWxlIHRoZSBwYWdlIGluaXRpYWxpc2VzLCBhbmQgYXJyaXZpbmdcclxuICAvLyBmcm9tIHRoZSBmbGVldCB0YWJsZSBhZGRzIG9uZSBtb3JlIC0gdGhhdCBjb21wb25lbnQgY2FsbHNcclxuICAvLyBkYXRhUmFuZ2VWYWx1ZS5uZXh0KCkganVzdCBiZWZvcmUgbmF2aWdhdGluZyBoZXJlLiBXaXRob3V0IHRoaXMgZ3VhcmQgZXZlcnlcclxuICAvLyBvbmUgb2YgdGhlbSByZWZldGNoZWQgdGhlIGNhcmRzLCB0aGUgbGlzdCBhbmQgdGhlIHRvcCBjYXJkJ3MgZGV0YWlsLiBTYW1lXHJcbiAgLy8gc2hhcGUgYXMgdGhlIGZsZWV0IEluZnJhIFYyIHRhYiwga2V5ZWQgb24gdGhlIHNjb3BlIHRoaXMgcGFnZSBhY3R1YWxseSB1c2VzLlxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5yZXF1ZXN0ZWRUaWNrZXRJZCA9IHRoaXMucm91dGUuc25hcHNob3QucXVlcnlQYXJhbXNbJ3RpY2tldElkJ10gfHwgJyc7XHJcbiAgICB0aGlzLmdzLmRhdGFSYW5nZVZhbHVlLnBpcGUoXHJcbiAgICAgIGRlYm91bmNlVGltZSgxNTApLFxyXG4gICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgoYTogYW55LCBiOiBhbnkpID0+XHJcbiAgICAgICAgSlNPTi5zdHJpbmdpZnkoeyBzOiBhPy5zdG9yZSwgYzogYT8uY2xpZW50LCBkOiBhPy5kYXRlIH0pID09PVxyXG4gICAgICAgIEpTT04uc3RyaW5naWZ5KHsgczogYj8uc3RvcmUsIGM6IGI/LmNsaWVudCwgZDogYj8uZGF0ZSB9KSksXHJcbiAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSxcclxuICAgICkuc3Vic2NyaWJlKChkYXRhOiBhbnkpID0+IHtcclxuICAgICAgaWYgKGRhdGEpIHtcclxuICAgICAgICB0aGlzLmhlYWRlckZpbHRlciA9IGRhdGE7XHJcbiAgICAgICAgY29uc3QgYm9keSA9IHRoaXMuc2NvcGVCb2R5KCk7XHJcbiAgICAgICAgaWYgKGJvZHkpIHtcclxuICAgICAgICAgIHRoaXMuZ2V0SXNzdWVDYXJkcyhib2R5KTtcclxuICAgICAgICAgIHRoaXMuZ2V0VGlja2V0TGlzdChib2R5KTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLy8gQm90aCBlbmRwb2ludHMgdGFrZSB0aGUgc2FtZSBzdG9yZSArIGRhdGUgc2NvcGUuIE51bGwgd2hlbiB0aGUgaGVhZGVyIGhhc1xyXG4gIC8vIG5vdCByZXNvbHZlZCBhIHN0b3JlIHlldCwgd2hpY2ggaXMgdGhlIGNhc2Ugb24gdGhlIGZpcnN0IGVtaXNzaW9uLlxyXG4gIHByaXZhdGUgc2NvcGVCb2R5KCk6IGFueSB7XHJcbiAgICBjb25zdCBzdG9yZUlkID0gdGhpcy5oZWFkZXJGaWx0ZXI/LnN0b3JlO1xyXG4gICAgY29uc3QgY2xpZW50SWQgPSB0aGlzLmhlYWRlckZpbHRlcj8uY2xpZW50O1xyXG4gICAgLy8gTm90aGluZyB0byBmZXRjaCwgc28gbm90aGluZyB0byB3YWl0IGZvciAtIHdpdGhvdXQgdGhpcyB0aGUgcGFnZSB3b3VsZFxyXG4gICAgLy8gc2hpbW1lciBmb3IgYSBoZWFkZXIgdGhhdCBuZXZlciByZXNvbHZlcyBhIHN0b3JlLlxyXG4gICAgaWYgKCFzdG9yZUlkIHx8ICFjbGllbnRJZCkge1xyXG4gICAgICB0aGlzLmNhcmRzTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmxpc3RMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgY2xpZW50SWQ6IFtjbGllbnRJZF0sXHJcbiAgICAgIHN0b3JlSWQ6IHN0b3JlSWQsXHJcbiAgICAgIGZyb21EYXRlOiB0aGlzLmhlYWRlckZpbHRlcj8uZGF0ZT8uc3RhcnREYXRlLFxyXG4gICAgICB0b0RhdGU6IHRoaXMuaGVhZGVyRmlsdGVyPy5kYXRlPy5lbmREYXRlLFxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIC8vIFRoZSBlbmRwb2ludCBhbHdheXMgYW5zd2VycyB3aXRoIGFsbCBmaXZlIGNhcmRzLCBzbyBhIGZhaWx1cmUgaXMgdGhlIG9ubHlcclxuICAvLyBjYXNlIHRoYXQgbmVlZHMgY2xlYXJpbmcgLSBvdGhlcndpc2UgdGhlIHByZXZpb3VzIHN0b3JlJ3MgbnVtYmVycyB3b3VsZCBzaXRcclxuICAvLyB1bmRlciB0aGUgbmV3IHN0b3JlJ3MgbmFtZS5cclxuICBwcml2YXRlIGdldElzc3VlQ2FyZHMoYm9keTogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLmNhcmRzTG9hZGluZyA9IHRydWU7XHJcbiAgICB0aGlzLnRpY2tldHNlcnZpY2UuaW5mcmFWMlN0b3JlSXNzdWVDYXJkcyhib2R5KS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKHtcclxuICAgICAgLy8gQ2xlYXJlZCBvbiBmYWlsdXJlIHRvbywgb3Igb25lIGJhZCByZXNwb25zZSBsZWF2ZXMgdGhlIHBhZ2Ugc2hpbW1lcmluZy5cclxuICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgdGhpcy50aWNrZXRDYXJkID0gcmVzPy5jb2RlID09PSAyMDAgPyAocmVzPy5kYXRhPy5jYXJkcyA/PyBbXSkgOiBbXTtcclxuICAgICAgICB0aGlzLmNhcmRzTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICB9LFxyXG4gICAgICBlcnJvcjogKCkgPT4geyB0aGlzLnRpY2tldENhcmQgPSBbXTsgdGhpcy5jYXJkc0xvYWRpbmcgPSBmYWxzZTsgfSxcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRUaWNrZXRMaXN0KGJvZHk6IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5saXN0TG9hZGluZyA9IHRydWU7XHJcbiAgICB0aGlzLnRpY2tldHNlcnZpY2UuaW5mcmFWMlN0b3JlVGlja2V0TGlzdChib2R5KS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgdGhpcy5zZXRUaWNrZXRzKHJlcz8uY29kZSA9PT0gMjAwID8gKHJlcz8uZGF0YT8udGlja2V0cyA/PyBbXSkgOiBbXSk7XHJcbiAgICAgICAgdGhpcy5saXN0TG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICB9LFxyXG4gICAgICBlcnJvcjogKCkgPT4geyB0aGlzLnNldFRpY2tldHMoW10pOyB0aGlzLmxpc3RMb2FkaW5nID0gZmFsc2U7IH0sXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8vIExpc3Qgcm93cyBjYXJyeSBubyBjaGlsZHJlbiwgc28gdGhlIGZpcnN0IG9uZSBpcyBvcGVuZWQgdGhyb3VnaCB0aGUgc2FtZVxyXG4gIC8vIHBhdGggYSBjbGljayB0YWtlcyAtIG9uZSBwbGFjZSB0aGF0IGtub3dzIGhvdyB0byBmZXRjaCBhIHRpY2tldC5cclxuICBwcml2YXRlIHNldFRpY2tldHModGlja2V0czogVGlja2V0Um93W10pOiB2b2lkIHtcclxuICAgIHRoaXMudGlja2V0TGlzdCA9IHRpY2tldHM7XHJcbiAgICB0aGlzLnRpY2tldEluZm8gPSBudWxsO1xyXG5cclxuICAgIC8vIEEgbGlua2VkIHRpY2tldCBvcGVucyBpbnN0ZWFkIG9mIHRoZSBuZXdlc3QsIG9uY2UuIEl0IGZhbGxzIGJhY2sgdG8gdGhlXHJcbiAgICAvLyBuZXdlc3Qgd2hlbiB0aGUgaWQgaXMgbm90IGluIHRoZSBsaXN0IC0gYSBzdGFsZSBsaW5rLCBvciBhIHJhbmdlIHRoYXQgbm9cclxuICAgIC8vIGxvbmdlciBjb250YWlucyBpdC5cclxuICAgIGNvbnN0IGxpbmtlZCA9IHRoaXMucmVxdWVzdGVkVGlja2V0SWRcclxuICAgICAgPyB0aGlzLnRpY2tldExpc3QuZmluZEluZGV4KCh0KSA9PiB0LnRpY2tldElkID09PSB0aGlzLnJlcXVlc3RlZFRpY2tldElkKVxyXG4gICAgICA6IC0xO1xyXG4gICAgdGhpcy5yZXF1ZXN0ZWRUaWNrZXRJZCA9ICcnO1xyXG5cclxuICAgIGlmICh0aGlzLnRpY2tldExpc3QubGVuZ3RoKSB7IHRoaXMuc2hvd1RpY2tldChsaW5rZWQgPj0gMCA/IGxpbmtlZCA6IDApOyB9IGVsc2UgeyB0aGlzLmNob29zZW5Jc3N1ZSgnJyk7IH1cclxuICB9XHJcblxyXG4gIHNob3dUaWNrZXQoaW5kZXg6IG51bWJlcik6IHZvaWQge1xyXG4gICAgdGhpcy5zZWxlY3RDYXJkID0gaW5kZXg7XHJcbiAgICB0aGlzLmNob29zZW5Jc3N1ZSgnJyk7XHJcblxyXG4gICAgY29uc3Qgcm93ID0gdGhpcy50aWNrZXRMaXN0W2luZGV4XTtcclxuICAgIGNvbnN0IGJvZHkgPSB0aGlzLnNjb3BlQm9keSgpO1xyXG4gICAgaWYgKCFyb3cgfHwgIWJvZHkpIHsgdGhpcy50aWNrZXRJbmZvID0gbnVsbDsgcmV0dXJuOyB9XHJcblxyXG4gICAgdGhpcy5kZXRhaWxMb2FkaW5nID0gdHJ1ZTtcclxuICAgIHRoaXMudGlja2V0c2VydmljZS5pbmZyYVYyU3RvcmVUaWNrZXREZXRhaWwoeyAuLi5ib2R5LCB0aWNrZXRJZDogcm93LnRpY2tldElkIH0pXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICAgIGNvbnN0IHRpY2tldCA9IHJlcz8uY29kZSA9PT0gMjAwID8gcmVzPy5kYXRhPy50aWNrZXQgOiBudWxsO1xyXG4gICAgICAgICAgdGhpcy50aWNrZXRJbmZvID0gdGlja2V0ID8gdGhpcy53aXRoVmlld1N0YXRlKHRpY2tldCkgOiBudWxsO1xyXG4gICAgICAgICAgLy8gVGhlIGRldGFpbCByZXNwb25zZSBjYXJyaWVzIGEgZnJlc2ggcGFyZW50LCBzaGFwZWQgYnkgdGhlIHNhbWVcclxuICAgICAgICAgIC8vIHN0b3JlVGlja2V0Um93cyB0aGUgbGlzdCB1c2VzLCBzbyB0aGUgY2FyZCBpcyByZWZyZXNoZWQgZnJvbSBpdCB0b28uXHJcbiAgICAgICAgICAvLyBXaXRob3V0IHRoaXMgdGhlIGJhZGdlIGtlZXBzIHRoZSBzdGF0dXMgdGhlIGxpc3QgY2FsbCBzYXcgYW5kIGNhblxyXG4gICAgICAgICAgLy8gY29udHJhZGljdCB0aGUgY2hpbGRyZW4gcmVuZGVyZWQgYmVzaWRlIGl0LlxyXG4gICAgICAgICAgaWYgKHRpY2tldCkgdGhpcy50aWNrZXRMaXN0W2luZGV4XSA9IHsgLi4udGlja2V0LCBjaGlsZHJlbjogdW5kZWZpbmVkIH07XHJcbiAgICAgICAgICB0aGlzLmRldGFpbExvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGVycm9yOiAoKSA9PiB7IHRoaXMudGlja2V0SW5mbyA9IG51bGw7IHRoaXMuZGV0YWlsTG9hZGluZyA9IGZhbHNlOyB9LFxyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIC8vIGBleHBhbmRlZGAgYW5kIGBzaG93QW5hbHlzaXNgIGFyZSB2aWV3IHN0YXRlIHRoZSBBUEkgZG9lcyBub3Qgc2VuZCwgc28gdGhleVxyXG4gIC8vIGFyZSBzZWVkZWQgaGVyZS4gVGhlIG5ld2VzdCBjeWNsZSBvcGVucyBieSBkZWZhdWx0OyB0aGUgcmVzdCBzdGF5IGNvbGxhcHNlZC5cclxuICBwcml2YXRlIHdpdGhWaWV3U3RhdGUodGlja2V0OiBUaWNrZXRSb3cpOiBUaWNrZXRSb3cge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgLi4udGlja2V0LFxyXG4gICAgICBjaGlsZHJlbjogKHRpY2tldC5jaGlsZHJlbiA/PyBbXSkubWFwKChjaGlsZCwgaSkgPT4gKHtcclxuICAgICAgICAuLi5jaGlsZCxcclxuICAgICAgICBleHBhbmRlZDogaSA9PT0gMCxcclxuICAgICAgICBlbnRyaWVzOiAoY2hpbGQuZW50cmllcyA/PyBbXSkubWFwKChlbnRyeSkgPT4gKHsgLi4uZW50cnksIHNob3dBbmFseXNpczogZmFsc2UgfSkpLFxyXG4gICAgICB9KSksXHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgLy8gUm93cyBvcGVuIGluZGVwZW5kZW50bHksIHNvIHNldmVyYWwgY2FuIGJlIGV4cGFuZGVkIGF0IG9uY2UuXHJcbiAgdG9nZ2xlQ2hpbGQoY2hpbGQ6IENoaWxkVGlja2V0KTogdm9pZCB7IGNoaWxkLmV4cGFuZGVkID0gIWNoaWxkLmV4cGFuZGVkOyB9XHJcbiAgdG9nZ2xlQW5hbHlzaXMoZW50cnk6IFRpbWVsaW5lRW50cnkpOiB2b2lkIHsgZW50cnkuc2hvd0FuYWx5c2lzID0gIWVudHJ5LnNob3dBbmFseXNpczsgfVxyXG5cclxuICAvKipcclxuICAgKiBPcGVucyB0aGUgZG93bi1zdHJlYW1zIHBvcHVwIGZvciBvbmUgY2hpbGQuXHJcbiAgICpcclxuICAgKiBzdG9wUHJvcGFnYXRpb24gaXMgbG9hZC1iZWFyaW5nOiB0aGUgcGlsbCBzaXRzIGluc2lkZSB0aGUgYWNjb3JkaW9uIGhlYWRlcixcclxuICAgKiB3aGljaCB0b2dnbGVzIHRoZSByb3cgb24gY2xpY2ssIHNvIHdpdGhvdXQgaXQgZXZlcnkgb3BlbiB3b3VsZCBhbHNvIGNvbGxhcHNlXHJcbiAgICogdGhlIHJvdyB1bmRlcm5lYXRoLlxyXG4gICAqL1xyXG4gIG9wZW5TdHJlYW1zKGNoaWxkOiBDaGlsZFRpY2tldCwgZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcclxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgaWYgKCFjaGlsZC5kb3duU3RyZWFtcz8ubGVuZ3RoKSByZXR1cm47XHJcbiAgICB0aGlzLnN0cmVhbXMgPSBjaGlsZC5kb3duU3RyZWFtcztcclxuICAgIHRoaXMuc3RyZWFtc0N5Y2xlSWQgPSBjaGlsZC5jeWNsZUlkO1xyXG4gICAgdGhpcy5tb2RhbFNlcnZpY2Uub3Blbih0aGlzLnN0cmVhbXNNb2RhbCwgeyBjZW50ZXJlZDogdHJ1ZSwgc2l6ZTogJ2xnJyB9KTtcclxuICB9XHJcblxyXG4gIC8qKiBUYW5nbyBhbmQgVGFuZ28gV2F0Y2ggZ2V0IHRoZSBwcm9kdWN0IG1hcms7IGFueW9uZSBlbHNlIGdldHMgdGhlIHBlcnNvbiBhdmF0YXIuICovXHJcbiAgaXNUYW5nb0F1dGhvcihhdXRob3I6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIGF1dGhvci50b0xvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgoJ3RhbmdvJyk7XHJcbiAgfVxyXG5cclxuICAvLyBUaGUgZW51bSBzcGVsbHMgbm9fYWN0aW9uIHdpdGggYW4gdW5kZXJzY29yZSBhbmQgc3RvcmVzIFVucmVhY2hhYmxlXHJcbiAgLy8gY2FwaXRhbGlzZWQ7IG9ubHkgdGhlIGRpc3BsYXkgbm9ybWFsaXNlcyB0aGVtLiBTYW1lIHRyZWF0bWVudCBhcyB0aGVcclxuICAvLyBBZ2VudCBTdGF0dXMgY29sdW1ucyBvbiB0aGUgdGlja2V0cyBhbmQgc3VtbWFyeSB0YWJsZXMuXHJcbiAgYWdlbnRMYWJlbChlbnRyeTogVGltZWxpbmVFbnRyeSk6IHN0cmluZyB7XHJcbiAgICBjb25zdCByYXcgPSBTdHJpbmcoZW50cnk/LmFnZW50U3RhdHVzID8/ICcnKS5yZXBsYWNlKC9fL2csICcgJyk7XHJcbiAgICByZXR1cm4gcmF3ID8gcmF3LmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgcmF3LnNsaWNlKDEpIDogJyc7XHJcbiAgfVxyXG5cclxuICAvLyBUaGUgcm9sZSBsaW5lIHVuZGVyIHRoZSBhdXRob3IsIHNwbGl0IGJ5IHdoaWNoIHNpZGUgd3JvdGUgdGhlIGVudHJ5LlxyXG4gIC8vIGF1dGhvclR5cGUgY29tZXMgZnJvbSB0aGUgc3RvcmVkIGFjdGlvbkJ5LCBzbyBpdCBuZWVkcyBubyBndWVzc3dvcmsgaGVyZS5cclxuICByZXBseUxhYmVsKGVudHJ5OiBUaW1lbGluZUVudHJ5KTogc3RyaW5nIHtcclxuICAgIHJldHVybiBlbnRyeS5hdXRob3JUeXBlID09PSAndXNlcidcclxuICAgICAgPyAnc3RvcmUgaGFzIHJlcGxpZWQgdG8gdGhlIGlzc3VlJ1xyXG4gICAgICA6ICd0YW5nbyBoYXMgcmVwbGllZCB0byB0aGUgaXNzdWUnO1xyXG4gIH1cclxuXHJcbiAgLy8gQW1iZXIga2VlcHMgZXNjYWxhdGVkIGxvb2tpbmcgbGlrZSB0aGUgYWxlcnQgaXQgaXM7IGV2ZXJ5dGhpbmcgZWxzZSBpc1xyXG4gIC8vIG5ldXRyYWwsIHNvIHRoZSBwaWxsIHJlcG9ydHMgd2l0aG91dCBzaG91dGluZy5cclxuICBhZ2VudFBpbGxDbGFzcyhlbnRyeTogVGltZWxpbmVFbnRyeSk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gZW50cnk/LmVzY2FsYXRlZCA/ICdlc2NhbGF0ZWQtcGlsbCcgOiAnc3RhdHVzLXBpbGwnO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUm9vdCBjYXVzZSBpZGVudGlmaWVkIG9uIHRoZSBtb3N0IHJlY2VudCBjaGlsZC4gUmVhZCBzdHJhaWdodCBvZmYgdGhlIHJvdyAtXHJcbiAgICogdGhlIGxpc3Qgbm8gbG9uZ2VyIGNhcnJpZXMgdGhlIHRpbWVsaW5lcyB0byBkaWcgdGhyb3VnaC5cclxuICAgKi9cclxuICBwcml2YXRlIHJlY2VudFJvb3RDYXVzZSh0OiBUaWNrZXRSb3cpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHQucm9vdENhdXNlID8/ICcnO1xyXG4gIH1cclxuXHJcbiAgLy8gV29yZGluZyBpcyBzdGF0dXMtZHJpdmVuIHJhdGhlciB0aGFuIHN0b3JlZCB0ZXh0LCBtYXRjaGluZyB0aGUgVjEgdGFiLiBBXHJcbiAgLy8gY2xvc2VkIHRpY2tldCBzaG93cyB3aGF0IHdhcyBhY3R1YWxseSBmb3VuZCwgZmFsbGluZyBiYWNrIHRvIHRoZSBnZW5lcmljXHJcbiAgLy8gY2xvc2UgbWVzc2FnZSB3aGVuIG5vIGNoaWxkIGNhcnJpZXMgYSByb290IGNhdXNlLlxyXG4gIGNhcmRNZXNzYWdlKHQ6IFRpY2tldFJvdyk6IHN0cmluZyB7XHJcbiAgICBpZiAodC5zdGF0dXMgPT09ICdjbG9zZWQnKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLnJlY2VudFJvb3RDYXVzZSh0KSB8fCAnVGhhbmsgeW91IGZvciB5b3VyIGFzc2lzdGFuY2UuIFdlIGhhdmUgcmVjZWl2ZWQgdGhlIGRhdGEgZnJvbSB5b3VyIFN0b3JlLic7XHJcbiAgICB9XHJcbiAgICAvLyBpc3N1ZVN0YXR1cyBmbGlwcyB0byAnaWRlbnRpZmllZCcgYmVmb3JlIHRoZSByZWFzb25zIGFyZSB3cml0dGVuLCBzbyB0aGVcclxuICAgIC8vIGZpZWxkcyB0aGVtc2VsdmVzIGRlY2lkZSB3aGV0aGVyIHRoZXJlIGlzIGFueXRoaW5nIHRvIG5hbWUuIFdpdGhvdXQgdGhpc1xyXG4gICAgLy8gdGhlIGNhcmQgcmVhZHMgXCJTdG9yZSBpcyBjdXJyZW50bHkgZW5jb3VudGVyaW5nIGEgIHdoaWNoIGlzIC5cIlxyXG4gICAgaWYgKHQuaXNzdWVTdGF0dXMgPT09ICdub3RpZGVudGlmaWVkJyB8fCAhdC5wcmltYXJ5SXNzdWUgfHwgIXQuc2Vjb25kYXJ5SXNzdWUpIHtcclxuICAgICAgcmV0dXJuICdXZSBoYXZlIG5vdCByZWNlaXZlZCBkYXRhIGZyb20geW91ciBzdG9yZS4gV2UgYXJlIGN1cnJlbnRseSBpbnZlc3RpZ2F0aW5nIHRoZSBpc3N1ZS4nO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuICcnO1xyXG4gIH1cclxuXHJcbiAgc3RhdHVzQmFkZ2Uoc3RhdHVzOiBUaWNrZXRTdGF0dXMpOiBzdHJpbmcge1xyXG4gICAgaWYgKHN0YXR1cyA9PT0gJ2Nsb3NlZCcpIHsgcmV0dXJuICdiYWRnZSBiYWRnZS1saWdodC1zdWNjZXNzJzsgfVxyXG4gICAgcmV0dXJuIHN0YXR1cyA9PT0gJ2lucHJvZ3Jlc3MnID8gJ2JhZGdlIGJhZGdlLWxpZ2h0LXByaW1hcnknIDogJ2JhZGdlIGJhZGdlLWxpZ2h0LXdhcm5pbmcnO1xyXG4gIH1cclxuXHJcbiAgLy8gJycgY2xlYXJzIHRoZSBzZWxlY3Rpb24gYW5kIHJldHVybnMgdG8gdGhlIG9wdGlvbiBsaXN0IOKAlCBzYW1lIGNvbnRyYWN0IGFzIFYxLlxyXG4gIGNob29zZW5Jc3N1ZSh2YWx1ZTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLnNlbGVjdGVkSXNzdWUgPSB2YWx1ZTtcclxuICAgIHRoaXMuc2Vjb25kYXJ5SXNzdWVzID0gW107XHJcbiAgICBpZiAoIXZhbHVlKSB7IHJldHVybjsgfVxyXG5cclxuICAgIC8vIFRoZSBBUEkgaXMgdGhlIG9ubHkgc291cmNlIG9mIHZhbGlkIG5hbWVzOiBpZGVudGlmeSBjaGVja3MgZXZlcnkgb25lXHJcbiAgICAvLyBhZ2FpbnN0IGluZnJhUmVhc29ucyBhbmQgcmVqZWN0cyB0aGUgd2hvbGUgY2FsbCBvbiB0aGUgZmlyc3QgbWlzcy5cclxuICAgIHRoaXMudGlja2V0c2VydmljZS5zZWNvbmRhcnlSZWFzb24oeyBwcmltYXJ5SXNzdWU6IHZhbHVlIH0pLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICB0aGlzLnNlY29uZGFyeUlzc3VlcyA9IHJlcz8uY29kZSA9PT0gMjAwXHJcbiAgICAgICAgICA/IChyZXM/LmRhdGE/LnJlc3VsdCA/PyBbXSkubWFwKChyOiBhbnkpID0+ICh7IG5hbWU6IHIubmFtZSwgY2hlY2tlZDogZmFsc2UgfSkpXHJcbiAgICAgICAgICA6IFtdO1xyXG4gICAgICB9LFxyXG4gICAgICBlcnJvcjogKCkgPT4geyB0aGlzLnNlY29uZGFyeUlzc3VlcyA9IFtdOyB9LFxyXG4gICAgfSk7XHJcbiAgICB0aGlzLmhpYmVybmF0aW9uRGF5cyA9IDA7XHJcbiAgICB0aGlzLmNvbW1lbnRzID0gJyc7XHJcbiAgfVxyXG5cclxuICB0b2dnbGVDaGVja2JveChpbmRleDogbnVtYmVyKTogdm9pZCB7XHJcbiAgICB0aGlzLnNlY29uZGFyeUlzc3Vlc1tpbmRleF0uY2hlY2tlZCA9ICF0aGlzLnNlY29uZGFyeUlzc3Vlc1tpbmRleF0uY2hlY2tlZDtcclxuICB9XHJcblxyXG4gIC8vIE1pcnJvcnMgZGVjcmVzZUNvdW50KCkgLyBpbmNyZWFzZUNvdW50KCkgb24gdGhlIFYxIHRhYi5cclxuICBkZWNyZWFzZUhpYmVybmF0aW9uKCk6IHZvaWQgeyBpZiAodGhpcy5oaWJlcm5hdGlvbkRheXMgPiAwKSB7IHRoaXMuaGliZXJuYXRpb25EYXlzIC09IDE7IH0gfVxyXG4gIGluY3JlYXNlSGliZXJuYXRpb24oKTogdm9pZCB7IHRoaXMuaGliZXJuYXRpb25EYXlzICs9IDE7IH1cclxuXHJcbiAgZ2V0IGNhblN1Ym1pdElzc3VlKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuc2Vjb25kYXJ5SXNzdWVzLnNvbWUoKHIpID0+IHIuY2hlY2tlZCk7XHJcbiAgfVxyXG5cclxuICBzdWJtaXRJc3N1ZSgpOiB2b2lkIHtcclxuICAgIGNvbnN0IHQgPSB0aGlzLnRpY2tldEluZm87XHJcbiAgICBpZiAoIXQgfHwgIXRoaXMuY2FuU3VibWl0SXNzdWUgfHwgdGhpcy5zdWJtaXR0aW5nKSB7IHJldHVybjsgfVxyXG5cclxuICAgIGNvbnN0IGJvZHk6IGFueSA9IHtcclxuICAgICAgcHJpbWFyeTogdGhpcy5zZWxlY3RlZElzc3VlLFxyXG4gICAgICBzZWNvbmRhcnk6IHRoaXMuc2Vjb25kYXJ5SXNzdWVzLmZpbHRlcigocikgPT4gci5jaGVja2VkKS5tYXAoKHIpID0+IHIubmFtZSksXHJcbiAgICAgIGNvbW1lbnQ6IHRoaXMuY29tbWVudHMudHJpbSgpLFxyXG4gICAgfTtcclxuICAgIC8vIE9taXR0ZWQgcmF0aGVyIHRoYW4gc2VudCBhcyAwOiB0aGUgQVBJIGJyYW5jaGVzIG9uIHRoZSBrZXkgYmVpbmcgcHJlc2VudCxcclxuICAgIC8vIHNjaGVkdWxpbmcgYSBzdGF0dXMgY2hlY2sgd2hlbiBpdCBpcyBhYnNlbnQuXHJcbiAgICBpZiAodGhpcy5oaWJlcm5hdGlvbkRheXMgPiAwKSB7IGJvZHkuaGliZXJuYXRpb25EYXlzID0gdGhpcy5oaWJlcm5hdGlvbkRheXM7IH1cclxuXHJcbiAgICB0aGlzLnN1Ym1pdHRpbmcgPSB0cnVlO1xyXG4gICAgdGhpcy50aWNrZXRzZXJ2aWNlLmluZnJhVjJJZGVudGlmeUlzc3VlKHQudGlja2V0SWQsIGJvZHkpLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICB0aGlzLnN1Ym1pdHRpbmcgPSBmYWxzZTtcclxuICAgICAgICBpZiAocmVzPy5jb2RlICE9PSAyMDApIHsgdGhpcy50b2FzdHNlcnZpY2UuZ2V0RXJyb3JUb2FzdChyZXM/Lm1lc3NhZ2UgfHwgJ0NvdWxkIG5vdCB1cGRhdGUgdGhlIGlzc3VlJyk7IHJldHVybjsgfVxyXG4gICAgICAgIHRoaXMuY2hvb3Nlbklzc3VlKCcnKTtcclxuICAgICAgICB0aGlzLmNvbW1lbnRzID0gJyc7XHJcbiAgICAgICAgdGhpcy5oaWJlcm5hdGlvbkRheXMgPSAwO1xyXG4gICAgICAgIC8vIFJlLXJlYWQgcmF0aGVyIHRoYW4gcGF0Y2hpbmcgaW4gcGxhY2U6IHRoZSByZXNwb25zZSBjYXJyaWVzIG5vIHRpY2tldCxcclxuICAgICAgICAvLyBhbmQgdGhlIHRpbWVsaW5lLCBzdGF0dXMgYW5kIGNvbW1lbnQgY291bnQgYWxsIG1vdmUgdG9nZXRoZXIgb24gdGhlXHJcbiAgICAgICAgLy8gc2VydmVyLiBzaG93VGlja2V0IHJlZnJlc2hlcyB0aGUgY2FyZCBhcyB3ZWxsIGFzIHRoZSBwYW5lLlxyXG4gICAgICAgIHRoaXMuc2hvd1RpY2tldCh0aGlzLnNlbGVjdENhcmQpO1xyXG4gICAgICB9LFxyXG4gICAgICBlcnJvcjogKGVycjogYW55KSA9PiB7XHJcbiAgICAgICAgdGhpcy5zdWJtaXR0aW5nID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy50b2FzdHNlcnZpY2UuZ2V0RXJyb3JUb2FzdChlcnI/LmVycm9yPy5tZXNzYWdlIHx8ICdDb3VsZCBub3QgdXBkYXRlIHRoZSBpc3N1ZScpO1xyXG4gICAgICB9LFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuZGVzdHJveSQubmV4dCh0cnVlKTtcclxuICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImNhcmRcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlciBib3JkZXItMCBwdC0zXCI+XHJcbiAgICAgICAgPGgzIGNsYXNzPVwiY2FyZC10aXRsZSBhbGlnbi1pdGVtcy1zdGFydCBmbGV4LWNvbHVtblwiPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNhcmQtbGFiZWwgbWItMlwiPkluZnJhIFRpY2tldHMgdjI8L3NwYW4+XHJcbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiaGVhZGVyRmlsdGVyPy5kYXRlPy5zdGFydERhdGUgPT09IGhlYWRlckZpbHRlcj8uZGF0ZT8uZW5kRGF0ZVwiIGNsYXNzPVwidGV4dC1zdWIgbWItMlwiPkFuIG92ZXJ2aWV3IG9mIGFsbCB0aGUgdGlja2V0cyBmb3IgdGlsbCB7eyBoZWFkZXJGaWx0ZXI/LmRhdGU/LmVuZERhdGUgfCBjdXN0b21EYXRlRm9ybWF0IH19PC9zcGFuPlxyXG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cImhlYWRlckZpbHRlcj8uZGF0ZT8uc3RhcnREYXRlICE9PSBoZWFkZXJGaWx0ZXI/LmRhdGU/LmVuZERhdGVcIiBjbGFzcz1cInRleHQtc3ViIG1iLTJcIj5BbiBvdmVydmlldyBvZiBhbGwgdGhlIHRpY2tldHMgZm9yIHt7IGhlYWRlckZpbHRlcj8uZGF0ZT8uc3RhcnREYXRlIHwgY3VzdG9tRGF0ZUZvcm1hdCB9fSAtIHt7IGhlYWRlckZpbHRlcj8uZGF0ZT8uZW5kRGF0ZSB8IGN1c3RvbURhdGVGb3JtYXQgfX08L3NwYW4+XHJcbiAgICAgICAgPC9oMz5cclxuICAgICAgICA8IS0tIEZpbHRlciBhbmQgRXhwb3J0IHJlbmRlciBpbmVydDogbGliLWZpbHRlcnMgbmVlZHMgcmVhbCBmYWNldHMsIGFuZFxyXG4gICAgICAgICAgICAgdGhlcmUgaXMgbm90aGluZyB0byBleHBvcnQgd2hpbGUgdGhlIGRhdGEgaXMgbW9ja2VkLiAtLT5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC10b29sYmFyXCI+XHJcbiAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1kZWZhdWx0IG14LTIgYnRuLW91dGxpbmUgYnRuLW91dGxpbmUtZGVmYXVsdCByb3VuZGVkLTMgdGV4dC1ub3dyYXAgYm9yZGVyLXZhbFwiPlxyXG4gICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0yLjUgNUgxNy41TTUgMTBIMTVNOC4zMzMzMyAxNUgxMS42NjY3XCIgc3Ryb2tlPVwiIzEwMTgyOFwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1zLTJcIj5GaWx0ZXI8L3NwYW4+XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tZGVmYXVsdCBteC0yIGJ0bi1vdXRsaW5lIGJ0bi1vdXRsaW5lLWRlZmF1bHQgcm91bmRlZC0zIHRleHQtbm93cmFwIGJvcmRlci12YWxcIj5cclxuICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTcuNSAxMi41VjE1LjgzMzNDMTcuNSAxNi4yNzU0IDE3LjMyNDQgMTYuNjk5MyAxNy4wMTE4IDE3LjAxMThDMTYuNjk5MyAxNy4zMjQ0IDE2LjI3NTQgMTcuNSAxNS44MzMzIDE3LjVINC4xNjY2N0MzLjcyNDY0IDE3LjUgMy4zMDA3MiAxNy4zMjQ0IDIuOTg4MTYgMTcuMDExOEMyLjY3NTU5IDE2LjY5OTMgMi41IDE2LjI3NTQgMi41IDE1LjgzMzNWMTIuNU0xNC4xNjY3IDYuNjY2NjdMMTAgMi41TTEwIDIuNUw1LjgzMzMzIDYuNjY2NjdNMTAgMi41VjEyLjVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjMTAxODI4XCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXMtMlwiPkV4cG9ydDwvc3Bhbj5cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5XCI+XHJcbiAgICAgICAgPCEtLSBTaGltbWVyIHdoaWxlIGVpdGhlciBjYWxsIGlzIGluIGZsaWdodC4gVGhlIHN0eWxlcyBhcmUgdGhlIHNoZWxsJ3NcclxuICAgICAgICAgICAgIChzdHlsZXMuc2NzcyBgLmxvYWRlcmApLCBzbyB0aGUgLmxvYWRlciA+IC5zaGltbWVyID4gLndyYXBwZXIgPiAuc3Ryb2tlXHJcbiAgICAgICAgICAgICBuZXN0aW5nIGhhcyB0byBzdGF5IGFzIGl0IGlzIGhlcmUuIC0tPlxyXG4gICAgICAgIDxkaXYgKm5nSWY9XCJsb2FkaW5nXCIgY2xhc3M9XCJyb3cgbG9hZGVyIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2hpbW1lclwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndyYXBwZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgdGl0bGVcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgbGlua1wiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBkZXNjcmlwdGlvblwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2hpbW1lclwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndyYXBwZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgdGl0bGVcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgbGlua1wiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBkZXNjcmlwdGlvblwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWxvYWRpbmdcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGdhcC0zIG1iLTdcIj5cclxuICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgaXNzdWUgb2YgdGlja2V0Q2FyZFwiIGNsYXNzPVwiaXNzdWVjYXJkXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2PjxzcGFuIGNsYXNzPVwidGl0bGVcIj57eyBpc3N1ZS5jb3VudCB9fTwvc3Bhbj48L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWwgZnctc2VtaWJvbGRcIj57eyBpc3N1ZS5uYW1lIH19PC9zcGFuPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIm1haW5jYXJkLWNvbnRlbnRcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBwLTEwXCI+XHJcblxyXG4gICAgICAgICAgICAgICAgPCEtLSBMZWZ0OiB1bmNoYW5nZWQgZnJvbSB0aGUgVGlja2V0cyB0YWIuIC0tPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS02XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgZGF0YSBvZiB0aWNrZXRMaXN0OyBsZXQgaW5kZXggPSBpbmRleFwiIGNsYXNzPVwiaXNzdWVjYXJkIHctMTAwIG1iLTQgY3Vyc29yLXBvaW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2hvd1RpY2tldChpbmRleClcIiBbbmdDbGFzc109XCJzZWxlY3RDYXJkID09PSBpbmRleCA/ICdhY3RpdmUnIDogJydcIj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYWluY2FyZC1sYWJlbCBmdy1ib2xkIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBtYi01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj48aW1nIHNyYz1cIi4vYXNzZXRzL3RhbmdvL0ltYWdlcy90aWNrZXQuc3ZnXCI+IHt7IGRhdGEudGlja2V0SWQgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGVudHRleHQgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyIHRleHQtY2VudGVyIGZ3LXNlbWlib2xkIHB4LTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIiB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xMC42NjY3IDEuMzMzOThWNC4wMDA2NU01LjMzMzMzIDEuMzMzOThWNC4wMDA2NU0yIDYuNjY3MzJIMTRNMy4zMzMzMyAyLjY2NzMySDEyLjY2NjdDMTMuNDAzIDIuNjY3MzIgMTQgMy4yNjQyNyAxNCA0LjAwMDY1VjEzLjMzNEMxNCAxNC4wNzA0IDEzLjQwMyAxNC42NjczIDEyLjY2NjcgMTQuNjY3M0gzLjMzMzMzQzIuNTk2OTUgMTQuNjY3MyAyIDE0LjA3MDQgMiAxMy4zMzRWNC4wMDA2NUMyIDMuMjY0MjcgMi41OTY5NSAyLjY2NzMyIDMuMzMzMzMgMi42NjczMlpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzY2NzA4NVwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJteC0xXCI+e3sgZGF0YS5jcmVhdGVkQXQgfCBkYXRlOiAnZGQtTU0teXl5eScgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJkYXRhLmlzc3VlQ2xvc2VkRGF0ZVwiIGNsYXNzPVwiY29udGVudHRleHQgZnctc2VtaWJvbGQgcGUtM1wiPi0ge3sgZGF0YS5pc3N1ZUNsb3NlZERhdGUgfCBkYXRlOiAnZGQtTU0teXl5eScgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiY2FyZE1lc3NhZ2UoZGF0YSlcIiBjbGFzcz1cIm1iLTUgY29udGVudHRleHQgZnctc2VtaWJvbGRcIj57eyBjYXJkTWVzc2FnZShkYXRhKSB9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIWNhcmRNZXNzYWdlKGRhdGEpXCIgY2xhc3M9XCJtYi01IGNvbnRlbnR0ZXh0IGZ3LXNlbWlib2xkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdG9yZSBpcyBjdXJyZW50bHkgZW5jb3VudGVyaW5nIGEgPHNwYW4gY2xhc3M9XCJmdy1ib2xkLTcwMFwiPnt7IGRhdGEucHJpbWFyeUlzc3VlIH19PC9zcGFuPiB3aGljaCBpc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmdy1ib2xkLTcwMFwiPnt7IGRhdGEuc2Vjb25kYXJ5SXNzdWUgfX0uPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW5cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcm9maWxlIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50cmUganVzdGlmeS1jb250ZW50LWNlbnRyZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPVwiLi9hc3NldHMvdGFuZ28vSW1hZ2VzL3VzZXJQcm9maWxlLnN2Z1wiIGFsdD1cIlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjb250ZW50dGV4dCBmdy1zZW1pYm9sZCBweC0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xNCAxMEMxNCAxMC4zNTM2IDEzLjg1OTUgMTAuNjkyOCAxMy42MDk1IDEwLjk0MjhDMTMuMzU5NCAxMS4xOTI5IDEzLjAyMDMgMTEuMzMzMyAxMi42NjY3IDExLjMzMzNINC42NjY2N0wyIDE0VjMuMzMzMzNDMiAyLjk3OTcxIDIuMTQwNDggMi42NDA1NyAyLjM5MDUyIDIuMzkwNTJDMi42NDA1NyAyLjE0MDQ4IDIuOTc5NzEgMiAzLjMzMzMzIDJIMTIuNjY2N0MxMy4wMjAzIDIgMTMuMzU5NCAyLjE0MDQ4IDEzLjYwOTUgMi4zOTA1MkMxMy44NTk1IDIuNjQwNTcgMTQgMi45Nzk3MSAxNCAzLjMzMzMzVjEwWlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzY2NzA4NVwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPjxzcGFuIGNsYXNzPVwibXgtMVwiPnt7IGRhdGEuY29tbWVudHMgfX08L3NwYW4+IGNvbW1lbnRzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIFtuZ0NsYXNzXT1cInN0YXR1c0JhZGdlKGRhdGEuc3RhdHVzKVwiPnt7IGRhdGEuc3RhdHVzIHwgdGl0bGVjYXNlIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgPCEtLSBSaWdodDogdGhlIHNlbGVjdGVkIHBhcmVudCwgd2l0aCBpdHMgY3ljbGUgY2hpbGRyZW4gYXMgYW4gYWNjb3JkaW9uIC0tPlxyXG4gICAgICAgICAgICAgICAgPCEtLSBPbmx5IHRoaXMgY29sdW1uIHJlbG9hZHMgd2hlbiBhIGNhcmQgaXMgY2xpY2tlZCwgc28gaXRcclxuICAgICAgICAgICAgICAgICAgICAgc2hpbW1lcnMgb24gaXRzIG93biByYXRoZXIgdGhhbiBibGFua2luZyB0aGUgd2hvbGUgdGFiLiAtLT5cclxuICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJkZXRhaWxMb2FkaW5nXCIgY2xhc3M9XCJjb2wtc20tNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbG9hZGVyIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2hpbW1lclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndyYXBwZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgdGl0bGVcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgbGlua1wiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBkZXNjcmlwdGlvblwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiFkZXRhaWxMb2FkaW5nICYmIHRpY2tldEluZm9cIiBjbGFzcz1cImNvbC1zbS02XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1haW5jYXJkLWxhYmVsIGZ3LWJvbGQgZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlciBtYi01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPjxpbWcgc3JjPVwiLi9hc3NldHMvdGFuZ28vSW1hZ2VzL3RpY2tldC5zdmdcIj48c3BhbiBjbGFzcz1cIm14LTJcIj57eyB0aWNrZXRJbmZvLnRpY2tldElkIH19PC9zcGFuPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLSBDeWNsZSBjaGlsZHJlbi4gUm93cyBvcGVuIGluZGVwZW5kZW50bHkuIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGNoaWxkIG9mIHRpY2tldEluZm8uY2hpbGRyZW5cIiBjbGFzcz1cImNoaWxkLXJvdyBtYi00XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGlsZC1oZWFkIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXIgY3Vyc29yLXBvaW50ZXIgcHgtNCBweS0zXCIgKGNsaWNrKT1cInRvZ2dsZUNoaWxkKGNoaWxkKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZmxleC13cmFwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGV2cm9uIG1lLTNcIiBbY2xhc3Mub3Blbl09XCJjaGlsZC5leHBhbmRlZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE0XCIgaGVpZ2h0PVwiMTRcIiB2aWV3Qm94PVwiMCAwIDE0IDE0XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNNSAyLjVMOS41IDdMNSAxMS41XCIgc3Ryb2tlPVwiIzEwMTgyOFwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtZXRhLXBpbGwgY3ljbGUtaWQgdGltaW5ndGV4dCBmdy1zZW1pYm9sZCBtZS0zXCI+e3sgY2hpbGQuY3ljbGVJZCB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN0cmVhbXMtcGlsbCB0aW1pbmd0ZXh0IG1lLTNcIiBbY2xhc3MuY2xpY2thYmxlXT1cImNoaWxkLnN0cmVhbXNEb3duXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9wZW5TdHJlYW1zKGNoaWxkLCAkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cImNoaWxkLnN0cmVhbXNEb3duID8gJ1NlZSB3aGljaCBzdHJlYW1zIHdlcmUgZG93bicgOiAnJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE0XCIgaGVpZ2h0PVwiMTRcIiB2aWV3Qm94PVwiMCAwIDI0IDIwXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMjMgMTdDMjMgMTcuNTMwNCAyMi43ODkzIDE4LjAzOTEgMjIuNDE0MiAxOC40MTQyQzIyLjAzOTEgMTguNzg5MyAyMS41MzA0IDE5IDIxIDE5SDNDMi40Njk1NyAxOSAxLjk2MDg2IDE4Ljc4OTMgMS41ODU3OSAxOC40MTQyQzEuMjEwNzEgMTguMDM5MSAxIDE3LjUzMDQgMSAxN1Y2QzEgNS40Njk1NyAxLjIxMDcxIDQuOTYwODYgMS41ODU3OSA0LjU4NTc5QzEuOTYwODYgNC4yMTA3MSAyLjQ2OTU3IDQgMyA0SDdMOSAxSDE1TDE3IDRIMjFDMjEuNTMwNCA0IDIyLjAzOTEgNC4yMTA3MSAyMi40MTQyIDQuNTg1NzlDMjIuNzg5MyA0Ljk2MDg2IDIzIDUuNDY5NTcgMjMgNlYxN1pcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiNGMDQ0MzhcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZnctYm9sZCBteC0xXCI+e3sgY2hpbGQuc3RyZWFtc0Rvd24gfX08L3NwYW4+IHN0cmVhbXMgZG93blxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gW25nQ2xhc3NdPVwic3RhdHVzQmFkZ2UoY2hpbGQuc3RhdHVzKVwiIGNsYXNzPVwiZmxleC1zaHJpbmstMFwiPnt7IGNoaWxkLnN0YXR1cyB8IHRpdGxlY2FzZSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiY2hpbGQuZXhwYW5kZWRcIiBjbGFzcz1cImNoaWxkLWJvZHkgcHgtNSBweS01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5uZXItY2FyZCBweC01IHB5LTVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBlbnRyeSBvZiBjaGlsZC5lbnRyaWVzOyBsZXQgbGFzdCA9IGxhc3Q7IGxldCBmaXJzdCA9IGZpcnN0XCIgY2xhc3M9XCJkLWZsZXhcIiBbY2xhc3MucHQtNV09XCIhZmlyc3RcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LWNvbHVtbiBhbGlnbi1pdGVtcy1jZW50ZXIgbWUtNFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBCb3RoIGF2YXRhcnMgYXJlIFYxJ3MsIHNvIHRoZSB0d28gdGFicyByZWFkIGFsaWtlOiB0aGUgVGFuZ29cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVhayBpcyBpbmxpbmUgdGhlcmUgdG9vLCBhbmQgY2Fubm90IDQwNCB0aGUgd2F5IGFuIGFzc2V0IGNhbi4gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnICpuZ0lmPVwiaXNUYW5nb0F1dGhvcihlbnRyeS5hdXRob3IpOyBlbHNlIHBlcnNvbkljb25cIiBjbGFzcz1cImF2YXRhci1sb2dvXCIgdmlld0JveD1cIjAgMCA0MCA0MFwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiNDBcIiBoZWlnaHQ9XCI0MFwiIHJ4PVwiMjBcIiBmaWxsPVwiI0VBRjhGRlwiLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTMwLjQ5MzIgMjguMzM1MUwyOS42ODY3IDI3LjUyODZMMjAuOTk2NSAxOC44Mzg0TDIzLjU3NDQgMTYuMjYwNUwyNC4xOTIxIDE1LjY0MTZDMjQuMjUxIDE1LjU4MTggMjQuMjg0MyAxNS41MDE0IDI0LjI4NDcgMTUuNDE3NEMyNC4yODQ1IDE1LjM3NTkgMjQuMjc2MSAxNS4zMzQ5IDI0LjI2IDE1LjI5NjZDMjQuMjQzOSAxNS4yNTg0IDI0LjIyMDQgMTUuMjIzNyAyNC4xOTA5IDE1LjE5NDVMMjMuNTcyIDE0LjU3NTZMMjAuODM4MSAxMS44MzY4TDIwLjIxOTIgMTEuMjE4QzIwLjE5IDExLjE4ODIgMjAuMTU1MSAxMS4xNjQ1IDIwLjExNjYgMTEuMTQ4NEMyMC4wNzgxIDExLjEzMjMgMjAuMDM2OCAxMS4xMjQgMTkuOTk1IDExLjEyNEMxOS45NTMzIDExLjEyNCAxOS45MTIgMTEuMTMyMyAxOS44NzM1IDExLjE0ODRDMTkuODM1IDExLjE2NDUgMTkuODAwMSAxMS4xODgyIDE5Ljc3MDkgMTEuMjE4TDE5LjE1MiAxMS44MzgxTDE1LjgwMTYgMTUuMTg4NEMxNS43NzE5IDE1LjIxNzYgMTUuNzQ4MyAxNS4yNTIzIDE1LjczMjIgMTUuMjkwN0MxNS43MTYxIDE1LjMyOTEgMTUuNzA3NyAxNS4zNzAzIDE1LjcwNzcgMTUuNDEyQzE1LjcwNzcgMTUuNDUzNiAxNS43MTYxIDE1LjQ5NDggMTUuNzMyMiAxNS41MzMyQzE1Ljc0ODMgMTUuNTcxNiAxNS43NzE5IDE1LjYwNjQgMTUuODAxNiAxNS42MzU1TDE5LjAwMjEgMTguODM3MkwxMC4zMTA3IDI3LjUyODZMOS41MDc4NyAyOC4zMzUxQzkuNDQ4MzQgMjguMzk0MSA5LjQxNDYxIDI4LjQ3NDMgOS40MTQwNiAyOC41NTgxQzkuNDE0NDEgMjguNjM5MSA5LjQ0NTMgMjguNzE3IDkuNTAwNTYgMjguNzc2MkM5LjUzMDA3IDI4LjgwNzcgOS41NjU3MyAyOC44MzI4IDkuNjA1MzMgMjguODVDOS42NDQ5NCAyOC44NjcyIDkuNjg3NjUgMjguODc2MSA5LjczMDgyIDI4Ljg3NjFIMTcuNTQ4N0MxNy42MzI2IDI4Ljg3NTcgMTcuNzEzIDI4Ljg0MjMgMTcuNzcyMyAyOC43ODI5QzE3LjgzMTYgMjguNzIzNiAxNy44NjUxIDI4LjY0MzIgMTcuODY1NCAyOC41NTkzVjI3Ljc4MkMxNy44NjU0IDI3LjY5NzkgMTcuODMyMSAyNy42MTcyIDE3Ljc3MjcgMjcuNTU3NkMxNy43MTM0IDI3LjQ5OCAxNy42MzI4IDI3LjQ2NDQgMTcuNTQ4NyAyNy40NjRIMTIuMzcwOUwxOS45OTg3IDE5LjgzNjJMMjcuNjI2NSAyNy40NjRIMjIuNDAzNkMyMi4zMTk1IDI3LjQ2NDQgMjIuMjM4OSAyNy40OTggMjIuMTc5NiAyNy41NTc2QzIyLjEyMDIgMjcuNjE3MiAyMi4wODY5IDI3LjY5NzkgMjIuMDg2OSAyNy43ODJWMjguNTU5M0MyMi4wODY3IDI4LjYwMSAyMi4wOTQ5IDI4LjY0MjQgMjIuMTExIDI4LjY4MDlDMjIuMTI3MiAyOC43MTk0IDIyLjE1MDggMjguNzU0MyAyMi4xODA3IDI4Ljc4MzVDMjIuMjM5OSAyOC44NDI2IDIyLjMyIDI4Ljg3NTggMjIuNDAzNiAyOC44NzYxSDMwLjI2OUMzMC4zMTI0IDI4Ljg3NjIgMzAuMzU1MyAyOC44Njc0IDMwLjM5NTIgMjguODUwMkMzMC40MzUgMjguODMzIDMwLjQ3MDggMjguODA3OCAzMC41MDA1IDI4Ljc3NjJDMzAuNTU3NCAyOC43MTY0IDMwLjU4ODUgMjguNjM2NyAzMC41ODcyIDI4LjU1NDJDMzAuNTg1OCAyOC40NzE2IDMwLjU1MiAyOC4zOTMgMzAuNDkzMiAyOC4zMzUxWk0xOS45OTM4IDEyLjk5MDZMMjIuNDIxOSAxNS40MTg3TDE5Ljk5OTkgMTcuODQwN0wxNy41NzE4IDE1LjQxMjZMMTkuOTkzOCAxMi45OTA2WlwiIGZpbGw9XCIjMDBBM0ZGXCIvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI3BlcnNvbkljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBjbGFzcz1cImF2YXRhci1sb2dvXCIgc3JjPVwiLi9hc3NldHMvdGFuZ28vSW1hZ2VzL3VzZXJQcm9maWxlLnN2Z1wiIGFsdD1cIlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhbGFzdFwiIGNsYXNzPVwiY29ubmVjdG9yXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInctMTAwIHBiLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGZsZXgtd3JhcFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWFpbmNhcmQtbGFiZWwgZnctYm9sZFwiPnt7IGVudHJ5LmF1dGhvciB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImVudHJ5LmF0XCIgY2xhc3M9XCJ0aW1pbmd0ZXh0IG14LTNcIj57eyBlbnRyeS5hdCB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIFRoZSBhZ2VudCdzIHZlcmRpY3QsIHdoYXRldmVyIGl0IGlzIC0gbm90IG9ubHkgZXNjYWxhdGVkLlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWJzZW50IHdoZW4gdGhlIGFnZW50IG5ldmVyIHJlcG9ydGVkLiAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImVudHJ5LmFnZW50U3RhdHVzXCIgW25nQ2xhc3NdPVwiYWdlbnRQaWxsQ2xhc3MoZW50cnkpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0aW1pbmd0ZXh0IGZ3LXNlbWlib2xkIG1zLWF1dG8gdGV4dC11cHBlcmNhc2VcIj48c3BhbiBjbGFzcz1cImRvdCBtZS0yXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5kb3QtYW1iZXJdPVwiZW50cnkuZXNjYWxhdGVkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5kb3QtZ3JleV09XCIhZW50cnkuZXNjYWxhdGVkXCI+PC9zcGFuPnt7IGFnZW50TGFiZWwoZW50cnkpIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImVudHJ5LnRleHRcIiBjbGFzcz1cImNvbnRlbnR0ZXh0IGZ3LXNlbWlib2xkIG10LTJcIj57eyBlbnRyeS50ZXh0IH19PC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBBbmFseXNpcyBlbnRyeTogbGFiZWwvdmFsdWUgcGFpcnMsIHRoZW4gdGhlIGV4cGFuZGVyIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImVudHJ5LmtpbmQgPT09ICdhbmFseXNpcydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IG10LTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtZXRhLWxhYmVsIHRpbWluZ3RleHQgZnctc2VtaWJvbGRcIj5JU1NVRSBDQVRFR09SWTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtZXRhLXZhbHVlIGNvbnRlbnR0ZXh0IGZ3LXNlbWlib2xkXCI+e3sgZW50cnkuaXNzdWVDYXRlZ29yeSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IG10LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtZXRhLWxhYmVsIHRpbWluZ3RleHQgZnctc2VtaWJvbGRcIj5ST09UIENBVVNFPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1ldGEtdmFsdWUgY29udGVudHRleHQgZnctc2VtaWJvbGRcIj57eyBlbnRyeS5yb290Q2F1c2UgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFuYWx5c2lzLWxpbmsgY29udGVudHRleHQgZnctc2VtaWJvbGQgY3Vyc29yLXBvaW50ZXIgbXQtNFwiIChjbGljayk9XCJ0b2dnbGVBbmFseXNpcyhlbnRyeSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGV2cm9uLWRvd24gbWUtMlwiIFtjbGFzcy5vcGVuXT1cImVudHJ5LnNob3dBbmFseXNpc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCIgdmlld0JveD1cIjAgMCAxNCAxNFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0zIDVMNyA5LjVMMTEgNVwiIHN0cm9rZT1cIiMwMDlCRjNcIiBzdHJva2Utd2lkdGg9XCIxLjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGVudHJ5LnNob3dBbmFseXNpcyA/ICdIaWRlIHRoZSBmdWxsIGFuYWx5c2lzJyA6ICdTaG93IHRoZSBmdWxsIGFuYWx5c2lzJyB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJlbnRyeS5zaG93QW5hbHlzaXMgJiYgZW50cnkuYW5hbHlzaXNcIiBjbGFzcz1cIm10LTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFuYWx5c2lzLXJvdyBkLWZsZXggbWItNFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkb3QgYW5hbHlzaXMtZG90IG1lLTNcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGltaW5ndGV4dCBmdy1zZW1pYm9sZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYW5hbHlzaXMtbGFiZWwgdGltaW5ndGV4dCBmdy1zZW1pYm9sZCBtZS0zXCI+Q0FVU0U8L3NwYW4+e3sgZW50cnkuYW5hbHlzaXMuY2F1c2UgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFuYWx5c2lzLXJvdyBkLWZsZXggbWItNFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkb3QgYW5hbHlzaXMtZG90IG1lLTNcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGltaW5ndGV4dCBmdy1zZW1pYm9sZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYW5hbHlzaXMtbGFiZWwgdGltaW5ndGV4dCBmdy1zZW1pYm9sZCBtZS0zXCI+UFJPT0Y8L3NwYW4+e3sgZW50cnkuYW5hbHlzaXMucHJvb2YgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFuYWx5c2lzLXJvdyBkLWZsZXggbWItNFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkb3QgYW5hbHlzaXMtZG90IG1lLTNcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGltaW5ndGV4dCBmdy1zZW1pYm9sZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYW5hbHlzaXMtbGFiZWwgdGltaW5ndGV4dCBmdy1zZW1pYm9sZCBtZS0zXCI+RklYPC9zcGFuPnt7IGVudHJ5LmFuYWx5c2lzLmZpeCB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYW5hbHlzaXMtcm93IGQtZmxleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkb3QgYW5hbHlzaXMtZG90IG1lLTNcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGltaW5ndGV4dCBmdy1zZW1pYm9sZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYW5hbHlzaXMtbGFiZWwgdGltaW5ndGV4dCBmdy1zZW1pYm9sZCBtZS0zXCI+Tk9URVM8L3NwYW4+e3sgZW50cnkuYW5hbHlzaXMubm90ZXMgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gV2hpY2ggc2lkZSB3cm90ZSB0aGlzLCB1bmRlciB0aGUgbmFtZS4gT25seSBvbiBzdG9yZWRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93czogdGhlIG9wZW4gLyBjbG9zZWQgbm90ZXMgYW5kIHRoZSBhZ2VudCBjYXJkIHNwZWFrXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciB0aGVtc2VsdmVzLiAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJlbnRyeS5hdXRob3JUeXBlXCIgY2xhc3M9XCJwcm9maWxlLWxhYmVsIG10LTFcIj57eyByZXBseUxhYmVsKGVudHJ5KSB9fTwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gQSBzdG9yZWQgaWRlbnRpZmljYXRpb24sIGxhaWQgb3V0IGZyb20gaXRzIHJlYXNvbnMgcmF0aGVyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYW4gc3VtbWFyaXNlZCBpbnRvIGEgc2VudGVuY2UuIFRoZSBUYW5nbyByb3dzIHdyaXR0ZW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxvbmdzaWRlIGl0IC0gdGhlIGZpeCBzdGVwcyBhbmQgdGhlIHN0YXR1cy1jaGVjayB0aW1lciAtXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZSBmaWx0ZXJlZCBvdXQgYnkgdGhlIEFQSSwgc28gb25lIHN1Ym1pc3Npb24gaXMgb25lIHJvdy4gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZW50cnkua2luZCA9PT0gJ2FjdGl2aXR5JyAmJiBlbnRyeS5hY3Rpdml0eUtpbmQgPT09ICdpc3N1ZUlkZW50aWZpZWQnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgcmVhc29uIG9mIGVudHJ5LnJlYXNvbnNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRlbnR0ZXh0IGZ3LXNlbWlib2xkIG10LTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlJ3JlIGN1cnJlbnRseSBlbmNvdW50ZXJpbmcgYW4gPHNwYW4gY2xhc3M9XCJmdy1ib2xkLTcwMFwiPnt7IHJlYXNvbi5wcmltYXJ5SXNzdWUgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwicmVhc29uLnNlY29uZGFyeUlzc3VlLmxlbmd0aFwiIGNsYXNzPVwibXQtMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJpbnZlc3RpZ2F0aW9uIGZ3LXNlbWlib2xkXCI+VGhlIGZvbGxvd2luZyBhcmUgdGhlIHJlbGV2YW50IHByb2JsZW0gZmFjaW5nPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPVwicHJvZmlsZS1sYWJlbCBtdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpICpuZ0Zvcj1cImxldCBzZWNvbmRhcnkgb2YgcmVhc29uLnNlY29uZGFyeUlzc3VlXCI+e3sgc2Vjb25kYXJ5Lm5hbWUgfX08L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImVudHJ5LmNvbW1lbnRcIiBjbGFzcz1cInRpbWluZ3RleHQgbXQtMlwiPnt7IGVudHJ5LmNvbW1lbnQgfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gSXNzdWUgaWRlbnRpZmljYXRpb24sIGluc2lkZSB0aGUgY2hpbGQgcGFuZWwuIEljb25zIGFyZSBjb3BpZWRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb20gdGhlIFYxIHRhYiBzbyB0aGUgdHdvIHRhYnMgcmVuZGVyIGlkZW50aWNhbGx5LiBPbmx5IHRoZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGl2ZSBjeWNsZSBjYXJyaWVzIGl0IC0gYSBjbG9zZWQgb25lIGhhcyBub3RoaW5nIHRvIGFuc3dlciAtXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbyBpdCBzdGlsbCBhcHBlYXJzIGF0IG1vc3Qgb25jZSBwZXIgcGFyZW50LiAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwic2hvd0lzc3VlUGlja2VyICYmIGlzSWRlbnRpZnlDaGlsZChjaGlsZClcIiBjbGFzcz1cImludmVzdGlnYXRpb24gZnctc2VtaWJvbGQgbXQtNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBLaW5kbHkgY2hvb3NlIHRoZSBvcHRpb24gYmVsb3cgdGhhdCBjb3JyZXNwb25kcyB0byB0aGUgaXNzdWUgeW91IGFyZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBlcmllbmNpbmcgaW4gdGhlIHN0b3JlLlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJsaXN0LXVuc3R5bGVkIHB4LTRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cInB5LTQgY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwiY2hvb3Nlbklzc3VlKCdJbnRlcm5ldCBJc3N1ZXMnKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJpbnRlcm5ldEljb25cIj48L25nLWNvbnRhaW5lcj4gPHNwYW4gY2xhc3M9XCJweC0zXCI+SW50ZXJuZXQgSXNzdWVzPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cInB5LTQgY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwiY2hvb3Nlbklzc3VlKCdDYW1lcmEgSXNzdWVzJylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY2FtZXJhSWNvblwiPjwvbmctY29udGFpbmVyPiA8c3BhbiBjbGFzcz1cInB4LTNcIj5DYW1lcmEgSXNzdWVzPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cInB5LTQgY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwiY2hvb3Nlbklzc3VlKCdTeXN0ZW0gSXNzdWVzJylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwic3lzdGVtSWNvblwiPjwvbmctY29udGFpbmVyPiA8c3BhbiBjbGFzcz1cInB4LTNcIj5TeXN0ZW0gSXNzdWVzPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cInB5LTQgY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwiY2hvb3Nlbklzc3VlKCdTdG9yZSBPcGVyYXRpb24gSXNzdWVzJylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwic3RvcmVJY29uXCI+PC9uZy1jb250YWluZXI+IDxzcGFuIGNsYXNzPVwicHgtM1wiPlN0b3JlIE9wZXJhdGlvbiBJc3N1ZXM8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwicHktNCBjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJjaG9vc2VuSXNzdWUoJ0FwcGxpY2F0aW9uIElzc3VlcycpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImFwcEljb25cIj48L25nLWNvbnRhaW5lcj4gPHNwYW4gY2xhc3M9XCJweC0zXCI+QXBwbGljYXRpb24gSXNzdWVzPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInNob3dJc3N1ZURldGFpbCAmJiBpc0lkZW50aWZ5Q2hpbGQoY2hpbGQpXCIgY2xhc3M9XCJtdC01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJvcGVuZWRpc3N1ZSBkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInByb2ZpbGUtbGFiZWwgZnctc2VtaWJvbGRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2VsZWN0ZWRJc3N1ZSA9PT0gJ0ludGVybmV0IElzc3VlcydcIiBbbmdUZW1wbGF0ZU91dGxldF09XCJpbnRlcm5ldEljb25cIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2VsZWN0ZWRJc3N1ZSA9PT0gJ0NhbWVyYSBJc3N1ZXMnXCIgW25nVGVtcGxhdGVPdXRsZXRdPVwiY2FtZXJhSWNvblwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzZWxlY3RlZElzc3VlID09PSAnU3lzdGVtIElzc3VlcydcIiBbbmdUZW1wbGF0ZU91dGxldF09XCJzeXN0ZW1JY29uXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNlbGVjdGVkSXNzdWUgPT09ICdTdG9yZSBPcGVyYXRpb24gSXNzdWVzJ1wiIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInN0b3JlSWNvblwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzZWxlY3RlZElzc3VlID09PSAnQXBwbGljYXRpb24gSXNzdWVzJ1wiIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImFwcEljb25cIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1zLTJcIj57eyBzZWxlY3RlZElzc3VlIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAoY2xpY2spPVwiY2hvb3Nlbklzc3VlKCcnKVwiIGNsYXNzPVwibWFpbmNhcmQtY29udGVudCBiZy13aGl0ZSBweC0zIHB5LTIgY3Vyc29yLXBvaW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE0XCIgaGVpZ2h0PVwiMTRcIiB2aWV3Qm94PVwiMCAwIDE0IDE0XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xMi44MzI3IDYuOTk5MzVIMS4xNjYwMk0xLjE2NjAyIDYuOTk5MzVMNi45OTkzNSAxMi44MzI3TTEuMTY2MDIgNi45OTkzNUw2Ljk5OTM1IDEuMTY2MDJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzM0NDA1NFwiIHN0cm9rZS13aWR0aD1cIjEuNjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1haW5jYXJkLWNvbnRlbnQgdy0xMDAgbXQtMiBweC00IHB5LTIgcGItNFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1haW5jYXJkLWxhYmVsIGZ3LXNlbWlib2xkIHB5LTJcIj5QbGVhc2Ugc2VsZWN0IHRoZSByZWxldmFudCBwcm9ibGVtIGZhY2luZyBmcm9tIHRoZSBmb2xsb3dpbmc8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGlzc3VlIG9mIHNlY29uZGFyeUlzc3VlczsgbGV0IGluZGV4ID0gaW5kZXhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWFpbmNhcmQtY29udGVudCBkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyIHctMTAwIG10LTIgcHgtNCBweS00IGN1cnNvci1wb2ludGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlQ2hlY2tib3goaW5kZXgpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+PGltZyBjbGFzcz1cInBlLTNcIiBzcmM9XCIuL2Fzc2V0cy90YW5nby9JbWFnZXMvRmVhdHVyZWQgaWNvbi5wbmdcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaGVhZGluZ3RleHRcIj57eyBpc3N1ZS5uYW1lIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3VuZGVkY2hlY2sgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgW2NoZWNrZWRdPVwiaXNzdWUuY2hlY2tlZFwiIGNsYXNzPVwicC0wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIEhpYmVybmF0aW9uICsgY29tbWVudCByb3csIGNvcGllZCBmcm9tIHRoZSBWMSB0YWJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodGlja2V0LWluZnJhLmNvbXBvbmVudC5odG1sOjMzMykgc28gYm90aCByZWFkIHRoZSBzYW1lLiAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAgcHQtNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cImhpYmVybmF0aW9uVjJcIiBjbGFzcz1cIm1haW5jYXJkLWxhYmVsIGZ3LXNlbWlib2xkIG1iLTJcIj5IaWJlcm5hdGlvbiAoaW4gZGF5cykgKjwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidy0yNTBweCBwb3NpdGlvbi1yZWxhdGl2ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwb3NpdGlvbi1hYnNvbHV0ZSB0cmFuc2xhdGUtbWlkZGxlLXkgdG9wLTUwIG1lLTUgcHMtMyB0aWNrZXREYXlzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3ZnLWljb24gdG9nZ2xlLW9mZiBzdmctaWNvbi0xXCIgW25nQ2xhc3NdPVwiaGliZXJuYXRpb25EYXlzID09PSAwID8gJ3BlLW5vbmUnIDogJydcIiAoY2xpY2spPVwiZGVjcmVhc2VIaWJlcm5hdGlvbigpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIxXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIxIDIwXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTQuNjY2MDIgMTBIMTYuMzMyN1wiIHN0cm9rZT1cIiMzNDQwNTRcIiBzdHJva2Utd2lkdGg9XCIxLjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBpZD1cImhpYmVybmF0aW9uVjJcIiBzdHlsZT1cInRleHQtYWxpZ246IGNlbnRlcjtcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwiaGliZXJuYXRpb25EYXlzXCIgcGxhY2Vob2xkZXI9XCIwXCIgcmVhZG9ubHkgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicG9zaXRpb24tYWJzb2x1dGUgdHJhbnNsYXRlLW1pZGRsZS15IHRvcC01MCBlbmQtMCBtZS0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3ZnLWljb24gdG9nZ2xlLW9uIHN2Zy1pY29uLTEgdGlja2V0RGF5c1wiIChjbGljayk9XCJpbmNyZWFzZUhpYmVybmF0aW9uKClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjFcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjEgMjBcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTAuNDk5MyA0LjE2NjVWMTUuODMzMk00LjY2NjAyIDkuOTk5ODRIMTYuMzMyN1wiIHN0cm9rZT1cIiMzNDQwNTRcIiBzdHJva2Utd2lkdGg9XCIxLjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIFRoZSBwYXBlcmNsaXAgaXMgaW5lcnQ6IFYxIHBvc3RzIHRvIHVwbG9hZEF0dGFjaG1lbnRzLywgYW5kIHRoZXJlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXMgbm93aGVyZSB0byB1cGxvYWQgdG8gd2hpbGUgdGhlIGRhdGEgaXMgbW9ja2VkLiAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXIgbXQtMTAgbWItNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiZm9ybS1jb250cm9sXCIgdHlwZT1cInRleHRcIiBbKG5nTW9kZWwpXT1cImNvbW1lbnRzXCIgcGxhY2Vob2xkZXI9XCJBZGQgeW91ciBjb21tZW50cy4uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImN1cnNvci1wb2ludGVyIGJ0biBidG4tZGVmYXVsdCBidG4tb3V0bGluZSBtcy0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTcuODY2NiA5LjIwODM1TDEwLjIwODIgMTYuODY2N0M5LjI3MDA1IDE3LjgwNDkgNy45OTc1NyAxOC4zMzIgNi42NzA3NSAxOC4zMzJDNS4zNDM5MyAxOC4zMzIgNC4wNzE0NSAxNy44MDQ5IDMuMTMzMjUgMTYuODY2N0MyLjE5NTA1IDE1LjkyODUgMS42Njc5NyAxNC42NTYgMS42Njc5NyAxMy4zMjkyQzEuNjY3OTcgMTIuMDAyNCAyLjE5NTA1IDEwLjcyOTkgMy4xMzMyNSA5Ljc5MTY4TDEwLjc5MTYgMi4xMzMzNUMxMS40MTcxIDEuNTA3ODggMTIuMjY1NCAxLjE1NjQ5IDEzLjE0OTkgMS4xNTY0OUMxNC4wMzQ1IDEuMTU2NDkgMTQuODgyOCAxLjUwNzg4IDE1LjUwODIgMi4xMzMzNUMxNi4xMzM3IDIuNzU4ODIgMTYuNDg1MSAzLjYwNzEzIDE2LjQ4NTEgNC40OTE2OEMxNi40ODUxIDUuMzc2MjMgMTYuMTMzNyA2LjIyNDU1IDE1LjUwODIgNi44NTAwMkw3Ljg0MTU4IDE0LjUwODNDNy41Mjg4NSAxNC44MjExIDcuMTA0NjkgMTQuOTk2OCA2LjY2MjQyIDE0Ljk5NjhDNi4yMjAxNCAxNC45OTY4IDUuNzk1OTggMTQuODIxMSA1LjQ4MzI1IDE0LjUwODNDNS4xNzA1MSAxNC4xOTU2IDQuOTk0ODIgMTMuNzcxNSA0Ljk5NDgyIDEzLjMyOTJDNC45OTQ4MiAxMi44ODY5IDUuMTcwNTEgMTIuNDYyNyA1LjQ4MzI1IDEyLjE1TDEyLjU1ODIgNS4wODMzNVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjMzQ0MDU0XCIgc3Ryb2tlLXdpZHRoPVwiMS42N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IG1zLTNcIiBbZGlzYWJsZWRdPVwiIWNhblN1Ym1pdElzc3VlIHx8IHN1Ym1pdHRpbmdcIiAoY2xpY2spPVwic3VibWl0SXNzdWUoKVwiPnt7IHN1Ym1pdHRpbmcgPyAnU3VibWl0dGluZy4uLicgOiAnU3VibWl0JyB9fTwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8L2Rpdj5cclxuPC9kaXY+XHJcblxyXG48IS0tIE9wdGlvbiBpY29ucywgZGVmaW5lZCBvbmNlIGJlY2F1c2UgZWFjaCBpcyB1c2VkIHR3aWNlOiBpbiB0aGUgb3B0aW9uIGxpc3RcclxuICAgICBhbmQgYWdhaW4gaW4gdGhlIGNob3Nlbi1pc3N1ZSBiYXIuIFBhdGhzIGFyZSBjb3BpZWQgdmVyYmF0aW0gZnJvbVxyXG4gICAgIHRpY2tldC1pbmZyYS5jb21wb25lbnQuaHRtbCBzbyB0aGUgdHdvIHRhYnMgbWF0Y2ggcGl4ZWwgZm9yIHBpeGVsLiAtLT5cclxuPG5nLXRlbXBsYXRlICNpbnRlcm5ldEljb24+XHJcbiAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICA8cGF0aCBkPVwiTTIxIDEyQzIxIDcuMDI5MyAxNi45NzA3IDMgMTIgM0M3LjAyOTMgMyAzIDcuMDI5MyAzIDEyQzMgMTYuOTcwNyA3LjAyOTMgMjEgMTIgMjFcIiBmaWxsPVwid2hpdGVcIiAvPlxyXG4gICAgICAgIDxwYXRoIGQ9XCJNMTIuOSAzLjA0NTA0QzEyLjkgMy4wNDUwNCAxNS42IDYuNjAwMDQgMTUuNiAxMkwxMi45IDMuMDQ1MDRaTTExLjEgMjAuOTU1QzExLjEgMjAuOTU1IDguNCAxNy40IDguNCAxMkM4LjQgNi42MDAwNCAxMS4xIDMuMDQ1MDQgMTEuMSAzLjA0NTA0TTMuNTY3IDE1LjE1SDEySDMuNTY3Wk0zLjU2NyA4Ljg1MDA0SDIwLjQzM0gzLjU2N1pcIiBmaWxsPVwid2hpdGVcIiAvPlxyXG4gICAgICAgIDxwYXRoIGQ9XCJNMjAuODkxMSAxNy4zMjUyQzIxLjMzNTcgMTcuNTk4OCAyMS4zMDc4IDE4LjI2MzkgMjAuODUwNiAxOC4zMTYxTDE4LjU0MDMgMTguNTc4TDE3LjUwNDQgMjAuNjU4OEMxNy4yOTkyIDIxLjA3MTkgMTYuNjY0NyAyMC44Njk0IDE2LjU1OTQgMjAuMzU4MkwxNS40Mjk5IDE0Ljg1MzhDMTUuMzQwOCAxNC40MjE4IDE1LjcyOTYgMTQuMTUgMTYuMTA0OSAxNC4zODEzTDIwLjg5MTEgMTcuMzI1MlpcIiBmaWxsPVwid2hpdGVcIiAvPlxyXG4gICAgICAgIDxwYXRoIGQ9XCJNMjAuMjUgMTJDMjAuMjUgMTIuNDE0MiAyMC41ODU4IDEyLjc1IDIxIDEyLjc1QzIxLjQxNDIgMTIuNzUgMjEuNzUgMTIuNDE0MiAyMS43NSAxMkgyMC4yNVpNMTIgMjEuNzVDMTIuNDE0MiAyMS43NSAxMi43NSAyMS40MTQyIDEyLjc1IDIxQzEyLjc1IDIwLjU4NTggMTIuNDE0MiAyMC4yNSAxMiAyMC4yNVYyMS43NVpNMTMuNDk3MyAyLjU5MTQyQzEzLjI0NjcgMi4yNjE1NiAxMi43NzYyIDIuMTk3MjUgMTIuNDQ2NCAyLjQ0Nzc4QzEyLjExNjUgMi42OTgzIDEyLjA1MjIgMy4xNjg4IDEyLjMwMjcgMy40OTg2NkwxMy40OTczIDIuNTkxNDJaTTE0Ljg1IDEyQzE0Ljg1IDEyLjQxNDMgMTUuMTg1OCAxMi43NSAxNS42IDEyLjc1QzE2LjAxNDIgMTIuNzUgMTYuMzUgMTIuNDE0MyAxNi4zNSAxMkgxNC44NVpNMTAuNTAyNyAyMS40MDg3QzEwLjc1MzMgMjEuNzM4NSAxMS4yMjM4IDIxLjgwMjggMTEuNTUzNiAyMS41NTIzQzExLjg4MzUgMjEuMzAxOCAxMS45NDc4IDIwLjgzMTMgMTEuNjk3MyAyMC41MDE0TDEwLjUwMjcgMjEuNDA4N1pNMTEuNjk3MyAzLjQ5ODY2QzExLjk0NzggMy4xNjg4IDExLjg4MzUgMi42OTgzIDExLjU1MzYgMi40NDc3OEMxMS4yMjM4IDIuMTk3MjUgMTAuNzUzMyAyLjI2MTU2IDEwLjUwMjcgMi41OTE0MkwxMS42OTczIDMuNDk4NjZaTTMuNTY3IDE0LjRDMy4xNTI3OSAxNC40IDIuODE3IDE0LjczNTggMi44MTcgMTUuMTVDMi44MTcgMTUuNTY0MyAzLjE1Mjc5IDE1LjkgMy41NjcgMTUuOVYxNC40Wk0xMiAxNS45QzEyLjQxNDIgMTUuOSAxMi43NSAxNS41NjQzIDEyLjc1IDE1LjE1QzEyLjc1IDE0LjczNTggMTIuNDE0MiAxNC40IDEyIDE0LjRWMTUuOVpNMy41NjcgOC4xMDAwNEMzLjE1Mjc5IDguMTAwMDQgMi44MTcgOC40MzU4MyAyLjgxNyA4Ljg1MDA0QzIuODE3IDkuMjY0MjYgMy4xNTI3OSA5LjYwMDA0IDMuNTY3IDkuNjAwMDRWOC4xMDAwNFpNMjAuNDMzIDkuNjAwMDRDMjAuODQ3MiA5LjYwMDA0IDIxLjE4MyA5LjI2NDI2IDIxLjE4MyA4Ljg1MDA0QzIxLjE4MyA4LjQzNTgzIDIwLjg0NzIgOC4xMDAwNCAyMC40MzMgOC4xMDAwNFY5LjYwMDA0Wk0yMC44OTExIDE3LjMyNTJMMjEuMjg0MiAxNi42ODY1TDIxLjI4NCAxNi42ODY0TDIwLjg5MTEgMTcuMzI1MlpNMjAuODUwNiAxOC4zMTYxTDIwLjkzNTEgMTkuMDYxM0wyMC45MzU3IDE5LjA2MTNMMjAuODUwNiAxOC4zMTYxWk0xOC41NDAzIDE4LjU3OEwxOC40NTU4IDE3LjgzMjhMMTguMDUwNiAxNy44Nzg3TDE3Ljg2ODkgMTguMjQzOEwxOC41NDAzIDE4LjU3OFpNMTcuNTA0NCAyMC42NTg4TDE2LjgzMyAyMC4zMjQ2TDE2LjgzMjcgMjAuMzI1MkwxNy41MDQ0IDIwLjY1ODhaTTE2LjU1OTQgMjAuMzU4MkwxNS44MjQ3IDIwLjUwOUwxNS44MjQ4IDIwLjUwOTVMMTYuNTU5NCAyMC4zNTgyWk0xNS40Mjk5IDE0Ljg1MzhMMTYuMTY0NiAxNC43MDNMMTYuMTY0NCAxNC43MDIzTDE1LjQyOTkgMTQuODUzOFpNMTYuMTA0OSAxNC4zODEzTDE1LjcxMTQgMTUuMDE5OEwxNS43MTIgMTUuMDIwMUwxNi4xMDQ5IDE0LjM4MTNaTTIxLjc1IDEyQzIxLjc1IDYuNjE1MDkgMTcuMzg0OSAyLjI1IDEyIDIuMjVWMy43NUMxNi41NTY1IDMuNzUgMjAuMjUgNy40NDM1MSAyMC4yNSAxMkgyMS43NVpNMTIgMi4yNUM2LjYxNTA5IDIuMjUgMi4yNSA2LjYxNTA5IDIuMjUgMTJIMy43NUMzLjc1IDcuNDQzNTEgNy40NDM1MSAzLjc1IDEyIDMuNzVWMi4yNVpNMi4yNSAxMkMyLjI1IDE3LjM4NDkgNi42MTUwOSAyMS43NSAxMiAyMS43NVYyMC4yNUM3LjQ0MzUxIDIwLjI1IDMuNzUgMTYuNTU2NSAzLjc1IDEySDIuMjVaTTEyLjkgMy4wNDUwNEMxMi4zMDI3IDMuNDk4NjYgMTIuMzAyNiAzLjQ5ODQ2IDEyLjMwMjQgMy40OTgyOEMxMi4zMDI0IDMuNDk4MjMgMTIuMzAyMyAzLjQ5ODA2IDEyLjMwMjIgMy40OTc5N0MxMi4zMDIxIDMuNDk3NzkgMTIuMzAyIDMuNDk3NjcgMTIuMzAxOSAzLjQ5NzZDMTIuMzAxOCAzLjQ5NzQ2IDEyLjMwMTkgMy40OTc1MyAxMi4zMDIxIDMuNDk3ODFDMTIuMzAyNSAzLjQ5ODM4IDEyLjMwMzYgMy40OTk4IDEyLjMwNTMgMy41MDIwNkMxMi4zMDg2IDMuNTA2NTggMTIuMzE0NCAzLjUxNDQ3IDEyLjMyMjUgMy41MjU2N0MxMi4zMzg3IDMuNTQ4MDkgMTIuMzY0MSAzLjU4Mzc1IDEyLjM5NzMgMy42MzIyNkMxMi40NjM4IDMuNzI5MjkgMTIuNTYxNiAzLjg3NzUyIDEyLjY4MDUgNC4wNzM2MUMxMi45MTgzIDQuNDY2MDYgMTMuMjM5MyA1LjA0ODYzIDEzLjU2MTQgNS43OTQ3OEMxNC4yMDYxIDcuMjg4MzcgMTQuODUgOS40MjUyNiAxNC44NSAxMkgxNi4zNUMxNi4zNSA5LjE3NDgzIDE1LjY0MzkgNi44MzQyMiAxNC45Mzg2IDUuMjAwMzFDMTQuNTg1NyA0LjM4MjcxIDE0LjIzMTcgMy43MzkwMiAxMy45NjMzIDMuMjk2MTZDMTMuODI5IDMuMDc0NiAxMy43MTU5IDIuOTAyOTEgMTMuNjM0NyAyLjc4NDQzQzEzLjU5NDEgMi43MjUxOCAxMy41NjE1IDIuNjc5MiAxMy41MzgxIDIuNjQ2OUMxMy41MjY1IDIuNjMwNzUgMTMuNTE3MSAyLjYxODAyIDEzLjUxMDIgMi42MDg3NkMxMy41MDY4IDIuNjA0MTMgMTMuNTA0IDIuNjAwMzYgMTMuNTAxOCAyLjU5NzQ3QzEzLjUwMDcgMi41OTYwMiAxMy40OTk4IDIuNTk0OCAxMy40OTkxIDIuNTkzNzlDMTMuNDk4NyAyLjU5MzI5IDEzLjQ5ODMgMi41OTI4NCAxMy40OTggMi41OTI0NEMxMy40OTc5IDIuNTkyMjQgMTMuNDk3NyAyLjU5MTk5IDEzLjQ5NzYgMi41OTE4OUMxMy40OTc0IDIuNTkxNjUgMTMuNDk3MyAyLjU5MTQyIDEyLjkgMy4wNDUwNFpNMTEuMSAyMC45NTVDMTEuNjk3MyAyMC41MDE0IDExLjY5NzQgMjAuNTAxNiAxMS42OTc2IDIwLjUwMThDMTEuNjk3NiAyMC41MDE5IDExLjY5NzcgMjAuNTAyIDExLjY5NzggMjAuNTAyMUMxMS42OTc5IDIwLjUwMjMgMTEuNjk4IDIwLjUwMjQgMTEuNjk4MSAyMC41MDI1QzExLjY5ODIgMjAuNTAyNiAxMS42OTgxIDIwLjUwMjYgMTEuNjk3OSAyMC41MDIzQzExLjY5NzUgMjAuNTAxNyAxMS42OTY0IDIwLjUwMDMgMTEuNjk0OCAyMC40OThDMTEuNjkxNCAyMC40OTM1IDExLjY4NTYgMjAuNDg1NiAxMS42Nzc1IDIwLjQ3NDRDMTEuNjYxMyAyMC40NTIgMTEuNjM1OSAyMC40MTYzIDExLjYwMjcgMjAuMzY3OEMxMS41MzYyIDIwLjI3MDggMTEuNDM4NCAyMC4xMjI2IDExLjMxOTUgMTkuOTI2NUMxMS4wODE3IDE5LjUzNCAxMC43NjA3IDE4Ljk1MTUgMTAuNDM4NiAxOC4yMDUzQzkuNzkzODggMTYuNzExNyA5LjE1IDE0LjU3NDggOS4xNSAxMkg3LjY1QzcuNjUgMTQuODI1MyA4LjM1NjEzIDE3LjE2NTkgOS4wNjE0MiAxOC43OTk4QzkuNDE0MzQgMTkuNjE3NCA5Ljc2ODMzIDIwLjI2MTEgMTAuMDM2NyAyMC43MDM5QzEwLjE3MSAyMC45MjU1IDEwLjI4NDEgMjEuMDk3MiAxMC4zNjUzIDIxLjIxNTdDMTAuNDA1OSAyMS4yNzQ5IDEwLjQzODUgMjEuMzIwOSAxMC40NjE5IDIxLjM1MzJDMTAuNDczNSAyMS4zNjkzIDEwLjQ4MjkgMjEuMzgyMSAxMC40ODk4IDIxLjM5MTNDMTAuNDkzMiAyMS4zOTYgMTAuNDk2IDIxLjM5OTcgMTAuNDk4MiAyMS40MDI2QzEwLjQ5OTMgMjEuNDA0MSAxMC41MDAyIDIxLjQwNTMgMTAuNTAwOSAyMS40MDYzQzEwLjUwMTMgMjEuNDA2OCAxMC41MDE3IDIxLjQwNzMgMTAuNTAyIDIxLjQwNzZDMTAuNTAyMSAyMS40MDc4IDEwLjUwMjMgMjEuNDA4MSAxMC41MDI0IDIxLjQwODJDMTAuNTAyNiAyMS40MDg0IDEwLjUwMjcgMjEuNDA4NyAxMS4xIDIwLjk1NVpNOS4xNSAxMkM5LjE1IDkuNDI1MjYgOS43OTM4OCA3LjI4ODM3IDEwLjQzODYgNS43OTQ3OEMxMC43NjA3IDUuMDQ4NjMgMTEuMDgxNyA0LjQ2NjA2IDExLjMxOTUgNC4wNzM2MUMxMS40Mzg0IDMuODc3NTIgMTEuNTM2MiAzLjcyOTI5IDExLjYwMjcgMy42MzIyNkMxMS42MzU5IDMuNTgzNzUgMTEuNjYxMyAzLjU0ODA5IDExLjY3NzUgMy41MjU2N0MxMS42ODU2IDMuNTE0NDcgMTEuNjkxNCAzLjUwNjU4IDExLjY5NDggMy41MDIwNkMxMS42OTY0IDMuNDk5OCAxMS42OTc1IDMuNDk4MzggMTEuNjk3OSAzLjQ5NzgxQzExLjY5ODEgMy40OTc1MyAxMS42OTgyIDMuNDk3NDYgMTEuNjk4MSAzLjQ5NzZDMTEuNjk4IDMuNDk3NjcgMTEuNjk3OSAzLjQ5Nzc5IDExLjY5NzggMy40OTc5N0MxMS42OTc3IDMuNDk4MDYgMTEuNjk3NiAzLjQ5ODIzIDExLjY5NzYgMy40OTgyOEMxMS42OTc0IDMuNDk4NDYgMTEuNjk3MyAzLjQ5ODY2IDExLjEgMy4wNDUwNEMxMC41MDI3IDIuNTkxNDIgMTAuNTAyNiAyLjU5MTY1IDEwLjUwMjQgMi41OTE4OUMxMC41MDIzIDIuNTkxOTkgMTAuNTAyMSAyLjU5MjI0IDEwLjUwMiAyLjU5MjQ0QzEwLjUwMTcgMi41OTI4NCAxMC41MDEzIDIuNTkzMjkgMTAuNTAwOSAyLjU5Mzc5QzEwLjUwMDIgMi41OTQ4IDEwLjQ5OTMgMi41OTYwMiAxMC40OTgyIDIuNTk3NDdDMTAuNDk2IDIuNjAwMzYgMTAuNDkzMiAyLjYwNDEzIDEwLjQ4OTggMi42MDg3NkMxMC40ODI5IDIuNjE4MDIgMTAuNDczNSAyLjYzMDc1IDEwLjQ2MTkgMi42NDY5QzEwLjQzODUgMi42NzkyIDEwLjQwNTkgMi43MjUxOCAxMC4zNjUzIDIuNzg0NDNDMTAuMjg0MSAyLjkwMjkxIDEwLjE3MSAzLjA3NDYgMTAuMDM2NyAzLjI5NjE2QzkuNzY4MzMgMy43MzkwMiA5LjQxNDM0IDQuMzgyNzEgOS4wNjE0MiA1LjIwMDMxQzguMzU2MTMgNi44MzQyMiA3LjY1IDkuMTc0ODMgNy42NSAxMkg5LjE1Wk0zLjU2NyAxNS45SDEyVjE0LjRIMy41NjdWMTUuOVpNMy41NjcgOS42MDAwNEgyMC40MzNWOC4xMDAwNEgzLjU2N1Y5LjYwMDA0Wk0yMC40OTggMTcuOTYzOUMyMC40NzkyIDE3Ljk1MjQgMjAuNDU3NSAxNy45MjUyIDIwLjQ1OTcgMTcuODcyN0MyMC40NjA5IDE3Ljg0MzQgMjAuNDcxNSAxNy43NzcyIDIwLjUyOTcgMTcuNzA1NEMyMC41OTYxIDE3LjYyMzUgMjAuNjg4OSAxNy41Nzk3IDIwLjc2NTUgMTcuNTcwOUwyMC45MzU3IDE5LjA2MTNDMjEuNjE2NyAxOC45ODM1IDIxLjkzODQgMTguNDE3OSAyMS45NTg0IDE3LjkzNDZDMjEuOTc3NiAxNy40NjgyIDIxLjc0NzYgMTYuOTcxNyAyMS4yODQyIDE2LjY4NjVMMjAuNDk4IDE3Ljk2MzlaTTIwLjc2NjEgMTcuNTcwOUwxOC40NTU4IDE3LjgzMjhMMTguNjI0OCAxOS4zMjMyTDIwLjkzNTEgMTkuMDYxM0wyMC43NjYxIDE3LjU3MDlaTTE3Ljg2ODkgMTguMjQzOEwxNi44MzMgMjAuMzI0NkwxOC4xNzU4IDIwLjk5MzFMMTkuMjExNyAxOC45MTIzTDE3Ljg2ODkgMTguMjQzOFpNMTYuODMyNyAyMC4zMjUyQzE2Ljg2NjggMjAuMjU2NSAxNi45Mzk1IDIwLjE4MzkgMTcuMDM5OCAyMC4xNDkyQzE3LjEyNzcgMjAuMTE4OCAxNy4xOTQgMjAuMTMxNiAxNy4yMjIxIDIwLjE0MDVDMTcuMjcyIDIwLjE1NjQgMTcuMjg5NiAyMC4xODU3IDE3LjI5NCAyMC4yMDY5TDE1LjgyNDggMjAuNTA5NUMxNS45MzQ1IDIxLjA0MTkgMTYuMzIyIDIxLjQyODEgMTYuNzY2OCAyMS41Njk3QzE3LjIyODYgMjEuNzE2OCAxNy44NzA3IDIxLjYwNzMgMTguMTc2MSAyMC45OTI1TDE2LjgzMjcgMjAuMzI1MlpNMTcuMjk0MSAyMC4yMDc0TDE2LjE2NDYgMTQuNzAzTDE0LjY5NTIgMTUuMDA0NkwxNS44MjQ3IDIwLjUwOUwxNy4yOTQxIDIwLjIwNzRaTTE2LjE2NDQgMTQuNzAyM0MxNi4xNzIzIDE0Ljc0MDYgMTYuMTY2NiAxNC44ODMgMTYuMDIzMiAxNC45ODMzQzE1Ljg4IDE1LjA4MzUgMTUuNzQ0NiAxNS4wNDAyIDE1LjcxMTQgMTUuMDE5OEwxNi40OTg0IDEzLjc0MjhDMTYuMDg5OSAxMy40OTExIDE1LjU3MjQgMTMuNDY4IDE1LjE2MzMgMTMuNzU0M0MxNC43NTQgMTQuMDQwNyAxNC41OTg0IDE0LjUzNSAxNC42OTU0IDE1LjAwNTNMMTYuMTY0NCAxNC43MDIzWk0xNS43MTIgMTUuMDIwMUwyMC40OTgyIDE3Ljk2NEwyMS4yODQgMTYuNjg2NEwxNi40OTc4IDEzLjc0MjVMMTUuNzEyIDE1LjAyMDFaXCIgZmlsbD1cIiM0NzU0NjdcIiAvPlxyXG4gICAgPC9zdmc+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI2NhbWVyYUljb24+XHJcbiAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDI0IDIwXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICA8cGF0aCBkPVwiTTIzIDE3QzIzIDE3LjUzMDQgMjIuNzg5MyAxOC4wMzkxIDIyLjQxNDIgMTguNDE0MkMyMi4wMzkxIDE4Ljc4OTMgMjEuNTMwNCAxOSAyMSAxOUgzQzIuNDY5NTcgMTkgMS45NjA4NiAxOC43ODkzIDEuNTg1NzkgMTguNDE0MkMxLjIxMDcxIDE4LjAzOTEgMSAxNy41MzA0IDEgMTdWNkMxIDUuNDY5NTcgMS4yMTA3MSA0Ljk2MDg2IDEuNTg1NzkgNC41ODU3OUMxLjk2MDg2IDQuMjEwNzEgMi40Njk1NyA0IDMgNEg3TDkgMUgxNUwxNyA0SDIxQzIxLjUzMDQgNCAyMi4wMzkxIDQuMjEwNzEgMjIuNDE0MiA0LjU4NTc5QzIyLjc4OTMgNC45NjA4NiAyMyA1LjQ2OTU3IDIzIDZWMTdaXCJcclxuICAgICAgICAgICAgc3Ryb2tlPVwiIzQ3NTQ2N1wiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgIDxwYXRoIGQ9XCJNMTIgMTVDMTQuMjA5MSAxNSAxNiAxMy4yMDkxIDE2IDExQzE2IDguNzkwODYgMTQuMjA5MSA3IDEyIDdDOS43OTA4NiA3IDggOC43OTA4NiA4IDExQzggMTMuMjA5MSA5Ljc5MDg2IDE1IDEyIDE1WlwiXHJcbiAgICAgICAgICAgIHN0cm9rZT1cIiM0NzU0NjdcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgIDwvc3ZnPlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICNzeXN0ZW1JY29uPlxyXG4gICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjE0XCIgdmlld0JveD1cIjAgMCAyMCAxNFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgPHBhdGggZD1cIk0xMiAyVjlIMlYySDEyWk0yIDBDMC44OTY4NzUgMCAwIDAuODk2ODc1IDAgMlY5QzAgMTAuMTAzMSAwLjg5Njg3NSAxMSAyIDExSDUuNjY1NjNMNS4zMzEyNSAxMkgzQzIuNDQ2ODggMTIgMiAxMi40NDY5IDIgMTNDMiAxMy41NTMxIDIuNDQ2ODggMTQgMyAxNEgxMUMxMS41NTMxIDE0IDEyIDEzLjU1MzEgMTIgMTNDMTIgMTIuNDQ2OSAxMS41NTMxIDEyIDExIDEySDguNjY1NjJMOC4zMzEyNSAxMUgxMkMxMy4xMDMxIDExIDE0IDEwLjEwMzEgMTQgOVYyQzE0IDAuODk2ODc1IDEzLjEwMzEgMCAxMiAwSDJaTTE2LjUgMEMxNS42NzE5IDAgMTUgMC42NzE4NzUgMTUgMS41VjEyLjVDMTUgMTMuMzI4MSAxNS42NzE5IDE0IDE2LjUgMTRIMTguNUMxOS4zMjgxIDE0IDIwIDEzLjMyODEgMjAgMTIuNVYxLjVDMjAgMC42NzE4NzUgMTkuMzI4MSAwIDE4LjUgMEgxNi41Wk0xNyAySDE4QzE4LjI3NSAyIDE4LjUgMi4yMjUgMTguNSAyLjVDMTguNSAyLjc3NSAxOC4yNzUgMyAxOCAzSDE3QzE2LjcyNSAzIDE2LjUgMi43NzUgMTYuNSAyLjVDMTYuNSAyLjIyNSAxNi43MjUgMiAxNyAyWk0xNi41IDQuNUMxNi41IDQuMjI1IDE2LjcyNSA0IDE3IDRIMThDMTguMjc1IDQgMTguNSA0LjIyNSAxOC41IDQuNUMxOC41IDQuNzc1IDE4LjI3NSA1IDE4IDVIMTdDMTYuNzI1IDUgMTYuNSA0Ljc3NSAxNi41IDQuNVpNMTcuNSA5LjVDMTcuNzY1MiA5LjUgMTguMDE5NiA5LjYwNTM2IDE4LjIwNzEgOS43OTI4OUMxOC4zOTQ2IDkuOTgwNDMgMTguNSAxMC4yMzQ4IDE4LjUgMTAuNUMxOC41IDEwLjc2NTIgMTguMzk0NiAxMS4wMTk2IDE4LjIwNzEgMTEuMjA3MUMxOC4wMTk2IDExLjM5NDYgMTcuNzY1MiAxMS41IDE3LjUgMTEuNUMxNy4yMzQ4IDExLjUgMTYuOTgwNCAxMS4zOTQ2IDE2Ljc5MjkgMTEuMjA3MUMxNi42MDU0IDExLjAxOTYgMTYuNSAxMC43NjUyIDE2LjUgMTAuNUMxNi41IDEwLjIzNDggMTYuNjA1NCA5Ljk4MDQzIDE2Ljc5MjkgOS43OTI4OUMxNi45ODA0IDkuNjA1MzYgMTcuMjM0OCA5LjUgMTcuNSA5LjVaXCJcclxuICAgICAgICAgICAgZmlsbD1cIiM0NzU0NjdcIiAvPlxyXG4gICAgPC9zdmc+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI3N0b3JlSWNvbj5cclxuICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgIDxwYXRoIGQ9XCJNMy4wODk5NSA2Ljg4MzY5TDMuMDI0MDEgNi45ODY2OUMyLjMwMzU4IDguMjU1NTcgMy4wNjEwMSA5Ljg3OTQ1IDQuNDY0NjQgMTAuMDY2MkM0LjU4NjI3IDEwLjA4MTEgNC43MDExMiAxMC4wODkyIDQuODE0NSAxMC4wODkyQzUuNTUyNTUgMTAuMDg5MiA2LjIwNTIzIDkuNzcyMjkgNi42NTk1MyA5LjI3OTE3TDcuMjEyODYgOC42Nzg1NEw3Ljc2NDMyIDkuMjgwODlDOC4yMTM2NyA5Ljc3MTcxIDguODY1MiAxMC4wODkyIDkuNjA3NzYgMTAuMDg5MkMxMC4zNDcxIDEwLjA4OTIgMTEuMDAyMiA5Ljc3MTM3IDExLjQ1MTIgOS4yODA4OUwxMi4wMDQ0IDguNjc2NjVMMTIuNTU3NiA5LjI4MDg5QzEzLjAwNjYgOS43NzEzNyAxMy42NjE3IDEwLjA4OTIgMTQuNDAxIDEwLjA4OTJDMTUuMTQwNCAxMC4wODkyIDE1Ljc5NTQgOS43NzEzNyAxNi4yNDQ1IDkuMjgwODlMMTYuNzk3NyA4LjY3NjY1TDE3LjM1MDggOS4yODA4OUMxNy43OTk5IDkuNzcxMzcgMTguNDU0OSAxMC4wODkyIDE5LjE5NDMgMTAuMDg5MkMxOS4zMDQxIDEwLjA4OTIgMTkuNDIyMyAxMC4wODExIDE5LjU0MzMgMTAuMDY2M0MyMC45NzcyIDkuODcxNjggMjEuNzM1NSA4LjE2Mzg3IDIwLjkxNTUgNi44ODQxOUMyMC45MTU0IDYuODg0MTMgMjAuOTE1NCA2Ljg4NDA3IDIwLjkxNTQgNi44ODQwMkwxOC44MDU2IDMuNTk0MjlMMTguODA1NiAzLjU5NDI5TDE4LjgwNDYgMy41OTI4MkMxOC43NTgyIDMuNTIwMDIgMTguNjY0OSAzLjQ2NDIzIDE4LjU1ODQgMy40NjQyM0g1LjQ0MzA3QzUuMzM2NSAzLjQ2NDIzIDUuMjQzMjYgMy41MjAwMiA1LjE5NjgxIDMuNTkyODJMNS4xOTYxOSAzLjU5Mzc5TDMuMDg5OTUgNi44ODM2OVpNNC44MTgxOCAxMi43NDk5QzQuNzE2NDQgMTIuNzQ5OSA0LjYxNiAxMi43NDY4IDQuNTE2OSAxMi43NDFWMTYuNjQyOFYxOC45NjQyQzQuNTE2OSAxOS44MjExIDUuMjI2NjMgMjAuNTM1NyA2LjExOTQyIDIwLjUzNTdIMTcuODgyQzE4Ljc3NDggMjAuNTM1NyAxOS40ODQ1IDE5LjgyMTEgMTkuNDg0NSAxOC45NjQyVjE2LjY0MjhWMTIuNzQxNUMxOS4zODc0IDEyLjc0NyAxOS4yODkzIDEyLjc0OTkgMTkuMTkwNiAxMi43NDk5QzE5LjAwMjIgMTIuNzQ5OSAxOC44MTU3IDEyLjczOTggMTguNjMyIDEyLjcyMDJWMTYuNjQyOFYxNy4zOTI4SDE3Ljg4Mkg2LjExOTQySDUuMzY5NDJWMTYuNjQyOFYxMi43MjFDNS4xODg2NiAxMi43NCA1LjAwNDcyIDEyLjc0OTkgNC44MTgxOCAxMi43NDk5WlwiXHJcbiAgICAgICAgICAgIHN0cm9rZT1cIiM0NzU0NjdcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiAvPlxyXG4gICAgPC9zdmc+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI2FwcEljb24+XHJcbiAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICA8cGF0aCBkPVwiTTggMUgxVjhIOFYxWlwiIHN0cm9rZT1cIiM0NzU0NjdcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICA8cGF0aCBkPVwiTTE5IDFIMTJWOEgxOVYxWlwiIHN0cm9rZT1cIiM0NzU0NjdcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICA8cGF0aCBkPVwiTTE5IDEySDEyVjE5SDE5VjEyWlwiIHN0cm9rZT1cIiM0NzU0NjdcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICA8cGF0aCBkPVwiTTggMTJIMVYxOUg4VjEyWlwiIHN0cm9rZT1cIiM0NzU0NjdcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgIDwvc3ZnPlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPCEtLSBPcGVuZWQgZnJvbSB0aGUgXCJOIHN0cmVhbXMgZG93blwiIHBpbGwgb24gYSBjaGlsZCByb3cuIFJlYWQtb25seTogdGhlIEFQSVxyXG4gICAgIHNlbmRzIGJvdGggdGltZXN0YW1wcyBhbHJlYWR5IGZvcm1hdHRlZCwgc28gbm90aGluZyBoZXJlIGRlcml2ZXMgYSB2YWx1ZS4gLS0+XHJcbjxuZy10ZW1wbGF0ZSAjc3RyZWFtc01vZGFsIGxldC1tb2RhbD5cclxuICAgIDxkaXYgY2xhc3M9XCJzdHJlYW1zLWRpYWxvZyBweC04IHB5LTdcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwibWItNVwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWFpbmNhcmQtbGFiZWwgZnctYm9sZFwiPlN0cmVhbXMgZG93bjwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGltaW5ndGV4dCBtdC0xXCI+e3sgc3RyZWFtc0N5Y2xlSWQgfX08L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLXJlc3BvbnNpdmVcIj5cclxuICAgICAgICAgICAgPHRhYmxlIGNsYXNzPVwidGFibGUgc3RyZWFtcy10YWJsZSBhbGlnbi1taWRkbGUgbWItMFwiPlxyXG4gICAgICAgICAgICAgICAgPHRoZWFkPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoPlN0cmVhbTwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5Eb3duIGZyb208L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGg+RG93biB0bzwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgIDwvdGhlYWQ+XHJcbiAgICAgICAgICAgICAgICA8dGJvZHk+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRyICpuZ0Zvcj1cImxldCBzdHJlYW0gb2Ygc3RyZWFtc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+PHNwYW4gY2xhc3M9XCJzdHJlYW0tbmFtZVwiIFt0aXRsZV09XCJzdHJlYW0uc3RyZWFtTmFtZVwiPnt7IHN0cmVhbS5zdHJlYW1OYW1lIH19PC9zcGFuPjwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57eyBzdHJlYW0uZnJvbSB8fCAnLS0nIH19PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7IHN0cmVhbS50byB8fCAnLS0nIH19PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgPC90Ym9keT5cclxuICAgICAgICAgICAgPC90YWJsZT5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtZW5kIG10LTdcIj5cclxuICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLWRlZmF1bHQgYnRuLXByaW1hcnlcIiAoY2xpY2spPVwibW9kYWwuZGlzbWlzcygpXCI+Q2xvc2U8L2J1dHRvbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG4iXX0=