@c8y/ngx-components 1018.0.246 → 1018.0.248

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.
@@ -4,23 +4,23 @@ import { SsoConfiguration } from '../sso-configuration.model';
4
4
  import * as i0 from "@angular/core";
5
5
  export declare class AadConfigurationMapper implements SsoConfigurationMapper<AadConfiguration> {
6
6
  private defaults;
7
- private constants;
8
7
  private urlPattern;
9
8
  mapFrom(templateModel: AadConfiguration): SsoConfiguration;
10
9
  mapTo(ssoConfiguration: SsoConfiguration): AadConfiguration;
11
- setupDefaults(ssoConfiguration: any): void;
12
- setupConstants(ssoConfiguration: any): void;
13
- setupAadAddressAndTenant(ssoConfiguration: any): void;
14
- getAadAddressFromUrl(url: any): any;
15
- getTenantFromUrl(url: any): any;
16
- setupClientSecret(ssoConfiguration: any): void;
17
- getClientSecretFromBody(body: any): string;
18
- setupUserIdConfig(ssoConfiguration: any): void;
19
- setupSignatureVerificationConfig(ssoConfiguration: any): void;
20
- getRedirectAfterLogout(ssoConfiguration: any): boolean;
21
- getRedirectAfterLogoutUrl(ssoConfiguration: any): string;
22
- getFirstDefined(values: any): any;
23
- getQueryString(params: any): any;
10
+ private setupDefaults;
11
+ private getAadAddress;
12
+ private getTenant;
13
+ private getUrlsFromRequests;
14
+ private getAadAddressFromUrl;
15
+ private getTenantFromUrl;
16
+ private getClientSecret;
17
+ private getClientSecretFromBody;
18
+ private setupUserIdConfig;
19
+ private setupSignatureVerificationConfig;
20
+ private getRedirectAfterLogout;
21
+ private getRedirectAfterLogoutUrl;
22
+ private getFirstDefined;
23
+ private getQueryString;
24
24
  static ɵfac: i0.ɵɵFactoryDeclaration<AadConfigurationMapper, never>;
25
25
  static ɵprov: i0.ɵɵInjectableDeclaration<AadConfigurationMapper>;
26
26
  }
@@ -1,5 +1,5 @@
1
1
  import { TemplateType } from '../sso-configuration.model';
2
- import { assign, defaults, set, at, map, defaultsDeep, has, head, reject, isUndefined } from 'lodash-es';
2
+ import { defaults, at, map, defaultsDeep, has, head, reject, isUndefined } from 'lodash-es';
3
3
  import { GrantType, TenantLoginOptionType, UserManagementSource } from '@c8y/client';
4
4
  import { SignatureConfiguration } from '../template-parts/signature-configuration.model';
5
5
  import { Injectable } from '@angular/core';
@@ -10,12 +10,7 @@ export class AadConfigurationMapper {
10
10
  this.defaults = {
11
11
  visibleOnLoginPage: true
12
12
  };
13
- this.constants = {
14
- providerName: 'Azure AD',
15
- type: 'oauth2',
16
- grantType: 'AUTHORIZATION_CODE'
17
- };
18
- this.urlPattern = /^(.+)\/((.+?)\/oauth2\/authorize)$/;
13
+ this.urlPattern = /^(.+)\/((.+?)\/oauth2\/(authorize|token))$/;
19
14
  }
