@esfaenza/admin-module 15.2.49 → 15.2.51
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/lib/admin-module.module.mjs +10 -10
- package/esm2020/lib/components/audits/adm_audits.component.mjs +3 -2
- package/esm2020/lib/components/dynamic_views/adm_dynamic_views.component.mjs +5 -4
- package/esm2020/lib/components/enqueues/adm_enq.component.mjs +4 -3
- package/esm2020/lib/components/logs/adm_logs.component.mjs +3 -2
- package/esm2020/lib/components/metrics/metrics_search.component.mjs +4 -3
- package/esm2020/lib/components/mtd_query/mtd_query.component.mjs +9 -5
- package/esm2020/lib/components/profiler/adm_profiler.component.mjs +6 -5
- package/esm2020/lib/components/topact/topact_search.component.mjs +9 -6
- package/esm2020/lib/components/workers/adm_wrk.component.mjs +6 -5
- package/esm2020/lib/models/components/ProcessesView.mjs +1 -1
- package/esm2020/lib/models/components/TopActivitiesDataView.mjs +1 -1
- package/esm2020/lib/services/admin-module.base.service.mjs +51 -37
- package/fesm2015/esfaenza-admin-module.mjs +99 -71
- package/fesm2015/esfaenza-admin-module.mjs.map +1 -1
- package/fesm2020/esfaenza-admin-module.mjs +99 -71
- package/fesm2020/esfaenza-admin-module.mjs.map +1 -1
- package/lib/components/audits/adm_audits.component.d.ts +1 -0
- package/lib/components/dynamic_views/adm_dynamic_views.component.d.ts +1 -0
- package/lib/components/enqueues/adm_enq.component.d.ts +1 -0
- package/lib/components/logs/adm_logs.component.d.ts +1 -0
- package/lib/components/metrics/metrics_search.component.d.ts +1 -0
- package/lib/components/mtd_query/mtd_query.component.d.ts +2 -0
- package/lib/components/profiler/adm_profiler.component.d.ts +1 -0
- package/lib/components/topact/topact_search.component.d.ts +1 -0
- package/lib/components/workers/adm_wrk.component.d.ts +1 -0
- package/lib/models/components/ProcessesView.d.ts +1 -0
- package/lib/models/components/TopActivitiesDataView.d.ts +1 -0
- package/lib/services/admin-module.base.service.d.ts +18 -18
- package/package.json +1 -1
|
@@ -36,96 +36,110 @@ export class AdminModuleBaseService {
|
|
|
36
36
|
let ret = await firstValueFrom(this.http.post(POST_Director_GetServerWorkers, sv));
|
|
37
37
|
return ret;
|
|
38
38
|
}
|
|
39
|
-
async doSetProcessTracing(instanceid, sid, serial, enable) {
|
|
39
|
+
async doSetProcessTracing(be, instanceid, sid, serial, enable) {
|
|
40
40
|
var pars = new HttpParams()
|
|
41
41
|
.set("instanceid", instanceid)
|
|
42
42
|
.set("sid", sid)
|
|
43
43
|
.set("serial", serial)
|
|
44
|
-
.set("enable", enable)
|
|
44
|
+
.set("enable", enable)
|
|
45
|
+
.set("be", be);
|
|
45
46
|
let ret = await firstValueFrom(this.http.get(GET_Director_SetProcessTracing, pars));
|
|
46
47
|
return ret;
|
|
47
48
|
}
|
|
48
|
-
async doKillProcess(instanceid, sid, serial) {
|
|
49
|
+
async doKillProcess(be, instanceid, sid, serial) {
|
|
49
50
|
var pars = new HttpParams()
|
|
50
51
|
.set("instanceid", instanceid)
|
|
51
52
|
.set("sid", sid)
|
|
52
|
-
.set("serial", serial)
|
|
53
|
+
.set("serial", serial)
|
|
54
|
+
.set("be", be);
|
|
53
55
|
let ret = await firstValueFrom(this.http.get(GET_Director_KillProcess, pars));
|
|
54
56
|
return ret;
|
|
55
57
|
}
|
|
56
|
-
async doChangeProcessConsumerGroup(instanceid, sid, serial, consumerGroup) {
|
|
58
|
+
async doChangeProcessConsumerGroup(be, instanceid, sid, serial, consumerGroup) {
|
|
57
59
|
var pars = new HttpParams()
|
|
58
60
|
.set("instanceid", instanceid)
|
|
59
61
|
.set("sid", sid)
|
|
60
62
|
.set("serial", serial)
|
|
61
|
-
.set("consumer_group", consumerGroup)
|
|
63
|
+
.set("consumer_group", consumerGroup)
|
|
64
|
+
.set("be", be);
|
|
62
65
|
let ret = await firstValueFrom(this.http.get(GET_Director_ChangeProcessConsumerGroup, pars));
|
|
63
66
|
return ret;
|
|
64
67
|
}
|
|
65
|
-
async getConsumerGroups() {
|
|
66
|
-
|
|
68
|
+
async getConsumerGroups(be) {
|
|
69
|
+
var pars = new HttpParams().set("be", be);
|
|
70
|
+
let ret = await firstValueFrom(this.http.get(GET_Director_GetConsumerGroups, pars));
|
|
67
71
|
return ret;
|
|
68
72
|
}
|
|
69
|
-
async getServerLogs(from, to) {
|
|
70
|
-
var pars = new HttpParams().set("from", from).set("to", to);
|
|
73
|
+
async getServerLogs(be, from, to) {
|
|
74
|
+
var pars = new HttpParams().set("from", from).set("to", to).set("be", be);
|
|
71
75
|
let ret = await firstValueFrom(this.http.get(GET_Director_GetServerLogs, pars));
|
|
72
76
|
return ret;
|
|
73
77
|
}
|
|
74
|
-
async getTopActivities(sv) {
|
|
75
|
-
|
|
78
|
+
async getTopActivities(be, sv) {
|
|
79
|
+
var pars = new HttpParams().set("be", be);
|
|
80
|
+
let ret = await firstValueFrom(this.http.post(POST_Director_GetTopActivities, sv, pars));
|
|
76
81
|
return ret;
|
|
77
82
|
}
|
|
78
|
-
async getInfos() {
|
|
79
|
-
|
|
83
|
+
async getInfos(be) {
|
|
84
|
+
var pars = new HttpParams().set("be", be);
|
|
85
|
+
let ret = await firstValueFrom(this.http.get(GET_Director_GetInfos, pars, null, false).pipe(catchError(_ => of(null))));
|
|
80
86
|
return ret;
|
|
81
87
|
}
|
|
82
|
-
async getNodeStats(nodeId) {
|
|
83
|
-
let pars = new HttpParams().set("nodeId", nodeId);
|
|
88
|
+
async getNodeStats(be, nodeId) {
|
|
89
|
+
let pars = new HttpParams().set("nodeId", nodeId).set("be", be);
|
|
84
90
|
let ret = await firstValueFrom(this.http.get(GET_Director_GetNodeStats, pars));
|
|
85
91
|
return ret;
|
|
86
92
|
}
|
|
87
|
-
async getSessionStats(sid, serial) {
|
|
88
|
-
let pars = new HttpParams().set('sid', sid).set('serial', serial);
|
|
93
|
+
async getSessionStats(be, sid, serial) {
|
|
94
|
+
let pars = new HttpParams().set('sid', sid).set('serial', serial).set("be", be);
|
|
89
95
|
let ret = await firstValueFrom(this.http.get(GET_Director_GetSessionStats, pars));
|
|
90
96
|
return ret;
|
|
91
97
|
}
|
|
92
|
-
async getProfilerDataNodes(sv) {
|
|
93
|
-
|
|
98
|
+
async getProfilerDataNodes(be, sv) {
|
|
99
|
+
var pars = new HttpParams().set("be", be);
|
|
100
|
+
let ret = await firstValueFrom(this.http.post(POST_Director_GetProfilerDataNodes, sv, pars));
|
|
94
101
|
return ret;
|
|
95
102
|
}
|
|
96
|
-
downloadWorkloadReport(from, to) {
|
|
97
|
-
let pars = new HttpParams().set("from", from || "").set("to", to || "");
|
|
103
|
+
downloadWorkloadReport(be, from, to) {
|
|
104
|
+
let pars = new HttpParams().set("from", from || "").set("to", to || "").set("be", be);
|
|
98
105
|
this.http.getFileNative(GET_Director_GetWorkloadReport, pars);
|
|
99
106
|
}
|
|
100
|
-
async getMetrics(sv) {
|
|
101
|
-
|
|
107
|
+
async getMetrics(be, sv) {
|
|
108
|
+
var pars = new HttpParams().set("be", be);
|
|
109
|
+
let ret = await firstValueFrom(this.http.post(POST_Director_GetMetrics, sv, pars));
|
|
102
110
|
return ret;
|
|
103
111
|
}
|
|
104
|
-
async getMetricsList(from, to) {
|
|
112
|
+
async getMetricsList(be, from, to) {
|
|
105
113
|
let pars = new HttpParams()
|
|
106
114
|
.set("from", from || "")
|
|
107
|
-
.set("to", to || "")
|
|
115
|
+
.set("to", to || "")
|
|
116
|
+
.set("be", be);
|
|
108
117
|
let ret = await firstValueFrom(this.http.get(GET_Director_GetMetrics, pars));
|
|
109
118
|
return ret.sort((a, b) => a.name.localeCompare(b.name));
|
|
110
119
|
}
|
|
111
|
-
async getServerLocks(sv) {
|
|
112
|
-
|
|
120
|
+
async getServerLocks(be, sv) {
|
|
121
|
+
var pars = new HttpParams().set("be", be);
|
|
122
|
+
let ret = await firstValueFrom(this.http.post(POST_Director_GetServerLocks, sv, pars));
|
|
113
123
|
return ret;
|
|
114
124
|
}
|
|
115
|
-
async getServerQuery(sv) {
|
|
116
|
-
|
|
125
|
+
async getServerQuery(be, sv) {
|
|
126
|
+
var pars = new HttpParams().set("be", be);
|
|
127
|
+
let ret = await firstValueFrom(this.http.post(POST_Director_GetServerQuery, sv, pars));
|
|
117
128
|
return ret;
|
|
118
129
|
}
|
|
119
|
-
async getDynamicViewData(sv) {
|
|
120
|
-
|
|
130
|
+
async getDynamicViewData(be, sv) {
|
|
131
|
+
var pars = new HttpParams().set("be", be);
|
|
132
|
+
let ret = await firstValueFrom(this.http.post(POST_Director_GetDynamicViewData, sv, pars));
|
|
121
133
|
return ret;
|
|
122
134
|
}
|
|
123
|
-
async getDynamicViews() {
|
|
124
|
-
|
|
135
|
+
async getDynamicViews(be) {
|
|
136
|
+
var pars = new HttpParams().set("be", be);
|
|
137
|
+
let ret = await firstValueFrom(this.http.get(GET_Director_GetDynamicViews, pars));
|
|
125
138
|
return ret;
|
|
126
139
|
}
|
|
127
|
-
async getServerAudits(sv) {
|
|
128
|
-
|
|
140
|
+
async getServerAudits(be, sv) {
|
|
141
|
+
var pars = new HttpParams().set("be", be);
|
|
142
|
+
let ret = await firstValueFrom(this.http.post(POST_Director_GetServerAudits, sv, pars));
|
|
129
143
|
return ret;
|
|
130
144
|
}
|
|
131
145
|
}
|
|
@@ -134,4 +148,4 @@ AdminModuleBaseService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0
|
|
|
134
148
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: AdminModuleBaseService, decorators: [{
|
|
135
149
|
type: Injectable
|
|
136
150
|
}], ctorParameters: function () { return [{ type: i0.Injector }]; } });
|
|
137
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRtaW4tbW9kdWxlLmJhc2Uuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FkbWluLW1vZHVsZS9zcmMvbGliL3NlcnZpY2VzL2FkbWluLW1vZHVsZS5iYXNlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsVUFBVTtBQUNWLE9BQU8sRUFBRSxVQUFVLEVBQVksTUFBTSxlQUFlLENBQUM7QUFDckQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRWxELEtBQUs7QUFDTCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDdEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBSXBELE9BQU8sRUFBRSxjQUFjLEVBQUUsVUFBVSxFQUFFLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7QUFjdEQseUJBQXlCO0FBQ3pCLE1BQU0sdUNBQXVDLEdBQVcsMENBQTBDLENBQUM7QUFDbkcsTUFBTSw4QkFBOEIsR0FBVyx1Q0FBdUMsQ0FBQztBQUN2RixNQUFNLHFCQUFxQixHQUFXLHdCQUF3QixDQUFDO0FBQy9ELE1BQU0sdUJBQXVCLEdBQVcsMEJBQTBCLENBQUM7QUFDbkUsTUFBTSx3QkFBd0IsR0FBVywwQkFBMEIsQ0FBQztBQUNwRSxNQUFNLGtDQUFrQyxHQUFXLG9DQUFvQyxDQUFDO0FBQ3hGLE1BQU0sOEJBQThCLEdBQVcsaUNBQWlDLENBQUM7QUFDakYsTUFBTSw2QkFBNkIsR0FBVywrQkFBK0IsQ0FBQztBQUM5RSxNQUFNLGdDQUFnQyxHQUFXLGtDQUFrQyxDQUFDO0FBQ3BGLE1BQU0sNEJBQTRCLEdBQVcsOEJBQThCLENBQUM7QUFDNUUsTUFBTSw0QkFBNEIsR0FBVyw4QkFBOEIsQ0FBQztBQUM1RSxNQUFNLDBCQUEwQixHQUFXLDZCQUE2QixDQUFDO0FBQ3pFLE1BQU0sNEJBQTRCLEdBQVcsK0JBQStC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ZTtRQUN4QixJQUFJLEdBQUcsR0FBZSxNQUFNLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBYSw0QkFBNEIsQ0FBQyxDQUFDLENBQUM7UUFDcEcsT0FBTyxHQUFHLENBQUM7SUFDZixDQUFDO0lBRU0sS0FBSyxDQUFDLGVBQWUsQ0FBQyxFQUFjO1FBQ3ZDLElBQUksR0FBRyxHQUFlLE1BQU0sY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFhLDZCQUE2QixFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDMUcsT0FBTyxHQUFHLENBQUM7SUFDZixDQUFDOztvSEE5SFEsc0JBQXNCO3dIQUF0QixzQkFBc0I7NEZBQXRCLHNCQUFzQjtrQkFEbEMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbIi8vIEFuZ3VsYXJcclxuaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0b3IgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBIdHRwUGFyYW1zIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vbi9odHRwXCI7XHJcblxyXG4vLyBFU1xyXG5pbXBvcnQgeyBNZXNzYWdlU2VydmljZSB9IGZyb20gXCJAZXNmYWVuemEvZXh0ZW5zaW9uc1wiO1xyXG5pbXBvcnQgeyBIVFRQU2VydmljZSB9IGZyb20gXCJAZXNmYWVuemEvaHR0cHNlcnZpY2VcIjtcclxuXHJcbi8vIENvbmZpZ3VyYXppb25pXHJcbmltcG9ydCB7IFByb2Nlc3Nlc1ZpZXcgfSBmcm9tIFwiLi4vbW9kZWxzL2NvbXBvbmVudHMvUHJvY2Vzc2VzVmlld1wiO1xyXG5pbXBvcnQgeyBmaXJzdFZhbHVlRnJvbSwgY2F0Y2hFcnJvciwgb2YgfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQgeyBLZXlWYWx1ZSB9IGZyb20gXCJAZXNmYWVuemEvY29yZS9kb21haW5cIjtcclxuaW1wb3J0IHsgVG9wQWN0aXZpdGllc0RhdGFWaWV3IH0gZnJvbSBcIi4uL21vZGVscy9jb21wb25lbnRzL1RvcEFjdGl2aXRpZXNEYXRhVmlld1wiO1xyXG5pbXBvcnQgeyBEaXJlY3RvckluZm9zIH0gZnJvbSBcIi4uL21vZGVscy9jb21wb25lbnRzL0RpcmVjdG9ySW5mb3NcIjtcclxuaW1wb3J0IHsgTm9kZVN0YXRzIH0gZnJvbSBcIi4uL21vZGVscy9jb21wb25lbnRzL05vZGVTdGF0c1wiO1xyXG5pbXBvcnQgeyBTZXNzaW9uU3RhdHMgfSBmcm9tIFwiLi4vbW9kZWxzL2NvbXBvbmVudHMvU2Vzc2lvblN0YXRzXCI7XHJcbmltcG9ydCB7IFByb2ZpbGVyRGF0YU5vZGVzVmlldyB9IGZyb20gXCIuLi9tb2RlbHMvY29tcG9uZW50cy9Qcm9maWxlckRhdGFOb2Rlc1ZpZXdcIjtcclxuaW1wb3J0IHsgTWV0cmljc1ZpZXcgfSBmcm9tIFwiLi4vbW9kZWxzL2NvbXBvbmVudHMvTWV0cmljc1ZpZXdcIjtcclxuaW1wb3J0IHsgTWV0cmljIH0gZnJvbSBcIi4uL21vZGVscy9jb21wb25lbnRzL01ldHJpY1wiO1xyXG5pbXBvcnQgeyBMb2Nrc1ZpZXcgfSBmcm9tIFwiLi4vbW9kZWxzL2NvbXBvbmVudHMvTG9ja3NWaWV3XCI7XHJcbmltcG9ydCB7IER5bmFtaWNWaWV3c1ZpZXcgfSBmcm9tIFwiLi4vbW9kZWxzL2NvbXBvbmVudHMvRHluYW1pY1ZpZXdzVmlld1wiO1xyXG5pbXBvcnQgeyBBdWRpdHNWaWV3IH0gZnJvbSBcIi4uL21vZGVscy9jb21wb25lbnRzL0F1ZGl0c1ZpZXdcIjtcclxuaW1wb3J0IHsgUXVlcnlWaWV3IH0gZnJvbSBcIi4uL21vZGVscy9jb21wb25lbnRzL1F1ZXJ5Vmlld1wiO1xyXG5cclxuLy8gQ2hpYW1hdGUgYWkgUmVwb3NpdG9yeVxyXG5jb25zdCBHRVRfRGlyZWN0b3JfQ2hhbmdlUHJvY2Vzc0NvbnN1bWVyR3JvdXA6IHN0cmluZyA9IFwiL2FwaS9EaXJlY3Rvci9DaGFuZ2VQcm9jZXNzQ29uc3VtZXJHcm91cFwiO1xyXG5jb25zdCBHRVRfRGlyZWN0b3JfR2V0Q29uc3VtZXJHcm91cHM6IHN0cmluZyA9IFwiL2FwaS9EaXJlY3Rvci9HZXRDb25zdW1lckdyb3VwcyNjYWNoZVwiO1xyXG5jb25zdCBHRVRfRGlyZWN0b3JfR2V0SW5mb3M6IHN0cmluZyA9IFwiL2FwaS9EaXJlY3Rvci9HZXRJbmZvc1wiO1xyXG5jb25zdCBHRVRfRGlyZWN0b3JfR2V0TWV0cmljczogc3RyaW5nID0gXCIvYXBpL0RpcmVjdG9yL0dldE1ldHJpY3NcIjtcclxuY29uc3QgUE9TVF9EaXJlY3Rvcl9HZXRNZXRyaWNzOiBzdHJpbmcgPSBcIi9hcGkvRGlyZWN0b3IvR2V0TWV0cmljc1wiO1xyXG5jb25zdCBQT1NUX0RpcmVjdG9yX0dldFByb2ZpbGVyRGF0YU5vZGVzOiBzdHJpbmcgPSBcIi9hcGkvRGlyZWN0b3IvR2V0UHJvZmlsZXJEYXRhTm9kZXNcIjtcclxuY29uc3QgR0VUX0RpcmVjdG9yX0dldFdvcmtsb2FkUmVwb3J0OiBzdHJpbmcgPSBcIi9hcGkvRGlyZWN0b3IvR2V0V29ya2xvYWRSZXBvcnRcIjtcclxuY29uc3QgUE9TVF9EaXJlY3Rvcl9HZXRTZXJ2ZXJBdWRpdHM6IHN0cmluZyA9IFwiL2FwaS9EaXJlY3Rvci9HZXRTZXJ2ZXJBdWRpdHNcIjtcclxuY29uc3QgUE9TVF9EaXJlY3Rvcl9HZXREeW5hbWljVmlld0RhdGE6IHN0cmluZyA9IFwiL2FwaS9EaXJlY3Rvci9HZXREeW5hbWljVmlld0RhdGFcIjtcclxuY29uc3QgUE9TVF9EaXJlY3Rvcl9HZXRTZXJ2ZXJMb2Nrczogc3RyaW5nID0gXCIvYXBpL0RpcmVjdG9yL0dldFNlcnZlckxvY2tzXCI7XHJcbmNvbnN0IFBPU1RfRGlyZWN0b3JfR2V0U2VydmVyUXVlcnk6IHN0cmluZyA9IFwiL2FwaS9EaXJlY3Rvci9HZXRTZXJ2ZXJRdWVyeVwiO1xyXG5jb25zdCBHRVRfRGlyZWN0b3JfR2V0U2VydmVyTG9nczogc3RyaW5nID0gXCIvYXBpL0RpcmVjdG9yL0dldFNlcnZlckxvZ3NcIjtcclxuY29uc3QgR0VUX0RpcmVjdG9yX0dldER5bmFtaWNWaWV3czogc3RyaW5nID0gXCIvYXBpL0RpcmVjdG9yL0dldER5bmFtaWNWaWV3c1wiO1xyXG5jb25zdCBQT1NUX0RpcmVjdG9yX0dldFNlcnZlcldvcmtlcnM6IHN0cmluZyA9IFwiL2FwaS9EaXJlY3Rvci9HZXRTZXJ2ZXJXb3JrZXJzXCI7XHJcbmNvbnN0IFBPU1RfRGlyZWN0b3JfR2V0VG9wQWN0aXZpdGllczogc3RyaW5nID0gXCIvYXBpL0RpcmVjdG9yL0dldFRvcEFjdGl2aXRpZXNcIjtcclxuY29uc3QgR0VUX0RpcmVjdG9yX0tpbGxQcm9jZXNzOiBzdHJpbmcgPSBcIi9hcGkvRGlyZWN0b3IvS2lsbFByb2Nlc3NcIjtcclxuY29uc3QgR0VUX0RpcmVjdG9yX1NldFByb2Nlc3NUcmFjaW5nOiBzdHJpbmcgPSBcIi9hcGkvRGlyZWN0b3IvU2V0UHJvY2Vzc1RyYWNpbmdcIjtcclxuY29uc3QgR0VUX0RpcmVjdG9yX0dldE5vZGVTdGF0czogc3RyaW5nID0gXCIvYXBpL0RpcmVjdG9yL0dldE5vZGVTdGF0c1wiO1xyXG5jb25zdCBHRVRfRGlyZWN0b3JfR2V0U2Vzc2lvblN0YXRzOiBzdHJpbmcgPSBcIi9hcGkvRGlyZWN0b3IvR2V0U2Vzc2lvblN0YXRzXCI7XHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBBZG1pbk1vZHVsZUJhc2VTZXJ2aWNlIHtcclxuICAgIHB1YmxpYyBodHRwOiBIVFRQU2VydmljZTtcclxuICAgIHB1YmxpYyBtc2dFeHRzOiBNZXNzYWdlU2VydmljZTtcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGluamVjdG9yOiBJbmplY3Rvcikge1xyXG4gICAgICAgIHRoaXMuaHR0cCA9IHRoaXMuaW5qZWN0b3IuZ2V0KEhUVFBTZXJ2aWNlKTtcclxuICAgICAgICB0aGlzLm1zZ0V4dHMgPSB0aGlzLmluamVjdG9yLmdldChNZXNzYWdlU2VydmljZSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGFzeW5jIGdldFNlcnZlcldvcmtlcnMoc3Y6IFByb2Nlc3Nlc1ZpZXcpOiBQcm9taXNlPFByb2Nlc3Nlc1ZpZXc+IHtcclxuICAgICAgICBsZXQgcmV0OiBQcm9jZXNzZXNWaWV3ID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5odHRwLnBvc3Q8UHJvY2Vzc2VzVmlldz4oUE9TVF9EaXJlY3Rvcl9HZXRTZXJ2ZXJXb3JrZXJzLCBzdikpO1xyXG4gICAgICAgIHJldHVybiByZXQ7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGFzeW5jIGRvU2V0UHJvY2Vzc1RyYWNpbmcoaW5zdGFuY2VpZDogc3RyaW5nLCBzaWQ6IHN0cmluZywgc2VyaWFsOiBzdHJpbmcsIGVuYWJsZTogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcclxuICAgICAgICB2YXIgcGFycyA9IG5ldyBIdHRwUGFyYW1zKClcclxuICAgICAgICAgICAgLnNldChcImluc3RhbmNlaWRcIiwgaW5zdGFuY2VpZClcclxuICAgICAgICAgICAgLnNldChcInNpZFwiLCBzaWQpXHJcbiAgICAgICAgICAgIC5zZXQoXCJzZXJpYWxcIiwgc2VyaWFsKVxyXG4gICAgICAgICAgICAuc2V0KFwiZW5hYmxlXCIsIGVuYWJsZSk7XHJcblxyXG4gICAgICAgIGxldCByZXQ6IHN0cmluZyA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMuaHR0cC5nZXQ8c3RyaW5nPihHRVRfRGlyZWN0b3JfU2V0UHJvY2Vzc1RyYWNpbmcsIHBhcnMpKTtcclxuICAgICAgICByZXR1cm4gcmV0O1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBhc3luYyBkb0tpbGxQcm9jZXNzKGluc3RhbmNlaWQ6IHN0cmluZywgc2lkOiBzdHJpbmcsIHNlcmlhbDogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcclxuICAgICAgICB2YXIgcGFycyA9IG5ldyBIdHRwUGFyYW1zKClcclxuICAgICAgICAgICAgLnNldChcImluc3RhbmNlaWRcIiwgaW5zdGFuY2VpZClcclxuICAgICAgICAgICAgLnNldChcInNpZFwiLCBzaWQpXHJcbiAgICAgICAgICAgIC5zZXQoXCJzZXJpYWxcIiwgc2VyaWFsKTtcclxuXHJcbiAgICAgICAgbGV0IHJldDogc3RyaW5nID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5odHRwLmdldDxzdHJpbmc+KEdFVF9EaXJlY3Rvcl9LaWxsUHJvY2VzcywgcGFycykpO1xyXG4gICAgICAgIHJldHVybiByZXQ7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGFzeW5jIGRvQ2hhbmdlUHJvY2Vzc0NvbnN1bWVyR3JvdXAoaW5zdGFuY2VpZDogc3RyaW5nLCBzaWQ6IHN0cmluZywgc2VyaWFsOiBzdHJpbmcsIGNvbnN1bWVyR3JvdXA6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XHJcbiAgICAgICAgdmFyIHBhcnMgPSBuZXcgSHR0cFBhcmFtcygpXHJcbiAgICAgICAgICAgIC5zZXQoXCJpbnN0YW5jZWlkXCIsIGluc3RhbmNlaWQpXHJcbiAgICAgICAgICAgIC5zZXQoXCJzaWRcIiwgc2lkKVxyXG4gICAgICAgICAgICAuc2V0KFwic2VyaWFsXCIsIHNlcmlhbClcclxuICAgICAgICAgICAgLnNldChcImNvbnN1bWVyX2dyb3VwXCIsIGNvbnN1bWVyR3JvdXApO1xyXG5cclxuICAgICAgICBsZXQgcmV0OiBzdHJpbmcgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLmh0dHAuZ2V0PHN0cmluZz4oR0VUX0RpcmVjdG9yX0NoYW5nZVByb2Nlc3NDb25zdW1lckdyb3VwLCBwYXJzKSk7XHJcbiAgICAgICAgcmV0dXJuIHJldDtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgYXN5bmMgZ2V0Q29uc3VtZXJHcm91cHMoKTogUHJvbWlzZTxLZXlWYWx1ZVtdPiB7XHJcbiAgICAgICAgbGV0IHJldDogS2V5VmFsdWVbXSA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMuaHR0cC5nZXQ8S2V5VmFsdWVbXT4oR0VUX0RpcmVjdG9yX0dldENvbnN1bWVyR3JvdXBzKSk7XHJcbiAgICAgICAgcmV0dXJuIHJldDtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgYXN5bmMgZ2V0U2VydmVyTG9ncyhmcm9tOiBzdHJpbmcsIHRvOiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZz4ge1xyXG4gICAgICAgIHZhciBwYXJzID0gbmV3IEh0dHBQYXJhbXMoKS5zZXQoXCJmcm9tXCIsIGZyb20pLnNldChcInRvXCIsIHRvKVxyXG4gICAgICAgIGxldCByZXQ6IHN0cmluZyA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMuaHR0cC5nZXQ8c3RyaW5nPihHRVRfRGlyZWN0b3JfR2V0U2VydmVyTG9ncywgcGFycykpO1xyXG4gICAgICAgIHJldHVybiByZXQ7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGFzeW5jIGdldFRvcEFjdGl2aXRpZXMoc3Y6IFRvcEFjdGl2aXRpZXNEYXRhVmlldyk6IFByb21pc2U8VG9wQWN0aXZpdGllc0RhdGFWaWV3PiB7XHJcbiAgICAgICAgbGV0IHJldDogVG9wQWN0aXZpdGllc0RhdGFWaWV3ID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5odHRwLnBvc3Q8VG9wQWN0aXZpdGllc0RhdGFWaWV3PihQT1NUX0RpcmVjdG9yX0dldFRvcEFjdGl2aXRpZXMsIHN2KSk7XHJcbiAgICAgICAgcmV0dXJuIHJldDtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgYXN5bmMgZ2V0SW5mb3MoKTogUHJvbWlzZTxEaXJlY3RvckluZm9zPiB7XHJcbiAgICAgICAgbGV0IHJldDogRGlyZWN0b3JJbmZvcyA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMuaHR0cC5nZXQ8RGlyZWN0b3JJbmZvcz4oR0VUX0RpcmVjdG9yX0dldEluZm9zLCBudWxsLCBudWxsLCBmYWxzZSkucGlwZShjYXRjaEVycm9yKF8gPT4gb2YobnVsbCBhcyBEaXJlY3RvckluZm9zKSkpKTtcclxuICAgICAgICByZXR1cm4gcmV0O1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBhc3luYyBnZXROb2RlU3RhdHMobm9kZUlkOiBzdHJpbmcpOiBQcm9taXNlPE5vZGVTdGF0cz4ge1xyXG4gICAgICAgIGxldCBwYXJzID0gbmV3IEh0dHBQYXJhbXMoKS5zZXQoXCJub2RlSWRcIiwgbm9kZUlkKTtcclxuICAgICAgICBsZXQgcmV0OiBOb2RlU3RhdHMgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLmh0dHAuZ2V0PE5vZGVTdGF0cz4oR0VUX0RpcmVjdG9yX0dldE5vZGVTdGF0cywgcGFycykpO1xyXG4gICAgICAgIHJldHVybiByZXQ7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGFzeW5jIGdldFNlc3Npb25TdGF0cyhzaWQ6IHN0cmluZywgc2VyaWFsOiBzdHJpbmcpOiBQcm9taXNlPFNlc3Npb25TdGF0cz4ge1xyXG4gICAgICAgIGxldCBwYXJzID0gbmV3IEh0dHBQYXJhbXMoKS5zZXQoJ3NpZCcsIHNpZCkuc2V0KCdzZXJpYWwnLCBzZXJpYWwpO1xyXG4gICAgICAgIGxldCByZXQ6IFNlc3Npb25TdGF0cyA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMuaHR0cC5nZXQ8U2Vzc2lvblN0YXRzPihHRVRfRGlyZWN0b3JfR2V0U2Vzc2lvblN0YXRzLCBwYXJzKSk7XHJcbiAgICAgICAgcmV0dXJuIHJldDtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgYXN5bmMgZ2V0UHJvZmlsZXJEYXRhTm9kZXMoc3Y6IFByb2ZpbGVyRGF0YU5vZGVzVmlldyk6IFByb21pc2U8UHJvZmlsZXJEYXRhTm9kZXNWaWV3PiB7XHJcbiAgICAgICAgbGV0IHJldDogUHJvZmlsZXJEYXRhTm9kZXNWaWV3ID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5odHRwLnBvc3Q8UHJvZmlsZXJEYXRhTm9kZXNWaWV3PihQT1NUX0RpcmVjdG9yX0dldFByb2ZpbGVyRGF0YU5vZGVzLCBzdikpO1xyXG4gICAgICAgIHJldHVybiByZXQ7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGRvd25sb2FkV29ya2xvYWRSZXBvcnQoZnJvbTogc3RyaW5nLCB0bzogc3RyaW5nKSB7XHJcbiAgICAgICAgbGV0IHBhcnMgPSBuZXcgSHR0cFBhcmFtcygpLnNldChcImZyb21cIiwgZnJvbSB8fCBcIlwiKS5zZXQoXCJ0b1wiLCB0byB8fCBcIlwiKTtcclxuICAgICAgICB0aGlzLmh0dHAuZ2V0RmlsZU5hdGl2ZShHRVRfRGlyZWN0b3JfR2V0V29ya2xvYWRSZXBvcnQsIHBhcnMpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBhc3luYyBnZXRNZXRyaWNzKHN2OiBNZXRyaWNzVmlldyk6IFByb21pc2U8TWV0cmljc1ZpZXc+IHtcclxuICAgICAgICBsZXQgcmV0OiBNZXRyaWNzVmlldyA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMuaHR0cC5wb3N0PE1ldHJpY3NWaWV3PihQT1NUX0RpcmVjdG9yX0dldE1ldHJpY3MsIHN2KSk7XHJcbiAgICAgICAgcmV0dXJuIHJldDtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgYXN5bmMgZ2V0TWV0cmljc0xpc3QoZnJvbTogc3RyaW5nLCB0bzogc3RyaW5nKTogUHJvbWlzZTxNZXRyaWNbXT4ge1xyXG4gICAgICAgIGxldCBwYXJzID0gbmV3IEh0dHBQYXJhbXMoKVxyXG4gICAgICAgICAgICAuc2V0KFwiZnJvbVwiLCBmcm9tIHx8IFwiXCIpXHJcbiAgICAgICAgICAgIC5zZXQoXCJ0b1wiLCB0byB8fCBcIlwiKTtcclxuXHJcbiAgICAgICAgbGV0IHJldDogTWV0cmljW10gPSBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLmh0dHAuZ2V0PE1ldHJpY1tdPihHRVRfRGlyZWN0b3JfR2V0TWV0cmljcywgcGFycykpO1xyXG4gICAgICAgIHJldHVybiByZXQuc29ydCgoYSwgYikgPT4gYS5uYW1lLmxvY2FsZUNvbXBhcmUoYi5uYW1lKSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGFzeW5jIGdldFNlcnZlckxvY2tzKHN2OiBMb2Nrc1ZpZXcpOiBQcm9taXNlPExvY2tzVmlldz4ge1xyXG4gICAgICAgIGxldCByZXQ6IExvY2tzVmlldyA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMuaHR0cC5wb3N0PExvY2tzVmlldz4oUE9TVF9EaXJlY3Rvcl9HZXRTZXJ2ZXJMb2Nrcywgc3YpKTtcclxuICAgICAgICByZXR1cm4gcmV0O1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBhc3luYyBnZXRTZXJ2ZXJRdWVyeShzdjogUXVlcnlWaWV3KTogUHJvbWlzZTxRdWVyeVZpZXc+IHtcclxuICAgICAgICBsZXQgcmV0OiBRdWVyeVZpZXcgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLmh0dHAucG9zdDxRdWVyeVZpZXc+KFBPU1RfRGlyZWN0b3JfR2V0U2VydmVyUXVlcnksIHN2KSk7XHJcbiAgICAgICAgcmV0dXJuIHJldDtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgYXN5bmMgZ2V0RHluYW1pY1ZpZXdEYXRhKHN2OiBEeW5hbWljVmlld3NWaWV3KTogUHJvbWlzZTxEeW5hbWljVmlld3NWaWV3PiB7XHJcbiAgICAgICAgbGV0IHJldDogRHluYW1pY1ZpZXdzVmlldyA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMuaHR0cC5wb3N0PER5bmFtaWNWaWV3c1ZpZXc+KFBPU1RfRGlyZWN0b3JfR2V0RHluYW1pY1ZpZXdEYXRhLCBzdikpO1xyXG4gICAgICAgIHJldHVybiByZXQ7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGFzeW5jIGdldER5bmFtaWNWaWV3cygpOiBQcm9taXNlPEtleVZhbHVlW10+IHtcclxuICAgICAgICBsZXQgcmV0OiBLZXlWYWx1ZVtdID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5odHRwLmdldDxLZXlWYWx1ZVtdPihHRVRfRGlyZWN0b3JfR2V0RHluYW1pY1ZpZXdzKSk7XHJcbiAgICAgICAgcmV0dXJuIHJldDtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgYXN5bmMgZ2V0U2VydmVyQXVkaXRzKHN2OiBBdWRpdHNWaWV3KTogUHJvbWlzZTxBdWRpdHNWaWV3PiB7XHJcbiAgICAgICAgbGV0IHJldDogQXVkaXRzVmlldyA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMuaHR0cC5wb3N0PEF1ZGl0c1ZpZXc+KFBPU1RfRGlyZWN0b3JfR2V0U2VydmVyQXVkaXRzLCBzdikpO1xyXG4gICAgICAgIHJldHVybiByZXQ7XHJcbiAgICB9XHJcbn0iXX0=
|
|
151
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRtaW4tbW9kdWxlLmJhc2Uuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FkbWluLW1vZHVsZS9zcmMvbGliL3NlcnZpY2VzL2FkbWluLW1vZHVsZS5iYXNlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsVUFBVTtBQUNWLE9BQU8sRUFBRSxVQUFVLEVBQVksTUFBTSxlQUFlLENBQUM7QUFDckQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRWxELEtBQUs7QUFDTCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDdEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBSXBELE9BQU8sRUFBRSxjQUFjLEVBQUUsVUFBVSxFQUFFLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7QUFjdEQseUJBQXlCO0FBQ3pCLE1BQU0sdUNBQXVDLEdBQVcsMENBQTBDLENBQUM7QUFDbkcsTUFBTSw4QkFBOEIsR0FBVyx1Q0FBdUMsQ0FBQztBQUN2RixNQUFNLHFCQUFxQixHQUFXLHdCQUF3QixDQUFDO0FBQy9ELE1BQU0sdUJBQXVCLEdBQVcsMEJBQTBCLENBQUM7QUFDbkUsTUFBTSx3QkFBd0IsR0FBVywwQkFBMEIsQ0FBQztBQUNwRSxNQUFNLGtDQUFrQyxHQUFXLG9DQUFvQyxDQUFDO0FBQ3hGLE1BQU0sOEJBQThCLEdBQVcsaUNBQWlDLENBQUM7QUFDakYsTUFBTSw2QkFBNkIsR0FBVywrQkFBK0IsQ0FBQztBQUM5RSxNQUFNLGdDQUFnQyxHQUFXLGtDQUFrQyxDQUFDO0FBQ3BGLE1BQU0sNEJBQTRCLEdBQVcsOEJBQThCLENBQUM7QUFDNUUsTUFBTSw0QkFBNEIsR0FBVyw4QkFBOEIsQ0FBQztBQUM1RSxNQUFNLDBCQUEwQixHQUFXLDZCQUE2QixDQUFDO0FBQ3pFLE1BQU0sNEJBQTRCLEdBQVcsK0JBQStC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QUksR0FBRyxJQUFJLFVBQVUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDMUMsSUFBSSxHQUFHLEdBQXFCLE1BQU0sY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFtQixnQ0FBZ0MsRUFBRSxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUMvSCxPQUFPLEdBQUcsQ0FBQztJQUNmLENBQUM7SUFFTSxLQUFLLENBQUMsZUFBZSxDQUFDLEVBQVU7UUFDbkMsSUFBSSxJQUFJLEdBQUcsSUFBSSxVQUFVLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQzFDLElBQUksR0FBRyxHQUFlLE1BQU0sY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFhLDRCQUE0QixFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDMUcsT0FBTyxHQUFHLENBQUM7SUFDZixDQUFDO0lBRU0sS0FBSyxDQUFDLGVBQWUsQ0FBQyxFQUFVLEVBQUUsRUFBYztRQUNuRCxJQUFJLElBQUksR0FBRyxJQUFJLFVBQVUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDMUMsSUFBSSxHQUFHLEdBQWUsTUFBTSxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQWEsNkJBQTZCLEVBQUUsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDaEgsT0FBTyxHQUFHLENBQUM7SUFDZixDQUFDOztvSEE3SVEsc0JBQXNCO3dIQUF0QixzQkFBc0I7NEZBQXRCLHNCQUFzQjtrQkFEbEMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbIi8vIEFuZ3VsYXJcclxuaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0b3IgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBIdHRwUGFyYW1zIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vbi9odHRwXCI7XHJcblxyXG4vLyBFU1xyXG5pbXBvcnQgeyBNZXNzYWdlU2VydmljZSB9IGZyb20gXCJAZXNmYWVuemEvZXh0ZW5zaW9uc1wiO1xyXG5pbXBvcnQgeyBIVFRQU2VydmljZSB9IGZyb20gXCJAZXNmYWVuemEvaHR0cHNlcnZpY2VcIjtcclxuXHJcbi8vIENvbmZpZ3VyYXppb25pXHJcbmltcG9ydCB7IFByb2Nlc3Nlc1ZpZXcgfSBmcm9tIFwiLi4vbW9kZWxzL2NvbXBvbmVudHMvUHJvY2Vzc2VzVmlld1wiO1xyXG5pbXBvcnQgeyBmaXJzdFZhbHVlRnJvbSwgY2F0Y2hFcnJvciwgb2YgfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQgeyBLZXlWYWx1ZSB9IGZyb20gXCJAZXNmYWVuemEvY29yZS9kb21haW5cIjtcclxuaW1wb3J0IHsgVG9wQWN0aXZpdGllc0RhdGFWaWV3IH0gZnJvbSBcIi4uL21vZGVscy9jb21wb25lbnRzL1RvcEFjdGl2aXRpZXNEYXRhVmlld1wiO1xyXG5pbXBvcnQgeyBEaXJlY3RvckluZm9zIH0gZnJvbSBcIi4uL21vZGVscy9jb21wb25lbnRzL0RpcmVjdG9ySW5mb3NcIjtcclxuaW1wb3J0IHsgTm9kZVN0YXRzIH0gZnJvbSBcIi4uL21vZGVscy9jb21wb25lbnRzL05vZGVTdGF0c1wiO1xyXG5pbXBvcnQgeyBTZXNzaW9uU3RhdHMgfSBmcm9tIFwiLi4vbW9kZWxzL2NvbXBvbmVudHMvU2Vzc2lvblN0YXRzXCI7XHJcbmltcG9ydCB7IFByb2ZpbGVyRGF0YU5vZGVzVmlldyB9IGZyb20gXCIuLi9tb2RlbHMvY29tcG9uZW50cy9Qcm9maWxlckRhdGFOb2Rlc1ZpZXdcIjtcclxuaW1wb3J0IHsgTWV0cmljc1ZpZXcgfSBmcm9tIFwiLi4vbW9kZWxzL2NvbXBvbmVudHMvTWV0cmljc1ZpZXdcIjtcclxuaW1wb3J0IHsgTWV0cmljIH0gZnJvbSBcIi4uL21vZGVscy9jb21wb25lbnRzL01ldHJpY1wiO1xyXG5pbXBvcnQgeyBMb2Nrc1ZpZXcgfSBmcm9tIFwiLi4vbW9kZWxzL2NvbXBvbmVudHMvTG9ja3NWaWV3XCI7XHJcbmltcG9ydCB7IER5bmFtaWNWaWV3c1ZpZXcgfSBmcm9tIFwiLi4vbW9kZWxzL2NvbXBvbmVudHMvRHluYW1pY1ZpZXdzVmlld1wiO1xyXG5pbXBvcnQgeyBBdWRpdHNWaWV3IH0gZnJvbSBcIi4uL21vZGVscy9jb21wb25lbnRzL0F1ZGl0c1ZpZXdcIjtcclxuaW1wb3J0IHsgUXVlcnlWaWV3IH0gZnJvbSBcIi4uL21vZGVscy9jb21wb25lbnRzL1F1ZXJ5Vmlld1wiO1xyXG5cclxuLy8gQ2hpYW1hdGUgYWkgUmVwb3NpdG9yeVxyXG5jb25zdCBHRVRfRGlyZWN0b3JfQ2hhbmdlUHJvY2Vzc0NvbnN1bWVyR3JvdXA6IHN0cmluZyA9IFwiL2FwaS9EaXJlY3Rvci9DaGFuZ2VQcm9jZXNzQ29uc3VtZXJHcm91cFwiO1xyXG5jb25zdCBHRVRfRGlyZWN0b3JfR2V0Q29uc3VtZXJHcm91cHM6IHN0cmluZyA9IFwiL2FwaS9EaXJlY3Rvci9HZXRDb25zdW1lckdyb3VwcyNjYWNoZVwiO1xyXG5jb25zdCBHRVRfRGlyZWN0b3JfR2V0SW5mb3M6IHN0cmluZyA9IFwiL2FwaS9EaXJlY3Rvci9HZXRJbmZvc1wiO1xyXG5jb25zdCBHRVRfRGlyZWN0b3JfR2V0TWV0cmljczogc3RyaW5nID0gXCIvYXBpL0RpcmVjdG9yL0dldE1ldHJpY3NcIjtcclxuY29uc3QgUE9TVF9EaXJlY3Rvcl9HZXRNZXRyaWNzOiBzdHJpbmcgPSBcIi9hcGkvRGlyZWN0b3IvR2V0TWV0cmljc1wiO1xyXG5jb25zdCBQT1NUX0RpcmVjdG9yX0dldFByb2ZpbGVyRGF0YU5vZGVzOiBzdHJpbmcgPSBcIi9hcGkvRGlyZWN0b3IvR2V0UHJvZmlsZXJEYXRhTm9kZXNcIjtcclxuY29uc3QgR0VUX0RpcmVjdG9yX0dldFdvcmtsb2FkUmVwb3J0OiBzdHJpbmcgPSBcIi9hcGkvRGlyZWN0b3IvR2V0V29ya2xvYWRSZXBvcnRcIjtcclxuY29uc3QgUE9TVF9EaXJlY3Rvcl9HZXRTZXJ2ZXJBdWRpdHM6IHN0cmluZyA9IFwiL2FwaS9EaXJlY3Rvci9HZXRTZXJ2ZXJBdWRpdHNcIjtcclxuY29uc3QgUE9TVF9EaXJlY3Rvcl9HZXREeW5hbWljVmlld0RhdGE6IHN0cmluZyA9IFwiL2FwaS9EaXJlY3Rvci9HZXREeW5hbWljVmlld0RhdGFcIjtcclxuY29uc3QgUE9TVF9EaXJlY3Rvcl9HZXRTZXJ2ZXJMb2Nrczogc3RyaW5nID0gXCIvYXBpL0RpcmVjdG9yL0dldFNlcnZlckxvY2tzXCI7XHJcbmNvbnN0IFBPU1RfRGlyZWN0b3JfR2V0U2VydmVyUXVlcnk6IHN0cmluZyA9IFwiL2FwaS9EaXJlY3Rvci9HZXRTZXJ2ZXJRdWVyeVwiO1xyXG5jb25zdCBHRVRfRGlyZWN0b3JfR2V0U2VydmVyTG9nczogc3RyaW5nID0gXCIvYXBpL0RpcmVjdG9yL0dldFNlcnZlckxvZ3NcIjtcclxuY29uc3QgR0VUX0RpcmVjdG9yX0dldER5bmFtaWNWaWV3czogc3RyaW5nID0gXCIvYXBpL0RpcmVjdG9yL0dldER5bmFtaWNWaWV3c1wiO1xyXG5jb25zdCBQT1NUX0RpcmVjdG9yX0dldFNlcnZlcldvcmtlcnM6IHN0cmluZyA9IFwiL2FwaS9EaXJlY3Rvci9HZXRTZXJ2ZXJXb3JrZXJzXCI7XHJcbmNvbnN0IFBPU1RfRGlyZWN0b3JfR2V0VG9wQWN0aXZpdGllczogc3RyaW5nID0gXCIvYXBpL0RpcmVjdG9yL0dldFRvcEFjdGl2aXRpZXNcIjtcclxuY29uc3QgR0VUX0RpcmVjdG9yX0tpbGxQcm9jZXNzOiBzdHJpbmcgPSBcIi9hcGkvRGlyZWN0b3IvS2lsbFByb2Nlc3NcIjtcclxuY29uc3QgR0VUX0RpcmVjdG9yX1NldFByb2Nlc3NUcmFjaW5nOiBzdHJpbmcgPSBcIi9hcGkvRGlyZWN0b3IvU2V0UHJvY2Vzc1RyYWNpbmdcIjtcclxuY29uc3QgR0VUX0RpcmVjdG9yX0dldE5vZGVTdGF0czogc3RyaW5nID0gXCIvYXBpL0RpcmVjdG9yL0dldE5vZGVTdGF0c1wiO1xyXG5jb25zdCBHRVRfRGlyZWN0b3JfR2V0U2Vzc2lvblN0YXRzOiBzdHJpbmcgPSBcIi9hcGkvRGlyZWN0b3IvR2V0U2Vzc2lvblN0YXRzXCI7XHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBBZG1pbk1vZHVsZUJhc2VTZXJ2aWNlIHtcclxuICAgIHB1YmxpYyBodHRwOiBIVFRQU2VydmljZTtcclxuICAgIHB1YmxpYyBtc2dFeHRzOiBNZXNzYWdlU2VydmljZTtcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGluamVjdG9yOiBJbmplY3Rvcikge1xyXG4gICAgICAgIHRoaXMuaHR0cCA9IHRoaXMuaW5qZWN0b3IuZ2V0KEhUVFBTZXJ2aWNlKTtcclxuICAgICAgICB0aGlzLm1zZ0V4dHMgPSB0aGlzLmluamVjdG9yLmdldChNZXNzYWdlU2VydmljZSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGFzeW5jIGdldFNlcnZlcldvcmtlcnMoc3Y6IFByb2Nlc3Nlc1ZpZXcpOiBQcm9taXNlPFByb2Nlc3Nlc1ZpZXc+IHtcclxuICAgICAgICBsZXQgcmV0OiBQcm9jZXNzZXNWaWV3ID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5odHRwLnBvc3Q8UHJvY2Vzc2VzVmlldz4oUE9TVF9EaXJlY3Rvcl9HZXRTZXJ2ZXJXb3JrZXJzLCBzdikpO1xyXG4gICAgICAgIHJldHVybiByZXQ7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGFzeW5jIGRvU2V0UHJvY2Vzc1RyYWNpbmcoYmU6IHN0cmluZywgaW5zdGFuY2VpZDogc3RyaW5nLCBzaWQ6IHN0cmluZywgc2VyaWFsOiBzdHJpbmcsIGVuYWJsZTogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcclxuICAgICAgICB2YXIgcGFycyA9IG5ldyBIdHRwUGFyYW1zKClcclxuICAgICAgICAgICAgLnNldChcImluc3RhbmNlaWRcIiwgaW5zdGFuY2VpZClcclxuICAgICAgICAgICAgLnNldChcInNpZFwiLCBzaWQpXHJcbiAgICAgICAgICAgIC5zZXQoXCJzZXJpYWxcIiwgc2VyaWFsKVxyXG4gICAgICAgICAgICAuc2V0KFwiZW5hYmxlXCIsIGVuYWJsZSlcclxuICAgICAgICAgICAgLnNldChcImJlXCIsIGJlKTtcclxuXHJcbiAgICAgICAgbGV0IHJldDogc3RyaW5nID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5odHRwLmdldDxzdHJpbmc+KEdFVF9EaXJlY3Rvcl9TZXRQcm9jZXNzVHJhY2luZywgcGFycykpO1xyXG4gICAgICAgIHJldHVybiByZXQ7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGFzeW5jIGRvS2lsbFByb2Nlc3MoYmU6IHN0cmluZywgaW5zdGFuY2VpZDogc3RyaW5nLCBzaWQ6IHN0cmluZywgc2VyaWFsOiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZz4ge1xyXG4gICAgICAgIHZhciBwYXJzID0gbmV3IEh0dHBQYXJhbXMoKVxyXG4gICAgICAgICAgICAuc2V0KFwiaW5zdGFuY2VpZFwiLCBpbnN0YW5jZWlkKVxyXG4gICAgICAgICAgICAuc2V0KFwic2lkXCIsIHNpZClcclxuICAgICAgICAgICAgLnNldChcInNlcmlhbFwiLCBzZXJpYWwpXHJcbiAgICAgICAgICAgIC5zZXQoXCJiZVwiLCBiZSk7XHJcblxyXG4gICAgICAgIGxldCByZXQ6IHN0cmluZyA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMuaHR0cC5nZXQ8c3RyaW5nPihHRVRfRGlyZWN0b3JfS2lsbFByb2Nlc3MsIHBhcnMpKTtcclxuICAgICAgICByZXR1cm4gcmV0O1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBhc3luYyBkb0NoYW5nZVByb2Nlc3NDb25zdW1lckdyb3VwKGJlOiBzdHJpbmcsIGluc3RhbmNlaWQ6IHN0cmluZywgc2lkOiBzdHJpbmcsIHNlcmlhbDogc3RyaW5nLCBjb25zdW1lckdyb3VwOiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZz4ge1xyXG4gICAgICAgIHZhciBwYXJzID0gbmV3IEh0dHBQYXJhbXMoKVxyXG4gICAgICAgICAgICAuc2V0KFwiaW5zdGFuY2VpZFwiLCBpbnN0YW5jZWlkKVxyXG4gICAgICAgICAgICAuc2V0KFwic2lkXCIsIHNpZClcclxuICAgICAgICAgICAgLnNldChcInNlcmlhbFwiLCBzZXJpYWwpXHJcbiAgICAgICAgICAgIC5zZXQoXCJjb25zdW1lcl9ncm91cFwiLCBjb25zdW1lckdyb3VwKVxyXG4gICAgICAgICAgICAuc2V0KFwiYmVcIiwgYmUpO1xyXG5cclxuICAgICAgICBsZXQgcmV0OiBzdHJpbmcgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLmh0dHAuZ2V0PHN0cmluZz4oR0VUX0RpcmVjdG9yX0NoYW5nZVByb2Nlc3NDb25zdW1lckdyb3VwLCBwYXJzKSk7XHJcbiAgICAgICAgcmV0dXJuIHJldDtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgYXN5bmMgZ2V0Q29uc3VtZXJHcm91cHMoYmU6IHN0cmluZyk6IFByb21pc2U8S2V5VmFsdWVbXT4ge1xyXG4gICAgICAgIHZhciBwYXJzID0gbmV3IEh0dHBQYXJhbXMoKS5zZXQoXCJiZVwiLCBiZSk7XHJcblxyXG4gICAgICAgIGxldCByZXQ6IEtleVZhbHVlW10gPSBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLmh0dHAuZ2V0PEtleVZhbHVlW10+KEdFVF9EaXJlY3Rvcl9HZXRDb25zdW1lckdyb3VwcywgcGFycykpO1xyXG4gICAgICAgIHJldHVybiByZXQ7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGFzeW5jIGdldFNlcnZlckxvZ3MoYmU6IHN0cmluZywgZnJvbTogc3RyaW5nLCB0bzogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcclxuICAgICAgICB2YXIgcGFycyA9IG5ldyBIdHRwUGFyYW1zKCkuc2V0KFwiZnJvbVwiLCBmcm9tKS5zZXQoXCJ0b1wiLCB0bykuc2V0KFwiYmVcIiwgYmUpO1xyXG4gICAgICAgIGxldCByZXQ6IHN0cmluZyA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMuaHR0cC5nZXQ8c3RyaW5nPihHRVRfRGlyZWN0b3JfR2V0U2VydmVyTG9ncywgcGFycykpO1xyXG4gICAgICAgIHJldHVybiByZXQ7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGFzeW5jIGdldFRvcEFjdGl2aXRpZXMoYmU6IHN0cmluZywgc3Y6IFRvcEFjdGl2aXRpZXNEYXRhVmlldyk6IFByb21pc2U8VG9wQWN0aXZpdGllc0RhdGFWaWV3PiB7XHJcbiAgICAgICAgdmFyIHBhcnMgPSBuZXcgSHR0cFBhcmFtcygpLnNldChcImJlXCIsIGJlKTtcclxuICAgICAgICBsZXQgcmV0OiBUb3BBY3Rpdml0aWVzRGF0YVZpZXcgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLmh0dHAucG9zdDxUb3BBY3Rpdml0aWVzRGF0YVZpZXc+KFBPU1RfRGlyZWN0b3JfR2V0VG9wQWN0aXZpdGllcywgc3YsIHBhcnMpKTtcclxuICAgICAgICByZXR1cm4gcmV0O1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBhc3luYyBnZXRJbmZvcyhiZTogc3RyaW5nKTogUHJvbWlzZTxEaXJlY3RvckluZm9zPiB7XHJcbiAgICAgICAgdmFyIHBhcnMgPSBuZXcgSHR0cFBhcmFtcygpLnNldChcImJlXCIsIGJlKTtcclxuICAgICAgICBsZXQgcmV0OiBEaXJlY3RvckluZm9zID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5odHRwLmdldDxEaXJlY3RvckluZm9zPihHRVRfRGlyZWN0b3JfR2V0SW5mb3MsIHBhcnMsIG51bGwsIGZhbHNlKS5waXBlKGNhdGNoRXJyb3IoXyA9PiBvZihudWxsIGFzIERpcmVjdG9ySW5mb3MpKSkpO1xyXG4gICAgICAgIHJldHVybiByZXQ7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGFzeW5jIGdldE5vZGVTdGF0cyhiZTogc3RyaW5nLCBub2RlSWQ6IHN0cmluZyk6IFByb21pc2U8Tm9kZVN0YXRzPiB7XHJcbiAgICAgICAgbGV0IHBhcnMgPSBuZXcgSHR0cFBhcmFtcygpLnNldChcIm5vZGVJZFwiLCBub2RlSWQpLnNldChcImJlXCIsIGJlKTtcclxuICAgICAgICBsZXQgcmV0OiBOb2RlU3RhdHMgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLmh0dHAuZ2V0PE5vZGVTdGF0cz4oR0VUX0RpcmVjdG9yX0dldE5vZGVTdGF0cywgcGFycykpO1xyXG4gICAgICAgIHJldHVybiByZXQ7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGFzeW5jIGdldFNlc3Npb25TdGF0cyhiZTogc3RyaW5nLCBzaWQ6IHN0cmluZywgc2VyaWFsOiBzdHJpbmcpOiBQcm9taXNlPFNlc3Npb25TdGF0cz4ge1xyXG4gICAgICAgIGxldCBwYXJzID0gbmV3IEh0dHBQYXJhbXMoKS5zZXQoJ3NpZCcsIHNpZCkuc2V0KCdzZXJpYWwnLCBzZXJpYWwpLnNldChcImJlXCIsIGJlKTtcclxuICAgICAgICBsZXQgcmV0OiBTZXNzaW9uU3RhdHMgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLmh0dHAuZ2V0PFNlc3Npb25TdGF0cz4oR0VUX0RpcmVjdG9yX0dldFNlc3Npb25TdGF0cywgcGFycykpO1xyXG4gICAgICAgIHJldHVybiByZXQ7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGFzeW5jIGdldFByb2ZpbGVyRGF0YU5vZGVzKGJlOiBzdHJpbmcsIHN2OiBQcm9maWxlckRhdGFOb2Rlc1ZpZXcpOiBQcm9taXNlPFByb2ZpbGVyRGF0YU5vZGVzVmlldz4ge1xyXG4gICAgICAgIHZhciBwYXJzID0gbmV3IEh0dHBQYXJhbXMoKS5zZXQoXCJiZVwiLCBiZSk7XHJcbiAgICAgICAgbGV0IHJldDogUHJvZmlsZXJEYXRhTm9kZXNWaWV3ID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5odHRwLnBvc3Q8UHJvZmlsZXJEYXRhTm9kZXNWaWV3PihQT1NUX0RpcmVjdG9yX0dldFByb2ZpbGVyRGF0YU5vZGVzLCBzdiwgcGFycykpO1xyXG4gICAgICAgIHJldHVybiByZXQ7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGRvd25sb2FkV29ya2xvYWRSZXBvcnQoYmU6IHN0cmluZywgZnJvbTogc3RyaW5nLCB0bzogc3RyaW5nKSB7XHJcbiAgICAgICAgbGV0IHBhcnMgPSBuZXcgSHR0cFBhcmFtcygpLnNldChcImZyb21cIiwgZnJvbSB8fCBcIlwiKS5zZXQoXCJ0b1wiLCB0byB8fCBcIlwiKS5zZXQoXCJiZVwiLCBiZSk7XHJcbiAgICAgICAgdGhpcy5odHRwLmdldEZpbGVOYXRpdmUoR0VUX0RpcmVjdG9yX0dldFdvcmtsb2FkUmVwb3J0LCBwYXJzKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgYXN5bmMgZ2V0TWV0cmljcyhiZTogc3RyaW5nLCBzdjogTWV0cmljc1ZpZXcpOiBQcm9taXNlPE1ldHJpY3NWaWV3PiB7XHJcbiAgICAgICAgdmFyIHBhcnMgPSBuZXcgSHR0cFBhcmFtcygpLnNldChcImJlXCIsIGJlKTtcclxuICAgICAgICBsZXQgcmV0OiBNZXRyaWNzVmlldyA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMuaHR0cC5wb3N0PE1ldHJpY3NWaWV3PihQT1NUX0RpcmVjdG9yX0dldE1ldHJpY3MsIHN2LCBwYXJzKSk7XHJcbiAgICAgICAgcmV0dXJuIHJldDtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgYXN5bmMgZ2V0TWV0cmljc0xpc3QoYmU6IHN0cmluZywgZnJvbTogc3RyaW5nLCB0bzogc3RyaW5nKTogUHJvbWlzZTxNZXRyaWNbXT4ge1xyXG4gICAgICAgIGxldCBwYXJzID0gbmV3IEh0dHBQYXJhbXMoKVxyXG4gICAgICAgICAgICAuc2V0KFwiZnJvbVwiLCBmcm9tIHx8IFwiXCIpXHJcbiAgICAgICAgICAgIC5zZXQoXCJ0b1wiLCB0byB8fCBcIlwiKVxyXG4gICAgICAgICAgICAuc2V0KFwiYmVcIiwgYmUpO1xyXG5cclxuICAgICAgICBsZXQgcmV0OiBNZXRyaWNbXSA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMuaHR0cC5nZXQ8TWV0cmljW10+KEdFVF9EaXJlY3Rvcl9HZXRNZXRyaWNzLCBwYXJzKSk7XHJcbiAgICAgICAgcmV0dXJuIHJldC5zb3J0KChhLCBiKSA9PiBhLm5hbWUubG9jYWxlQ29tcGFyZShiLm5hbWUpKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgYXN5bmMgZ2V0U2VydmVyTG9ja3MoYmU6IHN0cmluZywgc3Y6IExvY2tzVmlldyk6IFByb21pc2U8TG9ja3NWaWV3PiB7XHJcbiAgICAgICAgdmFyIHBhcnMgPSBuZXcgSHR0cFBhcmFtcygpLnNldChcImJlXCIsIGJlKTtcclxuICAgICAgICBsZXQgcmV0OiBMb2Nrc1ZpZXcgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLmh0dHAucG9zdDxMb2Nrc1ZpZXc+KFBPU1RfRGlyZWN0b3JfR2V0U2VydmVyTG9ja3MsIHN2LCBwYXJzKSk7XHJcbiAgICAgICAgcmV0dXJuIHJldDtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgYXN5bmMgZ2V0U2VydmVyUXVlcnkoYmU6IHN0cmluZywgc3Y6IFF1ZXJ5Vmlldyk6IFByb21pc2U8UXVlcnlWaWV3PiB7XHJcbiAgICAgICAgdmFyIHBhcnMgPSBuZXcgSHR0cFBhcmFtcygpLnNldChcImJlXCIsIGJlKTtcclxuICAgICAgICBsZXQgcmV0OiBRdWVyeVZpZXcgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLmh0dHAucG9zdDxRdWVyeVZpZXc+KFBPU1RfRGlyZWN0b3JfR2V0U2VydmVyUXVlcnksIHN2LCBwYXJzKSk7XHJcbiAgICAgICAgcmV0dXJuIHJldDtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgYXN5bmMgZ2V0RHluYW1pY1ZpZXdEYXRhKGJlOiBzdHJpbmcsIHN2OiBEeW5hbWljVmlld3NWaWV3KTogUHJvbWlzZTxEeW5hbWljVmlld3NWaWV3PiB7XHJcbiAgICAgICAgdmFyIHBhcnMgPSBuZXcgSHR0cFBhcmFtcygpLnNldChcImJlXCIsIGJlKTtcclxuICAgICAgICBsZXQgcmV0OiBEeW5hbWljVmlld3NWaWV3ID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5odHRwLnBvc3Q8RHluYW1pY1ZpZXdzVmlldz4oUE9TVF9EaXJlY3Rvcl9HZXREeW5hbWljVmlld0RhdGEsIHN2LCBwYXJzKSk7XHJcbiAgICAgICAgcmV0dXJuIHJldDtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgYXN5bmMgZ2V0RHluYW1pY1ZpZXdzKGJlOiBzdHJpbmcpOiBQcm9taXNlPEtleVZhbHVlW10+IHtcclxuICAgICAgICB2YXIgcGFycyA9IG5ldyBIdHRwUGFyYW1zKCkuc2V0KFwiYmVcIiwgYmUpO1xyXG4gICAgICAgIGxldCByZXQ6IEtleVZhbHVlW10gPSBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLmh0dHAuZ2V0PEtleVZhbHVlW10+KEdFVF9EaXJlY3Rvcl9HZXREeW5hbWljVmlld3MsIHBhcnMpKTtcclxuICAgICAgICByZXR1cm4gcmV0O1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBhc3luYyBnZXRTZXJ2ZXJBdWRpdHMoYmU6IHN0cmluZywgc3Y6IEF1ZGl0c1ZpZXcpOiBQcm9taXNlPEF1ZGl0c1ZpZXc+IHtcclxuICAgICAgICB2YXIgcGFycyA9IG5ldyBIdHRwUGFyYW1zKCkuc2V0KFwiYmVcIiwgYmUpO1xyXG4gICAgICAgIGxldCByZXQ6IEF1ZGl0c1ZpZXcgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLmh0dHAucG9zdDxBdWRpdHNWaWV3PihQT1NUX0RpcmVjdG9yX0dldFNlcnZlckF1ZGl0cywgc3YsIHBhcnMpKTtcclxuICAgICAgICByZXR1cm4gcmV0O1xyXG4gICAgfVxyXG59Il19
|