ng-ipa-library 1.4.5 → 1.4.8
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/esm2020/lib/core/interceptors/error.interceptor.mjs +24 -8
- package/esm2020/lib/ipa-form/ipa-form.service.mjs +2 -2
- package/esm2020/lib/models/apiResponse.mjs +1 -1
- package/esm2020/lib/share-button/share-button.component.mjs +10 -8
- package/fesm2015/ng-ipa-library.mjs +34 -16
- package/fesm2015/ng-ipa-library.mjs.map +1 -1
- package/fesm2020/ng-ipa-library.mjs +33 -15
- package/fesm2020/ng-ipa-library.mjs.map +1 -1
- package/lib/core/interceptors/error.interceptor.d.ts +3 -1
- package/lib/models/apiResponse.d.ts +1 -0
- package/package.json +1 -1
|
@@ -22,17 +22,13 @@ export class ErrorInterceptor {
|
|
|
22
22
|
};
|
|
23
23
|
switch (response.statusCode) {
|
|
24
24
|
case 500:
|
|
25
|
-
|
|
26
|
-
const toastr = this.toastrService.error(msg, response.message, toastrConfig);
|
|
27
|
-
toastr.onShown.subscribe(() => {
|
|
28
|
-
this.addCopyButton(response.message + '\n' + msg);
|
|
29
|
-
});
|
|
25
|
+
this.show500ErrorMsg(response, toastrConfig);
|
|
30
26
|
break;
|
|
31
27
|
default:
|
|
32
|
-
this.
|
|
28
|
+
this.showErrorMsg(response, toastrConfig);
|
|
33
29
|
break;
|
|
34
30
|
}
|
|
35
|
-
return throwError(error);
|
|
31
|
+
return throwError(() => error);
|
|
36
32
|
}));
|
|
37
33
|
}
|
|
38
34
|
isException(req) {
|
|
@@ -43,6 +39,26 @@ export class ErrorInterceptor {
|
|
|
43
39
|
}
|
|
44
40
|
return false;
|
|
45
41
|
}
|
|
42
|
+
showErrorMsg(response, toastrConfig) {
|
|
43
|
+
if (response.errors && response.errors.length > 0) {
|
|
44
|
+
toastrConfig.enableHtml = true;
|
|
45
|
+
let msg = '';
|
|
46
|
+
response.errors.forEach((error) => {
|
|
47
|
+
msg += `<li>${error}</li>`;
|
|
48
|
+
});
|
|
49
|
+
this.toastrService.error(`<ul>${msg}</ul>`, response.message, toastrConfig);
|
|
50
|
+
}
|
|
51
|
+
else {
|
|
52
|
+
this.toastrService.error('', response.message, toastrConfig);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
show500ErrorMsg(response, toastrConfig) {
|
|
56
|
+
const msg = response.innerException + ' ' + (response.stackTrace ?? '');
|
|
57
|
+
const toastr = this.toastrService.error(msg, response.message, toastrConfig);
|
|
58
|
+
toastr.onShown.subscribe(() => {
|
|
59
|
+
this.addCopyButton(response.message + '\n' + msg);
|
|
60
|
+
});
|
|
61
|
+
}
|
|
46
62
|
addCopyButton(message) {
|
|
47
63
|
const messageToast = document.getElementsByClassName('toast-message')[0];
|
|
48
64
|
const icon = document.createElement('i');
|
|
@@ -64,4 +80,4 @@ ErrorInterceptor.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", ver
|
|
|
64
80
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: ErrorInterceptor, decorators: [{
|
|
65
81
|
type: Injectable
|
|
66
82
|
}], ctorParameters: function () { return [{ type: i1.ErrorService }, { type: i2.ToastrService }]; } });
|
|
67
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
83
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3IuaW50ZXJjZXB0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1pcGEtbGlicmFyeS9zcmMvbGliL2NvcmUvaW50ZXJjZXB0b3JzL2Vycm9yLmludGVyY2VwdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFPM0MsT0FBTyxFQUFjLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM5QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7QUFPNUMsTUFBTSxPQUFPLGdCQUFnQjtJQUMzQixZQUNVLFlBQTBCLEVBQzFCLGFBQTRCO1FBRDVCLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzFCLGtCQUFhLEdBQWIsYUFBYSxDQUFlO0lBQ25DLENBQUM7SUFFSixTQUFTLENBQ1AsR0FBeUIsRUFDekIsSUFBaUI7UUFFakIsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ3pCLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUN6QjtRQUVELE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQzFCLFVBQVUsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ25CLE1BQU0sUUFBUSxHQUFHLEtBQUssQ0FBQyxLQUFxQixDQUFDO1lBQzdDLE1BQU0sWUFBWSxHQUE4QjtnQkFDOUMsY0FBYyxFQUFFLElBQUk7Z0JBQ3BCLFdBQVcsRUFBRSxJQUFJO2dCQUNqQixZQUFZLEVBQUUsS0FBSzthQUNwQixDQUFDO1lBQ0YsUUFBUSxRQUFRLENBQUMsVUFBVSxFQUFFO2dCQUMzQixLQUFLLEdBQUc7b0JBQ04sSUFBSSxDQUFDLGVBQWUsQ0FBQyxRQUFRLEVBQUUsWUFBWSxDQUFDLENBQUM7b0JBQzdDLE1BQU07Z0JB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LENBQUM7SUFDTCxDQUFDOzs2R0E3RlUsZ0JBQWdCO2lIQUFoQixnQkFBZ0I7MkZBQWhCLGdCQUFnQjtrQkFENUIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtcclxuICBIdHRwUmVxdWVzdCxcclxuICBIdHRwSGFuZGxlcixcclxuICBIdHRwRXZlbnQsXHJcbiAgSHR0cEludGVyY2VwdG9yLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgdGhyb3dFcnJvciB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBjYXRjaEVycm9yIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBFcnJvclNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9lcnJvci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQXBpRXhjZXB0aW9uIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2FwaUV4Y2VwdGlvbic7XHJcbmltcG9ydCB7IEluZGl2aWR1YWxDb25maWcsIFRvYXN0clNlcnZpY2UgfSBmcm9tICduZ3gtdG9hc3RyJztcclxuaW1wb3J0IHsgQXBpUmVzcG9uc2UgfSBmcm9tICcuLi8uLi9tb2RlbHMvYXBpUmVzcG9uc2UnO1xyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgRXJyb3JJbnRlcmNlcHRvciBpbXBsZW1lbnRzIEh0dHBJbnRlcmNlcHRvciB7XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGVycm9yU2VydmljZTogRXJyb3JTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSB0b2FzdHJTZXJ2aWNlOiBUb2FzdHJTZXJ2aWNlXHJcbiAgKSB7fVxyXG5cclxuICBpbnRlcmNlcHQoXHJcbiAgICByZXE6IEh0dHBSZXF1ZXN0PHVua25vd24+LFxyXG4gICAgbmV4dDogSHR0cEhhbmRsZXJcclxuICApOiBPYnNlcnZhYmxlPEh0dHBFdmVudDx1bmtub3duPj4ge1xyXG4gICAgaWYgKHRoaXMuaXNFeGNlcHRpb24ocmVxKSkge1xyXG4gICAgICByZXR1cm4gbmV4dC5oYW5kbGUocmVxKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gbmV4dC5oYW5kbGUocmVxKS5waXBlKFxyXG4gICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4ge1xyXG4gICAgICAgIGNvbnN0IHJlc3BvbnNlID0gZXJyb3IuZXJyb3IgYXMgQXBpRXhjZXB0aW9uO1xyXG4gICAgICAgIGNvbnN0IHRvYXN0ckNvbmZpZzogUGFydGlhbDxJbmRpdmlkdWFsQ29uZmlnPiA9IHtcclxuICAgICAgICAgIGRpc2FibGVUaW1lT3V0OiB0cnVlLFxyXG4gICAgICAgICAgY2xvc2VCdXR0b246IHRydWUsXHJcbiAgICAgICAgICB0YXBUb0Rpc21pc3M6IGZhbHNlLFxyXG4gICAgICAgIH07XHJcbiAgICAgICAgc3dpdGNoIChyZXNwb25zZS5zdGF0dXNDb2RlKSB7XHJcbiAgICAgICAgICBjYXNlIDUwMDpcclxuICAgICAgICAgICAgdGhpcy5zaG93NTAwRXJyb3JNc2cocmVzcG9uc2UsIHRvYXN0ckNvbmZpZyk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgIHRoaXMuc2hvd0Vycm9yTXNnKHJlc3BvbnNlLCB0b2FzdHJDb25maWcpO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gZXJyb3IpO1xyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaXNFeGNlcHRpb24ocmVxOiBIdHRwUmVxdWVzdDxhbnk+KTogYm9vbGVhbiB7XHJcbiAgICBmb3IgKGNvbnN0IHVybCBvZiB0aGlzLmVycm9yU2VydmljZS51cmxzKSB7XHJcbiAgICAgIGlmIChyZXEudXJsLmluY2x1ZGVzKHVybC5wYXRoKSAmJiByZXEubWV0aG9kID09PSB1cmwubWV0aG9kKSB7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2hvd0Vycm9yTXNnKFxyXG4gICAgcmVzcG9uc2U6IEFwaVJlc3BvbnNlLFxyXG4gICAgdG9hc3RyQ29uZmlnOiBQYXJ0aWFsPEluZGl2aWR1YWxDb25maWc+XHJcbiAgKSB7XHJcbiAgICBpZiAocmVzcG9uc2UuZXJyb3JzICYmIHJlc3BvbnNlLmVycm9ycy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRvYXN0ckNvbmZpZy5lbmFibGVIdG1sID0gdHJ1ZTtcclxuICAgICAgbGV0IG1zZyA9ICcnO1xyXG4gICAgICByZXNwb25zZS5lcnJvcnMuZm9yRWFjaCgoZXJyb3IpID0+IHtcclxuICAgICAgICBtc2cgKz0gYDxsaT4ke2Vycm9yfTwvbGk+YDtcclxuICAgICAgfSk7XHJcbiAgICAgIHRoaXMudG9hc3RyU2VydmljZS5lcnJvcihgPHVsPiR7bXNnfTwvdWw+YCwgcmVzcG9uc2UubWVzc2FnZSwgdG9hc3RyQ29uZmlnKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMudG9hc3RyU2VydmljZS5lcnJvcignJywgcmVzcG9uc2UubWVzc2FnZSwgdG9hc3RyQ29uZmlnKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2hvdzUwMEVycm9yTXNnKFxyXG4gICAgcmVzcG9uc2U6IEFwaUV4Y2VwdGlvbixcclxuICAgIHRvYXN0ckNvbmZpZzogUGFydGlhbDxJbmRpdmlkdWFsQ29uZmlnPlxyXG4gICkge1xyXG4gICAgY29uc3QgbXNnID0gcmVzcG9uc2UuaW5uZXJFeGNlcHRpb24gKyAnICcgKyAocmVzcG9uc2Uuc3RhY2tUcmFjZSA/PyAnJyk7XHJcbiAgICBjb25zdCB0b2FzdHIgPSB0aGlzLnRvYXN0clNlcnZpY2UuZXJyb3IoXHJcbiAgICAgIG1zZyxcclxuICAgICAgcmVzcG9uc2UubWVzc2FnZSxcclxuICAgICAgdG9hc3RyQ29uZmlnXHJcbiAgICApO1xyXG4gICAgdG9hc3RyLm9uU2hvd24uc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgdGhpcy5hZGRDb3B5QnV0dG9uKHJlc3BvbnNlLm1lc3NhZ2UgKyAnXFxuJyArIG1zZyk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYWRkQ29weUJ1dHRvbihtZXNzYWdlOiBzdHJpbmcpIHtcclxuICAgIGNvbnN0IG1lc3NhZ2VUb2FzdCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXHJcbiAgICAgICd0b2FzdC1tZXNzYWdlJ1xyXG4gICAgKVswXSBhcyBIVE1MRGl2RWxlbWVudDtcclxuICAgIGNvbnN0IGljb24gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpJyk7XHJcbiAgICBpY29uLmNsYXNzTGlzdC5hZGQoJ21zLTInLCAnZmFzJywgJ2ZhLWNvcHknKTtcclxuICAgIGljb24uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoKSA9PiB7XHJcbiAgICAgIHRoaXMuY29weVRvQ2xpcGJvYXJkKG1lc3NhZ2UpO1xyXG4gICAgfSk7XHJcbiAgICBtZXNzYWdlVG9hc3QuYXBwZW5kQ2hpbGQoaWNvbik7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNvcHlUb0NsaXBib2FyZChtZXNzYWdlOiBzdHJpbmcpIHtcclxuICAgIG5hdmlnYXRvci5jbGlwYm9hcmQud3JpdGVUZXh0KG1lc3NhZ2UpO1xyXG4gICAgdGhpcy50b2FzdHJTZXJ2aWNlLnN1Y2Nlc3MoJ9iq2YUg2YbYs9iuINin2YTYsdiz2KfZhNipINil2YTZiSDYp9mE2K3Yp9mB2LjYqScsICcnLCB7XHJcbiAgICAgIHBvc2l0aW9uQ2xhc3M6ICd0b2FzdC1ib3R0b20tcmlnaHQnLFxyXG4gICAgfSk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -52,7 +52,7 @@ export class IPAFormService {
|
|
|
52
52
|
static validHijriDate(control) {
|
|
53
53
|
const date = control.value;
|
|
54
54
|
const isValid = IPAFormService.checkHijriDateValid(date);
|
|
55
|
-
return isValid
|
|
55
|
+
return isValid || !date
|
|
56
56
|
? null
|
|
57
57
|
: {
|
|
58
58
|
ngbDate: {
|
|
@@ -287,4 +287,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImpor
|
|
|
287
287
|
providedIn: 'root',
|
|
288
288
|
}]
|
|
289
289
|
}], ctorParameters: function () { return [{ type: i1.NgbDateParserFormatter }]; } });
|
|
290
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXBhLWZvcm0uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWlwYS1saWJyYXJ5L3NyYy9saWIvaXBhLWZvcm0vaXBhLWZvcm0uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sV0FBVyxNQUFNLGNBQWMsQ0FBQzs7O0FBT3ZDLE1BQU0sT0FBTyxjQUFjO0lBQ3pCLFlBQW9CLGVBQXVDO1FBQXZDLG9CQUFlLEdBQWYsZUFBZSxDQUF3QjtJQUFHLENBQUM7SUFFL0Q7O09BRUc7SUFDSCxNQUFNLENBQUMsY0FBYyxDQUFDLE9BQXdCO1FBQzVDLE1BQU0sV0FBVyxHQUNmLHVEQUF1RCxDQUFDLElBQUksQ0FDMUQsT0FBTyxDQUFDLEtBQUssQ0FDZCxDQUFDO1FBQ0osT0FBTyxXQUFXLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDO0lBQy9ELENBQUM7SUFFRDs7T0FFRztJQUNILE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxPQUF3QjtRQUMvQyxNQUFNLFdBQVcsR0FDZixrRkFBa0YsQ0FBQyxJQUFJLENBQ3JGLE9BQU8sQ0FBQyxLQUFLLENBQ2QsQ0FBQztRQUNKLE9BQU8sV0FBVyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsQ0FBQztJQUNsRSxDQUFDO0lBRUQ7O09BRUc7SUFDSCxNQUFNLENBQUMsUUFBUSxDQUFDLE9BQXdCO1FBQ3RDLE1BQU0sV0FBVyxHQUFHLFdBQVcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3BELE9BQU8sV0FB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c291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIEZvcm1Db250cm9sLCBWYWxpZGF0aW9uRXJyb3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgbW9tZW50SGlqcmkgZnJvbSAnbW9tZW50LWhpanJpJztcclxuaW1wb3J0IHsgTW9tZW50IH0gZnJvbSAnbW9tZW50JztcclxuaW1wb3J0IHsgTmdiRGF0ZSwgTmdiRGF0ZVBhcnNlckZvcm1hdHRlciB9IGZyb20gJ0BuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCcsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBJUEFGb3JtU2VydmljZSB7XHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBwYXJzZXJGb3JtYXR0ZXI6IE5nYkRhdGVQYXJzZXJGb3JtYXR0ZXIpIHt9XHJcblxyXG4gIC8qKlxyXG4gICAqIGNoZWNrIGxpbmsgaXMgdmFsaWQuXHJcbiAgICovXHJcbiAgc3RhdGljIGxpbmtWYWxpZGF0aW9uKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcclxuICAgIGNvbnN0IGlzVmFsaWRMaW5rID1cclxuICAgICAgL14oKGh0dHBzPzpcXC9cXC8pW1xcdy1dKyhcXC5bYS16LV0rKStcXC4/KDpcXGQrKT8oXFwvXFxTKik/KSQvLnRlc3QoXHJcbiAgICAgICAgY29udHJvbC52YWx1ZVxyXG4gICAgICApO1xyXG4gICAgcmV0dXJuIGlzVmFsaWRMaW5rIHx8ICFjb250cm9sLnZhbHVlID8gbnVsbCA6IHsgbGluazogdHJ1ZSB9O1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogY2hlY2sgbXA0IGxpbmsgaXMgdmFsaWQuXHJcbiAgICovXHJcbiAgc3RhdGljIG1wNExpbmtWYWxpZGF0aW9uKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcclxuICAgIGNvbnN0IGlzVmFsaWRMaW5rID1cclxuICAgICAgL14oKGh0dHBzPzpcXC9cXC8pW1xcdy1dKyhcXC5bYS16LV0rKStcXC4/KDpcXGQrKT8oXFwvXFxTKik/KFxcL1tcXHdcXHUwNjAwLVxcdTA2RkZdK1xcLm1wNCkpJC8udGVzdChcclxuICAgICAgICBjb250cm9sLnZhbHVlXHJcbiAgICAgICk7XHJcbiAgICByZXR1cm4gaXNWYWxpZExpbmsgfHwgIWNvbnRyb2wudmFsdWUgPyBudWxsIDogeyBsaW5rTVA0OiB0cnVlIH07XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBjaGVjayBtb2JpbGUgbnVtYmVyIGlzIHZhbGlkLlxyXG4gICAqL1xyXG4gIHN0YXRpYyBtb2JpbGVObyhjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XHJcbiAgICBjb25zdCBpc1ZhbGlkTGluayA9IC9eMDVcXGR7OH0kLy50ZXN0KGNvbnRyb2wudmFsdWUpO1xyXG4gICAgcmV0dXJuIGlzVmFsaWRMaW5rIHx8ICFjb250cm9sLnZhbHVlID8gbnVsbCA6IHsgbW9iaWxlTm86IHRydWUgfTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIGNoZWNrIGVtYWlsIGlzIHZhbGlkLlxyXG4gICAqL1xyXG4gIHN0YXRpYyBlbWFpbChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XHJcbiAgICBjb25zdCBpc1ZhbGlkTGluayA9XHJcbiAgICAgIC9eKChbXjw+KClbXFxdXFwuLDs6XFxzQFxcXCJdKyhcXC5bXjw+KClbXFxdXFwuLDs6XFxzQFxcXCJdKykqKXwoXFxcIi4rXFxcIikpQCgoW148PigpW1xcXVxcLiw7Olxcc0BcXFwiXStcXC4pK1tePD4oKVtcXF1cXC4sOzpcXHNAXFxcIl17Mix9KSQvLnRlc3QoXHJcbiAgICAgICAgY29udHJvbC52YWx1ZVxyXG4gICAgICApO1xyXG4gICAgcmV0dXJuIGlzVmFsaWRMaW5rIHx8ICFjb250cm9sLnZhbHVlID8gbnVsbCA6IHsgRW1haWw6IHRydWUgfTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIGNoZWNrIG5hdGlvbmFsIElEIG9yIGlxYW1hIElEIGlzIHZhbGlkLlxyXG4gICAqL1xyXG4gIHN0YXRpYyBjaGVja0lEKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcclxuICAgIGxldCBpc1ZhbGlkID0gZmFsc2U7XHJcbiAgICBjb25zdCB2YWx1ZSA9IGNvbnRyb2wudmFsdWU7XHJcbiAgICBpZiAoXHJcbiAgICAgIElQQUZvcm1TZXJ2aWNlLm5hdGlvbmFsSWRWYWxpZGF0ZSh2YWx1ZSkgfHxcclxuICAgICAgSVBBRm9ybVNlcnZpY2UuaXFhbWFJZFZhbGlkYXRlKHZhbHVlKVxyXG4gICAgKSB7XHJcbiAgICAgIGlzVmFsaWQgPSB0cnVlO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaXNWYWxpZCA9IGZhbHNlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGlzVmFsaWQgfHwgIXZhbHVlID8gbnVsbCA6IHsgY2hlY2tJZDogdHJ1ZSB9O1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIHZhbGlkSGlqcmlEYXRlKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcclxuICAgIGNvbnN0IGRhdGU6IE5nYkRhdGUgPSBjb250cm9sLnZhbHVlO1xyXG4gICAgY29uc3QgaXNWYWxpZCA9IElQQUZvcm1TZXJ2aWNlLmNoZWNrSGlqcmlEYXRlVmFsaWQoZGF0ZSk7XHJcbiAgICByZXR1cm4gaXNWYWxpZFxyXG4gICAgICA/IG51bGxcclxuICAgICAgOiB7XHJcbiAgICAgICAgICBuZ2JEYXRlOiB7XHJcbiAgICAgICAgICAgIGludmFsaWQ6XHJcbiAgICAgICAgICAgICAgZGF0ZT8ueWVhciArXHJcbiAgICAgICAgICAgICAgJy0nICtcclxuICAgICAgICAgICAgICAoZGF0ZT8ubW9udGggPiAxMCA/IGRhdGU/Lm1vbnRoIDogJzAnICsgZGF0ZT8ubW9udGgpICtcclxuICAgICAgICAgICAgICAnLScgK1xyXG4gICAgICAgICAgICAgIChkYXRlPy5kYXkgPiAxMCA/IGRhdGU/LmRheSA6ICcwJyArIGRhdGU/LmRheSksXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgIH07XHJcbiAgfVxyXG5cclxuICBnZXRFcnJvck1lc3NhZ2UoXHJcbiAgICBjb250cm9sOiBGb3JtQ29udHJvbCxcclxuICAgIHBhdHRlcm5FcnJvck1zZyA9ICcnLFxyXG4gICAgaXNBcmFiaWM6IGJvb2xlYW5cclxuICApOiBzdHJpbmcgfCBudWxsIHtcclxuICAgIGZvciAoY29uc3QgcHJvcGVydHlOYW1lIGluIGNvbnRyb2w/LmVycm9ycykge1xyXG4gICAgICBpZiAoXHJcbiAgICAgICAgY29udHJvbD8uZXJyb3JzLmhhc093blByb3BlcnR5KHByb3BlcnR5TmFtZSkgJiZcclxuICAgICAgICAoY29udHJvbC50b3VjaGVkIHx8IGNvbnRyb2wuZGlydHkpXHJcbiAgICAgICkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmdldFZhbGlkYXRvckVycm9yTWVzc2FnZShcclxuICAgICAgICAgIHByb3BlcnR5TmFtZSxcclxuICAgICAgICAgIGNvbnRyb2wuZXJyb3JzW3Byb3BlcnR5TmFtZV0sXHJcbiAgICAgICAgICBwYXR0ZXJuRXJyb3JNc2csXHJcbiAgICAgICAgICBpc0FyYWJpY1xyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogY29udmVydCBncmVnb3JpYW4gZGF0ZSB0byBoaWpyaSBkYXRlIChCYXNlZCBvbiBVbW0gYWwtUXVyYSBjYWxjdWxhdGlvbnMpLlxyXG4gICAqIEBwYXJhbSBkYXRlOiBncmVnb3JpYW4gZGF0ZVxyXG4gICAqIEBwYXJhbSBmb3JtYXQ6IGlERCA9PiBkYXk6INmh2aUsIGlNTSA9PiBtb250aDog2aDZpCwgaU1NTSA9PiBtb250aDog2LHYqNmK2Lkg2aIsXHJcbiAgICogICAgICAgICAgICAgICBpTU1NTSA9PiDYsdio2YrYuSDYp9mE2KvYp9mG2YosICBpWVkgPT4geWVhcjog2aTZoiwgaVlZWVkgPT4geWVhcjog2aHZpNmk2aIsXHJcbiAgICogICAgICAgICAgICAgICBkZCA9PiDZhiwgZGRkID0+INil2KvZhtmK2YYsIGRkZGQgPT4g2KfZhNil2KvZhtmK2YZcclxuICAgKiBAZXhhbXBsZSAnaVlZWVkvaU0vaUTZh9mAINin2YTZhdmI2KfZgdmCIFlZWVkvTS9E2YUnXHJcbiAgICogICAgICAgICAgICfZodmk2aTZoi/ZoNmkL9mh2aXZh9mAINin2YTZhdmI2KfZgdmCINmi2aDZotmgL9mh2aEv2aPZoCdcclxuICAgKi9cclxuICBjb252ZXJ0VG9IaWpyaURhdGUoXHJcbiAgICBkYXRlOiBzdHJpbmcsXHJcbiAgICBmb3JtYXQgPSAnaVlZWVktaU1NLWlERCcsXHJcbiAgICBsYW5nID0gJ2FyLVNBJ1xyXG4gICk6IHN0cmluZyB7XHJcbiAgICBtb21lbnRIaWpyaS5sb2NhbGUobGFuZyk7XHJcbiAgICByZXR1cm4gbW9tZW50SGlqcmkoZGF0ZSkuZm9ybWF0KGZvcm1hdCk7XHJcbiAgfVxyXG5cclxuICBjb252ZXJ0VG9HcmVnb3JpYW5EYXRlKFxyXG4gICAgZGF0ZTogTW9tZW50LFxyXG4gICAgZm9ybWF0ID0gJ1lZWVktTU0tREQnLFxyXG4gICAgbGFuZyA9ICdlbidcclxuICApOiBzdHJpbmcge1xyXG4gICAgbW9tZW50SGlqcmkubG9jYWxlKGxhbmcpO1xyXG4gICAgY29uc3QgbSA9IG1vbWVudEhpanJpLmlDb252ZXJ0LnRvR3JlZ29yaWFuKFxyXG4gICAgICBkYXRlLnllYXIoKSxcclxuICAgICAgZGF0ZS5tb250aCgpLFxyXG4gICAgICBkYXRlLmRhdGUoKVxyXG4gICAgKTtcclxuICAgIHJldHVybiBtb21lbnRIaWpyaShuZXcgRGF0ZShtLmd5LCBtLmdtLCBtLmdkKSkuZm9ybWF0KGZvcm1hdCk7XHJcbiAgfVxyXG5cclxuICBnZXRDdXJyZW50SGlqcmlEYXRlKCkge1xyXG4gICAgbW9tZW50SGlqcmkubG9jYWxlKCdlbicpO1xyXG4gICAgcmV0dXJuIG1vbWVudEhpanJpKCkuZm9ybWF0KCdpWVlZWS9pTU0vaUREJyk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldFZhbGlkYXRvckVycm9yTWVzc2FnZShcclxuICAgIHZhbGlkYXRvck5hbWU6IHN0cmluZyxcclxuICAgIHZhbGlkYXRvclZhbHVlOiBhbnksXHJcbiAgICBwYXR0ZXJuRXJyb3JNc2c6IHN0cmluZyxcclxuICAgIGlzQXJhYmljOiBib29sZWFuXHJcbiAgKTogc3RyaW5nIHtcclxuICAgIGlmICh2YWxpZGF0b3JOYW1lID09PSAncGF0dGVybicpIHtcclxuICAgICAgdmFsaWRhdG9yVmFsdWUgPSB0aGlzLmFkZFBhdHRlcm5Nc2codmFsaWRhdG9yVmFsdWUsIHBhdHRlcm5FcnJvck1zZyk7XHJcbiAgICB9XHJcbiAgICBjb25zdCBjb25maWc6IGFueSA9IHtcclxuICAgICAgcmVxdWlyZWQ6IGlzQXJhYmljID8gJ9mH2LDYpyDYp9mE2K3ZgtmEINmF2LfZhNmI2KgnIDogJ3RoaXMgZmllbGQgcmVxdWlyZWQnLFxyXG4gICAgICBwYXR0ZXJuOiBgJHt2YWxpZGF0b3JWYWx1ZS5tZXNzYWdlfWAsXHJcbiAgICAgIEVtYWlsOlxyXG4gICAgICAgIChpc0FyYWJpYyA/ICfYrti32KMg2YHZiiDYp9mE2KjYsdmK2K8g2KfZhNin2YTZg9iq2LHZiNmG2YogJyA6ICdJbnZhbGlkIGVtYWlsICcpICtcclxuICAgICAgICAnKGV4YW1wbGVAZXhhbXBsZS5jb20pJyxcclxuICAgICAgbWF4bGVuZ3RoOiBpc0FyYWJpY1xyXG4gICAgICAgID8gYNiq2KzYp9mI2LIg2LnYr9ivINin2YTYrdmC2YQg2KfZhNmF2LPZhdmI2K0g2KjZh9inICgke3ZhbGlkYXRvclZhbHVlLnJlcXVpcmVkTGVuZ3RofSkg2K3YsdmBYFxyXG4gICAgICAgIDogYHRoaXMgZmllbGQgaXMgbW9yZSB0aGFuICgke3ZhbGlkYXRvclZhbHVlLnJlcXVpcmVkTGVuZ3RofSkgbGV0dGVyYCxcclxuICAgICAgbWlubGVuZ3RoOiBpc0FyYWJpY1xyXG4gICAgICAgID8gYNi52YTZiSDYp9mE2KPZgtmEINi52K/YryAke3ZhbGlkYXRvclZhbHVlLnJlcXVpcmVkTGVuZ3RofSDYrdix2YFgXHJcbiAgICAgICAgOiBgdGhpcyBmaWVsZCBpcyBsZXNzIHRoYW4gKCR7dmFsaWRhdG9yVmFsdWUucmVxdWlyZWRMZW5ndGh9KSBsZXR0ZXJgLFxyXG4gICAgICBtaW46IGlzQXJhYmljXHJcbiAgICAgICAgPyBg2LHZgtmFINin2YPYqNixINmF2YYg2KPZiCDZitiz2KfZiNmKICR7dmFsaWRhdG9yVmFsdWUubWlufWBcclxuICAgICAgICA6IGBudW1iZXIgbW9yZSB0aGFuIG9yIGVxdWFsICgke3ZhbGlkYXRvclZhbHVlLm1pbn0pYCxcclxuICAgICAgbWF4OiBpc0FyYWJpY1xyXG4gICAgICAgID8gYNix2YLZhSDYp9i12LrYsSDZhdmGINij2Ygg2YrYs9in2YjZiiAke3ZhbGlkYXRvclZhbHVlLm1heH1gXHJcbiAgICAgICAgOiBgbnVtYmVyIGxlc3MgdGhhbiBvciBlcXVhbCAoJHt2YWxpZGF0b3JWYWx1ZS5taW59KWAsXHJcbiAgICAgIG5nYkRhdGU6IHRoaXMuZ2V0TmdiRGF0ZXBpY2tlckVycm9yTXNnKHZhbGlkYXRvclZhbHVlKSxcclxuICAgICAgY2hlY2tJZDogaXNBcmFiaWNcclxuICAgICAgICA/ICfYsdmC2YUg2KfZhNmH2YjZitipINij2Ygg2KfZhNin2YLYp9mF2Kkg2LrZitixINi12K3ZititJ1xyXG4gICAgICAgIDogJ1dyb25nIElEIG9yIElxYW1hIG51bWJlcicsXHJcbiAgICAgIGxpbms6XHJcbiAgICAgICAgKGlzQXJhYmljID8gJ9in2YTYsdin2KjYtyDYutmK2LEg2LXYrdmK2K0gJyA6ICdXcm9uZyBsaW5rICcpICtcclxuICAgICAgICAnKGh0dHA6Ly9leGFtcGxlLmNvbSknLFxyXG4gICAgICBsaW5rTVA0OlxyXG4gICAgICAgIChpc0FyYWJpYyA/ICfYsdin2KjYtyBNUDQg2LrZitixINi12K3ZititICcgOiAnV3JvbmcgTVA0IGxpbmsgJykgK1xyXG4gICAgICAgICcoaHR0cDovL2V4YW1wbGUuY29tL2V4YW1wbGUubXA0KScsXHJcbiAgICAgIG1vYmlsZU5vOlxyXG4gICAgICAgIChpc0FyYWJpYyA/ICfYrti32KMg2YHZiiDYsdmC2YUg2KfZhNis2YjYp9mEICcgOiAnV3JvbmcgbW9iaWxlIG51bWJlciAnKSArXHJcbiAgICAgICAgJygwNXh4eHh4eHh4KScsXHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIGNvbmZpZ1t2YWxpZGF0b3JOYW1lXTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYWRkUGF0dGVybk1zZyh2YWxpZGF0b3JWYWx1ZTogYW55LCBwYXR0ZXJuRXJyb3JNc2c6IHN0cmluZykge1xyXG4gICAgbGV0IHBhdHRlcm4gPSB7XHJcbiAgICAgIC4uLnZhbGlkYXRvclZhbHVlLFxyXG4gICAgICBtZXNzYWdlOiBwYXR0ZXJuRXJyb3JNc2csXHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIHBhdHRlcm47XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldE5nYkRhdGVwaWNrZXJFcnJvck1zZyh2YWxpZGF0b3JWYWx1ZTogYW55KTogc3RyaW5nIHtcclxuICAgIGxldCBtc2cgPSAnJztcclxuICAgIGlmICh2YWxpZGF0b3JWYWx1ZS5tYXhEYXRlKSB7XHJcbiAgICAgIG1zZyA9IGDYp9mE2KrYp9ix2YrYriDYp9mE2YXYr9iu2YQgXCIke3RoaXMucGFyc2VyRm9ybWF0dGVyLmZvcm1hdChcclxuICAgICAgICB2YWxpZGF0b3JWYWx1ZS5tYXhEYXRlLmFjdHVhbFxyXG4gICAgICApfVwiINin2YPYqNixINmF2YYg2KrYp9ix2YrYriDYp9mE2YrZiNmFIFwiJHt0aGlzLnBhcnNlckZvcm1hdHRlci5mb3JtYXQoXHJcbiAgICAgICAgdmFsaWRhdG9yVmFsdWUubWF4RGF0ZS5tYXhEYXRlXHJcbiAgICAgICl9XCJgO1xyXG4gICAgfSBlbHNlIGlmICh2YWxpZGF0b3JWYWx1ZS5taW5EYXRlKSB7XHJcbiAgICAgIG1zZyA9IGDYp9mE2KrYp9ix2YrYriDYp9mE2YXYr9iu2YQgXCIke3RoaXMucGFyc2VyRm9ybWF0dGVyLmZvcm1hdChcclxuICAgICAgICB2YWxpZGF0b3JWYWx1ZS5taW5EYXRlLmFjdHVhbFxyXG4gICAgICApfVwiINmK2KzYqCDYp9mGINmK2YPZiNmGINin2YPYqNixINmF2YYg2KPZiCDZitiz2KfZiNmKINiq2KfYsdmK2K4g2KfZhNio2K/Yp9mK2KkgXCIke3RoaXMucGFyc2VyRm9ybWF0dGVyLmZvcm1hdChcclxuICAgICAgICB2YWxpZGF0b3JWYWx1ZS5taW5EYXRlLm1pbkRhdGVcclxuICAgICAgKX1cImA7XHJcbiAgICB9IGVsc2UgaWYgKHZhbGlkYXRvclZhbHVlLmludmFsaWQpIHtcclxuICAgICAgbXNnID0gYNin2YTYqtin2LHZitiuINin2YTZhdiv2K7ZhCDYutmK2LEg2LXYrdmK2K0gJHt2YWxpZGF0b3JWYWx1ZS5pbnZhbGlkfS5gO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG1zZztcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc3RhdGljIGNoZWNrSGlqcmlEYXRlVmFsaWQoZGF0ZTogTmdiRGF0ZSk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuICEoXHJcbiAgICAgIG1vbWVudEhpanJpLmlEYXlzSW5Nb250aChkYXRlPy55ZWFyLCBkYXRlPy5tb250aCAtIDEpIDwgZGF0ZT8uZGF5IHx8XHJcbiAgICAgIGRhdGU/LmRheSA8PSAwIHx8XHJcbiAgICAgIGRhdGU/Lm1vbnRoIDw9IDAgfHxcclxuICAgICAgZGF0ZT8ubW9udGggPiAxMiB8fFxyXG4gICAgICBkYXRlPy55ZWFyPy50b1N0cmluZygpLmxlbmd0aCAhPT0gNFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc3RhdGljIGNvbnZlcnRUb0VuKHZhbHVlOiBzdHJpbmcpIHtcclxuICAgIGxldCBuZXdWYWx1ZSA9ICcnO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB2YWx1ZS5sZW5ndGg7IGkrKykge1xyXG4gICAgICBsZXQgY2ggPSB2YWx1ZS5jaGFyQ29kZUF0KGkpO1xyXG4gICAgICBpZiAoY2ggPj0gMTU4NCAmJiBjaCA8PSAxNjUwKSB7XHJcbiAgICAgICAgbGV0IG5ld0NoYXIgPSBjaCAtIDE1ODQ7XHJcbiAgICAgICAgbmV3VmFsdWUgPSBuZXdWYWx1ZSArIFN0cmluZy5mcm9tQ2hhckNvZGUobmV3Q2hhcik7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgbmV3VmFsdWUgPSBuZXdWYWx1ZSArIFN0cmluZy5mcm9tQ2hhckNvZGUoY2gpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbmV3VmFsdWU7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHN0YXRpYyBuYXRpb25hbElkVmFsaWRhdGUoY2l2aWxJZDogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICBpZiAoY2l2aWxJZCkge1xyXG4gICAgICBsZXQgc3RySUQgPSB0aGlzLmNvbnZlcnRUb0VuKGNpdmlsSWQpO1xyXG4gICAgICBsZXQgZGlnaXRzID0gJyc7XHJcbiAgICAgIGxldCBjb3VudGVyID0gMDtcclxuICAgICAgd2hpbGUgKGNvdW50ZXIgPCA5KSB7XHJcbiAgICAgICAgaWYgKChjb3VudGVyICsgMSkgJSAyID09IDApIHtcclxuICAgICAgICAgIGRpZ2l0cyA9IGRpZ2l0cyArIHN0cklELnN1YnN0cmluZyhjb3VudGVyLCBjb3VudGVyICsgMSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGRpZ2l0cyA9XHJcbiAgICAgICAgICAgIGRpZ2l0cyArICgrc3RySUQuc3Vic3RyaW5nKGNvdW50ZXIsIGNvdW50ZXIgKyAxKSAqIDIpLnRvU3RyaW5nKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvdW50ZXIrKztcclxuICAgICAgfVxyXG4gICAgICBsZXQgaW50U3VtID0gMDtcclxuICAgICAgbGV0IGludFN1bVRlbXAgPSAwO1xyXG4gICAgICBsZXQgc3RyU3VtO1xyXG4gICAgICBsZXQgaW50T2RkU3VtRGlnaXQ7XHJcbiAgICAgIGxldCBDaGVja0RpZ2l0O1xyXG4gICAgICBjb3VudGVyID0gMDtcclxuICAgICAgd2hpbGUgKGNvdW50ZXIgPCBkaWdpdHMubGVuZ3RoKSB7XHJcbiAgICAgICAgaW50U3VtVGVtcCA9ICtkaWdpdHMuY2hhckF0KGNvdW50ZXIpICogMTtcclxuICAgICAgICBpbnRTdW0gKz0gaW50U3VtVGVtcDtcclxuICAgICAgICBjb3VudGVyKys7XHJcbiAgICAgIH1cclxuICAgICAgc3RyU3VtID0gaW50U3VtLnRvU3RyaW5nKCk7XHJcbiAgICAgIGlmIChzdHJTdW0ubGVuZ3RoID09IDEpIHtcclxuICAgICAgICBpbnRPZGRTdW1EaWdpdCA9IGludFN1bTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBpbnRPZGRTdW1EaWdpdCA9IHN0clN1bS5zdWJzdHJpbmcoc3RyU3VtLmxlbmd0aCwgc3RyU3VtLmxlbmd0aCAtIDEpO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChpbnRPZGRTdW1EaWdpdCA9PSAwKSB7XHJcbiAgICAgICAgQ2hlY2tEaWdpdCA9IDA7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgQ2hlY2tEaWdpdCA9ICgxMCAtICtpbnRPZGRTdW1EaWdpdCkudG9TdHJpbmcoKTtcclxuICAgICAgfVxyXG4gICAgICBsZXQgUHVibGljSUQgPSB0aGlzLmNvbnZlcnRUb0VuKGNpdmlsSWQpO1xyXG4gICAgICBpZiAoXHJcbiAgICAgICAgQ2hlY2tEaWdpdCA9PVxyXG4gICAgICAgICAgUHVibGljSUQuc3Vic3RyaW5nKFB1YmxpY0lELmxlbmd0aCAtIDEsIFB1YmxpY0lELmxlbmd0aCkgJiZcclxuICAgICAgICBzdHJJRC5sZW5ndGggPT0gMTAgJiZcclxuICAgICAgICBzdHJJRC5zdWJzdHJpbmcoMCwgMSkgPT0gJzEnXHJcbiAgICAgICkge1xyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzdGF0aWMgaXFhbWFJZFZhbGlkYXRlKGNpdmlsSWQ6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKGNpdmlsSWQpIHtcclxuICAgICAgbGV0IHN0cklEID0gdGhpcy5jb252ZXJ0VG9FbihjaXZpbElkKTtcclxuICAgICAgbGV0IGRpZ2l0cyA9ICcnO1xyXG4gICAgICBsZXQgY291bnRlciA9IDA7XHJcbiAgICAgIHdoaWxlIChjb3VudGVyIDwgOSkge1xyXG4gICAgICAgIGlmICgoY291bnRlciArIDEpICUgMiA9PSAwKSB7XHJcbiAgICAgICAgICBkaWdpdHMgPSBkaWdpdHMgKyBzdHJJRC5zdWJzdHJpbmcoY291bnRlciwgY291bnRlciArIDEpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBkaWdpdHMgPVxyXG4gICAgICAgICAgICBkaWdpdHMgKyAoK3N0cklELnN1YnN0cmluZyhjb3VudGVyLCBjb3VudGVyICsgMSkgKiAyKS50b1N0cmluZygpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb3VudGVyKys7XHJcbiAgICAgIH1cclxuICAgICAgbGV0IGludFN1bSA9IDA7XHJcbiAgICAgIGxldCBpbnRTdW1UZW1wID0gMDtcclxuICAgICAgbGV0IHN0clN1bTtcclxuICAgICAgbGV0IGludE9kZFN1bURpZ2l0O1xyXG4gICAgICBsZXQgQ2hlY2tEaWdpdDtcclxuICAgICAgY291bnRlciA9IDA7XHJcbiAgICAgIHdoaWxlIChjb3VudGVyIDwgZGlnaXRzLmxlbmd0aCkge1xyXG4gICAgICAgIGludFN1bVRlbXAgPSArZGlnaXRzLmNoYXJBdChjb3VudGVyKSAqIDE7XHJcbiAgICAgICAgaW50U3VtICs9IGludFN1bVRlbXA7XHJcbiAgICAgICAgY291bnRlcisrO1xyXG4gICAgICB9XHJcbiAgICAgIHN0clN1bSA9IGludFN1bS50b1N0cmluZygpO1xyXG4gICAgICBpZiAoc3RyU3VtLmxlbmd0aCA9PSAxKSB7XHJcbiAgICAgICAgaW50T2RkU3VtRGlnaXQgPSBpbnRTdW07XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgaW50T2RkU3VtRGlnaXQgPSBzdHJTdW0uc3Vic3RyaW5nKHN0clN1bS5sZW5ndGgsIHN0clN1bS5sZW5ndGggLSAxKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAoaW50T2RkU3VtRGlnaXQgPT0gMCkge1xyXG4gICAgICAgIENoZWNrRGlnaXQgPSAwO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIENoZWNrRGlnaXQgPSAoMTAgLSAraW50T2RkU3VtRGlnaXQpLnRvU3RyaW5nKCk7XHJcbiAgICAgIH1cclxuICAgICAgbGV0IFB1YmxpY0lEID0gdGhpcy5jb252ZXJ0VG9FbihjaXZpbElkKTtcclxuICAgICAgaWYgKFxyXG4gICAgICAgIENoZWNrRGlnaXQgPT1cclxuICAgICAgICAgIFB1YmxpY0lELnN1YnN0cmluZyhQdWJsaWNJRC5sZW5ndGggLSAxLCBQdWJsaWNJRC5sZW5ndGgpICYmXHJcbiAgICAgICAgc3RySUQubGVuZ3RoID09IDEwICYmXHJcbiAgICAgICAgc3RySUQuc3Vic3RyaW5nKDAsIDEpID09ICcyJ1xyXG4gICAgICApIHtcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19
|
|
290
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXBhLWZvcm0uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWlwYS1saWJyYXJ5L3NyYy9saWIvaXBhLWZvcm0vaXBhLWZvcm0uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sV0FBVyxNQUFNLGNBQWMsQ0FBQzs7O0FBT3ZDLE1BQU0sT0FBTyxjQUFjO0lBQ3pCLFlBQW9CLGVBQXVDO1FBQXZDLG9CQUFlLEdBQWYsZUFBZSxDQUF3QjtJQUFHLENBQUM7SUFFL0Q7O09BRUc7SUFDSCxNQUFNLENBQUMsY0FBYyxDQUFDLE9BQXdCO1FBQzVDLE1BQU0sV0FBVyxHQUNmLHVEQUF1RCxDQUFDLElBQUksQ0FDMUQsT0FBTyxDQUFDLEtBQUssQ0FDZCxDQUFDO1FBQ0osT0FBTyxXQUFXLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDO0lBQy9ELENBQUM7SUFFRDs7T0FFRztJQUNILE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxPQUF3QjtRQUMvQyxNQUFNLFdBQVcsR0FDZixrRkFBa0YsQ0FBQyxJQUFJLENBQ3JGLE9BQU8sQ0FBQyxLQUFLLENBQ2QsQ0FBQztRQUNKLE9BQU8sV0FBVyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsQ0FBQztJQUNsRSxDQUFDO0lBRUQ7O09BRUc7SUFDSCxNQUFNLENBQUMsUUFBUSxDQUFDLE9BQXdCO1FBQ3RDLE1BQU0sV0FBVyxHQUFHLFdBQVcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3BELE9BQU8sV0FB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RSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBGb3JtQ29udHJvbCwgVmFsaWRhdGlvbkVycm9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IG1vbWVudEhpanJpIGZyb20gJ21vbWVudC1oaWpyaSc7XHJcbmltcG9ydCB7IE1vbWVudCB9IGZyb20gJ21vbWVudCc7XHJcbmltcG9ydCB7IE5nYkRhdGUsIE5nYkRhdGVQYXJzZXJGb3JtYXR0ZXIgfSBmcm9tICdAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcCc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgSVBBRm9ybVNlcnZpY2Uge1xyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcGFyc2VyRm9ybWF0dGVyOiBOZ2JEYXRlUGFyc2VyRm9ybWF0dGVyKSB7fVxyXG5cclxuICAvKipcclxuICAgKiBjaGVjayBsaW5rIGlzIHZhbGlkLlxyXG4gICAqL1xyXG4gIHN0YXRpYyBsaW5rVmFsaWRhdGlvbihjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XHJcbiAgICBjb25zdCBpc1ZhbGlkTGluayA9XHJcbiAgICAgIC9eKChodHRwcz86XFwvXFwvKVtcXHctXSsoXFwuW2Etei1dKykrXFwuPyg6XFxkKyk/KFxcL1xcUyopPykkLy50ZXN0KFxyXG4gICAgICAgIGNvbnRyb2wudmFsdWVcclxuICAgICAgKTtcclxuICAgIHJldHVybiBpc1ZhbGlkTGluayB8fCAhY29udHJvbC52YWx1ZSA/IG51bGwgOiB7IGxpbms6IHRydWUgfTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIGNoZWNrIG1wNCBsaW5rIGlzIHZhbGlkLlxyXG4gICAqL1xyXG4gIHN0YXRpYyBtcDRMaW5rVmFsaWRhdGlvbihjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XHJcbiAgICBjb25zdCBpc1ZhbGlkTGluayA9XHJcbiAgICAgIC9eKChodHRwcz86XFwvXFwvKVtcXHctXSsoXFwuW2Etei1dKykrXFwuPyg6XFxkKyk/KFxcL1xcUyopPyhcXC9bXFx3XFx1MDYwMC1cXHUwNkZGXStcXC5tcDQpKSQvLnRlc3QoXHJcbiAgICAgICAgY29udHJvbC52YWx1ZVxyXG4gICAgICApO1xyXG4gICAgcmV0dXJuIGlzVmFsaWRMaW5rIHx8ICFjb250cm9sLnZhbHVlID8gbnVsbCA6IHsgbGlua01QNDogdHJ1ZSB9O1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogY2hlY2sgbW9iaWxlIG51bWJlciBpcyB2YWxpZC5cclxuICAgKi9cclxuICBzdGF0aWMgbW9iaWxlTm8oY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xyXG4gICAgY29uc3QgaXNWYWxpZExpbmsgPSAvXjA1XFxkezh9JC8udGVzdChjb250cm9sLnZhbHVlKTtcclxuICAgIHJldHVybiBpc1ZhbGlkTGluayB8fCAhY29udHJvbC52YWx1ZSA/IG51bGwgOiB7IG1vYmlsZU5vOiB0cnVlIH07XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBjaGVjayBlbWFpbCBpcyB2YWxpZC5cclxuICAgKi9cclxuICBzdGF0aWMgZW1haWwoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xyXG4gICAgY29uc3QgaXNWYWxpZExpbmsgPVxyXG4gICAgICAvXigoW148PigpW1xcXVxcLiw7Olxcc0BcXFwiXSsoXFwuW148PigpW1xcXVxcLiw7Olxcc0BcXFwiXSspKil8KFxcXCIuK1xcXCIpKUAoKFtePD4oKVtcXF1cXC4sOzpcXHNAXFxcIl0rXFwuKStbXjw+KClbXFxdXFwuLDs6XFxzQFxcXCJdezIsfSkkLy50ZXN0KFxyXG4gICAgICAgIGNvbnRyb2wudmFsdWVcclxuICAgICAgKTtcclxuICAgIHJldHVybiBpc1ZhbGlkTGluayB8fCAhY29udHJvbC52YWx1ZSA/IG51bGwgOiB7IEVtYWlsOiB0cnVlIH07XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBjaGVjayBuYXRpb25hbCBJRCBvciBpcWFtYSBJRCBpcyB2YWxpZC5cclxuICAgKi9cclxuICBzdGF0aWMgY2hlY2tJRChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XHJcbiAgICBsZXQgaXNWYWxpZCA9IGZhbHNlO1xyXG4gICAgY29uc3QgdmFsdWUgPSBjb250cm9sLnZhbHVlO1xyXG4gICAgaWYgKFxyXG4gICAgICBJUEFGb3JtU2VydmljZS5uYXRpb25hbElkVmFsaWRhdGUodmFsdWUpIHx8XHJcbiAgICAgIElQQUZvcm1TZXJ2aWNlLmlxYW1hSWRWYWxpZGF0ZSh2YWx1ZSlcclxuICAgICkge1xyXG4gICAgICBpc1ZhbGlkID0gdHJ1ZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlzVmFsaWQgPSBmYWxzZTtcclxuICAgIH1cclxuICAgIHJldHVybiBpc1ZhbGlkIHx8ICF2YWx1ZSA/IG51bGwgOiB7IGNoZWNrSWQ6IHRydWUgfTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyB2YWxpZEhpanJpRGF0ZShjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XHJcbiAgICBjb25zdCBkYXRlOiBOZ2JEYXRlID0gY29udHJvbC52YWx1ZTtcclxuICAgIGNvbnN0IGlzVmFsaWQgPSBJUEFGb3JtU2VydmljZS5jaGVja0hpanJpRGF0ZVZhbGlkKGRhdGUpO1xyXG4gICAgcmV0dXJuIGlzVmFsaWQgfHwgIWRhdGVcclxuICAgICAgPyBudWxsXHJcbiAgICAgIDoge1xyXG4gICAgICAgICAgbmdiRGF0ZToge1xyXG4gICAgICAgICAgICBpbnZhbGlkOlxyXG4gICAgICAgICAgICAgIGRhdGU/LnllYXIgK1xyXG4gICAgICAgICAgICAgICctJyArXHJcbiAgICAgICAgICAgICAgKGRhdGU/Lm1vbnRoID4gMTAgPyBkYXRlPy5tb250aCA6ICcwJyArIGRhdGU/Lm1vbnRoKSArXHJcbiAgICAgICAgICAgICAgJy0nICtcclxuICAgICAgICAgICAgICAoZGF0ZT8uZGF5ID4gMTAgPyBkYXRlPy5kYXkgOiAnMCcgKyBkYXRlPy5kYXkpLFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICB9O1xyXG4gIH1cclxuXHJcbiAgZ2V0RXJyb3JNZXNzYWdlKFxyXG4gICAgY29udHJvbDogRm9ybUNvbnRyb2wsXHJcbiAgICBwYXR0ZXJuRXJyb3JNc2cgPSAnJyxcclxuICAgIGlzQXJhYmljOiBib29sZWFuXHJcbiAgKTogc3RyaW5nIHwgbnVsbCB7XHJcbiAgICBmb3IgKGNvbnN0IHByb3BlcnR5TmFtZSBpbiBjb250cm9sPy5lcnJvcnMpIHtcclxuICAgICAgaWYgKFxyXG4gICAgICAgIGNvbnRyb2w/LmVycm9ycy5oYXNPd25Qcm9wZXJ0eShwcm9wZXJ0eU5hbWUpICYmXHJcbiAgICAgICAgKGNvbnRyb2wudG91Y2hlZCB8fCBjb250cm9sLmRpcnR5KVxyXG4gICAgICApIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5nZXRWYWxpZGF0b3JFcnJvck1lc3NhZ2UoXHJcbiAgICAgICAgICBwcm9wZXJ0eU5hbWUsXHJcbiAgICAgICAgICBjb250cm9sLmVycm9yc1twcm9wZXJ0eU5hbWVdLFxyXG4gICAgICAgICAgcGF0dGVybkVycm9yTXNnLFxyXG4gICAgICAgICAgaXNBcmFiaWNcclxuICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIGNvbnZlcnQgZ3JlZ29yaWFuIGRhdGUgdG8gaGlqcmkgZGF0ZSAoQmFzZWQgb24gVW1tIGFsLVF1cmEgY2FsY3VsYXRpb25zKS5cclxuICAgKiBAcGFyYW0gZGF0ZTogZ3JlZ29yaWFuIGRhdGVcclxuICAgKiBAcGFyYW0gZm9ybWF0OiBpREQgPT4gZGF5OiDZodmlLCBpTU0gPT4gbW9udGg6INmg2aQsIGlNTU0gPT4gbW9udGg6INix2KjZiti5INmiLFxyXG4gICAqICAgICAgICAgICAgICAgaU1NTU0gPT4g2LHYqNmK2Lkg2KfZhNir2KfZhtmKLCAgaVlZID0+IHllYXI6INmk2aIsIGlZWVlZID0+IHllYXI6INmh2aTZpNmiLFxyXG4gICAqICAgICAgICAgICAgICAgZGQgPT4g2YYsIGRkZCA9PiDYpdir2YbZitmGLCBkZGRkID0+INin2YTYpdir2YbZitmGXHJcbiAgICogQGV4YW1wbGUgJ2lZWVlZL2lNL2lE2YfZgCDYp9mE2YXZiNin2YHZgiBZWVlZL00vRNmFJ1xyXG4gICAqICAgICAgICAgICAn2aHZpNmk2aIv2aDZpC/Zodml2YfZgCDYp9mE2YXZiNin2YHZgiDZotmg2aLZoC/ZodmhL9mj2aAnXHJcbiAgICovXHJcbiAgY29udmVydFRvSGlqcmlEYXRlKFxyXG4gICAgZGF0ZTogc3RyaW5nLFxyXG4gICAgZm9ybWF0ID0gJ2lZWVlZLWlNTS1pREQnLFxyXG4gICAgbGFuZyA9ICdhci1TQSdcclxuICApOiBzdHJpbmcge1xyXG4gICAgbW9tZW50SGlqcmkubG9jYWxlKGxhbmcpO1xyXG4gICAgcmV0dXJuIG1vbWVudEhpanJpKGRhdGUpLmZvcm1hdChmb3JtYXQpO1xyXG4gIH1cclxuXHJcbiAgY29udmVydFRvR3JlZ29yaWFuRGF0ZShcclxuICAgIGRhdGU6IE1vbWVudCxcclxuICAgIGZvcm1hdCA9ICdZWVlZLU1NLUREJyxcclxuICAgIGxhbmcgPSAnZW4nXHJcbiAgKTogc3RyaW5nIHtcclxuICAgIG1vbWVudEhpanJpLmxvY2FsZShsYW5nKTtcclxuICAgIGNvbnN0IG0gPSBtb21lbnRIaWpyaS5pQ29udmVydC50b0dyZWdvcmlhbihcclxuICAgICAgZGF0ZS55ZWFyKCksXHJcbiAgICAgIGRhdGUubW9udGgoKSxcclxuICAgICAgZGF0ZS5kYXRlKClcclxuICAgICk7XHJcbiAgICByZXR1cm4gbW9tZW50SGlqcmkobmV3IERhdGUobS5neSwgbS5nbSwgbS5nZCkpLmZvcm1hdChmb3JtYXQpO1xyXG4gIH1cclxuXHJcbiAgZ2V0Q3VycmVudEhpanJpRGF0ZSgpIHtcclxuICAgIG1vbWVudEhpanJpLmxvY2FsZSgnZW4nKTtcclxuICAgIHJldHVybiBtb21lbnRIaWpyaSgpLmZvcm1hdCgnaVlZWVkvaU1NL2lERCcpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRWYWxpZGF0b3JFcnJvck1lc3NhZ2UoXHJcbiAgICB2YWxpZGF0b3JOYW1lOiBzdHJpbmcsXHJcbiAgICB2YWxpZGF0b3JWYWx1ZTogYW55LFxyXG4gICAgcGF0dGVybkVycm9yTXNnOiBzdHJpbmcsXHJcbiAgICBpc0FyYWJpYzogYm9vbGVhblxyXG4gICk6IHN0cmluZyB7XHJcbiAgICBpZiAodmFsaWRhdG9yTmFtZSA9PT0gJ3BhdHRlcm4nKSB7XHJcbiAgICAgIHZhbGlkYXRvclZhbHVlID0gdGhpcy5hZGRQYXR0ZXJuTXNnKHZhbGlkYXRvclZhbHVlLCBwYXR0ZXJuRXJyb3JNc2cpO1xyXG4gICAgfVxyXG4gICAgY29uc3QgY29uZmlnOiBhbnkgPSB7XHJcbiAgICAgIHJlcXVpcmVkOiBpc0FyYWJpYyA/ICfZh9iw2Kcg2KfZhNit2YLZhCDZhdi32YTZiNioJyA6ICd0aGlzIGZpZWxkIHJlcXVpcmVkJyxcclxuICAgICAgcGF0dGVybjogYCR7dmFsaWRhdG9yVmFsdWUubWVzc2FnZX1gLFxyXG4gICAgICBFbWFpbDpcclxuICAgICAgICAoaXNBcmFiaWMgPyAn2K7Yt9ijINmB2Yog2KfZhNio2LHZitivINin2YTYp9mE2YPYqtix2YjZhtmKICcgOiAnSW52YWxpZCBlbWFpbCAnKSArXHJcbiAgICAgICAgJyhleGFtcGxlQGV4YW1wbGUuY29tKScsXHJcbiAgICAgIG1heGxlbmd0aDogaXNBcmFiaWNcclxuICAgICAgICA/IGDYqtis2KfZiNiyINi52K/YryDYp9mE2K3ZgtmEINin2YTZhdiz2YXZiNitINio2YfYpyAoJHt2YWxpZGF0b3JWYWx1ZS5yZXF1aXJlZExlbmd0aH0pINit2LHZgWBcclxuICAgICAgICA6IGB0aGlzIGZpZWxkIGlzIG1vcmUgdGhhbiAoJHt2YWxpZGF0b3JWYWx1ZS5yZXF1aXJlZExlbmd0aH0pIGxldHRlcmAsXHJcbiAgICAgIG1pbmxlbmd0aDogaXNBcmFiaWNcclxuICAgICAgICA/IGDYudmE2Ykg2KfZhNij2YLZhCDYudiv2K8gJHt2YWxpZGF0b3JWYWx1ZS5yZXF1aXJlZExlbmd0aH0g2K3YsdmBYFxyXG4gICAgICAgIDogYHRoaXMgZmllbGQgaXMgbGVzcyB0aGFuICgke3ZhbGlkYXRvclZhbHVlLnJlcXVpcmVkTGVuZ3RofSkgbGV0dGVyYCxcclxuICAgICAgbWluOiBpc0FyYWJpY1xyXG4gICAgICAgID8gYNix2YLZhSDYp9mD2KjYsSDZhdmGINij2Ygg2YrYs9in2YjZiiAke3ZhbGlkYXRvclZhbHVlLm1pbn1gXHJcbiAgICAgICAgOiBgbnVtYmVyIG1vcmUgdGhhbiBvciBlcXVhbCAoJHt2YWxpZGF0b3JWYWx1ZS5taW59KWAsXHJcbiAgICAgIG1heDogaXNBcmFiaWNcclxuICAgICAgICA/IGDYsdmC2YUg2KfYtdi62LEg2YXZhiDYo9mIINmK2LPYp9mI2YogJHt2YWxpZGF0b3JWYWx1ZS5tYXh9YFxyXG4gICAgICAgIDogYG51bWJlciBsZXNzIHRoYW4gb3IgZXF1YWwgKCR7dmFsaWRhdG9yVmFsdWUubWlufSlgLFxyXG4gICAgICBuZ2JEYXRlOiB0aGlzLmdldE5nYkRhdGVwaWNrZXJFcnJvck1zZyh2YWxpZGF0b3JWYWx1ZSksXHJcbiAgICAgIGNoZWNrSWQ6IGlzQXJhYmljXHJcbiAgICAgICAgPyAn2LHZgtmFINin2YTZh9mI2YrYqSDYo9mIINin2YTYp9mC2KfZhdipINi62YrYsSDYtdit2YrYrSdcclxuICAgICAgICA6ICdXcm9uZyBJRCBvciBJcWFtYSBudW1iZXInLFxyXG4gICAgICBsaW5rOlxyXG4gICAgICAgIChpc0FyYWJpYyA/ICfYp9mE2LHYp9io2Lcg2LrZitixINi12K3ZititICcgOiAnV3JvbmcgbGluayAnKSArXHJcbiAgICAgICAgJyhodHRwOi8vZXhhbXBsZS5jb20pJyxcclxuICAgICAgbGlua01QNDpcclxuICAgICAgICAoaXNBcmFiaWMgPyAn2LHYp9io2LcgTVA0INi62YrYsSDYtdit2YrYrSAnIDogJ1dyb25nIE1QNCBsaW5rICcpICtcclxuICAgICAgICAnKGh0dHA6Ly9leGFtcGxlLmNvbS9leGFtcGxlLm1wNCknLFxyXG4gICAgICBtb2JpbGVObzpcclxuICAgICAgICAoaXNBcmFiaWMgPyAn2K7Yt9ijINmB2Yog2LHZgtmFINin2YTYrNmI2KfZhCAnIDogJ1dyb25nIG1vYmlsZSBudW1iZXIgJykgK1xyXG4gICAgICAgICcoMDV4eHh4eHh4eCknLFxyXG4gICAgfTtcclxuICAgIHJldHVybiBjb25maWdbdmFsaWRhdG9yTmFtZV07XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFkZFBhdHRlcm5Nc2codmFsaWRhdG9yVmFsdWU6IGFueSwgcGF0dGVybkVycm9yTXNnOiBzdHJpbmcpIHtcclxuICAgIGxldCBwYXR0ZXJuID0ge1xyXG4gICAgICAuLi52YWxpZGF0b3JWYWx1ZSxcclxuICAgICAgbWVzc2FnZTogcGF0dGVybkVycm9yTXNnLFxyXG4gICAgfTtcclxuICAgIHJldHVybiBwYXR0ZXJuO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXROZ2JEYXRlcGlja2VyRXJyb3JNc2codmFsaWRhdG9yVmFsdWU6IGFueSk6IHN0cmluZyB7XHJcbiAgICBsZXQgbXNnID0gJyc7XHJcbiAgICBpZiAodmFsaWRhdG9yVmFsdWUubWF4RGF0ZSkge1xyXG4gICAgICBtc2cgPSBg2KfZhNiq2KfYsdmK2K4g2KfZhNmF2K/YrtmEIFwiJHt0aGlzLnBhcnNlckZvcm1hdHRlci5mb3JtYXQoXHJcbiAgICAgICAgdmFsaWRhdG9yVmFsdWUubWF4RGF0ZS5hY3R1YWxcclxuICAgICAgKX1cIiDYp9mD2KjYsSDZhdmGINiq2KfYsdmK2K4g2KfZhNmK2YjZhSBcIiR7dGhpcy5wYXJzZXJGb3JtYXR0ZXIuZm9ybWF0KFxyXG4gICAgICAgIHZhbGlkYXRvclZhbHVlLm1heERhdGUubWF4RGF0ZVxyXG4gICAgICApfVwiYDtcclxuICAgIH0gZWxzZSBpZiAodmFsaWRhdG9yVmFsdWUubWluRGF0ZSkge1xyXG4gICAgICBtc2cgPSBg2KfZhNiq2KfYsdmK2K4g2KfZhNmF2K/YrtmEIFwiJHt0aGlzLnBhcnNlckZvcm1hdHRlci5mb3JtYXQoXHJcbiAgICAgICAgdmFsaWRhdG9yVmFsdWUubWluRGF0ZS5hY3R1YWxcclxuICAgICAgKX1cIiDZitis2Kgg2KfZhiDZitmD2YjZhiDYp9mD2KjYsSDZhdmGINij2Ygg2YrYs9in2YjZiiDYqtin2LHZitiuINin2YTYqNiv2KfZitipIFwiJHt0aGlzLnBhcnNlckZvcm1hdHRlci5mb3JtYXQoXHJcbiAgICAgICAgdmFsaWRhdG9yVmFsdWUubWluRGF0ZS5taW5EYXRlXHJcbiAgICAgICl9XCJgO1xyXG4gICAgfSBlbHNlIGlmICh2YWxpZGF0b3JWYWx1ZS5pbnZhbGlkKSB7XHJcbiAgICAgIG1zZyA9IGDYp9mE2KrYp9ix2YrYriDYp9mE2YXYr9iu2YQg2LrZitixINi12K3ZititICR7dmFsaWRhdG9yVmFsdWUuaW52YWxpZH0uYDtcclxuICAgIH1cclxuICAgIHJldHVybiBtc2c7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHN0YXRpYyBjaGVja0hpanJpRGF0ZVZhbGlkKGRhdGU6IE5nYkRhdGUpOiBib29sZWFuIHtcclxuICAgIHJldHVybiAhKFxyXG4gICAgICBtb21lbnRIaWpyaS5pRGF5c0luTW9udGgoZGF0ZT8ueWVhciwgZGF0ZT8ubW9udGggLSAxKSA8IGRhdGU/LmRheSB8fFxyXG4gICAgICBkYXRlPy5kYXkgPD0gMCB8fFxyXG4gICAgICBkYXRlPy5tb250aCA8PSAwIHx8XHJcbiAgICAgIGRhdGU/Lm1vbnRoID4gMTIgfHxcclxuICAgICAgZGF0ZT8ueWVhcj8udG9TdHJpbmcoKS5sZW5ndGggIT09IDRcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHN0YXRpYyBjb252ZXJ0VG9Fbih2YWx1ZTogc3RyaW5nKSB7XHJcbiAgICBsZXQgbmV3VmFsdWUgPSAnJztcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdmFsdWUubGVuZ3RoOyBpKyspIHtcclxuICAgICAgbGV0IGNoID0gdmFsdWUuY2hhckNvZGVBdChpKTtcclxuICAgICAgaWYgKGNoID49IDE1ODQgJiYgY2ggPD0gMTY1MCkge1xyXG4gICAgICAgIGxldCBuZXdDaGFyID0gY2ggLSAxNTg0O1xyXG4gICAgICAgIG5ld1ZhbHVlID0gbmV3VmFsdWUgKyBTdHJpbmcuZnJvbUNoYXJDb2RlKG5ld0NoYXIpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIG5ld1ZhbHVlID0gbmV3VmFsdWUgKyBTdHJpbmcuZnJvbUNoYXJDb2RlKGNoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIG5ld1ZhbHVlO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzdGF0aWMgbmF0aW9uYWxJZFZhbGlkYXRlKGNpdmlsSWQ6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKGNpdmlsSWQpIHtcclxuICAgICAgbGV0IHN0cklEID0gdGhpcy5jb252ZXJ0VG9FbihjaXZpbElkKTtcclxuICAgICAgbGV0IGRpZ2l0cyA9ICcnO1xyXG4gICAgICBsZXQgY291bnRlciA9IDA7XHJcbiAgICAgIHdoaWxlIChjb3VudGVyIDwgOSkge1xyXG4gICAgICAgIGlmICgoY291bnRlciArIDEpICUgMiA9PSAwKSB7XHJcbiAgICAgICAgICBkaWdpdHMgPSBkaWdpdHMgKyBzdHJJRC5zdWJzdHJpbmcoY291bnRlciwgY291bnRlciArIDEpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBkaWdpdHMgPVxyXG4gICAgICAgICAgICBkaWdpdHMgKyAoK3N0cklELnN1YnN0cmluZyhjb3VudGVyLCBjb3VudGVyICsgMSkgKiAyKS50b1N0cmluZygpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb3VudGVyKys7XHJcbiAgICAgIH1cclxuICAgICAgbGV0IGludFN1bSA9IDA7XHJcbiAgICAgIGxldCBpbnRTdW1UZW1wID0gMDtcclxuICAgICAgbGV0IHN0clN1bTtcclxuICAgICAgbGV0IGludE9kZFN1bURpZ2l0O1xyXG4gICAgICBsZXQgQ2hlY2tEaWdpdDtcclxuICAgICAgY291bnRlciA9IDA7XHJcbiAgICAgIHdoaWxlIChjb3VudGVyIDwgZGlnaXRzLmxlbmd0aCkge1xyXG4gICAgICAgIGludFN1bVRlbXAgPSArZGlnaXRzLmNoYXJBdChjb3VudGVyKSAqIDE7XHJcbiAgICAgICAgaW50U3VtICs9IGludFN1bVRlbXA7XHJcbiAgICAgICAgY291bnRlcisrO1xyXG4gICAgICB9XHJcbiAgICAgIHN0clN1bSA9IGludFN1bS50b1N0cmluZygpO1xyXG4gICAgICBpZiAoc3RyU3VtLmxlbmd0aCA9PSAxKSB7XHJcbiAgICAgICAgaW50T2RkU3VtRGlnaXQgPSBpbnRTdW07XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgaW50T2RkU3VtRGlnaXQgPSBzdHJTdW0uc3Vic3RyaW5nKHN0clN1bS5sZW5ndGgsIHN0clN1bS5sZW5ndGggLSAxKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAoaW50T2RkU3VtRGlnaXQgPT0gMCkge1xyXG4gICAgICAgIENoZWNrRGlnaXQgPSAwO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIENoZWNrRGlnaXQgPSAoMTAgLSAraW50T2RkU3VtRGlnaXQpLnRvU3RyaW5nKCk7XHJcbiAgICAgIH1cclxuICAgICAgbGV0IFB1YmxpY0lEID0gdGhpcy5jb252ZXJ0VG9FbihjaXZpbElkKTtcclxuICAgICAgaWYgKFxyXG4gICAgICAgIENoZWNrRGlnaXQgPT1cclxuICAgICAgICAgIFB1YmxpY0lELnN1YnN0cmluZyhQdWJsaWNJRC5sZW5ndGggLSAxLCBQdWJsaWNJRC5sZW5ndGgpICYmXHJcbiAgICAgICAgc3RySUQubGVuZ3RoID09IDEwICYmXHJcbiAgICAgICAgc3RySUQuc3Vic3RyaW5nKDAsIDEpID09ICcxJ1xyXG4gICAgICApIHtcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgc3RhdGljIGlxYW1hSWRWYWxpZGF0ZShjaXZpbElkOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgIGlmIChjaXZpbElkKSB7XHJcbiAgICAgIGxldCBzdHJJRCA9IHRoaXMuY29udmVydFRvRW4oY2l2aWxJZCk7XHJcbiAgICAgIGxldCBkaWdpdHMgPSAnJztcclxuICAgICAgbGV0IGNvdW50ZXIgPSAwO1xyXG4gICAgICB3aGlsZSAoY291bnRlciA8IDkpIHtcclxuICAgICAgICBpZiAoKGNvdW50ZXIgKyAxKSAlIDIgPT0gMCkge1xyXG4gICAgICAgICAgZGlnaXRzID0gZGlnaXRzICsgc3RySUQuc3Vic3RyaW5nKGNvdW50ZXIsIGNvdW50ZXIgKyAxKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgZGlnaXRzID1cclxuICAgICAgICAgICAgZGlnaXRzICsgKCtzdHJJRC5zdWJzdHJpbmcoY291bnRlciwgY291bnRlciArIDEpICogMikudG9TdHJpbmcoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY291bnRlcisrO1xyXG4gICAgICB9XHJcbiAgICAgIGxldCBpbnRTdW0gPSAwO1xyXG4gICAgICBsZXQgaW50U3VtVGVtcCA9IDA7XHJcbiAgICAgIGxldCBzdHJTdW07XHJcbiAgICAgIGxldCBpbnRPZGRTdW1EaWdpdDtcclxuICAgICAgbGV0IENoZWNrRGlnaXQ7XHJcbiAgICAgIGNvdW50ZXIgPSAwO1xyXG4gICAgICB3aGlsZSAoY291bnRlciA8IGRpZ2l0cy5sZW5ndGgpIHtcclxuICAgICAgICBpbnRTdW1UZW1wID0gK2RpZ2l0cy5jaGFyQXQoY291bnRlcikgKiAxO1xyXG4gICAgICAgIGludFN1bSArPSBpbnRTdW1UZW1wO1xyXG4gICAgICAgIGNvdW50ZXIrKztcclxuICAgICAgfVxyXG4gICAgICBzdHJTdW0gPSBpbnRTdW0udG9TdHJpbmcoKTtcclxuICAgICAgaWYgKHN0clN1bS5sZW5ndGggPT0gMSkge1xyXG4gICAgICAgIGludE9kZFN1bURpZ2l0ID0gaW50U3VtO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGludE9kZFN1bURpZ2l0ID0gc3RyU3VtLnN1YnN0cmluZyhzdHJTdW0ubGVuZ3RoLCBzdHJTdW0ubGVuZ3RoIC0gMSk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKGludE9kZFN1bURpZ2l0ID09IDApIHtcclxuICAgICAgICBDaGVja0RpZ2l0ID0gMDtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBDaGVja0RpZ2l0ID0gKDEwIC0gK2ludE9kZFN1bURpZ2l0KS50b1N0cmluZygpO1xyXG4gICAgICB9XHJcbiAgICAgIGxldCBQdWJsaWNJRCA9IHRoaXMuY29udmVydFRvRW4oY2l2aWxJZCk7XHJcbiAgICAgIGlmIChcclxuICAgICAgICBDaGVja0RpZ2l0ID09XHJcbiAgICAgICAgICBQdWJsaWNJRC5zdWJzdHJpbmcoUHVibGljSUQubGVuZ3RoIC0gMSwgUHVibGljSUQubGVuZ3RoKSAmJlxyXG4gICAgICAgIHN0cklELmxlbmd0aCA9PSAxMCAmJlxyXG4gICAgICAgIHN0cklELnN1YnN0cmluZygwLCAxKSA9PSAnMidcclxuICAgICAgKSB7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpUmVzcG9uc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1pcGEtbGlicmFyeS9zcmMvbGliL21vZGVscy9hcGlSZXNwb25zZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBBcGlSZXNwb25zZSB7XHJcbiAgc3RhdHVzQ29kZTogbnVtYmVyO1xyXG4gIG1lc3NhZ2U6IHN0cmluZztcclxuICBlcnJvcnM/OiBzdHJpbmdbXTtcclxufVxyXG4iXX0=
|
|
@@ -9,13 +9,15 @@ export class ShareButtonComponent {
|
|
|
9
9
|
}
|
|
10
10
|
ngAfterViewInit() {
|
|
11
11
|
const elements = document.getElementsByClassName('sb-show-icon');
|
|
12
|
-
elements[0].
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
12
|
+
if (!elements[0].getAttribute('id')) {
|
|
13
|
+
elements[0].setAttribute('type', 'button');
|
|
14
|
+
elements[0].setAttribute('id', 'IPAShareBtn');
|
|
15
|
+
const label = document.createElement('label');
|
|
16
|
+
label.innerHTML = this.btnLabel;
|
|
17
|
+
label.classList.add('sm-share-title');
|
|
18
|
+
label.classList.add('me-1');
|
|
19
|
+
elements[0].before(label);
|
|
20
|
+
}
|
|
19
21
|
}
|
|
20
22
|
}
|
|
21
23
|
ShareButtonComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: ShareButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
@@ -30,4 +32,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImpor
|
|
|
30
32
|
}], btnLabel: [{
|
|
31
33
|
type: Input
|
|
32
34
|
}] } });
|
|
33
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
35
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hhcmUtYnV0dG9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWlwYS1saWJyYXJ5L3NyYy9saWIvc2hhcmUtYnV0dG9uL3NoYXJlLWJ1dHRvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1pcGEtbGlicmFyeS9zcmMvbGliL3NoYXJlLWJ1dHRvbi9zaGFyZS1idXR0b24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBaUIsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7QUFPaEUsTUFBTSxPQUFPLG9CQUFvQjtJQUkvQjtRQUhTLFVBQUssR0FBRyxFQUFFLENBQUM7UUFDWCxnQkFBVyxHQUFHLEVBQUUsQ0FBQztRQUNqQixhQUFRLEdBQUcsRUFBRSxDQUFDO0lBQ1IsQ0FBQztJQUNoQixlQUFlO1FBQ2IsTUFBTSxRQUFRLEdBQUcsUUFBUSxDQUFDLHNCQUFzQixDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ2pFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ25DLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1lBQzNDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLGFBQWEsQ0FBQyxDQUFDO1lBQzlDLE1BQU0sS0FBSyxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDOUMsS0FBSyxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO1lBQ2hDLEtBQUssQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLGdCQUFnQixDQUFDLENBQUM7WUFDdEMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDNUIsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUMzQjtJQUNILENBQUM7O2lIQWhCVSxvQkFBb0I7cUdBQXBCLG9CQUFvQixzSUNQakMsa05BRXFCOzJGREtSLG9CQUFvQjtrQkFMaEMsU0FBUzsrQkFDRSxrQkFBa0I7MEVBS25CLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEFmdGVyVmlld0luaXQsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2lwYS1zaGFyZS1idXR0b24nLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9zaGFyZS1idXR0b24uY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3NoYXJlLWJ1dHRvbi5jb21wb25lbnQuc2NzcyddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgU2hhcmVCdXR0b25Db21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0IHtcclxuICBASW5wdXQoKSB0aXRsZSA9ICcnO1xyXG4gIEBJbnB1dCgpIGRlc2NyaXB0aW9uID0gJyc7XHJcbiAgQElucHV0KCkgYnRuTGFiZWwgPSAnJztcclxuICBjb25zdHJ1Y3RvcigpIHt9XHJcbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG4gICAgY29uc3QgZWxlbWVudHMgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdzYi1zaG93LWljb24nKTtcclxuICAgIGlmICghZWxlbWVudHNbMF0uZ2V0QXR0cmlidXRlKCdpZCcpKSB7XHJcbiAgICAgIGVsZW1lbnRzWzBdLnNldEF0dHJpYnV0ZSgndHlwZScsICdidXR0b24nKTtcclxuICAgICAgZWxlbWVudHNbMF0uc2V0QXR0cmlidXRlKCdpZCcsICdJUEFTaGFyZUJ0bicpO1xyXG4gICAgICBjb25zdCBsYWJlbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2xhYmVsJyk7XHJcbiAgICAgIGxhYmVsLmlubmVySFRNTCA9IHRoaXMuYnRuTGFiZWw7XHJcbiAgICAgIGxhYmVsLmNsYXNzTGlzdC5hZGQoJ3NtLXNoYXJlLXRpdGxlJyk7XHJcbiAgICAgIGxhYmVsLmNsYXNzTGlzdC5hZGQoJ21lLTEnKTtcclxuICAgICAgZWxlbWVudHNbMF0uYmVmb3JlKGxhYmVsKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiPHNoYXJlLXBvcHVwLWJ1dHRvbiBbdGl0bGVdPVwidGl0bGVcIiBbZGVzY3JpcHRpb25dPVwiZGVzY3JpcHRpb25cIiBbaWNvbl09XCInc2hhcmUtYWx0J1wiXHJcbiAgICBbaW5jbHVkZV09XCJbJ2ZhY2Vib29rJywndHdpdHRlcicsJ2xpbmtlZGluJywndGVsZWdyYW0nLCd3aGF0c2FwcCcsJ2VtYWlsJywnY29weSddXCI+XHJcbjwvc2hhcmUtcG9wdXAtYnV0dG9uPiJdfQ==
|
|
@@ -108,7 +108,7 @@ class IPAFormService {
|
|
|
108
108
|
static validHijriDate(control) {
|
|
109
109
|
const date = control.value;
|
|
110
110
|
const isValid = IPAFormService.checkHijriDateValid(date);
|
|
111
|
-
return isValid
|
|
111
|
+
return isValid || !date
|
|
112
112
|
? null
|
|
113
113
|
: {
|
|
114
114
|
ngbDate: {
|
|
@@ -1143,13 +1143,15 @@ class ShareButtonComponent {
|
|
|
1143
1143
|
}
|
|
1144
1144
|
ngAfterViewInit() {
|
|
1145
1145
|
const elements = document.getElementsByClassName('sb-show-icon');
|
|
1146
|
-
elements[0].
|
|
1147
|
-
|
|
1148
|
-
|
|
1149
|
-
|
|
1150
|
-
|
|
1151
|
-
|
|
1152
|
-
|
|
1146
|
+
if (!elements[0].getAttribute('id')) {
|
|
1147
|
+
elements[0].setAttribute('type', 'button');
|
|
1148
|
+
elements[0].setAttribute('id', 'IPAShareBtn');
|
|
1149
|
+
const label = document.createElement('label');
|
|
1150
|
+
label.innerHTML = this.btnLabel;
|
|
1151
|
+
label.classList.add('sm-share-title');
|
|
1152
|
+
label.classList.add('me-1');
|
|
1153
|
+
elements[0].before(label);
|
|
1154
|
+
}
|
|
1153
1155
|
}
|
|
1154
1156
|
}
|
|
1155
1157
|
ShareButtonComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: ShareButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
@@ -1379,7 +1381,6 @@ class ErrorInterceptor {
|
|
|
1379
1381
|
return next.handle(req);
|
|
1380
1382
|
}
|
|
1381
1383
|
return next.handle(req).pipe(catchError((error) => {
|
|
1382
|
-
var _a;
|
|
1383
1384
|
const response = error.error;
|
|
1384
1385
|
const toastrConfig = {
|
|
1385
1386
|
disableTimeOut: true,
|
|
@@ -1388,17 +1389,13 @@ class ErrorInterceptor {
|
|
|
1388
1389
|
};
|
|
1389
1390
|
switch (response.statusCode) {
|
|
1390
1391
|
case 500:
|
|
1391
|
-
|
|
1392
|
-
const toastr = this.toastrService.error(msg, response.message, toastrConfig);
|
|
1393
|
-
toastr.onShown.subscribe(() => {
|
|
1394
|
-
this.addCopyButton(response.message + '\n' + msg);
|
|
1395
|
-
});
|
|
1392
|
+
this.show500ErrorMsg(response, toastrConfig);
|
|
1396
1393
|
break;
|
|
1397
1394
|
default:
|
|
1398
|
-
this.
|
|
1395
|
+
this.showErrorMsg(response, toastrConfig);
|
|
1399
1396
|
break;
|
|
1400
1397
|
}
|
|
1401
|
-
return throwError(error);
|
|
1398
|
+
return throwError(() => error);
|
|
1402
1399
|
}));
|
|
1403
1400
|
}
|
|
1404
1401
|
isException(req) {
|
|
@@ -1409,6 +1406,27 @@ class ErrorInterceptor {
|
|
|
1409
1406
|
}
|
|
1410
1407
|
return false;
|
|
1411
1408
|
}
|
|
1409
|
+
showErrorMsg(response, toastrConfig) {
|
|
1410
|
+
if (response.errors && response.errors.length > 0) {
|
|
1411
|
+
toastrConfig.enableHtml = true;
|
|
1412
|
+
let msg = '';
|
|
1413
|
+
response.errors.forEach((error) => {
|
|
1414
|
+
msg += `<li>${error}</li>`;
|
|
1415
|
+
});
|
|
1416
|
+
this.toastrService.error(`<ul>${msg}</ul>`, response.message, toastrConfig);
|
|
1417
|
+
}
|
|
1418
|
+
else {
|
|
1419
|
+
this.toastrService.error('', response.message, toastrConfig);
|
|
1420
|
+
}
|
|
1421
|
+
}
|
|
1422
|
+
show500ErrorMsg(response, toastrConfig) {
|
|
1423
|
+
var _a;
|
|
1424
|
+
const msg = response.innerException + ' ' + ((_a = response.stackTrace) !== null && _a !== void 0 ? _a : '');
|
|
1425
|
+
const toastr = this.toastrService.error(msg, response.message, toastrConfig);
|
|
1426
|
+
toastr.onShown.subscribe(() => {
|
|
1427
|
+
this.addCopyButton(response.message + '\n' + msg);
|
|
1428
|
+
});
|
|
1429
|
+
}
|
|
1412
1430
|
addCopyButton(message) {
|
|
1413
1431
|
const messageToast = document.getElementsByClassName('toast-message')[0];
|
|
1414
1432
|
const icon = document.createElement('i');
|