@libs-ui/components-popover 0.2.127 → 0.2.128
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.
|
@@ -18,11 +18,11 @@ export class LibsUiComponentsPopoverOverlayComponent {
|
|
|
18
18
|
directions = signal(new Map());
|
|
19
19
|
timeout = signal(0);
|
|
20
20
|
onDestroy = new Subject();
|
|
21
|
-
|
|
21
|
+
// #region OUTPUT
|
|
22
22
|
outEvent = new Subject();
|
|
23
23
|
/* VIEW CHILD */
|
|
24
24
|
container = viewChild.required('container');
|
|
25
|
-
|
|
25
|
+
// #region INJECT
|
|
26
26
|
elementRef = inject(ElementRef);
|
|
27
27
|
constructor() {
|
|
28
28
|
this.directions().set('bottom', ['bottom', 'top', 'right', 'left']);
|
|
@@ -30,7 +30,7 @@ export class LibsUiComponentsPopoverOverlayComponent {
|
|
|
30
30
|
this.directions().set('left', ['left', 'right', 'bottom', 'top']);
|
|
31
31
|
this.directions().set('top', ['top', 'bottom', 'right', 'left']);
|
|
32
32
|
}
|
|
33
|
-
|
|
33
|
+
// #region FUNCTIONS
|
|
34
34
|
get ElementRef() {
|
|
35
35
|
return this.elementRef;
|
|
36
36
|
}
|
|
@@ -290,4 +290,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
290
290
|
type: Component,
|
|
291
291
|
args: [{ selector: 'libs_ui-components-popover-overlay', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [TranslateModule, NgStyle, AsyncPipe, LibsUiComponentsScrollOverlayDirective, NgTemplateOutlet], template: "<div #container\n class=\"libs-ui-popover-overlay {{ config().classInclude || '' }}\"\n [class.libs-ui-popover-overlay-white-theme]=\"config().whiteTheme\"\n [class.libs-ui-popover-overlay-animation-move]=\"config().animationConfig\"\n [ngStyle]=\"config().ngStyles || {}\"\n [style.width]=\"config().width ? config().width + 'px' : 'auto'\"\n [style.maxWidth.px]=\"config().maxWidth\"\n [style.maxHeight.px]=\"config().maxHeight\"\n [style.top.px]=\"top()\"\n [style.left.px]=\"left()\"\n [style.zIndex]=\"config().zIndex || 10\">\n @if (config()) {\n @if (!config().ignoreArrow) {\n <div class='relative'>\n <svg\n [class]=\"'libs-ui-popover-overlay-arrow '+ arrowClass() + ( config().whiteTheme ? ' libs-ui-popover-overlay-white-theme ' : '')\"\n [style.top.px]=\"arrowTop()\"\n [style.left.px]=\"arrowLeft()\"\n [attr.direction]='outEvent | async'>\n <polygon points=\"0,0 6,6 12,0\" />\n Sorry, your browser does not support inline SVG.\n </svg>\n </div>\n }\n @if (config().template; as templateConfig) {\n <div LibsUiComponentsScrollOverlayDirective\n class=\"libs-ui-popover-overlay-body {{ config().classIncludeOverlayBody || '' }}\"\n [attr.isTemplate]=\"true\"\n [style.max-height]=\"(config().maxHeight)+'px'\">\n <ng-container *ngTemplateOutlet=\"templateConfig;context:{itemContext:config().itemContext}\" />\n </div>\n } @else {\n <div class=\"libs-ui-popover-overlay-body libs-ui-font-h7r {{ config().classIncludeOverlayBody || '' }}\"\n LibsUiComponentsScrollOverlayDirective\n [options]=\"config().scrollOverlayOptions\"\n [style.maxHeight.px]=\"config().maxHeight\"\n [style.paddingTop.px]=\"config().paddingTop ?? 8\"\n [style.paddingRight.px]=\"config().paddingRight ?? 8\"\n [style.paddingLeft.px]=\"config().paddingLeft ?? 8\"\n [style.paddingBottom.px]=\"config().paddingBottom ?? 8\"\n [innerHtml]=\"(config().content || ' ') | translate\">\n </div>\n }\n }\n\n</div>\n", styles: ["@-webkit-keyframes animation-move{0%{transform:translateY(var(--libs-ui-popover-overlay-time-animation-distance))}to{transform:translateY(0)}}@keyframes animation-move{0%{transform:translateY(var(--libs-ui-popover-overlay-time-animation-distance))}to{transform:translateY(0)}}.libs-ui-popover-overlay{position:fixed;background-color:#071631;border-radius:8px;z-index:1000;top:-10000px;left:-10000px}.libs-ui-popover-overlay-animation-move{animation:animation-move ease var(--libs-ui-popover-overlay-time-animation-time)}.libs-ui-popover-overlay .libs-ui-popover-overlay-arrow{position:absolute;width:12px;height:6px;fill:#071631}.libs-ui-popover-overlay .libs-ui-popover-overlay-arrow[direction=bottom]{transform:rotate(180deg)}.libs-ui-popover-overlay .libs-ui-popover-overlay-arrow[direction=left]{transform:rotate(270deg)}.libs-ui-popover-overlay .libs-ui-popover-overlay-arrow[direction=right]{transform:rotate(90deg)}.libs-ui-popover-overlay .libs-ui-popover-overlay-white-theme{fill:#fff}.libs-ui-popover-overlay .libs-ui-popover-overlay-body{color:#fff;word-break:break-word}.libs-ui-popover-overlay .libs-ui-popover-overlay-body[isTemplate=true]{font-size:inherit}.libs-ui-popover-overlay.libs-ui-popover-overlay-white-theme{background-color:#fff;box-shadow:0 1px 1px #00143305,0 4px 16px #0014331a}.libs-ui-popover-overlay.libs-ui-popover-overlay-white-theme .libs-ui-popover-overlay-body{color:#071631}\n"] }]
|
|
292
292
|
}], ctorParameters: () => [] });
|
|
293
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3ZlcmxheS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzLXVpL2NvbXBvbmVudHMvcG9wb3Zlci9zcmMvb3ZlcmxheS9vdmVybGF5LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMtdWkvY29tcG9uZW50cy9wb3BvdmVyL3NyYy9vdmVybGF5L292ZXJsYXkuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN2RSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBYSxNQUFNLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNySCxPQUFPLEVBQUUsc0NBQXNDLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUU1RixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsU0FBUyxFQUFFLHdCQUF3QixFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3hHLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7QUFZMUQsTUFBTSxPQUFPLHVDQUF1QztJQUNsRCxnQkFBZ0I7SUFDTixnQkFBZ0IsR0FBRyxNQUFNLENBQXlCLFFBQVEsQ0FBQyxDQUFDO0lBQzVELFVBQVUsR0FBRyxNQUFNLENBQVMsRUFBRSxDQUFDLENBQUM7SUFDaEMsR0FBRyxHQUFHLE1BQU0sQ0FBUyxDQUFDLENBQUMsQ0FBQztJQUN4QixJQUFJLEdBQUcsTUFBTSxDQUFTLENBQUMsQ0FBQyxDQUFDO0lBQ3pCLFNBQVMsR0FBRyxNQUFNLENBQVMsQ0FBQyxDQUFDLENBQUM7SUFDOUIs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TUFBTSxFQUFFLENBQUM7UUFDbEMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsK0NBQStDLEVBQUUsR0FBRyxXQUFXLENBQUMsZUFBZSxFQUFFLElBQUksSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ3hJLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLG1EQUFtRCxFQUFFLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixFQUFFLEtBQUssS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxXQUFXLENBQUMsZUFBZSxFQUFFLFFBQVEsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ2xNLENBQUM7SUFFRCxXQUFXO1FBQ1QsWUFBWSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBQzdCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDdEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUM1QixDQUFDO3dHQTdVVSx1Q0FBdUM7NEZBQXZDLHVDQUF1QyxzTkNsQnBELHlqRUE4Q0EsKzdDRDlCWSxlQUFlLDRGQUFFLE9BQU8sc0VBQUUsU0FBUyw4Q0FBRSxzQ0FBc0MsOFFBQUUsZ0JBQWdCOzs0RkFFNUYsdUNBQXVDO2tCQVRuRCxTQUFTOytCQUVFLG9DQUFvQyxjQUdsQyxJQUFJLG1CQUNDLHVCQUF1QixDQUFDLE1BQU0sV0FDdEMsQ0FBQyxlQUFlLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxzQ0FBc0MsRUFBRSxnQkFBZ0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFzeW5jUGlwZSwgTmdTdHlsZSwgTmdUZW1wbGF0ZU91dGxldCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBPbkRlc3Ryb3ksIGluamVjdCwgc2lnbmFsLCB2aWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IExpYnNVaUNvbXBvbmVudHNTY3JvbGxPdmVybGF5RGlyZWN0aXZlIH0gZnJvbSAnQGxpYnMtdWkvY29tcG9uZW50cy1zY3JvbGwtb3ZlcmxheSc7XG5pbXBvcnQgeyBJQm91bmRpbmdDbGllbnRSZWN0IH0gZnJvbSAnQGxpYnMtdWkvaW50ZXJmYWNlcy10eXBlcyc7XG5pbXBvcnQgeyBVdGlsc1VybFNlYXJjaFBhcmFtcywgY2xvbmVEZWVwLCBjbG9uZUlCb3VuZGluZ0NsaWVudFJlY3QsIGdldFZpZXdwb3J0IH0gZnJvbSAnQGxpYnMtdWkvdXRpbHMnO1xuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBTdWJqZWN0LCBpbnRlcnZhbCwgdGFrZSwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBJUG9wb3Zlck92ZXJsYXkgfSBmcm9tICcuLi9pbnRlcmZhY2VzL292ZXJsYXkuaW50ZXJmYWNlJztcbmltcG9ydCB7IFRZUEVfUE9QT1ZFUl9ESVJFQ1RJT04gfSBmcm9tICcuLi9pbnRlcmZhY2VzL3BvcG92ZXIudHlwZSc7XG5AQ29tcG9uZW50KHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9jb21wb25lbnQtc2VsZWN0b3JcbiAgc2VsZWN0b3I6ICdsaWJzX3VpLWNvbXBvbmVudHMtcG9wb3Zlci1vdmVybGF5JyxcbiAgdGVtcGxhdGVVcmw6ICcuL292ZXJsYXkuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9vdmVybGF5LmNvbXBvbmVudC5zY3NzJ10sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBpbXBvcnRzOiBbVHJhbnNsYXRlTW9kdWxlLCBOZ1N0eWxlLCBBc3luY1BpcGUsIExpYnNVaUNvbXBvbmVudHNTY3JvbGxPdmVybGF5RGlyZWN0aXZlLCBOZ1RlbXBsYXRlT3V0bGV0XVxufSlcbmV4cG9ydCBjbGFzcyBMaWJzVWlDb21wb25lbnRzUG9wb3Zlck92ZXJsYXlDb21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICAvKiBQUk9QRVJUSUVTICovXG4gIHByb3RlY3RlZCBjdXJyZW50RGlyZWN0aW9uID0gc2lnbmFsPFRZUEVfUE9QT1ZFUl9ESVJFQ1RJT04+KCdib3R0b20nKTtcbiAgcHJvdGVjdGVkIGFycm93Q2xhc3MgPSBzaWduYWw8c3RyaW5nPignJyk7XG4gIHByb3RlY3RlZCB0b3AgPSBzaWduYWw8bnVtYmVyPigwKTtcbiAgcHJvdGVjdGVkIGxlZnQgPSBzaWduYWw8bnVtYmVyPigwKTtcbiAgcHJvdGVjdGVkIGFycm93TGVmdCA9IHNpZ25hbDxudW1iZXI+KDApO1xuICBwcm90ZWN0ZWQgYXJyb3dUb3AgPSBzaWduYWw8bnVtYmVyPigwKTtcbiAgcHJvdGVjdGVkIGNvbmZpZyA9IHNpZ25hbDxJUG9wb3Zlck92ZXJsYXk+KHt9KTtcblxuICBwcml2YXRlIGRpcmVjdGlvbnMgPSBzaWduYWw8TWFwPHN0cmluZywgQXJyYXk8VFlQRV9QT1BPVkVSX0RJUkVDVElPTj4+PihuZXcgTWFwKCkpO1xuICBwcml2YXRlIHRpbWVvdXQgPSBzaWduYWw8bnVtYmVyPigwKTtcbiAgcHJpdmF0ZSBvbkRlc3Ryb3kgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIC8qIE9VVFBVVCAqL1xuICByZWFkb25seSBvdXRFdmVudDogU3ViamVjdDxUWVBFX1BPUE9WRVJfRElSRUNUSU9OPiA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgLyogVklFVyBDSElMRCAqL1xuICBwcml2YXRlIGNvbnRhaW5lciA9IHZpZXdDaGlsZC5yZXF1aXJlZDxFbGVtZW50UmVmPignY29udGFpbmVyJyk7XG5cbiAgLyogSU5KRUNUICovXG4gIHByaXZhdGUgZWxlbWVudFJlZiA9IGluamVjdChFbGVtZW50UmVmKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLmRpcmVjdGlvbnMoKS5zZXQoJ2JvdHRvbScsIFsnYm90dG9tJywgJ3RvcCcsICdyaWdodCcsICdsZWZ0J10pO1xuICAgIHRoaXMuZGlyZWN0aW9ucygpLnNldCgncmlnaHQnLCBbJ3JpZ2h0JywgJ2xlZnQnLCAnYm90dG9tJywgJ3RvcCddKTtcbiAgICB0aGlzLmRpcmVjdGlvbnMoKS5zZXQoJ2xlZnQnLCBbJ2xlZnQnLCAncmlnaHQnLCAnYm90dG9tJywgJ3RvcCddKTtcbiAgICB0aGlzLmRpcmVjdGlvbnMoKS5zZXQoJ3RvcCcsIFsndG9wJywgJ2JvdHRvbScsICdyaWdodCcsICdsZWZ0J10pO1xuICB9XG5cbiAgLyogRlVOQ1RJT05TKi9cbiAgcHVibGljIGdldCBFbGVtZW50UmVmKCkge1xuICAgIHJldHVybiB0aGlzLmVsZW1lbnRSZWY7XG4gIH1cblxuICBwdWJsaWMgZ2V0IENvbnRhaW5lckVsZW1lbnQoKSB7XG4gICAgcmV0dXJuIHRoaXMuY29udGFpbmVyKCkubmF0aXZlRWxlbWVudDtcbiAgfVxuXG4gIHB1YmxpYyBzZXRDb25maWcocmVjdE9yaWdpbjogSUJvdW5kaW5nQ2xpZW50UmVjdCwgY29uZmlnOiBJUG9wb3Zlck92ZXJsYXksIGlzQWRkQ29udGVudFRvUGFyZW50RG9jdW1lbnQ/OiBib29sZWFuKSB7XG4gICAgaXNBZGRDb250ZW50VG9QYXJlbnREb2N1bWVudCA9IGlzQWRkQ29udGVudFRvUGFyZW50RG9jdW1lbnQgfHwgY29uZmlnLmlzQWRkQ29udGVudFRvUGFyZW50RG9jdW1lbnQ7XG4gICAgcmVjdE9yaWdpbiA9IGNsb25lSUJvdW5kaW5nQ2xpZW50UmVjdChyZWN0T3JpZ2luKTtcbiAgICB0aGlzLmNvbmZpZy5zZXQoY2xvbmVEZWVwKGNvbmZpZykpO1xuXG4gICAgdGhpcy5jb250YWluZXIoKS5uYXRpdmVFbGVtZW50LnN0eWxlLm9wYWNpdHkgPSAwO1xuICAgIGlmICh0aGlzLmNvbmZpZygpLndpZHRoQnlQYXJlbnQpIHtcbiAgICAgIHRoaXMuY29uZmlnLnVwZGF0ZShjb25maWcgPT4gKHsgLi4uY29uZmlnLCB3aWR0aDogcmVjdE9yaWdpbi53aWR0aCAtIChjb25maWc/LnBhcmVudEJvcmRlcldpZHRoIHx8IDApICogMiB9KSk7XG4gICAgfVxuICAgIGxldCB2aWV3UG9ydCA9IGdldFZpZXdwb3J0KCk7XG4gICAgbGV0IHJlY3RGcmFtZTogSUJvdW5kaW5nQ2xpZW50UmVjdCB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcblxuICAgIGlmIChpc0FkZENvbnRlbnRUb1BhcmVudERvY3VtZW50KSB7XG4gICAgICB2aWV3UG9ydCA9IGdldFZpZXdwb3J0KHdpbmRvdy5wYXJlbnQpO1xuICAgICAgY29uc3QgdXJsID0gbmV3IFV0aWxzVXJsU2VhcmNoUGFyYW1zKGxvY2F0aW9uLmhyZWYpO1xuICAgICAgY29uc3QgaWZyYW1lSWQgPSB1cmwuZ2V0KCdpZnJhbWVJZCcpO1xuXG4gICAgICByZWN0RnJhbWUgPSB3aW5kb3cucGFyZW50LmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGBpZnJhbWUtJHtpZnJhbWVJZH1gKT8uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICBpZiAocmVjdEZyYW1lKSB7XG4gICAgICAgIHJlY3RPcmlnaW4udG9wICs9IHJlY3RGcmFtZS50b3A7XG4gICAgICAgIHJlY3RPcmlnaW4ubGVmdCArPSByZWN0RnJhbWUubGVmdDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodGhpcy5jb25maWcoKS5tYXhIZWlnaHQgPT09IG51bGwpIHtcbiAgICAgIHRoaXMuY29uZmlnLnVwZGF0ZShjb25maWcgPT4gKHsgLi4uY29uZmlnLCBtYXhIZWlnaHQ6IHZpZXdQb3J0LmhlaWdodCAtIHJlY3RPcmlnaW4udG9wIC0gNDQgfSkpO1xuICAgIH1cblxuICAgIGNsZWFyVGltZW91dCh0aGlzLnRpbWVvdXQoKSk7XG4gICAgdGhpcy5zZXRWYXJpYWJsZUNzcygpO1xuICAgIHRoaXMuc2V0RGlyZWN0aW9ucyhyZWN0T3JpZ2luLCB2aWV3UG9ydCwgcmVjdEZyYW1lKTtcbiAgICBsZXQgcmVjdENvbnRlbnQgPSBjbG9uZUlCb3VuZGluZ0NsaWVudFJlY3QodGhpcy5jb250YWluZXIoKS5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpKTtcblxuICAgIGlmIChyZWN0RnJhbWUpIHtcbiAgICAgIHJlY3RDb250ZW50LnRvcCArPSByZWN0RnJhbWUudG9wO1xuICAgICAgcmVjdENvbnRlbnQubGVmdCArPSByZWN0RnJhbWUubGVmdDtcbiAgICB9XG5cbiAgICBpbnRlcnZhbCgyNTApLnBpcGUodGFrZSg0KSwgdGFrZVVudGlsKHRoaXMub25EZXN0cm95KSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIGNvbnN0IHJlY3QgPSBjbG9uZUlCb3VuZGluZ0NsaWVudFJlY3QodGhpcy5jb250YWluZXIoKS5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpKTtcblxuICAgICAgaWYgKHJlY3RGcmFtZSkge1xuICAgICAgICByZWN0LnRvcCArPSByZWN0RnJhbWUudG9wO1xuICAgICAgICByZWN0LmxlZnQgKz0gcmVjdEZyYW1lLmxlZnQ7XG4gICAgICB9XG4gICAgICBpZiAocmVjdC53aWR0aCAhPT0gcmVjdENvbnRlbnQud2lkdGggfHwgcmVjdC5oZWlnaHQgIT09IHJlY3RDb250ZW50LmhlaWdodCB8fCByZWN0LnRvcCAhPT0gcmVjdENvbnRlbnQudG9wIHx8IHJlY3QubGVmdCAhPT0gcmVjdENvbnRlbnQubGVmdCkge1xuICAgICAgICBjbGVhclRpbWVvdXQodGhpcy50aW1lb3V0KCkpO1xuICAgICAgICB0aGlzLnNldERpcmVjdGlvbnMocmVjdE9yaWdpbiwgdmlld1BvcnQsIHJlY3RGcmFtZSk7XG4gICAgICAgIHJlY3RDb250ZW50ID0gcmVjdDtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0RGlyZWN0aW9ucyhyZWN0T3JpZ2luOiBJQm91bmRpbmdDbGllbnRSZWN0LCB2aWV3UG9ydDogeyB3aWR0aDogbnVtYmVyLCBoZWlnaHQ6IG51bWJlciB9LCByZWN0RnJhbWU/OiBJQm91bmRpbmdDbGllbnRSZWN0KSB7XG4gICAgY29uc3QgZGlyZWN0aW9ucyA9IHRoaXMuZGlyZWN0aW9ucygpLmdldCh0aGlzLmNvbmZpZygpLmRpcmVjdGlvbiB8fCAnYm90dG9tJykgfHwgWydib3R0b20nLCAncmlnaHQnLCAnbGVmdCcsICd0b3AnXTtcbiAgICBjb25zdCBwb3NpdGlvbkxhc3QgPSBkaXJlY3Rpb25zLmxlbmd0aCAtIDE7XG5cbiAgICB0aGlzLnRpbWVvdXQuc2V0KHNldFRpbWVvdXQoYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgcmVjdENvbnRlbnQgPSBjbG9uZUlCb3VuZGluZ0NsaWVudFJlY3QodGhpcy5jb250YWluZXIoKS5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpKTtcblxuICAgICAgaWYgKHJlY3RGcmFtZSkge1xuICAgICAgICByZWN0Q29udGVudC50b3AgKz0gcmVjdEZyYW1lLnRvcDtcbiAgICAgICAgcmVjdENvbnRlbnQubGVmdCArPSByZWN0RnJhbWUubGVmdDtcbiAgICAgIH1cbiAgICAgIGZvciAoY29uc3QgaW5kZXggaW4gZGlyZWN0aW9ucykge1xuICAgICAgICBpZiAoYXdhaXQgdGhpcy5sb29wRGlyZWN0aW9uKHJlY3RPcmlnaW4sIHJlY3RDb250ZW50LCBkaXJlY3Rpb25zW2luZGV4XSwgcG9zaXRpb25MYXN0ID09PSAraW5kZXgsIHZpZXdQb3J0KSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sIDUwKSk7XG4gIH1cblxuICBwcml2YXRlIGxvb3BEaXJlY3Rpb24ocmVjdE9yaWdpbjogSUJvdW5kaW5nQ2xpZW50UmVjdCwgcmVjdENvbnRlbnQ6IElCb3VuZGluZ0NsaWVudFJlY3QsIGRpcmVjdGlvbjogVFlQRV9QT1BPVkVSX0RJUkVDVElPTiwgaXNMYXN0OiBib29sZWFuLCB2aWV3UG9ydDogeyB3aWR0aDogbnVtYmVyLCBoZWlnaHQ6IG51bWJlciB9KTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4ge1xuICAgICAgY29uc3QgcG9zaXRpb25Nb2RlID0gdGhpcy5jb25maWcoKS5wb3NpdGlvbj8ubW9kZSB8fCAnc3RhcnQnO1xuICAgICAgY29uc3QgeyBwb3NpdGlvbiB9ID0gdGhpcy5jb25maWcoKTtcbiAgICAgIGxldCByZXN1bHQgPSB0aGlzLnNldFBvc2l0aW9uKGRpcmVjdGlvbiwgcmVjdE9yaWdpbiwgKHJlY3RDb250ZW50IGFzIElCb3VuZGluZ0NsaWVudFJlY3QpLCB2aWV3UG9ydCwgaXNMYXN0KTtcblxuICAgICAgaWYgKCFyZXN1bHQpIHtcblxuICAgICAgICBpZiAocG9zaXRpb24pIHtcbiAgICAgICAgICBwb3NpdGlvbi5tb2RlID0gcG9zaXRpb25Nb2RlID09PSAnY2VudGVyJyB8fCBwb3NpdGlvbk1vZGUgPT09ICdzdGFydCcgPyAnZW5kJyA6ICdzdGFydCc7XG4gICAgICAgICAgaWYgKCF0aGlzLmNvbmZpZygpLmlnbm9yZUFycm93ICYmIHBvc2l0aW9uLmF1dG9VcGRhdGVQb3NpdGlvbikge1xuICAgICAgICAgICAgcG9zaXRpb24uZGlzdGFuY2UgPSBwb3NpdGlvbi5tb2RlID09PSAnZW5kJyA/IHBvc2l0aW9uLmF1dG9VcGRhdGVQb3NpdGlvbi5lbmREaXN0YW5jZSA6IHBvc2l0aW9uLmF1dG9VcGRhdGVQb3NpdGlvbi5zdGFydERpc3RhbmNlO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLmNvbmZpZy51cGRhdGUoY29uZmlnID0+ICh7IC4uLmNvbmZpZyB9KSk7XG4gICAgICAgIH1cbiAgICAgICAgcmVzdWx0ID0gdGhpcy5zZXRQb3NpdGlvbihkaXJlY3Rpb24sIHJlY3RPcmlnaW4sIChyZWN0Q29udGVudCBhcyBJQm91bmRpbmdDbGllbnRSZWN0KSwgdmlld1BvcnQsIGlzTGFzdCk7XG4gICAgICB9XG4gICAgICBpZiAoIXJlc3VsdCAmJiBwb3NpdGlvbk1vZGUgPT09ICdjZW50ZXInKSB7XG4gICAgICAgIGlmIChwb3NpdGlvbikge1xuICAgICAgICAgIHBvc2l0aW9uLm1vZGUgPSBwb3NpdGlvbi5tb2RlID09PSAnc3RhcnQnID8gJ2VuZCcgOiAnc3RhcnQnO1xuICAgICAgICAgIHRoaXMuY29uZmlnLnVwZGF0ZShjb25maWcgPT4gKHsgLi4uY29uZmlnIH0pKTtcbiAgICAgICAgfVxuICAgICAgICByZXN1bHQgPSB0aGlzLnNldFBvc2l0aW9uKGRpcmVjdGlvbiwgcmVjdE9yaWdpbiwgKHJlY3RDb250ZW50IGFzIElCb3VuZGluZ0NsaWVudFJlY3QpLCB2aWV3UG9ydCwgaXNMYXN0KTtcbiAgICAgIH1cbiAgICAgIGlmICghcmVzdWx0KSB7XG4gICAgICAgIGlmIChwb3NpdGlvbikge1xuICAgICAgICAgIHBvc2l0aW9uLm1vZGUgPSBwb3NpdGlvbk1vZGU7XG4gICAgICAgICAgdGhpcy5jb25maWcudXBkYXRlKGNvbmZpZyA9PiAoeyAuLi5jb25maWcgfSkpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJlc29sdmUoZmFsc2UpO1xuICAgICAgfVxuICAgICAgdGhpcy5jdXJyZW50RGlyZWN0aW9uLnNldChkaXJlY3Rpb24pO1xuICAgICAgdGhpcy5zZXRWYXJpYWJsZUNzcygpO1xuICAgICAgdGhpcy5zZXRDbGFzc0Fycm93KGRpcmVjdGlvbik7XG4gICAgICB0aGlzLmNvbnRhaW5lcigpLm5hdGl2ZUVsZW1lbnQuc3R5bGUub3BhY2l0eSA9IDE7XG4gICAgICB0aGlzLm91dEV2ZW50Lm5leHQoZGlyZWN0aW9uKTtcblxuICAgICAgcmV0dXJuIHJlc29sdmUodHJ1ZSk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHNldFBvc2l0aW9uKGRpcmVjdGlvbjogVFlQRV9QT1BPVkVSX0RJUkVDVElPTiwgcmVjdE9yaWdpbjogSUJvdW5kaW5nQ2xpZW50UmVjdCwgcmVjdENvbnRlbnQ6IElCb3VuZGluZ0NsaWVudFJlY3QsIHZpZXdQb3J0OiB7IHdpZHRoOiBudW1iZXIsIGhlaWdodDogbnVtYmVyIH0sIGlzTGFzdDogYm9vbGVhbik6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGhhbGZTcXVhcmUgPSA2O1xuICAgIGNvbnN0IGRpc3RhbmNlQXJyb3cgPSA0O1xuICAgIGxldCBib3R0b21Qb3NpdGlvblJlY3RDb250ZW50ID0gMDtcbiAgICBsZXQgcG9zaXRpb25Ub3AgPSAwO1xuICAgIGxldCBwb3NpdGlvbkxlZnQgPSAwO1xuICAgIGxldCB0b3AgPSAwO1xuICAgIGxldCBsZWZ0ID0gMDtcbiAgICBjb25zdCBjb25maWdWYWx1ZSA9IHRoaXMuY29uZmlnKCk7XG5cbiAgICBzd2l0Y2ggKGRpcmVjdGlvbikge1xuICAgICAgY2FzZSAnYm90dG9tJzpcbiAgICAgICAgcG9zaXRpb25Ub3AgPSByZWN0T3JpZ2luLnRvcCArIHJlY3RPcmlnaW4uaGVpZ2h0ICsgZGlzdGFuY2VBcnJvdztcbiAgICAgICAgcG9zaXRpb25MZWZ0ID0gcmVjdE9yaWdpbi5sZWZ0ICsgcmVjdE9yaWdpbi53aWR0aCAvIDIgLSBoYWxmU3F1YXJlO1xuICAgICAgICB0b3AgPSBwb3NpdGlvblRvcCArIGhhbGZTcXVhcmU7XG4gICAgICAgIGxlZnQgPSBwb3NpdGlvbkxlZnQgLSByZWN0Q29udGVudC53aWR0aCAvIDIgKyBoYWxmU3F1YXJlO1xuICAgICAgICBpZiAoY29uZmlnVmFsdWUuaWdub3JlQXJyb3cpIHtcbiAgICAgICAgICB0b3AgPSB0b3AgLSBoYWxmU3F1YXJlIC0gZGlzdGFuY2VBcnJvdztcbiAgICAgICAgfVxuICAgICAgICB0b3AgKz0gY29uZmlnVmFsdWUuZGlyZWN0aW9uRGlzdGFuY2UgfHwgMDtcbiAgICAgICAgaWYgKGNvbmZpZ1ZhbHVlLnBvc2l0aW9uPy5tb2RlID09PSAnc3RhcnQnKSB7XG4gICAgICAgICAgbGVmdCA9IHJlY3RPcmlnaW4ubGVmdCArIChjb25maWdWYWx1ZS5wb3NpdGlvbi5kaXN0YW5jZSB8fCAwKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoY29uZmlnVmFsdWUucG9zaXRpb24/Lm1vZGUgPT09ICdlbmQnKSB7XG4gICAgICAgICAgbGVmdCA9IHJlY3RPcmlnaW4ubGVmdCArIHJlY3RPcmlnaW4ud2lkdGggLSByZWN0Q29udGVudC53aWR0aCArIChjb25maWdWYWx1ZS5wb3NpdGlvbi5kaXN0YW5jZSB8fCAwKTtcbiAgICAgICAgfVxuICAgICAgICBsZWZ0ICs9IChjb25maWdWYWx1ZS5wYXJlbnRCb3JkZXJXaWR0aCB8fCAwKTtcblxuICAgICAgICB0aGlzLmFycm93TGVmdC5zZXQocG9zaXRpb25MZWZ0IC0gbGVmdCk7XG4gICAgICAgIHRoaXMuYXJyb3dUb3Auc2V0KC02KTtcbiAgICAgICAgdGhpcy50b3Auc2V0KHRvcCk7XG4gICAgICAgIHRoaXMubGVmdC5zZXQobGVmdCk7XG4gICAgICAgIGlmICh0b3AgKyByZWN0Q29udGVudC5oZWlnaHQgPCB2aWV3UG9ydC5oZWlnaHQgJiYgbGVmdCA+PSAwICYmIGxlZnQgKyByZWN0Q29udGVudC53aWR0aCA8IHZpZXdQb3J0LndpZHRoKSB7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlzTGFzdCkge1xuICAgICAgICAgIGlmICh0aGlzLmNvbmZpZykge1xuICAgICAgICAgICAgdGhpcy5jb25maWcudXBkYXRlKGNvbmZpZyA9PiAoeyAuLi5jb25maWcsIG1heEhlaWdodDogdmlld1BvcnQuaGVpZ2h0IC0gcmVjdE9yaWdpbi50b3AgLSByZWN0T3JpZ2luLmhlaWdodCB9KSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGxlZnQgPSBsZWZ0ID49IDAgPyBsZWZ0IDogMDtcbiAgICAgICAgICB0aGlzLmxlZnQuc2V0KGxlZnQpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuXG4gICAgICBjYXNlICdyaWdodCc6XG4gICAgICAgIHBvc2l0aW9uVG9wID0gcmVjdE9yaWdpbi50b3AgKyByZWN0T3JpZ2luLmhlaWdodCAvIDIgLSBoYWxmU3F1YXJlO1xuICAgICAgICBwb3NpdGlvbkxlZnQgPSByZWN0T3JpZ2luLmxlZnQgKyByZWN0T3JpZ2luLndpZHRoICsgZGlzdGFuY2VBcnJvdztcbiAgICAgICAgdG9wID0gcG9zaXRpb25Ub3AgLSByZWN0Q29udGVudC5oZWlnaHQgLyAyICsgaGFsZlNxdWFyZTtcbiAgICAgICAgbGVmdCA9IHBvc2l0aW9uTGVmdCArIGhhbGZTcXVhcmU7XG5cbiAgICAgICAgaWYgKGNvbmZpZ1ZhbHVlLmlnbm9yZUFycm93KSB7XG4gICAgICAgICAgbGVmdCA9IHBvc2l0aW9uTGVmdCAtIGRpc3RhbmNlQXJyb3c7XG4gICAgICAgIH1cblxuICAgICAgICBsZWZ0ICs9IGNvbmZpZ1ZhbHVlLmRpcmVjdGlvbkRpc3RhbmNlIHx8IDA7XG4gICAgICAgIGlmIChjb25maWdWYWx1ZS5wb3NpdGlvbj8ubW9kZSA9PT0gJ3N0YXJ0Jykge1xuICAgICAgICAgIHRvcCA9IHJlY3RPcmlnaW4udG9wICsgKGNvbmZpZ1ZhbHVlLnBvc2l0aW9uPy5kaXN0YW5jZSB8fCAwKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjb25maWdWYWx1ZS5wb3NpdGlvbj8ubW9kZSA9PT0gJ2VuZCcpIHtcbiAgICAgICAgICB0b3AgPSByZWN0T3JpZ2luLnRvcCArIHJlY3RPcmlnaW4uaGVpZ2h0IC0gcmVjdENvbnRlbnQuaGVpZ2h0ICsgKGNvbmZpZ1ZhbHVlLnBvc2l0aW9uLmRpc3RhbmNlIHx8IDApO1xuICAgICAgICB9XG5cbiAgICAgICAgYm90dG9tUG9zaXRpb25SZWN0Q29udGVudCA9IHRvcCArIHJlY3RDb250ZW50LmhlaWdodDtcblxuICAgICAgICBpZiAoYm90dG9tUG9zaXRpb25SZWN0Q29udGVudCA+IHZpZXdQb3J0LmhlaWdodCkge1xuICAgICAgICAgIHRvcCA9IHRvcCAtIChib3R0b21Qb3NpdGlvblJlY3RDb250ZW50IC0gdmlld1BvcnQuaGVpZ2h0KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuYXJyb3dUb3Auc2V0KHBvc2l0aW9uVG9wIC0gdG9wICsgMik7XG4gICAgICAgIHRoaXMuYXJyb3dMZWZ0LnNldCgtOSk7XG5cbiAgICAgICAgdGhpcy50b3Auc2V0KHRvcCk7XG4gICAgICAgIHRoaXMubGVmdC5zZXQobGVmdCk7XG4gICAgICAgIGlmICh0b3AgPiAwICYmIGxlZnQgKyByZWN0Q29udGVudC53aWR0aCA8IHZpZXdQb3J0LndpZHRoKSB7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZmFsc2U7XG5cbiAgICAgIGNhc2UgJ2xlZnQnOlxuICAgICAgICBwb3NpdGlvblRvcCA9IHJlY3RPcmlnaW4udG9wICsgcmVjdE9yaWdpbi5oZWlnaHQgLyAyIC0gaGFsZlNxdWFyZTtcbiAgICAgICAgcG9zaXRpb25MZWZ0ID0gcmVjdE9yaWdpbi5sZWZ0IC0gKGhhbGZTcXVhcmUgKiAyKSAtIGRpc3RhbmNlQXJyb3c7XG4gICAgICAgIHRvcCA9IHBvc2l0aW9uVG9wIC0gcmVjdENvbnRlbnQuaGVpZ2h0IC8gMiArIGhhbGZTcXVhcmU7XG4gICAgICAgIGxlZnQgPSBwb3NpdGlvbkxlZnQgLSByZWN0Q29udGVudC53aWR0aCArIGhhbGZTcXVhcmU7XG4gICAgICAgIGlmIChjb25maWdWYWx1ZS5pZ25vcmVBcnJvdykge1xuICAgICAgICAgIGxlZnQgPSBsZWZ0ICsgaGFsZlNxdWFyZSArIGRpc3RhbmNlQXJyb3c7XG4gICAgICAgIH1cblxuICAgICAgICBsZWZ0IC09IGNvbmZpZ1ZhbHVlPy5kaXJlY3Rpb25EaXN0YW5jZSB8fCAwO1xuICAgICAgICBpZiAoY29uZmlnVmFsdWUucG9zaXRpb24/Lm1vZGUgPT09ICdzdGFydCcpIHtcbiAgICAgICAgICB0b3AgPSByZWN0T3JpZ2luLnRvcCArIChjb25maWdWYWx1ZS5wb3NpdGlvbi5kaXN0YW5jZSB8fCAwKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjb25maWdWYWx1ZS5wb3NpdGlvbj8ubW9kZSA9PT0gJ2VuZCcpIHtcbiAgICAgICAgICB0b3AgPSByZWN0T3JpZ2luLnRvcCArIHJlY3RPcmlnaW4uaGVpZ2h0IC0gcmVjdENvbnRlbnQuaGVpZ2h0ICsgKGNvbmZpZ1ZhbHVlLnBvc2l0aW9uLmRpc3RhbmNlIHx8IDApO1xuICAgICAgICB9XG5cbiAgICAgICAgYm90dG9tUG9zaXRpb25SZWN0Q29udGVudCA9IHRvcCArIHJlY3RDb250ZW50LmhlaWdodDtcblxuICAgICAgICBpZiAoYm90dG9tUG9zaXRpb25SZWN0Q29udGVudCA+IHZpZXdQb3J0LmhlaWdodCkge1xuICAgICAgICAgIHRvcCA9IHRvcCAtIChib3R0b21Qb3NpdGlvblJlY3RDb250ZW50IC0gdmlld1BvcnQuaGVpZ2h0KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuYXJyb3dUb3Auc2V0KHBvc2l0aW9uVG9wIC0gdG9wICsgMik7XG4gICAgICAgIHRoaXMuYXJyb3dMZWZ0LnNldChyZWN0Q29udGVudC53aWR0aCAtIDMpO1xuXG4gICAgICAgIHRoaXMudG9wLnNldCh0b3ApO1xuICAgICAgICB0aGlzLmxlZnQuc2V0KGxlZnQpO1xuICAgICAgICBpZiAobGVmdCA+IDAgJiYgdG9wID4gMCkge1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuXG4gICAgICBjYXNlICd0b3AnOlxuICAgICAgICBwb3NpdGlvblRvcCA9IHJlY3RPcmlnaW4udG9wIC0gKGhhbGZTcXVhcmUgKiAyKSAtIGRpc3RhbmNlQXJyb3c7XG4gICAgICAgIHBvc2l0aW9uTGVmdCA9IHJlY3RPcmlnaW4ubGVmdCArIHJlY3RPcmlnaW4ud2lkdGggLyAyIC0gaGFsZlNxdWFyZTtcbiAgICAgICAgdG9wID0gcG9zaXRpb25Ub3AgLSByZWN0Q29udGVudC5oZWlnaHQgKyBoYWxmU3F1YXJlO1xuICAgICAgICBsZWZ0ID0gcG9zaXRpb25MZWZ0IC0gcmVjdENvbnRlbnQud2lkdGggLyAyICsgaGFsZlNxdWFyZTtcblxuICAgICAgICBpZiAoY29uZmlnVmFsdWUuaWdub3JlQXJyb3cpIHtcbiAgICAgICAgICB0b3AgPSB0b3AgKyBoYWxmU3F1YXJlICsgZGlzdGFuY2VBcnJvdztcbiAgICAgICAgfVxuXG4gICAgICAgIHRvcCAtPSBjb25maWdWYWx1ZS5kaXJlY3Rpb25EaXN0YW5jZSB8fCAwO1xuXG4gICAgICAgIGlmIChjb25maWdWYWx1ZS5wb3NpdGlvbiAmJiBjb25maWdWYWx1ZS5wb3NpdGlvbj8ubW9kZSA9PT0gJ3N0YXJ0Jykge1xuICAgICAgICAgIGxlZnQgPSByZWN0T3JpZ2luLmxlZnQgKyAoY29uZmlnVmFsdWUucG9zaXRpb24uZGlzdGFuY2UgfHwgMCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoY29uZmlnVmFsdWUucG9zaXRpb24gJiYgY29uZmlnVmFsdWUucG9zaXRpb24/Lm1vZGUgPT09ICdlbmQnKSB7XG4gICAgICAgICAgbGVmdCA9IHJlY3RPcmlnaW4ubGVmdCArIHJlY3RPcmlnaW4ud2lkdGggLSByZWN0Q29udGVudC53aWR0aCArIChjb25maWdWYWx1ZS5wb3NpdGlvbi5kaXN0YW5jZSB8fCAwKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxlZnQgKz0gKGNvbmZpZ1ZhbHVlLnBhcmVudEJvcmRlcldpZHRoIHx8IDApO1xuICAgICAgICB0aGlzLmFycm93TGVmdC5zZXQocG9zaXRpb25MZWZ0IC0gbGVmdCk7XG4gICAgICAgIHRoaXMuYXJyb3dUb3Auc2V0KHJlY3RDb250ZW50LmhlaWdodCk7XG4gICAgICAgIHRoaXMudG9wLnNldCh0b3ApO1xuICAgICAgICB0aGlzLmxlZnQuc2V0KGxlZnQpO1xuICAgICAgICBpZiAodG9wID4gMCAmJiBsZWZ0ID49IDAgJiYgbGVmdCArIHJlY3RDb250ZW50LndpZHRoIDwgdmlld1BvcnQud2lkdGgpIHtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpc0xhc3QpIHtcbiAgICAgICAgICB0aGlzLmNvbmZpZy51cGRhdGUoY29uZmlnID0+ICh7IC4uLmNvbmZpZywgbWF4SGVpZ2h0OiB2aWV3UG9ydC5oZWlnaHQgLSAodmlld1BvcnQuaGVpZ2h0IC0gcmVjdE9yaWdpbi50b3ApIH0pKTtcbiAgICAgICAgICB0b3AgPSAwO1xuICAgICAgICAgIGxlZnQgPSBsZWZ0ID49IDAgPyBsZWZ0IDogMDtcbiAgICAgICAgICB0aGlzLmxlZnQuc2V0KGxlZnQpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc2V0Q2xhc3NBcnJvdyhkaXJlY3Rpb246IFRZUEVfUE9QT1ZFUl9ESVJFQ1RJT04pIHtcbiAgICBpZiAoZGlyZWN0aW9uID09PSAncmlnaHQnKSB7XG4gICAgICByZXR1cm4gdGhpcy5hcnJvd0NsYXNzLnNldCgnbGlicy11aS1wb3BvdmVyLW92ZXJsYXktYXJyb3ctcmlnaHQnKTtcbiAgICB9XG4gICAgaWYgKGRpcmVjdGlvbiA9PT0gJ2xlZnQnKSB7XG4gICAgICByZXR1cm4gdGhpcy5hcnJvd0NsYXNzLnNldCgnbGlicy11aS1wb3BvdmVyLW92ZXJsYXktYXJyb3ctbGVmdCcpO1xuICAgIH1cbiAgICBpZiAoZGlyZWN0aW9uID09PSAndG9wJykge1xuICAgICAgcmV0dXJuIHRoaXMuYXJyb3dDbGFzcy5zZXQoJ2xpYnMtdWktcG9wb3Zlci1vdmVybGF5LWFycm93LWRvd24nKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5hcnJvd0NsYXNzLnNldCgnbGlicy11aS1wb3BvdmVyLW92ZXJsYXktYXJyb3ctdXAnKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0VmFyaWFibGVDc3MoKSB7XG4gICAgY29uc3QgY29uZmlnVmFsdWUgPSB0aGlzLmNvbmZpZygpO1xuICAgIHRoaXMuQ29udGFpbmVyRWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1saWJzLXVpLXBvcG92ZXItb3ZlcmxheS10aW1lLWFuaW1hdGlvbi10aW1lJywgYCR7Y29uZmlnVmFsdWUuYW5pbWF0aW9uQ29uZmlnPy50aW1lIHx8IC40fXNgKTtcbiAgICB0aGlzLkNvbnRhaW5lckVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoJy0tbGlicy11aS1wb3BvdmVyLW92ZXJsYXktdGltZS1hbmltYXRpb24tZGlzdGFuY2UnLCBgJHt0aGlzLmN1cnJlbnREaXJlY3Rpb24oKSA9PT0gJ3RvcCcgPyAnLScgOiAnJ30ke2NvbmZpZ1ZhbHVlLmFuaW1hdGlvbkNvbmZpZz8uZGlzdGFuY2UgfHwgMTJ9cHhgKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIGNsZWFyVGltZW91dCh0aGlzLnRpbWVvdXQoKSk7XG4gICAgdGhpcy5vbkRlc3Ryb3kubmV4dCgpO1xuICAgIHRoaXMub25EZXN0cm95LmNvbXBsZXRlKCk7XG4gIH1cblxufVxuIiwiPGRpdiAjY29udGFpbmVyXG4gIGNsYXNzPVwibGlicy11aS1wb3BvdmVyLW92ZXJsYXkge3sgY29uZmlnKCkuY2xhc3NJbmNsdWRlIHx8ICcnIH19XCJcbiAgW2NsYXNzLmxpYnMtdWktcG9wb3Zlci1vdmVybGF5LXdoaXRlLXRoZW1lXT1cImNvbmZpZygpLndoaXRlVGhlbWVcIlxuICBbY2xhc3MubGlicy11aS1wb3BvdmVyLW92ZXJsYXktYW5pbWF0aW9uLW1vdmVdPVwiY29uZmlnKCkuYW5pbWF0aW9uQ29uZmlnXCJcbiAgW25nU3R5bGVdPVwiY29uZmlnKCkubmdTdHlsZXMgfHwge31cIlxuICBbc3R5bGUud2lkdGhdPVwiY29uZmlnKCkud2lkdGggPyBjb25maWcoKS53aWR0aCArICdweCcgOiAnYXV0bydcIlxuICBbc3R5bGUubWF4V2lkdGgucHhdPVwiY29uZmlnKCkubWF4V2lkdGhcIlxuICBbc3R5bGUubWF4SGVpZ2h0LnB4XT1cImNvbmZpZygpLm1heEhlaWdodFwiXG4gIFtzdHlsZS50b3AucHhdPVwidG9wKClcIlxuICBbc3R5bGUubGVmdC5weF09XCJsZWZ0KClcIlxuICBbc3R5bGUuekluZGV4XT1cImNvbmZpZygpLnpJbmRleCB8fCAxMFwiPlxuICBAaWYgKGNvbmZpZygpKSB7XG4gICAgQGlmICghY29uZmlnKCkuaWdub3JlQXJyb3cpIHtcbiAgICAgIDxkaXYgY2xhc3M9J3JlbGF0aXZlJz5cbiAgICAgICAgPHN2Z1xuICAgICAgICAgIFtjbGFzc109XCInbGlicy11aS1wb3BvdmVyLW92ZXJsYXktYXJyb3cgJysgYXJyb3dDbGFzcygpICsgKCBjb25maWcoKS53aGl0ZVRoZW1lID8gJyBsaWJzLXVpLXBvcG92ZXItb3ZlcmxheS13aGl0ZS10aGVtZSAnIDogJycpXCJcbiAgICAgICAgICBbc3R5bGUudG9wLnB4XT1cImFycm93VG9wKClcIlxuICAgICAgICAgIFtzdHlsZS5sZWZ0LnB4XT1cImFycm93TGVmdCgpXCJcbiAgICAgICAgICBbYXR0ci5kaXJlY3Rpb25dPSdvdXRFdmVudCB8IGFzeW5jJz5cbiAgICAgICAgICA8cG9seWdvbiBwb2ludHM9XCIwLDAgNiw2IDEyLDBcIiAvPlxuICAgICAgICAgIFNvcnJ5LCB5b3VyIGJyb3dzZXIgZG9lcyBub3Qgc3VwcG9ydCBpbmxpbmUgU1ZHLlxuICAgICAgICA8L3N2Zz5cbiAgICAgIDwvZGl2PlxuICAgIH1cbiAgICBAaWYgKGNvbmZpZygpLnRlbXBsYXRlOyBhcyB0ZW1wbGF0ZUNvbmZpZykge1xuICAgICAgPGRpdiBMaWJzVWlDb21wb25lbnRzU2Nyb2xsT3ZlcmxheURpcmVjdGl2ZVxuICAgICAgICBjbGFzcz1cImxpYnMtdWktcG9wb3Zlci1vdmVybGF5LWJvZHkge3sgY29uZmlnKCkuY2xhc3NJbmNsdWRlT3ZlcmxheUJvZHkgfHwgJycgfX1cIlxuICAgICAgICBbYXR0ci5pc1RlbXBsYXRlXT1cInRydWVcIlxuICAgICAgICBbc3R5bGUubWF4LWhlaWdodF09XCIoY29uZmlnKCkubWF4SGVpZ2h0KSsncHgnXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0ZW1wbGF0ZUNvbmZpZztjb250ZXh0OntpdGVtQ29udGV4dDpjb25maWcoKS5pdGVtQ29udGV4dH1cIiAvPlxuICAgICAgPC9kaXY+XG4gICAgfSBAZWxzZSB7XG4gICAgICA8ZGl2IGNsYXNzPVwibGlicy11aS1wb3BvdmVyLW92ZXJsYXktYm9keSBsaWJzLXVpLWZvbnQtaDdyIHt7IGNvbmZpZygpLmNsYXNzSW5jbHVkZU92ZXJsYXlCb2R5IHx8ICcnIH19XCJcbiAgICAgICAgTGlic1VpQ29tcG9uZW50c1Njcm9sbE92ZXJsYXlEaXJlY3RpdmVcbiAgICAgICAgW29wdGlvbnNdPVwiY29uZmlnKCkuc2Nyb2xsT3ZlcmxheU9wdGlvbnNcIlxuICAgICAgICBbc3R5bGUubWF4SGVpZ2h0LnB4XT1cImNvbmZpZygpLm1heEhlaWdodFwiXG4gICAgICAgIFtzdHlsZS5wYWRkaW5nVG9wLnB4XT1cImNvbmZpZygpLnBhZGRpbmdUb3AgPz8gOFwiXG4gICAgICAgIFtzdHlsZS5wYWRkaW5nUmlnaHQucHhdPVwiY29uZmlnKCkucGFkZGluZ1JpZ2h0ID8/IDhcIlxuICAgICAgICBbc3R5bGUucGFkZGluZ0xlZnQucHhdPVwiY29uZmlnKCkucGFkZGluZ0xlZnQgPz8gOFwiXG4gICAgICAgIFtzdHlsZS5wYWRkaW5nQm90dG9tLnB4XT1cImNvbmZpZygpLnBhZGRpbmdCb3R0b20gPz8gOFwiXG4gICAgICAgIFtpbm5lckh0bWxdPVwiKGNvbmZpZygpLmNvbnRlbnQgfHwgJyAnKSB8IHRyYW5zbGF0ZVwiPlxuICAgICAgPC9kaXY+XG4gICAgfVxuICB9XG5cbjwvZGl2PlxuIl19
|
|
293
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3ZlcmxheS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzLXVpL2NvbXBvbmVudHMvcG9wb3Zlci9zcmMvb3ZlcmxheS9vdmVybGF5LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMtdWkvY29tcG9uZW50cy9wb3BvdmVyL3NyYy9vdmVybGF5L292ZXJsYXkuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN2RSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBYSxNQUFNLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNySCxPQUFPLEVBQUUsc0NBQXNDLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUU1RixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsU0FBUyxFQUFFLHdCQUF3QixFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3hHLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7QUFZMUQsTUFBTSxPQUFPLHVDQUF1QztJQUNsRCxnQkFBZ0I7SUFDTixnQkFBZ0IsR0FBRyxNQUFNLENBQXlCLFFBQVEsQ0FBQyxDQUFDO0lBQzVELFVBQVUsR0FBRyxNQUFNLENBQVMsRUFBRSxDQUFDLENBQUM7SUFDaEMsR0FBRyxHQUFHLE1BQU0sQ0FBUyxDQUFDLENBQUMsQ0FBQztJQUN4QixJQUFJLEdBQUcsTUFBTSxDQUFTLENBQUMsQ0FBQyxDQUFDO0lBQ3pCLFNBQVMsR0FBRyxNQUFNLENBQVMsQ0FBQyxDQUFDLENBQUM7SUFDOUIs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SSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ2xDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLCtDQUErQyxFQUFFLEdBQUcsV0FBVyxDQUFDLGVBQWUsRUFBRSxJQUFJLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQztRQUN4SSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxtREFBbUQsRUFBRSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxLQUFLLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsV0FBVyxDQUFDLGVBQWUsRUFBRSxRQUFRLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNsTSxDQUFDO0lBRUQsV0FBVztRQUNULFlBQVksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztRQUM3QixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDNUIsQ0FBQzt3R0E3VVUsdUNBQXVDOzRGQUF2Qyx1Q0FBdUMsc05DbEJwRCx5akVBOENBLCs3Q0Q5QlksZUFBZSw0RkFBRSxPQUFPLHNFQUFFLFNBQVMsOENBQUUsc0NBQXNDLDhRQUFFLGdCQUFnQjs7NEZBRTVGLHVDQUF1QztrQkFUbkQsU0FBUzsrQkFFRSxvQ0FBb0MsY0FHbEMsSUFBSSxtQkFDQyx1QkFBdUIsQ0FBQyxNQUFNLFdBQ3RDLENBQUMsZUFBZSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsc0NBQXNDLEVBQUUsZ0JBQWdCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBc3luY1BpcGUsIE5nU3R5bGUsIE5nVGVtcGxhdGVPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgRWxlbWVudFJlZiwgT25EZXN0cm95LCBpbmplY3QsIHNpZ25hbCwgdmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBMaWJzVWlDb21wb25lbnRzU2Nyb2xsT3ZlcmxheURpcmVjdGl2ZSB9IGZyb20gJ0BsaWJzLXVpL2NvbXBvbmVudHMtc2Nyb2xsLW92ZXJsYXknO1xuaW1wb3J0IHsgSUJvdW5kaW5nQ2xpZW50UmVjdCB9IGZyb20gJ0BsaWJzLXVpL2ludGVyZmFjZXMtdHlwZXMnO1xuaW1wb3J0IHsgVXRpbHNVcmxTZWFyY2hQYXJhbXMsIGNsb25lRGVlcCwgY2xvbmVJQm91bmRpbmdDbGllbnRSZWN0LCBnZXRWaWV3cG9ydCB9IGZyb20gJ0BsaWJzLXVpL3V0aWxzJztcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgU3ViamVjdCwgaW50ZXJ2YWwsIHRha2UsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgSVBvcG92ZXJPdmVybGF5IH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9vdmVybGF5LmludGVyZmFjZSc7XG5pbXBvcnQgeyBUWVBFX1BPUE9WRVJfRElSRUNUSU9OIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9wb3BvdmVyLnR5cGUnO1xuQENvbXBvbmVudCh7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvY29tcG9uZW50LXNlbGVjdG9yXG4gIHNlbGVjdG9yOiAnbGlic191aS1jb21wb25lbnRzLXBvcG92ZXItb3ZlcmxheScsXG4gIHRlbXBsYXRlVXJsOiAnLi9vdmVybGF5LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vb3ZlcmxheS5jb21wb25lbnQuc2NzcyddLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgaW1wb3J0czogW1RyYW5zbGF0ZU1vZHVsZSwgTmdTdHlsZSwgQXN5bmNQaXBlLCBMaWJzVWlDb21wb25lbnRzU2Nyb2xsT3ZlcmxheURpcmVjdGl2ZSwgTmdUZW1wbGF0ZU91dGxldF1cbn0pXG5leHBvcnQgY2xhc3MgTGlic1VpQ29tcG9uZW50c1BvcG92ZXJPdmVybGF5Q29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgLyogUFJPUEVSVElFUyAqL1xuICBwcm90ZWN0ZWQgY3VycmVudERpcmVjdGlvbiA9IHNpZ25hbDxUWVBFX1BPUE9WRVJfRElSRUNUSU9OPignYm90dG9tJyk7XG4gIHByb3RlY3RlZCBhcnJvd0NsYXNzID0gc2lnbmFsPHN0cmluZz4oJycpO1xuICBwcm90ZWN0ZWQgdG9wID0gc2lnbmFsPG51bWJlcj4oMCk7XG4gIHByb3RlY3RlZCBsZWZ0ID0gc2lnbmFsPG51bWJlcj4oMCk7XG4gIHByb3RlY3RlZCBhcnJvd0xlZnQgPSBzaWduYWw8bnVtYmVyPigwKTtcbiAgcHJvdGVjdGVkIGFycm93VG9wID0gc2lnbmFsPG51bWJlcj4oMCk7XG4gIHByb3RlY3RlZCBjb25maWcgPSBzaWduYWw8SVBvcG92ZXJPdmVybGF5Pih7fSk7XG5cbiAgcHJpdmF0ZSBkaXJlY3Rpb25zID0gc2lnbmFsPE1hcDxzdHJpbmcsIEFycmF5PFRZUEVfUE9QT1ZFUl9ESVJFQ1RJT04+Pj4obmV3IE1hcCgpKTtcbiAgcHJpdmF0ZSB0aW1lb3V0ID0gc2lnbmFsPG51bWJlcj4oMCk7XG4gIHByaXZhdGUgb25EZXN0cm95ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAvLyAjcmVnaW9uIE9VVFBVVFxuICByZWFkb25seSBvdXRFdmVudDogU3ViamVjdDxUWVBFX1BPUE9WRVJfRElSRUNUSU9OPiA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgLyogVklFVyBDSElMRCAqL1xuICBwcml2YXRlIGNvbnRhaW5lciA9IHZpZXdDaGlsZC5yZXF1aXJlZDxFbGVtZW50UmVmPignY29udGFpbmVyJyk7XG5cbiAgLy8gI3JlZ2lvbiBJTkpFQ1RcbiAgcHJpdmF0ZSBlbGVtZW50UmVmID0gaW5qZWN0KEVsZW1lbnRSZWYpO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuZGlyZWN0aW9ucygpLnNldCgnYm90dG9tJywgWydib3R0b20nLCAndG9wJywgJ3JpZ2h0JywgJ2xlZnQnXSk7XG4gICAgdGhpcy5kaXJlY3Rpb25zKCkuc2V0KCdyaWdodCcsIFsncmlnaHQnLCAnbGVmdCcsICdib3R0b20nLCAndG9wJ10pO1xuICAgIHRoaXMuZGlyZWN0aW9ucygpLnNldCgnbGVmdCcsIFsnbGVmdCcsICdyaWdodCcsICdib3R0b20nLCAndG9wJ10pO1xuICAgIHRoaXMuZGlyZWN0aW9ucygpLnNldCgndG9wJywgWyd0b3AnLCAnYm90dG9tJywgJ3JpZ2h0JywgJ2xlZnQnXSk7XG4gIH1cblxuICAvLyAjcmVnaW9uIEZVTkNUSU9OU1xuICBwdWJsaWMgZ2V0IEVsZW1lbnRSZWYoKSB7XG4gICAgcmV0dXJuIHRoaXMuZWxlbWVudFJlZjtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgQ29udGFpbmVyRWxlbWVudCgpIHtcbiAgICByZXR1cm4gdGhpcy5jb250YWluZXIoKS5uYXRpdmVFbGVtZW50O1xuICB9XG5cbiAgcHVibGljIHNldENvbmZpZyhyZWN0T3JpZ2luOiBJQm91bmRpbmdDbGllbnRSZWN0LCBjb25maWc6IElQb3BvdmVyT3ZlcmxheSwgaXNBZGRDb250ZW50VG9QYXJlbnREb2N1bWVudD86IGJvb2xlYW4pIHtcbiAgICBpc0FkZENvbnRlbnRUb1BhcmVudERvY3VtZW50ID0gaXNBZGRDb250ZW50VG9QYXJlbnREb2N1bWVudCB8fCBjb25maWcuaXNBZGRDb250ZW50VG9QYXJlbnREb2N1bWVudDtcbiAgICByZWN0T3JpZ2luID0gY2xvbmVJQm91bmRpbmdDbGllbnRSZWN0KHJlY3RPcmlnaW4pO1xuICAgIHRoaXMuY29uZmlnLnNldChjbG9uZURlZXAoY29uZmlnKSk7XG5cbiAgICB0aGlzLmNvbnRhaW5lcigpLm5hdGl2ZUVsZW1lbnQuc3R5bGUub3BhY2l0eSA9IDA7XG4gICAgaWYgKHRoaXMuY29uZmlnKCkud2lkdGhCeVBhcmVudCkge1xuICAgICAgdGhpcy5jb25maWcudXBkYXRlKGNvbmZpZyA9PiAoeyAuLi5jb25maWcsIHdpZHRoOiByZWN0T3JpZ2luLndpZHRoIC0gKGNvbmZpZz8ucGFyZW50Qm9yZGVyV2lkdGggfHwgMCkgKiAyIH0pKTtcbiAgICB9XG4gICAgbGV0IHZpZXdQb3J0ID0gZ2V0Vmlld3BvcnQoKTtcbiAgICBsZXQgcmVjdEZyYW1lOiBJQm91bmRpbmdDbGllbnRSZWN0IHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xuXG4gICAgaWYgKGlzQWRkQ29udGVudFRvUGFyZW50RG9jdW1lbnQpIHtcbiAgICAgIHZpZXdQb3J0ID0gZ2V0Vmlld3BvcnQod2luZG93LnBhcmVudCk7XG4gICAgICBjb25zdCB1cmwgPSBuZXcgVXRpbHNVcmxTZWFyY2hQYXJhbXMobG9jYXRpb24uaHJlZik7XG4gICAgICBjb25zdCBpZnJhbWVJZCA9IHVybC5nZXQoJ2lmcmFtZUlkJyk7XG5cbiAgICAgIHJlY3RGcmFtZSA9IHdpbmRvdy5wYXJlbnQuZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoYGlmcmFtZS0ke2lmcmFtZUlkfWApPy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgIGlmIChyZWN0RnJhbWUpIHtcbiAgICAgICAgcmVjdE9yaWdpbi50b3AgKz0gcmVjdEZyYW1lLnRvcDtcbiAgICAgICAgcmVjdE9yaWdpbi5sZWZ0ICs9IHJlY3RGcmFtZS5sZWZ0O1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0aGlzLmNvbmZpZygpLm1heEhlaWdodCA9PT0gbnVsbCkge1xuICAgICAgdGhpcy5jb25maWcudXBkYXRlKGNvbmZpZyA9PiAoeyAuLi5jb25maWcsIG1heEhlaWdodDogdmlld1BvcnQuaGVpZ2h0IC0gcmVjdE9yaWdpbi50b3AgLSA0NCB9KSk7XG4gICAgfVxuXG4gICAgY2xlYXJUaW1lb3V0KHRoaXMudGltZW91dCgpKTtcbiAgICB0aGlzLnNldFZhcmlhYmxlQ3NzKCk7XG4gICAgdGhpcy5zZXREaXJlY3Rpb25zKHJlY3RPcmlnaW4sIHZpZXdQb3J0LCByZWN0RnJhbWUpO1xuICAgIGxldCByZWN0Q29udGVudCA9IGNsb25lSUJvdW5kaW5nQ2xpZW50UmVjdCh0aGlzLmNvbnRhaW5lcigpLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkpO1xuXG4gICAgaWYgKHJlY3RGcmFtZSkge1xuICAgICAgcmVjdENvbnRlbnQudG9wICs9IHJlY3RGcmFtZS50b3A7XG4gICAgICByZWN0Q29udGVudC5sZWZ0ICs9IHJlY3RGcmFtZS5sZWZ0O1xuICAgIH1cblxuICAgIGludGVydmFsKDI1MCkucGlwZSh0YWtlKDQpLCB0YWtlVW50aWwodGhpcy5vbkRlc3Ryb3kpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgY29uc3QgcmVjdCA9IGNsb25lSUJvdW5kaW5nQ2xpZW50UmVjdCh0aGlzLmNvbnRhaW5lcigpLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkpO1xuXG4gICAgICBpZiAocmVjdEZyYW1lKSB7XG4gICAgICAgIHJlY3QudG9wICs9IHJlY3RGcmFtZS50b3A7XG4gICAgICAgIHJlY3QubGVmdCArPSByZWN0RnJhbWUubGVmdDtcbiAgICAgIH1cbiAgICAgIGlmIChyZWN0LndpZHRoICE9PSByZWN0Q29udGVudC53aWR0aCB8fCByZWN0LmhlaWdodCAhPT0gcmVjdENvbnRlbnQuaGVpZ2h0IHx8IHJlY3QudG9wICE9PSByZWN0Q29udGVudC50b3AgfHwgcmVjdC5sZWZ0ICE9PSByZWN0Q29udGVudC5sZWZ0KSB7XG4gICAgICAgIGNsZWFyVGltZW91dCh0aGlzLnRpbWVvdXQoKSk7XG4gICAgICAgIHRoaXMuc2V0RGlyZWN0aW9ucyhyZWN0T3JpZ2luLCB2aWV3UG9ydCwgcmVjdEZyYW1lKTtcbiAgICAgICAgcmVjdENvbnRlbnQgPSByZWN0O1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXREaXJlY3Rpb25zKHJlY3RPcmlnaW46IElCb3VuZGluZ0NsaWVudFJlY3QsIHZpZXdQb3J0OiB7IHdpZHRoOiBudW1iZXIsIGhlaWdodDogbnVtYmVyIH0sIHJlY3RGcmFtZT86IElCb3VuZGluZ0NsaWVudFJlY3QpIHtcbiAgICBjb25zdCBkaXJlY3Rpb25zID0gdGhpcy5kaXJlY3Rpb25zKCkuZ2V0KHRoaXMuY29uZmlnKCkuZGlyZWN0aW9uIHx8ICdib3R0b20nKSB8fCBbJ2JvdHRvbScsICdyaWdodCcsICdsZWZ0JywgJ3RvcCddO1xuICAgIGNvbnN0IHBvc2l0aW9uTGFzdCA9IGRpcmVjdGlvbnMubGVuZ3RoIC0gMTtcblxuICAgIHRoaXMudGltZW91dC5zZXQoc2V0VGltZW91dChhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCByZWN0Q29udGVudCA9IGNsb25lSUJvdW5kaW5nQ2xpZW50UmVjdCh0aGlzLmNvbnRhaW5lcigpLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkpO1xuXG4gICAgICBpZiAocmVjdEZyYW1lKSB7XG4gICAgICAgIHJlY3RDb250ZW50LnRvcCArPSByZWN0RnJhbWUudG9wO1xuICAgICAgICByZWN0Q29udGVudC5sZWZ0ICs9IHJlY3RGcmFtZS5sZWZ0O1xuICAgICAgfVxuICAgICAgZm9yIChjb25zdCBpbmRleCBpbiBkaXJlY3Rpb25zKSB7XG4gICAgICAgIGlmIChhd2FpdCB0aGlzLmxvb3BEaXJlY3Rpb24ocmVjdE9yaWdpbiwgcmVjdENvbnRlbnQsIGRpcmVjdGlvbnNbaW5kZXhdLCBwb3NpdGlvbkxhc3QgPT09ICtpbmRleCwgdmlld1BvcnQpKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSwgNTApKTtcbiAgfVxuXG4gIHByaXZhdGUgbG9vcERpcmVjdGlvbihyZWN0T3JpZ2luOiBJQm91bmRpbmdDbGllbnRSZWN0LCByZWN0Q29udGVudDogSUJvdW5kaW5nQ2xpZW50UmVjdCwgZGlyZWN0aW9uOiBUWVBFX1BPUE9WRVJfRElSRUNUSU9OLCBpc0xhc3Q6IGJvb2xlYW4sIHZpZXdQb3J0OiB7IHdpZHRoOiBudW1iZXIsIGhlaWdodDogbnVtYmVyIH0pOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7XG4gICAgICBjb25zdCBwb3NpdGlvbk1vZGUgPSB0aGlzLmNvbmZpZygpLnBvc2l0aW9uPy5tb2RlIHx8ICdzdGFydCc7XG4gICAgICBjb25zdCB7IHBvc2l0aW9uIH0gPSB0aGlzLmNvbmZpZygpO1xuICAgICAgbGV0IHJlc3VsdCA9IHRoaXMuc2V0UG9zaXRpb24oZGlyZWN0aW9uLCByZWN0T3JpZ2luLCAocmVjdENvbnRlbnQgYXMgSUJvdW5kaW5nQ2xpZW50UmVjdCksIHZpZXdQb3J0LCBpc0xhc3QpO1xuXG4gICAgICBpZiAoIXJlc3VsdCkge1xuXG4gICAgICAgIGlmIChwb3NpdGlvbikge1xuICAgICAgICAgIHBvc2l0aW9uLm1vZGUgPSBwb3NpdGlvbk1vZGUgPT09ICdjZW50ZXInIHx8IHBvc2l0aW9uTW9kZSA9PT0gJ3N0YXJ0JyA/ICdlbmQnIDogJ3N0YXJ0JztcbiAgICAgICAgICBpZiAoIXRoaXMuY29uZmlnKCkuaWdub3JlQXJyb3cgJiYgcG9zaXRpb24uYXV0b1VwZGF0ZVBvc2l0aW9uKSB7XG4gICAgICAgICAgICBwb3NpdGlvbi5kaXN0YW5jZSA9IHBvc2l0aW9uLm1vZGUgPT09ICdlbmQnID8gcG9zaXRpb24uYXV0b1VwZGF0ZVBvc2l0aW9uLmVuZERpc3RhbmNlIDogcG9zaXRpb24uYXV0b1VwZGF0ZVBvc2l0aW9uLnN0YXJ0RGlzdGFuY2U7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuY29uZmlnLnVwZGF0ZShjb25maWcgPT4gKHsgLi4uY29uZmlnIH0pKTtcbiAgICAgICAgfVxuICAgICAgICByZXN1bHQgPSB0aGlzLnNldFBvc2l0aW9uKGRpcmVjdGlvbiwgcmVjdE9yaWdpbiwgKHJlY3RDb250ZW50IGFzIElCb3VuZGluZ0NsaWVudFJlY3QpLCB2aWV3UG9ydCwgaXNMYXN0KTtcbiAgICAgIH1cbiAgICAgIGlmICghcmVzdWx0ICYmIHBvc2l0aW9uTW9kZSA9PT0gJ2NlbnRlcicpIHtcbiAgICAgICAgaWYgKHBvc2l0aW9uKSB7XG4gICAgICAgICAgcG9zaXRpb24ubW9kZSA9IHBvc2l0aW9uLm1vZGUgPT09ICdzdGFydCcgPyAnZW5kJyA6ICdzdGFydCc7XG4gICAgICAgICAgdGhpcy5jb25maWcudXBkYXRlKGNvbmZpZyA9PiAoeyAuLi5jb25maWcgfSkpO1xuICAgICAgICB9XG4gICAgICAgIHJlc3VsdCA9IHRoaXMuc2V0UG9zaXRpb24oZGlyZWN0aW9uLCByZWN0T3JpZ2luLCAocmVjdENvbnRlbnQgYXMgSUJvdW5kaW5nQ2xpZW50UmVjdCksIHZpZXdQb3J0LCBpc0xhc3QpO1xuICAgICAgfVxuICAgICAgaWYgKCFyZXN1bHQpIHtcbiAgICAgICAgaWYgKHBvc2l0aW9uKSB7XG4gICAgICAgICAgcG9zaXRpb24ubW9kZSA9IHBvc2l0aW9uTW9kZTtcbiAgICAgICAgICB0aGlzLmNvbmZpZy51cGRhdGUoY29uZmlnID0+ICh7IC4uLmNvbmZpZyB9KSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcmVzb2x2ZShmYWxzZSk7XG4gICAgICB9XG4gICAgICB0aGlzLmN1cnJlbnREaXJlY3Rpb24uc2V0KGRpcmVjdGlvbik7XG4gICAgICB0aGlzLnNldFZhcmlhYmxlQ3NzKCk7XG4gICAgICB0aGlzLnNldENsYXNzQXJyb3coZGlyZWN0aW9uKTtcbiAgICAgIHRoaXMuY29udGFpbmVyKCkubmF0aXZlRWxlbWVudC5zdHlsZS5vcGFjaXR5ID0gMTtcbiAgICAgIHRoaXMub3V0RXZlbnQubmV4dChkaXJlY3Rpb24pO1xuXG4gICAgICByZXR1cm4gcmVzb2x2ZSh0cnVlKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0UG9zaXRpb24oZGlyZWN0aW9uOiBUWVBFX1BPUE9WRVJfRElSRUNUSU9OLCByZWN0T3JpZ2luOiBJQm91bmRpbmdDbGllbnRSZWN0LCByZWN0Q29udGVudDogSUJvdW5kaW5nQ2xpZW50UmVjdCwgdmlld1BvcnQ6IHsgd2lkdGg6IG51bWJlciwgaGVpZ2h0OiBudW1iZXIgfSwgaXNMYXN0OiBib29sZWFuKTogYm9vbGVhbiB7XG4gICAgY29uc3QgaGFsZlNxdWFyZSA9IDY7XG4gICAgY29uc3QgZGlzdGFuY2VBcnJvdyA9IDQ7XG4gICAgbGV0IGJvdHRvbVBvc2l0aW9uUmVjdENvbnRlbnQgPSAwO1xuICAgIGxldCBwb3NpdGlvblRvcCA9IDA7XG4gICAgbGV0IHBvc2l0aW9uTGVmdCA9IDA7XG4gICAgbGV0IHRvcCA9IDA7XG4gICAgbGV0IGxlZnQgPSAwO1xuICAgIGNvbnN0IGNvbmZpZ1ZhbHVlID0gdGhpcy5jb25maWcoKTtcblxuICAgIHN3aXRjaCAoZGlyZWN0aW9uKSB7XG4gICAgICBjYXNlICdib3R0b20nOlxuICAgICAgICBwb3NpdGlvblRvcCA9IHJlY3RPcmlnaW4udG9wICsgcmVjdE9yaWdpbi5oZWlnaHQgKyBkaXN0YW5jZUFycm93O1xuICAgICAgICBwb3NpdGlvbkxlZnQgPSByZWN0T3JpZ2luLmxlZnQgKyByZWN0T3JpZ2luLndpZHRoIC8gMiAtIGhhbGZTcXVhcmU7XG4gICAgICAgIHRvcCA9IHBvc2l0aW9uVG9wICsgaGFsZlNxdWFyZTtcbiAgICAgICAgbGVmdCA9IHBvc2l0aW9uTGVmdCAtIHJlY3RDb250ZW50LndpZHRoIC8gMiArIGhhbGZTcXVhcmU7XG4gICAgICAgIGlmIChjb25maWdWYWx1ZS5pZ25vcmVBcnJvdykge1xuICAgICAgICAgIHRvcCA9IHRvcCAtIGhhbGZTcXVhcmUgLSBkaXN0YW5jZUFycm93O1xuICAgICAgICB9XG4gICAgICAgIHRvcCArPSBjb25maWdWYWx1ZS5kaXJlY3Rpb25EaXN0YW5jZSB8fCAwO1xuICAgICAgICBpZiAoY29uZmlnVmFsdWUucG9zaXRpb24/Lm1vZGUgPT09ICdzdGFydCcpIHtcbiAgICAgICAgICBsZWZ0ID0gcmVjdE9yaWdpbi5sZWZ0ICsgKGNvbmZpZ1ZhbHVlLnBvc2l0aW9uLmRpc3RhbmNlIHx8IDApO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjb25maWdWYWx1ZS5wb3NpdGlvbj8ubW9kZSA9PT0gJ2VuZCcpIHtcbiAgICAgICAgICBsZWZ0ID0gcmVjdE9yaWdpbi5sZWZ0ICsgcmVjdE9yaWdpbi53aWR0aCAtIHJlY3RDb250ZW50LndpZHRoICsgKGNvbmZpZ1ZhbHVlLnBvc2l0aW9uLmRpc3RhbmNlIHx8IDApO1xuICAgICAgICB9XG4gICAgICAgIGxlZnQgKz0gKGNvbmZpZ1ZhbHVlLnBhcmVudEJvcmRlcldpZHRoIHx8IDApO1xuXG4gICAgICAgIHRoaXMuYXJyb3dMZWZ0LnNldChwb3NpdGlvbkxlZnQgLSBsZWZ0KTtcbiAgICAgICAgdGhpcy5hcnJvd1RvcC5zZXQoLTYpO1xuICAgICAgICB0aGlzLnRvcC5zZXQodG9wKTtcbiAgICAgICAgdGhpcy5sZWZ0LnNldChsZWZ0KTtcbiAgICAgICAgaWYgKHRvcCArIHJlY3RDb250ZW50LmhlaWdodCA8IHZpZXdQb3J0LmhlaWdodCAmJiBsZWZ0ID49IDAgJiYgbGVmdCArIHJlY3RDb250ZW50LndpZHRoIDwgdmlld1BvcnQud2lkdGgpIHtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNMYXN0KSB7XG4gICAgICAgICAgaWYgKHRoaXMuY29uZmlnKSB7XG4gICAgICAgICAgICB0aGlzLmNvbmZpZy51cGRhdGUoY29uZmlnID0+ICh7IC4uLmNvbmZpZywgbWF4SGVpZ2h0OiB2aWV3UG9ydC5oZWlnaHQgLSByZWN0T3JpZ2luLnRvcCAtIHJlY3RPcmlnaW4uaGVpZ2h0IH0pKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgbGVmdCA9IGxlZnQgPj0gMCA/IGxlZnQgOiAwO1xuICAgICAgICAgIHRoaXMubGVmdC5zZXQobGVmdCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZmFsc2U7XG5cbiAgICAgIGNhc2UgJ3JpZ2h0JzpcbiAgICAgICAgcG9zaXRpb25Ub3AgPSByZWN0T3JpZ2luLnRvcCArIHJlY3RPcmlnaW4uaGVpZ2h0IC8gMiAtIGhhbGZTcXVhcmU7XG4gICAgICAgIHBvc2l0aW9uTGVmdCA9IHJlY3RPcmlnaW4ubGVmdCArIHJlY3RPcmlnaW4ud2lkdGggKyBkaXN0YW5jZUFycm93O1xuICAgICAgICB0b3AgPSBwb3NpdGlvblRvcCAtIHJlY3RDb250ZW50LmhlaWdodCAvIDIgKyBoYWxmU3F1YXJlO1xuICAgICAgICBsZWZ0ID0gcG9zaXRpb25MZWZ0ICsgaGFsZlNxdWFyZTtcblxuICAgICAgICBpZiAoY29uZmlnVmFsdWUuaWdub3JlQXJyb3cpIHtcbiAgICAgICAgICBsZWZ0ID0gcG9zaXRpb25MZWZ0IC0gZGlzdGFuY2VBcnJvdztcbiAgICAgICAgfVxuXG4gICAgICAgIGxlZnQgKz0gY29uZmlnVmFsdWUuZGlyZWN0aW9uRGlzdGFuY2UgfHwgMDtcbiAgICAgICAgaWYgKGNvbmZpZ1ZhbHVlLnBvc2l0aW9uPy5tb2RlID09PSAnc3RhcnQnKSB7XG4gICAgICAgICAgdG9wID0gcmVjdE9yaWdpbi50b3AgKyAoY29uZmlnVmFsdWUucG9zaXRpb24/LmRpc3RhbmNlIHx8IDApO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNvbmZpZ1ZhbHVlLnBvc2l0aW9uPy5tb2RlID09PSAnZW5kJykge1xuICAgICAgICAgIHRvcCA9IHJlY3RPcmlnaW4udG9wICsgcmVjdE9yaWdpbi5oZWlnaHQgLSByZWN0Q29udGVudC5oZWlnaHQgKyAoY29uZmlnVmFsdWUucG9zaXRpb24uZGlzdGFuY2UgfHwgMCk7XG4gICAgICAgIH1cblxuICAgICAgICBib3R0b21Qb3NpdGlvblJlY3RDb250ZW50ID0gdG9wICsgcmVjdENvbnRlbnQuaGVpZ2h0O1xuXG4gICAgICAgIGlmIChib3R0b21Qb3NpdGlvblJlY3RDb250ZW50ID4gdmlld1BvcnQuaGVpZ2h0KSB7XG4gICAgICAgICAgdG9wID0gdG9wIC0gKGJvdHRvbVBvc2l0aW9uUmVjdENvbnRlbnQgLSB2aWV3UG9ydC5oZWlnaHQpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5hcnJvd1RvcC5zZXQocG9zaXRpb25Ub3AgLSB0b3AgKyAyKTtcbiAgICAgICAgdGhpcy5hcnJvd0xlZnQuc2V0KC05KTtcblxuICAgICAgICB0aGlzLnRvcC5zZXQodG9wKTtcbiAgICAgICAgdGhpcy5sZWZ0LnNldChsZWZ0KTtcbiAgICAgICAgaWYgKHRvcCA+IDAgJiYgbGVmdCArIHJlY3RDb250ZW50LndpZHRoIDwgdmlld1BvcnQud2lkdGgpIHtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBmYWxzZTtcblxuICAgICAgY2FzZSAnbGVmdCc6XG4gICAgICAgIHBvc2l0aW9uVG9wID0gcmVjdE9yaWdpbi50b3AgKyByZWN0T3JpZ2luLmhlaWdodCAvIDIgLSBoYWxmU3F1YXJlO1xuICAgICAgICBwb3NpdGlvbkxlZnQgPSByZWN0T3JpZ2luLmxlZnQgLSAoaGFsZlNxdWFyZSAqIDIpIC0gZGlzdGFuY2VBcnJvdztcbiAgICAgICAgdG9wID0gcG9zaXRpb25Ub3AgLSByZWN0Q29udGVudC5oZWlnaHQgLyAyICsgaGFsZlNxdWFyZTtcbiAgICAgICAgbGVmdCA9IHBvc2l0aW9uTGVmdCAtIHJlY3RDb250ZW50LndpZHRoICsgaGFsZlNxdWFyZTtcbiAgICAgICAgaWYgKGNvbmZpZ1ZhbHVlLmlnbm9yZUFycm93KSB7XG4gICAgICAgICAgbGVmdCA9IGxlZnQgKyBoYWxmU3F1YXJlICsgZGlzdGFuY2VBcnJvdztcbiAgICAgICAgfVxuXG4gICAgICAgIGxlZnQgLT0gY29uZmlnVmFsdWU/LmRpcmVjdGlvbkRpc3RhbmNlIHx8IDA7XG4gICAgICAgIGlmIChjb25maWdWYWx1ZS5wb3NpdGlvbj8ubW9kZSA9PT0gJ3N0YXJ0Jykge1xuICAgICAgICAgIHRvcCA9IHJlY3RPcmlnaW4udG9wICsgKGNvbmZpZ1ZhbHVlLnBvc2l0aW9uLmRpc3RhbmNlIHx8IDApO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNvbmZpZ1ZhbHVlLnBvc2l0aW9uPy5tb2RlID09PSAnZW5kJykge1xuICAgICAgICAgIHRvcCA9IHJlY3RPcmlnaW4udG9wICsgcmVjdE9yaWdpbi5oZWlnaHQgLSByZWN0Q29udGVudC5oZWlnaHQgKyAoY29uZmlnVmFsdWUucG9zaXRpb24uZGlzdGFuY2UgfHwgMCk7XG4gICAgICAgIH1cblxuICAgICAgICBib3R0b21Qb3NpdGlvblJlY3RDb250ZW50ID0gdG9wICsgcmVjdENvbnRlbnQuaGVpZ2h0O1xuXG4gICAgICAgIGlmIChib3R0b21Qb3NpdGlvblJlY3RDb250ZW50ID4gdmlld1BvcnQuaGVpZ2h0KSB7XG4gICAgICAgICAgdG9wID0gdG9wIC0gKGJvdHRvbVBvc2l0aW9uUmVjdENvbnRlbnQgLSB2aWV3UG9ydC5oZWlnaHQpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5hcnJvd1RvcC5zZXQocG9zaXRpb25Ub3AgLSB0b3AgKyAyKTtcbiAgICAgICAgdGhpcy5hcnJvd0xlZnQuc2V0KHJlY3RDb250ZW50LndpZHRoIC0gMyk7XG5cbiAgICAgICAgdGhpcy50b3Auc2V0KHRvcCk7XG4gICAgICAgIHRoaXMubGVmdC5zZXQobGVmdCk7XG4gICAgICAgIGlmIChsZWZ0ID4gMCAmJiB0b3AgPiAwKSB7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZmFsc2U7XG5cbiAgICAgIGNhc2UgJ3RvcCc6XG4gICAgICAgIHBvc2l0aW9uVG9wID0gcmVjdE9yaWdpbi50b3AgLSAoaGFsZlNxdWFyZSAqIDIpIC0gZGlzdGFuY2VBcnJvdztcbiAgICAgICAgcG9zaXRpb25MZWZ0ID0gcmVjdE9yaWdpbi5sZWZ0ICsgcmVjdE9yaWdpbi53aWR0aCAvIDIgLSBoYWxmU3F1YXJlO1xuICAgICAgICB0b3AgPSBwb3NpdGlvblRvcCAtIHJlY3RDb250ZW50LmhlaWdodCArIGhhbGZTcXVhcmU7XG4gICAgICAgIGxlZnQgPSBwb3NpdGlvbkxlZnQgLSByZWN0Q29udGVudC53aWR0aCAvIDIgKyBoYWxmU3F1YXJlO1xuXG4gICAgICAgIGlmIChjb25maWdWYWx1ZS5pZ25vcmVBcnJvdykge1xuICAgICAgICAgIHRvcCA9IHRvcCArIGhhbGZTcXVhcmUgKyBkaXN0YW5jZUFycm93O1xuICAgICAgICB9XG5cbiAgICAgICAgdG9wIC09IGNvbmZpZ1ZhbHVlLmRpcmVjdGlvbkRpc3RhbmNlIHx8IDA7XG5cbiAgICAgICAgaWYgKGNvbmZpZ1ZhbHVlLnBvc2l0aW9uICYmIGNvbmZpZ1ZhbHVlLnBvc2l0aW9uPy5tb2RlID09PSAnc3RhcnQnKSB7XG4gICAgICAgICAgbGVmdCA9IHJlY3RPcmlnaW4ubGVmdCArIChjb25maWdWYWx1ZS5wb3NpdGlvbi5kaXN0YW5jZSB8fCAwKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjb25maWdWYWx1ZS5wb3NpdGlvbiAmJiBjb25maWdWYWx1ZS5wb3NpdGlvbj8ubW9kZSA9PT0gJ2VuZCcpIHtcbiAgICAgICAgICBsZWZ0ID0gcmVjdE9yaWdpbi5sZWZ0ICsgcmVjdE9yaWdpbi53aWR0aCAtIHJlY3RDb250ZW50LndpZHRoICsgKGNvbmZpZ1ZhbHVlLnBvc2l0aW9uLmRpc3RhbmNlIHx8IDApO1xuICAgICAgICB9XG5cbiAgICAgICAgbGVmdCArPSAoY29uZmlnVmFsdWUucGFyZW50Qm9yZGVyV2lkdGggfHwgMCk7XG4gICAgICAgIHRoaXMuYXJyb3dMZWZ0LnNldChwb3NpdGlvbkxlZnQgLSBsZWZ0KTtcbiAgICAgICAgdGhpcy5hcnJvd1RvcC5zZXQocmVjdENvbnRlbnQuaGVpZ2h0KTtcbiAgICAgICAgdGhpcy50b3Auc2V0KHRvcCk7XG4gICAgICAgIHRoaXMubGVmdC5zZXQobGVmdCk7XG4gICAgICAgIGlmICh0b3AgPiAwICYmIGxlZnQgPj0gMCAmJiBsZWZ0ICsgcmVjdENvbnRlbnQud2lkdGggPCB2aWV3UG9ydC53aWR0aCkge1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGlzTGFzdCkge1xuICAgICAgICAgIHRoaXMuY29uZmlnLnVwZGF0ZShjb25maWcgPT4gKHsgLi4uY29uZmlnLCBtYXhIZWlnaHQ6IHZpZXdQb3J0LmhlaWdodCAtICh2aWV3UG9ydC5oZWlnaHQgLSByZWN0T3JpZ2luLnRvcCkgfSkpO1xuICAgICAgICAgIHRvcCA9IDA7XG4gICAgICAgICAgbGVmdCA9IGxlZnQgPj0gMCA/IGxlZnQgOiAwO1xuICAgICAgICAgIHRoaXMubGVmdC5zZXQobGVmdCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzZXRDbGFzc0Fycm93KGRpcmVjdGlvbjogVFlQRV9QT1BPVkVSX0RJUkVDVElPTikge1xuICAgIGlmIChkaXJlY3Rpb24gPT09ICdyaWdodCcpIHtcbiAgICAgIHJldHVybiB0aGlzLmFycm93Q2xhc3Muc2V0KCdsaWJzLXVpLXBvcG92ZXItb3ZlcmxheS1hcnJvdy1yaWdodCcpO1xuICAgIH1cbiAgICBpZiAoZGlyZWN0aW9uID09PSAnbGVmdCcpIHtcbiAgICAgIHJldHVybiB0aGlzLmFycm93Q2xhc3Muc2V0KCdsaWJzLXVpLXBvcG92ZXItb3ZlcmxheS1hcnJvdy1sZWZ0Jyk7XG4gICAgfVxuICAgIGlmIChkaXJlY3Rpb24gPT09ICd0b3AnKSB7XG4gICAgICByZXR1cm4gdGhpcy5hcnJvd0NsYXNzLnNldCgnbGlicy11aS1wb3BvdmVyLW92ZXJsYXktYXJyb3ctZG93bicpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmFycm93Q2xhc3Muc2V0KCdsaWJzLXVpLXBvcG92ZXItb3ZlcmxheS1hcnJvdy11cCcpO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRWYXJpYWJsZUNzcygpIHtcbiAgICBjb25zdCBjb25maWdWYWx1ZSA9IHRoaXMuY29uZmlnKCk7XG4gICAgdGhpcy5Db250YWluZXJFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KCctLWxpYnMtdWktcG9wb3Zlci1vdmVybGF5LXRpbWUtYW5pbWF0aW9uLXRpbWUnLCBgJHtjb25maWdWYWx1ZS5hbmltYXRpb25Db25maWc/LnRpbWUgfHwgLjR9c2ApO1xuICAgIHRoaXMuQ29udGFpbmVyRWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1saWJzLXVpLXBvcG92ZXItb3ZlcmxheS10aW1lLWFuaW1hdGlvbi1kaXN0YW5jZScsIGAke3RoaXMuY3VycmVudERpcmVjdGlvbigpID09PSAndG9wJyA/ICctJyA6ICcnfSR7Y29uZmlnVmFsdWUuYW5pbWF0aW9uQ29uZmlnPy5kaXN0YW5jZSB8fCAxMn1weGApO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgY2xlYXJUaW1lb3V0KHRoaXMudGltZW91dCgpKTtcbiAgICB0aGlzLm9uRGVzdHJveS5uZXh0KCk7XG4gICAgdGhpcy5vbkRlc3Ryb3kuY29tcGxldGUoKTtcbiAgfVxuXG59XG4iLCI8ZGl2ICNjb250YWluZXJcbiAgY2xhc3M9XCJsaWJzLXVpLXBvcG92ZXItb3ZlcmxheSB7eyBjb25maWcoKS5jbGFzc0luY2x1ZGUgfHwgJycgfX1cIlxuICBbY2xhc3MubGlicy11aS1wb3BvdmVyLW92ZXJsYXktd2hpdGUtdGhlbWVdPVwiY29uZmlnKCkud2hpdGVUaGVtZVwiXG4gIFtjbGFzcy5saWJzLXVpLXBvcG92ZXItb3ZlcmxheS1hbmltYXRpb24tbW92ZV09XCJjb25maWcoKS5hbmltYXRpb25Db25maWdcIlxuICBbbmdTdHlsZV09XCJjb25maWcoKS5uZ1N0eWxlcyB8fCB7fVwiXG4gIFtzdHlsZS53aWR0aF09XCJjb25maWcoKS53aWR0aCA/IGNvbmZpZygpLndpZHRoICsgJ3B4JyA6ICdhdXRvJ1wiXG4gIFtzdHlsZS5tYXhXaWR0aC5weF09XCJjb25maWcoKS5tYXhXaWR0aFwiXG4gIFtzdHlsZS5tYXhIZWlnaHQucHhdPVwiY29uZmlnKCkubWF4SGVpZ2h0XCJcbiAgW3N0eWxlLnRvcC5weF09XCJ0b3AoKVwiXG4gIFtzdHlsZS5sZWZ0LnB4XT1cImxlZnQoKVwiXG4gIFtzdHlsZS56SW5kZXhdPVwiY29uZmlnKCkuekluZGV4IHx8IDEwXCI+XG4gIEBpZiAoY29uZmlnKCkpIHtcbiAgICBAaWYgKCFjb25maWcoKS5pZ25vcmVBcnJvdykge1xuICAgICAgPGRpdiBjbGFzcz0ncmVsYXRpdmUnPlxuICAgICAgICA8c3ZnXG4gICAgICAgICAgW2NsYXNzXT1cIidsaWJzLXVpLXBvcG92ZXItb3ZlcmxheS1hcnJvdyAnKyBhcnJvd0NsYXNzKCkgKyAoIGNvbmZpZygpLndoaXRlVGhlbWUgPyAnIGxpYnMtdWktcG9wb3Zlci1vdmVybGF5LXdoaXRlLXRoZW1lICcgOiAnJylcIlxuICAgICAgICAgIFtzdHlsZS50b3AucHhdPVwiYXJyb3dUb3AoKVwiXG4gICAgICAgICAgW3N0eWxlLmxlZnQucHhdPVwiYXJyb3dMZWZ0KClcIlxuICAgICAgICAgIFthdHRyLmRpcmVjdGlvbl09J291dEV2ZW50IHwgYXN5bmMnPlxuICAgICAgICAgIDxwb2x5Z29uIHBvaW50cz1cIjAsMCA2LDYgMTIsMFwiIC8+XG4gICAgICAgICAgU29ycnksIHlvdXIgYnJvd3NlciBkb2VzIG5vdCBzdXBwb3J0IGlubGluZSBTVkcuXG4gICAgICAgIDwvc3ZnPlxuICAgICAgPC9kaXY+XG4gICAgfVxuICAgIEBpZiAoY29uZmlnKCkudGVtcGxhdGU7IGFzIHRlbXBsYXRlQ29uZmlnKSB7XG4gICAgICA8ZGl2IExpYnNVaUNvbXBvbmVudHNTY3JvbGxPdmVybGF5RGlyZWN0aXZlXG4gICAgICAgIGNsYXNzPVwibGlicy11aS1wb3BvdmVyLW92ZXJsYXktYm9keSB7eyBjb25maWcoKS5jbGFzc0luY2x1ZGVPdmVybGF5Qm9keSB8fCAnJyB9fVwiXG4gICAgICAgIFthdHRyLmlzVGVtcGxhdGVdPVwidHJ1ZVwiXG4gICAgICAgIFtzdHlsZS5tYXgtaGVpZ2h0XT1cIihjb25maWcoKS5tYXhIZWlnaHQpKydweCdcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRlbXBsYXRlQ29uZmlnO2NvbnRleHQ6e2l0ZW1Db250ZXh0OmNvbmZpZygpLml0ZW1Db250ZXh0fVwiIC8+XG4gICAgICA8L2Rpdj5cbiAgICB9IEBlbHNlIHtcbiAgICAgIDxkaXYgY2xhc3M9XCJsaWJzLXVpLXBvcG92ZXItb3ZlcmxheS1ib2R5IGxpYnMtdWktZm9udC1oN3Ige3sgY29uZmlnKCkuY2xhc3NJbmNsdWRlT3ZlcmxheUJvZHkgfHwgJycgfX1cIlxuICAgICAgICBMaWJzVWlDb21wb25lbnRzU2Nyb2xsT3ZlcmxheURpcmVjdGl2ZVxuICAgICAgICBbb3B0aW9uc109XCJjb25maWcoKS5zY3JvbGxPdmVybGF5T3B0aW9uc1wiXG4gICAgICAgIFtzdHlsZS5tYXhIZWlnaHQucHhdPVwiY29uZmlnKCkubWF4SGVpZ2h0XCJcbiAgICAgICAgW3N0eWxlLnBhZGRpbmdUb3AucHhdPVwiY29uZmlnKCkucGFkZGluZ1RvcCA/PyA4XCJcbiAgICAgICAgW3N0eWxlLnBhZGRpbmdSaWdodC5weF09XCJjb25maWcoKS5wYWRkaW5nUmlnaHQgPz8gOFwiXG4gICAgICAgIFtzdHlsZS5wYWRkaW5nTGVmdC5weF09XCJjb25maWcoKS5wYWRkaW5nTGVmdCA/PyA4XCJcbiAgICAgICAgW3N0eWxlLnBhZGRpbmdCb3R0b20ucHhdPVwiY29uZmlnKCkucGFkZGluZ0JvdHRvbSA/PyA4XCJcbiAgICAgICAgW2lubmVySHRtbF09XCIoY29uZmlnKCkuY29udGVudCB8fCAnICcpIHwgdHJhbnNsYXRlXCI+XG4gICAgICA8L2Rpdj5cbiAgICB9XG4gIH1cblxuPC9kaXY+XG4iXX0=
|
|
@@ -8,7 +8,7 @@ import { getPopoverTimerDestroyInQueryUrl } from './defines/get-popover-timer-de
|
|
|
8
8
|
import { LibsUiComponentsPopoverOverlayComponent } from './overlay/overlay.component';
|
|
9
9
|
import * as i0 from "@angular/core";
|
|
10
10
|
export class LibsUiComponentsPopoverComponent {
|
|
11
|
-
|
|
11
|
+
// #region PROPERTY
|
|
12
12
|
mouseEnter;
|
|
13
13
|
mouseWheel;
|
|
14
14
|
mouseClick;
|
|
@@ -28,7 +28,7 @@ export class LibsUiComponentsPopoverComponent {
|
|
|
28
28
|
timer = signal(undefined);
|
|
29
29
|
directionPopover = signal(undefined);
|
|
30
30
|
frameId = signal('');
|
|
31
|
-
|
|
31
|
+
// #region INPUT
|
|
32
32
|
debugId = input();
|
|
33
33
|
flagMouse = input({ isMouseEnter: false, isMouseEnterContent: false, isContainerHasScroll: false }, {
|
|
34
34
|
transform: (value) => value ? value : { isMouseEnter: false, isMouseEnterContent: false, isContainerHasScroll: false }
|
|
@@ -44,12 +44,12 @@ export class LibsUiComponentsPopoverComponent {
|
|
|
44
44
|
ignoreCursorPointerModeLikeClick = input();
|
|
45
45
|
isAddContentToParentDocument = input();
|
|
46
46
|
ignoreClickOutside = input();
|
|
47
|
-
|
|
47
|
+
// #region OUTPUT
|
|
48
48
|
outEvent = output();
|
|
49
49
|
outChangStageFlagMouse = output();
|
|
50
50
|
outEventPopoverContent = output();
|
|
51
51
|
outFunctionsControl = output();
|
|
52
|
-
|
|
52
|
+
// #region INJECT
|
|
53
53
|
elementRef = inject(ElementRef);
|
|
54
54
|
dynamicService = inject(LibsUiDynamicComponentService);
|
|
55
55
|
constructor() {
|
|
@@ -138,7 +138,7 @@ export class LibsUiComponentsPopoverComponent {
|
|
|
138
138
|
this.addPopoverContent(nativeEl);
|
|
139
139
|
});
|
|
140
140
|
}
|
|
141
|
-
|
|
141
|
+
// #region FUNCTIONS
|
|
142
142
|
async updatePopoverOverlay() {
|
|
143
143
|
const timer = setTimeout(() => {
|
|
144
144
|
clearTimeout(timer);
|
|
@@ -317,4 +317,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
317
317
|
type: Component,
|
|
318
318
|
args: [{ selector: 'libs_ui-components-popover,[LibsUiComponentsPopoverDirective]', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-content />\n", styles: ["::ng-deep .popover-text-ellipsis{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}::ng-deep .cursor-pointer{cursor:pointer}\n"] }]
|
|
319
319
|
}], ctorParameters: () => [] });
|
|
320
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9wb3Zlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzLXVpL2NvbXBvbmVudHMvcG9wb3Zlci9zcmMvcG9wb3Zlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9saWJzLXVpL2NvbXBvbmVudHMvcG9wb3Zlci9zcmMvcG9wb3Zlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx1REFBdUQ7QUFDdkQsT0FBTyxFQUFvQix1QkFBdUIsRUFBRSxTQUFTLEVBQWdCLFVBQVUsRUFBcUIsTUFBTSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDcEwsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDcEYsT0FBTyxFQUFFLHlCQUF5QixFQUFFLEdBQUcsRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3pGLE9BQU8sRUFBYyxPQUFPLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNwRSxPQUFPLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5RCxPQUFPLEVBQUUsZ0NBQWdDLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUs5RixPQUFPLEVBQUUsdUNBQXVDLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQzs7QUFVdEYsTUFBTSxPQUFPLGdDQUFnQztJQUMzQyxjQUFjO0lBQ04sVUFBVSxDQUEwQjtJQUNwQyxVQUFVLENBQTBCO0lBQ3BDLFVBQVUsQ0FBMEI7SUFDcEMsWUFBWSxDQUEwQjtJQUN0QyxXQUFXLENBQTBCO0lBQ3JDLGVBQWUsQ0FBMEI7SUFDekMsV0FBVyxDQUEwQjtJQUNyQyxhQUFhLENBQTBCO0lBQ3ZDLGVBQWUsQ0FB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LE1BQU0sQ0FBQyxJQUFJLENBQUMsdUJBQXVCLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7UUFDekUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDckIsSUFBSSxDQUFDLHVCQUF1QixHQUFHLFNBQVMsQ0FBQztRQUN6QyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBRUQsV0FBVztRQUNULFlBQVksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUMzQixJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztRQUM1QixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDMUIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNwQyxDQUFDO3dHQTVWVSxnQ0FBZ0M7NEZBQWhDLGdDQUFnQyw4eEVDckI3QyxrQkFDQTs7NEZEb0JhLGdDQUFnQztrQkFSNUMsU0FBUzsrQkFFRSwrREFBK0QsY0FHN0QsSUFBSSxtQkFDQyx1QkFBdUIsQ0FBQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xuaW1wb3J0IHsgQWZ0ZXJDb250ZW50SW5pdCwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgQ29tcG9uZW50UmVmLCBFbGVtZW50UmVmLCBPbkRlc3Ryb3ksIE9uSW5pdCwgZWZmZWN0LCBpbmplY3QsIGlucHV0LCBvdXRwdXQsIHNpZ25hbCwgdW50cmFja2VkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBMaWJzVWlEeW5hbWljQ29tcG9uZW50U2VydmljZSB9IGZyb20gJ0BsaWJzLXVpL3NlcnZpY2VzLWR5bmFtaWMtY29tcG9uZW50JztcbmltcG9ydCB7IGNoZWNrTW91c2VPdmVySW5Db250YWluZXIsIGdldCwgZ2V0Vmlld3BvcnQsIGlzTmlsLCBzZXQgfSBmcm9tICdAbGlicy11aS91dGlscyc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0LCBTdWJzY3JpcHRpb24sIGZyb21FdmVudCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCB0YWtlVW50aWwsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IGdldFBvcG92ZXJUaW1lckRlc3Ryb3lJblF1ZXJ5VXJsIH0gZnJvbSAnLi9kZWZpbmVzL2dldC1wb3BvdmVyLXRpbWVyLWRlc3Ryb3kuZGVmaW5lJztcbmltcG9ydCB7IElGbGFnTW91c2UgfSBmcm9tICcuL2ludGVyZmFjZXMvZmxhZy1tb3VzZS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgSVBvcG92ZXJGdW5jdGlvbkNvbnRyb2xFdmVudCB9IGZyb20gJy4vaW50ZXJmYWNlcy9mdW5jdGlvbi1jb250cm9sLmludGVyZmFjZSc7XG5pbXBvcnQgeyBJUG9wb3Zlck92ZXJsYXkgfSBmcm9tICcuL2ludGVyZmFjZXMvb3ZlcmxheS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgVFlQRV9QT1BPVkVSX0RJUkVDVElPTiwgVFlQRV9QT1BPVkVSX0VWRU5ULCBUWVBFX1BPUE9WRVJfTU9ERSwgVFlQRV9QT1BPVkVSX1RZUEUgfSBmcm9tICcuL2ludGVyZmFjZXMvcG9wb3Zlci50eXBlJztcbmltcG9ydCB7IExpYnNVaUNvbXBvbmVudHNQb3BvdmVyT3ZlcmxheUNvbXBvbmVudCB9IGZyb20gJy4vb3ZlcmxheS9vdmVybGF5LmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L2NvbXBvbmVudC1zZWxlY3RvclxuICBzZWxlY3RvcjogJ2xpYnNfdWktY29tcG9uZW50cy1wb3BvdmVyLFtMaWJzVWlDb21wb25lbnRzUG9wb3ZlckRpcmVjdGl2ZV0nLFxuICB0ZW1wbGF0ZVVybDogJy4vcG9wb3Zlci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9wb3BvdmVyLmNvbXBvbmVudC5zY3NzJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIExpYnNVaUNvbXBvbmVudHNQb3BvdmVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlckNvbnRlbnRJbml0LCBPbkRlc3Ryb3kge1xuICAvKiBQUk9QRVJUWSAqL1xuICBwcml2YXRlIG1vdXNlRW50ZXIhOiBPYnNlcnZhYmxlPE1vdXNlRXZlbnQ+O1xuICBwcml2YXRlIG1vdXNlV2hlZWwhOiBPYnNlcnZhYmxlPE1vdXNlRXZlbnQ+O1xuICBwcml2YXRlIG1vdXNlQ2xpY2shOiBPYnNlcnZhYmxlPE1vdXNlRXZlbnQ+O1xuICBwcml2YXRlIHdpbmRvd1Jlc2l6ZSE6IE9ic2VydmFibGU8TW91c2VFdmVudD47XG4gIHByaXZhdGUgd2luZG93V2hlZWwhOiBPYnNlcnZhYmxlPE1vdXNlRXZlbnQ+O1xuICBwcml2YXRlIHdpbmRvd01vdXNlRG93biE6IE9ic2VydmFibGU8TW91c2VFdmVudD47XG4gIHByaXZhdGUgd2luZG93Q2xpY2shOiBPYnNlcnZhYmxlPE1vdXNlRXZlbnQ+O1xuICBwcml2YXRlIHdpbmRvd01vdXNlVXAhOiBPYnNlcnZhYmxlPE1vdXNlRXZlbnQ+O1xuICBwcml2YXRlIHdpbmRvd01vdXNlbW92ZSE6IE9ic2VydmFibGU8TW91c2VFdmVudD47XG4gIHByaXZhdGUgd2luZG93VG91Y2ghOiBPYnNlcnZhYmxlPE1vdXNlRXZlbnQ+O1xuICBwcml2YXRlIHBvcG92ZXJPdmVybGF5Q29tcG9uZW50ITogQ29tcG9uZW50UmVmPExpYnNVaUNvbXBvbmVudHNQb3BvdmVyT3ZlcmxheUNvbXBvbmVudD4gfCB1bmRlZmluZWQ7XG4gIHByaXZhdGUgc3Vic0V2ZW50UG9wdXAgPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG4gIHByaXZhdGUgb25EZXN0cm95ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgcHJpdmF0ZSBmdW5jdGlvbnNDb250cm9sPzogSVBvcG92ZXJGdW5jdGlvbkNvbnRyb2xFdmVudDtcbiAgcHJpdmF0ZSBmaXJzdENsaWNrID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcbiAgcHJpdmF0ZSBjb250ZW50SW5uZXJIdG1sID0gc2lnbmFsPHN0cmluZz4oJycpO1xuICBwcml2YXRlIHRpbWVyID0gc2lnbmFsPG51bWJlciB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgcHJpdmF0ZSBkaXJlY3Rpb25Qb3BvdmVyID0gc2lnbmFsPFRZUEVfUE9QT1ZFUl9ESVJFQ1RJT04gfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIHByaXZhdGUgZnJhbWVJZCA9IHNpZ25hbDxzdHJpbmc+KCcnKTtcblxuICAvKiBJTlBVVCAqL1xuICByZWFkb25seSBkZWJ1Z0lkID0gaW5wdXQ8c3RyaW5nPigpO1xuICByZWFkb25seSBmbGFnTW91c2UgPSBpbnB1dDxJRmxhZ01vdXNlLCBJRmxhZ01vdXNlPih7IGlzTW91c2VFbnRlcjogZmFsc2UsIGlzTW91c2VFbnRlckNvbnRlbnQ6IGZhbHNlLCBpc0NvbnRhaW5lckhhc1Njcm9sbDogZmFsc2UgfSwge1xuICAgIHRyYW5zZm9ybTogKHZhbHVlOiBhbnkpID0+IHZhbHVlID8gdmFsdWUgOiB7IGlzTW91c2VFbnRlcjogZmFsc2UsIGlzTW91c2VFbnRlckNvbnRlbnQ6IGZhbHNlLCBpc0NvbnRhaW5lckhhc1Njcm9sbDogZmFsc2UgfVxuICB9KTtcbiAgcmVhZG9ubHkgdHlwZSA9IGlucHV0PFRZUEVfUE9QT1ZFUl9UWVBFPignb3RoZXInKTtcbiAgcmVhZG9ubHkgbW9kZSA9IGlucHV0PFRZUEVfUE9QT1ZFUl9NT0RFPignaG92ZXInKTtcbiAgcmVhZG9ubHkgY29uZmlnID0gaW5wdXQoe30sIHsgdHJhbnNmb3JtOiAodmFsdWU6IElQb3BvdmVyT3ZlcmxheSB8IHVuZGVmaW5lZCkgPT4gdmFsdWUgPyB2YWx1ZSA6IHt9IH0pO1xuICByZWFkb25seSBpZ25vcmVTaG93UG9wb3ZlciA9IGlucHV0PGJvb2xlYW4+KCk7XG4gIHJlYWRvbmx5IGVsZW1lbnRSZWZDdXN0b20gPSBpbnB1dDxIVE1MRWxlbWVudD4oKTtcbiAgcmVhZG9ubHkgY2xhc3NJbmNsdWRlID0gaW5wdXQ8c3RyaW5nIHwgdW5kZWZpbmVkLCBzdHJpbmcgfCB1bmRlZmluZWQ+KCcnLCB7IHRyYW5zZm9ybTogKHZhbHVlKSA9PiB2YWx1ZSA/PyAnJyB9KTtcbiAgcmVhZG9ubHkgaWdub3JlSGlkZGVuUG9wb3ZlckNvbnRlbnRXaGVuTW91c2VMZWF2ZSA9IGlucHV0PGJvb2xlYW4+KCk7XG4gIHJlYWRvbmx5IGlnbm9yZVN0b3BQcm9wYWdhdGlvbkV2ZW50ID0gaW5wdXQ8Ym9vbGVhbj4oKTtcbiAgcmVhZG9ubHkgaWdub3JlQ3Vyc29yUG9pbnRlck1vZGVMaWtlQ2xpY2sgPSBpbnB1dDxib29sZWFuPigpO1xuICByZWFkb25seSBpc0FkZENvbnRlbnRUb1BhcmVudERvY3VtZW50ID0gaW5wdXQ8Ym9vbGVhbj4oKTtcbiAgcmVhZG9ubHkgaWdub3JlQ2xpY2tPdXRzaWRlID0gaW5wdXQ8Ym9vbGVhbj4oKTtcblxuICAvKiBPVVRQVVQgKi9cbiAgcmVhZG9ubHkgb3V0RXZlbnQgPSBvdXRwdXQ8VFlQRV9QT1BPVkVSX0VWRU5UPigpO1xuICByZWFkb25seSBvdXRDaGFuZ1N0YWdlRmxhZ01vdXNlID0gb3V0cHV0PElGbGFnTW91c2U+KCk7XG4gIHJlYWRvbmx5IG91dEV2ZW50UG9wb3ZlckNvbnRlbnQgPSBvdXRwdXQ8VFlQRV9QT1BPVkVSX0RJUkVDVElPTj4oKTtcbiAgcmVhZG9ubHkgb3V0RnVuY3Rpb25zQ29udHJvbCA9IG91dHB1dDxJUG9wb3ZlckZ1bmN0aW9uQ29udHJvbEV2ZW50PigpO1xuXG4gIC8qIElOSkVDVCAqL1xuICBwcml2YXRlIGVsZW1lbnRSZWYgPSBpbmplY3QoRWxlbWVudFJlZik7XG4gIHByaXZhdGUgZHluYW1pY1NlcnZpY2UgPSBpbmplY3QoTGlic1VpRHluYW1pY0NvbXBvbmVudFNlcnZpY2UpO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIGxldCBjbGFzc0RlZmF1bHQ6IHN0cmluZyB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcbiAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgaWYgKGNsYXNzRGVmYXVsdCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGNsYXNzRGVmYXVsdCA9IHRoaXMuRWxlbWVudC5jbGFzc05hbWU7XG4gICAgICB9XG4gICAgICB0aGlzLkVsZW1lbnQuY2xhc3NOYW1lID0gY2xhc3NEZWZhdWx0IHx8ICcnO1xuICAgICAgaWYgKHRoaXMudHlwZSgpID09PSAndGV4dCcpIHtcbiAgICAgICAgdGhpcy5FbGVtZW50LmNsYXNzTGlzdC5hZGQoJ3BvcG92ZXItdGV4dC1lbGxpcHNpcycpO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMubW9kZSgpLmluY2x1ZGVzKCdjbGljaycpICYmICF0aGlzLmlnbm9yZUN1cnNvclBvaW50ZXJNb2RlTGlrZUNsaWNrKCkpIHtcbiAgICAgICAgdGhpcy5FbGVtZW50LmNsYXNzTGlzdC5hZGQoJ2N1cnNvci1wb2ludGVyJyk7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5jbGFzc0luY2x1ZGUoKSkge1xuICAgICAgICB0aGlzLmNsYXNzSW5jbHVkZSgpPy5zcGxpdCgnICcpLmZvckVhY2goY2xhc3NOYW1lID0+IHtcbiAgICAgICAgICBpZiAoIWNsYXNzTmFtZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLkVsZW1lbnQuY2xhc3NMaXN0LmFkZChjbGFzc05hbWUpO1xuICAgICAgICB9KVxuICAgICAgfVxuICAgIH0pO1xuXG4gICAgbGV0IGZpcnN0ID0gdHJ1ZTtcbiAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgdGhpcy5jb25maWcoKTtcbiAgICAgIHVudHJhY2tlZCgoKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLnBvcG92ZXJPdmVybGF5Q29tcG9uZW50Py5pbnN0YW5jZSAmJiAhZmlyc3QpIHtcbiAgICAgICAgICB0aGlzLnVwZGF0ZVBvcG92ZXJPdmVybGF5UG9zaXRpb24oKTtcbiAgICAgICAgfVxuICAgICAgICBmaXJzdCA9IGZhbHNlO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLm91dEV2ZW50UG9wb3ZlckNvbnRlbnQuc3Vic2NyaWJlKGRpcmVjdGlvbiA9PiB0aGlzLmRpcmVjdGlvblBvcG92ZXIuc2V0KGRpcmVjdGlvbikpO1xuICAgIHRoaXMuZnVuY3Rpb25zQ29udHJvbCA9IHtcbiAgICAgIHJlbW92ZVBvcG92ZXJPdmVybGF5OiB0aGlzLnJlbW92ZVBvcG92ZXJPdmVybGF5LmJpbmQodGhpcyksXG4gICAgICB1cGRhdGVQb3BvdmVyT3ZlcmxheVBvc2l0aW9uOiB0aGlzLnVwZGF0ZVBvcG92ZXJPdmVybGF5UG9zaXRpb24uYmluZCh0aGlzKSxcbiAgICAgIGdldFJlY3RDb250YWluZXI6IGFzeW5jICgpID0+ICh0aGlzLmVsZW1lbnRSZWZDdXN0b20oKSB8fCB0aGlzLkVsZW1lbnQpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLFxuICAgICAgZ2V0UmVjdENvbnRlbnQ6IGFzeW5jICgpID0+ICh0aGlzLnBvcG92ZXJPdmVybGF5Q29tcG9uZW50Py5pbnN0YW5jZT8uQ29udGFpbmVyRWxlbWVudCk/LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLFxuICAgICAgc2hvd1BvcG92ZXI6IHRoaXMuYWRkUG9wb3ZlckNvbnRlbnQuYmluZCh0aGlzKSxcbiAgICAgIHVwZGF0ZVBvcG92ZXJPdmVybGF5OiB0aGlzLnVwZGF0ZVBvcG92ZXJPdmVybGF5LmJpbmQodGhpcyksXG4gICAgfTtcbiAgICB0aGlzLm91dEZ1bmN0aW9uc0NvbnRyb2wuZW1pdCh0aGlzLmZ1bmN0aW9uc0NvbnRyb2wpO1xuICB9XG5cbiAgbmdBZnRlckNvbnRlbnRJbml0KCkge1xuICAgIGNvbnN0IG5hdGl2ZUVsID0gdGhpcy5FbGVtZW50O1xuICAgIHRoaXMubW91c2VFbnRlciA9IHRoaXMuaW5pdE9ic2VydmFibGUobmF0aXZlRWwsICdtb3VzZWVudGVyJyk7XG4gICAgdGhpcy5tb3VzZUNsaWNrID0gdGhpcy5pbml0T2JzZXJ2YWJsZShuYXRpdmVFbCwgJ2NsaWNrJyk7XG4gICAgdGhpcy5tb3VzZVdoZWVsID0gdGhpcy5pbml0T2JzZXJ2YWJsZSh3aW5kb3csICd3aGVlbCcpO1xuICAgIHRoaXMud2luZG93UmVzaXplID0gdGhpcy5pbml0T2JzZXJ2YWJsZSh3aW5kb3csICdyZXNpemUnKTtcbiAgICB0aGlzLndpbmRvd1doZWVsID0gdGhpcy5pbml0T2JzZXJ2YWJsZSh3aW5kb3csICd3aGVlbCcpO1xuICAgIHRoaXMud2luZG93TW91c2VEb3duID0gdGhpcy5pbml0T2JzZXJ2YWJsZSh3aW5kb3csICdtb3VzZWRvd24nKTtcbiAgICB0aGlzLndpbmRvd0NsaWNrID0gdGhpcy5pbml0T2JzZXJ2YWJsZSh3aW5kb3csICdjbGljaycpO1xuICAgIHRoaXMud2luZG93TW91c2VVcCA9IHRoaXMuaW5pdE9ic2VydmFibGUod2luZG93LCAnbW91c2V1cCcpO1xuICAgIHRoaXMud2luZG93VG91Y2ggPSB0aGlzLmluaXRPYnNlcnZhYmxlKHdpbmRvdywgJ3RvdWNoc3RhcnQnKTtcbiAgICB0aGlzLndpbmRvd01vdXNlbW92ZSA9IHRoaXMuaW5pdE9ic2VydmFibGUod2luZG93LCAnbW91c2Vtb3ZlJyk7XG4gICAgdGhpcy5tb3VzZUVudGVyLnN1YnNjcmliZSgoKSA9PiB7XG5cbiAgICAgIGlmICghdGhpcy5tb2RlKCkuaW5jbHVkZXMoJ2hvdmVyJykpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy50eXBlKCkgPT09ICd0ZXh0JyAmJiBuYXRpdmVFbD8uY2xpZW50V2lkdGggPj0gbmF0aXZlRWwuc2Nyb2xsV2lkdGggJiYgIXRoaXMucG9wb3Zlck92ZXJsYXlDb21wb25lbnQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdGhpcy5hZGRQb3BvdmVyQ29udGVudChuYXRpdmVFbCk7XG4gICAgfSk7XG4gICAgdGhpcy5tb3VzZUNsaWNrLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLmZpcnN0Q2xpY2sudXBkYXRlKHZhbCA9PiAhdmFsKTtcbiAgICAgIHRoaXMub3V0RXZlbnQuZW1pdCgnY2xpY2snKTtcblxuICAgICAgaWYgKCF0aGlzLm1vZGUoKS5zdGFydHNXaXRoKCdjbGljaycpKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMubW9kZSgpID09PSAnY2xpY2stdG9nZ2xlJyAmJiAhdGhpcy5maXJzdENsaWNrKCkpIHtcbiAgICAgICAgdGhpcy5yZW1vdmVQb3BvdmVyT3ZlcmxheSgpO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHRoaXMuYWRkUG9wb3ZlckNvbnRlbnQobmF0aXZlRWwpO1xuICAgIH0pO1xuICAgIHRoaXMud2luZG93UmVzaXplLnBpcGUoZGVib3VuY2VUaW1lKDUwMCkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICBpZiAoIXRoaXMucG9wb3Zlck92ZXJsYXlDb21wb25lbnQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdGhpcy5yZW1vdmVQb3BvdmVyT3ZlcmxheSgpO1xuICAgICAgdGhpcy5hZGRQb3BvdmVyQ29udGVudChuYXRpdmVFbCk7XG4gICAgfSk7XG4gIH1cblxuICAvKiBGVU5DVElPTlMqL1xuICBwcml2YXRlIGFzeW5jIHVwZGF0ZVBvcG92ZXJPdmVybGF5KCkge1xuICAgIGNvbnN0IHRpbWVyID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBjbGVhclRpbWVvdXQodGltZXIpO1xuICAgICAgaWYgKCF0aGlzLnBvcG92ZXJPdmVybGF5Q29tcG9uZW50Py5pbnN0YW5jZSB8fCAhdGhpcy5jb25maWcoKSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBjb25zdCBpbnN0YW5jZSA9IHRoaXMucG9wb3Zlck92ZXJsYXlDb21wb25lbnQuaW5zdGFuY2U7XG4gICAgICBjb25zdCBuYXRpdmVFbCA9IHRoaXMuZWxlbWVudFJlZkN1c3RvbSgpIHx8IHRoaXMuRWxlbWVudDtcblxuICAgICAgaW5zdGFuY2Uuc2V0Q29uZmlnKG5hdGl2ZUVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLCB0aGlzLmNvbmZpZygpKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgdXBkYXRlUG9wb3Zlck92ZXJsYXlQb3NpdGlvbigpIHtcbiAgICBjbGVhclRpbWVvdXQodGhpcy50aW1lcigpKTtcbiAgICB0aGlzLnRpbWVyLnNldChzZXRUaW1lb3V0KGFzeW5jICgpID0+IHtcbiAgICAgIGlmICghdGhpcy5wb3BvdmVyT3ZlcmxheUNvbXBvbmVudCB8fCAhdGhpcy5wb3BvdmVyT3ZlcmxheUNvbXBvbmVudC5pbnN0YW5jZSB8fCAhdGhpcy5jb25maWcoKSB8fCAhdGhpcy5mdW5jdGlvbnNDb250cm9sKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHZpZXdQb3J0ID0gZ2V0Vmlld3BvcnQoKTtcbiAgICAgIGNvbnN0IHJlY3RMaXN0VmlldyA9IGF3YWl0IHRoaXMuZnVuY3Rpb25zQ29udHJvbC5nZXRSZWN0Q29udGVudCgpO1xuXG4gICAgICBpZiAoIXJlY3RMaXN0Vmlldykge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBjb25zdCByZWN0Q29udGFpbmVyID0gYXdhaXQgdGhpcy5mdW5jdGlvbnNDb250cm9sLmdldFJlY3RDb250YWluZXIoKTtcbiAgICAgIGNvbnN0IGRpc3RhbmNlTGlzdFZpZXdBbmRDb250YWluZXIgPSB0aGlzLmNvbmZpZygpPy5pZ25vcmVBcnJvdyA9PT0gZmFsc2UgPyAxNCA6IDQ7XG5cbiAgICAgIGlmICh0aGlzLmRpcmVjdGlvblBvcG92ZXIoKSA9PT0gJ2JvdHRvbScgJiYgKChyZWN0TGlzdFZpZXcudG9wICsgcmVjdExpc3RWaWV3LmhlaWdodCA+IHZpZXdQb3J0LmhlaWdodCkgfHwgKHJlY3RMaXN0Vmlldy50b3AgPCAocmVjdENvbnRhaW5lci50b3AgKyByZWN0Q29udGFpbmVyLmhlaWdodCkpIHx8IChyZWN0TGlzdFZpZXcudG9wIC0gKHJlY3RDb250YWluZXIudG9wICsgcmVjdENvbnRhaW5lci5oZWlnaHQpID4gZGlzdGFuY2VMaXN0Vmlld0FuZENvbnRhaW5lcikpIHx8ICgocmVjdExpc3RWaWV3LmxlZnQgKyByZWN0TGlzdFZpZXcud2lkdGggPiB2aWV3UG9ydC53aWR0aCkpKSB7XG5cbiAgICAgICAgY29uc3QgaW5zdGFuY2UgPSB0aGlzLnBvcG92ZXJPdmVybGF5Q29tcG9uZW50Lmluc3RhbmNlO1xuICAgICAgICBjb25zdCBuYXRpdmVFbCA9IHRoaXMuZWxlbWVudFJlZkN1c3RvbSgpIHx8IHRoaXMuRWxlbWVudDtcbiAgICAgICAgaW5zdGFuY2Uuc2V0Q29uZmlnKG5hdGl2ZUVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLCB7IC4uLiAodGhpcy5jb25maWcoKSB8fCB7fSksIC4uLnRoaXMuZ2V0RGVmYXVsdENvbmZpZ3MoKSB9LCB0aGlzLmlzQWRkQ29udGVudFRvUGFyZW50RG9jdW1lbnQoKSk7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5kaXJlY3Rpb25Qb3BvdmVyKCkgIT09ICd0b3AnKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmICgocmVjdENvbnRhaW5lci50b3AgLSAocmVjdExpc3RWaWV3LnRvcCArIHJlY3RMaXN0Vmlldy5oZWlnaHQpID4gZGlzdGFuY2VMaXN0Vmlld0FuZENvbnRhaW5lcikgfHwgKHJlY3RMaXN0Vmlldy50b3AgKyByZWN0TGlzdFZpZXcuaGVpZ2h0ICsgZGlzdGFuY2VMaXN0Vmlld0FuZENvbnRhaW5lciA+IHJlY3RDb250YWluZXIudG9wICsgMikgfHwgKChyZWN0TGlzdFZpZXcubGVmdCArIHJlY3RMaXN0Vmlldy53aWR0aCA+IHZpZXdQb3J0LndpZHRoKSkpIHtcbiAgICAgICAgY29uc3QgaW5zdGFuY2UgPSB0aGlzLnBvcG92ZXJPdmVybGF5Q29tcG9uZW50Lmluc3RhbmNlO1xuICAgICAgICBjb25zdCBuYXRpdmVFbCA9IHRoaXMuZWxlbWVudFJlZkN1c3RvbSgpIHx8IHRoaXMuRWxlbWVudDtcblxuICAgICAgICBpbnN0YW5jZS5zZXRDb25maWcobmF0aXZlRWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksIHsgLi4uICh0aGlzLmNvbmZpZygpIHx8IHt9KSwgLi4udGhpcy5nZXREZWZhdWx0Q29uZmlncygpIH0sIHRoaXMuaXNBZGRDb250ZW50VG9QYXJlbnREb2N1bWVudCgpKTtcblxuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfSwgMjUwKSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0IEVsZW1lbnQoKTogSFRNTEVsZW1lbnQge1xuICAgIHJldHVybiB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5maXJzdEVsZW1lbnRDaGlsZCB8fCB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdE9ic2VydmFibGUoZWw6IGFueSwgZXZlbnROYW1lOiBzdHJpbmcpOiBPYnNlcnZhYmxlPE1vdXNlRXZlbnQ+IHtcbiAgICByZXR1cm4gZnJvbUV2ZW50PE1vdXNlRXZlbnQ+KGVsLCBldmVudE5hbWUpLnBpcGUoXG4gICAgICB0YXAoZSA9PiAhdGhpcy5pZ25vcmVTdG9wUHJvcGFnYXRpb25FdmVudCgpICYmIGUuc3RvcFByb3BhZ2F0aW9uKCkpLFxuICAgICAgdGFrZVVudGlsKHRoaXMub25EZXN0cm95KVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGFkZFBvcG92ZXJDb250ZW50KG5hdGl2ZUVsOiBIVE1MRWxlbWVudCkge1xuICAgIGlmICh0aGlzLnBvcG92ZXJPdmVybGF5Q29tcG9uZW50IHx8IHRoaXMuaWdub3JlU2hvd1BvcG92ZXIoKSB8fCAhdGhpcy5jb25maWcoKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMucG9wb3Zlck92ZXJsYXlDb21wb25lbnQgPSB0aGlzLmR5bmFtaWNTZXJ2aWNlLnJlc29sdmVDb21wb25lbnRGYWN0b3J5KExpYnNVaUNvbXBvbmVudHNQb3BvdmVyT3ZlcmxheUNvbXBvbmVudCk7XG4gICAgdGhpcy5mcmFtZUlkLnNldCh0aGlzLmR5bmFtaWNTZXJ2aWNlLmFkZFRvQm9keSh0aGlzLnBvcG92ZXJPdmVybGF5Q29tcG9uZW50LCB0aGlzLmlzQWRkQ29udGVudFRvUGFyZW50RG9jdW1lbnQoKSB8fCB0aGlzLmNvbmZpZygpLmlzQWRkQ29udGVudFRvUGFyZW50RG9jdW1lbnQpKTtcbiAgICB0aGlzLm91dEV2ZW50LmVtaXQoJ3Nob3cnKTtcbiAgICBjb25zdCBpbnN0YW5jZSA9IHRoaXMucG9wb3Zlck92ZXJsYXlDb21wb25lbnQuaW5zdGFuY2U7XG5cbiAgICBuYXRpdmVFbCA9IHRoaXMuZWxlbWVudFJlZkN1c3RvbSgpIHx8IG5hdGl2ZUVsO1xuICAgIGluc3RhbmNlLnNldENvbmZpZyhuYXRpdmVFbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSwgeyAuLi4gKHRoaXMuY29uZmlnKCkgfHwge30pLCAuLi50aGlzLmdldERlZmF1bHRDb25maWdzKCkgfSwgdGhpcy5pc0FkZENvbnRlbnRUb1BhcmVudERvY3VtZW50KCkpO1xuICAgIGNvbnN0IGZsYWdzTW91c2VzOiBJRmxhZ01vdXNlID0ge1xuICAgICAgaXNNb3VzZUVudGVyOiB0cnVlLFxuICAgICAgaXNNb3VzZUVudGVyQ29udGVudDogZmFsc2UsXG4gICAgICBpc0NvbnRhaW5lckhhc1Njcm9sbDogbmF0aXZlRWwub2Zmc2V0SGVpZ2h0IDwgbmF0aXZlRWwuc2Nyb2xsSGVpZ2h0XG4gICAgfTtcbiAgICBjb25zdCBuYXRpdmVFbENvbnRhaW5lciA9IGluc3RhbmNlLkVsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtcbiAgICBjb25zdCBtb3VzZUVudGVyQ29udGVudCA9IHRoaXMuaW5pdE9ic2VydmFibGUobmF0aXZlRWxDb250YWluZXIsICdtb3VzZWVudGVyJyk7XG4gICAgY29uc3QgbW91c2VMZWF2ZUNvbnRlbnQgPSB0aGlzLmluaXRPYnNlcnZhYmxlKG5hdGl2ZUVsQ29udGFpbmVyLCAnbW91c2VsZWF2ZScpO1xuICAgIHRoaXMuc3Vic0V2ZW50UG9wdXAuYWRkKGluc3RhbmNlLm91dEV2ZW50LnN1YnNjcmliZSgoZGlyZWN0aW9uOiBUWVBFX1BPUE9WRVJfRElSRUNUSU9OKSA9PiB7XG4gICAgICB0aGlzLm91dEV2ZW50UG9wb3ZlckNvbnRlbnQuZW1pdChkaXJlY3Rpb24pO1xuICAgIH0pKTtcblxuICAgIHRoaXMuc3Vic0V2ZW50UG9wdXAuYWRkKG1vdXNlRW50ZXJDb250ZW50LnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLm91dEV2ZW50LmVtaXQoJ21vdXNlZW50ZXItY29udGVudCcpO1xuICAgICAgZmxhZ3NNb3VzZXMuaXNNb3VzZUVudGVyQ29udGVudCA9IHRydWU7XG4gICAgICB0aGlzLm91dENoYW5nU3RhZ2VGbGFnTW91c2UuZW1pdChmbGFnc01vdXNlcyk7XG4gICAgfSkpO1xuXG4gICAgdGhpcy5zdWJzRXZlbnRQb3B1cC5hZGQodGhpcy5tb3VzZUVudGVyLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLm91dEV2ZW50LmVtaXQoJ21vdXNlZW50ZXItZWxlbWVudCcpO1xuICAgICAgdGhpcy5vdXRDaGFuZ1N0YWdlRmxhZ01vdXNlLmVtaXQoZmxhZ3NNb3VzZXMpO1xuICAgIH0pKTtcblxuICAgIHRoaXMuc3Vic0V2ZW50UG9wdXAuYWRkKHRoaXMubW91c2VXaGVlbC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgZmxhZ3NNb3VzZXMuaXNDb250YWluZXJIYXNTY3JvbGwgPSBmYWxzZTtcblxuICAgICAgaWYgKG5hdGl2ZUVsLm9mZnNldEhlaWdodCA8IG5hdGl2ZUVsLnNjcm9sbEhlaWdodCkge1xuICAgICAgICBmbGFnc01vdXNlcy5pc0NvbnRhaW5lckhhc1Njcm9sbCA9IHRydWU7XG4gICAgICB9XG4gICAgICBpZiAoKGZsYWdzTW91c2VzLmlzTW91c2VFbnRlciAmJiBmbGFnc01vdXNlcy5pc0NvbnRhaW5lckhhc1Njcm9sbCkgfHwgZmxhZ3NNb3VzZXMuaXNNb3VzZUVudGVyQ29udGVudCB8fCB0aGlzLmZsYWdNb3VzZSgpLmlzTW91c2VFbnRlciB8fCB0aGlzLmZsYWdNb3VzZSgpLmlzTW91c2VFbnRlckNvbnRlbnQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdGhpcy5yZW1vdmVQb3BvdmVyT3ZlcmxheSgpO1xuICAgIH0pKTtcbiAgICB0aGlzLmhhbmRsZXJNb3VzZUxlYXZlUmVtb3ZlUG9wb3Zlck92ZXJsYXkodGhpcy53aW5kb3dNb3VzZW1vdmUsIGZsYWdzTW91c2VzLCAnaXNNb3VzZUVudGVyJywgJ2lzTW91c2VFbnRlckNvbnRlbnQnLCAnbW91c2VsZWF2ZS1lbGVtZW50Jyk7XG4gICAgdGhpcy5oYW5kbGVyTW91c2VMZWF2ZVJlbW92ZVBvcG92ZXJPdmVybGF5KG1vdXNlTGVhdmVDb250ZW50LCBmbGFnc01vdXNlcywgJ2lzTW91c2VFbnRlckNvbnRlbnQnLCAnaXNNb3VzZUVudGVyJywgJ21vdXNlbGVhdmUtY29udGVudCcpO1xuXG4gICAgaWYgKHRoaXMubW9kZSgpID09PSAnY2xpY2tfb3Blbl9hbmRfY2xpY2tfcGFuZWxfY29udGVudF9oaWRkZW4nKSB7XG4gICAgICB0aGlzLnN1YnNFdmVudFBvcHVwLmFkZCh0aGlzLmluaXRPYnNlcnZhYmxlKG5hdGl2ZUVsQ29udGFpbmVyLCAnY2xpY2snKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLnJlbW92ZVBvcG92ZXJPdmVybGF5KCk7XG4gICAgICB9KSk7XG4gICAgfVxuXG4gICAgdGhpcy5oYW5kbGVyV2luZG93RXZlbnRSZW1vdmVQb3BvdmVyT3ZlcmxheSh0aGlzLndpbmRvd0NsaWNrLCBmbGFnc01vdXNlcyk7XG4gICAgdGhpcy5oYW5kbGVyV2luZG93RXZlbnRSZW1vdmVQb3BvdmVyT3ZlcmxheSh0aGlzLndpbmRvd01vdXNlRG93biwgZmxhZ3NNb3VzZXMpO1xuICAgIHRoaXMuaGFuZGxlcldpbmRvd0V2ZW50UmVtb3ZlUG9wb3Zlck92ZXJsYXkodGhpcy53aW5kb3dNb3VzZVVwLCBmbGFnc01vdXNlcyk7XG4gICAgdGhpcy5oYW5kbGVyV2luZG93RXZlbnRSZW1vdmVQb3BvdmVyT3ZlcmxheSh0aGlzLndpbmRvd1doZWVsLCBmbGFnc01vdXNlcyk7XG4gICAgdGhpcy5zdWJzRXZlbnRQb3B1cC5hZGQodGhpcy53aW5kb3dUb3VjaC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5yZW1vdmVQb3BvdmVyT3ZlcmxheSgpO1xuICAgIH0pKTtcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlcldpbmRvd0V2ZW50UmVtb3ZlUG9wb3Zlck92ZXJsYXkob2JzOiBPYnNlcnZhYmxlPE1vdXNlRXZlbnQ+LCBmbGFnc01vdXNlczogSUZsYWdNb3VzZSkge1xuICAgIHRoaXMuc3Vic0V2ZW50UG9wdXAuYWRkKG9icy5waXBlKGRlYm91bmNlVGltZSgxMCkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICBpZiAoZmxhZ3NNb3VzZXMuaXNNb3VzZUVudGVyIHx8IGZsYWdzTW91c2VzLmlzTW91c2VFbnRlckNvbnRlbnQgfHwgdGhpcy5pZ25vcmVDbGlja091dHNpZGUoKSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5mbGFnTW91c2UoKSAmJiAodGhpcy5mbGFnTW91c2UoKS5pc01vdXNlRW50ZXIgfHwgdGhpcy5mbGFnTW91c2UoKS5pc01vdXNlRW50ZXJDb250ZW50KSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICB0aGlzLmZpcnN0Q2xpY2suc2V0KGZhbHNlKTtcbiAgICAgIHRoaXMucmVtb3ZlUG9wb3Zlck92ZXJsYXkoKTtcbiAgICB9KSk7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZXJNb3VzZUxlYXZlUmVtb3ZlUG9wb3Zlck92ZXJsYXkob2JzOiBPYnNlcnZhYmxlPE1vdXNlRXZlbnQ+LCBmbGFnc01vdXNlczogeyBpc01vdXNlRW50ZXI6IGJvb2xlYW4sIGlzTW91c2VFbnRlckNvbnRlbnQ6IGJvb2xlYW4gfSwgZmxhZ0tleUNoYW5nZVZhbHVlOiBzdHJpbmcsIGZsYWdLZXlDaGVjazogc3RyaW5nLCBvdXRFdmVudDogVFlQRV9QT1BPVkVSX0VWRU5UKSB7XG4gICAgdGhpcy5zdWJzRXZlbnRQb3B1cC5hZGQob2JzLnBpcGUoXG4gICAgICB0YXAoKCkgPT4gdGhpcy5vdXRFdmVudC5lbWl0KG91dEV2ZW50KSksXG4gICAgICBkZWJvdW5jZVRpbWUoZ2V0UG9wb3ZlclRpbWVyRGVzdHJveUluUXVlcnlVcmwoKSB8fCB0aGlzLmNvbmZpZygpPy50aW1lckRlc3Ryb3kgfHwgMClcbiAgICApLnN1YnNjcmliZSgoZTogTW91c2VFdmVudCkgPT4ge1xuICAgICAgaWYgKG91dEV2ZW50ID09PSAnbW91c2VsZWF2ZS1lbGVtZW50JyAmJiAoY2hlY2tNb3VzZU92ZXJJbkNvbnRhaW5lcihlLCB0aGlzLkVsZW1lbnQpIHx8IGNoZWNrTW91c2VPdmVySW5Db250YWluZXIoeyBjbGllbnRYOiBlLmNsaWVudFggKyAyLCBjbGllbnRZOiBlLmNsaWVudFkgKyAyIH0sIHRoaXMuRWxlbWVudCkgfHwgY2hlY2tNb3VzZU92ZXJJbkNvbnRhaW5lcih7IGNsaWVudFg6IGUuY2xpZW50WCAtIDIsIGNsaWVudFk6IGUuY2xpZW50WSAtIDIgfSwgdGhpcy5FbGVtZW50KSkpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgc2V0KGZsYWdzTW91c2VzLCBmbGFnS2V5Q2hhbmdlVmFsdWUsIGZhbHNlKTtcbiAgICAgIHRoaXMub3V0Q2hhbmdTdGFnZUZsYWdNb3VzZS5lbWl0KGZsYWdzTW91c2VzKTtcbiAgICAgIGlmICh0aGlzLmZsYWdNb3VzZSgpICYmICh0aGlzLmZsYWdNb3VzZSgpLmlzTW91c2VFbnRlciB8fCB0aGlzLmZsYWdNb3VzZSgpLmlzTW91c2VFbnRlckNvbnRlbnQpKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYgKGdldChmbGFnc01vdXNlcywgZmxhZ0tleUNoZWNrKSB8fCB0aGlzLmlnbm9yZUhpZGRlblBvcG92ZXJDb250ZW50V2hlbk1vdXNlTGVhdmUoKSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICB0aGlzLnJlbW92ZVBvcG92ZXJPdmVybGF5KCk7XG4gICAgfSkpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXREZWZhdWx0Q29uZmlncygpOiBJUG9wb3Zlck92ZXJsYXkge1xuICAgIGNvbnN0IGNvbmZpZ1ZhbHVlID0gdGhpcy5jb25maWcoKSB8fCB7fTtcbiAgICBpZiAoKGlzTmlsKGNvbmZpZ1ZhbHVlLmNvbnRlbnQpKSB8fCAoY29uZmlnVmFsdWUuY29udGVudCA9PT0gdGhpcy5jb250ZW50SW5uZXJIdG1sKCkgJiYgdGhpcy5jb250ZW50SW5uZXJIdG1sKCkgIT09IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmlubmVySFRNTCkpIHtcbiAgICAgIGNvbmZpZ1ZhbHVlLmNvbnRlbnQgPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5pbm5lckhUTUw7XG4gICAgfVxuICAgIHRoaXMuY29udGVudElubmVySHRtbC5zZXQodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuaW5uZXJIVE1MKTtcbiAgICBpZiAoIWNvbmZpZ1ZhbHVlLm1heFdpZHRoKSB7XG4gICAgICBjb25maWdWYWx1ZS5tYXhXaWR0aCA9IDI1MDtcbiAgICB9XG4gICAgaWYgKGNvbmZpZ1ZhbHVlLm1heEhlaWdodCA9PT0gdW5kZWZpbmVkIHx8IGNvbmZpZ1ZhbHVlLm1heEhlaWdodCA9PT0gMCkge1xuICAgICAgY29uZmlnVmFsdWUubWF4SGVpZ2h0ID0gMTQwO1xuICAgIH1cbiAgICBpZiAoIWNvbmZpZ1ZhbHVlLmRpcmVjdGlvbikge1xuICAgICAgY29uZmlnVmFsdWUuZGlyZWN0aW9uID0gJ2JvdHRvbSc7XG4gICAgfVxuICAgIGlmICghY29uZmlnVmFsdWUucG9zaXRpb24pIHtcbiAgICAgIGNvbmZpZ1ZhbHVlLnBvc2l0aW9uID0ge1xuICAgICAgICBtb2RlOiAnY2VudGVyJyxcbiAgICAgICAgZGlzdGFuY2U6IDBcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIGNvbmZpZ1ZhbHVlO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyByZW1vdmVQb3BvdmVyT3ZlcmxheSgpIHtcbiAgICBpZiAodGhpcy5wb3BvdmVyT3ZlcmxheUNvbXBvbmVudCkge1xuICAgICAgdGhpcy5vdXRFdmVudC5lbWl0KCdyZW1vdmUnKTtcbiAgICAgIHRoaXMuc3Vic0V2ZW50UG9wdXAudW5zdWJzY3JpYmUoKTtcbiAgICAgIHRoaXMuc3Vic0V2ZW50UG9wdXAgPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG4gICAgfVxuICAgIHRoaXMuZHluYW1pY1NlcnZpY2UucmVtb3ZlKHRoaXMucG9wb3Zlck92ZXJsYXlDb21wb25lbnQsIHRoaXMuZnJhbWVJZCgpKTtcbiAgICB0aGlzLmZyYW1lSWQuc2V0KCcnKTtcbiAgICB0aGlzLnBvcG92ZXJPdmVybGF5Q29tcG9uZW50ID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuZmlyc3RDbGljay5zZXQoZmFsc2UpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgY2xlYXJUaW1lb3V0KHRoaXMudGltZXIoKSk7XG4gICAgdGhpcy5yZW1vdmVQb3BvdmVyT3ZlcmxheSgpO1xuICAgIHRoaXMub25EZXN0cm95Lm5leHQoKTtcbiAgICB0aGlzLm9uRGVzdHJveS5jb21wbGV0ZSgpO1xuICAgIHRoaXMuc3Vic0V2ZW50UG9wdXAudW5zdWJzY3JpYmUoKTtcbiAgfVxufVxuIiwiPG5nLWNvbnRlbnQgLz5cbiJdfQ==
|
|
320
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9wb3Zlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzLXVpL2NvbXBvbmVudHMvcG9wb3Zlci9zcmMvcG9wb3Zlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9saWJzLXVpL2NvbXBvbmVudHMvcG9wb3Zlci9zcmMvcG9wb3Zlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx1REFBdUQ7QUFDdkQsT0FBTyxFQUFvQix1QkFBdUIsRUFBRSxTQUFTLEVBQWdCLFVBQVUsRUFBcUIsTUFBTSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDcEwsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDcEYsT0FBTyxFQUFFLHlCQUF5QixFQUFFLEdBQUcsRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3pGLE9BQU8sRUFBYyxPQUFPLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNwRSxPQUFPLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5RCxPQUFPLEVBQUUsZ0NBQWdDLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUs5RixPQUFPLEVBQUUsdUNBQXVDLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQzs7QUFVdEYsTUFBTSxPQUFPLGdDQUFnQztJQUMzQyxtQkFBbUI7SUFDWCxVQUFVLENBQTBCO0lBQ3BDLFVBQVUsQ0FBMEI7SUFDcEMsVUFBVSxDQUEwQjtJQUNwQyxZQUFZLENBQTBCO0lBQ3RDLFdBQVcsQ0FBMEI7SUFDckMsZUFBZSxDQUEwQjtJQUN6QyxXQUFXLENBQTBCO0lBQ3JDLGFBQWEsQ0FBMEI7SUFDdkMsZUFBZSxD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LGNBQWMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLHVCQUF1QixFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBQ3pFLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3JCLElBQUksQ0FBQyx1QkFBdUIsR0FBRyxTQUFTLENBQUM7UUFDekMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQUVELFdBQVc7UUFDVCxZQUFZLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7UUFDM0IsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7UUFDNUIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN0QixJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQzFCLElBQUksQ0FBQyxjQUFjLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDcEMsQ0FBQzt3R0E1VlUsZ0NBQWdDOzRGQUFoQyxnQ0FBZ0MsOHhFQ3JCN0Msa0JBQ0E7OzRGRG9CYSxnQ0FBZ0M7a0JBUjVDLFNBQVM7K0JBRUUsK0RBQStELGNBRzdELElBQUksbUJBQ0MsdUJBQXVCLENBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cbmltcG9ydCB7IEFmdGVyQ29udGVudEluaXQsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIENvbXBvbmVudFJlZiwgRWxlbWVudFJlZiwgT25EZXN0cm95LCBPbkluaXQsIGVmZmVjdCwgaW5qZWN0LCBpbnB1dCwgb3V0cHV0LCBzaWduYWwsIHVudHJhY2tlZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTGlic1VpRHluYW1pY0NvbXBvbmVudFNlcnZpY2UgfSBmcm9tICdAbGlicy11aS9zZXJ2aWNlcy1keW5hbWljLWNvbXBvbmVudCc7XG5pbXBvcnQgeyBjaGVja01vdXNlT3ZlckluQ29udGFpbmVyLCBnZXQsIGdldFZpZXdwb3J0LCBpc05pbCwgc2V0IH0gZnJvbSAnQGxpYnMtdWkvdXRpbHMnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCwgU3Vic2NyaXB0aW9uLCBmcm9tRXZlbnQgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgdGFrZVVudGlsLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBnZXRQb3BvdmVyVGltZXJEZXN0cm95SW5RdWVyeVVybCB9IGZyb20gJy4vZGVmaW5lcy9nZXQtcG9wb3Zlci10aW1lci1kZXN0cm95LmRlZmluZSc7XG5pbXBvcnQgeyBJRmxhZ01vdXNlIH0gZnJvbSAnLi9pbnRlcmZhY2VzL2ZsYWctbW91c2UuaW50ZXJmYWNlJztcbmltcG9ydCB7IElQb3BvdmVyRnVuY3Rpb25Db250cm9sRXZlbnQgfSBmcm9tICcuL2ludGVyZmFjZXMvZnVuY3Rpb24tY29udHJvbC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgSVBvcG92ZXJPdmVybGF5IH0gZnJvbSAnLi9pbnRlcmZhY2VzL292ZXJsYXkuaW50ZXJmYWNlJztcbmltcG9ydCB7IFRZUEVfUE9QT1ZFUl9ESVJFQ1RJT04sIFRZUEVfUE9QT1ZFUl9FVkVOVCwgVFlQRV9QT1BPVkVSX01PREUsIFRZUEVfUE9QT1ZFUl9UWVBFIH0gZnJvbSAnLi9pbnRlcmZhY2VzL3BvcG92ZXIudHlwZSc7XG5pbXBvcnQgeyBMaWJzVWlDb21wb25lbnRzUG9wb3Zlck92ZXJsYXlDb21wb25lbnQgfSBmcm9tICcuL292ZXJsYXkvb3ZlcmxheS5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9jb21wb25lbnQtc2VsZWN0b3JcbiAgc2VsZWN0b3I6ICdsaWJzX3VpLWNvbXBvbmVudHMtcG9wb3ZlcixbTGlic1VpQ29tcG9uZW50c1BvcG92ZXJEaXJlY3RpdmVdJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3BvcG92ZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vcG9wb3Zlci5jb21wb25lbnQuc2NzcycsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBMaWJzVWlDb21wb25lbnRzUG9wb3ZlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJDb250ZW50SW5pdCwgT25EZXN0cm95IHtcbiAgLy8gI3JlZ2lvbiBQUk9QRVJUWVxuICBwcml2YXRlIG1vdXNlRW50ZXIhOiBPYnNlcnZhYmxlPE1vdXNlRXZlbnQ+O1xuICBwcml2YXRlIG1vdXNlV2hlZWwhOiBPYnNlcnZhYmxlPE1vdXNlRXZlbnQ+O1xuICBwcml2YXRlIG1vdXNlQ2xpY2shOiBPYnNlcnZhYmxlPE1vdXNlRXZlbnQ+O1xuICBwcml2YXRlIHdpbmRvd1Jlc2l6ZSE6IE9ic2VydmFibGU8TW91c2VFdmVudD47XG4gIHByaXZhdGUgd2luZG93V2hlZWwhOiBPYnNlcnZhYmxlPE1vdXNlRXZlbnQ+O1xuICBwcml2YXRlIHdpbmRvd01vdXNlRG93biE6IE9ic2VydmFibGU8TW91c2VFdmVudD47XG4gIHByaXZhdGUgd2luZG93Q2xpY2shOiBPYnNlcnZhYmxlPE1vdXNlRXZlbnQ+O1xuICBwcml2YXRlIHdpbmRvd01vdXNlVXAhOiBPYnNlcnZhYmxlPE1vdXNlRXZlbnQ+O1xuICBwcml2YXRlIHdpbmRvd01vdXNlbW92ZSE6IE9ic2VydmFibGU8TW91c2VFdmVudD47XG4gIHByaXZhdGUgd2luZG93VG91Y2ghOiBPYnNlcnZhYmxlPE1vdXNlRXZlbnQ+O1xuICBwcml2YXRlIHBvcG92ZXJPdmVybGF5Q29tcG9uZW50ITogQ29tcG9uZW50UmVmPExpYnNVaUNvbXBvbmVudHNQb3BvdmVyT3ZlcmxheUNvbXBvbmVudD4gfCB1bmRlZmluZWQ7XG4gIHByaXZhdGUgc3Vic0V2ZW50UG9wdXAgPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG4gIHByaXZhdGUgb25EZXN0cm95ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgcHJpdmF0ZSBmdW5jdGlvbnNDb250cm9sPzogSVBvcG92ZXJGdW5jdGlvbkNvbnRyb2xFdmVudDtcbiAgcHJpdmF0ZSBmaXJzdENsaWNrID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcbiAgcHJpdmF0ZSBjb250ZW50SW5uZXJIdG1sID0gc2lnbmFsPHN0cmluZz4oJycpO1xuICBwcml2YXRlIHRpbWVyID0gc2lnbmFsPG51bWJlciB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgcHJpdmF0ZSBkaXJlY3Rpb25Qb3BvdmVyID0gc2lnbmFsPFRZUEVfUE9QT1ZFUl9ESVJFQ1RJT04gfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIHByaXZhdGUgZnJhbWVJZCA9IHNpZ25hbDxzdHJpbmc+KCcnKTtcblxuICAvLyAjcmVnaW9uIElOUFVUXG4gIHJlYWRvbmx5IGRlYnVnSWQgPSBpbnB1dDxzdHJpbmc+KCk7XG4gIHJlYWRvbmx5IGZsYWdNb3VzZSA9IGlucHV0PElGbGFnTW91c2UsIElGbGFnTW91c2U+KHsgaXNNb3VzZUVudGVyOiBmYWxzZSwgaXNNb3VzZUVudGVyQ29udGVudDogZmFsc2UsIGlzQ29udGFpbmVySGFzU2Nyb2xsOiBmYWxzZSB9LCB7XG4gICAgdHJhbnNmb3JtOiAodmFsdWU6IGFueSkgPT4gdmFsdWUgPyB2YWx1ZSA6IHsgaXNNb3VzZUVudGVyOiBmYWxzZSwgaXNNb3VzZUVudGVyQ29udGVudDogZmFsc2UsIGlzQ29udGFpbmVySGFzU2Nyb2xsOiBmYWxzZSB9XG4gIH0pO1xuICByZWFkb25seSB0eXBlID0gaW5wdXQ8VFlQRV9QT1BPVkVSX1RZUEU+KCdvdGhlcicpO1xuICByZWFkb25seSBtb2RlID0gaW5wdXQ8VFlQRV9QT1BPVkVSX01PREU+KCdob3ZlcicpO1xuICByZWFkb25seSBjb25maWcgPSBpbnB1dCh7fSwgeyB0cmFuc2Zvcm06ICh2YWx1ZTogSVBvcG92ZXJPdmVybGF5IHwgdW5kZWZpbmVkKSA9PiB2YWx1ZSA/IHZhbHVlIDoge30gfSk7XG4gIHJlYWRvbmx5IGlnbm9yZVNob3dQb3BvdmVyID0gaW5wdXQ8Ym9vbGVhbj4oKTtcbiAgcmVhZG9ubHkgZWxlbWVudFJlZkN1c3RvbSA9IGlucHV0PEhUTUxFbGVtZW50PigpO1xuICByZWFkb25seSBjbGFzc0luY2x1ZGUgPSBpbnB1dDxzdHJpbmcgfCB1bmRlZmluZWQsIHN0cmluZyB8IHVuZGVmaW5lZD4oJycsIHsgdHJhbnNmb3JtOiAodmFsdWUpID0+IHZhbHVlID8/ICcnIH0pO1xuICByZWFkb25seSBpZ25vcmVIaWRkZW5Qb3BvdmVyQ29udGVudFdoZW5Nb3VzZUxlYXZlID0gaW5wdXQ8Ym9vbGVhbj4oKTtcbiAgcmVhZG9ubHkgaWdub3JlU3RvcFByb3BhZ2F0aW9uRXZlbnQgPSBpbnB1dDxib29sZWFuPigpO1xuICByZWFkb25seSBpZ25vcmVDdXJzb3JQb2ludGVyTW9kZUxpa2VDbGljayA9IGlucHV0PGJvb2xlYW4+KCk7XG4gIHJlYWRvbmx5IGlzQWRkQ29udGVudFRvUGFyZW50RG9jdW1lbnQgPSBpbnB1dDxib29sZWFuPigpO1xuICByZWFkb25seSBpZ25vcmVDbGlja091dHNpZGUgPSBpbnB1dDxib29sZWFuPigpO1xuXG4gIC8vICNyZWdpb24gT1VUUFVUXG4gIHJlYWRvbmx5IG91dEV2ZW50ID0gb3V0cHV0PFRZUEVfUE9QT1ZFUl9FVkVOVD4oKTtcbiAgcmVhZG9ubHkgb3V0Q2hhbmdTdGFnZUZsYWdNb3VzZSA9IG91dHB1dDxJRmxhZ01vdXNlPigpO1xuICByZWFkb25seSBvdXRFdmVudFBvcG92ZXJDb250ZW50ID0gb3V0cHV0PFRZUEVfUE9QT1ZFUl9ESVJFQ1RJT04+KCk7XG4gIHJlYWRvbmx5IG91dEZ1bmN0aW9uc0NvbnRyb2wgPSBvdXRwdXQ8SVBvcG92ZXJGdW5jdGlvbkNvbnRyb2xFdmVudD4oKTtcblxuICAvLyAjcmVnaW9uIElOSkVDVFxuICBwcml2YXRlIGVsZW1lbnRSZWYgPSBpbmplY3QoRWxlbWVudFJlZik7XG4gIHByaXZhdGUgZHluYW1pY1NlcnZpY2UgPSBpbmplY3QoTGlic1VpRHluYW1pY0NvbXBvbmVudFNlcnZpY2UpO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIGxldCBjbGFzc0RlZmF1bHQ6IHN0cmluZyB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcbiAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgaWYgKGNsYXNzRGVmYXVsdCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGNsYXNzRGVmYXVsdCA9IHRoaXMuRWxlbWVudC5jbGFzc05hbWU7XG4gICAgICB9XG4gICAgICB0aGlzLkVsZW1lbnQuY2xhc3NOYW1lID0gY2xhc3NEZWZhdWx0IHx8ICcnO1xuICAgICAgaWYgKHRoaXMudHlwZSgpID09PSAndGV4dCcpIHtcbiAgICAgICAgdGhpcy5FbGVtZW50LmNsYXNzTGlzdC5hZGQoJ3BvcG92ZXItdGV4dC1lbGxpcHNpcycpO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMubW9kZSgpLmluY2x1ZGVzKCdjbGljaycpICYmICF0aGlzLmlnbm9yZUN1cnNvclBvaW50ZXJNb2RlTGlrZUNsaWNrKCkpIHtcbiAgICAgICAgdGhpcy5FbGVtZW50LmNsYXNzTGlzdC5hZGQoJ2N1cnNvci1wb2ludGVyJyk7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5jbGFzc0luY2x1ZGUoKSkge1xuICAgICAgICB0aGlzLmNsYXNzSW5jbHVkZSgpPy5zcGxpdCgnICcpLmZvckVhY2goY2xhc3NOYW1lID0+IHtcbiAgICAgICAgICBpZiAoIWNsYXNzTmFtZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLkVsZW1lbnQuY2xhc3NMaXN0LmFkZChjbGFzc05hbWUpO1xuICAgICAgICB9KVxuICAgICAgfVxuICAgIH0pO1xuXG4gICAgbGV0IGZpcnN0ID0gdHJ1ZTtcbiAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgdGhpcy5jb25maWcoKTtcbiAgICAgIHVudHJhY2tlZCgoKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLnBvcG92ZXJPdmVybGF5Q29tcG9uZW50Py5pbnN0YW5jZSAmJiAhZmlyc3QpIHtcbiAgICAgICAgICB0aGlzLnVwZGF0ZVBvcG92ZXJPdmVybGF5UG9zaXRpb24oKTtcbiAgICAgICAgfVxuICAgICAgICBmaXJzdCA9IGZhbHNlO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLm91dEV2ZW50UG9wb3ZlckNvbnRlbnQuc3Vic2NyaWJlKGRpcmVjdGlvbiA9PiB0aGlzLmRpcmVjdGlvblBvcG92ZXIuc2V0KGRpcmVjdGlvbikpO1xuICAgIHRoaXMuZnVuY3Rpb25zQ29udHJvbCA9IHtcbiAgICAgIHJlbW92ZVBvcG92ZXJPdmVybGF5OiB0aGlzLnJlbW92ZVBvcG92ZXJPdmVybGF5LmJpbmQodGhpcyksXG4gICAgICB1cGRhdGVQb3BvdmVyT3ZlcmxheVBvc2l0aW9uOiB0aGlzLnVwZGF0ZVBvcG92ZXJPdmVybGF5UG9zaXRpb24uYmluZCh0aGlzKSxcbiAgICAgIGdldFJlY3RDb250YWluZXI6IGFzeW5jICgpID0+ICh0aGlzLmVsZW1lbnRSZWZDdXN0b20oKSB8fCB0aGlzLkVsZW1lbnQpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLFxuICAgICAgZ2V0UmVjdENvbnRlbnQ6IGFzeW5jICgpID0+ICh0aGlzLnBvcG92ZXJPdmVybGF5Q29tcG9uZW50Py5pbnN0YW5jZT8uQ29udGFpbmVyRWxlbWVudCk/LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLFxuICAgICAgc2hvd1BvcG92ZXI6IHRoaXMuYWRkUG9wb3ZlckNvbnRlbnQuYmluZCh0aGlzKSxcbiAgICAgIHVwZGF0ZVBvcG92ZXJPdmVybGF5OiB0aGlzLnVwZGF0ZVBvcG92ZXJPdmVybGF5LmJpbmQodGhpcyksXG4gICAgfTtcbiAgICB0aGlzLm91dEZ1bmN0aW9uc0NvbnRyb2wuZW1pdCh0aGlzLmZ1bmN0aW9uc0NvbnRyb2wpO1xuICB9XG5cbiAgbmdBZnRlckNvbnRlbnRJbml0KCkge1xuICAgIGNvbnN0IG5hdGl2ZUVsID0gdGhpcy5FbGVtZW50O1xuICAgIHRoaXMubW91c2VFbnRlciA9IHRoaXMuaW5pdE9ic2VydmFibGUobmF0aXZlRWwsICdtb3VzZWVudGVyJyk7XG4gICAgdGhpcy5tb3VzZUNsaWNrID0gdGhpcy5pbml0T2JzZXJ2YWJsZShuYXRpdmVFbCwgJ2NsaWNrJyk7XG4gICAgdGhpcy5tb3VzZVdoZWVsID0gdGhpcy5pbml0T2JzZXJ2YWJsZSh3aW5kb3csICd3aGVlbCcpO1xuICAgIHRoaXMud2luZG93UmVzaXplID0gdGhpcy5pbml0T2JzZXJ2YWJsZSh3aW5kb3csICdyZXNpemUnKTtcbiAgICB0aGlzLndpbmRvd1doZWVsID0gdGhpcy5pbml0T2JzZXJ2YWJsZSh3aW5kb3csICd3aGVlbCcpO1xuICAgIHRoaXMud2luZG93TW91c2VEb3duID0gdGhpcy5pbml0T2JzZXJ2YWJsZSh3aW5kb3csICdtb3VzZWRvd24nKTtcbiAgICB0aGlzLndpbmRvd0NsaWNrID0gdGhpcy5pbml0T2JzZXJ2YWJsZSh3aW5kb3csICdjbGljaycpO1xuICAgIHRoaXMud2luZG93TW91c2VVcCA9IHRoaXMuaW5pdE9ic2VydmFibGUod2luZG93LCAnbW91c2V1cCcpO1xuICAgIHRoaXMud2luZG93VG91Y2ggPSB0aGlzLmluaXRPYnNlcnZhYmxlKHdpbmRvdywgJ3RvdWNoc3RhcnQnKTtcbiAgICB0aGlzLndpbmRvd01vdXNlbW92ZSA9IHRoaXMuaW5pdE9ic2VydmFibGUod2luZG93LCAnbW91c2Vtb3ZlJyk7XG4gICAgdGhpcy5tb3VzZUVudGVyLnN1YnNjcmliZSgoKSA9PiB7XG5cbiAgICAgIGlmICghdGhpcy5tb2RlKCkuaW5jbHVkZXMoJ2hvdmVyJykpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy50eXBlKCkgPT09ICd0ZXh0JyAmJiBuYXRpdmVFbD8uY2xpZW50V2lkdGggPj0gbmF0aXZlRWwuc2Nyb2xsV2lkdGggJiYgIXRoaXMucG9wb3Zlck92ZXJsYXlDb21wb25lbnQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdGhpcy5hZGRQb3BvdmVyQ29udGVudChuYXRpdmVFbCk7XG4gICAgfSk7XG4gICAgdGhpcy5tb3VzZUNsaWNrLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLmZpcnN0Q2xpY2sudXBkYXRlKHZhbCA9PiAhdmFsKTtcbiAgICAgIHRoaXMub3V0RXZlbnQuZW1pdCgnY2xpY2snKTtcblxuICAgICAgaWYgKCF0aGlzLm1vZGUoKS5zdGFydHNXaXRoKCdjbGljaycpKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMubW9kZSgpID09PSAnY2xpY2stdG9nZ2xlJyAmJiAhdGhpcy5maXJzdENsaWNrKCkpIHtcbiAgICAgICAgdGhpcy5yZW1vdmVQb3BvdmVyT3ZlcmxheSgpO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHRoaXMuYWRkUG9wb3ZlckNvbnRlbnQobmF0aXZlRWwpO1xuICAgIH0pO1xuICAgIHRoaXMud2luZG93UmVzaXplLnBpcGUoZGVib3VuY2VUaW1lKDUwMCkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICBpZiAoIXRoaXMucG9wb3Zlck92ZXJsYXlDb21wb25lbnQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdGhpcy5yZW1vdmVQb3BvdmVyT3ZlcmxheSgpO1xuICAgICAgdGhpcy5hZGRQb3BvdmVyQ29udGVudChuYXRpdmVFbCk7XG4gICAgfSk7XG4gIH1cblxuICAvLyAjcmVnaW9uIEZVTkNUSU9OU1xuICBwcml2YXRlIGFzeW5jIHVwZGF0ZVBvcG92ZXJPdmVybGF5KCkge1xuICAgIGNvbnN0IHRpbWVyID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBjbGVhclRpbWVvdXQodGltZXIpO1xuICAgICAgaWYgKCF0aGlzLnBvcG92ZXJPdmVybGF5Q29tcG9uZW50Py5pbnN0YW5jZSB8fCAhdGhpcy5jb25maWcoKSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBjb25zdCBpbnN0YW5jZSA9IHRoaXMucG9wb3Zlck92ZXJsYXlDb21wb25lbnQuaW5zdGFuY2U7XG4gICAgICBjb25zdCBuYXRpdmVFbCA9IHRoaXMuZWxlbWVudFJlZkN1c3RvbSgpIHx8IHRoaXMuRWxlbWVudDtcblxuICAgICAgaW5zdGFuY2Uuc2V0Q29uZmlnKG5hdGl2ZUVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLCB0aGlzLmNvbmZpZygpKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgdXBkYXRlUG9wb3Zlck92ZXJsYXlQb3NpdGlvbigpIHtcbiAgICBjbGVhclRpbWVvdXQodGhpcy50aW1lcigpKTtcbiAgICB0aGlzLnRpbWVyLnNldChzZXRUaW1lb3V0KGFzeW5jICgpID0+IHtcbiAgICAgIGlmICghdGhpcy5wb3BvdmVyT3ZlcmxheUNvbXBvbmVudCB8fCAhdGhpcy5wb3BvdmVyT3ZlcmxheUNvbXBvbmVudC5pbnN0YW5jZSB8fCAhdGhpcy5jb25maWcoKSB8fCAhdGhpcy5mdW5jdGlvbnNDb250cm9sKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHZpZXdQb3J0ID0gZ2V0Vmlld3BvcnQoKTtcbiAgICAgIGNvbnN0IHJlY3RMaXN0VmlldyA9IGF3YWl0IHRoaXMuZnVuY3Rpb25zQ29udHJvbC5nZXRSZWN0Q29udGVudCgpO1xuXG4gICAgICBpZiAoIXJlY3RMaXN0Vmlldykge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBjb25zdCByZWN0Q29udGFpbmVyID0gYXdhaXQgdGhpcy5mdW5jdGlvbnNDb250cm9sLmdldFJlY3RDb250YWluZXIoKTtcbiAgICAgIGNvbnN0IGRpc3RhbmNlTGlzdFZpZXdBbmRDb250YWluZXIgPSB0aGlzLmNvbmZpZygpPy5pZ25vcmVBcnJvdyA9PT0gZmFsc2UgPyAxNCA6IDQ7XG5cbiAgICAgIGlmICh0aGlzLmRpcmVjdGlvblBvcG92ZXIoKSA9PT0gJ2JvdHRvbScgJiYgKChyZWN0TGlzdFZpZXcudG9wICsgcmVjdExpc3RWaWV3LmhlaWdodCA+IHZpZXdQb3J0LmhlaWdodCkgfHwgKHJlY3RMaXN0Vmlldy50b3AgPCAocmVjdENvbnRhaW5lci50b3AgKyByZWN0Q29udGFpbmVyLmhlaWdodCkpIHx8IChyZWN0TGlzdFZpZXcudG9wIC0gKHJlY3RDb250YWluZXIudG9wICsgcmVjdENvbnRhaW5lci5oZWlnaHQpID4gZGlzdGFuY2VMaXN0Vmlld0FuZENvbnRhaW5lcikpIHx8ICgocmVjdExpc3RWaWV3LmxlZnQgKyByZWN0TGlzdFZpZXcud2lkdGggPiB2aWV3UG9ydC53aWR0aCkpKSB7XG5cbiAgICAgICAgY29uc3QgaW5zdGFuY2UgPSB0aGlzLnBvcG92ZXJPdmVybGF5Q29tcG9uZW50Lmluc3RhbmNlO1xuICAgICAgICBjb25zdCBuYXRpdmVFbCA9IHRoaXMuZWxlbWVudFJlZkN1c3RvbSgpIHx8IHRoaXMuRWxlbWVudDtcbiAgICAgICAgaW5zdGFuY2Uuc2V0Q29uZmlnKG5hdGl2ZUVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLCB7IC4uLiAodGhpcy5jb25maWcoKSB8fCB7fSksIC4uLnRoaXMuZ2V0RGVmYXVsdENvbmZpZ3MoKSB9LCB0aGlzLmlzQWRkQ29udGVudFRvUGFyZW50RG9jdW1lbnQoKSk7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5kaXJlY3Rpb25Qb3BvdmVyKCkgIT09ICd0b3AnKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmICgocmVjdENvbnRhaW5lci50b3AgLSAocmVjdExpc3RWaWV3LnRvcCArIHJlY3RMaXN0Vmlldy5oZWlnaHQpID4gZGlzdGFuY2VMaXN0Vmlld0FuZENvbnRhaW5lcikgfHwgKHJlY3RMaXN0Vmlldy50b3AgKyByZWN0TGlzdFZpZXcuaGVpZ2h0ICsgZGlzdGFuY2VMaXN0Vmlld0FuZENvbnRhaW5lciA+IHJlY3RDb250YWluZXIudG9wICsgMikgfHwgKChyZWN0TGlzdFZpZXcubGVmdCArIHJlY3RMaXN0Vmlldy53aWR0aCA+IHZpZXdQb3J0LndpZHRoKSkpIHtcbiAgICAgICAgY29uc3QgaW5zdGFuY2UgPSB0aGlzLnBvcG92ZXJPdmVybGF5Q29tcG9uZW50Lmluc3RhbmNlO1xuICAgICAgICBjb25zdCBuYXRpdmVFbCA9IHRoaXMuZWxlbWVudFJlZkN1c3RvbSgpIHx8IHRoaXMuRWxlbWVudDtcblxuICAgICAgICBpbnN0YW5jZS5zZXRDb25maWcobmF0aXZlRWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksIHsgLi4uICh0aGlzLmNvbmZpZygpIHx8IHt9KSwgLi4udGhpcy5nZXREZWZhdWx0Q29uZmlncygpIH0sIHRoaXMuaXNBZGRDb250ZW50VG9QYXJlbnREb2N1bWVudCgpKTtcblxuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfSwgMjUwKSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0IEVsZW1lbnQoKTogSFRNTEVsZW1lbnQge1xuICAgIHJldHVybiB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5maXJzdEVsZW1lbnRDaGlsZCB8fCB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdE9ic2VydmFibGUoZWw6IGFueSwgZXZlbnROYW1lOiBzdHJpbmcpOiBPYnNlcnZhYmxlPE1vdXNlRXZlbnQ+IHtcbiAgICByZXR1cm4gZnJvbUV2ZW50PE1vdXNlRXZlbnQ+KGVsLCBldmVudE5hbWUpLnBpcGUoXG4gICAgICB0YXAoZSA9PiAhdGhpcy5pZ25vcmVTdG9wUHJvcGFnYXRpb25FdmVudCgpICYmIGUuc3RvcFByb3BhZ2F0aW9uKCkpLFxuICAgICAgdGFrZVVudGlsKHRoaXMub25EZXN0cm95KVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGFkZFBvcG92ZXJDb250ZW50KG5hdGl2ZUVsOiBIVE1MRWxlbWVudCkge1xuICAgIGlmICh0aGlzLnBvcG92ZXJPdmVybGF5Q29tcG9uZW50IHx8IHRoaXMuaWdub3JlU2hvd1BvcG92ZXIoKSB8fCAhdGhpcy5jb25maWcoKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMucG9wb3Zlck92ZXJsYXlDb21wb25lbnQgPSB0aGlzLmR5bmFtaWNTZXJ2aWNlLnJlc29sdmVDb21wb25lbnRGYWN0b3J5KExpYnNVaUNvbXBvbmVudHNQb3BvdmVyT3ZlcmxheUNvbXBvbmVudCk7XG4gICAgdGhpcy5mcmFtZUlkLnNldCh0aGlzLmR5bmFtaWNTZXJ2aWNlLmFkZFRvQm9keSh0aGlzLnBvcG92ZXJPdmVybGF5Q29tcG9uZW50LCB0aGlzLmlzQWRkQ29udGVudFRvUGFyZW50RG9jdW1lbnQoKSB8fCB0aGlzLmNvbmZpZygpLmlzQWRkQ29udGVudFRvUGFyZW50RG9jdW1lbnQpKTtcbiAgICB0aGlzLm91dEV2ZW50LmVtaXQoJ3Nob3cnKTtcbiAgICBjb25zdCBpbnN0YW5jZSA9IHRoaXMucG9wb3Zlck92ZXJsYXlDb21wb25lbnQuaW5zdGFuY2U7XG5cbiAgICBuYXRpdmVFbCA9IHRoaXMuZWxlbWVudFJlZkN1c3RvbSgpIHx8IG5hdGl2ZUVsO1xuICAgIGluc3RhbmNlLnNldENvbmZpZyhuYXRpdmVFbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSwgeyAuLi4gKHRoaXMuY29uZmlnKCkgfHwge30pLCAuLi50aGlzLmdldERlZmF1bHRDb25maWdzKCkgfSwgdGhpcy5pc0FkZENvbnRlbnRUb1BhcmVudERvY3VtZW50KCkpO1xuICAgIGNvbnN0IGZsYWdzTW91c2VzOiBJRmxhZ01vdXNlID0ge1xuICAgICAgaXNNb3VzZUVudGVyOiB0cnVlLFxuICAgICAgaXNNb3VzZUVudGVyQ29udGVudDogZmFsc2UsXG4gICAgICBpc0NvbnRhaW5lckhhc1Njcm9sbDogbmF0aXZlRWwub2Zmc2V0SGVpZ2h0IDwgbmF0aXZlRWwuc2Nyb2xsSGVpZ2h0XG4gICAgfTtcbiAgICBjb25zdCBuYXRpdmVFbENvbnRhaW5lciA9IGluc3RhbmNlLkVsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtcbiAgICBjb25zdCBtb3VzZUVudGVyQ29udGVudCA9IHRoaXMuaW5pdE9ic2VydmFibGUobmF0aXZlRWxDb250YWluZXIsICdtb3VzZWVudGVyJyk7XG4gICAgY29uc3QgbW91c2VMZWF2ZUNvbnRlbnQgPSB0aGlzLmluaXRPYnNlcnZhYmxlKG5hdGl2ZUVsQ29udGFpbmVyLCAnbW91c2VsZWF2ZScpO1xuICAgIHRoaXMuc3Vic0V2ZW50UG9wdXAuYWRkKGluc3RhbmNlLm91dEV2ZW50LnN1YnNjcmliZSgoZGlyZWN0aW9uOiBUWVBFX1BPUE9WRVJfRElSRUNUSU9OKSA9PiB7XG4gICAgICB0aGlzLm91dEV2ZW50UG9wb3ZlckNvbnRlbnQuZW1pdChkaXJlY3Rpb24pO1xuICAgIH0pKTtcblxuICAgIHRoaXMuc3Vic0V2ZW50UG9wdXAuYWRkKG1vdXNlRW50ZXJDb250ZW50LnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLm91dEV2ZW50LmVtaXQoJ21vdXNlZW50ZXItY29udGVudCcpO1xuICAgICAgZmxhZ3NNb3VzZXMuaXNNb3VzZUVudGVyQ29udGVudCA9IHRydWU7XG4gICAgICB0aGlzLm91dENoYW5nU3RhZ2VGbGFnTW91c2UuZW1pdChmbGFnc01vdXNlcyk7XG4gICAgfSkpO1xuXG4gICAgdGhpcy5zdWJzRXZlbnRQb3B1cC5hZGQodGhpcy5tb3VzZUVudGVyLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLm91dEV2ZW50LmVtaXQoJ21vdXNlZW50ZXItZWxlbWVudCcpO1xuICAgICAgdGhpcy5vdXRDaGFuZ1N0YWdlRmxhZ01vdXNlLmVtaXQoZmxhZ3NNb3VzZXMpO1xuICAgIH0pKTtcblxuICAgIHRoaXMuc3Vic0V2ZW50UG9wdXAuYWRkKHRoaXMubW91c2VXaGVlbC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgZmxhZ3NNb3VzZXMuaXNDb250YWluZXJIYXNTY3JvbGwgPSBmYWxzZTtcblxuICAgICAgaWYgKG5hdGl2ZUVsLm9mZnNldEhlaWdodCA8IG5hdGl2ZUVsLnNjcm9sbEhlaWdodCkge1xuICAgICAgICBmbGFnc01vdXNlcy5pc0NvbnRhaW5lckhhc1Njcm9sbCA9IHRydWU7XG4gICAgICB9XG4gICAgICBpZiAoKGZsYWdzTW91c2VzLmlzTW91c2VFbnRlciAmJiBmbGFnc01vdXNlcy5pc0NvbnRhaW5lckhhc1Njcm9sbCkgfHwgZmxhZ3NNb3VzZXMuaXNNb3VzZUVudGVyQ29udGVudCB8fCB0aGlzLmZsYWdNb3VzZSgpLmlzTW91c2VFbnRlciB8fCB0aGlzLmZsYWdNb3VzZSgpLmlzTW91c2VFbnRlckNvbnRlbnQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdGhpcy5yZW1vdmVQb3BvdmVyT3ZlcmxheSgpO1xuICAgIH0pKTtcbiAgICB0aGlzLmhhbmRsZXJNb3VzZUxlYXZlUmVtb3ZlUG9wb3Zlck92ZXJsYXkodGhpcy53aW5kb3dNb3VzZW1vdmUsIGZsYWdzTW91c2VzLCAnaXNNb3VzZUVudGVyJywgJ2lzTW91c2VFbnRlckNvbnRlbnQnLCAnbW91c2VsZWF2ZS1lbGVtZW50Jyk7XG4gICAgdGhpcy5oYW5kbGVyTW91c2VMZWF2ZVJlbW92ZVBvcG92ZXJPdmVybGF5KG1vdXNlTGVhdmVDb250ZW50LCBmbGFnc01vdXNlcywgJ2lzTW91c2VFbnRlckNvbnRlbnQnLCAnaXNNb3VzZUVudGVyJywgJ21vdXNlbGVhdmUtY29udGVudCcpO1xuXG4gICAgaWYgKHRoaXMubW9kZSgpID09PSAnY2xpY2tfb3Blbl9hbmRfY2xpY2tfcGFuZWxfY29udGVudF9oaWRkZW4nKSB7XG4gICAgICB0aGlzLnN1YnNFdmVudFBvcHVwLmFkZCh0aGlzLmluaXRPYnNlcnZhYmxlKG5hdGl2ZUVsQ29udGFpbmVyLCAnY2xpY2snKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLnJlbW92ZVBvcG92ZXJPdmVybGF5KCk7XG4gICAgICB9KSk7XG4gICAgfVxuXG4gICAgdGhpcy5oYW5kbGVyV2luZG93RXZlbnRSZW1vdmVQb3BvdmVyT3ZlcmxheSh0aGlzLndpbmRvd0NsaWNrLCBmbGFnc01vdXNlcyk7XG4gICAgdGhpcy5oYW5kbGVyV2luZG93RXZlbnRSZW1vdmVQb3BvdmVyT3ZlcmxheSh0aGlzLndpbmRvd01vdXNlRG93biwgZmxhZ3NNb3VzZXMpO1xuICAgIHRoaXMuaGFuZGxlcldpbmRvd0V2ZW50UmVtb3ZlUG9wb3Zlck92ZXJsYXkodGhpcy53aW5kb3dNb3VzZVVwLCBmbGFnc01vdXNlcyk7XG4gICAgdGhpcy5oYW5kbGVyV2luZG93RXZlbnRSZW1vdmVQb3BvdmVyT3ZlcmxheSh0aGlzLndpbmRvd1doZWVsLCBmbGFnc01vdXNlcyk7XG4gICAgdGhpcy5zdWJzRXZlbnRQb3B1cC5hZGQodGhpcy53aW5kb3dUb3VjaC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5yZW1vdmVQb3BvdmVyT3ZlcmxheSgpO1xuICAgIH0pKTtcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlcldpbmRvd0V2ZW50UmVtb3ZlUG9wb3Zlck92ZXJsYXkob2JzOiBPYnNlcnZhYmxlPE1vdXNlRXZlbnQ+LCBmbGFnc01vdXNlczogSUZsYWdNb3VzZSkge1xuICAgIHRoaXMuc3Vic0V2ZW50UG9wdXAuYWRkKG9icy5waXBlKGRlYm91bmNlVGltZSgxMCkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICBpZiAoZmxhZ3NNb3VzZXMuaXNNb3VzZUVudGVyIHx8IGZsYWdzTW91c2VzLmlzTW91c2VFbnRlckNvbnRlbnQgfHwgdGhpcy5pZ25vcmVDbGlja091dHNpZGUoKSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5mbGFnTW91c2UoKSAmJiAodGhpcy5mbGFnTW91c2UoKS5pc01vdXNlRW50ZXIgfHwgdGhpcy5mbGFnTW91c2UoKS5pc01vdXNlRW50ZXJDb250ZW50KSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICB0aGlzLmZpcnN0Q2xpY2suc2V0KGZhbHNlKTtcbiAgICAgIHRoaXMucmVtb3ZlUG9wb3Zlck92ZXJsYXkoKTtcbiAgICB9KSk7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZXJNb3VzZUxlYXZlUmVtb3ZlUG9wb3Zlck92ZXJsYXkob2JzOiBPYnNlcnZhYmxlPE1vdXNlRXZlbnQ+LCBmbGFnc01vdXNlczogeyBpc01vdXNlRW50ZXI6IGJvb2xlYW4sIGlzTW91c2VFbnRlckNvbnRlbnQ6IGJvb2xlYW4gfSwgZmxhZ0tleUNoYW5nZVZhbHVlOiBzdHJpbmcsIGZsYWdLZXlDaGVjazogc3RyaW5nLCBvdXRFdmVudDogVFlQRV9QT1BPVkVSX0VWRU5UKSB7XG4gICAgdGhpcy5zdWJzRXZlbnRQb3B1cC5hZGQob2JzLnBpcGUoXG4gICAgICB0YXAoKCkgPT4gdGhpcy5vdXRFdmVudC5lbWl0KG91dEV2ZW50KSksXG4gICAgICBkZWJvdW5jZVRpbWUoZ2V0UG9wb3ZlclRpbWVyRGVzdHJveUluUXVlcnlVcmwoKSB8fCB0aGlzLmNvbmZpZygpPy50aW1lckRlc3Ryb3kgfHwgMClcbiAgICApLnN1YnNjcmliZSgoZTogTW91c2VFdmVudCkgPT4ge1xuICAgICAgaWYgKG91dEV2ZW50ID09PSAnbW91c2VsZWF2ZS1lbGVtZW50JyAmJiAoY2hlY2tNb3VzZU92ZXJJbkNvbnRhaW5lcihlLCB0aGlzLkVsZW1lbnQpIHx8IGNoZWNrTW91c2VPdmVySW5Db250YWluZXIoeyBjbGllbnRYOiBlLmNsaWVudFggKyAyLCBjbGllbnRZOiBlLmNsaWVudFkgKyAyIH0sIHRoaXMuRWxlbWVudCkgfHwgY2hlY2tNb3VzZU92ZXJJbkNvbnRhaW5lcih7IGNsaWVudFg6IGUuY2xpZW50WCAtIDIsIGNsaWVudFk6IGUuY2xpZW50WSAtIDIgfSwgdGhpcy5FbGVtZW50KSkpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgc2V0KGZsYWdzTW91c2VzLCBmbGFnS2V5Q2hhbmdlVmFsdWUsIGZhbHNlKTtcbiAgICAgIHRoaXMub3V0Q2hhbmdTdGFnZUZsYWdNb3VzZS5lbWl0KGZsYWdzTW91c2VzKTtcbiAgICAgIGlmICh0aGlzLmZsYWdNb3VzZSgpICYmICh0aGlzLmZsYWdNb3VzZSgpLmlzTW91c2VFbnRlciB8fCB0aGlzLmZsYWdNb3VzZSgpLmlzTW91c2VFbnRlckNvbnRlbnQpKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYgKGdldChmbGFnc01vdXNlcywgZmxhZ0tleUNoZWNrKSB8fCB0aGlzLmlnbm9yZUhpZGRlblBvcG92ZXJDb250ZW50V2hlbk1vdXNlTGVhdmUoKSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICB0aGlzLnJlbW92ZVBvcG92ZXJPdmVybGF5KCk7XG4gICAgfSkpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXREZWZhdWx0Q29uZmlncygpOiBJUG9wb3Zlck92ZXJsYXkge1xuICAgIGNvbnN0IGNvbmZpZ1ZhbHVlID0gdGhpcy5jb25maWcoKSB8fCB7fTtcbiAgICBpZiAoKGlzTmlsKGNvbmZpZ1ZhbHVlLmNvbnRlbnQpKSB8fCAoY29uZmlnVmFsdWUuY29udGVudCA9PT0gdGhpcy5jb250ZW50SW5uZXJIdG1sKCkgJiYgdGhpcy5jb250ZW50SW5uZXJIdG1sKCkgIT09IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmlubmVySFRNTCkpIHtcbiAgICAgIGNvbmZpZ1ZhbHVlLmNvbnRlbnQgPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5pbm5lckhUTUw7XG4gICAgfVxuICAgIHRoaXMuY29udGVudElubmVySHRtbC5zZXQodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuaW5uZXJIVE1MKTtcbiAgICBpZiAoIWNvbmZpZ1ZhbHVlLm1heFdpZHRoKSB7XG4gICAgICBjb25maWdWYWx1ZS5tYXhXaWR0aCA9IDI1MDtcbiAgICB9XG4gICAgaWYgKGNvbmZpZ1ZhbHVlLm1heEhlaWdodCA9PT0gdW5kZWZpbmVkIHx8IGNvbmZpZ1ZhbHVlLm1heEhlaWdodCA9PT0gMCkge1xuICAgICAgY29uZmlnVmFsdWUubWF4SGVpZ2h0ID0gMTQwO1xuICAgIH1cbiAgICBpZiAoIWNvbmZpZ1ZhbHVlLmRpcmVjdGlvbikge1xuICAgICAgY29uZmlnVmFsdWUuZGlyZWN0aW9uID0gJ2JvdHRvbSc7XG4gICAgfVxuICAgIGlmICghY29uZmlnVmFsdWUucG9zaXRpb24pIHtcbiAgICAgIGNvbmZpZ1ZhbHVlLnBvc2l0aW9uID0ge1xuICAgICAgICBtb2RlOiAnY2VudGVyJyxcbiAgICAgICAgZGlzdGFuY2U6IDBcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIGNvbmZpZ1ZhbHVlO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyByZW1vdmVQb3BvdmVyT3ZlcmxheSgpIHtcbiAgICBpZiAodGhpcy5wb3BvdmVyT3ZlcmxheUNvbXBvbmVudCkge1xuICAgICAgdGhpcy5vdXRFdmVudC5lbWl0KCdyZW1vdmUnKTtcbiAgICAgIHRoaXMuc3Vic0V2ZW50UG9wdXAudW5zdWJzY3JpYmUoKTtcbiAgICAgIHRoaXMuc3Vic0V2ZW50UG9wdXAgPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG4gICAgfVxuICAgIHRoaXMuZHluYW1pY1NlcnZpY2UucmVtb3ZlKHRoaXMucG9wb3Zlck92ZXJsYXlDb21wb25lbnQsIHRoaXMuZnJhbWVJZCgpKTtcbiAgICB0aGlzLmZyYW1lSWQuc2V0KCcnKTtcbiAgICB0aGlzLnBvcG92ZXJPdmVybGF5Q29tcG9uZW50ID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuZmlyc3RDbGljay5zZXQoZmFsc2UpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgY2xlYXJUaW1lb3V0KHRoaXMudGltZXIoKSk7XG4gICAgdGhpcy5yZW1vdmVQb3BvdmVyT3ZlcmxheSgpO1xuICAgIHRoaXMub25EZXN0cm95Lm5leHQoKTtcbiAgICB0aGlzLm9uRGVzdHJveS5jb21wbGV0ZSgpO1xuICAgIHRoaXMuc3Vic0V2ZW50UG9wdXAudW5zdWJzY3JpYmUoKTtcbiAgfVxufVxuIiwiPG5nLWNvbnRlbnQgLz5cbiJdfQ==
|
|
@@ -27,11 +27,11 @@ class LibsUiComponentsPopoverOverlayComponent {
|
|
|
27
27
|
directions = signal(new Map());
|
|
28
28
|
timeout = signal(0);
|
|
29
29
|
onDestroy = new Subject();
|
|
30
|
-
|
|
30
|
+
// #region OUTPUT
|
|
31
31
|
outEvent = new Subject();
|
|
32
32
|
/* VIEW CHILD */
|
|
33
33
|
container = viewChild.required('container');
|
|
34
|
-
|
|
34
|
+
// #region INJECT
|
|
35
35
|
elementRef = inject(ElementRef);
|
|
36
36
|
constructor() {
|
|
37
37
|
this.directions().set('bottom', ['bottom', 'top', 'right', 'left']);
|
|
@@ -39,7 +39,7 @@ class LibsUiComponentsPopoverOverlayComponent {
|
|
|
39
39
|
this.directions().set('left', ['left', 'right', 'bottom', 'top']);
|
|
40
40
|
this.directions().set('top', ['top', 'bottom', 'right', 'left']);
|
|
41
41
|
}
|
|
42
|
-
|
|
42
|
+
// #region FUNCTIONS
|
|
43
43
|
get ElementRef() {
|
|
44
44
|
return this.elementRef;
|
|
45
45
|
}
|
|
@@ -302,7 +302,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
302
302
|
|
|
303
303
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
304
304
|
class LibsUiComponentsPopoverComponent {
|
|
305
|
-
|
|
305
|
+
// #region PROPERTY
|
|
306
306
|
mouseEnter;
|
|
307
307
|
mouseWheel;
|
|
308
308
|
mouseClick;
|
|
@@ -322,7 +322,7 @@ class LibsUiComponentsPopoverComponent {
|
|
|
322
322
|
timer = signal(undefined);
|
|
323
323
|
directionPopover = signal(undefined);
|
|
324
324
|
frameId = signal('');
|
|
325
|
-
|
|
325
|
+
// #region INPUT
|
|
326
326
|
debugId = input();
|
|
327
327
|
flagMouse = input({ isMouseEnter: false, isMouseEnterContent: false, isContainerHasScroll: false }, {
|
|
328
328
|
transform: (value) => value ? value : { isMouseEnter: false, isMouseEnterContent: false, isContainerHasScroll: false }
|
|
@@ -338,12 +338,12 @@ class LibsUiComponentsPopoverComponent {
|
|
|
338
338
|
ignoreCursorPointerModeLikeClick = input();
|
|
339
339
|
isAddContentToParentDocument = input();
|
|
340
340
|
ignoreClickOutside = input();
|
|
341
|
-
|
|
341
|
+
// #region OUTPUT
|
|
342
342
|
outEvent = output();
|
|
343
343
|
outChangStageFlagMouse = output();
|
|
344
344
|
outEventPopoverContent = output();
|
|
345
345
|
outFunctionsControl = output();
|
|
346
|
-
|
|
346
|
+
// #region INJECT
|
|
347
347
|
elementRef = inject(ElementRef);
|
|
348
348
|
dynamicService = inject(LibsUiDynamicComponentService);
|
|
349
349
|
constructor() {
|
|
@@ -432,7 +432,7 @@ class LibsUiComponentsPopoverComponent {
|
|
|
432
432
|
this.addPopoverContent(nativeEl);
|
|
433
433
|
});
|
|
434
434
|
}
|
|
435
|
-
|
|
435
|
+
// #region FUNCTIONS
|
|
436
436
|
async updatePopoverOverlay() {
|
|
437
437
|
const timer = setTimeout(() => {
|
|
438
438
|
clearTimeout(timer);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"libs-ui-components-popover.mjs","sources":["../../../../../libs-ui/components/popover/src/defines/get-popover-timer-destroy.define.ts","../../../../../libs-ui/components/popover/src/overlay/overlay.component.ts","../../../../../libs-ui/components/popover/src/overlay/overlay.component.html","../../../../../libs-ui/components/popover/src/popover.component.ts","../../../../../libs-ui/components/popover/src/popover.component.html","../../../../../libs-ui/components/popover/src/libs-ui-components-popover.ts"],"sourcesContent":["import { UtilsUrlSearchParams } from \"@libs-ui/utils\";\n\nexport const KEY_QUERY_POPOVER_TIMER_DESTROY = 'popover-timer-destroy';\n\nconst timerDestroy = parseInt(new UtilsUrlSearchParams(location.href).get(KEY_QUERY_POPOVER_TIMER_DESTROY) || '0');\n\nexport const getPopoverTimerDestroyInQueryUrl = (): number => {\n return timerDestroy;\n};","import { AsyncPipe, NgStyle, NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, ElementRef, OnDestroy, inject, signal, viewChild } from '@angular/core';\nimport { LibsUiComponentsScrollOverlayDirective } from '@libs-ui/components-scroll-overlay';\nimport { IBoundingClientRect } from '@libs-ui/interfaces-types';\nimport { UtilsUrlSearchParams, cloneDeep, cloneIBoundingClientRect, getViewport } from '@libs-ui/utils';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { Subject, interval, take, takeUntil } from 'rxjs';\nimport { IPopoverOverlay } from '../interfaces/overlay.interface';\nimport { TYPE_POPOVER_DIRECTION } from '../interfaces/popover.type';\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'libs_ui-components-popover-overlay',\n templateUrl: './overlay.component.html',\n styleUrls: ['./overlay.component.scss'],\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [TranslateModule, NgStyle, AsyncPipe, LibsUiComponentsScrollOverlayDirective, NgTemplateOutlet]\n})\nexport class LibsUiComponentsPopoverOverlayComponent implements OnDestroy {\n /* PROPERTIES */\n protected currentDirection = signal<TYPE_POPOVER_DIRECTION>('bottom');\n protected arrowClass = signal<string>('');\n protected top = signal<number>(0);\n protected left = signal<number>(0);\n protected arrowLeft = signal<number>(0);\n protected arrowTop = signal<number>(0);\n protected config = signal<IPopoverOverlay>({});\n\n private directions = signal<Map<string, Array<TYPE_POPOVER_DIRECTION>>>(new Map());\n private timeout = signal<number>(0);\n private onDestroy = new Subject<void>();\n\n /* OUTPUT */\n readonly outEvent: Subject<TYPE_POPOVER_DIRECTION> = new Subject();\n\n /* VIEW CHILD */\n private container = viewChild.required<ElementRef>('container');\n\n /* INJECT */\n private elementRef = inject(ElementRef);\n\n constructor() {\n this.directions().set('bottom', ['bottom', 'top', 'right', 'left']);\n this.directions().set('right', ['right', 'left', 'bottom', 'top']);\n this.directions().set('left', ['left', 'right', 'bottom', 'top']);\n this.directions().set('top', ['top', 'bottom', 'right', 'left']);\n }\n\n /* FUNCTIONS*/\n public get ElementRef() {\n return this.elementRef;\n }\n\n public get ContainerElement() {\n return this.container().nativeElement;\n }\n\n public setConfig(rectOrigin: IBoundingClientRect, config: IPopoverOverlay, isAddContentToParentDocument?: boolean) {\n isAddContentToParentDocument = isAddContentToParentDocument || config.isAddContentToParentDocument;\n rectOrigin = cloneIBoundingClientRect(rectOrigin);\n this.config.set(cloneDeep(config));\n\n this.container().nativeElement.style.opacity = 0;\n if (this.config().widthByParent) {\n this.config.update(config => ({ ...config, width: rectOrigin.width - (config?.parentBorderWidth || 0) * 2 }));\n }\n let viewPort = getViewport();\n let rectFrame: IBoundingClientRect | undefined = undefined;\n\n if (isAddContentToParentDocument) {\n viewPort = getViewport(window.parent);\n const url = new UtilsUrlSearchParams(location.href);\n const iframeId = url.get('iframeId');\n\n rectFrame = window.parent.document.getElementById(`iframe-${iframeId}`)?.getBoundingClientRect();\n if (rectFrame) {\n rectOrigin.top += rectFrame.top;\n rectOrigin.left += rectFrame.left;\n }\n }\n\n if (this.config().maxHeight === null) {\n this.config.update(config => ({ ...config, maxHeight: viewPort.height - rectOrigin.top - 44 }));\n }\n\n clearTimeout(this.timeout());\n this.setVariableCss();\n this.setDirections(rectOrigin, viewPort, rectFrame);\n let rectContent = cloneIBoundingClientRect(this.container().nativeElement.getBoundingClientRect());\n\n if (rectFrame) {\n rectContent.top += rectFrame.top;\n rectContent.left += rectFrame.left;\n }\n\n interval(250).pipe(take(4), takeUntil(this.onDestroy)).subscribe(() => {\n const rect = cloneIBoundingClientRect(this.container().nativeElement.getBoundingClientRect());\n\n if (rectFrame) {\n rect.top += rectFrame.top;\n rect.left += rectFrame.left;\n }\n if (rect.width !== rectContent.width || rect.height !== rectContent.height || rect.top !== rectContent.top || rect.left !== rectContent.left) {\n clearTimeout(this.timeout());\n this.setDirections(rectOrigin, viewPort, rectFrame);\n rectContent = rect;\n }\n });\n }\n\n private setDirections(rectOrigin: IBoundingClientRect, viewPort: { width: number, height: number }, rectFrame?: IBoundingClientRect) {\n const directions = this.directions().get(this.config().direction || 'bottom') || ['bottom', 'right', 'left', 'top'];\n const positionLast = directions.length - 1;\n\n this.timeout.set(setTimeout(async () => {\n const rectContent = cloneIBoundingClientRect(this.container().nativeElement.getBoundingClientRect());\n\n if (rectFrame) {\n rectContent.top += rectFrame.top;\n rectContent.left += rectFrame.left;\n }\n for (const index in directions) {\n if (await this.loopDirection(rectOrigin, rectContent, directions[index], positionLast === +index, viewPort)) {\n return;\n }\n }\n }, 50));\n }\n\n private loopDirection(rectOrigin: IBoundingClientRect, rectContent: IBoundingClientRect, direction: TYPE_POPOVER_DIRECTION, isLast: boolean, viewPort: { width: number, height: number }): Promise<boolean> {\n return new Promise(resolve => {\n const positionMode = this.config().position?.mode || 'start';\n const { position } = this.config();\n let result = this.setPosition(direction, rectOrigin, (rectContent as IBoundingClientRect), viewPort, isLast);\n\n if (!result) {\n\n if (position) {\n position.mode = positionMode === 'center' || positionMode === 'start' ? 'end' : 'start';\n if (!this.config().ignoreArrow && position.autoUpdatePosition) {\n position.distance = position.mode === 'end' ? position.autoUpdatePosition.endDistance : position.autoUpdatePosition.startDistance;\n }\n this.config.update(config => ({ ...config }));\n }\n result = this.setPosition(direction, rectOrigin, (rectContent as IBoundingClientRect), viewPort, isLast);\n }\n if (!result && positionMode === 'center') {\n if (position) {\n position.mode = position.mode === 'start' ? 'end' : 'start';\n this.config.update(config => ({ ...config }));\n }\n result = this.setPosition(direction, rectOrigin, (rectContent as IBoundingClientRect), viewPort, isLast);\n }\n if (!result) {\n if (position) {\n position.mode = positionMode;\n this.config.update(config => ({ ...config }));\n }\n\n return resolve(false);\n }\n this.currentDirection.set(direction);\n this.setVariableCss();\n this.setClassArrow(direction);\n this.container().nativeElement.style.opacity = 1;\n this.outEvent.next(direction);\n\n return resolve(true);\n });\n }\n\n private setPosition(direction: TYPE_POPOVER_DIRECTION, rectOrigin: IBoundingClientRect, rectContent: IBoundingClientRect, viewPort: { width: number, height: number }, isLast: boolean): boolean {\n const halfSquare = 6;\n const distanceArrow = 4;\n let bottomPositionRectContent = 0;\n let positionTop = 0;\n let positionLeft = 0;\n let top = 0;\n let left = 0;\n const configValue = this.config();\n\n switch (direction) {\n case 'bottom':\n positionTop = rectOrigin.top + rectOrigin.height + distanceArrow;\n positionLeft = rectOrigin.left + rectOrigin.width / 2 - halfSquare;\n top = positionTop + halfSquare;\n left = positionLeft - rectContent.width / 2 + halfSquare;\n if (configValue.ignoreArrow) {\n top = top - halfSquare - distanceArrow;\n }\n top += configValue.directionDistance || 0;\n if (configValue.position?.mode === 'start') {\n left = rectOrigin.left + (configValue.position.distance || 0);\n }\n if (configValue.position?.mode === 'end') {\n left = rectOrigin.left + rectOrigin.width - rectContent.width + (configValue.position.distance || 0);\n }\n left += (configValue.parentBorderWidth || 0);\n\n this.arrowLeft.set(positionLeft - left);\n this.arrowTop.set(-6);\n this.top.set(top);\n this.left.set(left);\n if (top + rectContent.height < viewPort.height && left >= 0 && left + rectContent.width < viewPort.width) {\n return true;\n }\n if (isLast) {\n if (this.config) {\n this.config.update(config => ({ ...config, maxHeight: viewPort.height - rectOrigin.top - rectOrigin.height }));\n }\n left = left >= 0 ? left : 0;\n this.left.set(left);\n }\n\n return false;\n\n case 'right':\n positionTop = rectOrigin.top + rectOrigin.height / 2 - halfSquare;\n positionLeft = rectOrigin.left + rectOrigin.width + distanceArrow;\n top = positionTop - rectContent.height / 2 + halfSquare;\n left = positionLeft + halfSquare;\n\n if (configValue.ignoreArrow) {\n left = positionLeft - distanceArrow;\n }\n\n left += configValue.directionDistance || 0;\n if (configValue.position?.mode === 'start') {\n top = rectOrigin.top + (configValue.position?.distance || 0);\n }\n\n if (configValue.position?.mode === 'end') {\n top = rectOrigin.top + rectOrigin.height - rectContent.height + (configValue.position.distance || 0);\n }\n\n bottomPositionRectContent = top + rectContent.height;\n\n if (bottomPositionRectContent > viewPort.height) {\n top = top - (bottomPositionRectContent - viewPort.height);\n }\n\n this.arrowTop.set(positionTop - top + 2);\n this.arrowLeft.set(-9);\n\n this.top.set(top);\n this.left.set(left);\n if (top > 0 && left + rectContent.width < viewPort.width) {\n return true;\n }\n\n return false;\n\n case 'left':\n positionTop = rectOrigin.top + rectOrigin.height / 2 - halfSquare;\n positionLeft = rectOrigin.left - (halfSquare * 2) - distanceArrow;\n top = positionTop - rectContent.height / 2 + halfSquare;\n left = positionLeft - rectContent.width + halfSquare;\n if (configValue.ignoreArrow) {\n left = left + halfSquare + distanceArrow;\n }\n\n left -= configValue?.directionDistance || 0;\n if (configValue.position?.mode === 'start') {\n top = rectOrigin.top + (configValue.position.distance || 0);\n }\n\n if (configValue.position?.mode === 'end') {\n top = rectOrigin.top + rectOrigin.height - rectContent.height + (configValue.position.distance || 0);\n }\n\n bottomPositionRectContent = top + rectContent.height;\n\n if (bottomPositionRectContent > viewPort.height) {\n top = top - (bottomPositionRectContent - viewPort.height);\n }\n\n this.arrowTop.set(positionTop - top + 2);\n this.arrowLeft.set(rectContent.width - 3);\n\n this.top.set(top);\n this.left.set(left);\n if (left > 0 && top > 0) {\n return true;\n }\n\n return false;\n\n case 'top':\n positionTop = rectOrigin.top - (halfSquare * 2) - distanceArrow;\n positionLeft = rectOrigin.left + rectOrigin.width / 2 - halfSquare;\n top = positionTop - rectContent.height + halfSquare;\n left = positionLeft - rectContent.width / 2 + halfSquare;\n\n if (configValue.ignoreArrow) {\n top = top + halfSquare + distanceArrow;\n }\n\n top -= configValue.directionDistance || 0;\n\n if (configValue.position && configValue.position?.mode === 'start') {\n left = rectOrigin.left + (configValue.position.distance || 0);\n }\n\n if (configValue.position && configValue.position?.mode === 'end') {\n left = rectOrigin.left + rectOrigin.width - rectContent.width + (configValue.position.distance || 0);\n }\n\n left += (configValue.parentBorderWidth || 0);\n this.arrowLeft.set(positionLeft - left);\n this.arrowTop.set(rectContent.height);\n this.top.set(top);\n this.left.set(left);\n if (top > 0 && left >= 0 && left + rectContent.width < viewPort.width) {\n return true;\n }\n\n if (isLast) {\n this.config.update(config => ({ ...config, maxHeight: viewPort.height - (viewPort.height - rectOrigin.top) }));\n top = 0;\n left = left >= 0 ? left : 0;\n this.left.set(left);\n }\n\n return false;\n }\n }\n\n private setClassArrow(direction: TYPE_POPOVER_DIRECTION) {\n if (direction === 'right') {\n return this.arrowClass.set('libs-ui-popover-overlay-arrow-right');\n }\n if (direction === 'left') {\n return this.arrowClass.set('libs-ui-popover-overlay-arrow-left');\n }\n if (direction === 'top') {\n return this.arrowClass.set('libs-ui-popover-overlay-arrow-down');\n }\n\n return this.arrowClass.set('libs-ui-popover-overlay-arrow-up');\n }\n\n private setVariableCss() {\n const configValue = this.config();\n this.ContainerElement.style.setProperty('--libs-ui-popover-overlay-time-animation-time', `${configValue.animationConfig?.time || .4}s`);\n this.ContainerElement.style.setProperty('--libs-ui-popover-overlay-time-animation-distance', `${this.currentDirection() === 'top' ? '-' : ''}${configValue.animationConfig?.distance || 12}px`);\n }\n\n ngOnDestroy() {\n clearTimeout(this.timeout());\n this.onDestroy.next();\n this.onDestroy.complete();\n }\n\n}\n","<div #container\n class=\"libs-ui-popover-overlay {{ config().classInclude || '' }}\"\n [class.libs-ui-popover-overlay-white-theme]=\"config().whiteTheme\"\n [class.libs-ui-popover-overlay-animation-move]=\"config().animationConfig\"\n [ngStyle]=\"config().ngStyles || {}\"\n [style.width]=\"config().width ? config().width + 'px' : 'auto'\"\n [style.maxWidth.px]=\"config().maxWidth\"\n [style.maxHeight.px]=\"config().maxHeight\"\n [style.top.px]=\"top()\"\n [style.left.px]=\"left()\"\n [style.zIndex]=\"config().zIndex || 10\">\n @if (config()) {\n @if (!config().ignoreArrow) {\n <div class='relative'>\n <svg\n [class]=\"'libs-ui-popover-overlay-arrow '+ arrowClass() + ( config().whiteTheme ? ' libs-ui-popover-overlay-white-theme ' : '')\"\n [style.top.px]=\"arrowTop()\"\n [style.left.px]=\"arrowLeft()\"\n [attr.direction]='outEvent | async'>\n <polygon points=\"0,0 6,6 12,0\" />\n Sorry, your browser does not support inline SVG.\n </svg>\n </div>\n }\n @if (config().template; as templateConfig) {\n <div LibsUiComponentsScrollOverlayDirective\n class=\"libs-ui-popover-overlay-body {{ config().classIncludeOverlayBody || '' }}\"\n [attr.isTemplate]=\"true\"\n [style.max-height]=\"(config().maxHeight)+'px'\">\n <ng-container *ngTemplateOutlet=\"templateConfig;context:{itemContext:config().itemContext}\" />\n </div>\n } @else {\n <div class=\"libs-ui-popover-overlay-body libs-ui-font-h7r {{ config().classIncludeOverlayBody || '' }}\"\n LibsUiComponentsScrollOverlayDirective\n [options]=\"config().scrollOverlayOptions\"\n [style.maxHeight.px]=\"config().maxHeight\"\n [style.paddingTop.px]=\"config().paddingTop ?? 8\"\n [style.paddingRight.px]=\"config().paddingRight ?? 8\"\n [style.paddingLeft.px]=\"config().paddingLeft ?? 8\"\n [style.paddingBottom.px]=\"config().paddingBottom ?? 8\"\n [innerHtml]=\"(config().content || ' ') | translate\">\n </div>\n }\n }\n\n</div>\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { AfterContentInit, ChangeDetectionStrategy, Component, ComponentRef, ElementRef, OnDestroy, OnInit, effect, inject, input, output, signal, untracked } from '@angular/core';\nimport { LibsUiDynamicComponentService } from '@libs-ui/services-dynamic-component';\nimport { checkMouseOverInContainer, get, getViewport, isNil, set } from '@libs-ui/utils';\nimport { Observable, Subject, Subscription, fromEvent } from 'rxjs';\nimport { debounceTime, takeUntil, tap } from 'rxjs/operators';\nimport { getPopoverTimerDestroyInQueryUrl } from './defines/get-popover-timer-destroy.define';\nimport { IFlagMouse } from './interfaces/flag-mouse.interface';\nimport { IPopoverFunctionControlEvent } from './interfaces/function-control.interface';\nimport { IPopoverOverlay } from './interfaces/overlay.interface';\nimport { TYPE_POPOVER_DIRECTION, TYPE_POPOVER_EVENT, TYPE_POPOVER_MODE, TYPE_POPOVER_TYPE } from './interfaces/popover.type';\nimport { LibsUiComponentsPopoverOverlayComponent } from './overlay/overlay.component';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'libs_ui-components-popover,[LibsUiComponentsPopoverDirective]',\n templateUrl: './popover.component.html',\n styleUrl: './popover.component.scss',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class LibsUiComponentsPopoverComponent implements OnInit, AfterContentInit, OnDestroy {\n /* PROPERTY */\n private mouseEnter!: Observable<MouseEvent>;\n private mouseWheel!: Observable<MouseEvent>;\n private mouseClick!: Observable<MouseEvent>;\n private windowResize!: Observable<MouseEvent>;\n private windowWheel!: Observable<MouseEvent>;\n private windowMouseDown!: Observable<MouseEvent>;\n private windowClick!: Observable<MouseEvent>;\n private windowMouseUp!: Observable<MouseEvent>;\n private windowMousemove!: Observable<MouseEvent>;\n private windowTouch!: Observable<MouseEvent>;\n private popoverOverlayComponent!: ComponentRef<LibsUiComponentsPopoverOverlayComponent> | undefined;\n private subsEventPopup = new Subscription();\n private onDestroy = new Subject<void>();\n private functionsControl?: IPopoverFunctionControlEvent;\n private firstClick = signal<boolean>(false);\n private contentInnerHtml = signal<string>('');\n private timer = signal<number | undefined>(undefined);\n private directionPopover = signal<TYPE_POPOVER_DIRECTION | undefined>(undefined);\n private frameId = signal<string>('');\n\n /* INPUT */\n readonly debugId = input<string>();\n readonly flagMouse = input<IFlagMouse, IFlagMouse>({ isMouseEnter: false, isMouseEnterContent: false, isContainerHasScroll: false }, {\n transform: (value: any) => value ? value : { isMouseEnter: false, isMouseEnterContent: false, isContainerHasScroll: false }\n });\n readonly type = input<TYPE_POPOVER_TYPE>('other');\n readonly mode = input<TYPE_POPOVER_MODE>('hover');\n readonly config = input({}, { transform: (value: IPopoverOverlay | undefined) => value ? value : {} });\n readonly ignoreShowPopover = input<boolean>();\n readonly elementRefCustom = input<HTMLElement>();\n readonly classInclude = input<string | undefined, string | undefined>('', { transform: (value) => value ?? '' });\n readonly ignoreHiddenPopoverContentWhenMouseLeave = input<boolean>();\n readonly ignoreStopPropagationEvent = input<boolean>();\n readonly ignoreCursorPointerModeLikeClick = input<boolean>();\n readonly isAddContentToParentDocument = input<boolean>();\n readonly ignoreClickOutside = input<boolean>();\n\n /* OUTPUT */\n readonly outEvent = output<TYPE_POPOVER_EVENT>();\n readonly outChangStageFlagMouse = output<IFlagMouse>();\n readonly outEventPopoverContent = output<TYPE_POPOVER_DIRECTION>();\n readonly outFunctionsControl = output<IPopoverFunctionControlEvent>();\n\n /* INJECT */\n private elementRef = inject(ElementRef);\n private dynamicService = inject(LibsUiDynamicComponentService);\n\n constructor() {\n let classDefault: string | undefined = undefined;\n effect(() => {\n if (classDefault === undefined) {\n classDefault = this.Element.className;\n }\n this.Element.className = classDefault || '';\n if (this.type() === 'text') {\n this.Element.classList.add('popover-text-ellipsis');\n }\n if (this.mode().includes('click') && !this.ignoreCursorPointerModeLikeClick()) {\n this.Element.classList.add('cursor-pointer');\n }\n if (this.classInclude()) {\n this.classInclude()?.split(' ').forEach(className => {\n if (!className) {\n return;\n }\n this.Element.classList.add(className);\n })\n }\n });\n\n let first = true;\n effect(() => {\n this.config();\n untracked(() => {\n if (this.popoverOverlayComponent?.instance && !first) {\n this.updatePopoverOverlayPosition();\n }\n first = false;\n });\n });\n }\n\n ngOnInit(): void {\n this.outEventPopoverContent.subscribe(direction => this.directionPopover.set(direction));\n this.functionsControl = {\n removePopoverOverlay: this.removePopoverOverlay.bind(this),\n updatePopoverOverlayPosition: this.updatePopoverOverlayPosition.bind(this),\n getRectContainer: async () => (this.elementRefCustom() || this.Element).getBoundingClientRect(),\n getRectContent: async () => (this.popoverOverlayComponent?.instance?.ContainerElement)?.getBoundingClientRect(),\n showPopover: this.addPopoverContent.bind(this),\n updatePopoverOverlay: this.updatePopoverOverlay.bind(this),\n };\n this.outFunctionsControl.emit(this.functionsControl);\n }\n\n ngAfterContentInit() {\n const nativeEl = this.Element;\n this.mouseEnter = this.initObservable(nativeEl, 'mouseenter');\n this.mouseClick = this.initObservable(nativeEl, 'click');\n this.mouseWheel = this.initObservable(window, 'wheel');\n this.windowResize = this.initObservable(window, 'resize');\n this.windowWheel = this.initObservable(window, 'wheel');\n this.windowMouseDown = this.initObservable(window, 'mousedown');\n this.windowClick = this.initObservable(window, 'click');\n this.windowMouseUp = this.initObservable(window, 'mouseup');\n this.windowTouch = this.initObservable(window, 'touchstart');\n this.windowMousemove = this.initObservable(window, 'mousemove');\n this.mouseEnter.subscribe(() => {\n\n if (!this.mode().includes('hover')) {\n return;\n }\n\n if (this.type() === 'text' && nativeEl?.clientWidth >= nativeEl.scrollWidth && !this.popoverOverlayComponent) {\n return;\n }\n this.addPopoverContent(nativeEl);\n });\n this.mouseClick.subscribe(() => {\n this.firstClick.update(val => !val);\n this.outEvent.emit('click');\n\n if (!this.mode().startsWith('click')) {\n return;\n }\n\n if (this.mode() === 'click-toggle' && !this.firstClick()) {\n this.removePopoverOverlay();\n\n return;\n }\n this.addPopoverContent(nativeEl);\n });\n this.windowResize.pipe(debounceTime(500)).subscribe(() => {\n if (!this.popoverOverlayComponent) {\n return;\n }\n this.removePopoverOverlay();\n this.addPopoverContent(nativeEl);\n });\n }\n\n /* FUNCTIONS*/\n private async updatePopoverOverlay() {\n const timer = setTimeout(() => {\n clearTimeout(timer);\n if (!this.popoverOverlayComponent?.instance || !this.config()) {\n return;\n }\n const instance = this.popoverOverlayComponent.instance;\n const nativeEl = this.elementRefCustom() || this.Element;\n\n instance.setConfig(nativeEl.getBoundingClientRect(), this.config());\n });\n }\n\n private async updatePopoverOverlayPosition() {\n clearTimeout(this.timer());\n this.timer.set(setTimeout(async () => {\n if (!this.popoverOverlayComponent || !this.popoverOverlayComponent.instance || !this.config() || !this.functionsControl) {\n return;\n }\n const viewPort = getViewport();\n const rectListView = await this.functionsControl.getRectContent();\n\n if (!rectListView) {\n return;\n }\n const rectContainer = await this.functionsControl.getRectContainer();\n const distanceListViewAndContainer = this.config()?.ignoreArrow === false ? 14 : 4;\n\n if (this.directionPopover() === 'bottom' && ((rectListView.top + rectListView.height > viewPort.height) || (rectListView.top < (rectContainer.top + rectContainer.height)) || (rectListView.top - (rectContainer.top + rectContainer.height) > distanceListViewAndContainer)) || ((rectListView.left + rectListView.width > viewPort.width))) {\n\n const instance = this.popoverOverlayComponent.instance;\n const nativeEl = this.elementRefCustom() || this.Element;\n instance.setConfig(nativeEl.getBoundingClientRect(), { ... (this.config() || {}), ...this.getDefaultConfigs() }, this.isAddContentToParentDocument());\n\n return;\n }\n\n if (this.directionPopover() !== 'top') {\n return;\n }\n if ((rectContainer.top - (rectListView.top + rectListView.height) > distanceListViewAndContainer) || (rectListView.top + rectListView.height + distanceListViewAndContainer > rectContainer.top + 2) || ((rectListView.left + rectListView.width > viewPort.width))) {\n const instance = this.popoverOverlayComponent.instance;\n const nativeEl = this.elementRefCustom() || this.Element;\n\n instance.setConfig(nativeEl.getBoundingClientRect(), { ... (this.config() || {}), ...this.getDefaultConfigs() }, this.isAddContentToParentDocument());\n\n return;\n }\n }, 250));\n }\n\n protected get Element(): HTMLElement {\n return this.elementRef.nativeElement.firstElementChild || this.elementRef.nativeElement;\n }\n\n private initObservable(el: any, eventName: string): Observable<MouseEvent> {\n return fromEvent<MouseEvent>(el, eventName).pipe(\n tap(e => !this.ignoreStopPropagationEvent() && e.stopPropagation()),\n takeUntil(this.onDestroy)\n );\n }\n\n private async addPopoverContent(nativeEl: HTMLElement) {\n if (this.popoverOverlayComponent || this.ignoreShowPopover() || !this.config()) {\n return;\n }\n\n this.popoverOverlayComponent = this.dynamicService.resolveComponentFactory(LibsUiComponentsPopoverOverlayComponent);\n this.frameId.set(this.dynamicService.addToBody(this.popoverOverlayComponent, this.isAddContentToParentDocument() || this.config().isAddContentToParentDocument));\n this.outEvent.emit('show');\n const instance = this.popoverOverlayComponent.instance;\n\n nativeEl = this.elementRefCustom() || nativeEl;\n instance.setConfig(nativeEl.getBoundingClientRect(), { ... (this.config() || {}), ...this.getDefaultConfigs() }, this.isAddContentToParentDocument());\n const flagsMouses: IFlagMouse = {\n isMouseEnter: true,\n isMouseEnterContent: false,\n isContainerHasScroll: nativeEl.offsetHeight < nativeEl.scrollHeight\n };\n const nativeElContainer = instance.ElementRef.nativeElement;\n const mouseEnterContent = this.initObservable(nativeElContainer, 'mouseenter');\n const mouseLeaveContent = this.initObservable(nativeElContainer, 'mouseleave');\n this.subsEventPopup.add(instance.outEvent.subscribe((direction: TYPE_POPOVER_DIRECTION) => {\n this.outEventPopoverContent.emit(direction);\n }));\n\n this.subsEventPopup.add(mouseEnterContent.subscribe(() => {\n this.outEvent.emit('mouseenter-content');\n flagsMouses.isMouseEnterContent = true;\n this.outChangStageFlagMouse.emit(flagsMouses);\n }));\n\n this.subsEventPopup.add(this.mouseEnter.subscribe(() => {\n this.outEvent.emit('mouseenter-element');\n this.outChangStageFlagMouse.emit(flagsMouses);\n }));\n\n this.subsEventPopup.add(this.mouseWheel.subscribe(() => {\n flagsMouses.isContainerHasScroll = false;\n\n if (nativeEl.offsetHeight < nativeEl.scrollHeight) {\n flagsMouses.isContainerHasScroll = true;\n }\n if ((flagsMouses.isMouseEnter && flagsMouses.isContainerHasScroll) || flagsMouses.isMouseEnterContent || this.flagMouse().isMouseEnter || this.flagMouse().isMouseEnterContent) {\n return;\n }\n this.removePopoverOverlay();\n }));\n this.handlerMouseLeaveRemovePopoverOverlay(this.windowMousemove, flagsMouses, 'isMouseEnter', 'isMouseEnterContent', 'mouseleave-element');\n this.handlerMouseLeaveRemovePopoverOverlay(mouseLeaveContent, flagsMouses, 'isMouseEnterContent', 'isMouseEnter', 'mouseleave-content');\n\n if (this.mode() === 'click_open_and_click_panel_content_hidden') {\n this.subsEventPopup.add(this.initObservable(nativeElContainer, 'click').subscribe(() => {\n this.removePopoverOverlay();\n }));\n }\n\n this.handlerWindowEventRemovePopoverOverlay(this.windowClick, flagsMouses);\n this.handlerWindowEventRemovePopoverOverlay(this.windowMouseDown, flagsMouses);\n this.handlerWindowEventRemovePopoverOverlay(this.windowMouseUp, flagsMouses);\n this.handlerWindowEventRemovePopoverOverlay(this.windowWheel, flagsMouses);\n this.subsEventPopup.add(this.windowTouch.subscribe(() => {\n this.removePopoverOverlay();\n }));\n }\n\n private handlerWindowEventRemovePopoverOverlay(obs: Observable<MouseEvent>, flagsMouses: IFlagMouse) {\n this.subsEventPopup.add(obs.pipe(debounceTime(10)).subscribe(() => {\n if (flagsMouses.isMouseEnter || flagsMouses.isMouseEnterContent || this.ignoreClickOutside()) {\n return;\n }\n if (this.flagMouse() && (this.flagMouse().isMouseEnter || this.flagMouse().isMouseEnterContent)) {\n return;\n }\n this.firstClick.set(false);\n this.removePopoverOverlay();\n }));\n }\n\n private handlerMouseLeaveRemovePopoverOverlay(obs: Observable<MouseEvent>, flagsMouses: { isMouseEnter: boolean, isMouseEnterContent: boolean }, flagKeyChangeValue: string, flagKeyCheck: string, outEvent: TYPE_POPOVER_EVENT) {\n this.subsEventPopup.add(obs.pipe(\n tap(() => this.outEvent.emit(outEvent)),\n debounceTime(getPopoverTimerDestroyInQueryUrl() || this.config()?.timerDestroy || 0)\n ).subscribe((e: MouseEvent) => {\n if (outEvent === 'mouseleave-element' && (checkMouseOverInContainer(e, this.Element) || checkMouseOverInContainer({ clientX: e.clientX + 2, clientY: e.clientY + 2 }, this.Element) || checkMouseOverInContainer({ clientX: e.clientX - 2, clientY: e.clientY - 2 }, this.Element))) {\n return;\n }\n set(flagsMouses, flagKeyChangeValue, false);\n this.outChangStageFlagMouse.emit(flagsMouses);\n if (this.flagMouse() && (this.flagMouse().isMouseEnter || this.flagMouse().isMouseEnterContent)) {\n return;\n }\n\n if (get(flagsMouses, flagKeyCheck) || this.ignoreHiddenPopoverContentWhenMouseLeave()) {\n return;\n }\n this.removePopoverOverlay();\n }));\n }\n\n private getDefaultConfigs(): IPopoverOverlay {\n const configValue = this.config() || {};\n if ((isNil(configValue.content)) || (configValue.content === this.contentInnerHtml() && this.contentInnerHtml() !== this.elementRef.nativeElement.innerHTML)) {\n configValue.content = this.elementRef.nativeElement.innerHTML;\n }\n this.contentInnerHtml.set(this.elementRef.nativeElement.innerHTML);\n if (!configValue.maxWidth) {\n configValue.maxWidth = 250;\n }\n if (configValue.maxHeight === undefined || configValue.maxHeight === 0) {\n configValue.maxHeight = 140;\n }\n if (!configValue.direction) {\n configValue.direction = 'bottom';\n }\n if (!configValue.position) {\n configValue.position = {\n mode: 'center',\n distance: 0\n };\n }\n\n return configValue;\n }\n\n private async removePopoverOverlay() {\n if (this.popoverOverlayComponent) {\n this.outEvent.emit('remove');\n this.subsEventPopup.unsubscribe();\n this.subsEventPopup = new Subscription();\n }\n this.dynamicService.remove(this.popoverOverlayComponent, this.frameId());\n this.frameId.set('');\n this.popoverOverlayComponent = undefined;\n this.firstClick.set(false);\n }\n\n ngOnDestroy() {\n clearTimeout(this.timer());\n this.removePopoverOverlay();\n this.onDestroy.next();\n this.onDestroy.complete();\n this.subsEventPopup.unsubscribe();\n }\n}\n","<ng-content />\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["takeUntil"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"libs-ui-components-popover.mjs","sources":["../../../../../libs-ui/components/popover/src/defines/get-popover-timer-destroy.define.ts","../../../../../libs-ui/components/popover/src/overlay/overlay.component.ts","../../../../../libs-ui/components/popover/src/overlay/overlay.component.html","../../../../../libs-ui/components/popover/src/popover.component.ts","../../../../../libs-ui/components/popover/src/popover.component.html","../../../../../libs-ui/components/popover/src/libs-ui-components-popover.ts"],"sourcesContent":["import { UtilsUrlSearchParams } from \"@libs-ui/utils\";\n\nexport const KEY_QUERY_POPOVER_TIMER_DESTROY = 'popover-timer-destroy';\n\nconst timerDestroy = parseInt(new UtilsUrlSearchParams(location.href).get(KEY_QUERY_POPOVER_TIMER_DESTROY) || '0');\n\nexport const getPopoverTimerDestroyInQueryUrl = (): number => {\n return timerDestroy;\n};","import { AsyncPipe, NgStyle, NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, ElementRef, OnDestroy, inject, signal, viewChild } from '@angular/core';\nimport { LibsUiComponentsScrollOverlayDirective } from '@libs-ui/components-scroll-overlay';\nimport { IBoundingClientRect } from '@libs-ui/interfaces-types';\nimport { UtilsUrlSearchParams, cloneDeep, cloneIBoundingClientRect, getViewport } from '@libs-ui/utils';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { Subject, interval, take, takeUntil } from 'rxjs';\nimport { IPopoverOverlay } from '../interfaces/overlay.interface';\nimport { TYPE_POPOVER_DIRECTION } from '../interfaces/popover.type';\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'libs_ui-components-popover-overlay',\n templateUrl: './overlay.component.html',\n styleUrls: ['./overlay.component.scss'],\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [TranslateModule, NgStyle, AsyncPipe, LibsUiComponentsScrollOverlayDirective, NgTemplateOutlet]\n})\nexport class LibsUiComponentsPopoverOverlayComponent implements OnDestroy {\n /* PROPERTIES */\n protected currentDirection = signal<TYPE_POPOVER_DIRECTION>('bottom');\n protected arrowClass = signal<string>('');\n protected top = signal<number>(0);\n protected left = signal<number>(0);\n protected arrowLeft = signal<number>(0);\n protected arrowTop = signal<number>(0);\n protected config = signal<IPopoverOverlay>({});\n\n private directions = signal<Map<string, Array<TYPE_POPOVER_DIRECTION>>>(new Map());\n private timeout = signal<number>(0);\n private onDestroy = new Subject<void>();\n\n // #region OUTPUT\n readonly outEvent: Subject<TYPE_POPOVER_DIRECTION> = new Subject();\n\n /* VIEW CHILD */\n private container = viewChild.required<ElementRef>('container');\n\n // #region INJECT\n private elementRef = inject(ElementRef);\n\n constructor() {\n this.directions().set('bottom', ['bottom', 'top', 'right', 'left']);\n this.directions().set('right', ['right', 'left', 'bottom', 'top']);\n this.directions().set('left', ['left', 'right', 'bottom', 'top']);\n this.directions().set('top', ['top', 'bottom', 'right', 'left']);\n }\n\n // #region FUNCTIONS\n public get ElementRef() {\n return this.elementRef;\n }\n\n public get ContainerElement() {\n return this.container().nativeElement;\n }\n\n public setConfig(rectOrigin: IBoundingClientRect, config: IPopoverOverlay, isAddContentToParentDocument?: boolean) {\n isAddContentToParentDocument = isAddContentToParentDocument || config.isAddContentToParentDocument;\n rectOrigin = cloneIBoundingClientRect(rectOrigin);\n this.config.set(cloneDeep(config));\n\n this.container().nativeElement.style.opacity = 0;\n if (this.config().widthByParent) {\n this.config.update(config => ({ ...config, width: rectOrigin.width - (config?.parentBorderWidth || 0) * 2 }));\n }\n let viewPort = getViewport();\n let rectFrame: IBoundingClientRect | undefined = undefined;\n\n if (isAddContentToParentDocument) {\n viewPort = getViewport(window.parent);\n const url = new UtilsUrlSearchParams(location.href);\n const iframeId = url.get('iframeId');\n\n rectFrame = window.parent.document.getElementById(`iframe-${iframeId}`)?.getBoundingClientRect();\n if (rectFrame) {\n rectOrigin.top += rectFrame.top;\n rectOrigin.left += rectFrame.left;\n }\n }\n\n if (this.config().maxHeight === null) {\n this.config.update(config => ({ ...config, maxHeight: viewPort.height - rectOrigin.top - 44 }));\n }\n\n clearTimeout(this.timeout());\n this.setVariableCss();\n this.setDirections(rectOrigin, viewPort, rectFrame);\n let rectContent = cloneIBoundingClientRect(this.container().nativeElement.getBoundingClientRect());\n\n if (rectFrame) {\n rectContent.top += rectFrame.top;\n rectContent.left += rectFrame.left;\n }\n\n interval(250).pipe(take(4), takeUntil(this.onDestroy)).subscribe(() => {\n const rect = cloneIBoundingClientRect(this.container().nativeElement.getBoundingClientRect());\n\n if (rectFrame) {\n rect.top += rectFrame.top;\n rect.left += rectFrame.left;\n }\n if (rect.width !== rectContent.width || rect.height !== rectContent.height || rect.top !== rectContent.top || rect.left !== rectContent.left) {\n clearTimeout(this.timeout());\n this.setDirections(rectOrigin, viewPort, rectFrame);\n rectContent = rect;\n }\n });\n }\n\n private setDirections(rectOrigin: IBoundingClientRect, viewPort: { width: number, height: number }, rectFrame?: IBoundingClientRect) {\n const directions = this.directions().get(this.config().direction || 'bottom') || ['bottom', 'right', 'left', 'top'];\n const positionLast = directions.length - 1;\n\n this.timeout.set(setTimeout(async () => {\n const rectContent = cloneIBoundingClientRect(this.container().nativeElement.getBoundingClientRect());\n\n if (rectFrame) {\n rectContent.top += rectFrame.top;\n rectContent.left += rectFrame.left;\n }\n for (const index in directions) {\n if (await this.loopDirection(rectOrigin, rectContent, directions[index], positionLast === +index, viewPort)) {\n return;\n }\n }\n }, 50));\n }\n\n private loopDirection(rectOrigin: IBoundingClientRect, rectContent: IBoundingClientRect, direction: TYPE_POPOVER_DIRECTION, isLast: boolean, viewPort: { width: number, height: number }): Promise<boolean> {\n return new Promise(resolve => {\n const positionMode = this.config().position?.mode || 'start';\n const { position } = this.config();\n let result = this.setPosition(direction, rectOrigin, (rectContent as IBoundingClientRect), viewPort, isLast);\n\n if (!result) {\n\n if (position) {\n position.mode = positionMode === 'center' || positionMode === 'start' ? 'end' : 'start';\n if (!this.config().ignoreArrow && position.autoUpdatePosition) {\n position.distance = position.mode === 'end' ? position.autoUpdatePosition.endDistance : position.autoUpdatePosition.startDistance;\n }\n this.config.update(config => ({ ...config }));\n }\n result = this.setPosition(direction, rectOrigin, (rectContent as IBoundingClientRect), viewPort, isLast);\n }\n if (!result && positionMode === 'center') {\n if (position) {\n position.mode = position.mode === 'start' ? 'end' : 'start';\n this.config.update(config => ({ ...config }));\n }\n result = this.setPosition(direction, rectOrigin, (rectContent as IBoundingClientRect), viewPort, isLast);\n }\n if (!result) {\n if (position) {\n position.mode = positionMode;\n this.config.update(config => ({ ...config }));\n }\n\n return resolve(false);\n }\n this.currentDirection.set(direction);\n this.setVariableCss();\n this.setClassArrow(direction);\n this.container().nativeElement.style.opacity = 1;\n this.outEvent.next(direction);\n\n return resolve(true);\n });\n }\n\n private setPosition(direction: TYPE_POPOVER_DIRECTION, rectOrigin: IBoundingClientRect, rectContent: IBoundingClientRect, viewPort: { width: number, height: number }, isLast: boolean): boolean {\n const halfSquare = 6;\n const distanceArrow = 4;\n let bottomPositionRectContent = 0;\n let positionTop = 0;\n let positionLeft = 0;\n let top = 0;\n let left = 0;\n const configValue = this.config();\n\n switch (direction) {\n case 'bottom':\n positionTop = rectOrigin.top + rectOrigin.height + distanceArrow;\n positionLeft = rectOrigin.left + rectOrigin.width / 2 - halfSquare;\n top = positionTop + halfSquare;\n left = positionLeft - rectContent.width / 2 + halfSquare;\n if (configValue.ignoreArrow) {\n top = top - halfSquare - distanceArrow;\n }\n top += configValue.directionDistance || 0;\n if (configValue.position?.mode === 'start') {\n left = rectOrigin.left + (configValue.position.distance || 0);\n }\n if (configValue.position?.mode === 'end') {\n left = rectOrigin.left + rectOrigin.width - rectContent.width + (configValue.position.distance || 0);\n }\n left += (configValue.parentBorderWidth || 0);\n\n this.arrowLeft.set(positionLeft - left);\n this.arrowTop.set(-6);\n this.top.set(top);\n this.left.set(left);\n if (top + rectContent.height < viewPort.height && left >= 0 && left + rectContent.width < viewPort.width) {\n return true;\n }\n if (isLast) {\n if (this.config) {\n this.config.update(config => ({ ...config, maxHeight: viewPort.height - rectOrigin.top - rectOrigin.height }));\n }\n left = left >= 0 ? left : 0;\n this.left.set(left);\n }\n\n return false;\n\n case 'right':\n positionTop = rectOrigin.top + rectOrigin.height / 2 - halfSquare;\n positionLeft = rectOrigin.left + rectOrigin.width + distanceArrow;\n top = positionTop - rectContent.height / 2 + halfSquare;\n left = positionLeft + halfSquare;\n\n if (configValue.ignoreArrow) {\n left = positionLeft - distanceArrow;\n }\n\n left += configValue.directionDistance || 0;\n if (configValue.position?.mode === 'start') {\n top = rectOrigin.top + (configValue.position?.distance || 0);\n }\n\n if (configValue.position?.mode === 'end') {\n top = rectOrigin.top + rectOrigin.height - rectContent.height + (configValue.position.distance || 0);\n }\n\n bottomPositionRectContent = top + rectContent.height;\n\n if (bottomPositionRectContent > viewPort.height) {\n top = top - (bottomPositionRectContent - viewPort.height);\n }\n\n this.arrowTop.set(positionTop - top + 2);\n this.arrowLeft.set(-9);\n\n this.top.set(top);\n this.left.set(left);\n if (top > 0 && left + rectContent.width < viewPort.width) {\n return true;\n }\n\n return false;\n\n case 'left':\n positionTop = rectOrigin.top + rectOrigin.height / 2 - halfSquare;\n positionLeft = rectOrigin.left - (halfSquare * 2) - distanceArrow;\n top = positionTop - rectContent.height / 2 + halfSquare;\n left = positionLeft - rectContent.width + halfSquare;\n if (configValue.ignoreArrow) {\n left = left + halfSquare + distanceArrow;\n }\n\n left -= configValue?.directionDistance || 0;\n if (configValue.position?.mode === 'start') {\n top = rectOrigin.top + (configValue.position.distance || 0);\n }\n\n if (configValue.position?.mode === 'end') {\n top = rectOrigin.top + rectOrigin.height - rectContent.height + (configValue.position.distance || 0);\n }\n\n bottomPositionRectContent = top + rectContent.height;\n\n if (bottomPositionRectContent > viewPort.height) {\n top = top - (bottomPositionRectContent - viewPort.height);\n }\n\n this.arrowTop.set(positionTop - top + 2);\n this.arrowLeft.set(rectContent.width - 3);\n\n this.top.set(top);\n this.left.set(left);\n if (left > 0 && top > 0) {\n return true;\n }\n\n return false;\n\n case 'top':\n positionTop = rectOrigin.top - (halfSquare * 2) - distanceArrow;\n positionLeft = rectOrigin.left + rectOrigin.width / 2 - halfSquare;\n top = positionTop - rectContent.height + halfSquare;\n left = positionLeft - rectContent.width / 2 + halfSquare;\n\n if (configValue.ignoreArrow) {\n top = top + halfSquare + distanceArrow;\n }\n\n top -= configValue.directionDistance || 0;\n\n if (configValue.position && configValue.position?.mode === 'start') {\n left = rectOrigin.left + (configValue.position.distance || 0);\n }\n\n if (configValue.position && configValue.position?.mode === 'end') {\n left = rectOrigin.left + rectOrigin.width - rectContent.width + (configValue.position.distance || 0);\n }\n\n left += (configValue.parentBorderWidth || 0);\n this.arrowLeft.set(positionLeft - left);\n this.arrowTop.set(rectContent.height);\n this.top.set(top);\n this.left.set(left);\n if (top > 0 && left >= 0 && left + rectContent.width < viewPort.width) {\n return true;\n }\n\n if (isLast) {\n this.config.update(config => ({ ...config, maxHeight: viewPort.height - (viewPort.height - rectOrigin.top) }));\n top = 0;\n left = left >= 0 ? left : 0;\n this.left.set(left);\n }\n\n return false;\n }\n }\n\n private setClassArrow(direction: TYPE_POPOVER_DIRECTION) {\n if (direction === 'right') {\n return this.arrowClass.set('libs-ui-popover-overlay-arrow-right');\n }\n if (direction === 'left') {\n return this.arrowClass.set('libs-ui-popover-overlay-arrow-left');\n }\n if (direction === 'top') {\n return this.arrowClass.set('libs-ui-popover-overlay-arrow-down');\n }\n\n return this.arrowClass.set('libs-ui-popover-overlay-arrow-up');\n }\n\n private setVariableCss() {\n const configValue = this.config();\n this.ContainerElement.style.setProperty('--libs-ui-popover-overlay-time-animation-time', `${configValue.animationConfig?.time || .4}s`);\n this.ContainerElement.style.setProperty('--libs-ui-popover-overlay-time-animation-distance', `${this.currentDirection() === 'top' ? '-' : ''}${configValue.animationConfig?.distance || 12}px`);\n }\n\n ngOnDestroy() {\n clearTimeout(this.timeout());\n this.onDestroy.next();\n this.onDestroy.complete();\n }\n\n}\n","<div #container\n class=\"libs-ui-popover-overlay {{ config().classInclude || '' }}\"\n [class.libs-ui-popover-overlay-white-theme]=\"config().whiteTheme\"\n [class.libs-ui-popover-overlay-animation-move]=\"config().animationConfig\"\n [ngStyle]=\"config().ngStyles || {}\"\n [style.width]=\"config().width ? config().width + 'px' : 'auto'\"\n [style.maxWidth.px]=\"config().maxWidth\"\n [style.maxHeight.px]=\"config().maxHeight\"\n [style.top.px]=\"top()\"\n [style.left.px]=\"left()\"\n [style.zIndex]=\"config().zIndex || 10\">\n @if (config()) {\n @if (!config().ignoreArrow) {\n <div class='relative'>\n <svg\n [class]=\"'libs-ui-popover-overlay-arrow '+ arrowClass() + ( config().whiteTheme ? ' libs-ui-popover-overlay-white-theme ' : '')\"\n [style.top.px]=\"arrowTop()\"\n [style.left.px]=\"arrowLeft()\"\n [attr.direction]='outEvent | async'>\n <polygon points=\"0,0 6,6 12,0\" />\n Sorry, your browser does not support inline SVG.\n </svg>\n </div>\n }\n @if (config().template; as templateConfig) {\n <div LibsUiComponentsScrollOverlayDirective\n class=\"libs-ui-popover-overlay-body {{ config().classIncludeOverlayBody || '' }}\"\n [attr.isTemplate]=\"true\"\n [style.max-height]=\"(config().maxHeight)+'px'\">\n <ng-container *ngTemplateOutlet=\"templateConfig;context:{itemContext:config().itemContext}\" />\n </div>\n } @else {\n <div class=\"libs-ui-popover-overlay-body libs-ui-font-h7r {{ config().classIncludeOverlayBody || '' }}\"\n LibsUiComponentsScrollOverlayDirective\n [options]=\"config().scrollOverlayOptions\"\n [style.maxHeight.px]=\"config().maxHeight\"\n [style.paddingTop.px]=\"config().paddingTop ?? 8\"\n [style.paddingRight.px]=\"config().paddingRight ?? 8\"\n [style.paddingLeft.px]=\"config().paddingLeft ?? 8\"\n [style.paddingBottom.px]=\"config().paddingBottom ?? 8\"\n [innerHtml]=\"(config().content || ' ') | translate\">\n </div>\n }\n }\n\n</div>\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { AfterContentInit, ChangeDetectionStrategy, Component, ComponentRef, ElementRef, OnDestroy, OnInit, effect, inject, input, output, signal, untracked } from '@angular/core';\nimport { LibsUiDynamicComponentService } from '@libs-ui/services-dynamic-component';\nimport { checkMouseOverInContainer, get, getViewport, isNil, set } from '@libs-ui/utils';\nimport { Observable, Subject, Subscription, fromEvent } from 'rxjs';\nimport { debounceTime, takeUntil, tap } from 'rxjs/operators';\nimport { getPopoverTimerDestroyInQueryUrl } from './defines/get-popover-timer-destroy.define';\nimport { IFlagMouse } from './interfaces/flag-mouse.interface';\nimport { IPopoverFunctionControlEvent } from './interfaces/function-control.interface';\nimport { IPopoverOverlay } from './interfaces/overlay.interface';\nimport { TYPE_POPOVER_DIRECTION, TYPE_POPOVER_EVENT, TYPE_POPOVER_MODE, TYPE_POPOVER_TYPE } from './interfaces/popover.type';\nimport { LibsUiComponentsPopoverOverlayComponent } from './overlay/overlay.component';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'libs_ui-components-popover,[LibsUiComponentsPopoverDirective]',\n templateUrl: './popover.component.html',\n styleUrl: './popover.component.scss',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class LibsUiComponentsPopoverComponent implements OnInit, AfterContentInit, OnDestroy {\n // #region PROPERTY\n private mouseEnter!: Observable<MouseEvent>;\n private mouseWheel!: Observable<MouseEvent>;\n private mouseClick!: Observable<MouseEvent>;\n private windowResize!: Observable<MouseEvent>;\n private windowWheel!: Observable<MouseEvent>;\n private windowMouseDown!: Observable<MouseEvent>;\n private windowClick!: Observable<MouseEvent>;\n private windowMouseUp!: Observable<MouseEvent>;\n private windowMousemove!: Observable<MouseEvent>;\n private windowTouch!: Observable<MouseEvent>;\n private popoverOverlayComponent!: ComponentRef<LibsUiComponentsPopoverOverlayComponent> | undefined;\n private subsEventPopup = new Subscription();\n private onDestroy = new Subject<void>();\n private functionsControl?: IPopoverFunctionControlEvent;\n private firstClick = signal<boolean>(false);\n private contentInnerHtml = signal<string>('');\n private timer = signal<number | undefined>(undefined);\n private directionPopover = signal<TYPE_POPOVER_DIRECTION | undefined>(undefined);\n private frameId = signal<string>('');\n\n // #region INPUT\n readonly debugId = input<string>();\n readonly flagMouse = input<IFlagMouse, IFlagMouse>({ isMouseEnter: false, isMouseEnterContent: false, isContainerHasScroll: false }, {\n transform: (value: any) => value ? value : { isMouseEnter: false, isMouseEnterContent: false, isContainerHasScroll: false }\n });\n readonly type = input<TYPE_POPOVER_TYPE>('other');\n readonly mode = input<TYPE_POPOVER_MODE>('hover');\n readonly config = input({}, { transform: (value: IPopoverOverlay | undefined) => value ? value : {} });\n readonly ignoreShowPopover = input<boolean>();\n readonly elementRefCustom = input<HTMLElement>();\n readonly classInclude = input<string | undefined, string | undefined>('', { transform: (value) => value ?? '' });\n readonly ignoreHiddenPopoverContentWhenMouseLeave = input<boolean>();\n readonly ignoreStopPropagationEvent = input<boolean>();\n readonly ignoreCursorPointerModeLikeClick = input<boolean>();\n readonly isAddContentToParentDocument = input<boolean>();\n readonly ignoreClickOutside = input<boolean>();\n\n // #region OUTPUT\n readonly outEvent = output<TYPE_POPOVER_EVENT>();\n readonly outChangStageFlagMouse = output<IFlagMouse>();\n readonly outEventPopoverContent = output<TYPE_POPOVER_DIRECTION>();\n readonly outFunctionsControl = output<IPopoverFunctionControlEvent>();\n\n // #region INJECT\n private elementRef = inject(ElementRef);\n private dynamicService = inject(LibsUiDynamicComponentService);\n\n constructor() {\n let classDefault: string | undefined = undefined;\n effect(() => {\n if (classDefault === undefined) {\n classDefault = this.Element.className;\n }\n this.Element.className = classDefault || '';\n if (this.type() === 'text') {\n this.Element.classList.add('popover-text-ellipsis');\n }\n if (this.mode().includes('click') && !this.ignoreCursorPointerModeLikeClick()) {\n this.Element.classList.add('cursor-pointer');\n }\n if (this.classInclude()) {\n this.classInclude()?.split(' ').forEach(className => {\n if (!className) {\n return;\n }\n this.Element.classList.add(className);\n })\n }\n });\n\n let first = true;\n effect(() => {\n this.config();\n untracked(() => {\n if (this.popoverOverlayComponent?.instance && !first) {\n this.updatePopoverOverlayPosition();\n }\n first = false;\n });\n });\n }\n\n ngOnInit(): void {\n this.outEventPopoverContent.subscribe(direction => this.directionPopover.set(direction));\n this.functionsControl = {\n removePopoverOverlay: this.removePopoverOverlay.bind(this),\n updatePopoverOverlayPosition: this.updatePopoverOverlayPosition.bind(this),\n getRectContainer: async () => (this.elementRefCustom() || this.Element).getBoundingClientRect(),\n getRectContent: async () => (this.popoverOverlayComponent?.instance?.ContainerElement)?.getBoundingClientRect(),\n showPopover: this.addPopoverContent.bind(this),\n updatePopoverOverlay: this.updatePopoverOverlay.bind(this),\n };\n this.outFunctionsControl.emit(this.functionsControl);\n }\n\n ngAfterContentInit() {\n const nativeEl = this.Element;\n this.mouseEnter = this.initObservable(nativeEl, 'mouseenter');\n this.mouseClick = this.initObservable(nativeEl, 'click');\n this.mouseWheel = this.initObservable(window, 'wheel');\n this.windowResize = this.initObservable(window, 'resize');\n this.windowWheel = this.initObservable(window, 'wheel');\n this.windowMouseDown = this.initObservable(window, 'mousedown');\n this.windowClick = this.initObservable(window, 'click');\n this.windowMouseUp = this.initObservable(window, 'mouseup');\n this.windowTouch = this.initObservable(window, 'touchstart');\n this.windowMousemove = this.initObservable(window, 'mousemove');\n this.mouseEnter.subscribe(() => {\n\n if (!this.mode().includes('hover')) {\n return;\n }\n\n if (this.type() === 'text' && nativeEl?.clientWidth >= nativeEl.scrollWidth && !this.popoverOverlayComponent) {\n return;\n }\n this.addPopoverContent(nativeEl);\n });\n this.mouseClick.subscribe(() => {\n this.firstClick.update(val => !val);\n this.outEvent.emit('click');\n\n if (!this.mode().startsWith('click')) {\n return;\n }\n\n if (this.mode() === 'click-toggle' && !this.firstClick()) {\n this.removePopoverOverlay();\n\n return;\n }\n this.addPopoverContent(nativeEl);\n });\n this.windowResize.pipe(debounceTime(500)).subscribe(() => {\n if (!this.popoverOverlayComponent) {\n return;\n }\n this.removePopoverOverlay();\n this.addPopoverContent(nativeEl);\n });\n }\n\n // #region FUNCTIONS\n private async updatePopoverOverlay() {\n const timer = setTimeout(() => {\n clearTimeout(timer);\n if (!this.popoverOverlayComponent?.instance || !this.config()) {\n return;\n }\n const instance = this.popoverOverlayComponent.instance;\n const nativeEl = this.elementRefCustom() || this.Element;\n\n instance.setConfig(nativeEl.getBoundingClientRect(), this.config());\n });\n }\n\n private async updatePopoverOverlayPosition() {\n clearTimeout(this.timer());\n this.timer.set(setTimeout(async () => {\n if (!this.popoverOverlayComponent || !this.popoverOverlayComponent.instance || !this.config() || !this.functionsControl) {\n return;\n }\n const viewPort = getViewport();\n const rectListView = await this.functionsControl.getRectContent();\n\n if (!rectListView) {\n return;\n }\n const rectContainer = await this.functionsControl.getRectContainer();\n const distanceListViewAndContainer = this.config()?.ignoreArrow === false ? 14 : 4;\n\n if (this.directionPopover() === 'bottom' && ((rectListView.top + rectListView.height > viewPort.height) || (rectListView.top < (rectContainer.top + rectContainer.height)) || (rectListView.top - (rectContainer.top + rectContainer.height) > distanceListViewAndContainer)) || ((rectListView.left + rectListView.width > viewPort.width))) {\n\n const instance = this.popoverOverlayComponent.instance;\n const nativeEl = this.elementRefCustom() || this.Element;\n instance.setConfig(nativeEl.getBoundingClientRect(), { ... (this.config() || {}), ...this.getDefaultConfigs() }, this.isAddContentToParentDocument());\n\n return;\n }\n\n if (this.directionPopover() !== 'top') {\n return;\n }\n if ((rectContainer.top - (rectListView.top + rectListView.height) > distanceListViewAndContainer) || (rectListView.top + rectListView.height + distanceListViewAndContainer > rectContainer.top + 2) || ((rectListView.left + rectListView.width > viewPort.width))) {\n const instance = this.popoverOverlayComponent.instance;\n const nativeEl = this.elementRefCustom() || this.Element;\n\n instance.setConfig(nativeEl.getBoundingClientRect(), { ... (this.config() || {}), ...this.getDefaultConfigs() }, this.isAddContentToParentDocument());\n\n return;\n }\n }, 250));\n }\n\n protected get Element(): HTMLElement {\n return this.elementRef.nativeElement.firstElementChild || this.elementRef.nativeElement;\n }\n\n private initObservable(el: any, eventName: string): Observable<MouseEvent> {\n return fromEvent<MouseEvent>(el, eventName).pipe(\n tap(e => !this.ignoreStopPropagationEvent() && e.stopPropagation()),\n takeUntil(this.onDestroy)\n );\n }\n\n private async addPopoverContent(nativeEl: HTMLElement) {\n if (this.popoverOverlayComponent || this.ignoreShowPopover() || !this.config()) {\n return;\n }\n\n this.popoverOverlayComponent = this.dynamicService.resolveComponentFactory(LibsUiComponentsPopoverOverlayComponent);\n this.frameId.set(this.dynamicService.addToBody(this.popoverOverlayComponent, this.isAddContentToParentDocument() || this.config().isAddContentToParentDocument));\n this.outEvent.emit('show');\n const instance = this.popoverOverlayComponent.instance;\n\n nativeEl = this.elementRefCustom() || nativeEl;\n instance.setConfig(nativeEl.getBoundingClientRect(), { ... (this.config() || {}), ...this.getDefaultConfigs() }, this.isAddContentToParentDocument());\n const flagsMouses: IFlagMouse = {\n isMouseEnter: true,\n isMouseEnterContent: false,\n isContainerHasScroll: nativeEl.offsetHeight < nativeEl.scrollHeight\n };\n const nativeElContainer = instance.ElementRef.nativeElement;\n const mouseEnterContent = this.initObservable(nativeElContainer, 'mouseenter');\n const mouseLeaveContent = this.initObservable(nativeElContainer, 'mouseleave');\n this.subsEventPopup.add(instance.outEvent.subscribe((direction: TYPE_POPOVER_DIRECTION) => {\n this.outEventPopoverContent.emit(direction);\n }));\n\n this.subsEventPopup.add(mouseEnterContent.subscribe(() => {\n this.outEvent.emit('mouseenter-content');\n flagsMouses.isMouseEnterContent = true;\n this.outChangStageFlagMouse.emit(flagsMouses);\n }));\n\n this.subsEventPopup.add(this.mouseEnter.subscribe(() => {\n this.outEvent.emit('mouseenter-element');\n this.outChangStageFlagMouse.emit(flagsMouses);\n }));\n\n this.subsEventPopup.add(this.mouseWheel.subscribe(() => {\n flagsMouses.isContainerHasScroll = false;\n\n if (nativeEl.offsetHeight < nativeEl.scrollHeight) {\n flagsMouses.isContainerHasScroll = true;\n }\n if ((flagsMouses.isMouseEnter && flagsMouses.isContainerHasScroll) || flagsMouses.isMouseEnterContent || this.flagMouse().isMouseEnter || this.flagMouse().isMouseEnterContent) {\n return;\n }\n this.removePopoverOverlay();\n }));\n this.handlerMouseLeaveRemovePopoverOverlay(this.windowMousemove, flagsMouses, 'isMouseEnter', 'isMouseEnterContent', 'mouseleave-element');\n this.handlerMouseLeaveRemovePopoverOverlay(mouseLeaveContent, flagsMouses, 'isMouseEnterContent', 'isMouseEnter', 'mouseleave-content');\n\n if (this.mode() === 'click_open_and_click_panel_content_hidden') {\n this.subsEventPopup.add(this.initObservable(nativeElContainer, 'click').subscribe(() => {\n this.removePopoverOverlay();\n }));\n }\n\n this.handlerWindowEventRemovePopoverOverlay(this.windowClick, flagsMouses);\n this.handlerWindowEventRemovePopoverOverlay(this.windowMouseDown, flagsMouses);\n this.handlerWindowEventRemovePopoverOverlay(this.windowMouseUp, flagsMouses);\n this.handlerWindowEventRemovePopoverOverlay(this.windowWheel, flagsMouses);\n this.subsEventPopup.add(this.windowTouch.subscribe(() => {\n this.removePopoverOverlay();\n }));\n }\n\n private handlerWindowEventRemovePopoverOverlay(obs: Observable<MouseEvent>, flagsMouses: IFlagMouse) {\n this.subsEventPopup.add(obs.pipe(debounceTime(10)).subscribe(() => {\n if (flagsMouses.isMouseEnter || flagsMouses.isMouseEnterContent || this.ignoreClickOutside()) {\n return;\n }\n if (this.flagMouse() && (this.flagMouse().isMouseEnter || this.flagMouse().isMouseEnterContent)) {\n return;\n }\n this.firstClick.set(false);\n this.removePopoverOverlay();\n }));\n }\n\n private handlerMouseLeaveRemovePopoverOverlay(obs: Observable<MouseEvent>, flagsMouses: { isMouseEnter: boolean, isMouseEnterContent: boolean }, flagKeyChangeValue: string, flagKeyCheck: string, outEvent: TYPE_POPOVER_EVENT) {\n this.subsEventPopup.add(obs.pipe(\n tap(() => this.outEvent.emit(outEvent)),\n debounceTime(getPopoverTimerDestroyInQueryUrl() || this.config()?.timerDestroy || 0)\n ).subscribe((e: MouseEvent) => {\n if (outEvent === 'mouseleave-element' && (checkMouseOverInContainer(e, this.Element) || checkMouseOverInContainer({ clientX: e.clientX + 2, clientY: e.clientY + 2 }, this.Element) || checkMouseOverInContainer({ clientX: e.clientX - 2, clientY: e.clientY - 2 }, this.Element))) {\n return;\n }\n set(flagsMouses, flagKeyChangeValue, false);\n this.outChangStageFlagMouse.emit(flagsMouses);\n if (this.flagMouse() && (this.flagMouse().isMouseEnter || this.flagMouse().isMouseEnterContent)) {\n return;\n }\n\n if (get(flagsMouses, flagKeyCheck) || this.ignoreHiddenPopoverContentWhenMouseLeave()) {\n return;\n }\n this.removePopoverOverlay();\n }));\n }\n\n private getDefaultConfigs(): IPopoverOverlay {\n const configValue = this.config() || {};\n if ((isNil(configValue.content)) || (configValue.content === this.contentInnerHtml() && this.contentInnerHtml() !== this.elementRef.nativeElement.innerHTML)) {\n configValue.content = this.elementRef.nativeElement.innerHTML;\n }\n this.contentInnerHtml.set(this.elementRef.nativeElement.innerHTML);\n if (!configValue.maxWidth) {\n configValue.maxWidth = 250;\n }\n if (configValue.maxHeight === undefined || configValue.maxHeight === 0) {\n configValue.maxHeight = 140;\n }\n if (!configValue.direction) {\n configValue.direction = 'bottom';\n }\n if (!configValue.position) {\n configValue.position = {\n mode: 'center',\n distance: 0\n };\n }\n\n return configValue;\n }\n\n private async removePopoverOverlay() {\n if (this.popoverOverlayComponent) {\n this.outEvent.emit('remove');\n this.subsEventPopup.unsubscribe();\n this.subsEventPopup = new Subscription();\n }\n this.dynamicService.remove(this.popoverOverlayComponent, this.frameId());\n this.frameId.set('');\n this.popoverOverlayComponent = undefined;\n this.firstClick.set(false);\n }\n\n ngOnDestroy() {\n clearTimeout(this.timer());\n this.removePopoverOverlay();\n this.onDestroy.next();\n this.onDestroy.complete();\n this.subsEventPopup.unsubscribe();\n }\n}\n","<ng-content />\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["takeUntil"],"mappings":"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"}
|