@net7/boilerplate-muruca 5.5.26-rc1 → 5.5.28
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { DataSource } from '@net7/core';
|
|
2
2
|
export class MrButtonDS extends DataSource {
|
|
3
3
|
transform() {
|
|
4
|
-
const { iconLeft, iconRight } = this.options;
|
|
4
|
+
const { iconLeft, iconRight, text } = this.options;
|
|
5
5
|
return {
|
|
6
|
-
text: 'Scarica PDF',
|
|
6
|
+
text: text || 'Scarica PDF',
|
|
7
7
|
iconLeft,
|
|
8
8
|
iconRight,
|
|
9
9
|
classes: 'n7-btn',
|
|
@@ -13,4 +13,4 @@ export class MrButtonDS extends DataSource {
|
|
|
13
13
|
};
|
|
14
14
|
}
|
|
15
15
|
}
|
|
16
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
16
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnV0dG9uLmRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbjctYm9pbGVycGxhdGUtbXVydWNhL3NyYy9saWIvZGF0YS1zb3VyY2VzL2J1dHRvbi5kcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBR3hDLE1BQU0sT0FBTyxVQUFXLFNBQVEsVUFBVTtJQUM5QixTQUFTO1FBQ2pCLE1BQU0sRUFDSixRQUFRLEVBQUUsU0FBUyxFQUFFLElBQUksRUFDMUIsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDO1FBQ2pCLE9BQU87WUFDTCxJQUFJLEVBQUUsSUFBSSxJQUFJLGFBQWE7WUFDM0IsUUFBUTtZQUNSLFNBQVM7WUFDVCxPQUFPLEVBQUUsUUFBUTtZQUNqQixNQUFNLEVBQUU7Z0JBQ04sT0FBTyxFQUFFLGVBQWU7YUFDekI7U0FDRixDQUFDO0lBQ0osQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGF0YVNvdXJjZSB9IGZyb20gJ0BuZXQ3L2NvcmUnO1xuaW1wb3J0IHsgQnV0dG9uRGF0YSB9IGZyb20gJ0BuZXQ3L2NvbXBvbmVudHMnO1xuXG5leHBvcnQgY2xhc3MgTXJCdXR0b25EUyBleHRlbmRzIERhdGFTb3VyY2Uge1xuICBwcm90ZWN0ZWQgdHJhbnNmb3JtKCk6IEJ1dHRvbkRhdGEge1xuICAgIGNvbnN0IHtcbiAgICAgIGljb25MZWZ0LCBpY29uUmlnaHQsIHRleHRcbiAgICB9ID0gdGhpcy5vcHRpb25zO1xuICAgIHJldHVybiB7XG4gICAgICB0ZXh0OiB0ZXh0IHx8ICdTY2FyaWNhIFBERicsXG4gICAgICBpY29uTGVmdCxcbiAgICAgIGljb25SaWdodCxcbiAgICAgIGNsYXNzZXM6ICduNy1idG4nLFxuICAgICAgYW5jaG9yOiB7XG4gICAgICAgIHBheWxvYWQ6ICdnZXQtcGRmLWNsaWNrJyxcbiAgICAgIH1cbiAgICB9O1xuICB9XG59XG4iXX0=
|
|
@@ -307,14 +307,18 @@ export class MrParallelTextViewerDS extends DataSource {
|
|
|
307
307
|
// Determina se il pb-highlight cliccato è una cit esterna (contiene cit annidate).
|
|
308
308
|
const nestedCits = target.querySelectorAll('span.quote');
|
|
309
309
|
const isOuterCit = nestedCits.length > 0;
|
|
310
|
-
const
|
|
310
|
+
const segOuterInner = target.querySelectorAll('.seg-outer-inner');
|
|
311
|
+
const segPartF = target.querySelectorAll('.seg-part-f');
|
|
311
312
|
if (isVisible) {
|
|
312
313
|
teiAppElement.style.display = 'none';
|
|
313
314
|
teiAppElement.style.transform = '';
|
|
314
315
|
this.resetHighlights();
|
|
315
316
|
if (isOuterCit) {
|
|
316
317
|
// Pannello esterno chiuso: ripristina il background dei seg annidati
|
|
317
|
-
|
|
318
|
+
segOuterInner.forEach((el) => {
|
|
319
|
+
el.style.backgroundColor = '';
|
|
320
|
+
});
|
|
321
|
+
segPartF.forEach((el) => {
|
|
318
322
|
el.style.backgroundColor = '';
|
|
319
323
|
});
|
|
320
324
|
}
|
|
@@ -329,9 +333,12 @@ export class MrParallelTextViewerDS extends DataSource {
|
|
|
329
333
|
teiAppElement.style.transform = `translateY(${positionDifference}px)`;
|
|
330
334
|
if (isOuterCit) {
|
|
331
335
|
// Pannello esterno aperto: dopo che pb-highlight si attiva (giallo),
|
|
332
|
-
// imposta sfondo bianco
|
|
336
|
+
// imposta sfondo bianco su seg-outer-inner e seg-part-f
|
|
333
337
|
requestAnimationFrame(() => {
|
|
334
|
-
|
|
338
|
+
segOuterInner.forEach((el) => {
|
|
339
|
+
el.style.backgroundColor = 'white';
|
|
340
|
+
});
|
|
341
|
+
segPartF.forEach((el) => {
|
|
335
342
|
el.style.backgroundColor = 'white';
|
|
336
343
|
});
|
|
337
344
|
});
|
|
@@ -339,7 +346,7 @@ export class MrParallelTextViewerDS extends DataSource {
|
|
|
339
346
|
else {
|
|
340
347
|
// Pannello interno aperto: ripristina eventuali soppressioni sui seg interni
|
|
341
348
|
requestAnimationFrame(() => {
|
|
342
|
-
|
|
349
|
+
segOuterInner.forEach((el) => {
|
|
343
350
|
el.style.backgroundColor = '';
|
|
344
351
|
});
|
|
345
352
|
});
|
|
@@ -422,10 +429,13 @@ export class MrParallelTextViewerDS extends DataSource {
|
|
|
422
429
|
content.querySelectorAll('.disable').forEach((el) => {
|
|
423
430
|
el.classList.remove('disable');
|
|
424
431
|
});
|
|
425
|
-
// Ripristina il background dei seg-outer-inner (
|
|
432
|
+
// Ripristina il background dei seg-outer-inner e seg-part-f (potrebbero essere rimasti 'white')
|
|
426
433
|
content.querySelectorAll('.seg-outer-inner').forEach((el) => {
|
|
427
434
|
el.style.backgroundColor = '';
|
|
428
435
|
});
|
|
436
|
+
content.querySelectorAll('.seg-part-f').forEach((el) => {
|
|
437
|
+
el.style.backgroundColor = '';
|
|
438
|
+
});
|
|
429
439
|
});
|
|
430
440
|
}
|
|
431
441
|
viewListenerUpdate() {
|
|
@@ -499,4 +509,4 @@ export class MrParallelTextViewerDS extends DataSource {
|
|
|
499
509
|
}, 300);
|
|
500
510
|
}
|
|
501
511
|
}
|
|
502
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyYWxsZWwtdGV4dC12aWV3ZXIuZHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uNy1ib2lsZXJwbGF0ZS1tdXJ1Y2Evc3JjL2xpYi9kYXRhLXNvdXJjZXMvcGFyYWxsZWwtdGV4dC12aWV3ZXIuZHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsNkRBQTZEO0FBQzdELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFFeEMsTUFBTSxPQUFPLHNCQUF1QixTQUFRLFVBQVU7SUFHcEQsOEVBQThFO0lBQzlFLHlFQUF5RTtJQUMvRCxTQUFTLENBQUMsSUFBUztRQUMzQixJQUFJLENBQUMsSUFBSTtZQUFFLE9BQU8sSUFBSSxDQUFDO1FBRXZCOzs7Ozs7OztZQVFJO1FBQ0osSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDbkIsNEJBQTRCO1lBQzFCLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsQ0FBQztnQkFDNUIsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLElBQUksT0FBTyxJQUFJLENBQUMsVUFBVSxLQUFLLFFBQVEsRUFBRSxDQUFDO29CQUM1RCxJQUFJLENBQUMsVUFBVSxHQUFHLEVBQUUsQ0FBQztnQkFDdkIsQ0FBQztnQkFDRCxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7b0JBQ25ELElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxJQUFJLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsS0FBSyxRQUFRLEVBQUUsQ0FBQzt3QkFDdEUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUM7b0JBQzVCLENBQUM7b0JBQ0QsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJ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WUFDZixDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUNWLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbIi8vIGltcG9ydCB7IFBhcmFsbGVsVGV4dFZpZXdlckRhdGEgfSBmcm9tICdAbmV0Ny9jb21wb25lbnRzJztcbmltcG9ydCB7IERhdGFTb3VyY2UgfSBmcm9tICdAbmV0Ny9jb3JlJztcblxuZXhwb3J0IGNsYXNzIE1yUGFyYWxsZWxUZXh0Vmlld2VyRFMgZXh0ZW5kcyBEYXRhU291cmNlIHtcbiAgaWQ6IHN0cmluZztcblxuICAvLyBwcm90ZWN0ZWQgdHJhbnNmb3JtKGRhdGE6IFBhcmFsbGVsVGV4dFZpZXdlckRhdGEpOiBQYXJhbGxlbFRleHRWaWV3ZXJEYXRhIHtcbiAgLy8gXl5eXl5eXl5eXl5eXnNlIHZhIGJ1aWxkYXJlIGNvbXBvbmVudHMgLS0tIDE3LTEyLTIwMjVeXl5eXl5eXl5eXl5eXl5eXlxuICBwcm90ZWN0ZWQgdHJhbnNmb3JtKGRhdGE6IGFueSk6IGFueSB7XG4gICAgaWYgKCFkYXRhKSByZXR1cm4gbnVsbDtcblxuICAgIC8qXG4gICAgaWYgKHRoaXMub3B0aW9ucy5mYWNzaW1pbGVPcHRpb25zICYmIGRhdGEuZmFjc2ltaWxlKSB7XG4gICAgICBpZiAoIWRhdGEuZmFjc2ltaWxlLm9wdGlvbnMpIHtcbiAgICAgICAgZGF0YS5mYWNzaW1pbGUub3B0aW9ucyA9IHt9O1xuICAgICAgfVxuICAgICAgT2JqZWN0LmtleXModGhpcy5vcHRpb25zLmZhY3NpbWlsZU9wdGlvbnMpLmZvckVhY2goKGtleSkgPT4ge1xuICAgICAgICBkYXRhLmZhY3NpbWlsZS5vcHRpb25zW2tleV0gPSB0aGlzLm9wdGlvbnMuZmFjc2ltaWxlT3B0aW9uc1trZXldO1xuICAgICAgfSk7XG4gICAgfSAqL1xuICAgIGlmICh0aGlzLm9wdGlvbnMpIHtcbiAgICAvLyBHZXN0aW9uZSBkZWxsZSBsaWJPcHRpb25zXG4gICAgICBpZiAodGhpcy5vcHRpb25zLmxpYk9wdGlvbnMpIHtcbiAgICAgICAgaWYgKCFkYXRhLmxpYk9wdGlvbnMgfHwgdHlwZW9mIGRhdGEubGliT3B0aW9ucyAhPT0gJ29iamVjdCcpIHtcbiAgICAgICAgICBkYXRhLmxpYk9wdGlvbnMgPSB7fTtcbiAgICAgICAgfVxuICAgICAgICBPYmplY3Qua2V5cyh0aGlzLm9wdGlvbnMubGliT3B0aW9ucykuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgICAgICAgaWYgKCFkYXRhLmxpYk9wdGlvbnNba2V5XSB8fCB0eXBlb2YgZGF0YS5saWJPcHRpb25zW2tleV0gIT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgICBkYXRhLmxpYk9wdGlvbnNba2V5XSA9IHt9O1xuICAgICAgICAgIH1cbiAgICAgICAgICBPYmplY3Qua2V5cyh0aGlzLm9wdGlvbnMubGliT3B0aW9uc1trZXldKS5mb3JFYWNoKChzdWJLZXkpID0+IHtcbiAgICAgICAgICAgIGRhdGEubGliT3B0aW9uc1trZXldW3N1YktleV0gPSB0aGlzLm9wdGlvbnMubGliT3B0aW9uc1trZXldW3N1YktleV07XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgICAvLyBEZWJ1ZyBsaWJPcHRpb25zXG4gICAgICAvKiAgICAgICBjb25zb2xlLmxvZygnIERFQlVHIGxpYk9wdGlvbnM6Jywge1xuICAgICAgICAndGhpcy5vcHRpb25zLmxpYk9wdGlvbnMnOiB0aGlzLm9wdGlvbnMubGliT3B0aW9ucyxcbiAgICAgICAgJ2RhdGEubGliT3B0aW9ucyc6IGRhdGEubGliT3B0aW9ucyxcbiAgICAgICAgJ2RhdGEubGliT3B0aW9ucy5wYlBhZ2UnOiBkYXRhLmxpYk9wdGlvbnMucGJQYWdlLFxuICAgICAgICAndXJsSWdub3JlJzogZGF0YS5saWJPcHRpb25zLnBiUGFnZT8udXJsSWdub3JlXG4gICAgICB9KTsgKi9cbiAgICAgIH1cbiAgICAgIC8vIEdlc3Rpb25lIGRlbGxhIGdyaWRcbiAgICAgIGlmICh0aGlzLm9wdGlvbnMuZ3JpZCkge1xuICAgICAgICBkYXRhLmdyaWQgPSB0aGlzLm9wdGlvbnMuZ3JpZDtcbiAgICAgIH1cbiAgICAgIC8vIEdlc3Rpb25lIGRlaSBwYW5lbHNcbiAgICAgIGlmICh0aGlzLm9wdGlvbnMucGFuZWxzKSB7XG4gICAgICAgIHRoaXMub3B0aW9ucy5wYW5lbHMuZm9yRWFjaCgocGFuZWxQcm9wZXJ0aWVzKSA9PiB7XG4gICAgICAgICAgY29uc3QgcGFuZWxJbmRleCA9IGRhdGEucGFuZWxzLmZpbmRJbmRleChcbiAgICAgICAgICAgIChwYW5lbCkgPT4gcGFuZWwuaWQgPT09IHBhbmVsUHJvcGVydGllcy5pZFxuICAgICAgICAgICk7XG5cbiAgICAgICAgICBpZiAocGFuZWxJbmRleCAhPT0gLTEpIHtcbiAgICAgICAgICAgIGNvbnN0IGFwaVBhbmVsID0gZGF0YS5wYW5lbHNbcGFuZWxJbmRleF07XG4gICAgICAgICAgICBjb25zdCBtZXJnZWQgPSB7IC4uLmFwaVBhbmVsLCAuLi5wYW5lbFByb3BlcnRpZXMgfTtcbiAgICAgICAgICAgIC8vIFNlIGwnQVBJIGhhIGludmlhdG8gdW4gYmFzZXVybCBlIGxhIGNvbmZpZyBzdGF0aWNhIGhhIHVyaSB2dW90byBwb3BvbGEgZmFjc2ltaWxlLnVyaSBjb24gaWwgYmFzZXVybCBkaW5hbWljbyBkZWxsJ0FQSS5cbiAgICAgICAgICAgIGlmIChtZXJnZWQuZmFjc2ltaWxlICYmICFtZXJnZWQuZmFjc2ltaWxlLnVyaSAmJiBhcGlQYW5lbC5iYXNldXJsKSB7XG4gICAgICAgICAgICAgIG1lcmdlZC5mYWNzaW1pbGUgPSB7XG4gICAgICAgICAgICAgICAgLi4ubWVyZ2VkLmZhY3NpbWlsZSxcbiAgICAgICAgICAgICAgICB1cmk6IGFwaVBhbmVsLmJhc2V1cmwsXG4gICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkYXRhLnBhbmVsc1twYW5lbEluZGV4XSA9IG1lcmdlZDtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgICBjb25zdCB7XG4gICAgICBlbmFibGVDbGlja09uRW50aXRpZXMsIHRvZ2dsZUNvbHVtbixcbiAgICAgIHNlYXJjaElkLFxuICAgICAgc2VhcmNoQXBpXG4gICAgfSA9IHRoaXMub3B0aW9ucyB8fCB7fTtcbiAgICBkYXRhLnRvZ2dsZUNvbHVtbiA9IHRvZ2dsZUNvbHVtbjtcbiAgICAvLyBmb3JjZSB0ZWkgcHVibGlzaGVyIGVuZHBvaW50IHZhbHVlXG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcbiAgICAgICdwYi1wYWdlLXJlYWR5JyxcbiAgICAgIChldjogQ3VzdG9tRXZlbnQpID0+IHtcbiAgICAgICAgY29uc3QgeyBkZXRhaWwgfSA9IGV2O1xuICAgICAgICBkZXRhaWwuZW5kcG9pbnQgPSBkYXRhLmVuZHBvaW50O1xuICAgICAgfSxcbiAgICAgIHsgb25jZTogdHJ1ZSB9XG4gICAgKTtcblxuICAgIGNvbnN0IHBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMoZG9jdW1lbnQubG9jYXRpb24uc2VhcmNoKTtcbiAgICAvLyBjb25zdCBpZCA9IHBhcmFtcy5nZXQoJ2lkJyk7XG5cbiAgICB0aGlzLnNldHVwVmlld0NsaWNrTGlzdGVuZXJzKCk7XG5cbiAgICAvLyBHZXN0aW9uZSBkZWxsYSBzZXppb25lIGRpIHBhcnRlbnphIGRlZ2xpIFhNTCBcbiAgICBjb25zdCBzdGFydFNlY3Rpb24gPSBkYXRhLnN0YXJ0U2VjdGlvbiB8fCB0aGlzLm9wdGlvbnM/LnN0YXJ0U2VjdGlvbjtcbiAgICBpZiAoc3RhcnRTZWN0aW9uKSB7XG4gICAgICBjb25zdCBoYW5kbGVGaXJzdExvYWQgPSAoKSA9PiB7XG4gICAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3BiLWVuZC11cGRhdGUnLCBoYW5kbGVGaXJzdExvYWQpO1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcubjctcGFyYWxsZWwtdGV4dC12aWV3ZXIgW2lkJD1cIi12aWV3XCJdJykuZm9yRWFjaCgodmlldzogYW55KSA9PiB7XG4gICAgICAgICAgICB2aWV3LmdvdG9JZChzdGFydFNlY3Rpb24pO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9LCAyMDApO1xuICAgICAgfTtcbiAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3BiLWVuZC11cGRhdGUnLCBoYW5kbGVGaXJzdExvYWQpO1xuICAgIH1cblxuICAgIC8qICAgICBpZiAoZGF0YS5kb2NzWzBdPy52aWV3ID09PSAncGFnZScgJiYgaWQpIHtcbiAgICAgIGRhdGEuZG9jc1swXS52aWV3ID0gJ2Rpdic7XG4gICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFxuICAgICAgICAncGItZW5kLXVwZGF0ZScsXG4gICAgICAgICgpID0+IHtcbiAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQoXG4gICAgICAgICAgICAgIG5ldyBDdXN0b21FdmVudCgncGItdG9nZ2xlJywge1xuICAgICAgICAgICAgICAgIGRldGFpbDoge1xuICAgICAgICAgICAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgICAgICAgICAgICB2aWV3OiAncGFnZScsXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgYWN0aW9uOiAncmVmcmVzaCcsXG4gICAgICAgICAgICAgICAgICBrZXk6ICd0cmFuc2NyaXB0aW9uJyxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQoXG4gICAgICAgICAgICAgIG5ldyBDdXN0b21FdmVudCgncGItdG9nZ2xlJywge1xuICAgICAgICAgICAgICAgIGRldGFpbDoge1xuICAgICAgICAgICAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgICAgICAgICAgICB2aWV3OiAnc2luZ2xlJyxcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICBhY3Rpb246ICdyZWZyZXNoJyxcbiAgICAgICAgICAgICAgICAgIGtleTogJ2FkZENoYW5uZWwnLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgZG9jdW1lbnQuZGlzcGF0Y2hFdmVudChcbiAgICAgICAgICAgICAgbmV3IEN1c3RvbUV2ZW50KCdwYi10b2dnbGUnLCB7XG4gICAgICAgICAgICAgICAgZGV0YWlsOiB7XG4gICAgICAgICAgICAgICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICAgICAgICAgIHZpZXc6ICdzaW5nbGUnLFxuICAgICAgICAgICAgICAgICAgICBpZDogJycsXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgYWN0aW9uOiAncmVmcmVzaCcsXG4gICAgICAgICAgICAgICAgICBrZXk6ICdpbmRleCcsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSwgNTAwKTtcbiAgICAgICAgfSxcbiAgICAgICAgeyBvbmNlOiB0cnVlIH1cbiAgICAgICk7XG4gICAgfSAqL1xuXG4gICAgaWYgKGVuYWJsZUNsaWNrT25FbnRpdGllcykge1xuICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigncGItZW5kLXVwZGF0ZScsIChldjogYW55KSA9PiB7XG4gICAgICAgIHRoaXMuc2Nyb2xsRWxlbWVudHNJbnRvVmlldyhldi5kZXRhaWwsICdjaGFwdGVyJywgJyN2aWV3MScpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyogICAgICAgaWYgKHBhcmFtcy5nZXQoJ2hxJykpIHtcbiAgICAgIGlmIChzZWFyY2hBcGkpIHtcbiAgICAgICAgY29uc3QgeG1sUXVlcnlVcmwgPSBgJHtzZWFyY2hBcGkudXJsXG4gICAgICAgIH0/cmVzb3VyY2UtaWQ9JHtzZWFyY2hBcGlbJ3Jlc291cmNlLWlkJ11cbiAgICAgICAgfSZzZWFyY2hJZD0ke3NlYXJjaElkXG4gICAgICAgIH0meG1sPSR7ZGF0YS5kb2NzWzBdPy54bWxcbiAgICAgICAgfSYke3BhcmFtcy50b1N0cmluZygpfWA7XG5cbiAgICAgICAgZGF0YS5kb2NzWzBdLnVybCA9IHhtbFF1ZXJ5VXJsO1xuICAgICAgICBkYXRhLmRvY3NbMF0ucm9vdFBhdGggPSAnYXBpL21yY3BhcnRzJztcbiAgICAgIH1cbiAgICAgICAgICovXG5cbiAgICBpZiAocGFyYW1zLmdldCgnaHEnKSkge1xuICAgICAgaWYgKHNlYXJjaEFwaSkge1xuICAgICAgICBjb25zdCBtYWluRG9jID0gZGF0YS5kb2NzLmZpbmQoKGRvYykgPT4gZG9jLmlkID09PSAnbWFpbkRvYycpO1xuXG4gICAgICAgIGlmIChtYWluRG9jKSB7XG4gICAgICAgICAgY29uc3QgeG1sUXVlcnlVcmwgPSBgJHtzZWFyY2hBcGkudXJsXG4gICAgICAgICAgfT9yZXNvdXJjZS1pZD0ke3NlYXJjaEFwaVsncmVzb3VyY2UtaWQnXVxuICAgICAgICAgIH0mc2VhcmNoSWQ9JHtzZWFyY2hJZFxuICAgICAgICAgIH0meG1sPSR7bWFpbkRvYy54bWxcbiAgICAgICAgICB9JiR7cGFyYW1zLnRvU3RyaW5nKCl9YDtcblxuICAgICAgICAgIGRhdGEubWFpbkRvYy51cmwgPSB4bWxRdWVyeVVybDtcbiAgICAgICAgICBkYXRhLm1haW5Eb2Mucm9vdFBhdGggPSAnYXBpL21yY3BhcnRzJztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdwYi1lbmQtdXBkYXRlJywgKGV2OiBhbnkpID0+IHtcbiAgICAgIHRoaXMuc2Nyb2xsRWxlbWVudHNJbnRvVmlldyhldi5kZXRhaWwsICdocScsICcjdHJhbnNjcmlwdGlvbi12aWV3Jyk7XG4gICAgfSk7XG4gICAgLyogICB9ICAqL1xuICAgIHJldHVybiBkYXRhO1xuICB9XG5cbiAgZGlzcGxheUluZGV4KCkge1xuICAgIGlmICh0aGlzLm91dHB1dC50b2dnbGVDb2x1bW4pIHtcbiAgICAgIHRoaXMub3V0cHV0LnRvZ2dsZUNvbHVtbiA9IGZhbHNlO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm91dHB1dC50b2dnbGVDb2x1bW4gPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIHNldHVwVmlld0NsaWNrTGlzdGVuZXJzKCkge1xuICAgIGNvbnN0IGF0dGFjaExpc3RlbmVycyA9ICgpID0+IHtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBjb25zdCB2aWV3cyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5uNy1wYXJhbGxlbC10ZXh0LXZpZXdlciBbaWQkPVwiLXZpZXdcIl0nKTtcblxuICAgICAgICB2aWV3cy5mb3JFYWNoKCh2aWV3KSA9PiB7XG4gICAgICAgICAgaWYgKHZpZXcuaWQgPT09ICd0cmFuc2NyaXB0aW9uLXZpZXcnKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKHZpZXcuc2hhZG93Um9vdCkge1xuICAgICAgICAgICAgaWYgKCh2aWV3IGFzIGFueSkuX19jbGlja0xpc3RlbmVyQXR0YWNoZWQpIHtcbiAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCBjbGlja0xpc3RlbmVyID0gKGV2ZW50OiBFdmVudCkgPT4ge1xuICAgICAgICAgICAgICB0aGlzLm9uQ2xpY2soZXZlbnQpO1xuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgLy8gU2FsdmEgaWwgcmlmZXJpbWVudG8gZSBtYXJjYSBjb21lIGF0dGFjY2F0b1xuICAgICAgICAgICAgKHZpZXcgYXMgYW55KS5fX2NsaWNrTGlzdGVuZXIgPSBjbGlja0xpc3RlbmVyO1xuICAgICAgICAgICAgKHZpZXcgYXMgYW55KS5fX2NsaWNrTGlzdGVuZXJBdHRhY2hlZCA9IHRydWU7XG5cbiAgICAgICAgICAgIC8vIEF0dGFjY2EgaWwgbGlzdGVuZXIgaW4gY2FwdHVyZSBwaGFzZSBwZXIgY2F0dHVyYXJlIHR1dHRpIGkgY2xpY2tcbiAgICAgICAgICAgIHZpZXcuc2hhZG93Um9vdC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGNsaWNrTGlzdGVuZXIsIHRydWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9LCAxMDApO1xuICAgIH07XG5cbiAgICAvLyBBdHRhY2NhIGFsIHByaW1vIGNhcmljYW1lbnRvXG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigncGItZW5kLXVwZGF0ZScsIGF0dGFjaExpc3RlbmVycyk7XG5cbiAgICBzZXRUaW1lb3V0KGF0dGFjaExpc3RlbmVycywgNTAwKTtcblxuICAgIC8vIENyb3NzLWhpZ2hsaWdodCBwZXIgdGVybWluaSBtdWx0aS1AYW5hOiBxdWFuZG8gdW4gcGItaGlnaGxpZ2h0IGNvbiBkb3BwaWEga2V5IGVtZXR0ZSBwYi1oaWdobGlnaHQtb24gXG4gICAgLy8gIHJpLWVtZXR0ZSBwYi1oaWdobGlnaHQtb24gcGVyIG9nbmkgdG9rZW4gaW5kaXZpZHVhbGUgIGNvc8OsIGkgdGVybWluaSBjb3JyZWxhdGkgc2kgZXZpZGVuemlhbm8uXG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigncGItaGlnaGxpZ2h0LW9uJywgKGV2OiBhbnkpID0+IHtcbiAgICAgIGNvbnN0IGtleSA9IGV2LmRldGFpbD8uaWQ7XG4gICAgICBjb25zdCBjaGFubmVsID0gZXYuZGV0YWlsPy5rZXk7XG4gICAgICBpZiAoIWtleSB8fCAhY2hhbm5lbCkgcmV0dXJuO1xuXG4gICAgICAvLyBDaGlhdmUgY29tcG9zaXRhIChtdWx0aS1AYW5hIFwidm94Ml92b3gzXCIsIGFuY29yZSBwYWlyZWQgXCJ2MWExX3YxYTJcIik6IHNwZXp6YSBlIHJpLWVtZXR0aSBwZXIgb2duaSB0b2tlbiBzdSBoaWdobGlnaHQtY2hhbm5lbC5cbiAgICAgIGlmIChrZXkuaW5jbHVkZXMoJ18nKSkge1xuICAgICAgICBrZXkuc3BsaXQoJ18nKS5mb3JFYWNoKCh0b2tlbjogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgZG9jdW1lbnQuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoJ3BiLWhpZ2hsaWdodC1vbicsIHtcbiAgICAgICAgICAgIGRldGFpbDogeyBrZXk6IGNoYW5uZWwsIGlkOiB0b2tlbiwgc291cmNlOiBldi5kZXRhaWwuc291cmNlIH0sXG4gICAgICAgICAgfSkpO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAoZXYuZGV0YWlsPy5zb3VyY2UgPT09ICdwYWlyZWQtYW5jaG9yJykgcmV0dXJuO1xuXG4gICAgICAvLyBUb2tlbiBzaW5nb2xvOiBzZSBjb3JyaXNwb25kZSBhIHVuJ2FuY29yYSBwYWlyZWQgcmktZW1ldHRlIGNvbiBsJ2lkIGNvbXBvc2l0byBkZWwgcG9wdXAgcGVyIGF0dGl2YXJuZSBsJ2hpZ2hsaWdodC5cbiAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ1tpZCQ9XCItdmlld1wiXScpLmZvckVhY2goKHZpZXc6IGFueSkgPT4ge1xuICAgICAgICBpZiAoIXZpZXcuc2hhZG93Um9vdCkgcmV0dXJuO1xuICAgICAgICBjb25zdCBwb3B1cCA9IHZpZXcuc2hhZG93Um9vdC5xdWVyeVNlbGVjdG9yKGAudGVpLWFwcFtkYXRhLWZyb209XCIke2tleX1cIl1gKVxuICAgICAgICAgIHx8IHZpZXcuc2hhZG93Um9vdC5xdWVyeVNlbGVjdG9yKGAudGVpLWFwcFtkYXRhLXRvPVwiJHtrZXl9XCJdYCk7XG4gICAgICAgIGlmIChwb3B1cCAmJiBwb3B1cC5pZCkge1xuICAgICAgICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCdwYi1oaWdobGlnaHQtb24nLCB7XG4gICAgICAgICAgICBkZXRhaWw6IHsga2V5OiBjaGFubmVsLCBpZDogcG9wdXAuaWQsIHNvdXJjZTogJ3BhaXJlZC1hbmNob3InIH0sXG4gICAgICAgICAgfSkpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIG9uQ2xpY2socGF5bG9hZCkge1xuICAgIGxldCB0YXJnZXQgPSBudWxsO1xuICAgIGNvbnN0IGNsaWNrUGF0aCA9IHBheWxvYWQucGF0aCB8fCBwYXlsb2FkLmNvbXBvc2VkUGF0aCgpO1xuXG4gICAgLy8gY2hpdXN1cmEgYXBwYXJhdG8gY29uIHRhc3RvXG4gICAgY29uc3QgY2xvc2VCdXR0b24gPSBjbGlja1BhdGguZmluZCgoZWwpID0+IGVsLmNsYXNzTmFtZVxuICAgICAgJiYgdHlwZW9mIGVsLmNsYXNzTmFtZSA9PT0gJ3N0cmluZydcbiAgICAgICYmIGVsLmNsYXNzTmFtZS5pbmNsdWRlcygnY2xvc2VfYXBwJykpO1xuXG4gICAgaWYgKGNsb3NlQnV0dG9uKSB7XG4gICAgICBjb25zdCBwYXJlbnRBcHBJdGVtID0gY2xvc2VCdXR0b24uY2xvc2VzdCgnLnRlaS1hcHAnKTtcbiAgICAgIGlmIChwYXJlbnRBcHBJdGVtICYmIHBhcmVudEFwcEl0ZW0uc3R5bGUpIHtcbiAgICAgICAgcGFyZW50QXBwSXRlbS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xuICAgICAgICAocGFyZW50QXBwSXRlbSBhcyBIVE1MRWxlbWVudCkuc3R5bGUudHJhbnNmb3JtID0gJyc7XG4gICAgICAgIHRoaXMucmVzZXRIaWdobGlnaHRzKCk7XG4gICAgICAgIHBheWxvYWQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBpbnNpZGVUZWlBcHAgPSBjbGlja1BhdGguZmluZCgoZWwpID0+IGVsLmNsYXNzTmFtZVxuICAgICAgJiYgdHlwZW9mIGVsLmNsYXNzTmFtZSA9PT0gJ3N0cmluZydcbiAgICAgICYmIGVsLmNsYXNzTmFtZS5pbmNsdWRlcygndGVpLWFwcCcpKTtcblxuICAgIGlmIChpbnNpZGVUZWlBcHAgJiYgKGluc2lkZVRlaUFwcCBhcyBIVE1MRWxlbWVudCkuc3R5bGUuZGlzcGxheSA9PT0gJ2Jsb2NrJykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIENoaXVzdXJhIG5vdGUgY29uIHRhc3RvXG4gICAgY29uc3QgY2xvc2VOb3RlQnV0dG9uID0gY2xpY2tQYXRoLmZpbmQoKGVsKSA9PiBlbC5jbGFzc05hbWVcbiAgICAgICYmIHR5cGVvZiBlbC5jbGFzc05hbWUgPT09ICdzdHJpbmcnXG4gICAgICAmJiBlbC5jbGFzc05hbWUuaW5jbHVkZXMoJ2Nsb3NlX25vdGUnKSk7XG5cbiAgICBpZiAoY2xvc2VOb3RlQnV0dG9uKSB7XG4gICAgICBjb25zdCBwYXJlbnROb3RlSXRlbSA9IGNsb3NlTm90ZUJ1dHRvbi5jbG9zZXN0KCcubm90ZS1pdGVtJyk7XG4gICAgICBpZiAocGFyZW50Tm90ZUl0ZW0gJiYgcGFyZW50Tm90ZUl0ZW0uc3R5bGUpIHtcbiAgICAgICAgcGFyZW50Tm90ZUl0ZW0uc3R5bGUuZGlzcGxheSA9ICdub25lJztcbiAgICAgICAgKHBhcmVudE5vdGVJdGVtIGFzIEhUTUxFbGVtZW50KS5zdHlsZS50cmFuc2Zvcm0gPSAnJztcbiAgICAgICAgdGhpcy5yZXNldEhpZ2hsaWdodHMoKTtcbiAgICAgICAgcGF5bG9hZC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChwYXlsb2FkLnBhdGgpIHtcbiAgICAgIHRhcmdldCA9IHBheWxvYWQucGF0aC5maW5kKFxuICAgICAgICAoeyB0YWdOYW1lIH0pID0+IHRhZ05hbWUgPT09ICdQQi1ISUdITElHSFQnXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICB0YXJnZXQgPSBwYXlsb2FkLmNvbXBvc2VkUGF0aCgpLmZpbmQoXG4gICAgICAgICh7IHRhZ05hbWUgfSkgPT4gdGFnTmFtZSA9PT0gJ1BCLUhJR0hMSUdIVCdcbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKHRhcmdldCAmJiB0YXJnZXQuZ2V0QXR0cmlidXRlKCd0eXBlJykgPT09ICdhcHBfbGVtJykge1xuICAgICAgY29uc3QgYXBwSWQgPSB0YXJnZXQuZ2V0QXR0cmlidXRlKCdrZXknKTtcblxuICAgICAgLy8gUG9zaXppb25lIGVsZW1lbnRvIGNsaWNjYXRvXG4gICAgICBjb25zdCBjbGlja2VkRWxlbWVudFBvc2l0aW9uID0gKHRhcmdldCBhcyBIVE1MRWxlbWVudCkuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wO1xuXG4gICAgICBjb25zdCBjbGlja2VkVmlldyA9IGNsaWNrUGF0aC5maW5kKChlbCkgPT4gZWwuaWQgJiYgZWwuaWQuZW5kc1dpdGgoJy12aWV3JykpO1xuICAgICAgY29uc3QgY2xpY2tlZFZpZXdJZCA9IGNsaWNrZWRWaWV3ID8gY2xpY2tlZFZpZXcuaWQgOiBudWxsO1xuXG4gICAgICBjb25zdCBhcHBhcmF0dXNWaWV3ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLm43LXBhcmFsbGVsLXRleHQtdmlld2VyIFtpZCQ9XCItdmlld1wiXScpO1xuXG4gICAgICBsZXQgYW5jaG9yRWxlbWVudCA9IG51bGw7XG4gICAgICBsZXQgdGVpQXBwRWxlbWVudCA9IG51bGw7XG5cbiAgICAgIGFwcGFyYXR1c1ZpZXcuZm9yRWFjaCgodmlldykgPT4ge1xuICAgICAgICAvLyBTYWx0YSBsYSB2aWV3IGluIGN1aSDDqCBzdGF0byBmYXR0byBpbCBjbGlja1xuICAgICAgICBpZiAodmlldy5pZCA9PT0gY2xpY2tlZFZpZXdJZCkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh2aWV3LnNoYWRvd1Jvb3QpIHtcbiAgICAgICAgICAvLyBDZXJjYSBwcmltYSBwZXIgaWQgZXNhdHRvOyBzZSBub24gdHJvdmF0bywgY2VyY2EgcG9wdXAgcGVyIGFuY29yYSBhcGVydHVyYSAoZGF0YS1mcm9tKVxuICAgICAgICAgIC8vIG8gYW5jb3JhIGRpIGNoaXVzdXJhIChkYXRhLXRvKVxuICAgICAgICAgIGNvbnN0IGZvdW5kID0gdmlldy5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3IoYFtpZD1cIiR7YXBwSWR9XCJdYClcbiAgICAgICAgICAgIHx8IHZpZXcuc2hhZG93Um9vdC5xdWVyeVNlbGVjdG9yKGAudGVpLWFwcFtkYXRhLWZyb209XCIke2FwcElkfVwiXWApXG4gICAgICAgICAgICB8fCB2aWV3LnNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvcihgLnRlaS1hcHBbZGF0YS10bz1cIiR7YXBwSWR9XCJdYCk7XG4gICAgICAgICAgaWYgKGZvdW5kKSB7XG4gICAgICAgICAgICBpZiAoIWFuY2hvckVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgYW5jaG9yRWxlbWVudCA9IGZvdW5kO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCBhcHBFbGVtZW50ID0gZm91bmQuY2xvc2VzdCgnLnRlaS1hcHAnKSB8fCAoZm91bmQuY2xhc3NMaXN0LmNvbnRhaW5zKCd0ZWktYXBwJykgPyBmb3VuZCA6IG51bGwpO1xuICAgICAgICAgICAgaWYgKGFwcEVsZW1lbnQgJiYgIXRlaUFwcEVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgdGVpQXBwRWxlbWVudCA9IGFwcEVsZW1lbnQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgaWYgKHRlaUFwcEVsZW1lbnQpIHtcbiAgICAgICAgY29uc3QgaXNWaXNpYmxlID0gKHRlaUFwcEVsZW1lbnQgYXMgSFRNTEVsZW1lbnQpLnN0eWxlLmRpc3BsYXkgPT09ICdibG9jayc7XG5cbiAgICAgICAgLy8gRGV0ZXJtaW5hIHNlIGlsIHBiLWhpZ2hsaWdodCBjbGljY2F0byDDqCB1bmEgY2l0IGVzdGVybmEgKGNvbnRpZW5lIGNpdCBhbm5pZGF0ZSkuXG4gICAgICAgIGNvbnN0IG5lc3RlZENpdHMgPSAodGFyZ2V0IGFzIEhUTUxFbGVtZW50KS5xdWVyeVNlbGVjdG9yQWxsKCdzcGFuLnF1b3RlJyk7XG4gICAgICAgIGNvbnN0IGlzT3V0ZXJDaXQgPSBuZXN0ZWRDaXRzLmxlbmd0aCA+IDA7XG4gICAgICAgIGNvbnN0IHNlZ0VsZW1lbnRzID0gKHRhcmdldCBhcyBIVE1MRWxlbWVudCkucXVlcnlTZWxlY3RvckFsbCgnLnNlZy1vdXRlci1pbm5lcicpO1xuXG4gICAgICAgIGlmIChpc1Zpc2libGUpIHtcbiAgICAgICAgICAodGVpQXBwRWxlbWVudCBhcyBIVE1MRWxlbWVudCkuc3R5bGUuZGlzcGxheSA9ICdub25lJztcbiAgICAgICAgICAodGVpQXBwRWxlbWVudCBhcyBIVE1MRWxlbWVudCkuc3R5bGUudHJhbnNmb3JtID0gJyc7XG4gICAgICAgICAgdGhpcy5yZXNldEhpZ2hsaWdodHMoKTtcblxuICAgICAgICAgIGlmIChpc091dGVyQ2l0KSB7XG4gICAgICAgICAgICAvLyBQYW5uZWxsbyBlc3Rlcm5vIGNoaXVzbzogcmlwcmlzdGluYSBpbCBiYWNrZ3JvdW5kIGRlaSBzZWcgYW5uaWRhdGlcbiAgICAgICAgICAgIHNlZ0VsZW1lbnRzLmZvckVhY2goKGVsKSA9PiB7XG4gICAgICAgICAgICAgIChlbCBhcyBIVE1MRWxlbWVudCkuc3R5bGUuYmFja2dyb3VuZENvbG9yID0gJyc7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgKHRlaUFwcEVsZW1lbnQgYXMgSFRNTEVsZW1lbnQpLnN0eWxlLmRpc3BsYXkgPSAnYmxvY2snO1xuXG4gICAgICAgICAgLy8gcG9zaXppb25lIGF0dHVhbGVcbiAgICAgICAgICBjb25zdCBlbGVtZW50UG9zaXRpb24gPSB0ZWlBcHBFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcDtcblxuICAgICAgICAgIC8vIGRpZmZlcmVuemFcbiAgICAgICAgICBjb25zdCBwb3NpdGlvbkRpZmZlcmVuY2UgPSBjbGlja2VkRWxlbWVudFBvc2l0aW9uIC0gZWxlbWVudFBvc2l0aW9uO1xuXG4gICAgICAgICAgLy8gc3Bvc3RhbWVudG9cbiAgICAgICAgICAodGVpQXBwRWxlbWVudCBhcyBIVE1MRWxlbWVudCkuc3R5bGUudHJhbnNmb3JtID0gYHRyYW5zbGF0ZVkoJHtwb3NpdGlvbkRpZmZlcmVuY2V9cHgpYDtcblxuICAgICAgICAgIGlmIChpc091dGVyQ2l0KSB7XG4gICAgICAgICAgICAvLyBQYW5uZWxsbyBlc3Rlcm5vIGFwZXJ0bzogZG9wbyBjaGUgcGItaGlnaGxpZ2h0IHNpIGF0dGl2YSAoZ2lhbGxvKSxcbiAgICAgICAgICAgIC8vIGltcG9zdGEgc2ZvbmRvIGJpYW5jbyBzdWkgc2VnIGNoZSBhcHBhcnRlbmdvbm8gc2VtYW50aWNhbWVudGUgYWxsYSBjaXQgZXN0ZXJuYVxuICAgICAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgICAgICAgICAgc2VnRWxlbWVudHMuZm9yRWFjaCgoZWwpID0+IHtcbiAgICAgICAgICAgICAgICAoZWwgYXMgSFRNTEVsZW1lbnQpLnN0eWxlLmJhY2tncm91bmRDb2xvciA9ICd3aGl0ZSc7XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIFBhbm5lbGxvIGludGVybm8gYXBlcnRvOiByaXByaXN0aW5hIGV2ZW50dWFsaSBzb3BwcmVzc2lvbmkgc3VpIHNlZyBpbnRlcm5pXG4gICAgICAgICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgICAgICAgICBzZWdFbGVtZW50cy5mb3JFYWNoKChlbCkgPT4ge1xuICAgICAgICAgICAgICAgIChlbCBhcyBIVE1MRWxlbWVudCkuc3R5bGUuYmFja2dyb3VuZENvbG9yID0gJyc7XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zb2xlLndhcm4oJ3RlaUFwcEVsZW1lbnQgbm9uIHRyb3ZhdG8hJyk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICh0YXJnZXQgJiYgdGFyZ2V0LmdldEF0dHJpYnV0ZSgndHlwZScpID09PSAnbm90ZV9saW5lJykge1xuICAgICAgY29uc3Qgbm90ZUlkID0gdGFyZ2V0LmdldEF0dHJpYnV0ZSgna2V5Jyk7XG5cbiAgICAgIGNvbnN0IGNsaWNrZWRFbGVtZW50UG9zaXRpb24gPSAodGFyZ2V0IGFzIEhUTUxFbGVtZW50KS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50b3A7XG5cbiAgICAgIGNvbnN0IGFwcGFyYXR1c1ZpZXcgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcubjctdGV4dC12aWV3ZXIgI2FwcGFyYXRvLXZpZXcnKTtcblxuICAgICAgY29uc3QgYW5jaG9yRWxlbWVudCA9IGFwcGFyYXR1c1ZpZXdcbiAgICAgICAgPy5zaGFkb3dSb290XG4gICAgICAgID8ucXVlcnlTZWxlY3RvcihgIyR7bm90ZUlkfWApO1xuXG4gICAgICBjb25zdCB0ZWlOb3RlRWxlbWVudCA9IGFuY2hvckVsZW1lbnRcbiAgICAgICAgPyBhbmNob3JFbGVtZW50LmNsb3Nlc3QoJy5ub3RlLWl0ZW0nKVxuICAgICAgICA6IG51bGw7XG4gICAgICBpZiAodGVpTm90ZUVsZW1lbnQpIHtcbiAgICAgICAgLy8gVmVyaWZpY2Egc2Ugw6ggdmlzaWJpbGVcbiAgICAgICAgY29uc3QgaXNWaXNpYmxlID0gKHRlaU5vdGVFbGVtZW50IGFzIEhUTUxFbGVtZW50KS5zdHlsZS5kaXNwbGF5ID09PSAnYmxvY2snO1xuXG4gICAgICAgIGlmIChpc1Zpc2libGUpIHtcbiAgICAgICAgICAodGVpTm90ZUVsZW1lbnQgYXMgSFRNTEVsZW1lbnQpLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG5cbiAgICAgICAgICAodGVpTm90ZUVsZW1lbnQgYXMgSFRNTEVsZW1lbnQpLnN0eWxlLnRyYW5zZm9ybSA9ICcnO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICh0ZWlOb3RlRWxlbWVudCBhcyBIVE1MRWxlbWVudCkuc3R5bGUuZGlzcGxheSA9ICdibG9jayc7XG5cbiAgICAgICAgICAvLyBwb3NpemlvbmUgYXR0dWFsZVxuICAgICAgICAgIGNvbnN0IGVsZW1lbnRQb3NpdGlvbiA9IHRlaU5vdGVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcDtcblxuICAgICAgICAgIC8vIGRpZmZlcmVuemFcbiAgICAgICAgICBjb25zdCBwb3NpdGlvbkRpZmZlcmVuY2UgPSBjbGlja2VkRWxlbWVudFBvc2l0aW9uIC0gZWxlbWVudFBvc2l0aW9uO1xuXG4gICAgICAgICAgLy8gc3Bvc3RhbWVudG9cbiAgICAgICAgICAodGVpTm90ZUVsZW1lbnQgYXMgSFRNTEVsZW1lbnQpLnN0eWxlLnRyYW5zZm9ybSA9IGB0cmFuc2xhdGVZKCR7cG9zaXRpb25EaWZmZXJlbmNlfXB4KWA7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHRhcmdldCAmJiB0YXJnZXQuZ2V0QXR0cmlidXRlKCd0eXBlJykgPT09ICdwYXJhbGxlbF9hbmNob3InKSB7XG4gICAgICBjb25zdCBzZWN0aW9uSWQgPSB0YXJnZXQuZ2V0QXR0cmlidXRlKCdrZXknKTtcbiAgICAgIGlmIChzZWN0aW9uSWQpIHtcbiAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLm43LXBhcmFsbGVsLXRleHQtdmlld2VyIFtpZCQ9XCItdmlld1wiXScpLmZvckVhY2goKHZpZXc6IGFueSkgPT4ge1xuICAgICAgICAgIHZpZXcuZ290b0lkKHNlY3Rpb25JZCk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAodGFyZ2V0ICYmIHRhcmdldC5nZXRBdHRyaWJ1dGUoJ2tleScpICYmIHRhcmdldC5nZXRBdHRyaWJ1dGUoJ3Njcm9sbHZpZXcnKSAhPT0gbnVsbCkge1xuICAgICAgLy8gUGVyIHNjcm9sbCBzdSBpbmRpY2VcbiAgICAgIGNvbnN0IGtleSA9IHRhcmdldC5nZXRBdHRyaWJ1dGUoJ2tleScpO1xuICAgICAgaWYgKGtleSkge1xuICAgICAgICB0aGlzLnNjcm9sbFRvSW5kZXhFbGVtZW50KGtleSk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICh0YXJnZXQgJiYgdGhpcy5vdXRwdXQudG9nZ2xlQ29sdW1uID09PSBmYWxzZSkge1xuICAgICAgaWYgKFxuICAgICAgICB0YXJnZXQuX19rZXlcbiAgICAgICAgJiYgKHRhcmdldC5jbGFzc05hbWUuaW5jbHVkZXMoJ3BlcnNvbicpXG4gICAgICAgICAgfHwgdGFyZ2V0LmNsYXNzTmFtZS5pbmNsdWRlcygncGxhY2UnKSlcbiAgICAgICkge1xuICAgICAgICB0aGlzLm91dHB1dC50b2dnbGVDb2x1bW4gPSB0cnVlO1xuICAgICAgICB0aGlzLnNjcm9sbEVsZW1lbnRzSW50b1ZpZXcodGFyZ2V0LCAnZW50aXR5JywgJyN0ZXh0LXZpZXdlci1pbmRleCcpO1xuICAgICAgfVxuICAgIH0gZWxzZSB0aGlzLm91dHB1dC50b2dnbGVDb2x1bW4gPSBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXNldHRhIHR1dHRpIGdsaSBoaWdobGlnaHQgYXR0aXZpIGRlbCB0ZXN0byBcbiAgICovXG4gIHByaXZhdGUgcmVzZXRIaWdobGlnaHRzKCkge1xuICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ1tpZCQ9XCItdmlld1wiXScpLmZvckVhY2goKHZpZXc6IGFueSkgPT4ge1xuICAgICAgaWYgKCF2aWV3LnNoYWRvd1Jvb3QpIHJldHVybjtcbiAgICAgIGNvbnN0IGNvbnRlbnQgPSB2aWV3LnNoYWRvd1Jvb3QuZ2V0RWxlbWVudEJ5SWQoJ3ZpZXcnKSB8fCB2aWV3LnNoYWRvd1Jvb3Q7XG5cbiAgICAgIC8vIGNvbnNvbGUubG9nKCdbcmVzZXRIaWdobGlnaHRzXSBwcm9jZXNzaW5nIHZpZXc6Jywgdmlldy5pZCwgJ3wgcGItaGlnaGxpZ2h0czonLCBjb250ZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ3BiLWhpZ2hsaWdodCcpLmxlbmd0aCk7XG5cbiAgICAgIC8vIFJpbXVvdmUgaWwgZ2lhbGxvIGUgcmUtYWJpbGl0YSB0dXR0aSBpIHBiLWhpZ2hsaWdodFxuICAgICAgY29udGVudC5xdWVyeVNlbGVjdG9yQWxsKCdwYi1oaWdobGlnaHQnKS5mb3JFYWNoKChobDogYW55KSA9PiB7XG4gICAgICAgIGhsLl9jbGFzc05hbWUgPSAnaGlnaGxpZ2h0LW9mZic7XG4gICAgICAgIGhsLmRpc2FibGVkID0gZmFsc2U7XG4gICAgICB9KTtcblxuICAgICAgLy8gUmltdW92ZSBjbGFzc2UgJ2Rpc2FibGUnIGRhIHF1YWxzaWFzaSBlbGVtZW50byAocmVzaWR1byBkYSBwbGFpbiByZWFkaW5nIHZpZXcpXG4gICAgICBjb250ZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5kaXNhYmxlJykuZm9yRWFjaCgoZWw6IEVsZW1lbnQpID0+IHtcbiAgICAgICAgZWwuY2xhc3NMaXN0LnJlbW92ZSgnZGlzYWJsZScpO1xuICAgICAgfSk7XG5cbiAgICAgIC8vIFJpcHJpc3RpbmEgaWwgYmFja2dyb3VuZCBkZWkgc2VnLW91dGVyLWlubmVyIChwb3RyZWJiZSBlc3NlcmUgcmltYXN0byAnd2hpdGUnXG4gICAgICBjb250ZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5zZWctb3V0ZXItaW5uZXInKS5mb3JFYWNoKChlbDogRWxlbWVudCkgPT4ge1xuICAgICAgICAoZWwgYXMgSFRNTEVsZW1lbnQpLnN0eWxlLmJhY2tncm91bmRDb2xvciA9ICcnO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICB2aWV3TGlzdGVuZXJVcGRhdGUoKSB7XG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcbiAgICAgICdwYi1zdGFydC11cGRhdGUnLFxuICAgICAgZnVuY3Rpb24gX2xpc3RlbmVyKCkge1xuICAgICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdwYi1zdGFydC11cGRhdGUnLCBfbGlzdGVuZXIsIHRydWUpO1xuICAgICAgfSxcbiAgICAgIHRydWVcbiAgICApO1xuICB9XG5cbiAgY2hhbmdlVmlldyh2aWV3LCByZWZyZXNoKSB7XG4gICAgc2V0VGltZW91dChcbiAgICAgICh2LCByKSA9PiB7XG4gICAgICAgIC8vIGNvbnNvbGUubG9nKGBURVNUIENIQU5HRSBWSUVXOiAke3ZpZXd9YCk7XG4gICAgICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQoXG4gICAgICAgICAgbmV3IEN1c3RvbUV2ZW50KCdwYi10b2dnbGUnLCB7XG4gICAgICAgICAgICBkZXRhaWw6IHtcbiAgICAgICAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgICAgICAgIHZpZXc6IHYsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIGFjdGlvbjogciA/ICdyZWZyZXNoJyA6ICcnLFxuICAgICAgICAgICAgICBrZXk6ICd0cmFuc2NyaXB0aW9uJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICAgIH0sXG4gICAgICA2MDAsXG4gICAgICB2aWV3LFxuICAgICAgcmVmcmVzaFxuICAgICk7XG4gIH1cblxuICBzY3JvbGxFbGVtZW50c0ludG9WaWV3KHRhcmdldCwgdHlwZSwgdmlldykge1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgbGV0IGVsZW1lbnQ6IGFueTtcbiAgICAgIGlmICh0eXBlID09PSAnY2hhcHRlcicpIHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIGRvY3VtZW50XG4gICAgICAgICAgICAucXVlcnlTZWxlY3RvcignLm43LXRleHQtdmlld2VyICN2aWV3MCcpXG4gICAgICAgICAgICAuc2hhZG93Um9vdC5xdWVyeVNlbGVjdG9yKCdwYi1oaWdobGlnaHQnKVxuICAgICAgICApIHtcbiAgICAgICAgICBjb25zdCBoaWdobGlnaHQgPSBkb2N1bWVudFxuICAgICAgICAgICAgLnF1ZXJ5U2VsZWN0b3IoJy5uNy10ZXh0LXZpZXdlciAjdmlldzAnKVxuICAgICAgICAgICAgLnNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvckFsbCgncGItaGlnaGxpZ2h0Jyk7XG5cbiAgICAgICAgICBjb25zdCBoaWdobGlnaHRJZCA9IGhpZ2hsaWdodFtoaWdobGlnaHQubGVuZ3RoIC0gMV0uaWQ7IC8vIHMueFxuXG4gICAgICAgICAgY29uc3QgZnJhZ21lbnROdW1iZXIgPSBoaWdobGlnaHRJZC5yZXBsYWNlKCcuJywgJ1xcXFwuJyk7XG5cbiAgICAgICAgICBlbGVtZW50ID0gZG9jdW1lbnRcbiAgICAgICAgICAgIC5xdWVyeVNlbGVjdG9yKHZpZXcpXG4gICAgICAgICAgICAuc2hhZG93Um9vdC5xdWVyeVNlbGVjdG9yKGAjJHtmcmFnbWVudE51bWJlcn1gKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmICh0eXBlID09PSAnZW50aXR5Jykge1xuICAgICAgICBjb25zdCBrZXkgPSB0YXJnZXQuX19rZXk7XG4gICAgICAgIGVsZW1lbnQgPSBkb2N1bWVudFxuICAgICAgICAgIC5xdWVyeVNlbGVjdG9yKGAubjctdGV4dC12aWV3ZXIgJHt2aWV3fWApXG4gICAgICAgICAgLnNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvcihgIyR7a2V5fWApO1xuICAgICAgfSBlbHNlIGlmICh0eXBlID09PSAnaHEnKSB7XG4gICAgICAgIGVsZW1lbnQgPSBkb2N1bWVudFxuICAgICAgICAgIC5xdWVyeVNlbGVjdG9yKGAubjctcGFyYWxsZWwtdGV4dC12aWV3ZXIgJHt2aWV3fWApXG4gICAgICAgICAgLnNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvcignLnRlaS1lbScpO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBjb250YWluZXIgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGAubjctcGFyYWxsZWwtdGV4dC12aWV3ZXIgJHt2aWV3fWApO1xuICAgICAgaWYgKGVsZW1lbnQpIHtcbiAgICAgICAgY29udGFpbmVyLnNjcm9sbFRvcCA9IGVsZW1lbnQub2Zmc2V0VG9wO1xuICAgICAgfVxuICAgIH0sIDYwMCk7XG4gIH1cblxuICAvKipcbiAgICogU2Nyb2xsYSBhbGwnZWxlbWVudG8gY29ycmlzcG9uZGVudGUgbmVsbCdpbmRpY2VcbiAgICovXG4gIHNjcm9sbFRvSW5kZXhFbGVtZW50KGtleTogc3RyaW5nKSB7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBjb25zdCBjbGVhbktleSA9IGtleS5yZXBsYWNlKCcjJywgJycpO1xuICAgICAgY29uc3Qgdmlld3MgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcubjctcGFyYWxsZWwtdGV4dC12aWV3ZXIgW2lkJD1cIi12aWV3XCJdOm5vdCgjdHJhbnNjcmlwdGlvbi12aWV3KScpO1xuXG4gICAgICBBcnJheS5mcm9tKHZpZXdzKS5zb21lKCh2aWV3KSA9PiB7XG4gICAgICAgIGNvbnN0IHRhcmdldCA9IHZpZXcuc2hhZG93Um9vdD8ucXVlcnlTZWxlY3RvcihgIyR7Y2xlYW5LZXl9YCk7XG4gICAgICAgIGlmICh0YXJnZXQpIHtcbiAgICAgICAgICAodGFyZ2V0IGFzIEhUTUxFbGVtZW50KS5zY3JvbGxJbnRvVmlldyh7IGJlaGF2aW9yOiAnc21vb3RoJywgYmxvY2s6ICdjZW50ZXInIH0pO1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH0pO1xuICAgIH0sIDMwMCk7XG4gIH1cbn1cbiJdfQ==
|
|
512
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyYWxsZWwtdGV4dC12aWV3ZXIuZHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uNy1ib2lsZXJwbGF0ZS1tdXJ1Y2Evc3JjL2xpYi9kYXRhLXNvdXJjZXMvcGFyYWxsZWwtdGV4dC12aWV3ZXIuZHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsNkRBQTZEO0FBQzdELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFFeEMsTUFBTSxPQUFPLHNCQUF1QixTQUFRLFVBQVU7SUFHcEQsOEVBQThFO0lBQzlFLHlFQUF5RTtJQUMvRCxTQUFTLENBQUMsSUFBUztRQUMzQixJQUFJLENBQUMsSUFBSTtZQUFFLE9BQU8sSUFBSSxDQUFDO1FBRXZCOzs7Ozs7OztZQVFJO1FBQ0osSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDbkIsNEJBQTRCO1lBQzFCLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsQ0FBQztnQkFDNUIsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLElBQUksT0FBTyxJQUFJLENBQUMsVUFBVSxLQUFLLFFBQVEsRUFBRSxDQUFDO29CQUM1RCxJQUFJLENBQUMsVUFBVSxHQUFHLEVBQUUsQ0FBQztnQkFDdkIsQ0FBQztnQkFDRCxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7b0JBQ25ELElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxJQUFJLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsS0FBSyxRQUFRLEVBQUUsQ0FBQzt3QkFDdEUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUM7b0JBQzVCLENBQUM7b0JBQ0QsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJ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ZCxNQUFNLFFBQVEsR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUN0QyxNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsaUVBQWlFLENBQUMsQ0FBQztZQUUzRyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO2dCQUM5QixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLGFBQWEsQ0FBQyxJQUFJLFFBQVEsRUFBRSxDQUFDLENBQUM7Z0JBQzlELElBQUksTUFBTSxFQUFFLENBQUM7b0JBQ1YsTUFBc0IsQ0FBQyxjQUFjLENBQUMsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDO29CQUNoRixPQUFPLElBQUksQ0FBQztnQkFDZCxDQUFDO2dCQUNELE9BQU8sS0FBSyxDQUFDO1lBQ2YsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDVixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBpbXBvcnQgeyBQYXJhbGxlbFRleHRWaWV3ZXJEYXRhIH0gZnJvbSAnQG5ldDcvY29tcG9uZW50cyc7XG5pbXBvcnQgeyBEYXRhU291cmNlIH0gZnJvbSAnQG5ldDcvY29yZSc7XG5cbmV4cG9ydCBjbGFzcyBNclBhcmFsbGVsVGV4dFZpZXdlckRTIGV4dGVuZHMgRGF0YVNvdXJjZSB7XG4gIGlkOiBzdHJpbmc7XG5cbiAgLy8gcHJvdGVjdGVkIHRyYW5zZm9ybShkYXRhOiBQYXJhbGxlbFRleHRWaWV3ZXJEYXRhKTogUGFyYWxsZWxUZXh0Vmlld2VyRGF0YSB7XG4gIC8vIF5eXl5eXl5eXl5eXl5zZSB2YSBidWlsZGFyZSBjb21wb25lbnRzIC0tLSAxNy0xMi0yMDI1Xl5eXl5eXl5eXl5eXl5eXl5cbiAgcHJvdGVjdGVkIHRyYW5zZm9ybShkYXRhOiBhbnkpOiBhbnkge1xuICAgIGlmICghZGF0YSkgcmV0dXJuIG51bGw7XG5cbiAgICAvKlxuICAgIGlmICh0aGlzLm9wdGlvbnMuZmFjc2ltaWxlT3B0aW9ucyAmJiBkYXRhLmZhY3NpbWlsZSkge1xuICAgICAgaWYgKCFkYXRhLmZhY3NpbWlsZS5vcHRpb25zKSB7XG4gICAgICAgIGRhdGEuZmFjc2ltaWxlLm9wdGlvbnMgPSB7fTtcbiAgICAgIH1cbiAgICAgIE9iamVjdC5rZXlzKHRoaXMub3B0aW9ucy5mYWNzaW1pbGVPcHRpb25zKS5mb3JFYWNoKChrZXkpID0+IHtcbiAgICAgICAgZGF0YS5mYWNzaW1pbGUub3B0aW9uc1trZXldID0gdGhpcy5vcHRpb25zLmZhY3NpbWlsZU9wdGlvbnNba2V5XTtcbiAgICAgIH0pO1xuICAgIH0gKi9cbiAgICBpZiAodGhpcy5vcHRpb25zKSB7XG4gICAgLy8gR2VzdGlvbmUgZGVsbGUgbGliT3B0aW9uc1xuICAgICAgaWYgKHRoaXMub3B0aW9ucy5saWJPcHRpb25zKSB7XG4gICAgICAgIGlmICghZGF0YS5saWJPcHRpb25zIHx8IHR5cGVvZiBkYXRhLmxpYk9wdGlvbnMgIT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgZGF0YS5saWJPcHRpb25zID0ge307XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmtleXModGhpcy5vcHRpb25zLmxpYk9wdGlvbnMpLmZvckVhY2goKGtleSkgPT4ge1xuICAgICAgICAgIGlmICghZGF0YS5saWJPcHRpb25zW2tleV0gfHwgdHlwZW9mIGRhdGEubGliT3B0aW9uc1trZXldICE9PSAnb2JqZWN0Jykge1xuICAgICAgICAgICAgZGF0YS5saWJPcHRpb25zW2tleV0gPSB7fTtcbiAgICAgICAgICB9XG4gICAgICAgICAgT2JqZWN0LmtleXModGhpcy5vcHRpb25zLmxpYk9wdGlvbnNba2V5XSkuZm9yRWFjaCgoc3ViS2V5KSA9PiB7XG4gICAgICAgICAgICBkYXRhLmxpYk9wdGlvbnNba2V5XVtzdWJLZXldID0gdGhpcy5vcHRpb25zLmxpYk9wdGlvbnNba2V5XVtzdWJLZXldO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgICAgLy8gRGVidWcgbGliT3B0aW9uc1xuICAgICAgLyogICAgICAgY29uc29sZS5sb2coJyBERUJVRyBsaWJPcHRpb25zOicsIHtcbiAgICAgICAgJ3RoaXMub3B0aW9ucy5saWJPcHRpb25zJzogdGhpcy5vcHRpb25zLmxpYk9wdGlvbnMsXG4gICAgICAgICdkYXRhLmxpYk9wdGlvbnMnOiBkYXRhLmxpYk9wdGlvbnMsXG4gICAgICAgICdkYXRhLmxpYk9wdGlvbnMucGJQYWdlJzogZGF0YS5saWJPcHRpb25zLnBiUGFnZSxcbiAgICAgICAgJ3VybElnbm9yZSc6IGRhdGEubGliT3B0aW9ucy5wYlBhZ2U/LnVybElnbm9yZVxuICAgICAgfSk7ICovXG4gICAgICB9XG4gICAgICAvLyBHZXN0aW9uZSBkZWxsYSBncmlkXG4gICAgICBpZiAodGhpcy5vcHRpb25zLmdyaWQpIHtcbiAgICAgICAgZGF0YS5ncmlkID0gdGhpcy5vcHRpb25zLmdyaWQ7XG4gICAgICB9XG4gICAgICAvLyBHZXN0aW9uZSBkZWkgcGFuZWxzXG4gICAgICBpZiAodGhpcy5vcHRpb25zLnBhbmVscykge1xuICAgICAgICB0aGlzLm9wdGlvbnMucGFuZWxzLmZvckVhY2goKHBhbmVsUHJvcGVydGllcykgPT4ge1xuICAgICAgICAgIGNvbnN0IHBhbmVsSW5kZXggPSBkYXRhLnBhbmVscy5maW5kSW5kZXgoXG4gICAgICAgICAgICAocGFuZWwpID0+IHBhbmVsLmlkID09PSBwYW5lbFByb3BlcnRpZXMuaWRcbiAgICAgICAgICApO1xuXG4gICAgICAgICAgaWYgKHBhbmVsSW5kZXggIT09IC0xKSB7XG4gICAgICAgICAgICBjb25zdCBhcGlQYW5lbCA9IGRhdGEucGFuZWxzW3BhbmVsSW5kZXhdO1xuICAgICAgICAgICAgY29uc3QgbWVyZ2VkID0geyAuLi5hcGlQYW5lbCwgLi4ucGFuZWxQcm9wZXJ0aWVzIH07XG4gICAgICAgICAgICAvLyBTZSBsJ0FQSSBoYSBpbnZpYXRvIHVuIGJhc2V1cmwgZSBsYSBjb25maWcgc3RhdGljYSBoYSB1cmkgdnVvdG8gcG9wb2xhIGZhY3NpbWlsZS51cmkgY29uIGlsIGJhc2V1cmwgZGluYW1pY28gZGVsbCdBUEkuXG4gICAgICAgICAgICBpZiAobWVyZ2VkLmZhY3NpbWlsZSAmJiAhbWVyZ2VkLmZhY3NpbWlsZS51cmkgJiYgYXBpUGFuZWwuYmFzZXVybCkge1xuICAgICAgICAgICAgICBtZXJnZWQuZmFjc2ltaWxlID0ge1xuICAgICAgICAgICAgICAgIC4uLm1lcmdlZC5mYWNzaW1pbGUsXG4gICAgICAgICAgICAgICAgdXJpOiBhcGlQYW5lbC5iYXNldXJsLFxuICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZGF0YS5wYW5lbHNbcGFuZWxJbmRleF0gPSBtZXJnZWQ7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gICAgY29uc3Qge1xuICAgICAgZW5hYmxlQ2xpY2tPbkVudGl0aWVzLCB0b2dnbGVDb2x1bW4sXG4gICAgICBzZWFyY2hJZCxcbiAgICAgIHNlYXJjaEFwaVxuICAgIH0gPSB0aGlzLm9wdGlvbnMgfHwge307XG4gICAgZGF0YS50b2dnbGVDb2x1bW4gPSB0b2dnbGVDb2x1bW47XG4gICAgLy8gZm9yY2UgdGVpIHB1Ymxpc2hlciBlbmRwb2ludCB2YWx1ZVxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoXG4gICAgICAncGItcGFnZS1yZWFkeScsXG4gICAgICAoZXY6IEN1c3RvbUV2ZW50KSA9PiB7XG4gICAgICAgIGNvbnN0IHsgZGV0YWlsIH0gPSBldjtcbiAgICAgICAgZGV0YWlsLmVuZHBvaW50ID0gZGF0YS5lbmRwb2ludDtcbiAgICAgIH0sXG4gICAgICB7IG9uY2U6IHRydWUgfVxuICAgICk7XG5cbiAgICBjb25zdCBwYXJhbXMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKGRvY3VtZW50LmxvY2F0aW9uLnNlYXJjaCk7XG4gICAgLy8gY29uc3QgaWQgPSBwYXJhbXMuZ2V0KCdpZCcpO1xuXG4gICAgdGhpcy5zZXR1cFZpZXdDbGlja0xpc3RlbmVycygpO1xuXG4gICAgLy8gR2VzdGlvbmUgZGVsbGEgc2V6aW9uZSBkaSBwYXJ0ZW56YSBkZWdsaSBYTUwgXG4gICAgY29uc3Qgc3RhcnRTZWN0aW9uID0gZGF0YS5zdGFydFNlY3Rpb24gfHwgdGhpcy5vcHRpb25zPy5zdGFydFNlY3Rpb247XG4gICAgaWYgKHN0YXJ0U2VjdGlvbikge1xuICAgICAgY29uc3QgaGFuZGxlRmlyc3RMb2FkID0gKCkgPT4ge1xuICAgICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdwYi1lbmQtdXBkYXRlJywgaGFuZGxlRmlyc3RMb2FkKTtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLm43LXBhcmFsbGVsLXRleHQtdmlld2VyIFtpZCQ9XCItdmlld1wiXScpLmZvckVhY2goKHZpZXc6IGFueSkgPT4ge1xuICAgICAgICAgICAgdmlldy5nb3RvSWQoc3RhcnRTZWN0aW9uKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSwgMjAwKTtcbiAgICAgIH07XG4gICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdwYi1lbmQtdXBkYXRlJywgaGFuZGxlRmlyc3RMb2FkKTtcbiAgICB9XG5cbiAgICAvKiAgICAgaWYgKGRhdGEuZG9jc1swXT8udmlldyA9PT0gJ3BhZ2UnICYmIGlkKSB7XG4gICAgICBkYXRhLmRvY3NbMF0udmlldyA9ICdkaXYnO1xuICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcbiAgICAgICAgJ3BiLWVuZC11cGRhdGUnLFxuICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICBkb2N1bWVudC5kaXNwYXRjaEV2ZW50KFxuICAgICAgICAgICAgICBuZXcgQ3VzdG9tRXZlbnQoJ3BiLXRvZ2dsZScsIHtcbiAgICAgICAgICAgICAgICBkZXRhaWw6IHtcbiAgICAgICAgICAgICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICAgICAgICAgICAgdmlldzogJ3BhZ2UnLFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIGFjdGlvbjogJ3JlZnJlc2gnLFxuICAgICAgICAgICAgICAgICAga2V5OiAndHJhbnNjcmlwdGlvbicsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBkb2N1bWVudC5kaXNwYXRjaEV2ZW50KFxuICAgICAgICAgICAgICBuZXcgQ3VzdG9tRXZlbnQoJ3BiLXRvZ2dsZScsIHtcbiAgICAgICAgICAgICAgICBkZXRhaWw6IHtcbiAgICAgICAgICAgICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICAgICAgICAgICAgdmlldzogJ3NpbmdsZScsXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgYWN0aW9uOiAncmVmcmVzaCcsXG4gICAgICAgICAgICAgICAgICBrZXk6ICdhZGRDaGFubmVsJyxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQoXG4gICAgICAgICAgICAgIG5ldyBDdXN0b21FdmVudCgncGItdG9nZ2xlJywge1xuICAgICAgICAgICAgICAgIGRldGFpbDoge1xuICAgICAgICAgICAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgICAgICAgICAgICB2aWV3OiAnc2luZ2xlJyxcbiAgICAgICAgICAgICAgICAgICAgaWQ6ICcnLFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIGFjdGlvbjogJ3JlZnJlc2gnLFxuICAgICAgICAgICAgICAgICAga2V5OiAnaW5kZXgnLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0sIDUwMCk7XG4gICAgICAgIH0sXG4gICAgICAgIHsgb25jZTogdHJ1ZSB9XG4gICAgICApO1xuICAgIH0gKi9cblxuICAgIGlmIChlbmFibGVDbGlja09uRW50aXRpZXMpIHtcbiAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3BiLWVuZC11cGRhdGUnLCAoZXY6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLnNjcm9sbEVsZW1lbnRzSW50b1ZpZXcoZXYuZGV0YWlsLCAnY2hhcHRlcicsICcjdmlldzEnKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qICAgICAgIGlmIChwYXJhbXMuZ2V0KCdocScpKSB7XG4gICAgICBpZiAoc2VhcmNoQXBpKSB7XG4gICAgICAgIGNvbnN0IHhtbFF1ZXJ5VXJsID0gYCR7c2VhcmNoQXBpLnVybFxuICAgICAgICB9P3Jlc291cmNlLWlkPSR7c2VhcmNoQXBpWydyZXNvdXJjZS1pZCddXG4gICAgICAgIH0mc2VhcmNoSWQ9JHtzZWFyY2hJZFxuICAgICAgICB9JnhtbD0ke2RhdGEuZG9jc1swXT8ueG1sXG4gICAgICAgIH0mJHtwYXJhbXMudG9TdHJpbmcoKX1gO1xuXG4gICAgICAgIGRhdGEuZG9jc1swXS51cmwgPSB4bWxRdWVyeVVybDtcbiAgICAgICAgZGF0YS5kb2NzWzBdLnJvb3RQYXRoID0gJ2FwaS9tcmNwYXJ0cyc7XG4gICAgICB9XG4gICAgICAgICAqL1xuXG4gICAgaWYgKHBhcmFtcy5nZXQoJ2hxJykpIHtcbiAgICAgIGlmIChzZWFyY2hBcGkpIHtcbiAgICAgICAgY29uc3QgbWFpbkRvYyA9IGRhdGEuZG9jcy5maW5kKChkb2MpID0+IGRvYy5pZCA9PT0gJ21haW5Eb2MnKTtcblxuICAgICAgICBpZiAobWFpbkRvYykge1xuICAgICAgICAgIGNvbnN0IHhtbFF1ZXJ5VXJsID0gYCR7c2VhcmNoQXBpLnVybFxuICAgICAgICAgIH0/cmVzb3VyY2UtaWQ9JHtzZWFyY2hBcGlbJ3Jlc291cmNlLWlkJ11cbiAgICAgICAgICB9JnNlYXJjaElkPSR7c2VhcmNoSWRcbiAgICAgICAgICB9JnhtbD0ke21haW5Eb2MueG1sXG4gICAgICAgICAgfSYke3BhcmFtcy50b1N0cmluZygpfWA7XG5cbiAgICAgICAgICBkYXRhLm1haW5Eb2MudXJsID0geG1sUXVlcnlVcmw7XG4gICAgICAgICAgZGF0YS5tYWluRG9jLnJvb3RQYXRoID0gJ2FwaS9tcmNwYXJ0cyc7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigncGItZW5kLXVwZGF0ZScsIChldjogYW55KSA9PiB7XG4gICAgICB0aGlzLnNjcm9sbEVsZW1lbnRzSW50b1ZpZXcoZXYuZGV0YWlsLCAnaHEnLCAnI3RyYW5zY3JpcHRpb24tdmlldycpO1xuICAgIH0pO1xuICAgIC8qICAgfSAgKi9cbiAgICByZXR1cm4gZGF0YTtcbiAgfVxuXG4gIGRpc3BsYXlJbmRleCgpIHtcbiAgICBpZiAodGhpcy5vdXRwdXQudG9nZ2xlQ29sdW1uKSB7XG4gICAgICB0aGlzLm91dHB1dC50b2dnbGVDb2x1bW4gPSBmYWxzZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5vdXRwdXQudG9nZ2xlQ29sdW1uID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBzZXR1cFZpZXdDbGlja0xpc3RlbmVycygpIHtcbiAgICBjb25zdCBhdHRhY2hMaXN0ZW5lcnMgPSAoKSA9PiB7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgY29uc3Qgdmlld3MgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcubjctcGFyYWxsZWwtdGV4dC12aWV3ZXIgW2lkJD1cIi12aWV3XCJdJyk7XG5cbiAgICAgICAgdmlld3MuZm9yRWFjaCgodmlldykgPT4ge1xuICAgICAgICAgIGlmICh2aWV3LmlkID09PSAndHJhbnNjcmlwdGlvbi12aWV3Jykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmICh2aWV3LnNoYWRvd1Jvb3QpIHtcbiAgICAgICAgICAgIGlmICgodmlldyBhcyBhbnkpLl9fY2xpY2tMaXN0ZW5lckF0dGFjaGVkKSB7XG4gICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgY2xpY2tMaXN0ZW5lciA9IChldmVudDogRXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgdGhpcy5vbkNsaWNrKGV2ZW50KTtcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIC8vIFNhbHZhIGlsIHJpZmVyaW1lbnRvIGUgbWFyY2EgY29tZSBhdHRhY2NhdG9cbiAgICAgICAgICAgICh2aWV3IGFzIGFueSkuX19jbGlja0xpc3RlbmVyID0gY2xpY2tMaXN0ZW5lcjtcbiAgICAgICAgICAgICh2aWV3IGFzIGFueSkuX19jbGlja0xpc3RlbmVyQXR0YWNoZWQgPSB0cnVlO1xuXG4gICAgICAgICAgICAvLyBBdHRhY2NhIGlsIGxpc3RlbmVyIGluIGNhcHR1cmUgcGhhc2UgcGVyIGNhdHR1cmFyZSB0dXR0aSBpIGNsaWNrXG4gICAgICAgICAgICB2aWV3LnNoYWRvd1Jvb3QuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBjbGlja0xpc3RlbmVyLCB0cnVlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSwgMTAwKTtcbiAgICB9O1xuXG4gICAgLy8gQXR0YWNjYSBhbCBwcmltbyBjYXJpY2FtZW50b1xuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3BiLWVuZC11cGRhdGUnLCBhdHRhY2hMaXN0ZW5lcnMpO1xuXG4gICAgc2V0VGltZW91dChhdHRhY2hMaXN0ZW5lcnMsIDUwMCk7XG5cbiAgICAvLyBDcm9zcy1oaWdobGlnaHQgcGVyIHRlcm1pbmkgbXVsdGktQGFuYTogcXVhbmRvIHVuIHBiLWhpZ2hsaWdodCBjb24gZG9wcGlhIGtleSBlbWV0dGUgcGItaGlnaGxpZ2h0LW9uIFxuICAgIC8vICByaS1lbWV0dGUgcGItaGlnaGxpZ2h0LW9uIHBlciBvZ25pIHRva2VuIGluZGl2aWR1YWxlICBjb3PDrCBpIHRlcm1pbmkgY29ycmVsYXRpIHNpIGV2aWRlbnppYW5vLlxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3BiLWhpZ2hsaWdodC1vbicsIChldjogYW55KSA9PiB7XG4gICAgICBjb25zdCBrZXkgPSBldi5kZXRhaWw/LmlkO1xuICAgICAgY29uc3QgY2hhbm5lbCA9IGV2LmRldGFpbD8ua2V5O1xuICAgICAgaWYgKCFrZXkgfHwgIWNoYW5uZWwpIHJldHVybjtcblxuICAgICAgLy8gQ2hpYXZlIGNvbXBvc2l0YSAobXVsdGktQGFuYSBcInZveDJfdm94M1wiLCBhbmNvcmUgcGFpcmVkIFwidjFhMV92MWEyXCIpOiBzcGV6emEgZSByaS1lbWV0dGkgcGVyIG9nbmkgdG9rZW4gc3UgaGlnaGxpZ2h0LWNoYW5uZWwuXG4gICAgICBpZiAoa2V5LmluY2x1ZGVzKCdfJykpIHtcbiAgICAgICAga2V5LnNwbGl0KCdfJykuZm9yRWFjaCgodG9rZW46IHN0cmluZykgPT4ge1xuICAgICAgICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCdwYi1oaWdobGlnaHQtb24nLCB7XG4gICAgICAgICAgICBkZXRhaWw6IHsga2V5OiBjaGFubmVsLCBpZDogdG9rZW4sIHNvdXJjZTogZXYuZGV0YWlsLnNvdXJjZSB9LFxuICAgICAgICAgIH0pKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYgKGV2LmRldGFpbD8uc291cmNlID09PSAncGFpcmVkLWFuY2hvcicpIHJldHVybjtcblxuICAgICAgLy8gVG9rZW4gc2luZ29sbzogc2UgY29ycmlzcG9uZGUgYSB1bidhbmNvcmEgcGFpcmVkIHJpLWVtZXR0ZSBjb24gbCdpZCBjb21wb3NpdG8gZGVsIHBvcHVwIHBlciBhdHRpdmFybmUgbCdoaWdobGlnaHQuXG4gICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdbaWQkPVwiLXZpZXdcIl0nKS5mb3JFYWNoKCh2aWV3OiBhbnkpID0+IHtcbiAgICAgICAgaWYgKCF2aWV3LnNoYWRvd1Jvb3QpIHJldHVybjtcbiAgICAgICAgY29uc3QgcG9wdXAgPSB2aWV3LnNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvcihgLnRlaS1hcHBbZGF0YS1mcm9tPVwiJHtrZXl9XCJdYClcbiAgICAgICAgICB8fCB2aWV3LnNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvcihgLnRlaS1hcHBbZGF0YS10bz1cIiR7a2V5fVwiXWApO1xuICAgICAgICBpZiAocG9wdXAgJiYgcG9wdXAuaWQpIHtcbiAgICAgICAgICBkb2N1bWVudC5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgncGItaGlnaGxpZ2h0LW9uJywge1xuICAgICAgICAgICAgZGV0YWlsOiB7IGtleTogY2hhbm5lbCwgaWQ6IHBvcHVwLmlkLCBzb3VyY2U6ICdwYWlyZWQtYW5jaG9yJyB9LFxuICAgICAgICAgIH0pKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBvbkNsaWNrKHBheWxvYWQpIHtcbiAgICBsZXQgdGFyZ2V0ID0gbnVsbDtcbiAgICBjb25zdCBjbGlja1BhdGggPSBwYXlsb2FkLnBhdGggfHwgcGF5bG9hZC5jb21wb3NlZFBhdGgoKTtcblxuICAgIC8vIGNoaXVzdXJhIGFwcGFyYXRvIGNvbiB0YXN0b1xuICAgIGNvbnN0IGNsb3NlQnV0dG9uID0gY2xpY2tQYXRoLmZpbmQoKGVsKSA9PiBlbC5jbGFzc05hbWVcbiAgICAgICYmIHR5cGVvZiBlbC5jbGFzc05hbWUgPT09ICdzdHJpbmcnXG4gICAgICAmJiBlbC5jbGFzc05hbWUuaW5jbHVkZXMoJ2Nsb3NlX2FwcCcpKTtcblxuICAgIGlmIChjbG9zZUJ1dHRvbikge1xuICAgICAgY29uc3QgcGFyZW50QXBwSXRlbSA9IGNsb3NlQnV0dG9uLmNsb3Nlc3QoJy50ZWktYXBwJyk7XG4gICAgICBpZiAocGFyZW50QXBwSXRlbSAmJiBwYXJlbnRBcHBJdGVtLnN0eWxlKSB7XG4gICAgICAgIHBhcmVudEFwcEl0ZW0uc3R5bGUuZGlzcGxheSA9ICdub25lJztcbiAgICAgICAgKHBhcmVudEFwcEl0ZW0gYXMgSFRNTEVsZW1lbnQpLnN0eWxlLnRyYW5zZm9ybSA9ICcnO1xuICAgICAgICB0aGlzLnJlc2V0SGlnaGxpZ2h0cygpO1xuICAgICAgICBwYXlsb2FkLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgaW5zaWRlVGVpQXBwID0gY2xpY2tQYXRoLmZpbmQoKGVsKSA9PiBlbC5jbGFzc05hbWVcbiAgICAgICYmIHR5cGVvZiBlbC5jbGFzc05hbWUgPT09ICdzdHJpbmcnXG4gICAgICAmJiBlbC5jbGFzc05hbWUuaW5jbHVkZXMoJ3RlaS1hcHAnKSk7XG5cbiAgICBpZiAoaW5zaWRlVGVpQXBwICYmIChpbnNpZGVUZWlBcHAgYXMgSFRNTEVsZW1lbnQpLnN0eWxlLmRpc3BsYXkgPT09ICdibG9jaycpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBDaGl1c3VyYSBub3RlIGNvbiB0YXN0b1xuICAgIGNvbnN0IGNsb3NlTm90ZUJ1dHRvbiA9IGNsaWNrUGF0aC5maW5kKChlbCkgPT4gZWwuY2xhc3NOYW1lXG4gICAgICAmJiB0eXBlb2YgZWwuY2xhc3NOYW1lID09PSAnc3RyaW5nJ1xuICAgICAgJiYgZWwuY2xhc3NOYW1lLmluY2x1ZGVzKCdjbG9zZV9ub3RlJykpO1xuXG4gICAgaWYgKGNsb3NlTm90ZUJ1dHRvbikge1xuICAgICAgY29uc3QgcGFyZW50Tm90ZUl0ZW0gPSBjbG9zZU5vdGVCdXR0b24uY2xvc2VzdCgnLm5vdGUtaXRlbScpO1xuICAgICAgaWYgKHBhcmVudE5vdGVJdGVtICYmIHBhcmVudE5vdGVJdGVtLnN0eWxlKSB7XG4gICAgICAgIHBhcmVudE5vdGVJdGVtLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gICAgICAgIChwYXJlbnROb3RlSXRlbSBhcyBIVE1MRWxlbWVudCkuc3R5bGUudHJhbnNmb3JtID0gJyc7XG4gICAgICAgIHRoaXMucmVzZXRIaWdobGlnaHRzKCk7XG4gICAgICAgIHBheWxvYWQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAocGF5bG9hZC5wYXRoKSB7XG4gICAgICB0YXJnZXQgPSBwYXlsb2FkLnBhdGguZmluZChcbiAgICAgICAgKHsgdGFnTmFtZSB9KSA9PiB0YWdOYW1lID09PSAnUEItSElHSExJR0hUJ1xuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGFyZ2V0ID0gcGF5bG9hZC5jb21wb3NlZFBhdGgoKS5maW5kKFxuICAgICAgICAoeyB0YWdOYW1lIH0pID0+IHRhZ05hbWUgPT09ICdQQi1ISUdITElHSFQnXG4gICAgICApO1xuICAgIH1cblxuICAgIGlmICh0YXJnZXQgJiYgdGFyZ2V0LmdldEF0dHJpYnV0ZSgndHlwZScpID09PSAnYXBwX2xlbScpIHtcbiAgICAgIGNvbnN0IGFwcElkID0gdGFyZ2V0LmdldEF0dHJpYnV0ZSgna2V5Jyk7XG5cbiAgICAgIC8vIFBvc2l6aW9uZSBlbGVtZW50byBjbGljY2F0b1xuICAgICAgY29uc3QgY2xpY2tlZEVsZW1lbnRQb3NpdGlvbiA9ICh0YXJnZXQgYXMgSFRNTEVsZW1lbnQpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcDtcblxuICAgICAgY29uc3QgY2xpY2tlZFZpZXcgPSBjbGlja1BhdGguZmluZCgoZWwpID0+IGVsLmlkICYmIGVsLmlkLmVuZHNXaXRoKCctdmlldycpKTtcbiAgICAgIGNvbnN0IGNsaWNrZWRWaWV3SWQgPSBjbGlja2VkVmlldyA/IGNsaWNrZWRWaWV3LmlkIDogbnVsbDtcblxuICAgICAgY29uc3QgYXBwYXJhdHVzVmlldyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5uNy1wYXJhbGxlbC10ZXh0LXZpZXdlciBbaWQkPVwiLXZpZXdcIl0nKTtcblxuICAgICAgbGV0IGFuY2hvckVsZW1lbnQgPSBudWxsO1xuICAgICAgbGV0IHRlaUFwcEVsZW1lbnQgPSBudWxsO1xuXG4gICAgICBhcHBhcmF0dXNWaWV3LmZvckVhY2goKHZpZXcpID0+IHtcbiAgICAgICAgLy8gU2FsdGEgbGEgdmlldyBpbiBjdWkgw6ggc3RhdG8gZmF0dG8gaWwgY2xpY2tcbiAgICAgICAgaWYgKHZpZXcuaWQgPT09IGNsaWNrZWRWaWV3SWQpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodmlldy5zaGFkb3dSb290KSB7XG4gICAgICAgICAgLy8gQ2VyY2EgcHJpbWEgcGVyIGlkIGVzYXR0bzsgc2Ugbm9uIHRyb3ZhdG8sIGNlcmNhIHBvcHVwIHBlciBhbmNvcmEgYXBlcnR1cmEgKGRhdGEtZnJvbSlcbiAgICAgICAgICAvLyBvIGFuY29yYSBkaSBjaGl1c3VyYSAoZGF0YS10bylcbiAgICAgICAgICBjb25zdCBmb3VuZCA9IHZpZXcuc2hhZG93Um9vdC5xdWVyeVNlbGVjdG9yKGBbaWQ9XCIke2FwcElkfVwiXWApXG4gICAgICAgICAgICB8fCB2aWV3LnNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvcihgLnRlaS1hcHBbZGF0YS1mcm9tPVwiJHthcHBJZH1cIl1gKVxuICAgICAgICAgICAgfHwgdmlldy5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3IoYC50ZWktYXBwW2RhdGEtdG89XCIke2FwcElkfVwiXWApO1xuICAgICAgICAgIGlmIChmb3VuZCkge1xuICAgICAgICAgICAgaWYgKCFhbmNob3JFbGVtZW50KSB7XG4gICAgICAgICAgICAgIGFuY2hvckVsZW1lbnQgPSBmb3VuZDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgYXBwRWxlbWVudCA9IGZvdW5kLmNsb3Nlc3QoJy50ZWktYXBwJykgfHwgKGZvdW5kLmNsYXNzTGlzdC5jb250YWlucygndGVpLWFwcCcpID8gZm91bmQgOiBudWxsKTtcbiAgICAgICAgICAgIGlmIChhcHBFbGVtZW50ICYmICF0ZWlBcHBFbGVtZW50KSB7XG4gICAgICAgICAgICAgIHRlaUFwcEVsZW1lbnQgPSBhcHBFbGVtZW50O1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIGlmICh0ZWlBcHBFbGVtZW50KSB7XG4gICAgICAgIGNvbnN0IGlzVmlzaWJsZSA9ICh0ZWlBcHBFbGVtZW50IGFzIEhUTUxFbGVtZW50KS5zdHlsZS5kaXNwbGF5ID09PSAnYmxvY2snO1xuXG4gICAgICAgIC8vIERldGVybWluYSBzZSBpbCBwYi1oaWdobGlnaHQgY2xpY2NhdG8gw6ggdW5hIGNpdCBlc3Rlcm5hIChjb250aWVuZSBjaXQgYW5uaWRhdGUpLlxuICAgICAgICBjb25zdCBuZXN0ZWRDaXRzID0gKHRhcmdldCBhcyBIVE1MRWxlbWVudCkucXVlcnlTZWxlY3RvckFsbCgnc3Bhbi5xdW90ZScpO1xuICAgICAgICBjb25zdCBpc091dGVyQ2l0ID0gbmVzdGVkQ2l0cy5sZW5ndGggPiAwO1xuICAgICAgICBjb25zdCBzZWdPdXRlcklubmVyID0gKHRhcmdldCBhcyBIVE1MRWxlbWVudCkucXVlcnlTZWxlY3RvckFsbCgnLnNlZy1vdXRlci1pbm5lcicpO1xuICAgICAgICBjb25zdCBzZWdQYXJ0RiA9ICh0YXJnZXQgYXMgSFRNTEVsZW1lbnQpLnF1ZXJ5U2VsZWN0b3JBbGwoJy5zZWctcGFydC1mJyk7XG5cbiAgICAgICAgaWYgKGlzVmlzaWJsZSkge1xuICAgICAgICAgICh0ZWlBcHBFbGVtZW50IGFzIEhUTUxFbGVtZW50KS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xuICAgICAgICAgICh0ZWlBcHBFbGVtZW50IGFzIEhUTUxFbGVtZW50KS5zdHlsZS50cmFuc2Zvcm0gPSAnJztcbiAgICAgICAgICB0aGlzLnJlc2V0SGlnaGxpZ2h0cygpO1xuXG4gICAgICAgICAgaWYgKGlzT3V0ZXJDaXQpIHtcbiAgICAgICAgICAgIC8vIFBhbm5lbGxvIGVzdGVybm8gY2hpdXNvOiByaXByaXN0aW5hIGlsIGJhY2tncm91bmQgZGVpIHNlZyBhbm5pZGF0aVxuICAgICAgICAgICAgc2VnT3V0ZXJJbm5lci5mb3JFYWNoKChlbCkgPT4ge1xuICAgICAgICAgICAgICAoZWwgYXMgSFRNTEVsZW1lbnQpLnN0eWxlLmJhY2tncm91bmRDb2xvciA9ICcnO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBzZWdQYXJ0Ri5mb3JFYWNoKChlbCkgPT4ge1xuICAgICAgICAgICAgICAoZWwgYXMgSFRNTEVsZW1lbnQpLnN0eWxlLmJhY2tncm91bmRDb2xvciA9ICcnO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICh0ZWlBcHBFbGVtZW50IGFzIEhUTUxFbGVtZW50KS5zdHlsZS5kaXNwbGF5ID0gJ2Jsb2NrJztcblxuICAgICAgICAgIC8vIHBvc2l6aW9uZSBhdHR1YWxlXG4gICAgICAgICAgY29uc3QgZWxlbWVudFBvc2l0aW9uID0gdGVpQXBwRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50b3A7XG5cbiAgICAgICAgICAvLyBkaWZmZXJlbnphXG4gICAgICAgICAgY29uc3QgcG9zaXRpb25EaWZmZXJlbmNlID0gY2xpY2tlZEVsZW1lbnRQb3NpdGlvbiAtIGVsZW1lbnRQb3NpdGlvbjtcblxuICAgICAgICAgIC8vIHNwb3N0YW1lbnRvXG4gICAgICAgICAgKHRlaUFwcEVsZW1lbnQgYXMgSFRNTEVsZW1lbnQpLnN0eWxlLnRyYW5zZm9ybSA9IGB0cmFuc2xhdGVZKCR7cG9zaXRpb25EaWZmZXJlbmNlfXB4KWA7XG5cbiAgICAgICAgICBpZiAoaXNPdXRlckNpdCkge1xuICAgICAgICAgICAgLy8gUGFubmVsbG8gZXN0ZXJubyBhcGVydG86IGRvcG8gY2hlIHBiLWhpZ2hsaWdodCBzaSBhdHRpdmEgKGdpYWxsbyksXG4gICAgICAgICAgICAvLyBpbXBvc3RhIHNmb25kbyBiaWFuY28gc3Ugc2VnLW91dGVyLWlubmVyIGUgc2VnLXBhcnQtZlxuICAgICAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgICAgICAgICAgc2VnT3V0ZXJJbm5lci5mb3JFYWNoKChlbCkgPT4ge1xuICAgICAgICAgICAgICAgIChlbCBhcyBIVE1MRWxlbWVudCkuc3R5bGUuYmFja2dyb3VuZENvbG9yID0gJ3doaXRlJztcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIHNlZ1BhcnRGLmZvckVhY2goKGVsKSA9PiB7XG4gICAgICAgICAgICAgICAgKGVsIGFzIEhUTUxFbGVtZW50KS5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSAnd2hpdGUnO1xuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBQYW5uZWxsbyBpbnRlcm5vIGFwZXJ0bzogcmlwcmlzdGluYSBldmVudHVhbGkgc29wcHJlc3Npb25pIHN1aSBzZWcgaW50ZXJuaVxuICAgICAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgICAgICAgICAgc2VnT3V0ZXJJbm5lci5mb3JFYWNoKChlbCkgPT4ge1xuICAgICAgICAgICAgICAgIChlbCBhcyBIVE1MRWxlbWVudCkuc3R5bGUuYmFja2dyb3VuZENvbG9yID0gJyc7XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zb2xlLndhcm4oJ3RlaUFwcEVsZW1lbnQgbm9uIHRyb3ZhdG8hJyk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICh0YXJnZXQgJiYgdGFyZ2V0LmdldEF0dHJpYnV0ZSgndHlwZScpID09PSAnbm90ZV9saW5lJykge1xuICAgICAgY29uc3Qgbm90ZUlkID0gdGFyZ2V0LmdldEF0dHJpYnV0ZSgna2V5Jyk7XG5cbiAgICAgIGNvbnN0IGNsaWNrZWRFbGVtZW50UG9zaXRpb24gPSAodGFyZ2V0IGFzIEhUTUxFbGVtZW50KS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50b3A7XG5cbiAgICAgIGNvbnN0IGFwcGFyYXR1c1ZpZXcgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcubjctdGV4dC12aWV3ZXIgI2FwcGFyYXRvLXZpZXcnKTtcblxuICAgICAgY29uc3QgYW5jaG9yRWxlbWVudCA9IGFwcGFyYXR1c1ZpZXdcbiAgICAgICAgPy5zaGFkb3dSb290XG4gICAgICAgID8ucXVlcnlTZWxlY3RvcihgIyR7bm90ZUlkfWApO1xuXG4gICAgICBjb25zdCB0ZWlOb3RlRWxlbWVudCA9IGFuY2hvckVsZW1lbnRcbiAgICAgICAgPyBhbmNob3JFbGVtZW50LmNsb3Nlc3QoJy5ub3RlLWl0ZW0nKVxuICAgICAgICA6IG51bGw7XG4gICAgICBpZiAodGVpTm90ZUVsZW1lbnQpIHtcbiAgICAgICAgLy8gVmVyaWZpY2Egc2Ugw6ggdmlzaWJpbGVcbiAgICAgICAgY29uc3QgaXNWaXNpYmxlID0gKHRlaU5vdGVFbGVtZW50IGFzIEhUTUxFbGVtZW50KS5zdHlsZS5kaXNwbGF5ID09PSAnYmxvY2snO1xuXG4gICAgICAgIGlmIChpc1Zpc2libGUpIHtcbiAgICAgICAgICAodGVpTm90ZUVsZW1lbnQgYXMgSFRNTEVsZW1lbnQpLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG5cbiAgICAgICAgICAodGVpTm90ZUVsZW1lbnQgYXMgSFRNTEVsZW1lbnQpLnN0eWxlLnRyYW5zZm9ybSA9ICcnO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICh0ZWlOb3RlRWxlbWVudCBhcyBIVE1MRWxlbWVudCkuc3R5bGUuZGlzcGxheSA9ICdibG9jayc7XG5cbiAgICAgICAgICAvLyBwb3NpemlvbmUgYXR0dWFsZVxuICAgICAgICAgIGNvbnN0IGVsZW1lbnRQb3NpdGlvbiA9IHRlaU5vdGVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcDtcblxuICAgICAgICAgIC8vIGRpZmZlcmVuemFcbiAgICAgICAgICBjb25zdCBwb3NpdGlvbkRpZmZlcmVuY2UgPSBjbGlja2VkRWxlbWVudFBvc2l0aW9uIC0gZWxlbWVudFBvc2l0aW9uO1xuXG4gICAgICAgICAgLy8gc3Bvc3RhbWVudG9cbiAgICAgICAgICAodGVpTm90ZUVsZW1lbnQgYXMgSFRNTEVsZW1lbnQpLnN0eWxlLnRyYW5zZm9ybSA9IGB0cmFuc2xhdGVZKCR7cG9zaXRpb25EaWZmZXJlbmNlfXB4KWA7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHRhcmdldCAmJiB0YXJnZXQuZ2V0QXR0cmlidXRlKCd0eXBlJykgPT09ICdwYXJhbGxlbF9hbmNob3InKSB7XG4gICAgICBjb25zdCBzZWN0aW9uSWQgPSB0YXJnZXQuZ2V0QXR0cmlidXRlKCdrZXknKTtcbiAgICAgIGlmIChzZWN0aW9uSWQpIHtcbiAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLm43LXBhcmFsbGVsLXRleHQtdmlld2VyIFtpZCQ9XCItdmlld1wiXScpLmZvckVhY2goKHZpZXc6IGFueSkgPT4ge1xuICAgICAgICAgIHZpZXcuZ290b0lkKHNlY3Rpb25JZCk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAodGFyZ2V0ICYmIHRhcmdldC5nZXRBdHRyaWJ1dGUoJ2tleScpICYmIHRhcmdldC5nZXRBdHRyaWJ1dGUoJ3Njcm9sbHZpZXcnKSAhPT0gbnVsbCkge1xuICAgICAgLy8gUGVyIHNjcm9sbCBzdSBpbmRpY2VcbiAgICAgIGNvbnN0IGtleSA9IHRhcmdldC5nZXRBdHRyaWJ1dGUoJ2tleScpO1xuICAgICAgaWYgKGtleSkge1xuICAgICAgICB0aGlzLnNjcm9sbFRvSW5kZXhFbGVtZW50KGtleSk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICh0YXJnZXQgJiYgdGhpcy5vdXRwdXQudG9nZ2xlQ29sdW1uID09PSBmYWxzZSkge1xuICAgICAgaWYgKFxuICAgICAgICB0YXJnZXQuX19rZXlcbiAgICAgICAgJiYgKHRhcmdldC5jbGFzc05hbWUuaW5jbHVkZXMoJ3BlcnNvbicpXG4gICAgICAgICAgfHwgdGFyZ2V0LmNsYXNzTmFtZS5pbmNsdWRlcygncGxhY2UnKSlcbiAgICAgICkge1xuICAgICAgICB0aGlzLm91dHB1dC50b2dnbGVDb2x1bW4gPSB0cnVlO1xuICAgICAgICB0aGlzLnNjcm9sbEVsZW1lbnRzSW50b1ZpZXcodGFyZ2V0LCAnZW50aXR5JywgJyN0ZXh0LXZpZXdlci1pbmRleCcpO1xuICAgICAgfVxuICAgIH0gZWxzZSB0aGlzLm91dHB1dC50b2dnbGVDb2x1bW4gPSBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXNldHRhIHR1dHRpIGdsaSBoaWdobGlnaHQgYXR0aXZpIGRlbCB0ZXN0byBcbiAgICovXG4gIHByaXZhdGUgcmVzZXRIaWdobGlnaHRzKCkge1xuICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ1tpZCQ9XCItdmlld1wiXScpLmZvckVhY2goKHZpZXc6IGFueSkgPT4ge1xuICAgICAgaWYgKCF2aWV3LnNoYWRvd1Jvb3QpIHJldHVybjtcbiAgICAgIGNvbnN0IGNvbnRlbnQgPSB2aWV3LnNoYWRvd1Jvb3QuZ2V0RWxlbWVudEJ5SWQoJ3ZpZXcnKSB8fCB2aWV3LnNoYWRvd1Jvb3Q7XG5cbiAgICAgIC8vIGNvbnNvbGUubG9nKCdbcmVzZXRIaWdobGlnaHRzXSBwcm9jZXNzaW5nIHZpZXc6Jywgdmlldy5pZCwgJ3wgcGItaGlnaGxpZ2h0czonLCBjb250ZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ3BiLWhpZ2hsaWdodCcpLmxlbmd0aCk7XG5cbiAgICAgIC8vIFJpbXVvdmUgaWwgZ2lhbGxvIGUgcmUtYWJpbGl0YSB0dXR0aSBpIHBiLWhpZ2hsaWdodFxuICAgICAgY29udGVudC5xdWVyeVNlbGVjdG9yQWxsKCdwYi1oaWdobGlnaHQnKS5mb3JFYWNoKChobDogYW55KSA9PiB7XG4gICAgICAgIGhsLl9jbGFzc05hbWUgPSAnaGlnaGxpZ2h0LW9mZic7XG4gICAgICAgIGhsLmRpc2FibGVkID0gZmFsc2U7XG4gICAgICB9KTtcblxuICAgICAgLy8gUmltdW92ZSBjbGFzc2UgJ2Rpc2FibGUnIGRhIHF1YWxzaWFzaSBlbGVtZW50byAocmVzaWR1byBkYSBwbGFpbiByZWFkaW5nIHZpZXcpXG4gICAgICBjb250ZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5kaXNhYmxlJykuZm9yRWFjaCgoZWw6IEVsZW1lbnQpID0+IHtcbiAgICAgICAgZWwuY2xhc3NMaXN0LnJlbW92ZSgnZGlzYWJsZScpO1xuICAgICAgfSk7XG5cbiAgICAgIC8vIFJpcHJpc3RpbmEgaWwgYmFja2dyb3VuZCBkZWkgc2VnLW91dGVyLWlubmVyIGUgc2VnLXBhcnQtZiAocG90cmViYmVybyBlc3NlcmUgcmltYXN0aSAnd2hpdGUnKVxuICAgICAgY29udGVudC5xdWVyeVNlbGVjdG9yQWxsKCcuc2VnLW91dGVyLWlubmVyJykuZm9yRWFjaCgoZWw6IEVsZW1lbnQpID0+IHtcbiAgICAgICAgKGVsIGFzIEhUTUxFbGVtZW50KS5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSAnJztcbiAgICAgIH0pO1xuICAgICAgY29udGVudC5xdWVyeVNlbGVjdG9yQWxsKCcuc2VnLXBhcnQtZicpLmZvckVhY2goKGVsOiBFbGVtZW50KSA9PiB7XG4gICAgICAgIChlbCBhcyBIVE1MRWxlbWVudCkuc3R5bGUuYmFja2dyb3VuZENvbG9yID0gJyc7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIHZpZXdMaXN0ZW5lclVwZGF0ZSgpIHtcbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFxuICAgICAgJ3BiLXN0YXJ0LXVwZGF0ZScsXG4gICAgICBmdW5jdGlvbiBfbGlzdGVuZXIoKSB7XG4gICAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3BiLXN0YXJ0LXVwZGF0ZScsIF9saXN0ZW5lciwgdHJ1ZSk7XG4gICAgICB9LFxuICAgICAgdHJ1ZVxuICAgICk7XG4gIH1cblxuICBjaGFuZ2VWaWV3KHZpZXcsIHJlZnJlc2gpIHtcbiAgICBzZXRUaW1lb3V0KFxuICAgICAgKHYsIHIpID0+IHtcbiAgICAgICAgLy8gY29uc29sZS5sb2coYFRFU1QgQ0hBTkdFIFZJRVc6ICR7dmlld31gKTtcbiAgICAgICAgZG9jdW1lbnQuZGlzcGF0Y2hFdmVudChcbiAgICAgICAgICBuZXcgQ3VzdG9tRXZlbnQoJ3BiLXRvZ2dsZScsIHtcbiAgICAgICAgICAgIGRldGFpbDoge1xuICAgICAgICAgICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICAgICAgdmlldzogdixcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgYWN0aW9uOiByID8gJ3JlZnJlc2gnIDogJycsXG4gICAgICAgICAgICAgIGtleTogJ3RyYW5zY3JpcHRpb24nLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgICAgfSxcbiAgICAgIDYwMCxcbiAgICAgIHZpZXcsXG4gICAgICByZWZyZXNoXG4gICAgKTtcbiAgfVxuXG4gIHNjcm9sbEVsZW1lbnRzSW50b1ZpZXcodGFyZ2V0LCB0eXBlLCB2aWV3KSB7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBsZXQgZWxlbWVudDogYW55O1xuICAgICAgaWYgKHR5cGUgPT09ICdjaGFwdGVyJykge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgZG9jdW1lbnRcbiAgICAgICAgICAgIC5xdWVyeVNlbGVjdG9yKCcubjctdGV4dC12aWV3ZXIgI3ZpZXcwJylcbiAgICAgICAgICAgIC5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3IoJ3BiLWhpZ2hsaWdodCcpXG4gICAgICAgICkge1xuICAgICAgICAgIGNvbnN0IGhpZ2hsaWdodCA9IGRvY3VtZW50XG4gICAgICAgICAgICAucXVlcnlTZWxlY3RvcignLm43LXRleHQtdmlld2VyICN2aWV3MCcpXG4gICAgICAgICAgICAuc2hhZG93Um9vdC5xdWVyeVNlbGVjdG9yQWxsKCdwYi1oaWdobGlnaHQnKTtcblxuICAgICAgICAgIGNvbnN0IGhpZ2hsaWdodElkID0gaGlnaGxpZ2h0W2hpZ2hsaWdodC5sZW5ndGggLSAxXS5pZDsgLy8gcy54XG5cbiAgICAgICAgICBjb25zdCBmcmFnbWVudE51bWJlciA9IGhpZ2hsaWdodElkLnJlcGxhY2UoJy4nLCAnXFxcXC4nKTtcblxuICAgICAgICAgIGVsZW1lbnQgPSBkb2N1bWVudFxuICAgICAgICAgICAgLnF1ZXJ5U2VsZWN0b3IodmlldylcbiAgICAgICAgICAgIC5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3IoYCMke2ZyYWdtZW50TnVtYmVyfWApO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdlbnRpdHknKSB7XG4gICAgICAgIGNvbnN0IGtleSA9IHRhcmdldC5fX2tleTtcbiAgICAgICAgZWxlbWVudCA9IGRvY3VtZW50XG4gICAgICAgICAgLnF1ZXJ5U2VsZWN0b3IoYC5uNy10ZXh0LXZpZXdlciAke3ZpZXd9YClcbiAgICAgICAgICAuc2hhZG93Um9vdC5xdWVyeVNlbGVjdG9yKGAjJHtrZXl9YCk7XG4gICAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdocScpIHtcbiAgICAgICAgZWxlbWVudCA9IGRvY3VtZW50XG4gICAgICAgICAgLnF1ZXJ5U2VsZWN0b3IoYC5uNy1wYXJhbGxlbC10ZXh0LXZpZXdlciAke3ZpZXd9YClcbiAgICAgICAgICAuc2hhZG93Um9vdC5xdWVyeVNlbGVjdG9yKCcudGVpLWVtJyk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGNvbnRhaW5lciA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoYC5uNy1wYXJhbGxlbC10ZXh0LXZpZXdlciAke3ZpZXd9YCk7XG4gICAgICBpZiAoZWxlbWVudCkge1xuICAgICAgICBjb250YWluZXIuc2Nyb2xsVG9wID0gZWxlbWVudC5vZmZzZXRUb3A7XG4gICAgICB9XG4gICAgfSwgNjAwKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTY3JvbGxhIGFsbCdlbGVtZW50byBjb3JyaXNwb25kZW50ZSBuZWxsJ2luZGljZVxuICAgKi9cbiAgc2Nyb2xsVG9JbmRleEVsZW1lbnQoa2V5OiBzdHJpbmcpIHtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGNvbnN0IGNsZWFuS2V5ID0ga2V5LnJlcGxhY2UoJyMnLCAnJyk7XG4gICAgICBjb25zdCB2aWV3cyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5uNy1wYXJhbGxlbC10ZXh0LXZpZXdlciBbaWQkPVwiLXZpZXdcIl06bm90KCN0cmFuc2NyaXB0aW9uLXZpZXcpJyk7XG5cbiAgICAgIEFycmF5LmZyb20odmlld3MpLnNvbWUoKHZpZXcpID0+IHtcbiAgICAgICAgY29uc3QgdGFyZ2V0ID0gdmlldy5zaGFkb3dSb290Py5xdWVyeVNlbGVjdG9yKGAjJHtjbGVhbktleX1gKTtcbiAgICAgICAgaWYgKHRhcmdldCkge1xuICAgICAgICAgICh0YXJnZXQgYXMgSFRNTEVsZW1lbnQpLnNjcm9sbEludG9WaWV3KHsgYmVoYXZpb3I6ICdzbW9vdGgnLCBibG9jazogJ2NlbnRlcicgfSk7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfSk7XG4gICAgfSwgMzAwKTtcbiAgfVxufVxuIl19
|
|
@@ -1026,9 +1026,9 @@ class MrBreadcrumbsDS extends DataSource {
|
|
|
1026
1026
|
|
|
1027
1027
|
class MrButtonDS extends DataSource {
|
|
1028
1028
|
transform() {
|
|
1029
|
-
const { iconLeft, iconRight } = this.options;
|
|
1029
|
+
const { iconLeft, iconRight, text } = this.options;
|
|
1030
1030
|
return {
|
|
1031
|
-
text: 'Scarica PDF',
|
|
1031
|
+
text: text || 'Scarica PDF',
|
|
1032
1032
|
iconLeft,
|
|
1033
1033
|
iconRight,
|
|
1034
1034
|
classes: 'n7-btn',
|
|
@@ -2875,14 +2875,18 @@ class MrParallelTextViewerDS extends DataSource {
|
|
|
2875
2875
|
// Determina se il pb-highlight cliccato è una cit esterna (contiene cit annidate).
|
|
2876
2876
|
const nestedCits = target.querySelectorAll('span.quote');
|
|
2877
2877
|
const isOuterCit = nestedCits.length > 0;
|
|
2878
|
-
const
|
|
2878
|
+
const segOuterInner = target.querySelectorAll('.seg-outer-inner');
|
|
2879
|
+
const segPartF = target.querySelectorAll('.seg-part-f');
|
|
2879
2880
|
if (isVisible) {
|
|
2880
2881
|
teiAppElement.style.display = 'none';
|
|
2881
2882
|
teiAppElement.style.transform = '';
|
|
2882
2883
|
this.resetHighlights();
|
|
2883
2884
|
if (isOuterCit) {
|
|
2884
2885
|
// Pannello esterno chiuso: ripristina il background dei seg annidati
|
|
2885
|
-
|
|
2886
|
+
segOuterInner.forEach((el) => {
|
|
2887
|
+
el.style.backgroundColor = '';
|
|
2888
|
+
});
|
|
2889
|
+
segPartF.forEach((el) => {
|
|
2886
2890
|
el.style.backgroundColor = '';
|
|
2887
2891
|
});
|
|
2888
2892
|
}
|
|
@@ -2897,9 +2901,12 @@ class MrParallelTextViewerDS extends DataSource {
|
|
|
2897
2901
|
teiAppElement.style.transform = `translateY(${positionDifference}px)`;
|
|
2898
2902
|
if (isOuterCit) {
|
|
2899
2903
|
// Pannello esterno aperto: dopo che pb-highlight si attiva (giallo),
|
|
2900
|
-
// imposta sfondo bianco
|
|
2904
|
+
// imposta sfondo bianco su seg-outer-inner e seg-part-f
|
|
2901
2905
|
requestAnimationFrame(() => {
|
|
2902
|
-
|
|
2906
|
+
segOuterInner.forEach((el) => {
|
|
2907
|
+
el.style.backgroundColor = 'white';
|
|
2908
|
+
});
|
|
2909
|
+
segPartF.forEach((el) => {
|
|
2903
2910
|
el.style.backgroundColor = 'white';
|
|
2904
2911
|
});
|
|
2905
2912
|
});
|
|
@@ -2907,7 +2914,7 @@ class MrParallelTextViewerDS extends DataSource {
|
|
|
2907
2914
|
else {
|
|
2908
2915
|
// Pannello interno aperto: ripristina eventuali soppressioni sui seg interni
|
|
2909
2916
|
requestAnimationFrame(() => {
|
|
2910
|
-
|
|
2917
|
+
segOuterInner.forEach((el) => {
|
|
2911
2918
|
el.style.backgroundColor = '';
|
|
2912
2919
|
});
|
|
2913
2920
|
});
|
|
@@ -2990,10 +2997,13 @@ class MrParallelTextViewerDS extends DataSource {
|
|
|
2990
2997
|
content.querySelectorAll('.disable').forEach((el) => {
|
|
2991
2998
|
el.classList.remove('disable');
|
|
2992
2999
|
});
|
|
2993
|
-
// Ripristina il background dei seg-outer-inner (
|
|
3000
|
+
// Ripristina il background dei seg-outer-inner e seg-part-f (potrebbero essere rimasti 'white')
|
|
2994
3001
|
content.querySelectorAll('.seg-outer-inner').forEach((el) => {
|
|
2995
3002
|
el.style.backgroundColor = '';
|
|
2996
3003
|
});
|
|
3004
|
+
content.querySelectorAll('.seg-part-f').forEach((el) => {
|
|
3005
|
+
el.style.backgroundColor = '';
|
|
3006
|
+
});
|
|
2997
3007
|
});
|
|
2998
3008
|
}
|
|
2999
3009
|
viewListenerUpdate() {
|