@sunbird-cb/tree-hierarchy 0.0.8-cbrelease-4.8.26 → 0.0.10-cbrelease-4.8.26

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.
@@ -82,7 +82,30 @@ export class ConnectorService {
82
82
  container.style.right = '0';
83
83
  container.style.width = '100%';
84
84
  container.style.height = '100%';
85
- container.style.pointerEvents = 'none';
85
+ const resizeObserver = new ResizeObserver(entries => {
86
+ for (const entry of entries) {
87
+ if (entry.target === treeViewComponent) {
88
+ container.style.width = `${entry.contentRect.width}px`;
89
+ if (this.connectorMap) {
90
+ Object.values(this.connectorMap).forEach((connector) => {
91
+ if (connector && connector.lines) {
92
+ connector.lines.forEach((item) => {
93
+ if (item.line && typeof item.line.position === 'function') {
94
+ item.line.position();
95
+ }
96
+ });
97
+ }
98
+ });
99
+ }
100
+ }
101
+ }
102
+ });
103
+ resizeObserver.observe(treeViewComponent);
104
+ treeViewComponent.addEventListener('scroll', () => {
105
+ overflowWrapper.style.width = `${treeViewComponent.scrollWidth}px`;
106
+ overflowWrapper.style.height = `${treeViewComponent.scrollHeight}px`;
107
+ this.repositionAllLines();
108
+ });
86
109
  overflowWrapper.appendChild(container);
87
110
  treeViewComponent.appendChild(overflowWrapper);
88
111
  }
@@ -260,4 +283,4 @@ export class ConnectorService {
260
283
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ConnectorService, decorators: [{
261
284
  type: Injectable
262
285
  }], ctorParameters: function () { return []; } });
