@libs-ui/components-drag-drop 0.2.356-9 → 0.2.357-0

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.
@@ -116,8 +116,8 @@ export class LibsUiDragItemInContainerVirtualScrollDirective {
116
116
  if (!frames?.length) {
117
117
  return;
118
118
  }
119
- for (let i = 0; i < frames.length; ++i) {
120
- frames[i].style.pointerEvents = pointerEvents;
119
+ for (const frame of Array.from(frames)) {
120
+ frame.style.pointerEvents = pointerEvents;
121
121
  }
122
122
  }
123
123
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: LibsUiDragItemInContainerVirtualScrollDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
@@ -131,4 +131,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
131
131
  standalone: true,
132
132
  }]
133
133
  }] });
134
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhZy1pdGVtLWluLWNvbnRhaW5lci12aXJ0dWFsLXNjcm9sbC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzLXVpL2NvbXBvbmVudHMvZHJhZy1kcm9wL3NyYy9kcmFnLWl0ZW0taW4tY29udGFpbmVyLXZpcnR1YWwtc2Nyb2xsLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWlCLFVBQVUsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNyRixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUVoRSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdkUsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2pELE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLHFCQUFxQixDQUFDOztBQVFsRSxNQUFNLE9BQU8sK0NBQStDO0lBQzFELGlCQUFpQjtJQUNSLG1CQUFtQixHQUFHLE1BQU0sRUFBWSxDQUFDO0lBRWxELGlCQUFpQjtJQUNQLGVBQWUsR0FBRyxNQUFNLENBQUMsMkJBQTJCLENBQUMsQ0FBQztJQUM3QyxVQUFVLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBRW5ELGVBQWU7UUFDYixNQUFNLFFBQVEsR0FBRyxDQUFDLG9CQUE2QixFQUFFLEVBQUU7WUFDakQsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7Z0JBQzFCLFFBQVEsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsQ0FBQztZQUM5QyxDQUFDO1lBQ0QsUUFBUSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQzlDLENBQUMsQ0FB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RSxDQUFDO1lBQ3ZDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsYUFBYSxHQUFHLGFBQWEsQ0FBQztRQUNoRCxDQUFDO0lBQ0gsQ0FBQzt3R0FoS1UsK0NBQStDOzRGQUEvQywrQ0FBK0M7OzRGQUEvQywrQ0FBK0M7a0JBTDNELFNBQVM7bUJBQUM7b0JBQ1QsOERBQThEO29CQUM5RCxRQUFRLEVBQUUsbURBQW1EO29CQUM3RCxVQUFVLEVBQUUsSUFBSTtpQkFDakIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdJbml0LCBEZXN0cm95UmVmLCBEaXJlY3RpdmUsIGluamVjdCwgb3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBJQm91bmRpbmdDbGllbnRSZWN0IH0gZnJvbSAnQGxpYnMtdWkvaW50ZXJmYWNlcy10eXBlcyc7XG5pbXBvcnQgeyBjbG9uZUlCb3VuZGluZ0NsaWVudFJlY3QsIGdldFZpZXdwb3J0IH0gZnJvbSAnQGxpYnMtdWkvdXRpbHMnO1xuaW1wb3J0IHsgZnJvbUV2ZW50LCB0YWtlVW50aWwsIHRhcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgTW9MaWJzU2hhcmVkRHJhZ0Ryb3BTZXJ2aWNlIH0gZnJvbSAnLi9kcmFnLWRyb3Auc2VydmljZSc7XG5pbXBvcnQgeyBJRHJhZ0VuZCB9IGZyb20gJy4vaW50ZXJmYWNlcy9ldmVudC5pbnRlcmZhY2UnO1xuXG5ARGlyZWN0aXZlKHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9kaXJlY3RpdmUtc2VsZWN0b3JcbiAgc2VsZWN0b3I6ICdbTGlic1VpRHJhZ0l0ZW1JbkNvbnRhaW5lclZpcnR1YWxTY3JvbGxEaXJlY3RpdmVdJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgTGlic1VpRHJhZ0l0ZW1JbkNvbnRhaW5lclZpcnR1YWxTY3JvbGxEaXJlY3RpdmUgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0IHtcbiAgLy8gI3JlZ2lvbiBPVVRQVVRcbiAgcmVhZG9ubHkgb3V0RHJhZ0VuZENvbnRhaW5lciA9IG91dHB1dDxJRHJhZ0VuZD4oKTtcblxuICAvLyAjcmVnaW9uIElOSkVDVFxuICBwcm90ZWN0ZWQgZHJhZ0Ryb3BTZXJ2aWNlID0gaW5qZWN0KE1vTGlic1NoYXJlZERyYWdEcm9wU2VydmljZSk7XG4gIHByb3RlY3RlZCByZWFkb25seSBkZXN0cm95UmVmID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICBjb25zdCBhZGRDbGFzcyA9IChpZ25vcmVVc2VyU2VsZWN0Tm9uZTogYm9vbGVhbikgPT4ge1xuICAgICAgaWYgKCFpZ25vcmVVc2VyU2VsZWN0Tm9uZSkge1xuICAgICAgICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5hZGQoJyFzZWxlY3Qtbm9uZScpO1xuICAgICAgfVxuICAgICAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QuYWRkKCchY3Vyc29yLW1vdmUnKTtcbiAgICB9O1xuICAgIGNvbnN0IHJlbW92ZUNsYXNzID0gKGlnbm9yZVVzZXJTZWxlY3ROb25lOiBib29sZWFuKSA9PiB7XG4gICAgICBpZiAoIWlnbm9yZVVzZXJTZWxlY3ROb25lKSB7XG4gICAgICAgIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LnJlbW92ZSgnIXNlbGVjdC1ub25lJyk7XG4gICAgICB9XG4gICAgICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5yZW1vdmUoJyFjdXJzb3ItbW92ZScpO1xuICAgIH07XG4gICAgdGhpcy5kcmFnRHJvcFNlcnZpY2UuT25EcmFnRW5kLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZikpLnN1YnNjcmliZSgoZSkgPT4ge1xuICAgICAgdGhpcy5vdXREcmFnRW5kQ29udGFpbmVyLmVtaXQoZSk7XG4gICAgfSk7XG4gICAgdGhpcy5kcmFnRHJvcFNlcnZpY2UuT25EcmFnSXRlbUluQ29udGFpbmVyVmlydHVhbFNjcm9sbC5waXBlKHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpKS5zdWJzY3JpYmUoKGRyYWdJdGVtSW5Db250YWluZXJWaXJ0dWFsU2Nyb2xsRXZlbnQpID0+IHtcbiAgICAgIGFkZENsYXNzKGRyYWdJdGVtSW5Db250YWluZXJWaXJ0dWFsU2Nyb2xsRXZlbnQuaWdub3JlVXNlclNlbGVjdE5vbmUpO1xuICAgICAgY29uc3Qgc3RvcEV2ZW50TW91c2UgPSAobW91c2VFdmVudDogTW91c2VFdmVudCkgPT4ge1xuICAgICAgICBpZiAoIWRyYWdJdGVtSW5Db250YWluZXJWaXJ0dWFsU2Nyb2xsRXZlbnQuaWdub3JlU3RvcEV2ZW50KSB7XG4gICAgICAgICAgbW91c2VFdmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgIG1vdXNlRXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgICBjb25zdCBkb2N1bWVudE1vdXNlVXAgPSBmcm9tRXZlbnQ8TW91c2VFdmVudD4oZG9jdW1lbnQsICdtb3VzZXVwJykucGlwZShcbiAgICAgICAgdGFwKChldmVudE1vdXNlVXApID0+IHtcbiAgICAgICAgICB0aGlzLnVwZGF0ZU1vdXNlRXZlbnRzV2hlbk1vdmVPdmVySWZyYW1lKCdhdXRvJyk7XG4gICAgICAgICAgc3RvcEV2ZW50TW91c2UoZXZlbnRNb3VzZVVwKTtcbiAgICAgICAgICBjb25zdCBtb3VzZVBvc2l0aW9uID0geyBjbGllbnRYOiBldmVudE1vdXNlVXAuY2xpZW50WCwgY2xpZW50WTogZXZlbnRNb3VzZVVwLmNsaWVudFkgfTtcblxuICAgICAgICAgIGlmIChkcmFnSXRlbUluQ29udGFpbmVyVmlydHVhbFNjcm9sbEV2ZW50LmRyYWdCb3VuZGFyeSAmJiBkcmFnSXRlbUluQ29udGFpbmVyVmlydHVhbFNjcm9sbEV2ZW50LmRyYWdCb3VuZGFyeUFjY2VwdE1vdXNlTGVhdmVDb250YWluZXIpIHtcbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMuZ2V0Q2xpZW50UG9zaXRpb24oXG4gICAgICAgICAgICAgIGRyYWdJdGVtSW5Db250YWluZXJWaXJ0dWFsU2Nyb2xsRXZlbnQuZWxlbWVudERyYWcsXG4gICAgICAgICAgICAgIG1vdXNlUG9zaXRpb24sXG4gICAgICAgICAgICAgIGRyYWdJdGVtSW5Db250YWluZXJWaXJ0dWFsU2Nyb2xsRXZlbnQuZGlzdGFuY2VTdGFydEVsZW1lbnRBbmRNb3VzZUxlZnQsXG4gICAgICAgICAgICAgIGRyYWdJdGVtSW5Db250YWluZXJWaXJ0dWFsU2Nyb2xsRXZlbnQuZGlzdGFuY2VTdGFydEVsZW1lbnRBbmRNb3VzZVRvcCxcbiAgICAgICAgICAgICAgZHJhZ0l0ZW1JbkNvbnRhaW5lclZpcnR1YWxTY3JvbGxFdmVudC5kcmFnQm91bmRhcnksXG4gICAgICAgICAgICAgIGRyYWdJdGVtSW5Db250YWluZXJWaXJ0dWFsU2Nyb2xsRXZlbnQuZWxlbWVudENvbnRhaW5lclxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgbW91c2VQb3NpdGlvbi5jbGllbnRYID0gcmVzdWx0LmNsaWVudFg7XG4gICAgICAgICAgICBtb3VzZVBvc2l0aW9uLmNsaWVudFkgPSByZXN1bHQuY2xpZW50WTtcbiAgICAgICAgICB9XG4gICAgICAgICAgY29uc3QgZHJhZ0VuZEV2ZW50ID0geyBtb3VzZVBvc2l0aW9uLCBlbGVtZW50RHJhZzogZHJhZ0l0ZW1JbkNvbnRhaW5lclZpcnR1YWxTY3JvbGxFdmVudC5lbGVtZW50RHJhZywgaXRlbURyYWdJbmZvOiB0aGlzLmRyYWdEcm9wU2VydmljZS5JdGVtRHJhZ0luZm8gfTtcblxuICAgICAgICAgIHRoaXMuZHJhZ0Ryb3BTZXJ2aWNlLkl0ZW1EcmFnSW5mbyA9IHVuZGVmaW5lZDtcbiAgICAgICAgICB0aGlzLmRyYWdEcm9wU2VydmljZS5PbkRyYWdFbmQubmV4dChkcmFnRW5kRXZlbnQpO1xuICAgICAgICAgIGRyYWdJdGVtSW5Db250YWluZXJWaXJ0dWFsU2Nyb2xsRXZlbnQuZWxlbWVudERyYWcucmVtb3ZlKCk7XG4gICAgICAgICAgcmVtb3ZlQ2xhc3MoZHJhZ0l0ZW1JbkNvbnRhaW5lclZpcnR1YWxTY3JvbGxFdmVudC5pZ25vcmVVc2VyU2VsZWN0Tm9uZSk7XG4gICAgICAgIH0pXG4gICAgICApO1xuXG4gICAgICBmcm9tRXZlbnQ8TW91c2VFdmVudD4oZG9jdW1lbnQsICdtb3VzZW1vdmUnKVxuICAgICAgICAucGlwZShcbiAgICAgICAgICB0YXAoKGV2ZW50TW91c2Vtb3ZlKSA9PiB7XG4gICAgICAgICAgICBzdG9wRXZlbnRNb3VzZShldmVudE1vdXNlbW92ZSk7XG4gICAgICAgICAgICBjb25zdCB7IGNsaWVudFgsIGNsaWVudFkgfSA9IGV2ZW50TW91c2Vtb3ZlO1xuICAgICAgICAgICAgY29uc3QgbW91c2VQb3NpdGlvbiA9IHsgY2xpZW50WCwgY2xpZW50WSB9O1xuXG4gICAgICAgICAgICBjb25zdCByZXN1bHQgPSB0aGlzLmdldENsaWVudFBvc2l0aW9uKFxuICAgICAgICAgICAgICBkcmFnSXRlbUluQ29udGFpbmVyVmlydHVhbFNjcm9sbEV2ZW50LmVsZW1lbnREcmFnLFxuICAgICAgICAgICAgICBtb3VzZVBvc2l0aW9uLFxuICAgICAgICAgICAgICBkcmFnSXRlbUluQ29udGFpbmVyVmlydHVhbFNjcm9sbEV2ZW50LmRpc3RhbmNlU3RhcnRFbGVtZW50QW5kTW91c2VMZWZ0LFxuICAgICAgICAgICAgICBkcmFnSXRlbUluQ29udGFpbmVyVmlydHVhbFNjcm9sbEV2ZW50LmRpc3RhbmNlU3RhcnRFbGVtZW50QW5kTW91c2VUb3AsXG4gICAgICAgICAgICAgIGRyYWdJdGVtSW5Db250YWluZXJWaXJ0dWFsU2Nyb2xsRXZlbnQuZHJhZ0JvdW5kYXJ5LFxuICAgICAgICAgICAgICBkcmFnSXRlbUluQ29udGFpbmVyVmlydHVhbFNjcm9sbEV2ZW50LmVsZW1lbnRDb250YWluZXJcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBjb25zdCBlbGVtZW50S2VlcENvbnRhaW5lciA9IHJlc3VsdC5lbGVtZW50S2VlcENvbnRhaW5lcjtcbiAgICAgICAgICAgIGNvbnN0IGxlZnQgPSByZXN1bHQuY2xpZW50WCAtIGRyYWdJdGVtSW5Db250YWluZXJWaXJ0dWFsU2Nyb2xsRXZlbnQuZGlzdGFuY2VTdGFydEVsZW1lbnRBbmRNb3VzZUxlZnQ7XG4gICAgICAgICAgICBjb25zdCB0b3AgPSByZXN1bHQuY2xpZW50WSAtIGRyYWdJdGVtSW5Db250YWluZXJWaXJ0dWFsU2Nyb2xsRXZlbnQuZGlzdGFuY2VTdGFydEVsZW1lbnRBbmRNb3VzZVRvcDtcblxuICAgICAgICAgICAgaWYgKGRyYWdJdGVtSW5Db250YWluZXJWaXJ0dWFsU2Nyb2xsRXZlbnQuZHJhZ0JvdW5kYXJ5ICYmIGRyYWdJdGVtSW5Db250YWluZXJWaXJ0dWFsU2Nyb2xsRXZlbnQuZHJhZ0JvdW5kYXJ5QWNjZXB0TW91c2VMZWF2ZUNvbnRhaW5lcikge1xuICAgICAgICAgICAgICBpZiAoY2xpZW50WCA8IHJlc3VsdC52aWV3cG9ydC5sZWZ0KSB7XG4gICAgICAgICAgICAgICAgbW91c2VQb3NpdGlvbi5jbGllbnRYID0gcmVzdWx0LnZpZXdwb3J0LmxlZnQ7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgaWYgKGNsaWVudFggPiByZXN1bHQudmlld3BvcnQud2lkdGgpIHtcbiAgICAgICAgICAgICAgICBtb3VzZVBvc2l0aW9uLmNsaWVudFggPSByZXN1bHQudmlld3BvcnQud2lkdGg7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgaWYgKGNsaWVudFkgPCByZXN1bHQudmlld3BvcnQudG9wKSB7XG4gICAgICAgICAgICAgICAgbW91c2VQb3NpdGlvbi5jbGllbnRZID0gcmVzdWx0LnZpZXdwb3J0LnRvcDtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBpZiAoY2xpZW50WSA+IHJlc3VsdC52aWV3cG9ydC5oZWlnaHQpIHtcbiAgICAgICAgICAgICAgICBtb3VzZVBvc2l0aW9uLmNsaWVudFkgPSByZXN1bHQudmlld3BvcnQuaGVpZ2h0O1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkcmFnSXRlbUluQ29udGFpbmVyVmlydHVhbFNjcm9sbEV2ZW50LmVsZW1lbnREcmFnLnN0eWxlLmxlZnQgPSBgJHtsZWZ0fXB4YDtcbiAgICAgICAgICAgIGRyYWdJdGVtSW5Db250YWluZXJWaXJ0dWFsU2Nyb2xsRXZlbnQuZWxlbWVudERyYWcuc3R5bGUudG9wID0gYCR7dG9wfXB4YDtcblxuICAgICAgICAgICAgdGhpcy5kcmFnRHJvcFNlcnZpY2UuT25EcmFnZ2luZy5uZXh0KHsgbW91c2VQb3NpdGlvbiwgZWxlbWVudERyYWc6IGRyYWdJdGVtSW5Db250YWluZXJWaXJ0dWFsU2Nyb2xsRXZlbnQuZWxlbWVudERyYWcsIGVsZW1lbnRLZWVwQ29udGFpbmVyLCBpdGVtRHJhZ0luZm86IHRoaXMuZHJhZ0Ryb3BTZXJ2aWNlLkl0ZW1EcmFnSW5mbyB9KTtcbiAgICAgICAgICB9KSxcbiAgICAgICAgICB0YWtlVW50aWwoZG9jdW1lbnRNb3VzZVVwKSxcbiAgICAgICAgICB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKVxuICAgICAgICApXG4gICAgICAgIC5zdWJzY3JpYmUoKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qIEZVTkNUSU9OUyAqL1xuXG4gIHByb3RlY3RlZCBnZXRDbGllbnRQb3NpdGlvbihcbiAgICBlbGVtZW50OiBIVE1MRWxlbWVudCxcbiAgICBtb3VzZVBvc2l0aW9uOiB7IGNsaWVudFg6IG51bWJlcjsgY2xpZW50WTogbnVtYmVyIH0sXG4gICAgZGlzdGFuY2VTdGFydEVsZW1lbnRBbmRNb3VzZUxlZnQ6IG51bWJlcixcbiAgICBkaXN0YW5jZVN0YXJ0RWxlbWVudEFuZE1vdXNlVG9wOiBudW1iZXIsXG4gICAgZHJhZ0JvdW5kYXJ5PzogYm9vbGVhbixcbiAgICBlbGVtZW50Q29udGFpbmVyPzogSFRNTEVsZW1lbnRcbiAgKTogeyBjbGllbnRYOiBudW1iZXI7IGNsaWVudFk6IG51bWJlcjsgZWxlbWVudEtlZXBDb250YWluZXI6IGJvb2xlYW47IHZpZXdwb3J0OiBJQm91bmRpbmdDbGllbnRSZWN0IH0ge1xuICAgIGxldCB2aWV3cG9ydCA9IGdldFZpZXdwb3J0KCkgYXMgSUJvdW5kaW5nQ2xpZW50UmVjdDtcbiAgICBjb25zdCByZWN0RWxlbWVudCA9IGVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgY29uc3QgY29udGFpbmVyQnlJZCA9IHRoaXMuZHJhZ0Ryb3BTZXJ2aWNlLkNvbnRhaW5lcigpLmdldChlbGVtZW50LmdldEF0dHJpYnV0ZSgnZ3JvdXBJRCcpIHx8ICcnKTtcbiAgICBjb25zdCBjb250YWluZXJJdGVtID0gZWxlbWVudENvbnRhaW5lciB8fCBjb250YWluZXJCeUlkPy5lbGVtZW50U2Nyb2xsIHx8IGNvbnRhaW5lckJ5SWQ/LmVsZW1lbnQgfHwgZG9jdW1lbnQuYm9keTtcbiAgICBsZXQgeyBjbGllbnRYLCBjbGllbnRZIH0gPSBtb3VzZVBvc2l0aW9uO1xuXG4gICAgdmlld3BvcnQubGVmdCA9IDA7XG4gICAgdmlld3BvcnQudG9wID0gMDtcbiAgICBpZiAoZHJhZ0JvdW5kYXJ5KSB7XG4gICAgICB2aWV3cG9ydCA9IGNsb25lSUJvdW5kaW5nQ2xpZW50UmVjdChjb250YWluZXJJdGVtLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpKTtcbiAgICAgIHZpZXdwb3J0LmhlaWdodCA9IHZpZXdwb3J0LnRvcCArIHZpZXdwb3J0LmhlaWdodDtcbiAgICAgIHZpZXdwb3J0LndpZHRoID0gdmlld3BvcnQubGVmdCArIHZpZXdwb3J0LndpZHRoO1xuICAgIH1cbiAgICBsZXQgZWxlbWVudEtlZXBDb250YWluZXIgPSBmYWxzZTtcblxuICAgIGlmICgoY2xpZW50WCA+IHZpZXdwb3J0LndpZHRoICYmIGNsaWVudFkgPiB2aWV3cG9ydC5oZWlnaHQpIHx8IChjbGllbnRYIDwgdmlld3BvcnQubGVmdCAmJiBjbGllbnRZIDwgdmlld3BvcnQudG9wKSkge1xuICAgICAgZWxlbWVudEtlZXBDb250YWluZXIgPSB0cnVlO1xuICAgIH1cblxuICAgIGlmIChjbGllbnRYICsgKHJlY3RFbGVtZW50LndpZHRoIC0gZGlzdGFuY2VTdGFydEVsZW1lbnRBbmRNb3VzZUxlZnQpID4gdmlld3BvcnQud2lkdGgpIHtcbiAgICAgIGNsaWVudFggLT0gY2xpZW50WCArIChyZWN0RWxlbWVudC53aWR0aCAtIGRpc3RhbmNlU3RhcnRFbGVtZW50QW5kTW91c2VMZWZ0KSAtIHZpZXdwb3J0LndpZHRoO1xuICAgIH1cbiAgICBpZiAoY2xpZW50WSArIChyZWN0RWxlbWVudC5oZWlnaHQgLSBkaXN0YW5jZVN0YXJ0RWxlbWVudEFuZE1vdXNlVG9wKSA+IHZpZXdwb3J0LmhlaWdodCkge1xuICAgICAgY2xpZW50WSAtPSBjbGllbnRZICsgKHJlY3RFbGVtZW50LmhlaWdodCAtIGRpc3RhbmNlU3RhcnRFbGVtZW50QW5kTW91c2VUb3ApIC0gdmlld3BvcnQuaGVpZ2h0O1xuICAgIH1cbiAgICBpZiAoY2xpZW50WCAtIGRpc3RhbmNlU3RhcnRFbGVtZW50QW5kTW91c2VMZWZ0IDwgKGRyYWdCb3VuZGFyeSAmJiBjb250YWluZXJJdGVtID8gdmlld3BvcnQubGVmdCA6IDApKSB7XG4gICAgICBjbGllbnRYID0gKGRyYWdCb3VuZGFyeSAmJiBjb250YWluZXJJdGVtID8gdmlld3BvcnQubGVmdCA6IDApICsgZGlzdGFuY2VTdGFydEVsZW1lbnRBbmRNb3VzZUxlZnQ7XG4gICAgfVxuICAgIGlmIChjbGllbnRZIC0gZGlzdGFuY2VTdGFydEVsZW1lbnRBbmRNb3VzZVRvcCA8IChkcmFnQm91bmRhcnkgJiYgY29udGFpbmVySXRlbSA/IHZpZXdwb3J0LnRvcCA6IDApKSB7XG4gICAgICBjbGllbnRZID0gKGRyYWdCb3VuZGFyeSAmJiBjb250YWluZXJJdGVtID8gdmlld3BvcnQudG9wIDogMCkgKyBkaXN0YW5jZVN0YXJ0RWxlbWVudEFuZE1vdXNlVG9wO1xuICAgIH1cblxuICAgIHJldHVybiB7IGNsaWVudFgsIGNsaWVudFksIGVsZW1lbnRLZWVwQ29udGFpbmVyLCB2aWV3cG9ydCB9O1xuICB9XG5cbiAgcHJvdGVjdGVkIHVwZGF0ZU1vdXNlRXZlbnRzV2hlbk1vdmVPdmVySWZyYW1lKHBvaW50ZXJFdmVudHM6ICdub25lJyB8ICdhdXRvJykge1xuICAgIGNvbnN0IGZyYW1lcyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdpZnJhbWUnKTtcblxuICAgIGlmICghZnJhbWVzPy5sZW5ndGgpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGZyYW1lcy5sZW5ndGg7ICsraSkge1xuICAgICAgZnJhbWVzW2ldLnN0eWxlLnBvaW50ZXJFdmVudHMgPSBwb2ludGVyRXZlbnRzO1xuICAgIH1cbiAgfVxufVxuIl19
134
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhZy1pdGVtLWluLWNvbnRhaW5lci12aXJ0dWFsLXNjcm9sbC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzLXVpL2NvbXBvbmVudHMvZHJhZy1kcm9wL3NyYy9kcmFnLWl0ZW0taW4tY29udGFpbmVyLXZpcnR1YWwtc2Nyb2xsLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWlCLFVBQVUsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNyRixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUVoRSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdkUsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2pELE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLHFCQUFxQixDQUFDOztBQVFsRSxNQUFNLE9BQU8sK0NBQStDO0lBQzFELGlCQUFpQjtJQUNSLG1CQUFtQixHQUFHLE1BQU0sRUFBWSxDQUFDO0lBRWxELGlCQUFpQjtJQUNQLGVBQWUsR0FBRyxNQUFNLENBQUMsMkJBQTJCLENBQUMsQ0FBQztJQUM3QyxVQUFVLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBRW5ELGVBQWU7UUFDYixNQUFNLFFBQVEsR0FBRyxDQUFDLG9CQUE2QixFQUFFLEVBQUU7WUFDakQsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7Z0JBQzFCLFFBQVEsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsQ0FBQztZQUM5QyxDQUFDO1lBQ0QsUUFBUSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQzlDLENBQUMsQ0FBQztRQUNGLE1BQU0sV0FBVyxHQUFHLENBQUMsb0JBQTZCLEVBQUUsRUFBRTtZQUNwRCxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztnQkFDMUIsUUFBUSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1lBQ2pELENBQUM7WUFDRCxRQUFRLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDakQsQ0FBQyxDQUFDO1FBQ0YsSUFBSSxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO1lBQ3ZGLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbkMsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsZUFBZSxDQUFDLGtDQUFrQyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxxQ0FBcUMsRUFBRSxFQUFFO1lBQ3BKLFFBQVEsQ0FBQyxxQ0FBcUMsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1lBQ3JFLE1BQU0sY0FBYyxHQUFHLENBQUMsVUFBc0IsRUFBRSxFQUFFO2dCQUNoRCxJQUFJLENBQUMscUNBQXFDLENBQUMsZUFBZSxFQUFFLENBQUM7b0JBQzNELFVBQVUsQ0FBQyxjQUFjLEVBQUUsQ0FBQztvQkFDNUIsVUFBVSxDQUFDLGVBQWUsRUFBRSxDQUFDO2dCQUMvQixDQUFDO1lBQ0gsQ0FBQyxDQUFDO1lBQ0YsTUFBTSxlQUFlLEdBQUcsU0FBUyxDQUFhLFFBQVEsRUFBRSxTQUFTLENBQUMsQ0FBQyxJQUFJLENBQ3JFLEdBQUcsQ0FBQyxDQUFDLFlBQVksRUFBRSxFQUFFO2dCQUNuQixJQUFJLENBQUMsbUNBQW1DLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQ2pELGNBQWMsQ0FBQyxZQUFZLENBQUMsQ0FBQztnQkFDN0IsTUFBTSxhQUFhLEdBQUcsRUFBRSxPQUFPLEVBQUUsWUFBWSxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsWUFBWSxDQUFDLE9BQU8sRUFBRSxDQUFDO2dCQUV2RixJQUFJLHFDQUFxQyxDQUFDLFlBQVksSUFBSSxxQ0FBcUMsQ0FBQyxxQ0FBcUMsRUFBRSxDQUFDO29CQUN0SSxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQ25DLHFDQUFxQyxDQUFDLFdBQVcsRUFDakQsYUFBYSxFQUNiLHFDQUFxQyxDQUFDLGdDQUFnQyxFQUN0RSxxQ0FBcUMsQ0FBQywrQkFBK0IsRUFDckUscUNBQXFDLENBQUMsWUFBWSxFQUNsRCxxQ0FBcUMsQ0FBQyxnQkFBZ0IsQ0FDdkQsQ0FBQztvQkFFRixhQUFhLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUM7b0JBQ3ZDLGFBQWEsQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQztnQkFDekMsQ0FBQztnQkFDRCxNQUFNLFlBQVksR0FBRyxFQUFFLGFBQWEsRUFBRSxXQUFXLEVBQUUscUNBQXFDLENBQUMsV0FBVyxFQUFFLFlBQVksRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLFlBQVksRUFBRSxDQUFDO2dCQUV4SixJQUFJLENBQUMsZUFBZSxDQUFDLFlBQVksR0FBRyxTQUFTLENBQUM7Z0JBQzlDLElBQUksQ0FBQyxlQUFlLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztnQkFDbEQscUNBQXFDLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUMzRCxXQUFXLENBQUMscUNBQXFDLENBQUMsb0JBQW9CLENBQUMsQ0FBQztZQUMxRSxDQUFDLENBQUMsQ0FDSCxDQUFDO1lBRUYsU0FBUyxDQUFhLFFBQVEsRUFBRSxXQUFXLENBQUM7aUJBQ3pDLElBQUksQ0FDSCxHQUFHLENBQUMsQ0FBQyxjQUFjLEVBQUUsRUFBRTtnQkFDckIsY0FBYyxDQUFDLGNBQWMsQ0FBQyxDQUFDO2dCQUMvQixNQUFNLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxHQUFHLGNBQWMsQ0FBQztnQkFDNUMsTUFBTSxhQUFhLEdBQUcsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLENBQUM7Z0JBRTNDLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FDbkMscUNBQXFDLENBQUMsV0FBVyxFQUNqRCxhQUFhLEVBQ2IscUNBQXFDLENBQUMsZ0NBQWdDLEVBQ3RFLHFDQUFxQyxDQUFDLCtCQUErQixFQUNyRSxxQ0FBcUMsQ0FBQyxZQUFZLEVBQ2xELHFDQUFxQyxDQUFDLGdCQUFnQixDQUN2RCxDQUFDO2dCQUNGLE1BQU0sb0JBQW9CLEdBQUcsTUFBTSxDQUFDLG9CQUFvQixDQUFDO2dCQUN6RCxNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsT0FBTyxHQUFHLHFDQUFxQyxDQUFDLGdDQUFnQyxDQUFDO2dCQUNyRyxNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsT0FBTyxHQUFHLHFDQUFxQyxDQUFDLCtCQUErQixDQUFDO2dCQUVuRyxJQUFJLHFDQUFxQyxDQUFDLFlBQVksSUFBSSxxQ0FBcUMsQ0FBQyxxQ0FBcUMsRUFBRSxDQUFDO29CQUN0SSxJQUFJLE9BQU8sR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO3dCQUNuQyxhQUFhLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDO29CQUMvQyxDQUFDO29CQUNELElBQUksT0FBTyxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLENBQUM7d0JBQ3BDLGFBQWEsQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUM7b0JBQ2hELENBQUM7b0JBQ0QsSUFBSSxPQUFPLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQzt3QkFDbEMsYUFBYSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQztvQkFDOUMsQ0FBQztvQkFDRCxJQUFJLE9BQU8sR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDO3dCQUNyQyxhQUFhLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDO29CQUNqRCxDQUFDO2dCQUNILENBQUM7Z0JBQ0QscUNBQXFDLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxJQUFJLEdBQUcsR0FBRyxJQUFJLElBQUksQ0FBQztnQkFDM0UscUNBQXFDLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxHQUFHLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQztnQkFFekUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUUsYUFBYSxFQUFFLFdBQVcsRUFBRSxxQ0FBcUMsQ0FBQyxXQUFXLEVBQUUsb0JBQW9CLEVBQUUsWUFBWSxFQUFFLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQztZQUNqTSxDQUFDLENBQUMsRUFDRixTQUFTLENBQUMsZUFBZSxDQUFDLEVBQzFCLGtCQUFrQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FDcEM7aUJBQ0EsU0FBUyxFQUFFLENBQUM7UUFDakIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsZUFBZTtJQUVMLGlCQUFpQixDQUN6QixPQUFvQixFQUNwQixhQUFtRCxFQUNuRCxnQ0FBd0MsRUFDeEMsK0JBQXVDLEVBQ3ZDLFlBQXNCLEVBQ3RCLGdCQUE4QjtRQUU5QixJQUFJLFFBQVEsR0FBRyxXQUFXLEVBQXlCLENBQUM7UUFDcEQsTUFBTSxXQUFXLEdBQUcsT0FBTyxDQUFDLHFCQUFxQixFQUFFLENBQUM7UUFDcEQsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUNsRyxNQUFNLGFBQWEsR0FBRyxnQkFBZ0IsSUFBSSxhQUFhLEVBQUUsYUFBYSxJQUFJLGFBQWEsRUFBRSxPQUFPLElBQUksUUFBUSxDQUFDLElBQUksQ0FBQztRQUNsSCxJQUFJLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxHQUFHLGFBQWEsQ0FBQztRQUV6QyxRQUFRLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQztRQUNsQixRQUFRLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQztRQUNqQixJQUFJLFlBQVksRUFBRSxDQUFDO1lBQ2pCLFFBQVEsR0FBRyx3QkFBd0IsQ0FBQyxhQUFhLENBQUMscUJBQXFCLEVBQUUsQ0FBQyxDQUFDO1lBQzNFLFFBQVEsQ0FBQyxNQUFNLEdBQUcsUUFBUSxDQUFDLEdBQUcsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDO1lBQ2pELFFBQVEsQ0FBQyxLQUFLLEdBQUcsUUFBUSxDQUFDLElBQUksR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDO1FBQ2xELENBQUM7UUFDRCxJQUFJLG9CQUFvQixHQUFHLEtBQUssQ0FBQztRQUVqQyxJQUFJLENBQUMsT0FBTyxHQUFHLFFBQVEsQ0FBQyxLQUFLLElBQUksT0FBTyxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sR0FBRyxRQUFRLENBQUMsSUFBSSxJQUFJLE9BQU8sR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUNuSCxvQkFBb0IsR0FBRyxJQUFJLENBQUM7UUFDOUIsQ0FBQztRQUVELElBQUksT0FBTyxHQUFHLENBQUMsV0FBVyxDQUFDLEtBQUssR0FBRyxnQ0FBZ0MsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUN0RixPQUFPLElBQUksT0FBTyxHQUFHLENBQUMsV0FBVyxDQUFDLEtBQUssR0FBRyxnQ0FBZ0MsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUM7UUFDL0YsQ0FBQztRQUNELElBQUksT0FBTyxHQUFHLENBQUMsV0FBVyxDQUFDLE1BQU0sR0FBRywrQkFBK0IsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUN2RixPQUFPLElBQUksT0FBTyxHQUFHLENBQUMsV0FBVyxDQUFDLE1BQU0sR0FBRywrQkFBK0IsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUM7UUFDaEcsQ0FBQztRQUNELElBQUksT0FBTyxHQUFHLGdDQUFnQyxHQUFHLENBQUMsWUFBWSxJQUFJLGFBQWEsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUNyRyxPQUFPLEdBQUcsQ0FBQyxZQUFZLElBQUksYUFBYSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxnQ0FBZ0MsQ0FBQztRQUNuRyxDQUFDO1FBQ0QsSUFBSSxPQUFPLEdBQUcsK0JBQStCLEdBQUcsQ0FBQyxZQUFZLElBQUksYUFBYSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ25HLE9BQU8sR0FBRyxDQUFDLFlBQVksSUFBSSxhQUFhLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLCtCQUErQixDQUFDO1FBQ2pHLENBQUM7UUFFRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxRQUFRLEVBQUUsQ0FBQztJQUM5RCxDQUFDO0lBRVMsbUNBQW1DLENBQUMsYUFBOEI7UUFDMUUsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDLG9CQUFvQixDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRXZELElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLENBQUM7WUFDcEIsT0FBTztRQUNULENBQUM7UUFFRCxLQUFLLE1BQU0sS0FBSyxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztZQUN2QyxLQUFLLENBQUMsS0FBSyxDQUFDLGFBQWEsR0FBRyxhQUFhLENBQUM7UUFDNUMsQ0FBQztJQUNILENBQUM7d0dBaEtVLCtDQUErQzs0RkFBL0MsK0NBQStDOzs0RkFBL0MsK0NBQStDO2tCQUwzRCxTQUFTO21CQUFDO29CQUNULDhEQUE4RDtvQkFDOUQsUUFBUSxFQUFFLG1EQUFtRDtvQkFDN0QsVUFBVSxFQUFFLElBQUk7aUJBQ2pCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgRGVzdHJveVJlZiwgRGlyZWN0aXZlLCBpbmplY3QsIG91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgSUJvdW5kaW5nQ2xpZW50UmVjdCB9IGZyb20gJ0BsaWJzLXVpL2ludGVyZmFjZXMtdHlwZXMnO1xuaW1wb3J0IHsgY2xvbmVJQm91bmRpbmdDbGllbnRSZWN0LCBnZXRWaWV3cG9ydCB9IGZyb20gJ0BsaWJzLXVpL3V0aWxzJztcbmltcG9ydCB7IGZyb21FdmVudCwgdGFrZVVudGlsLCB0YXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IE1vTGlic1NoYXJlZERyYWdEcm9wU2VydmljZSB9IGZyb20gJy4vZHJhZy1kcm9wLnNlcnZpY2UnO1xuaW1wb3J0IHsgSURyYWdFbmQgfSBmcm9tICcuL2ludGVyZmFjZXMvZXZlbnQuaW50ZXJmYWNlJztcblxuQERpcmVjdGl2ZSh7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvZGlyZWN0aXZlLXNlbGVjdG9yXG4gIHNlbGVjdG9yOiAnW0xpYnNVaURyYWdJdGVtSW5Db250YWluZXJWaXJ0dWFsU2Nyb2xsRGlyZWN0aXZlXScsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG59KVxuZXhwb3J0IGNsYXNzIExpYnNVaURyYWdJdGVtSW5Db250YWluZXJWaXJ0dWFsU2Nyb2xsRGlyZWN0aXZlIGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCB7XG4gIC8vICNyZWdpb24gT1VUUFVUXG4gIHJlYWRvbmx5IG91dERyYWdFbmRDb250YWluZXIgPSBvdXRwdXQ8SURyYWdFbmQ+KCk7XG5cbiAgLy8gI3JlZ2lvbiBJTkpFQ1RcbiAgcHJvdGVjdGVkIGRyYWdEcm9wU2VydmljZSA9IGluamVjdChNb0xpYnNTaGFyZWREcmFnRHJvcFNlcnZpY2UpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZGVzdHJveVJlZiA9IGluamVjdChEZXN0cm95UmVmKTtcblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgY29uc3QgYWRkQ2xhc3MgPSAoaWdub3JlVXNlclNlbGVjdE5vbmU6IGJvb2xlYW4pID0+IHtcbiAgICAgIGlmICghaWdub3JlVXNlclNlbGVjdE5vbmUpIHtcbiAgICAgICAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QuYWRkKCchc2VsZWN0LW5vbmUnKTtcbiAgICAgIH1cbiAgICAgIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LmFkZCgnIWN1cnNvci1tb3ZlJyk7XG4gICAgfTtcbiAgICBjb25zdCByZW1vdmVDbGFzcyA9IChpZ25vcmVVc2VyU2VsZWN0Tm9uZTogYm9vbGVhbikgPT4ge1xuICAgICAgaWYgKCFpZ25vcmVVc2VyU2VsZWN0Tm9uZSkge1xuICAgICAgICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5yZW1vdmUoJyFzZWxlY3Qtbm9uZScpO1xuICAgICAgfVxuICAgICAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QucmVtb3ZlKCchY3Vyc29yLW1vdmUnKTtcbiAgICB9O1xuICAgIHRoaXMuZHJhZ0Ryb3BTZXJ2aWNlLk9uRHJhZ0VuZC5waXBlKHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpKS5zdWJzY3JpYmUoKGUpID0+IHtcbiAgICAgIHRoaXMub3V0RHJhZ0VuZENvbnRhaW5lci5lbWl0KGUpO1xuICAgIH0pO1xuICAgIHRoaXMuZHJhZ0Ryb3BTZXJ2aWNlLk9uRHJhZ0l0ZW1JbkNvbnRhaW5lclZpcnR1YWxTY3JvbGwucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKSkuc3Vic2NyaWJlKChkcmFnSXRlbUluQ29udGFpbmVyVmlydHVhbFNjcm9sbEV2ZW50KSA9PiB7XG4gICAgICBhZGRDbGFzcyhkcmFnSXRlbUluQ29udGFpbmVyVmlydHVhbFNjcm9sbEV2ZW50Lmlnbm9yZVVzZXJTZWxlY3ROb25lKTtcbiAgICAgIGNvbnN0IHN0b3BFdmVudE1vdXNlID0gKG1vdXNlRXZlbnQ6IE1vdXNlRXZlbnQpID0+IHtcbiAgICAgICAgaWYgKCFkcmFnSXRlbUluQ29udGFpbmVyVmlydHVhbFNjcm9sbEV2ZW50Lmlnbm9yZVN0b3BFdmVudCkge1xuICAgICAgICAgIG1vdXNlRXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICBtb3VzZUV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICB9XG4gICAgICB9O1xuICAgICAgY29uc3QgZG9jdW1lbnRNb3VzZVVwID0gZnJvbUV2ZW50PE1vdXNlRXZlbnQ+KGRvY3VtZW50LCAnbW91c2V1cCcpLnBpcGUoXG4gICAgICAgIHRhcCgoZXZlbnRNb3VzZVVwKSA9PiB7XG4gICAgICAgICAgdGhpcy51cGRhdGVNb3VzZUV2ZW50c1doZW5Nb3ZlT3ZlcklmcmFtZSgnYXV0bycpO1xuICAgICAgICAgIHN0b3BFdmVudE1vdXNlKGV2ZW50TW91c2VVcCk7XG4gICAgICAgICAgY29uc3QgbW91c2VQb3NpdGlvbiA9IHsgY2xpZW50WDogZXZlbnRNb3VzZVVwLmNsaWVudFgsIGNsaWVudFk6IGV2ZW50TW91c2VVcC5jbGllbnRZIH07XG5cbiAgICAgICAgICBpZiAoZHJhZ0l0ZW1JbkNvbnRhaW5lclZpcnR1YWxTY3JvbGxFdmVudC5kcmFnQm91bmRhcnkgJiYgZHJhZ0l0ZW1JbkNvbnRhaW5lclZpcnR1YWxTY3JvbGxFdmVudC5kcmFnQm91bmRhcnlBY2NlcHRNb3VzZUxlYXZlQ29udGFpbmVyKSB7XG4gICAgICAgICAgICBjb25zdCByZXN1bHQgPSB0aGlzLmdldENsaWVudFBvc2l0aW9uKFxuICAgICAgICAgICAgICBkcmFnSXRlbUluQ29udGFpbmVyVmlydHVhbFNjcm9sbEV2ZW50LmVsZW1lbnREcmFnLFxuICAgICAgICAgICAgICBtb3VzZVBvc2l0aW9uLFxuICAgICAgICAgICAgICBkcmFnSXRlbUluQ29udGFpbmVyVmlydHVhbFNjcm9sbEV2ZW50LmRpc3RhbmNlU3RhcnRFbGVtZW50QW5kTW91c2VMZWZ0LFxuICAgICAgICAgICAgICBkcmFnSXRlbUluQ29udGFpbmVyVmlydHVhbFNjcm9sbEV2ZW50LmRpc3RhbmNlU3RhcnRFbGVtZW50QW5kTW91c2VUb3AsXG4gICAgICAgICAgICAgIGRyYWdJdGVtSW5Db250YWluZXJWaXJ0dWFsU2Nyb2xsRXZlbnQuZHJhZ0JvdW5kYXJ5LFxuICAgICAgICAgICAgICBkcmFnSXRlbUluQ29udGFpbmVyVmlydHVhbFNjcm9sbEV2ZW50LmVsZW1lbnRDb250YWluZXJcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIG1vdXNlUG9zaXRpb24uY2xpZW50WCA9IHJlc3VsdC5jbGllbnRYO1xuICAgICAgICAgICAgbW91c2VQb3NpdGlvbi5jbGllbnRZID0gcmVzdWx0LmNsaWVudFk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnN0IGRyYWdFbmRFdmVudCA9IHsgbW91c2VQb3NpdGlvbiwgZWxlbWVudERyYWc6IGRyYWdJdGVtSW5Db250YWluZXJWaXJ0dWFsU2Nyb2xsRXZlbnQuZWxlbWVudERyYWcsIGl0ZW1EcmFnSW5mbzogdGhpcy5kcmFnRHJvcFNlcnZpY2UuSXRlbURyYWdJbmZvIH07XG5cbiAgICAgICAgICB0aGlzLmRyYWdEcm9wU2VydmljZS5JdGVtRHJhZ0luZm8gPSB1bmRlZmluZWQ7XG4gICAgICAgICAgdGhpcy5kcmFnRHJvcFNlcnZpY2UuT25EcmFnRW5kLm5leHQoZHJhZ0VuZEV2ZW50KTtcbiAgICAgICAgICBkcmFnSXRlbUluQ29udGFpbmVyVmlydHVhbFNjcm9sbEV2ZW50LmVsZW1lbnREcmFnLnJlbW92ZSgpO1xuICAgICAgICAgIHJlbW92ZUNsYXNzKGRyYWdJdGVtSW5Db250YWluZXJWaXJ0dWFsU2Nyb2xsRXZlbnQuaWdub3JlVXNlclNlbGVjdE5vbmUpO1xuICAgICAgICB9KVxuICAgICAgKTtcblxuICAgICAgZnJvbUV2ZW50PE1vdXNlRXZlbnQ+KGRvY3VtZW50LCAnbW91c2Vtb3ZlJylcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgdGFwKChldmVudE1vdXNlbW92ZSkgPT4ge1xuICAgICAgICAgICAgc3RvcEV2ZW50TW91c2UoZXZlbnRNb3VzZW1vdmUpO1xuICAgICAgICAgICAgY29uc3QgeyBjbGllbnRYLCBjbGllbnRZIH0gPSBldmVudE1vdXNlbW92ZTtcbiAgICAgICAgICAgIGNvbnN0IG1vdXNlUG9zaXRpb24gPSB7IGNsaWVudFgsIGNsaWVudFkgfTtcblxuICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gdGhpcy5nZXRDbGllbnRQb3NpdGlvbihcbiAgICAgICAgICAgICAgZHJhZ0l0ZW1JbkNvbnRhaW5lclZpcnR1YWxTY3JvbGxFdmVudC5lbGVtZW50RHJhZyxcbiAgICAgICAgICAgICAgbW91c2VQb3NpdGlvbixcbiAgICAgICAgICAgICAgZHJhZ0l0ZW1JbkNvbnRhaW5lclZpcnR1YWxTY3JvbGxFdmVudC5kaXN0YW5jZVN0YXJ0RWxlbWVudEFuZE1vdXNlTGVmdCxcbiAgICAgICAgICAgICAgZHJhZ0l0ZW1JbkNvbnRhaW5lclZpcnR1YWxTY3JvbGxFdmVudC5kaXN0YW5jZVN0YXJ0RWxlbWVudEFuZE1vdXNlVG9wLFxuICAgICAgICAgICAgICBkcmFnSXRlbUluQ29udGFpbmVyVmlydHVhbFNjcm9sbEV2ZW50LmRyYWdCb3VuZGFyeSxcbiAgICAgICAgICAgICAgZHJhZ0l0ZW1JbkNvbnRhaW5lclZpcnR1YWxTY3JvbGxFdmVudC5lbGVtZW50Q29udGFpbmVyXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgY29uc3QgZWxlbWVudEtlZXBDb250YWluZXIgPSByZXN1bHQuZWxlbWVudEtlZXBDb250YWluZXI7XG4gICAgICAgICAgICBjb25zdCBsZWZ0ID0gcmVzdWx0LmNsaWVudFggLSBkcmFnSXRlbUluQ29udGFpbmVyVmlydHVhbFNjcm9sbEV2ZW50LmRpc3RhbmNlU3RhcnRFbGVtZW50QW5kTW91c2VMZWZ0O1xuICAgICAgICAgICAgY29uc3QgdG9wID0gcmVzdWx0LmNsaWVudFkgLSBkcmFnSXRlbUluQ29udGFpbmVyVmlydHVhbFNjcm9sbEV2ZW50LmRpc3RhbmNlU3RhcnRFbGVtZW50QW5kTW91c2VUb3A7XG5cbiAgICAgICAgICAgIGlmIChkcmFnSXRlbUluQ29udGFpbmVyVmlydHVhbFNjcm9sbEV2ZW50LmRyYWdCb3VuZGFyeSAmJiBkcmFnSXRlbUluQ29udGFpbmVyVmlydHVhbFNjcm9sbEV2ZW50LmRyYWdCb3VuZGFyeUFjY2VwdE1vdXNlTGVhdmVDb250YWluZXIpIHtcbiAgICAgICAgICAgICAgaWYgKGNsaWVudFggPCByZXN1bHQudmlld3BvcnQubGVmdCkge1xuICAgICAgICAgICAgICAgIG1vdXNlUG9zaXRpb24uY2xpZW50WCA9IHJlc3VsdC52aWV3cG9ydC5sZWZ0O1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGlmIChjbGllbnRYID4gcmVzdWx0LnZpZXdwb3J0LndpZHRoKSB7XG4gICAgICAgICAgICAgICAgbW91c2VQb3NpdGlvbi5jbGllbnRYID0gcmVzdWx0LnZpZXdwb3J0LndpZHRoO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGlmIChjbGllbnRZIDwgcmVzdWx0LnZpZXdwb3J0LnRvcCkge1xuICAgICAgICAgICAgICAgIG1vdXNlUG9zaXRpb24uY2xpZW50WSA9IHJlc3VsdC52aWV3cG9ydC50b3A7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgaWYgKGNsaWVudFkgPiByZXN1bHQudmlld3BvcnQuaGVpZ2h0KSB7XG4gICAgICAgICAgICAgICAgbW91c2VQb3NpdGlvbi5jbGllbnRZID0gcmVzdWx0LnZpZXdwb3J0LmhlaWdodDtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZHJhZ0l0ZW1JbkNvbnRhaW5lclZpcnR1YWxTY3JvbGxFdmVudC5lbGVtZW50RHJhZy5zdHlsZS5sZWZ0ID0gYCR7bGVmdH1weGA7XG4gICAgICAgICAgICBkcmFnSXRlbUluQ29udGFpbmVyVmlydHVhbFNjcm9sbEV2ZW50LmVsZW1lbnREcmFnLnN0eWxlLnRvcCA9IGAke3RvcH1weGA7XG5cbiAgICAgICAgICAgIHRoaXMuZHJhZ0Ryb3BTZXJ2aWNlLk9uRHJhZ2dpbmcubmV4dCh7IG1vdXNlUG9zaXRpb24sIGVsZW1lbnREcmFnOiBkcmFnSXRlbUluQ29udGFpbmVyVmlydHVhbFNjcm9sbEV2ZW50LmVsZW1lbnREcmFnLCBlbGVtZW50S2VlcENvbnRhaW5lciwgaXRlbURyYWdJbmZvOiB0aGlzLmRyYWdEcm9wU2VydmljZS5JdGVtRHJhZ0luZm8gfSk7XG4gICAgICAgICAgfSksXG4gICAgICAgICAgdGFrZVVudGlsKGRvY3VtZW50TW91c2VVcCksXG4gICAgICAgICAgdGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZilcbiAgICAgICAgKVxuICAgICAgICAuc3Vic2NyaWJlKCk7XG4gICAgfSk7XG4gIH1cblxuICAvKiBGVU5DVElPTlMgKi9cblxuICBwcm90ZWN0ZWQgZ2V0Q2xpZW50UG9zaXRpb24oXG4gICAgZWxlbWVudDogSFRNTEVsZW1lbnQsXG4gICAgbW91c2VQb3NpdGlvbjogeyBjbGllbnRYOiBudW1iZXI7IGNsaWVudFk6IG51bWJlciB9LFxuICAgIGRpc3RhbmNlU3RhcnRFbGVtZW50QW5kTW91c2VMZWZ0OiBudW1iZXIsXG4gICAgZGlzdGFuY2VTdGFydEVsZW1lbnRBbmRNb3VzZVRvcDogbnVtYmVyLFxuICAgIGRyYWdCb3VuZGFyeT86IGJvb2xlYW4sXG4gICAgZWxlbWVudENvbnRhaW5lcj86IEhUTUxFbGVtZW50XG4gICk6IHsgY2xpZW50WDogbnVtYmVyOyBjbGllbnRZOiBudW1iZXI7IGVsZW1lbnRLZWVwQ29udGFpbmVyOiBib29sZWFuOyB2aWV3cG9ydDogSUJvdW5kaW5nQ2xpZW50UmVjdCB9IHtcbiAgICBsZXQgdmlld3BvcnQgPSBnZXRWaWV3cG9ydCgpIGFzIElCb3VuZGluZ0NsaWVudFJlY3Q7XG4gICAgY29uc3QgcmVjdEVsZW1lbnQgPSBlbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgIGNvbnN0IGNvbnRhaW5lckJ5SWQgPSB0aGlzLmRyYWdEcm9wU2VydmljZS5Db250YWluZXIoKS5nZXQoZWxlbWVudC5nZXRBdHRyaWJ1dGUoJ2dyb3VwSUQnKSB8fCAnJyk7XG4gICAgY29uc3QgY29udGFpbmVySXRlbSA9IGVsZW1lbnRDb250YWluZXIgfHwgY29udGFpbmVyQnlJZD8uZWxlbWVudFNjcm9sbCB8fCBjb250YWluZXJCeUlkPy5lbGVtZW50IHx8IGRvY3VtZW50LmJvZHk7XG4gICAgbGV0IHsgY2xpZW50WCwgY2xpZW50WSB9ID0gbW91c2VQb3NpdGlvbjtcblxuICAgIHZpZXdwb3J0LmxlZnQgPSAwO1xuICAgIHZpZXdwb3J0LnRvcCA9IDA7XG4gICAgaWYgKGRyYWdCb3VuZGFyeSkge1xuICAgICAgdmlld3BvcnQgPSBjbG9uZUlCb3VuZGluZ0NsaWVudFJlY3QoY29udGFpbmVySXRlbS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSk7XG4gICAgICB2aWV3cG9ydC5oZWlnaHQgPSB2aWV3cG9ydC50b3AgKyB2aWV3cG9ydC5oZWlnaHQ7XG4gICAgICB2aWV3cG9ydC53aWR0aCA9IHZpZXdwb3J0LmxlZnQgKyB2aWV3cG9ydC53aWR0aDtcbiAgICB9XG4gICAgbGV0IGVsZW1lbnRLZWVwQ29udGFpbmVyID0gZmFsc2U7XG5cbiAgICBpZiAoKGNsaWVudFggPiB2aWV3cG9ydC53aWR0aCAmJiBjbGllbnRZID4gdmlld3BvcnQuaGVpZ2h0KSB8fCAoY2xpZW50WCA8IHZpZXdwb3J0LmxlZnQgJiYgY2xpZW50WSA8IHZpZXdwb3J0LnRvcCkpIHtcbiAgICAgIGVsZW1lbnRLZWVwQ29udGFpbmVyID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAoY2xpZW50WCArIChyZWN0RWxlbWVudC53aWR0aCAtIGRpc3RhbmNlU3RhcnRFbGVtZW50QW5kTW91c2VMZWZ0KSA+IHZpZXdwb3J0LndpZHRoKSB7XG4gICAgICBjbGllbnRYIC09IGNsaWVudFggKyAocmVjdEVsZW1lbnQud2lkdGggLSBkaXN0YW5jZVN0YXJ0RWxlbWVudEFuZE1vdXNlTGVmdCkgLSB2aWV3cG9ydC53aWR0aDtcbiAgICB9XG4gICAgaWYgKGNsaWVudFkgKyAocmVjdEVsZW1lbnQuaGVpZ2h0IC0gZGlzdGFuY2VTdGFydEVsZW1lbnRBbmRNb3VzZVRvcCkgPiB2aWV3cG9ydC5oZWlnaHQpIHtcbiAgICAgIGNsaWVudFkgLT0gY2xpZW50WSArIChyZWN0RWxlbWVudC5oZWlnaHQgLSBkaXN0YW5jZVN0YXJ0RWxlbWVudEFuZE1vdXNlVG9wKSAtIHZpZXdwb3J0LmhlaWdodDtcbiAgICB9XG4gICAgaWYgKGNsaWVudFggLSBkaXN0YW5jZVN0YXJ0RWxlbWVudEFuZE1vdXNlTGVmdCA8IChkcmFnQm91bmRhcnkgJiYgY29udGFpbmVySXRlbSA/IHZpZXdwb3J0LmxlZnQgOiAwKSkge1xuICAgICAgY2xpZW50WCA9IChkcmFnQm91bmRhcnkgJiYgY29udGFpbmVySXRlbSA/IHZpZXdwb3J0LmxlZnQgOiAwKSArIGRpc3RhbmNlU3RhcnRFbGVtZW50QW5kTW91c2VMZWZ0O1xuICAgIH1cbiAgICBpZiAoY2xpZW50WSAtIGRpc3RhbmNlU3RhcnRFbGVtZW50QW5kTW91c2VUb3AgPCAoZHJhZ0JvdW5kYXJ5ICYmIGNvbnRhaW5lckl0ZW0gPyB2aWV3cG9ydC50b3AgOiAwKSkge1xuICAgICAgY2xpZW50WSA9IChkcmFnQm91bmRhcnkgJiYgY29udGFpbmVySXRlbSA/IHZpZXdwb3J0LnRvcCA6IDApICsgZGlzdGFuY2VTdGFydEVsZW1lbnRBbmRNb3VzZVRvcDtcbiAgICB9XG5cbiAgICByZXR1cm4geyBjbGllbnRYLCBjbGllbnRZLCBlbGVtZW50S2VlcENvbnRhaW5lciwgdmlld3BvcnQgfTtcbiAgfVxuXG4gIHByb3RlY3RlZCB1cGRhdGVNb3VzZUV2ZW50c1doZW5Nb3ZlT3ZlcklmcmFtZShwb2ludGVyRXZlbnRzOiAnbm9uZScgfCAnYXV0bycpIHtcbiAgICBjb25zdCBmcmFtZXMgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaWZyYW1lJyk7XG5cbiAgICBpZiAoIWZyYW1lcz8ubGVuZ3RoKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBmcmFtZSBvZiBBcnJheS5mcm9tKGZyYW1lcykpIHtcbiAgICAgIGZyYW1lLnN0eWxlLnBvaW50ZXJFdmVudHMgPSBwb2ludGVyRXZlbnRzO1xuICAgIH1cbiAgfVxufVxuIl19
@@ -2,7 +2,7 @@
2
2
  import { Directive, ElementRef, effect, inject, input, output, signal } from '@angular/core';
