@techextensor/tab-core-utility 2.2.195 → 2.2.197
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/README.md +7 -0
- package/esm2022/lib/tab-core-utility/app/constants/api-constants.mjs +4 -4
- package/esm2022/lib/tab-core-utility/app/crud/tab-blueprint.service.mjs +7 -7
- package/esm2022/lib/tab-core-utility/app/crud/tab-crud.service.mjs +47 -40
- package/esm2022/lib/tab-core-utility/app/crud/tab-delete.service.mjs +7 -7
- package/esm2022/lib/tab-core-utility/app/crud/tab-formio.service.mjs +7 -7
- package/esm2022/lib/tab-core-utility/app/crud/tab-get.service.mjs +7 -7
- package/esm2022/lib/tab-core-utility/app/crud/tab-insert.service.mjs +7 -7
- package/esm2022/lib/tab-core-utility/app/crud/tab-release.service.mjs +7 -7
- package/esm2022/lib/tab-core-utility/app/crud/tab-update.service.mjs +7 -7
- package/esm2022/lib/tab-core-utility/app/crud/tab-workflow.service.mjs +7 -7
- package/esm2022/lib/tab-core-utility/app/helpers/auth-response.adapter.mjs +31 -6
- package/esm2022/lib/tab-core-utility/app/helpers/common/app.helpers.mjs +8 -8
- package/esm2022/lib/tab-core-utility/app/helpers/common/dsq.helpers.mjs +7 -7
- package/esm2022/lib/tab-core-utility/app/helpers/common/meta-data.helpers.mjs +7 -7
- package/esm2022/lib/tab-core-utility/app/helpers/common/req-res.helpers.mjs +7 -7
- package/esm2022/lib/tab-core-utility/app/helpers/common/template.helpers.mjs +7 -7
- package/esm2022/lib/tab-core-utility/app/helpers/common/user-personalization.helper.mjs +7 -7
- package/esm2022/lib/tab-core-utility/app/helpers/common/where-clause.helpers.mjs +7 -7
- package/esm2022/lib/tab-core-utility/app/helpers/login-response.adapter.mjs +31 -6
- package/esm2022/lib/tab-core-utility/app/helpers/screen/forms.helpers.mjs +7 -7
- package/esm2022/lib/tab-core-utility/app/helpers/screen/grid-column-data.helpers.mjs +7 -7
- package/esm2022/lib/tab-core-utility/app/helpers/screen/grid.helpers.mjs +7 -7
- package/esm2022/lib/tab-core-utility/app/helpers/screen/media-upload.helpers.mjs +7 -7
- package/esm2022/lib/tab-core-utility/app/helpers/screen/plugin.helpers.mjs +7 -7
- package/esm2022/lib/tab-core-utility/app/helpers/screen/screen.helpers.mjs +7 -7
- package/esm2022/lib/tab-core-utility/app/interfaces/auth.interface.mjs +1 -1
- package/esm2022/lib/tab-core-utility/app/models/app-screen.model.mjs +4 -4
- package/esm2022/lib/tab-core-utility/auth/auth.service.mjs +8 -9
- package/esm2022/lib/tab-core-utility/auth/idb-storage.service.mjs +7 -7
- package/esm2022/lib/tab-core-utility/auth/local-storage.service.mjs +7 -7
- package/esm2022/lib/tab-core-utility/auth/session-storage.service.mjs +7 -7
- package/esm2022/lib/tab-core-utility/core/http-client/api.service.mjs +7 -7
- package/esm2022/lib/tab-core-utility/core/pipe/translate.pipe.mjs +11 -11
- package/esm2022/lib/tab-core-utility/core/service/confirmation.service.mjs +9 -9
- package/esm2022/lib/tab-core-utility/core/service/encryption.service.mjs +7 -7
- package/esm2022/lib/tab-core-utility/core/service/notification.service.mjs +9 -9
- package/esm2022/lib/tab-core-utility/core/service/signalr/operation-tracker.service.mjs +7 -7
- package/esm2022/lib/tab-core-utility/core/service/signalr/signalr-infrastructure.service.mjs +9 -9
- package/esm2022/lib/tab-core-utility/core/service/signalr/signalr.service.mjs +9 -9
- package/esm2022/lib/tab-core-utility/core/service/translation.service.mjs +9 -9
- package/lib/tab-core-utility/app/constants/api-constants.d.ts +2 -2
- package/lib/tab-core-utility/app/crud/tab-crud.service.d.ts +6 -1
- package/lib/tab-core-utility/app/helpers/auth-response.adapter.d.ts +2 -0
- package/lib/tab-core-utility/app/helpers/login-response.adapter.d.ts +2 -0
- package/lib/tab-core-utility/app/interfaces/auth.interface.d.ts +1 -2
- package/package.json +1 -3
package/README.md
ADDED
|
@@ -34,7 +34,7 @@ export const API = {
|
|
|
34
34
|
statusUpdate: 'status/update',
|
|
35
35
|
authRegisterUser: 'auth/register',
|
|
36
36
|
getUserDetails: 'identity/GetUserDetails',
|
|
37
|
-
|
|
37
|
+
permissions: 'permissions',
|
|
38
38
|
getUserAccess: 'access',
|
|
39
39
|
testConnection: 'MetaData/TestConnection',
|
|
40
40
|
performValidation: 'MetaData/PerformValidation',
|
|
@@ -43,7 +43,7 @@ export const API = {
|
|
|
43
43
|
// fileManagerUpload:'FileManager/Upload'
|
|
44
44
|
applicationRegisterAppObjects: 'application/registerappobjects',
|
|
45
45
|
languageResource: 'Resources/LanguageResource',
|
|
46
|
-
refreshToken: '
|
|
46
|
+
refreshToken: 'auth/refresh',
|
|
47
47
|
globalSearch: 'globalsearch/search',
|
|
48
48
|
cloneDsq: 'Application/CloneDSQ',
|
|
49
49
|
InsertScreenPerformanceAnalytics: 'ElasticSearch/InsertScreenPerformanceAnalytics',
|
|
@@ -60,7 +60,7 @@ export const API = {
|
|
|
60
60
|
GetReleaseJSONDifference: 'Release/GetReleaseJSONDifference',
|
|
61
61
|
GetDataDifference: 'Release/GetDataDifference',
|
|
62
62
|
RegisterTenant: 'Tenant/RegisterTenant',
|
|
63
|
-
|
|
63
|
+
databaseExecute: 'database/execute',
|
|
64
64
|
GetAllDocumnets: 'Documents/GetAllDocuments',
|
|
65
65
|
GetDocumentById: 'Documents/GetDocumentById',
|
|
66
66
|
ExecuteWorkflow: 'Workflow/Execute',
|
|
@@ -86,4 +86,4 @@ export const APIServices = {
|
|
|
86
86
|
reportService: 'reportService',
|
|
87
87
|
fileManagerService: 'fileManagerService'
|
|
88
88
|
};
|
|
89
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
89
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLWNvbnN0YW50cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvZGF0YS1hY2Nlc3Mvc3JjL2xpYi90YWItY29yZS11dGlsaXR5L2FwcC9jb25zdGFudHMvYXBpLWNvbnN0YW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxNQUFNLENBQUMsTUFBTSxHQUFHLEdBQUc7SUFDakIscUJBQXFCLEVBQUUsY0FBYyxFQUFFLFNBQVM7SUFDaEQsMkJBQTJCLEVBQUUsY0FBYyxFQUFFLE1BQU07SUFDbkQsa0RBQWtEO0lBQ2xELDhDQUE4QztJQUM5QyxjQUFjLEVBQUUsa0NBQWtDO0lBQ2xELGFBQWEsRUFBRSxpQ0FBaUM7SUFFaEQsVUFBVSxFQUFFLGlCQUFpQjtJQUM3QixNQUFNLEVBQUUsYUFBYTtJQUNyQixNQUFNLEVBQUUsUUFBUTtJQUNoQixRQUFRLEVBQUUsV0FBVztJQUNyQixRQUFRLEVBQUUsc0JBQXNCO0lBQ2hDLGNBQWMsRUFBRSxpQkFBaUI7SUFDakMsS0FBSyxFQUFFLFlBQVk7SUFDbkIsWUFBWSxFQUFFLGdCQUFnQjtJQUM5QixPQUFPLEVBQUUscUJBQXFCO0lBQzlCLGtCQUFrQixFQUFFLGdCQUFnQjtJQUNwQyxhQUFhLEVBQUUsZ0JBQWdCO0lBQy9CLFVBQVUsRUFBRSx3QkFBd0I7SUFDcEMsU0FBUyxFQUFFLFdBQVc7SUFDdEIseUJBQXlCO0lBQ3pCLFVBQVUsRUFBRSxhQUFhO0lBQ3pCLHFCQUFxQixFQUFFLHdCQUF3QjtJQUMvQyxVQUFVLEVBQUUsaUJBQWlCO0lBQzdCLFlBQVksRUFBRSxjQUFjO0lBQzVCLGVBQWUsRUFBRSxrQkFBa0I7SUFDbkMsY0FBYyxFQUFFLHlCQUF5QjtJQUN6QyxZQUFZLEVBQUUsd0JBQXdCO0lBQ3RDLFFBQVEsRUFBRSxlQUFlO0lBQ3pCLFVBQVUsRUFBRSxhQUFhO0lBQ3pCLFVBQVUsRUFBRSxtQkFBbUI7SUFDL0IsY0FBYyxFQUFFLHVCQUF1QjtJQUN2QyxlQUFlLEVBQUUsa0JBQWtCO0lBQ25DLFlBQVksRUFBRSxlQUFlO0lBQzdCLGdCQUFnQixFQUFFLGVBQWU7SUFDakMsY0FBYyxFQUFFLHlCQUF5QjtJQUN6QyxXQUFXLEVBQUUsYUFBYTtJQUMxQixhQUFhLEVBQUUsUUFBUTtJQUN2QixjQUFjLEVBQUUseUJBQXlCO0lBQ3pDLGlCQUFpQixFQUFFLDRCQUE0QjtJQUMvQyxnQkFBZ0IsRUFBRSx5QkFBeUI7SUFDM0MscUJBQXFCLEVBQUUsOEJBQThCO0lBQ3JELHlDQUF5QztJQUN6Qyw2QkFBNkIsRUFBRSxnQ0FBZ0M7SUFDL0QsZ0JBQWdCLEVBQUUsNEJBQTRCO0lBQzlDLFlBQVksRUFBRSxjQUFjO0lBQzVCLFlBQVksRUFBRSxxQkFBcUI7SUFDbkMsUUFBUSxFQUFFLHNCQUFzQjtJQUNoQyxnQ0FBZ0MsRUFDOUIsZ0RBQWdEO0lBQ2xELG1CQUFtQixFQUFFLDBCQUEwQjtJQUMvQywrQkFBK0IsRUFBRywrQ0FBK0M7SUFDakYsZ0NBQWdDLEVBQUcsZ0RBQWdEO0lBQ25GLGlCQUFpQixFQUFFLDBCQUEwQjtJQUM3Qyx3QkFBd0IsRUFBRSwyQkFBMkI7SUFDckQsWUFBWSxFQUFFLGVBQWU7SUFDN0IsdUJBQXVCLEVBQUcsdUNBQXVDO0lBQ2pFLHFCQUFxQixFQUFFLHFDQUFxQztJQUM1RCxjQUFjLEVBQUUsaUJBQWlCO0lBQ2pDLFVBQVUsRUFBRyxtQkFBbUI7SUFDaEMsd0JBQXdCLEVBQUMsa0NBQWtDO0lBQzNELGlCQUFpQixFQUFDLDJCQUEyQjtJQUM3QyxjQUFjLEVBQUUsdUJBQXVCO0lBQ3ZDLGVBQWUsRUFBRSxrQkFBa0I7SUFDbkMsZUFBZSxFQUFFLDJCQUEyQjtJQUM1QyxlQUFlLEVBQUUsMkJBQTJCO0lBQzVDLGVBQWUsRUFBRSxrQkFBa0I7SUFDbkMsY0FBYyxFQUFFLGlCQUFpQjtJQUNqQyxhQUFhLEVBQUUsZ0JBQWdCO0lBQy9CLGFBQWEsRUFBRSxnQkFBZ0I7SUFDL0IsYUFBYSxFQUFFLGdCQUFnQjtJQUMvQixhQUFhLEVBQUUsZ0JBQWdCO0lBQy9CLHlCQUF5QixFQUFDLDRCQUE0QjtJQUN0RCxtQkFBbUIsRUFBQyxzQkFBc0I7SUFDMUMsaUJBQWlCLEVBQUMsb0JBQW9CO0lBQ3RDLG1CQUFtQixFQUFDLHNCQUFzQjtDQUMzQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUEyQztJQUNqRSxXQUFXLEVBQUUsYUFBYTtJQUMxQixlQUFlLEVBQUUsaUJBQWlCO0lBQ2xDLGFBQWEsRUFBRSxlQUFlO0lBQzlCLGVBQWUsRUFBRSxpQkFBaUI7SUFDbEMsbUJBQW1CLEVBQUUscUJBQXFCO0lBQzFDLG1CQUFtQixFQUFFLHFCQUFxQjtJQUMxQyxlQUFlLEVBQUUsaUJBQWlCO0lBQ2xDLGFBQWEsRUFBRSxlQUFlO0lBQzlCLGFBQWEsRUFBRSxlQUFlO0lBQzlCLGtCQUFrQixFQUFFLG9CQUFvQjtDQUN6QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBBUElTZXJ2aWNlTmFtZSB9IGZyb20gJy4uL2ludGVyZmFjZXMvY29tbW9uLmludGVyZmFjZSc7XHJcblxyXG5leHBvcnQgY29uc3QgQVBJID0ge1xyXG4gIGFwcGxpY2F0aW9uSWRlbnRpZmllcjogJzAyZFBsR1hDS0NQeScsIC8vcGhvZW5peFxyXG4gIGFwcGxpY2F0aW9uSWRlbnRpZmllckZvclBNUzogJ3FxbVh3ZUdCMURiRycsIC8vIHBtc1xyXG4gIC8vIGVuZHBvaW50OiAnaHR0cDovLzE5Mi4xNjguMTAuMTgxOjg0NDEvYXBpL3YxLycsXHJcbiAgLy8gd29ya2Zsb3dFbmRQb2ludDogJ2h0dHA6Ly8xOTIuMTY4LjEwLjE4MS8nLFxyXG4gIG5vdnVCYWNrZW5kVXJsOiAnaHR0cHM6Ly9ub3Z1YXBpLnRlY2hleHRlbnNvci5jb20nLFxyXG4gIG5vdnVTb2NrZXRVcmw6ICdodHRwczovL25vdnV3cy50ZWNoZXh0ZW5zb3IuY29tJyxcclxuXHJcbiAgYnVsa0luc2VydDogJ0NSVUQvQnVsa0luc2VydCcsXHJcbiAgc2VsZWN0OiAnQ1JVRC9TZWxlY3QnLFxyXG4gIHNjcmVlbjogJ3NjcmVlbicsXHJcbiAgbGlzdHNHZXQ6ICdsaXN0cy9HZXQnLFxyXG4gIGJ1aWxkQXBwOiAnQXBwbGljYXRpb24vQnVpbGRBcHAnLFxyXG4gIG1ldGFkYXRhU2NoZW1hOiAnbWV0YWRhdGEvc2NoZW1hJyxcclxuICBsb2dpbjogJ2F1dGgvbG9naW4nLFxyXG4gIHBsdWdpblVwbG9hZDogJ1BsdWdpbnMvVXBsb2FkJyxcclxuICBnZXRGaWxlOiAnUGx1Z2lucy9HZXRGaWxlQnlJZCcsXHJcbiAgZ2V0QWxsUGx1Z2luQnlUeXBlOiAnUGx1Z2lucy9HZXRBbGwnLFxyXG4gIHRlbXBsYXRlUGFyc2U6ICdUZW1wbGF0ZS9QYXJzZScsXHJcbiAgcHVibGlzaEFwcDogJ0FwcGxpY2F0aW9uL1B1Ymxpc2hBcHAnLFxyXG4gIGdldHJlY29yZDogJ0dldFJlY29yZCcsXHJcbiAgLy8gcmF3U1FMOiAnQ1JVRC9SYXdTUUwnLFxyXG4gIGZpbGVVcGxvYWQ6ICdGaWxlL1VwbG9hZCcsXHJcbiAgRmlsZU1hbmFnZXJVcGxvYWRGaWxlOiAnRmlsZU1hbmFnZXIvVXBsb2FkRmlsZScsXHJcbiAgZGVsZXRlRmlsZTogJ0ZpbGUvRGVsZXRlRmlsZScsXHJcbiAgZ2V0TWVkaWFGaWxlOiAnRmlsZS9HZXRGaWxlJyxcclxuICBhdWRpdEdldEhpc3Rvcnk6ICdhdWRpdC9nZXRoaXN0b3J5JyxcclxuICBjaGFuZ2VQYXNzd29yZDogJ2lkZW50aXR5L0NoYW5nZVBhc3N3b3JkJyxcclxuICByZXN0cGFzc3dvcmQ6ICdpZGVudGl0eS9SZXNldFBhc3N3b3JkJyxcclxuICBnZXRJbWFnZTogJ0ZpbGUvR2V0SW1hZ2UnLFxyXG4gIGltcG9ydERhdGE6ICdpbXBvcnQvZGF0YScsXHJcbiAgc2NyZWVuRGF0YTogJ2Zvcm1pby9zY3JlZW5kYXRhJyxcclxuICBwcm9jZXNzUmVxdWVzdDogJ2Zvcm1pby9wcm9jZXNzcmVxdWVzdCcsXHJcbiAgc3RhdHVzQXZhaWxhYmxlOiAnc3RhdHVzL2F2YWlsYWJsZScsXHJcbiAgc3RhdHVzVXBkYXRlOiAnc3RhdHVzL3VwZGF0ZScsXHJcbiAgYXV0aFJlZ2lzdGVyVXNlcjogJ2F1dGgvcmVnaXN0ZXInLFxyXG4gIGdldFVzZXJEZXRhaWxzOiAnaWRlbnRpdHkvR2V0VXNlckRldGFpbHMnLFxyXG4gIHBlcm1pc3Npb25zOiAncGVybWlzc2lvbnMnLFxyXG4gIGdldFVzZXJBY2Nlc3M6ICdhY2Nlc3MnLFxyXG4gIHRlc3RDb25uZWN0aW9uOiAnTWV0YURhdGEvVGVzdENvbm5lY3Rpb24nLFxyXG4gIHBlcmZvcm1WYWxpZGF0aW9uOiAnTWV0YURhdGEvUGVyZm9ybVZhbGlkYXRpb24nLFxyXG4gIHNldFRhYkNvbXBvbmVudHM6ICdUZW5hbnQvU2V0VGFiQ29tcG9uZW50cycsXHJcbiAgQnVpbGRGb3JtSU9Db21wb25lbnRzOiAnRm9ybUlPL0J1aWxkRm9ybUlPQ29tcG9uZW50cycsXHJcbiAgLy8gZmlsZU1hbmFnZXJVcGxvYWQ6J0ZpbGVNYW5hZ2VyL1VwbG9hZCdcclxuICBhcHBsaWNhdGlvblJlZ2lzdGVyQXBwT2JqZWN0czogJ2FwcGxpY2F0aW9uL3JlZ2lzdGVyYXBwb2JqZWN0cycsXHJcbiAgbGFuZ3VhZ2VSZXNvdXJjZTogJ1Jlc291cmNlcy9MYW5ndWFnZVJlc291cmNlJyxcclxuICByZWZyZXNoVG9rZW46ICdhdXRoL3JlZnJlc2gnLFxyXG4gIGdsb2JhbFNlYXJjaDogJ2dsb2JhbHNlYXJjaC9zZWFyY2gnLFxyXG4gIGNsb25lRHNxOiAnQXBwbGljYXRpb24vQ2xvbmVEU1EnLFxyXG4gIEluc2VydFNjcmVlblBlcmZvcm1hbmNlQW5hbHl0aWNzOlxyXG4gICAgJ0VsYXN0aWNTZWFyY2gvSW5zZXJ0U2NyZWVuUGVyZm9ybWFuY2VBbmFseXRpY3MnLFxyXG4gIEdlbmVyYXRlSHR0cFJlcXVlc3Q6ICdDUlVEL0dlbmVyYXRlSHR0cFJlcXVlc3QnLFxyXG4gIEdldERldGFpbE9mUGVyZm9ybWFuY2VBbmFseXRpY3MgOiAnRWxhc3RpY1NlYXJjaC9HZXREZXRhaWxPZlBlcmZvcm1hbmNlQW5hbHl0aWNzJyxcclxuICBHZXRTdW1tYXJ5T2ZQZXJmb3JtYW5jZUFuYWx5dGljcyA6ICdFbGFzdGljU2VhcmNoL0dldFN1bW1hcnlPZlBlcmZvcm1hbmNlQW5hbHl0aWNzJyxcclxuICBHZXREYXRhSnNvbkJ5VHlwZTogJ1RlbmFudC9HZXREYXRhSnNvbkJ5VHlwZScsXHJcbiAgYXBwbGljYXRpb25TeW5jQXBwRmllbGRzOiAnYXBwbGljYXRpb24vc3luY2FwcGZpZWxkcycsXHJcbiAgcmVwb3J0RXhwb3J0OiAncmVwb3J0L2V4cG9ydCcsXHJcbiAgUmVmcmVzaEdsb2JhbFNlYXJjaERhdGEgOiAnRWxhc3RpY1NlYXJjaC9SZWZyZXNoR2xvYmFsU2VhcmNoRGF0YScsXHJcbiAgUmVmcmVzaFJlY29yZEluZm9EYXRhOiAnRGF0YUludGVncml0eS9SZWZyZXNoUmVjb3JkSW5mb0RhdGEnLFxyXG4gIHJlcG9ydERvd25sb2FkOiAncmVwb3J0L2Rvd25sb2FkJyxcclxuICBzZW5kUmVwb3J0IDogJ3JlcG9ydC9TZW5kUmVwb3J0JyxcclxuICBHZXRSZWxlYXNlSlNPTkRpZmZlcmVuY2U6J1JlbGVhc2UvR2V0UmVsZWFzZUpTT05EaWZmZXJlbmNlJyxcclxuICBHZXREYXRhRGlmZmVyZW5jZTonUmVsZWFzZS9HZXREYXRhRGlmZmVyZW5jZScsXHJcbiAgUmVnaXN0ZXJUZW5hbnQ6ICdUZW5hbnQvUmVnaXN0ZXJUZW5hbnQnLFxyXG4gIGRhdGFiYXNlRXhlY3V0ZTogJ2RhdGFiYXNlL2V4ZWN1dGUnLFxyXG4gIEdldEFsbERvY3VtbmV0czogJ0RvY3VtZW50cy9HZXRBbGxEb2N1bWVudHMnLFxyXG4gIEdldERvY3VtZW50QnlJZDogJ0RvY3VtZW50cy9HZXREb2N1bWVudEJ5SWQnLFxyXG4gIEV4ZWN1dGVXb3JrZmxvdzogJ1dvcmtmbG93L0V4ZWN1dGUnLFxyXG4gIFF1ZXJpZXNFeGVjdXRlOiAnUXVlcmllcy9leGVjdXRlJyxcclxuICBRdWVyaWVzU2VsZWN0OiAncXVlcmllcy9zZWxlY3QnLFxyXG4gIHJlY29yZHNJbnNlcnQ6ICdyZWNvcmRzL2luc2VydCcsXHJcbiAgcmVjb3Jkc1VwZGF0ZTogJ3JlY29yZHMvdXBkYXRlJyxcclxuICByZWNvcmRzRGVsZXRlOiAncmVjb3Jkcy9kZWxldGUnLFxyXG4gIGZpbGVNYW5hZ2VyRmlsZU9wZXJhdGlvbnM6J0ZpbGVNYW5hZ2VyL0ZpbGVPcGVyYXRpb25zJyxcclxuICBmaWxlTWFuYWdlckdldEltYWdlOidGaWxlTWFuYWdlci9HZXRJbWFnZScsXHJcbiAgZmlsZU1hbmFnZXJVcGxvYWQ6J0ZpbGVNYW5hZ2VyL1VwbG9hZCcsXHJcbiAgZmlsZU1hbmFnZXJEb3dubG9hZDonRmlsZU1hbmFnZXIvRG93bmxvYWQnXHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgQVBJU2VydmljZXM6IFJlY29yZDxBUElTZXJ2aWNlTmFtZSwgQVBJU2VydmljZU5hbWU+ID0ge1xyXG4gIGNydWRTZXJ2aWNlOiAnY3J1ZFNlcnZpY2UnLFxyXG4gIG1ldGFkYXRhU2VydmljZTogJ21ldGFkYXRhU2VydmljZScsXHJcbiAgZm9ybWlvU2VydmljZTogJ2Zvcm1pb1NlcnZpY2UnLFxyXG4gIGlkZW50aXR5U2VydmljZTogJ2lkZW50aXR5U2VydmljZScsXHJcbiAgY29kZUV4ZWN1dG9yU2VydmljZTogJ2NvZGVFeGVjdXRvclNlcnZpY2UnLFxyXG4gIG5vdGlmaWNhdGlvblNlcnZpY2U6ICdub3RpZmljYXRpb25TZXJ2aWNlJyxcclxuICB3b3JrZmxvd1NlcnZpY2U6ICd3b3JrZmxvd1NlcnZpY2UnLFxyXG4gIGtpYmFuYVNlcnZpY2U6ICdraWJhbmFTZXJ2aWNlJyxcclxuICByZXBvcnRTZXJ2aWNlOiAncmVwb3J0U2VydmljZScsXHJcbiAgZmlsZU1hbmFnZXJTZXJ2aWNlOiAnZmlsZU1hbmFnZXJTZXJ2aWNlJ1xyXG59OyJdfQ==
|
|
@@ -55,11 +55,11 @@ export class TabBlueprintService {
|
|
|
55
55
|
const appObject = this.metadataHelper.getAppObjectByIdOrName(appObjectId);
|
|
56
56
|
return appObject?.SystemDBTableName || appObject?.ObjectName;
|
|
57
57
|
}
|
|
58
|
-
static { this.ɵfac =
|
|
59
|
-
static { this.ɵprov =
|
|
58
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.21", ngImport: i0, type: TabBlueprintService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
59
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.21", ngImport: i0, type: TabBlueprintService, providedIn: 'root' }); }
|
|
60
60
|
}
|
|
61
|
-
(
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
61
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.21", ngImport: i0, type: TabBlueprintService, decorators: [{
|
|
62
|
+
type: Injectable,
|
|
63
|
+
args: [{ providedIn: 'root' }]
|
|
64
|
+
}] });
|
|
65
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiLWJsdWVwcmludC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9kYXRhLWFjY2Vzcy9zcmMvbGliL3RhYi1jb3JlLXV0aWxpdHkvYXBwL2NydWQvdGFiLWJsdWVwcmludC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHVEQUF1RDtBQUN2RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ2hFLE9BQU8sRUFBRSxHQUFHLEVBQUUsV0FBVyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFHOUQsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JDLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQ25GLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUNyRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7O0FBSW5ELE1BQU0sT0FBTyxtQkFBbUI7SUFEaEM7UUFFbUIsZUFBVSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNoQyxtQkFBYyxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztLQWdFMUQ7SUE5REM7OztPQUdHO0lBQ0gsYUFBYSxDQUFDLE9BQTBCLEVBQUUsT0FBYTtRQUNyRCxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDbkQsT0FBTyxHQUFHLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUU5QixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsY0FBYyxDQUNuQyxXQUFXLENBQUMsV0FBVyxFQUN2QixHQUFHLENBQUMsZUFBZSxFQUNuQixVQUFVLEVBQ1YsT0FBTyxDQUNSLENBQUMsSUFBSSxDQUNKLEdBQUcsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLHlCQUF5QixDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUMvRCxDQUFDO0lBQ0osQ0FBQztJQUVEOzs7T0FHRztJQUNILFlBQVksQ0FBQyxPQUE0QixFQUFFLE9BQWE7UUFDdEQsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE9BQU8sQ0FBQzthQUMvQyxHQUFHLENBQUMsY0FBYyxFQUFFLE9BQU8sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBQ3JELE9BQU8sR0FBRyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFOUIsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FDakMsV0FBVyxDQUFDLFdBQVcsRUFDdkIsR0FBRyxHQUFHLENBQUMsWUFBWSxJQUFJLFVBQVUsQ0FBQyxRQUFRLEVBQUUsRUFBRSxFQUM5QyxJQUFJLEVBQ0osT0FBTyxDQUNSLENBQUM7SUFDSixDQUFDO0lBRUQ7O09BRUc7SUFDSyxpQkFBaUIsQ0FBQyxPQUEwQjtRQUNsRCxJQUFJLFVBQVUsR0FBRyxJQUFJLFVBQVUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxVQUFVLEVBQUUsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRXBFLE1BQU0sVUFBVSxHQUFHLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTTtZQUMvQyxDQUFDLENBQUMsT0FBTyxDQUFDLGFBQWE7WUFDdkIsQ0FBQyxDQUFDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTTtnQkFDNUIsQ0FBQyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDO2dCQUM3QyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBRVgsSUFBSSxVQUFVLEVBQUUsQ0FBQztZQUNmLFVBQVUsR0FBRyxVQUFVLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxVQUFVLENBQUMsQ0FBQztRQUN4RCxDQUFDO1FBRUQsT0FBTyxVQUFVLENBQUM7SUFDcEIsQ0FBQztJQUVEOzs7T0FHRztJQUNLLGlCQUFpQixDQUFDLFdBQW1CO1FBQzNDLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsc0JBQXNCLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDMUUsT0FBTyxTQUFTLEVBQUUsaUJBQWlCLElBQUksU0FBUyxFQUFFLFVBQVUsQ0FBQztJQUMvRCxDQUFDOytHQWpFVSxtQkFBbUI7bUhBQW5CLG1CQUFtQixjQUROLE1BQU07OzRGQUNuQixtQkFBbUI7a0JBRC9CLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xyXG5pbXBvcnQgeyBJbmplY3RhYmxlLCBpbmplY3QgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBIdHRwUGFyYW1zIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vbi9odHRwXCI7XHJcbmltcG9ydCB7IEFwaVNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vY29yZS9odHRwLWNsaWVudC9hcGkuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBBUEksIEFQSVNlcnZpY2VzIH0gZnJvbSBcIi4uL2NvbnN0YW50cy9hcGktY29uc3RhbnRzXCI7XHJcbmltcG9ydCB7IENvbW1vbkFwaVJlc3BvbnNlLCBOZXh0U3RhdHVzUGF5bG9hZCwgVXBkYXRlU3RhdHVzUGF5bG9hZCB9IGZyb20gXCIuLi9pbnRlcmZhY2VzL2NvbW1vbi5pbnRlcmZhY2VcIjtcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7IG1hcCB9IGZyb20gXCJyeGpzL29wZXJhdG9yc1wiO1xyXG5pbXBvcnQgeyBUcmFuc2l0aW9uUmVzcG9uc2VBZGFwdGVyIH0gZnJvbSBcIi4uL2hlbHBlcnMvdHJhbnNpdGlvbi1yZXNwb25zZS5hZGFwdGVyXCI7XHJcbmltcG9ydCB7IE1ldGFkYXRhSGVscGVyIH0gZnJvbSBcIi4uL2hlbHBlcnMvY29tbW9uL21ldGEtZGF0YS5oZWxwZXJzXCI7XHJcbmltcG9ydCB7IGdldEhlYWRlcnMgfSBmcm9tIFwiLi4vdXRpbHMvcmVxLXJlcy51dGlsXCI7XHJcblxyXG5cclxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcclxuZXhwb3J0IGNsYXNzIFRhYkJsdWVwcmludFNlcnZpY2Uge1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgYXBpU2VydmljZSA9IGluamVjdChBcGlTZXJ2aWNlKTtcclxuICBwcml2YXRlIHJlYWRvbmx5IG1ldGFkYXRhSGVscGVyID0gaW5qZWN0KE1ldGFkYXRhSGVscGVyKTtcclxuXHJcbiAgLyoqXHJcbiAgICogUmV0cmlldmVzIHRoZSBuZXh0IHN0YXR1cyBvZiBhIHJlY29yZC5cclxuICAgKiBVc2VzIG5ldyBjcnVkU2VydmljZSBlbmRwb2ludDogR0VUIHN0YXR1cy9hdmFpbGFibGU/cmVjb3JkSWQ9Li4uJkVudGl0eU5hbWU9Li4uXHJcbiAgICovXHJcbiAgZ2V0TmV4dFN0YXR1cyhwYXlsb2FkOiBOZXh0U3RhdHVzUGF5bG9hZCwgaGVhZGVycz86IGFueSk6IE9ic2VydmFibGU8Q29tbW9uQXBpUmVzcG9uc2U+IHtcclxuICAgIGNvbnN0IGh0dHBQYXJhbXMgPSB0aGlzLmJ1aWxkU3RhdHVzUGFyYW1zKHBheWxvYWQpO1xyXG4gICAgaGVhZGVycyA9IGdldEhlYWRlcnMoaGVhZGVycyk7XHJcblxyXG4gICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZS5nZXRGcm9tU2VydmljZShcclxuICAgICAgQVBJU2VydmljZXMuY3J1ZFNlcnZpY2UsXHJcbiAgICAgIEFQSS5zdGF0dXNBdmFpbGFibGUsXHJcbiAgICAgIGh0dHBQYXJhbXMsXHJcbiAgICAgIGhlYWRlcnNcclxuICAgICkucGlwZShcclxuICAgICAgbWFwKHJlc3BvbnNlID0+IFRyYW5zaXRpb25SZXNwb25zZUFkYXB0ZXIubm9ybWFsaXplKHJlc3BvbnNlKSlcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBVcGRhdGVzIHRoZSBzdGF0dXMgb2YgYSByZWNvcmQuXHJcbiAgICogVXNlcyBuZXcgY3J1ZFNlcnZpY2UgZW5kcG9pbnQ6IFBVVCBzdGF0dXMvdXBkYXRlP3JlY29yZElkPS4uLiZuZXh0U3RhdHVzSWQ9Li4uJkVudGl0eU5hbWU9Li4uXHJcbiAgICovXHJcbiAgdXBkYXRlU3RhdHVzKHBheWxvYWQ6IFVwZGF0ZVN0YXR1c1BheWxvYWQsIGhlYWRlcnM/OiBhbnkpOiBPYnNlcnZhYmxlPENvbW1vbkFwaVJlc3BvbnNlPiB7XHJcbiAgICBjb25zdCBodHRwUGFyYW1zID0gdGhpcy5idWlsZFN0YXR1c1BhcmFtcyhwYXlsb2FkKVxyXG4gICAgICAuc2V0KCduZXh0U3RhdHVzSWQnLCBwYXlsb2FkLm5leHRQb3NzaWJsZVN0YXR1c0lkKTtcclxuICAgIGhlYWRlcnMgPSBnZXRIZWFkZXJzKGhlYWRlcnMpO1xyXG5cclxuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2UucHV0VG9TZXJ2aWNlKFxyXG4gICAgICBBUElTZXJ2aWNlcy5jcnVkU2VydmljZSxcclxuICAgICAgYCR7QVBJLnN0YXR1c1VwZGF0ZX0/JHtodHRwUGFyYW1zLnRvU3RyaW5nKCl9YCxcclxuICAgICAgbnVsbCxcclxuICAgICAgaGVhZGVyc1xyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEJ1aWxkcyBjb21tb24gSHR0cFBhcmFtcyBmb3Igc3RhdHVzIGVuZHBvaW50cyAocmVjb3JkSWQgKyBFbnRpdHlOYW1lKS5cclxuICAgKi9cclxuICBwcml2YXRlIGJ1aWxkU3RhdHVzUGFyYW1zKHBheWxvYWQ6IE5leHRTdGF0dXNQYXlsb2FkKTogSHR0cFBhcmFtcyB7XHJcbiAgICBsZXQgaHR0cFBhcmFtcyA9IG5ldyBIdHRwUGFyYW1zKCkuc2V0KCdyZWNvcmRJZCcsIHBheWxvYWQucmVjb3JkSWQpO1xyXG5cclxuICAgIGNvbnN0IGVudGl0eU5hbWUgPSBwYXlsb2FkPy5hcHBPYmplY3ROYW1lPy5sZW5ndGhcclxuICAgICAgPyBwYXlsb2FkLmFwcE9iamVjdE5hbWVcclxuICAgICAgOiBwYXlsb2FkPy5hcHBPYmplY3RJZD8ubGVuZ3RoXHJcbiAgICAgICAgPyB0aGlzLnJlc29sdmVFbnRpdHlOYW1lKHBheWxvYWQuYXBwT2JqZWN0SWQpXHJcbiAgICAgICAgOiBudWxsO1xyXG5cclxuICAgIGlmIChlbnRpdHlOYW1lKSB7XHJcbiAgICAgIGh0dHBQYXJhbXMgPSBodHRwUGFyYW1zLnNldCgnRW50aXR5TmFtZScsIGVudGl0eU5hbWUpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBodHRwUGFyYW1zO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmVzb2x2ZXMgYXBwT2JqZWN0SWQgdG8gRW50aXR5TmFtZSAoU3lzdGVtREJUYWJsZU5hbWUpLlxyXG4gICAqIExvb2tzIHVwIHRoZSBhcHAgb2JqZWN0IHZpYSBNZXRhZGF0YUhlbHBlciBhbmQgcmV0dXJucyBTeXN0ZW1EQlRhYmxlTmFtZSBvciBPYmplY3ROYW1lLlxyXG4gICAqL1xyXG4gIHByaXZhdGUgcmVzb2x2ZUVudGl0eU5hbWUoYXBwT2JqZWN0SWQ6IHN0cmluZykge1xyXG4gICAgY29uc3QgYXBwT2JqZWN0ID0gdGhpcy5tZXRhZGF0YUhlbHBlci5nZXRBcHBPYmplY3RCeUlkT3JOYW1lKGFwcE9iamVjdElkKTtcclxuICAgIHJldHVybiBhcHBPYmplY3Q/LlN5c3RlbURCVGFibGVOYW1lIHx8IGFwcE9iamVjdD8uT2JqZWN0TmFtZTtcclxuICB9XHJcbn0iXX0=
|
|
@@ -7,7 +7,7 @@ import { RequestResponseHelper } from "../helpers/common/req-res.helpers";
|
|
|
7
7
|
import { DSQHelper } from "../helpers/common/dsq.helpers";
|
|
8
8
|
import { QueryType } from "../enums/query.enum";
|
|
9
9
|
import { ConjuctionClause, FilterValueType, RelationalOperator } from "../enums/dsq.enum";
|
|
10
|
-
import { API } from "../constants/api-constants";
|
|
10
|
+
import { API, APIServices } from "../constants/api-constants";
|
|
11
11
|
import { getHeaders } from "../utils/req-res.util";
|
|
12
12
|
import { ApiService } from "../../core/http-client/api.service";
|
|
13
13
|
import { TabGetService } from "./tab-get.service";
|
|
@@ -77,31 +77,41 @@ export class TabCrudService {
|
|
|
77
77
|
/**
|
|
78
78
|
* Generates a where clause based on the criteria provided.
|
|
79
79
|
*
|
|
80
|
-
*
|
|
80
|
+
* Supports two formats for criteria:
|
|
81
|
+
* - **Object** `{ Id: 'xxx' }` — auto-builds EqualTo filters for each key-value pair.
|
|
82
|
+
* - **Array** `[{ ConjuctionClause, FieldID, RelationalOperator, ValueType, Value, ... }]` — uses filters directly as provided.
|
|
83
|
+
*
|
|
84
|
+
* @param criteria The criteria object or filter array to generate the where clause from.
|
|
81
85
|
* @param crudTableName The CRUD table name to use in the where clause.
|
|
86
|
+
* @param provideEmptyWhereClause If true, allows empty criteria.
|
|
82
87
|
* @returns A new APIFilterCriteria object with the generated where clause.
|
|
83
88
|
*/
|
|
84
89
|
generateWhereClause(criteria, crudTableName, provideEmptyWhereClause = false) {
|
|
85
|
-
if (!provideEmptyWhereClause && (!criteria || typeof criteria !== 'object'
|
|
90
|
+
if (!provideEmptyWhereClause && (!criteria || (typeof criteria !== 'object' && !Array.isArray(criteria))))
|
|
86
91
|
throw new Error('Invalid criteria');
|
|
87
|
-
// Remove blank values from the criteria
|
|
88
|
-
removeBlankValue(criteria);
|
|
89
92
|
// Create a new APIFilterCriteria object
|
|
90
93
|
const whereClause = new APIFilterCriteria();
|
|
91
94
|
whereClause.filters = [];
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
95
|
+
if (Array.isArray(criteria)) {
|
|
96
|
+
// Rich filter array — use directly as provided
|
|
97
|
+
whereClause.filters = criteria;
|
|
98
|
+
}
|
|
99
|
+
else {
|
|
100
|
+
// Plain object — auto-build EqualTo filters for each key-value pair
|
|
101
|
+
removeBlankValue(criteria);
|
|
102
|
+
Object.keys(criteria)?.forEach((key, index) => {
|
|
103
|
+
const filter = {
|
|
104
|
+
conjunction: ConjuctionClause.AND, // conjuction clause is AND by default
|
|
105
|
+
fieldName: crudTableName + '.' + key, // field name
|
|
106
|
+
operator: RelationalOperator.EqualTo, // relational operator is EqualTo by default
|
|
107
|
+
valueType: FilterValueType.Literal, // value type is Literal by default
|
|
108
|
+
value: criteria[key], // set the value of the filter
|
|
109
|
+
sequence: index + 1, // set the sequence starting from 1
|
|
110
|
+
groupId: 0 // set the group ID to 0 by default
|
|
111
|
+
};
|
|
112
|
+
whereClause.filters.push(filter); // add the filter to the array of filters
|
|
113
|
+
});
|
|
114
|
+
}
|
|
105
115
|
// Set the filter logic to '1'
|
|
106
116
|
whereClause.filterLogic = '1';
|
|
107
117
|
// Return the generated where clause
|
|
@@ -201,31 +211,28 @@ export class TabCrudService {
|
|
|
201
211
|
* @returns An observable of the response from the API.
|
|
202
212
|
*/
|
|
203
213
|
executeStoredProcedure(payload, headers) {
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
// Convert the parameters object to the required format
|
|
208
|
-
const params = [];
|
|
209
|
-
if (typeof payload?.Parameters === 'object') {
|
|
210
|
-
// Iterate over the parameters and create the required format
|
|
214
|
+
headers = getHeaders(headers);
|
|
215
|
+
const parameters = [];
|
|
216
|
+
if (payload?.Parameters && typeof payload.Parameters === 'object') {
|
|
211
217
|
Object.keys(payload.Parameters).forEach((key) => {
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
218
|
+
parameters.push({
|
|
219
|
+
name: key,
|
|
220
|
+
value: payload.Parameters[key]
|
|
215
221
|
});
|
|
216
222
|
});
|
|
217
223
|
}
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
}
|
|
224
|
+
const requestBody = {
|
|
225
|
+
objectName: payload.ObjectName,
|
|
226
|
+
objectType: payload.ObjectType,
|
|
227
|
+
parameters
|
|
228
|
+
};
|
|
229
|
+
return this._apiService.postToService(APIServices.crudService, API.databaseExecute, requestBody, headers);
|
|
223
230
|
}
|
|
224
|
-
static { this.ɵfac =
|
|
225
|
-
static { this.ɵprov =
|
|
231
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.21", ngImport: i0, type: TabCrudService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
232
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.21", ngImport: i0, type: TabCrudService, providedIn: 'root' }); }
|
|
226
233
|
}
|
|
227
|
-
(
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiLWNydWQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvZGF0YS1hY2Nlc3Mvc3JjL2xpYi90YWItY29yZS11dGlsaXR5L2FwcC9jcnVkL3RhYi1jcnVkLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsdURBQXVEO0FBQ3ZELE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBR25ELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUNyRSxPQUFPLEVBQXFCLG1CQUFtQixFQUFFLG1CQUFtQixFQUFFLGdCQUFnQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDbkgsT0FBTyxFQUFnQyxpQkFBaUIsRUFBZ0IsTUFBTSwyQkFBMkIsQ0FBQztBQUMxRyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUMxRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDMUQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxlQUFlLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUcxRixPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDakQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ25ELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUNoRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDbEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDeEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDeEQsT0FBTyxFQUFFLGdCQUFnQixFQUFF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LE9BQU8sQ0FBQyxDQUFDO0lBQ2hCLENBQUM7K0VBM09RLGNBQWM7dUVBQWQsY0FBYyxXQUFkLGNBQWMsbUJBREQsTUFBTTs7aUZBQ25CLGNBQWM7Y0FEMUIsVUFBVTtlQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cclxuaW1wb3J0IHsgaW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgQ29tbW9uQXBpUmVzcG9uc2UsIENydWRCYXNlUGF5bG9hZCwgRGVsZXRlUGF5bG9hZCwgZXhlY3V0ZVN0b3JlZFByb2NlZHVyZVBheWxvYWQsIEdldFBheWxvYWQsIEluc2VydFBheWxvYWQsIFVwZGF0ZVBheWxvYWQgfSBmcm9tIFwiLi4vaW50ZXJmYWNlcy9jb21tb24uaW50ZXJmYWNlXCI7XHJcbmltcG9ydCB7IEFwcE9iamVjdE1vZGVsIH0gZnJvbSBcIi4uL21vZGVscy9hcHAtb2JqZWN0Lm1vZGVsXCI7XHJcbmltcG9ydCB7IE1ldGFkYXRhSGVscGVyIH0gZnJvbSBcIi4uL2hlbHBlcnMvY29tbW9uL21ldGEtZGF0YS5oZWxwZXJzXCI7XHJcbmltcG9ydCB7IGNyZWF0ZUR5bmFtaWNEYXRhLCBnZXRCdWxrSW5zZXJ0RmllbGRzLCBnZXRCdWxrSW5zZXJ0VmFsdWVzLCByZW1vdmVCbGFua1ZhbHVlIH0gZnJvbSBcIi4uL3V0aWxzL2pzb24udXRpbFwiO1xyXG5pbXBvcnQgeyBBUElCdWxrSW5zZXJ0RmllbGRzVmFsdWVTZXRzLCBBUElGaWx0ZXJDcml0ZXJpYSwgQVBJVmFsdWVTZXRzIH0gZnJvbSBcIi4uL21vZGVscy9hcGktcXVlcnkuY2xhc3NcIjtcclxuaW1wb3J0IHsgUmVxdWVzdFJlc3BvbnNlSGVscGVyIH0gZnJvbSBcIi4uL2hlbHBlcnMvY29tbW9uL3JlcS1yZXMuaGVscGVyc1wiO1xyXG5pbXBvcnQgeyBEU1FIZWxwZXIgfSBmcm9tIFwiLi4vaGVscGVycy9jb21tb24vZHNxLmhlbHBlcnNcIjtcclxuaW1wb3J0IHsgUXVlcnlUeXBlIH0gZnJvbSBcIi4uL2VudW1zL3F1ZXJ5LmVudW1cIjtcclxuaW1wb3J0IHsgQ29uanVjdGlvbkNsYXVzZSwgRmlsdGVyVmFsdWVUeXBlLCBSZWxhdGlvbmFsT3BlcmF0b3IgfSBmcm9tIFwiLi4vZW51bXMvZHNxLmVudW1cIjtcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7IERhdGFTb3VyY2VRdWVyeU1vZGVsIH0gZnJvbSBcIi4uL21vZGVscy9kYXRhLXNvdXJjZS1xdWVyeS5tb2RlbFwiO1xyXG5pbXBvcnQgeyBBUEkgfSBmcm9tIFwiLi4vY29uc3RhbnRzL2FwaS1jb25zdGFudHNcIjtcclxuaW1wb3J0IHsgZ2V0SGVhZGVycyB9IGZyb20gXCIuLi91dGlscy9yZXEtcmVzLnV0aWxcIjtcclxuaW1wb3J0IHsgQXBpU2VydmljZSB9IGZyb20gXCIuLi8uLi9jb3JlL2h0dHAtY2xpZW50L2FwaS5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IFRhYkdldFNlcnZpY2UgfSBmcm9tIFwiLi90YWItZ2V0LnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgVGFiSW5zZXJ0U2VydmljZSB9IGZyb20gXCIuL3RhYi1pbnNlcnQuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBUYWJVcGRhdGVTZXJ2aWNlIH0gZnJvbSBcIi4vdGFiLXVwZGF0ZS5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IFRhYkRlbGV0ZVNlcnZpY2UgfSBmcm9tIFwiLi90YWItZGVsZXRlLnNlcnZpY2VcIjtcclxuXHJcbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXHJcbmV4cG9ydCBjbGFzcyBUYWJDcnVkU2VydmljZSB7XHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9tZXRhZGF0YUhlbHBlcjogTWV0YWRhdGFIZWxwZXIgPSBpbmplY3QoTWV0YWRhdGFIZWxwZXIpO1xyXG4gICAgcHJpdmF0ZSByZWFkb25seSBfcmVxdWVzdFJlc3BvbnNlSGVscGVyOiBSZXF1ZXN0UmVzcG9uc2VIZWxwZXIgPSBpbmplY3QoUmVxdWVzdFJlc3BvbnNlSGVscGVyKTtcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgX2RzcUhlbHBlcjogRFNRSGVscGVyID0gaW5qZWN0KERTUUhlbHBlcik7XHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9hcGlTZXJ2aWNlID0gaW5qZWN0KEFwaVNlcnZpY2UpO1xyXG4gICAgcHJpdmF0ZSByZWFkb25seSBfdGFiR2V0U2VydmljZSA9IGluamVjdChUYWJHZXRTZXJ2aWNlKTtcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgX3RhYkluc2VydFNlcnZpY2UgPSBpbmplY3QoVGFiSW5zZXJ0U2VydmljZSk7XHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IF90YWJVcGRhdGVTZXJ2aWNlID0gaW5qZWN0KFRhYlVwZGF0ZVNlcnZpY2UpO1xyXG4gICAgcHJpdmF0ZSByZWFkb25seSBfdGFiRGVsZXRlU2VydmljZSA9IGluamVjdChUYWJEZWxldGVTZXJ2aWNlKTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFJldHVybnMgdGhlIEFwcE9iamVjdE1vZGVsIGZyb20gdGhlIGdpdmVuIHBheWxvYWQuXHJcbiAgICAgKiBAcGFyYW0gcGF5bG9hZCBUaGUgcGF5bG9hZCB3aXRoIGVpdGhlciBkYXRhU291cmNlUXVlcnlJZE9yTmFtZSBvciBhcHBPYmplY3RJZE9yTmFtZS5cclxuICAgICAqIEByZXR1cm5zIFRoZSBBcHBPYmplY3RNb2RlbC5cclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBnZXRBcHBPYmplY3RGcm9tUGF5bG9hZChwYXlsb2FkOiBDcnVkQmFzZVBheWxvYWQpOiBBcHBPYmplY3RNb2RlbCB7XHJcbiAgICAgICAgbGV0IGFwcE9iamVjdDtcclxuXHJcbiAgICAgICAgaWYgKHBheWxvYWQ/LmRhdGFTb3VyY2VRdWVyeUlkT3JOYW1lKSB7XHJcbiAgICAgICAgICAgIC8vIElmIGRhdGFTb3VyY2VRdWVyeUlkT3JOYW1lIGlzIGdpdmVuLCBnZXQgdGhlIEFwcE9iamVjdE1vZGVsIGZyb20gdGhlIGRhdGEgc291cmNlIHF1ZXJ5XHJcbiAgICAgICAgICAgIGFwcE9iamVjdCA9IHRoaXMuX21ldGFkYXRhSGVscGVyLmdldERhdGFTb3VyY2VRdWVyeUJ5SWRPck5hbWUocGF5bG9hZC5kYXRhU291cmNlUXVlcnlJZE9yTmFtZSk/LnBhcmVudEFwcE9iamVjdDtcclxuXHJcbiAgICAgICAgfSBlbHNlIGlmIChwYXlsb2FkPy5hcHBPYmplY3RJZE9yTmFtZSkge1xyXG4gICAgICAgICAgICAvLyBJZiBhcHBPYmplY3RJZE9yTmFtZSBpcyBnaXZlbiwgZ2V0IHRoZSBBcHBPYmplY3RNb2RlbCBkaXJlY3RseVxyXG4gICAgICAgICAgICBhcHBPYmplY3QgPSB0aGlzLl9tZXRhZGF0YUhlbHBlci5nZXRBcHBPYmplY3RCeUlkT3JOYW1lKHBheWxvYWQuYXBwT2JqZWN0SWRPck5hbWUpO1xyXG5cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICghYXBwT2JqZWN0Py5JRCkge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0FwcE9iamVjdCBub3QgZm91bmQnKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBhcHBPYmplY3Q7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBGaWx0ZXJzIG91dCBpbnZhbGlkIGZpZWxkcyBmcm9tIHRoZSBwcm92aWRlZCBkYXRhIGJhc2VkIG9uIHRoZSBBcHBPYmplY3RNb2RlbC5cclxuICAgICAqIE9wdGlvbmFsbHkgcmV0YWlucyBwcmltYXJ5IGtleSBmaWVsZHMuXHJcbiAgICAgKiBcclxuICAgICAqIEBwYXJhbSBkYXRhIFRoZSBkYXRhIG9iamVjdCB0byBmaWx0ZXIuXHJcbiAgICAgKiBAcGFyYW0gYXBwT2JqZWN0IFRoZSBBcHBPYmplY3RNb2RlbCB1c2VkIHRvIHZhbGlkYXRlIHRoZSBmaWVsZHMuXHJcbiAgICAgKiBAcGFyYW0ga2VlcFByaW1hcnlLZXkgT3B0aW9uYWwgZmxhZyB0byByZXRhaW4gcHJpbWFyeSBrZXkgZmllbGRzLiBEZWZhdWx0cyB0byBmYWxzZS5cclxuICAgICAqIEByZXR1cm5zIEEgbmV3IG9iamVjdCB3aXRoIG9ubHkgdmFsaWQgZmllbGRzLlxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIGZpbHRlclZhbGlkQXBwT2JqZWN0RmllbGRzKGRhdGE6IGFueSwgYXBwT2JqZWN0OiBBcHBPYmplY3RNb2RlbCwga2VlcFByaW1hcnlLZXkgPSBmYWxzZSwgcmVtb3ZlRW1wdHlWYWx1ZXMgPSB0cnVlKSB7XHJcbiAgICAgICAgaWYgKCFkYXRhIHx8IHR5cGVvZiBkYXRhICE9PSAnb2JqZWN0JykgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGRhdGEnKTtcclxuXHJcbiAgICAgICAgY29uc3QgZmlsdGVyZWREYXRhID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShkYXRhKSk7XHJcblxyXG4gICAgICAgIC8vIFJlbW92ZSBmaWVsZHMgd2l0aCBibGFuayB2YWx1ZXMgKG9ubHkgZm9yIGluc2VydCwgbm90IGZvciB1cGRhdGUpXHJcbiAgICAgICAgaWYgKHJlbW92ZUVtcHR5VmFsdWVzKSB7XHJcbiAgICAgICAgICAgIHJlbW92ZUJsYW5rVmFsdWUoZmlsdGVyZWREYXRhKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIEl0ZXJhdGUgb3ZlciBlYWNoIGtleSBpbiB0aGUgZmlsdGVyZWQgZGF0YVxyXG4gICAgICAgIE9iamVjdC5rZXlzKGZpbHRlcmVkRGF0YSk/LmZvckVhY2goKGtleSkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBhcHBGaWVsZCA9IGFwcE9iamVjdC5maWVsZChrZXkpO1xyXG4gICAgICAgICAgICBjb25zdCBjaGlsZEZpZWxkID0gYXBwT2JqZWN0LkNoaWxkUmVsYXRpb25TaGlwcz8uc29tZSgoeCkgPT4geD8uY2hpbGREZXRhaWxzPy5Mb29rdXBPYmplY3QgPT09IGtleSk7XHJcblxyXG4gICAgICAgICAgICAvLyBEZWxldGUgdGhlIGZpZWxkIGlmIGl0IGlzIG5vdCB2YWxpZCBvciBpZiBwcmltYXJ5IGtleXMgc2hvdWxkIG5vdCBiZSBrZXB0XHJcbiAgICAgICAgICAgIGlmICghKGFwcEZpZWxkIHx8IGNoaWxkRmllbGQpIHx8ICgha2VlcFByaW1hcnlLZXkgJiYgYXBwRmllbGQ/LklzUHJpbWFyeUtleSkpIHtcclxuICAgICAgICAgICAgICAgIGRlbGV0ZSBmaWx0ZXJlZERhdGFba2V5XTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICByZXR1cm4gZmlsdGVyZWREYXRhO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogR2VuZXJhdGVzIGEgd2hlcmUgY2xhdXNlIGJhc2VkIG9uIHRoZSBjcml0ZXJpYSBwcm92aWRlZC5cclxuICAgICAqIFxyXG4gICAgICogQHBhcmFtIGNyaXRlcmlhIFRoZSBjcml0ZXJpYSBvYmplY3QgdG8gZ2VuZXJhdGUgdGhlIHdoZXJlIGNsYXVzZSBmcm9tLlxyXG4gICAgICogQHBhcmFtIGNydWRUYWJsZU5hbWUgVGhlIENSVUQgdGFibGUgbmFtZSB0byB1c2UgaW4gdGhlIHdoZXJlIGNsYXVzZS5cclxuICAgICAqIEByZXR1cm5zIEEgbmV3IEFQSUZpbHRlckNyaXRlcmlhIG9iamVjdCB3aXRoIHRoZSBnZW5lcmF0ZWQgd2hlcmUgY2xhdXNlLlxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIGdlbmVyYXRlV2hlcmVDbGF1c2UoY3JpdGVyaWE6IGFueSwgY3J1ZFRhYmxlTmFtZTogc3RyaW5nLCBwcm92aWRlRW1wdHlXaGVyZUNsYXVzZSA9IGZhbHNlKTogQVBJRmlsdGVyQ3JpdGVyaWEge1xyXG4gICAgICAgIGlmICghcHJvdmlkZUVtcHR5V2hlcmVDbGF1c2UgJiYgKCFjcml0ZXJpYSB8fCB0eXBlb2YgY3JpdGVyaWEgIT09ICdvYmplY3QnIHx8ICFPYmplY3Qua2V5cyhjcml0ZXJpYSkpKSB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgY3JpdGVyaWEnKTtcclxuXHJcbiAgICAgICAgLy8gUmVtb3ZlIGJsYW5rIHZhbHVlcyBmcm9tIHRoZSBjcml0ZXJpYVxyXG4gICAgICAgIHJlbW92ZUJsYW5rVmFsdWUoY3JpdGVyaWEpO1xyXG5cclxuICAgICAgICAvLyBDcmVhdGUgYSBuZXcgQVBJRmlsdGVyQ3JpdGVyaWEgb2JqZWN0XHJcbiAgICAgICAgY29uc3Qgd2hlcmVDbGF1c2UgPSBuZXcgQVBJRmlsdGVyQ3JpdGVyaWEoKTtcclxuICAgICAgICB3aGVyZUNsYXVzZS5maWx0ZXJzID0gW107XHJcblxyXG4gICAgICAgIC8vIEl0ZXJhdGUgb3ZlciBlYWNoIGtleSBpbiB0aGUgY3JpdGVyaWEgYW5kIGFkZCBpdCB0byB0aGUgd2hlcmUgY2xhdXNlXHJcbiAgICAgICAgT2JqZWN0LmtleXMoY3JpdGVyaWEpPy5mb3JFYWNoKChrZXk6IGFueSwgaW5kZXg6IG51bWJlcikgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBmaWx0ZXIgPSB7XHJcbiAgICAgICAgICAgICAgICBjb25qdW5jdGlvbjogQ29uanVjdGlvbkNsYXVzZS5BTkQsIC8vIGNvbmp1Y3Rpb24gY2xhdXNlIGlzIEFORCBieSBkZWZhdWx0XHJcbiAgICAgICAgICAgICAgICBmaWVsZE5hbWU6IGNydWRUYWJsZU5hbWUgKyAnLicgKyBrZXksIC8vIGZpZWxkIG5hbWVcclxuICAgICAgICAgICAgICAgIG9wZXJhdG9yOiBSZWxhdGlvbmFsT3BlcmF0b3IuRXF1YWxUbywgLy8gcmVsYXRpb25hbCBvcGVyYXRvciBpcyBFcXVhbFRvIGJ5IGRlZmF1bHRcclxuICAgICAgICAgICAgICAgIHZhbHVlVHlwZTogRmlsdGVyVmFsdWVUeXBlLkxpdGVyYWwsIC8vIHZhbHVlIHR5cGUgaXMgTGl0ZXJhbCBieSBkZWZhdWx0XHJcbiAgICAgICAgICAgICAgICB2YWx1ZTogY3JpdGVyaWFba2V5XSwgLy8gc2V0IHRoZSB2YWx1ZSBvZiB0aGUgZmlsdGVyXHJcbiAgICAgICAgICAgICAgICBzZXF1ZW5jZTogaW5kZXggKyAxLCAvLyBzZXQgdGhlIHNlcXVlbmNlIHN0YXJ0aW5nIGZyb20gMVxyXG4gICAgICAgICAgICAgICAgZ3JvdXBJZDogMCAvLyBzZXQgdGhlIGdyb3VwIElEIHRvIDAgYnkgZGVmYXVsdFxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICB3aGVyZUNsYXVzZS5maWx0ZXJzLnB1c2goZmlsdGVyKTsgLy8gYWRkIHRoZSBmaWx0ZXIgdG8gdGhlIGFycmF5IG9mIGZpbHRlcnNcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgLy8gU2V0IHRoZSBmaWx0ZXIgbG9naWMgdG8gJzEnXHJcbiAgICAgICAgd2hlcmVDbGF1c2UuZmlsdGVyTG9naWMgPSAnMSc7XHJcblxyXG4gICAgICAgIC8vIFJldHVybiB0aGUgZ2VuZXJhdGVkIHdoZXJlIGNsYXVzZVxyXG4gICAgICAgIHJldHVybiB3aGVyZUNsYXVzZTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEV4ZWN1dGVzIGEgR0VUIHJlcXVlc3QgdG8gcmV0cmlldmUgZGF0YSBmcm9tIHRoZSBzcGVjaWZpZWQgZGF0YSBzb3VyY2UgcXVlcnkuXHJcbiAgICAgKiBAcGFyYW0gcGF5bG9hZCBUaGUgcGF5bG9hZCBjb250YWluaW5nIHRoZSBjcml0ZXJpYSBmb3IgdGhlIHF1ZXJ5IGFuZCB0aGUgQXBwT2JqZWN0TW9kZWwgSUQuXHJcbiAgICAgKiBAcGFyYW0gaGVhZGVycyBPcHRpb25hbCBoZWFkZXJzIGZvciB0aGUgcmVxdWVzdC5cclxuICAgICAqIEByZXR1cm5zIEFuIG9ic2VydmFibGUgb2YgdGhlIHJlc3BvbnNlIGZyb20gdGhlIEFQSS5cclxuICAgICAqL1xyXG4gICAgZ2V0KHBheWxvYWQ6IEdldFBheWxvYWQsIGhlYWRlcnM/OiBhbnkpOiBPYnNlcnZhYmxlPENvbW1vbkFwaVJlc3BvbnNlPiB7XHJcbiAgICAgICAgLy8gR2V0IHRoZSBBcHBPYmplY3RNb2RlbCBmcm9tIHRoZSBwYXlsb2FkXHJcbiAgICAgICAgY29uc3QgYXBwT2JqZWN0OiBBcHBPYmplY3RNb2RlbCA9IHRoaXMuZ2V0QXBwT2JqZWN0RnJvbVBheWxvYWQocGF5bG9hZCk7XHJcblxyXG4gICAgICAgIC8vIEdldCB0aGUgRGF0YVNvdXJjZVF1ZXJ5TW9kZWwgZnJvbSB0aGUgQXBwT2JqZWN0TW9kZWxcclxuICAgICAgICBjb25zdCBkc3E6IERhdGFTb3VyY2VRdWVyeU1vZGVsIHwgdW5kZWZpbmVkID0gYXBwT2JqZWN0LmRhdGFTb3VyY2VRdWVyeShwYXlsb2FkLmRhdGFTb3VyY2VRdWVyeUlkT3JOYW1lKTtcclxuXHJcbiAgICAgICAgLy8gVmFsaWRhdGUgdGhlIEFwcE9iamVjdE1vZGVsIGFuZCBEYXRhU291cmNlUXVlcnlNb2RlbFxyXG4gICAgICAgIGlmICghYXBwT2JqZWN0IHx8ICFkc3EpIHRocm93IG5ldyBFcnJvcignQXBwT2JqZWN0IG9yIERhdGFTb3VyY2VRdWVyeSBub3QgZm91bmQnKTtcclxuXHJcbiAgICAgICAgLy8gVXNlIFRhYkdldFNlcnZpY2UuZXhlY3V0ZVJBV0RTUVdpdGhOYW1lIHRvIGF2b2lkIGNvZGUgZHVwbGljYXRpb25cclxuICAgICAgICByZXR1cm4gdGhpcy5fdGFiR2V0U2VydmljZS5leGVjdXRlUkFXRFNRV2l0aE5hbWUoe1xyXG4gICAgICAgICAgICBBcHBPYmplY3ROYW1lOiBhcHBPYmplY3QuT2JqZWN0TmFtZSxcclxuICAgICAgICAgICAgRFNRTmFtZTogZHNxLlF1ZXJ5TmFtZSxcclxuICAgICAgICAgICAgLi4ucGF5bG9hZC5jcml0ZXJpYVxyXG4gICAgICAgIH0sIGhlYWRlcnMpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogSW5zZXJ0cyBkYXRhIGludG8gdGhlIHNwZWNpZmllZCB0YWJsZS5cclxuICAgICAqIE5FVzogRGVsZWdhdGVzIHRvIFRhYkluc2VydFNlcnZpY2Ugd2hpY2ggdXNlcyAvcmVjb3Jkcy9pbnNlcnQgZW5kcG9pbnQgd2l0aCBTWU5DL0FTWU5DIHN1cHBvcnRcclxuICAgICAqIEBwYXJhbSBwYXlsb2FkIFRoZSBwYXlsb2FkIGNvbnRhaW5pbmcgdGhlIGRhdGEgdG8gaW5zZXJ0IGFuZCB0aGUgQXBwT2JqZWN0TW9kZWwgSUQuXHJcbiAgICAgKiBAcGFyYW0gaGVhZGVycyBPcHRpb25hbCBoZWFkZXJzIGZvciB0aGUgcmVxdWVzdC5cclxuICAgICAqIEByZXR1cm5zIEFuIG9ic2VydmFibGUgb2YgdGhlIHJlc3BvbnNlIGZyb20gdGhlIEFQSSAocmV0dXJucyBpbnNlcnRlZElkIG9ubHkpLlxyXG4gICAgICovXHJcbiAgICBpbnNlcnQocGF5bG9hZDogSW5zZXJ0UGF5bG9hZCwgaGVhZGVycz86IGFueSk6IE9ic2VydmFibGU8Q29tbW9uQXBpUmVzcG9uc2U+IHtcclxuICAgICAgICBjb25zdCBhcHBPYmplY3Q6IEFwcE9iamVjdE1vZGVsID0gdGhpcy5nZXRBcHBPYmplY3RGcm9tUGF5bG9hZChwYXlsb2FkKTtcclxuXHJcbiAgICAgICAgLy8gRGVsZWdhdGUgdG8gVGFiSW5zZXJ0U2VydmljZSAtIGl0IGhhbmRsZXMgbmV3IEFQSSB3aXRoIFNZTkMvQVNZTkMgYXV0b21hdGljYWxseVxyXG4gICAgICAgIHJldHVybiB0aGlzLl90YWJJbnNlcnRTZXJ2aWNlLmluc2VydEJ5T2JqZWN0SWQoYXBwT2JqZWN0LklELCB7IGRhdGE6IHBheWxvYWQuZGF0YSB9LCBoZWFkZXJzKSBhcyBPYnNlcnZhYmxlPENvbW1vbkFwaVJlc3BvbnNlPjtcclxuICAgIH1cclxuICAgIFxyXG4gICAgYnVsa0luc2VydChwYXlsb2FkOiBJbnNlcnRQYXlsb2FkLCBoZWFkZXJzPzogYW55KTogT2JzZXJ2YWJsZTxDb21tb25BcGlSZXNwb25zZT4ge1xyXG4gICAgICAgIGNvbnN0IGFwcE9iamVjdDogQXBwT2JqZWN0TW9kZWwgPSB0aGlzLmdldEFwcE9iamVjdEZyb21QYXlsb2FkKHBheWxvYWQpO1xyXG4gICAgICAgIC8vIENyZWF0ZSBhIHdoZXJlIGNsYXVzZSBmb3IgdGhlIGluc2VydCBvcGVyYXRpb25cclxuICAgICAgICBjb25zdCB3aGVyZUNsYXVzZTogQVBJRmlsdGVyQ3JpdGVyaWEgPSB0aGlzLmdlbmVyYXRlV2hlcmVDbGF1c2Uoe30sIGFwcE9iamVjdC5TeXN0ZW1EQlRhYmxlTmFtZSwgdHJ1ZSk7XHJcblxyXG4gICAgICAgIC8vIFRyYW5zZm9ybSB0aGUgZGF0YSBpbnRvIHRoZSBmb3JtYXQgcmVxdWlyZWQgYnkgdGhlIEFQSVxyXG4gICAgICAgIGNvbnN0IHRyYW5zZm9ybWVkRmllbGRzOiBzdHJpbmdbXSA9IGdldEJ1bGtJbnNlcnRGaWVsZHMocGF5bG9hZC5kYXRhKTtcclxuICAgICAgICBjb25zdCB0cmFuc2Zvcm1lZFZhbHVlczogQVBJQnVsa0luc2VydEZpZWxkc1ZhbHVlU2V0c1tdID0gZ2V0QnVsa0luc2VydFZhbHVlcyhwYXlsb2FkLmRhdGEpO1xyXG4gICAgICAgIC8vIEdlbmVyYXRlIHRoZSBwYXlsb2FkIGZvciB0aGUgQVBJIHJlcXVlc3RcclxuICAgICAgICBjb25zdCBhcGlQYXlsb2FkID0gdGhpcy5fcmVxdWVzdFJlc3BvbnNlSGVscGVyLmJ1bGtJbnNlcnRQYXlsb2FkKGFwcE9iamVjdC5TeXN0ZW1EQlRhYmxlTmFtZSwgd2hlcmVDbGF1c2UsIHRyYW5zZm9ybWVkVmFsdWVzLCB0cmFuc2Zvcm1lZEZpZWxkcyk7XHJcbiAgICAgICAgLy8gRXhlY3V0ZSB0aGUgcXVlcnlcclxuICAgICAgICByZXR1cm4gdGhpcy5fZHNxSGVscGVyLmV4ZWN1dGVRdWVyeShhcGlQYXlsb2FkLCBRdWVyeVR5cGUuQnVsa0luc2VydCwgaGVhZGVycykgYXMgT2JzZXJ2YWJsZTxDb21tb25BcGlSZXNwb25zZT47XHJcbiAgICB9XHJcbiAgICAvKipcclxuICAgICAqIFVwZGF0ZXMgZGF0YSBpbiB0aGUgc3BlY2lmaWVkIHRhYmxlLlxyXG4gICAgICogTkVXOiBEZWxlZ2F0ZXMgdG8gVGFiVXBkYXRlU2VydmljZSB3aGljaCB1c2VzIC9yZWNvcmRzL3VwZGF0ZSBlbmRwb2ludCB3aXRoIFNZTkMvQVNZTkMgc3VwcG9ydFxyXG4gICAgICogQHBhcmFtIHBheWxvYWQgVGhlIHBheWxvYWQgY29udGFpbmluZyB0aGUgZGF0YSB0byB1cGRhdGUsIHRoZSBjcml0ZXJpYSBmb3IgdGhlIHVwZGF0ZSwgYW5kIHRoZSBBcHBPYmplY3RNb2RlbCBJRC5cclxuICAgICAqIEBwYXJhbSBoZWFkZXJzIE9wdGlvbmFsIGhlYWRlcnMgZm9yIHRoZSByZXF1ZXN0LlxyXG4gICAgICogQHJldHVybnMgQW4gb2JzZXJ2YWJsZSBvZiB0aGUgcmVzcG9uc2UgZnJvbSB0aGUgQVBJLlxyXG4gICAgICovXHJcbiAgICB1cGRhdGUocGF5bG9hZDogVXBkYXRlUGF5bG9hZCwgaGVhZGVycz86IGFueSk6IE9ic2VydmFibGU8Q29tbW9uQXBpUmVzcG9uc2U+IHtcclxuICAgICAgICBjb25zdCBhcHBPYmplY3Q6IEFwcE9iamVjdE1vZGVsID0gdGhpcy5nZXRBcHBPYmplY3RGcm9tUGF5bG9hZChwYXlsb2FkKTtcclxuXHJcbiAgICAgICAgLy8gRGVsZWdhdGUgdG8gVGFiVXBkYXRlU2VydmljZSAtIGl0IGhhbmRsZXMgbmV3IEFQSSB3aXRoIFNZTkMvQVNZTkMgYXV0b21hdGljYWxseVxyXG4gICAgICAgIHJldHVybiB0aGlzLl90YWJVcGRhdGVTZXJ2aWNlLnVwZGF0ZUJ5T2JqZWN0SWQoYXBwT2JqZWN0LklELCB7IGRhdGE6IHBheWxvYWQuZGF0YSB9LCBoZWFkZXJzKSBhcyBPYnNlcnZhYmxlPENvbW1vbkFwaVJlc3BvbnNlPjtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIERlbGV0ZXMgZGF0YSBmcm9tIHRoZSBzcGVjaWZpZWQgdGFibGUuXHJcbiAgICAgKiBORVc6IERlbGVnYXRlcyB0byBUYWJEZWxldGVTZXJ2aWNlIHdoaWNoIHVzZXMgL3JlY29yZHMvZGVsZXRlIGVuZHBvaW50IHdpdGggU1lOQy9BU1lOQyBzdXBwb3J0XHJcbiAgICAgKiBAcGFyYW0gcGF5bG9hZCBUaGUgcGF5bG9hZCBjb250YWluaW5nIHRoZSBjcml0ZXJpYSBmb3IgdGhlIGRlbGV0ZSBhbmQgdGhlIEFwcE9iamVjdE1vZGVsIElELlxyXG4gICAgICogQHBhcmFtIGhlYWRlcnMgT3B0aW9uYWwgaGVhZGVycyBmb3IgdGhlIHJlcXVlc3QuXHJcbiAgICAgKiBAcmV0dXJucyBBbiBvYnNlcnZhYmxlIG9mIHRoZSByZXNwb25zZSBmcm9tIHRoZSBBUEkuXHJcbiAgICAgKi9cclxuICAgIGRlbGV0ZShwYXlsb2FkOiBEZWxldGVQYXlsb2FkLCBoZWFkZXJzPzogYW55KTogT2JzZXJ2YWJsZTxDb21tb25BcGlSZXNwb25zZT4ge1xyXG4gICAgICAgIGNvbnN0IGFwcE9iamVjdDogQXBwT2JqZWN0TW9kZWwgPSB0aGlzLmdldEFwcE9iamVjdEZyb21QYXlsb2FkKHBheWxvYWQpO1xyXG5cclxuICAgICAgICAvLyBHZW5lcmF0ZSBhIHdoZXJlIGNsYXVzZSBiYXNlZCBvbiB0aGUgY3JpdGVyaWEgcHJvdmlkZWRcclxuICAgICAgICBjb25zdCB3aGVyZUNsYXVzZTogQVBJRmlsdGVyQ3JpdGVyaWEgPSB0aGlzLmdlbmVyYXRlV2hlcmVDbGF1c2UocGF5bG9hZC5jcml0ZXJpYSwgYXBwT2JqZWN0LlN5c3RlbURCVGFibGVOYW1lKTtcclxuICAgICAgICBpZiAoIXdoZXJlQ2xhdXNlPy5maWx0ZXJzPy5sZW5ndGgpIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBjcml0ZXJpYScpO1xyXG5cclxuICAgICAgICAvLyBHZW5lcmF0ZSB0aGUgcGF5bG9hZCBmb3IgdGhlIEFQSSByZXF1ZXN0IChORVcgZm9ybWF0OiB7IGVudGl0eU5hbWUsIHdoZXJlQ2xhdXNlIH0pXHJcbiAgICAgICAgY29uc3QgYXBpUGF5bG9hZCA9IHRoaXMuX3JlcXVlc3RSZXNwb25zZUhlbHBlci5kZWxldGVQYXlsb2FkKGFwcE9iamVjdC5TeXN0ZW1EQlRhYmxlTmFtZSwgd2hlcmVDbGF1c2UpO1xyXG5cclxuICAgICAgICAvLyBEZWxlZ2F0ZSB0byBUYWJEZWxldGVTZXJ2aWNlIC0gaXQgaGFuZGxlcyBuZXcgQVBJIHdpdGggU1lOQy9BU1lOQyBhdXRvbWF0aWNhbGx5XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3RhYkRlbGV0ZVNlcnZpY2UuZGVsZXRlKGFwaVBheWxvYWQsIGhlYWRlcnMpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIC8qKlxyXG4gICAgLy8gICogRXhlY3V0ZXMgYSBzdG9yZWQgcHJvY2VkdXJlIHVzaW5nIHJhdyBTUUwuXHJcbiAgICAvLyAgKiBAcGFyYW0gc3AgVGhlIHN0b3JlZCBwcm9jZWR1cmUgcXVlcnkgc3RyaW5nLlxyXG4gICAgLy8gICogQHBhcmFtIGhlYWRlcnMgT3B0aW9uYWwgaGVhZGVycyBmb3IgdGhlIHJlcXVlc3QuXHJcbiAgICAvLyAgKiBAcmV0dXJucyBUaGUgcmVzdWx0IG9mIHRoZSBBUEkgUE9TVCByZXF1ZXN0LlxyXG4gICAgLy8gICovXHJcbiAgICAvLyBleGVjdXRlU3Aoc3A6IHN0cmluZywgaGVhZGVycz86IGFueSk6IE9ic2VydmFibGU8Q29tbW9uQXBpUmVzcG9uc2U+IHtcclxuICAgIC8vICAgICAvLyBSZXRyaWV2ZSBoZWFkZXJzIGZvciB0aGUgcmVxdWVzdFxyXG4gICAgLy8gICAgIGNvbnN0IGhlYWRlciA9IGdldEhlYWRlcnMoaGVhZGVycyk7XHJcblxyXG4gICAgLy8gICAgIC8vIEV4ZWN1dGUgdGhlIHN0b3JlZCBwcm9jZWR1cmUgdXNpbmcgYSBQT1NUIHJlcXVlc3RcclxuICAgIC8vICAgICByZXR1cm4gdGhpcy5fYXBpU2VydmljZS5wb3N0KGAke0FQSS5yYXdTUUx9P3F1ZXJ5PSR7c3B9YCwge30sIGhlYWRlcikgYXMgT2JzZXJ2YWJsZTxDb21tb25BcGlSZXNwb25zZT47XHJcbiAgICAvLyB9XHJcblxyXG5cclxuICAgIC8qKlxyXG4gICAgICogRXhlY3V0ZXMgYSBzdG9yZWQgcHJvY2VkdXJlIGJhc2VkIG9uIHRoZSBnaXZlbiBwYXJhbWV0ZXJzLlxyXG4gICAgICogQHBhcmFtIHBheWxvYWQgVGhlIHBheWxvYWQgY29udGFpbmluZyB0aGUgb2JqZWN0IG5hbWUsIG9iamVjdCB0eXBlLCBhbmQgcGFyYW1ldGVycyBmb3IgdGhlIHN0b3JlZCBwcm9jZWR1cmUuXHJcbiAgICAgKiBAcGFyYW0gaGVhZGVycyBPcHRpb25hbCBoZWFkZXJzIGZvciB0aGUgcmVxdWVzdC5cclxuICAgICAqIEByZXR1cm5zIEFuIG9ic2VydmFibGUgb2YgdGhlIHJlc3BvbnNlIGZyb20gdGhlIEFQSS5cclxuICAgICAqL1xyXG4gICAgZXhlY3V0ZVN0b3JlZFByb2NlZHVyZShwYXlsb2FkOiBleGVjdXRlU3RvcmVkUHJvY2VkdXJlUGF5bG9hZCwgaGVhZGVycz86IGFueSk6IE9ic2VydmFibGU8Q29tbW9uQXBpUmVzcG9uc2U+IHtcclxuICAgICAgICBpZiAoIWhlYWRlcnMpIHtcclxuICAgICAgICAgICAgaGVhZGVycyA9IGdldEhlYWRlcnMoKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIENvbnZlcnQgdGhlIHBhcmFtZXRlcnMgb2JqZWN0IHRvIHRoZSByZXF1aXJlZCBmb3JtYXRcclxuICAgICAgICBjb25zdCBwYXJhbXM6IGFueSA9IFtdO1xyXG4gICAgICAgIGlmICh0eXBlb2YgcGF5bG9hZD8uUGFyYW1ldGVycyA9PT0gJ29iamVjdCcpIHtcclxuICAgICAgICAgICAgLy8gSXRlcmF0ZSBvdmVyIHRoZSBwYXJhbWV0ZXJzIGFuZCBjcmVhdGUgdGhlIHJlcXVpcmVkIGZvcm1hdFxyXG4gICAgICAgICAgICBPYmplY3Qua2V5cyhwYXlsb2FkLlBhcmFtZXRlcnMpLmZvckVhY2goKGtleTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICBwYXJhbXMucHVzaCh7XHJcbiAgICAgICAgICAgICAgICAgICAgTmFtZToga2V5LFxyXG4gICAgICAgICAgICAgICAgICAgIFZhbHVlOiBwYXlsb2FkLlBhcmFtZXRlcnNba2V5XVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gRXhlY3V0ZSB0aGUgc3RvcmVkIHByb2NlZHVyZVxyXG4gICAgICAgIHJldHVybiB0aGlzLl9hcGlTZXJ2aWNlLnBvc3QoQVBJLkV4ZWN1dGUsIHtcclxuICAgICAgICAgICAgLi4ucGF5bG9hZCxcclxuICAgICAgICAgICAgUGFyYW1ldGVyczogcGFyYW1zLFxyXG4gICAgICAgIH0sIGhlYWRlcnMpO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
|
|
234
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.21", ngImport: i0, type: TabCrudService, decorators: [{
|
|
235
|
+
type: Injectable,
|
|
236
|
+
args: [{ providedIn: 'root' }]
|
|
237
|
+
}] });
|
|
238
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiLWNydWQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvZGF0YS1hY2Nlc3Mvc3JjL2xpYi90YWItY29yZS11dGlsaXR5L2FwcC9jcnVkL3RhYi1jcnVkLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsdURBQXVEO0FBQ3ZELE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBR25ELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUNyRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsbUJBQW1CLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNoRyxPQUFPLEVBQWdDLGlCQUFpQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDNUYsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDMUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQzFELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNoRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsZUFBZSxFQUFFLGtCQUFrQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFHMUYsT0FBTyxFQUFFLEdBQUcsRUFBRSxXQUFXLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDbkQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ2hFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNsRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsZ0JB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QVcsR0FBRztZQUNoQixVQUFVLEVBQUUsT0FBTyxDQUFDLFVBQVU7WUFDOUIsVUFBVSxFQUFFLE9BQU8sQ0FBQyxVQUFVO1lBQzlCLFVBQVU7U0FDYixDQUFDO1FBRUYsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FDakMsV0FBVyxDQUFDLFdBQVcsRUFDdkIsR0FBRyxDQUFDLGVBQWUsRUFDbkIsV0FBVyxFQUNYLE9BQU8sQ0FDVixDQUFDO0lBQ04sQ0FBQzsrR0F4UFEsY0FBYzttSEFBZCxjQUFjLGNBREQsTUFBTTs7NEZBQ25CLGNBQWM7a0JBRDFCLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xyXG5pbXBvcnQgeyBpbmplY3QsIEluamVjdGFibGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBDb21tb25BcGlSZXNwb25zZSwgQ3J1ZEJhc2VQYXlsb2FkLCBEZWxldGVQYXlsb2FkLCBleGVjdXRlU3RvcmVkUHJvY2VkdXJlUGF5bG9hZCwgR2V0UGF5bG9hZCwgSW5zZXJ0UGF5bG9hZCwgVXBkYXRlUGF5bG9hZCB9IGZyb20gXCIuLi9pbnRlcmZhY2VzL2NvbW1vbi5pbnRlcmZhY2VcIjtcclxuaW1wb3J0IHsgQXBwT2JqZWN0TW9kZWwgfSBmcm9tIFwiLi4vbW9kZWxzL2FwcC1vYmplY3QubW9kZWxcIjtcclxuaW1wb3J0IHsgTWV0YWRhdGFIZWxwZXIgfSBmcm9tIFwiLi4vaGVscGVycy9jb21tb24vbWV0YS1kYXRhLmhlbHBlcnNcIjtcclxuaW1wb3J0IHsgZ2V0QnVsa0luc2VydEZpZWxkcywgZ2V0QnVsa0luc2VydFZhbHVlcywgcmVtb3ZlQmxhbmtWYWx1ZSB9IGZyb20gXCIuLi91dGlscy9qc29uLnV0aWxcIjtcclxuaW1wb3J0IHsgQVBJQnVsa0luc2VydEZpZWxkc1ZhbHVlU2V0cywgQVBJRmlsdGVyQ3JpdGVyaWEgfSBmcm9tIFwiLi4vbW9kZWxzL2FwaS1xdWVyeS5jbGFzc1wiO1xyXG5pbXBvcnQgeyBSZXF1ZXN0UmVzcG9uc2VIZWxwZXIgfSBmcm9tIFwiLi4vaGVscGVycy9jb21tb24vcmVxLXJlcy5oZWxwZXJzXCI7XHJcbmltcG9ydCB7IERTUUhlbHBlciB9IGZyb20gXCIuLi9oZWxwZXJzL2NvbW1vbi9kc3EuaGVscGVyc1wiO1xyXG5pbXBvcnQgeyBRdWVyeVR5cGUgfSBmcm9tIFwiLi4vZW51bXMvcXVlcnkuZW51bVwiO1xyXG5pbXBvcnQgeyBDb25qdWN0aW9uQ2xhdXNlLCBGaWx0ZXJWYWx1ZVR5cGUsIFJlbGF0aW9uYWxPcGVyYXRvciB9IGZyb20gXCIuLi9lbnVtcy9kc3EuZW51bVwiO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSBcInJ4anNcIjtcclxuaW1wb3J0IHsgRGF0YVNvdXJjZVF1ZXJ5TW9kZWwgfSBmcm9tIFwiLi4vbW9kZWxzL2RhdGEtc291cmNlLXF1ZXJ5Lm1vZGVsXCI7XHJcbmltcG9ydCB7IEFQSSwgQVBJU2VydmljZXMgfSBmcm9tIFwiLi4vY29uc3RhbnRzL2FwaS1jb25zdGFudHNcIjtcclxuaW1wb3J0IHsgZ2V0SGVhZGVycyB9IGZyb20gXCIuLi91dGlscy9yZXEtcmVzLnV0aWxcIjtcclxuaW1wb3J0IHsgQXBpU2VydmljZSB9IGZyb20gXCIuLi8uLi9jb3JlL2h0dHAtY2xpZW50L2FwaS5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IFRhYkdldFNlcnZpY2UgfSBmcm9tIFwiLi90YWItZ2V0LnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgVGFiSW5zZXJ0U2VydmljZSB9IGZyb20gXCIuL3RhYi1pbnNlcnQuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBUYWJVcGRhdGVTZXJ2aWNlIH0gZnJvbSBcIi4vdGFiLXVwZGF0ZS5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IFRhYkRlbGV0ZVNlcnZpY2UgfSBmcm9tIFwiLi90YWItZGVsZXRlLnNlcnZpY2VcIjtcclxuXHJcbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXHJcbmV4cG9ydCBjbGFzcyBUYWJDcnVkU2VydmljZSB7XHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9tZXRhZGF0YUhlbHBlcjogTWV0YWRhdGFIZWxwZXIgPSBpbmplY3QoTWV0YWRhdGFIZWxwZXIpO1xyXG4gICAgcHJpdmF0ZSByZWFkb25seSBfcmVxdWVzdFJlc3BvbnNlSGVscGVyOiBSZXF1ZXN0UmVzcG9uc2VIZWxwZXIgPSBpbmplY3QoUmVxdWVzdFJlc3BvbnNlSGVscGVyKTtcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgX2RzcUhlbHBlcjogRFNRSGVscGVyID0gaW5qZWN0KERTUUhlbHBlcik7XHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9hcGlTZXJ2aWNlID0gaW5qZWN0KEFwaVNlcnZpY2UpO1xyXG4gICAgcHJpdmF0ZSByZWFkb25seSBfdGFiR2V0U2VydmljZSA9IGluamVjdChUYWJHZXRTZXJ2aWNlKTtcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgX3RhYkluc2VydFNlcnZpY2UgPSBpbmplY3QoVGFiSW5zZXJ0U2VydmljZSk7XHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IF90YWJVcGRhdGVTZXJ2aWNlID0gaW5qZWN0KFRhYlVwZGF0ZVNlcnZpY2UpO1xyXG4gICAgcHJpdmF0ZSByZWFkb25seSBfdGFiRGVsZXRlU2VydmljZSA9IGluamVjdChUYWJEZWxldGVTZXJ2aWNlKTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFJldHVybnMgdGhlIEFwcE9iamVjdE1vZGVsIGZyb20gdGhlIGdpdmVuIHBheWxvYWQuXHJcbiAgICAgKiBAcGFyYW0gcGF5bG9hZCBUaGUgcGF5bG9hZCB3aXRoIGVpdGhlciBkYXRhU291cmNlUXVlcnlJZE9yTmFtZSBvciBhcHBPYmplY3RJZE9yTmFtZS5cclxuICAgICAqIEByZXR1cm5zIFRoZSBBcHBPYmplY3RNb2RlbC5cclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBnZXRBcHBPYmplY3RGcm9tUGF5bG9hZChwYXlsb2FkOiBDcnVkQmFzZVBheWxvYWQpOiBBcHBPYmplY3RNb2RlbCB7XHJcbiAgICAgICAgbGV0IGFwcE9iamVjdDtcclxuXHJcbiAgICAgICAgaWYgKHBheWxvYWQ/LmRhdGFTb3VyY2VRdWVyeUlkT3JOYW1lKSB7XHJcbiAgICAgICAgICAgIC8vIElmIGRhdGFTb3VyY2VRdWVyeUlkT3JOYW1lIGlzIGdpdmVuLCBnZXQgdGhlIEFwcE9iamVjdE1vZGVsIGZyb20gdGhlIGRhdGEgc291cmNlIHF1ZXJ5XHJcbiAgICAgICAgICAgIGFwcE9iamVjdCA9IHRoaXMuX21ldGFkYXRhSGVscGVyLmdldERhdGFTb3VyY2VRdWVyeUJ5SWRPck5hbWUocGF5bG9hZC5kYXRhU291cmNlUXVlcnlJZE9yTmFtZSk/LnBhcmVudEFwcE9iamVjdDtcclxuXHJcbiAgICAgICAgfSBlbHNlIGlmIChwYXlsb2FkPy5hcHBPYmplY3RJZE9yTmFtZSkge1xyXG4gICAgICAgICAgICAvLyBJZiBhcHBPYmplY3RJZE9yTmFtZSBpcyBnaXZlbiwgZ2V0IHRoZSBBcHBPYmplY3RNb2RlbCBkaXJlY3RseVxyXG4gICAgICAgICAgICBhcHBPYmplY3QgPSB0aGlzLl9tZXRhZGF0YUhlbHBlci5nZXRBcHBPYmplY3RCeUlkT3JOYW1lKHBheWxvYWQuYXBwT2JqZWN0SWRPck5hbWUpO1xyXG5cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICghYXBwT2JqZWN0Py5JRCkge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0FwcE9iamVjdCBub3QgZm91bmQnKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBhcHBPYmplY3Q7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBGaWx0ZXJzIG91dCBpbnZhbGlkIGZpZWxkcyBmcm9tIHRoZSBwcm92aWRlZCBkYXRhIGJhc2VkIG9uIHRoZSBBcHBPYmplY3RNb2RlbC5cclxuICAgICAqIE9wdGlvbmFsbHkgcmV0YWlucyBwcmltYXJ5IGtleSBmaWVsZHMuXHJcbiAgICAgKiBcclxuICAgICAqIEBwYXJhbSBkYXRhIFRoZSBkYXRhIG9iamVjdCB0byBmaWx0ZXIuXHJcbiAgICAgKiBAcGFyYW0gYXBwT2JqZWN0IFRoZSBBcHBPYmplY3RNb2RlbCB1c2VkIHRvIHZhbGlkYXRlIHRoZSBmaWVsZHMuXHJcbiAgICAgKiBAcGFyYW0ga2VlcFByaW1hcnlLZXkgT3B0aW9uYWwgZmxhZyB0byByZXRhaW4gcHJpbWFyeSBrZXkgZmllbGRzLiBEZWZhdWx0cyB0byBmYWxzZS5cclxuICAgICAqIEByZXR1cm5zIEEgbmV3IG9iamVjdCB3aXRoIG9ubHkgdmFsaWQgZmllbGRzLlxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIGZpbHRlclZhbGlkQXBwT2JqZWN0RmllbGRzKGRhdGE6IGFueSwgYXBwT2JqZWN0OiBBcHBPYmplY3RNb2RlbCwga2VlcFByaW1hcnlLZXkgPSBmYWxzZSwgcmVtb3ZlRW1wdHlWYWx1ZXMgPSB0cnVlKSB7XHJcbiAgICAgICAgaWYgKCFkYXRhIHx8IHR5cGVvZiBkYXRhICE9PSAnb2JqZWN0JykgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGRhdGEnKTtcclxuXHJcbiAgICAgICAgY29uc3QgZmlsdGVyZWREYXRhID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShkYXRhKSk7XHJcblxyXG4gICAgICAgIC8vIFJlbW92ZSBmaWVsZHMgd2l0aCBibGFuayB2YWx1ZXMgKG9ubHkgZm9yIGluc2VydCwgbm90IGZvciB1cGRhdGUpXHJcbiAgICAgICAgaWYgKHJlbW92ZUVtcHR5VmFsdWVzKSB7XHJcbiAgICAgICAgICAgIHJlbW92ZUJsYW5rVmFsdWUoZmlsdGVyZWREYXRhKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIEl0ZXJhdGUgb3ZlciBlYWNoIGtleSBpbiB0aGUgZmlsdGVyZWQgZGF0YVxyXG4gICAgICAgIE9iamVjdC5rZXlzKGZpbHRlcmVkRGF0YSk/LmZvckVhY2goKGtleSkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBhcHBGaWVsZCA9IGFwcE9iamVjdC5maWVsZChrZXkpO1xyXG4gICAgICAgICAgICBjb25zdCBjaGlsZEZpZWxkID0gYXBwT2JqZWN0LkNoaWxkUmVsYXRpb25TaGlwcz8uc29tZSgoeCkgPT4geD8uY2hpbGREZXRhaWxzPy5Mb29rdXBPYmplY3QgPT09IGtleSk7XHJcblxyXG4gICAgICAgICAgICAvLyBEZWxldGUgdGhlIGZpZWxkIGlmIGl0IGlzIG5vdCB2YWxpZCBvciBpZiBwcmltYXJ5IGtleXMgc2hvdWxkIG5vdCBiZSBrZXB0XHJcbiAgICAgICAgICAgIGlmICghKGFwcEZpZWxkIHx8IGNoaWxkRmllbGQpIHx8ICgha2VlcFByaW1hcnlLZXkgJiYgYXBwRmllbGQ/LklzUHJpbWFyeUtleSkpIHtcclxuICAgICAgICAgICAgICAgIGRlbGV0ZSBmaWx0ZXJlZERhdGFba2V5XTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICByZXR1cm4gZmlsdGVyZWREYXRhO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogR2VuZXJhdGVzIGEgd2hlcmUgY2xhdXNlIGJhc2VkIG9uIHRoZSBjcml0ZXJpYSBwcm92aWRlZC5cclxuICAgICAqXHJcbiAgICAgKiBTdXBwb3J0cyB0d28gZm9ybWF0cyBmb3IgY3JpdGVyaWE6XHJcbiAgICAgKiAtICoqT2JqZWN0KiogYHsgSWQ6ICd4eHgnIH1gIOKAlCBhdXRvLWJ1aWxkcyBFcXVhbFRvIGZpbHRlcnMgZm9yIGVhY2gga2V5LXZhbHVlIHBhaXIuXHJcbiAgICAgKiAtICoqQXJyYXkqKiBgW3sgQ29uanVjdGlvbkNsYXVzZSwgRmllbGRJRCwgUmVsYXRpb25hbE9wZXJhdG9yLCBWYWx1ZVR5cGUsIFZhbHVlLCAuLi4gfV1gIOKAlCB1c2VzIGZpbHRlcnMgZGlyZWN0bHkgYXMgcHJvdmlkZWQuXHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIGNyaXRlcmlhIFRoZSBjcml0ZXJpYSBvYmplY3Qgb3IgZmlsdGVyIGFycmF5IHRvIGdlbmVyYXRlIHRoZSB3aGVyZSBjbGF1c2UgZnJvbS5cclxuICAgICAqIEBwYXJhbSBjcnVkVGFibGVOYW1lIFRoZSBDUlVEIHRhYmxlIG5hbWUgdG8gdXNlIGluIHRoZSB3aGVyZSBjbGF1c2UuXHJcbiAgICAgKiBAcGFyYW0gcHJvdmlkZUVtcHR5V2hlcmVDbGF1c2UgSWYgdHJ1ZSwgYWxsb3dzIGVtcHR5IGNyaXRlcmlhLlxyXG4gICAgICogQHJldHVybnMgQSBuZXcgQVBJRmlsdGVyQ3JpdGVyaWEgb2JqZWN0IHdpdGggdGhlIGdlbmVyYXRlZCB3aGVyZSBjbGF1c2UuXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgZ2VuZXJhdGVXaGVyZUNsYXVzZShjcml0ZXJpYTogYW55LCBjcnVkVGFibGVOYW1lOiBzdHJpbmcsIHByb3ZpZGVFbXB0eVdoZXJlQ2xhdXNlID0gZmFsc2UpOiBBUElGaWx0ZXJDcml0ZXJpYSB7XHJcbiAgICAgICAgaWYgKCFwcm92aWRlRW1wdHlXaGVyZUNsYXVzZSAmJiAoIWNyaXRlcmlhIHx8ICh0eXBlb2YgY3JpdGVyaWEgIT09ICdvYmplY3QnICYmICFBcnJheS5pc0FycmF5KGNyaXRlcmlhKSkpKSB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgY3JpdGVyaWEnKTtcclxuXHJcbiAgICAgICAgLy8gQ3JlYXRlIGEgbmV3IEFQSUZpbHRlckNyaXRlcmlhIG9iamVjdFxyXG4gICAgICAgIGNvbnN0IHdoZXJlQ2xhdXNlID0gbmV3IEFQSUZpbHRlckNyaXRlcmlhKCk7XHJcbiAgICAgICAgd2hlcmVDbGF1c2UuZmlsdGVycyA9IFtdO1xyXG5cclxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShjcml0ZXJpYSkpIHtcclxuICAgICAgICAgICAgLy8gUmljaCBmaWx0ZXIgYXJyYXkg4oCUIHVzZSBkaXJlY3RseSBhcyBwcm92aWRlZFxyXG4gICAgICAgICAgICB3aGVyZUNsYXVzZS5maWx0ZXJzID0gY3JpdGVyaWE7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgLy8gUGxhaW4gb2JqZWN0IOKAlCBhdXRvLWJ1aWxkIEVxdWFsVG8gZmlsdGVycyBmb3IgZWFjaCBrZXktdmFsdWUgcGFpclxyXG4gICAgICAgICAgICByZW1vdmVCbGFua1ZhbHVlKGNyaXRlcmlhKTtcclxuXHJcbiAgICAgICAgICAgIE9iamVjdC5rZXlzKGNyaXRlcmlhKT8uZm9yRWFjaCgoa2V5OiBhbnksIGluZGV4OiBudW1iZXIpID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGZpbHRlciA9IHtcclxuICAgICAgICAgICAgICAgICAgICBjb25qdW5jdGlvbjogQ29uanVjdGlvbkNsYXVzZS5BTkQsIC8vIGNvbmp1Y3Rpb24gY2xhdXNlIGlzIEFORCBieSBkZWZhdWx0XHJcbiAgICAgICAgICAgICAgICAgICAgZmllbGROYW1lOiBjcnVkVGFibGVOYW1lICsgJy4nICsga2V5LCAvLyBmaWVsZCBuYW1lXHJcbiAgICAgICAgICAgICAgICAgICAgb3BlcmF0b3I6IFJlbGF0aW9uYWxPcGVyYXRvci5FcXVhbFRvLCAvLyByZWxhdGlvbmFsIG9wZXJhdG9yIGlzIEVxdWFsVG8gYnkgZGVmYXVsdFxyXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlVHlwZTogRmlsdGVyVmFsdWVUeXBlLkxpdGVyYWwsIC8vIHZhbHVlIHR5cGUgaXMgTGl0ZXJhbCBieSBkZWZhdWx0XHJcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGNyaXRlcmlhW2tleV0sIC8vIHNldCB0aGUgdmFsdWUgb2YgdGhlIGZpbHRlclxyXG4gICAgICAgICAgICAgICAgICAgIHNlcXVlbmNlOiBpbmRleCArIDEsIC8vIHNldCB0aGUgc2VxdWVuY2Ugc3RhcnRpbmcgZnJvbSAxXHJcbiAgICAgICAgICAgICAgICAgICAgZ3JvdXBJZDogMCAvLyBzZXQgdGhlIGdyb3VwIElEIHRvIDAgYnkgZGVmYXVsdFxyXG4gICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgIHdoZXJlQ2xhdXNlLmZpbHRlcnMucHVzaChmaWx0ZXIpOyAvLyBhZGQgdGhlIGZpbHRlciB0byB0aGUgYXJyYXkgb2YgZmlsdGVyc1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIFNldCB0aGUgZmlsdGVyIGxvZ2ljIHRvICcxJ1xyXG4gICAgICAgIHdoZXJlQ2xhdXNlLmZpbHRlckxvZ2ljID0gJzEnO1xyXG5cclxuICAgICAgICAvLyBSZXR1cm4gdGhlIGdlbmVyYXRlZCB3aGVyZSBjbGF1c2VcclxuICAgICAgICByZXR1cm4gd2hlcmVDbGF1c2U7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBFeGVjdXRlcyBhIEdFVCByZXF1ZXN0IHRvIHJldHJpZXZlIGRhdGEgZnJvbSB0aGUgc3BlY2lmaWVkIGRhdGEgc291cmNlIHF1ZXJ5LlxyXG4gICAgICogQHBhcmFtIHBheWxvYWQgVGhlIHBheWxvYWQgY29udGFpbmluZyB0aGUgY3JpdGVyaWEgZm9yIHRoZSBxdWVyeSBhbmQgdGhlIEFwcE9iamVjdE1vZGVsIElELlxyXG4gICAgICogQHBhcmFtIGhlYWRlcnMgT3B0aW9uYWwgaGVhZGVycyBmb3IgdGhlIHJlcXVlc3QuXHJcbiAgICAgKiBAcmV0dXJucyBBbiBvYnNlcnZhYmxlIG9mIHRoZSByZXNwb25zZSBmcm9tIHRoZSBBUEkuXHJcbiAgICAgKi9cclxuICAgIGdldChwYXlsb2FkOiBHZXRQYXlsb2FkLCBoZWFkZXJzPzogYW55KTogT2JzZXJ2YWJsZTxDb21tb25BcGlSZXNwb25zZT4ge1xyXG4gICAgICAgIC8vIEdldCB0aGUgQXBwT2JqZWN0TW9kZWwgZnJvbSB0aGUgcGF5bG9hZFxyXG4gICAgICAgIGNvbnN0IGFwcE9iamVjdDogQXBwT2JqZWN0TW9kZWwgPSB0aGlzLmdldEFwcE9iamVjdEZyb21QYXlsb2FkKHBheWxvYWQpO1xyXG5cclxuICAgICAgICAvLyBHZXQgdGhlIERhdGFTb3VyY2VRdWVyeU1vZGVsIGZyb20gdGhlIEFwcE9iamVjdE1vZGVsXHJcbiAgICAgICAgY29uc3QgZHNxOiBEYXRhU291cmNlUXVlcnlNb2RlbCB8IHVuZGVmaW5lZCA9IGFwcE9iamVjdC5kYXRhU291cmNlUXVlcnkocGF5bG9hZC5kYXRhU291cmNlUXVlcnlJZE9yTmFtZSk7XHJcblxyXG4gICAgICAgIC8vIFZhbGlkYXRlIHRoZSBBcHBPYmplY3RNb2RlbCBhbmQgRGF0YVNvdXJjZVF1ZXJ5TW9kZWxcclxuICAgICAgICBpZiAoIWFwcE9iamVjdCB8fCAhZHNxKSB0aHJvdyBuZXcgRXJyb3IoJ0FwcE9iamVjdCBvciBEYXRhU291cmNlUXVlcnkgbm90IGZvdW5kJyk7XHJcblxyXG4gICAgICAgIC8vIFVzZSBUYWJHZXRTZXJ2aWNlLmV4ZWN1dGVSQVdEU1FXaXRoTmFtZSB0byBhdm9pZCBjb2RlIGR1cGxpY2F0aW9uXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3RhYkdldFNlcnZpY2UuZXhlY3V0ZVJBV0RTUVdpdGhOYW1lKHtcclxuICAgICAgICAgICAgQXBwT2JqZWN0TmFtZTogYXBwT2JqZWN0Lk9iamVjdE5hbWUsXHJcbiAgICAgICAgICAgIERTUU5hbWU6IGRzcS5RdWVyeU5hbWUsXHJcbiAgICAgICAgICAgIC4uLnBheWxvYWQuY3JpdGVyaWFcclxuICAgICAgICB9LCBoZWFkZXJzKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEluc2VydHMgZGF0YSBpbnRvIHRoZSBzcGVjaWZpZWQgdGFibGUuXHJcbiAgICAgKiBORVc6IERlbGVnYXRlcyB0byBUYWJJbnNlcnRTZXJ2aWNlIHdoaWNoIHVzZXMgL3JlY29yZHMvaW5zZXJ0IGVuZHBvaW50IHdpdGggU1lOQy9BU1lOQyBzdXBwb3J0XHJcbiAgICAgKiBAcGFyYW0gcGF5bG9hZCBUaGUgcGF5bG9hZCBjb250YWluaW5nIHRoZSBkYXRhIHRvIGluc2VydCBhbmQgdGhlIEFwcE9iamVjdE1vZGVsIElELlxyXG4gICAgICogQHBhcmFtIGhlYWRlcnMgT3B0aW9uYWwgaGVhZGVycyBmb3IgdGhlIHJlcXVlc3QuXHJcbiAgICAgKiBAcmV0dXJucyBBbiBvYnNlcnZhYmxlIG9mIHRoZSByZXNwb25zZSBmcm9tIHRoZSBBUEkgKHJldHVybnMgaW5zZXJ0ZWRJZCBvbmx5KS5cclxuICAgICAqL1xyXG4gICAgaW5zZXJ0KHBheWxvYWQ6IEluc2VydFBheWxvYWQsIGhlYWRlcnM/OiBhbnkpOiBPYnNlcnZhYmxlPENvbW1vbkFwaVJlc3BvbnNlPiB7XHJcbiAgICAgICAgY29uc3QgYXBwT2JqZWN0OiBBcHBPYmplY3RNb2RlbCA9IHRoaXMuZ2V0QXBwT2JqZWN0RnJvbVBheWxvYWQocGF5bG9hZCk7XHJcblxyXG4gICAgICAgIC8vIERlbGVnYXRlIHRvIFRhYkluc2VydFNlcnZpY2UgLSBpdCBoYW5kbGVzIG5ldyBBUEkgd2l0aCBTWU5DL0FTWU5DIGF1dG9tYXRpY2FsbHlcclxuICAgICAgICByZXR1cm4gdGhpcy5fdGFiSW5zZXJ0U2VydmljZS5pbnNlcnRCeU9iamVjdElkKGFwcE9iamVjdC5JRCwgeyBkYXRhOiBwYXlsb2FkLmRhdGEgfSwgaGVhZGVycykgYXMgT2JzZXJ2YWJsZTxDb21tb25BcGlSZXNwb25zZT47XHJcbiAgICB9XHJcbiAgICBcclxuICAgIGJ1bGtJbnNlcnQocGF5bG9hZDogSW5zZXJ0UGF5bG9hZCwgaGVhZGVycz86IGFueSk6IE9ic2VydmFibGU8Q29tbW9uQXBpUmVzcG9uc2U+IHtcclxuICAgICAgICBjb25zdCBhcHBPYmplY3Q6IEFwcE9iamVjdE1vZGVsID0gdGhpcy5nZXRBcHBPYmplY3RGcm9tUGF5bG9hZChwYXlsb2FkKTtcclxuICAgICAgICAvLyBDcmVhdGUgYSB3aGVyZSBjbGF1c2UgZm9yIHRoZSBpbnNlcnQgb3BlcmF0aW9uXHJcbiAgICAgICAgY29uc3Qgd2hlcmVDbGF1c2U6IEFQSUZpbHRlckNyaXRlcmlhID0gdGhpcy5nZW5lcmF0ZVdoZXJlQ2xhdXNlKHt9LCBhcHBPYmplY3QuU3lzdGVtREJUYWJsZU5hbWUsIHRydWUpO1xyXG5cclxuICAgICAgICAvLyBUcmFuc2Zvcm0gdGhlIGRhdGEgaW50byB0aGUgZm9ybWF0IHJlcXVpcmVkIGJ5IHRoZSBBUElcclxuICAgICAgICBjb25zdCB0cmFuc2Zvcm1lZEZpZWxkczogc3RyaW5nW10gPSBnZXRCdWxrSW5zZXJ0RmllbGRzKHBheWxvYWQuZGF0YSk7XHJcbiAgICAgICAgY29uc3QgdHJhbnNmb3JtZWRWYWx1ZXM6IEFQSUJ1bGtJbnNlcnRGaWVsZHNWYWx1ZVNldHNbXSA9IGdldEJ1bGtJbnNlcnRWYWx1ZXMocGF5bG9hZC5kYXRhKTtcclxuICAgICAgICAvLyBHZW5lcmF0ZSB0aGUgcGF5bG9hZCBmb3IgdGhlIEFQSSByZXF1ZXN0XHJcbiAgICAgICAgY29uc3QgYXBpUGF5bG9hZCA9IHRoaXMuX3JlcXVlc3RSZXNwb25zZUhlbHBlci5idWxrSW5zZXJ0UGF5bG9hZChhcHBPYmplY3QuU3lzdGVtREJUYWJsZU5hbWUsIHdoZXJlQ2xhdXNlLCB0cmFuc2Zvcm1lZFZhbHVlcywgdHJhbnNmb3JtZWRGaWVsZHMpO1xyXG4gICAgICAgIC8vIEV4ZWN1dGUgdGhlIHF1ZXJ5XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RzcUhlbHBlci5leGVjdXRlUXVlcnkoYXBpUGF5bG9hZCwgUXVlcnlUeXBlLkJ1bGtJbnNlcnQsIGhlYWRlcnMpIGFzIE9ic2VydmFibGU8Q29tbW9uQXBpUmVzcG9uc2U+O1xyXG4gICAgfVxyXG4gICAgLyoqXHJcbiAgICAgKiBVcGRhdGVzIGRhdGEgaW4gdGhlIHNwZWNpZmllZCB0YWJsZS5cclxuICAgICAqIE5FVzogRGVsZWdhdGVzIHRvIFRhYlVwZGF0ZVNlcnZpY2Ugd2hpY2ggdXNlcyAvcmVjb3Jkcy91cGRhdGUgZW5kcG9pbnQgd2l0aCBTWU5DL0FTWU5DIHN1cHBvcnRcclxuICAgICAqIEBwYXJhbSBwYXlsb2FkIFRoZSBwYXlsb2FkIGNvbnRhaW5pbmcgdGhlIGRhdGEgdG8gdXBkYXRlLCB0aGUgY3JpdGVyaWEgZm9yIHRoZSB1cGRhdGUsIGFuZCB0aGUgQXBwT2JqZWN0TW9kZWwgSUQuXHJcbiAgICAgKiBAcGFyYW0gaGVhZGVycyBPcHRpb25hbCBoZWFkZXJzIGZvciB0aGUgcmVxdWVzdC5cclxuICAgICAqIEByZXR1cm5zIEFuIG9ic2VydmFibGUgb2YgdGhlIHJlc3BvbnNlIGZyb20gdGhlIEFQSS5cclxuICAgICAqL1xyXG4gICAgdXBkYXRlKHBheWxvYWQ6IFVwZGF0ZVBheWxvYWQsIGhlYWRlcnM/OiBhbnkpOiBPYnNlcnZhYmxlPENvbW1vbkFwaVJlc3BvbnNlPiB7XHJcbiAgICAgICAgY29uc3QgYXBwT2JqZWN0OiBBcHBPYmplY3RNb2RlbCA9IHRoaXMuZ2V0QXBwT2JqZWN0RnJvbVBheWxvYWQocGF5bG9hZCk7XHJcblxyXG4gICAgICAgIC8vIERlbGVnYXRlIHRvIFRhYlVwZGF0ZVNlcnZpY2UgLSBpdCBoYW5kbGVzIG5ldyBBUEkgd2l0aCBTWU5DL0FTWU5DIGF1dG9tYXRpY2FsbHlcclxuICAgICAgICByZXR1cm4gdGhpcy5fdGFiVXBkYXRlU2VydmljZS51cGRhdGVCeU9iamVjdElkKGFwcE9iamVjdC5JRCwgeyBkYXRhOiBwYXlsb2FkLmRhdGEgfSwgaGVhZGVycykgYXMgT2JzZXJ2YWJsZTxDb21tb25BcGlSZXNwb25zZT47XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBEZWxldGVzIGRhdGEgZnJvbSB0aGUgc3BlY2lmaWVkIHRhYmxlLlxyXG4gICAgICogTkVXOiBEZWxlZ2F0ZXMgdG8gVGFiRGVsZXRlU2VydmljZSB3aGljaCB1c2VzIC9yZWNvcmRzL2RlbGV0ZSBlbmRwb2ludCB3aXRoIFNZTkMvQVNZTkMgc3VwcG9ydFxyXG4gICAgICogQHBhcmFtIHBheWxvYWQgVGhlIHBheWxvYWQgY29udGFpbmluZyB0aGUgY3JpdGVyaWEgZm9yIHRoZSBkZWxldGUgYW5kIHRoZSBBcHBPYmplY3RNb2RlbCBJRC5cclxuICAgICAqIEBwYXJhbSBoZWFkZXJzIE9wdGlvbmFsIGhlYWRlcnMgZm9yIHRoZSByZXF1ZXN0LlxyXG4gICAgICogQHJldHVybnMgQW4gb2JzZXJ2YWJsZSBvZiB0aGUgcmVzcG9uc2UgZnJvbSB0aGUgQVBJLlxyXG4gICAgICovXHJcbiAgICBkZWxldGUocGF5bG9hZDogRGVsZXRlUGF5bG9hZCwgaGVhZGVycz86IGFueSk6IE9ic2VydmFibGU8Q29tbW9uQXBpUmVzcG9uc2U+IHtcclxuICAgICAgICBjb25zdCBhcHBPYmplY3Q6IEFwcE9iamVjdE1vZGVsID0gdGhpcy5nZXRBcHBPYmplY3RGcm9tUGF5bG9hZChwYXlsb2FkKTtcclxuXHJcbiAgICAgICAgLy8gR2VuZXJhdGUgYSB3aGVyZSBjbGF1c2UgYmFzZWQgb24gdGhlIGNyaXRlcmlhIHByb3ZpZGVkXHJcbiAgICAgICAgY29uc3Qgd2hlcmVDbGF1c2U6IEFQSUZpbHRlckNyaXRlcmlhID0gdGhpcy5nZW5lcmF0ZVdoZXJlQ2xhdXNlKHBheWxvYWQuY3JpdGVyaWEsIGFwcE9iamVjdC5TeXN0ZW1EQlRhYmxlTmFtZSk7XHJcbiAgICAgICAgaWYgKCF3aGVyZUNsYXVzZT8uZmlsdGVycz8ubGVuZ3RoKSB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgY3JpdGVyaWEnKTtcclxuXHJcbiAgICAgICAgLy8gR2VuZXJhdGUgdGhlIHBheWxvYWQgZm9yIHRoZSBBUEkgcmVxdWVzdCAoTkVXIGZvcm1hdDogeyBlbnRpdHlOYW1lLCB3aGVyZUNsYXVzZSB9KVxyXG4gICAgICAgIGNvbnN0IGFwaVBheWxvYWQgPSB0aGlzLl9yZXF1ZXN0UmVzcG9uc2VIZWxwZXIuZGVsZXRlUGF5bG9hZChhcHBPYmplY3QuU3lzdGVtREJUYWJsZU5hbWUsIHdoZXJlQ2xhdXNlKTtcclxuXHJcbiAgICAgICAgLy8gRGVsZWdhdGUgdG8gVGFiRGVsZXRlU2VydmljZSAtIGl0IGhhbmRsZXMgbmV3IEFQSSB3aXRoIFNZTkMvQVNZTkMgYXV0b21hdGljYWxseVxyXG4gICAgICAgIHJldHVybiB0aGlzLl90YWJEZWxldGVTZXJ2aWNlLmRlbGV0ZShhcGlQYXlsb2FkLCBoZWFkZXJzKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyAvKipcclxuICAgIC8vICAqIEV4ZWN1dGVzIGEgc3RvcmVkIHByb2NlZHVyZSB1c2luZyByYXcgU1FMLlxyXG4gICAgLy8gICogQHBhcmFtIHNwIFRoZSBzdG9yZWQgcHJvY2VkdXJlIHF1ZXJ5IHN0cmluZy5cclxuICAgIC8vICAqIEBwYXJhbSBoZWFkZXJzIE9wdGlvbmFsIGhlYWRlcnMgZm9yIHRoZSByZXF1ZXN0LlxyXG4gICAgLy8gICogQHJldHVybnMgVGhlIHJlc3VsdCBvZiB0aGUgQVBJIFBPU1QgcmVxdWVzdC5cclxuICAgIC8vICAqL1xyXG4gICAgLy8gZXhlY3V0ZVNwKHNwOiBzdHJpbmcsIGhlYWRlcnM/OiBhbnkpOiBPYnNlcnZhYmxlPENvbW1vbkFwaVJlc3BvbnNlPiB7XHJcbiAgICAvLyAgICAgLy8gUmV0cmlldmUgaGVhZGVycyBmb3IgdGhlIHJlcXVlc3RcclxuICAgIC8vICAgICBjb25zdCBoZWFkZXIgPSBnZXRIZWFkZXJzKGhlYWRlcnMpO1xyXG5cclxuICAgIC8vICAgICAvLyBFeGVjdXRlIHRoZSBzdG9yZWQgcHJvY2VkdXJlIHVzaW5nIGEgUE9TVCByZXF1ZXN0XHJcbiAgICAvLyAgICAgcmV0dXJuIHRoaXMuX2FwaVNlcnZpY2UucG9zdChgJHtBUEkucmF3U1FMfT9xdWVyeT0ke3NwfWAsIHt9LCBoZWFkZXIpIGFzIE9ic2VydmFibGU8Q29tbW9uQXBpUmVzcG9uc2U+O1xyXG4gICAgLy8gfVxyXG5cclxuXHJcbiAgICAvKipcclxuICAgICAqIEV4ZWN1dGVzIGEgc3RvcmVkIHByb2NlZHVyZSBiYXNlZCBvbiB0aGUgZ2l2ZW4gcGFyYW1ldGVycy5cclxuICAgICAqIEBwYXJhbSBwYXlsb2FkIFRoZSBwYXlsb2FkIGNvbnRhaW5pbmcgdGhlIG9iamVjdCBuYW1lLCBvYmplY3QgdHlwZSwgYW5kIHBhcmFtZXRlcnMgZm9yIHRoZSBzdG9yZWQgcHJvY2VkdXJlLlxyXG4gICAgICogQHBhcmFtIGhlYWRlcnMgT3B0aW9uYWwgaGVhZGVycyBmb3IgdGhlIHJlcXVlc3QuXHJcbiAgICAgKiBAcmV0dXJucyBBbiBvYnNlcnZhYmxlIG9mIHRoZSByZXNwb25zZSBmcm9tIHRoZSBBUEkuXHJcbiAgICAgKi9cclxuICAgIGV4ZWN1dGVTdG9yZWRQcm9jZWR1cmUocGF5bG9hZDogZXhlY3V0ZVN0b3JlZFByb2NlZHVyZVBheWxvYWQsIGhlYWRlcnM/OiBhbnkpOiBPYnNlcnZhYmxlPENvbW1vbkFwaVJlc3BvbnNlPiB7XHJcbiAgICAgICAgXHJcbiAgICAgICAgaGVhZGVycyA9IGdldEhlYWRlcnMoaGVhZGVycyk7XHJcbiAgICAgICAgY29uc3QgcGFyYW1ldGVyczogYW55ID0gW107XHJcblxyXG4gICAgICAgIGlmIChwYXlsb2FkPy5QYXJhbWV0ZXJzICYmIHR5cGVvZiBwYXlsb2FkLlBhcmFtZXRlcnMgPT09ICdvYmplY3QnKSB7XHJcbiAgICAgICAgICAgIE9iamVjdC5rZXlzKHBheWxvYWQuUGFyYW1ldGVycykuZm9yRWFjaCgoa2V5OiBzdHJpbmcpID0+IHtcclxuICAgICAgICAgICAgICAgIHBhcmFtZXRlcnMucHVzaCh7XHJcbiAgICAgICAgICAgICAgICAgICAgbmFtZToga2V5LFxyXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiBwYXlsb2FkLlBhcmFtZXRlcnNba2V5XVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3QgcmVxdWVzdEJvZHkgPSB7XHJcbiAgICAgICAgICAgIG9iamVjdE5hbWU6IHBheWxvYWQuT2JqZWN0TmFtZSxcclxuICAgICAgICAgICAgb2JqZWN0VHlwZTogcGF5bG9hZC5PYmplY3RUeXBlLFxyXG4gICAgICAgICAgICBwYXJhbWV0ZXJzXHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2FwaVNlcnZpY2UucG9zdFRvU2VydmljZShcclxuICAgICAgICAgICAgQVBJU2VydmljZXMuY3J1ZFNlcnZpY2UsXHJcbiAgICAgICAgICAgIEFQSS5kYXRhYmFzZUV4ZWN1dGUsXHJcbiAgICAgICAgICAgIHJlcXVlc3RCb2R5LFxyXG4gICAgICAgICAgICBoZWFkZXJzXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxufVxyXG4iXX0=
|
|
@@ -241,11 +241,11 @@ export class TabDeleteService {
|
|
|
241
241
|
}
|
|
242
242
|
return valueArray;
|
|
243
243
|
}
|
|
244
|
-
static { this.ɵfac =
|
|
245
|
-
static { this.ɵprov =
|
|
244
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.21", ngImport: i0, type: TabDeleteService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
245
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.21", ngImport: i0, type: TabDeleteService, providedIn: 'root' }); }
|
|
246
246
|
}
|
|
247
|
-
(
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiLWRlbGV0ZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9kYXRhLWFjY2Vzcy9zcmMvbGliL3RhYi1jb3JlLXV0aWxpdHkvYXBwL2NydWQvdGFiLWRlbGV0ZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHVEQUF1RDtBQUV2RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQWMsRUFBRSxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNsRCxPQUFPLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM1RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDaEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDM0UsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDMUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxTQUFTLEVBQWEsTUFBTSw0QkFBNEIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsZUFBZSxFQUFFLG1CQUFtQixFQUFFLFVBQVUsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3pGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzlELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUNoRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFDNUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxXQUFXLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7QUFJOUQsTUFBTSxPQUFPLGdCQUFnQjtJQUQ3QjtRQUVtQixpQkFBWSxHQUFHLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUNwQyxzQkFBaUIsR0FBRyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUM5QywwQkFBcUIsR0FBRyxNQUFNLENBQUMscUJBQXFCLENBQUMsQ0FBQztRQUN0RCxlQUFVLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ2hDLG1CQUFjLEdBQUcsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ3hDLG1CQUFjLEdBQUcsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0tBdVAxRDtJQXJQQzs7Ozs7O09BTUc7SUFDSCxZQUFZLENBQUMsUUFBZ0IsRUFBRSxJQUFTLEVBQUUsY0FBbUI7UUFDM0QsSUFBSSxNQUFNLENBQUM7UUFDWCxJQUFJLFNBQVMsR0FBYyxJQUFJLFNBQVMsRUFBRSxDQUFDO1FBQzNDLElBQUksYUFBYSxHQUFHLEVBQUUsQ0FBQztRQUN2QixJQUFJLFFBQVEsRUFBRSxDQUFDO1lBQ2IseUNBQXlDO1lBQ3pDLE1BQU0sTUFBTSxHQUFjLElBQUksQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ2hFLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyw0QkFBNEIsQ0FBQyxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUM7WUFDbEcsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxzQkFBc0IsQ0FBQyxnQkFBZ0IsRUFBRSxRQUFRLElBQUksRUFBRSxDQUFDLENBQUM7WUFDcEcsU0FBUyxHQUFHLGNBQWMsRUFBRSxNQUFNLEVBQUUsQ0FBQztZQUNyQyxhQUFhLEdBQUcsY0FBYyxFQUFFLGlCQUFpQixJQUFJLEVBQUUsQ0FBQztZQUN4RCxNQUFNLEdBQUcsZ0JBQWdCLEVBQUUsTUFBTSxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUMsS0FBVSxFQUFFLEVBQUU7Z0JBQ3RELE9BQU87b0JBQ0wsR0FBRyxLQUFLO29CQUNSLEtBQUssRUFBRSxLQUFLLENBQUMsS0FBSztpQkFDbkIsQ0FBQztZQUNKLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUNELElBQUksY0FBYyxFQUFFLENBQUM7WUFDbkIscUNBQXFDO1lBQ3JDLE1BQU0sR0FBRyxFQUFFLENBQUM7WUFDWixNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLHNCQUFzQixDQUFDLGNBQWMsQ0FBQyxDQUFDO1lBQ2xGLFNBQVMsR0FBRyxjQUFjLEVBQUUsTUFBTSxFQUFFLENBQUM7WUFDckMsY0FBYyxFQUFFLE1BQU0sRUFBRSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRTtnQkFDekMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFBO1lBQ2pDLENBQUMsQ0FBQyxDQUFDO1lBQ0gsYUFBYSxHQUFHLGNBQWMsRUFBRSxpQkFBaUIsSUFBSSxFQUFFLENBQUM7UUFDMUQsQ0FBQztRQUNELE1BQU0sZ0JBQWdCLEdBQVEsbUJBQW1CLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDN0QsSUFBSSxTQUFTLElBQUksYUFBYSxFQUFFLENBQUM7WUFDL0IsSUFBSSxXQUFXLEdBQVEsaUJBQWlCLENBQUM7WUFDekMsSUFBSSxnQkFBZ0IsSUFBSSxnQkFBZ0IsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQ3BELG9FQUFvRTtnQkFDcEUsV0FBVyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQywrQ0FBK0MsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLGdCQUFnQixFQUFFLGFBQWEsQ0FBQyxDQUFDO1lBQ25JLENBQUM7aUJBQU0sSUFBSSxnQkFBZ0IsSUFBSSxnQkFBZ0IsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0JBQzdELGlFQUFpRTtnQkFDakUsTUFBTSxRQUFRLEdBQUcsZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLENBQUM7Z0JBQzVFLFdBQVcsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsd0JBQXdCLENBQUMsTUFBTSxFQUFFLFFBQVEsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsRUFBRSxTQUFTLEVBQUUsYUFBYSxDQUFDLENBQUM7WUFDakksQ0FBQztZQUNELE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxhQUFhLENBQUMsYUFBYSxFQUFFLFdBQVcsQ0FBQyxDQUFDO1lBQ3JGLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUM5QixDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsbUJBQW1CLENBQUMsU0FBaUIsRUFBRSxVQUFrQixFQUFFLGVBQXVCO1FBQ2hGLGtEQUFrRDtRQUNsRCxNQUFNLFdBQVcsR0FBc0IsSUFBSSxDQUFDLGlCQUFpQixDQUFDLCtCQUErQixDQUFDLFNBQVMsRUFBRSxVQUFVLEVBQUUsZUFBZSxDQUFDLENBQUM7UUFDdEksTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixDQUFDLGFBQWEsQ0FBQyxTQUFTLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFDakYsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzlCLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILE1BQU0sQ0FBQyxJQUFTLEVBQUUsT0FBYTtRQUM3Qiw2REFBNkQ7UUFDN0QsTUFBTSxNQUFNLEdBQUcsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRW5DLG1DQUFtQztRQUNuQyxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsaUJBQWlCLENBQ3RDLFdBQVcsQ0FBQyxXQUFXLEVBQ3ZCLEdBQUcsQ0FBQyxhQUFhLEVBQ2pCLElBQUksRUFDSixNQUFNLENBQ1AsQ0FBQyxJQUFJLENBQ0osU0FBUyxDQUFDLENBQUMsUUFBMkIsRUFBRSxFQUFFO1lBQ3hDLElBQUksQ0FBQyxRQUFRLEVBQUUsU0FBUyxFQUFFLENBQUM7Z0JBQ3pCLE9BQU8sQ0FBQyxLQUFLLENBQUMsbUNBQW1DLEVBQUUsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFDO2dCQUNyRSxPQUFPLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUN0QixDQUFDO1lBRUQsd0NBQXdDO1lBQ3hDLElBQUksUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsQ0FBQztnQkFDN0IsT0FBUSxFQUFFLENBQUM7b0JBQ1QsR0FBRyxRQUFRO29CQUNYLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDO2lCQUM5QixDQUFDLENBQUM7WUFDTCxDQUFDO1lBRUQsb0NBQW9DO2lCQUMvQixJQUFJLFFBQVEsRUFBRSxhQUFhLEVBQUUsQ0FBQztnQkFDakMsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDMUMsQ0FBQztZQUVELGtDQUFrQztZQUNsQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN0QixDQUFDLENBQUMsRUFDRixVQUFVLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUNuQixPQUFPLENBQUMsS0FBSyxDQUFDLGtDQUFrQyxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQ3pELE9BQU8sVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2pDLENBQUMsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNLLGlCQUFpQixDQUFDLFFBQTJCO1FBQ25ELE1BQU0sYUFBYSxHQUFHLFFBQVEsRUFBRSxhQUFhLENBQUM7UUFFOUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQ25CLE9BQU8sQ0FBQyxLQUFLLENBQUMsNERBQTRELENBQUMsQ0FBQztZQUM1RSxPQUFPLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN0QixDQUFDO1FBRUQsNERBQTREO1FBQzVELE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQyxhQUFhLENBQUMsQ0FBQyxJQUFJLENBQzdELEdBQUcsQ0FBQyxDQUFDLFlBQVksRUFBRSxFQUFFO1lBQ25CLCtCQUErQjtZQUMvQixJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsRUFBRSxDQUFDO2dCQUM1QixNQUFNLElBQUksS0FBSyxDQUFDLFlBQVksQ0FBQyxZQUFZLElBQUkseUJBQXlCLENBQUMsQ0FBQztZQUMxRSxDQUFDO1lBRUQsZ0RBQWdEO1lBQ2hELE9BQU87Z0JBQ0wsR0FBRyxRQUFRO2dCQUNYLE1BQU0sRUFBRSxZQUFZLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUNoQyxlQUFlLEVBQUUsWUFBWSxDQUFDLGVBQWUsSUFBSSxDQUFDO2FBQ25ELENBQUM7UUFDSixDQUFDLENBQUMsRUFDRixVQUFVLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUNuQixJQUFJLEtBQUssQ0FBQyxPQUFPLEtBQUsscUJBQXFCLEVBQUUsQ0FBQztnQkFDNUMsT0FBTyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxLQUFLLENBQy9CLG1IQUFtSCxDQUNwSCxDQUFDLENBQUM7WUFDTCxDQUFDO1lBQ0QsT0FBTyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDakMsQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUNKLENBQUM7SUFFRDs7O09BR0c7SUFDSCxpQkFBaUI7UUFDZixNQUFNLElBQUksR0FBRyxnRkFBZ0YsQ0FBQztRQUM5RixJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUMxQixPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7YUFBTSxDQUFDO1lBQ04sT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsMkJBQTJCLENBQUMsU0FBaUIsRUFBRSxNQUFXO1FBQ3hELDZDQUE2QztRQUM3QyxNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLGlCQUFpQixLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzNHLE1BQU0sU0FBUyxHQUFHLGNBQWMsRUFBRSxNQUFNLEVBQUUsQ0FBQztRQUMzQyxNQUFNLGdCQUFnQixHQUFRLG1CQUFtQixDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzdELGtDQUFrQztRQUNsQyxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsMkJBQTJCLENBQUMsTUFBTSxFQUFFLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxDQUFBO1FBQzNGLG9FQUFvRTtRQUNwRSxNQUFNLFdBQVcsR0FBc0IsSUFBSSxDQUFDLGlCQUFpQixDQUFDLDhDQUE4QyxDQUFDLFNBQVMsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsRUFBRSxTQUFTLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDcEssTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixDQUFDLGFBQWEsQ0FBQyxTQUFTLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFDakYsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzlCLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCw0Q0FBNEMsQ0FBQyxTQUFpQixFQUFFLE1BQVcsRUFBRyxPQUFhO1FBQ3pGLGtDQUFrQztRQUNsQyxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsNENBQTRDLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDN0Usb0VBQW9FO1FBQ3BFLE1BQU0sV0FBVyxHQUFzQixJQUFJLENBQUMsaUJBQWlCLENBQUMsK0JBQStCLENBQUMsU0FBUyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQ3JILE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxhQUFhLENBQUMsU0FBUyxFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBQ2pGLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsMkJBQTJCLENBQUMsU0FBYyxFQUFFLEdBQVE7UUFDbEQsTUFBTSxVQUFVLEdBQVEsRUFBRSxDQUFBO1FBQzFCLElBQUksU0FBUyxJQUFJLFNBQVMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNsQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBWSxFQUFFLEVBQUU7Z0JBQ2pDLFVBQVUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUE7WUFDL0IsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDO1FBQ0QsT0FBTyxVQUFVLENBQUE7SUFDbkIsQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDSCw0Q0FBNEMsQ0FBQyxTQUFjO1FBQ3pELE1BQU0sVUFBVSxHQUFRLEVBQUUsQ0FBQztRQUMzQiwwREFBMEQ7UUFDMUQsSUFBSSxTQUFTLElBQUksU0FBUyxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ2xDLDhDQUE4QztZQUM5QyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBWSxFQUFFLEtBQWEsRUFBRSxFQUFFO2dCQUNoRCxrQ0FBa0M7Z0JBQ2xDLElBQUksT0FBTyxJQUFJLE9BQU8sT0FBTyxLQUFLLFFBQVEsRUFBRSxDQUFDO29CQUMzQyxpREFBaUQ7b0JBQ2pELE1BQU0sQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRTt3QkFDL0MsK0VBQStFO3dCQUMvRSxVQUFVLENBQUMsSUFBSSxDQUFDOzRCQUNkLEdBQUcsRUFBRSxHQUFHOzRCQUNSLEtBQUssRUFBRSxLQUFLOzRCQUNaLE9BQU8sRUFBRSxLQUFLO3lCQUNmLENBQUMsQ0FBQztvQkFDTCxDQUFDLENBQUMsQ0FBQztnQkFDTCxDQUFDO1lBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDO1FBQ0QsT0FBTyxVQUFVLENBQUM7SUFDcEIsQ0FBQztpRkE1UFUsZ0JBQWdCO3VFQUFoQixnQkFBZ0IsV0FBaEIsZ0JBQWdCLG1CQURILE1BQU07O2lGQUNuQixnQkFBZ0I7Y0FENUIsVUFBVTtlQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cclxuXHJcbmltcG9ydCB7IEluamVjdGFibGUsIGluamVjdCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mLCB0aHJvd0Vycm9yIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IHN3aXRjaE1hcCwgbWFwLCBjYXRjaEVycm9yIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBTY3JlZW5IZWxwZXIgfSBmcm9tIFwiLi4vaGVscGVycy9zY3JlZW4vc2NyZWVuLmhlbHBlcnNcIjtcclxuaW1wb3J0IHsgV2hlcmVDbGF1c2VIZWxwZXIgfSBmcm9tIFwiLi4vaGVscGVycy9jb21tb24vd2hlcmUtY2xhdXNlLmhlbHBlcnNcIjtcclxuaW1wb3J0IHsgUmVxdWVzdFJlc3BvbnNlSGVscGVyIH0gZnJvbSBcIi4uL2hlbHBlcnMvY29tbW9uL3JlcS1yZXMuaGVscGVyc1wiO1xyXG5pbXBvcnQgeyBNZXRhZGF0YUhlbHBlciB9IGZyb20gXCIuLi9oZWxwZXJzL2NvbW1vbi9tZXRhLWRhdGEuaGVscGVyc1wiO1xyXG5pbXBvcnQgeyBBcHBPYmplY3QsIEFwcFNjcmVlbiB9IGZyb20gXCIuLi9tb2RlbHMvYXBwLW9iamVjdC5jbGFzc1wiO1xyXG5pbXBvcnQgeyBnZXRFZGl0UmVjb3JkSWQsIGdldFByaW1hcnlLZXlGaWVsZHMsIGdldEhlYWRlcnMgfSBmcm9tIFwiLi4vdXRpbHMvcmVxLXJlcy51dGlsXCI7XHJcbmltcG9ydCB7IEFQSUZpbHRlckNyaXRlcmlhIH0gZnJvbSBcIi4uL21vZGVscy9hcGktcXVlcnkuY2xhc3NcIjtcclxuaW1wb3J0IHsgQXBpU2VydmljZSB9IGZyb20gJy4uLy4uL2NvcmUvaHR0cC1jbGllbnQvYXBpLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTaWduYWxSU2VydmljZSB9IGZyb20gJy4uLy4uL2NvcmUvc2VydmljZS9zaWduYWxyL3NpZ25hbHIuc2VydmljZSc7XHJcbmltcG9ydCB7IEFQSSwgQVBJU2VydmljZXMgfSBmcm9tICcuLi9jb25zdGFudHMvYXBpLWNvbnN0YW50cyc7XHJcbmltcG9ydCB7IENvbW1vbkFwaVJlc3BvbnNlIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9jb21tb24uaW50ZXJmYWNlJztcclxuXHJcbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXHJcbmV4cG9ydCBjbGFzcyBUYWJEZWxldGVTZXJ2aWNlIHtcclxuICBwcml2YXRlIHJlYWRvbmx5IHNjcmVlbkhlbHBlciA9IGluamVjdChTY3JlZW5IZWxwZXIpO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgd2hlcmVDbGF1c2VIZWxwZXIgPSBpbmplY3QoV2hlcmVDbGF1c2VIZWxwZXIpO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgcmVxdWVzdFJlc3BvbnNlSGVscGVyID0gaW5qZWN0KFJlcXVlc3RSZXNwb25zZUhlbHBlcik7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBhcGlTZXJ2aWNlID0gaW5qZWN0KEFwaVNlcnZpY2UpO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgc2lnbmFsUlNlcnZpY2UgPSBpbmplY3QoU2lnbmFsUlNlcnZpY2UpO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgbWV0YWRhdGFIZWxwZXIgPSBpbmplY3QoTWV0YWRhdGFIZWxwZXIpO1xyXG5cclxuICAvKipcclxuICAgKiBEZWxldGVzIGEgcmVjb3JkIGJhc2VkIG9uIHRoZSBnaXZlbiBzY3JlZW4gSUQsIGRhdGEsIGFuZCBvYmplY3QgSUQuXHJcbiAgICogQHBhcmFtIHNjcmVlbklkIFRoZSBJRCBvZiB0aGUgc2NyZWVuLlxyXG4gICAqIEBwYXJhbSBkYXRhIFRoZSBkYXRhIG9mIHRoZSByZWNvcmQgdG8gZGVsZXRlLlxyXG4gICAqIEBwYXJhbSBvYmplY3RJRFRvU2F2ZSBUaGUgb2JqZWN0IElEIG9mIHRoZSByZWNvcmQgdG8gc2F2ZS5cclxuICAgKiBAcmV0dXJucyBBbiBPYnNlcnZhYmxlIGVtaXR0aW5nIHRoZSByZXNwb25zZSBvZiB0aGUgZGVsZXRlIG9wZXJhdGlvbi5cclxuICAgKi9cclxuICBkZWxldGVSZWNvcmQoc2NyZWVuSWQ6IHN0cmluZywgZGF0YTogYW55LCBvYmplY3RJRFRvU2F2ZTogYW55KSB7XHJcbiAgICBsZXQgZmllbGRzO1xyXG4gICAgbGV0IGFwcE9iamVjdDogQXBwT2JqZWN0ID0gbmV3IEFwcE9iamVjdCgpO1xyXG4gICAgbGV0IGNydWRUYWJsZU5hbWUgPSAnJztcclxuICAgIGlmIChzY3JlZW5JZCkge1xyXG4gICAgICAvLyBSZXRyaWV2ZSBzY3JlZW4gaW5mb3JtYXRpb24gYW5kIGZpZWxkc1xyXG4gICAgICBjb25zdCBzY3JlZW46IEFwcFNjcmVlbiA9IHRoaXMuc2NyZWVuSGVscGVyLmdldFNjcmVlbihzY3JlZW5JZCk7XHJcbiAgICAgIGNvbnN0IHNjcmVlbkRhdGFTb3VyY2UgPSB0aGlzLm1ldGFkYXRhSGVscGVyLmdldERhdGFTb3VyY2VRdWVyeUJ5SWRPck5hbWUoc2NyZWVuLkRhdGFTb3VyY2VRdWVyeSk7XHJcbiAgICAgIGNvbnN0IGFwcE9iamVjdE1vZGVsID0gdGhpcy5tZXRhZGF0YUhlbHBlci5nZXRBcHBPYmplY3RCeUlkT3JOYW1lKHNjcmVlbkRhdGFTb3VyY2U/Lk9iamVjdElEIHx8ICcnKTtcclxuICAgICAgYXBwT2JqZWN0ID0gYXBwT2JqZWN0TW9kZWw/LnRvSlNPTigpO1xyXG4gICAgICBjcnVkVGFibGVOYW1lID0gYXBwT2JqZWN0TW9kZWw/LlN5c3RlbURCVGFibGVOYW1lID8/ICcnO1xyXG4gICAgICBmaWVsZHMgPSBzY3JlZW5EYXRhU291cmNlPy5maWVsZHMoKT8ubWFwKChmaWVsZDogYW55KSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgIC4uLmZpZWxkLFxyXG4gICAgICAgICAgRmllbGQ6IGZpZWxkLkZpZWxkXHJcbiAgICAgICAgfTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBpZiAob2JqZWN0SURUb1NhdmUpIHtcclxuICAgICAgLy8gUmV0cmlldmUgZmllbGRzIGJhc2VkIG9uIG9iamVjdCBJRFxyXG4gICAgICBmaWVsZHMgPSBbXTtcclxuICAgICAgY29uc3QgYXBwT2JqZWN0TW9kZWwgPSB0aGlzLm1ldGFkYXRhSGVscGVyLmdldEFwcE9iamVjdEJ5SWRPck5hbWUob2JqZWN0SURUb1NhdmUpO1xyXG4gICAgICBhcHBPYmplY3QgPSBhcHBPYmplY3RNb2RlbD8udG9KU09OKCk7XHJcbiAgICAgIGFwcE9iamVjdE1vZGVsPy5maWVsZHMoKS5mb3JFYWNoKGVsZW1lbnQgPT4ge1xyXG4gICAgICAgIGZpZWxkcy5wdXNoKHsgRmllbGQ6IGVsZW1lbnQgfSlcclxuICAgICAgfSk7XHJcbiAgICAgIGNydWRUYWJsZU5hbWUgPSBhcHBPYmplY3RNb2RlbD8uU3lzdGVtREJUYWJsZU5hbWUgPz8gJyc7XHJcbiAgICB9XHJcbiAgICBjb25zdCBwcmltYXJ5S2V5RmllbGRzOiBhbnkgPSBnZXRQcmltYXJ5S2V5RmllbGRzKGFwcE9iamVjdCk7XHJcbiAgICBpZiAoYXBwT2JqZWN0ICYmIGNydWRUYWJsZU5hbWUpIHtcclxuICAgICAgbGV0IHdoZXJlQ2xhdXNlOiBhbnkgPSBBUElGaWx0ZXJDcml0ZXJpYTtcclxuICAgICAgaWYgKHByaW1hcnlLZXlGaWVsZHMgJiYgcHJpbWFyeUtleUZpZWxkcy5sZW5ndGggPiAxKSB7XHJcbiAgICAgICAgLy8gQmluZCB3aGVyZSBjbGF1c2UgZm9yIGRlbGV0ZSBvcGVyYXRpb24gd2l0aCBtdWx0aXBsZSBwcmltYXJ5IGtleXNcclxuICAgICAgICB3aGVyZUNsYXVzZSA9IHRoaXMud2hlcmVDbGF1c2VIZWxwZXIuYmluZFdoZXJlQ2xhdXNlRm9yRGVsZXRlV2l0aE11bHRpcGxlUHJpbWFyeUtleXMoZGF0YS5kYXRhLCBwcmltYXJ5S2V5RmllbGRzLCBjcnVkVGFibGVOYW1lKTtcclxuICAgICAgfSBlbHNlIGlmIChwcmltYXJ5S2V5RmllbGRzICYmIHByaW1hcnlLZXlGaWVsZHMubGVuZ3RoID09PSAxKSB7XHJcbiAgICAgICAgLy8gQmluZCB3aGVyZSBjbGF1c2UgZm9yIGRlbGV0ZSBvcGVyYXRpb24gd2l0aCBzaW5nbGUgcHJpbWFyeSBrZXlcclxuICAgICAgICBjb25zdCByZWNvcmRJZCA9IGdldEVkaXRSZWNvcmRJZChkYXRhLmRhdGEsIHByaW1hcnlLZXlGaWVsZHNbMF0/LkZpZWxkTmFtZSk7XHJcbiAgICAgICAgd2hlcmVDbGF1c2UgPSB0aGlzLndoZXJlQ2xhdXNlSGVscGVyLmJpbmRXaGVyZUNsYXVzZUZvckRlbGV0ZShmaWVsZHMsIHJlY29yZElkLCBwcmltYXJ5S2V5RmllbGRzWzBdPy5GaWVsZE5hbWUsIGNydWRUYWJsZU5hbWUpO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnN0IGRhdGFPYmogPSB0aGlzLnJlcXVlc3RSZXNwb25zZUhlbHBlci5kZWxldGVQYXlsb2FkKGNydWRUYWJsZU5hbWUsIHdoZXJlQ2xhdXNlKTtcclxuICAgICAgcmV0dXJuIHRoaXMuZGVsZXRlKGRhdGFPYmopO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBEZWxldGVzIGEgcmVjb3JkIGJ5IHRoZSBzcGVjaWZpZWQgdGFibGUgbmFtZSBhbmQgcHJpbWFyeSBrZXkgdmFsdWUuXHJcbiAgICogQHBhcmFtIHRhYmxlTmFtZSBUaGUgbmFtZSBvZiB0aGUgdGFibGUuXHJcbiAgICogQHBhcmFtIHByaW1hcnlLZXkgVGhlIHByaW1hcnkga2V5IGZpZWxkLlxyXG4gICAqIEBwYXJhbSBwcmltYXJ5S2V5VmFsdWUgVGhlIHZhbHVlIG9mIHRoZSBwcmltYXJ5IGtleS5cclxuICAgKiBAcmV0dXJucyBBbiBPYnNlcnZhYmxlIGVtaXR0aW5nIHRoZSByZXNwb25zZSBvZiB0aGUgZGVsZXRlIG9wZXJhdGlvbi5cclxuICAgKi9cclxuICBkZWxldGVSZWNvcmRCeVRhYmxlKHRhYmxlTmFtZTogc3RyaW5nLCBwcmltYXJ5S2V5OiBzdHJpbmcsIHByaW1hcnlLZXlWYWx1ZTogc3RyaW5nKSB7XHJcbiAgICAvLyBCaW5kIHdoZXJlIGNsYXVzZSBmb3IgZGVsZXRlIG9wZXJhdGlvbiBieSB0YWJsZVxyXG4gICAgY29uc3Qgd2hlcmVDbGF1c2U6IEFQSUZpbHRlckNyaXRlcmlhID0gdGhpcy53aGVyZUNsYXVzZUhlbHBlci5iaW5kV2hlcmVDbGF1c2VGb3JEZWxldGVCeVRhYmxlKHRhYmxlTmFtZSwgcHJpbWFyeUtleSwgcHJpbWFyeUtleVZhbHVlKTtcclxuICAgIGNvbnN0IGRhdGFPYmogPSB0aGlzLnJlcXVlc3RSZXNwb25zZUhlbHBlci5kZWxldGVQYXlsb2FkKHRhYmxlTmFtZSwgd2hlcmVDbGF1c2UpO1xyXG4gICAgcmV0dXJuIHRoaXMuZGVsZXRlKGRhdGFPYmopO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRXhlY3V0ZXMgdGhlIGRlbGV0ZSBvcGVyYXRpb24gdXNpbmcgbmV3IC9yZWNvcmRzL2RlbGV0ZSBlbmRwb2ludCB3aXRoIFNZTkMvQVNZTkMgc3VwcG9ydFxyXG4gICAqIEBwYXJhbSBkYXRhIFRoZSBkZWxldGUgcXVlcnkgcGF5bG9hZCAoTkVXIGZvcm1hdDogeyBlbnRpdHlOYW1lLCB3aGVyZUNsYXVzZSB9KVxyXG4gICAqIEBwYXJhbSBoZWFkZXJzIE9wdGlvbmFsIGhlYWRlcnNcclxuICAgKiBAcmV0dXJucyBBbiBPYnNlcnZhYmxlIGVtaXR0aW5nIHRoZSByZXNwb25zZSBvZiB0aGUgZGVsZXRlIG9wZXJhdGlvblxyXG4gICAqL1xyXG4gIGRlbGV0ZShkYXRhOiBhbnksIGhlYWRlcnM/OiBhbnkpOiBPYnNlcnZhYmxlPENvbW1vbkFwaVJlc3BvbnNlPiB7XHJcbiAgICAvLyBEYXRhIGlzIGFscmVhZHkgaW4gTkVXIGZvcm1hdDogeyBlbnRpdHlOYW1lLCB3aGVyZUNsYXVzZSB9XHJcbiAgICBjb25zdCBoZWFkZXIgPSBnZXRIZWFkZXJzKGhlYWRlcnMpO1xyXG5cclxuICAgIC8vIERFTEVURSB0byBuZXcgZW5kcG9pbnQgd2l0aCBib2R5XHJcbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlLmRlbGV0ZUZyb21TZXJ2aWNlKFxyXG4gICAgICBBUElTZXJ2aWNlcy5jcnVkU2VydmljZSxcclxuICAgICAgQVBJLnJlY29yZHNEZWxldGUsXHJcbiAgICAgIGRhdGEsXHJcbiAgICAgIGhlYWRlclxyXG4gICAgKS5waXBlKFxyXG4gICAgICBzd2l0Y2hNYXAoKHJlc3BvbnNlOiBDb21tb25BcGlSZXNwb25zZSkgPT4ge1xyXG4gICAgICAgIGlmICghcmVzcG9uc2U/LklzU3VjY2Vzcykge1xyXG4gICAgICAgICAgY29uc29sZS5lcnJvcignW1RhYkRlbGV0ZVNlcnZpY2VdIERlbGV0ZSBmYWlsZWQ6JywgcmVzcG9uc2U/LkVycm9ycyk7XHJcbiAgICAgICAgICByZXR1cm4gb2YocmVzcG9uc2UpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gQ0FTRSAxOiBTWU5DIC0gSGFzIHJlc3VsdCBpbW1lZGlhdGVseVxyXG4gICAgICAgIGlmIChyZXNwb25zZT8uUmVzdWx0Py5sZW5ndGgpIHtcclxuICAgICAgICAgIHJldHVybiAgb2Yoe1xyXG4gICAgICAgICAgICAuLi5yZXNwb25zZSxcclxuICAgICAgICAgICAgUmVzdWx0OiByZXNwb25zZT8uUmVzdWx0Py5bMF1cclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gQ0FTRSAyOiBBU1lOQyAtIEhhcyBjb3JyZWxhdGlvbklkXHJcbiAgICAgICAgZWxzZSBpZiAocmVzcG9uc2U/LkNvcnJlbGF0aW9uSWQpIHtcclxuICAgICAgICAgIHJldHVybiB0aGlzLmhhbmRsZUFzeW5jRGVsZXRlKHJlc3BvbnNlKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIENBU0UgMzogVW5rbm93biByZXNwb25zZSBmb3JtYXRcclxuICAgICAgICByZXR1cm4gb2YocmVzcG9uc2UpO1xyXG4gICAgICB9KSxcclxuICAgICAgY2F0Y2hFcnJvcigoZXJyb3IpID0+IHtcclxuICAgICAgICBjb25zb2xlLmVycm9yKCdbVGFiRGVsZXRlU2VydmljZV0gRGVsZXRlIGVycm9yOicsIGVycm9yKTtcclxuICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBlcnJvcik7XHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogSGFuZGxlIGFzeW5jIGRlbGV0ZSAtIHdhaXQgZm9yIFNpZ25hbFIgbm90aWZpY2F0aW9uXHJcbiAgICogQHBhcmFtIHJlc3BvbnNlIEluaXRpYWwgcmVzcG9uc2Ugd2l0aCBjb3JyZWxhdGlvbklkXHJcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZSB3aXRoIHJlc3VsdCBmcm9tIFNpZ25hbFIgbm90aWZpY2F0aW9uXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBoYW5kbGVBc3luY0RlbGV0ZShyZXNwb25zZTogQ29tbW9uQXBpUmVzcG9uc2UpOiBPYnNlcnZhYmxlPENvbW1vbkFwaVJlc3BvbnNlPiB7XHJcbiAgICBjb25zdCBjb3JyZWxhdGlvbklkID0gcmVzcG9uc2U/LkNvcnJlbGF0aW9uSWQ7XHJcblxyXG4gICAgaWYgKCFjb3JyZWxhdGlvbklkKSB7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ1tUYWJEZWxldGVTZXJ2aWNlXSBNaXNzaW5nIGNvcnJlbGF0aW9uSWQgaW4gYXN5bmMgcmVzcG9uc2UnKTtcclxuICAgICAgcmV0dXJuIG9mKHJlc3BvbnNlKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBXYWl0IGZvciBTaWduYWxSIG5vdGlmaWNhdGlvbiB3aXRoIG1hdGNoaW5nIGNvcnJlbGF0aW9uSWRcclxuICAgIHJldHVybiB0aGlzLnNpZ25hbFJTZXJ2aWNlLndhaXRGb3JPcGVyYXRpb24oY29ycmVsYXRpb25JZCkucGlwZShcclxuICAgICAgbWFwKChub3RpZmljYXRpb24pID0+IHtcclxuICAgICAgICAvLyBDaGVjayBpZiBvcGVyYXRpb24gc3VjY2VlZGVkXHJcbiAgICAgICAgaWYgKCFub3RpZmljYXRpb24uaXNTdWNjZXNzKSB7XHJcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3Iobm90aWZpY2F0aW9uLmVycm9yTWVzc2FnZSB8fCAnRGVsZXRlIG9wZXJhdGlvbiBmYWlsZWQnKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIFJldHVybiByZXNwb25zZSB3aXRoIHJlc3VsdCBmcm9tIG5vdGlmaWNhdGlvblxyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAuLi5yZXNwb25zZSxcclxuICAgICAgICAgIFJlc3VsdDogbm90aWZpY2F0aW9uLnJlc3VsdD8uWzBdLFxyXG4gICAgICAgICAgUmVjb3JkQWZmZWN0dGVkOiBub3RpZmljYXRpb24uYWZmZWN0ZWRSZWNvcmRzIHx8IDBcclxuICAgICAgICB9O1xyXG4gICAgICB9KSxcclxuICAgICAgY2F0Y2hFcnJvcigoZXJyb3IpID0+IHtcclxuICAgICAgICBpZiAoZXJyb3IubWVzc2FnZSA9PT0gJ09wZXJhdGlvbiB0aW1lZCBvdXQnKSB7XHJcbiAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBuZXcgRXJyb3IoXHJcbiAgICAgICAgICAgICdEZWxldGUgb3BlcmF0aW9uIHRpbWVkIG91dC4gVGhlIG9wZXJhdGlvbiBtYXkgc3RpbGwgY29tcGxldGUgaW4gdGhlIGJhY2tncm91bmQuIFBsZWFzZSByZWZyZXNoIHRvIHNlZSB0aGUgcmVzdWx0LidcclxuICAgICAgICAgICkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBlcnJvcik7XHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRGlzcGxheXMgYSBkZWxldGUgY29uZmlybWF0aW9uIHBvcHVwLlxyXG4gICAqIEByZXR1cm5zIFRydWUgaWYgdGhlIHVzZXIgY29uZmlybXMgdGhlIGRlbGV0ZSBvcGVyYXRpb24sIG90aGVyd2lzZSBmYWxzZS5cclxuICAgKi9cclxuICBkZWxldGVSZWNvcmRQb3B1cCgpIHtcclxuICAgIGNvbnN0IHRleHQgPSBcIllvdSBhcmUgZ29pbmcgdG8gZGVsZXRlIHNlbGVjdGVkIHJlY29yZC4gQXJlIHlvdSBzdXJlIHdhbnQgdG8gZGVsZXRlIHRoZSBzYW1lP1wiO1xyXG4gICAgaWYgKGNvbmZpcm0odGV4dCkgPT0gdHJ1ZSkge1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIERlbGV0ZXMgbXVsdGlwbGUgcmVjb3JkcyBieSB0YWJsZSBuYW1lIGFuZCB2YWx1ZXMuXHJcbiAgICogQHBhcmFtIHRhYmxlTmFtZSBUaGUgbmFtZSBvZiB0aGUgdGFibGUuXHJcbiAgICogQHBhcmFtIHZhbHVlcyBUaGUgdmFsdWVzIG9mIHRoZSByZWNvcmRzIHRvIGRlbGV0ZS5cclxuICAgKiBAcmV0dXJucyBBbiBPYnNlcnZhYmxlIGVtaXR0aW5nIHRoZSByZXNwb25zZSBvZiB0aGUgZGVsZXRlIG9wZXJhdGlvbi5cclxuICAgKi9cclxuICBkZWxldGVNdWx0aXBsZVJlY29yZEJ5VGFibGUodGFibGVOYW1lOiBzdHJpbmcsIHZhbHVlczogYW55KSB7XHJcbiAgICAvLyBSZXRyaWV2ZSBhcHAgb2JqZWN0IGFuZCBwcmltYXJ5IGtleSBmaWVsZHNcclxuICAgIGNvbnN0IGFwcE9iamVjdE1vZGVsID0gdGhpcy5tZXRhZGF0YUhlbHBlci5nZXRBbGxBcHBPYmplY3RzKG9iaiA9PiBvYmouU3lzdGVtREJUYWJsZU5hbWUgPT09IHRhYmxlTmFtZSlbMF07XHJcbiAgICBjb25zdCBhcHBPYmplY3QgPSBhcHBPYmplY3RNb2RlbD8udG9KU09OKCk7XHJcbiAgICBjb25zdCBwcmltYXJ5S2V5RmllbGRzOiBhbnkgPSBnZXRQcmltYXJ5S2V5RmllbGRzKGFwcE9iamVjdCk7XHJcbiAgICAvLyBHZW5lcmF0ZSB2YWx1ZXMgYXJyYXkgZnJvbSBkYXRhXHJcbiAgICBjb25zdCB2YWx1ZUFycmF5ID0gdGhpcy5nZW5lcmF0ZVZhbHVlc0FycmF5RnJvbURhdGEodmFsdWVzLCBwcmltYXJ5S2V5RmllbGRzWzBdPy5GaWVsZE5hbWUpXHJcbiAgICAvLyBCaW5kIHdoZXJlIGNsYXVzZSBmb3IgZGVsZXRlIG9wZXJhdGlvbiB1c2luZyBJTiBvcGVyYXRvciBieSB0YWJsZVxyXG4gICAgY29uc3Qgd2hlcmVDbGF1c2U6IEFQSUZpbHRlckNyaXRlcmlhID0gdGhpcy53aGVyZUNsYXVzZUhlbHBlci5iaW5kV2hlcmVDbGF1c2VGb3JEZWxldGVVc2luZ0luT3BlcmF0b3JCeVRhYmxlKHRhYmxlTmFtZSwgcHJpbWFyeUtleUZpZWxkc1swXT8uRmllbGROYW1lLCB2YWx1ZUFycmF5KTtcclxuICAgIGNvbnN0IGRhdGFPYmogPSB0aGlzLnJlcXVlc3RSZXNwb25zZUhlbHBlci5kZWxldGVQYXlsb2FkKHRhYmxlTmFtZSwgd2hlcmVDbGF1c2UpO1xyXG4gICAgcmV0dXJuIHRoaXMuZGVsZXRlKGRhdGFPYmopO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRGVsZXRlcyBtdWx0aXBsZSByZWNvcmRzIGZyb20gdGhlIHNwZWNpZmllZCB0YWJsZSBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgZGF0YSBhcnJheS5cclxuICAgKiBUaGUgZGF0YSBhcnJheSBzaG91bGQgY29udGFpbiBrZXktdmFsdWUgcGFpcnMgd2l0aG91dCBwcmltYXJ5IGtleSBpbmZvcm1hdGlvbi5cclxuICAgKiBAcGFyYW0gdGFibGVOYW1lIFRoZSBuYW1lIG9mIHRoZSB0YWJsZS5cclxuICAgKiBAcGFyYW0gdmFsdWVzIFRoZSBhcnJheSBvZiBkYXRhIG9iamVjdHMgdG8gZGVsZXRlLlxyXG4gICAqIEByZXR1cm5zIEFuIE9ic2VydmFibGUgZW1pdHRpbmcgdGhlIHJlc3BvbnNlIG9mIHRoZSBkZWxldGUgb3BlcmF0aW9uLlxyXG4gICAqL1xyXG4gIGRlbGV0ZU11bHRpcGxlUmVjb3JkQnlUYWJsZVdpdGhvdXRQcmltYXJ5S2V5KHRhYmxlTmFtZTogc3RyaW5nLCB2YWx1ZXM6IGFueSAsIGhlYWRlcnM/OiBhbnkpIHtcclxuICAgIC8vIEdlbmVyYXRlIHZhbHVlcyBhcnJheSBmcm9tIGRhdGFcclxuICAgIGNvbnN0IHZhbHVlQXJyYXkgPSB0aGlzLmdlbmVyYXRlVmFsdWVzQXJyYXlGcm9tRGF0YVdpdGhvdXRQcmltYXJ5S2V5KHZhbHVlcyk7ICAgIFxyXG4gICAgLy8gQmluZCB3aGVyZSBjbGF1c2UgZm9yIGRlbGV0ZSBvcGVyYXRpb24gdXNpbmcgSU4gb3BlcmF0b3IgYnkgdGFibGVcclxuICAgIGNvbnN0IHdoZXJlQ2xhdXNlOiBBUElGaWx0ZXJDcml0ZXJpYSA9IHRoaXMud2hlcmVDbGF1c2VIZWxwZXIuYmluZFdoZXJlQ2xhdXNlRm9yRHluYW1pY0RlbGV0ZSh0YWJsZU5hbWUsIHZhbHVlQXJyYXkpO1xyXG4gICAgY29uc3QgZGF0YU9iaiA9IHRoaXMucmVxdWVzdFJlc3BvbnNlSGVscGVyLmRlbGV0ZVBheWxvYWQodGFibGVOYW1lLCB3aGVyZUNsYXVzZSk7XHJcbiAgICByZXR1cm4gdGhpcy5kZWxldGUoZGF0YU9iaiwgaGVhZGVycyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHZW5lcmF0ZXMgYSB2YWx1ZXMgYXJyYXkgZnJvbSB0aGUgZGF0YS5cclxuICAgKiBAcGFyYW0gZGF0YUFycmF5IFRoZSBhcnJheSBvZiBkYXRhLlxyXG4gICAqIEBwYXJhbSBrZXkgVGhlIGtleSB0byBleHRyYWN0IGZyb20gZWFjaCBlbGVtZW50LlxyXG4gICAqIEByZXR1cm5zIFRoZSBhcnJheSBvZiB2YWx1ZXMuXHJcbiAgICovXHJcbiAgZ2VuZXJhdGVWYWx1ZXNBcnJheUZyb21EYXRhKGRhdGFBcnJheTogYW55LCBrZXk6IGFueSkge1xyXG4gICAgY29uc3QgdmFsdWVBcnJheTogYW55ID0gW11cclxuICAgIGlmIChkYXRhQXJyYXkgJiYgZGF0YUFycmF5Lmxlbmd0aCkge1xyXG4gICAgICBkYXRhQXJyYXkuZm9yRWFjaCgoZWxlbWVudDogYW55KSA9PiB7XHJcbiAgICAgICAgdmFsdWVBcnJheS5wdXNoKGVsZW1lbnRba2V5XSlcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdmFsdWVBcnJheVxyXG4gIH1cclxuICBcclxuICAvKipcclxuICAgKiBHZW5lcmF0ZXMgYW4gYXJyYXkgb2YgdmFsdWVzIGZyb20gdGhlIHByb3ZpZGVkIGRhdGEgYXJyYXkuXHJcbiAgICogRWFjaCBlbnRyeSBpbiB0aGUgcmV0dXJuZWQgYXJyYXkgaW5jbHVkZXMga2V5LXZhbHVlIHBhaXJzIGZyb20gdGhlIGRhdGEgb2JqZWN0cyxcclxuICAgKiBhbmQgYW4gYXNzb2NpYXRlZCBHcm91cElEIGluZGljYXRpbmcgdGhlIGluZGV4IG9mIHRoZSBkYXRhIG9iamVjdC5cclxuICAgKiBcclxuICAgKiBAcGFyYW0gZGF0YUFycmF5IEFuIGFycmF5IG9mIGRhdGEgb2JqZWN0cy5cclxuICAgKiBAcmV0dXJucyBBbiBhcnJheSBjb250YWluaW5nIG9iamVjdHMgd2l0aCBrZXlzLCB2YWx1ZXMsIGFuZCBncm91cCBpbmRpY2VzLlxyXG4gICAqL1xyXG4gIGdlbmVyYXRlVmFsdWVzQXJyYXlGcm9tRGF0YVdpdGhvdXRQcmltYXJ5S2V5KGRhdGFBcnJheTogYW55KSB7XHJcbiAgICBjb25zdCB2YWx1ZUFycmF5OiBhbnkgPSBbXTtcclxuICAgIC8vIENoZWNrIGlmIHRoZSBpbnB1dCBkYXRhIGFycmF5IGlzIHZhbGlkIGFuZCBoYXMgZWxlbWVudHNcclxuICAgIGlmIChkYXRhQXJyYXkgJiYgZGF0YUFycmF5Lmxlbmd0aCkge1xyXG4gICAgICAvLyBJdGVyYXRlIG92ZXIgZWFjaCBlbGVtZW50IGluIHRoZSBkYXRhIGFycmF5XHJcbiAgICAgIGRhdGFBcnJheS5mb3JFYWNoKChlbGVtZW50OiBhbnksIGluZGV4OiBudW1iZXIpID0+IHtcclxuICAgICAgICAvLyBFbnN1cmUgdGhlIGVsZW1lbnQgaXMgYW4gb2JqZWN0XHJcbiAgICAgICAgaWYgKGVsZW1lbnQgJiYgdHlwZW9mIGVsZW1lbnQgPT09ICdvYmplY3QnKSB7XHJcbiAgICAgICAgICAvLyBJdGVyYXRlIG92ZXIgZWFjaCBrZXktdmFsdWUgcGFpciBpbiB0aGUgb2JqZWN0XHJcbiAgICAgICAgICBPYmplY3QuZW50cmllcyhlbGVtZW50KS5mb3JFYWNoKChba2V5LCB2YWx1ZV0pID0+IHtcclxuICAgICAgICAgICAgLy8gUHVzaCBhbiBvYmplY3QgY29udGFpbmluZyB0aGUga2V5LCB2YWx1ZSwgYW5kIGluZGV4IGFzIEdyb3VwSUQgdG8gdmFsdWVBcnJheVxyXG4gICAgICAgICAgICB2YWx1ZUFycmF5LnB1c2goeyBcclxuICAgICAgICAgICAgICBrZXk6IGtleSxcclxuICAgICAgICAgICAgICB2YWx1ZTogdmFsdWUsXHJcbiAgICAgICAgICAgICAgR3JvdXBJRDogaW5kZXhcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHZhbHVlQXJyYXk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
247
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.21", ngImport: i0, type: TabDeleteService, decorators: [{
|
|
248
|
+
type: Injectable,
|
|
249
|
+
args: [{ providedIn: 'root' }]
|
|
250
|
+
}] });
|
|
251
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiLWRlbGV0ZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9kYXRhLWFjY2Vzcy9zcmMvbGliL3RhYi1jb3JlLXV0aWxpdHkvYXBwL2NydWQvdGFiLWRlbGV0ZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHVEQUF1RDtBQUV2RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQWMsRUFBRSxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNsRCxPQUFPLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM1RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDaEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDM0UsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDMUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxTQUFTLEVBQWEsTUFBTSw0QkFBNEIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsZUFBZSxFQUFFLG1CQUFtQixFQUFFLFVBQVUsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3pGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzlELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUNoRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFDNUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxXQUFXLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7QUFJOUQsTUFBTSxPQUFPLGdCQUFnQjtJQUQ3QjtRQUVtQixpQkFBWSxHQUFHLE1BQU0sQ0FBQyxZQUFZ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LEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cclxuXHJcbmltcG9ydCB7IEluamVjdGFibGUsIGluamVjdCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mLCB0aHJvd0Vycm9yIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IHN3aXRjaE1hcCwgbWFwLCBjYXRjaEVycm9yIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBTY3JlZW5IZWxwZXIgfSBmcm9tIFwiLi4vaGVscGVycy9zY3JlZW4vc2NyZWVuLmhlbHBlcnNcIjtcclxuaW1wb3J0IHsgV2hlcmVDbGF1c2VIZWxwZXIgfSBmcm9tIFwiLi4vaGVscGVycy9jb21tb24vd2hlcmUtY2xhdXNlLmhlbHBlcnNcIjtcclxuaW1wb3J0IHsgUmVxdWVzdFJlc3BvbnNlSGVscGVyIH0gZnJvbSBcIi4uL2hlbHBlcnMvY29tbW9uL3JlcS1yZXMuaGVscGVyc1wiO1xyXG5pbXBvcnQgeyBNZXRhZGF0YUhlbHBlciB9IGZyb20gXCIuLi9oZWxwZXJzL2NvbW1vbi9tZXRhLWRhdGEuaGVscGVyc1wiO1xyXG5pbXBvcnQgeyBBcHBPYmplY3QsIEFwcFNjcmVlbiB9IGZyb20gXCIuLi9tb2RlbHMvYXBwLW9iamVjdC5jbGFzc1wiO1xyXG5pbXBvcnQgeyBnZXRFZGl0UmVjb3JkSWQsIGdldFByaW1hcnlLZXlGaWVsZHMsIGdldEhlYWRlcnMgfSBmcm9tIFwiLi4vdXRpbHMvcmVxLXJlcy51dGlsXCI7XHJcbmltcG9ydCB7IEFQSUZpbHRlckNyaXRlcmlhIH0gZnJvbSBcIi4uL21vZGVscy9hcGktcXVlcnkuY2xhc3NcIjtcclxuaW1wb3J0IHsgQXBpU2VydmljZSB9IGZyb20gJy4uLy4uL2NvcmUvaHR0cC1jbGllbnQvYXBpLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTaWduYWxSU2VydmljZSB9IGZyb20gJy4uLy4uL2NvcmUvc2VydmljZS9zaWduYWxyL3NpZ25hbHIuc2VydmljZSc7XHJcbmltcG9ydCB7IEFQSSwgQVBJU2VydmljZXMgfSBmcm9tICcuLi9jb25zdGFudHMvYXBpLWNvbnN0YW50cyc7XHJcbmltcG9ydCB7IENvbW1vbkFwaVJlc3BvbnNlIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9jb21tb24uaW50ZXJmYWNlJztcclxuXHJcbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXHJcbmV4cG9ydCBjbGFzcyBUYWJEZWxldGVTZXJ2aWNlIHtcclxuICBwcml2YXRlIHJlYWRvbmx5IHNjcmVlbkhlbHBlciA9IGluamVjdChTY3JlZW5IZWxwZXIpO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgd2hlcmVDbGF1c2VIZWxwZXIgPSBpbmplY3QoV2hlcmVDbGF1c2VIZWxwZXIpO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgcmVxdWVzdFJlc3BvbnNlSGVscGVyID0gaW5qZWN0KFJlcXVlc3RSZXNwb25zZUhlbHBlcik7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBhcGlTZXJ2aWNlID0gaW5qZWN0KEFwaVNlcnZpY2UpO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgc2lnbmFsUlNlcnZpY2UgPSBpbmplY3QoU2lnbmFsUlNlcnZpY2UpO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgbWV0YWRhdGFIZWxwZXIgPSBpbmplY3QoTWV0YWRhdGFIZWxwZXIpO1xyXG5cclxuICAvKipcclxuICAgKiBEZWxldGVzIGEgcmVjb3JkIGJhc2VkIG9uIHRoZSBnaXZlbiBzY3JlZW4gSUQsIGRhdGEsIGFuZCBvYmplY3QgSUQuXHJcbiAgICogQHBhcmFtIHNjcmVlbklkIFRoZSBJRCBvZiB0aGUgc2NyZWVuLlxyXG4gICAqIEBwYXJhbSBkYXRhIFRoZSBkYXRhIG9mIHRoZSByZWNvcmQgdG8gZGVsZXRlLlxyXG4gICAqIEBwYXJhbSBvYmplY3RJRFRvU2F2ZSBUaGUgb2JqZWN0IElEIG9mIHRoZSByZWNvcmQgdG8gc2F2ZS5cclxuICAgKiBAcmV0dXJucyBBbiBPYnNlcnZhYmxlIGVtaXR0aW5nIHRoZSByZXNwb25zZSBvZiB0aGUgZGVsZXRlIG9wZXJhdGlvbi5cclxuICAgKi9cclxuICBkZWxldGVSZWNvcmQoc2NyZWVuSWQ6IHN0cmluZywgZGF0YTogYW55LCBvYmplY3RJRFRvU2F2ZTogYW55KSB7XHJcbiAgICBsZXQgZmllbGRzO1xyXG4gICAgbGV0IGFwcE9iamVjdDogQXBwT2JqZWN0ID0gbmV3IEFwcE9iamVjdCgpO1xyXG4gICAgbGV0IGNydWRUYWJsZU5hbWUgPSAnJztcclxuICAgIGlmIChzY3JlZW5JZCkge1xyXG4gICAgICAvLyBSZXRyaWV2ZSBzY3JlZW4gaW5mb3JtYXRpb24gYW5kIGZpZWxkc1xyXG4gICAgICBjb25zdCBzY3JlZW46IEFwcFNjcmVlbiA9IHRoaXMuc2NyZWVuSGVscGVyLmdldFNjcmVlbihzY3JlZW5JZCk7XHJcbiAgICAgIGNvbnN0IHNjcmVlbkRhdGFTb3VyY2UgPSB0aGlzLm1ldGFkYXRhSGVscGVyLmdldERhdGFTb3VyY2VRdWVyeUJ5SWRPck5hbWUoc2NyZWVuLkRhdGFTb3VyY2VRdWVyeSk7XHJcbiAgICAgIGNvbnN0IGFwcE9iamVjdE1vZGVsID0gdGhpcy5tZXRhZGF0YUhlbHBlci5nZXRBcHBPYmplY3RCeUlkT3JOYW1lKHNjcmVlbkRhdGFTb3VyY2U/Lk9iamVjdElEIHx8ICcnKTtcclxuICAgICAgYXBwT2JqZWN0ID0gYXBwT2JqZWN0TW9kZWw/LnRvSlNPTigpO1xyXG4gICAgICBjcnVkVGFibGVOYW1lID0gYXBwT2JqZWN0TW9kZWw/LlN5c3RlbURCVGFibGVOYW1lID8/ICcnO1xyXG4gICAgICBmaWVsZHMgPSBzY3JlZW5EYXRhU291cmNlPy5maWVsZHMoKT8ubWFwKChmaWVsZDogYW55KSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgIC4uLmZpZWxkLFxyXG4gICAgICAgICAgRmllbGQ6IGZpZWxkLkZpZWxkXHJcbiAgICAgICAgfTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBpZiAob2JqZWN0SURUb1NhdmUpIHtcclxuICAgICAgLy8gUmV0cmlldmUgZmllbGRzIGJhc2VkIG9uIG9iamVjdCBJRFxyXG4gICAgICBmaWVsZHMgPSBbXTtcclxuICAgICAgY29uc3QgYXBwT2JqZWN0TW9kZWwgPSB0aGlzLm1ldGFkYXRhSGVscGVyLmdldEFwcE9iamVjdEJ5SWRPck5hbWUob2JqZWN0SURUb1NhdmUpO1xyXG4gICAgICBhcHBPYmplY3QgPSBhcHBPYmplY3RNb2RlbD8udG9KU09OKCk7XHJcbiAgICAgIGFwcE9iamVjdE1vZGVsPy5maWVsZHMoKS5mb3JFYWNoKGVsZW1lbnQgPT4ge1xyXG4gICAgICAgIGZpZWxkcy5wdXNoKHsgRmllbGQ6IGVsZW1lbnQgfSlcclxuICAgICAgfSk7XHJcbiAgICAgIGNydWRUYWJsZU5hbWUgPSBhcHBPYmplY3RNb2RlbD8uU3lzdGVtREJUYWJsZU5hbWUgPz8gJyc7XHJcbiAgICB9XHJcbiAgICBjb25zdCBwcmltYXJ5S2V5RmllbGRzOiBhbnkgPSBnZXRQcmltYXJ5S2V5RmllbGRzKGFwcE9iamVjdCk7XHJcbiAgICBpZiAoYXBwT2JqZWN0ICYmIGNydWRUYWJsZU5hbWUpIHtcclxuICAgICAgbGV0IHdoZXJlQ2xhdXNlOiBhbnkgPSBBUElGaWx0ZXJDcml0ZXJpYTtcclxuICAgICAgaWYgKHByaW1hcnlLZXlGaWVsZHMgJiYgcHJpbWFyeUtleUZpZWxkcy5sZW5ndGggPiAxKSB7XHJcbiAgICAgICAgLy8gQmluZCB3aGVyZSBjbGF1c2UgZm9yIGRlbGV0ZSBvcGVyYXRpb24gd2l0aCBtdWx0aXBsZSBwcmltYXJ5IGtleXNcclxuICAgICAgICB3aGVyZUNsYXVzZSA9IHRoaXMud2hlcmVDbGF1c2VIZWxwZXIuYmluZFdoZXJlQ2xhdXNlRm9yRGVsZXRlV2l0aE11bHRpcGxlUHJpbWFyeUtleXMoZGF0YS5kYXRhLCBwcmltYXJ5S2V5RmllbGRzLCBjcnVkVGFibGVOYW1lKTtcclxuICAgICAgfSBlbHNlIGlmIChwcmltYXJ5S2V5RmllbGRzICYmIHByaW1hcnlLZXlGaWVsZHMubGVuZ3RoID09PSAxKSB7XHJcbiAgICAgICAgLy8gQmluZCB3aGVyZSBjbGF1c2UgZm9yIGRlbGV0ZSBvcGVyYXRpb24gd2l0aCBzaW5nbGUgcHJpbWFyeSBrZXlcclxuICAgICAgICBjb25zdCByZWNvcmRJZCA9IGdldEVkaXRSZWNvcmRJZChkYXRhLmRhdGEsIHByaW1hcnlLZXlGaWVsZHNbMF0/LkZpZWxkTmFtZSk7XHJcbiAgICAgICAgd2hlcmVDbGF1c2UgPSB0aGlzLndoZXJlQ2xhdXNlSGVscGVyLmJpbmRXaGVyZUNsYXVzZUZvckRlbGV0ZShmaWVsZHMsIHJlY29yZElkLCBwcmltYXJ5S2V5RmllbGRzWzBdPy5GaWVsZE5hbWUsIGNydWRUYWJsZU5hbWUpO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnN0IGRhdGFPYmogPSB0aGlzLnJlcXVlc3RSZXNwb25zZUhlbHBlci5kZWxldGVQYXlsb2FkKGNydWRUYWJsZU5hbWUsIHdoZXJlQ2xhdXNlKTtcclxuICAgICAgcmV0dXJuIHRoaXMuZGVsZXRlKGRhdGFPYmopO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBEZWxldGVzIGEgcmVjb3JkIGJ5IHRoZSBzcGVjaWZpZWQgdGFibGUgbmFtZSBhbmQgcHJpbWFyeSBrZXkgdmFsdWUuXHJcbiAgICogQHBhcmFtIHRhYmxlTmFtZSBUaGUgbmFtZSBvZiB0aGUgdGFibGUuXHJcbiAgICogQHBhcmFtIHByaW1hcnlLZXkgVGhlIHByaW1hcnkga2V5IGZpZWxkLlxyXG4gICAqIEBwYXJhbSBwcmltYXJ5S2V5VmFsdWUgVGhlIHZhbHVlIG9mIHRoZSBwcmltYXJ5IGtleS5cclxuICAgKiBAcmV0dXJucyBBbiBPYnNlcnZhYmxlIGVtaXR0aW5nIHRoZSByZXNwb25zZSBvZiB0aGUgZGVsZXRlIG9wZXJhdGlvbi5cclxuICAgKi9cclxuICBkZWxldGVSZWNvcmRCeVRhYmxlKHRhYmxlTmFtZTogc3RyaW5nLCBwcmltYXJ5S2V5OiBzdHJpbmcsIHByaW1hcnlLZXlWYWx1ZTogc3RyaW5nKSB7XHJcbiAgICAvLyBCaW5kIHdoZXJlIGNsYXVzZSBmb3IgZGVsZXRlIG9wZXJhdGlvbiBieSB0YWJsZVxyXG4gICAgY29uc3Qgd2hlcmVDbGF1c2U6IEFQSUZpbHRlckNyaXRlcmlhID0gdGhpcy53aGVyZUNsYXVzZUhlbHBlci5iaW5kV2hlcmVDbGF1c2VGb3JEZWxldGVCeVRhYmxlKHRhYmxlTmFtZSwgcHJpbWFyeUtleSwgcHJpbWFyeUtleVZhbHVlKTtcclxuICAgIGNvbnN0IGRhdGFPYmogPSB0aGlzLnJlcXVlc3RSZXNwb25zZUhlbHBlci5kZWxldGVQYXlsb2FkKHRhYmxlTmFtZSwgd2hlcmVDbGF1c2UpO1xyXG4gICAgcmV0dXJuIHRoaXMuZGVsZXRlKGRhdGFPYmopO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRXhlY3V0ZXMgdGhlIGRlbGV0ZSBvcGVyYXRpb24gdXNpbmcgbmV3IC9yZWNvcmRzL2RlbGV0ZSBlbmRwb2ludCB3aXRoIFNZTkMvQVNZTkMgc3VwcG9ydFxyXG4gICAqIEBwYXJhbSBkYXRhIFRoZSBkZWxldGUgcXVlcnkgcGF5bG9hZCAoTkVXIGZvcm1hdDogeyBlbnRpdHlOYW1lLCB3aGVyZUNsYXVzZSB9KVxyXG4gICAqIEBwYXJhbSBoZWFkZXJzIE9wdGlvbmFsIGhlYWRlcnNcclxuICAgKiBAcmV0dXJucyBBbiBPYnNlcnZhYmxlIGVtaXR0aW5nIHRoZSByZXNwb25zZSBvZiB0aGUgZGVsZXRlIG9wZXJhdGlvblxyXG4gICAqL1xyXG4gIGRlbGV0ZShkYXRhOiBhbnksIGhlYWRlcnM/OiBhbnkpOiBPYnNlcnZhYmxlPENvbW1vbkFwaVJlc3BvbnNlPiB7XHJcbiAgICAvLyBEYXRhIGlzIGFscmVhZHkgaW4gTkVXIGZvcm1hdDogeyBlbnRpdHlOYW1lLCB3aGVyZUNsYXVzZSB9XHJcbiAgICBjb25zdCBoZWFkZXIgPSBnZXRIZWFkZXJzKGhlYWRlcnMpO1xyXG5cclxuICAgIC8vIERFTEVURSB0byBuZXcgZW5kcG9pbnQgd2l0aCBib2R5XHJcbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlLmRlbGV0ZUZyb21TZXJ2aWNlKFxyXG4gICAgICBBUElTZXJ2aWNlcy5jcnVkU2VydmljZSxcclxuICAgICAgQVBJLnJlY29yZHNEZWxldGUsXHJcbiAgICAgIGRhdGEsXHJcbiAgICAgIGhlYWRlclxyXG4gICAgKS5waXBlKFxyXG4gICAgICBzd2l0Y2hNYXAoKHJlc3BvbnNlOiBDb21tb25BcGlSZXNwb25zZSkgPT4ge1xyXG4gICAgICAgIGlmICghcmVzcG9uc2U/LklzU3VjY2Vzcykge1xyXG4gICAgICAgICAgY29uc29sZS5lcnJvcignW1RhYkRlbGV0ZVNlcnZpY2VdIERlbGV0ZSBmYWlsZWQ6JywgcmVzcG9uc2U/LkVycm9ycyk7XHJcbiAgICAgICAgICByZXR1cm4gb2YocmVzcG9uc2UpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gQ0FTRSAxOiBTWU5DIC0gSGFzIHJlc3VsdCBpbW1lZGlhdGVseVxyXG4gICAgICAgIGlmIChyZXNwb25zZT8uUmVzdWx0Py5sZW5ndGgpIHtcclxuICAgICAgICAgIHJldHVybiAgb2Yoe1xyXG4gICAgICAgICAgICAuLi5yZXNwb25zZSxcclxuICAgICAgICAgICAgUmVzdWx0OiByZXNwb25zZT8uUmVzdWx0Py5bMF1cclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gQ0FTRSAyOiBBU1lOQyAtIEhhcyBjb3JyZWxhdGlvbklkXHJcbiAgICAgICAgZWxzZSBpZiAocmVzcG9uc2U/LkNvcnJlbGF0aW9uSWQpIHtcclxuICAgICAgICAgIHJldHVybiB0aGlzLmhhbmRsZUFzeW5jRGVsZXRlKHJlc3BvbnNlKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIENBU0UgMzogVW5rbm93biByZXNwb25zZSBmb3JtYXRcclxuICAgICAgICByZXR1cm4gb2YocmVzcG9uc2UpO1xyXG4gICAgICB9KSxcclxuICAgICAgY2F0Y2hFcnJvcigoZXJyb3IpID0+IHtcclxuICAgICAgICBjb25zb2xlLmVycm9yKCdbVGFiRGVsZXRlU2VydmljZV0gRGVsZXRlIGVycm9yOicsIGVycm9yKTtcclxuICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBlcnJvcik7XHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogSGFuZGxlIGFzeW5jIGRlbGV0ZSAtIHdhaXQgZm9yIFNpZ25hbFIgbm90aWZpY2F0aW9uXHJcbiAgICogQHBhcmFtIHJlc3BvbnNlIEluaXRpYWwgcmVzcG9uc2Ugd2l0aCBjb3JyZWxhdGlvbklkXHJcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZSB3aXRoIHJlc3VsdCBmcm9tIFNpZ25hbFIgbm90aWZpY2F0aW9uXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBoYW5kbGVBc3luY0RlbGV0ZShyZXNwb25zZTogQ29tbW9uQXBpUmVzcG9uc2UpOiBPYnNlcnZhYmxlPENvbW1vbkFwaVJlc3BvbnNlPiB7XHJcbiAgICBjb25zdCBjb3JyZWxhdGlvbklkID0gcmVzcG9uc2U/LkNvcnJlbGF0aW9uSWQ7XHJcblxyXG4gICAgaWYgKCFjb3JyZWxhdGlvbklkKSB7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ1tUYWJEZWxldGVTZXJ2aWNlXSBNaXNzaW5nIGNvcnJlbGF0aW9uSWQgaW4gYXN5bmMgcmVzcG9uc2UnKTtcclxuICAgICAgcmV0dXJuIG9mKHJlc3BvbnNlKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBXYWl0IGZvciBTaWduYWxSIG5vdGlmaWNhdGlvbiB3aXRoIG1hdGNoaW5nIGNvcnJlbGF0aW9uSWRcclxuICAgIHJldHVybiB0aGlzLnNpZ25hbFJTZXJ2aWNlLndhaXRGb3JPcGVyYXRpb24oY29ycmVsYXRpb25JZCkucGlwZShcclxuICAgICAgbWFwKChub3RpZmljYXRpb24pID0+IHtcclxuICAgICAgICAvLyBDaGVjayBpZiBvcGVyYXRpb24gc3VjY2VlZGVkXHJcbiAgICAgICAgaWYgKCFub3RpZmljYXRpb24uaXNTdWNjZXNzKSB7XHJcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3Iobm90aWZpY2F0aW9uLmVycm9yTWVzc2FnZSB8fCAnRGVsZXRlIG9wZXJhdGlvbiBmYWlsZWQnKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIFJldHVybiByZXNwb25zZSB3aXRoIHJlc3VsdCBmcm9tIG5vdGlmaWNhdGlvblxyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAuLi5yZXNwb25zZSxcclxuICAgICAgICAgIFJlc3VsdDogbm90aWZpY2F0aW9uLnJlc3VsdD8uWzBdLFxyXG4gICAgICAgICAgUmVjb3JkQWZmZWN0dGVkOiBub3RpZmljYXRpb24uYWZmZWN0ZWRSZWNvcmRzIHx8IDBcclxuICAgICAgICB9O1xyXG4gICAgICB9KSxcclxuICAgICAgY2F0Y2hFcnJvcigoZXJyb3IpID0+IHtcclxuICAgICAgICBpZiAoZXJyb3IubWVzc2FnZSA9PT0gJ09wZXJhdGlvbiB0aW1lZCBvdXQnKSB7XHJcbiAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBuZXcgRXJyb3IoXHJcbiAgICAgICAgICAgICdEZWxldGUgb3BlcmF0aW9uIHRpbWVkIG91dC4gVGhlIG9wZXJhdGlvbiBtYXkgc3RpbGwgY29tcGxldGUgaW4gdGhlIGJhY2tncm91bmQuIFBsZWFzZSByZWZyZXNoIHRvIHNlZSB0aGUgcmVzdWx0LidcclxuICAgICAgICAgICkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBlcnJvcik7XHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRGlzcGxheXMgYSBkZWxldGUgY29uZmlybWF0aW9uIHBvcHVwLlxyXG4gICAqIEByZXR1cm5zIFRydWUgaWYgdGhlIHVzZXIgY29uZmlybXMgdGhlIGRlbGV0ZSBvcGVyYXRpb24sIG90aGVyd2lzZSBmYWxzZS5cclxuICAgKi9cclxuICBkZWxldGVSZWNvcmRQb3B1cCgpIHtcclxuICAgIGNvbnN0IHRleHQgPSBcIllvdSBhcmUgZ29pbmcgdG8gZGVsZXRlIHNlbGVjdGVkIHJlY29yZC4gQXJlIHlvdSBzdXJlIHdhbnQgdG8gZGVsZXRlIHRoZSBzYW1lP1wiO1xyXG4gICAgaWYgKGNvbmZpcm0odGV4dCkgPT0gdHJ1ZSkge1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIERlbGV0ZXMgbXVsdGlwbGUgcmVjb3JkcyBieSB0YWJsZSBuYW1lIGFuZCB2YWx1ZXMuXHJcbiAgICogQHBhcmFtIHRhYmxlTmFtZSBUaGUgbmFtZSBvZiB0aGUgdGFibGUuXHJcbiAgICogQHBhcmFtIHZhbHVlcyBUaGUgdmFsdWVzIG9mIHRoZSByZWNvcmRzIHRvIGRlbGV0ZS5cclxuICAgKiBAcmV0dXJucyBBbiBPYnNlcnZhYmxlIGVtaXR0aW5nIHRoZSByZXNwb25zZSBvZiB0aGUgZGVsZXRlIG9wZXJhdGlvbi5cclxuICAgKi9cclxuICBkZWxldGVNdWx0aXBsZVJlY29yZEJ5VGFibGUodGFibGVOYW1lOiBzdHJpbmcsIHZhbHVlczogYW55KSB7XHJcbiAgICAvLyBSZXRyaWV2ZSBhcHAgb2JqZWN0IGFuZCBwcmltYXJ5IGtleSBmaWVsZHNcclxuICAgIGNvbnN0IGFwcE9iamVjdE1vZGVsID0gdGhpcy5tZXRhZGF0YUhlbHBlci5nZXRBbGxBcHBPYmplY3RzKG9iaiA9PiBvYmouU3lzdGVtREJUYWJsZU5hbWUgPT09IHRhYmxlTmFtZSlbMF07XHJcbiAgICBjb25zdCBhcHBPYmplY3QgPSBhcHBPYmplY3RNb2RlbD8udG9KU09OKCk7XHJcbiAgICBjb25zdCBwcmltYXJ5S2V5RmllbGRzOiBhbnkgPSBnZXRQcmltYXJ5S2V5RmllbGRzKGFwcE9iamVjdCk7XHJcbiAgICAvLyBHZW5lcmF0ZSB2YWx1ZXMgYXJyYXkgZnJvbSBkYXRhXHJcbiAgICBjb25zdCB2YWx1ZUFycmF5ID0gdGhpcy5nZW5lcmF0ZVZhbHVlc0FycmF5RnJvbURhdGEodmFsdWVzLCBwcmltYXJ5S2V5RmllbGRzWzBdPy5GaWVsZE5hbWUpXHJcbiAgICAvLyBCaW5kIHdoZXJlIGNsYXVzZSBmb3IgZGVsZXRlIG9wZXJhdGlvbiB1c2luZyBJTiBvcGVyYXRvciBieSB0YWJsZVxyXG4gICAgY29uc3Qgd2hlcmVDbGF1c2U6IEFQSUZpbHRlckNyaXRlcmlhID0gdGhpcy53aGVyZUNsYXVzZUhlbHBlci5iaW5kV2hlcmVDbGF1c2VGb3JEZWxldGVVc2luZ0luT3BlcmF0b3JCeVRhYmxlKHRhYmxlTmFtZSwgcHJpbWFyeUtleUZpZWxkc1swXT8uRmllbGROYW1lLCB2YWx1ZUFycmF5KTtcclxuICAgIGNvbnN0IGRhdGFPYmogPSB0aGlzLnJlcXVlc3RSZXNwb25zZUhlbHBlci5kZWxldGVQYXlsb2FkKHRhYmxlTmFtZSwgd2hlcmVDbGF1c2UpO1xyXG4gICAgcmV0dXJuIHRoaXMuZGVsZXRlKGRhdGFPYmopO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRGVsZXRlcyBtdWx0aXBsZSByZWNvcmRzIGZyb20gdGhlIHNwZWNpZmllZCB0YWJsZSBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgZGF0YSBhcnJheS5cclxuICAgKiBUaGUgZGF0YSBhcnJheSBzaG91bGQgY29udGFpbiBrZXktdmFsdWUgcGFpcnMgd2l0aG91dCBwcmltYXJ5IGtleSBpbmZvcm1hdGlvbi5cclxuICAgKiBAcGFyYW0gdGFibGVOYW1lIFRoZSBuYW1lIG9mIHRoZSB0YWJsZS5cclxuICAgKiBAcGFyYW0gdmFsdWVzIFRoZSBhcnJheSBvZiBkYXRhIG9iamVjdHMgdG8gZGVsZXRlLlxyXG4gICAqIEByZXR1cm5zIEFuIE9ic2VydmFibGUgZW1pdHRpbmcgdGhlIHJlc3BvbnNlIG9mIHRoZSBkZWxldGUgb3BlcmF0aW9uLlxyXG4gICAqL1xyXG4gIGRlbGV0ZU11bHRpcGxlUmVjb3JkQnlUYWJsZVdpdGhvdXRQcmltYXJ5S2V5KHRhYmxlTmFtZTogc3RyaW5nLCB2YWx1ZXM6IGFueSAsIGhlYWRlcnM/OiBhbnkpIHtcclxuICAgIC8vIEdlbmVyYXRlIHZhbHVlcyBhcnJheSBmcm9tIGRhdGFcclxuICAgIGNvbnN0IHZhbHVlQXJyYXkgPSB0aGlzLmdlbmVyYXRlVmFsdWVzQXJyYXlGcm9tRGF0YVdpdGhvdXRQcmltYXJ5S2V5KHZhbHVlcyk7ICAgIFxyXG4gICAgLy8gQmluZCB3aGVyZSBjbGF1c2UgZm9yIGRlbGV0ZSBvcGVyYXRpb24gdXNpbmcgSU4gb3BlcmF0b3IgYnkgdGFibGVcclxuICAgIGNvbnN0IHdoZXJlQ2xhdXNlOiBBUElGaWx0ZXJDcml0ZXJpYSA9IHRoaXMud2hlcmVDbGF1c2VIZWxwZXIuYmluZFdoZXJlQ2xhdXNlRm9yRHluYW1pY0RlbGV0ZSh0YWJsZU5hbWUsIHZhbHVlQXJyYXkpO1xyXG4gICAgY29uc3QgZGF0YU9iaiA9IHRoaXMucmVxdWVzdFJlc3BvbnNlSGVscGVyLmRlbGV0ZVBheWxvYWQodGFibGVOYW1lLCB3aGVyZUNsYXVzZSk7XHJcbiAgICByZXR1cm4gdGhpcy5kZWxldGUoZGF0YU9iaiwgaGVhZGVycyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHZW5lcmF0ZXMgYSB2YWx1ZXMgYXJyYXkgZnJvbSB0aGUgZGF0YS5cclxuICAgKiBAcGFyYW0gZGF0YUFycmF5IFRoZSBhcnJheSBvZiBkYXRhLlxyXG4gICAqIEBwYXJhbSBrZXkgVGhlIGtleSB0byBleHRyYWN0IGZyb20gZWFjaCBlbGVtZW50LlxyXG4gICAqIEByZXR1cm5zIFRoZSBhcnJheSBvZiB2YWx1ZXMuXHJcbiAgICovXHJcbiAgZ2VuZXJhdGVWYWx1ZXNBcnJheUZyb21EYXRhKGRhdGFBcnJheTogYW55LCBrZXk6IGFueSkge1xyXG4gICAgY29uc3QgdmFsdWVBcnJheTogYW55ID0gW11cclxuICAgIGlmIChkYXRhQXJyYXkgJiYgZGF0YUFycmF5Lmxlbmd0aCkge1xyXG4gICAgICBkYXRhQXJyYXkuZm9yRWFjaCgoZWxlbWVudDogYW55KSA9PiB7XHJcbiAgICAgICAgdmFsdWVBcnJheS5wdXNoKGVsZW1lbnRba2V5XSlcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdmFsdWVBcnJheVxyXG4gIH1cclxuICBcclxuICAvKipcclxuICAgKiBHZW5lcmF0ZXMgYW4gYXJyYXkgb2YgdmFsdWVzIGZyb20gdGhlIHByb3ZpZGVkIGRhdGEgYXJyYXkuXHJcbiAgICogRWFjaCBlbnRyeSBpbiB0aGUgcmV0dXJuZWQgYXJyYXkgaW5jbHVkZXMga2V5LXZhbHVlIHBhaXJzIGZyb20gdGhlIGRhdGEgb2JqZWN0cyxcclxuICAgKiBhbmQgYW4gYXNzb2NpYXRlZCBHcm91cElEIGluZGljYXRpbmcgdGhlIGluZGV4IG9mIHRoZSBkYXRhIG9iamVjdC5cclxuICAgKiBcclxuICAgKiBAcGFyYW0gZGF0YUFycmF5IEFuIGFycmF5IG9mIGRhdGEgb2JqZWN0cy5cclxuICAgKiBAcmV0dXJucyBBbiBhcnJheSBjb250YWluaW5nIG9iamVjdHMgd2l0aCBrZXlzLCB2YWx1ZXMsIGFuZCBncm91cCBpbmRpY2VzLlxyXG4gICAqL1xyXG4gIGdlbmVyYXRlVmFsdWVzQXJyYXlGcm9tRGF0YVdpdGhvdXRQcmltYXJ5S2V5KGRhdGFBcnJheTogYW55KSB7XHJcbiAgICBjb25zdCB2YWx1ZUFycmF5OiBhbnkgPSBbXTtcclxuICAgIC8vIENoZWNrIGlmIHRoZSBpbnB1dCBkYXRhIGFycmF5IGlzIHZhbGlkIGFuZCBoYXMgZWxlbWVudHNcclxuICAgIGlmIChkYXRhQXJyYXkgJiYgZGF0YUFycmF5Lmxlbmd0aCkge1xyXG4gICAgICAvLyBJdGVyYXRlIG92ZXIgZWFjaCBlbGVtZW50IGluIHRoZSBkYXRhIGFycmF5XHJcbiAgICAgIGRhdGFBcnJheS5mb3JFYWNoKChlbGVtZW50OiBhbnksIGluZGV4OiBudW1iZXIpID0+IHtcclxuICAgICAgICAvLyBFbnN1cmUgdGhlIGVsZW1lbnQgaXMgYW4gb2JqZWN0XHJcbiAgICAgICAgaWYgKGVsZW1lbnQgJiYgdHlwZW9mIGVsZW1lbnQgPT09ICdvYmplY3QnKSB7XHJcbiAgICAgICAgICAvLyBJdGVyYXRlIG92ZXIgZWFjaCBrZXktdmFsdWUgcGFpciBpbiB0aGUgb2JqZWN0XHJcbiAgICAgICAgICBPYmplY3QuZW50cmllcyhlbGVtZW50KS5mb3JFYWNoKChba2V5LCB2YWx1ZV0pID0+IHtcclxuICAgICAgICAgICAgLy8gUHVzaCBhbiBvYmplY3QgY29udGFpbmluZyB0aGUga2V5LCB2YWx1ZSwgYW5kIGluZGV4IGFzIEdyb3VwSUQgdG8gdmFsdWVBcnJheVxyXG4gICAgICAgICAgICB2YWx1ZUFycmF5LnB1c2goeyBcclxuICAgICAgICAgICAgICBrZXk6IGtleSxcclxuICAgICAgICAgICAgICB2YWx1ZTogdmFsdWUsXHJcbiAgICAgICAgICAgICAgR3JvdXBJRDogaW5kZXhcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHZhbHVlQXJyYXk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|