20
15
  mapFrom(templateModel) {
21
16
  const baseUrl = `${templateModel.aadAddress}/${templateModel.tenant}/oauth2`;
@@ -103,17 +98,14 @@ export class AadConfigurationMapper {
103
98
  mapTo(ssoConfiguration) {
104
99
  const applicationsId = at(ssoConfiguration, ['audience', 'clientId']);
105
100
  this.setupDefaults(ssoConfiguration);
106
- this.setupConstants(ssoConfiguration);
107
- this.setupAadAddressAndTenant(ssoConfiguration);
108
- this.setupClientSecret(ssoConfiguration);
109
101
  this.setupUserIdConfig(ssoConfiguration);
110
102
  this.setupSignatureVerificationConfig(ssoConfiguration);
111
103
  const aadConfiguration = {
112
- aadAddress: this.getAadAddressFromUrl(ssoConfiguration.authorizationRequest.url),
113
- tenant: this.getTenantFromUrl(ssoConfiguration.authorizationRequest.url),
104
+ aadAddress: this.getAadAddress(ssoConfiguration),
105
+ tenant: this.getTenant(ssoConfiguration),
114
106
  applicationId: this.getFirstDefined(applicationsId),
115
107
  redirectToPlatform: ssoConfiguration.redirectToPlatform,
116
- clientSecret: ssoConfiguration.authorizationRequest.requestParams.client_id,
108
+ clientSecret: this.getClientSecret(ssoConfiguration),
117
109
  issuer: ssoConfiguration.issuer,
118
110
  buttonName: ssoConfiguration.buttonName,
119
111
  visibleOnLoginPage: ssoConfiguration.visibleOnLoginPage,
@@ -133,19 +125,22 @@ export class AadConfigurationMapper {
133
125
  setupDefaults(ssoConfiguration) {
134
126
  defaults(ssoConfiguration, this.defaults);
135
127
  }
136
- setupConstants(ssoConfiguration) {
137
- assign(ssoConfiguration, this.constants);
128
+ getAadAddress(ssoConfiguration) {
129
+ const urls = this.getUrlsFromRequests(ssoConfiguration);
130
+ const aadAddresses = map(urls, url => this.getAadAddressFromUrl(url));
131
+ return this.getFirstDefined(aadAddresses);
138
132
  }
139
- setupAadAddressAndTenant(ssoConfiguration) {
140
- const urls = at(ssoConfiguration, [
133
+ getTenant(ssoConfiguration) {
134
+ const urls = this.getUrlsFromRequests(ssoConfiguration);
135
+ const tenants = map(urls, url => this.getTenantFromUrl(url));
136
+ return this.getFirstDefined(tenants);
137
+ }
138
+ getUrlsFromRequests(ssoConfiguration) {
139
+ return at(ssoConfiguration, [
141
140
  'authorizationRequest.url',
142
141
  'tokenRequest.url',
143
142
  'refreshRequest.url'
144
143
  ]);
145
- const aadAddresses = map(urls, url => this.getAadAddressFromUrl(url));
146
- set(ssoConfiguration, 'aadAddress', this.getFirstDefined(aadAddresses));
147
- const tenants = map(urls, url => this.getTenantFromUrl(url));
148
- set(ssoConfiguration, 'tenant', this.getFirstDefined(tenants));
149
144
  }
150
145
  getAadAddressFromUrl(url) {
151
146
  const [, aadAddress] = (url || '').match(this.urlPattern) || [];
@@ -155,18 +150,17 @@ export class AadConfigurationMapper {
155
150
  const [, , , tenant] = (url || '').match(this.urlPattern) || [];
156
151
  return tenant;
157
152
  }
158
- setupClientSecret(ssoConfiguration) {
153
+ getClientSecret(ssoConfiguration) {
159
154
  const bodies = at(ssoConfiguration, ['tokenRequest.body', 'refreshRequest.body']);
160
155
  const clientSecrets = map(bodies, body => this.getClientSecretFromBody(body));
161
- set(ssoConfiguration, 'clientSecret', this.getFirstDefined(clientSecrets));
156
+ return this.getFirstDefined(clientSecrets);
162
157
  }
163
158
  getClientSecretFromBody(body) {
164
159
  const [, clientSecret] = (body || '').match(/client_secret=([^&]+)/) || [];
165
- return decodeURIComponent(clientSecret);
160
+ return clientSecret ? decodeURIComponent(clientSecret) : undefined;
166
161
  }
167
162
  setupUserIdConfig(ssoConfiguration) {
168
163
  defaultsDeep(ssoConfiguration, { userIdConfig: { jwtField: 'upn' } });
169
- set(ssoConfiguration, 'userIdConfig.useConstantValue', false);
170
164
  }
171
165
  setupSignatureVerificationConfig(ssoConfiguration) {
172
166
  defaultsDeep(ssoConfiguration, { signatureVerificationConfig: { aad: {} } });
@@ -196,4 +190,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
196
190
  providedIn: 'root'
197
191
  }]
198
192
  }] });
199
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWFkLWNvbmZpZ3VyYXRpb24tbWFwcGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vYXV0aC1jb25maWd1cmF0aW9uL3Nzby1jb25maWd1cmF0aW9uL3RlbXBsYXRlcy9hYWQtY29uZmlndXJhdGlvbi1tYXBwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFvQixZQUFZLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM1RSxPQUFPLEVBQ0wsTUFBTSxFQUNOLFFBQVEsRUFDUixHQUFHLEVBQ0gsRUFBRSxFQUNGLEdBQUcsRUFDSCxZQUFZLEVBQ1osR0FBRyxFQUNILElBQUksRUFDSixNQUFNLEVBQ04sV0FBVyxFQUNaLE1BQU0sV0FBVyxDQUFDO0FBQ25CLE9BQU8sRUFBRSxTQUFTLEVBQUUscUJBQXFCLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDckYsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0saURBQWlELENBQUM7QUFDekYsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sK0NBQStDLENBQUM7O0FBSzlFLE1BQU0sT0FBTyxzQkFBc0I7SUFIbkM7UUFJVSxhQUFRLEdBQUc7WUFDakIsa0JBQWtCLEVBQUUsSUFBSTtTQUN6QixDQUFDO1FBRU0sY0FBUyxHQUFHO1lBQ2xCLFlBQVksRUFBRSxVQUFVO1lBQ3hCLElBQUksRUFBRSxRQUFRO1lBQ2QsU0FBUyxFQUFFLG9CQUFvQjtTQUNoQyxDQUFDO1FBRU0sZUFBVSxHQUFHLG9DQUFvQyxDQUFDO0tBa00zRDtJQWhNQyxPQUFPLENBQUMsYUFBK0I7UUFDckMsTUFBTSxPQUFPLEdBQUcsR0FBRyxhQUFhLENBQUMsVUFBVSxJQUFJLGFBQWEsQ0FBQyxNQUFNLFNBQVMsQ0FBQztRQUU3RSxNQUFNLGdCQUFnQixHQUFxQjtZQUN6QyxRQUFRLEVBQUUsYUFB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RyxDQUFDLENBQUM7SUFDbEUsQ0FBQzs7bUhBNU1VLHNCQUFzQjt1SEFBdEIsc0JBQXNCLGNBRnJCLE1BQU07MkZBRVAsc0JBQXNCO2tCQUhsQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNzb0NvbmZpZ3VyYXRpb25NYXBwZXIgfSBmcm9tICcuL3Nzby1jb25maWd1cmF0aW9uLm1hcHBlcic7XG5pbXBvcnQgeyBBYWRDb25maWd1cmF0aW9uIH0gZnJvbSAnLi9hYWQubW9kZWwnO1xuaW1wb3J0IHsgU3NvQ29uZmlndXJhdGlvbiwgVGVtcGxhdGVUeXBlIH0gZnJvbSAnLi4vc3NvLWNvbmZpZ3VyYXRpb24ubW9kZWwnO1xuaW1wb3J0IHtcbiAgYXNzaWduLFxuICBkZWZhdWx0cyxcbiAgc2V0LFxuICBhdCxcbiAgbWFwLFxuICBkZWZhdWx0c0RlZXAsXG4gIGhhcyxcbiAgaGVhZCxcbiAgcmVqZWN0LFxuICBpc1VuZGVmaW5lZFxufSBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHsgR3JhbnRUeXBlLCBUZW5hbnRMb2dpbk9wdGlvblR5cGUsIFVzZXJNYW5hZ2VtZW50U291cmNlIH0gZnJvbSAnQGM4eS9jbGllbnQnO1xuaW1wb3J0IHsgU2lnbmF0dXJlQ29uZmlndXJhdGlvbiB9IGZyb20gJy4uL3RlbXBsYXRlLXBhcnRzL3NpZ25hdHVyZS1jb25maWd1cmF0aW9uLm1vZGVsJztcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEV4dGVybmFsVG9rZW4gfSBmcm9tICcuLi90ZW1wbGF0ZS1wYXJ0cy9leHRlcm5hbC10b2tlbi1jb25maWcubW9kZWwnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBBYWRDb25maWd1cmF0aW9uTWFwcGVyIGltcGxlbWVudHMgU3NvQ29uZmlndXJhdGlvbk1hcHBlcjxBYWRDb25maWd1cmF0aW9uPiB7XG4gIHByaXZhdGUgZGVmYXVsdHMgPSB7XG4gICAgdmlzaWJsZU9uTG9naW5QYWdlOiB0cnVlXG4gIH07XG5cbiAgcHJpdmF0ZSBjb25zdGFudHMgPSB7XG4gICAgcHJvdmlkZXJOYW1lOiAnQXp1cmUgQUQnLFxuICAgIHR5cGU6ICdvYXV0aDInLFxuICAgIGdyYW50VHlwZTogJ0FVVEhPUklaQVRJT05fQ09ERSdcbiAgfTtcblxuICBwcml2YXRlIHVybFBhdHRlcm4gPSAvXiguKylcXC8oKC4rPylcXC9vYXV0aDJcXC9hdXRob3JpemUpJC87XG5cbiAgbWFwRnJvbSh0ZW1wbGF0ZU1vZGVsOiBBYWRDb25maWd1cmF0aW9uKTogU3NvQ29uZmlndXJhdGlvbiB7XG4gICAgY29uc3QgYmFzZVVybCA9IGAke3RlbXBsYXRlTW9kZWwuYWFkQWRkcmVzc30vJHt0ZW1wbGF0ZU1vZGVsLnRlbmFudH0vb2F1dGgyYDtcblxuICAgIGNvbnN0IHNzb0NvbmZpZ3VyYXRpb246IFNzb0NvbmZpZ3VyYXRpb24gPSB7XG4gICAgICBhdWRpZW5jZTogdGVtcGxhdGVNb2RlbC5hcHBsaWNhdGlvbklkLFxuICAgICAgY2xpZW50SWQ6IHRlbXBsYXRlTW9kZWwuYXBwbGljYXRpb25JZCxcbiAgICAgIGxvZ291dFJlcXVlc3Q6IHRlbXBsYXRlTW9kZWwucmVkaXJlY3RBZnRlckxvZ291dFxuICAgICAgICA/IHtcbiAgICAgICAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgICAgICAgdXJsOiBgJHtiYXNlVXJsfS9sb2dvdXRgLFxuICAgICAgICAgICAgcmVxdWVzdFBhcmFtczoge1xuICAgICAgICAgICAgICBwb3N0X2xvZ291dF9yZWRpcmVjdF91cmk6IHRlbXBsYXRlTW9kZWwucmVkaXJlY3RBZnRlckxvZ291dFVybFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGhlYWRlcnM6IHt9LFxuICAgICAgICAgICAgYm9keTogJycsXG4gICAgICAgICAgICBvcGVyYXRpb246ICdSRURJUkVDVCdcbiAgICAgICAgICB9XG4gICAgICAgIDoge1xuICAgICAgICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICAgICAgICBoZWFkZXJzOiB7fSxcbiAgICAgICAgICAgIG9wZXJhdGlvbjogJ1JFRElSRUNUJyxcbiAgICAgICAgICAgIHJlcXVlc3RQYXJhbXM6IHt9XG4gICAgICAgICAgfSxcbiAgICAgIGF1dGhvcml6YXRpb25SZXF1ZXN0OiB7XG4gICAgICAgIG1ldGhvZDogJ0dFVCcsXG4gICAgICAgIHVybDogYCR7YmFzZVVybH0vYXV0aG9yaXplYCxcbiAgICAgICAgcmVxdWVzdFBhcmFtczoge1xuICAgICAgICAgIHJlZGlyZWN0X3VyaTogJyR7cmVkaXJlY3RVcml9JyxcbiAgICAgICAgICBjbGllbnRfaWQ6ICcke2NsaWVudElkfScsXG4gICAgICAgICAgcmVzcG9uc2VfdHlwZTogJ2NvZGUnXG4gICAgICAgIH0sXG4gICAgICAgIGhlYWRlcnM6IHt9LFxuICAgICAgICBib2R5OiAnJyxcbiAgICAgICAgb3BlcmF0aW9uOiAnUkVESVJFQ1QnXG4gICAgICB9LFxuICAgICAgdG9rZW5SZXF1ZXN0OiB7XG4gICAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgICB1cmw6IGAke2Jhc2VVcmx9L3Rva2VuYCxcbiAgICAgICAgcmVxdWVzdFBhcmFtczoge30sXG4gICAgICAgIGhlYWRlcnM6IHt9LFxuICAgICAgICBib2R5OiB0aGlzLmdldFF1ZXJ5U3RyaW5nKHtcbiAgICAgICAgICBncmFudF90eXBlOiAnYXV0aG9yaXphdGlvbl9jb2RlJyxcbiAgICAgICAgICBjb2RlOiAnJHtjb2RlfScsXG4gICAgICAgICAgcmVkaXJlY3RfdXJpOiAnJHtyZWRpcmVjdFVyaX0nLFxuICAgICAgICAgIHJlc291cmNlOiAnJHtjbGllbnRJZH0nLFxuICAgICAgICAgIGNsaWVudF9pZDogJyR7Y2xpZW50SWR9JyxcbiAgICAgICAgICBjbGllbnRfc2VjcmV0OiBlbmNvZGVVUklDb21wb25lbnQodGVtcGxhdGVNb2RlbC5jbGllbnRTZWNyZXQpXG4gICAgICAgIH0pLFxuICAgICAgICBvcGVyYXRpb246ICdFWEVDVVRFJ1xuICAgICAgfSxcbiAgICAgIHJlZnJlc2hSZXF1ZXN0OiB7XG4gICAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgICB1cmw6IGAke2Jhc2VVcmx9L3Rva2VuYCxcbiAgICAgICAgcmVxdWVzdFBhcmFtczoge30sXG4gICAgICAgIGhlYWRlcnM6IHt9LFxuICAgICAgICBib2R5OiB0aGlzLmdldFF1ZXJ5U3RyaW5nKHtcbiAgICAgICAgICBncmFudF90eXBlOiAncmVmcmVzaF90b2tlbicsXG4gICAgICAgICAgcmVmcmVzaF90b2tlbjogJyR7cmVmcmVzaFRva2VufScsXG4gICAgICAgICAgcmVzb3VyY2U6ICcke2NsaWVudElkfScsXG4gICAgICAgICAgY2xpZW50X2lkOiAnJHtjbGllbnRJZH0nLFxuICAgICAgICAgIGNsaWVudF9zZWNyZXQ6IGVuY29kZVVSSUNvbXBvbmVudCh0ZW1wbGF0ZU1vZGVsLmNsaWVudFNlY3JldClcbiAgICAgICAgfSksXG4gICAgICAgIG9wZXJhdGlvbjogJ0VYRUNVVEUnXG4gICAgICB9LFxuICAgICAgYnV0dG9uTmFtZTogdGVtcGxhdGVNb2RlbC5idXR0b25OYW1lLFxuICAgICAgcHJvdmlkZXJOYW1lOiAnQXp1cmUgQUQnLFxuICAgICAgaXNzdWVyOiB0ZW1wbGF0ZU1vZGVsLmlzc3VlcixcbiAgICAgIG9uTmV3VXNlcjogdGVtcGxhdGVNb2RlbC5vbk5ld1VzZXIsXG4gICAgICBhY2Nlc3NUb2tlblRvVXNlckRhdGFNYXBwaW5nczogdGVtcGxhdGVNb2RlbC5hY2Nlc3NUb2tlblRvVXNlckRhdGFNYXBwaW5ncyxcbiAgICAgIHJlZGlyZWN0VG9QbGF0Zm9ybTogdGVtcGxhdGVNb2RlbC5yZWRpcmVjdFRvUGxhdGZvcm0sXG4gICAgICB0ZW1wbGF0ZTogVGVtcGxhdGVUeXBlLkFaVVJFLFxuICAgICAgdXNlcklkQ29uZmlnOiB7XG4gICAgICAgIHVzZUNvbnN0YW50VmFsdWU6IGZhbHNlLFxuICAgICAgICBqd3RGaWVsZDogdGVtcGxhdGVNb2RlbC51c2VySWRDb25maWcuand0RmllbGRcbiAgICAgIH0sXG4gICAgICB2aXNpYmxlT25Mb2dpblBhZ2U6IHRlbXBsYXRlTW9kZWwudmlzaWJsZU9uTG9naW5QYWdlLFxuICAgICAgc2lnbmF0dXJlVmVyaWZpY2F0aW9uQ29uZmlnOlxuICAgICAgICB0ZW1wbGF0ZU1vZGVsLnNpZ25hdHVyZVZlcmlmaWNhdGlvbkNvbmZpZy50b1NpZ25hdHVyZVZlcmlmaWNhdGlvbkNvbmZpZygpLFxuICAgICAgdXNlck1hbmFnZW1lbnRTb3VyY2U6IFVzZXJNYW5hZ2VtZW50U291cmNlLlJFTU9URSxcbiAgICAgIHR5cGU6IFRlbmFudExvZ2luT3B0aW9uVHlwZS5PQVVUSDIsXG4gICAgICBncmFudFR5cGU6IEdyYW50VHlwZS5BVVRIT1JJWkFUSU9OX0NPREUsXG4gICAgICBleHRlcm5hbFRva2VuQ29uZmlnOiB0ZW1wbGF0ZU1vZGVsLmV4dGVybmFsVG9rZW5Db25maWcudG9FeHRlcm5hbFRva2VuQ29uZmlnKClcbiAgICB9O1xuICAgIHJldHVybiBzc29Db25maWd1cmF0aW9uO1xuICB9XG5cbiAgbWFwVG8oc3NvQ29uZmlndXJhdGlvbjogU3NvQ29uZmlndXJhdGlvbik6IEFhZENvbmZpZ3VyYXRpb24ge1xuICAgIGNvbnN0IGFwcGxpY2F0aW9uc0lkID0gYXQoc3NvQ29uZmlndXJhdGlvbiwgWydhdWRpZW5jZScsICdjbGllbnRJZCddKTtcblxuICAgIHRoaXMuc2V0dXBEZWZhdWx0cyhzc29Db25maWd1cmF0aW9uKTtcbiAgICB0aGlzLnNldHVwQ29uc3RhbnRzKHNzb0NvbmZpZ3VyYXRpb24pO1xuICAgIHRoaXMuc2V0dXBBYWRBZGRyZXNzQW5kVGVuYW50KHNzb0NvbmZpZ3VyYXRpb24pO1xuICAgIHRoaXMuc2V0dXBDbGllbnRTZWNyZXQoc3NvQ29uZmlndXJhdGlvbik7XG4gICAgdGhpcy5zZXR1cFVzZXJJZENvbmZpZyhzc29Db25maWd1cmF0aW9uKTtcbiAgICB0aGlzLnNldHVwU2lnbmF0dXJlVmVyaWZpY2F0aW9uQ29uZmlnKHNzb0NvbmZpZ3VyYXRpb24pO1xuXG4gICAgY29uc3QgYWFkQ29uZmlndXJhdGlvbjogQWFkQ29uZmlndXJhdGlvbiA9IHtcbiAgICAgIGFhZEFkZHJlc3M6IHRoaXMuZ2V0QWFkQWRkcmVzc0Zyb21Vcmwoc3NvQ29uZmlndXJhdGlvbi5hdXRob3JpemF0aW9uUmVxdWVzdC51cmwpLFxuICAgICAgdGVuYW50OiB0aGlzLmdldFRlbmFudEZyb21Vcmwoc3NvQ29uZmlndXJhdGlvbi5hdXRob3JpemF0aW9uUmVxdWVzdC51cmwpLFxuICAgICAgYXBwbGljYXRpb25JZDogdGhpcy5nZXRGaXJzdERlZmluZWQoYXBwbGljYXRpb25zSWQpLFxuICAgICAgcmVkaXJlY3RUb1BsYXRmb3JtOiBzc29Db25maWd1cmF0aW9uLnJlZGlyZWN0VG9QbGF0Zm9ybSxcbiAgICAgIGNsaWVudFNlY3JldDogc3NvQ29uZmlndXJhdGlvbi5hdXRob3JpemF0aW9uUmVxdWVzdC5yZXF1ZXN0UGFyYW1zLmNsaWVudF9pZCxcbiAgICAgIGlzc3Vlcjogc3NvQ29uZmlndXJhdGlvbi5pc3N1ZXIsXG4gICAgICBidXR0b25OYW1lOiBzc29Db25maWd1cmF0aW9uLmJ1dHRvbk5hbWUsXG4gICAgICB2aXNpYmxlT25Mb2dpblBhZ2U6IHNzb0NvbmZpZ3VyYXRpb24udmlzaWJsZU9uTG9naW5QYWdlLFxuICAgICAgcmVkaXJlY3RBZnRlckxvZ291dDogdGhpcy5nZXRSZWRpcmVjdEFmdGVyTG9nb3V0KHNzb0NvbmZpZ3VyYXRpb24pLFxuICAgICAgcmVkaXJlY3RBZnRlckxvZ291dFVybDogdGhpcy5nZXRSZWRpcmVjdEFmdGVyTG9nb3V0VXJsKHNzb0NvbmZpZ3VyYXRpb24pLFxuICAgICAgYWNjZXNzVG9rZW5Ub1VzZXJEYXRhTWFwcGluZ3M6IHNzb0NvbmZpZ3VyYXRpb24uYWNjZXNzVG9rZW5Ub1VzZXJEYXRhTWFwcGluZ3MsXG4gICAgICB1c2VySWRDb25maWc6IHtcbiAgICAgICAgand0RmllbGQ6IHNzb0NvbmZpZ3VyYXRpb24udXNlcklkQ29uZmlnLmp3dEZpZWxkXG4gICAgICB9LFxuICAgICAgcHVibGljS2V5RGlzY292ZXJ5VXJsOiBzc29Db25maWd1cmF0aW9uLnNpZ25hdHVyZVZlcmlmaWNhdGlvbkNvbmZpZy5hYWQucHVibGljS2V5RGlzY292ZXJ5VXJsLFxuICAgICAgc2lnbmF0dXJlVmVyaWZpY2F0aW9uQ29uZmlnOiBuZXcgU2lnbmF0dXJlQ29uZmlndXJhdGlvbihcbiAgICAgICAgc3NvQ29uZmlndXJhdGlvbi5zaWduYXR1cmVWZXJpZmljYXRpb25Db25maWdcbiAgICAgICksXG4gICAgICBvbk5ld1VzZXI6IHNzb0NvbmZpZ3VyYXRpb24ub25OZXdVc2VyLFxuICAgICAgZXh0ZXJuYWxUb2tlbkNvbmZpZzogbmV3IEV4dGVybmFsVG9rZW4oc3NvQ29uZmlndXJhdGlvbi5leHRlcm5hbFRva2VuQ29uZmlnKVxuICAgIH07XG4gICAgcmV0dXJuIGFhZENvbmZpZ3VyYXRpb247XG4gIH1cblxuICBzZXR1cERlZmF1bHRzKHNzb0NvbmZpZ3VyYXRpb24pIHtcbiAgICBkZWZhdWx0cyhzc29Db25maWd1cmF0aW9uLCB0aGlzLmRlZmF1bHRzKTtcbiAgfVxuXG4gIHNldHVwQ29uc3RhbnRzKHNzb0NvbmZpZ3VyYXRpb24pIHtcbiAgICBhc3NpZ24oc3NvQ29uZmlndXJhdGlvbiwgdGhpcy5jb25zdGFudHMpO1xuICB9XG5cbiAgc2V0dXBBYWRBZGRyZXNzQW5kVGVuYW50KHNzb0NvbmZpZ3VyYXRpb24pIHtcbiAgICBjb25zdCB1cmxzID0gYXQoc3NvQ29uZmlndXJhdGlvbiwgW1xuICAgICAgJ2F1dGhvcml6YXRpb25SZXF1ZXN0LnVybCcsXG4gICAgICAndG9rZW5SZXF1ZXN0LnVybCcsXG4gICAgICAncmVmcmVzaFJlcXVlc3QudXJsJ1xuICAgIF0pO1xuXG4gICAgY29uc3QgYWFkQWRkcmVzc2VzID0gbWFwKHVybHMsIHVybCA9PiB0aGlzLmdldEFhZEFkZHJlc3NGcm9tVXJsKHVybCkpO1xuICAgIHNldChzc29Db25maWd1cmF0aW9uLCAnYWFkQWRkcmVzcycsIHRoaXMuZ2V0Rmlyc3REZWZpbmVkKGFhZEFkZHJlc3NlcykpO1xuXG4gICAgY29uc3QgdGVuYW50cyA9IG1hcCh1cmxzLCB1cmwgPT4gdGhpcy5nZXRUZW5hbnRGcm9tVXJsKHVybCkpO1xuICAgIHNldChzc29Db25maWd1cmF0aW9uLCAndGVuYW50JywgdGhpcy5nZXRGaXJzdERlZmluZWQodGVuYW50cykpO1xuICB9XG5cbiAgZ2V0QWFkQWRkcmVzc0Zyb21VcmwodXJsKSB7XG4gICAgY29uc3QgWywgYWFkQWRkcmVzc10gPSAodXJsIHx8ICcnKS5tYXRjaCh0aGlzLnVybFBhdHRlcm4pIHx8IFtdO1xuICAgIHJldHVybiBhYWRBZGRyZXNzO1xuICB9XG5cbiAgZ2V0VGVuYW50RnJvbVVybCh1cmwpIHtcbiAgICBjb25zdCBbLCAsICwgdGVuYW50XSA9ICh1cmwgfHwgJycpLm1hdGNoKHRoaXMudXJsUGF0dGVybikgfHwgW107XG4gICAgcmV0dXJuIHRlbmFudDtcbiAgfVxuXG4gIHNldHVwQ2xpZW50U2VjcmV0KHNzb0NvbmZpZ3VyYXRpb24pIHtcbiAgICBjb25zdCBib2RpZXMgPSBhdChzc29Db25maWd1cmF0aW9uLCBbJ3Rva2VuUmVxdWVzdC5ib2R5JywgJ3JlZnJlc2hSZXF1ZXN0LmJvZHknXSk7XG4gICAgY29uc3QgY2xpZW50U2VjcmV0cyA9IG1hcChib2RpZXMsIGJvZHkgPT4gdGhpcy5nZXRDbGllbnRTZWNyZXRGcm9tQm9keShib2R5KSk7XG4gICAgc2V0KHNzb0NvbmZpZ3VyYXRpb24sICdjbGllbnRTZWNyZXQnLCB0aGlzLmdldEZpcnN0RGVmaW5lZChjbGllbnRTZWNyZXRzKSk7XG4gIH1cblxuICBnZXRDbGllbnRTZWNyZXRGcm9tQm9keShib2R5KSB7XG4gICAgY29uc3QgWywgY2xpZW50U2VjcmV0XSA9IChib2R5IHx8ICcnKS5tYXRjaCgvY2xpZW50X3NlY3JldD0oW14mXSspLykgfHwgW107XG4gICAgcmV0dXJuIGRlY29kZVVSSUNvbXBvbmVudChjbGllbnRTZWNyZXQpO1xuICB9XG5cbiAgc2V0dXBVc2VySWRDb25maWcoc3NvQ29uZmlndXJhdGlvbikge1xuICAgIGRlZmF1bHRzRGVlcChzc29Db25maWd1cmF0aW9uLCB7IHVzZXJJZENvbmZpZzogeyBqd3RGaWVsZDogJ3VwbicgfSB9KTtcbiAgICBzZXQoc3NvQ29uZmlndXJhdGlvbiwgJ3VzZXJJZENvbmZpZy51c2VDb25zdGFudFZhbHVlJywgZmFsc2UpO1xuICB9XG5cbiAgc2V0dXBTaWduYXR1cmVWZXJpZmljYXRpb25Db25maWcoc3NvQ29uZmlndXJhdGlvbikge1xuICAgIGRlZmF1bHRzRGVlcChzc29Db25maWd1cmF0aW9uLCB7IHNpZ25hdHVyZVZlcmlmaWNhdGlvbkNvbmZpZzogeyBhYWQ6IHt9IH0gfSk7XG4gIH1cblxuICBnZXRSZWRpcmVjdEFmdGVyTG9nb3V0KHNzb0NvbmZpZ3VyYXRpb24pOiBib29sZWFuIHtcbiAgICByZXR1cm4gaGFzKHNzb0NvbmZpZ3VyYXRpb24sICdsb2dvdXRSZXF1ZXN0LnJlcXVlc3RQYXJhbXMucG9zdF9sb2dvdXRfcmVkaXJlY3RfdXJpJylcbiAgICAgID8gdHJ1ZVxuICAgICAgOiBmYWxzZTtcbiAgfVxuXG4gIGdldFJlZGlyZWN0QWZ0ZXJMb2dvdXRVcmwoc3NvQ29uZmlndXJhdGlvbik6IHN0cmluZyB7XG4gICAgcmV0dXJuIHNzb0NvbmZpZ3VyYXRpb24ubG9nb3V0UmVxdWVzdC5yZXF1ZXN0UGFyYW1zLnBvc3RfbG9nb3V0X3JlZGlyZWN0X3VyaVxuICAgICAgPyBzc29Db25maWd1cmF0aW9uLmxvZ291dFJlcXVlc3QucmVxdWVzdFBhcmFtcy5wb3N0X2xvZ291dF9yZWRpcmVjdF91cmlcbiAgICAgIDogbnVsbDtcbiAgfVxuXG4gIGdldEZpcnN0RGVmaW5lZCh2YWx1ZXMpIHtcbiAgICByZXR1cm4gaGVhZChyZWplY3QodmFsdWVzLCBpc1VuZGVmaW5lZCkpO1xuICB9XG5cbiAgZ2V0UXVlcnlTdHJpbmcocGFyYW1zKSB7XG4gICAgcmV0dXJuIG1hcChwYXJhbXMsICh2YWx1ZSwga2V5KSA9PiBgJHtrZXl9PSR7dmFsdWV9YCkuam9pbignJicpO1xuICB9XG59XG4iXX0=
193
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWFkLWNvbmZpZ3VyYXRpb24tbWFwcGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vYXV0aC1jb25maWd1cmF0aW9uL3Nzby1jb25maWd1cmF0aW9uL3RlbXBsYXRlcy9hYWQtY29uZmlndXJhdGlvbi1tYXBwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFvQixZQUFZLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM1RSxPQUFPLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsWUFBWSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUM1RixPQUFPLEVBQUUsU0FBUyxFQUFFLHFCQUFxQixFQUFFLG9CQUFvQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3JGLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGlEQUFpRCxDQUFDO0FBQ3pGLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLCtDQUErQyxDQUFDOztBQUs5RSxNQUFNLE9BQU8sc0JBQXNCO0lBSG5DO1FBSVUsYUFBUSxHQUFHO1lBQ2pCLGtCQUFrQixFQUFFLElBQUk7U0FDekIsQ0FBQztRQUVNLGVBQVUsR0FBRyw0Q0FBNEMsQ0FBQztLQWtNbkU7SUFoTUMsT0FBTyxDQUFDLGFBQStCO1FBQ3JDLE1BQU0sT0FBTyxHQUFHLEdBQUcsYUFBYSxDQUFDLFVBQVUsSUFBSSxhQUFhLENBQUMsTUFBTSxTQUFTLENBQUM7UUFFN0UsTUFBTSxnQkFBZ0IsR0FBcUI7WUFDekMsUUFBUSxFQUFFLGFBQWEsQ0FBQyxhQUFhO1lBQ3JDLFFBQVEsRUFBRSxhQUFhLENBQUMsYUFBYTtZQUNyQyxhQUFhLEVBQUUsYUFBYSxDQUFDLG1CQUFtQjtnQkFDOUMsQ0FBQyxDQUFDO29CQUNFLE1BQU0sRUFBRSxN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MkJBQTJCLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQy9FLENBQUM7SUFFTyxzQkFBc0IsQ0FBQyxnQkFBZ0I7UUFDN0MsT0FBTyxHQUFHLENBQUMsZ0JBQWdCLEVBQUUsc0RBQXNELENBQUM7WUFDbEYsQ0FBQyxDQUFDLElBQUk7WUFDTixDQUFDLENBQUMsS0FBSyxDQUFDO0lBQ1osQ0FBQztJQUVPLHlCQUF5QixDQUFDLGdCQUFnQjtRQUNoRCxPQUFPLGdCQUFnQixDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsd0JBQXdCO1lBQzFFLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLHdCQUF3QjtZQUN2RSxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQ1gsQ0FBQztJQUVPLGVBQWUsQ0FBQyxNQUFNO1FBQzVCLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBRU8sY0FBYyxDQUFDLE1BQU07UUFDM0IsT0FBTyxHQUFHLENBQUMsTUFBTSxFQUFFLENBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxHQUFHLElBQUksS0FBSyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDbEUsQ0FBQzs7bUhBdE1VLHNCQUFzQjt1SEFBdEIsc0JBQXNCLGNBRnJCLE1BQU07MkZBRVAsc0JBQXNCO2tCQUhsQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNzb0NvbmZpZ3VyYXRpb25NYXBwZXIgfSBmcm9tICcuL3Nzby1jb25maWd1cmF0aW9uLm1hcHBlcic7XG5pbXBvcnQgeyBBYWRDb25maWd1cmF0aW9uIH0gZnJvbSAnLi9hYWQubW9kZWwnO1xuaW1wb3J0IHsgU3NvQ29uZmlndXJhdGlvbiwgVGVtcGxhdGVUeXBlIH0gZnJvbSAnLi4vc3NvLWNvbmZpZ3VyYXRpb24ubW9kZWwnO1xuaW1wb3J0IHsgZGVmYXVsdHMsIGF0LCBtYXAsIGRlZmF1bHRzRGVlcCwgaGFzLCBoZWFkLCByZWplY3QsIGlzVW5kZWZpbmVkIH0gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCB7IEdyYW50VHlwZSwgVGVuYW50TG9naW5PcHRpb25UeXBlLCBVc2VyTWFuYWdlbWVudFNvdXJjZSB9IGZyb20gJ0BjOHkvY2xpZW50JztcbmltcG9ydCB7IFNpZ25hdHVyZUNvbmZpZ3VyYXRpb24gfSBmcm9tICcuLi90ZW1wbGF0ZS1wYXJ0cy9zaWduYXR1cmUtY29uZmlndXJhdGlvbi5tb2RlbCc7XG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBFeHRlcm5hbFRva2VuIH0gZnJvbSAnLi4vdGVtcGxhdGUtcGFydHMvZXh0ZXJuYWwtdG9rZW4tY29uZmlnLm1vZGVsJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgQWFkQ29uZmlndXJhdGlvbk1hcHBlciBpbXBsZW1lbnRzIFNzb0NvbmZpZ3VyYXRpb25NYXBwZXI8QWFkQ29uZmlndXJhdGlvbj4ge1xuICBwcml2YXRlIGRlZmF1bHRzID0ge1xuICAgIHZpc2libGVPbkxvZ2luUGFnZTogdHJ1ZVxuICB9O1xuXG4gIHByaXZhdGUgdXJsUGF0dGVybiA9IC9eKC4rKVxcLygoLis/KVxcL29hdXRoMlxcLyhhdXRob3JpemV8dG9rZW4pKSQvO1xuXG4gIG1hcEZyb20odGVtcGxhdGVNb2RlbDogQWFkQ29uZmlndXJhdGlvbik6IFNzb0NvbmZpZ3VyYXRpb24ge1xuICAgIGNvbnN0IGJhc2VVcmwgPSBgJHt0ZW1wbGF0ZU1vZGVsLmFhZEFkZHJlc3N9LyR7dGVtcGxhdGVNb2RlbC50ZW5hbnR9L29hdXRoMmA7XG5cbiAgICBjb25zdCBzc29Db25maWd1cmF0aW9uOiBTc29Db25maWd1cmF0aW9uID0ge1xuICAgICAgYXVkaWVuY2U6IHRlbXBsYXRlTW9kZWwuYXBwbGljYXRpb25JZCxcbiAgICAgIGNsaWVudElkOiB0ZW1wbGF0ZU1vZGVsLmFwcGxpY2F0aW9uSWQsXG4gICAgICBsb2dvdXRSZXF1ZXN0OiB0ZW1wbGF0ZU1vZGVsLnJlZGlyZWN0QWZ0ZXJMb2dvdXRcbiAgICAgICAgPyB7XG4gICAgICAgICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgICAgICAgIHVybDogYCR7YmFzZVVybH0vbG9nb3V0YCxcbiAgICAgICAgICAgIHJlcXVlc3RQYXJhbXM6IHtcbiAgICAgICAgICAgICAgcG9zdF9sb2dvdXRfcmVkaXJlY3RfdXJpOiB0ZW1wbGF0ZU1vZGVsLnJlZGlyZWN0QWZ0ZXJMb2dvdXRVcmxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBoZWFkZXJzOiB7fSxcbiAgICAgICAgICAgIGJvZHk6ICcnLFxuICAgICAgICAgICAgb3BlcmF0aW9uOiAnUkVESVJFQ1QnXG4gICAgICAgICAgfVxuICAgICAgICA6IHtcbiAgICAgICAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgICAgICAgaGVhZGVyczoge30sXG4gICAgICAgICAgICBvcGVyYXRpb246ICdSRURJUkVDVCcsXG4gICAgICAgICAgICByZXF1ZXN0UGFyYW1zOiB7fVxuICAgICAgICAgIH0sXG4gICAgICBhdXRob3JpemF0aW9uUmVxdWVzdDoge1xuICAgICAgICBtZXRob2Q6ICdHRVQnLFxuICAgICAgICB1cmw6IGAke2Jhc2VVcmx9L2F1dGhvcml6ZWAsXG4gICAgICAgIHJlcXVlc3RQYXJhbXM6IHtcbiAgICAgICAgICByZWRpcmVjdF91cmk6ICcke3JlZGlyZWN0VXJpfScsXG4gICAgICAgICAgY2xpZW50X2lkOiAnJHtjbGllbnRJZH0nLFxuICAgICAgICAgIHJlc3BvbnNlX3R5cGU6ICdjb2RlJ1xuICAgICAgICB9LFxuICAgICAgICBoZWFkZXJzOiB7fSxcbiAgICAgICAgYm9keTogJycsXG4gICAgICAgIG9wZXJhdGlvbjogJ1JFRElSRUNUJ1xuICAgICAgfSxcbiAgICAgIHRva2VuUmVxdWVzdDoge1xuICAgICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgICAgdXJsOiBgJHtiYXNlVXJsfS90b2tlbmAsXG4gICAgICAgIHJlcXVlc3RQYXJhbXM6IHt9LFxuICAgICAgICBoZWFkZXJzOiB7fSxcbiAgICAgICAgYm9keTogdGhpcy5nZXRRdWVyeVN0cmluZyh7XG4gICAgICAgICAgZ3JhbnRfdHlwZTogJ2F1dGhvcml6YXRpb25fY29kZScsXG4gICAgICAgICAgY29kZTogJyR7Y29kZX0nLFxuICAgICAgICAgIHJlZGlyZWN0X3VyaTogJyR7cmVkaXJlY3RVcml9JyxcbiAgICAgICAgICByZXNvdXJjZTogJyR7Y2xpZW50SWR9JyxcbiAgICAgICAgICBjbGllbnRfaWQ6ICcke2NsaWVudElkfScsXG4gICAgICAgICAgY2xpZW50X3NlY3JldDogZW5jb2RlVVJJQ29tcG9uZW50KHRlbXBsYXRlTW9kZWwuY2xpZW50U2VjcmV0KVxuICAgICAgICB9KSxcbiAgICAgICAgb3BlcmF0aW9uOiAnRVhFQ1VURSdcbiAgICAgIH0sXG4gICAgICByZWZyZXNoUmVxdWVzdDoge1xuICAgICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgICAgdXJsOiBgJHtiYXNlVXJsfS90b2tlbmAsXG4gICAgICAgIHJlcXVlc3RQYXJhbXM6IHt9LFxuICAgICAgICBoZWFkZXJzOiB7fSxcbiAgICAgICAgYm9keTogdGhpcy5nZXRRdWVyeVN0cmluZyh7XG4gICAgICAgICAgZ3JhbnRfdHlwZTogJ3JlZnJlc2hfdG9rZW4nLFxuICAgICAgICAgIHJlZnJlc2hfdG9rZW46ICcke3JlZnJlc2hUb2tlbn0nLFxuICAgICAgICAgIHJlc291cmNlOiAnJHtjbGllbnRJZH0nLFxuICAgICAgICAgIGNsaWVudF9pZDogJyR7Y2xpZW50SWR9JyxcbiAgICAgICAgICBjbGllbnRfc2VjcmV0OiBlbmNvZGVVUklDb21wb25lbnQodGVtcGxhdGVNb2RlbC5jbGllbnRTZWNyZXQpXG4gICAgICAgIH0pLFxuICAgICAgICBvcGVyYXRpb246ICdFWEVDVVRFJ1xuICAgICAgfSxcbiAgICAgIGJ1dHRvbk5hbWU6IHRlbXBsYXRlTW9kZWwuYnV0dG9uTmFtZSxcbiAgICAgIHByb3ZpZGVyTmFtZTogJ0F6dXJlIEFEJyxcbiAgICAgIGlzc3VlcjogdGVtcGxhdGVNb2RlbC5pc3N1ZXIsXG4gICAgICBvbk5ld1VzZXI6IHRlbXBsYXRlTW9kZWwub25OZXdVc2VyLFxuICAgICAgYWNjZXNzVG9rZW5Ub1VzZXJEYXRhTWFwcGluZ3M6IHRlbXBsYXRlTW9kZWwuYWNjZXNzVG9rZW5Ub1VzZXJEYXRhTWFwcGluZ3MsXG4gICAgICByZWRpcmVjdFRvUGxhdGZvcm06IHRlbXBsYXRlTW9kZWwucmVkaXJlY3RUb1BsYXRmb3JtLFxuICAgICAgdGVtcGxhdGU6IFRlbXBsYXRlVHlwZS5BWlVSRSxcbiAgICAgIHVzZXJJZENvbmZpZzoge1xuICAgICAgICB1c2VDb25zdGFudFZhbHVlOiBmYWxzZSxcbiAgICAgICAgand0RmllbGQ6IHRlbXBsYXRlTW9kZWwudXNlcklkQ29uZmlnLmp3dEZpZWxkXG4gICAgICB9LFxuICAgICAgdmlzaWJsZU9uTG9naW5QYWdlOiB0ZW1wbGF0ZU1vZGVsLnZpc2libGVPbkxvZ2luUGFnZSxcbiAgICAgIHNpZ25hdHVyZVZlcmlmaWNhdGlvbkNvbmZpZzpcbiAgICAgICAgdGVtcGxhdGVNb2RlbC5zaWduYXR1cmVWZXJpZmljYXRpb25Db25maWcudG9TaWduYXR1cmVWZXJpZmljYXRpb25Db25maWcoKSxcbiAgICAgIHVzZXJNYW5hZ2VtZW50U291cmNlOiBVc2VyTWFuYWdlbWVudFNvdXJjZS5SRU1PVEUsXG4gICAgICB0eXBlOiBUZW5hbnRMb2dpbk9wdGlvblR5cGUuT0FVVEgyLFxuICAgICAgZ3JhbnRUeXBlOiBHcmFudFR5cGUuQVVUSE9SSVpBVElPTl9DT0RFLFxuICAgICAgZXh0ZXJuYWxUb2tlbkNvbmZpZzogdGVtcGxhdGVNb2RlbC5leHRlcm5hbFRva2VuQ29uZmlnLnRvRXh0ZXJuYWxUb2tlbkNvbmZpZygpXG4gICAgfTtcbiAgICByZXR1cm4gc3NvQ29uZmlndXJhdGlvbjtcbiAgfVxuXG4gIG1hcFRvKHNzb0NvbmZpZ3VyYXRpb246IFNzb0NvbmZpZ3VyYXRpb24pOiBBYWRDb25maWd1cmF0aW9uIHtcbiAgICBjb25zdCBhcHBsaWNhdGlvbnNJZCA9IGF0KHNzb0NvbmZpZ3VyYXRpb24sIFsnYXVkaWVuY2UnLCAnY2xpZW50SWQnXSk7XG5cbiAgICB0aGlzLnNldHVwRGVmYXVsdHMoc3NvQ29uZmlndXJhdGlvbik7XG4gICAgdGhpcy5zZXR1cFVzZXJJZENvbmZpZyhzc29Db25maWd1cmF0aW9uKTtcbiAgICB0aGlzLnNldHVwU2lnbmF0dXJlVmVyaWZpY2F0aW9uQ29uZmlnKHNzb0NvbmZpZ3VyYXRpb24pO1xuXG4gICAgY29uc3QgYWFkQ29uZmlndXJhdGlvbjogQWFkQ29uZmlndXJhdGlvbiA9IHtcbiAgICAgIGFhZEFkZHJlc3M6IHRoaXMuZ2V0QWFkQWRkcmVzcyhzc29Db25maWd1cmF0aW9uKSxcbiAgICAgIHRlbmFudDogdGhpcy5nZXRUZW5hbnQoc3NvQ29uZmlndXJhdGlvbiksXG4gICAgICBhcHBsaWNhdGlvbklkOiB0aGlzLmdldEZpcnN0RGVmaW5lZChhcHBsaWNhdGlvbnNJZCksXG4gICAgICByZWRpcmVjdFRvUGxhdGZvcm06IHNzb0NvbmZpZ3VyYXRpb24ucmVkaXJlY3RUb1BsYXRmb3JtLFxuICAgICAgY2xpZW50U2VjcmV0OiB0aGlzLmdldENsaWVudFNlY3JldChzc29Db25maWd1cmF0aW9uKSxcbiAgICAgIGlzc3Vlcjogc3NvQ29uZmlndXJhdGlvbi5pc3N1ZXIsXG4gICAgICBidXR0b25OYW1lOiBzc29Db25maWd1cmF0aW9uLmJ1dHRvbk5hbWUsXG4gICAgICB2aXNpYmxlT25Mb2dpblBhZ2U6IHNzb0NvbmZpZ3VyYXRpb24udmlzaWJsZU9uTG9naW5QYWdlLFxuICAgICAgcmVkaXJlY3RBZnRlckxvZ291dDogdGhpcy5nZXRSZWRpcmVjdEFmdGVyTG9nb3V0KHNzb0NvbmZpZ3VyYXRpb24pLFxuICAgICAgcmVkaXJlY3RBZnRlckxvZ291dFVybDogdGhpcy5nZXRSZWRpcmVjdEFmdGVyTG9nb3V0VXJsKHNzb0NvbmZpZ3VyYXRpb24pLFxuICAgICAgYWNjZXNzVG9rZW5Ub1VzZXJEYXRhTWFwcGluZ3M6IHNzb0NvbmZpZ3VyYXRpb24uYWNjZXNzVG9rZW5Ub1VzZXJEYXRhTWFwcGluZ3MsXG4gICAgICB1c2VySWRDb25maWc6IHtcbiAgICAgICAgand0RmllbGQ6IHNzb0NvbmZpZ3VyYXRpb24udXNlcklkQ29uZmlnLmp3dEZpZWxkXG4gICAgICB9LFxuICAgICAgcHVibGljS2V5RGlzY292ZXJ5VXJsOiBzc29Db25maWd1cmF0aW9uLnNpZ25hdHVyZVZlcmlmaWNhdGlvbkNvbmZpZy5hYWQucHVibGljS2V5RGlzY292ZXJ5VXJsLFxuICAgICAgc2lnbmF0dXJlVmVyaWZpY2F0aW9uQ29uZmlnOiBuZXcgU2lnbmF0dXJlQ29uZmlndXJhdGlvbihcbiAgICAgICAgc3NvQ29uZmlndXJhdGlvbi5zaWduYXR1cmVWZXJpZmljYXRpb25Db25maWdcbiAgICAgICksXG4gICAgICBvbk5ld1VzZXI6IHNzb0NvbmZpZ3VyYXRpb24ub25OZXdVc2VyLFxuICAgICAgZXh0ZXJuYWxUb2tlbkNvbmZpZzogbmV3IEV4dGVybmFsVG9rZW4oc3NvQ29uZmlndXJhdGlvbi5leHRlcm5hbFRva2VuQ29uZmlnKVxuICAgIH07XG4gICAgcmV0dXJuIGFhZENvbmZpZ3VyYXRpb247XG4gIH1cblxuICBwcml2YXRlIHNldHVwRGVmYXVsdHMoc3NvQ29uZmlndXJhdGlvbikge1xuICAgIGRlZmF1bHRzKHNzb0NvbmZpZ3VyYXRpb24sIHRoaXMuZGVmYXVsdHMpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRBYWRBZGRyZXNzKHNzb0NvbmZpZ3VyYXRpb24pIHtcbiAgICBjb25zdCB1cmxzID0gdGhpcy5nZXRVcmxzRnJvbVJlcXVlc3RzKHNzb0NvbmZpZ3VyYXRpb24pO1xuXG4gICAgY29uc3QgYWFkQWRkcmVzc2VzID0gbWFwKHVybHMsIHVybCA9PiB0aGlzLmdldEFhZEFkZHJlc3NGcm9tVXJsKHVybCkpO1xuICAgIHJldHVybiB0aGlzLmdldEZpcnN0RGVmaW5lZChhYWRBZGRyZXNzZXMpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRUZW5hbnQoc3NvQ29uZmlndXJhdGlvbikge1xuICAgIGNvbnN0IHVybHMgPSB0aGlzLmdldFVybHNGcm9tUmVxdWVzdHMoc3NvQ29uZmlndXJhdGlvbik7XG5cbiAgICBjb25zdCB0ZW5hbnRzID0gbWFwKHVybHMsIHVybCA9PiB0aGlzLmdldFRlbmFudEZyb21VcmwodXJsKSk7XG4gICAgcmV0dXJuIHRoaXMuZ2V0Rmlyc3REZWZpbmVkKHRlbmFudHMpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRVcmxzRnJvbVJlcXVlc3RzKHNzb0NvbmZpZ3VyYXRpb24pIHtcbiAgICByZXR1cm4gYXQoc3NvQ29uZmlndXJhdGlvbiwgW1xuICAgICAgJ2F1dGhvcml6YXRpb25SZXF1ZXN0LnVybCcsXG4gICAgICAndG9rZW5SZXF1ZXN0LnVybCcsXG4gICAgICAncmVmcmVzaFJlcXVlc3QudXJsJ1xuICAgIF0pO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRBYWRBZGRyZXNzRnJvbVVybCh1cmwpIHtcbiAgICBjb25zdCBbLCBhYWRBZGRyZXNzXSA9ICh1cmwgfHwgJycpLm1hdGNoKHRoaXMudXJsUGF0dGVybikgfHwgW107XG4gICAgcmV0dXJuIGFhZEFkZHJlc3M7XG4gIH1cblxuICBwcml2YXRlIGdldFRlbmFudEZyb21VcmwodXJsKSB7XG4gICAgY29uc3QgWywgLCAsIHRlbmFudF0gPSAodXJsIHx8ICcnKS5tYXRjaCh0aGlzLnVybFBhdHRlcm4pIHx8IFtdO1xuICAgIHJldHVybiB0ZW5hbnQ7XG4gIH1cblxuICBwcml2YXRlIGdldENsaWVudFNlY3JldChzc29Db25maWd1cmF0aW9uKSB7XG4gICAgY29uc3QgYm9kaWVzID0gYXQoc3NvQ29uZmlndXJhdGlvbiwgWyd0b2tlblJlcXVlc3QuYm9keScsICdyZWZyZXNoUmVxdWVzdC5ib2R5J10pO1xuICAgIGNvbnN0IGNsaWVudFNlY3JldHMgPSBtYXAoYm9kaWVzLCBib2R5ID0+IHRoaXMuZ2V0Q2xpZW50U2VjcmV0RnJvbUJvZHkoYm9keSkpO1xuICAgIHJldHVybiB0aGlzLmdldEZpcnN0RGVmaW5lZChjbGllbnRTZWNyZXRzKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0Q2xpZW50U2VjcmV0RnJvbUJvZHkoYm9keSkge1xuICAgIGNvbnN0IFssIGNsaWVudFNlY3JldF0gPSAoYm9keSB8fCAnJykubWF0Y2goL2NsaWVudF9zZWNyZXQ9KFteJl0rKS8pIHx8IFtdO1xuICAgIHJldHVybiBjbGllbnRTZWNyZXQgPyBkZWNvZGVVUklDb21wb25lbnQoY2xpZW50U2VjcmV0KSA6IHVuZGVmaW5lZDtcbiAgfVxuXG4gIHByaXZhdGUgc2V0dXBVc2VySWRDb25maWcoc3NvQ29uZmlndXJhdGlvbikge1xuICAgIGRlZmF1bHRzRGVlcChzc29Db25maWd1cmF0aW9uLCB7IHVzZXJJZENvbmZpZzogeyBqd3RGaWVsZDogJ3VwbicgfSB9KTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0dXBTaWduYXR1cmVWZXJpZmljYXRpb25Db25maWcoc3NvQ29uZmlndXJhdGlvbikge1xuICAgIGRlZmF1bHRzRGVlcChzc29Db25maWd1cmF0aW9uLCB7IHNpZ25hdHVyZVZlcmlmaWNhdGlvbkNvbmZpZzogeyBhYWQ6IHt9IH0gfSk7XG4gIH1cblxuICBwcml2YXRlIGdldFJlZGlyZWN0QWZ0ZXJMb2dvdXQoc3NvQ29uZmlndXJhdGlvbik6IGJvb2xlYW4ge1xuICAgIHJldHVybiBoYXMoc3NvQ29uZmlndXJhdGlvbiwgJ2xvZ291dFJlcXVlc3QucmVxdWVzdFBhcmFtcy5wb3N0X2xvZ291dF9yZWRpcmVjdF91cmknKVxuICAgICAgPyB0cnVlXG4gICAgICA6IGZhbHNlO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRSZWRpcmVjdEFmdGVyTG9nb3V0VXJsKHNzb0NvbmZpZ3VyYXRpb24pOiBzdHJpbmcge1xuICAgIHJldHVybiBzc29Db25maWd1cmF0aW9uLmxvZ291dFJlcXVlc3QucmVxdWVzdFBhcmFtcy5wb3N0X2xvZ291dF9yZWRpcmVjdF91cmlcbiAgICAgID8gc3NvQ29uZmlndXJhdGlvbi5sb2dvdXRSZXF1ZXN0LnJlcXVlc3RQYXJhbXMucG9zdF9sb2dvdXRfcmVkaXJlY3RfdXJpXG4gICAgICA6IG51bGw7XG4gIH1cblxuICBwcml2YXRlIGdldEZpcnN0RGVmaW5lZCh2YWx1ZXMpIHtcbiAgICByZXR1cm4gaGVhZChyZWplY3QodmFsdWVzLCBpc1VuZGVmaW5lZCkpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRRdWVyeVN0cmluZyhwYXJhbXMpIHtcbiAgICByZXR1cm4gbWFwKHBhcmFtcywgKHZhbHVlLCBrZXkpID0+IGAke2tleX09JHt2YWx1ZX1gKS5qb2luKCcmJyk7XG4gIH1cbn1cbiJdfQ==
@@ -147,7 +147,7 @@ export class PackageVersionsListComponent {
147
147
  });
148
148
  }
149
149
  catch (e) {
150
- // on cancel: do nothing
150
+ await this.refreshPackage();
151
151
  return;
152
152
  }
153
153
  await this.setVersionAsLatest(uploadedVersion);
@@ -167,4 +167,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
167
167
  }], ctorParameters: function () { return [{ type: i1.ActivatedRoute }, { type: i2.PluginsService }, { type: i3.EcosystemService }, { type: i4.TranslateService }, { type: i2.ModalService }, { type: i2.AlertService }, { type: i2.OptionsService }, { type: i2.Permissions }, { type: i2.GainsightService }]; }, propDecorators: { onVersionSelect: [{
168
168
  type: Output
169
169
  }] } });
