@sd-angular/core 1.3.242 → 1.3.244
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/autocomplete/sd-angular-core-autocomplete.metadata.json +1 -1
- package/bundles/sd-angular-core-autocomplete.umd.js +20 -21
- package/bundles/sd-angular-core-autocomplete.umd.js.map +1 -1
- package/bundles/sd-angular-core-autocomplete.umd.min.js +1 -15
- package/bundles/sd-angular-core-autocomplete.umd.min.js.map +1 -1
- package/bundles/sd-angular-core-date-full.umd.js +712 -0
- package/bundles/sd-angular-core-date-full.umd.js.map +1 -0
- package/bundles/sd-angular-core-date-full.umd.min.js +2 -0
- package/bundles/sd-angular-core-date-full.umd.min.js.map +1 -0
- package/bundles/sd-angular-core-date-time.umd.js +5 -6
- package/bundles/sd-angular-core-date-time.umd.js.map +1 -1
- package/bundles/sd-angular-core-date-time.umd.min.js +1 -1
- package/bundles/sd-angular-core-date-time.umd.min.js.map +1 -1
- package/bundles/sd-angular-core-date.umd.js +719 -0
- package/bundles/sd-angular-core-date.umd.js.map +1 -0
- package/bundles/sd-angular-core-date.umd.min.js +2 -0
- package/bundles/sd-angular-core-date.umd.min.js.map +1 -0
- package/bundles/sd-angular-core-export.umd.js +3 -1
- package/bundles/sd-angular-core-export.umd.js.map +1 -1
- package/bundles/sd-angular-core-export.umd.min.js +1 -1
- package/bundles/sd-angular-core-export.umd.min.js.map +1 -1
- package/bundles/sd-angular-core-form.umd.js +10 -4
- package/bundles/sd-angular-core-form.umd.js.map +1 -1
- package/bundles/sd-angular-core-form.umd.min.js +1 -1
- package/bundles/sd-angular-core-form.umd.min.js.map +1 -1
- package/bundles/sd-angular-core-input-number.umd.js +7 -10
- package/bundles/sd-angular-core-input-number.umd.js.map +1 -1
- package/bundles/sd-angular-core-input-number.umd.min.js +2 -2
- package/bundles/sd-angular-core-input-number.umd.min.js.map +1 -1
- package/bundles/sd-angular-core-month.umd.js +742 -0
- package/bundles/sd-angular-core-month.umd.js.map +1 -0
- package/bundles/sd-angular-core-month.umd.min.js +2 -0
- package/bundles/sd-angular-core-month.umd.min.js.map +1 -0
- package/bundles/sd-angular-core-table.umd.js +11 -3
- package/bundles/sd-angular-core-table.umd.js.map +1 -1
- package/bundles/sd-angular-core-table.umd.min.js +1 -1
- package/bundles/sd-angular-core-table.umd.min.js.map +1 -1
- package/bundles/sd-angular-core-upload-excel.umd.js +4 -4
- package/bundles/sd-angular-core-upload-excel.umd.js.map +1 -1
- package/bundles/sd-angular-core-upload-excel.umd.min.js +2 -2
- package/bundles/sd-angular-core-upload-excel.umd.min.js.map +1 -1
- package/bundles/sd-angular-core.umd.js +4 -4
- package/bundles/sd-angular-core.umd.min.js +1 -1
- package/bundles/sd-angular-core.umd.min.js.map +1 -1
- package/date/index.d.ts +1 -0
- package/date/package.json +12 -0
- package/date/sd-angular-core-date.d.ts +4 -0
- package/date/sd-angular-core-date.metadata.json +1 -0
- package/date/src/lib/date.component.d.ts +63 -0
- package/date/src/lib/date.module.d.ts +2 -0
- package/date/src/public-api.d.ts +2 -0
- package/date-full/index.d.ts +1 -0
- package/date-full/package.json +12 -0
- package/date-full/sd-angular-core-date-full.d.ts +4 -0
- package/date-full/sd-angular-core-date-full.metadata.json +1 -0
- package/date-full/src/lib/date-full.component.d.ts +64 -0
- package/date-full/src/lib/date-full.module.d.ts +2 -0
- package/date-full/src/public-api.d.ts +2 -0
- package/date-time/sd-angular-core-date-time.metadata.json +1 -1
- package/esm2015/autocomplete/src/lib/autocomplete.component.js +2 -2
- package/esm2015/autocomplete/src/lib/autocomplete.module.js +8 -10
- package/esm2015/date/index.js +2 -0
- package/esm2015/date/sd-angular-core-date.js +5 -0
- package/esm2015/date/src/lib/date.component.js +310 -0
- package/esm2015/date/src/lib/date.module.js +38 -0
- package/esm2015/date/src/public-api.js +3 -0
- package/esm2015/date-full/index.js +2 -0
- package/esm2015/date-full/sd-angular-core-date-full.js +5 -0
- package/esm2015/date-full/src/lib/date-full.component.js +303 -0
- package/esm2015/date-full/src/lib/date-full.module.js +40 -0
- package/esm2015/date-full/src/public-api.js +3 -0
- package/esm2015/date-time/src/lib/date-time.component.js +2 -2
- package/esm2015/date-time/src/lib/date-time.module.js +10 -12
- package/esm2015/export/src/lib/export.model.js +1 -1
- package/esm2015/export/src/lib/export.service.js +4 -2
- package/esm2015/form/src/lib/form.module.js +21 -12
- package/esm2015/input-number/src/lib/input-number.component.js +2 -2
- package/esm2015/input-number/src/lib/input-number.module.js +3 -7
- package/esm2015/month/index.js +2 -0
- package/esm2015/month/sd-angular-core-month.js +5 -0
- package/esm2015/month/src/lib/month.component.js +334 -0
- package/esm2015/month/src/lib/month.module.js +40 -0
- package/esm2015/month/src/public-api.js +3 -0
- package/esm2015/public-api.js +4 -1
- package/esm2015/table/src/lib/table.component.js +12 -4
- package/esm2015/upload-excel/src/lib/upload-excel.component.js +4 -4
- package/export/sd-angular-core-export.metadata.json +1 -1
- package/export/src/lib/export.model.d.ts +15 -34
- package/export/src/lib/export.service.d.ts +3 -3
- package/fesm2015/sd-angular-core-autocomplete.js +8 -10
- package/fesm2015/sd-angular-core-autocomplete.js.map +1 -1
- package/fesm2015/sd-angular-core-date-full.js +344 -0
- package/fesm2015/sd-angular-core-date-full.js.map +1 -0
- package/fesm2015/sd-angular-core-date-time.js +12 -14
- package/fesm2015/sd-angular-core-date-time.js.map +1 -1
- package/fesm2015/sd-angular-core-date.js +349 -0
- package/fesm2015/sd-angular-core-date.js.map +1 -0
- package/fesm2015/sd-angular-core-export.js +3 -1
- package/fesm2015/sd-angular-core-export.js.map +1 -1
- package/fesm2015/sd-angular-core-form.js +19 -10
- package/fesm2015/sd-angular-core-form.js.map +1 -1
- package/fesm2015/sd-angular-core-input-number.js +3 -7
- package/fesm2015/sd-angular-core-input-number.js.map +1 -1
- package/fesm2015/sd-angular-core-month.js +374 -0
- package/fesm2015/sd-angular-core-month.js.map +1 -0
- package/fesm2015/sd-angular-core-table.js +11 -3
- package/fesm2015/sd-angular-core-table.js.map +1 -1
- package/fesm2015/sd-angular-core-upload-excel.js +2 -2
- package/fesm2015/sd-angular-core-upload-excel.js.map +1 -1
- package/fesm2015/sd-angular-core.js +3 -0
- package/fesm2015/sd-angular-core.js.map +1 -1
- package/form/sd-angular-core-form.metadata.json +1 -1
- package/input-number/sd-angular-core-input-number.metadata.json +1 -1
- package/month/index.d.ts +1 -0
- package/month/package.json +12 -0
- package/month/sd-angular-core-month.d.ts +4 -0
- package/month/sd-angular-core-month.metadata.json +1 -0
- package/month/src/lib/month.component.d.ts +66 -0
- package/month/src/lib/month.module.d.ts +2 -0
- package/month/src/public-api.d.ts +2 -0
- package/package.json +1 -1
- package/public-api.d.ts +3 -0
- package/{sd-angular-core-1.3.242.tgz → sd-angular-core-1.3.244.tgz} +0 -0
- package/upload-excel/sd-angular-core-upload-excel.metadata.json +1 -1
- package/upload-excel/src/lib/upload-excel.component.d.ts +4 -4
|
@@ -531,12 +531,14 @@ export class SdTable {
|
|
|
531
531
|
else if (column.type === 'date') {
|
|
532
532
|
let date = item[column.field];
|
|
533
533
|
// Nếu là date thì convert theo đúng format
|
|
534
|
-
obj[column.field] = Date.toFormat(date, 'dd/MM/yyyy');
|
|
534
|
+
// obj[column.field] = Date.toFormat(date, 'dd/MM/yyyy');
|
|
535
|
+
obj[column.field] = Date.isDate(date) ? new Date(date) : undefined;
|
|
535
536
|
}
|
|
536
537
|
else if (column.type === 'datetime') {
|
|
537
538
|
let date = item[column.field];
|
|
538
539
|
// Nếu là datetime thì convert theo đúng format
|
|
539
|
-
obj[column.field] = Date.toFormat(date, 'dd/MM/yyyy HH:mm');
|
|
540
|
+
// obj[column.field] = Date.toFormat(date, 'dd/MM/yyyy HH:mm');
|
|
541
|
+
obj[column.field] = Date.isDate(date) ? new Date(date) : undefined;
|
|
540
542
|
}
|
|
541
543
|
else if (column.type === 'time') {
|
|
542
544
|
let date = item[column.field];
|
|
@@ -645,7 +647,13 @@ export class SdTable {
|
|
|
645
647
|
});
|
|
646
648
|
return;
|
|
647
649
|
}
|
|
648
|
-
tableColumns.push(
|
|
650
|
+
tableColumns.push({
|
|
651
|
+
field: column.field,
|
|
652
|
+
title: column.title,
|
|
653
|
+
description: column.description,
|
|
654
|
+
width: column.width,
|
|
655
|
+
numFmt: column.type === 'datetime' ? 'dd/mm/yyyy hh:mm:ss' : column.type === 'date' ? 'dd/mm/yyyy' : undefined
|
|
656
|
+
});
|
|
649
657
|
});
|
|
650
658
|
// Lấy columns từ configuration
|
|
651
659
|
if (this.configuration) {
|
|
@@ -1088,4 +1096,4 @@ SdTable.propDecorators = {
|
|
|
1088
1096
|
sdFooterDefs: [{ type: ContentChildren, args: [SdMaterialFooterDefDirective,] }],
|
|
1089
1097
|
sdFilterDefs: [{ type: ContentChildren, args: [SdTableFilterDefDirective,] }]
|
|
1090
1098
|
};
|
|
1091
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IkM6L1VzZXJzL25naGlhdHQxNV9vbmVtb3VudC9Eb2N1bWVudHMvbGliLWNvcmUtdWkvcHJvamVjdHMvc2QtY29yZS90YWJsZS8iLCJzb3VyY2VzIjpbInNyYy9saWIvdGFibGUuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxLQUFLLEVBQ0wsU0FBUyxFQUVULFFBQVEsRUFDUixNQUFNLEVBQ04saUJBQWlCLEVBQ2pCLGVBQWUsRUFDZixTQUFTLEVBR1QsWUFBWSxFQUNaLHVCQUF1QixHQUN4QixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDM0QsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ2pELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2pGLE9BQU8sS0FBSyxJQUFJLE1BQU0sTUFBTSxDQUFDO0FBRzdCLE9BQU8sRUFBRSxZQUFZLEVBQUUsb0JBQW9CLEVBQXlCLE1BQU0sb0NBQW9DLENBQUM7QUFDL0csT0FBTyxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMxRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFMUQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDbkYsT0FBTyxFQUFFLFlBQVksRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxr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O29CQUNWLE9BQU8sQ0FBQyxjQUFjLEVBQUU7d0JBQ3RCLEtBQUssQ0FBQyxXQUFXLEVBQUUsS0FBSyxDQUFDLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDO3dCQUNoRixLQUFLLENBQUMsVUFBVSxFQUFFLEtBQUssQ0FBQyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUM7d0JBQ2hFLFVBQVUsQ0FBQyx3QkFBd0IsRUFBRSxPQUFPLENBQUMsc0NBQXNDLENBQUMsQ0FBQztxQkFDdEYsQ0FBQztpQkFDSDs7YUFDRjs7O1lBakRDLGlCQUFpQjtZQWtDVixnQkFBZ0I7NENBOEpwQixNQUFNLFNBQUMsWUFBWSxjQUNuQixRQUFRO1lBdEtKLDJCQUEyQjtZQUZHLGVBQWU7WUFSN0MsZUFBZTtZQWVmLG9CQUFvQjs7O29CQW1CMUIsU0FBUyxTQUFDLFFBQVE7aUNBQ2xCLFNBQVMsU0FBQyxvQkFBb0I7NEJBRTlCLFNBQVMsU0FBQyxhQUFhO3VCQUV2QixTQUFTLFNBQUMsaUJBQWlCOzBCQUczQixTQUFTLFNBQUMsYUFBYTswQkFDdkIsU0FBUyxTQUFDLGFBQWE7cUJBR3ZCLEtBQUs7d0JBdURMLFNBQVMsU0FBQyxZQUFZO21CQW1CdEIsU0FBUyxTQUFDLE9BQU87K0JBa0JqQixZQUFZLFNBQUMsb0NBQW9DO3lCQUlqRCxlQUFlLFNBQUMsdUJBQXVCOzJCQU12QyxlQUFlLFNBQUMsNEJBQTRCOzJCQU81QyxlQUFlLFNBQUMseUJBQXlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgSW5wdXQsXHJcbiAgVmlld0NoaWxkLFxyXG4gIEFmdGVyVmlld0luaXQsXHJcbiAgT3B0aW9uYWwsXHJcbiAgSW5qZWN0LFxyXG4gIENoYW5nZURldGVjdG9yUmVmLFxyXG4gIENvbnRlbnRDaGlsZHJlbixcclxuICBRdWVyeUxpc3QsXHJcbiAgT25Jbml0LFxyXG4gIE9uRGVzdHJveSxcclxuICBDb250ZW50Q2hpbGQsXHJcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE1hdFBhZ2luYXRvciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3BhZ2luYXRvcic7XHJcbmltcG9ydCB7IE1hdFNvcnQgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zb3J0JztcclxuaW1wb3J0IHsgTWF0VGFibGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90YWJsZSc7XHJcbmltcG9ydCB7IGFuaW1hdGUsIHN0YXRlLCBzdHlsZSwgdHJhbnNpdGlvbiwgdHJpZ2dlciB9IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xyXG5pbXBvcnQgKiBhcyB1dWlkIGZyb20gJ3V1aWQnO1xyXG5pbXBvcnQgeyBTZFRhYmxlRmlsdGVyUmVnaXN0ZXIsIFNkVGFibGVGaWx0ZXJSZXF1ZXN0IH0gZnJvbSAnLi9zZXJ2aWNlcy90YWJsZS1maWx0ZXIvdGFibGUtZmlsdGVyLm1vZGVsJztcclxuaW1wb3J0IHsgU2RUYWJsZU9wdGlvbiB9IGZyb20gJy4vbW9kZWxzL3RhYmxlLW9wdGlvbi5tb2RlbCc7XHJcbmltcG9ydCB7IFRBQkxFX0NPTkZJRywgREVGQVVMVF9UQUJMRV9DT05GSUcsIElTZFRhYmxlQ29uZmlndXJhdGlvbiB9IGZyb20gJy4vbW9kZWxzL3RhYmxlLWNvbmZpZ3VyYXRpb24ubW9kZWwnO1xyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24sIGlzT2JzZXJ2YWJsZSwgU3ViamVjdCwgY29tYmluZUxhdGVzdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBTZE5vdGlmeVNlcnZpY2UgfSBmcm9tICdAc2QtYW5ndWxhci9jb3JlL25vdGlmeSc7XHJcbmltcG9ydCB7IFNkRmlsdGVyT3BlcmF0b3IsIFNkVGFibGVDb2x1bW4sIFNkVGFibGVDb2x1bW5MYXp5VmFsdWVzLCBTZFRhYmxlQ29sdW1uVmFsdWVzIH0gZnJvbSAnLi9tb2RlbHMvdGFibGUtY29sdW1uLm1vZGVsJztcclxuaW1wb3J0IHsgU2RUYWJlbENlbGxEZWZEaXJlY3RpdmUgfSBmcm9tICcuL2RpcmVjdGl2ZXMvc2QtdGFibGUtY2VsbC1kZWYuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBtYXAsIHN0YXJ0V2l0aCwgc3dpdGNoTWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBTZFRhYmxlRmlsdGVyIH0gZnJvbSAnLi9jb21wb25lbnRzL3RhYmxlLWZpbHRlci90YWJsZS1maWx0ZXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgU2RUYWJsZUZpbHRlckRlZkRpcmVjdGl2ZSB9IGZyb20gJy4vZGlyZWN0aXZlcy9zZC10YWJsZS1maWx0ZXItZGVmLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IFNkTWF0ZXJpYWxTdWJJbmZvcm1hdGlvbkRlZkRpcmVjdGl2ZSB9IGZyb20gJy4vZGlyZWN0aXZlcy9zZC10YWJsZS1leHBhbmQtZGVmLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IFNkTWF0ZXJpYWxGb290ZXJEZWZEaXJlY3RpdmUgfSBmcm9tICcuL2RpcmVjdGl2ZXMvc2QtdGFibGUtZm9vdGVyLWRlZi5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBTZEV4cG9ydENvbHVtbiwgU2RFeHBvcnRGaWxlLCBTZEV4cG9ydFNlcnZpY2UgfSBmcm9tICdAc2QtYW5ndWxhci9jb3JlL2V4cG9ydCc7XHJcbmltcG9ydCB7IFNkVGFibGVDb25maWd1cmF0aW9uUmVzdWx0IH0gZnJvbSAnLi9tb2RlbHMvdGFibGUtb3B0aW9uLWNvbmZpZy5tb2RlbCc7XHJcbmltcG9ydCB7IFNkVGFibGVDb25maWd1cmF0aW9uU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvdGFibGUtY29uZmlndXJhdGlvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU2RUYWJsZU9wdGlvbkV4cG9ydENvbHVtbiB9IGZyb20gJy4vbW9kZWxzL3RhYmxlLW9wdGlvbi1leHBvcnQubW9kZWwnO1xyXG5pbXBvcnQgeyBTZFF1aWNrQWN0aW9uIH0gZnJvbSAnQHNkLWFuZ3VsYXIvY29yZS9xdWljay1hY3Rpb24nO1xyXG5pbXBvcnQgeyBNYXBUb1NkVGFibGVJdGVtLCBTZFRhYmxlSXRlbSB9IGZyb20gJy4vbW9kZWxzL3RhYmxlLWl0ZW0ubW9kZWwnO1xyXG5pbXBvcnQgeyBTZFNjcm9sbERpcmVjdGl2ZSB9IGZyb20gJ0BzZC1hbmd1bGFyL2NvcmUvY29tbW9uJztcclxuaW1wb3J0IHsgU2RUYWJsZUZpbHRlclNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL3RhYmxlLWZpbHRlci90YWJsZS1maWx0ZXIuc2VydmljZSc7XHJcbmltcG9ydCB7IFNkUG9wdXBDb25maWd1cmF0aW9uIH0gZnJvbSAnLi9jb21wb25lbnRzL3BvcHVwLWNvbmZpZ3VyYXRpb24vcG9wdXAtY29uZmlndXJhdGlvbi5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBTZExvYWRpbmdTZXJ2aWNlIH0gZnJvbSAnQHNkLWFuZ3VsYXIvY29yZS9sb2FkaW5nJztcclxuaW1wb3J0IHsgU2RQb3B1cEV4cG9ydCB9IGZyb20gJy4vY29tcG9uZW50cy9wb3B1cC1leHBvcnQvcG9wdXAtZXhwb3J0LmNvbXBvbmVudCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3NkLXRhYmxlJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vdGFibGUuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3RhYmxlLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgYW5pbWF0aW9uczogW1xyXG4gICAgdHJpZ2dlcignZGV0YWlsRXhwYW5kJywgW1xyXG4gICAgICBzdGF0ZSgnY29sbGFwc2VkJywgc3R5bGUoeyBoZWlnaHQ6ICcwJywgbWluSGVpZ2h0OiAnMCcsIHZpc2liaWxpdHk6ICdoaWRkZW4nIH0pKSxcclxuICAgICAgc3RhdGUoJ2V4cGFuZGVkJywgc3R5bGUoeyBoZWlnaHQ6ICcqJywgdmlzaWJpbGl0eTogJ3Zpc2libGUnIH0pKSxcclxuICAgICAgdHJhbnNpdGlvbignZXhwYW5kZWQgPD0+IGNvbGxhcHNlZCcsIGFuaW1hdGUoJzIyNW1zIGN1YmljLWJlemllcigwLjQsIDAuMCwgMC4yLCAxKScpKSxcclxuICAgIF0pLFxyXG4gIF0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTZFRhYmxlPFQgPSBhbnk+IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xyXG4gIEBWaWV3Q2hpbGQoTWF0VGFibGUpIHRhYmxlOiBNYXRUYWJsZTxhbnk+O1xyXG4gIEBWaWV3Q2hpbGQoU2RQb3B1cENvbmZpZ3VyYXRpb24pIHBvcHVwQ29uZmlndXJhdGlvbjogU2RQb3B1cENvbmZpZ3VyYXRpb247XHJcbiAgLy8gRXhwb3J0XHJcbiAgQFZpZXdDaGlsZChTZFBvcHVwRXhwb3J0KSBzZFBvcHVwRXhwb3J0OiBTZFBvcHVwRXhwb3J0O1xyXG4gICNncmlkSWQgPSB1dWlkLnY0KCk7XHJcbiAgQFZpZXdDaGlsZChTZFNjcm9sbERpcmVjdGl2ZSkgc2RTY3JvbGw6IFNkU2Nyb2xsRGlyZWN0aXZlO1xyXG4gIGZpbHRlclJlZ2lzdGVyOiBTZFRhYmxlRmlsdGVyUmVnaXN0ZXI7XHJcbiAga2V5ID0gdXVpZC52NCgpO1xyXG4gIEBWaWV3Q2hpbGQoU2RRdWlja0FjdGlvbikgcXVpY2tBY3Rpb246IFNkUXVpY2tBY3Rpb247XHJcbiAgQFZpZXdDaGlsZChTZFRhYmxlRmlsdGVyKSB0YWJsZUZpbHRlcjogU2RUYWJsZUZpbHRlcjtcclxuICB0YWJsZU9wdGlvbjogU2RUYWJsZU9wdGlvbjxUPjtcclxuICBjb25maWd1cmF0aW9uOiBTZFRhYmxlQ29uZmlndXJhdGlvblJlc3VsdDtcclxuICBASW5wdXQoKSBzZXQgb3B0aW9uKG9wdGlvbjogU2RUYWJsZU9wdGlvbikge1xyXG4gICAgaWYgKG9wdGlvbikge1xyXG4gICAgICBvcHRpb24gPSB0aGlzLiNpbml0Q29uZmlndXJhdGlvbihvcHRpb24pO1xyXG4gICAgICB0aGlzLnRhYmxlT3B0aW9uID0gb3B0aW9uO1xyXG4gICAgICB0aGlzLiNsb2FkQ29tcGxldGVkID0gZmFsc2U7XHJcbiAgICAgIGNvbnN0IHNldHRpbmcgPSB0aGlzLnRhYmxlQ29uZmlndXJhdGlvblNlcnZpY2UuaW5pdCh0aGlzLnRhYmxlT3B0aW9uKTtcclxuICAgICAgaWYgKHNldHRpbmcpIHtcclxuICAgICAgICB0aGlzLiNzdWJzY3JpcHRpb24uYWRkKFxyXG4gICAgICAgICAgc2V0dGluZy5vYnNlcnZlci5waXBlKHN0YXJ0V2l0aChzZXR0aW5nLnN1YmplY3QuZ2V0VmFsdWUoKSkpLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGNvbmZpZ3VyYXRpb25SZXN1bHQgPSB0aGlzLnRhYmxlQ29uZmlndXJhdGlvblNlcnZpY2UubG9hZENvbmZpZ3VyYXRpb25SZXN1bHQodGhpcy50YWJsZU9wdGlvbiwgc2V0dGluZy5nZXQoKSk7XHJcbiAgICAgICAgICAgIGNvbnN0IGRpc3BsYXlDb2x1bW5zID0gY29uZmlndXJhdGlvblJlc3VsdC5kaXNwbGF5ZWRDb2x1bW5zIHx8IFtdO1xyXG4gICAgICAgICAgICB0aGlzLmxvYWRpbmdTZXJ2aWNlLnN0YXJ0KCk7XHJcbiAgICAgICAgICAgIHRoaXMucmVmLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgdGhpcy4jbG9hZFZhbHVlcyh0aGlzLnRhYmxlT3B0aW9uLmNvbHVtbnMuZmlsdGVyKGNvbHVtbiA9PiBkaXNwbGF5Q29sdW1ucy5pbmNsdWRlcyhjb2x1bW4uZmllbGQpKSlcclxuICAgICAgICAgICAgICAudGhlbigoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbmZpZ3VyYXRpb24gPSBjb25maWd1cmF0aW9uUmVzdWx0O1xyXG4gICAgICAgICAgICAgICAgdGhpcy4jb3B0aW9uQ2hhbmdlcy5uZXh0KHRoaXMudGFibGVPcHRpb24pO1xyXG4gICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgLmZpbmFsbHkoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5sb2FkaW5nU2VydmljZS5zdG9wKCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgY29uc3QgY29uZmlndXJhdGlvbiA9IHRoaXMudGFibGVDb25maWd1cmF0aW9uU2VydmljZS5sb2FkQ29uZmlndXJhdGlvbih0aGlzLnRhYmxlT3B0aW9uKTtcclxuICAgICAgICBjb25zdCBjb25maWd1cmF0aW9uUmVzdWx0ID0gdGhpcy50YWJsZUNvbmZpZ3VyYXRpb25TZXJ2aWNlLmxvYWRDb25maWd1cmF0aW9uUmVzdWx0KHRoaXMudGFibGVPcHRpb24sIGNvbmZpZ3VyYXRpb24pO1xyXG4gICAgICAgIGNvbnN0IGRpc3BsYXlDb2x1bW5zID0gY29uZmlndXJhdGlvblJlc3VsdC5kaXNwbGF5ZWRDb2x1bW5zIHx8IFtdO1xyXG4gICAgICAgIHRoaXMubG9hZGluZ1NlcnZpY2Uuc3RhcnQoKTtcclxuICAgICAgICB0aGlzLnJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgdGhpcy4jbG9hZFZhbHVlcyh0aGlzLnRhYmxlT3B0aW9uLmNvbHVtbnMuZmlsdGVyKGNvbHVtbiA9PiBkaXNwbGF5Q29sdW1ucy5pbmNsdWRlcyhjb2x1bW4uZmllbGQpKSlcclxuICAgICAgICAgIC50aGVuKCgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5jb25maWd1cmF0aW9uID0gY29uZmlndXJhdGlvblJlc3VsdDtcclxuICAgICAgICAgICAgdGhpcy4jb3B0aW9uQ2hhbmdlcy5uZXh0KHRoaXMudGFibGVPcHRpb24pO1xyXG4gICAgICAgICAgfSlcclxuICAgICAgICAgIC5maW5hbGx5KCgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5sb2FkaW5nU2VydmljZS5zdG9wKCk7XHJcbiAgICAgICAgICAgIHRoaXMucmVmLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG4gICNvcHRpb25DaGFuZ2VzID0gbmV3IFN1YmplY3Q8U2RUYWJsZU9wdGlvbj4oKTtcclxuXHJcbiAgI2xvY2FsSXRlbXM6IFNkVGFibGVJdGVtPFQ+W10gPSBbXTtcclxuICBpdGVtczogU2RUYWJsZUl0ZW08VD5bXSA9IFtdO1xyXG4gIHNlbGVjdGVkVGFibGVJdGVtczogU2RUYWJsZUl0ZW08VD5bXSA9IFtdO1xyXG4gIHRvdGFsOiBudW1iZXI7XHJcblxyXG4gIC8vIExvYWRpbmdcclxuICBpc0xvYWRpbmcgPSBmYWxzZTtcclxuXHJcbiAgLy8gUGFnaW5hdGVcclxuICBpc0hpZGRlblBhZ2luYXRvciA9IGZhbHNlO1xyXG4gICNwYWdpbmF0b3I6IE1hdFBhZ2luYXRvcjtcclxuICBAVmlld0NoaWxkKE1hdFBhZ2luYXRvcikgc2V0IHBhZ2luYXRvcihwYWdpbmF0b3I6IE1hdFBhZ2luYXRvcikge1xyXG4gICAgaWYgKHBhZ2luYXRvciAmJiB0aGlzLiNwYWdpbmF0b3IgIT09IHBhZ2luYXRvcikge1xyXG4gICAgICB0aGlzLiNwYWdpbmF0b3IgPSBwYWdpbmF0b3I7XHJcbiAgICAgIHRoaXMuI3N1YnNjcmlwdGlvbi5hZGQoXHJcbiAgICAgICAgcGFnaW5hdG9yLnBhZ2VcclxuICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICBtYXAoKCkgPT4ge1xyXG4gICAgICAgICAgICAgIHRoaXMuI3JlbG9hZC5uZXh0KHtcclxuICAgICAgICAgICAgICAgIGZvcmNlOiBmYWxzZSxcclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgIClcclxuICAgICAgICAgIC5zdWJzY3JpYmUoKVxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gU29ydGluZ1xyXG4gICNzb3J0OiBNYXRTb3J0O1xyXG4gIEBWaWV3Q2hpbGQoTWF0U29ydCkgc2V0IHNvcnQoc29ydDogTWF0U29ydCkge1xyXG4gICAgaWYgKHNvcnQgJiYgdGhpcy4jc29ydCAhPT0gc29ydCkge1xyXG4gICAgICB0aGlzLiNzb3J0ID0gc29ydDtcclxuICAgICAgdGhpcy4jc3Vic2NyaXB0aW9uLmFkZChcclxuICAgICAgICBzb3J0LnNvcnRDaGFuZ2VcclxuICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICBtYXAoKCkgPT4ge1xyXG4gICAgICAgICAgICAgIHRoaXMuI3JlbG9hZC5uZXh0KHtcclxuICAgICAgICAgICAgICAgIGZvcmNlOiBmYWxzZSxcclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgIClcclxuICAgICAgICAgIC5zdWJzY3JpYmUoKVxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gU3ViIEluZm9ybWF0aW9uXHJcbiAgQENvbnRlbnRDaGlsZChTZE1hdGVyaWFsU3ViSW5mb3JtYXRpb25EZWZEaXJlY3RpdmUpXHJcbiAgc2RTdWJJbmZvcm1hdGlvbjogU2RNYXRlcmlhbFN1YkluZm9ybWF0aW9uRGVmRGlyZWN0aXZlO1xyXG5cclxuICAvLyBDZWxsIERlZlxyXG4gIEBDb250ZW50Q2hpbGRyZW4oU2RUYWJlbENlbGxEZWZEaXJlY3RpdmUpIHNkQ2VsbERlZnMgPSBuZXcgUXVlcnlMaXN0PFNkVGFiZWxDZWxsRGVmRGlyZWN0aXZlPigpO1xyXG4gIGNlbGxEZWY6IHtcclxuICAgIFtjb2x1bW46IHN0cmluZ106IFNkVGFiZWxDZWxsRGVmRGlyZWN0aXZlO1xyXG4gIH0gPSB7fTtcclxuXHJcbiAgLy8gRm9vdGVyIERlZlxyXG4gIEBDb250ZW50Q2hpbGRyZW4oU2RNYXRlcmlhbEZvb3RlckRlZkRpcmVjdGl2ZSkgc2RGb290ZXJEZWZzID0gbmV3IFF1ZXJ5TGlzdDxTZE1hdGVyaWFsRm9vdGVyRGVmRGlyZWN0aXZlPigpO1xyXG4gIGZvb3RlckRlZjoge1xyXG4gICAgW2NvbHVtbjogc3RyaW5nXTogU2RNYXRlcmlhbEZvb3RlckRlZkRpcmVjdGl2ZTtcclxuICB9ID0ge307XHJcbiAgaGFzRm9vdGVyID0gZmFsc2U7XHJcblxyXG4gIC8vIEZpbHRlciBEZWZcclxuICBAQ29udGVudENoaWxkcmVuKFNkVGFibGVGaWx0ZXJEZWZEaXJlY3RpdmUpIHNkRmlsdGVyRGVmcyA9IG5ldyBRdWVyeUxpc3Q8U2RUYWJsZUZpbHRlckRlZkRpcmVjdGl2ZT4oKTtcclxuICBmaWx0ZXJEZWZzOiBTZFRhYmxlRmlsdGVyRGVmRGlyZWN0aXZlW10gPSBbXTtcclxuXHJcbiAgLy8gRmlsdGVyXHJcbiAgY29sdW1uT3BlcmF0b3I6IFJlY29yZDxzdHJpbmcsIFNkRmlsdGVyT3BlcmF0b3I+ID0ge307XHJcbiAgY29sdW1uRmlsdGVyOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge307XHJcbiAgLy8gU3ViY3JpcHRpb25cclxuICAjc3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xyXG4gICNyZWxvYWQgPSBuZXcgU3ViamVjdDx7XHJcbiAgICBmb3JjZTogYm9vbGVhbjtcclxuICB9PigpO1xyXG4gIGlzRXhwb3J0aW5nID0gZmFsc2U7XHJcbiAgaXNTZWxlY3RBbGwgPSBmYWxzZTtcclxuICBleHBvcnRUaXRsZSA9ICdFeHBvcnQnO1xyXG4gICNsb2FkQ29tcGxldGVkID0gZmFsc2U7XHJcbiAgY2FjaGVWYWx1ZXM6IFJlY29yZDxzdHJpbmcsIGFueVtdPiA9IHt9O1xyXG4gICNjYWNoZU9ialZhbHVlczogUmVjb3JkPHN0cmluZywgUmVjb3JkPHN0cmluZywgc3RyaW5nPj4gPSB7fTtcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgcmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgIHByaXZhdGUgbG9hZGluZ1NlcnZpY2U6IFNkTG9hZGluZ1NlcnZpY2UsXHJcbiAgICBASW5qZWN0KFRBQkxFX0NPTkZJRylcclxuICAgIEBPcHRpb25hbCgpXHJcbiAgICBwdWJsaWMgdGFibGVDb25maWd1cmF0aW9uOiBJU2RUYWJsZUNvbmZpZ3VyYXRpb24sXHJcbiAgICBwcml2YXRlIHRhYmxlQ29uZmlndXJhdGlvblNlcnZpY2U6IFNkVGFibGVDb25maWd1cmF0aW9uU2VydmljZSxcclxuICAgIHByaXZhdGUgZXhwb3J0U2VydmljZTogU2RFeHBvcnRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBub3RpZnlTZXJ2aWNlOiBTZE5vdGlmeVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGdyaWRGaWx0ZXJTZXJ2aWNlOiBTZFRhYmxlRmlsdGVyU2VydmljZVxyXG4gICkge31cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLiNpbml0Q2VsbERlZigpO1xyXG4gIH1cclxuICBuZ0FmdGVyVmlld0luaXQoKSB7XHJcbiAgICB0aGlzLiNzdWJzY3JpcHRpb24uYWRkKFxyXG4gICAgICB0aGlzLiNyZWxvYWRcclxuICAgICAgICAucGlwZShcclxuICAgICAgICAgIGRlYm91bmNlVGltZSgyMDApLFxyXG4gICAgICAgICAgc3dpdGNoTWFwKGFzeW5jIGRhdGEgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBmaWx0ZXJJbmZvID0gdGhpcy4jZ2V0RmlsdGVyKCk7XHJcbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMuI2xvYWQoZmlsdGVySW5mbywgIXRoaXMuI2xvYWRDb21wbGV0ZWQgfHwgZGF0YS5mb3JjZSk7XHJcbiAgICAgICAgICAgIHRoaXMuI2xvYWRDb21wbGV0ZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgICAgICAgfSlcclxuICAgICAgICApXHJcbiAgICAgICAgLnN1YnNjcmliZSh0aGlzLiNyZW5kZXIpXHJcbiAgICApO1xyXG4gICAgdGhpcy4jc3Vic2NyaXB0aW9uLmFkZCh0aGlzLnNkQ2VsbERlZnMuY2hhbmdlcy5waXBlKHN0YXJ0V2l0aChbXSkpLnN1YnNjcmliZSh0aGlzLiNpbml0Q2VsbERlZikpO1xyXG4gICAgdGhpcy4jc3Vic2NyaXB0aW9uLmFkZCh0aGlzLnNkRm9vdGVyRGVmcy5jaGFuZ2VzLnBpcGUoc3RhcnRXaXRoKFtdKSkuc3Vic2NyaWJlKHRoaXMuI2luaXRGb290ZXJEZWYpKTtcclxuICAgIHRoaXMuI3N1YnNjcmlwdGlvbi5hZGQodGhpcy5zZEZpbHRlckRlZnMuY2hhbmdlcy5waXBlKHN0YXJ0V2l0aChbXSkpLnN1YnNjcmliZSh0aGlzLiNpbml0RmlsdGVyRGVmKSk7XHJcbiAgICB0aGlzLiNzdWJzY3JpcHRpb24uYWRkKFxyXG4gICAgICBjb21iaW5lTGF0ZXN0KFtcclxuICAgICAgICB0aGlzLiNvcHRpb25DaGFuZ2VzLnBpcGUoc3RhcnRXaXRoKHRoaXMudGFibGVPcHRpb24pKSxcclxuICAgICAgICB0aGlzLnNkRmlsdGVyRGVmcy5jaGFuZ2VzLnBpcGUoc3RhcnRXaXRoKHRoaXMuZmlsdGVyRGVmcykpLFxyXG4gICAgICBdKS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuI2xvYWRGaWx0ZXJSZWdpc3RlcigpO1xyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICAgIHRoaXMuI3N1YnNjcmlwdGlvbi5hZGQoXHJcbiAgICAgIHRoaXMuI29wdGlvbkNoYW5nZXMuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICBpZiAodGhpcy5maWx0ZXJSZWdpc3Rlcikge1xyXG4gICAgICAgICAgdGhpcy4jcmVsb2FkLm5leHQoe1xyXG4gICAgICAgICAgICBmb3JjZTogdHJ1ZSxcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgICB0aGlzLnJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpIHtcclxuICAgIHRoaXMuI3N1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG4gIH1cclxuXHJcbiAgI2luaXRDZWxsRGVmID0gKCkgPT4ge1xyXG4gICAgdGhpcy5jZWxsRGVmID0ge307XHJcbiAgICBmb3IgKGNvbnN0IGNlbGxEZWYgb2YgdGhpcy5zZENlbGxEZWZzIHx8IFtdKSB7XHJcbiAgICAgIGlmIChjZWxsRGVmLnNkVGFibGVDZWxsRGVmKSB7XHJcbiAgICAgICAgdGhpcy5jZWxsRGVmW2NlbGxEZWYuc2RUYWJsZUNlbGxEZWZdID0gY2VsbERlZjtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH07XHJcblxyXG4gICNpbml0RmlsdGVyRGVmID0gKCkgPT4ge1xyXG4gICAgdGhpcy5maWx0ZXJEZWZzID0gW107XHJcbiAgICBmb3IgKGNvbnN0IGZpbHRlckRlZiBvZiB0aGlzLnNkRmlsdGVyRGVmcykge1xyXG4gICAgICB0aGlzLmZpbHRlckRlZnMucHVzaChmaWx0ZXJEZWYpO1xyXG4gICAgfVxyXG4gIH07XHJcblxyXG4gICNpbml0Rm9vdGVyRGVmID0gKCkgPT4ge1xyXG4gICAgLy8gTk9URTogQ29udGVudENoaWxkcmVuIG7Dqm4gc3ViY3JpYmUgdHJvbmcgQWZ0ZXJWaWV3SW5pdFxyXG4gICAgdGhpcy5mb290ZXJEZWYgPSB7fTtcclxuICAgIHRoaXMuaGFzRm9vdGVyID0gZmFsc2U7XHJcbiAgICBmb3IgKGNvbnN0IGZvb3RlckRlZiBvZiB0aGlzLnNkRm9vdGVyRGVmcykge1xyXG4gICAgICBpZiAoZm9vdGVyRGVmLnNkVGFibGVGb290ZXJEZWYpIHtcclxuICAgICAgICB0aGlzLmhhc0Zvb3RlciA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5mb290ZXJEZWZbZm9vdGVyRGVmLnNkVGFibGVGb290ZXJEZWZdID0gZm9vdGVyRGVmO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfTtcclxuXHJcbiAgI2ZpbHRlckV4cG9ydEluZm8gPSAocGFnZU51bWJlcjogbnVtYmVyLCBwYWdlU2l6ZTogbnVtYmVyKTogU2RUYWJsZUZpbHRlclJlcXVlc3QgPT4ge1xyXG4gICAgY29uc3QgeyBjb2x1bW5PcGVyYXRvciwgY29sdW1uRmlsdGVyLCBleHRlcm5hbEZpbHRlciwgZmlsdGVyRGVmIH0gPSB0aGlzLmZpbHRlclJlZ2lzdGVyLnZhbHVlLmdldCgpO1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgY29sdW1uT3BlcmF0b3I6IGNvbHVtbk9wZXJhdG9yIHx8IHt9LFxyXG4gICAgICByYXdDb2x1bW5GaWx0ZXI6IGNvbHVtbkZpbHRlciB8fCB7fSxcclxuICAgICAgcmF3RXh0ZXJuYWxGaWx0ZXI6IGV4dGVybmFsRmlsdGVyIHx8IHt9LFxyXG4gICAgICByYXdGaWx0ZXJEZWY6IGZpbHRlckRlZiB8fCB7fSxcclxuICAgICAgb3JkZXJCeTogdGhpcy4jc29ydD8uYWN0aXZlIHx8ICcnLFxyXG4gICAgICBvcmRlckRpcmVjdGlvbjogdGhpcy4jc29ydD8uZGlyZWN0aW9uIHx8ICcnLFxyXG4gICAgICBwYWdlTnVtYmVyLFxyXG4gICAgICBwYWdlU2l6ZSxcclxuICAgICAgaXNFeHBvcnRlZDogdHJ1ZSxcclxuICAgIH07XHJcbiAgfTtcclxuXHJcbiAgI2luaXRDb25maWd1cmF0aW9uID0gKG9wdGlvbjogU2RUYWJsZU9wdGlvbikgPT4ge1xyXG4gICAgLy8gSW5pdCBwYWdpbmF0aW9uXHJcbiAgICBvcHRpb24ucGFnaW5hdGUgPSB7XHJcbiAgICAgIGhpZGRlbjogb3B0aW9uPy5wYWdpbmF0ZT8uaGlkZGVuLFxyXG4gICAgICBwYWdlU2l6ZTogb3B0aW9uPy5wYWdpbmF0ZT8ucGFnZVNpemUgPz8gdGhpcy50YWJsZUNvbmZpZ3VyYXRpb24/LnBhZ2luYXRlPy5wYWdlU2l6ZSA/PyBERUZBVUxUX1RBQkxFX0NPTkZJRy5wYWdpbmF0ZT8ucGFnZVNpemUsXHJcbiAgICAgIHBhZ2VzOiBvcHRpb24/LnBhZ2luYXRlPy5wYWdlcyA/PyB0aGlzLnRhYmxlQ29uZmlndXJhdGlvbj8ucGFnaW5hdGU/LnBhZ2VzID8/IERFRkFVTFRfVEFCTEVfQ09ORklHLnBhZ2luYXRlPy5wYWdlcyxcclxuICAgICAgc2hvd0ZpcnN0TGFzdEJ1dHRvbnM6IG9wdGlvbj8ucGFnaW5hdGU/LnNob3dGaXJzdExhc3RCdXR0b25zID8/IGZhbHNlLFxyXG4gICAgfTtcclxuICAgIGZvciAoY29uc3QgY29sdW1uIG9mIG9wdGlvbi5jb2x1bW5zIHx8IFtdKSB7XHJcbiAgICAgIGlmIChjb2x1bW4uZmlsdGVyPy5vcGVyYXRvcj8uZW5hYmxlKSB7XHJcbiAgICAgICAgaWYgKCFjb2x1bW4uZmlsdGVyPy5vcGVyYXRvcj8ubGlzdD8ubGVuZ3RoKSB7XHJcbiAgICAgICAgICBpZiAoY29sdW1uLnR5cGUgPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgICAgIGNvbHVtbi5maWx0ZXIub3BlcmF0b3IubGlzdCA9IHRoaXMudGFibGVDb25maWd1cmF0aW9uPy5maWx0ZXI/Lm9wZXJhdG9yPy5kZWZhdWx0TGlzdFN0cmluZyB8fCBbXTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmIChjb2x1bW4udHlwZSA9PT0gJ251bWJlcicpIHtcclxuICAgICAgICAgICAgY29sdW1uLmZpbHRlci5vcGVyYXRvci5saXN0ID0gdGhpcy50YWJsZUNvbmZpZ3VyYXRpb24/LmZpbHRlcj8ub3BlcmF0b3I/LmRlZmF1bHRMaXN0TnVtYmVyIHx8IFtdO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKGNvbHVtbi50eXBlID09PSAndmFsdWVzJyB8fCBjb2x1bW4udHlwZSA9PT0gJ2xhenktdmFsdWVzJykge1xyXG4gICAgICAgICAgICBjb2x1bW4uZmlsdGVyLm9wZXJhdG9yLmxpc3QgPSB0aGlzLnRhYmxlQ29uZmlndXJhdGlvbj8uZmlsdGVyPy5vcGVyYXRvcj8uZGVmYXVsdExpc3RWYWx1ZXMgfHwgW107XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAoY29sdW1uLnR5cGUgPT09ICdkYXRlJyB8fCBjb2x1bW4udHlwZSA9PT0gJ2RhdGV0aW1lJykge1xyXG4gICAgICAgICAgICBjb2x1bW4uZmlsdGVyLm9wZXJhdG9yLmxpc3QgPSB0aGlzLnRhYmxlQ29uZmlndXJhdGlvbj8uZmlsdGVyPy5vcGVyYXRvcj8uZGVmYXVsdExpc3REYXRlIHx8IFtdO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5jb2x1bW5PcGVyYXRvcltjb2x1bW4uZmllbGRdID0gdGhpcy50YWJsZUNvbmZpZ3VyYXRpb24/LmZpbHRlcj8ub3BlcmF0b3I/LmRlZmF1bHRPcGVyYXRvcj8uW2NvbHVtbi50eXBlXSB8fCB1bmRlZmluZWQ7XHJcbiAgICAgICAgaWYgKGNvbHVtbi5maWx0ZXIub3BlcmF0b3IuZGVmYXVsdCAmJiBjb2x1bW4uZmlsdGVyLm9wZXJhdG9yLmxpc3Quc29tZShlbCA9PiBlbCA9PT0gY29sdW1uLmZpbHRlci5vcGVyYXRvci5kZWZhdWx0KSkge1xyXG4gICAgICAgICAgdGhpcy5jb2x1bW5PcGVyYXRvcltjb2x1bW4uZmllbGRdID0gY29sdW1uLmZpbHRlci5vcGVyYXRvci5kZWZhdWx0O1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIG9wdGlvbjtcclxuICB9O1xyXG5cclxuICAjbG9hZEZpbHRlclJlZ2lzdGVyID0gKCkgPT4ge1xyXG4gICAgLy8gSW5pdCBmaWx0ZXJcclxuICAgIGlmICh0aGlzLnRhYmxlT3B0aW9uKSB7XHJcbiAgICAgIGlmICghdGhpcy5maWx0ZXJSZWdpc3Rlcikge1xyXG4gICAgICAgIHRoaXMuZmlsdGVyUmVnaXN0ZXIgPSB0aGlzLmdyaWRGaWx0ZXJTZXJ2aWNlLnJlZ2lzdGVyKHRoaXMudGFibGVPcHRpb24/LmZpbHRlciwge1xyXG4gICAgICAgICAgaWQ6IHRoaXMuI2dyaWRJZCxcclxuICAgICAgICAgIGNvbHVtbnM6IHRoaXMudGFibGVPcHRpb24/LmNvbHVtbnMsXHJcbiAgICAgICAgICBleHRlcm5hbEZpbHRlcnM6IHRoaXMudGFibGVPcHRpb24/LmZpbHRlcj8uZXh0ZXJuYWxGaWx0ZXJzLFxyXG4gICAgICAgICAgZmlsdGVyRGVmczogdGhpcy5maWx0ZXJEZWZzLFxyXG4gICAgICAgICAgY29sdW1uT3BlcmF0b3I6IHRoaXMuY29sdW1uT3BlcmF0b3IsXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy4jc3Vic2NyaXB0aW9uLmFkZChcclxuICAgICAgICAgIHRoaXMuZmlsdGVyUmVnaXN0ZXIudmFsdWUub2JzZXJ2ZXJcclxuICAgICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgICAgZGVib3VuY2VUaW1lKDUwMCksXHJcbiAgICAgICAgICAgICAgbWFwKGZpbHRlclZhbHVlID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHsgY29sdW1uT3BlcmF0b3IsIGNvbHVtbkZpbHRlciwgbm90UmVsb2FkIH0gPSBmaWx0ZXJWYWx1ZTtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29sdW1uT3BlcmF0b3IgPSBjb2x1bW5PcGVyYXRvciB8fCB7fTtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29sdW1uRmlsdGVyID0gY29sdW1uRmlsdGVyO1xyXG4gICAgICAgICAgICAgICAgaWYgKCFub3RSZWxvYWQpIHtcclxuICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuI3BhZ2luYXRvcikge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuI3BhZ2luYXRvci5wYWdlSW5kZXggPSAwO1xyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuI3JlbG9hZC5uZXh0KHtcclxuICAgICAgICAgICAgICAgICAgICBmb3JjZTogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgICAgLnN1YnNjcmliZSgpXHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH07XHJcblxyXG4gICNmaWx0ZXJMb2NhbCA9IChsb2NhbEl0ZW1zOiBTZFRhYmxlSXRlbTxUPltdLCBmaWx0ZXJJbmZvOiBTZFRhYmxlRmlsdGVyUmVxdWVzdCkgPT4ge1xyXG4gICAgY29uc3QgeyBjb2x1bW5zIH0gPSB0aGlzLnRhYmxlT3B0aW9uO1xyXG4gICAgY29uc3QgeyByYXdDb2x1bW5GaWx0ZXIsIG9yZGVyQnksIG9yZGVyRGlyZWN0aW9uLCBwYWdlU2l6ZSwgcGFnZU51bWJlciB9ID0gZmlsdGVySW5mbztcclxuICAgIGNvbnN0IGl0ZW1zID0gbG9jYWxJdGVtcy5maWx0ZXIodGFibGVJdGVtID0+IHtcclxuICAgICAgY29uc3QgaXRlbSA9IHRhYmxlSXRlbS5kYXRhO1xyXG4gICAgICBmb3IgKGNvbnN0IGNvbHVtbiBvZiBjb2x1bW5zKSB7XHJcbiAgICAgICAgY29uc3QgeyBmaWVsZCwgdHlwZSB9ID0gY29sdW1uO1xyXG4gICAgICAgIGNvbnN0IGZpbHRlclZhbHVlOiBzdHJpbmcgPSAocmF3Q29sdW1uRmlsdGVyW2ZpZWxkIGFzIHN0cmluZ10gfHwgJycpLnRvU3RyaW5nKCkudHJpbSgpLnRvTG93ZXJDYXNlKCk7XHJcbiAgICAgICAgY29uc3QgY29sdW1uVmFsdWU6IHN0cmluZyA9IChpdGVtW2ZpZWxkXSB8fCAnJykudG9TdHJpbmcoKS50cmltKCkudG9Mb3dlckNhc2UoKTtcclxuICAgICAgICBpZiAoZmlsdGVyVmFsdWUpIHtcclxuICAgICAgICAgIGlmICghY29sdW1uVmFsdWUgJiYgdHlwZSAhPT0gJ2RhdGV0aW1lJyAmJiB0eXBlICE9PSAnZGF0ZScgJiYgdHlwZSAhPT0gJ3RpbWUnKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmICh0eXBlID09PSAnc3RyaW5nJykge1xyXG4gICAgICAgICAgICBpZiAoY29sdW1uVmFsdWUuaW5kZXhPZihmaWx0ZXJWYWx1ZSkgPT09IC0xKSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICd2YWx1ZXMnIHx8IHR5cGUgPT09ICdsYXp5LXZhbHVlcycpIHtcclxuICAgICAgICAgICAgY29uc3QgY29sdW1uVHlwZSA9IGNvbHVtbiBhcyBTZFRhYmxlQ29sdW1uVmFsdWVzPFQ+IHwgU2RUYWJsZUNvbHVtbkxhenlWYWx1ZXM8VD47XHJcbiAgICAgICAgICAgIGNvbnN0IGlzTXVsdGlwbGUgPSBbJ01VTFRJUExFJ10uaW5jbHVkZXMoY29sdW1uVHlwZS5vcHRpb24uc2VsZWN0aW9uKTtcclxuICAgICAgICAgICAgaWYgKGlzTXVsdGlwbGUpIHtcclxuICAgICAgICAgICAgICBjb25zdCBjb2x1bW5WYWx1ZXM6IHN0cmluZ1tdID1cclxuICAgICAgICAgICAgICAgIChpdGVtW2ZpZWxkXSBhcyBhbnkpLm1hcChpID0+IChpW2NvbHVtblR5cGUub3B0aW9uLnZhbHVlRmllbGRdID8/ICcnKS50b1N0cmluZygpLnRyaW0oKS50b0xvd2VyQ2FzZSgpKSA/PyBbXTtcclxuICAgICAgICAgICAgICBjb25zdCBmaWx0ZXJWYWx1ZXM6IHN0cmluZ1tdID0gcmF3Q29sdW1uRmlsdGVyW2ZpZWxkIGFzIHN0cmluZ10/Lm1hcCh2ID0+ICh2ID8/ICcnKS50b1N0cmluZygpLnRyaW0oKS50b0xvd2VyQ2FzZSgpKTtcclxuICAgICAgICAgICAgICBpZiAoZmlsdGVyVmFsdWVzPy5sZW5ndGggJiYgZmlsdGVyVmFsdWVzLmV2ZXJ5KGZ2ID0+ICFjb2x1bW5WYWx1ZXMuaW5jbHVkZXMoZnYpKSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICBpZiAoY29sdW1uVmFsdWUgIT09IGZpbHRlclZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdudW1iZXInKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGZWYWx1ZSA9ICtmaWx0ZXJWYWx1ZS5yZXBsYWNlKCc+PScsICcnKS5yZXBsYWNlKCc8PScsICcnKS5yZXBsYWNlKCc+JywgJycpLnJlcGxhY2UoJzwnLCAnJyk7XHJcbiAgICAgICAgICAgIGNvbnN0IGNWYWx1ZSA9ICtjb2x1bW5WYWx1ZTtcclxuICAgICAgICAgICAgaWYgKGZWYWx1ZSB8fCBmVmFsdWUgPT09IDApIHtcclxuICAgICAgICAgICAgICBpZiAoIWNWYWx1ZSAmJiBjVmFsdWUgIT09IDApIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgaWYgKGZpbHRlclZhbHVlLmluZGV4T2YoJz49JykgPiAtMSAmJiBjVmFsdWUgPCBmVmFsdWUpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgICB9IGVsc2UgaWYgKGZpbHRlclZhbHVlLmluZGV4T2YoJzw9JykgPiAtMSAmJiBjVmFsdWUgPiBmVmFsdWUpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgICB9IGVsc2UgaWYgKGZpbHRlclZhbHVlLmluZGV4T2YoJzwnKSA+IC0xICYmIGNWYWx1ZSA+PSBmVmFsdWUpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgICB9IGVsc2UgaWYgKGZpbHRlclZhbHVlLmluZGV4T2YoJz4nKSA+IC0xICYmIGNWYWx1ZSA8PSBmVmFsdWUpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgICB9IGVsc2UgaWYgKGNWYWx1ZSAhPT0gZlZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdib29sJykge1xyXG4gICAgICAgICAgICBpZiAoZmlsdGVyVmFsdWUgPT09ICcxJyAmJiBjb2x1bW5WYWx1ZSAhPT0gJzEnICYmIGNvbHVtblZhbHVlICE9PSAndHJ1ZScpIHtcclxuICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoZmlsdGVyVmFsdWUgPT09ICcwJyAmJiBjb2x1bW5WYWx1ZSAhPT0gJzAnICYmIGNvbHVtblZhbHVlICE9PSAnZmFsc2UnKSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdkYXRldGltZScgfHwgdHlwZSA9PT0gJ2RhdGUnIHx8IHR5cGUgPT09ICd0aW1lJykge1xyXG4gICAgICAgICAgICBjb25zdCBmcm9tID0gcmF3Q29sdW1uRmlsdGVyW2ZpZWxkXT8uZnJvbSA/PyByYXdDb2x1bW5GaWx0ZXJbZmllbGRdO1xyXG4gICAgICAgICAgICBjb25zdCB0byA9IHJhd0NvbHVtbkZpbHRlcltmaWVsZF0/LnRvID8/IHJhd0NvbHVtbkZpbHRlcltmaWVsZF07XHJcbiAgICAgICAgICAgIGNvbnN0IGZyb21EYXRlID0gRGF0ZS5iZWdpbihmcm9tKTtcclxuICAgICAgICAgICAgY29uc3QgdG9EYXRlID0gRGF0ZS5lbmQodG8pO1xyXG4gICAgICAgICAgICBpZiAoZnJvbURhdGUgfHwgdG9EYXRlKSB7XHJcbiAgICAgICAgICAgICAgaWYgKCFjb2x1bW5WYWx1ZSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgY29uc3QgY29sdW1uVGltZSA9IG5ldyBEYXRlKGNvbHVtblZhbHVlKS5nZXRUaW1lKCk7XHJcbiAgICAgICAgICAgICAgY29uc3QgZnJvbURhdGVUaW1lID0gZnJvbURhdGU/LmdldFRpbWUoKSB8fCBudWxsO1xyXG4gICAgICAgICAgICAgIGNvbnN0IHRvRGF0ZVRpbWUgPSB0b0RhdGU/LmdldFRpbWUoKSB8fCBudWxsO1xyXG5cclxuICAgICAgICAgICAgICBpZiAoZnJvbURhdGVUaW1lICYmIGZyb21EYXRlVGltZSA+IGNvbHVtblRpbWUpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgaWYgKHRvRGF0ZVRpbWUgJiYgY29sdW1uVGltZSA+IHRvRGF0ZVRpbWUpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9KTtcclxuICAgIC8vIFNvcnRcclxuICAgIGlmIChvcmRlckJ5ICYmIG9yZGVyRGlyZWN0aW9uKSB7XHJcbiAgICAgIGNvbnN0IGNvbHVtbiA9IGNvbHVtbnMuZmluZChlID0+IGUuZmllbGQgPT09IG9yZGVyQnkpO1xyXG4gICAgICBpZiAoY29sdW1uKSB7XHJcbiAgICAgICAgY29uc3QgeyB0eXBlLCBmaWVsZCB9ID0gY29sdW1uO1xyXG4gICAgICAgIGl0ZW1zLnNvcnQoKHRhYmxlSXRlbUN1cnJlbnQsIHRhYmxlSXRlbU5leHQpID0+IHtcclxuICAgICAgICAgIGNvbnN0IGRhdGEgPSB0YWJsZUl0ZW1DdXJyZW50LmRhdGE7XHJcbiAgICAgICAgICBjb25zdCBuZXh0ID0gdGFibGVJdGVtTmV4dC5kYXRhO1xyXG4gICAgICAgICAgaWYgKHR5cGUgPT09ICdudW1iZXInKSB7XHJcbiAgICAgICAgICAgIHJldHVybiAoZGF0YVtmaWVsZCBhcyBzdHJpbmddIHx8IDApIC0gKG5leHRbZmllbGQgYXMgc3RyaW5nXSB8fCAwKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmICh0eXBlID09PSAnZGF0ZScgfHwgdHlwZSA9PT0gJ2RhdGV0aW1lJyB8fCB0eXBlID09PSAndGltZScpIHtcclxuICAgICAgICAgICAgY29uc3QgZDEgPSBuZXcgRGF0ZShkYXRhW2ZpZWxkIGFzIHN0cmluZ10gfHwgJycpLmdldFRpbWUoKTtcclxuICAgICAgICAgICAgY29uc3QgZDIgPSBuZXcgRGF0ZShkYXRhW2ZpZWxkIGFzIHN0cmluZ10gfHwgJycpLmdldFRpbWUoKTtcclxuICAgICAgICAgICAgcmV0dXJuIGQxIC0gZDI7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBjb25zdCBzMSA9IChkYXRhW2ZpZWxkXSB8fCAnJykudG9TdHJpbmcoKTtcclxuICAgICAgICAgIGNvbnN0IHMyID0gKG5leHRbZmllbGRdIHx8ICcnKS50b1N0cmluZygpO1xyXG4gICAgICAgICAgaWYgKHMxID4gczIpIHtcclxuICAgICAgICAgICAgcmV0dXJuIDE7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAoczEgPCBzMikge1xyXG4gICAgICAgICAgICByZXR1cm4gLTE7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICByZXR1cm4gMDtcclxuICAgICAgICB9KTtcclxuICAgICAgICBpZiAob3JkZXJEaXJlY3Rpb24gPT09ICdkZXNjJykge1xyXG4gICAgICAgICAgaXRlbXMucmV2ZXJzZSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgaXRlbXM6IGl0ZW1zLmZpbHRlcigoaXRlbSwgaW5kZXgpID0+IHtcclxuICAgICAgICByZXR1cm4gaW5kZXggPj0gcGFnZU51bWJlciAqIHBhZ2VTaXplICYmIGluZGV4IDwgKHBhZ2VOdW1iZXIgKyAxKSAqIHBhZ2VTaXplO1xyXG4gICAgICB9KSxcclxuICAgICAgdG90YWw6IGl0ZW1zLmxlbmd0aCxcclxuICAgIH07XHJcbiAgfTtcclxuXHJcbiAgI2dldEZpbHRlciA9ICgpOiBTZFRhYmxlRmlsdGVyUmVxdWVzdCA9PiB7XHJcbiAgICBjb25zdCB7IGNvbHVtbk9wZXJhdG9yLCBjb2x1bW5GaWx0ZXIsIGV4dGVybmFsRmlsdGVyLCBmaWx0ZXJEZWYgfSA9IHRoaXMuZmlsdGVyUmVnaXN0ZXIudmFsdWUuZ2V0KCk7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBjb2x1bW5PcGVyYXRvcjogY29sdW1uT3BlcmF0b3IgfHwge30sXHJcbiAgICAgIHJhd0NvbHVtbkZpbHRlcjogY29sdW1uRmlsdGVyIHx8IHt9LFxyXG4gICAgICByYXdFeHRlcm5hbEZpbHRlcjogZXh0ZXJuYWxGaWx0ZXIgfHwge30sXHJcbiAgICAgIHJhd0ZpbHRlckRlZjogZmlsdGVyRGVmIHx8IHt9LFxyXG4gICAgICBvcmRlckJ5OiB0aGlzLiNzb3J0Py5hY3RpdmUgfHwgJycsXHJcbiAgICAgIG9yZGVyRGlyZWN0aW9uOiB0aGlzLiNzb3J0Py5kaXJlY3Rpb24gfHwgJycsXHJcbiAgICAgIHBhZ2VOdW1iZXI6IHRoaXMuI3BhZ2luYXRvcj8ucGFnZUluZGV4IHx8IDAsXHJcbiAgICAgIHBhZ2VTaXplOiB0aGlzLiNwYWdpbmF0b3I/LnBhZ2VTaXplIHx8IHRoaXMudGFibGVPcHRpb24/LnBhZ2luYXRlPy5wYWdlU2l6ZSB8fCA1MCxcclxuICAgIH07XHJcbiAgfTtcclxuXHJcbiAgI2xvYWQgPSBhc3luYyAoZmlsdGVyUmVxOiBTZFRhYmxlRmlsdGVyUmVxdWVzdCwgZm9yY2U6IGJvb2xlYW4gPSB0cnVlKSA9PiB7XHJcbiAgICB0aGlzLmlzTG9hZGluZyA9IHRydWU7XHJcbiAgICB0aGlzLnJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICBpZiAodGhpcy50YWJsZU9wdGlvbi50eXBlID09PSAnc2VydmVyJykge1xyXG4gICAgICBjb25zdCB7IGl0ZW1zIH0gPSB0aGlzLnRhYmxlT3B0aW9uO1xyXG4gICAgICBjb25zdCBkYXRhID0gYXdhaXQgaXRlbXMoZmlsdGVyUmVxKS5jYXRjaChlcnIgPT4ge1xyXG4gICAgICAgIHRoaXMubm90aWZ5U2VydmljZS5ub3RpZnkud2FybmluZygnQ8OzIGzhu5dpIHjhuqN5IHJhJyk7XHJcbiAgICAgICAgY29uc29sZS5lcnJvcihlcnIpO1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICBpdGVtczogW10gYXMgVFtdLFxyXG4gICAgICAgICAgdG90YWw6IDAsXHJcbiAgICAgICAgfTtcclxuICAgICAgfSk7XHJcbiAgICAgIHJldHVybiB7XHJcbiAgICAgICAgaXRlbXM6IGF3YWl0IHRoaXMuI2Zvcm1hdChkYXRhPy5pdGVtcywgdGhpcy50YWJsZU9wdGlvbi5jb2x1bW5zKS5maW5hbGx5KCgpID0+IHtcclxuICAgICAgICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLnJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgfSksXHJcbiAgICAgICAgdG90YWw6IGRhdGE/LnRvdGFsIHx8IDAsXHJcbiAgICAgIH07XHJcbiAgICB9XHJcbiAgICBpZiAoZm9yY2UpIHtcclxuICAgICAgY29uc3QgeyBpdGVtcyB9ID0gdGhpcy50YWJsZU9wdGlvbjtcclxuICAgICAgY29uc3QgcmVzdWx0cyA9IGl0ZW1zKCk7XHJcbiAgICAgIGxldCBkYXRhOiBUW10gPSBbXTtcclxuICAgICAgaWYgKHJlc3VsdHMgaW5zdGFuY2VvZiBQcm9taXNlKSB7XHJcbiAgICAgICAgZGF0YSA9IGF3YWl0IHJlc3VsdHMuY2F0Y2goZXJyID0+IHtcclxuICAgICAgICAgIHRoaXMubm90aWZ5U2VydmljZS5ub3RpZnkud2FybmluZygnQ8OzIGzhu5dpIHjhuqN5IHJhJyk7XHJcbiAgICAgICAgICBjb25zb2xlLmVycm9yKGVycik7XHJcbiAgICAgICAgICByZXR1cm4gW107XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgZGF0YSA9IHJlc3VsdHM7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKCFBcnJheS5pc0FycmF5KGRhdGEpKSB7XHJcbiAgICAgICAgdGhpcy5ub3RpZnlTZXJ2aWNlLm5vdGlmeS53YXJuaW5nKCdE4buvIGxp4buHdSBraMO0bmcgcGjhuqNpIGzDoCBt4buZdCBt4bqjbmcnKTtcclxuICAgICAgICBkYXRhID0gW107XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy4jbG9jYWxJdGVtcyA9IGF3YWl0IHRoaXMuI2Zvcm1hdChkYXRhLCB0aGlzLnRhYmxlT3B0aW9uLmNvbHVtbnMpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcclxuICAgIHRoaXMucmVmLmRldGVjdENoYW5nZXMoKTtcclxuICAgIHJldHVybiB0aGlzLiNmaWx0ZXJMb2NhbCh0aGlzLiNsb2NhbEl0ZW1zLCBmaWx0ZXJSZXEpO1xyXG4gIH07XHJcblxyXG4gICNyZW5kZXIgPSBhc3luYyAoYXJnczogeyBpdGVtczogU2RUYWJsZUl0ZW08VD5bXTsgdG90YWw6IG51bWJlciB9KSA9PiB7XHJcbiAgICB0aGlzLnNkU2Nyb2xsPy5zY3JvbGxUb3AoKTtcclxuICAgIHRoaXMuaXRlbXMgPSBhcmdzPy5pdGVtcyB8fCBbXTtcclxuICAgIHRoaXMudG90YWwgPSBhcmdzPy50b3RhbCB8fCAwO1xyXG4gICAgYXdhaXQgdGhpcy50YWJsZU9wdGlvbj8ucmVsb2FkPy5vblJlbG9hZD8uKHRoaXMuaXRlbXMpO1xyXG4gICAgdGhpcy5pc1NlbGVjdEFsbCA9IHRoaXMuaXRlbXMuZXZlcnkoZSA9PiBlLm1ldGEuc2VsZWN0b3IuaXNTZWxlY3RlZCk7XHJcbiAgICB0aGlzLiN1cGRhdGVTZWxlY3RlZEl0ZW1zKCk7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy50YWJsZT8udXBkYXRlU3RpY2t5Q29sdW1uU3R5bGVzKCk7XHJcbiAgICB9LCAwKTtcclxuICB9O1xyXG5cclxuICByZWxvYWQgPSBhc3luYyAoZm9yY2U6IGJvb2xlYW4gPSB0cnVlKSA9PiB7XHJcbiAgICB0aGlzLnRhYmxlRmlsdGVyPy51cGRhdGVGaWx0ZXI/LigpO1xyXG4gICAgY29uc3QgZGF0YSA9IGF3YWl0IHRoaXMuI2xvYWQodGhpcy4jZ2V0RmlsdGVyKCksIGZvcmNlKTtcclxuICAgIHRoaXMuI3JlbmRlcihkYXRhKTtcclxuICB9O1xyXG5cclxuICAjZXhwb3J0ZWRJdGVtcyA9IGFzeW5jIChwYWdlTnVtYmVyOiBudW1iZXIgPSAwLCBwYWdlU2l6ZTogbnVtYmVyID0gMTAwMDApID0+IHtcclxuICAgIGlmICh0aGlzLnRhYmxlT3B0aW9uLmV4cG9ydD8uaXRlbXMpIHtcclxuICAgICAgLy8gY29uc3QgZXhwb3J0ZWRJdGVtcyA9IHRoaXMuZ3JpZE9wdGlvbi5leHBvcnQ/Lml0ZW1zKHRoaXMuI2ZpbHRlckV4cG9ydEluZm8ocGFnZU51bWJlciwgcGFnZVNpemUpKTtcclxuICAgICAgbGV0IHJlc3VsdCA9IHRoaXMudGFibGVPcHRpb24uZXhwb3J0Py5pdGVtcyh0aGlzLiNmaWx0ZXJFeHBvcnRJbmZvKHBhZ2VOdW1iZXIsIHBhZ2VTaXplKSk7XHJcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KHJlc3VsdCkpIHtcclxuICAgICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChpc09ic2VydmFibGU8YW55W10+KHJlc3VsdCkpIHtcclxuICAgICAgICByZXN1bHQgPSByZXN1bHQudG9Qcm9taXNlKCk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKGlzT2JzZXJ2YWJsZTx7IGl0ZW1zOiBhbnlbXTsgdG90YWw6IG51bWJlciB9PihyZXN1bHQpKSB7XHJcbiAgICAgICAgcmVzdWx0ID0gcmVzdWx0LnRvUHJvbWlzZSgpO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBhd2FpdCByZXN1bHQ7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb25zdCBmaWx0ZXJJbmZvID0gdGhpcy4jZmlsdGVyRXhwb3J0SW5mbyhwYWdlTnVtYmVyLCBwYWdlU2l6ZSk7XHJcbiAgICAgIGlmICh0aGlzLnRhYmxlT3B0aW9uLnR5cGUgPT09ICdzZXJ2ZXInKSB7XHJcbiAgICAgICAgbGV0IHJlc3VsdCA9IHRoaXMudGFibGVPcHRpb24uaXRlbXMoZmlsdGVySW5mbyk7XHJcbiAgICAgICAgcmV0dXJuIGF3YWl0IHJlc3VsdDtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBsZXQgZXhwb3J0ZWRJdGVtczogYW55W10gPSBbXTtcclxuICAgICAgICBpZiAodHlwZW9mIHRoaXMudGFibGVPcHRpb24uaXRlbXMgPT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgICAgIGNvbnN0IHJlc3VsdHMgPSB0aGlzLnRhYmxlT3B0aW9uLml0ZW1zKCk7XHJcbiAgICAgICAgICBpZiAocmVzdWx0cyBpbnN0YW5jZW9mIFByb21pc2UpIHtcclxuICAgICAgICAgICAgZXhwb3J0ZWRJdGVtcyA9IGF3YWl0IHJlc3VsdHM7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBleHBvcnRlZEl0ZW1zID0gcmVzdWx0cztcclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgZXhwb3J0ZWRJdGVtcyA9IHRoaXMudGFibGVPcHRpb24uaXRlbXM7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0aGlzLiNmaWx0ZXJMb2NhbChleHBvcnRlZEl0ZW1zLCBmaWx0ZXJJbmZvKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH07XHJcblxyXG4gICNhbGxDb2x1bW5zID0gKCk6IFNkVGFibGVDb2x1bW5bXSA9PiB7XHJcbiAgICBjb25zdCBjb2x1bW5zOiBTZFRhYmxlQ29sdW1uW10gPSBbXTtcclxuICAgIHRoaXMudGFibGVPcHRpb24uY29sdW1uc1xyXG4gICAgICAuZmlsdGVyKGUgPT4gIWUuZXhwb3J0Py5kaXNhYmxlZClcclxuICAgICAgLmZvckVhY2goY29sdW1uID0+IHtcclxuICAgICAgICBpZiAoY29sdW1uLnR5cGUgPT09ICdjaGlsZHJlbicpIHtcclxuICAgICAgICAgIGNvbHVtbi5jaGlsZHJlblxyXG4gICAgICAgICAgICA/LmZpbHRlcihlID0+ICFlLmV4cG9ydD8uZGlzYWJsZWQpXHJcbiAgICAgICAgICAgIC5mb3JFYWNoKGNoaWxkQ29sdW1uID0+IHtcclxuICAgICAgICAgICAgICBjb2x1bW5zLnB1c2goY2hpbGRDb2x1bW4pO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29sdW1ucy5wdXNoKGNvbHVtbik7XHJcbiAgICAgIH0pO1xyXG4gICAgcmV0dXJuIGNvbHVtbnM7XHJcbiAgfTtcclxuXHJcbiAgI2FsbEV4cG9ydGVkQ29sdW1ucyA9ICgpOiBTZFRhYmxlT3B0aW9uRXhwb3J0Q29sdW1uW10gPT4ge1xyXG4gICAgcmV0dXJuIHRoaXMudGFibGVPcHRpb24uZXhwb3J0Py5jb2x1bW5zPy5maWx0ZXIoZSA9PiAhZS5leHBvcnQ/LmRpc2FibGVkKSB8fCBbXTtcclxuICB9O1xyXG5cclxuICBvbkV4cG9ydCA9IGFzeW5jIChhcmdzPzogeyBmaWxlPzogU2RFeHBvcnRGaWxlOyBjb2x1bW5zPzogU2RFeHBvcnRDb2x1bW5bXTsgaXNDU1Y/OiBib29sZWFuIH0pID0+IHtcclxuICAgIGNvbnN0IHsgZmlsZSwgaXNDU1YgfSA9IHsgLi4uYXJncyB9O1xyXG4gICAgdHJ5IHtcclxuICAgICAgbGV0IGNvbHVtbnMgPSB0aGlzLiNnZXRFeHBvcnRDb2x1bW5zKGFyZ3M/LmNvbHVtbnMpO1xyXG4gICAgICBjb25zdCBwYWdlU2l6ZSA9IHRoaXMudGFibGVPcHRpb24/LmV4cG9ydD8ubWF4SXRlbXNQZXJSZXF1ZXN0IHx8IDEwMDA7XHJcbiAgICAgIGNvbnN0IGJhdGNoID0gdGhpcy50YWJsZU9wdGlvbj8uZXhwb3J0Py5iYXRjaCB8fCAxO1xyXG4gICAgICBsZXQgdG90YWwgPSB0aGlzLnRvdGFsO1xyXG4gICAgICBsZXQgcGFnZU51bWJlciA9IDA7XHJcbiAgICAgIGxldCBleHBvcnRJdGVtcyA9IFtdO1xyXG4gICAgICB0aGlzLmlzRXhwb3J0aW5nID0gdHJ1ZTtcclxuICAgICAgY29uc3QgaXRlbXM6IGFueVtdID0gW107XHJcbiAgICAgIGxldCBwcm9taXNlczogUHJvbWlzZTxcclxuICAgICAgICB8IGFueVtdXHJcbiAgICAgICAgfCB7XHJcbiAgICAgICAgICAgIGl0ZW1zOiBhbnlbXTtcclxuICAgICAgICAgICAgdG90YWw6IG51bWJlcjtcclxuICAgICAgICAgIH1cclxuICAgICAgPltdID0gW107XHJcbiAgICAgIGNvbnN0IGhhbmRsZURhdGEgPSBhc3luYyAoKSA9PiB7XHJcbiAgICAgICAgY29uc3QgcmVzdWx0cyA9IGF3YWl0IFByb21pc2UuYWxsKHByb21pc2VzKTtcclxuICAgICAgICBwcm9taXNlcyA9IFtdO1xyXG4gICAgICAgIGV4cG9ydEl0ZW1zID0gW107XHJcbiAgICAgICAgZm9yIChjb25zdCByZXN1bHQgb2YgcmVzdWx0cykge1xyXG4gICAgICAgICAgaWYgKCdpdGVtcycgaW4gcmVzdWx0KSB7XHJcbiAgICAgICAgICAgIGV4cG9ydEl0ZW1zID0gWy4uLmV4cG9ydEl0ZW1zLCAuLi5yZXN1bHQuaXRlbXNdO1xyXG4gICAgICAgICAgICB0b3RhbCA9IHJlc3VsdC50b3RhbDtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGV4cG9ydEl0ZW1zID0gWy4uLmV4cG9ydEl0ZW1zLCAuLi5yZXN1bHRdO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy50YWJsZU9wdGlvbi5leHBvcnQ/Lm1hcHBpbmcpIHtcclxuICAgICAgICAgIGNvbnN0IHJlc3VsdHMgPSB0aGlzLnRhYmxlT3B0aW9uLmV4cG9ydC5tYXBwaW5nKGV4cG9ydEl0ZW1zKTtcclxuICAgICAgICAgIGlmIChyZXN1bHRzIGluc3RhbmNlb2YgUHJvbWlzZSkge1xyXG4gICAgICAgICAgICBleHBvcnRJdGVtcyA9IGF3YWl0IHJlc3VsdHM7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBleHBvcnRJdGVtcyA9IHJlc3VsdHM7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IHRvdGFsUGFnZSA9IHRvdGFsIC8gcGFnZVNpemU7XHJcbiAgICAgICAgY29uc3QgcGVyY2VudCA9IE1hdGgucm91bmQoKChwYWdlTnVtYmVyIC0gMSkgKiAxMDAuMCkgLyB0b3RhbFBhZ2UpO1xyXG4gICAgICAgIHRoaXMuZXhwb3J0VGl0bGUgPSBgRXhwb3J0aW5nLi4uJHtwZXJjZW50fSVgO1xyXG4gICAgICAgIGNvbnN0IGFsbENvbHVtbnMgPSB0aGlzLiNhbGxDb2x1bW5zKCk7XHJcbiAgICAgICAgY29uc3QgYWxsRXhwb3J0ZWRDb2x1bW5zID0gdGhpcy4jYWxsRXhwb3J0ZWRDb2x1bW5zKCk7XHJcbiAgICAgICAgZm9yIChjb25zdCBpdGVtIG9mIGV4cG9ydEl0ZW1zKSB7XHJcbiAgICAgICAgICBjb25zdCBvYmo6IGFueSA9IHt9O1xyXG4gICAgICAgICAgY29uc3QgaGFuZGxlID0gYXN5bmMgKGV4cG9ydENvbHVtbjogU2RFeHBvcnRDb2x1bW4pID0+IHtcclxuICAgICAgICAgICAgb2JqW2V4cG9ydENvbHVtbi5maWVsZF0gPSBpdGVtW2V4cG9ydENvbHVtbi5maWVsZF07XHJcbiAgICAgICAgICAgIGNvbnN0IGNvbHVtbiA9IGFsbENvbHVtbnMuZmluZChlID0+IGUuZmllbGQgPT09IGV4cG9ydENvbHVtbi5maWVsZCk7XHJcbiAgICAgICAgICAgIGNvbnN0IGV4cG9ydGVkQ29sdW1uID0gYWxsRXhwb3J0ZWRDb2x1bW5zLmZpbmQoZSA9PiBlLmZpZWxkID09PSBleHBvcnRDb2x1bW4uZmllbGQpO1xyXG4gICAgICAgICAgICBpZiAoZXhwb3J0ZWRDb2x1bW4/LnRyYW5zZm9ybSkge1xyXG4gICAgICAgICAgICAgIG9ialtleHBvcnRlZENvbHVtbi5maWVsZF0gPSBleHBvcnRlZENvbHVtbi50cmFuc2Zvcm0oaXRlbVtleHBvcnRlZENvbHVtbi5maWVsZF0sIGl0ZW0pO1xyXG4gICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoIWNvbHVtbikge1xyXG4gICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoY29sdW1uLnR5cGUgPT09ICdjaGlsZHJlbicpIHtcclxuICAgICAgICAgICAgICBjb2x1bW4/LmNoaWxkcmVuLmZvckVhY2goY2hpbGRDb2x1bW4gPT4gaGFuZGxlKGNoaWxkQ29sdW1uKSk7XHJcbiAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmICghY29sdW1ucy5zb21lKGUgPT4gZS5maWVsZCA9PT0gY29sdW1uLmZpZWxkKSkge1xyXG4gICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoY29sdW1uLnRyYW5zZm9ybSkge1xyXG4gICAgICAgICAgICAgIGNvbnN0IHRyYW5zZm9ybSA9IGNvbHVtbi50cmFuc2Zvcm0oaXRlbVtjb2x1bW4uZmllbGRdLCBpdGVtLCB7XHJcbiAgICAgICAgICAgICAgICBpc0V4cG9ydDogdHJ1ZSxcclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICBpZiAodHJhbnNmb3JtIGluc3RhbmNlb2YgUHJvbWlzZSkge1xyXG4gICAgICAgICAgICAgICAgb2JqW2NvbHVtbi5maWVsZF0gPSBhd2FpdCB0cmFuc2Zvcm07XHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIG9ialtjb2x1bW4uZmllbGRdID0gdHJhbnNmb3JtO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBvYmpbY29sdW1uLmZpZWxkXSA9IG9ialtjb2x1bW4uZmllbGRdID8/ICcnO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGl0ZW1bY29sdW1uLmZpZWxkXSA9PT0gdW5kZWZpbmVkIHx8IGl0ZW1bY29sdW1uLmZpZWxkXSA9PT0gbnVsbCB8fCBpdGVtW2NvbHVtbi5maWVsZF0gPT09ICcnKSB7XHJcbiAgICAgICAgICAgICAgb2JqW2NvbHVtbi5maWVsZF0gPSAnJztcclxuICAgICAgICAgICAgfSBlbHNlIGlmIChjb2x1bW4udHlwZSA9PT0gJ3N0cmluZycgfHwgY29sdW1uLnR5cGUgPT09ICdudW1iZXInKSB7XHJcbiAgICAgICAgICAgICAgLy8gTuG6v3UgY2VsbCBsw6Agc3RyaW5nIGhv4bq3YyBudW1iZXIgdGjDrCBnw6FuIGLhurFuZyBjaMOtbmggbsOzXHJcbiAgICAgICAgICAgICAgb2JqW2NvbHVtbi5maWVsZF0gPSBpdGVtW2NvbHVtbi5maWVsZF07XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoY29sdW1uLnR5cGUgPT09ICdib29sJykge1xyXG4gICAgICAgICAgICAgIC8vIE7hur91IGzDoCBib29sIHRow6wgZ8OhbiBi4bqxbmcgZ2nDoSB0cuG7iyB0cnVlVmFsdWUgdsOgIGZhbHNlVmFsdWUgKG7hur91IGPDsyksIG3hurdjIMSR4buLbmggbMOgIFRSVUUvRkFMU0VcclxuICAgICAgICAgICAgICBpZiAoaXRlbVtjb2x1bW4uZmllbGRdKSB7XHJcbiAgICAgICAgICAgICAgICBvYmpbY29sdW1uLmZpZWxkXSA9IGNvbHVtbi5vcHRpb24/LmRpc3BsYXlPblRydWUgfHwgJ1RydWUnO1xyXG4gICAgICAgICAgICAgIH0gZWxzZSBpZiAob2JqW2NvbHVtbi5maWVsZF0gIT09IHVuZGVmaW5lZCAmJiBvYmpbY29sdW1uLmZpZWxkXSAhPT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgb2JqW2NvbHVtbi5maWVsZF0gPSBjb2x1bW4ub3B0aW9uPy5kaXNwbGF5T25GYWxzZSB8fCAnRmFsc2UnO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSBlbHNlIGlmIChjb2x1bW4udHlwZSA9PT0gJ2RhdGUnKSB7XHJcbiAgICAgICAgICAgICAgbGV0IGRhdGUgPSBpdGVtW2NvbHVtbi5maWVsZF07XHJcbiAgICAgICAgICAgICAgLy8gTuG6v3UgbMOgIGRhdGUgdGjDrCBjb252ZXJ0IHRoZW8gxJHDum5nIGZvcm1hdFxyXG4gICAgICAgICAgICAgIG9ialtjb2x1bW4uZmllbGRdID0gRGF0ZS50b0Zvcm1hdChkYXRlLCAnZGQvTU0veXl5eScpO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGNvbHVtbi50eXBlID09PSAnZGF0ZXRpbWUnKSB7XHJcbiAgICAgICAgICAgICAgbGV0IGRhdGUgPSBpdGVtW2NvbHVtbi5maWVsZF07XHJcbiAgICAgICAgICAgICAgLy8gTuG6v3UgbMOgIGRhdGV0aW1lIHRow6wgY29udmVydCB0aGVvIMSRw7puZyBmb3JtYXRcclxuICAgICAgICAgICAgICBvYmpbY29sdW1uLmZpZWxkXSA9IERhdGUudG9Gb3JtYXQoZGF0ZSwgJ2RkL01NL3l5eXkgSEg6bW0nKTtcclxuICAgICAgICAgICAgfSBlbHNlIGlmIChjb2x1bW4udHlwZSA9PT0gJ3RpbWUnKSB7XHJcbiAgICAgICAgICAgICAgbGV0IGRhdGUgPSBpdGVtW2NvbHVtbi5maWVsZF07XHJcbiAgICAgICAgICAgICAgLy8gTuG6v3UgbMOgIHRpbWUgdGjDrCBjb252ZXJ0IHRoZW8gxJHDum5nIGZvcm1hdFxyXG4gICAgICAgICAgICAgIG9ialtjb2x1bW4uZmllbGRdID0gRGF0ZS50b0Zvcm1hdChkYXRlLCAnSEg6bW0nKTtcclxuICAgICAgICAgICAgfSBlbHNlIGlmIChjb2x1bW4udHlwZSA9PT0gJ3ZhbHVlcycgfHwgY29sdW1uLnR5cGUgPT09ICdsYXp5LXZhbHVlcycpIHtcclxuICAgICAgICAgICAgICBjb25zdCB2YWx1ZSA9IGl0ZW1bY29sdW1uLmZpZWxkXTtcclxuICAgICAgICAgICAgICBpZiAoY29sdW1uLnR5cGUgPT09ICdsYXp5LXZhbHVlcycgJiYgdHlwZW9mIGNvbHVtbi5vcHRpb24ubWFwVmFsdWUgPT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHZhbCA9IGNvbHVtbi5vcHRpb24ubWFwVmFsdWUodmFsdWUsIGl0ZW0pO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgdmFscyA9IChBcnJheS5pc0FycmF5KHZhbCkgPyB2YWwgOiBbdmFsXSkuZmlsdGVyKGUgPT4gISFlPy50b1N0cmluZygpKTtcclxuICAgICAgICAgICAgICAgIG9ialtjb2x1bW4uZmllbGRdID0gdmFsc1xyXG4gICAgICAgICAgICAgICAgICAubWFwKHZhbCA9PiB0aGlzLiNjYWNoZU9ialZhbHVlc1tjb2x1bW4uZmllbGRdPy5bdmFsXT8uW2NvbHVtbi5vcHRpb24uZGlzcGxheUZpZWxkXSB8fCB2YWwpXHJcbiAgICAgICAgICAgICAgICAgID8uam9pbignLCAnKTtcclxuICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgdmFscyA9IChBcnJheS5pc0FycmF5KHZhbHVlKSA/IHZhbHVlIDogW3ZhbHVlXSkuZmlsdGVyKGUgPT4gISFlPy50b1N0cmluZygpKTtcclxuICAgICAgICAgICAgICAgIG9ialtjb2x1bW4uZmllbGRdID0gdmFsc1xyXG4gICAgICAgICAgICAgICAgICAubWFwKHZhbCA9PiB0aGlzLiNjYWNoZU9ialZhbHVlc1tjb2x1bW4uZmllbGRdPy5bdmFsXT8uW2NvbHVtbi5vcHRpb24uZGlzcGxheUZpZWxkXSB8fCB2YWwpXHJcbiAgICAgICAgICAgICAgICAgID8uam9pbignLCAnKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgb2JqW2NvbHVtbi5maWVsZF0gPSBpdGVtW2NvbHVtbi5maWVsZF07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH07XHJcbiAgICAgICAgICAvLyB0aGlzLmdyaWRPcHRpb24uY29sdW1ucy5mb3JFYWNoKGhhbmRsZSk7XHJcbiAgICAgICAgICBmb3IgKGNvbnN0IGV4cG9ydENvbHVtbiBvZiBjb2x1bW5zKSB7XHJcbiAgICAgICAgICAgIGF3YWl0IGhhbmRsZShleHBvcnRDb2x1bW4pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaXRlbXMucHVzaChvYmopO1xyXG4gICAgICAgIH1cclxuICAgICAgfTtcclxuICAgICAgd2hpbGUgKHBhZ2VOdW1iZXIgKiBwYWdlU2l6ZSA8IHRvdGFsKSB7XHJcbiAgICAgICAgcHJvbWlzZXMucHVzaCh0aGlzLiNleHBvcnRlZEl0ZW1zKHBhZ2VOdW1iZXIsIHBhZ2VTaXplKSk7XHJcbiAgICAgICAgcGFnZU51bWJlcisrO1xyXG4gICAgICAgIGlmIChwcm9taXNlcy5sZW5ndGggPCBiYXRjaCkge1xyXG4gICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGF3YWl0IGhhbmRsZURhdGEoKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAocHJvbWlzZXMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIGF3YWl0IGhhbmRsZURhdGEoKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAoZmlsZT8uZmlsZVBhdGgpIHtcclxuICAgICAgICBhd2FpdCB0aGlzLmV4cG9ydFNlcnZpY2UuZXhwb3J0QnlUZW1wbGF0ZSh7XHJcbiAgICAgICAgICBmaWxlUGF0aDogZmlsZS5maWxlUGF0aCxcclxuICAgICAgICAgIGZpbGVOYW1lOiBmaWxlLmZpbGVOYW1lLFxyXG4gICAgICAgICAgY29sdW1ucyxcclxuICAgICAgICAgIGl0ZW1zLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICBpZiAoaXNDU1YpIHtcclxuICAgICAgICBhd2FpdCB0aGlzLmV4cG9ydFNlcnZpY2UuZXhwb3J0Q1NWKHtcclxuICAgICAgICAgIGNvbHVtbnMsXHJcbiAgICAgICAgICBpdGVtcyxcclxuICAgICAgICAgIGZpbGVOYW1lOiB0aGlzLnRhYmxlT3B0aW9uPy5leHBvcnQ/LmZpbGVOYW1lLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICBjb25zdCBzaGVldHM6IHtcclxuICAgICAgICBuYW1lOiBzdHJpbmc7XHJcbiAgICAgICAgaXRlbXM6IGFueVtdO1xyXG4gICAgICAgIGZpZWxkczogc3RyaW5nW107XHJcbiAgICAgIH1bXSA9IFtdO1xyXG4gICAgICBpZiAoQXJyYXkuaXNBcnJheSh0aGlzLnRhYmxlT3B0aW9uPy5leHBvcnQ/LnNoZWV0cykpIHtcclxuICAgICAgICBmb3IgKGNvbnN0IHNoZWV0IG9mIHRoaXMudGFibGVPcHRpb24uZXhwb3J0LnNoZWV0cykge1xyXG4gICAgICAgICAgaWYgKHNoZWV0Lm5hbWUgJiYgc2hlZXQuaXRlbXMgJiYgc2hlZXQuZmllbGRzKSB7XHJcbiAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHNoZWV0Lml0ZW1zKSkge1xyXG4gICAgICAgICAgICAgIHNoZWV0cy5wdXNoKHtcclxuICAgICAgICAgICAgICAgIG5hbWU6IHNoZWV0Lm5hbWUsXHJcbiAgICAgICAgICAgICAgICBpdGVtczogc2hlZXQuaXRlbXMsXHJcbiAgICAgICAgICAgICAgICBmaWVsZHM6IHNoZWV0LmZpZWxkcyxcclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICBzaGVldHMucHVzaCh7XHJcbiAgICAgICAgICAgICAgICBuYW1lOiBzaGVldC5uYW1lLFxyXG4gICAgICAgICAgICAgICAgaXRlbXM6IGF3YWl0IHNoZWV0Lml0ZW1zKCksXHJcbiAgICAgICAgICAgICAgICBmaWVsZHM6IHNoZWV0LmZpZWxkcyxcclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBhd2FpdCB0aGlzLmV4cG9ydFNlcnZpY2UuZXhwb3J0KHtcclxuICAgICAgICBjb2x1bW5zLFxyXG4gICAgICAgIGl0ZW1zLFxyXG4gICAgICAgIGZpbGVOYW1lOiB0aGlzLnRhYmxlT3B0aW9uPy5leHBvcnQ/LmZpbGVOYW1lLFxyXG4gICAgICAgIHNoZWV0cyxcclxuICAgICAgfSk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH0gZmluYWxseSB7XHJcbiAgICAgIHRoaXMuaXNFeHBvcnRpbmcgPSBmYWxzZTtcclxuICAgICAgdGhpcy5leHBvcnRUaXRsZSA9IGBFeHBvcnRgO1xyXG4gICAgICB0aGlzLnJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9XHJcbiAgfTtcclxuXHJcbiAgI2dldEV4cG9ydENvbHVtbnMgPSAoY29sdW1ucz86IFNkRXhwb3J0Q29sdW1uW10pID0+IHtcclxuICAgIGxldCB0YWJsZUNvbHVtbnM6IFNkRXhwb3J0Q29sdW1uW10gPSBbXTtcclxuICAgIC8vIEzhuqV5IGNvbHVtbiB04burIG9wdGlvblxyXG4gICAgdGhpcy50YWJsZU9wdGlvbi5jb2x1bW5zXHJcbiAgICAgIC5maWx0ZXIoZSA9PiAhZS5leHBvcnQ/LmRpc2FibGVkKVxyXG4gICAgICAuZm9yRWFjaChjb2x1bW4gPT4ge1xyXG4gICAgICAgIGlmIChjb2x1bW4udHlwZSA9PT0gJ2NoaWxkcmVuJykge1xyXG4gICAgICAgICAgY29sdW1uLmNoaWxkcmVuXHJcbiAgICAgICAgICAgID8uZmlsdGVyKGUgPT4gIWUuZXhwb3J0Py5kaXNhYmxlZClcclxuICAgICAgICAgICAgLmZvckVhY2goY2hpbGRDb2x1bW4gPT4ge1xyXG4gICAgICAgICAgICAgIHRhYmxlQ29sdW1ucy5wdXNoKGNoaWxkQ29sdW1uKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRhYmxlQ29sdW1ucy5wdXNoKGNvbHVtbik7XHJcbiAgICAgIH0pO1xyXG4gICAgLy8gTOG6pXkgY29sdW1ucyB04burIGNvbmZpZ3VyYXRpb25cclxuICAgIGlmICh0aGlzLmNvbmZpZ3VyYXRpb24pIHtcclxuICAgICAgY29uc3QgY29sdW1ucyA9IFsuLi50YWJsZUNvbHVtbnNdO1xyXG4gICAgICBjb25zdCB7IGZpcnN0Q29sdW1ucywgc2Vjb25kQ29sdW1ucyB9ID0gdGhpcy5jb25maWd1cmF0aW9uO1xyXG4gICAgICBjb25zdCBkaXNwbGF5Q29sdW1uczogU2RUYWJsZUNvbHVtbltdID0gWy4uLmZpcnN0Q29sdW1ucywgLi4uc2Vjb25kQ29sdW1uc10ucmVkdWNlKChmaXJzdCwgbmV4dCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGNvbHVtbiA9IHRoaXMudGFibGVPcHRpb24uY29sdW1ucy5maW5kKGUgPT4gZS5maWVsZCA9PT0gbmV4dC5maWVsZCk7XHJcbiAgICAgICAgaWYgKCFjb2x1bW4pIHtcclxuICAgICAgICAgIHJldHVybiBmaXJzdDtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGNvbHVtbi50eXBlICE9PSAnY2hpbGRyZW4nKSB7XHJcbiAgICAgICAgICByZXR1cm4gWy4uLmZpcnN0LCBjb2x1bW5dO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBjaGlsZHJlbiA9IGNvbHVtbi5jaGlsZHJlbjtcclxuICAgICAgICByZXR1cm4gWy4uLmZpcnN0LCAuLi5jaGlsZHJlbl07XHJcbiAgICAgIH0sIFtdKTtcclxuICAgICAgdGFibGVDb2x1bW5zID0gZGlzcGxheUNvbHVtbnNcclxuICAgICAgICAubWFwKGUgPT4gKHtcclxuICAgICAgICAgIC4uLmUsXHJcbiAgICAgICAgICBkYXRhOiBjb2x1bW5zLmZpbmQoZTEgPT4gZTEuZmllbGQgPT09IGUuZmllbGQpLFxyXG4gICAgICAgIH0pKVxyXG4gICAgICAgIC5maWx0ZXIoZSA9PiAhIWUuZGF0YSlcclxuICAgICAgICAubWFwKGUgPT4gZS5kYXRhKTtcclxuICAgIH1cclxuICAgIC8vIENo4buJIGzhuqV5IGPDoWMgY29sdW1ucyDEkcaw4bujYyB0aGnhur90IGzhuq1wXHJcbiAgICBjb25zdCBjb2x1bW5GaWVsZHMgPSBjb2x1bW5zPy5tYXAoZSA9PiBlLmZpZWxkKSB8fCBbXTtcclxuICAgIHJldHVybiBbLi4udGFibGVDb2x1bW5zLCAuLi4odGhpcy50YWJsZU9wdGlvbi5leHBvcnQ/LmNvbHVtbnM/LmZpbHRlcihlID0+ICFlLmV4cG9ydD8uZGlzYWJsZWQpIHx8IFtdKV0uZmlsdGVyKFxyXG4gICAgICBjb2x1bW4gPT4gIWNvbHVtbkZpZWxkcz8ubGVuZ3RoIHx8IGNvbHVtbkZpZWxkcy5pbmNsdWRlcyhjb2x1bW4uZmllbGQpXHJcbiAgICApO1xyXG4gIH07XHJcblxyXG4gIGV4cG9ydEV4Y2VsID0gKCkgPT4ge1xyXG4gICAgdGhpcy5vbkV4cG9ydCgpO1xyXG4gIH07XHJcblxyXG4gIGV4cG9ydENTViA9ICgpID0+IHtcclxuICAgIHRoaXMub25FeHBvcnQoeyBpc0NTVjogdHJ1ZSB9KTtcclxuICB9O1xyXG5cclxuICBvbkZpbHRlckNoYW5nZSA9ICgpID0+IHtcclxuICAgIHRoaXMudGFibGVGaWx0ZXI/LnVwZGF0ZUZpbHRlcj8uKCk7XHJcbiAgICB0aGlzLmZpbHRlclJlZ2lzdGVyLnZhbHVlLnNldCh7XHJcbiAgICAgIGNvbHVtbk9wZXJhdG9yOiB0aGlzLmNvbHVtbk9wZXJhdG9yIHx8IHt9LFxyXG4gICAgICBjb2x1bW5GaWx0ZXI6IHRoaXMuY29sdW1uRmlsdGVyLFxyXG4gICAgfSk7XHJcbiAgfTtcclxuXHJcbiAgb25FeHBhbmQgPSBhc3luYyAocm93RGF0YTogU2RUYWJsZUl0ZW08VD4pID0+IHtcclxuICAgIGlmICh0aGlzLnRhYmxlT3B0aW9uLmV4cGFuZD8uYWx3YXlzKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGlmIChyb3dEYXRhLm1ldGEuZXhwYW5kLmlzRXhwYW5kaW5nKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGlmIChyb3dEYXRhLm1ldGEuZXhwYW5kLmlzRXhwYW5kZWQpIHtcclxuICAgICAgcm93RGF0YS5tZXRhLmV4cGFuZC5pc0V4cGFuZGVkID0gZmFsc2U7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IGRhdGEgPSB0aGlzLnRhYmxlT3B0aW9uPy5leHBhbmQ/Lm9uRXhwYW5kPy4ocm93RGF0YS5kYXRhKTtcclxuICAgIGlmICghdGhpcy50YWJsZU9wdGlvbi5leHBhbmQ/Lm11bHRpcGxlKSB7XHJcbiAgICAgIHRoaXMuaXRlbXMuZm9yRWFjaChpdGVtID0+IChpdGVtLm1ldGEuZXhwYW5kLmlzRXhwYW5kaW5nID0gaXRlbS5tZXRhLmV4cGFuZC5pc0V4cGFuZGVkID0gZmFsc2UpKTtcclxuICAgIH1cclxuICAgIGlmIChkYXRhIGluc3RhbmNlb2YgUHJvbWlzZSkge1xyXG4gICAgICByb3dEYXRhLm1ldGEuZXhwYW5kLmlzRXhwYW5kaW5nID0gdHJ1ZTtcclxuICAgICAgZGF0YVxyXG4gICAgICAgIC50aGVuKHJlcyA9PiB7XHJcbiAgICAgICAgICByb3dEYXRhLm1ldGEuZXhwYW5kLmRhdGEgPSByZXM7XHJcbiAgICAgICAgICByb3dEYXRhLm1ldGEuZXhwYW5kLmlzRXhwYW5kZWQgPSB0cnVlO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgLmZpbmFsbHkoKCkgPT4gKHJvd0RhdGEubWV0YS5leHBhbmQuaXNFeHBhbmRpbmcgPSBmYWxzZSkpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcm93RGF0YS5tZXRhLmV4cGFuZC5kYXRhID0gZGF0YTtcclxuICAgICAgcm93RGF0YS5tZXRhLmV4cGFuZC5pc0V4cGFuZGVkID0gdHJ1ZTtcclxuICAgIH1cclxuICB9O1xyXG5cclxuICBvblNlbGVjdCA9IChyb3dEYXRhOiBTZFRhYmxlSXRlbTxUPikgPT4ge1xyXG4gICAgaWYgKHJvd0RhdGEubWV0YS5ncm91cD8uaXRlbXM/Lmxlbmd0aCkge1xyXG4gICAgICByb3dEYXRhLm1ldGEuZ3JvdXAuaXRlbXMuZm9yRWFjaChlID0+IChlLm1ldGEuc2VsZWN0b3IuaXNTZWxlY3RlZCA9IHJvd0RhdGEubWV0YS5zZWxlY3Rvci5pc1NlbGVjdGVkKSk7XHJcbiAgICAgIHRoaXMudGFibGVPcHRpb24uc2VsZWN0b3I/Lm9uU2VsZWN0Py4oXHJcbiAgICAgICAgcm93RGF0YS5kYXRhLFxyXG4gICAgICAgIHRoaXMuaXRlbXMuZmlsdGVyKGUgPT4gZS5tZXRhLnNlbGVjdG9yLmlzU2VsZWN0ZWQpLm1hcChlID0+IGUuZGF0YSlcclxuICAgICAgKTtcclxuICAgICAgdGhpcy5pc1NlbGVjdEFsbCA9IHRoaXMuaXRlbXMuZXZlcnkoZSA9PiBlLm1ldGEuc2VsZWN0b3IuaXNTZWxlY3RlZCk7XHJcbiAgICAgIHRoaXMuI3VwZGF0ZVNlbGVjdGVkSXRlbXMoKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmICh0aGlzLnRhYmxlT3B0aW9uLnNlbGVjdG9yPy5zaW5nbGUpIHtcclxuICAgICAgICB0aGlzLml0ZW1zLmZpbHRlcihlID0+IGUgIT09IHJvd0RhdGEpLmZvckVhY2goZSA9PiAoZS5tZXRhLnNlbGVjdG9yLmlzU2VsZWN0ZWQgPSBmYWxzZSkpO1xyXG4gICAgICAgIHRoaXMuI3VwZGF0ZVNlbGVjdGVkSXRlbXMoKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy50YWJsZU9wdGlvbi5zZWxlY3Rvcj8ub25TZWxlY3Q/LihcclxuICAgICAgICByb3dEYXRhLmRhdGEsXHJcbiAgICAgICAgdGhpcy5pdGVtcy5maWx0ZXIoZSA9PiBlLm1ldGEuc2VsZWN0b3IuaXNTZWxlY3RlZCkubWFwKGUgPT4gZS5kYXRhKVxyXG4gICAgICApO1xyXG4gICAgICB0aGlzLmlzU2VsZWN0QWxsID0gdGhpcy5pdGVtcy5ldmVyeShlID0+IGUubWV0YS5zZWxlY3Rvci5pc1NlbGVjdGVkKTtcclxuICAgICAgdGhpcy4jdXBkYXRlU2VsZWN0ZWRJdGVtcygpO1xyXG4gICAgfVxyXG4gIH07XHJcblxyXG4gIG9uU2VsZWN0QWxsID0gKCkgPT4ge1xyXG4gICAgdGhpcy5pdGVtcz8uZm9yRWFjaChlID0+IHtcclxuICAgICAgaWYgKGUubWV0YS5zZWxlY3Rvci5zZWxlY3RhYmxlICYmICghdGhpcy50YWJsZU9wdGlvbj8uc2VsZWN0b3I/LmFjdGlvbnM/Lmxlbmd0aCB8fCBlLm1ldGEuc2VsZWN0b3IuYWN0aW9ucz8ubGVuZ3RoKSkge1xyXG4gICAgICAgIGUubWV0YS5zZWxlY3Rvci5pc1NlbGVjdGVkID0gdGhpcy5pc1NlbGVjdEFsbDtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICB0aGlzLnRhYmxlT3B0aW9uLnNlbGVjdG9yPy5vblNlbGVjdEFsbD8uKHRoaXMuaXRlbXMuZmlsdGVyKGUgPT4gZS5tZXRhLnNlbGVjdG9yLmlzU2VsZWN0ZWQpLm1hcChlID0+IGUuZGF0YSkpO1xyXG4gICAgdGhpcy4jdXBkYXRlU2VsZWN0ZWRJdGVtcygpO1xyXG4gIH07XHJcblxyXG4gIG9uQ2xlYXJTZWxlY3Rpb24gPSAoaXRlbXM/OiBTZFRhYmxlSXRlbTxUPltdKSA9PiB7XHJcbiAgICBpdGVtcyA9IGl0ZW1zIHx8IHRoaXMuaXRlbXM7XHJcbiAgICB0aGlzLmlzU2VsZWN0QWxsID0gZmFsc2U7XHJcbiAgICBpdGVtcz8uZm9yRWFjaChlID0+IChlLm1ldGEuc2VsZWN0b3IuaXNTZWxlY3RlZCA9IGZhbHNlKSk7XHJcbiAgICB0aGlzLiN1cGRhdGVTZWxlY3RlZEl0ZW1zKCk7XHJcbiAgfTtcclxuXHJcbiAgI3VwZGF0ZVNlbGVjdGVkSXRlbXMgPSAoKSA9PiB7XHJcbiAgICB0aGlzLnNlbGVjdGVkVGFibGVJdGVtcyA9IHRoaXMuaXRlbXMuZmlsdGVyKGl0ZW0gPT4gaXRlbS5tZXRhLnNlbGVjdG9yLmlzU2VsZWN0ZWQpO1xyXG4gICAgdGhpcy5yZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH07XHJcblxyXG4gIGNsZWFyRmlsdGVyID0gKCkgPT4ge1xyXG4gICAgdGhpcy5maWx0ZXJSZWdpc3Rlci52YWx1ZS5yZW1vdmUoKTtcclxuICB9O1xyXG5cclxuICBzZXRGaWx0ZXIgPSAoYXJnczogeyBjb2x1bW5GaWx0ZXI/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+OyBleHRlcm5hbEZpbHRlcj86IFJlY29yZDxzdHJpbmcsIGFueT47IGZpbHRlckRlZj86IFJlY29yZDxzdHJpbmcsIGFueT4gfSkgPT4ge1xyXG4gICAgY29uc3QgeyBjb2x1bW5GaWx0ZXIsIGV4dGVybmFsRmlsdGVyLCBmaWx0ZXJEZWYgfSA9IGFyZ3MgfHwge307XHJcbiAgICBpZiAoY29sdW1uRmlsdGVyKSB7XHJcbiAgICAgIHRoaXMuY29sdW1uRmlsdGVyID0gY29sdW1uRmlsdGVyO1xyXG4gICAgfVxyXG4gICAgdGhpcy5maWx0ZXJSZWdpc3Rlci52YWx1ZS5zZXQoe1xyXG4gICAgICBjb2x1bW5GaWx0ZXIsXHJcbiAgICAgIGV4dGVybmFsRmlsdGVyLFxyXG4gICAgICBmaWx0ZXJEZWYsXHJcbiAgICB9KTtcclxuICB9O1xyXG5cclxuICBnZXQgZGF0YUl0ZW1zKCk6IFRbXSB7XHJcbiAgICByZXR1cm4gdGhpcy5pdGVtcy5tYXAoaXRlbSA9PiBpdGVtLmRhdGEpO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHNlbGVjdGVkSXRlbXMoKTogVFtdIHtcclxuICAgIHJldHVybiB0aGlzLnNlbGVjdGVkVGFibGVJdGVtcy5tYXAoaXRlbSA9PiBpdGVtLmRhdGEpO1xyXG4gIH1cclxuXHJcbiAgZGV0ZWN0Q2hhbmdlcyA9ICgpID0+IHRoaXMucmVmLmRldGVjdENoYW5nZXMoKTtcclxuXHJcbiAgI2xvYWRWYWx1ZXMgPSBhc3luYyAoY29sdW1uczogU2RUYWJsZUNvbHVtbltdKSA9PiB7XHJcbiAgICBjb25zdCBwcm9taXNlczogUHJvbWlzZTx7XHJcbiAgICAgIGtleTogc3RyaW5nO1xyXG4gICAgICB2YWx1ZUZpZWxkOiBzdHJpbmc7XHJcbiAgICAgIGRpc3BsYXlGaWVsZDogc3RyaW5nO1xyXG4gICAgICBkYXRhOiBhbnlbXTtcclxuICAgIH0+W10gPSBbXTtcclxuICAgIGZvciAoY29uc3QgY29sdW1uIG9mIGNvbHVtbnMpIHtcclxuICAgICAgaWYgKGNvbHVtbi50eXBlID09PSAndmFsdWVzJyAmJiAhdGhpcy5jYWNoZVZhbHVlc1tjb2x1bW4uZmllbGRdKSB7XHJcbiAgICAgICAgaWYgKHR5cGVvZiBjb2x1bW4ub3B0aW9uLml0ZW1zID09PSAnZnVuY3Rpb24nKSB7XHJcbiAgICAgICAgICBwcm9taXNlcy5wdXNoKFxyXG4gICAgICAgICAgICBjb2x1bW4ub3B0aW9uXHJcbiAgICAgICAgICAgICAgLml0ZW1zKClcclxuICAgICAgICAgICAgICAudGhlbihkYXRhID0+ICh7XHJcbiAgICAgICAgICAgICAgICBrZXk6IGNvbHVtbi5maWVsZCxcclxuICAgICAgICAgICAgICAgIHZhbHVlRmllbGQ6IGNvbHVtbi5vcHRpb24udmFsdWVGaWVsZCxcclxuICAgICAgICAgICAgICAgIGRpc3BsYXlGaWVsZDogY29sdW1uLm9wdGlvbi5kaXNwbGF5RmllbGQsXHJcbiAgICAgICAgICAgICAgICBkYXRhOiBBcnJheS5pc0FycmF5KGRhdGEpID8gZGF0YSA6IFtdLFxyXG4gICAgICAgICAgICAgIH0pKVxyXG4gICAgICAgICAgICAgIC5jYXRjaChlcnIgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihlcnIpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgICAga2V5OiBjb2x1bW4uZmllbGQsXHJcbiAgICAgICAgICAgICAgICAgIHZhbHVlRmllbGQ6IGNvbHVtbi5vcHRpb24udmFsdWVGaWVsZCxcclxuICAgICAgICAgICAgICAgICAgZGlzcGxheUZpZWxkOiBjb2x1bW4ub3B0aW9uLmRpc3BsYXlGaWVsZCxcclxuICAgICAgICAgICAgICAgICAgZGF0YTogW10sXHJcbiAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLmNhY2hlVmFsdWVzW2NvbHVtbi5maWVsZF0gPSBjb2x1bW4ub3B0aW9uLml0ZW1zLm1hcChlID0+ICh7XHJcbiAgICAgICAgICAgIFtjb2x1bW4ub3B0aW9uLnZhbHVlRmllbGRdOiBlPy5bY29sdW1uLm9wdGlvbi52YWx1ZUZpZWxkXSxcclxuICAgICAgICAgICAgW2NvbHVtbi5vcHRpb24uZGlzcGxheUZpZWxkXTogZT8uW2NvbHVtbi5vcHRpb24uZGlzcGxheUZpZWxkXSxcclxuICAgICAgICAgIH0pKTtcclxuICAgICAgICAgIHRoaXMuI2NhY2hlT2JqVmFsdWVzW2NvbHVtbi5maWVsZF0gPSBBcnJheS50b09iamVjdCh0aGlzLmNhY2hlVmFsdWVzW2NvbHVtbi5maWVsZF0sIGNvbHVtbi5vcHRpb24udmFsdWVGaWVsZCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAocHJvbWlzZXMubGVuZ3RoKSB7XHJcbiAgICAgIGNvbnN0IHJlc3VsdHMgPSBhd2FpdCBQcm9taXNlLmFsbChwcm9taXNlcyk7XHJcbiAgICAgIGZvciAoY29uc3QgcmVzdWx0IG9mIHJlc3VsdHMpIHtcclxuICAgICAgICB0aGlzLmNhY2hlVmFsdWVzW3Jlc3VsdC5rZXldID0gcmVzdWx0LmRhdGEubWFwKGUgPT4gKHtcclxuICAgICAgICAgIFtyZXN1bHQudmFsdWVGaWVsZF06IGU/LltyZXN1bHQudmFsdWVGaWVsZF0sXHJcbiAgICAgICAgICBbcmVzdWx0LmRpc3BsYXlGaWVsZF06IGU/LltyZXN1bHQuZGlzcGxheUZpZWxkXSxcclxuICAgICAgICB9KSk7XHJcbiAgICAgICAgdGhpcy4jY2FjaGVPYmpWYWx1ZXNbcmVzdWx0LmtleV0gPSBBcnJheS50b09iamVjdCh0aGlzLmNhY2hlVmFsdWVzW3Jlc3VsdC5rZXldLCByZXN1bHQudmFsdWVGaWVsZCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9O1xyXG5cclxuICAjZm9ybWF0ID0gYXN5bmMgPFQgPSBhbnk+KHJhd0l0ZW1zOiBUW10sIGNvbHVtbnM6IFNkVGFibGVDb2x1bW5bXSkgPT4ge1xyXG4gICAgY29uc3QgaXRlbXMgPSByYXdJdGVtcy5tYXAoTWFwVG9TZFRhYmxlSXRlbSk7XHJcbiAgICBmb3IgKGNvbnN0IGNvbHVtbiBvZiBjb2x1bW5zKSB7XHJcbiAgICAgIC8vIENsaWNrYWJsZVxyXG4gICAgICBjb25zdCB7IGZpZWxkLCBjZWxsU3R5bGUsIGNsaWNrLCB0b29sdGlwLCBodG1sVGVtcGxhdGUsIHRyYW5zZm9ybSB9ID0gY29sdW1uO1xyXG4gICAgICBpZiAoIXRyYW5zZm9ybSAmJiAhaHRtbFRlbXBsYXRlICYmIGNvbHVtbi50eXBlID09PSAnbGF6eS12YWx1ZXMnICYmIHR5cGVvZiBjb2x1bW4ub3B0aW9uLnZpZXdzID09PSAnZnVuY3Rpb24nKSB7XHJcbiAgICAgICAgY29uc3Qge1xyXG4gICAgICAgICAgb3B0aW9uOiB7IHZpZXdzLCBtYXBWYWx1ZSB9LFxyXG4gICAgICAgIH0gPSBjb2x1bW47XHJcbiAgICAgICAgdGhpcy4jY2FjaGVPYmpWYWx1ZXNbZmllbGRdID0gdGhpcy4jY2FjaGVPYmpWYWx1ZXNbZmllbGRdIHx8IHt9O1xyXG4gICAgICAgIGNvbnN0IHZhbHVlcyA9IGl0ZW1zXHJcbiAgICAgICAgICAubWFwKGl0ZW0gPT4ge1xyXG4gICAgICAgICAgICBpZiAodHlwZW9mIG1hcFZhbHVlID09PSAnZnVuY3Rpb24nKSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIG1hcFZhbHVlKGl0ZW0uZGF0YT8uW2ZpZWxkXSwgaXRlbS5kYXRhKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gaXRlbS5kYXRhPy5bZmllbGRdO1xyXG4gICAgICAgICAgfSlcclxuICAgICAgICAgIC5maWx0ZXIodmFsID0+ICEhdmFsPy50b1N0cmluZygpKVxyXG4gICAgICAgICAgLnJlZHVjZTxzdHJpbmdbXT4oKGN1cnJlbnQsIG5leHQpID0+IFsuLi5jdXJyZW50LCAuLi4oQXJyYXkuaXNBcnJheShuZXh0KSA/IG5leHQgOiBbbmV4dF0pXSwgW10pXHJcbiAgICAgICAgICAuZmlsdGVyKHZhbCA9PiAhT2JqZWN0LmtleXModGhpcy4jY2FjaGVPYmpWYWx1ZXNbZmllbGRdKS5pbmNsdWRlcyh2YWwpKVxyXG4gICAgICAgICAgLnVuaW9uKCk7XHJcblxyXG4gICAgICAgIGlmICh2YWx1ZXMubGVuZ3RoKSB7XHJcbiAgICAgICAgICBjb25zdCBsYXp5SXRlbXM6IGFueVtdID0gKFxyXG4gICAgICAgICAgICBhd2FpdCB2aWV3cyh2YWx1ZXMpLmNhdGNoKGVyciA9PiB7XHJcbiAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihlcnIpO1xyXG4gICAgICAgICAgICAgIHJldHVybiBbXTtcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgIClcclxuICAgICAgICAgICAgLmZpbHRlcihpdGVtID0+IHZhbHVlcy5pbmNsdWRlcyhpdGVtPy5bY29sdW1uLm9wdGlvbi52YWx1ZUZpZWxkXSkpXHJcbiAgICAgICAgICAgIC5tYXAoZSA9PiAoe1xyXG4gICAgICAgICAgICAgIFtjb2x1bW4ub3B0aW9uLnZhbHVlRmllbGRdOiBlPy5bY29sdW1uLm9wdGlvbi52YWx1ZUZpZWxkXSxcclxuICAgICAgICAgICAgICBbY29sdW1uLm9wdGlvbi5kaXNwbGF5RmllbGRdOiBlPy5bY29sdW1uLm9wdGlvbi5kaXNwbGF5RmllbGRdLFxyXG4gICAgICAgICAgICB9KSk7XHJcbiAgICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMuI2NhY2hlT2JqVmFsdWVzW2ZpZWxkXSwgQXJyYXkudG9PYmplY3QobGF6eUl0ZW1zLCBjb2x1bW4ub3B0aW9uLnZhbHVlRmllbGQpIHx8IHt9KTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgZm9yIChjb25zdCBpdGVtIG9mIGl0ZW1zKSB7XHJcbiAgICAgICAgY29uc3Qgcm93RGF0YSA9IGl0ZW0uZGF0YTtcclxuICAgICAgICBjb25zdCB2YWx1ZSA9IHJvd0RhdGE/LltmaWVsZF07XHJcbiAgICAgICAgaXRlbS5tZXRhLmRpc3BsYXlbZmllbGRdID0ge1xyXG4gICAgICAgICAgYmFkZ2U6IHVuZGVmaW5lZCxcclxuICAgICAgICAgIGNlbGxTdHlsZTogY29sdW1uLnR5cGUgPT09ICdudW1iZXInID8geyAndGV4dC1hbGlnbic6ICdyaWdodCFpbXBvcnRhbnQnIH0gOiB1bmRlZmluZWQsXHJcbiAgICAgICAgICBkYXRhOiB2YWx1ZSxcclxuICAgICAgICAgIGlzSHRtbDogZmFsc2UsXHJcbiAgICAgICAgICB0b29sdGlwOiB0eXBlb2YgdG9vbHRpcCA9PT0gJ2Z1bmN0aW9uJyA/IHRvb2x0aXAodmFsdWUsIHJvd0RhdGEpIDogdW5kZWZpbmVkLFxyXG4gICAgICAgICAgY2xpY2s6IHR5cGVvZiBjbGljayA9PT0gJ2Z1bmN0aW9uJyA/ICgpID0+IGNsaWNrKHZhbHVlLCByb3dEYXRhKSA6IHVuZGVmaW5lZCxcclxuICAgICAgICB9O1xyXG4gICAgICAgIGNvbnN0IGRpc3BsYXkgPSBpdGVtLm1ldGEuZGlzcGxheVtmaWVsZF07XHJcbiAgICAgICAgLy8gRGlzcGxheVxyXG4gICAgICAgIGlmICh0eXBlb2YgaHRtbFRlbXBsYXRlID09PSAnZnVuY3Rpb24nKSB7XHJcbiAgICAgICAgICBkaXNwbGF5LmlzSHRtbCA9IHRydWU7XHJcbiAgICAgICAgICBkaXNwbGF5LmRhdGEgPSBodG1sVGVtcGxhdGUodmFsdWUsIHJvd0RhdGEpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHRyYW5zZm9ybSA9PT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICAgICAgY29uc3QgbmV3VmFsdWUgPSB0cmFuc2Zvcm0odmFsdWUsIHJvd0RhdGEpO1xyXG4gICAgICAgICAgaWYgKG5ld1ZhbHVlIGluc3RhbmNlb2YgUHJvbWlzZSkge1xyXG4gICAgICAgICAgICBkaXNwbGF5LmRhdGEgPSBhd2FpdCBuZXdWYWx1ZTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGRpc3BsYXkuZGF0YSA9IG5ld1ZhbHVlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBpZiAoY29sdW1uLnR5cGUgPT09ICdkYXRlJyB8fCBjb2x1bW4udHlwZSA9PT0gJ2RhdGV0aW1lJyB8fCBjb2x1bW4udHlwZSA9PT0gJ3RpbWUnKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGRhdGUgPSBEYXRlLnRvRm9ybWF0KHZhbHVlLCAnZGQvTU0veXl5eScpO1xyXG4gICAgICAgICAgICBsZXQgdGltZSA9IERhdGUudG9Gb3JtYXQodmFsdWUsICdISDptbTpzcycpO1xyXG4gICAgICAgICAgICBpZiAodGltZT8uZW5kc1dpdGgoJzAwJykpIHtcclxuICAgICAgICAgICAgICB0aW1lID0gRGF0ZS50b0Zvcm1hdCh2YWx1ZSwgJ0hIOm1tJyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKGNvbHVtbi50eXBlID09PSAnZGF0ZScgfHwgY29sdW1uLnR5cGUgPT09ICdkYXRldGltZScpIHtcclxuICAgICAgICAgICAgICBpZiAoY29sdW1uLnR5cGUgPT09ICdkYXRldGltZScpIHtcclxuICAgICAgICAgICAgICAgIGRpc3BsYXkuaXNIdG1sID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIGRpc3BsYXkuZGF0YSA9IGA8c3BhbiBjbGFzcz1cImQtYmxvY2sgVDE0UiB0ZXh0LWJsYWNrNDAwXCI+JHt0aW1lfTwvc3Bhbj48c3BhbiBjbGFzcz1cImQtYmxvY2sgVDE0UlwiPiR7ZGF0ZX08L3NwYW4+YDtcclxuICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgZGlzcGxheS5kYXRhID0gZGF0ZTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKGNvbHVtbi50eXBlID09PSAndGltZScpIHtcclxuICAgICAgICAgICAgICBkaXNwbGF5LmRhdGEgPSB0aW1lO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAoY29sdW1uLnR5cGUgPT09ICd2YWx1ZXMnIHx8IGNvbHVtbi50eXBlID09PSAnbGF6eS12YWx1ZXMnKSB7XHJcbiAgICAgICAgICAgIGlmIChjb2x1bW4udHlwZSA9PT0gJ2xhenktdmFsdWVzJyAmJiB0eXBlb2YgY29sdW1uLm9wdGlvbi5tYXBWYWx1ZSA9PT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICAgICAgICAgIGNvbnN0IHZhbCA9IGNvbHVtbi5vcHRpb24ubWFwVmFsdWUodmFsdWUsIHJvd0RhdGEpO1xyXG4gICAgICAgICAgICAgIGNvbnN0IHZhbHMgPSAoQXJyYXkuaXNBcnJheSh2YWwpID8gdmFsIDogW3ZhbF0pLmZpbHRlcihlID0+ICEhZT8udG9TdHJpbmcoKSk7XHJcbiAgICAgICAgICAgICAgZGlzcGxheS5kYXRhID0gdmFscy5tYXAodmFsID0+IHRoaXMuI2NhY2hlT2JqVmFsdWVzW2ZpZWxkXT8uW3ZhbF0/Lltjb2x1bW4ub3B0aW9uLmRpc3BsYXlGaWVsZF0gfHwgdmFsKT8uam9pbignLCAnKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICBjb25zdCB2YWxzID0gKEFycmF5LmlzQXJyYXkodmFsdWUpID8gdmFsdWUgOiBbdmFsdWVdKS5maWx0ZXIoZSA9PiAhIWU/LnRvU3RyaW5nKCkpO1xyXG4gICAgICAgICAgICAgIGRpc3BsYXkuZGF0YSA9IHZhbHMubWFwKHZhbCA9PiB0aGlzLiNjYWNoZU9ialZhbHVlc1tmaWVsZF0/Llt2YWxdPy5bY29sdW1uLm9wdGlvbi5kaXNwbGF5RmllbGRdIHx8IHZhbCk/LmpvaW4oJywgJyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmIChjb2x1bW4udHlwZSA9PT0gJ251bWJlcicgJiYgTnVtYmVyLmlzTnVtYmVyKHZhbHVlKSkge1xyXG4gICAgICAgICAgICBkaXNwbGF5LmRhdGEgPSBOdW1iZXIudG9WTkN1cnJlbmN5KHZhbHVlKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmIChjb2x1bW4udHlwZSA9PT0gJ2Jvb2wnKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHsgb3B0aW9uIH0gPSBjb2x1bW47XHJcbiAgICAgICAgICAgIGlmICh2YWx1ZSAhPT0gdW5kZWZpbmVkICYmIHZhbHVlICE9PSBudWxsICYmIHZhbHVlICE9PSAnJykge1xyXG4gICAgICAgICAgICAgIGRpc3BsYXkuZGF0YSA9IHZhbHVlID09PSB0cnVlID8gb3B0aW9uPy5kaXNwbGF5T25UcnVlIHx8ICdUcnVlJyA6IG9wdGlvbj8uZGlzcGxheU9uRmFsc2UgfHwgJ0ZhbHNlJztcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICBkaXNwbGF5LmRhdGEgPSBudWxsO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICAvLyBCYWRnZVxyXG4gICAgICAgICAgaWYgKChjb2x1bW4udHlwZSA9PT0gJ3N0cmluZycgfHwgY29sdW1uLnR5cGUgPT09ICdudW1iZXInIHx8IGNvbHVtbi50eXBlID09PSAndmFsdWVzJykgJiYgY29sdW1uLmJhZGdlKSB7XHJcbiAgICAgICAgICAgIGRpc3BsYXkuYmFkZ2UgPSB7XHJcbiAgICAgICAgICAgICAgdHlwZTogIWNvbHVtbj8uYmFkZ2VUeXBlID8gJ2ljb24nIDogY29sdW1uLmJhZGdlVHlwZSxcclxuICAgICAgICAgICAgICBjb2xvcjogY29sdW1uLmJhZGdlKHZhbHVlLCByb3dEYXRhKSxcclxuICAgICAgICAgICAgICBpY29uOiBjb2x1bW4uYmFkZ2VJY29uPy4odmFsdWUsIHJvd0RhdGEpLFxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgfSBlbHNlIGlmIChjb2x1bW4udHlwZSA9PT0gJ2Jvb2wnKSB7XHJcbiAgICAgICAgICAgIGRpc3BsYXkuYmFkZ2UgPSB7XHJcbiAgICAgICAgICAgICAgdHlwZTogJ2NpcmNsZScsXHJcbiAgICAgICAgICAgICAgY29sb3I6ICEhdmFsdWUgPyAnc3VjY2VzcycgOiAnZGFuZ2VyJyxcclxuICAgICAgICAgICAgICBpY29uOiBudWxsLFxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGl0ZW1zO1xyXG4gIH07XHJcblxyXG4gIG9uT3BlcmF0b3JDaGFuZ2UgPSAoY29sdW1uOiBTZFRhYmxlQ29sdW1uLCBvcGVyYXRvcjogU2RGaWx0ZXJPcGVyYXRvcikgPT4ge1xyXG4gICAgdGhpcy50YWJsZU9wdGlvbj8uZmlsdGVyPy5vcGVyYXRvckNoYW5nZT8uKGNvbHVtbiwgb3BlcmF0b3IpO1xyXG4gIH07XHJcblxyXG4gIHRyYWNrQnkgPSAoaW5kZXg6IG51bWJlciwgaXRlbTogU2RUYWJsZUl0ZW0pID0+IHtcclxuICAgIHJldHVybiBpdGVtLm1ldGEuaWQ7XHJcbiAgfTtcclxufVxyXG4iXX0=
|
|
1099
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IkM6L1VzZXJzL25naGlhdHQxNV9vbmVtb3VudC9Eb2N1bWVudHMvbGliLWNvcmUtdWkvcHJvamVjdHMvc2QtY29yZS90YWJsZS8iLCJzb3VyY2VzIjpbInNyYy9saWIvdGFibGUuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxLQUFLLEVBQ0wsU0FBUyxFQUVULFFBQVEsRUFDUixNQUFNLEVBQ04saUJBQWlCLEVBQ2pCLGVBQWUsRUFDZixTQUFTLEVBR1QsWUFBWSxFQUNaLHVCQUF1QixHQUN4QixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDM0QsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ2pELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2pGLE9BQU8sS0FBSyxJQUFJLE1BQU0sTUFBTSxDQUFDO0FBRzdCLE9BQU8sRUFBRSxZQUFZLEVBQUUsb0JBQW9CLEVBQXlCLE1BQU0sb0NBQW9DLENBQUM7QUFDL0csT0FBTyxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMxRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFMUQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDbkYsT0FBTyxFQUFFLFlBQVksRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxr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LFNBQUMsaUJBQWlCOzBCQUczQixTQUFTLFNBQUMsYUFBYTswQkFDdkIsU0FBUyxTQUFDLGFBQWE7cUJBR3ZCLEtBQUs7d0JBdURMLFNBQVMsU0FBQyxZQUFZO21CQW1CdEIsU0FBUyxTQUFDLE9BQU87K0JBa0JqQixZQUFZLFNBQUMsb0NBQW9DO3lCQUlqRCxlQUFlLFNBQUMsdUJBQXVCOzJCQU12QyxlQUFlLFNBQUMsNEJBQTRCOzJCQU81QyxlQUFlLFNBQUMseUJBQXlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgSW5wdXQsXHJcbiAgVmlld0NoaWxkLFxyXG4gIEFmdGVyVmlld0luaXQsXHJcbiAgT3B0aW9uYWwsXHJcbiAgSW5qZWN0LFxyXG4gIENoYW5nZURldGVjdG9yUmVmLFxyXG4gIENvbnRlbnRDaGlsZHJlbixcclxuICBRdWVyeUxpc3QsXHJcbiAgT25Jbml0LFxyXG4gIE9uRGVzdHJveSxcclxuICBDb250ZW50Q2hpbGQsXHJcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE1hdFBhZ2luYXRvciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3BhZ2luYXRvcic7XHJcbmltcG9ydCB7IE1hdFNvcnQgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zb3J0JztcclxuaW1wb3J0IHsgTWF0VGFibGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90YWJsZSc7XHJcbmltcG9ydCB7IGFuaW1hdGUsIHN0YXRlLCBzdHlsZSwgdHJhbnNpdGlvbiwgdHJpZ2dlciB9IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xyXG5pbXBvcnQgKiBhcyB1dWlkIGZyb20gJ3V1aWQnO1xyXG5pbXBvcnQgeyBTZFRhYmxlRmlsdGVyUmVnaXN0ZXIsIFNkVGFibGVGaWx0ZXJSZXF1ZXN0IH0gZnJvbSAnLi9zZXJ2aWNlcy90YWJsZS1maWx0ZXIvdGFibGUtZmlsdGVyLm1vZGVsJztcclxuaW1wb3J0IHsgU2RUYWJsZU9wdGlvbiB9IGZyb20gJy4vbW9kZWxzL3RhYmxlLW9wdGlvbi5tb2RlbCc7XHJcbmltcG9ydCB7IFRBQkxFX0NPTkZJRywgREVGQVVMVF9UQUJMRV9DT05GSUcsIElTZFRhYmxlQ29uZmlndXJhdGlvbiB9IGZyb20gJy4vbW9kZWxzL3RhYmxlLWNvbmZpZ3VyYXRpb24ubW9kZWwnO1xyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24sIGlzT2JzZXJ2YWJsZSwgU3ViamVjdCwgY29tYmluZUxhdGVzdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBTZE5vdGlmeVNlcnZpY2UgfSBmcm9tICdAc2QtYW5ndWxhci9jb3JlL25vdGlmeSc7XHJcbmltcG9ydCB7IFNkRmlsdGVyT3BlcmF0b3IsIFNkVGFibGVDb2x1bW4sIFNkVGFibGVDb2x1bW5MYXp5VmFsdWVzLCBTZFRhYmxlQ29sdW1uVmFsdWVzIH0gZnJvbSAnLi9tb2RlbHMvdGFibGUtY29sdW1uLm1vZGVsJztcclxuaW1wb3J0IHsgU2RUYWJlbENlbGxEZWZEaXJlY3RpdmUgfSBmcm9tICcuL2RpcmVjdGl2ZXMvc2QtdGFibGUtY2VsbC1kZWYuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBtYXAsIHN0YXJ0V2l0aCwgc3dpdGNoTWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBTZFRhYmxlRmlsdGVyIH0gZnJvbSAnLi9jb21wb25lbnRzL3RhYmxlLWZpbHRlci90YWJsZS1maWx0ZXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgU2RUYWJsZUZpbHRlckRlZkRpcmVjdGl2ZSB9IGZyb20gJy4vZGlyZWN0aXZlcy9zZC10YWJsZS1maWx0ZXItZGVmLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IFNkTWF0ZXJpYWxTdWJJbmZvcm1hdGlvbkRlZkRpcmVjdGl2ZSB9IGZyb20gJy4vZGlyZWN0aXZlcy9zZC10YWJsZS1leHBhbmQtZGVmLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IFNkTWF0ZXJpYWxGb290ZXJEZWZEaXJlY3RpdmUgfSBmcm9tICcuL2RpcmVjdGl2ZXMvc2QtdGFibGUtZm9vdGVyLWRlZi5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBTZEV4cG9ydENvbHVtbiwgU2RFeHBvcnRGaWxlLCBTZEV4cG9ydFNlcnZpY2UgfSBmcm9tICdAc2QtYW5ndWxhci9jb3JlL2V4cG9ydCc7XHJcbmltcG9ydCB7IFNkVGFibGVDb25maWd1cmF0aW9uUmVzdWx0IH0gZnJvbSAnLi9tb2RlbHMvdGFibGUtb3B0aW9uLWNvbmZpZy5tb2RlbCc7XHJcbmltcG9ydCB7IFNkVGFibGVDb25maWd1cmF0aW9uU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvdGFibGUtY29uZmlndXJhdGlvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU2RUYWJsZU9wdGlvbkV4cG9ydENvbHVtbiB9IGZyb20gJy4vbW9kZWxzL3RhYmxlLW9wdGlvbi1leHBvcnQubW9kZWwnO1xyXG5pbXBvcnQgeyBTZFF1aWNrQWN0aW9uIH0gZnJvbSAnQHNkLWFuZ3VsYXIvY29yZS9xdWljay1hY3Rpb24nO1xyXG5pbXBvcnQgeyBNYXBUb1NkVGFibGVJdGVtLCBTZFRhYmxlSXRlbSB9IGZyb20gJy4vbW9kZWxzL3RhYmxlLWl0ZW0ubW9kZWwnO1xyXG5pbXBvcnQgeyBTZFNjcm9sbERpcmVjdGl2ZSB9IGZyb20gJ0BzZC1hbmd1bGFyL2NvcmUvY29tbW9uJztcclxuaW1wb3J0IHsgU2RUYWJsZUZpbHRlclNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL3RhYmxlLWZpbHRlci90YWJsZS1maWx0ZXIuc2VydmljZSc7XHJcbmltcG9ydCB7IFNkUG9wdXBDb25maWd1cmF0aW9uIH0gZnJvbSAnLi9jb21wb25lbnRzL3BvcHVwLWNvbmZpZ3VyYXRpb24vcG9wdXAtY29uZmlndXJhdGlvbi5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBTZExvYWRpbmdTZXJ2aWNlIH0gZnJvbSAnQHNkLWFuZ3VsYXIvY29yZS9sb2FkaW5nJztcclxuaW1wb3J0IHsgU2RQb3B1cEV4cG9ydCB9IGZyb20gJy4vY29tcG9uZW50cy9wb3B1cC1leHBvcnQvcG9wdXAtZXhwb3J0LmNvbXBvbmVudCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3NkLXRhYmxlJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vdGFibGUuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3RhYmxlLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgYW5pbWF0aW9uczogW1xyXG4gICAgdHJpZ2dlcignZGV0YWlsRXhwYW5kJywgW1xyXG4gICAgICBzdGF0ZSgnY29sbGFwc2VkJywgc3R5bGUoeyBoZWlnaHQ6ICcwJywgbWluSGVpZ2h0OiAnMCcsIHZpc2liaWxpdHk6ICdoaWRkZW4nIH0pKSxcclxuICAgICAgc3RhdGUoJ2V4cGFuZGVkJywgc3R5bGUoeyBoZWlnaHQ6ICcqJywgdmlzaWJpbGl0eTogJ3Zpc2libGUnIH0pKSxcclxuICAgICAgdHJhbnNpdGlvbignZXhwYW5kZWQgPD0+IGNvbGxhcHNlZCcsIGFuaW1hdGUoJzIyNW1zIGN1YmljLWJlemllcigwLjQsIDAuMCwgMC4yLCAxKScpKSxcclxuICAgIF0pLFxyXG4gIF0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTZFRhYmxlPFQgPSBhbnk+IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xyXG4gIEBWaWV3Q2hpbGQoTWF0VGFibGUpIHRhYmxlOiBNYXRUYWJsZTxhbnk+O1xyXG4gIEBWaWV3Q2hpbGQoU2RQb3B1cENvbmZpZ3VyYXRpb24pIHBvcHVwQ29uZmlndXJhdGlvbjogU2RQb3B1cENvbmZpZ3VyYXRpb247XHJcbiAgLy8gRXhwb3J0XHJcbiAgQFZpZXdDaGlsZChTZFBvcHVwRXhwb3J0KSBzZFBvcHVwRXhwb3J0OiBTZFBvcHVwRXhwb3J0O1xyXG4gICNncmlkSWQgPSB1dWlkLnY0KCk7XHJcbiAgQFZpZXdDaGlsZChTZFNjcm9sbERpcmVjdGl2ZSkgc2RTY3JvbGw6IFNkU2Nyb2xsRGlyZWN0aXZlO1xyXG4gIGZpbHRlclJlZ2lzdGVyOiBTZFRhYmxlRmlsdGVyUmVnaXN0ZXI7XHJcbiAga2V5ID0gdXVpZC52NCgpO1xyXG4gIEBWaWV3Q2hpbGQoU2RRdWlja0FjdGlvbikgcXVpY2tBY3Rpb246IFNkUXVpY2tBY3Rpb247XHJcbiAgQFZpZXdDaGlsZChTZFRhYmxlRmlsdGVyKSB0YWJsZUZpbHRlcjogU2RUYWJsZUZpbHRlcjtcclxuICB0YWJsZU9wdGlvbjogU2RUYWJsZU9wdGlvbjxUPjtcclxuICBjb25maWd1cmF0aW9uOiBTZFRhYmxlQ29uZmlndXJhdGlvblJlc3VsdDtcclxuICBASW5wdXQoKSBzZXQgb3B0aW9uKG9wdGlvbjogU2RUYWJsZU9wdGlvbikge1xyXG4gICAgaWYgKG9wdGlvbikge1xyXG4gICAgICBvcHRpb24gPSB0aGlzLiNpbml0Q29uZmlndXJhdGlvbihvcHRpb24pO1xyXG4gICAgICB0aGlzLnRhYmxlT3B0aW9uID0gb3B0aW9uO1xyXG4gICAgICB0aGlzLiNsb2FkQ29tcGxldGVkID0gZmFsc2U7XHJcbiAgICAgIGNvbnN0IHNldHRpbmcgPSB0aGlzLnRhYmxlQ29uZmlndXJhdGlvblNlcnZpY2UuaW5pdCh0aGlzLnRhYmxlT3B0aW9uKTtcclxuICAgICAgaWYgKHNldHRpbmcpIHtcclxuICAgICAgICB0aGlzLiNzdWJzY3JpcHRpb24uYWRkKFxyXG4gICAgICAgICAgc2V0dGluZy5vYnNlcnZlci5waXBlKHN0YXJ0V2l0aChzZXR0aW5nLnN1YmplY3QuZ2V0VmFsdWUoKSkpLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGNvbmZpZ3VyYXRpb25SZXN1bHQgPSB0aGlzLnRhYmxlQ29uZmlndXJhdGlvblNlcnZpY2UubG9hZENvbmZpZ3VyYXRpb25SZXN1bHQodGhpcy50YWJsZU9wdGlvbiwgc2V0dGluZy5nZXQoKSk7XHJcbiAgICAgICAgICAgIGNvbnN0IGRpc3BsYXlDb2x1bW5zID0gY29uZmlndXJhdGlvblJlc3VsdC5kaXNwbGF5ZWRDb2x1bW5zIHx8IFtdO1xyXG4gICAgICAgICAgICB0aGlzLmxvYWRpbmdTZXJ2aWNlLnN0YXJ0KCk7XHJcbiAgICAgICAgICAgIHRoaXMucmVmLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgdGhpcy4jbG9hZFZhbHVlcyh0aGlzLnRhYmxlT3B0aW9uLmNvbHVtbnMuZmlsdGVyKGNvbHVtbiA9PiBkaXNwbGF5Q29sdW1ucy5pbmNsdWRlcyhjb2x1bW4uZmllbGQpKSlcclxuICAgICAgICAgICAgICAudGhlbigoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbmZpZ3VyYXRpb24gPSBjb25maWd1cmF0aW9uUmVzdWx0O1xyXG4gICAgICAgICAgICAgICAgdGhpcy4jb3B0aW9uQ2hhbmdlcy5uZXh0KHRoaXMudGFibGVPcHRpb24pO1xyXG4gICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgLmZpbmFsbHkoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5sb2FkaW5nU2VydmljZS5zdG9wKCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgY29uc3QgY29uZmlndXJhdGlvbiA9IHRoaXMudGFibGVDb25maWd1cmF0aW9uU2VydmljZS5sb2FkQ29uZmlndXJhdGlvbih0aGlzLnRhYmxlT3B0aW9uKTtcclxuICAgICAgICBjb25zdCBjb25maWd1cmF0aW9uUmVzdWx0ID0gdGhpcy50YWJsZUNvbmZpZ3VyYXRpb25TZXJ2aWNlLmxvYWRDb25maWd1cmF0aW9uUmVzdWx0KHRoaXMudGFibGVPcHRpb24sIGNvbmZpZ3VyYXRpb24pO1xyXG4gICAgICAgIGNvbnN0IGRpc3BsYXlDb2x1bW5zID0gY29uZmlndXJhdGlvblJlc3VsdC5kaXNwbGF5ZWRDb2x1bW5zIHx8IFtdO1xyXG4gICAgICAgIHRoaXMubG9hZGluZ1NlcnZpY2Uuc3RhcnQoKTtcclxuICAgICAgICB0aGlzLnJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgdGhpcy4jbG9hZFZhbHVlcyh0aGlzLnRhYmxlT3B0aW9uLmNvbHVtbnMuZmlsdGVyKGNvbHVtbiA9PiBkaXNwbGF5Q29sdW1ucy5pbmNsdWRlcyhjb2x1bW4uZmllbGQpKSlcclxuICAgICAgICAgIC50aGVuKCgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5jb25maWd1cmF0aW9uID0gY29uZmlndXJhdGlvblJlc3VsdDtcclxuICAgICAgICAgICAgdGhpcy4jb3B0aW9uQ2hhbmdlcy5uZXh0KHRoaXMudGFibGVPcHRpb24pO1xyXG4gICAgICAgICAgfSlcclxuICAgICAgICAgIC5maW5hbGx5KCgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5sb2FkaW5nU2VydmljZS5zdG9wKCk7XHJcbiAgICAgICAgICAgIHRoaXMucmVmLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG4gICNvcHRpb25DaGFuZ2VzID0gbmV3IFN1YmplY3Q8U2RUYWJsZU9wdGlvbj4oKTtcclxuXHJcbiAgI2xvY2FsSXRlbXM6IFNkVGFibGVJdGVtPFQ+W10gPSBbXTtcclxuICBpdGVtczogU2RUYWJsZUl0ZW08VD5bXSA9IFtdO1xyXG4gIHNlbGVjdGVkVGFibGVJdGVtczogU2RUYWJsZUl0ZW08VD5bXSA9IFtdO1xyXG4gIHRvdGFsOiBudW1iZXI7XHJcblxyXG4gIC8vIExvYWRpbmdcclxuICBpc0xvYWRpbmcgPSBmYWxzZTtcclxuXHJcbiAgLy8gUGFnaW5hdGVcclxuICBpc0hpZGRlblBhZ2luYXRvciA9IGZhbHNlO1xyXG4gICNwYWdpbmF0b3I6IE1hdFBhZ2luYXRvcjtcclxuICBAVmlld0NoaWxkKE1hdFBhZ2luYXRvcikgc2V0IHBhZ2luYXRvcihwYWdpbmF0b3I6IE1hdFBhZ2luYXRvcikge1xyXG4gICAgaWYgKHBhZ2luYXRvciAmJiB0aGlzLiNwYWdpbmF0b3IgIT09IHBhZ2luYXRvcikge1xyXG4gICAgICB0aGlzLiNwYWdpbmF0b3IgPSBwYWdpbmF0b3I7XHJcbiAgICAgIHRoaXMuI3N1YnNjcmlwdGlvbi5hZGQoXHJcbiAgICAgICAgcGFnaW5hdG9yLnBhZ2VcclxuICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICBtYXAoKCkgPT4ge1xyXG4gICAgICAgICAgICAgIHRoaXMuI3JlbG9hZC5uZXh0KHtcclxuICAgICAgICAgICAgICAgIGZvcmNlOiBmYWxzZSxcclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgIClcclxuICAgICAgICAgIC5zdWJzY3JpYmUoKVxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gU29ydGluZ1xyXG4gICNzb3J0OiBNYXRTb3J0O1xyXG4gIEBWaWV3Q2hpbGQoTWF0U29ydCkgc2V0IHNvcnQoc29ydDogTWF0U29ydCkge1xyXG4gICAgaWYgKHNvcnQgJiYgdGhpcy4jc29ydCAhPT0gc29ydCkge1xyXG4gICAgICB0aGlzLiNzb3J0ID0gc29ydDtcclxuICAgICAgdGhpcy4jc3Vic2NyaXB0aW9uLmFkZChcclxuICAgICAgICBzb3J0LnNvcnRDaGFuZ2VcclxuICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICBtYXAoKCkgPT4ge1xyXG4gICAgICAgICAgICAgIHRoaXMuI3JlbG9hZC5uZXh0KHtcclxuICAgICAgICAgICAgICAgIGZvcmNlOiBmYWxzZSxcclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgIClcclxuICAgICAgICAgIC5zdWJzY3JpYmUoKVxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gU3ViIEluZm9ybWF0aW9uXHJcbiAgQENvbnRlbnRDaGlsZChTZE1hdGVyaWFsU3ViSW5mb3JtYXRpb25EZWZEaXJlY3RpdmUpXHJcbiAgc2RTdWJJbmZvcm1hdGlvbjogU2RNYXRlcmlhbFN1YkluZm9ybWF0aW9uRGVmRGlyZWN0aXZlO1xyXG5cclxuICAvLyBDZWxsIERlZlxyXG4gIEBDb250ZW50Q2hpbGRyZW4oU2RUYWJlbENlbGxEZWZEaXJlY3RpdmUpIHNkQ2VsbERlZnMgPSBuZXcgUXVlcnlMaXN0PFNkVGFiZWxDZWxsRGVmRGlyZWN0aXZlPigpO1xyXG4gIGNlbGxEZWY6IHtcclxuICAgIFtjb2x1bW46IHN0cmluZ106IFNkVGFiZWxDZWxsRGVmRGlyZWN0aXZlO1xyXG4gIH0gPSB7fTtcclxuXHJcbiAgLy8gRm9vdGVyIERlZlxyXG4gIEBDb250ZW50Q2hpbGRyZW4oU2RNYXRlcmlhbEZvb3RlckRlZkRpcmVjdGl2ZSkgc2RGb290ZXJEZWZzID0gbmV3IFF1ZXJ5TGlzdDxTZE1hdGVyaWFsRm9vdGVyRGVmRGlyZWN0aXZlPigpO1xyXG4gIGZvb3RlckRlZjoge1xyXG4gICAgW2NvbHVtbjogc3RyaW5nXTogU2RNYXRlcmlhbEZvb3RlckRlZkRpcmVjdGl2ZTtcclxuICB9ID0ge307XHJcbiAgaGFzRm9vdGVyID0gZmFsc2U7XHJcblxyXG4gIC8vIEZpbHRlciBEZWZcclxuICBAQ29udGVudENoaWxkcmVuKFNkVGFibGVGaWx0ZXJEZWZEaXJlY3RpdmUpIHNkRmlsdGVyRGVmcyA9IG5ldyBRdWVyeUxpc3Q8U2RUYWJsZUZpbHRlckRlZkRpcmVjdGl2ZT4oKTtcclxuICBmaWx0ZXJEZWZzOiBTZFRhYmxlRmlsdGVyRGVmRGlyZWN0aXZlW10gPSBbXTtcclxuXHJcbiAgLy8gRmlsdGVyXHJcbiAgY29sdW1uT3BlcmF0b3I6IFJlY29yZDxzdHJpbmcsIFNkRmlsdGVyT3BlcmF0b3I+ID0ge307XHJcbiAgY29sdW1uRmlsdGVyOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge307XHJcbiAgLy8gU3ViY3JpcHRpb25cclxuICAjc3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xyXG4gICNyZWxvYWQgPSBuZXcgU3ViamVjdDx7XHJcbiAgICBmb3JjZTogYm9vbGVhbjtcclxuICB9PigpO1xyXG4gIGlzRXhwb3J0aW5nID0gZmFsc2U7XHJcbiAgaXNTZWxlY3RBbGwgPSBmYWxzZTtcclxuICBleHBvcnRUaXRsZSA9ICdFeHBvcnQnO1xyXG4gICNsb2FkQ29tcGxldGVkID0gZmFsc2U7XHJcbiAgY2FjaGVWYWx1ZXM6IFJlY29yZDxzdHJpbmcsIGFueVtdPiA9IHt9O1xyXG4gICNjYWNoZU9ialZhbHVlczogUmVjb3JkPHN0cmluZywgUmVjb3JkPHN0cmluZywgc3RyaW5nPj4gPSB7fTtcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgcmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgIHByaXZhdGUgbG9hZGluZ1NlcnZpY2U6IFNkTG9hZGluZ1NlcnZpY2UsXHJcbiAgICBASW5qZWN0KFRBQkxFX0NPTkZJRylcclxuICAgIEBPcHRpb25hbCgpXHJcbiAgICBwdWJsaWMgdGFibGVDb25maWd1cmF0aW9uOiBJU2RUYWJsZUNvbmZpZ3VyYXRpb24sXHJcbiAgICBwcml2YXRlIHRhYmxlQ29uZmlndXJhdGlvblNlcnZpY2U6IFNkVGFibGVDb25maWd1cmF0aW9uU2VydmljZSxcclxuICAgIHByaXZhdGUgZXhwb3J0U2VydmljZTogU2RFeHBvcnRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBub3RpZnlTZXJ2aWNlOiBTZE5vdGlmeVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGdyaWRGaWx0ZXJTZXJ2aWNlOiBTZFRhYmxlRmlsdGVyU2VydmljZVxyXG4gICkge31cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLiNpbml0Q2VsbERlZigpO1xyXG4gIH1cclxuICBuZ0FmdGVyVmlld0luaXQoKSB7XHJcbiAgICB0aGlzLiNzdWJzY3JpcHRpb24uYWRkKFxyXG4gICAgICB0aGlzLiNyZWxvYWRcclxuICAgICAgICAucGlwZShcclxuICAgICAgICAgIGRlYm91bmNlVGltZSgyMDApLFxyXG4gICAgICAgICAgc3dpdGNoTWFwKGFzeW5jIGRhdGEgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBmaWx0ZXJJbmZvID0gdGhpcy4jZ2V0RmlsdGVyKCk7XHJcbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMuI2xvYWQoZmlsdGVySW5mbywgIXRoaXMuI2xvYWRDb21wbGV0ZWQgfHwgZGF0YS5mb3JjZSk7XHJcbiAgICAgICAgICAgIHRoaXMuI2xvYWRDb21wbGV0ZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgICAgICAgfSlcclxuICAgICAgICApXHJcbiAgICAgICAgLnN1YnNjcmliZSh0aGlzLiNyZW5kZXIpXHJcbiAgICApO1xyXG4gICAgdGhpcy4jc3Vic2NyaXB0aW9uLmFkZCh0aGlzLnNkQ2VsbERlZnMuY2hhbmdlcy5waXBlKHN0YXJ0V2l0aChbXSkpLnN1YnNjcmliZSh0aGlzLiNpbml0Q2VsbERlZikpO1xyXG4gICAgdGhpcy4jc3Vic2NyaXB0aW9uLmFkZCh0aGlzLnNkRm9vdGVyRGVmcy5jaGFuZ2VzLnBpcGUoc3RhcnRXaXRoKFtdKSkuc3Vic2NyaWJlKHRoaXMuI2luaXRGb290ZXJEZWYpKTtcclxuICAgIHRoaXMuI3N1YnNjcmlwdGlvbi5hZGQodGhpcy5zZEZpbHRlckRlZnMuY2hhbmdlcy5waXBlKHN0YXJ0V2l0aChbXSkpLnN1YnNjcmliZSh0aGlzLiNpbml0RmlsdGVyRGVmKSk7XHJcbiAgICB0aGlzLiNzdWJzY3JpcHRpb24uYWRkKFxyXG4gICAgICBjb21iaW5lTGF0ZXN0KFtcclxuICAgICAgICB0aGlzLiNvcHRpb25DaGFuZ2VzLnBpcGUoc3RhcnRXaXRoKHRoaXMudGFibGVPcHRpb24pKSxcclxuICAgICAgICB0aGlzLnNkRmlsdGVyRGVmcy5jaGFuZ2VzLnBpcGUoc3RhcnRXaXRoKHRoaXMuZmlsdGVyRGVmcykpLFxyXG4gICAgICBdKS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuI2xvYWRGaWx0ZXJSZWdpc3RlcigpO1xyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICAgIHRoaXMuI3N1YnNjcmlwdGlvbi5hZGQoXHJcbiAgICAgIHRoaXMuI29wdGlvbkNoYW5nZXMuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICBpZiAodGhpcy5maWx0ZXJSZWdpc3Rlcikge1xyXG4gICAgICAgICAgdGhpcy4jcmVsb2FkLm5leHQoe1xyXG4gICAgICAgICAgICBmb3JjZTogdHJ1ZSxcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgICB0aGlzLnJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpIHtcclxuICAgIHRoaXMuI3N1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG4gIH1cclxuXHJcbiAgI2luaXRDZWxsRGVmID0gKCkgPT4ge1xyXG4gICAgdGhpcy5jZWxsRGVmID0ge307XHJcbiAgICBmb3IgKGNvbnN0IGNlbGxEZWYgb2YgdGhpcy5zZENlbGxEZWZzIHx8IFtdKSB7XHJcbiAgICAgIGlmIChjZWxsRGVmLnNkVGFibGVDZWxsRGVmKSB7XHJcbiAgICAgICAgdGhpcy5jZWxsRGVmW2NlbGxEZWYuc2RUYWJsZUNlbGxEZWZdID0gY2VsbERlZjtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH07XHJcblxyXG4gICNpbml0RmlsdGVyRGVmID0gKCkgPT4ge1xyXG4gICAgdGhpcy5maWx0ZXJEZWZzID0gW107XHJcbiAgICBmb3IgKGNvbnN0IGZpbHRlckRlZiBvZiB0aGlzLnNkRmlsdGVyRGVmcykge1xyXG4gICAgICB0aGlzLmZpbHRlckRlZnMucHVzaChmaWx0ZXJEZWYpO1xyXG4gICAgfVxyXG4gIH07XHJcblxyXG4gICNpbml0Rm9vdGVyRGVmID0gKCkgPT4ge1xyXG4gICAgLy8gTk9URTogQ29udGVudENoaWxkcmVuIG7Dqm4gc3ViY3JpYmUgdHJvbmcgQWZ0ZXJWaWV3SW5pdFxyXG4gICAgdGhpcy5mb290ZXJEZWYgPSB7fTtcclxuICAgIHRoaXMuaGFzRm9vdGVyID0gZmFsc2U7XHJcbiAgICBmb3IgKGNvbnN0IGZvb3RlckRlZiBvZiB0aGlzLnNkRm9vdGVyRGVmcykge1xyXG4gICAgICBpZiAoZm9vdGVyRGVmLnNkVGFibGVGb290ZXJEZWYpIHtcclxuICAgICAgICB0aGlzLmhhc0Zvb3RlciA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5mb290ZXJEZWZbZm9vdGVyRGVmLnNkVGFibGVGb290ZXJEZWZdID0gZm9vdGVyRGVmO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfTtcclxuXHJcbiAgI2ZpbHRlckV4cG9ydEluZm8gPSAocGFnZU51bWJlcjogbnVtYmVyLCBwYWdlU2l6ZTogbnVtYmVyKTogU2RUYWJsZUZpbHRlclJlcXVlc3QgPT4ge1xyXG4gICAgY29uc3QgeyBjb2x1bW5PcGVyYXRvciwgY29sdW1uRmlsdGVyLCBleHRlcm5hbEZpbHRlciwgZmlsdGVyRGVmIH0gPSB0aGlzLmZpbHRlclJlZ2lzdGVyLnZhbHVlLmdldCgpO1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgY29sdW1uT3BlcmF0b3I6IGNvbHVtbk9wZXJhdG9yIHx8IHt9LFxyXG4gICAgICByYXdDb2x1bW5GaWx0ZXI6IGNvbHVtbkZpbHRlciB8fCB7fSxcclxuICAgICAgcmF3RXh0ZXJuYWxGaWx0ZXI6IGV4dGVybmFsRmlsdGVyIHx8IHt9LFxyXG4gICAgICByYXdGaWx0ZXJEZWY6IGZpbHRlckRlZiB8fCB7fSxcclxuICAgICAgb3JkZXJCeTogdGhpcy4jc29ydD8uYWN0aXZlIHx8ICcnLFxyXG4gICAgICBvcmRlckRpcmVjdGlvbjogdGhpcy4jc29ydD8uZGlyZWN0aW9uIHx8ICcnLFxyXG4gICAgICBwYWdlTnVtYmVyLFxyXG4gICAgICBwYWdlU2l6ZSxcclxuICAgICAgaXNFeHBvcnRlZDogdHJ1ZSxcclxuICAgIH07XHJcbiAgfTtcclxuXHJcbiAgI2luaXRDb25maWd1cmF0aW9uID0gKG9wdGlvbjogU2RUYWJsZU9wdGlvbikgPT4ge1xyXG4gICAgLy8gSW5pdCBwYWdpbmF0aW9uXHJcbiAgICBvcHRpb24ucGFnaW5hdGUgPSB7XHJcbiAgICAgIGhpZGRlbjogb3B0aW9uPy5wYWdpbmF0ZT8uaGlkZGVuLFxyXG4gICAgICBwYWdlU2l6ZTogb3B0aW9uPy5wYWdpbmF0ZT8ucGFnZVNpemUgPz8gdGhpcy50YWJsZUNvbmZpZ3VyYXRpb24/LnBhZ2luYXRlPy5wYWdlU2l6ZSA/PyBERUZBVUxUX1RBQkxFX0NPTkZJRy5wYWdpbmF0ZT8ucGFnZVNpemUsXHJcbiAgICAgIHBhZ2VzOiBvcHRpb24/LnBhZ2luYXRlPy5wYWdlcyA/PyB0aGlzLnRhYmxlQ29uZmlndXJhdGlvbj8ucGFnaW5hdGU/LnBhZ2VzID8/IERFRkFVTFRfVEFCTEVfQ09ORklHLnBhZ2luYXRlPy5wYWdlcyxcclxuICAgICAgc2hvd0ZpcnN0TGFzdEJ1dHRvbnM6IG9wdGlvbj8ucGFnaW5hdGU/LnNob3dGaXJzdExhc3RCdXR0b25zID8/IGZhbHNlLFxyXG4gICAgfTtcclxuICAgIGZvciAoY29uc3QgY29sdW1uIG9mIG9wdGlvbi5jb2x1bW5zIHx8IFtdKSB7XHJcbiAgICAgIGlmIChjb2x1bW4uZmlsdGVyPy5vcGVyYXRvcj8uZW5hYmxlKSB7XHJcbiAgICAgICAgaWYgKCFjb2x1bW4uZmlsdGVyPy5vcGVyYXRvcj8ubGlzdD8ubGVuZ3RoKSB7XHJcbiAgICAgICAgICBpZiAoY29sdW1uLnR5cGUgPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgICAgIGNvbHVtbi5maWx0ZXIub3BlcmF0b3IubGlzdCA9IHRoaXMudGFibGVDb25maWd1cmF0aW9uPy5maWx0ZXI/Lm9wZXJhdG9yPy5kZWZhdWx0TGlzdFN0cmluZyB8fCBbXTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmIChjb2x1bW4udHlwZSA9PT0gJ251bWJlcicpIHtcclxuICAgICAgICAgICAgY29sdW1uLmZpbHRlci5vcGVyYXRvci5saXN0ID0gdGhpcy50YWJsZUNvbmZpZ3VyYXRpb24/LmZpbHRlcj8ub3BlcmF0b3I/LmRlZmF1bHRMaXN0TnVtYmVyIHx8IFtdO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKGNvbHVtbi50eXBlID09PSAndmFsdWVzJyB8fCBjb2x1bW4udHlwZSA9PT0gJ2xhenktdmFsdWVzJykge1xyXG4gICAgICAgICAgICBjb2x1bW4uZmlsdGVyLm9wZXJhdG9yLmxpc3QgPSB0aGlzLnRhYmxlQ29uZmlndXJhdGlvbj8uZmlsdGVyPy5vcGVyYXRvcj8uZGVmYXVsdExpc3RWYWx1ZXMgfHwgW107XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAoY29sdW1uLnR5cGUgPT09ICdkYXRlJyB8fCBjb2x1bW4udHlwZSA9PT0gJ2RhdGV0aW1lJykge1xyXG4gICAgICAgICAgICBjb2x1bW4uZmlsdGVyLm9wZXJhdG9yLmxpc3QgPSB0aGlzLnRhYmxlQ29uZmlndXJhdGlvbj8uZmlsdGVyPy5vcGVyYXRvcj8uZGVmYXVsdExpc3REYXRlIHx8IFtdO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5jb2x1bW5PcGVyYXRvcltjb2x1bW4uZmllbGRdID0gdGhpcy50YWJsZUNvbmZpZ3VyYXRpb24/LmZpbHRlcj8ub3BlcmF0b3I/LmRlZmF1bHRPcGVyYXRvcj8uW2NvbHVtbi50eXBlXSB8fCB1bmRlZmluZWQ7XHJcbiAgICAgICAgaWYgKGNvbHVtbi5maWx0ZXIub3BlcmF0b3IuZGVmYXVsdCAmJiBjb2x1bW4uZmlsdGVyLm9wZXJhdG9yLmxpc3Quc29tZShlbCA9PiBlbCA9PT0gY29sdW1uLmZpbHRlci5vcGVyYXRvci5kZWZhdWx0KSkge1xyXG4gICAgICAgICAgdGhpcy5jb2x1bW5PcGVyYXRvcltjb2x1bW4uZmllbGRdID0gY29sdW1uLmZpbHRlci5vcGVyYXRvci5kZWZhdWx0O1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIG9wdGlvbjtcclxuICB9O1xyXG5cclxuICAjbG9hZEZpbHRlclJlZ2lzdGVyID0gKCkgPT4ge1xyXG4gICAgLy8gSW5pdCBmaWx0ZXJcclxuICAgIGlmICh0aGlzLnRhYmxlT3B0aW9uKSB7XHJcbiAgICAgIGlmICghdGhpcy5maWx0ZXJSZWdpc3Rlcikge1xyXG4gICAgICAgIHRoaXMuZmlsdGVyUmVnaXN0ZXIgPSB0aGlzLmdyaWRGaWx0ZXJTZXJ2aWNlLnJlZ2lzdGVyKHRoaXMudGFibGVPcHRpb24/LmZpbHRlciwge1xyXG4gICAgICAgICAgaWQ6IHRoaXMuI2dyaWRJZCxcclxuICAgICAgICAgIGNvbHVtbnM6IHRoaXMudGFibGVPcHRpb24/LmNvbHVtbnMsXHJcbiAgICAgICAgICBleHRlcm5hbEZpbHRlcnM6IHRoaXMudGFibGVPcHRpb24/LmZpbHRlcj8uZXh0ZXJuYWxGaWx0ZXJzLFxyXG4gICAgICAgICAgZmlsdGVyRGVmczogdGhpcy5maWx0ZXJEZWZzLFxyXG4gICAgICAgICAgY29sdW1uT3BlcmF0b3I6IHRoaXMuY29sdW1uT3BlcmF0b3IsXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy4jc3Vic2NyaXB0aW9uLmFkZChcclxuICAgICAgICAgIHRoaXMuZmlsdGVyUmVnaXN0ZXIudmFsdWUub2JzZXJ2ZXJcclxuICAgICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgICAgZGVib3VuY2VUaW1lKDUwMCksXHJcbiAgICAgICAgICAgICAgbWFwKGZpbHRlclZhbHVlID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHsgY29sdW1uT3BlcmF0b3IsIGNvbHVtbkZpbHRlciwgbm90UmVsb2FkIH0gPSBmaWx0ZXJWYWx1ZTtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29sdW1uT3BlcmF0b3IgPSBjb2x1bW5PcGVyYXRvciB8fCB7fTtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29sdW1uRmlsdGVyID0gY29sdW1uRmlsdGVyO1xyXG4gICAgICAgICAgICAgICAgaWYgKCFub3RSZWxvYWQpIHtcclxuICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuI3BhZ2luYXRvcikge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuI3BhZ2luYXRvci5wYWdlSW5kZXggPSAwO1xyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuI3JlbG9hZC5uZXh0KHtcclxuICAgICAgICAgICAgICAgICAgICBmb3JjZTogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgICAgLnN1YnNjcmliZSgpXHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH07XHJcblxyXG4gICNmaWx0ZXJMb2NhbCA9IChsb2NhbEl0ZW1zOiBTZFRhYmxlSXRlbTxUPltdLCBmaWx0ZXJJbmZvOiBTZFRhYmxlRmlsdGVyUmVxdWVzdCkgPT4ge1xyXG4gICAgY29uc3QgeyBjb2x1bW5zIH0gPSB0aGlzLnRhYmxlT3B0aW9uO1xyXG4gICAgY29uc3QgeyByYXdDb2x1bW5GaWx0ZXIsIG9yZGVyQnksIG9yZGVyRGlyZWN0aW9uLCBwYWdlU2l6ZSwgcGFnZU51bWJlciB9ID0gZmlsdGVySW5mbztcclxuICAgIGNvbnN0IGl0ZW1zID0gbG9jYWxJdGVtcy5maWx0ZXIodGFibGVJdGVtID0+IHtcclxuICAgICAgY29uc3QgaXRlbSA9IHRhYmxlSXRlbS5kYXRhO1xyXG4gICAgICBmb3IgKGNvbnN0IGNvbHVtbiBvZiBjb2x1bW5zKSB7XHJcbiAgICAgICAgY29uc3QgeyBmaWVsZCwgdHlwZSB9ID0gY29sdW1uO1xyXG4gICAgICAgIGNvbnN0IGZpbHRlclZhbHVlOiBzdHJpbmcgPSAocmF3Q29sdW1uRmlsdGVyW2ZpZWxkIGFzIHN0cmluZ10gfHwgJycpLnRvU3RyaW5nKCkudHJpbSgpLnRvTG93ZXJDYXNlKCk7XHJcbiAgICAgICAgY29uc3QgY29sdW1uVmFsdWU6IHN0cmluZyA9IChpdGVtW2ZpZWxkXSB8fCAnJykudG9TdHJpbmcoKS50cmltKCkudG9Mb3dlckNhc2UoKTtcclxuICAgICAgICBpZiAoZmlsdGVyVmFsdWUpIHtcclxuICAgICAgICAgIGlmICghY29sdW1uVmFsdWUgJiYgdHlwZSAhPT0gJ2RhdGV0aW1lJyAmJiB0eXBlICE9PSAnZGF0ZScgJiYgdHlwZSAhPT0gJ3RpbWUnKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmICh0eXBlID09PSAnc3RyaW5nJykge1xyXG4gICAgICAgICAgICBpZiAoY29sdW1uVmFsdWUuaW5kZXhPZihmaWx0ZXJWYWx1ZSkgPT09IC0xKSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICd2YWx1ZXMnIHx8IHR5cGUgPT09ICdsYXp5LXZhbHVlcycpIHtcclxuICAgICAgICAgICAgY29uc3QgY29sdW1uVHlwZSA9IGNvbHVtbiBhcyBTZFRhYmxlQ29sdW1uVmFsdWVzPFQ+IHwgU2RUYWJsZUNvbHVtbkxhenlWYWx1ZXM8VD47XHJcbiAgICAgICAgICAgIGNvbnN0IGlzTXVsdGlwbGUgPSBbJ01VTFRJUExFJ10uaW5jbHVkZXMoY29sdW1uVHlwZS5vcHRpb24uc2VsZWN0aW9uKTtcclxuICAgICAgICAgICAgaWYgKGlzTXVsdGlwbGUpIHtcclxuICAgICAgICAgICAgICBjb25zdCBjb2x1bW5WYWx1ZXM6IHN0cmluZ1tdID1cclxuICAgICAgICAgICAgICAgIChpdGVtW2ZpZWxkXSBhcyBhbnkpLm1hcChpID0+IChpW2NvbHVtblR5cGUub3B0aW9uLnZhbHVlRmllbGRdID8/ICcnKS50b1N0cmluZygpLnRyaW0oKS50b0xvd2VyQ2FzZSgpKSA/PyBbXTtcclxuICAgICAgICAgICAgICBjb25zdCBmaWx0ZXJWYWx1ZXM6IHN0cmluZ1tdID0gcmF3Q29sdW1uRmlsdGVyW2ZpZWxkIGFzIHN0cmluZ10/Lm1hcCh2ID0+ICh2ID8/ICcnKS50b1N0cmluZygpLnRyaW0oKS50b0xvd2VyQ2FzZSgpKTtcclxuICAgICAgICAgICAgICBpZiAoZmlsdGVyVmFsdWVzPy5sZW5ndGggJiYgZmlsdGVyVmFsdWVzLmV2ZXJ5KGZ2ID0+ICFjb2x1bW5WYWx1ZXMuaW5jbHVkZXMoZnYpKSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICBpZiAoY29sdW1uVmFsdWUgIT09IGZpbHRlclZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdudW1iZXInKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGZWYWx1ZSA9ICtmaWx0ZXJWYWx1ZS5yZXBsYWNlKCc+PScsICcnKS5yZXBsYWNlKCc8PScsICcnKS5yZXBsYWNlKCc+JywgJycpLnJlcGxhY2UoJzwnLCAnJyk7XHJcbiAgICAgICAgICAgIGNvbnN0IGNWYWx1ZSA9ICtjb2x1bW5WYWx1ZTtcclxuICAgICAgICAgICAgaWYgKGZWYWx1ZSB8fCBmVmFsdWUgPT09IDApIHtcclxuICAgICAgICAgICAgICBpZiAoIWNWYWx1ZSAmJiBjVmFsdWUgIT09IDApIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgaWYgKGZpbHRlclZhbHVlLmluZGV4T2YoJz49JykgPiAtMSAmJiBjVmFsdWUgPCBmVmFsdWUpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgICB9IGVsc2UgaWYgKGZpbHRlclZhbHVlLmluZGV4T2YoJzw9JykgPiAtMSAmJiBjVmFsdWUgPiBmVmFsdWUpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgICB9IGVsc2UgaWYgKGZpbHRlclZhbHVlLmluZGV4T2YoJzwnKSA+IC0xICYmIGNWYWx1ZSA+PSBmVmFsdWUpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgICB9IGVsc2UgaWYgKGZpbHRlclZhbHVlLmluZGV4T2YoJz4nKSA+IC0xICYmIGNWYWx1ZSA8PSBmVmFsdWUpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgICB9IGVsc2UgaWYgKGNWYWx1ZSAhPT0gZlZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdib29sJykge1xyXG4gICAgICAgICAgICBpZiAoZmlsdGVyVmFsdWUgPT09ICcxJyAmJiBjb2x1bW5WYWx1ZSAhPT0gJzEnICYmIGNvbHVtblZhbHVlICE9PSAndHJ1ZScpIHtcclxuICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoZmlsdGVyVmFsdWUgPT09ICcwJyAmJiBjb2x1bW5WYWx1ZSAhPT0gJzAnICYmIGNvbHVtblZhbHVlICE9PSAnZmFsc2UnKSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdkYXRldGltZScgfHwgdHlwZSA9PT0gJ2RhdGUnIHx8IHR5cGUgPT09ICd0aW1lJykge1xyXG4gICAgICAgICAgICBjb25zdCBmcm9tID0gcmF3Q29sdW1uRmlsdGVyW2ZpZWxkXT8uZnJvbSA/PyByYXdDb2x1bW5GaWx0ZXJbZmllbGRdO1xyXG4gICAgICAgICAgICBjb25zdCB0byA9IHJhd0NvbHVtbkZpbHRlcltmaWVsZF0/LnRvID8/IHJhd0NvbHVtbkZpbHRlcltmaWVsZF07XHJcbiAgICAgICAgICAgIGNvbnN0IGZyb21EYXRlID0gRGF0ZS5iZWdpbihmcm9tKTtcclxuICAgICAgICAgICAgY29uc3QgdG9EYXRlID0gRGF0ZS5lbmQodG8pO1xyXG4gICAgICAgICAgICBpZiAoZnJvbURhdGUgfHwgdG9EYXRlKSB7XHJcbiAgICAgICAgICAgICAgaWYgKCFjb2x1bW5WYWx1ZSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgY29uc3QgY29sdW1uVGltZSA9IG5ldyBEYXRlKGNvbHVtblZhbHVlKS5nZXRUaW1lKCk7XHJcbiAgICAgICAgICAgICAgY29uc3QgZnJvbURhdGVUaW1lID0gZnJvbURhdGU/LmdldFRpbWUoKSB8fCBudWxsO1xyXG4gICAgICAgICAgICAgIGNvbnN0IHRvRGF0ZVRpbWUgPSB0b0RhdGU/LmdldFRpbWUoKSB8fCBudWxsO1xyXG5cclxuICAgICAgICAgICAgICBpZiAoZnJvbURhdGVUaW1lICYmIGZyb21EYXRlVGltZSA+IGNvbHVtblRpbWUpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgaWYgKHRvRGF0ZVRpbWUgJiYgY29sdW1uVGltZSA+IHRvRGF0ZVRpbWUpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9KTtcclxuICAgIC8vIFNvcnRcclxuICAgIGlmIChvcmRlckJ5ICYmIG9yZGVyRGlyZWN0aW9uKSB7XHJcbiAgICAgIGNvbnN0IGNvbHVtbiA9IGNvbHVtbnMuZmluZChlID0+IGUuZmllbGQgPT09IG9yZGVyQnkpO1xyXG4gICAgICBpZiAoY29sdW1uKSB7XHJcbiAgICAgICAgY29uc3QgeyB0eXBlLCBmaWVsZCB9ID0gY29sdW1uO1xyXG4gICAgICAgIGl0ZW1zLnNvcnQoKHRhYmxlSXRlbUN1cnJlbnQsIHRhYmxlSXRlbU5leHQpID0+IHtcclxuICAgICAgICAgIGNvbnN0IGRhdGEgPSB0YWJsZUl0ZW1DdXJyZW50LmRhdGE7XHJcbiAgICAgICAgICBjb25zdCBuZXh0ID0gdGFibGVJdGVtTmV4dC5kYXRhO1xyXG4gICAgICAgICAgaWYgKHR5cGUgPT09ICdudW1iZXInKSB7XHJcbiAgICAgICAgICAgIHJldHVybiAoZGF0YVtmaWVsZCBhcyBzdHJpbmddIHx8IDApIC0gKG5leHRbZmllbGQgYXMgc3RyaW5nXSB8fCAwKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmICh0eXBlID09PSAnZGF0ZScgfHwgdHlwZSA9PT0gJ2RhdGV0aW1lJyB8fCB0eXBlID09PSAndGltZScpIHtcclxuICAgICAgICAgICAgY29uc3QgZDEgPSBuZXcgRGF0ZShkYXRhW2ZpZWxkIGFzIHN0cmluZ10gfHwgJycpLmdldFRpbWUoKTtcclxuICAgICAgICAgICAgY29uc3QgZDIgPSBuZXcgRGF0ZShkYXRhW2ZpZWxkIGFzIHN0cmluZ10gfHwgJycpLmdldFRpbWUoKTtcclxuICAgICAgICAgICAgcmV0dXJuIGQxIC0gZDI7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBjb25zdCBzMSA9IChkYXRhW2ZpZWxkXSB8fCAnJykudG9TdHJpbmcoKTtcclxuICAgICAgICAgIGNvbnN0IHMyID0gKG5leHRbZmllbGRdIHx8ICcnKS50b1N0cmluZygpO1xyXG4gICAgICAgICAgaWYgKHMxID4gczIpIHtcclxuICAgICAgICAgICAgcmV0dXJuIDE7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAoczEgPCBzMikge1xyXG4gICAgICAgICAgICByZXR1cm4gLTE7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICByZXR1cm4gMDtcclxuICAgICAgICB9KTtcclxuICAgICAgICBpZiAob3JkZXJEaXJlY3Rpb24gPT09ICdkZXNjJykge1xyXG4gICAgICAgICAgaXRlbXMucmV2ZXJzZSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgaXRlbXM6IGl0ZW1zLmZpbHRlcigoaXRlbSwgaW5kZXgpID0+IHtcclxuICAgICAgICByZXR1cm4gaW5kZXggPj0gcGFnZU51bWJlciAqIHBhZ2VTaXplICYmIGluZGV4IDwgKHBhZ2VOdW1iZXIgKyAxKSAqIHBhZ2VTaXplO1xyXG4gICAgICB9KSxcclxuICAgICAgdG90YWw6IGl0ZW1zLmxlbmd0aCxcclxuICAgIH07XHJcbiAgfTtcclxuXHJcbiAgI2dldEZpbHRlciA9ICgpOiBTZFRhYmxlRmlsdGVyUmVxdWVzdCA9PiB7XHJcbiAgICBjb25zdCB7IGNvbHVtbk9wZXJhdG9yLCBjb2x1bW5GaWx0ZXIsIGV4dGVybmFsRmlsdGVyLCBmaWx0ZXJEZWYgfSA9IHRoaXMuZmlsdGVyUmVnaXN0ZXIudmFsdWUuZ2V0KCk7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBjb2x1bW5PcGVyYXRvcjogY29sdW1uT3BlcmF0b3IgfHwge30sXHJcbiAgICAgIHJhd0NvbHVtbkZpbHRlcjogY29sdW1uRmlsdGVyIHx8IHt9LFxyXG4gICAgICByYXdFeHRlcm5hbEZpbHRlcjogZXh0ZXJuYWxGaWx0ZXIgfHwge30sXHJcbiAgICAgIHJhd0ZpbHRlckRlZjogZmlsdGVyRGVmIHx8IHt9LFxyXG4gICAgICBvcmRlckJ5OiB0aGlzLiNzb3J0Py5hY3RpdmUgfHwgJycsXHJcbiAgICAgIG9yZGVyRGlyZWN0aW9uOiB0aGlzLiNzb3J0Py5kaXJlY3Rpb24gfHwgJycsXHJcbiAgICAgIHBhZ2VOdW1iZXI6IHRoaXMuI3BhZ2luYXRvcj8ucGFnZUluZGV4IHx8IDAsXHJcbiAgICAgIHBhZ2VTaXplOiB0aGlzLiNwYWdpbmF0b3I/LnBhZ2VTaXplIHx8IHRoaXMudGFibGVPcHRpb24/LnBhZ2luYXRlPy5wYWdlU2l6ZSB8fCA1MCxcclxuICAgIH07XHJcbiAgfTtcclxuXHJcbiAgI2xvYWQgPSBhc3luYyAoZmlsdGVyUmVxOiBTZFRhYmxlRmlsdGVyUmVxdWVzdCwgZm9yY2U6IGJvb2xlYW4gPSB0cnVlKSA9PiB7XHJcbiAgICB0aGlzLmlzTG9hZGluZyA9IHRydWU7XHJcbiAgICB0aGlzLnJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICBpZiAodGhpcy50YWJsZU9wdGlvbi50eXBlID09PSAnc2VydmVyJykge1xyXG4gICAgICBjb25zdCB7IGl0ZW1zIH0gPSB0aGlzLnRhYmxlT3B0aW9uO1xyXG4gICAgICBjb25zdCBkYXRhID0gYXdhaXQgaXRlbXMoZmlsdGVyUmVxKS5jYXRjaChlcnIgPT4ge1xyXG4gICAgICAgIHRoaXMubm90aWZ5U2VydmljZS5ub3RpZnkud2FybmluZygnQ8OzIGzhu5dpIHjhuqN5IHJhJyk7XHJcbiAgICAgICAgY29uc29sZS5lcnJvcihlcnIpO1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICBpdGVtczogW10gYXMgVFtdLFxyXG4gICAgICAgICAgdG90YWw6IDAsXHJcbiAgICAgICAgfTtcclxuICAgICAgfSk7XHJcbiAgICAgIHJldHVybiB7XHJcbiAgICAgICAgaXRlbXM6IGF3YWl0IHRoaXMuI2Zvcm1hdChkYXRhPy5pdGVtcywgdGhpcy50YWJsZU9wdGlvbi5jb2x1bW5zKS5maW5hbGx5KCgpID0+IHtcclxuICAgICAgICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLnJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgfSksXHJcbiAgICAgICAgdG90YWw6IGRhdGE/LnRvdGFsIHx8IDAsXHJcbiAgICAgIH07XHJcbiAgICB9XHJcbiAgICBpZiAoZm9yY2UpIHtcclxuICAgICAgY29uc3QgeyBpdGVtcyB9ID0gdGhpcy50YWJsZU9wdGlvbjtcclxuICAgICAgY29uc3QgcmVzdWx0cyA9IGl0ZW1zKCk7XHJcbiAgICAgIGxldCBkYXRhOiBUW10gPSBbXTtcclxuICAgICAgaWYgKHJlc3VsdHMgaW5zdGFuY2VvZiBQcm9taXNlKSB7XHJcbiAgICAgICAgZGF0YSA9IGF3YWl0IHJlc3VsdHMuY2F0Y2goZXJyID0+IHtcclxuICAgICAgICAgIHRoaXMubm90aWZ5U2VydmljZS5ub3RpZnkud2FybmluZygnQ8OzIGzhu5dpIHjhuqN5IHJhJyk7XHJcbiAgICAgICAgICBjb25zb2xlLmVycm9yKGVycik7XHJcbiAgICAgICAgICByZXR1cm4gW107XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgZGF0YSA9IHJlc3VsdHM7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKCFBcnJheS5pc0FycmF5KGRhdGEpKSB7XHJcbiAgICAgICAgdGhpcy5ub3RpZnlTZXJ2aWNlLm5vdGlmeS53YXJuaW5nKCdE4buvIGxp4buHdSBraMO0bmcgcGjhuqNpIGzDoCBt4buZdCBt4bqjbmcnKTtcclxuICAgICAgICBkYXRhID0gW107XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy4jbG9jYWxJdGVtcyA9IGF3YWl0IHRoaXMuI2Zvcm1hdChkYXRhLCB0aGlzLnRhYmxlT3B0aW9uLmNvbHVtbnMpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcclxuICAgIHRoaXMucmVmLmRldGVjdENoYW5nZXMoKTtcclxuICAgIHJldHVybiB0aGlzLiNmaWx0ZXJMb2NhbCh0aGlzLiNsb2NhbEl0ZW1zLCBmaWx0ZXJSZXEpO1xyXG4gIH07XHJcblxyXG4gICNyZW5kZXIgPSBhc3luYyAoYXJnczogeyBpdGVtczogU2RUYWJsZUl0ZW08VD5bXTsgdG90YWw6IG51bWJlciB9KSA9PiB7XHJcbiAgICB0aGlzLnNkU2Nyb2xsPy5zY3JvbGxUb3AoKTtcclxuICAgIHRoaXMuaXRlbXMgPSBhcmdzPy5pdGVtcyB8fCBbXTtcclxuICAgIHRoaXMudG90YWwgPSBhcmdzPy50b3RhbCB8fCAwO1xyXG4gICAgYXdhaXQgdGhpcy50YWJsZU9wdGlvbj8ucmVsb2FkPy5vblJlbG9hZD8uKHRoaXMuaXRlbXMpO1xyXG4gICAgdGhpcy5pc1NlbGVjdEFsbCA9IHRoaXMuaXRlbXMuZXZlcnkoZSA9PiBlLm1ldGEuc2VsZWN0b3IuaXNTZWxlY3RlZCk7XHJcbiAgICB0aGlzLiN1cGRhdGVTZWxlY3RlZEl0ZW1zKCk7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy50YWJsZT8udXBkYXRlU3RpY2t5Q29sdW1uU3R5bGVzKCk7XHJcbiAgICB9LCAwKTtcclxuICB9O1xyXG5cclxuICByZWxvYWQgPSBhc3luYyAoZm9yY2U6IGJvb2xlYW4gPSB0cnVlKSA9PiB7XHJcbiAgICB0aGlzLnRhYmxlRmlsdGVyPy51cGRhdGVGaWx0ZXI/LigpO1xyXG4gICAgY29uc3QgZGF0YSA9IGF3YWl0IHRoaXMuI2xvYWQodGhpcy4jZ2V0RmlsdGVyKCksIGZvcmNlKTtcclxuICAgIHRoaXMuI3JlbmRlcihkYXRhKTtcclxuICB9O1xyXG5cclxuICAjZXhwb3J0ZWRJdGVtcyA9IGFzeW5jIChwYWdlTnVtYmVyOiBudW1iZXIgPSAwLCBwYWdlU2l6ZTogbnVtYmVyID0gMTAwMDApID0+IHtcclxuICAgIGlmICh0aGlzLnRhYmxlT3B0aW9uLmV4cG9ydD8uaXRlbXMpIHtcclxuICAgICAgLy8gY29uc3QgZXhwb3J0ZWRJdGVtcyA9IHRoaXMuZ3JpZE9wdGlvbi5leHBvcnQ/Lml0ZW1zKHRoaXMuI2ZpbHRlckV4cG9ydEluZm8ocGFnZU51bWJlciwgcGFnZVNpemUpKTtcclxuICAgICAgbGV0IHJlc3VsdCA9IHRoaXMudGFibGVPcHRpb24uZXhwb3J0Py5pdGVtcyh0aGlzLiNmaWx0ZXJFeHBvcnRJbmZvKHBhZ2VOdW1iZXIsIHBhZ2VTaXplKSk7XHJcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KHJlc3VsdCkpIHtcclxuICAgICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChpc09ic2VydmFibGU8YW55W10+KHJlc3VsdCkpIHtcclxuICAgICAgICByZXN1bHQgPSByZXN1bHQudG9Qcm9taXNlKCk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKGlzT2JzZXJ2YWJsZTx7IGl0ZW1zOiBhbnlbXTsgdG90YWw6IG51bWJlciB9PihyZXN1bHQpKSB7XHJcbiAgICAgICAgcmVzdWx0ID0gcmVzdWx0LnRvUHJvbWlzZSgpO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBhd2FpdCByZXN1bHQ7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb25zdCBmaWx0ZXJJbmZvID0gdGhpcy4jZmlsdGVyRXhwb3J0SW5mbyhwYWdlTnVtYmVyLCBwYWdlU2l6ZSk7XHJcbiAgICAgIGlmICh0aGlzLnRhYmxlT3B0aW9uLnR5cGUgPT09ICdzZXJ2ZXInKSB7XHJcbiAgICAgICAgbGV0IHJlc3VsdCA9IHRoaXMudGFibGVPcHRpb24uaXRlbXMoZmlsdGVySW5mbyk7XHJcbiAgICAgICAgcmV0dXJuIGF3YWl0IHJlc3VsdDtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBsZXQgZXhwb3J0ZWRJdGVtczogYW55W10gPSBbXTtcclxuICAgICAgICBpZiAodHlwZW9mIHRoaXMudGFibGVPcHRpb24uaXRlbXMgPT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgICAgIGNvbnN0IHJlc3VsdHMgPSB0aGlzLnRhYmxlT3B0aW9uLml0ZW1zKCk7XHJcbiAgICAgICAgICBpZiAocmVzdWx0cyBpbnN0YW5jZW9mIFByb21pc2UpIHtcclxuICAgICAgICAgICAgZXhwb3J0ZWRJdGVtcyA9IGF3YWl0IHJlc3VsdHM7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBleHBvcnRlZEl0ZW1zID0gcmVzdWx0cztcclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgZXhwb3J0ZWRJdGVtcyA9IHRoaXMudGFibGVPcHRpb24uaXRlbXM7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0aGlzLiNmaWx0ZXJMb2NhbChleHBvcnRlZEl0ZW1zLCBmaWx0ZXJJbmZvKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH07XHJcblxyXG4gICNhbGxDb2x1bW5zID0gKCk6IFNkVGFibGVDb2x1bW5bXSA9PiB7XHJcbiAgICBjb25zdCBjb2x1bW5zOiBTZFRhYmxlQ29sdW1uW10gPSBbXTtcclxuICAgIHRoaXMudGFibGVPcHRpb24uY29sdW1uc1xyXG4gICAgICAuZmlsdGVyKGUgPT4gIWUuZXhwb3J0Py5kaXNhYmxlZClcclxuICAgICAgLmZvckVhY2goY29sdW1uID0+IHtcclxuICAgICAgICBpZiAoY29sdW1uLnR5cGUgPT09ICdjaGlsZHJlbicpIHtcclxuICAgICAgICAgIGNvbHVtbi5jaGlsZHJlblxyXG4gICAgICAgICAgICA/LmZpbHRlcihlID0+ICFlLmV4cG9ydD8uZGlzYWJsZWQpXHJcbiAgICAgICAgICAgIC5mb3JFYWNoKGNoaWxkQ29sdW1uID0+IHtcclxuICAgICAgICAgICAgICBjb2x1bW5zLnB1c2goY2hpbGRDb2x1bW4pO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29sdW1ucy5wdXNoKGNvbHVtbik7XHJcbiAgICAgIH0pO1xyXG4gICAgcmV0dXJuIGNvbHVtbnM7XHJcbiAgfTtcclxuXHJcbiAgI2FsbEV4cG9ydGVkQ29sdW1ucyA9ICgpOiBTZFRhYmxlT3B0aW9uRXhwb3J0Q29sdW1uW10gPT4ge1xyXG4gICAgcmV0dXJuIHRoaXMudGFibGVPcHRpb24uZXhwb3J0Py5jb2x1bW5zPy5maWx0ZXIoZSA9PiAhZS5leHBvcnQ/LmRpc2FibGVkKSB8fCBbXTtcclxuICB9O1xyXG5cclxuICBvbkV4cG9ydCA9IGFzeW5jIChhcmdzPzogeyBmaWxlPzogU2RFeHBvcnRGaWxlOyBjb2x1bW5zPzogU2RFeHBvcnRDb2x1bW5bXTsgaXNDU1Y/OiBib29sZWFuIH0pID0+IHtcclxuICAgIGNvbnN0IHsgZmlsZSwgaXNDU1YgfSA9IHsgLi4uYXJncyB9O1xyXG4gICAgdHJ5IHtcclxuICAgICAgbGV0IGNvbHVtbnMgPSB0aGlzLiNnZXRFeHBvcnRDb2x1bW5zKGFyZ3M/LmNvbHVtbnMpO1xyXG4gICAgICBjb25zdCBwYWdlU2l6ZSA9IHRoaXMudGFibGVPcHRpb24/LmV4cG9ydD8ubWF4SXRlbXNQZXJSZXF1ZXN0IHx8IDEwMDA7XHJcbiAgICAgIGNvbnN0IGJhdGNoID0gdGhpcy50YWJsZU9wdGlvbj8uZXhwb3J0Py5iYXRjaCB8fCAxO1xyXG4gICAgICBsZXQgdG90YWwgPSB0aGlzLnRvdGFsO1xyXG4gICAgICBsZXQgcGFnZU51bWJlciA9IDA7XHJcbiAgICAgIGxldCBleHBvcnRJdGVtcyA9IFtdO1xyXG4gICAgICB0aGlzLmlzRXhwb3J0aW5nID0gdHJ1ZTtcclxuICAgICAgY29uc3QgaXRlbXM6IGFueVtdID0gW107XHJcbiAgICAgIGxldCBwcm9taXNlczogUHJvbWlzZTxcclxuICAgICAgICB8IGFueVtdXHJcbiAgICAgICAgfCB7XHJcbiAgICAgICAgICAgIGl0ZW1zOiBhbnlbXTtcclxuICAgICAgICAgICAgdG90YWw6IG51bWJlcjtcclxuICAgICAgICAgIH1cclxuICAgICAgPltdID0gW107XHJcbiAgICAgIGNvbnN0IGhhbmRsZURhdGEgPSBhc3luYyAoKSA9PiB7XHJcbiAgICAgICAgY29uc3QgcmVzdWx0cyA9IGF3YWl0IFByb21pc2UuYWxsKHByb21pc2VzKTtcclxuICAgICAgICBwcm9taXNlcyA9IFtdO1xyXG4gICAgICAgIGV4cG9ydEl0ZW1zID0gW107XHJcbiAgICAgICAgZm9yIChjb25zdCByZXN1bHQgb2YgcmVzdWx0cykge1xyXG4gICAgICAgICAgaWYgKCdpdGVtcycgaW4gcmVzdWx0KSB7XHJcbiAgICAgICAgICAgIGV4cG9ydEl0ZW1zID0gWy4uLmV4cG9ydEl0ZW1zLCAuLi5yZXN1bHQuaXRlbXNdO1xyXG4gICAgICAgICAgICB0b3RhbCA9IHJlc3VsdC50b3RhbDtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGV4cG9ydEl0ZW1zID0gWy4uLmV4cG9ydEl0ZW1zLCAuLi5yZXN1bHRdO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy50YWJsZU9wdGlvbi5leHBvcnQ/Lm1hcHBpbmcpIHtcclxuICAgICAgICAgIGNvbnN0IHJlc3VsdHMgPSB0aGlzLnRhYmxlT3B0aW9uLmV4cG9ydC5tYXBwaW5nKGV4cG9ydEl0ZW1zKTtcclxuICAgICAgICAgIGlmIChyZXN1bHRzIGluc3RhbmNlb2YgUHJvbWlzZSkge1xyXG4gICAgICAgICAgICBleHBvcnRJdGVtcyA9IGF3YWl0IHJlc3VsdHM7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBleHBvcnRJdGVtcyA9IHJlc3VsdHM7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IHRvdGFsUGFnZSA9IHRvdGFsIC8gcGFnZVNpemU7XHJcbiAgICAgICAgY29uc3QgcGVyY2VudCA9IE1hdGgucm91bmQoKChwYWdlTnVtYmVyIC0gMSkgKiAxMDAuMCkgLyB0b3RhbFBhZ2UpO1xyXG4gICAgICAgIHRoaXMuZXhwb3J0VGl0bGUgPSBgRXhwb3J0aW5nLi4uJHtwZXJjZW50fSVgO1xyXG4gICAgICAgIGNvbnN0IGFsbENvbHVtbnMgPSB0aGlzLiNhbGxDb2x1bW5zKCk7XHJcbiAgICAgICAgY29uc3QgYWxsRXhwb3J0ZWRDb2x1bW5zID0gdGhpcy4jYWxsRXhwb3J0ZWRDb2x1bW5zKCk7XHJcbiAgICAgICAgZm9yIChjb25zdCBpdGVtIG9mIGV4cG9ydEl0ZW1zKSB7XHJcbiAgICAgICAgICBjb25zdCBvYmo6IGFueSA9IHt9O1xyXG4gICAgICAgICAgY29uc3QgaGFuZGxlID0gYXN5bmMgKGV4cG9ydENvbHVtbjogU2RFeHBvcnRDb2x1bW4pID0+IHtcclxuICAgICAgICAgICAgb2JqW2V4cG9ydENvbHVtbi5maWVsZF0gPSBpdGVtW2V4cG9ydENvbHVtbi5maWVsZF07XHJcbiAgICAgICAgICAgIGNvbnN0IGNvbHVtbiA9IGFsbENvbHVtbnMuZmluZChlID0+IGUuZmllbGQgPT09IGV4cG9ydENvbHVtbi5maWVsZCk7XHJcbiAgICAgICAgICAgIGNvbnN0IGV4cG9ydGVkQ29sdW1uID0gYWxsRXhwb3J0ZWRDb2x1bW5zLmZpbmQoZSA9PiBlLmZpZWxkID09PSBleHBvcnRDb2x1bW4uZmllbGQpO1xyXG4gICAgICAgICAgICBpZiAoZXhwb3J0ZWRDb2x1bW4/LnRyYW5zZm9ybSkge1xyXG4gICAgICAgICAgICAgIG9ialtleHBvcnRlZENvbHVtbi5maWVsZF0gPSBleHBvcnRlZENvbHVtbi50cmFuc2Zvcm0oaXRlbVtleHBvcnRlZENvbHVtbi5maWVsZF0sIGl0ZW0pO1xyXG4gICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoIWNvbHVtbikge1xyXG4gICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoY29sdW1uLnR5cGUgPT09ICdjaGlsZHJlbicpIHtcclxuICAgICAgICAgICAgICBjb2x1bW4/LmNoaWxkcmVuLmZvckVhY2goY2hpbGRDb2x1bW4gPT4gaGFuZGxlKGNoaWxkQ29sdW1uKSk7XHJcbiAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmICghY29sdW1ucy5zb21lKGUgPT4gZS5maWVsZCA9PT0gY29sdW1uLmZpZWxkKSkge1xyXG4gICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoY29sdW1uLnRyYW5zZm9ybSkge1xyXG4gICAgICAgICAgICAgIGNvbnN0IHRyYW5zZm9ybSA9IGNvbHVtbi50cmFuc2Zvcm0oaXRlbVtjb2x1bW4uZmllbGRdLCBpdGVtLCB7XHJcbiAgICAgICAgICAgICAgICBpc0V4cG9ydDogdHJ1ZSxcclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICBpZiAodHJhbnNmb3JtIGluc3RhbmNlb2YgUHJvbWlzZSkge1xyXG4gICAgICAgICAgICAgICAgb2JqW2NvbHVtbi5maWVsZF0gPSBhd2FpdCB0cmFuc2Zvcm07XHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIG9ialtjb2x1bW4uZmllbGRdID0gdHJhbnNmb3JtO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBvYmpbY29sdW1uLmZpZWxkXSA9IG9ialtjb2x1bW4uZmllbGRdID8/ICcnO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGl0ZW1bY29sdW1uLmZpZWxkXSA9PT0gdW5kZWZpbmVkIHx8IGl0ZW1bY29sdW1uLmZpZWxkXSA9PT0gbnVsbCB8fCBpdGVtW2NvbHVtbi5maWVsZF0gPT09ICcnKSB7XHJcbiAgICAgICAgICAgICAgb2JqW2NvbHVtbi5maWVsZF0gPSAnJztcclxuICAgICAgICAgICAgfSBlbHNlIGlmIChjb2x1bW4udHlwZSA9PT0gJ3N0cmluZycgfHwgY29sdW1uLnR5cGUgPT09ICdudW1iZXInKSB7XHJcbiAgICAgICAgICAgICAgLy8gTuG6v3UgY2VsbCBsw6Agc3RyaW5nIGhv4bq3YyBudW1iZXIgdGjDrCBnw6FuIGLhurFuZyBjaMOtbmggbsOzXHJcbiAgICAgICAgICAgICAgb2JqW2NvbHVtbi5maWVsZF0gPSBpdGVtW2NvbHVtbi5maWVsZF07XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoY29sdW1uLnR5cGUgPT09ICdib29sJykge1xyXG4gICAgICAgICAgICAgIC8vIE7hur91IGzDoCBib29sIHRow6wgZ8OhbiBi4bqxbmcgZ2nDoSB0cuG7iyB0cnVlVmFsdWUgdsOgIGZhbHNlVmFsdWUgKG7hur91IGPDsyksIG3hurdjIMSR4buLbmggbMOgIFRSVUUvRkFMU0VcclxuICAgICAgICAgICAgICBpZiAoaXRlbVtjb2x1bW4uZmllbGRdKSB7XHJcbiAgICAgICAgICAgICAgICBvYmpbY29sdW1uLmZpZWxkXSA9IGNvbHVtbi5vcHRpb24/LmRpc3BsYXlPblRydWUgfHwgJ1RydWUnO1xyXG4gICAgICAgICAgICAgIH0gZWxzZSBpZiAob2JqW2NvbHVtbi5maWVsZF0gIT09IHVuZGVmaW5lZCAmJiBvYmpbY29sdW1uLmZpZWxkXSAhPT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgb2JqW2NvbHVtbi5maWVsZF0gPSBjb2x1bW4ub3B0aW9uPy5kaXNwbGF5T25GYWxzZSB8fCAnRmFsc2UnO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSBlbHNlIGlmIChjb2x1bW4udHlwZSA9PT0gJ2RhdGUnKSB7XHJcbiAgICAgICAgICAgICAgbGV0IGRhdGUgPSBpdGVtW2NvbHVtbi5maWVsZF07XHJcbiAgICAgICAgICAgICAgLy8gTuG6v3UgbMOgIGRhdGUgdGjDrCBjb252ZXJ0IHRoZW8gxJHDum5nIGZvcm1hdFxyXG4gICAgICAgICAgICAgIC8vIG9ialtjb2x1bW4uZmllbGRdID0gRGF0ZS50b0Zvcm1hdChkYXRlLCAnZGQvTU0veXl5eScpO1xyXG4gICAgICAgICAgICAgIG9ialtjb2x1bW4uZmllbGRdID0gRGF0ZS5pc0RhdGUoZGF0ZSkgPyBuZXcgRGF0ZShkYXRlKSA6IHVuZGVmaW5lZDtcclxuICAgICAgICAgICAgfSBlbHNlIGlmIChjb2x1bW4udHlwZSA9PT0gJ2RhdGV0aW1lJykge1xyXG4gICAgICAgICAgICAgIGxldCBkYXRlID0gaXRlbVtjb2x1bW4uZmllbGRdO1xyXG4gICAgICAgICAgICAgIC8vIE7hur91IGzDoCBkYXRldGltZSB0aMOsIGNvbnZlcnQgdGhlbyDEkcO6bmcgZm9ybWF0XHJcbiAgICAgICAgICAgICAgLy8gb2JqW2NvbHVtbi5maWVsZF0gPSBEYXRlLnRvRm9ybWF0KGRhdGUsICdkZC9NTS95eXl5IEhIOm1tJyk7XHJcbiAgICAgICAgICAgICAgb2JqW2NvbHVtbi5maWVsZF0gPSBEYXRlLmlzRGF0ZShkYXRlKSA/IG5ldyBEYXRlKGRhdGUpIDogdW5kZWZpbmVkO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGNvbHVtbi50eXBlID09PSAndGltZScpIHtcclxuICAgICAgICAgICAgICBsZXQgZGF0ZSA9IGl0ZW1bY29sdW1uLmZpZWxkXTtcclxuICAgICAgICAgICAgICAvLyBO4bq/dSBsw6AgdGltZSB0aMOsIGNvbnZlcnQgdGhlbyDEkcO6bmcgZm9ybWF0XHJcbiAgICAgICAgICAgICAgb2JqW2NvbHVtbi5maWVsZF0gPSBEYXRlLnRvRm9ybWF0KGRhdGUsICdISDptbScpO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGNvbHVtbi50eXBlID09PSAndmFsdWVzJyB8fCBjb2x1bW4udHlwZSA9PT0gJ2xhenktdmFsdWVzJykge1xyXG4gICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gaXRlbVtjb2x1bW4uZmllbGRdO1xyXG4gICAgICAgICAgICAgIGlmIChjb2x1bW4udHlwZSA9PT0gJ2xhenktdmFsdWVzJyAmJiB0eXBlb2YgY29sdW1uLm9wdGlvbi5tYXBWYWx1ZSA9PT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgdmFsID0gY29sdW1uLm9wdGlvbi5tYXBWYWx1ZSh2YWx1ZSwgaXRlbSk7XHJcbiAgICAgICAgICAgICAgICBjb25zdCB2YWxzID0gKEFycmF5LmlzQXJyYXkodmFsKSA/IHZhbCA6IFt2YWxdKS5maWx0ZXIoZSA9PiAhIWU/LnRvU3RyaW5nKCkpO1xyXG4gICAgICAgICAgICAgICAgb2JqW2NvbHVtbi5maWVsZF0gPSB2YWxzXHJcbiAgICAgICAgICAgICAgICAgIC5tYXAodmFsID0+IHRoaXMuI2NhY2hlT2JqVmFsdWVzW2NvbHVtbi5maWVsZF0/Llt2YWxdPy5bY29sdW1uLm9wdGlvbi5kaXNwbGF5RmllbGRdIHx8IHZhbClcclxuICAgICAgICAgICAgICAgICAgPy5qb2luKCcsICcpO1xyXG4gICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCB2YWxzID0gKEFycmF5LmlzQXJyYXkodmFsdWUpID8gdmFsdWUgOiBbdmFsdWVdKS5maWx0ZXIoZSA9PiAhIWU/LnRvU3RyaW5nKCkpO1xyXG4gICAgICAgICAgICAgICAgb2JqW2NvbHVtbi5maWVsZF0gPSB2YWxzXHJcbiAgICAgICAgICAgICAgICAgIC5tYXAodmFsID0+IHRoaXMuI2NhY2hlT2JqVmFsdWVzW2NvbHVtbi5maWVsZF0/Llt2YWxdPy5bY29sdW1uLm9wdGlvbi5kaXNwbGF5RmllbGRdIHx8IHZhbClcclxuICAgICAgICAgICAgICAgICAgPy5qb2luKCcsICcpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICBvYmpbY29sdW1uLmZpZWxkXSA9IGl0ZW1bY29sdW1uLmZpZWxkXTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfTtcclxuICAgICAgICAgIC8vIHRoaXMuZ3JpZE9wdGlvbi5jb2x1bW5zLmZvckVhY2goaGFuZGxlKTtcclxuICAgICAgICAgIGZvciAoY29uc3QgZXhwb3J0Q29sdW1uIG9mIGNvbHVtbnMpIHtcclxuICAgICAgICAgICAgYXdhaXQgaGFuZGxlKGV4cG9ydENvbHVtbik7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpdGVtcy5wdXNoKG9iaik7XHJcbiAgICAgICAgfVxyXG4gICAgICB9O1xyXG4gICAgICB3aGlsZSAocGFnZU51bWJlciAqIHBhZ2VTaXplIDwgdG90YWwpIHtcclxuICAgICAgICBwcm9taXNlcy5wdXNoKHRoaXMuI2V4cG9ydGVkSXRlbXMocGFnZU51bWJlciwgcGFnZVNpemUpKTtcclxuICAgICAgICBwYWdlTnVtYmVyKys7XHJcbiAgICAgICAgaWYgKHByb21pc2VzLmxlbmd0aCA8IGJhdGNoKSB7XHJcbiAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgYXdhaXQgaGFuZGxlRGF0YSgpO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChwcm9taXNlcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgYXdhaXQgaGFuZGxlRGF0YSgpO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChmaWxlPy5maWxlUGF0aCkge1xyXG4gICAgICAgIGF3YWl0IHRoaXMuZXhwb3J0U2VydmljZS5leHBvcnRCeVRlbXBsYXRlKHtcclxuICAgICAgICAgIGZpbGVQYXRoOiBmaWxlLmZpbGVQYXRoLFxyXG4gICAgICAgICAgZmlsZU5hbWU6IGZpbGUuZmlsZU5hbWUsXHJcbiAgICAgICAgICBjb2x1bW5zLFxyXG4gICAgICAgICAgaXRlbXMsXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChpc0NTVikge1xyXG4gICAgICAgIGF3YWl0IHRoaXMuZXhwb3J0U2VydmljZS5leHBvcnRDU1Yoe1xyXG4gICAgICAgICAgY29sdW1ucyxcclxuICAgICAgICAgIGl0ZW1zLFxyXG4gICAgICAgICAgZmlsZU5hbWU6IHRoaXMudGFibGVPcHRpb24/LmV4cG9ydD8uZmlsZU5hbWUsXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnN0IHNoZWV0czoge1xyXG4gICAgICAgIG5hbWU6IHN0cmluZztcclxuICAgICAgICBpdGVtczogYW55W107XHJcbiAgICAgICAgZmllbGRzOiBzdHJpbmdbXTtcclxuICAgICAgfVtdID0gW107XHJcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KHRoaXMudGFibGVPcHRpb24/LmV4cG9ydD8uc2hlZXRzKSkge1xyXG4gICAgICAgIGZvciAoY29uc3Qgc2hlZXQgb2YgdGhpcy50YWJsZU9wdGlvbi5leHBvcnQuc2hlZXRzKSB7XHJcbiAgICAgICAgICBpZiAoc2hlZXQubmFtZSAmJiBzaGVldC5pdGVtcyAmJiBzaGVldC5maWVsZHMpIHtcclxuICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoc2hlZXQuaXRlbXMpKSB7XHJcbiAgICAgICAgICAgICAgc2hlZXRzLnB1c2goe1xyXG4gICAgICAgICAgICAgICAgbmFtZTogc2hlZXQubmFtZSxcclxuICAgICAgICAgICAgICAgIGl0ZW1zOiBzaGVldC5pdGVtcyxcclxuICAgICAgICAgICAgICAgIGZpZWxkczogc2hlZXQuZmllbGRzLFxyXG4gICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHNoZWV0cy5wdXNoKHtcclxuICAgICAgICAgICAgICAgIG5hbWU6IHNoZWV0Lm5hbWUsXHJcbiAgICAgICAgICAgICAgICBpdGVtczogYXdhaXQgc2hlZXQuaXRlbXMoKSxcclxuICAgICAgICAgICAgICAgIGZpZWxkczogc2hlZXQuZmllbGRzLFxyXG4gICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGF3YWl0IHRoaXMuZXhwb3J0U2VydmljZS5leHBvcnQoe1xyXG4gICAgICAgIGNvbHVtbnMsXHJcbiAgICAgICAgaXRlbXMsXHJcbiAgICAgICAgZmlsZU5hbWU6IHRoaXMudGFibGVPcHRpb24/LmV4cG9ydD8uZmlsZU5hbWUsXHJcbiAgICAgICAgc2hlZXRzLFxyXG4gICAgICB9KTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfSBmaW5hbGx5IHtcclxuICAgICAgdGhpcy5pc0V4cG9ydGluZyA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmV4cG9ydFRpdGxlID0gYEV4cG9ydGA7XHJcbiAgICAgIHRoaXMucmVmLmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuICB9O1xyXG5cclxuICAjZ2V0RXhwb3J0Q29sdW1ucyA9IChjb2x1bW5zPzogU2RFeHBvcnRDb2x1bW5bXSkgPT4ge1xyXG4gICAgbGV0IHRhYmxlQ29sdW1uczogU2RFeHBvcnRDb2x1bW5bXSA9IFtdO1xyXG4gICAgLy8gTOG6pXkgY29sdW1uIHThu6sgb3B0aW9uXHJcbiAgICB0aGlzLnRhYmxlT3B0aW9uLmNvbHVtbnNcclxuICAgICAgLmZpbHRlcihlID0+ICFlLmV4cG9ydD8uZGlzYWJsZWQpXHJcbiAgICAgIC5mb3JFYWNoKGNvbHVtbiA9PiB7XHJcbiAgICAgICAgaWYgKGNvbHVtbi50eXBlID09PSAnY2hpbGRyZW4nKSB7XHJcbiAgICAgICAgICBjb2x1bW4uY2hpbGRyZW5cclxuICAgICAgICAgICAgPy5maWx0ZXIoZSA9PiAhZS5leHBvcnQ/LmRpc2FibGVkKVxyXG4gICAgICAgICAgICAuZm9yRWFjaChjaGlsZENvbHVtbiA9PiB7XHJcbiAgICAgICAgICAgICAgdGFibGVDb2x1bW5zLnB1c2goY2hpbGRDb2x1bW4pO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGFibGVDb2x1bW5zLnB1c2goe1xyXG4gICAgICAgICAgZmllbGQ6IGNvbHVtbi5maWVsZCxcclxuICAgICAgICAgIHRpdGxlOiBjb2x1bW4udGl0bGUsXHJcbiAgICAgICAgICBkZXNjcmlwdGlvbjogY29sdW1uLmRlc2NyaXB0aW9uLFxyXG4gICAgICAgICAgd2lkdGg6IGNvbHVtbi53aWR0aCxcclxuICAgICAgICAgIG51bUZtdDogY29sdW1uLnR5cGUgPT09ICdkYXRldGltZScgPyAnZGQvbW0veXl5eSBoaDptbTpzcycgOiBjb2x1bW4udHlwZSA9PT0gJ2RhdGUnID8gJ2RkL21tL3l5eXknIDogdW5kZWZpbmVkXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0pO1xyXG4gICAgLy8gTOG6pXkgY29sdW1ucyB04burIGNvbmZpZ3VyYXRpb25cclxuICAgIGlmICh0aGlzLmNvbmZpZ3VyYXRpb24pIHtcclxuICAgICAgY29uc3QgY29sdW1ucyA9IFsuLi50YWJsZUNvbHVtbnNdO1xyXG4gICAgICBjb25zdCB7IGZpcnN0Q29sdW1ucywgc2Vjb25kQ29sdW1ucyB9ID0gdGhpcy5jb25maWd1cmF0aW9uO1xyXG4gICAgICBjb25zdCBkaXNwbGF5Q29sdW1uczogU2RUYWJsZUNvbHVtbltdID0gWy4uLmZpcnN0Q29sdW1ucywgLi4uc2Vjb25kQ29sdW1uc10ucmVkdWNlKChmaXJzdCwgbmV4dCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGNvbHVtbiA9IHRoaXMudGFibGVPcHRpb24uY29sdW1ucy5maW5kKGUgPT4gZS5maWVsZCA9PT0gbmV4dC5maWVsZCk7XHJcbiAgICAgICAgaWYgKCFjb2x1bW4pIHtcclxuICAgICAgICAgIHJldHVybiBmaXJzdDtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGNvbHVtbi50eXBlICE9PSAnY2hpbGRyZW4nKSB7XHJcbiAgICAgICAgICByZXR1cm4gWy4uLmZpcnN0LCBjb2x1bW5dO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBjaGlsZHJlbiA9IGNvbHVtbi5jaGlsZHJlbjtcclxuICAgICAgICByZXR1cm4gWy4uLmZpcnN0LCAuLi5jaGlsZHJlbl07XHJcbiAgICAgIH0sIFtdKTtcclxuICAgICAgdGFibGVDb2x1bW5zID0gZGlzcGxheUNvbHVtbnNcclxuICAgICAgICAubWFwKGUgPT4gKHtcclxuICAgICAgICAgIC4uLmUsXHJcbiAgICAgICAgICBkYXRhOiBjb2x1bW5zLmZpbmQoZTEgPT4gZTEuZmllbGQgPT09IGUuZmllbGQpLFxyXG4gICAgICAgIH0pKVxyXG4gICAgICAgIC5maWx0ZXIoZSA9PiAhIWUuZGF0YSlcclxuICAgICAgICAubWFwKGUgPT4gZS5kYXRhKTtcclxuICAgIH1cclxuICAgIC8vIENo4buJIGzhuqV5IGPDoWMgY29sdW1ucyDEkcaw4bujYyB0aGnhur90IGzhuq1wXHJcbiAgICBjb25zdCBjb2x1bW5GaWVsZHMgPSBjb2x1bW5zPy5tYXAoZSA9PiBlLmZpZWxkKSB8fCBbXTtcclxuICAgIHJldHVybiBbLi4udGFibGVDb2x1bW5zLCAuLi4odGhpcy50YWJsZU9wdGlvbi5leHBvcnQ/LmNvbHVtbnM/LmZpbHRlcihlID0+ICFlLmV4cG9ydD8uZGlzYWJsZWQpIHx8IFtdKV0uZmlsdGVyKFxyXG4gICAgICBjb2x1bW4gPT4gIWNvbHVtbkZpZWxkcz8ubGVuZ3RoIHx8IGNvbHVtbkZpZWxkcy5pbmNsdWRlcyhjb2x1bW4uZmllbGQpXHJcbiAgICApO1xyXG4gIH07XHJcblxyXG4gIGV4cG9ydEV4Y2VsID0gKCkgPT4ge1xyXG4gICAgdGhpcy5vbkV4cG9ydCgpO1xyXG4gIH07XHJcblxyXG4gIGV4cG9ydENTViA9ICgpID0+IHtcclxuICAgIHRoaXMub25FeHBvcnQoeyBpc0NTVjogdHJ1ZSB9KTtcclxuICB9O1xyXG5cclxuICBvbkZpbHRlckNoYW5nZSA9ICgpID0+IHtcclxuICAgIHRoaXMudGFibGVGaWx0ZXI/LnVwZGF0ZUZpbHRlcj8uKCk7XHJcbiAgICB0aGlzLmZpbHRlclJlZ2lzdGVyLnZhbHVlLnNldCh7XHJcbiAgICAgIGNvbHVtbk9wZXJhdG9yOiB0aGlzLmNvbHVtbk9wZXJhdG9yIHx8IHt9LFxyXG4gICAgICBjb2x1bW5GaWx0ZXI6IHRoaXMuY29sdW1uRmlsdGVyLFxyXG4gICAgfSk7XHJcbiAgfTtcclxuXHJcbiAgb25FeHBhbmQgPSBhc3luYyAocm93RGF0YTogU2RUYWJsZUl0ZW08VD4pID0+IHtcclxuICAgIGlmICh0aGlzLnRhYmxlT3B0aW9uLmV4cGFuZD8uYWx3YXlzKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGlmIChyb3dEYXRhLm1ldGEuZXhwYW5kLmlzRXhwYW5kaW5nKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGlmIChyb3dEYXRhLm1ldGEuZXhwYW5kLmlzRXhwYW5kZWQpIHtcclxuICAgICAgcm93RGF0YS5tZXRhLmV4cGFuZC5pc0V4cGFuZGVkID0gZmFsc2U7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IGRhdGEgPSB0aGlzLnRhYmxlT3B0aW9uPy5leHBhbmQ/Lm9uRXhwYW5kPy4ocm93RGF0YS5kYXRhKTtcclxuICAgIGlmICghdGhpcy50YWJsZU9wdGlvbi5leHBhbmQ/Lm11bHRpcGxlKSB7XHJcbiAgICAgIHRoaXMuaXRlbXMuZm9yRWFjaChpdGVtID0+IChpdGVtLm1ldGEuZXhwYW5kLmlzRXhwYW5kaW5nID0gaXRlbS5tZXRhLmV4cGFuZC5pc0V4cGFuZGVkID0gZmFsc2UpKTtcclxuICAgIH1cclxuICAgIGlmIChkYXRhIGluc3RhbmNlb2YgUHJvbWlzZSkge1xyXG4gICAgICByb3dEYXRhLm1ldGEuZXhwYW5kLmlzRXhwYW5kaW5nID0gdHJ1ZTtcclxuICAgICAgZGF0YVxyXG4gICAgICAgIC50aGVuKHJlcyA9PiB7XHJcbiAgICAgICAgICByb3dEYXRhLm1ldGEuZXhwYW5kLmRhdGEgPSByZXM7XHJcbiAgICAgICAgICByb3dEYXRhLm1ldGEuZXhwYW5kLmlzRXhwYW5kZWQgPSB0cnVlO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgLmZpbmFsbHkoKCkgPT4gKHJvd0RhdGEubWV0YS5leHBhbmQuaXNFeHBhbmRpbmcgPSBmYWxzZSkpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcm93RGF0YS5tZXRhLmV4cGFuZC5kYXRhID0gZGF0YTtcclxuICAgICAgcm93RGF0YS5tZXRhLmV4cGFuZC5pc0V4cGFuZGVkID0gdHJ1ZTtcclxuICAgIH1cclxuICB9O1xyXG5cclxuICBvblNlbGVjdCA9IChyb3dEYXRhOiBTZFRhYmxlSXRlbTxUPikgPT4ge1xyXG4gICAgaWYgKHJvd0RhdGEubWV0YS5ncm91cD8uaXRlbXM/Lmxlbmd0aCkge1xyXG4gICAgICByb3dEYXRhLm1ldGEuZ3JvdXAuaXRlbXMuZm9yRWFjaChlID0+IChlLm1ldGEuc2VsZWN0b3IuaXNTZWxlY3RlZCA9IHJvd0RhdGEubWV0YS5zZWxlY3Rvci5pc1NlbGVjdGVkKSk7XHJcbiAgICAgIHRoaXMudGFibGVPcHRpb24uc2VsZWN0b3I/Lm9uU2VsZWN0Py4oXHJcbiAgICAgICAgcm93RGF0YS5kYXRhLFxyXG4gICAgICAgIHRoaXMuaXRlbXMuZmlsdGVyKGUgPT4gZS5tZXRhLnNlbGVjdG9yLmlzU2VsZWN0ZWQpLm1hcChlID0+IGUuZGF0YSlcclxuICAgICAgKTtcclxuICAgICAgdGhpcy5pc1NlbGVjdEFsbCA9IHRoaXMuaXRlbXMuZXZlcnkoZSA9PiBlLm1ldGEuc2VsZWN0b3IuaXNTZWxlY3RlZCk7XHJcbiAgICAgIHRoaXMuI3VwZGF0ZVNlbGVjdGVkSXRlbXMoKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmICh0aGlzLnRhYmxlT3B0aW9uLnNlbGVjdG9yPy5zaW5nbGUpIHtcclxuICAgICAgICB0aGlzLml0ZW1zLmZpbHRlcihlID0+IGUgIT09IHJvd0RhdGEpLmZvckVhY2goZSA9PiAoZS5tZXRhLnNlbGVjdG9yLmlzU2VsZWN0ZWQgPSBmYWxzZSkpO1xyXG4gICAgICAgIHRoaXMuI3VwZGF0ZVNlbGVjdGVkSXRlbXMoKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy50YWJsZU9wdGlvbi5zZWxlY3Rvcj8ub25TZWxlY3Q/LihcclxuICAgICAgICByb3dEYXRhLmRhdGEsXHJcbiAgICAgICAgdGhpcy5pdGVtcy5maWx0ZXIoZSA9PiBlLm1ldGEuc2VsZWN0b3IuaXNTZWxlY3RlZCkubWFwKGUgPT4gZS5kYXRhKVxyXG4gICAgICApO1xyXG4gICAgICB0aGlzLmlzU2VsZWN0QWxsID0gdGhpcy5pdGVtcy5ldmVyeShlID0+IGUubWV0YS5zZWxlY3Rvci5pc1NlbGVjdGVkKTtcclxuICAgICAgdGhpcy4jdXBkYXRlU2VsZWN0ZWRJdGVtcygpO1xyXG4gICAgfVxyXG4gIH07XHJcblxyXG4gIG9uU2VsZWN0QWxsID0gKCkgPT4ge1xyXG4gICAgdGhpcy5pdGVtcz8uZm9yRWFjaChlID0+IHtcclxuICAgICAgaWYgKGUubWV0YS5zZWxlY3Rvci5zZWxlY3RhYmxlICYmICghdGhpcy50YWJsZU9wdGlvbj8uc2VsZWN0b3I/LmFjdGlvbnM/Lmxlbmd0aCB8fCBlLm1ldGEuc2VsZWN0b3IuYWN0aW9ucz8ubGVuZ3RoKSkge1xyXG4gICAgICAgIGUubWV0YS5zZWxlY3Rvci5pc1NlbGVjdGVkID0gdGhpcy5pc1NlbGVjdEFsbDtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICB0aGlzLnRhYmxlT3B0aW9uLnNlbGVjdG9yPy5vblNlbGVjdEFsbD8uKHRoaXMuaXRlbXMuZmlsdGVyKGUgPT4gZS5tZXRhLnNlbGVjdG9yLmlzU2VsZWN0ZWQpLm1hcChlID0+IGUuZGF0YSkpO1xyXG4gICAgdGhpcy4jdXBkYXRlU2VsZWN0ZWRJdGVtcygpO1xyXG4gIH07XHJcblxyXG4gIG9uQ2xlYXJTZWxlY3Rpb24gPSAoaXRlbXM/OiBTZFRhYmxlSXRlbTxUPltdKSA9PiB7XHJcbiAgICBpdGVtcyA9IGl0ZW1zIHx8IHRoaXMuaXRlbXM7XHJcbiAgICB0aGlzLmlzU2VsZWN0QWxsID0gZmFsc2U7XHJcbiAgICBpdGVtcz8uZm9yRWFjaChlID0+IChlLm1ldGEuc2VsZWN0b3IuaXNTZWxlY3RlZCA9IGZhbHNlKSk7XHJcbiAgICB0aGlzLiN1cGRhdGVTZWxlY3RlZEl0ZW1zKCk7XHJcbiAgfTtcclxuXHJcbiAgI3VwZGF0ZVNlbGVjdGVkSXRlbXMgPSAoKSA9PiB7XHJcbiAgICB0aGlzLnNlbGVjdGVkVGFibGVJdGVtcyA9IHRoaXMuaXRlbXMuZmlsdGVyKGl0ZW0gPT4gaXRlbS5tZXRhLnNlbGVjdG9yLmlzU2VsZWN0ZWQpO1xyXG4gICAgdGhpcy5yZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH07XHJcblxyXG4gIGNsZWFyRmlsdGVyID0gKCkgPT4ge1xyXG4gICAgdGhpcy5maWx0ZXJSZWdpc3Rlci52YWx1ZS5yZW1vdmUoKTtcclxuICB9O1xyXG5cclxuICBzZXRGaWx0ZXIgPSAoYXJnczogeyBjb2x1bW5GaWx0ZXI/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+OyBleHRlcm5hbEZpbHRlcj86IFJlY29yZDxzdHJpbmcsIGFueT47IGZpbHRlckRlZj86IFJlY29yZDxzdHJpbmcsIGFueT4gfSkgPT4ge1xyXG4gICAgY29uc3QgeyBjb2x1bW5GaWx0ZXIsIGV4dGVybmFsRmlsdGVyLCBmaWx0ZXJEZWYgfSA9IGFyZ3MgfHwge307XHJcbiAgICBpZiAoY29sdW1uRmlsdGVyKSB7XHJcbiAgICAgIHRoaXMuY29sdW1uRmlsdGVyID0gY29sdW1uRmlsdGVyO1xyXG4gICAgfVxyXG4gICAgdGhpcy5maWx0ZXJSZWdpc3Rlci52YWx1ZS5zZXQoe1xyXG4gICAgICBjb2x1bW5GaWx0ZXIsXHJcbiAgICAgIGV4dGVybmFsRmlsdGVyLFxyXG4gICAgICBmaWx0ZXJEZWYsXHJcbiAgICB9KTtcclxuICB9O1xyXG5cclxuICBnZXQgZGF0YUl0ZW1zKCk6IFRbXSB7XHJcbiAgICByZXR1cm4gdGhpcy5pdGVtcy5tYXAoaXRlbSA9PiBpdGVtLmRhdGEpO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHNlbGVjdGVkSXRlbXMoKTogVFtdIHtcclxuICAgIHJldHVybiB0aGlzLnNlbGVjdGVkVGFibGVJdGVtcy5tYXAoaXRlbSA9PiBpdGVtLmRhdGEpO1xyXG4gIH1cclxuXHJcbiAgZGV0ZWN0Q2hhbmdlcyA9ICgpID0+IHRoaXMucmVmLmRldGVjdENoYW5nZXMoKTtcclxuXHJcbiAgI2xvYWRWYWx1ZXMgPSBhc3luYyAoY29sdW1uczogU2RUYWJsZUNvbHVtbltdKSA9PiB7XHJcbiAgICBjb25zdCBwcm9taXNlczogUHJvbWlzZTx7XHJcbiAgICAgIGtleTogc3RyaW5nO1xyXG4gICAgICB2YWx1ZUZpZWxkOiBzdHJpbmc7XHJcbiAgICAgIGRpc3BsYXlGaWVsZDogc3RyaW5nO1xyXG4gICAgICBkYXRhOiBhbnlbXTtcclxuICAgIH0+W10gPSBbXTtcclxuICAgIGZvciAoY29uc3QgY29sdW1uIG9mIGNvbHVtbnMpIHtcclxuICAgICAgaWYgKGNvbHVtbi50eXBlID09PSAndmFsdWVzJyAmJiAhdGhpcy5jYWNoZVZhbHVlc1tjb2x1bW4uZmllbGRdKSB7XHJcbiAgICAgICAgaWYgKHR5cGVvZiBjb2x1bW4ub3B0aW9uLml0ZW1zID09PSAnZnVuY3Rpb24nKSB7XHJcbiAgICAgICAgICBwcm9taXNlcy5wdXNoKFxyXG4gICAgICAgICAgICBjb2x1bW4ub3B0aW9uXHJcbiAgICAgICAgICAgICAgLml0ZW1zKClcclxuICAgICAgICAgICAgICAudGhlbihkYXRhID0+ICh7XHJcbiAgICAgICAgICAgICAgICBrZXk6IGNvbHVtbi5maWVsZCxcclxuICAgICAgICAgICAgICAgIHZhbHVlRmllbGQ6IGNvbHVtbi5vcHRpb24udmFsdWVGaWVsZCxcclxuICAgICAgICAgICAgICAgIGRpc3BsYXlGaWVsZDogY29sdW1uLm9wdGlvbi5kaXNwbGF5RmllbGQsXHJcbiAgICAgICAgICAgICAgICBkYXRhOiBBcnJheS5pc0FycmF5KGRhdGEpID8gZGF0YSA6IFtdLFxyXG4gICAgICAgICAgICAgIH0pKVxyXG4gICAgICAgICAgICAgIC5jYXRjaChlcnIgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihlcnIpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgICAga2V5OiBjb2x1bW4uZmllbGQsXHJcbiAgICAgICAgICAgICAgICAgIHZhbHVlRmllbGQ6IGNvbHVtbi5vcHRpb24udmFsdWVGaWVsZCxcclxuICAgICAgICAgICAgICAgICAgZGlzcGxheUZpZWxkOiBjb2x1bW4ub3B0aW9uLmRpc3BsYXlGaWVsZCxcclxuICAgICAgICAgICAgICAgICAgZGF0YTogW10sXHJcbiAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLmNhY2hlVmFsdWVzW2NvbHVtbi5maWVsZF0gPSBjb2x1bW4ub3B0aW9uLml0ZW1zLm1hcChlID0+ICh7XHJcbiAgICAgICAgICAgIFtjb2x1bW4ub3B0aW9uLnZhbHVlRmllbGRdOiBlPy5bY29sdW1uLm9wdGlvbi52YWx1ZUZpZWxkXSxcclxuICAgICAgICAgICAgW2NvbHVtbi5vcHRpb24uZGlzcGxheUZpZWxkXTogZT8uW2NvbHVtbi5vcHRpb24uZGlzcGxheUZpZWxkXSxcclxuICAgICAgICAgIH0pKTtcclxuICAgICAgICAgIHRoaXMuI2NhY2hlT2JqVmFsdWVzW2NvbHVtbi5maWVsZF0gPSBBcnJheS50b09iamVjdCh0aGlzLmNhY2hlVmFsdWVzW2NvbHVtbi5maWVsZF0sIGNvbHVtbi5vcHRpb24udmFsdWVGaWVsZCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAocHJvbWlzZXMubGVuZ3RoKSB7XHJcbiAgICAgIGNvbnN0IHJlc3VsdHMgPSBhd2FpdCBQcm9taXNlLmFsbChwcm9taXNlcyk7XHJcbiAgICAgIGZvciAoY29uc3QgcmVzdWx0IG9mIHJlc3VsdHMpIHtcclxuICAgICAgICB0aGlzLmNhY2hlVmFsdWVzW3Jlc3VsdC5rZXldID0gcmVzdWx0LmRhdGEubWFwKGUgPT4gKHtcclxuICAgICAgICAgIFtyZXN1bHQudmFsdWVGaWVsZF06IGU/LltyZXN1bHQudmFsdWVGaWVsZF0sXHJcbiAgICAgICAgICBbcmVzdWx0LmRpc3BsYXlGaWVsZF06IGU/LltyZXN1bHQuZGlzcGxheUZpZWxkXSxcclxuICAgICAgICB9KSk7XHJcbiAgICAgICAgdGhpcy4jY2FjaGVPYmpWYWx1ZXNbcmVzdWx0LmtleV0gPSBBcnJheS50b09iamVjdCh0aGlzLmNhY2hlVmFsdWVzW3Jlc3VsdC5rZXldLCByZXN1bHQudmFsdWVGaWVsZCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9O1xyXG5cclxuICAjZm9ybWF0ID0gYXN5bmMgPFQgPSBhbnk+KHJhd0l0ZW1zOiBUW10sIGNvbHVtbnM6IFNkVGFibGVDb2x1bW5bXSkgPT4ge1xyXG4gICAgY29uc3QgaXRlbXMgPSByYXdJdGVtcy5tYXAoTWFwVG9TZFRhYmxlSXRlbSk7XHJcbiAgICBmb3IgKGNvbnN0IGNvbHVtbiBvZiBjb2x1bW5zKSB7XHJcbiAgICAgIC8vIENsaWNrYWJsZVxyXG4gICAgICBjb25zdCB7IGZpZWxkLCBjZWxsU3R5bGUsIGNsaWNrLCB0b29sdGlwLCBodG1sVGVtcGxhdGUsIHRyYW5zZm9ybSB9ID0gY29sdW1uO1xyXG4gICAgICBpZiAoIXRyYW5zZm9ybSAmJiAhaHRtbFRlbXBsYXRlICYmIGNvbHVtbi50eXBlID09PSAnbGF6eS12YWx1ZXMnICYmIHR5cGVvZiBjb2x1bW4ub3B0aW9uLnZpZXdzID09PSAnZnVuY3Rpb24nKSB7XHJcbiAgICAgICAgY29uc3Qge1xyXG4gICAgICAgICAgb3B0aW9uOiB7IHZpZXdzLCBtYXBWYWx1ZSB9LFxyXG4gICAgICAgIH0gPSBjb2x1bW47XHJcbiAgICAgICAgdGhpcy4jY2FjaGVPYmpWYWx1ZXNbZmllbGRdID0gdGhpcy4jY2FjaGVPYmpWYWx1ZXNbZmllbGRdIHx8IHt9O1xyXG4gICAgICAgIGNvbnN0IHZhbHVlcyA9IGl0ZW1zXHJcbiAgICAgICAgICAubWFwKGl0ZW0gPT4ge1xyXG4gICAgICAgICAgICBpZiAodHlwZW9mIG1hcFZhbHVlID09PSAnZnVuY3Rpb24nKSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIG1hcFZhbHVlKGl0ZW0uZGF0YT8uW2ZpZWxkXSwgaXRlbS5kYXRhKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gaXRlbS5kYXRhPy5bZmllbGRdO1xyXG4gICAgICAgICAgfSlcclxuICAgICAgICAgIC5maWx0ZXIodmFsID0+ICEhdmFsPy50b1N0cmluZygpKVxyXG4gICAgICAgICAgLnJlZHVjZTxzdHJpbmdbXT4oKGN1cnJlbnQsIG5leHQpID0+IFsuLi5jdXJyZW50LCAuLi4oQXJyYXkuaXNBcnJheShuZXh0KSA/IG5leHQgOiBbbmV4dF0pXSwgW10pXHJcbiAgICAgICAgICAuZmlsdGVyKHZhbCA9PiAhT2JqZWN0LmtleXModGhpcy4jY2FjaGVPYmpWYWx1ZXNbZmllbGRdKS5pbmNsdWRlcyh2YWwpKVxyXG4gICAgICAgICAgLnVuaW9uKCk7XHJcblxyXG4gICAgICAgIGlmICh2YWx1ZXMubGVuZ3RoKSB7XHJcbiAgICAgICAgICBjb25zdCBsYXp5SXRlbXM6IGFueVtdID0gKFxyXG4gICAgICAgICAgICBhd2FpdCB2aWV3cyh2YWx1ZXMpLmNhdGNoKGVyciA9PiB7XHJcbiAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihlcnIpO1xyXG4gICAgICAgICAgICAgIHJldHVybiBbXTtcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgIClcclxuICAgICAgICAgICAgLmZpbHRlcihpdGVtID0+IHZhbHVlcy5pbmNsdWRlcyhpdGVtPy5bY29sdW1uLm9wdGlvbi52YWx1ZUZpZWxkXSkpXHJcbiAgICAgICAgICAgIC5tYXAoZSA9PiAoe1xyXG4gICAgICAgICAgICAgIFtjb2x1bW4ub3B0aW9uLnZhbHVlRmllbGRdOiBlPy5bY29sdW1uLm9wdGlvbi52YWx1ZUZpZWxkXSxcclxuICAgICAgICAgICAgICBbY29sdW1uLm9wdGlvbi5kaXNwbGF5RmllbGRdOiBlPy5bY29sdW1uLm9wdGlvbi5kaXNwbGF5RmllbGRdLFxyXG4gICAgICAgICAgICB9KSk7XHJcbiAgICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMuI2NhY2hlT2JqVmFsdWVzW2ZpZWxkXSwgQXJyYXkudG9PYmplY3QobGF6eUl0ZW1zLCBjb2x1bW4ub3B0aW9uLnZhbHVlRmllbGQpIHx8IHt9KTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgZm9yIChjb25zdCBpdGVtIG9mIGl0ZW1zKSB7XHJcbiAgICAgICAgY29uc3Qgcm93RGF0YSA9IGl0ZW0uZGF0YTtcclxuICAgICAgICBjb25zdCB2YWx1ZSA9IHJvd0RhdGE/LltmaWVsZF07XHJcbiAgICAgICAgaXRlbS5tZXRhLmRpc3BsYXlbZmllbGRdID0ge1xyXG4gICAgICAgICAgYmFkZ2U6IHVuZGVmaW5lZCxcclxuICAgICAgICAgIGNlbGxTdHlsZTogY29sdW1uLnR5cGUgPT09ICdudW1iZXInID8geyAndGV4dC1hbGlnbic6ICdyaWdodCFpbXBvcnRhbnQnIH0gOiB1bmRlZmluZWQsXHJcbiAgICAgICAgICBkYXRhOiB2YWx1ZSxcclxuICAgICAgICAgIGlzSHRtbDogZmFsc2UsXHJcbiAgICAgICAgICB0b29sdGlwOiB0eXBlb2YgdG9vbHRpcCA9PT0gJ2Z1bmN0aW9uJyA/IHRvb2x0aXAodmFsdWUsIHJvd0RhdGEpIDogdW5kZWZpbmVkLFxyXG4gICAgICAgICAgY2xpY2s6IHR5cGVvZiBjbGljayA9PT0gJ2Z1bmN0aW9uJyA/ICgpID0+IGNsaWNrKHZhbHVlLCByb3dEYXRhKSA6IHVuZGVmaW5lZCxcclxuICAgICAgICB9O1xyXG4gICAgICAgIGNvbnN0IGRpc3BsYXkgPSBpdGVtLm1ldGEuZGlzcGxheVtmaWVsZF07XHJcbiAgICAgICAgLy8gRGlzcGxheVxyXG4gICAgICAgIGlmICh0eXBlb2YgaHRtbFRlbXBsYXRlID09PSAnZnVuY3Rpb24nKSB7XHJcbiAgICAgICAgICBkaXNwbGF5LmlzSHRtbCA9IHRydWU7XHJcbiAgICAgICAgICBkaXNwbGF5LmRhdGEgPSBodG1sVGVtcGxhdGUodmFsdWUsIHJvd0RhdGEpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHRyYW5zZm9ybSA9PT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICAgICAgY29uc3QgbmV3VmFsdWUgPSB0cmFuc2Zvcm0odmFsdWUsIHJvd0RhdGEpO1xyXG4gICAgICAgICAgaWYgKG5ld1ZhbHVlIGluc3RhbmNlb2YgUHJvbWlzZSkge1xyXG4gICAgICAgICAgICBkaXNwbGF5LmRhdGEgPSBhd2FpdCBuZXdWYWx1ZTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGRpc3BsYXkuZGF0YSA9IG5ld1ZhbHVlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBpZiAoY29sdW1uLnR5cGUgPT09ICdkYXRlJyB8fCBjb2x1bW4udHlwZSA9PT0gJ2RhdGV0aW1lJyB8fCBjb2x1bW4udHlwZSA9PT0gJ3RpbWUnKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGRhdGUgPSBEYXRlLnRvRm9ybWF0KHZhbHVlLCAnZGQvTU0veXl5eScpO1xyXG4gICAgICAgICAgICBsZXQgdGltZSA9IERhdGUudG9Gb3JtYXQodmFsdWUsICdISDptbTpzcycpO1xyXG4gICAgICAgICAgICBpZiAodGltZT8uZW5kc1dpdGgoJzAwJykpIHtcclxuICAgICAgICAgICAgICB0aW1lID0gRGF0ZS50b0Zvcm1hdCh2YWx1ZSwgJ0hIOm1tJyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKGNvbHVtbi50eXBlID09PSAnZGF0ZScgfHwgY29sdW1uLnR5cGUgPT09ICdkYXRldGltZScpIHtcclxuICAgICAgICAgICAgICBpZiAoY29sdW1uLnR5cGUgPT09ICdkYXRldGltZScpIHtcclxuICAgICAgICAgICAgICAgIGRpc3BsYXkuaXNIdG1sID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIGRpc3BsYXkuZGF0YSA9IGA8c3BhbiBjbGFzcz1cImQtYmxvY2sgVDE0UiB0ZXh0LWJsYWNrNDAwXCI+JHt0aW1lfTwvc3Bhbj48c3BhbiBjbGFzcz1cImQtYmxvY2sgVDE0UlwiPiR7ZGF0ZX08L3NwYW4+YDtcclxuICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgZGlzcGxheS5kYXRhID0gZGF0ZTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKGNvbHVtbi50eXBlID09PSAndGltZScpIHtcclxuICAgICAgICAgICAgICBkaXNwbGF5LmRhdGEgPSB0aW1lO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAoY29sdW1uLnR5cGUgPT09ICd2YWx1ZXMnIHx8IGNvbHVtbi50eXBlID09PSAnbGF6eS12YWx1ZXMnKSB7XHJcbiAgICAgICAgICAgIGlmIChjb2x1bW4udHlwZSA9PT0gJ2xhenktdmFsdWVzJyAmJiB0eXBlb2YgY29sdW1uLm9wdGlvbi5tYXBWYWx1ZSA9PT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICAgICAgICAgIGNvbnN0IHZhbCA9IGNvbHVtbi5vcHRpb24ubWFwVmFsdWUodmFsdWUsIHJvd0RhdGEpO1xyXG4gICAgICAgICAgICAgIGNvbnN0IHZhbHMgPSAoQXJyYXkuaXNBcnJheSh2YWwpID8gdmFsIDogW3ZhbF0pLmZpbHRlcihlID0+ICEhZT8udG9TdHJpbmcoKSk7XHJcbiAgICAgICAgICAgICAgZGlzcGxheS5kYXRhID0gdmFscy5tYXAodmFsID0+IHRoaXMuI2NhY2hlT2JqVmFsdWVzW2ZpZWxkXT8uW3ZhbF0/Lltjb2x1bW4ub3B0aW9uLmRpc3BsYXlGaWVsZF0gfHwgdmFsKT8uam9pbignLCAnKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICBjb25zdCB2YWxzID0gKEFycmF5LmlzQXJyYXkodmFsdWUpID8gdmFsdWUgOiBbdmFsdWVdKS5maWx0ZXIoZSA9PiAhIWU/LnRvU3RyaW5nKCkpO1xyXG4gICAgICAgICAgICAgIGRpc3BsYXkuZGF0YSA9IHZhbHMubWFwKHZhbCA9PiB0aGlzLiNjYWNoZU9ialZhbHVlc1tmaWVsZF0/Llt2YWxdPy5bY29sdW1uLm9wdGlvbi5kaXNwbGF5RmllbGRdIHx8IHZhbCk/LmpvaW4oJywgJyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmIChjb2x1bW4udHlwZSA9PT0gJ251bWJlcicgJiYgTnVtYmVyLmlzTnVtYmVyKHZhbHVlKSkge1xyXG4gICAgICAgICAgICBkaXNwbGF5LmRhdGEgPSBOdW1iZXIudG9WTkN1cnJlbmN5KHZhbHVlKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmIChjb2x1bW4udHlwZSA9PT0gJ2Jvb2wnKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHsgb3B0aW9uIH0gPSBjb2x1bW47XHJcbiAgICAgICAgICAgIGlmICh2YWx1ZSAhPT0gdW5kZWZpbmVkICYmIHZhbHVlICE9PSBudWxsICYmIHZhbHVlICE9PSAnJykge1xyXG4gICAgICAgICAgICAgIGRpc3BsYXkuZGF0YSA9IHZhbHVlID09PSB0cnVlID8gb3B0aW9uPy5kaXNwbGF5T25UcnVlIHx8ICdUcnVlJyA6IG9wdGlvbj8uZGlzcGxheU9uRmFsc2UgfHwgJ0ZhbHNlJztcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICBkaXNwbGF5LmRhdGEgPSBudWxsO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICAvLyBCYWRnZVxyXG4gICAgICAgICAgaWYgKChjb2x1bW4udHlwZSA9PT0gJ3N0cmluZycgfHwgY29sdW1uLnR5cGUgPT09ICdudW1iZXInIHx8IGNvbHVtbi50eXBlID09PSAndmFsdWVzJykgJiYgY29sdW1uLmJhZGdlKSB7XHJcbiAgICAgICAgICAgIGRpc3BsYXkuYmFkZ2UgPSB7XHJcbiAgICAgICAgICAgICAgdHlwZTogIWNvbHVtbj8uYmFkZ2VUeXBlID8gJ2ljb24nIDogY29sdW1uLmJhZGdlVHlwZSxcclxuICAgICAgICAgICAgICBjb2xvcjogY29sdW1uLmJhZGdlKHZhbHVlLCByb3dEYXRhKSxcclxuICAgICAgICAgICAgICBpY29uOiBjb2x1bW4uYmFkZ2VJY29uPy4odmFsdWUsIHJvd0RhdGEpLFxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgfSBlbHNlIGlmIChjb2x1bW4udHlwZSA9PT0gJ2Jvb2wnKSB7XHJcbiAgICAgICAgICAgIGRpc3BsYXkuYmFkZ2UgPSB7XHJcbiAgICAgICAgICAgICAgdHlwZTogJ2NpcmNsZScsXHJcbiAgICAgICAgICAgICAgY29sb3I6ICEhdmFsdWUgPyAnc3VjY2VzcycgOiAnZGFuZ2VyJyxcclxuICAgICAgICAgICAgICBpY29uOiBudWxsLFxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGl0ZW1zO1xyXG4gIH07XHJcblxyXG4gIG9uT3BlcmF0b3JDaGFuZ2UgPSAoY29sdW1uOiBTZFRhYmxlQ29sdW1uLCBvcGVyYXRvcjogU2RGaWx0ZXJPcGVyYXRvcikgPT4ge1xyXG4gICAgdGhpcy50YWJsZU9wdGlvbj8uZmlsdGVyPy5vcGVyYXRvckNoYW5nZT8uKGNvbHVtbiwgb3BlcmF0b3IpO1xyXG4gIH07XHJcblxyXG4gIHRyYWNrQnkgPSAoaW5kZXg6IG51bWJlciwgaXRlbTogU2RUYWJsZUl0ZW0pID0+IHtcclxuICAgIHJldHVybiBpdGVtLm1ldGEuaWQ7XHJcbiAgfTtcclxufVxyXG4iXX0=
|