@arsedizioni/ars-utils 18.4.38 → 18.4.40

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.
@@ -406,7 +406,7 @@ export class ClipperSearchResultManager extends ClipperDocumentManager {
406
406
  }
407
407
  // Update dashboard
408
408
  if (changed > 0) {
409
- this.clipperService.updateUnreadItems(ClipperUtils.getClipperModuleFromModel(item.model), value ? -1 : 1);
409
+ this.clipperService.updateUnreadItems(ClipperUtils.getClipperModuleFromModel(item), value ? -1 : 1);
410
410
  this.changeDetector.markForCheck();
411
411
  }
412
412
  }
@@ -525,4 +525,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImpor
525
525
  type: ViewChild,
526
526
  args: ['calendar']
527
527
  }] } });
528
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLXJlc3VsdC1tYW5hZ2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJzLXV0aWxzL2NsaXBwZXIudWkvdWkvc2VhcmNoLXJlc3VsdC1tYW5hZ2VyL3NlYXJjaC1yZXN1bHQtbWFuYWdlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN6RCxPQUFPLEVBQ0gsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQWEsU0FBUyxFQUFFLE1BQU0sRUFDdkMsTUFBTSxFQUNULE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBdUIsZUFBZSxFQUFFLFlBQVksRUFBRSxtQkFBbUIsRUFBRSxtQkFBbUIsRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDaEwsT0FBTyxFQUNILFVBQVUsRUFDSyxhQUFhLEVBQW1CLFdBQVcsRUFDMUQsWUFBWSxFQUNmLE1BQU0sNkJBQTZCLENBQUM7QUFDckMsT0FBTyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsT0FBTyxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQzdELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDeEQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDOUUsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sOENBQThDLENBQUM7QUFDOUYsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sMENBQTBDLENBQUM7O0FBVXhGLE1BQU0sT0FBTywwQkFDVCxTQUFRLHNCQUFzQjtJQVBsQzs7UUFhYyxnQkFBVyxHQUFrQixJQUFJLE9BQU8sRUFBUSxDQUFDO1FBQ2pELG1CQUFjLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDM0MsdUJBQWtCLEdBQUcsTUFBTSxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFDbEQsaUJBQVksR0FBRyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDckMsa0JBQWEsR0FBRyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDdEMsY0FBUyxHQUF3RCxJQUFJLENBQUM7UUFDbkUsYUFBUSxHQUErQixJQUFJLG1CQUFtQixFQUFFLENBQUM7UUFDakUsZUFBVSxHQUFHLE1BQU0sQ0FBVSxLQUFLLENBQUMsQ0FBQztRQUNwQyxpQkFBWSxHQUF3QixJQUFJLG1CQUFtQixFQUFFLENBQUM7UUFDOUQsMEJBQXFCLEdBQVksS0FBSyxDQUFDO1FBQ3ZDLHFCQUFnQixHQUFZLEtBQUssQ0FBQztRQUNsQywyQkFBc0IsR0FBWSxLQUFLLENBQUM7UUFDeEMsc0JBQWlCLEdBQVksS0FBSyxDQUFDO1FBQ25DLGdCQUFXLEdBQWlDLEVBQUUsQ0FBQztRQUMvQyxhQUFRLEdBQXNDLElBQUksQ0FBQztRQUNuRCxlQUFVLEdBQVcsV0FBVyxHQUFHLFdBQVcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUM5RCxpQkFBWSxHQUFrQixJQUFJLENBQUM7UUFDbkMsY0FBUyxHQUFHLE1BQU0sQ0FBVSxLQUFLLENBQUMsQ0FBQztRQUNuQyxlQUFVLEdBQUcsR0FBWSxFQUFFO1lBQ2pDLE9BQU8sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxLQUFLLElBQUksQ0FBQyxDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDdEYsQ0FBQyxDQUFDO0tBbWZMO0lBbGZHLFdBQVc7UUFDUCxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDaEMsQ0FBQztJQUdEOztPQUVHO0lBQ0gsMkJBQTJCO1FBQ3ZCLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2hCLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRTtnQkFDN0IsQ0FBQyxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7WUFDekIsQ0FBQyxDQUFDLENBQUM7UUFDUCxDQUFDO0lBQ0wsQ0FBQztJQUVEOzs7T0FHRztJQUNILE1BQU0sQ0FBQyxNQUFjLENBQUM7UUFDbEIsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDdEQsSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUNQLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7UUFDM0QsQ0FBQztJQUNMLENBQUM7SUFFRDs7T0FFRztJQUNILFdBQVc7UUFDUCxPQUFPLElBQUksQ0FBQyxTQUFTLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLEtBQUssSUFBSSxDQUFDLFFBQVEsRUFBRSxLQUFLLEVBQUUsTUFBTSxDQUFDO0lBQ3RGLENBQUM7SUFFRDs7O09BR0c7SUFDSCxTQUFTLENBQUMsU0FBa0IsSUFBSTtRQUM1QixJQUFJLE1BQU0sRUFBRSxDQUFDO1lBQ1QsSUFBSSxDQUFDLFFBQVEsRUFBRSxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO1FBQ2hGLENBQUM7YUFBTSxDQUFDO1lBQ0osSUFBSSxDQUFDLFFBQVEsRUFBRSxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxRQUFRLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO1FBQ2xGLENBQUM7SUFDTCxDQUFDO0lBRUQ7OztNQUdFO0lBQ0YsZUFBZTtRQUNYLE9BQU8sQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2xELENBQUM7SUFFRDs7O01BR0U7SUFDRixrQkFBa0I7UUFDZCxPQUFPLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNwRCxDQUFDO0lBRUQ7OztNQUdFO0lBQ0Ysa0JBQWtCO1FBQ2QsT0FBTyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDbEUsQ0FBQztJQUlEOztNQUVFO0lBQ0YsY0FBYztRQUNWLE9BQU8sSUFBSSxDQUFDLFNBQVMsRUFBRSxLQUFLLEVBQUUsQ0FBQztJQUNuQyxDQUFDO0lBRUQ7OztLQUdDO0lBQ0QsZUFBZTtRQUNYLE9BQU8sQ0FBQyxJQUFJLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDcEcsQ0FBQztJQUVEOztJQUVBO0lBQ0EsYUFBYTtRQUNULElBQUksSUFBSSxDQUFDLGVBQWUsRUFBRSxFQUFFLENBQUM7WUFDekIsT0FBTyxJQUFJLENBQUMsU0FBUyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUM7UUFDN0MsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFRDs7R0FFRDtJQUNDLGNBQWM7UUFDVixJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxJQUFJLENBQUMsQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDO1lBQzNDLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLHFEQUFxRCxDQUFDLENBQUM7WUFDaEYsT0FBTyxJQUFJLENBQUM7UUFDaEIsQ0FBQztRQUNELElBQUksR0FBRyxHQUFhLEVBQUUsQ0FBQztRQUN2QixJQUFJLElBQUksQ0FBQyxlQUFlLEVBQUUsRUFBRSxDQUFDO1lBQ3pCLElBQUksQ0FBQyxTQUFTLEVBQUUsR0FBRyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRTtnQkFDN0IsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDM0IsQ0FBQyxDQUFDLENBQUM7UUFDUCxDQUFDO1FBQ0QsT0FBTyxHQUFHLENBQUM7SUFDZixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gscUJBQXFCO1FBQ2pCLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLElBQUksQ0FBQyxDQUFDLEdBQUcsR0FBRyxFQUFFLENBQUM7WUFDM0MsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMscURBQXFELENBQUMsQ0FBQztZQUNoRixPQUFPLElBQUksQ0FBQztRQUNoQixDQUFDO1FBQ0QsSUFBSSxJQUFJLEdBQW9DLEVBQUUsQ0FBQztRQUMvQyxJQUFJLElBQUksQ0FBQyxlQUFlLEVBQUUsRUFBRSxDQUFDO1lBQ3pCLElBQUksQ0FBQyxTQUFTLEVBQUUsR0FBRyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRTtnQkFDN0IsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNqQyxDQUFDLENBQUMsQ0FBQztRQUNQLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBR0Q7Ozs7T0FJRztJQUNILGtCQUFrQixDQUFDLEtBQTRCLEVBQUUsTUFBMkI7UUFDeEUsTUFBTSxLQUFLLEdBQUcsWUFBWSxFQUFFLENBQUM7UUFDN0IsTUFBTSxXQUFXLEdBQ2IsQ0FBQyxNQUFNLENBQUMsUUFBUTtZQUNoQixNQUFNLENBQUMsUUFBUSxLQUFLLFdBQVcsQ0FBQyxPQUFPO1lBQ3ZDLE1BQU0sQ0FBQyxRQUFRLEtBQUssV0FBVyxDQUFDLFFBQVE7WUFDeEMsTUFBTSxDQUFDLFFBQVEsS0FBSyxXQUFXLENBQUMsYUFBYTtZQUM3QyxNQUFNLENBQUMsUUFBUSxLQUFLLFdBQVcsQ0FBQyxjQUFjLENBQUM7UUFDbkQsTUFBTSxnQkFBZ0IsR0FBRyxNQUFNLENBQUMsUUFBUSxLQUFLLFdBQVcsQ0FBQyxTQUFTLENBQUM7UUFDbkUsTUFBTSxpQkFBaUIsR0FBRyxNQUFNLENBQUMsUUFBUSxLQUFLLFdBQVcsQ0FBQyxVQUFVLENBQUM7UUFDckUsSUFBSSxLQUFLLEdBQUcsRUFBRSxDQUFDO1FBQ2YsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUNmLENBQUMsQ0FBQyxVQUFVLEdBQUcsQ0FBQyxDQUFDLFVBQVUsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ3BDLElBQUksQ0FBQyxTQUFTLEVBQUUsYUFBYSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDL0MsSUFBSSxDQUFDLENBQUMsS0FBSyxLQUFLLFlBQVksQ0FBQyxPQUFPLEVBQUUsQ0FBQztnQkFDbkMsQ0FBQyxDQUFDLElBQUksR0FBRyxhQUFhLEdBQUcsQ0FBQyxDQUFDLE1BQU0sR0FBRyxPQUFPLEdBQUcsV0FBVyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLFlBQVksQ0FBQyxDQUFDO1lBQy9GLENBQUM7aUJBQU0sSUFBSSxDQUFDLENBQUMsS0FBSyxLQUFLLFlBQVksQ0FBQyxRQUFRO2dCQUN4QyxDQUFDLENBQUMsS0FBSyxLQUFLLFlBQVksQ0FBQyxZQUFZLEVBQUUsQ0FBQztnQkFDeEMsUUFBUSxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7b0JBQ2QsS0FBSyxZQUFZLENBQUMsUUFBUTt3QkFDdEIsQ0FBQyxDQUFDLGlCQUFpQixHQUFHLFVBQVUsQ0FBQzt3QkFDakMsTUFBTTtvQkFDVixLQUFLLFlBQVksQ0FBQyxZQUFZO3dCQUMxQixDQUFDLENBQUMsaUJBQWlCLEdBQUcsY0FBYyxDQUFDO3dCQUNyQyxNQUFNO2dCQUNkLENBQUM7Z0JBQ0QsSUFBSSxDQUFDLENBQUMsWUFBWSxFQUFFLENBQUM7b0JBQ2pCLElBQUksS0FBSyxHQUFHLENBQUMsQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO29CQUN0QyxJQUFJLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7d0JBQ3JCLENBQUMsQ0FBQyxtQkFBbUIsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQ3JDLENBQUM7Z0JBQ0wsQ0FBQztnQkFDRCxJQUFJLENBQUMsQ0FBQyxZQUFZLEVBQUUsQ0FBQztvQkFDakIsQ0FBQyxDQUFDLElBQUksR0FBRyxVQUFVLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUM7b0JBQzlDLE1BQU0sQ0FBQyxHQUFHLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO29CQUMxQyxDQUFDLENBQUMsVUFBVSxHQUFHLEtBQUssSUFBSSxDQUFDLENBQUMsSUFBSSxJQUFJLEtBQUssSUFBSSxDQUFDLENBQUM7b0JBQzdDLENBQUMsQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDLElBQUksR0FBRyxLQUFLLENBQUM7Z0JBRWpDLENBQUM7WUFDTCxDQUFDO2lCQUFNLENBQUM7Z0JBQ0osSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLEtBQUssWUFBWSxDQUFDLFFBQVE7b0JBQ2xDLENBQUMsQ0FBQyxLQUFLLEtBQUssWUFBWSxDQUFDLElBQUksQ0FBQztvQkFDOUIsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO29CQUNULENBQUMsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQztnQkFDckUsQ0FBQztnQkFDRCxJQUFJLENBQUMsQ0FBQyxLQUFLLEtBQUssWUFBWSxDQUFDLHNCQUFzQjtvQkFDL0MsQ0FBQyxDQUFDLEtBQUssS0FBSyxZQUFZLENBQUMsZ0JBQWdCO29CQUN6QyxDQUFDLENBQUMsS0FBSyxLQUFLLFlBQVksQ0FBQyxLQUFLO29CQUM5QixDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7b0JBQ1QsQ0FBQyxDQUFDLElBQUksR0FBRyxVQUFVLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQztvQkFDMUQsTUFBTSxDQUFDLEdBQUcsVUFBVSxDQUFDLE9BQU8sQ0FBQyxZQUFZLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFBO29CQUNoRCxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDO2dCQUN6QixDQUFDO2dCQUNELElBQUksQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO29CQUNaLElBQUksVUFBVSxHQUFrQixJQUFJLENBQUM7b0JBQ3JDLElBQUksT0FBTyxHQUFRLEVBQUUsQ0FBQztvQkFDdEIsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUU7d0JBQ2xCLElBQUksQ0FBQyxDQUFDLElBQUksS0FBSyxFQUFFOzRCQUFFLE9BQU87d0JBQzFCLElBQUksQ0FBQyxDQUFDLElBQUksS0FBSyxVQUFVLEVBQUUsQ0FBQzs0QkFDeEIsSUFBSSxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUM7Z0NBQ1gsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsZUFBZSxFQUFFLENBQUMsQ0FBQzs0QkFDOUMsVUFBVSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUM7d0JBQ3hCLENBQUM7d0JBQ0QsSUFBSSxLQUFLLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQzt3QkFDcEIsSUFBSSxLQUFLLEdBQUcsQ0FBQzs0QkFBRSxLQUFLLElBQUksQ0FBQyxDQUFDOzZCQUNyQixJQUFJLEtBQUssR0FBRyxDQUFDOzRCQUFFLEtBQUssSUFBSSxDQUFDLENBQUM7NkJBQzFCLElBQUksS0FBSyxHQUFHLENBQUM7NEJBQUUsS0FBSyxJQUFJLENBQUMsQ0FBQzt3QkFDL0IsT0FBTyxDQUFDLElBQUksQ0FBQzs0QkFDVCxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUk7NEJBQ1osS0FBSyxFQUFFLENBQUMsQ0FBQyxLQUFLOzRCQUNkLFVBQVUsRUFBRSxDQUFDLENBQUMsVUFBVTs0QkFDeEIsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHOzRCQUNWLFlBQVksRUFBRSxLQUFLLEdBQUcsR0FBRzt5QkFDNUIsQ0FBQyxDQUFDO29CQUNQLENBQUMsQ0FBQyxDQUFDO29CQUNILENBQUMsQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO2dCQUN4QixDQUFDO2dCQUNELElBQUksQ0FBQyxDQUFDLGFBQWEsR0FBRyxDQUFDLEVBQUUsQ0FBQztvQkFDdEIsQ0FBQyxDQUFDLG1CQUFtQixHQUFHLGdDQUFnQyxDQUFDO29CQUN6RCxDQUFDLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztvQkFDbkIsSUFBSSxDQUFDLENBQUMsY0FBYyxFQUFFLENBQUM7d0JBQ25CLE1BQU0sWUFBWSxHQUFHLFVBQVUsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQzt3QkFDNUQsSUFBSSxZQUFZLEdBQUcsS0FBSyxFQUFFLENBQUM7NEJBQ3ZCLENBQUMsQ0FBQyxtQkFBbUI7Z0NBQ2pCLHFDQUFxQztvQ0FDckMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUM7b0NBQ3BDLEdBQUcsQ0FBQzt3QkFDWixDQUFDOzZCQUFNLENBQUM7NEJBQ0osQ0FBQyxDQUFDLG1CQUFtQjtnQ0FDakIsd0NBQXdDO29DQUN4QyxXQUFXLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQztvQ0FDcEMsR0FBRyxDQUFDOzRCQUNSLENBQUMsQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO3dCQUN4QixDQUFDO29CQUNMLENBQUM7Z0JBQ0wsQ0FBQztnQkFDRCxJQUFJLENBQUMsQ0FBQyxZQUFZLEVBQUUsQ0FBQztvQkFDakIsQ0FBQyxDQUFDLElBQUksR0FBRyxVQUFVLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUM7b0JBQzlDLE1BQU0sQ0FBQyxHQUFHLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO29CQUMxQyxDQUFDLENBQUMsVUFBVSxHQUFHLEtBQUssSUFBSSxDQUFDLENBQUMsSUFBSSxJQUFJLEtBQUssSUFBSSxDQUFDLENBQUM7b0JBQzdDLENBQUMsQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDLElBQUksR0FBRyxLQUFLLENBQUM7Z0JBQ2pDLENBQUM7WUFDTCxDQUFDO1lBQ0QsSUFBSSxXQUFXLEVBQUUsQ0FBQztnQkFDZCxNQUFNLElBQUksR0FBRyxXQUFXLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsVUFBVSxDQUFDLGdCQUFnQixDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7Z0JBQ3ZGLElBQUksS0FBSyxLQUFLLElBQUksRUFBRSxDQUFDO29CQUNqQixDQUFDLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztvQkFDZixLQUFLLEdBQUcsSUFBSSxDQUFDO2dCQUNqQixDQUFDO1lBQ0wsQ0FBQztpQkFBTSxJQUFJLGdCQUFnQixFQUFFLENBQUM7Z0JBQzFCLElBQUksS0FBSyxLQUFLLE1BQU0sRUFBRSxDQUFDO29CQUNuQixDQUFDLENBQUMsS0FBSzt3QkFDSCx5Q0FBeUMsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDO29CQUM1RCxLQUFLLEdBQUcsTUFBTSxDQUFDO2dCQUNuQixDQUFDO1lBQ0wsQ0FBQztpQkFBTSxJQUFJLGlCQUFpQixFQUFFLENBQUM7Z0JBQzNCLElBQUksS0FBSyxLQUFLLE1BQU0sRUFBRSxDQUFDO29CQUNuQixDQUFDLENBQUMsS0FBSyxHQUFHLDZDQUE2QyxDQUFDO29CQUN4RCxLQUFLLEdBQUcsTUFBTSxDQUFDO2dCQUNuQixDQUFDO1lBQ0wsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUdEOzs7T0FHRztJQUNILGNBQWMsQ0FBQyxJQUF5QjtRQUNwQyxJQUFJLENBQUMsU0FBUyxFQUFFLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNoQyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztRQUNyQixJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDdEIsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUNwRSxDQUFDO1FBQ0QsSUFBSSxDQUFDLGNBQWMsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN2QyxDQUFDO0lBR0Q7OztNQUdFO0lBQ0YsYUFBYSxDQUFDLFNBQWlCLENBQUM7UUFDNUIsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLEtBQUssR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDLGVBQWUsRUFBRSxFQUFFLENBQUM7WUFDckQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLEVBQUUsSUFBSSxDQUFDLFlBQVksRUFBRSxNQUFNLENBQUMsQ0FBQztRQUN2RSxDQUFDO0lBQ0wsQ0FBQztJQUdEOzs7TUFHRTtJQUNGLG9CQUFvQixDQUFDLElBQXlCO1FBQzFDLElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxJQUFJLElBQUksWUFBWSxDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7WUFBRSxPQUFPLFdBQVcsQ0FBQzthQUMzRixJQUFJLElBQUksQ0FBQyxTQUFTO1lBQUUsT0FBTyxZQUFZLENBQUM7YUFDeEMsSUFBSSxJQUFJLENBQUMsVUFBVSxLQUFLLENBQUM7WUFBRSxPQUFPLFlBQVksQ0FBQzthQUMvQyxJQUFJLElBQUksQ0FBQyxVQUFVLEdBQUcsQ0FBQztZQUFFLE9BQU8saUJBQWlCLENBQUM7UUFDdkQsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVEOzs7T0FHRztJQUNILG1CQUFtQixDQUFDLElBQXlCO1FBQ3pDLElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxJQUFJLElBQUksWUFBWSxDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7WUFBRSxPQUFPLFdBQVcsQ0FBQzthQUMzRixJQUFJLElBQUksQ0FBQyxTQUFTO1lBQUUsT0FBTyxpQkFBaUIsQ0FBQzthQUM3QyxJQUFJLElBQUksQ0FBQyxVQUFVLEtBQUssQ0FBQztZQUFFLE9BQU8sd0NBQXdDLENBQUM7YUFDM0UsSUFBSSxJQUFJLENBQUMsVUFBVSxHQUFHLENBQUM7WUFDeEIsT0FBTyw4Q0FBOEMsQ0FBQztRQUMxRCxPQUFPLEVBQUUsQ0FBQztJQUNkLENBQUM7SUFFRDs7O01BR0U7SUFDRixXQUFXLENBQUMsSUFBeUI7UUFDakMsUUFBUSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDakIsS0FBSyxZQUFZLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxPQUFPLE9BQU8sQ0FBQztZQUNuRCxLQUFLLFlBQVksQ0FBQyxRQUFRLENBQUM7WUFDM0IsS0FBSyxZQUFZLENBQUMsT0FBTyxDQUFDO1lBQzFCLEtBQUssWUFBWSxDQUFDLGVBQWUsQ0FBQyxDQUFDLE9BQU8sV0FBVyxDQUFDO1lBQ3RELE9BQU8sQ0FBQyxDQUFDLE9BQU8sU0FBUyxDQUFDO1FBQzlCLENBQUM7SUFDTCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILFVBQVUsQ0FBQyxJQUF5QixFQUFFLElBQWtCLElBQUk7UUFDeEQsQ0FBQyxFQUFFLGNBQWMsRUFBRSxDQUFDO1FBQ3BCLENBQUMsRUFBRSxlQUFlLEVBQUUsQ0FBQztRQUNyQixJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztJQUV0QyxDQUFDO0lBRUQ7Ozs7TUFJRTtJQUNGLGVBQWUsQ0FBQyxJQUF5QixFQUFFLElBQWtCLElBQUk7UUFDN0QsQ0FBQyxFQUFFLGNBQWMsRUFBRSxDQUFDO1FBQ3BCLENBQUMsRUFBRSxlQUFlLEVBQUUsQ0FBQztRQUNyQixJQUFJLENBQUMsU0FBUyxFQUFFLE1BQU0sQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFBO0lBR2pELENBQUM7SUFFRDs7OztNQUlFO0lBQ0YsT0FBTyxDQUFDLEtBQWMsRUFBRSxPQUFtQyxJQUFJO1FBQzNELElBQUksV0FBVyxHQUFhLEVBQUUsQ0FBQztRQUMvQixJQUFJLElBQUksRUFBRSxDQUFDO1lBQ1AsV0FBVyxHQUFHLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3BDLENBQUM7YUFBTSxJQUFJLElBQUksQ0FBQyxlQUFlLEVBQUUsRUFBRSxDQUFDO1lBQ2hDLFdBQVcsR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDOUQsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUMsRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsQ0FBQzthQUM5RSxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDWCxJQUFJLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztnQkFDWixJQUFJLE9BQU8sR0FBRyxDQUFDLENBQUM7Z0JBQ2hCLElBQUksSUFBSSxFQUFFLENBQUM7b0JBQ1AsSUFBSSxJQUFJLENBQUMsTUFBTSxLQUFLLEtBQUssRUFBRSxDQUFDO3dCQUN4QixJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQzt3QkFDcEIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFdBQVcsQ0FBQyxlQUFlLENBQUMsYUFBYSxFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQzt3QkFDbkcsT0FBTyxFQUFFLENBQUM7b0JBQ2QsQ0FBQztnQkFDTCxDQUFDO3FCQUFNLElBQUksSUFBSSxDQUFDLGVBQWUsRUFBRSxFQUFFLENBQUM7b0JBQ2hDLElBQUksQ0FBQyxTQUFTLEVBQUUsR0FBRyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRTt3QkFDN0IsSUFBSSxDQUFDLENBQUMsTUFBTSxLQUFLLEtBQUssRUFBRSxDQUFDOzRCQUNyQixDQUFDLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQzs0QkFDakIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFdBQVcsQ0FBQyxlQUFlLENBQUMsYUFBYSxFQUFFLEVBQUUsUUFBUSxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQzs0QkFDaEcsT0FBTyxFQUFFLENBQUM7d0JBQ2QsQ0FBQztvQkFDTCxDQUFDLENBQUMsQ0FBQTtnQkFDTixDQUFDO2dCQUVELG1CQUFtQjtnQkFDbkIsSUFBSSxPQUFPLEdBQUcsQ0FBQyxFQUFFLENBQUM7b0JBQ2QsSUFBSSxDQUFDLGNBQWMsQ0FBQyxpQkFBaUIsQ0FDakMsWUFBWSxDQUFDLHlCQUF5QixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztvQkFDeEUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxZQUFZLEVBQUUsQ0FBQztnQkFDdkMsQ0FBQztZQUNMLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNYLENBQUM7SUFFRDs7Ozs7R0FLRDtJQUNVLElBQUksQ0FBQyxVQUFrQixFQUFFLFFBQW1DLElBQUksRUFBRSxZQUFxQixLQUFLO1FBQ2pHLElBQUksQ0FBQyxTQUFTO1lBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxVQUFVLEVBQUUsS0FBSyxDQUFDLENBQUM7O1lBQ2hELE1BQU0sQ0FBQyxJQUFJLENBQUMsYUFBYSxHQUFHLFVBQVUsRUFBRSxRQUFRLENBQUMsQ0FBQztJQUMzRCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILFlBQVksQ0FBQyxVQUFrQixFQUFFLFFBQW1DLElBQUk7UUFDcEUsSUFBSSxDQUFDLFVBQVU7WUFBRSxPQUFPO1FBQ3hCLHFCQUFxQixDQUFDLFlBQVksQ0FDOUIsSUFBSSxDQUFDLGFBQWEsRUFDbEIsSUFBSSxDQUFDLGNBQWMsRUFDbkIsVUFBVSxFQUNWLEtBQUssSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksRUFDL0IsSUFBSSxFQUNKLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztJQUV0QyxDQUFDO0lBRUQsR0FBRztJQUNILGFBQWE7SUFDYixHQUFHO0lBRUg7Ozs7O09BS0c7SUFDSCxJQUFJLENBQUMsRUFBVSxFQUFFLFNBQWlCLENBQUMsRUFBRSxVQUFtQixjQUFjO1FBQ2xFLE9BQU8sQ0FBQyxPQUFPLENBQ1gsRUFBRSxFQUNGLElBQUksQ0FBQyxTQUFTLENBQUM7WUFDWCxTQUFTLEVBQUU7Z0JBQ1AsSUFBSSxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUUsU0FBUyxJQUFJLENBQUM7Z0JBQ3BDLEtBQUssRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLEtBQUssSUFBSSxDQUFDO2dCQUNoQyxJQUFJLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRSxRQUFRLElBQUksRUFBRTthQUN2QztZQUNELE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRTtZQUMzQixZQUFZLEVBQUUsSUFBSSxDQUFDLFlBQVk7WUFDL0IsTUFBTSxFQUFFLE1BQU07WUFDZCxJQUFJLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUN4RCxJQUFJLEVBQUUsSUFBSSxDQUFDLFFBQVE7Z0JBQ2YsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRTtnQkFDNUQsQ0FBQyxDQUFDLElBQUk7U0FDYixDQUFDLENBQUMsQ0FBQztJQUNaLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsT0FBTyxDQUFDLEVBQVUsRUFBRSxVQUFtQixjQUFjO1FBQ2pELE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDbEMsSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUNSLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDL0IsSUFBSSxJQUFJLEVBQUUsQ0FBQztnQkFDUCxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUM7Z0JBQ3RDLE1BQU0sT0FBTyxHQUFHLFdBQVcsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFDN0QsTUFBTSxPQUFPLEdBQUcsV0FBVyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2dCQUM3RCxNQUFNLE9BQU8sR0FBRyxXQUFXLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQzdELE1BQU0sSUFBSSxHQUFHLFdBQVcsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDdkQsTUFBTSxNQUFNLEdBQUcsV0FBVyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUMzRCxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7Z0JBQ3BDLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztnQkFDakMsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO2dCQUNqQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7Z0JBQzlCLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztnQkFDaEMsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO2dCQUMxQixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO2dCQUMvQixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDO2dCQUNyQyxVQUFVLENBQUMsR0FBRyxFQUFFO29CQUNaLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztvQkFDcEMsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO29CQUNwQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7b0JBQzlCLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztvQkFDbEMsSUFBSSxJQUFJLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQzt3QkFDN0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO3dCQUNqQyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7b0JBQ3RFLENBQUM7b0JBQ0QsSUFBSSxJQUFJLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQzt3QkFDbkMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUM7d0JBQy9DLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDO3dCQUM5QyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQztvQkFDakQsQ0FBQztvQkFDRCxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFDLENBQUM7b0JBQzlCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLENBQUMsZUFBZSxDQUFDLHVCQUF1QixFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQTtvQkFDN0YsSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLEVBQUUsQ0FBQztnQkFDeEMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBRVosQ0FBQztRQUNMLENBQUM7SUFDTCxDQUFDOzhHQTdnQlEsMEJBQTBCO2tHQUExQiwwQkFBMEIsaVhBTHpCLGFBQWE7OzJGQUtkLDBCQUEwQjtrQkFOdEMsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsYUFBYTtvQkFDdkIsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO29CQUMvQyxPQUFPLEVBQUUsQ0FBQyxzQkFBc0IsRUFBRSw0QkFBNEIsRUFBRSw4QkFBOEIsQ0FBQztpQkFDbEc7OEJBSTJCLFNBQVM7c0JBQWhDLFNBQVM7dUJBQUMsV0FBVztnQkFDRCxNQUFNO3NCQUExQixTQUFTO3VCQUFDLFFBQVE7Z0JBQ0ksUUFBUTtzQkFBOUIsU0FBUzt1QkFBQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQnJlYWtwb2ludE9ic2VydmVyIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2xheW91dCc7XHJcbmltcG9ydCB7XHJcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcclxuICAgIENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgQ29tcG9uZW50LCBPbkRlc3Ryb3ksIFZpZXdDaGlsZCwgaW5qZWN0LFxyXG4gICAgc2lnbmFsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE1hdFBhZ2luYXRvciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3BhZ2luYXRvcic7XHJcbmltcG9ydCB7IENsaXBwZXJEb2N1bWVudEluZm8sIENsaXBwZXJNZXNzYWdlcywgQ2xpcHBlck1vZGVsLCBDbGlwcGVyU2VhcmNoUGFyYW1zLCBDbGlwcGVyU2VhcmNoUmVzdWx0LCBDbGlwcGVyU29ydCwgQ2xpcHBlclV0aWxzIH0gZnJvbSAnQGFyc2VkaXppb25pL2Fycy11dGlscy9jbGlwcGVyLmNvbW1vbic7XHJcbmltcG9ydCB7XHJcbiAgICBEYXRlRm9ybWF0LFxyXG4gICAgTmFtZVZhbHVlSXRlbSwgU2NyZWVuU2VydmljZSwgU2VsZWN0YWJsZU1vZGVsLCBTeXN0ZW1VdGlscyxcclxuICAgIFRoZW1lU2VydmljZVxyXG59IGZyb20gJ0BhcnNlZGl6aW9uaS9hcnMtdXRpbHMvY29yZSc7XHJcbmltcG9ydCB7IHN0YXJ0T2ZEYXksIHN0YXJ0T2ZUb2RheSwgc3ViRGF5cyB9IGZyb20gJ2RhdGUtZm5zJztcclxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBDbGlwcGVyRG9jdW1lbnRzVXRpbHMgfSBmcm9tICcuLi8uLi9kb2N1bWVudHMnO1xyXG5pbXBvcnQgeyBDbGlwcGVyRG9jdW1lbnRNYW5hZ2VyIH0gZnJvbSAnLi4vZG9jdW1lbnQtbWFuYWdlci9kb2N1bWVudC1tYW5hZ2VyJztcclxuaW1wb3J0IHsgQ2xpcHBlclNlYXJjaENhbGVuZGFyQ29tcG9uZW50IH0gZnJvbSAnLi4vc2VhcmNoLWNhbGVuZGFyL3NlYXJjaC1jYWxlbmRhci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDbGlwcGVyU2VhcmNoRmFjZXRzQ29tcG9uZW50IH0gZnJvbSAnLi4vc2VhcmNoLWZhY2V0cy9zZWFyY2gtZmFjZXRzLmNvbXBvbmVudCc7XHJcblxyXG5cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgdGVtcGxhdGU6ICc8ZGl2PjwvZGl2PicsXHJcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgICBpbXBvcnRzOiBbQ2xpcHBlckRvY3VtZW50TWFuYWdlciwgQ2xpcHBlclNlYXJjaEZhY2V0c0NvbXBvbmVudCwgQ2xpcHBlclNlYXJjaENhbGVuZGFyQ29tcG9uZW50XSxcclxufSlcclxuZXhwb3J0IGNsYXNzIENsaXBwZXJTZWFyY2hSZXN1bHRNYW5hZ2VyXHJcbiAgICBleHRlbmRzIENsaXBwZXJEb2N1bWVudE1hbmFnZXJcclxuICAgIGltcGxlbWVudHMgT25EZXN0cm95IHtcclxuICAgIEBWaWV3Q2hpbGQoJ3BhZ2luYXRvcicpIHBhZ2luYXRvciE6IE1hdFBhZ2luYXRvcjtcclxuICAgIEBWaWV3Q2hpbGQoJ2ZhY2V0cycpIGZhY2V0cyE6IENsaXBwZXJTZWFyY2hGYWNldHNDb21wb25lbnQ7XHJcbiAgICBAVmlld0NoaWxkKCdjYWxlbmRhcicpIGNhbGVuZGFyITogQ2xpcHBlclNlYXJjaENhbGVuZGFyQ29tcG9uZW50O1xyXG5cclxuICAgIHByb3RlY3RlZCB1bnN1YnNjcmliZTogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcbiAgICBwcm90ZWN0ZWQgY2hhbmdlRGV0ZWN0b3IgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xyXG4gICAgcHJvdGVjdGVkIGJyZWFrcG9pbnRPYnNlcnZlciA9IGluamVjdChCcmVha3BvaW50T2JzZXJ2ZXIpO1xyXG4gICAgcHJpdmF0ZSB0aGVtZVNlcnZpY2UgPSBpbmplY3QoVGhlbWVTZXJ2aWNlKTtcclxuICAgIHB1YmxpYyBzY3JlZW5TZXJ2aWNlID0gaW5qZWN0KFNjcmVlblNlcnZpY2UpO1xyXG4gICAgcHVibGljIHNlbGVjdGlvbjogU2VsZWN0YWJsZU1vZGVsPENsaXBwZXJEb2N1bWVudEluZm8sIHN0cmluZz4gfCBudWxsID0gbnVsbDtcclxuICAgIHByb3RlY3RlZCBzbmFwc2hvdDogQ2xpcHBlclNlYXJjaFJlc3VsdCB8IG51bGwgPSBuZXcgQ2xpcHBlclNlYXJjaFJlc3VsdCgpO1xyXG4gICAgcHJvdGVjdGVkIGZpbHRlckJ1c3kgPSBzaWduYWw8Ym9vbGVhbj4oZmFsc2UpO1xyXG4gICAgcHJvdGVjdGVkIGZpbHRlclBhcmFtczogQ2xpcHBlclNlYXJjaFBhcmFtcyA9IG5ldyBDbGlwcGVyU2VhcmNoUGFyYW1zKCk7XHJcbiAgICBwcm90ZWN0ZWQgZmlsdGVyUGFuZUhhc0JhY2tkcm9wOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBwcm90ZWN0ZWQgZmlsdGVyUGFuZUNsb3NlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgcHJvdGVjdGVkIGZpbHRlclBhbmUySGFzQmFja2Ryb3A6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIHByb3RlY3RlZCBmaWx0ZXJQYW5lMkNsb3NlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgcHJvdGVjdGVkIHNvcnRPcHRpb25zOiBOYW1lVmFsdWVJdGVtPENsaXBwZXJTb3J0PltdID0gW107XHJcbiAgICBwcm90ZWN0ZWQgc29ydE1vZGU6IE5hbWVWYWx1ZUl0ZW08Q2xpcHBlclNvcnQ+IHwgbnVsbCA9IG51bGw7XHJcbiAgICBwcm90ZWN0ZWQgc2Nyb2xsZXJJZDogc3RyaW5nID0gJ3Njcm9sbGVyXycgKyBTeXN0ZW1VdGlscy5nZW5lcmF0ZVVVSUQoKTtcclxuICAgIHByb3RlY3RlZCByZXN0b3JhYmxlSWQ6IHN0cmluZyB8IG51bGwgPSBudWxsO1xyXG4gICAgcHJvdGVjdGVkIGhhc0ZhY2V0cyA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XHJcbiAgICBwcm90ZWN0ZWQgaGFzUmVnaW9ucyA9ICgpOiBib29sZWFuID0+IHtcclxuICAgICAgICByZXR1cm4gKHRoaXMuZmlsdGVyUGFyYW1zLnNlY3RvcnM/LmZpbHRlcihuID0+IG4udmFsdWUgPT09ICdMUicpLmxlbmd0aCA/PyAwKSA+IDA7XHJcbiAgICB9O1xyXG4gICAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICAgICAgdGhpcy51bnN1YnNjcmliZS5uZXh0KCk7XHJcbiAgICAgICAgdGhpcy51bnN1YnNjcmliZS5jb21wbGV0ZSgpO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvKipcclxuICAgICAqIFVwZGF0ZSBtZW51IGJ1dHRvbnMgdmlzaWJpbGl0eSB3aGVuIHRoZSBtZW51IGlzIGNsb3NlZFxyXG4gICAgICovXHJcbiAgICB1cGRhdGVNZW51QnV0dG9uc1Zpc2liaWxpdHkoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuc25hcHNob3QpIHtcclxuICAgICAgICAgICAgdGhpcy5zbmFwc2hvdC5pdGVtcz8uZm9yRWFjaChuID0+IHtcclxuICAgICAgICAgICAgICAgIG4uaXNNZW51T3BlbiA9IGZhbHNlO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBTY3JvbGwgb24gdG9wIG8gbGlzdCBhcmVhXHJcbiAgICAgKiBAcGFyYW0gdG9wOiB0aGUgdG9wIHBvc2l0aW9uXHJcbiAgICAgKi9cclxuICAgIHNjcm9sbCh0b3A6IG51bWJlciA9IDApIHtcclxuICAgICAgICBjb25zdCBlbGVtID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGhpcy5zY3JvbGxlcklkKTtcclxuICAgICAgICBpZiAoZWxlbSkge1xyXG4gICAgICAgICAgICBlbGVtLnNjcm9sbFRvKHsgdG9wOiB0b3AsIGxlZnQ6IDAsIGJlaGF2aW9yOiAnYXV0bycgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ2hlY2sgaWYgZXZlcnkgZWxlbWVudCBhcmUgc2VsZWN0ZWRcclxuICAgICAqL1xyXG4gICAgYWxsU2VsZWN0ZWQoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VsZWN0aW9uPy5jdXJyZW50Py5zZWxlY3RlZD8ubGVuZ3RoID09PSB0aGlzLnNuYXBzaG90Py5pdGVtcz8ubGVuZ3RoO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogTWFzdGVyIHNlbGVjdGlvbiB0b2dnbGVcclxuICAgICAqIEBwYXJhbSBzZWxlY3Q6IHRydWUgdG8gc2VsZWN0IGFsbCBlbGVtZW50cyBmYWxzZSB0byBkZXNlbGVjdCBhbGwgZWxlbWVudHNcclxuICAgICAqL1xyXG4gICAgc2VsZWN0QWxsKHNlbGVjdDogYm9vbGVhbiA9IHRydWUpIHtcclxuICAgICAgICBpZiAoc2VsZWN0KSB7XHJcbiAgICAgICAgICAgIHRoaXMuc25hcHNob3Q/Lml0ZW1zPy5mb3JFYWNoKG4gPT4gdGhpcy5zZWxlY3Rpb24/LnNlbGVjdChuLCBuLmRvY3VtZW50SWQpKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLnNuYXBzaG90Py5pdGVtcz8uZm9yRWFjaChuID0+IHRoaXMuc2VsZWN0aW9uPy5kZXNlbGVjdChuLCBuLmRvY3VtZW50SWQpKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAqIENoZWNrIGlmIHNlbGVjdGlvbnMgZXhpc3RzXHJcbiAgICAqIEByZXR1cm5zIHRydWUgaWYgYXQgbGVhc3Qgb25lIGVsZW1lbnQgaXMgc2VsZWN0ZWRcclxuICAgICovXHJcbiAgICBoYXNBbnlTZWxlY3Rpb24oKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuICh0aGlzLnNlbGVjdGlvbj8uYWxsPy5sZW5ndGggPz8gMCkgPiAwO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgKiBDaGVjayBpZiBvbmx5IG9uZSBlbGVtZW50IGlzIHNlbGVjdGVkXHJcbiAgICAqIEByZXR1cm5zIHRydWUgaWYgb25seSBvbmUgZWxlbWVudCBpcyBzZWxlY3RlZFxyXG4gICAgKi9cclxuICAgIGhhc1NpbmdsZVNlbGVjdGlvbigpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gKHRoaXMuc2VsZWN0aW9uPy5hbGw/Lmxlbmd0aCA/PyAwKSA9PT0gMTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICogR2V0IHRoZSBmaXJzdCBzZWxlY3RlZCBpdGVtIFxyXG4gICAgKiBAcmV0dXJucyB0aGUgc2VsZWN0ZWQgaXRlbSBvciBudWxsICAgIFxyXG4gICAgKi9cclxuICAgIGdldFNpbmdsZVNlbGVjdGlvbigpOiBDbGlwcGVyRG9jdW1lbnRJbmZvIHwgbnVsbCB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaGFzQW55U2VsZWN0aW9uKCkgPyB0aGlzLnNlbGVjdGlvbj8uYWxsWzBdIDogbnVsbDtcclxuICAgIH1cclxuXHJcblxyXG5cclxuICAgIC8qKlxyXG4gICAgKiBDbGVhciBzZWxlY3Rpb25cclxuICAgICovXHJcbiAgICBjbGVhclNlbGVjdGlvbigpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5zZWxlY3Rpb24/LmNsZWFyKCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICogUmV0dXJuIHRoZSBudW1iZXIgb2Ygc2VsZWN0ZWQgaXRlbXMgb3IgbnVsbFxyXG4gICAqIEByZXR1cm5zIFJldHVybiB0aGUgbnVtYmVyIG9mIHNlbGVjdGVkIGl0ZW1zXHJcbiAgICovXHJcbiAgICBjb3VudFNlbGVjdGlvbnMoKTogbnVtYmVyIHwgbnVsbCB7XHJcbiAgICAgICAgcmV0dXJuICh0aGlzLnNlbGVjdGlvbiAmJiB0aGlzLnNlbGVjdGlvbj8uYWxsPy5sZW5ndGggPiAwKSA/IHRoaXMuc2VsZWN0aW9uPy5hbGw/Lmxlbmd0aCA6IG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgKiBHZXQgdGhlIHNlbGVjdGVkIGlkXHJcbiAgKi9cclxuICAgIGdldFNlbGV0ZWN0SWQoKTogc3RyaW5nIHwgbnVsbCB7XHJcbiAgICAgICAgaWYgKHRoaXMuaGFzQW55U2VsZWN0aW9uKCkpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2VsZWN0aW9uPy5hbGxbMF0uZG9jdW1lbnRJZDtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAqIEdldCBhbGwgc2VsZWN0ZWQgaWRzXHJcbiAqL1xyXG4gICAgZ2V0U2VsZXRlY3RJZHMoKTogc3RyaW5nW10gfCBudWxsIHtcclxuICAgICAgICBpZiAoKHRoaXMuc2VsZWN0aW9uPy5hbGw/Lmxlbmd0aCA/PyAwKSA+IDEwMCkge1xyXG4gICAgICAgICAgICB0aGlzLmRpYWxvZ1NlcnZpY2UuZXJyb3IoJ0xhIHNlbGV6aW9uZSBub24gcHXDsiBjb250ZW5lcmUgcGnDuSBkaSAxMDAgZWxlbWVudGkuJyk7XHJcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgIH1cclxuICAgICAgICBsZXQgaWRzOiBzdHJpbmdbXSA9IFtdO1xyXG4gICAgICAgIGlmICh0aGlzLmhhc0FueVNlbGVjdGlvbigpKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uPy5hbGw/LmZvckVhY2gobiA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZHMucHVzaChuLmRvY3VtZW50SWQpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGlkcztcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEdldCBhbGwgc2VsZWN0ZWQgaWRzXHJcbiAgICAgKiBAcmV0dXJucyBhIHR1cGxlIGxpc3Qgd2l0aCBpZCBhbmQgZGF0YVxyXG4gICAgICovXHJcbiAgICBnZXRTZWxldGVjdElkc0FuZERhdGEoKTogW3N0cmluZywgQ2xpcHBlckRvY3VtZW50SW5mb11bXSB8IG51bGwge1xyXG4gICAgICAgIGlmICgodGhpcy5zZWxlY3Rpb24/LmFsbD8ubGVuZ3RoID8/IDApID4gMTAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZGlhbG9nU2VydmljZS5lcnJvcignTGEgc2VsZXppb25lIG5vbiBwdcOyIGNvbnRlbmVyZSBwacO5IGRpIDEwMCBlbGVtZW50aS4nKTtcclxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxldCBkYXRhOiBbc3RyaW5nLCBDbGlwcGVyRG9jdW1lbnRJbmZvXVtdID0gW107XHJcbiAgICAgICAgaWYgKHRoaXMuaGFzQW55U2VsZWN0aW9uKCkpIHtcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb24/LmFsbD8uZm9yRWFjaChuID0+IHtcclxuICAgICAgICAgICAgICAgIGRhdGEucHVzaChbbi5kb2N1bWVudElkLCBuXSk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gZGF0YTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBQcmVwYXJlIHJlc3VsdCBpdGVtc1xyXG4gICAgICogQHBhcmFtIGl0ZW1zIDogdGhlIGl0ZW1zIHRvIHByb2Nlc3NcclxuICAgICAqIEBwYXJhbSBwYXJhbXMgOiB0aGUgY3VycmVudCBzZWFyY2ggcGFyYW1zXHJcbiAgICAgKi9cclxuICAgIHByZXBhcmVSZXN1bHRJdGVtcyhpdGVtczogQ2xpcHBlckRvY3VtZW50SW5mb1tdLCBwYXJhbXM6IENsaXBwZXJTZWFyY2hQYXJhbXMpIHtcclxuICAgICAgICBjb25zdCB0b2RheSA9IHN0YXJ0T2ZUb2RheSgpO1xyXG4gICAgICAgIGNvbnN0IGdyb3VwQnlZZWFyID1cclxuICAgICAgICAgICAgIXBhcmFtcy5zb3J0TW9kZSB8fFxyXG4gICAgICAgICAgICBwYXJhbXMuc29ydE1vZGUgPT09IENsaXBwZXJTb3J0LkRhdGVBc2MgfHxcclxuICAgICAgICAgICAgcGFyYW1zLnNvcnRNb2RlID09PSBDbGlwcGVyU29ydC5EYXRlRGVzYyB8fFxyXG4gICAgICAgICAgICBwYXJhbXMuc29ydE1vZGUgPT09IENsaXBwZXJTb3J0LlNvdXJjZURhdGVBc2MgfHxcclxuICAgICAgICAgICAgcGFyYW1zLnNvcnRNb2RlID09PSBDbGlwcGVyU29ydC5Tb3VyY2VEYXRlRGVzYztcclxuICAgICAgICBjb25zdCBncm91cEJ5UmVsZXZhbmNlID0gcGFyYW1zLnNvcnRNb2RlID09PSBDbGlwcGVyU29ydC5SZWxldmFuY2U7XHJcbiAgICAgICAgY29uc3QgZ3JvdXBCeVBvcHVsYXJpdHkgPSBwYXJhbXMuc29ydE1vZGUgPT09IENsaXBwZXJTb3J0LlBvcHVsYXJpdHk7XHJcbiAgICAgICAgbGV0IGdyb3VwID0gJyc7XHJcbiAgICAgICAgaXRlbXM/LmZvckVhY2gobiA9PiB7XHJcbiAgICAgICAgICAgIG4uZG9jdW1lbnRJZCA9IG4uZG9jdW1lbnRJZCA/PyBuLmlkO1xyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGlvbj8udXBkYXRlQ3VycmVudChuLCBuLmRvY3VtZW50SWQpO1xyXG4gICAgICAgICAgICBpZiAobi5tb2RlbCA9PT0gQ2xpcHBlck1vZGVsLlF1ZXNpdGkpIHtcclxuICAgICAgICAgICAgICAgIG4uaW5mbyA9IFwiUXVlc2l0byBuwrAgXCIgKyBuLm51bWJlciArIFwiIGRlbCBcIiArIFN5c3RlbVV0aWxzLmZvcm1hdERhdGUobi5kYXRlLCBcImQgTU1NIHl5eXlcIik7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobi5tb2RlbCA9PT0gQ2xpcHBlck1vZGVsLlNjYWRlbnplIHx8XHJcbiAgICAgICAgICAgICAgICBuLm1vZGVsID09PSBDbGlwcGVyTW9kZWwuU2VnbmFsYXppb25pKSB7XHJcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKG4ubW9kZWwpIHtcclxuICAgICAgICAgICAgICAgICAgICBjYXNlIENsaXBwZXJNb2RlbC5TY2FkZW56ZTpcclxuICAgICAgICAgICAgICAgICAgICAgICAgbi5vcmlnaW5EZXNjcmlwdGlvbiA9ICdTY2FkZW56YSc7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgQ2xpcHBlck1vZGVsLlNlZ25hbGF6aW9uaTpcclxuICAgICAgICAgICAgICAgICAgICAgICAgbi5vcmlnaW5EZXNjcmlwdGlvbiA9ICdTZWduYWxhemlvbmUnO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmIChuLmV4cGlyaW5nSW5mbykge1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBwYXJ0cyA9IG4uZXhwaXJpbmdJbmZvLnNwbGl0KCd8Jyk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHBhcnRzLmxlbmd0aCA9PT0gMykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBuLmV4cGlyaW5nRGVzY3JpcHRpb24gPSBwYXJ0c1syXTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAobi5leHBpcmluZ0RhdGUpIHtcclxuICAgICAgICAgICAgICAgICAgICBuLmRhdGUgPSBzdGFydE9mRGF5KG5ldyBEYXRlKG4uZXhwaXJpbmdEYXRlKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZCA9IHN0YXJ0T2ZEYXkoc3ViRGF5cyhuLmRhdGUsIDE1KSk7XHJcbiAgICAgICAgICAgICAgICAgICAgbi5pc0V4cGlyaW5nID0gdG9kYXkgPD0gbi5kYXRlICYmIHRvZGF5ID49IGQ7XHJcbiAgICAgICAgICAgICAgICAgICAgbi5pc0V4cGlyZWQgPSBuLmRhdGUgPCB0b2RheTtcclxuXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoKG4ubW9kZWwgPT09IENsaXBwZXJNb2RlbC5BcnRpY29saSB8fFxyXG4gICAgICAgICAgICAgICAgICAgIG4ubW9kZWwgPT09IENsaXBwZXJNb2RlbC5OZXdzKSAmJlxyXG4gICAgICAgICAgICAgICAgICAgIG4udGFncykge1xyXG4gICAgICAgICAgICAgICAgICAgIG4uaW5mbyA9IG4udGFncy50b1VwcGVyQ2FzZSgpLnN1YnN0cmluZygxKS5yZXBsYWNlQWxsKFwiI1wiLCBcIiwgXCIpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYgKG4ubW9kZWwgIT09IENsaXBwZXJNb2RlbC5BZ2dpb3JuYW1lbnRvTm9ybWF0aXZvICYmXHJcbiAgICAgICAgICAgICAgICAgICAgbi5tb2RlbCAhPT0gQ2xpcHBlck1vZGVsLk5vcm1hdGl2YVZpZ2VudGUgJiZcclxuICAgICAgICAgICAgICAgICAgICBuLm1vZGVsICE9PSBDbGlwcGVyTW9kZWwuSnVyaXMgJiZcclxuICAgICAgICAgICAgICAgICAgICBuLmRhdGUpIHtcclxuICAgICAgICAgICAgICAgICAgICBuLmRhdGUgPSBzdGFydE9mRGF5KG5ldyBEYXRlKG4uZGF0ZSA/PyBuLnB1Ymxpc2hpbmdEYXRlKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZCA9IHN0YXJ0T2ZEYXkoc3ViRGF5cyhzdGFydE9mVG9kYXkoKSwgNykpXHJcbiAgICAgICAgICAgICAgICAgICAgbi5pc05ldyA9IG4uZGF0ZSA+IGQ7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAobi5hbmNob3JzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGFuY2hvclR5cGU6IG51bWJlciB8IG51bGwgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBhbmNob3JzOiBhbnkgPSBbXTtcclxuICAgICAgICAgICAgICAgICAgICBuLmFuY2hvcnMuZm9yRWFjaChhID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGEudHlwZSA9PT0gMjApIHJldHVybjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGEudHlwZSAhPT0gYW5jaG9yVHlwZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGEudHlwZSA+PSAzKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuY2hvcnMucHVzaCh7IHRleHQ6IGEudHlwZURlc2NyaXB0aW9uIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5jaG9yVHlwZSA9IGEudHlwZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgc2NvcmUgPSBhLnNjb3JlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2NvcmUgPiA3KSBzY29yZSAtPSA3O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChzY29yZSA+IDUpIHNjb3JlIC09IDU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHNjb3JlID4gMykgc2NvcmUgLT0gMztcclxuICAgICAgICAgICAgICAgICAgICAgICAgYW5jaG9ycy5wdXNoKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQ6IGEudGV4dCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBhLnRpdGxlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnRJZDogYS5kb2N1bWVudElkLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJpOiBhLnVyaSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlcnlSZWxldmFudDogc2NvcmUgPiAwLjZcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgbi5hbmNob3JzID0gYW5jaG9ycztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmIChuLnZhbGlkaXR5U3RhdGUgPiAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbi52YWxpZGl0eURlc2NyaXB0aW9uID0gJ0lsIGRvY3VtZW50byBub24gw6ggcGnDuSB2aWdlbnRlJztcclxuICAgICAgICAgICAgICAgICAgICBuLmlzRXhwaXJlZCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKG4udmFsaWRVbnRpbERhdGUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZXhwaXJpbmdEYXRlID0gc3RhcnRPZkRheShuZXcgRGF0ZShuLnZhbGlkVW50aWxEYXRlKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChleHBpcmluZ0RhdGUgPCB0b2RheSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbi52YWxpZGl0eURlc2NyaXB0aW9uID1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnSWwgZG9jdW1lbnRvIG5vbiDDqCBwacO5IHZpZ2VudGUgZGFsICcgK1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN5c3RlbVV0aWxzLmZvcm1hdERhdGUoZXhwaXJpbmdEYXRlKSArXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy4nO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbi52YWxpZGl0eURlc2NyaXB0aW9uID1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnSWwgZG9jdW1lbnRvIG5vbiBzYXLDoCBwacO5IHZpZ2VudGUgZGFsICcgK1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN5c3RlbVV0aWxzLmZvcm1hdERhdGUoZXhwaXJpbmdEYXRlKSArXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy4nO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbi5pc0V4cGlyZWQgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmIChuLmV4cGlyaW5nRGF0ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIG4uZGF0ZSA9IHN0YXJ0T2ZEYXkobmV3IERhdGUobi5leHBpcmluZ0RhdGUpKTtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBkID0gc3RhcnRPZkRheShzdWJEYXlzKG4uZGF0ZSwgMTUpKTtcclxuICAgICAgICAgICAgICAgICAgICBuLmlzRXhwaXJpbmcgPSB0b2RheSA8PSBuLmRhdGUgJiYgdG9kYXkgPj0gZDtcclxuICAgICAgICAgICAgICAgICAgICBuLmlzRXhwaXJlZCA9IG4uZGF0ZSA8IHRvZGF5O1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChncm91cEJ5WWVhcikge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgeWVhciA9IFN5c3RlbVV0aWxzLmZvcm1hdERhdGUobi5kYXRlLCBEYXRlRm9ybWF0LkxvbmdNb250aEFuZFllYXIpLnRvTG93ZXJDYXNlKCk7XHJcbiAgICAgICAgICAgICAgICBpZiAoZ3JvdXAgIT09IHllYXIpIHtcclxuICAgICAgICAgICAgICAgICAgICBuLmdyb3VwID0geWVhcjtcclxuICAgICAgICAgICAgICAgICAgICBncm91cCA9IHllYXI7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoZ3JvdXBCeVJlbGV2YW5jZSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKGdyb3VwICE9PSAnbm9uZScpIHtcclxuICAgICAgICAgICAgICAgICAgICBuLmdyb3VwID1cclxuICAgICAgICAgICAgICAgICAgICAgICAgJ0VsZW1lbnRpIHBpw7kgcmlsZXZhbnRpIHBlciBsYSByaWNlcmNhOiAnICsgcGFyYW1zLnRleHQ7XHJcbiAgICAgICAgICAgICAgICAgICAgZ3JvdXAgPSAnbm9uZSc7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoZ3JvdXBCeVBvcHVsYXJpdHkpIHtcclxuICAgICAgICAgICAgICAgIGlmIChncm91cCAhPT0gJ25vbmUnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbi5ncm91cCA9ICdFbGVtZW50aSBwacO5IHBvcG9sYXJpIGluIG9yZGluZSBkZWNyZXNjZW50ZSc7XHJcbiAgICAgICAgICAgICAgICAgICAgZ3JvdXAgPSAnbm9uZSc7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBQcmVwYXJlIHJlc3VsdHNcclxuICAgICAqIEBwYXJhbSBkYXRhIDogdGhlIHJlc3VsdCBsaXN0IHRvIHByZXBhcmVcclxuICAgICAqL1xyXG4gICAgcHJlcGFyZVJlc3VsdHMoZGF0YTogQ2xpcHBlclNlYXJjaFJlc3VsdCkge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0aW9uPy5jdXJyZW50LmNsZWFyKCk7XHJcbiAgICAgICAgdGhpcy5zbmFwc2hvdCA9IGRhdGE7XHJcbiAgICAgICAgaWYgKHRoaXMuc25hcHNob3QuaXRlbXMpIHtcclxuICAgICAgICAgICAgdGhpcy5wcmVwYXJlUmVzdWx0SXRlbXModGhpcy5zbmFwc2hvdC5pdGVtcywgdGhpcy5maWx0ZXJQYXJhbXMpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvKipcclxuICAgICogU2F2ZSBjdXJyZW50IGRvY3VtZW50IGxpc3Qgb3IganVzdCB0aGUgc2VsZWN0ZWQgZG9jdW1lbnRzIGFzIGEgY3N2XHJcbiAgICAqIEBwYXJhbSBmb3JtYXQ6IHRoZSBleHBvcnQgZm9ybWF0OiAxKSBsaXN0LCAyKSBkZWFkbGluZXNcclxuICAgICovXHJcbiAgICBleHBvcnRSZXN1bHRzKGZvcm1hdDogbnVtYmVyID0gMSkge1xyXG4gICAgICAgIGlmICh0aGlzLnNuYXBzaG90Py50b3RhbCA+IDAgfHwgdGhpcy5oYXNBbnlTZWxlY3Rpb24oKSkge1xyXG4gICAgICAgICAgICB0aGlzLmV4cG9ydEl0ZW1zKHRoaXMuZ2V0U2VsZXRlY3RJZHMoKSwgdGhpcy5maWx0ZXJQYXJhbXMsIGZvcm1hdCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvKipcclxuICAgICogUmV0dXJuIGl0ZW0gc3RhdGUgY3NzIGNsYXNzXHJcbiAgICAqIEBwYXJhbSBpdGVtIDogdGhlIGl0ZW0gdG8gZXZhbHVhdGVcclxuICAgICovXHJcbiAgICBnZXRJdGVtU3RhdGVDc3NDbGFzcyhpdGVtOiBDbGlwcGVyRG9jdW1lbnRJbmZvKTogc3RyaW5nIHwgbnVsbCB7XHJcbiAgICAgICAgaWYgKGl0ZW0uaXNSZWFkICE9PSB0cnVlICYmIENsaXBwZXJVdGlscy5pc0NsaXBwZXJNb2RlbFJlYWRhYmxlKGl0ZW0ubW9kZWwpKSByZXR1cm4gJ3VucmVhZC1iZyc7XHJcbiAgICAgICAgZWxzZSBpZiAoaXRlbS5pc0V4cGlyZWQpIHJldHVybiAnZXhwaXJlZC1iZyc7XHJcbiAgICAgICAgZWxzZSBpZiAoaXRlbS5wb3B1bGFyaXR5ID09PSAzKSByZXR1cm4gJ3BvcHVsYXItYmcnO1xyXG4gICAgICAgIGVsc2UgaWYgKGl0ZW0ucG9wdWxhcml0eSA+IDMpIHJldHVybiAndmVyeS1wb3B1bGFyLWJnJztcclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFJldHVybiB0aGUgaXRlbSBzdGF0ZSB0b29sdGlwIHRleHRcclxuICAgICAqIEBwYXJhbSBpdGVtIDogdGhlIGl0ZW0gdG8gZXZhbHVhdGVcclxuICAgICAqL1xyXG4gICAgZ2V0SXRlbVN0YXRlVG9vbHRpcChpdGVtOiBDbGlwcGVyRG9jdW1lbnRJbmZvKTogc3RyaW5nIHtcclxuICAgICAgICBpZiAoaXRlbS5pc1JlYWQgIT09IHRydWUgJiYgQ2xpcHBlclV0aWxzLmlzQ2xpcHBlck1vZGVsUmVhZGFibGUoaXRlbS5tb2RlbCkpIHJldHVybiAnTm9uIGxldHRvJztcclxuICAgICAgICBlbHNlIGlmIChpdGVtLmlzRXhwaXJlZCkgcmV0dXJuICdOb24gcGnDuSB2aWdlbnRlJztcclxuICAgICAgICBlbHNlIGlmIChpdGVtLnBvcHVsYXJpdHkgPT09IDMpIHJldHVybiAnRG9jdW1lbnRvIGNvbiBudW1lcm8gZGkgY2l0YXppb25pIGFsdG8nO1xyXG4gICAgICAgIGVsc2UgaWYgKGl0ZW0ucG9wdWxhcml0eSA+IDMpXHJcbiAgICAgICAgICAgIHJldHVybiAnRG9jdW1lbnRvIGNvbiBudW1lcm8gZGkgY2l0YXppb25pIG1vbHRvIGFsdG8nO1xyXG4gICAgICAgIHJldHVybiAnJztcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICogUmV0dXJuIHRoZSBpdGVtIGljb25cclxuICAgICogQHBhcmFtIGl0ZW0gOiB0aGUgaXRlbSB0byBldmFsdWF0ZVxyXG4gICAgKi9cclxuICAgIGdldEl0ZW1JY29uKGl0ZW06IENsaXBwZXJEb2N1bWVudEluZm8pOiBzdHJpbmcge1xyXG4gICAgICAgIHN3aXRjaCAoaXRlbS5tb2RlbCkge1xyXG4gICAgICAgICAgICBjYXNlIENsaXBwZXJNb2RlbC5Ob3JtYXRpdmFWaWdlbnRlOiByZXR1cm4gJ2dhdmVsJztcclxuICAgICAgICAgICAgY2FzZSBDbGlwcGVyTW9kZWwuQXJ0aWNvbGk6XHJcbiAgICAgICAgICAgIGNhc2UgQ2xpcHBlck1vZGVsLlF1ZXNpdGk6XHJcbiAgICAgICAgICAgIGNhc2UgQ2xpcHBlck1vZGVsLk1ldG9kaURpQW5hbGlzaTogcmV0dXJuICdleHRlbnNpb24nO1xyXG4gICAgICAgICAgICBkZWZhdWx0OiByZXR1cm4gJ3VwZGF0ZWQnO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFRvZ2dsZSB0aGUgcmVhZCBmbGFnXHJcbiAgICAgKiBAcGFyYW0gaXRlbSA6IHRoZSBpdGVtIHRvIHVwZGF0ZVxyXG4gICAgICogQHBhcmFuIGU6IHRoZSBvcHRpb25hbCBjbGljayBldmVudFxyXG4gICAgICovXHJcbiAgICB0b2dnbGVSZWFkKGl0ZW06IENsaXBwZXJEb2N1bWVudEluZm8sIGU6IEV2ZW50IHwgbnVsbCA9IG51bGwpIHtcclxuICAgICAgICBlPy5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgIGU/LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICAgIHRoaXMuc2V0UmVhZCghaXRlbT8uaXNSZWFkLCBpdGVtKTtcclxuXHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAqIFRvZ2dsZSB0aGUgc2VsZWN0aW9uIGZsYWdcclxuICAgICogQHBhcmFtIGl0ZW0gOiB0aGUgaXRlbSB0byB1cGRhdGVcclxuICAgICogQHBhcmFuIGU6IHRoZSBvcHRpb25hbCBjbGljayBldmVudFxyXG4gICAgKi9cclxuICAgIHRvZ2dsZVNlbGVjdGlvbihpdGVtOiBDbGlwcGVyRG9jdW1lbnRJbmZvLCBlOiBFdmVudCB8IG51bGwgPSBudWxsKSB7XHJcbiAgICAgICAgZT8ucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICBlPy5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgICAgICB0aGlzLnNlbGVjdGlvbj8udG9nZ2xlKGl0ZW0sIGl0ZW0uZG9jdW1lbnRJZClcclxuXHJcblxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgKiBTZXQgcmVhZCBmbGFnXHJcbiAgICAqIEBwYXJhbSB2YWx1ZTogdGhlIGZsYWcgdmFsdWVcclxuICAgICogQHBhcmFtIGl0ZW06IHRoZSBpdGVtIHRvIHNldCBvciBudWxsIHRvIHVzZSBjdXJyZW50IHNlbGVjdGlvblxyXG4gICAgKi9cclxuICAgIHNldFJlYWQodmFsdWU6IGJvb2xlYW4sIGl0ZW06IENsaXBwZXJEb2N1bWVudEluZm8gfCBudWxsID0gbnVsbCkge1xyXG4gICAgICAgIGxldCBkb2N1bWVudElkczogc3RyaW5nW10gPSBbXTtcclxuICAgICAgICBpZiAoaXRlbSkge1xyXG4gICAgICAgICAgICBkb2N1bWVudElkcyA9IFtpdGVtLmRvY3VtZW50SWRdO1xyXG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5oYXNBbnlTZWxlY3Rpb24oKSkge1xyXG4gICAgICAgICAgICBkb2N1bWVudElkcyA9IHRoaXMuc2VsZWN0aW9uPy5hbGw/Lm1hcChuID0+IG4uZG9jdW1lbnRJZCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0aGlzLmNsaXBwZXJTZXJ2aWNlLnVwZGF0ZVN0YXRlKHsgZG9jdW1lbnRJZHM6IGRvY3VtZW50SWRzLCBpc1JlYWQ6IHZhbHVlIH0pXHJcbiAgICAgICAgICAgIC5zdWJzY3JpYmUociA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAoci5zdWNjZXNzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGNoYW5nZWQgPSAwO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChpdGVtKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpdGVtLmlzUmVhZCAhPT0gdmFsdWUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0uaXNSZWFkID0gdmFsdWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmJyb2FkY2FzdFNlcnZpY2Uuc2VuZE1lc3NhZ2UoQ2xpcHBlck1lc3NhZ2VzLkRPQ1VNRU5UX1JFQUQsIHsgZG9jdW1lbnQ6IGl0ZW0sIHZhbHVlOiB2YWx1ZSB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5nZWQrKztcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5oYXNBbnlTZWxlY3Rpb24oKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGlvbj8uYWxsPy5mb3JFYWNoKG4gPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG4uaXNSZWFkICE9PSB2YWx1ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4uaXNSZWFkID0gdmFsdWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5icm9hZGNhc3RTZXJ2aWNlLnNlbmRNZXNzYWdlKENsaXBwZXJNZXNzYWdlcy5ET0NVTUVOVF9SRUFELCB7IGRvY3VtZW50OiBuLCB2YWx1ZTogdmFsdWUgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCsrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgLy8gVXBkYXRlIGRhc2hib2FyZFxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChjaGFuZ2VkID4gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNsaXBwZXJTZXJ2aWNlLnVwZGF0ZVVucmVhZEl0ZW1zKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2xpcHBlclV0aWxzLmdldENsaXBwZXJNb2R1bGVGcm9tTW9kZWwoaXRlbS5tb2RlbCksIHZhbHVlID8gLTEgOiAxKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gKiBPcGVuIGFuIGl0ZW1cclxuICogQHBhcmFtIGRvY3VtZW50SWQgOiB0aGUgZG9jdW1lbnQgaWRcclxuICogQHBhcmFtIHF1ZXJ5OiB0aGUgY3VycmVudCBxdWVyeSBvciBudWxsXHJcbiAqIEBwYXJhbSBuZXdXaW5kb3c6IHRydWUgaWYgdGhlIGRvY3VtZW50IG11c3QgYmUgb3BlbiBpbnRvIGEgbmV3IHdpbmRvd1xyXG4gKi9cclxuICAgIG92ZXJyaWRlIG9wZW4oZG9jdW1lbnRJZDogc3RyaW5nLCBxdWVyeTogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCA9IG51bGwsIG5ld1dpbmRvdzogYm9vbGVhbiA9IGZhbHNlKSB7XHJcbiAgICAgICAgaWYgKCFuZXdXaW5kb3cpIHRoaXMub3BlbkRvY3VtZW50KGRvY3VtZW50SWQsIHF1ZXJ5KTtcclxuICAgICAgICBlbHNlIHdpbmRvdy5vcGVuKCcvZG9jdW1lbnRvLycgKyBkb2N1bWVudElkLCAnX2JsYW5rJyk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBPcGVuIGEgZG9jdW1lbnRcclxuICAgICAqIEBwYXJhbSBkb2N1bWVudElkIDogdGhlIGRvY3VtZW50IGlkXHJcbiAgICAgKiBAcGFyYW0gcXVlcnk6IHRoZSBjdXJyZW50IHF1ZXJ5IG9yIG51bGxcclxuICAgICAqL1xyXG4gICAgb3BlbkRvY3VtZW50KGRvY3VtZW50SWQ6IHN0cmluZywgcXVlcnk6IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQgPSBudWxsKSB7XHJcbiAgICAgICAgaWYgKCFkb2N1bWVudElkKSByZXR1cm47XHJcbiAgICAgICAgQ2xpcHBlckRvY3VtZW50c1V0aWxzLm9wZW5Eb2N1bWVudChcclxuICAgICAgICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLFxyXG4gICAgICAgICAgICB0aGlzLmNsaXBwZXJTZXJ2aWNlLFxyXG4gICAgICAgICAgICBkb2N1bWVudElkLFxyXG4gICAgICAgICAgICBxdWVyeSA/PyB0aGlzLmZpbHRlclBhcmFtcy50ZXh0LFxyXG4gICAgICAgICAgICBudWxsLFxyXG4gICAgICAgICAgICB0aGlzLnRoZW1lU2VydmljZS5nZXRUaGVtZSgpKTtcclxuXHJcbiAgICB9XHJcblxyXG4gICAgLy8vXHJcbiAgICAvLyBSZXN0b3JhYmxlXHJcbiAgICAvLy9cclxuXHJcbiAgICAvKipcclxuICAgICAqIFNhdmUgcmVzdG9yYWJsZSBkYXRhXHJcbiAgICAgKiBAcGFyYW0gaWQgOiB0aGUgcmVzdG9yYWJsZSBpZFxyXG4gICAgICogQHBhcmFtIHNjcm9sbCA6IHRoZSBjdXJyZW50IHNjcm9sbCBwb3NpdGlvblxyXG4gICAgICogQHBhcmFtIHN0b3JhZ2UgOiB0aGUgc3RvcmFnZSB0byB1c2UuIERlZmF1bHQgc2kgc2Vzc2lvbiBzdG9yYWdlLlxyXG4gICAgICovXHJcbiAgICBzYXZlKGlkOiBzdHJpbmcsIHNjcm9sbDogbnVtYmVyID0gMCwgc3RvcmFnZTogU3RvcmFnZSA9IHNlc3Npb25TdG9yYWdlICkge1xyXG4gICAgICAgIHN0b3JhZ2Uuc2V0SXRlbShcclxuICAgICAgICAgICAgaWQsXHJcbiAgICAgICAgICAgIEpTT04uc3RyaW5naWZ5KHtcclxuICAgICAgICAgICAgICAgIHBhZ2luYXRvcjoge1xyXG4gICAgICAgICAgICAgICAgICAgIHBhZ2U6IHRoaXMucGFnaW5hdG9yPy5wYWdlSW5kZXggPz8gMCxcclxuICAgICAgICAgICAgICAgICAgICB0b3RhbDogdGhpcy5zbmFwc2hvdD8udG90YWwgPz8gMCxcclxuICAgICAgICAgICAgICAgICAgICBzaXplOiB0aGlzLnBhZ2luYXRvcj8ucGFnZVNpemUgPz8gMTVcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBmYWNldHM6IHRoaXMuZmFjZXRzPy5zYXZlKCksXHJcbiAgICAgICAgICAgICAgICBmaWx0ZXJQYXJhbXM6IHRoaXMuZmlsdGVyUGFyYW1zLFxyXG4gICAgICAgICAgICAgICAgc2Nyb2xsOiBzY3JvbGwsXHJcbiAgICAgICAgICAgICAgICBzb3J0OiB7IG1vZGU6IHRoaXMuc29ydE1vZGUsIG9wdGlvbnM6IHRoaXMuc29ydE9wdGlvbnMgfSxcclxuICAgICAgICAgICAgICAgIGRhdGE6IHRoaXMuc25hcHNob3RcclxuICAgICAgICAgICAgICAgICAgICA/IHsgaXRlbXM6IHRoaXMuc25hcHNob3QuaXRlbXMsIHRvdGFsOiB0aGlzLnNuYXBzaG90LnRvdGFsIH1cclxuICAgICAgICAgICAgICAgICAgICA6IG51bGxcclxuICAgICAgICAgICAgfSkpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmVzdG9yZSBkYXRhXHJcbiAgICAgKiBAcGFyYW0gaWQgOiB0aGUgcmVzdG9yYWJsZSBpZFxyXG4gICAgICogQHBhcmFtIHN0b3JhZ2UgOiB0aGUgc3RvcmFnZSB0byB1c2UuIERlZmF1bHQgc2kgc2Vzc2lvbiBzdG9yYWdlLlxyXG4gICAgICovXHJcbiAgICByZXN0b3JlKGlkOiBzdHJpbmcsIHN0b3JhZ2U6IFN0b3JhZ2UgPSBzZXNzaW9uU3RvcmFnZSkge1xyXG4gICAgICAgIGNvbnN0IHZhbHVlID0gc3RvcmFnZS5nZXRJdGVtKGlkKTtcclxuICAgICAgICBpZiAodmFsdWUpIHtcclxuICAgICAgICAgICAgY29uc3QgZGF0YSA9IEpTT04ucGFyc2UodmFsdWUpO1xyXG4gICAgICAgICAgICBpZiAoZGF0YSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5maWx0ZXJQYXJhbXMgPSBkYXRhLmZpbHRlclBhcmFtcztcclxuICAgICAgICAgICAgICAgIGNvbnN0IG1vZHVsZXMgPSBTeXN0ZW1VdGlscy5jbG9uZSh0aGlzLmZpbHRlclBhcmFtcy5tb2R1bGVzKTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHNlY3RvcnMgPSBTeXN0ZW1VdGlscy5jbG9uZSh0aGlzLmZpbHRlclBhcmFtcy5zZWN0b3JzKTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGF1dGhvcnMgPSBTeXN0ZW1VdGlscy5jbG9uZSh0aGlzLmZpbHRlclBhcmFtcy5hdXRob3JzKTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHRhZ3MgPSBTeXN0ZW1VdGlscy5jbG9uZSh0aGlzLmZpbHRlclBhcmFtcy50YWdzKTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHRvcGljcyA9IFN5c3RlbVV0aWxzLmNsb25lKHRoaXMuZmlsdGVyUGFyYW1zLnRvcGljcyk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmZpbHRlclBhcmFtcy5tb2R1bGVzID0gbW9kdWxlcztcclxuICAgICAgICAgICAgICAgIHRoaXMuZmlsdGVyUGFyYW1zLnNlY3RvcnMgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5maWx0ZXJQYXJhbXMuYXV0aG9ycyA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmZpbHRlclBhcmFtcy50YWdzID0gbnVsbDtcclxuICAgICAgICAgICAgICAgIHRoaXMuZmlsdGVyUGFyYW1zLnRvcGljcyA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNuYXBzaG90ID0gZGF0YS5kYXRhO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zb3J0TW9kZSA9IGRhdGEuc29ydC5tb2RlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zb3J0T3B0aW9ucyA9IGRhdGEuc29ydC5vcHRpb25zO1xyXG4gICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5maWx0ZXJQYXJhbXMuc2VjdG9ycyA9IHNlY3RvcnM7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5maWx0ZXJQYXJhbXMuYXV0aG9ycyA9IGF1dGhvcnM7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5maWx0ZXJQYXJhbXMudGFncyA9IHRhZ3M7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5maWx0ZXJQYXJhbXMudG9waWNzID0gdG9waWNzO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmZhY2V0cyAmJiBkYXRhLmZhY2V0cykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZhY2V0cy5yZXN0b3JlKGRhdGEuZmFjZXRzKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5oYXNGYWNldHMuc2V0KGRhdGEuZmFjZXRzLmhhc0ZhY2V0cyA9PT0gdHJ1ZSA/IHRydWUgOiBmYWxzZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnBhZ2luYXRvciAmJiBkYXRhLnBhZ2luYXRvcikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnBhZ2luYXRvci5wYWdlSW5kZXggPSBkYXRhLnBhZ2luYXRvci5wYWdlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnBhZ2luYXRvci5wYWdlU2l6ZSA9IGRhdGEucGFnaW5hdG9yLnNpemU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucGFnaW5hdG9yLmxlbmd0aCA9IGRhdGEucGFnaW5hdG9yLnRvdGFsO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNjcm9sbChkYXRhLnNjcm9sbCA/PyAwKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmJyb2FkY2FzdFNlcnZpY2Uuc2VuZE1lc3NhZ2UoQ2xpcHBlck1lc3NhZ2VzLkNPTU1BTkRfU0VBUkNIX1JFU1RPUkVELCBkYXRhLmZpbHRlclBhcmFtcylcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgICAgIH0sIDc1MCk7XHJcblxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbiJdfQ==
528
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLXJlc3VsdC1tYW5hZ2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJzLXV0aWxzL2NsaXBwZXIudWkvdWkvc2VhcmNoLXJlc3VsdC1tYW5hZ2VyL3NlYXJjaC1yZXN1bHQtbWFuYWdlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN6RCxPQUFPLEVBQ0gsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQWEsU0FBUyxFQUFFLE1BQU0sRUFDdkMsTUFBTSxFQUNULE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBdUIsZUFBZSxFQUFFLFlBQVksRUFBRSxtQkFBbUIsRUFBRSxtQkFBbUIsRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDaEwsT0FBTyxFQUNILFVBQVUsRUFDSyxhQUFhLEVBQW1CLFdBQVcsRUFDMUQsWUFBWSxFQUNmLE1BQU0sNkJBQTZCLENBQUM7QUFDckMsT0FBTyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsT0FBTyxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQzdELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDeEQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDOUUsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sOENBQThDLENBQUM7QUFDOUYsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sMENBQTBDLENBQUM7O0FBVXhGLE1BQU0sT0FBTywwQkFDVCxTQUFRLHNCQUFzQjtJQVBsQzs7UUFhYyxnQkFBVyxHQUFrQixJQUFJLE9BQU8sRUFBUSxDQUFDO1FBQ2pELG1CQUFjLEdBQUcsTUFBTSxDQUFD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QkFDL0MsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUM7d0JBQzlDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDO29CQUNqRCxDQUFDO29CQUNELElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUMsQ0FBQztvQkFDOUIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFdBQVcsQ0FBQyxlQUFlLENBQUMsdUJBQXVCLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFBO29CQUM3RixJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsRUFBRSxDQUFDO2dCQUN4QyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFFWixDQUFDO1FBQ0wsQ0FBQztJQUNMLENBQUM7OEdBN2dCUSwwQkFBMEI7a0dBQTFCLDBCQUEwQixpWEFMekIsYUFBYTs7MkZBS2QsMEJBQTBCO2tCQU50QyxTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSxhQUFhO29CQUN2QixVQUFVLEVBQUUsSUFBSTtvQkFDaEIsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07b0JBQy9DLE9BQU8sRUFBRSxDQUFDLHNCQUFzQixFQUFFLDRCQUE0QixFQUFFLDhCQUE4QixDQUFDO2lCQUNsRzs4QkFJMkIsU0FBUztzQkFBaEMsU0FBUzt1QkFBQyxXQUFXO2dCQUNELE1BQU07c0JBQTFCLFNBQVM7dUJBQUMsUUFBUTtnQkFDSSxRQUFRO3NCQUE5QixTQUFTO3VCQUFDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCcmVha3BvaW50T2JzZXJ2ZXIgfSBmcm9tICdAYW5ndWxhci9jZGsvbGF5b3V0JztcclxuaW1wb3J0IHtcclxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBDb21wb25lbnQsIE9uRGVzdHJveSwgVmlld0NoaWxkLCBpbmplY3QsXHJcbiAgICBzaWduYWxcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTWF0UGFnaW5hdG9yIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcGFnaW5hdG9yJztcclxuaW1wb3J0IHsgQ2xpcHBlckRvY3VtZW50SW5mbywgQ2xpcHBlck1lc3NhZ2VzLCBDbGlwcGVyTW9kZWwsIENsaXBwZXJTZWFyY2hQYXJhbXMsIENsaXBwZXJTZWFyY2hSZXN1bHQsIENsaXBwZXJTb3J0LCBDbGlwcGVyVXRpbHMgfSBmcm9tICdAYXJzZWRpemlvbmkvYXJzLXV0aWxzL2NsaXBwZXIuY29tbW9uJztcclxuaW1wb3J0IHtcclxuICAgIERhdGVGb3JtYXQsXHJcbiAgICBOYW1lVmFsdWVJdGVtLCBTY3JlZW5TZXJ2aWNlLCBTZWxlY3RhYmxlTW9kZWwsIFN5c3RlbVV0aWxzLFxyXG4gICAgVGhlbWVTZXJ2aWNlXHJcbn0gZnJvbSAnQGFyc2VkaXppb25pL2Fycy11dGlscy9jb3JlJztcclxuaW1wb3J0IHsgc3RhcnRPZkRheSwgc3RhcnRPZlRvZGF5LCBzdWJEYXlzIH0gZnJvbSAnZGF0ZS1mbnMnO1xyXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IENsaXBwZXJEb2N1bWVudHNVdGlscyB9IGZyb20gJy4uLy4uL2RvY3VtZW50cyc7XHJcbmltcG9ydCB7IENsaXBwZXJEb2N1bWVudE1hbmFnZXIgfSBmcm9tICcuLi9kb2N1bWVudC1tYW5hZ2VyL2RvY3VtZW50LW1hbmFnZXInO1xyXG5pbXBvcnQgeyBDbGlwcGVyU2VhcmNoQ2FsZW5kYXJDb21wb25lbnQgfSBmcm9tICcuLi9zZWFyY2gtY2FsZW5kYXIvc2VhcmNoLWNhbGVuZGFyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IENsaXBwZXJTZWFyY2hGYWNldHNDb21wb25lbnQgfSBmcm9tICcuLi9zZWFyY2gtZmFjZXRzL3NlYXJjaC1mYWNldHMuY29tcG9uZW50JztcclxuXHJcblxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICB0ZW1wbGF0ZTogJzxkaXY+PC9kaXY+JyxcclxuICAgIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxuICAgIGltcG9ydHM6IFtDbGlwcGVyRG9jdW1lbnRNYW5hZ2VyLCBDbGlwcGVyU2VhcmNoRmFjZXRzQ29tcG9uZW50LCBDbGlwcGVyU2VhcmNoQ2FsZW5kYXJDb21wb25lbnRdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ2xpcHBlclNlYXJjaFJlc3VsdE1hbmFnZXJcclxuICAgIGV4dGVuZHMgQ2xpcHBlckRvY3VtZW50TWFuYWdlclxyXG4gICAgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xyXG4gICAgQFZpZXdDaGlsZCgncGFnaW5hdG9yJykgcGFnaW5hdG9yITogTWF0UGFnaW5hdG9yO1xyXG4gICAgQFZpZXdDaGlsZCgnZmFjZXRzJykgZmFjZXRzITogQ2xpcHBlclNlYXJjaEZhY2V0c0NvbXBvbmVudDtcclxuICAgIEBWaWV3Q2hpbGQoJ2NhbGVuZGFyJykgY2FsZW5kYXIhOiBDbGlwcGVyU2VhcmNoQ2FsZW5kYXJDb21wb25lbnQ7XHJcblxyXG4gICAgcHJvdGVjdGVkIHVuc3Vic2NyaWJlOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuICAgIHByb3RlY3RlZCBjaGFuZ2VEZXRlY3RvciA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XHJcbiAgICBwcm90ZWN0ZWQgYnJlYWtwb2ludE9ic2VydmVyID0gaW5qZWN0KEJyZWFrcG9pbnRPYnNlcnZlcik7XHJcbiAgICBwcml2YXRlIHRoZW1lU2VydmljZSA9IGluamVjdChUaGVtZVNlcnZpY2UpO1xyXG4gICAgcHVibGljIHNjcmVlblNlcnZpY2UgPSBpbmplY3QoU2NyZWVuU2VydmljZSk7XHJcbiAgICBwdWJsaWMgc2VsZWN0aW9uOiBTZWxlY3RhYmxlTW9kZWw8Q2xpcHBlckRvY3VtZW50SW5mbywgc3RyaW5nPiB8IG51bGwgPSBudWxsO1xyXG4gICAgcHJvdGVjdGVkIHNuYXBzaG90OiBDbGlwcGVyU2VhcmNoUmVzdWx0IHwgbnVsbCA9IG5ldyBDbGlwcGVyU2VhcmNoUmVzdWx0KCk7XHJcbiAgICBwcm90ZWN0ZWQgZmlsdGVyQnVzeSA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XHJcbiAgICBwcm90ZWN0ZWQgZmlsdGVyUGFyYW1zOiBDbGlwcGVyU2VhcmNoUGFyYW1zID0gbmV3IENsaXBwZXJTZWFyY2hQYXJhbXMoKTtcclxuICAgIHByb3RlY3RlZCBmaWx0ZXJQYW5lSGFzQmFja2Ryb3A6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIHByb3RlY3RlZCBmaWx0ZXJQYW5lQ2xvc2VkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBwcm90ZWN0ZWQgZmlsdGVyUGFuZTJIYXNCYWNrZHJvcDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgcHJvdGVjdGVkIGZpbHRlclBhbmUyQ2xvc2VkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBwcm90ZWN0ZWQgc29ydE9wdGlvbnM6IE5hbWVWYWx1ZUl0ZW08Q2xpcHBlclNvcnQ+W10gPSBbXTtcclxuICAgIHByb3RlY3RlZCBzb3J0TW9kZTogTmFtZVZhbHVlSXRlbTxDbGlwcGVyU29ydD4gfCBudWxsID0gbnVsbDtcclxuICAgIHByb3RlY3RlZCBzY3JvbGxlcklkOiBzdHJpbmcgPSAnc2Nyb2xsZXJfJyArIFN5c3RlbVV0aWxzLmdlbmVyYXRlVVVJRCgpO1xyXG4gICAgcHJvdGVjdGVkIHJlc3RvcmFibGVJZDogc3RyaW5nIHwgbnVsbCA9IG51bGw7XHJcbiAgICBwcm90ZWN0ZWQgaGFzRmFjZXRzID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcclxuICAgIHByb3RlY3RlZCBoYXNSZWdpb25zID0gKCk6IGJvb2xlYW4gPT4ge1xyXG4gICAgICAgIHJldHVybiAodGhpcy5maWx0ZXJQYXJhbXMuc2VjdG9ycz8uZmlsdGVyKG4gPT4gbi52YWx1ZSA9PT0gJ0xSJykubGVuZ3RoID8/IDApID4gMDtcclxuICAgIH07XHJcbiAgICBuZ09uRGVzdHJveSgpIHtcclxuICAgICAgICB0aGlzLnVuc3Vic2NyaWJlLm5leHQoKTtcclxuICAgICAgICB0aGlzLnVuc3Vic2NyaWJlLmNvbXBsZXRlKCk7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVXBkYXRlIG1lbnUgYnV0dG9ucyB2aXNpYmlsaXR5IHdoZW4gdGhlIG1lbnUgaXMgY2xvc2VkXHJcbiAgICAgKi9cclxuICAgIHVwZGF0ZU1lbnVCdXR0b25zVmlzaWJpbGl0eSgpIHtcclxuICAgICAgICBpZiAodGhpcy5zbmFwc2hvdCkge1xyXG4gICAgICAgICAgICB0aGlzLnNuYXBzaG90Lml0ZW1zPy5mb3JFYWNoKG4gPT4ge1xyXG4gICAgICAgICAgICAgICAgbi5pc01lbnVPcGVuID0gZmFsc2U7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFNjcm9sbCBvbiB0b3AgbyBsaXN0IGFyZWFcclxuICAgICAqIEBwYXJhbSB0b3A6IHRoZSB0b3AgcG9zaXRpb25cclxuICAgICAqL1xyXG4gICAgc2Nyb2xsKHRvcDogbnVtYmVyID0gMCkge1xyXG4gICAgICAgIGNvbnN0IGVsZW0gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0aGlzLnNjcm9sbGVySWQpO1xyXG4gICAgICAgIGlmIChlbGVtKSB7XHJcbiAgICAgICAgICAgIGVsZW0uc2Nyb2xsVG8oeyB0b3A6IHRvcCwgbGVmdDogMCwgYmVoYXZpb3I6ICdhdXRvJyB9KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDaGVjayBpZiBldmVyeSBlbGVtZW50IGFyZSBzZWxlY3RlZFxyXG4gICAgICovXHJcbiAgICBhbGxTZWxlY3RlZCgpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5zZWxlY3Rpb24/LmN1cnJlbnQ/LnNlbGVjdGVkPy5sZW5ndGggPT09IHRoaXMuc25hcHNob3Q/Lml0ZW1zPy5sZW5ndGg7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBNYXN0ZXIgc2VsZWN0aW9uIHRvZ2dsZVxyXG4gICAgICogQHBhcmFtIHNlbGVjdDogdHJ1ZSB0byBzZWxlY3QgYWxsIGVsZW1lbnRzIGZhbHNlIHRvIGRlc2VsZWN0IGFsbCBlbGVtZW50c1xyXG4gICAgICovXHJcbiAgICBzZWxlY3RBbGwoc2VsZWN0OiBib29sZWFuID0gdHJ1ZSkge1xyXG4gICAgICAgIGlmIChzZWxlY3QpIHtcclxuICAgICAgICAgICAgdGhpcy5zbmFwc2hvdD8uaXRlbXM/LmZvckVhY2gobiA9PiB0aGlzLnNlbGVjdGlvbj8uc2VsZWN0KG4sIG4uZG9jdW1lbnRJZCkpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuc25hcHNob3Q/Lml0ZW1zPy5mb3JFYWNoKG4gPT4gdGhpcy5zZWxlY3Rpb24/LmRlc2VsZWN0KG4sIG4uZG9jdW1lbnRJZCkpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICogQ2hlY2sgaWYgc2VsZWN0aW9ucyBleGlzdHNcclxuICAgICogQHJldHVybnMgdHJ1ZSBpZiBhdCBsZWFzdCBvbmUgZWxlbWVudCBpcyBzZWxlY3RlZFxyXG4gICAgKi9cclxuICAgIGhhc0FueVNlbGVjdGlvbigpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gKHRoaXMuc2VsZWN0aW9uPy5hbGw/Lmxlbmd0aCA/PyAwKSA+IDA7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAqIENoZWNrIGlmIG9ubHkgb25lIGVsZW1lbnQgaXMgc2VsZWN0ZWRcclxuICAgICogQHJldHVybnMgdHJ1ZSBpZiBvbmx5IG9uZSBlbGVtZW50IGlzIHNlbGVjdGVkXHJcbiAgICAqL1xyXG4gICAgaGFzU2luZ2xlU2VsZWN0aW9uKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiAodGhpcy5zZWxlY3Rpb24/LmFsbD8ubGVuZ3RoID8/IDApID09PSAxO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgKiBHZXQgdGhlIGZpcnN0IHNlbGVjdGVkIGl0ZW0gXHJcbiAgICAqIEByZXR1cm5zIHRoZSBzZWxlY3RlZCBpdGVtIG9yIG51bGwgICAgXHJcbiAgICAqL1xyXG4gICAgZ2V0U2luZ2xlU2VsZWN0aW9uKCk6IENsaXBwZXJEb2N1bWVudEluZm8gfCBudWxsIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5oYXNBbnlTZWxlY3Rpb24oKSA/IHRoaXMuc2VsZWN0aW9uPy5hbGxbMF0gOiBudWxsO1xyXG4gICAgfVxyXG5cclxuXHJcblxyXG4gICAgLyoqXHJcbiAgICAqIENsZWFyIHNlbGVjdGlvblxyXG4gICAgKi9cclxuICAgIGNsZWFyU2VsZWN0aW9uKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnNlbGVjdGlvbj8uY2xlYXIoKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgKiBSZXR1cm4gdGhlIG51bWJlciBvZiBzZWxlY3RlZCBpdGVtcyBvciBudWxsXHJcbiAgICogQHJldHVybnMgUmV0dXJuIHRoZSBudW1iZXIgb2Ygc2VsZWN0ZWQgaXRlbXNcclxuICAgKi9cclxuICAgIGNvdW50U2VsZWN0aW9ucygpOiBudW1iZXIgfCBudWxsIHtcclxuICAgICAgICByZXR1cm4gKHRoaXMuc2VsZWN0aW9uICYmIHRoaXMuc2VsZWN0aW9uPy5hbGw/Lmxlbmd0aCA+IDApID8gdGhpcy5zZWxlY3Rpb24/LmFsbD8ubGVuZ3RoIDogbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAqIEdldCB0aGUgc2VsZWN0ZWQgaWRcclxuICAqL1xyXG4gICAgZ2V0U2VsZXRlY3RJZCgpOiBzdHJpbmcgfCBudWxsIHtcclxuICAgICAgICBpZiAodGhpcy5oYXNBbnlTZWxlY3Rpb24oKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5zZWxlY3Rpb24/LmFsbFswXS5kb2N1bWVudElkO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICogR2V0IGFsbCBzZWxlY3RlZCBpZHNcclxuICovXHJcbiAgICBnZXRTZWxldGVjdElkcygpOiBzdHJpbmdbXSB8IG51bGwge1xyXG4gICAgICAgIGlmICgodGhpcy5zZWxlY3Rpb24/LmFsbD8ubGVuZ3RoID8/IDApID4gMTAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZGlhbG9nU2VydmljZS5lcnJvcignTGEgc2VsZXppb25lIG5vbiBwdcOyIGNvbnRlbmVyZSBwacO5IGRpIDEwMCBlbGVtZW50aS4nKTtcclxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxldCBpZHM6IHN0cmluZ1tdID0gW107XHJcbiAgICAgICAgaWYgKHRoaXMuaGFzQW55U2VsZWN0aW9uKCkpIHtcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb24/LmFsbD8uZm9yRWFjaChuID0+IHtcclxuICAgICAgICAgICAgICAgIGlkcy5wdXNoKG4uZG9jdW1lbnRJZCk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gaWRzO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogR2V0IGFsbCBzZWxlY3RlZCBpZHNcclxuICAgICAqIEByZXR1cm5zIGEgdHVwbGUgbGlzdCB3aXRoIGlkIGFuZCBkYXRhXHJcbiAgICAgKi9cclxuICAgIGdldFNlbGV0ZWN0SWRzQW5kRGF0YSgpOiBbc3RyaW5nLCBDbGlwcGVyRG9jdW1lbnRJbmZvXVtdIHwgbnVsbCB7XHJcbiAgICAgICAgaWYgKCh0aGlzLnNlbGVjdGlvbj8uYWxsPy5sZW5ndGggPz8gMCkgPiAxMDApIHtcclxuICAgICAgICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLmVycm9yKCdMYSBzZWxlemlvbmUgbm9uIHB1w7IgY29udGVuZXJlIHBpw7kgZGkgMTAwIGVsZW1lbnRpLicpO1xyXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICAgICAgbGV0IGRhdGE6IFtzdHJpbmcsIENsaXBwZXJEb2N1bWVudEluZm9dW10gPSBbXTtcclxuICAgICAgICBpZiAodGhpcy5oYXNBbnlTZWxlY3Rpb24oKSkge1xyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGlvbj8uYWxsPy5mb3JFYWNoKG4gPT4ge1xyXG4gICAgICAgICAgICAgICAgZGF0YS5wdXNoKFtuLmRvY3VtZW50SWQsIG5dKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBkYXRhO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvKipcclxuICAgICAqIFByZXBhcmUgcmVzdWx0IGl0ZW1zXHJcbiAgICAgKiBAcGFyYW0gaXRlbXMgOiB0aGUgaXRlbXMgdG8gcHJvY2Vzc1xyXG4gICAgICogQHBhcmFtIHBhcmFtcyA6IHRoZSBjdXJyZW50IHNlYXJjaCBwYXJhbXNcclxuICAgICAqL1xyXG4gICAgcHJlcGFyZVJlc3VsdEl0ZW1zKGl0ZW1zOiBDbGlwcGVyRG9jdW1lbnRJbmZvW10sIHBhcmFtczogQ2xpcHBlclNlYXJjaFBhcmFtcykge1xyXG4gICAgICAgIGNvbnN0IHRvZGF5ID0gc3RhcnRPZlRvZGF5KCk7XHJcbiAgICAgICAgY29uc3QgZ3JvdXBCeVllYXIgPVxyXG4gICAgICAgICAgICAhcGFyYW1zLnNvcnRNb2RlIHx8XHJcbiAgICAgICAgICAgIHBhcmFtcy5zb3J0TW9kZSA9PT0gQ2xpcHBlclNvcnQuRGF0ZUFzYyB8fFxyXG4gICAgICAgICAgICBwYXJhbXMuc29ydE1vZGUgPT09IENsaXBwZXJTb3J0LkRhdGVEZXNjIHx8XHJcbiAgICAgICAgICAgIHBhcmFtcy5zb3J0TW9kZSA9PT0gQ2xpcHBlclNvcnQuU291cmNlRGF0ZUFzYyB8fFxyXG4gICAgICAgICAgICBwYXJhbXMuc29ydE1vZGUgPT09IENsaXBwZXJTb3J0LlNvdXJjZURhdGVEZXNjO1xyXG4gICAgICAgIGNvbnN0IGdyb3VwQnlSZWxldmFuY2UgPSBwYXJhbXMuc29ydE1vZGUgPT09IENsaXBwZXJTb3J0LlJlbGV2YW5jZTtcclxuICAgICAgICBjb25zdCBncm91cEJ5UG9wdWxhcml0eSA9IHBhcmFtcy5zb3J0TW9kZSA9PT0gQ2xpcHBlclNvcnQuUG9wdWxhcml0eTtcclxuICAgICAgICBsZXQgZ3JvdXAgPSAnJztcclxuICAgICAgICBpdGVtcz8uZm9yRWFjaChuID0+IHtcclxuICAgICAgICAgICAgbi5kb2N1bWVudElkID0gbi5kb2N1bWVudElkID8/IG4uaWQ7XHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uPy51cGRhdGVDdXJyZW50KG4sIG4uZG9jdW1lbnRJZCk7XHJcbiAgICAgICAgICAgIGlmIChuLm1vZGVsID09PSBDbGlwcGVyTW9kZWwuUXVlc2l0aSkge1xyXG4gICAgICAgICAgICAgICAgbi5pbmZvID0gXCJRdWVzaXRvIG7CsCBcIiArIG4ubnVtYmVyICsgXCIgZGVsIFwiICsgU3lzdGVtVXRpbHMuZm9ybWF0RGF0ZShuLmRhdGUsIFwiZCBNTU0geXl5eVwiKTtcclxuICAgICAgICAgICAgfSBlbHNlIGlmIChuLm1vZGVsID09PSBDbGlwcGVyTW9kZWwuU2NhZGVuemUgfHxcclxuICAgICAgICAgICAgICAgIG4ubW9kZWwgPT09IENsaXBwZXJNb2RlbC5TZWduYWxhemlvbmkpIHtcclxuICAgICAgICAgICAgICAgIHN3aXRjaCAobi5tb2RlbCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgQ2xpcHBlck1vZGVsLlNjYWRlbnplOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBuLm9yaWdpbkRlc2NyaXB0aW9uID0gJ1NjYWRlbnphJztcclxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBDbGlwcGVyTW9kZWwuU2VnbmFsYXppb25pOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBuLm9yaWdpbkRlc2NyaXB0aW9uID0gJ1NlZ25hbGF6aW9uZSc7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYgKG4uZXhwaXJpbmdJbmZvKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IHBhcnRzID0gbi5leHBpcmluZ0luZm8uc3BsaXQoJ3wnKTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAocGFydHMubGVuZ3RoID09PSAzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG4uZXhwaXJpbmdEZXNjcmlwdGlvbiA9IHBhcnRzWzJdO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmIChuLmV4cGlyaW5nRGF0ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIG4uZGF0ZSA9IHN0YXJ0T2ZEYXkobmV3IERhdGUobi5leHBpcmluZ0RhdGUpKTtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBkID0gc3RhcnRPZkRheShzdWJEYXlzKG4uZGF0ZSwgMTUpKTtcclxuICAgICAgICAgICAgICAgICAgICBuLmlzRXhwaXJpbmcgPSB0b2RheSA8PSBuLmRhdGUgJiYgdG9kYXkgPj0gZDtcclxuICAgICAgICAgICAgICAgICAgICBuLmlzRXhwaXJlZCA9IG4uZGF0ZSA8IHRvZGF5O1xyXG5cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGlmICgobi5tb2RlbCA9PT0gQ2xpcHBlck1vZGVsLkFydGljb2xpIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgbi5tb2RlbCA9PT0gQ2xpcHBlck1vZGVsLk5ld3MpICYmXHJcbiAgICAgICAgICAgICAgICAgICAgbi50YWdzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbi5pbmZvID0gbi50YWdzLnRvVXBwZXJDYXNlKCkuc3Vic3RyaW5nKDEpLnJlcGxhY2VBbGwoXCIjXCIsIFwiLCBcIik7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAobi5tb2RlbCAhPT0gQ2xpcHBlck1vZGVsLkFnZ2lvcm5hbWVudG9Ob3JtYXRpdm8gJiZcclxuICAgICAgICAgICAgICAgICAgICBuLm1vZGVsICE9PSBDbGlwcGVyTW9kZWwuTm9ybWF0aXZhVmlnZW50ZSAmJlxyXG4gICAgICAgICAgICAgICAgICAgIG4ubW9kZWwgIT09IENsaXBwZXJNb2RlbC5KdXJpcyAmJlxyXG4gICAgICAgICAgICAgICAgICAgIG4uZGF0ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIG4uZGF0ZSA9IHN0YXJ0T2ZEYXkobmV3IERhdGUobi5kYXRlID8/IG4ucHVibGlzaGluZ0RhdGUpKTtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBkID0gc3RhcnRPZkRheShzdWJEYXlzKHN0YXJ0T2ZUb2RheSgpLCA3KSlcclxuICAgICAgICAgICAgICAgICAgICBuLmlzTmV3ID0gbi5kYXRlID4gZDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmIChuLmFuY2hvcnMpIHtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgYW5jaG9yVHlwZTogbnVtYmVyIHwgbnVsbCA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGFuY2hvcnM6IGFueSA9IFtdO1xyXG4gICAgICAgICAgICAgICAgICAgIG4uYW5jaG9ycy5mb3JFYWNoKGEgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoYS50eXBlID09PSAyMCkgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoYS50eXBlICE9PSBhbmNob3JUeXBlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYS50eXBlID49IDMpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5jaG9ycy5wdXNoKHsgdGV4dDogYS50eXBlRGVzY3JpcHRpb24gfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmNob3JUeXBlID0gYS50eXBlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBzY29yZSA9IGEuc2NvcmU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzY29yZSA+IDcpIHNjb3JlIC09IDc7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHNjb3JlID4gNSkgc2NvcmUgLT0gNTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoc2NvcmUgPiAzKSBzY29yZSAtPSAzO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBhbmNob3JzLnB1c2goe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dDogYS50ZXh0LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGEudGl0bGUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudElkOiBhLmRvY3VtZW50SWQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmk6IGEudXJpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVyeVJlbGV2YW50OiBzY29yZSA+IDAuNlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICBuLmFuY2hvcnMgPSBhbmNob3JzO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYgKG4udmFsaWRpdHlTdGF0ZSA+IDApIHtcclxuICAgICAgICAgICAgICAgICAgICBuLnZhbGlkaXR5RGVzY3JpcHRpb24gPSAnSWwgZG9jdW1lbnRvIG5vbiDDqCBwacO5IHZpZ2VudGUnO1xyXG4gICAgICAgICAgICAgICAgICAgIG4uaXNFeHBpcmVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAobi52YWxpZFVudGlsRGF0ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBleHBpcmluZ0RhdGUgPSBzdGFydE9mRGF5KG5ldyBEYXRlKG4udmFsaWRVbnRpbERhdGUpKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGV4cGlyaW5nRGF0ZSA8IHRvZGF5KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuLnZhbGlkaXR5RGVzY3JpcHRpb24gPVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdJbCBkb2N1bWVudG8gbm9uIMOoIHBpw7kgdmlnZW50ZSBkYWwgJyArXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3lzdGVtVXRpbHMuZm9ybWF0RGF0ZShleHBpcmluZ0RhdGUpICtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLic7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuLnZhbGlkaXR5RGVzY3JpcHRpb24gPVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdJbCBkb2N1bWVudG8gbm9uIHNhcsOgIHBpw7kgdmlnZW50ZSBkYWwgJyArXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3lzdGVtVXRpbHMuZm9ybWF0RGF0ZShleHBpcmluZ0RhdGUpICtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLic7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuLmlzRXhwaXJlZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYgKG4uZXhwaXJpbmdEYXRlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbi5kYXRlID0gc3RhcnRPZkRheShuZXcgRGF0ZShuLmV4cGlyaW5nRGF0ZSkpO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGQgPSBzdGFydE9mRGF5KHN1YkRheXMobi5kYXRlLCAxNSkpO1xyXG4gICAgICAgICAgICAgICAgICAgIG4uaXNFeHBpcmluZyA9IHRvZGF5IDw9IG4uZGF0ZSAmJiB0b2RheSA+PSBkO1xyXG4gICAgICAgICAgICAgICAgICAgIG4uaXNFeHBpcmVkID0gbi5kYXRlIDwgdG9kYXk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKGdyb3VwQnlZZWFyKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCB5ZWFyID0gU3lzdGVtVXRpbHMuZm9ybWF0RGF0ZShuLmRhdGUsIERhdGVGb3JtYXQuTG9uZ01vbnRoQW5kWWVhcikudG9Mb3dlckNhc2UoKTtcclxuICAgICAgICAgICAgICAgIGlmIChncm91cCAhPT0geWVhcikge1xyXG4gICAgICAgICAgICAgICAgICAgIG4uZ3JvdXAgPSB5ZWFyO1xyXG4gICAgICAgICAgICAgICAgICAgIGdyb3VwID0geWVhcjtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSBlbHNlIGlmIChncm91cEJ5UmVsZXZhbmNlKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoZ3JvdXAgIT09ICdub25lJykge1xyXG4gICAgICAgICAgICAgICAgICAgIG4uZ3JvdXAgPVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAnRWxlbWVudGkgcGnDuSByaWxldmFudGkgcGVyIGxhIHJpY2VyY2E6ICcgKyBwYXJhbXMudGV4dDtcclxuICAgICAgICAgICAgICAgICAgICBncm91cCA9ICdub25lJztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSBlbHNlIGlmIChncm91cEJ5UG9wdWxhcml0eSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKGdyb3VwICE9PSAnbm9uZScpIHtcclxuICAgICAgICAgICAgICAgICAgICBuLmdyb3VwID0gJ0VsZW1lbnRpIHBpw7kgcG9wb2xhcmkgaW4gb3JkaW5lIGRlY3Jlc2NlbnRlJztcclxuICAgICAgICAgICAgICAgICAgICBncm91cCA9ICdub25lJztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvKipcclxuICAgICAqIFByZXBhcmUgcmVzdWx0c1xyXG4gICAgICogQHBhcmFtIGRhdGEgOiB0aGUgcmVzdWx0IGxpc3QgdG8gcHJlcGFyZVxyXG4gICAgICovXHJcbiAgICBwcmVwYXJlUmVzdWx0cyhkYXRhOiBDbGlwcGVyU2VhcmNoUmVzdWx0KSB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3Rpb24/LmN1cnJlbnQuY2xlYXIoKTtcclxuICAgICAgICB0aGlzLnNuYXBzaG90ID0gZGF0YTtcclxuICAgICAgICBpZiAodGhpcy5zbmFwc2hvdC5pdGVtcykge1xyXG4gICAgICAgICAgICB0aGlzLnByZXBhcmVSZXN1bHRJdGVtcyh0aGlzLnNuYXBzaG90Lml0ZW1zLCB0aGlzLmZpbHRlclBhcmFtcyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8qKlxyXG4gICAgKiBTYXZlIGN1cnJlbnQgZG9jdW1lbnQgbGlzdCBvciBqdXN0IHRoZSBzZWxlY3RlZCBkb2N1bWVudHMgYXMgYSBjc3ZcclxuICAgICogQHBhcmFtIGZvcm1hdDogdGhlIGV4cG9ydCBmb3JtYXQ6IDEpIGxpc3QsIDIpIGRlYWRsaW5lc1xyXG4gICAgKi9cclxuICAgIGV4cG9ydFJlc3VsdHMoZm9ybWF0OiBudW1iZXIgPSAxKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuc25hcHNob3Q/LnRvdGFsID4gMCB8fCB0aGlzLmhhc0FueVNlbGVjdGlvbigpKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZXhwb3J0SXRlbXModGhpcy5nZXRTZWxldGVjdElkcygpLCB0aGlzLmZpbHRlclBhcmFtcywgZm9ybWF0KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8qKlxyXG4gICAgKiBSZXR1cm4gaXRlbSBzdGF0ZSBjc3MgY2xhc3NcclxuICAgICogQHBhcmFtIGl0ZW0gOiB0aGUgaXRlbSB0byBldmFsdWF0ZVxyXG4gICAgKi9cclxuICAgIGdldEl0ZW1TdGF0ZUNzc0NsYXNzKGl0ZW06IENsaXBwZXJEb2N1bWVudEluZm8pOiBzdHJpbmcgfCBudWxsIHtcclxuICAgICAgICBpZiAoaXRlbS5pc1JlYWQgIT09IHRydWUgJiYgQ2xpcHBlclV0aWxzLmlzQ2xpcHBlck1vZGVsUmVhZGFibGUoaXRlbS5tb2RlbCkpIHJldHVybiAndW5yZWFkLWJnJztcclxuICAgICAgICBlbHNlIGlmIChpdGVtLmlzRXhwaXJlZCkgcmV0dXJuICdleHBpcmVkLWJnJztcclxuICAgICAgICBlbHNlIGlmIChpdGVtLnBvcHVsYXJpdHkgPT09IDMpIHJldHVybiAncG9wdWxhci1iZyc7XHJcbiAgICAgICAgZWxzZSBpZiAoaXRlbS5wb3B1bGFyaXR5ID4gMykgcmV0dXJuICd2ZXJ5LXBvcHVsYXItYmcnO1xyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmV0dXJuIHRoZSBpdGVtIHN0YXRlIHRvb2x0aXAgdGV4dFxyXG4gICAgICogQHBhcmFtIGl0ZW0gOiB0aGUgaXRlbSB0byBldmFsdWF0ZVxyXG4gICAgICovXHJcbiAgICBnZXRJdGVtU3RhdGVUb29sdGlwKGl0ZW06IENsaXBwZXJEb2N1bWVudEluZm8pOiBzdHJpbmcge1xyXG4gICAgICAgIGlmIChpdGVtLmlzUmVhZCAhPT0gdHJ1ZSAmJiBDbGlwcGVyVXRpbHMuaXNDbGlwcGVyTW9kZWxSZWFkYWJsZShpdGVtLm1vZGVsKSkgcmV0dXJuICdOb24gbGV0dG8nO1xyXG4gICAgICAgIGVsc2UgaWYgKGl0ZW0uaXNFeHBpcmVkKSByZXR1cm4gJ05vbiBwacO5IHZpZ2VudGUnO1xyXG4gICAgICAgIGVsc2UgaWYgKGl0ZW0ucG9wdWxhcml0eSA9PT0gMykgcmV0dXJuICdEb2N1bWVudG8gY29uIG51bWVybyBkaSBjaXRhemlvbmkgYWx0byc7XHJcbiAgICAgICAgZWxzZSBpZiAoaXRlbS5wb3B1bGFyaXR5ID4gMylcclxuICAgICAgICAgICAgcmV0dXJuICdEb2N1bWVudG8gY29uIG51bWVybyBkaSBjaXRhemlvbmkgbW9sdG8gYWx0byc7XHJcbiAgICAgICAgcmV0dXJuICcnO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgKiBSZXR1cm4gdGhlIGl0ZW0gaWNvblxyXG4gICAgKiBAcGFyYW0gaXRlbSA6IHRoZSBpdGVtIHRvIGV2YWx1YXRlXHJcbiAgICAqL1xyXG4gICAgZ2V0SXRlbUljb24oaXRlbTogQ2xpcHBlckRvY3VtZW50SW5mbyk6IHN0cmluZyB7XHJcbiAgICAgICAgc3dpdGNoIChpdGVtLm1vZGVsKSB7XHJcbiAgICAgICAgICAgIGNhc2UgQ2xpcHBlck1vZGVsLk5vcm1hdGl2YVZpZ2VudGU6IHJldHVybiAnZ2F2ZWwnO1xyXG4gICAgICAgICAgICBjYXNlIENsaXBwZXJNb2RlbC5BcnRpY29saTpcclxuICAgICAgICAgICAgY2FzZSBDbGlwcGVyTW9kZWwuUXVlc2l0aTpcclxuICAgICAgICAgICAgY2FzZSBDbGlwcGVyTW9kZWwuTWV0b2RpRGlBbmFsaXNpOiByZXR1cm4gJ2V4dGVuc2lvbic7XHJcbiAgICAgICAgICAgIGRlZmF1bHQ6IHJldHVybiAndXBkYXRlZCc7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVG9nZ2xlIHRoZSByZWFkIGZsYWdcclxuICAgICAqIEBwYXJhbSBpdGVtIDogdGhlIGl0ZW0gdG8gdXBkYXRlXHJcbiAgICAgKiBAcGFyYW4gZTogdGhlIG9wdGlvbmFsIGNsaWNrIGV2ZW50XHJcbiAgICAgKi9cclxuICAgIHRvZ2dsZVJlYWQoaXRlbTogQ2xpcHBlckRvY3VtZW50SW5mbywgZTogRXZlbnQgfCBudWxsID0gbnVsbCkge1xyXG4gICAgICAgIGU/LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgZT8uc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgICAgdGhpcy5zZXRSZWFkKCFpdGVtPy5pc1JlYWQsIGl0ZW0pO1xyXG5cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICogVG9nZ2xlIHRoZSBzZWxlY3Rpb24gZmxhZ1xyXG4gICAgKiBAcGFyYW0gaXRlbSA6IHRoZSBpdGVtIHRvIHVwZGF0ZVxyXG4gICAgKiBAcGFyYW4gZTogdGhlIG9wdGlvbmFsIGNsaWNrIGV2ZW50XHJcbiAgICAqL1xyXG4gICAgdG9nZ2xlU2VsZWN0aW9uKGl0ZW06IENsaXBwZXJEb2N1bWVudEluZm8sIGU6IEV2ZW50IHwgbnVsbCA9IG51bGwpIHtcclxuICAgICAgICBlPy5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgIGU/LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICAgIHRoaXMuc2VsZWN0aW9uPy50b2dnbGUoaXRlbSwgaXRlbS5kb2N1bWVudElkKVxyXG5cclxuXHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAqIFNldCByZWFkIGZsYWdcclxuICAgICogQHBhcmFtIHZhbHVlOiB0aGUgZmxhZyB2YWx1ZVxyXG4gICAgKiBAcGFyYW0gaXRlbTogdGhlIGl0ZW0gdG8gc2V0IG9yIG51bGwgdG8gdXNlIGN1cnJlbnQgc2VsZWN0aW9uXHJcbiAgICAqL1xyXG4gICAgc2V0UmVhZCh2YWx1ZTogYm9vbGVhbiwgaXRlbTogQ2xpcHBlckRvY3VtZW50SW5mbyB8IG51bGwgPSBudWxsKSB7XHJcbiAgICAgICAgbGV0IGRvY3VtZW50SWRzOiBzdHJpbmdbXSA9IFtdO1xyXG4gICAgICAgIGlmIChpdGVtKSB7XHJcbiAgICAgICAgICAgIGRvY3VtZW50SWRzID0gW2l0ZW0uZG9jdW1lbnRJZF07XHJcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLmhhc0FueVNlbGVjdGlvbigpKSB7XHJcbiAgICAgICAgICAgIGRvY3VtZW50SWRzID0gdGhpcy5zZWxlY3Rpb24/LmFsbD8ubWFwKG4gPT4gbi5kb2N1bWVudElkKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY2xpcHBlclNlcnZpY2UudXBkYXRlU3RhdGUoeyBkb2N1bWVudElkczogZG9jdW1lbnRJZHMsIGlzUmVhZDogdmFsdWUgfSlcclxuICAgICAgICAgICAgLnN1YnNjcmliZShyID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChyLnN1Y2Nlc3MpIHtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgY2hhbmdlZCA9IDA7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGl0ZW0pIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGl0ZW0uaXNSZWFkICE9PSB2YWx1ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5pc1JlYWQgPSB2YWx1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYnJvYWRjYXN0U2VydmljZS5zZW5kTWVzc2FnZShDbGlwcGVyTWVzc2FnZXMuRE9DVU1FTlRfUkVBRCwgeyBkb2N1bWVudDogaXRlbSwgdmFsdWU6IHZhbHVlIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCsrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmhhc0FueVNlbGVjdGlvbigpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uPy5hbGw/LmZvckVhY2gobiA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobi5pc1JlYWQgIT09IHZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbi5pc1JlYWQgPSB2YWx1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmJyb2FkY2FzdFNlcnZpY2Uuc2VuZE1lc3NhZ2UoQ2xpcHBlck1lc3NhZ2VzLkRPQ1VNRU5UX1JFQUQsIHsgZG9jdW1lbnQ6IG4sIHZhbHVlOiB2YWx1ZSB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkKys7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAvLyBVcGRhdGUgZGFzaGJvYXJkXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNoYW5nZWQgPiAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY2xpcHBlclNlcnZpY2UudXBkYXRlVW5yZWFkSXRlbXMoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDbGlwcGVyVXRpbHMuZ2V0Q2xpcHBlck1vZHVsZUZyb21Nb2RlbChpdGVtKSwgdmFsdWUgPyAtMSA6IDEpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAqIE9wZW4gYW4gaXRlbVxyXG4gKiBAcGFyYW0gZG9jdW1lbnRJZCA6IHRoZSBkb2N1bWVudCBpZFxyXG4gKiBAcGFyYW0gcXVlcnk6IHRoZSBjdXJyZW50IHF1ZXJ5IG9yIG51bGxcclxuICogQHBhcmFtIG5ld1dpbmRvdzogdHJ1ZSBpZiB0aGUgZG9jdW1lbnQgbXVzdCBiZSBvcGVuIGludG8gYSBuZXcgd2luZG93XHJcbiAqL1xyXG4gICAgb3ZlcnJpZGUgb3Blbihkb2N1bWVudElkOiBzdHJpbmcsIHF1ZXJ5OiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkID0gbnVsbCwgbmV3V2luZG93OiBib29sZWFuID0gZmFsc2UpIHtcclxuICAgICAgICBpZiAoIW5ld1dpbmRvdykgdGhpcy5vcGVuRG9jdW1lbnQoZG9jdW1lbnRJZCwgcXVlcnkpO1xyXG4gICAgICAgIGVsc2Ugd2luZG93Lm9wZW4oJy9kb2N1bWVudG8vJyArIGRvY3VtZW50SWQsICdfYmxhbmsnKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIE9wZW4gYSBkb2N1bWVudFxyXG4gICAgICogQHBhcmFtIGRvY3VtZW50SWQgOiB0aGUgZG9jdW1lbnQgaWRcclxuICAgICAqIEBwYXJhbSBxdWVyeTogdGhlIGN1cnJlbnQgcXVlcnkgb3IgbnVsbFxyXG4gICAgICovXHJcbiAgICBvcGVuRG9jdW1lbnQoZG9jdW1lbnRJZDogc3RyaW5nLCBxdWVyeTogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCA9IG51bGwpIHtcclxuICAgICAgICBpZiAoIWRvY3VtZW50SWQpIHJldHVybjtcclxuICAgICAgICBDbGlwcGVyRG9jdW1lbnRzVXRpbHMub3BlbkRvY3VtZW50KFxyXG4gICAgICAgICAgICB0aGlzLmRpYWxvZ1NlcnZpY2UsXHJcbiAgICAgICAgICAgIHRoaXMuY2xpcHBlclNlcnZpY2UsXHJcbiAgICAgICAgICAgIGRvY3VtZW50SWQsXHJcbiAgICAgICAgICAgIHF1ZXJ5ID8/IHRoaXMuZmlsdGVyUGFyYW1zLnRleHQsXHJcbiAgICAgICAgICAgIG51bGwsXHJcbiAgICAgICAgICAgIHRoaXMudGhlbWVTZXJ2aWNlLmdldFRoZW1lKCkpO1xyXG5cclxuICAgIH1cclxuXHJcbiAgICAvLy9cclxuICAgIC8vIFJlc3RvcmFibGVcclxuICAgIC8vL1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogU2F2ZSByZXN0b3JhYmxlIGRhdGFcclxuICAgICAqIEBwYXJhbSBpZCA6IHRoZSByZXN0b3JhYmxlIGlkXHJcbiAgICAgKiBAcGFyYW0gc2Nyb2xsIDogdGhlIGN1cnJlbnQgc2Nyb2xsIHBvc2l0aW9uXHJcbiAgICAgKiBAcGFyYW0gc3RvcmFnZSA6IHRoZSBzdG9yYWdlIHRvIHVzZS4gRGVmYXVsdCBzaSBzZXNzaW9uIHN0b3JhZ2UuXHJcbiAgICAgKi9cclxuICAgIHNhdmUoaWQ6IHN0cmluZywgc2Nyb2xsOiBudW1iZXIgPSAwLCBzdG9yYWdlOiBTdG9yYWdlID0gc2Vzc2lvblN0b3JhZ2UgKSB7XHJcbiAgICAgICAgc3RvcmFnZS5zZXRJdGVtKFxyXG4gICAgICAgICAgICBpZCxcclxuICAgICAgICAgICAgSlNPTi5zdHJpbmdpZnkoe1xyXG4gICAgICAgICAgICAgICAgcGFnaW5hdG9yOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgcGFnZTogdGhpcy5wYWdpbmF0b3I/LnBhZ2VJbmRleCA/PyAwLFxyXG4gICAgICAgICAgICAgICAgICAgIHRvdGFsOiB0aGlzLnNuYXBzaG90Py50b3RhbCA/PyAwLFxyXG4gICAgICAgICAgICAgICAgICAgIHNpemU6IHRoaXMucGFnaW5hdG9yPy5wYWdlU2l6ZSA/PyAxNVxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIGZhY2V0czogdGhpcy5mYWNldHM/LnNhdmUoKSxcclxuICAgICAgICAgICAgICAgIGZpbHRlclBhcmFtczogdGhpcy5maWx0ZXJQYXJhbXMsXHJcbiAgICAgICAgICAgICAgICBzY3JvbGw6IHNjcm9sbCxcclxuICAgICAgICAgICAgICAgIHNvcnQ6IHsgbW9kZTogdGhpcy5zb3J0TW9kZSwgb3B0aW9uczogdGhpcy5zb3J0T3B0aW9ucyB9LFxyXG4gICAgICAgICAgICAgICAgZGF0YTogdGhpcy5zbmFwc2hvdFxyXG4gICAgICAgICAgICAgICAgICAgID8geyBpdGVtczogdGhpcy5zbmFwc2hvdC5pdGVtcywgdG90YWw6IHRoaXMuc25hcHNob3QudG90YWwgfVxyXG4gICAgICAgICAgICAgICAgICAgIDogbnVsbFxyXG4gICAgICAgICAgICB9KSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZXN0b3JlIGRhdGFcclxuICAgICAqIEBwYXJhbSBpZCA6IHRoZSByZXN0b3JhYmxlIGlkXHJcbiAgICAgKiBAcGFyYW0gc3RvcmFnZSA6IHRoZSBzdG9yYWdlIHRvIHVzZS4gRGVmYXVsdCBzaSBzZXNzaW9uIHN0b3JhZ2UuXHJcbiAgICAgKi9cclxuICAgIHJlc3RvcmUoaWQ6IHN0cmluZywgc3RvcmFnZTogU3RvcmFnZSA9IHNlc3Npb25TdG9yYWdlKSB7XHJcbiAgICAgICAgY29uc3QgdmFsdWUgPSBzdG9yYWdlLmdldEl0ZW0oaWQpO1xyXG4gICAgICAgIGlmICh2YWx1ZSkge1xyXG4gICAgICAgICAgICBjb25zdCBkYXRhID0gSlNPTi5wYXJzZSh2YWx1ZSk7XHJcbiAgICAgICAgICAgIGlmIChkYXRhKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmZpbHRlclBhcmFtcyA9IGRhdGEuZmlsdGVyUGFyYW1zO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgbW9kdWxlcyA9IFN5c3RlbVV0aWxzLmNsb25lKHRoaXMuZmlsdGVyUGFyYW1zLm1vZHVsZXMpO1xyXG4gICAgICAgICAgICAgICAgY29uc3Qgc2VjdG9ycyA9IFN5c3RlbVV0aWxzLmNsb25lKHRoaXMuZmlsdGVyUGFyYW1zLnNlY3RvcnMpO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgYXV0aG9ycyA9IFN5c3RlbVV0aWxzLmNsb25lKHRoaXMuZmlsdGVyUGFyYW1zLmF1dGhvcnMpO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgdGFncyA9IFN5c3RlbVV0aWxzLmNsb25lKHRoaXMuZmlsdGVyUGFyYW1zLnRhZ3MpO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgdG9waWNzID0gU3lzdGVtVXRpbHMuY2xvbmUodGhpcy5maWx0ZXJQYXJhbXMudG9waWNzKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuZmlsdGVyUGFyYW1zLm1vZHVsZXMgPSBtb2R1bGVzO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5maWx0ZXJQYXJhbXMuc2VjdG9ycyA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmZpbHRlclBhcmFtcy5hdXRob3JzID0gbnVsbDtcclxuICAgICAgICAgICAgICAgIHRoaXMuZmlsdGVyUGFyYW1zLnRhZ3MgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5maWx0ZXJQYXJhbXMudG9waWNzID0gbnVsbDtcclxuICAgICAgICAgICAgICAgIHRoaXMuc25hcHNob3QgPSBkYXRhLmRhdGE7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNvcnRNb2RlID0gZGF0YS5zb3J0Lm1vZGU7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNvcnRPcHRpb25zID0gZGF0YS5zb3J0Lm9wdGlvbnM7XHJcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmZpbHRlclBhcmFtcy5zZWN0b3JzID0gc2VjdG9ycztcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmZpbHRlclBhcmFtcy5hdXRob3JzID0gYXV0aG9ycztcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmZpbHRlclBhcmFtcy50YWdzID0gdGFncztcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmZpbHRlclBhcmFtcy50b3BpY3MgPSB0b3BpY3M7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuZmFjZXRzICYmIGRhdGEuZmFjZXRzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZmFjZXRzLnJlc3RvcmUoZGF0YS5mYWNldHMpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmhhc0ZhY2V0cy5zZXQoZGF0YS5mYWNldHMuaGFzRmFjZXRzID09PSB0cnVlID8gdHJ1ZSA6IGZhbHNlKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMucGFnaW5hdG9yICYmIGRhdGEucGFnaW5hdG9yKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucGFnaW5hdG9yLnBhZ2VJbmRleCA9IGRhdGEucGFnaW5hdG9yLnBhZ2U7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucGFnaW5hdG9yLnBhZ2VTaXplID0gZGF0YS5wYWdpbmF0b3Iuc2l6ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wYWdpbmF0b3IubGVuZ3RoID0gZGF0YS5wYWdpbmF0b3IudG90YWw7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2Nyb2xsKGRhdGEuc2Nyb2xsID8/IDApO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYnJvYWRjYXN0U2VydmljZS5zZW5kTWVzc2FnZShDbGlwcGVyTWVzc2FnZXMuQ09NTUFORF9TRUFSQ0hfUkVTVE9SRUQsIGRhdGEuZmlsdGVyUGFyYW1zKVxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICAgICAgfSwgNzUwKTtcclxuXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuIl19
@@ -1768,12 +1768,12 @@ class ClipperUtils {
1768
1768
  model !== ClipperModel.Segnalazioni;
1769
1769
  }
