ng-easycommerce 0.0.572 → 0.0.574
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/README.md +8 -0
- package/assets/ec-i18n/ct.json +2 -0
- package/assets/ec-i18n/en.json +2 -0
- package/assets/ec-i18n/es.json +2 -0
- package/assets/ec-i18n/fr.json +2 -0
- package/assets/ec-i18n/gl.json +2 -0
- package/assets/ec-i18n/pr.json +2 -0
- package/bundles/ng-easycommerce.umd.js +126 -9
- package/bundles/ng-easycommerce.umd.js.map +1 -1
- package/bundles/ng-easycommerce.umd.min.js +1 -1
- package/bundles/ng-easycommerce.umd.min.js.map +1 -1
- package/esm2015/lib/ec-component/auth-ec/register-form-ec/register-form-ec.component.js +34 -4
- package/esm2015/lib/ec-component/cart-ec/cart-ec.component.js +52 -2
- package/esm2015/lib/ec-component/widgets-ec/bancard-catastro-ec/bancard-catastro-ec.component.js +5 -2
- package/esm5/lib/ec-component/auth-ec/register-form-ec/register-form-ec.component.js +35 -4
- package/esm5/lib/ec-component/cart-ec/cart-ec.component.js +86 -2
- package/esm5/lib/ec-component/widgets-ec/bancard-catastro-ec/bancard-catastro-ec.component.js +5 -2
- package/fesm2015/ng-easycommerce.js +87 -5
- package/fesm2015/ng-easycommerce.js.map +1 -1
- package/fesm5/ng-easycommerce.js +126 -9
- package/fesm5/ng-easycommerce.js.map +1 -1
- package/lib/ec-component/auth-ec/register-form-ec/register-form-ec.component.d.ts +5 -1
- package/lib/ec-component/cart-ec/cart-ec.component.d.ts +4 -1
- package/lib/ec-component/widgets-ec/bancard-catastro-ec/bancard-catastro-ec.component.d.ts +1 -0
- package/ng-easycommerce.metadata.json +1 -1
- package/package.json +1 -1
|
@@ -11,14 +11,16 @@ import { ComponentHelper } from '../../../classes/component-helper';
|
|
|
11
11
|
import { AnalyticsService } from '../../../services/analytics.service';
|
|
12
12
|
import { AuthService } from '../../../services/auth.service';
|
|
13
13
|
import { ToastService } from '../../../utils/toast.service';
|
|
14
|
+
import { ChannelConfigService } from '../../../services/channel-config.service';
|
|
14
15
|
let RegisterFormEcComponent = class RegisterFormEcComponent extends ComponentHelper {
|
|
15
|
-
constructor(authService, toastr, router, analyticsService, formBuilder) {
|
|
16
|
+
constructor(authService, toastr, router, analyticsService, formBuilder, channelConfigService) {
|
|
16
17
|
super();
|
|
17
18
|
this.authService = authService;
|
|
18
19
|
this.toastr = toastr;
|
|
19
20
|
this.router = router;
|
|
20
21
|
this.analyticsService = analyticsService;
|
|
21
22
|
this.formBuilder = formBuilder;
|
|
23
|
+
this.channelConfigService = channelConfigService;
|
|
22
24
|
this.isLogged = true;
|
|
23
25
|
this.darkMode = false;
|
|
24
26
|
this.redirect = true;
|
|
@@ -35,6 +37,8 @@ let RegisterFormEcComponent = class RegisterFormEcComponent extends ComponentHel
|
|
|
35
37
|
newsletter: false,
|
|
36
38
|
terms: false,
|
|
37
39
|
};
|
|
40
|
+
this.isAccountVerificationRequired = false;
|
|
41
|
+
this.isSendWelcomeEmail = false;
|
|
38
42
|
this.setProp = (prop, event) => {
|
|
39
43
|
this.registroUsuario[prop] = event.target.value;
|
|
40
44
|
};
|
|
@@ -59,7 +63,18 @@ let RegisterFormEcComponent = class RegisterFormEcComponent extends ComponentHel
|
|
|
59
63
|
if (this.registerForm.valid) {
|
|
60
64
|
this.authService.signUp(this.registerForm.value).toPromise().then(res => {
|
|
61
65
|
this.register_loading = false;
|
|
62
|
-
|
|
66
|
+
let messageKey;
|
|
67
|
+
switch (true) {
|
|
68
|
+
case this.isAccountVerificationRequired:
|
|
69
|
+
messageKey = 'register-ok';
|
|
70
|
+
break;
|
|
71
|
+
case this.isSendWelcomeEmail:
|
|
72
|
+
messageKey = 'register-welcome';
|
|
73
|
+
break;
|
|
74
|
+
default:
|
|
75
|
+
messageKey = 'register-success';
|
|
76
|
+
}
|
|
77
|
+
this.toastr.show(messageKey);
|
|
63
78
|
this.analyticsService.callEvent('sign_up', {
|
|
64
79
|
firstName: this.registerForm.value.firstName,
|
|
65
80
|
lastName: this.registerForm.value.lastName,
|
|
@@ -97,6 +112,20 @@ let RegisterFormEcComponent = class RegisterFormEcComponent extends ComponentHel
|
|
|
97
112
|
newsletter: [false],
|
|
98
113
|
terms: ['', Validators.required],
|
|
99
114
|
});
|
|
115
|
+
this.channelConfigService.channelConfig$.subscribe((config) => {
|
|
116
|
+
if (config && config.isAccountVerificationRequired !== undefined) {
|
|
117
|
+
this.isAccountVerificationRequired = config.isAccountVerificationRequired;
|
|
118
|
+
}
|
|
119
|
+
else {
|
|
120
|
+
this.isAccountVerificationRequired = false;
|
|
121
|
+
}
|
|
122
|
+
if (config && config.isSendWelcomeEmail !== undefined) {
|
|
123
|
+
this.isSendWelcomeEmail = config.isSendWelcomeEmail;
|
|
124
|
+
}
|
|
125
|
+
else {
|
|
126
|
+
this.isSendWelcomeEmail = false;
|
|
127
|
+
}
|
|
128
|
+
});
|
|
100
129
|
this.ecOnInit();
|
|
101
130
|
}
|
|
102
131
|
};
|
|
@@ -105,7 +134,8 @@ RegisterFormEcComponent.ctorParameters = () => [
|
|
|
105
134
|
{ type: ToastService },
|
|
106
135
|
{ type: Router },
|
|
107
136
|
{ type: AnalyticsService },
|
|
108
|
-
{ type: FormBuilder }
|
|
137
|
+
{ type: FormBuilder },
|
|
138
|
+
{ type: ChannelConfigService }
|
|
109
139
|
];
|
|
110
140
|
__decorate([
|
|
111
141
|
Input()
|
|
@@ -127,4 +157,4 @@ RegisterFormEcComponent = __decorate([
|
|
|
127
157
|
})
|
|
128
158
|
], RegisterFormEcComponent);
|
|
129
159
|
export { RegisterFormEcComponent };
|
|
130
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVnaXN0ZXItZm9ybS1lYy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZy1lYXN5Y29tbWVyY2UvIiwic291cmNlcyI6WyJsaWIvZWMtY29tcG9uZW50L2F1dGgtZWMvcmVnaXN0ZXItZm9ybS1lYy9yZWdpc3Rlci1mb3JtLWVjLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9FLE9BQU8sRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDcEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDdkUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQzdELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQU81RCxJQUFhLHVCQUF1QixHQUFwQyxNQUFhLHVCQUF3QixTQUFRLGVBQWU7SUFvQnhELFlBQW1CLFdBQXdCLEVBQzdCLE1BQW9CLEVBQ3ZCLE1BQWMsRUFDZCxnQkFBa0MsRUFDL0IsV0FBd0I7UUFDbEMsS0FBSyxFQUFFLENBQUM7UUFMTyxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUM3QixXQUFNLEdBQU4sTUFBTSxDQUFjO1FBQ3ZCLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQy9CLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBdkIvQixhQUFRLEdBQVksSUFBSSxDQUFDO1FBQ3ZCLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFDakIsYUFBUSxHQUFHLElBQUksQ0FB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O0FBQ2Y7SUFBVCxNQUFNLEVBQUU7c0RBQTRCO0FBTDVCLHVCQUF1QjtJQUxuQyxTQUFTLENBQUM7UUFDUCxRQUFRLEVBQUUsc0JBQXNCO1FBQ2hDLDQ5RkFBOEM7O0tBRWpELENBQUM7R0FDVyx1QkFBdUIsQ0ErRm5DO1NBL0ZZLHVCQUF1QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybUdyb3VwLCBGb3JtQnVpbGRlciwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSBcIkBhbmd1bGFyL3JvdXRlclwiO1xyXG5pbXBvcnQgeyBDb21wb25lbnRIZWxwZXIgfSBmcm9tICcuLi8uLi8uLi9jbGFzc2VzL2NvbXBvbmVudC1oZWxwZXInO1xyXG5pbXBvcnQgeyBBbmFseXRpY3NTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvYW5hbHl0aWNzLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2F1dGguc2VydmljZSc7XHJcbmltcG9ydCB7IFRvYXN0U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL3RvYXN0LnNlcnZpY2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ2FwcC1yZWdpc3Rlci1mb3JtLWVjJyxcclxuICAgIHRlbXBsYXRlVXJsOiAncmVnaXN0ZXItZm9ybS1lYy5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZVVybHM6IFsncmVnaXN0ZXItZm9ybS1lYy5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBSZWdpc3RlckZvcm1FY0NvbXBvbmVudCBleHRlbmRzIENvbXBvbmVudEhlbHBlciBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgICBwdWJsaWMgaXNMb2dnZWQ6IEJvb2xlYW4gPSB0cnVlO1xyXG4gICAgQElucHV0KCkgZGFya01vZGUgPSBmYWxzZTtcclxuICAgIEBJbnB1dCgpIHJlZGlyZWN0ID0gdHJ1ZTtcclxuICAgIEBJbnB1dCgpIGNvbXBsZXRlID0gdHJ1ZTtcclxuICAgIEBPdXRwdXQoKSByZWFkeSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICAgIHB1YmxpYyBzdWNjZXNzOiBCb29sZWFuID0gZmFsc2VcclxuICAgIHB1YmxpYyBjYW1wb3NwZXJzb25hanVyaWRpY2E6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIHB1YmxpYyByZWdpc3Rlcl9sb2FkaW5nOiBib29sZWFuO1xyXG4gICAgcHVibGljIHJlZ2lzdGVyRm9ybTogRm9ybUdyb3VwO1xyXG4gICAgcHVibGljIHJlZ2lzdHJvVXN1YXJpbzogYW55ID0ge1xyXG4gICAgICAgIGZpcnN0TmFtZTogJycsXHJcbiAgICAgICAgbGFzdE5hbWU6ICcnLFxyXG4gICAgICAgIGVtYWlsOiAnJyxcclxuICAgICAgICBwbGFpblBhc3N3b3JkOiAnJyxcclxuICAgICAgICBwbGFpblBhc3N3b3JkMjogJycsXHJcbiAgICAgICAgbmV3c2xldHRlcjogZmFsc2UsXHJcbiAgICAgICAgdGVybXM6IGZhbHNlLFxyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyBhdXRoU2VydmljZTogQXV0aFNlcnZpY2UsXHJcbiAgICAgICAgcHJvdGVjdGVkIHRvYXN0cjogVG9hc3RTZXJ2aWNlLFxyXG4gICAgICAgIHB1YmxpYyByb3V0ZXI6IFJvdXRlcixcclxuICAgICAgICBwdWJsaWMgYW5hbHl0aWNzU2VydmljZTogQW5hbHl0aWNzU2VydmljZSxcclxuICAgICAgICBwcm90ZWN0ZWQgZm9ybUJ1aWxkZXI6IEZvcm1CdWlsZGVyKSB7XHJcbiAgICAgICAgc3VwZXIoKTtcclxuICAgICAgICB0aGlzLmVjT25Db25zdHJ1Y3QoKVxyXG4gICAgfVxyXG5cclxuICAgIG5nT25Jbml0KCkge1xyXG5cclxuICAgICAgICB0aGlzLnJlZ2lzdGVyRm9ybSA9IHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXAoe1xyXG4gICAgICAgICAgICBmaXJzdE5hbWU6IFsnJywgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXHJcbiAgICAgICAgICAgIGxhc3ROYW1lOiBbJycsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxyXG4gICAgICAgICAgICBlbWFpbDogWycnLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcclxuICAgICAgICAgICAgcGxhaW5QYXNzd29yZDogWycnLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcclxuICAgICAgICAgICAgcGxhaW5QYXNzd29yZDI6IFsnJywgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXHJcbiAgICAgICAgICAgIG5ld3NsZXR0ZXI6IFtmYWxzZV0sXHJcbiAgICAgICAgICAgIHRlcm1zOiBbJycsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMuZWNPbkluaXQoKVxyXG5cclxuICAgIH1cclxuXHJcbiAgICBzZXRQcm9wID0gKHByb3AsIGV2ZW50KSA9PiB7XHJcbiAgICAgICAgdGhpcy5yZWdpc3Ryb1VzdWFyaW9bcHJvcF0gPSBldmVudC50YXJnZXQudmFsdWU7XHJcbiAgICB9XHJcbiAgICByZWRpcmVjdEhvbWUgPSAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCgnLycpXHJcbiAgICB9XHJcblxyXG4gICAgcmVnaXN0ZXIgPSAoZXZlbnQpID0+IHtcclxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgIHRoaXMucmVnaXN0ZXJfbG9hZGluZyA9IHRydWU7XHJcbiAgICAgICAgaWYgKCF0aGlzLnJlZ2lzdGVyRm9ybS52YWxpZCkge1xyXG4gICAgICAgICAgICB0aGlzLnRvYXN0ci5zaG93KCdBw7puIGhheSBjYW1wb3Mgc2luIGNvbXBsZXRhciBvIGludmFsaWRvcycpO1xyXG4gICAgICAgICAgICB0aGlzLnJlZ2lzdGVyX2xvYWRpbmcgPSBmYWxzZVxyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfTtcclxuICAgICAgICB0aGlzLnJlZ2lzdGVyX2xvYWRpbmcgPSB0cnVlO1xyXG4gICAgICAgIGlmICh0aGlzLnJlZ2lzdGVyRm9ybS52YWx1ZS5wbGFpblBhc3N3b3JkICE9IHRoaXMucmVnaXN0ZXJGb3JtLnZhbHVlLnBsYWluUGFzc3dvcmQyKSB7XHJcbiAgICAgICAgICAgIHRoaXMudG9hc3RyLnNob3coJ0xhcyBjb250cmFzZcOxYXMgbm8gY29pbmNpZGVuJyk7XHJcbiAgICAgICAgICAgIHRoaXMucmVnaXN0ZXJfbG9hZGluZyA9IGZhbHNlXHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMucmVnaXN0ZXJGb3JtLnZhbGlkKSB7XHJcbiAgICAgICAgICAgIHRoaXMuYXV0aFNlcnZpY2Uuc2lnblVwKHRoaXMucmVnaXN0ZXJGb3JtLnZhbHVlKS50b1Byb21pc2UoKS50aGVuKFxyXG4gICAgICAgICAgICAgICAgcmVzID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnJlZ2lzdGVyX2xvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRvYXN0ci5zaG93KCdyZWdpc3Rlci1vaycpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYW5hbHl0aWNzU2VydmljZS5jYWxsRXZlbnQoJ3NpZ25fdXAnLCB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpcnN0TmFtZTogdGhpcy5yZWdpc3RlckZvcm0udmFsdWUuZmlyc3ROYW1lLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBsYXN0TmFtZTogdGhpcy5yZWdpc3RlckZvcm0udmFsdWUubGFzdE5hbWUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGVtYWlsOnRoaXMucmVnaXN0ZXJGb3JtLnZhbHVlLmVtYWlsXHJcbiAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnN1Y2Nlc3MgPXRydWVcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnJlYWR5LmVtaXQodHJ1ZSlcclxuICAgICAgICAgICAgICAgICAgICBpZih0aGlzLnJlZGlyZWN0KXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCgnaG9tZScpXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIGVycm9yID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnJlZ2lzdGVyX2xvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoZXJyb3Iuc3RhdHVzID09IDQwMCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRvYXN0ci5zaG93KCdFbCBlbWFpbCBpbmdyZXNhZG8geWEgc2UgZW5jdWVudHJhIHJlZ2lzdHJhZG8uJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50b2FzdHIuc2hvdygnRXJyb3IgZW4gZWwgcmVnaXN0cm8uIFZ1ZWx2YSBhIGludGVudGFybG8gbcOhcyB0YXJkZS4nKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIClcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLnRvYXN0ci5zaG93KCdpbnZhbGlkLWZvcm0nKTtcclxuICAgICAgICAgICAgdGhpcy5yZWdpc3Rlcl9sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59Il19
|
|
160
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVnaXN0ZXItZm9ybS1lYy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZy1lYXN5Y29tbWVyY2UvIiwic291cmNlcyI6WyJsaWIvZWMtY29tcG9uZW50L2F1dGgtZWMvcmVnaXN0ZXItZm9ybS1lYy9yZWdpc3Rlci1mb3JtLWVjLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9FLE9BQU8sRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDcEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDdkUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQzdELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQU9oRixJQUFhLHVCQUF1QixHQUFwQyxNQUFhLHVCQUF3QixTQUFRLGVBQWU7SUFzQnhELFlBQ1csV0FBd0IsRUFDckIsTUFBb0IsRUFDdkIsTUFBYyxFQUNkLGdCQUFrQyxFQUMvQixXQUF3QixFQUMxQixvQkFBMEM7UUFFbEQsS0FBSyxFQUFFLENBQUM7UUFQRCxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUNyQixXQUFNLEdBQU4sTUFBTSxDQUFjO1FBQ3ZCLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQy9CLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQzFCLHlCQUFvQixHQUFwQixv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Q0E2SG5DO1NBN0hZLHVCQUF1QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybUdyb3VwLCBGb3JtQnVpbGRlciwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSBcIkBhbmd1bGFyL3JvdXRlclwiO1xyXG5pbXBvcnQgeyBDb21wb25lbnRIZWxwZXIgfSBmcm9tICcuLi8uLi8uLi9jbGFzc2VzL2NvbXBvbmVudC1oZWxwZXInO1xyXG5pbXBvcnQgeyBBbmFseXRpY3NTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvYW5hbHl0aWNzLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2F1dGguc2VydmljZSc7XHJcbmltcG9ydCB7IFRvYXN0U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL3RvYXN0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDaGFubmVsQ29uZmlnU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2NoYW5uZWwtY29uZmlnLnNlcnZpY2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ2FwcC1yZWdpc3Rlci1mb3JtLWVjJyxcclxuICAgIHRlbXBsYXRlVXJsOiAncmVnaXN0ZXItZm9ybS1lYy5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZVVybHM6IFsncmVnaXN0ZXItZm9ybS1lYy5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBSZWdpc3RlckZvcm1FY0NvbXBvbmVudCBleHRlbmRzIENvbXBvbmVudEhlbHBlciBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgICBwdWJsaWMgaXNMb2dnZWQ6IEJvb2xlYW4gPSB0cnVlO1xyXG4gICAgQElucHV0KCkgZGFya01vZGUgPSBmYWxzZTtcclxuICAgIEBJbnB1dCgpIHJlZGlyZWN0ID0gdHJ1ZTtcclxuICAgIEBJbnB1dCgpIGNvbXBsZXRlID0gdHJ1ZTtcclxuICAgIEBPdXRwdXQoKSByZWFkeSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICAgIHB1YmxpYyBzdWNjZXNzOiBCb29sZWFuID0gZmFsc2VcclxuICAgIHB1YmxpYyBjYW1wb3NwZXJzb25hanVyaWRpY2E6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIHB1YmxpYyByZWdpc3Rlcl9sb2FkaW5nOiBib29sZWFuO1xyXG4gICAgcHVibGljIHJlZ2lzdGVyRm9ybTogRm9ybUdyb3VwO1xyXG4gICAgcHVibGljIHJlZ2lzdHJvVXN1YXJpbzogYW55ID0ge1xyXG4gICAgICAgIGZpcnN0TmFtZTogJycsXHJcbiAgICAgICAgbGFzdE5hbWU6ICcnLFxyXG4gICAgICAgIGVtYWlsOiAnJyxcclxuICAgICAgICBwbGFpblBhc3N3b3JkOiAnJyxcclxuICAgICAgICBwbGFpblBhc3N3b3JkMjogJycsXHJcbiAgICAgICAgbmV3c2xldHRlcjogZmFsc2UsXHJcbiAgICAgICAgdGVybXM6IGZhbHNlLFxyXG4gICAgfTtcclxuICAgIHB1YmxpYyBpc0FjY291bnRWZXJpZmljYXRpb25SZXF1aXJlZCA9IGZhbHNlO1xyXG4gICAgcHVibGljIGlzU2VuZFdlbGNvbWVFbWFpbCA9IGZhbHNlO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIHB1YmxpYyBhdXRoU2VydmljZTogQXV0aFNlcnZpY2UsXHJcbiAgICAgICAgcHJvdGVjdGVkIHRvYXN0cjogVG9hc3RTZXJ2aWNlLFxyXG4gICAgICAgIHB1YmxpYyByb3V0ZXI6IFJvdXRlcixcclxuICAgICAgICBwdWJsaWMgYW5hbHl0aWNzU2VydmljZTogQW5hbHl0aWNzU2VydmljZSxcclxuICAgICAgICBwcm90ZWN0ZWQgZm9ybUJ1aWxkZXI6IEZvcm1CdWlsZGVyLFxyXG4gICAgICAgIHByaXZhdGUgY2hhbm5lbENvbmZpZ1NlcnZpY2U6IENoYW5uZWxDb25maWdTZXJ2aWNlXHJcbiAgICApIHtcclxuICAgICAgICBzdXBlcigpO1xyXG4gICAgICAgIHRoaXMuZWNPbkNvbnN0cnVjdCgpXHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkluaXQoKSB7XHJcblxyXG4gICAgICAgIHRoaXMucmVnaXN0ZXJGb3JtID0gdGhpcy5mb3JtQnVpbGRlci5ncm91cCh7XHJcbiAgICAgICAgICAgIGZpcnN0TmFtZTogWycnLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcclxuICAgICAgICAgICAgbGFzdE5hbWU6IFsnJywgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXHJcbiAgICAgICAgICAgIGVtYWlsOiBbJycsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxyXG4gICAgICAgICAgICBwbGFpblBhc3N3b3JkOiBbJycsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxyXG4gICAgICAgICAgICBwbGFpblBhc3N3b3JkMjogWycnLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcclxuICAgICAgICAgICAgbmV3c2xldHRlcjogW2ZhbHNlXSxcclxuICAgICAgICAgICAgdGVybXM6IFsnJywgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5jaGFubmVsQ29uZmlnU2VydmljZS5jaGFubmVsQ29uZmlnJC5zdWJzY3JpYmUoXHJcbiAgICAgICAgICAgIChjb25maWcpID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChjb25maWcgJiYgY29uZmlnLmlzQWNjb3VudFZlcmlmaWNhdGlvblJlcXVpcmVkICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmlzQWNjb3VudFZlcmlmaWNhdGlvblJlcXVpcmVkID0gY29uZmlnLmlzQWNjb3VudFZlcmlmaWNhdGlvblJlcXVpcmVkO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmlzQWNjb3VudFZlcmlmaWNhdGlvblJlcXVpcmVkID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAoY29uZmlnICYmIGNvbmZpZy5pc1NlbmRXZWxjb21lRW1haWwgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaXNTZW5kV2VsY29tZUVtYWlsID0gY29uZmlnLmlzU2VuZFdlbGNvbWVFbWFpbDtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pc1NlbmRXZWxjb21lRW1haWwgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSxcclxuICAgICAgICApO1xyXG4gICAgICAgIHRoaXMuZWNPbkluaXQoKVxyXG5cclxuICAgIH1cclxuXHJcbiAgICBzZXRQcm9wID0gKHByb3AsIGV2ZW50KSA9PiB7XHJcbiAgICAgICAgdGhpcy5yZWdpc3Ryb1VzdWFyaW9bcHJvcF0gPSBldmVudC50YXJnZXQudmFsdWU7XHJcbiAgICB9XHJcbiAgICByZWRpcmVjdEhvbWUgPSAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCgnLycpXHJcbiAgICB9XHJcblxyXG4gICAgcmVnaXN0ZXIgPSAoZXZlbnQpID0+IHtcclxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgIHRoaXMucmVnaXN0ZXJfbG9hZGluZyA9IHRydWU7XHJcbiAgICAgICAgaWYgKCF0aGlzLnJlZ2lzdGVyRm9ybS52YWxpZCkge1xyXG4gICAgICAgICAgICB0aGlzLnRvYXN0ci5zaG93KCdBw7puIGhheSBjYW1wb3Mgc2luIGNvbXBsZXRhciBvIGludmFsaWRvcycpO1xyXG4gICAgICAgICAgICB0aGlzLnJlZ2lzdGVyX2xvYWRpbmcgPSBmYWxzZVxyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfTtcclxuICAgICAgICB0aGlzLnJlZ2lzdGVyX2xvYWRpbmcgPSB0cnVlO1xyXG4gICAgICAgIGlmICh0aGlzLnJlZ2lzdGVyRm9ybS52YWx1ZS5wbGFpblBhc3N3b3JkICE9IHRoaXMucmVnaXN0ZXJGb3JtLnZhbHVlLnBsYWluUGFzc3dvcmQyKSB7XHJcbiAgICAgICAgICAgIHRoaXMudG9hc3RyLnNob3coJ0xhcyBjb250cmFzZcOxYXMgbm8gY29pbmNpZGVuJyk7XHJcbiAgICAgICAgICAgIHRoaXMucmVnaXN0ZXJfbG9hZGluZyA9IGZhbHNlXHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMucmVnaXN0ZXJGb3JtLnZhbGlkKSB7XHJcbiAgICAgICAgICAgIHRoaXMuYXV0aFNlcnZpY2Uuc2lnblVwKHRoaXMucmVnaXN0ZXJGb3JtLnZhbHVlKS50b1Byb21pc2UoKS50aGVuKFxyXG4gICAgICAgICAgICAgICAgcmVzID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnJlZ2lzdGVyX2xvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgbWVzc2FnZUtleTogc3RyaW5nO1xyXG4gICAgICAgICAgICAgICAgICAgIHN3aXRjaCAodHJ1ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIHRoaXMuaXNBY2NvdW50VmVyaWZpY2F0aW9uUmVxdWlyZWQ6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlS2V5ID0gJ3JlZ2lzdGVyLW9rJztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIHRoaXMuaXNTZW5kV2VsY29tZUVtYWlsOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZUtleSA9ICdyZWdpc3Rlci13ZWxjb21lJztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZUtleSA9ICdyZWdpc3Rlci1zdWNjZXNzJztcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50b2FzdHIuc2hvdyhtZXNzYWdlS2V5KTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmFuYWx5dGljc1NlcnZpY2UuY2FsbEV2ZW50KCdzaWduX3VwJywge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBmaXJzdE5hbWU6IHRoaXMucmVnaXN0ZXJGb3JtLnZhbHVlLmZpcnN0TmFtZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgbGFzdE5hbWU6IHRoaXMucmVnaXN0ZXJGb3JtLnZhbHVlLmxhc3ROYW1lLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBlbWFpbDogdGhpcy5yZWdpc3RlckZvcm0udmFsdWUuZW1haWxcclxuICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc3VjY2VzcyA9IHRydWVcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnJlYWR5LmVtaXQodHJ1ZSlcclxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5yZWRpcmVjdCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKCdob21lJylcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgZXJyb3IgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmVnaXN0ZXJfbG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChlcnJvci5zdGF0dXMgPT0gNDAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudG9hc3RyLnNob3coJ0VsIGVtYWlsIGluZ3Jlc2FkbyB5YSBzZSBlbmN1ZW50cmEgcmVnaXN0cmFkby4nKTtcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRvYXN0ci5zaG93KCdFcnJvciBlbiBlbCByZWdpc3Ryby4gVnVlbHZhIGEgaW50ZW50YXJsbyBtw6FzIHRhcmRlLicpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgKVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMudG9hc3RyLnNob3coJ2ludmFsaWQtZm9ybScpO1xyXG4gICAgICAgICAgICB0aGlzLnJlZ2lzdGVyX2xvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn0iXX0=
|
|
@@ -40,6 +40,8 @@ let CartEcComponent = class CartEcComponent extends ComponentHelper {
|
|
|
40
40
|
this.promotions = [];
|
|
41
41
|
this.cargando = false;
|
|
42
42
|
this.channel = {};
|
|
43
|
+
this.updateStock = false;
|
|
44
|
+
this.exitUpdate = false;
|
|
43
45
|
this.toDecimal = (amount) => this.consts.toDecimal(amount);
|
|
44
46
|
this.actualizarCantidad = (item, cantidad, stock, id) => {
|
|
45
47
|
if (id) {
|
|
@@ -286,7 +288,55 @@ let CartEcComponent = class CartEcComponent extends ComponentHelper {
|
|
|
286
288
|
$('#' + id).modal('hide');
|
|
287
289
|
}
|
|
288
290
|
checkStock(item) {
|
|
289
|
-
|
|
291
|
+
for (const variant of item.product.variants) {
|
|
292
|
+
if (item.variant_id === variant.code) {
|
|
293
|
+
if (variant.stock === 0) {
|
|
294
|
+
this.updateStock = true;
|
|
295
|
+
return '0';
|
|
296
|
+
}
|
|
297
|
+
else if (item.quantity > variant.stock) {
|
|
298
|
+
this.updateStock = true;
|
|
299
|
+
return variant.stock;
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
return false; // Solo se ejecuta si no se cumple la condición
|
|
304
|
+
}
|
|
305
|
+
updateAllStock() {
|
|
306
|
+
const items = [];
|
|
307
|
+
// Define la suscripción antes de usarla
|
|
308
|
+
this.cartService.cartItems.subscribe(res => {
|
|
309
|
+
res.forEach(item => {
|
|
310
|
+
for (const variant of item.product.variants) {
|
|
311
|
+
if (item.variant_id === variant.code && !this.exitUpdate) {
|
|
312
|
+
if (variant.stock === 0) {
|
|
313
|
+
this.cartService.deleteCartItem(item, false); // Borra el artículo
|
|
314
|
+
}
|
|
315
|
+
else if (item.quantity > variant.stock) {
|
|
316
|
+
items.push({
|
|
317
|
+
productCode: item.product.id,
|
|
318
|
+
quantity: variant.stock,
|
|
319
|
+
variantCode: variant.code,
|
|
320
|
+
});
|
|
321
|
+
}
|
|
322
|
+
else {
|
|
323
|
+
items.push({
|
|
324
|
+
productCode: item.product.id,
|
|
325
|
+
quantity: item.quantity,
|
|
326
|
+
variantCode: variant.code,
|
|
327
|
+
});
|
|
328
|
+
}
|
|
329
|
+
}
|
|
330
|
+
}
|
|
331
|
+
});
|
|
332
|
+
if (items.length > 0 && !this.exitUpdate) {
|
|
333
|
+
// subscription.unsubscribe(); // Desuscríbete antes de actualizar
|
|
334
|
+
this.cartService.addAllToCart(items); // Actualiza el carrito
|
|
335
|
+
this.updateStock = false;
|
|
336
|
+
this.exitUpdate = true;
|
|
337
|
+
// this.updateAllStock(); // Vuelve a verificar el stock
|
|
338
|
+
}
|
|
339
|
+
});
|
|
290
340
|
}
|
|
291
341
|
createDiscountMessage(saleprice, price) {
|
|
292
342
|
if (isNaN(saleprice) || isNaN(price) || saleprice >= price || saleprice <= 0 || price <= 0) {
|
|
@@ -315,4 +365,4 @@ CartEcComponent = __decorate([
|
|
|
315
365
|
})
|
|
316
366
|
], CartEcComponent);
|
|
317
367
|
export { CartEcComponent };
|
|
318
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FydC1lYy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZy1lYXN5Y29tbWVyY2UvIiwic291cmNlcyI6WyJsaWIvZWMtY29tcG9uZW50L2NhcnQtZWMvY2FydC1lYy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBOEIsTUFBTSxlQUFlLENBQUE7QUFDckUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUVyRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDOUMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzFELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUMzRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDMUQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUV6RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQVMvRSxJQUFhLGVBQWUsR0FBNUIsTUFBYSxlQUFnQixTQUFRLGVBQWU7SUFhaEQsWUFBbUIsV0FBd0IsRUFBUyxXQUF3QixFQUFZLE1BQWlCLEVBQzlGLGVBQWdDLEVBQVMsTUFBYyxFQUFTLFlBQTRCLEVBQVksYUFBMkIsRUFBUSxpQkFBb0M7UUFDdEwsS0FBSyxFQUFFLENBQUM7UUFGTyxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUFTLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQVksV0FBTSxHQUFOLE1BQU0sQ0FBVztRQUM5RixvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7UUFBUyxXQUFNLEdBQU4sTUFBTSxDQUFRO1FB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UyxDQUFDLElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQyxJQUFJLFNBQVMsSUFBSSxLQUFLLElBQUksU0FBUyxJQUFJLENBQUMsSUFBSSxLQUFLLElBQUksQ0FBQyxFQUFFO1lBQ3ZGLE9BQU8sRUFBRSxDQUFDO1NBQ2Q7UUFFRCxJQUFJLGtCQUFrQixHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxTQUFTLENBQUMsR0FBRyxLQUFLLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQztRQUV6RSxJQUFJLGVBQWUsR0FBRyxHQUFHLGtCQUFrQixPQUFPLENBQUM7UUFDbkQsT0FBTyxlQUFlLENBQUM7SUFDM0IsQ0FBQztDQVNBLENBQUE7O1lBdlRtQyxXQUFXO1lBQXNCLFdBQVc7WUFBb0IsU0FBUztZQUM3RSxlQUFlO1lBQWlCLE1BQU07WUFBdUIsY0FBYztZQUEyQixZQUFZO1lBQTJCLGlCQUFpQjs7QUFkakwsZUFBZTtJQUwzQixTQUFTLENBQUM7UUFDUCxRQUFRLEVBQUUsYUFBYTtRQUN2QixZQUF1Qzs7S0FFMUMsQ0FBQztHQUNXLGVBQWUsQ0FvVTNCO1NBcFVZLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSW5wdXQsIFRlbXBsYXRlUmVmIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIlxyXG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tIFwiQGFuZ3VsYXIvcm91dGVyXCI7XHJcbmltcG9ydCB7IEJzTW9kYWxTZXJ2aWNlIH0gZnJvbSBcIm5neC1ib290c3RyYXAvbW9kYWxcIjtcclxuaW1wb3J0IHsgQnNNb2RhbFJlZiB9IGZyb20gJ25neC1ib290c3RyYXAvbW9kYWwvYnMtbW9kYWwtcmVmLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDb25zdGFudHMgfSBmcm9tIFwiLi4vLi4vY29yZS5jb25zdHNcIjtcclxuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9hdXRoLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBQcm9kdWN0c1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9wcm9kdWN0cy9wcm9kdWN0cy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ2FydFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9jYXJ0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDb21wb25lbnRIZWxwZXIgfSBmcm9tIFwiLi4vLi4vY2xhc3Nlcy9jb21wb25lbnQtaGVscGVyXCI7XHJcbmltcG9ydCB7IFRvYXN0U2VydmljZSB9IGZyb20gXCIuLi8uLi91dGlscy90b2FzdC5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IGludGVydmFsLCBPYnNlcnZhYmxlIH0gZnJvbSBcInJ4anNcIjtcclxuaW1wb3J0IHsgQWRkcmVzc2luZ1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9jaGVja291dC9hZGRyZXNzaW5nLnNlcnZpY2UnO1xyXG5kZWNsYXJlIHZhciAkOmFueTtcclxuXHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnYXBwLWNhcnQtZWMnLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL2NhcnQtZWMuY29tcG9uZW50Lmh0bWwnLFxyXG4gICAgc3R5bGVVcmxzOiBbJy4vY2FydC1lYy5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDYXJ0RWNDb21wb25lbnQgZXh0ZW5kcyBDb21wb25lbnRIZWxwZXIgaW1wbGVtZW50cyBPbkluaXQge1xyXG5cclxuXHJcbiAgICBwdWJsaWMgdmFyaWFudHNUb1Nob3c6IHN0cmluZ1tdID0gWydUQUxMRScsICdDT0xPUiddO1xyXG4gICAgcHVibGljIGlzTG9nZ2VkSW4gPSBmYWxzZTtcclxuICAgIHB1YmxpYyBtZWRpYVVybCA9ICcnO1xyXG4gICAgcHVibGljIG1vZGFsUmVmOiBCc01vZGFsUmVmIHwgbnVsbDtcclxuICAgIHB1YmxpYyBwcm9tb3Rpb25zID0gW107XHJcbiAgICBwdWJsaWMgaXRlbXM6IE9ic2VydmFibGU8YW55PjtcclxuICAgIHByaXZhdGUgY2FyZ2FuZG86IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIHB1YmxpYyBjaGFubmVsOiBhbnkgPSB7fTtcclxuXHJcblxyXG4gICAgY29uc3RydWN0b3IocHVibGljIGNhcnRTZXJ2aWNlOiBDYXJ0U2VydmljZSwgcHVibGljIGF1dGhTZXJ2aWNlOiBBdXRoU2VydmljZSwgcHJvdGVjdGVkIGNvbnN0czogQ29uc3RhbnRzLFxyXG4gICAgICAgIHB1YmxpYyBwcm9kdWN0c1NlcnZpY2U6IFByb2R1Y3RzU2VydmljZSwgcHVibGljIHJvdXRlcjogUm91dGVyLCBwdWJsaWMgbW9kYWxTZXJ2aWNlOiBCc01vZGFsU2VydmljZSwgcHJvdGVjdGVkIHRvYXN0clNlcnZpY2U6IFRvYXN0U2VydmljZSxwdWJsaWMgYWRkcmVzc2luZ1NlcnZpY2U6IEFkZHJlc3NpbmdTZXJ2aWNlKSB7XHJcbiAgICAgICAgc3VwZXIoKTtcclxuICAgICAgICB0aGlzLmVjT25Db25zdHJ1Y3QoKVxyXG4gICAgICAgIHRoaXMuaXNMb2dnZWRJbiA9IHRoaXMuYXV0aFNlcnZpY2UuaXNBdXRoZW50aWNhdGVkKCk7XHJcbiAgICAgICAgdGhpcy5tZWRpYVVybCA9IHRoaXMuY29uc3RzLm1lZGlhVXJsKCk7XHJcblxyXG4gICAgfVxyXG5cclxuXHJcbiAgICBuZ09uQ2hhbmdlcygpIHtcclxuICAgICAgICB0aGlzLmlzTG9nZ2VkSW4gPSB0aGlzLmF1dGhTZXJ2aWNlLmlzQXV0aGVudGljYXRlZCgpO1xyXG4gICAgfVxyXG5cclxuICAgIHVwZGF0ZUxvZ2dlZEluKCkge1xyXG4gICAgICAgIHRoaXMuaXNMb2dnZWRJbiA9IHRoaXMuYXV0aFNlcnZpY2UuaXNBdXRoZW50aWNhdGVkKCk7XHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkluaXQoKSB7XHJcbiAgICAgICAgd2luZG93LnNjcm9sbCgwLCAwKTtcclxuICAgICAgICB0aGlzLmNhcnRTZXJ2aWNlLnByb21vdGlvbnMuc3Vic2NyaWJlKHByb21vdGlvbnMgPT4gdGhpcy5wcm9tb3Rpb25zID0gcHJvbW90aW9ucyk7XHJcbiAgICAgLy8gICAgY29uc29sZS5sb2codGhpcy5jYXJ0U2VydmljZS5nZXRUYXhlcygpKTtcclxuICAgICAgICB0aGlzLmVjT25Jbml0KClcclxuXHJcbiAgICB9XHJcblxyXG4gICAgdG9EZWNpbWFsID0gKGFtb3VudCkgPT4gdGhpcy5jb25zdHMudG9EZWNpbWFsKGFtb3VudCk7XHJcblxyXG4gICAgYWN0dWFsaXphckNhbnRpZGFkID0gKGl0ZW0sIGNhbnRpZGFkLCBzdG9jaywgaWQ/KSA9PiB7XHJcbiAgICAgICAgaWYgKGlkKXtcclxuICAgICAgICAgICAgKDxIVE1MSW5wdXRFbGVtZW50PiBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZCkpLmRpc2FibGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgY2FudGlkYWQgPiAwICYmIGNhbnRpZGFkIDw9IHN0b2NrID8gdGhpcy5jYXJ0U2VydmljZS51cGRhdGVJdGVtUXVhbnRpdHkoaXRlbSwgY2FudGlkYWQpIDogdGhpcy50b2FzdHJTZXJ2aWNlLnNob3coJ291dC1vZi1zdG9jay1hY3R1YWxseScpO1xyXG4gICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7KDxIVE1MSW5wdXRFbGVtZW50PiBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZCkpLmRpc2FibGVkID0gZmFsc2U7fSwgMTAwMCk7XHJcbiAgICAgICAgfSBlbHNle1xyXG4gICAgICAgICAgICBjYW50aWRhZCA+IDAgJiYgY2FudGlkYWQgPD0gc3RvY2sgPyB0aGlzLmNhcnRTZXJ2aWNlLnVwZGF0ZUl0ZW1RdWFudGl0eShpdGVtLCBjYW50aWRhZCkgOiB0aGlzLnRvYXN0clNlcnZpY2Uuc2hvdygnb3V0LW9mLXN0b2NrLWFjdHVhbGx5Jyk7XHJcblxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZWRpcmVjdENoZWNrb3V0ID0gKCkgPT4ge1xyXG4gICAgICAgIGlmICh0aGlzLmNhcnRTZXJ2aWNlLmhhc1N1ZmZpY2llbnRDcmVkaXRzRm9yQ2FydFRvdGFsKCkpIHtcclxuICAgICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybChgL2NoZWNrb3V0YCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgY29uc29sZS53YXJuKFwiTm8gc2UgcHVlZGUgcmVkaXJpZ2lyIGFsIGNoZWNrb3V0IGRlYmlkbyBhIHVuYSB2YWxpZGFjacOzbiBmYWxsaWRhLlwiKTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG5cclxuICAgIHJlZGlyZWN0UmVnaXN0ZXIgPSAoKSA9PiB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKGAvYXV0aC9sb2dpbmApXHJcblxyXG4gICAgb3Blbk1vZGFsKHRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+KSB7XHJcbiAgICAgICAgdGhpcy5tb2RhbFJlZiA9IHRoaXMubW9kYWxTZXJ2aWNlLnNob3codGVtcGxhdGUsIHsgY2xhc3M6ICdtb2RhbC14bCcsIGtleWJvYXJkOiBmYWxzZSB9KTtcclxuICAgIH1cclxuXHJcbiAgICByZWRpcmVjdERldGFpbFByb2R1Y3QocHJvZHVjdCkge1xyXG4gICAgICAgIGxldCB2YXJpYW50ID0gcHJvZHVjdC52YXJpYW50c1swXVxyXG4gICAgICAgIGxldCBwYXRoID0gJy9wcm9kdWN0LydcclxuICAgICAgICBwYXRoICs9IHZhcmlhbnQuY29kZVxyXG4gICAgICAgIHBhdGggKz0gdmFyaWFudC5vcHRpb25zLmxlbmd0aCA/IFwiP3ZhcmlhbnQ9dHJ1ZVwiIDogXCJcIlxyXG4gICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwocGF0aClcclxuICAgIH1cclxuXHJcbiAgICBmb3JtYXREYXRlKGRhdGUpIHtcclxuICAgICB2YXIgZCA9IG5ldyBEYXRlKGRhdGUpLFxyXG4gICAgICAgICBtb250aCA9ICcnICsgKGQuZ2V0TW9udGgoKSArIDEpLFxyXG4gICAgICAgICBkYXkgPSAnJyArIGQuZ2V0RGF0ZSgpLFxyXG4gICAgICAgICB5ZWFyID0gZC5nZXRGdWxsWWVhcigpO1xyXG5cclxuICAgICBpZiAobW9udGgubGVuZ3RoIDwgMilcclxuICAgICAgICAgbW9udGggPSAnMCcgKyBtb250aDtcclxuICAgICBpZiAoZGF5Lmxlbmd0aCA8IDIpXHJcbiAgICAgICAgIGRheSA9ICcwJyArIGRheTtcclxuXHJcbiAgICAgcmV0dXJuIFt5ZWFyLCBtb250aCwgZGF5XS5qb2luKCctJyk7XHJcbiB9XHJcblxyXG4gICAgIGFzeW5jIGNhcmdhTW9kYWwoaXRlbSl7XHJcblxyXG4gICAgIC8vIE9idGllbmUgbGFzIHNlZGVzIGRlbCBjbGllbnRlXHJcbiAgICAgY29uc3Qgc2VkZXMgPSBhd2FpdCB0aGlzLmNhcnRTZXJ2aWNlLmdldEFkZHJlc3NCb29rKCk7XHJcblxyXG4gICAgIC8vIENyZW8gdW5hIHNlcmllIGRlIHZhcmlhYmxlcyBxdWUgdm95IGEgbmVjZXNpdGFyLCBpZCBwYXJhIGNvbnRyb2xhciBsYXMgdnVlbHRhcyBxdWUgZGEgeSBjdWFudGFzIGxpbmVhcyBoYXkgeSBhbGxJRCBwYXJhIGFsbWFjZW5hciBsb3MgSUQgZGUgbG9zIGxvdGVzLlxyXG4gICAgIHZhciBpZCA9IDE7XHJcbiAgICAgdmFyIHRoaXNfPXRoaXM7XHJcbiAgICAgdmFyIGFsbElEID0gIFtdO1xyXG5cclxuICAgICAvLyBBw7FhZGUgbG9zIGRhdG9zIGFsIGVuY2FiZXphZG8gZGVsIE1vZGFsXHJcbiAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2VuY2FiZXphZG9Nb2RhbCcpLmlubmVySFRNTCA9ICc8YSBjbGFzcz1cInRpdGxlIHRleHQtZGFyayB0ZXh0LWRlY29yYXRpb24tbm9uZSBoNSBkLWJsb2NrIG0tMCBwLTAgbS0wIHAtMFwiPjxwIGNsYXNzPVwibm9tYnJlIG1iLTBcIiBpZD1cInByb2R1Y3ROYW1lXCI+JysgaXRlbVsncHJvZHVjdCddWyduYW1lJ10rJzwvcD48c21hbGwgY2xhc3M9XCJ0ZXh0LXNlY29uZGFyeSBwcy0yIG1zLTFcIiBpZD1cInByb2R1Y3RSZWZcIj5SZWY6JytpdGVtWyd2YXJpYW50X2lkJ10rJzwvc21hbGw+PC9hPic7XHJcblxyXG4gICAgIC8vIEJvcnJhbW9zIHRvZG9zIGxvcyBkYXRvcyBkZSBsb3MgbG90ZXMgYW50ZXJpb3Jlc1xyXG4gICAgIHZhciBib2R5VGFibGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImxvdF9ib2R5X3RhYmxlXCIpIGFzIEhUTUxUYWJsZUVsZW1lbnQ7XHJcbiAgICAgYm9keVRhYmxlLmlubmVySFRNTD0nJztcclxuXHJcbiAgICAgLy8gUmVjb3JyZSB0b2RvcyBsb3MgYXJ0aWN1bG9zIHkgZW5jdWVudHJhIHNpIHRpZW5lbiBsb3RlcyBvIG5vLCBzaSB0aWVuZSBjcmVhIGxhcyBsaW5lYXNcclxuICAgICAgIHRoaXNfLmNhcnRTZXJ2aWNlLmdldENhcnQyKCkuZm9yRWFjaChpID0+IHtcclxuXHJcbiAgICAgICAgICAgIGlmIChpWydpdGVtX2lkJ10gPT0gaXRlbS5pdGVtX2lkICYmIGlbJ2xvdCddICE9ICcnKXtcclxuICAgICAgICAgICAgICAgICBib2R5VGFibGUuaW5uZXJIVE1MPScnO1xyXG4gICAgICAgICAgICAgICAgIGlbJ2xvdCddLmZvckVhY2gobG90ID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgIHZhciByb3cgPSBib2R5VGFibGUuaW5zZXJ0Um93KGJvZHlUYWJsZS5yb3dzLmxlbmd0aCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICB2YXIgY2VsbDEgPSByb3cuaW5zZXJ0Q2VsbCgwKTtcclxuICAgICAgICAgICAgICAgICAgICAgIHZhciBjZWxsMiA9IHJvdy5pbnNlcnRDZWxsKDEpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgdmFyIGNlbGwzID0gcm93Lmluc2VydENlbGwoMik7XHJcbiAgICAgICAgICAgICAgICAgICAgICB2YXIgY2VsbDQgPSByb3cuaW5zZXJ0Q2VsbCgzKTtcclxuICAgICAgICAgICAgICAgICAgICAgIHZhciBjZWxsNSA9IHJvdy5pbnNlcnRDZWxsKDQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgdmFyIGNlbGw2ID0gcm93Lmluc2VydENlbGwoNSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICB2YXIgZGF0ZSA9IG5ldyBEYXRlKERhdGUucGFyc2UobG90WydkYXRlX3JlcXVlc3QnXSkpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgY2VsbDEuaW5uZXJIVE1MID0gJzxpbnB1dCBpZD1cImlkJytpZCsnXCIgIHN0eWxlPVwiYm9yZGVyOiAwO1wiIHZhbHVlPVwiJytsb3QuaWQrJ1wiIGRpc2FibGVkPic7XHJcbiAgICAgICAgICAgICAgICAgICAgICBjZWxsMi5pbm5lckhUTUwgPSAnPGlucHV0IHR5cGU9XCJudW1iZXJcIiBpZD1cInF1YW50aXR5JytpZCsnXCIgdmFsdWU9IFwiJysgbG90LnF1YW50aXR5ICsnXCJjbGFzcz1cImZvcm0tY29udHJvbCB3LTUwXCIgbWF4PVwiJysgbG90LnF1YW50aXR5ICsnXCI+JztcclxuICAgICAgICAgICAgICAgICAgICAgIGNlbGwzLmlubmVySFRNTCA9ICc8aW5wdXQgdHlwZT1cImRhdGVcIiB2YWx1ZT1cIicrIHRoaXMuZm9ybWF0RGF0ZShkYXRlKSArJ1wiIGlkPVwiZGVsaXZlcnlEYXRlJytpZCsnXCIgY2xhc3M9XCJmb3JtLWNvbnRyb2wgdy03NVwiPic7XHJcbiAgICAgICAgICAgICAgICAgICAgICB2YXIgb3BjaW9uZXMgPSBcIlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBzZWRlcy5mb3JFYWNoKHNlZGUgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNlZGUuaWQgPT0gbG90LnNoaXBwaW5nX2FkZHJlc3NfaWQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BjaW9uZXMrPSc8b3B0aW9uIHZhbHVlPVwiJytzZWRlLmlkKydcIiBzZWxlY3RlZD4nKyBzZWRlLmNpdHkrICcgLSAnICsgc2VkZS5zdHJlZXQrJzwvb3B0aW9uPic7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BjaW9uZXMrPSc8b3B0aW9uIHZhbHVlPVwiJytzZWRlLmlkKydcIj4nKyBzZWRlLmNpdHkrICcgLSAnICsgc2VkZS5zdHJlZXQrJzwvb3B0aW9uPic7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICB9fSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICBjZWxsNC5pbm5lckhUTUwgPSAnPHNlbGVjdCAgaWQ9XCJzaGlwcGluZ0FkZHJlc3MnK2lkKydcIiBjbGFzcz1cImZvcm0tY29udHJvbCB3LTc1XCI+JytvcGNpb25lcysnPC9zZWxlY3Q+JztcclxuICAgICAgICAgICAgICAgICAgICAgIGNlbGw1LmlubmVySFRNTCA9ICc8aW5wdXQgdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IGJ0blNlZ3VpclwiIHR5cGU9XCJidXR0b25cIiBkYXRhLWJzLXRvZ2dsZT1cImNvbGxhcHNlXCIgZGF0YS1icy10YXJnZXQ9XCIjY29sbGFwc2VFeGFtcGxlJytpZCsnXCIgYXJpYS1leHBhbmRlZD1cImZhbHNlXCIgYXJpYS1jb250cm9scz1cImNvbGxhcHNlRXhhbXBsZScraWQrJ1wiIHZhbHVlPVwiVmVyXCI+PC9pbnB1dD4nO1xyXG4gICAgICAgICAgICAgICAgICAgICAgY2VsbDYuaW5uZXJIVE1MID0gJzxkaXYgY2xhc3M9XCJjb2wtMSBmbGV4LWdyb3ctMCB0ZXh0LXJpZ2h0IGJ0bkJvcnJhciBkLW5vbmUgZC1tZC1ibG9jayBkLW5vbmUgZC1tZC1ibG9ja1wiPjxidXR0b24gdmFsdWU9XCInKyBsb3QuaWQgKydcIiBjbGFzcz1cImJ0blwiIGlkPVwiYm90b25Cb3JyYXJcIj48aW1nIHNyYz1cIi4vYXNzZXRzL21hcXVldGFkby9pbWcvaWMtYm9ycmFyLnN2Z1wiIGFsdD1cIlwiPiA8L2J1dHRvbj48L2Rpdj4nO1xyXG4gICAgICAgICAgICAgICAgICAgICAgdmFyIHJvdzIgPSBib2R5VGFibGUuaW5zZXJ0Um93KGJvZHlUYWJsZS5yb3dzLmxlbmd0aCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICB2YXIgZmlsYTIgID0gcm93Mi5pbnNlcnRDZWxsKDApXHJcbiAgICAgICAgICAgICAgICAgICAgICBmaWxhMi5jb2xTcGFuID0gNjtcclxuICAgICAgICAgICAgICAgICAgICAgIGZpbGEyLmlubmVySFRNTD0nPGRpdiBjbGFzcz1cImNvbGxhcHNlXCIgaWQ9XCJjb2xsYXBzZUV4YW1wbGUnK2lkKydcIj48aW5wdXQgaWQ9XCJub3RlcycraWQrJ1wiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgdmFsdWU9XCInK2xvdC5ub3RlcysnXCIgcGxhY2Vob2xkZXI9XCJJbmdyZXNlIHVuIGNvbWVudGFyaW8gZW4gY2FzbyBkZSBxdWUgc2VhIG5lY2VzYXJpby5cIiB0eXBlPVwidGV4dFwiLz48L2Rpdj4nO1xyXG4gICAgICAgICAgICAgICAgICAgICAgaWQgPSBpZCsxO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgIGFsbElELnB1c2gobG90WydpZCddKTtcclxuICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgfSk7XHJcblxyXG4gICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2JvdG9uQWdyZWdhcicpLm9uY2xpY2sgPSBmdW5jdGlvbigpIHtcclxuXHJcbiAgICAgICAgLy8gLy8gU2UgY2FsY3VsYSBsYSBjYW50aWRhZCB5IGVsIGNvbnRhZG9yIHBhcmEgcXVlIG5vIGV4Y2VkYSBsYSBjYW50aWRhZCBkZSBsYSBsaW5lYSBhbCBjcmVhciB1biBudWV2byBsb3RlLlxyXG4gICAgICAgIHZhciBjYW50aWRhZEFjdHVhbD0wO1xyXG4gICAgICAgIGZvciAobGV0IGluZGV4ID0gMTsgaW5kZXggPCBpZDsgaW5kZXgrKykge1xyXG4gICAgICAgICAgaWYgKDxIVE1MSW5wdXRFbGVtZW50PmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwicXVhbnRpdHlcIitpbmRleCkpe1xyXG4gICAgICAgICAgICAgICBjYW50aWRhZEFjdHVhbCA9IGNhbnRpZGFkQWN0dWFsICsgcGFyc2VJbnQoKDxIVE1MSW5wdXRFbGVtZW50PmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwicXVhbnRpdHlcIitpbmRleCkpLnZhbHVlKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIFNlIGHDsWFkZSBsYSBsaW5lYSBzaWVtcHJlIHkgY3VhbmRvIGxhIGNhbnRpZGFkIHJlc3RhbnRlIG5vIHNlYSBjZXJvLlxyXG4gICAgICAgIGlmIChjYW50aWRhZEFjdHVhbCA8IGl0ZW1bJ3F1YW50aXR5J10pe1xyXG4gICAgICAgICAgICAgdmFyIHJvdyA9IGJvZHlUYWJsZS5pbnNlcnRSb3coYm9keVRhYmxlLnJvd3MubGVuZ3RoKTtcclxuICAgICAgICAgICAgIHZhciBjZWxsMSA9IHJvdy5pbnNlcnRDZWxsKDApO1xyXG4gICAgICAgICAgICAgdmFyIGNlbGwyID0gcm93Lmluc2VydENlbGwoMSk7XHJcbiAgICAgICAgICAgICB2YXIgY2VsbDMgPSByb3cuaW5zZXJ0Q2VsbCgyKTtcclxuICAgICAgICAgICAgIHZhciBjZWxsNCA9IHJvdy5pbnNlcnRDZWxsKDMpO1xyXG4gICAgICAgICAgICAgdmFyIGNlbGw1ID0gcm93Lmluc2VydENlbGwoNCk7XHJcbiAgICAgICAgICAgICB2YXIgY2VsbDYgPSByb3cuaW5zZXJ0Q2VsbCg1KTtcclxuICAgICAgICAgICAgIGNlbGwxLmlubmVySFRNTCA9ICc8aW5wdXQgaWQ9XCJpZCcraWQrJ1wiICBzdHlsZT1cImJvcmRlcjogMDtcIiB2YWx1ZT1cIlBlbmR0LlwiIGRpc2FibGVkPic7XHJcbiAgICAgICAgICAgICBjZWxsMi5pbm5lckhUTUwgPSAnPGlucHV0IHR5cGU9XCJudW1iZXJcIiBpZD1cInF1YW50aXR5JytpZCsnXCIgdmFsdWU9IFwiJysgKGl0ZW1bJ3F1YW50aXR5J10gLSAgY2FudGlkYWRBY3R1YWwgKSsnXCJjbGFzcz1cImZvcm0tY29udHJvbCB3LTUwXCIgbWF4PVwiJysgKGl0ZW1bJ3F1YW50aXR5J10gLSAgY2FudGlkYWRBY3R1YWwgKSArJ1wiPic7XHJcbiAgICAgICAgICAgICBjZWxsMy5pbm5lckhUTUwgPSAnPGlucHV0IHR5cGU9XCJkYXRlXCIgaWQ9XCJkZWxpdmVyeURhdGUnK2lkKydcIiBjbGFzcz1cImZvcm0tY29udHJvbCB3LTc1XCI+JztcclxuICAgICAgICAgICAgIHZhciBvcGNpb25lcyA9IFwiXCJcclxuICAgICAgICAgICAgIHNlZGVzLmZvckVhY2goc2VkZSA9PiB7IG9wY2lvbmVzKz0nPG9wdGlvbiB2YWx1ZT1cIicrc2VkZS5pZCsnXCI+Jysgc2VkZS5jaXR5KyAnIC0gJyArIHNlZGUuc3RyZWV0Kyc8L29wdGlvbj4nO30pO1xyXG4gICAgICAgICAgICAgY2VsbDQuaW5uZXJIVE1MID0gJzxzZWxlY3QgIGlkPVwic2hpcHBpbmdBZGRyZXNzJytpZCsnXCIgY2xhc3M9XCJmb3JtLWNvbnRyb2wgdy03NVwiPicrb3BjaW9uZXMrJzwvc2VsZWN0Pic7XHJcbiAgICAgICAgICAgICBjZWxsNS5pbm5lckhUTUwgPSAnPGlucHV0IHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBidG5TZWd1aXJcIiB0eXBlPVwiYnV0dG9uXCIgZGF0YS1icy10b2dnbGU9XCJjb2xsYXBzZVwiIGRhdGEtYnMtdGFyZ2V0PVwiI2NvbGxhcHNlRXhhbXBsZScraWQrJ1wiIGFyaWEtZXhwYW5kZWQ9XCJmYWxzZVwiIGFyaWEtY29udHJvbHM9XCJjb2xsYXBzZUV4YW1wbGUnK2lkKydcIiB2YWx1ZT1cIlZlclwiPjwvaW5wdXQ+JztcclxuICAgICAgICAgICAgIGNlbGw2LmlubmVySFRNTCA9ICc8ZGl2IGNsYXNzPVwiY29sLTEgZmxleC1ncm93LTAgdGV4dC1yaWdodCBidG5Cb3JyYXIgZC1ub25lIGQtbWQtYmxvY2sgZC1ub25lIGQtbWQtYmxvY2tcIj48YnV0dG9uIGNsYXNzPVwiYnRuXCIgaWQ9XCJib3RvbkJvcnJhclwiPjxpbWcgc3JjPVwiLi9hc3NldHMvbWFxdWV0YWRvL2ltZy9pYy1ib3JyYXIuc3ZnXCIgYWx0PVwiXCI+IDwvYnV0dD48L2Rpdj4nO1xyXG4gICAgICAgICAgICAgdmFyIHJvdzIgPSBib2R5VGFibGUuaW5zZXJ0Um93KGJvZHlUYWJsZS5yb3dzLmxlbmd0aCk7XHJcbiAgICAgICAgICAgICB2YXIgZmlsYTIgID0gcm93Mi5pbnNlcnRDZWxsKDApXHJcbiAgICAgICAgICAgICBmaWxhMi5jb2xTcGFuID0gNjtcclxuICAgICAgICAgICAgIGZpbGEyLmlubmVySFRNTD0nPGRpdiBjbGFzcz1cImNvbGxhcHNlXCIgaWQ9XCJjb2xsYXBzZUV4YW1wbGUnK2lkKydcIj48aW5wdXQgaWQ9XCJub3RlcycraWQrJ1wiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgcGxhY2Vob2xkZXI9XCJJbmdyZXNlIHVuIGNvbWVudGFyaW8gZW4gY2FzbyBkZSBxdWUgc2VhIG5lY2VzYXJpby5cIiB0eXBlPVwidGV4dFwiLz48L2Rpdj4nO1xyXG5cclxuXHJcbiAgICAgICAgICAgICBpZCA9IGlkKzE7XHJcbiAgICAgICAgfSBlbHNle1xyXG4gICAgICAgICAgdGhpc18udG9hc3RyU2VydmljZS5zaG93KCdsb3QtbWF4LXF1YW50aXR5Jyk7XHJcbiAgICAgICAgfVxyXG4gICAgIH1cclxuXHJcbiAgICAgLy8gQ3VhbmRvIHNlIHB1bHNhIGVsIGJvdG9uIHBhcmEgZ3VhcmRhciBlbCBsb3RlIHJlY29ycmUgbGEgZnVuY2lvbiB5IGVsIGZvciAsIHJlY29ycmUgbGluZWEgYSBsaW5lYSB5IGxhbnphIGVsIGVuZHBvaW50IGNvbiB1bmEgcGF1c2EgcGFyYSBxdWUgbm8gc2UgcGllcmRhIG5pbmd1bm8geSBubyBzZSBxdWVkZSBwaWxsYWRvLlxyXG4gICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdib3Rvbkd1YXJkYXInKS5vbmNsaWNrID0gZnVuY3Rpb24oKSB7XHJcbiAgICAgICAgICB0aGlzXy50b2FzdHJTZXJ2aWNlLnNob3coJ2xvdC1zYXZpbmcnKTtcclxuICAgICAgICAgIHRoaXNfLmNhcmdhbmRvID0gdHJ1ZTtcclxuICAgICAgICAgIHZhciBsb3RJRCA9ICcnO1xyXG4gICAgICAgICAgdmFyIGNhbnRpZGFkTG90ZXM9MDtcclxuICAgICAgICAgIC8vQ29udHJvbGEgcXVlIGxhcyBjYW50aWRhZGVzIGRlIGxvcyBsb3RlcyBubyBzZWEgc3VwZXJpb3IgYSBsYSBkZWwgcHJvZHVjdG8gZW4gZWwgY2Fycml0by5cclxuICAgICAgICAgIGZvciAobGV0IGluZGV4ID0gMTsgaW5kZXggPCBpZDsgaW5kZXgrKykge1xyXG4gICAgICAgICAgICAgICBpZiAoPEhUTUxJbnB1dEVsZW1lbnQ+ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJxdWFudGl0eVwiK2luZGV4KSl7XHJcbiAgICAgICAgICAgICAgICAgICAgY2FudGlkYWRMb3RlcyA9IGNhbnRpZGFkTG90ZXMgKyBwYXJzZUludCgoPEhUTUxJbnB1dEVsZW1lbnQ+ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJxdWFudGl0eVwiK2luZGV4KSkudmFsdWUpO1xyXG4gICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgaWYgKGl0ZW0ucXVhbnRpdHkgPj0gY2FudGlkYWRMb3Rlcyl7XHJcbiAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKGNhbnRpZGFkTG90ZXMpO1xyXG4gICAgICAgICAgICAgICB2YXIgeSA9IDA7XHJcbiAgICAgICAgICAgZm9yIChsZXQgaW5kZXggPSAxOyBpbmRleCA8IGlkOyBpbmRleCsrKSB7XHJcblxyXG4gICAgICAgICAgICAgICBpZigoPEhUTUxJbnB1dEVsZW1lbnQ+ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJxdWFudGl0eVwiK2luZGV4KSkpe1xyXG4gICAgICAgICAgICAgICAgICAgIHZhciBxdWFudGl0eSA9IHBhcnNlSW50KCg8SFRNTElucHV0RWxlbWVudD5kb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInF1YW50aXR5XCIraW5kZXgpKS52YWx1ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIGRlbGl2ZXJ5RGF0ZSA9ICg8SFRNTElucHV0RWxlbWVudD5kb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImRlbGl2ZXJ5RGF0ZVwiK2luZGV4KSkudmFsdWU7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIHNoaXBwaW5nQWRkcmVzcyA9ICQoXCIjc2hpcHBpbmdBZGRyZXNzXCIraW5kZXgpLnZhbCgpO1xyXG4gICAgICAgICAgICAgICAgICAgIHZhciBub3RlcyA9ICQoXCIjbm90ZXNcIitpbmRleCkudmFsKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIHNoaXBwaW5nQWRkcmVzc05hbWUgPSAgJCgnI3NoaXBwaW5nQWRkcmVzcycraW5kZXgrJyBvcHRpb246c2VsZWN0ZWQnKS50ZXh0KCk7XHJcbiAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgaWYgKCg8SFRNTElucHV0RWxlbWVudD5kb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImlkXCIraW5kZXgpKSl7XHJcbiAgICAgICAgICAgICAgICAgICAgbG90SUQgPSAoPEhUTUxJbnB1dEVsZW1lbnQ+ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJpZFwiK2luZGV4KSkudmFsdWU7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIG15SW5kZXggPSBhbGxJRC5pbmRleE9mKHBhcnNlSW50KGxvdElEKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKG15SW5kZXggIT09IC0xKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFsbElELnNwbGljZShteUluZGV4LCAxKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYgKGxvdElEID09ICdQZW5kdC4nKXtcclxuICAgICAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZygnbnVldm8nKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzXy5jYXJ0U2VydmljZS5hZGRUb0xvdChpdGVtLnByb2R1Y3QsMCxpdGVtLnZhcmlhbnRfaWQsMCxpdGVtLml0ZW1faWQscXVhbnRpdHksaXRlbS5wcm9kdWN0LnByaWNlLGl0ZW0ucXVhbnRpdHksaXRlbS5kaXNjb3VudCxpdGVtLnByb2R1Y3QucHJpY2UqcXVhbnRpdHksJ25ldycsZGVsaXZlcnlEYXRlLG5vdGVzLHBhcnNlSW50KHNoaXBwaW5nQWRkcmVzcyksc2hpcHBpbmdBZGRyZXNzTmFtZSwgJ25ld2xvdCcpO1xyXG5cclxuICAgICAgICAgICAgICAgfSBlbHNlIGlmIChsb3RJRCAhPSAnJyl7XHJcbiAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGxvdElEKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzXy5jYXJ0U2VydmljZS5hZGRUb0xvdChpdGVtLnByb2R1Y3QsMCxpdGVtLnZhcmlhbnRfaWQscGFyc2VJbnQobG90SUQpLGl0ZW0uaXRlbV9pZCxxdWFudGl0eSxpdGVtLnByb2R1Y3QucHJpY2UsaXRlbS5xdWFudGl0eSxpdGVtLmRpc2NvdW50LGl0ZW0ucHJvZHVjdC5wcmljZSpxdWFudGl0eSwnZWRpdGVkJyxkZWxpdmVyeURhdGUsbm90ZXMscGFyc2VJbnQoc2hpcHBpbmdBZGRyZXNzKSxzaGlwcGluZ0FkZHJlc3NOYW1lLCAnZWRpdGxvdCcpO1xyXG4gICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgIHk9aW5kZXg7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICAgYWxsSUQuZm9yRWFjaChlbGVtZW50ID0+IHtcclxuICAgICAgICAgICAgICAgLy8gICBjb25zb2xlLmxvZygnYm9ycmFyJyk7XHJcbiAgICAgICAgICAgICAgIHRoaXNfLmNhcnRTZXJ2aWNlLmFkZFRvTG90KGl0ZW0ucHJvZHVjdCwwLGl0ZW0udmFyaWFudF9pZCxlbGVtZW50LDAsMCwwLDAsMCwwLCdkZWxldGUnLDAsJycsMCwnZGVsZXRlJywnZGVsZXRlbG90Jyk7XHJcbiAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKXt0aGlzXy5jYXJ0U2VydmljZS5sb2FkQ2FydEJ5VG9rZW4odGhpc18uY2FydFNlcnZpY2UuZ2V0Q2FydFRva2VuKCkpO30sIDMwMCAqIHkpO1xyXG5cclxuICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKXt0aGlzXy50b2FzdHJTZXJ2aWNlLnNob3coJ2xvdC1zYXZlZCcpO30sIDMwMCAqIHkpO1xyXG5cclxuICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKXt0aGlzXy5jYXJnYW5kbyA9IGZhbHNlfSwgMzAwICogeSk7XHJcblxyXG4gICAgICAgICAgfSBlbHNle1xyXG4gICAgICAgICAgICAgICB0aGlzXy50b2FzdHJTZXJ2aWNlLnNob3coJ0xhIGNhbnRpZGFkIGRlIGxvcyBsb3RlcyBlcyBzdXBlcmlvciBhIGxhIGNhbnRpZGFkIGRlbCBwcm9kdWN0by4nKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIH07XHJcblxyXG4gICAgICAgICAgJChkb2N1bWVudCkub24oJ2NsaWNrJywgJyNib3RvbkJvcnJhcicsIGZ1bmN0aW9uKGV2ZW50KSB7XHJcbiAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKHRoaXMpO1xyXG4gICAgICAgICAgICAgICAkKHRoaXMpLmNsb3Nlc3QoJ3RyJykucmVtb3ZlKCk7XHJcblxyXG4gICAgICAgICAgfSk7XHJcblxyXG4gICAgIH1cclxuXHJcbiAgICAgY2xvc2VNb2RhbChpZCl7XHJcbiAgICAgICAgICAkKCcjJytpZCkubW9kYWwoJ2hpZGUnKTtcclxuICAgICB9XHJcblxyXG4gICAgIGNoZWNrU3RvY2soaXRlbSk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiBpdGVtLnF1YW50aXR5ID4gaXRlbS5wcm9kdWN0LnZhcmlhbnRzWzBdLnN0b2NrO1xyXG4gICAgfVxyXG5cclxuICAgIGdldFZhcmlhbnRzID0gcHJvZHVjdCA9PiB7XHJcblxyXG4gICAgICAgIGxldCBpdGVtID0gcHJvZHVjdC5wcm9kdWN0XHJcblxyXG4gICAgICAgIGlmIChpdGVtLnZhcmlhbnRzICYmIGl0ZW0udmFyaWFudHMubGVuZ3RoICYmIGl0ZW0udmFyaWFudHNbMF0ub3B0aW9ucyAmJiBpdGVtLnZhcmlhbnRzWzBdLm9wdGlvbnMubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICBsZXQgb3B0aW9ucyA9IGl0ZW0udmFyaWFudHNbMF0ub3B0aW9uc1xyXG4gICAgICAgICAgICAgb3B0aW9ucyA9IG9wdGlvbnMuZmlsdGVyKG9wdGlvbiA9PiB0aGlzLnZhcmlhbnRzVG9TaG93LmZpbmQobmFtZSA9PiBvcHRpb24uaGFzT3duUHJvcGVydHkobmFtZSkpKVxyXG4gICAgICAgICAgICAgbGV0IG9wdGlvbnNNYXAgPSBbXVxyXG4gICAgICAgICAgICAgb3B0aW9ucy5tYXAob3B0aW9uID0+IHtcclxuICAgICAgICAgICAgICBPYmplY3Qua2V5cyhvcHRpb24pLmZvckVhY2goKGVudHJ5KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgIGxldCBvcHRpb25BZGRlZCA9IGZhbHNlOyAgLy8gVmFyaWFibGUgcGFyYSBldml0YXIgbcO6bHRpcGxlcyBpbnNlcmNpb25lc1xyXG4gICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgIGl0ZW0ub3B0aW9ucy5mb3JFYWNoKG9wdGlvbjIgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgaWYgKG9wdGlvbjIuY29kZSA9PSAnQ09MT1InKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uMi52YWx1ZXMuZm9yRWFjaChjb2xvciA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb2xvci5jb2RlID09IG9wdGlvbltlbnRyeV0gJiYgIW9wdGlvbkFkZGVkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zTWFwLnB1c2goeyBuYW1lOiBlbnRyeSwgdmFsdWU6IG9wdGlvbltlbnRyeV0sIGltYWdlOiBjb2xvci5pbWFnZSwgbW9iaWxlSW1hZ2U6IGNvbG9yLm1vYmlsZUltYWdlIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uQWRkZWQgPSB0cnVlOyAvLyBNYXJjYXIgb3BjacOzbiBhZ3JlZ2FkYVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICB9IFxyXG4gICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgIC8vIFNpIG5vIHNlIGHDsWFkacOzIGxhIG9wY2nDs24gZGUgQ09MT1IsIG1hbmVqYXIgb3RyYXMgb3BjaW9uZXNcclxuICAgICAgICAgICAgICAgICAgIGlmICghb3B0aW9uQWRkZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgIGl0ZW0ub3B0aW9ucy5mb3JFYWNoKG9wdGlvbjIgPT4ge1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAob3B0aW9uMi5jb2RlICE9PSAnQ09MT1InKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnNNYXAucHVzaCh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBlbnRyeSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBvcHRpb25bZW50cnldXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uQWRkZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIG9wdGlvbnNNYXA7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgICAgcmV0dXJuIG9wdGlvbnNNYXA7XHJcblxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICByZXR1cm4gbnVsbFxyXG4gICAgICAgIH1cclxuXHJcbiAgIH1cclxuXHJcbiAgIGNyZWF0ZURpc2NvdW50TWVzc2FnZShzYWxlcHJpY2U6IG51bWJlciwgcHJpY2U6IG51bWJlcik6IHN0cmluZyB7XHJcbiAgICBpZiAoaXNOYU4oc2FsZXByaWNlKSB8fCBpc05hTihwcmljZSkgfHwgc2FsZXByaWNlID49IHByaWNlIHx8IHNhbGVwcmljZSA8PSAwIHx8IHByaWNlIDw9IDApIHtcclxuICAgICAgICAgcmV0dXJuICcnO1xyXG4gICAgfVxyXG5cclxuICAgIGxldCBkaXNjb3VudFBlcmNlbnRhZ2UgPSBNYXRoLnJvdW5kKCgocHJpY2UgLSBzYWxlcHJpY2UpIC8gcHJpY2UpICogMTAwKTtcclxuXHJcbiAgICBsZXQgZGlzY291bnRNZXNzYWdlID0gYCR7ZGlzY291bnRQZXJjZW50YWdlfSUgT0ZGYDtcclxuICAgIHJldHVybiBkaXNjb3VudE1lc3NhZ2U7XHJcbn1cclxuZ2V0TWluaW11bVB1cmNoYXNlQW1vdW50ID0gKCkgPT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuY2hhbm5lbC50eXBlID09ICdiMmInID8gdGhpcy5jaGFubmVsLndob2xlc2FsZXJNaW5pbXVtUHVyY2hhc2VBbW91bnQgOiB0aGlzLmNoYW5uZWwucmV0YWlsZXJNaW5pbXVtUHVyY2hhc2VBbW91bnRcclxuXHJcbn1cclxuXHJcbmV4Y2VlZHNNaW5pbXVtQW1vdW50ID0gKHZhbHVlOiBudW1iZXIpID0+IHZhbHVlID49IHRoaXMuZ2V0TWluaW11bVB1cmNoYXNlQW1vdW50KCkgPyB0aGlzLnJlZGlyZWN0Q2hlY2tvdXQoKSA6IHRoaXMudG9hc3RyU2VydmljZS5zaG93KCdxdWFudGl0eS1ub3QtZXhjZWVkZWQnLCB7IGFtb3VudDogdGhpcy5nZXRNaW5pbXVtUHVyY2hhc2VBbW91bnQoKSB9KVxyXG5cclxuXHJcbn1cclxuXHJcblxyXG5cclxuXHJcblxyXG5cclxuXHJcblxyXG5cclxuXHJcblxyXG4iXX0=
|
|
368
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FydC1lYy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZy1lYXN5Y29tbWVyY2UvIiwic291cmNlcyI6WyJsaWIvZWMtY29tcG9uZW50L2NhcnQtZWMvY2FydC1lYy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBOEIsTUFBTSxlQUFlLENBQUE7QUFDckUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUVyRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDOUMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzFELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUMzRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDMUQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUV6RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQVMvRSxJQUFhLGVBQWUsR0FBNUIsTUFBYSxlQUFnQixTQUFRLGVBQWU7SUFlaEQsWUFBbUIsV0FBd0IsRUFBUyxXQUF3QixFQUFZLE1BQWlCLEVBQzlGLGVBQWdDLEVBQVMsTUFBYyxFQUFTLFlBQTRCLEVBQVksYUFBMkIsRUFBUSxpQkFBb0M7UUFDdEwsS0FBSyxFQUFFLENBQUM7UUFGTyxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUFTLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQVksV0FBTSxHQUFOLE1BQU0sQ0FBVztRQUM5RixvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7UUFBUyxXQUFNLEdBQU4sTUFBTSxDQUFRO1FB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QUF1QixjQUFjO1lBQTJCLFlBQVk7WUFBMkIsaUJBQWlCOztBQWhCakwsZUFBZTtJQUwzQixTQUFTLENBQUM7UUFDUCxRQUFRLEVBQUUsYUFBYTtRQUN2QixZQUF1Qzs7S0FFMUMsQ0FBQztHQUNXLGVBQWUsQ0F3WDNCO1NBeFhZLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSW5wdXQsIFRlbXBsYXRlUmVmIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIlxyXG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tIFwiQGFuZ3VsYXIvcm91dGVyXCI7XHJcbmltcG9ydCB7IEJzTW9kYWxTZXJ2aWNlIH0gZnJvbSBcIm5neC1ib290c3RyYXAvbW9kYWxcIjtcclxuaW1wb3J0IHsgQnNNb2RhbFJlZiB9IGZyb20gJ25neC1ib290c3RyYXAvbW9kYWwvYnMtbW9kYWwtcmVmLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDb25zdGFudHMgfSBmcm9tIFwiLi4vLi4vY29yZS5jb25zdHNcIjtcclxuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9hdXRoLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBQcm9kdWN0c1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9wcm9kdWN0cy9wcm9kdWN0cy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ2FydFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9jYXJ0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDb21wb25lbnRIZWxwZXIgfSBmcm9tIFwiLi4vLi4vY2xhc3Nlcy9jb21wb25lbnQtaGVscGVyXCI7XHJcbmltcG9ydCB7IFRvYXN0U2VydmljZSB9IGZyb20gXCIuLi8uLi91dGlscy90b2FzdC5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IGludGVydmFsLCBPYnNlcnZhYmxlIH0gZnJvbSBcInJ4anNcIjtcclxuaW1wb3J0IHsgQWRkcmVzc2luZ1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9jaGVja291dC9hZGRyZXNzaW5nLnNlcnZpY2UnO1xyXG5kZWNsYXJlIHZhciAkOmFueTtcclxuXHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnYXBwLWNhcnQtZWMnLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL2NhcnQtZWMuY29tcG9uZW50Lmh0bWwnLFxyXG4gICAgc3R5bGVVcmxzOiBbJy4vY2FydC1lYy5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDYXJ0RWNDb21wb25lbnQgZXh0ZW5kcyBDb21wb25lbnRIZWxwZXIgaW1wbGVtZW50cyBPbkluaXQge1xyXG5cclxuXHJcbiAgICBwdWJsaWMgdmFyaWFudHNUb1Nob3c6IHN0cmluZ1tdID0gWydUQUxMRScsICdDT0xPUiddO1xyXG4gICAgcHVibGljIGlzTG9nZ2VkSW4gPSBmYWxzZTtcclxuICAgIHB1YmxpYyBtZWRpYVVybCA9ICcnO1xyXG4gICAgcHVibGljIG1vZGFsUmVmOiBCc01vZGFsUmVmIHwgbnVsbDtcclxuICAgIHB1YmxpYyBwcm9tb3Rpb25zID0gW107XHJcbiAgICBwdWJsaWMgaXRlbXM6IE9ic2VydmFibGU8YW55PjtcclxuICAgIHByaXZhdGUgY2FyZ2FuZG86IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIHB1YmxpYyBjaGFubmVsOiBhbnkgPSB7fTtcclxuICAgIHB1YmxpYyB1cGRhdGVTdG9jazogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgcHVibGljIGV4aXRVcGRhdGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcblxyXG4gICAgY29uc3RydWN0b3IocHVibGljIGNhcnRTZXJ2aWNlOiBDYXJ0U2VydmljZSwgcHVibGljIGF1dGhTZXJ2aWNlOiBBdXRoU2VydmljZSwgcHJvdGVjdGVkIGNvbnN0czogQ29uc3RhbnRzLFxyXG4gICAgICAgIHB1YmxpYyBwcm9kdWN0c1NlcnZpY2U6IFByb2R1Y3RzU2VydmljZSwgcHVibGljIHJvdXRlcjogUm91dGVyLCBwdWJsaWMgbW9kYWxTZXJ2aWNlOiBCc01vZGFsU2VydmljZSwgcHJvdGVjdGVkIHRvYXN0clNlcnZpY2U6IFRvYXN0U2VydmljZSxwdWJsaWMgYWRkcmVzc2luZ1NlcnZpY2U6IEFkZHJlc3NpbmdTZXJ2aWNlKSB7XHJcbiAgICAgICAgc3VwZXIoKTtcclxuICAgICAgICB0aGlzLmVjT25Db25zdHJ1Y3QoKVxyXG4gICAgICAgIHRoaXMuaXNMb2dnZWRJbiA9IHRoaXMuYXV0aFNlcnZpY2UuaXNBdXRoZW50aWNhdGVkKCk7XHJcbiAgICAgICAgdGhpcy5tZWRpYVVybCA9IHRoaXMuY29uc3RzLm1lZGlhVXJsKCk7XHJcblxyXG4gICAgfVxyXG5cclxuXHJcbiAgICBuZ09uQ2hhbmdlcygpIHtcclxuICAgICAgICB0aGlzLmlzTG9nZ2VkSW4gPSB0aGlzLmF1dGhTZXJ2aWNlLmlzQXV0aGVudGljYXRlZCgpO1xyXG4gICAgfVxyXG5cclxuICAgIHVwZGF0ZUxvZ2dlZEluKCkge1xyXG4gICAgICAgIHRoaXMuaXNMb2dnZWRJbiA9IHRoaXMuYXV0aFNlcnZpY2UuaXNBdXRoZW50aWNhdGVkKCk7XHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkluaXQoKSB7XHJcbiAgICAgICAgd2luZG93LnNjcm9sbCgwLCAwKTtcclxuICAgICAgICB0aGlzLmNhcnRTZXJ2aWNlLnByb21vdGlvbnMuc3Vic2NyaWJlKHByb21vdGlvbnMgPT4gdGhpcy5wcm9tb3Rpb25zID0gcHJvbW90aW9ucyk7XHJcbiAgICAgLy8gICAgY29uc29sZS5sb2codGhpcy5jYXJ0U2VydmljZS5nZXRUYXhlcygpKTtcclxuICAgICAgICB0aGlzLmVjT25Jbml0KClcclxuXHJcbiAgICB9XHJcblxyXG4gICAgdG9EZWNpbWFsID0gKGFtb3VudCkgPT4gdGhpcy5jb25zdHMudG9EZWNpbWFsKGFtb3VudCk7XHJcblxyXG4gICAgYWN0dWFsaXphckNhbnRpZGFkID0gKGl0ZW0sIGNhbnRpZGFkLCBzdG9jaywgaWQ/KSA9PiB7XHJcbiAgICAgICAgaWYgKGlkKXtcclxuICAgICAgICAgICAgKDxIVE1MSW5wdXRFbGVtZW50PiBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZCkpLmRpc2FibGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgY2FudGlkYWQgPiAwICYmIGNhbnRpZGFkIDw9IHN0b2NrID8gdGhpcy5jYXJ0U2VydmljZS51cGRhdGVJdGVtUXVhbnRpdHkoaXRlbSwgY2FudGlkYWQpIDogdGhpcy50b2FzdHJTZXJ2aWNlLnNob3coJ291dC1vZi1zdG9jay1hY3R1YWxseScpO1xyXG4gICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7KDxIVE1MSW5wdXRFbGVtZW50PiBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZCkpLmRpc2FibGVkID0gZmFsc2U7fSwgMTAwMCk7XHJcbiAgICAgICAgfSBlbHNle1xyXG4gICAgICAgICAgICBjYW50aWRhZCA+IDAgJiYgY2FudGlkYWQgPD0gc3RvY2sgPyB0aGlzLmNhcnRTZXJ2aWNlLnVwZGF0ZUl0ZW1RdWFudGl0eShpdGVtLCBjYW50aWRhZCkgOiB0aGlzLnRvYXN0clNlcnZpY2Uuc2hvdygnb3V0LW9mLXN0b2NrLWFjdHVhbGx5Jyk7XHJcblxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZWRpcmVjdENoZWNrb3V0ID0gKCkgPT4ge1xyXG4gICAgICAgIGlmICh0aGlzLmNhcnRTZXJ2aWNlLmhhc1N1ZmZpY2llbnRDcmVkaXRzRm9yQ2FydFRvdGFsKCkpIHtcclxuICAgICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybChgL2NoZWNrb3V0YCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgY29uc29sZS53YXJuKFwiTm8gc2UgcHVlZGUgcmVkaXJpZ2lyIGFsIGNoZWNrb3V0IGRlYmlkbyBhIHVuYSB2YWxpZGFjacOzbiBmYWxsaWRhLlwiKTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG5cclxuICAgIHJlZGlyZWN0UmVnaXN0ZXIgPSAoKSA9PiB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKGAvYXV0aC9sb2dpbmApXHJcblxyXG4gICAgb3Blbk1vZGFsKHRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+KSB7XHJcbiAgICAgICAgdGhpcy5tb2RhbFJlZiA9IHRoaXMubW9kYWxTZXJ2aWNlLnNob3codGVtcGxhdGUsIHsgY2xhc3M6ICdtb2RhbC14bCcsIGtleWJvYXJkOiBmYWxzZSB9KTtcclxuICAgIH1cclxuXHJcbiAgICByZWRpcmVjdERldGFpbFByb2R1Y3QocHJvZHVjdCkge1xyXG4gICAgICAgIGxldCB2YXJpYW50ID0gcHJvZHVjdC52YXJpYW50c1swXVxyXG4gICAgICAgIGxldCBwYXRoID0gJy9wcm9kdWN0LydcclxuICAgICAgICBwYXRoICs9IHZhcmlhbnQuY29kZVxyXG4gICAgICAgIHBhdGggKz0gdmFyaWFudC5vcHRpb25zLmxlbmd0aCA/IFwiP3ZhcmlhbnQ9dHJ1ZVwiIDogXCJcIlxyXG4gICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwocGF0aClcclxuICAgIH1cclxuXHJcbiAgICBmb3JtYXREYXRlKGRhdGUpIHtcclxuICAgICB2YXIgZCA9IG5ldyBEYXRlKGRhdGUpLFxyXG4gICAgICAgICBtb250aCA9ICcnICsgKGQuZ2V0TW9udGgoKSArIDEpLFxyXG4gICAgICAgICBkYXkgPSAnJyArIGQuZ2V0RGF0ZSgpLFxyXG4gICAgICAgICB5ZWFyID0gZC5nZXRGdWxsWWVhcigpO1xyXG5cclxuICAgICBpZiAobW9udGgubGVuZ3RoIDwgMilcclxuICAgICAgICAgbW9udGggPSAnMCcgKyBtb250aDtcclxuICAgICBpZiAoZGF5Lmxlbmd0aCA8IDIpXHJcbiAgICAgICAgIGRheSA9ICcwJyArIGRheTtcclxuXHJcbiAgICAgcmV0dXJuIFt5ZWFyLCBtb250aCwgZGF5XS5qb2luKCctJyk7XHJcbiB9XHJcblxyXG4gICAgIGFzeW5jIGNhcmdhTW9kYWwoaXRlbSl7XHJcblxyXG4gICAgIC8vIE9idGllbmUgbGFzIHNlZGVzIGRlbCBjbGllbnRlXHJcbiAgICAgY29uc3Qgc2VkZXMgPSBhd2FpdCB0aGlzLmNhcnRTZXJ2aWNlLmdldEFkZHJlc3NCb29rKCk7XHJcblxyXG4gICAgIC8vIENyZW8gdW5hIHNlcmllIGRlIHZhcmlhYmxlcyBxdWUgdm95IGEgbmVjZXNpdGFyLCBpZCBwYXJhIGNvbnRyb2xhciBsYXMgdnVlbHRhcyBxdWUgZGEgeSBjdWFudGFzIGxpbmVhcyBoYXkgeSBhbGxJRCBwYXJhIGFsbWFjZW5hciBsb3MgSUQgZGUgbG9zIGxvdGVzLlxyXG4gICAgIHZhciBpZCA9IDE7XHJcbiAgICAgdmFyIHRoaXNfPXRoaXM7XHJcbiAgICAgdmFyIGFsbElEID0gIFtdO1xyXG5cclxuICAgICAvLyBBw7FhZGUgbG9zIGRhdG9zIGFsIGVuY2FiZXphZG8gZGVsIE1vZGFsXHJcbiAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2VuY2FiZXphZG9Nb2RhbCcpLmlubmVySFRNTCA9ICc8YSBjbGFzcz1cInRpdGxlIHRleHQtZGFyayB0ZXh0LWRlY29yYXRpb24tbm9uZSBoNSBkLWJsb2NrIG0tMCBwLTAgbS0wIHAtMFwiPjxwIGNsYXNzPVwibm9tYnJlIG1iLTBcIiBpZD1cInByb2R1Y3ROYW1lXCI+JysgaXRlbVsncHJvZHVjdCddWyduYW1lJ10rJzwvcD48c21hbGwgY2xhc3M9XCJ0ZXh0LXNlY29uZGFyeSBwcy0yIG1zLTFcIiBpZD1cInByb2R1Y3RSZWZcIj5SZWY6JytpdGVtWyd2YXJpYW50X2lkJ10rJzwvc21hbGw+PC9hPic7XHJcblxyXG4gICAgIC8vIEJvcnJhbW9zIHRvZG9zIGxvcyBkYXRvcyBkZSBsb3MgbG90ZXMgYW50ZXJpb3Jlc1xyXG4gICAgIHZhciBib2R5VGFibGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImxvdF9ib2R5X3RhYmxlXCIpIGFzIEhUTUxUYWJsZUVsZW1lbnQ7XHJcbiAgICAgYm9keVRhYmxlLmlubmVySFRNTD0nJztcclxuXHJcbiAgICAgLy8gUmVjb3JyZSB0b2RvcyBsb3MgYXJ0aWN1bG9zIHkgZW5jdWVudHJhIHNpIHRpZW5lbiBsb3RlcyBvIG5vLCBzaSB0aWVuZSBjcmVhIGxhcyBsaW5lYXNcclxuICAgICAgIHRoaXNfLmNhcnRTZXJ2aWNlLmdldENhcnQyKCkuZm9yRWFjaChpID0+IHtcclxuXHJcbiAgICAgICAgICAgIGlmIChpWydpdGVtX2lkJ10gPT0gaXRlbS5pdGVtX2lkICYmIGlbJ2xvdCddICE9ICcnKXtcclxuICAgICAgICAgICAgICAgICBib2R5VGFibGUuaW5uZXJIVE1MPScnO1xyXG4gICAgICAgICAgICAgICAgIGlbJ2xvdCddLmZvckVhY2gobG90ID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgIHZhciByb3cgPSBib2R5VGFibGUuaW5zZXJ0Um93KGJvZHlUYWJsZS5yb3dzLmxlbmd0aCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICB2YXIgY2VsbDEgPSByb3cuaW5zZXJ0Q2VsbCgwKTtcclxuICAgICAgICAgICAgICAgICAgICAgIHZhciBjZWxsMiA9IHJvdy5pbnNlcnRDZWxsKDEpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgdmFyIGNlbGwzID0gcm93Lmluc2VydENlbGwoMik7XHJcbiAgICAgICAgICAgICAgICAgICAgICB2YXIgY2VsbDQgPSByb3cuaW5zZXJ0Q2VsbCgzKTtcclxuICAgICAgICAgICAgICAgICAgICAgIHZhciBjZWxsNSA9IHJvdy5pbnNlcnRDZWxsKDQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgdmFyIGNlbGw2ID0gcm93Lmluc2VydENlbGwoNSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICB2YXIgZGF0ZSA9IG5ldyBEYXRlKERhdGUucGFyc2UobG90WydkYXRlX3JlcXVlc3QnXSkpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgY2VsbDEuaW5uZXJIVE1MID0gJzxpbnB1dCBpZD1cImlkJytpZCsnXCIgIHN0eWxlPVwiYm9yZGVyOiAwO1wiIHZhbHVlPVwiJytsb3QuaWQrJ1wiIGRpc2FibGVkPic7XHJcbiAgICAgICAgICAgICAgICAgICAgICBjZWxsMi5pbm5lckhUTUwgPSAnPGlucHV0IHR5cGU9XCJudW1iZXJcIiBpZD1cInF1YW50aXR5JytpZCsnXCIgdmFsdWU9IFwiJysgbG90LnF1YW50aXR5ICsnXCJjbGFzcz1cImZvcm0tY29udHJvbCB3LTUwXCIgbWF4PVwiJysgbG90LnF1YW50aXR5ICsnXCI+JztcclxuICAgICAgICAgICAgICAgICAgICAgIGNlbGwzLmlubmVySFRNTCA9ICc8aW5wdXQgdHlwZT1cImRhdGVcIiB2YWx1ZT1cIicrIHRoaXMuZm9ybWF0RGF0ZShkYXRlKSArJ1wiIGlkPVwiZGVsaXZlcnlEYXRlJytpZCsnXCIgY2xhc3M9XCJmb3JtLWNvbnRyb2wgdy03NVwiPic7XHJcbiAgICAgICAgICAgICAgICAgICAgICB2YXIgb3BjaW9uZXMgPSBcIlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBzZWRlcy5mb3JFYWNoKHNlZGUgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNlZGUuaWQgPT0gbG90LnNoaXBwaW5nX2FkZHJlc3NfaWQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BjaW9uZXMrPSc8b3B0aW9uIHZhbHVlPVwiJytzZWRlLmlkKydcIiBzZWxlY3RlZD4nKyBzZWRlLmNpdHkrICcgLSAnICsgc2VkZS5zdHJlZXQrJzwvb3B0aW9uPic7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BjaW9uZXMrPSc8b3B0aW9uIHZhbHVlPVwiJytzZWRlLmlkKydcIj4nKyBzZWRlLmNpdHkrICcgLSAnICsgc2VkZS5zdHJlZXQrJzwvb3B0aW9uPic7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICB9fSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICBjZWxsNC5pbm5lckhUTUwgPSAnPHNlbGVjdCAgaWQ9XCJzaGlwcGluZ0FkZHJlc3MnK2lkKydcIiBjbGFzcz1cImZvcm0tY29udHJvbCB3LTc1XCI+JytvcGNpb25lcysnPC9zZWxlY3Q+JztcclxuICAgICAgICAgICAgICAgICAgICAgIGNlbGw1LmlubmVySFRNTCA9ICc8aW5wdXQgdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IGJ0blNlZ3VpclwiIHR5cGU9XCJidXR0b25cIiBkYXRhLWJzLXRvZ2dsZT1cImNvbGxhcHNlXCIgZGF0YS1icy10YXJnZXQ9XCIjY29sbGFwc2VFeGFtcGxlJytpZCsnXCIgYXJpYS1leHBhbmRlZD1cImZhbHNlXCIgYXJpYS1jb250cm9scz1cImNvbGxhcHNlRXhhbXBsZScraWQrJ1wiIHZhbHVlPVwiVmVyXCI+PC9pbnB1dD4nO1xyXG4gICAgICAgICAgICAgICAgICAgICAgY2VsbDYuaW5uZXJIVE1MID0gJzxkaXYgY2xhc3M9XCJjb2wtMSBmbGV4LWdyb3ctMCB0ZXh0LXJpZ2h0IGJ0bkJvcnJhciBkLW5vbmUgZC1tZC1ibG9jayBkLW5vbmUgZC1tZC1ibG9ja1wiPjxidXR0b24gdmFsdWU9XCInKyBsb3QuaWQgKydcIiBjbGFzcz1cImJ0blwiIGlkPVwiYm90b25Cb3JyYXJcIj48aW1nIHNyYz1cIi4vYXNzZXRzL21hcXVldGFkby9pbWcvaWMtYm9ycmFyLnN2Z1wiIGFsdD1cIlwiPiA8L2J1dHRvbj48L2Rpdj4nO1xyXG4gICAgICAgICAgICAgICAgICAgICAgdmFyIHJvdzIgPSBib2R5VGFibGUuaW5zZXJ0Um93KGJvZHlUYWJsZS5yb3dzLmxlbmd0aCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICB2YXIgZmlsYTIgID0gcm93Mi5pbnNlcnRDZWxsKDApXHJcbiAgICAgICAgICAgICAgICAgICAgICBmaWxhMi5jb2xTcGFuID0gNjtcclxuICAgICAgICAgICAgICAgICAgICAgIGZpbGEyLmlubmVySFRNTD0nPGRpdiBjbGFzcz1cImNvbGxhcHNlXCIgaWQ9XCJjb2xsYXBzZUV4YW1wbGUnK2lkKydcIj48aW5wdXQgaWQ9XCJub3RlcycraWQrJ1wiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgdmFsdWU9XCInK2xvdC5ub3RlcysnXCIgcGxhY2Vob2xkZXI9XCJJbmdyZXNlIHVuIGNvbWVudGFyaW8gZW4gY2FzbyBkZSBxdWUgc2VhIG5lY2VzYXJpby5cIiB0eXBlPVwidGV4dFwiLz48L2Rpdj4nO1xyXG4gICAgICAgICAgICAgICAgICAgICAgaWQgPSBpZCsxO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgIGFsbElELnB1c2gobG90WydpZCddKTtcclxuICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgfSk7XHJcblxyXG4gICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2JvdG9uQWdyZWdhcicpLm9uY2xpY2sgPSBmdW5jdGlvbigpIHtcclxuXHJcbiAgICAgICAgLy8gLy8gU2UgY2FsY3VsYSBsYSBjYW50aWRhZCB5IGVsIGNvbnRhZG9yIHBhcmEgcXVlIG5vIGV4Y2VkYSBsYSBjYW50aWRhZCBkZSBsYSBsaW5lYSBhbCBjcmVhciB1biBudWV2byBsb3RlLlxyXG4gICAgICAgIHZhciBjYW50aWRhZEFjdHVhbD0wO1xyXG4gICAgICAgIGZvciAobGV0IGluZGV4ID0gMTsgaW5kZXggPCBpZDsgaW5kZXgrKykge1xyXG4gICAgICAgICAgaWYgKDxIVE1MSW5wdXRFbGVtZW50PmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwicXVhbnRpdHlcIitpbmRleCkpe1xyXG4gICAgICAgICAgICAgICBjYW50aWRhZEFjdHVhbCA9IGNhbnRpZGFkQWN0dWFsICsgcGFyc2VJbnQoKDxIVE1MSW5wdXRFbGVtZW50PmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwicXVhbnRpdHlcIitpbmRleCkpLnZhbHVlKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIFNlIGHDsWFkZSBsYSBsaW5lYSBzaWVtcHJlIHkgY3VhbmRvIGxhIGNhbnRpZGFkIHJlc3RhbnRlIG5vIHNlYSBjZXJvLlxyXG4gICAgICAgIGlmIChjYW50aWRhZEFjdHVhbCA8IGl0ZW1bJ3F1YW50aXR5J10pe1xyXG4gICAgICAgICAgICAgdmFyIHJvdyA9IGJvZHlUYWJsZS5pbnNlcnRSb3coYm9keVRhYmxlLnJvd3MubGVuZ3RoKTtcclxuICAgICAgICAgICAgIHZhciBjZWxsMSA9IHJvdy5pbnNlcnRDZWxsKDApO1xyXG4gICAgICAgICAgICAgdmFyIGNlbGwyID0gcm93Lmluc2VydENlbGwoMSk7XHJcbiAgICAgICAgICAgICB2YXIgY2VsbDMgPSByb3cuaW5zZXJ0Q2VsbCgyKTtcclxuICAgICAgICAgICAgIHZhciBjZWxsNCA9IHJvdy5pbnNlcnRDZWxsKDMpO1xyXG4gICAgICAgICAgICAgdmFyIGNlbGw1ID0gcm93Lmluc2VydENlbGwoNCk7XHJcbiAgICAgICAgICAgICB2YXIgY2VsbDYgPSByb3cuaW5zZXJ0Q2VsbCg1KTtcclxuICAgICAgICAgICAgIGNlbGwxLmlubmVySFRNTCA9ICc8aW5wdXQgaWQ9XCJpZCcraWQrJ1wiICBzdHlsZT1cImJvcmRlcjogMDtcIiB2YWx1ZT1cIlBlbmR0LlwiIGRpc2FibGVkPic7XHJcbiAgICAgICAgICAgICBjZWxsMi5pbm5lckhUTUwgPSAnPGlucHV0IHR5cGU9XCJudW1iZXJcIiBpZD1cInF1YW50aXR5JytpZCsnXCIgdmFsdWU9IFwiJysgKGl0ZW1bJ3F1YW50aXR5J10gLSAgY2FudGlkYWRBY3R1YWwgKSsnXCJjbGFzcz1cImZvcm0tY29udHJvbCB3LTUwXCIgbWF4PVwiJysgKGl0ZW1bJ3F1YW50aXR5J10gLSAgY2FudGlkYWRBY3R1YWwgKSArJ1wiPic7XHJcbiAgICAgICAgICAgICBjZWxsMy5pbm5lckhUTUwgPSAnPGlucHV0IHR5cGU9XCJkYXRlXCIgaWQ9XCJkZWxpdmVyeURhdGUnK2lkKydcIiBjbGFzcz1cImZvcm0tY29udHJvbCB3LTc1XCI+JztcclxuICAgICAgICAgICAgIHZhciBvcGNpb25lcyA9IFwiXCJcclxuICAgICAgICAgICAgIHNlZGVzLmZvckVhY2goc2VkZSA9PiB7IG9wY2lvbmVzKz0nPG9wdGlvbiB2YWx1ZT1cIicrc2VkZS5pZCsnXCI+Jysgc2VkZS5jaXR5KyAnIC0gJyArIHNlZGUuc3RyZWV0Kyc8L29wdGlvbj4nO30pO1xyXG4gICAgICAgICAgICAgY2VsbDQuaW5uZXJIVE1MID0gJzxzZWxlY3QgIGlkPVwic2hpcHBpbmdBZGRyZXNzJytpZCsnXCIgY2xhc3M9XCJmb3JtLWNvbnRyb2wgdy03NVwiPicrb3BjaW9uZXMrJzwvc2VsZWN0Pic7XHJcbiAgICAgICAgICAgICBjZWxsNS5pbm5lckhUTUwgPSAnPGlucHV0IHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBidG5TZWd1aXJcIiB0eXBlPVwiYnV0dG9uXCIgZGF0YS1icy10b2dnbGU9XCJjb2xsYXBzZVwiIGRhdGEtYnMtdGFyZ2V0PVwiI2NvbGxhcHNlRXhhbXBsZScraWQrJ1wiIGFyaWEtZXhwYW5kZWQ9XCJmYWxzZVwiIGFyaWEtY29udHJvbHM9XCJjb2xsYXBzZUV4YW1wbGUnK2lkKydcIiB2YWx1ZT1cIlZlclwiPjwvaW5wdXQ+JztcclxuICAgICAgICAgICAgIGNlbGw2LmlubmVySFRNTCA9ICc8ZGl2IGNsYXNzPVwiY29sLTEgZmxleC1ncm93LTAgdGV4dC1yaWdodCBidG5Cb3JyYXIgZC1ub25lIGQtbWQtYmxvY2sgZC1ub25lIGQtbWQtYmxvY2tcIj48YnV0dG9uIGNsYXNzPVwiYnRuXCIgaWQ9XCJib3RvbkJvcnJhclwiPjxpbWcgc3JjPVwiLi9hc3NldHMvbWFxdWV0YWRvL2ltZy9pYy1ib3JyYXIuc3ZnXCIgYWx0PVwiXCI+IDwvYnV0dD48L2Rpdj4nO1xyXG4gICAgICAgICAgICAgdmFyIHJvdzIgPSBib2R5VGFibGUuaW5zZXJ0Um93KGJvZHlUYWJsZS5yb3dzLmxlbmd0aCk7XHJcbiAgICAgICAgICAgICB2YXIgZmlsYTIgID0gcm93Mi5pbnNlcnRDZWxsKDApXHJcbiAgICAgICAgICAgICBmaWxhMi5jb2xTcGFuID0gNjtcclxuICAgICAgICAgICAgIGZpbGEyLmlubmVySFRNTD0nPGRpdiBjbGFzcz1cImNvbGxhcHNlXCIgaWQ9XCJjb2xsYXBzZUV4YW1wbGUnK2lkKydcIj48aW5wdXQgaWQ9XCJub3RlcycraWQrJ1wiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgcGxhY2Vob2xkZXI9XCJJbmdyZXNlIHVuIGNvbWVudGFyaW8gZW4gY2FzbyBkZSBxdWUgc2VhIG5lY2VzYXJpby5cIiB0eXBlPVwidGV4dFwiLz48L2Rpdj4nO1xyXG5cclxuXHJcbiAgICAgICAgICAgICBpZCA9IGlkKzE7XHJcbiAgICAgICAgfSBlbHNle1xyXG4gICAgICAgICAgdGhpc18udG9hc3RyU2VydmljZS5zaG93KCdsb3QtbWF4LXF1YW50aXR5Jyk7XHJcbiAgICAgICAgfVxyXG4gICAgIH1cclxuXHJcbiAgICAgLy8gQ3VhbmRvIHNlIHB1bHNhIGVsIGJvdG9uIHBhcmEgZ3VhcmRhciBlbCBsb3RlIHJlY29ycmUgbGEgZnVuY2lvbiB5IGVsIGZvciAsIHJlY29ycmUgbGluZWEgYSBsaW5lYSB5IGxhbnphIGVsIGVuZHBvaW50IGNvbiB1bmEgcGF1c2EgcGFyYSBxdWUgbm8gc2UgcGllcmRhIG5pbmd1bm8geSBubyBzZSBxdWVkZSBwaWxsYWRvLlxyXG4gICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdib3Rvbkd1YXJkYXInKS5vbmNsaWNrID0gZnVuY3Rpb24oKSB7XHJcbiAgICAgICAgICB0aGlzXy50b2FzdHJTZXJ2aWNlLnNob3coJ2xvdC1zYXZpbmcnKTtcclxuICAgICAgICAgIHRoaXNfLmNhcmdhbmRvID0gdHJ1ZTtcclxuICAgICAgICAgIHZhciBsb3RJRCA9ICcnO1xyXG4gICAgICAgICAgdmFyIGNhbnRpZGFkTG90ZXM9MDtcclxuICAgICAgICAgIC8vQ29udHJvbGEgcXVlIGxhcyBjYW50aWRhZGVzIGRlIGxvcyBsb3RlcyBubyBzZWEgc3VwZXJpb3IgYSBsYSBkZWwgcHJvZHVjdG8gZW4gZWwgY2Fycml0by5cclxuICAgICAgICAgIGZvciAobGV0IGluZGV4ID0gMTsgaW5kZXggPCBpZDsgaW5kZXgrKykge1xyXG4gICAgICAgICAgICAgICBpZiAoPEhUTUxJbnB1dEVsZW1lbnQ+ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJxdWFudGl0eVwiK2luZGV4KSl7XHJcbiAgICAgICAgICAgICAgICAgICAgY2FudGlkYWRMb3RlcyA9IGNhbnRpZGFkTG90ZXMgKyBwYXJzZUludCgoPEhUTUxJbnB1dEVsZW1lbnQ+ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJxdWFudGl0eVwiK2luZGV4KSkudmFsdWUpO1xyXG4gICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgaWYgKGl0ZW0ucXVhbnRpdHkgPj0gY2FudGlkYWRMb3Rlcyl7XHJcbiAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKGNhbnRpZGFkTG90ZXMpO1xyXG4gICAgICAgICAgICAgICB2YXIgeSA9IDA7XHJcbiAgICAgICAgICAgZm9yIChsZXQgaW5kZXggPSAxOyBpbmRleCA8IGlkOyBpbmRleCsrKSB7XHJcblxyXG4gICAgICAgICAgICAgICBpZigoPEhUTUxJbnB1dEVsZW1lbnQ+ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJxdWFudGl0eVwiK2luZGV4KSkpe1xyXG4gICAgICAgICAgICAgICAgICAgIHZhciBxdWFudGl0eSA9IHBhcnNlSW50KCg8SFRNTElucHV0RWxlbWVudD5kb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInF1YW50aXR5XCIraW5kZXgpKS52YWx1ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIGRlbGl2ZXJ5RGF0ZSA9ICg8SFRNTElucHV0RWxlbWVudD5kb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImRlbGl2ZXJ5RGF0ZVwiK2luZGV4KSkudmFsdWU7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIHNoaXBwaW5nQWRkcmVzcyA9ICQoXCIjc2hpcHBpbmdBZGRyZXNzXCIraW5kZXgpLnZhbCgpO1xyXG4gICAgICAgICAgICAgICAgICAgIHZhciBub3RlcyA9ICQoXCIjbm90ZXNcIitpbmRleCkudmFsKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIHNoaXBwaW5nQWRkcmVzc05hbWUgPSAgJCgnI3NoaXBwaW5nQWRkcmVzcycraW5kZXgrJyBvcHRpb246c2VsZWN0ZWQnKS50ZXh0KCk7XHJcbiAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgaWYgKCg8SFRNTElucHV0RWxlbWVudD5kb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImlkXCIraW5kZXgpKSl7XHJcbiAgICAgICAgICAgICAgICAgICAgbG90SUQgPSAoPEhUTUxJbnB1dEVsZW1lbnQ+ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJpZFwiK2luZGV4KSkudmFsdWU7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIG15SW5kZXggPSBhbGxJRC5pbmRleE9mKHBhcnNlSW50KGxvdElEKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKG15SW5kZXggIT09IC0xKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFsbElELnNwbGljZShteUluZGV4LCAxKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYgKGxvdElEID09ICdQZW5kdC4nKXtcclxuICAgICAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZygnbnVldm8nKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzXy5jYXJ0U2VydmljZS5hZGRUb0xvdChpdGVtLnByb2R1Y3QsMCxpdGVtLnZhcmlhbnRfaWQsMCxpdGVtLml0ZW1faWQscXVhbnRpdHksaXRlbS5wcm9kdWN0LnByaWNlLGl0ZW0ucXVhbnRpdHksaXRlbS5kaXNjb3VudCxpdGVtLnByb2R1Y3QucHJpY2UqcXVhbnRpdHksJ25ldycsZGVsaXZlcnlEYXRlLG5vdGVzLHBhcnNlSW50KHNoaXBwaW5nQWRkcmVzcyksc2hpcHBpbmdBZGRyZXNzTmFtZSwgJ25ld2xvdCcpO1xyXG5cclxuICAgICAgICAgICAgICAgfSBlbHNlIGlmIChsb3RJRCAhPSAnJyl7XHJcbiAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGxvdElEKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzXy5jYXJ0U2VydmljZS5hZGRUb0xvdChpdGVtLnByb2R1Y3QsMCxpdGVtLnZhcmlhbnRfaWQscGFyc2VJbnQobG90SUQpLGl0ZW0uaXRlbV9pZCxxdWFudGl0eSxpdGVtLnByb2R1Y3QucHJpY2UsaXRlbS5xdWFudGl0eSxpdGVtLmRpc2NvdW50LGl0ZW0ucHJvZHVjdC5wcmljZSpxdWFudGl0eSwnZWRpdGVkJyxkZWxpdmVyeURhdGUsbm90ZXMscGFyc2VJbnQoc2hpcHBpbmdBZGRyZXNzKSxzaGlwcGluZ0FkZHJlc3NOYW1lLCAnZWRpdGxvdCcpO1xyXG4gICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgIHk9aW5kZXg7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICAgYWxsSUQuZm9yRWFjaChlbGVtZW50ID0+IHtcclxuICAgICAgICAgICAgICAgLy8gICBjb25zb2xlLmxvZygnYm9ycmFyJyk7XHJcbiAgICAgICAgICAgICAgIHRoaXNfLmNhcnRTZXJ2aWNlLmFkZFRvTG90KGl0ZW0ucHJvZHVjdCwwLGl0ZW0udmFyaWFudF9pZCxlbGVtZW50LDAsMCwwLDAsMCwwLCdkZWxldGUnLDAsJycsMCwnZGVsZXRlJywnZGVsZXRlbG90Jyk7XHJcbiAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKXt0aGlzXy5jYXJ0U2VydmljZS5sb2FkQ2FydEJ5VG9rZW4odGhpc18uY2FydFNlcnZpY2UuZ2V0Q2FydFRva2VuKCkpO30sIDMwMCAqIHkpO1xyXG5cclxuICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKXt0aGlzXy50b2FzdHJTZXJ2aWNlLnNob3coJ2xvdC1zYXZlZCcpO30sIDMwMCAqIHkpO1xyXG5cclxuICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKXt0aGlzXy5jYXJnYW5kbyA9IGZhbHNlfSwgMzAwICogeSk7XHJcblxyXG4gICAgICAgICAgfSBlbHNle1xyXG4gICAgICAgICAgICAgICB0aGlzXy50b2FzdHJTZXJ2aWNlLnNob3coJ0xhIGNhbnRpZGFkIGRlIGxvcyBsb3RlcyBlcyBzdXBlcmlvciBhIGxhIGNhbnRpZGFkIGRlbCBwcm9kdWN0by4nKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIH07XHJcblxyXG4gICAgICAgICAgJChkb2N1bWVudCkub24oJ2NsaWNrJywgJyNib3RvbkJvcnJhcicsIGZ1bmN0aW9uKGV2ZW50KSB7XHJcbiAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKHRoaXMpO1xyXG4gICAgICAgICAgICAgICAkKHRoaXMpLmNsb3Nlc3QoJ3RyJykucmVtb3ZlKCk7XHJcblxyXG4gICAgICAgICAgfSk7XHJcblxyXG4gICAgIH1cclxuXHJcbiAgICAgY2xvc2VNb2RhbChpZCl7XHJcbiAgICAgICAgICAkKCcjJytpZCkubW9kYWwoJ2hpZGUnKTtcclxuICAgICB9XHJcblxyXG4gICAgIGNoZWNrU3RvY2soaXRlbSkge1xyXG4gICAgICAgIGZvciAoY29uc3QgdmFyaWFudCBvZiBpdGVtLnByb2R1Y3QudmFyaWFudHMpIHtcclxuICAgICAgICAgIGlmIChpdGVtLnZhcmlhbnRfaWQgPT09IHZhcmlhbnQuY29kZSkge1xyXG4gICAgICAgICAgICBpZih2YXJpYW50LnN0b2NrID09PSAwKXtcclxuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlU3RvY2s9dHJ1ZTtcclxuICAgICAgICAgICAgICAgIHJldHVybiAnMCc7XHJcbiAgICAgICAgICAgIH1lbHNlIGlmIChpdGVtLnF1YW50aXR5ID4gdmFyaWFudC5zdG9jaykge1xyXG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVTdG9jaz10cnVlO1xyXG4gICAgICAgICAgICAgIHJldHVybiB2YXJpYW50LnN0b2NrO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBmYWxzZTsgLy8gU29sbyBzZSBlamVjdXRhIHNpIG5vIHNlIGN1bXBsZSBsYSBjb25kaWNpw7NuXHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHVwZGF0ZUFsbFN0b2NrKCkge1xyXG4gICAgICAgIGNvbnN0IGl0ZW1zOiBhbnlbXSA9IFtdO1xyXG4gICAgICAgIFxyXG4gICAgICAgIC8vIERlZmluZSBsYSBzdXNjcmlwY2nDs24gYW50ZXMgZGUgdXNhcmxhXHJcbiAgICAgICAgXHJcbiAgICAgICAgIHRoaXMuY2FydFNlcnZpY2UuY2FydEl0ZW1zLnN1YnNjcmliZShyZXMgPT4ge1xyXG4gICAgICAgICAgcmVzLmZvckVhY2goaXRlbSA9PiB7XHJcbiAgICAgICAgICAgIGZvciAoY29uc3QgdmFyaWFudCBvZiBpdGVtLnByb2R1Y3QudmFyaWFudHMpIHtcclxuICAgICAgICAgICAgICBpZiAoaXRlbS52YXJpYW50X2lkID09PSB2YXJpYW50LmNvZGUgJiYgIXRoaXMuZXhpdFVwZGF0ZSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKHZhcmlhbnQuc3RvY2sgPT09IDApIHtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5jYXJ0U2VydmljZS5kZWxldGVDYXJ0SXRlbShpdGVtLCBmYWxzZSk7IC8vIEJvcnJhIGVsIGFydMOtY3Vsb1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpdGVtLnF1YW50aXR5ID4gdmFyaWFudC5zdG9jaykge1xyXG4gICAgICAgICAgICAgICAgICBpdGVtcy5wdXNoKHtcclxuICAgICAgICAgICAgICAgICAgICBwcm9kdWN0Q29kZTogaXRlbS5wcm9kdWN0LmlkLFxyXG4gICAgICAgICAgICAgICAgICAgIHF1YW50aXR5OiB2YXJpYW50LnN0b2NrLFxyXG4gICAgICAgICAgICAgICAgICAgIHZhcmlhbnRDb2RlOiB2YXJpYW50LmNvZGUsXHJcbiAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNle1xyXG4gICAgICAgICAgICAgICAgICAgIGl0ZW1zLnB1c2goe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9kdWN0Q29kZTogaXRlbS5wcm9kdWN0LmlkLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBxdWFudGl0eTogaXRlbS5xdWFudGl0eSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFudENvZGU6IHZhcmlhbnQuY29kZSxcclxuICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICBpZiAoaXRlbXMubGVuZ3RoID4gMCAmJiAhdGhpcy5leGl0VXBkYXRlKSB7XHJcbiAgICAgICAgICAgIC8vIHN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpOyAgLy8gRGVzdXNjcsOtYmV0ZSBhbnRlcyBkZSBhY3R1YWxpemFyXHJcbiAgICAgICAgICAgIHRoaXMuY2FydFNlcnZpY2UuYWRkQWxsVG9DYXJ0KGl0ZW1zKTsgIC8vIEFjdHVhbGl6YSBlbCBjYXJyaXRvXHJcbiAgICAgICAgICAgIHRoaXMudXBkYXRlU3RvY2s9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLmV4aXRVcGRhdGUgPSB0cnVlO1xyXG4gICAgICAgICAgICAvLyB0aGlzLnVwZGF0ZUFsbFN0b2NrKCk7ICAvLyBWdWVsdmUgYSB2ZXJpZmljYXIgZWwgc3RvY2tcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgICBcclxuICAgICAgXHJcblxyXG4gICAgZ2V0VmFyaWFudHMgPSBwcm9kdWN0ID0+IHtcclxuXHJcbiAgICAgICAgbGV0IGl0ZW0gPSBwcm9kdWN0LnByb2R1Y3RcclxuXHJcbiAgICAgICAgaWYgKGl0ZW0udmFyaWFudHMgJiYgaXRlbS52YXJpYW50cy5sZW5ndGggJiYgaXRlbS52YXJpYW50c1swXS5vcHRpb25zICYmIGl0ZW0udmFyaWFudHNbMF0ub3B0aW9ucy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgIGxldCBvcHRpb25zID0gaXRlbS52YXJpYW50c1swXS5vcHRpb25zXHJcbiAgICAgICAgICAgICBvcHRpb25zID0gb3B0aW9ucy5maWx0ZXIob3B0aW9uID0+IHRoaXMudmFyaWFudHNUb1Nob3cuZmluZChuYW1lID0+IG9wdGlvbi5oYXNPd25Qcm9wZXJ0eShuYW1lKSkpXHJcbiAgICAgICAgICAgICBsZXQgb3B0aW9uc01hcCA9IFtdXHJcbiAgICAgICAgICAgICBvcHRpb25zLm1hcChvcHRpb24gPT4ge1xyXG4gICAgICAgICAgICAgIE9iamVjdC5rZXlzKG9wdGlvbikuZm9yRWFjaCgoZW50cnkpID0+IHtcclxuICAgICAgICAgICAgICAgICAgbGV0IG9wdGlvbkFkZGVkID0gZmFsc2U7ICAvLyBWYXJpYWJsZSBwYXJhIGV2aXRhciBtw7psdGlwbGVzIGluc2VyY2lvbmVzXHJcbiAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgaXRlbS5vcHRpb25zLmZvckVhY2gob3B0aW9uMiA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBpZiAob3B0aW9uMi5jb2RlID09ICdDT0xPUicpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb24yLnZhbHVlcy5mb3JFYWNoKGNvbG9yID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNvbG9yLmNvZGUgPT0gb3B0aW9uW2VudHJ5XSAmJiAhb3B0aW9uQWRkZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnNNYXAucHVzaCh7IG5hbWU6IGVudHJ5LCB2YWx1ZTogb3B0aW9uW2VudHJ5XSwgaW1hZ2U6IGNvbG9yLmltYWdlLCBtb2JpbGVJbWFnZTogY29sb3IubW9iaWxlSW1hZ2UgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25BZGRlZCA9IHRydWU7IC8vIE1hcmNhciBvcGNpw7NuIGFncmVnYWRhXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgIH0gXHJcbiAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgLy8gU2kgbm8gc2UgYcOxYWRpw7MgbGEgb3BjacOzbiBkZSBDT0xPUiwgbWFuZWphciBvdHJhcyBvcGNpb25lc1xyXG4gICAgICAgICAgICAgICAgICAgaWYgKCFvcHRpb25BZGRlZCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgaXRlbS5vcHRpb25zLmZvckVhY2gob3B0aW9uMiA9PiB7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvcHRpb24yLmNvZGUgIT09ICdDT0xPUicpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uc01hcC5wdXNoKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IGVudHJ5LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IG9wdGlvbltlbnRyeV1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25BZGRlZCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICByZXR1cm4gb3B0aW9uc01hcDtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgXHJcbiAgICAgICAgICAgICByZXR1cm4gb3B0aW9uc01hcDtcclxuXHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgIHJldHVybiBudWxsXHJcbiAgICAgICAgfVxyXG5cclxuICAgfVxyXG5cclxuICAgY3JlYXRlRGlzY291bnRNZXNzYWdlKHNhbGVwcmljZTogbnVtYmVyLCBwcmljZTogbnVtYmVyKTogc3RyaW5nIHtcclxuICAgIGlmIChpc05hTihzYWxlcHJpY2UpIHx8IGlzTmFOKHByaWNlKSB8fCBzYWxlcHJpY2UgPj0gcHJpY2UgfHwgc2FsZXByaWNlIDw9IDAgfHwgcHJpY2UgPD0gMCkge1xyXG4gICAgICAgICByZXR1cm4gJyc7XHJcbiAgICB9XHJcblxyXG4gICAgbGV0IGRpc2NvdW50UGVyY2VudGFnZSA9IE1hdGgucm91bmQoKChwcmljZSAtIHNhbGVwcmljZSkgLyBwcmljZSkgKiAxMDApO1xyXG5cclxuICAgIGxldCBkaXNjb3VudE1lc3NhZ2UgPSBgJHtkaXNjb3VudFBlcmNlbnRhZ2V9JSBPRkZgO1xyXG4gICAgcmV0dXJuIGRpc2NvdW50TWVzc2FnZTtcclxufVxyXG5nZXRNaW5pbXVtUHVyY2hhc2VBbW91bnQgPSAoKSA9PiB7XHJcbiAgICByZXR1cm4gdGhpcy5jaGFubmVsLnR5cGUgPT0gJ2IyYicgPyB0aGlzLmNoYW5uZWwud2hvbGVzYWxlck1pbmltdW1QdXJjaGFzZUFtb3VudCA6IHRoaXMuY2hhbm5lbC5yZXRhaWxlck1pbmltdW1QdXJjaGFzZUFtb3VudFxyXG5cclxufVxyXG5cclxuZXhjZWVkc01pbmltdW1BbW91bnQgPSAodmFsdWU6IG51bWJlcikgPT4gdmFsdWUgPj0gdGhpcy5nZXRNaW5pbXVtUHVyY2hhc2VBbW91bnQoKSA/IHRoaXMucmVkaXJlY3RDaGVja291dCgpIDogdGhpcy50b2FzdHJTZXJ2aWNlLnNob3coJ3F1YW50aXR5LW5vdC1leGNlZWRlZCcsIHsgYW1vdW50OiB0aGlzLmdldE1pbmltdW1QdXJjaGFzZUFtb3VudCgpIH0pXHJcblxyXG5cclxufVxyXG5cclxuXHJcblxyXG5cclxuXHJcblxyXG5cclxuXHJcblxyXG5cclxuXHJcbiJdfQ==
|
package/esm2015/lib/ec-component/widgets-ec/bancard-catastro-ec/bancard-catastro-ec.component.js
CHANGED
|
@@ -249,6 +249,9 @@ let BancardCatastroEcComponent = class BancardCatastroEcComponent extends Compon
|
|
|
249
249
|
}, 1000);
|
|
250
250
|
}
|
|
251
251
|
}
|
|
252
|
+
openModal() {
|
|
253
|
+
this.infoPreview = true;
|
|
254
|
+
}
|
|
252
255
|
closeModal() {
|
|
253
256
|
}
|
|
254
257
|
};
|
|
@@ -285,9 +288,9 @@ __decorate([
|
|
|
285
288
|
BancardCatastroEcComponent = __decorate([
|
|
286
289
|
Component({
|
|
287
290
|
selector: 'app-bancard-catastro-ec',
|
|
288
|
-
template: "<div *ngIf=\"!loading; else loadingView\">\r\n <div class=\"row my-3\">\r\n <ng-container *ngIf=\"registered_cards && registered_cards.length > 0; else notCards\">\r\n <ng-container *ngFor=\"let card of registered_cards; let x=index\">\r\n <div class=\"col-12 col-md-6\">\r\n <div class=\"card my-2\">\r\n <div class=\"card-body\">\r\n <div class=\"row\">\r\n <div class=\"col-12 col-md-9\">\r\n <h5 class=\"card-title\">Terminada en {{card.card_masked_number.slice(-4)}}</h5>\r\n <!-- <h6 class=\"card-subtitle mb-2 text-muted\">Card subtitle</h6> -->\r\n <!-- <p class=\"card-text\">Some quick example text to build on the card title and make up the bulk of the card's content.</p>\r\n -->\r\n <p class=\"card-text text-muted\">{{card.card_brand}}</p>\r\n <p class=\"card-text text-muted\">Vencimiento: {{card.expiration_date}}</p>\r\n </div>\r\n <div class=\"col-3 d-none d-md-flex\">\r\n <div class=\"d-flex flex-column justify-content-between align-items-center w-100\">\r\n <div class=\"d-flex justify-content-end w-100\">\r\n <a class=\"cursor-pointer text-primary\" (click)=\"deleteCard(card.card_id)\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" fill=\"currentColor\" class=\"bi bi-trash3\"\r\n viewBox=\"0 0 16 16\">\r\n <path\r\n d=\"M6.5 1h3a.5.5 0 0 1 .5.5v1H6v-1a.5.5 0 0 1 .5-.5ZM11 2.5v-1A1.5 1.5 0 0 0 9.5 0h-3A1.5 1.5 0 0 0 5 1.5v1H2.506a.58.58 0 0 0-.01 0H1.5a.5.5 0 0 0 0 1h.538l.853 10.66A2 2 0 0 0 4.885 16h6.23a2 2 0 0 0 1.994-1.84l.853-10.66h.538a.5.5 0 0 0 0-1h-.995a.59.59 0 0 0-.01 0H11Zm1.958 1-.846 10.58a1 1 0 0 1-.997.92h-6.23a1 1 0 0 1-.997-.92L3.042 3.5h9.916Zm-7.487 1a.5.5 0 0 1 .528.47l.5 8.5a.5.5 0 0 1-.998.06L5 5.03a.5.5 0 0 1 .47-.53Zm5.058 0a.5.5 0 0 1 .47.53l-.5 8.5a.5.5 0 1 1-.998-.06l.5-8.5a.5.5 0 0 1 .528-.47ZM8 4.5a.5.5 0 0 1 .5.5v8.5a.5.5 0 0 1-1 0V5a.5.5 0 0 1 .5-.5Z\" />\r\n </svg>\r\n </a>\r\n </div>\r\n <img [src]=\"getCardImg(card.card_brand)\" class=\"img-card\" />\r\n \r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"card-footer d-flex flex-row justify-content-end\">\r\n <ng-container *ngIf=\"!checkingPayment; else buttonLoading\">\r\n <button *ngIf=\"card.card_type == 'credit'; else debito\" class=\"btn comprar text-white\" data-bs-toggle=\"modal\"\r\n data-bs-target=\"#modalCuotas\" (click)=\"setCurrentCardID(card.card_id)\">Pagar</button>\r\n <ng-template #debito>\r\n <button class=\"btn comprar text-white\" (click)=\"toPay(card.card_id)\">Pagar</button>\r\n </ng-template>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n <ng-template #notCards>\r\n <div class=\"col-12 d-flex justify-content-center\">\r\n <h6>Usted no posee tarjetas registrada. Para continuar con este m\u00E9todo de pago por favor registre una\r\n tarjeta presionando el bot\u00F3n de <span class=\"text-decoration-underline fs-6\"> Nueva tarjeta</span>\r\n </h6>\r\n </div>\r\n </ng-template>\r\n </div>\r\n <div class=\"d-flex flex-row w-full justify-content-center\">\r\n <button class=\"btn comprar text-white\" data-bs-toggle=\"modal\" data-bs-target=\"#catastro\"\r\n (click)=\"getProcessId()\">Nueva Tarjeta</button>\r\n </div>\r\n</div>\r\n\r\n<div class=\"modal\" tabindex=\"-1\" id=\"catastro\">\r\n <div class=\"modal-dialog\">\r\n <div class=\"modal-content\">\r\n <div class=\"modal-header\">\r\n <!-- <h5 class=\"modal-title\">Modal title</h5> -->\r\n <button type=\"button\" class=\"btn-close\" data-bs-dismiss=\"modal\" aria-label=\"Close\"\r\n (click)=\"closeModal()\"></button>\r\n </div>\r\n <div class=\"modal-body d-flex flex-column justify-content-center align-items-center\">\r\n <ng-container *ngIf=\"infoPreview; else iframe\">\r\n <div class=\"alert alert-warning \" role=\"alert\">\r\n <p class=\"mb-0\">Estimado usuario,</p>\r\n <p> A continuaci\u00F3n usted pasar\u00E1 por \u00FAnica vez por un proceso de\r\n validaci\u00F3n con preguntas de seguridad. Para iniciar favor tener en\r\n cuenta las siguientes recomendaciones:</p>\r\n <ol class=\"list-group list-group-numbered\">\r\n <li class=\"list-group-item list-group-item-warning\">Verifique su n\u00FAmero de c\u00E9dula de\r\n identidad</li>\r\n <li class=\"list-group-item list-group-item-warning\">Tenga a mano sus tarjetas de cr\u00E9dito y\r\n d\u00E9bito activas</li>\r\n <li class=\"list-group-item list-group-item-warning\">Verifique el monto y lugar de sus\r\n \u00FAltimas compras en\r\n comercios o extracciones en cajeros</li>\r\n </ol>\r\n </div>\r\n <div class=\"d-flex flex-row w-full justify-content-center\">\r\n <a class=\"cursor-pointer text-dark fs-xs\" (click)=\"skipInfoPreview()\">Saltar</a>\r\n </div>\r\n </ng-container>\r\n <ng-template #iframe>\r\n <iframe *ngIf=\"url; else loadingView\" [src]=\"url\" frameborder=\"0\" class=\"iframeStyle\"></iframe>\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n\r\n<!-- Modal -->\r\n<div class=\"modal fade\" id=\"modalCuotas\" tabindex=\"-1\" aria-labelledby=\"exampleModalLabel\" aria-hidden=\"true\">\r\n <div class=\"modal-dialog modal-dialog-centered modal-sm\">\r\n <div class=\"modal-content\">\r\n <div class=\"modal-header\">\r\n <h5 class=\"modal-title\" id=\"exampleModalLabel\">Elija el n\u00FAmero de cuotas</h5>\r\n <button type=\"button\" class=\"btn-close\" data-bs-dismiss=\"modal\" aria-label=\"Close\"></button>\r\n </div>\r\n <div class=\"modal-body\">\r\n <select class=\"form-select\" aria-label=\"Default select example\"\r\n (change)=\"setNumberOfPayments($event.target.value)\">\r\n <option selected disabled>Selecciones la cantidad de cuotas</option>\r\n <option value=\"1\">1 cuota</option>\r\n <option value=\"3\">3 cuotas</option>\r\n <option value=\"6\">6 cuotas</option>\r\n <option value=\"12\">12 cuotas</option>\r\n </select>\r\n </div>\r\n <div class=\"modal-footer\" *ngIf=\"canPay()\">\r\n <button type=\"button\" class=\"btn comprar text-white\" data-bs-dismiss=\"modal\"\r\n (click)=\"toPay(currentCardID)\">Pagar</button>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<ng-template #loadingView>\r\n <div>\r\n <app-loading-inline-ec></app-loading-inline-ec>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #buttonLoading>\r\n <button type=\"button\" class=\"btn comprar text-white\" data-bs-dismiss=\"modal\"> \r\n <app-loading-inline-ec></app-loading-inline-ec>\r\n </button>\r\n</ng-template>",
|
|
291
|
+
template: "<div *ngIf=\"!loading; else loadingView\">\r\n <div class=\"row my-3\">\r\n <ng-container *ngIf=\"registered_cards && registered_cards.length > 0; else notCards\">\r\n <ng-container *ngFor=\"let card of registered_cards; let x=index\">\r\n <div class=\"col-12 col-md-6\">\r\n <div class=\"card my-2\">\r\n <div class=\"card-body\">\r\n <div class=\"row\">\r\n <div class=\"col-12 col-md-9\">\r\n <h5 class=\"card-title\">Terminada en {{card.card_masked_number.slice(-4)}}</h5>\r\n <!-- <h6 class=\"card-subtitle mb-2 text-muted\">Card subtitle</h6> -->\r\n <!-- <p class=\"card-text\">Some quick example text to build on the card title and make up the bulk of the card's content.</p>\r\n -->\r\n <p class=\"card-text text-muted\">{{card.card_brand}}</p>\r\n <p class=\"card-text text-muted\">Vencimiento: {{card.expiration_date}}</p>\r\n </div>\r\n <div class=\"col-3 d-none d-md-flex\">\r\n <div class=\"d-flex flex-column justify-content-between align-items-center w-100\">\r\n <div class=\"d-flex justify-content-end w-100\">\r\n <a class=\"cursor-pointer text-primary\" (click)=\"deleteCard(card.card_id)\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" fill=\"currentColor\" class=\"bi bi-trash3\"\r\n viewBox=\"0 0 16 16\">\r\n <path\r\n d=\"M6.5 1h3a.5.5 0 0 1 .5.5v1H6v-1a.5.5 0 0 1 .5-.5ZM11 2.5v-1A1.5 1.5 0 0 0 9.5 0h-3A1.5 1.5 0 0 0 5 1.5v1H2.506a.58.58 0 0 0-.01 0H1.5a.5.5 0 0 0 0 1h.538l.853 10.66A2 2 0 0 0 4.885 16h6.23a2 2 0 0 0 1.994-1.84l.853-10.66h.538a.5.5 0 0 0 0-1h-.995a.59.59 0 0 0-.01 0H11Zm1.958 1-.846 10.58a1 1 0 0 1-.997.92h-6.23a1 1 0 0 1-.997-.92L3.042 3.5h9.916Zm-7.487 1a.5.5 0 0 1 .528.47l.5 8.5a.5.5 0 0 1-.998.06L5 5.03a.5.5 0 0 1 .47-.53Zm5.058 0a.5.5 0 0 1 .47.53l-.5 8.5a.5.5 0 1 1-.998-.06l.5-8.5a.5.5 0 0 1 .528-.47ZM8 4.5a.5.5 0 0 1 .5.5v8.5a.5.5 0 0 1-1 0V5a.5.5 0 0 1 .5-.5Z\" />\r\n </svg>\r\n </a>\r\n </div>\r\n <img [src]=\"getCardImg(card.card_brand)\" class=\"img-card\" />\r\n \r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"card-footer d-flex flex-row justify-content-end\">\r\n <ng-container *ngIf=\"!checkingPayment; else buttonLoading\">\r\n <button *ngIf=\"card.card_type == 'credit'; else debito\" class=\"btn comprar text-white\" data-bs-toggle=\"modal\"\r\n data-bs-target=\"#modalCuotas\" (click)=\"setCurrentCardID(card.card_id)\">Pagar</button>\r\n <ng-template #debito>\r\n <button class=\"btn comprar text-white\" (click)=\"toPay(card.card_id)\">Pagar</button>\r\n </ng-template>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n <ng-template #notCards>\r\n <div class=\"col-12 d-flex justify-content-center\">\r\n <h6>Usted no posee tarjetas registrada. Para continuar con este m\u00E9todo de pago por favor registre una\r\n tarjeta presionando el bot\u00F3n de <span class=\"text-decoration-underline fs-6\"> Nueva tarjeta</span>\r\n </h6>\r\n </div>\r\n </ng-template>\r\n </div>\r\n <div class=\"d-flex flex-row w-full justify-content-center\">\r\n <button class=\"btn comprar text-white\" data-bs-toggle=\"modal\" data-bs-target=\"#catastro\"\r\n (click)=\"getProcessId(); openModal()\">Nueva Tarjeta</button>\r\n </div>\r\n</div>\r\n\r\n<div class=\"modal\" tabindex=\"-1\" id=\"catastro\">\r\n <div class=\"modal-dialog\">\r\n <div class=\"modal-content\">\r\n <div class=\"modal-header\">\r\n <!-- <h5 class=\"modal-title\">Modal title</h5> -->\r\n <button type=\"button\" class=\"btn-close\" data-bs-dismiss=\"modal\" aria-label=\"Close\"\r\n (click)=\"closeModal()\"></button>\r\n </div>\r\n <div class=\"modal-body d-flex flex-column justify-content-center align-items-center\">\r\n <ng-container *ngIf=\"infoPreview; else iframe\">\r\n <div class=\"alert alert-warning \" role=\"alert\">\r\n <p class=\"mb-0\">Estimado usuario,</p>\r\n <p> A continuaci\u00F3n usted pasar\u00E1 por \u00FAnica vez por un proceso de\r\n validaci\u00F3n con preguntas de seguridad. Para iniciar favor tener en\r\n cuenta las siguientes recomendaciones:</p>\r\n <ol class=\"list-group list-group-numbered\">\r\n <li class=\"list-group-item list-group-item-warning\">Verifique su n\u00FAmero de c\u00E9dula de\r\n identidad</li>\r\n <li class=\"list-group-item list-group-item-warning\">Tenga a mano sus tarjetas de cr\u00E9dito y\r\n d\u00E9bito activas</li>\r\n <li class=\"list-group-item list-group-item-warning\">Verifique el monto y lugar de sus\r\n \u00FAltimas compras en\r\n comercios o extracciones en cajeros</li>\r\n </ol>\r\n </div>\r\n <div class=\"d-flex flex-row w-full justify-content-center\">\r\n <a class=\"cursor-pointer text-dark fs-xs\" (click)=\"skipInfoPreview()\">Saltar</a>\r\n </div>\r\n </ng-container>\r\n <ng-template #iframe>\r\n <iframe *ngIf=\"url; else loadingView\" [src]=\"url\" frameborder=\"0\" class=\"iframeStyle\"></iframe>\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n\r\n<!-- Modal -->\r\n<div class=\"modal fade\" id=\"modalCuotas\" tabindex=\"-1\" aria-labelledby=\"exampleModalLabel\" aria-hidden=\"true\">\r\n <div class=\"modal-dialog modal-dialog-centered modal-sm\">\r\n <div class=\"modal-content\">\r\n <div class=\"modal-header\">\r\n <h5 class=\"modal-title\" id=\"exampleModalLabel\">Elija el n\u00FAmero de cuotas</h5>\r\n <button type=\"button\" class=\"btn-close\" data-bs-dismiss=\"modal\" aria-label=\"Close\"></button>\r\n </div>\r\n <div class=\"modal-body\">\r\n <select class=\"form-select\" aria-label=\"Default select example\"\r\n (change)=\"setNumberOfPayments($event.target.value)\">\r\n <option selected disabled>Selecciones la cantidad de cuotas</option>\r\n <option value=\"1\">1 cuota</option>\r\n <option value=\"3\">3 cuotas</option>\r\n <option value=\"6\">6 cuotas</option>\r\n <option value=\"12\">12 cuotas</option>\r\n </select>\r\n </div>\r\n <div class=\"modal-footer\" *ngIf=\"canPay()\">\r\n <button type=\"button\" class=\"btn comprar text-white\" data-bs-dismiss=\"modal\"\r\n (click)=\"toPay(currentCardID)\">Pagar</button>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<ng-template #loadingView>\r\n <div>\r\n <app-loading-inline-ec></app-loading-inline-ec>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #buttonLoading>\r\n <button type=\"button\" class=\"btn comprar text-white\" data-bs-dismiss=\"modal\"> \r\n <app-loading-inline-ec></app-loading-inline-ec>\r\n </button>\r\n</ng-template>",
|
|
289
292
|
styles: [".iframeStyle{min-height:520px!important;width:80%}.img-card{width:90px;height:90px}"]
|
|
290
293
|
})
|
|
291
294
|
], BancardCatastroEcComponent);
|
|
292
295
|
export { BancardCatastroEcComponent };
|
|
293
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFuY2FyZC1jYXRhc3Ryby1lYy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZy1lYXN5Y29tbWVyY2UvIiwic291cmNlcyI6WyJsaWIvZWMtY29tcG9uZW50L3dpZGdldHMtZWMvYmFuY2FyZC1jYXRhc3Ryby1lYy9iYW5jYXJkLWNhdGFzdHJvLWVjLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3hILE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNwRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDcEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUM3RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFPNUQsSUFBYSwwQkFBMEIsR0FBdkMsTUFBYSwwQkFBMkIsU0FBUSxlQUFlO0lBNEIzRCxZQUNjLE1BQWlCLEVBQ2pCLFVBQTZCLEVBQ2hDLFdBQXdCLEVBQ3hCLFNBQXVCLEVBQ3BCLE1BQW9CLEVBQ3RCLEVBQXFCLEVBQ3JCLFFBQW1CO1FBRTNCLEtBQUssRUFBRSxDQUFDO1FBUkUsV0FBTSxHQUFOLE1BQU0sQ0FBVztRQUNqQixlQUFVLEdBQVYsVUFBVSxDQUFtQjtRQUNoQyxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixjQUFTLEdBQVQsU0FBUyxDQUFjO1FBQ3BCLFdBQU0sR0FBTixNQUFNLENBQWM7UUFDdEIsT0FBRSxHQUFGLEVBQUUsQ0FB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dXQsIE9uSW5pdCwgT3V0cHV0LCBDaGFuZ2VEZXRlY3RvclJlZiwgT25EZXN0cm95LCBSZW5kZXJlcjIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRG9tU2FuaXRpemVyIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XHJcbmltcG9ydCB7IENvbm5lY3Rpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vYXBpL2Nvbm5lY3Rpb24uc2VydmljZSc7XHJcbmltcG9ydCB7IENvbXBvbmVudEhlbHBlciB9IGZyb20gJy4uLy4uLy4uL2NsYXNzZXMvY29tcG9uZW50LWhlbHBlcic7XHJcbmltcG9ydCB7IENvbnN0YW50cyB9IGZyb20gJy4uLy4uLy4uL2NvcmUuY29uc3RzJztcclxuaW1wb3J0IHsgQ2FydFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9jYXJ0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBUb2FzdFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi91dGlscy90b2FzdC5zZXJ2aWNlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdhcHAtYmFuY2FyZC1jYXRhc3Ryby1lYycsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vYmFuY2FyZC1jYXRhc3Ryby1lYy5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZVVybHM6IFsnLi9iYW5jYXJkLWNhdGFzdHJvLWVjLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIEJhbmNhcmRDYXRhc3Ryb0VjQ29tcG9uZW50IGV4dGVuZHMgQ29tcG9uZW50SGVscGVyIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG5cclxuICAgIEBJbnB1dCgpIHBheW1lbnRTZXJ2aWNlSW5zdDtcclxuICAgIEBJbnB1dCgpIG1ldGhvZCA9IG51bGw7XHJcbiAgICBASW5wdXQoKSB0b3RhbF9hbW91bnQgPSAwO1xyXG4gICAgQElucHV0KCkgYWxsRGF0YTtcclxuICAgIEBJbnB1dCgpIHVzZXJfZGF0YSA9IG51bGw7XHJcbiAgICBAT3V0cHV0KCkgcmVhZHkgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgICBAT3V0cHV0KCkgY2FyZEFkZGVkID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpOyAgLy8gTnVldm8gZXZlbnRvIHBhcmEgbm90aWZpY2FyIGxhIHRhcmpldGEgYWdyZWdhZGFcclxuXHJcbiAgICBwdWJsaWMgbG9hZGluZzogQm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgcHVibGljIGNoZWNraW5nUGF5bWVudDogQm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgcHVibGljIHJlZ2lzdGVyZWRfY2FyZHM6IGFueVtdID0gW107XHJcbiAgICBwdWJsaWMgcHJvY2Vzc19pZDogc3RyaW5nO1xyXG4gICAgcHVibGljIHVybDogYW55O1xyXG4gICAgcHVibGljIGluZm9QcmV2aWV3OiBib29sZWFuID0gdHJ1ZTtcclxuICAgIHB1YmxpYyBjYXJkTmFtZXM6IHN0cmluZ1tdID0gWyd2aXNhJywgJ21hc3RlcmNhcmQnLCAnYmFuY2FyZCddO1xyXG4gICAgcHVibGljIGN1cnJlbnRDYXJkSUQ6IG51bWJlciA9IC0xO1xyXG4gICAgcHJpdmF0ZSBzZW5kVG9QYXk6IGFueSA9IHtcclxuICAgICAgICBhbGlhc190b2tlbjogJycsXHJcbiAgICAgICAgbnVtYmVyX29mX3BheW1lbnRzOiAwXHJcbiAgICB9O1xyXG5cclxuICAgIHByaXZhdGUgdXNlckNhcmRzUmVjb3ZlcnlBcGkgPSAoKSA9PiAnc2hvcC1hcGkvJyArIHRoaXMuY29uc3RzLmdldENoYW5uZWwoKSArICcvYmFuY2FyZC8nICsgdGhpcy5jYXJ0U2VydmljZS5jYXJ0X3Rva2VuICsgJy9jYXRhc3Ryby11c2VyLWNhcmRzLXJlY292ZXJ5JztcclxuICAgIHByaXZhdGUgbmV3VXNlckNhcmRBcGkgPSAoKSA9PiAnc2hvcC1hcGkvJyArIHRoaXMuY29uc3RzLmdldENoYW5uZWwoKSArICcvYmFuY2FyZC8nICsgdGhpcy5jYXJ0U2VydmljZS5jYXJ0X3Rva2VuICsgJy9jYXRhc3Ryby1uZXctdXNlci1jYXJkJztcclxuICAgIHByaXZhdGUgdG9QYXlBcGkgPSAoKSA9PiAnc2hvcC1hcGkvJyArIHRoaXMuY29uc3RzLmdldENoYW5uZWwoKSArICcvYmFuY2FyZC8nICsgdGhpcy5jYXJ0U2VydmljZS5jYXJ0X3Rva2VuICsgJy9jYXRhc3Ryby10b2tlbi1wYXltZW50JztcclxuICAgIHByaXZhdGUgZGVsZXRlQ2FyZEFwaSA9ICgpID0+ICdzaG9wLWFwaS8nICsgdGhpcy5jb25zdHMuZ2V0Q2hhbm5lbCgpICsgJy9iYW5jYXJkLycgKyB0aGlzLmNhcnRTZXJ2aWNlLmNhcnRfdG9rZW4gKyAnL2NhdGFzdHJvLWRlbGV0ZS1jYXJkJztcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBwcm90ZWN0ZWQgY29uc3RzOiBDb25zdGFudHMsXHJcbiAgICAgICAgcHJvdGVjdGVkIGNvbm5lY3Rpb246IENvbm5lY3Rpb25TZXJ2aWNlLFxyXG4gICAgICAgIHB1YmxpYyBjYXJ0U2VydmljZTogQ2FydFNlcnZpY2UsXHJcbiAgICAgICAgcHVibGljIHNhbml0aXplcjogRG9tU2FuaXRpemVyLFxyXG4gICAgICAgIHByb3RlY3RlZCB0b2FzdHI6IFRvYXN0U2VydmljZSxcclxuICAgICAgICBwcml2YXRlIGNkOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgICAgICBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIgXHJcbiAgICApIHtcclxuICAgICAgICBzdXBlcigpO1xyXG4gICAgICAgIHRoaXMubG9hZENhcmRzKCk7XHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkluaXQoKSB7XHJcbiAgICAgICAgLy8gQcOxYWRlIHVuIGxpc3RlbmVyIHBhcmEgcmVjaWJpciBtZW5zYWplcyBkZXNkZSBlbCBpZnJhbWVcclxuICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcIm1lc3NhZ2VcIiwgdGhpcy5oYW5kbGVNZXNzYWdlLmJpbmQodGhpcykpO1xyXG4gICAgfVxyXG5cclxuICAgIG5nT25EZXN0cm95KCkge1xyXG4gICAgICAgIC8vIEVsaW1pbmEgZWwgbGlzdGVuZXIgY3VhbmRvIGVsIGNvbXBvbmVudGUgc2UgZGVzdHJ1eWVcclxuICAgICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcihcIm1lc3NhZ2VcIiwgdGhpcy5oYW5kbGVNZXNzYWdlLmJpbmQodGhpcykpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQGRlc2NyaXB0aW9uIG9idGllbmUgbGFzIHRhcmpldGFzIGFsbWFjZW5hZGFzIHBhcmEgZWwgdXN1YXJpby5cclxuICAgICAqL1xyXG4gICAgbG9hZENhcmRzID0gKCkgPT4ge1xyXG4gICAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5jb25uZWN0aW9uLmdldCh0aGlzLnVzZXJDYXJkc1JlY292ZXJ5QXBpKCkpLnRvUHJvbWlzZSgpLnRoZW4oXHJcbiAgICAgICAgICAgIHJlcyA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnJlZ2lzdGVyZWRfY2FyZHMgPSByZXMucmVnaXN0ZXJlZF9jYXJkcztcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdyZWdpc3RlcmVkIGNhcmRzICcsIHRoaXMucmVnaXN0ZXJlZF9jYXJkcyk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgZXJyID0+IHsgXHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhlcnIpOyBcclxuICAgICAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlOyBcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAZGVzY3JpcHRpb24gb2J0ZW5nbyBlbCBwcm9jZXNzIElEXHJcbiAgICAgKi9cclxuICAgIGdldFByb2Nlc3NJZCA9ICgpID0+IHtcclxuICAgICAgICB0aGlzLmNvbm5lY3Rpb24uZ2V0KHRoaXMubmV3VXNlckNhcmRBcGkoKSkudG9Qcm9taXNlKCkudGhlbihcclxuICAgICAgICAgICAgcmVzID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMucHJvY2Vzc19pZCA9IHJlcy5wcm9jZXNzX2lkO1xyXG4gICAgICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ2NhdGFzdHJvX2RhdGEnLCBKU09OLnN0cmluZ2lmeShyZXMpKTtcclxuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5mb1ByZXZpZXcgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIH0sIDUwMDApO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5nZXRJRnJhbWVOZXdDYXJkKCk7XHJcbiAgICAgICAgICAgIH0sIFxyXG4gICAgICAgICAgICBlcnIgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coZXJyKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAZGVzY3JpcHRpb24gT2J0ZW5nbyBlbCBJRnJhbWUgZG9uZGUgc2UgbW9zdHJhcmEgZWwgZm9ybXVsYXJpbyBwYXJhIHJlZ2lzdHJhciB1bmEgbnVldmEgdGFyamV0YVxyXG4gICAgICovXHJcbiAgICBnZXRJRnJhbWVOZXdDYXJkID0gKCkgPT4ge1xyXG4gICAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7XHJcbiAgICAgICAgdGhpcy51cmwgPSB0aGlzLnNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0UmVzb3VyY2VVcmwoJ2Fzc2V0cy9iYW5jYXJkQ2F0YXN0cm8uaHRtbCcpO1xyXG4gICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQGRlc2NyaXB0aW9uIE1hbmVqYSBsb3MgbWVuc2FqZXMgcmVjaWJpZG9zIGRlc2RlIGVsIGlmcmFtZVxyXG4gICAgICovXHJcbiAgICBoYW5kbGVNZXNzYWdlKGV2ZW50OiBNZXNzYWdlRXZlbnQpIHtcclxuICAgICAgICBpZiAoZXZlbnQuZGF0YT8uc3RhdHVzID09PSBcInN1Y2Nlc3NcIikge1xyXG4gICAgICAgICAgICB0aGlzLmxvYWRDYXJkcygpO1xyXG4gICAgICAgICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgLy8gQWdyZWdhIHVuIHRpbWVvdXQgYW50ZXMgZGUgY2VycmFyIGVsIG1vZGFsXHJcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgbW9kYWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImNhdGFzdHJvXCIpO1xyXG5cclxuICAgICAgICAgICAgICAgIGlmIChtb2RhbCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGJvb3RzdHJhcE1vZGFsID0gKHdpbmRvdyBhcyBhbnkpLmJvb3RzdHJhcC5Nb2RhbC5nZXRJbnN0YW5jZShtb2RhbCk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGJvb3RzdHJhcE1vZGFsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJvb3RzdHJhcE1vZGFsLmhpZGUoKTtcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKG1vZGFsLCAnZGlzcGxheScsICdub25lJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIC8vIFJlY2FyZ2EgbGFzIHRhcmpldGFzIHBhcmEgbW9zdHJhciBsYSBudWV2YSB0YXJqZXRhIGVuIGxhIHZpc3RhXHJcbiAgICAgICAgICAgICAgICAvLyBGb3J6YXIgbGEgZGV0ZWNjacOzbiBkZSBjYW1iaW9zIGVuIEFuZ3VsYXJcclxuICAgICAgICAgICAgfSwgMjAwMCk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChldmVudC5kYXRhPy5zdGF0dXMgPT09IFwiZXJyb3JcIikge1xyXG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IG1vZGFsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJjYXRhc3Ryb1wiKTtcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgaWYgKG1vZGFsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYm9vdHN0cmFwTW9kYWwgPSAod2luZG93IGFzIGFueSkuYm9vdHN0cmFwLk1vZGFsLmdldEluc3RhbmNlKG1vZGFsKTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoYm9vdHN0cmFwTW9kYWwpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYm9vdHN0cmFwTW9kYWwuaGlkZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUobW9kYWwsICdkaXNwbGF5JywgJ25vbmUnKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB0aGlzLnRvYXN0ci5zaG93KCdFUlJPUiEgJyArIGV2ZW50LmRhdGE/Lm1lc3NhZ2UpXHJcbiAgICAgICAgICAgICAgICAvLyBSZWNhcmdhIGxhcyB0YXJqZXRhcyBwYXJhIG1vc3RyYXIgbGEgbnVldmEgdGFyamV0YSBlbiBsYSB2aXN0YVxyXG4gICAgICAgICAgICAgICAgLy8gRm9yemFyIGxhIGRldGVjY2nDs24gZGUgY2FtYmlvcyBlbiBBbmd1bGFyXHJcbiAgICAgICAgICAgIH0sIDEwMDApO1xyXG4gICAgICAgICAgICBcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgXHJcbiAgICBjbG9zZU1vZGFsKCl7XHJcbiAgICAgICAgXHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAZGVzY3JpcHRpb24gcGFyYSBzYWx0ZWFyIGVsIG1lbnNhamUgcHJldmlvLiBcclxuICAgICAqIEByZXR1cm5zIFxyXG4gICAgICovXHJcbiAgICBza2lwSW5mb1ByZXZpZXcgPSAoKSA9PiB0aGlzLmluZm9QcmV2aWV3ID0gZmFsc2VcclxuXHJcbiAgICAvKipcclxuICAgICAqIEBkZXNjcmlwdGlvbiBwYXJhIG9idGVuZXIgbGEgaW1hZ2VuIGRlIGxhIHRhcmpldGEgZGVzZGUgbG9zIGFzc2V0c1xyXG4gICAgICogQHBhcmFtIG5hbWUgbm9tYnJlIGRlIGxhIHRhcmpldGFcclxuICAgICAqIEByZXR1cm5zIFxyXG4gICAgICovXHJcbiAgICBnZXRDYXJkSW1nID0gKG5hbWU6IHN0cmluZykgPT4ge1xyXG4gICAgICAgIGxldCB1cmxJbWcgPSAnYXNzZXRzL2ltYWdlcy8nO1xyXG4gICAgICAgIHRoaXMuY2FyZE5hbWVzLmZvckVhY2goZWxlbSA9PiB7XHJcbiAgICAgICAgICAgIC8vY29uc29sZS5sb2coZWxlbSwgbmFtZS50b0xvY2FsZUxvd2VyQ2FzZSgpLmluY2x1ZGVzKGVsZW0pLCB1cmxJbWcrZWxlbSsnLnBuZycgKVxyXG4gICAgICAgICAgICBuYW1lLnRvTG9jYWxlTG93ZXJDYXNlKCkuaW5jbHVkZXMoZWxlbSkgPyB1cmxJbWcgPSB1cmxJbWcgKyBlbGVtICsgJy5wbmcnIDogbnVsbFxyXG4gICAgICAgIH0pXHJcbiAgICAgICAgLy9jb25zb2xlLmxvZyh1cmxJbWcpXHJcbiAgICAgICAgcmV0dXJuIHVybEltZ1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQGRlc2NyaXB0aW9uIHBhcmEgZ3VhcmRhciBlbCBuw7ptZXJvIGRlIHBhZ29zXHJcbiAgICAgKiBAcGFyYW0gdmFsdWUgXHJcbiAgICAgKi9cclxuICAgIHNldE51bWJlck9mUGF5bWVudHMgPSAodmFsdWU6IGFueSkgPT4ge1xyXG4gICAgICAgIC8vY29uc29sZS5sb2codmFsdWUpXHJcbiAgICAgICAgdGhpcy5zZW5kVG9QYXkubnVtYmVyX29mX3BheW1lbnRzID0gcGFyc2VJbnQodmFsdWUpXHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAZGVzY3JpcHRpb24gR3VhcmRhIGVsIElEIGRlIGxhIHRhcmpldGEgc2VsZWNjaW9uYWRhIHBhcmEgcGFnYXIuXHJcbiAgICAgKiBAcGFyYW0gdmFsdWUgXHJcbiAgICAgKiBAcmV0dXJucyBcclxuICAgICAqL1xyXG4gICAgc2V0Q3VycmVudENhcmRJRCA9ICh2YWx1ZTogbnVtYmVyKSA9PiB7XHJcbiAgICAgICAgdGhpcy5jdXJyZW50Q2FyZElEID0gdmFsdWU7XHJcbiAgICAgICAgcmV0dXJuIHRydWVcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEBkZXNjcmlwdGlvbiBjaGVxdWVhIHNpIGVsIHZhbG9yIGRlbCBuw7ptZXJvIGRlIHBhZ29zIGVsIG1heW9yIGEgMFxyXG4gICAgICogQHJldHVybnMgXHJcbiAgICAgKi9cclxuICAgIGNhblBheSA9ICgpID0+IHRoaXMuc2VuZFRvUGF5Lm51bWJlcl9vZl9wYXltZW50cyA+IDBcclxuXHJcbiAgICAvKipcclxuICAgICAqIEBkZXNjcmlwdGlvbiBmdW5jaW9uIHBhcmEgcGFnYXIuIFxyXG4gICAgICogQHBhcmFtIGlkIGVsIElEIGRlIGxhIHRhcmpldGEuXHJcbiAgICAgKi9cclxuICAgIHRvUGF5ID0gKGlkOiBhbnkpID0+IHtcclxuICAgICAgICAvL2NvbnNvbGUubG9nKCdjdXJyZW50Jyx0aGlzLmN1cnJlbnRDYXJkSUQpXHJcbiAgICAgICAgdGhpcy5jaGVja2luZ1BheW1lbnQgPSB0cnVlO1xyXG4gICAgICAgIGxldCBjYXJkID0gdGhpcy5yZWdpc3RlcmVkX2NhcmRzLmZpbmQoY2FyZCA9PiBjYXJkLmNhcmRfaWQgPT0gaWQpXHJcbiAgICAgICAgaWYgKGNhcmQpIHtcclxuICAgICAgICAgICAgdGhpcy5zZW5kVG9QYXkuYWxpYXNfdG9rZW4gPSBjYXJkLmFsaWFzX3Rva2VuXHJcbiAgICAgICAgICAgIGNhcmQuY2FyZF90eXBlICE9ICdjcmVkaXQnID8gdGhpcy5zZW5kVG9QYXkubnVtYmVyX29mX3BheW1lbnRzID0gMSA6IG51bGxcclxuICAgICAgICAgICAgaWYgKHRoaXMuc2VuZFRvUGF5Lm51bWJlcl9vZl9wYXltZW50cyA+IDApIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29ubmVjdGlvbi5wb3N0KHRoaXMudG9QYXlBcGkoKSwgdGhpcy5zZW5kVG9QYXkpLnRvUHJvbWlzZSgpLnRoZW4oXHJcbiAgICAgICAgICAgICAgICAgICAgcmVzID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm9jZXNzUmVzcG9uc2UocmVzKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNoZWNraW5nUGF5bWVudCA9IGZhbHNlXHJcbiAgICAgICAgICAgICAgICAgICAgfSkuY2F0Y2goXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGVyciA9PiB7IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm9jZXNzRXJyb3IoZXJyKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jaGVja2luZ1BheW1lbnQgPSBmYWxzZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy50b2FzdHIuc2hvdygnTm8gc2UgaGEgZWxlZ2lkbyBlbCBuw7ptZXJvIGRlIGN1b3RhcycpXHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdObyBzZSBoYSBlbGVnaWRvIGVsIG7Dum1lcm8gZGUgY3VvdGFzJylcclxuICAgICAgICAgICAgICAgIHRoaXMuY2hlY2tpbmdQYXltZW50ID0gZmFsc2VcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuY2hlY2tpbmdQYXltZW50ID0gZmFsc2VcclxuICAgICAgICAgICAgdGhpcy50b2FzdHIuc2hvdygnTm8gc2UgZW5jb250cm8gbGEgdGFyamV0YScpXHJcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ05vIHNlIGVuY29udHJvIGxhIHRhcmpldGEnKVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEBkZXNjcmlwdGlvbiBlbGltaW5hIHVuYSB0YXJqZXRhLlxyXG4gICAgICogQHBhcmFtIGlkIGlkIGRlIGxhIHRhcmpldGEgYSBlbGltaW5hci5cclxuICAgICAqL1xyXG4gICAgZGVsZXRlQ2FyZCA9IChpZDogYW55KSA9PiB7XHJcbiAgICAgICAgbGV0IGNhcmQgPSB0aGlzLnJlZ2lzdGVyZWRfY2FyZHMuZmluZChjYXJkID0+IGNhcmQuY2FyZF9pZCA9PSBpZCk7XHJcbiAgICAgICAgaWYgKGNhcmQpIHtcclxuICAgICAgICAgICAgdGhpcy5jb25uZWN0aW9uLnBvc3QodGhpcy5kZWxldGVDYXJkQXBpKCksIHsgYWxpYXNfdG9rZW46IGNhcmQuYWxpYXNfdG9rZW4gfSkudG9Qcm9taXNlKCkudGhlbihcclxuICAgICAgICAgICAgICAgIHJlcyA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50b2FzdHIuc2hvdygnTGEgdGFyamV0YSBzZSBoYSBlbGltaW5hZG8gY29uIMOpeGl0bycpO1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIEVsaW1pbmEgbGEgdGFyamV0YSBkZSBgcmVnaXN0ZXJlZF9jYXJkc2AgeSBhY3R1YWxpemEgbGEgdmlzdGFcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnJlZ2lzdGVyZWRfY2FyZHMgPSB0aGlzLnJlZ2lzdGVyZWRfY2FyZHMuZmlsdGVyKGMgPT4gYy5jYXJkX2lkICE9PSBpZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7IC8vIEZvcnphciBsYSBkZXRlY2Npw7NuIGRlIGNhbWJpb3NcclxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnU2UgZWxpbWluw7MnLCByZXMpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICApLmNhdGNoKFxyXG4gICAgICAgICAgICAgICAgZXJyID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRvYXN0ci5zaG93KCdTZSBwcm9kdWpvIHVuIGVycm9yIGFsIGVsaW1pbmFyIGxhIHRhcmpldGEuIFBvciBmYXZvciBpbnRlbnRlIG3DoXMgdGFyZGUuJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ0Vycm9yIGFsIGVsaW1pbmFyJywgZXJyKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAZGVzY3JpcHRpb24gUHJvY2VzYSBsYXMgcmVzcHVlc3RhIGRlIHVuIHBhZ28gXHJcbiAgICAgKiBAcGFyYW0gcmVzcG9uc2UgXHJcbiAgICAgKiBAcmV0dXJucyBcclxuICAgICAqL1xyXG4gICAgcHJvY2Vzc1Jlc3BvbnNlID0gKHJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyAhPT0gJ3JlamVjdGVkJykge1xyXG4gICAgICAgICAgICAvL2NvbnNvbGUubG9nKCdTRSBQVURPIEVGRUNUVUFSIExBIENPTVBSQScpO1xyXG4gICAgICAgICAgICB0aGlzLnJlYWR5LmVtaXQoJ3RydWUnKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnByb2Nlc3NFcnJvcihyZXNwb25zZSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAZGVzY3JpcHRpb24gcHJvY2VzYSBlbCBlcnJvciB0cmFzIHVuIGludGVudG8gZGUgcGFnb1xyXG4gICAgICogQHBhcmFtIHJlc3BvbnNlIFxyXG4gICAgICovXHJcbiAgICBwcm9jZXNzRXJyb3IgPSAocmVzcG9uc2UpID0+IHtcclxuICAgICAgICBjb25zb2xlLmVycm9yKCdFUlJPUjogJywgcmVzcG9uc2UpXHJcbiAgICAgICAgc3dpdGNoIChyZXNwb25zZS5zdGF0dXMpIHtcclxuICAgICAgICAgICAgY2FzZSA1MDA6IHRoaXMudG9hc3RyLnNob3coJ1NlIHByb2R1am8gdW4gZXJyb3IgaW50ZXJuby4gVnVlbHZhIGEgaW50ZW50YXJsbyBtw6FzIHRhcmRlLicpOyBicmVhaztcclxuICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbn1cclxuIl19
|
|
296
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFuY2FyZC1jYXRhc3Ryby1lYy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZy1lYXN5Y29tbWVyY2UvIiwic291cmNlcyI6WyJsaWIvZWMtY29tcG9uZW50L3dpZGdldHMtZWMvYmFuY2FyZC1jYXRhc3Ryby1lYy9iYW5jYXJkLWNhdGFzdHJvLWVjLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3hILE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNwRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDcEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUM3RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFPNUQsSUFBYSwwQkFBMEIsR0FBdkMsTUFBYSwwQkFBMkIsU0FBUSxlQUFlO0lBNEIzRCxZQUNjLE1BQWlCLEVBQ2pCLFVBQTZCLEVBQ2hDLFdBQXdCLEVBQ3hCLFNBQXVCLEVBQ3BCLE1BQW9CLEVBQ3RCLEVBQXFCLEVBQ3JCLFFBQW1CO1FBRTNCLEtBQUssRUFBRSxDQUFDO1FBUkUsV0FBTSxHQUFOLE1BQU0sQ0FBVztRQUNqQixlQUFVLEdBQVYsVUFBVSxDQUFtQjtRQUNoQyxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixjQUFTLEdBQVQsU0FBUyxDQUFjO1FBQ3BCLFdBQU0sR0FBTixNQUFNLENBQWM7UUFDdEIsT0FBRSxHQUFGLEVBQUUsQ0FB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InNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQsIENoYW5nZURldGVjdG9yUmVmLCBPbkRlc3Ryb3ksIFJlbmRlcmVyMiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcclxuaW1wb3J0IHsgQ29ubmVjdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9hcGkvY29ubmVjdGlvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ29tcG9uZW50SGVscGVyIH0gZnJvbSAnLi4vLi4vLi4vY2xhc3Nlcy9jb21wb25lbnQtaGVscGVyJztcclxuaW1wb3J0IHsgQ29uc3RhbnRzIH0gZnJvbSAnLi4vLi4vLi4vY29yZS5jb25zdHMnO1xyXG5pbXBvcnQgeyBDYXJ0U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2NhcnQuc2VydmljZSc7XHJcbmltcG9ydCB7IFRvYXN0U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL3RvYXN0LnNlcnZpY2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ2FwcC1iYW5jYXJkLWNhdGFzdHJvLWVjJyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi9iYW5jYXJkLWNhdGFzdHJvLWVjLmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsczogWycuL2JhbmNhcmQtY2F0YXN0cm8tZWMuY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQmFuY2FyZENhdGFzdHJvRWNDb21wb25lbnQgZXh0ZW5kcyBDb21wb25lbnRIZWxwZXIgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcblxyXG4gICAgQElucHV0KCkgcGF5bWVudFNlcnZpY2VJbnN0O1xyXG4gICAgQElucHV0KCkgbWV0aG9kID0gbnVsbDtcclxuICAgIEBJbnB1dCgpIHRvdGFsX2Ftb3VudCA9IDA7XHJcbiAgICBASW5wdXQoKSBhbGxEYXRhO1xyXG4gICAgQElucHV0KCkgdXNlcl9kYXRhID0gbnVsbDtcclxuICAgIEBPdXRwdXQoKSByZWFkeSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICAgIEBPdXRwdXQoKSBjYXJkQWRkZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7ICAvLyBOdWV2byBldmVudG8gcGFyYSBub3RpZmljYXIgbGEgdGFyamV0YSBhZ3JlZ2FkYVxyXG5cclxuICAgIHB1YmxpYyBsb2FkaW5nOiBCb29sZWFuID0gZmFsc2U7XHJcbiAgICBwdWJsaWMgY2hlY2tpbmdQYXltZW50OiBCb29sZWFuID0gZmFsc2U7XHJcbiAgICBwdWJsaWMgcmVnaXN0ZXJlZF9jYXJkczogYW55W10gPSBbXTtcclxuICAgIHB1YmxpYyBwcm9jZXNzX2lkOiBzdHJpbmc7XHJcbiAgICBwdWJsaWMgdXJsOiBhbnk7XHJcbiAgICBwdWJsaWMgaW5mb1ByZXZpZXc6IGJvb2xlYW4gPSB0cnVlO1xyXG4gICAgcHVibGljIGNhcmROYW1lczogc3RyaW5nW10gPSBbJ3Zpc2EnLCAnbWFzdGVyY2FyZCcsICdiYW5jYXJkJ107XHJcbiAgICBwdWJsaWMgY3VycmVudENhcmRJRDogbnVtYmVyID0gLTE7XHJcbiAgICBwcml2YXRlIHNlbmRUb1BheTogYW55ID0ge1xyXG4gICAgICAgIGFsaWFzX3Rva2VuOiAnJyxcclxuICAgICAgICBudW1iZXJfb2ZfcGF5bWVudHM6IDBcclxuICAgIH07XHJcblxyXG4gICAgcHJpdmF0ZSB1c2VyQ2FyZHNSZWNvdmVyeUFwaSA9ICgpID0+ICdzaG9wLWFwaS8nICsgdGhpcy5jb25zdHMuZ2V0Q2hhbm5lbCgpICsgJy9iYW5jYXJkLycgKyB0aGlzLmNhcnRTZXJ2aWNlLmNhcnRfdG9rZW4gKyAnL2NhdGFzdHJvLXVzZXItY2FyZHMtcmVjb3ZlcnknO1xyXG4gICAgcHJpdmF0ZSBuZXdVc2VyQ2FyZEFwaSA9ICgpID0+ICdzaG9wLWFwaS8nICsgdGhpcy5jb25zdHMuZ2V0Q2hhbm5lbCgpICsgJy9iYW5jYXJkLycgKyB0aGlzLmNhcnRTZXJ2aWNlLmNhcnRfdG9rZW4gKyAnL2NhdGFzdHJvLW5ldy11c2VyLWNhcmQnO1xyXG4gICAgcHJpdmF0ZSB0b1BheUFwaSA9ICgpID0+ICdzaG9wLWFwaS8nICsgdGhpcy5jb25zdHMuZ2V0Q2hhbm5lbCgpICsgJy9iYW5jYXJkLycgKyB0aGlzLmNhcnRTZXJ2aWNlLmNhcnRfdG9rZW4gKyAnL2NhdGFzdHJvLXRva2VuLXBheW1lbnQnO1xyXG4gICAgcHJpdmF0ZSBkZWxldGVDYXJkQXBpID0gKCkgPT4gJ3Nob3AtYXBpLycgKyB0aGlzLmNvbnN0cy5nZXRDaGFubmVsKCkgKyAnL2JhbmNhcmQvJyArIHRoaXMuY2FydFNlcnZpY2UuY2FydF90b2tlbiArICcvY2F0YXN0cm8tZGVsZXRlLWNhcmQnO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIHByb3RlY3RlZCBjb25zdHM6IENvbnN0YW50cyxcclxuICAgICAgICBwcm90ZWN0ZWQgY29ubmVjdGlvbjogQ29ubmVjdGlvblNlcnZpY2UsXHJcbiAgICAgICAgcHVibGljIGNhcnRTZXJ2aWNlOiBDYXJ0U2VydmljZSxcclxuICAgICAgICBwdWJsaWMgc2FuaXRpemVyOiBEb21TYW5pdGl6ZXIsXHJcbiAgICAgICAgcHJvdGVjdGVkIHRvYXN0cjogVG9hc3RTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgY2Q6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMiBcclxuICAgICkge1xyXG4gICAgICAgIHN1cGVyKCk7XHJcbiAgICAgICAgdGhpcy5sb2FkQ2FyZHMoKTtcclxuICAgIH1cclxuXHJcbiAgICBuZ09uSW5pdCgpIHtcclxuICAgICAgICAvLyBBw7FhZGUgdW4gbGlzdGVuZXIgcGFyYSByZWNpYmlyIG1lbnNhamVzIGRlc2RlIGVsIGlmcmFtZVxyXG4gICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKFwibWVzc2FnZVwiLCB0aGlzLmhhbmRsZU1lc3NhZ2UuYmluZCh0aGlzKSk7XHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICAgICAgLy8gRWxpbWluYSBlbCBsaXN0ZW5lciBjdWFuZG8gZWwgY29tcG9uZW50ZSBzZSBkZXN0cnV5ZVxyXG4gICAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKFwibWVzc2FnZVwiLCB0aGlzLmhhbmRsZU1lc3NhZ2UuYmluZCh0aGlzKSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAZGVzY3JpcHRpb24gb2J0aWVuZSBsYXMgdGFyamV0YXMgYWxtYWNlbmFkYXMgcGFyYSBlbCB1c3VhcmlvLlxyXG4gICAgICovXHJcbiAgICBsb2FkQ2FyZHMgPSAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmNvbm5lY3Rpb24uZ2V0KHRoaXMudXNlckNhcmRzUmVjb3ZlcnlBcGkoKSkudG9Qcm9taXNlKCkudGhlbihcclxuICAgICAgICAgICAgcmVzID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMucmVnaXN0ZXJlZF9jYXJkcyA9IHJlcy5yZWdpc3RlcmVkX2NhcmRzO1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ3JlZ2lzdGVyZWQgY2FyZHMgJywgdGhpcy5yZWdpc3RlcmVkX2NhcmRzKTtcclxuICAgICAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBlcnIgPT4geyBcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGVycik7IFxyXG4gICAgICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7IFxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEBkZXNjcmlwdGlvbiBvYnRlbmdvIGVsIHByb2Nlc3MgSURcclxuICAgICAqL1xyXG4gICAgZ2V0UHJvY2Vzc0lkID0gKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuY29ubmVjdGlvbi5nZXQodGhpcy5uZXdVc2VyQ2FyZEFwaSgpKS50b1Byb21pc2UoKS50aGVuKFxyXG4gICAgICAgICAgICByZXMgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5wcm9jZXNzX2lkID0gcmVzLnByb2Nlc3NfaWQ7XHJcbiAgICAgICAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnY2F0YXN0cm9fZGF0YScsIEpTT04uc3RyaW5naWZ5KHJlcykpO1xyXG4gICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbmZvUHJldmlldyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgfSwgNTAwMCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmdldElGcmFtZU5ld0NhcmQoKTtcclxuICAgICAgICAgICAgfSwgXHJcbiAgICAgICAgICAgIGVyciA9PiB7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhlcnIpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEBkZXNjcmlwdGlvbiBPYnRlbmdvIGVsIElGcmFtZSBkb25kZSBzZSBtb3N0cmFyYSBlbCBmb3JtdWxhcmlvIHBhcmEgcmVnaXN0cmFyIHVuYSBudWV2YSB0YXJqZXRhXHJcbiAgICAgKi9cclxuICAgIGdldElGcmFtZU5ld0NhcmQgPSAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLnVybCA9IHRoaXMuc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RSZXNvdXJjZVVybCgnYXNzZXRzL2JhbmNhcmRDYXRhc3Ryby5odG1sJyk7XHJcbiAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAZGVzY3JpcHRpb24gTWFuZWphIGxvcyBtZW5zYWplcyByZWNpYmlkb3MgZGVzZGUgZWwgaWZyYW1lXHJcbiAgICAgKi9cclxuICAgIGhhbmRsZU1lc3NhZ2UoZXZlbnQ6IE1lc3NhZ2VFdmVudCkge1xyXG4gICAgICAgIGlmIChldmVudC5kYXRhPy5zdGF0dXMgPT09IFwic3VjY2Vzc1wiKSB7XHJcbiAgICAgICAgICAgIHRoaXMubG9hZENhcmRzKCk7XHJcbiAgICAgICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICAvLyBBZ3JlZ2EgdW4gdGltZW91dCBhbnRlcyBkZSBjZXJyYXIgZWwgbW9kYWxcclxuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBtb2RhbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiY2F0YXN0cm9cIik7XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKG1vZGFsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYm9vdHN0cmFwTW9kYWwgPSAod2luZG93IGFzIGFueSkuYm9vdHN0cmFwLk1vZGFsLmdldEluc3RhbmNlKG1vZGFsKTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoYm9vdHN0cmFwTW9kYWwpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYm9vdHN0cmFwTW9kYWwuaGlkZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUobW9kYWwsICdkaXNwbGF5JywgJ25vbmUnKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgLy8gUmVjYXJnYSBsYXMgdGFyamV0YXMgcGFyYSBtb3N0cmFyIGxhIG51ZXZhIHRhcmpldGEgZW4gbGEgdmlzdGFcclxuICAgICAgICAgICAgICAgIC8vIEZvcnphciBsYSBkZXRlY2Npw7NuIGRlIGNhbWJpb3MgZW4gQW5ndWxhclxyXG4gICAgICAgICAgICB9LCAyMDAwKTtcclxuICAgICAgICB9IGVsc2UgaWYgKGV2ZW50LmRhdGE/LnN0YXR1cyA9PT0gXCJlcnJvclwiKSB7XHJcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgbW9kYWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImNhdGFzdHJvXCIpO1xyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICBpZiAobW9kYWwpIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBib290c3RyYXBNb2RhbCA9ICh3aW5kb3cgYXMgYW55KS5ib290c3RyYXAuTW9kYWwuZ2V0SW5zdGFuY2UobW9kYWwpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChib290c3RyYXBNb2RhbCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBib290c3RyYXBNb2RhbC5oaWRlKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShtb2RhbCwgJ2Rpc3BsYXknLCAnbm9uZScpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHRoaXMudG9hc3RyLnNob3coJ0VSUk9SISAnICsgZXZlbnQuZGF0YT8ubWVzc2FnZSlcclxuICAgICAgICAgICAgICAgIC8vIFJlY2FyZ2EgbGFzIHRhcmpldGFzIHBhcmEgbW9zdHJhciBsYSBudWV2YSB0YXJqZXRhIGVuIGxhIHZpc3RhXHJcbiAgICAgICAgICAgICAgICAvLyBGb3J6YXIgbGEgZGV0ZWNjacOzbiBkZSBjYW1iaW9zIGVuIEFuZ3VsYXJcclxuICAgICAgICAgICAgfSwgMTAwMCk7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBvcGVuTW9kYWwoKXtcclxuICAgICAgICB0aGlzLmluZm9QcmV2aWV3PXRydWU7XHJcbiAgICB9XHJcbiAgICBjbG9zZU1vZGFsKCl7XHJcbiAgICAgICAgXHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAZGVzY3JpcHRpb24gcGFyYSBzYWx0ZWFyIGVsIG1lbnNhamUgcHJldmlvLiBcclxuICAgICAqIEByZXR1cm5zIFxyXG4gICAgICovXHJcbiAgICBza2lwSW5mb1ByZXZpZXcgPSAoKSA9PiB0aGlzLmluZm9QcmV2aWV3ID0gZmFsc2VcclxuXHJcbiAgICAvKipcclxuICAgICAqIEBkZXNjcmlwdGlvbiBwYXJhIG9idGVuZXIgbGEgaW1hZ2VuIGRlIGxhIHRhcmpldGEgZGVzZGUgbG9zIGFzc2V0c1xyXG4gICAgICogQHBhcmFtIG5hbWUgbm9tYnJlIGRlIGxhIHRhcmpldGFcclxuICAgICAqIEByZXR1cm5zIFxyXG4gICAgICovXHJcbiAgICBnZXRDYXJkSW1nID0gKG5hbWU6IHN0cmluZykgPT4ge1xyXG4gICAgICAgIGxldCB1cmxJbWcgPSAnYXNzZXRzL2ltYWdlcy8nO1xyXG4gICAgICAgIHRoaXMuY2FyZE5hbWVzLmZvckVhY2goZWxlbSA9PiB7XHJcbiAgICAgICAgICAgIC8vY29uc29sZS5sb2coZWxlbSwgbmFtZS50b0xvY2FsZUxvd2VyQ2FzZSgpLmluY2x1ZGVzKGVsZW0pLCB1cmxJbWcrZWxlbSsnLnBuZycgKVxyXG4gICAgICAgICAgICBuYW1lLnRvTG9jYWxlTG93ZXJDYXNlKCkuaW5jbHVkZXMoZWxlbSkgPyB1cmxJbWcgPSB1cmxJbWcgKyBlbGVtICsgJy5wbmcnIDogbnVsbFxyXG4gICAgICAgIH0pXHJcbiAgICAgICAgLy9jb25zb2xlLmxvZyh1cmxJbWcpXHJcbiAgICAgICAgcmV0dXJuIHVybEltZ1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQGRlc2NyaXB0aW9uIHBhcmEgZ3VhcmRhciBlbCBuw7ptZXJvIGRlIHBhZ29zXHJcbiAgICAgKiBAcGFyYW0gdmFsdWUgXHJcbiAgICAgKi9cclxuICAgIHNldE51bWJlck9mUGF5bWVudHMgPSAodmFsdWU6IGFueSkgPT4ge1xyXG4gICAgICAgIC8vY29uc29sZS5sb2codmFsdWUpXHJcbiAgICAgICAgdGhpcy5zZW5kVG9QYXkubnVtYmVyX29mX3BheW1lbnRzID0gcGFyc2VJbnQodmFsdWUpXHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAZGVzY3JpcHRpb24gR3VhcmRhIGVsIElEIGRlIGxhIHRhcmpldGEgc2VsZWNjaW9uYWRhIHBhcmEgcGFnYXIuXHJcbiAgICAgKiBAcGFyYW0gdmFsdWUgXHJcbiAgICAgKiBAcmV0dXJucyBcclxuICAgICAqL1xyXG4gICAgc2V0Q3VycmVudENhcmRJRCA9ICh2YWx1ZTogbnVtYmVyKSA9PiB7XHJcbiAgICAgICAgdGhpcy5jdXJyZW50Q2FyZElEID0gdmFsdWU7XHJcbiAgICAgICAgcmV0dXJuIHRydWVcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEBkZXNjcmlwdGlvbiBjaGVxdWVhIHNpIGVsIHZhbG9yIGRlbCBuw7ptZXJvIGRlIHBhZ29zIGVsIG1heW9yIGEgMFxyXG4gICAgICogQHJldHVybnMgXHJcbiAgICAgKi9cclxuICAgIGNhblBheSA9ICgpID0+IHRoaXMuc2VuZFRvUGF5Lm51bWJlcl9vZl9wYXltZW50cyA+IDBcclxuXHJcbiAgICAvKipcclxuICAgICAqIEBkZXNjcmlwdGlvbiBmdW5jaW9uIHBhcmEgcGFnYXIuIFxyXG4gICAgICogQHBhcmFtIGlkIGVsIElEIGRlIGxhIHRhcmpldGEuXHJcbiAgICAgKi9cclxuICAgIHRvUGF5ID0gKGlkOiBhbnkpID0+IHtcclxuICAgICAgICAvL2NvbnNvbGUubG9nKCdjdXJyZW50Jyx0aGlzLmN1cnJlbnRDYXJkSUQpXHJcbiAgICAgICAgdGhpcy5jaGVja2luZ1BheW1lbnQgPSB0cnVlO1xyXG4gICAgICAgIGxldCBjYXJkID0gdGhpcy5yZWdpc3RlcmVkX2NhcmRzLmZpbmQoY2FyZCA9PiBjYXJkLmNhcmRfaWQgPT0gaWQpXHJcbiAgICAgICAgaWYgKGNhcmQpIHtcclxuICAgICAgICAgICAgdGhpcy5zZW5kVG9QYXkuYWxpYXNfdG9rZW4gPSBjYXJkLmFsaWFzX3Rva2VuXHJcbiAgICAgICAgICAgIGNhcmQuY2FyZF90eXBlICE9ICdjcmVkaXQnID8gdGhpcy5zZW5kVG9QYXkubnVtYmVyX29mX3BheW1lbnRzID0gMSA6IG51bGxcclxuICAgICAgICAgICAgaWYgKHRoaXMuc2VuZFRvUGF5Lm51bWJlcl9vZl9wYXltZW50cyA+IDApIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29ubmVjdGlvbi5wb3N0KHRoaXMudG9QYXlBcGkoKSwgdGhpcy5zZW5kVG9QYXkpLnRvUHJvbWlzZSgpLnRoZW4oXHJcbiAgICAgICAgICAgICAgICAgICAgcmVzID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm9jZXNzUmVzcG9uc2UocmVzKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNoZWNraW5nUGF5bWVudCA9IGZhbHNlXHJcbiAgICAgICAgICAgICAgICAgICAgfSkuY2F0Y2goXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGVyciA9PiB7IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm9jZXNzRXJyb3IoZXJyKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jaGVja2luZ1BheW1lbnQgPSBmYWxzZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy50b2FzdHIuc2hvdygnTm8gc2UgaGEgZWxlZ2lkbyBlbCBuw7ptZXJvIGRlIGN1b3RhcycpXHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdObyBzZSBoYSBlbGVnaWRvIGVsIG7Dum1lcm8gZGUgY3VvdGFzJylcclxuICAgICAgICAgICAgICAgIHRoaXMuY2hlY2tpbmdQYXltZW50ID0gZmFsc2VcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuY2hlY2tpbmdQYXltZW50ID0gZmFsc2VcclxuICAgICAgICAgICAgdGhpcy50b2FzdHIuc2hvdygnTm8gc2UgZW5jb250cm8gbGEgdGFyamV0YScpXHJcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ05vIHNlIGVuY29udHJvIGxhIHRhcmpldGEnKVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEBkZXNjcmlwdGlvbiBlbGltaW5hIHVuYSB0YXJqZXRhLlxyXG4gICAgICogQHBhcmFtIGlkIGlkIGRlIGxhIHRhcmpldGEgYSBlbGltaW5hci5cclxuICAgICAqL1xyXG4gICAgZGVsZXRlQ2FyZCA9IChpZDogYW55KSA9PiB7XHJcbiAgICAgICAgbGV0IGNhcmQgPSB0aGlzLnJlZ2lzdGVyZWRfY2FyZHMuZmluZChjYXJkID0+IGNhcmQuY2FyZF9pZCA9PSBpZCk7XHJcbiAgICAgICAgaWYgKGNhcmQpIHtcclxuICAgICAgICAgICAgdGhpcy5jb25uZWN0aW9uLnBvc3QodGhpcy5kZWxldGVDYXJkQXBpKCksIHsgYWxpYXNfdG9rZW46IGNhcmQuYWxpYXNfdG9rZW4gfSkudG9Qcm9taXNlKCkudGhlbihcclxuICAgICAgICAgICAgICAgIHJlcyA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50b2FzdHIuc2hvdygnTGEgdGFyamV0YSBzZSBoYSBlbGltaW5hZG8gY29uIMOpeGl0bycpO1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIEVsaW1pbmEgbGEgdGFyamV0YSBkZSBgcmVnaXN0ZXJlZF9jYXJkc2AgeSBhY3R1YWxpemEgbGEgdmlzdGFcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnJlZ2lzdGVyZWRfY2FyZHMgPSB0aGlzLnJlZ2lzdGVyZWRfY2FyZHMuZmlsdGVyKGMgPT4gYy5jYXJkX2lkICE9PSBpZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7IC8vIEZvcnphciBsYSBkZXRlY2Npw7NuIGRlIGNhbWJpb3NcclxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnU2UgZWxpbWluw7MnLCByZXMpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICApLmNhdGNoKFxyXG4gICAgICAgICAgICAgICAgZXJyID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRvYXN0ci5zaG93KCdTZSBwcm9kdWpvIHVuIGVycm9yIGFsIGVsaW1pbmFyIGxhIHRhcmpldGEuIFBvciBmYXZvciBpbnRlbnRlIG3DoXMgdGFyZGUuJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ0Vycm9yIGFsIGVsaW1pbmFyJywgZXJyKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAZGVzY3JpcHRpb24gUHJvY2VzYSBsYXMgcmVzcHVlc3RhIGRlIHVuIHBhZ28gXHJcbiAgICAgKiBAcGFyYW0gcmVzcG9uc2UgXHJcbiAgICAgKiBAcmV0dXJucyBcclxuICAgICAqL1xyXG4gICAgcHJvY2Vzc1Jlc3BvbnNlID0gKHJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyAhPT0gJ3JlamVjdGVkJykge1xyXG4gICAgICAgICAgICAvL2NvbnNvbGUubG9nKCdTRSBQVURPIEVGRUNUVUFSIExBIENPTVBSQScpO1xyXG4gICAgICAgICAgICB0aGlzLnJlYWR5LmVtaXQoJ3RydWUnKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnByb2Nlc3NFcnJvcihyZXNwb25zZSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAZGVzY3JpcHRpb24gcHJvY2VzYSBlbCBlcnJvciB0cmFzIHVuIGludGVudG8gZGUgcGFnb1xyXG4gICAgICogQHBhcmFtIHJlc3BvbnNlIFxyXG4gICAgICovXHJcbiAgICBwcm9jZXNzRXJyb3IgPSAocmVzcG9uc2UpID0+IHtcclxuICAgICAgICBjb25zb2xlLmVycm9yKCdFUlJPUjogJywgcmVzcG9uc2UpXHJcbiAgICAgICAgc3dpdGNoIChyZXNwb25zZS5zdGF0dXMpIHtcclxuICAgICAgICAgICAgY2FzZSA1MDA6IHRoaXMudG9hc3RyLnNob3coJ1NlIHByb2R1am8gdW4gZXJyb3IgaW50ZXJuby4gVnVlbHZhIGEgaW50ZW50YXJsbyBtw6FzIHRhcmRlLicpOyBicmVhaztcclxuICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbn1cclxuIl19
|