@posiwise/common-services 0.1.78 → 0.1.80

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/index.mjs CHANGED
@@ -5,6 +5,7 @@ export * from './lib/google-analytics.service';
5
5
  export * from './lib/script-loader.service';
6
6
  export * from './lib/base-http.service';
7
7
  export * from './lib/common-services.module';
8
+ export * from './lib/seo.service';
8
9
  export * from './lib/main-api-http.service';
9
10
  export * from './lib/permission.service';
10
11
  export * from './lib/toast.service';
@@ -43,4 +44,4 @@ export * from './lib/logo-caching.service';
43
44
  export * from './lib/hopscotch.service';
44
45
  export * from './lib/brain.service';
45
46
  export * from './lib/brain-api-http.service';
46
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWJzL2NvbW1vbi1zZXJ2aWNlcy9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFDSCxjQUFjLGdDQUFnQyxDQUFDO0FBQy9DLGNBQWMsNkJBQTZCLENBQUM7QUFDNUMsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLDhCQUE4QixDQUFDO0FBQzdDLGNBQWMsNkJBQTZCLENBQUM7QUFDNUMsY0FBYywwQkFBMEIsQ0FBQztBQUN6QyxjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYyw2QkFBNkIsQ0FBQztBQUM1QyxjQUFjLG9DQUFvQyxDQUFDO0FBQ25ELGNBQWMscUNBQXFDLENBQUM7QUFDcEQsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMsaUNBQWlDLENBQUM7QUFDaEQsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLG1CQUFtQixDQUFDO0FBQ2xDLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYyw0QkFBNEIsQ0FBQztBQUMzQyxjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMsMEJBQTBCLENBQUM7QUFDekMsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMsc0JBQXNCLENBQUM7QUFDckMsY0FBYyw4QkFBOEIsQ0FBQztBQUM3QyxjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyw2QkFBNkIsQ0FBQztBQUM1QyxjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYyw0QkFBNEIsQ0FBQztBQUMzQyxjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMsNEJBQTRCLENBQUM7QUFDM0MsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLDZCQUE2QixDQUFDO0FBQzVDLGNBQWMsc0JBQXNCLENBQUM7QUFDckMsY0FBYyw0QkFBNEIsQ0FBQztBQUMzQyxjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyw4QkFBOEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBQdWJsaWMgQVBJIFN1cmZhY2Ugb2YgcHctc2VydmljZXNcbiAqL1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZ29vZ2xlLWFuYWx5dGljcy5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NjcmlwdC1sb2FkZXIuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9iYXNlLWh0dHAuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21tb24tc2VydmljZXMubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL21haW4tYXBpLWh0dHAuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9wZXJtaXNzaW9uLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdG9hc3Quc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9hdXRoLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbG9jYWwtc3RvcmFnZS5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlY3VyZS10b2tlbi1zdG9yYWdlLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvaW50ZWdyYXRpb25zLWFwaS1odHRwLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbGluay1sb2FkZXIuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi91c2VyLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY3VzdG9tLXByZWxvYWRpbmcuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9hYi10ZXN0LnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZ2VvLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvcHJvZmlsZS5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3N1YnNjcmlwdGlvbi5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3Byb2R1Y3Quc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi92YWxpZGF0aW9uLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZm9ybS1oZWxwZXIuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9haG95LnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tbW9uLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZGF0ZS1mb3JtYXR0ZXIuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9wcmltZU5nSGVscGVyJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3RhZy5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3RpcHMuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi93aW5kb3cuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9ncm91cC5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3F1YWxpZmljYXRpb24uc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9kYXNoYm9hcmQuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9tYWlsYm94LnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbm90aWZpY2F0aW9uLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc29ja2V0LnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZWZmZWN0cy91c2VyLmVmZmVjdHMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZGF0YS5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL251bWJlci1waWNrZXIuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zZW50cnkuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9sb2dvLWNhY2hpbmcuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9ob3BzY290Y2guc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9icmFpbi5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2JyYWluLWFwaS1odHRwLnNlcnZpY2UnO1xuIl19
47
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWJzL2NvbW1vbi1zZXJ2aWNlcy9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFDSCxjQUFjLGdDQUFnQyxDQUFDO0FBQy9DLGNBQWMsNkJBQTZCLENBQUM7QUFDNUMsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLDhCQUE4QixDQUFDO0FBQzdDLGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYyw2QkFBNkIsQ0FBQztBQUM1QyxjQUFjLDBCQUEwQixDQUFDO0FBQ3pDLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLDZCQUE2QixDQUFDO0FBQzVDLGNBQWMsb0NBQW9DLENBQUM7QUFDbkQsY0FBYyxxQ0FBcUMsQ0FBQztBQUNwRCxjQUFjLDJCQUEyQixDQUFDO0FBQzFDLGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYyxpQ0FBaUMsQ0FBQztBQUNoRCxjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLDRCQUE0QixDQUFDO0FBQzNDLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYywwQkFBMEIsQ0FBQztBQUN6QyxjQUFjLDJCQUEyQixDQUFDO0FBQzFDLGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLDhCQUE4QixDQUFDO0FBQzdDLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyxtQkFBbUIsQ0FBQztBQUNsQyxjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMsc0JBQXNCLENBQUM7QUFDckMsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLDZCQUE2QixDQUFDO0FBQzVDLGNBQWMseUJBQXlCLENBQUM7QUFDeEMsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLDRCQUE0QixDQUFDO0FBQzNDLGNBQWMsc0JBQXNCLENBQUM7QUFDckMsY0FBYyw0QkFBNEIsQ0FBQztBQUMzQyxjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMsNkJBQTZCLENBQUM7QUFDNUMsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLDRCQUE0QixDQUFDO0FBQzNDLGNBQWMseUJBQXlCLENBQUM7QUFDeEMsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLDhCQUE4QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIFB1YmxpYyBBUEkgU3VyZmFjZSBvZiBwdy1zZXJ2aWNlc1xuICovXG5leHBvcnQgKiBmcm9tICcuL2xpYi9nb29nbGUtYW5hbHl0aWNzLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc2NyaXB0LWxvYWRlci5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2Jhc2UtaHR0cC5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbW1vbi1zZXJ2aWNlcy5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc2VvLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbWFpbi1hcGktaHR0cC5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3Blcm1pc3Npb24uc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi90b2FzdC5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2F1dGguc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9sb2NhbC1zdG9yYWdlLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc2VjdXJlLXRva2VuLXN0b3JhZ2Uuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9pbnRlZ3JhdGlvbnMtYXBpLWh0dHAuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9saW5rLWxvYWRlci5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3VzZXIuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jdXN0b20tcHJlbG9hZGluZy5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2FiLXRlc3Quc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9nZW8uc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9wcm9maWxlLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc3Vic2NyaXB0aW9uLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvcHJvZHVjdC5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3ZhbGlkYXRpb24uc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9mb3JtLWhlbHBlci5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2Fob3kuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21tb24uc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9kYXRlLWZvcm1hdHRlci5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3ByaW1lTmdIZWxwZXInO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdGFnLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdGlwcy5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3dpbmRvdy5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2dyb3VwLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvcXVhbGlmaWNhdGlvbi5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2Rhc2hib2FyZC5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL21haWxib3guc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9ub3RpZmljYXRpb24uc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zb2NrZXQuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9lZmZlY3RzL3VzZXIuZWZmZWN0cyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9kYXRhLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbnVtYmVyLXBpY2tlci5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlbnRyeS5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2xvZ28tY2FjaGluZy5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2hvcHNjb3RjaC5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2JyYWluLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYnJhaW4tYXBpLWh0dHAuc2VydmljZSc7XG4iXX0=
@@ -168,6 +168,12 @@ export class AuthService {
168
168
  clearTokens() {
169
169
  return this.secureTokenStorage.clearTokens();
170
170
  }
171
+ /**
172
+ * Remove only impersonation tokens (not all tokens)
173
+ */
174
+ removeImpersonationTokens() {
175
+ return this.secureTokenStorage.removeImpersonatedTokens();
176
+ }
171
177
  getToken$() {
172
178
  return this.secureTokenStorage.getToken$();
173
179
  }
@@ -313,4 +319,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImpo
313
319
  type: Inject,
314
320
  args: [DOCUMENT]
315
321
  }] }] });
