asp-lib 1.0.13 → 1.0.14
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/esm2022/lib/application-menu/application-menu.component.mjs +3 -3
- package/esm2022/lib/asp-lib.module.mjs +13 -3
- package/esm2022/lib/assign-roles/assign-roles.component.mjs +4 -4
- package/esm2022/lib/basic-item/basic-item.component.mjs +3 -3
- package/esm2022/lib/checkbox/checkbox.component.mjs +3 -3
- package/esm2022/lib/checkbox-field/checkbox-field.component.mjs +3 -3
- package/esm2022/lib/company-dropdown/company-dropdown.component.mjs +3 -3
- package/esm2022/lib/dropdown/dropdown.component.mjs +3 -3
- package/esm2022/lib/form/form.component.mjs +9 -3
- package/esm2022/lib/form-2/form-2.component.mjs +85 -0
- package/esm2022/lib/header/header.component.mjs +3 -3
- package/esm2022/lib/input/input.component.mjs +3 -3
- package/esm2022/lib/interfaces/interfaces.mjs +1 -1
- package/esm2022/lib/items-selector/items-selector.component.mjs +3 -3
- package/esm2022/lib/items-viewer/items-viewer.component.mjs +7 -5
- package/esm2022/lib/list/list.component.mjs +3 -3
- package/esm2022/lib/loader/loader.component.mjs +3 -3
- package/esm2022/lib/menu/menu.component.mjs +3 -3
- package/esm2022/lib/menu-admin/menu-admin.component.mjs +3 -3
- package/esm2022/lib/modules-admin/modules-admin.component.mjs +92 -0
- package/esm2022/lib/move-menu-option/move-menu-option.component.mjs +3 -3
- package/esm2022/lib/multi-option-dialog/multi-option-dialog.component.mjs +3 -3
- package/esm2022/lib/notifications/notifications.component.mjs +3 -3
- package/esm2022/lib/radio-button/radio-button.component.mjs +3 -3
- package/esm2022/lib/radio-group/radio-group.component.mjs +3 -3
- package/esm2022/lib/recents-dropdown/recents-dropdown.component.mjs +3 -3
- package/esm2022/lib/resource-actions/resource-actions.component.mjs +3 -3
- package/esm2022/lib/role-card/role-card.component.mjs +3 -3
- package/esm2022/lib/role-info/role-info.component.mjs +3 -3
- package/esm2022/lib/security-admin/security-admin.component.mjs +42 -104
- package/esm2022/lib/select/select.component.mjs +3 -3
- package/esm2022/lib/services/security-admin.service.mjs +77 -67
- package/esm2022/lib/snackbar/snackbar.component.mjs +3 -3
- package/esm2022/lib/tree/tree.component.mjs +3 -3
- package/esm2022/lib/user-dropdown/user-dropdown.component.mjs +3 -3
- package/esm2022/lib/users-admin/users-admin.component.mjs +40 -31
- package/fesm2022/asp-lib.mjs +395 -263
- package/fesm2022/asp-lib.mjs.map +1 -1
- package/lib/asp-lib.module.d.ts +19 -16
- package/lib/form/form.component.d.ts +2 -0
- package/lib/form-2/form-2.component.d.ts +24 -0
- package/lib/interfaces/interfaces.d.ts +30 -1
- package/lib/items-viewer/items-viewer.component.d.ts +2 -2
- package/lib/modules-admin/modules-admin.component.d.ts +39 -0
- package/lib/security-admin/security-admin.component.d.ts +3 -25
- package/lib/services/security-admin.service.d.ts +5 -19
- package/package.json +3 -2
- package/src/lib/assets/fonts/fonts/asp-lib-icons.eot +0 -0
- package/src/lib/assets/fonts/fonts/asp-lib-icons.svg +48 -46
- package/src/lib/assets/fonts/fonts/asp-lib-icons.ttf +0 -0
- package/src/lib/assets/fonts/fonts/asp-lib-icons.woff +0 -0
- package/src/lib/assets/fonts/selection.json +1 -1
- package/src/lib/assets/fonts/style.css +144 -144
- package/src/lib/assets/{theme.css → theme.scss} +2 -0
|
@@ -41,8 +41,9 @@ export class SecurityAdminService {
|
|
|
41
41
|
this.listUsersEndpoint = '';
|
|
42
42
|
this.assignRoleUsersEndpoint = '';
|
|
43
43
|
this.assignRoleCustomersEndpoint = '';
|
|
44
|
+
this.endpoints = {};
|
|
44
45
|
this.theme = 'default';
|
|
45
|
-
this.msgLabel = { "User": "Usuario", "Customer": "
|
|
46
|
+
this.msgLabel = { "User": "Usuario", "Customer": "Empresa", "Role": "Rol" };
|
|
46
47
|
this.reloadByEntity = {
|
|
47
48
|
"User": new Subject(),
|
|
48
49
|
"Customer": new Subject(),
|
|
@@ -55,101 +56,104 @@ export class SecurityAdminService {
|
|
|
55
56
|
subject.subscribe({ next: (item) => this.selectedItem = item });
|
|
56
57
|
}
|
|
57
58
|
}
|
|
59
|
+
setSecurityEndpoints(endpoints) {
|
|
60
|
+
this.endpoints = endpoints;
|
|
61
|
+
}
|
|
58
62
|
getRoles() {
|
|
59
|
-
return this.http.get(this.listRolesEndpoint);
|
|
63
|
+
return this.http.get(this.endpoints.listRolesEndpoint ?? '');
|
|
60
64
|
}
|
|
61
65
|
deleteMenuOption(option) {
|
|
62
|
-
return this.http.get(`${this.deleteMenuOptionEndpoint}?optionId=${option.id}`);
|
|
66
|
+
return this.http.get(`${this.endpoints.deleteMenuOptionEndpoint ?? ''}?optionId=${option.id}`);
|
|
63
67
|
}
|
|
64
68
|
setTheme(theme) {
|
|
65
69
|
this.theme = Boolean(theme) ? theme : 'default';
|
|
66
70
|
}
|
|
67
71
|
getActions(roleId, resourceId) {
|
|
68
|
-
return this.http.get(`${this.
|
|
69
|
-
}
|
|
70
|
-
setDeleteMenuOptionEndpoint(endpoint) {
|
|
71
|
-
this.deleteMenuOptionEndpoint = endpoint;
|
|
72
|
+
return this.http.get(`${this.endpoints.actionsByRoleAndResourceEndpoint == ''}?roleId=${roleId}&resourceId=${resourceId}`);
|
|
72
73
|
}
|
|
74
|
+
// setDeleteMenuOptionEndpoint(endpoint: string){
|
|
75
|
+
// this.deleteMenuOptionEndpoint = endpoint;
|
|
76
|
+
// }
|
|
73
77
|
getResourcesByRole(roleId) {
|
|
74
|
-
return this.http.get(`${this.resourcesByRoleEndpoint}?roledId=${roleId}`);
|
|
75
|
-
}
|
|
76
|
-
setListUsersEndpoint(endpoint) {
|
|
77
|
-
this.listUsersEndpoint = endpoint;
|
|
78
|
+
return this.http.get(`${this.endpoints.resourcesByRoleEndpoint ?? ''}?roledId=${roleId}`);
|
|
78
79
|
}
|
|
80
|
+
// setListUsersEndpoint(endpoint: string) {
|
|
81
|
+
// this.listUsersEndpoint = endpoint;
|
|
82
|
+
// }
|
|
79
83
|
setMenuOptionFormComponent(component) {
|
|
80
84
|
this.menuOptionFormComponent = component;
|
|
81
85
|
}
|
|
82
|
-
setUsersByRoleEndpoint(endpoint) {
|
|
83
|
-
|
|
84
|
-
}
|
|
85
|
-
setCustomersByRoleEndpoint(endpoint) {
|
|
86
|
-
|
|
87
|
-
}
|
|
88
|
-
setSaveMenuOptionEndpoint(endpoint) {
|
|
89
|
-
|
|
90
|
-
}
|
|
91
|
-
setGetMenuTreeEndpoint(endpoint) { this.getMenuTreeEndpoint = endpoint
|
|
92
|
-
setAssignRoleUsersEndpoint(endpoint) { this.assignRoleUsersEndpoint = endpoint
|
|
93
|
-
setAssignRoleCustomersEndpoint(endpoint) {
|
|
94
|
-
|
|
95
|
-
}
|
|
86
|
+
// setUsersByRoleEndpoint(endpoint: string) {
|
|
87
|
+
// this.usersByRoleEndpoint = endpoint;
|
|
88
|
+
// }
|
|
89
|
+
// setCustomersByRoleEndpoint(endpoint: string) {
|
|
90
|
+
// this.customersByRoleEndpoint = endpoint;
|
|
91
|
+
// }
|
|
92
|
+
// setSaveMenuOptionEndpoint(endpoint: string) {
|
|
93
|
+
// this.saveMenuOptionEndpoint = endpoint;
|
|
94
|
+
// }
|
|
95
|
+
// setGetMenuTreeEndpoint(endpoint: string) { this.getMenuTreeEndpoint = endpoint }
|
|
96
|
+
// setAssignRoleUsersEndpoint(endpoint: string) { this.assignRoleUsersEndpoint = endpoint }
|
|
97
|
+
// setAssignRoleCustomersEndpoint(endpoint: string) {
|
|
98
|
+
// this.assignRoleCustomersEndpoint = endpoint;
|
|
99
|
+
// }
|
|
96
100
|
saveMenuOption(option) {
|
|
97
|
-
return this.http.post(this.saveMenuOptionEndpoint, { ...option, id: option.id > -1 ? option.id : null });
|
|
98
|
-
}
|
|
99
|
-
getUsers(page = 1, pageSize = 10) {
|
|
100
|
-
return this.http.get(`this.listUsersEndpoint?page=${page}&pageSize=${pageSize}`);
|
|
101
|
+
return this.http.post(this.endpoints.saveMenuOptionEndpoint ?? '', { ...option, id: option.id > -1 ? option.id : null });
|
|
101
102
|
}
|
|
103
|
+
// getUsers(page: number = 1, pageSize: number = 10) {
|
|
104
|
+
// return this.http.get(`this.listUsersEndpoint?page=${page}&pageSize=${pageSize}`);
|
|
105
|
+
// }
|
|
102
106
|
getAssignedRoles(id, type) {
|
|
103
|
-
return this.http.get(`${type === "User" ? this.rolesByUserEndpoint : this.rolesByCustomerEndpoint}?${paramNames[type]}=${id}`);
|
|
107
|
+
return this.http.get(`${type === "User" ? (this.endpoints.rolesByUserEndpoint ?? '') : (this.endpoints.rolesByCustomerEndpoint ?? '')}?${paramNames[type]}=${id}`);
|
|
104
108
|
}
|
|
105
109
|
assignRoles(id, roles, type) {
|
|
106
|
-
return this.http.post(type === "User" ? this.assignUserRoleEndpoint : this.assignCustomerRoleEndpoint, {
|
|
110
|
+
return this.http.post(type === "User" ? (this.endpoints.assignUserRoleEndpoint ?? '') : (this.endpoints.assignCustomerRoleEndpoint ?? ''), {
|
|
107
111
|
[paramNames[type]]: id,
|
|
108
112
|
roles
|
|
109
113
|
});
|
|
110
114
|
}
|
|
111
115
|
assignRoleUsers(roleId, users) {
|
|
112
|
-
return this.http.post(this.assignRoleUsersEndpoint, {
|
|
116
|
+
return this.http.post(this.endpoints.assignRoleUsersEndpoint ?? '', {
|
|
113
117
|
roleId,
|
|
114
118
|
users
|
|
115
119
|
});
|
|
116
120
|
}
|
|
117
121
|
assignRoleCustomers(roleId, customers) {
|
|
118
|
-
return this.http.post(this.assignRoleCustomersEndpoint, {
|
|
122
|
+
return this.http.post(this.endpoints.assignRoleCustomersEndpoint ?? '', {
|
|
119
123
|
roleId,
|
|
120
124
|
customers
|
|
121
125
|
});
|
|
122
126
|
}
|
|
123
|
-
setRolesByUserEndpoint(endpoint) {
|
|
124
|
-
|
|
125
|
-
}
|
|
126
|
-
setAssignUserRoleEndpoint(endpoint) {
|
|
127
|
-
|
|
128
|
-
}
|
|
129
|
-
setRolesByCustomerEndpoint(endpoint) {
|
|
130
|
-
|
|
131
|
-
}
|
|
132
|
-
setAssignCustomerRoleEndpoint(endpoint) {
|
|
133
|
-
|
|
134
|
-
}
|
|
135
|
-
setSavePermissionsEndpoint(endpoint) {
|
|
136
|
-
|
|
137
|
-
}
|
|
138
|
-
setUsersByCustomerEndpoint(endpoint) {
|
|
139
|
-
|
|
140
|
-
}
|
|
141
|
-
setListRolesEndpoint(endpoint) {
|
|
142
|
-
|
|
143
|
-
}
|
|
144
|
-
setAssignResourceEndpoint(endpoint) {
|
|
145
|
-
|
|
146
|
-
}
|
|
147
|
-
setResourcesByRoleEndpoint(endpoint) {
|
|
148
|
-
|
|
149
|
-
}
|
|
150
|
-
setActionsByRoleAndResourceEndpoint(endpoint) {
|
|
151
|
-
|
|
152
|
-
}
|
|
127
|
+
// setRolesByUserEndpoint(endpoint: string) {
|
|
128
|
+
// this.rolesByUserEndpoint = endpoint;
|
|
129
|
+
// }
|
|
130
|
+
// setAssignUserRoleEndpoint(endpoint: string) {
|
|
131
|
+
// this.assignUserRoleEndpoint = endpoint;
|
|
132
|
+
// }
|
|
133
|
+
// setRolesByCustomerEndpoint(endpoint: string) {
|
|
134
|
+
// this.rolesByCustomerEndpoint = endpoint;
|
|
135
|
+
// }
|
|
136
|
+
// setAssignCustomerRoleEndpoint(endpoint: string) {
|
|
137
|
+
// this.assignCustomerRoleEndpoint = endpoint;
|
|
138
|
+
// }
|
|
139
|
+
// setSavePermissionsEndpoint(endpoint: string) {
|
|
140
|
+
// this.savePermissionsEndpoint = endpoint;
|
|
141
|
+
// }
|
|
142
|
+
// setUsersByCustomerEndpoint(endpoint: string) {
|
|
143
|
+
// this.usersByCustomerEndpoint = endpoint;
|
|
144
|
+
// }
|
|
145
|
+
// setListRolesEndpoint(endpoint: string) {
|
|
146
|
+
// this.listRolesEndpoint = endpoint;
|
|
147
|
+
// }
|
|
148
|
+
// setAssignResourceEndpoint(endpoint: string) {
|
|
149
|
+
// this.assignResourceEndpoint = endpoint;
|
|
150
|
+
// }
|
|
151
|
+
// setResourcesByRoleEndpoint(endpoint: string) {
|
|
152
|
+
// this.resourcesByRoleEndpoint = endpoint;
|
|
153
|
+
// }
|
|
154
|
+
// setActionsByRoleAndResourceEndpoint(endpoint: string) {
|
|
155
|
+
// this.getActionsEndpoint = endpoint;
|
|
156
|
+
// }
|
|
153
157
|
selectUser(user) {
|
|
154
158
|
this.selectedUserSubject.next(user);
|
|
155
159
|
}
|
|
@@ -163,13 +167,19 @@ export class SecurityAdminService {
|
|
|
163
167
|
return this.http.post(endpoint, updatedItem);
|
|
164
168
|
}
|
|
165
169
|
assignResource(roleId, resources) {
|
|
166
|
-
return this.http.post(this.assignResourceEndpoint, { roleId, resources });
|
|
170
|
+
return this.http.post(this.endpoints.assignResourceEndpoint ?? '', { roleId, resources });
|
|
167
171
|
}
|
|
168
172
|
savePermissions(permissions) {
|
|
169
|
-
return this.http.post(this.savePermissionsEndpoint, permissions);
|
|
173
|
+
return this.http.post(this.endpoints.savePermissionsEndpoint ?? '', permissions);
|
|
170
174
|
}
|
|
171
175
|
getMenuTree() {
|
|
172
|
-
return this.http.get(this.getMenuTreeEndpoint);
|
|
176
|
+
return this.http.get(this.endpoints.getMenuTreeEndpoint ?? '');
|
|
177
|
+
}
|
|
178
|
+
getAppModules() {
|
|
179
|
+
return this.http.get(this.endpoints.listModulesEndpoint ?? '');
|
|
180
|
+
}
|
|
181
|
+
saveModule(module) {
|
|
182
|
+
return this.http.post(this.endpoints.createModuleEndpoint ?? '', module);
|
|
173
183
|
}
|
|
174
184
|
reloadEntity(entityName) {
|
|
175
185
|
this.reloadSubject.next(entityName);
|
|
@@ -183,4 +193,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
183
193
|
providedIn: 'root'
|
|
184
194
|
}]
|
|
185
195
|
}], ctorParameters: function () { return [{ type: i1.HttpClient }]; } });
|
|
186
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VjdXJpdHktYWRtaW4uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FzcC1saWIvc3JjL2xpYi9zZXJ2aWNlcy9zZWN1cml0eS1hZG1pbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxVQUFVLEVBQVEsTUFBTSxlQUFlLENBQUM7QUFDakQsT0FBTyxFQUFjLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQzs7O0FBRzNDLE1BQU0sVUFBVSxHQUFHO0lBQ2xCLFFBQVEsRUFBRSxZQUFZO0lBQ3RCLElBQUksRUFBRSxRQUFRO0NBQ2QsQ0FBQTtBQUtELE1BQU0sT0FBTyxvQkFBb0I7SUF1Q2hDLElBQUksVUFBVSxLQUFLLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQSxDQUFDLENBQUM7SUFDdkQsSUFBSSxjQUFjLEtBQUssT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxDQUFBLENBQUMsQ0FBQztJQUMvRCxJQUFJLFVBQVUsS0FBSyxPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUEsQ0FBQyxDQUFDO0lBRXZELElBQUksUUFBUTtRQUNYLE9BQU8sQ0FBQztZQUNQLE1BQU0sRUFBRSxJQUFJLENBQUMsbUJBQW1CO1lBQ2hDLFVBQVUsRUFBRSxJQUFJLENBQUMsdUJBQXVCO1lBQ3hDLE1BQU0sRUFBRSxJQUFJLENBQUMsbUJBQW1CO1NBQ2hDLENBQUMsQ0FBQTtJQUNILENBQUM7SUFFRCxZQUFvQixJQUFnQjtRQUFoQixTQUFJLEdBQUosSUFBSSxDQUFZO1FBakRwQyx3QkFBbUIsR0FBRyxJQUFJLE9BQU8sRUFBTyxDQUFDO1FBQ3pDLDRCQUF1QixHQUFHLElBQUksT0FBTyxFQUFPLENBQUM7UUFDN0Msd0JBQW1CLEdBQUcsSUFBSSxPQUFPLEVBQU8sQ0FBQztRQUN6QyxrQkFBYSxHQUFHLElBQUksT0FBTyxFQUFVLENBQUM7UUFDdEMsNEJBQXVCLEdBQVcsRUFBRSxDQUFDO1FBQ3JDLDJCQUFzQixHQUFXLEVBQUUsQ0FBQztRQUNwQyx1QkFBa0IsR0FBVyxFQUFFLENBQUM7UUFDaEMsNEJBQXVCLEdBQVcsRUFBRSxDQUFDO1FBQ3JDLHNCQUFpQixHQUFXLEVBQUUsQ0FBQztRQUMvQiw0QkFBdUIsR0FBVyxFQUFFLENBQUM7UUFDckMsd0JBQW1CLEdBQVcsRUFBRSxDQUFDO1FBQ2pDLHdCQUFtQixHQUFXLEVBQUUsQ0FBQztRQUNqQywyQkFBc0IsR0FBVyxFQUFFLENBQUM7UUFDcEMsNkJBQXdCLEdBQVcsRUFBRSxDQUFDO1FBRXRDLDJCQUFzQixHQUFXLEVBQUUsQ0FBQztRQUNwQyw0QkFBdUIsR0FBVyxFQUFFLENBQUM7UUFDckMsK0JBQTBCLEdBQVcsRUFBRSxDQUFDO1FBQ3hDLHdCQUFtQixHQUFXLEVBQUUsQ0FBQztRQUNqQyw0QkFBdUIsR0FBVyxFQUFFLENBQUM7UUFHckMsc0JBQWlCLEdBQVcsRUFBRSxDQUFDO1FBQy9CLDRCQUF1QixHQUFXLEVBQUUsQ0FBQztRQUNyQyxnQ0FBMkIsR0FBVyxFQUFFLENBQUM7UUFHekMsVUFBSyxHQUFXLFNBQVMsQ0FBQztRQUUxQixhQUFRLEdBQUcsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxDQUFBO1FBRXRFLG1CQUFjLEdBQUc7WUFDaEIsTUFBTSxFQUFFLElBQUksT0FBTyxFQUFXO1lBQzlCLFVBQVUsRUFBRSxJQUFJLE9BQU8sRUFBVztZQUNsQyxNQUFNLEVBQUUsSUFBSSxPQUFPLEVBQVc7U0FDOUIsQ0FBQTtRQWVBLElBQUksQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDO1lBQzVCLElBQUksRUFBRSxDQUFDLFVBQWUsRUFBRSxFQUFFLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxVQUEwQyxDQUFDLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFBLENBQUMsQ0FBQztTQUMxRyxDQUFDLENBQUE7UUFDRixLQUFLLElBQUksT0FBTyxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFO1lBQ2pELE9BQU8sQ0FBQyxTQUFTLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxFQUFFLENBQUMsQ0FBQztTQUNoRTtJQUNGLENBQUM7SUFFRCxRQUFRO1FBQ1AsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUM5QyxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsTUFBVztRQUMzQixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLHdCQUF3QixhQUFhLE1BQU0sQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFBO0lBQy9FLENBQUM7SUFFRCxRQUFRLENBQUMsS0FBYTtRQUNyQixJQUFJLENBQUMsS0FBSyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7SUFDakQsQ0FBQztJQUVELFVBQVUsQ0FBQyxNQUFjLEVBQUUsVUFBa0I7UUFDNUMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxrQkFBa0IsV0FBVyxNQUFNLGVBQWUsVUFBVSxFQUFFLENBQUMsQ0FBQztJQUM5RixDQUFDO0lBRUQsMkJBQTJCLENBQUMsUUFBZ0I7UUFDM0MsSUFBSSxDQUFDLHdCQUF3QixHQUFHLFFBQVEsQ0FBQztJQUMxQyxDQUFDO0lBRUQsa0JBQWtCLENBQUMsTUFBYztRQUNoQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLHVCQUF1QixZQUFZLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDM0UsQ0FBQztJQUVELG9CQUFvQixDQUFDLFFBQWdCO1FBQ3BDLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxRQUFRLENBQUM7SUFDbkMsQ0FBQztJQUVELDBCQUEwQixDQUFDLFNBQXFCO1FBQy9DLElBQUksQ0FBQyx1QkFBdUIsR0FBRyxTQUFTLENBQUM7SUFDMUMsQ0FBQztJQUVELHNCQUFzQixDQUFDLFFBQWdCO1FBQ3RDLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxRQUFRLENBQUM7SUFDckMsQ0FBQztJQUNELDBCQUEwQixDQUFDLFFBQWdCO1FBQzFDLElBQUksQ0FBQyx1QkFBdUIsR0FBRyxRQUFRLENBQUM7SUFDekMsQ0FBQztJQUVELHlCQUF5QixDQUFDLFFBQWdCO1FBQ3pDLElBQUksQ0FBQyxzQkFBc0IsR0FBRyxRQUFRLENBQUM7SUFDeEMsQ0FBQztJQUVELHNCQUFzQixDQUFDLFFBQWdCLElBQUksSUFBSSxDQUFDLG1CQUFtQixHQUFHLFFBQVEsQ0FBQSxDQUFDLENBQUM7SUFDaEYsMEJBQTBCLENBQUMsUUFBZ0IsSUFBSSxJQUFJLENBQUMsdUJBQXVCLEdBQUcsUUFBUSxDQUFBLENBQUMsQ0FBQztJQUN4Riw4QkFBOEIsQ0FBQyxRQUFnQjtRQUM5QyxJQUFJLENBQUMsMkJBQTJCLEdBQUcsUUFBUSxDQUFDO0lBQzdDLENBQUM7SUFFRCxjQUFjLENBQUMsTUFBVztRQUN6QixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxFQUFDLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxNQUFNLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFBLENBQUMsQ0FBQyxJQUFJLEVBQUMsQ0FBQyxDQUFDO0lBQ3ZHLENBQUM7SUFFRCxRQUFRLENBQUMsT0FBZSxDQUFDLEVBQUUsV0FBbUIsRUFBRTtRQUMvQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLCtCQUErQixJQUFJLGFBQWEsUUFBUSxFQUFFLENBQUMsQ0FBQztJQUNsRixDQUFDO0lBRUQsZ0JBQWdCLENBQUMsRUFBVSxFQUFFLElBQXlCO1FBQ3JELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLEtBQUssTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyx1QkFBdUIsSUFBSSxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNoSSxDQUFDO0lBRUQsV0FBVyxDQUFDLEVBQVUsRUFBRSxLQUFZLEVBQUUsSUFBeUI7UUFDOUQsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEtBQUssTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQywwQkFBMEIsRUFBRTtZQUN0RyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLEVBQUU7WUFDdEIsS0FBSztTQUNMLENBQUMsQ0FBQztJQUNKLENBQUM7SUFFRCxlQUFlLENBQUMsTUFBYyxFQUFFLEtBQVk7UUFDM0MsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsdUJBQXVCLEVBQUU7WUFDbkQsTUFBTTtZQUNOLEtBQUs7U0FDTCxDQUFDLENBQUE7SUFDSCxDQUFDO0lBRUQsbUJBQW1CLENBQUMsTUFBYyxFQUFFLFNBQWdCO1FBQ25ELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLDJCQUEyQixFQUFFO1lBQ3ZELE1BQU07WUFDTixTQUFTO1NBQ1QsQ0FBQyxDQUFBO0lBQ0gsQ0FBQztJQUVELHNCQUFzQixDQUFDLFFBQWdCO1FBQ3RDLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxRQUFRLENBQUM7SUFDckMsQ0FBQztJQUVELHlCQUF5QixDQUFDLFFBQWdCO1FBQ3pDLElBQUksQ0FBQyxzQkFBc0IsR0FBRyxRQUFRLENBQUM7SUFDeEMsQ0FBQztJQUVELDBCQUEwQixDQUFDLFFBQWdCO1FBQzFDLElBQUksQ0FBQyx1QkFBdUIsR0FBRyxRQUFRLENBQUM7SUFDekMsQ0FBQztJQUVELDZCQUE2QixDQUFDLFFBQWdCO1FBQzdDLElBQUksQ0FBQywwQkFBMEIsR0FBRyxRQUFRLENBQUM7SUFDNUMsQ0FBQztJQUVELDBCQUEwQixDQUFDLFFBQWdCO1FBQzFDLElBQUksQ0FBQyx1QkFBdUIsR0FBRyxRQUFRLENBQUM7SUFDekMsQ0FBQztJQUVELDBCQUEwQixDQUFDLFFBQWdCO1FBQzFDLElBQUksQ0FBQyx1QkFBdUIsR0FBRyxRQUFRLENBQUM7SUFDekMsQ0FBQztJQUVELG9CQUFvQixDQUFDLFFBQWdCO1FBQ3BDLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxRQUFRLENBQUM7SUFDbkMsQ0FBQztJQUVELHlCQUF5QixDQUFDLFFBQWdCO1FBQ3pDLElBQUksQ0FBQyxzQkFBc0IsR0FBRyxRQUFRLENBQUM7SUFDeEMsQ0FBQztJQUVELDBCQUEwQixDQUFDLFFBQWdCO1FBQzFDLElBQUksQ0FBQyx1QkFBdUIsR0FBRyxRQUFRLENBQUM7SUFDekMsQ0FBQztJQUVELG1DQUFtQyxDQUFDLFFBQWdCO1FBQ25ELElBQUksQ0FBQyxrQkFBa0IsR0FBRyxRQUFRLENBQUM7SUFDcEMsQ0FBQztJQUVELFVBQVUsQ0FBQyxJQUFTO1FBQ25CLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUVELGNBQWMsQ0FBQyxRQUFhO1FBQzNCLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVELFVBQVUsQ0FBQyxJQUFTO1FBRW5CLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUVELFFBQVEsQ0FBQyxRQUFnQixFQUFFLFdBQWdCO1FBQzFDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFRCxjQUFjLENBQUMsTUFBYyxFQUFFLFNBQWdCO1FBQzlDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLHNCQUFzQixFQUFFLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUM7SUFDM0UsQ0FBQztJQUVELGVBQWUsQ0FBQyxXQUFrQjtRQUNqQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyx1QkFBdUIsRUFBRSxXQUFXLENBQUMsQ0FBQztJQUNsRSxDQUFDO0lBRUQsV0FBVztRQUNWLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLENBQUM7SUFDaEQsQ0FBQztJQUVELFlBQVksQ0FBQyxVQUF3QztRQUNwRCxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNyQyxDQUFDOytHQXJOVyxvQkFBb0I7bUhBQXBCLG9CQUFvQixjQUZwQixNQUFNOzs0RkFFTixvQkFBb0I7a0JBSGhDLFVBQVU7bUJBQUM7b0JBQ1gsVUFBVSxFQUFFLE1BQU07aUJBQ2xCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgSW5qZWN0YWJsZSwgVHlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IFNuYWNrYmFyU2VydmljZSB9IGZyb20gJy4vc25hY2tiYXIuc2VydmljZSc7XHJcblxyXG5jb25zdCBwYXJhbU5hbWVzID0ge1xyXG5cdEN1c3RvbWVyOiBcImN1c3RvbWVySWRcIixcclxuXHRVc2VyOiBcInVzZXJJZFwiXHJcbn1cclxuXHJcbkBJbmplY3RhYmxlKHtcclxuXHRwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIFNlY3VyaXR5QWRtaW5TZXJ2aWNlIHtcclxuXHJcblx0c2VsZWN0ZWRVc2VyU3ViamVjdCA9IG5ldyBTdWJqZWN0PGFueT4oKTtcclxuXHRzZWxlY3RlZEN1c3RvbWVyU3ViamVjdCA9IG5ldyBTdWJqZWN0PGFueT4oKTtcclxuXHRzZWxlY3RlZFJvbGVTdWJqZWN0ID0gbmV3IFN1YmplY3Q8YW55PigpO1xyXG5cdHJlbG9hZFN1YmplY3QgPSBuZXcgU3ViamVjdDxzdHJpbmc+KCk7XHJcblx0dXNlcnNCeUN1c3RvbWVyRW5kcG9pbnQ6IHN0cmluZyA9ICcnO1xyXG5cdGFzc2lnblJlc291cmNlRW5kcG9pbnQ6IHN0cmluZyA9ICcnO1xyXG5cdGdldEFjdGlvbnNFbmRwb2ludDogc3RyaW5nID0gJyc7XHJcblx0c2F2ZVBlcm1pc3Npb25zRW5kcG9pbnQ6IHN0cmluZyA9ICcnO1xyXG5cdGxpc3RSb2xlc0VuZHBvaW50OiBzdHJpbmcgPSAnJztcclxuXHRyZXNvdXJjZXNCeVJvbGVFbmRwb2ludDogc3RyaW5nID0gJyc7XHJcblx0cm9sZXNCeVVzZXJFbmRwb2ludDogc3RyaW5nID0gJyc7XHJcblx0Z2V0TWVudVRyZWVFbmRwb2ludDogc3RyaW5nID0gJyc7XHJcblx0c2F2ZU1lbnVPcHRpb25FbmRwb2ludDogc3RyaW5nID0gJyc7XHJcblx0ZGVsZXRlTWVudU9wdGlvbkVuZHBvaW50OiBzdHJpbmcgPSAnJztcclxuXHJcblx0YXNzaWduVXNlclJvbGVFbmRwb2ludDogc3RyaW5nID0gJyc7XHJcblx0cm9sZXNCeUN1c3RvbWVyRW5kcG9pbnQ6IHN0cmluZyA9ICcnO1xyXG5cdGFzc2lnbkN1c3RvbWVyUm9sZUVuZHBvaW50OiBzdHJpbmcgPSAnJztcclxuXHR1c2Vyc0J5Um9sZUVuZHBvaW50OiBzdHJpbmcgPSAnJztcclxuXHRjdXN0b21lcnNCeVJvbGVFbmRwb2ludDogc3RyaW5nID0gJyc7XHJcblx0bWVudU9wdGlvbkZvcm1Db21wb25lbnQ/OiBUeXBlPGFueT47XHJcblxyXG5cdGxpc3RVc2Vyc0VuZHBvaW50OiBzdHJpbmcgPSAnJztcclxuXHRhc3NpZ25Sb2xlVXNlcnNFbmRwb2ludDogc3RyaW5nID0gJyc7XHJcblx0YXNzaWduUm9sZUN1c3RvbWVyc0VuZHBvaW50OiBzdHJpbmcgPSAnJztcclxuXHJcblx0c2VsZWN0ZWRJdGVtOiBhbnk7XHJcblx0dGhlbWU6IHN0cmluZyA9ICdkZWZhdWx0JztcclxuXHJcblx0bXNnTGFiZWwgPSB7IFwiVXNlclwiOiBcIlVzdWFyaW9cIiwgXCJDdXN0b21lclwiOiBcIkNsaWVudGVcIiwgXCJSb2xlXCI6IFwiUm9sXCIgfVxyXG5cclxuXHRyZWxvYWRCeUVudGl0eSA9IHtcclxuXHRcdFwiVXNlclwiOiBuZXcgU3ViamVjdDxib29sZWFuPigpLFxyXG5cdFx0XCJDdXN0b21lclwiOiBuZXcgU3ViamVjdDxib29sZWFuPigpLFxyXG5cdFx0XCJSb2xlXCI6IG5ldyBTdWJqZWN0PGJvb2xlYW4+KClcclxuXHR9XHJcblxyXG5cdGdldCB1c2VyUmVsb2FkKCkgeyByZXR1cm4gdGhpcy5yZWxvYWRCeUVudGl0eVsnVXNlciddIH1cclxuXHRnZXQgY3VzdG9tZXJSZWxvYWQoKSB7IHJldHVybiB0aGlzLnJlbG9hZEJ5RW50aXR5WydDdXN0b21lciddIH1cclxuXHRnZXQgcm9sZVJlbG9hZCgpIHsgcmV0dXJuIHRoaXMucmVsb2FkQnlFbnRpdHlbJ1JvbGUnXSB9XHJcblxyXG5cdGdldCBzdWJqZWN0cygpIHtcclxuXHRcdHJldHVybiAoe1xyXG5cdFx0XHRcIlVzZXJcIjogdGhpcy5zZWxlY3RlZFVzZXJTdWJqZWN0LFxyXG5cdFx0XHRcIkN1c3RvbWVyXCI6IHRoaXMuc2VsZWN0ZWRDdXN0b21lclN1YmplY3QsXHJcblx0XHRcdFwiUm9sZVwiOiB0aGlzLnNlbGVjdGVkUm9sZVN1YmplY3RcclxuXHRcdH0pXHJcblx0fVxyXG5cclxuXHRjb25zdHJ1Y3Rvcihwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQpIHtcclxuXHRcdHRoaXMucmVsb2FkU3ViamVjdC5zdWJzY3JpYmUoe1xyXG5cdFx0XHRuZXh0OiAoZW50aXR5TmFtZTogYW55KSA9PiB7IHRoaXMucmVsb2FkQnlFbnRpdHlbZW50aXR5TmFtZSBhcyBcIlVzZXJcIiB8IFwiQ3VzdG9tZXJcIiB8IFwiUm9sZVwiXT8ubmV4dCh0cnVlKSB9XHJcblx0XHR9KVxyXG5cdFx0Zm9yIChsZXQgc3ViamVjdCBvZiBPYmplY3QudmFsdWVzKHRoaXMuc3ViamVjdHMpKSB7XHJcblx0XHRcdHN1YmplY3Quc3Vic2NyaWJlKHsgbmV4dDogKGl0ZW0pID0+IHRoaXMuc2VsZWN0ZWRJdGVtID0gaXRlbSB9KTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdGdldFJvbGVzKCkge1xyXG5cdFx0cmV0dXJuIHRoaXMuaHR0cC5nZXQodGhpcy5saXN0Um9sZXNFbmRwb2ludCk7XHJcblx0fVxyXG5cclxuXHRkZWxldGVNZW51T3B0aW9uKG9wdGlvbjogYW55KXtcclxuXHRcdHJldHVybiB0aGlzLmh0dHAuZ2V0KGAke3RoaXMuZGVsZXRlTWVudU9wdGlvbkVuZHBvaW50fT9vcHRpb25JZD0ke29wdGlvbi5pZH1gKVxyXG5cdH1cclxuXHJcblx0c2V0VGhlbWUodGhlbWU6IHN0cmluZyl7XHJcblx0XHR0aGlzLnRoZW1lID0gQm9vbGVhbih0aGVtZSkgPyB0aGVtZSA6ICdkZWZhdWx0JztcclxuXHR9XHJcblxyXG5cdGdldEFjdGlvbnMocm9sZUlkOiBudW1iZXIsIHJlc291cmNlSWQ6IG51bWJlcikge1xyXG5cdFx0cmV0dXJuIHRoaXMuaHR0cC5nZXQoYCR7dGhpcy5nZXRBY3Rpb25zRW5kcG9pbnR9P3JvbGVJZD0ke3JvbGVJZH0mcmVzb3VyY2VJZD0ke3Jlc291cmNlSWR9YCk7XHJcblx0fVxyXG5cclxuXHRzZXREZWxldGVNZW51T3B0aW9uRW5kcG9pbnQoZW5kcG9pbnQ6IHN0cmluZyl7XHJcblx0XHR0aGlzLmRlbGV0ZU1lbnVPcHRpb25FbmRwb2ludCA9IGVuZHBvaW50O1xyXG5cdH1cclxuXHJcblx0Z2V0UmVzb3VyY2VzQnlSb2xlKHJvbGVJZDogbnVtYmVyKSB7XHJcblx0XHRyZXR1cm4gdGhpcy5odHRwLmdldChgJHt0aGlzLnJlc291cmNlc0J5Um9sZUVuZHBvaW50fT9yb2xlZElkPSR7cm9sZUlkfWApO1xyXG5cdH1cclxuXHJcblx0c2V0TGlzdFVzZXJzRW5kcG9pbnQoZW5kcG9pbnQ6IHN0cmluZykge1xyXG5cdFx0dGhpcy5saXN0VXNlcnNFbmRwb2ludCA9IGVuZHBvaW50O1xyXG5cdH1cclxuXHJcblx0c2V0TWVudU9wdGlvbkZvcm1Db21wb25lbnQoY29tcG9uZW50PzogVHlwZTxhbnk+KXtcclxuXHRcdHRoaXMubWVudU9wdGlvbkZvcm1Db21wb25lbnQgPSBjb21wb25lbnQ7XHJcblx0fVxyXG5cclxuXHRzZXRVc2Vyc0J5Um9sZUVuZHBvaW50KGVuZHBvaW50OiBzdHJpbmcpIHtcclxuXHRcdHRoaXMudXNlcnNCeVJvbGVFbmRwb2ludCA9IGVuZHBvaW50O1xyXG5cdH1cclxuXHRzZXRDdXN0b21lcnNCeVJvbGVFbmRwb2ludChlbmRwb2ludDogc3RyaW5nKSB7XHJcblx0XHR0aGlzLmN1c3RvbWVyc0J5Um9sZUVuZHBvaW50ID0gZW5kcG9pbnQ7XHJcblx0fVxyXG5cclxuXHRzZXRTYXZlTWVudU9wdGlvbkVuZHBvaW50KGVuZHBvaW50OiBzdHJpbmcpIHtcclxuXHRcdHRoaXMuc2F2ZU1lbnVPcHRpb25FbmRwb2ludCA9IGVuZHBvaW50O1xyXG5cdH1cclxuXHJcblx0c2V0R2V0TWVudVRyZWVFbmRwb2ludChlbmRwb2ludDogc3RyaW5nKSB7IHRoaXMuZ2V0TWVudVRyZWVFbmRwb2ludCA9IGVuZHBvaW50IH1cclxuXHRzZXRBc3NpZ25Sb2xlVXNlcnNFbmRwb2ludChlbmRwb2ludDogc3RyaW5nKSB7IHRoaXMuYXNzaWduUm9sZVVzZXJzRW5kcG9pbnQgPSBlbmRwb2ludCB9XHJcblx0c2V0QXNzaWduUm9sZUN1c3RvbWVyc0VuZHBvaW50KGVuZHBvaW50OiBzdHJpbmcpIHtcclxuXHRcdHRoaXMuYXNzaWduUm9sZUN1c3RvbWVyc0VuZHBvaW50ID0gZW5kcG9pbnQ7XHJcblx0fVxyXG5cclxuXHRzYXZlTWVudU9wdGlvbihvcHRpb246IGFueSkge1xyXG5cdFx0cmV0dXJuIHRoaXMuaHR0cC5wb3N0KHRoaXMuc2F2ZU1lbnVPcHRpb25FbmRwb2ludCwgey4uLm9wdGlvbiwgaWQ6IG9wdGlvbi5pZCA+IC0xID8gb3B0aW9uLmlkOiBudWxsfSk7XHJcblx0fVxyXG5cclxuXHRnZXRVc2VycyhwYWdlOiBudW1iZXIgPSAxLCBwYWdlU2l6ZTogbnVtYmVyID0gMTApIHtcclxuXHRcdHJldHVybiB0aGlzLmh0dHAuZ2V0KGB0aGlzLmxpc3RVc2Vyc0VuZHBvaW50P3BhZ2U9JHtwYWdlfSZwYWdlU2l6ZT0ke3BhZ2VTaXplfWApO1xyXG5cdH1cclxuXHJcblx0Z2V0QXNzaWduZWRSb2xlcyhpZDogbnVtYmVyLCB0eXBlOiBcIlVzZXJcIiB8IFwiQ3VzdG9tZXJcIikge1xyXG5cdFx0cmV0dXJuIHRoaXMuaHR0cC5nZXQoYCR7dHlwZSA9PT0gXCJVc2VyXCIgPyB0aGlzLnJvbGVzQnlVc2VyRW5kcG9pbnQgOiB0aGlzLnJvbGVzQnlDdXN0b21lckVuZHBvaW50fT8ke3BhcmFtTmFtZXNbdHlwZV19PSR7aWR9YCk7XHJcblx0fVxyXG5cclxuXHRhc3NpZ25Sb2xlcyhpZDogbnVtYmVyLCByb2xlczogYW55W10sIHR5cGU6IFwiVXNlclwiIHwgXCJDdXN0b21lclwiKSB7XHJcblx0XHRyZXR1cm4gdGhpcy5odHRwLnBvc3QodHlwZSA9PT0gXCJVc2VyXCIgPyB0aGlzLmFzc2lnblVzZXJSb2xlRW5kcG9pbnQgOiB0aGlzLmFzc2lnbkN1c3RvbWVyUm9sZUVuZHBvaW50LCB7XHJcblx0XHRcdFtwYXJhbU5hbWVzW3R5cGVdXTogaWQsXHJcblx0XHRcdHJvbGVzXHJcblx0XHR9KTtcclxuXHR9XHJcblxyXG5cdGFzc2lnblJvbGVVc2Vycyhyb2xlSWQ6IG51bWJlciwgdXNlcnM6IGFueVtdKSB7XHJcblx0XHRyZXR1cm4gdGhpcy5odHRwLnBvc3QodGhpcy5hc3NpZ25Sb2xlVXNlcnNFbmRwb2ludCwge1xyXG5cdFx0XHRyb2xlSWQsXHJcblx0XHRcdHVzZXJzXHJcblx0XHR9KVxyXG5cdH1cclxuXHJcblx0YXNzaWduUm9sZUN1c3RvbWVycyhyb2xlSWQ6IG51bWJlciwgY3VzdG9tZXJzOiBhbnlbXSkge1xyXG5cdFx0cmV0dXJuIHRoaXMuaHR0cC5wb3N0KHRoaXMuYXNzaWduUm9sZUN1c3RvbWVyc0VuZHBvaW50LCB7XHJcblx0XHRcdHJvbGVJZCxcclxuXHRcdFx0Y3VzdG9tZXJzXHJcblx0XHR9KVxyXG5cdH1cclxuXHJcblx0c2V0Um9sZXNCeVVzZXJFbmRwb2ludChlbmRwb2ludDogc3RyaW5nKSB7XHJcblx0XHR0aGlzLnJvbGVzQnlVc2VyRW5kcG9pbnQgPSBlbmRwb2ludDtcclxuXHR9XHJcblxyXG5cdHNldEFzc2lnblVzZXJSb2xlRW5kcG9pbnQoZW5kcG9pbnQ6IHN0cmluZykge1xyXG5cdFx0dGhpcy5hc3NpZ25Vc2VyUm9sZUVuZHBvaW50ID0gZW5kcG9pbnQ7XHJcblx0fVxyXG5cclxuXHRzZXRSb2xlc0J5Q3VzdG9tZXJFbmRwb2ludChlbmRwb2ludDogc3RyaW5nKSB7XHJcblx0XHR0aGlzLnJvbGVzQnlDdXN0b21lckVuZHBvaW50ID0gZW5kcG9pbnQ7XHJcblx0fVxyXG5cclxuXHRzZXRBc3NpZ25DdXN0b21lclJvbGVFbmRwb2ludChlbmRwb2ludDogc3RyaW5nKSB7XHJcblx0XHR0aGlzLmFzc2lnbkN1c3RvbWVyUm9sZUVuZHBvaW50ID0gZW5kcG9pbnQ7XHJcblx0fVxyXG5cclxuXHRzZXRTYXZlUGVybWlzc2lvbnNFbmRwb2ludChlbmRwb2ludDogc3RyaW5nKSB7XHJcblx0XHR0aGlzLnNhdmVQZXJtaXNzaW9uc0VuZHBvaW50ID0gZW5kcG9pbnQ7XHJcblx0fVxyXG5cclxuXHRzZXRVc2Vyc0J5Q3VzdG9tZXJFbmRwb2ludChlbmRwb2ludDogc3RyaW5nKSB7XHJcblx0XHR0aGlzLnVzZXJzQnlDdXN0b21lckVuZHBvaW50ID0gZW5kcG9pbnQ7XHJcblx0fVxyXG5cclxuXHRzZXRMaXN0Um9sZXNFbmRwb2ludChlbmRwb2ludDogc3RyaW5nKSB7XHJcblx0XHR0aGlzLmxpc3RSb2xlc0VuZHBvaW50ID0gZW5kcG9pbnQ7XHJcblx0fVxyXG5cclxuXHRzZXRBc3NpZ25SZXNvdXJjZUVuZHBvaW50KGVuZHBvaW50OiBzdHJpbmcpIHtcclxuXHRcdHRoaXMuYXNzaWduUmVzb3VyY2VFbmRwb2ludCA9IGVuZHBvaW50O1xyXG5cdH1cclxuXHJcblx0c2V0UmVzb3VyY2VzQnlSb2xlRW5kcG9pbnQoZW5kcG9pbnQ6IHN0cmluZykge1xyXG5cdFx0dGhpcy5yZXNvdXJjZXNCeVJvbGVFbmRwb2ludCA9IGVuZHBvaW50O1xyXG5cdH1cclxuXHJcblx0c2V0QWN0aW9uc0J5Um9sZUFuZFJlc291cmNlRW5kcG9pbnQoZW5kcG9pbnQ6IHN0cmluZykge1xyXG5cdFx0dGhpcy5nZXRBY3Rpb25zRW5kcG9pbnQgPSBlbmRwb2ludDtcclxuXHR9XHJcblxyXG5cdHNlbGVjdFVzZXIodXNlcjogYW55KSB7XHJcblx0XHR0aGlzLnNlbGVjdGVkVXNlclN1YmplY3QubmV4dCh1c2VyKTtcclxuXHR9XHJcblxyXG5cdHNlbGVjdEN1c3RvbWVyKGN1c3RvbWVyOiBhbnkpIHtcclxuXHRcdHRoaXMuc2VsZWN0ZWRDdXN0b21lclN1YmplY3QubmV4dChjdXN0b21lcik7XHJcblx0fVxyXG5cclxuXHRzZWxlY3RSb2xlKHJvbGU6IGFueSkge1xyXG5cclxuXHRcdHRoaXMuc2VsZWN0ZWRSb2xlU3ViamVjdC5uZXh0KHJvbGUpO1xyXG5cdH1cclxuXHJcblx0c2F2ZUl0ZW0oZW5kcG9pbnQ6IHN0cmluZywgdXBkYXRlZEl0ZW06IGFueSkge1xyXG5cdFx0cmV0dXJuIHRoaXMuaHR0cC5wb3N0KGVuZHBvaW50LCB1cGRhdGVkSXRlbSk7XHJcblx0fVxyXG5cclxuXHRhc3NpZ25SZXNvdXJjZShyb2xlSWQ6IG51bWJlciwgcmVzb3VyY2VzOiBhbnlbXSkge1xyXG5cdFx0cmV0dXJuIHRoaXMuaHR0cC5wb3N0KHRoaXMuYXNzaWduUmVzb3VyY2VFbmRwb2ludCwgeyByb2xlSWQsIHJlc291cmNlcyB9KTtcclxuXHR9XHJcblxyXG5cdHNhdmVQZXJtaXNzaW9ucyhwZXJtaXNzaW9uczogYW55W10pIHtcclxuXHRcdHJldHVybiB0aGlzLmh0dHAucG9zdCh0aGlzLnNhdmVQZXJtaXNzaW9uc0VuZHBvaW50LCBwZXJtaXNzaW9ucyk7XHJcblx0fVxyXG5cclxuXHRnZXRNZW51VHJlZSgpe1xyXG5cdFx0cmV0dXJuIHRoaXMuaHR0cC5nZXQodGhpcy5nZXRNZW51VHJlZUVuZHBvaW50KTtcclxuXHR9XHJcblxyXG5cdHJlbG9hZEVudGl0eShlbnRpdHlOYW1lOiBcIlVzZXJcIiB8IFwiQ3VzdG9tZXJcIiB8IFwiUm9sZVwiKSB7XHJcblx0XHR0aGlzLnJlbG9hZFN1YmplY3QubmV4dChlbnRpdHlOYW1lKTtcclxuXHR9XHJcbn1cclxuIl19
|
|
196
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VjdXJpdHktYWRtaW4uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FzcC1saWIvc3JjL2xpYi9zZXJ2aWNlcy9zZWN1cml0eS1hZG1pbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxVQUFVLEVBQVEsTUFBTSxlQUFlLENBQUM7QUFDakQsT0FBTyxFQUFjLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQzs7O0FBSTNDLE1BQU0sVUFBVSxHQUFHO0lBQ2xCLFFBQVEsRUFBRSxZQUFZO0lBQ3RCLElBQUksRUFBRSxRQUFRO0NBQ2QsQ0FBQTtBQUtELE1BQU0sT0FBTyxvQkFBb0I7SUF5Q2hDLElBQUksVUFBVSxLQUFLLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQSxDQUFDLENBQUM7SUFDdkQsSUFBSSxjQUFjLEtBQUssT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxDQUFBLENBQUMsQ0FBQztJQUMvRCxJQUFJLFVBQVUsS0FBSyxPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUEsQ0FBQyxDQUFDO0lBRXZELElBQUksUUFBUTtRQUNYLE9BQU8sQ0FBQztZQUNQLE1BQU0sRUFBRSxJQUFJLENBQUMsbUJBQW1CO1lBQ2hDLFVBQVUsRUFBRSxJQUFJLENBQUMsdUJBQXVCO1lBQ3hDLE1BQU0sRUFBRSxJQUFJLENBQUMsbUJBQW1CO1NBQ2hDLENBQUMsQ0FBQTtJQUNILENBQUM7SUFFRCxZQUFvQixJQUFnQjtRQUFoQixTQUFJLEdBQUosSUFBSSxDQUFZO1FBbkRwQyx3QkFBbUIsR0FBRyxJQUFJLE9BQU8sRUFBTyxDQUFDO1FBQ3pDLDRCQUF1QixHQUFHLElBQUksT0FBTyxFQUFPLENBQUM7UUFDN0Msd0JBQW1CLEdBQUcsSUFBSSxPQUFPLEVBQU8sQ0FBQztRQUN6QyxrQkFBYSxHQUFHLElB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Q0FBQztJQUVELGFBQWE7UUFDWixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsbUJBQW1CLElBQUksRUFBRSxDQUFDLENBQUM7SUFDaEUsQ0FBQztJQUVELFVBQVUsQ0FBQyxNQUFXO1FBQ3JCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxvQkFBb0IsSUFBSSxFQUFFLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDMUUsQ0FBQztJQUVELFlBQVksQ0FBQyxVQUF3QztRQUNwRCxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNyQyxDQUFDOytHQW5PVyxvQkFBb0I7bUhBQXBCLG9CQUFvQixjQUZwQixNQUFNOzs0RkFFTixvQkFBb0I7a0JBSGhDLFVBQVU7bUJBQUM7b0JBQ1gsVUFBVSxFQUFFLE1BQU07aUJBQ2xCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgSW5qZWN0YWJsZSwgVHlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IFNuYWNrYmFyU2VydmljZSB9IGZyb20gJy4vc25hY2tiYXIuc2VydmljZSc7XHJcbmltcG9ydCB7IFNlY3VyaXR5RW5kcG9pbnRzIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9pbnRlcmZhY2VzJztcclxuXHJcbmNvbnN0IHBhcmFtTmFtZXMgPSB7XHJcblx0Q3VzdG9tZXI6IFwiY3VzdG9tZXJJZFwiLFxyXG5cdFVzZXI6IFwidXNlcklkXCJcclxufVxyXG5cclxuQEluamVjdGFibGUoe1xyXG5cdHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgU2VjdXJpdHlBZG1pblNlcnZpY2Uge1xyXG5cclxuXHRzZWxlY3RlZFVzZXJTdWJqZWN0ID0gbmV3IFN1YmplY3Q8YW55PigpO1xyXG5cdHNlbGVjdGVkQ3VzdG9tZXJTdWJqZWN0ID0gbmV3IFN1YmplY3Q8YW55PigpO1xyXG5cdHNlbGVjdGVkUm9sZVN1YmplY3QgPSBuZXcgU3ViamVjdDxhbnk+KCk7XHJcblx0cmVsb2FkU3ViamVjdCA9IG5ldyBTdWJqZWN0PHN0cmluZz4oKTtcclxuXHR1c2Vyc0J5Q3VzdG9tZXJFbmRwb2ludDogc3RyaW5nID0gJyc7XHJcblx0YXNzaWduUmVzb3VyY2VFbmRwb2ludDogc3RyaW5nID0gJyc7XHJcblx0Z2V0QWN0aW9uc0VuZHBvaW50OiBzdHJpbmcgPSAnJztcclxuXHRzYXZlUGVybWlzc2lvbnNFbmRwb2ludDogc3RyaW5nID0gJyc7XHJcblx0bGlzdFJvbGVzRW5kcG9pbnQ6IHN0cmluZyA9ICcnO1xyXG5cdHJlc291cmNlc0J5Um9sZUVuZHBvaW50OiBzdHJpbmcgPSAnJztcclxuXHRyb2xlc0J5VXNlckVuZHBvaW50OiBzdHJpbmcgPSAnJztcclxuXHRnZXRNZW51VHJlZUVuZHBvaW50OiBzdHJpbmcgPSAnJztcclxuXHRzYXZlTWVudU9wdGlvbkVuZHBvaW50OiBzdHJpbmcgPSAnJztcclxuXHRkZWxldGVNZW51T3B0aW9uRW5kcG9pbnQ6IHN0cmluZyA9ICcnO1xyXG5cclxuXHRhc3NpZ25Vc2VyUm9sZUVuZHBvaW50OiBzdHJpbmcgPSAnJztcclxuXHRyb2xlc0J5Q3VzdG9tZXJFbmRwb2ludDogc3RyaW5nID0gJyc7XHJcblx0YXNzaWduQ3VzdG9tZXJSb2xlRW5kcG9pbnQ6IHN0cmluZyA9ICcnO1xyXG5cdHVzZXJzQnlSb2xlRW5kcG9pbnQ6IHN0cmluZyA9ICcnO1xyXG5cdGN1c3RvbWVyc0J5Um9sZUVuZHBvaW50OiBzdHJpbmcgPSAnJztcclxuXHRtZW51T3B0aW9uRm9ybUNvbXBvbmVudD86IFR5cGU8YW55PjtcclxuXHJcblx0bGlzdFVzZXJzRW5kcG9pbnQ6IHN0cmluZyA9ICcnO1xyXG5cdGFzc2lnblJvbGVVc2Vyc0VuZHBvaW50OiBzdHJpbmcgPSAnJztcclxuXHRhc3NpZ25Sb2xlQ3VzdG9tZXJzRW5kcG9pbnQ6IHN0cmluZyA9ICcnO1xyXG5cclxuXHRlbmRwb2ludHM6IFNlY3VyaXR5RW5kcG9pbnRzID0ge307XHJcblxyXG5cdHNlbGVjdGVkSXRlbTogYW55O1xyXG5cdHRoZW1lOiBzdHJpbmcgPSAnZGVmYXVsdCc7XHJcblxyXG5cdG1zZ0xhYmVsID0geyBcIlVzZXJcIjogXCJVc3VhcmlvXCIsIFwiQ3VzdG9tZXJcIjogXCJFbXByZXNhXCIsIFwiUm9sZVwiOiBcIlJvbFwiIH1cclxuXHJcblx0cmVsb2FkQnlFbnRpdHkgPSB7XHJcblx0XHRcIlVzZXJcIjogbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKSxcclxuXHRcdFwiQ3VzdG9tZXJcIjogbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKSxcclxuXHRcdFwiUm9sZVwiOiBuZXcgU3ViamVjdDxib29sZWFuPigpXHJcblx0fVxyXG5cclxuXHRnZXQgdXNlclJlbG9hZCgpIHsgcmV0dXJuIHRoaXMucmVsb2FkQnlFbnRpdHlbJ1VzZXInXSB9XHJcblx0Z2V0IGN1c3RvbWVyUmVsb2FkKCkgeyByZXR1cm4gdGhpcy5yZWxvYWRCeUVudGl0eVsnQ3VzdG9tZXInXSB9XHJcblx0Z2V0IHJvbGVSZWxvYWQoKSB7IHJldHVybiB0aGlzLnJlbG9hZEJ5RW50aXR5WydSb2xlJ10gfVxyXG5cclxuXHRnZXQgc3ViamVjdHMoKSB7XHJcblx0XHRyZXR1cm4gKHtcclxuXHRcdFx0XCJVc2VyXCI6IHRoaXMuc2VsZWN0ZWRVc2VyU3ViamVjdCxcclxuXHRcdFx0XCJDdXN0b21lclwiOiB0aGlzLnNlbGVjdGVkQ3VzdG9tZXJTdWJqZWN0LFxyXG5cdFx0XHRcIlJvbGVcIjogdGhpcy5zZWxlY3RlZFJvbGVTdWJqZWN0XHJcblx0XHR9KVxyXG5cdH1cclxuXHJcblx0Y29uc3RydWN0b3IocHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50KSB7XHJcblx0XHR0aGlzLnJlbG9hZFN1YmplY3Quc3Vic2NyaWJlKHtcclxuXHRcdFx0bmV4dDogKGVudGl0eU5hbWU6IGFueSkgPT4geyB0aGlzLnJlbG9hZEJ5RW50aXR5W2VudGl0eU5hbWUgYXMgXCJVc2VyXCIgfCBcIkN1c3RvbWVyXCIgfCBcIlJvbGVcIl0/Lm5leHQodHJ1ZSkgfVxyXG5cdFx0fSlcclxuXHRcdGZvciAobGV0IHN1YmplY3Qgb2YgT2JqZWN0LnZhbHVlcyh0aGlzLnN1YmplY3RzKSkge1xyXG5cdFx0XHRzdWJqZWN0LnN1YnNjcmliZSh7IG5leHQ6IChpdGVtKSA9PiB0aGlzLnNlbGVjdGVkSXRlbSA9IGl0ZW0gfSk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRzZXRTZWN1cml0eUVuZHBvaW50cyhlbmRwb2ludHM6IFNlY3VyaXR5RW5kcG9pbnRzKXtcclxuXHRcdHRoaXMuZW5kcG9pbnRzID0gZW5kcG9pbnRzO1xyXG5cdH1cclxuXHJcblx0Z2V0Um9sZXMoKSB7XHJcblx0XHRyZXR1cm4gdGhpcy5odHRwLmdldCh0aGlzLmVuZHBvaW50cy5saXN0Um9sZXNFbmRwb2ludCA/PyAnJyk7XHJcblx0fVxyXG5cclxuXHRkZWxldGVNZW51T3B0aW9uKG9wdGlvbjogYW55KXtcclxuXHRcdHJldHVybiB0aGlzLmh0dHAuZ2V0KGAke3RoaXMuZW5kcG9pbnRzLmRlbGV0ZU1lbnVPcHRpb25FbmRwb2ludCA/PyAnJ30/b3B0aW9uSWQ9JHtvcHRpb24uaWR9YClcclxuXHR9XHJcblxyXG5cdHNldFRoZW1lKHRoZW1lOiBzdHJpbmcpe1xyXG5cdFx0dGhpcy50aGVtZSA9IEJvb2xlYW4odGhlbWUpID8gdGhlbWUgOiAnZGVmYXVsdCc7XHJcblx0fVxyXG5cclxuXHRnZXRBY3Rpb25zKHJvbGVJZDogbnVtYmVyLCByZXNvdXJjZUlkOiBudW1iZXIpIHtcclxuXHRcdHJldHVybiB0aGlzLmh0dHAuZ2V0KGAke3RoaXMuZW5kcG9pbnRzLmFjdGlvbnNCeVJvbGVBbmRSZXNvdXJjZUVuZHBvaW50ID09ICcnfT9yb2xlSWQ9JHtyb2xlSWR9JnJlc291cmNlSWQ9JHtyZXNvdXJjZUlkfWApO1xyXG5cdH1cclxuXHJcblx0Ly8gc2V0RGVsZXRlTWVudU9wdGlvbkVuZHBvaW50KGVuZHBvaW50OiBzdHJpbmcpe1xyXG5cdC8vIFx0dGhpcy5kZWxldGVNZW51T3B0aW9uRW5kcG9pbnQgPSBlbmRwb2ludDtcclxuXHQvLyB9XHJcblxyXG5cdGdldFJlc291cmNlc0J5Um9sZShyb2xlSWQ6IG51bWJlcikge1xyXG5cdFx0cmV0dXJuIHRoaXMuaHR0cC5nZXQoYCR7dGhpcy5lbmRwb2ludHMucmVzb3VyY2VzQnlSb2xlRW5kcG9pbnQgPz8gJyd9P3JvbGVkSWQ9JHtyb2xlSWR9YCk7XHJcblx0fVxyXG5cclxuXHQvLyBzZXRMaXN0VXNlcnNFbmRwb2ludChlbmRwb2ludDogc3RyaW5nKSB7XHJcblx0Ly8gXHR0aGlzLmxpc3RVc2Vyc0VuZHBvaW50ID0gZW5kcG9pbnQ7XHJcblx0Ly8gfVxyXG5cclxuXHRzZXRNZW51T3B0aW9uRm9ybUNvbXBvbmVudChjb21wb25lbnQ/OiBUeXBlPGFueT4pe1xyXG5cdFx0dGhpcy5tZW51T3B0aW9uRm9ybUNvbXBvbmVudCA9IGNvbXBvbmVudDtcclxuXHR9XHJcblxyXG5cdC8vIHNldFVzZXJzQnlSb2xlRW5kcG9pbnQoZW5kcG9pbnQ6IHN0cmluZykge1xyXG5cdC8vIFx0dGhpcy51c2Vyc0J5Um9sZUVuZHBvaW50ID0gZW5kcG9pbnQ7XHJcblx0Ly8gfVxyXG5cdC8vIHNldEN1c3RvbWVyc0J5Um9sZUVuZHBvaW50KGVuZHBvaW50OiBzdHJpbmcpIHtcclxuXHQvLyBcdHRoaXMuY3VzdG9tZXJzQnlSb2xlRW5kcG9pbnQgPSBlbmRwb2ludDtcclxuXHQvLyB9XHJcblxyXG5cdC8vIHNldFNhdmVNZW51T3B0aW9uRW5kcG9pbnQoZW5kcG9pbnQ6IHN0cmluZykge1xyXG5cdC8vIFx0dGhpcy5zYXZlTWVudU9wdGlvbkVuZHBvaW50ID0gZW5kcG9pbnQ7XHJcblx0Ly8gfVxyXG5cclxuXHQvLyBzZXRHZXRNZW51VHJlZUVuZHBvaW50KGVuZHBvaW50OiBzdHJpbmcpIHsgdGhpcy5nZXRNZW51VHJlZUVuZHBvaW50ID0gZW5kcG9pbnQgfVxyXG5cdC8vIHNldEFzc2lnblJvbGVVc2Vyc0VuZHBvaW50KGVuZHBvaW50OiBzdHJpbmcpIHsgdGhpcy5hc3NpZ25Sb2xlVXNlcnNFbmRwb2ludCA9IGVuZHBvaW50IH1cclxuXHQvLyBzZXRBc3NpZ25Sb2xlQ3VzdG9tZXJzRW5kcG9pbnQoZW5kcG9pbnQ6IHN0cmluZykge1xyXG5cdC8vIFx0dGhpcy5hc3NpZ25Sb2xlQ3VzdG9tZXJzRW5kcG9pbnQgPSBlbmRwb2ludDtcclxuXHQvLyB9XHJcblxyXG5cdHNhdmVNZW51T3B0aW9uKG9wdGlvbjogYW55KSB7XHJcblx0XHRyZXR1cm4gdGhpcy5odHRwLnBvc3QodGhpcy5lbmRwb2ludHMuc2F2ZU1lbnVPcHRpb25FbmRwb2ludCA/PyAnJywgey4uLm9wdGlvbiwgaWQ6IG9wdGlvbi5pZCA+IC0xID8gb3B0aW9uLmlkOiBudWxsfSk7XHJcblx0fVxyXG5cclxuXHQvLyBnZXRVc2VycyhwYWdlOiBudW1iZXIgPSAxLCBwYWdlU2l6ZTogbnVtYmVyID0gMTApIHtcclxuXHQvLyBcdHJldHVybiB0aGlzLmh0dHAuZ2V0KGB0aGlzLmxpc3RVc2Vyc0VuZHBvaW50P3BhZ2U9JHtwYWdlfSZwYWdlU2l6ZT0ke3BhZ2VTaXplfWApO1xyXG5cdC8vIH1cclxuXHJcblx0Z2V0QXNzaWduZWRSb2xlcyhpZDogbnVtYmVyLCB0eXBlOiBcIlVzZXJcIiB8IFwiQ3VzdG9tZXJcIikge1xyXG5cdFx0cmV0dXJuIHRoaXMuaHR0cC5nZXQoYCR7dHlwZSA9PT0gXCJVc2VyXCIgPyAodGhpcy5lbmRwb2ludHMucm9sZXNCeVVzZXJFbmRwb2ludCA/PyAnJykgOiAodGhpcy5lbmRwb2ludHMucm9sZXNCeUN1c3RvbWVyRW5kcG9pbnQgPz8gJycpfT8ke3BhcmFtTmFtZXNbdHlwZV19PSR7aWR9YCk7XHJcblx0fVxyXG5cclxuXHRhc3NpZ25Sb2xlcyhpZDogbnVtYmVyLCByb2xlczogYW55W10sIHR5cGU6IFwiVXNlclwiIHwgXCJDdXN0b21lclwiKSB7XHJcblx0XHRyZXR1cm4gdGhpcy5odHRwLnBvc3QodHlwZSA9PT0gXCJVc2VyXCIgPyAodGhpcy5lbmRwb2ludHMuYXNzaWduVXNlclJvbGVFbmRwb2ludCA/PyAnJykgOiAodGhpcy5lbmRwb2ludHMuYXNzaWduQ3VzdG9tZXJSb2xlRW5kcG9pbnQgPz8gJycpLCB7XHJcblx0XHRcdFtwYXJhbU5hbWVzW3R5cGVdXTogaWQsXHJcblx0XHRcdHJvbGVzXHJcblx0XHR9KTtcclxuXHR9XHJcblxyXG5cdGFzc2lnblJvbGVVc2Vycyhyb2xlSWQ6IG51bWJlciwgdXNlcnM6IGFueVtdKSB7XHJcblx0XHRyZXR1cm4gdGhpcy5odHRwLnBvc3QodGhpcy5lbmRwb2ludHMuYXNzaWduUm9sZVVzZXJzRW5kcG9pbnQgPz8gJycsIHtcclxuXHRcdFx0cm9sZUlkLFxyXG5cdFx0XHR1c2Vyc1xyXG5cdFx0fSlcclxuXHR9XHJcblxyXG5cdGFzc2lnblJvbGVDdXN0b21lcnMocm9sZUlkOiBudW1iZXIsIGN1c3RvbWVyczogYW55W10pIHtcclxuXHRcdHJldHVybiB0aGlzLmh0dHAucG9zdCh0aGlzLmVuZHBvaW50cy5hc3NpZ25Sb2xlQ3VzdG9tZXJzRW5kcG9pbnQgPz8gJycsIHtcclxuXHRcdFx0cm9sZUlkLFxyXG5cdFx0XHRjdXN0b21lcnNcclxuXHRcdH0pXHJcblx0fVxyXG5cclxuXHQvLyBzZXRSb2xlc0J5VXNlckVuZHBvaW50KGVuZHBvaW50OiBzdHJpbmcpIHtcclxuXHQvLyBcdHRoaXMucm9sZXNCeVVzZXJFbmRwb2ludCA9IGVuZHBvaW50O1xyXG5cdC8vIH1cclxuXHJcblx0Ly8gc2V0QXNzaWduVXNlclJvbGVFbmRwb2ludChlbmRwb2ludDogc3RyaW5nKSB7XHJcblx0Ly8gXHR0aGlzLmFzc2lnblVzZXJSb2xlRW5kcG9pbnQgPSBlbmRwb2ludDtcclxuXHQvLyB9XHJcblxyXG5cdC8vIHNldFJvbGVzQnlDdXN0b21lckVuZHBvaW50KGVuZHBvaW50OiBzdHJpbmcpIHtcclxuXHQvLyBcdHRoaXMucm9sZXNCeUN1c3RvbWVyRW5kcG9pbnQgPSBlbmRwb2ludDtcclxuXHQvLyB9XHJcblxyXG5cdC8vIHNldEFzc2lnbkN1c3RvbWVyUm9sZUVuZHBvaW50KGVuZHBvaW50OiBzdHJpbmcpIHtcclxuXHQvLyBcdHRoaXMuYXNzaWduQ3VzdG9tZXJSb2xlRW5kcG9pbnQgPSBlbmRwb2ludDtcclxuXHQvLyB9XHJcblxyXG5cdC8vIHNldFNhdmVQZXJtaXNzaW9uc0VuZHBvaW50KGVuZHBvaW50OiBzdHJpbmcpIHtcclxuXHQvLyBcdHRoaXMuc2F2ZVBlcm1pc3Npb25zRW5kcG9pbnQgPSBlbmRwb2ludDtcclxuXHQvLyB9XHJcblxyXG5cdC8vIHNldFVzZXJzQnlDdXN0b21lckVuZHBvaW50KGVuZHBvaW50OiBzdHJpbmcpIHtcclxuXHQvLyBcdHRoaXMudXNlcnNCeUN1c3RvbWVyRW5kcG9pbnQgPSBlbmRwb2ludDtcclxuXHQvLyB9XHJcblxyXG5cdC8vIHNldExpc3RSb2xlc0VuZHBvaW50KGVuZHBvaW50OiBzdHJpbmcpIHtcclxuXHQvLyBcdHRoaXMubGlzdFJvbGVzRW5kcG9pbnQgPSBlbmRwb2ludDtcclxuXHQvLyB9XHJcblxyXG5cdC8vIHNldEFzc2lnblJlc291cmNlRW5kcG9pbnQoZW5kcG9pbnQ6IHN0cmluZykge1xyXG5cdC8vIFx0dGhpcy5hc3NpZ25SZXNvdXJjZUVuZHBvaW50ID0gZW5kcG9pbnQ7XHJcblx0Ly8gfVxyXG5cclxuXHQvLyBzZXRSZXNvdXJjZXNCeVJvbGVFbmRwb2ludChlbmRwb2ludDogc3RyaW5nKSB7XHJcblx0Ly8gXHR0aGlzLnJlc291cmNlc0J5Um9sZUVuZHBvaW50ID0gZW5kcG9pbnQ7XHJcblx0Ly8gfVxyXG5cclxuXHQvLyBzZXRBY3Rpb25zQnlSb2xlQW5kUmVzb3VyY2VFbmRwb2ludChlbmRwb2ludDogc3RyaW5nKSB7XHJcblx0Ly8gXHR0aGlzLmdldEFjdGlvbnNFbmRwb2ludCA9IGVuZHBvaW50O1xyXG5cdC8vIH1cclxuXHJcblx0c2VsZWN0VXNlcih1c2VyOiBhbnkpIHtcclxuXHRcdHRoaXMuc2VsZWN0ZWRVc2VyU3ViamVjdC5uZXh0KHVzZXIpO1xyXG5cdH1cclxuXHJcblx0c2VsZWN0Q3VzdG9tZXIoY3VzdG9tZXI6IGFueSkge1xyXG5cdFx0dGhpcy5zZWxlY3RlZEN1c3RvbWVyU3ViamVjdC5uZXh0KGN1c3RvbWVyKTtcclxuXHR9XHJcblxyXG5cdHNlbGVjdFJvbGUocm9sZTogYW55KSB7XHJcblxyXG5cdFx0dGhpcy5zZWxlY3RlZFJvbGVTdWJqZWN0Lm5leHQocm9sZSk7XHJcblx0fVxyXG5cclxuXHRzYXZlSXRlbShlbmRwb2ludDogc3RyaW5nLCB1cGRhdGVkSXRlbTogYW55KSB7XHJcblx0XHRyZXR1cm4gdGhpcy5odHRwLnBvc3QoZW5kcG9pbnQsIHVwZGF0ZWRJdGVtKTtcclxuXHR9XHJcblxyXG5cdGFzc2lnblJlc291cmNlKHJvbGVJZDogbnVtYmVyLCByZXNvdXJjZXM6IGFueVtdKSB7XHJcblx0XHRyZXR1cm4gdGhpcy5odHRwLnBvc3QodGhpcy5lbmRwb2ludHMuYXNzaWduUmVzb3VyY2VFbmRwb2ludCA/PyAnJywgeyByb2xlSWQsIHJlc291cmNlcyB9KTtcclxuXHR9XHJcblxyXG5cdHNhdmVQZXJtaXNzaW9ucyhwZXJtaXNzaW9uczogYW55W10pIHtcclxuXHRcdHJldHVybiB0aGlzLmh0dHAucG9zdCh0aGlzLmVuZHBvaW50cy5zYXZlUGVybWlzc2lvbnNFbmRwb2ludCA/PyAnJywgcGVybWlzc2lvbnMpO1xyXG5cdH1cclxuXHJcblx0Z2V0TWVudVRyZWUoKXtcclxuXHRcdHJldHVybiB0aGlzLmh0dHAuZ2V0KHRoaXMuZW5kcG9pbnRzLmdldE1lbnVUcmVlRW5kcG9pbnQgPz8gJycpO1xyXG5cdH1cclxuXHJcblx0Z2V0QXBwTW9kdWxlcygpe1xyXG5cdFx0cmV0dXJuIHRoaXMuaHR0cC5nZXQodGhpcy5lbmRwb2ludHMubGlzdE1vZHVsZXNFbmRwb2ludCA/PyAnJyk7XHJcblx0fVxyXG5cclxuXHRzYXZlTW9kdWxlKG1vZHVsZTogYW55KSB7XHJcblx0XHRyZXR1cm4gdGhpcy5odHRwLnBvc3QodGhpcy5lbmRwb2ludHMuY3JlYXRlTW9kdWxlRW5kcG9pbnQgPz8gJycsIG1vZHVsZSk7XHJcblx0fVxyXG5cclxuXHRyZWxvYWRFbnRpdHkoZW50aXR5TmFtZTogXCJVc2VyXCIgfCBcIkN1c3RvbWVyXCIgfCBcIlJvbGVcIikge1xyXG5cdFx0dGhpcy5yZWxvYWRTdWJqZWN0Lm5leHQoZW50aXR5TmFtZSk7XHJcblx0fVxyXG59XHJcbiJdfQ==
|