3
3
  import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
4
4
  import { checkMouseOverInContainer, checkViewInScreen, get, getDragEventByElement, getViewport } from '@libs-ui/utils';
5
- import { fromEvent, tap, throttleTime } from 'rxjs';
5
+ import { animationFrameScheduler, auditTime, fromEvent, tap } from 'rxjs';
6
6
  import { LibsUiDragItemInContainerVirtualScrollDirective } from './drag-item-in-container-virtual-scroll.directive';
7
7
  import * as i0 from "@angular/core";
8
8
  export class LibsUiDragItemDirective extends LibsUiDragItemInContainerVirtualScrollDirective {
@@ -55,7 +55,19 @@ export class LibsUiDragItemDirective extends LibsUiDragItemInContainerVirtualScr
55
55
  }
56
56
  }
57
57
  element.classList.add(this.dragDropService.ClassItemDefine);
58
- this.dragDropService.OnDragging.pipe(throttleTime(this.throttleTimeHandlerDraggingEvent()), takeUntilDestroyed(this.destroyRef)).subscribe((eventDragging) => {
58
+ // Tại drag start: cache rect → skip getBoundingClientRect() mỗi mousemove
59
+ this.dragDropService.OnDragStart.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {
60
+ this.dragDropService.cacheElementRect(element);
61
+ });
62
+ // Dùng destroyRef.onDestroy() thay OnDragEnd subscription:
63
+ // Virtual scroll destroy directives khi scroll out → OnDragEnd subscription bị unsubscribe
64
+ // trước khi drag kết thúc → invalidateElementRect không được gọi → stale rect.
65
+ // destroyRef.onDestroy() luôn chạy khi directive bị destroy, bất kể drag state.
66
+ this.destroyRef.onDestroy(() => this.dragDropService.invalidateElementRect(element));
67
+ // auditTime(0, animationFrameScheduler): gom TẤT CẢ item subscriptions vào 1 rAF callback.
68
+ // Toàn bộ getBoundingClientRect() reads xảy ra trong 1 batch → browser chỉ flush layout 1 lần/frame.
69
+ // Trailing behavior (dùng event mới nhất) tốt hơn throttleTime leading (event cũ 16ms trước).
70
+ this.dragDropService.OnDragging.pipe(auditTime(0, animationFrameScheduler), takeUntilDestroyed(this.destroyRef)).subscribe((eventDragging) => {
59
71
  if (this.disable() || element.getAttribute('disableDragContainer') || (this.fieldId() && this.item() && eventDragging.elementDrag.getAttribute('item_id') === get(this.item(), this.fieldId()))) {
60
72
  return;
61
73
  }
@@ -66,7 +78,9 @@ export class LibsUiDragItemDirective extends LibsUiDragItemInContainerVirtualScr
66
78
  return;
67
79
  }
68
80
  }
69
- if (checkMouseOverInContainer(eventDragging.mousePosition, element) && element !== eventDragging.elementDrag && containerById && checkViewInScreen(containerById.element, element, containerById.elementScroll)) {
81
+ // Dùng cached rect (không gọi getBoundingClientRect() lại); fallback về fresh nếu cache miss
82
+ const cachedRect = this.dragDropService.getElementRect(element);
83
+ if (checkMouseOverInContainer(eventDragging.mousePosition, element, cachedRect) && element !== eventDragging.elementDrag && containerById && checkViewInScreen(containerById.element, element, containerById.elementScroll)) {
70
84
  if (this.isDragOver()) {
71
85
  return;
72
86
  }
@@ -273,4 +287,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
273
287
  standalone: true,
274
288
  }]
275
289
  }], ctorParameters: () => [] });