316
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24tc2VydmljZXMvc3JjL2xpYi9hdXRoLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNuRCxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFekMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDaEUsT0FBTyxFQUNILHVCQUF1QixFQUN2Qiw0QkFBNEIsRUFDNUIsMkJBQTJCLEVBQzNCLGlCQUFpQixFQUNqQixnQkFBZ0IsRUFDaEIsU0FBUyxFQUNaLE1BQU0sNEJBQTRCLENBQUM7QUFFcEMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN2QyxPQUFPLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2hELE9BQU8sSUFBSSxNQUFNLGFBQWEsQ0FBQztBQUcvQixPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUM3RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDN0QsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDM0UsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDckQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7Ozs7O0FBRzdDLE1BQU0sT0FBTyxX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UyxJQUFJLElBQUksRUFBRSxRQUFRLEtBQUssSUFBSSxFQUFFLFFBQVEsRUFBRSxDQUFDO2dCQUMvRCxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNwQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDOytHQWpXUSxXQUFXLHNSQXFCUixRQUFRO21IQXJCWCxXQUFXOzs0RkFBWCxXQUFXO2tCQUR2QixVQUFVOzswQkFzQkYsTUFBTTsyQkFBQyxRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRE9DVU1FTlQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgSHR0cEhlYWRlcnMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5cbmltcG9ydCB7IEFwcENvbmZpZ1NlcnZpY2UgfSBmcm9tICdAcG9zaXdpc2UvYXBwLWNvbmZpZy1zZXJ2aWNlJztcbmltcG9ydCB7XG4gICAgQ0FQVENIQV9WQUxJREFUSU9OX1BBVEgsXG4gICAgTkVXU0xFVFRFUl9DT05GSVJNQVRJT05fUEFUSCxcbiAgICBORVdTTEVUVEVSX1VOU1VCU0NSSUJFX1BBVEgsXG4gICAgU09DSUFMX0xPR0lOX1BBVEgsXG4gICAgVE9LRU5fSEVBREVSX0tFWSxcbiAgICBUT0tFTl9LRVlcbn0gZnJvbSAnQHBvc2l3aXNlL2NvbW1vbi11dGlsaXRpZXMnO1xuXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1hcCwgc3dpdGNoTWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHN3YWwgZnJvbSAnc3dlZXRhbGVydDInO1xuXG5pbXBvcnQgeyBTaWduVXBWYWx1ZXMgfSBmcm9tICcuL2NvbW1vbi1zZXJ2aWNlcy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgSW50ZWdyYXRpb25zQXBpSHR0cFNlcnZpY2UgfSBmcm9tICcuL2ludGVncmF0aW9ucy1hcGktaHR0cC5zZXJ2aWNlJztcbmltcG9ydCB7IExvY2FsU3RvcmFnZSB9IGZyb20gJy4vbG9jYWwtc3RvcmFnZS5zZXJ2aWNlJztcbmltcG9ydCB7IE1haW5BcGlIdHRwU2VydmljZSB9IGZyb20gJy4vbWFpbi1hcGktaHR0cC5zZXJ2aWNlJztcbmltcG9ydCB7IFNlY3VyZVRva2VuU3RvcmFnZVNlcnZpY2UgfSBmcm9tICcuL3NlY3VyZS10b2tlbi1zdG9yYWdlLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ3VzdG9tVG9hc3RTZXJ2aWNlIH0gZnJvbSAnLi90b2FzdC5zZXJ2aWNlJztcbmltcG9ydCB7IFVzZXJTZXJ2aWNlIH0gZnJvbSAnLi91c2VyLnNlcnZpY2UnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQXV0aFNlcnZpY2Uge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgcGxhdGZvcm1TdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+KCcnKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHR3aXR0ZXJFbmRwb2ludCA9ICcvdHdpdHRlcic7XG5cbiAgICBhdXRoX3Rva2VuOiBzdHJpbmc7XG4gICAgaGVhZGVyX2tleSA9ICdicm93c2VyJztcbiAgICBwbGF0Zm9ybSA9ICcnO1xuXG4gICAgcGxhdGZvcm0kID0gdGhpcy5wbGF0Zm9ybVN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG5cbiAgICBpc1VzZXJQZXJzb25hdGVkOiBib29sZWFuO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgbG9jYWxTdG9yYWdlOiBMb2NhbFN0b3JhZ2UsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgc2VjdXJlVG9rZW5TdG9yYWdlOiBTZWN1cmVUb2tlblN0b3JhZ2VTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlcjogUm91dGVyLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGh0dHA6IE1haW5BcGlIdHRwU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSB1c2VyU2VydmljZTogVXNlclNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgdG9hc3RyOiBDdXN0b21Ub2FzdFNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgYXBwQ29uZmlnU2VydmljZTogQXBwQ29uZmlnU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBpbnRlZ3JhdGlvbnNBcGk6IEludGVncmF0aW9uc0FwaUh0dHBTZXJ2aWNlLFxuICAgICAgICBASW5qZWN0KERPQ1VNRU5UKSBwcml2YXRlIHJlYWRvbmx5IGRvY3VtZW50OiBEb2N1bWVudFxuICAgICkge1xuICAgICAgICAvLyBTZXQgSGVhZGVyIEtleVxuICAgICAgICB0aGlzLnNldEhlYWRlcktleSgpO1xuICAgIH1cblxuICAgIGdldFRva2VuKCkge1xuICAgICAgICBpZiAodGhpcy5zZWN1cmVUb2tlblN0b3JhZ2UuZ2V0SW1wZXJzb25hdGVkVG9rZW4oKSkge1xuICAgICAgICAgICAgdGhpcy5pc1VzZXJQZXJzb25hdGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnNlY3VyZVRva2VuU3RvcmFnZS5nZXRJbXBlcnNvbmF0ZWRUb2tlbigpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLnNlY3VyZVRva2VuU3RvcmFnZS5nZXRQaG9uZWdhcFRva2VuKCkpIHtcbiAgICAgICAgICAgIHRoaXMuaXNVc2VyUGVyc29uYXRlZCA9IHRydWU7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5zZWN1cmVUb2tlblN0b3JhZ2UuZ2V0UGhvbmVnYXBUb2tlbigpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5pc1VzZXJQZXJzb25hdGVkID0gZmFsc2U7XG4gICAgICAgIHJldHVybiB0aGlzLnNlY3VyZVRva2VuU3RvcmFnZS5nZXRUb2tlbigpO1xuICAgIH1cblxuICAgIGdldEltcGVyc29uYXRlZFRva2VuKCkge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgdGhpcy5zZWN1cmVUb2tlblN0b3JhZ2UuZ2V0SW1wZXJzb25hdGVkVG9rZW4oKSB8fFxuICAgICAgICAgICAgdGhpcy5zZWN1cmVUb2tlblN0b3JhZ2UuZ2V0UGhvbmVnYXBUb2tlbigpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgc2V0SGVhZGVyS2V5KCkge1xuICAgICAgICAvLyBNb2JpbGU6IGFwcFxuICAgICAgICAvLyBXZWJzaXRlOiBicm93c2VyXG4gICAgICAgIHRoaXMuZ2V0SGVhZGVyS2V5KCkuc3Vic2NyaWJlKHtcbiAgICAgICAgICAgIG5leHQ6IChrZXk6IHN0cmluZykgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChrZXkgPT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5oZWFkZXJfa2V5ID0gJ2Jyb3dzZXInO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnBsYXRmb3JtU3ViamVjdC5uZXh0KCdicm93c2VyJyk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChrZXkgPT09ICdhcHAnKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaGVhZGVyX2tleSA9IGtleTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wbGF0Zm9ybVN1YmplY3QubmV4dChrZXkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBlcnJvcjogKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuaGVhZGVyX2tleSA9ICdicm93c2VyJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgc2lnblVwVXNlcih2YWx1ZXM6IFNpZ25VcFZhbHVlcykge1xuICAgICAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xuICAgICAgICBmb3JtRGF0YS5hcHBlbmQoJ2NvbmZpcm1hdGlvbl9wYXRoJywgdmFsdWVzLmNvbmZpcm1hdGlvbl9wYXRoKTtcbiAgICAgICAgZm9ybURhdGEuYXBwZW5kKCdjb250YWN0X25hbWUnLCB2YWx1ZXMuY29udGFjdF9uYW1lKTtcbiAgICAgICAgZm9ybURhdGEuYXBwZW5kKCdlbWFpbCcsIHZhbHVlcy5lbWFpbCk7XG4gICAgICAgIGZvcm1EYXRhLmFwcGVuZCgndXNlcl9zaWdudXBfdXJsJywgdmFsdWVzLnVzZXJfc2lnbnVwX3VybCk7XG4gICAgICAgIGZvcm1EYXRhLmFwcGVuZCgnb3JnYW5pc2F0aW9uJywgdmFsdWVzLm9yZ2FuaXNhdGlvbik7XG4gICAgICAgIGZvcm1EYXRhLmFwcGVuZCgncHJvZHVjdF9pZCcsIHZhbHVlcy5wcm9kdWN0X2lkLnRvU3RyaW5nKCkpO1xuICAgICAgICBmb3JtRGF0YS5hcHBlbmQoJ3VuaXRzJywgdmFsdWVzLnVuaXRzLnRvU3RyaW5nKCkpO1xuICAgICAgICBmb3JtRGF0YS5hcHBlbmQoJ3N0cmlwZV90b2tlbicsIHZhbHVlcy5zdHJpcGVfdG9rZW4pO1xuICAgICAgICBmb3JtRGF0YS5hcHBlbmQoJ21hc3Rlcl9zdWJzY3JpcHRpb25faWQnLCB2YWx1ZXMubWFzdGVyX3N1YnNjcmlwdGlvbl9pZC50b1N0cmluZygpKTtcblxuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoJ3NpZ251cHMnLCBmb3JtRGF0YSk7XG4gICAgfVxuXG4gICAgdHJpYWxTaWduVXAoZGF0YTogb2JqZWN0KSB7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdCgnc2lnbnVwcy90cmlhbF9zaWdudXAnLCBkYXRhKTtcbiAgICB9XG5cbiAgICB2YWxpZGF0ZUVtYWlsKGVtYWlsOiBzdHJpbmcpIHtcbiAgICAgICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgICAgICAgZW1haWxcbiAgICAgICAgfTtcblxuICAgICAgICByZXR1cm4gdGhpcy5odHRwLmdldFdpdGhQYXJhbXMoJ3VzZXJzL3ZhbGlkYXRlX2VtYWlsJywgcGFyYW1zKTtcbiAgICB9XG5cbiAgICBmb3Jnb3RQYXNzd29yZChlbWFpbDogc3RyaW5nLCByZXNldF9wYXRoOiBzdHJpbmcpIHtcbiAgICAgICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgICAgICAgZW1haWwsXG4gICAgICAgICAgICByZXNldF9wYXRoXG4gICAgICAgIH07XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXRXaXRoUGFyYW1zKCdwYXNzd29yZCcsIHBhcmFtcyk7XG4gICAgfVxuXG4gICAgcmVzZXRQYXNzd29yZChwYXNzd29yZDogc3RyaW5nLCBjb25maXJtX3Bhc3N3b3JkOiBzdHJpbmcsIHBhc3N3b3JkX3Jlc2V0X3Rva2VuOiBzdHJpbmcpIHtcbiAgICAgICAgY29uc3QgZm9ybURhdGEgPSBuZXcgRm9ybURhdGEoKTtcbiAgICAgICAgZm9ybURhdGEuYXBwZW5kKCdwYXNzd29yZCcsIHBhc3N3b3JkKTtcbiAgICAgICAgZm9ybURhdGEuYXBwZW5kKCdwYXNzd29yZF9jb25maXJtYXRpb24nLCBjb25maXJtX3Bhc3N3b3JkKTtcbiAgICAgICAgZm9ybURhdGEuYXBwZW5kKCdyZXNldF9wYXNzd29yZF90b2tlbicsIHBhc3N3b3JkX3Jlc2V0X3Rva2VuKTtcblxuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnB1dCgncGFzc3dvcmQnLCBmb3JtRGF0YSk7XG4gICAgfVxuXG4gICAgaGVhZGVyKCkge1xuICAgICAgICBpZiAodGhpcy5oZWFkZXJfa2V5ID09PSAnYnJvd3NlcicpIHtcbiAgICAgICAgICAgIGNvbnN0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoe1xuICAgICAgICAgICAgICAgIFtUT0tFTl9IRUFERVJfS0VZXTogYnRvYSh0aGlzLmF1dGhfdG9rZW4pXG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgcmV0dXJuIGhlYWRlcnM7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycyh7XG4gICAgICAgICAgICAnWC1QaG9uZWdhcC1Ub2tlbic6IGJ0b2EodGhpcy5hdXRoX3Rva2VuKVxuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gaGVhZGVycztcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldEhlYWRlcktleSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubG9jYWxTdG9yYWdlLmdldEl0ZW0kKCdwbGF0Zm9ybScpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0UGxhdGZvcm0oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmxvY2FsU3RvcmFnZS5nZXRJdGVtJCgncGxhdGZvcm0nKTtcbiAgICB9XG5cbiAgICBzaWduSW5Vc2VyKGVtYWlsOiBzdHJpbmcsIHBhc3N3b3JkOiBzdHJpbmcpIHtcbiAgICAgICAgY29uc3QgZm9ybURhdGEgPSBuZXcgRm9ybURhdGEoKTtcbiAgICAgICAgZm9ybURhdGEuYXBwZW5kKCdlbWFpbCcsIGVtYWlsKTtcbiAgICAgICAgZm9ybURhdGEuYXBwZW5kKCdwYXNzd29yZCcsIHBhc3N3b3JkKTtcblxuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoJ3Nlc3Npb24nLCBmb3JtRGF0YSk7XG4gICAgfVxuXG4gICAgc2lnbkluVXNlcldpdGgyRmEoZW1haWw6IHN0cmluZywgcGFzc3dvcmQ6IHN0cmluZywgZ29vZ2xlX2NvZGUpIHtcbiAgICAgICAgY29uc3QgZm9ybURhdGEgPSBuZXcgRm9ybURhdGEoKTtcbiAgICAgICAgZm9ybURhdGEuYXBwZW5kKCdlbWFpbCcsIGVtYWlsKTtcbiAgICAgICAgZm9ybURhdGEuYXBwZW5kKCdwYXNzd29yZCcsIHBhc3N3b3JkKTtcbiAgICAgICAgZm9ybURhdGEuYXBwZW5kKCdnb29nbGVfY29kZScsIGdvb2dsZV9jb2RlKTtcblxuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoJ3Nlc3Npb24nLCBmb3JtRGF0YSk7XG4gICAgfVxuXG4gICAgc3RvcmVUb2tlbih0b2tlbjogc3RyaW5nKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnNlY3VyZVRva2VuU3RvcmFnZS5zdG9yZVRva2VuKHRva2VuKTtcbiAgICB9XG5cbiAgICBzdG9yZVBsYXRmb3JtKHBsYXQ6IHN0cmluZykge1xuICAgICAgICByZXR1cm4gdGhpcy5sb2NhbFN0b3JhZ2Uuc2V0SXRlbSQoJ3BsYXRmb3JtJywgcGxhdCk7XG4gICAgfVxuXG4gICAgbG9nb3V0KCkge1xuICAgICAgICBjb25zdCBvcHRpb25zID0ge1xuICAgICAgICAgICAgaGVhZGVyczogdGhpcy5oZWFkZXIoKVxuICAgICAgICB9O1xuXG4gICAgICAgIGlmICh0aGlzLmhlYWRlcl9rZXkgIT09ICdicm93c2VyJykge1xuICAgICAgICAgICAgb3B0aW9uc1sncGFyYW1zJ10gPSB7XG4gICAgICAgICAgICAgICAgcGhvbmVnYXA6IHRydWVcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cblxuICAgICAgICAvLyBDbGVhciBhbGwgdG9rZW5zIHNlY3VyZWx5XG4gICAgICAgIHRoaXMuc2VjdXJlVG9rZW5TdG9yYWdlLmNsZWFyVG9rZW5zKCkuc3Vic2NyaWJlKCk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5kZWxldGUoJ3Nlc3Npb24nLCBvcHRpb25zKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDbGVhciBhbGwgYXV0aGVudGljYXRpb24gdG9rZW5zXG4gICAgICovXG4gICAgY2xlYXJUb2tlbnMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnNlY3VyZVRva2VuU3RvcmFnZS5jbGVhclRva2VucygpO1xuICAgIH1cblxuICAgIGdldFRva2VuJCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VjdXJlVG9rZW5TdG9yYWdlLmdldFRva2VuJCgpO1xuICAgIH1cblxuICAgIGdldE5ld3NsZXR0ZXJTdWJzY3JpcHRpb24odG9rZW46IHN0cmluZykge1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLmdldChgJHtORVdTTEVUVEVSX0NPTkZJUk1BVElPTl9QQVRIfT90b2tlbj0ke3Rva2VufWApO1xuICAgIH1cblxuICAgIHVuc3Vic2NyaWJlTmV3c2xldHRlcih0b2tlbjogc3RyaW5nKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KGAke05FV1NMRVRURVJfVU5TVUJTQ1JJQkVfUEFUSH0/dG9rZW49JHt0b2tlbn1gKTtcbiAgICB9XG5cbiAgICB2YWxpZGF0ZVJlQ2FwdGNoYSh0b2tlbjogc3RyaW5nKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KGAke0NBUFRDSEFfVkFMSURBVElPTl9QQVRIfT0ke3Rva2VufWApO1xuICAgIH1cblxuICAgIHNvY2lhbExvZ2luKGRhdGEpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFNPQ0lBTF9MT0dJTl9QQVRILCBkYXRhKTtcbiAgICB9XG5cbiAgICB0d2l0dGVyTG9naW4oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KGAke3RoaXMudHdpdHRlckVuZHBvaW50fS9nZXRfYXV0aG9yaXplX3VybGApO1xuICAgIH1cblxuICAgIHR3aXR0ZXJBdXRoQ2FsbGJhY2soZGF0YSkge1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYCR7dGhpcy50d2l0dGVyRW5kcG9pbnR9L2F1dGhvcml6YXRpb25fY2FsbGJhY2tgLCBkYXRhKTtcbiAgICB9XG5cbiAgICBtaWNyb3NvZnRMb2dpbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoYG1pY3Jvc29mdC9nZXRfYXV0aG9yaXplX3VybGApO1xuICAgIH1cblxuICAgIGNvZ25pdG9Mb2dpbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoYGNvZ25pdG8vZ2V0X2F1dGhvcml6ZV91cmxgKTtcbiAgICB9XG5cbiAgICBtaWNyb3NvZnRBdXRoQ2FsbGJhY2soZGF0YSkge1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYG1pY3Jvc29mdC9hdXRob3JpemF0aW9uX2NhbGxiYWNrYCwgZGF0YSk7XG4gICAgfVxuXG4gICAgZ29vZ2xlTG9naW4oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KGBnb29nbGUvZ2V0X2F1dGhvcml6ZV91cmxgKTtcbiAgICB9XG5cbiAgICBnb29nbGVBdXRoQ2FsbGJhY2soZGF0YSkge1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYGdvb2dsZS9hdXRob3JpemF0aW9uX2NhbGxiYWNrYCwgZGF0YSk7XG4gICAgfVxuXG4gICAgZmFjZWJvb2tMb2dpbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoYGZhY2Vib29rL2dldF9hdXRob3JpemVfdXJsYCk7XG4gICAgfVxuXG4gICAgZmFjZWJvb2tBdXRoQ2FsbGJhY2soZGF0YSkge1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYGZhY2Vib29rL2F1dGhvcml6YXRpb25fY2FsbGJhY2tgLCBkYXRhKTtcbiAgICB9XG5cbiAgICBhcHBsZUxvZ2luKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLmdldChgYXBwbGUvZ2V0X2F1dGhvcml6ZV91cmxgKTtcbiAgICB9XG5cbiAgICBhcHBsZUF1dGhDYWxsYmFjayhkYXRhKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChgYXBwbGUvYXV0aG9yaXphdGlvbl9jYWxsYmFja2AsIGRhdGEpO1xuICAgIH1cblxuICAgIGNvZ25pdG9BdXRoQ2FsbGJhY2soZGF0YSkge1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYGNvZ25pdG8vYXV0aG9yaXphdGlvbl9jYWxsYmFja2AsIGRhdGEpO1xuICAgIH1cblxuICAgIGxpbmtlZGluTG9naW4oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFwcENvbmZpZ1NlcnZpY2UuYXBwQ29uZmlnJC5waXBlKFxuICAgICAgICAgICAgc3dpdGNoTWFwKGNvbmZpZyA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoXG4gICAgICAgICAgICAgICAgICAgIGAvbGlua2VkaW4vZ2V0X2F1dGhvcml6ZV91cmw/cmVkaXJlY3RfdXJsPSR7Y29uZmlnWydsaW5rcyddLmZyb250ZW5kX2xpbmt9L2xpbmtlZGluLWNvbmZpcm1hdGlvbmBcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBsaW5rZWRJbkF1dGhDYWxsYmFjayhkYXRhKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdCgnbGlua2VkaW4vYXV0aG9yaXphdGlvbl9jYWxsYmFjaycsIGRhdGEpO1xuICAgIH1cblxuICAgIHBvc3RMb2dpbihyZXNwb25zZSkge1xuICAgICAgICB0aGlzLmxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtJCgncHJvZHVjdF9pZCcpLnN1YnNjcmliZSgpO1xuICAgICAgICB0aGlzLnNldEhlYWRlcktleSgpO1xuICAgICAgICAvLyB0aGlzLnNldFBsYXRmb3JtKCk7IGNhbGwgaXQgZnJvbSBjbG91ZG9saXZlIHJlcG8uXG5cbiAgICAgICAgLy8gU2F2ZXMgdGhlIHRva2VuIGludG8gdGhlIGxvY2FsU3RvcmFnZSBhbmQgZmV0Y2hlcyB0aGUgdXNlciBpbmZvcm1hdGlvblxuICAgICAgICBjb25zdCBzZXF1ZW5jZSQgPSB0aGlzLnN0b3JlVG9rZW4ocmVzcG9uc2VbVE9LRU5fS0VZXSkucGlwZShcbiAgICAgICAgICAgIHN3aXRjaE1hcCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMudXNlclNlcnZpY2UuZ2V0VXNlckluZm8oKTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG5cbiAgICAgICAgc2VxdWVuY2UkLnN1YnNjcmliZShyZXNwID0+IHtcbiAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCduYW1lJywgcmVzcC5maXJzdF9uYW1lKTtcbiAgICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnaG9tZSddKTtcbiAgICAgICAgICAgIGlmICgkKCcuY2MtZGlzbWlzcycpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAkKCcuY2MtZGlzbWlzcycpWzBdLmNsaWNrKCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBpbXBlcnNvbmF0ZVVzZXIoZGF0YTogeyBlbWFpbDogc3RyaW5nOyBzdWJzY3JpcHRpb25faWQ6IG51bWJlcjsgcGhvbmVnYXA/OiBib29sZWFuIH0pIHtcbiAgICAgICAgaWYgKCFkYXRhLnBob25lZ2FwKSB7XG4gICAgICAgICAgICBkZWxldGUgZGF0YS5waG9uZWdhcDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdCgnL3Nlc3Npb24vaW1wZXJzb25hdGVfdXNlcicsIGRhdGEpLnBpcGUoXG4gICAgICAgICAgICBtYXAoeCA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHg/LmF1dGhfdG9rZW4pIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWN1cmVUb2tlblN0b3JhZ2Uuc3RvcmVJbXBlcnNvbmF0ZWRUb2tlbih4LmF1dGhfdG9rZW4pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoeD8ucGhvbmVnYXBfdG9rZW4pIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWN1cmVUb2tlblN0b3JhZ2Uuc3RvcmVQaG9uZWdhcFRva2VuKHgucGhvbmVnYXBfdG9rZW4pO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJldHVybiB4O1xuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwb3N0U29jaWFsTG9naW4ocmVzcG9uc2UpIHtcbiAgICAgICAgY29uc3QgYWxyZWFkeVNpZ25lZCA9ICEhcmVzcG9uc2VbVE9LRU5fS0VZXTtcbiAgICAgICAgY29uc3QgaXNOZXdTaWduVXAgPSAhIXJlc3BvbnNlLnN1YnNjcmlwdGlvbjtcblxuICAgICAgICBpZiAoaXNOZXdTaWduVXApIHtcbiAgICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnY29uZmlybWF0aW9uJ10sIHtcbiAgICAgICAgICAgICAgICBxdWVyeVBhcmFtczoge1xuICAgICAgICAgICAgICAgICAgICByZWY6IHJlc3BvbnNlLnJlZmVyZW5jZV9udW1iZXIsXG4gICAgICAgICAgICAgICAgICAgIHN1YnNjcmlwdGlvbjogcmVzcG9uc2Uuc3Vic2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgICAgICB1c2VyczogcmVzcG9uc2UudXNlcnNcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIGlmIChhbHJlYWR5U2lnbmVkKSB7XG4gICAgICAgICAgICB0aGlzLnN0b3JlVG9rZW4ocmVzcG9uc2VbVE9LRU5fS0VZXSkuc3Vic2NyaWJlKHtcbiAgICAgICAgICAgICAgICBuZXh0OiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnaG9tZSddKTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGVycm9yOiBlcnJvciA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudG9hc3RyLnNob3dUb2FzdChlcnJvcik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzd2FsLmZpcmUoe1xuICAgICAgICAgICAgICAgIHRvYXN0OiB0cnVlLFxuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiAnYm90dG9tJyxcbiAgICAgICAgICAgICAgICBodG1sOiBgPHN0cm9uZyBjbGFzcz1cInRleHQtZGFuZ2VyXCI+ICR7cmVzcG9uc2UuZXJyb3IubWVzc2FnZX08L3N0cm9uZz5gLFxuICAgICAgICAgICAgICAgIHNob3dDYW5jZWxCdXR0b246IHRydWUsXG4gICAgICAgICAgICAgICAgcmV2ZXJzZUJ1dHRvbnM6IHRydWUsXG4gICAgICAgICAgICAgICAgaWNvbjogJ2Vycm9yJ1xuICAgICAgICAgICAgfSkudGhlbihyZXAgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChyZXAudmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWydyZWdpc3RlciddKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJlZ2lzdGVyVG9rZW5MaXN0ZW5lcigpIHtcbiAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3N0b3JhZ2UnLCBkYXRhID0+IHtcbiAgICAgICAgICAgIC8vIGxvZ3Mgb3V0IHRoZSBvdGhlciB0YWJzIHdoZW4gdGhlIHRva2VuIGlzIGNoYW5nZWQuXG4gICAgICAgICAgICAvLyB3ZSBhc3N1bWUgdGhhdCB0b2tlbiBkb2Vzbid0IHJlZnJlc2ggYW5kIGJhY2tlbmQgdXBkYXRlcyB0aGUgZXhwaXJ5IHRpbWVcbiAgICAgICAgICAgIGlmIChkYXRhPy5rZXkgPT09IFRPS0VOX0tFWSAmJiBkYXRhPy5vbGRWYWx1ZSAhPT0gZGF0YT8ubmV3VmFsdWUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmRvY3VtZW50LmxvY2F0aW9uLnJlbG9hZCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG59XG4iXX0=
322
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24tc2VydmljZXMvc3JjL2xpYi9hdXRoLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNuRCxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFekMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDaEUsT0FBTyxFQUNILHVCQUF1QixFQUN2Qiw0QkFBNEIsRUFDNUIsMkJBQTJCLEVBQzNCLGlCQUFpQixFQUNqQixnQkFBZ0IsRUFDaEIsU0FBUyxFQUNaLE1BQU0sNEJBQTRCLENBQUM7QUFFcEMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN2QyxPQUFPLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2hELE9BQU8sSUFBSSxNQUFNLGFBQWEsQ0FBQztBQUcvQixPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUM3RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDN0QsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDM0UsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDckQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7Ozs7O0FBRzdDLE1BQU0sT0FBTyxX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QUFTLEVBQUUsSUFBSSxDQUFDLEVBQUU7WUFDdEMscURBQXFEO1lBQ3JELDJFQUEyRTtZQUMzRSxJQUFJLElBQUksRUFBRSxHQUFHLEtBQUssU0FBUyxJQUFJLElBQUksRUFBRSxRQUFRLEtBQUssSUFBSSxFQUFFLFFBQVEsRUFBRSxDQUFDO2dCQUMvRCxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNwQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDOytHQXhXUSxXQUFXLHNSQXFCUixRQUFRO21IQXJCWCxXQUFXOzs0RkFBWCxXQUFXO2tCQUR2QixVQUFVOzswQkFzQkYsTUFBTTsyQkFBQyxRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRE9DVU1FTlQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgSHR0cEhlYWRlcnMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5cbmltcG9ydCB7IEFwcENvbmZpZ1NlcnZpY2UgfSBmcm9tICdAcG9zaXdpc2UvYXBwLWNvbmZpZy1zZXJ2aWNlJztcbmltcG9ydCB7XG4gICAgQ0FQVENIQV9WQUxJREFUSU9OX1BBVEgsXG4gICAgTkVXU0xFVFRFUl9DT05GSVJNQVRJT05fUEFUSCxcbiAgICBORVdTTEVUVEVSX1VOU1VCU0NSSUJFX1BBVEgsXG4gICAgU09DSUFMX0xPR0lOX1BBVEgsXG4gICAgVE9LRU5fSEVBREVSX0tFWSxcbiAgICBUT0tFTl9LRVlcbn0gZnJvbSAnQHBvc2l3aXNlL2NvbW1vbi11dGlsaXRpZXMnO1xuXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1hcCwgc3dpdGNoTWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHN3YWwgZnJvbSAnc3dlZXRhbGVydDInO1xuXG5pbXBvcnQgeyBTaWduVXBWYWx1ZXMgfSBmcm9tICcuL2NvbW1vbi1zZXJ2aWNlcy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgSW50ZWdyYXRpb25zQXBpSHR0cFNlcnZpY2UgfSBmcm9tICcuL2ludGVncmF0aW9ucy1hcGktaHR0cC5zZXJ2aWNlJztcbmltcG9ydCB7IExvY2FsU3RvcmFnZSB9IGZyb20gJy4vbG9jYWwtc3RvcmFnZS5zZXJ2aWNlJztcbmltcG9ydCB7IE1haW5BcGlIdHRwU2VydmljZSB9IGZyb20gJy4vbWFpbi1hcGktaHR0cC5zZXJ2aWNlJztcbmltcG9ydCB7IFNlY3VyZVRva2VuU3RvcmFnZVNlcnZpY2UgfSBmcm9tICcuL3NlY3VyZS10b2tlbi1zdG9yYWdlLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ3VzdG9tVG9hc3RTZXJ2aWNlIH0gZnJvbSAnLi90b2FzdC5zZXJ2aWNlJztcbmltcG9ydCB7IFVzZXJTZXJ2aWNlIH0gZnJvbSAnLi91c2VyLnNlcnZpY2UnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQXV0aFNlcnZpY2Uge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgcGxhdGZvcm1TdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+KCcnKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHR3aXR0ZXJFbmRwb2ludCA9ICcvdHdpdHRlcic7XG5cbiAgICBhdXRoX3Rva2VuOiBzdHJpbmc7XG4gICAgaGVhZGVyX2tleSA9ICdicm93c2VyJztcbiAgICBwbGF0Zm9ybSA9ICcnO1xuXG4gICAgcGxhdGZvcm0kID0gdGhpcy5wbGF0Zm9ybVN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG5cbiAgICBpc1VzZXJQZXJzb25hdGVkOiBib29sZWFuO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgbG9jYWxTdG9yYWdlOiBMb2NhbFN0b3JhZ2UsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgc2VjdXJlVG9rZW5TdG9yYWdlOiBTZWN1cmVUb2tlblN0b3JhZ2VTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlcjogUm91dGVyLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGh0dHA6IE1haW5BcGlIdHRwU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSB1c2VyU2VydmljZTogVXNlclNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgdG9hc3RyOiBDdXN0b21Ub2FzdFNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgYXBwQ29uZmlnU2VydmljZTogQXBwQ29uZmlnU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBpbnRlZ3JhdGlvbnNBcGk6IEludGVncmF0aW9uc0FwaUh0dHBTZXJ2aWNlLFxuICAgICAgICBASW5qZWN0KERPQ1VNRU5UKSBwcml2YXRlIHJlYWRvbmx5IGRvY3VtZW50OiBEb2N1bWVudFxuICAgICkge1xuICAgICAgICAvLyBTZXQgSGVhZGVyIEtleVxuICAgICAgICB0aGlzLnNldEhlYWRlcktleSgpO1xuICAgIH1cblxuICAgIGdldFRva2VuKCkge1xuICAgICAgICBpZiAodGhpcy5zZWN1cmVUb2tlblN0b3JhZ2UuZ2V0SW1wZXJzb25hdGVkVG9rZW4oKSkge1xuICAgICAgICAgICAgdGhpcy5pc1VzZXJQZXJzb25hdGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnNlY3VyZVRva2VuU3RvcmFnZS5nZXRJbXBlcnNvbmF0ZWRUb2tlbigpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLnNlY3VyZVRva2VuU3RvcmFnZS5nZXRQaG9uZWdhcFRva2VuKCkpIHtcbiAgICAgICAgICAgIHRoaXMuaXNVc2VyUGVyc29uYXRlZCA9IHRydWU7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5zZWN1cmVUb2tlblN0b3JhZ2UuZ2V0UGhvbmVnYXBUb2tlbigpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5pc1VzZXJQZXJzb25hdGVkID0gZmFsc2U7XG4gICAgICAgIHJldHVybiB0aGlzLnNlY3VyZVRva2VuU3RvcmFnZS5nZXRUb2tlbigpO1xuICAgIH1cblxuICAgIGdldEltcGVyc29uYXRlZFRva2VuKCkge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgdGhpcy5zZWN1cmVUb2tlblN0b3JhZ2UuZ2V0SW1wZXJzb25hdGVkVG9rZW4oKSB8fFxuICAgICAgICAgICAgdGhpcy5zZWN1cmVUb2tlblN0b3JhZ2UuZ2V0UGhvbmVnYXBUb2tlbigpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgc2V0SGVhZGVyS2V5KCkge1xuICAgICAgICAvLyBNb2JpbGU6IGFwcFxuICAgICAgICAvLyBXZWJzaXRlOiBicm93c2VyXG4gICAgICAgIHRoaXMuZ2V0SGVhZGVyS2V5KCkuc3Vic2NyaWJlKHtcbiAgICAgICAgICAgIG5leHQ6IChrZXk6IHN0cmluZykgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChrZXkgPT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5oZWFkZXJfa2V5ID0gJ2Jyb3dzZXInO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnBsYXRmb3JtU3ViamVjdC5uZXh0KCdicm93c2VyJyk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChrZXkgPT09ICdhcHAnKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaGVhZGVyX2tleSA9IGtleTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wbGF0Zm9ybVN1YmplY3QubmV4dChrZXkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBlcnJvcjogKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuaGVhZGVyX2tleSA9ICdicm93c2VyJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgc2lnblVwVXNlcih2YWx1ZXM6IFNpZ25VcFZhbHVlcykge1xuICAgICAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xuICAgICAgICBmb3JtRGF0YS5hcHBlbmQoJ2NvbmZpcm1hdGlvbl9wYXRoJywgdmFsdWVzLmNvbmZpcm1hdGlvbl9wYXRoKTtcbiAgICAgICAgZm9ybURhdGEuYXBwZW5kKCdjb250YWN0X25hbWUnLCB2YWx1ZXMuY29udGFjdF9uYW1lKTtcbiAgICAgICAgZm9ybURhdGEuYXBwZW5kKCdlbWFpbCcsIHZhbHVlcy5lbWFpbCk7XG4gICAgICAgIGZvcm1EYXRhLmFwcGVuZCgndXNlcl9zaWdudXBfdXJsJywgdmFsdWVzLnVzZXJfc2lnbnVwX3VybCk7XG4gICAgICAgIGZvcm1EYXRhLmFwcGVuZCgnb3JnYW5pc2F0aW9uJywgdmFsdWVzLm9yZ2FuaXNhdGlvbik7XG4gICAgICAgIGZvcm1EYXRhLmFwcGVuZCgncHJvZHVjdF9pZCcsIHZhbHVlcy5wcm9kdWN0X2lkLnRvU3RyaW5nKCkpO1xuICAgICAgICBmb3JtRGF0YS5hcHBlbmQoJ3VuaXRzJywgdmFsdWVzLnVuaXRzLnRvU3RyaW5nKCkpO1xuICAgICAgICBmb3JtRGF0YS5hcHBlbmQoJ3N0cmlwZV90b2tlbicsIHZhbHVlcy5zdHJpcGVfdG9rZW4pO1xuICAgICAgICBmb3JtRGF0YS5hcHBlbmQoJ21hc3Rlcl9zdWJzY3JpcHRpb25faWQnLCB2YWx1ZXMubWFzdGVyX3N1YnNjcmlwdGlvbl9pZC50b1N0cmluZygpKTtcblxuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoJ3NpZ251cHMnLCBmb3JtRGF0YSk7XG4gICAgfVxuXG4gICAgdHJpYWxTaWduVXAoZGF0YTogb2JqZWN0KSB7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdCgnc2lnbnVwcy90cmlhbF9zaWdudXAnLCBkYXRhKTtcbiAgICB9XG5cbiAgICB2YWxpZGF0ZUVtYWlsKGVtYWlsOiBzdHJpbmcpIHtcbiAgICAgICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgICAgICAgZW1haWxcbiAgICAgICAgfTtcblxuICAgICAgICByZXR1cm4gdGhpcy5odHRwLmdldFdpdGhQYXJhbXMoJ3VzZXJzL3ZhbGlkYXRlX2VtYWlsJywgcGFyYW1zKTtcbiAgICB9XG5cbiAgICBmb3Jnb3RQYXNzd29yZChlbWFpbDogc3RyaW5nLCByZXNldF9wYXRoOiBzdHJpbmcpIHtcbiAgICAgICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgICAgICAgZW1haWwsXG4gICAgICAgICAgICByZXNldF9wYXRoXG4gICAgICAgIH07XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXRXaXRoUGFyYW1zKCdwYXNzd29yZCcsIHBhcmFtcyk7XG4gICAgfVxuXG4gICAgcmVzZXRQYXNzd29yZChwYXNzd29yZDogc3RyaW5nLCBjb25maXJtX3Bhc3N3b3JkOiBzdHJpbmcsIHBhc3N3b3JkX3Jlc2V0X3Rva2VuOiBzdHJpbmcpIHtcbiAgICAgICAgY29uc3QgZm9ybURhdGEgPSBuZXcgRm9ybURhdGEoKTtcbiAgICAgICAgZm9ybURhdGEuYXBwZW5kKCdwYXNzd29yZCcsIHBhc3N3b3JkKTtcbiAgICAgICAgZm9ybURhdGEuYXBwZW5kKCdwYXNzd29yZF9jb25maXJtYXRpb24nLCBjb25maXJtX3Bhc3N3b3JkKTtcbiAgICAgICAgZm9ybURhdGEuYXBwZW5kKCdyZXNldF9wYXNzd29yZF90b2tlbicsIHBhc3N3b3JkX3Jlc2V0X3Rva2VuKTtcblxuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnB1dCgncGFzc3dvcmQnLCBmb3JtRGF0YSk7XG4gICAgfVxuXG4gICAgaGVhZGVyKCkge1xuICAgICAgICBpZiAodGhpcy5oZWFkZXJfa2V5ID09PSAnYnJvd3NlcicpIHtcbiAgICAgICAgICAgIGNvbnN0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoe1xuICAgICAgICAgICAgICAgIFtUT0tFTl9IRUFERVJfS0VZXTogYnRvYSh0aGlzLmF1dGhfdG9rZW4pXG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgcmV0dXJuIGhlYWRlcnM7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycyh7XG4gICAgICAgICAgICAnWC1QaG9uZWdhcC1Ub2tlbic6IGJ0b2EodGhpcy5hdXRoX3Rva2VuKVxuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gaGVhZGVycztcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldEhlYWRlcktleSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubG9jYWxTdG9yYWdlLmdldEl0ZW0kKCdwbGF0Zm9ybScpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0UGxhdGZvcm0oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmxvY2FsU3RvcmFnZS5nZXRJdGVtJCgncGxhdGZvcm0nKTtcbiAgICB9XG5cbiAgICBzaWduSW5Vc2VyKGVtYWlsOiBzdHJpbmcsIHBhc3N3b3JkOiBzdHJpbmcpIHtcbiAgICAgICAgY29uc3QgZm9ybURhdGEgPSBuZXcgRm9ybURhdGEoKTtcbiAgICAgICAgZm9ybURhdGEuYXBwZW5kKCdlbWFpbCcsIGVtYWlsKTtcbiAgICAgICAgZm9ybURhdGEuYXBwZW5kKCdwYXNzd29yZCcsIHBhc3N3b3JkKTtcblxuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoJ3Nlc3Npb24nLCBmb3JtRGF0YSk7XG4gICAgfVxuXG4gICAgc2lnbkluVXNlcldpdGgyRmEoZW1haWw6IHN0cmluZywgcGFzc3dvcmQ6IHN0cmluZywgZ29vZ2xlX2NvZGUpIHtcbiAgICAgICAgY29uc3QgZm9ybURhdGEgPSBuZXcgRm9ybURhdGEoKTtcbiAgICAgICAgZm9ybURhdGEuYXBwZW5kKCdlbWFpbCcsIGVtYWlsKTtcbiAgICAgICAgZm9ybURhdGEuYXBwZW5kKCdwYXNzd29yZCcsIHBhc3N3b3JkKTtcbiAgICAgICAgZm9ybURhdGEuYXBwZW5kKCdnb29nbGVfY29kZScsIGdvb2dsZV9jb2RlKTtcblxuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoJ3Nlc3Npb24nLCBmb3JtRGF0YSk7XG4gICAgfVxuXG4gICAgc3RvcmVUb2tlbih0b2tlbjogc3RyaW5nKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnNlY3VyZVRva2VuU3RvcmFnZS5zdG9yZVRva2VuKHRva2VuKTtcbiAgICB9XG5cbiAgICBzdG9yZVBsYXRmb3JtKHBsYXQ6IHN0cmluZykge1xuICAgICAgICByZXR1cm4gdGhpcy5sb2NhbFN0b3JhZ2Uuc2V0SXRlbSQoJ3BsYXRmb3JtJywgcGxhdCk7XG4gICAgfVxuXG4gICAgbG9nb3V0KCkge1xuICAgICAgICBjb25zdCBvcHRpb25zID0ge1xuICAgICAgICAgICAgaGVhZGVyczogdGhpcy5oZWFkZXIoKVxuICAgICAgICB9O1xuXG4gICAgICAgIGlmICh0aGlzLmhlYWRlcl9rZXkgIT09ICdicm93c2VyJykge1xuICAgICAgICAgICAgb3B0aW9uc1sncGFyYW1zJ10gPSB7XG4gICAgICAgICAgICAgICAgcGhvbmVnYXA6IHRydWVcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cblxuICAgICAgICAvLyBDbGVhciBhbGwgdG9rZW5zIHNlY3VyZWx5XG4gICAgICAgIHRoaXMuc2VjdXJlVG9rZW5TdG9yYWdlLmNsZWFyVG9rZW5zKCkuc3Vic2NyaWJlKCk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5kZWxldGUoJ3Nlc3Npb24nLCBvcHRpb25zKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDbGVhciBhbGwgYXV0aGVudGljYXRpb24gdG9rZW5zXG4gICAgICovXG4gICAgY2xlYXJUb2tlbnMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnNlY3VyZVRva2VuU3RvcmFnZS5jbGVhclRva2VucygpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlbW92ZSBvbmx5IGltcGVyc29uYXRpb24gdG9rZW5zIChub3QgYWxsIHRva2VucylcbiAgICAgKi9cbiAgICByZW1vdmVJbXBlcnNvbmF0aW9uVG9rZW5zKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5zZWN1cmVUb2tlblN0b3JhZ2UucmVtb3ZlSW1wZXJzb25hdGVkVG9rZW5zKCk7XG4gICAgfVxuXG4gICAgZ2V0VG9rZW4kKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5zZWN1cmVUb2tlblN0b3JhZ2UuZ2V0VG9rZW4kKCk7XG4gICAgfVxuXG4gICAgZ2V0TmV3c2xldHRlclN1YnNjcmlwdGlvbih0b2tlbjogc3RyaW5nKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KGAke05FV1NMRVRURVJfQ09ORklSTUFUSU9OX1BBVEh9P3Rva2VuPSR7dG9rZW59YCk7XG4gICAgfVxuXG4gICAgdW5zdWJzY3JpYmVOZXdzbGV0dGVyKHRva2VuOiBzdHJpbmcpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoYCR7TkVXU0xFVFRFUl9VTlNVQlNDUklCRV9QQVRIfT90b2tlbj0ke3Rva2VufWApO1xuICAgIH1cblxuICAgIHZhbGlkYXRlUmVDYXB0Y2hhKHRva2VuOiBzdHJpbmcpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoYCR7Q0FQVENIQV9WQUxJREFUSU9OX1BBVEh9PSR7dG9rZW59YCk7XG4gICAgfVxuXG4gICAgc29jaWFsTG9naW4oZGF0YSkge1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoU09DSUFMX0xPR0lOX1BBVEgsIGRhdGEpO1xuICAgIH1cblxuICAgIHR3aXR0ZXJMb2dpbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoYCR7dGhpcy50d2l0dGVyRW5kcG9pbnR9L2dldF9hdXRob3JpemVfdXJsYCk7XG4gICAgfVxuXG4gICAgdHdpdHRlckF1dGhDYWxsYmFjayhkYXRhKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChgJHt0aGlzLnR3aXR0ZXJFbmRwb2ludH0vYXV0aG9yaXphdGlvbl9jYWxsYmFja2AsIGRhdGEpO1xuICAgIH1cblxuICAgIG1pY3Jvc29mdExvZ2luKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLmdldChgbWljcm9zb2Z0L2dldF9hdXRob3JpemVfdXJsYCk7XG4gICAgfVxuXG4gICAgY29nbml0b0xvZ2luKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLmdldChgY29nbml0by9nZXRfYXV0aG9yaXplX3VybGApO1xuICAgIH1cblxuICAgIG1pY3Jvc29mdEF1dGhDYWxsYmFjayhkYXRhKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChgbWljcm9zb2Z0L2F1dGhvcml6YXRpb25fY2FsbGJhY2tgLCBkYXRhKTtcbiAgICB9XG5cbiAgICBnb29nbGVMb2dpbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoYGdvb2dsZS9nZXRfYXV0aG9yaXplX3VybGApO1xuICAgIH1cblxuICAgIGdvb2dsZUF1dGhDYWxsYmFjayhkYXRhKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChgZ29vZ2xlL2F1dGhvcml6YXRpb25fY2FsbGJhY2tgLCBkYXRhKTtcbiAgICB9XG5cbiAgICBmYWNlYm9va0xvZ2luKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLmdldChgZmFjZWJvb2svZ2V0X2F1dGhvcml6ZV91cmxgKTtcbiAgICB9XG5cbiAgICBmYWNlYm9va0F1dGhDYWxsYmFjayhkYXRhKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChgZmFjZWJvb2svYXV0aG9yaXphdGlvbl9jYWxsYmFja2AsIGRhdGEpO1xuICAgIH1cblxuICAgIGFwcGxlTG9naW4oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KGBhcHBsZS9nZXRfYXV0aG9yaXplX3VybGApO1xuICAgIH1cblxuICAgIGFwcGxlQXV0aENhbGxiYWNrKGRhdGEpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGBhcHBsZS9hdXRob3JpemF0aW9uX2NhbGxiYWNrYCwgZGF0YSk7XG4gICAgfVxuXG4gICAgY29nbml0b0F1dGhDYWxsYmFjayhkYXRhKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChgY29nbml0by9hdXRob3JpemF0aW9uX2NhbGxiYWNrYCwgZGF0YSk7XG4gICAgfVxuXG4gICAgbGlua2VkaW5Mb2dpbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXBwQ29uZmlnU2VydmljZS5hcHBDb25maWckLnBpcGUoXG4gICAgICAgICAgICBzd2l0Y2hNYXAoY29uZmlnID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5odHRwLmdldChcbiAgICAgICAgICAgICAgICAgICAgYC9saW5rZWRpbi9nZXRfYXV0aG9yaXplX3VybD9yZWRpcmVjdF91cmw9JHtjb25maWdbJ2xpbmtzJ10uZnJvbnRlbmRfbGlua30vbGlua2VkaW4tY29uZmlybWF0aW9uYFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGxpbmtlZEluQXV0aENhbGxiYWNrKGRhdGEpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KCdsaW5rZWRpbi9hdXRob3JpemF0aW9uX2NhbGxiYWNrJywgZGF0YSk7XG4gICAgfVxuXG4gICAgcG9zdExvZ2luKHJlc3BvbnNlKSB7XG4gICAgICAgIHRoaXMubG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0kKCdwcm9kdWN0X2lkJykuc3Vic2NyaWJlKCk7XG4gICAgICAgIHRoaXMuc2V0SGVhZGVyS2V5KCk7XG4gICAgICAgIC8vIHRoaXMuc2V0UGxhdGZvcm0oKTsgY2FsbCBpdCBmcm9tIGNsb3Vkb2xpdmUgcmVwby5cblxuICAgICAgICAvLyBTYXZlcyB0aGUgdG9rZW4gaW50byB0aGUgbG9jYWxTdG9yYWdlIGFuZCBmZXRjaGVzIHRoZSB1c2VyIGluZm9ybWF0aW9uXG4gICAgICAgIGNvbnN0IHNlcXVlbmNlJCA9IHRoaXMuc3RvcmVUb2tlbihyZXNwb25zZVtUT0tFTl9LRVldKS5waXBlKFxuICAgICAgICAgICAgc3dpdGNoTWFwKCgpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy51c2VyU2VydmljZS5nZXRVc2VySW5mbygpO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcblxuICAgICAgICBzZXF1ZW5jZSQuc3Vic2NyaWJlKHJlc3AgPT4ge1xuICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ25hbWUnLCByZXNwLmZpcnN0X25hbWUpO1xuICAgICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWydob21lJ10pO1xuICAgICAgICAgICAgaWYgKCQoJy5jYy1kaXNtaXNzJykubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICQoJy5jYy1kaXNtaXNzJylbMF0uY2xpY2soKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGltcGVyc29uYXRlVXNlcihkYXRhOiB7IGVtYWlsOiBzdHJpbmc7IHN1YnNjcmlwdGlvbl9pZDogbnVtYmVyOyBwaG9uZWdhcD86IGJvb2xlYW4gfSkge1xuICAgICAgICBpZiAoIWRhdGEucGhvbmVnYXApIHtcbiAgICAgICAgICAgIGRlbGV0ZSBkYXRhLnBob25lZ2FwO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KCcvc2Vzc2lvbi9pbXBlcnNvbmF0ZV91c2VyJywgZGF0YSkucGlwZShcbiAgICAgICAgICAgIG1hcCh4ID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoeD8uYXV0aF90b2tlbikge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlY3VyZVRva2VuU3RvcmFnZS5zdG9yZUltcGVyc29uYXRlZFRva2VuKHguYXV0aF90b2tlbik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICh4Py5waG9uZWdhcF90b2tlbikge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlY3VyZVRva2VuU3RvcmFnZS5zdG9yZVBob25lZ2FwVG9rZW4oeC5waG9uZWdhcF90b2tlbik7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHg7XG4gICAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHBvc3RTb2NpYWxMb2dpbihyZXNwb25zZSkge1xuICAgICAgICBjb25zdCBhbHJlYWR5U2lnbmVkID0gISFyZXNwb25zZVtUT0tFTl9LRVldO1xuICAgICAgICBjb25zdCBpc05ld1NpZ25VcCA9ICEhcmVzcG9uc2Uuc3Vic2NyaXB0aW9uO1xuXG4gICAgICAgIGlmIChpc05ld1NpZ25VcCkge1xuICAgICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWydjb25maXJtYXRpb24nXSwge1xuICAgICAgICAgICAgICAgIHF1ZXJ5UGFyYW1zOiB7XG4gICAgICAgICAgICAgICAgICAgIHJlZjogcmVzcG9uc2UucmVmZXJlbmNlX251bWJlcixcbiAgICAgICAgICAgICAgICAgICAgc3Vic2NyaXB0aW9uOiByZXNwb25zZS5zdWJzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgICAgIHVzZXJzOiByZXNwb25zZS51c2Vyc1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2UgaWYgKGFscmVhZHlTaWduZWQpIHtcbiAgICAgICAgICAgIHRoaXMuc3RvcmVUb2tlbihyZXNwb25zZVtUT0tFTl9LRVldKS5zdWJzY3JpYmUoe1xuICAgICAgICAgICAgICAgIG5leHQ6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWydob21lJ10pO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgZXJyb3I6IGVycm9yID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50b2FzdHIuc2hvd1RvYXN0KGVycm9yKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHN3YWwuZmlyZSh7XG4gICAgICAgICAgICAgICAgdG9hc3Q6IHRydWUsXG4gICAgICAgICAgICAgICAgcG9zaXRpb246ICdib3R0b20nLFxuICAgICAgICAgICAgICAgIGh0bWw6IGA8c3Ryb25nIGNsYXNzPVwidGV4dC1kYW5nZXJcIj4gJHtyZXNwb25zZS5lcnJvci5tZXNzYWdlfTwvc3Ryb25nPmAsXG4gICAgICAgICAgICAgICAgc2hvd0NhbmNlbEJ1dHRvbjogdHJ1ZSxcbiAgICAgICAgICAgICAgICByZXZlcnNlQnV0dG9uczogdHJ1ZSxcbiAgICAgICAgICAgICAgICBpY29uOiAnZXJyb3InXG4gICAgICAgICAgICB9KS50aGVuKHJlcCA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHJlcC52YWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJ3JlZ2lzdGVyJ10pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmVnaXN0ZXJUb2tlbkxpc3RlbmVyKCkge1xuICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignc3RvcmFnZScsIGRhdGEgPT4ge1xuICAgICAgICAgICAgLy8gbG9ncyBvdXQgdGhlIG90aGVyIHRhYnMgd2hlbiB0aGUgdG9rZW4gaXMgY2hhbmdlZC5cbiAgICAgICAgICAgIC8vIHdlIGFzc3VtZSB0aGF0IHRva2VuIGRvZXNuJ3QgcmVmcmVzaCBhbmQgYmFja2VuZCB1cGRhdGVzIHRoZSBleHBpcnkgdGltZVxuICAgICAgICAgICAgaWYgKGRhdGE/LmtleSA9PT0gVE9LRU5fS0VZICYmIGRhdGE/Lm9sZFZhbHVlICE9PSBkYXRhPy5uZXdWYWx1ZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuZG9jdW1lbnQubG9jYXRpb24ucmVsb2FkKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbn1cbiJdfQ==
@@ -0,0 +1,43 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { Meta, Title } from '@angular/platform-browser';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "@angular/platform-browser";
5
+ export class SeoService {
6
+ constructor(meta, titleService) {
7
+ this.meta = meta;
8
+ this.titleService = titleService;
9
+ }
10
+ /**
11
+ * Set SEO metadata for a page
12
+ * @param title - Page title
13
+ * @param description - Meta description
14
+ * @param keywords - Meta keywords (optional)
15
+ */
16
+ setSEO(title, description, keywords) {
17
+ // Set page title
18
+ this.titleService.setTitle(title);
19
+ // Set meta description
20
+ this.meta.updateTag({ name: 'description', content: description });
21
+ // Set keywords if provided
22
+ if (keywords) {
23
+ this.meta.updateTag({ name: 'keywords', content: keywords });
24
+ }
25
+ // Set Open Graph tags
26
+ this.meta.updateTag({ property: 'og:title', content: title });
27
+ this.meta.updateTag({ property: 'og:description', content: description });
28
+ this.meta.updateTag({ property: 'og:type', content: 'website' });
29
+ // Set Twitter Card tags
30
+ this.meta.updateTag({ name: 'twitter:title', content: title });
31
+ this.meta.updateTag({ name: 'twitter:description', content: description });
32
+ this.meta.updateTag({ name: 'twitter:card', content: 'summary' });
33
+ }
34
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SeoService, deps: [{ token: i1.Meta }, { token: i1.Title }], target: i0.ɵɵFactoryTarget.Injectable }); }
35
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SeoService, providedIn: 'root' }); }
36
+ }
37
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SeoService, decorators: [{
38
+ type: Injectable,
39
+ args: [{
40
+ providedIn: 'root'
41
+ }]
42
+ }], ctorParameters: () => [{ type: i1.Meta }, { type: i1.Title }] });
43
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VvLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2NvbW1vbi1zZXJ2aWNlcy9zcmMvbGliL3Nlby5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQzs7O0FBS3hELE1BQU0sT0FBTyxVQUFVO0lBQ3JCLFlBQ1UsSUFBVSxFQUNWLFlBQW1CO1FBRG5CLFNBQUksR0FBSixJQUFJLENBQU07UUFDVixpQkFBWSxHQUFaLFlBQVksQ0FBTztJQUMxQixDQUFDO0lBRUo7Ozs7O09BS0c7SUFDSCxNQUFNLENBQUMsS0FBYSxFQUFFLFdBQW1CLEVBQUUsUUFBaUI7UUFDMUQsaUJBQWlCO1FBQ2pCLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRWxDLHVCQUF1QjtRQUN2QixJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLElBQUksRUFBRSxhQUFhLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxDQUFDLENBQUM7UUFFbkUsMkJBQTJCO1FBQzNCLElBQUksUUFBUSxFQUFFLENBQUM7WUFDYixJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFDL0QsQ0FBQztRQUVELHNCQUFzQjtRQUN0QixJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7UUFDOUQsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxRQUFRLEVBQUUsZ0JBQWdCLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxDQUFDLENBQUM7UUFDMUUsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDO1FBRWpFLHdCQUF3QjtRQUN4QixJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLElBQUksRUFBRSxlQUFlLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7UUFDL0QsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxJQUFJLEVBQUUscUJBQXFCLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxDQUFDLENBQUM7UUFDM0UsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxJQUFJLEVBQUUsY0FBYyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDO0lBQ3BFLENBQUM7K0dBakNVLFVBQVU7bUhBQVYsVUFBVSxjQUZULE1BQU07OzRGQUVQLFVBQVU7a0JBSHRCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWV0YSwgVGl0bGUgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgU2VvU2VydmljZSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgbWV0YTogTWV0YSxcbiAgICBwcml2YXRlIHRpdGxlU2VydmljZTogVGl0bGVcbiAgKSB7fVxuXG4gIC8qKlxuICAgKiBTZXQgU0VPIG1ldGFkYXRhIGZvciBhIHBhZ2VcbiAgICogQHBhcmFtIHRpdGxlIC0gUGFnZSB0aXRsZVxuICAgKiBAcGFyYW0gZGVzY3JpcHRpb24gLSBNZXRhIGRlc2NyaXB0aW9uXG4gICAqIEBwYXJhbSBrZXl3b3JkcyAtIE1ldGEga2V5d29yZHMgKG9wdGlvbmFsKVxuICAgKi9cbiAgc2V0U0VPKHRpdGxlOiBzdHJpbmcsIGRlc2NyaXB0aW9uOiBzdHJpbmcsIGtleXdvcmRzPzogc3RyaW5nKTogdm9pZCB7XG4gICAgLy8gU2V0IHBhZ2UgdGl0bGVcbiAgICB0aGlzLnRpdGxlU2VydmljZS5zZXRUaXRsZSh0aXRsZSk7XG5cbiAgICAvLyBTZXQgbWV0YSBkZXNjcmlwdGlvblxuICAgIHRoaXMubWV0YS51cGRhdGVUYWcoeyBuYW1lOiAnZGVzY3JpcHRpb24nLCBjb250ZW50OiBkZXNjcmlwdGlvbiB9KTtcblxuICAgIC8vIFNldCBrZXl3b3JkcyBpZiBwcm92aWRlZFxuICAgIGlmIChrZXl3b3Jkcykge1xuICAgICAgdGhpcy5tZXRhLnVwZGF0ZVRhZyh7IG5hbWU6ICdrZXl3b3JkcycsIGNvbnRlbnQ6IGtleXdvcmRzIH0pO1xuICAgIH1cblxuICAgIC8vIFNldCBPcGVuIEdyYXBoIHRhZ3NcbiAgICB0aGlzLm1ldGEudXBkYXRlVGFnKHsgcHJvcGVydHk6ICdvZzp0aXRsZScsIGNvbnRlbnQ6IHRpdGxlIH0pO1xuICAgIHRoaXMubWV0YS51cGRhdGVUYWcoeyBwcm9wZXJ0eTogJ29nOmRlc2NyaXB0aW9uJywgY29udGVudDogZGVzY3JpcHRpb24gfSk7XG4gICAgdGhpcy5tZXRhLnVwZGF0ZVRhZyh7IHByb3BlcnR5OiAnb2c6dHlwZScsIGNvbnRlbnQ6ICd3ZWJzaXRlJyB9KTtcblxuICAgIC8vIFNldCBUd2l0dGVyIENhcmQgdGFnc1xuICAgIHRoaXMubWV0YS51cGRhdGVUYWcoeyBuYW1lOiAndHdpdHRlcjp0aXRsZScsIGNvbnRlbnQ6IHRpdGxlIH0pO1xuICAgIHRoaXMubWV0YS51cGRhdGVUYWcoeyBuYW1lOiAndHdpdHRlcjpkZXNjcmlwdGlvbicsIGNvbnRlbnQ6IGRlc2NyaXB0aW9uIH0pO1xuICAgIHRoaXMubWV0YS51cGRhdGVUYWcoeyBuYW1lOiAndHdpdHRlcjpjYXJkJywgY29udGVudDogJ3N1bW1hcnknIH0pO1xuICB9XG59XG4iXX0=
@@ -18,6 +18,7 @@ import * as i2 from '@ngrx/store';
18
18
  import { StoreModule } from '@ngrx/store';
