@ieeesa-npm/groups 0.6.0 → 0.6.2
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/assets/constants.json +26 -5
- package/esm2022/lib/components/add-user-roster/add-user-roster.component.mjs +3 -3
- package/esm2022/lib/components/create-group/create-group.component.mjs +3 -3
- package/esm2022/lib/components/edit-user-roles/edit-user-roles.component.mjs +221 -0
- package/esm2022/lib/components/tree-view/tree-view.component.mjs +3 -3
- package/esm2022/lib/components/view-roster/view-roster.component.mjs +113 -21
- package/esm2022/lib/groups.component.mjs +36 -6
- package/esm2022/lib/models/add-new-user.model.mjs +1 -1
- package/esm2022/lib/models/add-or-edit-user-group.model.mjs +2 -0
- package/esm2022/lib/models/delete-user-group.model.mjs +2 -0
- package/esm2022/lib/models/group-function-type.model.mjs +3 -2
- package/esm2022/lib/models/group-user-info.model.mjs +2 -0
- package/esm2022/lib/models/roster-function-type.model.mjs +7 -0
- package/esm2022/lib/models/user.model.mjs +1 -1
- package/esm2022/lib/services/groups.service.mjs +72 -6
- package/esm2022/public-api.mjs +5 -1
- package/fesm2022/ieeesa-npm-groups.mjs +466 -41
- package/fesm2022/ieeesa-npm-groups.mjs.map +1 -1
- package/lib/components/edit-user-roles/edit-user-roles.component.d.ts +89 -0
- package/lib/components/view-roster/view-roster.component.d.ts +32 -3
- package/lib/groups.component.d.ts +6 -0
- package/lib/models/add-new-user.model.d.ts +0 -15
- package/lib/models/add-or-edit-user-group.model.d.ts +15 -0
- package/lib/models/delete-user-group.model.d.ts +5 -0
- package/lib/models/group-function-type.model.d.ts +3 -2
- package/lib/models/group-user-info.model.d.ts +6 -0
- package/lib/models/roster-function-type.model.d.ts +4 -0
- package/lib/models/user.model.d.ts +1 -0
- package/lib/services/groups.service.d.ts +52 -17
- package/package.json +3 -3
- package/public-api.d.ts +4 -0
|
@@ -76,6 +76,25 @@ export class GroupsService {
|
|
|
76
76
|
throw error;
|
|
77
77
|
}));
|
|
78
78
|
}
|
|
79
|
+
/**
|
|
80
|
+
* Deletes a user from group based on the provided information
|
|
81
|
+
* @param {groupId} string -groupId of the selected group from where selected user to be deleted.
|
|
82
|
+
* @param {userId} Array -user ids of selected users who are deleted from the selected group
|
|
83
|
+
* @return {*} {Observable<any>} -Observable representing the group deletion response
|
|
84
|
+
* @memberof GroupsService
|
|
85
|
+
*/
|
|
86
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
87
|
+
deleteUsersGroup(deleteUserGroupPayload
|
|
88
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
89
|
+
) {
|
|
90
|
+
return this.httpService
|
|
91
|
+
.putData(`${this.apiBaseUrl}/groups/roster/deleteGroupUsers`, deleteUserGroupPayload)
|
|
92
|
+
.pipe(map((response) => {
|
|
93
|
+
return response;
|
|
94
|
+
}), catchError((error) => {
|
|
95
|
+
throw error;
|
|
96
|
+
}));
|
|
97
|
+
}
|
|
79
98
|
/**
|
|
80
99
|
* Posts create group form data to server using HttpService for creating new group.
|
|
81
100
|
* @param {CreateGroupPayload} createGroupPayload -create group form data which includes group name, type, short name, scope.
|
|
@@ -284,7 +303,7 @@ export class GroupsService {
|
|
|
284
303
|
/**
|
|
285
304
|
* Gets the user details for the selected group
|
|
286
305
|
* @param {GetUserDetailsPayload} payload
|
|
287
|
-
* @return {Observable<
|
|
306
|
+
* @return {Observable<AddOrEditGroupUserDetailsResponse>}
|
|
288
307
|
* @memberof GroupsService
|
|
289
308
|
*/
|
|
290
309
|
getGroupUserDetails(payload) {
|
|
@@ -298,13 +317,13 @@ export class GroupsService {
|
|
|
298
317
|
}
|
|
299
318
|
/**
|
|
300
319
|
* Posts add new user form data to the API for the selected group and returns the success or failure response.
|
|
301
|
-
* @param {
|
|
302
|
-
* @return {Observable<
|
|
320
|
+
* @param {AddOrEditUserPayload} AddOrEditUserPayload
|
|
321
|
+
* @return {Observable<AddOrEditGroupUserDetailsResponse>}
|
|
303
322
|
* @memberof GroupsService
|
|
304
323
|
*/
|
|
305
|
-
addNewGroupUser(
|
|
324
|
+
addNewGroupUser(AddOrEditUserPayload) {
|
|
306
325
|
return this.httpService
|
|
307
|
-
.postData(`${this.apiBaseUrl}/groups/roster/createGroupUserRole`,
|
|
326
|
+
.postData(`${this.apiBaseUrl}/groups/roster/createGroupUserRole`, AddOrEditUserPayload)
|
|
308
327
|
.pipe(map((response) => {
|
|
309
328
|
return response;
|
|
310
329
|
}), catchError((error) => {
|
|
@@ -328,6 +347,53 @@ export class GroupsService {
|
|
|
328
347
|
this.groupTypeRoles?.map((option) => (option.checked = false));
|
|
329
348
|
return this.groupTypeRoles;
|
|
330
349
|
}
|
|
350
|
+
/**
|
|
351
|
+
* Sets the selected user info.
|
|
352
|
+
* @param {GroupUserInfo} userInfo
|
|
353
|
+
* @memberof GroupsService
|
|
354
|
+
*/
|
|
355
|
+
setSelectedUserInfo(userInfo) {
|
|
356
|
+
this.selectedUserInfo = userInfo;
|
|
357
|
+
}
|
|
358
|
+
/**
|
|
359
|
+
* Returns selected user info.
|
|
360
|
+
* @return {GroupUserInfo}
|
|
361
|
+
* @memberof GroupsService
|
|
362
|
+
*/
|
|
363
|
+
getSelectedUserInfo() {
|
|
364
|
+
return this.selectedUserInfo;
|
|
365
|
+
}
|
|
366
|
+
/**
|
|
367
|
+
* Updates group user roles to server using HttpService.
|
|
368
|
+
* @param {AddOrEditUserPayload} payload
|
|
369
|
+
* @return {Observable<AddOrEditGroupUserDetailsResponse>}
|
|
370
|
+
* @memberof GroupsService
|
|
371
|
+
*/
|
|
372
|
+
editGroupsUserRole(payload) {
|
|
373
|
+
return this.httpService
|
|
374
|
+
.putData(`${this.apiBaseUrl}/groups/roster/editGroupUserRole`, payload)
|
|
375
|
+
.pipe(map((response) => {
|
|
376
|
+
return response;
|
|
377
|
+
}), catchError((error) => {
|
|
378
|
+
throw error;
|
|
379
|
+
}));
|
|
380
|
+
}
|
|
381
|
+
/**
|
|
382
|
+
* Sets roster function type.
|
|
383
|
+
* @param {RosterFunctionType} rosterFunctionType
|
|
384
|
+
* @memberof GroupsService
|
|
385
|
+
*/
|
|
386
|
+
setRosterFunctionType(rosterFunctionType) {
|
|
387
|
+
this.rosterFunctionType = rosterFunctionType;
|
|
388
|
+
}
|
|
389
|
+
/**
|
|
390
|
+
* Returns roster function type.
|
|
391
|
+
* @return {RosterFunctionType}
|
|
392
|
+
* @memberof GroupsService
|
|
393
|
+
*/
|
|
394
|
+
getRosterFunctionType() {
|
|
395
|
+
return this.rosterFunctionType;
|
|
396
|
+
}
|
|
331
397
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.3", ngImport: i0, type: GroupsService, deps: [{ token: i1.HttpService }, { token: i1.AlertsService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
332
398
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.3", ngImport: i0, type: GroupsService, providedIn: 'root' }); }
|
|
333
399
|
}
|
|
@@ -337,4 +403,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.3", ngImpor
|
|
|
337
403
|
providedIn: 'root',
|
|
338
404
|
}]
|
|
339
405
|
}], ctorParameters: function () { return [{ type: i1.HttpService }, { type: i1.AlertsService }]; } });
|
|
340
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JvdXBzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ncm91cHMvc3JjL2xpYi9zZXJ2aWNlcy9ncm91cHMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBYyxHQUFHLEVBQUUsVUFBVSxFQUFFLGVBQWUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQVlwRSxPQUFPLEtBQUssV0FBVyxNQUFNLDBCQUEwQixDQUFDO0FBWXhELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDOzs7QUFReEU7OztHQUdHO0FBSUgsTUFBTSxPQUFPLGFBQWE7SUFheEIsNkRBQTZEO0lBQzdEO0lBQ0UsMENBQTBDO0lBQ2xDLFdBQXdCO0lBQ2hDLDBDQUEwQztJQUNuQyxZQUEyQixDQUFDLDZDQUE2Qzs7UUFGeEUsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFFekIsaUJBQVksR0FBWixZQUFZLENBQWU7UUFqQnBDLGVBQVUsR0FBRyxXQUFXLEVBQUUsTUFBTSxDQUFDO1FBT2pDLHNCQUFpQixHQUFHLElBQUksZUFBZSxDQUNyQyxpQkFBaUIsQ0FBQyxXQUFXLENBQzlCLENBQUM7UUFFRixtQkFBYyxHQUFHLEtBQUssQ0FBQztJQU9wQixDQUFDO0lBQ0osOERBQThEO0lBQzlELFlBQVksQ0FBQyxVQUFrQixFQUFFLGNBQW1CO1FBQ2xELElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDO1FBQzdCLElBQUksQ0FBQyxjQUFjLEdBQUcsY0FBYyxDQUFDO0lBQ3ZDLENBQUM7SUFDRDs7OztPQUlHO0lBQ0gsOERBQThEO0lBQzlELGFBQWE7UUFDWCxPQUFPLElBQUksQ0FBQyxXQUFXO2FBQ3BCLE9BQU8sQ0FBQyxHQUFHLElBQUksQ0FBQyxVQUFVLDRCQUE0QixDQUFDO2FBQ3ZELElBQUksQ0FD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O1FBQy9DLElBQUksQ0FBQyxjQUFjLEdBQUcsU0FBUyxDQUFDO0lBQ2xDLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gscUJBQXFCO1FBQ25CLElBQUksQ0FBQyxjQUFjLEVBQUUsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUMvRCxPQUFPLElBQUksQ0FBQyxjQUFjLENBQUM7SUFDN0IsQ0FBQzs4R0F0WlUsYUFBYTtrSEFBYixhQUFhLGNBRlosTUFBTTs7MkZBRVAsYUFBYTtrQkFIekIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUsIG1hcCwgY2F0Y2hFcnJvciwgQmVoYXZpb3JTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7XHJcbiAgQ3JlYXRlR3JvdXBQYXlsb2FkLFxyXG4gIENyZWF0ZUdyb3VwUmVzcG9uc2UsXHJcbn0gZnJvbSAnLi4vbW9kZWxzL2NyZWF0ZS1ncm91cC5tb2RlbCc7XHJcbmltcG9ydCB7XHJcbiAgR3JvdXBUeXBlQ29uZmlndXJhdGlvbixcclxuICBHcm91cFR5cGVDb25maWdWYWx1ZSxcclxuICBHcm91cFR5cGVSZXNwb25zZSxcclxufSBmcm9tICcuLi9tb2RlbHMvZ3JvdXAtdHlwZXMubW9kZWwnO1xyXG5pbXBvcnQgeyBBbGVydHNTZXJ2aWNlLCBIdHRwU2VydmljZSB9IGZyb20gJ0BpZWVlc2EtbnBtL3V0aWxpdHknO1xyXG5pbXBvcnQgeyBHZXRHcm91cFJlc3BvbnNlLCBHZXRHcm91cHNQYXlsb2FkIH0gZnJvbSAnLi4vbW9kZWxzL3ZpZXctZ3JvdXAubW9kZWwnO1xyXG5pbXBvcnQgKiBhcyBzY3JlZW5UZXh0cyBmcm9tICcuLi9hc3NldHMvY29uc3RhbnRzLmpzb24nO1xyXG5pbXBvcnQgeyBEZWxldGVHcm91cFBheWxvYWQgfSBmcm9tICcuLi9tb2RlbHMvZGVsZXRlLWdyb3VwLm1vZGVsJztcclxuaW1wb3J0IHsgR3JvdXBJbmZvIH0gZnJvbSAnLi4vbW9kZWxzL2dyb3VwLWluZm8ubW9kZWwnO1xyXG5pbXBvcnQge1xyXG4gIFNlYXJjaFVzZXJzUGF5bG9hZCxcclxuICBGaWx0ZXJVc2Vyc0J5Um9sZXNQYXlsb2FkLFxyXG4gIEdldEdyb3VwVXNlcnNSZXNwb25zZSxcclxuICBVc2VyLFxyXG59IGZyb20gJy4uL21vZGVscy91c2VyLm1vZGVsJztcclxuaW1wb3J0IHsgUm9sZSB9IGZyb20gJy4uL21vZGVscy9yb2xlLm1vZGVsJztcclxuaW1wb3J0IHsgQ2hlY2tib3hPcHRpb24gfSBmcm9tICdAaWVlZXNhLW5wbS9wcmVzZW50YXRpb24nO1xyXG5pbXBvcnQgeyBFZGl0R3JvdXBQYXlsb2FkIH0gZnJvbSAnLi4vbW9kZWxzL2VkaXQtZ3JvdXAubW9kZWwnO1xyXG5pbXBvcnQgeyBHcm91cEZ1bmN0aW9uVHlwZSB9IGZyb20gJy4uL21vZGVscy9ncm91cC1mdW5jdGlvbi10eXBlLm1vZGVsJztcclxuaW1wb3J0IHtcclxuICBBZGROZXdVc2VyUGF5bG9hZCxcclxuICBHZXRVc2VyRGV0YWlsc1BheWxvYWQsXHJcbiAgU2VhcmNoVXNlckJ5RW1haWxSZXNwb25zZSxcclxuICBHcm91cFVzZXJEZXRhaWxzUmVzcG9uc2UsXHJcbn0gZnJvbSAnLi4vbW9kZWxzL2FkZC1uZXctdXNlci5tb2RlbCc7XHJcblxyXG4vKipcclxuICogR3JvdXBzIHNlcnZpY2UgaXMgYW4gYWJzdHJhY3QgbGF5ZXIgYW5kIHJlc3BvbnNpYmxlIGZvciBtYW5hZ2luZyBncm91cHMgUkVTVCBBUEkgY2FsbHMuXHJcbiAqIEBjbGFzcyBHcm91cHNTZXJ2aWNlXHJcbiAqL1xyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgR3JvdXBzU2VydmljZSB7XHJcbiAgZ3JvdXBzVGV4dCA9IHNjcmVlblRleHRzPy5lcnJvcnM7XHJcbiAgYXBpQmFzZVVybCE6IHN0cmluZztcclxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gIHVzZXJQZXJtaXNzaW9uOiBhbnk7XHJcbiAgc2VsZWN0ZWRHcm91cEluZm8hOiBHcm91cEluZm8gfCB1bmRlZmluZWQ7XHJcbiAgZ3JvdXBGdW5jdGlvblR5cGUhOiBHcm91cEZ1bmN0aW9uVHlwZTtcclxuICBzZWxlY3RlZEdyb3VwUGFyZW50SW5mbyE6IEdyb3VwSW5mbyB8IHVuZGVmaW5lZDtcclxuICBvcGVuTW9kYWxOb3RpZmllciA9IG5ldyBCZWhhdmlvclN1YmplY3Q8R3JvdXBGdW5jdGlvblR5cGU+KFxyXG4gICAgR3JvdXBGdW5jdGlvblR5cGUuVklFV19ST1NURVJcclxuICApO1xyXG4gIGdyb3VwVHlwZVJvbGVzITogQ2hlY2tib3hPcHRpb25bXTtcclxuICBjYW5TaG93TWVzc2FnZSA9IGZhbHNlO1xyXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1lbXB0eS1mdW5jdGlvbiwgbm8tdW51c2VkLXZhcnNcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtdmFyc1xyXG4gICAgcHJpdmF0ZSBodHRwU2VydmljZTogSHR0cFNlcnZpY2UsXHJcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnNcclxuICAgIHB1YmxpYyBhbGVydFNlcnZpY2U6IEFsZXJ0c1NlcnZpY2UgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWVtcHR5LWZ1bmN0aW9uXHJcbiAgKSB7fVxyXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgc2V0QXBwQ29uZmlnKGFwaUJhc2VVcmw6IHN0cmluZywgdXNlclBlcm1pc3Npb246IGFueSkge1xyXG4gICAgdGhpcy5hcGlCYXNlVXJsID0gYXBpQmFzZVVybDtcclxuICAgIHRoaXMudXNlclBlcm1pc3Npb24gPSB1c2VyUGVybWlzc2lvbjtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogR2V0cyBhcHBsaWNhdGlvbiBncm91cCB0eXBlcyBmcm9tIEFQSSBhbmQgcmV0dXJucyBpdCBhcyBhbiBvYnNlcnZhYmxlLlxyXG4gICAqIEByZXR1cm4ge09ic2VydmFibGU8R3JvdXBUeXBlUmVzcG9uc2U+fSAtSXQgcmV0dXJucyBncm91cCB0eXBlcyBpZiBzdWNjZXNzIGVsc2UgZXJyb3IuXHJcbiAgICogQG1lbWJlcm9mIEdyb3Vwc1NlcnZpY2VcclxuICAgKi9cclxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gIGdldEdyb3VwVHlwZXMoKTogT2JzZXJ2YWJsZTxHcm91cFR5cGVSZXNwb25zZT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cFNlcnZpY2VcclxuICAgICAgLmdldERhdGEoYCR7dGhpcy5hcGlCYXNlVXJsfS9jb25maWd1cmF0aW9ucy9ncm91cF90eXBlYClcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgbWFwKChyZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIHJlc3BvbnNlO1xyXG4gICAgICAgIH0pLFxyXG4gICAgICAgIGNhdGNoRXJyb3IoKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICB0aHJvdyBlcnJvcjtcclxuICAgICAgICB9KVxyXG4gICAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0dXJucyBhbGwgdGhlIGdyb3VwcyBiYXNlZCBvbiBwYXNzZWQgZ3JvdXAgSWQgYW5kIGdyb3VwIHR5cGUuXHJcbiAgICogQHBhcmFtIHtHZXRHcm91cHNQYXlsb2FkfSBnZXRHcm91cHNQYXlsb2FkXHJcbiAgICogQHJldHVybiB7T2JzZXJ2YWJsZTxHZXRHcm91cFJlc3BvbnNlPn1cclxuICAgKiBAbWVtYmVyb2YgR3JvdXBzU2VydmljZVxyXG4gICAqL1xyXG4gIGdldEdyb3VwcyhnZXRHcm91cHNQYXlsb2FkOiBHZXRHcm91cHNQYXlsb2FkKTogT2JzZXJ2YWJsZTxHZXRHcm91cFJlc3BvbnNlPiB7XHJcbiAgICBsZXQgdXJsID0gJ3Jvb3RHcm91cHMnO1xyXG4gICAgaWYgKGdldEdyb3Vwc1BheWxvYWQuZ3JvdXBJZClcclxuICAgICAgdXJsID0gJ2ltbUNoaWxkR3JvdXBzQnlHcm91cElkLycgKyBnZXRHcm91cHNQYXlsb2FkLmdyb3VwSWQ7XHJcbiAgICBlbHNlIGlmIChnZXRHcm91cHNQYXlsb2FkLmdyb3VwVHlwZUlkKVxyXG4gICAgICB1cmwgPSAnZ3JvdXBzQnlHcm91cFR5cGUvJyArIGdldEdyb3Vwc1BheWxvYWQuZ3JvdXBUeXBlSWQ7XHJcblxyXG4gICAgcmV0dXJuIHRoaXMuaHR0cFNlcnZpY2UuZ2V0RGF0YShgJHt0aGlzLmFwaUJhc2VVcmx9L2dyb3Vwcy8ke3VybH1gKS5waXBlKFxyXG4gICAgICBtYXAoKHJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIHJlc3BvbnNlO1xyXG4gICAgICB9KSxcclxuICAgICAgY2F0Y2hFcnJvcigoZXJyb3JSZXMpID0+IHtcclxuICAgICAgICB0aHJvdyBlcnJvclJlcztcclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIERlbGV0ZXMgYSBncm91cCBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgaW5mb3JtYXRpb25cclxuICAgKiBAcGFyYW0ge2dyb3VwSWR9IHN0cmluZyAtZ3JvdXBJZCBvZiB0aGUgZ3JvdXAgd2hpY2ggaXMgdG8gYmUgZGVsZXRlZFxyXG4gICAqIEByZXR1cm4geyp9ICB7T2JzZXJ2YWJsZTxhbnk+fSAtT2JzZXJ2YWJsZSByZXByZXNlbnRpbmcgdGhlIGdyb3VwIGRlbGV0aW9uIHJlc3BvbnNlXHJcbiAgICogQG1lbWJlcm9mIEdyb3Vwc1NlcnZpY2VcclxuICAgKi9cclxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gIGRlbGV0ZUdyb3VwKGRlbGV0ZUdyb3VwUGF5bG9hZDogRGVsZXRlR3JvdXBQYXlsb2FkKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHBTZXJ2aWNlXHJcbiAgICAgIC5wdXREYXRhKGAke3RoaXMuYXBpQmFzZVVybH0vZ3JvdXBzL2RlbGV0ZWAsIGRlbGV0ZUdyb3VwUGF5bG9hZClcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgbWFwKChyZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIHJlc3BvbnNlO1xyXG4gICAgICAgIH0pLFxyXG4gICAgICAgIGNhdGNoRXJyb3IoKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICB0aHJvdyBlcnJvcjtcclxuICAgICAgICB9KVxyXG4gICAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUG9zdHMgY3JlYXRlIGdyb3VwIGZvcm0gZGF0YSB0byBzZXJ2ZXIgdXNpbmcgSHR0cFNlcnZpY2UgZm9yIGNyZWF0aW5nIG5ldyBncm91cC5cclxuICAgKiBAcGFyYW0ge0NyZWF0ZUdyb3VwUGF5bG9hZH0gY3JlYXRlR3JvdXBQYXlsb2FkIC1jcmVhdGUgZ3JvdXAgZm9ybSBkYXRhIHdoaWNoIGluY2x1ZGVzIGdyb3VwIG5hbWUsIHR5cGUsIHNob3J0IG5hbWUsIHNjb3BlLlxyXG4gICAqIEByZXR1cm4ge09ic2VydmFibGU8Q3JlYXRlR3JvdXBSZXNwb25zZT59IC1yZXR1cm5zIGNyZWF0ZSBncm91cCBBUEkgcmVzcG9uc2UgKHN1Y2Nlc3Mgb3IgZXJyb3IpIGFzIGFuIG9ic2VydmFibGUuXHJcbiAgICogQG1lbWJlcm9mIEdyb3Vwc1NlcnZpY2VcclxuICAgKi9cclxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gIGNyZWF0ZUdyb3VwKFxyXG4gICAgY3JlYXRlR3JvdXBQYXlsb2FkOiBDcmVhdGVHcm91cFBheWxvYWRcclxuICApOiBPYnNlcnZhYmxlPENyZWF0ZUdyb3VwUmVzcG9uc2U+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHBTZXJ2aWNlXHJcbiAgICAgIC5wb3N0RGF0YShgJHt0aGlzLmFwaUJhc2VVcmx9L2dyb3Vwcy9jcmVhdGVgLCBjcmVhdGVHcm91cFBheWxvYWQpXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIG1hcCgocmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgIHJldHVybiByZXNwb25zZTtcclxuICAgICAgICB9KSxcclxuICAgICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4ge1xyXG4gICAgICAgICAgdGhyb3cgZXJyb3I7XHJcbiAgICAgICAgfSlcclxuICAgICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFVwZGF0ZXMgZ3JvdXAgZm9ybSBkYXRhIHRvIHNlcnZlciB1c2luZyBIdHRwU2VydmljZS5cclxuICAgKiBAcGFyYW0ge0VkaXRHcm91cFBheWxvYWR9IGVkaXRHcm91cFBheWxvYWQgLWVkaXQgZ3JvdXAgZm9ybSBkYXRhIHdoaWNoIGluY2x1ZGVzIGdyb3VwIG5hbWUsIHNob3J0IG5hbWUsIHNjb3BlLlxyXG4gICAqIEByZXR1cm4ge09ic2VydmFibGU8RWRpdEdyb3VwUGF5bG9hZD59IC1yZXR1cm5zIGVkaXQgZ3JvdXAgQVBJIHJlc3BvbnNlIChzdWNjZXNzIG9yIGVycm9yKSBhcyBhbiBvYnNlcnZhYmxlLlxyXG4gICAqIEBtZW1iZXJvZiBHcm91cHNTZXJ2aWNlXHJcbiAgICovXHJcbiAgZWRpdEdyb3VwKFxyXG4gICAgZWRpdEdyb3VwUGF5bG9hZDogRWRpdEdyb3VwUGF5bG9hZFxyXG4gICk6IE9ic2VydmFibGU8Q3JlYXRlR3JvdXBSZXNwb25zZT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cFNlcnZpY2VcclxuICAgICAgLnB1dERhdGEoYCR7dGhpcy5hcGlCYXNlVXJsfS9ncm91cHMvZWRpdGAsIGVkaXRHcm91cFBheWxvYWQpXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIG1hcCgocmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgIHJldHVybiByZXNwb25zZTtcclxuICAgICAgICB9KSxcclxuICAgICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4ge1xyXG4gICAgICAgICAgdGhyb3cgZXJyb3I7XHJcbiAgICAgICAgfSlcclxuICAgICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFRoaXMgbWV0aG9kIHdpbGwgcGFyc2UgdGhlIGVycm9yIGNvZGVzIGFuZCByZXR1cm4gdGhlIHJlc3BlY3RpdmUgZXJyb3IgbWVzc2FnZSBmb3IgZWFjaCBjb2RlLlxyXG4gICAqIEBwYXJhbSB7c3RyaW5nW119IGVycm9yQ29kZXNcclxuICAgKiBAcmV0dXJuIHtzdHJpbmdbXX0gZXJyb3JNZXNzYWdlXHJcbiAgICogQG1lbWJlcm9mIEdyb3Vwc1NlcnZpY2VcclxuICAgKi9cclxuICBwYXJzZUVycm9yTWVzc2FnZShlcnJvckNvZGVzOiBzdHJpbmdbXSkge1xyXG4gICAgY29uc3QgZXJyb3JNZXNzYWdlOiBzdHJpbmdbXSA9IFtdO1xyXG4gICAgZXJyb3JDb2Rlcz8uZm9yRWFjaCgoaXRlbTogc3RyaW5nLCBpbmRleDogbnVtYmVyKSA9PiB7XHJcbiAgICAgIGNvbnN0IGVycm9yTWVzc2FnZUtleSA9IGVycm9yQ29kZXNbaW5kZXhdIGFzIGtleW9mIHR5cGVvZiB0aGlzLmdyb3Vwc1RleHQ7XHJcbiAgICAgIGVycm9yTWVzc2FnZS5wdXNoKHRoaXMuZ3JvdXBzVGV4dFtlcnJvck1lc3NhZ2VLZXldKTtcclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIGVycm9yTWVzc2FnZTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNldHMgc2VsZWN0ZWQgZ3JvdXAgaW5mby5cclxuICAgKiBAcGFyYW0geyhHcm91cEluZm8gfCB1bmRlZmluZWQpfSBzZWxlY3RlZEdyb3VwSW5mbyAtc2VsZWN0ZWQgZ3JvdXAgaW5mby5cclxuICAgKiBAcGFyYW0geyhHcm91cEluZm8gfCB1bmRlZmluZWQpfSBbc2VsZWN0ZWRHcm91cFBhcmVudEluZm9dIC1zZWxlY3RlZCBwYXJlbnQgZ3JvdXAgaW5mby5cclxuICAgKiBAbWVtYmVyb2YgR3JvdXBzU2VydmljZVxyXG4gICAqL1xyXG4gIHNldFNlbGVjdGVkR3JvdXBJbmZvKFxyXG4gICAgc2VsZWN0ZWRHcm91cEluZm86IEdyb3VwSW5mbyB8IHVuZGVmaW5lZCxcclxuICAgIHNlbGVjdGVkR3JvdXBQYXJlbnRJbmZvPzogR3JvdXBJbmZvIHwgdW5kZWZpbmVkXHJcbiAgKSB7XHJcbiAgICB0aGlzLnNlbGVjdGVkR3JvdXBJbmZvID0gc2VsZWN0ZWRHcm91cEluZm87XHJcbiAgICB0aGlzLnNlbGVjdGVkR3JvdXBQYXJlbnRJbmZvID0gc2VsZWN0ZWRHcm91cFBhcmVudEluZm87XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXR1cm5zIHRoZSBzZWxlY3RlZCBncm91cCBpbmZvLlxyXG4gICAqIEByZXR1cm4geyhHcm91cEluZm8gfCB1bmRlZmluZWQpfSAtZ3JvdXAgaW5mby5cclxuICAgKiBAbWVtYmVyb2YgR3JvdXBzU2VydmljZVxyXG4gICAqL1xyXG4gIGdldFNlbGVjdGVkR3JvdXBJbmZvKCk6IEdyb3VwSW5mbyB8IHVuZGVmaW5lZCB7XHJcbiAgICByZXR1cm4gdGhpcy5zZWxlY3RlZEdyb3VwSW5mbztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHVybnMgdGhlIHNlbGVjdGVkIGdyb3VwIHBhcmVudCBncm91cCBpbmZvLlxyXG4gICAqIEByZXR1cm4geyhHcm91cEluZm8gfCB1bmRlZmluZWQpfSAtZ3JvdXAgaW5mby5cclxuICAgKiBAbWVtYmVyb2YgR3JvdXBzU2VydmljZVxyXG4gICAqL1xyXG4gIGdldFNlbGVjdGVkR3JvdXBQYXJlbnRJbmZvKCk6IEdyb3VwSW5mbyB8IHVuZGVmaW5lZCB7XHJcbiAgICByZXR1cm4gdGhpcy5zZWxlY3RlZEdyb3VwUGFyZW50SW5mbztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNldHMgZ3JvdXAgZnVuY3Rpb24gdHlwZS5cclxuICAgKiBAcGFyYW0ge0dyb3VwRnVuY3Rpb25UeXBlfSBncm91cEZ1bmN0aW9uVHlwZSAtZ3JvdXAgZnVuY3Rpb24gdHlwZS5cclxuICAgKiBAbWVtYmVyb2YgR3JvdXBzU2VydmljZVxyXG4gICAqL1xyXG4gIHNldEdyb3VwRnVuY3Rpb25UeXBlKGdyb3VwRnVuY3Rpb25UeXBlOiBHcm91cEZ1bmN0aW9uVHlwZSk6IHZvaWQge1xyXG4gICAgdGhpcy5ncm91cEZ1bmN0aW9uVHlwZSA9IGdyb3VwRnVuY3Rpb25UeXBlO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0dXJucyBncm91cCBmdW5jdGlvbiB0eXBlLlxyXG4gICAqIEByZXR1cm4ge0dyb3VwRnVuY3Rpb25UeXBlfSAtZ3JvdXAgZnVuY3Rpb24gdHlwZS5cclxuICAgKiBAbWVtYmVyb2YgR3JvdXBzU2VydmljZVxyXG4gICAqL1xyXG4gIGdldEdyb3VwRnVuY3Rpb25UeXBlKCk6IEdyb3VwRnVuY3Rpb25UeXBlIHtcclxuICAgIHJldHVybiB0aGlzLmdyb3VwRnVuY3Rpb25UeXBlO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0cyB0aGUgZ3JvdXAgdXNlcnMgZm9yIHRoZSBnaXZlbiBncm91cCBpZC5cclxuICAgKiBAcGFyYW0ge3N0cmluZ30gZ3JvdXBJZFxyXG4gICAqIEByZXR1cm4ge09ic2VydmFibGU8R2V0R3JvdXBVc2Vyc1Jlc3BvbnNlPn1cclxuICAgKiBAbWVtYmVyb2YgR3JvdXBzU2VydmljZVxyXG4gICAqL1xyXG4gIGdldEdyb3VwVXNlcnMoZ3JvdXBJZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxHZXRHcm91cFVzZXJzUmVzcG9uc2U+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHBTZXJ2aWNlXHJcbiAgICAgIC5nZXREYXRhKGAke3RoaXMuYXBpQmFzZVVybH0vZ3JvdXBzL3Jvc3Rlci8ke2dyb3VwSWR9YClcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgbWFwKChyZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIHJlc3BvbnNlO1xyXG4gICAgICAgIH0pLFxyXG4gICAgICAgIGNhdGNoRXJyb3IoKGVycm9yUmVzKSA9PiB7XHJcbiAgICAgICAgICB0aHJvdyBlcnJvclJlcztcclxuICAgICAgICB9KVxyXG4gICAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0cyB0aGUgZ3JvdXAgdXNlcnMgYmFzZWQgb24gdGhlIGZpbHRlcmVkIHJvbGVzLlxyXG4gICAqIEBwYXJhbSB7RmlsdGVyVXNlcnNCeVJvbGVzUGF5bG9hZH0gcGF5bG9hZFxyXG4gICAqIEByZXR1cm4ge09ic2VydmFibGU8R2V0R3JvdXBVc2Vyc1Jlc3BvbnNlPn1cclxuICAgKiBAbWVtYmVyb2YgR3JvdXBzU2VydmljZVxyXG4gICAqL1xyXG4gIGdldEdyb3VwVXNlcnNCeVJvbGVzKFxyXG4gICAgcGF5bG9hZDogRmlsdGVyVXNlcnNCeVJvbGVzUGF5bG9hZFxyXG4gICk6IE9ic2VydmFibGU8R2V0R3JvdXBVc2Vyc1Jlc3BvbnNlPiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwU2VydmljZVxyXG4gICAgICAucG9zdERhdGEoYCR7dGhpcy5hcGlCYXNlVXJsfS9ncm91cHMvcm9zdGVyL2dyb3VwVXNlcnNCeVJvbGVgLCBwYXlsb2FkKVxyXG4gICAgICAucGlwZShcclxuICAgICAgICBtYXAoKHJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gcmVzcG9uc2U7XHJcbiAgICAgICAgfSksXHJcbiAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3JSZXMpID0+IHtcclxuICAgICAgICAgIHRocm93IGVycm9yUmVzO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHZXRzIHRoZSBncm91cCB1c2VycyBiYXNlZCBvbiBzZWFyY2hlZCBuYW1lIG9yIGVtYWlsXHJcbiAgICogQHBhcmFtIHtTZWFyY2hVc2Vyc1BheWxvYWR9IHBheWxvYWRcclxuICAgKiBAcmV0dXJuIHtPYnNlcnZhYmxlPEdldEdyb3VwVXNlcnNSZXNwb25zZT59XHJcbiAgICogQG1lbWJlcm9mIEdyb3Vwc1NlcnZpY2VcclxuICAgKi9cclxuICBzZWFyY2hHcm91cFVzZXJzKFxyXG4gICAgcGF5bG9hZDogU2VhcmNoVXNlcnNQYXlsb2FkXHJcbiAgKTogT2JzZXJ2YWJsZTxHZXRHcm91cFVzZXJzUmVzcG9uc2U+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHBTZXJ2aWNlXHJcbiAgICAgIC5wb3N0RGF0YShcclxuICAgICAgICBgJHt0aGlzLmFwaUJhc2VVcmx9L2dyb3Vwcy9yb3N0ZXIvZ3JvdXBVc2Vyc0J5Um9sZUJ5TmFtZUJ5RW1haWxgLFxyXG4gICAgICAgIHBheWxvYWRcclxuICAgICAgKVxyXG4gICAgICAucGlwZShcclxuICAgICAgICBtYXAoKHJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gcmVzcG9uc2U7XHJcbiAgICAgICAgfSksXHJcbiAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3JSZXMpID0+IHtcclxuICAgICAgICAgIHRocm93IGVycm9yUmVzO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHZXRzIHRoZSBncm91cCByb2xlcyBiYXNlZCBvbiB0aGUgZ3JvdXAgdHlwZS5cclxuICAgKiBAcGFyYW0ge3N0cmluZ30gZ3JvdXBUeXBlSWRcclxuICAgKiBAcmV0dXJuIHtPYnNlcnZhYmxlPENoZWNrYm94T3B0aW9uW10+fVxyXG4gICAqIEBtZW1iZXJvZiBHcm91cHNTZXJ2aWNlXHJcbiAgICovXHJcbiAgZ2V0R3JvdXBUeXBlUm9sZXMoZ3JvdXBUeXBlSWQ6IHN0cmluZyk6IE9ic2VydmFibGU8Q2hlY2tib3hPcHRpb25bXT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cFNlcnZpY2VcclxuICAgICAgLmdldERhdGEoXHJcbiAgICAgICAgYCR7dGhpcy5hcGlCYXNlVXJsfS9ncm91cHMvY29uZmlnL3JvbGVzQnlHcm91cFR5cGUvJHtncm91cFR5cGVJZH1gXHJcbiAgICAgIClcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgbWFwKChyZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgY29uc3Qgcm9sZXNPcHRpb246IENoZWNrYm94T3B0aW9uW10gPSBbXTtcclxuICAgICAgICAgIHJlc3BvbnNlPy5ib2R5Py5mb3JFYWNoKChyb2xlOiBSb2xlKSA9PiB7XHJcbiAgICAgICAgICAgIHJvbGVzT3B0aW9uLnB1c2goe1xyXG4gICAgICAgICAgICAgIGlkOiByb2xlLnJvbGVJZCxcclxuICAgICAgICAgICAgICBuYW1lOiByb2xlLnJvbGVOYW1lLFxyXG4gICAgICAgICAgICAgIGRpc2FibGVkOiBmYWxzZSxcclxuICAgICAgICAgICAgICBjaGVja2VkOiBmYWxzZSxcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIHRoaXMuc2V0R3JvdXBUeXBlVXNlclJvbGVzKHJvbGVzT3B0aW9uKTtcclxuICAgICAgICAgIHJldHVybiByb2xlc09wdGlvbjtcclxuICAgICAgICB9KSxcclxuICAgICAgICBjYXRjaEVycm9yKChlcnJvclJlcykgPT4ge1xyXG4gICAgICAgICAgdGhyb3cgZXJyb3JSZXM7XHJcbiAgICAgICAgfSlcclxuICAgICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENvbmNhdGVuYXRlcyB0aGUgZ3JvdXAgdXNlcnMgYXNzaWduZWQgcm9sZXMgbmFtZSBzZXBhcmF0ZWQgYnkgY29tbWEgYXMgc3RyaW5nIGFuZCByZXR1cm5zIHRoZSBncm91cCB1c2VycyBpbiBhbiBhcnJheS5cclxuICAgKiBAcGFyYW0ge0dldEdyb3VwVXNlcnNSZXNwb25zZX0gcmVzcG9uc2VcclxuICAgKiBAcmV0dXJuIHtVc2VyW119XHJcbiAgICogQG1lbWJlcm9mIEdyb3Vwc1NlcnZpY2VcclxuICAgKi9cclxuICB0cmFuc2Zvcm1Vc2VyUm9sZXNOYW1lQXNTdHJpbmcocmVzcG9uc2U6IEdldEdyb3VwVXNlcnNSZXNwb25zZSk6IFVzZXJbXSB7XHJcbiAgICBjb25zdCB1c2VyczogVXNlcltdID0gW107XHJcbiAgICByZXNwb25zZT8uYm9keT8uZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICBjb25zdCByb2xlczogc3RyaW5nW10gPSBbXTtcclxuICAgICAgaXRlbT8ucm9sZXNMaXN0Py5mb3JFYWNoKChyb2xlKSA9PiByb2xlcy5wdXNoKHJvbGU/LnJvbGVOYW1lKSk7XHJcbiAgICAgIHVzZXJzLnB1c2goe1xyXG4gICAgICAgIHVzZXJJZDogaXRlbS51c2VySWQsXHJcbiAgICAgICAgbmFtZTogaXRlbS5uYW1lLFxyXG4gICAgICAgIGVtYWlsOiBpdGVtLmVtYWlsLFxyXG4gICAgICAgIHJvbGU6IHJvbGVzLmpvaW4oJywgJyksXHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gdXNlcnM7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIFJldHVybnMgZm9ybWF0dGVkIGdyb3VwIHR5cGVzLlxyXG4gICAqIEBwYXJhbSB7R3JvdXBUeXBlQ29uZmlndXJhdGlvbltdfSBncm91cFR5cGVSZXNwb25zZVxyXG4gICAqIEByZXR1cm4ge0dyb3VwVHlwZUNvbmZpZ1ZhbHVlfVxyXG4gICAqIEBtZW1iZXJvZiBHcm91cHNTZXJ2aWNlXHJcbiAgICovXHJcbiAgZ2V0Rm9ybWF0dGVkR3JvdXBUeXBlcyhcclxuICAgIGdyb3VwVHlwZVJlc3BvbnNlOiBHcm91cFR5cGVDb25maWd1cmF0aW9uW11cclxuICApOiBHcm91cFR5cGVDb25maWdWYWx1ZSB7XHJcbiAgICBjb25zdCBncm91cFR5cGVzOiBHcm91cFR5cGVDb25maWdWYWx1ZSA9IHt9O1xyXG4gICAgZ3JvdXBUeXBlUmVzcG9uc2UuZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICBncm91cFR5cGVzW2l0ZW0uY29uZmlnRmllbGRJZF0gPSBpdGVtLmNvbmZpZ0ZpZWxkVmFsdWU7XHJcbiAgICB9KTtcclxuICAgIHJldHVybiBncm91cFR5cGVzO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0dXJucyBncm91cCB1c2VyIGRldGFpbHMgaWYgZW1haWwgaXMgZm91bmQsIGVsc2UgdGhyb3dzIGVycm9yLlxyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBlbWFpbFxyXG4gICAqIEByZXR1cm4ge09ic2VydmFibGU8U2VhcmNoVXNlckJ5RW1haWxSZXNwb25zZT59XHJcbiAgICogQG1lbWJlcm9mIEdyb3Vwc1NlcnZpY2VcclxuICAgKi9cclxuICBnZXRVc2VyQnlFbWFpbChlbWFpbDogc3RyaW5nKTogT2JzZXJ2YWJsZTxTZWFyY2hVc2VyQnlFbWFpbFJlc3BvbnNlPiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwU2VydmljZVxyXG4gICAgICAuZ2V0RGF0YShgJHt0aGlzLmFwaUJhc2VVcmx9L2dyb3Vwcy91c2Vycy91c2VyQnlFbWFpbC8ke2VtYWlsfWApXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIG1hcCgocmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgIHJldHVybiByZXNwb25zZTtcclxuICAgICAgICB9KSxcclxuICAgICAgICBjYXRjaEVycm9yKChlcnJvclJlcykgPT4ge1xyXG4gICAgICAgICAgdGhyb3cgZXJyb3JSZXM7XHJcbiAgICAgICAgfSlcclxuICAgICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldHMgdGhlIHVzZXIgZGV0YWlscyBmb3IgdGhlIHNlbGVjdGVkIGdyb3VwXHJcbiAgICogQHBhcmFtIHtHZXRVc2VyRGV0YWlsc1BheWxvYWR9IHBheWxvYWRcclxuICAgKiBAcmV0dXJuIHtPYnNlcnZhYmxlPEdyb3VwVXNlckRldGFpbHNSZXNwb25zZT59XHJcbiAgICogQG1lbWJlcm9mIEdyb3Vwc1NlcnZpY2VcclxuICAgKi9cclxuICBnZXRHcm91cFVzZXJEZXRhaWxzKFxyXG4gICAgcGF5bG9hZDogR2V0VXNlckRldGFpbHNQYXlsb2FkXHJcbiAgKTogT2JzZXJ2YWJsZTxHcm91cFVzZXJEZXRhaWxzUmVzcG9uc2U+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHBTZXJ2aWNlXHJcbiAgICAgIC5wb3N0RGF0YShgJHt0aGlzLmFwaUJhc2VVcmx9L2dyb3Vwcy9yb3N0ZXIvdXNlckRldGFpbHNgLCBwYXlsb2FkKVxyXG4gICAgICAucGlwZShcclxuICAgICAgICBtYXAoKHJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gcmVzcG9uc2U7XHJcbiAgICAgICAgfSksXHJcbiAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3IpID0+IHtcclxuICAgICAgICAgIHRocm93IGVycm9yO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBQb3N0cyBhZGQgbmV3IHVzZXIgZm9ybSBkYXRhIHRvIHRoZSBBUEkgZm9yIHRoZSBzZWxlY3RlZCBncm91cCBhbmQgcmV0dXJucyB0aGUgc3VjY2VzcyBvciBmYWlsdXJlIHJlc3BvbnNlLlxyXG4gICAqIEBwYXJhbSB7QWRkTmV3VXNlclBheWxvYWR9IGFkZE5ld1VzZXJQYXlsb2FkXHJcbiAgICogQHJldHVybiB7T2JzZXJ2YWJsZTxHcm91cFVzZXJEZXRhaWxzUmVzcG9uc2U+fVxyXG4gICAqIEBtZW1iZXJvZiBHcm91cHNTZXJ2aWNlXHJcbiAgICovXHJcbiAgYWRkTmV3R3JvdXBVc2VyKFxyXG4gICAgYWRkTmV3VXNlclBheWxvYWQ6IEFkZE5ld1VzZXJQYXlsb2FkXHJcbiAgKTogT2JzZXJ2YWJsZTxHcm91cFVzZXJEZXRhaWxzUmVzcG9uc2U+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHBTZXJ2aWNlXHJcbiAgICAgIC5wb3N0RGF0YShcclxuICAgICAgICBgJHt0aGlzLmFwaUJhc2VVcmx9L2dyb3Vwcy9yb3N0ZXIvY3JlYXRlR3JvdXBVc2VyUm9sZWAsXHJcbiAgICAgICAgYWRkTmV3VXNlclBheWxvYWRcclxuICAgICAgKVxyXG4gICAgICAucGlwZShcclxuICAgICAgICBtYXAoKHJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gcmVzcG9uc2U7XHJcbiAgICAgICAgfSksXHJcbiAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3IpID0+IHtcclxuICAgICAgICAgIHRocm93IGVycm9yO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTZXRzIHRoZSBsb2FkZWQgZ3JvdXAgdHlwZSB1c2VyIHJvbGVzXHJcbiAgICogQHBhcmFtIHtDaGVja2JveE9wdGlvbltdfSB1c2VyUm9sZXNcclxuICAgKiBAbWVtYmVyb2YgR3JvdXBzU2VydmljZVxyXG4gICAqL1xyXG4gIHNldEdyb3VwVHlwZVVzZXJSb2xlcyh1c2VyUm9sZXM6IENoZWNrYm94T3B0aW9uW10pOiB2b2lkIHtcclxuICAgIHRoaXMuZ3JvdXBUeXBlUm9sZXMgPSB1c2VyUm9sZXM7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXR1cm5zIHRoZSBncm91cCB0eXBlIHVzZXIgcm9sZXMuXHJcbiAgICogQHJldHVybiB7Q2hlY2tib3hPcHRpb25bXX1cclxuICAgKiBAbWVtYmVyb2YgR3JvdXBzU2VydmljZVxyXG4gICAqL1xyXG4gIGdldEdyb3VwVHlwZVVzZXJSb2xlcygpOiBDaGVja2JveE9wdGlvbltdIHtcclxuICAgIHRoaXMuZ3JvdXBUeXBlUm9sZXM/Lm1hcCgob3B0aW9uKSA9PiAob3B0aW9uLmNoZWNrZWQgPSBmYWxzZSkpO1xyXG4gICAgcmV0dXJuIHRoaXMuZ3JvdXBUeXBlUm9sZXM7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
406
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JvdXBzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ncm91cHMvc3JjL2xpYi9zZXJ2aWNlcy9ncm91cHMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBYyxHQUFHLEVBQUUsVUFBVSxFQUFFLGVBQWUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQVlwRSxPQUFPLEtBQUssV0FBVyxNQUFNLDBCQUEwQixDQUFDO0FBWXhELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDOzs7QUFheEU7OztHQUdHO0FBSUgsTUFBTSxPQUFPLGFBQWE7SUFleEIsNkRBQTZEO0lBQzdEO0lBQ0UsMENBQTBDO0lBQ2xDLFdBQXdCO0lBQ2hDLDBDQUEwQztJQUNuQyxZQUEyQixDQUFDLDZDQUE2Qzs7UUFGeEUsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFFekIsaUJBQVksR0FBWixZQUFZLENBQWU7UUFuQnBDLGVBQVUsR0FBRyxXQUFXLEVBQUUsTUFBTSxDQUFDO1FBT2pDLHNCQUFpQixHQUFHLElBQUksZUFBZSxDQUNyQyxpQkFBaUIsQ0FBQyxXQUFXLENBQzlCLENBQUM7UUFHRixtQkFBYyxHQUFHLEtBQUssQ0FBQztJQVFwQixDQUFDO0lBQ0osOERBQThEO0lBQzlELFlBQVksQ0FBQyxVQUFrQixFQUFFLGNBQW1CO1FBQ2xELElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDO1FBQzdCLElBQUksQ0FBQyxjQUFjLEdBQUcsY0FBYyxDQUFDO0lBQ3ZDLENBQUM7SUFDRDs7OztPQUlHO0lBQ0gsOERBQThEO0lBQzlELGFBQWE7UUFDWCxPQUFPLElBQUksQ0FBQyxXQUFXO2FBQ3BCLE9BQU8sQ0FBQyxHQUFHLElBQUksQ0FBQyxVQUFVLDRCQUE0QixDQUFDO2FBQ3ZELElBQUksQ0FD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Q0FBQyxFQUNGLFVBQVUsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ25CLE1BQU0sS0FBSyxDQUFDO1FBQ2QsQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUNOLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gscUJBQXFCLENBQUMsa0JBQXNDO1FBQzFELElBQUksQ0FBQyxrQkFBa0IsR0FBRyxrQkFBa0IsQ0FBQztJQUMvQyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILHFCQUFxQjtRQUNuQixPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQztJQUNqQyxDQUFDOzhHQTNlVSxhQUFhO2tIQUFiLGFBQWEsY0FGWixNQUFNOzsyRkFFUCxhQUFhO2tCQUh6QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgbWFwLCBjYXRjaEVycm9yLCBCZWhhdmlvclN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHtcclxuICBDcmVhdGVHcm91cFBheWxvYWQsXHJcbiAgQ3JlYXRlR3JvdXBSZXNwb25zZSxcclxufSBmcm9tICcuLi9tb2RlbHMvY3JlYXRlLWdyb3VwLm1vZGVsJztcclxuaW1wb3J0IHtcclxuICBHcm91cFR5cGVDb25maWd1cmF0aW9uLFxyXG4gIEdyb3VwVHlwZUNvbmZpZ1ZhbHVlLFxyXG4gIEdyb3VwVHlwZVJlc3BvbnNlLFxyXG59IGZyb20gJy4uL21vZGVscy9ncm91cC10eXBlcy5tb2RlbCc7XHJcbmltcG9ydCB7IEFsZXJ0c1NlcnZpY2UsIEh0dHBTZXJ2aWNlIH0gZnJvbSAnQGllZWVzYS1ucG0vdXRpbGl0eSc7XHJcbmltcG9ydCB7IEdldEdyb3VwUmVzcG9uc2UsIEdldEdyb3Vwc1BheWxvYWQgfSBmcm9tICcuLi9tb2RlbHMvdmlldy1ncm91cC5tb2RlbCc7XHJcbmltcG9ydCAqIGFzIHNjcmVlblRleHRzIGZyb20gJy4uL2Fzc2V0cy9jb25zdGFudHMuanNvbic7XHJcbmltcG9ydCB7IERlbGV0ZUdyb3VwUGF5bG9hZCB9IGZyb20gJy4uL21vZGVscy9kZWxldGUtZ3JvdXAubW9kZWwnO1xyXG5pbXBvcnQgeyBHcm91cEluZm8gfSBmcm9tICcuLi9tb2RlbHMvZ3JvdXAtaW5mby5tb2RlbCc7XHJcbmltcG9ydCB7XHJcbiAgU2VhcmNoVXNlcnNQYXlsb2FkLFxyXG4gIEZpbHRlclVzZXJzQnlSb2xlc1BheWxvYWQsXHJcbiAgR2V0R3JvdXBVc2Vyc1Jlc3BvbnNlLFxyXG4gIFVzZXIsXHJcbn0gZnJvbSAnLi4vbW9kZWxzL3VzZXIubW9kZWwnO1xyXG5pbXBvcnQgeyBSb2xlIH0gZnJvbSAnLi4vbW9kZWxzL3JvbGUubW9kZWwnO1xyXG5pbXBvcnQgeyBDaGVja2JveE9wdGlvbiB9IGZyb20gJ0BpZWVlc2EtbnBtL3ByZXNlbnRhdGlvbic7XHJcbmltcG9ydCB7IEVkaXRHcm91cFBheWxvYWQgfSBmcm9tICcuLi9tb2RlbHMvZWRpdC1ncm91cC5tb2RlbCc7XHJcbmltcG9ydCB7IEdyb3VwRnVuY3Rpb25UeXBlIH0gZnJvbSAnLi4vbW9kZWxzL2dyb3VwLWZ1bmN0aW9uLXR5cGUubW9kZWwnO1xyXG5pbXBvcnQgeyBSb3N0ZXJGdW5jdGlvblR5cGUgfSBmcm9tICcuLi9tb2RlbHMvcm9zdGVyLWZ1bmN0aW9uLXR5cGUubW9kZWwnO1xyXG5pbXBvcnQgeyBHcm91cFVzZXJJbmZvIH0gZnJvbSAnLi4vbW9kZWxzL2dyb3VwLXVzZXItaW5mby5tb2RlbCc7XHJcbmltcG9ydCB7XHJcbiAgQWRkT3JFZGl0VXNlclBheWxvYWQsXHJcbiAgQWRkT3JFZGl0R3JvdXBVc2VyRGV0YWlsc1Jlc3BvbnNlLFxyXG59IGZyb20gJy4uL21vZGVscy9hZGQtb3ItZWRpdC11c2VyLWdyb3VwLm1vZGVsJztcclxuaW1wb3J0IHsgRGVsZXRlVXNlckdyb3VwUGF5bG9hZCB9IGZyb20gJy4uL21vZGVscy9kZWxldGUtdXNlci1ncm91cC5tb2RlbCc7XHJcbmltcG9ydCB7XHJcbiAgR2V0VXNlckRldGFpbHNQYXlsb2FkLFxyXG4gIFNlYXJjaFVzZXJCeUVtYWlsUmVzcG9uc2UsXHJcbn0gZnJvbSAnLi4vbW9kZWxzL2FkZC1uZXctdXNlci5tb2RlbCc7XHJcblxyXG4vKipcclxuICogR3JvdXBzIHNlcnZpY2UgaXMgYW4gYWJzdHJhY3QgbGF5ZXIgYW5kIHJlc3BvbnNpYmxlIGZvciBtYW5hZ2luZyBncm91cHMgUkVTVCBBUEkgY2FsbHMuXHJcbiAqIEBjbGFzcyBHcm91cHNTZXJ2aWNlXHJcbiAqL1xyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgR3JvdXBzU2VydmljZSB7XHJcbiAgZ3JvdXBzVGV4dCA9IHNjcmVlblRleHRzPy5lcnJvcnM7XHJcbiAgYXBpQmFzZVVybCE6IHN0cmluZztcclxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gIHVzZXJQZXJtaXNzaW9uOiBhbnk7XHJcbiAgc2VsZWN0ZWRHcm91cEluZm8hOiBHcm91cEluZm8gfCB1bmRlZmluZWQ7XHJcbiAgZ3JvdXBGdW5jdGlvblR5cGUhOiBHcm91cEZ1bmN0aW9uVHlwZTtcclxuICBzZWxlY3RlZEdyb3VwUGFyZW50SW5mbyE6IEdyb3VwSW5mbyB8IHVuZGVmaW5lZDtcclxuICBvcGVuTW9kYWxOb3RpZmllciA9IG5ldyBCZWhhdmlvclN1YmplY3Q8R3JvdXBGdW5jdGlvblR5cGU+KFxyXG4gICAgR3JvdXBGdW5jdGlvblR5cGUuVklFV19ST1NURVJcclxuICApO1xyXG4gIGdyb3VwVHlwZVJvbGVzITogQ2hlY2tib3hPcHRpb25bXTtcclxuICBzZWxlY3RlZFVzZXJJbmZvITogR3JvdXBVc2VySW5mbztcclxuICBjYW5TaG93TWVzc2FnZSA9IGZhbHNlO1xyXG4gIHJvc3RlckZ1bmN0aW9uVHlwZSE6IFJvc3RlckZ1bmN0aW9uVHlwZTtcclxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tZW1wdHktZnVuY3Rpb24sIG5vLXVudXNlZC12YXJzXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnNcclxuICAgIHByaXZhdGUgaHR0cFNlcnZpY2U6IEh0dHBTZXJ2aWNlLFxyXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXHJcbiAgICBwdWJsaWMgYWxlcnRTZXJ2aWNlOiBBbGVydHNTZXJ2aWNlIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1lbXB0eS1mdW5jdGlvblxyXG4gICkge31cclxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gIHNldEFwcENvbmZpZyhhcGlCYXNlVXJsOiBzdHJpbmcsIHVzZXJQZXJtaXNzaW9uOiBhbnkpIHtcclxuICAgIHRoaXMuYXBpQmFzZVVybCA9IGFwaUJhc2VVcmw7XHJcbiAgICB0aGlzLnVzZXJQZXJtaXNzaW9uID0gdXNlclBlcm1pc3Npb247XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIEdldHMgYXBwbGljYXRpb24gZ3JvdXAgdHlwZXMgZnJvbSBBUEkgYW5kIHJldHVybnMgaXQgYXMgYW4gb2JzZXJ2YWJsZS5cclxuICAgKiBAcmV0dXJuIHtPYnNlcnZhYmxlPEdyb3VwVHlwZVJlc3BvbnNlPn0gLUl0IHJldHVybnMgZ3JvdXAgdHlwZXMgaWYgc3VjY2VzcyBlbHNlIGVycm9yLlxyXG4gICAqIEBtZW1iZXJvZiBHcm91cHNTZXJ2aWNlXHJcbiAgICovXHJcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICBnZXRHcm91cFR5cGVzKCk6IE9ic2VydmFibGU8R3JvdXBUeXBlUmVzcG9uc2U+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHBTZXJ2aWNlXHJcbiAgICAgIC5nZXREYXRhKGAke3RoaXMuYXBpQmFzZVVybH0vY29uZmlndXJhdGlvbnMvZ3JvdXBfdHlwZWApXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIG1hcCgocmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgIHJldHVybiByZXNwb25zZTtcclxuICAgICAgICB9KSxcclxuICAgICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4ge1xyXG4gICAgICAgICAgdGhyb3cgZXJyb3I7XHJcbiAgICAgICAgfSlcclxuICAgICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHVybnMgYWxsIHRoZSBncm91cHMgYmFzZWQgb24gcGFzc2VkIGdyb3VwIElkIGFuZCBncm91cCB0eXBlLlxyXG4gICAqIEBwYXJhbSB7R2V0R3JvdXBzUGF5bG9hZH0gZ2V0R3JvdXBzUGF5bG9hZFxyXG4gICAqIEByZXR1cm4ge09ic2VydmFibGU8R2V0R3JvdXBSZXNwb25zZT59XHJcbiAgICogQG1lbWJlcm9mIEdyb3Vwc1NlcnZpY2VcclxuICAgKi9cclxuICBnZXRHcm91cHMoZ2V0R3JvdXBzUGF5bG9hZDogR2V0R3JvdXBzUGF5bG9hZCk6IE9ic2VydmFibGU8R2V0R3JvdXBSZXNwb25zZT4ge1xyXG4gICAgbGV0IHVybCA9ICdyb290R3JvdXBzJztcclxuICAgIGlmIChnZXRHcm91cHNQYXlsb2FkLmdyb3VwSWQpXHJcbiAgICAgIHVybCA9ICdpbW1DaGlsZEdyb3Vwc0J5R3JvdXBJZC8nICsgZ2V0R3JvdXBzUGF5bG9hZC5ncm91cElkO1xyXG4gICAgZWxzZSBpZiAoZ2V0R3JvdXBzUGF5bG9hZC5ncm91cFR5cGVJZClcclxuICAgICAgdXJsID0gJ2dyb3Vwc0J5R3JvdXBUeXBlLycgKyBnZXRHcm91cHNQYXlsb2FkLmdyb3VwVHlwZUlkO1xyXG5cclxuICAgIHJldHVybiB0aGlzLmh0dHBTZXJ2aWNlLmdldERhdGEoYCR7dGhpcy5hcGlCYXNlVXJsfS9ncm91cHMvJHt1cmx9YCkucGlwZShcclxuICAgICAgbWFwKChyZXNwb25zZSkgPT4ge1xyXG4gICAgICAgIHJldHVybiByZXNwb25zZTtcclxuICAgICAgfSksXHJcbiAgICAgIGNhdGNoRXJyb3IoKGVycm9yUmVzKSA9PiB7XHJcbiAgICAgICAgdGhyb3cgZXJyb3JSZXM7XHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBEZWxldGVzIGEgZ3JvdXAgYmFzZWQgb24gdGhlIHByb3ZpZGVkIGluZm9ybWF0aW9uXHJcbiAgICogQHBhcmFtIHtncm91cElkfSBzdHJpbmcgLWdyb3VwSWQgb2YgdGhlIGdyb3VwIHdoaWNoIGlzIHRvIGJlIGRlbGV0ZWRcclxuICAgKiBAcmV0dXJuIHsqfSAge09ic2VydmFibGU8YW55Pn0gLU9ic2VydmFibGUgcmVwcmVzZW50aW5nIHRoZSBncm91cCBkZWxldGlvbiByZXNwb25zZVxyXG4gICAqIEBtZW1iZXJvZiBHcm91cHNTZXJ2aWNlXHJcbiAgICovXHJcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICBkZWxldGVHcm91cChkZWxldGVHcm91cFBheWxvYWQ6IERlbGV0ZUdyb3VwUGF5bG9hZCk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwU2VydmljZVxyXG4gICAgICAucHV0RGF0YShgJHt0aGlzLmFwaUJhc2VVcmx9L2dyb3Vwcy9kZWxldGVgLCBkZWxldGVHcm91cFBheWxvYWQpXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIG1hcCgocmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgIHJldHVybiByZXNwb25zZTtcclxuICAgICAgICB9KSxcclxuICAgICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4ge1xyXG4gICAgICAgICAgdGhyb3cgZXJyb3I7XHJcbiAgICAgICAgfSlcclxuICAgICAgKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogRGVsZXRlcyBhIHVzZXIgZnJvbSBncm91cCBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgaW5mb3JtYXRpb25cclxuICAgKiBAcGFyYW0ge2dyb3VwSWR9IHN0cmluZyAtZ3JvdXBJZCBvZiB0aGUgc2VsZWN0ZWQgZ3JvdXAgZnJvbSB3aGVyZSBzZWxlY3RlZCB1c2VyIHRvIGJlIGRlbGV0ZWQuXHJcbiAgICogQHBhcmFtIHt1c2VySWR9IEFycmF5IC11c2VyIGlkcyBvZiBzZWxlY3RlZCB1c2VycyB3aG8gYXJlIGRlbGV0ZWQgZnJvbSB0aGUgc2VsZWN0ZWQgZ3JvdXBcclxuICAgKiBAcmV0dXJuIHsqfSAge09ic2VydmFibGU8YW55Pn0gLU9ic2VydmFibGUgcmVwcmVzZW50aW5nIHRoZSBncm91cCBkZWxldGlvbiByZXNwb25zZVxyXG4gICAqIEBtZW1iZXJvZiBHcm91cHNTZXJ2aWNlXHJcbiAgICovXHJcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICBkZWxldGVVc2Vyc0dyb3VwKFxyXG4gICAgZGVsZXRlVXNlckdyb3VwUGF5bG9hZDogRGVsZXRlVXNlckdyb3VwUGF5bG9hZFxyXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHBTZXJ2aWNlXHJcbiAgICAgIC5wdXREYXRhKFxyXG4gICAgICAgIGAke3RoaXMuYXBpQmFzZVVybH0vZ3JvdXBzL3Jvc3Rlci9kZWxldGVHcm91cFVzZXJzYCxcclxuICAgICAgICBkZWxldGVVc2VyR3JvdXBQYXlsb2FkXHJcbiAgICAgIClcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgbWFwKChyZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIHJlc3BvbnNlO1xyXG4gICAgICAgIH0pLFxyXG4gICAgICAgIGNhdGNoRXJyb3IoKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICB0aHJvdyBlcnJvcjtcclxuICAgICAgICB9KVxyXG4gICAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUG9zdHMgY3JlYXRlIGdyb3VwIGZvcm0gZGF0YSB0byBzZXJ2ZXIgdXNpbmcgSHR0cFNlcnZpY2UgZm9yIGNyZWF0aW5nIG5ldyBncm91cC5cclxuICAgKiBAcGFyYW0ge0NyZWF0ZUdyb3VwUGF5bG9hZH0gY3JlYXRlR3JvdXBQYXlsb2FkIC1jcmVhdGUgZ3JvdXAgZm9ybSBkYXRhIHdoaWNoIGluY2x1ZGVzIGdyb3VwIG5hbWUsIHR5cGUsIHNob3J0IG5hbWUsIHNjb3BlLlxyXG4gICAqIEByZXR1cm4ge09ic2VydmFibGU8Q3JlYXRlR3JvdXBSZXNwb25zZT59IC1yZXR1cm5zIGNyZWF0ZSBncm91cCBBUEkgcmVzcG9uc2UgKHN1Y2Nlc3Mgb3IgZXJyb3IpIGFzIGFuIG9ic2VydmFibGUuXHJcbiAgICogQG1lbWJlcm9mIEdyb3Vwc1NlcnZpY2VcclxuICAgKi9cclxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gIGNyZWF0ZUdyb3VwKFxyXG4gICAgY3JlYXRlR3JvdXBQYXlsb2FkOiBDcmVhdGVHcm91cFBheWxvYWRcclxuICApOiBPYnNlcnZhYmxlPENyZWF0ZUdyb3VwUmVzcG9uc2U+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHBTZXJ2aWNlXHJcbiAgICAgIC5wb3N0RGF0YShgJHt0aGlzLmFwaUJhc2VVcmx9L2dyb3Vwcy9jcmVhdGVgLCBjcmVhdGVHcm91cFBheWxvYWQpXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIG1hcCgocmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgIHJldHVybiByZXNwb25zZTtcclxuICAgICAgICB9KSxcclxuICAgICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4ge1xyXG4gICAgICAgICAgdGhyb3cgZXJyb3I7XHJcbiAgICAgICAgfSlcclxuICAgICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFVwZGF0ZXMgZ3JvdXAgZm9ybSBkYXRhIHRvIHNlcnZlciB1c2luZyBIdHRwU2VydmljZS5cclxuICAgKiBAcGFyYW0ge0VkaXRHcm91cFBheWxvYWR9IGVkaXRHcm91cFBheWxvYWQgLWVkaXQgZ3JvdXAgZm9ybSBkYXRhIHdoaWNoIGluY2x1ZGVzIGdyb3VwIG5hbWUsIHNob3J0IG5hbWUsIHNjb3BlLlxyXG4gICAqIEByZXR1cm4ge09ic2VydmFibGU8RWRpdEdyb3VwUGF5bG9hZD59IC1yZXR1cm5zIGVkaXQgZ3JvdXAgQVBJIHJlc3BvbnNlIChzdWNjZXNzIG9yIGVycm9yKSBhcyBhbiBvYnNlcnZhYmxlLlxyXG4gICAqIEBtZW1iZXJvZiBHcm91cHNTZXJ2aWNlXHJcbiAgICovXHJcbiAgZWRpdEdyb3VwKFxyXG4gICAgZWRpdEdyb3VwUGF5bG9hZDogRWRpdEdyb3VwUGF5bG9hZFxyXG4gICk6IE9ic2VydmFibGU8Q3JlYXRlR3JvdXBSZXNwb25zZT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cFNlcnZpY2VcclxuICAgICAgLnB1dERhdGEoYCR7dGhpcy5hcGlCYXNlVXJsfS9ncm91cHMvZWRpdGAsIGVkaXRHcm91cFBheWxvYWQpXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIG1hcCgocmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgIHJldHVybiByZXNwb25zZTtcclxuICAgICAgICB9KSxcclxuICAgICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4ge1xyXG4gICAgICAgICAgdGhyb3cgZXJyb3I7XHJcbiAgICAgICAgfSlcclxuICAgICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFRoaXMgbWV0aG9kIHdpbGwgcGFyc2UgdGhlIGVycm9yIGNvZGVzIGFuZCByZXR1cm4gdGhlIHJlc3BlY3RpdmUgZXJyb3IgbWVzc2FnZSBmb3IgZWFjaCBjb2RlLlxyXG4gICAqIEBwYXJhbSB7c3RyaW5nW119IGVycm9yQ29kZXNcclxuICAgKiBAcmV0dXJuIHtzdHJpbmdbXX0gZXJyb3JNZXNzYWdlXHJcbiAgICogQG1lbWJlcm9mIEdyb3Vwc1NlcnZpY2VcclxuICAgKi9cclxuICBwYXJzZUVycm9yTWVzc2FnZShlcnJvckNvZGVzOiBzdHJpbmdbXSkge1xyXG4gICAgY29uc3QgZXJyb3JNZXNzYWdlOiBzdHJpbmdbXSA9IFtdO1xyXG4gICAgZXJyb3JDb2Rlcz8uZm9yRWFjaCgoaXRlbTogc3RyaW5nLCBpbmRleDogbnVtYmVyKSA9PiB7XHJcbiAgICAgIGNvbnN0IGVycm9yTWVzc2FnZUtleSA9IGVycm9yQ29kZXNbaW5kZXhdIGFzIGtleW9mIHR5cGVvZiB0aGlzLmdyb3Vwc1RleHQ7XHJcbiAgICAgIGVycm9yTWVzc2FnZS5wdXNoKHRoaXMuZ3JvdXBzVGV4dFtlcnJvck1lc3NhZ2VLZXldKTtcclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIGVycm9yTWVzc2FnZTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNldHMgc2VsZWN0ZWQgZ3JvdXAgaW5mby5cclxuICAgKiBAcGFyYW0geyhHcm91cEluZm8gfCB1bmRlZmluZWQpfSBzZWxlY3RlZEdyb3VwSW5mbyAtc2VsZWN0ZWQgZ3JvdXAgaW5mby5cclxuICAgKiBAcGFyYW0geyhHcm91cEluZm8gfCB1bmRlZmluZWQpfSBbc2VsZWN0ZWRHcm91cFBhcmVudEluZm9dIC1zZWxlY3RlZCBwYXJlbnQgZ3JvdXAgaW5mby5cclxuICAgKiBAbWVtYmVyb2YgR3JvdXBzU2VydmljZVxyXG4gICAqL1xyXG4gIHNldFNlbGVjdGVkR3JvdXBJbmZvKFxyXG4gICAgc2VsZWN0ZWRHcm91cEluZm86IEdyb3VwSW5mbyB8IHVuZGVmaW5lZCxcclxuICAgIHNlbGVjdGVkR3JvdXBQYXJlbnRJbmZvPzogR3JvdXBJbmZvIHwgdW5kZWZpbmVkXHJcbiAgKSB7XHJcbiAgICB0aGlzLnNlbGVjdGVkR3JvdXBJbmZvID0gc2VsZWN0ZWRHcm91cEluZm87XHJcbiAgICB0aGlzLnNlbGVjdGVkR3JvdXBQYXJlbnRJbmZvID0gc2VsZWN0ZWRHcm91cFBhcmVudEluZm87XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXR1cm5zIHRoZSBzZWxlY3RlZCBncm91cCBpbmZvLlxyXG4gICAqIEByZXR1cm4geyhHcm91cEluZm8gfCB1bmRlZmluZWQpfSAtZ3JvdXAgaW5mby5cclxuICAgKiBAbWVtYmVyb2YgR3JvdXBzU2VydmljZVxyXG4gICAqL1xyXG4gIGdldFNlbGVjdGVkR3JvdXBJbmZvKCk6IEdyb3VwSW5mbyB8IHVuZGVmaW5lZCB7XHJcbiAgICByZXR1cm4gdGhpcy5zZWxlY3RlZEdyb3VwSW5mbztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHVybnMgdGhlIHNlbGVjdGVkIGdyb3VwIHBhcmVudCBncm91cCBpbmZvLlxyXG4gICAqIEByZXR1cm4geyhHcm91cEluZm8gfCB1bmRlZmluZWQpfSAtZ3JvdXAgaW5mby5cclxuICAgKiBAbWVtYmVyb2YgR3JvdXBzU2VydmljZVxyXG4gICAqL1xyXG4gIGdldFNlbGVjdGVkR3JvdXBQYXJlbnRJbmZvKCk6IEdyb3VwSW5mbyB8IHVuZGVmaW5lZCB7XHJcbiAgICByZXR1cm4gdGhpcy5zZWxlY3RlZEdyb3VwUGFyZW50SW5mbztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNldHMgZ3JvdXAgZnVuY3Rpb24gdHlwZS5cclxuICAgKiBAcGFyYW0ge0dyb3VwRnVuY3Rpb25UeXBlfSBncm91cEZ1bmN0aW9uVHlwZSAtZ3JvdXAgZnVuY3Rpb24gdHlwZS5cclxuICAgKiBAbWVtYmVyb2YgR3JvdXBzU2VydmljZVxyXG4gICAqL1xyXG4gIHNldEdyb3VwRnVuY3Rpb25UeXBlKGdyb3VwRnVuY3Rpb25UeXBlOiBHcm91cEZ1bmN0aW9uVHlwZSk6IHZvaWQge1xyXG4gICAgdGhpcy5ncm91cEZ1bmN0aW9uVHlwZSA9IGdyb3VwRnVuY3Rpb25UeXBlO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0dXJucyBncm91cCBmdW5jdGlvbiB0eXBlLlxyXG4gICAqIEByZXR1cm4ge0dyb3VwRnVuY3Rpb25UeXBlfSAtZ3JvdXAgZnVuY3Rpb24gdHlwZS5cclxuICAgKiBAbWVtYmVyb2YgR3JvdXBzU2VydmljZVxyXG4gICAqL1xyXG4gIGdldEdyb3VwRnVuY3Rpb25UeXBlKCk6IEdyb3VwRnVuY3Rpb25UeXBlIHtcclxuICAgIHJldHVybiB0aGlzLmdyb3VwRnVuY3Rpb25UeXBlO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0cyB0aGUgZ3JvdXAgdXNlcnMgZm9yIHRoZSBnaXZlbiBncm91cCBpZC5cclxuICAgKiBAcGFyYW0ge3N0cmluZ30gZ3JvdXBJZFxyXG4gICAqIEByZXR1cm4ge09ic2VydmFibGU8R2V0R3JvdXBVc2Vyc1Jlc3BvbnNlPn1cclxuICAgKiBAbWVtYmVyb2YgR3JvdXBzU2VydmljZVxyXG4gICAqL1xyXG4gIGdldEdyb3VwVXNlcnMoZ3JvdXBJZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxHZXRHcm91cFVzZXJzUmVzcG9uc2U+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHBTZXJ2aWNlXHJcbiAgICAgIC5nZXREYXRhKGAke3RoaXMuYXBpQmFzZVVybH0vZ3JvdXBzL3Jvc3Rlci8ke2dyb3VwSWR9YClcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgbWFwKChyZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIHJlc3BvbnNlO1xyXG4gICAgICAgIH0pLFxyXG4gICAgICAgIGNhdGNoRXJyb3IoKGVycm9yUmVzKSA9PiB7XHJcbiAgICAgICAgICB0aHJvdyBlcnJvclJlcztcclxuICAgICAgICB9KVxyXG4gICAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0cyB0aGUgZ3JvdXAgdXNlcnMgYmFzZWQgb24gdGhlIGZpbHRlcmVkIHJvbGVzLlxyXG4gICAqIEBwYXJhbSB7RmlsdGVyVXNlcnNCeVJvbGVzUGF5bG9hZH0gcGF5bG9hZFxyXG4gICAqIEByZXR1cm4ge09ic2VydmFibGU8R2V0R3JvdXBVc2Vyc1Jlc3BvbnNlPn1cclxuICAgKiBAbWVtYmVyb2YgR3JvdXBzU2VydmljZVxyXG4gICAqL1xyXG4gIGdldEdyb3VwVXNlcnNCeVJvbGVzKFxyXG4gICAgcGF5bG9hZDogRmlsdGVyVXNlcnNCeVJvbGVzUGF5bG9hZFxyXG4gICk6IE9ic2VydmFibGU8R2V0R3JvdXBVc2Vyc1Jlc3BvbnNlPiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwU2VydmljZVxyXG4gICAgICAucG9zdERhdGEoYCR7dGhpcy5hcGlCYXNlVXJsfS9ncm91cHMvcm9zdGVyL2dyb3VwVXNlcnNCeVJvbGVgLCBwYXlsb2FkKVxyXG4gICAgICAucGlwZShcclxuICAgICAgICBtYXAoKHJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gcmVzcG9uc2U7XHJcbiAgICAgICAgfSksXHJcbiAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3JSZXMpID0+IHtcclxuICAgICAgICAgIHRocm93IGVycm9yUmVzO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHZXRzIHRoZSBncm91cCB1c2VycyBiYXNlZCBvbiBzZWFyY2hlZCBuYW1lIG9yIGVtYWlsXHJcbiAgICogQHBhcmFtIHtTZWFyY2hVc2Vyc1BheWxvYWR9IHBheWxvYWRcclxuICAgKiBAcmV0dXJuIHtPYnNlcnZhYmxlPEdldEdyb3VwVXNlcnNSZXNwb25zZT59XHJcbiAgICogQG1lbWJlcm9mIEdyb3Vwc1NlcnZpY2VcclxuICAgKi9cclxuICBzZWFyY2hHcm91cFVzZXJzKFxyXG4gICAgcGF5bG9hZDogU2VhcmNoVXNlcnNQYXlsb2FkXHJcbiAgKTogT2JzZXJ2YWJsZTxHZXRHcm91cFVzZXJzUmVzcG9uc2U+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHBTZXJ2aWNlXHJcbiAgICAgIC5wb3N0RGF0YShcclxuICAgICAgICBgJHt0aGlzLmFwaUJhc2VVcmx9L2dyb3Vwcy9yb3N0ZXIvZ3JvdXBVc2Vyc0J5Um9sZUJ5TmFtZUJ5RW1haWxgLFxyXG4gICAgICAgIHBheWxvYWRcclxuICAgICAgKVxyXG4gICAgICAucGlwZShcclxuICAgICAgICBtYXAoKHJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gcmVzcG9uc2U7XHJcbiAgICAgICAgfSksXHJcbiAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3JSZXMpID0+IHtcclxuICAgICAgICAgIHRocm93IGVycm9yUmVzO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHZXRzIHRoZSBncm91cCByb2xlcyBiYXNlZCBvbiB0aGUgZ3JvdXAgdHlwZS5cclxuICAgKiBAcGFyYW0ge3N0cmluZ30gZ3JvdXBUeXBlSWRcclxuICAgKiBAcmV0dXJuIHtPYnNlcnZhYmxlPENoZWNrYm94T3B0aW9uW10+fVxyXG4gICAqIEBtZW1iZXJvZiBHcm91cHNTZXJ2aWNlXHJcbiAgICovXHJcbiAgZ2V0R3JvdXBUeXBlUm9sZXMoZ3JvdXBUeXBlSWQ6IHN0cmluZyk6IE9ic2VydmFibGU8Q2hlY2tib3hPcHRpb25bXT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cFNlcnZpY2VcclxuICAgICAgLmdldERhdGEoXHJcbiAgICAgICAgYCR7dGhpcy5hcGlCYXNlVXJsfS9ncm91cHMvY29uZmlnL3JvbGVzQnlHcm91cFR5cGUvJHtncm91cFR5cGVJZH1gXHJcbiAgICAgIClcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgbWFwKChyZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgY29uc3Qgcm9sZXNPcHRpb246IENoZWNrYm94T3B0aW9uW10gPSBbXTtcclxuICAgICAgICAgIHJlc3BvbnNlPy5ib2R5Py5mb3JFYWNoKChyb2xlOiBSb2xlKSA9PiB7XHJcbiAgICAgICAgICAgIHJvbGVzT3B0aW9uLnB1c2goe1xyXG4gICAgICAgICAgICAgIGlkOiByb2xlLnJvbGVJZCxcclxuICAgICAgICAgICAgICBuYW1lOiByb2xlLnJvbGVOYW1lLFxyXG4gICAgICAgICAgICAgIGRpc2FibGVkOiBmYWxzZSxcclxuICAgICAgICAgICAgICBjaGVja2VkOiBmYWxzZSxcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIHRoaXMuc2V0R3JvdXBUeXBlVXNlclJvbGVzKHJvbGVzT3B0aW9uKTtcclxuICAgICAgICAgIHJldHVybiByb2xlc09wdGlvbjtcclxuICAgICAgICB9KSxcclxuICAgICAgICBjYXRjaEVycm9yKChlcnJvclJlcykgPT4ge1xyXG4gICAgICAgICAgdGhyb3cgZXJyb3JSZXM7XHJcbiAgICAgICAgfSlcclxuICAgICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENvbmNhdGVuYXRlcyB0aGUgZ3JvdXAgdXNlcnMgYXNzaWduZWQgcm9sZXMgbmFtZSBzZXBhcmF0ZWQgYnkgY29tbWEgYXMgc3RyaW5nIGFuZCByZXR1cm5zIHRoZSBncm91cCB1c2VycyBpbiBhbiBhcnJheS5cclxuICAgKiBAcGFyYW0ge0dldEdyb3VwVXNlcnNSZXNwb25zZX0gcmVzcG9uc2VcclxuICAgKiBAcmV0dXJuIHtVc2VyW119XHJcbiAgICogQG1lbWJlcm9mIEdyb3Vwc1NlcnZpY2VcclxuICAgKi9cclxuICB0cmFuc2Zvcm1Vc2VyUm9sZXNOYW1lQXNTdHJpbmcocmVzcG9uc2U6IEdldEdyb3VwVXNlcnNSZXNwb25zZSk6IFVzZXJbXSB7XHJcbiAgICBjb25zdCB1c2VyczogVXNlcltdID0gW107XHJcbiAgICByZXNwb25zZT8uYm9keT8uZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICBjb25zdCByb2xlczogc3RyaW5nW10gPSBbXTtcclxuICAgICAgaXRlbT8ucm9sZXNMaXN0Py5mb3JFYWNoKChyb2xlKSA9PiByb2xlcy5wdXNoKHJvbGU/LnJvbGVOYW1lKSk7XHJcbiAgICAgIHVzZXJzLnB1c2goe1xyXG4gICAgICAgIHVzZXJJZDogaXRlbS51c2VySWQsXHJcbiAgICAgICAgbmFtZTogaXRlbS5uYW1lLFxyXG4gICAgICAgIGVtYWlsOiBpdGVtLmVtYWlsLFxyXG4gICAgICAgIHJvbGU6IHJvbGVzLmpvaW4oJywgJyksXHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gdXNlcnM7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIFJldHVybnMgZm9ybWF0dGVkIGdyb3VwIHR5cGVzLlxyXG4gICAqIEBwYXJhbSB7R3JvdXBUeXBlQ29uZmlndXJhdGlvbltdfSBncm91cFR5cGVSZXNwb25zZVxyXG4gICAqIEByZXR1cm4ge0dyb3VwVHlwZUNvbmZpZ1ZhbHVlfVxyXG4gICAqIEBtZW1iZXJvZiBHcm91cHNTZXJ2aWNlXHJcbiAgICovXHJcbiAgZ2V0Rm9ybWF0dGVkR3JvdXBUeXBlcyhcclxuICAgIGdyb3VwVHlwZVJlc3BvbnNlOiBHcm91cFR5cGVDb25maWd1cmF0aW9uW11cclxuICApOiBHcm91cFR5cGVDb25maWdWYWx1ZSB7XHJcbiAgICBjb25zdCBncm91cFR5cGVzOiBHcm91cFR5cGVDb25maWdWYWx1ZSA9IHt9O1xyXG4gICAgZ3JvdXBUeXBlUmVzcG9uc2UuZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICBncm91cFR5cGVzW2l0ZW0uY29uZmlnRmllbGRJZF0gPSBpdGVtLmNvbmZpZ0ZpZWxkVmFsdWU7XHJcbiAgICB9KTtcclxuICAgIHJldHVybiBncm91cFR5cGVzO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0dXJucyBncm91cCB1c2VyIGRldGFpbHMgaWYgZW1haWwgaXMgZm91bmQsIGVsc2UgdGhyb3dzIGVycm9yLlxyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBlbWFpbFxyXG4gICAqIEByZXR1cm4ge09ic2VydmFibGU8U2VhcmNoVXNlckJ5RW1haWxSZXNwb25zZT59XHJcbiAgICogQG1lbWJlcm9mIEdyb3Vwc1NlcnZpY2VcclxuICAgKi9cclxuICBnZXRVc2VyQnlFbWFpbChlbWFpbDogc3RyaW5nKTogT2JzZXJ2YWJsZTxTZWFyY2hVc2VyQnlFbWFpbFJlc3BvbnNlPiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwU2VydmljZVxyXG4gICAgICAuZ2V0RGF0YShgJHt0aGlzLmFwaUJhc2VVcmx9L2dyb3Vwcy91c2Vycy91c2VyQnlFbWFpbC8ke2VtYWlsfWApXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIG1hcCgocmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgIHJldHVybiByZXNwb25zZTtcclxuICAgICAgICB9KSxcclxuICAgICAgICBjYXRjaEVycm9yKChlcnJvclJlcykgPT4ge1xyXG4gICAgICAgICAgdGhyb3cgZXJyb3JSZXM7XHJcbiAgICAgICAgfSlcclxuICAgICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldHMgdGhlIHVzZXIgZGV0YWlscyBmb3IgdGhlIHNlbGVjdGVkIGdyb3VwXHJcbiAgICogQHBhcmFtIHtHZXRVc2VyRGV0YWlsc1BheWxvYWR9IHBheWxvYWRcclxuICAgKiBAcmV0dXJuIHtPYnNlcnZhYmxlPEFkZE9yRWRpdEdyb3VwVXNlckRldGFpbHNSZXNwb25zZT59XHJcbiAgICogQG1lbWJlcm9mIEdyb3Vwc1NlcnZpY2VcclxuICAgKi9cclxuICBnZXRHcm91cFVzZXJEZXRhaWxzKFxyXG4gICAgcGF5bG9hZDogR2V0VXNlckRldGFpbHNQYXlsb2FkXHJcbiAgKTogT2JzZXJ2YWJsZTxBZGRPckVkaXRHcm91cFVzZXJEZXRhaWxzUmVzcG9uc2U+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHBTZXJ2aWNlXHJcbiAgICAgIC5wb3N0RGF0YShgJHt0aGlzLmFwaUJhc2VVcmx9L2dyb3Vwcy9yb3N0ZXIvdXNlckRldGFpbHNgLCBwYXlsb2FkKVxyXG4gICAgICAucGlwZShcclxuICAgICAgICBtYXAoKHJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gcmVzcG9uc2U7XHJcbiAgICAgICAgfSksXHJcbiAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3IpID0+IHtcclxuICAgICAgICAgIHRocm93IGVycm9yO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBQb3N0cyBhZGQgbmV3IHVzZXIgZm9ybSBkYXRhIHRvIHRoZSBBUEkgZm9yIHRoZSBzZWxlY3RlZCBncm91cCBhbmQgcmV0dXJucyB0aGUgc3VjY2VzcyBvciBmYWlsdXJlIHJlc3BvbnNlLlxyXG4gICAqIEBwYXJhbSB7QWRkT3JFZGl0VXNlclBheWxvYWR9IEFkZE9yRWRpdFVzZXJQYXlsb2FkXHJcbiAgICogQHJldHVybiB7T2JzZXJ2YWJsZTxBZGRPckVkaXRHcm91cFVzZXJEZXRhaWxzUmVzcG9uc2U+fVxyXG4gICAqIEBtZW1iZXJvZiBHcm91cHNTZXJ2aWNlXHJcbiAgICovXHJcbiAgYWRkTmV3R3JvdXBVc2VyKFxyXG4gICAgQWRkT3JFZGl0VXNlclBheWxvYWQ6IEFkZE9yRWRpdFVzZXJQYXlsb2FkXHJcbiAgKTogT2JzZXJ2YWJsZTxBZGRPckVkaXRHcm91cFVzZXJEZXRhaWxzUmVzcG9uc2U+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHBTZXJ2aWNlXHJcbiAgICAgIC5wb3N0RGF0YShcclxuICAgICAgICBgJHt0aGlzLmFwaUJhc2VVcmx9L2dyb3Vwcy9yb3N0ZXIvY3JlYXRlR3JvdXBVc2VyUm9sZWAsXHJcbiAgICAgICAgQWRkT3JFZGl0VXNlclBheWxvYWRcclxuICAgICAgKVxyXG4gICAgICAucGlwZShcclxuICAgICAgICBtYXAoKHJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gcmVzcG9uc2U7XHJcbiAgICAgICAgfSksXHJcbiAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3IpID0+IHtcclxuICAgICAgICAgIHRocm93IGVycm9yO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTZXRzIHRoZSBsb2FkZWQgZ3JvdXAgdHlwZSB1c2VyIHJvbGVzXHJcbiAgICogQHBhcmFtIHtDaGVja2JveE9wdGlvbltdfSB1c2VyUm9sZXNcclxuICAgKiBAbWVtYmVyb2YgR3JvdXBzU2VydmljZVxyXG4gICAqL1xyXG4gIHNldEdyb3VwVHlwZVVzZXJSb2xlcyh1c2VyUm9sZXM6IENoZWNrYm94T3B0aW9uW10pOiB2b2lkIHtcclxuICAgIHRoaXMuZ3JvdXBUeXBlUm9sZXMgPSB1c2VyUm9sZXM7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXR1cm5zIHRoZSBncm91cCB0eXBlIHVzZXIgcm9sZXMuXHJcbiAgICogQHJldHVybiB7Q2hlY2tib3hPcHRpb25bXX1cclxuICAgKiBAbWVtYmVyb2YgR3JvdXBzU2VydmljZVxyXG4gICAqL1xyXG4gIGdldEdyb3VwVHlwZVVzZXJSb2xlcygpOiBDaGVja2JveE9wdGlvbltdIHtcclxuICAgIHRoaXMuZ3JvdXBUeXBlUm9sZXM/Lm1hcCgob3B0aW9uKSA9PiAob3B0aW9uLmNoZWNrZWQgPSBmYWxzZSkpO1xyXG4gICAgcmV0dXJuIHRoaXMuZ3JvdXBUeXBlUm9sZXM7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTZXRzIHRoZSBzZWxlY3RlZCB1c2VyIGluZm8uXHJcbiAgICogQHBhcmFtIHtHcm91cFVzZXJJbmZvfSB1c2VySW5mb1xyXG4gICAqIEBtZW1iZXJvZiBHcm91cHNTZXJ2aWNlXHJcbiAgICovXHJcbiAgc2V0U2VsZWN0ZWRVc2VySW5mbyh1c2VySW5mbzogR3JvdXBVc2VySW5mbyk6IHZvaWQge1xyXG4gICAgdGhpcy5zZWxlY3RlZFVzZXJJbmZvID0gdXNlckluZm87XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXR1cm5zIHNlbGVjdGVkIHVzZXIgaW5mby5cclxuICAgKiBAcmV0dXJuIHtHcm91cFVzZXJJbmZvfVxyXG4gICAqIEBtZW1iZXJvZiBHcm91cHNTZXJ2aWNlXHJcbiAgICovXHJcbiAgZ2V0U2VsZWN0ZWRVc2VySW5mbygpOiBHcm91cFVzZXJJbmZvIHtcclxuICAgIHJldHVybiB0aGlzLnNlbGVjdGVkVXNlckluZm87XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBVcGRhdGVzIGdyb3VwIHVzZXIgcm9sZXMgdG8gc2VydmVyIHVzaW5nIEh0dHBTZXJ2aWNlLlxyXG4gICAqIEBwYXJhbSB7QWRkT3JFZGl0VXNlclBheWxvYWR9IHBheWxvYWRcclxuICAgKiBAcmV0dXJuIHtPYnNlcnZhYmxlPEFkZE9yRWRpdEdyb3VwVXNlckRldGFpbHNSZXNwb25zZT59XHJcbiAgICogQG1lbWJlcm9mIEdyb3Vwc1NlcnZpY2VcclxuICAgKi9cclxuICBlZGl0R3JvdXBzVXNlclJvbGUoXHJcbiAgICBwYXlsb2FkOiBBZGRPckVkaXRVc2VyUGF5bG9hZFxyXG4gICk6IE9ic2VydmFibGU8QWRkT3JFZGl0R3JvdXBVc2VyRGV0YWlsc1Jlc3BvbnNlPiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwU2VydmljZVxyXG4gICAgICAucHV0RGF0YShgJHt0aGlzLmFwaUJhc2VVcmx9L2dyb3Vwcy9yb3N0ZXIvZWRpdEdyb3VwVXNlclJvbGVgLCBwYXlsb2FkKVxyXG4gICAgICAucGlwZShcclxuICAgICAgICBtYXAoKHJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gcmVzcG9uc2U7XHJcbiAgICAgICAgfSksXHJcbiAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3IpID0+IHtcclxuICAgICAgICAgIHRocm93IGVycm9yO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTZXRzIHJvc3RlciBmdW5jdGlvbiB0eXBlLlxyXG4gICAqIEBwYXJhbSB7Um9zdGVyRnVuY3Rpb25UeXBlfSByb3N0ZXJGdW5jdGlvblR5cGVcclxuICAgKiBAbWVtYmVyb2YgR3JvdXBzU2VydmljZVxyXG4gICAqL1xyXG4gIHNldFJvc3RlckZ1bmN0aW9uVHlwZShyb3N0ZXJGdW5jdGlvblR5cGU6IFJvc3RlckZ1bmN0aW9uVHlwZSk6IHZvaWQge1xyXG4gICAgdGhpcy5yb3N0ZXJGdW5jdGlvblR5cGUgPSByb3N0ZXJGdW5jdGlvblR5cGU7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXR1cm5zIHJvc3RlciBmdW5jdGlvbiB0eXBlLlxyXG4gICAqIEByZXR1cm4ge1Jvc3RlckZ1bmN0aW9uVHlwZX1cclxuICAgKiBAbWVtYmVyb2YgR3JvdXBzU2VydmljZVxyXG4gICAqL1xyXG4gIGdldFJvc3RlckZ1bmN0aW9uVHlwZSgpOiBSb3N0ZXJGdW5jdGlvblR5cGUge1xyXG4gICAgcmV0dXJuIHRoaXMucm9zdGVyRnVuY3Rpb25UeXBlO1xyXG4gIH1cclxufVxyXG4iXX0=
|
package/esm2022/public-api.mjs
CHANGED
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
*/
|
|
4
4
|
export * from './lib/components/create-group/create-group.component';
|
|
5
5
|
export * from './lib/components/tree-view/tree-view.component';
|
|
6
|
+
export * from './lib/components/edit-user-roles/edit-user-roles.component';
|
|
6
7
|
export * from './lib/groups.component';
|
|
7
8
|
export * from './lib/models/create-group.model';
|
|
8
9
|
export * from './lib/models/group-action.model';
|
|
@@ -13,7 +14,10 @@ export * from './lib/models/view-group.model';
|
|
|
13
14
|
export * from './lib/models/edit-group.model';
|
|
14
15
|
export * from './lib/models/form-status.model';
|
|
15
16
|
export * from './lib/models/delete-group.model';
|
|
17
|
+
export * from './lib/models/group-user-info.model';
|
|
18
|
+
export * from './lib/models/add-or-edit-user-group.model';
|
|
19
|
+
export * from './lib/models/roster-function-type.model';
|
|
16
20
|
export * from './lib/services/groups.service';
|
|
17
21
|
export * from './lib/assets/form-validations';
|
|
18
22
|
export * from './lib/groups.module';
|
|
19
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
23
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL2dyb3Vwcy9zcmMvcHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUNILGNBQWMsc0RBQXNELENBQUM7QUFDckUsY0FBYyxnREFBZ0QsQ0FBQztBQUMvRCxjQUFjLDREQUE0RCxDQUFDO0FBQzNFLGNBQWMsd0JBQXdCLENBQUM7QUFFdkMsY0FBYyxpQ0FBaUMsQ0FBQztBQUNoRCxjQUFjLGlDQUFpQyxDQUFDO0FBQ2hELGNBQWMsd0NBQXdDLENBQUM7QUFDdkQsY0FBYywrQkFBK0IsQ0FBQztBQUM5QyxjQUFjLGdDQUFnQyxDQUFDO0FBQy9DLGNBQWMsK0JBQStCLENBQUM7QUFDOUMsY0FBYywrQkFBK0IsQ0FBQztBQUM5QyxjQUFjLGdDQUFnQyxDQUFDO0FBQy9DLGNBQWMsaUNBQWlDLENBQUM7QUFDaEQsY0FBYyxvQ0FBb0MsQ0FBQztBQUNuRCxjQUFjLDJDQUEyQyxDQUFDO0FBQzFELGNBQWMseUNBQXlDLENBQUM7QUFFeEQsY0FBYywrQkFBK0IsQ0FBQztBQUU5QyxjQUFjLCtCQUErQixDQUFDO0FBRTlDLGNBQWMscUJBQXFCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxyXG4gKiBQdWJsaWMgQVBJIFN1cmZhY2Ugb2YgZ3JvdXBzXHJcbiAqL1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2NyZWF0ZS1ncm91cC9jcmVhdGUtZ3JvdXAuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy90cmVlLXZpZXcvdHJlZS12aWV3LmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvZWRpdC11c2VyLXJvbGVzL2VkaXQtdXNlci1yb2xlcy5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9ncm91cHMuY29tcG9uZW50JztcclxuXHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL21vZGVscy9jcmVhdGUtZ3JvdXAubW9kZWwnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9tb2RlbHMvZ3JvdXAtYWN0aW9uLm1vZGVsJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvbW9kZWxzL2dyb3VwLWZ1bmN0aW9uLXR5cGUubW9kZWwnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9tb2RlbHMvZ3JvdXAtaW5mby5tb2RlbCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL21vZGVscy9ncm91cC10eXBlcy5tb2RlbCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL21vZGVscy92aWV3LWdyb3VwLm1vZGVsJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvbW9kZWxzL2VkaXQtZ3JvdXAubW9kZWwnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9tb2RlbHMvZm9ybS1zdGF0dXMubW9kZWwnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9tb2RlbHMvZGVsZXRlLWdyb3VwLm1vZGVsJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvbW9kZWxzL2dyb3VwLXVzZXItaW5mby5tb2RlbCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL21vZGVscy9hZGQtb3ItZWRpdC11c2VyLWdyb3VwLm1vZGVsJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvbW9kZWxzL3Jvc3Rlci1mdW5jdGlvbi10eXBlLm1vZGVsJztcclxuXHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlcnZpY2VzL2dyb3Vwcy5zZXJ2aWNlJztcclxuXHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2Fzc2V0cy9mb3JtLXZhbGlkYXRpb25zJztcclxuXHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2dyb3Vwcy5tb2R1bGUnO1xyXG4iXX0=
|