276
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhZy1pdGVtLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMtdWkvY29tcG9uZW50cy9kcmFnLWRyb3Avc3JjL2RyYWctaXRlbS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsdURBQXVEO0FBQ3ZELE9BQU8sRUFBaUIsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVHLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRWhFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxpQkFBaUIsRUFBRSxHQUFHLEVBQUUscUJBQXFCLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdkgsT0FBTyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsWUFBWSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3BELE9BQU8sRUFBRSwrQ0FBK0MsRUFBRSxNQUFNLG1EQUFtRCxDQUFDOztBQVFwSCxNQUFNLE9BQU8sdUJBQXdCLFNBQVEsK0NBQStDO0lBQzFGLG1CQUFtQjtJQUNYLFVBQVUsR0FBRyxNQUFNLENBQVUsS0FBSyxDQUFDLENBQUM7SUFDcEMsVUFBVSxHQUFHLE1BQU0sQ0FBVSxLQUFLLENBQUMsQ0FBQztJQUU1QyxnQkFBZ0I7SUFDaEIsb0VBQW9FO0lBQzNELE9BQU8sR0FBRyxLQUFLLENBQVMsRUFBRSxDQUFDLENBQUM7SUFDNUIsSUFBSSxHQUFHLEtBQUssQ0FBTSxTQUFTLENBQUMsQ0FBQztJQUM3Qiw0QkFBNEIsR0FBRyxLQUFLLEVBQVcsQ0FBQztJQUN6RCxvQ0FBb0M7SUFDM0IsZ0NBQWdDLEdBQUcsS0FBSyxDQUE2QixDQUFDLEVBQUUsRUFBRSxTQUFTLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUssSUFBSSxDQUFD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LFFBQVEsQ0FBQyxLQUFLLENBQUM7Z0JBQ2hELENBQUM7Z0JBQ0QsSUFBSSxPQUFPLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQztvQkFDbEMsYUFBYSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQztnQkFDOUMsQ0FBQztnQkFDRCxJQUFJLE9BQU8sR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDO29CQUNyQyxhQUFhLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDO2dCQUNqRCxDQUFDO1lBQ0gsQ0FBQztZQUNELFNBQVMsQ0FBQyxLQUFLLENBQUMsSUFBSSxHQUFHLEdBQUcsSUFBSSxJQUFJLENBQUM7WUFDbkMsU0FBUyxDQUFDLEtBQUssQ0FBQyxHQUFHLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQztZQUVqQyxNQUFNLGFBQWEsR0FBRyxFQUFFLGFBQWEsRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLG9CQUFvQixFQUFFLFlBQVksRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBRXZJLElBQUksQ0FBQyxlQUFlLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUN0RCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7d0dBM1NVLHVCQUF1Qjs0RkFBdkIsdUJBQXVCOzs0RkFBdkIsdUJBQXVCO2tCQUxuQyxTQUFTO21CQUFDO29CQUNULDhEQUE4RDtvQkFDOUQsUUFBUSxFQUFFLDJCQUEyQjtvQkFDckMsVUFBVSxFQUFFLElBQUk7aUJBQ2pCIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xuaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBlZmZlY3QsIGluamVjdCwgaW5wdXQsIG91dHB1dCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBJQm91bmRpbmdDbGllbnRSZWN0IH0gZnJvbSAnQGxpYnMtdWkvaW50ZXJmYWNlcy10eXBlcyc7XG5pbXBvcnQgeyBjaGVja01vdXNlT3ZlckluQ29udGFpbmVyLCBjaGVja1ZpZXdJblNjcmVlbiwgZ2V0LCBnZXREcmFnRXZlbnRCeUVsZW1lbnQsIGdldFZpZXdwb3J0IH0gZnJvbSAnQGxpYnMtdWkvdXRpbHMnO1xuaW1wb3J0IHsgZnJvbUV2ZW50LCB0YXAsIHRocm90dGxlVGltZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgTGlic1VpRHJhZ0l0ZW1JbkNvbnRhaW5lclZpcnR1YWxTY3JvbGxEaXJlY3RpdmUgfSBmcm9tICcuL2RyYWctaXRlbS1pbi1jb250YWluZXItdmlydHVhbC1zY3JvbGwuZGlyZWN0aXZlJztcbmltcG9ydCB7IElEcmFnRW5kLCBJRHJhZ0xlYXZlLCBJRHJhZ092ZXIsIElEcmFnU3RhcnQsIElEcm9wIH0gZnJvbSAnLi9pbnRlcmZhY2VzL2V2ZW50LmludGVyZmFjZSc7XG5cbkBEaXJlY3RpdmUoe1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L2RpcmVjdGl2ZS1zZWxlY3RvclxuICBzZWxlY3RvcjogJ1tMaWJzVWlEcmFnSXRlbURpcmVjdGl2ZV0nLFxuICBzdGFuZGFsb25lOiB0cnVlLFxufSlcbmV4cG9ydCBjbGFzcyBMaWJzVWlEcmFnSXRlbURpcmVjdGl2ZSBleHRlbmRzIExpYnNVaURyYWdJdGVtSW5Db250YWluZXJWaXJ0dWFsU2Nyb2xsRGlyZWN0aXZlIGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCB7XG4gIC8vICNyZWdpb24gUFJPUEVSVFlcbiAgcHJpdmF0ZSBpc0RyYWdPdmVyID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcbiAgcHJpdmF0ZSBpc0RyYWdnaW5nID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcblxuICAvLyAjcmVnaW9uIElOUFVUXG4gIC8vc2V0dXAgMyBmaWVsZCBwaMOtYSBkxrDhu5tpIG7hur91IMSRYW5nIHPhu60gZOG7pW5nIGl0ZW0gdHJvbmcgdmlydHVhbC1zY3JvbGxcbiAgcmVhZG9ubHkgZmllbGRJZCA9IGlucHV0PHN0cmluZz4oJycpO1xuICByZWFkb25seSBpdGVtID0gaW5wdXQ8YW55Pih1bmRlZmluZWQpO1xuICByZWFkb25seSBpdGVtSW5Db250YWluZXJWaXJ0dWFsU2Nyb2xsID0gaW5wdXQ8Ym9vbGVhbj4oKTtcbiAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIHJlYWRvbmx5IHRocm90dGxlVGltZUhhbmRsZXJEcmFnZ2luZ0V2ZW50ID0gaW5wdXQ8bnVtYmVyLCBudW1iZXIgfCB1bmRlZmluZWQ+KDAsIHsgdHJhbnNmb3JtOiAodmFsdWUpID0+IHZhbHVlIHx8IDAgfSk7XG4gIHJlYWRvbmx5IGlnbm9yZVN0b3BFdmVudCA9IGlucHV0PGJvb2xlYW4+KCk7XG4gIHJlYWRvbmx5IG9ubHlNb3VzZURvd25TdG9wRXZlbnQgPSBpbnB1dDxib29sZWFuPigpO1xuICByZWFkb25seSBkcmFnUm9vdEVsZW1lbnQgPSBpbnB1dDxib29sZWFuPigpO1xuICByZWFkb25seSBkcmFnQm91bmRhcnkgPSBpbnB1dDxib29sZWFuPigpO1xuICByZWFkb25seSBkcmFnQm91bmRhcnlBY2NlcHRNb3VzZUxlYXZlQ29udGFpbmVyID0gaW5wdXQ8Ym9vbGVhbj4oKTtcbiAgcmVhZG9ubHkgZWxlbWVudENvbnRhaW5lciA9IGlucHV0PEhUTUxFbGVtZW50PigpO1xuICByZWFkb25seSB6SW5kZXggPSBpbnB1dDxudW1iZXIsIG51bWJlciB8IHVuZGVmaW5lZD4oMTMwMCwgeyB0cmFuc2Zvcm06ICh2YWx1ZSkgPT4gdmFsdWUgPz8gMTMwMCB9KTtcbiAgcmVhZG9ubHkgZGlzYWJsZSA9IGlucHV0PGJvb2xlYW4+KCk7XG4gIHJlYWRvbmx5IGlnbm9yZVVzZXJTZWxlY3ROb25lID0gaW5wdXQ8Ym9vbGVhbj4oKTtcblxuICAvLyAjcmVnaW9uIE9VVFBVVFxuICByZWFkb25seSBvdXREcmFnU3RhcnQgPSBvdXRwdXQ8SURyYWdTdGFydD4oKTtcbiAgcmVhZG9ubHkgb3V0RHJhZ092ZXIgPSBvdXRwdXQ8SURyYWdPdmVyPigpO1xuICByZWFkb25seSBvdXREcmFnTGVhdmUgPSBvdXRwdXQ8SURyYWdMZWF2ZT4oKTtcbiAgcmVhZG9ubHkgb3V0RHJhZ0VuZCA9IG91dHB1dDxJRHJhZ0VuZD4oKTtcbiAgcmVhZG9ubHkgb3V0RHJvcHBlZCA9IG91dHB1dDxJRHJvcD4oKTtcblxuICAvLyAjcmVnaW9uIElOSkVDVFxuICBwcml2YXRlIGVsZW1lbnRSZWYgPSBpbmplY3QoRWxlbWVudFJlZik7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKTtcbiAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgaWYgKCF0aGlzLmVsZW1lbnRSZWY/Lm5hdGl2ZUVsZW1lbnQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgY29uc3QgZWxlbWVudCA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50O1xuXG4gICAgICBlbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoYCR7dGhpcy5kcmFnRHJvcFNlcnZpY2UuQ2xhc3NJdGVtRGVmaW5lfS1kaXNhYmxlYCk7XG4gICAgICBpZiAodGhpcy5kaXNhYmxlKCkgJiYgIWVsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKGAke3RoaXMuZHJhZ0Ryb3BTZXJ2aWNlLkNsYXNzSXRlbURlZmluZX0tZGlzYWJsZWApKSB7XG4gICAgICAgIGVsZW1lbnQuY2xhc3NMaXN0LmFkZChgJHt0aGlzLmRyYWdEcm9wU2VydmljZS5DbGFzc0l0ZW1EZWZpbmV9LWRpc2FibGVgKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIG92ZXJyaWRlIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICBjb25zdCBlbGVtZW50ID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQgYXMgSFRNTEVsZW1lbnQ7XG4gICAgaWYgKHRoaXMuZmllbGRJZCgpKSB7XG4gICAgICBlbGVtZW50LnNldEF0dHJpYnV0ZSgnZmllbGRfaWQnLCB0aGlzLmZpZWxkSWQoKSk7XG4gICAgICBpZiAodGhpcy5pdGVtKCkpIHtcbiAgICAgICAgZWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2l0ZW1faWQnLCBnZXQodGhpcy5pdGVtKCksIHRoaXMuZmllbGRJZCgpKSk7XG4gICAgICB9XG4gICAgfVxuICAgIGVsZW1lbnQuY2xhc3NMaXN0LmFkZCh0aGlzLmRyYWdEcm9wU2VydmljZS5DbGFzc0l0ZW1EZWZpbmUpO1xuICAgIHRoaXMuZHJhZ0Ryb3BTZXJ2aWNlLk9uRHJhZ2dpbmcucGlwZSh0aHJvdHRsZVRpbWUodGhpcy50aHJvdHRsZVRpbWVIYW5kbGVyRHJhZ2dpbmdFdmVudCgpKSwgdGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZikpLnN1YnNjcmliZSgoZXZlbnREcmFnZ2luZykgPT4ge1xuICAgICAgaWYgKHRoaXMuZGlzYWJsZSgpIHx8IGVsZW1lbnQuZ2V0QXR0cmlidXRlKCdkaXNhYmxlRHJhZ0NvbnRhaW5lcicpIHx8ICh0aGlzLmZpZWxkSWQoKSAmJiB0aGlzLml0ZW0oKSAmJiBldmVudERyYWdnaW5nLmVsZW1lbnREcmFnLmdldEF0dHJpYnV0ZSgnaXRlbV9pZCcpID09PSBnZXQodGhpcy5pdGVtKCksIHRoaXMuZmllbGRJZCgpKSkpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgY29uc3QgY29udGFpbmVyQnlJZCA9IHRoaXMuZHJhZ0Ryb3BTZXJ2aWNlLkNvbnRhaW5lcigpLmdldChlbGVtZW50LmdldEF0dHJpYnV0ZSgnZ3JvdXBJRCcpIHx8ICcnKTtcblxuICAgICAgaWYgKGNvbnRhaW5lckJ5SWQpIHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIGV2ZW50RHJhZ2dpbmcuZWxlbWVudEtlZXBDb250YWluZXIgfHxcbiAgICAgICAgICAhdGhpcy5kcmFnRHJvcFNlcnZpY2UuY2hlY2tFbGVtZW50T3ZlckFjY2VwdEVsZW1lbnREcmFnKGNvbnRhaW5lckJ5SWQuZWxlbWVudC5nZXRBdHRyaWJ1dGUoJ2dyb3VwTmFtZScpLCBldmVudERyYWdnaW5nLmVsZW1lbnREcmFnLmdldEF0dHJpYnV0ZSgnZ3JvdXBOYW1lJyksIGV2ZW50RHJhZ2dpbmcuZWxlbWVudERyYWcuZ2V0QXR0cmlidXRlKCdkcm9wVG9Hcm91cE5hbWUnKSlcbiAgICAgICAgKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoY2hlY2tNb3VzZU92ZXJJbkNvbnRhaW5lcihldmVudERyYWdnaW5nLm1vdXNlUG9zaXRpb24sIGVsZW1lbnQpICYmIGVsZW1lbnQgIT09IGV2ZW50RHJhZ2dpbmcuZWxlbWVudERyYWcgJiYgY29udGFpbmVyQnlJZCAmJiBjaGVja1ZpZXdJblNjcmVlbihjb250YWluZXJCeUlkLmVsZW1lbnQsIGVsZW1lbnQsIGNvbnRhaW5lckJ5SWQuZWxlbWVudFNjcm9sbCkpIHtcbiAgICAgICAgaWYgKHRoaXMuaXNEcmFnT3ZlcigpKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGV2ZW50RHJhZ092ZXIgPSB7IC4uLmV2ZW50RHJhZ2dpbmcsIGVsZW1lbnREcmFnT3ZlcjogZWxlbWVudCB9O1xuXG4gICAgICAgIHRoaXMuZHJhZ0Ryb3BTZXJ2aWNlLk9uRHJhZ092ZXIubmV4dChldmVudERyYWdPdmVyKTtcbiAgICAgICAgdGhpcy5vdXREcmFnT3Zlci5lbWl0KGV2ZW50RHJhZ092ZXIpO1xuICAgICAgICB0aGlzLmlzRHJhZ092ZXIuc2V0KHRydWUpO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMuaXNEcmFnT3ZlcigpKSB7XG4gICAgICAgIGNvbnN0IGV2ZW50RHJhZ0xlYXZlID0geyAuLi5ldmVudERyYWdnaW5nLCBlbGVtZW50RHJhZ0xlYXZlOiBlbGVtZW50IH07XG4gICAgICAgIHRoaXMuaXNEcmFnT3Zlci5zZXQoZmFsc2UpO1xuICAgICAgICB0aGlzLmRyYWdEcm9wU2VydmljZS5PbkRyYWdMZWF2ZS5uZXh0KGV2ZW50RHJhZ0xlYXZlKTtcbiAgICAgICAgdGhpcy5vdXREcmFnTGVhdmUuZW1pdChldmVudERyYWdMZWF2ZSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICB0aGlzLmRyYWdEcm9wU2VydmljZS5PbkRyb3BDb250YWluZXIucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKSkuc3Vic2NyaWJlKChldmVudERyb3ApID0+IHtcbiAgICAgIGlmIChldmVudERyb3AuZWxlbWVudERyb3AgIT09IGVsZW1lbnQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgY29uc3QgZHJvcEV2ZW50ID0geyBlbGVtZW50RHJhZzogZXZlbnREcm9wLmVsZW1lbnREcmFnLCBlbGVtZW50RHJvcDogZWxlbWVudCwgaXRlbURyYWdJbmZvOiBldmVudERyb3AuaXRlbURyYWdJbmZvIH07XG5cbiAgICAgIHRoaXMub3V0RHJvcHBlZC5lbWl0KGRyb3BFdmVudCk7XG4gICAgfSk7XG4gICAgY29uc3Qgc3R5bGVUYWcgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzdHlsZScpO1xuXG4gICAgc3R5bGVUYWcudGV4dENvbnRlbnQgPSBgLmxpYnMtdWktZHJhZy1kcm9wLWl0ZW0tZHJhZ2dpbmd7Y3Vyc29yOm1vdmV9YDtcbiAgICBsZXQgbm9kZUNsb25lID0gZWxlbWVudDtcbiAgICBsZXQgZGlzdGFuY2VTdGFydEVsZW1lbnRBbmRNb3VzZUxlZnQgPSAtMTtcbiAgICBsZXQgZGlzdGFuY2VTdGFydEVsZW1lbnRBbmRNb3VzZVRvcCA9IC0xO1xuICAgIGxldCBjb250ZXh0TWVudSA9IGZhbHNlO1xuICAgIGNvbnN0IHN0b3BFdmVudE1vdXNlID0gKG1vdXNlRXZlbnQ6IE1vdXNlRXZlbnQpID0+IHtcbiAgICAgIGlmICghdGhpcy5pZ25vcmVTdG9wRXZlbnQoKSkge1xuICAgICAgICBtb3VzZUV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIG1vdXNlRXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICB9XG4gICAgfTtcbiAgICBjb25zdCB1cGRhdGVQb3NpdGlvbkVsZW1lbnRSb290QW5kUmVtb3ZlTm9kZUNsb25lID0gKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuZHJhZ1Jvb3RFbGVtZW50KCkpIHtcbiAgICAgICAgY29uc3QgY29udGFpbmVyQnlJZCA9IHRoaXMuZHJhZ0Ryb3BTZXJ2aWNlLkNvbnRhaW5lcigpLmdldChlbGVtZW50LmdldEF0dHJpYnV0ZSgnZ3JvdXBJRCcpIHx8ICcnKTtcblxuICAgICAgICBjb25zdCBjb250YWluZXJJdGVtID0gdGhpcy5lbGVtZW50Q29udGFpbmVyKCkgfHwgY29udGFpbmVyQnlJZD8uZWxlbWVudFNjcm9sbCB8fCBjb250YWluZXJCeUlkPy5lbGVtZW50IHx8IGRvY3VtZW50LmJvZHk7XG4gICAgICAgIGNvbnN0IHJlY3RDb250YWluZXIgPSBjb250YWluZXJJdGVtLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICBjb25zdCByZWN0Tm9kZUNsb25lID0gbm9kZUNsb25lLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICBjb25zdCBudW1iZXJTdWIgPSBOdW1iZXIoKGdldENvbXB1dGVkU3R5bGUoY29udGFpbmVySXRlbSkuYm9yZGVyLm1hdGNoKC9cXGQrcHgvZ2kpIHx8IFsnMCddKVswXS5yZXBsYWNlKC9cXEQrL2dpLCAnJykpLnZhbHVlT2YoKTtcblxuICAgICAgICBlbGVtZW50LnN0eWxlLmxlZnQgPSByZWN0Tm9kZUNsb25lLmxlZnQgLSByZWN0Q29udGFpbmVyLmxlZnQgLSBudW1iZXJTdWIgKyAncHgnO1xuICAgICAgICBlbGVtZW50LnN0eWxlLnRvcCA9IHJlY3ROb2RlQ2xvbmUudG9wIC0gcmVjdENvbnRhaW5lci50b3AgLSBudW1iZXJTdWIgKyAncHgnO1xuICAgICAgICBlbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoJ29wYWNpdHktMCcpO1xuICAgICAgfVxuICAgICAgZGlzdGFuY2VTdGFydEVsZW1lbnRBbmRNb3VzZUxlZnQgPSAtMTtcbiAgICAgIGRpc3RhbmNlU3RhcnRFbGVtZW50QW5kTW91c2VUb3AgPSAtMTtcbiAgICAgIG5vZGVDbG9uZS5yZW1vdmUoKTtcbiAgICB9O1xuXG4gICAgZnJvbUV2ZW50KGRvY3VtZW50LCAnY29udGV4dG1lbnUnKVxuICAgICAgLnBpcGUoXG4gICAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgICAgaWYgKHRoaXMuaXNEcmFnZ2luZygpKSB7XG4gICAgICAgICAgICB1cGRhdGVQb3NpdGlvbkVsZW1lbnRSb290QW5kUmVtb3ZlTm9kZUNsb25lKCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnRleHRNZW51ID0gdHJ1ZTtcbiAgICAgICAgfSksXG4gICAgICAgIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG5cbiAgICBsZXQgaWdub3JlTW91c2Vkb3duID0gZmFsc2U7XG5cbiAgICBnZXREcmFnRXZlbnRCeUVsZW1lbnQoe1xuICAgICAgZWxlbWVudE1vdXNlRG93bjogZWxlbWVudCxcbiAgICAgIGZ1bmN0aW9uTW91c2VEb3duOiAoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHtcbiAgICAgICAgdGhpcy5kcmFnRHJvcFNlcnZpY2UuSXRlbUNsaWNrID0gZWxlbWVudDtcbiAgICAgICAgY29udGV4dE1lbnUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy51cGRhdGVNb3VzZUV2ZW50c1doZW5Nb3ZlT3ZlcklmcmFtZSgnbm9uZScpO1xuICAgICAgICBpZiAoKHRoaXMuZGlzYWJsZSgpIHx8IGVsZW1lbnQuZ2V0QXR0cmlidXRlKCdkaXNhYmxlRHJhZ0NvbnRhaW5lcicpIHx8ICF0aGlzLmlzRHJhZ2dpbmcoKSB8fCB0aGlzLml0ZW1JbkNvbnRhaW5lclZpcnR1YWxTY3JvbGwoKSkgJiYgIXRoaXMub25seU1vdXNlRG93blN0b3BFdmVudCgpKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHN0b3BFdmVudE1vdXNlKGV2ZW50KTtcbiAgICAgIH0sXG4gICAgICBmdW5jdGlvbk1vdXNlTW92ZTogKGV2ZW50OiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgICAgIHN0b3BFdmVudE1vdXNlKGV2ZW50KTtcbiAgICAgIH0sXG4gICAgICBmdW5jdGlvbk1vdXNlVXA6IChldmVudDogTW91c2VFdmVudCkgPT4ge1xuICAgICAgICB0aGlzLnVwZGF0ZU1vdXNlRXZlbnRzV2hlbk1vdmVPdmVySWZyYW1lKCdhdXRvJyk7XG4gICAgICAgIHRoaXMuZHJhZ0Ryb3BTZXJ2aWNlLnJlc2V0SXRlbUNsaWNrKCk7XG4gICAgICAgIHN0b3BFdmVudE1vdXNlKGV2ZW50KTtcbiAgICAgICAgaWYgKHRoaXMuZGlzYWJsZSgpIHx8IGVsZW1lbnQuZ2V0QXR0cmlidXRlKCdkaXNhYmxlRHJhZ0NvbnRhaW5lcicpIHx8IGNvbnRleHRNZW51IHx8ICF0aGlzLmlzRHJhZ2dpbmcoKSkge1xuICAgICAgICAgIGNvbnRleHRNZW51ID0gZmFsc2U7XG5cbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29udGV4dE1lbnUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5pc0RyYWdnaW5nLnNldChmYWxzZSk7XG4gICAgICAgIGVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKHRoaXMuZHJhZ0Ryb3BTZXJ2aWNlLlRhcmdldEl0ZW1EcmFnRmxhZyk7XG4gICAgICAgIGlmICh0aGlzLml0ZW1JbkNvbnRhaW5lclZpcnR1YWxTY3JvbGwoKSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBtb3VzZVBvc2l0aW9uID0geyBjbGllbnRYOiBldmVudC5jbGllbnRYLCBjbGllbnRZOiBldmVudC5jbGllbnRZIH07XG5cbiAgICAgICAgaWYgKHRoaXMuZHJhZ0JvdW5kYXJ5KCkgJiYgdGhpcy5kcmFnQm91bmRhcnlBY2NlcHRNb3VzZUxlYXZlQ29udGFpbmVyKCkpIHtcbiAgICAgICAgICBjb25zdCByZXN1bHQgPSB0aGlzLmdldENsaWVudFBvc2l0aW9uKGVsZW1lbnQsIG1vdXNlUG9zaXRpb24sIGRpc3RhbmNlU3RhcnRFbGVtZW50QW5kTW91c2VMZWZ0LCBkaXN0YW5jZVN0YXJ0RWxlbWVudEFuZE1vdXNlVG9wLCB0aGlzLmRyYWdCb3VuZGFyeSgpLCB0aGlzLmVsZW1lbnRDb250YWluZXIoKSk7XG5cbiAgICAgICAgICBtb3VzZVBvc2l0aW9uLmNsaWVudFggPSByZXN1bHQuY2xpZW50WDtcbiAgICAgICAgICBtb3VzZVBvc2l0aW9uLmNsaWVudFkgPSByZXN1bHQuY2xpZW50WTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBkcmFnRW5kRXZlbnQgPSB7IG1vdXNlUG9zaXRpb24sIGVsZW1lbnREcmFnOiBlbGVtZW50LCBpdGVtRHJhZ0luZm86IHRoaXMuZHJhZ0Ryb3BTZXJ2aWNlLkl0ZW1EcmFnSW5mbyB9O1xuXG4gICAgICAgIHRoaXMuZHJhZ0Ryb3BTZXJ2aWNlLkl0ZW1EcmFnSW5mbyA9IHVuZGVmaW5lZDtcbiAgICAgICAgdGhpcy5kcmFnRHJvcFNlcnZpY2UuT25EcmFnRW5kLm5leHQoZHJhZ0VuZEV2ZW50KTtcbiAgICAgICAgdGhpcy5vdXREcmFnRW5kLmVtaXQoZHJhZ0VuZEV2ZW50KTtcblxuICAgICAgICBub2RlQ2xvbmUuY2xhc3NMaXN0LnJlbW92ZSgnbGlicy11aS1kcmFnLWRyb3AtaXRlbS1kcmFnZ2luZycpO1xuICAgICAgICBpZiAoIXRoaXMuaWdub3JlVXNlclNlbGVjdE5vbmUoKSkge1xuICAgICAgICAgIG5vZGVDbG9uZS5jbGFzc0xpc3QucmVtb3ZlKCdzZWxlY3Qtbm9uZScpO1xuICAgICAgICB9XG4gICAgICAgIHN0eWxlVGFnLnJlbW92ZSgpO1xuXG4gICAgICAgIHVwZGF0ZVBvc2l0aW9uRWxlbWVudFJvb3RBbmRSZW1vdmVOb2RlQ2xvbmUoKTtcbiAgICAgIH0sXG4gICAgICBkZXN0cm95UmVmOiB0aGlzLmRlc3Ryb3lSZWYsXG4gICAgfSlcbiAgICAgIC5waXBlKFxuICAgICAgICB0YXAoKGRyYWdNb3VzZUV2ZW50OiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgICAgICAgY29uc3QgcmVjdEVsZW1lbnQgPSBlbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICAgIGNvbnN0IHZpZXdwb3J0ID0gZ2V0Vmlld3BvcnQoKSBhcyBJQm91bmRpbmdDbGllbnRSZWN0O1xuXG4gICAgICAgICAgaWYgKHRoaXMuZGlzYWJsZSgpIHx8IGVsZW1lbnQuZ2V0QXR0cmlidXRlKCdkaXNhYmxlRHJhZ0NvbnRhaW5lcicpIHx8ICFkcmFnTW91c2VFdmVudC5jbGllbnRYIHx8ICghaWdub3JlTW91c2Vkb3duICYmIGRyYWdNb3VzZUV2ZW50LnR5cGUgPT09ICdtb3VzZWRvd24nICYmIHJlY3RFbGVtZW50LmhlaWdodCArIHJlY3RFbGVtZW50LnRvcCA+PSB2aWV3cG9ydC5oZWlnaHQpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnN0IHsgY2xpZW50WCwgY2xpZW50WSB9ID0gZHJhZ01vdXNlRXZlbnQ7XG5cbiAgICAgICAgICBpZiAoZGlzdGFuY2VTdGFydEVsZW1lbnRBbmRNb3VzZUxlZnQgPT09IC0xKSB7XG4gICAgICAgICAgICBkaXN0YW5jZVN0YXJ0RWxlbWVudEFuZE1vdXNlTGVmdCA9IGNsaWVudFggLSByZWN0RWxlbWVudC5sZWZ0O1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChkaXN0YW5jZVN0YXJ0RWxlbWVudEFuZE1vdXNlVG9wID09PSAtMSkge1xuICAgICAgICAgICAgZGlzdGFuY2VTdGFydEVsZW1lbnRBbmRNb3VzZVRvcCA9IGNsaWVudFkgLSByZWN0RWxlbWVudC50b3A7XG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoZHJhZ01vdXNlRXZlbnQpID0+IHtcbiAgICAgICAgaWYgKHRoaXMuZHJhZ0Ryb3BTZXJ2aWNlLkl0ZW1DbGljay5maWx0ZXIoKGl0ZW0pID0+IGl0ZW0gIT09IGVsZW1lbnQpLnNvbWUoKGl0ZW0pID0+IGVsZW1lbnQuY29udGFpbnMoaXRlbSkpKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmRpc2FibGUoKSB8fCBlbGVtZW50LmdldEF0dHJpYnV0ZSgnZGlzYWJsZURyYWdDb250YWluZXInKSB8fCAhZHJhZ01vdXNlRXZlbnQuY2xpZW50WCB8fCBkcmFnTW91c2VFdmVudC50eXBlID09PSAnbW91c2Vkb3duJyB8fCBjb250ZXh0TWVudSB8fCAodGhpcy5pdGVtSW5Db250YWluZXJWaXJ0dWFsU2Nyb2xsKCkgJiYgdGhpcy5pc0RyYWdnaW5nKCkpKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlnbm9yZU1vdXNlZG93biA9IHRydWU7XG4gICAgICAgIGNvbnN0IHsgY2xpZW50WCwgY2xpZW50WSB9ID0gZHJhZ01vdXNlRXZlbnQ7XG4gICAgICAgIGNvbnN0IG1vdXNlUG9zaXRpb24gPSB7IGNsaWVudFgsIGNsaWVudFkgfTtcbiAgICAgICAgY29uc3QgcmVjdEVsZW1lbnQgPSBlbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuXG4gICAgICAgIGlmICghdGhpcy5pc0RyYWdnaW5nKCkpIHtcbiAgICAgICAgICB0aGlzLmlzRHJhZ2dpbmcuc2V0KHRydWUpO1xuICAgICAgICAgIGNvbnN0IGV2ZW50RHJhZ1N0YXJ0ID0geyBtb3VzZVBvc2l0aW9uLCBlbGVtZW50RHJhZzogZWxlbWVudCwgaXRlbURyYWdJbmZvOiB0aGlzLmRyYWdEcm9wU2VydmljZS5JdGVtRHJhZ0luZm8gfTtcblxuICAgICAgICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKHRoaXMuZHJhZ0Ryb3BTZXJ2aWNlLlRhcmdldEl0ZW1EcmFnRmxhZywgJ3RydWUnKTtcbiAgICAgICAgICB0aGlzLmRyYWdEcm9wU2VydmljZS5PbkRyYWdTdGFydC5uZXh0KGV2ZW50RHJhZ1N0YXJ0KTtcbiAgICAgICAgICBldmVudERyYWdTdGFydC5pdGVtRHJhZ0luZm8gPSB0aGlzLmRyYWdEcm9wU2VydmljZS5JdGVtRHJhZ0luZm87XG4gICAgICAgICAgdGhpcy5vdXREcmFnU3RhcnQuZW1pdChldmVudERyYWdTdGFydCk7XG5cbiAgICAgICAgICBub2RlQ2xvbmUgPSBlbGVtZW50LmNsb25lTm9kZSh0cnVlKSBhcyBIVE1MRWxlbWVudDtcbiAgICAgICAgICBub2RlQ2xvbmUuc3R5bGUuekluZGV4ID0gYCR7dGhpcy56SW5kZXgoKX1gO1xuICAgICAgICAgIG5vZGVDbG9uZS5jbGFzc0xpc3QuYWRkKCchZml4ZWQnKTtcbiAgICAgICAgICBub2RlQ2xvbmUuY2xhc3NMaXN0LnJlbW92ZSgnbGlicy11aS1kcmFnLWRyb3AtaXRlbS1vcmlnaW4tcGxhY2Vob2xkZXInKTtcbiAgICAgICAgICBub2RlQ2xvbmUuY2xhc3NMaXN0LnJlbW92ZSgnbGlicy11aS1kcmFnLWRyb3AtaXRlbS1wbGFjZWhvbGRlcicpO1xuICAgICAgICAgIG5vZGVDbG9uZS5hcHBlbmRDaGlsZChzdHlsZVRhZyk7XG4gICAgICAgICAgbm9kZUNsb25lLmNsYXNzTGlzdC5hZGQoJ2xpYnMtdWktZHJhZy1kcm9wLWl0ZW0tZHJhZ2dpbmcnKTtcbiAgICAgICAgICBub2RlQ2xvbmUuc3R5bGUud2lkdGggPSBgJHtyZWN0RWxlbWVudC53aWR0aH1weGA7XG4gICAgICAgICAgbm9kZUNsb25lLnN0eWxlLmhlaWdodCA9IGAke3JlY3RFbGVtZW50LmhlaWdodH1weGA7XG4gICAgICAgICAgbm9kZUNsb25lLnN0eWxlLmxlZnQgPSBgJHstOTk5fXB4YDtcbiAgICAgICAgICBub2RlQ2xvbmUuc3R5bGUudG9wID0gYCR7LTk5OX1weGA7XG4gICAgICAgICAgaWYgKCF0aGlzLmlnbm9yZVVzZXJTZWxlY3ROb25lKCkpIHtcbiAgICAgICAgICAgIG5vZGVDbG9uZS5jbGFzc0xpc3QuYWRkKCdzZWxlY3Qtbm9uZScpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZChub2RlQ2xvbmUpO1xuICAgICAgICAgIGlmICh0aGlzLmRyYWdSb290RWxlbWVudCgpKSB7XG4gICAgICAgICAgICBlbGVtZW50LmNsYXNzTGlzdC5hZGQoJ29wYWNpdHktMCcpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmICh0aGlzLml0ZW1JbkNvbnRhaW5lclZpcnR1YWxTY3JvbGwoKSkge1xuICAgICAgICAgICAgdGhpcy5kcmFnRHJvcFNlcnZpY2UuT25EcmFnSXRlbUluQ29udGFpbmVyVmlydHVhbFNjcm9sbC5uZXh0KHtcbiAgICAgICAgICAgICAgaXRlbURyYWdJbmZvOiB0aGlzLmRyYWdEcm9wU2VydmljZS5JdGVtRHJhZ0luZm8sXG4gICAgICAgICAgICAgIGVsZW1lbnREcmFnOiBub2RlQ2xvbmUsXG4gICAgICAgICAgICAgIGRpc3RhbmNlU3RhcnRFbGVtZW50QW5kTW91c2VUb3AsXG4gICAgICAgICAgICAgIGRpc3RhbmNlU3RhcnRFbGVtZW50QW5kTW91c2VMZWZ0LFxuICAgICAgICAgICAgICBlbGVtZW50Q29udGFpbmVyOiB0aGlzLmVsZW1lbnRDb250YWluZXIoKSxcbiAgICAgICAgICAgICAgZHJhZ0JvdW5kYXJ5OiB0aGlzLmRyYWdCb3VuZGFyeSgpLFxuICAgICAgICAgICAgICBkcmFnQm91bmRhcnlBY2NlcHRNb3VzZUxlYXZlQ29udGFpbmVyOiB0aGlzLmRyYWdCb3VuZGFyeUFjY2VwdE1vdXNlTGVhdmVDb250YWluZXIoKSxcbiAgICAgICAgICAgICAgaWdub3JlU3RvcEV2ZW50OiB0aGlzLmlnbm9yZVN0b3BFdmVudCgpLFxuICAgICAgICAgICAgICBpZ25vcmVVc2VyU2VsZWN0Tm9uZTogdGhpcy5pZ25vcmVVc2VyU2VsZWN0Tm9uZSgpIHx8IGZhbHNlLFxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcmVzdWx0ID0gdGhpcy5nZXRDbGllbnRQb3NpdGlvbihub2RlQ2xvbmUsIG1vdXNlUG9zaXRpb24sIGRpc3RhbmNlU3RhcnRFbGVtZW50QW5kTW91c2VMZWZ0LCBkaXN0YW5jZVN0YXJ0RWxlbWVudEFuZE1vdXNlVG9wLCB0aGlzLmRyYWdCb3VuZGFyeSgpLCB0aGlzLmVsZW1lbnRDb250YWluZXIoKSk7XG5cbiAgICAgICAgY29uc3QgZWxlbWVudEtlZXBDb250YWluZXIgPSByZXN1bHQuZWxlbWVudEtlZXBDb250YWluZXI7XG4gICAgICAgIGNvbnN0IGxlZnQgPSByZXN1bHQuY2xpZW50WCAtIGRpc3RhbmNlU3RhcnRFbGVtZW50QW5kTW91c2VMZWZ0O1xuICAgICAgICBjb25zdCB0b3AgPSByZXN1bHQuY2xpZW50WSAtIGRpc3RhbmNlU3RhcnRFbGVtZW50QW5kTW91c2VUb3A7XG5cbiAgICAgICAgaWYgKHRoaXMuZHJhZ0JvdW5kYXJ5KCkgJiYgdGhpcy5kcmFnQm91bmRhcnlBY2NlcHRNb3VzZUxlYXZlQ29udGFpbmVyKCkpIHtcbiAgICAgICAgICBpZiAoY2xpZW50WCA8IHJlc3VsdC52aWV3cG9ydC5sZWZ0KSB7XG4gICAgICAgICAgICBtb3VzZVBvc2l0aW9uLmNsaWVudFggPSByZXN1bHQudmlld3BvcnQubGVmdDtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGNsaWVudFggPiByZXN1bHQudmlld3BvcnQud2lkdGgpIHtcbiAgICAgICAgICAgIG1vdXNlUG9zaXRpb24uY2xpZW50WCA9IHJlc3VsdC52aWV3cG9ydC53aWR0aDtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGNsaWVudFkgPCByZXN1bHQudmlld3BvcnQudG9wKSB7XG4gICAgICAgICAgICBtb3VzZVBvc2l0aW9uLmNsaWVudFkgPSByZXN1bHQudmlld3BvcnQudG9wO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoY2xpZW50WSA+IHJlc3VsdC52aWV3cG9ydC5oZWlnaHQpIHtcbiAgICAgICAgICAgIG1vdXNlUG9zaXRpb24uY2xpZW50WSA9IHJlc3VsdC52aWV3cG9ydC5oZWlnaHQ7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIG5vZGVDbG9uZS5zdHlsZS5sZWZ0ID0gYCR7bGVmdH1weGA7XG4gICAgICAgIG5vZGVDbG9uZS5zdHlsZS50b3AgPSBgJHt0b3B9cHhgO1xuXG4gICAgICAgIGNvbnN0IGV2ZW50RHJhZ2dpbmcgPSB7IG1vdXNlUG9zaXRpb24sIGVsZW1lbnREcmFnOiBub2RlQ2xvbmUsIGVsZW1lbnRLZWVwQ29udGFpbmVyLCBpdGVtRHJhZ0luZm86IHRoaXMuZHJhZ0Ryb3BTZXJ2aWNlLkl0ZW1EcmFnSW5mbyB9O1xuXG4gICAgICAgIHRoaXMuZHJhZ0Ryb3BTZXJ2aWNlLk9uRHJhZ2dpbmcubmV4dChldmVudERyYWdnaW5nKTtcbiAgICAgIH0pO1xuICB9XG59XG4iXX0=
290
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhZy1pdGVtLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMtdWkvY29tcG9uZW50cy9kcmFnLWRyb3Avc3JjL2RyYWctaXRlbS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsdURBQXVEO0FBQ3ZELE9BQU8sRUFBaUIsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVHLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRWhFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxpQkFBaUIsRUFBRSxHQUFHLEVBQUUscUJBQXFCLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdkgsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzFFLE9BQU8sRUFBRSwrQ0FBK0MsRUFBRSxNQUFNLG1EQUFtRCxDQUFDOztBQVFwSCxNQUFNLE9BQU8sdUJBQXdCLFNBQVEsK0NBQStDO0lBQzFGLG1CQUFtQjtJQUNGLFVBQVUsR0FBRyxNQUFNLENBQVUsS0FBSyxDQUFDLENBQUM7SUFDcEMsVUFBVSxHQUFHLE1BQU0sQ0FBVSxLQUFLLENBQUMsQ0FBQztJQUVyRCxnQkFBZ0I7SUFDaEIsb0VBQW9FO0lBQzNELE9BQU8sR0FBRyxLQUFLLENBQVMsRUFBRSxDQUFDLENBQUM7SUFDNUIsSUFBSSxHQUFHLEtBQUssQ0FBTSxTQUFTLENBQUMsQ0FBQztJQUM3Qiw0QkFBNEIsR0FBRyxLQUFLLEVBQVcsQ0FBQztJQUN6RCxvQ0FBb0M7SUFDM0IsZ0NBQWdDLEdBQUcsS0FBSyxDQUE2QixDQUFDLEVBQUUsRUFBRSxTQUFTLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEtB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QUFhLEdBQUcsRUFBRSxhQUFhLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxvQkFBb0IsRUFBRSxZQUFZLEVBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUV2SSxJQUFJLENBQUMsZUFBZSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDdEQsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO3dHQTNUVSx1QkFBdUI7NEZBQXZCLHVCQUF1Qjs7NEZBQXZCLHVCQUF1QjtrQkFMbkMsU0FBUzttQkFBQztvQkFDVCw4REFBOEQ7b0JBQzlELFFBQVEsRUFBRSwyQkFBMkI7b0JBQ3JDLFVBQVUsRUFBRSxJQUFJO2lCQUNqQiIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cbmltcG9ydCB7IEFmdGVyVmlld0luaXQsIERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgZWZmZWN0LCBpbmplY3QsIGlucHV0LCBvdXRwdXQsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgSUJvdW5kaW5nQ2xpZW50UmVjdCB9IGZyb20gJ0BsaWJzLXVpL2ludGVyZmFjZXMtdHlwZXMnO1xuaW1wb3J0IHsgY2hlY2tNb3VzZU92ZXJJbkNvbnRhaW5lciwgY2hlY2tWaWV3SW5TY3JlZW4sIGdldCwgZ2V0RHJhZ0V2ZW50QnlFbGVtZW50LCBnZXRWaWV3cG9ydCB9IGZyb20gJ0BsaWJzLXVpL3V0aWxzJztcbmltcG9ydCB7IGFuaW1hdGlvbkZyYW1lU2NoZWR1bGVyLCBhdWRpdFRpbWUsIGZyb21FdmVudCwgdGFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBMaWJzVWlEcmFnSXRlbUluQ29udGFpbmVyVmlydHVhbFNjcm9sbERpcmVjdGl2ZSB9IGZyb20gJy4vZHJhZy1pdGVtLWluLWNvbnRhaW5lci12aXJ0dWFsLXNjcm9sbC5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgSURyYWdFbmQsIElEcmFnTGVhdmUsIElEcmFnT3ZlciwgSURyYWdTdGFydCwgSURyb3AgfSBmcm9tICcuL2ludGVyZmFjZXMvZXZlbnQuaW50ZXJmYWNlJztcblxuQERpcmVjdGl2ZSh7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvZGlyZWN0aXZlLXNlbGVjdG9yXG4gIHNlbGVjdG9yOiAnW0xpYnNVaURyYWdJdGVtRGlyZWN0aXZlXScsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG59KVxuZXhwb3J0IGNsYXNzIExpYnNVaURyYWdJdGVtRGlyZWN0aXZlIGV4dGVuZHMgTGlic1VpRHJhZ0l0ZW1JbkNvbnRhaW5lclZpcnR1YWxTY3JvbGxEaXJlY3RpdmUgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0IHtcbiAgLy8gI3JlZ2lvbiBQUk9QRVJUWVxuICBwcml2YXRlIHJlYWRvbmx5IGlzRHJhZ092ZXIgPSBzaWduYWw8Ym9vbGVhbj4oZmFsc2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IGlzRHJhZ2dpbmcgPSBzaWduYWw8Ym9vbGVhbj4oZmFsc2UpO1xuXG4gIC8vICNyZWdpb24gSU5QVVRcbiAgLy9zZXR1cCAzIGZpZWxkIHBow61hIGTGsOG7m2kgbuG6v3UgxJFhbmcgc+G7rSBk4bulbmcgaXRlbSB0cm9uZyB2aXJ0dWFsLXNjcm9sbFxuICByZWFkb25seSBmaWVsZElkID0gaW5wdXQ8c3RyaW5nPignJyk7XG4gIHJlYWRvbmx5IGl0ZW0gPSBpbnB1dDxhbnk+KHVuZGVmaW5lZCk7XG4gIHJlYWRvbmx5IGl0ZW1JbkNvbnRhaW5lclZpcnR1YWxTY3JvbGwgPSBpbnB1dDxib29sZWFuPigpO1xuICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgcmVhZG9ubHkgdGhyb3R0bGVUaW1lSGFuZGxlckRyYWdnaW5nRXZlbnQgPSBpbnB1dDxudW1iZXIsIG51bWJlciB8IHVuZGVmaW5lZD4oMCwgeyB0cmFuc2Zvcm06ICh2YWx1ZSkgPT4gdmFsdWUgfHwgMCB9KTtcbiAgcmVhZG9ubHkgaWdub3JlU3RvcEV2ZW50ID0gaW5wdXQ8Ym9vbGVhbj4oKTtcbiAgcmVhZG9ubHkgb25seU1vdXNlRG93blN0b3BFdmVudCA9IGlucHV0PGJvb2xlYW4+KCk7XG4gIHJlYWRvbmx5IGRyYWdSb290RWxlbWVudCA9IGlucHV0PGJvb2xlYW4+KCk7XG4gIHJlYWRvbmx5IGRyYWdCb3VuZGFyeSA9IGlucHV0PGJvb2xlYW4+KCk7XG4gIHJlYWRvbmx5IGRyYWdCb3VuZGFyeUFjY2VwdE1vdXNlTGVhdmVDb250YWluZXIgPSBpbnB1dDxib29sZWFuPigpO1xuICByZWFkb25seSBlbGVtZW50Q29udGFpbmVyID0gaW5wdXQ8SFRNTEVsZW1lbnQ+KCk7XG4gIHJlYWRvbmx5IHpJbmRleCA9IGlucHV0PG51bWJlciwgbnVtYmVyIHwgdW5kZWZpbmVkPigxMzAwLCB7IHRyYW5zZm9ybTogKHZhbHVlKSA9PiB2YWx1ZSA/PyAxMzAwIH0pO1xuICByZWFkb25seSBkaXNhYmxlID0gaW5wdXQ8Ym9vbGVhbj4oKTtcbiAgcmVhZG9ubHkgaWdub3JlVXNlclNlbGVjdE5vbmUgPSBpbnB1dDxib29sZWFuPigpO1xuXG4gIC8vICNyZWdpb24gT1VUUFVUXG4gIHJlYWRvbmx5IG91dERyYWdTdGFydCA9IG91dHB1dDxJRHJhZ1N0YXJ0PigpO1xuICByZWFkb25seSBvdXREcmFnT3ZlciA9IG91dHB1dDxJRHJhZ092ZXI+KCk7XG4gIHJlYWRvbmx5IG91dERyYWdMZWF2ZSA9IG91dHB1dDxJRHJhZ0xlYXZlPigpO1xuICByZWFkb25seSBvdXREcmFnRW5kID0gb3V0cHV0PElEcmFnRW5kPigpO1xuICByZWFkb25seSBvdXREcm9wcGVkID0gb3V0cHV0PElEcm9wPigpO1xuXG4gIC8vICNyZWdpb24gSU5KRUNUXG4gIHByaXZhdGUgcmVhZG9ubHkgZWxlbWVudFJlZiA9IGluamVjdChFbGVtZW50UmVmKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigpO1xuICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICBpZiAoIXRoaXMuZWxlbWVudFJlZj8ubmF0aXZlRWxlbWVudCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBjb25zdCBlbGVtZW50ID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQgYXMgSFRNTEVsZW1lbnQ7XG5cbiAgICAgIGVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShgJHt0aGlzLmRyYWdEcm9wU2VydmljZS5DbGFzc0l0ZW1EZWZpbmV9LWRpc2FibGVgKTtcbiAgICAgIGlmICh0aGlzLmRpc2FibGUoKSAmJiAhZWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoYCR7dGhpcy5kcmFnRHJvcFNlcnZpY2UuQ2xhc3NJdGVtRGVmaW5lfS1kaXNhYmxlYCkpIHtcbiAgICAgICAgZWxlbWVudC5jbGFzc0xpc3QuYWRkKGAke3RoaXMuZHJhZ0Ryb3BTZXJ2aWNlLkNsYXNzSXRlbURlZmluZX0tZGlzYWJsZWApO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgb3ZlcnJpZGUgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIGNvbnN0IGVsZW1lbnQgPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudDtcbiAgICBpZiAodGhpcy5maWVsZElkKCkpIHtcbiAgICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKCdmaWVsZF9pZCcsIHRoaXMuZmllbGRJZCgpKTtcbiAgICAgIGlmICh0aGlzLml0ZW0oKSkge1xuICAgICAgICBlbGVtZW50LnNldEF0dHJpYnV0ZSgnaXRlbV9pZCcsIGdldCh0aGlzLml0ZW0oKSwgdGhpcy5maWVsZElkKCkpKTtcbiAgICAgIH1cbiAgICB9XG4gICAgZWxlbWVudC5jbGFzc0xpc3QuYWRkKHRoaXMuZHJhZ0Ryb3BTZXJ2aWNlLkNsYXNzSXRlbURlZmluZSk7XG5cbiAgICAvLyBU4bqhaSBkcmFnIHN0YXJ0OiBjYWNoZSByZWN0IOKGkiBza2lwIGdldEJvdW5kaW5nQ2xpZW50UmVjdCgpIG3hu5dpIG1vdXNlbW92ZVxuICAgIHRoaXMuZHJhZ0Ryb3BTZXJ2aWNlLk9uRHJhZ1N0YXJ0LnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZikpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLmRyYWdEcm9wU2VydmljZS5jYWNoZUVsZW1lbnRSZWN0KGVsZW1lbnQpO1xuICAgIH0pO1xuICAgIC8vIETDuW5nIGRlc3Ryb3lSZWYub25EZXN0cm95KCkgdGhheSBPbkRyYWdFbmQgc3Vic2NyaXB0aW9uOlxuICAgIC8vIFZpcnR1YWwgc2Nyb2xsIGRlc3Ryb3kgZGlyZWN0aXZlcyBraGkgc2Nyb2xsIG91dCDihpIgT25EcmFnRW5kIHN1YnNjcmlwdGlvbiBi4buLIHVuc3Vic2NyaWJlXG4gICAgLy8gdHLGsOG7m2Mga2hpIGRyYWcga+G6v3QgdGjDumMg4oaSIGludmFsaWRhdGVFbGVtZW50UmVjdCBraMO0bmcgxJHGsOG7o2MgZ+G7jWkg4oaSIHN0YWxlIHJlY3QuXG4gICAgLy8gZGVzdHJveVJlZi5vbkRlc3Ryb3koKSBsdcO0biBjaOG6oXkga2hpIGRpcmVjdGl2ZSBi4buLIGRlc3Ryb3ksIGLhuqV0IGvhu4MgZHJhZyBzdGF0ZS5cbiAgICB0aGlzLmRlc3Ryb3lSZWYub25EZXN0cm95KCgpID0+IHRoaXMuZHJhZ0Ryb3BTZXJ2aWNlLmludmFsaWRhdGVFbGVtZW50UmVjdChlbGVtZW50KSk7XG5cbiAgICAvLyBhdWRpdFRpbWUoMCwgYW5pbWF0aW9uRnJhbWVTY2hlZHVsZXIpOiBnb20gVOG6pFQgQ+G6oiBpdGVtIHN1YnNjcmlwdGlvbnMgdsOgbyAxIHJBRiBjYWxsYmFjay5cbiAgICAvLyBUb8OgbiBi4buZIGdldEJvdW5kaW5nQ2xpZW50UmVjdCgpIHJlYWRzIHjhuqN5IHJhIHRyb25nIDEgYmF0Y2gg4oaSIGJyb3dzZXIgY2jhu4kgZmx1c2ggbGF5b3V0IDEgbOG6p24vZnJhbWUuXG4gICAgLy8gVHJhaWxpbmcgYmVoYXZpb3IgKGTDuW5nIGV2ZW50IG3hu5tpIG5o4bqldCkgdOG7kXQgaMahbiB0aHJvdHRsZVRpbWUgbGVhZGluZyAoZXZlbnQgY8WpIDE2bXMgdHLGsOG7m2MpLlxuICAgIHRoaXMuZHJhZ0Ryb3BTZXJ2aWNlLk9uRHJhZ2dpbmcucGlwZShhdWRpdFRpbWUoMCwgYW5pbWF0aW9uRnJhbWVTY2hlZHVsZXIpLCB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKSkuc3Vic2NyaWJlKChldmVudERyYWdnaW5nKSA9PiB7XG4gICAgICBpZiAodGhpcy5kaXNhYmxlKCkgfHwgZWxlbWVudC5nZXRBdHRyaWJ1dGUoJ2Rpc2FibGVEcmFnQ29udGFpbmVyJykgfHwgKHRoaXMuZmllbGRJZCgpICYmIHRoaXMuaXRlbSgpICYmIGV2ZW50RHJhZ2dpbmcuZWxlbWVudERyYWcuZ2V0QXR0cmlidXRlKCdpdGVtX2lkJykgPT09IGdldCh0aGlzLml0ZW0oKSwgdGhpcy5maWVsZElkKCkpKSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBjb25zdCBjb250YWluZXJCeUlkID0gdGhpcy5kcmFnRHJvcFNlcnZpY2UuQ29udGFpbmVyKCkuZ2V0KGVsZW1lbnQuZ2V0QXR0cmlidXRlKCdncm91cElEJykgfHwgJycpO1xuXG4gICAgICBpZiAoY29udGFpbmVyQnlJZCkge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgZXZlbnREcmFnZ2luZy5lbGVtZW50S2VlcENvbnRhaW5lciB8fFxuICAgICAgICAgICF0aGlzLmRyYWdEcm9wU2VydmljZS5jaGVja0VsZW1lbnRPdmVyQWNjZXB0RWxlbWVudERyYWcoY29udGFpbmVyQnlJZC5lbGVtZW50LmdldEF0dHJpYnV0ZSgnZ3JvdXBOYW1lJyksIGV2ZW50RHJhZ2dpbmcuZWxlbWVudERyYWcuZ2V0QXR0cmlidXRlKCdncm91cE5hbWUnKSwgZXZlbnREcmFnZ2luZy5lbGVtZW50RHJhZy5nZXRBdHRyaWJ1dGUoJ2Ryb3BUb0dyb3VwTmFtZScpKVxuICAgICAgICApIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIC8vIETDuW5nIGNhY2hlZCByZWN0IChraMO0bmcgZ+G7jWkgZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkgbOG6oWkpOyBmYWxsYmFjayB24buBIGZyZXNoIG7hur91IGNhY2hlIG1pc3NcbiAgICAgIGNvbnN0IGNhY2hlZFJlY3QgPSB0aGlzLmRyYWdEcm9wU2VydmljZS5nZXRFbGVtZW50UmVjdChlbGVtZW50KTtcbiAgICAgIGlmIChjaGVja01vdXNlT3ZlckluQ29udGFpbmVyKGV2ZW50RHJhZ2dpbmcubW91c2VQb3NpdGlvbiwgZWxlbWVudCwgY2FjaGVkUmVjdCkgJiYgZWxlbWVudCAhPT0gZXZlbnREcmFnZ2luZy5lbGVtZW50RHJhZyAmJiBjb250YWluZXJCeUlkICYmIGNoZWNrVmlld0luU2NyZWVuKGNvbnRhaW5lckJ5SWQuZWxlbWVudCwgZWxlbWVudCwgY29udGFpbmVyQnlJZC5lbGVtZW50U2Nyb2xsKSkge1xuICAgICAgICBpZiAodGhpcy5pc0RyYWdPdmVyKCkpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZXZlbnREcmFnT3ZlciA9IHsgLi4uZXZlbnREcmFnZ2luZywgZWxlbWVudERyYWdPdmVyOiBlbGVtZW50IH07XG5cbiAgICAgICAgdGhpcy5kcmFnRHJvcFNlcnZpY2UuT25EcmFnT3Zlci5uZXh0KGV2ZW50RHJhZ092ZXIpO1xuICAgICAgICB0aGlzLm91dERyYWdPdmVyLmVtaXQoZXZlbnREcmFnT3Zlcik7XG4gICAgICAgIHRoaXMuaXNEcmFnT3Zlci5zZXQodHJ1ZSk7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5pc0RyYWdPdmVyKCkpIHtcbiAgICAgICAgY29uc3QgZXZlbnREcmFnTGVhdmUgPSB7IC4uLmV2ZW50RHJhZ2dpbmcsIGVsZW1lbnREcmFnTGVhdmU6IGVsZW1lbnQgfTtcbiAgICAgICAgdGhpcy5pc0RyYWdPdmVyLnNldChmYWxzZSk7XG4gICAgICAgIHRoaXMuZHJhZ0Ryb3BTZXJ2aWNlLk9uRHJhZ0xlYXZlLm5leHQoZXZlbnREcmFnTGVhdmUpO1xuICAgICAgICB0aGlzLm91dERyYWdMZWF2ZS5lbWl0KGV2ZW50RHJhZ0xlYXZlKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHRoaXMuZHJhZ0Ryb3BTZXJ2aWNlLk9uRHJvcENvbnRhaW5lci5waXBlKHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpKS5zdWJzY3JpYmUoKGV2ZW50RHJvcCkgPT4ge1xuICAgICAgaWYgKGV2ZW50RHJvcC5lbGVtZW50RHJvcCAhPT0gZWxlbWVudCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBjb25zdCBkcm9wRXZlbnQgPSB7IGVsZW1lbnREcmFnOiBldmVudERyb3AuZWxlbWVudERyYWcsIGVsZW1lbnREcm9wOiBlbGVtZW50LCBpdGVtRHJhZ0luZm86IGV2ZW50RHJvcC5pdGVtRHJhZ0luZm8gfTtcblxuICAgICAgdGhpcy5vdXREcm9wcGVkLmVtaXQoZHJvcEV2ZW50KTtcbiAgICB9KTtcbiAgICBjb25zdCBzdHlsZVRhZyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3N0eWxlJyk7XG5cbiAgICBzdHlsZVRhZy50ZXh0Q29udGVudCA9IGAubGlicy11aS1kcmFnLWRyb3AtaXRlbS1kcmFnZ2luZ3tjdXJzb3I6bW92ZX1gO1xuICAgIGxldCBub2RlQ2xvbmUgPSBlbGVtZW50O1xuICAgIGxldCBkaXN0YW5jZVN0YXJ0RWxlbWVudEFuZE1vdXNlTGVmdCA9IC0xO1xuICAgIGxldCBkaXN0YW5jZVN0YXJ0RWxlbWVudEFuZE1vdXNlVG9wID0gLTE7XG4gICAgbGV0IGNvbnRleHRNZW51ID0gZmFsc2U7XG4gICAgY29uc3Qgc3RvcEV2ZW50TW91c2UgPSAobW91c2VFdmVudDogTW91c2VFdmVudCkgPT4ge1xuICAgICAgaWYgKCF0aGlzLmlnbm9yZVN0b3BFdmVudCgpKSB7XG4gICAgICAgIG1vdXNlRXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgbW91c2VFdmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgIH1cbiAgICB9O1xuICAgIGNvbnN0IHVwZGF0ZVBvc2l0aW9uRWxlbWVudFJvb3RBbmRSZW1vdmVOb2RlQ2xvbmUgPSAoKSA9PiB7XG4gICAgICBpZiAodGhpcy5kcmFnUm9vdEVsZW1lbnQoKSkge1xuICAgICAgICBjb25zdCBjb250YWluZXJCeUlkID0gdGhpcy5kcmFnRHJvcFNlcnZpY2UuQ29udGFpbmVyKCkuZ2V0KGVsZW1lbnQuZ2V0QXR0cmlidXRlKCdncm91cElEJykgfHwgJycpO1xuXG4gICAgICAgIGNvbnN0IGNvbnRhaW5lckl0ZW0gPSB0aGlzLmVsZW1lbnRDb250YWluZXIoKSB8fCBjb250YWluZXJCeUlkPy5lbGVtZW50U2Nyb2xsIHx8IGNvbnRhaW5lckJ5SWQ/LmVsZW1lbnQgfHwgZG9jdW1lbnQuYm9keTtcbiAgICAgICAgY29uc3QgcmVjdENvbnRhaW5lciA9IGNvbnRhaW5lckl0ZW0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgIGNvbnN0IHJlY3ROb2RlQ2xvbmUgPSBub2RlQ2xvbmUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgIGNvbnN0IG51bWJlclN1YiA9IE51bWJlcigoZ2V0Q29tcHV0ZWRTdHlsZShjb250YWluZXJJdGVtKS5ib3JkZXIubWF0Y2goL1xcZCtweC9naSkgfHwgWycwJ10pWzBdLnJlcGxhY2UoL1xcRCsvZ2ksICcnKSkudmFsdWVPZigpO1xuXG4gICAgICAgIGVsZW1lbnQuc3R5bGUubGVmdCA9IHJlY3ROb2RlQ2xvbmUubGVmdCAtIHJlY3RDb250YWluZXIubGVmdCAtIG51bWJlclN1YiArICdweCc7XG4gICAgICAgIGVsZW1lbnQuc3R5bGUudG9wID0gcmVjdE5vZGVDbG9uZS50b3AgLSByZWN0Q29udGFpbmVyLnRvcCAtIG51bWJlclN1YiArICdweCc7XG4gICAgICAgIGVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgnb3BhY2l0eS0wJyk7XG4gICAgICB9XG4gICAgICBkaXN0YW5jZVN0YXJ0RWxlbWVudEFuZE1vdXNlTGVmdCA9IC0xO1xuICAgICAgZGlzdGFuY2VTdGFydEVsZW1lbnRBbmRNb3VzZVRvcCA9IC0xO1xuICAgICAgbm9kZUNsb25lLnJlbW92ZSgpO1xuICAgIH07XG5cbiAgICBmcm9tRXZlbnQoZG9jdW1lbnQsICdjb250ZXh0bWVudScpXG4gICAgICAucGlwZShcbiAgICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgICBpZiAodGhpcy5pc0RyYWdnaW5nKCkpIHtcbiAgICAgICAgICAgIHVwZGF0ZVBvc2l0aW9uRWxlbWVudFJvb3RBbmRSZW1vdmVOb2RlQ2xvbmUoKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgY29udGV4dE1lbnUgPSB0cnVlO1xuICAgICAgICB9KSxcbiAgICAgICAgdGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZilcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcblxuICAgIGxldCBpZ25vcmVNb3VzZWRvd24gPSBmYWxzZTtcblxuICAgIGdldERyYWdFdmVudEJ5RWxlbWVudCh7XG4gICAgICBlbGVtZW50TW91c2VEb3duOiBlbGVtZW50LFxuICAgICAgZnVuY3Rpb25Nb3VzZURvd246IChldmVudDogTW91c2VFdmVudCkgPT4ge1xuICAgICAgICB0aGlzLmRyYWdEcm9wU2VydmljZS5JdGVtQ2xpY2sgPSBlbGVtZW50O1xuICAgICAgICBjb250ZXh0TWVudSA9IGZhbHNlO1xuICAgICAgICB0aGlzLnVwZGF0ZU1vdXNlRXZlbnRzV2hlbk1vdmVPdmVySWZyYW1lKCdub25lJyk7XG4gICAgICAgIGlmICgodGhpcy5kaXNhYmxlKCkgfHwgZWxlbWVudC5nZXRBdHRyaWJ1dGUoJ2Rpc2FibGVEcmFnQ29udGFpbmVyJykgfHwgIXRoaXMuaXNEcmFnZ2luZygpIHx8IHRoaXMuaXRlbUluQ29udGFpbmVyVmlydHVhbFNjcm9sbCgpKSAmJiAhdGhpcy5vbmx5TW91c2VEb3duU3RvcEV2ZW50KCkpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgc3RvcEV2ZW50TW91c2UoZXZlbnQpO1xuICAgICAgfSxcbiAgICAgIGZ1bmN0aW9uTW91c2VNb3ZlOiAoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHtcbiAgICAgICAgc3RvcEV2ZW50TW91c2UoZXZlbnQpO1xuICAgICAgfSxcbiAgICAgIGZ1bmN0aW9uTW91c2VVcDogKGV2ZW50OiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgICAgIHRoaXMudXBkYXRlTW91c2VFdmVudHNXaGVuTW92ZU92ZXJJZnJhbWUoJ2F1dG8nKTtcbiAgICAgICAgdGhpcy5kcmFnRHJvcFNlcnZpY2UucmVzZXRJdGVtQ2xpY2soKTtcbiAgICAgICAgc3RvcEV2ZW50TW91c2UoZXZlbnQpO1xuICAgICAgICBpZiAodGhpcy5kaXNhYmxlKCkgfHwgZWxlbWVudC5nZXRBdHRyaWJ1dGUoJ2Rpc2FibGVEcmFnQ29udGFpbmVyJykgfHwgY29udGV4dE1lbnUgfHwgIXRoaXMuaXNEcmFnZ2luZygpKSB7XG4gICAgICAgICAgY29udGV4dE1lbnUgPSBmYWxzZTtcblxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb250ZXh0TWVudSA9IGZhbHNlO1xuICAgICAgICB0aGlzLmlzRHJhZ2dpbmcuc2V0KGZhbHNlKTtcbiAgICAgICAgZWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUodGhpcy5kcmFnRHJvcFNlcnZpY2UuVGFyZ2V0SXRlbURyYWdGbGFnKTtcbiAgICAgICAgaWYgKHRoaXMuaXRlbUluQ29udGFpbmVyVmlydHVhbFNjcm9sbCgpKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG1vdXNlUG9zaXRpb24gPSB7IGNsaWVudFg6IGV2ZW50LmNsaWVudFgsIGNsaWVudFk6IGV2ZW50LmNsaWVudFkgfTtcblxuICAgICAgICBpZiAodGhpcy5kcmFnQm91bmRhcnkoKSAmJiB0aGlzLmRyYWdCb3VuZGFyeUFjY2VwdE1vdXNlTGVhdmVDb250YWluZXIoKSkge1xuICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMuZ2V0Q2xpZW50UG9zaXRpb24oZWxlbWVudCwgbW91c2VQb3NpdGlvbiwgZGlzdGFuY2VTdGFydEVsZW1lbnRBbmRNb3VzZUxlZnQsIGRpc3RhbmNlU3RhcnRFbGVtZW50QW5kTW91c2VUb3AsIHRoaXMuZHJhZ0JvdW5kYXJ5KCksIHRoaXMuZWxlbWVudENvbnRhaW5lcigpKTtcblxuICAgICAgICAgIG1vdXNlUG9zaXRpb24uY2xpZW50WCA9IHJlc3VsdC5jbGllbnRYO1xuICAgICAgICAgIG1vdXNlUG9zaXRpb24uY2xpZW50WSA9IHJlc3VsdC5jbGllbnRZO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGRyYWdFbmRFdmVudCA9IHsgbW91c2VQb3NpdGlvbiwgZWxlbWVudERyYWc6IGVsZW1lbnQsIGl0ZW1EcmFnSW5mbzogdGhpcy5kcmFnRHJvcFNlcnZpY2UuSXRlbURyYWdJbmZvIH07XG5cbiAgICAgICAgdGhpcy5kcmFnRHJvcFNlcnZpY2UuSXRlbURyYWdJbmZvID0gdW5kZWZpbmVkO1xuICAgICAgICB0aGlzLmRyYWdEcm9wU2VydmljZS5PbkRyYWdFbmQubmV4dChkcmFnRW5kRXZlbnQpO1xuICAgICAgICB0aGlzLm91dERyYWdFbmQuZW1pdChkcmFnRW5kRXZlbnQpO1xuXG4gICAgICAgIG5vZGVDbG9uZS5jbGFzc0xpc3QucmVtb3ZlKCdsaWJzLXVpLWRyYWctZHJvcC1pdGVtLWRyYWdnaW5nJyk7XG4gICAgICAgIGlmICghdGhpcy5pZ25vcmVVc2VyU2VsZWN0Tm9uZSgpKSB7XG4gICAgICAgICAgbm9kZUNsb25lLmNsYXNzTGlzdC5yZW1vdmUoJ3NlbGVjdC1ub25lJyk7XG4gICAgICAgIH1cbiAgICAgICAgc3R5bGVUYWcucmVtb3ZlKCk7XG5cbiAgICAgICAgdXBkYXRlUG9zaXRpb25FbGVtZW50Um9vdEFuZFJlbW92ZU5vZGVDbG9uZSgpO1xuICAgICAgfSxcbiAgICAgIGRlc3Ryb3lSZWY6IHRoaXMuZGVzdHJveVJlZixcbiAgICB9KVxuICAgICAgLnBpcGUoXG4gICAgICAgIHRhcCgoZHJhZ01vdXNlRXZlbnQ6IE1vdXNlRXZlbnQpID0+IHtcbiAgICAgICAgICBjb25zdCByZWN0RWxlbWVudCA9IGVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgICAgY29uc3Qgdmlld3BvcnQgPSBnZXRWaWV3cG9ydCgpIGFzIElCb3VuZGluZ0NsaWVudFJlY3Q7XG5cbiAgICAgICAgICBpZiAodGhpcy5kaXNhYmxlKCkgfHwgZWxlbWVudC5nZXRBdHRyaWJ1dGUoJ2Rpc2FibGVEcmFnQ29udGFpbmVyJykgfHwgIWRyYWdNb3VzZUV2ZW50LmNsaWVudFggfHwgKCFpZ25vcmVNb3VzZWRvd24gJiYgZHJhZ01vdXNlRXZlbnQudHlwZSA9PT0gJ21vdXNlZG93bicgJiYgcmVjdEVsZW1lbnQuaGVpZ2h0ICsgcmVjdEVsZW1lbnQudG9wID49IHZpZXdwb3J0LmhlaWdodCkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgICAgY29uc3QgeyBjbGllbnRYLCBjbGllbnRZIH0gPSBkcmFnTW91c2VFdmVudDtcblxuICAgICAgICAgIGlmIChkaXN0YW5jZVN0YXJ0RWxlbWVudEFuZE1vdXNlTGVmdCA9PT0gLTEpIHtcbiAgICAgICAgICAgIGRpc3RhbmNlU3RhcnRFbGVtZW50QW5kTW91c2VMZWZ0ID0gY2xpZW50WCAtIHJlY3RFbGVtZW50LmxlZnQ7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKGRpc3RhbmNlU3RhcnRFbGVtZW50QW5kTW91c2VUb3AgPT09IC0xKSB7XG4gICAgICAgICAgICBkaXN0YW5jZVN0YXJ0RWxlbWVudEFuZE1vdXNlVG9wID0gY2xpZW50WSAtIHJlY3RFbGVtZW50LnRvcDtcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKChkcmFnTW91c2VFdmVudCkgPT4ge1xuICAgICAgICBpZiAodGhpcy5kcmFnRHJvcFNlcnZpY2UuSXRlbUNsaWNrLmZpbHRlcigoaXRlbSkgPT4gaXRlbSAhPT0gZWxlbWVudCkuc29tZSgoaXRlbSkgPT4gZWxlbWVudC5jb250YWlucyhpdGVtKSkpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuZGlzYWJsZSgpIHx8IGVsZW1lbnQuZ2V0QXR0cmlidXRlKCdkaXNhYmxlRHJhZ0NvbnRhaW5lcicpIHx8ICFkcmFnTW91c2VFdmVudC5jbGllbnRYIHx8IGRyYWdNb3VzZUV2ZW50LnR5cGUgPT09ICdtb3VzZWRvd24nIHx8IGNvbnRleHRNZW51IHx8ICh0aGlzLml0ZW1JbkNvbnRhaW5lclZpcnR1YWxTY3JvbGwoKSAmJiB0aGlzLmlzRHJhZ2dpbmcoKSkpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWdub3JlTW91c2Vkb3duID0gdHJ1ZTtcbiAgICAgICAgY29uc3QgeyBjbGllbnRYLCBjbGllbnRZIH0gPSBkcmFnTW91c2VFdmVudDtcbiAgICAgICAgY29uc3QgbW91c2VQb3NpdGlvbiA9IHsgY2xpZW50WCwgY2xpZW50WSB9O1xuICAgICAgICBjb25zdCByZWN0RWxlbWVudCA9IGVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG5cbiAgICAgICAgaWYgKCF0aGlzLmlzRHJhZ2dpbmcoKSkge1xuICAgICAgICAgIHRoaXMuaXNEcmFnZ2luZy5zZXQodHJ1ZSk7XG4gICAgICAgICAgY29uc3QgZXZlbnREcmFnU3RhcnQgPSB7IG1vdXNlUG9zaXRpb24sIGVsZW1lbnREcmFnOiBlbGVtZW50LCBpdGVtRHJhZ0luZm86IHRoaXMuZHJhZ0Ryb3BTZXJ2aWNlLkl0ZW1EcmFnSW5mbyB9O1xuXG4gICAgICAgICAgZWxlbWVudC5zZXRBdHRyaWJ1dGUodGhpcy5kcmFnRHJvcFNlcnZpY2UuVGFyZ2V0SXRlbURyYWdGbGFnLCAndHJ1ZScpO1xuICAgICAgICAgIHRoaXMuZHJhZ0Ryb3BTZXJ2aWNlLk9uRHJhZ1N0YXJ0Lm5leHQoZXZlbnREcmFnU3RhcnQpO1xuICAgICAgICAgIGV2ZW50RHJhZ1N0YXJ0Lml0ZW1EcmFnSW5mbyA9IHRoaXMuZHJhZ0Ryb3BTZXJ2aWNlLkl0ZW1EcmFnSW5mbztcbiAgICAgICAgICB0aGlzLm91dERyYWdTdGFydC5lbWl0KGV2ZW50RHJhZ1N0YXJ0KTtcblxuICAgICAgICAgIG5vZGVDbG9uZSA9IGVsZW1lbnQuY2xvbmVOb2RlKHRydWUpIGFzIEhUTUxFbGVtZW50O1xuICAgICAgICAgIG5vZGVDbG9uZS5zdHlsZS56SW5kZXggPSBgJHt0aGlzLnpJbmRleCgpfWA7XG4gICAgICAgICAgbm9kZUNsb25lLmNsYXNzTGlzdC5hZGQoJyFmaXhlZCcpO1xuICAgICAgICAgIG5vZGVDbG9uZS5jbGFzc0xpc3QucmVtb3ZlKCdsaWJzLXVpLWRyYWctZHJvcC1pdGVtLW9yaWdpbi1wbGFjZWhvbGRlcicpO1xuICAgICAgICAgIG5vZGVDbG9uZS5jbGFzc0xpc3QucmVtb3ZlKCdsaWJzLXVpLWRyYWctZHJvcC1pdGVtLXBsYWNlaG9sZGVyJyk7XG4gICAgICAgICAgbm9kZUNsb25lLmFwcGVuZENoaWxkKHN0eWxlVGFnKTtcbiAgICAgICAgICBub2RlQ2xvbmUuY2xhc3NMaXN0LmFkZCgnbGlicy11aS1kcmFnLWRyb3AtaXRlbS1kcmFnZ2luZycpO1xuICAgICAgICAgIG5vZGVDbG9uZS5zdHlsZS53aWR0aCA9IGAke3JlY3RFbGVtZW50LndpZHRofXB4YDtcbiAgICAgICAgICBub2RlQ2xvbmUuc3R5bGUuaGVpZ2h0ID0gYCR7cmVjdEVsZW1lbnQuaGVpZ2h0fXB4YDtcbiAgICAgICAgICBub2RlQ2xvbmUuc3R5bGUubGVmdCA9IGAkey05OTl9cHhgO1xuICAgICAgICAgIG5vZGVDbG9uZS5zdHlsZS50b3AgPSBgJHstOTk5fXB4YDtcbiAgICAgICAgICBpZiAoIXRoaXMuaWdub3JlVXNlclNlbGVjdE5vbmUoKSkge1xuICAgICAgICAgICAgbm9kZUNsb25lLmNsYXNzTGlzdC5hZGQoJ3NlbGVjdC1ub25lJyk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kKG5vZGVDbG9uZSk7XG4gICAgICAgICAgaWYgKHRoaXMuZHJhZ1Jvb3RFbGVtZW50KCkpIHtcbiAgICAgICAgICAgIGVsZW1lbnQuY2xhc3NMaXN0LmFkZCgnb3BhY2l0eS0wJyk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKHRoaXMuaXRlbUluQ29udGFpbmVyVmlydHVhbFNjcm9sbCgpKSB7XG4gICAgICAgICAgICB0aGlzLmRyYWdEcm9wU2VydmljZS5PbkRyYWdJdGVtSW5Db250YWluZXJWaXJ0dWFsU2Nyb2xsLm5leHQoe1xuICAgICAgICAgICAgICBpdGVtRHJhZ0luZm86IHRoaXMuZHJhZ0Ryb3BTZXJ2aWNlLkl0ZW1EcmFnSW5mbyxcbiAgICAgICAgICAgICAgZWxlbWVudERyYWc6IG5vZGVDbG9uZSxcbiAgICAgICAgICAgICAgZGlzdGFuY2VTdGFydEVsZW1lbnRBbmRNb3VzZVRvcCxcbiAgICAgICAgICAgICAgZGlzdGFuY2VTdGFydEVsZW1lbnRBbmRNb3VzZUxlZnQsXG4gICAgICAgICAgICAgIGVsZW1lbnRDb250YWluZXI6IHRoaXMuZWxlbWVudENvbnRhaW5lcigpLFxuICAgICAgICAgICAgICBkcmFnQm91bmRhcnk6IHRoaXMuZHJhZ0JvdW5kYXJ5KCksXG4gICAgICAgICAgICAgIGRyYWdCb3VuZGFyeUFjY2VwdE1vdXNlTGVhdmVDb250YWluZXI6IHRoaXMuZHJhZ0JvdW5kYXJ5QWNjZXB0TW91c2VMZWF2ZUNvbnRhaW5lcigpLFxuICAgICAgICAgICAgICBpZ25vcmVTdG9wRXZlbnQ6IHRoaXMuaWdub3JlU3RvcEV2ZW50KCksXG4gICAgICAgICAgICAgIGlnbm9yZVVzZXJTZWxlY3ROb25lOiB0aGlzLmlnbm9yZVVzZXJTZWxlY3ROb25lKCkgfHwgZmFsc2UsXG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBjb25zdCByZXN1bHQgPSB0aGlzLmdldENsaWVudFBvc2l0aW9uKG5vZGVDbG9uZSwgbW91c2VQb3NpdGlvbiwgZGlzdGFuY2VTdGFydEVsZW1lbnRBbmRNb3VzZUxlZnQsIGRpc3RhbmNlU3RhcnRFbGVtZW50QW5kTW91c2VUb3AsIHRoaXMuZHJhZ0JvdW5kYXJ5KCksIHRoaXMuZWxlbWVudENvbnRhaW5lcigpKTtcblxuICAgICAgICBjb25zdCBlbGVtZW50S2VlcENvbnRhaW5lciA9IHJlc3VsdC5lbGVtZW50S2VlcENvbnRhaW5lcjtcbiAgICAgICAgY29uc3QgbGVmdCA9IHJlc3VsdC5jbGllbnRYIC0gZGlzdGFuY2VTdGFydEVsZW1lbnRBbmRNb3VzZUxlZnQ7XG4gICAgICAgIGNvbnN0IHRvcCA9IHJlc3VsdC5jbGllbnRZIC0gZGlzdGFuY2VTdGFydEVsZW1lbnRBbmRNb3VzZVRvcDtcblxuICAgICAgICBpZiAodGhpcy5kcmFnQm91bmRhcnkoKSAmJiB0aGlzLmRyYWdCb3VuZGFyeUFjY2VwdE1vdXNlTGVhdmVDb250YWluZXIoKSkge1xuICAgICAgICAgIGlmIChjbGllbnRYIDwgcmVzdWx0LnZpZXdwb3J0LmxlZnQpIHtcbiAgICAgICAgICAgIG1vdXNlUG9zaXRpb24uY2xpZW50WCA9IHJlc3VsdC52aWV3cG9ydC5sZWZ0O1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoY2xpZW50WCA+IHJlc3VsdC52aWV3cG9ydC53aWR0aCkge1xuICAgICAgICAgICAgbW91c2VQb3NpdGlvbi5jbGllbnRYID0gcmVzdWx0LnZpZXdwb3J0LndpZHRoO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoY2xpZW50WSA8IHJlc3VsdC52aWV3cG9ydC50b3ApIHtcbiAgICAgICAgICAgIG1vdXNlUG9zaXRpb24uY2xpZW50WSA9IHJlc3VsdC52aWV3cG9ydC50b3A7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChjbGllbnRZID4gcmVzdWx0LnZpZXdwb3J0LmhlaWdodCkge1xuICAgICAgICAgICAgbW91c2VQb3NpdGlvbi5jbGllbnRZID0gcmVzdWx0LnZpZXdwb3J0LmhlaWdodDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgbm9kZUNsb25lLnN0eWxlLmxlZnQgPSBgJHtsZWZ0fXB4YDtcbiAgICAgICAgbm9kZUNsb25lLnN0eWxlLnRvcCA9IGAke3RvcH1weGA7XG5cbiAgICAgICAgY29uc3QgZXZlbnREcmFnZ2luZyA9IHsgbW91c2VQb3NpdGlvbiwgZWxlbWVudERyYWc6IG5vZGVDbG9uZSwgZWxlbWVudEtlZXBDb250YWluZXIsIGl0ZW1EcmFnSW5mbzogdGhpcy5kcmFnRHJvcFNlcnZpY2UuSXRlbURyYWdJbmZvIH07XG5cbiAgICAgICAgdGhpcy5kcmFnRHJvcFNlcnZpY2UuT25EcmFnZ2luZy5uZXh0KGV2ZW50RHJhZ2dpbmcpO1xuICAgICAgfSk7XG4gIH1cbn1cbiJdfQ==
@@ -2,6 +2,7 @@
2
2
  import { DestroyRef, Directive, ElementRef, inject, input, signal } from '@angular/core';