1770
1770
  /**
1771
- * Return the Clipper module from model
1772
- * @param model: the model
1771
+ * Return the Clipper module from a document
1772
+ * @param item: the documenti item
1773
1773
  * @returns the module id
1774
1774
  */
1775
- static getClipperModuleFromModel(model) {
1776
- switch (model) {
1775
+ static getClipperModuleFromModel(item) {
1776
+ switch (item.model) {
1777
1777
  case ClipperModel.AllerteAlimentari: return ClipperModule.AllerteAlimentari;
1778
1778
  case ClipperModel.News:
1779
1779
  case ClipperModel.Articoli:
@@ -1781,7 +1781,14 @@ class ClipperUtils {
1781
1781
  case ClipperModel.Quesiti: return ClipperModule.QuesitiECasiRisolti;
1782
1782
  case ClipperModel.Coordinamento: return ClipperModule.ModificheAbrogazioniERinvii;
1783
1783
  case ClipperModel.GiurisprudenzaRecente: return ClipperModule.Giurisprudenza;
1784
- case ClipperModel.NormativaVigente: return ClipperModule.NormativaVigente;
1784
+ case ClipperModel.NormativaVigente:
1785
+ console.log(JSON.stringify(item));
1786
+ if (item.sector && item.sector.length > 0 && item.sector[0] === "G") {
1787
+ return ClipperModule.Giurisprudenza;
1788
+ }
1789
+ else {
1790
+ return ClipperModule.NormativaVigente;
1791
+ }
1785
1792
  case ClipperModel.Segnalazioni:
1786
1793
  case ClipperModel.Scadenze: return ClipperModule.ScadenzeESegnalazioni;
1787
1794
  case ClipperModel.AggiornamentoNormativo: return ClipperModule.GazzetteBollettiniEFontiDiverse;