170
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFja2FnZS12ZXJzaW9ucy1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2Vjb3N5c3RlbS9wYWNrYWdlcy9wYWNrYWdlLXZlcnNpb25zL3BhY2thZ2UtdmVyc2lvbnMtbGlzdC9wYWNrYWdlLXZlcnNpb25zLWxpc3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vZWNvc3lzdGVtL3BhY2thZ2VzL3BhY2thZ2UtdmVyc2lvbnMvcGFja2FnZS12ZXJzaW9ucy1saXN0L3BhY2thZ2UtdmVyc2lvbnMtbGlzdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDeEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRWpELE9BQU8sRUFDTCxZQUFZLEVBQ1osZ0JBQWdCLEVBQ2hCLFlBQVksRUFDWixjQUFjLEVBQ2QsV0FBVyxFQUNYLGNBQWMsRUFDZCxNQUFNLEVBQ04sT0FBTyxFQUNSLE1BQU0scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxFQUFFLGdCQUFnQixFQUFFLGtCQUFrQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDNUYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7Ozs7Ozs7O0FBRXZELE1BQU0sc0JBQXNCLEdBQUcsRUFBRSxDQUFDO0FBTWxDLE1BQU0sT0FBTyw0QkFBNEI7SUFjdkMsWUFDVSxjQUE4QixFQUM5QixjQUE4QixFQUM5QixnQkFBa0MsRUFDbEMsZ0JBQWtDLEVBQ2xDLEtBQW1CLEVBQ25CLFlBQTBCLEVBQzFCLGNBQThCLEVBQzlCLFdBQXdCLEVBQ3hCLGdCQUFrQztRQVJsQyxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzlCLHFC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QUN4QixPQUFPO1NBQ1I7UUFDRCxNQUFNLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUNqRCxDQUFDO0lBRU8sdUJBQXVCO1FBQzdCLElBQUksQ0FBQyxpQkFBaUI7WUFDcEIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLGFBQWE7Z0JBQzdDLENBQUMsQ0FBQyxJQUFJO2dCQUNOLENBQUMsQ0FBQyxJQUFJLENBQUMsdUJBQXVCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2hELENBQUM7O3lIQW5NVSw0QkFBNEI7NkdBQTVCLDRCQUE0QixrSEN0QnpDLCs3R0E2RkE7MkZEdkVhLDRCQUE0QjtrQkFKeEMsU0FBUzsrQkFDRSwyQkFBMkI7NFVBZTNCLGVBQWU7c0JBQXhCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IElBcHBsaWNhdGlvbiwgSUFwcGxpY2F0aW9uVmVyc2lvbiB9IGZyb20gJ0BjOHkvY2xpZW50JztcbmltcG9ydCB7XG4gIEFsZXJ0U2VydmljZSxcbiAgR2FpbnNpZ2h0U2VydmljZSxcbiAgTW9kYWxTZXJ2aWNlLFxuICBPcHRpb25zU2VydmljZSxcbiAgUGVybWlzc2lvbnMsXG4gIFBsdWdpbnNTZXJ2aWNlLFxuICBTdGF0dXMsXG4gIGdldHRleHRcbn0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cyc7XG5pbXBvcnQgeyBFY29zeXN0ZW1TZXJ2aWNlLCBQUk9EVUNUX0VYUEVSSUVOQ0UgfSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzL2Vjb3N5c3RlbS9zaGFyZWQnO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuXG5jb25zdCBERUZBVUxUX1ZFUlNJT05TX0xJTUlUID0gMjA7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2M4eS1wYWNrYWdlLXZlcnNpb25zLWxpc3QnLFxuICB0ZW1wbGF0ZVVybDogJy4vcGFja2FnZS12ZXJzaW9ucy1saXN0LmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBQYWNrYWdlVmVyc2lvbnNMaXN0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQ1VSUkVOVF9MT0NBVElPTiA9IGxvY2F0aW9uLmhyZWY7XG5cbiAgdmVyc2lvbnNMaW1pdDogbnVtYmVyO1xuICBpc0xvYWRpbmcgPSBmYWxzZTtcbiAgcGFja2FnZTogSUFwcGxpY2F0aW9uO1xuICBzb3J0ZWRWZXJzaW9uczogSUFwcGxpY2F0aW9uVmVyc2lvbltdO1xuICBzZWxlY3RlZFZlcnNpb246IHN0cmluZztcbiAgcHJlVXBsb2FkQ2FsbGJhY2s6ICgpID0+IFByb21pc2U8YW55PjtcbiAgaGFzQWRtaW5QZXJtaXNzaW9ucyA9IGZhbHNlO1xuICBpc1BhY2thZ2VPd25lZEJ5Q3VycmVudFRlbmFudCA9IGZhbHNlO1xuXG4gIEBPdXRwdXQoKSBvblZlcnNpb25TZWxlY3QgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZyB8IG51bGw+KCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBhY3RpdmF0ZWRSb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICAgcHJpdmF0ZSBwbHVnaW5zU2VydmljZTogUGx1Z2luc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBlY29zeXN0ZW1TZXJ2aWNlOiBFY29zeXN0ZW1TZXJ2aWNlLFxuICAgIHByaXZhdGUgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICBwcml2YXRlIG1vZGFsOiBNb2RhbFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBhbGVydFNlcnZpY2U6IEFsZXJ0U2VydmljZSxcbiAgICBwcml2YXRlIG9wdGlvbnNTZXJ2aWNlOiBPcHRpb25zU2VydmljZSxcbiAgICBwcml2YXRlIHBlcm1pc3Npb25zOiBQZXJtaXNzaW9ucyxcbiAgICBwcml2YXRlIGdhaW5zaWdodFNlcnZpY2U6IEdhaW5zaWdodFNlcnZpY2VcbiAgKSB7fVxuXG4gIGFzeW5jIG5nT25Jbml0KCkge1xuICAgIHRoaXMuaXNMb2FkaW5nID0gdHJ1ZTtcbiAgICB0aGlzLmhhc0FkbWluUGVybWlzc2lvbnMgPSB0aGlzLnBlcm1pc3Npb25zLmhhc1JvbGUoXG4gICAgICBQZXJtaXNzaW9ucy5ST0xFX0FQUExJQ0FUSU9OX01BTkFHRU1FTlRfQURNSU5cbiAgICApO1xuICAgIHRoaXMucGFja2FnZSA9IHRoaXMuYWN0aXZhdGVkUm91dGU/LnNuYXBzaG90Py5wYXJlbnQ/LmRhdGE/LmNvbnRleHREYXRhO1xuICAgIHRoaXMuaXNQYWNrYWdlT3duZWRCeUN1cnJlbnRUZW5hbnQgPSB0aGlzLmVjb3N5c3RlbVNlcnZpY2UuaXNPd25lcih0aGlzLnBhY2thZ2UpO1xuICAgIHRoaXMudmVyc2lvbnNMaW1pdCA9IChhd2FpdCB0aGlzLm9wdGlvbnNTZXJ2aWNlLmdldFN5c3RlbU9wdGlvbihcbiAgICAgICdhcHBsaWNhdGlvbicsXG4gICAgICAndmVyc2lvbnMubGltaXQnLFxuICAgICAgREVGQVVMVF9WRVJTSU9OU19MSU1JVFxuICAgICkpIGFzIG51bWJlcjtcbiAgICB0aGlzLnNvcnRWZXJzaW9ucygpO1xuICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XG4gIH1cblxuICBhc3luYyBkb3dubG9hZEFyY2hpdmUoYXBwVmVyc2lvbjogSUFwcGxpY2F0aW9uVmVyc2lvbik6IFByb21pc2U8dm9pZD4ge1xuICAgIHRoaXMuZ2FpbnNpZ2h0U2VydmljZS50cmlnZ2VyRXZlbnQoUFJPRFVDVF9FWFBFUklFTkNFLkFQUExJQ0FUSU9OUy5FVkVOVFMuUEFDS0FHRV9WRVJTSU9OUywge1xuICAgICAgY29tcG9uZW50OiBQUk9EVUNUX0VYUEVSSUVOQ0UuQVBQTElDQVRJT05TLkNPTVBPTkVOVFMuUEFDS0FHRV9WRVJTSU9OUyxcbiAgICAgIGFjdGlvbjogUFJPRFVDVF9FWFBFUklFTkNFLkFQUExJQ0FUSU9OUy5BQ1RJT05TLkRPV05MT0FELFxuICAgICAgdXJsOiB0aGlzLkNVUlJFTlRfTE9DQVRJT05cbiAgICB9KTtcbiAgICBjb25zdCBhcmNoaXZlTU8gPSBhd2FpdCB0aGlzLmVjb3N5c3RlbVNlcnZpY2UuZ2V0QXJjaGl2ZU1hbmFnZWRPYmplY3QoYXBwVmVyc2lvbi5iaW5hcnlJZCk7XG4gICAgYXdhaXQgdGhpcy5lY29zeXN0ZW1TZXJ2aWNlLmRvd25sb2FkQXJjaGl2ZSh0aGlzLnBhY2thZ2UsIHtcbiAgICAgIGlkOiBhcHBWZXJzaW9uLmJpbmFyeUlkLFxuICAgICAgbmFtZTogYXJjaGl2ZU1PLm5hbWVcbiAgICB9KTtcbiAgfVxuXG4gIHBhY2thZ2VWZXJzaW9uVXBsb2FkZWQoKSB7XG4gICAgdGhpcy5hY3RpdmF0ZWRSb3V0ZS5zbmFwc2hvdC5wYXJlbnQuZGF0YS5jb250ZXh0RGF0YSA9IHRoaXMucGFja2FnZTtcbiAgICB0aGlzLnNvcnRWZXJzaW9ucygpO1xuICAgIHRoaXMuc2V0VXBsb2FkZWRWZXJzaW9uQXNMYXRlc3QoKTtcbiAgfVxuXG4gIHNlbGVjdFZlcnNpb24odmVyc2lvbjogc3RyaW5nIHwgbnVsbCk6IHZvaWQge1xuICAgIHRoaXMuc2VsZWN0ZWRWZXJzaW9uID0gdmVyc2lvbjtcbiAgICB0aGlzLm9uVmVyc2lvblNlbGVjdC5lbWl0KHZlcnNpb24pO1xuICB9XG5cbiAgYXN5bmMgcmVtb3ZlVmVyc2lvblBhY2thZ2UodmVyc2lvbjogc3RyaW5nKSB7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHRoaXMuZWNvc3lzdGVtU2VydmljZS5kZWxldGVQYWNrYWdlVmVyc2lvbih0aGlzLnBhY2thZ2UsIHsgdmVyc2lvbiB9KTtcbiAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLnN1Y2Nlc3MoXG4gICAgICAgIHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KGdldHRleHQoJ1BhY2thZ2UgdmVyc2lvbiB7e3ZlcnNpb259fSBoYXMgYmVlbiByZW1vdmVkJyksIHtcbiAgICAgICAgICB2ZXJzaW9uXG4gICAgICAgIH0pXG4gICAgICApO1xuICAgICAgdGhpcy5nYWluc2lnaHRTZXJ2aWNlLnRyaWdnZXJFdmVudChQUk9EVUNUX0VYUEVSSUVOQ0UuQVBQTElDQVRJT05TLkVWRU5UUy5QQUNLQUdFX1ZFUlNJT05TLCB7XG4gICAgICAgIGNvbXBvbmVudDogUFJPRFVDVF9FWFBFUklFTkNFLkFQUExJQ0FUSU9OUy5DT01QT05FTlRTLlBBQ0tBR0VfVkVSU0lPTlMsXG4gICAgICAgIGFjdGlvbjogUFJPRFVDVF9FWFBFUklFTkNFLkFQUExJQ0FUSU9OUy5BQ1RJT05TLkRFTEVURSxcbiAgICAgICAgcmVzdWx0OiBQUk9EVUNUX0VYUEVSSUVOQ0UuQVBQTElDQVRJT05TLlJFU1VMVFMuU1VDQ0VTUyxcbiAgICAgICAgdXJsOiB0aGlzLkNVUlJFTlRfTE9DQVRJT05cbiAgICAgIH0pO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLmFkZFNlcnZlckZhaWx1cmUoZSk7XG4gICAgICB0aGlzLmdhaW5zaWdodFNlcnZpY2UudHJpZ2dlckV2ZW50KFBST0RVQ1RfRVhQRVJJRU5DRS5BUFBMSUNBVElPTlMuRVZFTlRTLlBBQ0tBR0VfVkVSU0lPTlMsIHtcbiAgICAgICAgY29tcG9uZW50OiBQUk9EVUNUX0VYUEVSSUVOQ0UuQVBQTElDQVRJT05TLkNPTVBPTkVOVFMuUEFDS0FHRV9WRVJTSU9OUyxcbiAgICAgICAgYWN0aW9uOiBQUk9EVUNUX0VYUEVSSUVOQ0UuQVBQTElDQVRJT05TLkFDVElPTlMuREVMRVRFLFxuICAgICAgICByZXN1bHQ6IFBST0RVQ1RfRVhQRVJJRU5DRS5BUFBMSUNBVElPTlMuUkVTVUxUUy5TRVJWRVJfRkFJTFVSRSxcbiAgICAgICAgdXJsOiB0aGlzLkNVUlJFTlRfTE9DQVRJT05cbiAgICAgIH0pO1xuICAgIH1cbiAgICBpZiAodmVyc2lvbiA9PT0gdGhpcy5zZWxlY3RlZFZlcnNpb24pIHtcbiAgICAgIHRoaXMuc2VsZWN0VmVyc2lvbihudWxsKTtcbiAgICB9XG4gICAgYXdhaXQgdGhpcy5yZWZyZXNoUGFja2FnZSgpO1xuICB9XG5cbiAgYXN5bmMgc2V0VmVyc2lvbkFzTGF0ZXN0KGFwcFZlcnNpb246IElBcHBsaWNhdGlvblZlcnNpb24pIHtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgdGhpcy5lY29zeXN0ZW1TZXJ2aWNlLnNldFBhY2thZ2VWZXJzaW9uVGFnKHRoaXMucGFja2FnZSwgYXBwVmVyc2lvbi52ZXJzaW9uLCBbXG4gICAgICAgIC4uLmFwcFZlcnNpb24udGFncyxcbiAgICAgICAgJ2xhdGVzdCdcbiAgICAgIF0pO1xuXG4gICAgICAvLyBUT0RPIGFkZGVkIGl0IGR1ZSB0bzogaHR0cHM6Ly9jdW11bG9jaXR5LmF0bGFzc2lhbi5uZXQvYnJvd3NlL01UTS00ODU1M1xuICAgICAgLy8gUmVtb3ZlIGl0IHdoZW4gQkUgZml4ZXMgaXNzdWVzIHdpdGggYWN0aXZlVmVyc2lvbi5cbiAgICAgIGF3YWl0IHRoaXMuZWNvc3lzdGVtU2VydmljZS5zZXRBcHBBY3RpdmVWZXJzaW9uKHRoaXMucGFja2FnZSwgYXBwVmVyc2lvbi5iaW5hcnlJZCk7XG4gICAgICB0aGlzLmFsZXJ0U2VydmljZS5zdWNjZXNzKGdldHRleHQoJ1RhZyBoYXMgYmVlbiBzZXQuJykpO1xuICAgICAgdGhpcy5nYWluc2lnaHRTZXJ2aWNlLnRyaWdnZXJFdmVudChQUk9EVUNUX0VYUEVSSUVOQ0UuQVBQTElDQVRJT05TLkVWRU5UUy5QQUNLQUdFX1ZFUlNJT05TLCB7XG4gICAgICAgIGNvbXBvbmVudDogUFJPRFVDVF9FWFBFUklFTkNFLkFQUExJQ0FUSU9OUy5DT01QT05FTlRTLlBBQ0tBR0VfVkVSU0lPTlMsXG4gICAgICAgIGFjdGlvbjogUFJPRFVDVF9FWFBFUklFTkNFLkFQUExJQ0FUSU9OUy5BQ1RJT05TLlNFVF9BU19MQVRFU1QsXG4gICAgICAgIHJlc3VsdDogUFJPRFVDVF9FWFBFUklFTkNFLkFQUExJQ0FUSU9OUy5SRVNVTFRTLlNVQ0NFU1MsXG4gICAgICAgIHVybDogdGhpcy5DVVJSRU5UX0xPQ0FUSU9OXG4gICAgICB9KTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aGlzLmFsZXJ0U2VydmljZS5hZGRTZXJ2ZXJGYWlsdXJlKGUpO1xuICAgICAgdGhpcy5nYWluc2lnaHRTZXJ2aWNlLnRyaWdnZXJFdmVudChQUk9EVUNUX0VYUEVSSUVOQ0UuQVBQTElDQVRJT05TLkVWRU5UUy5QQUNLQUdFX1ZFUlNJT05TLCB7XG4gICAgICAgIGNvbXBvbmVudDogUFJPRFVDVF9FWFBFUklFTkNFLkFQUExJQ0FUSU9OUy5DT01QT05FTlRTLlBBQ0tBR0VfVkVSU0lPTlMsXG4gICAgICAgIGFjdGlvbjogUFJPRFVDVF9FWFBFUklFTkNFLkFQUExJQ0FUSU9OUy5BQ1RJT05TLlNFVF9BU19MQVRFU1QsXG4gICAgICAgIHJlc3VsdDogUFJPRFVDVF9FWFBFUklFTkNFLkFQUExJQ0FUSU9OUy5SRVNVTFRTLlNFUlZFUl9GQUlMVVJFLFxuICAgICAgICB1cmw6IHRoaXMuQ1VSUkVOVF9MT0NBVElPTlxuICAgICAgfSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGF3YWl0IHRoaXMucmVmcmVzaFBhY2thZ2UoKTtcbiAgfVxuXG4gIGFzeW5jIGFja25vd2xlZGdlTGltaXRSZWFjaGVkKCkge1xuICAgIGF3YWl0IHRoaXMubW9kYWwuYWNrbm93bGVkZ2UoXG4gICAgICBnZXR0ZXh0KCdQYWNrYWdlIGxpbWl0IGV4Y2VlZGVkJyksXG4gICAgICB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChcbiAgICAgICAgZ2V0dGV4dChcbiAgICAgICAgICAnWW91IGhhdmUgcmVhY2hlZCB0aGUgbWF4aW11bSBudW1iZXIgb2Yge3sgdmVyc2lvbnNMaW1pdCB9fSBwYWNrYWdlIHZlcnNpb25zLiBUbyBhZGQgYW5vdGhlciB2ZXJzaW9uLCBmaXJzdCBkZWxldGUgb25lIGZyb20gdGhlIGxpc3QuJ1xuICAgICAgICApLFxuICAgICAgICB7IHZlcnNpb25zTGltaXQ6IHRoaXMudmVyc2lvbnNMaW1pdCB9XG4gICAgICApLFxuICAgICAgU3RhdHVzLklORk8sXG4gICAgICBnZXR0ZXh0KCdDbG9zZScpXG4gICAgKTtcbiAgICB0aHJvdyB1bmRlZmluZWQ7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHJlZnJlc2hQYWNrYWdlKCkge1xuICAgIHRoaXMuaXNMb2FkaW5nID0gdHJ1ZTtcbiAgICB0aGlzLnBhY2thZ2UgPSBhd2FpdCB0aGlzLmVjb3N5c3RlbVNlcnZpY2UuZ2V0QXBwbGljYXRpb24odGhpcy5wYWNrYWdlLmlkKTtcbiAgICB0aGlzLmFjdGl2YXRlZFJvdXRlLnNuYXBzaG90LnBhcmVudC5kYXRhLmNvbnRleHREYXRhID0gdGhpcy5wYWNrYWdlO1xuICAgIHRoaXMuc29ydFZlcnNpb25zKCk7XG4gICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcbiAgfVxuXG4gIHByaXZhdGUgc29ydFZlcnNpb25zKCkge1xuICAgIHRoaXMuc29ydGVkVmVyc2lvbnMgPSB0aGlzLnBsdWdpbnNTZXJ2aWNlLnNvcnRWZXJzaW9ucyhcbiAgICAgIHtcbiAgICAgICAgbGlzdDogdGhpcy5wYWNrYWdlLmFwcGxpY2F0aW9uVmVyc2lvbnMsXG4gICAgICAgIHBhdGg6IFsndmVyc2lvbiddXG4gICAgICB9LFxuICAgICAgJ2Rlc2MnXG4gICAgKTtcbiAgICB0aGlzLnRvZ2dsZVVwbG9hZFBvc3NpYmlsaXR5KCk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHNldFVwbG9hZGVkVmVyc2lvbkFzTGF0ZXN0KCkge1xuICAgIGNvbnN0IHVwbG9hZGVkVmVyc2lvbiA9XG4gICAgICB0aGlzLnBhY2thZ2UuYXBwbGljYXRpb25WZXJzaW9uc1t0aGlzLnBhY2thZ2UuYXBwbGljYXRpb25WZXJzaW9ucy5sZW5ndGggLSAxXTtcbiAgICB0cnkge1xuICAgICAgdGhpcy5nYWluc2lnaHRTZXJ2aWNlLnRyaWdnZXJFdmVudChQUk9EVUNUX0VYUEVSSUVOQ0UuQVBQTElDQVRJT05TLkVWRU5UUy5QQUNLQUdFX1ZFUlNJT05TLCB7XG4gICAgICAgIGNvbXBvbmVudDogUFJPRFVDVF9FWFBFUklFTkNFLkFQUExJQ0FUSU9OUy5DT01QT05FTlRTLlBBQ0tBR0VfVkVSU0lPTlMsXG4gICAgICAgIGFjdGlvbjogUFJPRFVDVF9FWFBFUklFTkNFLkFQUExJQ0FUSU9OUy5BQ1RJT05TLlVQTE9BRCxcbiAgICAgICAgcmVzdWx0OiBQUk9EVUNUX0VYUEVSSUVOQ0UuQVBQTElDQVRJT05TLlJFU1VMVFMuU1VDQ0VTUyxcbiAgICAgICAgdXJsOiB0aGlzLkNVUlJFTlRfTE9DQVRJT05cbiAgICAgIH0pO1xuICAgICAgYXdhaXQgdGhpcy5tb2RhbC5jb25maXJtKFxuICAgICAgICBnZXR0ZXh0KCdVcGxvYWQgc3VjY2Vzc2Z1bCcpLFxuICAgICAgICB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChcbiAgICAgICAgICBnZXR0ZXh0KFxuICAgICAgICAgICAgJ0RvIHlvdSB3YW50IHRvIHNldCB2ZXJzaW9uIHt7dmVyc2lvbn19IGFzIHRoZSBsYXRlc3Q/IERlcGxveWluZyBhIG5ldyBhcHAgd2lsbCBhbHdheXMgdXNlIHRoaXMgdmVyc2lvbi4nXG4gICAgICAgICAgKSxcbiAgICAgICAgICB7IHZlcnNpb246IHVwbG9hZGVkVmVyc2lvbi52ZXJzaW9uIH1cbiAgICAgICAgKSxcbiAgICAgICAgU3RhdHVzLlNVQ0NFU1MsXG4gICAgICAgIHtcbiAgICAgICAgICBvazogZ2V0dGV4dCgnU2V0IGFzIGxhdGVzdGB2ZXJzaW9uYCcpLFxuICAgICAgICAgIGNhbmNlbDogZ2V0dGV4dCgnS2VlcCB1bmNoYW5nZWRgdmVyc2lvbmAnKVxuICAgICAgICB9XG4gICAgICApO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIC8vIG9uIGNhbmNlbDogZG8gbm90aGluZ1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBhd2FpdCB0aGlzLnNldFZlcnNpb25Bc0xhdGVzdCh1cGxvYWRlZFZlcnNpb24pO1xuICB9XG5cbiAgcHJpdmF0ZSB0b2dnbGVVcGxvYWRQb3NzaWJpbGl0eSgpIHtcbiAgICB0aGlzLnByZVVwbG9hZENhbGxiYWNrID1cbiAgICAgIHRoaXMuc29ydGVkVmVyc2lvbnMubGVuZ3RoIDwgdGhpcy52ZXJzaW9uc0xpbWl0XG4gICAgICAgID8gbnVsbFxuICAgICAgICA6IHRoaXMuYWNrbm93bGVkZ2VMaW1pdFJlYWNoZWQuYmluZCh0aGlzKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImlubmVyLXNjcm9sbCBzcGxpdC12aWV3X19saXN0XCI+XG4gIDxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlciBzZXBhcmF0b3Igc3RpY2t5LXRvcCBiZy1jb21wb25lbnRcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY2FyZC10aXRsZVwiIHRyYW5zbGF0ZT5WZXJzaW9uczwvZGl2PlxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwiYmctbGV2ZWwtMSBmbGV4LWdyb3dcIj5cbiAgICA8ZGl2IGNsYXNzPVwicC0xNlwiICpuZ0lmPVwiaXNMb2FkaW5nXCI+XG4gICAgICA8Yzh5LWxvYWRpbmc+PC9jOHktbG9hZGluZz5cbiAgICA8L2Rpdj5cbiAgICA8dWwgY2xhc3M9XCJuYXYgYzh5LW5hdi1zdGFja2VkXCIgKm5nSWY9XCIhaXNMb2FkaW5nXCI+XG4gICAgICA8bGlcbiAgICAgICAgY2xhc3M9XCJjOHktc3RhY2tlZC1pdGVtIHAtdC0wIHAtYi0wIHAtci00XCJcbiAgICAgICAgW25nQ2xhc3NdPVwieyBhY3RpdmU6IHNlbGVjdGVkVmVyc2lvbiA9PT0gYXBwbGljYXRpb25WZXJzaW9uLnZlcnNpb24gfVwiXG4gICAgICAgICpuZ0Zvcj1cImxldCBhcHBsaWNhdGlvblZlcnNpb24gb2Ygc29ydGVkVmVyc2lvbnNcIlxuICAgICAgPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJmbGV4LWdyb3cgZC1mbGV4IGEtaS1jZW50ZXIgZ2FwLTQgcC10LTggcC1iLThcIlxuICAgICAgICAgIChjbGljayk9XCJzZWxlY3RWZXJzaW9uKGFwcGxpY2F0aW9uVmVyc2lvbi52ZXJzaW9uKVwiXG4gICAgICAgID5cbiAgICAgICAgICA8aSBjOHlJY29uPVwiYmlnLXBhcmNlbFwiIGNsYXNzPVwiaWNvbi0yMFwiPjwvaT5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtbGFiZWwtc21hbGxcIj5cbiAgICAgICAgICAgIHt7ICdWZXJzaW9uJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtbWVkaXVtXCI+e3sgYXBwbGljYXRpb25WZXJzaW9uLnZlcnNpb24gfX08L3NwYW4+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtdHJ1bmNhdGUgZC1mbGV4IGotYy1lbmQgZmxleC1ncm93IGdhcC00IGZsZXgtd3JhcCBtLWwtYXV0b1wiPlxuICAgICAgICAgICAgPHNwYW4gKm5nRm9yPVwibGV0IHRhZyBvZiBhcHBsaWNhdGlvblZlcnNpb24udGFnc1wiIGNsYXNzPVwibGFiZWwgbGFiZWwtaW5mb1wiPlxuICAgICAgICAgICAgICB7eyB0YWcgfX1cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJkcm9wZG93blwiIGRyb3Bkb3duICpuZ0lmPVwiaGFzQWRtaW5QZXJtaXNzaW9ucyAmJiBpc1BhY2thZ2VPd25lZEJ5Q3VycmVudFRlbmFudFwiPlxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIGNsYXNzPVwiZHJvcGRvd24tdG9nZ2xlIGM4eS1kcm9wZG93blwiXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIHRpdGxlPVwie3sgJ1NldHRpbmdzJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICBkcm9wZG93blRvZ2dsZVxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxpIGM4eUljb249XCJlbGxpcHNpcy12XCI+PC9pPlxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDx1bCAqZHJvcGRvd25NZW51IGNsYXNzPVwiZHJvcGRvd24tbWVudSBkcm9wZG93bi1tZW51LXJpZ2h0XCI+XG4gICAgICAgICAgICA8bGk+XG4gICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICB0aXRsZT1cInt7ICdTZXQgYXMgbGF0ZXN0YHZlcnNpb25gJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInNldFZlcnNpb25Bc0xhdGVzdChhcHBsaWNhdGlvblZlcnNpb24pXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiYXBwbGljYXRpb25WZXJzaW9uLnRhZ3M/LmluY2x1ZGVzKCdsYXRlc3QnKVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8aSBjOHlJY29uPVwiY29sbGVjdFwiIGNsYXNzPVwibS1yLTRcIj48L2k+XG4gICAgICAgICAgICAgICAge3sgJ1NldCBhcyBsYXRlc3RgdmVyc2lvbmAnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgIDxsaT5cbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgIHRpdGxlPVwie3sgJ0Rvd25sb2FkJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImRvd25sb2FkQXJjaGl2ZShhcHBsaWNhdGlvblZlcnNpb24pXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxpIGM4eUljb249XCJkb3dubG9hZFwiIGNsYXNzPVwibS1yLTRcIj48L2k+XG4gICAgICAgICAgICAgICAge3sgJ0Rvd25sb2FkJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICA8bGk+XG4gICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICB0aXRsZT1cInt7ICdEZWxldGUnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlVmVyc2lvblBhY2thZ2UoYXBwbGljYXRpb25WZXJzaW9uLnZlcnNpb24pXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiYXBwbGljYXRpb25WZXJzaW9uLnRhZ3M/LmluY2x1ZGVzKCdsYXRlc3QnKVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8aSBjOHlJY29uPVwidHJhc2hcIiBjbGFzcz1cIm0tci00XCI+PC9pPlxuICAgICAgICAgICAgICAgIHt7ICdEZWxldGUnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICA8L3VsPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbGk+XG4gICAgPC91bD5cbiAgPC9kaXY+XG5cbiAgPGRpdlxuICAgIGNsYXNzPVwiY2FyZC1mb290ZXIgc2VwYXJhdG9yIHN0aWNreS1ib3R0b21cIlxuICAgICpuZ0lmPVwiIWlzTG9hZGluZyAmJiBpc1BhY2thZ2VPd25lZEJ5Q3VycmVudFRlbmFudFwiXG4gID5cbiAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cCBtLWItMFwiPlxuICAgICAgPGxhYmVsIHRyYW5zbGF0ZT5VcGxvYWQgYSBuZXcgdmVyc2lvbjwvbGFiZWw+XG4gICAgICA8Yzh5LXVwbG9hZC1hcmNoaXZlXG4gICAgICAgIFsoYXBwbGljYXRpb24pXT1cInBhY2thZ2VcIlxuICAgICAgICBbdXBsb2FkTmV3VmVyc2lvbl09XCJ0cnVlXCJcbiAgICAgICAgKHJlZnJlc2gpPVwicGFja2FnZVZlcnNpb25VcGxvYWRlZCgpXCJcbiAgICAgICAgW3ByZVVwbG9hZENhbGxiYWNrXT1cInByZVVwbG9hZENhbGxiYWNrXCJcbiAgICAgID48L2M4eS11cGxvYWQtYXJjaGl2ZT5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
170
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFja2FnZS12ZXJzaW9ucy1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2Vjb3N5c3RlbS9wYWNrYWdlcy9wYWNrYWdlLXZlcnNpb25zL3BhY2thZ2UtdmVyc2lvbnMtbGlzdC9wYWNrYWdlLXZlcnNpb25zLWxpc3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vZWNvc3lzdGVtL3BhY2thZ2VzL3BhY2thZ2UtdmVyc2lvbnMvcGFja2FnZS12ZXJzaW9ucy1saXN0L3BhY2thZ2UtdmVyc2lvbnMtbGlzdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDeEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRWpELE9BQU8sRUFDTCxZQUFZLEVBQ1osZ0JBQWdCLEVBQ2hCLFlBQVksRUFDWixjQUFjLEVBQ2QsV0FBVyxFQUNYLGNBQWMsRUFDZCxNQUFNLEVBQ04sT0FBTyxFQUNSLE1BQU0scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxFQUFFLGdCQUFnQixFQUFFLGtCQUFrQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDNUYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7Ozs7Ozs7O0FBRXZELE1BQU0sc0JBQXNCLEdBQUcsRUFBRSxDQUFDO0FBTWxDLE1BQU0sT0FBTyw0QkFBNEI7SUFjdkMsWUFDVSxjQUE4QixFQUM5QixjQUE4QixFQUM5QixnQkFBa0MsRUFDbEMsZ0JBQWtDLEVBQ2xDLEtBQW1CLEVBQ25CLFlBQTBCLEVBQzFCLGNBQThCLEVBQzlCLFdBQXdCLEVBQ3hCLGdCQUFrQztRQVJsQyxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzlCLHFC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SSxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQzVCLE9BQU87U0FDUjtRQUNELE1BQU0sSUFBSSxDQUFDLGtCQUFrQixDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQ2pELENBQUM7SUFFTyx1QkFBdUI7UUFDN0IsSUFBSSxDQUFDLGlCQUFpQjtZQUNwQixJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsYUFBYTtnQkFDN0MsQ0FBQyxDQUFDLElBQUk7Z0JBQ04sQ0FBQyxDQUFDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDaEQsQ0FBQzs7eUhBbk1VLDRCQUE0Qjs2R0FBNUIsNEJBQTRCLGtIQ3RCekMsKzdHQTZGQTsyRkR2RWEsNEJBQTRCO2tCQUp4QyxTQUFTOytCQUNFLDJCQUEyQjs0VUFlM0IsZUFBZTtzQkFBeEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgSUFwcGxpY2F0aW9uLCBJQXBwbGljYXRpb25WZXJzaW9uIH0gZnJvbSAnQGM4eS9jbGllbnQnO1xuaW1wb3J0IHtcbiAgQWxlcnRTZXJ2aWNlLFxuICBHYWluc2lnaHRTZXJ2aWNlLFxuICBNb2RhbFNlcnZpY2UsXG4gIE9wdGlvbnNTZXJ2aWNlLFxuICBQZXJtaXNzaW9ucyxcbiAgUGx1Z2luc1NlcnZpY2UsXG4gIFN0YXR1cyxcbiAgZ2V0dGV4dFxufSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzJztcbmltcG9ydCB7IEVjb3N5c3RlbVNlcnZpY2UsIFBST0RVQ1RfRVhQRVJJRU5DRSB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMvZWNvc3lzdGVtL3NoYXJlZCc7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5cbmNvbnN0IERFRkFVTFRfVkVSU0lPTlNfTElNSVQgPSAyMDtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYzh5LXBhY2thZ2UtdmVyc2lvbnMtbGlzdCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9wYWNrYWdlLXZlcnNpb25zLWxpc3QuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIFBhY2thZ2VWZXJzaW9uc0xpc3RDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBDVVJSRU5UX0xPQ0FUSU9OID0gbG9jYXRpb24uaHJlZjtcblxuICB2ZXJzaW9uc0xpbWl0OiBudW1iZXI7XG4gIGlzTG9hZGluZyA9IGZhbHNlO1xuICBwYWNrYWdlOiBJQXBwbGljYXRpb247XG4gIHNvcnRlZFZlcnNpb25zOiBJQXBwbGljYXRpb25WZXJzaW9uW107XG4gIHNlbGVjdGVkVmVyc2lvbjogc3RyaW5nO1xuICBwcmVVcGxvYWRDYWxsYmFjazogKCkgPT4gUHJvbWlzZTxhbnk+O1xuICBoYXNBZG1pblBlcm1pc3Npb25zID0gZmFsc2U7XG4gIGlzUGFja2FnZU93bmVkQnlDdXJyZW50VGVuYW50ID0gZmFsc2U7XG5cbiAgQE91dHB1dCgpIG9uVmVyc2lvblNlbGVjdCA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nIHwgbnVsbD4oKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGFjdGl2YXRlZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICBwcml2YXRlIHBsdWdpbnNTZXJ2aWNlOiBQbHVnaW5zU2VydmljZSxcbiAgICBwcml2YXRlIGVjb3N5c3RlbVNlcnZpY2U6IEVjb3N5c3RlbVNlcnZpY2UsXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgbW9kYWw6IE1vZGFsU2VydmljZSxcbiAgICBwcml2YXRlIGFsZXJ0U2VydmljZTogQWxlcnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgb3B0aW9uc1NlcnZpY2U6IE9wdGlvbnNTZXJ2aWNlLFxuICAgIHByaXZhdGUgcGVybWlzc2lvbnM6IFBlcm1pc3Npb25zLFxuICAgIHByaXZhdGUgZ2FpbnNpZ2h0U2VydmljZTogR2FpbnNpZ2h0U2VydmljZVxuICApIHt9XG5cbiAgYXN5bmMgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5pc0xvYWRpbmcgPSB0cnVlO1xuICAgIHRoaXMuaGFzQWRtaW5QZXJtaXNzaW9ucyA9IHRoaXMucGVybWlzc2lvbnMuaGFzUm9sZShcbiAgICAgIFBlcm1pc3Npb25zLlJPTEVfQVBQTElDQVRJT05fTUFOQUdFTUVOVF9BRE1JTlxuICAgICk7XG4gICAgdGhpcy5wYWNrYWdlID0gdGhpcy5hY3RpdmF0ZWRSb3V0ZT8uc25hcHNob3Q/LnBhcmVudD8uZGF0YT8uY29udGV4dERhdGE7XG4gICAgdGhpcy5pc1BhY2thZ2VPd25lZEJ5Q3VycmVudFRlbmFudCA9IHRoaXMuZWNvc3lzdGVtU2VydmljZS5pc093bmVyKHRoaXMucGFja2FnZSk7XG4gICAgdGhpcy52ZXJzaW9uc0xpbWl0ID0gKGF3YWl0IHRoaXMub3B0aW9uc1NlcnZpY2UuZ2V0U3lzdGVtT3B0aW9uKFxuICAgICAgJ2FwcGxpY2F0aW9uJyxcbiAgICAgICd2ZXJzaW9ucy5saW1pdCcsXG4gICAgICBERUZBVUxUX1ZFUlNJT05TX0xJTUlUXG4gICAgKSkgYXMgbnVtYmVyO1xuICAgIHRoaXMuc29ydFZlcnNpb25zKCk7XG4gICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcbiAgfVxuXG4gIGFzeW5jIGRvd25sb2FkQXJjaGl2ZShhcHBWZXJzaW9uOiBJQXBwbGljYXRpb25WZXJzaW9uKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdGhpcy5nYWluc2lnaHRTZXJ2aWNlLnRyaWdnZXJFdmVudChQUk9EVUNUX0VYUEVSSUVOQ0UuQVBQTElDQVRJT05TLkVWRU5UUy5QQUNLQUdFX1ZFUlNJT05TLCB7XG4gICAgICBjb21wb25lbnQ6IFBST0RVQ1RfRVhQRVJJRU5DRS5BUFBMSUNBVElPTlMuQ09NUE9ORU5UUy5QQUNLQUdFX1ZFUlNJT05TLFxuICAgICAgYWN0aW9uOiBQUk9EVUNUX0VYUEVSSUVOQ0UuQVBQTElDQVRJT05TLkFDVElPTlMuRE9XTkxPQUQsXG4gICAgICB1cmw6IHRoaXMuQ1VSUkVOVF9MT0NBVElPTlxuICAgIH0pO1xuICAgIGNvbnN0IGFyY2hpdmVNTyA9IGF3YWl0IHRoaXMuZWNvc3lzdGVtU2VydmljZS5nZXRBcmNoaXZlTWFuYWdlZE9iamVjdChhcHBWZXJzaW9uLmJpbmFyeUlkKTtcbiAgICBhd2FpdCB0aGlzLmVjb3N5c3RlbVNlcnZpY2UuZG93bmxvYWRBcmNoaXZlKHRoaXMucGFja2FnZSwge1xuICAgICAgaWQ6IGFwcFZlcnNpb24uYmluYXJ5SWQsXG4gICAgICBuYW1lOiBhcmNoaXZlTU8ubmFtZVxuICAgIH0pO1xuICB9XG5cbiAgcGFja2FnZVZlcnNpb25VcGxvYWRlZCgpIHtcbiAgICB0aGlzLmFjdGl2YXRlZFJvdXRlLnNuYXBzaG90LnBhcmVudC5kYXRhLmNvbnRleHREYXRhID0gdGhpcy5wYWNrYWdlO1xuICAgIHRoaXMuc29ydFZlcnNpb25zKCk7XG4gICAgdGhpcy5zZXRVcGxvYWRlZFZlcnNpb25Bc0xhdGVzdCgpO1xuICB9XG5cbiAgc2VsZWN0VmVyc2lvbih2ZXJzaW9uOiBzdHJpbmcgfCBudWxsKTogdm9pZCB7XG4gICAgdGhpcy5zZWxlY3RlZFZlcnNpb24gPSB2ZXJzaW9uO1xuICAgIHRoaXMub25WZXJzaW9uU2VsZWN0LmVtaXQodmVyc2lvbik7XG4gIH1cblxuICBhc3luYyByZW1vdmVWZXJzaW9uUGFja2FnZSh2ZXJzaW9uOiBzdHJpbmcpIHtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgdGhpcy5lY29zeXN0ZW1TZXJ2aWNlLmRlbGV0ZVBhY2thZ2VWZXJzaW9uKHRoaXMucGFja2FnZSwgeyB2ZXJzaW9uIH0pO1xuICAgICAgdGhpcy5hbGVydFNlcnZpY2Uuc3VjY2VzcyhcbiAgICAgICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoZ2V0dGV4dCgnUGFja2FnZSB2ZXJzaW9uIHt7dmVyc2lvbn19IGhhcyBiZWVuIHJlbW92ZWQnKSwge1xuICAgICAgICAgIHZlcnNpb25cbiAgICAgICAgfSlcbiAgICAgICk7XG4gICAgICB0aGlzLmdhaW5zaWdodFNlcnZpY2UudHJpZ2dlckV2ZW50KFBST0RVQ1RfRVhQRVJJRU5DRS5BUFBMSUNBVElPTlMuRVZFTlRTLlBBQ0tBR0VfVkVSU0lPTlMsIHtcbiAgICAgICAgY29tcG9uZW50OiBQUk9EVUNUX0VYUEVSSUVOQ0UuQVBQTElDQVRJT05TLkNPTVBPTkVOVFMuUEFDS0FHRV9WRVJTSU9OUyxcbiAgICAgICAgYWN0aW9uOiBQUk9EVUNUX0VYUEVSSUVOQ0UuQVBQTElDQVRJT05TLkFDVElPTlMuREVMRVRFLFxuICAgICAgICByZXN1bHQ6IFBST0RVQ1RfRVhQRVJJRU5DRS5BUFBMSUNBVElPTlMuUkVTVUxUUy5TVUNDRVNTLFxuICAgICAgICB1cmw6IHRoaXMuQ1VSUkVOVF9MT0NBVElPTlxuICAgICAgfSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhpcy5hbGVydFNlcnZpY2UuYWRkU2VydmVyRmFpbHVyZShlKTtcbiAgICAgIHRoaXMuZ2FpbnNpZ2h0U2VydmljZS50cmlnZ2VyRXZlbnQoUFJPRFVDVF9FWFBFUklFTkNFLkFQUExJQ0FUSU9OUy5FVkVOVFMuUEFDS0FHRV9WRVJTSU9OUywge1xuICAgICAgICBjb21wb25lbnQ6IFBST0RVQ1RfRVhQRVJJRU5DRS5BUFBMSUNBVElPTlMuQ09NUE9ORU5UUy5QQUNLQUdFX1ZFUlNJT05TLFxuICAgICAgICBhY3Rpb246IFBST0RVQ1RfRVhQRVJJRU5DRS5BUFBMSUNBVElPTlMuQUNUSU9OUy5ERUxFVEUsXG4gICAgICAgIHJlc3VsdDogUFJPRFVDVF9FWFBFUklFTkNFLkFQUExJQ0FUSU9OUy5SRVNVTFRTLlNFUlZFUl9GQUlMVVJFLFxuICAgICAgICB1cmw6IHRoaXMuQ1VSUkVOVF9MT0NBVElPTlxuICAgICAgfSk7XG4gICAgfVxuICAgIGlmICh2ZXJzaW9uID09PSB0aGlzLnNlbGVjdGVkVmVyc2lvbikge1xuICAgICAgdGhpcy5zZWxlY3RWZXJzaW9uKG51bGwpO1xuICAgIH1cbiAgICBhd2FpdCB0aGlzLnJlZnJlc2hQYWNrYWdlKCk7XG4gIH1cblxuICBhc3luYyBzZXRWZXJzaW9uQXNMYXRlc3QoYXBwVmVyc2lvbjogSUFwcGxpY2F0aW9uVmVyc2lvbikge1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCB0aGlzLmVjb3N5c3RlbVNlcnZpY2Uuc2V0UGFja2FnZVZlcnNpb25UYWcodGhpcy5wYWNrYWdlLCBhcHBWZXJzaW9uLnZlcnNpb24sIFtcbiAgICAgICAgLi4uYXBwVmVyc2lvbi50YWdzLFxuICAgICAgICAnbGF0ZXN0J1xuICAgICAgXSk7XG5cbiAgICAgIC8vIFRPRE8gYWRkZWQgaXQgZHVlIHRvOiBodHRwczovL2N1bXVsb2NpdHkuYXRsYXNzaWFuLm5ldC9icm93c2UvTVRNLTQ4NTUzXG4gICAgICAvLyBSZW1vdmUgaXQgd2hlbiBCRSBmaXhlcyBpc3N1ZXMgd2l0aCBhY3RpdmVWZXJzaW9uLlxuICAgICAgYXdhaXQgdGhpcy5lY29zeXN0ZW1TZXJ2aWNlLnNldEFwcEFjdGl2ZVZlcnNpb24odGhpcy5wYWNrYWdlLCBhcHBWZXJzaW9uLmJpbmFyeUlkKTtcbiAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLnN1Y2Nlc3MoZ2V0dGV4dCgnVGFnIGhhcyBiZWVuIHNldC4nKSk7XG4gICAgICB0aGlzLmdhaW5zaWdodFNlcnZpY2UudHJpZ2dlckV2ZW50KFBST0RVQ1RfRVhQRVJJRU5DRS5BUFBMSUNBVElPTlMuRVZFTlRTLlBBQ0tBR0VfVkVSU0lPTlMsIHtcbiAgICAgICAgY29tcG9uZW50OiBQUk9EVUNUX0VYUEVSSUVOQ0UuQVBQTElDQVRJT05TLkNPTVBPTkVOVFMuUEFDS0FHRV9WRVJTSU9OUyxcbiAgICAgICAgYWN0aW9uOiBQUk9EVUNUX0VYUEVSSUVOQ0UuQVBQTElDQVRJT05TLkFDVElPTlMuU0VUX0FTX0xBVEVTVCxcbiAgICAgICAgcmVzdWx0OiBQUk9EVUNUX0VYUEVSSUVOQ0UuQVBQTElDQVRJT05TLlJFU1VMVFMuU1VDQ0VTUyxcbiAgICAgICAgdXJsOiB0aGlzLkNVUlJFTlRfTE9DQVRJT05cbiAgICAgIH0pO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLmFkZFNlcnZlckZhaWx1cmUoZSk7XG4gICAgICB0aGlzLmdhaW5zaWdodFNlcnZpY2UudHJpZ2dlckV2ZW50KFBST0RVQ1RfRVhQRVJJRU5DRS5BUFBMSUNBVElPTlMuRVZFTlRTLlBBQ0tBR0VfVkVSU0lPTlMsIHtcbiAgICAgICAgY29tcG9uZW50OiBQUk9EVUNUX0VYUEVSSUVOQ0UuQVBQTElDQVRJT05TLkNPTVBPTkVOVFMuUEFDS0FHRV9WRVJTSU9OUyxcbiAgICAgICAgYWN0aW9uOiBQUk9EVUNUX0VYUEVSSUVOQ0UuQVBQTElDQVRJT05TLkFDVElPTlMuU0VUX0FTX0xBVEVTVCxcbiAgICAgICAgcmVzdWx0OiBQUk9EVUNUX0VYUEVSSUVOQ0UuQVBQTElDQVRJT05TLlJFU1VMVFMuU0VSVkVSX0ZBSUxVUkUsXG4gICAgICAgIHVybDogdGhpcy5DVVJSRU5UX0xPQ0FUSU9OXG4gICAgICB9KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgYXdhaXQgdGhpcy5yZWZyZXNoUGFja2FnZSgpO1xuICB9XG5cbiAgYXN5bmMgYWNrbm93bGVkZ2VMaW1pdFJlYWNoZWQoKSB7XG4gICAgYXdhaXQgdGhpcy5tb2RhbC5hY2tub3dsZWRnZShcbiAgICAgIGdldHRleHQoJ1BhY2thZ2UgbGltaXQgZXhjZWVkZWQnKSxcbiAgICAgIHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KFxuICAgICAgICBnZXR0ZXh0KFxuICAgICAgICAgICdZb3UgaGF2ZSByZWFjaGVkIHRoZSBtYXhpbXVtIG51bWJlciBvZiB7eyB2ZXJzaW9uc0xpbWl0IH19IHBhY2thZ2UgdmVyc2lvbnMuIFRvIGFkZCBhbm90aGVyIHZlcnNpb24sIGZpcnN0IGRlbGV0ZSBvbmUgZnJvbSB0aGUgbGlzdC4nXG4gICAgICAgICksXG4gICAgICAgIHsgdmVyc2lvbnNMaW1pdDogdGhpcy52ZXJzaW9uc0xpbWl0IH1cbiAgICAgICksXG4gICAgICBTdGF0dXMuSU5GTyxcbiAgICAgIGdldHRleHQoJ0Nsb3NlJylcbiAgICApO1xuICAgIHRocm93IHVuZGVmaW5lZDtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgcmVmcmVzaFBhY2thZ2UoKSB7XG4gICAgdGhpcy5pc0xvYWRpbmcgPSB0cnVlO1xuICAgIHRoaXMucGFja2FnZSA9IGF3YWl0IHRoaXMuZWNvc3lzdGVtU2VydmljZS5nZXRBcHBsaWNhdGlvbih0aGlzLnBhY2thZ2UuaWQpO1xuICAgIHRoaXMuYWN0aXZhdGVkUm91dGUuc25hcHNob3QucGFyZW50LmRhdGEuY29udGV4dERhdGEgPSB0aGlzLnBhY2thZ2U7XG4gICAgdGhpcy5zb3J0VmVyc2lvbnMoKTtcbiAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xuICB9XG5cbiAgcHJpdmF0ZSBzb3J0VmVyc2lvbnMoKSB7XG4gICAgdGhpcy5zb3J0ZWRWZXJzaW9ucyA9IHRoaXMucGx1Z2luc1NlcnZpY2Uuc29ydFZlcnNpb25zKFxuICAgICAge1xuICAgICAgICBsaXN0OiB0aGlzLnBhY2thZ2UuYXBwbGljYXRpb25WZXJzaW9ucyxcbiAgICAgICAgcGF0aDogWyd2ZXJzaW9uJ11cbiAgICAgIH0sXG4gICAgICAnZGVzYydcbiAgICApO1xuICAgIHRoaXMudG9nZ2xlVXBsb2FkUG9zc2liaWxpdHkoKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgc2V0VXBsb2FkZWRWZXJzaW9uQXNMYXRlc3QoKSB7XG4gICAgY29uc3QgdXBsb2FkZWRWZXJzaW9uID1cbiAgICAgIHRoaXMucGFja2FnZS5hcHBsaWNhdGlvblZlcnNpb25zW3RoaXMucGFja2FnZS5hcHBsaWNhdGlvblZlcnNpb25zLmxlbmd0aCAtIDFdO1xuICAgIHRyeSB7XG4gICAgICB0aGlzLmdhaW5zaWdodFNlcnZpY2UudHJpZ2dlckV2ZW50KFBST0RVQ1RfRVhQRVJJRU5DRS5BUFBMSUNBVElPTlMuRVZFTlRTLlBBQ0tBR0VfVkVSU0lPTlMsIHtcbiAgICAgICAgY29tcG9uZW50OiBQUk9EVUNUX0VYUEVSSUVOQ0UuQVBQTElDQVRJT05TLkNPTVBPTkVOVFMuUEFDS0FHRV9WRVJTSU9OUyxcbiAgICAgICAgYWN0aW9uOiBQUk9EVUNUX0VYUEVSSUVOQ0UuQVBQTElDQVRJT05TLkFDVElPTlMuVVBMT0FELFxuICAgICAgICByZXN1bHQ6IFBST0RVQ1RfRVhQRVJJRU5DRS5BUFBMSUNBVElPTlMuUkVTVUxUUy5TVUNDRVNTLFxuICAgICAgICB1cmw6IHRoaXMuQ1VSUkVOVF9MT0NBVElPTlxuICAgICAgfSk7XG4gICAgICBhd2FpdCB0aGlzLm1vZGFsLmNvbmZpcm0oXG4gICAgICAgIGdldHRleHQoJ1VwbG9hZCBzdWNjZXNzZnVsJyksXG4gICAgICAgIHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KFxuICAgICAgICAgIGdldHRleHQoXG4gICAgICAgICAgICAnRG8geW91IHdhbnQgdG8gc2V0IHZlcnNpb24ge3t2ZXJzaW9ufX0gYXMgdGhlIGxhdGVzdD8gRGVwbG95aW5nIGEgbmV3IGFwcCB3aWxsIGFsd2F5cyB1c2UgdGhpcyB2ZXJzaW9uLidcbiAgICAgICAgICApLFxuICAgICAgICAgIHsgdmVyc2lvbjogdXBsb2FkZWRWZXJzaW9uLnZlcnNpb24gfVxuICAgICAgICApLFxuICAgICAgICBTdGF0dXMuU1VDQ0VTUyxcbiAgICAgICAge1xuICAgICAgICAgIG9rOiBnZXR0ZXh0KCdTZXQgYXMgbGF0ZXN0YHZlcnNpb25gJyksXG4gICAgICAgICAgY2FuY2VsOiBnZXR0ZXh0KCdLZWVwIHVuY2hhbmdlZGB2ZXJzaW9uYCcpXG4gICAgICAgIH1cbiAgICAgICk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgYXdhaXQgdGhpcy5yZWZyZXNoUGFja2FnZSgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBhd2FpdCB0aGlzLnNldFZlcnNpb25Bc0xhdGVzdCh1cGxvYWRlZFZlcnNpb24pO1xuICB9XG5cbiAgcHJpdmF0ZSB0b2dnbGVVcGxvYWRQb3NzaWJpbGl0eSgpIHtcbiAgICB0aGlzLnByZVVwbG9hZENhbGxiYWNrID1cbiAgICAgIHRoaXMuc29ydGVkVmVyc2lvbnMubGVuZ3RoIDwgdGhpcy52ZXJzaW9uc0xpbWl0XG4gICAgICAgID8gbnVsbFxuICAgICAgICA6IHRoaXMuYWNrbm93bGVkZ2VMaW1pdFJlYWNoZWQuYmluZCh0aGlzKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImlubmVyLXNjcm9sbCBzcGxpdC12aWV3X19saXN0XCI+XG4gIDxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlciBzZXBhcmF0b3Igc3RpY2t5LXRvcCBiZy1jb21wb25lbnRcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY2FyZC10aXRsZVwiIHRyYW5zbGF0ZT5WZXJzaW9uczwvZGl2PlxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwiYmctbGV2ZWwtMSBmbGV4LWdyb3dcIj5cbiAgICA8ZGl2IGNsYXNzPVwicC0xNlwiICpuZ0lmPVwiaXNMb2FkaW5nXCI+XG4gICAgICA8Yzh5LWxvYWRpbmc+PC9jOHktbG9hZGluZz5cbiAgICA8L2Rpdj5cbiAgICA8dWwgY2xhc3M9XCJuYXYgYzh5LW5hdi1zdGFja2VkXCIgKm5nSWY9XCIhaXNMb2FkaW5nXCI+XG4gICAgICA8bGlcbiAgICAgICAgY2xhc3M9XCJjOHktc3RhY2tlZC1pdGVtIHAtdC0wIHAtYi0wIHAtci00XCJcbiAgICAgICAgW25nQ2xhc3NdPVwieyBhY3RpdmU6IHNlbGVjdGVkVmVyc2lvbiA9PT0gYXBwbGljYXRpb25WZXJzaW9uLnZlcnNpb24gfVwiXG4gICAgICAgICpuZ0Zvcj1cImxldCBhcHBsaWNhdGlvblZlcnNpb24gb2Ygc29ydGVkVmVyc2lvbnNcIlxuICAgICAgPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJmbGV4LWdyb3cgZC1mbGV4IGEtaS1jZW50ZXIgZ2FwLTQgcC10LTggcC1iLThcIlxuICAgICAgICAgIChjbGljayk9XCJzZWxlY3RWZXJzaW9uKGFwcGxpY2F0aW9uVmVyc2lvbi52ZXJzaW9uKVwiXG4gICAgICAgID5cbiAgICAgICAgICA8aSBjOHlJY29uPVwiYmlnLXBhcmNlbFwiIGNsYXNzPVwiaWNvbi0yMFwiPjwvaT5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtbGFiZWwtc21hbGxcIj5cbiAgICAgICAgICAgIHt7ICdWZXJzaW9uJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtbWVkaXVtXCI+e3sgYXBwbGljYXRpb25WZXJzaW9uLnZlcnNpb24gfX08L3NwYW4+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtdHJ1bmNhdGUgZC1mbGV4IGotYy1lbmQgZmxleC1ncm93IGdhcC00IGZsZXgtd3JhcCBtLWwtYXV0b1wiPlxuICAgICAgICAgICAgPHNwYW4gKm5nRm9yPVwibGV0IHRhZyBvZiBhcHBsaWNhdGlvblZlcnNpb24udGFnc1wiIGNsYXNzPVwibGFiZWwgbGFiZWwtaW5mb1wiPlxuICAgICAgICAgICAgICB7eyB0YWcgfX1cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJkcm9wZG93blwiIGRyb3Bkb3duICpuZ0lmPVwiaGFzQWRtaW5QZXJtaXNzaW9ucyAmJiBpc1BhY2thZ2VPd25lZEJ5Q3VycmVudFRlbmFudFwiPlxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIGNsYXNzPVwiZHJvcGRvd24tdG9nZ2xlIGM4eS1kcm9wZG93blwiXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIHRpdGxlPVwie3sgJ1NldHRpbmdzJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICBkcm9wZG93blRvZ2dsZVxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxpIGM4eUljb249XCJlbGxpcHNpcy12XCI+PC9pPlxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDx1bCAqZHJvcGRvd25NZW51IGNsYXNzPVwiZHJvcGRvd24tbWVudSBkcm9wZG93bi1tZW51LXJpZ2h0XCI+XG4gICAgICAgICAgICA8bGk+XG4gICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICB0aXRsZT1cInt7ICdTZXQgYXMgbGF0ZXN0YHZlcnNpb25gJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInNldFZlcnNpb25Bc0xhdGVzdChhcHBsaWNhdGlvblZlcnNpb24pXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiYXBwbGljYXRpb25WZXJzaW9uLnRhZ3M/LmluY2x1ZGVzKCdsYXRlc3QnKVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8aSBjOHlJY29uPVwiY29sbGVjdFwiIGNsYXNzPVwibS1yLTRcIj48L2k+XG4gICAgICAgICAgICAgICAge3sgJ1NldCBhcyBsYXRlc3RgdmVyc2lvbmAnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgIDxsaT5cbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgIHRpdGxlPVwie3sgJ0Rvd25sb2FkJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImRvd25sb2FkQXJjaGl2ZShhcHBsaWNhdGlvblZlcnNpb24pXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxpIGM4eUljb249XCJkb3dubG9hZFwiIGNsYXNzPVwibS1yLTRcIj48L2k+XG4gICAgICAgICAgICAgICAge3sgJ0Rvd25sb2FkJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICA8bGk+XG4gICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICB0aXRsZT1cInt7ICdEZWxldGUnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlVmVyc2lvblBhY2thZ2UoYXBwbGljYXRpb25WZXJzaW9uLnZlcnNpb24pXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiYXBwbGljYXRpb25WZXJzaW9uLnRhZ3M/LmluY2x1ZGVzKCdsYXRlc3QnKVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8aSBjOHlJY29uPVwidHJhc2hcIiBjbGFzcz1cIm0tci00XCI+PC9pPlxuICAgICAgICAgICAgICAgIHt7ICdEZWxldGUnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICA8L3VsPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbGk+XG4gICAgPC91bD5cbiAgPC9kaXY+XG5cbiAgPGRpdlxuICAgIGNsYXNzPVwiY2FyZC1mb290ZXIgc2VwYXJhdG9yIHN0aWNreS1ib3R0b21cIlxuICAgICpuZ0lmPVwiIWlzTG9hZGluZyAmJiBpc1BhY2thZ2VPd25lZEJ5Q3VycmVudFRlbmFudFwiXG4gID5cbiAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cCBtLWItMFwiPlxuICAgICAgPGxhYmVsIHRyYW5zbGF0ZT5VcGxvYWQgYSBuZXcgdmVyc2lvbjwvbGFiZWw+XG4gICAgICA8Yzh5LXVwbG9hZC1hcmNoaXZlXG4gICAgICAgIFsoYXBwbGljYXRpb24pXT1cInBhY2thZ2VcIlxuICAgICAgICBbdXBsb2FkTmV3VmVyc2lvbl09XCJ0cnVlXCJcbiAgICAgICAgKHJlZnJlc2gpPVwicGFja2FnZVZlcnNpb25VcGxvYWRlZCgpXCJcbiAgICAgICAgW3ByZVVwbG9hZENhbGxiYWNrXT1cInByZVVwbG9hZENhbGxiYWNrXCJcbiAgICAgID48L2M4eS11cGxvYWQtYXJjaGl2ZT5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==