3
3
  import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
4
4
  import { checkMouseOverInContainer, cloneIBoundingClientRect, get } from '@libs-ui/utils';
5
+ import { animationFrameScheduler, auditTime } from 'rxjs';
5
6
  import { MoLibsSharedDragDropService } from './drag-drop.service';
6
7
  import * as i0 from "@angular/core";
7
8
  export class LibsUiComponentsDragScrollDirective {
@@ -20,7 +21,8 @@ export class LibsUiComponentsDragScrollDirective {
20
21
  dragDropService = inject(MoLibsSharedDragDropService);
21
22
  destroyRef = inject(DestroyRef);
22
23
  ngAfterViewInit() {
23
- this.dragDropService.OnDragging.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((eventDragging) => this.checkAndScrollElementToPosition(eventDragging, this.ignoreAutoScroll()));
24
+ // auditTime(rAF): batch cùng rAF với drag-item subscriptions → không tạo thêm layout flush riêng
25
+ this.dragDropService.OnDragging.pipe(auditTime(0, animationFrameScheduler), takeUntilDestroyed(this.destroyRef)).subscribe((eventDragging) => this.checkAndScrollElementToPosition(eventDragging, this.ignoreAutoScroll()));
24
26
  this.dragDropService.OnDragEnd.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {
25
27
  clearInterval(this.intervalScrollToElement());
26
28
  if (this.virtualScrollPageInfo()) {
@@ -137,4 +139,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
137
139
  standalone: true,
138
140
  }]
139
141
  }] });
