info-library 2.14.24-beta.3 → 2.14.24-beta.4
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/model/data-access.model.mjs +2 -3
- package/esm2020/service/data.service.mjs +10 -10
- package/esm2020/utils/utilities.mjs +3 -3
- package/fesm2015/info-library.mjs +12 -13
- package/fesm2015/info-library.mjs.map +1 -1
- package/fesm2020/info-library.mjs +12 -13
- package/fesm2020/info-library.mjs.map +1 -1
- package/model/data-access.model.d.ts +1 -1
- package/package.json +1 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export class InfoDataAccessModel {
|
|
2
|
-
constructor(
|
|
2
|
+
constructor(data, success, messages) {
|
|
3
3
|
this.messages = [];
|
|
4
4
|
this.name = null;
|
|
5
5
|
this.description = null;
|
|
@@ -7,7 +7,6 @@ export class InfoDataAccessModel {
|
|
|
7
7
|
this.parentId = null;
|
|
8
8
|
this.referenceGuid = null;
|
|
9
9
|
this.external = false;
|
|
10
|
-
var data = JSON.parse(atob(rData));
|
|
11
10
|
if (data != null) {
|
|
12
11
|
if (data.Name != null && data.Name != "")
|
|
13
12
|
this.name = data.Name;
|
|
@@ -33,4 +32,4 @@ export class InfoDataAccessModel {
|
|
|
33
32
|
this.messages = new Array();
|
|
34
33
|
}
|
|
35
34
|
}
|
|
36
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
35
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1hY2Nlc3MubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9pbmZvLWxpYnJhcnkvc3JjL21vZGVsL2RhdGEtYWNjZXNzLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sT0FBTyxtQkFBbUI7SUFZNUIsWUFBWSxJQUFTLEVBQUUsT0FBaUIsRUFBRSxRQUFtQjtRQVQ3RCxhQUFRLEdBQWEsRUFBRSxDQUFDO1FBQ3hCLFNBQUksR0FBVyxJQUFJLENBQUM7UUFDcEIsZ0JBQVcsR0FBVyxJQUFJLENBQUM7UUFFM0IsVUFBSyxHQUFXLENBQUMsQ0FBQztRQUNsQixhQUFRLEdBQVcsSUFBSSxDQUFDO1FBQ3hCLGtCQUFhLEdBQVcsSUFBSSxDQUFDO1FBQzdCLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFJYixJQUFJLElBQUksSUFBSSxJQUFJLEVBQUU7WUFDZCxJQUFJLElBQUksQ0FBQyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxJQUFJLElBQUksRUFBRTtnQkFDcEMsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFBO1lBRXpCLElBQUksSUFBSSxDQUFDLFdBQVcsSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLFdBQVcsSUFBSSxFQUFFO2dCQUNsRCxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUM7WUFFeEMsSUFBSSxJQUFJLENBQUMsS0FBSyxJQUFJLElBQUk7Z0JBQ2xCLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztZQUU1QixJQUFJLElBQUksQ0FBQyxPQUFPLElBQUksSUFBSTtnQkFDcEIsT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7WUFFM0IsSUFBSSxJQUFJLENBQUMsUUFBUTtnQkFDYixRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztZQUU3QixJQUFJLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSTtnQkFDckIsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO1lBRWxDLElBQUksSUFBSSxDQUFDLGFBQWEsSUFBSSxJQUFJO2dCQUMxQixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUM7WUFFNUMsSUFBSSxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUk7Z0JBQ3JCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztZQUVsQyxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7U0FDekI7UUFFRCxJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDO1FBQ2hELElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO1FBRXpCLElBQUksSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLElBQUksQ0FBQztZQUNsRCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksS0FBSyxFQUFFLENBQUM7SUFDcEMsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNsYXNzIEluZm9EYXRhQWNjZXNzTW9kZWwge1xyXG4gICAgXHJcbiAgICBzdWNjZXNzOiBib29sZWFuO1xyXG4gICAgbWVzc2FnZXM6IHN0cmluZ1tdID0gW107XHJcbiAgICBuYW1lOiBzdHJpbmcgPSBudWxsO1xyXG4gICAgZGVzY3JpcHRpb246IHN0cmluZyA9IG51bGw7XHJcbiAgICBkYXRhOiBhbnk7XHJcbiAgICB0b3RhbDogbnVtYmVyID0gMDtcclxuICAgIHBhcmVudElkOiBudW1iZXIgPSBudWxsO1xyXG4gICAgcmVmZXJlbmNlR3VpZDogc3RyaW5nID0gbnVsbDtcclxuICAgIGV4dGVybmFsID0gZmFsc2U7XHJcblxyXG4gICAgY29uc3RydWN0b3IoZGF0YTogYW55LCBzdWNjZXNzPzogYm9vbGVhbiwgbWVzc2FnZXM/OiBzdHJpbmdbXSkge1xyXG5cclxuICAgICAgICBpZiAoZGF0YSAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgIGlmIChkYXRhLk5hbWUgIT0gbnVsbCAmJiBkYXRhLk5hbWUgIT0gXCJcIilcclxuICAgICAgICAgICAgICAgIHRoaXMubmFtZSA9IGRhdGEuTmFtZVxyXG5cclxuICAgICAgICAgICAgaWYgKGRhdGEuRGVzY3JpcHRpb24gIT0gbnVsbCAmJiBkYXRhLkRlc2NyaXB0aW9uICE9IFwiXCIpXHJcbiAgICAgICAgICAgICAgICB0aGlzLmRlc2NyaXB0aW9uID0gZGF0YS5EZXNjcmlwdGlvbjtcclxuXHJcbiAgICAgICAgICAgIGlmIChkYXRhLlRvdGFsICE9IG51bGwpXHJcbiAgICAgICAgICAgICAgICB0aGlzLnRvdGFsID0gZGF0YS5Ub3RhbDtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIGlmIChkYXRhLlN1Y2Nlc3MgIT0gbnVsbClcclxuICAgICAgICAgICAgICAgIHN1Y2Nlc3MgPSBkYXRhLlN1Y2Nlc3M7XHJcblxyXG4gICAgICAgICAgICBpZiAoZGF0YS5NZXNzYWdlcylcclxuICAgICAgICAgICAgICAgIG1lc3NhZ2VzID0gZGF0YS5NZXNzYWdlcztcclxuXHJcbiAgICAgICAgICAgIGlmIChkYXRhLlBhcmVudElkICE9IG51bGwpXHJcbiAgICAgICAgICAgICAgICB0aGlzLnBhcmVudElkID0gZGF0YS5QYXJlbnRJZDtcclxuXHJcbiAgICAgICAgICAgIGlmIChkYXRhLlJlZmVyZW5jZUd1aWQgIT0gbnVsbClcclxuICAgICAgICAgICAgICAgIHRoaXMucmVmZXJlbmNlR3VpZCA9IGRhdGEuUmVmZXJlbmNlR3VpZDtcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICBpZiAoZGF0YS5FeHRlcm5hbCAhPSBudWxsKVxyXG4gICAgICAgICAgICAgICAgdGhpcy5leHRlcm5hbCA9IGRhdGEuRXh0ZXJuYWw7XHJcblxyXG4gICAgICAgICAgICB0aGlzLmRhdGEgPSBkYXRhLkRhdGE7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIFxyXG4gICAgICAgIHRoaXMuc3VjY2VzcyA9IHN1Y2Nlc3MgPT0gbnVsbCA/IHRydWUgOiBzdWNjZXNzO1xyXG4gICAgICAgIHRoaXMubWVzc2FnZXMgPSBtZXNzYWdlcztcclxuXHJcbiAgICAgICAgaWYgKHRoaXMubWVzc2FnZXMgPT0gbnVsbCB8fCB0aGlzLm1lc3NhZ2VzLmxlbmd0aCA9PSAwKVxyXG4gICAgICAgICAgICB0aGlzLm1lc3NhZ2VzID0gbmV3IEFycmF5KCk7XHJcbiAgICB9XHJcbn0iXX0=
|
|
@@ -49,43 +49,43 @@ export class InfoDataService {
|
|
|
49
49
|
getNoToken(controller, method, param) {
|
|
50
50
|
return this._http
|
|
51
51
|
.get(this.getAPIUrl(controller) + (method || '').toLowerCase() + (param == null ? '' : ('?' + this._utilities.jsonToBase64(param.replace(/null/g, '').replace(/undefined/g, '')))), { headers: this.getHeaderDefault(), responseType: 'text' })
|
|
52
|
-
.pipe(map(r => new InfoDataAccessModel(r)), catchError((e) => this.errorHandling(e)));
|
|
52
|
+
.pipe(map(r => new InfoDataAccessModel(this._utilities.base64ToJson(r))), catchError((e) => this.errorHandling(e)));
|
|
53
53
|
}
|
|
54
54
|
get(controller, method, param) {
|
|
55
55
|
return this._http
|
|
56
56
|
.get(this.getAPIUrl(controller) + (method || '').toLowerCase() + (param == null ? '' : ('?' + this._utilities.jsonToBase64(param.replace(/null/g, '').replace(/undefined/g, '')))), { headers: this.getHeaderToken(), responseType: 'text' })
|
|
57
|
-
.pipe(map(r => new InfoDataAccessModel(r)), catchError((e) => this.errorHandling(e)));
|
|
57
|
+
.pipe(map(r => new InfoDataAccessModel(this._utilities.base64ToJson(r))), catchError((e) => this.errorHandling(e)));
|
|
58
58
|
}
|
|
59
59
|
getById(controller, id) {
|
|
60
60
|
return this._http
|
|
61
61
|
.get(this.getAPIUrl(controller) + id.toString(), { headers: this.getHeaderToken(), responseType: 'text' })
|
|
62
|
-
.pipe(map(r => new InfoDataAccessModel(r)), catchError((e) => this.errorHandling(e)));
|
|
62
|
+
.pipe(map(r => new InfoDataAccessModel(this._utilities.base64ToJson(r))), catchError((e) => this.errorHandling(e)));
|
|
63
63
|
}
|
|
64
64
|
postNoToken(controller, model, method) {
|
|
65
65
|
return this._http
|
|
66
66
|
.post(this.getAPIUrl(controller) + (method || '').toLowerCase(), this._utilities.jsonToBase64(model), { headers: this.getHeaderDefault(), responseType: 'text' })
|
|
67
|
-
.pipe(map(r => new InfoDataAccessModel(r)), catchError((e) => this.errorHandling(e)));
|
|
67
|
+
.pipe(map(r => new InfoDataAccessModel(this._utilities.base64ToJson(r))), catchError((e) => this.errorHandling(e)));
|
|
68
68
|
}
|
|
69
69
|
post(controller, model, method) {
|
|
70
70
|
return this._http
|
|
71
71
|
.post(this.getAPIUrl(controller) + (method || '').toLowerCase(), this._utilities.jsonToBase64(model), { headers: this.getHeaderToken(), responseType: 'text' })
|
|
72
|
-
.pipe(map(r => new InfoDataAccessModel(r)), catchError((e) => this.errorHandling(e, false)));
|
|
72
|
+
.pipe(map(r => new InfoDataAccessModel(this._utilities.base64ToJson(r))), catchError((e) => this.errorHandling(e, false)));
|
|
73
73
|
}
|
|
74
74
|
delete(controller, id, method) {
|
|
75
75
|
if (id == undefined || id == null)
|
|
76
76
|
alert('Id não informado');
|
|
77
77
|
return this._http
|
|
78
78
|
.delete(this.getAPIUrl(controller) + (method || '').toLowerCase() + "?" + this._utilities.jsonToBase64("id=" + id.toString()), { headers: this.getHeaderToken(), responseType: 'text' })
|
|
79
|
-
.pipe(map(r => new InfoDataAccessModel(r)), catchError((e) => this.errorHandling(e)));
|
|
79
|
+
.pipe(map(r => new InfoDataAccessModel(this._utilities.base64ToJson(r))), catchError((e) => this.errorHandling(e)));
|
|
80
80
|
}
|
|
81
81
|
deleteByModel(controller, model, method) {
|
|
82
82
|
let httpOptions = {
|
|
83
83
|
headers: this.getHeaderToken(),
|
|
84
|
-
body: model,
|
|
84
|
+
body: this._utilities.jsonToBase64(model),
|
|
85
85
|
};
|
|
86
86
|
return this._http
|
|
87
87
|
.delete(this.getAPIUrl(controller) + (method || '').toLowerCase(), httpOptions)
|
|
88
|
-
.pipe(map(r => new InfoDataAccessModel(r)), catchError((e) => this.errorHandling(e)));
|
|
88
|
+
.pipe(map(r => new InfoDataAccessModel(this._utilities.base64ToJson(r))), catchError((e) => this.errorHandling(e)));
|
|
89
89
|
}
|
|
90
90
|
request(controller, model, method, param) {
|
|
91
91
|
let formData = new FormData();
|
|
@@ -93,7 +93,7 @@ export class InfoDataService {
|
|
|
93
93
|
formData.append(model[index].name, model[index]);
|
|
94
94
|
return this._http
|
|
95
95
|
.request('POST', this.getAPIUrl(controller) + (method || '').toLowerCase() + (param == null ? '' : ('?' + this._utilities.jsonToBase64(param))), { headers: this.getHeaderToken(), body: formData, responseType: 'text' })
|
|
96
|
-
.pipe(map(r => new InfoDataAccessModel(r)), catchError((e) => this.errorHandling(e)));
|
|
96
|
+
.pipe(map(r => new InfoDataAccessModel(this._utilities.base64ToJson(r))), catchError((e) => this.errorHandling(e)));
|
|
97
97
|
}
|
|
98
98
|
errorHandling(e, redirect = true) {
|
|
99
99
|
if (e.status == 401)
|
|
@@ -115,4 +115,4 @@ export class InfoDataService {
|
|
|
115
115
|
type: Inject,
|
|
116
116
|
args: [APICONTROLLER_CONFIG]
|
|
117
117
|
}] }, { type: i1.HttpClient }, { type: i2.Router }, { type: i3.InfoPlatformModel }, { type: i4.Utilities }]; }, null); })();
|
|
118
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvaW5mby1saWJyYXJ5L3NyYy9zZXJ2aWNlL2RhdGEuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekMsT0FBTyxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQXFCLE1BQU0sc0JBQXNCLENBQUM7QUFDbEYsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDakUsT0FBTyxFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqRCxPQUFPLEVBQWMsRUFBRSxFQUFtQixNQUFNLE1BQU0sQ0FBQztBQUN2RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7Ozs7OztBQUsvQyxNQUFNLE9BQU8sZUFBZTtJQUl4QixZQUFrRCxjQUFtQixFQUNqRCxLQUFpQixFQUNqQixPQUFlLEVBQ2YsV0FBOEIsRUFDOUIsVUFBcUI7UUFKUyxtQkFBYyxHQUFkLGNBQWMsQ0FBSztRQUNqRCxVQUFLLEdBQUwsS0FBSyxDQUFZO1FBQ2pCLFlBQU8sR0FBUCxPQUFPLENBQVE7UUFDZixnQkFBVyxHQUFYLFdBQVcsQ0FBbUI7UUFDOUIsZUFBVSxHQUFWLFVBQVUsQ0FBVztJQUFJLENBQUM7SUFFdkMsUUFBUTtRQUNYLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMs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LElBQUksUUFBUSxHQUFhLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUM5QyxPQUFPLEVBQUUsQ0FBQyxJQUFJLG1CQUFtQixDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQztJQUM5RCxDQUFDOztpR0E5SlEsZUFBZSxjQUlKLG9CQUFvQjtvR0FKL0IsZUFBZSxXQUFmLGVBQWUsbUJBRlosTUFBTTt1RkFFVCxlQUFlO2NBSDNCLFVBQVU7ZUFBQztnQkFDUixVQUFVLEVBQUUsTUFBTTthQUNyQjs7c0JBS2dCLE1BQU07dUJBQUMsb0JBQW9CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBIZWFkZXJzLCBIdHRwRXJyb3JSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgSW5mb0RhdGFBY2Nlc3NNb2RlbCB9IGZyb20gJy4uL21vZGVsL2RhdGEtYWNjZXNzLm1vZGVsJztcclxuaW1wb3J0IHsgbWFwLCBjYXRjaEVycm9yIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiwgT2JzZXJ2YWJsZUlucHV0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IEFQSUNPTlRST0xMRVJfQ09ORklHIH0gZnJvbSAnLi4vZ2xvYmFsLWNvbmZpZyc7XHJcbmltcG9ydCB7IEluZm9QbGF0Zm9ybU1vZGVsIH0gZnJvbSAnLi4vbW9kZWwvcGxhdGZvcm0ubW9kZWwnO1xyXG5pbXBvcnQgeyBVdGlsaXRpZXMgfSBmcm9tICcuLi91dGlscy91dGlsaXRpZXMnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBJbmZvRGF0YVNlcnZpY2Uge1xyXG5cclxuICAgIHByaXZhdGUgdG9rZW46IHN0cmluZztcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihASW5qZWN0KEFQSUNPTlRST0xMRVJfQ09ORklHKSBwcml2YXRlIF9hcGlDb250cm9sbGVyOiBhbnksIFxyXG4gICAgICAgICAgICAgICAgcHJpdmF0ZSBfaHR0cDogSHR0cENsaWVudCwgXHJcbiAgICAgICAgICAgICAgICBwcml2YXRlIF9yb3V0ZXI6IFJvdXRlciwgXHJcbiAgICAgICAgICAgICAgICBwcml2YXRlIF9wbGF0YWZvcm1hOiBJbmZvUGxhdGZvcm1Nb2RlbCwgXHJcbiAgICAgICAgICAgICAgICBwcml2YXRlIF91dGlsaXRpZXM6IFV0aWxpdGllcykgeyB9XHJcblxyXG4gICAgcHVibGljIGdldFRva2VuKCk6IHN0cmluZyB7XHJcbiAgICAgICAgdGhpcy50b2tlbiA9IHRoaXMuX3V0aWxpdGllcy5nZXRMb2NhbFN0b3JhZ2UodGhpcy5fcGxhdGFmb3JtYS5Ub2tlbktleSk7XHJcbiAgICAgICAgXHJcbiAgICAgICAgaWYgKHRoaXMudG9rZW4gPT0gbnVsbCkge1xyXG4gICAgICAgICAgICB0aGlzLl9yb3V0ZXIubmF2aWdhdGVCeVVybCgnJyk7XHJcbiAgICAgICAgICAgIHJldHVybiAnJztcclxuXHJcbiAgICAgICAgfSBlbHNlIHJldHVybiAnQmVhcmVyICcgKyB0aGlzLnRva2VuO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXRIZWFkZXJEZWZhdWx0KCk6IEh0dHBIZWFkZXJzIHtcclxuICAgICAgICBsZXQgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycygpO1xyXG4gICAgICAgIGlmICh0aGlzLl9wbGF0YWZvcm1hLkNvbmZpZy5oZWFkZXJzICE9IG51bGwpXHJcbiAgICAgICAgICAgIHRoaXMuX3BsYXRhZm9ybWEuQ29uZmlnLmhlYWRlcnMuZm9yRWFjaChpdGVtID0+IGhlYWRlcnMgPSBoZWFkZXJzLnNldChpdGVtLmtleSwgaXRlbS52YWx1ZSkpOyAgIFxyXG4gICAgICAgIHJldHVybiBoZWFkZXJzO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXRIZWFkZXJUb2tlbigpOiBIdHRwSGVhZGVycyB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0SGVhZGVyRGVmYXVsdCgpLnNldCgnQXV0aG9yaXphdGlvbicsIHRoaXMuZ2V0VG9rZW4oKSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldEFQSVVybChjb250cm9sbGVyOiBhbnkpIHtcclxuICAgICAgICBsZXQgYXBpID0gJyc7XHJcblxyXG5cdFx0aWYgKHR5cGVvZihjb250cm9sbGVyKSA9PSAnbnVtYmVyJylcclxuXHRcdFx0YXBpID0gIHRoaXMuX2FwaUNvbnRyb2xsZXJbY29udHJvbGxlcl0udG9TdHJpbmcoKTtcclxuXHJcbiAgICAgICAgZWxzZSBhcGkgPSBjb250cm9sbGVyID09IG51bGwgPyAnJyA6IGNvbnRyb2xsZXIudG9TdHJpbmcoKTtcclxuICAgICAgICBcclxuXHRcdHJldHVybiB0aGlzLl9wbGF0YWZvcm1hLkNvbmZpZy53ZWJhcGlVcmwgKyAoYXBpLnJlcGxhY2UoJ18nLCAnLycpICsgJy8nKS50b0xvd2VyQ2FzZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXROb1Rva2VuKGNvbnRyb2xsZXI6IGFueSk6IE9ic2VydmFibGU8SW5mb0RhdGFBY2Nlc3NNb2RlbD47XHJcbiAgICBwdWJsaWMgZ2V0Tm9Ub2tlbihjb250cm9sbGVyOiBhbnksIG1ldGhvZD86IHN0cmluZyk6IE9ic2VydmFibGU8SW5mb0RhdGFBY2Nlc3NNb2RlbD47XHJcbiAgICBwdWJsaWMgZ2V0Tm9Ub2tlbihjb250cm9sbGVyOiBhbnksIG1ldGhvZD86IHN0cmluZywgcGFyYW0/OiBzdHJpbmcpOiBPYnNlcnZhYmxlPEluZm9EYXRhQWNjZXNzTW9kZWw+O1xyXG4gICAgcHVibGljIGdldE5vVG9rZW4oY29udHJvbGxlcjogYW55LCBtZXRob2Q/OiBzdHJpbmcsIHBhcmFtPzogc3RyaW5nKTogT2JzZXJ2YWJsZTxJbmZvRGF0YUFjY2Vzc01vZGVsPiB7XHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzLl9odHRwXHJcbiAgICAgICAgICAgIC5nZXQodGhpcy5nZXRBUElVcmwoY29udHJvbGxlcikgKyAobWV0aG9kIHx8ICcnKS50b0xvd2VyQ2FzZSgpICsgKHBhcmFtID09IG51bGwgPyAnJyA6ICgnPycgKyB0aGlzLl91dGlsaXRpZXMuanNvblRvQmFzZTY0KHBhcmFtLnJlcGxhY2UoL251bGwvZywgJycpLnJlcGxhY2UoL3VuZGVmaW5lZC9nLCAnJykpKSksIHsgaGVhZGVyczogdGhpcy5nZXRIZWFkZXJEZWZhdWx0KCksIHJlc3BvbnNlVHlwZTogJ3RleHQnIH0pXHJcbiAgICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICAgICAgbWFwKHIgPT4gbmV3IEluZm9EYXRhQWNjZXNzTW9kZWwocikpLFxyXG4gICAgICAgICAgICAgICAgY2F0Y2hFcnJvcigoZTogSHR0cEVycm9yUmVzcG9uc2UpID0+IHRoaXMuZXJyb3JIYW5kbGluZyhlKSlcclxuICAgICAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0KGNvbnRyb2xsZXI6IGFueSk6IE9ic2VydmFibGU8SW5mb0RhdGFBY2Nlc3NNb2RlbD47XHJcbiAgICBwdWJsaWMgZ2V0KGNvbnRyb2xsZXI6IGFueSwgbWV0aG9kPzogc3RyaW5nKTogT2JzZXJ2YWJsZTxJbmZvRGF0YUFjY2Vzc01vZGVsPjtcclxuICAgIHB1YmxpYyBnZXQoY29udHJvbGxlcjogYW55LCBtZXRob2Q/OiBzdHJpbmcsIHBhcmFtPzogc3RyaW5nKTogT2JzZXJ2YWJsZTxJbmZvRGF0YUFjY2Vzc01vZGVsPjtcclxuICAgIHB1YmxpYyBnZXQoY29udHJvbGxlcjogYW55LCBtZXRob2Q/OiBzdHJpbmcsIHBhcmFtPzogc3RyaW5nKTogT2JzZXJ2YWJsZTxJbmZvRGF0YUFjY2Vzc01vZGVsPiB7XHJcbiAgICAgICAgXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2h0dHBcclxuICAgICAgICAgICAgLmdldCh0aGlzLmdldEFQSVVybChjb250cm9sbGVyKSArIChtZXRob2QgfHwgJycpLnRvTG93ZXJDYXNlKCkgKyAocGFyYW0gPT0gbnVsbCA/ICcnIDogKCc/JyArIHRoaXMuX3V0aWxpdGllcy5qc29uVG9CYXNlNjQocGFyYW0ucmVwbGFjZSgvbnVsbC9nLCAnJykucmVwbGFjZSgvdW5kZWZpbmVkL2csICcnKSkpKSwgeyBoZWFkZXJzOiB0aGlzLmdldEhlYWRlclRva2VuKCksIHJlc3BvbnNlVHlwZTogJ3RleHQnIH0pXHJcbiAgICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICAgICAgbWFwKHIgPT4gbmV3IEluZm9EYXRhQWNjZXNzTW9kZWwocikpLFxyXG4gICAgICAgICAgICAgICAgY2F0Y2hFcnJvcigoZTogSHR0cEVycm9yUmVzcG9uc2UpID0+IHRoaXMuZXJyb3JIYW5kbGluZyhlKSlcclxuICAgICAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0QnlJZChjb250cm9sbGVyOiBhbnksIGlkOiBudW1iZXIpOiBPYnNlcnZhYmxlPEluZm9EYXRhQWNjZXNzTW9kZWw+IHtcclxuXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2h0dHBcclxuICAgICAgICAgICAgLmdldCh0aGlzLmdldEFQSVVybChjb250cm9sbGVyKSArIGlkLnRvU3RyaW5nKCksIHsgaGVhZGVyczogdGhpcy5nZXRIZWFkZXJUb2tlbigpLCByZXNwb25zZVR5cGU6ICd0ZXh0JyB9KVxyXG4gICAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgICAgIG1hcChyID0+IG5ldyBJbmZvRGF0YUFjY2Vzc01vZGVsKHIpKSxcclxuICAgICAgICAgICAgICAgIGNhdGNoRXJyb3IoKGU6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB0aGlzLmVycm9ySGFuZGxpbmcoZSkpXHJcbiAgICAgICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHBvc3ROb1Rva2VuKGNvbnRyb2xsZXI6IGFueSwgbW9kZWw6IGFueSk6IE9ic2VydmFibGU8SW5mb0RhdGFBY2Nlc3NNb2RlbD47XHJcbiAgICBwdWJsaWMgcG9zdE5vVG9rZW4oY29udHJvbGxlcjogYW55LCBtb2RlbDogYW55LCBtZXRob2Q/OiBzdHJpbmcpOiBPYnNlcnZhYmxlPEluZm9EYXRhQWNjZXNzTW9kZWw+O1xyXG4gICAgcHVibGljIHBvc3ROb1Rva2VuKGNvbnRyb2xsZXI6IGFueSwgbW9kZWw6IGFueSwgbWV0aG9kPzogc3RyaW5nKTogT2JzZXJ2YWJsZTxJbmZvRGF0YUFjY2Vzc01vZGVsPiB7XHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzLl9odHRwXHJcbiAgICAgICAgICAgIC5wb3N0KHRoaXMuZ2V0QVBJVXJsKGNvbnRyb2xsZXIpICsgKG1ldGhvZCB8fCAnJykudG9Mb3dlckNhc2UoKSwgdGhpcy5fdXRpbGl0aWVzLmpzb25Ub0Jhc2U2NChtb2RlbCksIHsgaGVhZGVyczogdGhpcy5nZXRIZWFkZXJEZWZhdWx0KCksIHJlc3BvbnNlVHlwZTogJ3RleHQnIH0pXHJcbiAgICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICAgICAgbWFwKHIgPT4gbmV3IEluZm9EYXRhQWNjZXNzTW9kZWwocikpLFxyXG4gICAgICAgICAgICAgICAgY2F0Y2hFcnJvcigoZTogSHR0cEVycm9yUmVzcG9uc2UpID0+IHRoaXMuZXJyb3JIYW5kbGluZyhlKSlcclxuICAgICAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgcG9zdChjb250cm9sbGVyOiBhbnksIG1vZGVsOiBhbnkpOiBPYnNlcnZhYmxlPEluZm9EYXRhQWNjZXNzTW9kZWw+O1xyXG4gICAgcHVibGljIHBvc3QoY29udHJvbGxlcjogYW55LCBtb2RlbDogYW55LCBtZXRob2Q/OiBzdHJpbmcpOiBPYnNlcnZhYmxlPEluZm9EYXRhQWNjZXNzTW9kZWw+O1xyXG4gICAgcHVibGljIHBvc3QoY29udHJvbGxlcjogYW55LCBtb2RlbDogYW55LCBtZXRob2Q/OiBzdHJpbmcpOiBPYnNlcnZhYmxlPEluZm9EYXRhQWNjZXNzTW9kZWw+IHtcclxuXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2h0dHBcclxuICAgICAgICAgICAgLnBvc3QodGhpcy5nZXRBUElVcmwoY29udHJvbGxlcikgKyAobWV0aG9kIHx8ICcnKS50b0xvd2VyQ2FzZSgpLCB0aGlzLl91dGlsaXRpZXMuanNvblRvQmFzZTY0KG1vZGVsKSwgeyBoZWFkZXJzOiB0aGlzLmdldEhlYWRlclRva2VuKCksIHJlc3BvbnNlVHlwZTogJ3RleHQnIH0pXHJcbiAgICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICAgICAgbWFwKHIgPT4gbmV3IEluZm9EYXRhQWNjZXNzTW9kZWwocikpLFxyXG4gICAgICAgICAgICAgICAgY2F0Y2hFcnJvcigoZTogSHR0cEVycm9yUmVzcG9uc2UpID0+IHRoaXMuZXJyb3JIYW5kbGluZyhlLCBmYWxzZSkpXHJcbiAgICAgICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGRlbGV0ZShjb250cm9sbGVyOiBhbnksIGlkOiBhbnkpOiBPYnNlcnZhYmxlPEluZm9EYXRhQWNjZXNzTW9kZWw+XHJcbiAgICBwdWJsaWMgZGVsZXRlKGNvbnRyb2xsZXI6IGFueSwgaWQ6IGFueSwgbWV0aG9kPzogc3RyaW5nKTogT2JzZXJ2YWJsZTxJbmZvRGF0YUFjY2Vzc01vZGVsPjtcclxuICAgIHB1YmxpYyBkZWxldGUoY29udHJvbGxlcjogYW55LCBpZDogYW55LCBtZXRob2Q/OiBzdHJpbmcpOiBPYnNlcnZhYmxlPEluZm9EYXRhQWNjZXNzTW9kZWw+IHtcclxuXHJcbiAgICAgICAgaWYgKGlkID09IHVuZGVmaW5lZCB8fCBpZCA9PSBudWxsKVxyXG4gICAgICAgICAgICBhbGVydCgnSWQgbsOjbyBpbmZvcm1hZG8nKTtcclxuXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2h0dHBcclxuICAgICAgICAgICAgLmRlbGV0ZSh0aGlzLmdldEFQSVVybChjb250cm9sbGVyKSArIChtZXRob2QgfHwgJycpLnRvTG93ZXJDYXNlKCkgKyBcIj9cIiArIHRoaXMuX3V0aWxpdGllcy5qc29uVG9CYXNlNjQoXCJpZD1cIiArIGlkLnRvU3RyaW5nKCkpLCB7IGhlYWRlcnM6IHRoaXMuZ2V0SGVhZGVyVG9rZW4oKSwgcmVzcG9uc2VUeXBlOiAndGV4dCcgfSlcclxuICAgICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgICAgICBtYXAociA9PiBuZXcgSW5mb0RhdGFBY2Nlc3NNb2RlbChyKSksXHJcbiAgICAgICAgICAgICAgICBjYXRjaEVycm9yKChlOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gdGhpcy5lcnJvckhhbmRsaW5nKGUpKVxyXG4gICAgICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBkZWxldGVCeU1vZGVsKGNvbnRyb2xsZXI6IGFueSwgbW9kZWw6IGFueSk6IE9ic2VydmFibGU8SW5mb0RhdGFBY2Nlc3NNb2RlbD5cclxuICAgIHB1YmxpYyBkZWxldGVCeU1vZGVsKGNvbnRyb2xsZXI6IGFueSwgbW9kZWw6IGFueSwgbWV0aG9kPzogc3RyaW5nKTogT2JzZXJ2YWJsZTxJbmZvRGF0YUFjY2Vzc01vZGVsPjtcclxuICAgIHB1YmxpYyBkZWxldGVCeU1vZGVsKGNvbnRyb2xsZXI6IGFueSwgbW9kZWw6IGFueSwgbWV0aG9kPzogc3RyaW5nKTogT2JzZXJ2YWJsZTxJbmZvRGF0YUFjY2Vzc01vZGVsPiB7XHJcblxyXG4gICAgICAgIGxldCBodHRwT3B0aW9ucyA9IHtcclxuICAgICAgICAgICAgaGVhZGVyczogdGhpcy5nZXRIZWFkZXJUb2tlbigpLFxyXG4gICAgICAgICAgICBib2R5OiBtb2RlbCwgXHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gdGhpcy5faHR0cFxyXG4gICAgICAgICAgICAuZGVsZXRlKHRoaXMuZ2V0QVBJVXJsKGNvbnRyb2xsZXIpICsgKG1ldGhvZCB8fCAnJykudG9Mb3dlckNhc2UoKSwgaHR0cE9wdGlvbnMpXHJcbiAgICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICAgICAgbWFwKHIgPT4gbmV3IEluZm9EYXRhQWNjZXNzTW9kZWwocikpLFxyXG4gICAgICAgICAgICAgICAgY2F0Y2hFcnJvcigoZTogSHR0cEVycm9yUmVzcG9uc2UpID0+IHRoaXMuZXJyb3JIYW5kbGluZyhlKSlcclxuICAgICAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgcmVxdWVzdChjb250cm9sbGVyOiBhbnksIG1vZGVsOiBhbnlbXSwgbWV0aG9kPzogc3RyaW5nKTogT2JzZXJ2YWJsZTxJbmZvRGF0YUFjY2Vzc01vZGVsPlxyXG4gICAgcHVibGljIHJlcXVlc3QoY29udHJvbGxlcjogYW55LCBtb2RlbDogYW55W10sIG1ldGhvZD86IHN0cmluZywgcGFyYW0/OiBzdHJpbmcpOiBPYnNlcnZhYmxlPEluZm9EYXRhQWNjZXNzTW9kZWw+O1xyXG4gICAgcHVibGljIHJlcXVlc3QoY29udHJvbGxlcjogYW55LCBtb2RlbDogYW55W10sIG1ldGhvZD86IHN0cmluZywgcGFyYW0/OiBzdHJpbmcpOiBPYnNlcnZhYmxlPEluZm9EYXRhQWNjZXNzTW9kZWw+IHtcclxuXHJcbiAgICAgICAgbGV0IGZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKCk7XHJcbiAgICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IG1vZGVsLmxlbmd0aDsgaW5kZXgrKylcclxuICAgICAgICAgICAgZm9ybURhdGEuYXBwZW5kKG1vZGVsW2luZGV4XS5uYW1lLCBtb2RlbFtpbmRleF0pO1xyXG5cclxuICAgICAgICByZXR1cm4gdGhpcy5faHR0cFxyXG4gICAgICAgICAgICAucmVxdWVzdCgnUE9TVCcsIHRoaXMuZ2V0QVBJVXJsKGNvbnRyb2xsZXIpICsgKG1ldGhvZCB8fCAnJykudG9Mb3dlckNhc2UoKSArIChwYXJhbSA9PSBudWxsID8gJycgOiAoJz8nICsgdGhpcy5fdXRpbGl0aWVzLmpzb25Ub0Jhc2U2NChwYXJhbSkpKSwgeyBoZWFkZXJzOiB0aGlzLmdldEhlYWRlclRva2VuKCksIGJvZHk6IGZvcm1EYXRhLCByZXNwb25zZVR5cGU6ICd0ZXh0JyB9KVxyXG4gICAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgICAgIG1hcChyID0+IG5ldyBJbmZvRGF0YUFjY2Vzc01vZGVsKHIpKSxcclxuICAgICAgICAgICAgICAgIGNhdGNoRXJyb3IoKGU6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB0aGlzLmVycm9ySGFuZGxpbmcoZSkpXHJcbiAgICAgICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBlcnJvckhhbmRsaW5nKGU6IEh0dHBFcnJvclJlc3BvbnNlLCByZWRpcmVjdDogYm9vbGVhbiA9IHRydWUpOiBPYnNlcnZhYmxlSW5wdXQ8SW5mb0RhdGFBY2Nlc3NNb2RlbD4ge1xyXG4gICAgICAgIGlmIChlLnN0YXR1cyA9PSA0MDEpIFxyXG4gICAgICAgICAgICBkb2N1bWVudC5sb2NhdGlvbi5ocmVmID0gJy8jL2xvZ2luJztcclxuICAgICAgICBlbHNlIGlmIChyZWRpcmVjdCkgXHJcbiAgICAgICAgICAgIGRvY3VtZW50LmxvY2F0aW9uLmhyZWYgPSAnLyMvNTAwJztcclxuXHJcbiAgICAgICAgbGV0IG1lc3NhZ2VzOiBzdHJpbmdbXSA9IG5ldyBBcnJheShlLm1lc3NhZ2UpO1xyXG4gICAgICAgIHJldHVybiBvZihuZXcgSW5mb0RhdGFBY2Nlc3NNb2RlbChudWxsLCBmYWxzZSwgbWVzc2FnZXMpKTtcclxuICAgIH1cclxufSJdfQ==
|
|
118
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvaW5mby1saWJyYXJ5L3NyYy9zZXJ2aWNlL2RhdGEuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekMsT0FBTyxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQXFCLE1BQU0sc0JBQXNCLENBQUM7QUFDbEYsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDakUsT0FBTyxFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqRCxPQUFPLEVBQWMsRUFBRSxFQUFtQixNQUFNLE1BQU0sQ0FBQztBQUN2RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7Ozs7OztBQUsvQyxNQUFNLE9BQU8sZUFBZTtJQUl4QixZQUFrRCxjQUFtQixFQUNqRCxLQUFpQixFQUNqQixPQUFlLEVBQ2YsV0FBOEIsRUFDOUIsVUFBcUI7UUFKUyxtQkFBYyxHQUFkLGNBQWMsQ0FBSztRQUNqRCxVQUFLLEdBQUwsS0FBSyxDQUFZO1FBQ2pCLFlBQU8sR0FBUCxPQUFPLENBQVE7UUFDZixnQkFBVyxHQUFYLFdBQVcsQ0FBbUI7UUFDOUIsZUFBVSxHQUFWLFVBQVUsQ0FBVztJQUFJLENBQUM7SUFFdkMsUUFBUTtRQUNYLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMs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QUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQ2xFLFVBQVUsQ0FBQyxDQUFDLENBQW9CLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FDOUQsQ0FBQztJQUNWLENBQUM7SUFFTyxhQUFhLENBQUMsQ0FBb0IsRUFBRSxXQUFvQixJQUFJO1FBQ2hFLElBQUksQ0FBQyxDQUFDLE1BQU0sSUFBSSxHQUFHO1lBQ2YsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEdBQUcsVUFBVSxDQUFDO2FBQ25DLElBQUksUUFBUTtZQUNiLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxHQUFHLFFBQVEsQ0FBQztRQUV0QyxJQUFJLFFBQVEsR0FBYSxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDOUMsT0FBTyxFQUFFLENBQUMsSUFBSSxtQkFBbUIsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUM7SUFDOUQsQ0FBQzs7aUdBOUpRLGVBQWUsY0FJSixvQkFBb0I7b0dBSi9CLGVBQWUsV0FBZixlQUFlLG1CQUZaLE1BQU07dUZBRVQsZUFBZTtjQUgzQixVQUFVO2VBQUM7Z0JBQ1IsVUFBVSxFQUFFLE1BQU07YUFDckI7O3NCQUtnQixNQUFNO3VCQUFDLG9CQUFvQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIEluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwSGVhZGVycywgSHR0cEVycm9yUmVzcG9uc2UgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IEluZm9EYXRhQWNjZXNzTW9kZWwgfSBmcm9tICcuLi9tb2RlbC9kYXRhLWFjY2Vzcy5tb2RlbCc7XHJcbmltcG9ydCB7IG1hcCwgY2F0Y2hFcnJvciB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YsIE9ic2VydmFibGVJbnB1dCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBBUElDT05UUk9MTEVSX0NPTkZJRyB9IGZyb20gJy4uL2dsb2JhbC1jb25maWcnO1xyXG5pbXBvcnQgeyBJbmZvUGxhdGZvcm1Nb2RlbCB9IGZyb20gJy4uL21vZGVsL3BsYXRmb3JtLm1vZGVsJztcclxuaW1wb3J0IHsgVXRpbGl0aWVzIH0gZnJvbSAnLi4vdXRpbHMvdXRpbGl0aWVzJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICAgIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgSW5mb0RhdGFTZXJ2aWNlIHtcclxuXHJcbiAgICBwcml2YXRlIHRva2VuOiBzdHJpbmc7XHJcblxyXG4gICAgY29uc3RydWN0b3IoQEluamVjdChBUElDT05UUk9MTEVSX0NPTkZJRykgcHJpdmF0ZSBfYXBpQ29udHJvbGxlcjogYW55LCBcclxuICAgICAgICAgICAgICAgIHByaXZhdGUgX2h0dHA6IEh0dHBDbGllbnQsIFxyXG4gICAgICAgICAgICAgICAgcHJpdmF0ZSBfcm91dGVyOiBSb3V0ZXIsIFxyXG4gICAgICAgICAgICAgICAgcHJpdmF0ZSBfcGxhdGFmb3JtYTogSW5mb1BsYXRmb3JtTW9kZWwsIFxyXG4gICAgICAgICAgICAgICAgcHJpdmF0ZSBfdXRpbGl0aWVzOiBVdGlsaXRpZXMpIHsgfVxyXG5cclxuICAgIHB1YmxpYyBnZXRUb2tlbigpOiBzdHJpbmcge1xyXG4gICAgICAgIHRoaXMudG9rZW4gPSB0aGlzLl91dGlsaXRpZXMuZ2V0TG9jYWxTdG9yYWdlKHRoaXMuX3BsYXRhZm9ybWEuVG9rZW5LZXkpO1xyXG4gICAgICAgIFxyXG4gICAgICAgIGlmICh0aGlzLnRva2VuID09IG51bGwpIHtcclxuICAgICAgICAgICAgdGhpcy5fcm91dGVyLm5hdmlnYXRlQnlVcmwoJycpO1xyXG4gICAgICAgICAgICByZXR1cm4gJyc7XHJcblxyXG4gICAgICAgIH0gZWxzZSByZXR1cm4gJ0JlYXJlciAnICsgdGhpcy50b2tlbjtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0SGVhZGVyRGVmYXVsdCgpOiBIdHRwSGVhZGVycyB7XHJcbiAgICAgICAgbGV0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoKTtcclxuICAgICAgICBpZiAodGhpcy5fcGxhdGFmb3JtYS5Db25maWcuaGVhZGVycyAhPSBudWxsKVxyXG4gICAgICAgICAgICB0aGlzLl9wbGF0YWZvcm1hLkNvbmZpZy5oZWFkZXJzLmZvckVhY2goaXRlbSA9PiBoZWFkZXJzID0gaGVhZGVycy5zZXQoaXRlbS5rZXksIGl0ZW0udmFsdWUpKTsgICBcclxuICAgICAgICByZXR1cm4gaGVhZGVycztcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0SGVhZGVyVG9rZW4oKTogSHR0cEhlYWRlcnMge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmdldEhlYWRlckRlZmF1bHQoKS5zZXQoJ0F1dGhvcml6YXRpb24nLCB0aGlzLmdldFRva2VuKCkpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXRBUElVcmwoY29udHJvbGxlcjogYW55KSB7XHJcbiAgICAgICAgbGV0IGFwaSA9ICcnO1xyXG5cclxuXHRcdGlmICh0eXBlb2YoY29udHJvbGxlcikgPT0gJ251bWJlcicpXHJcblx0XHRcdGFwaSA9ICB0aGlzLl9hcGlDb250cm9sbGVyW2NvbnRyb2xsZXJdLnRvU3RyaW5nKCk7XHJcblxyXG4gICAgICAgIGVsc2UgYXBpID0gY29udHJvbGxlciA9PSBudWxsID8gJycgOiBjb250cm9sbGVyLnRvU3RyaW5nKCk7XHJcbiAgICAgICAgXHJcblx0XHRyZXR1cm4gdGhpcy5fcGxhdGFmb3JtYS5Db25maWcud2ViYXBpVXJsICsgKGFwaS5yZXBsYWNlKCdfJywgJy8nKSArICcvJykudG9Mb3dlckNhc2UoKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0Tm9Ub2tlbihjb250cm9sbGVyOiBhbnkpOiBPYnNlcnZhYmxlPEluZm9EYXRhQWNjZXNzTW9kZWw+O1xyXG4gICAgcHVibGljIGdldE5vVG9rZW4oY29udHJvbGxlcjogYW55LCBtZXRob2Q/OiBzdHJpbmcpOiBPYnNlcnZhYmxlPEluZm9EYXRhQWNjZXNzTW9kZWw+O1xyXG4gICAgcHVibGljIGdldE5vVG9rZW4oY29udHJvbGxlcjogYW55LCBtZXRob2Q/OiBzdHJpbmcsIHBhcmFtPzogc3RyaW5nKTogT2JzZXJ2YWJsZTxJbmZvRGF0YUFjY2Vzc01vZGVsPjtcclxuICAgIHB1YmxpYyBnZXROb1Rva2VuKGNvbnRyb2xsZXI6IGFueSwgbWV0aG9kPzogc3RyaW5nLCBwYXJhbT86IHN0cmluZyk6IE9ic2VydmFibGU8SW5mb0RhdGFBY2Nlc3NNb2RlbD4ge1xyXG5cclxuICAgICAgICByZXR1cm4gdGhpcy5faHR0cFxyXG4gICAgICAgICAgICAuZ2V0KHRoaXMuZ2V0QVBJVXJsKGNvbnRyb2xsZXIpICsgKG1ldGhvZCB8fCAnJykudG9Mb3dlckNhc2UoKSArIChwYXJhbSA9PSBudWxsID8gJycgOiAoJz8nICsgdGhpcy5fdXRpbGl0aWVzLmpzb25Ub0Jhc2U2NChwYXJhbS5yZXBsYWNlKC9udWxsL2csICcnKS5yZXBsYWNlKC91bmRlZmluZWQvZywgJycpKSkpLCB7IGhlYWRlcnM6IHRoaXMuZ2V0SGVhZGVyRGVmYXVsdCgpLCByZXNwb25zZVR5cGU6ICd0ZXh0JyB9KVxyXG4gICAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgICAgIG1hcChyID0+IG5ldyBJbmZvRGF0YUFjY2Vzc01vZGVsKHRoaXMuX3V0aWxpdGllcy5iYXNlNjRUb0pzb24ocikpKSxcclxuICAgICAgICAgICAgICAgIGNhdGNoRXJyb3IoKGU6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB0aGlzLmVycm9ySGFuZGxpbmcoZSkpXHJcbiAgICAgICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldChjb250cm9sbGVyOiBhbnkpOiBPYnNlcnZhYmxlPEluZm9EYXRhQWNjZXNzTW9kZWw+O1xyXG4gICAgcHVibGljIGdldChjb250cm9sbGVyOiBhbnksIG1ldGhvZD86IHN0cmluZyk6IE9ic2VydmFibGU8SW5mb0RhdGFBY2Nlc3NNb2RlbD47XHJcbiAgICBwdWJsaWMgZ2V0KGNvbnRyb2xsZXI6IGFueSwgbWV0aG9kPzogc3RyaW5nLCBwYXJhbT86IHN0cmluZyk6IE9ic2VydmFibGU8SW5mb0RhdGFBY2Nlc3NNb2RlbD47XHJcbiAgICBwdWJsaWMgZ2V0KGNvbnRyb2xsZXI6IGFueSwgbWV0aG9kPzogc3RyaW5nLCBwYXJhbT86IHN0cmluZyk6IE9ic2VydmFibGU8SW5mb0RhdGFBY2Nlc3NNb2RlbD4ge1xyXG4gICAgICAgIFxyXG4gICAgICAgIHJldHVybiB0aGlzLl9odHRwXHJcbiAgICAgICAgICAgIC5nZXQodGhpcy5nZXRBUElVcmwoY29udHJvbGxlcikgKyAobWV0aG9kIHx8ICcnKS50b0xvd2VyQ2FzZSgpICsgKHBhcmFtID09IG51bGwgPyAnJyA6ICgnPycgKyB0aGlzLl91dGlsaXRpZXMuanNvblRvQmFzZTY0KHBhcmFtLnJlcGxhY2UoL251bGwvZywgJycpLnJlcGxhY2UoL3VuZGVmaW5lZC9nLCAnJykpKSksIHsgaGVhZGVyczogdGhpcy5nZXRIZWFkZXJUb2tlbigpLCByZXNwb25zZVR5cGU6ICd0ZXh0JyB9KVxyXG4gICAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgICAgIG1hcChyID0+IG5ldyBJbmZvRGF0YUFjY2Vzc01vZGVsKHRoaXMuX3V0aWxpdGllcy5iYXNlNjRUb0pzb24ocikpKSxcclxuICAgICAgICAgICAgICAgIGNhdGNoRXJyb3IoKGU6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB0aGlzLmVycm9ySGFuZGxpbmcoZSkpXHJcbiAgICAgICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldEJ5SWQoY29udHJvbGxlcjogYW55LCBpZDogbnVtYmVyKTogT2JzZXJ2YWJsZTxJbmZvRGF0YUFjY2Vzc01vZGVsPiB7XHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzLl9odHRwXHJcbiAgICAgICAgICAgIC5nZXQodGhpcy5nZXRBUElVcmwoY29udHJvbGxlcikgKyBpZC50b1N0cmluZygpLCB7IGhlYWRlcnM6IHRoaXMuZ2V0SGVhZGVyVG9rZW4oKSwgcmVzcG9uc2VUeXBlOiAndGV4dCcgfSlcclxuICAgICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgICAgICBtYXAociA9PiBuZXcgSW5mb0RhdGFBY2Nlc3NNb2RlbCh0aGlzLl91dGlsaXRpZXMuYmFzZTY0VG9Kc29uKHIpKSksXHJcbiAgICAgICAgICAgICAgICBjYXRjaEVycm9yKChlOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gdGhpcy5lcnJvckhhbmRsaW5nKGUpKVxyXG4gICAgICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBwb3N0Tm9Ub2tlbihjb250cm9sbGVyOiBhbnksIG1vZGVsOiBhbnkpOiBPYnNlcnZhYmxlPEluZm9EYXRhQWNjZXNzTW9kZWw+O1xyXG4gICAgcHVibGljIHBvc3ROb1Rva2VuKGNvbnRyb2xsZXI6IGFueSwgbW9kZWw6IGFueSwgbWV0aG9kPzogc3RyaW5nKTogT2JzZXJ2YWJsZTxJbmZvRGF0YUFjY2Vzc01vZGVsPjtcclxuICAgIHB1YmxpYyBwb3N0Tm9Ub2tlbihjb250cm9sbGVyOiBhbnksIG1vZGVsOiBhbnksIG1ldGhvZD86IHN0cmluZyk6IE9ic2VydmFibGU8SW5mb0RhdGFBY2Nlc3NNb2RlbD4ge1xyXG5cclxuICAgICAgICByZXR1cm4gdGhpcy5faHR0cFxyXG4gICAgICAgICAgICAucG9zdCh0aGlzLmdldEFQSVVybChjb250cm9sbGVyKSArIChtZXRob2QgfHwgJycpLnRvTG93ZXJDYXNlKCksIHRoaXMuX3V0aWxpdGllcy5qc29uVG9CYXNlNjQobW9kZWwpLCB7IGhlYWRlcnM6IHRoaXMuZ2V0SGVhZGVyRGVmYXVsdCgpLCByZXNwb25zZVR5cGU6ICd0ZXh0JyB9KVxyXG4gICAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgICAgIG1hcChyID0+IG5ldyBJbmZvRGF0YUFjY2Vzc01vZGVsKHRoaXMuX3V0aWxpdGllcy5iYXNlNjRUb0pzb24ocikpKSxcclxuICAgICAgICAgICAgICAgIGNhdGNoRXJyb3IoKGU6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB0aGlzLmVycm9ySGFuZGxpbmcoZSkpXHJcbiAgICAgICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHBvc3QoY29udHJvbGxlcjogYW55LCBtb2RlbDogYW55KTogT2JzZXJ2YWJsZTxJbmZvRGF0YUFjY2Vzc01vZGVsPjtcclxuICAgIHB1YmxpYyBwb3N0KGNvbnRyb2xsZXI6IGFueSwgbW9kZWw6IGFueSwgbWV0aG9kPzogc3RyaW5nKTogT2JzZXJ2YWJsZTxJbmZvRGF0YUFjY2Vzc01vZGVsPjtcclxuICAgIHB1YmxpYyBwb3N0KGNvbnRyb2xsZXI6IGFueSwgbW9kZWw6IGFueSwgbWV0aG9kPzogc3RyaW5nKTogT2JzZXJ2YWJsZTxJbmZvRGF0YUFjY2Vzc01vZGVsPiB7XHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzLl9odHRwXHJcbiAgICAgICAgICAgIC5wb3N0KHRoaXMuZ2V0QVBJVXJsKGNvbnRyb2xsZXIpICsgKG1ldGhvZCB8fCAnJykudG9Mb3dlckNhc2UoKSwgdGhpcy5fdXRpbGl0aWVzLmpzb25Ub0Jhc2U2NChtb2RlbCksIHsgaGVhZGVyczogdGhpcy5nZXRIZWFkZXJUb2tlbigpLCByZXNwb25zZVR5cGU6ICd0ZXh0JyB9KVxyXG4gICAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgICAgIG1hcChyID0+IG5ldyBJbmZvRGF0YUFjY2Vzc01vZGVsKHRoaXMuX3V0aWxpdGllcy5iYXNlNjRUb0pzb24ocikpKSxcclxuICAgICAgICAgICAgICAgIGNhdGNoRXJyb3IoKGU6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB0aGlzLmVycm9ySGFuZGxpbmcoZSwgZmFsc2UpKVxyXG4gICAgICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBkZWxldGUoY29udHJvbGxlcjogYW55LCBpZDogYW55KTogT2JzZXJ2YWJsZTxJbmZvRGF0YUFjY2Vzc01vZGVsPlxyXG4gICAgcHVibGljIGRlbGV0ZShjb250cm9sbGVyOiBhbnksIGlkOiBhbnksIG1ldGhvZD86IHN0cmluZyk6IE9ic2VydmFibGU8SW5mb0RhdGFBY2Nlc3NNb2RlbD47XHJcbiAgICBwdWJsaWMgZGVsZXRlKGNvbnRyb2xsZXI6IGFueSwgaWQ6IGFueSwgbWV0aG9kPzogc3RyaW5nKTogT2JzZXJ2YWJsZTxJbmZvRGF0YUFjY2Vzc01vZGVsPiB7XHJcblxyXG4gICAgICAgIGlmIChpZCA9PSB1bmRlZmluZWQgfHwgaWQgPT0gbnVsbClcclxuICAgICAgICAgICAgYWxlcnQoJ0lkIG7Do28gaW5mb3JtYWRvJyk7XHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzLl9odHRwXHJcbiAgICAgICAgICAgIC5kZWxldGUodGhpcy5nZXRBUElVcmwoY29udHJvbGxlcikgKyAobWV0aG9kIHx8ICcnKS50b0xvd2VyQ2FzZSgpICsgXCI/XCIgKyB0aGlzLl91dGlsaXRpZXMuanNvblRvQmFzZTY0KFwiaWQ9XCIgKyBpZC50b1N0cmluZygpKSwgeyBoZWFkZXJzOiB0aGlzLmdldEhlYWRlclRva2VuKCksIHJlc3BvbnNlVHlwZTogJ3RleHQnIH0pXHJcbiAgICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICAgICAgbWFwKHIgPT4gbmV3IEluZm9EYXRhQWNjZXNzTW9kZWwodGhpcy5fdXRpbGl0aWVzLmJhc2U2NFRvSnNvbihyKSkpLFxyXG4gICAgICAgICAgICAgICAgY2F0Y2hFcnJvcigoZTogSHR0cEVycm9yUmVzcG9uc2UpID0+IHRoaXMuZXJyb3JIYW5kbGluZyhlKSlcclxuICAgICAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZGVsZXRlQnlNb2RlbChjb250cm9sbGVyOiBhbnksIG1vZGVsOiBhbnkpOiBPYnNlcnZhYmxlPEluZm9EYXRhQWNjZXNzTW9kZWw+XHJcbiAgICBwdWJsaWMgZGVsZXRlQnlNb2RlbChjb250cm9sbGVyOiBhbnksIG1vZGVsOiBhbnksIG1ldGhvZD86IHN0cmluZyk6IE9ic2VydmFibGU8SW5mb0RhdGFBY2Nlc3NNb2RlbD47XHJcbiAgICBwdWJsaWMgZGVsZXRlQnlNb2RlbChjb250cm9sbGVyOiBhbnksIG1vZGVsOiBhbnksIG1ldGhvZD86IHN0cmluZyk6IE9ic2VydmFibGU8SW5mb0RhdGFBY2Nlc3NNb2RlbD4ge1xyXG5cclxuICAgICAgICBsZXQgaHR0cE9wdGlvbnMgPSB7XHJcbiAgICAgICAgICAgIGhlYWRlcnM6IHRoaXMuZ2V0SGVhZGVyVG9rZW4oKSxcclxuICAgICAgICAgICAgYm9keTogdGhpcy5fdXRpbGl0aWVzLmpzb25Ub0Jhc2U2NChtb2RlbCksIFxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2h0dHBcclxuICAgICAgICAgICAgLmRlbGV0ZSh0aGlzLmdldEFQSVVybChjb250cm9sbGVyKSArIChtZXRob2QgfHwgJycpLnRvTG93ZXJDYXNlKCksIGh0dHBPcHRpb25zKVxyXG4gICAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgICAgIG1hcChyID0+IG5ldyBJbmZvRGF0YUFjY2Vzc01vZGVsKHRoaXMuX3V0aWxpdGllcy5iYXNlNjRUb0pzb24ocikpKSxcclxuICAgICAgICAgICAgICAgIGNhdGNoRXJyb3IoKGU6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB0aGlzLmVycm9ySGFuZGxpbmcoZSkpXHJcbiAgICAgICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHJlcXVlc3QoY29udHJvbGxlcjogYW55LCBtb2RlbDogYW55W10sIG1ldGhvZD86IHN0cmluZyk6IE9ic2VydmFibGU8SW5mb0RhdGFBY2Nlc3NNb2RlbD5cclxuICAgIHB1YmxpYyByZXF1ZXN0KGNvbnRyb2xsZXI6IGFueSwgbW9kZWw6IGFueVtdLCBtZXRob2Q/OiBzdHJpbmcsIHBhcmFtPzogc3RyaW5nKTogT2JzZXJ2YWJsZTxJbmZvRGF0YUFjY2Vzc01vZGVsPjtcclxuICAgIHB1YmxpYyByZXF1ZXN0KGNvbnRyb2xsZXI6IGFueSwgbW9kZWw6IGFueVtdLCBtZXRob2Q/OiBzdHJpbmcsIHBhcmFtPzogc3RyaW5nKTogT2JzZXJ2YWJsZTxJbmZvRGF0YUFjY2Vzc01vZGVsPiB7XHJcblxyXG4gICAgICAgIGxldCBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xyXG4gICAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBtb2RlbC5sZW5ndGg7IGluZGV4KyspXHJcbiAgICAgICAgICAgIGZvcm1EYXRhLmFwcGVuZChtb2RlbFtpbmRleF0ubmFtZSwgbW9kZWxbaW5kZXhdKTtcclxuXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2h0dHBcclxuICAgICAgICAgICAgLnJlcXVlc3QoJ1BPU1QnLCB0aGlzLmdldEFQSVVybChjb250cm9sbGVyKSArIChtZXRob2QgfHwgJycpLnRvTG93ZXJDYXNlKCkgKyAocGFyYW0gPT0gbnVsbCA/ICcnIDogKCc/JyArIHRoaXMuX3V0aWxpdGllcy5qc29uVG9CYXNlNjQocGFyYW0pKSksIHsgaGVhZGVyczogdGhpcy5nZXRIZWFkZXJUb2tlbigpLCBib2R5OiBmb3JtRGF0YSwgcmVzcG9uc2VUeXBlOiAndGV4dCcgfSlcclxuICAgICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgICAgICBtYXAociA9PiBuZXcgSW5mb0RhdGFBY2Nlc3NNb2RlbCh0aGlzLl91dGlsaXRpZXMuYmFzZTY0VG9Kc29uKHIpKSksXHJcbiAgICAgICAgICAgICAgICBjYXRjaEVycm9yKChlOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gdGhpcy5lcnJvckhhbmRsaW5nKGUpKVxyXG4gICAgICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgZXJyb3JIYW5kbGluZyhlOiBIdHRwRXJyb3JSZXNwb25zZSwgcmVkaXJlY3Q6IGJvb2xlYW4gPSB0cnVlKTogT2JzZXJ2YWJsZUlucHV0PEluZm9EYXRhQWNjZXNzTW9kZWw+IHtcclxuICAgICAgICBpZiAoZS5zdGF0dXMgPT0gNDAxKSBcclxuICAgICAgICAgICAgZG9jdW1lbnQubG9jYXRpb24uaHJlZiA9ICcvIy9sb2dpbic7XHJcbiAgICAgICAgZWxzZSBpZiAocmVkaXJlY3QpIFxyXG4gICAgICAgICAgICBkb2N1bWVudC5sb2NhdGlvbi5ocmVmID0gJy8jLzUwMCc7XHJcblxyXG4gICAgICAgIGxldCBtZXNzYWdlczogc3RyaW5nW10gPSBuZXcgQXJyYXkoZS5tZXNzYWdlKTtcclxuICAgICAgICByZXR1cm4gb2YobmV3IEluZm9EYXRhQWNjZXNzTW9kZWwobnVsbCwgZmFsc2UsIG1lc3NhZ2VzKSk7XHJcbiAgICB9XHJcbn0iXX0=
|
|
@@ -25,10 +25,10 @@ export class Utilities {
|
|
|
25
25
|
return bytes;
|
|
26
26
|
}
|
|
27
27
|
jsonToBase64(object) {
|
|
28
|
-
return btoa(JSON.stringify(object));
|
|
28
|
+
return btoa(unescape(encodeURIComponent(JSON.stringify(object))));
|
|
29
29
|
}
|
|
30
30
|
base64ToJson(value) {
|
|
31
|
-
return JSON.parse(atob(value));
|
|
31
|
+
return JSON.parse(decodeURIComponent(escape(atob(value))));
|
|
32
32
|
}
|
|
33
33
|
openOrDownload(title, blob) {
|
|
34
34
|
let fileURL = URL.createObjectURL(blob);
|
|
@@ -176,4 +176,4 @@ export class StaticUtils {
|
|
|
176
176
|
return Array.from(cpf).map((c, i) => Number(c) * (fator - i)).reduce((a, b) => a + b, 0);
|
|
177
177
|
}
|
|
178
178
|
}
|
|
179
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbGl0aWVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvaW5mby1saWJyYXJ5L3NyYy91dGlscy91dGlsaXRpZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEtBQUssUUFBUSxNQUFNLFdBQVcsQ0FBQzs7QUFHdEMsTUFBTSxPQUFPLFNBQVM7SUFDbEIsT0FBTztRQUNILE9BQU8sc0NBQXNDLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxVQUFTLENBQUM7WUFDckUsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBRSxDQUFDLEdBQUcsR0FBRyxHQUFHLEdBQUcsQ0FBRSxDQUFDO1lBQ3hFLE9BQU8sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUMxQixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxZQUFZO1FBQ1IsT0FBTyxzQ0FBc0MsQ0FBQztJQUNsRCxDQUFDO0lBRUQsTUFBTSxDQUFDLEtBQUs7UUFDUixPQUFPLENBQUMsRUFBRSxHQUFHLEtBQUssQ0FBQyxDQUFDLEtBQUssQ0FBQywrRUFBK0UsQ0FBQyxLQUFLLElBQUksQ0FBQztJQUN4SCxDQUFDO0lBRUQsbUJBQW1CLENBQUMsTUFBTTtRQUN0QixJQUFJLFlBQVksR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3ZDLElBQUksU0FBUyxHQUFHLFlBQVksQ0FBQyxNQUFNLENBQUM7UUFDcEMsSUFBSSxLQUFLLEdBQUcsSUFBSSxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDdEMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFD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SyxHQUFHLEdBQUcsQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUN4QyxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUM3RixDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCAqIGFzIENyeXB0b0pTIGZyb20gJ2NyeXB0by1qcyc7XHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBVdGlsaXRpZXMge1xyXG4gICAgZ2V0R3VpZCgpIDogc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gJ3h4eHh4eHh4LXh4eHgtNHh4eC15eHh4LXh4eHh4eHh4eHh4eCcucmVwbGFjZSgvW3h5XS9nLCBmdW5jdGlvbihjKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHIgPSBNYXRoLnJhbmRvbSgpICogMTYgfCAwLCB2ID0gYyA9PT0gJ3gnID8gciA6ICggciAmIDB4MyB8IDB4OCApO1xyXG4gICAgICAgICAgICByZXR1cm4gdi50b1N0cmluZygxNik7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBcclxuICAgIGdldEd1aWRFbXB0eSgpIDogc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gJzAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMCc7XHJcbiAgICB9XHJcblxyXG4gICAgaXNHdWlkKHZhbHVlKSA6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiAoXCJcIiArIHZhbHVlKS5tYXRjaCgnXlswLTlhLWZBLUZdezh9LVswLTlhLWZBLUZdezR9LVswLTlhLWZBLUZdezR9LVswLTlhLWZBLUZdezR9LVswLTlhLWZBLUZdezEyfSQnKSAhPT0gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICBiYXNlNjRUb0FycmF5QnVmZmVyKGJhc2U2NCk6IGFueSB7XHJcbiAgICAgICAgdmFyIGJpbmFyeVN0cmluZyA9IHdpbmRvdy5hdG9iKGJhc2U2NCk7XHJcbiAgICAgICAgdmFyIGJpbmFyeUxlbiA9IGJpbmFyeVN0cmluZy5sZW5ndGg7XHJcbiAgICAgICAgdmFyIGJ5dGVzID0gbmV3IFVpbnQ4QXJyYXkoYmluYXJ5TGVuKTtcclxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGJpbmFyeUxlbjsgaSsrKSB7XHJcbiAgICAgICAgICAgdmFyIGFzY2lpID0gYmluYXJ5U3RyaW5nLmNoYXJDb2RlQXQoaSk7XHJcbiAgICAgICAgICAgYnl0ZXNbaV0gPSBhc2NpaTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGJ5dGVzO1xyXG4gICAgfVxyXG5cclxuICAgIGpzb25Ub0Jhc2U2NChvYmplY3QpOiBhbnkge1xyXG4gICAgICAgIHJldHVybiBidG9hKEpTT04uc3RyaW5naWZ5KG9iamVjdCkpO1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICBiYXNlNjRUb0pzb24odmFsdWUpIHtcclxuICAgICAgICByZXR1cm4gSlNPTi5wYXJzZShhdG9iKHZhbHVlKSk7XHJcbiAgICB9XHJcblxyXG4gICAgb3Blbk9yRG93bmxvYWQodGl0bGUsIGJsb2IpIHtcclxuICAgICAgICBsZXQgZmlsZVVSTCA9IFVSTC5jcmVhdGVPYmplY3RVUkwoYmxvYik7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgIGlmICh0aXRsZS5pbmRleE9mKFwicGRmXCIpID4gLTEpXHJcbiAgICAgICAgICAgIHdpbmRvdy5vcGVuKGZpbGVVUkwsIHRpdGxlKTtcclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgbGV0IGVsZW1lbnRBOiBIVE1MQW5jaG9yRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKSBhcyBIVE1MQW5jaG9yRWxlbWVudDtcclxuICAgICAgICAgICAgZWxlbWVudEEuaHJlZiA9IGZpbGVVUkw7XHJcbiAgICAgICAgICAgIGVsZW1lbnRBLmRvd25sb2FkID0gdGl0bGU7XHJcbiAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZWxlbWVudEEpO1xyXG4gICAgICAgICAgICBlbGVtZW50QS5jbGljaygpOyAgICAgICAgXHJcbiAgICAgICAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoZWxlbWVudEEpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZW1vdmVyQWNlbnRvcyh2YWw6IHN0cmluZykgOiBzdHJpbmcge1xyXG4gICAgICAgIGlmICh2YWwgPT0gbnVsbClcclxuICAgICAgICAgICAgcmV0dXJuICcnO1xyXG4gICAgICAgIHZhciBub3JtYWxpemVGdW5jdGlvbiA9IFN0cmluZy5wcm90b3R5cGUubm9ybWFsaXplID8gKHN0cikgPT4gc3RyLm5vcm1hbGl6ZSgnTkZEJykgOiAoc3RyKSA9PiBzdHI7XHJcbiAgICAgICAgcmV0dXJuIG5vcm1hbGl6ZUZ1bmN0aW9uKHZhbCkucmVwbGFjZSgvW1xcdTAzMDAtXFx1MDM2Zl0vZywgXCJcIilcclxuICAgIH1cclxuXHJcbiAgICBnZXRGb3JtYXRvcygpOiBhbnlbXSB7XHJcbiAgICAgICAgcmV0dXJuIFsgeyBJZDogXCJFWENFTFwiLCBOb21lOiBcIkV4Y2VsXCIsIE1pbWVUeXBlOiBcImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbFwiLCBFeHRlbnNhbzogXCJ4bHNcIiB9LFxyXG4gICAgICAgICAgICAgICAgIHsgSWQ6IFwiUERGXCIsIE5vbWU6IFwiUERGXCIsIE1pbWVUeXBlOiBcImFwcGxpY2F0aW9uL3BkZlwiLCBFeHRlbnNhbzogXCJwZGZcIiB9IF07XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0Rm9ybWF0b3NFeGNlbCgpOiBhbnlbXSB7XHJcbiAgICAgICAgcmV0dXJuIFsgeyBJZDogJ1BQJywgTm9tZTogJ0V4Y2VsIFBvcnR1Z3XDqnMgY29tIFNlcGFyYWRvciBEZWNpbWFsIFsuXScgfSxcclxuICAgICAgICAgICAgICAgICB7IElkOiAnUFYnLCBOb21lOiAnRXhjZWwgUG9ydHVndcOqcyBjb20gU2VwYXJhZG9yIERlY2ltYWwgWyxdJyB9LFxyXG4gICAgICAgICAgICAgICAgIHsgSWQ6ICdJUCcsIE5vbWU6ICdFeGNlbCBJbmdsw6pzIGNvbSBTZXBhcmFkb3IgRGVjaW1hbCBbLl0nIH0sXHJcbiAgICAgICAgICAgICAgICAgeyBJZDogJ0lWJywgTm9tZTogJ0V4Y2VsIEluZ2zDqnMgY29tIFNlcGFyYWRvciBEZWNpbWFsIFssXScgfSBdO1xyXG4gICAgfVxyXG5cclxuICAgIGdldFN0YXR1cygpOiBhbnlbXSB7XHJcbiAgICAgICAgcmV0dXJuIFsgeyBJZDogXCJBXCIsIE5vbWU6IFwiQXRpdm9cIiB9LFxyXG4gICAgICAgICAgICAgICAgIHsgSWQ6IFwiUFwiLCBOb21lOiBcIlBlbmRlbnRlXCIgfSBdO1xyXG4gICAgfVxyXG5cclxuICAgIGdldFN0YXR1c0NvbXBsZXRvKCk6IGFueVtdIHtcclxuICAgICAgICByZXR1cm4gWyB7IElkOiBcIkNcIiwgTm9tZTogXCJDYWRhc3RyYWRvXCIsIFNlbGVjaW9uYWRvOiB0cnVlIH0sXHJcbiAgICAgICAgICAgICAgICAgeyBJZDogXCJGXCIsIE5vbWU6IFwiRmVpdG9cIiwgU2VsZWNpb25hZG86IGZhbHNlIH0sXHJcbiAgICAgICAgICAgICAgICAgeyBJZDogXCJPXCIsIE5vbWU6IFwiQ29uZmVyaWRvXCIsIFNlbGVjaW9uYWRvOiB0cnVlIH0sXHJcbiAgICAgICAgICAgICAgICAgeyBJZDogXCJSXCIsIE5vbWU6IFwiUmVqZWl0YWRvXCIsIFNlbGVjaW9uYWRvOiBmYWxzZSB9LFxyXG4gICAgICAgICAgICAgICAgIHsgSWQ6IFwiSVwiLCBOb21lOiBcIkluYXRpdm9cIiwgU2VsZWNpb25hZG86IGZhbHNlIH0gXTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRTdGF0dXNQcm9jZXNzYW1lbnRvKCk6IGFueVtdIHtcclxuICAgICAgICByZXR1cm4gWyB7IElkOiBcIkFcIiwgTm9tZTogXCJBZ3VhcmRhbmRvUHJvY2Vzc2FtZW50b1wiIH0sXHJcbiAgICAgICAgICAgICAgICAgeyBJZDogXCJFXCIsIE5vbWU6IFwiRW1Qcm9jZXNzYW1lbnRvXCIgfSxcclxuICAgICAgICAgICAgICAgICB7IElkOiBcIlBcIiwgTm9tZTogXCJQcm9jZXNzYWRvXCIgfSxcclxuICAgICAgICAgICAgICAgICB7IElkOiBcIklcIiwgTm9tZTogXCJJbmF0aXZvXCIgfSxcclxuICAgICAgICAgICAgICAgICB7IElkOiBcIlpcIiwgTm9tZTogXCJFcnJvXCIgfSBdO1xyXG4gICAgfVxyXG5cclxuICAgIGdldEZvcm1hdG9JZGlvbWFzKCk6IGFueVtdIHtcclxuICAgICAgICByZXR1cm4gWyB7IElkOiBcImVuXCIsIE5vbWU6IFwiRW5nbGlzaFwiIH0sXHJcbiAgICAgICAgICAgICAgICAgeyBJZDogXCJwdC1CUlwiLCBOb21lOiBcIlBvcnR1Z3XDqnNcIiB9IF07XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0R2VuZXJvcygpOiBhbnlbXSB7XHJcbiAgICAgICAgcmV0dXJuIFsgeyBJZDogJ00nLCBOb21lOiAnTWFzY3VsaW5vJyB9LFxyXG4gICAgICAgICAgICAgICAgIHsgSWQ6ICdGJywgTm9tZTogJ0ZlbWluaW5vJyB9IF07XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0VGlwb3NFdmlkZW5jaWEoKTogYW55W10ge1xyXG4gICAgICAgIHJldHVybiBbIHsgSWQ6IDEsIE5vbWU6ICdUZWxlZm9uZSd9LFxyXG4gICAgICAgICAgICAgICAgIHsgSWQ6IDIsIE5vbWU6ICdFbWFpbCd9LFxyXG4gICAgICAgICAgICAgICAgIHtJZDogMywgTm9tZTogJ0RvY3VtZW50byd9IF07XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0T3JkZW5zKCk6IGFueVtdIHtcclxuICAgICAgICByZXR1cm4gWyB7SWQ6IFwibm9tZS1hc2NcIiwgTm9tZTogXCJOb21lQ3Jlc2NlbnRlXCJ9LFxyXG4gICAgICAgICAgICAgICAgIHtJZDogXCJub21lLWRlc2NcIiwgTm9tZTogXCJOb21lRGVjcmVzY2VudGVcIn0sXHJcbiAgICAgICAgICAgICAgICAge0lkOiBcInZhbG9yLWFzY1wiLCBOb21lOiBcIlZhbG9yQ3Jlc2NlbnRlXCJ9LFxyXG4gICAgICAgICAgICAgICAgIHtJZDogXCJ2YWxvci1kZXNjXCIsIE5vbWU6IFwiVmFsb3JEZWNyZXNjZW50ZVwifSBdO1xyXG4gICAgfVxyXG5cclxuICAgIHZhbGlkYXJFbWFpbChmb3JtLCB2YWx1ZSwgY29udHJvbCkge1xyXG4gICAgICAgIGlmICghdmFsdWUpXHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICBcclxuICAgICAgICBsZXQgcGF0dGVybiA9IC9eKFthLXpBLVowLTlfXFwtXFwuXSspQChbYS16QS1aMC05X1xcLVxcLl0rKVxcLihbYS16QS1aXXsyLDV9KSQvO1xyXG4gICAgICAgIGxldCBlbWFpbHM6IHN0cmluZ1tdID0gdmFsdWUuc3BsaXQoJzsnKTtcclxuICAgICAgICBsZXQgaW52YWxpZG8gPSBlbWFpbHMuc29tZShlbWFpbCA9PiBlbWFpbCAmJiAhcGF0dGVybi50ZXN0KGVtYWlsLnRyaW0oKSkpO1xyXG5cclxuICAgICAgICBpZiAoaW52YWxpZG8pXHJcbiAgICAgICAgICAgIGZvcm0uZm9ybS5jb250cm9sc1tjb250cm9sXS5zZXRFcnJvcnMoIHsgJ2ludmFsaWQnOiB0cnVlIH0gKTtcclxuICAgIH1cclxuXHJcbiAgICBzZXRMb2NhbFN0b3JhZ2Uoa2V5OiBzdHJpbmcsIHZhbHVlOiBhbnkpIHtcclxuICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShrZXksIHRoaXMuY3JpcHRvZ3JhZmFyKHZhbHVlKSk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0TG9jYWxTdG9yYWdlKGtleTogc3RyaW5nKTogYW55IHtcclxuICAgICAgICB2YXIgZGF0YSA9IHRoaXMuZGVzY3JpcHRvZ3JhZmFyKGxvY2FsU3RvcmFnZS5nZXRJdGVtKGtleSkpO1xyXG4gICAgICAgIGlmIChkYXRhID09IG51bGwgfHwgZGF0YSA9PSAnJykgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgcmV0dXJuIGRhdGE7XHJcbiAgICB9XHJcblxyXG4gICAgaXNJRSgpIHtcclxuICAgICAgICB2YXIgdXNlckFnZW50ID0gbmF2aWdhdG9yLnVzZXJBZ2VudDtcclxuICAgICAgICByZXR1cm4gdXNlckFnZW50LmluZGV4T2YoXCJNU0lFIFwiKSA+IC0xIHx8IHVzZXJBZ2VudC5pbmRleE9mKFwiVHJpZGVudC9cIikgPiAtMTtcclxuICAgIH1cclxuXHJcbiAgICByZXRvcm5hVGV4dG8odGV4dG8pIHtcclxuICAgICAgICB2YXIgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKVxyXG4gICAgICAgIGRpdi5pbm5lckhUTUwgPSB0ZXh0bztcclxuICAgICAgICByZXR1cm4gZGl2LmlubmVyVGV4dCB8fCBkaXYudGV4dENvbnRlbnQ7XHJcbiAgICB9XHJcblxyXG4gICAgY3JpcHRvZ3JhZmFyKHRleHRvKSB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgcmV0dXJuIENyeXB0b0pTLkFFUy5lbmNyeXB0KHRleHRvLCBcIkdLeEx0UWcyYXRcIikudG9TdHJpbmcoKTtcclxuICAgICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIFxyXG4gICAgZGVzY3JpcHRvZ3JhZmFyKHRleHRvKSB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgcmV0dXJuIENyeXB0b0pTLkFFUy5kZWNyeXB0KHRleHRvLCBcIkdLeEx0UWcyYXRcIikudG9TdHJpbmcoQ3J5cHRvSlMuZW5jLlV0ZjgpO1xyXG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIFxyXG59XHJcblxyXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgU3RhdGljVXRpbHMge1xyXG4gICAgXHJcbiAgICBzdGF0aWMgdmFsaWRhckNucGooY25wajogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICAgICAgY29uc3QgY25wak9yaWdpbmFsID0gKGNucGogfHwgJycpO1xyXG4gICAgICAgIGNucGogPSBjbnBqT3JpZ2luYWwudG9VcHBlckNhc2UoKS5zbGljZSgwLCAxMik7XHJcbiAgICAgICAgY25waiA9IGNucGogKyB0aGlzLmdldERpZ2l0byh0aGlzLmdldFNvbWFDbnBqKGNucGopKTtcclxuICAgICAgICBjbnBqID0gY25waiArIHRoaXMuZ2V0RGlnaXRvKHRoaXMuZ2V0U29tYUNucGooY25waikpO1xyXG4gICAgXHJcbiAgICAgICAgcmV0dXJuIGNucGpPcmlnaW5hbCA9PSBjbnBqO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyB2YWxpZGFyQ3BmKGNwZjogc3RyaW5nKSB7XHJcbiAgICAgICAgY29uc3QgY3BmT3JpZ2luYWwgPSAoY3BmIHx8ICcnKTtcclxuICAgICAgICBjcGYgPSBjcGZPcmlnaW5hbC50b1VwcGVyQ2FzZSgpLnNsaWNlKDAsIDkpO1xyXG4gICAgICAgIGNwZiA9IGNwZiArIHRoaXMuZ2V0RGlnaXRvKHRoaXMuZ2V0U29tYUNwZihjcGYpKTtcclxuICAgICAgICBjcGYgPSBjcGYgKyB0aGlzLmdldERpZ2l0byh0aGlzLmdldFNvbWFDcGYoY3BmKSk7XHJcblxyXG4gICAgICAgIHJldHVybiBjcGZPcmlnaW5hbCA9PSBjcGY7XHJcbiAgICB9XHJcbiAgICBcclxuICAgIHByaXZhdGUgc3RhdGljIGdldERpZ2l0byhzb21hOiBudW1iZXIpIHtcclxuICAgICAgICByZXR1cm4gKHNvbWEgJSAxMSkgPD0gMSA/IDAgOiAoMTEgLSAoc29tYSAlIDExKSk7XHJcbiAgICB9XHJcbiAgICBcclxuICAgIHByaXZhdGUgc3RhdGljIGdldFNvbWFDbnBqKGNucGo6IHN0cmluZykge1xyXG4gICAgICAgIGNvbnN0IHBlc28gPSBbNiwgNSwgNCwgMywgMiwgOSwgOCwgNywgNiwgNSwgNCwgMywgMl07XHJcbiAgICAgICAgaWYgKGNucGoubGVuZ3RoID09IDEyKSBwZXNvLnNoaWZ0KCk7XHJcbiAgICBcclxuICAgICAgICByZXR1cm4gQXJyYXkuZnJvbShjbnBqKVxyXG4gICAgICAgICAgICAubWFwKChjLCBpKSA9PiAoaXNOYU4oTnVtYmVyKGMpKSA/IGMuY2hhckNvZGVBdCgwKSAtIDQ4IDogTnVtYmVyKGMpKSAqIHBlc29baV0pXHJcbiAgICAgICAgICAgIC5yZWR1Y2UoKGEsIGIpID0+IGEgKyBiLCAwKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIHN0YXRpYyBnZXRTb21hQ3BmKGNwZjogc3RyaW5nKSB7XHJcbiAgICAgICAgY29uc3QgZmF0b3IgPSBjcGYubGVuZ3RoID09IDkgPyAxMCA6IDExO1xyXG4gICAgICAgIHJldHVybiBBcnJheS5mcm9tKGNwZikubWFwKChjLCBpKSA9PiBOdW1iZXIoYykgKiAoZmF0b3IgLSBpKSkucmVkdWNlKChhLCBiKSA9PiBhICsgYiwgMCk7XHJcbiAgICB9XHJcbn1cclxuIl19
|
|
179
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbGl0aWVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvaW5mby1saWJyYXJ5L3NyYy91dGlscy91dGlsaXRpZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEtBQUssUUFBUSxNQUFNLFdBQVcsQ0FBQzs7QUFHdEMsTUFBTSxPQUFPLFNBQVM7SUFDbEIsT0FBTztRQUNILE9BQU8sc0NBQXNDLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxVQUFTLENBQUM7WUFDckUsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBRSxDQUFDLEdBQUcsR0FBRyxHQUFHLEdBQUcsQ0FBRSxDQUFDO1lBQ3hFLE9BQU8sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUMxQixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxZQUFZO1FBQ1IsT0FBTyxzQ0FBc0MsQ0FBQztJQUNsRCxDQUFDO0lBRUQsTUFBTSxDQUFDLEtBQUs7UUFDUixPQUFPLENBQUMsRUFBRSxHQUFHLEtBQUssQ0FBQyxDQUFDLEtBQUssQ0FBQywrRUFBK0UsQ0FBQyxLQUFLLElBQUksQ0FBQztJQUN4SCxDQUFDO0lBRUQsbUJBQW1CLENBQUMsTUFBTTtRQUN0QixJQUFJLFlBQVksR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3ZDLElBQUksU0FBUyxHQUFHLFlBQVksQ0FBQyxNQUFNLENBQUM7UUFDcEMsSUFBSSxLQUFLLEdBQUcsSUFBSSxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDdEMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFD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QUFDLENBQUM7UUFDakQsR0FBRyxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUVqRCxPQUFPLFdBQVcsSUFBSSxHQUFHLENBQUM7SUFDOUIsQ0FBQztJQUVPLE1BQU0sQ0FBQyxTQUFTLENBQUMsSUFBWTtRQUNqQyxPQUFPLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLElBQUksR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3JELENBQUM7SUFFTyxNQUFNLENBQUMsV0FBVyxDQUFDLElBQVk7UUFDbkMsTUFBTSxJQUFJLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNyRCxJQUFJLElBQUksQ0FBQyxNQUFNLElBQUksRUFBRTtZQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUVwQyxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO2FBQ2xCLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQzlFLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVPLE1BQU0sQ0FBQyxVQUFVLENBQUMsR0FBVztRQUNqQyxNQUFNLEtBQUssR0FBRyxHQUFHLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDeEMsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDN0YsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgKiBhcyBDcnlwdG9KUyBmcm9tICdjcnlwdG8tanMnO1xyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgVXRpbGl0aWVzIHtcclxuICAgIGdldEd1aWQoKSA6IHN0cmluZyB7XHJcbiAgICAgICAgcmV0dXJuICd4eHh4eHh4eC14eHh4LTR4eHgteXh4eC14eHh4eHh4eHh4eHgnLnJlcGxhY2UoL1t4eV0vZywgZnVuY3Rpb24oYykge1xyXG4gICAgICAgICAgICBjb25zdCByID0gTWF0aC5yYW5kb20oKSAqIDE2IHwgMCwgdiA9IGMgPT09ICd4JyA/IHIgOiAoIHIgJiAweDMgfCAweDggKTtcclxuICAgICAgICAgICAgcmV0dXJuIHYudG9TdHJpbmcoMTYpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICBnZXRHdWlkRW1wdHkoKSA6IHN0cmluZyB7XHJcbiAgICAgICAgcmV0dXJuICcwMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAnO1xyXG4gICAgfVxyXG5cclxuICAgIGlzR3VpZCh2YWx1ZSkgOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gKFwiXCIgKyB2YWx1ZSkubWF0Y2goJ15bMC05YS1mQS1GXXs4fS1bMC05YS1mQS1GXXs0fS1bMC05YS1mQS1GXXs0fS1bMC05YS1mQS1GXXs0fS1bMC05YS1mQS1GXXsxMn0kJykgIT09IG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgYmFzZTY0VG9BcnJheUJ1ZmZlcihiYXNlNjQpOiBhbnkge1xyXG4gICAgICAgIHZhciBiaW5hcnlTdHJpbmcgPSB3aW5kb3cuYXRvYihiYXNlNjQpO1xyXG4gICAgICAgIHZhciBiaW5hcnlMZW4gPSBiaW5hcnlTdHJpbmcubGVuZ3RoO1xyXG4gICAgICAgIHZhciBieXRlcyA9IG5ldyBVaW50OEFycmF5KGJpbmFyeUxlbik7XHJcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBiaW5hcnlMZW47IGkrKykge1xyXG4gICAgICAgICAgIHZhciBhc2NpaSA9IGJpbmFyeVN0cmluZy5jaGFyQ29kZUF0KGkpO1xyXG4gICAgICAgICAgIGJ5dGVzW2ldID0gYXNjaWk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBieXRlcztcclxuICAgIH1cclxuXHJcbiAgICBqc29uVG9CYXNlNjQob2JqZWN0KTogYW55IHtcclxuICAgICAgICByZXR1cm4gYnRvYSh1bmVzY2FwZShlbmNvZGVVUklDb21wb25lbnQoSlNPTi5zdHJpbmdpZnkob2JqZWN0KSkpKTtcclxuICAgIH1cclxuICAgIFxyXG4gICAgYmFzZTY0VG9Kc29uKHZhbHVlKSB7XHJcbiAgICAgICAgcmV0dXJuIEpTT04ucGFyc2UoZGVjb2RlVVJJQ29tcG9uZW50KGVzY2FwZShhdG9iKHZhbHVlKSkpKTtcclxuICAgIH1cclxuXHJcbiAgICBvcGVuT3JEb3dubG9hZCh0aXRsZSwgYmxvYikge1xyXG4gICAgICAgIGxldCBmaWxlVVJMID0gVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKTtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgaWYgKHRpdGxlLmluZGV4T2YoXCJwZGZcIikgPiAtMSlcclxuICAgICAgICAgICAgd2luZG93Lm9wZW4oZmlsZVVSTCwgdGl0bGUpO1xyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBsZXQgZWxlbWVudEE6IEhUTUxBbmNob3JFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpIGFzIEhUTUxBbmNob3JFbGVtZW50O1xyXG4gICAgICAgICAgICBlbGVtZW50QS5ocmVmID0gZmlsZVVSTDtcclxuICAgICAgICAgICAgZWxlbWVudEEuZG93bmxvYWQgPSB0aXRsZTtcclxuICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChlbGVtZW50QSk7XHJcbiAgICAgICAgICAgIGVsZW1lbnRBLmNsaWNrKCk7ICAgICAgICBcclxuICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChlbGVtZW50QSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJlbW92ZXJBY2VudG9zKHZhbDogc3RyaW5nKSA6IHN0cmluZyB7XHJcbiAgICAgICAgaWYgKHZhbCA9PSBudWxsKVxyXG4gICAgICAgICAgICByZXR1cm4gJyc7XHJcbiAgICAgICAgdmFyIG5vcm1hbGl6ZUZ1bmN0aW9uID0gU3RyaW5nLnByb3RvdHlwZS5ub3JtYWxpemUgPyAoc3RyKSA9PiBzdHIubm9ybWFsaXplKCdORkQnKSA6IChzdHIpID0+IHN0cjtcclxuICAgICAgICByZXR1cm4gbm9ybWFsaXplRnVuY3Rpb24odmFsKS5yZXBsYWNlKC9bXFx1MDMwMC1cXHUwMzZmXS9nLCBcIlwiKVxyXG4gICAgfVxyXG5cclxuICAgIGdldEZvcm1hdG9zKCk6IGFueVtdIHtcclxuICAgICAgICByZXR1cm4gWyB7IElkOiBcIkVYQ0VMXCIsIE5vbWU6IFwiRXhjZWxcIiwgTWltZVR5cGU6IFwiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsXCIsIEV4dGVuc2FvOiBcInhsc1wiIH0sXHJcbiAgICAgICAgICAgICAgICAgeyBJZDogXCJQREZcIiwgTm9tZTogXCJQREZcIiwgTWltZVR5cGU6IFwiYXBwbGljYXRpb24vcGRmXCIsIEV4dGVuc2FvOiBcInBkZlwiIH0gXTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRGb3JtYXRvc0V4Y2VsKCk6IGFueVtdIHtcclxuICAgICAgICByZXR1cm4gWyB7IElkOiAnUFAnLCBOb21lOiAnRXhjZWwgUG9ydHVndcOqcyBjb20gU2VwYXJhZG9yIERlY2ltYWwgWy5dJyB9LFxyXG4gICAgICAgICAgICAgICAgIHsgSWQ6ICdQVicsIE5vbWU6ICdFeGNlbCBQb3J0dWd1w6pzIGNvbSBTZXBhcmFkb3IgRGVjaW1hbCBbLF0nIH0sXHJcbiAgICAgICAgICAgICAgICAgeyBJZDogJ0lQJywgTm9tZTogJ0V4Y2VsIEluZ2zDqnMgY29tIFNlcGFyYWRvciBEZWNpbWFsIFsuXScgfSxcclxuICAgICAgICAgICAgICAgICB7IElkOiAnSVYnLCBOb21lOiAnRXhjZWwgSW5nbMOqcyBjb20gU2VwYXJhZG9yIERlY2ltYWwgWyxdJyB9IF07XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0U3RhdHVzKCk6IGFueVtdIHtcclxuICAgICAgICByZXR1cm4gWyB7IElkOiBcIkFcIiwgTm9tZTogXCJBdGl2b1wiIH0sXHJcbiAgICAgICAgICAgICAgICAgeyBJZDogXCJQXCIsIE5vbWU6IFwiUGVuZGVudGVcIiB9IF07XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0U3RhdHVzQ29tcGxldG8oKTogYW55W10ge1xyXG4gICAgICAgIHJldHVybiBbIHsgSWQ6IFwiQ1wiLCBOb21lOiBcIkNhZGFzdHJhZG9cIiwgU2VsZWNpb25hZG86IHRydWUgfSxcclxuICAgICAgICAgICAgICAgICB7IElkOiBcIkZcIiwgTm9tZTogXCJGZWl0b1wiLCBTZWxlY2lvbmFkbzogZmFsc2UgfSxcclxuICAgICAgICAgICAgICAgICB7IElkOiBcIk9cIiwgTm9tZTogXCJDb25mZXJpZG9cIiwgU2VsZWNpb25hZG86IHRydWUgfSxcclxuICAgICAgICAgICAgICAgICB7IElkOiBcIlJcIiwgTm9tZTogXCJSZWplaXRhZG9cIiwgU2VsZWNpb25hZG86IGZhbHNlIH0sXHJcbiAgICAgICAgICAgICAgICAgeyBJZDogXCJJXCIsIE5vbWU6IFwiSW5hdGl2b1wiLCBTZWxlY2lvbmFkbzogZmFsc2UgfSBdO1xyXG4gICAgfVxyXG5cclxuICAgIGdldFN0YXR1c1Byb2Nlc3NhbWVudG8oKTogYW55W10ge1xyXG4gICAgICAgIHJldHVybiBbIHsgSWQ6IFwiQVwiLCBOb21lOiBcIkFndWFyZGFuZG9Qcm9jZXNzYW1lbnRvXCIgfSxcclxuICAgICAgICAgICAgICAgICB7IElkOiBcIkVcIiwgTm9tZTogXCJFbVByb2Nlc3NhbWVudG9cIiB9LFxyXG4gICAgICAgICAgICAgICAgIHsgSWQ6IFwiUFwiLCBOb21lOiBcIlByb2Nlc3NhZG9cIiB9LFxyXG4gICAgICAgICAgICAgICAgIHsgSWQ6IFwiSVwiLCBOb21lOiBcIkluYXRpdm9cIiB9LFxyXG4gICAgICAgICAgICAgICAgIHsgSWQ6IFwiWlwiLCBOb21lOiBcIkVycm9cIiB9IF07XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0Rm9ybWF0b0lkaW9tYXMoKTogYW55W10ge1xyXG4gICAgICAgIHJldHVybiBbIHsgSWQ6IFwiZW5cIiwgTm9tZTogXCJFbmdsaXNoXCIgfSxcclxuICAgICAgICAgICAgICAgICB7IElkOiBcInB0LUJSXCIsIE5vbWU6IFwiUG9ydHVndcOqc1wiIH0gXTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRHZW5lcm9zKCk6IGFueVtdIHtcclxuICAgICAgICByZXR1cm4gWyB7IElkOiAnTScsIE5vbWU6ICdNYXNjdWxpbm8nIH0sXHJcbiAgICAgICAgICAgICAgICAgeyBJZDogJ0YnLCBOb21lOiAnRmVtaW5pbm8nIH0gXTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRUaXBvc0V2aWRlbmNpYSgpOiBhbnlbXSB7XHJcbiAgICAgICAgcmV0dXJuIFsgeyBJZDogMSwgTm9tZTogJ1RlbGVmb25lJ30sXHJcbiAgICAgICAgICAgICAgICAgeyBJZDogMiwgTm9tZTogJ0VtYWlsJ30sXHJcbiAgICAgICAgICAgICAgICAge0lkOiAzLCBOb21lOiAnRG9jdW1lbnRvJ30gXTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRPcmRlbnMoKTogYW55W10ge1xyXG4gICAgICAgIHJldHVybiBbIHtJZDogXCJub21lLWFzY1wiLCBOb21lOiBcIk5vbWVDcmVzY2VudGVcIn0sXHJcbiAgICAgICAgICAgICAgICAge0lkOiBcIm5vbWUtZGVzY1wiLCBOb21lOiBcIk5vbWVEZWNyZXNjZW50ZVwifSxcclxuICAgICAgICAgICAgICAgICB7SWQ6IFwidmFsb3ItYXNjXCIsIE5vbWU6IFwiVmFsb3JDcmVzY2VudGVcIn0sXHJcbiAgICAgICAgICAgICAgICAge0lkOiBcInZhbG9yLWRlc2NcIiwgTm9tZTogXCJWYWxvckRlY3Jlc2NlbnRlXCJ9IF07XHJcbiAgICB9XHJcblxyXG4gICAgdmFsaWRhckVtYWlsKGZvcm0sIHZhbHVlLCBjb250cm9sKSB7XHJcbiAgICAgICAgaWYgKCF2YWx1ZSlcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIFxyXG4gICAgICAgIGxldCBwYXR0ZXJuID0gL14oW2EtekEtWjAtOV9cXC1cXC5dKylAKFthLXpBLVowLTlfXFwtXFwuXSspXFwuKFthLXpBLVpdezIsNX0pJC87XHJcbiAgICAgICAgbGV0IGVtYWlsczogc3RyaW5nW10gPSB2YWx1ZS5zcGxpdCgnOycpO1xyXG4gICAgICAgIGxldCBpbnZhbGlkbyA9IGVtYWlscy5zb21lKGVtYWlsID0+IGVtYWlsICYmICFwYXR0ZXJuLnRlc3QoZW1haWwudHJpbSgpKSk7XHJcblxyXG4gICAgICAgIGlmIChpbnZhbGlkbylcclxuICAgICAgICAgICAgZm9ybS5mb3JtLmNvbnRyb2xzW2NvbnRyb2xdLnNldEVycm9ycyggeyAnaW52YWxpZCc6IHRydWUgfSApO1xyXG4gICAgfVxyXG5cclxuICAgIHNldExvY2FsU3RvcmFnZShrZXk6IHN0cmluZywgdmFsdWU6IGFueSkge1xyXG4gICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKGtleSwgdGhpcy5jcmlwdG9ncmFmYXIodmFsdWUpKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRMb2NhbFN0b3JhZ2Uoa2V5OiBzdHJpbmcpOiBhbnkge1xyXG4gICAgICAgIHZhciBkYXRhID0gdGhpcy5kZXNjcmlwdG9ncmFmYXIobG9jYWxTdG9yYWdlLmdldEl0ZW0oa2V5KSk7XHJcbiAgICAgICAgaWYgKGRhdGEgPT0gbnVsbCB8fCBkYXRhID09ICcnKSByZXR1cm4gbnVsbDtcclxuICAgICAgICByZXR1cm4gZGF0YTtcclxuICAgIH1cclxuXHJcbiAgICBpc0lFKCkge1xyXG4gICAgICAgIHZhciB1c2VyQWdlbnQgPSBuYXZpZ2F0b3IudXNlckFnZW50O1xyXG4gICAgICAgIHJldHVybiB1c2VyQWdlbnQuaW5kZXhPZihcIk1TSUUgXCIpID4gLTEgfHwgdXNlckFnZW50LmluZGV4T2YoXCJUcmlkZW50L1wiKSA+IC0xO1xyXG4gICAgfVxyXG5cclxuICAgIHJldG9ybmFUZXh0byh0ZXh0bykge1xyXG4gICAgICAgIHZhciBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpXHJcbiAgICAgICAgZGl2LmlubmVySFRNTCA9IHRleHRvO1xyXG4gICAgICAgIHJldHVybiBkaXYuaW5uZXJUZXh0IHx8IGRpdi50ZXh0Q29udGVudDtcclxuICAgIH1cclxuXHJcbiAgICBjcmlwdG9ncmFmYXIodGV4dG8pIHtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICByZXR1cm4gQ3J5cHRvSlMuQUVTLmVuY3J5cHQodGV4dG8sIFwiR0t4THRRZzJhdFwiKS50b1N0cmluZygpO1xyXG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgXHJcbiAgICBkZXNjcmlwdG9ncmFmYXIodGV4dG8pIHtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICByZXR1cm4gQ3J5cHRvSlMuQUVTLmRlY3J5cHQodGV4dG8sIFwiR0t4THRRZzJhdFwiKS50b1N0cmluZyhDcnlwdG9KUy5lbmMuVXRmOCk7XHJcbiAgICAgICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICB9ICAgXHJcbn1cclxuXHJcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBTdGF0aWNVdGlscyB7XHJcbiAgICBcclxuICAgIHN0YXRpYyB2YWxpZGFyQ25waihjbnBqOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgICAgICBjb25zdCBjbnBqT3JpZ2luYWwgPSAoY25waiB8fCAnJyk7XHJcbiAgICAgICAgY25waiA9IGNucGpPcmlnaW5hbC50b1VwcGVyQ2FzZSgpLnNsaWNlKDAsIDEyKTtcclxuICAgICAgICBjbnBqID0gY25waiArIHRoaXMuZ2V0RGlnaXRvKHRoaXMuZ2V0U29tYUNucGooY25waikpO1xyXG4gICAgICAgIGNucGogPSBjbnBqICsgdGhpcy5nZXREaWdpdG8odGhpcy5nZXRTb21hQ25waihjbnBqKSk7XHJcbiAgICBcclxuICAgICAgICByZXR1cm4gY25wak9yaWdpbmFsID09IGNucGo7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIHZhbGlkYXJDcGYoY3BmOiBzdHJpbmcpIHtcclxuICAgICAgICBjb25zdCBjcGZPcmlnaW5hbCA9IChjcGYgfHwgJycpO1xyXG4gICAgICAgIGNwZiA9IGNwZk9yaWdpbmFsLnRvVXBwZXJDYXNlKCkuc2xpY2UoMCwgOSk7XHJcbiAgICAgICAgY3BmID0gY3BmICsgdGhpcy5nZXREaWdpdG8odGhpcy5nZXRTb21hQ3BmKGNwZikpO1xyXG4gICAgICAgIGNwZiA9IGNwZiArIHRoaXMuZ2V0RGlnaXRvKHRoaXMuZ2V0U29tYUNwZihjcGYpKTtcclxuXHJcbiAgICAgICAgcmV0dXJuIGNwZk9yaWdpbmFsID09IGNwZjtcclxuICAgIH1cclxuICAgIFxyXG4gICAgcHJpdmF0ZSBzdGF0aWMgZ2V0RGlnaXRvKHNvbWE6IG51bWJlcikge1xyXG4gICAgICAgIHJldHVybiAoc29tYSAlIDExKSA8PSAxID8gMCA6ICgxMSAtIChzb21hICUgMTEpKTtcclxuICAgIH1cclxuICAgIFxyXG4gICAgcHJpdmF0ZSBzdGF0aWMgZ2V0U29tYUNucGooY25wajogc3RyaW5nKSB7XHJcbiAgICAgICAgY29uc3QgcGVzbyA9IFs2LCA1LCA0LCAzLCAyLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyXTtcclxuICAgICAgICBpZiAoY25wai5sZW5ndGggPT0gMTIpIHBlc28uc2hpZnQoKTtcclxuICAgIFxyXG4gICAgICAgIHJldHVybiBBcnJheS5mcm9tKGNucGopXHJcbiAgICAgICAgICAgIC5tYXAoKGMsIGkpID0+IChpc05hTihOdW1iZXIoYykpID8gYy5jaGFyQ29kZUF0KDApIC0gNDggOiBOdW1iZXIoYykpICogcGVzb1tpXSlcclxuICAgICAgICAgICAgLnJlZHVjZSgoYSwgYikgPT4gYSArIGIsIDApO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgc3RhdGljIGdldFNvbWFDcGYoY3BmOiBzdHJpbmcpIHtcclxuICAgICAgICBjb25zdCBmYXRvciA9IGNwZi5sZW5ndGggPT0gOSA/IDEwIDogMTE7XHJcbiAgICAgICAgcmV0dXJuIEFycmF5LmZyb20oY3BmKS5tYXAoKGMsIGkpID0+IE51bWJlcihjKSAqIChmYXRvciAtIGkpKS5yZWR1Y2UoKGEsIGIpID0+IGEgKyBiLCAwKTtcclxuICAgIH1cclxufVxyXG4iXX0=
|
|
@@ -75,7 +75,7 @@ class InfoAppConfigModel {
|
|
|
75
75
|
}
|
|
76
76
|
|
|
77
77
|
class InfoDataAccessModel {
|
|
78
|
-
constructor(
|
|
78
|
+
constructor(data, success, messages) {
|
|
79
79
|
this.messages = [];
|
|
80
80
|
this.name = null;
|
|
81
81
|
this.description = null;
|
|
@@ -83,7 +83,6 @@ class InfoDataAccessModel {
|
|
|
83
83
|
this.parentId = null;
|
|
84
84
|
this.referenceGuid = null;
|
|
85
85
|
this.external = false;
|
|
86
|
-
var data = JSON.parse(atob(rData));
|
|
87
86
|
if (data != null) {
|
|
88
87
|
if (data.Name != null && data.Name != "")
|
|
89
88
|
this.name = data.Name;
|
|
@@ -440,10 +439,10 @@ class Utilities {
|
|
|
440
439
|
return bytes;
|
|
441
440
|
}
|
|
442
441
|
jsonToBase64(object) {
|
|
443
|
-
return btoa(JSON.stringify(object));
|
|
442
|
+
return btoa(unescape(encodeURIComponent(JSON.stringify(object))));
|
|
444
443
|
}
|
|
445
444
|
base64ToJson(value) {
|
|
446
|
-
return JSON.parse(atob(value));
|
|
445
|
+
return JSON.parse(decodeURIComponent(escape(atob(value))));
|
|
447
446
|
}
|
|
448
447
|
openOrDownload(title, blob) {
|
|
449
448
|
let fileURL = URL.createObjectURL(blob);
|
|
@@ -631,43 +630,43 @@ class InfoDataService {
|
|
|
631
630
|
getNoToken(controller, method, param) {
|
|
632
631
|
return this._http
|
|
633
632
|
.get(this.getAPIUrl(controller) + (method || '').toLowerCase() + (param == null ? '' : ('?' + this._utilities.jsonToBase64(param.replace(/null/g, '').replace(/undefined/g, '')))), { headers: this.getHeaderDefault(), responseType: 'text' })
|
|
634
|
-
.pipe(map(r => new InfoDataAccessModel(r)), catchError((e) => this.errorHandling(e)));
|
|
633
|
+
.pipe(map(r => new InfoDataAccessModel(this._utilities.base64ToJson(r))), catchError((e) => this.errorHandling(e)));
|
|
635
634
|
}
|
|
636
635
|
get(controller, method, param) {
|
|
637
636
|
return this._http
|
|
638
637
|
.get(this.getAPIUrl(controller) + (method || '').toLowerCase() + (param == null ? '' : ('?' + this._utilities.jsonToBase64(param.replace(/null/g, '').replace(/undefined/g, '')))), { headers: this.getHeaderToken(), responseType: 'text' })
|
|
639
|
-
.pipe(map(r => new InfoDataAccessModel(r)), catchError((e) => this.errorHandling(e)));
|
|
638
|
+
.pipe(map(r => new InfoDataAccessModel(this._utilities.base64ToJson(r))), catchError((e) => this.errorHandling(e)));
|
|
640
639
|
}
|
|
641
640
|
getById(controller, id) {
|
|
642
641
|
return this._http
|
|
643
642
|
.get(this.getAPIUrl(controller) + id.toString(), { headers: this.getHeaderToken(), responseType: 'text' })
|
|
644
|
-
.pipe(map(r => new InfoDataAccessModel(r)), catchError((e) => this.errorHandling(e)));
|
|
643
|
+
.pipe(map(r => new InfoDataAccessModel(this._utilities.base64ToJson(r))), catchError((e) => this.errorHandling(e)));
|
|
645
644
|
}
|
|
646
645
|
postNoToken(controller, model, method) {
|
|
647
646
|
return this._http
|
|
648
647
|
.post(this.getAPIUrl(controller) + (method || '').toLowerCase(), this._utilities.jsonToBase64(model), { headers: this.getHeaderDefault(), responseType: 'text' })
|
|
649
|
-
.pipe(map(r => new InfoDataAccessModel(r)), catchError((e) => this.errorHandling(e)));
|
|
648
|
+
.pipe(map(r => new InfoDataAccessModel(this._utilities.base64ToJson(r))), catchError((e) => this.errorHandling(e)));
|
|
650
649
|
}
|
|
651
650
|
post(controller, model, method) {
|
|
652
651
|
return this._http
|
|
653
652
|
.post(this.getAPIUrl(controller) + (method || '').toLowerCase(), this._utilities.jsonToBase64(model), { headers: this.getHeaderToken(), responseType: 'text' })
|
|
654
|
-
.pipe(map(r => new InfoDataAccessModel(r)), catchError((e) => this.errorHandling(e, false)));
|
|
653
|
+
.pipe(map(r => new InfoDataAccessModel(this._utilities.base64ToJson(r))), catchError((e) => this.errorHandling(e, false)));
|
|
655
654
|
}
|
|
656
655
|
delete(controller, id, method) {
|
|
657
656
|
if (id == undefined || id == null)
|
|
658
657
|
alert('Id não informado');
|
|
659
658
|
return this._http
|
|
660
659
|
.delete(this.getAPIUrl(controller) + (method || '').toLowerCase() + "?" + this._utilities.jsonToBase64("id=" + id.toString()), { headers: this.getHeaderToken(), responseType: 'text' })
|
|
661
|
-
.pipe(map(r => new InfoDataAccessModel(r)), catchError((e) => this.errorHandling(e)));
|
|
660
|
+
.pipe(map(r => new InfoDataAccessModel(this._utilities.base64ToJson(r))), catchError((e) => this.errorHandling(e)));
|
|
662
661
|
}
|
|
663
662
|
deleteByModel(controller, model, method) {
|
|
664
663
|
let httpOptions = {
|
|
665
664
|
headers: this.getHeaderToken(),
|
|
666
|
-
body: model,
|
|
665
|
+
body: this._utilities.jsonToBase64(model),
|
|
667
666
|
};
|
|
668
667
|
return this._http
|
|
669
668
|
.delete(this.getAPIUrl(controller) + (method || '').toLowerCase(), httpOptions)
|
|
670
|
-
.pipe(map(r => new InfoDataAccessModel(r)), catchError((e) => this.errorHandling(e)));
|
|
669
|
+
.pipe(map(r => new InfoDataAccessModel(this._utilities.base64ToJson(r))), catchError((e) => this.errorHandling(e)));
|
|
671
670
|
}
|
|
672
671
|
request(controller, model, method, param) {
|
|
673
672
|
let formData = new FormData();
|
|
@@ -675,7 +674,7 @@ class InfoDataService {
|
|
|
675
674
|
formData.append(model[index].name, model[index]);
|
|
676
675
|
return this._http
|
|
677
676
|
.request('POST', this.getAPIUrl(controller) + (method || '').toLowerCase() + (param == null ? '' : ('?' + this._utilities.jsonToBase64(param))), { headers: this.getHeaderToken(), body: formData, responseType: 'text' })
|
|
678
|
-
.pipe(map(r => new InfoDataAccessModel(r)), catchError((e) => this.errorHandling(e)));
|
|
677
|
+
.pipe(map(r => new InfoDataAccessModel(this._utilities.base64ToJson(r))), catchError((e) => this.errorHandling(e)));
|
|
679
678
|
}
|
|
680
679
|
errorHandling(e, redirect = true) {
|
|
681
680
|
if (e.status == 401)
|