263
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29ubmVjdG9yLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJyYXJ5L3N1bmJpcmQtY2IvdHJlZS1oaWVyYXJjaHkvc3JjL2xpYi9zZXJ2aWNlcy9jb25uZWN0b3Iuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMxRCxPQUFPLEtBQUssRUFBRSxNQUFNLElBQUksQ0FBQzs7QUFrQnpCLE1BQU0sT0FBTyxnQkFBZ0I7SUFLM0I7UUFKQSxpQkFBWSxHQUF5QixFQUFFLENBQUM7UUFFeEMsc0JBQWlCLEdBQUcsb0JBQW9CLENBQUM7SUFHekMsQ0FBQztJQUVELFNBQVMsQ0FBQyxNQUFXLEVBQUUsTUFBVyxFQUFFLFVBQWUsYUFBYSxFQUFFLG9CQUF5QixTQUFTLEVBQUUsb0JBQXlCLFNBQVM7UUFDdEksTUFBTSxRQUFRLEdBQVEsRUFBQyxHQUFHLGFBQWEsRUFBRSxHQUFHLE9BQU8sRUFBQyxDQUFDO1FBQ3JELFFBQVEsQ0FBQyxRQUFRLENBQUMsR0FBRyxJQUFJLENBQUE7UUFDekIsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQ3pCLElBQUksYUFBYSxHQUFtQixFQUFFLENBQUM7WUFDdkMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFO2dCQUN6QixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRSxPQUFPLEVBQUUsUUFBUSxDQUFDLENBQUM7Z0JBQzVELGFBQWEsQ0FBQyxJQUFJLENBQUM7b0JBQ2pCLE1BQU0sRUFBRSxPQUFPO29CQUNmLElBQUksRUFBRSxRQUFRO2lCQUNmLENBQUMsQ0FBQztnQkFFSCxJQUFHLGlCQUFpQixFQUFFO29CQUNw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QkFENUIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlICovXG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBkZWZhdWx0Q29uZmlnIH0gZnJvbSAnLi4vY29uc3RhbnRzL2FwcC1jb25zdGFudCc7XG5pbXBvcnQgKiBhcyBkMyBmcm9tICdkMyc7XG5cbmludGVyZmFjZSBDb25uZWN0ZWREb3Qge1xuICB0YXJnZXQ6IGFueTtcbiAgbGluZTogYW55O1xufVxuXG5pbnRlcmZhY2UgRDNMaW5lIHtcbiAgc291cmNlOiBhbnk7XG4gIHRhcmdldDogYW55O1xuICBwYXRoOiBhbnk7XG4gIHN2ZzogYW55O1xuICBwb3NpdGlvbjogKCkgPT4gdm9pZDtcbiAgc2hvdzogKGFuaW1hdGlvbj86IHN0cmluZykgPT4gdm9pZDtcbiAgcmVtb3ZlOiAoKSA9PiB2b2lkO1xufVxuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQ29ubmVjdG9yU2VydmljZSB7XG4gIGNvbm5lY3Rvck1hcDoge1trZXk6IHN0cmluZ106IGFueX0gPSB7fTtcbiAgZWxtV3JhcHBlcjogYW55O1xuICBjb250YWluZXJTZWxlY3RvciA9ICcjdHJlZVZpZXdDb250YWluZXInOyAvLyBZb3UgbWlnaHQgbmVlZCB0byBhZGp1c3QgdGhpcyBzZWxlY3RvclxuXG4gIGNvbnN0cnVjdG9yKCkge1xuICB9XG5cbiAgX2RyYXdMaW5lKHNvdXJjZTogYW55LCB0YXJnZXQ6IGFueSwgb3B0aW9uczogYW55ID0gZGVmYXVsdENvbmZpZywgc291cmNlQ29udGFpbmVySWQ6IGFueSA9IHVuZGVmaW5lZCwgdGFyZ2V0Q29udGFpbmVySWQ6IGFueSA9IHVuZGVmaW5lZCk6IGFueSB7XG4gICAgY29uc3QgX29wdGlvbnMgPSA8YW55PnsuLi5kZWZhdWx0Q29uZmlnLCAuLi5vcHRpb25zfTtcbiAgICBfb3B0aW9uc1snZGFzaGVkJ10gPSB0cnVlXG4gICAgaWYgKEFycmF5LmlzQXJyYXkodGFyZ2V0KSkge1xuICAgICAgbGV0IGNvbm5lY3RlZERvdHM6IENvbm5lY3RlZERvdFtdID0gW107XG4gICAgICB0YXJnZXQuZm9yRWFjaCgoX3RhcmdldCkgPT4ge1xuICAgICAgICBjb25zdCB0ZW1wTGluZSA9IHRoaXMucmVuZGVyTGluZShzb3VyY2UsIF90YXJnZXQsIF9vcHRpb25zKTtcbiAgICAgICAgY29ubmVjdGVkRG90cy5wdXNoKHtcbiAgICAgICAgICB0YXJnZXQ6IF90YXJnZXQsXG4gICAgICAgICAgbGluZTogdGVtcExpbmVcbiAgICAgICAgfSk7XG4gICAgICAgIFxuICAgICAgICBpZihzb3VyY2VDb250YWluZXJJZCkge1xuICAgICAgICAgIGNvbnN0IHNvdXJjZUNvbnRhaW5lciA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3Ioc291cmNlQ29udGFpbmVySWQpO1xuICAgICAgICAgIGlmIChzb3VyY2VDb250YWluZXIpIHtcbiAgICAgICAgICAgIHNvdXJjZUNvbnRhaW5lci5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCAoKSA9PiB7XG4gICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgdGVtcExpbmUgJiYgdGVtcExpbmUucG9zaXRpb24oKTtcbiAgICAgICAgICAgICAgfSBjYXRjaChlKSB7XG4gICAgICAgICAgICAgICAgLy8gRXJyb3IgaGFuZGxpbmdcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSwgdHJ1ZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICBpZiAodGFyZ2V0Q29udGFpbmVySWQpIHtcbiAgICAgICAgICBjb25zdCB0YXJnZXRDb250YWluZXIgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKHRhcmdldENvbnRhaW5lcklkKTtcbiAgICAgICAgICBpZiAodGFyZ2V0Q29udGFpbmVyKSB7XG4gICAgICAgICAgICB0YXJnZXRDb250YWluZXIuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgKCkgPT4ge1xuICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIHRlbXBMaW5lICYmIHRlbXBMaW5lLnBvc2l0aW9uKCk7XG4gICAgICAgICAgICAgIH0gY2F0Y2goZSkge1xuICAgICAgICAgICAgICAgIC8vIEVycm9yIGhhbmRsaW5nXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sIHRydWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICByZXR1cm4gY29ubmVjdGVkRG90cztcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMucmVuZGVyTGluZShzb3VyY2UsIHRhcmdldCwgX29wdGlvbnMpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcmVuZGVyTGluZShzb3VyY2U6IGFueSwgdGFyZ2V0OiBhbnksIG9wdGlvbnM6IGFueSk6IEQzTGluZSB7XG4gICAgLy8gRmluZCBvciBjcmVhdGUgdGhlIGNvbnRhaW5lciBlbGVtZW50XG4gICAgY29uc3QgdHJlZVZpZXdDb21wb25lbnQ6IGFueSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IodGhpcy5jb250YWluZXJTZWxlY3Rvcik7XG4gICAgaWYgKCF0cmVlVmlld0NvbXBvbmVudCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgc291cmNlOiBudWxsLFxuICAgICAgICB0YXJnZXQ6IG51bGwsXG4gICAgICAgIHBhdGg6IG51bGwsXG4gICAgICAgIHN2ZzogbnVsbCxcbiAgICAgICAgcG9zaXRpb246ICgpID0+IHt9LFxuICAgICAgICBzaG93OiAoKSA9PiB7fSxcbiAgICAgICAgcmVtb3ZlOiAoKSA9PiB7fVxuICAgICAgfTtcbiAgICB9XG4gICAgXG4gICAgLy8gQ3JlYXRlIG9yIGdldCBjb250YWluZXIgZm9yIHRoZSBTVkdcbiAgICBsZXQgY29udGFpbmVyOiBhbnkgPSB0cmVlVmlld0NvbXBvbmVudC5xdWVyeVNlbGVjdG9yKCcjbGVhZGVyLWxpbmUtY29udGFpbmVyJyk7XG4gICAgaWYgKCFjb250YWluZXIpIHtcbiAgICAgIC8vIENyZWF0ZSBhIHdyYXBwZXIgY29udGFpbmVyIHRvIGNvbnRyb2wgdGhlIG92ZXJmbG93IGF0IHRoZSB0b3BcbiAgICAgIGxldCBvdmVyZmxvd1dyYXBwZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICAgIG92ZXJmbG93V3JhcHBlci5pZCA9ICdsZWFkZXItbGluZS1vdmVyZmxvdy13cmFwcGVyJztcbiAgICAgIG92ZXJmbG93V3JhcHBlci5zdHlsZS5wb3NpdGlvbiA9ICdhYnNvbHV0ZSc7XG4gICAgICBvdmVyZmxvd1dyYXBwZXIuc3R5bGUudG9wID0gJzgwcHgnOyAvLyBTYW1lIHRvcCBwb3NpdGlvblxuICAgICAgb3ZlcmZsb3dXcmFwcGVyLnN0eWxlLmJvdHRvbSA9ICcwJztcbiAgICAgIG92ZXJmbG93V3JhcHBlci5zdHlsZS5sZWZ0ID0gJzAnO1xuICAgICAgb3ZlcmZsb3dXcmFwcGVyLnN0eWxlLnJpZ2h0ID0gJzAnO1xuICAgICAgb3ZlcmZsb3dXcmFwcGVyLnN0eWxlLm92ZXJmbG93ID0gJ2hpZGRlbic7IC8vIEhpZGUgYW55dGhpbmcgYWJvdmUgdGhpcyBjb250YWluZXJcbiAgICAgIG92ZXJmbG93V3JhcHBlci5zdHlsZS5wb2ludGVyRXZlbnRzID0gJ25vbmUnOyAvLyBBbGxvdyBjbGlja3MgdG8gcGFzcyB0aHJvdWdoXG4gICAgICBcbiAgICAgIC8vIE9yaWdpbmFsIGNvbnRhaW5lciByZW1haW5zIHRoZSBzYW1lIGJ1dCBwb3NpdGlvbmVkIGF0IHRvcDowIHdpdGhpbiB0aGUgd3JhcHBlclxuICAgICAgY29udGFpbmVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgICBjb250YWluZXIuaWQgPSAnbGVhZGVyLWxpbmUtY29udGFpbmVyJztcbiAgICAgIGNvbnRhaW5lci5zdHlsZS5wb3NpdGlvbiA9ICdhYnNvbHV0ZSc7XG4gICAgICBjb250YWluZXIuc3R5bGUudG9wID0gJzAnOyAvLyBDaGFuZ2VkIHRvIDAgYXMgaXQncyBub3cgcmVsYXRpdmUgdG8gd3JhcHBlclxuICAgICAgY29udGFpbmVyLnN0eWxlLmJvdHRvbSA9ICcwJztcbiAgICAgIGNvbnRhaW5lci5zdHlsZS5sZWZ0ID0gJzAnO1xuICAgICAgY29udGFpbmVyLnN0eWxlLnJpZ2h0ID0gJzAnO1xuICAgICAgY29udGFpbmVyLnN0eWxlLndpZHRoID0gJzEwMCUnO1xuICAgICAgY29udGFpbmVyLnN0eWxlLmhlaWdodCA9ICcxMDAlJztcbiAgICAgIGNvbnRhaW5lci5zdHlsZS5wb2ludGVyRXZlbnRzID0gJ25vbmUnOyAvLyBBbGxvdyBjbGlja3MgdG8gcGFzcyB0aHJvdWdoXG4gICAgICBvdmVyZmxvd1dyYXBwZXIuYXBwZW5kQ2hpbGQoY29udGFpbmVyKTtcbiAgICAgIHRyZWVWaWV3Q29tcG9uZW50LmFwcGVuZENoaWxkKG92ZXJmbG93V3JhcHBlcik7XG4gICAgfVxuICAgIFxuICAgIC8vIFN0b3JlIGNvbnRhaW5lciByZWZlcmVuY2UgZm9yIGFjY2VzcyBpbiBvdGhlciBtZXRob2RzXG4gICAgdGhpcy5lbG1XcmFwcGVyID0gY29udGFpbmVyO1xuICAgIFxuICAgIC8vIEdldCB0aGUgc291cmNlIGFuZCB0YXJnZXQgZWxlbWVudHNcbiAgICBsZXQgc291cmNlRWxlbWVudCA9IHNvdXJjZTtcbiAgICBsZXQgdGFyZ2V0RWxlbWVudDogYW55O1xuICAgIFxuICAgIGlmICh0YXJnZXQudGFyZ2V0VHlwZSA9PT0gJ2lkJykge1xuICAgICAgdGFyZ2V0RWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldC50YXJnZXQpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0YXJnZXRFbGVtZW50ID0gdGFyZ2V0LnRhcmdldDtcbiAgICB9XG4gICAgXG4gICAgLy8gRW5zdXJlIGJvdGggZWxlbWVudHMgZXhpc3RcbiAgICBpZiAoIXNvdXJjZUVsZW1lbnQgfHwgIXRhcmdldEVsZW1lbnQpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHNvdXJjZTogbnVsbCxcbiAgICAgICAgdGFyZ2V0OiBudWxsLFxuICAgICAgICBwYXRoOiBudWxsLFxuICAgICAgICBzdmc6IG51bGwsXG4gICAgICAgIHBvc2l0aW9uOiAoKSA9PiB7fSxcbiAgICAgICAgc2hvdzogKCkgPT4ge30sXG4gICAgICAgIHJlbW92ZTogKCkgPT4ge31cbiAgICAgIH07XG4gICAgfVxuICAgIFxuICAgIC8vIENyZWF0ZSBhIHVuaXF1ZSBJRCBmb3IgdGhlIFNWR1xuICAgIGNvbnN0IHN2Z0lkID0gJ2QzLWxpbmUtJyArIE1hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnN1YnN0cigyLCA5KTtcbiAgICBcbiAgICAvLyBDcmVhdGUgU1ZHIGVsZW1lbnRcbiAgICBjb25zdCBzdmcgPSBkMy5zZWxlY3QoY29udGFpbmVyKVxuICAgICAgLmFwcGVuZCgnc3ZnJylcbiAgICAgIC5hdHRyKCdpZCcsIHN2Z0lkKVxuICAgICAgLmF0dHIoJ2NsYXNzJywgJ2xlYWRlci1saW5lJylcbiAgICAgIC5zdHlsZSgncG9zaXRpb24nLCAnYWJzb2x1dGUnKVxuICAgICAgLnN0eWxlKCd0b3AnLCAnMCcpXG4gICAgICAuc3R5bGUoJ2xlZnQnLCAnMCcpXG4gICAgICAuc3R5bGUoJ3dpZHRoJywgJzEwMCUnKVxuICAgICAgLnN0eWxlKCdoZWlnaHQnLCAnMTAwJScpXG4gICAgICAuc3R5bGUoJ3BvaW50ZXItZXZlbnRzJywgJ25vbmUnKVxuICAgICAgLnN0eWxlKCdvdmVyZmxvdycsICd2aXNpYmxlJyk7XG4gICAgXG4gICAgLy8gQ2FsY3VsYXRlIHBvc2l0aW9uc1xuICAgIGNvbnN0IHNvdXJjZVJlY3QgPSBzb3VyY2VFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgIGNvbnN0IHRhcmdldFJlY3QgPSB0YXJnZXRFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgIGNvbnN0IGNvbnRhaW5lclJlY3QgPSBjb250YWluZXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgXG4gICAgLy8gRGV0ZXJtaW5lIGVkZ2UgY29ubmVjdGlvbiBwb2ludHMgLSBhbHdheXMgcmlnaHQgdG8gbGVmdFxuICAgIGxldCBzb3VyY2VYLCBzb3VyY2VZLCB0YXJnZXRYLCB0YXJnZXRZO1xuXG4gICAgLy8gU291cmNlIC0gYWx3YXlzIGNvbm5lY3QgZnJvbSB0aGUgcmlnaHQgZWRnZVxuICAgIHNvdXJjZVggPSBzb3VyY2VSZWN0LnJpZ2h0IC0gY29udGFpbmVyUmVjdC5sZWZ0O1xuICAgIHNvdXJjZVkgPSBzb3VyY2VSZWN0LnRvcCArIChzb3VyY2VSZWN0LmhlaWdodCAvIDIpIC0gY29udGFpbmVyUmVjdC50b3A7XG5cbiAgICAvLyBUYXJnZXQgLSBhbHdheXMgY29ubmVjdCB0byB0aGUgbGVmdCBlZGdlXG4gICAgdGFyZ2V0WCA9IHRhcmdldFJlY3QubGVmdCAtIGNvbnRhaW5lclJlY3QubGVmdDtcbiAgICB0YXJnZXRZID0gdGFyZ2V0UmVjdC50b3AgKyAodGFyZ2V0UmVjdC5oZWlnaHQgLyAyKSAtIGNvbnRhaW5lclJlY3QudG9wO1xuICAgIFxuICAgIC8vIENyZWF0ZSBsaW5lIHdpdGggaW5pdGlhbCBvcGFjaXR5IDEgKHZpc2libGUgaW1tZWRpYXRlbHkpXG4gICAgLy8gSW5zdGVhZCBvZiBhIHN0cmFpZ2h0IGxpbmUsIGNyZWF0ZSBhIGdyaWQgbGluZSB3aXRoIHJpZ2h0IGFuZ2xlc1xuICAgIGNvbnN0IHBhdGg6IGFueSA9IHN2Zy5hcHBlbmQoJ3BhdGgnKVxuICAgICAgLmF0dHIoJ2QnLCBjcmVhdGVHcmlkUGF0aChzb3VyY2VYLCBzb3VyY2VZLCB0YXJnZXRYLCB0YXJnZXRZKSlcbiAgICAgIC5zdHlsZSgnc3Ryb2tlJywgJyMwMDAnKSAvLyBEYXJrZXIgY29sb3IgZm9yIGJldHRlciB2aXNpYmlsaXR5XG4gICAgICAuc3R5bGUoJ3N0cm9rZS13aWR0aCcsIG9wdGlvbnMuc2l6ZSB8fCAyKVxuICAgICAgLnN0eWxlKCdmaWxsJywgJ25vbmUnKVxuICAgICAgLnN0eWxlKCdvcGFjaXR5JywgMSkgLy8gU3RhcnQgdmlzaWJsZVxuICAgICAgLnN0eWxlKCdzdHJva2UtbGluZWpvaW4nLCAncm91bmQnKSAvLyBSb3VuZCBjb3JuZXJzIGZvciBhIHNtb290aGVyIGxvb2tcbiAgICAgIC5zdHlsZSgnc3Ryb2tlLWRhc2hhcnJheScsIG9wdGlvbnMuZGFzaGVkID8gJzUsNScgOiAnbm9uZScpOyAvLyBBZGQgZGFzaGVkIHN0eWxlIGlmIHNwZWNpZmllZFxuICAgIFxuICAgIC8vIEhlbHBlciBmdW5jdGlvbiB0byBjcmVhdGUgYSBncmlkIHBhdGhcbiAgICBmdW5jdGlvbiBjcmVhdGVHcmlkUGF0aCh4MTogbnVtYmVyLCB5MTogbnVtYmVyLCB4MjogbnVtYmVyLCB5MjogbnVtYmVyKSB7XG4gICAgICAvLyBDYWxjdWxhdGUgdGhlIG1pZHBvaW50IG9uIHRoZSB4LWF4aXNcbiAgICAgIGNvbnN0IG1pZFggPSB4MSArICh4MiAtIHgxKSAvIDI7XG4gICAgICBcbiAgICAgIC8vIENyZWF0ZSBhIHBhdGggd2l0aCAzIHNlZ21lbnRzIChob3Jpem9udGFsLCB2ZXJ0aWNhbCwgaG9yaXpvbnRhbClcbiAgICAgIHJldHVybiBgTSAke3gxfSAke3kxfSBMICR7bWlkWH0gJHt5MX0gTCAke21pZFh9ICR7eTJ9IEwgJHt4Mn0gJHt5Mn1gO1xuICAgIH1cbiAgXG4gICAgLy8gRGVmaW5lIG1hcmtlcnMgKGRpc2sgYXQgc3RhcnQgYW5kIGFycm93IGF0IGVuZClcbiAgICBjb25zdCBkZWZzID0gc3ZnLmFwcGVuZCgnZGVmcycpO1xuICAgIFxuICAgIC8vIEFkZCBzdGFydCBtYXJrZXIgKGRpc2svY2lyY2xlKVxuICAgIGlmIChvcHRpb25zLnN0YXJ0UGx1ZyA9PT0gJ2Rpc2MnIHx8IG9wdGlvbnMuc3RhcnRQbHVnICE9PSBmYWxzZSkge1xuICAgICAgZGVmcy5hcHBlbmQoJ21hcmtlcicpXG4gICAgICAgIC5hdHRyKCdpZCcsIGBzdGFydC1jaXJjbGUtJHtzdmdJZH1gKVxuICAgICAgICAuYXR0cigndmlld0JveCcsICcwIDAgMTAgMTAnKVxuICAgICAgICAuYXR0cigncmVmWCcsIDUpXG4gICAgICAgIC5hdHRyKCdyZWZZJywgNSlcbiAgICAgICAgLmF0dHIoJ21hcmtlcldpZHRoJywgOClcbiAgICAgICAgLmF0dHIoJ21hcmtlckhlaWdodCcsIDgpXG4gICAgICAgIC5hdHRyKCdvcmllbnQnLCAnYXV0bycpXG4gICAgICAgIC5hcHBlbmQoJ2NpcmNsZScpXG4gICAgICAgIC5hdHRyKCdjeCcsIDUpXG4gICAgICAgIC5hdHRyKCdjeScsIDUpXG4gICAgICAgIC5hdHRyKCdyJywgNC41KVxuICAgICAgICAuc3R5bGUoJ2ZpbGwnLCBvcHRpb25zLmNvbG9yIHx8ICcjMzMzJyk7XG4gICAgICBcbiAgICAgIHBhdGguYXR0cignbWFya2VyLXN0YXJ0JywgYHVybCgjc3RhcnQtY2lyY2xlLSR7c3ZnSWR9KWApO1xuICAgIH1cbiAgICBcbiAgICAvLyBBZGQgZW5kIG1hcmtlciAoYXJyb3cpXG4gICAgaWYgKG9wdGlvbnMuZW5kUGx1ZyA9PT0gJ2Fycm93JyB8fCBvcHRpb25zLmVuZFBsdWcgIT09IGZhbHNlKSB7XG4gICAgICBkZWZzLmFwcGVuZCgnbWFya2VyJylcbiAgICAgICAgLmF0dHIoJ2lkJywgYGFycm93aGVhZC0ke3N2Z0lkfWApXG4gICAgICAgIC5hdHRyKCd2aWV3Qm94JywgJzAgMCAxMCAxMCcpXG4gICAgICAgIC5hdHRyKCdyZWZYJywgOCkgIFxuICAgICAgICAuYXR0cigncmVmWScsIDUpXG4gICAgICAgIC5hdHRyKCdtYXJrZXJXaWR0aCcsIDkpXG4gICAgICAgIC5hdHRyKCdtYXJrZXJIZWlnaHQnLCA5KVxuICAgICAgICAuYXR0cignb3JpZW50JywgJ2F1dG8nKVxuICAgICAgICAuYXBwZW5kKCdwYXRoJylcbiAgICAgICAgLmF0dHIoJ2QnLCAnTSAwIDAgTCAxMCA1IEwgMCAxMCB6JylcbiAgICAgICAgLnN0eWxlKCdmaWxsJywgb3B0aW9ucy5jb2xvciB8fCAnIzMzMycpO1xuICAgICAgXG4gICAgICBwYXRoLmF0dHIoJ21hcmtlci1lbmQnLCBgdXJsKCNhcnJvd2hlYWQtJHtzdmdJZH0pYCk7XG4gICAgfVxuICAgIFxuICAgIC8vIENyZWF0ZSB0aGUgRDNMaW5lIG9iamVjdCB3aXRoIEFQSSBzaW1pbGFyIHRvIExlYWRlckxpbmVcbiAgICBjb25zdCBkM0xpbmU6IEQzTGluZSA9IHtcbiAgICAgIHNvdXJjZTogc291cmNlRWxlbWVudCxcbiAgICAgIHRhcmdldDogdGFyZ2V0RWxlbWVudCxcbiAgICAgIHBhdGg6IHBhdGgsXG4gICAgICBzdmc6IHN2ZyxcbiAgICAgIFxuICAgICAgLy8gUG9zaXRpb24gbWV0aG9kIHRvIHVwZGF0ZSBsaW5lIGNvb3JkaW5hdGVzXG4gICAgICBwb3NpdGlvbjogZnVuY3Rpb24oKSB7XG4gICAgICAgIC8vIEdldCB1cGRhdGVkIHBvc2l0aW9uc1xuICAgICAgICBjb25zdCB1cGRhdGVkU291cmNlUmVjdCA9IHNvdXJjZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgIGNvbnN0IHVwZGF0ZWRUYXJnZXRSZWN0ID0gdGFyZ2V0RWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgY29uc3QgdXBkYXRlZENvbnRhaW5lclJlY3QgPSBjb250YWluZXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgIFxuICAgICAgICAvLyBTb3VyY2UgLSBhbHdheXMgY29ubmVjdCBmcm9tIHRoZSByaWdodCBlZGdlXG4gICAgICAgIGNvbnN0IHVwZGF0ZWRTb3VyY2VYID0gdXBkYXRlZFNvdXJjZVJlY3QucmlnaHQgLSB1cGRhdGVkQ29udGFpbmVyUmVjdC5sZWZ0O1xuICAgICAgICBjb25zdCB1cGRhdGVkU291cmNlWSA9IHVwZGF0ZWRTb3VyY2VSZWN0LnRvcCArICh1cGRhdGVkU291cmNlUmVjdC5oZWlnaHQgLyAyKSAtIHVwZGF0ZWRDb250YWluZXJSZWN0LnRvcDtcbiAgICAgICAgXG4gICAgICAgIC8vIFRhcmdldCAtIGFsd2F5cyBjb25uZWN0IHRvIHRoZSBsZWZ0IGVkZ2VcbiAgICAgICAgY29uc3QgdXBkYXRlZFRhcmdldFggPSB1cGRhdGVkVGFyZ2V0UmVjdC5sZWZ0IC0gdXBkYXRlZENvbnRhaW5lclJlY3QubGVmdDtcbiAgICAgICAgY29uc3QgdXBkYXRlZFRhcmdldFkgPSB1cGRhdGVkVGFyZ2V0UmVjdC50b3AgKyAodXBkYXRlZFRhcmdldFJlY3QuaGVpZ2h0IC8gMikgLSB1cGRhdGVkQ29udGFpbmVyUmVjdC50b3A7XG4gICAgICAgIFxuICAgICAgICAvLyBVcGRhdGUgcGF0aCB3aXRoIGdyaWQgcGF0aFxuICAgICAgICBjb25zdCBtaWRYID0gdXBkYXRlZFNvdXJjZVggKyAodXBkYXRlZFRhcmdldFggLSB1cGRhdGVkU291cmNlWCkgLyAyO1xuICAgICAgICBwYXRoLmF0dHIoJ2QnLCBgTSAke3VwZGF0ZWRTb3VyY2VYfSAke3VwZGF0ZWRTb3VyY2VZfSBMICR7bWlkWH0gJHt1cGRhdGVkU291cmNlWX0gTCAke21pZFh9ICR7dXBkYXRlZFRhcmdldFl9IEwgJHt1cGRhdGVkVGFyZ2V0WH0gJHt1cGRhdGVkVGFyZ2V0WX1gKVxuICAgICAgICAgICAgLnN0eWxlKCdzdHJva2UtZGFzaGFycmF5Jywgb3B0aW9ucy5kYXNoZWQgPyAnNSw1JyA6ICdub25lJylcbiAgICAgICAgICAgIC8vIEVuc3VyZSBtYXJrZXJzIGFyZSBwcmVzZXJ2ZWQgZHVyaW5nIHJlcG9zaXRpb25pbmdcbiAgICAgICAgICAgIC5hdHRyKCdtYXJrZXItc3RhcnQnLCBvcHRpb25zLnN0YXJ0UGx1ZyAhPT0gZmFsc2UgPyBgdXJsKCNzdGFydC1jaXJjbGUtJHtzdmdJZH0pYCA6IG51bGwpXG4gICAgICAgICAgICAuYXR0cignbWFya2VyLWVuZCcsIG9wdGlvbnMuZW5kUGx1ZyAhPT0gZmFsc2UgPyBgdXJsKCNhcnJvd2hlYWQtJHtzdmdJZH0pYCA6IG51bGwpO1xuICAgICAgfSxcbiAgICAgIFxuICAgICAgLy8gU2hvdyBtZXRob2Qgd2l0aCBhbmltYXRpb24gb3B0aW9uXG4gICAgICBzaG93OiBmdW5jdGlvbihhbmltYXRpb24gPSAnJykge1xuICAgICAgICBpZiAoYW5pbWF0aW9uID09PSAnZHJhdycpIHtcbiAgICAgICAgICAvLyBFbnN1cmUgdGhlIHBhdGggaGFzIGEgbm9kZSBiZWZvcmUgY2FsY3VsYXRpbmcgdG90YWwgbGVuZ3RoXG4gICAgICAgICAgY29uc3QgcGF0aE5vZGUgPSBwYXRoLm5vZGUoKTtcbiAgICAgICAgICBpZiAoIXBhdGhOb2RlKSByZXR1cm47XG4gICAgICAgICAgXG4gICAgICAgICAgY29uc3QgdG90YWxMZW5ndGggPSBwYXRoTm9kZS5nZXRUb3RhbExlbmd0aCgpO1xuICAgICAgICAgIFxuICAgICAgICAgIHBhdGguc3R5bGUoJ29wYWNpdHknLCAxKVxuICAgICAgICAgICAgLmF0dHIoJ3N0cm9rZS1kYXNoYXJyYXknLCB0b3RhbExlbmd0aClcbiAgICAgICAgICAgIC5hdHRyKCdzdHJva2UtZGFzaG9mZnNldCcsIHRvdGFsTGVuZ3RoKVxuICAgICAgICAgICAgLnRyYW5zaXRpb24oKVxuICAgICAgICAgICAgLmR1cmF0aW9uKG9wdGlvbnMuYW5pbU9wdGlvbnM/LmR1cmF0aW9uIHx8IDIwMDApXG4gICAgICAgICAgICAuZWFzZShkMy5lYXNlTGluZWFyKVxuICAgICAgICAgICAgLmF0dHIoJ3N0cm9rZS1kYXNob2Zmc2V0JywgMCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcGF0aC5zdHlsZSgnb3BhY2l0eScsIDEpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgXG4gICAgICAvLyBSZW1vdmUgbWV0aG9kXG4gICAgICByZW1vdmU6IGZ1bmN0aW9uKCkge1xuICAgICAgICBzdmcucmVtb3ZlKCk7XG4gICAgICB9XG4gICAgfTtcbiAgICBcbiAgICAvLyBJbW1lZGlhdGVseSBjYWxsIHNob3cgdG8gbWFrZSB0aGUgbGluZSB2aXNpYmxlXG4gICAgZDNMaW5lLnNob3cob3B0aW9ucy5hbmltYXRpb24pO1xuICAgIFxuICAgIHJldHVybiBkM0xpbmU7XG4gIH1cblxuICB1cGRhdGVDb25uZWN0b3JzTWFwKG1hcDogYW55KTogdm9pZCB7XG4gICAgdGhpcy5jb25uZWN0b3JNYXAgPSBtYXA7XG4gIH1cblxuICBwb3NpdGlvbihsaW5lOiBhbnkpOiB2b2lkIHtcbiAgICBpZiAoIWxpbmUgfHwgIWxpbmUucG9zaXRpb24pIHJldHVybjtcbiAgICBcbiAgICB0aGlzLmVsbVdyYXBwZXIuc3R5bGUudHJhbnNmb3JtID0gJ25vbmUnO1xuICAgIHZhciByZWN0V3JhcHBlciA9IHRoaXMuZWxtV3JhcHBlci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAvLyBNb3ZlIHRvIHRoZSBvcmlnaW4gb2YgY29vcmRpbmF0ZXMgYXMgdGhlIGRvY3VtZW50XG4gICAgdGhpcy5lbG1XcmFwcGVyLnN0eWxlLnRyYW5zZm9ybSA9ICd0cmFuc2xhdGUoJyArXG4gICAgICAoKHJlY3RXcmFwcGVyLmxlZnQgKyB3aW5kb3cucGFnZVhPZmZzZXQpICogLTEpICsgJ3B4LCAnICtcbiAgICAgICgocmVjdFdyYXBwZXIudG9wICsgd2luZG93LnBhZ2VZT2Zmc2V0KSAqIC0xKSArICdweCknO1xuICAgIFxuICAgIGxpbmUucG9zaXRpb24oKTtcbiAgfVxuXG4gIHJlbW92ZUFsbExpbmVzKCk6IHZvaWQge1xuICAgIGlmKHRoaXMuY29ubmVjdG9yTWFwKSB7XG4gICAgICBmb3IgKGNvbnN0IGtleSBpbiB0aGlzLmNvbm5lY3Rvck1hcCkge1xuICAgICAgICAvLyBSZW1vdmUgYWxsIG4tMSBsaW5lcyBhbmQga2VlcCBvbmx5IGN1cnJlbnQgc2VsZWN0aW9uLCBhbHNvIGNsZWFyIG4rMSBsaW5lc1xuICAgICAgICBpZih0aGlzLmNvbm5lY3Rvck1hcFtrZXldICYmIHRoaXMuY29ubmVjdG9yTWFwW2tleV0ubGluZXMgJiYgdGhpcy5jb25uZWN0b3JNYXBba2V5XS5saW5lcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgY29uc3QgbGluZXMgPSB0aGlzLmNvbm5lY3Rvck1hcFtrZXldLmxpbmVzO1xuICAgICAgICAgIGxpbmVzLmZvckVhY2goYXN5bmMgKGVsZW1lbnQ6IGFueSwgaW5kZXg6IGFueSkgPT4ge1xuICAgICAgICAgICAgICBhd2FpdCBlbGVtZW50LmxpbmUgJiYgZWxlbWVudC5saW5lLnJlbW92ZSgpO1xuICAgICAgICAgICAgICBsaW5lcy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIHRoaXMuY29ubmVjdG9yTWFwW2tleV0ubGluZXMgPSBsaW5lcztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICAvLyB0byByZXNldCBjb25uZWN0b3IgbWFwIGFmdGVyIGNsZWFyaW5nIGFsbCB0aGUgbGluZXNcbiAgICB0aGlzLnVwZGF0ZUNvbm5lY3RvcnNNYXAoe30pO1xuICB9XG5cbiAgcmVwb3NpdGlvbkFsbExpbmVzKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmNvbm5lY3Rvck1hcCkge1xuICAgICAgT2JqZWN0LnZhbHVlcyh0aGlzLmNvbm5lY3Rvck1hcCkuZm9yRWFjaCgoY29ubmVjdG9yOiBhbnkpID0+IHtcbiAgICAgICAgaWYgKGNvbm5lY3RvciAmJiBjb25uZWN0b3IubGluZXMpIHtcbiAgICAgICAgICBjb25uZWN0b3IubGluZXMuZm9yRWFjaCgoaXRlbTogYW55KSA9PiB7XG4gICAgICAgICAgICBpZiAoaXRlbS5saW5lICYmIHR5cGVvZiBpdGVtLmxpbmUucG9zaXRpb24gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgaXRlbS5saW5lLnBvc2l0aW9uKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxufSJdfQ==
286
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29ubmVjdG9yLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJyYXJ5L3N1bmJpcmQtY2IvdHJlZS1oaWVyYXJjaHkvc3JjL2xpYi9zZXJ2aWNlcy9jb25uZWN0b3Iuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMxRCxPQUFPLEtBQUssRUFBRSxNQUFNLElBQUksQ0FBQzs7QUFrQnpCLE1BQU0sT0FBTyxnQkFBZ0I7SUFLM0I7UUFKQSxpQkFBWSxHQUF5QixFQUFFLENBQUM7UUFFeEMsc0JBQWlCLEdBQUcsb0JBQW9CLENBQUM7SUFHekMsQ0FBQztJQUVELFNBQVMsQ0FBQyxNQUFXLEVBQUUsTUFBVyxFQUFFLFVBQWUsYUFBYSxFQUFFLG9CQUF5QixTQUFTLEVBQUUsb0JBQXlCLFNBQVM7UUFDdEksTUFBTSxRQUFRLEdBQVEsRUFBQyxHQUFHLGFBQWEsRUFBRSxHQUFHLE9BQU8sRUFBQyxDQUFDO1FBQ3JELFFBQVEsQ0FBQyxRQUFRLENBQUMsR0FBRyxJQUFJLENBQUE7UUFDekIsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQ3pCLElBQUksYUFBYSxHQUFtQixFQUFFLENBQUM7WUFDdkMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFO2dCQUN6QixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRSxPQUFPLEVBQUUsUUFBUSxDQUFDLENBQUM7Z0JBQzVELGFBQWEsQ0FBQyxJQUFJLENBQUM7b0JBQ2pCLE1BQU0sRUFBRSxPQUFPO29CQUNmLElBQUksRUFBRSxRQUFRO2lCQUNmLENBQUMsQ0FBQztnQkFFSCxJQUFHLGlCQUFpQixFQUFFO29CQUNw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OlsiLyogZXNsaW50LWRpc2FibGUgKi9cbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGRlZmF1bHRDb25maWcgfSBmcm9tICcuLi9jb25zdGFudHMvYXBwLWNvbnN0YW50JztcbmltcG9ydCAqIGFzIGQzIGZyb20gJ2QzJztcblxuaW50ZXJmYWNlIENvbm5lY3RlZERvdCB7XG4gIHRhcmdldDogYW55O1xuICBsaW5lOiBhbnk7XG59XG5cbmludGVyZmFjZSBEM0xpbmUge1xuICBzb3VyY2U6IGFueTtcbiAgdGFyZ2V0OiBhbnk7XG4gIHBhdGg6IGFueTtcbiAgc3ZnOiBhbnk7XG4gIHBvc2l0aW9uOiAoKSA9PiB2b2lkO1xuICBzaG93OiAoYW5pbWF0aW9uPzogc3RyaW5nKSA9PiB2b2lkO1xuICByZW1vdmU6ICgpID0+IHZvaWQ7XG59XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBDb25uZWN0b3JTZXJ2aWNlIHtcbiAgY29ubmVjdG9yTWFwOiB7W2tleTogc3RyaW5nXTogYW55fSA9IHt9O1xuICBlbG1XcmFwcGVyOiBhbnk7XG4gIGNvbnRhaW5lclNlbGVjdG9yID0gJyN0cmVlVmlld0NvbnRhaW5lcic7IC8vIFlvdSBtaWdodCBuZWVkIHRvIGFkanVzdCB0aGlzIHNlbGVjdG9yXG5cbiAgY29uc3RydWN0b3IoKSB7XG4gIH1cblxuICBfZHJhd0xpbmUoc291cmNlOiBhbnksIHRhcmdldDogYW55LCBvcHRpb25zOiBhbnkgPSBkZWZhdWx0Q29uZmlnLCBzb3VyY2VDb250YWluZXJJZDogYW55ID0gdW5kZWZpbmVkLCB0YXJnZXRDb250YWluZXJJZDogYW55ID0gdW5kZWZpbmVkKTogYW55IHtcbiAgICBjb25zdCBfb3B0aW9ucyA9IDxhbnk+ey4uLmRlZmF1bHRDb25maWcsIC4uLm9wdGlvbnN9O1xuICAgIF9vcHRpb25zWydkYXNoZWQnXSA9IHRydWVcbiAgICBpZiAoQXJyYXkuaXNBcnJheSh0YXJnZXQpKSB7XG4gICAgICBsZXQgY29ubmVjdGVkRG90czogQ29ubmVjdGVkRG90W10gPSBbXTtcbiAgICAgIHRhcmdldC5mb3JFYWNoKChfdGFyZ2V0KSA9PiB7XG4gICAgICAgIGNvbnN0IHRlbXBMaW5lID0gdGhpcy5yZW5kZXJMaW5lKHNvdXJjZSwgX3RhcmdldCwgX29wdGlvbnMpO1xuICAgICAgICBjb25uZWN0ZWREb3RzLnB1c2goe1xuICAgICAgICAgIHRhcmdldDogX3RhcmdldCxcbiAgICAgICAgICBsaW5lOiB0ZW1wTGluZVxuICAgICAgICB9KTtcbiAgICAgICAgXG4gICAgICAgIGlmKHNvdXJjZUNvbnRhaW5lcklkKSB7XG4gICAgICAgICAgY29uc3Qgc291cmNlQ29udGFpbmVyID0gZG9jdW1lbnQucXVlcnlTZWxlY3Rvcihzb3VyY2VDb250YWluZXJJZCk7XG4gICAgICAgICAgaWYgKHNvdXJjZUNvbnRhaW5lcikge1xuICAgICAgICAgICAgc291cmNlQ29udGFpbmVyLmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsICgpID0+IHtcbiAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICB0ZW1wTGluZSAmJiB0ZW1wTGluZS5wb3NpdGlvbigpO1xuICAgICAgICAgICAgICB9IGNhdGNoKGUpIHtcbiAgICAgICAgICAgICAgICAvLyBFcnJvciBoYW5kbGluZ1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LCB0cnVlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgXG4gICAgICAgIGlmICh0YXJnZXRDb250YWluZXJJZCkge1xuICAgICAgICAgIGNvbnN0IHRhcmdldENvbnRhaW5lciA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IodGFyZ2V0Q29udGFpbmVySWQpO1xuICAgICAgICAgIGlmICh0YXJnZXRDb250YWluZXIpIHtcbiAgICAgICAgICAgIHRhcmdldENvbnRhaW5lci5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCAoKSA9PiB7XG4gICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgdGVtcExpbmUgJiYgdGVtcExpbmUucG9zaXRpb24oKTtcbiAgICAgICAgICAgICAgfSBjYXRjaChlKSB7XG4gICAgICAgICAgICAgICAgLy8gRXJyb3IgaGFuZGxpbmdcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSwgdHJ1ZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIHJldHVybiBjb25uZWN0ZWREb3RzO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy5yZW5kZXJMaW5lKHNvdXJjZSwgdGFyZ2V0LCBfb3B0aW9ucyk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSByZW5kZXJMaW5lKHNvdXJjZTogYW55LCB0YXJnZXQ6IGFueSwgb3B0aW9uczogYW55KTogRDNMaW5lIHtcbiAgICAvLyBGaW5kIG9yIGNyZWF0ZSB0aGUgY29udGFpbmVyIGVsZW1lbnRcbiAgICBjb25zdCB0cmVlVmlld0NvbXBvbmVudDogYW55ID0gZG9jdW1lbnQucXVlcnlTZWxlY3Rvcih0aGlzLmNvbnRhaW5lclNlbGVjdG9yKTtcbiAgICBpZiAoIXRyZWVWaWV3Q29tcG9uZW50KSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBzb3VyY2U6IG51bGwsXG4gICAgICAgIHRhcmdldDogbnVsbCxcbiAgICAgICAgcGF0aDogbnVsbCxcbiAgICAgICAgc3ZnOiBudWxsLFxuICAgICAgICBwb3NpdGlvbjogKCkgPT4ge30sXG4gICAgICAgIHNob3c6ICgpID0+IHt9LFxuICAgICAgICByZW1vdmU6ICgpID0+IHt9XG4gICAgICB9O1xuICAgIH1cbiAgICBcbiAgICAvLyBDcmVhdGUgb3IgZ2V0IGNvbnRhaW5lciBmb3IgdGhlIFNWR1xuICAgIGxldCBjb250YWluZXI6IGFueSA9IHRyZWVWaWV3Q29tcG9uZW50LnF1ZXJ5U2VsZWN0b3IoJyNsZWFkZXItbGluZS1jb250YWluZXInKTtcbiAgICBpZiAoIWNvbnRhaW5lcikge1xuICAgICAgLy8gQ3JlYXRlIGEgd3JhcHBlciBjb250YWluZXIgdG8gY29udHJvbCB0aGUgb3ZlcmZsb3cgYXQgdGhlIHRvcFxuICAgICAgbGV0IG92ZXJmbG93V3JhcHBlciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgICAgb3ZlcmZsb3dXcmFwcGVyLmlkID0gJ2xlYWRlci1saW5lLW92ZXJmbG93LXdyYXBwZXInO1xuICAgICAgb3ZlcmZsb3dXcmFwcGVyLnN0eWxlLnBvc2l0aW9uID0gJ2Fic29sdXRlJztcbiAgICAgIG92ZXJmbG93V3JhcHBlci5zdHlsZS50b3AgPSAnODBweCc7IC8vIFNhbWUgdG9wIHBvc2l0aW9uXG4gICAgICBvdmVyZmxvd1dyYXBwZXIuc3R5bGUuYm90dG9tID0gJzAnO1xuICAgICAgb3ZlcmZsb3dXcmFwcGVyLnN0eWxlLmxlZnQgPSAnMCc7XG4gICAgICBvdmVyZmxvd1dyYXBwZXIuc3R5bGUucmlnaHQgPSAnMCc7XG4gICAgICBvdmVyZmxvd1dyYXBwZXIuc3R5bGUub3ZlcmZsb3cgPSAnaGlkZGVuJzsgLy8gSGlkZSBhbnl0aGluZyBhYm92ZSB0aGlzIGNvbnRhaW5lclxuICAgICAgb3ZlcmZsb3dXcmFwcGVyLnN0eWxlLnBvaW50ZXJFdmVudHMgPSAnbm9uZSc7IC8vIEFsbG93IGNsaWNrcyB0byBwYXNzIHRocm91Z2hcbiAgICAgIFxuICAgICAgLy8gT3JpZ2luYWwgY29udGFpbmVyIHJlbWFpbnMgdGhlIHNhbWUgYnV0IHBvc2l0aW9uZWQgYXQgdG9wOjAgd2l0aGluIHRoZSB3cmFwcGVyXG4gICAgICBjb250YWluZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICAgIGNvbnRhaW5lci5pZCA9ICdsZWFkZXItbGluZS1jb250YWluZXInO1xuICAgICAgY29udGFpbmVyLnN0eWxlLnBvc2l0aW9uID0gJ2Fic29sdXRlJztcbiAgICAgIGNvbnRhaW5lci5zdHlsZS50b3AgPSAnMCc7IC8vIENoYW5nZWQgdG8gMCBhcyBpdCdzIG5vdyByZWxhdGl2ZSB0byB3cmFwcGVyXG4gICAgICBjb250YWluZXIuc3R5bGUuYm90dG9tID0gJzAnO1xuICAgICAgY29udGFpbmVyLnN0eWxlLmxlZnQgPSAnMCc7XG4gICAgICBjb250YWluZXIuc3R5bGUucmlnaHQgPSAnMCc7XG4gICAgICBjb250YWluZXIuc3R5bGUud2lkdGggPSAnMTAwJSc7XG4gICAgICBjb250YWluZXIuc3R5bGUuaGVpZ2h0ID0gJzEwMCUnO1xuICAgICAgXG4gICAgICAvLyBBZGQgcmVzaXplIG9ic2VydmVyIHRvIGR5bmFtaWNhbGx5IGFkanVzdCBjb250YWluZXIgd2lkdGhcbiAgICAgIGNvbnN0IHJlc2l6ZU9ic2VydmVyID0gbmV3IFJlc2l6ZU9ic2VydmVyKGVudHJpZXMgPT4ge1xuICAgICAgICBmb3IgKGNvbnN0IGVudHJ5IG9mIGVudHJpZXMpIHtcbiAgICAgICAgICBpZiAoZW50cnkudGFyZ2V0ID09PSB0cmVlVmlld0NvbXBvbmVudCkge1xuICAgICAgICAgICAgY29udGFpbmVyLnN0eWxlLndpZHRoID0gYCR7ZW50cnkuY29udGVudFJlY3Qud2lkdGh9cHhgO1xuICAgICAgICAgICAgXG4gICAgICAgICAgICAvLyBSZXBvc2l0aW9uIGFsbCBsaW5lcyB3aGVuIGNvbnRhaW5lciByZXNpemVzXG4gICAgICAgICAgICBpZiAodGhpcy5jb25uZWN0b3JNYXApIHtcbiAgICAgICAgICAgICAgT2JqZWN0LnZhbHVlcyh0aGlzLmNvbm5lY3Rvck1hcCkuZm9yRWFjaCgoY29ubmVjdG9yOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoY29ubmVjdG9yICYmIGNvbm5lY3Rvci5saW5lcykge1xuICAgICAgICAgICAgICAgICAgY29ubmVjdG9yLmxpbmVzLmZvckVhY2goKGl0ZW06IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoaXRlbS5saW5lICYmIHR5cGVvZiBpdGVtLmxpbmUucG9zaXRpb24gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgICAgICAgICBpdGVtLmxpbmUucG9zaXRpb24oKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgXG4gICAgICAvLyBTdGFydCBvYnNlcnZpbmcgdGhlIHRyZWVWaWV3Q29tcG9uZW50XG4gICAgICByZXNpemVPYnNlcnZlci5vYnNlcnZlKHRyZWVWaWV3Q29tcG9uZW50KTtcbiAgICAgIFxuICAgICAgLy8gQWxzbyBsaXN0ZW4gZm9yIHNjcm9sbCBldmVudHMgdG8gcmVwb3NpdGlvbiBsaW5lc1xuICAgICAgdHJlZVZpZXdDb21wb25lbnQuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgKCkgPT4ge1xuICAgICAgICAvLyBVcGRhdGUgY29udGFpbmVyIGRpbWVuc2lvbnMgYmFzZWQgb24gdmlzaWJsZSBhcmVhXG4gICAgICAgIG92ZXJmbG93V3JhcHBlci5zdHlsZS53aWR0aCA9IGAke3RyZWVWaWV3Q29tcG9uZW50LnNjcm9sbFdpZHRofXB4YDtcbiAgICAgICAgb3ZlcmZsb3dXcmFwcGVyLnN0eWxlLmhlaWdodCA9IGAke3RyZWVWaWV3Q29tcG9uZW50LnNjcm9sbEhlaWdodH1weGA7XG4gICAgICAgIFxuICAgICAgICAvLyBSZXBvc2l0aW9uIGFsbCBhY3RpdmUgbGluZXNcbiAgICAgICAgdGhpcy5yZXBvc2l0aW9uQWxsTGluZXMoKTtcbiAgICAgIH0pO1xuICAgICAgXG4gICAgICBvdmVyZmxvd1dyYXBwZXIuYXBwZW5kQ2hpbGQoY29udGFpbmVyKTtcbiAgICAgIHRyZWVWaWV3Q29tcG9uZW50LmFwcGVuZENoaWxkKG92ZXJmbG93V3JhcHBlcik7XG4gICAgfVxuICAgIFxuICAgIC8vIFN0b3JlIGNvbnRhaW5lciByZWZlcmVuY2UgZm9yIGFjY2VzcyBpbiBvdGhlciBtZXRob2RzXG4gICAgdGhpcy5lbG1XcmFwcGVyID0gY29udGFpbmVyO1xuICAgIFxuICAgIC8vIEdldCB0aGUgc291cmNlIGFuZCB0YXJnZXQgZWxlbWVudHNcbiAgICBsZXQgc291cmNlRWxlbWVudCA9IHNvdXJjZTtcbiAgICBsZXQgdGFyZ2V0RWxlbWVudDogYW55O1xuICAgIFxuICAgIGlmICh0YXJnZXQudGFyZ2V0VHlwZSA9PT0gJ2lkJykge1xuICAgICAgdGFyZ2V0RWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldC50YXJnZXQpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0YXJnZXRFbGVtZW50ID0gdGFyZ2V0LnRhcmdldDtcbiAgICB9XG4gICAgXG4gICAgLy8gRW5zdXJlIGJvdGggZWxlbWVudHMgZXhpc3RcbiAgICBpZiAoIXNvdXJjZUVsZW1lbnQgfHwgIXRhcmdldEVsZW1lbnQpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHNvdXJjZTogbnVsbCxcbiAgICAgICAgdGFyZ2V0OiBudWxsLFxuICAgICAgICBwYXRoOiBudWxsLFxuICAgICAgICBzdmc6IG51bGwsXG4gICAgICAgIHBvc2l0aW9uOiAoKSA9PiB7fSxcbiAgICAgICAgc2hvdzogKCkgPT4ge30sXG4gICAgICAgIHJlbW92ZTogKCkgPT4ge31cbiAgICAgIH07XG4gICAgfVxuICAgIFxuICAgIC8vIENyZWF0ZSBhIHVuaXF1ZSBJRCBmb3IgdGhlIFNWR1xuICAgIGNvbnN0IHN2Z0lkID0gJ2QzLWxpbmUtJyArIE1hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnN1YnN0cigyLCA5KTtcbiAgICBcbiAgICAvLyBDcmVhdGUgU1ZHIGVsZW1lbnRcbiAgICBjb25zdCBzdmcgPSBkMy5zZWxlY3QoY29udGFpbmVyKVxuICAgICAgLmFwcGVuZCgnc3ZnJylcbiAgICAgIC5hdHRyKCdpZCcsIHN2Z0lkKVxuICAgICAgLmF0dHIoJ2NsYXNzJywgJ2xlYWRlci1saW5lJylcbiAgICAgIC5zdHlsZSgncG9zaXRpb24nLCAnYWJzb2x1dGUnKVxuICAgICAgLnN0eWxlKCd0b3AnLCAnMCcpXG4gICAgICAuc3R5bGUoJ2xlZnQnLCAnMCcpXG4gICAgICAuc3R5bGUoJ3dpZHRoJywgJzEwMCUnKVxuICAgICAgLnN0eWxlKCdoZWlnaHQnLCAnMTAwJScpXG4gICAgICAuc3R5bGUoJ3BvaW50ZXItZXZlbnRzJywgJ25vbmUnKVxuICAgICAgLnN0eWxlKCdvdmVyZmxvdycsICd2aXNpYmxlJyk7XG4gICAgXG4gICAgLy8gQ2FsY3VsYXRlIHBvc2l0aW9uc1xuICAgIGNvbnN0IHNvdXJjZVJlY3QgPSBzb3VyY2VFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgIGNvbnN0IHRhcmdldFJlY3QgPSB0YXJnZXRFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgIGNvbnN0IGNvbnRhaW5lclJlY3QgPSBjb250YWluZXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgXG4gICAgLy8gRGV0ZXJtaW5lIGVkZ2UgY29ubmVjdGlvbiBwb2ludHMgLSBhbHdheXMgcmlnaHQgdG8gbGVmdFxuICAgIGxldCBzb3VyY2VYLCBzb3VyY2VZLCB0YXJnZXRYLCB0YXJnZXRZO1xuXG4gICAgLy8gU291cmNlIC0gYWx3YXlzIGNvbm5lY3QgZnJvbSB0aGUgcmlnaHQgZWRnZVxuICAgIHNvdXJjZVggPSBzb3VyY2VSZWN0LnJpZ2h0IC0gY29udGFpbmVyUmVjdC5sZWZ0O1xuICAgIHNvdXJjZVkgPSBzb3VyY2VSZWN0LnRvcCArIChzb3VyY2VSZWN0LmhlaWdodCAvIDIpIC0gY29udGFpbmVyUmVjdC50b3A7XG5cbiAgICAvLyBUYXJnZXQgLSBhbHdheXMgY29ubmVjdCB0byB0aGUgbGVmdCBlZGdlXG4gICAgdGFyZ2V0WCA9IHRhcmdldFJlY3QubGVmdCAtIGNvbnRhaW5lclJlY3QubGVmdDtcbiAgICB0YXJnZXRZID0gdGFyZ2V0UmVjdC50b3AgKyAodGFyZ2V0UmVjdC5oZWlnaHQgLyAyKSAtIGNvbnRhaW5lclJlY3QudG9wO1xuICAgIFxuICAgIC8vIENyZWF0ZSBsaW5lIHdpdGggaW5pdGlhbCBvcGFjaXR5IDEgKHZpc2libGUgaW1tZWRpYXRlbHkpXG4gICAgLy8gSW5zdGVhZCBvZiBhIHN0cmFpZ2h0IGxpbmUsIGNyZWF0ZSBhIGdyaWQgbGluZSB3aXRoIHJpZ2h0IGFuZ2xlc1xuICAgIGNvbnN0IHBhdGg6IGFueSA9IHN2Zy5hcHBlbmQoJ3BhdGgnKVxuICAgICAgLmF0dHIoJ2QnLCBjcmVhdGVHcmlkUGF0aChzb3VyY2VYLCBzb3VyY2VZLCB0YXJnZXRYLCB0YXJnZXRZKSlcbiAgICAgIC5zdHlsZSgnc3Ryb2tlJywgJyMwMDAnKSAvLyBEYXJrZXIgY29sb3IgZm9yIGJldHRlciB2aXNpYmlsaXR5XG4gICAgICAuc3R5bGUoJ3N0cm9rZS13aWR0aCcsIG9wdGlvbnMuc2l6ZSB8fCAyKVxuICAgICAgLnN0eWxlKCdmaWxsJywgJ25vbmUnKVxuICAgICAgLnN0eWxlKCdvcGFjaXR5JywgMSkgLy8gU3RhcnQgdmlzaWJsZVxuICAgICAgLnN0eWxlKCdzdHJva2UtbGluZWpvaW4nLCAncm91bmQnKSAvLyBSb3VuZCBjb3JuZXJzIGZvciBhIHNtb290aGVyIGxvb2tcbiAgICAgIC5zdHlsZSgnc3Ryb2tlLWRhc2hhcnJheScsIG9wdGlvbnMuZGFzaGVkID8gJzUsNScgOiAnbm9uZScpOyAvLyBBZGQgZGFzaGVkIHN0eWxlIGlmIHNwZWNpZmllZFxuICAgIFxuICAgIC8vIEhlbHBlciBmdW5jdGlvbiB0byBjcmVhdGUgYSBncmlkIHBhdGhcbiAgICBmdW5jdGlvbiBjcmVhdGVHcmlkUGF0aCh4MTogbnVtYmVyLCB5MTogbnVtYmVyLCB4MjogbnVtYmVyLCB5MjogbnVtYmVyKSB7XG4gICAgICAvLyBDYWxjdWxhdGUgdGhlIG1pZHBvaW50IG9uIHRoZSB4LWF4aXNcbiAgICAgIGNvbnN0IG1pZFggPSB4MSArICh4MiAtIHgxKSAvIDI7XG4gICAgICBcbiAgICAgIC8vIENyZWF0ZSBhIHBhdGggd2l0aCAzIHNlZ21lbnRzIChob3Jpem9udGFsLCB2ZXJ0aWNhbCwgaG9yaXpvbnRhbClcbiAgICAgIHJldHVybiBgTSAke3gxfSAke3kxfSBMICR7bWlkWH0gJHt5MX0gTCAke21pZFh9ICR7eTJ9IEwgJHt4Mn0gJHt5Mn1gO1xuICAgIH1cbiAgXG4gICAgLy8gRGVmaW5lIG1hcmtlcnMgKGRpc2sgYXQgc3RhcnQgYW5kIGFycm93IGF0IGVuZClcbiAgICBjb25zdCBkZWZzID0gc3ZnLmFwcGVuZCgnZGVmcycpO1xuICAgIFxuICAgIC8vIEFkZCBzdGFydCBtYXJrZXIgKGRpc2svY2lyY2xlKVxuICAgIGlmIChvcHRpb25zLnN0YXJ0UGx1ZyA9PT0gJ2Rpc2MnIHx8IG9wdGlvbnMuc3RhcnRQbHVnICE9PSBmYWxzZSkge1xuICAgICAgZGVmcy5hcHBlbmQoJ21hcmtlcicpXG4gICAgICAgIC5hdHRyKCdpZCcsIGBzdGFydC1jaXJjbGUtJHtzdmdJZH1gKVxuICAgICAgICAuYXR0cigndmlld0JveCcsICcwIDAgMTAgMTAnKVxuICAgICAgICAuYXR0cigncmVmWCcsIDUpXG4gICAgICAgIC5hdHRyKCdyZWZZJywgNSlcbiAgICAgICAgLmF0dHIoJ21hcmtlcldpZHRoJywgOClcbiAgICAgICAgLmF0dHIoJ21hcmtlckhlaWdodCcsIDgpXG4gICAgICAgIC5hdHRyKCdvcmllbnQnLCAnYXV0bycpXG4gICAgICAgIC5hcHBlbmQoJ2NpcmNsZScpXG4gICAgICAgIC5hdHRyKCdjeCcsIDUpXG4gICAgICAgIC5hdHRyKCdjeScsIDUpXG4gICAgICAgIC5hdHRyKCdyJywgNC41KVxuICAgICAgICAuc3R5bGUoJ2ZpbGwnLCBvcHRpb25zLmNvbG9yIHx8ICcjMzMzJyk7XG4gICAgICBcbiAgICAgIHBhdGguYXR0cignbWFya2VyLXN0YXJ0JywgYHVybCgjc3RhcnQtY2lyY2xlLSR7c3ZnSWR9KWApO1xuICAgIH1cbiAgICBcbiAgICAvLyBBZGQgZW5kIG1hcmtlciAoYXJyb3cpXG4gICAgaWYgKG9wdGlvbnMuZW5kUGx1ZyA9PT0gJ2Fycm93JyB8fCBvcHRpb25zLmVuZFBsdWcgIT09IGZhbHNlKSB7XG4gICAgICBkZWZzLmFwcGVuZCgnbWFya2VyJylcbiAgICAgICAgLmF0dHIoJ2lkJywgYGFycm93aGVhZC0ke3N2Z0lkfWApXG4gICAgICAgIC5hdHRyKCd2aWV3Qm94JywgJzAgMCAxMCAxMCcpXG4gICAgICAgIC5hdHRyKCdyZWZYJywgOCkgIFxuICAgICAgICAuYXR0cigncmVmWScsIDUpXG4gICAgICAgIC5hdHRyKCdtYXJrZXJXaWR0aCcsIDkpXG4gICAgICAgIC5hdHRyKCdtYXJrZXJIZWlnaHQnLCA5KVxuICAgICAgICAuYXR0cignb3JpZW50JywgJ2F1dG8nKVxuICAgICAgICAuYXBwZW5kKCdwYXRoJylcbiAgICAgICAgLmF0dHIoJ2QnLCAnTSAwIDAgTCAxMCA1IEwgMCAxMCB6JylcbiAgICAgICAgLnN0eWxlKCdmaWxsJywgb3B0aW9ucy5jb2xvciB8fCAnIzMzMycpO1xuICAgICAgXG4gICAgICBwYXRoLmF0dHIoJ21hcmtlci1lbmQnLCBgdXJsKCNhcnJvd2hlYWQtJHtzdmdJZH0pYCk7XG4gICAgfVxuICAgIFxuICAgIC8vIENyZWF0ZSB0aGUgRDNMaW5lIG9iamVjdCB3aXRoIEFQSSBzaW1pbGFyIHRvIExlYWRlckxpbmVcbiAgICBjb25zdCBkM0xpbmU6IEQzTGluZSA9IHtcbiAgICAgIHNvdXJjZTogc291cmNlRWxlbWVudCxcbiAgICAgIHRhcmdldDogdGFyZ2V0RWxlbWVudCxcbiAgICAgIHBhdGg6IHBhdGgsXG4gICAgICBzdmc6IHN2ZyxcbiAgICAgIFxuICAgICAgLy8gUG9zaXRpb24gbWV0aG9kIHRvIHVwZGF0ZSBsaW5lIGNvb3JkaW5hdGVzXG4gICAgICBwb3NpdGlvbjogZnVuY3Rpb24oKSB7XG4gICAgICAgIC8vIEdldCB1cGRhdGVkIHBvc2l0aW9uc1xuICAgICAgICBjb25zdCB1cGRhdGVkU291cmNlUmVjdCA9IHNvdXJjZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgIGNvbnN0IHVwZGF0ZWRUYXJnZXRSZWN0ID0gdGFyZ2V0RWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgY29uc3QgdXBkYXRlZENvbnRhaW5lclJlY3QgPSBjb250YWluZXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgIFxuICAgICAgICAvLyBTb3VyY2UgLSBhbHdheXMgY29ubmVjdCBmcm9tIHRoZSByaWdodCBlZGdlXG4gICAgICAgIGNvbnN0IHVwZGF0ZWRTb3VyY2VYID0gdXBkYXRlZFNvdXJjZVJlY3QucmlnaHQgLSB1cGRhdGVkQ29udGFpbmVyUmVjdC5sZWZ0O1xuICAgICAgICBjb25zdCB1cGRhdGVkU291cmNlWSA9IHVwZGF0ZWRTb3VyY2VSZWN0LnRvcCArICh1cGRhdGVkU291cmNlUmVjdC5oZWlnaHQgLyAyKSAtIHVwZGF0ZWRDb250YWluZXJSZWN0LnRvcDtcbiAgICAgICAgXG4gICAgICAgIC8vIFRhcmdldCAtIGFsd2F5cyBjb25uZWN0IHRvIHRoZSBsZWZ0IGVkZ2VcbiAgICAgICAgY29uc3QgdXBkYXRlZFRhcmdldFggPSB1cGRhdGVkVGFyZ2V0UmVjdC5sZWZ0IC0gdXBkYXRlZENvbnRhaW5lclJlY3QubGVmdDtcbiAgICAgICAgY29uc3QgdXBkYXRlZFRhcmdldFkgPSB1cGRhdGVkVGFyZ2V0UmVjdC50b3AgKyAodXBkYXRlZFRhcmdldFJlY3QuaGVpZ2h0IC8gMikgLSB1cGRhdGVkQ29udGFpbmVyUmVjdC50b3A7XG4gICAgICAgIFxuICAgICAgICAvLyBVcGRhdGUgcGF0aCB3aXRoIGdyaWQgcGF0aFxuICAgICAgICBjb25zdCBtaWRYID0gdXBkYXRlZFNvdXJjZVggKyAodXBkYXRlZFRhcmdldFggLSB1cGRhdGVkU291cmNlWCkgLyAyO1xuICAgICAgICBwYXRoLmF0dHIoJ2QnLCBgTSAke3VwZGF0ZWRTb3VyY2VYfSAke3VwZGF0ZWRTb3VyY2VZfSBMICR7bWlkWH0gJHt1cGRhdGVkU291cmNlWX0gTCAke21pZFh9ICR7dXBkYXRlZFRhcmdldFl9IEwgJHt1cGRhdGVkVGFyZ2V0WH0gJHt1cGRhdGVkVGFyZ2V0WX1gKVxuICAgICAgICAgICAgLnN0eWxlKCdzdHJva2UtZGFzaGFycmF5Jywgb3B0aW9ucy5kYXNoZWQgPyAnNSw1JyA6ICdub25lJylcbiAgICAgICAgICAgIC8vIEVuc3VyZSBtYXJrZXJzIGFyZSBwcmVzZXJ2ZWQgZHVyaW5nIHJlcG9zaXRpb25pbmdcbiAgICAgICAgICAgIC5hdHRyKCdtYXJrZXItc3RhcnQnLCBvcHRpb25zLnN0YXJ0UGx1ZyAhPT0gZmFsc2UgPyBgdXJsKCNzdGFydC1jaXJjbGUtJHtzdmdJZH0pYCA6IG51bGwpXG4gICAgICAgICAgICAuYXR0cignbWFya2VyLWVuZCcsIG9wdGlvbnMuZW5kUGx1ZyAhPT0gZmFsc2UgPyBgdXJsKCNhcnJvd2hlYWQtJHtzdmdJZH0pYCA6IG51bGwpO1xuICAgICAgfSxcbiAgICAgIFxuICAgICAgLy8gU2hvdyBtZXRob2Qgd2l0aCBhbmltYXRpb24gb3B0aW9uXG4gICAgICBzaG93OiBmdW5jdGlvbihhbmltYXRpb24gPSAnJykge1xuICAgICAgICBpZiAoYW5pbWF0aW9uID09PSAnZHJhdycpIHtcbiAgICAgICAgICAvLyBFbnN1cmUgdGhlIHBhdGggaGFzIGEgbm9kZSBiZWZvcmUgY2FsY3VsYXRpbmcgdG90YWwgbGVuZ3RoXG4gICAgICAgICAgY29uc3QgcGF0aE5vZGUgPSBwYXRoLm5vZGUoKTtcbiAgICAgICAgICBpZiAoIXBhdGhOb2RlKSByZXR1cm47XG4gICAgICAgICAgXG4gICAgICAgICAgY29uc3QgdG90YWxMZW5ndGggPSBwYXRoTm9kZS5nZXRUb3RhbExlbmd0aCgpO1xuICAgICAgICAgIFxuICAgICAgICAgIHBhdGguc3R5bGUoJ29wYWNpdHknLCAxKVxuICAgICAgICAgICAgLmF0dHIoJ3N0cm9rZS1kYXNoYXJyYXknLCB0b3RhbExlbmd0aClcbiAgICAgICAgICAgIC5hdHRyKCdzdHJva2UtZGFzaG9mZnNldCcsIHRvdGFsTGVuZ3RoKVxuICAgICAgICAgICAgLnRyYW5zaXRpb24oKVxuICAgICAgICAgICAgLmR1cmF0aW9uKG9wdGlvbnMuYW5pbU9wdGlvbnM/LmR1cmF0aW9uIHx8IDIwMDApXG4gICAgICAgICAgICAuZWFzZShkMy5lYXNlTGluZWFyKVxuICAgICAgICAgICAgLmF0dHIoJ3N0cm9rZS1kYXNob2Zmc2V0JywgMCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcGF0aC5zdHlsZSgnb3BhY2l0eScsIDEpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgXG4gICAgICAvLyBSZW1vdmUgbWV0aG9kXG4gICAgICByZW1vdmU6IGZ1bmN0aW9uKCkge1xuICAgICAgICBzdmcucmVtb3ZlKCk7XG4gICAgICB9XG4gICAgfTtcbiAgICBcbiAgICAvLyBJbW1lZGlhdGVseSBjYWxsIHNob3cgdG8gbWFrZSB0aGUgbGluZSB2aXNpYmxlXG4gICAgZDNMaW5lLnNob3cob3B0aW9ucy5hbmltYXRpb24pO1xuICAgIFxuICAgIHJldHVybiBkM0xpbmU7XG4gIH1cblxuICB1cGRhdGVDb25uZWN0b3JzTWFwKG1hcDogYW55KTogdm9pZCB7XG4gICAgdGhpcy5jb25uZWN0b3JNYXAgPSBtYXA7XG4gIH1cblxuICBwb3NpdGlvbihsaW5lOiBhbnkpOiB2b2lkIHtcbiAgICBpZiAoIWxpbmUgfHwgIWxpbmUucG9zaXRpb24pIHJldHVybjtcbiAgICBcbiAgICB0aGlzLmVsbVdyYXBwZXIuc3R5bGUudHJhbnNmb3JtID0gJ25vbmUnO1xuICAgIHZhciByZWN0V3JhcHBlciA9IHRoaXMuZWxtV3JhcHBlci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAvLyBNb3ZlIHRvIHRoZSBvcmlnaW4gb2YgY29vcmRpbmF0ZXMgYXMgdGhlIGRvY3VtZW50XG4gICAgdGhpcy5lbG1XcmFwcGVyLnN0eWxlLnRyYW5zZm9ybSA9ICd0cmFuc2xhdGUoJyArXG4gICAgICAoKHJlY3RXcmFwcGVyLmxlZnQgKyB3aW5kb3cucGFnZVhPZmZzZXQpICogLTEpICsgJ3B4LCAnICtcbiAgICAgICgocmVjdFdyYXBwZXIudG9wICsgd2luZG93LnBhZ2VZT2Zmc2V0KSAqIC0xKSArICdweCknO1xuICAgIFxuICAgIGxpbmUucG9zaXRpb24oKTtcbiAgfVxuXG4gIHJlbW92ZUFsbExpbmVzKCk6IHZvaWQge1xuICAgIGlmKHRoaXMuY29ubmVjdG9yTWFwKSB7XG4gICAgICBmb3IgKGNvbnN0IGtleSBpbiB0aGlzLmNvbm5lY3Rvck1hcCkge1xuICAgICAgICAvLyBSZW1vdmUgYWxsIG4tMSBsaW5lcyBhbmQga2VlcCBvbmx5IGN1cnJlbnQgc2VsZWN0aW9uLCBhbHNvIGNsZWFyIG4rMSBsaW5lc1xuICAgICAgICBpZih0aGlzLmNvbm5lY3Rvck1hcFtrZXldICYmIHRoaXMuY29ubmVjdG9yTWFwW2tleV0ubGluZXMgJiYgdGhpcy5jb25uZWN0b3JNYXBba2V5XS5saW5lcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgY29uc3QgbGluZXMgPSB0aGlzLmNvbm5lY3Rvck1hcFtrZXldLmxpbmVzO1xuICAgICAgICAgIGxpbmVzLmZvckVhY2goYXN5bmMgKGVsZW1lbnQ6IGFueSwgaW5kZXg6IGFueSkgPT4ge1xuICAgICAgICAgICAgICBhd2FpdCBlbGVtZW50LmxpbmUgJiYgZWxlbWVudC5saW5lLnJlbW92ZSgpO1xuICAgICAgICAgICAgICBsaW5lcy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIHRoaXMuY29ubmVjdG9yTWFwW2tleV0ubGluZXMgPSBsaW5lcztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICAvLyB0byByZXNldCBjb25uZWN0b3IgbWFwIGFmdGVyIGNsZWFyaW5nIGFsbCB0aGUgbGluZXNcbiAgICB0aGlzLnVwZGF0ZUNvbm5lY3RvcnNNYXAoe30pO1xuICB9XG5cbiAgcmVwb3NpdGlvbkFsbExpbmVzKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmNvbm5lY3Rvck1hcCkge1xuICAgICAgT2JqZWN0LnZhbHVlcyh0aGlzLmNvbm5lY3Rvck1hcCkuZm9yRWFjaCgoY29ubmVjdG9yOiBhbnkpID0+IHtcbiAgICAgICAgaWYgKGNvbm5lY3RvciAmJiBjb25uZWN0b3IubGluZXMpIHtcbiAgICAgICAgICBjb25uZWN0b3IubGluZXMuZm9yRWFjaCgoaXRlbTogYW55KSA9PiB7XG4gICAgICAgICAgICBpZiAoaXRlbS5saW5lICYmIHR5cGVvZiBpdGVtLmxpbmUucG9zaXRpb24gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgaXRlbS5saW5lLnBvc2l0aW9uKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxufSJdfQ==
@@ -27,7 +27,7 @@ export class FrameworkService {
27
27
  if (this.localConfig.connectionType === 'online') {
28
28
  let url = `/${this.proxiesPath}/framework/v1/read/`;
29
29
  if (_orgData) {
30
- url = url + _orgData.identifier + '_org_hierarchy';
30
+ url = url + _orgData.orgHierarchyFrameworkId;
31
31
  }
32
32
  else {
33
33
  url = url + this.environment.frameworkName;
@@ -385,4 +385,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
385
385
  providedIn: 'root'
386
386
  }]
387
387
  }], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: i2.LocalConnectionService }]; } });