140
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhZy1zY3JvbGwuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy11aS9jb21wb25lbnRzL2RyYWctZHJvcC9zcmMvZHJhZy1zY3JvbGwuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHVEQUF1RDtBQUN2RCxPQUFPLEVBQWlCLFVBQVUsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3hHLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBR2hFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSx3QkFBd0IsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMxRixPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7QUFPbEUsTUFBTSxPQUFPLG1DQUFtQztJQUM5QyxtQkFBbUI7SUFDWCxVQUFVLEdBQUcsTUFBTSxDQUFVLEtBQUssQ0FBQyxDQUFDO0lBQ3BDLHFCQUFxQixHQUFHLE1BQU0sQ0FBd0IsU0FBUyxDQUFDLENBQUM7SUFDL0QsdUJBQXVCLEdBQUcsTUFBTSxDQUFxQixTQUFTLENBQUMsQ0FBQztJQUUxRSxnQkFBZ0I7SUFDUCxnQkFBZ0IsR0FBRyxLQUFLLEVBQVcsQ0FBQztJQUNwQyxlQUFlLEdBQUcsS0FBSyxDQUE2QixFQUFFLEVBQUUsRUFBRSxTQUFTLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUssSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQy9GLGNBQWMsR0FBRyxLQUFLLENBQTZCLENBQUMsRUFBRSxFQUFFLFNBQVMsRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDNUYsaUJBQWlCLEdBQUcsS0FBSyxFQUFlLENBQUM7SUFDekMsd0JB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VSxFQUFFLElBQUk7aUJBQ2pCIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xuaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgRGVzdHJveVJlZiwgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBpbmplY3QsIGlucHV0LCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7IElQYWdlSW5mbywgVmlydHVhbFNjcm9sbGVyQ29tcG9uZW50IH0gZnJvbSAnQGloYXJiZWNrL25neC12aXJ0dWFsLXNjcm9sbGVyJztcbmltcG9ydCB7IElCb3VuZGluZ0NsaWVudFJlY3QgfSBmcm9tICdAbGlicy11aS9pbnRlcmZhY2VzLXR5cGVzJztcbmltcG9ydCB7IGNoZWNrTW91c2VPdmVySW5Db250YWluZXIsIGNsb25lSUJvdW5kaW5nQ2xpZW50UmVjdCwgZ2V0IH0gZnJvbSAnQGxpYnMtdWkvdXRpbHMnO1xuaW1wb3J0IHsgTW9MaWJzU2hhcmVkRHJhZ0Ryb3BTZXJ2aWNlIH0gZnJvbSAnLi9kcmFnLWRyb3Auc2VydmljZSc7XG5pbXBvcnQgeyBJRHJhZ2dpbmcgfSBmcm9tICcuL2ludGVyZmFjZXMvZXZlbnQuaW50ZXJmYWNlJztcbkBEaXJlY3RpdmUoe1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L2RpcmVjdGl2ZS1zZWxlY3RvclxuICBzZWxlY3RvcjogJ1tMaWJzVWlDb21wb25lbnRzRHJhZ1Njcm9sbERpcmVjdGl2ZV0nLFxuICBzdGFuZGFsb25lOiB0cnVlLFxufSlcbmV4cG9ydCBjbGFzcyBMaWJzVWlDb21wb25lbnRzRHJhZ1Njcm9sbERpcmVjdGl2ZSBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQge1xuICAvLyAjcmVnaW9uIFBST1BFUlRZXG4gIHByaXZhdGUgc3RvcFNjcm9sbCA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XG4gIHByaXZhdGUgdmlydHVhbFNjcm9sbFBhZ2VJbmZvID0gc2lnbmFsPElQYWdlSW5mbyB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgcHJvdGVjdGVkIGludGVydmFsU2Nyb2xsVG9FbGVtZW50ID0gc2lnbmFsPG51bWJlciB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcblxuICAvLyAjcmVnaW9uIElOUFVUXG4gIHJlYWRvbmx5IGlnbm9yZUF1dG9TY3JvbGwgPSBpbnB1dDxib29sZWFuPigpO1xuICByZWFkb25seSB3aWR0aFpvbmVEZXRlY3QgPSBpbnB1dDxudW1iZXIsIG51bWJlciB8IHVuZGVmaW5lZD4oMTYsIHsgdHJhbnNmb3JtOiAodmFsdWUpID0+IHZhbHVlID8/IDE2IH0pO1xuICByZWFkb25seSBtb3ZlbWVudExlbmd0aCA9IGlucHV0PG51bWJlciwgbnVtYmVyIHwgdW5kZWZpbmVkPig2LCB7IHRyYW5zZm9ybTogKHZhbHVlKSA9PiB2YWx1ZSA/PyA2IH0pO1xuICByZWFkb25seSByb290RWxlbWVudFNjcm9sbCA9IGlucHV0PEhUTUxFbGVtZW50PigpO1xuICByZWFkb25seSB2aXJ0dWFsU2Nyb2xsZXJDb21wb25lbnQgPSBpbnB1dDxWaXJ0dWFsU2Nyb2xsZXJDb21wb25lbnQ+KCk7XG5cbiAgLy8gI3JlZ2lvbiBJTkpFQ1RcbiAgcHJvdGVjdGVkIGVsZW1lbnRSZWYgPSBpbmplY3QoRWxlbWVudFJlZik7XG4gIHByb3RlY3RlZCBkcmFnRHJvcFNlcnZpY2UgPSBpbmplY3QoTW9MaWJzU2hhcmVkRHJhZ0Ryb3BTZXJ2aWNlKTtcbiAgcHJvdGVjdGVkIGRlc3Ryb3lSZWYgPSBpbmplY3QoRGVzdHJveVJlZik7XG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmRyYWdEcm9wU2VydmljZS5PbkRyYWdnaW5nLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZikpLnN1YnNjcmliZSgoZXZlbnREcmFnZ2luZzogSURyYWdnaW5nKSA9PiB0aGlzLmNoZWNrQW5kU2Nyb2xsRWxlbWVudFRvUG9zaXRpb24oZXZlbnREcmFnZ2luZywgdGhpcy5pZ25vcmVBdXRvU2Nyb2xsKCkpKTtcbiAgICB0aGlzLmRyYWdEcm9wU2VydmljZS5PbkRyYWdFbmQucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIGNsZWFySW50ZXJ2YWwodGhpcy5pbnRlcnZhbFNjcm9sbFRvRWxlbWVudCgpKTtcbiAgICAgIGlmICh0aGlzLnZpcnR1YWxTY3JvbGxQYWdlSW5mbygpKSB7XG4gICAgICAgIGNvbnN0IGZpcnN0RWxlbWVudCA9IGdldDxhbnk+KHRoaXMudmlydHVhbFNjcm9sbGVyQ29tcG9uZW50KCksICdlbGVtZW50Jyk/Lm5hdGl2ZUVsZW1lbnQuZmlyc3RFbGVtZW50Q2hpbGQ7XG4gICAgICAgIGNvbnN0IGlzSG9yaXpvbnRhbCA9IGdldDxhbnk+KHRoaXMudmlydHVhbFNjcm9sbGVyQ29tcG9uZW50KCksICdfaG9yaXpvbnRhbCcpO1xuICAgICAgICBpZiAoaXNIb3Jpem9udGFsKSB7XG4gICAgICAgICAgZmlyc3RFbGVtZW50LnN0eWxlLnRyYW5zZm9ybSA9IGBzY2FsZVgoJHt0aGlzLnZpcnR1YWxTY3JvbGxQYWdlSW5mbygpPy5zY3JvbGxFbmRQb3NpdGlvbn0pYDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWlzSG9yaXpvbnRhbCkge1xuICAgICAgICAgIGZpcnN0RWxlbWVudC5zdHlsZS50cmFuc2Zvcm0gPSBgc2NhbGVZKCR7dGhpcy52aXJ0dWFsU2Nyb2xsUGFnZUluZm8oKT8uc2Nyb2xsRW5kUG9zaXRpb259KWA7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy52aXJ0dWFsU2Nyb2xsUGFnZUluZm8uc2V0KHVuZGVmaW5lZCk7XG4gICAgICB9XG4gICAgICB0aGlzLnN0b3BTY3JvbGwuc2V0KGZhbHNlKTtcbiAgICB9KTtcbiAgICB0aGlzLmRyYWdEcm9wU2VydmljZS5PbkRyYWdTdGFydC5waXBlKHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgaWYgKHRoaXMudmlydHVhbFNjcm9sbGVyQ29tcG9uZW50KSB7XG4gICAgICAgIHRoaXMudmlydHVhbFNjcm9sbGVyQ29tcG9uZW50KCk/LnNjcm9sbFRvSW5kZXgoMCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgaWYgKCF0aGlzLnZpcnR1YWxTY3JvbGxlckNvbXBvbmVudCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLnZpcnR1YWxTY3JvbGxlckNvbXBvbmVudCgpXG4gICAgICA/LnZzQ2hhbmdlLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZikpXG4gICAgICAuc3Vic2NyaWJlKChwYWdlSW5mbykgPT4ge1xuICAgICAgICBjb25zdCBpdGVtcyA9IGdldDxhbnk+KHRoaXMudmlydHVhbFNjcm9sbGVyQ29tcG9uZW50LCAnX2l0ZW1zJyk7XG5cbiAgICAgICAgaWYgKGl0ZW1zICYmIGl0ZW1zLmxlbmd0aCA9PT0gcGFnZUluZm8uZW5kSW5kZXgpIHtcbiAgICAgICAgICB0aGlzLnZpcnR1YWxTY3JvbGxQYWdlSW5mby5zZXQocGFnZUluZm8pO1xuICAgICAgICAgIGNvbnN0IGVsZW1lbnRTZXRTY3JvbGwgPSB0aGlzLnJvb3RFbGVtZW50U2Nyb2xsKCkgfHwgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgICAgY29uc3QgaXNIb3Jpem9udGFsID0gZ2V0PGFueT4odGhpcy52aXJ0dWFsU2Nyb2xsZXJDb21wb25lbnQsICdfaG9yaXpvbnRhbCcpO1xuXG4gICAgICAgICAgaWYgKGlzSG9yaXpvbnRhbCAmJiBwYWdlSW5mby5zY3JvbGxFbmRQb3NpdGlvbiA8IGVsZW1lbnRTZXRTY3JvbGwub2Zmc2V0V2lkdGggKyBlbGVtZW50U2V0U2Nyb2xsLnNjcm9sbExlZnQgKyAzKSB7XG4gICAgICAgICAgICB0aGlzLnN0b3BTY3JvbGwuc2V0KHRydWUpO1xuICAgICAgICAgICAgY2xlYXJJbnRlcnZhbCh0aGlzLmludGVydmFsU2Nyb2xsVG9FbGVtZW50KCkpO1xuXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKCFpc0hvcml6b250YWwgJiYgcGFnZUluZm8uc2Nyb2xsRW5kUG9zaXRpb24gPCBlbGVtZW50U2V0U2Nyb2xsLm9mZnNldEhlaWdodCArIGVsZW1lbnRTZXRTY3JvbGwuc2Nyb2xsVG9wICsgMykge1xuICAgICAgICAgICAgdGhpcy5zdG9wU2Nyb2xsLnNldCh0cnVlKTtcbiAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwodGhpcy5pbnRlcnZhbFNjcm9sbFRvRWxlbWVudCgpKTtcblxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLnN0b3BTY3JvbGwuc2V0KGZhbHNlKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgLyogRlVOQ1RJT05TICovXG4gIHByb3RlY3RlZCBjaGVja0FuZFNjcm9sbEVsZW1lbnRUb1Bvc2l0aW9uKGV2ZW50RHJhZ2dpbmc6IElEcmFnZ2luZywgaWdub3JlQXV0b1Njcm9sbD86IGJvb2xlYW4pIHtcbiAgICBsZXQgZWxlbWVudFNldFNjcm9sbCA9IHRoaXMucm9vdEVsZW1lbnRTY3JvbGwoKSB8fCB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtcblxuICAgIGlmIChpZ25vcmVBdXRvU2Nyb2xsIHx8ICFjaGVja01vdXNlT3ZlckluQ29udGFpbmVyKGV2ZW50RHJhZ2dpbmcubW91c2VQb3NpdGlvbiwgZWxlbWVudFNldFNjcm9sbCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgcmVjdEVsZW1lbnQgPSBjbG9uZUlCb3VuZGluZ0NsaWVudFJlY3QodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkpO1xuXG4gICAgaWYgKHRoaXMucm9vdEVsZW1lbnRTY3JvbGwoKSkge1xuICAgICAgY29uc3QgcmVjdEVsZW1lbnRTY3JvbGwgPSB0aGlzLnJvb3RFbGVtZW50U2Nyb2xsKCk/LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpIGFzIElCb3VuZGluZ0NsaWVudFJlY3Q7XG5cbiAgICAgIHJlY3RFbGVtZW50LmxlZnQgPSByZWN0RWxlbWVudFNjcm9sbC5sZWZ0O1xuICAgICAgcmVjdEVsZW1lbnQudG9wID0gcmVjdEVsZW1lbnRTY3JvbGwudG9wO1xuICAgIH1cblxuICAgIGNvbnN0IHsgd2lkdGgsIGhlaWdodCwgdG9wLCBsZWZ0IH0gPSByZWN0RWxlbWVudDtcbiAgICBjb25zdCB7IGNsaWVudFgsIGNsaWVudFkgfSA9IGV2ZW50RHJhZ2dpbmcubW91c2VQb3NpdGlvbjtcbiAgICBjb25zdCBsaW1pdExlZnQgPSBsZWZ0ICsgZWxlbWVudFNldFNjcm9sbC5vZmZzZXRXaWR0aDtcbiAgICBjb25zdCBsaW1pdFRvcCA9IHRvcCArIGVsZW1lbnRTZXRTY3JvbGwub2Zmc2V0SGVpZ2h0O1xuXG4gICAgY2xlYXJJbnRlcnZhbCh0aGlzLmludGVydmFsU2Nyb2xsVG9FbGVtZW50KCkpO1xuICAgIGlmICgoY2xpZW50WCA8IGxlZnQgfHwgY2xpZW50WCA+IGxlZnQgKyB3aWR0aCkgJiYgKGNsaWVudFkgPCB0b3AgfHwgY2xpZW50WSA+IHRvcCArIGhlaWdodCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmludGVydmFsU2Nyb2xsVG9FbGVtZW50LnNldChcbiAgICAgIHNldEludGVydmFsKCgpID0+IHtcbiAgICAgICAgZWxlbWVudFNldFNjcm9sbCA9IHRoaXMucm9vdEVsZW1lbnRTY3JvbGwoKSB8fCB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtcbiAgICAgICAgbGV0IGRpcmVjdGlvblRvcCA9IDA7XG4gICAgICAgIGxldCBkaXJlY3Rpb25MZWZ0ID0gMDtcblxuICAgICAgICBpZiAodG9wIDw9IGNsaWVudFkgJiYgY2xpZW50WSA8PSB0b3AgKyB0aGlzLndpZHRoWm9uZURldGVjdCgpKSB7XG4gICAgICAgICAgZWxlbWVudFNldFNjcm9sbC5zY3JvbGxUb3AgLT0gdGhpcy5tb3ZlbWVudExlbmd0aCgpO1xuICAgICAgICAgIGRpcmVjdGlvblRvcCA9IC0xO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGxpbWl0VG9wIC0gdGhpcy53aWR0aFpvbmVEZXRlY3QoKSA8PSBjbGllbnRZICYmIGNsaWVudFkgPD0gbGltaXRUb3ApIHtcbiAgICAgICAgICBpZiAodGhpcy5zdG9wU2Nyb2xsKCkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgICAgZWxlbWVudFNldFNjcm9sbC5zY3JvbGxUb3AgKz0gdGhpcy5tb3ZlbWVudExlbmd0aCgpO1xuICAgICAgICAgIGRpcmVjdGlvblRvcCA9IDE7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAobGltaXRMZWZ0IC0gdGhpcy53aWR0aFpvbmVEZXRlY3QoKSA8PSBjbGllbnRYICYmIGNsaWVudFggPD0gbGltaXRMZWZ0KSB7XG4gICAgICAgICAgaWYgKHRoaXMuc3RvcFNjcm9sbCgpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICAgIGVsZW1lbnRTZXRTY3JvbGwuc2Nyb2xsTGVmdCArPSB0aGlzLm1vdmVtZW50TGVuZ3RoKCk7XG4gICAgICAgICAgZGlyZWN0aW9uTGVmdCA9ICsxO1xuICAgICAgICB9XG4gICAgICAgIGlmIChsZWZ0IDw9IGNsaWVudFggJiYgY2xpZW50WCA8PSBsZWZ0ICsgdGhpcy53aWR0aFpvbmVEZXRlY3QoKSkge1xuICAgICAgICAgIGVsZW1lbnRTZXRTY3JvbGwuc2Nyb2xsTGVmdCAtPSB0aGlzLm1vdmVtZW50TGVuZ3RoKCk7XG4gICAgICAgICAgZGlyZWN0aW9uTGVmdCA9IC0xO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGVsZW1lbnRTZXRTY3JvbGwuc2Nyb2xsTGVmdCAmJiBlbGVtZW50U2V0U2Nyb2xsLnNjcm9sbExlZnQgKyBlbGVtZW50U2V0U2Nyb2xsLm9mZnNldFdpZHRoID49IGVsZW1lbnRTZXRTY3JvbGwuc2Nyb2xsV2lkdGgpIHtcbiAgICAgICAgICBlbGVtZW50U2V0U2Nyb2xsLnNjcm9sbExlZnQgLT0gZWxlbWVudFNldFNjcm9sbC5zY3JvbGxMZWZ0ICsgZWxlbWVudFNldFNjcm9sbC5vZmZzZXRXaWR0aCAtIGVsZW1lbnRTZXRTY3JvbGwuc2Nyb2xsV2lkdGg7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZWxlbWVudFNldFNjcm9sbC5zY3JvbGxUb3AgJiYgZWxlbWVudFNldFNjcm9sbC5zY3JvbGxUb3AgKyBlbGVtZW50U2V0U2Nyb2xsLm9mZnNldEhlaWdodCA+PSBlbGVtZW50U2V0U2Nyb2xsLnNjcm9sbEhlaWdodCkge1xuICAgICAgICAgIGVsZW1lbnRTZXRTY3JvbGwuc2Nyb2xsVG9wIC09IGVsZW1lbnRTZXRTY3JvbGwuc2Nyb2xsVG9wICsgZWxlbWVudFNldFNjcm9sbC5vZmZzZXRIZWlnaHQgLSBlbGVtZW50U2V0U2Nyb2xsLnNjcm9sbEhlaWdodDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChcbiAgICAgICAgICAoZGlyZWN0aW9uVG9wIDwgMCAmJiAhZWxlbWVudFNldFNjcm9sbC5zY3JvbGxUb3ApIHx8XG4gICAgICAgICAgKCFlbGVtZW50U2V0U2Nyb2xsLnNjcm9sbExlZnQgJiYgZGlyZWN0aW9uTGVmdCA8IDApIHx8XG4gICAgICAgICAgKGRpcmVjdGlvblRvcCAmJiBlbGVtZW50U2V0U2Nyb2xsLnNjcm9sbEhlaWdodCA8PSBlbGVtZW50U2V0U2Nyb2xsLnNjcm9sbFRvcCArIGVsZW1lbnRTZXRTY3JvbGwub2Zmc2V0SGVpZ2h0ICsgMykgfHxcbiAgICAgICAgICAoZGlyZWN0aW9uTGVmdCAmJiBlbGVtZW50U2V0U2Nyb2xsLnNjcm9sbFdpZHRoIDw9IGVsZW1lbnRTZXRTY3JvbGwuc2Nyb2xsTGVmdCArIGVsZW1lbnRTZXRTY3JvbGwub2Zmc2V0V2lkdGggKyAzKVxuICAgICAgICApIHtcbiAgICAgICAgICByZXR1cm4gY2xlYXJJbnRlcnZhbCh0aGlzLmludGVydmFsU2Nyb2xsVG9FbGVtZW50KCkpO1xuICAgICAgICB9XG4gICAgICB9LCAxMClcbiAgICApO1xuICB9XG59XG4iXX0=
142
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhZy1zY3JvbGwuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy11aS9jb21wb25lbnRzL2RyYWctZHJvcC9zcmMvZHJhZy1zY3JvbGwuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHVEQUF1RDtBQUN2RCxPQUFPLEVBQWlCLFVBQVUsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3hHLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBR2hFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSx3QkFBd0IsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMxRixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzFELE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLHFCQUFxQixDQUFDOztBQU9sRSxNQUFNLE9BQU8sbUNBQW1DO0lBQzlDLG1CQUFtQjtJQUNGLFVBQVUsR0FBRyxNQUFNLENBQVUsS0FBSyxDQUFDLENBQUM7SUFDcEMscUJBQXFCLEdBQUcsTUFBTSxDQUF3QixTQUFTLENBQUMsQ0FBQztJQUN4RSx1QkFBdUIsR0FBRyxNQUFNLENBQXFCLFNBQVMsQ0FBQyxDQUFDO0lBRTFFLGdCQUFnQjtJQUNQLGdCQUFnQixHQUFHLEtBQUssRUFBVyxDQUFDO0lBQ3BDLGVBQWUsR0FBRyxLQUFLLENBQTZCLEVBQUUsRUFBRSxFQUFFLFNBQVMsRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDL0YsY0FBYyxHQUFHLEtBQUssQ0FBNkIsQ0FBQyxFQUFFLEVBQUUsU0FBUyxFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLElBQUksQ0FBQyxFQUFF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VSxtQ0FBbUM7NEZBQW5DLG1DQUFtQzs7NEZBQW5DLG1DQUFtQztrQkFML0MsU0FBUzttQkFBQztvQkFDVCw4REFBOEQ7b0JBQzlELFFBQVEsRUFBRSx1Q0FBdUM7b0JBQ2pELFVBQVUsRUFBRSxJQUFJO2lCQUNqQiIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cbmltcG9ydCB7IEFmdGVyVmlld0luaXQsIERlc3Ryb3lSZWYsIERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgaW5qZWN0LCBpbnB1dCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBJUGFnZUluZm8sIFZpcnR1YWxTY3JvbGxlckNvbXBvbmVudCB9IGZyb20gJ0BpaGFyYmVjay9uZ3gtdmlydHVhbC1zY3JvbGxlcic7XG5pbXBvcnQgeyBJQm91bmRpbmdDbGllbnRSZWN0IH0gZnJvbSAnQGxpYnMtdWkvaW50ZXJmYWNlcy10eXBlcyc7XG5pbXBvcnQgeyBjaGVja01vdXNlT3ZlckluQ29udGFpbmVyLCBjbG9uZUlCb3VuZGluZ0NsaWVudFJlY3QsIGdldCB9IGZyb20gJ0BsaWJzLXVpL3V0aWxzJztcbmltcG9ydCB7IGFuaW1hdGlvbkZyYW1lU2NoZWR1bGVyLCBhdWRpdFRpbWUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IE1vTGlic1NoYXJlZERyYWdEcm9wU2VydmljZSB9IGZyb20gJy4vZHJhZy1kcm9wLnNlcnZpY2UnO1xuaW1wb3J0IHsgSURyYWdnaW5nIH0gZnJvbSAnLi9pbnRlcmZhY2VzL2V2ZW50LmludGVyZmFjZSc7XG5ARGlyZWN0aXZlKHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9kaXJlY3RpdmUtc2VsZWN0b3JcbiAgc2VsZWN0b3I6ICdbTGlic1VpQ29tcG9uZW50c0RyYWdTY3JvbGxEaXJlY3RpdmVdJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgTGlic1VpQ29tcG9uZW50c0RyYWdTY3JvbGxEaXJlY3RpdmUgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0IHtcbiAgLy8gI3JlZ2lvbiBQUk9QRVJUWVxuICBwcml2YXRlIHJlYWRvbmx5IHN0b3BTY3JvbGwgPSBzaWduYWw8Ym9vbGVhbj4oZmFsc2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IHZpcnR1YWxTY3JvbGxQYWdlSW5mbyA9IHNpZ25hbDxJUGFnZUluZm8gfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIHByb3RlY3RlZCBpbnRlcnZhbFNjcm9sbFRvRWxlbWVudCA9IHNpZ25hbDxudW1iZXIgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG5cbiAgLy8gI3JlZ2lvbiBJTlBVVFxuICByZWFkb25seSBpZ25vcmVBdXRvU2Nyb2xsID0gaW5wdXQ8Ym9vbGVhbj4oKTtcbiAgcmVhZG9ubHkgd2lkdGhab25lRGV0ZWN0ID0gaW5wdXQ8bnVtYmVyLCBudW1iZXIgfCB1bmRlZmluZWQ+KDE2LCB7IHRyYW5zZm9ybTogKHZhbHVlKSA9PiB2YWx1ZSA/PyAxNiB9KTtcbiAgcmVhZG9ubHkgbW92ZW1lbnRMZW5ndGggPSBpbnB1dDxudW1iZXIsIG51bWJlciB8IHVuZGVmaW5lZD4oNiwgeyB0cmFuc2Zvcm06ICh2YWx1ZSkgPT4gdmFsdWUgPz8gNiB9KTtcbiAgcmVhZG9ubHkgcm9vdEVsZW1lbnRTY3JvbGwgPSBpbnB1dDxIVE1MRWxlbWVudD4oKTtcbiAgcmVhZG9ubHkgdmlydHVhbFNjcm9sbGVyQ29tcG9uZW50ID0gaW5wdXQ8VmlydHVhbFNjcm9sbGVyQ29tcG9uZW50PigpO1xuXG4gIC8vICNyZWdpb24gSU5KRUNUXG4gIHByb3RlY3RlZCBlbGVtZW50UmVmID0gaW5qZWN0KEVsZW1lbnRSZWYpO1xuICBwcm90ZWN0ZWQgZHJhZ0Ryb3BTZXJ2aWNlID0gaW5qZWN0KE1vTGlic1NoYXJlZERyYWdEcm9wU2VydmljZSk7XG4gIHByb3RlY3RlZCBkZXN0cm95UmVmID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgLy8gYXVkaXRUaW1lKHJBRik6IGJhdGNoIGPDuW5nIHJBRiB24bubaSBkcmFnLWl0ZW0gc3Vic2NyaXB0aW9ucyDihpIga2jDtG5nIHThuqFvIHRow6ptIGxheW91dCBmbHVzaCByacOqbmdcbiAgICB0aGlzLmRyYWdEcm9wU2VydmljZS5PbkRyYWdnaW5nLnBpcGUoYXVkaXRUaW1lKDAsIGFuaW1hdGlvbkZyYW1lU2NoZWR1bGVyKSwgdGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZikpLnN1YnNjcmliZSgoZXZlbnREcmFnZ2luZzogSURyYWdnaW5nKSA9PiB0aGlzLmNoZWNrQW5kU2Nyb2xsRWxlbWVudFRvUG9zaXRpb24oZXZlbnREcmFnZ2luZywgdGhpcy5pZ25vcmVBdXRvU2Nyb2xsKCkpKTtcbiAgICB0aGlzLmRyYWdEcm9wU2VydmljZS5PbkRyYWdFbmQucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIGNsZWFySW50ZXJ2YWwodGhpcy5pbnRlcnZhbFNjcm9sbFRvRWxlbWVudCgpKTtcbiAgICAgIGlmICh0aGlzLnZpcnR1YWxTY3JvbGxQYWdlSW5mbygpKSB7XG4gICAgICAgIGNvbnN0IGZpcnN0RWxlbWVudCA9IGdldDxhbnk+KHRoaXMudmlydHVhbFNjcm9sbGVyQ29tcG9uZW50KCksICdlbGVtZW50Jyk/Lm5hdGl2ZUVsZW1lbnQuZmlyc3RFbGVtZW50Q2hpbGQ7XG4gICAgICAgIGNvbnN0IGlzSG9yaXpvbnRhbCA9IGdldDxhbnk+KHRoaXMudmlydHVhbFNjcm9sbGVyQ29tcG9uZW50KCksICdfaG9yaXpvbnRhbCcpO1xuICAgICAgICBpZiAoaXNIb3Jpem9udGFsKSB7XG4gICAgICAgICAgZmlyc3RFbGVtZW50LnN0eWxlLnRyYW5zZm9ybSA9IGBzY2FsZVgoJHt0aGlzLnZpcnR1YWxTY3JvbGxQYWdlSW5mbygpPy5zY3JvbGxFbmRQb3NpdGlvbn0pYDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWlzSG9yaXpvbnRhbCkge1xuICAgICAgICAgIGZpcnN0RWxlbWVudC5zdHlsZS50cmFuc2Zvcm0gPSBgc2NhbGVZKCR7dGhpcy52aXJ0dWFsU2Nyb2xsUGFnZUluZm8oKT8uc2Nyb2xsRW5kUG9zaXRpb259KWA7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy52aXJ0dWFsU2Nyb2xsUGFnZUluZm8uc2V0KHVuZGVmaW5lZCk7XG4gICAgICB9XG4gICAgICB0aGlzLnN0b3BTY3JvbGwuc2V0KGZhbHNlKTtcbiAgICB9KTtcbiAgICB0aGlzLmRyYWdEcm9wU2VydmljZS5PbkRyYWdTdGFydC5waXBlKHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgaWYgKHRoaXMudmlydHVhbFNjcm9sbGVyQ29tcG9uZW50KSB7XG4gICAgICAgIHRoaXMudmlydHVhbFNjcm9sbGVyQ29tcG9uZW50KCk/LnNjcm9sbFRvSW5kZXgoMCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgaWYgKCF0aGlzLnZpcnR1YWxTY3JvbGxlckNvbXBvbmVudCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLnZpcnR1YWxTY3JvbGxlckNvbXBvbmVudCgpXG4gICAgICA/LnZzQ2hhbmdlLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZikpXG4gICAgICAuc3Vic2NyaWJlKChwYWdlSW5mbykgPT4ge1xuICAgICAgICBjb25zdCBpdGVtcyA9IGdldDxhbnk+KHRoaXMudmlydHVhbFNjcm9sbGVyQ29tcG9uZW50LCAnX2l0ZW1zJyk7XG5cbiAgICAgICAgaWYgKGl0ZW1zICYmIGl0ZW1zLmxlbmd0aCA9PT0gcGFnZUluZm8uZW5kSW5kZXgpIHtcbiAgICAgICAgICB0aGlzLnZpcnR1YWxTY3JvbGxQYWdlSW5mby5zZXQocGFnZUluZm8pO1xuICAgICAgICAgIGNvbnN0IGVsZW1lbnRTZXRTY3JvbGwgPSB0aGlzLnJvb3RFbGVtZW50U2Nyb2xsKCkgfHwgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgICAgY29uc3QgaXNIb3Jpem9udGFsID0gZ2V0PGFueT4odGhpcy52aXJ0dWFsU2Nyb2xsZXJDb21wb25lbnQsICdfaG9yaXpvbnRhbCcpO1xuXG4gICAgICAgICAgaWYgKGlzSG9yaXpvbnRhbCAmJiBwYWdlSW5mby5zY3JvbGxFbmRQb3NpdGlvbiA8IGVsZW1lbnRTZXRTY3JvbGwub2Zmc2V0V2lkdGggKyBlbGVtZW50U2V0U2Nyb2xsLnNjcm9sbExlZnQgKyAzKSB7XG4gICAgICAgICAgICB0aGlzLnN0b3BTY3JvbGwuc2V0KHRydWUpO1xuICAgICAgICAgICAgY2xlYXJJbnRlcnZhbCh0aGlzLmludGVydmFsU2Nyb2xsVG9FbGVtZW50KCkpO1xuXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKCFpc0hvcml6b250YWwgJiYgcGFnZUluZm8uc2Nyb2xsRW5kUG9zaXRpb24gPCBlbGVtZW50U2V0U2Nyb2xsLm9mZnNldEhlaWdodCArIGVsZW1lbnRTZXRTY3JvbGwuc2Nyb2xsVG9wICsgMykge1xuICAgICAgICAgICAgdGhpcy5zdG9wU2Nyb2xsLnNldCh0cnVlKTtcbiAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwodGhpcy5pbnRlcnZhbFNjcm9sbFRvRWxlbWVudCgpKTtcblxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLnN0b3BTY3JvbGwuc2V0KGZhbHNlKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgLyogRlVOQ1RJT05TICovXG4gIHByb3RlY3RlZCBjaGVja0FuZFNjcm9sbEVsZW1lbnRUb1Bvc2l0aW9uKGV2ZW50RHJhZ2dpbmc6IElEcmFnZ2luZywgaWdub3JlQXV0b1Njcm9sbD86IGJvb2xlYW4pIHtcbiAgICBsZXQgZWxlbWVudFNldFNjcm9sbCA9IHRoaXMucm9vdEVsZW1lbnRTY3JvbGwoKSB8fCB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtcblxuICAgIGlmIChpZ25vcmVBdXRvU2Nyb2xsIHx8ICFjaGVja01vdXNlT3ZlckluQ29udGFpbmVyKGV2ZW50RHJhZ2dpbmcubW91c2VQb3NpdGlvbiwgZWxlbWVudFNldFNjcm9sbCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgcmVjdEVsZW1lbnQgPSBjbG9uZUlCb3VuZGluZ0NsaWVudFJlY3QodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkpO1xuXG4gICAgaWYgKHRoaXMucm9vdEVsZW1lbnRTY3JvbGwoKSkge1xuICAgICAgY29uc3QgcmVjdEVsZW1lbnRTY3JvbGwgPSB0aGlzLnJvb3RFbGVtZW50U2Nyb2xsKCk/LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpIGFzIElCb3VuZGluZ0NsaWVudFJlY3Q7XG5cbiAgICAgIHJlY3RFbGVtZW50LmxlZnQgPSByZWN0RWxlbWVudFNjcm9sbC5sZWZ0O1xuICAgICAgcmVjdEVsZW1lbnQudG9wID0gcmVjdEVsZW1lbnRTY3JvbGwudG9wO1xuICAgIH1cblxuICAgIGNvbnN0IHsgd2lkdGgsIGhlaWdodCwgdG9wLCBsZWZ0IH0gPSByZWN0RWxlbWVudDtcbiAgICBjb25zdCB7IGNsaWVudFgsIGNsaWVudFkgfSA9IGV2ZW50RHJhZ2dpbmcubW91c2VQb3NpdGlvbjtcbiAgICBjb25zdCBsaW1pdExlZnQgPSBsZWZ0ICsgZWxlbWVudFNldFNjcm9sbC5vZmZzZXRXaWR0aDtcbiAgICBjb25zdCBsaW1pdFRvcCA9IHRvcCArIGVsZW1lbnRTZXRTY3JvbGwub2Zmc2V0SGVpZ2h0O1xuXG4gICAgY2xlYXJJbnRlcnZhbCh0aGlzLmludGVydmFsU2Nyb2xsVG9FbGVtZW50KCkpO1xuICAgIGlmICgoY2xpZW50WCA8IGxlZnQgfHwgY2xpZW50WCA+IGxlZnQgKyB3aWR0aCkgJiYgKGNsaWVudFkgPCB0b3AgfHwgY2xpZW50WSA+IHRvcCArIGhlaWdodCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmludGVydmFsU2Nyb2xsVG9FbGVtZW50LnNldChcbiAgICAgIHNldEludGVydmFsKCgpID0+IHtcbiAgICAgICAgZWxlbWVudFNldFNjcm9sbCA9IHRoaXMucm9vdEVsZW1lbnRTY3JvbGwoKSB8fCB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtcbiAgICAgICAgbGV0IGRpcmVjdGlvblRvcCA9IDA7XG4gICAgICAgIGxldCBkaXJlY3Rpb25MZWZ0ID0gMDtcblxuICAgICAgICBpZiAodG9wIDw9IGNsaWVudFkgJiYgY2xpZW50WSA8PSB0b3AgKyB0aGlzLndpZHRoWm9uZURldGVjdCgpKSB7XG4gICAgICAgICAgZWxlbWVudFNldFNjcm9sbC5zY3JvbGxUb3AgLT0gdGhpcy5tb3ZlbWVudExlbmd0aCgpO1xuICAgICAgICAgIGRpcmVjdGlvblRvcCA9IC0xO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGxpbWl0VG9wIC0gdGhpcy53aWR0aFpvbmVEZXRlY3QoKSA8PSBjbGllbnRZICYmIGNsaWVudFkgPD0gbGltaXRUb3ApIHtcbiAgICAgICAgICBpZiAodGhpcy5zdG9wU2Nyb2xsKCkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgICAgZWxlbWVudFNldFNjcm9sbC5zY3JvbGxUb3AgKz0gdGhpcy5tb3ZlbWVudExlbmd0aCgpO1xuICAgICAgICAgIGRpcmVjdGlvblRvcCA9IDE7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAobGltaXRMZWZ0IC0gdGhpcy53aWR0aFpvbmVEZXRlY3QoKSA8PSBjbGllbnRYICYmIGNsaWVudFggPD0gbGltaXRMZWZ0KSB7XG4gICAgICAgICAgaWYgKHRoaXMuc3RvcFNjcm9sbCgpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICAgIGVsZW1lbnRTZXRTY3JvbGwuc2Nyb2xsTGVmdCArPSB0aGlzLm1vdmVtZW50TGVuZ3RoKCk7XG4gICAgICAgICAgZGlyZWN0aW9uTGVmdCA9ICsxO1xuICAgICAgICB9XG4gICAgICAgIGlmIChsZWZ0IDw9IGNsaWVudFggJiYgY2xpZW50WCA8PSBsZWZ0ICsgdGhpcy53aWR0aFpvbmVEZXRlY3QoKSkge1xuICAgICAgICAgIGVsZW1lbnRTZXRTY3JvbGwuc2Nyb2xsTGVmdCAtPSB0aGlzLm1vdmVtZW50TGVuZ3RoKCk7XG4gICAgICAgICAgZGlyZWN0aW9uTGVmdCA9IC0xO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGVsZW1lbnRTZXRTY3JvbGwuc2Nyb2xsTGVmdCAmJiBlbGVtZW50U2V0U2Nyb2xsLnNjcm9sbExlZnQgKyBlbGVtZW50U2V0U2Nyb2xsLm9mZnNldFdpZHRoID49IGVsZW1lbnRTZXRTY3JvbGwuc2Nyb2xsV2lkdGgpIHtcbiAgICAgICAgICBlbGVtZW50U2V0U2Nyb2xsLnNjcm9sbExlZnQgLT0gZWxlbWVudFNldFNjcm9sbC5zY3JvbGxMZWZ0ICsgZWxlbWVudFNldFNjcm9sbC5vZmZzZXRXaWR0aCAtIGVsZW1lbnRTZXRTY3JvbGwuc2Nyb2xsV2lkdGg7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZWxlbWVudFNldFNjcm9sbC5zY3JvbGxUb3AgJiYgZWxlbWVudFNldFNjcm9sbC5zY3JvbGxUb3AgKyBlbGVtZW50U2V0U2Nyb2xsLm9mZnNldEhlaWdodCA+PSBlbGVtZW50U2V0U2Nyb2xsLnNjcm9sbEhlaWdodCkge1xuICAgICAgICAgIGVsZW1lbnRTZXRTY3JvbGwuc2Nyb2xsVG9wIC09IGVsZW1lbnRTZXRTY3JvbGwuc2Nyb2xsVG9wICsgZWxlbWVudFNldFNjcm9sbC5vZmZzZXRIZWlnaHQgLSBlbGVtZW50U2V0U2Nyb2xsLnNjcm9sbEhlaWdodDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChcbiAgICAgICAgICAoZGlyZWN0aW9uVG9wIDwgMCAmJiAhZWxlbWVudFNldFNjcm9sbC5zY3JvbGxUb3ApIHx8XG4gICAgICAgICAgKCFlbGVtZW50U2V0U2Nyb2xsLnNjcm9sbExlZnQgJiYgZGlyZWN0aW9uTGVmdCA8IDApIHx8XG4gICAgICAgICAgKGRpcmVjdGlvblRvcCAmJiBlbGVtZW50U2V0U2Nyb2xsLnNjcm9sbEhlaWdodCA8PSBlbGVtZW50U2V0U2Nyb2xsLnNjcm9sbFRvcCArIGVsZW1lbnRTZXRTY3JvbGwub2Zmc2V0SGVpZ2h0ICsgMykgfHxcbiAgICAgICAgICAoZGlyZWN0aW9uTGVmdCAmJiBlbGVtZW50U2V0U2Nyb2xsLnNjcm9sbFdpZHRoIDw9IGVsZW1lbnRTZXRTY3JvbGwuc2Nyb2xsTGVmdCArIGVsZW1lbnRTZXRTY3JvbGwub2Zmc2V0V2lkdGggKyAzKVxuICAgICAgICApIHtcbiAgICAgICAgICByZXR1cm4gY2xlYXJJbnRlcnZhbCh0aGlzLmludGVydmFsU2Nyb2xsVG9FbGVtZW50KCkpO1xuICAgICAgICB9XG4gICAgICB9LCAxMClcbiAgICApO1xuICB9XG59XG4iXX0=
package/esm2022/index.mjs CHANGED
@@ -3,5 +3,4 @@ export * from './drag-item.directive';
3
3
  export * from './drag-scroll.directive';
