@posiwise/common-services 0.1.42 → 0.1.43
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/common.service.mjs +3 -3
- package/esm2022/lib/permission.service.mjs +40 -11
- package/esm2022/lib/sentry.service.mjs +6 -3
- package/fesm2022/posiwise-common-services.mjs +46 -14
- package/fesm2022/posiwise-common-services.mjs.map +1 -1
- package/lib/common.service.d.ts +1 -1
- package/lib/permission.service.d.ts +3 -2
- package/lib/sentry.service.d.ts +1 -1
- package/package.json +1 -1
|
@@ -16,10 +16,10 @@ export class CommonService {
|
|
|
16
16
|
...HelperService.getPagingParams(paging)
|
|
17
17
|
});
|
|
18
18
|
}
|
|
19
|
-
getIncidentsAdmin(paging,
|
|
19
|
+
getIncidentsAdmin(paging, subscriptionId) {
|
|
20
20
|
return this.api.getWithParams(`${INCIDENTS_PATH_ADMIN}/get_all`, {
|
|
21
21
|
...HelperService.getPagingParams(paging),
|
|
22
|
-
subscription_id:
|
|
22
|
+
subscription_id: subscriptionId
|
|
23
23
|
});
|
|
24
24
|
}
|
|
25
25
|
addIncident(data) {
|
|
@@ -131,4 +131,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImpo
|
|
|
131
131
|
providedIn: 'root'
|
|
132
132
|
}]
|
|
133
133
|
}], ctorParameters: () => [{ type: i1.MainApiHttpService }] });
|
|
134
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2NvbW1vbi1zZXJ2aWNlcy9zcmMvbGliL2NvbW1vbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUNILGVBQWUsRUFDZixlQUFlLEVBQ2YscUJBQXFCLEVBQ3JCLFNBQVMsRUFDVCx1QkFBdUIsRUFDdkIsbUJBQW1CLEVBQ25CLGdDQUFnQyxFQUNoQyxjQUFjLEVBQ2Qsb0JBQW9CLEVBQ3BCLGdCQUFnQixFQUNoQiw0QkFBNEIsRUFDNUIsMkJBQTJCLEVBQzNCLGtCQUFrQixFQUNsQixtQkFBbUIsRUFDbkIsdUJBQXVCLEVBRTFCLE1BQU0sNEJBQTRCLENBQUM7QUFDcEMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDOzs7QUFNN0QsTUFBTSxPQUFPLGFBQWE7SUFDdEIsWUFBNkIsR0FBdUI7UUFBdkIsUUFBRyxHQUFILEdBQUcsQ0FBb0I7SUFBRyxDQUFDO0lBRXhELG1CQUFtQixDQUFDLElBQUk7UUFDcEIsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDaEQsQ0FBQztJQUVELFlBQVksQ0FBQyxNQUFlO1FBQ3hCLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsR0FBRyxjQUFjLFVBQVUsRUFBRTtZQUN2RCxHQUFHLGFBQWEsQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDO1NBQzNDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxNQUFlLEVBQUUsYUFBc0I7UUFDckQsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxH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LEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztnQkFDZCxRQUFRLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUNwQyxDQUFDO1FBQ0wsQ0FBQztRQUVELE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxxQkFBcUIsRUFBRSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQy9ELENBQUM7K0dBdktRLGFBQWE7bUhBQWIsYUFBYSxjQUZWLE1BQU07OzRGQUVULGFBQWE7a0JBSHpCLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQge1xuICAgIEFETUlOX0ZBUVNfUEFUSCxcbiAgICBDT05UQUNUX1VTX1BBVEgsXG4gICAgQ1VTVE9NRVJfU1VQUE9SVF9QQVRILFxuICAgIEZBUVNfUEFUSCxcbiAgICBGRUVEQkFDS19RVUVTVElPTlNfUEFUSCxcbiAgICBHTE9CQUxfQ09ORklHU19QQVRILFxuICAgIEdMT0JBTF9TVUJTQ1JJUFRJT05fQ09ORklHU19QQVRILFxuICAgIElOQ0lERU5UU19QQVRILFxuICAgIElOQ0lERU5UU19QQVRIX0FETUlOLFxuICAgIE5FV1NMRVRURVJTX1BBVEgsXG4gICAgTkVXU0xFVFRFUl9TVUJTQ1JJUFRJT05fUEFUSCxcbiAgICBORVdTTEVUVEVSX1VOU1VCU0NSSUJFX1BBVEgsXG4gICAgT1JHQU5JWkFUSU9OU19QQVRILFxuICAgIFVTRVJfRkVFREJBQ0tTX1BBVEgsXG4gICAgVVNFUl9MT0dJTl9OT1RJRklDQVRJT04sXG4gICAgUGFnaW5nXG59IGZyb20gJ0Bwb3Npd2lzZS9jb21tb24tdXRpbGl0aWVzJztcbmltcG9ydCB7IEhlbHBlclNlcnZpY2UgfSBmcm9tICdAcG9zaXdpc2UvaGVscGVyLXNlcnZpY2UnO1xuaW1wb3J0IHsgTWFpbkFwaUh0dHBTZXJ2aWNlIH0gZnJvbSAnLi9tYWluLWFwaS1odHRwLnNlcnZpY2UnO1xuaW1wb3J0IHsgR2V0RmFxUGFyYW1zIH0gZnJvbSAnLi9jb21tb24tc2VydmljZXMuaW50ZXJmYWNlJztcblxuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBDb21tb25TZXJ2aWNlIHtcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IGFwaTogTWFpbkFwaUh0dHBTZXJ2aWNlKSB7fVxuXG4gICAgYWRkQ29udGFjdFVzTWVzc2FnZShkYXRhKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFwaS5wb3N0KENPTlRBQ1RfVVNfUEFUSCwgZGF0YSk7XG4gICAgfVxuXG4gICAgZ2V0SW5jaWRlbnRzKHBhZ2luZz86IFBhZ2luZykge1xuICAgICAgICByZXR1cm4gdGhpcy5hcGkuZ2V0V2l0aFBhcmFtcyhgJHtJTkNJREVOVFNfUEFUSH0vZ2V0X2FsbGAsIHtcbiAgICAgICAgICAgIC4uLkhlbHBlclNlcnZpY2UuZ2V0UGFnaW5nUGFyYW1zKHBhZ2luZylcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgZ2V0SW5jaWRlbnRzQWRtaW4ocGFnaW5nPzogUGFnaW5nLCBzdWJzcmlwdGlvbklkPzogbnVtYmVyKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFwaS5nZXRXaXRoUGFyYW1zKGAke0lOQ0lERU5UU19QQVRIX0FETUlOfS9nZXRfYWxsYCwge1xuICAgICAgICAgICAgLi4uSGVscGVyU2VydmljZS5nZXRQYWdpbmdQYXJhbXMocGFnaW5nKSxcbiAgICAgICAgICAgIHN1YnNjcmlwdGlvbl9pZDogc3Vic3JpcHRpb25JZFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBhZGRJbmNpZGVudChkYXRhKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFwaS5wb3N0KGAke0lOQ0lERU5UU19QQVRIX0FETUlOfWAsIGRhdGEpO1xuICAgIH1cblxuICAgIGVkaXRJbmNpZGVudChpZCwgZGF0YSkge1xuICAgICAgICByZXR1cm4gdGhpcy5hcGkucHV0KGAke0lOQ0lERU5UU19QQVRIX0FETUlOfS8ke2lkfWAsIGRhdGEpO1xuICAgIH1cblxuICAgIGdldEluY2lkZW50QnlJZChpZDogbnVtYmVyLCBzdWJzY3JpcHRpb25faWQpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXBpLmdldChgJHtJTkNJREVOVFNfUEFUSF9BRE1JTn0vJHtpZH0/c3Vic2NyaXB0aW9uX2lkPSR7c3Vic2NyaXB0aW9uX2lkfWApO1xuICAgIH1cblxuICAgIGRlbGV0ZUluY2lkZW50QWRtaW4oaWQ6IG51bWJlciwgc3Vic2NyaXB0aW9uX2lkOiBudW1iZXIpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXBpLmRlbGV0ZShgJHtJTkNJREVOVFNfUEFUSF9BRE1JTn0vJHtpZH0/c3Vic2NyaXB0aW9uX2lkPSR7c3Vic2NyaXB0aW9uX2lkfWApO1xuICAgIH1cbiAgICAvLyBOZXdzbGV0dGVyc1xuXG4gICAgZ2V0QWxsTmV3c2xldHRlcihwYWdpbmc/OiBQYWdpbmcpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXBpLmdldFdpdGhQYXJhbXMoYCR7TkVXU0xFVFRFUlNfUEFUSH0vZ2V0X2FsbGAsIHtcbiAgICAgICAgICAgIHZpc2libGU6IHRydWUsXG4gICAgICAgICAgICAuLi5IZWxwZXJTZXJ2aWNlLmdldFBhZ2luZ1BhcmFtcyhwYWdpbmcpXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHRvZ2dsZU5ld3NsZXR0ZXIobmV3c2xldHRlcklkOiBudW1iZXIsIHBhcmFtKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFwaS5wdXQoYCR7TkVXU0xFVFRFUl9TVUJTQ1JJUFRJT05fUEFUSH0vJHtuZXdzbGV0dGVySWR9L3RvZ2dsZWAsIHBhcmFtKTtcbiAgICB9XG5cbiAgICB1bnN1YnNjcmliZU5ld3NsZXR0ZXIodG9rZW46IHN0cmluZykge1xuICAgICAgICByZXR1cm4gdGhpcy5hcGkuZ2V0KGAvJHtORVdTTEVUVEVSX1VOU1VCU0NSSUJFX1BBVEh9P3Rva2VuPSR7dG9rZW59YCk7XG4gICAgfVxuXG4gICAgLy8gRkFRXG5cbiAgICBnZXRGYXEocGFyYW1zOiBHZXRGYXFQYXJhbXMpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXBpLmdldFdpdGhQYXJhbXMoQURNSU5fRkFRU19QQVRILCB7IC4uLnBhcmFtcyB9KTtcbiAgICB9XG5cbiAgICBnZXRGYXFCeUlkKGlkOiBudW1iZXIsIHN1YnNjcmlwdGlvbl9pZCkge1xuICAgICAgICByZXR1cm4gdGhpcy5hcGkuZ2V0V2l0aFBhcmFtcyhgJHtGQVFTX1BBVEh9LyR7aWR9YCwgeyBzdWJzY3JpcHRpb25faWQgfSk7XG4gICAgfVxuICAgIGdldEZhcUNhdGVnb3JpZXMoc3Vic2NyaXB0aW9uX2lkOiBudW1iZXIpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXBpLmdldFdpdGhQYXJhbXMoYGZhcXMvYXZhaWxhYmxlX2NhdGVnb3JpZXNgLCB7IHN1YnNjcmlwdGlvbl9pZCB9KTtcbiAgICB9XG4gICAgZ2V0UHVibGljRmFxKHN1YnNjcmlwdGlvbl9pZDogbnVtYmVyLCBzZWFyY2hfdGVybSA9ICcnKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFwaS5nZXRXaXRoUGFyYW1zKGAke0ZBUVNfUEFUSH1gLCB7IHN1YnNjcmlwdGlvbl9pZCwgc2VhcmNoX3Rlcm0gfSk7XG4gICAgfVxuXG4gICAgZ2V0UHVibGljRmFxQnlJZChpZDogbnVtYmVyKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFwaS5nZXQoYCR7RkFRU19QQVRIfS8ke2lkfWApO1xuICAgIH1cblxuICAgIC8vIE9yZ2FuaXphdGlvblxuXG4gICAgZ2V0T3JnYW5pemF0aW9uU2l6ZXMocGFnaW5nPzogUGFnaW5nKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFwaS5nZXRXaXRoUGFyYW1zKFxuICAgICAgICAgICAgYCR7T1JHQU5JWkFUSU9OU19QQVRIfS9zaXplcy9nZXRfYWxsYCxcbiAgICAgICAgICAgIEhlbHBlclNlcnZpY2UuZ2V0UGFnaW5nUGFyYW1zKHBhZ2luZylcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBnZXRPcmdhbml6YXRpb25UeXBlcyhwYWdpbmc/OiBQYWdpbmcpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXBpLmdldFdpdGhQYXJhbXMoXG4gICAgICAgICAgICBgJHtPUkdBTklaQVRJT05TX1BBVEh9L3R5cGVzL2dldF9hbGxgLFxuICAgICAgICAgICAgSGVscGVyU2VydmljZS5nZXRQYWdpbmdQYXJhbXMocGFnaW5nKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGdldE9yZ2FuaXphdGlvbkluZHVzdHJpZXMocGFnaW5nPzogUGFnaW5nKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFwaS5nZXRXaXRoUGFyYW1zKFxuICAgICAgICAgICAgYCR7T1JHQU5JWkFUSU9OU19QQVRIfS9pbmR1c3RyaWVzL2dldF9hbGxgLFxuICAgICAgICAgICAgSGVscGVyU2VydmljZS5nZXRQYWdpbmdQYXJhbXMocGFnaW5nKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGdldE9yZ2FuaXphdGlvbkRlcGFydG1lbnRzKHBhZ2luZz86IFBhZ2luZykge1xuICAgICAgICByZXR1cm4gdGhpcy5hcGkuZ2V0V2l0aFBhcmFtcyhcbiAgICAgICAgICAgIGAke09SR0FOSVpBVElPTlNfUEFUSH0vZGVwYXJ0bWVudHMvZ2V0X2FsbGAsXG4gICAgICAgICAgICBIZWxwZXJTZXJ2aWNlLmdldFBhZ2luZ1BhcmFtcyhwYWdpbmcpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLy8gR2xvYmFsIENvbmZpZ1xuXG4gICAgZ2V0QWxsR2xvYmFsU3Vic2NyaXB0aW9uQ29uZmlncyhwYWdpbmc/OiBQYWdpbmcpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXBpLmdldFdpdGhQYXJhbXMoXG4gICAgICAgICAgICBgJHtHTE9CQUxfU1VCU0NSSVBUSU9OX0NPTkZJR1NfUEFUSH0vZ2V0X2FsbD9gLFxuICAgICAgICAgICAgSGVscGVyU2VydmljZS5nZXRQYWdpbmdQYXJhbXMocGFnaW5nKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHBvc3RHbG9iYWxTdWJzY3JpcHRpb25Db25maWcoZGF0YSkge1xuICAgICAgICByZXR1cm4gdGhpcy5hcGkucG9zdChgJHtHTE9CQUxfU1VCU0NSSVBUSU9OX0NPTkZJR1NfUEFUSH1gLCBkYXRhKTtcbiAgICB9XG5cbiAgICBlZGl0R2xvYmFsU3Vic2NyaXB0aW9uQ29uZmlnKGlkOiBudW1iZXIsIGRhdGEpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXBpLnBvc3QoYCR7R0xPQkFMX1NVQlNDUklQVElPTl9DT05GSUdTX1BBVEh9LyR7aWR9YCwgZGF0YSk7XG4gICAgfVxuXG4gICAgZ2V0QWxsR2xvYmFsQ29uZmlncyhwYWdpbmc/OiBQYWdpbmcpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXBpLmdldFdpdGhQYXJhbXMoXG4gICAgICAgICAgICBgJHtHTE9CQUxfQ09ORklHU19QQVRIfS9nZXRfYWxsP2AsXG4gICAgICAgICAgICBIZWxwZXJTZXJ2aWNlLmdldFBhZ2luZ1BhcmFtcyhwYWdpbmcpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLy8gVXNlciBMb2dpbiBOb3RpZmljYXRpb25cblxuICAgIHVzZXJMb2dpbk5vdGlmaWNhdGlvbihkYXRhKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFwaS5wb3N0KGAke1VTRVJfTE9HSU5fTk9USUZJQ0FUSU9OfWAsIGRhdGEpO1xuICAgIH1cblxuICAgIC8vIEN1c3RvbWVyIFNhdGlzZmFjdGlvblxuXG4gICAgZmVlZGJhY2tRdWVzdGlvbnMoc3Vic2NyaXB0aW9uX2lkOiBudW1iZXIpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXBpLmdldChgJHtGRUVEQkFDS19RVUVTVElPTlNfUEFUSH0/c3Vic2NyaXB0aW9uX2lkPSR7c3Vic2NyaXB0aW9uX2lkfWApO1xuICAgIH1cblxuICAgIHVzZXJGZWVkYmFja3MoZGF0YSkge1xuICAgICAgICByZXR1cm4gdGhpcy5hcGkucG9zdChgJHtVU0VSX0ZFRURCQUNLU19QQVRIfWAsIGRhdGEpO1xuICAgIH1cblxuICAgIGdldEFsbFVzZXJGZWVkYmFja3Moc3Vic2NyaXB0aW9uX2lkOiBudW1iZXIsIHBhZ2luZz86IFBhZ2luZykge1xuICAgICAgICByZXR1cm4gdGhpcy5hcGkuZ2V0V2l0aFBhcmFtcyhgJHtVU0VSX0ZFRURCQUNLU19QQVRIfS9nZXRfYWxsYCwge1xuICAgICAgICAgICAgLi4uSGVscGVyU2VydmljZS5nZXRQYWdpbmdQYXJhbXMocGFnaW5nKSxcbiAgICAgICAgICAgIHN1YnNjcmlwdGlvbl9pZFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBnZXRBbGxDdXN0b21lclN1cHBvcnQoc3Vic2NyaXB0aW9uX2lkOiBudW1iZXIsIHBhZ2luZz86IFBhZ2luZykge1xuICAgICAgICByZXR1cm4gdGhpcy5hcGkuZ2V0V2l0aFBhcmFtcyhgJHtDVVNUT01FUl9TVVBQT1JUX1BBVEh9L2dldF9hbGw/YCwge1xuICAgICAgICAgICAgLi4uSGVscGVyU2VydmljZS5nZXRQYWdpbmdQYXJhbXMocGFnaW5nKSxcbiAgICAgICAgICAgIHN1YnNjcmlwdGlvbl9pZFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwb3N0Q3VzdG9tZXJTdXBwb3J0KGRhdGEpIHtcbiAgICAgICAgY29uc3QgZm9ybURhdGEgPSBuZXcgRm9ybURhdGEoKTtcblxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcmVzdHJpY3RlZC1zeW50YXhcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gZGF0YSkge1xuICAgICAgICAgICAgaWYgKGtleSBpbiBkYXRhKSB7XG4gICAgICAgICAgICAgICAgZm9ybURhdGEuYXBwZW5kKGtleSwgZGF0YVtrZXldKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLmFwaS5wb3N0KGAke0NVU1RPTUVSX1NVUFBPUlRfUEFUSH1gLCBmb3JtRGF0YSk7XG4gICAgfVxufVxuIl19
|
|
134
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2NvbW1vbi1zZXJ2aWNlcy9zcmMvbGliL2NvbW1vbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUNILGVBQWUsRUFDZixlQUFlLEVBQ2YscUJBQXFCLEVBQ3JCLFNBQVMsRUFDVCx1QkFBdUIsRUFDdkIsbUJBQW1CLEVBQ25CLGdDQUFnQyxFQUNoQyxjQUFjLEVBQ2Qsb0JBQW9CLEVBQ3BCLGdCQUFnQixFQUNoQiw0QkFBNEIsRUFDNUIsMkJBQTJCLEVBQzNCLGtCQUFrQixFQUNsQixtQkFBbUIsRUFDbkIsdUJBQXVCLEVBRTFCLE1BQU0sNEJBQTRCLENBQUM7QUFDcEMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDOzs7QUFNN0QsTUFBTSxPQUFPLGFBQWE7SUFDdEIsWUFBNkIsR0FBdUI7UUFBdkIsUUFBRyxHQUFILEdBQUcsQ0FBb0I7SUFBRyxDQUFDO0lBRXhELG1CQUFtQixDQUFDLElBQUk7UUFDcEIsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDaEQsQ0FBQztJQUVELFlBQVksQ0FBQyxNQUFlO1FBQ3hCLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsR0FBRyxjQUFjLFVBQVUsRUFBRTtZQUN2RCxHQUFHLGFBQWEsQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDO1NBQzNDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxNQUFlLEVBQUUsY0FBdUI7UUFDdEQsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxH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LEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztnQkFDZCxRQUFRLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUNwQyxDQUFDO1FBQ0wsQ0FBQztRQUVELE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxxQkFBcUIsRUFBRSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQy9ELENBQUM7K0dBdktRLGFBQWE7bUhBQWIsYUFBYSxjQUZWLE1BQU07OzRGQUVULGFBQWE7a0JBSHpCLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQge1xuICAgIEFETUlOX0ZBUVNfUEFUSCxcbiAgICBDT05UQUNUX1VTX1BBVEgsXG4gICAgQ1VTVE9NRVJfU1VQUE9SVF9QQVRILFxuICAgIEZBUVNfUEFUSCxcbiAgICBGRUVEQkFDS19RVUVTVElPTlNfUEFUSCxcbiAgICBHTE9CQUxfQ09ORklHU19QQVRILFxuICAgIEdMT0JBTF9TVUJTQ1JJUFRJT05fQ09ORklHU19QQVRILFxuICAgIElOQ0lERU5UU19QQVRILFxuICAgIElOQ0lERU5UU19QQVRIX0FETUlOLFxuICAgIE5FV1NMRVRURVJTX1BBVEgsXG4gICAgTkVXU0xFVFRFUl9TVUJTQ1JJUFRJT05fUEFUSCxcbiAgICBORVdTTEVUVEVSX1VOU1VCU0NSSUJFX1BBVEgsXG4gICAgT1JHQU5JWkFUSU9OU19QQVRILFxuICAgIFVTRVJfRkVFREJBQ0tTX1BBVEgsXG4gICAgVVNFUl9MT0dJTl9OT1RJRklDQVRJT04sXG4gICAgUGFnaW5nXG59IGZyb20gJ0Bwb3Npd2lzZS9jb21tb24tdXRpbGl0aWVzJztcbmltcG9ydCB7IEhlbHBlclNlcnZpY2UgfSBmcm9tICdAcG9zaXdpc2UvaGVscGVyLXNlcnZpY2UnO1xuaW1wb3J0IHsgTWFpbkFwaUh0dHBTZXJ2aWNlIH0gZnJvbSAnLi9tYWluLWFwaS1odHRwLnNlcnZpY2UnO1xuaW1wb3J0IHsgR2V0RmFxUGFyYW1zIH0gZnJvbSAnLi9jb21tb24tc2VydmljZXMuaW50ZXJmYWNlJztcblxuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBDb21tb25TZXJ2aWNlIHtcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IGFwaTogTWFpbkFwaUh0dHBTZXJ2aWNlKSB7fVxuXG4gICAgYWRkQ29udGFjdFVzTWVzc2FnZShkYXRhKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFwaS5wb3N0KENPTlRBQ1RfVVNfUEFUSCwgZGF0YSk7XG4gICAgfVxuXG4gICAgZ2V0SW5jaWRlbnRzKHBhZ2luZz86IFBhZ2luZykge1xuICAgICAgICByZXR1cm4gdGhpcy5hcGkuZ2V0V2l0aFBhcmFtcyhgJHtJTkNJREVOVFNfUEFUSH0vZ2V0X2FsbGAsIHtcbiAgICAgICAgICAgIC4uLkhlbHBlclNlcnZpY2UuZ2V0UGFnaW5nUGFyYW1zKHBhZ2luZylcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgZ2V0SW5jaWRlbnRzQWRtaW4ocGFnaW5nPzogUGFnaW5nLCBzdWJzY3JpcHRpb25JZD86IG51bWJlcikge1xuICAgICAgICByZXR1cm4gdGhpcy5hcGkuZ2V0V2l0aFBhcmFtcyhgJHtJTkNJREVOVFNfUEFUSF9BRE1JTn0vZ2V0X2FsbGAsIHtcbiAgICAgICAgICAgIC4uLkhlbHBlclNlcnZpY2UuZ2V0UGFnaW5nUGFyYW1zKHBhZ2luZyksXG4gICAgICAgICAgICBzdWJzY3JpcHRpb25faWQ6IHN1YnNjcmlwdGlvbklkXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGFkZEluY2lkZW50KGRhdGEpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXBpLnBvc3QoYCR7SU5DSURFTlRTX1BBVEhfQURNSU59YCwgZGF0YSk7XG4gICAgfVxuXG4gICAgZWRpdEluY2lkZW50KGlkLCBkYXRhKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFwaS5wdXQoYCR7SU5DSURFTlRTX1BBVEhfQURNSU59LyR7aWR9YCwgZGF0YSk7XG4gICAgfVxuXG4gICAgZ2V0SW5jaWRlbnRCeUlkKGlkOiBudW1iZXIsIHN1YnNjcmlwdGlvbl9pZCkge1xuICAgICAgICByZXR1cm4gdGhpcy5hcGkuZ2V0KGAke0lOQ0lERU5UU19QQVRIX0FETUlOfS8ke2lkfT9zdWJzY3JpcHRpb25faWQ9JHtzdWJzY3JpcHRpb25faWR9YCk7XG4gICAgfVxuXG4gICAgZGVsZXRlSW5jaWRlbnRBZG1pbihpZDogbnVtYmVyLCBzdWJzY3JpcHRpb25faWQ6IG51bWJlcikge1xuICAgICAgICByZXR1cm4gdGhpcy5hcGkuZGVsZXRlKGAke0lOQ0lERU5UU19QQVRIX0FETUlOfS8ke2lkfT9zdWJzY3JpcHRpb25faWQ9JHtzdWJzY3JpcHRpb25faWR9YCk7XG4gICAgfVxuICAgIC8vIE5ld3NsZXR0ZXJzXG5cbiAgICBnZXRBbGxOZXdzbGV0dGVyKHBhZ2luZz86IFBhZ2luZykge1xuICAgICAgICByZXR1cm4gdGhpcy5hcGkuZ2V0V2l0aFBhcmFtcyhgJHtORVdTTEVUVEVSU19QQVRIfS9nZXRfYWxsYCwge1xuICAgICAgICAgICAgdmlzaWJsZTogdHJ1ZSxcbiAgICAgICAgICAgIC4uLkhlbHBlclNlcnZpY2UuZ2V0UGFnaW5nUGFyYW1zKHBhZ2luZylcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgdG9nZ2xlTmV3c2xldHRlcihuZXdzbGV0dGVySWQ6IG51bWJlciwgcGFyYW0pIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXBpLnB1dChgJHtORVdTTEVUVEVSX1NVQlNDUklQVElPTl9QQVRIfS8ke25ld3NsZXR0ZXJJZH0vdG9nZ2xlYCwgcGFyYW0pO1xuICAgIH1cblxuICAgIHVuc3Vic2NyaWJlTmV3c2xldHRlcih0b2tlbjogc3RyaW5nKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFwaS5nZXQoYC8ke05FV1NMRVRURVJfVU5TVUJTQ1JJQkVfUEFUSH0/dG9rZW49JHt0b2tlbn1gKTtcbiAgICB9XG5cbiAgICAvLyBGQVFcblxuICAgIGdldEZhcShwYXJhbXM6IEdldEZhcVBhcmFtcykge1xuICAgICAgICByZXR1cm4gdGhpcy5hcGkuZ2V0V2l0aFBhcmFtcyhBRE1JTl9GQVFTX1BBVEgsIHsgLi4ucGFyYW1zIH0pO1xuICAgIH1cblxuICAgIGdldEZhcUJ5SWQoaWQ6IG51bWJlciwgc3Vic2NyaXB0aW9uX2lkKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFwaS5nZXRXaXRoUGFyYW1zKGAke0ZBUVNfUEFUSH0vJHtpZH1gLCB7IHN1YnNjcmlwdGlvbl9pZCB9KTtcbiAgICB9XG4gICAgZ2V0RmFxQ2F0ZWdvcmllcyhzdWJzY3JpcHRpb25faWQ6IG51bWJlcikge1xuICAgICAgICByZXR1cm4gdGhpcy5hcGkuZ2V0V2l0aFBhcmFtcyhgZmFxcy9hdmFpbGFibGVfY2F0ZWdvcmllc2AsIHsgc3Vic2NyaXB0aW9uX2lkIH0pO1xuICAgIH1cbiAgICBnZXRQdWJsaWNGYXEoc3Vic2NyaXB0aW9uX2lkOiBudW1iZXIsIHNlYXJjaF90ZXJtID0gJycpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXBpLmdldFdpdGhQYXJhbXMoYCR7RkFRU19QQVRIfWAsIHsgc3Vic2NyaXB0aW9uX2lkLCBzZWFyY2hfdGVybSB9KTtcbiAgICB9XG5cbiAgICBnZXRQdWJsaWNGYXFCeUlkKGlkOiBudW1iZXIpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXBpLmdldChgJHtGQVFTX1BBVEh9LyR7aWR9YCk7XG4gICAgfVxuXG4gICAgLy8gT3JnYW5pemF0aW9uXG5cbiAgICBnZXRPcmdhbml6YXRpb25TaXplcyhwYWdpbmc/OiBQYWdpbmcpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXBpLmdldFdpdGhQYXJhbXMoXG4gICAgICAgICAgICBgJHtPUkdBTklaQVRJT05TX1BBVEh9L3NpemVzL2dldF9hbGxgLFxuICAgICAgICAgICAgSGVscGVyU2VydmljZS5nZXRQYWdpbmdQYXJhbXMocGFnaW5nKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGdldE9yZ2FuaXphdGlvblR5cGVzKHBhZ2luZz86IFBhZ2luZykge1xuICAgICAgICByZXR1cm4gdGhpcy5hcGkuZ2V0V2l0aFBhcmFtcyhcbiAgICAgICAgICAgIGAke09SR0FOSVpBVElPTlNfUEFUSH0vdHlwZXMvZ2V0X2FsbGAsXG4gICAgICAgICAgICBIZWxwZXJTZXJ2aWNlLmdldFBhZ2luZ1BhcmFtcyhwYWdpbmcpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZ2V0T3JnYW5pemF0aW9uSW5kdXN0cmllcyhwYWdpbmc/OiBQYWdpbmcpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXBpLmdldFdpdGhQYXJhbXMoXG4gICAgICAgICAgICBgJHtPUkdBTklaQVRJT05TX1BBVEh9L2luZHVzdHJpZXMvZ2V0X2FsbGAsXG4gICAgICAgICAgICBIZWxwZXJTZXJ2aWNlLmdldFBhZ2luZ1BhcmFtcyhwYWdpbmcpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZ2V0T3JnYW5pemF0aW9uRGVwYXJ0bWVudHMocGFnaW5nPzogUGFnaW5nKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFwaS5nZXRXaXRoUGFyYW1zKFxuICAgICAgICAgICAgYCR7T1JHQU5JWkFUSU9OU19QQVRIfS9kZXBhcnRtZW50cy9nZXRfYWxsYCxcbiAgICAgICAgICAgIEhlbHBlclNlcnZpY2UuZ2V0UGFnaW5nUGFyYW1zKHBhZ2luZylcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvLyBHbG9iYWwgQ29uZmlnXG5cbiAgICBnZXRBbGxHbG9iYWxTdWJzY3JpcHRpb25Db25maWdzKHBhZ2luZz86IFBhZ2luZykge1xuICAgICAgICByZXR1cm4gdGhpcy5hcGkuZ2V0V2l0aFBhcmFtcyhcbiAgICAgICAgICAgIGAke0dMT0JBTF9TVUJTQ1JJUFRJT05fQ09ORklHU19QQVRIfS9nZXRfYWxsP2AsXG4gICAgICAgICAgICBIZWxwZXJTZXJ2aWNlLmdldFBhZ2luZ1BhcmFtcyhwYWdpbmcpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcG9zdEdsb2JhbFN1YnNjcmlwdGlvbkNvbmZpZyhkYXRhKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFwaS5wb3N0KGAke0dMT0JBTF9TVUJTQ1JJUFRJT05fQ09ORklHU19QQVRIfWAsIGRhdGEpO1xuICAgIH1cblxuICAgIGVkaXRHbG9iYWxTdWJzY3JpcHRpb25Db25maWcoaWQ6IG51bWJlciwgZGF0YSkge1xuICAgICAgICByZXR1cm4gdGhpcy5hcGkucG9zdChgJHtHTE9CQUxfU1VCU0NSSVBUSU9OX0NPTkZJR1NfUEFUSH0vJHtpZH1gLCBkYXRhKTtcbiAgICB9XG5cbiAgICBnZXRBbGxHbG9iYWxDb25maWdzKHBhZ2luZz86IFBhZ2luZykge1xuICAgICAgICByZXR1cm4gdGhpcy5hcGkuZ2V0V2l0aFBhcmFtcyhcbiAgICAgICAgICAgIGAke0dMT0JBTF9DT05GSUdTX1BBVEh9L2dldF9hbGw/YCxcbiAgICAgICAgICAgIEhlbHBlclNlcnZpY2UuZ2V0UGFnaW5nUGFyYW1zKHBhZ2luZylcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvLyBVc2VyIExvZ2luIE5vdGlmaWNhdGlvblxuXG4gICAgdXNlckxvZ2luTm90aWZpY2F0aW9uKGRhdGEpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXBpLnBvc3QoYCR7VVNFUl9MT0dJTl9OT1RJRklDQVRJT059YCwgZGF0YSk7XG4gICAgfVxuXG4gICAgLy8gQ3VzdG9tZXIgU2F0aXNmYWN0aW9uXG5cbiAgICBmZWVkYmFja1F1ZXN0aW9ucyhzdWJzY3JpcHRpb25faWQ6IG51bWJlcikge1xuICAgICAgICByZXR1cm4gdGhpcy5hcGkuZ2V0KGAke0ZFRURCQUNLX1FVRVNUSU9OU19QQVRIfT9zdWJzY3JpcHRpb25faWQ9JHtzdWJzY3JpcHRpb25faWR9YCk7XG4gICAgfVxuXG4gICAgdXNlckZlZWRiYWNrcyhkYXRhKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFwaS5wb3N0KGAke1VTRVJfRkVFREJBQ0tTX1BBVEh9YCwgZGF0YSk7XG4gICAgfVxuXG4gICAgZ2V0QWxsVXNlckZlZWRiYWNrcyhzdWJzY3JpcHRpb25faWQ6IG51bWJlciwgcGFnaW5nPzogUGFnaW5nKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFwaS5nZXRXaXRoUGFyYW1zKGAke1VTRVJfRkVFREJBQ0tTX1BBVEh9L2dldF9hbGxgLCB7XG4gICAgICAgICAgICAuLi5IZWxwZXJTZXJ2aWNlLmdldFBhZ2luZ1BhcmFtcyhwYWdpbmcpLFxuICAgICAgICAgICAgc3Vic2NyaXB0aW9uX2lkXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGdldEFsbEN1c3RvbWVyU3VwcG9ydChzdWJzY3JpcHRpb25faWQ6IG51bWJlciwgcGFnaW5nPzogUGFnaW5nKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFwaS5nZXRXaXRoUGFyYW1zKGAke0NVU1RPTUVSX1NVUFBPUlRfUEFUSH0vZ2V0X2FsbD9gLCB7XG4gICAgICAgICAgICAuLi5IZWxwZXJTZXJ2aWNlLmdldFBhZ2luZ1BhcmFtcyhwYWdpbmcpLFxuICAgICAgICAgICAgc3Vic2NyaXB0aW9uX2lkXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHBvc3RDdXN0b21lclN1cHBvcnQoZGF0YSkge1xuICAgICAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xuXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1yZXN0cmljdGVkLXN5bnRheFxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBkYXRhKSB7XG4gICAgICAgICAgICBpZiAoa2V5IGluIGRhdGEpIHtcbiAgICAgICAgICAgICAgICBmb3JtRGF0YS5hcHBlbmQoa2V5LCBkYXRhW2tleV0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuYXBpLnBvc3QoYCR7Q1VTVE9NRVJfU1VQUE9SVF9QQVRIfWAsIGZvcm1EYXRhKTtcbiAgICB9XG59XG4iXX0=
|
|
@@ -13,7 +13,7 @@ export class PermissionService {
|
|
|
13
13
|
setCurrentSubscription(subscription) {
|
|
14
14
|
PermissionService.selectedSubscription = subscription;
|
|
15
15
|
}
|
|
16
|
-
isGranted(permissionName, productKey = null, permission_key = null) {
|
|
16
|
+
isGranted(permissionName, productKey = null, permission_key = null, productSlug = null) {
|
|
17
17
|
if (this.user) {
|
|
18
18
|
const { user } = this;
|
|
19
19
|
// Admin have access to all the menus.
|
|
@@ -21,6 +21,20 @@ export class PermissionService {
|
|
|
21
21
|
if (this.isSuperAdmin()) {
|
|
22
22
|
return true;
|
|
23
23
|
}
|
|
24
|
+
if (permissionName) {
|
|
25
|
+
const selectedProduct = PermissionService?.selectedProduct || this.getCurrentProduct();
|
|
26
|
+
const subscriptionSlug = selectedProduct?.subscription_slug;
|
|
27
|
+
let slugToCheck;
|
|
28
|
+
if (!productSlug) {
|
|
29
|
+
slugToCheck = `Pages.Product.${subscriptionSlug}.`;
|
|
30
|
+
}
|
|
31
|
+
else {
|
|
32
|
+
slugToCheck = productSlug;
|
|
33
|
+
}
|
|
34
|
+
if (!permissionName.includes(slugToCheck)) {
|
|
35
|
+
permissionName = permissionName.replace('Pages.Product.', slugToCheck);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
24
38
|
// Returning true if user has a given permission
|
|
25
39
|
// E.g., Pages.Role.CloudOlive.SalesManager
|
|
26
40
|
// or Pages.Beta or Pages.Alpha
|
|
@@ -62,7 +76,7 @@ export class PermissionService {
|
|
|
62
76
|
grantedPermissionNames: Object.keys(data.granted)
|
|
63
77
|
};
|
|
64
78
|
}
|
|
65
|
-
evaluatePermissions(permission, productKey = null, permission_key = null) {
|
|
79
|
+
evaluatePermissions(permission, productKey = null, permission_key = null, productSlug = null) {
|
|
66
80
|
if (!permission) {
|
|
67
81
|
return false;
|
|
68
82
|
}
|
|
@@ -101,7 +115,7 @@ export class PermissionService {
|
|
|
101
115
|
let raw = x;
|
|
102
116
|
if (x.includes('Pages')) {
|
|
103
117
|
if (productKey) {
|
|
104
|
-
raw = `this.isGranted('${x}', '${productKey}', '${permission_key}')`;
|
|
118
|
+
raw = `this.isGranted('${x}', '${productKey}', '${permission_key}', '${productSlug}')`;
|
|
105
119
|
}
|
|
106
120
|
else {
|
|
107
121
|
raw = `this.isGranted('${x}')`;
|
|
@@ -132,7 +146,9 @@ export class PermissionService {
|
|
|
132
146
|
if (!product) {
|
|
133
147
|
product = this.getCurrentProduct();
|
|
134
148
|
}
|
|
135
|
-
|
|
149
|
+
const selectedProduct = PermissionService?.selectedProduct;
|
|
150
|
+
const subscriptionSlug = selectedProduct?.subscription_slug;
|
|
151
|
+
return !!this.user.auth.granted[`Pages.Product.${subscriptionSlug}.${product.permission_key}.${product.feature_key}.SubscriptionOwner`];
|
|
136
152
|
}
|
|
137
153
|
/**
|
|
138
154
|
* Any Product Admin regardless of the product being master product or not.
|
|
@@ -143,8 +159,10 @@ export class PermissionService {
|
|
|
143
159
|
if (!product) {
|
|
144
160
|
product = this.getCurrentProduct();
|
|
145
161
|
}
|
|
146
|
-
|
|
147
|
-
|
|
162
|
+
const selectedProduct = PermissionService?.selectedProduct;
|
|
163
|
+
const subscriptionSlug = selectedProduct?.subscription_slug;
|
|
164
|
+
return (!!this.user.auth.granted[`Pages.Product.${subscriptionSlug}.${product.permission_key}.${product.feature_key}.SubscriptionAdmin`] ||
|
|
165
|
+
!!this.user.auth.granted[`Pages.Product.${subscriptionSlug}.${product.permission_key}.${product.feature_key}.SubscriptionOwner`]);
|
|
148
166
|
}
|
|
149
167
|
/**
|
|
150
168
|
* Any Product Admin of the product being the master product
|
|
@@ -153,8 +171,16 @@ export class PermissionService {
|
|
|
153
171
|
if (!product) {
|
|
154
172
|
product = this.getCurrentProduct();
|
|
155
173
|
}
|
|
156
|
-
|
|
157
|
-
|
|
174
|
+
const selectedProduct = PermissionService?.selectedProduct;
|
|
175
|
+
const subscriptionSlug = selectedProduct?.subscription_slug;
|
|
176
|
+
return (!!this.user.auth.granted[`Pages.Product.${subscriptionSlug}.${product.permission_key}.${product.feature_key}.SubscriptionSuperAdmin`] ||
|
|
177
|
+
!!this.user.auth.granted[`Pages.Product.${subscriptionSlug}.${product.permission_key}.${product.feature_key}.SubscriptionSuperOwner`]);
|
|
178
|
+
}
|
|
179
|
+
isUserMasterSubscriptionSuperAdmin(product) {
|
|
180
|
+
if (!product) {
|
|
181
|
+
product = this.getCurrentProduct();
|
|
182
|
+
}
|
|
183
|
+
return !!this.user.auth.granted[`Pages.Product.${product.permission_key}.${product.feature_key}.SubscriptionSuperAdmin`];
|
|
158
184
|
}
|
|
159
185
|
/**
|
|
160
186
|
* Any Product Admin of the product being the master product
|
|
@@ -163,14 +189,17 @@ export class PermissionService {
|
|
|
163
189
|
if (!product) {
|
|
164
190
|
product = this.getCurrentProduct();
|
|
165
191
|
}
|
|
166
|
-
|
|
192
|
+
const selectedProduct = PermissionService?.selectedProduct;
|
|
193
|
+
const subscriptionSlug = selectedProduct?.subscription_slug;
|
|
194
|
+
return !!this.user.auth.granted[`Pages.Product.${subscriptionSlug}.${product.permission_key}.${product.feature_key}.SubscriptionSuperOwner`];
|
|
167
195
|
}
|
|
168
196
|
setCurrentProduct(product) {
|
|
169
197
|
localStorage.setItem('product', JSON.stringify({
|
|
170
198
|
id: product.id,
|
|
171
199
|
permission_key: product.permission_key,
|
|
172
200
|
feature_key: product.feature_key,
|
|
173
|
-
subscriptionId: product.subscriptionId
|
|
201
|
+
subscriptionId: product.subscriptionId,
|
|
202
|
+
subscription_slug: product.subscription_slug
|
|
174
203
|
}));
|
|
175
204
|
}
|
|
176
205
|
getCurrentProduct() {
|
|
@@ -185,4 +214,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImpo
|
|
|
185
214
|
providedIn: 'root'
|
|
186
215
|
}]
|
|
187
216
|
}], ctorParameters: () => [{ type: i1.MainApiHttpService }] });
|
|
188
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVybWlzc2lvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24tc2VydmljZXMvc3JjL2xpYi9wZXJtaXNzaW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLFNBQVMsTUFBTSxrQkFBa0IsQ0FBQztBQUN6QyxPQUFPLE1BQU0sTUFBTSxlQUFlLENBQUM7QUFFbkMsT0FBTyxFQUFFLHdCQUF3QixFQUFFLGdCQUFnQixFQUFRLE1BQU0sNEJBQTRCLENBQUM7QUFDOUYsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0seUJBQXlCLENBQUM7OztBQUs3RCxNQUFNLE9BQU8saUJBQWlCO0lBUzFCLFlBQTZCLEdBQXVCO1FBQXZCLFFBQUcsR0FBSCxHQUFHLENBQW9CO1FBRnBELFNBQUksR0FBUyxJQUFJLENBQUM7SUFFcUMsQ0FBQztJQUV4RCxzQkFBc0IsQ0FBQyxZQUFZO1FBQy9CLGlCQUFpQixDQUFDLG9CQUFvQixHQUFHLFlBQVksQ0FBQztJQUMxRCxDQUFDO0lBRUQsU0FBUyxDQUFDLGNBQXNCLEVBQUUsVUFBVSxHQUFHLElBQUksRUFBRSxjQUFjLEdBQUcsSUFBSTtRQUN0RSxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNaLE1BQU0sRUFBRSxJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUM7WUFFdEIsc0NBQXNDO1lBQ3RDLHlCQUF5QjtZQUN6QixJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUUsRUFBRSxDQUFDO2dCQUN0QixPQUFPLElBQUksQ0FBQztZQUNoQixDQUFDO1lBRUQsZ0RBQWdEO1lBQ2hELDJDQUEyQztZQUMzQywrQkFBK0I7WUFDL0IsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxjQUFjLENBQUMsRUFBRSxDQUFD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QkFBaUI7bUhBQWpCLGlCQUFpQixjQUZkLE1BQU07OzRGQUVULGlCQUFpQjtrQkFIN0IsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgY2xvbmVEZWVwIGZyb20gJ2xvZGFzaC9jbG9uZURlZXAnO1xuaW1wb3J0IHBpY2tCeSBmcm9tICdsb2Rhc2gvcGlja0J5JztcblxuaW1wb3J0IHsgQURNSU5fU1VCX01FTlVfV0hJVEVMSVNULCBQRVJNSVNTSU9OX05BTUVTLCBVc2VyIH0gZnJvbSAnQHBvc2l3aXNlL2NvbW1vbi11dGlsaXRpZXMnO1xuaW1wb3J0IHsgTWFpbkFwaUh0dHBTZXJ2aWNlIH0gZnJvbSAnLi9tYWluLWFwaS1odHRwLnNlcnZpY2UnO1xuXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIFBlcm1pc3Npb25TZXJ2aWNlIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgIHN0YXRpYyBzZWxlY3RlZFByb2R1Y3Q6IGFueTsgLy8gTk9TT05BUlxuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICBzdGF0aWMgc2VsZWN0ZWRTdWJzY3JpcHRpb246IGFueTsgLy8gTk9TT05BUlxuXG4gICAgdXNlcjogVXNlciA9IG51bGw7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IGFwaTogTWFpbkFwaUh0dHBTZXJ2aWNlKSB7fVxuXG4gICAgc2V0Q3VycmVudFN1YnNjcmlwdGlvbihzdWJzY3JpcHRpb24pIHtcbiAgICAgICAgUGVybWlzc2lvblNlcnZpY2Uuc2VsZWN0ZWRTdWJzY3JpcHRpb24gPSBzdWJzY3JpcHRpb247XG4gICAgfVxuXG4gICAgaXNHcmFudGVkKHBlcm1pc3Npb25OYW1lOiBzdHJpbmcsIHByb2R1Y3RLZXkgPSBudWxsLCBwZXJtaXNzaW9uX2tleSA9IG51bGwpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKHRoaXMudXNlcikge1xuICAgICAgICAgICAgY29uc3QgeyB1c2VyIH0gPSB0aGlzO1xuXG4gICAgICAgICAgICAvLyBBZG1pbiBoYXZlIGFjY2VzcyB0byBhbGwgdGhlIG1lbnVzLlxuICAgICAgICAgICAgLy8gRS5nLiwgUGFnZXMuU3VwZXJBZG1pblxuICAgICAgICAgICAgaWYgKHRoaXMuaXNTdXBlckFkbWluKCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gUmV0dXJuaW5nIHRydWUgaWYgdXNlciBoYXMgYSBnaXZlbiBwZXJtaXNzaW9uXG4gICAgICAgICAgICAvLyBFLmcuLCBQYWdlcy5Sb2xlLkNsb3VkT2xpdmUuU2FsZXNNYW5hZ2VyXG4gICAgICAgICAgICAvLyBvciBQYWdlcy5CZXRhIG9yIFBhZ2VzLkFscGhhXG4gICAgICAgICAgICBpZiAodXNlclsnYXV0aCddPy5bJ2dyYW50ZWQnXVtwZXJtaXNzaW9uTmFtZV0pIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHByb2R1Y3RLZXkpIHtcbiAgICAgICAgICAgICAgICAvLyBmaWx0ZXJzIHRoZSBwZXJtaXNzaW9uIG9ubHkgZm9yIHRoZSBzZWxlY3RlZCBwcm9kdWN0LlxuICAgICAgICAgICAgICAgIGxldCBmaWx0ZXJlZFBlcm1pc3Npb25zID0gcGlja0J5KFxuICAgICAgICAgICAgICAgICAgICBjbG9uZURlZXAodXNlclsnYXV0aCddWydncmFudGVkJ10pLFxuICAgICAgICAgICAgICAgICAgICAoX3ZhbHVlLCBrZXkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBrZXkuaW5jbHVkZXMocHJvZHVjdEtleSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIC8vIGFkZCBQYWdlcy5Qcm9kdWN0LntwZXJtaXNzaW9uX2tleX1cbiAgICAgICAgICAgICAgICBmaWx0ZXJlZFBlcm1pc3Npb25zID0ge1xuICAgICAgICAgICAgICAgICAgICAuLi57IFtgUGFnZXMuUHJvZHVjdC4ke3Blcm1pc3Npb25fa2V5fWBdOiB0cnVlIH0sXG4gICAgICAgICAgICAgICAgICAgIC4uLmZpbHRlcmVkUGVybWlzc2lvbnNcbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgLy8gRS5nLiwgUGFnZXMuUHJvZHVjdC5DbG91ZE9saXZlLkNsb3VkT2xpdmVfTXNwS2V5XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZpbHRlcmVkUGVybWlzc2lvbnNbcGVybWlzc2lvbk5hbWVdIHx8IGZhbHNlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBubyB2YWxpZCBwZXJtaXNzaW9uIHdhcyBkZXRlY3RlZCBmb3IgdGhpcyB1c2VyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICAvLyB1c2VyIG5vdCBsb2dnZWQtaW5cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGdldFBlcm1pc3Npb25UcmVlRGF0YUJ5Um9sZShkYXRhKSB7XG4gICAgICAgIGNvbnN0IHBlcm1pc3Npb25zID0gW107XG4gICAgICAgIGRhdGEuYWxsLmZvckVhY2goZWxlbWVudCA9PiB7XG4gICAgICAgICAgICBjb25zdCB7IG5hbWUgfSA9IGVsZW1lbnQ7XG4gICAgICAgICAgICBwZXJtaXNzaW9ucy5wdXNoKHtcbiAgICAgICAgICAgICAgICBpZDogZWxlbWVudC5pZCwgLy8gcGVybWlzc2lvbklkOiBVc2VkIHRvIHVwZGF0ZSB0aGUgcGVybWlzc2lvbnMgb24gY2hhbmdlXG4gICAgICAgICAgICAgICAgcGFyZW50TmFtZTogbmFtZS5pbmNsdWRlcygnLicpID8gbmFtZS5zdWJzdHJpbmcoMCwgbmFtZS5sYXN0SW5kZXhPZignLicpKSA6IG51bGwsXG4gICAgICAgICAgICAgICAgbmFtZSxcbiAgICAgICAgICAgICAgICBkaXNwbGF5TmFtZTogZWxlbWVudC5uYW1lXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHBlcm1pc3Npb25zLFxuICAgICAgICAgICAgZ3JhbnRlZFBlcm1pc3Npb25OYW1lczogT2JqZWN0LmtleXMoZGF0YS5ncmFudGVkKVxuICAgICAgICB9O1xuICAgIH1cblxuICAgIGV2YWx1YXRlUGVybWlzc2lvbnMoXG4gICAgICAgIHBlcm1pc3Npb246IHN0cmluZyxcbiAgICAgICAgcHJvZHVjdEtleTogc3RyaW5nID0gbnVsbCxcbiAgICAgICAgcGVybWlzc2lvbl9rZXk6IHN0cmluZyA9IG51bGxcbiAgICApOiBib29sZWFuIHtcbiAgICAgICAgaWYgKCFwZXJtaXNzaW9uKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICAvLyAtICAgYFN1cGVyQWRtaW5gICAgICAgICAgICAgID0+ICBHb2QtbGlrZSBwb3dlciAtIE1vc3QgcHJpdmlsZWdlZFxuXG4gICAgICAgIC8vIC0gICBgU3Vic2NyaXB0aW9uU3VwZXJPd25lcmAgPT4gIFNvbWUgb2YgdGhlIGZlYXR1cmVzIHVuZGVyIEFkbWluIE1lbnVcbiAgICAgICAgLy8gLSAgIGBTdWJzY3JpcHRpb25TdXBlckFkbWluYCA9PiAgU29tZSBvZiB0aGUgZmVhdHVyZXMgdW5kZXIgQWRtaW4gTWVudVxuXG4gICAgICAgIC8vIC0gICBgU3Vic2NyaXB0aW9uT3duZXJgICAgICA9PiBQcm9kdWN0IDogU2VjdGlvbiBvZiBhIGdpdmVuIHN1YnNjcmlwdGlvblxuICAgICAgICAvLyAtICAgYFN1YnNjcmlwdGlvbkFkbWluYCAgICAgPT4gUHJvZHVjdCA6IFNlY3Rpb24gb2YgYSBnaXZlbiBzdWJzY3JpcHRpb25cblxuICAgICAgICAvLyAtICAgYFBhZ2VzLkJldGFgICAgICAgICAgICAgPT4gUHJvZHVjdCA6IFNlY3Rpb24gb2YgdGhlIHBhZ2VcbiAgICAgICAgLy8gLSAgIGBQYWdlcy5BbHBoYWAgICAgICAgICAgID0+IFByb2R1Y3QgOiBTZWN0aW9uIG9mIHRoZSBwYWdlXG5cbiAgICAgICAgbGV0IGV4cHIgPSAnJztcbiAgICAgICAgaWYgKHBlcm1pc3Npb24gPT09IFBFUk1JU1NJT05fTkFNRVMuU3VwZXJBZG1pbikge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuaXNTdXBlckFkbWluKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHBlcm1pc3Npb24gPT09IFBFUk1JU1NJT05fTkFNRVMuU3Vic2NyaXB0aW9uQWRtaW4pIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmlzVXNlclN1YnNjcmlwdGlvbkFkbWluKCkgfHwgdGhpcy5pc1VzZXJTdWJzY3JpcHRpb25Pd25lcigpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChwZXJtaXNzaW9uID09PSBQRVJNSVNTSU9OX05BTUVTLlN1YnNjcmlwdGlvbk93bmVyKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5pc1VzZXJTdWJzY3JpcHRpb25Pd25lcigpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChwZXJtaXNzaW9uID09PSBQRVJNSVNTSU9OX05BTUVTLlN1YnNjcmlwdGlvblN1cGVyQWRtaW4pIHtcbiAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgdGhpcy5pc1VzZXJTdWJzY3JpcHRpb25TdXBlckFkbWluKCkgfHxcbiAgICAgICAgICAgICAgICB0aGlzLmlzVXNlclN1YnNjcmlwdGlvblN1cGVyT3duZXIoKSB8fFxuICAgICAgICAgICAgICAgIHRoaXMuaXNTdXBlckFkbWluKClcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHBlcm1pc3Npb24gPT09IFBFUk1JU1NJT05fTkFNRVMuU3Vic2NyaXB0aW9uU3VwZXJPd25lcikge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuaXNVc2VyU3Vic2NyaXB0aW9uU3VwZXJPd25lcigpIHx8IHRoaXMuaXNTdXBlckFkbWluKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgQURNSU5fU1VCX01FTlVfV0hJVEVMSVNULnNvbWUodiA9PiBwZXJtaXNzaW9uLmluY2x1ZGVzKHYpKSAmJlxuICAgICAgICAgICAgKHRoaXMuaXNVc2VyU3Vic2NyaXB0aW9uU3VwZXJBZG1pbigpIHx8IHRoaXMuaXNVc2VyU3Vic2NyaXB0aW9uU3VwZXJPd25lcigpKVxuICAgICAgICApIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gVGhlIGZvbGxvd2luZyBldmFsdWF0ZXMgYSBjb21wbGV4IHBlcm1pc3Npb25cbiAgICAgICAgLy8gRWc6IGAoICR7QkFTSUNfUEVSTUlTU0lPTlMuTXNwS2V5fSB8fCAke0JBU0lDX1BFUk1JU1NJT05TLlNhYVNLZXl9ICkgJiYgJHtCQVNJQ19QRVJNSVNTSU9OUy5CZXRhfWBcbiAgICAgICAgcGVybWlzc2lvbi5zcGxpdCgnICcpLmZvckVhY2goeCA9PiB7XG4gICAgICAgICAgICBsZXQgcmF3ID0geDtcbiAgICAgICAgICAgIGlmICh4LmluY2x1ZGVzKCdQYWdlcycpKSB7XG4gICAgICAgICAgICAgICAgaWYgKHByb2R1Y3RLZXkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmF3ID0gYHRoaXMuaXNHcmFudGVkKCcke3h9JywgJyR7cHJvZHVjdEtleX0nLCAnJHtwZXJtaXNzaW9uX2tleX0nKWA7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmF3ID0gYHRoaXMuaXNHcmFudGVkKCcke3h9JylgO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZXhwciArPSBgJHtyYXd9IGA7XG4gICAgICAgIH0sIHRoaXMpO1xuXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1ldmFsXG4gICAgICAgIC8vIE5PU09OQVI6IFRydXN0ZWQgZXZhbCBmdW5jdGlvbiBpcyBoYW5kbGVkIHNhZmVseSBoZXJlXG4gICAgICAgIHJldHVybiBldmFsKGV4cHIpOyAvLyBOT1NPTkFSXG4gICAgfVxuXG4gICAgZ2V0UGVybWlzc2lvbkJ5Um9sZShyb2xlSWQ6IG51bWJlcikge1xuICAgICAgICByZXR1cm4gdGhpcy5hcGkuZ2V0KGAvYWRtaW4vcm9sZV9wZXJtaXNzaW9ucy8ke3JvbGVJZH1gKTtcbiAgICB9XG5cbiAgICBzYXZlVXNlclBlcm1pc3Npb24ocGF5bG9hZCkge1xuICAgICAgICByZXR1cm4gdGhpcy5hcGkucG9zdChgL2FkbWluL3JvbGVfcGVybWlzc2lvbnNgLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBkZXRlcm1pbmUgdXNlciBpcyBzdXBlcl9hZG1pbiB1c2luZyB1c2VyLmF1dGguZ3JhbnRlZFsnUGFnZXMuU3VwZXJBZG1pbiddXG4gICAgICovXG4gICAgaXNTdXBlckFkbWluKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gISF0aGlzLnVzZXIuYXV0aC5ncmFudGVkWydQYWdlcy5TdXBlckFkbWluJ10gfHwgZmFsc2U7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogIEFueSBQcm9kdWN0IEFkbWluIHJlZ2FyZGxlc3Mgb2YgdGhlIHByb2R1Y3QgYmVpbmcgbWFzdGVyIHByb2R1Y3Qgb3Igbm90LlxuICAgICAqL1xuICAgIHB1YmxpYyBpc1VzZXJTdWJzY3JpcHRpb25Pd25lcihwcm9kdWN0Pyk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAoIXByb2R1Y3QpIHtcbiAgICAgICAgICAgIHByb2R1Y3QgPSB0aGlzLmdldEN1cnJlbnRQcm9kdWN0KCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gISF0aGlzLnVzZXIuYXV0aC5ncmFudGVkW1xuICAgICAgICAgICAgYFBhZ2VzLlByb2R1Y3QuJHtwcm9kdWN0LnBlcm1pc3Npb25fa2V5fS4ke3Byb2R1Y3QuZmVhdHVyZV9rZXl9LlN1YnNjcmlwdGlvbk93bmVyYFxuICAgICAgICBdO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFueSBQcm9kdWN0IEFkbWluIHJlZ2FyZGxlc3Mgb2YgdGhlIHByb2R1Y3QgYmVpbmcgbWFzdGVyIHByb2R1Y3Qgb3Igbm90LlxuICAgICAqICpyYmFjQWxsb3c9XCJTdWJzY3JpcHRpb25BZG1pblwiXG4gICAgICogQHJldHVybnNcbiAgICAgKi9cbiAgICBwdWJsaWMgaXNVc2VyU3Vic2NyaXB0aW9uQWRtaW4ocHJvZHVjdD8pOiBib29sZWFuIHtcbiAgICAgICAgaWYgKCFwcm9kdWN0KSB7XG4gICAgICAgICAgICBwcm9kdWN0ID0gdGhpcy5nZXRDdXJyZW50UHJvZHVjdCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICEhdGhpcy51c2VyLmF1dGguZ3JhbnRlZFtcbiAgICAgICAgICAgICAgICBgUGFnZXMuUHJvZHVjdC4ke3Byb2R1Y3QucGVybWlzc2lvbl9rZXl9LiR7cHJvZHVjdC5mZWF0dXJlX2tleX0uU3Vic2NyaXB0aW9uQWRtaW5gXG4gICAgICAgICAgICBdIHx8XG4gICAgICAgICAgICAhIXRoaXMudXNlci5hdXRoLmdyYW50ZWRbXG4gICAgICAgICAgICAgICAgYFBhZ2VzLlByb2R1Y3QuJHtwcm9kdWN0LnBlcm1pc3Npb25fa2V5fS4ke3Byb2R1Y3QuZmVhdHVyZV9rZXl9LlN1YnNjcmlwdGlvbk93bmVyYFxuICAgICAgICAgICAgXVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFueSBQcm9kdWN0IEFkbWluIG9mIHRoZSBwcm9kdWN0IGJlaW5nIHRoZSBtYXN0ZXIgcHJvZHVjdFxuICAgICAqL1xuICAgIGlzVXNlclN1YnNjcmlwdGlvblN1cGVyQWRtaW4ocHJvZHVjdD8pOiBib29sZWFuIHtcbiAgICAgICAgaWYgKCFwcm9kdWN0KSB7XG4gICAgICAgICAgICBwcm9kdWN0ID0gdGhpcy5nZXRDdXJyZW50UHJvZHVjdCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICEhdGhpcy51c2VyLmF1dGguZ3JhbnRlZFtcbiAgICAgICAgICAgICAgICBgUGFnZXMuUHJvZHVjdC4ke3Byb2R1Y3QucGVybWlzc2lvbl9rZXl9LiR7cHJvZHVjdC5mZWF0dXJlX2tleX0uU3Vic2NyaXB0aW9uU3VwZXJBZG1pbmBcbiAgICAgICAgICAgIF0gfHxcbiAgICAgICAgICAgICEhdGhpcy51c2VyLmF1dGguZ3JhbnRlZFtcbiAgICAgICAgICAgICAgICBgUGFnZXMuUHJvZHVjdC4ke3Byb2R1Y3QucGVybWlzc2lvbl9rZXl9LiR7cHJvZHVjdC5mZWF0dXJlX2tleX0uU3Vic2NyaXB0aW9uU3VwZXJPd25lcmBcbiAgICAgICAgICAgIF1cbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBbnkgUHJvZHVjdCBBZG1pbiBvZiB0aGUgcHJvZHVjdCBiZWluZyB0aGUgbWFzdGVyIHByb2R1Y3RcbiAgICAgKi9cbiAgICBwdWJsaWMgaXNVc2VyU3Vic2NyaXB0aW9uU3VwZXJPd25lcihwcm9kdWN0Pyk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAoIXByb2R1Y3QpIHtcbiAgICAgICAgICAgIHByb2R1Y3QgPSB0aGlzLmdldEN1cnJlbnRQcm9kdWN0KCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gISF0aGlzLnVzZXIuYXV0aC5ncmFudGVkW1xuICAgICAgICAgICAgYFBhZ2VzLlByb2R1Y3QuJHtwcm9kdWN0LnBlcm1pc3Npb25fa2V5fS4ke3Byb2R1Y3QuZmVhdHVyZV9rZXl9LlN1YnNjcmlwdGlvblN1cGVyT3duZXJgXG4gICAgICAgIF07XG4gICAgfVxuXG4gICAgc2V0Q3VycmVudFByb2R1Y3QocHJvZHVjdCkge1xuICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShcbiAgICAgICAgICAgICdwcm9kdWN0JyxcbiAgICAgICAgICAgIEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgICAgICBpZDogcHJvZHVjdC5pZCxcbiAgICAgICAgICAgICAgICBwZXJtaXNzaW9uX2tleTogcHJvZHVjdC5wZXJtaXNzaW9uX2tleSxcbiAgICAgICAgICAgICAgICBmZWF0dXJlX2tleTogcHJvZHVjdC5mZWF0dXJlX2tleSxcbiAgICAgICAgICAgICAgICBzdWJzY3JpcHRpb25JZDogcHJvZHVjdC5zdWJzY3JpcHRpb25JZFxuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0Q3VycmVudFByb2R1Y3QoKSB7XG4gICAgICAgIHJldHVybiBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdwcm9kdWN0JykpO1xuICAgIH1cbn1cbiJdfQ==
|
|
217
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVybWlzc2lvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24tc2VydmljZXMvc3JjL2xpYi9wZXJtaXNzaW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLFNBQVMsTUFBTSxrQkFBa0IsQ0FBQztBQUN6QyxPQUFPLE1BQU0sTUFBTSxlQUFlLENBQUM7QUFFbkMsT0FBTyxFQUFFLHdCQUF3QixFQUFFLGdCQUFnQixFQUFRLE1BQU0sNEJBQTRCLENBQUM7QUFDOUYsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0seUJBQXlCLENBQUM7OztBQUs3RCxNQUFNLE9BQU8saUJBQWlCO0lBUzFCLFlBQTZCLEdBQXVCO1FBQXZCLFFBQUcsR0FBSCxHQUFHLENBQW9CO1FBRnBELFNBQUksR0FBUyxJQUFJLENBQUM7SUFFcUMsQ0FBQztJQUV4RCxzQkFBc0IsQ0FBQyxZQUFZO1FBQy9CLGlCQUFpQixDQUFDLG9CQUFvQixHQUFHLFlBQVksQ0FBQztJQUMxRCxDQUFDO0lBRUQsU0FBUyxDQUFDLGNBQXNCLEVBQUUsVUFBVSxHQUFHLElBQUksRUFBRSxjQUFjLEdBQUcsSUFBSSxFQUFFLFdBQVcsR0FBRyxJQUFJO1FBQzFGLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ1osTUFBTSxFQUFFLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQztZQUV0QixzQ0FBc0M7WUFDdEMseUJBQXlCO1lBQ3pCLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRSxFQUFFLENBQUM7Z0JBQ3RCLE9BQU8sSUFBSSxDQUFDO1lBQ2hCLENBQUM7WUFFRCxJQUFJLGNBQWMsRUFBRSxDQUFDO2dCQUNuQixNQUFNLGVBQWUsR0FBRyxpQkFBaUIsRUFBRSxlQUFlLElBQUksSUFBSSxDQUFDLGlCQUFpQixFQUFFLENB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QUFFLEVBQUUsT0FBTyxDQUFDLEVBQUU7WUFDZCxjQUFjLEVBQUUsT0FBTyxDQUFDLGNBQWM7WUFDdEMsV0FBVyxFQUFFLE9BQU8sQ0FBQyxXQUFXO1lBQ2hDLGNBQWMsRUFBRSxPQUFPLENBQUMsY0FBYztZQUN0QyxpQkFBaUIsRUFBRSxPQUFPLENBQUMsaUJBQWlCO1NBQy9DLENBQUMsQ0FDTCxDQUFDO0lBQ04sQ0FBQztJQUVNLGlCQUFpQjtRQUNwQixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7K0dBOVFRLGlCQUFpQjttSEFBakIsaUJBQWlCLGNBRmQsTUFBTTs7NEZBRVQsaUJBQWlCO2tCQUg3QixVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCBjbG9uZURlZXAgZnJvbSAnbG9kYXNoL2Nsb25lRGVlcCc7XG5pbXBvcnQgcGlja0J5IGZyb20gJ2xvZGFzaC9waWNrQnknO1xuXG5pbXBvcnQgeyBBRE1JTl9TVUJfTUVOVV9XSElURUxJU1QsIFBFUk1JU1NJT05fTkFNRVMsIFVzZXIgfSBmcm9tICdAcG9zaXdpc2UvY29tbW9uLXV0aWxpdGllcyc7XG5pbXBvcnQgeyBNYWluQXBpSHR0cFNlcnZpY2UgfSBmcm9tICcuL21haW4tYXBpLWh0dHAuc2VydmljZSc7XG5cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgUGVybWlzc2lvblNlcnZpY2Uge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgc3RhdGljIHNlbGVjdGVkUHJvZHVjdDogYW55OyAvLyBOT1NPTkFSXG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgIHN0YXRpYyBzZWxlY3RlZFN1YnNjcmlwdGlvbjogYW55OyAvLyBOT1NPTkFSXG5cbiAgICB1c2VyOiBVc2VyID0gbnVsbDtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgYXBpOiBNYWluQXBpSHR0cFNlcnZpY2UpIHt9XG5cbiAgICBzZXRDdXJyZW50U3Vic2NyaXB0aW9uKHN1YnNjcmlwdGlvbikge1xuICAgICAgICBQZXJtaXNzaW9uU2VydmljZS5zZWxlY3RlZFN1YnNjcmlwdGlvbiA9IHN1YnNjcmlwdGlvbjtcbiAgICB9XG5cbiAgICBpc0dyYW50ZWQocGVybWlzc2lvbk5hbWU6IHN0cmluZywgcHJvZHVjdEtleSA9IG51bGwsIHBlcm1pc3Npb25fa2V5ID0gbnVsbCwgcHJvZHVjdFNsdWcgPSBudWxsKTogYm9vbGVhbiB7XG4gICAgICAgIGlmICh0aGlzLnVzZXIpIHtcbiAgICAgICAgICAgIGNvbnN0IHsgdXNlciB9ID0gdGhpcztcblxuICAgICAgICAgICAgLy8gQWRtaW4gaGF2ZSBhY2Nlc3MgdG8gYWxsIHRoZSBtZW51cy5cbiAgICAgICAgICAgIC8vIEUuZy4sIFBhZ2VzLlN1cGVyQWRtaW5cbiAgICAgICAgICAgIGlmICh0aGlzLmlzU3VwZXJBZG1pbigpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChwZXJtaXNzaW9uTmFtZSkge1xuICAgICAgICAgICAgICBjb25zdCBzZWxlY3RlZFByb2R1Y3QgPSBQZXJtaXNzaW9uU2VydmljZT8uc2VsZWN0ZWRQcm9kdWN0IHx8IHRoaXMuZ2V0Q3VycmVudFByb2R1Y3QoKTtcbiAgICAgICAgICAgICAgY29uc3Qgc3Vic2NyaXB0aW9uU2x1ZyA9IHNlbGVjdGVkUHJvZHVjdD8uc3Vic2NyaXB0aW9uX3NsdWc7XG5cbiAgICAgICAgICAgICAgbGV0IHNsdWdUb0NoZWNrO1xuICAgICAgICAgICAgICBpZiAoIXByb2R1Y3RTbHVnKSB7XG4gICAgICAgICAgICAgICAgIHNsdWdUb0NoZWNrID0gYFBhZ2VzLlByb2R1Y3QuJHtzdWJzY3JpcHRpb25TbHVnfS5gO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHNsdWdUb0NoZWNrID0gcHJvZHVjdFNsdWdcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKCFwZXJtaXNzaW9uTmFtZS5pbmNsdWRlcyhzbHVnVG9DaGVjaykpIHtcbiAgICAgICAgICAgICAgICAgIHBlcm1pc3Npb25OYW1lID0gcGVybWlzc2lvbk5hbWUucmVwbGFjZShcbiAgICAgICAgICAgICAgICAgICAgJ1BhZ2VzLlByb2R1Y3QuJyxcbiAgICAgICAgICAgICAgICAgICAgc2x1Z1RvQ2hlY2tcbiAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBSZXR1cm5pbmcgdHJ1ZSBpZiB1c2VyIGhhcyBhIGdpdmVuIHBlcm1pc3Npb25cbiAgICAgICAgICAgIC8vIEUuZy4sIFBhZ2VzLlJvbGUuQ2xvdWRPbGl2ZS5TYWxlc01hbmFnZXJcbiAgICAgICAgICAgIC8vIG9yIFBhZ2VzLkJldGEgb3IgUGFnZXMuQWxwaGFcbiAgICAgICAgICAgIGlmICh1c2VyWydhdXRoJ10/LlsnZ3JhbnRlZCddW3Blcm1pc3Npb25OYW1lXSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGlmIChwcm9kdWN0S2V5KSB7XG4gICAgICAgICAgICAgICAgLy8gZmlsdGVycyB0aGUgcGVybWlzc2lvbiBvbmx5IGZvciB0aGUgc2VsZWN0ZWQgcHJvZHVjdC5cbiAgICAgICAgICAgICAgICBsZXQgZmlsdGVyZWRQZXJtaXNzaW9ucyA9IHBpY2tCeShcbiAgICAgICAgICAgICAgICAgICAgY2xvbmVEZWVwKHVzZXJbJ2F1dGgnXVsnZ3JhbnRlZCddKSxcbiAgICAgICAgICAgICAgICAgICAgKF92YWx1ZSwga2V5KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGtleS5pbmNsdWRlcyhwcm9kdWN0S2V5KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgLy8gYWRkIFBhZ2VzLlByb2R1Y3Que3Blcm1pc3Npb25fa2V5fVxuICAgICAgICAgICAgICAgIGZpbHRlcmVkUGVybWlzc2lvbnMgPSB7XG4gICAgICAgICAgICAgICAgICAgIC4uLnsgW2BQYWdlcy5Qcm9kdWN0LiR7cGVybWlzc2lvbl9rZXl9YF06IHRydWUgfSxcbiAgICAgICAgICAgICAgICAgICAgLi4uZmlsdGVyZWRQZXJtaXNzaW9uc1xuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICAvLyBFLmcuLCBQYWdlcy5Qcm9kdWN0LkNsb3VkT2xpdmUuQ2xvdWRPbGl2ZV9Nc3BLZXlcbiAgICAgICAgICAgICAgICByZXR1cm4gZmlsdGVyZWRQZXJtaXNzaW9uc1twZXJtaXNzaW9uTmFtZV0gfHwgZmFsc2U7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIG5vIHZhbGlkIHBlcm1pc3Npb24gd2FzIGRldGVjdGVkIGZvciB0aGlzIHVzZXJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIHVzZXIgbm90IGxvZ2dlZC1pblxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgZ2V0UGVybWlzc2lvblRyZWVEYXRhQnlSb2xlKGRhdGEpIHtcbiAgICAgICAgY29uc3QgcGVybWlzc2lvbnMgPSBbXTtcbiAgICAgICAgZGF0YS5hbGwuZm9yRWFjaChlbGVtZW50ID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHsgbmFtZSB9ID0gZWxlbWVudDtcbiAgICAgICAgICAgIHBlcm1pc3Npb25zLnB1c2goe1xuICAgICAgICAgICAgICAgIGlkOiBlbGVtZW50LmlkLCAvLyBwZXJtaXNzaW9uSWQ6IFVzZWQgdG8gdXBkYXRlIHRoZSBwZXJtaXNzaW9ucyBvbiBjaGFuZ2VcbiAgICAgICAgICAgICAgICBwYXJlbnROYW1lOiBuYW1lLmluY2x1ZGVzKCcuJykgPyBuYW1lLnN1YnN0cmluZygwLCBuYW1lLmxhc3RJbmRleE9mKCcuJykpIDogbnVsbCxcbiAgICAgICAgICAgICAgICBuYW1lLFxuICAgICAgICAgICAgICAgIGRpc3BsYXlOYW1lOiBlbGVtZW50Lm5hbWVcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgcGVybWlzc2lvbnMsXG4gICAgICAgICAgICBncmFudGVkUGVybWlzc2lvbk5hbWVzOiBPYmplY3Qua2V5cyhkYXRhLmdyYW50ZWQpXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgZXZhbHVhdGVQZXJtaXNzaW9ucyhcbiAgICAgICAgcGVybWlzc2lvbjogc3RyaW5nLFxuICAgICAgICBwcm9kdWN0S2V5OiBzdHJpbmcgPSBudWxsLFxuICAgICAgICBwZXJtaXNzaW9uX2tleTogc3RyaW5nID0gbnVsbCxcbiAgICAgICAgcHJvZHVjdFNsdWc6IHN0cmluZyA9IG51bGxcbiAgICApOiBib29sZWFuIHtcbiAgICAgICAgaWYgKCFwZXJtaXNzaW9uKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICAvLyAtICAgYFN1cGVyQWRtaW5gICAgICAgICAgICAgID0+ICBHb2QtbGlrZSBwb3dlciAtIE1vc3QgcHJpdmlsZWdlZFxuXG4gICAgICAgIC8vIC0gICBgU3Vic2NyaXB0aW9uU3VwZXJPd25lcmAgPT4gIFNvbWUgb2YgdGhlIGZlYXR1cmVzIHVuZGVyIEFkbWluIE1lbnVcbiAgICAgICAgLy8gLSAgIGBTdWJzY3JpcHRpb25TdXBlckFkbWluYCA9PiAgU29tZSBvZiB0aGUgZmVhdHVyZXMgdW5kZXIgQWRtaW4gTWVudVxuXG4gICAgICAgIC8vIC0gICBgU3Vic2NyaXB0aW9uT3duZXJgICAgICA9PiBQcm9kdWN0IDogU2VjdGlvbiBvZiBhIGdpdmVuIHN1YnNjcmlwdGlvblxuICAgICAgICAvLyAtICAgYFN1YnNjcmlwdGlvbkFkbWluYCAgICAgPT4gUHJvZHVjdCA6IFNlY3Rpb24gb2YgYSBnaXZlbiBzdWJzY3JpcHRpb25cblxuICAgICAgICAvLyAtICAgYFBhZ2VzLkJldGFgICAgICAgICAgICAgPT4gUHJvZHVjdCA6IFNlY3Rpb24gb2YgdGhlIHBhZ2VcbiAgICAgICAgLy8gLSAgIGBQYWdlcy5BbHBoYWAgICAgICAgICAgID0+IFByb2R1Y3QgOiBTZWN0aW9uIG9mIHRoZSBwYWdlXG5cbiAgICAgICAgbGV0IGV4cHIgPSAnJztcbiAgICAgICAgaWYgKHBlcm1pc3Npb24gPT09IFBFUk1JU1NJT05fTkFNRVMuU3VwZXJBZG1pbikge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuaXNTdXBlckFkbWluKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHBlcm1pc3Npb24gPT09IFBFUk1JU1NJT05fTkFNRVMuU3Vic2NyaXB0aW9uQWRtaW4pIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmlzVXNlclN1YnNjcmlwdGlvbkFkbWluKCkgfHwgdGhpcy5pc1VzZXJTdWJzY3JpcHRpb25Pd25lcigpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChwZXJtaXNzaW9uID09PSBQRVJNSVNTSU9OX05BTUVTLlN1YnNjcmlwdGlvbk93bmVyKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5pc1VzZXJTdWJzY3JpcHRpb25Pd25lcigpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChwZXJtaXNzaW9uID09PSBQRVJNSVNTSU9OX05BTUVTLlN1YnNjcmlwdGlvblN1cGVyQWRtaW4pIHtcbiAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgdGhpcy5pc1VzZXJTdWJzY3JpcHRpb25TdXBlckFkbWluKCkgfHxcbiAgICAgICAgICAgICAgICB0aGlzLmlzVXNlclN1YnNjcmlwdGlvblN1cGVyT3duZXIoKSB8fFxuICAgICAgICAgICAgICAgIHRoaXMuaXNTdXBlckFkbWluKClcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHBlcm1pc3Npb24gPT09IFBFUk1JU1NJT05fTkFNRVMuU3Vic2NyaXB0aW9uU3VwZXJPd25lcikge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuaXNVc2VyU3Vic2NyaXB0aW9uU3VwZXJPd25lcigpIHx8IHRoaXMuaXNTdXBlckFkbWluKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgQURNSU5fU1VCX01FTlVfV0hJVEVMSVNULnNvbWUodiA9PiBwZXJtaXNzaW9uLmluY2x1ZGVzKHYpKSAmJlxuICAgICAgICAgICAgKHRoaXMuaXNVc2VyU3Vic2NyaXB0aW9uU3VwZXJBZG1pbigpIHx8IHRoaXMuaXNVc2VyU3Vic2NyaXB0aW9uU3VwZXJPd25lcigpKVxuICAgICAgICApIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gVGhlIGZvbGxvd2luZyBldmFsdWF0ZXMgYSBjb21wbGV4IHBlcm1pc3Npb25cbiAgICAgICAgLy8gRWc6IGAoICR7QkFTSUNfUEVSTUlTU0lPTlMuTXNwS2V5fSB8fCAke0JBU0lDX1BFUk1JU1NJT05TLlNhYVNLZXl9ICkgJiYgJHtCQVNJQ19QRVJNSVNTSU9OUy5CZXRhfWBcbiAgICAgICAgcGVybWlzc2lvbi5zcGxpdCgnICcpLmZvckVhY2goeCA9PiB7XG4gICAgICAgICAgICBsZXQgcmF3ID0geDtcbiAgICAgICAgICAgIGlmICh4LmluY2x1ZGVzKCdQYWdlcycpKSB7XG4gICAgICAgICAgICAgICAgaWYgKHByb2R1Y3RLZXkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmF3ID0gYHRoaXMuaXNHcmFudGVkKCcke3h9JywgJyR7cHJvZHVjdEtleX0nLCAnJHtwZXJtaXNzaW9uX2tleX0nLCAnJHtwcm9kdWN0U2x1Z30nKWA7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmF3ID0gYHRoaXMuaXNHcmFudGVkKCcke3h9JylgO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZXhwciArPSBgJHtyYXd9IGA7XG4gICAgICAgIH0sIHRoaXMpO1xuXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1ldmFsXG4gICAgICAgIC8vIE5PU09OQVI6IFRydXN0ZWQgZXZhbCBmdW5jdGlvbiBpcyBoYW5kbGVkIHNhZmVseSBoZXJlXG4gICAgICAgIHJldHVybiBldmFsKGV4cHIpOyAvLyBOT1NPTkFSXG4gICAgfVxuXG4gICAgZ2V0UGVybWlzc2lvbkJ5Um9sZShyb2xlSWQ6IG51bWJlcikge1xuICAgICAgICByZXR1cm4gdGhpcy5hcGkuZ2V0KGAvYWRtaW4vcm9sZV9wZXJtaXNzaW9ucy8ke3JvbGVJZH1gKTtcbiAgICB9XG5cbiAgICBzYXZlVXNlclBlcm1pc3Npb24ocGF5bG9hZCkge1xuICAgICAgICByZXR1cm4gdGhpcy5hcGkucG9zdChgL2FkbWluL3JvbGVfcGVybWlzc2lvbnNgLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBkZXRlcm1pbmUgdXNlciBpcyBzdXBlcl9hZG1pbiB1c2luZyB1c2VyLmF1dGguZ3JhbnRlZFsnUGFnZXMuU3VwZXJBZG1pbiddXG4gICAgICovXG4gICAgaXNTdXBlckFkbWluKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gISF0aGlzLnVzZXIuYXV0aC5ncmFudGVkWydQYWdlcy5TdXBlckFkbWluJ10gfHwgZmFsc2U7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogIEFueSBQcm9kdWN0IEFkbWluIHJlZ2FyZGxlc3Mgb2YgdGhlIHByb2R1Y3QgYmVpbmcgbWFzdGVyIHByb2R1Y3Qgb3Igbm90LlxuICAgICAqL1xuICAgIHB1YmxpYyBpc1VzZXJTdWJzY3JpcHRpb25Pd25lcihwcm9kdWN0Pyk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAoIXByb2R1Y3QpIHtcbiAgICAgICAgICAgIHByb2R1Y3QgPSB0aGlzLmdldEN1cnJlbnRQcm9kdWN0KCk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRQcm9kdWN0ID0gUGVybWlzc2lvblNlcnZpY2U/LnNlbGVjdGVkUHJvZHVjdDtcbiAgICAgICAgY29uc3Qgc3Vic2NyaXB0aW9uU2x1ZyA9IHNlbGVjdGVkUHJvZHVjdD8uc3Vic2NyaXB0aW9uX3NsdWc7XG4gICAgICAgIHJldHVybiAhIXRoaXMudXNlci5hdXRoLmdyYW50ZWRbXG4gICAgICAgICAgICBgUGFnZXMuUHJvZHVjdC4ke3N1YnNjcmlwdGlvblNsdWd9LiR7cHJvZHVjdC5wZXJtaXNzaW9uX2tleX0uJHtwcm9kdWN0LmZlYXR1cmVfa2V5fS5TdWJzY3JpcHRpb25Pd25lcmBcbiAgICAgICAgXTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBbnkgUHJvZHVjdCBBZG1pbiByZWdhcmRsZXNzIG9mIHRoZSBwcm9kdWN0IGJlaW5nIG1hc3RlciBwcm9kdWN0IG9yIG5vdC5cbiAgICAgKiAqcmJhY0FsbG93PVwiU3Vic2NyaXB0aW9uQWRtaW5cIlxuICAgICAqIEByZXR1cm5zXG4gICAgICovXG4gICAgcHVibGljIGlzVXNlclN1YnNjcmlwdGlvbkFkbWluKHByb2R1Y3Q/KTogYm9vbGVhbiB7XG4gICAgICAgIGlmICghcHJvZHVjdCkge1xuICAgICAgICAgICAgcHJvZHVjdCA9IHRoaXMuZ2V0Q3VycmVudFByb2R1Y3QoKTtcbiAgICAgICAgfVxuICAgICAgY29uc3Qgc2VsZWN0ZWRQcm9kdWN0ID0gUGVybWlzc2lvblNlcnZpY2U/LnNlbGVjdGVkUHJvZHVjdDtcbiAgICAgIGNvbnN0IHN1YnNjcmlwdGlvblNsdWcgPSBzZWxlY3RlZFByb2R1Y3Q/LnN1YnNjcmlwdGlvbl9zbHVnO1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgISF0aGlzLnVzZXIuYXV0aC5ncmFudGVkW1xuICAgICAgICAgICAgICAgIGBQYWdlcy5Qcm9kdWN0LiR7c3Vic2NyaXB0aW9uU2x1Z30uJHtwcm9kdWN0LnBlcm1pc3Npb25fa2V5fS4ke3Byb2R1Y3QuZmVhdHVyZV9rZXl9LlN1YnNjcmlwdGlvbkFkbWluYFxuICAgICAgICAgICAgXSB8fFxuICAgICAgICAgICAgISF0aGlzLnVzZXIuYXV0aC5ncmFudGVkW1xuICAgICAgICAgICAgICAgIGBQYWdlcy5Qcm9kdWN0LiR7c3Vic2NyaXB0aW9uU2x1Z30uJHtwcm9kdWN0LnBlcm1pc3Npb25fa2V5fS4ke3Byb2R1Y3QuZmVhdHVyZV9rZXl9LlN1YnNjcmlwdGlvbk93bmVyYFxuICAgICAgICAgICAgXVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFueSBQcm9kdWN0IEFkbWluIG9mIHRoZSBwcm9kdWN0IGJlaW5nIHRoZSBtYXN0ZXIgcHJvZHVjdFxuICAgICAqL1xuICAgIGlzVXNlclN1YnNjcmlwdGlvblN1cGVyQWRtaW4ocHJvZHVjdD8pOiBib29sZWFuIHtcbiAgICAgICAgaWYgKCFwcm9kdWN0KSB7XG4gICAgICAgICAgICBwcm9kdWN0ID0gdGhpcy5nZXRDdXJyZW50UHJvZHVjdCgpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHNlbGVjdGVkUHJvZHVjdCA9IFBlcm1pc3Npb25TZXJ2aWNlPy5zZWxlY3RlZFByb2R1Y3Q7XG4gICAgICAgIGNvbnN0IHN1YnNjcmlwdGlvblNsdWcgPSBzZWxlY3RlZFByb2R1Y3Q/LnN1YnNjcmlwdGlvbl9zbHVnO1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgISF0aGlzLnVzZXIuYXV0aC5ncmFudGVkW1xuICAgICAgICAgICAgICAgIGBQYWdlcy5Qcm9kdWN0LiR7c3Vic2NyaXB0aW9uU2x1Z30uJHtwcm9kdWN0LnBlcm1pc3Npb25fa2V5fS4ke3Byb2R1Y3QuZmVhdHVyZV9rZXl9LlN1YnNjcmlwdGlvblN1cGVyQWRtaW5gXG4gICAgICAgICAgICBdIHx8XG4gICAgICAgICAgICAhIXRoaXMudXNlci5hdXRoLmdyYW50ZWRbXG4gICAgICAgICAgICAgICAgYFBhZ2VzLlByb2R1Y3QuJHtzdWJzY3JpcHRpb25TbHVnfS4ke3Byb2R1Y3QucGVybWlzc2lvbl9rZXl9LiR7cHJvZHVjdC5mZWF0dXJlX2tleX0uU3Vic2NyaXB0aW9uU3VwZXJPd25lcmBcbiAgICAgICAgICAgIF1cbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBpc1VzZXJNYXN0ZXJTdWJzY3JpcHRpb25TdXBlckFkbWluKHByb2R1Y3Q/KTogYm9vbGVhbiB7XG4gICAgICAgIGlmICghcHJvZHVjdCkge1xuICAgICAgICAgICAgcHJvZHVjdCA9IHRoaXMuZ2V0Q3VycmVudFByb2R1Y3QoKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gISF0aGlzLnVzZXIuYXV0aC5ncmFudGVkW1xuICAgICAgICAgICAgYFBhZ2VzLlByb2R1Y3QuJHtwcm9kdWN0LnBlcm1pc3Npb25fa2V5fS4ke3Byb2R1Y3QuZmVhdHVyZV9rZXl9LlN1YnNjcmlwdGlvblN1cGVyQWRtaW5gXG4gICAgICAgIF07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQW55IFByb2R1Y3QgQWRtaW4gb2YgdGhlIHByb2R1Y3QgYmVpbmcgdGhlIG1hc3RlciBwcm9kdWN0XG4gICAgICovXG4gICAgcHVibGljIGlzVXNlclN1YnNjcmlwdGlvblN1cGVyT3duZXIocHJvZHVjdD8pOiBib29sZWFuIHtcbiAgICAgICAgaWYgKCFwcm9kdWN0KSB7XG4gICAgICAgICAgICBwcm9kdWN0ID0gdGhpcy5nZXRDdXJyZW50UHJvZHVjdCgpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHNlbGVjdGVkUHJvZHVjdCA9IFBlcm1pc3Npb25TZXJ2aWNlPy5zZWxlY3RlZFByb2R1Y3Q7XG4gICAgICAgIGNvbnN0IHN1YnNjcmlwdGlvblNsdWcgPSBzZWxlY3RlZFByb2R1Y3Q/LnN1YnNjcmlwdGlvbl9zbHVnO1xuICAgICAgICByZXR1cm4gISF0aGlzLnVzZXIuYXV0aC5ncmFudGVkW1xuICAgICAgICAgICAgYFBhZ2VzLlByb2R1Y3QuJHtzdWJzY3JpcHRpb25TbHVnfS4ke3Byb2R1Y3QucGVybWlzc2lvbl9rZXl9LiR7cHJvZHVjdC5mZWF0dXJlX2tleX0uU3Vic2NyaXB0aW9uU3VwZXJPd25lcmBcbiAgICAgICAgXTtcbiAgICB9XG5cbiAgICBzZXRDdXJyZW50UHJvZHVjdChwcm9kdWN0KSB7XG4gICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKFxuICAgICAgICAgICAgJ3Byb2R1Y3QnLFxuICAgICAgICAgICAgSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgICAgICAgIGlkOiBwcm9kdWN0LmlkLFxuICAgICAgICAgICAgICAgIHBlcm1pc3Npb25fa2V5OiBwcm9kdWN0LnBlcm1pc3Npb25fa2V5LFxuICAgICAgICAgICAgICAgIGZlYXR1cmVfa2V5OiBwcm9kdWN0LmZlYXR1cmVfa2V5LFxuICAgICAgICAgICAgICAgIHN1YnNjcmlwdGlvbklkOiBwcm9kdWN0LnN1YnNjcmlwdGlvbklkLFxuICAgICAgICAgICAgICAgIHN1YnNjcmlwdGlvbl9zbHVnOiBwcm9kdWN0LnN1YnNjcmlwdGlvbl9zbHVnXG4gICAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRDdXJyZW50UHJvZHVjdCgpIHtcbiAgICAgICAgcmV0dXJuIEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3Byb2R1Y3QnKSk7XG4gICAgfVxufVxuIl19
|
|
@@ -238,7 +238,7 @@ export class SentryErrorHandler {
|
|
|
238
238
|
// Ensure all errors have a proper message
|
|
239
239
|
this.errorMessageFormatter(error);
|
|
240
240
|
// Existing Sentry initialization logic
|
|
241
|
-
this.
|
|
241
|
+
this.sentryInitialization(error, incomingError);
|
|
242
242
|
}
|
|
243
243
|
handleNonHttpErrorResponse(error) {
|
|
244
244
|
if (typeof error === 'object' && 'message' in error) {
|
|
@@ -262,7 +262,7 @@ export class SentryErrorHandler {
|
|
|
262
262
|
error = new Error(enhancedErrorMessage); // NOSONAR
|
|
263
263
|
}
|
|
264
264
|
}
|
|
265
|
-
|
|
265
|
+
sentryInitialization(error, incomingError) {
|
|
266
266
|
if (!SentryErrorHandler.sentryInitialized) {
|
|
267
267
|
this.initializeSentryAsync()
|
|
268
268
|
.then(() => {
|
|
@@ -307,6 +307,9 @@ export class SentryErrorHandler {
|
|
|
307
307
|
});
|
|
308
308
|
}
|
|
309
309
|
handleNonStandardError(error) {
|
|
310
|
+
if ('isTrusted' in error) {
|
|
311
|
+
return;
|
|
312
|
+
}
|
|
310
313
|
// If it's an object but not a standard Error, attempt to log its properties safely
|
|
311
314
|
let errorMessage = 'Captured non-standard error with no message'; // NOSONAR
|
|
312
315
|
// Try to extract any message-like property safely
|
|
@@ -362,4 +365,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImpo
|
|
|
362
365
|
providedIn: 'root'
|
|
363
366
|
}]
|
|
364
367
|
}], ctorParameters: () => [{ type: i1.AppConfigService }] });
|
|
365
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VudHJ5LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2NvbW1vbi1zZXJ2aWNlcy9zcmMvbGliL3NlbnRyeS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3pELE9BQU8sRUFBZ0IsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pELE9BQU8sS0FBSyxNQUFNLE1BQU0scUJBQXFCLENBQUM7QUFFOUMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHMUMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sOEJBQThCLENBQUM7OztBQUtoRSxNQUFNLE9BQU8sa0JBQWtCO2FBRVosc0JBQWlCLEdBQUcsS0FBSyxBQUFSLENBQVM7SUFFekMsWUFBNkIsZ0JBQWtDO1FBQWxDLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7SUFBRyxDQUFDO0lBRTNELEtBQUssQ0FBQyxxQkFBcUI7UUFDL0IsSUFBSSxrQkFBa0IsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBQ3ZDLHdEQUF3RDtZQUN4RCxPQUFPO1FBQ1gsQ0FBQztRQUNELE1BQU0sQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBRTVCLE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7UUFFakQsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDN0MsSUFBSSxHQUFHLEVBQUUsWUFBWSxFQUFFLGFBQWEsRUFBRSxDQUFDO2dCQUNuQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxNQUFNLEVBQUUsR0FBRyxHQUFHLENBQUMsWUFBWSxDQUFDLGFBQWEsRUFBRSxD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LENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDakUsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUM7WUFDakMsU0FBUyxDQUFDLEtBQUssWUFBWSxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FDMUUsV0FBVyxDQUFDLEVBQUU7Z0JBQ1YsTUFBTSxXQUFXLEdBQUcsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7Z0JBRXZFLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztZQUMvRCxDQUFDLENBQ0osQ0FBQztRQUNOLENBQUM7UUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQ1QsT0FBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDNUIsQ0FBQztJQUNMLENBQUM7K0dBeFpRLGtCQUFrQjttSEFBbEIsa0JBQWtCLGNBRmYsTUFBTTs7NEZBRVQsa0JBQWtCO2tCQUg5QixVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBFcnJvclJlc3BvbnNlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgRXJyb3JIYW5kbGVyLCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgKiBhcyBTZW50cnkgZnJvbSAnQHNlbnRyeS9hbmd1bGFyLWl2eSc7XG5cbmltcG9ydCB7IFN0YXR1c0NvZGVzIH0gZnJvbSAnaHR0cC1zdGF0dXMtY29kZXMnO1xuaW1wb3J0IHsgZnJvbUVycm9yIH0gZnJvbSAnc3RhY2t0cmFjZS1qcyc7XG5cbmltcG9ydCB7IFVzZXIgfSBmcm9tICdAcG9zaXdpc2UvY29tbW9uLXV0aWxpdGllcyc7XG5pbXBvcnQgeyBBcHBDb25maWdTZXJ2aWNlIH0gZnJvbSAnQHBvc2l3aXNlL2FwcC1jb25maWctc2VydmljZSc7XG5cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgU2VudHJ5RXJyb3JIYW5kbGVyIGltcGxlbWVudHMgRXJyb3JIYW5kbGVyIHtcbiAgICBwcml2YXRlIHN0YXRpYyB1c2VyOiBQYXJ0aWFsPFVzZXI+O1xuICAgIHByaXZhdGUgc3RhdGljIHNlbnRyeUluaXRpYWxpemVkID0gZmFsc2U7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IGFwcENvbmZpZ1NlcnZpY2U6IEFwcENvbmZpZ1NlcnZpY2UpIHt9XG5cbiAgICBwcml2YXRlIGFzeW5jIGluaXRpYWxpemVTZW50cnlBc3luYygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgaWYgKFNlbnRyeUVycm9ySGFuZGxlci5zZW50cnlJbml0aWFsaXplZCkge1xuICAgICAgICAgICAgLy8gU2VudHJ5IGlzIGFscmVhZHkgaW5pdGlhbGl6ZWQsIG5vIG5lZWQgdG8gZG8gaXQgYWdhaW5cbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBTZW50cnkuY3JlYXRlRXJyb3JIYW5kbGVyKCk7XG5cbiAgICAgICAgY29uc3QgY29uZmlnID0gYXdhaXQgdGhpcy5nZXRTZW50cnlDb25maWdBc3luYygpO1xuXG4gICAgICAgIHRoaXMuYXBwQ29uZmlnU2VydmljZS5hcHBDb25maWckLnN1YnNjcmliZShlbnYgPT4ge1xuICAgICAgICAgICAgaWYgKGVudj8uaW50ZWdyYXRpb25zPy5zZW50cnlfY29uZmlnKSB7XG4gICAgICAgICAgICAgICAgU2VudHJ5LmluaXQoeyAuLi5jb25maWcsIC4uLmVudi5pbnRlZ3JhdGlvbnMuc2VudHJ5X2NvbmZpZyB9KTtcbiAgICAgICAgICAgICAgICBTZW50cnlFcnJvckhhbmRsZXIuc2VudHJ5SW5pdGlhbGl6ZWQgPSB0cnVlO1xuXG4gICAgICAgICAgICAgICAgLy8gQWRkIGEgZ2xvYmFsIGxpc3RlbmVyIGZvciB1bmhhbmRsZWQgcHJvbWlzZSByZWplY3Rpb25zXG4gICAgICAgICAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3VuaGFuZGxlZHJlamVjdGlvbicsIChldmVudDogUHJvbWlzZVJlamVjdGlvbkV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlUHJvbWlzZVJlamVjdGlvbihldmVudCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICAvLyBBZGQgYSBnbG9iYWwgbGlzdGVuZXIgZm9yIHVuaGFuZGxlZCBwcm9taXNlIHJlamVjdGlvbnNcbiAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3VuaGFuZGxlZHJlamVjdGlvbicsIChldmVudDogUHJvbWlzZVJlamVjdGlvbkV2ZW50KSA9PiB7XG4gICAgICAgICAgICB0aGlzLmhhbmRsZVByb21pc2VSZWplY3Rpb24oZXZlbnQpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIGdldFNlbnRyeUNvbmZpZ0FzeW5jKCk6IFByb21pc2U8U2VudHJ5LkJyb3dzZXJPcHRpb25zPiB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGVudmlyb25tZW50ID1cbiAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uaG9zdD8uaW5jbHVkZXMoJ2RldicpIHx8IHdpbmRvdy5sb2NhdGlvbi5ob3N0Py5pbmNsdWRlcygnbG9jYWxob3N0JylcbiAgICAgICAgICAgICAgICAgICAgPyAnZGV2ZWxvcG1lbnQnXG4gICAgICAgICAgICAgICAgICAgIDogJ3Byb2R1Y3Rpb24nO1xuXG4gICAgICAgICAgICBjb25zdCBpZ25vcmVkUGF0aHMgPSBbJyddO1xuICAgICAgICAgICAgY29uc3QgaGVhbHRoQ2hlY2tQYXRocyA9IFsnL3BpbmcnXTtcbiAgICAgICAgICAgIGNvbnN0IG9uZVBlcmNlbnRJZ25vcmVkUGF0aHMgPSBbJyddO1xuICAgICAgICAgICAgY29uc3QgZml2ZVBlcmNlbnRJZ25vcmVkUGF0aHMgPSBbJyddO1xuXG4gICAgICAgICAgICBjb25zdCBjb25maWc6IFNlbnRyeS5Ccm93c2VyT3B0aW9ucyA9IHtcbiAgICAgICAgICAgICAgICBkc246IG51bGwsXG4gICAgICAgICAgICAgICAgdHJhY2VzU2FtcGxlUmF0ZTogMC4xLFxuICAgICAgICAgICAgICAgIGJlZm9yZVNlbmQoZXZlbnQsIGhpbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gQ2hlY2sgaWYgdGhlIGV2ZW50IGlzIG9mIHR5cGUgQ2xvc2VFdmVudCBhbmQgaWdub3JlIGl0XG4gICAgICAgICAgICAgICAgICAgIGlmIChldmVudD8uZXhjZXB0aW9uPy52YWx1ZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50LmV4Y2VwdGlvbi52YWx1ZXMgPSBldmVudC5leGNlcHRpb24udmFsdWVzLmZpbHRlcih2YWx1ZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVXBkYXRlIHRoZSBjb25kaXRpb24gYmFzZWQgb24gdGhlIGFjdHVhbCBzdHJ1Y3R1cmUgb2YgdGhlIGV2ZW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICEoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlLnR5cGUgPT09ICdDbG9zZUV2ZW50JyB8fCB2YWx1ZS52YWx1ZS5pbmNsdWRlcygnQ2xvc2VFdmVudCcpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGV2ZW50Py5leGNlcHRpb24/LnZhbHVlcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQuZXhjZXB0aW9uLnZhbHVlcyA9IGV2ZW50LmV4Y2VwdGlvbi52YWx1ZXMuZmlsdGVyKHZhbHVlID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBDaGVjayBmb3IgdGhlIHNwZWNpZmljIGVycm9yIG1lc3NhZ2UgYW5kIGlnbm9yZSBpdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAhKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZS50eXBlID09PSAnRXJyb3InICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlLnZhbHVlLmluY2x1ZGVzKCdSZXNpemVPYnNlcnZlciBsb29wIGNvbXBsZXRlZCcpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gb3JpZ2luYXRlcyBmcm9tIHZlbmRvci5qcyBmaWxlXG4gICAgICAgICAgICAgICAgICAgIGlmIChldmVudD8uZXhjZXB0aW9uPy52YWx1ZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGlzSnNvblBhcnNpbmdFcnJvciA9IGV2ZW50LmV4Y2VwdGlvbi52YWx1ZXMuc29tZSh2YWx1ZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUudHlwZSA9PT0gJ1N5bnRheEVycm9yJyAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT8udmFsdWU/LmluY2x1ZGVzKFwiZXhwZWN0ZWQgJzonIGFmdGVyIHByb3BlcnR5IG5hbWUgaW5cIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc0pzb25QYXJzaW5nRXJyb3IpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIC8vIENoZWNrIGlmIHRoZSBldmVudCBpcyBhIENodW5rTG9hZEVycm9yIGFuZCBpZ25vcmUgaXQgKGl0IGNvdWxkIGJlIGJlY2F1c2Ugb2YgcG9vciBuZXR3b3JrKVxuICAgICAgICAgICAgICAgICAgICBpZiAoZXZlbnQ/LmV4Y2VwdGlvbj8udmFsdWVzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBldmVudC5leGNlcHRpb24udmFsdWVzID0gZXZlbnQuZXhjZXB0aW9uLnZhbHVlcy5maWx0ZXIodmFsdWUgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAhKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZS50eXBlID09PSAnQ2h1bmtMb2FkRXJyb3InIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlLnZhbHVlLmluY2x1ZGVzKCdDaHVua0xvYWRFcnJvcjogTG9hZGluZyBjaHVuaycpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gQ2hlY2sgaWYgdGhlIGV2ZW50IGlzIGEgc2NyaXB0IGxvYWRpbmcgZXJyb3IgYW5kIGlnbm9yZSBpdFxuICAgICAgICAgICAgICAgICAgICBpZiAoZXZlbnQ/LmV4Y2VwdGlvbj8udmFsdWVzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBldmVudC5leGNlcHRpb24udmFsdWVzID0gZXZlbnQuZXhjZXB0aW9uLnZhbHVlcy5maWx0ZXIodmFsdWUgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAhKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZS50eXBlID09PSAnRXJyb3InICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlLnZhbHVlLmluY2x1ZGVzKCdDb3VsZCBub3QgbG9hZCBcInV0aWxcIicpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gQ2hlY2sgaWYgdGhlIGV2ZW50IGlzIGEgdGltZW91dCBlcnJvciBhbmQgaWdub3JlIGl0XG4gICAgICAgICAgICAgICAgICAgIGlmIChldmVudD8uZXhjZXB0aW9uPy52YWx1ZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50LmV4Y2VwdGlvbi52YWx1ZXMgPSBldmVudC5leGNlcHRpb24udmFsdWVzLmZpbHRlcih2YWx1ZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICEoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlLnR5cGUgPT09ICdFcnJvcicgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUudmFsdWUuaW5jbHVkZXMoJ0Vycm9yIGxvYWRpbmcgcGxvdGx5LmpzIGxpYnJhcnkgZnJvbScpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gQ2hlY2sgaWYgdGhlIGV2ZW50IGlzIHJlbGF0ZWQgdG8gY3Jvc3Mtb3JpZ2luIGZyYW1lIGFjY2Vzc1xuICAgICAgICAgICAgICAgICAgICBpZiAoZXZlbnQ/LmV4Y2VwdGlvbj8udmFsdWVzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpc0Nyb3NzT3JpZ2luRnJhbWVFcnJvciA9IGV2ZW50LmV4Y2VwdGlvbi52YWx1ZXMuc29tZSh2YWx1ZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUudHlwZSA9PT0gJ1NlY3VyaXR5RXJyb3InICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPy52YWx1ZT8uaW5jbHVkZXMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkZhaWxlZCB0byByZWFkIGEgbmFtZWQgcHJvcGVydHkgJ25hdmlnYXRvcicgZnJvbSAnV2luZG93JzogQmxvY2tlZCBhIGZyYW1lIHdpdGggb3JpZ2luXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzQ3Jvc3NPcmlnaW5GcmFtZUVycm9yKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRXhjbHVkZSBjcm9zcy1vcmlnaW4gZnJhbWUgZXJyb3JzIGZyb20gYmVpbmcgcmVwb3J0ZWQgdG8gU2VudHJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAvLyBDaGVjayBpZiB0aGUgZXZlbnQgaGFzIGFuIGV4Y2VwdGlvbiBhbmQgdmFsdWVzIGFycmF5XG4gICAgICAgICAgICAgICAgICAgIGlmIChldmVudD8uZXhjZXB0aW9uPy52YWx1ZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIEZpbHRlciBvdXQgZXZlbnRzIGdlbmVyYXRlZCBieSBUcnlDYXRjaCBhbmQgR2xvYmFsSGFuZGxlcnNcbiAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50LmV4Y2VwdGlvbi52YWx1ZXMgPSBldmVudC5leGNlcHRpb24udmFsdWVzLmZpbHRlcih2YWx1ZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbWVjaGFuaXNtID0gdmFsdWUubWVjaGFuaXNtO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAhKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZWNoYW5pc20gJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1lY2hhbmlzbS50eXBlID09PSAnVHJ5Q2F0Y2gnIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZWNoYW5pc20udHlwZSA9PT0gJ0dsb2JhbEhhbmRsZXJzJylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAvLyBDaGVjayBpZiBpdCdzIGEgbm9uLWVycm9yIGV4Y2VwdGlvblxuICAgICAgICAgICAgICAgICAgICBjb25zdCBpc05vbkVycm9yRXhjZXB0aW9uID1cbiAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50Py5leGNlcHRpb24/LnZhbHVlcz8uWzBdPy52YWx1ZT8uc3RhcnRzV2l0aChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnTm9uLUVycm9yIGV4Y2VwdGlvbiBjYXB0dXJlZCdcbiAgICAgICAgICAgICAgICAgICAgICAgICkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgIChoaW50Py5vcmlnaW5hbEV4Y2VwdGlvbiBhcyBFcnJvcik/Lm1lc3NhZ2U/LnN0YXJ0c1dpdGgoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ05vbi1FcnJvciBleGNlcHRpb24gY2FwdHVyZWQnXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChpc05vbkVycm9yRXhjZXB0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBXZSB3YW50IHRvIGlnbm9yZSB0aG9zZSBraW5kcyBvZiBlcnJvcnNcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGV2ZW50O1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgZGVueVVybHM6IFsvZHJpZnQuKlxcLmpzL2ksIC9hbmFseXRpY3MuKlxcLmpzL2ksIC9wb2x5ZmlsbHMuKlxcLmpzL2ksIC92ZW5kb3IuKlxcLmpzL2ldLFxuICAgICAgICAgICAgICAgIGludGVncmF0aW9uczogW1xuICAgICAgICAgICAgICAgICAgICAvLyBSZWdpc3RlcnMgYW5kIGNvbmZpZ3VyZXMgdGhlIFRyYWNpbmcgaW50ZWdyYXRpb24sXG4gICAgICAgICAgICAgICAgICAgIC8vIHdoaWNoIGF1dG9tYXRpY2FsbHkgaW5zdHJ1bWVudHMgeW91ciBhcHBsaWNhdGlvbiB0byBtb25pdG9yIGl0c1xuICAgICAgICAgICAgICAgICAgICAvLyBwZXJmb3JtYW5jZSwgaW5jbHVkaW5nIGN1c3RvbSBBbmd1bGFyIHJvdXRpbmcgaW5zdHJ1bWVudGF0aW9uXG4gICAgICAgICAgICAgICAgICAgIG5ldyBTZW50cnkuQnJvd3NlclRyYWNpbmcoe1xuICAgICAgICAgICAgICAgICAgICAgICAgcm91dGluZ0luc3RydW1lbnRhdGlvbjogU2VudHJ5LnJvdXRpbmdJbnN0cnVtZW50YXRpb25cbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIHRyYWNlc1NhbXBsZXI6IHNhbXBsaW5nQ29udGV4dCA9PiB7XG4gICAgICAgICAgICAgICAgICAgIC8vIEV4YW1pbmUgcHJvdmlkZWQgY29udGV4dCBkYXRhIChpbmNsdWRpbmcgcGFyZW50IGRlY2lzaW9uLCBpZiBhbnkpIGFsb25nXG4gICAgICAgICAgICAgICAgICAgIC8vIHdpdGggYW55dGhpbmcgaW4gdGhlIGdsb2JhbCBuYW1lc3BhY2UgdG8gY29tcHV0ZSB0aGUgc2FtcGxlIHJhdGUgb3JcbiAgICAgICAgICAgICAgICAgICAgLy8gc2FtcGxpbmcgZGVjaXNpb24gZm9yIHRoaXMgdHJhbnNhY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcGF0aG5hbWUgPSBzYW1wbGluZ0NvbnRleHQubG9jYXRpb24ucGF0aG5hbWU7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpZ25vcmVkUGF0aHMuaW5jbHVkZXMocGF0aG5hbWUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChoZWFsdGhDaGVja1BhdGhzLmluY2x1ZGVzKHBhdGhuYW1lKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gdmVyeSBsb3cgcmF0ZSBhcyB0aGVzZSBhcmUgZXh0cmVtZWx5IGZyZXF1ZW50IGFuZCBwcmV0dHkgdXNlbGVzc1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDAuMDAxO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG9uZVBlcmNlbnRJZ25vcmVkUGF0aHMuaW5jbHVkZXMocGF0aG5hbWUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMC4wMTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChmaXZlUGVyY2VudElnbm9yZWRQYXRocy5pbmNsdWRlcyhwYXRobmFtZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAwLjA1O1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gRGVmYXVsdCBzYW1wbGUgcmF0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDAuMTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgZW52aXJvbm1lbnQsXG5cbiAgICAgICAgICAgICAgICAvLyBXZSBpZ25vcmUgU2VydmVyIEVycm9ycy4gV2UgaGF2ZSB0byBkZWZpbmUgaGVyZSBzaW5jZSBBbmd1bGFyXG4gICAgICAgICAgICAgICAgLy8gaHR0cCBjbGllbnQgdXNlcyBzZXRUaW1lb3V0IHRvIGRldGVjdCBodHRwIGNhbGwgcHJvZ3Jlc3MuXG4gICAgICAgICAgICAgICAgLy8gQW5kIHdoZW4gdGhlIGNhbGwgZmFpbHMsIGl0IHRocm93cyBhbiBleGNlcHRpb24gaW5zaWRlIHRoYXQgdGltZW91dFxuICAgICAgICAgICAgICAgIC8vIHRoYXQgYnViYmxlcyB1cCBoaWdoZXIgdG8gdGhlIG1haW4gQW5ndWxhcidzIGVycm9yIGhhbmRsZXIuXG4gICAgICAgICAgICAgICAgaWdub3JlRXJyb3JzOiBbXG4gICAgICAgICAgICAgICAgICAgICd0b3AuR0xPQkFMUycsXG4gICAgICAgICAgICAgICAgICAgICdSZXNpemVPYnNlcnZlciBsb29wIGNvbXBsZXRlZCB3aXRoIHVuZGVsaXZlcmVkIG5vdGlmaWNhdGlvbnMnXG4gICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHJlc29sdmUoY29uZmlnKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGluaXRpYWxpemVVc2VyKHVzZXI6IFBhcnRpYWw8VXNlcj4pIHtcbiAgICAgICAgU2VudHJ5RXJyb3JIYW5kbGVyLnVzZXIgPSB7XG4gICAgICAgICAgICBpZDogdXNlcj8uaWQsXG4gICAgICAgICAgICBuYW1lOiB1c2VyPy5maXJzdF9uYW1lLFxuICAgICAgICAgICAgZW1haWw6IHVzZXI/LmVtYWlsXG4gICAgICAgIH0gYXMgUGFydGlhbDxVc2VyPjtcbiAgICB9XG5cbiAgICBwcml2YXRlIGhhbmRsZVByb21pc2VSZWplY3Rpb24oZXZlbnQ6IFByb21pc2VSZWplY3Rpb25FdmVudCk6IHZvaWQge1xuICAgICAgICBjb25zdCBlcnJvciA9IGV2ZW50LnJlYXNvbjtcbiAgICAgICAgdGhpcy5sb2dUb1NlbnRyeShlcnJvcik7XG4gICAgICAgIHRoaXMubG9nVG9Db25zb2xlKGVycm9yKTtcbiAgICB9XG5cbiAgICBoYW5kbGVFcnJvcihpbmNvbWluZ0Vycm9yOiBIdHRwRXJyb3JSZXNwb25zZSB8IEVycm9yKSB7XG4gICAgICAgIC8vIGluIGNhc2Ugb2YgNDAxLCByZXR1cm4gbm8gZXhjZXB0aW9uXG4gICAgICAgIGlmIChpbmNvbWluZ0Vycm9yIGluc3RhbmNlb2YgSHR0cEVycm9yUmVzcG9uc2UpIHtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICBpbmNvbWluZ0Vycm9yLnN0YXR1cyA9PT0gU3RhdHVzQ29kZXMuVU5BVVRIT1JJWkVEIHx8XG4gICAgICAgICAgICAgICAgaW5jb21pbmdFcnJvci5zdGF0dXMgPT09IFN0YXR1c0NvZGVzLkZPUkJJRERFTlxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgLy8gSGFuZGxlIDQwMSBlcnJvciAoZS5nLiwgcmVkaXJlY3QgdG8gbG9naW4gcGFnZSlcbiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdVbmF1dGhvcml6ZWQgcmVxdWVzdDonLCBpbmNvbWluZ0Vycm9yKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChpbmNvbWluZ0Vycm9yLnN0YXR1cyA9PT0gU3RhdHVzQ29kZXMuVU5QUk9DRVNTQUJMRV9FTlRJVFkpIHtcbiAgICAgICAgICAgICAgICAvLyBIYW5kbGUgNDIyIGVycm9yXG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcignVU5QUk9DRVNTQUJMRV9FTlRJVFkgcmVxdWVzdDonLCBpbmNvbWluZ0Vycm9yKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChpbmNvbWluZ0Vycm9yLnN0YXR1cyA9PT0gNDMzKSB7XG4gICAgICAgICAgICAgICAgLy8gSGFuZGxlIDQzMyBlcnJvclxuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ292ZXIgbWVzc2FnZSBxdW90YTonLCBpbmNvbWluZ0Vycm9yKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5oYW5kbGVFeGNlcHRpb25FcnJvcihpbmNvbWluZ0Vycm9yKTtcbiAgICB9XG5cbiAgICBoYW5kbGVFeGNlcHRpb25FcnJvcihpbmNvbWluZ0Vycm9yKSB7XG4gICAgICAgIGlmIChpbmNvbWluZ0Vycm9yKSB7XG4gICAgICAgICAgICBsZXQgZXJyb3IgPSBpbmNvbWluZ0Vycm9yOyAvLyBUaGUgYWN0dWFsIGVycm9yIHRvIGxvZ1xuICAgICAgICAgICAgd2hpbGUgKCdvcmlnaW5hbEVycm9yJyBpbiBlcnJvciAmJiBlcnJvci5vcmlnaW5hbEVycm9yIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmxvZ1RvQ29uc29sZShlcnJvcik7XG4gICAgICAgICAgICAgICAgZXJyb3IgPSBlcnJvci5vcmlnaW5hbEVycm9yO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5leHRyYWN0T3JpZ2luYWxFcnJvcihlcnJvciwgaW5jb21pbmdFcnJvcik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBleHRyYWN0T3JpZ2luYWxFcnJvcihlcnJvciwgaW5jb21pbmdFcnJvcikge1xuICAgICAgICAvLyBFeGNsdWRlIHNwZWNpZmljIGVycm9yc1xuICAgICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBIdHRwRXJyb3JSZXNwb25zZSkge1xuICAgICAgICAgICAgaWYgKGVycm9yLnN0YXR1cyA9PT0gU3RhdHVzQ29kZXMuTk9UX0ZPVU5EKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS53YXJuKCdFeGNsdWRlZCA0MDQgZXJyb3I6JywgZXJyb3IpO1xuICAgICAgICAgICAgICAgIHJldHVybjsgLy8gU2tpcCBsb2dnaW5nIHRvIFNlbnRyeVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGVycm9yLnN0YXR1cyA9PT0gMCAmJiBlcnJvci5zdGF0dXNUZXh0ID09PSAnVW5rbm93biBFcnJvcicpIHtcbiAgICAgICAgICAgICAgICAvLyBIYW5kbGUgbmV0d29yay1yZWxhdGVkIGVycm9ycyBkaWZmZXJlbnRseSBvciBzdXBwcmVzcyB0aGVtXG4gICAgICAgICAgICAgICAgY29uc29sZS53YXJuKCdOZXR3b3JrLXJlbGF0ZWQgZXJyb3I6JywgZXJyb3IpO1xuICAgICAgICAgICAgICAgIHJldHVybjsgLy8gRG9uJ3QgcmV0aHJvdyB0aGUgZXJyb3JcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxldCB7IG1lc3NhZ2UgfSA9IGVycm9yO1xuICAgICAgICAgICAgaWYgKCFtZXNzYWdlKSB7XG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgbWVzc2FnZSA9IEpTT04uc3RyaW5naWZ5KGVycm9yKTtcbiAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSBlcnJvci50b1N0cmluZygpO1xuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlcnJvciA9IG5ldyBFcnJvcihgR290IEh0dHBFcnJvclJlc3BvbnNlIG9uIFVSTCAke2Vycm9yLnVybH0gbWVzc2FnZTogJHttZXNzYWdlfWApO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5oYW5kbGVOb25IdHRwRXJyb3JSZXNwb25zZShlcnJvcik7XG5cbiAgICAgICAgLy8gRW5zdXJlIGFsbCBlcnJvcnMgaGF2ZSBhIHByb3BlciBtZXNzYWdlXG4gICAgICAgIHRoaXMuZXJyb3JNZXNzYWdlRm9ybWF0dGVyKGVycm9yKTtcblxuICAgICAgICAvLyBFeGlzdGluZyBTZW50cnkgaW5pdGlhbGl6YXRpb24gbG9naWNcbiAgICAgICAgdGhpcy5zZW50cnlJbnRpbGl6YXRpb24oZXJyb3IsIGluY29taW5nRXJyb3IpO1xuICAgIH1cblxuICAgIGhhbmRsZU5vbkh0dHBFcnJvclJlc3BvbnNlKGVycm9yKSB7XG4gICAgICAgIGlmICh0eXBlb2YgZXJyb3IgPT09ICdvYmplY3QnICYmICdtZXNzYWdlJyBpbiBlcnJvcikge1xuICAgICAgICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgSHR0cEVycm9yUmVzcG9uc2UpIHtcbiAgICAgICAgICAgICAgICBpZiAoZXJyb3Iuc3RhdHVzICE9PSBTdGF0dXNDb2Rlcy5VTkFVVEhPUklaRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgZXJyb3IgPSBuZXcgRXJyb3IoYE9iamVjdCBjYXB0dXJlZCBhcyBleGNlcHRpb246ICR7ZXJyb3J9YCk7IC8vIE5PU09OQVJcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBFeGNsdWRlIHJlcG9ydGluZyA0MDEgZXJyb3JzXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBlcnJvck1lc3NhZ2VGb3JtYXR0ZXIoZXJyb3IpIHtcbiAgICAgICAgaWYgKCEoZXJyb3IgaW5zdGFuY2VvZiBFcnJvcikgfHwgIWVycm9yLm1lc3NhZ2UpIHtcbiAgICAgICAgICAgIGNvbnN0IGRlZmF1bHRNZXNzYWdlID0gJ0NhcHR1cmVkIGFuIHVubGFiZWxlZCBldmVudCc7XG5cbiAgICAgICAgICAgIGlmIChlcnJvciAmJiAnaXNUcnVzdGVkJyBpbiBlcnJvcikge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybignSWdub3JlZCBpc1RydXN0ZWQgYnJvd3NlciBldmVudDonLCBlcnJvcik7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCBlcnJvckRldGFpbHMgPSBlcnJvciA/IEpTT04uc3RyaW5naWZ5KGVycm9yKSA6ICdObyBtb3JlIGFkZGl0aW9uYWwgZXJyb3IgaW5mbyc7XG4gICAgICAgICAgICBjb25zdCBlbmhhbmNlZEVycm9yTWVzc2FnZSA9IGAke2RlZmF1bHRNZXNzYWdlfSB8IE9yaWdpbmFsIGVycm9yIGRldGFpbDogJHtlcnJvckRldGFpbHN9YDtcbiAgICAgICAgICAgIGVycm9yID0gbmV3IEVycm9yKGVuaGFuY2VkRXJyb3JNZXNzYWdlKTsgLy8gTk9TT05BUlxuICAgICAgICB9XG4gICAgfVxuXG4gICAgc2VudHJ5SW50aWxpemF0aW9uKGVycm9yLCBpbmNvbWluZ0Vycm9yKSB7XG4gICAgICAgIGlmICghU2VudHJ5RXJyb3JIYW5kbGVyLnNlbnRyeUluaXRpYWxpemVkKSB7XG4gICAgICAgICAgICB0aGlzLmluaXRpYWxpemVTZW50cnlBc3luYygpXG4gICAgICAgICAgICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmxvZ1RvU2VudHJ5KGVycm9yKTtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgaW5jb21pbmdFcnJvcjtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5jYXRjaChlcnIgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBpbml0aWFsaXppbmcgU2VudHJ5OicsIGVycik7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubG9nVG9Db25zb2xlKGVycm9yKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMubG9nVG9TZW50cnkoZXJyb3IpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBsb2dUb1NlbnRyeShlcnJvcjogRXJyb3IpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IHVzZXIgPSBTZW50cnlFcnJvckhhbmRsZXIudXNlciBhcyBFcnJvcjtcbiAgICAgICAgICAgIHRoaXMuc2NvcGVXaXRoU2VudHJ5KGVycm9yLCB1c2VyKTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcignVW5hYmxlIHRvIGxvZyB0aGUgZXJyb3IgdG8gU2VudHJ5LiBBbiBleGNlcHRpb24gb2NjdXJyZWQ6Jyk7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKGUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzY29wZVdpdGhTZW50cnkoZXJyb3IsIHVzZXIpIHtcbiAgICAgICAgU2VudHJ5LndpdGhTY29wZShzY29wZSA9PiB7XG4gICAgICAgICAgICAvLyBBcHBlbmRzIHVzZXIgZGV0YWlscyBmb3Igc2VudHJ5IGxvZ1xuICAgICAgICAgICAgc2NvcGUuc2V0VXNlcih7XG4gICAgICAgICAgICAgICAgLi4udXNlclxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIC8vIEVuc3VyZSBlcnJvciBpcyBwcm9wZXJseSBmb3JtYXR0ZWRcbiAgICAgICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEVycm9yICYmIGVycm9yLm1lc3NhZ2UpIHtcbiAgICAgICAgICAgICAgICBTZW50cnkuY2FwdHVyZUV4Y2VwdGlvbihlcnJvcik7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiBlcnJvciA9PT0gJ29iamVjdCcgJiYgZXJyb3IgIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZU5vblN0YW5kYXJkRXJyb3IoZXJyb3IpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZVVubGFiZWxlZEV2ZW50KGVycm9yKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBoYW5kbGVOb25TdGFuZGFyZEVycm9yKGVycm9yOiBvYmplY3QpIHtcbiAgICAgICAgLy8gSWYgaXQncyBhbiBvYmplY3QgYnV0IG5vdCBhIHN0YW5kYXJkIEVycm9yLCBhdHRlbXB0IHRvIGxvZyBpdHMgcHJvcGVydGllcyBzYWZlbHlcbiAgICAgICAgbGV0IGVycm9yTWVzc2FnZSA9ICdDYXB0dXJlZCBub24tc3RhbmRhcmQgZXJyb3Igd2l0aCBubyBtZXNzYWdlJzsgLy8gTk9TT05BUlxuXG4gICAgICAgIC8vIFRyeSB0byBleHRyYWN0IGFueSBtZXNzYWdlLWxpa2UgcHJvcGVydHkgc2FmZWx5XG4gICAgICAgIGlmICgnbWVzc2FnZScgaW4gZXJyb3IpIHtcbiAgICAgICAgICAgIGVycm9yTWVzc2FnZSA9IGBFcnJvciBtZXNzYWdlOiAke1N0cmluZyhlcnJvci5tZXNzYWdlKX1gO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gQXR0ZW1wdCB0byBjYXB0dXJlIGtleSBwcm9wZXJ0aWVzIHNhZmVseVxuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBlcnJvck1lc3NhZ2UgPSBgQ2FwdHVyZWQgbm9uLXN0YW5kYXJkIGVycm9yOiAke0pTT04uc3RyaW5naWZ5KGVycm9yLCBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhlcnJvcikpfWA7XG4gICAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICAgICAgICAgIH0gY2F0Y2ggKGpzb25FcnJvcjogYW55KSB7XG4gICAgICAgICAgICAgICAgZXJyb3JNZXNzYWdlID0gYENhcHR1cmVkIG5vbi1zdGFuZGFyZCBlcnJvciB3aXRoIHNlcmlhbGl6YXRpb24gaXNzdWU6ICR7anNvbkVycm9yLm1lc3NhZ2V9YDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIENyZWF0ZSBhIG5ldyBFcnJvciBvYmplY3Qgd2l0aCB0aGUgZW5oYW5jZWQgbWVzc2FnZVxuICAgICAgICBjb25zdCBlcnJvck9iamVjdCA9IG5ldyBFcnJvcihlcnJvck1lc3NhZ2UpO1xuICAgICAgICBTZW50cnkuY2FwdHVyZUV4Y2VwdGlvbihlcnJvck9iamVjdCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBoYW5kbGVVbmxhYmVsZWRFdmVudChlcnJvcikge1xuICAgICAgICBjb25zdCBkZWZhdWx0TWVzc2FnZSA9ICdDYXB0dXJlZCBhbiB1bmxhYmVsZWQgZXZlbnQnO1xuXG4gICAgICAgIGlmIChlcnJvciAmJiAnaXNUcnVzdGVkJyBpbiBlcnJvcikge1xuICAgICAgICAgICAgY29uc29sZS53YXJuKCdJZ25vcmVkIGlzVHJ1c3RlZCBicm93c2VyIGV2ZW50OicsIGVycm9yKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGVycm9yRGV0YWlscyA9IGVycm9yID8gSlNPTi5zdHJpbmdpZnkoZXJyb3IpIDogJ05vIGFkZGl0aW9uYWwgZXJyb3IgaW5mbyc7XG4gICAgICAgIGNvbnN0IGVuaGFuY2VkRXJyb3JNZXNzYWdlID0gYCR7ZGVmYXVsdE1lc3NhZ2V9IHwgT3JpZ2luYWwgZXJyb3IgZGV0YWlsczogJHtlcnJvckRldGFpbHN9YDtcbiAgICAgICAgY29uc3QgZW5oYW5jZWRFcnJvciA9IG5ldyBFcnJvcihlbmhhbmNlZEVycm9yTWVzc2FnZSk7XG5cbiAgICAgICAgU2VudHJ5LmNhcHR1cmVFeGNlcHRpb24oZW5oYW5jZWRFcnJvcik7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBsb2dUb0NvbnNvbGUoZXJyb3I6IEVycm9yKSB7XG4gICAgICAgIC8vIEF0dGVtcHQgdG8gcHJpbnQgaW4gdGhlIGNvbnNvbGVcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIC8vIFdlIHVzZSBTdGFja1RyYWNlIHRvIHRyeSBnZXR0aW5nIGEgZ29vZCBzdGFja3RyYWNlLiBJZiBpdCBmYWlscywganVzdCBwcmludCB0aGUgZXJyb3JcbiAgICAgICAgICAgIGNvbnN0IG1lc3NhZ2UgPSBlcnJvci5tZXNzYWdlID8gZXJyb3IubWVzc2FnZSA6IGVycm9yLnRvU3RyaW5nKCk7XG4gICAgICAgICAgICBjb25zdCB1cmwgPSB3aW5kb3cubG9jYXRpb24uaHJlZjtcbiAgICAgICAgICAgIGZyb21FcnJvcihlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IgOiBuZXcgRXJyb3IoJ05vbi1FcnJvciBPYmplY3QnKSkudGhlbihcbiAgICAgICAgICAgICAgICBzdGFja0ZyYW1lcyA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0YWNrU3RyaW5nID0gc3RhY2tGcmFtZXMuc3BsaWNlKDAsIDIwKS5tYXAoc2YgPT4gc2YudG9TdHJpbmcoKSk7XG5cbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcih7IG1lc3NhZ2UsIHVybCwgc3RhY2s6IHN0YWNrU3RyaW5nLCBlcnJvciB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICApO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKGVycm9yLCBlKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==
|
|
368
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VudHJ5LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2NvbW1vbi1zZXJ2aWNlcy9zcmMvbGliL3NlbnRyeS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3pELE9BQU8sRUFBZ0IsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pELE9BQU8sS0FBSyxNQUFNLE1BQU0scUJBQXFCLENBQUM7QUFFOUMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHMUMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sOEJBQThCLENBQUM7OztBQUtoRSxNQUFNLE9BQU8sa0JBQWtCO2FBRVosc0JBQWlCLEdBQUcsS0FBSyxBQUFSLENBQVM7SUFFekMsWUFBNkIsZ0JBQWtDO1FBQWxDLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7SUFBRyxDQUFDO0lBRTNELEtBQUssQ0FBQyxxQkFBcUI7UUFDL0IsSUFBSSxrQkFBa0IsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBQ3ZDLHdEQUF3RDtZQUN4RCxPQUFPO1FBQ1gsQ0FBQztRQUNELE1BQU0sQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBRTVCLE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7UUFFakQsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDN0MsSUFBSSxHQUFHLEVBQUUsWUFBWSxFQUFFLGFBQWEsRUFBRSxDQUFDO2dCQUNuQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxNQUFNLEVBQUUsR0FBRyxHQUFHLENBQUMsWUFBWSxDQUFDLGFBQWEsRUFBRSxD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QUFDO1lBQ0Qsd0ZBQXdGO1lBQ3hGLE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNqRSxNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQztZQUNqQyxTQUFTLENBQUMsS0FBSyxZQUFZLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUMxRSxXQUFXLENBQUMsRUFBRTtnQkFDVixNQUFNLFdBQVcsR0FBRyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztnQkFFdkUsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO1lBQy9ELENBQUMsQ0FDSixDQUFDO1FBQ04sQ0FBQztRQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDVCxPQUFPLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztRQUM1QixDQUFDO0lBQ0wsQ0FBQzsrR0EzWlEsa0JBQWtCO21IQUFsQixrQkFBa0IsY0FGZixNQUFNOzs0RkFFVCxrQkFBa0I7a0JBSDlCLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cEVycm9yUmVzcG9uc2UgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBFcnJvckhhbmRsZXIsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCAqIGFzIFNlbnRyeSBmcm9tICdAc2VudHJ5L2FuZ3VsYXItaXZ5JztcblxuaW1wb3J0IHsgU3RhdHVzQ29kZXMgfSBmcm9tICdodHRwLXN0YXR1cy1jb2Rlcyc7XG5pbXBvcnQgeyBmcm9tRXJyb3IgfSBmcm9tICdzdGFja3RyYWNlLWpzJztcblxuaW1wb3J0IHsgVXNlciB9IGZyb20gJ0Bwb3Npd2lzZS9jb21tb24tdXRpbGl0aWVzJztcbmltcG9ydCB7IEFwcENvbmZpZ1NlcnZpY2UgfSBmcm9tICdAcG9zaXdpc2UvYXBwLWNvbmZpZy1zZXJ2aWNlJztcblxuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBTZW50cnlFcnJvckhhbmRsZXIgaW1wbGVtZW50cyBFcnJvckhhbmRsZXIge1xuICAgIHByaXZhdGUgc3RhdGljIHVzZXI6IFBhcnRpYWw8VXNlcj47XG4gICAgcHJpdmF0ZSBzdGF0aWMgc2VudHJ5SW5pdGlhbGl6ZWQgPSBmYWxzZTtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgYXBwQ29uZmlnU2VydmljZTogQXBwQ29uZmlnU2VydmljZSkge31cblxuICAgIHByaXZhdGUgYXN5bmMgaW5pdGlhbGl6ZVNlbnRyeUFzeW5jKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBpZiAoU2VudHJ5RXJyb3JIYW5kbGVyLnNlbnRyeUluaXRpYWxpemVkKSB7XG4gICAgICAgICAgICAvLyBTZW50cnkgaXMgYWxyZWFkeSBpbml0aWFsaXplZCwgbm8gbmVlZCB0byBkbyBpdCBhZ2FpblxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIFNlbnRyeS5jcmVhdGVFcnJvckhhbmRsZXIoKTtcblxuICAgICAgICBjb25zdCBjb25maWcgPSBhd2FpdCB0aGlzLmdldFNlbnRyeUNvbmZpZ0FzeW5jKCk7XG5cbiAgICAgICAgdGhpcy5hcHBDb25maWdTZXJ2aWNlLmFwcENvbmZpZyQuc3Vic2NyaWJlKGVudiA9PiB7XG4gICAgICAgICAgICBpZiAoZW52Py5pbnRlZ3JhdGlvbnM/LnNlbnRyeV9jb25maWcpIHtcbiAgICAgICAgICAgICAgICBTZW50cnkuaW5pdCh7IC4uLmNvbmZpZywgLi4uZW52LmludGVncmF0aW9ucy5zZW50cnlfY29uZmlnIH0pO1xuICAgICAgICAgICAgICAgIFNlbnRyeUVycm9ySGFuZGxlci5zZW50cnlJbml0aWFsaXplZCA9IHRydWU7XG5cbiAgICAgICAgICAgICAgICAvLyBBZGQgYSBnbG9iYWwgbGlzdGVuZXIgZm9yIHVuaGFuZGxlZCBwcm9taXNlIHJlamVjdGlvbnNcbiAgICAgICAgICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigndW5oYW5kbGVkcmVqZWN0aW9uJywgKGV2ZW50OiBQcm9taXNlUmVqZWN0aW9uRXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVQcm9taXNlUmVqZWN0aW9uKGV2ZW50KTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIC8vIEFkZCBhIGdsb2JhbCBsaXN0ZW5lciBmb3IgdW5oYW5kbGVkIHByb21pc2UgcmVqZWN0aW9uc1xuICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigndW5oYW5kbGVkcmVqZWN0aW9uJywgKGV2ZW50OiBQcm9taXNlUmVqZWN0aW9uRXZlbnQpID0+IHtcbiAgICAgICAgICAgIHRoaXMuaGFuZGxlUHJvbWlzZVJlamVjdGlvbihldmVudCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgZ2V0U2VudHJ5Q29uZmlnQXN5bmMoKTogUHJvbWlzZTxTZW50cnkuQnJvd3Nlck9wdGlvbnM+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4ge1xuICAgICAgICAgICAgY29uc3QgZW52aXJvbm1lbnQgPVxuICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ob3N0Py5pbmNsdWRlcygnZGV2JykgfHwgd2luZG93LmxvY2F0aW9uLmhvc3Q/LmluY2x1ZGVzKCdsb2NhbGhvc3QnKVxuICAgICAgICAgICAgICAgICAgICA/ICdkZXZlbG9wbWVudCdcbiAgICAgICAgICAgICAgICAgICAgOiAncHJvZHVjdGlvbic7XG5cbiAgICAgICAgICAgIGNvbnN0IGlnbm9yZWRQYXRocyA9IFsnJ107XG4gICAgICAgICAgICBjb25zdCBoZWFsdGhDaGVja1BhdGhzID0gWycvcGluZyddO1xuICAgICAgICAgICAgY29uc3Qgb25lUGVyY2VudElnbm9yZWRQYXRocyA9IFsnJ107XG4gICAgICAgICAgICBjb25zdCBmaXZlUGVyY2VudElnbm9yZWRQYXRocyA9IFsnJ107XG5cbiAgICAgICAgICAgIGNvbnN0IGNvbmZpZzogU2VudHJ5LkJyb3dzZXJPcHRpb25zID0ge1xuICAgICAgICAgICAgICAgIGRzbjogbnVsbCxcbiAgICAgICAgICAgICAgICB0cmFjZXNTYW1wbGVSYXRlOiAwLjEsXG4gICAgICAgICAgICAgICAgYmVmb3JlU2VuZChldmVudCwgaGludCkge1xuICAgICAgICAgICAgICAgICAgICAvLyBDaGVjayBpZiB0aGUgZXZlbnQgaXMgb2YgdHlwZSBDbG9zZUV2ZW50IGFuZCBpZ25vcmUgaXRcbiAgICAgICAgICAgICAgICAgICAgaWYgKGV2ZW50Py5leGNlcHRpb24/LnZhbHVlcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQuZXhjZXB0aW9uLnZhbHVlcyA9IGV2ZW50LmV4Y2VwdGlvbi52YWx1ZXMuZmlsdGVyKHZhbHVlID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBVcGRhdGUgdGhlIGNvbmRpdGlvbiBiYXNlZCBvbiB0aGUgYWN0dWFsIHN0cnVjdHVyZSBvZiB0aGUgZXZlbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gIShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUudHlwZSA9PT0gJ0Nsb3NlRXZlbnQnIHx8IHZhbHVlLnZhbHVlLmluY2x1ZGVzKCdDbG9zZUV2ZW50JylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBpZiAoZXZlbnQ/LmV4Y2VwdGlvbj8udmFsdWVzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBldmVudC5leGNlcHRpb24udmFsdWVzID0gZXZlbnQuZXhjZXB0aW9uLnZhbHVlcy5maWx0ZXIodmFsdWUgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIENoZWNrIGZvciB0aGUgc3BlY2lmaWMgZXJyb3IgbWVzc2FnZSBhbmQgaWdub3JlIGl0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICEoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlLnR5cGUgPT09ICdFcnJvcicgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUudmFsdWUuaW5jbHVkZXMoJ1Jlc2l6ZU9ic2VydmVyIGxvb3AgY29tcGxldGVkJylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAvLyBvcmlnaW5hdGVzIGZyb20gdmVuZG9yLmpzIGZpbGVcbiAgICAgICAgICAgICAgICAgICAgaWYgKGV2ZW50Py5leGNlcHRpb24/LnZhbHVlcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaXNKc29uUGFyc2luZ0Vycm9yID0gZXZlbnQuZXhjZXB0aW9uLnZhbHVlcy5zb21lKHZhbHVlID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZS50eXBlID09PSAnU3ludGF4RXJyb3InICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPy52YWx1ZT8uaW5jbHVkZXMoXCJleHBlY3RlZCAnOicgYWZ0ZXIgcHJvcGVydHkgbmFtZSBpblwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzSnNvblBhcnNpbmdFcnJvcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gQ2hlY2sgaWYgdGhlIGV2ZW50IGlzIGEgQ2h1bmtMb2FkRXJyb3IgYW5kIGlnbm9yZSBpdCAoaXQgY291bGQgYmUgYmVjYXVzZSBvZiBwb29yIG5ldHdvcmspXG4gICAgICAgICAgICAgICAgICAgIGlmIChldmVudD8uZXhjZXB0aW9uPy52YWx1ZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50LmV4Y2VwdGlvbi52YWx1ZXMgPSBldmVudC5leGNlcHRpb24udmFsdWVzLmZpbHRlcih2YWx1ZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICEoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlLnR5cGUgPT09ICdDaHVua0xvYWRFcnJvcicgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUudmFsdWUuaW5jbHVkZXMoJ0NodW5rTG9hZEVycm9yOiBMb2FkaW5nIGNodW5rJylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAvLyBDaGVjayBpZiB0aGUgZXZlbnQgaXMgYSBzY3JpcHQgbG9hZGluZyBlcnJvciBhbmQgaWdub3JlIGl0XG4gICAgICAgICAgICAgICAgICAgIGlmIChldmVudD8uZXhjZXB0aW9uPy52YWx1ZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50LmV4Y2VwdGlvbi52YWx1ZXMgPSBldmVudC5leGNlcHRpb24udmFsdWVzLmZpbHRlcih2YWx1ZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICEoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlLnR5cGUgPT09ICdFcnJvcicgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUudmFsdWUuaW5jbHVkZXMoJ0NvdWxkIG5vdCBsb2FkIFwidXRpbFwiJylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAvLyBDaGVjayBpZiB0aGUgZXZlbnQgaXMgYSB0aW1lb3V0IGVycm9yIGFuZCBpZ25vcmUgaXRcbiAgICAgICAgICAgICAgICAgICAgaWYgKGV2ZW50Py5leGNlcHRpb24/LnZhbHVlcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQuZXhjZXB0aW9uLnZhbHVlcyA9IGV2ZW50LmV4Y2VwdGlvbi52YWx1ZXMuZmlsdGVyKHZhbHVlID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gIShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUudHlwZSA9PT0gJ0Vycm9yJyAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZS52YWx1ZS5pbmNsdWRlcygnRXJyb3IgbG9hZGluZyBwbG90bHkuanMgbGlicmFyeSBmcm9tJylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAvLyBDaGVjayBpZiB0aGUgZXZlbnQgaXMgcmVsYXRlZCB0byBjcm9zcy1vcmlnaW4gZnJhbWUgYWNjZXNzXG4gICAgICAgICAgICAgICAgICAgIGlmIChldmVudD8uZXhjZXB0aW9uPy52YWx1ZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGlzQ3Jvc3NPcmlnaW5GcmFtZUVycm9yID0gZXZlbnQuZXhjZXB0aW9uLnZhbHVlcy5zb21lKHZhbHVlID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZS50eXBlID09PSAnU2VjdXJpdHlFcnJvcicgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU/LnZhbHVlPy5pbmNsdWRlcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRmFpbGVkIHRvIHJlYWQgYSBuYW1lZCBwcm9wZXJ0eSAnbmF2aWdhdG9yJyBmcm9tICdXaW5kb3cnOiBCbG9ja2VkIGEgZnJhbWUgd2l0aCBvcmlnaW5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNDcm9zc09yaWdpbkZyYW1lRXJyb3IpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBFeGNsdWRlIGNyb3NzLW9yaWdpbiBmcmFtZSBlcnJvcnMgZnJvbSBiZWluZyByZXBvcnRlZCB0byBTZW50cnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIC8vIENoZWNrIGlmIHRoZSBldmVudCBoYXMgYW4gZXhjZXB0aW9uIGFuZCB2YWx1ZXMgYXJyYXlcbiAgICAgICAgICAgICAgICAgICAgaWYgKGV2ZW50Py5leGNlcHRpb24/LnZhbHVlcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gRmlsdGVyIG91dCBldmVudHMgZ2VuZXJhdGVkIGJ5IFRyeUNhdGNoIGFuZCBHbG9iYWxIYW5kbGVyc1xuICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQuZXhjZXB0aW9uLnZhbHVlcyA9IGV2ZW50LmV4Y2VwdGlvbi52YWx1ZXMuZmlsdGVyKHZhbHVlID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBtZWNoYW5pc20gPSB2YWx1ZS5tZWNoYW5pc207XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICEoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lY2hhbmlzbSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWVjaGFuaXNtLnR5cGUgPT09ICdUcnlDYXRjaCcgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lY2hhbmlzbS50eXBlID09PSAnR2xvYmFsSGFuZGxlcnMnKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIC8vIENoZWNrIGlmIGl0J3MgYSBub24tZXJyb3IgZXhjZXB0aW9uXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGlzTm9uRXJyb3JFeGNlcHRpb24gPVxuICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQ/LmV4Y2VwdGlvbj8udmFsdWVzPy5bMF0/LnZhbHVlPy5zdGFydHNXaXRoKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdOb24tRXJyb3IgZXhjZXB0aW9uIGNhcHR1cmVkJ1xuICAgICAgICAgICAgICAgICAgICAgICAgKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgKGhpbnQ/Lm9yaWdpbmFsRXhjZXB0aW9uIGFzIEVycm9yKT8ubWVzc2FnZT8uc3RhcnRzV2l0aChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnTm9uLUVycm9yIGV4Y2VwdGlvbiBjYXB0dXJlZCdcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGlzTm9uRXJyb3JFeGNlcHRpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFdlIHdhbnQgdG8gaWdub3JlIHRob3NlIGtpbmRzIG9mIGVycm9yc1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXZlbnQ7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBkZW55VXJsczogWy9kcmlmdC4qXFwuanMvaSwgL2FuYWx5dGljcy4qXFwuanMvaSwgL3BvbHlmaWxscy4qXFwuanMvaSwgL3ZlbmRvci4qXFwuanMvaV0sXG4gICAgICAgICAgICAgICAgaW50ZWdyYXRpb25zOiBbXG4gICAgICAgICAgICAgICAgICAgIC8vIFJlZ2lzdGVycyBhbmQgY29uZmlndXJlcyB0aGUgVHJhY2luZyBpbnRlZ3JhdGlvbixcbiAgICAgICAgICAgICAgICAgICAgLy8gd2hpY2ggYXV0b21hdGljYWxseSBpbnN0cnVtZW50cyB5b3VyIGFwcGxpY2F0aW9uIHRvIG1vbml0b3IgaXRzXG4gICAgICAgICAgICAgICAgICAgIC8vIHBlcmZvcm1hbmNlLCBpbmNsdWRpbmcgY3VzdG9tIEFuZ3VsYXIgcm91dGluZyBpbnN0cnVtZW50YXRpb25cbiAgICAgICAgICAgICAgICAgICAgbmV3IFNlbnRyeS5Ccm93c2VyVHJhY2luZyh7XG4gICAgICAgICAgICAgICAgICAgICAgICByb3V0aW5nSW5zdHJ1bWVudGF0aW9uOiBTZW50cnkucm91dGluZ0luc3RydW1lbnRhdGlvblxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgdHJhY2VzU2FtcGxlcjogc2FtcGxpbmdDb250ZXh0ID0+IHtcbiAgICAgICAgICAgICAgICAgICAgLy8gRXhhbWluZSBwcm92aWRlZCBjb250ZXh0IGRhdGEgKGluY2x1ZGluZyBwYXJlbnQgZGVjaXNpb24sIGlmIGFueSkgYWxvbmdcbiAgICAgICAgICAgICAgICAgICAgLy8gd2l0aCBhbnl0aGluZyBpbiB0aGUgZ2xvYmFsIG5hbWVzcGFjZSB0byBjb21wdXRlIHRoZSBzYW1wbGUgcmF0ZSBvclxuICAgICAgICAgICAgICAgICAgICAvLyBzYW1wbGluZyBkZWNpc2lvbiBmb3IgdGhpcyB0cmFuc2FjdGlvblxuICAgICAgICAgICAgICAgICAgICBjb25zdCBwYXRobmFtZSA9IHNhbXBsaW5nQ29udGV4dC5sb2NhdGlvbi5wYXRobmFtZTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlnbm9yZWRQYXRocy5pbmNsdWRlcyhwYXRobmFtZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGhlYWx0aENoZWNrUGF0aHMuaW5jbHVkZXMocGF0aG5hbWUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyB2ZXJ5IGxvdyByYXRlIGFzIHRoZXNlIGFyZSBleHRyZW1lbHkgZnJlcXVlbnQgYW5kIHByZXR0eSB1c2VsZXNzXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMC4wMDE7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAob25lUGVyY2VudElnbm9yZWRQYXRocy5pbmNsdWRlcyhwYXRobmFtZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAwLjAxO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGZpdmVQZXJjZW50SWdub3JlZFBhdGhzLmluY2x1ZGVzKHBhdGhuYW1lKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDAuMDU7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBEZWZhdWx0IHNhbXBsZSByYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMC4xO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBlbnZpcm9ubWVudCxcblxuICAgICAgICAgICAgICAgIC8vIFdlIGlnbm9yZSBTZXJ2ZXIgRXJyb3JzLiBXZSBoYXZlIHRvIGRlZmluZSBoZXJlIHNpbmNlIEFuZ3VsYXJcbiAgICAgICAgICAgICAgICAvLyBodHRwIGNsaWVudCB1c2VzIHNldFRpbWVvdXQgdG8gZGV0ZWN0IGh0dHAgY2FsbCBwcm9ncmVzcy5cbiAgICAgICAgICAgICAgICAvLyBBbmQgd2hlbiB0aGUgY2FsbCBmYWlscywgaXQgdGhyb3dzIGFuIGV4Y2VwdGlvbiBpbnNpZGUgdGhhdCB0aW1lb3V0XG4gICAgICAgICAgICAgICAgLy8gdGhhdCBidWJibGVzIHVwIGhpZ2hlciB0byB0aGUgbWFpbiBBbmd1bGFyJ3MgZXJyb3IgaGFuZGxlci5cbiAgICAgICAgICAgICAgICBpZ25vcmVFcnJvcnM6IFtcbiAgICAgICAgICAgICAgICAgICAgJ3RvcC5HTE9CQUxTJyxcbiAgICAgICAgICAgICAgICAgICAgJ1Jlc2l6ZU9ic2VydmVyIGxvb3AgY29tcGxldGVkIHdpdGggdW5kZWxpdmVyZWQgbm90aWZpY2F0aW9ucydcbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgcmVzb2x2ZShjb25maWcpO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgaW5pdGlhbGl6ZVVzZXIodXNlcjogUGFydGlhbDxVc2VyPikge1xuICAgICAgICBTZW50cnlFcnJvckhhbmRsZXIudXNlciA9IHtcbiAgICAgICAgICAgIGlkOiB1c2VyPy5pZCxcbiAgICAgICAgICAgIG5hbWU6IHVzZXI/LmZpcnN0X25hbWUsXG4gICAgICAgICAgICBlbWFpbDogdXNlcj8uZW1haWxcbiAgICAgICAgfSBhcyBQYXJ0aWFsPFVzZXI+O1xuICAgIH1cblxuICAgIHByaXZhdGUgaGFuZGxlUHJvbWlzZVJlamVjdGlvbihldmVudDogUHJvbWlzZVJlamVjdGlvbkV2ZW50KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGVycm9yID0gZXZlbnQucmVhc29uO1xuICAgICAgICB0aGlzLmxvZ1RvU2VudHJ5KGVycm9yKTtcbiAgICAgICAgdGhpcy5sb2dUb0NvbnNvbGUoZXJyb3IpO1xuICAgIH1cblxuICAgIGhhbmRsZUVycm9yKGluY29taW5nRXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlIHwgRXJyb3IpIHtcbiAgICAgICAgLy8gaW4gY2FzZSBvZiA0MDEsIHJldHVybiBubyBleGNlcHRpb25cbiAgICAgICAgaWYgKGluY29taW5nRXJyb3IgaW5zdGFuY2VvZiBIdHRwRXJyb3JSZXNwb25zZSkge1xuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIGluY29taW5nRXJyb3Iuc3RhdHVzID09PSBTdGF0dXNDb2Rlcy5VTkFVVEhPUklaRUQgfHxcbiAgICAgICAgICAgICAgICBpbmNvbWluZ0Vycm9yLnN0YXR1cyA9PT0gU3RhdHVzQ29kZXMuRk9SQklEREVOXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAvLyBIYW5kbGUgNDAxIGVycm9yIChlLmcuLCByZWRpcmVjdCB0byBsb2dpbiBwYWdlKVxuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ1VuYXV0aG9yaXplZCByZXF1ZXN0OicsIGluY29taW5nRXJyb3IpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGluY29taW5nRXJyb3Iuc3RhdHVzID09PSBTdGF0dXNDb2Rlcy5VTlBST0NFU1NBQkxFX0VOVElUWSkge1xuICAgICAgICAgICAgICAgIC8vIEhhbmRsZSA0MjIgZXJyb3JcbiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdVTlBST0NFU1NBQkxFX0VOVElUWSByZXF1ZXN0OicsIGluY29taW5nRXJyb3IpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGluY29taW5nRXJyb3Iuc3RhdHVzID09PSA0MzMpIHtcbiAgICAgICAgICAgICAgICAvLyBIYW5kbGUgNDMzIGVycm9yXG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcignb3ZlciBtZXNzYWdlIHF1b3RhOicsIGluY29taW5nRXJyb3IpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLmhhbmRsZUV4Y2VwdGlvbkVycm9yKGluY29taW5nRXJyb3IpO1xuICAgIH1cblxuICAgIGhhbmRsZUV4Y2VwdGlvbkVycm9yKGluY29taW5nRXJyb3IpIHtcbiAgICAgICAgaWYgKGluY29taW5nRXJyb3IpIHtcbiAgICAgICAgICAgIGxldCBlcnJvciA9IGluY29taW5nRXJyb3I7IC8vIFRoZSBhY3R1YWwgZXJyb3IgdG8gbG9nXG4gICAgICAgICAgICB3aGlsZSAoJ29yaWdpbmFsRXJyb3InIGluIGVycm9yICYmIGVycm9yLm9yaWdpbmFsRXJyb3IgaW5zdGFuY2VvZiBFcnJvcikge1xuICAgICAgICAgICAgICAgIHRoaXMubG9nVG9Db25zb2xlKGVycm9yKTtcbiAgICAgICAgICAgICAgICBlcnJvciA9IGVycm9yLm9yaWdpbmFsRXJyb3I7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmV4dHJhY3RPcmlnaW5hbEVycm9yKGVycm9yLCBpbmNvbWluZ0Vycm9yKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGV4dHJhY3RPcmlnaW5hbEVycm9yKGVycm9yLCBpbmNvbWluZ0Vycm9yKSB7XG4gICAgICAgIC8vIEV4Y2x1ZGUgc3BlY2lmaWMgZXJyb3JzXG4gICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEh0dHBFcnJvclJlc3BvbnNlKSB7XG4gICAgICAgICAgICBpZiAoZXJyb3Iuc3RhdHVzID09PSBTdGF0dXNDb2Rlcy5OT1RfRk9VTkQpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oJ0V4Y2x1ZGVkIDQwNCBlcnJvcjonLCBlcnJvcik7XG4gICAgICAgICAgICAgICAgcmV0dXJuOyAvLyBTa2lwIGxvZ2dpbmcgdG8gU2VudHJ5XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZXJyb3Iuc3RhdHVzID09PSAwICYmIGVycm9yLnN0YXR1c1RleHQgPT09ICdVbmtub3duIEVycm9yJykge1xuICAgICAgICAgICAgICAgIC8vIEhhbmRsZSBuZXR3b3JrLXJlbGF0ZWQgZXJyb3JzIGRpZmZlcmVudGx5IG9yIHN1cHByZXNzIHRoZW1cbiAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oJ05ldHdvcmstcmVsYXRlZCBlcnJvcjonLCBlcnJvcik7XG4gICAgICAgICAgICAgICAgcmV0dXJuOyAvLyBEb24ndCByZXRocm93IHRoZSBlcnJvclxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbGV0IHsgbWVzc2FnZSB9ID0gZXJyb3I7XG4gICAgICAgICAgICBpZiAoIW1lc3NhZ2UpIHtcbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICBtZXNzYWdlID0gSlNPTi5zdHJpbmdpZnkoZXJyb3IpO1xuICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgbWVzc2FnZSA9IGVycm9yLnRvU3RyaW5nKCk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVycm9yID0gbmV3IEVycm9yKGBHb3QgSHR0cEVycm9yUmVzcG9uc2Ugb24gVVJMICR7ZXJyb3IudXJsfSBtZXNzYWdlOiAke21lc3NhZ2V9YCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmhhbmRsZU5vbkh0dHBFcnJvclJlc3BvbnNlKGVycm9yKTtcblxuICAgICAgICAvLyBFbnN1cmUgYWxsIGVycm9ycyBoYXZlIGEgcHJvcGVyIG1lc3NhZ2VcbiAgICAgICAgdGhpcy5lcnJvck1lc3NhZ2VGb3JtYXR0ZXIoZXJyb3IpO1xuXG4gICAgICAgIC8vIEV4aXN0aW5nIFNlbnRyeSBpbml0aWFsaXphdGlvbiBsb2dpY1xuICAgICAgICB0aGlzLnNlbnRyeUluaXRpYWxpemF0aW9uKGVycm9yLCBpbmNvbWluZ0Vycm9yKTtcbiAgICB9XG5cbiAgICBoYW5kbGVOb25IdHRwRXJyb3JSZXNwb25zZShlcnJvcikge1xuICAgICAgICBpZiAodHlwZW9mIGVycm9yID09PSAnb2JqZWN0JyAmJiAnbWVzc2FnZScgaW4gZXJyb3IpIHtcbiAgICAgICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEh0dHBFcnJvclJlc3BvbnNlKSB7XG4gICAgICAgICAgICAgICAgaWYgKGVycm9yLnN0YXR1cyAhPT0gU3RhdHVzQ29kZXMuVU5BVVRIT1JJWkVEKSB7XG4gICAgICAgICAgICAgICAgICAgIGVycm9yID0gbmV3IEVycm9yKGBPYmplY3QgY2FwdHVyZWQgYXMgZXhjZXB0aW9uOiAke2Vycm9yfWApOyAvLyBOT1NPTkFSXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gRXhjbHVkZSByZXBvcnRpbmcgNDAxIGVycm9yc1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZXJyb3JNZXNzYWdlRm9ybWF0dGVyKGVycm9yKSB7XG4gICAgICAgIGlmICghKGVycm9yIGluc3RhbmNlb2YgRXJyb3IpIHx8ICFlcnJvci5tZXNzYWdlKSB7XG4gICAgICAgICAgICBjb25zdCBkZWZhdWx0TWVzc2FnZSA9ICdDYXB0dXJlZCBhbiB1bmxhYmVsZWQgZXZlbnQnO1xuXG4gICAgICAgICAgICBpZiAoZXJyb3IgJiYgJ2lzVHJ1c3RlZCcgaW4gZXJyb3IpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oJ0lnbm9yZWQgaXNUcnVzdGVkIGJyb3dzZXIgZXZlbnQ6JywgZXJyb3IpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgZXJyb3JEZXRhaWxzID0gZXJyb3IgPyBKU09OLnN0cmluZ2lmeShlcnJvcikgOiAnTm8gbW9yZSBhZGRpdGlvbmFsIGVycm9yIGluZm8nO1xuICAgICAgICAgICAgY29uc3QgZW5oYW5jZWRFcnJvck1lc3NhZ2UgPSBgJHtkZWZhdWx0TWVzc2FnZX0gfCBPcmlnaW5hbCBlcnJvciBkZXRhaWw6ICR7ZXJyb3JEZXRhaWxzfWA7XG4gICAgICAgICAgICBlcnJvciA9IG5ldyBFcnJvcihlbmhhbmNlZEVycm9yTWVzc2FnZSk7IC8vIE5PU09OQVJcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHNlbnRyeUluaXRpYWxpemF0aW9uKGVycm9yLCBpbmNvbWluZ0Vycm9yKSB7XG4gICAgICAgIGlmICghU2VudHJ5RXJyb3JIYW5kbGVyLnNlbnRyeUluaXRpYWxpemVkKSB7XG4gICAgICAgICAgICB0aGlzLmluaXRpYWxpemVTZW50cnlBc3luYygpXG4gICAgICAgICAgICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmxvZ1RvU2VudHJ5KGVycm9yKTtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgaW5jb21pbmdFcnJvcjtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5jYXRjaChlcnIgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBpbml0aWFsaXppbmcgU2VudHJ5OicsIGVycik7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubG9nVG9Db25zb2xlKGVycm9yKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMubG9nVG9TZW50cnkoZXJyb3IpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBsb2dUb1NlbnRyeShlcnJvcjogRXJyb3IpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IHVzZXIgPSBTZW50cnlFcnJvckhhbmRsZXIudXNlciBhcyBFcnJvcjtcbiAgICAgICAgICAgIHRoaXMuc2NvcGVXaXRoU2VudHJ5KGVycm9yLCB1c2VyKTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcignVW5hYmxlIHRvIGxvZyB0aGUgZXJyb3IgdG8gU2VudHJ5LiBBbiBleGNlcHRpb24gb2NjdXJyZWQ6Jyk7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKGUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzY29wZVdpdGhTZW50cnkoZXJyb3IsIHVzZXIpIHtcbiAgICAgICAgU2VudHJ5LndpdGhTY29wZShzY29wZSA9PiB7XG4gICAgICAgICAgICAvLyBBcHBlbmRzIHVzZXIgZGV0YWlscyBmb3Igc2VudHJ5IGxvZ1xuICAgICAgICAgICAgc2NvcGUuc2V0VXNlcih7XG4gICAgICAgICAgICAgICAgLi4udXNlclxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIC8vIEVuc3VyZSBlcnJvciBpcyBwcm9wZXJseSBmb3JtYXR0ZWRcbiAgICAgICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEVycm9yICYmIGVycm9yLm1lc3NhZ2UpIHtcbiAgICAgICAgICAgICAgICBTZW50cnkuY2FwdHVyZUV4Y2VwdGlvbihlcnJvcik7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiBlcnJvciA9PT0gJ29iamVjdCcgJiYgZXJyb3IgIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZU5vblN0YW5kYXJkRXJyb3IoZXJyb3IpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZVVubGFiZWxlZEV2ZW50KGVycm9yKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBoYW5kbGVOb25TdGFuZGFyZEVycm9yKGVycm9yOiBvYmplY3QpIHtcbiAgICAgICAgaWYgKCdpc1RydXN0ZWQnIGluIGVycm9yKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgLy8gSWYgaXQncyBhbiBvYmplY3QgYnV0IG5vdCBhIHN0YW5kYXJkIEVycm9yLCBhdHRlbXB0IHRvIGxvZyBpdHMgcHJvcGVydGllcyBzYWZlbHlcbiAgICAgICAgbGV0IGVycm9yTWVzc2FnZSA9ICdDYXB0dXJlZCBub24tc3RhbmRhcmQgZXJyb3Igd2l0aCBubyBtZXNzYWdlJzsgLy8gTk9TT05BUlxuXG4gICAgICAgIC8vIFRyeSB0byBleHRyYWN0IGFueSBtZXNzYWdlLWxpa2UgcHJvcGVydHkgc2FmZWx5XG4gICAgICAgIGlmICgnbWVzc2FnZScgaW4gZXJyb3IpIHtcbiAgICAgICAgICAgIGVycm9yTWVzc2FnZSA9IGBFcnJvciBtZXNzYWdlOiAke1N0cmluZyhlcnJvci5tZXNzYWdlKX1gO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gQXR0ZW1wdCB0byBjYXB0dXJlIGtleSBwcm9wZXJ0aWVzIHNhZmVseVxuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBlcnJvck1lc3NhZ2UgPSBgQ2FwdHVyZWQgbm9uLXN0YW5kYXJkIGVycm9yOiAke0pTT04uc3RyaW5naWZ5KGVycm9yLCBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhlcnJvcikpfWA7XG4gICAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICAgICAgICAgIH0gY2F0Y2ggKGpzb25FcnJvcjogYW55KSB7XG4gICAgICAgICAgICAgICAgZXJyb3JNZXNzYWdlID0gYENhcHR1cmVkIG5vbi1zdGFuZGFyZCBlcnJvciB3aXRoIHNlcmlhbGl6YXRpb24gaXNzdWU6ICR7anNvbkVycm9yLm1lc3NhZ2V9YDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIENyZWF0ZSBhIG5ldyBFcnJvciBvYmplY3Qgd2l0aCB0aGUgZW5oYW5jZWQgbWVzc2FnZVxuICAgICAgICBjb25zdCBlcnJvck9iamVjdCA9IG5ldyBFcnJvcihlcnJvck1lc3NhZ2UpO1xuICAgICAgICBTZW50cnkuY2FwdHVyZUV4Y2VwdGlvbihlcnJvck9iamVjdCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBoYW5kbGVVbmxhYmVsZWRFdmVudChlcnJvcikge1xuICAgICAgICBjb25zdCBkZWZhdWx0TWVzc2FnZSA9ICdDYXB0dXJlZCBhbiB1bmxhYmVsZWQgZXZlbnQnO1xuXG4gICAgICAgIGlmIChlcnJvciAmJiAnaXNUcnVzdGVkJyBpbiBlcnJvcikge1xuICAgICAgICAgICAgY29uc29sZS53YXJuKCdJZ25vcmVkIGlzVHJ1c3RlZCBicm93c2VyIGV2ZW50OicsIGVycm9yKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGVycm9yRGV0YWlscyA9IGVycm9yID8gSlNPTi5zdHJpbmdpZnkoZXJyb3IpIDogJ05vIGFkZGl0aW9uYWwgZXJyb3IgaW5mbyc7XG4gICAgICAgIGNvbnN0IGVuaGFuY2VkRXJyb3JNZXNzYWdlID0gYCR7ZGVmYXVsdE1lc3NhZ2V9IHwgT3JpZ2luYWwgZXJyb3IgZGV0YWlsczogJHtlcnJvckRldGFpbHN9YDtcbiAgICAgICAgY29uc3QgZW5oYW5jZWRFcnJvciA9IG5ldyBFcnJvcihlbmhhbmNlZEVycm9yTWVzc2FnZSk7XG5cbiAgICAgICAgU2VudHJ5LmNhcHR1cmVFeGNlcHRpb24oZW5oYW5jZWRFcnJvcik7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBsb2dUb0NvbnNvbGUoZXJyb3I6IEVycm9yKSB7XG4gICAgICAgIC8vIEF0dGVtcHQgdG8gcHJpbnQgaW4gdGhlIGNvbnNvbGVcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIC8vIFdlIHVzZSBTdGFja1RyYWNlIHRvIHRyeSBnZXR0aW5nIGEgZ29vZCBzdGFja3RyYWNlLiBJZiBpdCBmYWlscywganVzdCBwcmludCB0aGUgZXJyb3JcbiAgICAgICAgICAgIGNvbnN0IG1lc3NhZ2UgPSBlcnJvci5tZXNzYWdlID8gZXJyb3IubWVzc2FnZSA6IGVycm9yLnRvU3RyaW5nKCk7XG4gICAgICAgICAgICBjb25zdCB1cmwgPSB3aW5kb3cubG9jYXRpb24uaHJlZjtcbiAgICAgICAgICAgIGZyb21FcnJvcihlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IgOiBuZXcgRXJyb3IoJ05vbi1FcnJvciBPYmplY3QnKSkudGhlbihcbiAgICAgICAgICAgICAgICBzdGFja0ZyYW1lcyA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0YWNrU3RyaW5nID0gc3RhY2tGcmFtZXMuc3BsaWNlKDAsIDIwKS5tYXAoc2YgPT4gc2YudG9TdHJpbmcoKSk7XG5cbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcih7IG1lc3NhZ2UsIHVybCwgc3RhY2s6IHN0YWNrU3RyaW5nLCBlcnJvciB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICApO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKGVycm9yLCBlKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==
|