@mediusinc/mng-commons-audit 3.2.0 → 3.3.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/assets/i18n/en.json +42 -36
- package/assets/i18n/sl.json +42 -36
- package/esm2022/lib/api/services/audit-revisions-api.service.mjs +3 -3
- package/esm2022/lib/api/services/audit.service.mjs +3 -3
- package/esm2022/lib/components/entity-changes-field/entity-changes-field.component.mjs +5 -39
- package/esm2022/lib/components/pages/audit/audit-page.component.mjs +3 -3
- package/esm2022/lib/components/pages/entity-revisions/audit-entity-revisions-page.component.mjs +29 -25
- package/esm2022/lib/components/pages/revisions/audit-revisions-page.component.mjs +6 -11
- package/esm2022/lib/models/guiEntityModelWithI18n.model.mjs +9 -0
- package/esm2022/lib/utils/audit.util.mjs +60 -4
- package/fesm2022/mediusinc-mng-commons-audit.mjs +119 -93
- package/fesm2022/mediusinc-mng-commons-audit.mjs.map +1 -1
- package/lib/components/pages/entity-revisions/audit-entity-revisions-page.component.d.ts +2 -1
- package/lib/models/guiEntityModelWithI18n.model.d.ts +4 -0
- package/lib/utils/audit.util.d.ts +8 -2
- package/package.json +2 -2
package/assets/i18n/en.json
CHANGED
|
@@ -1,45 +1,51 @@
|
|
|
1
1
|
{
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
},
|
|
6
|
-
"revisions": {
|
|
7
|
-
"title": "All revisions"
|
|
8
|
-
},
|
|
9
|
-
"entityRevisions": {
|
|
10
|
-
"title": "Entity revisions",
|
|
11
|
-
"dropdown": {
|
|
12
|
-
"placeholder": "Select entity",
|
|
13
|
-
"helpText": "To display the list of entity revisions, you must first select the entity."
|
|
14
|
-
}
|
|
15
|
-
}
|
|
16
|
-
},
|
|
17
|
-
"MngRevEntity": {
|
|
18
|
-
"name": "Revisions",
|
|
19
|
-
"properties": {
|
|
20
|
-
"rev": "Št. revizije",
|
|
21
|
-
"revUsername": "Uporabnik",
|
|
22
|
-
"timestamp": "Časovni žig"
|
|
23
|
-
}
|
|
24
|
-
},
|
|
25
|
-
"MngEntityRevisionChangeState": {
|
|
26
|
-
"properties": {
|
|
27
|
-
"revType": "Type"
|
|
28
|
-
}
|
|
2
|
+
"pages": {
|
|
3
|
+
"audit": {
|
|
4
|
+
"title": "Revisions"
|
|
29
5
|
},
|
|
30
|
-
"
|
|
31
|
-
|
|
32
|
-
"Mod": "Modification",
|
|
33
|
-
"Del": "Deletion"
|
|
6
|
+
"revisions": {
|
|
7
|
+
"title": "All revisions"
|
|
34
8
|
},
|
|
35
|
-
"
|
|
36
|
-
|
|
9
|
+
"entityRevisions": {
|
|
10
|
+
"title": "Entity revisions",
|
|
11
|
+
"dropdown": {
|
|
12
|
+
"placeholder": "Select entity",
|
|
13
|
+
"helpText": "To display the list of entity revisions, you must first select the entity."
|
|
14
|
+
},
|
|
15
|
+
"actions": {
|
|
16
|
+
"details": {
|
|
17
|
+
"editor": {
|
|
37
18
|
"title": "Entity revision details"
|
|
19
|
+
}
|
|
38
20
|
}
|
|
39
|
-
|
|
40
|
-
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
},
|
|
24
|
+
"MngRevEntity": {
|
|
25
|
+
"name": "Revisions",
|
|
26
|
+
"properties": {
|
|
27
|
+
"rev": "Revision no.",
|
|
28
|
+
"revUsername": "User",
|
|
29
|
+
"timestamp": "Timestamp"
|
|
30
|
+
}
|
|
31
|
+
},
|
|
32
|
+
"MngEntityRevisionChangeState": {
|
|
33
|
+
"properties": {
|
|
34
|
+
"revType": "Type"
|
|
35
|
+
}
|
|
36
|
+
},
|
|
37
|
+
"MngRevisionTypeDto": {
|
|
38
|
+
"Add": "Insertion",
|
|
39
|
+
"Mod": "Modification",
|
|
40
|
+
"Del": "Deletion"
|
|
41
|
+
},
|
|
42
|
+
"MngRevEntityWithChangesDto": {
|
|
43
|
+
"actions": {
|
|
44
|
+
"details": {
|
|
41
45
|
"editor": {
|
|
42
|
-
|
|
46
|
+
"title": "Revision {{item.revEntity.rev}}"
|
|
43
47
|
}
|
|
48
|
+
}
|
|
44
49
|
}
|
|
50
|
+
}
|
|
45
51
|
}
|
package/assets/i18n/sl.json
CHANGED
|
@@ -1,45 +1,51 @@
|
|
|
1
1
|
{
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
},
|
|
6
|
-
"revisions": {
|
|
7
|
-
"title": "Vse revizije"
|
|
8
|
-
},
|
|
9
|
-
"entityRevisions": {
|
|
10
|
-
"title": "Revizije entite",
|
|
11
|
-
"dropdown": {
|
|
12
|
-
"placeholder": "Izberite entiteto",
|
|
13
|
-
"helpText": "Za prikaz seznama revizij entitete je potrebno najprej izbrati entiteto."
|
|
14
|
-
}
|
|
15
|
-
}
|
|
16
|
-
},
|
|
17
|
-
"MngRevEntity": {
|
|
18
|
-
"name": "Revizije",
|
|
19
|
-
"properties": {
|
|
20
|
-
"rev": "Revision no.",
|
|
21
|
-
"revUsername": "User",
|
|
22
|
-
"timestamp": "Timestamp"
|
|
23
|
-
}
|
|
2
|
+
"pages": {
|
|
3
|
+
"audit": {
|
|
4
|
+
"title": "Revizije"
|
|
24
5
|
},
|
|
25
|
-
"
|
|
26
|
-
|
|
27
|
-
"Mod": "Sprememba",
|
|
28
|
-
"Del": "Izbris"
|
|
29
|
-
},
|
|
30
|
-
"MngEntityRevisionChangeState": {
|
|
31
|
-
"properties": {
|
|
32
|
-
"revType": "Tip"
|
|
33
|
-
}
|
|
6
|
+
"revisions": {
|
|
7
|
+
"title": "Vse revizije"
|
|
34
8
|
},
|
|
35
|
-
"
|
|
36
|
-
|
|
9
|
+
"entityRevisions": {
|
|
10
|
+
"title": "Revizije entite",
|
|
11
|
+
"dropdown": {
|
|
12
|
+
"placeholder": "Izberite entiteto",
|
|
13
|
+
"helpText": "Za prikaz seznama revizij entitete je potrebno najprej izbrati entiteto."
|
|
14
|
+
},
|
|
15
|
+
"actions": {
|
|
16
|
+
"details": {
|
|
17
|
+
"editor": {
|
|
37
18
|
"title": "Podrobnosti revizije entitete"
|
|
19
|
+
}
|
|
38
20
|
}
|
|
39
|
-
|
|
40
|
-
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
},
|
|
24
|
+
"MngRevEntity": {
|
|
25
|
+
"name": "Revizije",
|
|
26
|
+
"properties": {
|
|
27
|
+
"rev": "Št. revizije",
|
|
28
|
+
"revUsername": "Uporabnik",
|
|
29
|
+
"timestamp": "Časovni žig"
|
|
30
|
+
}
|
|
31
|
+
},
|
|
32
|
+
"MngRevisionTypeDto": {
|
|
33
|
+
"Add": "Vnos",
|
|
34
|
+
"Mod": "Sprememba",
|
|
35
|
+
"Del": "Izbris"
|
|
36
|
+
},
|
|
37
|
+
"MngEntityRevisionChangeState": {
|
|
38
|
+
"properties": {
|
|
39
|
+
"revType": "Tip"
|
|
40
|
+
}
|
|
41
|
+
},
|
|
42
|
+
"MngRevEntityWithChangesDto": {
|
|
43
|
+
"actions": {
|
|
44
|
+
"details": {
|
|
41
45
|
"editor": {
|
|
42
|
-
|
|
46
|
+
"title": "Revizija {{item.revEntity.rev}}"
|
|
43
47
|
}
|
|
48
|
+
}
|
|
44
49
|
}
|
|
50
|
+
}
|
|
45
51
|
}
|
|
@@ -46,10 +46,10 @@ export class MngAuditRevisionsApiService extends AMngBaseApiService {
|
|
|
46
46
|
countRevisionsWithStateForEntityType(queryParams, entityType) {
|
|
47
47
|
return this.http.get(this.getUrl(`/states/${entityType}/count`, AuditUtil.appendMediusQueryParamsToUrl(queryParams)));
|
|
48
48
|
}
|
|
49
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.
|
|
50
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.
|
|
49
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.6", ngImport: i0, type: MngAuditRevisionsApiService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
50
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.6", ngImport: i0, type: MngAuditRevisionsApiService }); }
|
|
51
51
|
}
|
|
52
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.
|
|
52
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.6", ngImport: i0, type: MngAuditRevisionsApiService, decorators: [{
|
|
53
53
|
type: Injectable
|
|
54
54
|
}], ctorParameters: function () { return []; } });
|
|
55
55
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXVkaXQtcmV2aXNpb25zLWFwaS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9hcGkvc2VydmljZXMvYXVkaXQtcmV2aXNpb25zLWFwaS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxVQUFVLEVBQUUsTUFBTSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBR2pELE9BQU8sRUFBQyxHQUFHLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUVuQyxPQUFPLEVBQUMsa0JBQWtCLEVBQTRCLHVCQUF1QixFQUFFLGdCQUFnQixFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFFL0gsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sb0NBQW9DLENBQUM7QUFDdEUsT0FBTyxFQUFDLDBCQUEwQixFQUFDLE1BQU0sbUNBQW1DLENBQUM7QUFDN0UsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBRWpELE9BQU8sRUFBQyx3QkFBd0IsRUFBQyxNQUFNLGlDQUFpQyxDQUFDOztBQUd6RSxNQUFNLE9BQU8sMkJBQTRCLFNBQVEsa0JBQWtCO0lBSy9EO1FBQ0ksS0FBSyxFQUFFLENBQUM7UUFITyxpQkFBWSxHQUFHLE1BQU0sQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO1FBSWpFLElBQUksQ0FBQyxhQUFhLEdBQUcsdUJBQXVCLENBQUMsR0FBRyxFQUFFLENBQUM7SUFDdkQsQ0FBQztJQUVTLGtCQUFrQjtRQUN4QixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsa0JBQWtCLElBQUksRUFBRSxDQUFDO0lBQ3RELENBQUM7SUFFUyxXQUFXO1FBQ2pCLE9BQU8sR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLG9CQUFvQixDQUFDLEVBQUUsQ0FBQztJQUMxRixDQUFDO0lBRU0sZUFBZSxDQUFDLFdBQTZCO1FBQ2hELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQWtDLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLDRCQUE0QixDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM1SCxDQUFDO0lBRU0sZ0JBQWdCLENBQUMsV0FBNkI7UUFDakQsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBUyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxTQUFTLENBQUMsNEJBQTRCLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzdHLENBQUM7SUFFTSx3QkFBd0IsQ0FBQyxLQUFhO1FBQ3pDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztJQUMzRCxDQUFDO0lBRU0sbUNBQW1DLENBQUMsV0FBNkIsRUFBRSxVQUFrQjtRQUN4RixPQUFPLElBQUksQ0FBQyxJQUFJO2FBQ1gsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxVQUFVLEVBQUUsRUFBRSxTQUFTLENBQUMsNEJBQTRCLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQzthQUM5RixJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLFFBQVEsRUFBRSx3QkFBd0IsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMvRixDQUFDO0lBRU0sb0NBQW9DLENBQUMsVUFBa0IsRUFBRSxLQUFhLEVBQUUsTUFBYztRQUN6RixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxVQUFVLFdBQVcsS0FBSyxVQUFVLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQzNGLEdBQUcsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUNYLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxRQUFRLEVBQUUsa0JBQWtCLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDN0QsQ0FBQyxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNoRSxPQUFPLENBQUMsQ0FBQztRQUNiLENBQUMsQ0FBQyxDQUNMLEVBQ0QsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ1IsSUFBSSxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtnQkFDbEIsT0FBTyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDbkI7WUFDRCxNQUFNLElBQUksZ0JBQWdCLENBQUMsbUJBQW1CLEtBQUssUUFBUSxVQUFVLFlBQVksTUFBTSxnQkFBZ0IsQ0FBQyxDQUFDO1FBQzdHLENBQUMsQ0FBQyxDQUNMLENBQUM7SUFDTixDQUFDO0lBRU0sb0NBQW9DLENBQUMsV0FBNkIsRUFBRSxVQUFrQjtRQUN6RixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFTLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxVQUFVLFFBQVEsRUFBRSxTQUFTLENBQUMsNEJBQTRCLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2xJLENBQUM7OEdBdkRRLDJCQUEyQjtrSEFBM0IsMkJBQTJCOzsyRkFBM0IsMkJBQTJCO2tCQUR2QyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3RhYmxlLCBpbmplY3R9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQge09ic2VydmFibGV9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHttYXB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHtBTW5nQmFzZUFwaVNlcnZpY2UsIElkVHlwZSwgTWVkaXVzUXVlcnlQYXJhbSwgTW5nQ29uZmlndXJhdGlvblNlcnZpY2UsIE1uZ0ludGVybmFsRXJyb3J9IGZyb20gJ0BtZWRpdXNpbmMvbW5nLWNvbW1vbnMnO1xuXG5pbXBvcnQge01uZ1JldkVudGl0eVdpdGhJZH0gZnJvbSAnLi4vLi4vbW9kZWxzL3JldkVudGl0eVdpdGhJZC5tb2RlbCc7XG5pbXBvcnQge01OR19BVURJVF9NT0RVTEVfQ09ORklHX0lUfSBmcm9tICcuLi8uLi9zZXJ2aWNlL21vZHVsZS1jb25maWcudG9rZW4nO1xuaW1wb3J0IHtBdWRpdFV0aWx9IGZyb20gJy4uLy4uL3V0aWxzL2F1ZGl0LnV0aWwnO1xuaW1wb3J0IHtNbmdSZXZFbnRpdHlXaXRoQ2hhbmdlc0R0b30gZnJvbSAnLi4vbW9kZWxzL3JldkVudGl0eVdpdGhDaGFuZ2VzRHRvJztcbmltcG9ydCB7TW5nUmV2RW50aXR5V2l0aFN0YXRlRHRvfSBmcm9tICcuLi9tb2RlbHMvcmV2RW50aXR5V2l0aFN0YXRlRHRvJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIE1uZ0F1ZGl0UmV2aXNpb25zQXBpU2VydmljZSBleHRlbmRzIEFNbmdCYXNlQXBpU2VydmljZSB7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGNvbmZpZ1NlcnZpY2U6IE1uZ0NvbmZpZ3VyYXRpb25TZXJ2aWNlO1xuXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IG1vZHVsZUNvbmZpZyA9IGluamVjdChNTkdfQVVESVRfTU9EVUxFX0NPTkZJR19JVCk7XG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy5jb25maWdTZXJ2aWNlID0gTW5nQ29uZmlndXJhdGlvblNlcnZpY2UuZ2V0KCk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldFNlcnZpY2VCYXNlUGF0aCgpOiBzdHJpbmcgfCBudWxsIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubW9kdWxlQ29uZmlnLmFwaVNlcnZpY2VCYXNlUGF0aCA/PyAnJztcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0QmFzZVBhdGgoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIGAke3RoaXMuY29uZmlnU2VydmljZS5nZXRDb25maWdWYWx1ZSh0aGlzLm1vZHVsZUNvbmZpZy5hcGlCYXNlUGF0aENvbmZpZ0tleSl9YDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0UmV2aXNpb25MaXN0KHF1ZXJ5UGFyYW1zOiBNZWRpdXNRdWVyeVBhcmFtKTogT2JzZXJ2YWJsZTxBcnJheTx7W2tleTogc3RyaW5nXTogdW5rbm93bn0+PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PEFycmF5PHtba2V5OiBzdHJpbmddOiB1bmtub3dufT4+KHRoaXMuZ2V0VXJsKEF1ZGl0VXRpbC5hcHBlbmRNZWRpdXNRdWVyeVBhcmFtc1RvVXJsKHF1ZXJ5UGFyYW1zKSkpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRSZXZpc2lvbkNvdW50KHF1ZXJ5UGFyYW1zOiBNZWRpdXNRdWVyeVBhcmFtKTogT2JzZXJ2YWJsZTxudW1iZXI+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8bnVtYmVyPih0aGlzLmdldFVybCgnL2NvdW50JywgQXVkaXRVdGlsLmFwcGVuZE1lZGl1c1F1ZXJ5UGFyYW1zVG9VcmwocXVlcnlQYXJhbXMpKSk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEFsbENoYW5nZXNGb3JSZXZpc2lvbihyZXZJZDogSWRUeXBlKTogT2JzZXJ2YWJsZTxNbmdSZXZFbnRpdHlXaXRoQ2hhbmdlc0R0bz4ge1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLmdldCh0aGlzLmdldFVybChgL2NoYW5nZXMvJHtyZXZJZH1gKSk7XG4gICAgfVxuXG4gICAgcHVibGljIGxpc3RSZXZpc2lvbnNXaXRoU3RhdGVGb3JFbnRpdHlUeXBlKHF1ZXJ5UGFyYW1zOiBNZWRpdXNRdWVyeVBhcmFtLCBlbnRpdHlUeXBlOiBzdHJpbmcpOiBPYnNlcnZhYmxlPEFycmF5PE1uZ1JldkVudGl0eVdpdGhTdGF0ZUR0bz4+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgICAgICAgLmdldCh0aGlzLmdldFVybChgL3N0YXRlcy8ke2VudGl0eVR5cGV9YCwgQXVkaXRVdGlsLmFwcGVuZE1lZGl1c1F1ZXJ5UGFyYW1zVG9VcmwocXVlcnlQYXJhbXMpKSlcbiAgICAgICAgICAgIC5waXBlKG1hcChyZXNwb25zZSA9PiB0aGlzLmRlc2VyaWFsaXplQ2xhc3NBcnJheShyZXNwb25zZSwgTW5nUmV2RW50aXR5V2l0aFN0YXRlRHRvKSkpO1xuICAgIH1cblxuICAgIHB1YmxpYyBmZXRjaFJldmlzaW9uc1dpdGhTdGF0ZUZvckVudGl0eVR5cGUoZW50aXR5VHlwZTogc3RyaW5nLCByZXZJZDogSWRUeXBlLCBpdGVtSWQ6IElkVHlwZSk6IE9ic2VydmFibGU8TW5nUmV2RW50aXR5V2l0aElkPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KHRoaXMuZ2V0VXJsKGAvc3RhdGVzLyR7ZW50aXR5VHlwZX0/cmV2PWVxOiR7cmV2SWR9JmlkPWVxOiR7aXRlbUlkfWApKS5waXBlKFxuICAgICAgICAgICAgbWFwKHJlc3BvbnNlID0+XG4gICAgICAgICAgICAgICAgdGhpcy5kZXNlcmlhbGl6ZUNsYXNzQXJyYXkocmVzcG9uc2UsIE1uZ1JldkVudGl0eVdpdGhJZCkubWFwKGkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpLm1lcmdlZElkID0gaS5yZXZFbnRpdHk/LlsncmV2J10gKyAnXycgKyBpLmVudGl0eVN0YXRlPy5bJ2lkJ107XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBpO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgbWFwKGl0ZW1zID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoaXRlbXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gaXRlbXNbMF07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBNbmdJbnRlcm5hbEVycm9yKGBFbnRpdHkgcmV2aXNpb24gJHtyZXZJZH0gZm9yICR7ZW50aXR5VHlwZX0gd2l0aCBpZCAke2l0ZW1JZH0gd2FzIG5vdCBmb3VuZGApO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY291bnRSZXZpc2lvbnNXaXRoU3RhdGVGb3JFbnRpdHlUeXBlKHF1ZXJ5UGFyYW1zOiBNZWRpdXNRdWVyeVBhcmFtLCBlbnRpdHlUeXBlOiBzdHJpbmcpOiBPYnNlcnZhYmxlPG51bWJlcj4ge1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLmdldDxudW1iZXI+KHRoaXMuZ2V0VXJsKGAvc3RhdGVzLyR7ZW50aXR5VHlwZX0vY291bnRgLCBBdWRpdFV0aWwuYXBwZW5kTWVkaXVzUXVlcnlQYXJhbXNUb1VybChxdWVyeVBhcmFtcykpKTtcbiAgICB9XG59XG4iXX0=
|
|
@@ -36,10 +36,10 @@ export class MngAuditService extends AMngBaseApiService {
|
|
|
36
36
|
requestAuditModel() {
|
|
37
37
|
return this.http.get(this.getUrl('/audit-models')).pipe(map(response => this.deserializeClassArray(response, MngGuiEntityModelDto)));
|
|
38
38
|
}
|
|
39
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.
|
|
40
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.
|
|
39
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.6", ngImport: i0, type: MngAuditService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
40
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.6", ngImport: i0, type: MngAuditService }); }
|
|
41
41
|
}
|
|
42
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.
|
|
42
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.6", ngImport: i0, type: MngAuditService, decorators: [{
|
|
43
43
|
type: Injectable
|
|
44
44
|
}], ctorParameters: function () { return []; } });
|
|
45
45
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXVkaXQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvYXBpL3NlcnZpY2VzL2F1ZGl0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFVBQVUsRUFBRSxNQUFNLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFakQsT0FBTyxFQUFhLFdBQVcsRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUM3QyxPQUFPLEVBQUMsR0FBRyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFFbkMsT0FBTyxFQUFDLGtCQUFrQixFQUFFLHVCQUF1QixFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFFbkYsT0FBTyxFQUFDLDBCQUEwQixFQUFDLE1BQU0sbUNBQW1DLENBQUM7QUFDN0UsT0FBTyxFQUFDLG9CQUFvQixFQUFDLE1BQU0sMEJBQTBCLENBQUM7O0FBRzlELE1BQU0sT0FBTyxlQUFnQixTQUFRLGtCQUFrQjtJQVFuRDtRQUNJLEtBQUssRUFBRSxDQUFDO1FBUkssZUFBVSxHQUFHLENBQUMsQ0FBQztRQUVmLGlCQUFZLEdBQUcsTUFBTSxDQUFDLDBCQUEwQixDQUFDLENBQUM7UUFPL0QsSUFBSSxDQUFDLGFBQWEsR0FBRyx1QkFBdUIsQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUN2RCxDQUFDO0lBRVMsa0JBQWtCO1FBQ3hCLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxrQkFBa0IsSUFBSSxFQUFFLENBQUM7SUFDdEQsQ0FBQztJQUVTLFdBQVc7UUFDakIsT0FBTyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsb0JBQW9CLENBQUMsRUFBRSxDQUFDO0lBQzFGLENBQUM7SUFFRCxJQUFXLFNBQVM7UUFDaEIsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUU7WUFDbkIsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztTQUNoRjtRQUNELE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUM1QixDQUFDO0lBRUQsSUFBVyxXQUFXO1FBQ2xCLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFO1lBQ3JCLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztTQUNwRjtRQUNELE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQztJQUM5QixDQUFDO0lBRU8sZUFBZTtRQUNuQixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQztJQUNwRCxDQUFDO0lBRU8saUJBQWlCO1FBQ3JCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMscUJBQXFCLENBQUMsUUFBUSxFQUFFLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3pJLENBQUM7OEdBekNRLGVBQWU7a0hBQWYsZUFBZTs7MkZBQWYsZUFBZTtrQkFEM0IsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW5qZWN0YWJsZSwgaW5qZWN0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHtPYnNlcnZhYmxlLCBzaGFyZVJlcGxheX0gZnJvbSAncnhqcyc7XG5pbXBvcnQge21hcH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQge0FNbmdCYXNlQXBpU2VydmljZSwgTW5nQ29uZmlndXJhdGlvblNlcnZpY2V9IGZyb20gJ0BtZWRpdXNpbmMvbW5nLWNvbW1vbnMnO1xuXG5pbXBvcnQge01OR19BVURJVF9NT0RVTEVfQ09ORklHX0lUfSBmcm9tICcuLi8uLi9zZXJ2aWNlL21vZHVsZS1jb25maWcudG9rZW4nO1xuaW1wb3J0IHtNbmdHdWlFbnRpdHlNb2RlbER0b30gZnJvbSAnLi4vbW9kZWxzL2d1aUVudGl0eU1vZGVsJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIE1uZ0F1ZGl0U2VydmljZSBleHRlbmRzIEFNbmdCYXNlQXBpU2VydmljZSB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBDQUNIRV9TSVpFID0gMTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNvbmZpZ1NlcnZpY2U6IE1uZ0NvbmZpZ3VyYXRpb25TZXJ2aWNlO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgbW9kdWxlQ29uZmlnID0gaW5qZWN0KE1OR19BVURJVF9NT0RVTEVfQ09ORklHX0lUKTtcblxuICAgIHByaXZhdGUgcmV2TW9kZWxPYnM/OiBPYnNlcnZhYmxlPE1uZ0d1aUVudGl0eU1vZGVsRHRvPjtcbiAgICBwcml2YXRlIGF1ZGl0TW9kZWxPYnM/OiBPYnNlcnZhYmxlPEFycmF5PE1uZ0d1aUVudGl0eU1vZGVsRHRvPj47XG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy5jb25maWdTZXJ2aWNlID0gTW5nQ29uZmlndXJhdGlvblNlcnZpY2UuZ2V0KCk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldFNlcnZpY2VCYXNlUGF0aCgpOiBzdHJpbmcgfCBudWxsIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubW9kdWxlQ29uZmlnLmFwaVNlcnZpY2VCYXNlUGF0aCA/PyAnJztcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0QmFzZVBhdGgoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIGAke3RoaXMuY29uZmlnU2VydmljZS5nZXRDb25maWdWYWx1ZSh0aGlzLm1vZHVsZUNvbmZpZy5hcGlCYXNlUGF0aENvbmZpZ0tleSl9YDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHJldk1vZGVsJCgpIHtcbiAgICAgICAgaWYgKCF0aGlzLnJldk1vZGVsT2JzKSB7XG4gICAgICAgICAgICB0aGlzLnJldk1vZGVsT2JzID0gdGhpcy5yZXF1ZXN0UmV2TW9kZWwoKS5waXBlKHNoYXJlUmVwbGF5KHRoaXMuQ0FDSEVfU0laRSkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLnJldk1vZGVsT2JzO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgYXVkaXRNb2RlbCQoKSB7XG4gICAgICAgIGlmICghdGhpcy5hdWRpdE1vZGVsT2JzKSB7XG4gICAgICAgICAgICB0aGlzLmF1ZGl0TW9kZWxPYnMgPSB0aGlzLnJlcXVlc3RBdWRpdE1vZGVsKCkucGlwZShzaGFyZVJlcGxheSh0aGlzLkNBQ0hFX1NJWkUpKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5hdWRpdE1vZGVsT2JzO1xuICAgIH1cblxuICAgIHByaXZhdGUgcmVxdWVzdFJldk1vZGVsKCk6IE9ic2VydmFibGU8TW5nR3VpRW50aXR5TW9kZWxEdG8+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQodGhpcy5nZXRVcmwoJy9yZXYtbW9kZWwnKSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSByZXF1ZXN0QXVkaXRNb2RlbCgpOiBPYnNlcnZhYmxlPEFycmF5PE1uZ0d1aUVudGl0eU1vZGVsRHRvPj4ge1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLmdldCh0aGlzLmdldFVybCgnL2F1ZGl0LW1vZGVscycpKS5waXBlKG1hcChyZXNwb25zZSA9PiB0aGlzLmRlc2VyaWFsaXplQ2xhc3NBcnJheShyZXNwb25zZSwgTW5nR3VpRW50aXR5TW9kZWxEdG8pKSk7XG4gICAgfVxufVxuIl19
|
|
@@ -6,7 +6,6 @@ import { AMngFormlyCustomFieldComponent, MngInternalError, MngTableComponent, Ta
|
|
|
6
6
|
import { MngRevisionTypeDto } from '../../api/models/revisionType';
|
|
7
7
|
import { MngAuditService } from '../../api/services/audit.service';
|
|
8
8
|
import { MngEntityRevisionChangeState } from '../../models/entity-revision-change-state.model';
|
|
9
|
-
import { MngEntityRevisionChanges } from '../../models/entity-revision-changes.model';
|
|
10
9
|
import { AuditUtil } from '../../utils/audit.util';
|
|
11
10
|
import * as i0 from "@angular/core";
|
|
12
11
|
export class EntityChangesFieldComponent extends AMngFormlyCustomFieldComponent {
|
|
@@ -26,40 +25,7 @@ export class EntityChangesFieldComponent extends AMngFormlyCustomFieldComponent
|
|
|
26
25
|
next: model => {
|
|
27
26
|
this.auditModel = model;
|
|
28
27
|
if (this.fieldValue) {
|
|
29
|
-
|
|
30
|
-
const ec = new MngEntityRevisionChanges();
|
|
31
|
-
ec.entityType = key;
|
|
32
|
-
ec.items = [];
|
|
33
|
-
for (const change of this.fieldValue[key]) {
|
|
34
|
-
if (change.revType === MngRevisionTypeDto.Add && change.entityNewState) {
|
|
35
|
-
const item = new MngEntityRevisionChangeState();
|
|
36
|
-
item.revType = change.revType;
|
|
37
|
-
item.color = 'green';
|
|
38
|
-
Object.entries(change.entityNewState).forEach(([key, value]) => (item[key] = value));
|
|
39
|
-
ec.items.push(item);
|
|
40
|
-
}
|
|
41
|
-
else if (change.revType === MngRevisionTypeDto.Del && change.entityOldState) {
|
|
42
|
-
const item = new MngEntityRevisionChangeState();
|
|
43
|
-
item.revType = change.revType;
|
|
44
|
-
item.color = 'red';
|
|
45
|
-
Object.entries(change.entityOldState).forEach(([key, value]) => (item[key] = value));
|
|
46
|
-
ec.items.push(item);
|
|
47
|
-
}
|
|
48
|
-
else if (change.revType === MngRevisionTypeDto.Mod && change.entityOldState && change.entityNewState) {
|
|
49
|
-
const itemOld = new MngEntityRevisionChangeState();
|
|
50
|
-
itemOld.revType = change.revType;
|
|
51
|
-
itemOld.color = 'red';
|
|
52
|
-
Object.entries(change.entityOldState).forEach(([key, value]) => (itemOld[key] = value));
|
|
53
|
-
const itemNew = new MngEntityRevisionChangeState();
|
|
54
|
-
itemNew.revType = change.revType;
|
|
55
|
-
itemNew.color = 'green';
|
|
56
|
-
Object.entries(change.entityNewState).forEach(([key, value]) => (itemNew[key] = value));
|
|
57
|
-
ec.items.push(itemOld);
|
|
58
|
-
ec.items.push(itemNew);
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
this.entityChanges.push(ec);
|
|
62
|
-
}
|
|
28
|
+
this.entityChanges = AuditUtil.mapItemsToEntityChangesArray(this.fieldValue);
|
|
63
29
|
this.modelFetched.next(true);
|
|
64
30
|
}
|
|
65
31
|
},
|
|
@@ -98,13 +64,13 @@ export class EntityChangesFieldComponent extends AMngFormlyCustomFieldComponent
|
|
|
98
64
|
desc.withDataKey(`EntityChangeField_${entityChanges.entityType ?? 'default'}`);
|
|
99
65
|
return desc;
|
|
100
66
|
}
|
|
101
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.
|
|
102
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.
|
|
67
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.6", ngImport: i0, type: EntityChangesFieldComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
68
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.6", type: EntityChangesFieldComponent, isStandalone: true, selector: "mng-entity-changes-field", inputs: { injector: "injector" }, usesInheritance: true, ngImport: i0, template: "<div *ngIf=\"modelFetched | async; else loading\">\n <mng-table *ngFor=\"let ec of entityChanges\" [items]=\"ec.items\" [descriptor]=\"createDescriptor(ec)\"></mng-table>\n</div>\n<ng-template #loading>\n <div class=\"text-center\">\n <i class=\"pi pi-spin pi-spinner\" style=\"font-size: 2rem\"></i>\n </div>\n</ng-template>\n", styles: ["::ng-deep tr.audit-row-deleted{background:hsla(3,100%,60%,.1)!important}::ng-deep tr.audit-row-deleted .audit-cell{background:hsla(3,90%,63%,.3)!important}::ng-deep tr.audit-row-added{background-color:#1bc5621a!important}::ng-deep tr.audit-row-added .audit-cell{background:hsla(145,76%,44%,.3)!important}\n"], dependencies: [{ kind: "directive", type: NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: MngTableComponent, selector: "mng-table", inputs: ["descriptor", "items", "queryResult", "loading", "dataProvider", "useQueryParams", "selectionMode", "selectionEnabled", "actions", "isColumnClickable", "viewContainer", "captionComponent", "columnActionComponent", "columnActionMinWidth", "globalFilterFields"], outputs: ["tableLoad", "cellClick", "selectionChange", "captionComponentInstance", "columnActionComponentInstance"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: AsyncPipe, name: "async" }] }); }
|
|
103
69
|
}
|
|
104
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.
|
|
70
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.6", ngImport: i0, type: EntityChangesFieldComponent, decorators: [{
|
|
105
71
|
type: Component,
|
|
106
72
|
args: [{ standalone: true, selector: 'mng-entity-changes-field', imports: [NgForOf, MngTableComponent, NgIf, AsyncPipe], template: "<div *ngIf=\"modelFetched | async; else loading\">\n <mng-table *ngFor=\"let ec of entityChanges\" [items]=\"ec.items\" [descriptor]=\"createDescriptor(ec)\"></mng-table>\n</div>\n<ng-template #loading>\n <div class=\"text-center\">\n <i class=\"pi pi-spin pi-spinner\" style=\"font-size: 2rem\"></i>\n </div>\n</ng-template>\n", styles: ["::ng-deep tr.audit-row-deleted{background:hsla(3,100%,60%,.1)!important}::ng-deep tr.audit-row-deleted .audit-cell{background:hsla(3,90%,63%,.3)!important}::ng-deep tr.audit-row-added{background-color:#1bc5621a!important}::ng-deep tr.audit-row-added .audit-cell{background:hsla(145,76%,44%,.3)!important}\n"] }]
|
|
107
73
|
}], propDecorators: { injector: [{
|
|
108
74
|
type: Input
|
|
109
75
|
}] } });
|
|
110
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXR5LWNoYW5nZXMtZmllbGQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL2VudGl0eS1jaGFuZ2VzLWZpZWxkL2VudGl0eS1jaGFuZ2VzLWZpZWxkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9lbnRpdHktY2hhbmdlcy1maWVsZC9lbnRpdHktY2hhbmdlcy1maWVsZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUN6RCxPQUFPLEVBQUMsU0FBUyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUNyRixPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUU5RCxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBRXJDLE9BQU8sRUFBQyw4QkFBOEIsRUFBRSxnQkFBZ0IsRUFBRSxpQkFBaUIsRUFBRSxlQUFlLEVBQUUsdUJBQXVCLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUlySixPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSwrQkFBK0IsQ0FBQztBQUNqRSxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sa0NBQWtDLENBQUM7QUFDakUsT0FBTyxFQUFDLDRCQUE0QixFQUFDLE1BQU0saURBQWlELENBQUM7QUFDN0YsT0FBTyxFQUFDLHdCQUF3QixFQUFDLE1BQU0sNENBQTRDLENBQUM7QUFDcEYsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLHdCQUF3QixDQUFDOztBQVNqRCxNQUFNLE9BQU8sMkJBQTRCLFNBQVEsOEJBQThCO0lBUC9FOztRQVVZLGVBQVUsR0FBRyxNQUFNLENBQUMs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Zn0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7Q29tcG9uZW50LCBEZXN0cm95UmVmLCBJbmplY3RvciwgSW5wdXQsIE9uSW5pdCwgaW5qZWN0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7dGFrZVVudGlsRGVzdHJveWVkfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5cbmltcG9ydCB7QmVoYXZpb3JTdWJqZWN0fSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHtBTW5nRm9ybWx5Q3VzdG9tRmllbGRDb21wb25lbnQsIE1uZ0ludGVybmFsRXJyb3IsIE1uZ1RhYmxlQ29tcG9uZW50LCBUYWJsZURlc2NyaXB0b3IsIFRhYmxlUGFnaW5hdGlvbk1vZGVFbnVtfSBmcm9tICdAbWVkaXVzaW5jL21uZy1jb21tb25zJztcblxuaW1wb3J0IHtNbmdFbnRpdHlDaGFuZ2VEdG99IGZyb20gJy4uLy4uL2FwaS9tb2RlbHMvZW50aXR5Q2hhbmdlJztcbmltcG9ydCB7TW5nR3VpRW50aXR5TW9kZWxEdG99IGZyb20gJy4uLy4uL2FwaS9tb2RlbHMvZ3VpRW50aXR5TW9kZWwnO1xuaW1wb3J0IHtNbmdSZXZpc2lvblR5cGVEdG99IGZyb20gJy4uLy4uL2FwaS9tb2RlbHMvcmV2aXNpb25UeXBlJztcbmltcG9ydCB7TW5nQXVkaXRTZXJ2aWNlfSBmcm9tICcuLi8uLi9hcGkvc2VydmljZXMvYXVkaXQuc2VydmljZSc7XG5pbXBvcnQge01uZ0VudGl0eVJldmlzaW9uQ2hhbmdlU3RhdGV9IGZyb20gJy4uLy4uL21vZGVscy9lbnRpdHktcmV2aXNpb24tY2hhbmdlLXN0YXRlLm1vZGVsJztcbmltcG9ydCB7TW5nRW50aXR5UmV2aXNpb25DaGFuZ2VzfSBmcm9tICcuLi8uLi9tb2RlbHMvZW50aXR5LXJldmlzaW9uLWNoYW5nZXMubW9kZWwnO1xuaW1wb3J0IHtBdWRpdFV0aWx9IGZyb20gJy4uLy4uL3V0aWxzL2F1ZGl0LnV0aWwnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHNlbGVjdG9yOiAnbW5nLWVudGl0eS1jaGFuZ2VzLWZpZWxkJyxcbiAgICBpbXBvcnRzOiBbTmdGb3JPZiwgTW5nVGFibGVDb21wb25lbnQsIE5nSWYsIEFzeW5jUGlwZV0sXG4gICAgc3R5bGVVcmxzOiBbJ2VudGl0eS1jaGFuZ2VzLWZpZWxkLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgdGVtcGxhdGVVcmw6ICdlbnRpdHktY2hhbmdlcy1maWVsZC5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgRW50aXR5Q2hhbmdlc0ZpZWxkQ29tcG9uZW50IGV4dGVuZHMgQU1uZ0Zvcm1seUN1c3RvbUZpZWxkQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgICBASW5wdXQoKSBwdWJsaWMgaW5qZWN0b3I/OiBJbmplY3RvcjtcblxuICAgIHByaXZhdGUgZGVzdHJveVJlZiA9IGluamVjdChEZXN0cm95UmVmKTtcblxuICAgIHB1YmxpYyBlbnRpdHlDaGFuZ2VzOiBNbmdFbnRpdHlSZXZpc2lvbkNoYW5nZXNbXSA9IFtdO1xuICAgIHB1YmxpYyBtb2RlbEZldGNoZWQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KGZhbHNlKTtcblxuICAgIHByaXZhdGUgYXVkaXRNb2RlbDogTW5nR3VpRW50aXR5TW9kZWxEdG9bXSA9IFtdO1xuICAgIHByaXZhdGUgZmllbGRWYWx1ZT86IHtba2V5OiBzdHJpbmddOiBBcnJheTxNbmdFbnRpdHlDaGFuZ2VEdG8+fTtcblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmZpZWxkVmFsdWUgPSB0aGlzLmZvcm1Db250cm9sLnZhbHVlIGFzIHtba2V5OiBzdHJpbmddOiBBcnJheTxNbmdFbnRpdHlDaGFuZ2VEdG8+fTtcbiAgICAgICAgdGhpcy5pbmplY3RvclxuICAgICAgICAgICAgPy5nZXQoTW5nQXVkaXRTZXJ2aWNlLCB1bmRlZmluZWQsIHtvcHRpb25hbDogdHJ1ZX0pXG4gICAgICAgICAgICA/LmF1ZGl0TW9kZWwkLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZikpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKHtcbiAgICAgICAgICAgICAgICBuZXh0OiBtb2RlbCA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYXVkaXRNb2RlbCA9IG1vZGVsO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmZpZWxkVmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKHRoaXMuZmllbGRWYWx1ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlYyA9IG5ldyBNbmdFbnRpdHlSZXZpc2lvbkNoYW5nZXMoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlYy5lbnRpdHlUeXBlID0ga2V5O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjLml0ZW1zID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCBjaGFuZ2Ugb2YgdGhpcy5maWVsZFZhbHVlW2tleV0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNoYW5nZS5yZXZUeXBlID09PSBNbmdSZXZpc2lvblR5cGVEdG8uQWRkICYmIGNoYW5nZS5lbnRpdHlOZXdTdGF0ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaXRlbSA9IG5ldyBNbmdFbnRpdHlSZXZpc2lvbkNoYW5nZVN0YXRlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtLnJldlR5cGUgPSBjaGFuZ2UucmV2VHlwZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0uY29sb3IgPSAnZ3JlZW4nO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmVudHJpZXMoY2hhbmdlLmVudGl0eU5ld1N0YXRlKS5mb3JFYWNoKChba2V5LCB2YWx1ZV0pID0+IChpdGVtW2tleV0gPSB2YWx1ZSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWMuaXRlbXMucHVzaChpdGVtKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChjaGFuZ2UucmV2VHlwZSA9PT0gTW5nUmV2aXNpb25UeXBlRHRvLkRlbCAmJiBjaGFuZ2UuZW50aXR5T2xkU3RhdGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGl0ZW0gPSBuZXcgTW5nRW50aXR5UmV2aXNpb25DaGFuZ2VTdGF0ZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5yZXZUeXBlID0gY2hhbmdlLnJldlR5cGU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtLmNvbG9yID0gJ3JlZCc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPYmplY3QuZW50cmllcyhjaGFuZ2UuZW50aXR5T2xkU3RhdGUpLmZvckVhY2goKFtrZXksIHZhbHVlXSkgPT4gKGl0ZW1ba2V5XSA9IHZhbHVlKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlYy5pdGVtcy5wdXNoKGl0ZW0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGNoYW5nZS5yZXZUeXBlID09PSBNbmdSZXZpc2lvblR5cGVEdG8uTW9kICYmIGNoYW5nZS5lbnRpdHlPbGRTdGF0ZSAmJiBjaGFuZ2UuZW50aXR5TmV3U3RhdGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGl0ZW1PbGQgPSBuZXcgTW5nRW50aXR5UmV2aXNpb25DaGFuZ2VTdGF0ZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbU9sZC5yZXZUeXBlID0gY2hhbmdlLnJldlR5cGU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtT2xkLmNvbG9yID0gJ3JlZCc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPYmplY3QuZW50cmllcyhjaGFuZ2UuZW50aXR5T2xkU3RhdGUpLmZvckVhY2goKFtrZXksIHZhbHVlXSkgPT4gKGl0ZW1PbGRba2V5XSA9IHZhbHVlKSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGl0ZW1OZXcgPSBuZXcgTW5nRW50aXR5UmV2aXNpb25DaGFuZ2VTdGF0ZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbU5ldy5yZXZUeXBlID0gY2hhbmdlLnJldlR5cGU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtTmV3LmNvbG9yID0gJ2dyZWVuJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdC5lbnRyaWVzKGNoYW5nZS5lbnRpdHlOZXdTdGF0ZSkuZm9yRWFjaCgoW2tleSwgdmFsdWVdKSA9PiAoaXRlbU5ld1trZXldID0gdmFsdWUpKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWMuaXRlbXMucHVzaChpdGVtT2xkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjLml0ZW1zLnB1c2goaXRlbU5ldyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5lbnRpdHlDaGFuZ2VzLnB1c2goZWMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5tb2RlbEZldGNoZWQubmV4dCh0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgZXJyb3I6IGVyciA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBNbmdJbnRlcm5hbEVycm9yKCdFcnJvciB3aGlsZSB0cnlpbmcgdG8gZmV0Y2ggYXVkaXQgbW9kZWwgZnJvbSBhdWRpdCBzZXJ2aWNlJywge25hbWU6ICdFbnRpdHlDaGFuZ2VzRmllbGRDb21wb25lbnRFcnJvcicsIGNhdXNlOiBlcnJ9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY3JlYXRlRGVzY3JpcHRvcihlbnRpdHlDaGFuZ2VzOiBNbmdFbnRpdHlSZXZpc2lvbkNoYW5nZXMpIHtcbiAgICAgICAgY29uc3QgY2hhbmdlZEZpZWxkczogc3RyaW5nW10gPSBbXTtcbiAgICAgICAgaWYgKGVudGl0eUNoYW5nZXMuaXRlbXMgJiYgZW50aXR5Q2hhbmdlcy5pdGVtc1swXS5yZXZUeXBlID09PSBNbmdSZXZpc2lvblR5cGVEdG8uTW9kKSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBlbnRpdHlDaGFuZ2VzLml0ZW1zWzBdKSB7XG4gICAgICAgICAgICAgICAgaWYgKGVudGl0eUNoYW5nZXMuaXRlbXNbMF1ba2V5XSAhPT0gZW50aXR5Q2hhbmdlcy5pdGVtc1sxXVtrZXldKSB7XG4gICAgICAgICAgICAgICAgICAgIGNoYW5nZWRGaWVsZHMucHVzaChrZXkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGd1aUVudGl0eU1vZGVsID0gdGhpcy5hdWRpdE1vZGVsLmZpbHRlcihtID0+IG0uZW50aXR5TmFtZSA9PT0gZW50aXR5Q2hhbmdlcy5lbnRpdHlUeXBlKVswXTtcblxuICAgICAgICBjb25zdCBkZXNjID0gbmV3IFRhYmxlRGVzY3JpcHRvcihNbmdFbnRpdHlSZXZpc2lvbkNoYW5nZVN0YXRlLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgZ3VpRW50aXR5TW9kZWwuZW50aXR5TmFtZSkud2l0aENsYXNzTmFtZSgncHktMicpO1xuICAgICAgICBpZiAoZ3VpRW50aXR5TW9kZWwuZW50aXR5TmFtZSkge1xuICAgICAgICAgICAgZGVzYy53aXRoVGl0bGUoZ3VpRW50aXR5TW9kZWwuZW50aXR5TmFtZSk7XG4gICAgICAgIH1cblxuICAgICAgICBkZXNjLmFkZENvbHVtbigncmV2VHlwZScpLndpdGhUaXRsZSgnTW5nRW50aXR5UmV2aXNpb25DaGFuZ2VTdGF0ZS5wcm9wZXJ0aWVzLnJldlR5cGUnKS5hc0VudW0oTW5nUmV2aXNpb25UeXBlRHRvKTtcblxuICAgICAgICBpZiAoZ3VpRW50aXR5TW9kZWwucHJvcGVydGllcykge1xuICAgICAgICAgICAgQXVkaXRVdGlsLmFkZENvbHVtbnNGcm9tTW9kZWwoZGVzYywgZ3VpRW50aXR5TW9kZWwucHJvcGVydGllcywgdW5kZWZpbmVkLCBmYWxzZSwgZmFsc2UpO1xuICAgICAgICB9XG5cbiAgICAgICAgZGVzYy53aXRoUm93Q2xhc3NOYW1lKHVuZGVmaW5lZCwgKF8sIGl0ZW0pID0+IChpdGVtID8gKGl0ZW0uY29sb3IgPT09ICdncmVlbicgPyAnYXVkaXQtcm93LWFkZGVkJyA6ICdhdWRpdC1yb3ctZGVsZXRlZCcpIDogJycpKTtcbiAgICAgICAgZGVzYy5jb2x1bW5zLmZvckVhY2goY29sID0+IHtcbiAgICAgICAgICAgIGlmIChjaGFuZ2VkRmllbGRzLmxlbmd0aCA+IDAgJiYgY2hhbmdlZEZpZWxkcy5zb21lKHZhbCA9PiBjb2wucHJvcGVydHkgPT09IHZhbCkpIHtcbiAgICAgICAgICAgICAgICBjb2wud2l0aENsYXNzTmFtZSgnYXVkaXQtY2VsbCcpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICBkZXNjLndpdGhQYWdpbmF0aW9uTW9kZShUYWJsZVBhZ2luYXRpb25Nb2RlRW51bS5QYWdpbmF0aW9uKTtcbiAgICAgICAgZGVzYy53aXRoQ3VycmVudENvbHVtbnNSZW9yZGVyYWJsZSgpO1xuICAgICAgICBkZXNjLndpdGhDdXJyZW50Q29sdW1uc1RvZ2dsZWFibGUoKTtcbiAgICAgICAgZGVzYy53aXRoRGF0YUtleShgRW50aXR5Q2hhbmdlRmllbGRfJHtlbnRpdHlDaGFuZ2VzLmVudGl0eVR5cGUgPz8gJ2RlZmF1bHQnfWApO1xuXG4gICAgICAgIHJldHVybiBkZXNjO1xuICAgIH1cbn1cbiIsIjxkaXYgKm5nSWY9XCJtb2RlbEZldGNoZWQgfCBhc3luYzsgZWxzZSBsb2FkaW5nXCI+XG4gICAgPG1uZy10YWJsZSAqbmdGb3I9XCJsZXQgZWMgb2YgZW50aXR5Q2hhbmdlc1wiIFtpdGVtc109XCJlYy5pdGVtc1wiIFtkZXNjcmlwdG9yXT1cImNyZWF0ZURlc2NyaXB0b3IoZWMpXCI+PC9tbmctdGFibGU+XG48L2Rpdj5cbjxuZy10ZW1wbGF0ZSAjbG9hZGluZz5cbiAgICA8ZGl2IGNsYXNzPVwidGV4dC1jZW50ZXJcIj5cbiAgICAgICAgPGkgY2xhc3M9XCJwaSBwaS1zcGluIHBpLXNwaW5uZXJcIiBzdHlsZT1cImZvbnQtc2l6ZTogMnJlbVwiPjwvaT5cbiAgICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|
|
76
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXR5LWNoYW5nZXMtZmllbGQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL2VudGl0eS1jaGFuZ2VzLWZpZWxkL2VudGl0eS1jaGFuZ2VzLWZpZWxkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9lbnRpdHktY2hhbmdlcy1maWVsZC9lbnRpdHktY2hhbmdlcy1maWVsZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUN6RCxPQUFPLEVBQUMsU0FBUyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUNyRixPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUU5RCxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBRXJDLE9BQU8sRUFBQyw4QkFBOEIsRUFBRSxnQkFBZ0IsRUFBRSxpQkFBaUIsRUFBRSxlQUFlLEVBQUUsdUJBQXVCLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUlySixPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSwrQkFBK0IsQ0FBQztBQUNqRSxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sa0NBQWtDLENBQUM7QUFDakUsT0FBTyxFQUFDLDRCQUE0QixFQUFDLE1BQU0saURBQWlELENBQUM7QUFFN0YsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLHdCQUF3QixDQUFDOztBQVNqRCxNQUFNLE9BQU8sMkJBQTRCLFNBQVEsOEJBQThCO0lBUC9FOztRQVVZLGVBQVUsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7UUFFakMsa0JBQWEsR0FBK0IsRUFBRSxDQUFDO1FB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LENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNoSSxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUN2QixJQUFJLGFBQWEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLGFBQWEsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsUUFBUSxLQUFLLEdBQUcsQ0FBQyxFQUFFO2dCQUM3RSxHQUFHLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQyxDQUFDO2FBQ25DO1FBQ0wsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsa0JBQWtCLENBQUMsdUJBQXVCLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDNUQsSUFBSSxDQUFDLDZCQUE2QixFQUFFLENBQUM7UUFDckMsSUFBSSxDQUFDLDRCQUE0QixFQUFFLENBQUM7UUFDcEMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxxQkFBcUIsYUFBYSxDQUFDLFVBQVUsSUFBSSxTQUFTLEVBQUUsQ0FBQyxDQUFDO1FBRS9FLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7OEdBbEVRLDJCQUEyQjtrR0FBM0IsMkJBQTJCLDZJQ3ZCeEMseVZBUUEsNFdEV2MsT0FBTyxtSEFBRSxpQkFBaUIseWJBQUUsSUFBSSx3RkFBRSxTQUFTOzsyRkFJNUMsMkJBQTJCO2tCQVB2QyxTQUFTO2lDQUNNLElBQUksWUFDTiwwQkFBMEIsV0FDM0IsQ0FBQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsSUFBSSxFQUFFLFNBQVMsQ0FBQzs4QkFLdEMsUUFBUTtzQkFBdkIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7QXN5bmNQaXBlLCBOZ0Zvck9mLCBOZ0lmfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtDb21wb25lbnQsIERlc3Ryb3lSZWYsIEluamVjdG9yLCBJbnB1dCwgT25Jbml0LCBpbmplY3R9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHt0YWtlVW50aWxEZXN0cm95ZWR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcblxuaW1wb3J0IHtCZWhhdmlvclN1YmplY3R9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQge0FNbmdGb3JtbHlDdXN0b21GaWVsZENvbXBvbmVudCwgTW5nSW50ZXJuYWxFcnJvciwgTW5nVGFibGVDb21wb25lbnQsIFRhYmxlRGVzY3JpcHRvciwgVGFibGVQYWdpbmF0aW9uTW9kZUVudW19IGZyb20gJ0BtZWRpdXNpbmMvbW5nLWNvbW1vbnMnO1xuXG5pbXBvcnQge01uZ0VudGl0eUNoYW5nZUR0b30gZnJvbSAnLi4vLi4vYXBpL21vZGVscy9lbnRpdHlDaGFuZ2UnO1xuaW1wb3J0IHtNbmdHdWlFbnRpdHlNb2RlbER0b30gZnJvbSAnLi4vLi4vYXBpL21vZGVscy9ndWlFbnRpdHlNb2RlbCc7XG5pbXBvcnQge01uZ1JldmlzaW9uVHlwZUR0b30gZnJvbSAnLi4vLi4vYXBpL21vZGVscy9yZXZpc2lvblR5cGUnO1xuaW1wb3J0IHtNbmdBdWRpdFNlcnZpY2V9IGZyb20gJy4uLy4uL2FwaS9zZXJ2aWNlcy9hdWRpdC5zZXJ2aWNlJztcbmltcG9ydCB7TW5nRW50aXR5UmV2aXNpb25DaGFuZ2VTdGF0ZX0gZnJvbSAnLi4vLi4vbW9kZWxzL2VudGl0eS1yZXZpc2lvbi1jaGFuZ2Utc3RhdGUubW9kZWwnO1xuaW1wb3J0IHtNbmdFbnRpdHlSZXZpc2lvbkNoYW5nZXN9IGZyb20gJy4uLy4uL21vZGVscy9lbnRpdHktcmV2aXNpb24tY2hhbmdlcy5tb2RlbCc7XG5pbXBvcnQge0F1ZGl0VXRpbH0gZnJvbSAnLi4vLi4vdXRpbHMvYXVkaXQudXRpbCc7XG5cbkBDb21wb25lbnQoe1xuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgc2VsZWN0b3I6ICdtbmctZW50aXR5LWNoYW5nZXMtZmllbGQnLFxuICAgIGltcG9ydHM6IFtOZ0Zvck9mLCBNbmdUYWJsZUNvbXBvbmVudCwgTmdJZiwgQXN5bmNQaXBlXSxcbiAgICBzdHlsZVVybHM6IFsnZW50aXR5LWNoYW5nZXMtZmllbGQuY29tcG9uZW50LnNjc3MnXSxcbiAgICB0ZW1wbGF0ZVVybDogJ2VudGl0eS1jaGFuZ2VzLWZpZWxkLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBFbnRpdHlDaGFuZ2VzRmllbGRDb21wb25lbnQgZXh0ZW5kcyBBTW5nRm9ybWx5Q3VzdG9tRmllbGRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICAgIEBJbnB1dCgpIHB1YmxpYyBpbmplY3Rvcj86IEluamVjdG9yO1xuXG4gICAgcHJpdmF0ZSBkZXN0cm95UmVmID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xuXG4gICAgcHVibGljIGVudGl0eUNoYW5nZXM6IE1uZ0VudGl0eVJldmlzaW9uQ2hhbmdlc1tdID0gW107XG4gICAgcHVibGljIG1vZGVsRmV0Y2hlZCA9IG5ldyBCZWhhdmlvclN1YmplY3QoZmFsc2UpO1xuXG4gICAgcHJpdmF0ZSBhdWRpdE1vZGVsOiBNbmdHdWlFbnRpdHlNb2RlbER0b1tdID0gW107XG4gICAgcHJpdmF0ZSBmaWVsZFZhbHVlPzoge1trZXk6IHN0cmluZ106IEFycmF5PE1uZ0VudGl0eUNoYW5nZUR0bz59O1xuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZmllbGRWYWx1ZSA9IHRoaXMuZm9ybUNvbnRyb2wudmFsdWUgYXMge1trZXk6IHN0cmluZ106IEFycmF5PE1uZ0VudGl0eUNoYW5nZUR0bz59O1xuICAgICAgICB0aGlzLmluamVjdG9yXG4gICAgICAgICAgICA/LmdldChNbmdBdWRpdFNlcnZpY2UsIHVuZGVmaW5lZCwge29wdGlvbmFsOiB0cnVlfSlcbiAgICAgICAgICAgID8uYXVkaXRNb2RlbCQucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoe1xuICAgICAgICAgICAgICAgIG5leHQ6IG1vZGVsID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hdWRpdE1vZGVsID0gbW9kZWw7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmZpZWxkVmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZW50aXR5Q2hhbmdlcyA9IEF1ZGl0VXRpbC5tYXBJdGVtc1RvRW50aXR5Q2hhbmdlc0FycmF5KHRoaXMuZmllbGRWYWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm1vZGVsRmV0Y2hlZC5uZXh0KHRydWUpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBlcnJvcjogZXJyID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IE1uZ0ludGVybmFsRXJyb3IoJ0Vycm9yIHdoaWxlIHRyeWluZyB0byBmZXRjaCBhdWRpdCBtb2RlbCBmcm9tIGF1ZGl0IHNlcnZpY2UnLCB7bmFtZTogJ0VudGl0eUNoYW5nZXNGaWVsZENvbXBvbmVudEVycm9yJywgY2F1c2U6IGVycn0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBjcmVhdGVEZXNjcmlwdG9yKGVudGl0eUNoYW5nZXM6IE1uZ0VudGl0eVJldmlzaW9uQ2hhbmdlcykge1xuICAgICAgICBjb25zdCBjaGFuZ2VkRmllbGRzOiBzdHJpbmdbXSA9IFtdO1xuICAgICAgICBpZiAoZW50aXR5Q2hhbmdlcy5pdGVtcyAmJiBlbnRpdHlDaGFuZ2VzLml0ZW1zWzBdLnJldlR5cGUgPT09IE1uZ1JldmlzaW9uVHlwZUR0by5Nb2QpIHtcbiAgICAgICAgICAgIGZvciAoY29uc3Qga2V5IGluIGVudGl0eUNoYW5nZXMuaXRlbXNbMF0pIHtcbiAgICAgICAgICAgICAgICBpZiAoZW50aXR5Q2hhbmdlcy5pdGVtc1swXVtrZXldICE9PSBlbnRpdHlDaGFuZ2VzLml0ZW1zWzFdW2tleV0pIHtcbiAgICAgICAgICAgICAgICAgICAgY2hhbmdlZEZpZWxkcy5wdXNoKGtleSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZ3VpRW50aXR5TW9kZWwgPSB0aGlzLmF1ZGl0TW9kZWwuZmlsdGVyKG0gPT4gbS5lbnRpdHlOYW1lID09PSBlbnRpdHlDaGFuZ2VzLmVudGl0eVR5cGUpWzBdO1xuXG4gICAgICAgIGNvbnN0IGRlc2MgPSBuZXcgVGFibGVEZXNjcmlwdG9yKE1uZ0VudGl0eVJldmlzaW9uQ2hhbmdlU3RhdGUsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCBndWlFbnRpdHlNb2RlbC5lbnRpdHlOYW1lKS53aXRoQ2xhc3NOYW1lKCdweS0yJyk7XG4gICAgICAgIGlmIChndWlFbnRpdHlNb2RlbC5lbnRpdHlOYW1lKSB7XG4gICAgICAgICAgICBkZXNjLndpdGhUaXRsZShndWlFbnRpdHlNb2RlbC5lbnRpdHlOYW1lKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGRlc2MuYWRkQ29sdW1uKCdyZXZUeXBlJykud2l0aFRpdGxlKCdNbmdFbnRpdHlSZXZpc2lvbkNoYW5nZVN0YXRlLnByb3BlcnRpZXMucmV2VHlwZScpLmFzRW51bShNbmdSZXZpc2lvblR5cGVEdG8pO1xuXG4gICAgICAgIGlmIChndWlFbnRpdHlNb2RlbC5wcm9wZXJ0aWVzKSB7XG4gICAgICAgICAgICBBdWRpdFV0aWwuYWRkQ29sdW1uc0Zyb21Nb2RlbChkZXNjLCBndWlFbnRpdHlNb2RlbC5wcm9wZXJ0aWVzLCB1bmRlZmluZWQsIGZhbHNlLCBmYWxzZSk7XG4gICAgICAgIH1cblxuICAgICAgICBkZXNjLndpdGhSb3dDbGFzc05hbWUodW5kZWZpbmVkLCAoXywgaXRlbSkgPT4gKGl0ZW0gPyAoaXRlbS5jb2xvciA9PT0gJ2dyZWVuJyA/ICdhdWRpdC1yb3ctYWRkZWQnIDogJ2F1ZGl0LXJvdy1kZWxldGVkJykgOiAnJykpO1xuICAgICAgICBkZXNjLmNvbHVtbnMuZm9yRWFjaChjb2wgPT4ge1xuICAgICAgICAgICAgaWYgKGNoYW5nZWRGaWVsZHMubGVuZ3RoID4gMCAmJiBjaGFuZ2VkRmllbGRzLnNvbWUodmFsID0+IGNvbC5wcm9wZXJ0eSA9PT0gdmFsKSkge1xuICAgICAgICAgICAgICAgIGNvbC53aXRoQ2xhc3NOYW1lKCdhdWRpdC1jZWxsJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGRlc2Mud2l0aFBhZ2luYXRpb25Nb2RlKFRhYmxlUGFnaW5hdGlvbk1vZGVFbnVtLlBhZ2luYXRpb24pO1xuICAgICAgICBkZXNjLndpdGhDdXJyZW50Q29sdW1uc1Jlb3JkZXJhYmxlKCk7XG4gICAgICAgIGRlc2Mud2l0aEN1cnJlbnRDb2x1bW5zVG9nZ2xlYWJsZSgpO1xuICAgICAgICBkZXNjLndpdGhEYXRhS2V5KGBFbnRpdHlDaGFuZ2VGaWVsZF8ke2VudGl0eUNoYW5nZXMuZW50aXR5VHlwZSA/PyAnZGVmYXVsdCd9YCk7XG5cbiAgICAgICAgcmV0dXJuIGRlc2M7XG4gICAgfVxufVxuIiwiPGRpdiAqbmdJZj1cIm1vZGVsRmV0Y2hlZCB8IGFzeW5jOyBlbHNlIGxvYWRpbmdcIj5cbiAgICA8bW5nLXRhYmxlICpuZ0Zvcj1cImxldCBlYyBvZiBlbnRpdHlDaGFuZ2VzXCIgW2l0ZW1zXT1cImVjLml0ZW1zXCIgW2Rlc2NyaXB0b3JdPVwiY3JlYXRlRGVzY3JpcHRvcihlYylcIj48L21uZy10YWJsZT5cbjwvZGl2PlxuPG5nLXRlbXBsYXRlICNsb2FkaW5nPlxuICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWNlbnRlclwiPlxuICAgICAgICA8aSBjbGFzcz1cInBpIHBpLXNwaW4gcGktc3Bpbm5lclwiIHN0eWxlPVwiZm9udC1zaXplOiAycmVtXCI+PC9pPlxuICAgIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|
|
@@ -2,10 +2,10 @@ import { Component } from '@angular/core';
|
|
|
2
2
|
import { RouterOutlet } from '@angular/router';
|
|
3
3
|
import * as i0 from "@angular/core";
|
|
4
4
|
export class MngAuditPageComponent {
|
|
5
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.
|
|
6
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.
|
|
5
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.6", ngImport: i0, type: MngAuditPageComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
6
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.6", type: MngAuditPageComponent, isStandalone: true, selector: "mng-audit-page", ngImport: i0, template: "<router-outlet></router-outlet>\n", dependencies: [{ kind: "directive", type: RouterOutlet, selector: "router-outlet", inputs: ["name"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }] }); }
|
|
7
7
|
}
|
|
8
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.
|
|
8
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.6", ngImport: i0, type: MngAuditPageComponent, decorators: [{
|
|
9
9
|
type: Component,
|
|
10
10
|
args: [{ standalone: true, selector: 'mng-audit-page', imports: [RouterOutlet], template: "<router-outlet></router-outlet>\n" }]
|
|
11
11
|
}] });
|
package/esm2022/lib/components/pages/entity-revisions/audit-entity-revisions-page.component.mjs
CHANGED
|
@@ -7,10 +7,10 @@ import { FormlyModule } from '@ngx-formly/core';
|
|
|
7
7
|
import { TranslateModule } from '@ngx-translate/core';
|
|
8
8
|
import { combineLatest, throwError } from 'rxjs';
|
|
9
9
|
import { map } from 'rxjs/operators';
|
|
10
|
-
import { AMngTableviewRouteComponent,
|
|
11
|
-
import { MngGuiEntityModelDto } from '../../../api/models/guiEntityModel';
|
|
10
|
+
import { AMngTableviewRouteComponent, ActionEditorDetailsDescriptor, LookupDataProvider, MediusQueryResult, MngDropdownComponent, MngInternalError, MngTableviewRouteComponent, TableviewDataProvider, TableviewDescriptor } from '@mediusinc/mng-commons';
|
|
12
11
|
import { MngAuditRevisionsApiService } from '../../../api/services/audit-revisions-api.service';
|
|
13
12
|
import { MngAuditService } from '../../../api/services/audit.service';
|
|
13
|
+
import { MngGuiEntityModelWithI18n } from '../../../models/guiEntityModelWithI18n.model';
|
|
14
14
|
import { MngRevEntityWithId } from '../../../models/revEntityWithId.model';
|
|
15
15
|
import { AuditUtil } from '../../../utils/audit.util';
|
|
16
16
|
import * as i0 from "@angular/core";
|
|
@@ -25,17 +25,25 @@ export class MngAuditEntityRevisionsPageComponent extends AMngTableviewRouteComp
|
|
|
25
25
|
this.auditService = inject(MngAuditService);
|
|
26
26
|
this.revisisonsApiService = inject(MngAuditRevisionsApiService);
|
|
27
27
|
this.showTableview = signal(false);
|
|
28
|
-
this.revisionEntitiesLookupProvider = new LookupDataProvider(
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
28
|
+
this.revisionEntitiesLookupProvider = new LookupDataProvider(MngGuiEntityModelWithI18n).withLookup(() => this.auditService.auditModel$.pipe(map(model => {
|
|
29
|
+
const modelI18n = model;
|
|
30
|
+
modelI18n.sort((m1, m2) => {
|
|
31
|
+
if (m1.entityName && m2.entityName) {
|
|
32
|
+
return m1.entityName.localeCompare(m2.entityName);
|
|
33
|
+
}
|
|
34
|
+
else if (m1.entityName && !m2.entityName) {
|
|
35
|
+
return 1;
|
|
36
|
+
}
|
|
37
|
+
else {
|
|
38
|
+
return -1;
|
|
39
|
+
}
|
|
40
|
+
});
|
|
41
|
+
modelI18n.forEach(item => {
|
|
42
|
+
const translatedEntityName = this.translateService.instant('AuditEntities.' + item.entityName);
|
|
43
|
+
item.entityNameI18n = translatedEntityName.includes('AuditEntities.') ? item.entityName : translatedEntityName;
|
|
44
|
+
});
|
|
45
|
+
return modelI18n;
|
|
46
|
+
})));
|
|
39
47
|
}
|
|
40
48
|
ngOnInit() {
|
|
41
49
|
this.route.paramMap.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(params => {
|
|
@@ -104,11 +112,7 @@ export class MngAuditEntityRevisionsPageComponent extends AMngTableviewRouteComp
|
|
|
104
112
|
throw new MngInternalError('No revision model or revision entity is provided for tableview.');
|
|
105
113
|
}
|
|
106
114
|
const entityName = this.selectedRevisionEntity.entityName;
|
|
107
|
-
const detailsAction = new
|
|
108
|
-
.withPosition(ActionPositionEnum.RowClick)
|
|
109
|
-
.withRouteTrigger(':itemId')
|
|
110
|
-
.withFetchFunction(ActionDataProviderUtil.runFetchOrFail)
|
|
111
|
-
.withTableviewCategory(TableviewActionDefaultCategories.DETAILS)
|
|
115
|
+
const detailsAction = new ActionEditorDetailsDescriptor(this.descriptor.detailsEditor)
|
|
112
116
|
.withFetchFunction(ctx => {
|
|
113
117
|
if (!entityName) {
|
|
114
118
|
return throwError(() => new MngInternalError('No revision entity is provided for details.'));
|
|
@@ -119,15 +123,15 @@ export class MngAuditEntityRevisionsPageComponent extends AMngTableviewRouteComp
|
|
|
119
123
|
const revId = ctx.parameters.itemId.toString().split('_')[0];
|
|
120
124
|
const itemId = ctx.parameters.itemId.toString().split('_')[1];
|
|
121
125
|
return this.revisisonsApiService.fetchRevisionsWithStateForEntityType(entityName, revId, itemId);
|
|
122
|
-
})
|
|
123
|
-
|
|
126
|
+
})
|
|
127
|
+
.withEditorTitle('pages.entityRevisions.actions.details.editor.title');
|
|
124
128
|
return [detailsAction];
|
|
125
129
|
}
|
|
126
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.
|
|
127
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.
|
|
130
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.6", ngImport: i0, type: MngAuditEntityRevisionsPageComponent, deps: [{ token: i1.Router }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
131
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.6", type: MngAuditEntityRevisionsPageComponent, isStandalone: true, selector: "mng-audit-entity-revisions-page", usesInheritance: true, ngImport: i0, template: "<div class=\"card\">\n <div class=\"field mb-0\">\n <mng-dropdown\n id=\"revisionEntityDropdown\"\n [placeholder]=\"'pages.entityRevisions.dropdown.placeholder' | translate\"\n [itemsLabelProperty]=\"'entityNameI18n'\"\n [(ngModel)]=\"selectedRevisionEntity\"\n (valueChange)=\"onRevisionEntityChange()\"\n [dataProvider]=\"revisionEntitiesLookupProvider\"></mng-dropdown>\n <small *ngIf=\"!selectedRevisionEntity\" class=\"block\">\n {{ 'pages.entityRevisions.dropdown.helpText' | translate }}\n </small>\n </div>\n</div>\n<div *ngIf=\"showTableview()\">\n <mng-tableview-route [descriptor]=\"descriptor\" [dataProvider]=\"dataProvider\" [actions]=\"actions\"></mng-tableview-route>\n</div>\n", dependencies: [{ kind: "component", type: MngDropdownComponent, selector: "mng-dropdown", inputs: ["dataProvider", "dataKeyProperty", "itemsLabelProperty", "itemsLabelTranslate", "itemsValueProperty", "itemsDisabledProperty", "multiselect", "placeholder", "showClear", "selectFirstItem", "className", "dropdownClassName", "changeValueOnBlur"], outputs: ["valueChange"] }, { kind: "component", type: MngTableviewRouteComponent, selector: "mng-tableview-route", inputs: ["descriptor", "dataProvider", "actions"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: FormlyModule }] }); }
|
|
128
132
|
}
|
|
129
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.
|
|
133
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.6", ngImport: i0, type: MngAuditEntityRevisionsPageComponent, decorators: [{
|
|
130
134
|
type: Component,
|
|
131
|
-
args: [{ standalone: true, selector: 'mng-audit-entity-revisions-page', imports: [MngDropdownComponent, MngTableviewRouteComponent, FormsModule, AsyncPipe, NgIf, TranslateModule, FormlyModule], template: "<div class=\"card\">\n <div class=\"field mb-0\">\n <mng-dropdown\n id=\"revisionEntityDropdown\"\n [placeholder]=\"'pages.entityRevisions.dropdown.placeholder' | translate\"\n [itemsLabelProperty]=\"'
|
|
135
|
+
args: [{ standalone: true, selector: 'mng-audit-entity-revisions-page', imports: [MngDropdownComponent, MngTableviewRouteComponent, FormsModule, AsyncPipe, NgIf, TranslateModule, FormlyModule], template: "<div class=\"card\">\n <div class=\"field mb-0\">\n <mng-dropdown\n id=\"revisionEntityDropdown\"\n [placeholder]=\"'pages.entityRevisions.dropdown.placeholder' | translate\"\n [itemsLabelProperty]=\"'entityNameI18n'\"\n [(ngModel)]=\"selectedRevisionEntity\"\n (valueChange)=\"onRevisionEntityChange()\"\n [dataProvider]=\"revisionEntitiesLookupProvider\"></mng-dropdown>\n <small *ngIf=\"!selectedRevisionEntity\" class=\"block\">\n {{ 'pages.entityRevisions.dropdown.helpText' | translate }}\n </small>\n </div>\n</div>\n<div *ngIf=\"showTableview()\">\n <mng-tableview-route [descriptor]=\"descriptor\" [dataProvider]=\"dataProvider\" [actions]=\"actions\"></mng-tableview-route>\n</div>\n" }]
|
|
132
136
|
}], ctorParameters: function () { return [{ type: i1.Router }]; } });
|
|
133
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXVkaXQtZW50aXR5LXJldmlzaW9ucy1wYWdlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9wYWdlcy9lbnRpdHktcmV2aXNpb25zL2F1ZGl0LWVudGl0eS1yZXZpc2lvbnMtcGFnZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvcGFnZXMvZW50aXR5LXJldmlzaW9ucy9hdWRpdC1lbnRpdHktcmV2aXNpb25zLXBhZ2UuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxJQUFJLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUNoRCxPQUFPLEVBQUMsU0FBUyxFQUFFLFVBQVUsRUFBMEIsTUFBTSxFQUFFLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUM1RixPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUM5RCxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBRXZDLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUM5QyxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFDcEQsT0FBTyxFQUFDLGFBQWEsRUFBRSxVQUFVLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDL0MsT0FBTyxFQUFDLEdBQUcsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBRW5DLE9BQU8sRUFDSCwyQkFBMkIsRUFDM0Isc0JBQXNCLEVBRXRCLHNCQUFzQixFQUN0Qiw0QkFBNEIsRUFDNUIsMEJBQTBCLEVBQzFCLGtCQUFrQixFQUNsQixrQkFBa0IsRUFDbEIsaUJBQWlCLEVBQ2pCLG9CQUFvQixFQUNwQixnQkFBZ0IsRUFD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LENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUM3RCxNQUFNLE1BQU0sR0FBRyxHQUFHLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDOUQsT0FBTyxJQUFJLENBQUMsb0JBQW9CLENBQUMsb0NBQW9DLENBQUMsVUFBVSxFQUFFLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQztRQUNyRyxDQUFDLENBQUMsQ0FBQztRQUNQLGFBQWEsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLElBQUksNEJBQTRCLENBQUMsYUFBYSxFQUFFLDBCQUEwQixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN0SCxPQUFPLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDM0IsQ0FBQzs4R0FqSVEsb0NBQW9DO2tHQUFwQyxvQ0FBb0Msa0hDekNqRCw4eEJBaUJBLDRDRHFCYyxvQkFBb0IsaVZBQUUsMEJBQTBCLGtIQUFFLFdBQVcsK1ZBQWEsSUFBSSw0RkFBRSxlQUFlLDJGQUFFLFlBQVk7OzJGQUc5RyxvQ0FBb0M7a0JBTmhELFNBQVM7aUNBQ00sSUFBSSxZQUNOLGlDQUFpQyxXQUNsQyxDQUFDLG9CQUFvQixFQUFFLDBCQUEwQixFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLGVBQWUsRUFBRSxZQUFZLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0FzeW5jUGlwZSwgTmdJZn0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7Q29tcG9uZW50LCBEZXN0cm95UmVmLCBPbkluaXQsIFdyaXRhYmxlU2lnbmFsLCBpbmplY3QsIHNpZ25hbH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge3Rha2VVbnRpbERlc3Ryb3llZH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHtGb3Jtc01vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtSb3V0ZXJ9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5cbmltcG9ydCB7Rm9ybWx5TW9kdWxlfSBmcm9tICdAbmd4LWZvcm1seS9jb3JlJztcbmltcG9ydCB7VHJhbnNsYXRlTW9kdWxlfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7Y29tYmluZUxhdGVzdCwgdGhyb3dFcnJvcn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge21hcH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQge1xuICAgIEFNbmdUYWJsZXZpZXdSb3V0ZUNvbXBvbmVudCxcbiAgICBBY3Rpb25EYXRhUHJvdmlkZXJVdGlsLFxuICAgIEFjdGlvbkRlc2NyaXB0b3IsXG4gICAgQWN0aW9uRWRpdG9yRGVzY3JpcHRvcixcbiAgICBBY3Rpb25FZGl0b3JTdWJtaXREZXNjcmlwdG9yLFxuICAgIEFjdGlvbkVkaXRvclN1Ym1pdFR5cGVFbnVtLFxuICAgIEFjdGlvblBvc2l0aW9uRW51bSxcbiAgICBMb29rdXBEYXRhUHJvdmlkZXIsXG4gICAgTWVkaXVzUXVlcnlSZXN1bHQsXG4gICAgTW5nRHJvcGRvd25Db21wb25lbnQsXG4gICAgTW5nSW50ZXJuYWxFcnJvcixcbiAgICBNbmdUYWJsZXZpZXdSb3V0ZUNvbXBvbmVudCxcbiAgICBUYWJsZXZpZXdBY3Rpb25EZWZhdWx0Q2F0ZWdvcmllcyxcbiAgICBUYWJsZXZpZXdEYXRhUHJvdmlkZXIsXG4gICAgVGFibGV2aWV3RGVzY3JpcHRvclxufSBmcm9tICdAbWVkaXVzaW5jL21uZy1jb21tb25zJztcblxuaW1wb3J0IHtNbmdHdWlFbnRpdHlNb2RlbER0b30gZnJvbSAnLi4vLi4vLi4vYXBpL21vZGVscy9ndWlFbnRpdHlNb2RlbCc7XG5pbXBvcnQge01uZ0F1ZGl0UmV2aXNpb25zQXBpU2VydmljZX0gZnJvbSAnLi4vLi4vLi4vYXBpL3NlcnZpY2VzL2F1ZGl0LXJldmlzaW9ucy1hcGkuc2VydmljZSc7XG5pbXBvcnQge01uZ0F1ZGl0U2VydmljZX0gZnJvbSAnLi4vLi4vLi4vYXBpL3NlcnZpY2VzL2F1ZGl0LnNlcnZpY2UnO1xuaW1wb3J0IHtNbmdSZXZFbnRpdHlXaXRoSWR9IGZyb20gJy4uLy4uLy4uL21vZGVscy9yZXZFbnRpdHlXaXRoSWQubW9kZWwnO1xuaW1wb3J0IHtBdWRpdFV0aWx9IGZyb20gJy4uLy4uLy4uL3V0aWxzL2F1ZGl0LnV0aWwnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHNlbGVjdG9yOiAnbW5nLWF1ZGl0LWVudGl0eS1yZXZpc2lvbnMtcGFnZScsXG4gICAgaW1wb3J0czogW01uZ0Ryb3Bkb3duQ29tcG9uZW50LCBNbmdUYWJsZXZpZXdSb3V0ZUNvbXBvbmVudCwgRm9ybXNNb2R1bGUsIEFzeW5jUGlwZSwgTmdJZiwgVHJhbnNsYXRlTW9kdWxlLCBGb3JtbHlNb2R1bGVdLFxuICAgIHRlbXBsYXRlVXJsOiAnYXVkaXQtZW50aXR5LXJldmlzaW9ucy1wYWdlLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBNbmdBdWRpdEVudGl0eVJldmlzaW9uc1BhZ2VDb21wb25lbnQgZXh0ZW5kcyBBTW5nVGFibGV2aWV3Um91dGVDb21wb25lbnQ8TW5nUmV2RW50aXR5V2l0aElkLCB1bmtub3duPiBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgcHJpdmF0ZSBkZXN0cm95UmVmID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xuICAgIHByaXZhdGUgYXVkaXRTZXJ2aWNlID0gaW5qZWN0KE1uZ0F1ZGl0U2VydmljZSk7XG4gICAgcHJpdmF0ZSByZXZpc2lzb25zQXBpU2VydmljZSA9IGluamVjdChNbmdBdWRpdFJldmlzaW9uc0FwaVNlcnZpY2UpO1xuXG4gICAgcHVibGljIHJldk1vZGVsPzogTW5nR3VpRW50aXR5TW9kZWxEdG87XG4gICAgcHVibGljIHNlbGVjdGVkUmV2aXNpb25FbnRpdHk/OiBNbmdHdWlFbnRpdHlNb2RlbER0bztcbiAgICBwdWJsaWMgcmV2aXNpb25FbnRpdGllc0xvb2t1cFByb3ZpZGVyPzogTG9va3VwRGF0YVByb3ZpZGVyPE1uZ0d1aUVudGl0eU1vZGVsRHRvLCBuZXZlcj47XG5cbiAgICBwdWJsaWMgc2hvd1RhYmxldmlldzogV3JpdGFibGVTaWduYWw8Ym9vbGVhbj4gPSBzaWduYWwoZmFsc2UpO1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSByb3V0ZXI6IFJvdXRlcikge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLnJldmlzaW9uRW50aXRpZXNMb29rdXBQcm92aWRlciA9IG5ldyBMb29rdXBEYXRhUHJvdmlkZXI8TW5nR3VpRW50aXR5TW9kZWxEdG8sIG5ldmVyPihNbmdHdWlFbnRpdHlNb2RlbER0bykud2l0aExvb2t1cCgoKSA9PlxuICAgICAgICAgICAgdGhpcy5hdWRpdFNlcnZpY2UuYXVkaXRNb2RlbCQucGlwZShcbiAgICAgICAgICAgICAgICBtYXAobW9kZWwgPT5cbiAgICAgICAgICAgICAgICAgICAgbW9kZWwuc29ydCgobTEsIG0yKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAobTEuZW50aXR5TmFtZSAmJiBtMi5lbnRpdHlOYW1lKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG0xLmVudGl0eU5hbWUubG9jYWxlQ29tcGFyZShtMi5lbnRpdHlOYW1lKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobTEuZW50aXR5TmFtZSAmJiAhbTIuZW50aXR5TmFtZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIG92ZXJyaWRlIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLnJvdXRlLnBhcmFtTWFwLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZikpLnN1YnNjcmliZShwYXJhbXMgPT4ge1xuICAgICAgICAgICAgY29uc3QgZW50aXR5Q2xhc3MgPSBwYXJhbXMuZ2V0KCdlbnRpdHlDbGFzcycpO1xuICAgICAgICAgICAgaWYgKGVudGl0eUNsYXNzKSB7XG4gICAgICAgICAgICAgICAgY29tYmluZUxhdGVzdChbdGhpcy5hdWRpdFNlcnZpY2UuYXVkaXRNb2RlbCQsIHRoaXMuYXVkaXRTZXJ2aWNlLnJldk1vZGVsJF0pLnN1YnNjcmliZSgoW2VudGl0aWVzLCByZXZNb2RlbF0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZXZNb2RlbCA9IHJldk1vZGVsO1xuXG4gICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3QgZSBvZiBlbnRpdGllcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGUuZW50aXR5TmFtZSA9PT0gZW50aXR5Q2xhc3MpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkUmV2aXNpb25FbnRpdHkgPSBlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1cGVyLm5nT25Jbml0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLnNob3dUYWJsZXZpZXcuc2V0KHRydWUpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25SZXZpc2lvbkVudGl0eUNoYW5nZSgpIHtcbiAgICAgICAgdGhpcy5zaG93VGFibGV2aWV3LnNldChmYWxzZSk7XG4gICAgICAgIGlmICh0aGlzLnNlbGVjdGVkUmV2aXNpb25FbnRpdHkpIHtcbiAgICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnL2F1ZGl0L2VudGl0eS1yZXZpc2lvbnMvJyArIHRoaXMuc2VsZWN0ZWRSZXZpc2lvbkVudGl0eS5lbnRpdHlOYW1lXSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy9hdWRpdC9lbnRpdHktcmV2aXNpb25zLyddKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByb3RlY3RlZCBjcmVhdGVUYWJsZXZpZXdEZXNjcmlwdG9yKCkge1xuICAgICAgICBpZiAoIXRoaXMucmV2TW9kZWwgfHwgIXRoaXMuc2VsZWN0ZWRSZXZpc2lvbkVudGl0eT8uZW50aXR5TmFtZSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IE1uZ0ludGVybmFsRXJyb3IoJ05vIHJldmlzaW9uIG1vZGVsIG9yIHJldmlzaW9uIGVudGl0eSBpcyBwcm92aWRlZCBmb3IgdGFibGV2aWV3LicpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZGVzYyA9IG5ldyBUYWJsZXZpZXdEZXNjcmlwdG9yKE1uZ1JldkVudGl0eVdpdGhJZCwgJ21lcmdlZElkJywgdW5kZWZpbmVkLCB0aGlzLnNlbGVjdGVkUmV2aXNpb25FbnRpdHkuZW50aXR5TmFtZSk7XG5cbiAgICAgICAgQXVkaXRVdGlsLmJ1aWxkRGVzY3JpcHRvckZvckVudGl0eVJldmlzaW9uKGRlc2MsIHRoaXMucmV2TW9kZWwsIHRoaXMuc2VsZWN0ZWRSZXZpc2lvbkVudGl0eSk7XG5cbiAgICAgICAgZGVzYy50YWJsZS53aXRoQ29sdW1uc1Jlc2l6YWJsZSgpO1xuICAgICAgICBkZXNjLnRhYmxlLndpdGhDdXJyZW50Q29sdW1uc1Jlb3JkZXJhYmxlKCk7XG4gICAgICAgIGRlc2MudGFibGUud2l0aEN1cnJlbnRDb2x1bW5zVG9nZ2xlYWJsZSgpO1xuICAgICAgICBkZXNjLnRhYmxlLndpdGhEYXRhS2V5KGBFbnRpdHlSZXZpc2lvbnNQYWdlXyR7dGhpcy5zZWxlY3RlZFJldmlzaW9uRW50aXR5LmVudGl0eU5hbWV9YCk7XG5cbiAgICAgICAgcmV0dXJuIGRlc2M7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGNyZWF0ZVRhYmxldmlld0RhdGFQcm92aWRlcigpIHtcbiAgICAgICAgaWYgKCF0aGlzLnJldk1vZGVsIHx8ICF0aGlzLnNlbGVjdGVkUmV2aXNpb25FbnRpdHk/LmVudGl0eU5hbWUpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBNbmdJbnRlcm5hbEVycm9yKCdObyByZXZpc2lvbiBtb2RlbCBvciByZXZpc2lvbiBlbnRpdHkgaXMgcHJvdmlkZWQgZm9yIHRhYmxldmlldy4nKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGVudGl0eU5hbWUgPSB0aGlzLnNlbGVjdGVkUmV2aXNpb25FbnRpdHkuZW50aXR5TmFtZTtcbiAgICAgICAgcmV0dXJuIG5ldyBUYWJsZXZpZXdEYXRhUHJvdmlkZXIoTW5nUmV2RW50aXR5V2l0aElkKS53aXRoR2V0QWxsKHFwID0+XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkUmV2aXNpb25FbnRpdHk/LmVudGl0eU5hbWVcbiAgICAgICAgICAgICAgICA/IGNvbWJpbmVMYXRlc3QoW1xuICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmV2aXNpc29uc0FwaVNlcnZpY2UuY291bnRSZXZpc2lvbnNXaXRoU3RhdGVGb3JFbnRpdHlUeXBlKHFwLCBlbnRpdHlOYW1lKSxcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJldmlzaXNvbnNBcGlTZXJ2aWNlLmxpc3RSZXZpc2lvbnNXaXRoU3RhdGVGb3JFbnRpdHlUeXBlKHFwLCBlbnRpdHlOYW1lKVxuICAgICAgICAgICAgICAgICAgXSkucGlwZShcbiAgICAgICAgICAgICAgICAgICAgICBtYXAoKFtjb3VudCwgdmFsdWVzXSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCByZXZFbnRpdHlXaXRoU3RhdGVBbmRJZExpc3QgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCByZXZFbnRpdHlXaXRoU3RhdGUgb2YgdmFsdWVzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCByZXZFbnRpdHlXaXRoU3RhdGVBbmRJZCA9IG5ldyBNbmdSZXZFbnRpdHlXaXRoSWQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldkVudGl0eVdpdGhTdGF0ZUFuZElkLm1lcmdlZElkID0gcmV2RW50aXR5V2l0aFN0YXRlLnJldkVudGl0eT8uWydyZXYnXSArICdfJyArIHJldkVudGl0eVdpdGhTdGF0ZS5lbnRpdHlTdGF0ZT8uWydpZCddO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV2RW50aXR5V2l0aFN0YXRlQW5kSWQucmV2VHlwZSA9IHJldkVudGl0eVdpdGhTdGF0ZS5yZXZUeXBlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV2RW50aXR5V2l0aFN0YXRlQW5kSWQucmV2RW50aXR5ID0gcmV2RW50aXR5V2l0aFN0YXRlLnJldkVudGl0eTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldkVudGl0eVdpdGhTdGF0ZUFuZElkLmVudGl0eVN0YXRlID0gcmV2RW50aXR5V2l0aFN0YXRlLmVudGl0eVN0YXRlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV2RW50aXR5V2l0aFN0YXRlQW5kSWQuZW50aXR5Q2xhc3NOYW1lID0gcmV2RW50aXR5V2l0aFN0YXRlLmVudGl0eUNsYXNzTmFtZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldkVudGl0eVdpdGhTdGF0ZUFuZElkTGlzdC5wdXNoKHJldkVudGl0eVdpdGhTdGF0ZUFuZElkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gTWVkaXVzUXVlcnlSZXN1bHQuZnJvbUFycmF5KHJldkVudGl0eVdpdGhTdGF0ZUFuZElkTGlzdCwgY291bnQpO1xuICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgOiB0aHJvd0Vycm9yKCgpID0+IG5ldyBNbmdJbnRlcm5hbEVycm9yKCdObyByZXZpc2lvbiBlbnRpdHkgaXMgcHJvdmlkZWQgZm9yIGxpc3QuJykpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIG92ZXJyaWRlIGNyZWF0ZUFjdGlvbkRlc2NyaXB0b3JzKCk6IEFycmF5PEFjdGlvbkRlc2NyaXB0b3I8TW5nUmV2RW50aXR5V2l0aElkPj4ge1xuICAgICAgICBpZiAoIXRoaXMucmV2TW9kZWwgfHwgIXRoaXMuc2VsZWN0ZWRSZXZpc2lvbkVudGl0eT8uZW50aXR5TmFtZSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IE1uZ0ludGVybmFsRXJyb3IoJ05vIHJldmlzaW9uIG1vZGVsIG9yIHJldmlzaW9uIGVudGl0eSBpcyBwcm92aWRlZCBmb3IgdGFibGV2aWV3LicpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZW50aXR5TmFtZSA9IHRoaXMuc2VsZWN0ZWRSZXZpc2lvbkVudGl0eS5lbnRpdHlOYW1lO1xuICAgICAgICBjb25zdCBkZXRhaWxzQWN0aW9uID0gbmV3IEFjdGlvbkVkaXRvckRlc2NyaXB0b3IodGhpcy5kZXNjcmlwdG9yLmRldGFpbHNFZGl0b3IsICdlbnRpdHktcmV2aXNpb24tZGV0YWlscycpXG4gICAgICAgICAgICAud2l0aFBvc2l0aW9uKEFjdGlvblBvc2l0aW9uRW51bS5Sb3dDbGljaylcbiAgICAgICAgICAgIC53aXRoUm91dGVUcmlnZ2VyKCc6aXRlbUlkJylcbiAgICAgICAgICAgIC53aXRoRmV0Y2hGdW5jdGlvbihBY3Rpb25EYXRhUHJvdmlkZXJVdGlsLnJ1bkZldGNoT3JGYWlsKVxuICAgICAgICAgICAgLndpdGhUYWJsZXZpZXdDYXRlZ29yeShUYWJsZXZpZXdBY3Rpb25EZWZhdWx0Q2F0ZWdvcmllcy5ERVRBSUxTKVxuICAgICAgICAgICAgLndpdGhGZXRjaEZ1bmN0aW9uKGN0eCA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCFlbnRpdHlOYW1lKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IG5ldyBNbmdJbnRlcm5hbEVycm9yKCdObyByZXZpc2lvbiBlbnRpdHkgaXMgcHJvdmlkZWQgZm9yIGRldGFpbHMuJykpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoIWN0eC5wYXJhbWV0ZXJzLml0ZW1JZCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBuZXcgTW5nSW50ZXJuYWxFcnJvcignTm8gaXRlbSBpZCBmb3IgcmV2aXNpb24gZW50aXR5IGRldGFpbHMgaXMgcHJvdmlkZWQuJykpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb25zdCByZXZJZCA9IGN0eC5wYXJhbWV0ZXJzLml0ZW1JZC50b1N0cmluZygpLnNwbGl0KCdfJylbMF07XG4gICAgICAgICAgICAgICAgY29uc3QgaXRlbUlkID0gY3R4LnBhcmFtZXRlcnMuaXRlbUlkLnRvU3RyaW5nKCkuc3BsaXQoJ18nKVsxXTtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZXZpc2lzb25zQXBpU2VydmljZS5mZXRjaFJldmlzaW9uc1dpdGhTdGF0ZUZvckVudGl0eVR5cGUoZW50aXR5TmFtZSwgcmV2SWQsIGl0ZW1JZCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgZGV0YWlsc0FjdGlvbi53aXRoRWRpdG9yQWN0aW9ucyhbbmV3IEFjdGlvbkVkaXRvclN1Ym1pdERlc2NyaXB0b3IoZGV0YWlsc0FjdGlvbiwgQWN0aW9uRWRpdG9yU3VibWl0VHlwZUVudW0uQ2FuY2VsKV0pO1xuICAgICAgICByZXR1cm4gW2RldGFpbHNBY3Rpb25dO1xuICAgIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJjYXJkXCI+XG4gICAgPGRpdiBjbGFzcz1cImZpZWxkIG1iLTBcIj5cbiAgICAgICAgPG1uZy1kcm9wZG93blxuICAgICAgICAgICAgaWQ9XCJyZXZpc2lvbkVudGl0eURyb3Bkb3duXCJcbiAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCIncGFnZXMuZW50aXR5UmV2aXNpb25zLmRyb3Bkb3duLnBsYWNlaG9sZGVyJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICBbaXRlbXNMYWJlbFByb3BlcnR5XT1cIidlbnRpdHlOYW1lJ1wiXG4gICAgICAgICAgICBbKG5nTW9kZWwpXT1cInNlbGVjdGVkUmV2aXNpb25FbnRpdHlcIlxuICAgICAgICAgICAgKHZhbHVlQ2hhbmdlKT1cIm9uUmV2aXNpb25FbnRpdHlDaGFuZ2UoKVwiXG4gICAgICAgICAgICBbZGF0YVByb3ZpZGVyXT1cInJldmlzaW9uRW50aXRpZXNMb29rdXBQcm92aWRlclwiPjwvbW5nLWRyb3Bkb3duPlxuICAgICAgICA8c21hbGwgKm5nSWY9XCIhc2VsZWN0ZWRSZXZpc2lvbkVudGl0eVwiIGNsYXNzPVwiYmxvY2tcIj5cbiAgICAgICAgICAgIHt7ICdwYWdlcy5lbnRpdHlSZXZpc2lvbnMuZHJvcGRvd24uaGVscFRleHQnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgIDwvc21hbGw+XG4gICAgPC9kaXY+XG48L2Rpdj5cbjxkaXYgKm5nSWY9XCJzaG93VGFibGV2aWV3KClcIj5cbiAgICA8bW5nLXRhYmxldmlldy1yb3V0ZSBbZGVzY3JpcHRvcl09XCJkZXNjcmlwdG9yXCIgW2RhdGFQcm92aWRlcl09XCJkYXRhUHJvdmlkZXJcIiBbYWN0aW9uc109XCJhY3Rpb25zXCI+PC9tbmctdGFibGV2aWV3LXJvdXRlPlxuPC9kaXY+XG4iXX0=
|
|
137
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXVkaXQtZW50aXR5LXJldmlzaW9ucy1wYWdlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9wYWdlcy9lbnRpdHktcmV2aXNpb25zL2F1ZGl0LWVudGl0eS1yZXZpc2lvbnMtcGFnZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvcGFnZXMvZW50aXR5LXJldmlzaW9ucy9hdWRpdC1lbnRpdHktcmV2aXNpb25zLXBhZ2UuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxJQUFJLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUNoRCxPQUFPLEVBQUMsU0FBUyxFQUFFLFVBQVUsRUFBMEIsTUFBTSxFQUFFLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUM1RixPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUM5RCxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBRXZDLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUM5QyxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFDcEQsT0FBTyxFQUFDLGFBQWEsRUFBRSxVQUFVLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDL0MsT0FBTyxFQUFDLEdBQUcsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBRW5DLE9BQU8sRUFDSCwyQkFBMkIsRUFFM0IsNkJBQTZCLEVBQzdCLGtCQUFrQixFQUNsQixpQkFBaUIsRUFDakIsb0JBQW9CLEVBQ3BCLGdCQUFnQixFQUNoQiwwQkFBMEIsRUFDMUIscUJBQXFCLEVBQ3JCLG1CQUFtQixFQUN0QixNQUFNLHdCQUF3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RUFBRTtnQkFDeEIsT0FBTyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxnQkFBZ0IsQ0FBQyxxREFBcUQsQ0FBQyxDQUFDLENBQUM7YUFDeEc7WUFDRCxNQUFNLEtBQUssR0FBRyxHQUFHLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDN0QsTUFBTSxNQUFNLEdBQUcsR0FBRyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzlELE9BQU8sSUFBSSxDQUFDLG9CQUFvQixDQUFDLG9DQUFvQyxDQUFDLFVBQVUsRUFBRSxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDckcsQ0FBQyxDQUFDO2FBQ0QsZUFBZSxDQUFDLG9EQUFvRCxDQUFDLENBQUM7UUFDM0UsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQzNCLENBQUM7OEdBbklRLG9DQUFvQztrR0FBcEMsb0NBQW9DLGtIQ3JDakQsa3lCQWlCQSw0Q0RpQmMsb0JBQW9CLGlWQUFFLDBCQUEwQixrSEFBRSxXQUFXLCtWQUFhLElBQUksNEZBQUUsZUFBZSwyRkFBRSxZQUFZOzsyRkFHOUcsb0NBQW9DO2tCQU5oRCxTQUFTO2lDQUNNLElBQUksWUFDTixpQ0FBaUMsV0FDbEMsQ0FBQyxvQkFBb0IsRUFBRSwwQkFBMEIsRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxlQUFlLEVBQUUsWUFBWSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtBc3luY1BpcGUsIE5nSWZ9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge0NvbXBvbmVudCwgRGVzdHJveVJlZiwgT25Jbml0LCBXcml0YWJsZVNpZ25hbCwgaW5qZWN0LCBzaWduYWx9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHt0YWtlVW50aWxEZXN0cm95ZWR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7Rm9ybXNNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7Um91dGVyfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuXG5pbXBvcnQge0Zvcm1seU1vZHVsZX0gZnJvbSAnQG5neC1mb3JtbHkvY29yZSc7XG5pbXBvcnQge1RyYW5zbGF0ZU1vZHVsZX0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQge2NvbWJpbmVMYXRlc3QsIHRocm93RXJyb3J9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHttYXB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHtcbiAgICBBTW5nVGFibGV2aWV3Um91dGVDb21wb25lbnQsXG4gICAgQWN0aW9uRGVzY3JpcHRvcixcbiAgICBBY3Rpb25FZGl0b3JEZXRhaWxzRGVzY3JpcHRvcixcbiAgICBMb29rdXBEYXRhUHJvdmlkZXIsXG4gICAgTWVkaXVzUXVlcnlSZXN1bHQsXG4gICAgTW5nRHJvcGRvd25Db21wb25lbnQsXG4gICAgTW5nSW50ZXJuYWxFcnJvcixcbiAgICBNbmdUYWJsZXZpZXdSb3V0ZUNvbXBvbmVudCxcbiAgICBUYWJsZXZpZXdEYXRhUHJvdmlkZXIsXG4gICAgVGFibGV2aWV3RGVzY3JpcHRvclxufSBmcm9tICdAbWVkaXVzaW5jL21uZy1jb21tb25zJztcblxuaW1wb3J0IHtNbmdHdWlFbnRpdHlNb2RlbER0b30gZnJvbSAnLi4vLi4vLi4vYXBpL21vZGVscy9ndWlFbnRpdHlNb2RlbCc7XG5pbXBvcnQge01uZ0F1ZGl0UmV2aXNpb25zQXBpU2VydmljZX0gZnJvbSAnLi4vLi4vLi4vYXBpL3NlcnZpY2VzL2F1ZGl0LXJldmlzaW9ucy1hcGkuc2VydmljZSc7XG5pbXBvcnQge01uZ0F1ZGl0U2VydmljZX0gZnJvbSAnLi4vLi4vLi4vYXBpL3NlcnZpY2VzL2F1ZGl0LnNlcnZpY2UnO1xuaW1wb3J0IHtNbmdHdWlFbnRpdHlNb2RlbFdpdGhJMThufSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvZ3VpRW50aXR5TW9kZWxXaXRoSTE4bi5tb2RlbCc7XG5pbXBvcnQge01uZ1JldkVudGl0eVdpdGhJZH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL3JldkVudGl0eVdpdGhJZC5tb2RlbCc7XG5pbXBvcnQge0F1ZGl0VXRpbH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvYXVkaXQudXRpbCc7XG5cbkBDb21wb25lbnQoe1xuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgc2VsZWN0b3I6ICdtbmctYXVkaXQtZW50aXR5LXJldmlzaW9ucy1wYWdlJyxcbiAgICBpbXBvcnRzOiBbTW5nRHJvcGRvd25Db21wb25lbnQsIE1uZ1RhYmxldmlld1JvdXRlQ29tcG9uZW50LCBGb3Jtc01vZHVsZSwgQXN5bmNQaXBlLCBOZ0lmLCBUcmFuc2xhdGVNb2R1bGUsIEZvcm1seU1vZHVsZV0sXG4gICAgdGVtcGxhdGVVcmw6ICdhdWRpdC1lbnRpdHktcmV2aXNpb25zLXBhZ2UuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIE1uZ0F1ZGl0RW50aXR5UmV2aXNpb25zUGFnZUNvbXBvbmVudCBleHRlbmRzIEFNbmdUYWJsZXZpZXdSb3V0ZUNvbXBvbmVudDxNbmdSZXZFbnRpdHlXaXRoSWQsIHVua25vd24+IGltcGxlbWVudHMgT25Jbml0IHtcbiAgICBwcml2YXRlIGRlc3Ryb3lSZWYgPSBpbmplY3QoRGVzdHJveVJlZik7XG4gICAgcHJpdmF0ZSBhdWRpdFNlcnZpY2UgPSBpbmplY3QoTW5nQXVkaXRTZXJ2aWNlKTtcbiAgICBwcml2YXRlIHJldmlzaXNvbnNBcGlTZXJ2aWNlID0gaW5qZWN0KE1uZ0F1ZGl0UmV2aXNpb25zQXBpU2VydmljZSk7XG5cbiAgICBwdWJsaWMgcmV2TW9kZWw/OiBNbmdHdWlFbnRpdHlNb2RlbER0bztcbiAgICBwdWJsaWMgc2VsZWN0ZWRSZXZpc2lvbkVudGl0eT86IE1uZ0d1aUVudGl0eU1vZGVsRHRvO1xuICAgIHB1YmxpYyByZXZpc2lvbkVudGl0aWVzTG9va3VwUHJvdmlkZXI/OiBMb29rdXBEYXRhUHJvdmlkZXI8TW5nR3VpRW50aXR5TW9kZWxXaXRoSTE4biwgbmV2ZXI+O1xuXG4gICAgcHVibGljIHNob3dUYWJsZXZpZXc6IFdyaXRhYmxlU2lnbmFsPGJvb2xlYW4+ID0gc2lnbmFsKGZhbHNlKTtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgcm91dGVyOiBSb3V0ZXIpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy5yZXZpc2lvbkVudGl0aWVzTG9va3VwUHJvdmlkZXIgPSBuZXcgTG9va3VwRGF0YVByb3ZpZGVyPE1uZ0d1aUVudGl0eU1vZGVsV2l0aEkxOG4sIG5ldmVyPihNbmdHdWlFbnRpdHlNb2RlbFdpdGhJMThuKS53aXRoTG9va3VwKCgpID0+XG4gICAgICAgICAgICB0aGlzLmF1ZGl0U2VydmljZS5hdWRpdE1vZGVsJC5waXBlKFxuICAgICAgICAgICAgICAgIG1hcChtb2RlbCA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG1vZGVsSTE4biA9IG1vZGVsIGFzIE1uZ0d1aUVudGl0eU1vZGVsV2l0aEkxOG5bXTtcbiAgICAgICAgICAgICAgICAgICAgbW9kZWxJMThuLnNvcnQoKG0xLCBtMikgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG0xLmVudGl0eU5hbWUgJiYgbTIuZW50aXR5TmFtZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBtMS5lbnRpdHlOYW1lLmxvY2FsZUNvbXBhcmUobTIuZW50aXR5TmFtZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG0xLmVudGl0eU5hbWUgJiYgIW0yLmVudGl0eU5hbWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgbW9kZWxJMThuLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB0cmFuc2xhdGVkRW50aXR5TmFtZSA9IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdBdWRpdEVudGl0aWVzLicgKyBpdGVtLmVudGl0eU5hbWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5lbnRpdHlOYW1lSTE4biA9IHRyYW5zbGF0ZWRFbnRpdHlOYW1lLmluY2x1ZGVzKCdBdWRpdEVudGl0aWVzLicpID8gaXRlbS5lbnRpdHlOYW1lIDogdHJhbnNsYXRlZEVudGl0eU5hbWU7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbW9kZWxJMThuO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgb3ZlcnJpZGUgbmdPbkluaXQoKSB7XG4gICAgICAgIHRoaXMucm91dGUucGFyYW1NYXAucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKSkuc3Vic2NyaWJlKHBhcmFtcyA9PiB7XG4gICAgICAgICAgICBjb25zdCBlbnRpdHlDbGFzcyA9IHBhcmFtcy5nZXQoJ2VudGl0eUNsYXNzJyk7XG4gICAgICAgICAgICBpZiAoZW50aXR5Q2xhc3MpIHtcbiAgICAgICAgICAgICAgICBjb21iaW5lTGF0ZXN0KFt0aGlzLmF1ZGl0U2VydmljZS5hdWRpdE1vZGVsJCwgdGhpcy5hdWRpdFNlcnZpY2UucmV2TW9kZWwkXSkuc3Vic2NyaWJlKChbZW50aXRpZXMsIHJldk1vZGVsXSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnJldk1vZGVsID0gcmV2TW9kZWw7XG5cbiAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCBlIG9mIGVudGl0aWVzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZS5lbnRpdHlOYW1lID09PSBlbnRpdHlDbGFzcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRSZXZpc2lvbkVudGl0eSA9IGU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VwZXIubmdPbkluaXQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuc2hvd1RhYmxldmlldy5zZXQodHJ1ZSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBvblJldmlzaW9uRW50aXR5Q2hhbmdlKCkge1xuICAgICAgICB0aGlzLnNob3dUYWJsZXZpZXcuc2V0KGZhbHNlKTtcbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRSZXZpc2lvbkVudGl0eSkge1xuICAgICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycvYXVkaXQvZW50aXR5LXJldmlzaW9ucy8nICsgdGhpcy5zZWxlY3RlZFJldmlzaW9uRW50aXR5LmVudGl0eU5hbWVdKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnL2F1ZGl0L2VudGl0eS1yZXZpc2lvbnMvJ10pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGNyZWF0ZVRhYmxldmlld0Rlc2NyaXB0b3IoKSB7XG4gICAgICAgIGlmICghdGhpcy5yZXZNb2RlbCB8fCAhdGhpcy5zZWxlY3RlZFJldmlzaW9uRW50aXR5Py5lbnRpdHlOYW1lKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgTW5nSW50ZXJuYWxFcnJvcignTm8gcmV2aXNpb24gbW9kZWwgb3IgcmV2aXNpb24gZW50aXR5IGlzIHByb3ZpZGVkIGZvciB0YWJsZXZpZXcuJyk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBkZXNjID0gbmV3IFRhYmxldmlld0Rlc2NyaXB0b3IoTW5nUmV2RW50aXR5V2l0aElkLCAnbWVyZ2VkSWQnLCB1bmRlZmluZWQsIHRoaXMuc2VsZWN0ZWRSZXZpc2lvbkVudGl0eS5lbnRpdHlOYW1lKTtcblxuICAgICAgICBBdWRpdFV0aWwuYnVpbGREZXNjcmlwdG9yRm9yRW50aXR5UmV2aXNpb24oZGVzYywgdGhpcy5yZXZNb2RlbCwgdGhpcy5zZWxlY3RlZFJldmlzaW9uRW50aXR5KTtcblxuICAgICAgICBkZXNjLnRhYmxlLndpdGhDb2x1bW5zUmVzaXphYmxlKCk7XG4gICAgICAgIGRlc2MudGFibGUud2l0aEN1cnJlbnRDb2x1bW5zUmVvcmRlcmFibGUoKTtcbiAgICAgICAgZGVzYy50YWJsZS53aXRoQ3VycmVudENvbHVtbnNUb2dnbGVhYmxlKCk7XG4gICAgICAgIGRlc2MudGFibGUud2l0aERhdGFLZXkoYEVudGl0eVJldmlzaW9uc1BhZ2VfJHt0aGlzLnNlbGVjdGVkUmV2aXNpb25FbnRpdHkuZW50aXR5TmFtZX1gKTtcblxuICAgICAgICByZXR1cm4gZGVzYztcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgY3JlYXRlVGFibGV2aWV3RGF0YVByb3ZpZGVyKCkge1xuICAgICAgICBpZiAoIXRoaXMucmV2TW9kZWwgfHwgIXRoaXMuc2VsZWN0ZWRSZXZpc2lvbkVudGl0eT8uZW50aXR5TmFtZSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IE1uZ0ludGVybmFsRXJyb3IoJ05vIHJldmlzaW9uIG1vZGVsIG9yIHJldmlzaW9uIGVudGl0eSBpcyBwcm92aWRlZCBmb3IgdGFibGV2aWV3LicpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZW50aXR5TmFtZSA9IHRoaXMuc2VsZWN0ZWRSZXZpc2lvbkVudGl0eS5lbnRpdHlOYW1lO1xuICAgICAgICByZXR1cm4gbmV3IFRhYmxldmlld0RhdGFQcm92aWRlcihNbmdSZXZFbnRpdHlXaXRoSWQpLndpdGhHZXRBbGwocXAgPT5cbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRSZXZpc2lvbkVudGl0eT8uZW50aXR5TmFtZVxuICAgICAgICAgICAgICAgID8gY29tYmluZUxhdGVzdChbXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5yZXZpc2lzb25zQXBpU2VydmljZS5jb3VudFJldmlzaW9uc1dpdGhTdGF0ZUZvckVudGl0eVR5cGUocXAsIGVudGl0eU5hbWUpLFxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmV2aXNpc29uc0FwaVNlcnZpY2UubGlzdFJldmlzaW9uc1dpdGhTdGF0ZUZvckVudGl0eVR5cGUocXAsIGVudGl0eU5hbWUpXG4gICAgICAgICAgICAgICAgICBdKS5waXBlKFxuICAgICAgICAgICAgICAgICAgICAgIG1hcCgoW2NvdW50LCB2YWx1ZXNdKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJldkVudGl0eVdpdGhTdGF0ZUFuZElkTGlzdCA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IHJldkVudGl0eVdpdGhTdGF0ZSBvZiB2YWx1ZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJldkVudGl0eVdpdGhTdGF0ZUFuZElkID0gbmV3IE1uZ1JldkVudGl0eVdpdGhJZCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV2RW50aXR5V2l0aFN0YXRlQW5kSWQubWVyZ2VkSWQgPSByZXZFbnRpdHlXaXRoU3RhdGUucmV2RW50aXR5Py5bJ3JldiddICsgJ18nICsgcmV2RW50aXR5V2l0aFN0YXRlLmVudGl0eVN0YXRlPy5bJ2lkJ107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXZFbnRpdHlXaXRoU3RhdGVBbmRJZC5yZXZUeXBlID0gcmV2RW50aXR5V2l0aFN0YXRlLnJldlR5cGU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXZFbnRpdHlXaXRoU3RhdGVBbmRJZC5yZXZFbnRpdHkgPSByZXZFbnRpdHlXaXRoU3RhdGUucmV2RW50aXR5O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV2RW50aXR5V2l0aFN0YXRlQW5kSWQuZW50aXR5U3RhdGUgPSByZXZFbnRpdHlXaXRoU3RhdGUuZW50aXR5U3RhdGU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXZFbnRpdHlXaXRoU3RhdGVBbmRJZC5lbnRpdHlDbGFzc05hbWUgPSByZXZFbnRpdHlXaXRoU3RhdGUuZW50aXR5Q2xhc3NOYW1lO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV2RW50aXR5V2l0aFN0YXRlQW5kSWRMaXN0LnB1c2gocmV2RW50aXR5V2l0aFN0YXRlQW5kSWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBNZWRpdXNRdWVyeVJlc3VsdC5mcm9tQXJyYXkocmV2RW50aXR5V2l0aFN0YXRlQW5kSWRMaXN0LCBjb3VudCk7XG4gICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICA6IHRocm93RXJyb3IoKCkgPT4gbmV3IE1uZ0ludGVybmFsRXJyb3IoJ05vIHJldmlzaW9uIGVudGl0eSBpcyBwcm92aWRlZCBmb3IgbGlzdC4nKSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb3ZlcnJpZGUgY3JlYXRlQWN0aW9uRGVzY3JpcHRvcnMoKTogQXJyYXk8QWN0aW9uRGVzY3JpcHRvcjxNbmdSZXZFbnRpdHlXaXRoSWQ+PiB7XG4gICAgICAgIGlmICghdGhpcy5yZXZNb2RlbCB8fCAhdGhpcy5zZWxlY3RlZFJldmlzaW9uRW50aXR5Py5lbnRpdHlOYW1lKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgTW5nSW50ZXJuYWxFcnJvcignTm8gcmV2aXNpb24gbW9kZWwgb3IgcmV2aXNpb24gZW50aXR5IGlzIHByb3ZpZGVkIGZvciB0YWJsZXZpZXcuJyk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBlbnRpdHlOYW1lID0gdGhpcy5zZWxlY3RlZFJldmlzaW9uRW50aXR5LmVudGl0eU5hbWU7XG4gICAgICAgIGNvbnN0IGRldGFpbHNBY3Rpb24gPSBuZXcgQWN0aW9uRWRpdG9yRGV0YWlsc0Rlc2NyaXB0b3IodGhpcy5kZXNjcmlwdG9yLmRldGFpbHNFZGl0b3IpXG4gICAgICAgICAgICAud2l0aEZldGNoRnVuY3Rpb24oY3R4ID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIWVudGl0eU5hbWUpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gbmV3IE1uZ0ludGVybmFsRXJyb3IoJ05vIHJldmlzaW9uIGVudGl0eSBpcyBwcm92aWRlZCBmb3IgZGV0YWlscy4nKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICghY3R4LnBhcmFtZXRlcnMuaXRlbUlkKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IG5ldyBNbmdJbnRlcm5hbEVycm9yKCdObyBpdGVtIGlkIGZvciByZXZpc2lvbiBlbnRpdHkgZGV0YWlscyBpcyBwcm92aWRlZC4nKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IHJldklkID0gY3R4LnBhcmFtZXRlcnMuaXRlbUlkLnRvU3RyaW5nKCkuc3BsaXQoJ18nKVswXTtcbiAgICAgICAgICAgICAgICBjb25zdCBpdGVtSWQgPSBjdHgucGFyYW1ldGVycy5pdGVtSWQudG9TdHJpbmcoKS5zcGxpdCgnXycpWzFdO1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJldmlzaXNvbnNBcGlTZXJ2aWNlLmZldGNoUmV2aXNpb25zV2l0aFN0YXRlRm9yRW50aXR5VHlwZShlbnRpdHlOYW1lLCByZXZJZCwgaXRlbUlkKTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAud2l0aEVkaXRvclRpdGxlKCdwYWdlcy5lbnRpdHlSZXZpc2lvbnMuYWN0aW9ucy5kZXRhaWxzLmVkaXRvci50aXRsZScpO1xuICAgICAgICByZXR1cm4gW2RldGFpbHNBY3Rpb25dO1xuICAgIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJjYXJkXCI+XG4gICAgPGRpdiBjbGFzcz1cImZpZWxkIG1iLTBcIj5cbiAgICAgICAgPG1uZy1kcm9wZG93blxuICAgICAgICAgICAgaWQ9XCJyZXZpc2lvbkVudGl0eURyb3Bkb3duXCJcbiAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCIncGFnZXMuZW50aXR5UmV2aXNpb25zLmRyb3Bkb3duLnBsYWNlaG9sZGVyJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICBbaXRlbXNMYWJlbFByb3BlcnR5XT1cIidlbnRpdHlOYW1lSTE4bidcIlxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJzZWxlY3RlZFJldmlzaW9uRW50aXR5XCJcbiAgICAgICAgICAgICh2YWx1ZUNoYW5nZSk9XCJvblJldmlzaW9uRW50aXR5Q2hhbmdlKClcIlxuICAgICAgICAgICAgW2RhdGFQcm92aWRlcl09XCJyZXZpc2lvbkVudGl0aWVzTG9va3VwUHJvdmlkZXJcIj48L21uZy1kcm9wZG93bj5cbiAgICAgICAgPHNtYWxsICpuZ0lmPVwiIXNlbGVjdGVkUmV2aXNpb25FbnRpdHlcIiBjbGFzcz1cImJsb2NrXCI+XG4gICAgICAgICAgICB7eyAncGFnZXMuZW50aXR5UmV2aXNpb25zLmRyb3Bkb3duLmhlbHBUZXh0JyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICA8L3NtYWxsPlxuICAgIDwvZGl2PlxuPC9kaXY+XG48ZGl2ICpuZ0lmPVwic2hvd1RhYmxldmlldygpXCI+XG4gICAgPG1uZy10YWJsZXZpZXctcm91dGUgW2Rlc2NyaXB0b3JdPVwiZGVzY3JpcHRvclwiIFtkYXRhUHJvdmlkZXJdPVwiZGF0YVByb3ZpZGVyXCIgW2FjdGlvbnNdPVwiYWN0aW9uc1wiPjwvbW5nLXRhYmxldmlldy1yb3V0ZT5cbjwvZGl2PlxuIl19
|