388
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnJhbWV3b3JrLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJyYXJ5L3N1bmJpcmQtY2IvdHJlZS1oaWVyYXJjaHkvc3JjL2xpYi9zZXJ2aWNlcy9mcmFtZXdvcmsuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxlQUFlLEVBQWMsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3ZELE9BQU8sRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUc5QyxPQUFPLEVBQUUsRUFBRSxJQUFJLE1BQU0sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUlwQyxPQUFPLENBQUMsTUFBTSxRQUFRLENBQUM7Ozs7QUFZdkIsTUFBTSxPQUFPLGdCQUFnQjtJQW1CM0IsWUFDVSxJQUFnQixFQUNqQixXQUFtQztRQURsQyxTQUFJLEdBQUosSUFBSSxDQUFZO1FBQ2pCLGdCQUFXLEdBQVgsV0FBVyxDQUF3QjtRQXBCNUMsbUJBQWMsR0FBa0QsSUFBSSxlQUFlLENBQStCLEVBQUUsQ0FBQyxDQUFDO1FBQ3RILGtCQUFhLEdBQTZCLElBQUksZUFBZSxDQUFVLEtBQUssQ0FBQyxDQUFDO1FBQzlFLHFCQUFnQixHQUNkLElBQUksZUFBZSxDQUF1RSxJQUFJLENBQUMsQ0FBQztRQUNsRyxnQkFBVyxHQUF5QixJQUFJLGVBQWUsQ0FBTSxJQUFJLENBQUMsQ0FBQztRQUNuRSwwQkFBcUIsR0FBeUIsSUFBSSxlQUFlLENBQU0sSUFBSSxDQUFDLENBQUM7UUFDN0UsU0FBSSxHQUFHLElBQUksR0FBRyxFQUFtQyxDQUFDO1FBQ2xELGtCQUFhLEdBQUcsSUFBSSxHQUFHLEVBQWUsQ0FBQztRQUN2Qywr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QUMsTUFBTSxFQUFFO1lBQ2pELElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBWSxFQUFFLEVBQUU7Z0JBQ3JDLElBQUksT0FBTyxDQUFDLFVBQVUsS0FBSyxNQUFNLENBQUMsVUFBVSxFQUFFO29CQUM1QyxPQUFPLENBQUMsYUFBYSxDQUFDLEdBQUcsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDO29CQUMvQyxPQUFPLENBQUMsc0JBQXNCLENBQUMsR0FBRyxNQUFNLENBQUMsc0JBQXNCLENBQUMsQ0FBQztpQkFDbEU7Z0JBQ0QsSUFBSSxPQUFPLENBQUMsUUFBUSxFQUFFO29CQUNwQixJQUFJLENBQUMsbUJBQW1CLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxDQUFDO2lCQUMzQztZQUNILENBQUMsQ0FBQyxDQUFDO1NBQ0o7SUFDSCxDQUFDOytHQXphVSxnQkFBZ0I7bUhBQWhCLGdCQUFnQixjQUZmLE1BQU07OzRGQUVQLGdCQUFnQjtrQkFINUIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBtYXAsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEZSQU1FV09SSyB9IGZyb20gJy4uL2NvbnN0YW50cy9kYXRhJztcbmltcG9ydCB7IE5TRnJhbWV3b3JrIH0gZnJvbSAnLi4vbW9kZWxzL2ZyYW1ld29yay5tb2RlbCc7XG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgdjQgYXMgdXVpZHY0IH0gZnJvbSAndXVpZCc7XG5pbXBvcnQgeyBJQ29ubmVjdGlvbiB9IGZyb20gJy4uL21vZGVscy9jb25uZWN0aW9uLm1vZGVsJztcbmltcG9ydCB7IExvY2FsQ29ubmVjdGlvblNlcnZpY2UgfSBmcm9tICcuL2xvY2FsLWNvbm5lY3Rpb24uc2VydmljZSc7XG4vKiB0c2xpbnQ6ZGlzYWJsZSAqL1xuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbi8qIHRzbGludDplbmFibGUgKi9cblxuaW50ZXJmYWNlIE5vdGlmaWVyVHlwZSB7XG4gIHR5cGU6ICdzZWxlY3QnIHwgJ2luc2VydCcgfCAndXBkYXRlJyB8ICdkZWxldGUnO1xuICBhY3Rpb246IHN0cmluZztcbiAgZGF0YTogYW55O1xufVxuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBGcmFtZXdvcmtTZXJ2aWNlIHtcbiAgY2F0ZWdvcmllc0hhc2g6IEJlaGF2aW9yU3ViamVjdDxOU0ZyYW1ld29yay5JQ2F0ZWdvcnlbXSB8IFtdPiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8TlNGcmFtZXdvcmsuSUNhdGVnb3J5W10gfCBbXT4oW10pO1xuICBpc0RhdGFVcGRhdGVkOiBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgY3VycmVudFNlbGVjdGlvbjogQmVoYXZpb3JTdWJqZWN0PHsgdHlwZTogc3RyaW5nLCBkYXRhOiBhbnksIGNhcmRSZWY/OiBhbnksIGlzVXBkYXRlPzpib29sZWFuIH0gfCBudWxsPiA9IFxuICAgIG5ldyBCZWhhdmlvclN1YmplY3Q8eyB0eXBlOiBzdHJpbmcsIGRhdGE6IGFueSwgY2FyZFJlZj86IGFueSwgaXNVcGRhdGU/OmJvb2xlYW4gfSB8IG51bGw+KG51bGwpO1xuICB0ZXJtU3ViamVjdDogQmVoYXZpb3JTdWJqZWN0PGFueT4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGFueT4obnVsbCk7XG4gIGFmdGVyQWRkT3JFZGl0U3ViamVjdDogQmVoYXZpb3JTdWJqZWN0PGFueT4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGFueT4obnVsbCk7XG4gIGxpc3QgPSBuZXcgTWFwPHN0cmluZywgTlNGcmFtZXdvcmsuSUNvbHVtblZpZXc+KCk7XG4gIHNlbGVjdGlvbkxpc3QgPSBuZXcgTWFwPHN0cmluZywgYW55PigpO1xuICBpbnNlcnRVcGRhdGVEZWxldGVOb3RpZmllcjogQmVoYXZpb3JTdWJqZWN0PE5vdGlmaWVyVHlwZSB8IG51bGw+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxOb3RpZmllclR5cGUgfCBudWxsPihudWxsKTtcbiAgZW52aXJvbm1lbnQ6IGFueTtcbiAgbGliQ29uZmlnITogSUNvbm5lY3Rpb247XG4gIGZyYW1ld29ya0lkITogc3RyaW5nO1xuICByb290Q29uZmlnOiBhbnk7XG4gIHByb3hpZXNQYXRoID0gJ2FwaXMvcHJveGllcy92OCc7XG4gIGNhcmRDbGtEYXRhOiBhbnk7XG4gIEN1cnJlbnRDYXJkQ2xrID0gbmV3IEJlaGF2aW9yU3ViamVjdDxhbnk+KG51bGwpO1xuICBjb21wbGV0ZVJlc3BvbnNlOiBhbnk7XG4gIFxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsXG4gICAgcHVibGljIGxvY2FsQ29uZmlnOiBMb2NhbENvbm5lY3Rpb25TZXJ2aWNlXG4gICkge31cblxuICBnZXRGcmFtZXdvcmtJbmZvKF9vcmdEYXRhPzphbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKCd0ZXJtcycpO1xuICAgIGlmICh0aGlzLmxvY2FsQ29uZmlnLmNvbm5lY3Rpb25UeXBlID09PSAnb25saW5lJykge1xuICAgICAgLy9mcmFtZXdvcmsvdjEvcmVhZC8wMTM1ODkxMjI5MzgzOTY2NzI0MV9vcmdfaGllcmFyY2h5XG4gICAgICAvL2ZyYW1ld29yay92MS9yZWFkLyR7dGhpcy5lbnZpcm9ubWVudC5mcmFtZXdvcmtOYW1lfVxuICAgICAgbGV0IHVybCA9IGAvJHt0aGlzLnByb3hpZXNQYXRofS9mcmFtZXdvcmsvdjEvcmVhZC9gXG4gICAgICBpZiAoX29yZ0RhdGEpIHtcbiAgICAgICAgdXJsICA9IHVybCArIF9vcmdEYXRhLmlkZW50aWZpZXIgKyAnX29yZ19oaWVyYXJjaHknO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdXJsID0gdXJsICsgdGhpcy5lbnZpcm9ubWVudC5mcmFtZXdvcmtOYW1lO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoYCR7dXJsfWAsIHsgd2l0aENyZWRlbnRpYWxzOiB0cnVlIH0pLnBpcGUoXG4gICAgICAgIHRhcCgocmVzcG9uc2U6IGFueSkgPT4ge1xuICAgICAgICAgIHRoaXMucmVzZXRBbGwoKTtcbiAgICAgICAgICB0aGlzLmZvcm1hdGVEYXRhKHJlc3BvbnNlKTtcbiAgICAgICAgICB0aGlzLmNvbXBsZXRlUmVzcG9uc2UgPSByZXNwb25zZS5yZXN1bHQuZnJhbWV3b3JrO1xuICAgICAgICB9KSxcbiAgICAgICAgY2F0Y2hFcnJvcigoZXJyKSA9PiB7XG4gICAgICAgICAgdGhpcy5yZXNldEFsbCgpO1xuICAgICAgICAgIHRoaXMubGlzdC5jbGVhcigpO1xuICAgICAgICAgIHRoaXMuY2F0ZWdvcmllc0hhc2gubmV4dChbXSk7XG4gICAgICAgICAgdGhyb3cgJ0Vycm9yIGluIHNvdXJjZS4gRGV0YWlsczogJyArIGVycjtcbiAgICAgICAgfSkpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnJlc2V0QWxsKCk7XG4gICAgICB0aGlzLmZvcm1hdGVEYXRhKEZSQU1FV09SSyk7XG4gICAgICByZXR1cm4gb2YoRlJBTUVXT1JLKTtcbiAgICB9XG4gIH1cblxuICByZWFkVGVybXMoZnJhbWV3b3JrSWQ6IHN0cmluZywgY2F0ZWdvcnlJZDogc3RyaW5nLCByZXF1ZXN0Qm9keTogYW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYC8ke3RoaXMucHJveGllc1BhdGh9L2ZyYW1ld29yay92MS90ZXJtL3NlYXJjaD9mcmFtZXdvcms9JHtmcmFtZXdvcmtJZH0mY2F0ZWdvcnk9JHtjYXRlZ29yeUlkfWAsIHJlcXVlc3RCb2R5KS5waXBlKFxuICAgICAgbWFwKChyZXM6IGFueSkgPT4gcmVzLnJlc3VsdCkpO1xuICB9XG5cbiAgY3JlYXRlVGVybShmcmFtZXdvcmtJZDogc3RyaW5nLCBjYXRlZ29yeUlkOiBzdHJpbmcsIHJlcXVlc3RCb2R5OiBhbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChgLyR7dGhpcy5wcm94aWVzUGF0aH0vZnJhbWV3b3JrL3YxL3Rlcm0vY3JlYXRlP2ZyYW1ld29yaz0ke2ZyYW1ld29ya0lkfSZjYXRlZ29yeT0ke2NhdGVnb3J5SWR9YCwgcmVxdWVzdEJvZHkpO1xuICB9XG4gXG4gIGNyZWF0ZVRlcm1zV3JhcHBlcihjYXRlZ29yeTogc3RyaW5nLCByZXF1ZXN0Qm9keTogYW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBsZXQgY2F0ZWdvcnlJdGVtOiBzdHJpbmc7XG4gICAgaWYgKGNhdGVnb3J5ID09PSAndGhlbWUnKSB7XG4gICAgICBjYXRlZ29yeUl0ZW0gPSAnY29tcGV0ZW5jeVRoZW1lJztcbiAgICB9IGVsc2Uge1xuICAgICAgY2F0ZWdvcnlJdGVtID0gJ2NvbXBldGVuY3lTdWJUaGVtZSc7XG4gICAgfVxuICAgXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAvJHt0aGlzLnByb3hpZXNQYXRofS8ke2NhdGVnb3J5SXRlbX0vY3JlYXRlL3Rlcm1gLCByZXF1ZXN0Qm9keSlcbiAgICAgIC5waXBlKG1hcChyZXMgPT4gXy5nZXQocmVzLCAncmVzdWx0JykpKTtcbiAgfVxuXG4gIHJldGlyZVRlcm0oZnJhbWV3b3JrSWQ6IHN0cmluZywgY2F0ZWdvcnlJZDogc3RyaW5nLCBjYXRlZ29yeVRlcm1Db2RlOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAuZGVsZXRlKGAvJHt0aGlzLnByb3hpZXNQYXRofS9mcmFtZXdvcmsvdjEvdGVybS9yZXRpcmUvJHtjYXRlZ29yeVRlcm1Db2RlfT9mcmFtZXdvcms9JHtmcmFtZXdvcmtJZH0mY2F0ZWdvcnk9JHtjYXRlZ29yeUlkfWApO1xuICB9XG5cbiAgcmV0aXJlTXVsdGlwbGVUZXJtKGZyYW1ld29ya0lkOiBzdHJpbmcsIGNhdGVnb3J5SWQ6IHN0cmluZywgcmVxdWVzdEJvZHk6IGFueSk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAvJHt0aGlzLnByb3hpZXNQYXRofS9mcmFtZXdvcmsvdjEvdGVybS9yZXRpcmU/ZnJhbWV3b3JrPSR7ZnJhbWV3b3JrSWR9JmNhdGVnb3J5PSR7Y2F0ZWdvcnlJZH1gLCByZXF1ZXN0Qm9keSk7XG4gIH1cblxuICB1cGRhdGVUZXJtKGZyYW1ld29ya0lkOiBzdHJpbmcsIGNhdGVnb3J5SWQ6IHN0cmluZywgY2F0ZWdvcnlUZXJtQ29kZTogc3RyaW5nLCByZXF1ZXN0Qm9keTogYW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBhdGNoKGAvJHt0aGlzLnByb3hpZXNQYXRofS9mcmFtZXdvcmsvdjEvdGVybS91cGRhdGUvJHtjYXRlZ29yeVRlcm1Db2RlfT9mcmFtZXdvcms9JHtmcmFtZXdvcmtJZH0mY2F0ZWdvcnk9JHtjYXRlZ29yeUlkfWAsIHJlcXVlc3RCb2R5KTtcbiAgfVxuXG4gIHB1Ymxpc2hGcmFtZXdvcmsoKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYC8ke3RoaXMucHJveGllc1BhdGh9L2ZyYW1ld29yay92MS9wdWJsaXNoLyR7dGhpcy5lbnZpcm9ubWVudC5mcmFtZXdvcmtOYW1lfWAsIHt9KTtcbiAgfVxuXG4gIGdldFV1aWQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdXVpZHY0KCk7XG4gIH1cblxuICB1cGRhdGVFbnZpcm9ubWVudChlbnY6IGFueSk6IHZvaWQge1xuICAgIHRoaXMuZW52aXJvbm1lbnQgPSBlbnY7XG4gIH1cblxuICBnZXRFbnZpcm9tZW50KCk6IGFueSB7XG4gICAgcmV0dXJuIHRoaXMuZW52aXJvbm1lbnQ7XG4gIH1cblxuICBnZXRGcmFtZXdvcmtJZCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmZyYW1ld29ya0lkO1xuICB9XG5cbiAgZ2V0TmV4dENhdGVnb3J5KGN1cnJlbnRDYXRlZ29yeTogc3RyaW5nKTogTlNGcmFtZXdvcmsuSUNhdGVnb3J5IHwgbnVsbCB7XG4gICAgY29uc3QgY3VycmVudEluZGV4ID0gdGhpcy5jYXRlZ29yaWVzSGFzaC52YWx1ZS5maW5kSW5kZXgoKGE6IE5TRnJhbWV3b3JrLklDYXRlZ29yeSkgPT4ge1xuICAgICAgcmV0dXJuIGEuY29kZSA9PT0gY3VycmVudENhdGVnb3J5O1xuICAgIH0pO1xuICAgIGxldCBjYXRlZ29yeUxlbmd0aCA9IHRoaXMuY2F0ZWdvcmllc0hhc2guZ2V0VmFsdWUoKS5sZW5ndGg7XG4gICAgcmV0dXJuIChjdXJyZW50SW5kZXggKyAxKSA8IGNhdGVnb3J5TGVuZ3RoID8gdGhpcy5jYXRlZ29yaWVzSGFzaC5nZXRWYWx1ZSgpW2N1cnJlbnRJbmRleCArIDFdIDogbnVsbDtcbiAgfVxuXG4gIGdldFByZXZpb3VzQ2F0ZWdvcnkoY3VycmVudENhdGVnb3J5OiBzdHJpbmcpOiBOU0ZyYW1ld29yay5JQ2F0ZWdvcnkgfCBudWxsIHtcbiAgICBjb25zdCBjdXJyZW50SW5kZXggPSB0aGlzLmNhdGVnb3JpZXNIYXNoLnZhbHVlLmZpbmRJbmRleCgoYTogTlNGcmFtZXdvcmsuSUNhdGVnb3J5KSA9PiB7XG4gICAgICByZXR1cm4gYS5jb2RlID09PSBjdXJyZW50Q2F0ZWdvcnk7XG4gICAgfSk7XG4gICAgcmV0dXJuIChjdXJyZW50SW5kZXggLSAxKSA+PSAwID8gdGhpcy5jYXRlZ29yaWVzSGFzaC5nZXRWYWx1ZSgpW2N1cnJlbnRJbmRleCAtIDFdIDogbnVsbDtcbiAgfVxuXG4gIGdldFBhcmVudFRlcm0oY3VycmVudENhdGVnb3J5OiBzdHJpbmcpOiBhbnkge1xuICAgIGNvbnN0IHBhcmVudCA9IHRoaXMuZ2V0UHJldmlvdXNDYXRlZ29yeShjdXJyZW50Q2F0ZWdvcnkpIHx8IG51bGw7XG4gICAgcmV0dXJuIHBhcmVudCA/IHRoaXMuc2VsZWN0aW9uTGlzdC5nZXQocGFyZW50LmNvZGUpIDogbnVsbDtcbiAgfVxuXG4gIGNoaWxkQ2xpY2soZXZlbnQ6IHsgdHlwZTogc3RyaW5nLCBkYXRhOiBhbnkgfSk6IHZvaWQge1xuICAgIHRoaXMuY3VycmVudFNlbGVjdGlvbi5uZXh0KGV2ZW50KTtcbiAgfVxuXG4gIHJlc2V0QWxsKCk6IHZvaWQge1xuICAgIHRoaXMuY2F0ZWdvcmllc0hhc2gubmV4dChbXSk7XG4gICAgdGhpcy5jdXJyZW50U2VsZWN0aW9uLm5leHQobnVsbCk7XG4gICAgdGhpcy5zZWxlY3Rpb25MaXN0LmNsZWFyKCk7XG4gICAgdGhpcy5saXN0LmNsZWFyKCk7XG4gIH1cblxuICBpc0xhc3RDb2x1bW4oY29sQ29kZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuY2F0ZWdvcmllc0hhc2gudmFsdWUgJiYgKHRoaXMuY2F0ZWdvcmllc0hhc2gudmFsdWUuZmluZEluZGV4KChhOiBOU0ZyYW1ld29yay5JQ2F0ZWdvcnkpID0+IHtcbiAgICAgIHJldHVybiBhLmNvZGUgPT09IGNvbENvZGU7XG4gICAgfSkpID09PSAodGhpcy5jYXRlZ29yaWVzSGFzaC52YWx1ZS5sZW5ndGggLSAxKTtcbiAgfVxuXG4gIHJlbW92ZUl0ZW1Gcm9tQXJyYXkoYXJyYXk6IGFueVtdLCBpdGVtOiBhbnkpOiBhbnlbXSB7XG4gICAgLyogYXNzaWduIGEgZW1wdHkgYXJyYXkgKi9cbiAgICB2YXIgdG1wOiBhbnlbXSA9IFtdO1xuICAgIC8qIGxvb3Agb3ZlciBhbGwgYXJyYXkgaXRlbXMgKi9cbiAgICBmb3IgKHZhciBpbmRleCBpbiBhcnJheSkge1xuICAgICAgaWYgKGFycmF5W2luZGV4XSAhPT0gaXRlbSkge1xuICAgICAgICAvKiBwdXNoIHRvIHRlbXBvcmFyeSBhcnJheSBpZiBub3QgbGlrZSBpdGVtICovXG4gICAgICAgIHRtcC5wdXNoKGFycmF5W2luZGV4XSk7XG4gICAgICB9XG4gICAgfVxuICAgIC8qIHJldHVybiB0aGUgdGVtcG9yYXJ5IGFycmF5ICovXG4gICAgcmV0dXJuIHRtcDtcbiAgfVxuXG4gIHNldCBzZXRUZXJtKHJlczogYW55KSB7XG4gICAgdGhpcy50ZXJtU3ViamVjdC5uZXh0KHJlcyk7XG4gICAgbGV0IG9sZFRlcm1zID0gdGhpcy5nZXRUZXJtIHx8IFtdO1xuICAgIG9sZFRlcm1zLnB1c2gocmVzKTtcbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgndGVybXMnLCBKU09OLnN0cmluZ2lmeShvbGRUZXJtcykpO1xuICB9XG5cbiAgZ2V0IGdldFRlcm0oKTogYW55W10ge1xuICAgIHJldHVybiBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKCd0ZXJtcycpIHx8ICdbXScpIHx8IFtdO1xuICB9XG5cbiAgdXBkYXRlQWZ0ZXJBZGRPckVkaXRTdWJqZWN0KHJlczogYW55KTogdm9pZCB7XG4gICAgaWYgKHJlcykge1xuICAgICAgdGhpcy5hZnRlckFkZE9yRWRpdFN1YmplY3QubmV4dChyZXMpO1xuICAgIH0gXG4gIH1cblxuICBnZXRMb2NhbFRlcm1zQnlQYXJlbnQocGFyZW50Q29kZTogc3RyaW5nKTogYW55W10ge1xuICAgIGNvbnN0IGZpbHRlcmVkRGF0YSA9IHRoaXMuZ2V0VGVybS5maWx0ZXIoeCA9PiB7XG4gICAgICByZXR1cm4geC5wYXJlbnQgJiYgeC5wYXJlbnQuY2F0ZWdvcnkgPT09IHBhcmVudENvZGU7XG4gICAgfSkgfHwgW107XG5cbiAgICByZXR1cm4gZmlsdGVyZWREYXRhLm1hcCh4ID0+IHtcbiAgICAgIHJldHVybiB4LnRlcm07XG4gICAgfSk7XG4gIH1cblxuICBnZXRMb2NhbFRlcm1zQnlDYXRlZ29yeShwYXJlbnRDb2RlOiBzdHJpbmcpOiBhbnlbXSB7XG4gICAgY29uc3QgZmlsdGVyZWREYXRhID0gdGhpcy5nZXRUZXJtLmZpbHRlcih4ID0+IHtcbiAgICAgIHJldHVybiB4LnRlcm0gJiYgeC50ZXJtLmNhdGVnb3J5ID09PSBwYXJlbnRDb2RlO1xuICAgIH0pIHx8IFtdO1xuXG4gICAgcmV0dXJuIGZpbHRlcmVkRGF0YTtcbiAgfVxuXG4gIGdldExvY2FsVGVybXNDYXRlZ29yeShjYXRlZ29yeTogc3RyaW5nKTogYW55W10ge1xuICAgIGNvbnN0IGZpbHRlcmVkRGF0YSA9IHRoaXMuZ2V0VGVybS5maWx0ZXIoeCA9PiB7XG4gICAgICByZXR1cm4geC5jYXRlZ29yeSA9PT0gY2F0ZWdvcnk7XG4gICAgfSkgfHwgW107XG5cbiAgICByZXR1cm4gZmlsdGVyZWREYXRhO1xuICB9XG5cbiAgZm9ybWF0ZURhdGEocmVzcG9uc2U6IGFueSk6IHZvaWQge1xuICAgIHRoaXMuZnJhbWV3b3JrSWQgPSByZXNwb25zZS5yZXN1bHQuZnJhbWV3b3JrLmNvZGU7XG4gICAgKHJlc3BvbnNlLnJlc3VsdC5mcmFtZXdvcmsuY2F0ZWdvcmllcykuZm9yRWFjaCgoYTogYW55LCBfaWR4OiBudW1iZXIpID0+IHtcbiAgICAgIHRoaXMubGlzdC5zZXQoYS5jb2RlLCB7XG4gICAgICAgIGNvZGU6IGEuY29kZSxcbiAgICAgICAgaWRlbnRpZmllcjogYS5pZGVudGlmaWVyLFxuICAgICAgICBpbmRleDogYS5pbmRleCxcbiAgICAgICAgbmFtZTogYS5uYW1lLFxuICAgICAgICBzZWxlY3RlZDogYS5zZWxlY3RlZCxcbiAgICAgICAgc3RhdHVzOiBhLnN0YXR1cyBhcyBOU0ZyYW1ld29yay5UTm9kZVN0YXR1cyxcbiAgICAgICAgZGVzY3JpcHRpb246IGEuZGVzY3JpcHRpb24sXG4gICAgICAgIHRyYW5zbGF0aW9uczogYS50cmFuc2xhdGlvbnMsXG4gICAgICAgIGNhdGVnb3J5OiBhLmNhdGVnb3J5LFxuICAgICAgICBhc3NvY2lhdGlvbnM6IGEuYXNzb2NpYXRpb25zLFxuICAgICAgICBjb25maWc6IHRoaXMuZ2V0Q29uZmlnKGEuY29kZSksXG4gICAgICAgIGNoaWxkcmVuOiAoYS50ZXJtcyB8fCBbXSkubWFwKChjOiBhbnkpID0+IHtcbiAgICAgICAgICBjb25zdCBhc3NvY2lhdGlvbnMgPSBjLmFzc29jaWF0aW9ucyB8fCBbXTtcbiAgICAgICAgICBpZiAoYXNzb2NpYXRpb25zLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIE9iamVjdC5hc3NpZ24oYywgeyBjaGlsZHJlbjogYXNzb2NpYXRpb25zIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gYztcbiAgICAgICAgfSlcbiAgICAgIH0pO1xuICAgIH0pO1xuICAgIFxuICAgIGNvbnN0IGFsbENhdGVnb3JpZXM6IE5TRnJhbWV3b3JrLklDYXRlZ29yeVtdID0gW107XG4gICAgdGhpcy5saXN0LmZvckVhY2goYSA9PiB7XG4gICAgICBhbGxDYXRlZ29yaWVzLnB1c2goe1xuICAgICAgICBjb2RlOiBhLmNvZGUsXG4gICAgICAgIGlkZW50aWZpZXI6IGEuaWRlbnRpZmllcixcbiAgICAgICAgaW5kZXg6IGEuaW5kZXgsXG4gICAgICAgIG5hbWU6IGEubmFtZSxcbiAgICAgICAgc3RhdHVzOiBhLnN0YXR1cyBhcyBOU0ZyYW1ld29yay5UTm9kZVN0YXR1cyxcbiAgICAgICAgZGVzY3JpcHRpb246IGEuZGVzY3JpcHRpb24sXG4gICAgICAgIHRyYW5zbGF0aW9uczogYS50cmFuc2xhdGlvbnMsXG4gICAgICB9IGFzIE5TRnJhbWV3b3JrLklDYXRlZ29yeSk7XG4gICAgfSk7XG4gICAgdGhpcy5jYXRlZ29yaWVzSGFzaC5uZXh0KGFsbENhdGVnb3JpZXMpO1xuICB9XG5cbiAgcmVtb3ZlT2xkTGluZSgpOiB2b2lkIHtcbiAgICBjb25zdCBlbGVzID0gQXJyYXkuZnJvbShkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdsZWFkZXItbGluZScpIHx8IFtdKTtcbiAgICBpZiAoZWxlcy5sZW5ndGggPiAwKSB7XG4gICAgICBlbGVzLmZvckVhY2goZWxlID0+IGVsZS5yZW1vdmUoKSk7XG4gICAgfVxuICB9XG5cbiAgc2V0Q29uZmlnKGNvbmZpZzogYW55KTogdm9pZCB7XG4gICAgdGhpcy5yb290Q29uZmlnID0gY29uZmlnO1xuICB9XG5cbiAgZ2V0Q29uZmlnKGNvZGU6IHN0cmluZyk6IGFueSB7XG4gICAgbGV0IGNhdGVnb3J5Q29uZmlnOiBhbnk7XG4gICAgaWYgKHRoaXMucm9vdENvbmZpZyAmJiB0aGlzLnJvb3RDb25maWdbMF0pIHtcbiAgICAgIHRoaXMucm9vdENvbmZpZy5mb3JFYWNoKChjb25maWc6IGFueSkgPT4ge1xuICAgICAgICBpZiAodGhpcy5mcmFtZXdvcmtJZCA9PSBjb25maWcuZnJhbWV3b3JrSWQpIHtcbiAgICAgICAgICBjYXRlZ29yeUNvbmZpZyA9IGNvbmZpZy5jb25maWcuZmluZCgob2JqOiBhbnkpID0+IG9iai5jYXRlZ29yeSA9PSBjb2RlKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICAgIGlmICghY2F0ZWdvcnlDb25maWcpIHtcbiAgICAgIHJldHVybiB0aGlzLnJvb3RDb25maWcuY29uZmlnWzBdXG4gICAgfVxuICAgIHJldHVybiBjYXRlZ29yeUNvbmZpZztcbiAgfVxuXG4gIGdldEFsbFNlbGVjdGVkVGVybXMoKTogYW55W10ge1xuICAgIGNvbnN0IHNlbGVjdGVkVGVybXM6IGFueVtdID0gW107XG4gICAgdGhpcy5saXN0LmZvckVhY2gobCA9PiB7XG4gICAgICBpZiAobC5jaGlsZHJlbiAmJiBsLmNoaWxkcmVuLmxlbmd0aCkge1xuICAgICAgICBsLmNoaWxkcmVuLmZvckVhY2goYyA9PiB7XG4gICAgICAgICAgaWYgKGMuc2VsZWN0ZWQpIHtcbiAgICAgICAgICAgIHNlbGVjdGVkVGVybXMucHVzaChjKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBzZWxlY3RlZFRlcm1zO1xuICB9XG5cbiAgZ2V0UHJldmlvdXNTZWxlY3RlZFRlcm1zKGNvZGU6IHN0cmluZyk6IGFueVtdIHtcbiAgICBsZXQgcHJldlNlbGVjdGVkVGVybXM6IGFueVtdID0gW107XG4gICAgdGhpcy5zZWxlY3Rpb25MaXN0LmZvckVhY2goc2wgPT4ge1xuICAgICAgaWYgKHNsLmNhdGVnb3J5ICE9PSBjb2RlKSB7XG4gICAgICAgIHByZXZTZWxlY3RlZFRlcm1zLnB1c2goc2wpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBwcmV2U2VsZWN0ZWRUZXJtcztcbiAgfVxuXG4gIGdldEtjbVNlYXJjaExpc3QocmVxdWVzdEJvZHk6IGFueSwgY2F0ZWdvcnk6IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgbGV0IGNhdGVnb3J5SXRlbTogc3RyaW5nO1xuICAgIGlmIChjYXRlZ29yeSA9PT0gJ3RoZW1lJykge1xuICAgICAgY2F0ZWdvcnlJdGVtID0gJ2NvbXBldGVuY3lUaGVtZSc7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNhdGVnb3J5SXRlbSA9ICdjb21wZXRlbmN5U3ViVGhlbWUnO1xuICAgIH1cbiAgICBcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYC8ke3RoaXMucHJveGllc1BhdGh9LyR7Y2F0ZWdvcnlJdGVtfS9zZWFyY2hgLCByZXF1ZXN0Qm9keSlcbiAgICAgIC5waXBlKG1hcChyZXMgPT4gXy5nZXQocmVzLCAncmVzdWx0LnJlc3VsdCcpKSk7XG4gIH1cblxuICB1cGRhdGVMb2NhbExpc3QoaXRlbTogYW55LCBwYXJlbnQ6IGFueSwgc2VsZWN0ZWRUZXJtQXJyYXk6IGFueVtdLCB1cGRhdGVUeXBlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAoaXRlbSAmJiBpdGVtLmNoaWxkcmVuICYmIGl0ZW0uY2hpbGRyZW4ubGVuZ3RoKSB7XG4gICAgICBpZiAodXBkYXRlVHlwZSA9PT0gJ2RlbGV0ZScpIHtcbiAgICAgICAgaXRlbS5jaGlsZHJlbi5mb3JFYWNoKChpdG1EYXRhOiBhbnkpID0+IHtcbiAgICAgICAgICBpZiAoaXRtRGF0YS5pZGVudGlmaWVyID09PSBwYXJlbnQuaWRlbnRpZmllcikge1xuICAgICAgICAgICAgY29uc3QgYXNzb2NpYXRpb25MaXN0OiBhbnkgPSBfLmRpZmZlcmVuY2VXaXRoKGl0bURhdGEuYXNzb2NpYXRpb25zLCBzZWxlY3RlZFRlcm1BcnJheSwgKGE6YW55LCBiOiBhbnkpID0+IGEuaWRlbnRpZmllciA9PT0gYi5pZGVudGlmaWVyKTtcbiAgICAgICAgICAgIGNvbnN0IGNoaWxkcmVuTGlzdDogYW55ID0gXy5kaWZmZXJlbmNlV2l0aChpdG1EYXRhLmNoaWxkcmVuLCBzZWxlY3RlZFRlcm1BcnJheSwgKGE6YW55LCBiOiBhbnkpID0+IGEuaWRlbnRpZmllciA9PT0gYi5pZGVudGlmaWVyKTtcbiAgICAgICAgICAgIGl0bURhdGFbJ2Fzc29jaWF0aW9ucyddID0gYXNzb2NpYXRpb25MaXN0O1xuICAgICAgICAgICAgaXRtRGF0YVsnY2hpbGRyZW4nXSA9IGNoaWxkcmVuTGlzdDtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGl0bURhdGEuY2hpbGRyZW4pIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlTG9jYWxMaXN0KGl0bURhdGEsIHBhcmVudCwgc2VsZWN0ZWRUZXJtQXJyYXksIHVwZGF0ZVR5cGUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpdGVtLmNoaWxkcmVuLmZvckVhY2goKGl0bURhdGE6IGFueSkgPT4ge1xuICAgICAgICAgIGlmIChpdG1EYXRhLmlkZW50aWZpZXIgPT09IHBhcmVudC5pZGVudGlmaWVyKSB7XG4gICAgICAgICAgICBsZXQgZGlmZmVyZW5jZURhdGE6IGFueVtdID0gW107XG4gICAgICAgICAgICBpZiAoaXRtRGF0YSAmJiBpdG1EYXRhLmNoaWxkcmVuICYmIGl0bURhdGEuY2hpbGRyZW4ubGVuZ3RoKSB7XG4gICAgICAgICAgICAgIGRpZmZlcmVuY2VEYXRhICA9IF8uZGlmZmVyZW5jZUJ5KHNlbGVjdGVkVGVybUFycmF5LCBpdG1EYXRhLmNoaWxkcmVuLCAnaWRlbnRpZmllcicpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgZGlmZmVyZW5jZURhdGEgPSBzZWxlY3RlZFRlcm1BcnJheTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGl0bURhdGFbJ2Fzc29jaWF0aW9ucyddID0gaXRtRGF0YSAmJiBpdG1EYXRhLmFzc29jaWF0aW9ucyA/IFsuLi5pdG1EYXRhLmFzc29jaWF0aW9ucywgLi4uZGlmZmVyZW5jZURhdGFdIDogZGlmZmVyZW5jZURhdGE7XG4gICAgICAgICAgICBpdG1EYXRhWydjaGlsZHJlbiddID0gaXRtRGF0YSAmJiBpdG1EYXRhLmNoaWxkcmVuID8gWy4uLml0bURhdGEuY2hpbGRyZW4sIC4uLmRpZmZlcmVuY2VEYXRhXSA6IGRpZmZlcmVuY2VEYXRhO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoaXRtRGF0YS5jaGlsZHJlbikge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVMb2NhbExpc3QoaXRtRGF0YSwgcGFyZW50LCBzZWxlY3RlZFRlcm1BcnJheSwgdXBkYXRlVHlwZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICB1cGRhdGVGcmFtZXdvcmtMaXN0KGNvbHVtbkNvZGU6IHN0cmluZywgcGFyZW50RGF0YTogYW55LCBzZWxlY3RlZFRlcm1BcnJheTogYW55W10sIHVwZGF0ZVR5cGU/OiBzdHJpbmcpOiB2b2lkIHtcbiAgICBsZXQgbGlzdERhdGE6IGFueSA9IHRoaXMubGlzdC5nZXQoY29sdW1uQ29kZSk7XG4gICAgaWYgKHVwZGF0ZVR5cGUgPT09ICdkZWxldGUnKSB7XG4gICAgICBjb25zdCBhc3NvY2lhdGlvbkxpc3Q6IGFueSA9IF8uZGlmZmVyZW5jZVdpdGgobGlzdERhdGEuYXNzb2NpYXRpb25zLCBzZWxlY3RlZFRlcm1BcnJheSwgKGE6YW55LCBiOiBhbnkpID0+IGEuaWRlbnRpZmllciA9PT0gYi5pZGVudGlmaWVyKTtcbiAgICAgIGNvbnN0IGNoaWxkcmVuTGlzdDogYW55ID0gXy5kaWZmZXJlbmNlV2l0aChsaXN0RGF0YS5jaGlsZHJlbiwgc2VsZWN0ZWRUZXJtQXJyYXksIChhOmFueSwgYjogYW55KSA9PiBhLmlkZW50aWZpZXIgPT09IGIuaWRlbnRpZmllcik7XG4gICAgICBsaXN0RGF0YVsnYXNzb2NpYXRpb25zJ10gPSBhc3NvY2lhdGlvbkxpc3Q7XG4gICAgICBsaXN0RGF0YVsnY2hpbGRyZW4nXSA9IGNoaWxkcmVuTGlzdDtcblxuICAgICAgdGhpcy5zZWxlY3Rpb25MaXN0LmZvckVhY2goKHNlbGVjdGVkRGF0YTogYW55KSA9PiB7XG4gICAgICAgIGxldCBsaXN0RGF0YTogYW55ID0gdGhpcy5saXN0LmdldChzZWxlY3RlZERhdGEuY2F0ZWdvcnkpO1xuICAgICAgICBpZiAobGlzdERhdGEgJiYgbGlzdERhdGEuY2hpbGRyZW4gJiYgbGlzdERhdGEuY2hpbGRyZW4ubGVuZ3RoKSB7XG4gICAgICAgICAgdGhpcy51cGRhdGVMb2NhbExpc3QobGlzdERhdGEsIHBhcmVudERhdGEsIHNlbGVjdGVkVGVybUFycmF5LCB1cGRhdGVUeXBlKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxldCBkaWZmZXJlbmNlRGF0YTogYW55W10gPSBbXTtcbiAgICAgIGlmIChsaXN0RGF0YSAmJiBsaXN0RGF0YS5jaGlsZHJlbiAmJiBsaXN0RGF0YS5jaGlsZHJlbi5sZW5ndGgpIHtcbiAgICAgICAgZGlmZmVyZW5jZURhdGEgPSBfLmRpZmZlcmVuY2VCeShzZWxlY3RlZFRlcm1BcnJheSwgbGlzdERhdGEuY2hpbGRyZW4sICdpZGVudGlmaWVyJyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBkaWZmZXJlbmNlRGF0YSA9IHNlbGVjdGVkVGVybUFycmF5O1xuICAgICAgfVxuICAgICAgbGlzdERhdGFbJ2Fzc29jaWF0aW9ucyddID0gbGlzdERhdGEgJiYgbGlzdERhdGEuYXNzb2NpYXRpb25zID8gWy4uLmxpc3REYXRhLmFzc29jaWF0aW9ucywgLi4uZGlmZmVyZW5jZURhdGFdIDogZGlmZmVyZW5jZURhdGE7XG4gICAgICBsaXN0RGF0YVsnY2hpbGRyZW4nXSA9IGxpc3REYXRhICYmIGxpc3REYXRhLmNoaWxkcmVuID8gWy4uLmxpc3REYXRhLmNoaWxkcmVuLCAuLi5kaWZmZXJlbmNlRGF0YV0gOiBkaWZmZXJlbmNlRGF0YTtcblxuICAgICAgdGhpcy5zZWxlY3Rpb25MaXN0LmZvckVhY2goKHNlbGVjdGVkRGF0YTogYW55KSA9PiB7XG4gICAgICAgIGxldCBsaXN0RGF0YTogYW55ID0gdGhpcy5saXN0LmdldChzZWxlY3RlZERhdGEuY2F0ZWdvcnkpO1xuICAgICAgICBpZiAobGlzdERhdGEgJiYgbGlzdERhdGEuY2hpbGRyZW4gJiYgbGlzdERhdGEuY2hpbGRyZW4ubGVuZ3RoKSB7XG4gICAgICAgICAgdGhpcy51cGRhdGVMb2NhbExpc3QobGlzdERhdGEsIHBhcmVudERhdGEsIHNlbGVjdGVkVGVybUFycmF5LCB1cGRhdGVUeXBlIHx8ICcnKTtcbiAgICAgICAgfVxuICAgICAgfSk7IFxuICAgIH1cbiAgfVxuXG4gIGdldEZyYW1ld29ya1JlYWQoZnJhbWVXb3JrSWQ6IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgaWYgKHRoaXMubG9jYWxDb25maWcuY29ubmVjdGlvblR5cGUgPT09ICdvbmxpbmUnKSB7XG4gICAgICByZXR1cm4gdGhpcy5odHRwLmdldChgLyR7dGhpcy5wcm94aWVzUGF0aH0vZnJhbWV3b3JrL3YxL3JlYWQvJHtmcmFtZVdvcmtJZH1gLCB7IHdpdGhDcmVkZW50aWFsczogdHJ1ZSB9KS5waXBlKFxuICAgICAgICBtYXAoKHJlc3BvbnNlOiBhbnkpID0+IF8uZ2V0KHJlc3BvbnNlLCAncmVzdWx0LmZyYW1ld29yaycpKVxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG9mKHt9KTtcbiAgICB9XG4gIH1cblxuICBnZXRDb25maWdPZkNhdGVnb3J5Q29uZmlnQnlGcmFtZVdvcmtJZChjb2RlOiBzdHJpbmcsIGZyYW1ld29ya0lkOiBzdHJpbmcpOiBhbnkge1xuICAgIGxldCBjYXRlZ29yeUNvbmZpZzogYW55O1xuICAgIGlmICh0aGlzLnJvb3RDb25maWcgJiYgdGhpcy5yb290Q29uZmlnWzBdKSB7XG4gICAgICB0aGlzLnJvb3RDb25maWcuZm9yRWFjaCgoY29uZmlnOiBhbnkpID0+IHtcbiAgICAgICAgaWYgKGZyYW1ld29ya0lkID09IGNvbmZpZy5mcmFtZXdvcmtJZCkge1xuICAgICAgICAgIGNhdGVnb3J5Q29uZmlnID0gY29uZmlnLmNvbmZpZy5maW5kKChvYmo6IGFueSkgPT4gb2JqLmNhdGVnb3J5ID09IGNvZGUpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIGNhdGVnb3J5Q29uZmlnO1xuICB9XG5cbiAgZ2V0Q29uZmlnQnlGcmFtZVdvcmtJZChmcmFtZXdvcmtJZDogc3RyaW5nKTogYW55IHtcbiAgICBsZXQgY2F0ZWdvcnlDb25maWc6IGFueTtcbiAgICBpZiAodGhpcy5yb290Q29uZmlnICYmIHRoaXMucm9vdENvbmZpZ1swXSkge1xuICAgICAgdGhpcy5yb290Q29uZmlnLmZvckVhY2goKGNvbmZpZzogYW55KSA9PiB7XG4gICAgICAgIGlmIChmcmFtZXdvcmtJZCA9PSBjb25maWcuZnJhbWV3b3JrSWQpIHtcbiAgICAgICAgICBjYXRlZ29yeUNvbmZpZyA9IGNvbmZpZztcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiBjYXRlZ29yeUNvbmZpZztcbiAgfVxuXG4gIHVwZGF0ZUZ1bGxUZXJtRGF0YUxvY2FsTWFwKF9jb2x1bW5Db2RlOiBzdHJpbmcsIHBhcmVudERhdGE6IGFueSk6IHZvaWQge1xuICAgIHRoaXMuc2VsZWN0aW9uTGlzdC5mb3JFYWNoKChzZWxlY3RlZERhdGE6IGFueSkgPT4ge1xuICAgICAgbGV0IGxpc3REYXRhOiBhbnkgPSB0aGlzLmxpc3QuZ2V0KHNlbGVjdGVkRGF0YS5jYXRlZ29yeSk7XG4gICAgICBpZiAobGlzdERhdGEgJiYgbGlzdERhdGEuY2hpbGRyZW4gJiYgbGlzdERhdGEuY2hpbGRyZW4ubGVuZ3RoKSB7XG4gICAgICAgIHRoaXMudXBkYXRlTG9jYWxMaXN0VGVybShsaXN0RGF0YSwgcGFyZW50RGF0YSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICB1cGRhdGVMb2NhbExpc3RUZXJtKGl0ZW06IGFueSwgcGFyZW50OiBhbnkpOiB2b2lkIHtcbiAgICBpZiAoaXRlbSAmJiBpdGVtLmNoaWxkcmVuICYmIGl0ZW0uY2hpbGRyZW4ubGVuZ3RoKSB7XG4gICAgICBpdGVtLmNoaWxkcmVuLmZvckVhY2goKGl0bURhdGE6IGFueSkgPT4ge1xuICAgICAgICBpZiAoaXRtRGF0YS5pZGVudGlmaWVyID09PSBwYXJlbnQuaWRlbnRpZmllcikge1xuICAgICAgICAgIGl0bURhdGFbJ2Rlc2NyaXB0aW9uJ10gPSBwYXJlbnRbJ2Rlc2NyaXB0aW9uJ107XG4gICAgICAgICAgaXRtRGF0YVsnYWRkaXRpb25hbFByb3BlcnRpZXMnXSA9IHBhcmVudFsnYWRkaXRpb25hbFByb3BlcnRpZXMnXTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXRtRGF0YS5jaGlsZHJlbikge1xuICAgICAgICAgIHRoaXMudXBkYXRlTG9jYWxMaXN0VGVybShpdG1EYXRhLCBwYXJlbnQpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cbn0iXX0=
388
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnJhbWV3b3JrLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJyYXJ5L3N1bmJpcmQtY2IvdHJlZS1oaWVyYXJjaHkvc3JjL2xpYi9zZXJ2aWNlcy9mcmFtZXdvcmsuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxlQUFlLEVBQWMsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3ZELE9BQU8sRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUc5QyxPQUFPLEVBQUUsRUFBRSxJQUFJLE1BQU0sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUlwQyxPQUFPLENBQUMsTUFBTSxRQUFRLENBQUM7Ozs7QUFZdkIsTUFBTSxPQUFPLGdCQUFnQjtJQW1CM0IsWUFDVSxJQUFnQixFQUNqQixXQUFtQztRQURsQyxTQUFJLEdBQUosSUFBSSxDQUFZO1FBQ2pCLGdCQUFXLEdBQVgsV0FBVyxDQUF3QjtRQXBCNUMsbUJBQWMsR0FBa0QsSUFBSSxlQUFlLENBQStCLEVBQUUsQ0FBQyxDQUFDO1FBQ3RILGtCQUFhLEdBQTZCLElBQUksZUFBZSxDQUFVLEtBQUssQ0FBQyxDQUFDO1FBQzlFLHFCQUFnQixHQUNkLElBQUksZUFBZSxDQUF1RSxJQUFJLENBQUMsQ0FBQztRQUNsRyxnQkFBVyxHQUF5QixJQUFJLGVBQWUsQ0FBTSxJQUFJLENBQUMsQ0FBQztRQUNuRSwwQkFBcUIsR0FBeUIsSUFBSSxlQUFlLENBQU0sSUFBSSxDQUFDLENBQUM7UUFDN0UsU0FBSSxHQUFHLElBQUksR0FBRyxFQUFtQyxDQUFDO1FBQ2xELGtCQUFhLEdBQUcsSUFBSSxHQUFHLEVBQWUsQ0FBQztRQUN2Qywr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QUU7WUFDakQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFZLEVBQUUsRUFBRTtnQkFDckMsSUFBSSxPQUFPLENBQUMsVUFBVSxLQUFLLE1BQU0sQ0FBQyxVQUFVLEVBQUU7b0JBQzVDLE9BQU8sQ0FBQyxhQUFhLENBQUMsR0FBRyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7b0JBQy9DLE9BQU8sQ0FBQyxzQkFBc0IsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO2lCQUNsRTtnQkFDRCxJQUFJLE9BQU8sQ0FBQyxRQUFRLEVBQUU7b0JBQ3BCLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLENBQUM7aUJBQzNDO1lBQ0gsQ0FBQyxDQUFDLENBQUM7U0FDSjtJQUNILENBQUM7K0dBemFVLGdCQUFnQjttSEFBaEIsZ0JBQWdCLGNBRmYsTUFBTTs7NEZBRVAsZ0JBQWdCO2tCQUg1QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIG1hcCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgRlJBTUVXT1JLIH0gZnJvbSAnLi4vY29uc3RhbnRzL2RhdGEnO1xuaW1wb3J0IHsgTlNGcmFtZXdvcmsgfSBmcm9tICcuLi9tb2RlbHMvZnJhbWV3b3JrLm1vZGVsJztcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyB2NCBhcyB1dWlkdjQgfSBmcm9tICd1dWlkJztcbmltcG9ydCB7IElDb25uZWN0aW9uIH0gZnJvbSAnLi4vbW9kZWxzL2Nvbm5lY3Rpb24ubW9kZWwnO1xuaW1wb3J0IHsgTG9jYWxDb25uZWN0aW9uU2VydmljZSB9IGZyb20gJy4vbG9jYWwtY29ubmVjdGlvbi5zZXJ2aWNlJztcbi8qIHRzbGludDpkaXNhYmxlICovXG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuLyogdHNsaW50OmVuYWJsZSAqL1xuXG5pbnRlcmZhY2UgTm90aWZpZXJUeXBlIHtcbiAgdHlwZTogJ3NlbGVjdCcgfCAnaW5zZXJ0JyB8ICd1cGRhdGUnIHwgJ2RlbGV0ZSc7XG4gIGFjdGlvbjogc3RyaW5nO1xuICBkYXRhOiBhbnk7XG59XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIEZyYW1ld29ya1NlcnZpY2Uge1xuICBjYXRlZ29yaWVzSGFzaDogQmVoYXZpb3JTdWJqZWN0PE5TRnJhbWV3b3JrLklDYXRlZ29yeVtdIHwgW10+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxOU0ZyYW1ld29yay5JQ2F0ZWdvcnlbXSB8IFtdPihbXSk7XG4gIGlzRGF0YVVwZGF0ZWQ6IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICBjdXJyZW50U2VsZWN0aW9uOiBCZWhhdmlvclN1YmplY3Q8eyB0eXBlOiBzdHJpbmcsIGRhdGE6IGFueSwgY2FyZFJlZj86IGFueSwgaXNVcGRhdGU/OmJvb2xlYW4gfSB8IG51bGw+ID0gXG4gICAgbmV3IEJlaGF2aW9yU3ViamVjdDx7IHR5cGU6IHN0cmluZywgZGF0YTogYW55LCBjYXJkUmVmPzogYW55LCBpc1VwZGF0ZT86Ym9vbGVhbiB9IHwgbnVsbD4obnVsbCk7XG4gIHRlcm1TdWJqZWN0OiBCZWhhdmlvclN1YmplY3Q8YW55PiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8YW55PihudWxsKTtcbiAgYWZ0ZXJBZGRPckVkaXRTdWJqZWN0OiBCZWhhdmlvclN1YmplY3Q8YW55PiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8YW55PihudWxsKTtcbiAgbGlzdCA9IG5ldyBNYXA8c3RyaW5nLCBOU0ZyYW1ld29yay5JQ29sdW1uVmlldz4oKTtcbiAgc2VsZWN0aW9uTGlzdCA9IG5ldyBNYXA8c3RyaW5nLCBhbnk+KCk7XG4gIGluc2VydFVwZGF0ZURlbGV0ZU5vdGlmaWVyOiBCZWhhdmlvclN1YmplY3Q8Tm90aWZpZXJUeXBlIHwgbnVsbD4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PE5vdGlmaWVyVHlwZSB8IG51bGw+KG51bGwpO1xuICBlbnZpcm9ubWVudDogYW55O1xuICBsaWJDb25maWchOiBJQ29ubmVjdGlvbjtcbiAgZnJhbWV3b3JrSWQhOiBzdHJpbmc7XG4gIHJvb3RDb25maWc6IGFueTtcbiAgcHJveGllc1BhdGggPSAnYXBpcy9wcm94aWVzL3Y4JztcbiAgY2FyZENsa0RhdGE6IGFueTtcbiAgQ3VycmVudENhcmRDbGsgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGFueT4obnVsbCk7XG4gIGNvbXBsZXRlUmVzcG9uc2U6IGFueTtcbiAgXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgaHR0cDogSHR0cENsaWVudCxcbiAgICBwdWJsaWMgbG9jYWxDb25maWc6IExvY2FsQ29ubmVjdGlvblNlcnZpY2VcbiAgKSB7fVxuXG4gIGdldEZyYW1ld29ya0luZm8oX29yZ0RhdGE/OmFueSk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oJ3Rlcm1zJyk7XG4gICAgaWYgKHRoaXMubG9jYWxDb25maWcuY29ubmVjdGlvblR5cGUgPT09ICdvbmxpbmUnKSB7XG4gICAgICAvL2ZyYW1ld29yay92MS9yZWFkLzAxMzU4OTEyMjkzODM5NjY3MjQxX29yZ19oaWVyYXJjaHlcbiAgICAgIC8vZnJhbWV3b3JrL3YxL3JlYWQvJHt0aGlzLmVudmlyb25tZW50LmZyYW1ld29ya05hbWV9XG4gICAgICBsZXQgdXJsID0gYC8ke3RoaXMucHJveGllc1BhdGh9L2ZyYW1ld29yay92MS9yZWFkL2BcbiAgICAgIGlmIChfb3JnRGF0YSkge1xuICAgICAgICB1cmwgID0gdXJsICsgX29yZ0RhdGEub3JnSGllcmFyY2h5RnJhbWV3b3JrSWQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB1cmwgPSB1cmwgKyB0aGlzLmVudmlyb25tZW50LmZyYW1ld29ya05hbWU7XG4gICAgICB9XG4gICAgICByZXR1cm4gdGhpcy5odHRwLmdldChgJHt1cmx9YCwgeyB3aXRoQ3JlZGVudGlhbHM6IHRydWUgfSkucGlwZShcbiAgICAgICAgdGFwKChyZXNwb25zZTogYW55KSA9PiB7XG4gICAgICAgICAgdGhpcy5yZXNldEFsbCgpO1xuICAgICAgICAgIHRoaXMuZm9ybWF0ZURhdGEocmVzcG9uc2UpO1xuICAgICAgICAgIHRoaXMuY29tcGxldGVSZXNwb25zZSA9IHJlc3BvbnNlLnJlc3VsdC5mcmFtZXdvcms7XG4gICAgICAgIH0pLFxuICAgICAgICBjYXRjaEVycm9yKChlcnIpID0+IHtcbiAgICAgICAgICB0aGlzLnJlc2V0QWxsKCk7XG4gICAgICAgICAgdGhpcy5saXN0LmNsZWFyKCk7XG4gICAgICAgICAgdGhpcy5jYXRlZ29yaWVzSGFzaC5uZXh0KFtdKTtcbiAgICAgICAgICB0aHJvdyAnRXJyb3IgaW4gc291cmNlLiBEZXRhaWxzOiAnICsgZXJyO1xuICAgICAgICB9KSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucmVzZXRBbGwoKTtcbiAgICAgIHRoaXMuZm9ybWF0ZURhdGEoRlJBTUVXT1JLKTtcbiAgICAgIHJldHVybiBvZihGUkFNRVdPUkspO1xuICAgIH1cbiAgfVxuXG4gIHJlYWRUZXJtcyhmcmFtZXdvcmtJZDogc3RyaW5nLCBjYXRlZ29yeUlkOiBzdHJpbmcsIHJlcXVlc3RCb2R5OiBhbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChgLyR7dGhpcy5wcm94aWVzUGF0aH0vZnJhbWV3b3JrL3YxL3Rlcm0vc2VhcmNoP2ZyYW1ld29yaz0ke2ZyYW1ld29ya0lkfSZjYXRlZ29yeT0ke2NhdGVnb3J5SWR9YCwgcmVxdWVzdEJvZHkpLnBpcGUoXG4gICAgICBtYXAoKHJlczogYW55KSA9PiByZXMucmVzdWx0KSk7XG4gIH1cblxuICBjcmVhdGVUZXJtKGZyYW1ld29ya0lkOiBzdHJpbmcsIGNhdGVnb3J5SWQ6IHN0cmluZywgcmVxdWVzdEJvZHk6IGFueSk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAvJHt0aGlzLnByb3hpZXNQYXRofS9mcmFtZXdvcmsvdjEvdGVybS9jcmVhdGU/ZnJhbWV3b3JrPSR7ZnJhbWV3b3JrSWR9JmNhdGVnb3J5PSR7Y2F0ZWdvcnlJZH1gLCByZXF1ZXN0Qm9keSk7XG4gIH1cbiBcbiAgY3JlYXRlVGVybXNXcmFwcGVyKGNhdGVnb3J5OiBzdHJpbmcsIHJlcXVlc3RCb2R5OiBhbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGxldCBjYXRlZ29yeUl0ZW06IHN0cmluZztcbiAgICBpZiAoY2F0ZWdvcnkgPT09ICd0aGVtZScpIHtcbiAgICAgIGNhdGVnb3J5SXRlbSA9ICdjb21wZXRlbmN5VGhlbWUnO1xuICAgIH0gZWxzZSB7XG4gICAgICBjYXRlZ29yeUl0ZW0gPSAnY29tcGV0ZW5jeVN1YlRoZW1lJztcbiAgICB9XG4gICBcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYC8ke3RoaXMucHJveGllc1BhdGh9LyR7Y2F0ZWdvcnlJdGVtfS9jcmVhdGUvdGVybWAsIHJlcXVlc3RCb2R5KVxuICAgICAgLnBpcGUobWFwKHJlcyA9PiBfLmdldChyZXMsICdyZXN1bHQnKSkpO1xuICB9XG5cbiAgcmV0aXJlVGVybShmcmFtZXdvcmtJZDogc3RyaW5nLCBjYXRlZ29yeUlkOiBzdHJpbmcsIGNhdGVnb3J5VGVybUNvZGU6IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5kZWxldGUoYC8ke3RoaXMucHJveGllc1BhdGh9L2ZyYW1ld29yay92MS90ZXJtL3JldGlyZS8ke2NhdGVnb3J5VGVybUNvZGV9P2ZyYW1ld29yaz0ke2ZyYW1ld29ya0lkfSZjYXRlZ29yeT0ke2NhdGVnb3J5SWR9YCk7XG4gIH1cblxuICByZXRpcmVNdWx0aXBsZVRlcm0oZnJhbWV3b3JrSWQ6IHN0cmluZywgY2F0ZWdvcnlJZDogc3RyaW5nLCByZXF1ZXN0Qm9keTogYW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYC8ke3RoaXMucHJveGllc1BhdGh9L2ZyYW1ld29yay92MS90ZXJtL3JldGlyZT9mcmFtZXdvcms9JHtmcmFtZXdvcmtJZH0mY2F0ZWdvcnk9JHtjYXRlZ29yeUlkfWAsIHJlcXVlc3RCb2R5KTtcbiAgfVxuXG4gIHVwZGF0ZVRlcm0oZnJhbWV3b3JrSWQ6IHN0cmluZywgY2F0ZWdvcnlJZDogc3RyaW5nLCBjYXRlZ29yeVRlcm1Db2RlOiBzdHJpbmcsIHJlcXVlc3RCb2R5OiBhbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAucGF0Y2goYC8ke3RoaXMucHJveGllc1BhdGh9L2ZyYW1ld29yay92MS90ZXJtL3VwZGF0ZS8ke2NhdGVnb3J5VGVybUNvZGV9P2ZyYW1ld29yaz0ke2ZyYW1ld29ya0lkfSZjYXRlZ29yeT0ke2NhdGVnb3J5SWR9YCwgcmVxdWVzdEJvZHkpO1xuICB9XG5cbiAgcHVibGlzaEZyYW1ld29yaygpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChgLyR7dGhpcy5wcm94aWVzUGF0aH0vZnJhbWV3b3JrL3YxL3B1Ymxpc2gvJHt0aGlzLmVudmlyb25tZW50LmZyYW1ld29ya05hbWV9YCwge30pO1xuICB9XG5cbiAgZ2V0VXVpZCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB1dWlkdjQoKTtcbiAgfVxuXG4gIHVwZGF0ZUVudmlyb25tZW50KGVudjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5lbnZpcm9ubWVudCA9IGVudjtcbiAgfVxuXG4gIGdldEVudmlyb21lbnQoKTogYW55IHtcbiAgICByZXR1cm4gdGhpcy5lbnZpcm9ubWVudDtcbiAgfVxuXG4gIGdldEZyYW1ld29ya0lkKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuZnJhbWV3b3JrSWQ7XG4gIH1cblxuICBnZXROZXh0Q2F0ZWdvcnkoY3VycmVudENhdGVnb3J5OiBzdHJpbmcpOiBOU0ZyYW1ld29yay5JQ2F0ZWdvcnkgfCBudWxsIHtcbiAgICBjb25zdCBjdXJyZW50SW5kZXggPSB0aGlzLmNhdGVnb3JpZXNIYXNoLnZhbHVlLmZpbmRJbmRleCgoYTogTlNGcmFtZXdvcmsuSUNhdGVnb3J5KSA9PiB7XG4gICAgICByZXR1cm4gYS5jb2RlID09PSBjdXJyZW50Q2F0ZWdvcnk7XG4gICAgfSk7XG4gICAgbGV0IGNhdGVnb3J5TGVuZ3RoID0gdGhpcy5jYXRlZ29yaWVzSGFzaC5nZXRWYWx1ZSgpLmxlbmd0aDtcbiAgICByZXR1cm4gKGN1cnJlbnRJbmRleCArIDEpIDwgY2F0ZWdvcnlMZW5ndGggPyB0aGlzLmNhdGVnb3JpZXNIYXNoLmdldFZhbHVlKClbY3VycmVudEluZGV4ICsgMV0gOiBudWxsO1xuICB9XG5cbiAgZ2V0UHJldmlvdXNDYXRlZ29yeShjdXJyZW50Q2F0ZWdvcnk6IHN0cmluZyk6IE5TRnJhbWV3b3JrLklDYXRlZ29yeSB8IG51bGwge1xuICAgIGNvbnN0IGN1cnJlbnRJbmRleCA9IHRoaXMuY2F0ZWdvcmllc0hhc2gudmFsdWUuZmluZEluZGV4KChhOiBOU0ZyYW1ld29yay5JQ2F0ZWdvcnkpID0+IHtcbiAgICAgIHJldHVybiBhLmNvZGUgPT09IGN1cnJlbnRDYXRlZ29yeTtcbiAgICB9KTtcbiAgICByZXR1cm4gKGN1cnJlbnRJbmRleCAtIDEpID49IDAgPyB0aGlzLmNhdGVnb3JpZXNIYXNoLmdldFZhbHVlKClbY3VycmVudEluZGV4IC0gMV0gOiBudWxsO1xuICB9XG5cbiAgZ2V0UGFyZW50VGVybShjdXJyZW50Q2F0ZWdvcnk6IHN0cmluZyk6IGFueSB7XG4gICAgY29uc3QgcGFyZW50ID0gdGhpcy5nZXRQcmV2aW91c0NhdGVnb3J5KGN1cnJlbnRDYXRlZ29yeSkgfHwgbnVsbDtcbiAgICByZXR1cm4gcGFyZW50ID8gdGhpcy5zZWxlY3Rpb25MaXN0LmdldChwYXJlbnQuY29kZSkgOiBudWxsO1xuICB9XG5cbiAgY2hpbGRDbGljayhldmVudDogeyB0eXBlOiBzdHJpbmcsIGRhdGE6IGFueSB9KTogdm9pZCB7XG4gICAgdGhpcy5jdXJyZW50U2VsZWN0aW9uLm5leHQoZXZlbnQpO1xuICB9XG5cbiAgcmVzZXRBbGwoKTogdm9pZCB7XG4gICAgdGhpcy5jYXRlZ29yaWVzSGFzaC5uZXh0KFtdKTtcbiAgICB0aGlzLmN1cnJlbnRTZWxlY3Rpb24ubmV4dChudWxsKTtcbiAgICB0aGlzLnNlbGVjdGlvbkxpc3QuY2xlYXIoKTtcbiAgICB0aGlzLmxpc3QuY2xlYXIoKTtcbiAgfVxuXG4gIGlzTGFzdENvbHVtbihjb2xDb2RlOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5jYXRlZ29yaWVzSGFzaC52YWx1ZSAmJiAodGhpcy5jYXRlZ29yaWVzSGFzaC52YWx1ZS5maW5kSW5kZXgoKGE6IE5TRnJhbWV3b3JrLklDYXRlZ29yeSkgPT4ge1xuICAgICAgcmV0dXJuIGEuY29kZSA9PT0gY29sQ29kZTtcbiAgICB9KSkgPT09ICh0aGlzLmNhdGVnb3JpZXNIYXNoLnZhbHVlLmxlbmd0aCAtIDEpO1xuICB9XG5cbiAgcmVtb3ZlSXRlbUZyb21BcnJheShhcnJheTogYW55W10sIGl0ZW06IGFueSk6IGFueVtdIHtcbiAgICAvKiBhc3NpZ24gYSBlbXB0eSBhcnJheSAqL1xuICAgIHZhciB0bXA6IGFueVtdID0gW107XG4gICAgLyogbG9vcCBvdmVyIGFsbCBhcnJheSBpdGVtcyAqL1xuICAgIGZvciAodmFyIGluZGV4IGluIGFycmF5KSB7XG4gICAgICBpZiAoYXJyYXlbaW5kZXhdICE9PSBpdGVtKSB7XG4gICAgICAgIC8qIHB1c2ggdG8gdGVtcG9yYXJ5IGFycmF5IGlmIG5vdCBsaWtlIGl0ZW0gKi9cbiAgICAgICAgdG1wLnB1c2goYXJyYXlbaW5kZXhdKTtcbiAgICAgIH1cbiAgICB9XG4gICAgLyogcmV0dXJuIHRoZSB0ZW1wb3JhcnkgYXJyYXkgKi9cbiAgICByZXR1cm4gdG1wO1xuICB9XG5cbiAgc2V0IHNldFRlcm0ocmVzOiBhbnkpIHtcbiAgICB0aGlzLnRlcm1TdWJqZWN0Lm5leHQocmVzKTtcbiAgICBsZXQgb2xkVGVybXMgPSB0aGlzLmdldFRlcm0gfHwgW107XG4gICAgb2xkVGVybXMucHVzaChyZXMpO1xuICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCd0ZXJtcycsIEpTT04uc3RyaW5naWZ5KG9sZFRlcm1zKSk7XG4gIH1cblxuICBnZXQgZ2V0VGVybSgpOiBhbnlbXSB7XG4gICAgcmV0dXJuIEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3Rlcm1zJykgfHwgJ1tdJykgfHwgW107XG4gIH1cblxuICB1cGRhdGVBZnRlckFkZE9yRWRpdFN1YmplY3QocmVzOiBhbnkpOiB2b2lkIHtcbiAgICBpZiAocmVzKSB7XG4gICAgICB0aGlzLmFmdGVyQWRkT3JFZGl0U3ViamVjdC5uZXh0KHJlcyk7XG4gICAgfSBcbiAgfVxuXG4gIGdldExvY2FsVGVybXNCeVBhcmVudChwYXJlbnRDb2RlOiBzdHJpbmcpOiBhbnlbXSB7XG4gICAgY29uc3QgZmlsdGVyZWREYXRhID0gdGhpcy5nZXRUZXJtLmZpbHRlcih4ID0+IHtcbiAgICAgIHJldHVybiB4LnBhcmVudCAmJiB4LnBhcmVudC5jYXRlZ29yeSA9PT0gcGFyZW50Q29kZTtcbiAgICB9KSB8fCBbXTtcblxuICAgIHJldHVybiBmaWx0ZXJlZERhdGEubWFwKHggPT4ge1xuICAgICAgcmV0dXJuIHgudGVybTtcbiAgICB9KTtcbiAgfVxuXG4gIGdldExvY2FsVGVybXNCeUNhdGVnb3J5KHBhcmVudENvZGU6IHN0cmluZyk6IGFueVtdIHtcbiAgICBjb25zdCBmaWx0ZXJlZERhdGEgPSB0aGlzLmdldFRlcm0uZmlsdGVyKHggPT4ge1xuICAgICAgcmV0dXJuIHgudGVybSAmJiB4LnRlcm0uY2F0ZWdvcnkgPT09IHBhcmVudENvZGU7XG4gICAgfSkgfHwgW107XG5cbiAgICByZXR1cm4gZmlsdGVyZWREYXRhO1xuICB9XG5cbiAgZ2V0TG9jYWxUZXJtc0NhdGVnb3J5KGNhdGVnb3J5OiBzdHJpbmcpOiBhbnlbXSB7XG4gICAgY29uc3QgZmlsdGVyZWREYXRhID0gdGhpcy5nZXRUZXJtLmZpbHRlcih4ID0+IHtcbiAgICAgIHJldHVybiB4LmNhdGVnb3J5ID09PSBjYXRlZ29yeTtcbiAgICB9KSB8fCBbXTtcblxuICAgIHJldHVybiBmaWx0ZXJlZERhdGE7XG4gIH1cblxuICBmb3JtYXRlRGF0YShyZXNwb25zZTogYW55KTogdm9pZCB7XG4gICAgdGhpcy5mcmFtZXdvcmtJZCA9IHJlc3BvbnNlLnJlc3VsdC5mcmFtZXdvcmsuY29kZTtcbiAgICAocmVzcG9uc2UucmVzdWx0LmZyYW1ld29yay5jYXRlZ29yaWVzKS5mb3JFYWNoKChhOiBhbnksIF9pZHg6IG51bWJlcikgPT4ge1xuICAgICAgdGhpcy5saXN0LnNldChhLmNvZGUsIHtcbiAgICAgICAgY29kZTogYS5jb2RlLFxuICAgICAgICBpZGVudGlmaWVyOiBhLmlkZW50aWZpZXIsXG4gICAgICAgIGluZGV4OiBhLmluZGV4LFxuICAgICAgICBuYW1lOiBhLm5hbWUsXG4gICAgICAgIHNlbGVjdGVkOiBhLnNlbGVjdGVkLFxuICAgICAgICBzdGF0dXM6IGEuc3RhdHVzIGFzIE5TRnJhbWV3b3JrLlROb2RlU3RhdHVzLFxuICAgICAgICBkZXNjcmlwdGlvbjogYS5kZXNjcmlwdGlvbixcbiAgICAgICAgdHJhbnNsYXRpb25zOiBhLnRyYW5zbGF0aW9ucyxcbiAgICAgICAgY2F0ZWdvcnk6IGEuY2F0ZWdvcnksXG4gICAgICAgIGFzc29jaWF0aW9uczogYS5hc3NvY2lhdGlvbnMsXG4gICAgICAgIGNvbmZpZzogdGhpcy5nZXRDb25maWcoYS5jb2RlKSxcbiAgICAgICAgY2hpbGRyZW46IChhLnRlcm1zIHx8IFtdKS5tYXAoKGM6IGFueSkgPT4ge1xuICAgICAgICAgIGNvbnN0IGFzc29jaWF0aW9ucyA9IGMuYXNzb2NpYXRpb25zIHx8IFtdO1xuICAgICAgICAgIGlmIChhc3NvY2lhdGlvbnMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgT2JqZWN0LmFzc2lnbihjLCB7IGNoaWxkcmVuOiBhc3NvY2lhdGlvbnMgfSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBjO1xuICAgICAgICB9KVxuICAgICAgfSk7XG4gICAgfSk7XG4gICAgXG4gICAgY29uc3QgYWxsQ2F0ZWdvcmllczogTlNGcmFtZXdvcmsuSUNhdGVnb3J5W10gPSBbXTtcbiAgICB0aGlzLmxpc3QuZm9yRWFjaChhID0+IHtcbiAgICAgIGFsbENhdGVnb3JpZXMucHVzaCh7XG4gICAgICAgIGNvZGU6IGEuY29kZSxcbiAgICAgICAgaWRlbnRpZmllcjogYS5pZGVudGlmaWVyLFxuICAgICAgICBpbmRleDogYS5pbmRleCxcbiAgICAgICAgbmFtZTogYS5uYW1lLFxuICAgICAgICBzdGF0dXM6IGEuc3RhdHVzIGFzIE5TRnJhbWV3b3JrLlROb2RlU3RhdHVzLFxuICAgICAgICBkZXNjcmlwdGlvbjogYS5kZXNjcmlwdGlvbixcbiAgICAgICAgdHJhbnNsYXRpb25zOiBhLnRyYW5zbGF0aW9ucyxcbiAgICAgIH0gYXMgTlNGcmFtZXdvcmsuSUNhdGVnb3J5KTtcbiAgICB9KTtcbiAgICB0aGlzLmNhdGVnb3JpZXNIYXNoLm5leHQoYWxsQ2F0ZWdvcmllcyk7XG4gIH1cblxuICByZW1vdmVPbGRMaW5lKCk6IHZvaWQge1xuICAgIGNvbnN0IGVsZXMgPSBBcnJheS5mcm9tKGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2xlYWRlci1saW5lJykgfHwgW10pO1xuICAgIGlmIChlbGVzLmxlbmd0aCA+IDApIHtcbiAgICAgIGVsZXMuZm9yRWFjaChlbGUgPT4gZWxlLnJlbW92ZSgpKTtcbiAgICB9XG4gIH1cblxuICBzZXRDb25maWcoY29uZmlnOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLnJvb3RDb25maWcgPSBjb25maWc7XG4gIH1cblxuICBnZXRDb25maWcoY29kZTogc3RyaW5nKTogYW55IHtcbiAgICBsZXQgY2F0ZWdvcnlDb25maWc6IGFueTtcbiAgICBpZiAodGhpcy5yb290Q29uZmlnICYmIHRoaXMucm9vdENvbmZpZ1swXSkge1xuICAgICAgdGhpcy5yb290Q29uZmlnLmZvckVhY2goKGNvbmZpZzogYW55KSA9PiB7XG4gICAgICAgIGlmICh0aGlzLmZyYW1ld29ya0lkID09IGNvbmZpZy5mcmFtZXdvcmtJZCkge1xuICAgICAgICAgIGNhdGVnb3J5Q29uZmlnID0gY29uZmlnLmNvbmZpZy5maW5kKChvYmo6IGFueSkgPT4gb2JqLmNhdGVnb3J5ID09IGNvZGUpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gICAgaWYgKCFjYXRlZ29yeUNvbmZpZykge1xuICAgICAgcmV0dXJuIHRoaXMucm9vdENvbmZpZy5jb25maWdbMF1cbiAgICB9XG4gICAgcmV0dXJuIGNhdGVnb3J5Q29uZmlnO1xuICB9XG5cbiAgZ2V0QWxsU2VsZWN0ZWRUZXJtcygpOiBhbnlbXSB7XG4gICAgY29uc3Qgc2VsZWN0ZWRUZXJtczogYW55W10gPSBbXTtcbiAgICB0aGlzLmxpc3QuZm9yRWFjaChsID0+IHtcbiAgICAgIGlmIChsLmNoaWxkcmVuICYmIGwuY2hpbGRyZW4ubGVuZ3RoKSB7XG4gICAgICAgIGwuY2hpbGRyZW4uZm9yRWFjaChjID0+IHtcbiAgICAgICAgICBpZiAoYy5zZWxlY3RlZCkge1xuICAgICAgICAgICAgc2VsZWN0ZWRUZXJtcy5wdXNoKGMpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIHNlbGVjdGVkVGVybXM7XG4gIH1cblxuICBnZXRQcmV2aW91c1NlbGVjdGVkVGVybXMoY29kZTogc3RyaW5nKTogYW55W10ge1xuICAgIGxldCBwcmV2U2VsZWN0ZWRUZXJtczogYW55W10gPSBbXTtcbiAgICB0aGlzLnNlbGVjdGlvbkxpc3QuZm9yRWFjaChzbCA9PiB7XG4gICAgICBpZiAoc2wuY2F0ZWdvcnkgIT09IGNvZGUpIHtcbiAgICAgICAgcHJldlNlbGVjdGVkVGVybXMucHVzaChzbCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIHByZXZTZWxlY3RlZFRlcm1zO1xuICB9XG5cbiAgZ2V0S2NtU2VhcmNoTGlzdChyZXF1ZXN0Qm9keTogYW55LCBjYXRlZ29yeTogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBsZXQgY2F0ZWdvcnlJdGVtOiBzdHJpbmc7XG4gICAgaWYgKGNhdGVnb3J5ID09PSAndGhlbWUnKSB7XG4gICAgICBjYXRlZ29yeUl0ZW0gPSAnY29tcGV0ZW5jeVRoZW1lJztcbiAgICB9IGVsc2Uge1xuICAgICAgY2F0ZWdvcnlJdGVtID0gJ2NvbXBldGVuY3lTdWJUaGVtZSc7XG4gICAgfVxuICAgIFxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChgLyR7dGhpcy5wcm94aWVzUGF0aH0vJHtjYXRlZ29yeUl0ZW19L3NlYXJjaGAsIHJlcXVlc3RCb2R5KVxuICAgICAgLnBpcGUobWFwKHJlcyA9PiBfLmdldChyZXMsICdyZXN1bHQucmVzdWx0JykpKTtcbiAgfVxuXG4gIHVwZGF0ZUxvY2FsTGlzdChpdGVtOiBhbnksIHBhcmVudDogYW55LCBzZWxlY3RlZFRlcm1BcnJheTogYW55W10sIHVwZGF0ZVR5cGU6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmIChpdGVtICYmIGl0ZW0uY2hpbGRyZW4gJiYgaXRlbS5jaGlsZHJlbi5sZW5ndGgpIHtcbiAgICAgIGlmICh1cGRhdGVUeXBlID09PSAnZGVsZXRlJykge1xuICAgICAgICBpdGVtLmNoaWxkcmVuLmZvckVhY2goKGl0bURhdGE6IGFueSkgPT4ge1xuICAgICAgICAgIGlmIChpdG1EYXRhLmlkZW50aWZpZXIgPT09IHBhcmVudC5pZGVudGlmaWVyKSB7XG4gICAgICAgICAgICBjb25zdCBhc3NvY2lhdGlvbkxpc3Q6IGFueSA9IF8uZGlmZmVyZW5jZVdpdGgoaXRtRGF0YS5hc3NvY2lhdGlvbnMsIHNlbGVjdGVkVGVybUFycmF5LCAoYTphbnksIGI6IGFueSkgPT4gYS5pZGVudGlmaWVyID09PSBiLmlkZW50aWZpZXIpO1xuICAgICAgICAgICAgY29uc3QgY2hpbGRyZW5MaXN0OiBhbnkgPSBfLmRpZmZlcmVuY2VXaXRoKGl0bURhdGEuY2hpbGRyZW4sIHNlbGVjdGVkVGVybUFycmF5LCAoYTphbnksIGI6IGFueSkgPT4gYS5pZGVudGlmaWVyID09PSBiLmlkZW50aWZpZXIpO1xuICAgICAgICAgICAgaXRtRGF0YVsnYXNzb2NpYXRpb25zJ10gPSBhc3NvY2lhdGlvbkxpc3Q7XG4gICAgICAgICAgICBpdG1EYXRhWydjaGlsZHJlbiddID0gY2hpbGRyZW5MaXN0O1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoaXRtRGF0YS5jaGlsZHJlbikge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVMb2NhbExpc3QoaXRtRGF0YSwgcGFyZW50LCBzZWxlY3RlZFRlcm1BcnJheSwgdXBkYXRlVHlwZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGl0ZW0uY2hpbGRyZW4uZm9yRWFjaCgoaXRtRGF0YTogYW55KSA9PiB7XG4gICAgICAgICAgaWYgKGl0bURhdGEuaWRlbnRpZmllciA9PT0gcGFyZW50LmlkZW50aWZpZXIpIHtcbiAgICAgICAgICAgIGxldCBkaWZmZXJlbmNlRGF0YTogYW55W10gPSBbXTtcbiAgICAgICAgICAgIGlmIChpdG1EYXRhICYmIGl0bURhdGEuY2hpbGRyZW4gJiYgaXRtRGF0YS5jaGlsZHJlbi5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgZGlmZmVyZW5jZURhdGEgID0gXy5kaWZmZXJlbmNlQnkoc2VsZWN0ZWRUZXJtQXJyYXksIGl0bURhdGEuY2hpbGRyZW4sICdpZGVudGlmaWVyJyk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBkaWZmZXJlbmNlRGF0YSA9IHNlbGVjdGVkVGVybUFycmF5O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaXRtRGF0YVsnYXNzb2NpYXRpb25zJ10gPSBpdG1EYXRhICYmIGl0bURhdGEuYXNzb2NpYXRpb25zID8gWy4uLml0bURhdGEuYXNzb2NpYXRpb25zLCAuLi5kaWZmZXJlbmNlRGF0YV0gOiBkaWZmZXJlbmNlRGF0YTtcbiAgICAgICAgICAgIGl0bURhdGFbJ2NoaWxkcmVuJ10gPSBpdG1EYXRhICYmIGl0bURhdGEuY2hpbGRyZW4gPyBbLi4uaXRtRGF0YS5jaGlsZHJlbiwgLi4uZGlmZmVyZW5jZURhdGFdIDogZGlmZmVyZW5jZURhdGE7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChpdG1EYXRhLmNoaWxkcmVuKSB7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZUxvY2FsTGlzdChpdG1EYXRhLCBwYXJlbnQsIHNlbGVjdGVkVGVybUFycmF5LCB1cGRhdGVUeXBlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHVwZGF0ZUZyYW1ld29ya0xpc3QoY29sdW1uQ29kZTogc3RyaW5nLCBwYXJlbnREYXRhOiBhbnksIHNlbGVjdGVkVGVybUFycmF5OiBhbnlbXSwgdXBkYXRlVHlwZT86IHN0cmluZyk6IHZvaWQge1xuICAgIGxldCBsaXN0RGF0YTogYW55ID0gdGhpcy5saXN0LmdldChjb2x1bW5Db2RlKTtcbiAgICBpZiAodXBkYXRlVHlwZSA9PT0gJ2RlbGV0ZScpIHtcbiAgICAgIGNvbnN0IGFzc29jaWF0aW9uTGlzdDogYW55ID0gXy5kaWZmZXJlbmNlV2l0aChsaXN0RGF0YS5hc3NvY2lhdGlvbnMsIHNlbGVjdGVkVGVybUFycmF5LCAoYTphbnksIGI6IGFueSkgPT4gYS5pZGVudGlmaWVyID09PSBiLmlkZW50aWZpZXIpO1xuICAgICAgY29uc3QgY2hpbGRyZW5MaXN0OiBhbnkgPSBfLmRpZmZlcmVuY2VXaXRoKGxpc3REYXRhLmNoaWxkcmVuLCBzZWxlY3RlZFRlcm1BcnJheSwgKGE6YW55LCBiOiBhbnkpID0+IGEuaWRlbnRpZmllciA9PT0gYi5pZGVudGlmaWVyKTtcbiAgICAgIGxpc3REYXRhWydhc3NvY2lhdGlvbnMnXSA9IGFzc29jaWF0aW9uTGlzdDtcbiAgICAgIGxpc3REYXRhWydjaGlsZHJlbiddID0gY2hpbGRyZW5MaXN0O1xuXG4gICAgICB0aGlzLnNlbGVjdGlvbkxpc3QuZm9yRWFjaCgoc2VsZWN0ZWREYXRhOiBhbnkpID0+IHtcbiAgICAgICAgbGV0IGxpc3REYXRhOiBhbnkgPSB0aGlzLmxpc3QuZ2V0KHNlbGVjdGVkRGF0YS5jYXRlZ29yeSk7XG4gICAgICAgIGlmIChsaXN0RGF0YSAmJiBsaXN0RGF0YS5jaGlsZHJlbiAmJiBsaXN0RGF0YS5jaGlsZHJlbi5sZW5ndGgpIHtcbiAgICAgICAgICB0aGlzLnVwZGF0ZUxvY2FsTGlzdChsaXN0RGF0YSwgcGFyZW50RGF0YSwgc2VsZWN0ZWRUZXJtQXJyYXksIHVwZGF0ZVR5cGUpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgbGV0IGRpZmZlcmVuY2VEYXRhOiBhbnlbXSA9IFtdO1xuICAgICAgaWYgKGxpc3REYXRhICYmIGxpc3REYXRhLmNoaWxkcmVuICYmIGxpc3REYXRhLmNoaWxkcmVuLmxlbmd0aCkge1xuICAgICAgICBkaWZmZXJlbmNlRGF0YSA9IF8uZGlmZmVyZW5jZUJ5KHNlbGVjdGVkVGVybUFycmF5LCBsaXN0RGF0YS5jaGlsZHJlbiwgJ2lkZW50aWZpZXInKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGRpZmZlcmVuY2VEYXRhID0gc2VsZWN0ZWRUZXJtQXJyYXk7XG4gICAgICB9XG4gICAgICBsaXN0RGF0YVsnYXNzb2NpYXRpb25zJ10gPSBsaXN0RGF0YSAmJiBsaXN0RGF0YS5hc3NvY2lhdGlvbnMgPyBbLi4ubGlzdERhdGEuYXNzb2NpYXRpb25zLCAuLi5kaWZmZXJlbmNlRGF0YV0gOiBkaWZmZXJlbmNlRGF0YTtcbiAgICAgIGxpc3REYXRhWydjaGlsZHJlbiddID0gbGlzdERhdGEgJiYgbGlzdERhdGEuY2hpbGRyZW4gPyBbLi4ubGlzdERhdGEuY2hpbGRyZW4sIC4uLmRpZmZlcmVuY2VEYXRhXSA6IGRpZmZlcmVuY2VEYXRhO1xuXG4gICAgICB0aGlzLnNlbGVjdGlvbkxpc3QuZm9yRWFjaCgoc2VsZWN0ZWREYXRhOiBhbnkpID0+IHtcbiAgICAgICAgbGV0IGxpc3REYXRhOiBhbnkgPSB0aGlzLmxpc3QuZ2V0KHNlbGVjdGVkRGF0YS5jYXRlZ29yeSk7XG4gICAgICAgIGlmIChsaXN0RGF0YSAmJiBsaXN0RGF0YS5jaGlsZHJlbiAmJiBsaXN0RGF0YS5jaGlsZHJlbi5sZW5ndGgpIHtcbiAgICAgICAgICB0aGlzLnVwZGF0ZUxvY2FsTGlzdChsaXN0RGF0YSwgcGFyZW50RGF0YSwgc2VsZWN0ZWRUZXJtQXJyYXksIHVwZGF0ZVR5cGUgfHwgJycpO1xuICAgICAgICB9XG4gICAgICB9KTsgXG4gICAgfVxuICB9XG5cbiAgZ2V0RnJhbWV3b3JrUmVhZChmcmFtZVdvcmtJZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBpZiAodGhpcy5sb2NhbENvbmZpZy5jb25uZWN0aW9uVHlwZSA9PT0gJ29ubGluZScpIHtcbiAgICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KGAvJHt0aGlzLnByb3hpZXNQYXRofS9mcmFtZXdvcmsvdjEvcmVhZC8ke2ZyYW1lV29ya0lkfWAsIHsgd2l0aENyZWRlbnRpYWxzOiB0cnVlIH0pLnBpcGUoXG4gICAgICAgIG1hcCgocmVzcG9uc2U6IGFueSkgPT4gXy5nZXQocmVzcG9uc2UsICdyZXN1bHQuZnJhbWV3b3JrJykpXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gb2Yoe30pO1xuICAgIH1cbiAgfVxuXG4gIGdldENvbmZpZ09mQ2F0ZWdvcnlDb25maWdCeUZyYW1lV29ya0lkKGNvZGU6IHN0cmluZywgZnJhbWV3b3JrSWQ6IHN0cmluZyk6IGFueSB7XG4gICAgbGV0IGNhdGVnb3J5Q29uZmlnOiBhbnk7XG4gICAgaWYgKHRoaXMucm9vdENvbmZpZyAmJiB0aGlzLnJvb3RDb25maWdbMF0pIHtcbiAgICAgIHRoaXMucm9vdENvbmZpZy5mb3JFYWNoKChjb25maWc6IGFueSkgPT4ge1xuICAgICAgICBpZiAoZnJhbWV3b3JrSWQgPT0gY29uZmlnLmZyYW1ld29ya0lkKSB7XG4gICAgICAgICAgY2F0ZWdvcnlDb25maWcgPSBjb25maWcuY29uZmlnLmZpbmQoKG9iajogYW55KSA9PiBvYmouY2F0ZWdvcnkgPT0gY29kZSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gY2F0ZWdvcnlDb25maWc7XG4gIH1cblxuICBnZXRDb25maWdCeUZyYW1lV29ya0lkKGZyYW1ld29ya0lkOiBzdHJpbmcpOiBhbnkge1xuICAgIGxldCBjYXRlZ29yeUNvbmZpZzogYW55O1xuICAgIGlmICh0aGlzLnJvb3RDb25maWcgJiYgdGhpcy5yb290Q29uZmlnWzBdKSB7XG4gICAgICB0aGlzLnJvb3RDb25maWcuZm9yRWFjaCgoY29uZmlnOiBhbnkpID0+IHtcbiAgICAgICAgaWYgKGZyYW1ld29ya0lkID09IGNvbmZpZy5mcmFtZXdvcmtJZCkge1xuICAgICAgICAgIGNhdGVnb3J5Q29uZmlnID0gY29uZmlnO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIGNhdGVnb3J5Q29uZmlnO1xuICB9XG5cbiAgdXBkYXRlRnVsbFRlcm1EYXRhTG9jYWxNYXAoX2NvbHVtbkNvZGU6IHN0cmluZywgcGFyZW50RGF0YTogYW55KTogdm9pZCB7XG4gICAgdGhpcy5zZWxlY3Rpb25MaXN0LmZvckVhY2goKHNlbGVjdGVkRGF0YTogYW55KSA9PiB7XG4gICAgICBsZXQgbGlzdERhdGE6IGFueSA9IHRoaXMubGlzdC5nZXQoc2VsZWN0ZWREYXRhLmNhdGVnb3J5KTtcbiAgICAgIGlmIChsaXN0RGF0YSAmJiBsaXN0RGF0YS5jaGlsZHJlbiAmJiBsaXN0RGF0YS5jaGlsZHJlbi5sZW5ndGgpIHtcbiAgICAgICAgdGhpcy51cGRhdGVMb2NhbExpc3RUZXJtKGxpc3REYXRhLCBwYXJlbnREYXRhKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHVwZGF0ZUxvY2FsTGlzdFRlcm0oaXRlbTogYW55LCBwYXJlbnQ6IGFueSk6IHZvaWQge1xuICAgIGlmIChpdGVtICYmIGl0ZW0uY2hpbGRyZW4gJiYgaXRlbS5jaGlsZHJlbi5sZW5ndGgpIHtcbiAgICAgIGl0ZW0uY2hpbGRyZW4uZm9yRWFjaCgoaXRtRGF0YTogYW55KSA9PiB7XG4gICAgICAgIGlmIChpdG1EYXRhLmlkZW50aWZpZXIgPT09IHBhcmVudC5pZGVudGlmaWVyKSB7XG4gICAgICAgICAgaXRtRGF0YVsnZGVzY3JpcHRpb24nXSA9IHBhcmVudFsnZGVzY3JpcHRpb24nXTtcbiAgICAgICAgICBpdG1EYXRhWydhZGRpdGlvbmFsUHJvcGVydGllcyddID0gcGFyZW50WydhZGRpdGlvbmFsUHJvcGVydGllcyddO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpdG1EYXRhLmNoaWxkcmVuKSB7XG4gICAgICAgICAgdGhpcy51cGRhdGVMb2NhbExpc3RUZXJtKGl0bURhdGEsIHBhcmVudCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxufSJdfQ==
@@ -7193,7 +7193,7 @@ class FrameworkService {
7193
7193
  if (this.localConfig.connectionType === 'online') {
7194
7194
  let url = `/${this.proxiesPath}/framework/v1/read/`;
7195
7195
  if (_orgData) {
7196
- url = url + _orgData.identifier + '_org_hierarchy';
7196
+ url = url + _orgData.orgHierarchyFrameworkId;
7197
7197
  }
7198
7198
  else {
7199
7199
  url = url + this.environment.frameworkName;
@@ -10022,7 +10022,30 @@ class ConnectorService {
10022
10022
  container.style.right = '0';
10023
10023
  container.style.width = '100%';
10024
10024
  container.style.height = '100%';
10025
- container.style.pointerEvents = 'none';
10025
+ const resizeObserver = new ResizeObserver(entries => {
10026
+ for (const entry of entries) {
10027
+ if (entry.target === treeViewComponent) {
10028
+ container.style.width = `${entry.contentRect.width}px`;
10029
+ if (this.connectorMap) {
10030
+ Object.values(this.connectorMap).forEach((connector) => {
10031
+ if (connector && connector.lines) {
10032
+ connector.lines.forEach((item) => {
10033
+ if (item.line && typeof item.line.position === 'function') {
10034
+ item.line.position();
10035
+ }
10036
+ });
10037
+ }
10038
+ });
10039
+ }
10040
+ }
10041
+ }
10042
+ });
10043
+ resizeObserver.observe(treeViewComponent);
10044
+ treeViewComponent.addEventListener('scroll', () => {
10045
+ overflowWrapper.style.width = `${treeViewComponent.scrollWidth}px`;
10046
+ overflowWrapper.style.height = `${treeViewComponent.scrollHeight}px`;
10047
+ this.repositionAllLines();
10048
+ });
10026
10049
  overflowWrapper.appendChild(container);
10027
10050
  treeViewComponent.appendChild(overflowWrapper);
10028
10051
  }