4
4
  export * from './interfaces/event.interface';
5
5
  export * from './drag-item-in-container-virtual-scroll.directive';
6
- export * from './demo/demo.component';
7
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzLXVpL2NvbXBvbmVudHMvZHJhZy1kcm9wL3NyYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLDhCQUE4QixDQUFDO0FBQzdDLGNBQWMsbURBQW1ELENBQUM7QUFDbEUsY0FBYyx1QkFBdUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vZHJhZy1kcm9wLmRpcmVjdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL2RyYWctaXRlbS5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi9kcmFnLXNjcm9sbC5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi9pbnRlcmZhY2VzL2V2ZW50LmludGVyZmFjZSc7XG5leHBvcnQgKiBmcm9tICcuL2RyYWctaXRlbS1pbi1jb250YWluZXItdmlydHVhbC1zY3JvbGwuZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vZGVtby9kZW1vLmNvbXBvbmVudCc7XG4iXX0=
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzLXVpL2NvbXBvbmVudHMvZHJhZy1kcm9wL3NyYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLDhCQUE4QixDQUFDO0FBQzdDLGNBQWMsbURBQW1ELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2RyYWctZHJvcC5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi9kcmFnLWl0ZW0uZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vZHJhZy1zY3JvbGwuZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vaW50ZXJmYWNlcy9ldmVudC5pbnRlcmZhY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9kcmFnLWl0ZW0taW4tY29udGFpbmVyLXZpcnR1YWwtc2Nyb2xsLmRpcmVjdGl2ZSc7XG4iXX0=