@tiba-spark/client-shared-lib 26.2.0-336 → 26.2.0-341
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.
|
@@ -331,8 +331,10 @@ let GuestState = class GuestState {
|
|
|
331
331
|
const tableRows = [];
|
|
332
332
|
const guestWithBatchDtoList = guestsWrapper.data.entities;
|
|
333
333
|
guestWithBatchDtoList.forEach((guest) => {
|
|
334
|
+
// Mirrors the grid's Guest Type cell, which shows a "(Deleted) <type>" label for deleted guests
|
|
335
|
+
const guestType = this.translate.instant(ProfileTypeText[ProfileType[guest.mType]]);
|
|
334
336
|
tableRows.push([guest.name,
|
|
335
|
-
this.translate.instant(
|
|
337
|
+
guest.deleted ? `(${this.translate.instant(Localization.deleted_type)}) ${guestType}` : guestType,
|
|
336
338
|
guest.mobile,
|
|
337
339
|
guest.carPlate,
|
|
338
340
|
this.exportFileService.getDateFieldValue(action.fileType, guest, 'validFromDate'),
|
|
@@ -608,4 +610,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
608
610
|
}], ctorParameters: () => [{ type: i1.Store }, { type: i2.Rpc.GuestRpcServiceProxy }, { type: i3.TranslateService }, { type: i2.Rpc.BatchRpcServiceProxy }, { type: i4.MessageBarService }, { type: i5.CommandNotificationService }, { type: i3.TranslateService }, { type: i6.TenantService }, { type: i7.ExportFileService, decorators: [{
|
|
609
611
|
type: Optional
|
|
610
612
|
}] }, { type: i8.ParkerService }, { type: i9.AnalyticsService }], propDecorators: { onLoadGuestByIdAction: [], onClearGuestAction: [], onLoadGuestsAction: [], onSetGuestsAction: [], onClearGuestListAction: [], onCreateGuestAction: [], onCreateBatchAction: [], onCreateBasicBatchAction: [], onUpdateGuestAction: [], onUpdateGuestLocationAction: [], onDeleteGuestAction: [], onCreateBasicGuestAction: [], onUpdateBasicGuestAction: [], onSendEmailToGuestAction: [], onLoadGuestsByBatchId: [], onLoadGuestsByBatchIdCancelledAction: [], onExpandGuestsByBatchIdAction: [], onCollapsedGuestsByBatchIdAction: [], onLoadGuestProfilesAction: [], onClearGuestProfilesAction: [], onSendGuestPassesToEmail: [], onExportGuestsAction: [] } });
|
|
611
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3Vlc3Quc3RhdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jbGllbnQtc2hhcmVkLWxpYi9zcmMvbGlicmFyaWVzL21vZHVsZXMvZ3Vlc3QvZ3Vlc3Quc3RhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVyRCxPQUFPLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQXVCLE1BQU0sYUFBYSxDQUFDO0FBRTNFLE9BQU8sRUFBRSxJQUFJLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFDeEMsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBR3JDLE9BQU8sRUFBNkIsOEJBQThCLEVBQUUsTUFBTSxnRkFBZ0YsQ0FBQztBQUUzSixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxtREFBbUQsQ0FBQztBQUN0RixPQUFPLEVBQUUsWUFBWSxFQUFFLGVBQWUsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUM1RCxPQUFPLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUl0RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsVUFBVSxFQUFFLG9CQUFvQixFQUFFLHFCQUFxQixFQUFFLHFCQUFxQixFQUFFLFlBQVksRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUM5SSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUVqRixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFM0QsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3hELE9BQU8sRUFD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LE1BbUNuQix3QkFBd0IsTUFtQ3hCLG1CQUFtQixNQStCbkIsMkJBQTJCLE1BZTNCLG1CQUFtQixNQXFCbkIsd0JBQXdCLE1BeUJ4Qix3QkFBd0IsTUFjeEIsd0JBQXdCLE1BUXhCLHFCQUFxQixNQVFyQixvQ0FBb0MsTUFnQnBDLDZCQUE2QixNQUs3QixnQ0FBZ0MsTUFZaEMseUJBQXlCLE1BcUJ6QiwwQkFBMEIsTUFPMUIsd0JBQXdCLE1BZXhCLG9CQUFvQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERhdGVQaXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEluamVjdGFibGUsIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBBY3Rpb24sIFNlbGVjdG9yLCBTdGF0ZSwgU3RhdGVDb250ZXh0LCBTdG9yZSB9IGZyb20gJ0BuZ3hzL3N0b3JlJztcbmltcG9ydCB7IE1vbWVudCB9IGZyb20gJ21vbWVudCc7XG5pbXBvcnQgeyBmcm9tLCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBNZXNzYWdlQmFyUGF5bG9hZCB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvbWVzc2FnZS1iYXIvbWVzc2FnZS1iYXItdGV4dC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgTWVzc2FnZUJhclNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb21wb25lbnRzL21lc3NhZ2UtYmFyL21lc3NhZ2UtYmFyLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ29tbWFuZE5vdGlmaWNhdGlvbkNvbmZpZywgQ29tbWFuZE5vdGlmaWNhdGlvbkRpc3BsYXlDYXNlIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9ub3RpZmljYXRpb24vY29tbWFuZC1ub3RpZmljYXRpb24vY29tbWFuZC1ub3RpZmljYXRpb24tY29uZmlnJztcbmltcG9ydCB7IENvbW1hbmROb3RpZmljYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9ub3RpZmljYXRpb24vY29tbWFuZC1ub3RpZmljYXRpb24vY29tbWFuZC1ub3RpZmljYXRpb24uc2VydmljZSc7XG5pbXBvcnQgeyBOb3RpZmljYXRpb25DbGFzcyB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvbm90aWZpY2F0aW9uL25vdGlmaWNhdGlvbi1jb25maWcnO1xuaW1wb3J0IHsgTG9jYWxpemF0aW9uLCBQcm9maWxlVHlwZVRleHQgfSBmcm9tICcuLi8uLi9lbnVtcyc7XG5pbXBvcnQgeyBDbG91ZCwgUnBjIH0gZnJvbSAnLi4vLi4vc2VydmljZS1wcm94eSc7XG5pbXBvcnQgeyBTdWJNb2R1bGUgfSBmcm9tICcuLi8uLi9zZXJ2aWNlLXByb3h5L2Nsb3VkLXNlcnZpY2UtcHJveGllcyc7XG5pbXBvcnQgeyBBbmFseXRpY3NTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvYW5hbHl0aWNzLnNlcnZpY2UnO1xuaW1wb3J0IHsgRXhwb3J0RmlsZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9leHBvcnQtZmlsZS5zZXJ2aWNlJztcbmltcG9ydCB7IFRlbmFudFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy90ZW5hbnQuc2VydmljZSc7XG5pbXBvcnQgeyBjcmVhdGVNZXNzYWdlVGV4dCwgZ2V0QWRkcmVzcywgbG93ZXJDYXNlRmlyc3RMZXR0ZXIsIG1hcmtFbnRpdGllc0FzQ2hhbmdlZCwgbWFya0VudGl0eUFzVW5jaGFuZ2VkLCBSb3dPcGVyYXRpb24gfSBmcm9tICcuLi8uLi91dGlscyc7XG5pbXBvcnQgeyBTZW5kRW1haWxGcm9tRW50aXR5QWN0aW9uIH0gZnJvbSAnLi4vZW1haWwtc2VydmVyL2VtYWlsLXNlcnZlci5hY3Rpb25zJztcbmltcG9ydCB7IEZhY2lsaXR5V2l0aEd1aWQgfSBmcm9tICcuLi9mYWNpbGl0eS9mYWNpbGl0eS13aXRoLWd1aWQuaW50ZXJmYWNlJztcbmltcG9ydCB7IEZhY2lsaXR5U3RhdGUgfSBmcm9tICcuLi9mYWNpbGl0eS9mYWNpbGl0eS5zdGF0ZSc7XG5pbXBvcnQgeyBQYXJrZXJTZXJ2aWNlIH0gZnJvbSAnLi4vcGFya2VyL3Bhcmtlci5zZXJ2aWNlJztcbmltcG9ydCB7IFNpZGVuYXZTdGF0ZSB9IGZyb20gJy4uL3NpZGVuYXYvc2lkZW5hdi5zdGF0ZSc7XG5pbXBvcnQge1xuICBDbGVhckd1ZXN0QWN0aW9uLCBDbGVhckd1ZXN0UHJvZmlsZXNBY3Rpb24sIENsZWFyR3Vlc3RzTGlzdEFjdGlvbiwgQ29sbGFwc2VkR3Vlc3RzQnlCYXRjaElkQWN0aW9uLFxuICBDcmVhdGVCYXNpY0JhdGNoQWN0aW9uLCBDcmVhdGVCYXNpY0d1ZXN0QWN0aW9uLCBDcmVhdGVCYXRjaEFjdGlvbiwgQ3JlYXRlR3Vlc3RBY3Rpb24sIERlbGV0ZUd1ZXN0QWN0aW9uLFxuICBFeHBhbmRHdWVzdHNCeUJhdGNoSWRBY3Rpb24sIEV4cG9ydEd1ZXN0c0FjdGlvbiwgTG9hZEd1ZXN0QnlJZEFjdGlvbiwgTG9hZEd1ZXN0UHJvZmlsZXNBY3Rpb24sIExvYWRHdWVzdHNBY3Rpb24sXG4gIExvYWRHdWVzdHNCeUJhdGNoSWRBY3Rpb24sIExvYWRHdWVzdHNCeUJhdGNoSWRDYW5jZWxsZWRBY3Rpb24sIFNlbmRFbWFpbFRvR3Vlc3RBY3Rpb24sIFNlbmRHdWVzdFBhc3Nlc1RvRW1haWxBY3Rpb24sXG4gIFNldEd1ZXN0c0FjdGlvbiwgVXBkYXRlQmFzaWNHdWVzdEFjdGlvbiwgVXBkYXRlR3Vlc3RBY3Rpb24sIFVwZGF0ZUd1ZXN0TG9jYXRpb25BY3Rpb25cbn0gZnJvbSAnLi9ndWVzdC5hY3Rpb25zJztcblxuaW1wb3J0IEd1ZXN0RW50aXR5UGFyYW1zID0gUnBjLkd1ZXN0RW50aXR5UGFyYW1zO1xuaW1wb3J0IEd1ZXN0UHJvZmlsZUR0byA9IFJwYy5HdWVzdFByb2ZpbGVEdG87XG5pbXBvcnQgSW50MzJIdHRwUmVzcG9uc2VEYXRhID0gUnBjLkludDMySHR0cFJlc3BvbnNlRGF0YTtcbmltcG9ydCBQcm9ibGVtRGV0YWlsc0h0dHBSZXNwb25zZURhdGEgPSBScGMuUHJvYmxlbURldGFpbHNIdHRwUmVzcG9uc2VEYXRhO1xuaW1wb3J0IFByb2ZpbGVUeXBlID0gUnBjLlByb2ZpbGVUeXBlO1xuaW1wb3J0IFZHdWVzdFdpdGhCYXRjaER0byA9IFJwYy5WR3Vlc3RXaXRoQmF0Y2hEdG87XG5pbXBvcnQgVkd1ZXN0V2l0aEJhdGNoRHRvRW50aXR5V3JhcHBlckR0b0h0dHBSZXNwb25zZURhdGEgPSBScGMuVkd1ZXN0V2l0aEJhdGNoRHRvRW50aXR5V3JhcHBlckR0b0h0dHBSZXNwb25zZURhdGE7XG5pbXBvcnQgVkd1ZXN0V2l0aEJhdGNoRHRvSHR0cFJlc3BvbnNlRGF0YSA9IFJwYy5WR3Vlc3RXaXRoQmF0Y2hEdG9IdHRwUmVzcG9uc2VEYXRhO1xuaW1wb3J0IFZHdWVzdFdpdGhCYXRjaER0b0lFbnVtZXJhYmxlSHR0cFJlc3BvbnNlRGF0YSA9IFJwYy5WR3Vlc3RXaXRoQmF0Y2hEdG9JRW51bWVyYWJsZUh0dHBSZXNwb25zZURhdGE7XG5pbXBvcnQgU2VuZEVtYWlsUmVxdWVzdER0byA9IENsb3VkLlNlbmRFbWFpbFJlcXVlc3REdG87XG5pbXBvcnQgVGVtcGxhdGVUeXBlID0gQ2xvdWQuVGVtcGxhdGVUeXBlO1xuXG5leHBvcnQgY2xhc3MgVkd1ZXN0V2l0aEJhdGNoVGFibGVEYXRhIGV4dGVuZHMgVkd1ZXN0V2l0aEJhdGNoRHRvIHtcbiAgZW50aXRpZXM6IFZHdWVzdFdpdGhCYXRjaER0b1tdO1xufTtcblxuZXhwb3J0IGludGVyZmFjZSBHdWVzdFN0YXRlTW9kZWwge1xuICBhcmNoaXZlZDogVkd1ZXN0V2l0aEJhdGNoRHRvW107XG4gIGRpc3BsYXllZDogVkd1ZXN0V2l0aEJhdGNoRHRvW107XG4gIGNvdW50ZXI6IG51bWJlcjtcbiAgZ3Vlc3Q6IFZHdWVzdFdpdGhCYXRjaER0bztcbiAgcHJvZmlsZXM6IEd1ZXN0UHJvZmlsZUR0b1tdO1xuICBzZWxlY3RlZDogVkd1ZXN0V2l0aEJhdGNoRHRvO1xufVxuXG5ASW5qZWN0YWJsZSgpXG5AU3RhdGU8R3Vlc3RTdGF0ZU1vZGVsPih7XG4gIG5hbWU6ICdndWVzdCcsXG4gIGRlZmF1bHRzOiB7XG4gICAgYXJjaGl2ZWQ6IFtdLFxuICAgIGRpc3BsYXllZDogW10sXG4gICAgY291bnRlcjogMCxcbiAgICBndWVzdDogbnVsbCxcbiAgICBwcm9maWxlczogW10sXG4gICAgc2VsZWN0ZWQ6IG51bGwsXG4gIH0sXG59KVxuZXhwb3J0IGNsYXNzIEd1ZXN0U3RhdGUge1xuICBkYXRlUGlwZSA9IG5ldyBEYXRlUGlwZSgnZW4tVVMnKTtcbiAgTCA9IExvY2FsaXphdGlvbjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHN0b3JlOiBTdG9yZSxcbiAgICBwcml2YXRlIGd1ZXN0UnBjU2VydmljZVByb3h5OiBScGMuR3Vlc3RScGNTZXJ2aWNlUHJveHksXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBiYXRjaFJwY1NlcnZpY2VQcm94eTogUnBjLkJhdGNoUnBjU2VydmljZVByb3h5LFxuICAgIHByaXZhdGUgbWVzc2FnZUJhclNlcnZpY2U6IE1lc3NhZ2VCYXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgY29tbWFuZE5vdGlmaWNhdGlvblNlcnZpY2U6IENvbW1hbmROb3RpZmljYXRpb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICBwcml2YXRlIHRlbmFudFNlcnZpY2U6IFRlbmFudFNlcnZpY2UsXG4gICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSBleHBvcnRGaWxlU2VydmljZTogRXhwb3J0RmlsZVNlcnZpY2UgfCBudWxsLFxuICAgIHByaXZhdGUgcGFya2VyU2VydmljZTogUGFya2VyU2VydmljZSxcbiAgICBwcml2YXRlIGFuYWx5dGljc1NlcnZpY2U6IEFuYWx5dGljc1NlcnZpY2UpIHtcbiAgfVxuXG4gIEBTZWxlY3RvcigpXG4gIHB1YmxpYyBzdGF0aWMgZ3Vlc3RDb3VudGVyKHN0YXRlOiBHdWVzdFN0YXRlTW9kZWwpOiBudW1iZXIge1xuICAgIHJldHVybiBzdGF0ZS5jb3VudGVyO1xuICB9XG5cbiAgQFNlbGVjdG9yKClcbiAgcHVibGljIHN0YXRpYyBhcmNoaXZlZEd1ZXN0cyhzdGF0ZTogR3Vlc3RTdGF0ZU1vZGVsKTogVkd1ZXN0V2l0aEJhdGNoRHRvW10ge1xuICAgIHJldHVybiBzdGF0ZS5hcmNoaXZlZDtcbiAgfVxuXG4gIEBTZWxlY3RvcigpXG4gIHB1YmxpYyBzdGF0aWMgZGlzcGxheWVkR3Vlc3RzKHN0YXRlOiBHdWVzdFN0YXRlTW9kZWwpOiBWR3Vlc3RXaXRoQmF0Y2hEdG9bXSB7XG4gICAgcmV0dXJuIHN0YXRlLmRpc3BsYXllZDtcbiAgfVxuXG4gIEBTZWxlY3RvcigpXG4gIHB1YmxpYyBzdGF0aWMgcHJvZmlsZXMoc3RhdGU6IEd1ZXN0U3RhdGVNb2RlbCk6IEd1ZXN0UHJvZmlsZUR0b1tdIHtcbiAgICByZXR1cm4gc3RhdGUucHJvZmlsZXM7XG4gIH1cblxuICBAU2VsZWN0b3IoKVxuICBwdWJsaWMgc3RhdGljIHNlbGVjdGVkKHN0YXRlOiBHdWVzdFN0YXRlTW9kZWwpOiBWR3Vlc3RXaXRoQmF0Y2hEdG8ge1xuICAgIHJldHVybiBzdGF0ZS5zZWxlY3RlZDtcbiAgfVxuXG4gIEBBY3Rpb24oTG9hZEd1ZXN0QnlJZEFjdGlvbiwgeyBjYW5jZWxVbmNvbXBsZXRlZDogdHJ1ZSB9KVxuICBvbkxvYWRHdWVzdEJ5SWRBY3Rpb24oY3R4OiBTdGF0ZUNvbnRleHQ8R3Vlc3RTdGF0ZU1vZGVsPiwgYWN0aW9uOiBMb2FkR3Vlc3RCeUlkQWN0aW9uKTogT2JzZXJ2YWJsZTxWR3Vlc3RXaXRoQmF0Y2hEdG9IdHRwUmVzcG9uc2VEYXRhPiB7XG4gICAgY29uc3QgZ2V0R3Vlc3QkID0gdGhpcy5ndWVzdFJwY1NlcnZpY2VQcm94eS5nZXRHdWVzdEJ5SWQoYWN0aW9uLmd1aWQsIGFjdGlvbi5wYXJrSWQsIGFjdGlvbi5ndWVzdElkKTtcbiAgICByZXR1cm4gZ2V0R3Vlc3QkLnBpcGUodGFwKGd1ZXN0ID0+IHtcbiAgICAgIGN0eC5wYXRjaFN0YXRlKHtcbiAgICAgICAgc2VsZWN0ZWQ6IGd1ZXN0LmRhdGFcbiAgICAgIH0pO1xuICAgIH0pKTtcbiAgfVxuXG4gIEBBY3Rpb24oQ2xlYXJHdWVzdEFjdGlvbiwgeyBjYW5jZWxVbmNvbXBsZXRlZDogdHJ1ZSB9KVxuICBvbkNsZWFyR3Vlc3RBY3Rpb24oY3R4OiBTdGF0ZUNvbnRleHQ8Q2xlYXJHdWVzdEFjdGlvbj4pOiB2b2lkIHtcbiAgICBjdHgucGF0Y2hTdGF0ZSh7XG4gICAgICBzZWxlY3RlZDogbnVsbFxuICAgIH0pO1xuICB9XG5cbiAgQEFjdGlvbihMb2FkR3Vlc3RzQWN0aW9uLCB7IGNhbmNlbFVuY29tcGxldGVkOiB0cnVlIH0pXG4gIG9uTG9hZEd1ZXN0c0FjdGlvbihjdHg6IFN0YXRlQ29udGV4dDxHdWVzdFN0YXRlTW9kZWw+LCBhY3Rpb246IExvYWRHdWVzdHNBY3Rpb24pOiBPYnNlcnZhYmxlPFZHdWVzdFdpdGhCYXRjaER0b0VudGl0eVdyYXBwZXJEdG9IdHRwUmVzcG9uc2VEYXRhPiB7XG4gICAgY29uc3QgZ2V0R3Vlc3RzJCA9IHRoaXMuZ3Vlc3RScGNTZXJ2aWNlUHJveHkuZ2V0R3Vlc3RzKGFjdGlvbi5ndWlkLCBhY3Rpb24ucGFya0lkLCBhY3Rpb24uZ3Vlc3RzRmlsdGVyRHRvKTtcbiAgICByZXR1cm4gZ2V0R3Vlc3RzJC5waXBlKHRhcCgoZ3Vlc3RzV3JhcHBlcjogVkd1ZXN0V2l0aEJhdGNoRHRvRW50aXR5V3JhcHBlckR0b0h0dHBSZXNwb25zZURhdGEpID0+IHtcbiAgICAgIGN0eC5wYXRjaFN0YXRlKHtcbiAgICAgICAgYXJjaGl2ZWQ6IGd1ZXN0c1dyYXBwZXIuZGF0YS5lbnRpdGllcyxcbiAgICAgICAgY291bnRlcjogZ3Vlc3RzV3JhcHBlci5kYXRhLmNvdW50ZXIsXG4gICAgICB9KTtcbiAgICB9KSk7XG4gIH1cblxuICBAQWN0aW9uKFNldEd1ZXN0c0FjdGlvbilcbiAgb25TZXRHdWVzdHNBY3Rpb24oY3R4OiBTdGF0ZUNvbnRleHQ8R3Vlc3RTdGF0ZU1vZGVsPiwgYWN0aW9uOiBTZXRHdWVzdHNBY3Rpb24pIHtcbiAgICBjdHgucGF0Y2hTdGF0ZSh7XG4gICAgICBkaXNwbGF5ZWQ6IGFjdGlvbi5ndWVzdHMgfHwgW10sXG4gICAgfSk7XG4gIH1cblxuICBAQWN0aW9uKENsZWFyR3Vlc3RzTGlzdEFjdGlvbilcbiAgb25DbGVhckd1ZXN0TGlzdEFjdGlvbihjdHg6IFN0YXRlQ29udGV4dDxHdWVzdFN0YXRlTW9kZWw+KSB7XG4gICAgY3R4LnBhdGNoU3RhdGUoe1xuICAgICAgYXJjaGl2ZWQ6IFtdLFxuICAgICAgZGlzcGxheWVkOiBbXSxcbiAgICAgIGNvdW50ZXI6IDAsXG4gICAgfSk7XG4gIH1cblxuICBAQWN0aW9uKENyZWF0ZUd1ZXN0QWN0aW9uKVxuICBvbkNyZWF0ZUd1ZXN0QWN0aW9uKGN0eDogU3RhdGVDb250ZXh0PEd1ZXN0U3RhdGVNb2RlbD4sIGFjdGlvbjogQ3JlYXRlR3Vlc3RBY3Rpb24pOiBPYnNlcnZhYmxlPFZHdWVzdFdpdGhCYXRjaER0b0h0dHBSZXNwb25zZURhdGE+IHtcbiAgICBjb25zdCBtZXNzYWdlQmFyUGF5bG9hZDogTWVzc2FnZUJhclBheWxvYWQgPSB7XG4gICAgICBlbnRpdHk6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoTG9jYWxpemF0aW9uLmd1ZXN0KSxcbiAgICAgIGVudGl0eU5hbWU6IGAke2FjdGlvbi5ndWVzdC5maXJzdE5hbWV9ICR7YWN0aW9uLmd1ZXN0Lmxhc3ROYW1lfWAsXG4gICAgICBhY3Rpb246IGxvd2VyQ2FzZUZpcnN0TGV0dGVyKHRoaXMudHJhbnNsYXRlLmluc3RhbnQoTG9jYWxpemF0aW9uLmNyZWF0ZWQpKSxcbiAgICB9O1xuICAgIHRoaXMubWVzc2FnZUJhclNlcnZpY2UuaW5mbyhMb2NhbGl6YXRpb24uZW50aXR5X2luX3Byb2dyZXNzLCBjcmVhdGVNZXNzYWdlVGV4dChtZXNzYWdlQmFyUGF5bG9hZCkpO1xuICAgIHJldHVybiB0aGlzLmd1ZXN0UnBjU2VydmljZVByb3h5LmNyZWF0ZUd1ZXN0KGFjdGlvbi5ndWlkLCBhY3Rpb24ucGFya0lkLCBhY3Rpb24uZ3Vlc3QpLnBpcGUodGFwKHtcbiAgICAgIG5leHQ6IChoYW5kbGVkOiBWR3Vlc3RXaXRoQmF0Y2hEdG9IdHRwUmVzcG9uc2VEYXRhKSA9PiB7XG4gICAgICAgIGNvbnN0IGRpc3BsYXlOZXdHdWVzdEluVGFibGUgPSB0aGlzLmlzR3Vlc3RDcmVhdGVkRnJvbVNlbGVjdGVkRmFjaWxpdHkoaGFuZGxlZC5kYXRhLCBhY3Rpb24uZ3VpZCk7XG4gICAgICAgIHRoaXMuYWRkR3Vlc3RUb1N0b3JlKGN0eCwgaGFuZGxlZC5kYXRhLCBkaXNwbGF5TmV3R3Vlc3RJblRhYmxlKTtcbiAgICAgICAgdGhpcy5tZXNzYWdlQmFyU2VydmljZS5zdWNjZXNzKFxuICAgICAgICAgIGRpc3BsYXlOZXdHdWVzdEluVGFibGUgPyBMb2NhbGl6YXRpb24uZW50aXR5X3N1Y2Nlc3MgOiBMb2NhbGl6YXRpb24uZW50aXR5X3N1Y2Nlc3Nfbm90X2N1cnJlbnRseV92aXNpYmxlLFxuICAgICAgICAgIGNyZWF0ZU1lc3NhZ2VUZXh0KG1lc3NhZ2VCYXJQYXlsb2FkKVxuICAgICAgICApO1xuICAgICAgfSxcbiAgICAgIGVycm9yOiAoKSA9PiB7XG4gICAgICAgIG1lc3NhZ2VCYXJQYXlsb2FkLmVudGl0eSA9IGxvd2VyQ2FzZUZpcnN0TGV0dGVyKFxuICAgICAgICAgIG1lc3NhZ2VCYXJQYXlsb2FkLmVudGl0eVxuICAgICAgICApO1xuICAgICAgICBtZXNzYWdlQmFyUGF5bG9hZC5hY3Rpb24gPSBsb3dlckNhc2VGaXJzdExldHRlcihcbiAgICAgICAgICB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KExvY2FsaXphdGlvbi5jcmVhdGUpXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMubWVzc2FnZUJhclNlcnZpY2UuZXJyb3IoXG4gICAgICAgICAgTG9jYWxpemF0aW9uLmVudGl0eV9mYWlsZWQsXG4gICAgICAgICAgY3JlYXRlTWVzc2FnZVRleHQobWVzc2FnZUJhclBheWxvYWQpXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfSkpO1xuICB9XG5cbiAgQEFjdGlvbihDcmVhdGVCYXRjaEFjdGlvbilcbiAgb25DcmVhdGVCYXRjaEFjdGlvbihjdHg6IFN0YXRlQ29udGV4dDxHdWVzdFN0YXRlTW9kZWw+LCBhY3Rpb246IENyZWF0ZUJhdGNoQWN0aW9uKTogT2JzZXJ2YWJsZTxWR3Vlc3RXaXRoQmF0Y2hEdG9JRW51bWVyYWJsZUh0dHBSZXNwb25zZURhdGE+IHtcbiAgICBjb25zdCBtZXNzYWdlQmFyUGF5bG9hZDogTWVzc2FnZUJhclBheWxvYWQgPSB7XG4gICAgICBlbnRpdHk6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoTG9jYWxpemF0aW9uLmd1ZXN0X2dyb3VwKSxcbiAgICAgIGVudGl0eU5hbWU6IGFjdGlvbi5iYXRjaENvbW1hbmQubmFtZSxcbiAgICAgIGFjdGlvbjogbG93ZXJDYXNlRmlyc3RMZXR0ZXIodGhpcy50cmFuc2xhdGUuaW5zdGFudChMb2NhbGl6YXRpb24uY3JlYXRlZCkpLFxuICAgIH07XG4gICAgdGhpcy5tZXNzYWdlQmFyU2VydmljZS5pbmZvKExvY2FsaXphdGlvbi5lbnRpdHlfaW5fcHJvZ3Jlc3MsIGNyZWF0ZU1lc3NhZ2VUZXh0KG1lc3NhZ2VCYXJQYXlsb2FkKSk7XG4gICAgcmV0dXJuIHRoaXMuYmF0Y2hScGNTZXJ2aWNlUHJveHkuY3JlYXRlQmF0Y2goYWN0aW9uLmZhY2lsaXR5V2l0aEd1aWQuZ3VpZCwgYWN0aW9uLmZhY2lsaXR5V2l0aEd1aWQuZGF0YS5pZCwgYWN0aW9uLmJhdGNoQ29tbWFuZCkucGlwZSh0YXAoe1xuICAgICAgbmV4dDogKG5ld0d1ZXN0czogVkd1ZXN0V2l0aEJhdGNoRHRvSUVudW1lcmFibGVIdHRwUmVzcG9uc2VEYXRhKSA9PiB7XG4gICAgICAgIGNvbnN0IGRpc3BsYXlOZXdHdWVzdEluVGFibGUgPSB0aGlzLmlzR3Vlc3RDcmVhdGVkRnJvbVNlbGVjdGVkRmFjaWxpdHkobmV3R3Vlc3RzLmRhdGFbMF0sIGFjdGlvbi5mYWNpbGl0eVdpdGhHdWlkLmd1aWQpO1xuICAgICAgICB0aGlzLm1lc3NhZ2VCYXJTZXJ2aWNlLnN1Y2Nlc3MoXG4gICAgICAgICAgZGlzcGxheU5ld0d1ZXN0SW5UYWJsZSA/IExvY2FsaXphdGlvbi5lbnRpdHlfc3VjY2VzcyA6IExvY2FsaXphdGlvbi5lbnRpdHlfc3VjY2Vzc19ub3RfY3VycmVudGx5X3Zpc2libGUsXG4gICAgICAgICAgY3JlYXRlTWVzc2FnZVRleHQobWVzc2FnZUJhclBheWxvYWQpXG4gICAgICAgICk7XG5cbiAgICAgICAgaWYgKGRpc3BsYXlOZXdHdWVzdEluVGFibGUpIHtcbiAgICAgICAgICBjb25zdCBuZXdCYXRjaCA9IHRoaXMuY29udmVydEd1ZXN0c1RvVGFibGVEYXRhKG5ld0d1ZXN0cy5kYXRhKTtcbiAgICAgICAgICBtYXJrRW50aXRpZXNBc0NoYW5nZWQoW25ld0JhdGNoXSwgUm93T3BlcmF0aW9uLkluc2VydCk7XG4gICAgICAgICAgbWFya0VudGl0aWVzQXNDaGFuZ2VkKG5ld0JhdGNoLmVudGl0aWVzLCBSb3dPcGVyYXRpb24uSW5zZXJ0KTtcbiAgICAgICAgICBjb25zdCBkaXNwbGF5ZWRHdWVzdHMgPSBjdHguZ2V0U3RhdGUoKS5kaXNwbGF5ZWQ7XG4gICAgICAgICAgZGlzcGxheWVkR3Vlc3RzLnVuc2hpZnQoLi4ubmV3QmF0Y2guZW50aXRpZXMpO1xuICAgICAgICAgIGRpc3BsYXllZEd1ZXN0cy51bnNoaWZ0KG5ld0JhdGNoKTtcbiAgICAgICAgICBjdHgucGF0Y2hTdGF0ZSh7XG4gICAgICAgICAgICBkaXNwbGF5ZWQ6IFsuLi5kaXNwbGF5ZWRHdWVzdHNdLFxuICAgICAgICAgICAgY291bnRlcjogY3R4LmdldFN0YXRlKCkuY291bnRlciArIDEsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBlcnJvcjogKGU6IFByb2JsZW1EZXRhaWxzSHR0cFJlc3BvbnNlRGF0YSkgPT4ge1xuICAgICAgICBhY3Rpb24uZXJyb3JNZXNzYWdlID0gZS5kYXRhLmRldGFpbDtcbiAgICAgIH1cbiAgICB9KSk7XG4gIH1cblxuICBAQWN0aW9uKENyZWF0ZUJhc2ljQmF0Y2hBY3Rpb24pXG4gIG9uQ3JlYXRlQmFzaWNCYXRjaEFjdGlvbihjdHg6IFN0YXRlQ29udGV4dDxHdWVzdFN0YXRlTW9kZWw+LCBhY3Rpb246IENyZWF0ZUJhc2ljQmF0Y2hBY3Rpb24pOiBPYnNlcnZhYmxlPFZHdWVzdFdpdGhCYXRjaER0b0lFbnVtZXJhYmxlSHR0cFJlc3BvbnNlRGF0YT4ge1xuICAgIGNvbnN0IG1lc3NhZ2VCYXJQYXlsb2FkOiBNZXNzYWdlQmFyUGF5bG9hZCA9IHtcbiAgICAgIGVudGl0eTogdGhpcy50cmFuc2xhdGUuaW5zdGFudChMb2NhbGl6YXRpb24uZ3Vlc3RfZ3JvdXApLFxuICAgICAgZW50aXR5TmFtZTogYWN0aW9uLmJhdGNoQ29tbWFuZC5uYW1lLFxuICAgICAgYWN0aW9uOiBsb3dlckNhc2VGaXJzdExldHRlcih0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KExvY2FsaXphdGlvbi5jcmVhdGVkKSksXG4gICAgfTtcbiAgICB0aGlzLm1lc3NhZ2VCYXJTZXJ2aWNlLmluZm8oTG9jYWxpemF0aW9uLmVudGl0eV9pbl9wcm9ncmVzcywgY3JlYXRlTWVzc2FnZVRleHQobWVzc2FnZUJhclBheWxvYWQpKTtcbiAgICByZXR1cm4gdGhpcy5iYXRjaFJwY1NlcnZpY2VQcm94eS5jcmVhdGVCYXNpY0JhdGNoKGFjdGlvbi5mYWNpbGl0eVdpdGhHdWlkLmd1aWQsIGFjdGlvbi5mYWNpbGl0eVdpdGhHdWlkLmRhdGEuaWQsIGFjdGlvbi5iYXRjaENvbW1hbmQpLnBpcGUodGFwKHtcbiAgICAgIG5leHQ6IChuZXdHdWVzdHM6IFZHdWVzdFdpdGhCYXRjaER0b0lFbnVtZXJhYmxlSHR0cFJlc3BvbnNlRGF0YSkgPT4ge1xuICAgICAgICBjb25zdCBkaXNwbGF5TmV3R3Vlc3RJblRhYmxlID0gdGhpcy5pc0d1ZXN0Q3JlYXRlZEZyb21TZWxlY3RlZEZhY2lsaXR5KG5ld0d1ZXN0cy5kYXRhWzBdLCBhY3Rpb24uZmFjaWxpdHlXaXRoR3VpZC5ndWlkKTtcbiAgICAgICAgdGhpcy5tZXNzYWdlQmFyU2VydmljZS5zdWNjZXNzKFxuICAgICAgICAgIGRpc3BsYXlOZXdHdWVzdEluVGFibGUgPyBMb2NhbGl6YXRpb24uZW50aXR5X3N1Y2Nlc3MgOiBMb2NhbGl6YXRpb24uZW50aXR5X3N1Y2Nlc3Nfbm90X2N1cnJlbnRseV92aXNpYmxlLFxuICAgICAgICAgIGNyZWF0ZU1lc3NhZ2VUZXh0KG1lc3NhZ2VCYXJQYXlsb2FkKVxuICAgICAgICApO1xuXG4gICAgICAgIGlmIChkaXNwbGF5TmV3R3Vlc3RJblRhYmxlKSB7XG4gICAgICAgICAgY29uc3QgbmV3QmF0Y2ggPSB0aGlzLmNvbnZlcnRHdWVzdHNUb1RhYmxlRGF0YShuZXdHdWVzdHMuZGF0YSk7XG4gICAgICAgICAgbWFya0VudGl0aWVzQXNDaGFuZ2VkKFtuZXdCYXRjaF0sIFJvd09wZXJhdGlvbi5JbnNlcnQpO1xuICAgICAgICAgIG1hcmtFbnRpdGllc0FzQ2hhbmdlZChuZXdCYXRjaC5lbnRpdGllcywgUm93T3BlcmF0aW9uLkluc2VydCk7XG4gICAgICAgICAgY29uc3QgZGlzcGxheWVkR3Vlc3RzID0gY3R4LmdldFN0YXRlKCkuZGlzcGxheWVkO1xuICAgICAgICAgIGRpc3BsYXllZEd1ZXN0cy51bnNoaWZ0KC4uLm5ld0JhdGNoLmVudGl0aWVzKTtcbiAgICAgICAgICBkaXNwbGF5ZWRHdWVzdHMudW5zaGlmdChuZXdCYXRjaCk7XG4gICAgICAgICAgY3R4LnBhdGNoU3RhdGUoe1xuICAgICAgICAgICAgZGlzcGxheWVkOiBbLi4uZGlzcGxheWVkR3Vlc3RzXSxcbiAgICAgICAgICAgIGNvdW50ZXI6IGN0eC5nZXRTdGF0ZSgpLmNvdW50ZXIgKyAxLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgZXJyb3I6IChlOiBQcm9ibGVtRGV0YWlsc0h0dHBSZXNwb25zZURhdGEpID0+IHtcbiAgICAgICAgYWN0aW9uLmVycm9yTWVzc2FnZSA9IGUuZGF0YS5kZXRhaWw7XG4gICAgICB9XG4gICAgfSkpO1xuICB9XG5cbiAgQEFjdGlvbihVcGRhdGVHdWVzdEFjdGlvbilcbiAgb25VcGRhdGVHdWVzdEFjdGlvbihjdHg6IFN0YXRlQ29udGV4dDxHdWVzdFN0YXRlTW9kZWw+LCBhY3Rpb246IFVwZGF0ZUd1ZXN0QWN0aW9uKTogT2JzZXJ2YWJsZTxWR3Vlc3RXaXRoQmF0Y2hEdG9IdHRwUmVzcG9uc2VEYXRhPiB7XG4gICAgY29uc3QgbWVzc2FnZUJhclBheWxvYWQ6IE1lc3NhZ2VCYXJQYXlsb2FkID0ge1xuICAgICAgZW50aXR5OiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KExvY2FsaXphdGlvbi5ndWVzdCksXG4gICAgICBlbnRpdHlOYW1lOiBgJHthY3Rpb24uZ3Vlc3QuZmlyc3ROYW1lfSAke2FjdGlvbi5ndWVzdC5sYXN0TmFtZX1gLFxuICAgICAgYWN0aW9uOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KExvY2FsaXphdGlvbi51cGRhdGVkKSxcbiAgICB9O1xuICAgIHRoaXMubWVzc2FnZUJhclNlcnZpY2UuaW5mbyhMb2NhbGl6YXRpb24uZW50aXR5X2luX3Byb2dyZXNzLCBjcmVhdGVNZXNzYWdlVGV4dChtZXNzYWdlQmFyUGF5bG9hZCkpO1xuICAgIHJldHVybiB0aGlzLmd1ZXN0UnBjU2VydmljZVByb3h5LnVwZGF0ZUd1ZXN0KGFjdGlvbi5ndWlkLCBhY3Rpb24ucGFya0lkLCBhY3Rpb24uZ3Vlc3QpLnBpcGUodGFwKHtcbiAgICAgIG5leHQ6IChoYW5kbGVkOiBWR3Vlc3RXaXRoQmF0Y2hEdG9IdHRwUmVzcG9uc2VEYXRhKSA9PiB7XG4gICAgICAgIHRoaXMudXBkYXRlR3Vlc3RJblN0b3JlKGN0eCwgaGFuZGxlZC5kYXRhLCBhY3Rpb24uZ3VpZCk7XG4gICAgICAgIHRoaXMubWVzc2FnZUJhclNlcnZpY2Uuc3VjY2VzcyhcbiAgICAgICAgICBMb2NhbGl6YXRpb24uZW50aXR5X3N1Y2Nlc3MsXG4gICAgICAgICAgY3JlYXRlTWVzc2FnZVRleHQobWVzc2FnZUJhclBheWxvYWQpXG4gICAgICAgICk7XG4gICAgICB9LFxuICAgICAgZXJyb3I6ICgpID0+IHtcbiAgICAgICAgbWVzc2FnZUJhclBheWxvYWQuZW50aXR5ID0gbG93ZXJDYXNlRmlyc3RMZXR0ZXIoXG4gICAgICAgICAgbWVzc2FnZUJhclBheWxvYWQuZW50aXR5XG4gICAgICAgICk7XG4gICAgICAgIG1lc3NhZ2VCYXJQYXlsb2FkLmFjdGlvbiA9IGxvd2VyQ2FzZUZpcnN0TGV0dGVyKFxuICAgICAgICAgIHRoaXMudHJhbnNsYXRlLmluc3RhbnQoTG9jYWxpemF0aW9uLnVwZGF0ZSlcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5tZXNzYWdlQmFyU2VydmljZS5lcnJvcihcbiAgICAgICAgICBMb2NhbGl6YXRpb24uZW50aXR5X2ZhaWxlZCxcbiAgICAgICAgICBjcmVhdGVNZXNzYWdlVGV4dChtZXNzYWdlQmFyUGF5bG9hZClcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9KSk7XG4gIH1cblxuICBAQWN0aW9uKFVwZGF0ZUd1ZXN0TG9jYXRpb25BY3Rpb24pXG4gIG9uVXBkYXRlR3Vlc3RMb2NhdGlvbkFjdGlvbihjdHg6IFN0YXRlQ29udGV4dDxHdWVzdFN0YXRlTW9kZWw+LCBhY3Rpb246IFVwZGF0ZUd1ZXN0TG9jYXRpb25BY3Rpb24pOiBPYnNlcnZhYmxlPFZHdWVzdFdpdGhCYXRjaER0b0h0dHBSZXNwb25zZURhdGE+IHtcbiAgICBjb25zdCBjb25maWc6IENvbW1hbmROb3RpZmljYXRpb25Db25maWcgPSB7XG4gICAgICBtZXNzYWdlczogW3sgdmFsdWU6IGFjdGlvbi51cGRhdGVHdWVzdExvY2F0aW9uQ29tbWFuZC5uYW1lLCBjbGFzczogTm90aWZpY2F0aW9uQ2xhc3MuYm9keSB9XSxcbiAgICAgIGNvbW1hbmQ6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KExvY2FsaXphdGlvbi51cGRhdGVfbG9jYXRpb24pXG4gICAgfTtcblxuICAgIGNvbnN0IGd1ZXN0JCA9IHRoaXMuZ3Vlc3RScGNTZXJ2aWNlUHJveHkudXBkYXRlR3Vlc3RMb2NhdGlvbihhY3Rpb24uZ3VpZCwgYWN0aW9uLnBhcmtJZCwgYWN0aW9uLnVwZGF0ZUd1ZXN0TG9jYXRpb25Db21tYW5kKTtcbiAgICByZXR1cm4gZ3Vlc3QkLnBpcGUodGhpcy5jb21tYW5kTm90aWZpY2F0aW9uU2VydmljZS5kaXNwbGF5KGNvbmZpZyksXG4gICAgICB0YXAoKCkgPT4ge1xuICAgICAgICB0aGlzLmFuYWx5dGljc1RyYWNrQWN0aW9uKGNvbmZpZywgYWN0aW9uKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIEBBY3Rpb24oRGVsZXRlR3Vlc3RBY3Rpb24pXG4gIG9uRGVsZXRlR3Vlc3RBY3Rpb24oY3R4OiBTdGF0ZUNvbnRleHQ8R3Vlc3RTdGF0ZU1vZGVsPiwgYWN0aW9uOiBEZWxldGVHdWVzdEFjdGlvbik6IE9ic2VydmFibGU8YW55PiB7XG4gICAgY29uc3QgaW50ZXJwb2xhdGVkR3Vlc3ROYW1lID0gYWN0aW9uLmd1ZXN0Lm5hbWUudHJpbSgpID09PSBMb2NhbGl6YXRpb24uY2FyZF9ob2xkZXIgP1xuICAgICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoTG9jYWxpemF0aW9uLmNhcmRfaG9sZGVyKSA6IGFjdGlvbi5ndWVzdC5uYW1lO1xuICAgIGNvbnN0IG1lc3NhZ2VCYXJQYXlsb2FkOiBNZXNzYWdlQmFyUGF5bG9hZCA9IHtcbiAgICAgIGVudGl0eTogdGhpcy50cmFuc2xhdGUuaW5zdGFudChMb2NhbGl6YXRpb24uZ3Vlc3QpLFxuICAgICAgZW50aXR5TmFtZTogaW50ZXJwb2xhdGVkR3Vlc3ROYW1lLFxuICAgICAgYWN0aW9uOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KExvY2FsaXphdGlvbi5kZWxldGVkKSxcbiAgICB9O1xuICAgIHRoaXMubWVzc2FnZUJhclNlcnZpY2UuaW5mbyhMb2NhbGl6YXRpb24uZW50aXR5X2luX3Byb2dyZXNzLCBjcmVhdGVNZXNzYWdlVGV4dChtZXNzYWdlQmFyUGF5bG9hZCkpO1xuICAgIHJldHVybiB0aGlzLmd1ZXN0UnBjU2VydmljZVByb3h5LmRlbGV0ZUd1ZXN0KGFjdGlvbi5ndWlkLCBhY3Rpb24uZ3Vlc3QucGFya0lELCBhY3Rpb24uZ3Vlc3QuZ3Vlc3RJRCkucGlwZSh0YXAoKCkgPT4ge1xuICAgICAgdGhpcy5tZXNzYWdlQmFyU2VydmljZS5zdWNjZXNzKExvY2FsaXphdGlvbi5lbnRpdHlfc3VjY2VzcywgY3JlYXRlTWVzc2FnZVRleHQobWVzc2FnZUJhclBheWxvYWQpKTtcbiAgICAgIChhY3Rpb24uZ3Vlc3QgYXMgVkd1ZXN0V2l0aEJhdGNoRHRvKS5kZWxldGVkID0gMTtcbiAgICAgIHRoaXMuZGVsZXRlR3Vlc3RGcm9tU3RvcmUoY3R4LCBhY3Rpb24uZ3Vlc3QsIGFjdGlvbi5ndWlkKTtcbiAgICB9LCAoKSA9PiB7XG4gICAgICBtZXNzYWdlQmFyUGF5bG9hZC5lbnRpdHkgPSBsb3dlckNhc2VGaXJzdExldHRlcihtZXNzYWdlQmFyUGF5bG9hZC5lbnRpdHkpO1xuICAgICAgbWVzc2FnZUJhclBheWxvYWQuYWN0aW9uID0gbG93ZXJDYXNlRmlyc3RMZXR0ZXIodGhpcy50cmFuc2xhdGUuaW5zdGFudChMb2NhbGl6YXRpb24uZGVsZXRlKSk7XG4gICAgICB0aGlzLm1lc3NhZ2VCYXJTZXJ2aWNlLmVycm9yKExvY2FsaXphdGlvbi5lbnRpdHlfZmFpbGVkLGNyZWF0ZU1lc3NhZ2VUZXh0KG1lc3NhZ2VCYXJQYXlsb2FkKSk7XG4gICAgfSkpO1xuICB9XG5cbiAgQEFjdGlvbihDcmVhdGVCYXNpY0d1ZXN0QWN0aW9uKVxuICBvbkNyZWF0ZUJhc2ljR3Vlc3RBY3Rpb24oY3R4OiBTdGF0ZUNvbnRleHQ8R3Vlc3RTdGF0ZU1vZGVsPiwgYWN0aW9uOiBDcmVhdGVCYXNpY0d1ZXN0QWN0aW9uKTogT2JzZXJ2YWJsZTxWR3Vlc3RXaXRoQmF0Y2hEdG9IdHRwUmVzcG9uc2VEYXRhPiB7XG4gICAgY29uc3QgbWVzc2FnZUJhclBheWxvYWQ6IE1lc3NhZ2VCYXJQYXlsb2FkID0ge1xuICAgICAgZW50aXR5OiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KExvY2FsaXphdGlvbi5ndWVzdCksXG4gICAgICBlbnRpdHlOYW1lOiBgJHthY3Rpb24uZ3Vlc3QuZmlyc3ROYW1lfSAke2FjdGlvbi5ndWVzdC5sYXN0TmFtZX1gLFxuICAgICAgYWN0aW9uOiBsb3dlckNhc2VGaXJzdExldHRlcih0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KExvY2FsaXphdGlvbi5jcmVhdGVkKSksXG4gICAgfTtcbiAgICB0aGlzLm1lc3NhZ2VCYXJTZXJ2aWNlLmluZm8oTG9jYWxpemF0aW9uLmVudGl0eV9pbl9wcm9ncmVzcywgY3JlYXRlTWVzc2FnZVRleHQobWVzc2FnZUJhclBheWxvYWQpKTtcbiAgICByZXR1cm4gdGhpcy5ndWVzdFJwY1NlcnZpY2VQcm94eS5jcmVhdGVCYXNpY0d1ZXN0KGFjdGlvbi5ndWlkLCBhY3Rpb24ucGFya0lkLCBhY3Rpb24uZ3Vlc3QpLnBpcGUodGFwKHtcbiAgICAgIG5leHQ6IChoYW5kbGVkOiBWR3Vlc3RXaXRoQmF0Y2hEdG9IdHRwUmVzcG9uc2VEYXRhKSA9PiB7XG4gICAgICAgIGNvbnN0IGRpc3BsYXlOZXdHdWVzdEluVGFibGUgPSB0aGlzLmlzR3Vlc3RDcmVhdGVkRnJvbVNlbGVjdGVkRmFjaWxpdHkoaGFuZGxlZC5kYXRhLCBhY3Rpb24uZ3VpZCk7XG4gICAgICAgIHRoaXMuYWRkR3Vlc3RUb1N0b3JlKGN0eCwgaGFuZGxlZC5kYXRhLCBkaXNwbGF5TmV3R3Vlc3RJblRhYmxlKTtcbiAgICAgICAgdGhpcy5tZXNzYWdlQmFyU2VydmljZS5zdWNjZXNzKFxuICAgICAgICAgIGRpc3BsYXlOZXdHdWVzdEluVGFibGUgPyBMb2NhbGl6YXRpb24uZW50aXR5X3N1Y2Nlc3MgOiBMb2NhbGl6YXRpb24uZW50aXR5X3N1Y2Nlc3Nfbm90X2N1cnJlbnRseV92aXNpYmxlLFxuICAgICAgICAgIGNyZWF0ZU1lc3NhZ2VUZXh0KG1lc3NhZ2VCYXJQYXlsb2FkKVxuICAgICAgICApO1xuICAgICAgfSxcbiAgICAgIGVycm9yOiAoKSA9PiB7XG4gICAgICAgIG1lc3NhZ2VCYXJQYXlsb2FkLmVudGl0eSA9IGxvd2VyQ2FzZUZpcnN0TGV0dGVyKG1lc3NhZ2VCYXJQYXlsb2FkLmVudGl0eSk7XG4gICAgICAgIG1lc3NhZ2VCYXJQYXlsb2FkLmFjdGlvbiA9IGxvd2VyQ2FzZUZpcnN0TGV0dGVyKHRoaXMudHJhbnNsYXRlLmluc3RhbnQoTG9jYWxpemF0aW9uLmNyZWF0ZSkpO1xuICAgICAgICB0aGlzLm1lc3NhZ2VCYXJTZXJ2aWNlLmVycm9yKExvY2FsaXphdGlvbi5lbnRpdHlfZmFpbGVkLGNyZWF0ZU1lc3NhZ2VUZXh0KG1lc3NhZ2VCYXJQYXlsb2FkKSk7XG4gICAgICB9XG4gICAgfSkpO1xuICB9XG5cbiAgQEFjdGlvbihVcGRhdGVCYXNpY0d1ZXN0QWN0aW9uKVxuICBvblVwZGF0ZUJhc2ljR3Vlc3RBY3Rpb24oY3R4OiBTdGF0ZUNvbnRleHQ8R3Vlc3RTdGF0ZU1vZGVsPiwgYWN0aW9uOiBVcGRhdGVCYXNpY0d1ZXN0QWN0aW9uKTogT2JzZXJ2YWJsZTxWR3Vlc3RXaXRoQmF0Y2hEdG9IdHRwUmVzcG9uc2VEYXRhPiB7XG4gICAgY29uc3QgbWVzc2FnZUJhclBheWxvYWQ6IE1lc3NhZ2VCYXJQYXlsb2FkID0ge1xuICAgICAgZW50aXR5OiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KExvY2FsaXphdGlvbi5ndWVzdCksXG4gICAgICBlbnRpdHlOYW1lOiBgJHthY3Rpb24uZ3Vlc3QuZmlyc3ROYW1lfSAke2FjdGlvbi5ndWVzdC5sYXN0TmFtZX1gLFxuICAgICAgYWN0aW9uOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KExvY2FsaXphdGlvbi51cGRhdGVkKSxcbiAgICB9O1xuICAgIHRoaXMubWVzc2FnZUJhclNlcnZpY2UuaW5mbyhMb2NhbGl6YXRpb24uZW50aXR5X2luX3Byb2dyZXNzLCBjcmVhdGVNZXNzYWdlVGV4dChtZXNzYWdlQmFyUGF5bG9hZCkpO1xuICAgIHJldHVybiB0aGlzLmd1ZXN0UnBjU2VydmljZVByb3h5LnVwZGF0ZUJhc2ljR3Vlc3QoYWN0aW9uLmd1aWQsIGFjdGlvbi5wYXJrSWQsIGFjdGlvbi5ndWVzdCkucGlwZSh0YXAoe1xuICAgICAgbmV4dDogKGhhbmRsZWQ6IFZHdWVzdFdpdGhCYXRjaER0b0h0dHBSZXNwb25zZURhdGEpID0+IHRoaXMub25VcGRhdGVCYXNpY0d1ZXN0TmV4dChjdHgsIGFjdGlvbiwgaGFuZGxlZCwgbWVzc2FnZUJhclBheWxvYWQpLFxuICAgICAgZXJyb3I6ICgpID0+IHRoaXMub25VcGRhdGVCYXNpY0d1ZXN0RXJyb3IobWVzc2FnZUJhclBheWxvYWQpXG4gICAgfSkpO1xuICB9XG5cbiAgQEFjdGlvbihTZW5kRW1haWxUb0d1ZXN0QWN0aW9uKVxuICBvblNlbmRFbWFpbFRvR3Vlc3RBY3Rpb24oY3R4OiBTdGF0ZUNvbnRleHQ8R3Vlc3RTdGF0ZU1vZGVsPiwgYWN0aW9uOiBTZW5kRW1haWxUb0d1ZXN0QWN0aW9uKTogT2JzZXJ2YWJsZTxJbnQzMkh0dHBSZXNwb25zZURhdGE+IHtcbiAgICByZXR1cm4gdGhpcy5ndWVzdFJwY1NlcnZpY2VQcm94eS5zZW5kR3Vlc3RCeUVtYWlsKGFjdGlvbi5ndWlkLCBhY3Rpb24ucGFya0lkLCBhY3Rpb24uc2VuZEVtYWlsQ29tbWFuZCkucGlwZSh0YXAoe1xuICAgICAgbmV4dDogKCkgPT4gdGhpcy5tZXNzYWdlQmFyU2VydmljZS5zdWNjZXNzKExvY2FsaXphdGlvbi5lbWFpbF9zZW50X3N1Y2Nlc3NmdWxseSksXG4gICAgICBlcnJvcjogKCkgPT4gdGhpcy5tZXNzYWdlQmFyU2VydmljZS5lcnJvcihMb2NhbGl6YXRpb24uZW1haWxfc2VuZGluZ19mYWlsZWQpLFxuICAgIH0pKTtcbiAgfVxuXG4gIEBBY3Rpb24oTG9hZEd1ZXN0c0J5QmF0Y2hJZEFjdGlvbiwgeyBjYW5jZWxVbmNvbXBsZXRlZDogdHJ1ZSB9KVxuICBvbkxvYWRHdWVzdHNCeUJhdGNoSWQoY3R4OiBTdGF0ZUNvbnRleHQ8R3Vlc3RTdGF0ZU1vZGVsPiwgYWN0aW9uOiBMb2FkR3Vlc3RzQnlCYXRjaElkQWN0aW9uKTogT2JzZXJ2YWJsZTxWR3Vlc3RXaXRoQmF0Y2hEdG9JRW51bWVyYWJsZUh0dHBSZXNwb25zZURhdGE+IHtcbiAgICBjb25zdCByZXN1bHRzJCA9IHRoaXMuZ3Vlc3RScGNTZXJ2aWNlUHJveHkuZ2V0R3Vlc3RzQnlCYXRjaElkKGFjdGlvbi5ndWlkLCBhY3Rpb24ucGFya0lkLCBhY3Rpb24uYmF0Y2hJRCwgYWN0aW9uLmd1ZXN0c0ZpbHRlckR0byk7XG4gICAgcmV0dXJuIHJlc3VsdHMkLnBpcGUodGFwKChndWVzdHM6IFZHdWVzdFdpdGhCYXRjaER0b0lFbnVtZXJhYmxlSHR0cFJlc3BvbnNlRGF0YSkgPT4ge1xuICAgICAgdGhpcy5hZGRHdWVzdHNCeUJhdGNoSWRUb1N0b3JlKGN0eCwgYWN0aW9uLmJhdGNoSUQsIGd1ZXN0cy5kYXRhKTtcbiAgICB9KSk7XG4gIH1cblxuICBAQWN0aW9uKExvYWRHdWVzdHNCeUJhdGNoSWRDYW5jZWxsZWRBY3Rpb24sIHsgY2FuY2VsVW5jb21wbGV0ZWQ6IGZhbHNlIH0pXG4gIG9uTG9hZEd1ZXN0c0J5QmF0Y2hJZENhbmNlbGxlZEFjdGlvbihjdHg6IFN0YXRlQ29udGV4dDxHdWVzdFN0YXRlTW9kZWw+LCBhY3Rpb246IExvYWRHdWVzdHNCeUJhdGNoSWRDYW5jZWxsZWRBY3Rpb24pIHtcbiAgICBjb25zdCBkaXNwbGF5ZWRHdWVzdHNCYXRjaGVzID0gY3R4LmdldFN0YXRlKCkuZGlzcGxheWVkO1xuICAgIGNvbnN0IGd1ZXN0QmF0Y2hJbmRleCA9IGRpc3BsYXllZEd1ZXN0c0JhdGNoZXMuZmluZEluZGV4KGd1ZXN0ID0+IGd1ZXN0IGluc3RhbmNlb2YgVkd1ZXN0V2l0aEJhdGNoRHRvICYmIGd1ZXN0LmJhdGNoSUQgPT09IGFjdGlvbi5iYXRjaElkKTtcblxuICAgIGlmIChndWVzdEJhdGNoSW5kZXggIT09IC0xKSB7XG4gICAgICBjb25zdCBndWVzdEJhdGNoID0gbWFya0VudGl0eUFzVW5jaGFuZ2VkKGRpc3BsYXllZEd1ZXN0c0JhdGNoZXNbZ3Vlc3RCYXRjaEluZGV4XSk7XG5cbiAgICAgIGRpc3BsYXllZEd1ZXN0c0JhdGNoZXNbZ3Vlc3RCYXRjaEluZGV4XSA9IE9iamVjdC5hc3NpZ24obmV3IFZHdWVzdFdpdGhCYXRjaER0bygpLCBndWVzdEJhdGNoKTtcblxuICAgICAgY3R4LnBhdGNoU3RhdGUoe1xuICAgICAgICBkaXNwbGF5ZWQ6IFsuLi5kaXNwbGF5ZWRHdWVzdHNCYXRjaGVzXVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgQEFjdGlvbihFeHBhbmRHdWVzdHNCeUJhdGNoSWRBY3Rpb24pXG4gIG9uRXhwYW5kR3Vlc3RzQnlCYXRjaElkQWN0aW9uKGN0eDogU3RhdGVDb250ZXh0PEd1ZXN0U3RhdGVNb2RlbD4sIGFjdGlvbjogRXhwYW5kR3Vlc3RzQnlCYXRjaElkQWN0aW9uKTogdm9pZCB7XG4gICAgdGhpcy5hZGRHdWVzdHNCeUJhdGNoSWRUb1N0b3JlKGN0eCwgYWN0aW9uLmJhdGNoSUQsIGFjdGlvbi5ndWVzdHMpO1xuICB9XG5cbiAgQEFjdGlvbihDb2xsYXBzZWRHdWVzdHNCeUJhdGNoSWRBY3Rpb24pXG4gIG9uQ29sbGFwc2VkR3Vlc3RzQnlCYXRjaElkQWN0aW9uKGN0eDogU3RhdGVDb250ZXh0PEd1ZXN0U3RhdGVNb2RlbD4sIGFjdGlvbjogQ29sbGFwc2VkR3Vlc3RzQnlCYXRjaElkQWN0aW9uKTogdm9pZCB7XG4gICAgbGV0IGRpc3BsYXllZEd1c2V0QmF0Y2hlcyA9IGN0eC5nZXRTdGF0ZSgpLmRpc3BsYXllZDtcbiAgICBjb25zdCBndWVzdEJhdGNoSW5kZXggPSBkaXNwbGF5ZWRHdXNldEJhdGNoZXMuZmluZEluZGV4KGdiID0+IGdiLmJhdGNoSUQgPT09IGFjdGlvbi5iYXRjaElEKTtcbiAgICBpZiAoZ3Vlc3RCYXRjaEluZGV4ICE9PSAtMSkge1xuICAgICAgZGlzcGxheWVkR3VzZXRCYXRjaGVzID0gZGlzcGxheWVkR3VzZXRCYXRjaGVzLmZpbHRlcihlbnRpdHkgPT4gZW50aXR5LmJhdGNoSUQgIT09IGFjdGlvbi5iYXRjaElEIHx8ICFlbnRpdHkuZ3Vlc3RJRCk7XG4gICAgICBjdHgucGF0Y2hTdGF0ZSh7XG4gICAgICAgIGRpc3BsYXllZDogWy4uLmRpc3BsYXllZEd1c2V0QmF0Y2hlc10sXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBAQWN0aW9uKExvYWRHdWVzdFByb2ZpbGVzQWN0aW9uLCB7IGNhbmNlbFVuY29tcGxldGVkOiB0cnVlIH0pXG4gIG9uTG9hZEd1ZXN0UHJvZmlsZXNBY3Rpb24oY3R4OiBTdGF0ZUNvbnRleHQ8R3Vlc3RTdGF0ZU1vZGVsPiwgYWN0aW9uOiBMb2FkR3Vlc3RQcm9maWxlc0FjdGlvbikge1xuICAgIGNvbnN0IHN1Yk1vZHVsZTogU3ViTW9kdWxlID0gdGhpcy5zdG9yZS5zZWxlY3RTbmFwc2hvdChTaWRlbmF2U3RhdGUuc3ViTW9kdWxlKTtcblxuICAgIGxldCBndWVzdFByb2ZpbGVzJCA9IHRoaXMuZ3Vlc3RScGNTZXJ2aWNlUHJveHkuZ2V0U3RpY2tlcnNQcm9maWxlcyhhY3Rpb24uZ3VpZCwgYWN0aW9uLnBhcmtJZCwgYWN0aW9uLnNlYXJjaFBhcmFtc0R0bz8ubWF4UmVzdWx0cyxcbiAgICAgIGFjdGlvbi5zZWFyY2hQYXJhbXNEdG8/LnNlYXJjaFRlcm0sIGFjdGlvbi5zZWFyY2hQYXJhbXNEdG8/Lm9yZGVyQnkuY29sdW1uLFxuICAgICAgYWN0aW9uLnNlYXJjaFBhcmFtc0R0bz8ub3JkZXJCeS5vcmRlckRpcmVjdGlvbik7XG5cbiAgICBpZiAoc3ViTW9kdWxlID09PSBTdWJNb2R1bGUuUmF0ZXMpIHtcbiAgICAgIGd1ZXN0UHJvZmlsZXMkID0gdGhpcy5ndWVzdFJwY1NlcnZpY2VQcm94eS5nZXRSYXRlc1Byb2ZpbGVzKGFjdGlvbi5ndWlkLCBhY3Rpb24ucGFya0lkLCBhY3Rpb24uc2VhcmNoUGFyYW1zRHRvPy5tYXhSZXN1bHRzLFxuICAgICAgICBhY3Rpb24uc2VhcmNoUGFyYW1zRHRvPy5zZWFyY2hUZXJtLCBhY3Rpb24uc2VhcmNoUGFyYW1zRHRvPy5vcmRlckJ5LmNvbHVtbixcbiAgICAgICAgYWN0aW9uLnNlYXJjaFBhcmFtc0R0bz8ub3JkZXJCeS5vcmRlckRpcmVjdGlvbik7XG4gICAgfVxuXG4gICAgcmV0dXJuIGd1ZXN0UHJvZmlsZXMkLnBpcGUodGFwKHByb2ZpbGVzID0+IHtcbiAgICAgIGN0eC5wYXRjaFN0YXRlKHtcbiAgICAgICAgcHJvZmlsZXM6IHByb2ZpbGVzLmRhdGEsXG4gICAgICB9KTtcbiAgICB9KSk7XG4gIH1cblxuICBAQWN0aW9uKENsZWFyR3Vlc3RQcm9maWxlc0FjdGlvbilcbiAgb25DbGVhckd1ZXN0UHJvZmlsZXNBY3Rpb24oY3R4OiBTdGF0ZUNvbnRleHQ8R3Vlc3RTdGF0ZU1vZGVsPikge1xuICAgIGN0eC5wYXRjaFN0YXRlKHtcbiAgICAgIHByb2ZpbGVzOiBbXSxcbiAgICB9KTtcbiAgfVxuXG4gIEBBY3Rpb24oU2VuZEd1ZXN0UGFzc2VzVG9FbWFpbEFjdGlvbilcbiAgb25TZW5kR3Vlc3RQYXNzZXNUb0VtYWlsKGN0eDogU3RhdGVDb250ZXh0PEd1ZXN0U3RhdGVNb2RlbD4sIGFjdGlvbjogU2VuZEd1ZXN0UGFzc2VzVG9FbWFpbEFjdGlvbikge1xuICAgIHJldHVybiBmcm9tKHRoaXMucG9wdWxhdGVTZW5kRW1haWxSZXF1ZXN0KGFjdGlvbikpLnBpcGUoXG4gICAgICB0YXAoc2VuZEVtYWlsUmVxdWVzdCA9PiB7XG4gICAgICAgIGNvbnN0IGRhdGE6IGFueSA9IHtcbiAgICAgICAgICBtb2RhbFRpdGxlOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KExvY2FsaXphdGlvbi5zZW5kX3N0aWNrZXJzX3RvX2VtYWlsKSxcbiAgICAgICAgICBzZW5kRW1haWw6IGZhbHNlLFxuICAgICAgICAgIHNlbmRFbWFpbFJlcWV1c3Q6IHNlbmRFbWFpbFJlcXVlc3QgIC8vIG9ubHkgdmVyc2lvbiA+PSA4LjEgc3VwcG9ydCB0aGlzIGZlYXR1cmVcbiAgICAgICAgfTtcbiAgICAgICAgZGF0YS5zZW5kRW1haWxSZXFldXN0LnRvID0gYWN0aW9uLmVtYWlsO1xuICAgICAgICBjdHguZGlzcGF0Y2gobmV3IFNlbmRFbWFpbEZyb21FbnRpdHlBY3Rpb24oZGF0YS5zZW5kRW1haWxSZXFldXN0KSk7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBAQWN0aW9uKEV4cG9ydEd1ZXN0c0FjdGlvbiwgeyBjYW5jZWxVbmNvbXBsZXRlZDogdHJ1ZSB9KVxuICBvbkV4cG9ydEd1ZXN0c0FjdGlvbihjdHg6IFN0YXRlQ29udGV4dDxHdWVzdFN0YXRlTW9kZWw+LCBhY3Rpb246IEV4cG9ydEd1ZXN0c0FjdGlvbik6IE9ic2VydmFibGU8Vkd1ZXN0V2l0aEJhdGNoRHRvRW50aXR5V3JhcHBlckR0b0h0dHBSZXNwb25zZURhdGE+IHtcbiAgICBjb25zdCBnZXRHdWVzdHMkID0gdGhpcy5ndWVzdFJwY1NlcnZpY2VQcm94eS5nZXRHdWVzdHMoYWN0aW9uLmd1aWQsIGFjdGlvbi5wYXJrSWQsIGFjdGlvbi5ndWVzdHNGaWx0ZXJEdG8pO1xuICAgIHJldHVybiBnZXRHdWVzdHMkLnBpcGUodGFwKHtcbiAgICAgIG5leHQ6IChndWVzdHNXcmFwcGVyOiBWR3Vlc3RXaXRoQmF0Y2hEdG9FbnRpdHlXcmFwcGVyRHRvSHR0cFJlc3BvbnNlRGF0YSkgPT4ge1xuICAgICAgICBpZiAoIXRoaXMuZXhwb3J0RmlsZVNlcnZpY2UpIHsgcmV0dXJuOyB9XG4gICAgICAgIGNvbnN0IHRhYmxlUm93czogYW55W11bXSA9IFtdO1xuICAgICAgICBjb25zdCBndWVzdFdpdGhCYXRjaER0b0xpc3Q6IFZHdWVzdFdpdGhCYXRjaER0b1tdID0gZ3Vlc3RzV3JhcHBlci5kYXRhLmVudGl0aWVzO1xuICAgICAgICBndWVzdFdpdGhCYXRjaER0b0xpc3QuZm9yRWFjaCgoZ3Vlc3QpID0+IHtcbiAgICAgICAgICB0YWJsZVJvd3MucHVzaChbZ3Vlc3QubmFtZSxcbiAgICAgICAgICB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFByb2ZpbGVUeXBlVGV4dFtQcm9maWxlVHlwZVtndWVzdC5tVHlwZV1dKSxcbiAgICAgICAgICBndWVzdC5tb2JpbGUsXG4gICAgICAgICAgZ3Vlc3QuY2FyUGxhdGUsXG4gICAgICAgICAgdGhpcy5leHBvcnRGaWxlU2VydmljZS5nZXREYXRlRmllbGRWYWx1ZShhY3Rpb24uZmlsZVR5cGUsIGd1ZXN0LCAndmFsaWRGcm9tRGF0ZScpLFxuICAgICAgICAgIHRoaXMuZXhwb3J0RmlsZVNlcnZpY2UuZ2V0RGF0ZUZpZWxkVmFsdWUoYWN0aW9uLmZpbGVUeXBlLCBndWVzdCwgJ3ZhbGlkVG9EYXRlJyksXG4gICAgICAgICAgZ3Vlc3QuY29tcGFueU5hbWUsXG4gICAgICAgICAgZ3Vlc3Quc3ViQ29tcGFueU5hbWUsXG4gICAgICAgICAgdGhpcy5wYXJrZXJTZXJ2aWNlLmdldEhpc3RvcnlJdGVtQWN0aW9uKGd1ZXN0LmxvY2F0aW9uLCBudWxsKSxcbiAgICAgICAgICB0aGlzLmV4cG9ydEZpbGVTZXJ2aWNlLmdldERhdGVGaWVsZFZhbHVlKGFjdGlvbi5maWxlVHlwZSwgZ3Vlc3QsICdwcm9kdWNlZERhdGUnKV0pO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5leHBvcnRGaWxlU2VydmljZS5leHBvcnQoYWN0aW9uLmZpbGVUeXBlLCB0YWJsZVJvd3MsIGFjdGlvbi5jb2x1bW5zSGVhZGVyLCBMb2NhbGl6YXRpb24uZ3Vlc3RzKTtcbiAgICAgIH0sXG4gICAgICBlcnJvcjogKCkgPT4ge1xuICAgICAgICB0aGlzLm1lc3NhZ2VCYXJTZXJ2aWNlLmVycm9yKHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KHRoaXMuTC5mYWlsZWRfZXhwb3J0X2ZpbGUpKTtcbiAgICAgIH1cbiAgICB9KSk7XG4gIH1cblxuICB0b0RhdGVTdHJpbmcgPSAodmFsdWU6IE1vbWVudCkgPT4gdGhpcy5kYXRlUGlwZS50cmFuc2Zvcm0odmFsdWUudG9EYXRlKCksIHRoaXMudGVuYW50U2VydmljZS5zZWNvbmRhcnlEYXRlVGltZUZvcm1hdCkgfHwgJy0nO1xuXG4gIHByaXZhdGUgYW5hbHl0aWNzVHJhY2tBY3Rpb24oY29uZmlnOiBDb21tYW5kTm90aWZpY2F0aW9uQ29uZmlnLCBhY3Rpb246IFVwZGF0ZUd1ZXN0TG9jYXRpb25BY3Rpb24pIHtcbiAgICBjb25zdCBpc1N1Y2Nlc3MgPSBjb25maWc/LmRpc3BsYXlDYXNlVHlwZSA9PT0gQ29tbWFuZE5vdGlmaWNhdGlvbkRpc3BsYXlDYXNlLlN1Y2Nlc3M7XG4gICAgYWN0aW9uLmFuYWx5dGljc1BheWxvYWQuc3VjY2VzcyA9IGlzU3VjY2VzcztcbiAgICB0aGlzLmFuYWx5dGljc1NlcnZpY2UudHJhY2soY29uZmlnLmNvbW1hbmQsIGFjdGlvbi5hbmFseXRpY3NQYXlsb2FkKTtcbiAgfVxuXG4gIHByaXZhdGUgYWRkR3Vlc3RzQnlCYXRjaElkVG9TdG9yZShjdHg6IFN0YXRlQ29udGV4dDxHdWVzdFN0YXRlTW9kZWw+LCBiYXRjaElEOiBudW1iZXIsIGd1ZXN0czogVkd1ZXN0V2l0aEJhdGNoRHRvW10pIHtcbiAgICBjb25zdCBkaXNwbGF5ZWRHdXNldEJhdGNoZXMgPSBjdHguZ2V0U3RhdGUoKS5kaXNwbGF5ZWQ7XG4gICAgY29uc3QgZ3Vlc3RCYXRjaEluZGV4ID0gZGlzcGxheWVkR3VzZXRCYXRjaGVzLmZpbmRJbmRleChnYiA9PiBnYi5iYXRjaElEID09PSBiYXRjaElEKTtcbiAgICBpZiAoZ3Vlc3RCYXRjaEluZGV4ICE9PSAtMSkge1xuICAgICAgZGlzcGxheWVkR3VzZXRCYXRjaGVzW2d1ZXN0QmF0Y2hJbmRleF0uZW50aXRpZXMgPSBndWVzdHM7XG4gICAgICBkaXNwbGF5ZWRHdXNldEJhdGNoZXMuc3BsaWNlKGd1ZXN0QmF0Y2hJbmRleCArIDEsIDAsIC4uLmd1ZXN0cyk7XG5cbiAgICAgIGN0eC5wYXRjaFN0YXRlKHtcbiAgICAgICAgZGlzcGxheWVkOiBbLi4uZGlzcGxheWVkR3VzZXRCYXRjaGVzXSxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY29udmVydEd1ZXN0c1RvVGFibGVEYXRhKGd1ZXN0czogVkd1ZXN0V2l0aEJhdGNoRHRvW10pOiBWR3Vlc3RXaXRoQmF0Y2hUYWJsZURhdGEge1xuICAgIGNvbnN0IGJhdGNoOiBWR3Vlc3RXaXRoQmF0Y2hUYWJsZURhdGEgPSBndWVzdHMuZmluZChnID0+IGcuYmF0Y2hJRCA+IDAgJiYgZy5ndWVzdElEID09PSBudWxsKSBhcyBhbnk7XG4gICAgYmF0Y2guaXNSb3dFeHBhbmRhYmxlID0gdHJ1ZTtcbiAgICBiYXRjaC5lbnRpdGllcyA9IGd1ZXN0cy5maWx0ZXIoZyA9PiBnLmJhdGNoSUQgIT09IG51bGwgJiYgZy5ndWVzdElEICE9PSBudWxsKTtcbiAgICByZXR1cm4gYmF0Y2g7XG4gIH1cblxuICBwcml2YXRlIGFkZEd1ZXN0VG9TdG9yZShjdHg6IFN0YXRlQ29udGV4dDxHdWVzdFN0YXRlTW9kZWw+LCBndWVzdDogVkd1ZXN0V2l0aEJhdGNoRHRvLCBkaXNwbGF5TmV3R3Vlc3RJblRhYmxlOiBib29sZWFuKSB7XG4gICAgaWYgKGRpc3BsYXlOZXdHdWVzdEluVGFibGUpIHtcbiAgICAgIGNvbnN0IGRpc3BsYXllZEd1ZXN0cyA9IGN0eC5nZXRTdGF0ZSgpLmRpc3BsYXllZDtcbiAgICAgIG1hcmtFbnRpdGllc0FzQ2hhbmdlZChbZ3Vlc3RdLCBSb3dPcGVyYXRpb24uSW5zZXJ0KTtcbiAgICAgIGRpc3BsYXllZEd1ZXN0cy51bnNoaWZ0KGd1ZXN0KTtcbiAgICAgIGN0eC5wYXRjaFN0YXRlKHtcbiAgICAgICAgZGlzcGxheWVkOiBbLi4uZGlzcGxheWVkR3Vlc3RzXSxcbiAgICAgICAgY291bnRlcjogY3R4LmdldFN0YXRlKCkuY291bnRlciArIDEsXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGlzR3Vlc3RDcmVhdGVkRnJvbVNlbGVjdGVkRmFjaWxpdHkoZ3Vlc3Q6IFZHdWVzdFdpdGhCYXRjaER0bywgZ3VpZDogc3RyaW5nKSB7XG4gICAgY29uc3Qgc2VsZWN0ZWRQYXJrSUQgPSB0aGlzLnN0b3JlLnNlbGVjdFNuYXBzaG90KEZhY2lsaXR5U3RhdGUucGFya0lkKTtcbiAgICBjb25zdCBzZWxlY3RlZEd1aWQgPSB0aGlzLnN0b3JlLnNlbGVjdFNuYXBzaG90KEZhY2lsaXR5U3RhdGUuZ3VpZCk7XG4gICAgcmV0dXJuIHNlbGVjdGVkUGFya0lEID09PSBndWVzdC5wYXJrSUQgJiYgc2VsZWN0ZWRHdWlkID09PSBndWlkO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRQYXJhbnRBbmRDaGlsZEluZGV4KGN0eDogU3RhdGVDb250ZXh0PEd1ZXN0U3RhdGVNb2RlbD4sIGd1ZXN0RHRvOiBWR3Vlc3RXaXRoQmF0Y2hEdG8pOiB7IHBhcmVudDogbnVtYmVyLCBjaGlsZDogbnVtYmVyOyB9IHtcbiAgICBjb25zdCBkaXNwbGF5ZWRHdWVzdHMgPSBjdHguZ2V0U3RhdGUoKS5kaXNwbGF5ZWQ7XG4gICAgLy8gaWYgSSBhbSBjaGlsZHJlbiBmaW5kIG15IHBhcmVudCwgYWZ0ZXIgdGhhdCBmaW5kIG1lXG4gICAgY29uc3QgcGFyZW50ID0gZGlzcGxheWVkR3Vlc3RzLmZpbmRJbmRleChndWVzdCA9PiBndWVzdC5iYXRjaElEID09PSBndWVzdER0by5iYXRjaElEICYmIGd1ZXN0Lmd1ZXN0SUQgPT09IG51bGwpO1xuICAgIGNvbnN0IGNoaWxkID0gKGRpc3BsYXllZEd1ZXN0c1twYXJlbnRdLmVudGl0aWVzIHx8IFtdKS5maW5kSW5kZXgoZ3Vlc3QgPT4gZ3Vlc3QuZ3Vlc3RJRCA9PT0gZ3Vlc3REdG8uZ3Vlc3RJRCk7XG4gICAgcmV0dXJuIHsgcGFyZW50LCBjaGlsZCB9O1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVHdWVzdEluU3RvcmUoY3R4OiBTdGF0ZUNvbnRleHQ8R3Vlc3RTdGF0ZU1vZGVsPiwgZ3Vlc3Q6IFZHdWVzdFdpdGhCYXRjaER0bywgZ3VpZDogc3RyaW5nKSB7XG4gICAgY29uc3QgZGlzcGxheWVkR3Vlc3RzID0gY3R4LmdldFN0YXRlKCkuZGlzcGxheWVkO1xuICAgIGNvbnN0IGd1ZXN0SW5kZXggPSB0aGlzLmdldEd1ZXN0SW5kZXgoZGlzcGxheWVkR3Vlc3RzLCBndWVzdC5ndWVzdElEKTtcblxuICAgIGlmIChndWVzdEluZGV4ICE9PSAtMSkge1xuICAgICAgZGlzcGxheWVkR3Vlc3RzW2d1ZXN0SW5kZXhdID0gZ3Vlc3Q7XG4gICAgICBtYXJrRW50aXRpZXNBc0NoYW5nZWQoW2d1ZXN0XSwgUm93T3BlcmF0aW9uLlVwZGF0ZSk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuaXNHdWVzdENoaWxkKGd1ZXN0KSkge1xuICAgICAgY29uc3QgeyBjaGlsZCwgcGFyZW50IH0gPSB0aGlzLmdldFBhcmFudEFuZENoaWxkSW5kZXgoY3R4LCBndWVzdCk7XG4gICAgICBpZiAocGFyZW50ICE9PSAtMSkge1xuICAgICAgICBpZiAoY2hpbGQgIT09IC0xKSB7XG4gICAgICAgICAgZGlzcGxheWVkR3Vlc3RzW3BhcmVudF0uZW50aXRpZXNbY2hpbGRdID0gZ3Vlc3Q7XG4gICAgICAgIH1cbiAgICAgICAgbWFya0VudGl0aWVzQXNDaGFuZ2VkKFtkaXNwbGF5ZWRHdWVzdHNbcGFyZW50XV0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIGN0eC5wYXRjaFN0YXRlKHtcbiAgICAgIGRpc3BsYXllZDogWy4uLmRpc3BsYXllZEd1ZXN0c10sXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGRlbGV0ZUd1ZXN0RnJvbVN0b3JlKGN0eDogU3RhdGVDb250ZXh0PEd1ZXN0U3RhdGVNb2RlbD4sIGd1ZXN0OiBWR3Vlc3RXaXRoQmF0Y2hEdG8sIGd1aWQ6IHN0cmluZykge1xuICAgIGxldCBjb3VudGVyID0gY3R4LmdldFN0YXRlKCkuY291bnRlcjtcblxuICAgIGNvbnN0IGRpc3BsYXllZEd1ZXN0cyA9IGN0eC5nZXRTdGF0ZSgpLmRpc3BsYXllZDtcbiAgICBjb25zdCBndWVzdEluZGV4ID0gdGhpcy5nZXRHdWVzdEluZGV4KGRpc3BsYXllZEd1ZXN0cywgZ3Vlc3QuZ3Vlc3RJRCk7XG5cbiAgICBpZiAoZ3Vlc3RJbmRleCAhPT0gLTEpIHtcbiAgICAgIGRpc3BsYXllZEd1ZXN0cy5zcGxpY2UoZ3Vlc3RJbmRleCwgMSk7XG4gICAgICBtYXJrRW50aXRpZXNBc0NoYW5nZWQoW2d1ZXN0XSwgUm93T3BlcmF0aW9uLkRlbGV0ZSk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuaXNHdWVzdENoaWxkKGd1ZXN0KSkge1xuICAgICAgY29uc3QgeyBjaGlsZCwgcGFyZW50IH0gPSB0aGlzLmdldFBhcmFudEFuZENoaWxkSW5kZXgoY3R4LCBndWVzdCk7XG4gICAgICBpZiAocGFyZW50ICE9PSAtMSkge1xuICAgICAgICBpZiAoY2hpbGQgIT09IC0xKSB7XG4gICAgICAgICAgZGlzcGxheWVkR3Vlc3RzW3BhcmVudF0uZW50aXRpZXMuc3BsaWNlKGNoaWxkLCAxKTtcbiAgICAgICAgfVxuICAgICAgICBtYXJrRW50aXRpZXNBc0NoYW5nZWQoW2Rpc3BsYXllZEd1ZXN0c1twYXJlbnRdXSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvdW50ZXItLTtcbiAgICB9XG5cbiAgICBjdHgucGF0Y2hTdGF0ZSh7XG4gICAgICBkaXNwbGF5ZWQ6IFsuLi5kaXNwbGF5ZWRHdWVzdHNdLFxuICAgICAgY291bnRlcjogY291bnRlcixcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgcG9wdWxhdGVTZW5kRW1haWxSZXF1ZXN0KGFjdGlvbjogU2VuZEd1ZXN0UGFzc2VzVG9FbWFpbEFjdGlvbikge1xuICAgIGxldCBwZGZQYWdlc1BhcmFtZXRlcnNMaXN0OiB7IFtrZXk6IHN0cmluZ106IGFueTsgfVtdID0gW107XG4gICAgbGV0IGd1ZXN0RW1haWxUZW1wbGF0ZSA9ICcnO1xuICAgIGlmIChhY3Rpb24uZ3Vlc3QuZW50aXRpZXMgJiYgYWN0aW9uLmd1ZXN0LmVudGl0aWVzLmxlbmd0aCA+IDApIHtcbiAgICAgIHBkZlBhZ2VzUGFyYW1ldGVyc0xpc3QgPSBbXTtcbiAgICAgIGFjdGlvbi5ndWVzdC5lbnRpdGllcy5mb3JFYWNoKGd1ZXN0ID0+IHtcbiAgICAgICAgY29uc3QgcGFyYW1MaXN0ID0gdGhpcy5nZXRQYXJhbWV0ZXJzKGd1ZXN0LCBhY3Rpb24uZmFjaWxpdHkpO1xuICAgICAgICBwZGZQYWdlc1BhcmFtZXRlcnNMaXN0LnB1c2gocGFyYW1MaXN0KTtcbiAgICAgIH0pO1xuICAgICAgZ3Vlc3RFbWFpbFRlbXBsYXRlID0gYWN0aW9uLmd1ZXN0LmJhdGNoTmFtZTtcblxuICAgIH0gZWxzZSB7XG4gICAgICBwZGZQYWdlc1BhcmFtZXRlcnNMaXN0LnB1c2godGhpcy5nZXRQYXJhbWV0ZXJzKGFjdGlvbi5ndWVzdCwgYWN0aW9uLmZhY2lsaXR5KSk7XG4gICAgICBndWVzdEVtYWlsVGVtcGxhdGUgPSBhY3Rpb24uZ3Vlc3QubmFtZTtcbiAgICB9XG5cbiAgICBjb25zdCBzZW5kRW1haWxSZXF1ZXN0ID0gbmV3IFNlbmRFbWFpbFJlcXVlc3REdG8oe1xuICAgICAgZW50aXR5OiBuZXcgR3Vlc3RFbnRpdHlQYXJhbXMoe1xuICAgICAgICBxclBsYWluVGV4dDogYWN0aW9uLmd1ZXN0LnFyUGxhaW5UZXh0LFxuICAgICAgICBpZDogYWN0aW9uLmd1ZXN0Lmd1ZXN0SUQgfHwgYWN0aW9uLmd1ZXN0LmJhdGNoSUQsXG4gICAgICAgIHFyQ29kZTogYWN0aW9uLmd1ZXN0LnFyQ29kZSxcbiAgICAgIH0pLFxuICAgICAgdG86IGFjdGlvbi5lbWFpbCxcbiAgICAgIHRlbXBsYXRlVHlwZTogVGVtcGxhdGVUeXBlLkd1ZXN0LFxuICAgICAgcGRmUGFnZXNQYXJhbWV0ZXJzTGlzdCxcbiAgICAgIHBkZlBhZ2VzUGFyYW1ldGVyczogbnVsbCwgLy8gYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgdmVyc2lvbiA4LjJcbiAgICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgICAgZ3Vlc3RFbWFpbFRlbXBsYXRlLFxuICAgICAgfSxcbiAgICAgIGlzTXVsdGlQYWdlc0ZpbGU6IGFjdGlvbi5pc011bHRpUGFnZXNGaWxlXG4gICAgfSk7XG4gICAgcmV0dXJuIHNlbmRFbWFpbFJlcXVlc3Q7XG4gIH1cblxuICBwcml2YXRlIGdldFBhcmFtZXRlcnMoZ3Vlc3Q6IFZHdWVzdFdpdGhCYXRjaER0bywgZmFjaWxpdHk6IEZhY2lsaXR5V2l0aEd1aWQpOiB7IFtrZXk6IHN0cmluZ106IGFueTsgfSB7XG4gICAgY29uc3QgcGFyYW1ldGVycyA9IHtcbiAgICAgIHZhbGlkRnJvbURhdGVUaW1lOiB0aGlzLnRvRGF0ZVN0cmluZyhndWVzdC52YWxpZEZyb21EYXRlKSxcbiAgICAgIHZhbGlkVG9EYXRlVGltZTogdGhpcy50b0RhdGVTdHJpbmcoZ3Vlc3QudmFsaWRUb0RhdGUpLFxuICAgICAgY29tcGFueU5hbWU6IGd1ZXN0LmNvbXBhbnlOYW1lLFxuICAgICAgc3ViQ29tcGFueU5hbWU6IGd1ZXN0LnN1YkNvbXBhbnlOYW1lLFxuICAgICAgcGFya05hbWU6IGZhY2lsaXR5Py5kYXRhPy5uYW1lLFxuICAgICAgcHJvZHVjZWREYXRlVGltZTogdGhpcy50b0RhdGVTdHJpbmcoZ3Vlc3QucHJvZHVjZWREYXRlKSxcbiAgICAgIGlkOiBndWVzdC5ndWVzdElELFxuICAgICAgZmlyc3ROYW1lOiBndWVzdC5maXJzdE5hbWUsXG4gICAgICBsYXN0TmFtZTogZ3Vlc3QubGFzdE5hbWUsXG4gICAgICBwbGF0ZUlkOiBndWVzdC5jYXJQbGF0ZSxcbiAgICAgIG5hbWU6IGd1ZXN0Lm5hbWUsXG4gICAgICBjYXJkOiBndWVzdC5jcmVkaXQsXG4gICAgICBhZGRyZXNzOiBnZXRBZGRyZXNzKGd1ZXN0LmNpdHksIGd1ZXN0LnN0cmVldCksXG4gICAgICBxckNvZGU6IGd1ZXN0LnFyQ29kZSxcbiAgICAgIGd1aWQ6IGZhY2lsaXR5Lmd1aWQsXG4gICAgICBwYXJrSWQ6IGZhY2lsaXR5LmRhdGEuaWQsXG4gICAgICBxclBsYWluVGV4dDogZ3Vlc3QucXJQbGFpblRleHRcbiAgICB9O1xuXG4gICAgcmV0dXJuIHBhcmFtZXRlcnM7XG4gIH1cblxuICBwcml2YXRlIGlzR3Vlc3RDaGlsZCA9IChndWVzdDogVkd1ZXN0V2l0aEJhdGNoRHRvKSA9PiBndWVzdC5ndWVzdElEICE9PSBudWxsICYmIGd1ZXN0LmJhdGNoSUQgPiAwO1xuXG4gIHByaXZhdGUgZ2V0R3Vlc3RJbmRleChkaXNwbGF5ZWRHdWVzdHM6IFZHdWVzdFdpdGhCYXRjaER0b1tdLCBndWVzdElkOiBudW1iZXIpOiBudW1iZXIge1xuICAgIHJldHVybiBkaXNwbGF5ZWRHdWVzdHMuZmluZEluZGV4KGd1ZXN0ID0+IGd1ZXN0Lmd1ZXN0SUQgPT09IGd1ZXN0SWQpO1xuICB9XG5cbiAgcHJpdmF0ZSBvblVwZGF0ZUJhc2ljR3Vlc3ROZXh0KGN0eDogU3RhdGVDb250ZXh0PEd1ZXN0U3RhdGVNb2RlbD4sIGFjdGlvbjogVXBkYXRlQmFzaWNHdWVzdEFjdGlvbiwgaGFuZGxlZDogVkd1ZXN0V2l0aEJhdGNoRHRvSHR0cFJlc3BvbnNlRGF0YSwgbWVzc2FnZUJhclBheWxvYWQ6IE1lc3NhZ2VCYXJQYXlsb2FkKSB7XG4gICAgdGhpcy51cGRhdGVHdWVzdEluU3RvcmUoY3R4LCBoYW5kbGVkLmRhdGEsIGFjdGlvbi5ndWlkKTtcbiAgICB0aGlzLm1lc3NhZ2VCYXJTZXJ2aWNlLnN1Y2Nlc3MoXG4gICAgICBMb2NhbGl6YXRpb24uZW50aXR5X3N1Y2Nlc3MsXG4gICAgICBjcmVhdGVNZXNzYWdlVGV4dChtZXNzYWdlQmFyUGF5bG9hZClcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBvblVwZGF0ZUJhc2ljR3Vlc3RFcnJvcihtZXNzYWdlQmFyUGF5bG9hZDogTWVzc2FnZUJhclBheWxvYWQpIHtcbiAgICBtZXNzYWdlQmFyUGF5bG9hZC5lbnRpdHkgPSBsb3dlckNhc2VGaXJzdExldHRlcihcbiAgICAgIG1lc3NhZ2VCYXJQYXlsb2FkLmVudGl0eVxuICAgICk7XG4gICAgbWVzc2FnZUJhclBheWxvYWQuYWN0aW9uID0gbG93ZXJDYXNlRmlyc3RMZXR0ZXIoXG4gICAgICB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KExvY2FsaXphdGlvbi51cGRhdGUpXG4gICAgKTtcbiAgICB0aGlzLm1lc3NhZ2VCYXJTZXJ2aWNlLmVycm9yKFxuICAgICAgTG9jYWxpemF0aW9uLmVudGl0eV9mYWlsZWQsXG4gICAgICBjcmVhdGVNZXNzYWdlVGV4dChtZXNzYWdlQmFyUGF5bG9hZClcbiAgICApO1xuICB9XG59XG4iXX0=
|
|
613
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3Vlc3Quc3RhdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jbGllbnQtc2hhcmVkLWxpYi9zcmMvbGlicmFyaWVzL21vZHVsZXMvZ3Vlc3QvZ3Vlc3Quc3RhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVyRCxPQUFPLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQXVCLE1BQU0sYUFBYSxDQUFDO0FBRTNFLE9BQU8sRUFBRSxJQUFJLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFDeEMsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBR3JDLE9BQU8sRUFBNkIsOEJBQThCLEVBQUUsTUFBTSxnRkFBZ0YsQ0FBQztBQUUzSixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxtREFBbUQsQ0FBQztBQUN0RixPQUFPLEVBQUUsWUFBWSxFQUFFLGVBQWUsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUM1RCxPQUFPLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUl0RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsVUFBVSxFQUFFLG9CQUFvQixFQUFFLHFCQUFxQixFQUFFLHFCQUFxQixFQUFFLFlBQVksRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUM5SSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUVqRixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFM0QsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3hELE9BQU8sRUFD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ZjtLQUNGLENBQUM7R0FDVyxVQUFVLENBZ21CdEI7OzRGQWhtQlksVUFBVTtrQkFadEIsVUFBVTs7MEJBeUJOLFFBQVE7b0dBK0JYLHFCQUFxQixNQVVyQixrQkFBa0IsTUFPbEIsa0JBQWtCLE1BV2xCLGlCQUFpQixNQU9qQixzQkFBc0IsTUFTdEIsbUJBQW1CLE1BZ0NuQixtQkFBbUIsTUFtQ25CLHdCQUF3QixNQW1DeEIsbUJBQW1CLE1BK0JuQiwyQkFBMkIsTUFlM0IsbUJBQW1CLE1BcUJuQix3QkFBd0IsTUF5QnhCLHdCQUF3QixNQWN4Qix3QkFBd0IsTUFReEIscUJBQXFCLE1BUXJCLG9DQUFvQyxNQWdCcEMsNkJBQTZCLE1BSzdCLGdDQUFnQyxNQVloQyx5QkFBeUIsTUFxQnpCLDBCQUEwQixNQU8xQix3QkFBd0IsTUFleEIsb0JBQW9CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGF0ZVBpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSwgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IEFjdGlvbiwgU2VsZWN0b3IsIFN0YXRlLCBTdGF0ZUNvbnRleHQsIFN0b3JlIH0gZnJvbSAnQG5neHMvc3RvcmUnO1xuaW1wb3J0IHsgTW9tZW50IH0gZnJvbSAnbW9tZW50JztcbmltcG9ydCB7IGZyb20sIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IE1lc3NhZ2VCYXJQYXlsb2FkIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9tZXNzYWdlLWJhci9tZXNzYWdlLWJhci10ZXh0LmludGVyZmFjZSc7XG5pbXBvcnQgeyBNZXNzYWdlQmFyU2VydmljZSB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvbWVzc2FnZS1iYXIvbWVzc2FnZS1iYXIuc2VydmljZSc7XG5pbXBvcnQgeyBDb21tYW5kTm90aWZpY2F0aW9uQ29uZmlnLCBDb21tYW5kTm90aWZpY2F0aW9uRGlzcGxheUNhc2UgfSBmcm9tICcuLi8uLi9jb21wb25lbnRzL25vdGlmaWNhdGlvbi9jb21tYW5kLW5vdGlmaWNhdGlvbi9jb21tYW5kLW5vdGlmaWNhdGlvbi1jb25maWcnO1xuaW1wb3J0IHsgQ29tbWFuZE5vdGlmaWNhdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb21wb25lbnRzL25vdGlmaWNhdGlvbi9jb21tYW5kLW5vdGlmaWNhdGlvbi9jb21tYW5kLW5vdGlmaWNhdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IE5vdGlmaWNhdGlvbkNsYXNzIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9ub3RpZmljYXRpb24vbm90aWZpY2F0aW9uLWNvbmZpZyc7XG5pbXBvcnQgeyBMb2NhbGl6YXRpb24sIFByb2ZpbGVUeXBlVGV4dCB9IGZyb20gJy4uLy4uL2VudW1zJztcbmltcG9ydCB7IENsb3VkLCBScGMgfSBmcm9tICcuLi8uLi9zZXJ2aWNlLXByb3h5JztcbmltcG9ydCB7IFN1Yk1vZHVsZSB9IGZyb20gJy4uLy4uL3NlcnZpY2UtcHJveHkvY2xvdWQtc2VydmljZS1wcm94aWVzJztcbmltcG9ydCB7IEFuYWx5dGljc1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9hbmFseXRpY3Muc2VydmljZSc7XG5pbXBvcnQgeyBFeHBvcnRGaWxlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2V4cG9ydC1maWxlLnNlcnZpY2UnO1xuaW1wb3J0IHsgVGVuYW50U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3RlbmFudC5zZXJ2aWNlJztcbmltcG9ydCB7IGNyZWF0ZU1lc3NhZ2VUZXh0LCBnZXRBZGRyZXNzLCBsb3dlckNhc2VGaXJzdExldHRlciwgbWFya0VudGl0aWVzQXNDaGFuZ2VkLCBtYXJrRW50aXR5QXNVbmNoYW5nZWQsIFJvd09wZXJhdGlvbiB9IGZyb20gJy4uLy4uL3V0aWxzJztcbmltcG9ydCB7IFNlbmRFbWFpbEZyb21FbnRpdHlBY3Rpb24gfSBmcm9tICcuLi9lbWFpbC1zZXJ2ZXIvZW1haWwtc2VydmVyLmFjdGlvbnMnO1xuaW1wb3J0IHsgRmFjaWxpdHlXaXRoR3VpZCB9IGZyb20gJy4uL2ZhY2lsaXR5L2ZhY2lsaXR5LXdpdGgtZ3VpZC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgRmFjaWxpdHlTdGF0ZSB9IGZyb20gJy4uL2ZhY2lsaXR5L2ZhY2lsaXR5LnN0YXRlJztcbmltcG9ydCB7IFBhcmtlclNlcnZpY2UgfSBmcm9tICcuLi9wYXJrZXIvcGFya2VyLnNlcnZpY2UnO1xuaW1wb3J0IHsgU2lkZW5hdlN0YXRlIH0gZnJvbSAnLi4vc2lkZW5hdi9zaWRlbmF2LnN0YXRlJztcbmltcG9ydCB7XG4gIENsZWFyR3Vlc3RBY3Rpb24sIENsZWFyR3Vlc3RQcm9maWxlc0FjdGlvbiwgQ2xlYXJHdWVzdHNMaXN0QWN0aW9uLCBDb2xsYXBzZWRHdWVzdHNCeUJhdGNoSWRBY3Rpb24sXG4gIENyZWF0ZUJhc2ljQmF0Y2hBY3Rpb24sIENyZWF0ZUJhc2ljR3Vlc3RBY3Rpb24sIENyZWF0ZUJhdGNoQWN0aW9uLCBDcmVhdGVHdWVzdEFjdGlvbiwgRGVsZXRlR3Vlc3RBY3Rpb24sXG4gIEV4cGFuZEd1ZXN0c0J5QmF0Y2hJZEFjdGlvbiwgRXhwb3J0R3Vlc3RzQWN0aW9uLCBMb2FkR3Vlc3RCeUlkQWN0aW9uLCBMb2FkR3Vlc3RQcm9maWxlc0FjdGlvbiwgTG9hZEd1ZXN0c0FjdGlvbixcbiAgTG9hZEd1ZXN0c0J5QmF0Y2hJZEFjdGlvbiwgTG9hZEd1ZXN0c0J5QmF0Y2hJZENhbmNlbGxlZEFjdGlvbiwgU2VuZEVtYWlsVG9HdWVzdEFjdGlvbiwgU2VuZEd1ZXN0UGFzc2VzVG9FbWFpbEFjdGlvbixcbiAgU2V0R3Vlc3RzQWN0aW9uLCBVcGRhdGVCYXNpY0d1ZXN0QWN0aW9uLCBVcGRhdGVHdWVzdEFjdGlvbiwgVXBkYXRlR3Vlc3RMb2NhdGlvbkFjdGlvblxufSBmcm9tICcuL2d1ZXN0LmFjdGlvbnMnO1xuXG5pbXBvcnQgR3Vlc3RFbnRpdHlQYXJhbXMgPSBScGMuR3Vlc3RFbnRpdHlQYXJhbXM7XG5pbXBvcnQgR3Vlc3RQcm9maWxlRHRvID0gUnBjLkd1ZXN0UHJvZmlsZUR0bztcbmltcG9ydCBJbnQzMkh0dHBSZXNwb25zZURhdGEgPSBScGMuSW50MzJIdHRwUmVzcG9uc2VEYXRhO1xuaW1wb3J0IFByb2JsZW1EZXRhaWxzSHR0cFJlc3BvbnNlRGF0YSA9IFJwYy5Qcm9ibGVtRGV0YWlsc0h0dHBSZXNwb25zZURhdGE7XG5pbXBvcnQgUHJvZmlsZVR5cGUgPSBScGMuUHJvZmlsZVR5cGU7XG5pbXBvcnQgVkd1ZXN0V2l0aEJhdGNoRHRvID0gUnBjLlZHdWVzdFdpdGhCYXRjaER0bztcbmltcG9ydCBWR3Vlc3RXaXRoQmF0Y2hEdG9FbnRpdHlXcmFwcGVyRHRvSHR0cFJlc3BvbnNlRGF0YSA9IFJwYy5WR3Vlc3RXaXRoQmF0Y2hEdG9FbnRpdHlXcmFwcGVyRHRvSHR0cFJlc3BvbnNlRGF0YTtcbmltcG9ydCBWR3Vlc3RXaXRoQmF0Y2hEdG9IdHRwUmVzcG9uc2VEYXRhID0gUnBjLlZHdWVzdFdpdGhCYXRjaER0b0h0dHBSZXNwb25zZURhdGE7XG5pbXBvcnQgVkd1ZXN0V2l0aEJhdGNoRHRvSUVudW1lcmFibGVIdHRwUmVzcG9uc2VEYXRhID0gUnBjLlZHdWVzdFdpdGhCYXRjaER0b0lFbnVtZXJhYmxlSHR0cFJlc3BvbnNlRGF0YTtcbmltcG9ydCBTZW5kRW1haWxSZXF1ZXN0RHRvID0gQ2xvdWQuU2VuZEVtYWlsUmVxdWVzdER0bztcbmltcG9ydCBUZW1wbGF0ZVR5cGUgPSBDbG91ZC5UZW1wbGF0ZVR5cGU7XG5cbmV4cG9ydCBjbGFzcyBWR3Vlc3RXaXRoQmF0Y2hUYWJsZURhdGEgZXh0ZW5kcyBWR3Vlc3RXaXRoQmF0Y2hEdG8ge1xuICBlbnRpdGllczogVkd1ZXN0V2l0aEJhdGNoRHRvW107XG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIEd1ZXN0U3RhdGVNb2RlbCB7XG4gIGFyY2hpdmVkOiBWR3Vlc3RXaXRoQmF0Y2hEdG9bXTtcbiAgZGlzcGxheWVkOiBWR3Vlc3RXaXRoQmF0Y2hEdG9bXTtcbiAgY291bnRlcjogbnVtYmVyO1xuICBndWVzdDogVkd1ZXN0V2l0aEJhdGNoRHRvO1xuICBwcm9maWxlczogR3Vlc3RQcm9maWxlRHRvW107XG4gIHNlbGVjdGVkOiBWR3Vlc3RXaXRoQmF0Y2hEdG87XG59XG5cbkBJbmplY3RhYmxlKClcbkBTdGF0ZTxHdWVzdFN0YXRlTW9kZWw+KHtcbiAgbmFtZTogJ2d1ZXN0JyxcbiAgZGVmYXVsdHM6IHtcbiAgICBhcmNoaXZlZDogW10sXG4gICAgZGlzcGxheWVkOiBbXSxcbiAgICBjb3VudGVyOiAwLFxuICAgIGd1ZXN0OiBudWxsLFxuICAgIHByb2ZpbGVzOiBbXSxcbiAgICBzZWxlY3RlZDogbnVsbCxcbiAgfSxcbn0pXG5leHBvcnQgY2xhc3MgR3Vlc3RTdGF0ZSB7XG4gIGRhdGVQaXBlID0gbmV3IERhdGVQaXBlKCdlbi1VUycpO1xuICBMID0gTG9jYWxpemF0aW9uO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgc3RvcmU6IFN0b3JlLFxuICAgIHByaXZhdGUgZ3Vlc3RScGNTZXJ2aWNlUHJveHk6IFJwYy5HdWVzdFJwY1NlcnZpY2VQcm94eSxcbiAgICBwcml2YXRlIHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICBwcml2YXRlIGJhdGNoUnBjU2VydmljZVByb3h5OiBScGMuQmF0Y2hScGNTZXJ2aWNlUHJveHksXG4gICAgcHJpdmF0ZSBtZXNzYWdlQmFyU2VydmljZTogTWVzc2FnZUJhclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjb21tYW5kTm90aWZpY2F0aW9uU2VydmljZTogQ29tbWFuZE5vdGlmaWNhdGlvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgdGVuYW50U2VydmljZTogVGVuYW50U2VydmljZSxcbiAgICBAT3B0aW9uYWwoKSBwcml2YXRlIGV4cG9ydEZpbGVTZXJ2aWNlOiBFeHBvcnRGaWxlU2VydmljZSB8IG51bGwsXG4gICAgcHJpdmF0ZSBwYXJrZXJTZXJ2aWNlOiBQYXJrZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgYW5hbHl0aWNzU2VydmljZTogQW5hbHl0aWNzU2VydmljZSkge1xuICB9XG5cbiAgQFNlbGVjdG9yKClcbiAgcHVibGljIHN0YXRpYyBndWVzdENvdW50ZXIoc3RhdGU6IEd1ZXN0U3RhdGVNb2RlbCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHN0YXRlLmNvdW50ZXI7XG4gIH1cblxuICBAU2VsZWN0b3IoKVxuICBwdWJsaWMgc3RhdGljIGFyY2hpdmVkR3Vlc3RzKHN0YXRlOiBHdWVzdFN0YXRlTW9kZWwpOiBWR3Vlc3RXaXRoQmF0Y2hEdG9bXSB7XG4gICAgcmV0dXJuIHN0YXRlLmFyY2hpdmVkO1xuICB9XG5cbiAgQFNlbGVjdG9yKClcbiAgcHVibGljIHN0YXRpYyBkaXNwbGF5ZWRHdWVzdHMoc3RhdGU6IEd1ZXN0U3RhdGVNb2RlbCk6IFZHdWVzdFdpdGhCYXRjaER0b1tdIHtcbiAgICByZXR1cm4gc3RhdGUuZGlzcGxheWVkO1xuICB9XG5cbiAgQFNlbGVjdG9yKClcbiAgcHVibGljIHN0YXRpYyBwcm9maWxlcyhzdGF0ZTogR3Vlc3RTdGF0ZU1vZGVsKTogR3Vlc3RQcm9maWxlRHRvW10ge1xuICAgIHJldHVybiBzdGF0ZS5wcm9maWxlcztcbiAgfVxuXG4gIEBTZWxlY3RvcigpXG4gIHB1YmxpYyBzdGF0aWMgc2VsZWN0ZWQoc3RhdGU6IEd1ZXN0U3RhdGVNb2RlbCk6IFZHdWVzdFdpdGhCYXRjaER0byB7XG4gICAgcmV0dXJuIHN0YXRlLnNlbGVjdGVkO1xuICB9XG5cbiAgQEFjdGlvbihMb2FkR3Vlc3RCeUlkQWN0aW9uLCB7IGNhbmNlbFVuY29tcGxldGVkOiB0cnVlIH0pXG4gIG9uTG9hZEd1ZXN0QnlJZEFjdGlvbihjdHg6IFN0YXRlQ29udGV4dDxHdWVzdFN0YXRlTW9kZWw+LCBhY3Rpb246IExvYWRHdWVzdEJ5SWRBY3Rpb24pOiBPYnNlcnZhYmxlPFZHdWVzdFdpdGhCYXRjaER0b0h0dHBSZXNwb25zZURhdGE+IHtcbiAgICBjb25zdCBnZXRHdWVzdCQgPSB0aGlzLmd1ZXN0UnBjU2VydmljZVByb3h5LmdldEd1ZXN0QnlJZChhY3Rpb24uZ3VpZCwgYWN0aW9uLnBhcmtJZCwgYWN0aW9uLmd1ZXN0SWQpO1xuICAgIHJldHVybiBnZXRHdWVzdCQucGlwZSh0YXAoZ3Vlc3QgPT4ge1xuICAgICAgY3R4LnBhdGNoU3RhdGUoe1xuICAgICAgICBzZWxlY3RlZDogZ3Vlc3QuZGF0YVxuICAgICAgfSk7XG4gICAgfSkpO1xuICB9XG5cbiAgQEFjdGlvbihDbGVhckd1ZXN0QWN0aW9uLCB7IGNhbmNlbFVuY29tcGxldGVkOiB0cnVlIH0pXG4gIG9uQ2xlYXJHdWVzdEFjdGlvbihjdHg6IFN0YXRlQ29udGV4dDxDbGVhckd1ZXN0QWN0aW9uPik6IHZvaWQge1xuICAgIGN0eC5wYXRjaFN0YXRlKHtcbiAgICAgIHNlbGVjdGVkOiBudWxsXG4gICAgfSk7XG4gIH1cblxuICBAQWN0aW9uKExvYWRHdWVzdHNBY3Rpb24sIHsgY2FuY2VsVW5jb21wbGV0ZWQ6IHRydWUgfSlcbiAgb25Mb2FkR3Vlc3RzQWN0aW9uKGN0eDogU3RhdGVDb250ZXh0PEd1ZXN0U3RhdGVNb2RlbD4sIGFjdGlvbjogTG9hZEd1ZXN0c0FjdGlvbik6IE9ic2VydmFibGU8Vkd1ZXN0V2l0aEJhdGNoRHRvRW50aXR5V3JhcHBlckR0b0h0dHBSZXNwb25zZURhdGE+IHtcbiAgICBjb25zdCBnZXRHdWVzdHMkID0gdGhpcy5ndWVzdFJwY1NlcnZpY2VQcm94eS5nZXRHdWVzdHMoYWN0aW9uLmd1aWQsIGFjdGlvbi5wYXJrSWQsIGFjdGlvbi5ndWVzdHNGaWx0ZXJEdG8pO1xuICAgIHJldHVybiBnZXRHdWVzdHMkLnBpcGUodGFwKChndWVzdHNXcmFwcGVyOiBWR3Vlc3RXaXRoQmF0Y2hEdG9FbnRpdHlXcmFwcGVyRHRvSHR0cFJlc3BvbnNlRGF0YSkgPT4ge1xuICAgICAgY3R4LnBhdGNoU3RhdGUoe1xuICAgICAgICBhcmNoaXZlZDogZ3Vlc3RzV3JhcHBlci5kYXRhLmVudGl0aWVzLFxuICAgICAgICBjb3VudGVyOiBndWVzdHNXcmFwcGVyLmRhdGEuY291bnRlcixcbiAgICAgIH0pO1xuICAgIH0pKTtcbiAgfVxuXG4gIEBBY3Rpb24oU2V0R3Vlc3RzQWN0aW9uKVxuICBvblNldEd1ZXN0c0FjdGlvbihjdHg6IFN0YXRlQ29udGV4dDxHdWVzdFN0YXRlTW9kZWw+LCBhY3Rpb246IFNldEd1ZXN0c0FjdGlvbikge1xuICAgIGN0eC5wYXRjaFN0YXRlKHtcbiAgICAgIGRpc3BsYXllZDogYWN0aW9uLmd1ZXN0cyB8fCBbXSxcbiAgICB9KTtcbiAgfVxuXG4gIEBBY3Rpb24oQ2xlYXJHdWVzdHNMaXN0QWN0aW9uKVxuICBvbkNsZWFyR3Vlc3RMaXN0QWN0aW9uKGN0eDogU3RhdGVDb250ZXh0PEd1ZXN0U3RhdGVNb2RlbD4pIHtcbiAgICBjdHgucGF0Y2hTdGF0ZSh7XG4gICAgICBhcmNoaXZlZDogW10sXG4gICAgICBkaXNwbGF5ZWQ6IFtdLFxuICAgICAgY291bnRlcjogMCxcbiAgICB9KTtcbiAgfVxuXG4gIEBBY3Rpb24oQ3JlYXRlR3Vlc3RBY3Rpb24pXG4gIG9uQ3JlYXRlR3Vlc3RBY3Rpb24oY3R4OiBTdGF0ZUNvbnRleHQ8R3Vlc3RTdGF0ZU1vZGVsPiwgYWN0aW9uOiBDcmVhdGVHdWVzdEFjdGlvbik6IE9ic2VydmFibGU8Vkd1ZXN0V2l0aEJhdGNoRHRvSHR0cFJlc3BvbnNlRGF0YT4ge1xuICAgIGNvbnN0IG1lc3NhZ2VCYXJQYXlsb2FkOiBNZXNzYWdlQmFyUGF5bG9hZCA9IHtcbiAgICAgIGVudGl0eTogdGhpcy50cmFuc2xhdGUuaW5zdGFudChMb2NhbGl6YXRpb24uZ3Vlc3QpLFxuICAgICAgZW50aXR5TmFtZTogYCR7YWN0aW9uLmd1ZXN0LmZpcnN0TmFtZX0gJHthY3Rpb24uZ3Vlc3QubGFzdE5hbWV9YCxcbiAgICAgIGFjdGlvbjogbG93ZXJDYXNlRmlyc3RMZXR0ZXIodGhpcy50cmFuc2xhdGUuaW5zdGFudChMb2NhbGl6YXRpb24uY3JlYXRlZCkpLFxuICAgIH07XG4gICAgdGhpcy5tZXNzYWdlQmFyU2VydmljZS5pbmZvKExvY2FsaXphdGlvbi5lbnRpdHlfaW5fcHJvZ3Jlc3MsIGNyZWF0ZU1lc3NhZ2VUZXh0KG1lc3NhZ2VCYXJQYXlsb2FkKSk7XG4gICAgcmV0dXJuIHRoaXMuZ3Vlc3RScGNTZXJ2aWNlUHJveHkuY3JlYXRlR3Vlc3QoYWN0aW9uLmd1aWQsIGFjdGlvbi5wYXJrSWQsIGFjdGlvbi5ndWVzdCkucGlwZSh0YXAoe1xuICAgICAgbmV4dDogKGhhbmRsZWQ6IFZHdWVzdFdpdGhCYXRjaER0b0h0dHBSZXNwb25zZURhdGEpID0+IHtcbiAgICAgICAgY29uc3QgZGlzcGxheU5ld0d1ZXN0SW5UYWJsZSA9IHRoaXMuaXNHdWVzdENyZWF0ZWRGcm9tU2VsZWN0ZWRGYWNpbGl0eShoYW5kbGVkLmRhdGEsIGFjdGlvbi5ndWlkKTtcbiAgICAgICAgdGhpcy5hZGRHdWVzdFRvU3RvcmUoY3R4LCBoYW5kbGVkLmRhdGEsIGRpc3BsYXlOZXdHdWVzdEluVGFibGUpO1xuICAgICAgICB0aGlzLm1lc3NhZ2VCYXJTZXJ2aWNlLnN1Y2Nlc3MoXG4gICAgICAgICAgZGlzcGxheU5ld0d1ZXN0SW5UYWJsZSA/IExvY2FsaXphdGlvbi5lbnRpdHlfc3VjY2VzcyA6IExvY2FsaXphdGlvbi5lbnRpdHlfc3VjY2Vzc19ub3RfY3VycmVudGx5X3Zpc2libGUsXG4gICAgICAgICAgY3JlYXRlTWVzc2FnZVRleHQobWVzc2FnZUJhclBheWxvYWQpXG4gICAgICAgICk7XG4gICAgICB9LFxuICAgICAgZXJyb3I6ICgpID0+IHtcbiAgICAgICAgbWVzc2FnZUJhclBheWxvYWQuZW50aXR5ID0gbG93ZXJDYXNlRmlyc3RMZXR0ZXIoXG4gICAgICAgICAgbWVzc2FnZUJhclBheWxvYWQuZW50aXR5XG4gICAgICAgICk7XG4gICAgICAgIG1lc3NhZ2VCYXJQYXlsb2FkLmFjdGlvbiA9IGxvd2VyQ2FzZUZpcnN0TGV0dGVyKFxuICAgICAgICAgIHRoaXMudHJhbnNsYXRlLmluc3RhbnQoTG9jYWxpemF0aW9uLmNyZWF0ZSlcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5tZXNzYWdlQmFyU2VydmljZS5lcnJvcihcbiAgICAgICAgICBMb2NhbGl6YXRpb24uZW50aXR5X2ZhaWxlZCxcbiAgICAgICAgICBjcmVhdGVNZXNzYWdlVGV4dChtZXNzYWdlQmFyUGF5bG9hZClcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9KSk7XG4gIH1cblxuICBAQWN0aW9uKENyZWF0ZUJhdGNoQWN0aW9uKVxuICBvbkNyZWF0ZUJhdGNoQWN0aW9uKGN0eDogU3RhdGVDb250ZXh0PEd1ZXN0U3RhdGVNb2RlbD4sIGFjdGlvbjogQ3JlYXRlQmF0Y2hBY3Rpb24pOiBPYnNlcnZhYmxlPFZHdWVzdFdpdGhCYXRjaER0b0lFbnVtZXJhYmxlSHR0cFJlc3BvbnNlRGF0YT4ge1xuICAgIGNvbnN0IG1lc3NhZ2VCYXJQYXlsb2FkOiBNZXNzYWdlQmFyUGF5bG9hZCA9IHtcbiAgICAgIGVudGl0eTogdGhpcy50cmFuc2xhdGUuaW5zdGFudChMb2NhbGl6YXRpb24uZ3Vlc3RfZ3JvdXApLFxuICAgICAgZW50aXR5TmFtZTogYWN0aW9uLmJhdGNoQ29tbWFuZC5uYW1lLFxuICAgICAgYWN0aW9uOiBsb3dlckNhc2VGaXJzdExldHRlcih0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KExvY2FsaXphdGlvbi5jcmVhdGVkKSksXG4gICAgfTtcbiAgICB0aGlzLm1lc3NhZ2VCYXJTZXJ2aWNlLmluZm8oTG9jYWxpemF0aW9uLmVudGl0eV9pbl9wcm9ncmVzcywgY3JlYXRlTWVzc2FnZVRleHQobWVzc2FnZUJhclBheWxvYWQpKTtcbiAgICByZXR1cm4gdGhpcy5iYXRjaFJwY1NlcnZpY2VQcm94eS5jcmVhdGVCYXRjaChhY3Rpb24uZmFjaWxpdHlXaXRoR3VpZC5ndWlkLCBhY3Rpb24uZmFjaWxpdHlXaXRoR3VpZC5kYXRhLmlkLCBhY3Rpb24uYmF0Y2hDb21tYW5kKS5waXBlKHRhcCh7XG4gICAgICBuZXh0OiAobmV3R3Vlc3RzOiBWR3Vlc3RXaXRoQmF0Y2hEdG9JRW51bWVyYWJsZUh0dHBSZXNwb25zZURhdGEpID0+IHtcbiAgICAgICAgY29uc3QgZGlzcGxheU5ld0d1ZXN0SW5UYWJsZSA9IHRoaXMuaXNHdWVzdENyZWF0ZWRGcm9tU2VsZWN0ZWRGYWNpbGl0eShuZXdHdWVzdHMuZGF0YVswXSwgYWN0aW9uLmZhY2lsaXR5V2l0aEd1aWQuZ3VpZCk7XG4gICAgICAgIHRoaXMubWVzc2FnZUJhclNlcnZpY2Uuc3VjY2VzcyhcbiAgICAgICAgICBkaXNwbGF5TmV3R3Vlc3RJblRhYmxlID8gTG9jYWxpemF0aW9uLmVudGl0eV9zdWNjZXNzIDogTG9jYWxpemF0aW9uLmVudGl0eV9zdWNjZXNzX25vdF9jdXJyZW50bHlfdmlzaWJsZSxcbiAgICAgICAgICBjcmVhdGVNZXNzYWdlVGV4dChtZXNzYWdlQmFyUGF5bG9hZClcbiAgICAgICAgKTtcblxuICAgICAgICBpZiAoZGlzcGxheU5ld0d1ZXN0SW5UYWJsZSkge1xuICAgICAgICAgIGNvbnN0IG5ld0JhdGNoID0gdGhpcy5jb252ZXJ0R3Vlc3RzVG9UYWJsZURhdGEobmV3R3Vlc3RzLmRhdGEpO1xuICAgICAgICAgIG1hcmtFbnRpdGllc0FzQ2hhbmdlZChbbmV3QmF0Y2hdLCBSb3dPcGVyYXRpb24uSW5zZXJ0KTtcbiAgICAgICAgICBtYXJrRW50aXRpZXNBc0NoYW5nZWQobmV3QmF0Y2guZW50aXRpZXMsIFJvd09wZXJhdGlvbi5JbnNlcnQpO1xuICAgICAgICAgIGNvbnN0IGRpc3BsYXllZEd1ZXN0cyA9IGN0eC5nZXRTdGF0ZSgpLmRpc3BsYXllZDtcbiAgICAgICAgICBkaXNwbGF5ZWRHdWVzdHMudW5zaGlmdCguLi5uZXdCYXRjaC5lbnRpdGllcyk7XG4gICAgICAgICAgZGlzcGxheWVkR3Vlc3RzLnVuc2hpZnQobmV3QmF0Y2gpO1xuICAgICAgICAgIGN0eC5wYXRjaFN0YXRlKHtcbiAgICAgICAgICAgIGRpc3BsYXllZDogWy4uLmRpc3BsYXllZEd1ZXN0c10sXG4gICAgICAgICAgICBjb3VudGVyOiBjdHguZ2V0U3RhdGUoKS5jb3VudGVyICsgMSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIGVycm9yOiAoZTogUHJvYmxlbURldGFpbHNIdHRwUmVzcG9uc2VEYXRhKSA9PiB7XG4gICAgICAgIGFjdGlvbi5lcnJvck1lc3NhZ2UgPSBlLmRhdGEuZGV0YWlsO1xuICAgICAgfVxuICAgIH0pKTtcbiAgfVxuXG4gIEBBY3Rpb24oQ3JlYXRlQmFzaWNCYXRjaEFjdGlvbilcbiAgb25DcmVhdGVCYXNpY0JhdGNoQWN0aW9uKGN0eDogU3RhdGVDb250ZXh0PEd1ZXN0U3RhdGVNb2RlbD4sIGFjdGlvbjogQ3JlYXRlQmFzaWNCYXRjaEFjdGlvbik6IE9ic2VydmFibGU8Vkd1ZXN0V2l0aEJhdGNoRHRvSUVudW1lcmFibGVIdHRwUmVzcG9uc2VEYXRhPiB7XG4gICAgY29uc3QgbWVzc2FnZUJhclBheWxvYWQ6IE1lc3NhZ2VCYXJQYXlsb2FkID0ge1xuICAgICAgZW50aXR5OiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KExvY2FsaXphdGlvbi5ndWVzdF9ncm91cCksXG4gICAgICBlbnRpdHlOYW1lOiBhY3Rpb24uYmF0Y2hDb21tYW5kLm5hbWUsXG4gICAgICBhY3Rpb246IGxvd2VyQ2FzZUZpcnN0TGV0dGVyKHRoaXMudHJhbnNsYXRlLmluc3RhbnQoTG9jYWxpemF0aW9uLmNyZWF0ZWQpKSxcbiAgICB9O1xuICAgIHRoaXMubWVzc2FnZUJhclNlcnZpY2UuaW5mbyhMb2NhbGl6YXRpb24uZW50aXR5X2luX3Byb2dyZXNzLCBjcmVhdGVNZXNzYWdlVGV4dChtZXNzYWdlQmFyUGF5bG9hZCkpO1xuICAgIHJldHVybiB0aGlzLmJhdGNoUnBjU2VydmljZVByb3h5LmNyZWF0ZUJhc2ljQmF0Y2goYWN0aW9uLmZhY2lsaXR5V2l0aEd1aWQuZ3VpZCwgYWN0aW9uLmZhY2lsaXR5V2l0aEd1aWQuZGF0YS5pZCwgYWN0aW9uLmJhdGNoQ29tbWFuZCkucGlwZSh0YXAoe1xuICAgICAgbmV4dDogKG5ld0d1ZXN0czogVkd1ZXN0V2l0aEJhdGNoRHRvSUVudW1lcmFibGVIdHRwUmVzcG9uc2VEYXRhKSA9PiB7XG4gICAgICAgIGNvbnN0IGRpc3BsYXlOZXdHdWVzdEluVGFibGUgPSB0aGlzLmlzR3Vlc3RDcmVhdGVkRnJvbVNlbGVjdGVkRmFjaWxpdHkobmV3R3Vlc3RzLmRhdGFbMF0sIGFjdGlvbi5mYWNpbGl0eVdpdGhHdWlkLmd1aWQpO1xuICAgICAgICB0aGlzLm1lc3NhZ2VCYXJTZXJ2aWNlLnN1Y2Nlc3MoXG4gICAgICAgICAgZGlzcGxheU5ld0d1ZXN0SW5UYWJsZSA/IExvY2FsaXphdGlvbi5lbnRpdHlfc3VjY2VzcyA6IExvY2FsaXphdGlvbi5lbnRpdHlfc3VjY2Vzc19ub3RfY3VycmVudGx5X3Zpc2libGUsXG4gICAgICAgICAgY3JlYXRlTWVzc2FnZVRleHQobWVzc2FnZUJhclBheWxvYWQpXG4gICAgICAgICk7XG5cbiAgICAgICAgaWYgKGRpc3BsYXlOZXdHdWVzdEluVGFibGUpIHtcbiAgICAgICAgICBjb25zdCBuZXdCYXRjaCA9IHRoaXMuY29udmVydEd1ZXN0c1RvVGFibGVEYXRhKG5ld0d1ZXN0cy5kYXRhKTtcbiAgICAgICAgICBtYXJrRW50aXRpZXNBc0NoYW5nZWQoW25ld0JhdGNoXSwgUm93T3BlcmF0aW9uLkluc2VydCk7XG4gICAgICAgICAgbWFya0VudGl0aWVzQXNDaGFuZ2VkKG5ld0JhdGNoLmVudGl0aWVzLCBSb3dPcGVyYXRpb24uSW5zZXJ0KTtcbiAgICAgICAgICBjb25zdCBkaXNwbGF5ZWRHdWVzdHMgPSBjdHguZ2V0U3RhdGUoKS5kaXNwbGF5ZWQ7XG4gICAgICAgICAgZGlzcGxheWVkR3Vlc3RzLnVuc2hpZnQoLi4ubmV3QmF0Y2guZW50aXRpZXMpO1xuICAgICAgICAgIGRpc3BsYXllZEd1ZXN0cy51bnNoaWZ0KG5ld0JhdGNoKTtcbiAgICAgICAgICBjdHgucGF0Y2hTdGF0ZSh7XG4gICAgICAgICAgICBkaXNwbGF5ZWQ6IFsuLi5kaXNwbGF5ZWRHdWVzdHNdLFxuICAgICAgICAgICAgY291bnRlcjogY3R4LmdldFN0YXRlKCkuY291bnRlciArIDEsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBlcnJvcjogKGU6IFByb2JsZW1EZXRhaWxzSHR0cFJlc3BvbnNlRGF0YSkgPT4ge1xuICAgICAgICBhY3Rpb24uZXJyb3JNZXNzYWdlID0gZS5kYXRhLmRldGFpbDtcbiAgICAgIH1cbiAgICB9KSk7XG4gIH1cblxuICBAQWN0aW9uKFVwZGF0ZUd1ZXN0QWN0aW9uKVxuICBvblVwZGF0ZUd1ZXN0QWN0aW9uKGN0eDogU3RhdGVDb250ZXh0PEd1ZXN0U3RhdGVNb2RlbD4sIGFjdGlvbjogVXBkYXRlR3Vlc3RBY3Rpb24pOiBPYnNlcnZhYmxlPFZHdWVzdFdpdGhCYXRjaER0b0h0dHBSZXNwb25zZURhdGE+IHtcbiAgICBjb25zdCBtZXNzYWdlQmFyUGF5bG9hZDogTWVzc2FnZUJhclBheWxvYWQgPSB7XG4gICAgICBlbnRpdHk6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoTG9jYWxpemF0aW9uLmd1ZXN0KSxcbiAgICAgIGVudGl0eU5hbWU6IGAke2FjdGlvbi5ndWVzdC5maXJzdE5hbWV9ICR7YWN0aW9uLmd1ZXN0Lmxhc3ROYW1lfWAsXG4gICAgICBhY3Rpb246IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoTG9jYWxpemF0aW9uLnVwZGF0ZWQpLFxuICAgIH07XG4gICAgdGhpcy5tZXNzYWdlQmFyU2VydmljZS5pbmZvKExvY2FsaXphdGlvbi5lbnRpdHlfaW5fcHJvZ3Jlc3MsIGNyZWF0ZU1lc3NhZ2VUZXh0KG1lc3NhZ2VCYXJQYXlsb2FkKSk7XG4gICAgcmV0dXJuIHRoaXMuZ3Vlc3RScGNTZXJ2aWNlUHJveHkudXBkYXRlR3Vlc3QoYWN0aW9uLmd1aWQsIGFjdGlvbi5wYXJrSWQsIGFjdGlvbi5ndWVzdCkucGlwZSh0YXAoe1xuICAgICAgbmV4dDogKGhhbmRsZWQ6IFZHdWVzdFdpdGhCYXRjaER0b0h0dHBSZXNwb25zZURhdGEpID0+IHtcbiAgICAgICAgdGhpcy51cGRhdGVHdWVzdEluU3RvcmUoY3R4LCBoYW5kbGVkLmRhdGEsIGFjdGlvbi5ndWlkKTtcbiAgICAgICAgdGhpcy5tZXNzYWdlQmFyU2VydmljZS5zdWNjZXNzKFxuICAgICAgICAgIExvY2FsaXphdGlvbi5lbnRpdHlfc3VjY2VzcyxcbiAgICAgICAgICBjcmVhdGVNZXNzYWdlVGV4dChtZXNzYWdlQmFyUGF5bG9hZClcbiAgICAgICAgKTtcbiAgICAgIH0sXG4gICAgICBlcnJvcjogKCkgPT4ge1xuICAgICAgICBtZXNzYWdlQmFyUGF5bG9hZC5lbnRpdHkgPSBsb3dlckNhc2VGaXJzdExldHRlcihcbiAgICAgICAgICBtZXNzYWdlQmFyUGF5bG9hZC5lbnRpdHlcbiAgICAgICAgKTtcbiAgICAgICAgbWVzc2FnZUJhclBheWxvYWQuYWN0aW9uID0gbG93ZXJDYXNlRmlyc3RMZXR0ZXIoXG4gICAgICAgICAgdGhpcy50cmFuc2xhdGUuaW5zdGFudChMb2NhbGl6YXRpb24udXBkYXRlKVxuICAgICAgICApO1xuICAgICAgICB0aGlzLm1lc3NhZ2VCYXJTZXJ2aWNlLmVycm9yKFxuICAgICAgICAgIExvY2FsaXphdGlvbi5lbnRpdHlfZmFpbGVkLFxuICAgICAgICAgIGNyZWF0ZU1lc3NhZ2VUZXh0KG1lc3NhZ2VCYXJQYXlsb2FkKVxuICAgICAgICApO1xuICAgICAgfVxuICAgIH0pKTtcbiAgfVxuXG4gIEBBY3Rpb24oVXBkYXRlR3Vlc3RMb2NhdGlvbkFjdGlvbilcbiAgb25VcGRhdGVHdWVzdExvY2F0aW9uQWN0aW9uKGN0eDogU3RhdGVDb250ZXh0PEd1ZXN0U3RhdGVNb2RlbD4sIGFjdGlvbjogVXBkYXRlR3Vlc3RMb2NhdGlvbkFjdGlvbik6IE9ic2VydmFibGU8Vkd1ZXN0V2l0aEJhdGNoRHRvSHR0cFJlc3BvbnNlRGF0YT4ge1xuICAgIGNvbnN0IGNvbmZpZzogQ29tbWFuZE5vdGlmaWNhdGlvbkNvbmZpZyA9IHtcbiAgICAgIG1lc3NhZ2VzOiBbeyB2YWx1ZTogYWN0aW9uLnVwZGF0ZUd1ZXN0TG9jYXRpb25Db21tYW5kLm5hbWUsIGNsYXNzOiBOb3RpZmljYXRpb25DbGFzcy5ib2R5IH1dLFxuICAgICAgY29tbWFuZDogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoTG9jYWxpemF0aW9uLnVwZGF0ZV9sb2NhdGlvbilcbiAgICB9O1xuXG4gICAgY29uc3QgZ3Vlc3QkID0gdGhpcy5ndWVzdFJwY1NlcnZpY2VQcm94eS51cGRhdGVHdWVzdExvY2F0aW9uKGFjdGlvbi5ndWlkLCBhY3Rpb24ucGFya0lkLCBhY3Rpb24udXBkYXRlR3Vlc3RMb2NhdGlvbkNvbW1hbmQpO1xuICAgIHJldHVybiBndWVzdCQucGlwZSh0aGlzLmNvbW1hbmROb3RpZmljYXRpb25TZXJ2aWNlLmRpc3BsYXkoY29uZmlnKSxcbiAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgIHRoaXMuYW5hbHl0aWNzVHJhY2tBY3Rpb24oY29uZmlnLCBhY3Rpb24pO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgQEFjdGlvbihEZWxldGVHdWVzdEFjdGlvbilcbiAgb25EZWxldGVHdWVzdEFjdGlvbihjdHg6IFN0YXRlQ29udGV4dDxHdWVzdFN0YXRlTW9kZWw+LCBhY3Rpb246IERlbGV0ZUd1ZXN0QWN0aW9uKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBjb25zdCBpbnRlcnBvbGF0ZWRHdWVzdE5hbWUgPSBhY3Rpb24uZ3Vlc3QubmFtZS50cmltKCkgPT09IExvY2FsaXphdGlvbi5jYXJkX2hvbGRlciA/XG4gICAgICB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChMb2NhbGl6YXRpb24uY2FyZF9ob2xkZXIpIDogYWN0aW9uLmd1ZXN0Lm5hbWU7XG4gICAgY29uc3QgbWVzc2FnZUJhclBheWxvYWQ6IE1lc3NhZ2VCYXJQYXlsb2FkID0ge1xuICAgICAgZW50aXR5OiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KExvY2FsaXphdGlvbi5ndWVzdCksXG4gICAgICBlbnRpdHlOYW1lOiBpbnRlcnBvbGF0ZWRHdWVzdE5hbWUsXG4gICAgICBhY3Rpb246IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoTG9jYWxpemF0aW9uLmRlbGV0ZWQpLFxuICAgIH07XG4gICAgdGhpcy5tZXNzYWdlQmFyU2VydmljZS5pbmZvKExvY2FsaXphdGlvbi5lbnRpdHlfaW5fcHJvZ3Jlc3MsIGNyZWF0ZU1lc3NhZ2VUZXh0KG1lc3NhZ2VCYXJQYXlsb2FkKSk7XG4gICAgcmV0dXJuIHRoaXMuZ3Vlc3RScGNTZXJ2aWNlUHJveHkuZGVsZXRlR3Vlc3QoYWN0aW9uLmd1aWQsIGFjdGlvbi5ndWVzdC5wYXJrSUQsIGFjdGlvbi5ndWVzdC5ndWVzdElEKS5waXBlKHRhcCgoKSA9PiB7XG4gICAgICB0aGlzLm1lc3NhZ2VCYXJTZXJ2aWNlLnN1Y2Nlc3MoTG9jYWxpemF0aW9uLmVudGl0eV9zdWNjZXNzLCBjcmVhdGVNZXNzYWdlVGV4dChtZXNzYWdlQmFyUGF5bG9hZCkpO1xuICAgICAgKGFjdGlvbi5ndWVzdCBhcyBWR3Vlc3RXaXRoQmF0Y2hEdG8pLmRlbGV0ZWQgPSAxO1xuICAgICAgdGhpcy5kZWxldGVHdWVzdEZyb21TdG9yZShjdHgsIGFjdGlvbi5ndWVzdCwgYWN0aW9uLmd1aWQpO1xuICAgIH0sICgpID0+IHtcbiAgICAgIG1lc3NhZ2VCYXJQYXlsb2FkLmVudGl0eSA9IGxvd2VyQ2FzZUZpcnN0TGV0dGVyKG1lc3NhZ2VCYXJQYXlsb2FkLmVudGl0eSk7XG4gICAgICBtZXNzYWdlQmFyUGF5bG9hZC5hY3Rpb24gPSBsb3dlckNhc2VGaXJzdExldHRlcih0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KExvY2FsaXphdGlvbi5kZWxldGUpKTtcbiAgICAgIHRoaXMubWVzc2FnZUJhclNlcnZpY2UuZXJyb3IoTG9jYWxpemF0aW9uLmVudGl0eV9mYWlsZWQsY3JlYXRlTWVzc2FnZVRleHQobWVzc2FnZUJhclBheWxvYWQpKTtcbiAgICB9KSk7XG4gIH1cblxuICBAQWN0aW9uKENyZWF0ZUJhc2ljR3Vlc3RBY3Rpb24pXG4gIG9uQ3JlYXRlQmFzaWNHdWVzdEFjdGlvbihjdHg6IFN0YXRlQ29udGV4dDxHdWVzdFN0YXRlTW9kZWw+LCBhY3Rpb246IENyZWF0ZUJhc2ljR3Vlc3RBY3Rpb24pOiBPYnNlcnZhYmxlPFZHdWVzdFdpdGhCYXRjaER0b0h0dHBSZXNwb25zZURhdGE+IHtcbiAgICBjb25zdCBtZXNzYWdlQmFyUGF5bG9hZDogTWVzc2FnZUJhclBheWxvYWQgPSB7XG4gICAgICBlbnRpdHk6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoTG9jYWxpemF0aW9uLmd1ZXN0KSxcbiAgICAgIGVudGl0eU5hbWU6IGAke2FjdGlvbi5ndWVzdC5maXJzdE5hbWV9ICR7YWN0aW9uLmd1ZXN0Lmxhc3ROYW1lfWAsXG4gICAgICBhY3Rpb246IGxvd2VyQ2FzZUZpcnN0TGV0dGVyKHRoaXMudHJhbnNsYXRlLmluc3RhbnQoTG9jYWxpemF0aW9uLmNyZWF0ZWQpKSxcbiAgICB9O1xuICAgIHRoaXMubWVzc2FnZUJhclNlcnZpY2UuaW5mbyhMb2NhbGl6YXRpb24uZW50aXR5X2luX3Byb2dyZXNzLCBjcmVhdGVNZXNzYWdlVGV4dChtZXNzYWdlQmFyUGF5bG9hZCkpO1xuICAgIHJldHVybiB0aGlzLmd1ZXN0UnBjU2VydmljZVByb3h5LmNyZWF0ZUJhc2ljR3Vlc3QoYWN0aW9uLmd1aWQsIGFjdGlvbi5wYXJrSWQsIGFjdGlvbi5ndWVzdCkucGlwZSh0YXAoe1xuICAgICAgbmV4dDogKGhhbmRsZWQ6IFZHdWVzdFdpdGhCYXRjaER0b0h0dHBSZXNwb25zZURhdGEpID0+IHtcbiAgICAgICAgY29uc3QgZGlzcGxheU5ld0d1ZXN0SW5UYWJsZSA9IHRoaXMuaXNHdWVzdENyZWF0ZWRGcm9tU2VsZWN0ZWRGYWNpbGl0eShoYW5kbGVkLmRhdGEsIGFjdGlvbi5ndWlkKTtcbiAgICAgICAgdGhpcy5hZGRHdWVzdFRvU3RvcmUoY3R4LCBoYW5kbGVkLmRhdGEsIGRpc3BsYXlOZXdHdWVzdEluVGFibGUpO1xuICAgICAgICB0aGlzLm1lc3NhZ2VCYXJTZXJ2aWNlLnN1Y2Nlc3MoXG4gICAgICAgICAgZGlzcGxheU5ld0d1ZXN0SW5UYWJsZSA/IExvY2FsaXphdGlvbi5lbnRpdHlfc3VjY2VzcyA6IExvY2FsaXphdGlvbi5lbnRpdHlfc3VjY2Vzc19ub3RfY3VycmVudGx5X3Zpc2libGUsXG4gICAgICAgICAgY3JlYXRlTWVzc2FnZVRleHQobWVzc2FnZUJhclBheWxvYWQpXG4gICAgICAgICk7XG4gICAgICB9LFxuICAgICAgZXJyb3I6ICgpID0+IHtcbiAgICAgICAgbWVzc2FnZUJhclBheWxvYWQuZW50aXR5ID0gbG93ZXJDYXNlRmlyc3RMZXR0ZXIobWVzc2FnZUJhclBheWxvYWQuZW50aXR5KTtcbiAgICAgICAgbWVzc2FnZUJhclBheWxvYWQuYWN0aW9uID0gbG93ZXJDYXNlRmlyc3RMZXR0ZXIodGhpcy50cmFuc2xhdGUuaW5zdGFudChMb2NhbGl6YXRpb24uY3JlYXRlKSk7XG4gICAgICAgIHRoaXMubWVzc2FnZUJhclNlcnZpY2UuZXJyb3IoTG9jYWxpemF0aW9uLmVudGl0eV9mYWlsZWQsY3JlYXRlTWVzc2FnZVRleHQobWVzc2FnZUJhclBheWxvYWQpKTtcbiAgICAgIH1cbiAgICB9KSk7XG4gIH1cblxuICBAQWN0aW9uKFVwZGF0ZUJhc2ljR3Vlc3RBY3Rpb24pXG4gIG9uVXBkYXRlQmFzaWNHdWVzdEFjdGlvbihjdHg6IFN0YXRlQ29udGV4dDxHdWVzdFN0YXRlTW9kZWw+LCBhY3Rpb246IFVwZGF0ZUJhc2ljR3Vlc3RBY3Rpb24pOiBPYnNlcnZhYmxlPFZHdWVzdFdpdGhCYXRjaER0b0h0dHBSZXNwb25zZURhdGE+IHtcbiAgICBjb25zdCBtZXNzYWdlQmFyUGF5bG9hZDogTWVzc2FnZUJhclBheWxvYWQgPSB7XG4gICAgICBlbnRpdHk6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoTG9jYWxpemF0aW9uLmd1ZXN0KSxcbiAgICAgIGVudGl0eU5hbWU6IGAke2FjdGlvbi5ndWVzdC5maXJzdE5hbWV9ICR7YWN0aW9uLmd1ZXN0Lmxhc3ROYW1lfWAsXG4gICAgICBhY3Rpb246IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoTG9jYWxpemF0aW9uLnVwZGF0ZWQpLFxuICAgIH07XG4gICAgdGhpcy5tZXNzYWdlQmFyU2VydmljZS5pbmZvKExvY2FsaXphdGlvbi5lbnRpdHlfaW5fcHJvZ3Jlc3MsIGNyZWF0ZU1lc3NhZ2VUZXh0KG1lc3NhZ2VCYXJQYXlsb2FkKSk7XG4gICAgcmV0dXJuIHRoaXMuZ3Vlc3RScGNTZXJ2aWNlUHJveHkudXBkYXRlQmFzaWNHdWVzdChhY3Rpb24uZ3VpZCwgYWN0aW9uLnBhcmtJZCwgYWN0aW9uLmd1ZXN0KS5waXBlKHRhcCh7XG4gICAgICBuZXh0OiAoaGFuZGxlZDogVkd1ZXN0V2l0aEJhdGNoRHRvSHR0cFJlc3BvbnNlRGF0YSkgPT4gdGhpcy5vblVwZGF0ZUJhc2ljR3Vlc3ROZXh0KGN0eCwgYWN0aW9uLCBoYW5kbGVkLCBtZXNzYWdlQmFyUGF5bG9hZCksXG4gICAgICBlcnJvcjogKCkgPT4gdGhpcy5vblVwZGF0ZUJhc2ljR3Vlc3RFcnJvcihtZXNzYWdlQmFyUGF5bG9hZClcbiAgICB9KSk7XG4gIH1cblxuICBAQWN0aW9uKFNlbmRFbWFpbFRvR3Vlc3RBY3Rpb24pXG4gIG9uU2VuZEVtYWlsVG9HdWVzdEFjdGlvbihjdHg6IFN0YXRlQ29udGV4dDxHdWVzdFN0YXRlTW9kZWw+LCBhY3Rpb246IFNlbmRFbWFpbFRvR3Vlc3RBY3Rpb24pOiBPYnNlcnZhYmxlPEludDMySHR0cFJlc3BvbnNlRGF0YT4ge1xuICAgIHJldHVybiB0aGlzLmd1ZXN0UnBjU2VydmljZVByb3h5LnNlbmRHdWVzdEJ5RW1haWwoYWN0aW9uLmd1aWQsIGFjdGlvbi5wYXJrSWQsIGFjdGlvbi5zZW5kRW1haWxDb21tYW5kKS5waXBlKHRhcCh7XG4gICAgICBuZXh0OiAoKSA9PiB0aGlzLm1lc3NhZ2VCYXJTZXJ2aWNlLnN1Y2Nlc3MoTG9jYWxpemF0aW9uLmVtYWlsX3NlbnRfc3VjY2Vzc2Z1bGx5KSxcbiAgICAgIGVycm9yOiAoKSA9PiB0aGlzLm1lc3NhZ2VCYXJTZXJ2aWNlLmVycm9yKExvY2FsaXphdGlvbi5lbWFpbF9zZW5kaW5nX2ZhaWxlZCksXG4gICAgfSkpO1xuICB9XG5cbiAgQEFjdGlvbihMb2FkR3Vlc3RzQnlCYXRjaElkQWN0aW9uLCB7IGNhbmNlbFVuY29tcGxldGVkOiB0cnVlIH0pXG4gIG9uTG9hZEd1ZXN0c0J5QmF0Y2hJZChjdHg6IFN0YXRlQ29udGV4dDxHdWVzdFN0YXRlTW9kZWw+LCBhY3Rpb246IExvYWRHdWVzdHNCeUJhdGNoSWRBY3Rpb24pOiBPYnNlcnZhYmxlPFZHdWVzdFdpdGhCYXRjaER0b0lFbnVtZXJhYmxlSHR0cFJlc3BvbnNlRGF0YT4ge1xuICAgIGNvbnN0IHJlc3VsdHMkID0gdGhpcy5ndWVzdFJwY1NlcnZpY2VQcm94eS5nZXRHdWVzdHNCeUJhdGNoSWQoYWN0aW9uLmd1aWQsIGFjdGlvbi5wYXJrSWQsIGFjdGlvbi5iYXRjaElELCBhY3Rpb24uZ3Vlc3RzRmlsdGVyRHRvKTtcbiAgICByZXR1cm4gcmVzdWx0cyQucGlwZSh0YXAoKGd1ZXN0czogVkd1ZXN0V2l0aEJhdGNoRHRvSUVudW1lcmFibGVIdHRwUmVzcG9uc2VEYXRhKSA9PiB7XG4gICAgICB0aGlzLmFkZEd1ZXN0c0J5QmF0Y2hJZFRvU3RvcmUoY3R4LCBhY3Rpb24uYmF0Y2hJRCwgZ3Vlc3RzLmRhdGEpO1xuICAgIH0pKTtcbiAgfVxuXG4gIEBBY3Rpb24oTG9hZEd1ZXN0c0J5QmF0Y2hJZENhbmNlbGxlZEFjdGlvbiwgeyBjYW5jZWxVbmNvbXBsZXRlZDogZmFsc2UgfSlcbiAgb25Mb2FkR3Vlc3RzQnlCYXRjaElkQ2FuY2VsbGVkQWN0aW9uKGN0eDogU3RhdGVDb250ZXh0PEd1ZXN0U3RhdGVNb2RlbD4sIGFjdGlvbjogTG9hZEd1ZXN0c0J5QmF0Y2hJZENhbmNlbGxlZEFjdGlvbikge1xuICAgIGNvbnN0IGRpc3BsYXllZEd1ZXN0c0JhdGNoZXMgPSBjdHguZ2V0U3RhdGUoKS5kaXNwbGF5ZWQ7XG4gICAgY29uc3QgZ3Vlc3RCYXRjaEluZGV4ID0gZGlzcGxheWVkR3Vlc3RzQmF0Y2hlcy5maW5kSW5kZXgoZ3Vlc3QgPT4gZ3Vlc3QgaW5zdGFuY2VvZiBWR3Vlc3RXaXRoQmF0Y2hEdG8gJiYgZ3Vlc3QuYmF0Y2hJRCA9PT0gYWN0aW9uLmJhdGNoSWQpO1xuXG4gICAgaWYgKGd1ZXN0QmF0Y2hJbmRleCAhPT0gLTEpIHtcbiAgICAgIGNvbnN0IGd1ZXN0QmF0Y2ggPSBtYXJrRW50aXR5QXNVbmNoYW5nZWQoZGlzcGxheWVkR3Vlc3RzQmF0Y2hlc1tndWVzdEJhdGNoSW5kZXhdKTtcblxuICAgICAgZGlzcGxheWVkR3Vlc3RzQmF0Y2hlc1tndWVzdEJhdGNoSW5kZXhdID0gT2JqZWN0LmFzc2lnbihuZXcgVkd1ZXN0V2l0aEJhdGNoRHRvKCksIGd1ZXN0QmF0Y2gpO1xuXG4gICAgICBjdHgucGF0Y2hTdGF0ZSh7XG4gICAgICAgIGRpc3BsYXllZDogWy4uLmRpc3BsYXllZEd1ZXN0c0JhdGNoZXNdXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBAQWN0aW9uKEV4cGFuZEd1ZXN0c0J5QmF0Y2hJZEFjdGlvbilcbiAgb25FeHBhbmRHdWVzdHNCeUJhdGNoSWRBY3Rpb24oY3R4OiBTdGF0ZUNvbnRleHQ8R3Vlc3RTdGF0ZU1vZGVsPiwgYWN0aW9uOiBFeHBhbmRHdWVzdHNCeUJhdGNoSWRBY3Rpb24pOiB2b2lkIHtcbiAgICB0aGlzLmFkZEd1ZXN0c0J5QmF0Y2hJZFRvU3RvcmUoY3R4LCBhY3Rpb24uYmF0Y2hJRCwgYWN0aW9uLmd1ZXN0cyk7XG4gIH1cblxuICBAQWN0aW9uKENvbGxhcHNlZEd1ZXN0c0J5QmF0Y2hJZEFjdGlvbilcbiAgb25Db2xsYXBzZWRHdWVzdHNCeUJhdGNoSWRBY3Rpb24oY3R4OiBTdGF0ZUNvbnRleHQ8R3Vlc3RTdGF0ZU1vZGVsPiwgYWN0aW9uOiBDb2xsYXBzZWRHdWVzdHNCeUJhdGNoSWRBY3Rpb24pOiB2b2lkIHtcbiAgICBsZXQgZGlzcGxheWVkR3VzZXRCYXRjaGVzID0gY3R4LmdldFN0YXRlKCkuZGlzcGxheWVkO1xuICAgIGNvbnN0IGd1ZXN0QmF0Y2hJbmRleCA9IGRpc3BsYXllZEd1c2V0QmF0Y2hlcy5maW5kSW5kZXgoZ2IgPT4gZ2IuYmF0Y2hJRCA9PT0gYWN0aW9uLmJhdGNoSUQpO1xuICAgIGlmIChndWVzdEJhdGNoSW5kZXggIT09IC0xKSB7XG4gICAgICBkaXNwbGF5ZWRHdXNldEJhdGNoZXMgPSBkaXNwbGF5ZWRHdXNldEJhdGNoZXMuZmlsdGVyKGVudGl0eSA9PiBlbnRpdHkuYmF0Y2hJRCAhPT0gYWN0aW9uLmJhdGNoSUQgfHwgIWVudGl0eS5ndWVzdElEKTtcbiAgICAgIGN0eC5wYXRjaFN0YXRlKHtcbiAgICAgICAgZGlzcGxheWVkOiBbLi4uZGlzcGxheWVkR3VzZXRCYXRjaGVzXSxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIEBBY3Rpb24oTG9hZEd1ZXN0UHJvZmlsZXNBY3Rpb24sIHsgY2FuY2VsVW5jb21wbGV0ZWQ6IHRydWUgfSlcbiAgb25Mb2FkR3Vlc3RQcm9maWxlc0FjdGlvbihjdHg6IFN0YXRlQ29udGV4dDxHdWVzdFN0YXRlTW9kZWw+LCBhY3Rpb246IExvYWRHdWVzdFByb2ZpbGVzQWN0aW9uKSB7XG4gICAgY29uc3Qgc3ViTW9kdWxlOiBTdWJNb2R1bGUgPSB0aGlzLnN0b3JlLnNlbGVjdFNuYXBzaG90KFNpZGVuYXZTdGF0ZS5zdWJNb2R1bGUpO1xuXG4gICAgbGV0IGd1ZXN0UHJvZmlsZXMkID0gdGhpcy5ndWVzdFJwY1NlcnZpY2VQcm94eS5nZXRTdGlja2Vyc1Byb2ZpbGVzKGFjdGlvbi5ndWlkLCBhY3Rpb24ucGFya0lkLCBhY3Rpb24uc2VhcmNoUGFyYW1zRHRvPy5tYXhSZXN1bHRzLFxuICAgICAgYWN0aW9uLnNlYXJjaFBhcmFtc0R0bz8uc2VhcmNoVGVybSwgYWN0aW9uLnNlYXJjaFBhcmFtc0R0bz8ub3JkZXJCeS5jb2x1bW4sXG4gICAgICBhY3Rpb24uc2VhcmNoUGFyYW1zRHRvPy5vcmRlckJ5Lm9yZGVyRGlyZWN0aW9uKTtcblxuICAgIGlmIChzdWJNb2R1bGUgPT09IFN1Yk1vZHVsZS5SYXRlcykge1xuICAgICAgZ3Vlc3RQcm9maWxlcyQgPSB0aGlzLmd1ZXN0UnBjU2VydmljZVByb3h5LmdldFJhdGVzUHJvZmlsZXMoYWN0aW9uLmd1aWQsIGFjdGlvbi5wYXJrSWQsIGFjdGlvbi5zZWFyY2hQYXJhbXNEdG8/Lm1heFJlc3VsdHMsXG4gICAgICAgIGFjdGlvbi5zZWFyY2hQYXJhbXNEdG8/LnNlYXJjaFRlcm0sIGFjdGlvbi5zZWFyY2hQYXJhbXNEdG8/Lm9yZGVyQnkuY29sdW1uLFxuICAgICAgICBhY3Rpb24uc2VhcmNoUGFyYW1zRHRvPy5vcmRlckJ5Lm9yZGVyRGlyZWN0aW9uKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZ3Vlc3RQcm9maWxlcyQucGlwZSh0YXAocHJvZmlsZXMgPT4ge1xuICAgICAgY3R4LnBhdGNoU3RhdGUoe1xuICAgICAgICBwcm9maWxlczogcHJvZmlsZXMuZGF0YSxcbiAgICAgIH0pO1xuICAgIH0pKTtcbiAgfVxuXG4gIEBBY3Rpb24oQ2xlYXJHdWVzdFByb2ZpbGVzQWN0aW9uKVxuICBvbkNsZWFyR3Vlc3RQcm9maWxlc0FjdGlvbihjdHg6IFN0YXRlQ29udGV4dDxHdWVzdFN0YXRlTW9kZWw+KSB7XG4gICAgY3R4LnBhdGNoU3RhdGUoe1xuICAgICAgcHJvZmlsZXM6IFtdLFxuICAgIH0pO1xuICB9XG5cbiAgQEFjdGlvbihTZW5kR3Vlc3RQYXNzZXNUb0VtYWlsQWN0aW9uKVxuICBvblNlbmRHdWVzdFBhc3Nlc1RvRW1haWwoY3R4OiBTdGF0ZUNvbnRleHQ8R3Vlc3RTdGF0ZU1vZGVsPiwgYWN0aW9uOiBTZW5kR3Vlc3RQYXNzZXNUb0VtYWlsQWN0aW9uKSB7XG4gICAgcmV0dXJuIGZyb20odGhpcy5wb3B1bGF0ZVNlbmRFbWFpbFJlcXVlc3QoYWN0aW9uKSkucGlwZShcbiAgICAgIHRhcChzZW5kRW1haWxSZXF1ZXN0ID0+IHtcbiAgICAgICAgY29uc3QgZGF0YTogYW55ID0ge1xuICAgICAgICAgIG1vZGFsVGl0bGU6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoTG9jYWxpemF0aW9uLnNlbmRfc3RpY2tlcnNfdG9fZW1haWwpLFxuICAgICAgICAgIHNlbmRFbWFpbDogZmFsc2UsXG4gICAgICAgICAgc2VuZEVtYWlsUmVxZXVzdDogc2VuZEVtYWlsUmVxdWVzdCAgLy8gb25seSB2ZXJzaW9uID49IDguMSBzdXBwb3J0IHRoaXMgZmVhdHVyZVxuICAgICAgICB9O1xuICAgICAgICBkYXRhLnNlbmRFbWFpbFJlcWV1c3QudG8gPSBhY3Rpb24uZW1haWw7XG4gICAgICAgIGN0eC5kaXNwYXRjaChuZXcgU2VuZEVtYWlsRnJvbUVudGl0eUFjdGlvbihkYXRhLnNlbmRFbWFpbFJlcWV1c3QpKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIEBBY3Rpb24oRXhwb3J0R3Vlc3RzQWN0aW9uLCB7IGNhbmNlbFVuY29tcGxldGVkOiB0cnVlIH0pXG4gIG9uRXhwb3J0R3Vlc3RzQWN0aW9uKGN0eDogU3RhdGVDb250ZXh0PEd1ZXN0U3RhdGVNb2RlbD4sIGFjdGlvbjogRXhwb3J0R3Vlc3RzQWN0aW9uKTogT2JzZXJ2YWJsZTxWR3Vlc3RXaXRoQmF0Y2hEdG9FbnRpdHlXcmFwcGVyRHRvSHR0cFJlc3BvbnNlRGF0YT4ge1xuICAgIGNvbnN0IGdldEd1ZXN0cyQgPSB0aGlzLmd1ZXN0UnBjU2VydmljZVByb3h5LmdldEd1ZXN0cyhhY3Rpb24uZ3VpZCwgYWN0aW9uLnBhcmtJZCwgYWN0aW9uLmd1ZXN0c0ZpbHRlckR0byk7XG4gICAgcmV0dXJuIGdldEd1ZXN0cyQucGlwZSh0YXAoe1xuICAgICAgbmV4dDogKGd1ZXN0c1dyYXBwZXI6IFZHdWVzdFdpdGhCYXRjaER0b0VudGl0eVdyYXBwZXJEdG9IdHRwUmVzcG9uc2VEYXRhKSA9PiB7XG4gICAgICAgIGlmICghdGhpcy5leHBvcnRGaWxlU2VydmljZSkgeyByZXR1cm47IH1cbiAgICAgICAgY29uc3QgdGFibGVSb3dzOiBhbnlbXVtdID0gW107XG4gICAgICAgIGNvbnN0IGd1ZXN0V2l0aEJhdGNoRHRvTGlzdDogVkd1ZXN0V2l0aEJhdGNoRHRvW10gPSBndWVzdHNXcmFwcGVyLmRhdGEuZW50aXRpZXM7XG4gICAgICAgIGd1ZXN0V2l0aEJhdGNoRHRvTGlzdC5mb3JFYWNoKChndWVzdCkgPT4ge1xuICAgICAgICAgIC8vIE1pcnJvcnMgdGhlIGdyaWQncyBHdWVzdCBUeXBlIGNlbGwsIHdoaWNoIHNob3dzIGEgXCIoRGVsZXRlZCkgPHR5cGU+XCIgbGFiZWwgZm9yIGRlbGV0ZWQgZ3Vlc3RzXG4gICAgICAgICAgY29uc3QgZ3Vlc3RUeXBlID0gdGhpcy50cmFuc2xhdGUuaW5zdGFudChQcm9maWxlVHlwZVRleHRbUHJvZmlsZVR5cGVbZ3Vlc3QubVR5cGVdXSk7XG4gICAgICAgICAgdGFibGVSb3dzLnB1c2goW2d1ZXN0Lm5hbWUsXG4gICAgICAgICAgZ3Vlc3QuZGVsZXRlZCA/IGAoJHt0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KExvY2FsaXphdGlvbi5kZWxldGVkX3R5cGUpfSkgJHtndWVzdFR5cGV9YCA6IGd1ZXN0VHlwZSxcbiAgICAgICAgICBndWVzdC5tb2JpbGUsXG4gICAgICAgICAgZ3Vlc3QuY2FyUGxhdGUsXG4gICAgICAgICAgdGhpcy5leHBvcnRGaWxlU2VydmljZS5nZXREYXRlRmllbGRWYWx1ZShhY3Rpb24uZmlsZVR5cGUsIGd1ZXN0LCAndmFsaWRGcm9tRGF0ZScpLFxuICAgICAgICAgIHRoaXMuZXhwb3J0RmlsZVNlcnZpY2UuZ2V0RGF0ZUZpZWxkVmFsdWUoYWN0aW9uLmZpbGVUeXBlLCBndWVzdCwgJ3ZhbGlkVG9EYXRlJyksXG4gICAgICAgICAgZ3Vlc3QuY29tcGFueU5hbWUsXG4gICAgICAgICAgZ3Vlc3Quc3ViQ29tcGFueU5hbWUsXG4gICAgICAgICAgdGhpcy5wYXJrZXJTZXJ2aWNlLmdldEhpc3RvcnlJdGVtQWN0aW9uKGd1ZXN0LmxvY2F0aW9uLCBudWxsKSxcbiAgICAgICAgICB0aGlzLmV4cG9ydEZpbGVTZXJ2aWNlLmdldERhdGVGaWVsZFZhbHVlKGFjdGlvbi5maWxlVHlwZSwgZ3Vlc3QsICdwcm9kdWNlZERhdGUnKV0pO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5leHBvcnRGaWxlU2VydmljZS5leHBvcnQoYWN0aW9uLmZpbGVUeXBlLCB0YWJsZVJvd3MsIGFjdGlvbi5jb2x1bW5zSGVhZGVyLCBMb2NhbGl6YXRpb24uZ3Vlc3RzKTtcbiAgICAgIH0sXG4gICAgICBlcnJvcjogKCkgPT4ge1xuICAgICAgICB0aGlzLm1lc3NhZ2VCYXJTZXJ2aWNlLmVycm9yKHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KHRoaXMuTC5mYWlsZWRfZXhwb3J0X2ZpbGUpKTtcbiAgICAgIH1cbiAgICB9KSk7XG4gIH1cblxuICB0b0RhdGVTdHJpbmcgPSAodmFsdWU6IE1vbWVudCkgPT4gdGhpcy5kYXRlUGlwZS50cmFuc2Zvcm0odmFsdWUudG9EYXRlKCksIHRoaXMudGVuYW50U2VydmljZS5zZWNvbmRhcnlEYXRlVGltZUZvcm1hdCkgfHwgJy0nO1xuXG4gIHByaXZhdGUgYW5hbHl0aWNzVHJhY2tBY3Rpb24oY29uZmlnOiBDb21tYW5kTm90aWZpY2F0aW9uQ29uZmlnLCBhY3Rpb246IFVwZGF0ZUd1ZXN0TG9jYXRpb25BY3Rpb24pIHtcbiAgICBjb25zdCBpc1N1Y2Nlc3MgPSBjb25maWc/LmRpc3BsYXlDYXNlVHlwZSA9PT0gQ29tbWFuZE5vdGlmaWNhdGlvbkRpc3BsYXlDYXNlLlN1Y2Nlc3M7XG4gICAgYWN0aW9uLmFuYWx5dGljc1BheWxvYWQuc3VjY2VzcyA9IGlzU3VjY2VzcztcbiAgICB0aGlzLmFuYWx5dGljc1NlcnZpY2UudHJhY2soY29uZmlnLmNvbW1hbmQsIGFjdGlvbi5hbmFseXRpY3NQYXlsb2FkKTtcbiAgfVxuXG4gIHByaXZhdGUgYWRkR3Vlc3RzQnlCYXRjaElkVG9TdG9yZShjdHg6IFN0YXRlQ29udGV4dDxHdWVzdFN0YXRlTW9kZWw+LCBiYXRjaElEOiBudW1iZXIsIGd1ZXN0czogVkd1ZXN0V2l0aEJhdGNoRHRvW10pIHtcbiAgICBjb25zdCBkaXNwbGF5ZWRHdXNldEJhdGNoZXMgPSBjdHguZ2V0U3RhdGUoKS5kaXNwbGF5ZWQ7XG4gICAgY29uc3QgZ3Vlc3RCYXRjaEluZGV4ID0gZGlzcGxheWVkR3VzZXRCYXRjaGVzLmZpbmRJbmRleChnYiA9PiBnYi5iYXRjaElEID09PSBiYXRjaElEKTtcbiAgICBpZiAoZ3Vlc3RCYXRjaEluZGV4ICE9PSAtMSkge1xuICAgICAgZGlzcGxheWVkR3VzZXRCYXRjaGVzW2d1ZXN0QmF0Y2hJbmRleF0uZW50aXRpZXMgPSBndWVzdHM7XG4gICAgICBkaXNwbGF5ZWRHdXNldEJhdGNoZXMuc3BsaWNlKGd1ZXN0QmF0Y2hJbmRleCArIDEsIDAsIC4uLmd1ZXN0cyk7XG5cbiAgICAgIGN0eC5wYXRjaFN0YXRlKHtcbiAgICAgICAgZGlzcGxheWVkOiBbLi4uZGlzcGxheWVkR3VzZXRCYXRjaGVzXSxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY29udmVydEd1ZXN0c1RvVGFibGVEYXRhKGd1ZXN0czogVkd1ZXN0V2l0aEJhdGNoRHRvW10pOiBWR3Vlc3RXaXRoQmF0Y2hUYWJsZURhdGEge1xuICAgIGNvbnN0IGJhdGNoOiBWR3Vlc3RXaXRoQmF0Y2hUYWJsZURhdGEgPSBndWVzdHMuZmluZChnID0+IGcuYmF0Y2hJRCA+IDAgJiYgZy5ndWVzdElEID09PSBudWxsKSBhcyBhbnk7XG4gICAgYmF0Y2guaXNSb3dFeHBhbmRhYmxlID0gdHJ1ZTtcbiAgICBiYXRjaC5lbnRpdGllcyA9IGd1ZXN0cy5maWx0ZXIoZyA9PiBnLmJhdGNoSUQgIT09IG51bGwgJiYgZy5ndWVzdElEICE9PSBudWxsKTtcbiAgICByZXR1cm4gYmF0Y2g7XG4gIH1cblxuICBwcml2YXRlIGFkZEd1ZXN0VG9TdG9yZShjdHg6IFN0YXRlQ29udGV4dDxHdWVzdFN0YXRlTW9kZWw+LCBndWVzdDogVkd1ZXN0V2l0aEJhdGNoRHRvLCBkaXNwbGF5TmV3R3Vlc3RJblRhYmxlOiBib29sZWFuKSB7XG4gICAgaWYgKGRpc3BsYXlOZXdHdWVzdEluVGFibGUpIHtcbiAgICAgIGNvbnN0IGRpc3BsYXllZEd1ZXN0cyA9IGN0eC5nZXRTdGF0ZSgpLmRpc3BsYXllZDtcbiAgICAgIG1hcmtFbnRpdGllc0FzQ2hhbmdlZChbZ3Vlc3RdLCBSb3dPcGVyYXRpb24uSW5zZXJ0KTtcbiAgICAgIGRpc3BsYXllZEd1ZXN0cy51bnNoaWZ0KGd1ZXN0KTtcbiAgICAgIGN0eC5wYXRjaFN0YXRlKHtcbiAgICAgICAgZGlzcGxheWVkOiBbLi4uZGlzcGxheWVkR3Vlc3RzXSxcbiAgICAgICAgY291bnRlcjogY3R4LmdldFN0YXRlKCkuY291bnRlciArIDEsXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGlzR3Vlc3RDcmVhdGVkRnJvbVNlbGVjdGVkRmFjaWxpdHkoZ3Vlc3Q6IFZHdWVzdFdpdGhCYXRjaER0bywgZ3VpZDogc3RyaW5nKSB7XG4gICAgY29uc3Qgc2VsZWN0ZWRQYXJrSUQgPSB0aGlzLnN0b3JlLnNlbGVjdFNuYXBzaG90KEZhY2lsaXR5U3RhdGUucGFya0lkKTtcbiAgICBjb25zdCBzZWxlY3RlZEd1aWQgPSB0aGlzLnN0b3JlLnNlbGVjdFNuYXBzaG90KEZhY2lsaXR5U3RhdGUuZ3VpZCk7XG4gICAgcmV0dXJuIHNlbGVjdGVkUGFya0lEID09PSBndWVzdC5wYXJrSUQgJiYgc2VsZWN0ZWRHdWlkID09PSBndWlkO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRQYXJhbnRBbmRDaGlsZEluZGV4KGN0eDogU3RhdGVDb250ZXh0PEd1ZXN0U3RhdGVNb2RlbD4sIGd1ZXN0RHRvOiBWR3Vlc3RXaXRoQmF0Y2hEdG8pOiB7IHBhcmVudDogbnVtYmVyLCBjaGlsZDogbnVtYmVyOyB9IHtcbiAgICBjb25zdCBkaXNwbGF5ZWRHdWVzdHMgPSBjdHguZ2V0U3RhdGUoKS5kaXNwbGF5ZWQ7XG4gICAgLy8gaWYgSSBhbSBjaGlsZHJlbiBmaW5kIG15IHBhcmVudCwgYWZ0ZXIgdGhhdCBmaW5kIG1lXG4gICAgY29uc3QgcGFyZW50ID0gZGlzcGxheWVkR3Vlc3RzLmZpbmRJbmRleChndWVzdCA9PiBndWVzdC5iYXRjaElEID09PSBndWVzdER0by5iYXRjaElEICYmIGd1ZXN0Lmd1ZXN0SUQgPT09IG51bGwpO1xuICAgIGNvbnN0IGNoaWxkID0gKGRpc3BsYXllZEd1ZXN0c1twYXJlbnRdLmVudGl0aWVzIHx8IFtdKS5maW5kSW5kZXgoZ3Vlc3QgPT4gZ3Vlc3QuZ3Vlc3RJRCA9PT0gZ3Vlc3REdG8uZ3Vlc3RJRCk7XG4gICAgcmV0dXJuIHsgcGFyZW50LCBjaGlsZCB9O1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVHdWVzdEluU3RvcmUoY3R4OiBTdGF0ZUNvbnRleHQ8R3Vlc3RTdGF0ZU1vZGVsPiwgZ3Vlc3Q6IFZHdWVzdFdpdGhCYXRjaER0bywgZ3VpZDogc3RyaW5nKSB7XG4gICAgY29uc3QgZGlzcGxheWVkR3Vlc3RzID0gY3R4LmdldFN0YXRlKCkuZGlzcGxheWVkO1xuICAgIGNvbnN0IGd1ZXN0SW5kZXggPSB0aGlzLmdldEd1ZXN0SW5kZXgoZGlzcGxheWVkR3Vlc3RzLCBndWVzdC5ndWVzdElEKTtcblxuICAgIGlmIChndWVzdEluZGV4ICE9PSAtMSkge1xuICAgICAgZGlzcGxheWVkR3Vlc3RzW2d1ZXN0SW5kZXhdID0gZ3Vlc3Q7XG4gICAgICBtYXJrRW50aXRpZXNBc0NoYW5nZWQoW2d1ZXN0XSwgUm93T3BlcmF0aW9uLlVwZGF0ZSk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuaXNHdWVzdENoaWxkKGd1ZXN0KSkge1xuICAgICAgY29uc3QgeyBjaGlsZCwgcGFyZW50IH0gPSB0aGlzLmdldFBhcmFudEFuZENoaWxkSW5kZXgoY3R4LCBndWVzdCk7XG4gICAgICBpZiAocGFyZW50ICE9PSAtMSkge1xuICAgICAgICBpZiAoY2hpbGQgIT09IC0xKSB7XG4gICAgICAgICAgZGlzcGxheWVkR3Vlc3RzW3BhcmVudF0uZW50aXRpZXNbY2hpbGRdID0gZ3Vlc3Q7XG4gICAgICAgIH1cbiAgICAgICAgbWFya0VudGl0aWVzQXNDaGFuZ2VkKFtkaXNwbGF5ZWRHdWVzdHNbcGFyZW50XV0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIGN0eC5wYXRjaFN0YXRlKHtcbiAgICAgIGRpc3BsYXllZDogWy4uLmRpc3BsYXllZEd1ZXN0c10sXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGRlbGV0ZUd1ZXN0RnJvbVN0b3JlKGN0eDogU3RhdGVDb250ZXh0PEd1ZXN0U3RhdGVNb2RlbD4sIGd1ZXN0OiBWR3Vlc3RXaXRoQmF0Y2hEdG8sIGd1aWQ6IHN0cmluZykge1xuICAgIGxldCBjb3VudGVyID0gY3R4LmdldFN0YXRlKCkuY291bnRlcjtcblxuICAgIGNvbnN0IGRpc3BsYXllZEd1ZXN0cyA9IGN0eC5nZXRTdGF0ZSgpLmRpc3BsYXllZDtcbiAgICBjb25zdCBndWVzdEluZGV4ID0gdGhpcy5nZXRHdWVzdEluZGV4KGRpc3BsYXllZEd1ZXN0cywgZ3Vlc3QuZ3Vlc3RJRCk7XG5cbiAgICBpZiAoZ3Vlc3RJbmRleCAhPT0gLTEpIHtcbiAgICAgIGRpc3BsYXllZEd1ZXN0cy5zcGxpY2UoZ3Vlc3RJbmRleCwgMSk7XG4gICAgICBtYXJrRW50aXRpZXNBc0NoYW5nZWQoW2d1ZXN0XSwgUm93T3BlcmF0aW9uLkRlbGV0ZSk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuaXNHdWVzdENoaWxkKGd1ZXN0KSkge1xuICAgICAgY29uc3QgeyBjaGlsZCwgcGFyZW50IH0gPSB0aGlzLmdldFBhcmFudEFuZENoaWxkSW5kZXgoY3R4LCBndWVzdCk7XG4gICAgICBpZiAocGFyZW50ICE9PSAtMSkge1xuICAgICAgICBpZiAoY2hpbGQgIT09IC0xKSB7XG4gICAgICAgICAgZGlzcGxheWVkR3Vlc3RzW3BhcmVudF0uZW50aXRpZXMuc3BsaWNlKGNoaWxkLCAxKTtcbiAgICAgICAgfVxuICAgICAgICBtYXJrRW50aXRpZXNBc0NoYW5nZWQoW2Rpc3BsYXllZEd1ZXN0c1twYXJlbnRdXSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvdW50ZXItLTtcbiAgICB9XG5cbiAgICBjdHgucGF0Y2hTdGF0ZSh7XG4gICAgICBkaXNwbGF5ZWQ6IFsuLi5kaXNwbGF5ZWRHdWVzdHNdLFxuICAgICAgY291bnRlcjogY291bnRlcixcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgcG9wdWxhdGVTZW5kRW1haWxSZXF1ZXN0KGFjdGlvbjogU2VuZEd1ZXN0UGFzc2VzVG9FbWFpbEFjdGlvbikge1xuICAgIGxldCBwZGZQYWdlc1BhcmFtZXRlcnNMaXN0OiB7IFtrZXk6IHN0cmluZ106IGFueTsgfVtdID0gW107XG4gICAgbGV0IGd1ZXN0RW1haWxUZW1wbGF0ZSA9ICcnO1xuICAgIGlmIChhY3Rpb24uZ3Vlc3QuZW50aXRpZXMgJiYgYWN0aW9uLmd1ZXN0LmVudGl0aWVzLmxlbmd0aCA+IDApIHtcbiAgICAgIHBkZlBhZ2VzUGFyYW1ldGVyc0xpc3QgPSBbXTtcbiAgICAgIGFjdGlvbi5ndWVzdC5lbnRpdGllcy5mb3JFYWNoKGd1ZXN0ID0+IHtcbiAgICAgICAgY29uc3QgcGFyYW1MaXN0ID0gdGhpcy5nZXRQYXJhbWV0ZXJzKGd1ZXN0LCBhY3Rpb24uZmFjaWxpdHkpO1xuICAgICAgICBwZGZQYWdlc1BhcmFtZXRlcnNMaXN0LnB1c2gocGFyYW1MaXN0KTtcbiAgICAgIH0pO1xuICAgICAgZ3Vlc3RFbWFpbFRlbXBsYXRlID0gYWN0aW9uLmd1ZXN0LmJhdGNoTmFtZTtcblxuICAgIH0gZWxzZSB7XG4gICAgICBwZGZQYWdlc1BhcmFtZXRlcnNMaXN0LnB1c2godGhpcy5nZXRQYXJhbWV0ZXJzKGFjdGlvbi5ndWVzdCwgYWN0aW9uLmZhY2lsaXR5KSk7XG4gICAgICBndWVzdEVtYWlsVGVtcGxhdGUgPSBhY3Rpb24uZ3Vlc3QubmFtZTtcbiAgICB9XG5cbiAgICBjb25zdCBzZW5kRW1haWxSZXF1ZXN0ID0gbmV3IFNlbmRFbWFpbFJlcXVlc3REdG8oe1xuICAgICAgZW50aXR5OiBuZXcgR3Vlc3RFbnRpdHlQYXJhbXMoe1xuICAgICAgICBxclBsYWluVGV4dDogYWN0aW9uLmd1ZXN0LnFyUGxhaW5UZXh0LFxuICAgICAgICBpZDogYWN0aW9uLmd1ZXN0Lmd1ZXN0SUQgfHwgYWN0aW9uLmd1ZXN0LmJhdGNoSUQsXG4gICAgICAgIHFyQ29kZTogYWN0aW9uLmd1ZXN0LnFyQ29kZSxcbiAgICAgIH0pLFxuICAgICAgdG86IGFjdGlvbi5lbWFpbCxcbiAgICAgIHRlbXBsYXRlVHlwZTogVGVtcGxhdGVUeXBlLkd1ZXN0LFxuICAgICAgcGRmUGFnZXNQYXJhbWV0ZXJzTGlzdCxcbiAgICAgIHBkZlBhZ2VzUGFyYW1ldGVyczogbnVsbCwgLy8gYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgdmVyc2lvbiA4LjJcbiAgICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgICAgZ3Vlc3RFbWFpbFRlbXBsYXRlLFxuICAgICAgfSxcbiAgICAgIGlzTXVsdGlQYWdlc0ZpbGU6IGFjdGlvbi5pc011bHRpUGFnZXNGaWxlXG4gICAgfSk7XG4gICAgcmV0dXJuIHNlbmRFbWFpbFJlcXVlc3Q7XG4gIH1cblxuICBwcml2YXRlIGdldFBhcmFtZXRlcnMoZ3Vlc3Q6IFZHdWVzdFdpdGhCYXRjaER0bywgZmFjaWxpdHk6IEZhY2lsaXR5V2l0aEd1aWQpOiB7IFtrZXk6IHN0cmluZ106IGFueTsgfSB7XG4gICAgY29uc3QgcGFyYW1ldGVycyA9IHtcbiAgICAgIHZhbGlkRnJvbURhdGVUaW1lOiB0aGlzLnRvRGF0ZVN0cmluZyhndWVzdC52YWxpZEZyb21EYXRlKSxcbiAgICAgIHZhbGlkVG9EYXRlVGltZTogdGhpcy50b0RhdGVTdHJpbmcoZ3Vlc3QudmFsaWRUb0RhdGUpLFxuICAgICAgY29tcGFueU5hbWU6IGd1ZXN0LmNvbXBhbnlOYW1lLFxuICAgICAgc3ViQ29tcGFueU5hbWU6IGd1ZXN0LnN1YkNvbXBhbnlOYW1lLFxuICAgICAgcGFya05hbWU6IGZhY2lsaXR5Py5kYXRhPy5uYW1lLFxuICAgICAgcHJvZHVjZWREYXRlVGltZTogdGhpcy50b0RhdGVTdHJpbmcoZ3Vlc3QucHJvZHVjZWREYXRlKSxcbiAgICAgIGlkOiBndWVzdC5ndWVzdElELFxuICAgICAgZmlyc3ROYW1lOiBndWVzdC5maXJzdE5hbWUsXG4gICAgICBsYXN0TmFtZTogZ3Vlc3QubGFzdE5hbWUsXG4gICAgICBwbGF0ZUlkOiBndWVzdC5jYXJQbGF0ZSxcbiAgICAgIG5hbWU6IGd1ZXN0Lm5hbWUsXG4gICAgICBjYXJkOiBndWVzdC5jcmVkaXQsXG4gICAgICBhZGRyZXNzOiBnZXRBZGRyZXNzKGd1ZXN0LmNpdHksIGd1ZXN0LnN0cmVldCksXG4gICAgICBxckNvZGU6IGd1ZXN0LnFyQ29kZSxcbiAgICAgIGd1aWQ6IGZhY2lsaXR5Lmd1aWQsXG4gICAgICBwYXJrSWQ6IGZhY2lsaXR5LmRhdGEuaWQsXG4gICAgICBxclBsYWluVGV4dDogZ3Vlc3QucXJQbGFpblRleHRcbiAgICB9O1xuXG4gICAgcmV0dXJuIHBhcmFtZXRlcnM7XG4gIH1cblxuICBwcml2YXRlIGlzR3Vlc3RDaGlsZCA9IChndWVzdDogVkd1ZXN0V2l0aEJhdGNoRHRvKSA9PiBndWVzdC5ndWVzdElEICE9PSBudWxsICYmIGd1ZXN0LmJhdGNoSUQgPiAwO1xuXG4gIHByaXZhdGUgZ2V0R3Vlc3RJbmRleChkaXNwbGF5ZWRHdWVzdHM6IFZHdWVzdFdpdGhCYXRjaER0b1tdLCBndWVzdElkOiBudW1iZXIpOiBudW1iZXIge1xuICAgIHJldHVybiBkaXNwbGF5ZWRHdWVzdHMuZmluZEluZGV4KGd1ZXN0ID0+IGd1ZXN0Lmd1ZXN0SUQgPT09IGd1ZXN0SWQpO1xuICB9XG5cbiAgcHJpdmF0ZSBvblVwZGF0ZUJhc2ljR3Vlc3ROZXh0KGN0eDogU3RhdGVDb250ZXh0PEd1ZXN0U3RhdGVNb2RlbD4sIGFjdGlvbjogVXBkYXRlQmFzaWNHdWVzdEFjdGlvbiwgaGFuZGxlZDogVkd1ZXN0V2l0aEJhdGNoRHRvSHR0cFJlc3BvbnNlRGF0YSwgbWVzc2FnZUJhclBheWxvYWQ6IE1lc3NhZ2VCYXJQYXlsb2FkKSB7XG4gICAgdGhpcy51cGRhdGVHdWVzdEluU3RvcmUoY3R4LCBoYW5kbGVkLmRhdGEsIGFjdGlvbi5ndWlkKTtcbiAgICB0aGlzLm1lc3NhZ2VCYXJTZXJ2aWNlLnN1Y2Nlc3MoXG4gICAgICBMb2NhbGl6YXRpb24uZW50aXR5X3N1Y2Nlc3MsXG4gICAgICBjcmVhdGVNZXNzYWdlVGV4dChtZXNzYWdlQmFyUGF5bG9hZClcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBvblVwZGF0ZUJhc2ljR3Vlc3RFcnJvcihtZXNzYWdlQmFyUGF5bG9hZDogTWVzc2FnZUJhclBheWxvYWQpIHtcbiAgICBtZXNzYWdlQmFyUGF5bG9hZC5lbnRpdHkgPSBsb3dlckNhc2VGaXJzdExldHRlcihcbiAgICAgIG1lc3NhZ2VCYXJQYXlsb2FkLmVudGl0eVxuICAgICk7XG4gICAgbWVzc2FnZUJhclBheWxvYWQuYWN0aW9uID0gbG93ZXJDYXNlRmlyc3RMZXR0ZXIoXG4gICAgICB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KExvY2FsaXphdGlvbi51cGRhdGUpXG4gICAgKTtcbiAgICB0aGlzLm1lc3NhZ2VCYXJTZXJ2aWNlLmVycm9yKFxuICAgICAgTG9jYWxpemF0aW9uLmVudGl0eV9mYWlsZWQsXG4gICAgICBjcmVhdGVNZXNzYWdlVGV4dChtZXNzYWdlQmFyUGF5bG9hZClcbiAgICApO1xuICB9XG59XG4iXX0=
|
|
@@ -130915,8 +130915,10 @@ let GuestState = class GuestState {
|
|
|
130915
130915
|
const tableRows = [];
|
|
130916
130916
|
const guestWithBatchDtoList = guestsWrapper.data.entities;
|
|
130917
130917
|
guestWithBatchDtoList.forEach((guest) => {
|
|
130918
|
+
// Mirrors the grid's Guest Type cell, which shows a "(Deleted) <type>" label for deleted guests
|
|
130919
|
+
const guestType = this.translate.instant(ProfileTypeText[ProfileType[guest.mType]]);
|
|
130918
130920
|
tableRows.push([guest.name,
|
|
130919
|
-
this.translate.instant(
|
|
130921
|
+
guest.deleted ? `(${this.translate.instant(Localization.deleted_type)}) ${guestType}` : guestType,
|
|
130920
130922
|
guest.mobile,
|
|
130921
130923
|
guest.carPlate,
|
|
130922
130924
|
this.exportFileService.getDateFieldValue(action.fileType, guest, 'validFromDate'),
|