19
19
  import { INTEGRATIONS_API_PREFIX, MAIN_API_PREFIX, USER_PATH, TOKEN_HEADER_KEY, NEWSLETTER_CONFIRMATION_PATH, NEWSLETTER_UNSUBSCRIBE_PATH, CAPTCHA_VALIDATION_PATH, SOCIAL_LOGIN_PATH, TOKEN_KEY, PERMISSION_NAMES, ADMIN_SUB_MENU_WHITELIST, AB_TEST_ACTIONS, GEO_PATH, PROJECT_PATH, PRODUCT_PATH, CONTACT_US_PATH, INCIDENTS_PATH, INCIDENTS_PATH_ADMIN, NEWSLETTERS_PATH, NEWSLETTER_SUBSCRIPTION_PATH, ADMIN_FAQS_PATH, FAQS_PATH, ORGANIZATIONS_PATH, GLOBAL_SUBSCRIPTION_CONFIGS_PATH, GLOBAL_CONFIGS_PATH, USER_LOGIN_NOTIFICATION, FEEDBACK_QUESTIONS_PATH, USER_FEEDBACKS_PATH, CUSTOMER_SUPPORT_PATH, ADMIN_TAG_PATH, ADMIN_TAG_CATEGORIES_PATH, ADMIN_PATH, QUALIFICATIONS_PATH, SOCKET_TYPE, BRAIN_API_PREFIX } from '@posiwise/common-utilities';
