@cqa-lib/cqa-ui 1.1.19 → 1.1.20
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/lib/compare-runs/compare-runs.component.mjs +43 -14
- package/fesm2015/cqa-lib-cqa-ui.mjs +42 -13
- package/fesm2015/cqa-lib-cqa-ui.mjs.map +1 -1
- package/fesm2020/cqa-lib-cqa-ui.mjs +42 -13
- package/fesm2020/cqa-lib-cqa-ui.mjs.map +1 -1
- package/lib/compare-runs/compare-runs.component.d.ts +4 -4
- package/package.json +1 -1
|
@@ -194,7 +194,7 @@ export class CompareRunsComponent {
|
|
|
194
194
|
isShow: true,
|
|
195
195
|
weight: 1.5,
|
|
196
196
|
render: (row) => {
|
|
197
|
-
if (row.runAStatus
|
|
197
|
+
if (!row.runAStatus) {
|
|
198
198
|
return '<span class="cqa-text-xs cqa-text-[#9CA3AF]">—</span>';
|
|
199
199
|
}
|
|
200
200
|
return `
|
|
@@ -211,7 +211,7 @@ export class CompareRunsComponent {
|
|
|
211
211
|
isShow: true,
|
|
212
212
|
weight: 1.5,
|
|
213
213
|
render: (row) => {
|
|
214
|
-
if (row.runBStatus
|
|
214
|
+
if (!row.runBStatus) {
|
|
215
215
|
return '<span class="cqa-text-xs cqa-text-[#636363]"> — </span>';
|
|
216
216
|
}
|
|
217
217
|
return `
|
|
@@ -265,14 +265,14 @@ export class CompareRunsComponent {
|
|
|
265
265
|
}
|
|
266
266
|
renderStatusIcon(status) {
|
|
267
267
|
const upperStatus = status.toUpperCase();
|
|
268
|
-
if (upperStatus === '
|
|
268
|
+
if (upperStatus === 'SUCCESS') {
|
|
269
269
|
return `
|
|
270
270
|
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" fill="none">
|
|
271
271
|
<path d="M7.99998 14.6663C11.6819 14.6663 14.6666 11.6816 14.6666 7.99967C14.6666 4.31778 11.6819 1.33301 7.99998 1.33301C4.31808 1.33301 1.33331 4.31778 1.33331 7.99967C1.33331 11.6816 4.31808 14.6663 7.99998 14.6663Z" stroke="#00C950" stroke-width="1.33333" stroke-linecap="round" stroke-linejoin="round"/>
|
|
272
272
|
<path d="M6 8.00033L7.33333 9.33366L10 6.66699" stroke="#00C950" stroke-width="1.33333" stroke-linecap="round" stroke-linejoin="round"/>
|
|
273
273
|
</svg>`;
|
|
274
274
|
}
|
|
275
|
-
else if (upperStatus === '
|
|
275
|
+
else if (upperStatus === 'FAILURE') {
|
|
276
276
|
return `
|
|
277
277
|
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" fill="none">
|
|
278
278
|
<path d="M8.00004 14.6673C11.6819 14.6673 14.6667 11.6825 14.6667 8.00065C14.6667 4.31875 11.6819 1.33398 8.00004 1.33398C4.31814 1.33398 1.33337 4.31875 1.33337 8.00065C1.33337 11.6825 4.31814 14.6673 8.00004 14.6673Z" stroke="#FB2C36" stroke-width="1.33333" stroke-linecap="round" stroke-linejoin="round"/>
|
|
@@ -280,11 +280,24 @@ export class CompareRunsComponent {
|
|
|
280
280
|
<path d="M6 6L10 10" stroke="#FB2C36" stroke-width="1.33333" stroke-linecap="round" stroke-linejoin="round"/>
|
|
281
281
|
</svg>`;
|
|
282
282
|
}
|
|
283
|
-
else if (upperStatus === 'NOT_EXECUTED') {
|
|
283
|
+
else if (upperStatus === 'ABORTED' || upperStatus === 'STOPPED' || upperStatus === 'NOT_EXECUTED') {
|
|
284
284
|
return `
|
|
285
285
|
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" fill="none">
|
|
286
286
|
<path d="M8.00004 14.6673C11.6819 14.6673 14.6667 11.6825 14.6667 8.00065C14.6667 4.31875 11.6819 1.33398 8.00004 1.33398C4.31814 1.33398 1.33337 4.31875 1.33337 8.00065C1.33337 11.6825 4.31814 14.6673 8.00004 14.6673Z" stroke="#9CA3AF" stroke-width="1.33333" stroke-linecap="round" stroke-linejoin="round"/>
|
|
287
287
|
<path d="M6 8H10" stroke="#9CA3AF" stroke-width="1.33333" stroke-linecap="round" stroke-linejoin="round"/>
|
|
288
|
+
</svg>`;
|
|
289
|
+
}
|
|
290
|
+
else if (upperStatus === 'QUEUED') {
|
|
291
|
+
return `
|
|
292
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" fill="none" class="cqa-animate-spin">
|
|
293
|
+
<path d="M8 1.33331V3.99998" stroke="#3B82F6" stroke-width="1.33333" stroke-linecap="round" stroke-linejoin="round"/>
|
|
294
|
+
<path d="M8 12V14.6666" stroke="#3B82F6" stroke-width="1.33333" stroke-linecap="round" stroke-linejoin="round"/>
|
|
295
|
+
<path d="M1.33337 8H4.00004" stroke="#3B82F6" stroke-width="1.33333" stroke-linecap="round" stroke-linejoin="round"/>
|
|
296
|
+
<path d="M12 8H14.6667" stroke="#3B82F6" stroke-width="1.33333" stroke-linecap="round" stroke-linejoin="round"/>
|
|
297
|
+
<path d="M3.28662 3.28662L5.17329 5.17329" stroke="#3B82F6" stroke-width="1.33333" stroke-linecap="round" stroke-linejoin="round"/>
|
|
298
|
+
<path d="M10.8267 10.8267L12.7133 12.7133" stroke="#3B82F6" stroke-width="1.33333" stroke-linecap="round" stroke-linejoin="round"/>
|
|
299
|
+
<path d="M3.28662 12.7133L5.17329 10.8267" stroke="#3B82F6" stroke-width="1.33333" stroke-linecap="round" stroke-linejoin="round"/>
|
|
300
|
+
<path d="M10.8267 5.17329L12.7133 3.28662" stroke="#3B82F6" stroke-width="1.33333" stroke-linecap="round" stroke-linejoin="round"/>
|
|
288
301
|
</svg>`;
|
|
289
302
|
}
|
|
290
303
|
else {
|
|
@@ -338,7 +351,9 @@ export class CompareRunsComponent {
|
|
|
338
351
|
'SUCCESS': '#0B9D68',
|
|
339
352
|
'FAILURE': '#FB2C36',
|
|
340
353
|
'ABORTED': '#F59E0B',
|
|
341
|
-
'
|
|
354
|
+
'QUEUED': '#3B82F6',
|
|
355
|
+
'NOT_EXECUTED': '#6B7280',
|
|
356
|
+
'STOPPED': '#6B7280'
|
|
342
357
|
};
|
|
343
358
|
return colors[this.selectedRunA.result] || '#6B7280';
|
|
344
359
|
}
|
|
@@ -349,7 +364,9 @@ export class CompareRunsComponent {
|
|
|
349
364
|
'SUCCESS': '#0B9D68',
|
|
350
365
|
'FAILURE': '#FB2C36',
|
|
351
366
|
'ABORTED': '#F59E0B',
|
|
352
|
-
'
|
|
367
|
+
'QUEUED': '#3B82F6',
|
|
368
|
+
'NOT_EXECUTED': '#6B7280',
|
|
369
|
+
'STOPPED': '#6B7280'
|
|
353
370
|
};
|
|
354
371
|
return colors[this.selectedRunB.result] || '#6B7280';
|
|
355
372
|
}
|
|
@@ -360,7 +377,9 @@ export class CompareRunsComponent {
|
|
|
360
377
|
'SUCCESS': '#CFF2E5',
|
|
361
378
|
'FAILURE': '#FCD9D9',
|
|
362
379
|
'ABORTED': '#FEF3C7',
|
|
363
|
-
'
|
|
380
|
+
'QUEUED': '#DBEAFE',
|
|
381
|
+
'NOT_EXECUTED': '#F3F4F6',
|
|
382
|
+
'STOPPED': '#F3F4F6'
|
|
364
383
|
};
|
|
365
384
|
return colors[this.selectedRunA.result] || '#F3F4F6';
|
|
366
385
|
}
|
|
@@ -371,7 +390,9 @@ export class CompareRunsComponent {
|
|
|
371
390
|
'SUCCESS': '#CFF2E5',
|
|
372
391
|
'FAILURE': '#FCD9D9',
|
|
373
392
|
'ABORTED': '#FEF3C7',
|
|
374
|
-
'
|
|
393
|
+
'QUEUED': '#DBEAFE',
|
|
394
|
+
'NOT_EXECUTED': '#F3F4F6',
|
|
395
|
+
'STOPPED': '#F3F4F6'
|
|
375
396
|
};
|
|
376
397
|
return colors[this.selectedRunB.result] || '#F3F4F6';
|
|
377
398
|
}
|
|
@@ -382,7 +403,9 @@ export class CompareRunsComponent {
|
|
|
382
403
|
'SUCCESS': '#0DBD7D1A',
|
|
383
404
|
'FAILURE': '#EE3F3F1A',
|
|
384
405
|
'ABORTED': '#FEF3C7',
|
|
385
|
-
'
|
|
406
|
+
'QUEUED': '#DBEAFE',
|
|
407
|
+
'NOT_EXECUTED': '#F3F4F6',
|
|
408
|
+
'STOPPED': '#F3F4F6'
|
|
386
409
|
};
|
|
387
410
|
return colors[this.selectedRunA.result] || '#F3F4F6';
|
|
388
411
|
}
|
|
@@ -393,7 +416,9 @@ export class CompareRunsComponent {
|
|
|
393
416
|
'SUCCESS': '#0DBD7D1A',
|
|
394
417
|
'FAILURE': '#EE3F3F1A',
|
|
395
418
|
'ABORTED': '#FEF3C7',
|
|
396
|
-
'
|
|
419
|
+
'QUEUED': '#DBEAFE',
|
|
420
|
+
'NOT_EXECUTED': '#F3F4F6',
|
|
421
|
+
'STOPPED': '#F3F4F6'
|
|
397
422
|
};
|
|
398
423
|
return colors[this.selectedRunB.result] || '#F3F4F6';
|
|
399
424
|
}
|
|
@@ -419,7 +444,9 @@ export class CompareRunsComponent {
|
|
|
419
444
|
'SUCCESS': 'Passed',
|
|
420
445
|
'FAILURE': 'Failed',
|
|
421
446
|
'ABORTED': 'Aborted',
|
|
422
|
-
'
|
|
447
|
+
'QUEUED': 'Queued',
|
|
448
|
+
'NOT_EXECUTED': 'Not Executed',
|
|
449
|
+
'STOPPED': 'Stopped'
|
|
423
450
|
};
|
|
424
451
|
return labels[this.selectedRunA.result] || this.selectedRunA.result;
|
|
425
452
|
}
|
|
@@ -430,7 +457,9 @@ export class CompareRunsComponent {
|
|
|
430
457
|
'SUCCESS': 'Passed',
|
|
431
458
|
'FAILURE': 'Failed',
|
|
432
459
|
'ABORTED': 'Aborted',
|
|
433
|
-
'
|
|
460
|
+
'QUEUED': 'Queued',
|
|
461
|
+
'NOT_EXECUTED': 'Not Executed',
|
|
462
|
+
'STOPPED': 'Stopped'
|
|
434
463
|
};
|
|
435
464
|
return labels[this.selectedRunB.result] || this.selectedRunB.result;
|
|
436
465
|
}
|
|
@@ -457,4 +486,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImpor
|
|
|
457
486
|
}], compareRuns: [{
|
|
458
487
|
type: Output
|
|
459
488
|
}] } });
|
|
460
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcGFyZS1ydW5zLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcGFyZS1ydW5zL2NvbXBhcmUtcnVucy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBhcmUtcnVucy9jb21wYXJlLXJ1bnMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQW9DLE1BQU0sRUFBRSxZQUFZLEVBQXFCLHVCQUF1QixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBS3JKLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHlDQUF5QyxDQUFDOzs7Ozs7OztBQTRGN0UsTUFBTSxPQUFPLG9CQUFvQjtJQStCL0IsWUFDVSxFQUFlLEVBQ2YsR0FBc0I7UUFEdEIsT0FBRSxHQUFGLEVBQUUsQ0FBYTtRQUNmLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBaEN2QixTQUFJLEdBQXlCLEVBQUUsQ0FBQztRQUVoQyxrQkFBYSxHQUFZLEtBQUssQ0FBQztRQUMvQixnQkFBVyxHQUFZLEtBQUssQ0FBQztRQUM3QixvQkFBZSxHQUFZLEtBQUssQ0FBQztRQUVoQyxlQUFVLEdBQUcsSUFBSSxZQUFZLEVBQWlCLENBQUM7UUFDL0MsaUJBQVksR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBQzFDLGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQWtCLENBQUM7UUFTM0Qsb0JBQWUsR0FBcUIsRUFBRSxDQUFDO1FBQ3ZDLGlCQUFZLEdBQXlCLEVBQUUsQ0FBQztRQUV4QyxjQUFTLEdBQVcsQ0FBQyxDQUFDO1FBQ3RCLGFBQVEsR0FBVyxFQUFFLENBQUM7UUFFdEIscUJBQWdCLEdBQXFCO1lBQ25DLEtBQUssRUFBRSxvQkFBb0I7WUFDM0IsV0FBVyxFQUFFLDhFQUE4RTtZQUMzRixRQUFRLEVBQUUsa0JBQWtCLENBQUMsWUFBWTtZQUN6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RSxhQUFhO1NBQzdCLENBQUM7UUFDRixPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDO0lBQ3RFLENBQUM7SUFFRCxJQUFJLGVBQWU7UUFDakIsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZO1lBQUUsT0FBTyxFQUFFLENBQUM7UUFDbEMsTUFBTSxNQUFNLEdBQTJCO1lBQ3JDLFNBQVMsRUFBRSxRQUFRO1lBQ25CLFNBQVMsRUFBRSxRQUFRO1lBQ25CLFNBQVMsRUFBRSxTQUFTO1lBQ3BCLGFBQWEsRUFBRSxhQUFhO1NBQzdCLENBQUM7UUFDRixPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDO0lBQ3RFLENBQUM7O2lIQTVkVSxvQkFBb0I7cUdBQXBCLG9CQUFvQiwwVUNqR2pDLHlpYUFzTUE7MkZEckdhLG9CQUFvQjtrQkFOaEMsU0FBUzsrQkFDRSxrQkFBa0IsbUJBR1gsdUJBQXVCLENBQUMsTUFBTTtrSUFHdEMsSUFBSTtzQkFBWixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBRUksVUFBVTtzQkFBbkIsTUFBTTtnQkFDRyxZQUFZO3NCQUFyQixNQUFNO2dCQUNHLFdBQVc7c0JBQXBCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkluaXQsIE9uQ2hhbmdlcywgU2ltcGxlQ2hhbmdlcywgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIENoYW5nZURldGVjdG9yUmVmLCBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IER5bmFtaWNTZWxlY3RGaWVsZENvbmZpZyB9IGZyb20gJy4uL2R5bmFtaWMtc2VsZWN0L2R5bmFtaWMtc2VsZWN0LWZpZWxkLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEeW5hbWljVGFibGVDb2x1bW4gfSBmcm9tICcuLi90YWJsZS9keW5hbWljLXRhYmxlL2R5bmFtaWMtdGFibGUuY29tcG9uZW50JztcbmltcG9ydCB7IEVtcHR5U3RhdGVDb25maWcgfSBmcm9tICcuLi9lbXB0eS1zdGF0ZS9lbXB0eS1zdGF0ZS1jb25maWcuaW50ZXJmYWNlJztcbmltcG9ydCB7IEVNUFRZX1NUQVRFX0lNQUdFUyB9IGZyb20gJy4uL2Fzc2V0cy9pbWFnZXMvaW1hZ2UtYXNzZXRzLmNvbnN0YW50cyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGVzdERldmljZSB7XG4gIGlkOiBudW1iZXI7XG4gIHRlc3RQbGFuSWQ6IG51bWJlcjtcbiAgdGl0bGU6IHN0cmluZztcbiAgYnJvd3Nlcjogc3RyaW5nO1xuICBwbGF0Zm9ybTogc3RyaW5nO1xuICBicm93c2VyVmVyc2lvbjogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRlc3REZXZpY2VTZXR0aW5ncyB7XG4gIHRpdGxlOiBzdHJpbmc7XG4gIG9zVmVyc2lvbjogc3RyaW5nO1xuICBicm93c2VyOiBzdHJpbmc7XG4gIGJyb3dzZXJWZXJzaW9uOiBzdHJpbmc7XG4gIHJlc29sdXRpb246IHN0cmluZztcbiAgcGxhdGZvcm06IHN0cmluZztcbiAgZGV2aWNlTmFtZTogc3RyaW5nIHwgbnVsbDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUZXN0RGV2aWNlUmVzdWx0IHtcbiAgdGVzdERldmljZTogVGVzdERldmljZTtcbiAgdGVzdERldmljZVNldHRpbmdzOiBUZXN0RGV2aWNlU2V0dGluZ3M7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGVzdENhc2VSZXN1bHREYXRhIHtcbiAgaWQ6IG51bWJlcjtcbiAgdGVzdENhc2VJZDogbnVtYmVyO1xuICB0ZXN0UGxhblJlc3VsdElkOiBudW1iZXI7XG4gIHJlc3VsdDogJ1NVQ0NFU1MnIHwgJ0ZBSUxVUkUnIHwgJ0FCT1JURUQnIHwgJ0lOX1BST0dSRVNTJztcbiAgc3RhdHVzOiAnU1RBVFVTX0NPTVBMRVRFRCcgfCAnU1RBVFVTX0lOX1BST0dSRVNTJyB8ICdTVEFUVVNfUVVFVUVEJztcbiAgc3RhcnRUaW1lOiBudW1iZXI7XG4gIGVuZFRpbWU6IG51bWJlcjtcbiAgZHVyYXRpb246IG51bWJlcjtcbiAgdGVzdERhdGFTZXROYW1lOiBzdHJpbmc7XG4gIGVudmlyb25tZW50OiBzdHJpbmc7XG4gIHRlc3REZXZpY2VSZXN1bHQ6IFRlc3REZXZpY2VSZXN1bHQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUnVuRGF0YSB7XG4gIGlkOiBudW1iZXI7XG4gIGxhYmVsOiBzdHJpbmc7XG4gIHJlc3VsdDogJ1NVQ0NFU1MnIHwgJ0ZBSUxVUkUnIHwgJ0FCT1JURUQnIHwgJ0lOX1BST0dSRVNTJztcbiAgc3RhcnRUaW1lOiBudW1iZXI7XG4gIGR1cmF0aW9uOiBudW1iZXI7XG4gIHRlc3REYXRhU2V0TmFtZTogc3RyaW5nO1xuICBkZXZpY2U6IHN0cmluZztcbiAgYnJvd3Nlcjogc3RyaW5nO1xuICBwbGF0Zm9ybTogc3RyaW5nO1xuICBlbnZpcm9ubWVudD86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb21wYXJpc29uU3VtbWFyeSB7XG4gIHVuY2hhbmdlZDogbnVtYmVyO1xuICBzdGF0dXNDaGFuZ2VkOiBudW1iZXI7XG4gIGFkZGVkOiBudW1iZXI7XG4gIHJlbW92ZWQ6IG51bWJlcjtcbiAgdGltaW5nOiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3RlcENvbXBhcmlzb24ge1xuICBzdGVwSWQ6IHN0cmluZztcbiAgc3RlcFRpdGxlOiBzdHJpbmc7XG4gIHJ1bkFTdGF0dXM/OiBzdHJpbmc7XG4gIHJ1bkFEdXJhdGlvbj86IG51bWJlcjtcbiAgcnVuQlN0YXR1cz86IHN0cmluZztcbiAgcnVuQkR1cmF0aW9uPzogbnVtYmVyO1xuICBjaGFuZ2U6ICdVTkNIQU5HRUQnIHwgJ1NUQVRVU19DSEFOR0VEJyB8ICdUSU1JTkdfQ0hBTkdFRCcgfCAnQURERUQnIHwgJ1JFTU9WRUQnO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbXBhcmlzb25SZXNwb25zZSB7XG4gIHN1bW1hcnk6IENvbXBhcmlzb25TdW1tYXJ5O1xuICBzdGVwc0NvbXBhcmlzb246IFN0ZXBDb21wYXJpc29uW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29tcGFyZVJlcXVlc3Qge1xuICBydW5BSWQ6IG51bWJlcjtcbiAgcnVuQklkOiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2VhcmNoUmVxdWVzdCB7XG4gIGtleTogc3RyaW5nO1xuICBxdWVyeTogc3RyaW5nO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjcWEtY29tcGFyZS1ydW5zJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NvbXBhcmUtcnVucy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogW10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIENvbXBhcmVSdW5zQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xuICBASW5wdXQoKSBydW5zOiBUZXN0Q2FzZVJlc3VsdERhdGFbXSA9IFtdO1xuICBASW5wdXQoKSBjb21wYXJpc29uRGF0YT86IENvbXBhcmlzb25SZXNwb25zZTtcbiAgQElucHV0KCkgaXNMb2FkaW5nUnVuczogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBoYXNNb3JlUnVuczogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBpc0NvbXBhcmluZ1J1bnM6IGJvb2xlYW4gPSBmYWxzZTtcbiAgXG4gIEBPdXRwdXQoKSBzZWFyY2hSdW5zID0gbmV3IEV2ZW50RW1pdHRlcjxTZWFyY2hSZXF1ZXN0PigpO1xuICBAT3V0cHV0KCkgbG9hZE1vcmVSdW5zID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG4gIEBPdXRwdXQoKSBjb21wYXJlUnVucyA9IG5ldyBFdmVudEVtaXR0ZXI8Q29tcGFyZVJlcXVlc3Q+KCk7XG5cbiAgZm9ybSE6IEZvcm1Hcm91cDtcbiAgcnVuQVNlbGVjdENvbmZpZyE6IER5bmFtaWNTZWxlY3RGaWVsZENvbmZpZztcbiAgcnVuQlNlbGVjdENvbmZpZyE6IER5bmFtaWNTZWxlY3RGaWVsZENvbmZpZztcblxuICBzZWxlY3RlZFJ1bkE/OiBSdW5EYXRhO1xuICBzZWxlY3RlZFJ1bkI/OiBSdW5EYXRhO1xuICBjb21wYXJpc29uU3VtbWFyeT86IENvbXBhcmlzb25TdW1tYXJ5O1xuICBzdGVwQ29tcGFyaXNvbnM6IFN0ZXBDb21wYXJpc29uW10gPSBbXTtcbiAgdGFibGVDb2x1bW5zOiBEeW5hbWljVGFibGVDb2x1bW5bXSA9IFtdO1xuICBcbiAgcGFnZUluZGV4OiBudW1iZXIgPSAwO1xuICBwYWdlU2l6ZTogbnVtYmVyID0gMTA7XG4gIFxuICBlbXB0eVN0YXRlQ29uZmlnOiBFbXB0eVN0YXRlQ29uZmlnID0ge1xuICAgIHRpdGxlOiAnTm8gQ29tcGFyaXNvbiBEYXRhJyxcbiAgICBkZXNjcmlwdGlvbjogJ1NlbGVjdCB0d28gcnVucyB0byBjb21wYXJlIGFuZCBzZWUgZGV0YWlsZWQgc3RlcC1ieS1zdGVwIGNvbXBhcmlzb24gcmVzdWx0cy4nLFxuICAgIGltYWdlVXJsOiBFTVBUWV9TVEFURV9JTUFHRVMuQ09NUEFSRV9SVU5TLFxuICAgIGFjdGlvbnM6IFtdXG4gIH07XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBmYjogRm9ybUJ1aWxkZXIsXG4gICAgcHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmXG4gICkgeyB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5pbml0aWFsaXplRm9ybSgpO1xuICAgIHRoaXMuc2V0dXBTZWxlY3RDb25maWdzKCk7XG4gICAgdGhpcy5zZXR1cFRhYmxlQ29sdW1ucygpO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzWydydW5zJ10gJiYgIWNoYW5nZXNbJ3J1bnMnXS5maXJzdENoYW5nZSkge1xuICAgICAgdGhpcy5zZXR1cFNlbGVjdENvbmZpZ3MoKTtcbiAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cbiAgICBcbiAgICBpZiAoY2hhbmdlc1snY29tcGFyaXNvbkRhdGEnXSAmJiB0aGlzLmNvbXBhcmlzb25EYXRhKSB7XG4gICAgICB0aGlzLmhhbmRsZUNvbXBhcmlzb25EYXRhKCk7XG4gICAgfVxuICAgIFxuICAgIGlmIChjaGFuZ2VzWydpc0xvYWRpbmdSdW5zJ10pIHtcbiAgICAgIHRoaXMudXBkYXRlU2VsZWN0Q29uZmlnc0xvYWRpbmcoKTtcbiAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaW5pdGlhbGl6ZUZvcm0oKTogdm9pZCB7XG4gICAgdGhpcy5mb3JtID0gdGhpcy5mYi5ncm91cCh7XG4gICAgICBydW5BOiBbbnVsbF0sXG4gICAgICBydW5COiBbbnVsbF1cbiAgICB9KTtcblxuICAgIHRoaXMuZm9ybS52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMudXBkYXRlU2VsZWN0ZWRSdW5zKCk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGFsbE9wdGlvbnNDYWNoZTogYW55W10gPSBbXTtcbiAgcHJpdmF0ZSBsYXN0UnVuczogVGVzdENhc2VSZXN1bHREYXRhW10gPSBbXTtcblxuICBwcml2YXRlIHNldHVwU2VsZWN0Q29uZmlncygpOiB2b2lkIHtcbiAgICBjb25zdCBydW5BSWQgPSB0aGlzLmZvcm0/LmdldCgncnVuQScpPy52YWx1ZTtcbiAgICBjb25zdCBydW5CSWQgPSB0aGlzLmZvcm0/LmdldCgncnVuQicpPy52YWx1ZTtcbiAgICBcbiAgICBpZiAodGhpcy5ydW5zICE9PSB0aGlzLmxhc3RSdW5zKSB7XG4gICAgICB0aGlzLmFsbE9wdGlvbnNDYWNoZSA9IHRoaXMucnVucy5tYXAocnVuID0+ICh7XG4gICAgICAgIGlkOiBydW4uaWQsXG4gICAgICAgIHZhbHVlOiBydW4uaWQsXG4gICAgICAgIGxhYmVsOiB0aGlzLmZvcm1hdFJ1bkxhYmVsKHJ1biksXG4gICAgICAgIG5hbWU6IHRoaXMuZm9ybWF0UnVuTGFiZWwocnVuKVxuICAgICAgfSkpO1xuICAgICAgdGhpcy5sYXN0UnVucyA9IHRoaXMucnVucztcbiAgICB9XG5cbiAgICBjb25zdCBydW5BT3B0aW9ucyA9IHRoaXMuYWxsT3B0aW9uc0NhY2hlLmZpbHRlcihvcHQgPT4gb3B0LmlkICE9PSBydW5CSWQpO1xuICAgIGNvbnN0IHJ1bkJPcHRpb25zID0gdGhpcy5hbGxPcHRpb25zQ2FjaGUuZmlsdGVyKG9wdCA9PiBvcHQuaWQgIT09IHJ1bkFJZCk7XG5cbiAgICB0aGlzLnJ1bkFTZWxlY3RDb25maWcgPSB7XG4gICAgICBrZXk6ICdydW5BJyxcbiAgICAgIGxhYmVsOiAnJyxcbiAgICAgIHBsYWNlaG9sZGVyOiAnU2VhcmNoIGFuZCBzZWxlY3QgcnVuJyxcbiAgICAgIG9wdGlvbnM6IHJ1bkFPcHRpb25zLFxuICAgICAgc2VhcmNoYWJsZTogdHJ1ZSxcbiAgICAgIHNlcnZlclNlYXJjaDogdHJ1ZSxcbiAgICAgIGhhc01vcmU6IHRoaXMuaGFzTW9yZVJ1bnMsXG4gICAgICBpc0xvYWRpbmc6IHRoaXMuaXNMb2FkaW5nUnVucyxcbiAgICAgIG9uU2VhcmNoOiAocXVlcnk6IHN0cmluZykgPT4gdGhpcy5oYW5kbGVTZWFyY2hSdW5zKHF1ZXJ5LCAncnVuQScpLFxuICAgICAgb25Mb2FkTW9yZTogKHF1ZXJ5Pzogc3RyaW5nKSA9PiB0aGlzLmhhbmRsZUxvYWRNb3JlUnVucyhxdWVyeSB8fCAnJylcbiAgICB9O1xuXG4gICAgdGhpcy5ydW5CU2VsZWN0Q29uZmlnID0ge1xuICAgICAga2V5OiAncnVuQicsXG4gICAgICBsYWJlbDogJycsXG4gICAgICBwbGFjZWhvbGRlcjogJ1NlYXJjaCBhbmQgc2VsZWN0IHJ1bicsXG4gICAgICBvcHRpb25zOiBydW5CT3B0aW9ucyxcbiAgICAgIHNlYXJjaGFibGU6IHRydWUsXG4gICAgICBzZXJ2ZXJTZWFyY2g6IHRydWUsXG4gICAgICBoYXNNb3JlOiB0aGlzLmhhc01vcmVSdW5zLFxuICAgICAgaXNMb2FkaW5nOiB0aGlzLmlzTG9hZGluZ1J1bnMsXG4gICAgICBvblNlYXJjaDogKHF1ZXJ5OiBzdHJpbmcpID0+IHRoaXMuaGFuZGxlU2VhcmNoUnVucyhxdWVyeSwgJ3J1bkInKSxcbiAgICAgIG9uTG9hZE1vcmU6IChxdWVyeT86IHN0cmluZykgPT4gdGhpcy5oYW5kbGVMb2FkTW9yZVJ1bnMocXVlcnkgfHwgJycpXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgcnVuTGFiZWxDYWNoZSA9IG5ldyBNYXA8bnVtYmVyLCBzdHJpbmc+KCk7XG5cbiAgcHJpdmF0ZSBmb3JtYXRSdW5MYWJlbChydW46IFRlc3RDYXNlUmVzdWx0RGF0YSk6IHN0cmluZyB7XG4gICAgaWYgKHRoaXMucnVuTGFiZWxDYWNoZS5oYXMocnVuLmlkKSkge1xuICAgICAgcmV0dXJuIHRoaXMucnVuTGFiZWxDYWNoZS5nZXQocnVuLmlkKSE7XG4gICAgfVxuXG4gICAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKHJ1bi5zdGFydFRpbWUpO1xuICAgIGNvbnN0IGZvcm1hdHRlZERhdGUgPSBkYXRlLnRvTG9jYWxlU3RyaW5nKCdlbi1VUycsIHtcbiAgICAgIG1vbnRoOiAnc2hvcnQnLFxuICAgICAgZGF5OiAnbnVtZXJpYycsXG4gICAgICBob3VyOiAnMi1kaWdpdCcsXG4gICAgICBtaW51dGU6ICcyLWRpZ2l0JyxcbiAgICAgIHNlY29uZDogJzItZGlnaXQnXG4gICAgfSk7XG4gICAgY29uc3QgbGFiZWwgPSBgUnVuICMke3J1bi5pZH0g4oCiICR7Zm9ybWF0dGVkRGF0ZX1gO1xuICAgIHRoaXMucnVuTGFiZWxDYWNoZS5zZXQocnVuLmlkLCBsYWJlbCk7XG4gICAgcmV0dXJuIGxhYmVsO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVTZWxlY3RDb25maWdzTG9hZGluZygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5ydW5BU2VsZWN0Q29uZmlnKSB7XG4gICAgICB0aGlzLnJ1bkFTZWxlY3RDb25maWcgPSB7XG4gICAgICAgIC4uLnRoaXMucnVuQVNlbGVjdENvbmZpZyxcbiAgICAgICAgaXNMb2FkaW5nOiB0aGlzLmlzTG9hZGluZ1J1bnMsXG4gICAgICAgIGhhc01vcmU6IHRoaXMuaGFzTW9yZVJ1bnNcbiAgICAgIH07XG4gICAgfVxuICAgIGlmICh0aGlzLnJ1bkJTZWxlY3RDb25maWcpIHtcbiAgICAgIHRoaXMucnVuQlNlbGVjdENvbmZpZyA9IHtcbiAgICAgICAgLi4udGhpcy5ydW5CU2VsZWN0Q29uZmlnLFxuICAgICAgICBpc0xvYWRpbmc6IHRoaXMuaXNMb2FkaW5nUnVucyxcbiAgICAgICAgaGFzTW9yZTogdGhpcy5oYXNNb3JlUnVuc1xuICAgICAgfTtcbiAgICB9XG4gIH1cblxuICBoYW5kbGVTZWFyY2hSdW5zKHF1ZXJ5OiBzdHJpbmcsIGtleTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5zZWFyY2hSdW5zLmVtaXQoeyBrZXksIHF1ZXJ5IH0pO1xuICB9XG5cbiAgaGFuZGxlTG9hZE1vcmVSdW5zKHF1ZXJ5OiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLmxvYWRNb3JlUnVucy5lbWl0KHF1ZXJ5KTtcbiAgfVxuXG4gIG9uU2VhcmNoQ2hhbmdlKGV2ZW50OiBTZWFyY2hSZXF1ZXN0KTogdm9pZCB7XG4gICAgY29uc29sZS5sb2coJ29uU2VhcmNoQ2hhbmdlJywgZXZlbnQpO1xuICAgIHRoaXMuc2VhcmNoUnVucy5lbWl0KGV2ZW50KTtcbiAgfVxuXG4gIG9uTG9hZE1vcmUoZXZlbnQ6IHsga2V5OiBzdHJpbmc7IHF1ZXJ5OiBzdHJpbmcgfSk6IHZvaWQge1xuICAgIHRoaXMubG9hZE1vcmVSdW5zLmVtaXQoZXZlbnQucXVlcnkpO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVTZWxlY3RlZFJ1bnMoKTogdm9pZCB7XG4gICAgY29uc3QgcnVuQUlkID0gdGhpcy5mb3JtLmdldCgncnVuQScpPy52YWx1ZTtcbiAgICBjb25zdCBydW5CSWQgPSB0aGlzLmZvcm0uZ2V0KCdydW5CJyk/LnZhbHVlO1xuXG4gICAgY29uc3QgcnVuQSA9IHRoaXMucnVucy5maW5kKHIgPT4gci5pZCA9PT0gcnVuQUlkKTtcbiAgICBjb25zdCBydW5CID0gdGhpcy5ydW5zLmZpbmQociA9PiByLmlkID09PSBydW5CSWQpO1xuXG4gICAgdGhpcy5zZWxlY3RlZFJ1bkEgPSBydW5BID8gdGhpcy5jb252ZXJ0VG9SdW5EYXRhKHJ1bkEpIDogdW5kZWZpbmVkO1xuICAgIHRoaXMuc2VsZWN0ZWRSdW5CID0gcnVuQiA/IHRoaXMuY29udmVydFRvUnVuRGF0YShydW5CKSA6IHVuZGVmaW5lZDtcblxuICAgIHRoaXMuc2V0dXBTZWxlY3RDb25maWdzKCk7XG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBwcml2YXRlIGNvbnZlcnRUb1J1bkRhdGEoZGF0YTogVGVzdENhc2VSZXN1bHREYXRhKTogUnVuRGF0YSB7XG4gICAgY29uc3QgZGV2aWNlID0gZGF0YS50ZXN0RGV2aWNlUmVzdWx0Py50ZXN0RGV2aWNlU2V0dGluZ3M/LmRldmljZU5hbWUgfHwgXG4gICAgICAgICAgICAgICAgICAgZGF0YS50ZXN0RGV2aWNlUmVzdWx0Py50ZXN0RGV2aWNlU2V0dGluZ3M/LnBsYXRmb3JtIHx8IFxuICAgICAgICAgICAgICAgICAgICdVbmtub3duIERldmljZSc7XG4gICAgY29uc3QgYnJvd3NlciA9IGRhdGEudGVzdERldmljZVJlc3VsdD8udGVzdERldmljZVNldHRpbmdzPy5icm93c2VyIHx8ICdVbmtub3duIEJyb3dzZXInO1xuICAgIGNvbnN0IHBsYXRmb3JtID0gZGF0YS50ZXN0RGV2aWNlUmVzdWx0Py50ZXN0RGV2aWNlU2V0dGluZ3M/LnBsYXRmb3JtIHx8ICdVbmtub3duIFBsYXRmb3JtJztcblxuICAgIHJldHVybiB7XG4gICAgICBpZDogZGF0YS5pZCxcbiAgICAgIGxhYmVsOiB0aGlzLmZvcm1hdFJ1bkxhYmVsKGRhdGEpLFxuICAgICAgcmVzdWx0OiBkYXRhLnJlc3VsdCxcbiAgICAgIHN0YXJ0VGltZTogZGF0YS5zdGFydFRpbWUsXG4gICAgICBkdXJhdGlvbjogZGF0YS5kdXJhdGlvbixcbiAgICAgIHRlc3REYXRhU2V0TmFtZTogZGF0YS50ZXN0RGF0YVNldE5hbWUsXG4gICAgICBkZXZpY2UsXG4gICAgICBicm93c2VyLFxuICAgICAgcGxhdGZvcm0sXG4gICAgICBlbnZpcm9ubWVudDogZGF0YS5lbnZpcm9ubWVudFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIHNldHVwVGFibGVDb2x1bW5zKCk6IHZvaWQge1xuICAgIHRoaXMudGFibGVDb2x1bW5zID0gW1xuICAgICAge1xuICAgICAgICBmaWVsZElkOiAnc3RlcCcsXG4gICAgICAgIGZpZWxkTmFtZTogJ1N0ZXAnLFxuICAgICAgICBmaWVsZFZhbHVlOiAnc3RlcFRpdGxlJyxcbiAgICAgICAgaXNTaG93OiB0cnVlLFxuICAgICAgICB3ZWlnaHQ6IDMsXG4gICAgICAgIHJlbmRlcjogKHJvdzogU3RlcENvbXBhcmlzb24pID0+IHtcbiAgICAgICAgICByZXR1cm4gYFxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNxYS1mbGV4IGNxYS1pdGVtcy1jZW50ZXIgY3FhLWdhcC0yXCI+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3FhLXRleHQteHMgY3FhLXRleHQtWyMwQjBCMEJdXCI+JHtyb3cuc3RlcFRpdGxlfTwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIGA7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGZpZWxkSWQ6ICdydW5BJyxcbiAgICAgICAgZmllbGROYW1lOiAnUnVuIEEnLFxuICAgICAgICBpc1Nob3c6IHRydWUsXG4gICAgICAgIHdlaWdodDogMS41LFxuICAgICAgICByZW5kZXI6IChyb3c6IFN0ZXBDb21wYXJpc29uKSA9PiB7XG4gICAgICAgICAgaWYgKHJvdy5ydW5BU3RhdHVzICE9PSAnUEFTU0VEJyAmJiByb3cucnVuQVN0YXR1cyAhPT0gJ0ZBSUxFRCcpIHtcbiAgICAgICAgICAgIHJldHVybiAnPHNwYW4gY2xhc3M9XCJjcWEtdGV4dC14cyBjcWEtdGV4dC1bIzlDQTNBRl1cIj7igJQ8L3NwYW4+JztcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIGBcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtZmxleC1jb2wgY3FhLWdhcC0xXCI+XG4gICAgICAgICAgICAgICR7dGhpcy5yZW5kZXJTdGF0dXNJY29uKHJvdy5ydW5BU3RhdHVzKX1cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjcWEtdGV4dC1bMTBweF0gY3FhLXRleHQtWyM2QjcyODBdXCI+JHt0aGlzLmZvcm1hdER1cmF0aW9uKHJvdy5ydW5BRHVyYXRpb24gfHwgMCl9PC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgYDtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgZmllbGRJZDogJ3J1bkInLFxuICAgICAgICBmaWVsZE5hbWU6ICdSdW4gQicsXG4gICAgICAgIGlzU2hvdzogdHJ1ZSxcbiAgICAgICAgd2VpZ2h0OiAxLjUsXG4gICAgICAgIHJlbmRlcjogKHJvdzogU3RlcENvbXBhcmlzb24pID0+IHtcbiAgICAgICAgICBpZiAocm93LnJ1bkJTdGF0dXMgIT09ICdQQVNTRUQnICYmIHJvdy5ydW5CU3RhdHVzICE9PSAnRkFJTEVEJykge1xuICAgICAgICAgICAgcmV0dXJuICc8c3BhbiBjbGFzcz1cImNxYS10ZXh0LXhzIGNxYS10ZXh0LVsjNjM2MzYzXVwiPiDigJQgPC9zcGFuPic7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBgXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3FhLWZsZXggY3FhLWZsZXgtY29sIGNxYS1nYXAtMC41XCI+XG4gICAgICAgICAgICAgICR7dGhpcy5yZW5kZXJTdGF0dXNJY29uKHJvdy5ydW5CU3RhdHVzKX1cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjcWEtdGV4dC1bMTBweF0gY3FhLXRleHQtWyM2MzYzNjNdXCI+JHt0aGlzLmZvcm1hdER1cmF0aW9uKHJvdy5ydW5CRHVyYXRpb24gfHwgMCl9PC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgYDtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgZmllbGRJZDogJ2NoYW5nZScsXG4gICAgICAgIGZpZWxkTmFtZTogJ0NoYW5nZScsXG4gICAgICAgIGZpZWxkVmFsdWU6ICdjaGFuZ2UnLFxuICAgICAgICBpc1Nob3c6IHRydWUsXG4gICAgICAgIHdlaWdodDogMS41LFxuICAgICAgICByZW5kZXI6IChyb3c6IFN0ZXBDb21wYXJpc29uKSA9PiB7XG4gICAgICAgICAgY29uc3QgY2hhbmdlTGFiZWxzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAgICAgICAgICAgJ1VOQ0hBTkdFRCc6ICdVbmNoYW5nZWQnLFxuICAgICAgICAgICAgJ1NUQVRVU19DSEFOR0VEJzogJ1N0YXR1cyBDaGFuZ2VkJyxcbiAgICAgICAgICAgICdUSU1JTkdfQ0hBTkdFRCc6ICdUaW1pbmcgQ2hhbmdlZCcsXG4gICAgICAgICAgICAnQURERUQnOiAnQWRkZWQnLFxuICAgICAgICAgICAgJ1JFTU9WRUQnOiAnUmVtb3ZlZCdcbiAgICAgICAgICB9O1xuICAgICAgICAgIGNvbnN0IGNoYW5nZUNvbG9yczogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgICAgICAgICAgICdVTkNIQU5HRUQnOiAnIzZCNzI4MCcsXG4gICAgICAgICAgICAnU1RBVFVTX0NIQU5HRUQnOiAnI0Y1OUUwQicsXG4gICAgICAgICAgICAnVElNSU5HX0NIQU5HRUQnOiAnIzNCODJGNicsXG4gICAgICAgICAgICAnQURERUQnOiAnIzEwQjk4MScsXG4gICAgICAgICAgICAnUkVNT1ZFRCc6ICcjRUY0NDQ0J1xuICAgICAgICAgIH07XG4gICAgICAgICAgY29uc3QgY2hhbmdlQmdDb2xvcnM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gICAgICAgICAgICAnVU5DSEFOR0VEJzogJyNGM0Y0RjYnLFxuICAgICAgICAgICAgJ1NUQVRVU19DSEFOR0VEJzogJyNGRUYzQzcnLFxuICAgICAgICAgICAgJ1RJTUlOR19DSEFOR0VEJzogJyNEQkVBRkUnLFxuICAgICAgICAgICAgJ0FEREVEJzogJyNEMUZBRTUnLFxuICAgICAgICAgICAgJ1JFTU9WRUQnOiAnI0ZFRTJFMidcbiAgICAgICAgICB9O1xuXG4gICAgICAgICAgY29uc3QgbGFiZWwgPSBjaGFuZ2VMYWJlbHNbcm93LmNoYW5nZV0gfHwgcm93LmNoYW5nZTtcbiAgICAgICAgICBjb25zdCBjb2xvciA9IGNoYW5nZUNvbG9yc1tyb3cuY2hhbmdlXSB8fCAnIzZCNzI4MCc7XG4gICAgICAgICAgY29uc3QgYmdDb2xvciA9IGNoYW5nZUJnQ29sb3JzW3Jvdy5jaGFuZ2VdIHx8ICcjRjNGNEY2JztcblxuICAgICAgICAgIHJldHVybiBgXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNxYS1pbmxpbmUtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1qdXN0aWZ5LWNlbnRlciBjcWEtcHgtMiBjcWEtcHktMC41IGNxYS1yb3VuZGVkLWZ1bGwgY3FhLXRleHQtWzEwcHhdIGNxYS1mb250LXNlbWlib2xkIGNxYS13LW1heFwiIFxuICAgICAgICAgICAgICAgICAgc3R5bGU9XCJiYWNrZ3JvdW5kLWNvbG9yOiAke2JnQ29sb3J9OyBjb2xvcjogJHtjb2xvcn07XCI+XG4gICAgICAgICAgICAgICR7bGFiZWx9XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgYDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIF07XG4gIH1cblxuICBwcml2YXRlIHJlbmRlclN0YXR1c0ljb24oc3RhdHVzOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGNvbnN0IHVwcGVyU3RhdHVzID0gc3RhdHVzLnRvVXBwZXJDYXNlKCk7XG4gICAgaWYgKHVwcGVyU3RhdHVzID09PSAnUEFTU0VEJykge1xuICAgICAgcmV0dXJuIGBcbiAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiPlxuICAgICAgICA8cGF0aCBkPVwiTTcuOTk5OTggMTQuNjY2M0MxMS42ODE5IDE0LjY2NjMgMTQuNjY2NiAxMS42ODE2IDE0LjY2NjYgNy45OTk2N0MxNC42NjY2IDQuMzE3NzggMTEuNjgxOSAxLjMzMzAxIDcuOTk5OTggMS4zMzMwMUM0LjMxODA4IDEuMzMzMDEgMS4zMzMzMSA0LjMxNzc4IDEuMzMzMzEgNy45OTk2N0MxLjMzMzMxIDExLjY4MTYgNC4zMTgwOCAxNC42NjYzIDcuOTk5OTggMTQuNjY2M1pcIiBzdHJva2U9XCIjMDBDOTUwXCIgc3Ryb2tlLXdpZHRoPVwiMS4zMzMzM1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cbiAgICAgICAgPHBhdGggZD1cIk02IDguMDAwMzNMNy4zMzMzMyA5LjMzMzY2TDEwIDYuNjY2OTlcIiBzdHJva2U9XCIjMDBDOTUwXCIgc3Ryb2tlLXdpZHRoPVwiMS4zMzMzM1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cbiAgICAgIDwvc3ZnPmA7XG4gICAgfSBlbHNlIGlmICh1cHBlclN0YXR1cyA9PT0gJ0ZBSUxFRCcpIHtcbiAgICAgIHJldHVybiBgXG4gICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIiB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgPHBhdGggZD1cIk04LjAwMDA0IDE0LjY2NzNDMTEuNjgxOSAxNC42NjczIDE0LjY2NjcgMTEuNjgyNSAxNC42NjY3IDguMDAwNjVDMTQuNjY2NyA0LjMxODc1IDExLjY4MTkgMS4zMzM5OCA4LjAwMDA0IDEuMzMzOThDNC4zMTgxNCAxLjMzMzk4IDEuMzMzMzcgNC4zMTg3NSAxLjMzMzM3IDguMDAwNjVDMS4zMzMzNyAxMS42ODI1IDQuMzE4MTQgMTQuNjY3MyA4LjAwMDA0IDE0LjY2NzNaXCIgc3Ryb2tlPVwiI0ZCMkMzNlwiIHN0cm9rZS13aWR0aD1cIjEuMzMzMzNcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XG4gICAgICAgIDxwYXRoIGQ9XCJNMTAgNkw2IDEwXCIgc3Ryb2tlPVwiI0ZCMkMzNlwiIHN0cm9rZS13aWR0aD1cIjEuMzMzMzNcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XG4gICAgICAgIDxwYXRoIGQ9XCJNNiA2TDEwIDEwXCIgc3Ryb2tlPVwiI0ZCMkMzNlwiIHN0cm9rZS13aWR0aD1cIjEuMzMzMzNcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XG4gICAgICA8L3N2Zz5gO1xuICAgIH0gZWxzZSBpZiAodXBwZXJTdGF0dXMgPT09ICdOT1RfRVhFQ1VURUQnKSB7XG4gICAgICByZXR1cm4gYFxuICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCIgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCI+XG4gICAgICAgIDxwYXRoIGQ9XCJNOC4wMDAwNCAxNC42NjczQzExLjY4MTkgMTQuNjY3MyAxNC42NjY3IDExLjY4MjUgMTQuNjY2NyA4LjAwMDY1QzE0LjY2NjcgNC4zMTg3NSAxMS42ODE5IDEuMzMzOTggOC4wMDAwNCAxLjMzMzk4QzQuMzE4MTQgMS4zMzM5OCAxLjMzMzM3IDQuMzE4NzUgMS4zMzMzNyA4LjAwMDY1QzEuMzMzMzcgMTEuNjgyNSA0LjMxODE0IDE0LjY2NzMgOC4wMDAwNCAxNC42NjczWlwiIHN0cm9rZT1cIiM5Q0EzQUZcIiBzdHJva2Utd2lkdGg9XCIxLjMzMzMzXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxuICAgICAgICA8cGF0aCBkPVwiTTYgOEgxMFwiIHN0cm9rZT1cIiM5Q0EzQUZcIiBzdHJva2Utd2lkdGg9XCIxLjMzMzMzXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxuICAgICAgPC9zdmc+YDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGA8c3BhbiBjbGFzcz1cImNxYS10ZXh0LXhzIGNxYS10ZXh0LVsjNjM2MzYzXVwiPiDigJQgPC9zcGFuPmA7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBmb3JtYXREdXJhdGlvbihtaWxsaXNlY29uZHM6IG51bWJlcik6IHN0cmluZyB7XG4gICAgY29uc3Qgc2Vjb25kcyA9IG1pbGxpc2Vjb25kcyAvIDEwMDA7XG4gICAgaWYgKHNlY29uZHMgPCA2MCkge1xuICAgICAgcmV0dXJuIGAke3NlY29uZHMudG9GaXhlZCgxKX1zYDtcbiAgICB9XG4gICAgY29uc3QgbWludXRlcyA9IE1hdGguZmxvb3Ioc2Vjb25kcyAvIDYwKTtcbiAgICBjb25zdCByZW1haW5pbmdTZWNvbmRzID0gTWF0aC5mbG9vcihzZWNvbmRzICUgNjApO1xuICAgIHJldHVybiBgJHttaW51dGVzfW0gJHtyZW1haW5pbmdTZWNvbmRzfXNgO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVDb21wYXJpc29uRGF0YSgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuY29tcGFyaXNvbkRhdGEpIHJldHVybjtcblxuICAgIHRoaXMuY29tcGFyaXNvblN1bW1hcnkgPSB0aGlzLmNvbXBhcmlzb25EYXRhLnN1bW1hcnk7XG4gICAgdGhpcy5zdGVwQ29tcGFyaXNvbnMgPSB0aGlzLmNvbXBhcmlzb25EYXRhLnN0ZXBzQ29tcGFyaXNvbjtcbiAgICB0aGlzLnBhZ2VJbmRleCA9IDA7XG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBvblBhZ2VDaGFuZ2UoZXZlbnQ6IHsgcGFnZUluZGV4OiBudW1iZXI7IHBhZ2VTaXplOiBudW1iZXIgfSk6IHZvaWQge1xuICAgIHRoaXMucGFnZUluZGV4ID0gZXZlbnQucGFnZUluZGV4O1xuICAgIHRoaXMucGFnZVNpemUgPSBldmVudC5wYWdlU2l6ZTtcbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuICBcbiAgZ2V0IGlzRW1wdHlTdGF0ZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gIXRoaXMuc2hvd0NvbXBhcmlzb24gfHwgIXRoaXMuc3RlcENvbXBhcmlzb25zIHx8IHRoaXMuc3RlcENvbXBhcmlzb25zLmxlbmd0aCA9PT0gMDtcbiAgfVxuXG4gIG9uQ29tcGFyZUNsaWNrKCk6IHZvaWQge1xuICAgIGNvbnN0IHJ1bkFJZCA9IHRoaXMuZm9ybS5nZXQoJ3J1bkEnKT8udmFsdWU7XG4gICAgY29uc3QgcnVuQklkID0gdGhpcy5mb3JtLmdldCgncnVuQicpPy52YWx1ZTtcblxuICAgIGlmIChydW5BSWQgJiYgcnVuQklkICYmICF0aGlzLmlzQ29tcGFyaW5nUnVucykge1xuICAgICAgdGhpcy5jb21wYXJlUnVucy5lbWl0KHtcbiAgICAgICAgcnVuQUlkLFxuICAgICAgICBydW5CSWRcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIGdldCBjYW5Db21wYXJlKCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHJ1bkFJZCA9IHRoaXMuZm9ybS5nZXQoJ3J1bkEnKT8udmFsdWU7XG4gICAgY29uc3QgcnVuQklkID0gdGhpcy5mb3JtLmdldCgncnVuQicpPy52YWx1ZTtcbiAgICByZXR1cm4gISEocnVuQUlkICYmIHJ1bkJJZCAmJiAhdGhpcy5pc0NvbXBhcmluZ1J1bnMpO1xuICB9XG5cbiAgZ2V0IHJ1bkFTdGF0dXNDb2xvcigpOiBzdHJpbmcge1xuICAgIGlmICghdGhpcy5zZWxlY3RlZFJ1bkEpIHJldHVybiAnIzZCNzI4MCc7XG4gICAgY29uc3QgY29sb3JzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAgICAgJ1NVQ0NFU1MnOiAnIzBCOUQ2OCcsXG4gICAgICAnRkFJTFVSRSc6ICcjRkIyQzM2JyxcbiAgICAgICdBQk9SVEVEJzogJyNGNTlFMEInLFxuICAgICAgJ0lOX1BST0dSRVNTJzogJyMzQjgyRjYnXG4gICAgfTtcbiAgICByZXR1cm4gY29sb3JzW3RoaXMuc2VsZWN0ZWRSdW5BLnJlc3VsdF0gfHwgJyM2QjcyODAnO1xuICB9XG5cbiAgZ2V0IHJ1bkJTdGF0dXNDb2xvcigpOiBzdHJpbmcge1xuICAgIGlmICghdGhpcy5zZWxlY3RlZFJ1bkIpIHJldHVybiAnIzZCNzI4MCc7XG4gICAgY29uc3QgY29sb3JzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAgICAgJ1NVQ0NFU1MnOiAnIzBCOUQ2OCcsXG4gICAgICAnRkFJTFVSRSc6ICcjRkIyQzM2JyxcbiAgICAgICdBQk9SVEVEJzogJyNGNTlFMEInLFxuICAgICAgJ0lOX1BST0dSRVNTJzogJyMzQjgyRjYnXG4gICAgfTtcbiAgICByZXR1cm4gY29sb3JzW3RoaXMuc2VsZWN0ZWRSdW5CLnJlc3VsdF0gfHwgJyM2QjcyODAnO1xuICB9XG5cbiAgZ2V0IHJ1bkFTdGF0dXNCb3JkZXJDb2xvcigpOiBzdHJpbmcge1xuICAgIGlmICghdGhpcy5zZWxlY3RlZFJ1bkEpIHJldHVybiAnI0YzRjRGNic7XG4gICAgY29uc3QgY29sb3JzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAgICAgJ1NVQ0NFU1MnOiAnI0NGRjJFNScsXG4gICAgICAnRkFJTFVSRSc6ICcjRkNEOUQ5JyxcbiAgICAgICdBQk9SVEVEJzogJyNGRUYzQzcnLFxuICAgICAgJ0lOX1BST0dSRVNTJzogJyNEQkVBRkUnXG4gICAgfTtcbiAgICByZXR1cm4gY29sb3JzW3RoaXMuc2VsZWN0ZWRSdW5BLnJlc3VsdF0gfHwgJyNGM0Y0RjYnO1xuICB9XG5cbiAgZ2V0IHJ1bkJTdGF0dXNCb3JkZXJDb2xvcigpOiBzdHJpbmcge1xuICAgIGlmICghdGhpcy5zZWxlY3RlZFJ1bkIpIHJldHVybiAnI0YzRjRGNic7XG4gICAgY29uc3QgY29sb3JzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAgICAgJ1NVQ0NFU1MnOiAnI0NGRjJFNScsXG4gICAgICAnRkFJTFVSRSc6ICcjRkNEOUQ5JyxcbiAgICAgICdBQk9SVEVEJzogJyNGRUYzQzcnLFxuICAgICAgJ0lOX1BST0dSRVNTJzogJyNEQkVBRkUnXG4gICAgfTtcbiAgICByZXR1cm4gY29sb3JzW3RoaXMuc2VsZWN0ZWRSdW5CLnJlc3VsdF0gfHwgJyNGM0Y0RjYnO1xuICB9XG5cbiAgZ2V0IHJ1bkFTdGF0dXNCZ0NvbG9yKCk6IHN0cmluZyB7XG4gICAgaWYgKCF0aGlzLnNlbGVjdGVkUnVuQSkgcmV0dXJuICcjRjNGNEY2JztcbiAgICBjb25zdCBjb2xvcnM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gICAgICAnU1VDQ0VTUyc6ICcjMERCRDdEMUEnLFxuICAgICAgJ0ZBSUxVUkUnOiAnI0VFM0YzRjFBJyxcbiAgICAgICdBQk9SVEVEJzogJyNGRUYzQzcnLFxuICAgICAgJ0lOX1BST0dSRVNTJzogJyNEQkVBRkUnXG4gICAgfTtcbiAgICByZXR1cm4gY29sb3JzW3RoaXMuc2VsZWN0ZWRSdW5BLnJlc3VsdF0gfHwgJyNGM0Y0RjYnO1xuICB9XG5cbiAgZ2V0IHJ1bkJTdGF0dXNCZ0NvbG9yKCk6IHN0cmluZyB7XG4gICAgaWYgKCF0aGlzLnNlbGVjdGVkUnVuQikgcmV0dXJuICcjRjNGNEY2JztcbiAgICBjb25zdCBjb2xvcnM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gICAgICAnU1VDQ0VTUyc6ICcjMERCRDdEMUEnLFxuICAgICAgJ0ZBSUxVUkUnOiAnI0VFM0YzRjFBJyxcbiAgICAgICdBQk9SVEVEJzogJyNGRUYzQzcnLFxuICAgICAgJ0lOX1BST0dSRVNTJzogJyNEQkVBRkUnXG4gICAgfTtcbiAgICByZXR1cm4gY29sb3JzW3RoaXMuc2VsZWN0ZWRSdW5CLnJlc3VsdF0gfHwgJyNGM0Y0RjYnO1xuICB9XG5cbiAgZm9ybWF0VGltZSh0aW1lc3RhbXA6IG51bWJlcik6IHN0cmluZyB7XG4gICAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKHRpbWVzdGFtcCk7XG4gICAgcmV0dXJuIGRhdGUudG9Mb2NhbGVTdHJpbmcoJ2VuLVVTJywge1xuICAgICAgbW9udGg6ICdzaG9ydCcsXG4gICAgICBkYXk6ICdudW1lcmljJyxcbiAgICAgIGhvdXI6ICcyLWRpZ2l0JyxcbiAgICAgIG1pbnV0ZTogJzItZGlnaXQnXG4gICAgfSk7XG4gIH1cblxuICBmb3JtYXREdXJhdGlvblN0cmluZyhtaWxsaXNlY29uZHM6IG51bWJlcik6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuZm9ybWF0RHVyYXRpb24obWlsbGlzZWNvbmRzKTtcbiAgfVxuXG4gIGdldCBzaG93Q29tcGFyaXNvbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISEodGhpcy5jb21wYXJpc29uRGF0YSAmJiB0aGlzLmNvbXBhcmlzb25TdW1tYXJ5KTtcbiAgfVxuXG4gIGdldCBydW5BU3RhdHVzTGFiZWwoKTogc3RyaW5nIHtcbiAgICBpZiAoIXRoaXMuc2VsZWN0ZWRSdW5BKSByZXR1cm4gJyc7XG4gICAgY29uc3QgbGFiZWxzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAgICAgJ1NVQ0NFU1MnOiAnUGFzc2VkJyxcbiAgICAgICdGQUlMVVJFJzogJ0ZhaWxlZCcsXG4gICAgICAnQUJPUlRFRCc6ICdBYm9ydGVkJyxcbiAgICAgICdJTl9QUk9HUkVTUyc6ICdJbiBQcm9ncmVzcydcbiAgICB9O1xuICAgIHJldHVybiBsYWJlbHNbdGhpcy5zZWxlY3RlZFJ1bkEucmVzdWx0XSB8fCB0aGlzLnNlbGVjdGVkUnVuQS5yZXN1bHQ7XG4gIH1cblxuICBnZXQgcnVuQlN0YXR1c0xhYmVsKCk6IHN0cmluZyB7XG4gICAgaWYgKCF0aGlzLnNlbGVjdGVkUnVuQikgcmV0dXJuICcnO1xuICAgIGNvbnN0IGxhYmVsczogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgICAgICdTVUNDRVNTJzogJ1Bhc3NlZCcsXG4gICAgICAnRkFJTFVSRSc6ICdGYWlsZWQnLFxuICAgICAgJ0FCT1JURUQnOiAnQWJvcnRlZCcsXG4gICAgICAnSU5fUFJPR1JFU1MnOiAnSW4gUHJvZ3Jlc3MnXG4gICAgfTtcbiAgICByZXR1cm4gbGFiZWxzW3RoaXMuc2VsZWN0ZWRSdW5CLnJlc3VsdF0gfHwgdGhpcy5zZWxlY3RlZFJ1bkIucmVzdWx0O1xuICB9XG59XG5cbiIsIjxkaXYgY2xhc3M9XCJjcWEtdWktcm9vdFwiIHN0eWxlPVwiZGlzcGxheTogYmxvY2s7IHdpZHRoOiAxMDAlO1wiPlxuICA8ZGl2IGNsYXNzPVwiY3FhLWZsZXggY3FhLWZsZXgtY29sXCI+XG4gICAgPGRpdiBjbGFzcz1cImNxYS1mbGV4IGNxYS1mbGV4LWNvbCBjcWEtZ2FwLTMgc206Y3FhLWdhcC00IGNxYS1weS0zIHNtOmNxYS1weS00IGNxYS1weC00IHNtOmNxYS1weC02XCIgc3R5bGU9XCJib3JkZXItYm90dG9tOiAxcHggc29saWQgI0U0RTRFNFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY3FhLWdyaWQgY3FhLWdyaWQtY29scy0xIG1kOmNxYS1ncmlkLWNvbHMtMiBjcWEtZ2FwLTQgbWQ6Y3FhLWdhcC0xNiBjcWEtcmVsYXRpdmVcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtZmxleC1jb2wgY3FhLWdhcC0xLjVcIj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjcWEtdGV4dC1bMTJweF0gY3FhLWZvbnQtc2VtaWJvbGQgY3FhLXRleHQtWyM2MzYzNjNdXCI+UnVuIEEgKEJhc2UpPC9zcGFuPlxuICAgICAgICAgICAgICA8Y3FhLWR5bmFtaWMtc2VsZWN0IFxuICAgICAgICAgICAgICAgIFtmb3JtXT1cImZvcm1cIiBcbiAgICAgICAgICAgICAgICBbY29uZmlnXT1cInJ1bkFTZWxlY3RDb25maWdcIlxuICAgICAgICAgICAgICAgIChzZWFyY2hDaGFuZ2UpPVwib25TZWFyY2hDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgKGxvYWRNb3JlKT1cIm9uTG9hZE1vcmUoJGV2ZW50KVwiPlxuICAgICAgICAgICAgICA8L2NxYS1keW5hbWljLXNlbGVjdD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3FhLWhpZGRlbiBtZDpjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1qdXN0aWZ5LWNlbnRlclwiIHN0eWxlPVwicG9zaXRpb246IGFic29sdXRlOyBsZWZ0OiA1MCU7IHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTsgdG9wOiAzMHB4O1wiPlxuICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiBmaWxsPVwibm9uZVwiPlxuICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTQuMTY2NjkgMTBIMTUuODMzNFwiIHN0cm9rZT1cIiM2MzYzNjNcIiBzdHJva2Utd2lkdGg9XCIxLjY2NjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxuICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTEwIDQuMTY2OTlMMTUuODMzMyAxMC4wMDAzTDEwIDE1LjgzMzdcIiBzdHJva2U9XCIjNjM2MzYzXCIgc3Ryb2tlLXdpZHRoPVwiMS42NjY2N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cbiAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgIFxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNxYS1mbGV4IGNxYS1mbGV4LWNvbCBjcWEtZ2FwLTEuNVwiPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNxYS10ZXh0LVsxMnB4XSBjcWEtZm9udC1zZW1pYm9sZCBjcWEtdGV4dC1bIzYzNjM2M11cIj5SdW4gQiAoQ29tcGFyZSk8L3NwYW4+XG4gICAgICAgICAgICAgIDxjcWEtZHluYW1pYy1zZWxlY3QgXG4gICAgICAgICAgICAgICAgW2Zvcm1dPVwiZm9ybVwiIFxuICAgICAgICAgICAgICAgIFtjb25maWddPVwicnVuQlNlbGVjdENvbmZpZ1wiXG4gICAgICAgICAgICAgICAgKHNlYXJjaENoYW5nZSk9XCJvblNlYXJjaENoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAobG9hZE1vcmUpPVwib25Mb2FkTW9yZSgkZXZlbnQpXCI+XG4gICAgICAgICAgICAgIDwvY3FhLWR5bmFtaWMtc2VsZWN0PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICBcbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2VsZWN0ZWRSdW5BIHx8IHNlbGVjdGVkUnVuQlwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNxYS1ncmlkIGNxYS1ncmlkLWNvbHMtMSBtZDpjcWEtZ3JpZC1jb2xzLTIgY3FhLWdhcC00XCI+XG4gICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJzZWxlY3RlZFJ1bkFcIiBcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY3FhLWJnLXdoaXRlIGNxYS1yb3VuZGVkLWxnIGNxYS1wLTMgY3FhLWJvcmRlciBjcWEtYm9yZGVyLXNvbGlkXCJcbiAgICAgICAgICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kLWNvbG9yXT1cInJ1bkFTdGF0dXNCZ0NvbG9yXCJcbiAgICAgICAgICAgICAgICAgIFtzdHlsZS5ib3JkZXItY29sb3JdPVwicnVuQVN0YXR1c0JvcmRlckNvbG9yXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNxYS1mbGV4IGNxYS1pdGVtcy1zdGFydCBjcWEtanVzdGlmeS1iZXR3ZWVuIGNxYS1tYi0yXCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3FhLWZsZXggY3FhLWZsZXgtY29sIGNxYS1nYXAtMVwiPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNxYS10ZXh0LVsxMnB4XSBjcWEtZm9udC1zZW1pYm9sZCBjcWEtdGV4dC1bIzBCMEIwQl1cIj5SdW4gI3t7IHNlbGVjdGVkUnVuQS5pZCB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjcWEtaW5saW5lLWZsZXggY3FhLWl0ZW1zLWNlbnRlciBjcWEtanVzdGlmeS1jZW50ZXIgY3FhLXB4LTIgY3FhLXB5LTAuNSBjcWEtcm91bmRlZC1mdWxsIGNxYS10ZXh0LVsxMHB4XSBjcWEtZm9udC1tZWRpdW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmQtY29sb3JdPVwicnVuQVN0YXR1c0NvbG9yXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS5jb2xvcl09XCInI0ZGRkZGRidcIj5cbiAgICAgICAgICAgICAgICAgICAge3sgcnVuQVN0YXR1c0xhYmVsIH19XG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNxYS1ncmlkIGNxYS1ncmlkLWNvbHMtMiBjcWEtZ2FwLTNcIj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1nYXAtMVwiPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNxYS10ZXh0LXhzIGNxYS10ZXh0LVsjNjM2MzYzXVwiPlRpbWU6IDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjcWEtdGV4dC14cyBjcWEtdGV4dC1bIzBCMEIwQl0gY3FhLWZvbnQtbWVkaXVtXCI+e3sgZm9ybWF0VGltZShzZWxlY3RlZFJ1bkEuc3RhcnRUaW1lKSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNxYS1mbGV4IGNxYS1pdGVtcy1jZW50ZXIgY3FhLWdhcC0xXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3FhLXRleHQteHMgY3FhLXRleHQtWyM2MzYzNjNdXCI+RHVyYXRpb246IDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjcWEtdGV4dC14cyBjcWEtdGV4dC1bIzBCMEIwQl0gY3FhLWZvbnQtbWVkaXVtXCI+e3sgZm9ybWF0RHVyYXRpb25TdHJpbmcoc2VsZWN0ZWRSdW5BLmR1cmF0aW9uKSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNxYS1mbGV4IGNxYS1pdGVtcy1jZW50ZXIgY3FhLWdhcC0xXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3FhLXRleHQteHMgY3FhLXRleHQtWyM2MzYzNjNdXCI+RW52OiA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3FhLXRleHQteHMgY3FhLXRleHQtWyMwQjBCMEJdIGNxYS1mb250LW1lZGl1bVwiPnt7IHNlbGVjdGVkUnVuQS5lbnZpcm9ubWVudCB8fCAn4oCUJyB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNxYS1mbGV4IGNxYS1pdGVtcy1jZW50ZXIgY3FhLWdhcC0xXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3FhLXRleHQteHMgY3FhLXRleHQtWyM2MzYzNjNdXCI+RGV2aWNlOiA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3FhLXRleHQteHMgY3FhLXRleHQtWyMwQjBCMEJdIGNxYS1mb250LW1lZGl1bVwiPnt7IHNlbGVjdGVkUnVuQS5kZXZpY2UgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIFxuICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwic2VsZWN0ZWRSdW5CXCIgXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImNxYS1iZy13aGl0ZSBjcWEtcm91bmRlZC1sZyBjcWEtcC0zIGNxYS1ib3JkZXIgY3FhLWJvcmRlci1zb2xpZFwiXG4gICAgICAgICAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZC1jb2xvcl09XCJydW5CU3RhdHVzQmdDb2xvclwiXG4gICAgICAgICAgICAgICAgICBbc3R5bGUuYm9yZGVyLWNvbG9yXT1cInJ1bkJTdGF0dXNCb3JkZXJDb2xvclwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtaXRlbXMtc3RhcnQgY3FhLWp1c3RpZnktYmV0d2VlbiBjcWEtbWItMlwiPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNxYS1mbGV4IGNxYS1mbGV4LWNvbCBjcWEtZ2FwLTFcIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjcWEtdGV4dC1bMTJweF0gY3FhLWZvbnQtc2VtaWJvbGQgY3FhLXRleHQtWyMwQjBCMEJdXCI+UnVuICN7eyBzZWxlY3RlZFJ1bkIuaWQgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3FhLWlubGluZS1mbGV4IGNxYS1pdGVtcy1jZW50ZXIgY3FhLWp1c3RpZnktY2VudGVyIGNxYS1weC0yIGNxYS1weS0wLjUgY3FhLXJvdW5kZWQtZnVsbCBjcWEtdGV4dC1bMTBweF0gY3FhLWZvbnQtbWVkaXVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kLWNvbG9yXT1cInJ1bkJTdGF0dXNDb2xvclwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUuY29sb3JdPVwiJyNGRkZGRkYnXCI+XG4gICAgICAgICAgICAgICAgICAgIHt7IHJ1bkJTdGF0dXNMYWJlbCB9fVxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjcWEtZ3JpZCBjcWEtZ3JpZC1jb2xzLTIgY3FhLWdhcC0zXCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3FhLWZsZXggY3FhLWl0ZW1zLWNlbnRlciBjcWEtZ2FwLTFcIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjcWEtdGV4dC14cyBjcWEtdGV4dC1bIzYzNjM2M11cIj5UaW1lOiA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3FhLXRleHQteHMgY3FhLXRleHQtWyMwQjBCMEJdIGNxYS1mb250LW1lZGl1bVwiPnt7IGZvcm1hdFRpbWUoc2VsZWN0ZWRSdW5CLnN0YXJ0VGltZSkgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1nYXAtMVwiPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNxYS10ZXh0LXhzIGNxYS10ZXh0LVsjNjM2MzYzXVwiPkR1cmF0aW9uOiA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3FhLXRleHQteHMgY3FhLXRleHQtWyMwQjBCMEJdIGNxYS1mb250LW1lZGl1bVwiPnt7IGZvcm1hdER1cmF0aW9uU3RyaW5nKHNlbGVjdGVkUnVuQi5kdXJhdGlvbikgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1nYXAtMVwiPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNxYS10ZXh0LXhzIGNxYS10ZXh0LVsjNjM2MzYzXVwiPkVudjogPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNxYS10ZXh0LXhzIGNxYS10ZXh0LVsjMEIwQjBCXSBjcWEtZm9udC1tZWRpdW1cIj57eyBzZWxlY3RlZFJ1bkIuZW52aXJvbm1lbnQgfHwgJ+KAlCcgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1nYXAtMVwiPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNxYS10ZXh0LXhzIGNxYS10ZXh0LVsjNjM2MzYzXVwiPkRldmljZTogPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNxYS10ZXh0LXhzIGNxYS10ZXh0LVsjMEIwQjBCXSBjcWEtZm9udC1tZWRpdW1cIj57eyBzZWxlY3RlZFJ1bkIuZGV2aWNlIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3FhLXctZnVsbCBjcWEtZmxleCBjcWEtanVzdGlmeS1jZW50ZXJcIj5cbiAgICAgICAgICAgIDxjcWEtYnV0dG9uIFxuICAgICAgICAgICAgICB2YXJpYW50PVwiZmlsbGVkXCIgXG4gICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhY2FuQ29tcGFyZVwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJvbkNvbXBhcmVDbGljaygpXCI+XG4gICAgICAgICAgICAgIHt7IGlzQ29tcGFyaW5nUnVucyA/ICdDb21wYXJpbmcuLi4nIDogJ0NvbXBhcmUgUnVucycgfX1cbiAgICAgICAgICAgIDwvY3FhLWJ1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgKm5nSWY9XCJzaG93Q29tcGFyaXNvbiAmJiBjb21wYXJpc29uU3VtbWFyeSAmJiBzdGVwQ29tcGFyaXNvbnMgJiYgc3RlcENvbXBhcmlzb25zLmxlbmd0aCA+IDBcIiBcbiAgICAgICAgIGNsYXNzPVwiY3FhLWJnLXdoaXRlIGNxYS1wdC0zIGNxYS1wYi0wIHNtOmNxYS1wYi0xIHNtOmNxYS1wdC00IGNxYS1weC0zIHNtOmNxYS1weC02IGNxYS1mbGV4IGNxYS1pdGVtcy1jZW50ZXIgY3FhLWdhcC0zIHNtOmNxYS1nYXAtNFwiPlxuICAgICAgICAgPHAgY2xhc3M9XCJjcWEtdGV4dC1bMTJweF0gY3FhLXRleHQtWyM2MzYzNjNdXCI+U3VtbWFyeTo8L3A+XG4gICAgICA8ZGl2IGNsYXNzPVwiY3FhLWZsZXggY3FhLWZsZXgtd3JhcCBjcWEtaXRlbXMtY2VudGVyIGNxYS1nYXAtM1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY3FhLWZsZXggY3FhLWl0ZW1zLWNlbnRlciBjcWEtZ2FwLTEuNVwiPlxuICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImNxYS13LVsxNHB4XSBjcWEtaC1bMTRweF0gY3FhLXRleHQtc21cIj5cbiAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTRcIiBoZWlnaHQ9XCIxNFwiIHZpZXdCb3g9XCIwIDAgMTQgMTRcIiBmaWxsPVwibm9uZVwiPlxuICAgICAgICAgICAgICA8cGF0aCBkPVwiTTIuOTE2NjkgNS4yNUgxMS4wODM0XCIgc3Ryb2tlPVwiIzYzNjM2M1wiIHN0cm9rZS13aWR0aD1cIjEuMTY2NjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XG4gICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMi45MTY2OSA4Ljc1SDExLjA4MzRcIiBzdHJva2U9XCIjNjM2MzYzXCIgc3Ryb2tlLXdpZHRoPVwiMS4xNjY2N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cbiAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgPC9tYXQtaWNvbj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImNxYS10ZXh0LXNtIGNxYS1mb250LXNlbWlib2xkIGxlYWRpbmctbm9ybWFsIGNxYS10ZXh0LVsjMEIwQjBCXVwiPnt7IGNvbXBhcmlzb25TdW1tYXJ5LnVuY2hhbmdlZCB9fTwvc3Bhbj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImNxYS10ZXh0LVsxMHB4XSBjcWEtZm9udC1zZW1pYm9sZCBjcWEtdGV4dC1bIzZCNzI4MF1cIj5VbmNoYW5nZWQ8L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1nYXAtMS41XCI+XG4gICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwiY3FhLWZsZXgtc2hyaW5rLTAgY3FhLXctWzE0cHhdIGNxYS1oLVsxNHB4XSBjcWEtdGV4dC1zbVwiPlxuICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxNFwiIGhlaWdodD1cIjE0XCIgdmlld0JveD1cIjAgMCAxNCAxNFwiIGZpbGw9XCJub25lXCI+XG4gICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTIuNjc1OSAxMC41MDAzTDguMDA5MTkgMi4zMzM2M0M3LjkwNzQzIDIuMTU0MDggNy43NTk4NyAyLjAwNDc0IDcuNTgxNTYgMS45MDA4M0M3LjQwMzI1IDEuNzk2OTMgNy4yMDA1NiAxLjc0MjE5IDYuOTk0MTkgMS43NDIxOUM2Ljc4NzgxIDEuNzQyMTkgNi41ODUxMyAxLjc5NjkzIDYuNDA2ODEgMS45MDA4M0M2LjIyODUgMi4wMDQ3NCA2LjA4MDk0IDIuMTU0MDggNS45NzkxOSAyLjMzMzYzTDEuMzEyNTIgMTAuNTAwM0MxLjIwOTY3IDEwLjY3ODQgMS4xNTU3NCAxMC44ODA2IDEuMTU2MTkgMTEuMDg2M0MxLjE1NjY1IDExLjI5MTkgMS4yMTE0NyAxMS40OTM5IDEuMzE1MTEgMTEuNjcxNUMxLjQxODc1IDExLjg0OTIgMS41Njc1MiAxMS45OTYzIDEuNzQ2MzQgMTIuMDk3OUMxLjkyNTE2IDEyLjE5OTYgMi4xMjc2NyAxMi4yNTIxIDIuMzMzMzUgMTIuMjUwM0gxMS42NjY3QzExLjg3MTQgMTIuMjUwMSAxMi4wNzI0IDEyLjE5NiAxMi4yNDk2IDEyLjA5MzVDMTIuNDI2OCAxMS45OTExIDEyLjU3MzkgMTEuODQzOCAxMi42NzYyIDExLjY2NjRDMTIuNzc4NCAxMS40ODkxIDEyLjgzMjIgMTEuMjg4IDEyLjgzMjIgMTEuMDgzM0MxMi44MzIxIDEwLjg3ODYgMTIuNzc4MiAxMC42Nzc2IDEyLjY3NTkgMTAuNTAwM1pcIiBzdHJva2U9XCIjRkQ5QTAwXCIgc3Ryb2tlLXdpZHRoPVwiMS4xNjY2N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cbiAgICAgICAgICAgICAgPHBhdGggZD1cIk03IDUuMjVWNy41ODMzM1wiIHN0cm9rZT1cIiNGRDlBMDBcIiBzdHJva2Utd2lkdGg9XCIxLjE2NjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxuICAgICAgICAgICAgICA8cGF0aCBkPVwiTTcgOS45MTY5OUg3LjAwNTgzXCIgc3Ryb2tlPVwiI0ZEOUEwMFwiIHN0cm9rZS13aWR0aD1cIjEuMTY2NjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XG4gICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgIDwvbWF0LWljb24+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJjcWEtdGV4dC1zbSBjcWEtZm9udC1zZW1pYm9sZCBsZWFkaW5nLW5vcm1hbCBjcWEtdGV4dC1bI0UxNzEwMF1cIj57eyBjb21wYXJpc29uU3VtbWFyeS5zdGF0dXNDaGFuZ2VkIH19PC9zcGFuPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3FhLXRleHQtWzEwcHhdIGNxYS1mb250LXNlbWlib2xkIGNxYS10ZXh0LVsjNkI3MjgwXVwiPlN0YXR1cyBDaGFuZ2VkPC9zcGFuPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwiY3FhLWZsZXggY3FhLWl0ZW1zLWNlbnRlciBjcWEtZ2FwLTEuNVwiPlxuICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImNxYS1mbGV4LXNocmluay0wIGNxYS13LVsxNHB4XSBjcWEtaC1bMTRweF0gY3FhLXRleHQtc21cIj5cbiAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTRcIiBoZWlnaHQ9XCIxNFwiIHZpZXdCb3g9XCIwIDAgMTQgMTRcIiBmaWxsPVwibm9uZVwiPlxuICAgICAgICAgICAgICA8cGF0aCBkPVwiTTIuOTE2NjkgN0gxMS4wODM0XCIgc3Ryb2tlPVwiIzAwQzk1MFwiIHN0cm9rZS13aWR0aD1cIjEuMTY2NjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XG4gICAgICAgICAgICAgIDxwYXRoIGQ9XCJNNyAyLjkxNjk5VjExLjA4MzdcIiBzdHJva2U9XCIjMDBDOTUwXCIgc3Ryb2tlLXdpZHRoPVwiMS4xNjY2N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cbiAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgPC9tYXQtaWNvbj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImNxYS10ZXh0LXNtIGNxYS1mb250LXNlbWlib2xkIGxlYWRpbmctbm9ybWFsIGNxYS10ZXh0LVsjMDBBNjNFXVwiPnt7IGNvbXBhcmlzb25TdW1tYXJ5LmFkZGVkIH19PC9zcGFuPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3FhLXRleHQtWzEwcHhdIGNxYS1mb250LXNlbWlib2xkIGNxYS10ZXh0LVsjNkI3MjgwXVwiPkFkZGVkPC9zcGFuPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwiY3FhLWZsZXggY3FhLWl0ZW1zLWNlbnRlciBjcWEtZ2FwLTEuNVwiPlxuICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImNxYS1mbGV4LXNocmluay0wIGNxYS13LVsxNHB4XSBjcWEtaC1bMTRweF0gY3FhLXRleHQtc21cIj5cbiAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTRcIiBoZWlnaHQ9XCIxNFwiIHZpZXdCb3g9XCIwIDAgMTQgMTRcIiBmaWxsPVwibm9uZVwiPlxuICAgICAgICAgICAgICA8cGF0aCBkPVwiTTIuOTE2NjkgN0gxMS4wODM0XCIgc3Ryb2tlPVwiI0ZCMkMzNlwiIHN0cm9rZS13aWR0aD1cIjEuMTY2NjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XG4gICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgIDwvbWF0LWljb24+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJjcWEtdGV4dC1zbSBjcWEtZm9udC1zZW1pYm9sZCBsZWFkaW5nLW5vcm1hbCBjcWEtdGV4dC1bI0ZCMkMzNl1cIj57eyBjb21wYXJpc29uU3VtbWFyeS5yZW1vdmVkIH19PC9zcGFuPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3FhLXRleHQtWzEwcHhdIGNxYS1mb250LXNlbWlib2xkIGNxYS10ZXh0LVsjNkI3MjgwXVwiPlJlbW92ZWQ8L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1nYXAtMS41XCI+XG4gICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwiY3FhLWZsZXgtc2hyaW5rLTAgY3FhLXctWzE0cHhdIGNxYS1oLVsxNHB4XSBjcWEtdGV4dC1zbVwiPlxuICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxNFwiIGhlaWdodD1cIjE0XCIgdmlld0JveD1cIjAgMCAxNCAxNFwiIGZpbGw9XCJub25lXCI+XG4gICAgICAgICAgICAgIDxwYXRoIGQ9XCJNNy4wMDAwMiAxMi44MzM3QzEwLjIyMTcgMTIuODMzNyAxMi44MzM0IDEwLjIyMiAxMi44MzM0IDcuMDAwMzNDMTIuODMzNCAzLjc3ODY2IDEwLjIyMTcgMS4xNjY5OSA3LjAwMDAyIDEuMTY2OTlDMy43NzgzNiAxLjE2Njk5IDEuMTY2NjkgMy43Nzg2NiAxLjE2NjY5IDcuMDAwMzNDMS4xNjY2OSAxMC4yMjIgMy43NzgzNiAxMi44MzM3IDcuMDAwMDIgMTIuODMzN1pcIiBzdHJva2U9XCIjMkI3RkZGXCIgc3Ryb2tlLXdpZHRoPVwiMS4xNjY2N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cbiAgICAgICAgICAgICAgPHBhdGggZD1cIk03IDMuNVY3TDkuMzMzMzMgOC4xNjY2N1wiIHN0cm9rZT1cIiMyQjdGRkZcIiBzdHJva2Utd2lkdGg9XCIxLjE2NjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxuICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICA8L21hdC1pY29uPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3FhLXRleHQtc20gY3FhLWZvbnQtc2VtaWJvbGQgbGVhZGluZy1ub3JtYWwgY3FhLXRleHQtWyMxNTVERkNdXCI+e3sgY29tcGFyaXNvblN1bW1hcnkudGltaW5nIH19PC9zcGFuPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3FhLXRleHQtWzEwcHhdIGNxYS1mb250LXNlbWlib2xkIGNxYS10ZXh0LVsjNkI3MjgwXVwiPlRpbWluZyBDaGFuZ2VkPC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cImNxYS1iZy13aGl0ZSBjcWEtcm91bmRlZC1sZyBjcWEtb3ZlcmZsb3ctaGlkZGVuXCI+XG4gICAgICA8Y3FhLXRhYmxlLXRlbXBsYXRlXG4gICAgICAgIFtjb2x1bW5zXT1cInRhYmxlQ29sdW1uc1wiXG4gICAgICAgIFtkYXRhXT1cInN0ZXBDb21wYXJpc29uc1wiXG4gICAgICAgIFtwYWdlSW5kZXhdPVwicGFnZUluZGV4XCJcbiAgICAgICAgW3BhZ2VTaXplXT1cInBhZ2VTaXplXCJcbiAgICAgICAgW2lzRW1wdHlTdGF0ZV09XCJpc0VtcHR5U3RhdGVcIlxuICAgICAgICBbZW1wdHlTdGF0ZUNvbmZpZ109XCJlbXB0eVN0YXRlQ29uZmlnXCJcbiAgICAgICAgW2lzVGFibGVEYXRhTG9hZGluZ109XCJpc0NvbXBhcmluZ1J1bnNcIlxuICAgICAgICBbc2hvd1NlYXJjaEJhcl09XCJmYWxzZVwiXG4gICAgICAgIFtzaG93RmlsdGVyQnV0dG9uXT1cImZhbHNlXCJcbiAgICAgICAgW3Nob3dTZXR0aW5nc0J1dHRvbl09XCJmYWxzZVwiXG4gICAgICAgIFtzaG93QXV0b1JlZnJlc2hCdXR0b25dPVwiZmFsc2VcIlxuICAgICAgICBbc2hvd090aGVyQnV0dG9uXT1cImZhbHNlXCJcbiAgICAgICAgW3Nob3dGaWx0ZXJQYW5lbF09XCJmYWxzZVwiXG4gICAgICAgIFtzZXJ2ZXJTaWRlUGFnaW5hdGlvbl09XCJmYWxzZVwiXG4gICAgICAgIChwYWdlQ2hhbmdlKT1cIm9uUGFnZUNoYW5nZSgkZXZlbnQpXCI+XG4gICAgICA8L2NxYS10YWJsZS10ZW1wbGF0ZT5cbiAgICA8L2Rpdj5cblxuICA8L2Rpdj5cbjwvZGl2PlxuXG4iXX0=
|
|
489
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcGFyZS1ydW5zLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcGFyZS1ydW5zL2NvbXBhcmUtcnVucy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBhcmUtcnVucy9jb21wYXJlLXJ1bnMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQW9DLE1BQU0sRUFBRSxZQUFZLEVBQXFCLHVCQUF1QixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBS3JKLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHlDQUF5QyxDQUFDOzs7Ozs7OztBQTRGN0UsTUFBTSxPQUFPLG9CQUFvQjtJQStCL0IsWUFDVSxFQUFlLEVBQ2YsR0FBc0I7UUFEdEIsT0FBRSxHQUFGLEVBQUUsQ0FBYTtRQUNmLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBaEN2QixTQUFJLEdBQXlCLEVBQUUsQ0FBQztRQUVoQyxrQkFBYSxHQUFZLEtBQUssQ0FBQztRQUMvQixnQkFBVyxHQUFZLEtBQUssQ0FBQztRQUM3QixvQkFBZSxHQUFZLEtBQUssQ0FBQztRQUVoQyxlQUFVLEdBQUcsSUFBSSxZQUFZLEVBQWlCLENBQUM7UUFDL0MsaUJBQVksR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBQzFDLGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQWtCLENBQUM7UUFTM0Qsb0JBQWUsR0FBcUIsRUFBRSxDQUFDO1FBQ3ZDLGlCQUFZLEdBQXlCLEVBQUUsQ0FBQztRQUV4QyxjQUFTLEdBQVcsQ0FBQyxDQUFDO1FBQ3RCLGFBQVEsR0FBVyxFQUFFLENBQUM7UUFFdEIscUJBQWdCLEdBQXFCO1lBQ25DLEtBQUssRUFBRSxvQkFBb0I7WUFDM0IsV0FBVyxFQUFFLDhFQUE4RTtZQUMzRixRQUFRLEVBQUUsa0JBQWtCLENBQUMsWUFBWTtZQUN6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Y0FBYztzQkFBdEIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFFSSxVQUFVO3NCQUFuQixNQUFNO2dCQUNHLFlBQVk7c0JBQXJCLE1BQU07Z0JBQ0csV0FBVztzQkFBcEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCwgT25DaGFuZ2VzLCBTaW1wbGVDaGFuZ2VzLCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQnVpbGRlciwgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgRHluYW1pY1NlbGVjdEZpZWxkQ29uZmlnIH0gZnJvbSAnLi4vZHluYW1pYy1zZWxlY3QvZHluYW1pYy1zZWxlY3QtZmllbGQuY29tcG9uZW50JztcbmltcG9ydCB7IER5bmFtaWNUYWJsZUNvbHVtbiB9IGZyb20gJy4uL3RhYmxlL2R5bmFtaWMtdGFibGUvZHluYW1pYy10YWJsZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgRW1wdHlTdGF0ZUNvbmZpZyB9IGZyb20gJy4uL2VtcHR5LXN0YXRlL2VtcHR5LXN0YXRlLWNvbmZpZy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgRU1QVFlfU1RBVEVfSU1BR0VTIH0gZnJvbSAnLi4vYXNzZXRzL2ltYWdlcy9pbWFnZS1hc3NldHMuY29uc3RhbnRzJztcblxuZXhwb3J0IGludGVyZmFjZSBUZXN0RGV2aWNlIHtcbiAgaWQ6IG51bWJlcjtcbiAgdGVzdFBsYW5JZDogbnVtYmVyO1xuICB0aXRsZTogc3RyaW5nO1xuICBicm93c2VyOiBzdHJpbmc7XG4gIHBsYXRmb3JtOiBzdHJpbmc7XG4gIGJyb3dzZXJWZXJzaW9uOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGVzdERldmljZVNldHRpbmdzIHtcbiAgdGl0bGU6IHN0cmluZztcbiAgb3NWZXJzaW9uOiBzdHJpbmc7XG4gIGJyb3dzZXI6IHN0cmluZztcbiAgYnJvd3NlclZlcnNpb246IHN0cmluZztcbiAgcmVzb2x1dGlvbjogc3RyaW5nO1xuICBwbGF0Zm9ybTogc3RyaW5nO1xuICBkZXZpY2VOYW1lOiBzdHJpbmcgfCBudWxsO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRlc3REZXZpY2VSZXN1bHQge1xuICB0ZXN0RGV2aWNlOiBUZXN0RGV2aWNlO1xuICB0ZXN0RGV2aWNlU2V0dGluZ3M6IFRlc3REZXZpY2VTZXR0aW5ncztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUZXN0Q2FzZVJlc3VsdERhdGEge1xuICBpZDogbnVtYmVyO1xuICB0ZXN0Q2FzZUlkOiBudW1iZXI7XG4gIHRlc3RQbGFuUmVzdWx0SWQ6IG51bWJlcjtcbiAgcmVzdWx0OiAnU1VDQ0VTUycgfCAnRkFJTFVSRScgfCAnQUJPUlRFRCcgfCAnTk9UX0VYRUNVVEVEJyB8ICdRVUVVRUQnIHwgJ1NUT1BQRUQnO1xuICBzdGF0dXM6ICdTVEFUVVNfQ09NUExFVEVEJyB8ICdTVEFUVVNfSU5fUFJPR1JFU1MnIHwgJ1NUQVRVU19RVUVVRUQnO1xuICBzdGFydFRpbWU6IG51bWJlcjtcbiAgZW5kVGltZTogbnVtYmVyO1xuICBkdXJhdGlvbjogbnVtYmVyO1xuICB0ZXN0RGF0YVNldE5hbWU6IHN0cmluZztcbiAgZW52aXJvbm1lbnQ6IHN0cmluZztcbiAgdGVzdERldmljZVJlc3VsdDogVGVzdERldmljZVJlc3VsdDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSdW5EYXRhIHtcbiAgaWQ6IG51bWJlcjtcbiAgbGFiZWw6IHN0cmluZztcbiAgcmVzdWx0OiAnU1VDQ0VTUycgfCAnRkFJTFVSRScgfCAnQUJPUlRFRCcgfCAnTk9UX0VYRUNVVEVEJyB8ICdRVUVVRUQnIHwgJ1NUT1BQRUQnO1xuICBzdGFydFRpbWU6IG51bWJlcjtcbiAgZHVyYXRpb246IG51bWJlcjtcbiAgdGVzdERhdGFTZXROYW1lOiBzdHJpbmc7XG4gIGRldmljZTogc3RyaW5nO1xuICBicm93c2VyOiBzdHJpbmc7XG4gIHBsYXRmb3JtOiBzdHJpbmc7XG4gIGVudmlyb25tZW50Pzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbXBhcmlzb25TdW1tYXJ5IHtcbiAgdW5jaGFuZ2VkOiBudW1iZXI7XG4gIHN0YXR1c0NoYW5nZWQ6IG51bWJlcjtcbiAgYWRkZWQ6IG51bWJlcjtcbiAgcmVtb3ZlZDogbnVtYmVyO1xuICB0aW1pbmc6IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTdGVwQ29tcGFyaXNvbiB7XG4gIHN0ZXBJZDogc3RyaW5nO1xuICBzdGVwVGl0bGU6IHN0cmluZztcbiAgcnVuQVN0YXR1cz86ICdTVUNDRVNTJyB8ICdGQUlMVVJFJyB8ICdBQk9SVEVEJyB8ICdOT1RfRVhFQ1VURUQnIHwgJ1FVRVVFRCcgfCAnU1RPUFBFRCc7XG4gIHJ1bkFEdXJhdGlvbj86IG51bWJlcjtcbiAgcnVuQlN0YXR1cz86ICdTVUNDRVNTJyB8ICdGQUlMVVJFJyB8ICdBQk9SVEVEJyB8ICdOT1RfRVhFQ1VURUQnIHwgJ1FVRVVFRCcgfCAnU1RPUFBFRCc7XG4gIHJ1bkJEdXJhdGlvbj86IG51bWJlcjtcbiAgY2hhbmdlOiAnVU5DSEFOR0VEJyB8ICdTVEFUVVNfQ0hBTkdFRCcgfCAnVElNSU5HX0NIQU5HRUQnIHwgJ0FEREVEJyB8ICdSRU1PVkVEJztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb21wYXJpc29uUmVzcG9uc2Uge1xuICBzdW1tYXJ5OiBDb21wYXJpc29uU3VtbWFyeTtcbiAgc3RlcHNDb21wYXJpc29uOiBTdGVwQ29tcGFyaXNvbltdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbXBhcmVSZXF1ZXN0IHtcbiAgcnVuQUlkOiBudW1iZXI7XG4gIHJ1bkJJZDogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNlYXJjaFJlcXVlc3Qge1xuICBrZXk6IHN0cmluZztcbiAgcXVlcnk6IHN0cmluZztcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY3FhLWNvbXBhcmUtcnVucycsXG4gIHRlbXBsYXRlVXJsOiAnLi9jb21wYXJlLXJ1bnMuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFtdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBDb21wYXJlUnVuc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcbiAgQElucHV0KCkgcnVuczogVGVzdENhc2VSZXN1bHREYXRhW10gPSBbXTtcbiAgQElucHV0KCkgY29tcGFyaXNvbkRhdGE/OiBDb21wYXJpc29uUmVzcG9uc2U7XG4gIEBJbnB1dCgpIGlzTG9hZGluZ1J1bnM6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgaGFzTW9yZVJ1bnM6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgaXNDb21wYXJpbmdSdW5zOiBib29sZWFuID0gZmFsc2U7XG4gIFxuICBAT3V0cHV0KCkgc2VhcmNoUnVucyA9IG5ldyBFdmVudEVtaXR0ZXI8U2VhcmNoUmVxdWVzdD4oKTtcbiAgQE91dHB1dCgpIGxvYWRNb3JlUnVucyA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuICBAT3V0cHV0KCkgY29tcGFyZVJ1bnMgPSBuZXcgRXZlbnRFbWl0dGVyPENvbXBhcmVSZXF1ZXN0PigpO1xuXG4gIGZvcm0hOiBGb3JtR3JvdXA7XG4gIHJ1bkFTZWxlY3RDb25maWchOiBEeW5hbWljU2VsZWN0RmllbGRDb25maWc7XG4gIHJ1bkJTZWxlY3RDb25maWchOiBEeW5hbWljU2VsZWN0RmllbGRDb25maWc7XG5cbiAgc2VsZWN0ZWRSdW5BPzogUnVuRGF0YTtcbiAgc2VsZWN0ZWRSdW5CPzogUnVuRGF0YTtcbiAgY29tcGFyaXNvblN1bW1hcnk/OiBDb21wYXJpc29uU3VtbWFyeTtcbiAgc3RlcENvbXBhcmlzb25zOiBTdGVwQ29tcGFyaXNvbltdID0gW107XG4gIHRhYmxlQ29sdW1uczogRHluYW1pY1RhYmxlQ29sdW1uW10gPSBbXTtcbiAgXG4gIHBhZ2VJbmRleDogbnVtYmVyID0gMDtcbiAgcGFnZVNpemU6IG51bWJlciA9IDEwO1xuICBcbiAgZW1wdHlTdGF0ZUNvbmZpZzogRW1wdHlTdGF0ZUNvbmZpZyA9IHtcbiAgICB0aXRsZTogJ05vIENvbXBhcmlzb24gRGF0YScsXG4gICAgZGVzY3JpcHRpb246ICdTZWxlY3QgdHdvIHJ1bnMgdG8gY29tcGFyZSBhbmQgc2VlIGRldGFpbGVkIHN0ZXAtYnktc3RlcCBjb21wYXJpc29uIHJlc3VsdHMuJyxcbiAgICBpbWFnZVVybDogRU1QVFlfU1RBVEVfSU1BR0VTLkNPTVBBUkVfUlVOUyxcbiAgICBhY3Rpb25zOiBbXVxuICB9O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgZmI6IEZvcm1CdWlsZGVyLFxuICAgIHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZlxuICApIHsgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuaW5pdGlhbGl6ZUZvcm0oKTtcbiAgICB0aGlzLnNldHVwU2VsZWN0Q29uZmlncygpO1xuICAgIHRoaXMuc2V0dXBUYWJsZUNvbHVtbnMoKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlc1sncnVucyddICYmICFjaGFuZ2VzWydydW5zJ10uZmlyc3RDaGFuZ2UpIHtcbiAgICAgIHRoaXMuc2V0dXBTZWxlY3RDb25maWdzKCk7XG4gICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG4gICAgXG4gICAgaWYgKGNoYW5nZXNbJ2NvbXBhcmlzb25EYXRhJ10gJiYgdGhpcy5jb21wYXJpc29uRGF0YSkge1xuICAgICAgdGhpcy5oYW5kbGVDb21wYXJpc29uRGF0YSgpO1xuICAgIH1cbiAgICBcbiAgICBpZiAoY2hhbmdlc1snaXNMb2FkaW5nUnVucyddKSB7XG4gICAgICB0aGlzLnVwZGF0ZVNlbGVjdENvbmZpZ3NMb2FkaW5nKCk7XG4gICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGluaXRpYWxpemVGb3JtKCk6IHZvaWQge1xuICAgIHRoaXMuZm9ybSA9IHRoaXMuZmIuZ3JvdXAoe1xuICAgICAgcnVuQTogW251bGxdLFxuICAgICAgcnVuQjogW251bGxdXG4gICAgfSk7XG5cbiAgICB0aGlzLmZvcm0udmFsdWVDaGFuZ2VzLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLnVwZGF0ZVNlbGVjdGVkUnVucygpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBhbGxPcHRpb25zQ2FjaGU6IGFueVtdID0gW107XG4gIHByaXZhdGUgbGFzdFJ1bnM6IFRlc3RDYXNlUmVzdWx0RGF0YVtdID0gW107XG5cbiAgcHJpdmF0ZSBzZXR1cFNlbGVjdENvbmZpZ3MoKTogdm9pZCB7XG4gICAgY29uc3QgcnVuQUlkID0gdGhpcy5mb3JtPy5nZXQoJ3J1bkEnKT8udmFsdWU7XG4gICAgY29uc3QgcnVuQklkID0gdGhpcy5mb3JtPy5nZXQoJ3J1bkInKT8udmFsdWU7XG4gICAgXG4gICAgaWYgKHRoaXMucnVucyAhPT0gdGhpcy5sYXN0UnVucykge1xuICAgICAgdGhpcy5hbGxPcHRpb25zQ2FjaGUgPSB0aGlzLnJ1bnMubWFwKHJ1biA9PiAoe1xuICAgICAgICBpZDogcnVuLmlkLFxuICAgICAgICB2YWx1ZTogcnVuLmlkLFxuICAgICAgICBsYWJlbDogdGhpcy5mb3JtYXRSdW5MYWJlbChydW4pLFxuICAgICAgICBuYW1lOiB0aGlzLmZvcm1hdFJ1bkxhYmVsKHJ1bilcbiAgICAgIH0pKTtcbiAgICAgIHRoaXMubGFzdFJ1bnMgPSB0aGlzLnJ1bnM7XG4gICAgfVxuXG4gICAgY29uc3QgcnVuQU9wdGlvbnMgPSB0aGlzLmFsbE9wdGlvbnNDYWNoZS5maWx0ZXIob3B0ID0+IG9wdC5pZCAhPT0gcnVuQklkKTtcbiAgICBjb25zdCBydW5CT3B0aW9ucyA9IHRoaXMuYWxsT3B0aW9uc0NhY2hlLmZpbHRlcihvcHQgPT4gb3B0LmlkICE9PSBydW5BSWQpO1xuXG4gICAgdGhpcy5ydW5BU2VsZWN0Q29uZmlnID0ge1xuICAgICAga2V5OiAncnVuQScsXG4gICAgICBsYWJlbDogJycsXG4gICAgICBwbGFjZWhvbGRlcjogJ1NlYXJjaCBhbmQgc2VsZWN0IHJ1bicsXG4gICAgICBvcHRpb25zOiBydW5BT3B0aW9ucyxcbiAgICAgIHNlYXJjaGFibGU6IHRydWUsXG4gICAgICBzZXJ2ZXJTZWFyY2g6IHRydWUsXG4gICAgICBoYXNNb3JlOiB0aGlzLmhhc01vcmVSdW5zLFxuICAgICAgaXNMb2FkaW5nOiB0aGlzLmlzTG9hZGluZ1J1bnMsXG4gICAgICBvblNlYXJjaDogKHF1ZXJ5OiBzdHJpbmcpID0+IHRoaXMuaGFuZGxlU2VhcmNoUnVucyhxdWVyeSwgJ3J1bkEnKSxcbiAgICAgIG9uTG9hZE1vcmU6IChxdWVyeT86IHN0cmluZykgPT4gdGhpcy5oYW5kbGVMb2FkTW9yZVJ1bnMocXVlcnkgfHwgJycpXG4gICAgfTtcblxuICAgIHRoaXMucnVuQlNlbGVjdENvbmZpZyA9IHtcbiAgICAgIGtleTogJ3J1bkInLFxuICAgICAgbGFiZWw6ICcnLFxuICAgICAgcGxhY2Vob2xkZXI6ICdTZWFyY2ggYW5kIHNlbGVjdCBydW4nLFxuICAgICAgb3B0aW9uczogcnVuQk9wdGlvbnMsXG4gICAgICBzZWFyY2hhYmxlOiB0cnVlLFxuICAgICAgc2VydmVyU2VhcmNoOiB0cnVlLFxuICAgICAgaGFzTW9yZTogdGhpcy5oYXNNb3JlUnVucyxcbiAgICAgIGlzTG9hZGluZzogdGhpcy5pc0xvYWRpbmdSdW5zLFxuICAgICAgb25TZWFyY2g6IChxdWVyeTogc3RyaW5nKSA9PiB0aGlzLmhhbmRsZVNlYXJjaFJ1bnMocXVlcnksICdydW5CJyksXG4gICAgICBvbkxvYWRNb3JlOiAocXVlcnk/OiBzdHJpbmcpID0+IHRoaXMuaGFuZGxlTG9hZE1vcmVSdW5zKHF1ZXJ5IHx8ICcnKVxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIHJ1bkxhYmVsQ2FjaGUgPSBuZXcgTWFwPG51bWJlciwgc3RyaW5nPigpO1xuXG4gIHByaXZhdGUgZm9ybWF0UnVuTGFiZWwocnVuOiBUZXN0Q2FzZVJlc3VsdERhdGEpOiBzdHJpbmcge1xuICAgIGlmICh0aGlzLnJ1bkxhYmVsQ2FjaGUuaGFzKHJ1bi5pZCkpIHtcbiAgICAgIHJldHVybiB0aGlzLnJ1bkxhYmVsQ2FjaGUuZ2V0KHJ1bi5pZCkhO1xuICAgIH1cblxuICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZShydW4uc3RhcnRUaW1lKTtcbiAgICBjb25zdCBmb3JtYXR0ZWREYXRlID0gZGF0ZS50b0xvY2FsZVN0cmluZygnZW4tVVMnLCB7XG4gICAgICBtb250aDogJ3Nob3J0JyxcbiAgICAgIGRheTogJ251bWVyaWMnLFxuICAgICAgaG91cjogJzItZGlnaXQnLFxuICAgICAgbWludXRlOiAnMi1kaWdpdCcsXG4gICAgICBzZWNvbmQ6ICcyLWRpZ2l0J1xuICAgIH0pO1xuICAgIGNvbnN0IGxhYmVsID0gYFJ1biAjJHtydW4uaWR9IOKAoiAke2Zvcm1hdHRlZERhdGV9YDtcbiAgICB0aGlzLnJ1bkxhYmVsQ2FjaGUuc2V0KHJ1bi5pZCwgbGFiZWwpO1xuICAgIHJldHVybiBsYWJlbDtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlU2VsZWN0Q29uZmlnc0xvYWRpbmcoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMucnVuQVNlbGVjdENvbmZpZykge1xuICAgICAgdGhpcy5ydW5BU2VsZWN0Q29uZmlnID0ge1xuICAgICAgICAuLi50aGlzLnJ1bkFTZWxlY3RDb25maWcsXG4gICAgICAgIGlzTG9hZGluZzogdGhpcy5pc0xvYWRpbmdSdW5zLFxuICAgICAgICBoYXNNb3JlOiB0aGlzLmhhc01vcmVSdW5zXG4gICAgICB9O1xuICAgIH1cbiAgICBpZiAodGhpcy5ydW5CU2VsZWN0Q29uZmlnKSB7XG4gICAgICB0aGlzLnJ1bkJTZWxlY3RDb25maWcgPSB7XG4gICAgICAgIC4uLnRoaXMucnVuQlNlbGVjdENvbmZpZyxcbiAgICAgICAgaXNMb2FkaW5nOiB0aGlzLmlzTG9hZGluZ1J1bnMsXG4gICAgICAgIGhhc01vcmU6IHRoaXMuaGFzTW9yZVJ1bnNcbiAgICAgIH07XG4gICAgfVxuICB9XG5cbiAgaGFuZGxlU2VhcmNoUnVucyhxdWVyeTogc3RyaW5nLCBrZXk6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuc2VhcmNoUnVucy5lbWl0KHsga2V5LCBxdWVyeSB9KTtcbiAgfVxuXG4gIGhhbmRsZUxvYWRNb3JlUnVucyhxdWVyeTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5sb2FkTW9yZVJ1bnMuZW1pdChxdWVyeSk7XG4gIH1cblxuICBvblNlYXJjaENoYW5nZShldmVudDogU2VhcmNoUmVxdWVzdCk6IHZvaWQge1xuICAgIGNvbnNvbGUubG9nKCdvblNlYXJjaENoYW5nZScsIGV2ZW50KTtcbiAgICB0aGlzLnNlYXJjaFJ1bnMuZW1pdChldmVudCk7XG4gIH1cblxuICBvbkxvYWRNb3JlKGV2ZW50OiB7IGtleTogc3RyaW5nOyBxdWVyeTogc3RyaW5nIH0pOiB2b2lkIHtcbiAgICB0aGlzLmxvYWRNb3JlUnVucy5lbWl0KGV2ZW50LnF1ZXJ5KTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlU2VsZWN0ZWRSdW5zKCk6IHZvaWQge1xuICAgIGNvbnN0IHJ1bkFJZCA9IHRoaXMuZm9ybS5nZXQoJ3J1bkEnKT8udmFsdWU7XG4gICAgY29uc3QgcnVuQklkID0gdGhpcy5mb3JtLmdldCgncnVuQicpPy52YWx1ZTtcblxuICAgIGNvbnN0IHJ1bkEgPSB0aGlzLnJ1bnMuZmluZChyID0+IHIuaWQgPT09IHJ1bkFJZCk7XG4gICAgY29uc3QgcnVuQiA9IHRoaXMucnVucy5maW5kKHIgPT4gci5pZCA9PT0gcnVuQklkKTtcblxuICAgIHRoaXMuc2VsZWN0ZWRSdW5BID0gcnVuQSA/IHRoaXMuY29udmVydFRvUnVuRGF0YShydW5BKSA6IHVuZGVmaW5lZDtcbiAgICB0aGlzLnNlbGVjdGVkUnVuQiA9IHJ1bkIgPyB0aGlzLmNvbnZlcnRUb1J1bkRhdGEocnVuQikgOiB1bmRlZmluZWQ7XG5cbiAgICB0aGlzLnNldHVwU2VsZWN0Q29uZmlncygpO1xuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcHJpdmF0ZSBjb252ZXJ0VG9SdW5EYXRhKGRhdGE6IFRlc3RDYXNlUmVzdWx0RGF0YSk6IFJ1bkRhdGEge1xuICAgIGNvbnN0IGRldmljZSA9IGRhdGEudGVzdERldmljZVJlc3VsdD8udGVzdERldmljZVNldHRpbmdzPy5kZXZpY2VOYW1lIHx8IFxuICAgICAgICAgICAgICAgICAgIGRhdGEudGVzdERldmljZVJlc3VsdD8udGVzdERldmljZVNldHRpbmdzPy5wbGF0Zm9ybSB8fCBcbiAgICAgICAgICAgICAgICAgICAnVW5rbm93biBEZXZpY2UnO1xuICAgIGNvbnN0IGJyb3dzZXIgPSBkYXRhLnRlc3REZXZpY2VSZXN1bHQ/LnRlc3REZXZpY2VTZXR0aW5ncz8uYnJvd3NlciB8fCAnVW5rbm93biBCcm93c2VyJztcbiAgICBjb25zdCBwbGF0Zm9ybSA9IGRhdGEudGVzdERldmljZVJlc3VsdD8udGVzdERldmljZVNldHRpbmdzPy5wbGF0Zm9ybSB8fCAnVW5rbm93biBQbGF0Zm9ybSc7XG5cbiAgICByZXR1cm4ge1xuICAgICAgaWQ6IGRhdGEuaWQsXG4gICAgICBsYWJlbDogdGhpcy5mb3JtYXRSdW5MYWJlbChkYXRhKSxcbiAgICAgIHJlc3VsdDogZGF0YS5yZXN1bHQsXG4gICAgICBzdGFydFRpbWU6IGRhdGEuc3RhcnRUaW1lLFxuICAgICAgZHVyYXRpb246IGRhdGEuZHVyYXRpb24sXG4gICAgICB0ZXN0RGF0YVNldE5hbWU6IGRhdGEudGVzdERhdGFTZXROYW1lLFxuICAgICAgZGV2aWNlLFxuICAgICAgYnJvd3NlcixcbiAgICAgIHBsYXRmb3JtLFxuICAgICAgZW52aXJvbm1lbnQ6IGRhdGEuZW52aXJvbm1lbnRcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBzZXR1cFRhYmxlQ29sdW1ucygpOiB2b2lkIHtcbiAgICB0aGlzLnRhYmxlQ29sdW1ucyA9IFtcbiAgICAgIHtcbiAgICAgICAgZmllbGRJZDogJ3N0ZXAnLFxuICAgICAgICBmaWVsZE5hbWU6ICdTdGVwJyxcbiAgICAgICAgZmllbGRWYWx1ZTogJ3N0ZXBUaXRsZScsXG4gICAgICAgIGlzU2hvdzogdHJ1ZSxcbiAgICAgICAgd2VpZ2h0OiAzLFxuICAgICAgICByZW5kZXI6IChyb3c6IFN0ZXBDb21wYXJpc29uKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGBcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1nYXAtMlwiPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNxYS10ZXh0LXhzIGNxYS10ZXh0LVsjMEIwQjBCXVwiPiR7cm93LnN0ZXBUaXRsZX08L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICBgO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBmaWVsZElkOiAncnVuQScsXG4gICAgICAgIGZpZWxkTmFtZTogJ1J1biBBJyxcbiAgICAgICAgaXNTaG93OiB0cnVlLFxuICAgICAgICB3ZWlnaHQ6IDEuNSxcbiAgICAgICAgcmVuZGVyOiAocm93OiBTdGVwQ29tcGFyaXNvbikgPT4ge1xuICAgICAgICAgIGlmICghcm93LnJ1bkFTdGF0dXMpIHtcbiAgICAgICAgICAgIHJldHVybiAnPHNwYW4gY2xhc3M9XCJjcWEtdGV4dC14cyBjcWEtdGV4dC1bIzlDQTNBRl1cIj7igJQ8L3NwYW4+JztcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIGBcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtZmxleC1jb2wgY3FhLWdhcC0xXCI+XG4gICAgICAgICAgICAgICR7dGhpcy5yZW5kZXJTdGF0dXNJY29uKHJvdy5ydW5BU3RhdHVzKX1cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjcWEtdGV4dC1bMTBweF0gY3FhLXRleHQtWyM2QjcyODBdXCI+JHt0aGlzLmZvcm1hdER1cmF0aW9uKHJvdy5ydW5BRHVyYXRpb24gfHwgMCl9PC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgYDtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgZmllbGRJZDogJ3J1bkInLFxuICAgICAgICBmaWVsZE5hbWU6ICdSdW4gQicsXG4gICAgICAgIGlzU2hvdzogdHJ1ZSxcbiAgICAgICAgd2VpZ2h0OiAxLjUsXG4gICAgICAgIHJlbmRlcjogKHJvdzogU3RlcENvbXBhcmlzb24pID0+IHtcbiAgICAgICAgICBpZiAoIXJvdy5ydW5CU3RhdHVzKSB7XG4gICAgICAgICAgICByZXR1cm4gJzxzcGFuIGNsYXNzPVwiY3FhLXRleHQteHMgY3FhLXRleHQtWyM2MzYzNjNdXCI+IOKAlCA8L3NwYW4+JztcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIGBcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtZmxleC1jb2wgY3FhLWdhcC0wLjVcIj5cbiAgICAgICAgICAgICAgJHt0aGlzLnJlbmRlclN0YXR1c0ljb24ocm93LnJ1bkJTdGF0dXMpfVxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNxYS10ZXh0LVsxMHB4XSBjcWEtdGV4dC1bIzYzNjM2M11cIj4ke3RoaXMuZm9ybWF0RHVyYXRpb24ocm93LnJ1bkJEdXJhdGlvbiB8fCAwKX08L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICBgO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBmaWVsZElkOiAnY2hhbmdlJyxcbiAgICAgICAgZmllbGROYW1lOiAnQ2hhbmdlJyxcbiAgICAgICAgZmllbGRWYWx1ZTogJ2NoYW5nZScsXG4gICAgICAgIGlzU2hvdzogdHJ1ZSxcbiAgICAgICAgd2VpZ2h0OiAxLjUsXG4gICAgICAgIHJlbmRlcjogKHJvdzogU3RlcENvbXBhcmlzb24pID0+IHtcbiAgICAgICAgICBjb25zdCBjaGFuZ2VMYWJlbHM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gICAgICAgICAgICAnVU5DSEFOR0VEJzogJ1VuY2hhbmdlZCcsXG4gICAgICAgICAgICAnU1RBVFVTX0NIQU5HRUQnOiAnU3RhdHVzIENoYW5nZWQnLFxuICAgICAgICAgICAgJ1RJTUlOR19DSEFOR0VEJzogJ1RpbWluZyBDaGFuZ2VkJyxcbiAgICAgICAgICAgICdBRERFRCc6ICdBZGRlZCcsXG4gICAgICAgICAgICAnUkVNT1ZFRCc6ICdSZW1vdmVkJ1xuICAgICAgICAgIH07XG4gICAgICAgICAgY29uc3QgY2hhbmdlQ29sb3JzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAgICAgICAgICAgJ1VOQ0hBTkdFRCc6ICcjNkI3MjgwJyxcbiAgICAgICAgICAgICdTVEFUVVNfQ0hBTkdFRCc6ICcjRjU5RTBCJyxcbiAgICAgICAgICAgICdUSU1JTkdfQ0hBTkdFRCc6ICcjM0I4MkY2JyxcbiAgICAgICAgICAgICdBRERFRCc6ICcjMTBCOTgxJyxcbiAgICAgICAgICAgICdSRU1PVkVEJzogJyNFRjQ0NDQnXG4gICAgICAgICAgfTtcbiAgICAgICAgICBjb25zdCBjaGFuZ2VCZ0NvbG9yczogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgICAgICAgICAgICdVTkNIQU5HRUQnOiAnI0YzRjRGNicsXG4gICAgICAgICAgICAnU1RBVFVTX0NIQU5HRUQnOiAnI0ZFRjNDNycsXG4gICAgICAgICAgICAnVElNSU5HX0NIQU5HRUQnOiAnI0RCRUFGRScsXG4gICAgICAgICAgICAnQURERUQnOiAnI0QxRkFFNScsXG4gICAgICAgICAgICAnUkVNT1ZFRCc6ICcjRkVFMkUyJ1xuICAgICAgICAgIH07XG5cbiAgICAgICAgICBjb25zdCBsYWJlbCA9IGNoYW5nZUxhYmVsc1tyb3cuY2hhbmdlXSB8fCByb3cuY2hhbmdlO1xuICAgICAgICAgIGNvbnN0IGNvbG9yID0gY2hhbmdlQ29sb3JzW3Jvdy5jaGFuZ2VdIHx8ICcjNkI3MjgwJztcbiAgICAgICAgICBjb25zdCBiZ0NvbG9yID0gY2hhbmdlQmdDb2xvcnNbcm93LmNoYW5nZV0gfHwgJyNGM0Y0RjYnO1xuXG4gICAgICAgICAgcmV0dXJuIGBcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3FhLWlubGluZS1mbGV4IGNxYS1pdGVtcy1jZW50ZXIgY3FhLWp1c3RpZnktY2VudGVyIGNxYS1weC0yIGNxYS1weS0wLjUgY3FhLXJvdW5kZWQtZnVsbCBjcWEtdGV4dC1bMTBweF0gY3FhLWZvbnQtc2VtaWJvbGQgY3FhLXctbWF4XCIgXG4gICAgICAgICAgICAgICAgICBzdHlsZT1cImJhY2tncm91bmQtY29sb3I6ICR7YmdDb2xvcn07IGNvbG9yOiAke2NvbG9yfTtcIj5cbiAgICAgICAgICAgICAgJHtsYWJlbH1cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICBgO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgXTtcbiAgfVxuXG4gIHByaXZhdGUgcmVuZGVyU3RhdHVzSWNvbihzdGF0dXM6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3QgdXBwZXJTdGF0dXMgPSBzdGF0dXMudG9VcHBlckNhc2UoKTtcbiAgICBpZiAodXBwZXJTdGF0dXMgPT09ICdTVUNDRVNTJykge1xuICAgICAgcmV0dXJuIGBcbiAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiPlxuICAgICAgICA8cGF0aCBkPVwiTTcuOTk5OTggMTQuNjY2M0MxMS42ODE5IDE0LjY2NjMgMTQuNjY2NiAxMS42ODE2IDE0LjY2NjYgNy45OTk2N0MxNC42NjY2IDQuMzE3NzggMTEuNjgxOSAxLjMzMzAxIDcuOTk5OTggMS4zMzMwMUM0LjMxODA4IDEuMzMzMDEgMS4zMzMzMSA0LjMxNzc4IDEuMzMzMzEgNy45OTk2N0MxLjMzMzMxIDExLjY4MTYgNC4zMTgwOCAxNC42NjYzIDcuOTk5OTggMTQuNjY2M1pcIiBzdHJva2U9XCIjMDBDOTUwXCIgc3Ryb2tlLXdpZHRoPVwiMS4zMzMzM1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cbiAgICAgICAgPHBhdGggZD1cIk02IDguMDAwMzNMNy4zMzMzMyA5LjMzMzY2TDEwIDYuNjY2OTlcIiBzdHJva2U9XCIjMDBDOTUwXCIgc3Ryb2tlLXdpZHRoPVwiMS4zMzMzM1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cbiAgICAgIDwvc3ZnPmA7XG4gICAgfSBlbHNlIGlmICh1cHBlclN0YXR1cyA9PT0gJ0ZBSUxVUkUnKSB7XG4gICAgICByZXR1cm4gYFxuICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCIgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCI+XG4gICAgICAgIDxwYXRoIGQ9XCJNOC4wMDAwNCAxNC42NjczQzExLjY4MTkgMTQuNjY3MyAxNC42NjY3IDExLjY4MjUgMTQuNjY2NyA4LjAwMDY1QzE0LjY2NjcgNC4zMTg3NSAxMS42ODE5IDEuMzMzOTggOC4wMDAwNCAxLjMzMzk4QzQuMzE4MTQgMS4zMzM5OCAxLjMzMzM3IDQuMzE4NzUgMS4zMzMzNyA4LjAwMDY1QzEuMzMzMzcgMTEuNjgyNSA0LjMxODE0IDE0LjY2NzMgOC4wMDAwNCAxNC42NjczWlwiIHN0cm9rZT1cIiNGQjJDMzZcIiBzdHJva2Utd2lkdGg9XCIxLjMzMzMzXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxuICAgICAgICA8cGF0aCBkPVwiTTEwIDZMNiAxMFwiIHN0cm9rZT1cIiNGQjJDMzZcIiBzdHJva2Utd2lkdGg9XCIxLjMzMzMzXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxuICAgICAgICA8cGF0aCBkPVwiTTYgNkwxMCAxMFwiIHN0cm9rZT1cIiNGQjJDMzZcIiBzdHJva2Utd2lkdGg9XCIxLjMzMzMzXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxuICAgICAgPC9zdmc+YDtcbiAgICB9IGVsc2UgaWYgKHVwcGVyU3RhdHVzID09PSAnQUJPUlRFRCcgfHwgdXBwZXJTdGF0dXMgPT09ICdTVE9QUEVEJyB8fCB1cHBlclN0YXR1cyA9PT0gJ05PVF9FWEVDVVRFRCcpIHtcbiAgICAgIHJldHVybiBgXG4gICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIiB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgPHBhdGggZD1cIk04LjAwMDA0IDE0LjY2NzNDMTEuNjgxOSAxNC42NjczIDE0LjY2NjcgMTEuNjgyNSAxNC42NjY3IDguMDAwNjVDMTQuNjY2NyA0LjMxODc1IDExLjY4MTkgMS4zMzM5OCA4LjAwMDA0IDEuMzMzOThDNC4zMTgxNCAxLjMzMzk4IDEuMzMzMzcgNC4zMTg3NSAxLjMzMzM3IDguMDAwNjVDMS4zMzMzNyAxMS42ODI1IDQuMzE4MTQgMTQuNjY3MyA4LjAwMDA0IDE0LjY2NzNaXCIgc3Ryb2tlPVwiIzlDQTNBRlwiIHN0cm9rZS13aWR0aD1cIjEuMzMzMzNcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XG4gICAgICAgIDxwYXRoIGQ9XCJNNiA4SDEwXCIgc3Ryb2tlPVwiIzlDQTNBRlwiIHN0cm9rZS13aWR0aD1cIjEuMzMzMzNcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XG4gICAgICA8L3N2Zz5gO1xuICAgIH0gZWxzZSBpZiAodXBwZXJTdGF0dXMgPT09ICdRVUVVRUQnKSB7XG4gICAgICByZXR1cm4gYFxuICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCIgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCIgY2xhc3M9XCJjcWEtYW5pbWF0ZS1zcGluXCI+XG4gICAgICAgIDxwYXRoIGQ9XCJNOCAxLjMzMzMxVjMuOTk5OThcIiBzdHJva2U9XCIjM0I4MkY2XCIgc3Ryb2tlLXdpZHRoPVwiMS4zMzMzM1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cbiAgICAgICAgPHBhdGggZD1cIk04IDEyVjE0LjY2NjZcIiBzdHJva2U9XCIjM0I4MkY2XCIgc3Ryb2tlLXdpZHRoPVwiMS4zMzMzM1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cbiAgICAgICAgPHBhdGggZD1cIk0xLjMzMzM3IDhINC4wMDAwNFwiIHN0cm9rZT1cIiMzQjgyRjZcIiBzdHJva2Utd2lkdGg9XCIxLjMzMzMzXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxuICAgICAgICA8cGF0aCBkPVwiTTEyIDhIMTQuNjY2N1wiIHN0cm9rZT1cIiMzQjgyRjZcIiBzdHJva2Utd2lkdGg9XCIxLjMzMzMzXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxuICAgICAgICA8cGF0aCBkPVwiTTMuMjg2NjIgMy4yODY2Mkw1LjE3MzI5IDUuMTczMjlcIiBzdHJva2U9XCIjM0I4MkY2XCIgc3Ryb2tlLXdpZHRoPVwiMS4zMzMzM1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cbiAgICAgICAgPHBhdGggZD1cIk0xMC44MjY3IDEwLjgyNjdMMTIuNzEzMyAxMi43MTMzXCIgc3Ryb2tlPVwiIzNCODJGNlwiIHN0cm9rZS13aWR0aD1cIjEuMzMzMzNcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XG4gICAgICAgIDxwYXRoIGQ9XCJNMy4yODY2MiAxMi43MTMzTDUuMTczMjkgMTAuODI2N1wiIHN0cm9rZT1cIiMzQjgyRjZcIiBzdHJva2Utd2lkdGg9XCIxLjMzMzMzXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxuICAgICAgICA8cGF0aCBkPVwiTTEwLjgyNjcgNS4xNzMyOUwxMi43MTMzIDMuMjg2NjJcIiBzdHJva2U9XCIjM0I4MkY2XCIgc3Ryb2tlLXdpZHRoPVwiMS4zMzMzM1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cbiAgICAgIDwvc3ZnPmA7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBgPHNwYW4gY2xhc3M9XCJjcWEtdGV4dC14cyBjcWEtdGV4dC1bIzYzNjM2M11cIj4g4oCUIDwvc3Bhbj5gO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZm9ybWF0RHVyYXRpb24obWlsbGlzZWNvbmRzOiBudW1iZXIpOiBzdHJpbmcge1xuICAgIGNvbnN0IHNlY29uZHMgPSBtaWxsaXNlY29uZHMgLyAxMDAwO1xuICAgIGlmIChzZWNvbmRzIDwgNjApIHtcbiAgICAgIHJldHVybiBgJHtzZWNvbmRzLnRvRml4ZWQoMSl9c2A7XG4gICAgfVxuICAgIGNvbnN0IG1pbnV0ZXMgPSBNYXRoLmZsb29yKHNlY29uZHMgLyA2MCk7XG4gICAgY29uc3QgcmVtYWluaW5nU2Vjb25kcyA9IE1hdGguZmxvb3Ioc2Vjb25kcyAlIDYwKTtcbiAgICByZXR1cm4gYCR7bWludXRlc31tICR7cmVtYWluaW5nU2Vjb25kc31zYDtcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlQ29tcGFyaXNvbkRhdGEoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmNvbXBhcmlzb25EYXRhKSByZXR1cm47XG5cbiAgICB0aGlzLmNvbXBhcmlzb25TdW1tYXJ5ID0gdGhpcy5jb21wYXJpc29uRGF0YS5zdW1tYXJ5O1xuICAgIHRoaXMuc3RlcENvbXBhcmlzb25zID0gdGhpcy5jb21wYXJpc29uRGF0YS5zdGVwc0NvbXBhcmlzb247XG4gICAgdGhpcy5wYWdlSW5kZXggPSAwO1xuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgb25QYWdlQ2hhbmdlKGV2ZW50OiB7IHBhZ2VJbmRleDogbnVtYmVyOyBwYWdlU2l6ZTogbnVtYmVyIH0pOiB2b2lkIHtcbiAgICB0aGlzLnBhZ2VJbmRleCA9IGV2ZW50LnBhZ2VJbmRleDtcbiAgICB0aGlzLnBhZ2VTaXplID0gZXZlbnQucGFnZVNpemU7XG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gIH1cbiAgXG4gIGdldCBpc0VtcHR5U3RhdGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICF0aGlzLnNob3dDb21wYXJpc29uIHx8ICF0aGlzLnN0ZXBDb21wYXJpc29ucyB8fCB0aGlzLnN0ZXBDb21wYXJpc29ucy5sZW5ndGggPT09IDA7XG4gIH1cblxuICBvbkNvbXBhcmVDbGljaygpOiB2b2lkIHtcbiAgICBjb25zdCBydW5BSWQgPSB0aGlzLmZvcm0uZ2V0KCdydW5BJyk/LnZhbHVlO1xuICAgIGNvbnN0IHJ1bkJJZCA9IHRoaXMuZm9ybS5nZXQoJ3J1bkInKT8udmFsdWU7XG5cbiAgICBpZiAocnVuQUlkICYmIHJ1bkJJZCAmJiAhdGhpcy5pc0NvbXBhcmluZ1J1bnMpIHtcbiAgICAgIHRoaXMuY29tcGFyZVJ1bnMuZW1pdCh7XG4gICAgICAgIHJ1bkFJZCxcbiAgICAgICAgcnVuQklkXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBnZXQgY2FuQ29tcGFyZSgpOiBib29sZWFuIHtcbiAgICBjb25zdCBydW5BSWQgPSB0aGlzLmZvcm0uZ2V0KCdydW5BJyk/LnZhbHVlO1xuICAgIGNvbnN0IHJ1bkJJZCA9IHRoaXMuZm9ybS5nZXQoJ3J1bkInKT8udmFsdWU7XG4gICAgcmV0dXJuICEhKHJ1bkFJZCAmJiBydW5CSWQgJiYgIXRoaXMuaXNDb21wYXJpbmdSdW5zKTtcbiAgfVxuXG4gIGdldCBydW5BU3RhdHVzQ29sb3IoKTogc3RyaW5nIHtcbiAgICBpZiAoIXRoaXMuc2VsZWN0ZWRSdW5BKSByZXR1cm4gJyM2QjcyODAnO1xuICAgIGNvbnN0IGNvbG9yczogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgICAgICdTVUNDRVNTJzogJyMwQjlENjgnLFxuICAgICAgJ0ZBSUxVUkUnOiAnI0ZCMkMzNicsXG4gICAgICAnQUJPUlRFRCc6ICcjRjU5RTBCJyxcbiAgICAgICdRVUVVRUQnOiAnIzNCODJGNicsXG4gICAgICAnTk9UX0VYRUNVVEVEJzogJyM2QjcyODAnLFxuICAgICAgJ1NUT1BQRUQnOiAnIzZCNzI4MCdcbiAgICB9O1xuICAgIHJldHVybiBjb2xvcnNbdGhpcy5zZWxlY3RlZFJ1bkEucmVzdWx0XSB8fCAnIzZCNzI4MCc7XG4gIH1cblxuICBnZXQgcnVuQlN0YXR1c0NvbG9yKCk6IHN0cmluZyB7XG4gICAgaWYgKCF0aGlzLnNlbGVjdGVkUnVuQikgcmV0dXJuICcjNkI3MjgwJztcbiAgICBjb25zdCBjb2xvcnM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gICAgICAnU1VDQ0VTUyc6ICcjMEI5RDY4JyxcbiAgICAgICdGQUlMVVJFJzogJyNGQjJDMzYnLFxuICAgICAgJ0FCT1JURUQnOiAnI0Y1OUUwQicsXG4gICAgICAnUVVFVUVEJzogJyMzQjgyRjYnLFxuICAgICAgJ05PVF9FWEVDVVRFRCc6ICcjNkI3MjgwJyxcbiAgICAgICdTVE9QUEVEJzogJyM2QjcyODAnXG4gICAgfTtcbiAgICByZXR1cm4gY29sb3JzW3RoaXMuc2VsZWN0ZWRSdW5CLnJlc3VsdF0gfHwgJyM2QjcyODAnO1xuICB9XG5cbiAgZ2V0IHJ1bkFTdGF0dXNCb3JkZXJDb2xvcigpOiBzdHJpbmcge1xuICAgIGlmICghdGhpcy5zZWxlY3RlZFJ1bkEpIHJldHVybiAnI0YzRjRGNic7XG4gICAgY29uc3QgY29sb3JzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAgICAgJ1NVQ0NFU1MnOiAnI0NGRjJFNScsXG4gICAgICAnRkFJTFVSRSc6ICcjRkNEOUQ5JyxcbiAgICAgICdBQk9SVEVEJzogJyNGRUYzQzcnLFxuICAgICAgJ1FVRVVFRCc6ICcjREJFQUZFJyxcbiAgICAgICdOT1RfRVhFQ1VURUQnOiAnI0YzRjRGNicsXG4gICAgICAnU1RPUFBFRCc6ICcjRjNGNEY2J1xuICAgIH07XG4gICAgcmV0dXJuIGNvbG9yc1t0aGlzLnNlbGVjdGVkUnVuQS5yZXN1bHRdIHx8ICcjRjNGNEY2JztcbiAgfVxuXG4gIGdldCBydW5CU3RhdHVzQm9yZGVyQ29sb3IoKTogc3RyaW5nIHtcbiAgICBpZiAoIXRoaXMuc2VsZWN0ZWRSdW5CKSByZXR1cm4gJyNGM0Y0RjYnO1xuICAgIGNvbnN0IGNvbG9yczogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgICAgICdTVUNDRVNTJzogJyNDRkYyRTUnLFxuICAgICAgJ0ZBSUxVUkUnOiAnI0ZDRDlEOScsXG4gICAgICAnQUJPUlRFRCc6ICcjRkVGM0M3JyxcbiAgICAgICdRVUVVRUQnOiAnI0RCRUFGRScsXG4gICAgICAnTk9UX0VYRUNVVEVEJzogJyNGM0Y0RjYnLFxuICAgICAgJ1NUT1BQRUQnOiAnI0YzRjRGNidcbiAgICB9O1xuICAgIHJldHVybiBjb2xvcnNbdGhpcy5zZWxlY3RlZFJ1bkIucmVzdWx0XSB8fCAnI0YzRjRGNic7XG4gIH1cblxuICBnZXQgcnVuQVN0YXR1c0JnQ29sb3IoKTogc3RyaW5nIHtcbiAgICBpZiAoIXRoaXMuc2VsZWN0ZWRSdW5BKSByZXR1cm4gJyNGM0Y0RjYnO1xuICAgIGNvbnN0IGNvbG9yczogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgICAgICdTVUNDRVNTJzogJyMwREJEN0QxQScsXG4gICAgICAnRkFJTFVSRSc6ICcjRUUzRjNGMUEnLFxuICAgICAgJ0FCT1JURUQnOiAnI0ZFRjNDNycsXG4gICAgICAnUVVFVUVEJzogJyNEQkVBRkUnLFxuICAgICAgJ05PVF9FWEVDVVRFRCc6ICcjRjNGNEY2JyxcbiAgICAgICdTVE9QUEVEJzogJyNGM0Y0RjYnXG4gICAgfTtcbiAgICByZXR1cm4gY29sb3JzW3RoaXMuc2VsZWN0ZWRSdW5BLnJlc3VsdF0gfHwgJyNGM0Y0RjYnO1xuICB9XG5cbiAgZ2V0IHJ1bkJTdGF0dXNCZ0NvbG9yKCk6IHN0cmluZyB7XG4gICAgaWYgKCF0aGlzLnNlbGVjdGVkUnVuQikgcmV0dXJuICcjRjNGNEY2JztcbiAgICBjb25zdCBjb2xvcnM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gICAgICAnU1VDQ0VTUyc6ICcjMERCRDdEMUEnLFxuICAgICAgJ0ZBSUxVUkUnOiAnI0VFM0YzRjFBJyxcbiAgICAgICdBQk9SVEVEJzogJyNGRUYzQzcnLFxuICAgICAgJ1FVRVVFRCc6ICcjREJFQUZFJyxcbiAgICAgICdOT1RfRVhFQ1VURUQnOiAnI0YzRjRGNicsXG4gICAgICAnU1RPUFBFRCc6ICcjRjNGNEY2J1xuICAgIH07XG4gICAgcmV0dXJuIGNvbG9yc1t0aGlzLnNlbGVjdGVkUnVuQi5yZXN1bHRdIHx8ICcjRjNGNEY2JztcbiAgfVxuXG4gIGZvcm1hdFRpbWUodGltZXN0YW1wOiBudW1iZXIpOiBzdHJpbmcge1xuICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZSh0aW1lc3RhbXApO1xuICAgIHJldHVybiBkYXRlLnRvTG9jYWxlU3RyaW5nKCdlbi1VUycsIHtcbiAgICAgIG1vbnRoOiAnc2hvcnQnLFxuICAgICAgZGF5OiAnbnVtZXJpYycsXG4gICAgICBob3VyOiAnMi1kaWdpdCcsXG4gICAgICBtaW51dGU6ICcyLWRpZ2l0J1xuICAgIH0pO1xuICB9XG5cbiAgZm9ybWF0RHVyYXRpb25TdHJpbmcobWlsbGlzZWNvbmRzOiBudW1iZXIpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmZvcm1hdER1cmF0aW9uKG1pbGxpc2Vjb25kcyk7XG4gIH1cblxuICBnZXQgc2hvd0NvbXBhcmlzb24oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhKHRoaXMuY29tcGFyaXNvbkRhdGEgJiYgdGhpcy5jb21wYXJpc29uU3VtbWFyeSk7XG4gIH1cblxuICBnZXQgcnVuQVN0YXR1c0xhYmVsKCk6IHN0cmluZyB7XG4gICAgaWYgKCF0aGlzLnNlbGVjdGVkUnVuQSkgcmV0dXJuICcnO1xuICAgIGNvbnN0IGxhYmVsczogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgICAgICdTVUNDRVNTJzogJ1Bhc3NlZCcsXG4gICAgICAnRkFJTFVSRSc6ICdGYWlsZWQnLFxuICAgICAgJ0FCT1JURUQnOiAnQWJvcnRlZCcsXG4gICAgICAnUVVFVUVEJzogJ1F1ZXVlZCcsXG4gICAgICAnTk9UX0VYRUNVVEVEJzogJ05vdCBFeGVjdXRlZCcsXG4gICAgICAnU1RPUFBFRCc6ICdTdG9wcGVkJ1xuICAgIH07XG4gICAgcmV0dXJuIGxhYmVsc1t0aGlzLnNlbGVjdGVkUnVuQS5yZXN1bHRdIHx8IHRoaXMuc2VsZWN0ZWRSdW5BLnJlc3VsdDtcbiAgfVxuXG4gIGdldCBydW5CU3RhdHVzTGFiZWwoKTogc3RyaW5nIHtcbiAgICBpZiAoIXRoaXMuc2VsZWN0ZWRSdW5CKSByZXR1cm4gJyc7XG4gICAgY29uc3QgbGFiZWxzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAgICAgJ1NVQ0NFU1MnOiAnUGFzc2VkJyxcbiAgICAgICdGQUlMVVJFJzogJ0ZhaWxlZCcsXG4gICAgICAnQUJPUlRFRCc6ICdBYm9ydGVkJyxcbiAgICAgICdRVUVVRUQnOiAnUXVldWVkJyxcbiAgICAgICdOT1RfRVhFQ1VURUQnOiAnTm90IEV4ZWN1dGVkJyxcbiAgICAgICdTVE9QUEVEJzogJ1N0b3BwZWQnXG4gICAgfTtcbiAgICByZXR1cm4gbGFiZWxzW3RoaXMuc2VsZWN0ZWRSdW5CLnJlc3VsdF0gfHwgdGhpcy5zZWxlY3RlZFJ1bkIucmVzdWx0O1xuICB9XG59XG5cbiIsIjxkaXYgY2xhc3M9XCJjcWEtdWktcm9vdFwiIHN0eWxlPVwiZGlzcGxheTogYmxvY2s7IHdpZHRoOiAxMDAlO1wiPlxuICA8ZGl2IGNsYXNzPVwiY3FhLWZsZXggY3FhLWZsZXgtY29sXCI+XG4gICAgPGRpdiBjbGFzcz1cImNxYS1mbGV4IGNxYS1mbGV4LWNvbCBjcWEtZ2FwLTMgc206Y3FhLWdhcC00IGNxYS1weS0zIHNtOmNxYS1weS00IGNxYS1weC00IHNtOmNxYS1weC02XCIgc3R5bGU9XCJib3JkZXItYm90dG9tOiAxcHggc29saWQgI0U0RTRFNFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY3FhLWdyaWQgY3FhLWdyaWQtY29scy0xIG1kOmNxYS1ncmlkLWNvbHMtMiBjcWEtZ2FwLTQgbWQ6Y3FhLWdhcC0xNiBjcWEtcmVsYXRpdmVcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtZmxleC1jb2wgY3FhLWdhcC0xLjVcIj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjcWEtdGV4dC1bMTJweF0gY3FhLWZvbnQtc2VtaWJvbGQgY3FhLXRleHQtWyM2MzYzNjNdXCI+UnVuIEEgKEJhc2UpPC9zcGFuPlxuICAgICAgICAgICAgICA8Y3FhLWR5bmFtaWMtc2VsZWN0IFxuICAgICAgICAgICAgICAgIFtmb3JtXT1cImZvcm1cIiBcbiAgICAgICAgICAgICAgICBbY29uZmlnXT1cInJ1bkFTZWxlY3RDb25maWdcIlxuICAgICAgICAgICAgICAgIChzZWFyY2hDaGFuZ2UpPVwib25TZWFyY2hDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgKGxvYWRNb3JlKT1cIm9uTG9hZE1vcmUoJGV2ZW50KVwiPlxuICAgICAgICAgICAgICA8L2NxYS1keW5hbWljLXNlbGVjdD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3FhLWhpZGRlbiBtZDpjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1qdXN0aWZ5LWNlbnRlclwiIHN0eWxlPVwicG9zaXRpb246IGFic29sdXRlOyBsZWZ0OiA1MCU7IHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTsgdG9wOiAzMHB4O1wiPlxuICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiBmaWxsPVwibm9uZVwiPlxuICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTQuMTY2NjkgMTBIMTUuODMzNFwiIHN0cm9rZT1cIiM2MzYzNjNcIiBzdHJva2Utd2lkdGg9XCIxLjY2NjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxuICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTEwIDQuMTY2OTlMMTUuODMzMyAxMC4wMDAzTDEwIDE1LjgzMzdcIiBzdHJva2U9XCIjNjM2MzYzXCIgc3Ryb2tlLXdpZHRoPVwiMS42NjY2N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cbiAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgIFxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNxYS1mbGV4IGNxYS1mbGV4LWNvbCBjcWEtZ2FwLTEuNVwiPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNxYS10ZXh0LVsxMnB4XSBjcWEtZm9udC1zZW1pYm9sZCBjcWEtdGV4dC1bIzYzNjM2M11cIj5SdW4gQiAoQ29tcGFyZSk8L3NwYW4+XG4gICAgICAgICAgICAgIDxjcWEtZHluYW1pYy1zZWxlY3QgXG4gICAgICAgICAgICAgICAgW2Zvcm1dPVwiZm9ybVwiIFxuICAgICAgICAgICAgICAgIFtjb25maWddPVwicnVuQlNlbGVjdENvbmZpZ1wiXG4gICAgICAgICAgICAgICAgKHNlYXJjaENoYW5nZSk9XCJvblNlYXJjaENoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAobG9hZE1vcmUpPVwib25Mb2FkTW9yZSgkZXZlbnQpXCI+XG4gICAgICAgICAgICAgIDwvY3FhLWR5bmFtaWMtc2VsZWN0PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICBcbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2VsZWN0ZWRSdW5BIHx8IHNlbGVjdGVkUnVuQlwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNxYS1ncmlkIGNxYS1ncmlkLWNvbHMtMSBtZDpjcWEtZ3JpZC1jb2xzLTIgY3FhLWdhcC00XCI+XG4gICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJzZWxlY3RlZFJ1bkFcIiBcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY3FhLWJnLXdoaXRlIGNxYS1yb3VuZGVkLWxnIGNxYS1wLTMgY3FhLWJvcmRlciBjcWEtYm9yZGVyLXNvbGlkXCJcbiAgICAgICAgICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kLWNvbG9yXT1cInJ1bkFTdGF0dXNCZ0NvbG9yXCJcbiAgICAgICAgICAgICAgICAgIFtzdHlsZS5ib3JkZXItY29sb3JdPVwicnVuQVN0YXR1c0JvcmRlckNvbG9yXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNxYS1mbGV4IGNxYS1pdGVtcy1zdGFydCBjcWEtanVzdGlmeS1iZXR3ZWVuIGNxYS1tYi0yXCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3FhLWZsZXggY3FhLWZsZXgtY29sIGNxYS1nYXAtMVwiPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNxYS10ZXh0LVsxMnB4XSBjcWEtZm9udC1zZW1pYm9sZCBjcWEtdGV4dC1bIzBCMEIwQl1cIj5SdW4gI3t7IHNlbGVjdGVkUnVuQS5pZCB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjcWEtaW5saW5lLWZsZXggY3FhLWl0ZW1zLWNlbnRlciBjcWEtanVzdGlmeS1jZW50ZXIgY3FhLXB4LTIgY3FhLXB5LTAuNSBjcWEtcm91bmRlZC1mdWxsIGNxYS10ZXh0LVsxMHB4XSBjcWEtZm9udC1tZWRpdW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmQtY29sb3JdPVwicnVuQVN0YXR1c0NvbG9yXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS5jb2xvcl09XCInI0ZGRkZGRidcIj5cbiAgICAgICAgICAgICAgICAgICAge3sgcnVuQVN0YXR1c0xhYmVsIH19XG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNxYS1ncmlkIGNxYS1ncmlkLWNvbHMtMiBjcWEtZ2FwLTNcIj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1nYXAtMVwiPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNxYS10ZXh0LXhzIGNxYS10ZXh0LVsjNjM2MzYzXVwiPlRpbWU6IDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjcWEtdGV4dC14cyBjcWEtdGV4dC1bIzBCMEIwQl0gY3FhLWZvbnQtbWVkaXVtXCI+e3sgZm9ybWF0VGltZShzZWxlY3RlZFJ1bkEuc3RhcnRUaW1lKSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNxYS1mbGV4IGNxYS1pdGVtcy1jZW50ZXIgY3FhLWdhcC0xXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3FhLXRleHQteHMgY3FhLXRleHQtWyM2MzYzNjNdXCI+RHVyYXRpb246IDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjcWEtdGV4dC14cyBjcWEtdGV4dC1bIzBCMEIwQl0gY3FhLWZvbnQtbWVkaXVtXCI+e3sgZm9ybWF0RHVyYXRpb25TdHJpbmcoc2VsZWN0ZWRSdW5BLmR1cmF0aW9uKSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNxYS1mbGV4IGNxYS1pdGVtcy1jZW50ZXIgY3FhLWdhcC0xXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3FhLXRleHQteHMgY3FhLXRleHQtWyM2MzYzNjNdXCI+RW52OiA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3FhLXRleHQteHMgY3FhLXRleHQtWyMwQjBCMEJdIGNxYS1mb250LW1lZGl1bVwiPnt7IHNlbGVjdGVkUnVuQS5lbnZpcm9ubWVudCB8fCAn4oCUJyB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNxYS1mbGV4IGNxYS1pdGVtcy1jZW50ZXIgY3FhLWdhcC0xXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3FhLXRleHQteHMgY3FhLXRleHQtWyM2MzYzNjNdXCI+RGV2aWNlOiA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3FhLXRleHQteHMgY3FhLXRleHQtWyMwQjBCMEJdIGNxYS1mb250LW1lZGl1bVwiPnt7IHNlbGVjdGVkUnVuQS5kZXZpY2UgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIFxuICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwic2VsZWN0ZWRSdW5CXCIgXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImNxYS1iZy13aGl0ZSBjcWEtcm91bmRlZC1sZyBjcWEtcC0zIGNxYS1ib3JkZXIgY3FhLWJvcmRlci1zb2xpZFwiXG4gICAgICAgICAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZC1jb2xvcl09XCJydW5CU3RhdHVzQmdDb2xvclwiXG4gICAgICAgICAgICAgICAgICBbc3R5bGUuYm9yZGVyLWNvbG9yXT1cInJ1bkJTdGF0dXNCb3JkZXJDb2xvclwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtaXRlbXMtc3RhcnQgY3FhLWp1c3RpZnktYmV0d2VlbiBjcWEtbWItMlwiPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNxYS1mbGV4IGNxYS1mbGV4LWNvbCBjcWEtZ2FwLTFcIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjcWEtdGV4dC1bMTJweF0gY3FhLWZvbnQtc2VtaWJvbGQgY3FhLXRleHQtWyMwQjBCMEJdXCI+UnVuICN7eyBzZWxlY3RlZFJ1bkIuaWQgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3FhLWlubGluZS1mbGV4IGNxYS1pdGVtcy1jZW50ZXIgY3FhLWp1c3RpZnktY2VudGVyIGNxYS1weC0yIGNxYS1weS0wLjUgY3FhLXJvdW5kZWQtZnVsbCBjcWEtdGV4dC1bMTBweF0gY3FhLWZvbnQtbWVkaXVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kLWNvbG9yXT1cInJ1bkJTdGF0dXNDb2xvclwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUuY29sb3JdPVwiJyNGRkZGRkYnXCI+XG4gICAgICAgICAgICAgICAgICAgIHt7IHJ1bkJTdGF0dXNMYWJlbCB9fVxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjcWEtZ3JpZCBjcWEtZ3JpZC1jb2xzLTIgY3FhLWdhcC0zXCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3FhLWZsZXggY3FhLWl0ZW1zLWNlbnRlciBjcWEtZ2FwLTFcIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjcWEtdGV4dC14cyBjcWEtdGV4dC1bIzYzNjM2M11cIj5UaW1lOiA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3FhLXRleHQteHMgY3FhLXRleHQtWyMwQjBCMEJdIGNxYS1mb250LW1lZGl1bVwiPnt7IGZvcm1hdFRpbWUoc2VsZWN0ZWRSdW5CLnN0YXJ0VGltZSkgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1nYXAtMVwiPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNxYS10ZXh0LXhzIGNxYS10ZXh0LVsjNjM2MzYzXVwiPkR1cmF0aW9uOiA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3FhLXRleHQteHMgY3FhLXRleHQtWyMwQjBCMEJdIGNxYS1mb250LW1lZGl1bVwiPnt7IGZvcm1hdER1cmF0aW9uU3RyaW5nKHNlbGVjdGVkUnVuQi5kdXJhdGlvbikgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1nYXAtMVwiPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNxYS10ZXh0LXhzIGNxYS10ZXh0LVsjNjM2MzYzXVwiPkVudjogPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNxYS10ZXh0LXhzIGNxYS10ZXh0LVsjMEIwQjBCXSBjcWEtZm9udC1tZWRpdW1cIj57eyBzZWxlY3RlZFJ1bkIuZW52aXJvbm1lbnQgfHwgJ+KAlCcgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1nYXAtMVwiPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNxYS10ZXh0LXhzIGNxYS10ZXh0LVsjNjM2MzYzXVwiPkRldmljZTogPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNxYS10ZXh0LXhzIGNxYS10ZXh0LVsjMEIwQjBCXSBjcWEtZm9udC1tZWRpdW1cIj57eyBzZWxlY3RlZFJ1bkIuZGV2aWNlIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3FhLXctZnVsbCBjcWEtZmxleCBjcWEtanVzdGlmeS1jZW50ZXJcIj5cbiAgICAgICAgICAgIDxjcWEtYnV0dG9uIFxuICAgICAgICAgICAgICB2YXJpYW50PVwiZmlsbGVkXCIgXG4gICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhY2FuQ29tcGFyZVwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJvbkNvbXBhcmVDbGljaygpXCI+XG4gICAgICAgICAgICAgIHt7IGlzQ29tcGFyaW5nUnVucyA/ICdDb21wYXJpbmcuLi4nIDogJ0NvbXBhcmUgUnVucycgfX1cbiAgICAgICAgICAgIDwvY3FhLWJ1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgKm5nSWY9XCJzaG93Q29tcGFyaXNvbiAmJiBjb21wYXJpc29uU3VtbWFyeSAmJiBzdGVwQ29tcGFyaXNvbnMgJiYgc3RlcENvbXBhcmlzb25zLmxlbmd0aCA+IDBcIiBcbiAgICAgICAgIGNsYXNzPVwiY3FhLWJnLXdoaXRlIGNxYS1wdC0zIGNxYS1wYi0wIHNtOmNxYS1wYi0xIHNtOmNxYS1wdC00IGNxYS1weC0zIHNtOmNxYS1weC02IGNxYS1mbGV4IGNxYS1pdGVtcy1jZW50ZXIgY3FhLWdhcC0zIHNtOmNxYS1nYXAtNFwiPlxuICAgICAgICAgPHAgY2xhc3M9XCJjcWEtdGV4dC1bMTJweF0gY3FhLXRleHQtWyM2MzYzNjNdXCI+U3VtbWFyeTo8L3A+XG4gICAgICA8ZGl2IGNsYXNzPVwiY3FhLWZsZXggY3FhLWZsZXgtd3JhcCBjcWEtaXRlbXMtY2VudGVyIGNxYS1nYXAtM1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY3FhLWZsZXggY3FhLWl0ZW1zLWNlbnRlciBjcWEtZ2FwLTEuNVwiPlxuICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImNxYS13LVsxNHB4XSBjcWEtaC1bMTRweF0gY3FhLXRleHQtc21cIj5cbiAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTRcIiBoZWlnaHQ9XCIxNFwiIHZpZXdCb3g9XCIwIDAgMTQgMTRcIiBmaWxsPVwibm9uZVwiPlxuICAgICAgICAgICAgICA8cGF0aCBkPVwiTTIuOTE2NjkgNS4yNUgxMS4wODM0XCIgc3Ryb2tlPVwiIzYzNjM2M1wiIHN0cm9rZS13aWR0aD1cIjEuMTY2NjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XG4gICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMi45MTY2OSA4Ljc1SDExLjA4MzRcIiBzdHJva2U9XCIjNjM2MzYzXCIgc3Ryb2tlLXdpZHRoPVwiMS4xNjY2N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cbiAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgPC9tYXQtaWNvbj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImNxYS10ZXh0LXNtIGNxYS1mb250LXNlbWlib2xkIGxlYWRpbmctbm9ybWFsIGNxYS10ZXh0LVsjMEIwQjBCXVwiPnt7IGNvbXBhcmlzb25TdW1tYXJ5LnVuY2hhbmdlZCB9fTwvc3Bhbj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImNxYS10ZXh0LVsxMHB4XSBjcWEtZm9udC1zZW1pYm9sZCBjcWEtdGV4dC1bIzZCNzI4MF1cIj5VbmNoYW5nZWQ8L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1nYXAtMS41XCI+XG4gICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwiY3FhLWZsZXgtc2hyaW5rLTAgY3FhLXctWzE0cHhdIGNxYS1oLVsxNHB4XSBjcWEtdGV4dC1zbVwiPlxuICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxNFwiIGhlaWdodD1cIjE0XCIgdmlld0JveD1cIjAgMCAxNCAxNFwiIGZpbGw9XCJub25lXCI+XG4gICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTIuNjc1OSAxMC41MDAzTDguMDA5MTkgMi4zMzM2M0M3LjkwNzQzIDIuMTU0MDggNy43NTk4NyAyLjAwNDc0IDcuNTgxNTYgMS45MDA4M0M3LjQwMzI1IDEuNzk2OTMgNy4yMDA1NiAxLjc0MjE5IDYuOTk0MTkgMS43NDIxOUM2Ljc4NzgxIDEuNzQyMTkgNi41ODUxMyAxLjc5NjkzIDYuNDA2ODEgMS45MDA4M0M2LjIyODUgMi4wMDQ3NCA2LjA4MDk0IDIuMTU0MDggNS45NzkxOSAyLjMzMzYzTDEuMzEyNTIgMTAuNTAwM0MxLjIwOTY3IDEwLjY3ODQgMS4xNTU3NCAxMC44ODA2IDEuMTU2MTkgMTEuMDg2M0MxLjE1NjY1IDExLjI5MTkgMS4yMTE0NyAxMS40OTM5IDEuMzE1MTEgMTEuNjcxNUMxLjQxODc1IDExLjg0OTIgMS41Njc1MiAxMS45OTYzIDEuNzQ2MzQgMTIuMDk3OUMxLjkyNTE2IDEyLjE5OTYgMi4xMjc2NyAxMi4yNTIxIDIuMzMzMzUgMTIuMjUwM0gxMS42NjY3QzExLjg3MTQgMTIuMjUwMSAxMi4wNzI0IDEyLjE5NiAxMi4yNDk2IDEyLjA5MzVDMTIuNDI2OCAxMS45OTExIDEyLjU3MzkgMTEuODQzOCAxMi42NzYyIDExLjY2NjRDMTIuNzc4NCAxMS40ODkxIDEyLjgzMjIgMTEuMjg4IDEyLjgzMjIgMTEuMDgzM0MxMi44MzIxIDEwLjg3ODYgMTIuNzc4MiAxMC42Nzc2IDEyLjY3NTkgMTAuNTAwM1pcIiBzdHJva2U9XCIjRkQ5QTAwXCIgc3Ryb2tlLXdpZHRoPVwiMS4xNjY2N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cbiAgICAgICAgICAgICAgPHBhdGggZD1cIk03IDUuMjVWNy41ODMzM1wiIHN0cm9rZT1cIiNGRDlBMDBcIiBzdHJva2Utd2lkdGg9XCIxLjE2NjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxuICAgICAgICAgICAgICA8cGF0aCBkPVwiTTcgOS45MTY5OUg3LjAwNTgzXCIgc3Ryb2tlPVwiI0ZEOUEwMFwiIHN0cm9rZS13aWR0aD1cIjEuMTY2NjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XG4gICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgIDwvbWF0LWljb24+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJjcWEtdGV4dC1zbSBjcWEtZm9udC1zZW1pYm9sZCBsZWFkaW5nLW5vcm1hbCBjcWEtdGV4dC1bI0UxNzEwMF1cIj57eyBjb21wYXJpc29uU3VtbWFyeS5zdGF0dXNDaGFuZ2VkIH19PC9zcGFuPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3FhLXRleHQtWzEwcHhdIGNxYS1mb250LXNlbWlib2xkIGNxYS10ZXh0LVsjNkI3MjgwXVwiPlN0YXR1cyBDaGFuZ2VkPC9zcGFuPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwiY3FhLWZsZXggY3FhLWl0ZW1zLWNlbnRlciBjcWEtZ2FwLTEuNVwiPlxuICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImNxYS1mbGV4LXNocmluay0wIGNxYS13LVsxNHB4XSBjcWEtaC1bMTRweF0gY3FhLXRleHQtc21cIj5cbiAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTRcIiBoZWlnaHQ9XCIxNFwiIHZpZXdCb3g9XCIwIDAgMTQgMTRcIiBmaWxsPVwibm9uZVwiPlxuICAgICAgICAgICAgICA8cGF0aCBkPVwiTTIuOTE2NjkgN0gxMS4wODM0XCIgc3Ryb2tlPVwiIzAwQzk1MFwiIHN0cm9rZS13aWR0aD1cIjEuMTY2NjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XG4gICAgICAgICAgICAgIDxwYXRoIGQ9XCJNNyAyLjkxNjk5VjExLjA4MzdcIiBzdHJva2U9XCIjMDBDOTUwXCIgc3Ryb2tlLXdpZHRoPVwiMS4xNjY2N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cbiAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgPC9tYXQtaWNvbj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImNxYS10ZXh0LXNtIGNxYS1mb250LXNlbWlib2xkIGxlYWRpbmctbm9ybWFsIGNxYS10ZXh0LVsjMDBBNjNFXVwiPnt7IGNvbXBhcmlzb25TdW1tYXJ5LmFkZGVkIH19PC9zcGFuPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3FhLXRleHQtWzEwcHhdIGNxYS1mb250LXNlbWlib2xkIGNxYS10ZXh0LVsjNkI3MjgwXVwiPkFkZGVkPC9zcGFuPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwiY3FhLWZsZXggY3FhLWl0ZW1zLWNlbnRlciBjcWEtZ2FwLTEuNVwiPlxuICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImNxYS1mbGV4LXNocmluay0wIGNxYS13LVsxNHB4XSBjcWEtaC1bMTRweF0gY3FhLXRleHQtc21cIj5cbiAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTRcIiBoZWlnaHQ9XCIxNFwiIHZpZXdCb3g9XCIwIDAgMTQgMTRcIiBmaWxsPVwibm9uZVwiPlxuICAgICAgICAgICAgICA8cGF0aCBkPVwiTTIuOTE2NjkgN0gxMS4wODM0XCIgc3Ryb2tlPVwiI0ZCMkMzNlwiIHN0cm9rZS13aWR0aD1cIjEuMTY2NjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XG4gICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgIDwvbWF0LWljb24+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJjcWEtdGV4dC1zbSBjcWEtZm9udC1zZW1pYm9sZCBsZWFkaW5nLW5vcm1hbCBjcWEtdGV4dC1bI0ZCMkMzNl1cIj57eyBjb21wYXJpc29uU3VtbWFyeS5yZW1vdmVkIH19PC9zcGFuPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3FhLXRleHQtWzEwcHhdIGNxYS1mb250LXNlbWlib2xkIGNxYS10ZXh0LVsjNkI3MjgwXVwiPlJlbW92ZWQ8L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1nYXAtMS41XCI+XG4gICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwiY3FhLWZsZXgtc2hyaW5rLTAgY3FhLXctWzE0cHhdIGNxYS1oLVsxNHB4XSBjcWEtdGV4dC1zbVwiPlxuICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxNFwiIGhlaWdodD1cIjE0XCIgdmlld0JveD1cIjAgMCAxNCAxNFwiIGZpbGw9XCJub25lXCI+XG4gICAgICAgICAgICAgIDxwYXRoIGQ9XCJNNy4wMDAwMiAxMi44MzM3QzEwLjIyMTcgMTIuODMzNyAxMi44MzM0IDEwLjIyMiAxMi44MzM0IDcuMDAwMzNDMTIuODMzNCAzLjc3ODY2IDEwLjIyMTcgMS4xNjY5OSA3LjAwMDAyIDEuMTY2OTlDMy43NzgzNiAxLjE2Njk5IDEuMTY2NjkgMy43Nzg2NiAxLjE2NjY5IDcuMDAwMzNDMS4xNjY2OSAxMC4yMjIgMy43NzgzNiAxMi44MzM3IDcuMDAwMDIgMTIuODMzN1pcIiBzdHJva2U9XCIjMkI3RkZGXCIgc3Ryb2tlLXdpZHRoPVwiMS4xNjY2N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cbiAgICAgICAgICAgICAgPHBhdGggZD1cIk03IDMuNVY3TDkuMzMzMzMgOC4xNjY2N1wiIHN0cm9rZT1cIiMyQjdGRkZcIiBzdHJva2Utd2lkdGg9XCIxLjE2NjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxuICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICA8L21hdC1pY29uPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3FhLXRleHQtc20gY3FhLWZvbnQtc2VtaWJvbGQgbGVhZGluZy1ub3JtYWwgY3FhLXRleHQtWyMxNTVERkNdXCI+e3sgY29tcGFyaXNvblN1bW1hcnkudGltaW5nIH19PC9zcGFuPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3FhLXRleHQtWzEwcHhdIGNxYS1mb250LXNlbWlib2xkIGNxYS10ZXh0LVsjNkI3MjgwXVwiPlRpbWluZyBDaGFuZ2VkPC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cImNxYS1iZy13aGl0ZSBjcWEtcm91bmRlZC1sZyBjcWEtb3ZlcmZsb3ctaGlkZGVuXCI+XG4gICAgICA8Y3FhLXRhYmxlLXRlbXBsYXRlXG4gICAgICAgIFtjb2x1bW5zXT1cInRhYmxlQ29sdW1uc1wiXG4gICAgICAgIFtkYXRhXT1cInN0ZXBDb21wYXJpc29uc1wiXG4gICAgICAgIFtwYWdlSW5kZXhdPVwicGFnZUluZGV4XCJcbiAgICAgICAgW3BhZ2VTaXplXT1cInBhZ2VTaXplXCJcbiAgICAgICAgW2lzRW1wdHlTdGF0ZV09XCJpc0VtcHR5U3RhdGVcIlxuICAgICAgICBbZW1wdHlTdGF0ZUNvbmZpZ109XCJlbXB0eVN0YXRlQ29uZmlnXCJcbiAgICAgICAgW2lzVGFibGVEYXRhTG9hZGluZ109XCJpc0NvbXBhcmluZ1J1bnNcIlxuICAgICAgICBbc2hvd1NlYXJjaEJhcl09XCJmYWxzZVwiXG4gICAgICAgIFtzaG93RmlsdGVyQnV0dG9uXT1cImZhbHNlXCJcbiAgICAgICAgW3Nob3dTZXR0aW5nc0J1dHRvbl09XCJmYWxzZVwiXG4gICAgICAgIFtzaG93QXV0b1JlZnJlc2hCdXR0b25dPVwiZmFsc2VcIlxuICAgICAgICBbc2hvd090aGVyQnV0dG9uXT1cImZhbHNlXCJcbiAgICAgICAgW3Nob3dGaWx0ZXJQYW5lbF09XCJmYWxzZVwiXG4gICAgICAgIFtzZXJ2ZXJTaWRlUGFnaW5hdGlvbl09XCJmYWxzZVwiXG4gICAgICAgIChwYWdlQ2hhbmdlKT1cIm9uUGFnZUNoYW5nZSgkZXZlbnQpXCI+XG4gICAgICA8L2NxYS10YWJsZS10ZW1wbGF0ZT5cbiAgICA8L2Rpdj5cblxuICA8L2Rpdj5cbjwvZGl2PlxuXG4iXX0=
|
|
@@ -7309,7 +7309,7 @@ class CompareRunsComponent {
|
|
|
7309
7309
|
isShow: true,
|
|
7310
7310
|
weight: 1.5,
|
|
7311
7311
|
render: (row) => {
|
|
7312
|
-
if (row.runAStatus
|
|
7312
|
+
if (!row.runAStatus) {
|
|
7313
7313
|
return '<span class="cqa-text-xs cqa-text-[#9CA3AF]">—</span>';
|
|
7314
7314
|
}
|
|
7315
7315
|
return `
|
|
@@ -7326,7 +7326,7 @@ class CompareRunsComponent {
|
|
|
7326
7326
|
isShow: true,
|
|
7327
7327
|
weight: 1.5,
|
|
7328
7328
|
render: (row) => {
|
|
7329
|
-
if (row.runBStatus
|
|
7329
|
+
if (!row.runBStatus) {
|
|
7330
7330
|
return '<span class="cqa-text-xs cqa-text-[#636363]"> — </span>';
|
|
7331
7331
|
}
|
|
7332
7332
|
return `
|
|
@@ -7380,14 +7380,14 @@ class CompareRunsComponent {
|
|
|
7380
7380
|
}
|
|
7381
7381
|
renderStatusIcon(status) {
|
|
7382
7382
|
const upperStatus = status.toUpperCase();
|
|
7383
|
-
if (upperStatus === '
|
|
7383
|
+
if (upperStatus === 'SUCCESS') {
|
|
7384
7384
|
return `
|
|
7385
7385
|
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" fill="none">
|
|
7386
7386
|
<path d="M7.99998 14.6663C11.6819 14.6663 14.6666 11.6816 14.6666 7.99967C14.6666 4.31778 11.6819 1.33301 7.99998 1.33301C4.31808 1.33301 1.33331 4.31778 1.33331 7.99967C1.33331 11.6816 4.31808 14.6663 7.99998 14.6663Z" stroke="#00C950" stroke-width="1.33333" stroke-linecap="round" stroke-linejoin="round"/>
|
|
7387
7387
|
<path d="M6 8.00033L7.33333 9.33366L10 6.66699" stroke="#00C950" stroke-width="1.33333" stroke-linecap="round" stroke-linejoin="round"/>
|
|
7388
7388
|
</svg>`;
|
|
7389
7389
|
}
|
|
7390
|
-
else if (upperStatus === '
|
|
7390
|
+
else if (upperStatus === 'FAILURE') {
|
|
7391
7391
|
return `
|
|
7392
7392
|
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" fill="none">
|
|
7393
7393
|
<path d="M8.00004 14.6673C11.6819 14.6673 14.6667 11.6825 14.6667 8.00065C14.6667 4.31875 11.6819 1.33398 8.00004 1.33398C4.31814 1.33398 1.33337 4.31875 1.33337 8.00065C1.33337 11.6825 4.31814 14.6673 8.00004 14.6673Z" stroke="#FB2C36" stroke-width="1.33333" stroke-linecap="round" stroke-linejoin="round"/>
|
|
@@ -7395,11 +7395,24 @@ class CompareRunsComponent {
|
|
|
7395
7395
|
<path d="M6 6L10 10" stroke="#FB2C36" stroke-width="1.33333" stroke-linecap="round" stroke-linejoin="round"/>
|
|
7396
7396
|
</svg>`;
|
|
7397
7397
|
}
|
|
7398
|
-
else if (upperStatus === 'NOT_EXECUTED') {
|
|
7398
|
+
else if (upperStatus === 'ABORTED' || upperStatus === 'STOPPED' || upperStatus === 'NOT_EXECUTED') {
|
|
7399
7399
|
return `
|
|
7400
7400
|
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" fill="none">
|
|
7401
7401
|
<path d="M8.00004 14.6673C11.6819 14.6673 14.6667 11.6825 14.6667 8.00065C14.6667 4.31875 11.6819 1.33398 8.00004 1.33398C4.31814 1.33398 1.33337 4.31875 1.33337 8.00065C1.33337 11.6825 4.31814 14.6673 8.00004 14.6673Z" stroke="#9CA3AF" stroke-width="1.33333" stroke-linecap="round" stroke-linejoin="round"/>
|
|
7402
7402
|
<path d="M6 8H10" stroke="#9CA3AF" stroke-width="1.33333" stroke-linecap="round" stroke-linejoin="round"/>
|
|
7403
|
+
</svg>`;
|
|
7404
|
+
}
|
|
7405
|
+
else if (upperStatus === 'QUEUED') {
|
|
7406
|
+
return `
|
|
7407
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" fill="none" class="cqa-animate-spin">
|
|
7408
|
+
<path d="M8 1.33331V3.99998" stroke="#3B82F6" stroke-width="1.33333" stroke-linecap="round" stroke-linejoin="round"/>
|
|
7409
|
+
<path d="M8 12V14.6666" stroke="#3B82F6" stroke-width="1.33333" stroke-linecap="round" stroke-linejoin="round"/>
|
|
7410
|
+
<path d="M1.33337 8H4.00004" stroke="#3B82F6" stroke-width="1.33333" stroke-linecap="round" stroke-linejoin="round"/>
|
|
7411
|
+
<path d="M12 8H14.6667" stroke="#3B82F6" stroke-width="1.33333" stroke-linecap="round" stroke-linejoin="round"/>
|
|
7412
|
+
<path d="M3.28662 3.28662L5.17329 5.17329" stroke="#3B82F6" stroke-width="1.33333" stroke-linecap="round" stroke-linejoin="round"/>
|
|
7413
|
+
<path d="M10.8267 10.8267L12.7133 12.7133" stroke="#3B82F6" stroke-width="1.33333" stroke-linecap="round" stroke-linejoin="round"/>
|
|
7414
|
+
<path d="M3.28662 12.7133L5.17329 10.8267" stroke="#3B82F6" stroke-width="1.33333" stroke-linecap="round" stroke-linejoin="round"/>
|
|
7415
|
+
<path d="M10.8267 5.17329L12.7133 3.28662" stroke="#3B82F6" stroke-width="1.33333" stroke-linecap="round" stroke-linejoin="round"/>
|
|
7403
7416
|
</svg>`;
|
|
7404
7417
|
}
|
|
7405
7418
|
else {
|
|
@@ -7455,7 +7468,9 @@ class CompareRunsComponent {
|
|
|
7455
7468
|
'SUCCESS': '#0B9D68',
|
|
7456
7469
|
'FAILURE': '#FB2C36',
|
|
7457
7470
|
'ABORTED': '#F59E0B',
|
|
7458
|
-
'
|
|
7471
|
+
'QUEUED': '#3B82F6',
|
|
7472
|
+
'NOT_EXECUTED': '#6B7280',
|
|
7473
|
+
'STOPPED': '#6B7280'
|
|
7459
7474
|
};
|
|
7460
7475
|
return colors[this.selectedRunA.result] || '#6B7280';
|
|
7461
7476
|
}
|
|
@@ -7466,7 +7481,9 @@ class CompareRunsComponent {
|
|
|
7466
7481
|
'SUCCESS': '#0B9D68',
|
|
7467
7482
|
'FAILURE': '#FB2C36',
|
|
7468
7483
|
'ABORTED': '#F59E0B',
|
|
7469
|
-
'
|
|
7484
|
+
'QUEUED': '#3B82F6',
|
|
7485
|
+
'NOT_EXECUTED': '#6B7280',
|
|
7486
|
+
'STOPPED': '#6B7280'
|
|
7470
7487
|
};
|
|
7471
7488
|
return colors[this.selectedRunB.result] || '#6B7280';
|
|
7472
7489
|
}
|
|
@@ -7477,7 +7494,9 @@ class CompareRunsComponent {
|
|
|
7477
7494
|
'SUCCESS': '#CFF2E5',
|
|
7478
7495
|
'FAILURE': '#FCD9D9',
|
|
7479
7496
|
'ABORTED': '#FEF3C7',
|
|
7480
|
-
'
|
|
7497
|
+
'QUEUED': '#DBEAFE',
|
|
7498
|
+
'NOT_EXECUTED': '#F3F4F6',
|
|
7499
|
+
'STOPPED': '#F3F4F6'
|
|
7481
7500
|
};
|
|
7482
7501
|
return colors[this.selectedRunA.result] || '#F3F4F6';
|
|
7483
7502
|
}
|
|
@@ -7488,7 +7507,9 @@ class CompareRunsComponent {
|
|
|
7488
7507
|
'SUCCESS': '#CFF2E5',
|
|
7489
7508
|
'FAILURE': '#FCD9D9',
|
|
7490
7509
|
'ABORTED': '#FEF3C7',
|
|
7491
|
-
'
|
|
7510
|
+
'QUEUED': '#DBEAFE',
|
|
7511
|
+
'NOT_EXECUTED': '#F3F4F6',
|
|
7512
|
+
'STOPPED': '#F3F4F6'
|
|
7492
7513
|
};
|
|
7493
7514
|
return colors[this.selectedRunB.result] || '#F3F4F6';
|
|
7494
7515
|
}
|
|
@@ -7499,7 +7520,9 @@ class CompareRunsComponent {
|
|
|
7499
7520
|
'SUCCESS': '#0DBD7D1A',
|
|
7500
7521
|
'FAILURE': '#EE3F3F1A',
|
|
7501
7522
|
'ABORTED': '#FEF3C7',
|
|
7502
|
-
'
|
|
7523
|
+
'QUEUED': '#DBEAFE',
|
|
7524
|
+
'NOT_EXECUTED': '#F3F4F6',
|
|
7525
|
+
'STOPPED': '#F3F4F6'
|
|
7503
7526
|
};
|
|
7504
7527
|
return colors[this.selectedRunA.result] || '#F3F4F6';
|
|
7505
7528
|
}
|
|
@@ -7510,7 +7533,9 @@ class CompareRunsComponent {
|
|
|
7510
7533
|
'SUCCESS': '#0DBD7D1A',
|
|
7511
7534
|
'FAILURE': '#EE3F3F1A',
|
|
7512
7535
|
'ABORTED': '#FEF3C7',
|
|
7513
|
-
'
|
|
7536
|
+
'QUEUED': '#DBEAFE',
|
|
7537
|
+
'NOT_EXECUTED': '#F3F4F6',
|
|
7538
|
+
'STOPPED': '#F3F4F6'
|
|
7514
7539
|
};
|
|
7515
7540
|
return colors[this.selectedRunB.result] || '#F3F4F6';
|
|
7516
7541
|
}
|
|
@@ -7536,7 +7561,9 @@ class CompareRunsComponent {
|
|
|
7536
7561
|
'SUCCESS': 'Passed',
|
|
7537
7562
|
'FAILURE': 'Failed',
|
|
7538
7563
|
'ABORTED': 'Aborted',
|
|
7539
|
-
'
|
|
7564
|
+
'QUEUED': 'Queued',
|
|
7565
|
+
'NOT_EXECUTED': 'Not Executed',
|
|
7566
|
+
'STOPPED': 'Stopped'
|
|
7540
7567
|
};
|
|
7541
7568
|
return labels[this.selectedRunA.result] || this.selectedRunA.result;
|
|
7542
7569
|
}
|
|
@@ -7547,7 +7574,9 @@ class CompareRunsComponent {
|
|
|
7547
7574
|
'SUCCESS': 'Passed',
|
|
7548
7575
|
'FAILURE': 'Failed',
|
|
7549
7576
|
'ABORTED': 'Aborted',
|
|
7550
|
-
'
|
|
7577
|
+
'QUEUED': 'Queued',
|
|
7578
|
+
'NOT_EXECUTED': 'Not Executed',
|
|
7579
|
+
'STOPPED': 'Stopped'
|
|
7551
7580
|
};
|
|
7552
7581
|
return labels[this.selectedRunB.result] || this.selectedRunB.result;
|
|
7553
7582
|
}
|