ctt-babylon 0.21.65 → 0.21.66
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/directives/link-type/link-type.directive.mjs +7 -1
- package/esm2022/lib/services/mapper/mapper.service.mjs +2 -2
- package/esm2022/lib/utils/utils-link-directive.mjs +63 -0
- package/fesm2022/ctt-babylon.mjs +69 -1
- package/fesm2022/ctt-babylon.mjs.map +1 -1
- package/lib/utils/utils-link-directive.d.ts +7 -0
- package/package.json +1 -1
|
@@ -3,6 +3,7 @@ import { Directive, EventEmitter, HostListener, inject, Input, NgZone, Output, I
|
|
|
3
3
|
import { SITE_CONFIG_SERVICE_TOKEN } from '../../services/mapper/mapper.service.token';
|
|
4
4
|
import { SCROLL_OFFSET_TOKEN } from '../../utils/scroll-config.token';
|
|
5
5
|
import { complex_links } from '../../utils/complex-links.token';
|
|
6
|
+
import { UtilsLinkDirective } from '../../utils/utils-link-directive';
|
|
6
7
|
import * as i0 from "@angular/core";
|
|
7
8
|
import * as i1 from "@angular/router";
|
|
8
9
|
export class BabylonLinkTypeDirective {
|
|
@@ -77,6 +78,11 @@ export class BabylonLinkTypeDirective {
|
|
|
77
78
|
case 'anchor_link':
|
|
78
79
|
this.handleAnchorLink(this.href);
|
|
79
80
|
break;
|
|
81
|
+
case 'anchor_submenu':
|
|
82
|
+
UtilsLinkDirective.navigateAndScrollToAnchor(this.router, this.href, this.defaultOffset, () => {
|
|
83
|
+
this.anchorClicked.emit();
|
|
84
|
+
});
|
|
85
|
+
break;
|
|
80
86
|
case 'pdf_link':
|
|
81
87
|
this.handlePdfLink(this.href);
|
|
82
88
|
break;
|
|
@@ -336,4 +342,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
336
342
|
type: HostListener,
|
|
337
343
|
args: ['click', ['$event']]
|
|
338
344
|
}] } });
|
|
339
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGluay10eXBlLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JhYnlsb24vc3JjL2xpYi9kaXJlY3RpdmVzL2xpbmstdHlwZS9saW5rLXR5cGUuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3BELE9BQU8sRUFDSCxTQUFTLEVBRVQsWUFBWSxFQUNaLFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUNMLE1BQU0sRUFFTixNQUFNLEVBQ04sTUFBTSxFQUNOLFdBQVcsR0FDZCxNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUN2RixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUN0RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUNBQWlDLENBQUM7OztBQU1oRSxNQUFNLE9BQU8sd0JBQXdCO0lBZ0JqQyxZQUNxQixNQUFjLEVBQ2QsS0FBaUIsRUFDWSxhQUFxQjtRQUZsRCxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsVUFBSyxHQUFMLEtBQUssQ0FBWTtRQUNZLGtCQUFhLEdBQWIsYUFBYSxDQUFRO1FBZDlELHVCQUFrQixHQUFhLEtBQUssQ0FBQztRQUNwQyxrQkFBYSxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFDM0MsZUFBVSxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNqQyxvQkFBZSxHQUFHLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUMvQixZQUFPLEdBQUcsTUFBTSxDQUFDLHlCQUF5QixDQUFDLENBQUM7UUFDNUMsV0FBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUV4QixhQUFRLEdBQUcsc0JBQXNCLENBQUM7UUFDbEMsY0FBUyxHQUFH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O3NCQURQLFlBQVk7dUJBQUMsT0FBTyxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaXNQbGF0Zm9ybUJyb3dzZXIgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgICBEaXJlY3RpdmUsXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSG9zdExpc3RlbmVyLFxuICAgIGluamVjdCxcbiAgICBJbnB1dCxcbiAgICBOZ1pvbmUsXG4gICAgT25DaGFuZ2VzLFxuICAgIE91dHB1dCxcbiAgICBJbmplY3QsXG4gICAgUExBVEZPUk1fSUQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IFNJVEVfQ09ORklHX1NFUlZJQ0VfVE9LRU4gfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9tYXBwZXIvbWFwcGVyLnNlcnZpY2UudG9rZW4nO1xuaW1wb3J0IHsgU0NST0xMX09GRlNFVF9UT0tFTiB9IGZyb20gJy4uLy4uL3V0aWxzL3Njcm9sbC1jb25maWcudG9rZW4nO1xuaW1wb3J0IHsgY29tcGxleF9saW5rcyB9IGZyb20gJy4uLy4uL3V0aWxzL2NvbXBsZXgtbGlua3MudG9rZW4nO1xuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1tsaW5rVHlwZV0nLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG59KVxuZXhwb3J0IGNsYXNzIEJhYnlsb25MaW5rVHlwZURpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XG4gICAgQElucHV0KCkgbGlua1R5cGU/OiBzdHJpbmc7XG4gICAgQElucHV0KCkgaHJlZj86IHN0cmluZztcbiAgICBASW5wdXQoKSBtb2RhbENsaWNrPzogRXZlbnRFbWl0dGVyPHN0cmluZz47XG4gICAgQElucHV0KCkgY2xpY2tQb3B1cD86IEV2ZW50RW1pdHRlcjxzdHJpbmc+O1xuICAgIEBJbnB1dCgpIGRpc2FibGVQb2ludGVyTm9uZT86IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBAT3V0cHV0KCkgYW5jaG9yQ2xpY2tlZCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgICBwcml2YXRlIHBsYXRmb3JtSWQgPSBpbmplY3QoUExBVEZPUk1fSUQpO1xuICAgIHByaXZhdGUgaGFzQ29tcGxleExpbmtzID0gaW5qZWN0KGNvbXBsZXhfbGlua3MpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgc2l0ZVN2YyA9IGluamVjdChTSVRFX0NPTkZJR19TRVJWSUNFX1RPS0VOKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IG5nWm9uZSA9IGluamVjdChOZ1pvbmUpO1xuXG4gICAgcHJpdmF0ZSByZWFkb25seSBQSE9ORV9SRSA9IC9eVFxccypbOlxcLV0/XFxzKiguKykkL2k7XG4gICAgcHJpdmF0ZSByZWFkb25seSBNQUlMVE9fUkUgPSAvXm1haWx0bzovaTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IEFERFJFU1NfUkUgPSAvXmNcXC9cXC4/KC4qKSQvaTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlcjogUm91dGVyLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGVsUmVmOiBFbGVtZW50UmVmLFxuICAgICAgICBASW5qZWN0KFNDUk9MTF9PRkZTRVRfVE9LRU4pIHByaXZhdGUgcmVhZG9ubHkgZGVmYXVsdE9mZnNldDogbnVtYmVyXG4gICAgKSB7fVxuICAgIG5nT25DaGFuZ2VzKCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMubGlua1R5cGUgfHwgIXRoaXMuaHJlZikge1xuICAgICAgICAgICAgdGhpcy5oYW5kbGVOb0xpbmsoKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBlbCA9IHRoaXMuZWxSZWYubmF0aXZlRWxlbWVudDtcbiAgICAgICAgY29uc3QgaXNBbmNob3IgPSBlbC50YWdOYW1lLnRvTG93ZXJDYXNlKCkgPT09ICdhJztcblxuICAgICAgICAvLyBTT0xPIGFwbGljYW1vcyBhdHJpYnV0b3MgSFRNTCBkZSBlbmxhY2VzIHNpIGVzIHVuYSBldGlxdWV0YSA8YT5cbiAgICAgICAgaWYgKGlzQW5jaG9yKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5pc0V4dGVybmFsVHlwZSh0aGlzLmxpbmtUeXBlKSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGRldGVjdGVkID0gdGhpcy5kZXRlY3RFeHRlcm5hbEtpbmQodGhpcy5ocmVmKTtcbiAgICAgICAgICAgICAgICB0aGlzLmFwcGx5Tm9ybWFsaXplZEhyZWYoZGV0ZWN0ZWQpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBlbC5zZXRBdHRyaWJ1dGUoJ2hyZWYnLCB0aGlzLmhyZWYpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgdGhpcy5saW5rVHlwZSA9PT0gJ2V4dGVybmFsJyB8fFxuICAgICAgICAgICAgICAgIHRoaXMubGlua1R5cGUgPT09ICdleHRlcm5hbF9saW5rJ1xuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgZWwuc2V0QXR0cmlidXRlKCdyZWwnLCAnbm9mb2xsb3cnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ2NsaWNrJywgWyckZXZlbnQnXSlcbiAgICBidG5DbGljayhldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLmxpbmtUeXBlIHx8ICF0aGlzLmhyZWYpIHtcbiAgICAgICAgICAgIHRoaXMuaGFuZGxlTm9MaW5rKCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXRoaXMubGlua1R5cGUpIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybignbGlua1R5cGUgaXMgbWlzc2luZy4nKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICAgICAgc3dpdGNoICh0aGlzLmxpbmtUeXBlKSB7XG4gICAgICAgICAgICBjYXNlICdpbnRlcm5hbCc6XG4gICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVJbnRlcm5hbExpbmsodGhpcy5ocmVmKTtcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgY2FzZSAnaW50ZXJuYWxfbGluayc6XG4gICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVJbnRlcm5hbExpbmsodGhpcy5ocmVmKTtcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgY2FzZSAnc2VsZl9saW5rJzpcbiAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZUludGVybmFsTGluayh0aGlzLmhyZWYpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBjYXNlICdpbnRlcm5hbF9ob3RlbF9saW5rJzpcbiAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZUludGVybmFsTGluayh0aGlzLmhyZWYpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBjYXNlICdleHRlcm5hbCc6XG4gICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVFeHRlcm5hbExpbmsodGhpcy5ocmVmKTtcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgY2FzZSAnZXh0ZXJuYWxfbGluayc6XG4gICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVFeHRlcm5hbExpbmsodGhpcy5ocmVmKTtcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgY2FzZSAnYW5jaG9yJzpcbiAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZUFuY2hvckxpbmsodGhpcy5ocmVmKTtcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgY2FzZSAnYW5jaG9yX2xpbmsnOlxuICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlQW5jaG9yTGluayh0aGlzLmhyZWYpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBjYXNlICdwZGZfbGluayc6XG4gICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVQZGZMaW5rKHRoaXMuaHJlZik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGNhc2UgJ25vbGluayc6XG4gICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVOb0xpbmsoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgY2FzZSAnY29tcG9uZW50JzpcbiAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZUNvbXBvbmVudExpbmsodGhpcy5ocmVmKTtcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgY2FzZSAnY29tcG9uZW50X2xpbmsnOlxuICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlQ29tcG9uZW50TGluayh0aGlzLmhyZWYpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybihgVW5zdXBwb3J0ZWQgbGlua1R5cGU6ICR7dGhpcy5saW5rVHlwZX1gKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgaGFuZGxlSW50ZXJuYWxMaW5rKHVybDogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGNsZWFuZWRVcmwgPSB1cmwudHJpbSgpLnJlcGxhY2UoL1xcLyskLywgJycpO1xuICAgICAgICBjb25zdCB0YXJnZXQgPSAnLycgKyBjbGVhbmVkVXJsO1xuICAgICAgICB0aGlzLmFuY2hvckNsaWNrZWQuZW1pdCgpO1xuXG4gICAgICAgIGNvbnN0IGN1cnJlbnQgPSAodGhpcy5yb3V0ZXIudXJsIHx8ICcnKVxuICAgICAgICAgICAgLnNwbGl0KCc/JylbMF1cbiAgICAgICAgICAgIC5yZXBsYWNlKC9cXC8rJC8sICcnKTtcbiAgICAgICAgY29uc3QgdGFyZ2V0Q2xlYW4gPSB0YXJnZXQuc3BsaXQoJz8nKVswXS5yZXBsYWNlKC9cXC8rJC8sICcnKTtcblxuICAgICAgICBpZiAoY3VycmVudCA9PT0gdGFyZ2V0Q2xlYW4pIHJldHVybjtcblxuICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKHRhcmdldCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBoYW5kbGVFeHRlcm5hbExpbmsodXJsOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgaWYgKCFpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSByZXR1cm47XG5cbiAgICAgICAgY29uc3QgZGV0ZWN0ZWQgPSB0aGlzLmRldGVjdEV4dGVybmFsS2luZCh1cmwpO1xuICAgICAgICBzd2l0Y2ggKGRldGVjdGVkLmtpbmQpIHtcbiAgICAgICAgICAgIGNhc2UgJ3Bob25lJzpcbiAgICAgICAgICAgICAgICB0aGlzLm9wZW5QaG9uZShkZXRlY3RlZC52YWx1ZSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdlbWFpbCc6XG4gICAgICAgICAgICAgICAgdGhpcy5vcGVuRW1haWwoZGV0ZWN0ZWQudmFsdWUpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnYWRkcmVzcyc6XG4gICAgICAgICAgICAgICAgdGhpcy5vcGVuQWRkcmVzcyhkZXRlY3RlZC52YWx1ZSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgIWRldGVjdGVkLnZhbHVlIHx8XG4gICAgICAgICAgICAgICAgICAgIGRldGVjdGVkLnZhbHVlID09PSAnIycgfHxcbiAgICAgICAgICAgICAgICAgICAgZGV0ZWN0ZWQudmFsdWUgPT09ICcvIydcbiAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAgICAgICAgICAgICAgICAgJ1NlIGludGVudMOzIGFicmlyIHVuIGVubGFjZSBleHRlcm5vIHZhY8OtbyBvIGludsOhbGlkbyAocGxhY2Vob2xkZXIpOicsXG4gICAgICAgICAgICAgICAgICAgICAgICBkZXRlY3RlZC52YWx1ZVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgY29uc3QgaXNBYnNvbHV0ZVVybCA9ICh1cmw6IHN0cmluZykgPT4gL14oaHR0cHM/OikvaS50ZXN0KHVybCk7XG5cbiAgICAgICAgICAgICAgICBjb25zdCBmaW5hbFVybCA9IGlzQWJzb2x1dGVVcmwoZGV0ZWN0ZWQudmFsdWUpXG4gICAgICAgICAgICAgICAgICAgID8gZGV0ZWN0ZWQudmFsdWVcbiAgICAgICAgICAgICAgICAgICAgOiAnaHR0cHM6Ly8nICsgZGV0ZWN0ZWQudmFsdWUucmVwbGFjZSgvXlxcLysvLCAnJyk7XG5cbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICB3aW5kb3cub3BlbihmaW5hbFVybCwgJ19ibGFuaycpO1xuICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgICAgICAgICAgICAgICAgICdFcnJvciBhYnJpZW5kbyB2ZW50YW5hIGV4dGVybmEgY29uIFVSTDonLFxuICAgICAgICAgICAgICAgICAgICAgICAgZmluYWxVcmwsXG4gICAgICAgICAgICAgICAgICAgICAgICBlXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBoYW5kbGVQZGZMaW5rKHVybDogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIGlmIChpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSB7XG4gICAgICAgICAgICB3aW5kb3cub3Blbih1cmwsICdfYmxhbmsnKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgaGFuZGxlQW5jaG9yTGluayhzZWN0aW9uSWQ6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICBpZiAoaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkge1xuICAgICAgICAgICAgLy8gUGVybWl0aXIgcXVlIHNlY3Rpb25JZCBzZWEgdW5hIFVSTCBjb21wbGV0YSBjb24gaGFzaFxuICAgICAgICAgICAgbGV0IGlkID0gc2VjdGlvbklkO1xuICAgICAgICAgICAgaWYgKHNlY3Rpb25JZC5pbmNsdWRlcygnIycpKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgaGFzaEluZGV4ID0gc2VjdGlvbklkLmxhc3RJbmRleE9mKCcjJyk7XG4gICAgICAgICAgICAgICAgaWQgPSBzZWN0aW9uSWQuc3Vic3RyaW5nKGhhc2hJbmRleCArIDEpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgbGFuZyA9IHRoaXMuc2l0ZVN2Yy5zZWxlY3RlZExhbmd1YWdlSW5zdGFudD8ubG9jYXRlLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgICAgICBpZiAodGhpcy5oYXNDb21wbGV4TGlua3MgJiYgdGhpcy5yb3V0ZXIudXJsICE9PSBgLyR7bGFuZ31gKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZWRpcmVjdFRvSG9tZUFuY2hvcihpZCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbnN0IGVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZCk7XG4gICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgeSA9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcCArXG4gICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3cuc2Nyb2xsWSArXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRlZmF1bHRPZmZzZXQ7XG4gICAgICAgICAgICAgICAgICAgIHdpbmRvdy5zY3JvbGxUbyh7IHRvcDogeSwgYmVoYXZpb3I6ICdzbW9vdGgnIH0pO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmFuY2hvckNsaWNrZWQuZW1pdCgpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybihgU2VjdGlvbiB3aXRoIElEICR7c2VjdGlvbklkfSBub3QgZm91bmQuYCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBoYW5kbGVDb21wb25lbnRMaW5rKHVybDogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGNsZWFuZWRDb21wb25lbnROYW1lID0gdXJsLnRyaW0oKS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICBpZiAodGhpcy5tb2RhbENsaWNrKSB7XG4gICAgICAgICAgICB0aGlzLm1vZGFsQ2xpY2suZW1pdChjbGVhbmVkQ29tcG9uZW50TmFtZSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuY2xpY2tQb3B1cCkge1xuICAgICAgICAgICAgdGhpcy5jbGlja1BvcHVwLmVtaXQoY2xlYW5lZENvbXBvbmVudE5hbWUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBoYW5kbGVOb0xpbmsoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHBhcmVudExpID0gdGhpcy5lbFJlZi5uYXRpdmVFbGVtZW50LmNsb3Nlc3QoJ2xpJyk7XG5cbiAgICAgICAgY29uc3QgaXNJbnNpZGVNZW51SXRlbVdpdGhDaGlsZHJlbiA9IHBhcmVudExpPy5jbGFzc0xpc3QuY29udGFpbnMoXG4gICAgICAgICAgICAnbWVudS1pdGVtLWhhcy1jaGlsZHJlbidcbiAgICAgICAgKTtcblxuICAgICAgICBpZiAoIWlzSW5zaWRlTWVudUl0ZW1XaXRoQ2hpbGRyZW4pIHtcbiAgICAgICAgICAgIGlmICghdGhpcy5kaXNhYmxlUG9pbnRlck5vbmUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKCdocmVmJyk7XG4gICAgICAgICAgICAgICAgdGhpcy5lbFJlZi5uYXRpdmVFbGVtZW50LnJlbW92ZUF0dHJpYnV0ZSgnW2hyZWZdJyk7XG4gICAgICAgICAgICAgICAgdGhpcy5lbFJlZi5uYXRpdmVFbGVtZW50LnNldEF0dHJpYnV0ZSgnYXJpYS1kaXNhYmxlZCcsICd0cnVlJyk7XG4gICAgICAgICAgICAgICAgdGhpcy5lbFJlZi5uYXRpdmVFbGVtZW50LnNldEF0dHJpYnV0ZSgndGFiaW5kZXgnLCAnLTEnKTtcbiAgICAgICAgICAgICAgICB0aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnQuc3R5bGUuY3Vyc29yID0gJ2RlZmF1bHQnO1xuICAgICAgICAgICAgICAgIHRoaXMuZWxSZWYubmF0aXZlRWxlbWVudC5zdHlsZS5wb2ludGVyRXZlbnRzID0gJ25vbmUnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBvcGVuUGhvbmUobnVtOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSBgdGVsOiR7bnVtfWA7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBvcGVuRW1haWwoZW1haWw6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IGBtYWlsdG86JHtlbWFpbH1gO1xuICAgIH1cblxuICAgIHByaXZhdGUgb3BlbkFkZHJlc3MoYWRkcmVzczogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IG1hcHNVcmwgPSB0aGlzLmJ1aWxkTWFwc1VybChhZGRyZXNzKTtcbiAgICAgICAgd2luZG93Lm9wZW4obWFwc1VybCwgJ19ibGFuaycpO1xuICAgIH1cblxuICAgIHByaXZhdGUgYnVpbGRNYXBzVXJsKGFkZHJlc3M6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBgaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9tYXBzL3NlYXJjaC8/YXBpPTEmcXVlcnk9JHtlbmNvZGVVUklDb21wb25lbnQoYWRkcmVzcyl9YDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGlzRXh0ZXJuYWxUeXBlKHQ/OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHQgPT09ICdleHRlcm5hbCcgfHwgdCA9PT0gJ2V4dGVybmFsX2xpbmsnO1xuICAgIH1cblxuICAgIHByaXZhdGUgZGV0ZWN0RXh0ZXJuYWxLaW5kKHJhdzogc3RyaW5nKToge1xuICAgICAgICBraW5kOiAncGhvbmUnIHwgJ2VtYWlsJyB8ICdhZGRyZXNzJyB8ICd1cmwnO1xuICAgICAgICB2YWx1ZTogc3RyaW5nO1xuICAgIH0ge1xuICAgICAgICBjb25zdCB0cmltbWVkID0gKHJhdyB8fCAnJykudHJpbSgpO1xuXG4gICAgICAgIGlmICh0aGlzLk1BSUxUT19SRS50ZXN0KHRyaW1tZWQpKSB7XG4gICAgICAgICAgICBjb25zdCBlbWFpbCA9IHRyaW1tZWQucmVwbGFjZSgvXm1haWx0bzovaSwgJycpO1xuICAgICAgICAgICAgcmV0dXJuIHsga2luZDogJ2VtYWlsJywgdmFsdWU6IGVtYWlsIH07XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5QSE9ORV9SRS50ZXN0KHRyaW1tZWQpKSB7XG4gICAgICAgICAgICBjb25zdCBtYXRjaCA9IHRoaXMuUEhPTkVfUkUuZXhlYyh0cmltbWVkKTtcbiAgICAgICAgICAgIGNvbnN0IG51bVJhdyA9IChtYXRjaD8uWzFdID8/ICcnKS50cmltKCk7XG4gICAgICAgICAgICBjb25zdCBkaWdpdHMgPSBudW1SYXcucmVwbGFjZSgvW15cXGQrXS9nLCAnJyk7XG4gICAgICAgICAgICByZXR1cm4geyBraW5kOiAncGhvbmUnLCB2YWx1ZTogZGlnaXRzIH07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKC9edGVsOi9pLnRlc3QodHJpbW1lZCkpIHtcbiAgICAgICAgICAgIGNvbnN0IG51bSA9IHRyaW1tZWQucmVwbGFjZSgvXnRlbDovaSwgJycpLnJlcGxhY2UoL1teXFxkK10vZywgJycpO1xuICAgICAgICAgICAgcmV0dXJuIHsga2luZDogJ3Bob25lJywgdmFsdWU6IG51bSB9O1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgYWRkck1hdGNoID0gdGhpcy5BRERSRVNTX1JFLmV4ZWModHJpbW1lZCk7XG4gICAgICAgIGlmIChhZGRyTWF0Y2gpIHtcbiAgICAgICAgICAgIGNvbnN0IGFkZHIgPSAoYWRkck1hdGNoWzFdID8/ICcnKS50cmltKCk7XG4gICAgICAgICAgICByZXR1cm4geyBraW5kOiAnYWRkcmVzcycsIHZhbHVlOiBhZGRyIH07XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4geyBraW5kOiAndXJsJywgdmFsdWU6IHRyaW1tZWQgfTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNoZWNrRXh0ZXJuYWxMYW5ndWFnZXModmFsOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCBsYW5nID0gdGhpcy5zaXRlU3ZjLnNlbGVjdGVkTGFuZ3VhZ2VJbnN0YW50Py5sb2NhdGUudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgbGV0IGxhbmd1cmwgPSB2YWwgKyAnLycgKyBsYW5nO1xuXG4gICAgICAgIHJldHVybiBsYW5ndXJsO1xuICAgIH1cblxuICAgIHByaXZhdGUgcmVkaXJlY3RUb0hvbWVBbmNob3Ioc2VjdGlvbklkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgaW50ZXJ2YWxNcyA9IDUwO1xuICAgICAgICBsZXQgaW50ZXJ2YWxJZDogYW55O1xuICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKCcvJykudGhlbigoKSA9PiB7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBhdHRlbXB0U2Nyb2xsID0gKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBlbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoc2VjdGlvbklkKTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChpbnRlcnZhbElkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aW1lb3V0SWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zY3JvbGxUb1NlY3Rpb24oc2VjdGlvbklkKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICBpbnRlcnZhbElkID0gc2V0SW50ZXJ2YWwoYXR0ZW1wdFNjcm9sbCwgaW50ZXJ2YWxNcyk7XG5cbiAgICAgICAgICAgICAgICBjb25zdCB0aW1lb3V0SWQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChpbnRlcnZhbElkKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS53YXJuKGBTZWN0aW9uIHdpdGggSUQgJHtzZWN0aW9uSWR9IG5vdCBmb3VuZC5gKTtcbiAgICAgICAgICAgICAgICB9LCAzMDAwKTtcblxuICAgICAgICAgICAgICAgIGF0dGVtcHRTY3JvbGwoKTtcbiAgICAgICAgICAgIH0sIDMwMCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2Nyb2xsVG9TZWN0aW9uKHNlY3Rpb25JZDogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChzZWN0aW9uSWQpO1xuICAgICAgICBpZiAoZWxlbWVudCkge1xuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgeU9mZnNldCA9IC0xNjA7XG4gICAgICAgICAgICAgICAgY29uc3QgeSA9XG4gICAgICAgICAgICAgICAgICAgIGVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wICtcbiAgICAgICAgICAgICAgICAgICAgd2luZG93LnNjcm9sbFkgK1xuICAgICAgICAgICAgICAgICAgICB5T2Zmc2V0O1xuXG4gICAgICAgICAgICAgICAgd2luZG93LnNjcm9sbFRvKHsgdG9wOiB5LCBiZWhhdmlvcjogJ3Ntb290aCcgfSk7XG4gICAgICAgICAgICAgICAgdGhpcy5hbmNob3JDbGlja2VkLmVtaXQoKTtcbiAgICAgICAgICAgICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdib2R5Jyk/LmNsYXNzTGlzdC5yZW1vdmUoJ25vX3Njcm9sbCcpO1xuICAgICAgICAgICAgfSwgNTAwKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybihgU2VjdGlvbiB3aXRoIElEICR7c2VjdGlvbklkfSBub3QgZm91bmQuYCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGFwcGx5Tm9ybWFsaXplZEhyZWYoZGV0ZWN0ZWQ6IHtcbiAgICAgICAga2luZDogJ3Bob25lJyB8ICdlbWFpbCcgfCAnYWRkcmVzcycgfCAndXJsJztcbiAgICAgICAgdmFsdWU6IHN0cmluZztcbiAgICB9KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGVsID0gdGhpcy5lbFJlZi5uYXRpdmVFbGVtZW50O1xuICAgICAgICBjb25zdCBpc0FuY2hvciA9IGVsLnRhZ05hbWUudG9Mb3dlckNhc2UoKSA9PT0gJ2EnO1xuXG4gICAgICAgIGlmICghaXNBbmNob3IpIHJldHVybjtcblxuICAgICAgICBzd2l0Y2ggKGRldGVjdGVkLmtpbmQpIHtcbiAgICAgICAgICAgIGNhc2UgJ3Bob25lJzpcbiAgICAgICAgICAgICAgICBlbC5zZXRBdHRyaWJ1dGUoJ2hyZWYnLCBgdGVsOiR7ZGV0ZWN0ZWQudmFsdWV9YCk7XG4gICAgICAgICAgICAgICAgZWwucmVtb3ZlQXR0cmlidXRlKCd0YXJnZXQnKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2VtYWlsJzpcbiAgICAgICAgICAgICAgICBlbC5zZXRBdHRyaWJ1dGUoJ2hyZWYnLCBgbWFpbHRvOiR7ZGV0ZWN0ZWQudmFsdWV9YCk7XG4gICAgICAgICAgICAgICAgZWwucmVtb3ZlQXR0cmlidXRlKCd0YXJnZXQnKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2FkZHJlc3MnOlxuICAgICAgICAgICAgICAgIGVsLnNldEF0dHJpYnV0ZSgnaHJlZicsIHRoaXMuYnVpbGRNYXBzVXJsKGRldGVjdGVkLnZhbHVlKSk7XG4gICAgICAgICAgICAgICAgZWwuc2V0QXR0cmlidXRlKCd0YXJnZXQnLCAnX2JsYW5rJyk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIGlmIChlbC5jbG9zZXN0KCcuY3NfbmF2X2xpc3QnKSAmJiB0aGlzLmhhc0NvbXBsZXhMaW5rcykge1xuICAgICAgICAgICAgICAgICAgICBsZXQgbmV3dmFsdWUgPSB0aGlzLmNoZWNrRXh0ZXJuYWxMYW5ndWFnZXMoZGV0ZWN0ZWQudmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICBlbC5zZXRBdHRyaWJ1dGUoJ2hyZWYnLCBuZXd2YWx1ZSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgZWwuc2V0QXR0cmlidXRlKCdocmVmJywgZGV0ZWN0ZWQudmFsdWUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbC5zZXRBdHRyaWJ1dGUoJ3RhcmdldCcsICdfYmxhbmsnKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==
|
|
345
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGluay10eXBlLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JhYnlsb24vc3JjL2xpYi9kaXJlY3RpdmVzL2xpbmstdHlwZS9saW5rLXR5cGUuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3BELE9BQU8sRUFDSCxTQUFTLEVBRVQsWUFBWSxFQUNaLFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUNMLE1BQU0sRUFFTixNQUFNLEVBQ04sTUFBTSxFQUNOLFdBQVcsR0FDZCxNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUN2RixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUN0RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDaEUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7OztBQUt0RSxNQUFNLE9BQU8sd0JBQXdCO0lBZ0JqQyxZQUNxQixNQUFjLEVBQ2QsS0FBaUIsRUFDWSxhQUFxQjtRQUZsRCxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsVUFBSyxHQUFMLEtBQUssQ0FBWTtRQUNZLGtCQUFhLEdBQWIsYUFBYSxDQUFRO1FBZDlELHVCQUFrQixHQUFhLEtBQUssQ0FBQztRQUNwQyxrQkFBYSxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFDM0MsZUFBVSxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNqQyxvQkFBZSxHQUFHLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUMvQixZQUFPLEdBQUcsTUFBTSxDQUFDLHlCQUF5QixDQUFDLENBQUM7UUFDNUMsV0FBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FB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QUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSxZQUFZO29CQUN0QixVQUFVLEVBQUUsSUFBSTtpQkFDbkI7OzBCQW9CUSxNQUFNOzJCQUFDLG1CQUFtQjt5Q0FsQnRCLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBQ0ksYUFBYTtzQkFBdEIsTUFBTTtnQkEwQ1AsUUFBUTtzQkFEUCxZQUFZO3VCQUFDLE9BQU8sRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGlzUGxhdGZvcm1Ccm93c2VyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gICAgRGlyZWN0aXZlLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIEhvc3RMaXN0ZW5lcixcbiAgICBpbmplY3QsXG4gICAgSW5wdXQsXG4gICAgTmdab25lLFxuICAgIE9uQ2hhbmdlcyxcbiAgICBPdXRwdXQsXG4gICAgSW5qZWN0LFxuICAgIFBMQVRGT1JNX0lELFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBTSVRFX0NPTkZJR19TRVJWSUNFX1RPS0VOIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvbWFwcGVyL21hcHBlci5zZXJ2aWNlLnRva2VuJztcbmltcG9ydCB7IFNDUk9MTF9PRkZTRVRfVE9LRU4gfSBmcm9tICcuLi8uLi91dGlscy9zY3JvbGwtY29uZmlnLnRva2VuJztcbmltcG9ydCB7IGNvbXBsZXhfbGlua3MgfSBmcm9tICcuLi8uLi91dGlscy9jb21wbGV4LWxpbmtzLnRva2VuJztcbmltcG9ydCB7IFV0aWxzTGlua0RpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL3V0aWxzL3V0aWxzLWxpbmstZGlyZWN0aXZlJztcbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW2xpbmtUeXBlXScsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgQmFieWxvbkxpbmtUeXBlRGlyZWN0aXZlIGltcGxlbWVudHMgT25DaGFuZ2VzIHtcbiAgICBASW5wdXQoKSBsaW5rVHlwZT86IHN0cmluZztcbiAgICBASW5wdXQoKSBocmVmPzogc3RyaW5nO1xuICAgIEBJbnB1dCgpIG1vZGFsQ2xpY2s/OiBFdmVudEVtaXR0ZXI8c3RyaW5nPjtcbiAgICBASW5wdXQoKSBjbGlja1BvcHVwPzogRXZlbnRFbWl0dGVyPHN0cmluZz47XG4gICAgQElucHV0KCkgZGlzYWJsZVBvaW50ZXJOb25lPzogYm9vbGVhbiA9IGZhbHNlO1xuICAgIEBPdXRwdXQoKSBhbmNob3JDbGlja2VkID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICAgIHByaXZhdGUgcGxhdGZvcm1JZCA9IGluamVjdChQTEFURk9STV9JRCk7XG4gICAgcHJpdmF0ZSBoYXNDb21wbGV4TGlua3MgPSBpbmplY3QoY29tcGxleF9saW5rcyk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBzaXRlU3ZjID0gaW5qZWN0KFNJVEVfQ09ORklHX1NFUlZJQ0VfVE9LRU4pO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgbmdab25lID0gaW5qZWN0KE5nWm9uZSk7XG5cbiAgICBwcml2YXRlIHJlYWRvbmx5IFBIT05FX1JFID0gL15UXFxzKls6XFwtXT9cXHMqKC4rKSQvaTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IE1BSUxUT19SRSA9IC9ebWFpbHRvOi9pO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgQUREUkVTU19SRSA9IC9eY1xcL1xcLj8oLiopJC9pO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgcm91dGVyOiBSb3V0ZXIsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgZWxSZWY6IEVsZW1lbnRSZWYsXG4gICAgICAgIEBJbmplY3QoU0NST0xMX09GRlNFVF9UT0tFTikgcHJpdmF0ZSByZWFkb25seSBkZWZhdWx0T2Zmc2V0OiBudW1iZXJcbiAgICApIHt9XG4gICAgbmdPbkNoYW5nZXMoKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5saW5rVHlwZSB8fCAhdGhpcy5ocmVmKSB7XG4gICAgICAgICAgICB0aGlzLmhhbmRsZU5vTGluaygpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGVsID0gdGhpcy5lbFJlZi5uYXRpdmVFbGVtZW50O1xuICAgICAgICBjb25zdCBpc0FuY2hvciA9IGVsLnRhZ05hbWUudG9Mb3dlckNhc2UoKSA9PT0gJ2EnO1xuXG4gICAgICAgIC8vIFNPTE8gYXBsaWNhbW9zIGF0cmlidXRvcyBIVE1MIGRlIGVubGFjZXMgc2kgZXMgdW5hIGV0aXF1ZXRhIDxhPlxuICAgICAgICBpZiAoaXNBbmNob3IpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmlzRXh0ZXJuYWxUeXBlKHRoaXMubGlua1R5cGUpKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZGV0ZWN0ZWQgPSB0aGlzLmRldGVjdEV4dGVybmFsS2luZCh0aGlzLmhyZWYpO1xuICAgICAgICAgICAgICAgIHRoaXMuYXBwbHlOb3JtYWxpemVkSHJlZihkZXRlY3RlZCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGVsLnNldEF0dHJpYnV0ZSgnaHJlZicsIHRoaXMuaHJlZik7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICB0aGlzLmxpbmtUeXBlID09PSAnZXh0ZXJuYWwnIHx8XG4gICAgICAgICAgICAgICAgdGhpcy5saW5rVHlwZSA9PT0gJ2V4dGVybmFsX2xpbmsnXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICBlbC5zZXRBdHRyaWJ1dGUoJ3JlbCcsICdub2ZvbGxvdycpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgQEhvc3RMaXN0ZW5lcignY2xpY2snLCBbJyRldmVudCddKVxuICAgIGJ0bkNsaWNrKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMubGlua1R5cGUgfHwgIXRoaXMuaHJlZikge1xuICAgICAgICAgICAgdGhpcy5oYW5kbGVOb0xpbmsoKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghdGhpcy5saW5rVHlwZSkge1xuICAgICAgICAgICAgY29uc29sZS53YXJuKCdsaW5rVHlwZSBpcyBtaXNzaW5nLicpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcblxuICAgICAgICBzd2l0Y2ggKHRoaXMubGlua1R5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgJ2ludGVybmFsJzpcbiAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZUludGVybmFsTGluayh0aGlzLmhyZWYpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBjYXNlICdpbnRlcm5hbF9saW5rJzpcbiAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZUludGVybmFsTGluayh0aGlzLmhyZWYpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBjYXNlICdzZWxmX2xpbmsnOlxuICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlSW50ZXJuYWxMaW5rKHRoaXMuaHJlZik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGNhc2UgJ2ludGVybmFsX2hvdGVsX2xpbmsnOlxuICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlSW50ZXJuYWxMaW5rKHRoaXMuaHJlZik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGNhc2UgJ2V4dGVybmFsJzpcbiAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZUV4dGVybmFsTGluayh0aGlzLmhyZWYpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBjYXNlICdleHRlcm5hbF9saW5rJzpcbiAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZUV4dGVybmFsTGluayh0aGlzLmhyZWYpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBjYXNlICdhbmNob3InOlxuICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlQW5jaG9yTGluayh0aGlzLmhyZWYpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBjYXNlICdhbmNob3JfbGluayc6XG4gICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVBbmNob3JMaW5rKHRoaXMuaHJlZik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGNhc2UgJ2FuY2hvcl9zdWJtZW51JzpcbiAgICAgICAgICAgICAgICBVdGlsc0xpbmtEaXJlY3RpdmUubmF2aWdhdGVBbmRTY3JvbGxUb0FuY2hvcih0aGlzLnJvdXRlciwgdGhpcy5ocmVmLCB0aGlzLmRlZmF1bHRPZmZzZXQsICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hbmNob3JDbGlja2VkLmVtaXQoKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgY2FzZSAncGRmX2xpbmsnOlxuICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlUGRmTGluayh0aGlzLmhyZWYpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBjYXNlICdub2xpbmsnOlxuICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlTm9MaW5rKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGNhc2UgJ2NvbXBvbmVudCc6XG4gICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVDb21wb25lbnRMaW5rKHRoaXMuaHJlZik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGNhc2UgJ2NvbXBvbmVudF9saW5rJzpcbiAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZUNvbXBvbmVudExpbmsodGhpcy5ocmVmKTtcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oYFVuc3VwcG9ydGVkIGxpbmtUeXBlOiAke3RoaXMubGlua1R5cGV9YCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGhhbmRsZUludGVybmFsTGluayh1cmw6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICBjb25zdCBjbGVhbmVkVXJsID0gdXJsLnRyaW0oKS5yZXBsYWNlKC9cXC8rJC8sICcnKTtcbiAgICAgICAgY29uc3QgdGFyZ2V0ID0gJy8nICsgY2xlYW5lZFVybDtcbiAgICAgICAgdGhpcy5hbmNob3JDbGlja2VkLmVtaXQoKTtcblxuICAgICAgICBjb25zdCBjdXJyZW50ID0gKHRoaXMucm91dGVyLnVybCB8fCAnJylcbiAgICAgICAgICAgIC5zcGxpdCgnPycpWzBdXG4gICAgICAgICAgICAucmVwbGFjZSgvXFwvKyQvLCAnJyk7XG4gICAgICAgIGNvbnN0IHRhcmdldENsZWFuID0gdGFyZ2V0LnNwbGl0KCc/JylbMF0ucmVwbGFjZSgvXFwvKyQvLCAnJyk7XG5cbiAgICAgICAgaWYgKGN1cnJlbnQgPT09IHRhcmdldENsZWFuKSByZXR1cm47XG5cbiAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCh0YXJnZXQpO1xuICAgIH1cblxuICAgIHByaXZhdGUgaGFuZGxlRXh0ZXJuYWxMaW5rKHVybDogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIGlmICghaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkgcmV0dXJuO1xuXG4gICAgICAgIGNvbnN0IGRldGVjdGVkID0gdGhpcy5kZXRlY3RFeHRlcm5hbEtpbmQodXJsKTtcbiAgICAgICAgc3dpdGNoIChkZXRlY3RlZC5raW5kKSB7XG4gICAgICAgICAgICBjYXNlICdwaG9uZSc6XG4gICAgICAgICAgICAgICAgdGhpcy5vcGVuUGhvbmUoZGV0ZWN0ZWQudmFsdWUpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnZW1haWwnOlxuICAgICAgICAgICAgICAgIHRoaXMub3BlbkVtYWlsKGRldGVjdGVkLnZhbHVlKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2FkZHJlc3MnOlxuICAgICAgICAgICAgICAgIHRoaXMub3BlbkFkZHJlc3MoZGV0ZWN0ZWQudmFsdWUpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICFkZXRlY3RlZC52YWx1ZSB8fFxuICAgICAgICAgICAgICAgICAgICBkZXRlY3RlZC52YWx1ZSA9PT0gJyMnIHx8XG4gICAgICAgICAgICAgICAgICAgIGRldGVjdGVkLnZhbHVlID09PSAnLyMnXG4gICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgICAgICAgICAgICAgICAgICdTZSBpbnRlbnTDsyBhYnJpciB1biBlbmxhY2UgZXh0ZXJubyB2YWPDrW8gbyBpbnbDoWxpZG8gKHBsYWNlaG9sZGVyKTonLFxuICAgICAgICAgICAgICAgICAgICAgICAgZGV0ZWN0ZWQudmFsdWVcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGNvbnN0IGlzQWJzb2x1dGVVcmwgPSAodXJsOiBzdHJpbmcpID0+IC9eKGh0dHBzPzopL2kudGVzdCh1cmwpO1xuXG4gICAgICAgICAgICAgICAgY29uc3QgZmluYWxVcmwgPSBpc0Fic29sdXRlVXJsKGRldGVjdGVkLnZhbHVlKVxuICAgICAgICAgICAgICAgICAgICA/IGRldGVjdGVkLnZhbHVlXG4gICAgICAgICAgICAgICAgICAgIDogJ2h0dHBzOi8vJyArIGRldGVjdGVkLnZhbHVlLnJlcGxhY2UoL15cXC8rLywgJycpO1xuXG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgd2luZG93Lm9wZW4oZmluYWxVcmwsICdfYmxhbmsnKTtcbiAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICAgICAgICAgICAgICAgICAnRXJyb3IgYWJyaWVuZG8gdmVudGFuYSBleHRlcm5hIGNvbiBVUkw6JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbmFsVXJsLFxuICAgICAgICAgICAgICAgICAgICAgICAgZVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgaGFuZGxlUGRmTGluayh1cmw6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICBpZiAoaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkge1xuICAgICAgICAgICAgd2luZG93Lm9wZW4odXJsLCAnX2JsYW5rJyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGhhbmRsZUFuY2hvckxpbmsoc2VjdGlvbklkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgaWYgKGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkpIHtcbiAgICAgICAgICAgIC8vIFBlcm1pdGlyIHF1ZSBzZWN0aW9uSWQgc2VhIHVuYSBVUkwgY29tcGxldGEgY29uIGhhc2hcbiAgICAgICAgICAgIGxldCBpZCA9IHNlY3Rpb25JZDtcbiAgICAgICAgICAgIGlmIChzZWN0aW9uSWQuaW5jbHVkZXMoJyMnKSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGhhc2hJbmRleCA9IHNlY3Rpb25JZC5sYXN0SW5kZXhPZignIycpO1xuICAgICAgICAgICAgICAgIGlkID0gc2VjdGlvbklkLnN1YnN0cmluZyhoYXNoSW5kZXggKyAxKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGxhbmcgPSB0aGlzLnNpdGVTdmMuc2VsZWN0ZWRMYW5ndWFnZUluc3RhbnQ/LmxvY2F0ZS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgaWYgKHRoaXMuaGFzQ29tcGxleExpbmtzICYmIHRoaXMucm91dGVyLnVybCAhPT0gYC8ke2xhbmd9YCkge1xuICAgICAgICAgICAgICAgIHRoaXMucmVkaXJlY3RUb0hvbWVBbmNob3IoaWQpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zdCBlbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWQpO1xuICAgICAgICAgICAgICAgIGlmIChlbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50b3AgK1xuICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93LnNjcm9sbFkgK1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5kZWZhdWx0T2Zmc2V0O1xuICAgICAgICAgICAgICAgICAgICB3aW5kb3cuc2Nyb2xsVG8oeyB0b3A6IHksIGJlaGF2aW9yOiAnc21vb3RoJyB9KTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hbmNob3JDbGlja2VkLmVtaXQoKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oYFNlY3Rpb24gd2l0aCBJRCAke3NlY3Rpb25JZH0gbm90IGZvdW5kLmApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgaGFuZGxlQ29tcG9uZW50TGluayh1cmw6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICBjb25zdCBjbGVhbmVkQ29tcG9uZW50TmFtZSA9IHVybC50cmltKCkudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgaWYgKHRoaXMubW9kYWxDbGljaykge1xuICAgICAgICAgICAgdGhpcy5tb2RhbENsaWNrLmVtaXQoY2xlYW5lZENvbXBvbmVudE5hbWUpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmNsaWNrUG9wdXApIHtcbiAgICAgICAgICAgIHRoaXMuY2xpY2tQb3B1cC5lbWl0KGNsZWFuZWRDb21wb25lbnROYW1lKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgaGFuZGxlTm9MaW5rKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBwYXJlbnRMaSA9IHRoaXMuZWxSZWYubmF0aXZlRWxlbWVudC5jbG9zZXN0KCdsaScpO1xuXG4gICAgICAgIGNvbnN0IGlzSW5zaWRlTWVudUl0ZW1XaXRoQ2hpbGRyZW4gPSBwYXJlbnRMaT8uY2xhc3NMaXN0LmNvbnRhaW5zKFxuICAgICAgICAgICAgJ21lbnUtaXRlbS1oYXMtY2hpbGRyZW4nXG4gICAgICAgICk7XG5cbiAgICAgICAgaWYgKCFpc0luc2lkZU1lbnVJdGVtV2l0aENoaWxkcmVuKSB7XG4gICAgICAgICAgICBpZiAoIXRoaXMuZGlzYWJsZVBvaW50ZXJOb25lKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5lbFJlZi5uYXRpdmVFbGVtZW50LnJlbW92ZUF0dHJpYnV0ZSgnaHJlZicpO1xuICAgICAgICAgICAgICAgIHRoaXMuZWxSZWYubmF0aXZlRWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUoJ1tocmVmXScpO1xuICAgICAgICAgICAgICAgIHRoaXMuZWxSZWYubmF0aXZlRWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2FyaWEtZGlzYWJsZWQnLCAndHJ1ZScpO1xuICAgICAgICAgICAgICAgIHRoaXMuZWxSZWYubmF0aXZlRWxlbWVudC5zZXRBdHRyaWJ1dGUoJ3RhYmluZGV4JywgJy0xJyk7XG4gICAgICAgICAgICAgICAgdGhpcy5lbFJlZi5uYXRpdmVFbGVtZW50LnN0eWxlLmN1cnNvciA9ICdkZWZhdWx0JztcbiAgICAgICAgICAgICAgICB0aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnQuc3R5bGUucG9pbnRlckV2ZW50cyA9ICdub25lJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgb3BlblBob25lKG51bTogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gYHRlbDoke251bX1gO1xuICAgIH1cblxuICAgIHByaXZhdGUgb3BlbkVtYWlsKGVtYWlsOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSBgbWFpbHRvOiR7ZW1haWx9YDtcbiAgICB9XG5cbiAgICBwcml2YXRlIG9wZW5BZGRyZXNzKGFkZHJlc3M6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICBjb25zdCBtYXBzVXJsID0gdGhpcy5idWlsZE1hcHNVcmwoYWRkcmVzcyk7XG4gICAgICAgIHdpbmRvdy5vcGVuKG1hcHNVcmwsICdfYmxhbmsnKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGJ1aWxkTWFwc1VybChhZGRyZXNzOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gYGh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vbWFwcy9zZWFyY2gvP2FwaT0xJnF1ZXJ5PSR7ZW5jb2RlVVJJQ29tcG9uZW50KGFkZHJlc3MpfWA7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc0V4dGVybmFsVHlwZSh0Pzogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0ID09PSAnZXh0ZXJuYWwnIHx8IHQgPT09ICdleHRlcm5hbF9saW5rJztcbiAgICB9XG5cbiAgICBwcml2YXRlIGRldGVjdEV4dGVybmFsS2luZChyYXc6IHN0cmluZyk6IHtcbiAgICAgICAga2luZDogJ3Bob25lJyB8ICdlbWFpbCcgfCAnYWRkcmVzcycgfCAndXJsJztcbiAgICAgICAgdmFsdWU6IHN0cmluZztcbiAgICB9IHtcbiAgICAgICAgY29uc3QgdHJpbW1lZCA9IChyYXcgfHwgJycpLnRyaW0oKTtcblxuICAgICAgICBpZiAodGhpcy5NQUlMVE9fUkUudGVzdCh0cmltbWVkKSkge1xuICAgICAgICAgICAgY29uc3QgZW1haWwgPSB0cmltbWVkLnJlcGxhY2UoL15tYWlsdG86L2ksICcnKTtcbiAgICAgICAgICAgIHJldHVybiB7IGtpbmQ6ICdlbWFpbCcsIHZhbHVlOiBlbWFpbCB9O1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuUEhPTkVfUkUudGVzdCh0cmltbWVkKSkge1xuICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSB0aGlzLlBIT05FX1JFLmV4ZWModHJpbW1lZCk7XG4gICAgICAgICAgICBjb25zdCBudW1SYXcgPSAobWF0Y2g/LlsxXSA/PyAnJykudHJpbSgpO1xuICAgICAgICAgICAgY29uc3QgZGlnaXRzID0gbnVtUmF3LnJlcGxhY2UoL1teXFxkK10vZywgJycpO1xuICAgICAgICAgICAgcmV0dXJuIHsga2luZDogJ3Bob25lJywgdmFsdWU6IGRpZ2l0cyB9O1xuICAgICAgICB9XG4gICAgICAgIGlmICgvXnRlbDovaS50ZXN0KHRyaW1tZWQpKSB7XG4gICAgICAgICAgICBjb25zdCBudW0gPSB0cmltbWVkLnJlcGxhY2UoL150ZWw6L2ksICcnKS5yZXBsYWNlKC9bXlxcZCtdL2csICcnKTtcbiAgICAgICAgICAgIHJldHVybiB7IGtpbmQ6ICdwaG9uZScsIHZhbHVlOiBudW0gfTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGFkZHJNYXRjaCA9IHRoaXMuQUREUkVTU19SRS5leGVjKHRyaW1tZWQpO1xuICAgICAgICBpZiAoYWRkck1hdGNoKSB7XG4gICAgICAgICAgICBjb25zdCBhZGRyID0gKGFkZHJNYXRjaFsxXSA/PyAnJykudHJpbSgpO1xuICAgICAgICAgICAgcmV0dXJuIHsga2luZDogJ2FkZHJlc3MnLCB2YWx1ZTogYWRkciB9O1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHsga2luZDogJ3VybCcsIHZhbHVlOiB0cmltbWVkIH07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjaGVja0V4dGVybmFsTGFuZ3VhZ2VzKHZhbDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgY29uc3QgbGFuZyA9IHRoaXMuc2l0ZVN2Yy5zZWxlY3RlZExhbmd1YWdlSW5zdGFudD8ubG9jYXRlLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgIGxldCBsYW5ndXJsID0gdmFsICsgJy8nICsgbGFuZztcblxuICAgICAgICByZXR1cm4gbGFuZ3VybDtcbiAgICB9XG5cbiAgICBwcml2YXRlIHJlZGlyZWN0VG9Ib21lQW5jaG9yKHNlY3Rpb25JZDogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGludGVydmFsTXMgPSA1MDtcbiAgICAgICAgbGV0IGludGVydmFsSWQ6IGFueTtcbiAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCgnLycpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgYXR0ZW1wdFNjcm9sbCA9ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHNlY3Rpb25JZCk7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoaW50ZXJ2YWxJZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjbGVhclRpbWVvdXQodGltZW91dElkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2Nyb2xsVG9TZWN0aW9uKHNlY3Rpb25JZCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgaW50ZXJ2YWxJZCA9IHNldEludGVydmFsKGF0dGVtcHRTY3JvbGwsIGludGVydmFsTXMpO1xuXG4gICAgICAgICAgICAgICAgY29uc3QgdGltZW91dElkID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoaW50ZXJ2YWxJZCk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybihgU2VjdGlvbiB3aXRoIElEICR7c2VjdGlvbklkfSBub3QgZm91bmQuYCk7XG4gICAgICAgICAgICAgICAgfSwgMzAwMCk7XG5cbiAgICAgICAgICAgICAgICBhdHRlbXB0U2Nyb2xsKCk7XG4gICAgICAgICAgICB9LCAzMDApO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNjcm9sbFRvU2VjdGlvbihzZWN0aW9uSWQ6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICBjb25zdCBlbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoc2VjdGlvbklkKTtcbiAgICAgICAgaWYgKGVsZW1lbnQpIHtcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHlPZmZzZXQgPSAtMTYwO1xuICAgICAgICAgICAgICAgIGNvbnN0IHkgPVxuICAgICAgICAgICAgICAgICAgICBlbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcCArXG4gICAgICAgICAgICAgICAgICAgIHdpbmRvdy5zY3JvbGxZICtcbiAgICAgICAgICAgICAgICAgICAgeU9mZnNldDtcblxuICAgICAgICAgICAgICAgIHdpbmRvdy5zY3JvbGxUbyh7IHRvcDogeSwgYmVoYXZpb3I6ICdzbW9vdGgnIH0pO1xuICAgICAgICAgICAgICAgIHRoaXMuYW5jaG9yQ2xpY2tlZC5lbWl0KCk7XG4gICAgICAgICAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcignYm9keScpPy5jbGFzc0xpc3QucmVtb3ZlKCdub19zY3JvbGwnKTtcbiAgICAgICAgICAgIH0sIDUwMCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oYFNlY3Rpb24gd2l0aCBJRCAke3NlY3Rpb25JZH0gbm90IGZvdW5kLmApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhcHBseU5vcm1hbGl6ZWRIcmVmKGRldGVjdGVkOiB7XG4gICAgICAgIGtpbmQ6ICdwaG9uZScgfCAnZW1haWwnIHwgJ2FkZHJlc3MnIHwgJ3VybCc7XG4gICAgICAgIHZhbHVlOiBzdHJpbmc7XG4gICAgfSk6IHZvaWQge1xuICAgICAgICBjb25zdCBlbCA9IHRoaXMuZWxSZWYubmF0aXZlRWxlbWVudDtcbiAgICAgICAgY29uc3QgaXNBbmNob3IgPSBlbC50YWdOYW1lLnRvTG93ZXJDYXNlKCkgPT09ICdhJztcblxuICAgICAgICBpZiAoIWlzQW5jaG9yKSByZXR1cm47XG5cbiAgICAgICAgc3dpdGNoIChkZXRlY3RlZC5raW5kKSB7XG4gICAgICAgICAgICBjYXNlICdwaG9uZSc6XG4gICAgICAgICAgICAgICAgZWwuc2V0QXR0cmlidXRlKCdocmVmJywgYHRlbDoke2RldGVjdGVkLnZhbHVlfWApO1xuICAgICAgICAgICAgICAgIGVsLnJlbW92ZUF0dHJpYnV0ZSgndGFyZ2V0Jyk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdlbWFpbCc6XG4gICAgICAgICAgICAgICAgZWwuc2V0QXR0cmlidXRlKCdocmVmJywgYG1haWx0bzoke2RldGVjdGVkLnZhbHVlfWApO1xuICAgICAgICAgICAgICAgIGVsLnJlbW92ZUF0dHJpYnV0ZSgndGFyZ2V0Jyk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdhZGRyZXNzJzpcbiAgICAgICAgICAgICAgICBlbC5zZXRBdHRyaWJ1dGUoJ2hyZWYnLCB0aGlzLmJ1aWxkTWFwc1VybChkZXRlY3RlZC52YWx1ZSkpO1xuICAgICAgICAgICAgICAgIGVsLnNldEF0dHJpYnV0ZSgndGFyZ2V0JywgJ19ibGFuaycpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICBpZiAoZWwuY2xvc2VzdCgnLmNzX25hdl9saXN0JykgJiYgdGhpcy5oYXNDb21wbGV4TGlua3MpIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IG5ld3ZhbHVlID0gdGhpcy5jaGVja0V4dGVybmFsTGFuZ3VhZ2VzKGRldGVjdGVkLnZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgZWwuc2V0QXR0cmlidXRlKCdocmVmJywgbmV3dmFsdWUpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGVsLnNldEF0dHJpYnV0ZSgnaHJlZicsIGRldGVjdGVkLnZhbHVlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWwuc2V0QXR0cmlidXRlKCd0YXJnZXQnLCAnX2JsYW5rJyk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=
|