20
20
  import swal from 'sweetalert2';
21
+ import * as i1$4 from '@angular/platform-browser';
21
22
  import cloneDeep from 'lodash/cloneDeep';
22
23
  import pickBy from 'lodash/pickBy';
23
24
  import * as i2$1 from 'ngx-cookie';
@@ -965,6 +966,12 @@ class AuthService {
965
966
  clearTokens() {
966
967
  return this.secureTokenStorage.clearTokens();
967
968
  }
969
+ /**
970
+ * Remove only impersonation tokens (not all tokens)
971
+ */
972
+ removeImpersonationTokens() {
973
+ return this.secureTokenStorage.removeImpersonatedTokens();
974
+ }
968
975
  getToken$() {
969
976
  return this.secureTokenStorage.getToken$();
970
977
  }
@@ -1144,6 +1151,45 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImpo
1144
1151
  }]
1145
1152
  }] });
1146
1153
 
1154
+ class SeoService {
1155
+ constructor(meta, titleService) {
1156
+ this.meta = meta;
1157
+ this.titleService = titleService;
1158
+ }
1159
+ /**
1160
+ * Set SEO metadata for a page
1161
+ * @param title - Page title
1162
+ * @param description - Meta description
1163
+ * @param keywords - Meta keywords (optional)
1164
+ */
1165
+ setSEO(title, description, keywords) {
1166
+ // Set page title
1167
+ this.titleService.setTitle(title);
1168
+ // Set meta description
1169
+ this.meta.updateTag({ name: 'description', content: description });
1170
+ // Set keywords if provided
1171
+ if (keywords) {
1172
+ this.meta.updateTag({ name: 'keywords', content: keywords });
1173
+ }
1174
+ // Set Open Graph tags
1175
+ this.meta.updateTag({ property: 'og:title', content: title });
1176
+ this.meta.updateTag({ property: 'og:description', content: description });
1177
+ this.meta.updateTag({ property: 'og:type', content: 'website' });
1178
+ // Set Twitter Card tags
1179
+ this.meta.updateTag({ name: 'twitter:title', content: title });
1180
+ this.meta.updateTag({ name: 'twitter:description', content: description });
1181
+ this.meta.updateTag({ name: 'twitter:card', content: 'summary' });
1182
+ }
1183
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SeoService, deps: [{ token: i1$4.Meta }, { token: i1$4.Title }], target: i0.ɵɵFactoryTarget.Injectable }); }
1184
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SeoService, providedIn: 'root' }); }
1185
+ }
1186
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SeoService, decorators: [{
1187
+ type: Injectable,
1188
+ args: [{
1189
+ providedIn: 'root'
1190
+ }]
1191
+ }], ctorParameters: () => [{ type: i1$4.Meta }, { type: i1$4.Title }] });
1192
+
1147
1193
  class PermissionService {
1148
1194
  constructor(api) {
1149
1195
  this.api = api;
@@ -3180,5 +3226,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImpo
3180
3226
  * Generated bundle index. Do not edit.
3181
3227
  */
3182
3228
 
3183
- export { AbTestService, AhoyService, AuthService, BaseHttpService, BrainApiHttpService, BrainApiService, CommonService, CommonServicesModule, CustomPreloadingStrategy, CustomToastService, DashboardService, DataService, FormHelperService, GeoService, GoogleAnalyticsService, GroupService, HopscotchService, IntegrationsApiHttpService, LinkService, LocalStorage, LogoCacheService, MailBoxService, MainApiHttpService, NgbDateCustomParserFormatter, NotificationService, NumberPickerService, PermissionService, PrimeNgHelper, ProductService, ProfileService, QualificationService, ScriptLoaderService, SecureTokenStorageService, SentryErrorHandler, SubscriptionService, TagService, TipsService, UserEffects, UserService, ValidationService, WebsocketService, WindowService };
3229
+ export { AbTestService, AhoyService, AuthService, BaseHttpService, BrainApiHttpService, BrainApiService, CommonService, CommonServicesModule, CustomPreloadingStrategy, CustomToastService, DashboardService, DataService, FormHelperService, GeoService, GoogleAnalyticsService, GroupService, HopscotchService, IntegrationsApiHttpService, LinkService, LocalStorage, LogoCacheService, MailBoxService, MainApiHttpService, NgbDateCustomParserFormatter, NotificationService, NumberPickerService, PermissionService, PrimeNgHelper, ProductService, ProfileService, QualificationService, ScriptLoaderService, SecureTokenStorageService, SentryErrorHandler, SeoService, SubscriptionService, TagService, TipsService, UserEffects, UserService, ValidationService, WebsocketService, WindowService };
3184
3230
  //# sourceMappingURL=posiwise-common-services.mjs.map