client-core-services 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +24 -0
- package/esm2020/client-core-services.mjs +5 -0
- package/esm2020/lib/my-lib.module.mjs +98 -0
- package/esm2020/lib/services/api/api-call/api-call.service.mjs +766 -0
- package/esm2020/lib/services/api/api-call-responce/api-call-responce.service.mjs +191 -0
- package/esm2020/lib/services/api/api.service.mjs +611 -0
- package/esm2020/lib/services/api/auth/auth-guard.service.mjs +37 -0
- package/esm2020/lib/services/api/auth/auth.service.mjs +500 -0
- package/esm2020/lib/services/api/aws-secret-manager/aws-secret-manager.service.mjs +78 -0
- package/esm2020/lib/services/api/common-api/common-api.service.mjs +97 -0
- package/esm2020/lib/services/api/doc-api/doc-api.service.mjs +221 -0
- package/esm2020/lib/services/api/public-api/public-api.service.mjs +37 -0
- package/esm2020/lib/services/chart/chart.service.mjs +166 -0
- package/esm2020/lib/services/check-if/check-if.service.mjs +830 -0
- package/esm2020/lib/services/common-utils/common-function.service.mjs +1277 -0
- package/esm2020/lib/services/common-utils/core-function/core-function.service.mjs +283 -0
- package/esm2020/lib/services/customvalidation/customvalidation.service.mjs +202 -0
- package/esm2020/lib/services/data-share/auth-data-share/auth-data-share.service.mjs +70 -0
- package/esm2020/lib/services/data-share/common-app-data-share/common-app-data-share.service.mjs +82 -0
- package/esm2020/lib/services/data-share/data-share.service.mjs +370 -0
- package/esm2020/lib/services/data-share/doc-data-share/doc-data-share.service.mjs +81 -0
- package/esm2020/lib/services/data-share/public-data-share/public-data-share.service.mjs +25 -0
- package/esm2020/lib/services/download/download.service.mjs +151 -0
- package/esm2020/lib/services/encryption/encryption.service.mjs +20 -0
- package/esm2020/lib/services/env/env.service.mjs +232 -0
- package/esm2020/lib/services/env/serverHostList.mjs +56 -0
- package/esm2020/lib/services/fileHandler/file-handler.service.mjs +136 -0
- package/esm2020/lib/services/form/form-control/form-control.service.mjs +654 -0
- package/esm2020/lib/services/form/form-creation/form-creation.service.mjs +880 -0
- package/esm2020/lib/services/form/form-value/form-value.service.mjs +464 -0
- package/esm2020/lib/services/form/multiple-form/multiple-form.service.mjs +346 -0
- package/esm2020/lib/services/grid/grid-common-function/grid-common-function.service.mjs +875 -0
- package/esm2020/lib/services/grid/grid-selection/grid-selection.service.mjs +84 -0
- package/esm2020/lib/services/lims-calculations/lims-calculations.service.mjs +2304 -0
- package/esm2020/lib/services/loader/loader.service.mjs +17 -0
- package/esm2020/lib/services/menu-or-module-common/menu-or-module-common.service.mjs +558 -0
- package/esm2020/lib/services/model/model.service.mjs +30 -0
- package/esm2020/lib/services/notify/notification.service.mjs +84 -0
- package/esm2020/lib/services/operator/operator.service.mjs +58 -0
- package/esm2020/lib/services/permission/permission.service.mjs +88 -0
- package/esm2020/lib/services/router/router.service.mjs +78 -0
- package/esm2020/lib/services/storage/cookies.service.mjs +56 -0
- package/esm2020/lib/services/storage/storage.service.mjs +749 -0
- package/esm2020/lib/services/tree-component/interface.mjs +6 -0
- package/esm2020/lib/services/tree-component/tree-component.service.mjs +394 -0
- package/esm2020/lib/services/userPrefrence/user-prefrence.service.mjs +767 -0
- package/esm2020/lib/services/voice-recognition/voice-recognition.service.mjs +97 -0
- package/esm2020/lib/shared/configuration/config.mjs +76 -0
- package/esm2020/lib/shared/configuration/editor-config.mjs +121 -0
- package/esm2020/lib/shared/enums/common.enum.mjs +18 -0
- package/esm2020/lib/shared/enums/config.enum.mjs +56 -0
- package/esm2020/lib/shared/enums/end-point.enum.mjs +69 -0
- package/esm2020/lib/shared/enums/flags.enum.mjs +20 -0
- package/esm2020/lib/shared/enums/keycodes.enum.mjs +122 -0
- package/esm2020/lib/shared/enums/operator_type.enum.mjs +13 -0
- package/esm2020/lib/shared/enums/storage-token-status.enum.mjs +10 -0
- package/esm2020/lib/shared/platform.mjs +2 -0
- package/esm2020/public-api.mjs +53 -0
- package/fesm2015/client-core-services.mjs +15487 -0
- package/fesm2015/client-core-services.mjs.map +1 -0
- package/fesm2020/client-core-services.mjs +15482 -0
- package/fesm2020/client-core-services.mjs.map +1 -0
- package/index.d.ts +5 -0
- package/lib/my-lib.module.d.ts +18 -0
- package/lib/services/api/api-call/api-call.service.d.ts +60 -0
- package/lib/services/api/api-call-responce/api-call-responce.service.d.ts +43 -0
- package/lib/services/api/api.service.d.ts +88 -0
- package/lib/services/api/auth/auth-guard.service.d.ts +13 -0
- package/lib/services/api/auth/auth.service.d.ts +50 -0
- package/lib/services/api/aws-secret-manager/aws-secret-manager.service.d.ts +22 -0
- package/lib/services/api/common-api/common-api.service.d.ts +22 -0
- package/lib/services/api/doc-api/doc-api.service.d.ts +35 -0
- package/lib/services/api/public-api/public-api.service.d.ts +14 -0
- package/lib/services/chart/chart.service.d.ts +21 -0
- package/lib/services/check-if/check-if.service.d.ts +50 -0
- package/lib/services/common-utils/common-function.service.d.ts +84 -0
- package/lib/services/common-utils/core-function/core-function.service.d.ts +21 -0
- package/lib/services/customvalidation/customvalidation.service.d.ts +21 -0
- package/lib/services/data-share/auth-data-share/auth-data-share.service.d.ts +33 -0
- package/lib/services/data-share/common-app-data-share/common-app-data-share.service.d.ts +36 -0
- package/lib/services/data-share/data-share.service.d.ts +174 -0
- package/lib/services/data-share/doc-data-share/doc-data-share.service.d.ts +33 -0
- package/lib/services/data-share/public-data-share/public-data-share.service.d.ts +12 -0
- package/lib/services/download/download.service.d.ts +35 -0
- package/lib/services/encryption/encryption.service.d.ts +8 -0
- package/lib/services/env/env.service.d.ts +44 -0
- package/lib/services/env/serverHostList.d.ts +9 -0
- package/lib/services/fileHandler/file-handler.service.d.ts +17 -0
- package/lib/services/form/form-control/form-control.service.d.ts +44 -0
- package/lib/services/form/form-creation/form-creation.service.d.ts +41 -0
- package/lib/services/form/form-value/form-value.service.d.ts +32 -0
- package/lib/services/form/multiple-form/multiple-form.service.d.ts +54 -0
- package/lib/services/grid/grid-common-function/grid-common-function.service.d.ts +74 -0
- package/lib/services/grid/grid-selection/grid-selection.service.d.ts +16 -0
- package/lib/services/lims-calculations/lims-calculations.service.d.ts +87 -0
- package/lib/services/loader/loader.service.d.ts +8 -0
- package/lib/services/menu-or-module-common/menu-or-module-common.service.d.ts +59 -0
- package/lib/services/model/model.service.d.ts +11 -0
- package/lib/services/notify/notification.service.d.ts +22 -0
- package/lib/services/operator/operator.service.d.ts +27 -0
- package/lib/services/permission/permission.service.d.ts +18 -0
- package/lib/services/router/router.service.d.ts +14 -0
- package/lib/services/storage/cookies.service.d.ts +11 -0
- package/lib/services/storage/storage.service.d.ts +132 -0
- package/lib/services/tree-component/interface.d.ts +13 -0
- package/lib/services/tree-component/tree-component.service.d.ts +38 -0
- package/lib/services/userPrefrence/user-prefrence.service.d.ts +75 -0
- package/lib/services/voice-recognition/voice-recognition.service.d.ts +36 -0
- package/lib/shared/configuration/config.d.ts +144 -0
- package/lib/shared/configuration/editor-config.d.ts +72 -0
- package/lib/shared/enums/common.enum.d.ts +16 -0
- package/lib/shared/enums/config.enum.d.ts +54 -0
- package/lib/shared/enums/end-point.enum.d.ts +66 -0
- package/lib/shared/enums/flags.enum.d.ts +18 -0
- package/lib/shared/enums/keycodes.enum.d.ts +120 -0
- package/lib/shared/enums/operator_type.enum.d.ts +9 -0
- package/lib/shared/enums/storage-token-status.enum.d.ts +8 -0
- package/lib/shared/platform.d.ts +1 -0
- package/package.json +40 -0
- package/public-api.d.ts +49 -0
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
import { DOCUMENT } from '@angular/common';
|
|
2
|
+
import { Inject, Injectable } from '@angular/core';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "../check-if/check-if.service";
|
|
5
|
+
import * as i2 from "../api/api-call/api-call.service";
|
|
6
|
+
import * as i3 from "../storage/storage.service";
|
|
7
|
+
import * as i4 from "../permission/permission.service";
|
|
8
|
+
import * as i5 from "../model/model.service";
|
|
9
|
+
import * as i6 from "../api/api.service";
|
|
10
|
+
import * as i7 from "../notify/notification.service";
|
|
11
|
+
export class DownloadService {
|
|
12
|
+
constructor(document, checkIfService, apiCallService, storageService, permissionService, modalService, apiService, notificationService) {
|
|
13
|
+
this.checkIfService = checkIfService;
|
|
14
|
+
this.apiCallService = apiCallService;
|
|
15
|
+
this.storageService = storageService;
|
|
16
|
+
this.permissionService = permissionService;
|
|
17
|
+
this.modalService = modalService;
|
|
18
|
+
this.apiService = apiService;
|
|
19
|
+
this.notificationService = notificationService;
|
|
20
|
+
}
|
|
21
|
+
download(url, fileName, button) {
|
|
22
|
+
if (button && button.openNewTab) {
|
|
23
|
+
window.open(url, '_blank');
|
|
24
|
+
}
|
|
25
|
+
let link = document.createElement('a');
|
|
26
|
+
link.setAttribute('type', 'hidden');
|
|
27
|
+
link.href = url;
|
|
28
|
+
link.download = fileName;
|
|
29
|
+
document.body.appendChild(link);
|
|
30
|
+
link.click();
|
|
31
|
+
link.remove();
|
|
32
|
+
}
|
|
33
|
+
exportCsv(tempNme, headElements, tab, currentMenu, userInfo, filterForm) {
|
|
34
|
+
let fiteredList = [];
|
|
35
|
+
headElements.forEach(element => {
|
|
36
|
+
if (element && element.display) {
|
|
37
|
+
// delete element.display;
|
|
38
|
+
fiteredList.push(element);
|
|
39
|
+
}
|
|
40
|
+
});
|
|
41
|
+
let gridName = '';
|
|
42
|
+
let grid_api_params_criteria = [];
|
|
43
|
+
if (this.checkIfService.isGridFieldExist(tab, "api_params_criteria")) {
|
|
44
|
+
grid_api_params_criteria = tab.grid.api_params_criteria;
|
|
45
|
+
}
|
|
46
|
+
const data = this.apiCallService.getPaylodWithCriteria(currentMenu.name, '', grid_api_params_criteria, '');
|
|
47
|
+
if (tab && tab.grid) {
|
|
48
|
+
if (tab.grid.export_template && tab.grid.export_template != null) {
|
|
49
|
+
gridName = tab.grid.export_template;
|
|
50
|
+
}
|
|
51
|
+
else {
|
|
52
|
+
gridName = tab.grid._id;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
delete data.log;
|
|
56
|
+
delete data.key;
|
|
57
|
+
data['key'] = userInfo.refCode;
|
|
58
|
+
data['key3'] = gridName;
|
|
59
|
+
const value = filterForm.getRawValue();
|
|
60
|
+
const filterCrlist = this.apiCallService.getfilterCrlist(headElements, value);
|
|
61
|
+
if (filterCrlist.length > 0) {
|
|
62
|
+
filterCrlist.forEach((element) => {
|
|
63
|
+
data.crList.push(element);
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
const getExportData = {
|
|
67
|
+
data: {
|
|
68
|
+
refCode: userInfo.refCode,
|
|
69
|
+
log: this.storageService.getUserLog(),
|
|
70
|
+
kvp: data,
|
|
71
|
+
gridData: fiteredList,
|
|
72
|
+
},
|
|
73
|
+
responce: { responseType: "arraybuffer" },
|
|
74
|
+
path: tempNme
|
|
75
|
+
};
|
|
76
|
+
return getExportData;
|
|
77
|
+
}
|
|
78
|
+
exportExcel(total, gridColumns, gridFilterValue, tab, menuName) {
|
|
79
|
+
let downloadLink = "";
|
|
80
|
+
let totalGridData = this.storageService.getApplicationSetting()?.totalGridData;
|
|
81
|
+
if (!totalGridData) {
|
|
82
|
+
totalGridData = 50000;
|
|
83
|
+
}
|
|
84
|
+
if (total && totalGridData > 0 && total < totalGridData) {
|
|
85
|
+
this.modalService.open('download-progress-modal', {});
|
|
86
|
+
let tempNme = menuName.name;
|
|
87
|
+
if (this.permissionService.checkPermission(tempNme, 'export')) {
|
|
88
|
+
let data = this.apiCallService.preparePayloadWithCrlist(tab, menuName, gridColumns, gridFilterValue);
|
|
89
|
+
let gridName = '';
|
|
90
|
+
if (tab && tab?.grid) {
|
|
91
|
+
if (tab?.grid?.export_template) {
|
|
92
|
+
gridName = tab.grid.export_template;
|
|
93
|
+
}
|
|
94
|
+
else {
|
|
95
|
+
gridName = tab.grid._id;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
delete data.log;
|
|
99
|
+
data['key3'] = gridName;
|
|
100
|
+
const getExportData = {
|
|
101
|
+
data: {
|
|
102
|
+
refCode: this.storageService.getRefCode(),
|
|
103
|
+
log: this.storageService.getUserLog(),
|
|
104
|
+
kvp: data
|
|
105
|
+
},
|
|
106
|
+
responce: { responseType: "arraybuffer" },
|
|
107
|
+
path: tempNme
|
|
108
|
+
};
|
|
109
|
+
var fileName = tempNme;
|
|
110
|
+
fileName = fileName.charAt(0).toUpperCase() + fileName.slice(1);
|
|
111
|
+
downloadLink = fileName + '-' + new Date().toLocaleDateString();
|
|
112
|
+
this.apiService.GetExportExclLink(getExportData);
|
|
113
|
+
}
|
|
114
|
+
else {
|
|
115
|
+
this.permissionService.checkTokenStatusForPermission();
|
|
116
|
+
//this.notificationService.notify("bg-danger", "Permission denied !!!");
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
else {
|
|
120
|
+
this.notificationService.notify("bg-danger", `Kindly filter data as download record size is : ${totalGridData} not ${total}`);
|
|
121
|
+
}
|
|
122
|
+
return downloadLink;
|
|
123
|
+
}
|
|
124
|
+
downloadExcelFromLink(exportExcelLink, downloadClick) {
|
|
125
|
+
let link = document.createElement('a');
|
|
126
|
+
link.setAttribute('type', 'hidden');
|
|
127
|
+
const file = new Blob([exportExcelLink], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' });
|
|
128
|
+
const url = window.URL.createObjectURL(file);
|
|
129
|
+
link.href = url;
|
|
130
|
+
link.download = downloadClick;
|
|
131
|
+
document.body.appendChild(link);
|
|
132
|
+
link.click();
|
|
133
|
+
link.remove();
|
|
134
|
+
downloadClick = '';
|
|
135
|
+
this.apiService.resetGetExportExclLink();
|
|
136
|
+
this.modalService.close('download-progress-modal');
|
|
137
|
+
return downloadClick;
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
DownloadService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: DownloadService, deps: [{ token: DOCUMENT }, { token: i1.CheckIfService }, { token: i2.ApiCallService }, { token: i3.StorageService }, { token: i4.PermissionService }, { token: i5.ModelService }, { token: i6.ApiService }, { token: i7.NotificationService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
141
|
+
DownloadService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: DownloadService, providedIn: 'root' });
|
|
142
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: DownloadService, decorators: [{
|
|
143
|
+
type: Injectable,
|
|
144
|
+
args: [{
|
|
145
|
+
providedIn: 'root'
|
|
146
|
+
}]
|
|
147
|
+
}], ctorParameters: function () { return [{ type: undefined, decorators: [{
|
|
148
|
+
type: Inject,
|
|
149
|
+
args: [DOCUMENT]
|
|
150
|
+
}] }, { type: i1.CheckIfService }, { type: i2.ApiCallService }, { type: i3.StorageService }, { type: i4.PermissionService }, { type: i5.ModelService }, { type: i6.ApiService }, { type: i7.NotificationService }]; } });
|
|
151
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG93bmxvYWQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NsaWVudC1jb3JlL3NyYy9saWIvc2VydmljZXMvZG93bmxvYWQvZG93bmxvYWQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7Ozs7OztBQWFuRCxNQUFNLE9BQU8sZUFBZTtJQUUxQixZQUNvQixRQUFZLEVBQ3RCLGNBQTZCLEVBQzdCLGNBQTZCLEVBQzdCLGNBQTZCLEVBQzdCLGlCQUFtQyxFQUNuQyxZQUF5QixFQUN6QixVQUFxQixFQUNyQixtQkFBdUM7UUFOdkMsbUJBQWMsR0FBZCxjQUFjLENBQWU7UUFDN0IsbUJBQWMsR0FBZCxjQUFjLENBQWU7UUFDN0IsbUJBQWMsR0FBZCxjQUFjLENBQWU7UUFDN0Isc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFrQjtRQUNuQyxpQkFBWSxHQUFaLFlBQVksQ0FBYTtRQUN6QixlQUFVLEdBQVYsVUFBVSxDQUFXO1FBQ3JCLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBb0I7SUFDN0MsQ0FBQztJQUdMLFFBQVEsQ0FBQyxHQUFPLEVBQUMsUUFBWSxFQUFDLE1BQVc7UUFDdkMsSUFBRyxNQUFNLElBQUksTUFBTSxDQUFDLFVBQVUsRUFBQztZQUM3QixNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxRQUFRLENBQUMsQ0FBQztTQUM1QjtRQUNELElBQUksSUFBSSxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDdkMsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDcEMsSUFBSSxDQUFDLElBQUksR0FBRyxHQUFHLENBQUM7UUFDaEIs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QVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2hDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNiLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNkLGFBQWEsR0FBRyxFQUFFLENBQUM7UUFDbkIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO1FBQ3pDLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLHlCQUF5QixDQUFDLENBQUM7UUFDbkQsT0FBTyxhQUFhLENBQUM7SUFDdkIsQ0FBQzs7NkdBaklVLGVBQWUsa0JBR2hCLFFBQVE7aUhBSFAsZUFBZSxjQUZkLE1BQU07NEZBRVAsZUFBZTtrQkFIM0IsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7OzBCQUlJLE1BQU07MkJBQUMsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERPQ1VNRU5UIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgQXBpQ2FsbFNlcnZpY2UgfSBmcm9tICcuLi9hcGkvYXBpLWNhbGwvYXBpLWNhbGwuc2VydmljZSc7XHJcbmltcG9ydCB7IENoZWNrSWZTZXJ2aWNlIH0gZnJvbSAnLi4vY2hlY2staWYvY2hlY2staWYuc2VydmljZSc7XHJcbmltcG9ydCB7IFN0b3JhZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vc3RvcmFnZS9zdG9yYWdlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBQZXJtaXNzaW9uU2VydmljZSB9IGZyb20gJy4uL3Blcm1pc3Npb24vcGVybWlzc2lvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTW9kZWxTZXJ2aWNlIH0gZnJvbSAnLi4vbW9kZWwvbW9kZWwuc2VydmljZSc7XHJcbmltcG9ydCB7IEFwaVNlcnZpY2UgfSBmcm9tICcuLi9hcGkvYXBpLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBOb3RpZmljYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vbm90aWZ5L25vdGlmaWNhdGlvbi5zZXJ2aWNlJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIERvd25sb2FkU2VydmljZSB7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgQEluamVjdChET0NVTUVOVCkgZG9jdW1lbnQ6YW55LFxyXG4gICAgcHJpdmF0ZSBjaGVja0lmU2VydmljZTpDaGVja0lmU2VydmljZSxcclxuICAgIHByaXZhdGUgYXBpQ2FsbFNlcnZpY2U6QXBpQ2FsbFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHN0b3JhZ2VTZXJ2aWNlOlN0b3JhZ2VTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBwZXJtaXNzaW9uU2VydmljZTpQZXJtaXNzaW9uU2VydmljZSxcclxuICAgIHByaXZhdGUgbW9kYWxTZXJ2aWNlOk1vZGVsU2VydmljZSxcclxuICAgIHByaXZhdGUgYXBpU2VydmljZTpBcGlTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBub3RpZmljYXRpb25TZXJ2aWNlOk5vdGlmaWNhdGlvblNlcnZpY2VcclxuICApIHsgfVxyXG5cclxuXHJcbiAgZG93bmxvYWQodXJsOmFueSxmaWxlTmFtZTphbnksYnV0dG9uPzphbnkpe1xyXG4gICAgaWYoYnV0dG9uICYmIGJ1dHRvbi5vcGVuTmV3VGFiKXtcclxuICAgICAgd2luZG93Lm9wZW4odXJsLCAnX2JsYW5rJyk7XHJcbiAgICB9XHJcbiAgICBsZXQgbGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcclxuICAgIGxpbmsuc2V0QXR0cmlidXRlKCd0eXBlJywgJ2hpZGRlbicpO1xyXG4gICAgbGluay5ocmVmID0gdXJsO1xyXG4gICAgbGluay5kb3dubG9hZCA9IGZpbGVOYW1lO1xyXG4gICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChsaW5rKTtcclxuICAgIGxpbmsuY2xpY2soKTtcclxuICAgIGxpbmsucmVtb3ZlKCk7XHJcbiAgfVxyXG5cclxuICBleHBvcnRDc3YodGVtcE5tZTphbnksaGVhZEVsZW1lbnRzOmFueVtdLHRhYjphbnksY3VycmVudE1lbnU6YW55LHVzZXJJbmZvOmFueSxmaWx0ZXJGb3JtOmFueSl7XHJcbiAgICBsZXQgZml0ZXJlZExpc3Q6IGFueVtdPVtdO1xyXG4gICAgaGVhZEVsZW1lbnRzLmZvckVhY2goZWxlbWVudCA9PiB7XHJcbiAgICAgIGlmKGVsZW1lbnQgJiYgZWxlbWVudC5kaXNwbGF5KXtcclxuICAgICAgICAvLyBkZWxldGUgZWxlbWVudC5kaXNwbGF5O1xyXG4gICAgICAgIGZpdGVyZWRMaXN0LnB1c2goZWxlbWVudClcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICAgIGxldCBncmlkTmFtZSA9ICcnO1xyXG4gICAgICBsZXQgZ3JpZF9hcGlfcGFyYW1zX2NyaXRlcmlhID0gW107XHJcbiAgICAgIGlmKHRoaXMuY2hlY2tJZlNlcnZpY2UuaXNHcmlkRmllbGRFeGlzdCh0YWIsXCJhcGlfcGFyYW1zX2NyaXRlcmlhXCIpKXtcclxuICAgICAgICBncmlkX2FwaV9wYXJhbXNfY3JpdGVyaWEgPSB0YWIuZ3JpZC5hcGlfcGFyYW1zX2NyaXRlcmlhO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnN0IGRhdGEgPSB0aGlzLmFwaUNhbGxTZXJ2aWNlLmdldFBheWxvZFdpdGhDcml0ZXJpYShjdXJyZW50TWVudS5uYW1lLCcnLGdyaWRfYXBpX3BhcmFtc19jcml0ZXJpYSwnJyk7XHJcbiAgICAgIGlmKHRhYiAmJiB0YWIuZ3JpZCl7XHJcbiAgICAgICAgaWYodGFiLmdyaWQuZXhwb3J0X3RlbXBsYXRlICYmIHRhYi5ncmlkLmV4cG9ydF90ZW1wbGF0ZSAhPSBudWxsKXtcclxuICAgICAgICAgIGdyaWROYW1lID0gdGFiLmdyaWQuZXhwb3J0X3RlbXBsYXRlO1xyXG4gICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgZ3JpZE5hbWUgPSB0YWIuZ3JpZC5faWQ7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGRlbGV0ZSBkYXRhLmxvZztcclxuICAgICAgZGVsZXRlIGRhdGEua2V5O1xyXG4gICAgICBkYXRhWydrZXknXSA9IHVzZXJJbmZvLnJlZkNvZGU7XHJcbiAgICAgIGRhdGFbJ2tleTMnXT1ncmlkTmFtZTtcclxuICAgICAgY29uc3QgdmFsdWUgPSBmaWx0ZXJGb3JtLmdldFJhd1ZhbHVlKCk7XHJcbiAgICAgIGNvbnN0IGZpbHRlckNybGlzdCA9IHRoaXMuYXBpQ2FsbFNlcnZpY2UuZ2V0ZmlsdGVyQ3JsaXN0KGhlYWRFbGVtZW50cyx2YWx1ZSk7XHJcbiAgICAgIGlmKGZpbHRlckNybGlzdC5sZW5ndGggPiAwKXtcclxuICAgICAgICBmaWx0ZXJDcmxpc3QuZm9yRWFjaCgoZWxlbWVudDogYW55KSA9PiB7XHJcbiAgICAgICAgICBkYXRhLmNyTGlzdC5wdXNoKGVsZW1lbnQpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnN0IGdldEV4cG9ydERhdGEgPSB7XHJcbiAgICAgICAgZGF0YToge1xyXG4gICAgICAgICAgcmVmQ29kZTogdXNlckluZm8ucmVmQ29kZSxcclxuICAgICAgICAgIGxvZzogdGhpcy5zdG9yYWdlU2VydmljZS5nZXRVc2VyTG9nKCksXHJcbiAgICAgICAgICBrdnA6IGRhdGEsXHJcbiAgICAgICAgICBncmlkRGF0YTogZml0ZXJlZExpc3QsXHJcbiAgICAgICAgfSxcclxuICAgICAgICByZXNwb25jZTogeyByZXNwb25zZVR5cGU6IFwiYXJyYXlidWZmZXJcIiB9LFxyXG4gICAgICAgIHBhdGg6IHRlbXBObWVcclxuICAgICAgfVxyXG5cclxuICAgICAgcmV0dXJuIGdldEV4cG9ydERhdGE7XHJcbiAgfVxyXG4gIGV4cG9ydEV4Y2VsKHRvdGFsOmFueSxncmlkQ29sdW1uczphbnksZ3JpZEZpbHRlclZhbHVlOmFueSx0YWI6YW55LG1lbnVOYW1lOmFueSkge1xyXG4gICAgbGV0IGRvd25sb2FkTGluayA9IFwiXCI7XHJcbiAgICBsZXQgdG90YWxHcmlkRGF0YTpudW1iZXIgPSB0aGlzLnN0b3JhZ2VTZXJ2aWNlLmdldEFwcGxpY2F0aW9uU2V0dGluZygpPy50b3RhbEdyaWREYXRhO1xyXG4gICAgaWYoIXRvdGFsR3JpZERhdGEpIHtcclxuICAgICAgdG90YWxHcmlkRGF0YSA9IDUwMDAwO1xyXG4gICAgfVxyXG4gICAgaWYodG90YWwgJiYgdG90YWxHcmlkRGF0YSA+IDAgJiYgdG90YWwgPCB0b3RhbEdyaWREYXRhKSB7XHJcbiAgICAgIHRoaXMubW9kYWxTZXJ2aWNlLm9wZW4oJ2Rvd25sb2FkLXByb2dyZXNzLW1vZGFsJywge30pO1xyXG4gICAgICBsZXQgdGVtcE5tZSA9IG1lbnVOYW1lLm5hbWU7XHJcbiAgICAgIGlmKHRoaXMucGVybWlzc2lvblNlcnZpY2UuY2hlY2tQZXJtaXNzaW9uKHRlbXBObWUsJ2V4cG9ydCcpKXtcclxuICAgICAgICBsZXQgZGF0YSA9IHRoaXMuYXBpQ2FsbFNlcnZpY2UucHJlcGFyZVBheWxvYWRXaXRoQ3JsaXN0KHRhYixtZW51TmFtZSxncmlkQ29sdW1ucyxncmlkRmlsdGVyVmFsdWUpO1xyXG4gICAgICAgIGxldCBncmlkTmFtZSA9ICcnO1xyXG4gICAgICAgIGlmKHRhYiAmJiB0YWI/LmdyaWQpe1xyXG4gICAgICAgICAgaWYodGFiPy5ncmlkPy5leHBvcnRfdGVtcGxhdGUpe1xyXG4gICAgICAgICAgICBncmlkTmFtZSA9IHRhYi5ncmlkLmV4cG9ydF90ZW1wbGF0ZTtcclxuICAgICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgICBncmlkTmFtZSA9IHRhYi5ncmlkLl9pZDtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZGVsZXRlIGRhdGEubG9nO1xyXG4gICAgICAgIGRhdGFbJ2tleTMnXT1ncmlkTmFtZTtcclxuICAgICAgICBjb25zdCBnZXRFeHBvcnREYXRhID0ge1xyXG4gICAgICAgICAgZGF0YToge1xyXG4gICAgICAgICAgICByZWZDb2RlOiB0aGlzLnN0b3JhZ2VTZXJ2aWNlLmdldFJlZkNvZGUoKSxcclxuICAgICAgICAgICAgbG9nOiB0aGlzLnN0b3JhZ2VTZXJ2aWNlLmdldFVzZXJMb2coKSxcclxuICAgICAgICAgICAga3ZwOiBkYXRhXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgcmVzcG9uY2U6IHsgcmVzcG9uc2VUeXBlOiBcImFycmF5YnVmZmVyXCIgfSxcclxuICAgICAgICAgIHBhdGg6IHRlbXBObWVcclxuICAgICAgICB9XHJcbiAgICAgICAgdmFyIGZpbGVOYW1lID0gdGVtcE5tZTtcclxuICAgICAgICBmaWxlTmFtZSA9IGZpbGVOYW1lLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgZmlsZU5hbWUuc2xpY2UoMSlcclxuICAgICAgICBkb3dubG9hZExpbmsgPSBmaWxlTmFtZSArICctJyArIG5ldyBEYXRlKCkudG9Mb2NhbGVEYXRlU3RyaW5nKCk7XHJcbiAgICAgICAgdGhpcy5hcGlTZXJ2aWNlLkdldEV4cG9ydEV4Y2xMaW5rKGdldEV4cG9ydERhdGEpO1xyXG4gICAgICB9ZWxzZXtcclxuICAgICAgICB0aGlzLnBlcm1pc3Npb25TZXJ2aWNlLmNoZWNrVG9rZW5TdGF0dXNGb3JQZXJtaXNzaW9uKCk7XHJcbiAgICAgICAgLy90aGlzLm5vdGlmaWNhdGlvblNlcnZpY2Uubm90aWZ5KFwiYmctZGFuZ2VyXCIsIFwiUGVybWlzc2lvbiBkZW5pZWQgISEhXCIpO1xyXG4gICAgICB9XHJcbiAgICB9ZWxzZSB7XHJcbiAgICAgIHRoaXMubm90aWZpY2F0aW9uU2VydmljZS5ub3RpZnkoXCJiZy1kYW5nZXJcIiwgYEtpbmRseSBmaWx0ZXIgZGF0YSBhcyBkb3dubG9hZCByZWNvcmQgc2l6ZSBpcyA6ICR7dG90YWxHcmlkRGF0YX0gbm90ICR7dG90YWx9YCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZG93bmxvYWRMaW5rO1xyXG4gIH1cclxuICBkb3dubG9hZEV4Y2VsRnJvbUxpbmsoZXhwb3J0RXhjZWxMaW5rOmFueSxkb3dubG9hZENsaWNrOnN0cmluZyl7XHJcbiAgICBsZXQgbGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcclxuICAgIGxpbmsuc2V0QXR0cmlidXRlKCd0eXBlJywgJ2hpZGRlbicpO1xyXG4gICAgY29uc3QgZmlsZSA9IG5ldyBCbG9iKFtleHBvcnRFeGNlbExpbmtdLCB7IHR5cGU6ICdhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5zaGVldCcgfSk7XHJcbiAgICBjb25zdCB1cmwgPSB3aW5kb3cuVVJMLmNyZWF0ZU9iamVjdFVSTChmaWxlKTtcclxuICAgIGxpbmsuaHJlZiA9IHVybDtcclxuICAgIGxpbmsuZG93bmxvYWQgPSBkb3dubG9hZENsaWNrO1xyXG4gICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChsaW5rKTtcclxuICAgIGxpbmsuY2xpY2soKTtcclxuICAgIGxpbmsucmVtb3ZlKCk7XHJcbiAgICBkb3dubG9hZENsaWNrID0gJyc7XHJcbiAgICB0aGlzLmFwaVNlcnZpY2UucmVzZXRHZXRFeHBvcnRFeGNsTGluaygpO1xyXG4gICAgdGhpcy5tb2RhbFNlcnZpY2UuY2xvc2UoJ2Rvd25sb2FkLXByb2dyZXNzLW1vZGFsJyk7XHJcbiAgICByZXR1cm4gZG93bmxvYWRDbGljaztcclxuICB9XHJcblxyXG59XHJcbiJdfQ==
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export class EncryptionService {
|
|
4
|
+
constructor() { }
|
|
5
|
+
encryptRequest(obj) {
|
|
6
|
+
return btoa(JSON.stringify(obj));
|
|
7
|
+
}
|
|
8
|
+
decryptRequest(obj) {
|
|
9
|
+
return atob(obj);
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
EncryptionService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: EncryptionService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
13
|
+
EncryptionService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: EncryptionService, providedIn: 'root' });
|
|
14
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: EncryptionService, decorators: [{
|
|
15
|
+
type: Injectable,
|
|
16
|
+
args: [{
|
|
17
|
+
providedIn: 'root'
|
|
18
|
+
}]
|
|
19
|
+
}], ctorParameters: function () { return []; } });
|
|
20
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW5jcnlwdGlvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xpZW50LWNvcmUvc3JjL2xpYi9zZXJ2aWNlcy9lbmNyeXB0aW9uL2VuY3J5cHRpb24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUszQyxNQUFNLE9BQU8saUJBQWlCO0lBRTVCLGdCQUFnQixDQUFDO0lBRWpCLGNBQWMsQ0FBQyxHQUFPO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBRUQsY0FBYyxDQUFDLEdBQU87UUFDcEIsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDbkIsQ0FBQzs7K0dBVlUsaUJBQWlCO21IQUFqQixpQkFBaUIsY0FGaEIsTUFBTTs0RkFFUCxpQkFBaUI7a0JBSDdCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgRW5jcnlwdGlvblNlcnZpY2Uge1xyXG5cclxuICBjb25zdHJ1Y3RvcigpIHsgfVxyXG5cclxuICBlbmNyeXB0UmVxdWVzdChvYmo6YW55KSB7XHJcbiAgICByZXR1cm4gYnRvYShKU09OLnN0cmluZ2lmeShvYmopKTtcclxuICB9XHJcblxyXG4gIGRlY3J5cHRSZXF1ZXN0KG9iajphbnkpIHtcclxuICAgIHJldHVybiBhdG9iKG9iaik7XHJcbiAgfVxyXG5cclxufVxyXG4iXX0=
|
|
@@ -0,0 +1,232 @@
|
|
|
1
|
+
import { Injectable, Inject } from '@angular/core';
|
|
2
|
+
import { DOCUMENT } from '@angular/common';
|
|
3
|
+
import { Common } from '../../shared/enums/common.enum';
|
|
4
|
+
import { EndPoint } from '../../shared/enums/end-point.enum';
|
|
5
|
+
import { StorageTokenStatus } from '../../shared/enums/storage-token-status.enum';
|
|
6
|
+
import { serverHostList } from './serverHostList';
|
|
7
|
+
import * as i0 from "@angular/core";
|
|
8
|
+
import * as i1 from "../../services/storage/storage.service";
|
|
9
|
+
import * as i2 from "../../services/common-utils/core-function/core-function.service";
|
|
10
|
+
import * as i3 from "../data-share/data-share.service";
|
|
11
|
+
export class EnvService {
|
|
12
|
+
constructor(document, storageService, coreFunctionService, dataShareService) {
|
|
13
|
+
this.document = document;
|
|
14
|
+
this.storageService = storageService;
|
|
15
|
+
this.coreFunctionService = coreFunctionService;
|
|
16
|
+
this.dataShareService = dataShareService;
|
|
17
|
+
this.requestType = '';
|
|
18
|
+
this.serverHostname = '';
|
|
19
|
+
this.themeSettingList = [
|
|
20
|
+
{ 'propertyName': '--headerbg', 'key': 'header_bg_color', 'default': '#fcfcfc' },
|
|
21
|
+
{ 'propertyName': '--navtxtcolor', 'key': 'header_txt_color', 'default': '#222' },
|
|
22
|
+
{ 'propertyName': '--navtxthovercolor', 'key': 'header_txt_hover_color', 'default': '#77bce8' },
|
|
23
|
+
{ 'propertyName': '--headericon', 'key': 'header_icon_color', 'default': '#555' },
|
|
24
|
+
{ 'propertyName': '--headericonhover', 'key': 'header_icon_hover_color', 'default': '#777' },
|
|
25
|
+
{ 'propertyName': '--buttonColor', 'key': 'btn_color', 'default': '#2597de' },
|
|
26
|
+
{ 'propertyName': '--buttonHoverColor', 'key': 'btn_hover_color', 'default': '#0b71b0' },
|
|
27
|
+
{ 'propertyName': '--footerbg', 'key': 'footer_bg', 'default': '#77bce8' },
|
|
28
|
+
{ 'propertyName': '--themecolor', 'key': 'theme_color', 'default': '#e8f5fd' },
|
|
29
|
+
{ 'propertyName': '--activebg', 'key': 'active_bg_color', 'default': '#77bce8' },
|
|
30
|
+
{ 'propertyName': '--popupHeaderBg', 'key': 'popup_header_bg', 'default': '#CEE7F7' },
|
|
31
|
+
{ 'propertyName': '--formLabelBg', 'key': 'form_label_bg', 'default': '#E4F2FA' },
|
|
32
|
+
{ 'propertyName': '--fontColor', 'key': 'txtColor', 'default': '#000' },
|
|
33
|
+
];
|
|
34
|
+
this.serverHostnameSubscription = this.dataShareService.serverHostname.subscribe(data => {
|
|
35
|
+
if (data && data != '') {
|
|
36
|
+
this.serverHostname = data;
|
|
37
|
+
}
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
getBaseUrl() {
|
|
41
|
+
let baseUrl;
|
|
42
|
+
const host = this.storageService.getHostNameDinamically();
|
|
43
|
+
if (this.coreFunctionService.isNotBlank(host)) {
|
|
44
|
+
baseUrl = host;
|
|
45
|
+
}
|
|
46
|
+
else {
|
|
47
|
+
// baseUrl = environment.serverhost
|
|
48
|
+
if (this.getHostKeyValue('serverEndpoint')) {
|
|
49
|
+
baseUrl = this.getHostKeyValue('serverEndpoint') + '/rest/';
|
|
50
|
+
}
|
|
51
|
+
else {
|
|
52
|
+
if (this.serverHostname) {
|
|
53
|
+
baseUrl = this.serverHostname + '/rest/';
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
// baseUrl = this.getHostKeyValue('serverEndpoint') +'/rest/';
|
|
57
|
+
this.setDinamicallyHost();
|
|
58
|
+
}
|
|
59
|
+
return baseUrl;
|
|
60
|
+
}
|
|
61
|
+
getAppName() {
|
|
62
|
+
if (this.coreFunctionService.isNotBlank(this.storageService.getClientCodeEnviorment().appName)) {
|
|
63
|
+
this.storageService.setAppName(this.storageService.getClientCodeEnviorment().appName);
|
|
64
|
+
return this.storageService.getClientCodeEnviorment().appName;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
getAppId() {
|
|
68
|
+
return this.storageService.getClientCodeEnviorment().appId;
|
|
69
|
+
}
|
|
70
|
+
baseUrl(applicationAction) {
|
|
71
|
+
return this.getBaseUrl() + EndPoint[applicationAction];
|
|
72
|
+
}
|
|
73
|
+
publicBaseUrl(applicationAction) {
|
|
74
|
+
return this.getBaseUrl() + EndPoint.PUBLIC + EndPoint[applicationAction];
|
|
75
|
+
}
|
|
76
|
+
otpApi() {
|
|
77
|
+
return "https://2factor.in/API/V1/" + Common.API_KEY + "/SMS/";
|
|
78
|
+
}
|
|
79
|
+
verifyOtpApi() {
|
|
80
|
+
return "https://2factor.in/API/V1/" + Common.API_KEY + "/SMS/VERIFY/";
|
|
81
|
+
}
|
|
82
|
+
getApi(apiName) {
|
|
83
|
+
let api;
|
|
84
|
+
if (this.getRequestType() == 'PUBLIC') {
|
|
85
|
+
api = this.publicBaseUrl(apiName);
|
|
86
|
+
}
|
|
87
|
+
else {
|
|
88
|
+
api = this.baseUrl(apiName);
|
|
89
|
+
}
|
|
90
|
+
return api;
|
|
91
|
+
}
|
|
92
|
+
getAuthApi(apiName) {
|
|
93
|
+
let api;
|
|
94
|
+
api = this.baseUrl(apiName);
|
|
95
|
+
return api;
|
|
96
|
+
}
|
|
97
|
+
setRequestType(type) {
|
|
98
|
+
this.requestType = type;
|
|
99
|
+
}
|
|
100
|
+
getRequestType() {
|
|
101
|
+
if (this.requestType == '') {
|
|
102
|
+
if (this.checkLogedIn()) {
|
|
103
|
+
this.requestType = "PRIVATE";
|
|
104
|
+
}
|
|
105
|
+
else {
|
|
106
|
+
this.requestType = "PUBLIC";
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
return this.requestType;
|
|
110
|
+
}
|
|
111
|
+
checkLogedIn() {
|
|
112
|
+
if (this.storageService != null && this.storageService.GetIdToken() != null) {
|
|
113
|
+
if (this.storageService.GetIdTokenStatus() == StorageTokenStatus.ID_TOKEN_ACTIVE) {
|
|
114
|
+
return true;
|
|
115
|
+
}
|
|
116
|
+
else {
|
|
117
|
+
return false;
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
return false;
|
|
121
|
+
}
|
|
122
|
+
setDinamicallyHost() {
|
|
123
|
+
let setHostName = this.storageService.getHostNameDinamically();
|
|
124
|
+
let serverHostName = this.serverHostname;
|
|
125
|
+
// let themedata = this.getHostKeyValue('theme_setting');
|
|
126
|
+
//this.setApplicationSetting();
|
|
127
|
+
if (setHostName && serverHostName && serverHostName != setHostName) {
|
|
128
|
+
const hostName = serverHostName + '/rest/';
|
|
129
|
+
this.storageService.setHostNameDinamically(hostName);
|
|
130
|
+
//this.setThemeSetting(themedata);
|
|
131
|
+
}
|
|
132
|
+
else {
|
|
133
|
+
this.dataShareService.getServerEndPoint(true);
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
getHostKeyValue(keyName) {
|
|
137
|
+
let hostname = "";
|
|
138
|
+
let key_Name = '';
|
|
139
|
+
if (this.storageService.checkPlatForm() == 'mobile') {
|
|
140
|
+
hostname = this.storageService.getClientName();
|
|
141
|
+
key_Name = 'clientCode';
|
|
142
|
+
}
|
|
143
|
+
else {
|
|
144
|
+
hostname = this.getHostName('hostname');
|
|
145
|
+
key_Name = 'clientEndpoint';
|
|
146
|
+
}
|
|
147
|
+
let value = '';
|
|
148
|
+
if (hostname == 'localhost') {
|
|
149
|
+
value = this.storageService.getClientCodeEnviorment().serverhost;
|
|
150
|
+
}
|
|
151
|
+
else if (serverHostList && serverHostList.length > 0) {
|
|
152
|
+
for (let index = 0; index < serverHostList.length; index++) {
|
|
153
|
+
const element = serverHostList[index];
|
|
154
|
+
if (hostname == element[key_Name]) {
|
|
155
|
+
if (keyName == "object") {
|
|
156
|
+
value = element;
|
|
157
|
+
break;
|
|
158
|
+
}
|
|
159
|
+
else {
|
|
160
|
+
value = element[keyName];
|
|
161
|
+
break;
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
return value;
|
|
167
|
+
}
|
|
168
|
+
getHostName(key) {
|
|
169
|
+
let mydocument = this.document;
|
|
170
|
+
return mydocument.location[key];
|
|
171
|
+
}
|
|
172
|
+
getServerHostname() {
|
|
173
|
+
return this.serverHostname;
|
|
174
|
+
}
|
|
175
|
+
setGoogleLocation(geolocation) {
|
|
176
|
+
Common.GOOGLE_MAP_IN_FORM = geolocation;
|
|
177
|
+
}
|
|
178
|
+
setApplicationSetting() {
|
|
179
|
+
let geolocation = this.storageService.getApplicationValueByKey('google_map');
|
|
180
|
+
this.setGoogleLocation(geolocation);
|
|
181
|
+
}
|
|
182
|
+
setThemeSetting(settingObj) {
|
|
183
|
+
this.themeSettingList.forEach(object => {
|
|
184
|
+
let propertyName = object.propertyName;
|
|
185
|
+
let key = object.key;
|
|
186
|
+
let defaultValue = object.default;
|
|
187
|
+
if (settingObj[key] && settingObj[key] != "") {
|
|
188
|
+
document.documentElement.style.setProperty(propertyName, settingObj[key]);
|
|
189
|
+
}
|
|
190
|
+
else {
|
|
191
|
+
document.documentElement.style.setProperty(propertyName, defaultValue);
|
|
192
|
+
}
|
|
193
|
+
});
|
|
194
|
+
}
|
|
195
|
+
checkRedirectionUrl() {
|
|
196
|
+
let redirectURL = '';
|
|
197
|
+
const url = this.storageService.getApplicationSetting();
|
|
198
|
+
if (url && url['redirect_url']) {
|
|
199
|
+
redirectURL = url['redirect_url'];
|
|
200
|
+
}
|
|
201
|
+
return redirectURL;
|
|
202
|
+
}
|
|
203
|
+
checkClientExistOrNot(data) {
|
|
204
|
+
let value = false;
|
|
205
|
+
if (serverHostList && serverHostList.length > 0) {
|
|
206
|
+
for (let index = 0; index < serverHostList.length; index++) {
|
|
207
|
+
const element = serverHostList[index];
|
|
208
|
+
if (element && element.clientCode) {
|
|
209
|
+
if (data === element.clientCode) {
|
|
210
|
+
value = true;
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
return value;
|
|
216
|
+
}
|
|
217
|
+
getVerifyType() {
|
|
218
|
+
return this.storageService.getClientCodeEnviorment().verify_type;
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
EnvService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: EnvService, deps: [{ token: DOCUMENT }, { token: i1.StorageService }, { token: i2.CoreFunctionService }, { token: i3.DataShareService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
222
|
+
EnvService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: EnvService, providedIn: 'root' });
|
|
223
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: EnvService, decorators: [{
|
|
224
|
+
type: Injectable,
|
|
225
|
+
args: [{
|
|
226
|
+
providedIn: 'root'
|
|
227
|
+
}]
|
|
228
|
+
}], ctorParameters: function () { return [{ type: Document, decorators: [{
|
|
229
|
+
type: Inject,
|
|
230
|
+
args: [DOCUMENT]
|
|
231
|
+
}] }, { type: i1.StorageService }, { type: i2.CoreFunctionService }, { type: i3.DataShareService }]; } });
|
|
232
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW52LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jbGllbnQtY29yZS9zcmMvbGliL3NlcnZpY2VzL2Vudi9lbnYuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFDLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVsRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3hELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUM3RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUNsRixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7Ozs7O0FBVWxELE1BQU0sT0FBTyxVQUFVO0lBSXJCLFlBQzRCLFFBQWtCLEVBQ3BDLGNBQThCLEVBQzlCLG1CQUF1QyxFQUN2QyxnQkFBbUM7UUFIakIsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUNwQyxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFvQjtRQUN2QyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQW1CO1FBUDdDLGdCQUFXLEdBQVEsRUFBRSxDQUFDO1FBQ3RCLG1CQUFjLEdBQVksRUFBRSxDQUFDO1FBMko3QixxQkFBZ0IsR0FBRztZQUNqQixFQUFDLGNBQWMsRUFBQyxZQUFZLEVBQUMsS0FBSyxFQUFDLGlCQUFpQixFQUFDLFNBQVMsRUFBQyxTQUFTLEVBQUM7WUFDekUsRUFBQyxjQUFjLEVBQUMsZUFBZSxFQUFDLEtBQUssRUFBQyxrQkFBa0IsRUFBQyxTQUFTLEVBQUMsTUFBTSxFQUFDO1lBQzFFLEVBQUMsY0FBYyxFQUFDLG9CQUFvQixFQUFDLEtBQUssRUFBQyx3QkFBd0Is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LEdBQWEsS0FBSyxDQUFDO1FBQzVCLElBQUcsY0FBYyxJQUFJLGNBQWMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFDO1lBQzdDLEtBQUssSUFBSSxLQUFLLEdBQUcsQ0FBQyxFQUFFLEtBQUssR0FBRyxjQUFjLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxFQUFFO2dCQUMxRCxNQUFNLE9BQU8sR0FBTyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQzFDLElBQUcsT0FBTyxJQUFJLE9BQU8sQ0FBQyxVQUFVLEVBQUM7b0JBQy9CLElBQUcsSUFBSSxLQUFLLE9BQU8sQ0FBQyxVQUFVLEVBQUM7d0JBQzdCLEtBQUssR0FBRyxJQUFJLENBQUE7cUJBQ2I7aUJBQ0Y7YUFDRjtTQUNGO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBQ0QsYUFBYTtRQUNYLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyx1QkFBdUIsRUFBRSxDQUFDLFdBQVcsQ0FBQztJQUNuRSxDQUFDOzt3R0FqTlUsVUFBVSxrQkFLWCxRQUFROzRHQUxQLFVBQVUsY0FGVCxNQUFNOzRGQUVQLFVBQVU7a0JBSHRCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25COzswQkFNSSxNQUFNOzJCQUFDLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLEluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBmcm9tLCBvZiwgT2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7Ly9mcm9tUHJvbWlzZVxyXG5pbXBvcnQgeyBET0NVTUVOVCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IENvbW1vbiB9IGZyb20gJy4uLy4uL3NoYXJlZC9lbnVtcy9jb21tb24uZW51bSc7XHJcbmltcG9ydCB7IEVuZFBvaW50IH0gZnJvbSAnLi4vLi4vc2hhcmVkL2VudW1zL2VuZC1wb2ludC5lbnVtJztcclxuaW1wb3J0IHsgU3RvcmFnZVRva2VuU3RhdHVzIH0gZnJvbSAnLi4vLi4vc2hhcmVkL2VudW1zL3N0b3JhZ2UtdG9rZW4tc3RhdHVzLmVudW0nO1xyXG5pbXBvcnQgeyBzZXJ2ZXJIb3N0TGlzdCB9IGZyb20gJy4vc2VydmVySG9zdExpc3QnO1xyXG5pbXBvcnQgeyBTdG9yYWdlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3N0b3JhZ2Uvc3RvcmFnZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ29yZUZ1bmN0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2NvbW1vbi11dGlscy9jb3JlLWZ1bmN0aW9uL2NvcmUtZnVuY3Rpb24uc2VydmljZSc7XHJcbmltcG9ydCB7IFBMQVRGT1JNX05BTUUgfSBmcm9tICcuLi8uLi9zaGFyZWQvcGxhdGZvcm0nO1xyXG5pbXBvcnQgeyBEYXRhU2hhcmVTZXJ2aWNlIH0gZnJvbSAnLi4vZGF0YS1zaGFyZS9kYXRhLXNoYXJlLnNlcnZpY2UnO1xyXG5cclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIEVudlNlcnZpY2Uge1xyXG4gIHJlcXVlc3RUeXBlOiBhbnkgPSAnJztcclxuICBzZXJ2ZXJIb3N0bmFtZSA6IHN0cmluZyA9ICcnO1xyXG4gIHNlcnZlckhvc3RuYW1lU3Vic2NyaXB0aW9uIDogU3Vic2NyaXB0aW9uXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBASW5qZWN0KERPQ1VNRU5UKSBwcml2YXRlIGRvY3VtZW50OiBEb2N1bWVudCxcclxuICAgIHByaXZhdGUgc3RvcmFnZVNlcnZpY2U6IFN0b3JhZ2VTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBjb3JlRnVuY3Rpb25TZXJ2aWNlOkNvcmVGdW5jdGlvblNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGRhdGFTaGFyZVNlcnZpY2UgOiBEYXRhU2hhcmVTZXJ2aWNlLFxyXG4gICkge1xyXG4gICAgICB0aGlzLnNlcnZlckhvc3RuYW1lU3Vic2NyaXB0aW9uID0gdGhpcy5kYXRhU2hhcmVTZXJ2aWNlLnNlcnZlckhvc3RuYW1lLnN1YnNjcmliZShkYXRhPT57XHJcbiAgICAgICAgaWYoZGF0YSAmJiBkYXRhICE9ICcnKXtcclxuICAgICAgICAgIHRoaXMuc2VydmVySG9zdG5hbWUgPSBkYXRhO1xyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgfVxyXG5cclxuXHJcbiAgZ2V0QmFzZVVybCgpe1xyXG4gICAgbGV0IGJhc2VVcmw6YW55O1xyXG4gICAgY29uc3QgaG9zdCA9IHRoaXMuc3RvcmFnZVNlcnZpY2UuZ2V0SG9zdE5hbWVEaW5hbWljYWxseSgpO1xyXG4gICAgaWYodGhpcy5jb3JlRnVuY3Rpb25TZXJ2aWNlLmlzTm90QmxhbmsoaG9zdCkpe1xyXG4gICAgICBiYXNlVXJsID0gaG9zdDtcclxuICAgIH1lbHNle1xyXG4gICAgICAvLyBiYXNlVXJsID0gZW52aXJvbm1lbnQuc2VydmVyaG9zdFxyXG4gICAgICBpZih0aGlzLmdldEhvc3RLZXlWYWx1ZSgnc2VydmVyRW5kcG9pbnQnKSl7XHJcbiAgICAgICAgYmFzZVVybCA9IHRoaXMuZ2V0SG9zdEtleVZhbHVlKCdzZXJ2ZXJFbmRwb2ludCcpICsnL3Jlc3QvJztcclxuICAgICAgfWVsc2V7XHJcbiAgICAgICAgaWYodGhpcy5zZXJ2ZXJIb3N0bmFtZSl7XHJcbiAgICAgICAgICAgYmFzZVVybCA9IHRoaXMuc2VydmVySG9zdG5hbWUgKycvcmVzdC8nO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICAvLyBiYXNlVXJsID0gdGhpcy5nZXRIb3N0S2V5VmFsdWUoJ3NlcnZlckVuZHBvaW50JykgKycvcmVzdC8nO1xyXG4gICAgICB0aGlzLnNldERpbmFtaWNhbGx5SG9zdCgpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGJhc2VVcmw7XHJcbiAgfVxyXG4gIGdldEFwcE5hbWUoKXtcclxuICAgIGlmKHRoaXMuY29yZUZ1bmN0aW9uU2VydmljZS5pc05vdEJsYW5rKHRoaXMuc3RvcmFnZVNlcnZpY2UuZ2V0Q2xpZW50Q29kZUVudmlvcm1lbnQoKS5hcHBOYW1lKSl7XHJcbiAgICAgIHRoaXMuc3RvcmFnZVNlcnZpY2Uuc2V0QXBwTmFtZSh0aGlzLnN0b3JhZ2VTZXJ2aWNlLmdldENsaWVudENvZGVFbnZpb3JtZW50KCkuYXBwTmFtZSk7XHJcbiAgICAgIHJldHVybiB0aGlzLnN0b3JhZ2VTZXJ2aWNlLmdldENsaWVudENvZGVFbnZpb3JtZW50KCkuYXBwTmFtZTtcclxuICAgIH1cclxuICB9XHJcbiAgZ2V0QXBwSWQoKXtcclxuICAgIHJldHVybiB0aGlzLnN0b3JhZ2VTZXJ2aWNlLmdldENsaWVudENvZGVFbnZpb3JtZW50KCkuYXBwSWQ7XHJcbiAgfVxyXG4gIGJhc2VVcmwoYXBwbGljYXRpb25BY3Rpb246IHN0cmluZykge1xyXG4gICAgcmV0dXJuIHRoaXMuZ2V0QmFzZVVybCgpICsgICg8YW55PkVuZFBvaW50KVthcHBsaWNhdGlvbkFjdGlvbl07XHJcbiAgfVxyXG4gIHB1YmxpY0Jhc2VVcmwoYXBwbGljYXRpb25BY3Rpb246IHN0cmluZykge1xyXG4gICAgICByZXR1cm4gdGhpcy5nZXRCYXNlVXJsKCkgKyBFbmRQb2ludC5QVUJMSUMgKyAoPGFueT5FbmRQb2ludClbYXBwbGljYXRpb25BY3Rpb25dO1xyXG4gIH1cclxuICBvdHBBcGkoKXtcclxuICAgIHJldHVybiBcImh0dHBzOi8vMmZhY3Rvci5pbi9BUEkvVjEvXCIgKyBDb21tb24uQVBJX0tFWSArIFwiL1NNUy9cIlxyXG4gIH1cclxuICB2ZXJpZnlPdHBBcGkoKXtcclxuICAgIHJldHVybiBcImh0dHBzOi8vMmZhY3Rvci5pbi9BUEkvVjEvXCIgKyBDb21tb24uQVBJX0tFWSArIFwiL1NNUy9WRVJJRlkvXCJcclxuICB9XHJcbiAgZ2V0QXBpKGFwaU5hbWU6c3RyaW5nKXtcclxuICAgIGxldCBhcGk7XHJcbiAgICBpZih0aGlzLmdldFJlcXVlc3RUeXBlKCkgPT0gJ1BVQkxJQycpe1xyXG4gICAgICAgIGFwaSA9IHRoaXMucHVibGljQmFzZVVybChhcGlOYW1lKVxyXG4gICAgfWVsc2V7XHJcbiAgICAgICAgYXBpID0gdGhpcy5iYXNlVXJsKGFwaU5hbWUpXHJcbiAgICB9XHJcbiAgICByZXR1cm4gYXBpO1xyXG4gIH1cclxuICBnZXRBdXRoQXBpKGFwaU5hbWU6c3RyaW5nKXtcclxuICAgIGxldCBhcGk7XHJcbiAgICBhcGkgPSB0aGlzLmJhc2VVcmwoYXBpTmFtZSlcclxuICAgIHJldHVybiBhcGk7XHJcbiAgfVxyXG4gIHNldFJlcXVlc3RUeXBlKHR5cGU6YW55KSB7XHJcbiAgICB0aGlzLnJlcXVlc3RUeXBlID0gdHlwZTtcclxuICB9XHJcbiAgZ2V0UmVxdWVzdFR5cGUoKSB7XHJcbiAgICBpZih0aGlzLnJlcXVlc3RUeXBlID09ICcnKXtcclxuICAgICAgaWYodGhpcy5jaGVja0xvZ2VkSW4oKSl7XHJcbiAgICAgICAgdGhpcy5yZXF1ZXN0VHlwZSA9IFwiUFJJVkFURVwiO1xyXG4gICAgICB9ZWxzZXtcclxuICAgICAgICB0aGlzLnJlcXVlc3RUeXBlID0gXCJQVUJMSUNcIjtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMucmVxdWVzdFR5cGU7XHJcbiAgfVxyXG4gIGNoZWNrTG9nZWRJbigpe1xyXG4gICAgaWYgKHRoaXMuc3RvcmFnZVNlcnZpY2UgIT0gbnVsbCAmJiB0aGlzLnN0b3JhZ2VTZXJ2aWNlLkdldElkVG9rZW4oKSAhPSBudWxsKSB7XHJcbiAgICAgIGlmKHRoaXMuc3RvcmFnZVNlcnZpY2UuR2V0SWRUb2tlblN0YXR1cygpID09IFN0b3JhZ2VUb2tlblN0YXR1cy5JRF9UT0tFTl9BQ1RJVkUpe1xyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICB9ZWxzZXtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIHNldERpbmFtaWNhbGx5SG9zdCgpe1xyXG4gICAgbGV0IHNldEhvc3ROYW1lID0gdGhpcy5zdG9yYWdlU2VydmljZS5nZXRIb3N0TmFtZURpbmFtaWNhbGx5KCk7XHJcbiAgICBsZXQgc2VydmVySG9zdE5hbWUgPSB0aGlzLnNlcnZlckhvc3RuYW1lO1xyXG4gICAgLy8gbGV0IHRoZW1lZGF0YSA9IHRoaXMuZ2V0SG9zdEtleVZhbHVlKCd0aGVtZV9zZXR0aW5nJyk7XHJcbiAgICAvL3RoaXMuc2V0QXBwbGljYXRpb25TZXR0aW5nKCk7XHJcbiAgICBpZihzZXRIb3N0TmFtZSAmJiBzZXJ2ZXJIb3N0TmFtZSAmJiBzZXJ2ZXJIb3N0TmFtZSAhPSBzZXRIb3N0TmFtZSApIHtcclxuICAgICAgY29uc3QgaG9zdE5hbWUgPSBzZXJ2ZXJIb3N0TmFtZSArJy9yZXN0Lyc7XHJcbiAgICAgIHRoaXMuc3RvcmFnZVNlcnZpY2Uuc2V0SG9zdE5hbWVEaW5hbWljYWxseShob3N0TmFtZSk7XHJcbiAgICAgIC8vdGhpcy5zZXRUaGVtZVNldHRpbmcodGhlbWVkYXRhKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZGF0YVNoYXJlU2VydmljZS5nZXRTZXJ2ZXJFbmRQb2ludCh0cnVlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldEhvc3RLZXlWYWx1ZShrZXlOYW1lOnN0cmluZyl7XHJcbiAgICBsZXQgaG9zdG5hbWU6YW55ID1cIlwiO1xyXG4gICAgbGV0IGtleV9OYW1lOnN0cmluZyA9ICcnO1xyXG4gICAgaWYodGhpcy5zdG9yYWdlU2VydmljZS5jaGVja1BsYXRGb3JtKCkgPT0gJ21vYmlsZScpe1xyXG4gICAgICBob3N0bmFtZSA9IHRoaXMuc3RvcmFnZVNlcnZpY2UuZ2V0Q2xpZW50TmFtZSgpO1xyXG4gICAgICBrZXlfTmFtZSA9ICdjbGllbnRDb2RlJztcclxuICAgIH1lbHNle1xyXG4gICAgICBob3N0bmFtZSA9IHRoaXMuZ2V0SG9zdE5hbWUoJ2hvc3RuYW1lJyk7XHJcbiAgICAgIGtleV9OYW1lID0gJ2NsaWVudEVuZHBvaW50JztcclxuICAgIH1cclxuICAgIGxldCB2YWx1ZTphbnkgPSAnJztcclxuICAgIGlmKGhvc3RuYW1lID09ICdsb2NhbGhvc3QnKXtcclxuICAgICAgdmFsdWUgPSB0aGlzLnN0b3JhZ2VTZXJ2aWNlLmdldENsaWVudENvZGVFbnZpb3JtZW50KCkuc2VydmVyaG9zdDtcclxuICAgIH1lbHNlIGlmKHNlcnZlckhvc3RMaXN0ICYmIHNlcnZlckhvc3RMaXN0Lmxlbmd0aCA+IDApe1xyXG4gICAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgc2VydmVySG9zdExpc3QubGVuZ3RoOyBpbmRleCsrKSB7XHJcbiAgICAgICAgY29uc3QgZWxlbWVudDphbnkgPSBzZXJ2ZXJIb3N0TGlzdFtpbmRleF07XHJcbiAgICAgICAgaWYoaG9zdG5hbWUgPT0gZWxlbWVudFtrZXlfTmFtZV0pe1xyXG4gICAgICAgICAgaWYoa2V5TmFtZSA9PSBcIm9iamVjdFwiKXtcclxuICAgICAgICAgICAgdmFsdWUgPSBlbGVtZW50O1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgICB2YWx1ZSA9IGVsZW1lbnRba2V5TmFtZV07XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiB2YWx1ZTtcclxuICB9XHJcbiAgZ2V0SG9zdE5hbWUoa2V5OnN0cmluZyl7XHJcbiAgICBsZXQgbXlkb2N1bWVudDphbnkgPSB0aGlzLmRvY3VtZW50O1xyXG4gICAgcmV0dXJuIG15ZG9jdW1lbnQubG9jYXRpb25ba2V5XTtcclxuICB9XHJcbiAgZ2V0U2VydmVySG9zdG5hbWUoKXtcclxuICAgIHJldHVybiB0aGlzLnNlcnZlckhvc3RuYW1lO1xyXG4gIH1cclxuXHJcbiAgc2V0R29vZ2xlTG9jYXRpb24oZ2VvbG9jYXRpb246YW55KXtcclxuICAgIChDb21tb24gYXMgYW55KS5HT09HTEVfTUFQX0lOX0ZPUk0gPSBnZW9sb2NhdGlvbjtcclxuICB9XHJcblxyXG4gIHNldEFwcGxpY2F0aW9uU2V0dGluZygpe1xyXG4gICAgbGV0IGdlb2xvY2F0aW9uID0gdGhpcy5zdG9yYWdlU2VydmljZS5nZXRBcHBsaWNhdGlvblZhbHVlQnlLZXkoJ2dvb2dsZV9tYXAnKTtcclxuICAgIHRoaXMuc2V0R29vZ2xlTG9jYXRpb24oZ2VvbG9jYXRpb24pO1xyXG4gIH1cclxuXHJcbiAgdGhlbWVTZXR0aW5nTGlzdCA9IFtcclxuICAgIHsncHJvcGVydHlOYW1lJzonLS1oZWFkZXJiZycsJ2tleSc6J2hlYWRlcl9iZ19jb2xvcicsJ2RlZmF1bHQnOicjZmNmY2ZjJ30sXHJcbiAgICB7J3Byb3BlcnR5TmFtZSc6Jy0tbmF2dHh0Y29sb3InLCdrZXknOidoZWFkZXJfdHh0X2NvbG9yJywnZGVmYXVsdCc6JyMyMjInfSxcclxuICAgIHsncHJvcGVydHlOYW1lJzonLS1uYXZ0eHRob3ZlcmNvbG9yJywna2V5JzonaGVhZGVyX3R4dF9ob3Zlcl9jb2xvcicsJ2RlZmF1bHQnOicjNzdiY2U4J30sXHJcbiAgICB7J3Byb3BlcnR5TmFtZSc6Jy0taGVhZGVyaWNvbicsJ2tleSc6J2hlYWRlcl9pY29uX2NvbG9yJywnZGVmYXVsdCc6JyM1NTUnfSxcclxuICAgIHsncHJvcGVydHlOYW1lJzonLS1oZWFkZXJpY29uaG92ZXInLCdrZXknOidoZWFkZXJfaWNvbl9ob3Zlcl9jb2xvcicsJ2RlZmF1bHQnOicjNzc3J30sXHJcbiAgICB7J3Byb3BlcnR5TmFtZSc6Jy0tYnV0dG9uQ29sb3InLCdrZXknOididG5fY29sb3InLCdkZWZhdWx0JzonIzI1OTdkZSd9LFxyXG4gICAgeydwcm9wZXJ0eU5hbWUnOictLWJ1dHRvbkhvdmVyQ29sb3InLCdrZXknOididG5faG92ZXJfY29sb3InLCdkZWZhdWx0JzonIzBiNzFiMCd9LFxyXG4gICAgeydwcm9wZXJ0eU5hbWUnOictLWZvb3RlcmJnJywna2V5JzonZm9vdGVyX2JnJywnZGVmYXVsdCc6JyM3N2JjZTgnfSxcclxuICAgIHsncHJvcGVydHlOYW1lJzonLS10aGVtZWNvbG9yJywna2V5JzondGhlbWVfY29sb3InLCdkZWZhdWx0JzonI2U4ZjVmZCd9LFxyXG4gICAgeydwcm9wZXJ0eU5hbWUnOictLWFjdGl2ZWJnJywna2V5JzonYWN0aXZlX2JnX2NvbG9yJywnZGVmYXVsdCc6JyM3N2JjZTgnfSxcclxuICAgIHsncHJvcGVydHlOYW1lJzonLS1wb3B1cEhlYWRlckJnJywna2V5JzoncG9wdXBfaGVhZGVyX2JnJywnZGVmYXVsdCc6JyNDRUU3RjcnfSxcclxuICAgIHsncHJvcGVydHlOYW1lJzonLS1mb3JtTGFiZWxCZycsJ2tleSc6J2Zvcm1fbGFiZWxfYmcnLCdkZWZhdWx0JzonI0U0RjJGQSd9LFxyXG4gICAgeydwcm9wZXJ0eU5hbWUnOictLWZvbnRDb2xvcicsJ2tleSc6J3R4dENvbG9yJywnZGVmYXVsdCc6JyMwMDAnfSxcclxuICBdXHJcbiAgc2V0VGhlbWVTZXR0aW5nKHNldHRpbmdPYmo6YW55KSB7XHJcbiAgICB0aGlzLnRoZW1lU2V0dGluZ0xpc3QuZm9yRWFjaChvYmplY3QgPT4ge1xyXG4gICAgICBsZXQgcHJvcGVydHlOYW1lID0gb2JqZWN0LnByb3BlcnR5TmFtZTtcclxuICAgICAgbGV0IGtleSA9IG9iamVjdC5rZXk7XHJcbiAgICAgIGxldCBkZWZhdWx0VmFsdWUgPSBvYmplY3QuZGVmYXVsdDtcclxuICAgICAgaWYoc2V0dGluZ09ialtrZXldICYmIHNldHRpbmdPYmpba2V5XSAhPSBcIlwiICkge1xyXG4gICAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eShwcm9wZXJ0eU5hbWUsIHNldHRpbmdPYmpba2V5XSk7XHJcbiAgICAgIH1lbHNle1xyXG4gICAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eShwcm9wZXJ0eU5hbWUsIGRlZmF1bHRWYWx1ZSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuICBjaGVja1JlZGlyZWN0aW9uVXJsKCl7XHJcbiAgICBsZXQgcmVkaXJlY3RVUkwgPSAnJztcclxuICAgIGNvbnN0IHVybCA9IHRoaXMuc3RvcmFnZVNlcnZpY2UuZ2V0QXBwbGljYXRpb25TZXR0aW5nKCk7XHJcbiAgICBpZih1cmwgJiYgdXJsWydyZWRpcmVjdF91cmwnXSl7XHJcbiAgICAgIHJlZGlyZWN0VVJMID0gdXJsWydyZWRpcmVjdF91cmwnXTtcclxuICAgIH1cclxuICAgIHJldHVybiByZWRpcmVjdFVSTDtcclxuICB9XHJcblxyXG4gIGNoZWNrQ2xpZW50RXhpc3RPck5vdChkYXRhOmFueSl7XHJcbiAgICBsZXQgdmFsdWUgOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBpZihzZXJ2ZXJIb3N0TGlzdCAmJiBzZXJ2ZXJIb3N0TGlzdC5sZW5ndGggPiAwKXtcclxuICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IHNlcnZlckhvc3RMaXN0Lmxlbmd0aDsgaW5kZXgrKykge1xyXG4gICAgICAgIGNvbnN0IGVsZW1lbnQ6YW55ID0gc2VydmVySG9zdExpc3RbaW5kZXhdO1xyXG4gICAgICAgIGlmKGVsZW1lbnQgJiYgZWxlbWVudC5jbGllbnRDb2RlKXtcclxuICAgICAgICAgIGlmKGRhdGEgPT09IGVsZW1lbnQuY2xpZW50Q29kZSl7XHJcbiAgICAgICAgICAgIHZhbHVlID0gdHJ1ZVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHZhbHVlO1xyXG4gIH1cclxuICBnZXRWZXJpZnlUeXBlKCl7XHJcbiAgICByZXR1cm4gdGhpcy5zdG9yYWdlU2VydmljZS5nZXRDbGllbnRDb2RlRW52aW9ybWVudCgpLnZlcmlmeV90eXBlO1xyXG4gIH1cclxuXHJcbn1cclxuIl19
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
export const serverHostList = [
|
|
2
|
+
{ "clientEndpoint": "localhost", "serverEndpoint": "http://localhost:8104" },
|
|
3
|
+
{ "clientCode": "ELABS-ELABS01-SIT", "clientEndpoint": "sit.elabss.ai", "serverEndpoint": "https://sitserverelabs.elabss.ai" },
|
|
4
|
+
{ "clientCode": "ELABS-ELABS01-DEV", "clientEndpoint": "dev.elabss.ai", "serverEndpoint": "https://devserverelabs.elabss.ai" },
|
|
5
|
+
{ "clientCode": "ELABS-ELABS01-UAT", "clientEndpoint": "uat.elabss.ai", "serverEndpoint": "https://uatserverelabs.elabss.ai" },
|
|
6
|
+
{ "clientCode": "SANS-SANS01-SIT", "clientEndpoint": "sit-sanskar.elabss.ai", "serverEndpoint": "https://sitsanskarserver.elabss.ai" },
|
|
7
|
+
{ "clientCode": "SANS-SANS01", "clientEndpoint": "lims-sanskar.elabss.ai", "serverEndpoint": "https://prodsanskarserver.elabss.ai" },
|
|
8
|
+
{ "clientEndpoint": "hardgoodslabs.elabss.ai", "serverEndpoint": "https://serverhardgoodlabs.elabss.ai" },
|
|
9
|
+
{ "clientCode": "DEMO-DEMO01", "clientEndpoint": "demolab.elabss.ai", "serverEndpoint": "https://serverdemolabs.elabss.ai" },
|
|
10
|
+
{ "clientEndpoint": "lite-demolab.elabss.ai", "serverEndpoint": "https://serverhardgoodlabs.elabss.ai" },
|
|
11
|
+
{ "clientEndpoint": "standard-demolab.elabss.ai", "serverEndpoint": "https://serverhardgoodlabs.elabss.ai" },
|
|
12
|
+
{ "clientCode": "ASC-ASC01-SIT", "clientEndpoint": "ascgroup.elabss.ai", "serverEndpoint": "https://sitserverascgroup.elabss.ai" },
|
|
13
|
+
{ "clientEndpoint": "uatclients.elabss.ai", "serverEndpoint": "https://sitserverascgroup.elabss.ai" },
|
|
14
|
+
{ "clientCode": "ASC-ASC01", "clientEndpoint": "erpsuite.ascgroup.co.in", "serverEndpoint": "https://prodserverascgroup.elabss.ai" },
|
|
15
|
+
{ "clientCode": "ASC-ASC01", "clientEndpoint": "lims-ascgroup.elabss.ai", "serverEndpoint": "https://prodserverascgroup.elabss.ai" },
|
|
16
|
+
{ "clientEndpoint": "sit-itclabs.elabss.ai", "serverEndpoint": "https://serveritclabs.elabss.ai" },
|
|
17
|
+
{ "clientEndpoint": "dev-itclabs.elabss.ai", "serverEndpoint": "https://devserveritclabs.elabss.ai" },
|
|
18
|
+
{ "clientCode": "ITC-ITC01-UAT", "clientEndpoint": "uat-itclabs.elabss.ai", "serverEndpoint": "https://uatserveritclabs.elabss.ai" },
|
|
19
|
+
{ "clientCode": "ITC-ITC01", "clientEndpoint": "lims-itclabs.elabss.ai", "serverEndpoint": "https://prodserveritclabs.elabss.ai" },
|
|
20
|
+
{ "clientCode": "ITC-ITC01", "clientEndpoint": "lims.itclabs.com", "serverEndpoint": "https://prodserveritclabs.elabss.ai" },
|
|
21
|
+
{ "clientCode": "ITC-ITC01", "clientEndpoint": "itclims.elabss.ai", "serverEndpoint": "https://prodserveritclabs.elabss.ai" },
|
|
22
|
+
{ "clientEndpoint": "qualiteklab.elabss.ai", "serverEndpoint": "https://serverqualiteklab.elabss.ai" },
|
|
23
|
+
{ "clientEndpoint": "uat-qualiteklab.elabss.ai", "serverEndpoint": "https://uatserverqualiteklab.elabss.ai" },
|
|
24
|
+
{ "clientCode": "QUAL-QUALI01", "clientEndpoint": "lims.qualiteklab.com", "serverEndpoint": "https://prodserverqualiteklab.elabss.ai" },
|
|
25
|
+
{ "clientCode": "QUAL-QUALI01", "clientEndpoint": "qualiteklab-lims.elabss.ai", "serverEndpoint": "https://prodserverqualiteklab.elabss.ai" },
|
|
26
|
+
{ "clientEndpoint": "dev-qualiteklab.elabss.ai", "serverEndpoint": "https://devserverqualiteklab.elabss.ai" },
|
|
27
|
+
{ "clientEndpoint": "sit-hitech.elabss.ai", "serverEndpoint": "https://sithitechserver.elabss.ai" },
|
|
28
|
+
{ "clientEndpoint": "lims-hitech.elabss.ai", "serverEndpoint": "https://prodhitechserver.elabss.ai" },
|
|
29
|
+
{ "clientEndpoint": "sit-aalbiosciences.elabss.ai", "serverEndpoint": "https://sitaalbiosciencesserver.elabss.ai" },
|
|
30
|
+
{ "clientCode": "AABIO-AABIO01", "clientEndpoint": "lims-aalbiosciences.elabss.ai", "serverEndpoint": "https://prodaalbiosciencesserver.elabss.ai" },
|
|
31
|
+
{ "clientCode": "QUAL-QUALI02", "clientEndpoint": "bbsr-lims.qualiteklab.com", "serverEndpoint": "https://prodserverbbsrqualiteklab.elabss.ai" },
|
|
32
|
+
{ "clientCode": "QUAL-QUALI02", "clientEndpoint": "bbsr-lims.elabss.ai", "serverEndpoint": "https://prodserverbbsrqualiteklab.elabss.ai" },
|
|
33
|
+
{ "clientEndpoint": "sit-multani.elabss.ai", "serverEndpoint": "https://sitmultaniserver.elabss.ai" },
|
|
34
|
+
{ "clientEndpoint": "app.multani.com", "serverEndpoint": "http://server.multani.com:30051" },
|
|
35
|
+
{ "clientEndpoint": "food.multani.com", "serverEndpoint": "http://server.multani.com:30051" },
|
|
36
|
+
{ "clientEndpoint": "lims-pharma-multani.elabss.ai", "serverEndpoint": "https://prodmultaniserver.elabss.ai" },
|
|
37
|
+
{ "clientEndpoint": "lims-food-multani.elabss.ai", "serverEndpoint": "https://prodmultaniserver.elabss.ai" },
|
|
38
|
+
{ "clientEndpoint": "lims-multani.elabss.ai", "serverEndpoint": "https://sitmultaniserver.elabss.ai" },
|
|
39
|
+
{ "clientCode": "SAT-SAT01", "clientEndpoint": "web.sralabs.com", "serverEndpoint": "https://prodsatiateserver.elabss.ai" },
|
|
40
|
+
{ "clientCode": "SAT-SAT01", "clientEndpoint": "lims-sralabs.elabss.ai", "serverEndpoint": "https://prodsatiateserver.elabss.ai" },
|
|
41
|
+
{ "clientEndpoint": "app.elabss.ai", "serverEndpoint": "https://serverelabs.elabss.ai" },
|
|
42
|
+
{ "clientCode": "CENT-CENT01-SIT", "clientEndpoint": "sit-central.elabss.ai", "serverEndpoint": "https://sitservercentrallims.elabss.ai" },
|
|
43
|
+
{ "clientCode": "CENT-CENT01", "clientEndpoint": "central.elabss.ai", "serverEndpoint": "https://prodservercentral.elabss.ai" },
|
|
44
|
+
{ "clientCode": "UPMA-UPMA01", "clientEndpoint": "upma-lims.elabss.ai", "serverEndpoint": "https://prodserverupma.elabss.ai" },
|
|
45
|
+
{ "clientCode": "IIRT-IIRT01", "clientEndpoint": "erp.iirt.co.in", "serverEndpoint": "https://prodiirtserver.elabss.ai" },
|
|
46
|
+
{ "clientCode": "IIRT-IIRT01", "clientEndpoint": "lims-iirt.elabss.ai", "serverEndpoint": "https://prodiirtserver.elabss.ai" },
|
|
47
|
+
{ "clientCode": "COMP-COMPASS01", "clientEndpoint": "compassgroup.elabss.ai", "serverEndpoint": "https://prodservercompassgroup.elabss.ai" },
|
|
48
|
+
{ "clientCode": "TICS-TICS01", "clientEndpoint": "lims.theticslab.com", "serverEndpoint": "https://prodservertheticslab.elabss.ai" },
|
|
49
|
+
{ "clientCode": "ITC-ITC01-DEV2", "clientEndpoint": "dev2.elabss.ai", "serverEndpoint": "https://dev2serverelabs.elabss.ai" },
|
|
50
|
+
{ "clientCode": "ITC-ITC01-SIT2", "clientEndpoint": "sit2.elabss.ai", "serverEndpoint": "https://sit2serverelabs.elabss.ai" },
|
|
51
|
+
{ "clientCode": "ITC-ITC01-UAT2", "clientEndpoint": "uat2.elabss.ai", "serverEndpoint": "https://uat2serverelabs.elabss.ai" },
|
|
52
|
+
{ "clientCode": "ITC-ITC01-WP02", "clientEndpoint": "lims-ipsos.elabss.ai", "serverEndpoint": "https://prodserveripsos.elabss.ai" },
|
|
53
|
+
{ "clientEndpoint": "sit-qualiteklab.elabss.ai", "serverEndpoint": "https://sitserverqualiteklab.elabss.ai" },
|
|
54
|
+
{ "clientEndpoint": "sit-qualiteklabbbsr.elabss.ai", "serverEndpoint": "https://sitserverbbsrqualiteklab.elabss.ai" }
|
|
55
|
+
];
|
|
56
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmVySG9zdExpc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jbGllbnQtY29yZS9zcmMvbGliL3NlcnZpY2VzL2Vudi9zZXJ2ZXJIb3N0TGlzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUc7SUFDNUIsRUFBQyxnQkFBZ0IsRUFBRSxXQUFXLEVBQUUsZ0JBQWdCLEVBQUUsdUJBQXVCLEVBQUM7SUFDMUUsRUFBQyxZQUFZLEVBQUUsbUJBQW1CLEVBQUUsZ0JBQWdCLEVBQUUsZUFBZSxFQUFFLGdCQUFnQixFQUFFLGtDQUFrQyxFQUFDO0lBQzVILEVBQUMsWUFBWSxFQUFFLG1CQUFtQixFQUFFLGdCQUFnQixFQUFFLGVBQWUsRUFBRSxnQkFBZ0IsRUFBRSxrQ0FBa0MsRUFBQztJQUM1SCxFQUFDLFlBQVksRUFBRSxtQkFBbUIsRUFBRSxnQkFBZ0IsRUFBRSxlQUFlLEVBQUUsZ0JBQWdCLEVBQUUsa0NBQWtDLEVBQUM7SUFDNUgsRUFBQyxZQUFZLEVBQUUsaUJBQWlCLEVBQUUsZ0JBQWdCLEVBQUUsdUJBQXVCLEVBQUUsZ0JBQWdCLEVBQUUsb0NBQW9DLEVBQUM7SUFDcEksRUFBQyxZQUFZLEVBQUUsYUFBYSxFQUFFLGdCQUFnQixFQUFFLHdCQUF3QixFQUFFLGdCQUFnQixFQUFFLHFDQUFxQyxFQUFDO0lBQ2xJLEVBQUMsZ0JBQWdCLEVBQUUseUJBQXlCLEVBQUUsZ0JBQWdCLEVBQUUsc0NBQXNDLEVBQUM7SUFDdkcsRUFBQyxZQUFZLEVBQUUsYUFBYSxFQUFFLGdCQUFnQixFQUFFLG1CQUFtQixFQUFFLGdCQUFnQixFQUFFLGtDQUFrQyxFQUFDO0lBQzFILEVBQUMsZ0JBQWdCLEVBQUUsd0JBQXdCLEVBQUUsZ0JBQWdCLEVBQUUsc0NBQXNDLEVBQUM7SUFDdEcsRUFBQyxnQkFBZ0IsRUFBRSw0QkFBNEIsRUFBRSxnQkFBZ0IsRUFBRSxz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M0gsRUFBQyxZQUFZLEVBQUUsZ0JBQWdCLEVBQUUsZ0JBQWdCLEVBQUUsZ0JBQWdCLEVBQUUsZ0JBQWdCLEVBQUUsbUNBQW1DLEVBQUM7SUFDM0gsRUFBQyxZQUFZLEVBQUUsZ0JBQWdCLEVBQUUsZ0JBQWdCLEVBQUUsZ0JBQWdCLEVBQUUsZ0JBQWdCLEVBQUUsbUNBQW1DLEVBQUM7SUFDM0gsRUFBQyxZQUFZLEVBQUUsZ0JBQWdCLEVBQUUsZ0JBQWdCLEVBQUUsc0JBQXNCLEVBQUUsZ0JBQWdCLEVBQUUsbUNBQW1DLEVBQUM7SUFDakksRUFBQyxnQkFBZ0IsRUFBRSwyQkFBMkIsRUFBRSxnQkFBZ0IsRUFBRSx3Q0FBd0MsRUFBQztJQUMzRyxFQUFDLGdCQUFnQixFQUFFLCtCQUErQixFQUFFLGdCQUFnQixFQUFFLDRDQUE0QyxFQUFDO0NBRXBILENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3Qgc2VydmVySG9zdExpc3QgPSBbXHJcbiAge1wiY2xpZW50RW5kcG9pbnRcIjogXCJsb2NhbGhvc3RcIiwgXCJzZXJ2ZXJFbmRwb2ludFwiOiBcImh0dHA6Ly9sb2NhbGhvc3Q6ODEwNFwifSxcclxuICB7XCJjbGllbnRDb2RlXCI6IFwiRUxBQlMtRUxBQlMwMS1TSVRcIiwgXCJjbGllbnRFbmRwb2ludFwiOiBcInNpdC5lbGFic3MuYWlcIiwgXCJzZXJ2ZXJFbmRwb2ludFwiOiBcImh0dHBzOi8vc2l0c2VydmVyZWxhYnMuZWxhYnNzLmFpXCJ9LFxyXG4gIHtcImNsaWVudENvZGVcIjogXCJFTEFCUy1FTEFCUzAxLURFVlwiLCBcImNsaWVudEVuZHBvaW50XCI6IFwiZGV2LmVsYWJzcy5haVwiLCBcInNlcnZlckVuZHBvaW50XCI6IFwiaHR0cHM6Ly9kZXZzZXJ2ZXJlbGFicy5lbGFic3MuYWlcIn0sXHJcbiAge1wiY2xpZW50Q29kZVwiOiBcIkVMQUJTLUVMQUJTMDEtVUFUXCIsIFwiY2xpZW50RW5kcG9pbnRcIjogXCJ1YXQuZWxhYnNzLmFpXCIsIFwic2VydmVyRW5kcG9pbnRcIjogXCJodHRwczovL3VhdHNlcnZlcmVsYWJzLmVsYWJzcy5haVwifSxcclxuICB7XCJjbGllbnRDb2RlXCI6IFwiU0FOUy1TQU5TMDEtU0lUXCIsIFwiY2xpZW50RW5kcG9pbnRcIjogXCJzaXQtc2Fuc2thci5lbGFic3MuYWlcIiwgXCJzZXJ2ZXJFbmRwb2ludFwiOiBcImh0dHBzOi8vc2l0c2Fuc2thcnNlcnZlci5lbGFic3MuYWlcIn0sXHJcbiAge1wiY2xpZW50Q29kZVwiOiBcIlNBTlMtU0FOUzAxXCIsIFwiY2xpZW50RW5kcG9pbnRcIjogXCJsaW1zLXNhbnNrYXIuZWxhYnNzLmFpXCIsIFwic2VydmVyRW5kcG9pbnRcIjogXCJodHRwczovL3Byb2RzYW5za2Fyc2VydmVyLmVsYWJzcy5haVwifSxcclxuICB7XCJjbGllbnRFbmRwb2ludFwiOiBcImhhcmRnb29kc2xhYnMuZWxhYnNzLmFpXCIsIFwic2VydmVyRW5kcG9pbnRcIjogXCJodHRwczovL3NlcnZlcmhhcmRnb29kbGFicy5lbGFic3MuYWlcIn0sXHJcbiAge1wiY2xpZW50Q29kZVwiOiBcIkRFTU8tREVNTzAxXCIsIFwiY2xpZW50RW5kcG9pbnRcIjogXCJkZW1vbGFiLmVsYWJzcy5haVwiLCBcInNlcnZlckVuZHBvaW50XCI6IFwiaHR0cHM6Ly9zZXJ2ZXJkZW1vbGFicy5lbGFic3MuYWlcIn0sXHJcbiAge1wiY2xpZW50RW5kcG9pbnRcIjogXCJsaXRlLWRlbW9sYWIuZWxhYnNzLmFpXCIsIFwic2VydmVyRW5kcG9pbnRcIjogXCJodHRwczovL3NlcnZlcmhhcmRnb29kbGFicy5lbGFic3MuYWlcIn0sXHJcbiAge1wiY2xpZW50RW5kcG9pbnRcIjogXCJzdGFuZGFyZC1kZW1vbGFiLmVsYWJzcy5haVwiLCBcInNlcnZlckVuZHBvaW50XCI6IFwiaHR0cHM6Ly9zZXJ2ZXJoYXJkZ29vZGxhYnMuZWxhYnNzLmFpXCJ9LFxyXG4gIHtcImNsaWVudENvZGVcIjogXCJBU0MtQVNDMDEtU0lUXCIsIFwiY2xpZW50RW5kcG9pbnRcIjogXCJhc2Nncm91cC5lbGFic3MuYWlcIiwgXCJzZXJ2ZXJFbmRwb2ludFwiOiBcImh0dHBzOi8vc2l0c2VydmVyYXNjZ3JvdXAuZWxhYnNzLmFpXCJ9LFxyXG4gIHtcImNsaWVudEVuZHBvaW50XCI6IFwidWF0Y2xpZW50cy5lbGFic3MuYWlcIiwgXCJzZXJ2ZXJFbmRwb2ludFwiOiBcImh0dHBzOi8vc2l0c2VydmVyYXNjZ3JvdXAuZWxhYnNzLmFpXCJ9LFxyXG4gIHtcImNsaWVudENvZGVcIjogXCJBU0MtQVNDMDFcIiwgXCJjbGllbnRFbmRwb2ludFwiOiBcImVycHN1aXRlLmFzY2dyb3VwLmNvLmluXCIsIFwic2VydmVyRW5kcG9pbnRcIjogXCJodHRwczovL3Byb2RzZXJ2ZXJhc2Nncm91cC5lbGFic3MuYWlcIn0sXHJcbiAge1wiY2xpZW50Q29kZVwiOiBcIkFTQy1BU0MwMVwiLCBcImNsaWVudEVuZHBvaW50XCI6IFwibGltcy1hc2Nncm91cC5lbGFic3MuYWlcIiwgXCJzZXJ2ZXJFbmRwb2ludFwiOiBcImh0dHBzOi8vcHJvZHNlcnZlcmFzY2dyb3VwLmVsYWJzcy5haVwifSxcclxuICB7XCJjbGllbnRFbmRwb2ludFwiOiBcInNpdC1pdGNsYWJzLmVsYWJzcy5haVwiLCBcInNlcnZlckVuZHBvaW50XCI6IFwiaHR0cHM6Ly9zZXJ2ZXJpdGNsYWJzLmVsYWJzcy5haVwifSxcclxuICB7XCJjbGllbnRFbmRwb2ludFwiOiBcImRldi1pdGNsYWJzLmVsYWJzcy5haVwiLCBcInNlcnZlckVuZHBvaW50XCI6IFwiaHR0cHM6Ly9kZXZzZXJ2ZXJpdGNsYWJzLmVsYWJzcy5haVwifSxcclxuICB7XCJjbGllbnRDb2RlXCI6IFwiSVRDLUlUQzAxLVVBVFwiLCBcImNsaWVudEVuZHBvaW50XCI6IFwidWF0LWl0Y2xhYnMuZWxhYnNzLmFpXCIsIFwic2VydmVyRW5kcG9pbnRcIjogXCJodHRwczovL3VhdHNlcnZlcml0Y2xhYnMuZWxhYnNzLmFpXCJ9LFxyXG4gIHtcImNsaWVudENvZGVcIjogXCJJVEMtSVRDMDFcIixcImNsaWVudEVuZHBvaW50XCI6IFwibGltcy1pdGNsYWJzLmVsYWJzcy5haVwiLCBcInNlcnZlckVuZHBvaW50XCI6IFwiaHR0cHM6Ly9wcm9kc2VydmVyaXRjbGFicy5lbGFic3MuYWlcIn0sXHJcbiAge1wiY2xpZW50Q29kZVwiOiBcIklUQy1JVEMwMVwiLCBcImNsaWVudEVuZHBvaW50XCI6IFwibGltcy5pdGNsYWJzLmNvbVwiLCBcInNlcnZlckVuZHBvaW50XCI6IFwiaHR0cHM6Ly9wcm9kc2VydmVyaXRjbGFicy5lbGFic3MuYWlcIn0sXHJcbiAge1wiY2xpZW50Q29kZVwiOiBcIklUQy1JVEMwMVwiLFwiY2xpZW50RW5kcG9pbnRcIjogXCJpdGNsaW1zLmVsYWJzcy5haVwiLCBcInNlcnZlckVuZHBvaW50XCI6IFwiaHR0cHM6Ly9wcm9kc2VydmVyaXRjbGFicy5lbGFic3MuYWlcIn0sXHJcbiAge1wiY2xpZW50RW5kcG9pbnRcIjogXCJxdWFsaXRla2xhYi5lbGFic3MuYWlcIiwgXCJzZXJ2ZXJFbmRwb2ludFwiOiBcImh0dHBzOi8vc2VydmVycXVhbGl0ZWtsYWIuZWxhYnNzLmFpXCJ9LFxyXG4gIHtcImNsaWVudEVuZHBvaW50XCI6IFwidWF0LXF1YWxpdGVrbGFiLmVsYWJzcy5haVwiLCBcInNlcnZlckVuZHBvaW50XCI6IFwiaHR0cHM6Ly91YXRzZXJ2ZXJxdWFsaXRla2xhYi5lbGFic3MuYWlcIn0sXHJcbiAge1wiY2xpZW50Q29kZVwiOiBcIlFVQUwtUVVBTEkwMVwiLCBcImNsaWVudEVuZHBvaW50XCI6IFwibGltcy5xdWFsaXRla2xhYi5jb21cIiwgXCJzZXJ2ZXJFbmRwb2ludFwiOiBcImh0dHBzOi8vcHJvZHNlcnZlcnF1YWxpdGVrbGFiLmVsYWJzcy5haVwifSxcclxuICB7XCJjbGllbnRDb2RlXCI6IFwiUVVBTC1RVUFMSTAxXCIsIFwiY2xpZW50RW5kcG9pbnRcIjogXCJxdWFsaXRla2xhYi1saW1zLmVsYWJzcy5haVwiLCBcInNlcnZlckVuZHBvaW50XCI6IFwiaHR0cHM6Ly9wcm9kc2VydmVycXVhbGl0ZWtsYWIuZWxhYnNzLmFpXCJ9LFxyXG4gIHtcImNsaWVudEVuZHBvaW50XCI6IFwiZGV2LXF1YWxpdGVrbGFiLmVsYWJzcy5haVwiLCBcInNlcnZlckVuZHBvaW50XCI6IFwiaHR0cHM6Ly9kZXZzZXJ2ZXJxdWFsaXRla2xhYi5lbGFic3MuYWlcIn0sXHJcbiAge1wiY2xpZW50RW5kcG9pbnRcIjogXCJzaXQtaGl0ZWNoLmVsYWJzcy5haVwiLCBcInNlcnZlckVuZHBvaW50XCI6IFwiaHR0cHM6Ly9zaXRoaXRlY2hzZXJ2ZXIuZWxhYnNzLmFpXCJ9LFxyXG4gIHtcImNsaWVudEVuZHBvaW50XCI6IFwibGltcy1oaXRlY2guZWxhYnNzLmFpXCIsIFwic2VydmVyRW5kcG9pbnRcIjogXCJodHRwczovL3Byb2RoaXRlY2hzZXJ2ZXIuZWxhYnNzLmFpXCJ9LFxyXG4gIHtcImNsaWVudEVuZHBvaW50XCI6IFwic2l0LWFhbGJpb3NjaWVuY2VzLmVsYWJzcy5haVwiLCBcInNlcnZlckVuZHBvaW50XCI6IFwiaHR0cHM6Ly9zaXRhYWxiaW9zY2llbmNlc3NlcnZlci5lbGFic3MuYWlcIn0sXHJcbiAge1wiY2xpZW50Q29kZVwiOiBcIkFBQklPLUFBQklPMDFcIiwgXCJjbGllbnRFbmRwb2ludFwiOiBcImxpbXMtYWFsYmlvc2NpZW5jZXMuZWxhYnNzLmFpXCIsIFwic2VydmVyRW5kcG9pbnRcIjogXCJodHRwczovL3Byb2RhYWxiaW9zY2llbmNlc3NlcnZlci5lbGFic3MuYWlcIn0sXHJcbiAge1wiY2xpZW50Q29kZVwiOiBcIlFVQUwtUVVBTEkwMlwiLCBcImNsaWVudEVuZHBvaW50XCI6IFwiYmJzci1saW1zLnF1YWxpdGVrbGFiLmNvbVwiLCBcInNlcnZlckVuZHBvaW50XCI6IFwiaHR0cHM6Ly9wcm9kc2VydmVyYmJzcnF1YWxpdGVrbGFiLmVsYWJzcy5haVwifSxcclxuICB7XCJjbGllbnRDb2RlXCI6IFwiUVVBTC1RVUFMSTAyXCIsXCJjbGllbnRFbmRwb2ludFwiOiBcImJic3ItbGltcy5lbGFic3MuYWlcIiwgXCJzZXJ2ZXJFbmRwb2ludFwiOiBcImh0dHBzOi8vcHJvZHNlcnZlcmJic3JxdWFsaXRla2xhYi5lbGFic3MuYWlcIn0sXHJcbiAge1wiY2xpZW50RW5kcG9pbnRcIjogXCJzaXQtbXVsdGFuaS5lbGFic3MuYWlcIiwgXCJzZXJ2ZXJFbmRwb2ludFwiOiBcImh0dHBzOi8vc2l0bXVsdGFuaXNlcnZlci5lbGFic3MuYWlcIn0sXHJcbiAge1wiY2xpZW50RW5kcG9pbnRcIjogXCJhcHAubXVsdGFuaS5jb21cIiwgXCJzZXJ2ZXJFbmRwb2ludFwiOiBcImh0dHA6Ly9zZXJ2ZXIubXVsdGFuaS5jb206MzAwNTFcIn0sXHJcbiAge1wiY2xpZW50RW5kcG9pbnRcIjogXCJmb29kLm11bHRhbmkuY29tXCIsIFwic2VydmVyRW5kcG9pbnRcIjogXCJodHRwOi8vc2VydmVyLm11bHRhbmkuY29tOjMwMDUxXCJ9LFxyXG4gIHtcImNsaWVudEVuZHBvaW50XCI6IFwibGltcy1waGFybWEtbXVsdGFuaS5lbGFic3MuYWlcIiwgXCJzZXJ2ZXJFbmRwb2ludFwiOiBcImh0dHBzOi8vcHJvZG11bHRhbmlzZXJ2ZXIuZWxhYnNzLmFpXCJ9LFxyXG4gIHtcImNsaWVudEVuZHBvaW50XCI6IFwibGltcy1mb29kLW11bHRhbmkuZWxhYnNzLmFpXCIsIFwic2VydmVyRW5kcG9pbnRcIjogXCJodHRwczovL3Byb2RtdWx0YW5pc2VydmVyLmVsYWJzcy5haVwifSxcclxuICB7XCJjbGllbnRFbmRwb2ludFwiOiBcImxpbXMtbXVsdGFuaS5lbGFic3MuYWlcIiwgXCJzZXJ2ZXJFbmRwb2ludFwiOiBcImh0dHBzOi8vc2l0bXVsdGFuaXNlcnZlci5lbGFic3MuYWlcIn0sXHJcbiAge1wiY2xpZW50Q29kZVwiOiBcIlNBVC1TQVQwMVwiLCBcImNsaWVudEVuZHBvaW50XCI6IFwid2ViLnNyYWxhYnMuY29tXCIsIFwic2VydmVyRW5kcG9pbnRcIjogXCJodHRwczovL3Byb2RzYXRpYXRlc2VydmVyLmVsYWJzcy5haVwifSxcclxuICB7XCJjbGllbnRDb2RlXCI6IFwiU0FULVNBVDAxXCIsIFwiY2xpZW50RW5kcG9pbnRcIjogXCJsaW1zLXNyYWxhYnMuZWxhYnNzLmFpXCIsIFwic2VydmVyRW5kcG9pbnRcIjogXCJodHRwczovL3Byb2RzYXRpYXRlc2VydmVyLmVsYWJzcy5haVwifSxcclxuICB7XCJjbGllbnRFbmRwb2ludFwiOiBcImFwcC5lbGFic3MuYWlcIiwgXCJzZXJ2ZXJFbmRwb2ludFwiOiBcImh0dHBzOi8vc2VydmVyZWxhYnMuZWxhYnNzLmFpXCJ9LFxyXG4gIHtcImNsaWVudENvZGVcIjogXCJDRU5ULUNFTlQwMS1TSVRcIiwgXCJjbGllbnRFbmRwb2ludFwiOiBcInNpdC1jZW50cmFsLmVsYWJzcy5haVwiLCBcInNlcnZlckVuZHBvaW50XCI6IFwiaHR0cHM6Ly9zaXRzZXJ2ZXJjZW50cmFsbGltcy5lbGFic3MuYWlcIn0sXHJcbiAge1wiY2xpZW50Q29kZVwiOiBcIkNFTlQtQ0VOVDAxXCIsIFwiY2xpZW50RW5kcG9pbnRcIjogXCJjZW50cmFsLmVsYWJzcy5haVwiLCBcInNlcnZlckVuZHBvaW50XCI6IFwiaHR0cHM6Ly9wcm9kc2VydmVyY2VudHJhbC5lbGFic3MuYWlcIn0sXHJcbiAge1wiY2xpZW50Q29kZVwiOiBcIlVQTUEtVVBNQTAxXCIsIFwiY2xpZW50RW5kcG9pbnRcIjogXCJ1cG1hLWxpbXMuZWxhYnNzLmFpXCIsIFwic2VydmVyRW5kcG9pbnRcIjogXCJodHRwczovL3Byb2RzZXJ2ZXJ1cG1hLmVsYWJzcy5haVwifSxcclxuICB7XCJjbGllbnRDb2RlXCI6IFwiSUlSVC1JSVJUMDFcIiwgXCJjbGllbnRFbmRwb2ludFwiOiBcImVycC5paXJ0LmNvLmluXCIsIFwic2VydmVyRW5kcG9pbnRcIjogXCJodHRwczovL3Byb2RpaXJ0c2VydmVyLmVsYWJzcy5haVwifSxcclxuICB7XCJjbGllbnRDb2RlXCI6IFwiSUlSVC1JSVJUMDFcIiwgXCJjbGllbnRFbmRwb2ludFwiOiBcImxpbXMtaWlydC5lbGFic3MuYWlcIiwgXCJzZXJ2ZXJFbmRwb2ludFwiOiBcImh0dHBzOi8vcHJvZGlpcnRzZXJ2ZXIuZWxhYnNzLmFpXCJ9LFxyXG4gIHtcImNsaWVudENvZGVcIjogXCJDT01QLUNPTVBBU1MwMVwiLCBcImNsaWVudEVuZHBvaW50XCI6IFwiY29tcGFzc2dyb3VwLmVsYWJzcy5haVwiLCBcInNlcnZlckVuZHBvaW50XCI6IFwiaHR0cHM6Ly9wcm9kc2VydmVyY29tcGFzc2dyb3VwLmVsYWJzcy5haVwifSxcclxuICB7XCJjbGllbnRDb2RlXCI6IFwiVElDUy1USUNTMDFcIiwgXCJjbGllbnRFbmRwb2ludFwiOiBcImxpbXMudGhldGljc2xhYi5jb21cIiwgXCJzZXJ2ZXJFbmRwb2ludFwiOiBcImh0dHBzOi8vcHJvZHNlcnZlcnRoZXRpY3NsYWIuZWxhYnNzLmFpXCJ9LFxyXG4gIHtcImNsaWVudENvZGVcIjogXCJJVEMtSVRDMDEtREVWMlwiLCBcImNsaWVudEVuZHBvaW50XCI6IFwiZGV2Mi5lbGFic3MuYWlcIiwgXCJzZXJ2ZXJFbmRwb2ludFwiOiBcImh0dHBzOi8vZGV2MnNlcnZlcmVsYWJzLmVsYWJzcy5haVwifSxcclxuICB7XCJjbGllbnRDb2RlXCI6IFwiSVRDLUlUQzAxLVNJVDJcIiwgXCJjbGllbnRFbmRwb2ludFwiOiBcInNpdDIuZWxhYnNzLmFpXCIsIFwic2VydmVyRW5kcG9pbnRcIjogXCJodHRwczovL3NpdDJzZXJ2ZXJlbGFicy5lbGFic3MuYWlcIn0sXHJcbiAge1wiY2xpZW50Q29kZVwiOiBcIklUQy1JVEMwMS1VQVQyXCIsIFwiY2xpZW50RW5kcG9pbnRcIjogXCJ1YXQyLmVsYWJzcy5haVwiLCBcInNlcnZlckVuZHBvaW50XCI6IFwiaHR0cHM6Ly91YXQyc2VydmVyZWxhYnMuZWxhYnNzLmFpXCJ9LFxyXG4gIHtcImNsaWVudENvZGVcIjogXCJJVEMtSVRDMDEtV1AwMlwiLCBcImNsaWVudEVuZHBvaW50XCI6IFwibGltcy1pcHNvcy5lbGFic3MuYWlcIiwgXCJzZXJ2ZXJFbmRwb2ludFwiOiBcImh0dHBzOi8vcHJvZHNlcnZlcmlwc29zLmVsYWJzcy5haVwifSxcclxuICB7XCJjbGllbnRFbmRwb2ludFwiOiBcInNpdC1xdWFsaXRla2xhYi5lbGFic3MuYWlcIiwgXCJzZXJ2ZXJFbmRwb2ludFwiOiBcImh0dHBzOi8vc2l0c2VydmVycXVhbGl0ZWtsYWIuZWxhYnNzLmFpXCJ9LFxyXG4gIHtcImNsaWVudEVuZHBvaW50XCI6IFwic2l0LXF1YWxpdGVrbGFiYmJzci5lbGFic3MuYWlcIiwgXCJzZXJ2ZXJFbmRwb2ludFwiOiBcImh0dHBzOi8vc2l0c2VydmVyYmJzcnF1YWxpdGVrbGFiLmVsYWJzcy5haVwifVxyXG5cclxuXVxyXG4iXX0=
|