@idea-ionic/auth 7.2.4 → 7.2.7

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.
@@ -1,12 +1,8 @@
1
- import { Injectable } from '@angular/core';
1
+ import { Injectable, inject } from '@angular/core';
2
2
  import { AuthenticationDetails, CognitoUser, CognitoUserAttribute, CognitoUserPool, CognitoRefreshToken } from 'amazon-cognito-identity-js';
3
- import { environment as env } from '@env';
3
+ import { IDEAEnvironment } from '@idea-ionic/common';
4
4
  import * as i0 from "@angular/core";
5
5
  import * as i1 from "@idea-ionic/common";
6
- /**
7
- * The name of the Cognito's user attribute which contains the key of the last device to login in this project.
8
- */
9
- const DEVICE_KEY_ATTRIBUTE = 'custom:'.concat(env.idea.project);
10
6
  /**
11
7
  * Cognito wrapper to manage the authentication flow.
12
8
  *
@@ -15,12 +11,14 @@ const DEVICE_KEY_ATTRIBUTE = 'custom:'.concat(env.idea.project);
15
11
  export class IDEAAuthService {
16
12
  constructor(storage) {
17
13
  this.storage = storage;
18
- this.mfaProjectName = env.idea.app.title ?? env.idea.project;
19
- this.passwordPolicy = env.idea.auth.passwordPolicy;
14
+ this.env = inject(IDEAEnvironment);
15
+ this.deviceKeyAttribute = 'custom:'.concat(this.env.idea.project);
20
16
  this.userPool = new CognitoUserPool({
21
- UserPoolId: env.aws.cognito.userPoolId,
22
- ClientId: env.aws.cognito.userPoolClientId
17
+ UserPoolId: this.env.aws.cognito.userPoolId,
18
+ ClientId: this.env.aws.cognito.userPoolClientId
23
19
  });
20
+ this.mfaProjectName = this.env.idea.auth.title ?? this.env.idea.project;
21
+ this.passwordPolicy = this.env.idea.auth.passwordPolicy;
24
22
  }
25
23
  /**
26
24
  * Prepare the necessary structure to get authorized in Cognito.
@@ -47,7 +45,7 @@ export class IDEAAuthService {
47
45
  return new Promise((resolve, reject) => {
48
46
  const user = this.prepareCognitoUser(username);
49
47
  user.authenticateUser(this.prepareAuthDetails(username, password), {
50
- onSuccess: () => resolve(env.idea.auth.forceLoginWithMFA ? LoginOutcomeActions.MFA_SETUP : LoginOutcomeActions.NONE),
48
+ onSuccess: () => resolve(this.env.idea.auth.forceLoginWithMFA ? LoginOutcomeActions.MFA_SETUP : LoginOutcomeActions.NONE),
51
49
  onFailure: (err) => reject(err),
52
50
  newPasswordRequired: () => {
53
51
  this.challengeUsername = username;
@@ -164,7 +162,7 @@ export class IDEAAuthService {
164
162
  if (err)
165
163
  return resolve();
166
164
  // if a reference to the device was saved, forget it
167
- if (env.idea.auth.singleSimultaneousSession)
165
+ if (this.env.idea.auth.singleSimultaneousSession)
168
166
  await this.setCurrentDeviceForProject(null);
169
167
  // sign-out from the pool (terminate the current session or all the sessions)
170
168
  if (options.global)
@@ -292,7 +290,7 @@ export class IDEAAuthService {
292
290
  if (err)
293
291
  return reject(err);
294
292
  const isMFAEnabled = !!(data.UserMFASettingList && data.UserMFASettingList.includes('SOFTWARE_TOKEN_MFA'));
295
- if (!isMFAEnabled && env.idea.auth.forceLoginWithMFA)
293
+ if (!isMFAEnabled && this.env.idea.auth.forceLoginWithMFA)
296
294
  return reject(new Error(LoginOutcomeActions.MFA_SETUP));
297
295
  user.getUserAttributes((e, attributes) => {
298
296
  if (e)
@@ -362,7 +360,7 @@ export class IDEAAuthService {
362
360
  if (isRobot)
363
361
  return callback(new Error('ROBOT_USER'));
364
362
  // in case the project limits each account to only one simultaneous session, run a check
365
- if (env.idea.auth.singleSimultaneousSession)
363
+ if (this.env.idea.auth.singleSimultaneousSession)
366
364
  return this.checkForSimultaneousSessions(userDetails, callback);
367
365
  // otherwise, we're done
368
366
  callback();
@@ -379,7 +377,7 @@ export class IDEAAuthService {
379
377
  await this.storage.set('AuthDeviceKey', currentDeviceKey);
380
378
  }
381
379
  // check whether the last device to sign-into this project (if any) is the current one
382
- const lastDeviceToSignIntoThisProject = userDetails[DEVICE_KEY_ATTRIBUTE];
380
+ const lastDeviceToSignIntoThisProject = userDetails[this.deviceKeyAttribute];
383
381
  // if it's the first user's device to sign-in, save the reference in Cognito and resolve
384
382
  if (!lastDeviceToSignIntoThisProject) {
385
383
  this.setCurrentDeviceForProject(currentDeviceKey)
@@ -399,7 +397,7 @@ export class IDEAAuthService {
399
397
  setCurrentDeviceForProject(deviceKey) {
400
398
  const attributes = {};
401
399
  // note: an empty string will remove the attribute from Cognito
402
- attributes[DEVICE_KEY_ATTRIBUTE] = deviceKey || '';
400
+ attributes[this.deviceKeyAttribute] = deviceKey || '';
403
401
  return this.updateUserAttributes(attributes);
404
402
  }
405
403
  /**
@@ -476,4 +474,4 @@ export var LoginOutcomeActions;
476
474
  LoginOutcomeActions["MFA_CHALLENGE"] = "mfaChallenge";
477
475
  LoginOutcomeActions["MFA_SETUP"] = "mfaSetup";
478
476
  })(LoginOutcomeActions || (LoginOutcomeActions = {}));
479
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vbW9kdWxlcy9hdXRoL3NyYy9hdXRoLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQ0wscUJBQXFCLEVBQ3JCLFdBQVcsRUFDWCxvQkFBb0IsRUFDcEIsZUFBZSxFQUNmLG1CQUFtQixFQUlwQixNQUFNLDRCQUE0QixDQUFDO0FBR3BDLE9BQU8sRUFBRSxXQUFXLElBQUksR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7QUFFMUM7O0dBRUc7QUFDSCxNQUFNLG9CQUFvQixHQUFHLFNBQVMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUVoRTs7OztHQUlHO0FBRUgsTUFBTSxPQUFPLGVBQWU7SUFZMUIsWUFBb0IsT0FBMkI7UUFBM0IsWUFBTyxHQUFQLE9BQU8sQ0FBb0I7UUFKdkMsbUJBQWMsR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLElBQUksR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUM7UUFFeEQsbUJBQWMsR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUM7UUFHcEQsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLGVBQWUsQ0FBQztZQUNsQyxVQUFVLEVBQUUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsVUFBVTtZQUN0QyxRQUFRLEVBQUUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsZ0JBQWdCO1NBQzNDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7T0FFRztJQUNLLGtCQUFrQixDQUFDLFFBQWdCLEVBQUUsR0FBVztRQUN0RCxPQUFPLElBQUkscUJBQXFCLENBQUMsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQzFFLENBQUM7SUFDRDs7T0FFRztJQUNILGtCQUFrQixDQUFDLFFBQWdCO1FBQ2pDLE9BQU8sSUFBSSxXQUFXLENBQUMsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztJQUN0RSxDQUFDO0lBQ0Q7O09BRUc7SUFDSyxvQkFBb0IsQ0FBQyxJQUFZLEVBQUUsS0FBYTtRQUN0RCxPQUFPLElBQUksb0JBQW9CLENBQUMsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQ2hFLENBQUM7SUFFRDs7T0FFRztJQUNILEtBQUssQ0FBQyxRQUFnQixFQUFFLFFBQWdCO1FBQ3RDLE9BQU8sSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFRLEVBQUU7WUFDM0MsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQy9DLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsUUFBUSxFQUFFLFFBQVEsQ0FBQyxFQUFFO2dCQUNqRSxTQUFTLEVBQUUsR0FBUyxFQUFFLENBQ3BCLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsbUJBQW1CLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUM7Z0JBQ3JHLFNBQVMsRUFBRSxDQUFDLEdBQVUsRUFBUSxFQUFFLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQztnQkFDNUMsbUJBQW1CLEVBQUUsR0FBUyxFQUFFO29CQUM5QixJQUFJLENBQUMsaUJBQWlCLEdBQUcsUUFBUSxDQUFDO29CQUNsQyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsUUFBUSxDQUFDO29CQUNsQyxPQUFPLENBQUMsbUJBQW1CLENBQUMsWUFBWSxDQUFDLENBQUM7Z0JBQzVDLENBQUM7Z0JBQ0QsWUFBWSxFQUFFLEdBQVMsRUFBRTtvQkFDdkIsSUFBSSxDQUFDLGlCQUFpQixHQUFHLFFBQVEsQ0FBQztvQkFDbEMsSUFBSSxDQUFDLGlCQUFpQixHQUFHLFFBQVEsQ0FBQztvQkFDbEMsT0FBTyxDQUFDLG1CQUFtQixDQUFDLGFBQWEsQ0FBQyxDQUFDO2dCQUM3QyxDQUFDO2FBQ0YsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBQ0Q7O09BRUc7SUFDSCxrQkFBa0IsQ0FBQyxXQUFtQjtRQUNwQyxPQUFPLElBQUksT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBUSxFQUFFO1lBQzNDLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQztZQUM3RCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxJQUFJLENBQUMsaUJBQWlCLENBQUMsRUFBRTtnQkFDN0YsU0FBUyxFQUFFLEdBQVMsRUFBRSxDQUFDLE9BQU8sRUFBRTtnQkFDaEMsU0FBUyxFQUFFLENBQUMsR0FBVSxFQUFRLEVBQUUsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDO2dCQUM1QyxtQkFBbUIsRUFBRSxHQUFTLEVBQUUsQ0FDOUIsSUFBSSxDQUFDLDRCQUE0QixDQUMvQixXQUFXLEVBQ1gsRUFBRSxFQUNGO29CQUNFLFNBQVMsRUFBRSxHQUFTLEVBQUU7d0JBQ3BCLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUM7d0JBQzlCLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUM7d0JBQzlCLE9BQU8sRUFBRSxDQUFDO29CQUNaLENBQUM7b0JBQ0QsU0FBUyxFQUFFLENBQUMsR0FBVSxFQUFRLEVBQUUsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDO2lCQUM3QyxDQUNGO2FBQ0osQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBQ0Q7O09BRUc7SUFDSCxvQkFBb0IsQ0FBQyxPQUFlO1FBQ2xDLE9BQU8sSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFRLEVBQUU7WUFDM0MsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1lBQzdELElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLGlCQUFpQixFQUFFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFO2dCQUM3RixTQUFTLEVBQUUsR0FBUyxFQUFFLENBQUMsT0FBTyxFQUFFO2dCQUNoQyxTQUFTLEVBQUUsQ0FBQyxHQUFVLEVBQVEsRUFBRSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUM7Z0JBQzVDLFlBQVksRUFBRSxDQUFDLGFBQTRCLEVBQVEsRUFBRSxDQUNuRCxJQUFJLENBQUMsV0FBVyxDQUNkLE9BQU8sRUFDUDtvQkFDRSxTQUFTLEVBQUUsR0FBUyxFQUFFO3dCQUNwQixJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDO3dCQUM5QixJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDO3dCQUM5QixPQUFPLEVBQUUsQ0FBQztvQkFDWixDQUFDO29CQUNELFNBQVMsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUM7aUJBQzlCLEVBQ0QsYUFBYSxDQUNkO2FBQ0osQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBQ0Q7O09BRUc7SUFDSCxRQUFRLENBQUMsUUFBZ0IsRUFBRSxRQUFnQixFQUFFLFVBQWdCO1FBQzNELFVBQVUsR0FBRyxVQUFVLElBQUksRUFBRSxDQUFDO1FBQzlCLE9BQU8sSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFRLEVBQUU7WUFDM0MseURBQXlEO1lBQ3pELE1BQU0sS0FBSyxHQUFHLEVBQUUsQ0FBQztZQUNqQixLQUFLLE1BQU0sSUFBSSxJQUFJLFVBQVU7Z0JBQzNCLElBQUksVUFBVSxDQUFDLElBQUksQ0FBQztvQkFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLEVBQUUsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN0RixzRUFBc0U7WUFDdEUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLO2dCQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLE9BQU8sRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDO1lBQ2hGLG9DQUFvQztZQUNwQyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQyxHQUFVLEVBQUUsR0FBa0IsRUFBUSxFQUFFO2dCQUM3RixJQUFJLEdBQUc7b0JBQUUsT0FBTyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQzVCLElBQUksQ0FBQyx3QkFBd0IsR0FBRyxRQUFRLENBQUM7Z0JBQ3pDLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDcEIsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFDRDs7T0FFRztJQUNILDJCQUEyQjtRQUN6QixPQUFPLElBQUksQ0FBQyx3QkFBd0IsQ0FBQztJQUN2QyxDQUFDO0lBQ0Q7O09BRUc7SUFDSCxtQkFBbUIsQ0FBQyxRQUFnQixFQUFFLElBQVk7UUFDaEQsT0FBTyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQVEsRUFBRTtZQUMzQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsUUFBUSxDQUFDLENBQUMsbUJBQW1CLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDLEdBQVUsRUFBUSxFQUFFLENBQ3JGLEdBQUcsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FDOUIsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUNEOztPQUVHO0lBQ0gsc0JBQXNCLENBQUMsUUFBZ0I7UUFDckMsT0FBTyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQVEsRUFBRTtZQUMzQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsUUFBUSxDQUFDLENBQUMsc0JBQXNCLENBQUMsQ0FBQyxHQUFVLEVBQVEsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNsSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFDRDs7T0FFRztJQUNILE1BQU0sQ0FBQyxPQUE2QjtRQUNsQyxPQUFPLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUNwRCxPQUFPLElBQUksT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBUSxFQUFFO1lBQzNDLDJDQUEyQztZQUMzQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLElBQUksQ0FDMUMsR0FBa0IsRUFBRTtZQUNsQixtQ0FBbUM7WUFDbkMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBUyxFQUFFO2dCQUNyRCwrQkFBK0I7Z0JBQy9CLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsY0FBYyxFQUFFLENBQUM7Z0JBQzVDLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLEdBQVUsRUFBaUIsRUFBRTtvQkFDbEQscUdBQXFHO29CQUNyRyxJQUFJLEdBQUc7d0JBQUUsT0FBTyxPQUFPLEVBQUUsQ0FBQztvQkFDMUIsb0RBQW9EO29CQUNwRCxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLHlCQUF5Qjt3QkFBRSxNQUFNLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxJQUFJLENBQUMsQ0FBQztvQkFDekYsNkVBQTZFO29CQUM3RSxJQUFJLE9BQU8sQ0FBQyxNQUFNO3dCQUNoQixJQUFJLENBQUMsYUFBYSxDQUFDLEVBQUUsU0FBUyxFQUFFLEdBQVMsRUFBRSxDQUFDLE9BQU8sRUFBRSxFQUFFLFNBQVMsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7eUJBQ3JGLENBQUM7d0JBQ0osSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO3dCQUNmLE9BQU8sRUFBRSxDQUFDO29CQUNaLENBQUM7Z0JBQ0gsQ0FBQyxDQUFDLENBQUM7WUFDTCxDQUFDLENBQUMsQ0FDTCxDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBQ0Q7O09BRUc7SUFDSCxjQUFjLENBQUMsUUFBZ0I7UUFDN0IsT0FBTyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQVEsRUFBRTtZQUMzQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsUUFBUSxDQUFDLENBQUMsY0FBYyxDQUFDO2dCQUMvQyxTQUFTLEVBQUUsR0FBUyxFQUFFLENBQUMsT0FBTyxFQUFFO2dCQUNoQyxTQUFTLEVBQUUsQ0FBQyxHQUFVLEVBQVEsRUFBRSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUM7YUFDN0MsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBQ0Q7O09BRUc7SUFDSCxlQUFlLENBQUMsUUFBZ0IsRUFBRSxJQUFZLEVBQUUsTUFBYztRQUM1RCxPQUFPLElBQUksT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBUSxFQUFFO1lBQzNDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxRQUFRLENBQUMsQ0FBQyxlQUFlLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRTtnQkFDOUQsU0FBUyxFQUFFLEdBQVMsRUFBRSxDQUFDLE9BQU8sRUFBRTtnQkFDaEMsU0FBUyxFQUFFLENBQUMsR0FBVSxFQUFRLEVBQUUsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDO2FBQzdDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUNEOztPQUVHO0lBQ0gsb0JBQW9CO1FBQ2xCLE9BQU8sSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFRLEVBQUU7WUFDM0MsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUM1QyxJQUFJLENBQUMsSUFBSTtnQkFBRSxPQUFPLE1BQU0sRUFBRSxDQUFDO1lBQzNCLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxHQUFVLEVBQVEsRUFBRTtnQkFDbkMsSUFBSSxHQUFHO29CQUFFLE9BQU8sTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUM1QixJQUFJLENBQUMsc0JBQXNCLENBQUM7b0JBQzFCLG1CQUFtQixFQUFFLENBQUMsVUFBa0IsRUFBUSxFQUFFLENBQ2hELE9BQU8sQ0FBQyxrQkFBa0IsU0FBUyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsV0FBVyxVQUFVLEVBQUUsQ0FBQztvQkFDbEYsU0FBUyxFQUFFLENBQUMsR0FBUSxFQUFRLEVBQUUsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDO2lCQUMzQyxDQUFDLENBQUM7WUFDTCxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUNEOztPQUVHO0lBQ0gsd0JBQXdCLENBQUMsV0FBVyxHQUFHLEtBQUs7UUFDMUMsT0FBTyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQVEsRUFBRTtZQUMzQyxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQzVDLElBQUksQ0FBQyxJQUFJO2dCQUFFLE9BQU8sTUFBTSxFQUFFLENBQUM7WUFDM0IsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEdBQVUsRUFBUSxFQUFFO2dCQUNuQyxJQUFJLEdBQUc7b0JBQUUsT0FBTyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQzVCLElBQUksQ0FBQyxXQUFXLENBQ2QsQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFRLEVBQUU7b0JBQ2xCLElBQUksR0FBRzt3QkFBRSxPQUFPLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztvQkFDNUIsTUFBTSxZQUFZLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGtCQUFrQixJQUFJLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxRQUFRLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxDQUFDO29CQUMzRyxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUM7Z0JBQ3hCLENBQUMsRUFDRCxFQUFFLFdBQVcsRUFBRSxDQUNoQixDQUFDO1lBQ0osQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFDRDs7T0FFRztJQUNLLFlBQVksQ0FBQyxHQUFXLEVBQUUsYUFBcUIsRUFBRSxPQUFPLEdBQUcsSUFBSSxFQUFFLFNBQVMsR0FBRyxJQUFJO1FBQ3ZGLE9BQU8sSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFRLEVBQUU7WUFDM0MsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUM1QyxJQUFJLENBQUMsSUFBSTtnQkFBRSxPQUFPLE1BQU0sRUFBRSxDQUFDO1lBQzNCLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxHQUFVLEVBQVEsRUFBRTtnQkFDbkMsSUFBSSxHQUFHO29CQUFFLE9BQU8sTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUM1QixJQUFJLENBQUMsbUJBQW1CLENBQUMsR0FBRyxFQUFFLGFBQWEsRUFBRTtvQkFDM0MsU0FBUyxFQUFFLEdBQVMsRUFBRSxDQUNwQixJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxFQUFFLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLEVBQUUsQ0FBQyxHQUFVLEVBQVEsRUFBRSxDQUNsRyxHQUFHLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQzlCO29CQUNILFNBQVMsRUFBRSxDQUFDLEdBQUcsRUFBUSxFQUFFLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQztpQkFDdEMsQ0FBQyxDQUFDO1lBQ0wsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFDRDs7T0FFRztJQUNILFNBQVMsQ0FBQyxHQUFXLEVBQUUsYUFBYSxHQUFHLFNBQVM7UUFDOUMsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsRUFBRSxhQUFhLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzNELENBQUM7SUFDRDs7T0FFRztJQUNILFVBQVUsQ0FBQyxHQUFXLEVBQUUsYUFBYSxHQUFHLFNBQVM7UUFDL0MsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsRUFBRSxhQUFhLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFDRDs7OztPQUlHO0lBQ0gsZUFBZSxDQUFDLGNBQXVCLEVBQUUsb0JBQXFEO1FBQzVGLE9BQU8sSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFRLEVBQUU7WUFDM0MsSUFBSSxjQUFjLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQ3hDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLGlCQUFpQixDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBQ2pHLDRGQUE0RjtnQkFDNUYsTUFBTSxDQUFDLGdCQUFnQixDQUNyQixRQUFRLEVBQ1IsR0FBa0IsRUFBRSxDQUNsQixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksRUFBRSxvQkFBb0IsQ0FBQztvQkFDOUMsMkNBQTJDO3FCQUMxQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FDMUQsQ0FBQztZQUNKLENBQUM7aUJBQU0sQ0FBQztnQkFDTixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLGNBQWMsRUFBRSxDQUFDO2dCQUM1QyxJQUFJLENBQUMsSUFBSTtvQkFBRSxPQUFPLE1BQU0sRUFBRSxDQUFDO2dCQUMzQixJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsR0FBVSxFQUFFLE9BQTJCLEVBQVEsRUFBRTtvQkFDaEUsSUFBSSxHQUFHO3dCQUFFLE9BQU8sTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO29CQUM1QixJQUFJLENBQUMsV0FBVyxDQUNkLENBQUMsR0FBRyxFQUFFLElBQUksRUFBUSxFQUFFO3dCQUNsQixJQUFJLEdBQUc7NEJBQUUsT0FBTyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7d0JBQzVCLE1BQU0sWUFBWSxHQUFHLENBQUMsQ0FBQyxDQUNyQixJQUFJLENBQUMsa0JBQWtCLElBQUksSUFBSSxDQUFDLGtCQUFrQixDQUFDLFFBQVEsQ0FBQyxvQkFBb0IsQ0FBQyxDQUNsRixDQUFDO3dCQUNGLElBQUksQ0FBQyxZQUFZLElBQUksR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsaUJBQWlCOzRCQUNsRCxPQUFPLE1BQU0sQ0FBQyxJQUFJLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO3dCQUMxRCxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFRLEVBQUUsVUFBa0MsRUFBUSxFQUFFOzRCQUM1RSxJQUFJLENBQUM7Z0NBQUUsT0FBTyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7NEJBQ3hCLHdCQUF3Qjs0QkFDeEIsTUFBTSxXQUFXLEdBQVEsRUFBRSxDQUFDOzRCQUM1QixVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBdUIsRUFBVSxFQUFFLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQzs0QkFDbkcsMENBQTBDOzRCQUMxQyxNQUFNLFdBQVcsR0FBRyxPQUFPLENBQUMsY0FBYyxFQUFFLENBQUMsYUFBYSxFQUFFLENBQUM7NEJBQzdELE1BQU0sTUFBTSxHQUFhLFdBQVcsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUUsQ0FBQzs0QkFDN0QsV0FBVyxDQUFDLFFBQVEsQ0FBQyxHQUFHLE1BQU0sQ0FBQzs0QkFDL0IsbUdBQW1HOzRCQUNuRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsV0FBVyxFQUFFLEdBQUcsQ0FBQyxFQUFFO2dDQUN4QywyREFBMkQ7Z0NBQzNELElBQUksR0FBRztvQ0FBRSxPQUFPLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztnQ0FDNUIsMkVBQTJFO2dDQUMzRSxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsRUFBRSxPQUFPLENBQUMsZUFBZSxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztnQ0FDM0Usa0ZBQWtGO2dDQUNsRixVQUFVLENBQ1IsR0FBUyxFQUFFLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLGVBQWUsRUFBRSxDQUFDLFFBQVEsRUFBRSxFQUFFLG9CQUFvQixDQUFDLEVBQ2pHLEVBQUUsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUNmLENBQUMsQ0FBQyxtQkFBbUI7Z0NBQ3RCLHFGQUFxRjtnQ0FDckYsSUFBSSxjQUFjO29DQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLGlCQUFpQixFQUFFLFdBQVcsQ0FBQyxDQUFDO2dDQUNyRSx1Q0FBdUM7Z0NBQ3ZDLE9BQU8sQ0FBQyxFQUFFLE9BQU8sRUFBRSxPQUFPLENBQUMsVUFBVSxFQUFFLENBQUMsV0FBVyxFQUFFLEVBQUUsV0FBVyxFQUFFLENBQUMsQ0FBQzs0QkFDeEUsQ0FBQyxDQUFDLENBQUM7d0JBQ0wsQ0FBQyxDQUFDLENBQUM7b0JBQ0wsQ0FBQyxFQUNELEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxDQUN0QixDQUFDO2dCQUNKLENBQUMsQ0FBQyxDQUFDO1lBQ0wsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUNEOztPQUVHO0lBQ0ssY0FBYyxDQUFDLElBQWlCLEVBQUUsWUFBb0IsRUFBRSxRQUF3QztRQUN0RyxJQUFJLENBQUMsY0FBYyxDQUNqQixJQUFJLG1CQUFtQixDQUFDLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxDQUFDLEVBQ3ZELENBQUMsR0FBVSxFQUFFLE9BQTJCLEVBQVEsRUFBRTtZQUNoRCxJQUFJLEdBQUcsRUFBRSxDQUFDO2dCQUNSLHdCQUF3QjtnQkFDeEIsVUFBVSxDQUFDLEdBQVMsRUFBRSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLFlBQVksRUFBRSxRQUFRLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDO1lBQzNGLENBQUM7aUJBQU0sQ0FBQztnQkFDTiwyRUFBMkU7Z0JBQzNFLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLGtCQUFrQixFQUFFLE9BQU8sQ0FBQyxlQUFlLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO2dCQUMzRSwwQkFBMEI7Z0JBQzFCLFVBQVUsQ0FDUixHQUFTLEVBQUUsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsZUFBZSxFQUFFLENBQUMsUUFBUSxFQUFFLEVBQUUsUUFBUSxDQUFDLEVBQ3JGLEVBQUUsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUNmLENBQUM7Z0JBQ0Ysa0NBQWtDO2dCQUNsQyxJQUFJLFFBQVE7b0JBQUUsUUFBUSxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO1lBQzdELENBQUM7UUFDSCxDQUFDLENBQ0YsQ0FBQztJQUNKLENBQUM7SUFDRDs7Ozs7T0FLRztJQUNLLGlCQUFpQixDQUFDLFdBQWdCLEVBQUUsUUFBK0I7UUFDekUsTUFBTSxNQUFNLEdBQWEsV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQy9DLG1EQUFtRDtRQUNuRCxNQUFNLE9BQU8sR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLFFBQVEsQ0FBQyxDQUFDO1FBQ2pELElBQUksT0FBTztZQUFFLE9BQU8sUUFBUSxFQUFFLENBQUM7UUFDL0IsNkZBQTZGO1FBQzdGLE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssUUFBUSxDQUFDLENBQUM7UUFDakQsSUFBSSxPQUFPO1lBQUUsT0FBTyxRQUFRLENBQUMsSUFBSSxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQztRQUN0RCx3RkFBd0Y7UUFDeEYsSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyx5QkFBeUI7WUFBRSxPQUFPLElBQUksQ0FBQyw0QkFBNEIsQ0FBQyxXQUFXLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDN0csd0JBQXdCO1FBQ3hCLFFBQVEsRUFBRSxDQUFDO0lBQ2IsQ0FBQztJQUNEOztPQUVHO0lBQ0ssS0FBSyxDQUFDLDRCQUE0QixDQUFDLFdBQWdCLEVBQUUsUUFBK0I7UUFDMUYsdURBQXVEO1FBQ3ZELElBQUksZ0JBQWdCLEdBQUcsTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUMvRCxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztZQUN0QixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUMzRCxnQkFBZ0IsR0FBRyxTQUFTLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ3hELE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsZUFBZSxFQUFFLGdCQUFnQixDQUFDLENBQUM7UUFDNUQsQ0FBQztRQUNELHNGQUFzRjtRQUN0RixNQUFNLCtCQUErQixHQUFHLFdBQVcsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBQzFFLHdGQUF3RjtRQUN4RixJQUFJLENBQUMsK0JBQStCLEVBQUUsQ0FBQztZQUNyQyxJQUFJLENBQUMsMEJBQTBCLENBQUMsZ0JBQWdCLENBQUM7aUJBQzlDLElBQUksQ0FBQyxHQUFTLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQztpQkFDNUIsS0FBSyxDQUFDLEdBQVMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUM3RCx1Q0FBdUM7UUFDekMsQ0FBQzthQUFNLElBQUksK0JBQStCLEtBQUssZ0JBQWdCO1lBQUUsUUFBUSxFQUFFLENBQUM7UUFDNUUsaUVBQWlFOztZQUM1RCxRQUFRLENBQUMsSUFBSSxLQUFLLENBQUMsc0JBQXNCLENBQUMsQ0FBQyxDQUFDO0lBQ25ELENBQUM7SUFDRDs7T0FFRztJQUNLLDBCQUEwQixDQUFDLFNBQWtCO1FBQ25ELE1BQU0sVUFBVSxHQUFRLEVBQUUsQ0FBQztRQUMzQiwrREFBK0Q7UUFDL0QsVUFBVSxDQUFDLG9CQUFvQixDQUFDLEdBQUcsU0FBUyxJQUFJLEVBQUUsQ0FBQztRQUNuRCxPQUFPLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBQ0Q7O09BRUc7SUFDSCxvQkFBb0IsQ0FBQyxVQUFlO1FBQ2xDLE9BQU8sSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFRLEVBQUU7WUFDM0MsMkNBQTJDO1lBQzNDLE1BQU0sS0FBSyxHQUFHLElBQUksS0FBSyxFQUFPLENBQUM7WUFDL0IsS0FBSyxNQUFNLElBQUksSUFBSSxVQUFVO2dCQUMzQixJQUFJLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxTQUFTO29CQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksRUFBRSxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3BHLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDNUMsSUFBSSxDQUFDLElBQUk7Z0JBQUUsT0FBTyxNQUFNLEVBQUUsQ0FBQztZQUMzQixvREFBb0Q7WUFDcEQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEdBQVUsRUFBUSxFQUFFO2dCQUNuQyxJQUFJLEdBQUc7b0JBQUUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDOztvQkFDaEIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEtBQUssRUFBRSxDQUFDLENBQVEsRUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ3JGLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsNkJBQTZCLENBQUMsUUFBZ0I7UUFDNUMsTUFBTSxNQUFNLEdBQUcsRUFBRSxDQUFDO1FBQ2xCLElBQUksUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVM7WUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ3ZGLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQztZQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUM3RixJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsZ0JBQWdCLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQztZQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUN0RyxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsY0FBYyxJQUFJLENBQUMsNkNBQTZDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQztZQUNyRyxNQUFNLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDakMsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLGdCQUFnQixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7WUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFDdEcsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztJQUNEOzs7T0FHRztJQUNILGdDQUFnQztRQUM5QixJQUFJLE9BQU8sR0FBRyxFQUFFLENBQUM7UUFDakIsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWE7WUFBRSxPQUFPLElBQUksYUFBYSxDQUFDO1FBQ2hFLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxnQkFBZ0I7WUFBRSxPQUFPLElBQUksYUFBYSxDQUFDO1FBQ25FLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxjQUFjO1lBQUUsT0FBTyxJQUFJLG1EQUFtRCxDQUFDO1FBQ3ZHLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxnQkFBZ0I7WUFBRSxPQUFPLElBQUksYUFBYSxDQUFDO1FBQ25FLE9BQU8sSUFBSSxLQUFLLElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxJQUFJLENBQUM7UUFDbEQsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQzs4R0ExY1UsZUFBZTtrSEFBZixlQUFlLGNBREYsTUFBTTs7MkZBQ25CLGVBQWU7a0JBRDNCLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFOztBQThjbEM7O0dBRUc7QUFDSCxNQUFNLENBQU4sSUFBWSxtQkFLWDtBQUxELFdBQVksbUJBQW1CO0lBQzdCLG9DQUFhLENBQUE7SUFDYixtREFBNEIsQ0FBQTtJQUM1QixxREFBOEIsQ0FBQTtJQUM5Qiw2Q0FBc0IsQ0FBQTtBQUN4QixDQUFDLEVBTFcsbUJBQW1CLEtBQW5CLG1CQUFtQixRQUs5QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIEF1dGhlbnRpY2F0aW9uRGV0YWlscyxcbiAgQ29nbml0b1VzZXIsXG4gIENvZ25pdG9Vc2VyQXR0cmlidXRlLFxuICBDb2duaXRvVXNlclBvb2wsXG4gIENvZ25pdG9SZWZyZXNoVG9rZW4sXG4gIENvZ25pdG9Vc2VyU2Vzc2lvbixcbiAgSVNpZ25VcFJlc3VsdCxcbiAgQ2hhbGxlbmdlTmFtZVxufSBmcm9tICdhbWF6b24tY29nbml0by1pZGVudGl0eS1qcyc7XG5pbXBvcnQgeyBJREVBU3RvcmFnZVNlcnZpY2UgfSBmcm9tICdAaWRlYS1pb25pYy9jb21tb24nO1xuXG5pbXBvcnQgeyBlbnZpcm9ubWVudCBhcyBlbnYgfSBmcm9tICdAZW52JztcblxuLyoqXG4gKiBUaGUgbmFtZSBvZiB0aGUgQ29nbml0bydzIHVzZXIgYXR0cmlidXRlIHdoaWNoIGNvbnRhaW5zIHRoZSBrZXkgb2YgdGhlIGxhc3QgZGV2aWNlIHRvIGxvZ2luIGluIHRoaXMgcHJvamVjdC5cbiAqL1xuY29uc3QgREVWSUNFX0tFWV9BVFRSSUJVVEUgPSAnY3VzdG9tOicuY29uY2F0KGVudi5pZGVhLnByb2plY3QpO1xuXG4vKipcbiAqIENvZ25pdG8gd3JhcHBlciB0byBtYW5hZ2UgdGhlIGF1dGhlbnRpY2F0aW9uIGZsb3cuXG4gKlxuICogTm90ZTogaW4gSURFQSdzIENvZ25pdG8gdXNlcnMgcG9vbHMsIHRoZSBlbWFpbCBpcyBhbiBhbGlhcyBvZiB0aGUgdXNlcm5hbWUuXG4gKi9cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgSURFQUF1dGhTZXJ2aWNlIHtcbiAgcHJpdmF0ZSB1c2VyUG9vbDogQ29nbml0b1VzZXJQb29sO1xuXG4gIGNoYWxsZW5nZVVzZXJuYW1lOiBzdHJpbmc7XG4gIHByaXZhdGUgY2hhbGxlbmdlUGFzc3dvcmQ6IHN0cmluZztcblxuICBwcml2YXRlIG5ld0FjY291bnRKdXN0UmVnaXN0ZXJlZDogc3RyaW5nO1xuXG4gIHByaXZhdGUgbWZhUHJvamVjdE5hbWUgPSBlbnYuaWRlYS5hcHAudGl0bGUgPz8gZW52LmlkZWEucHJvamVjdDtcblxuICBwcml2YXRlIHBhc3N3b3JkUG9saWN5ID0gZW52LmlkZWEuYXV0aC5wYXNzd29yZFBvbGljeTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHN0b3JhZ2U6IElERUFTdG9yYWdlU2VydmljZSkge1xuICAgIHRoaXMudXNlclBvb2wgPSBuZXcgQ29nbml0b1VzZXJQb29sKHtcbiAgICAgIFVzZXJQb29sSWQ6IGVudi5hd3MuY29nbml0by51c2VyUG9vbElkLFxuICAgICAgQ2xpZW50SWQ6IGVudi5hd3MuY29nbml0by51c2VyUG9vbENsaWVudElkXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogUHJlcGFyZSB0aGUgbmVjZXNzYXJ5IHN0cnVjdHVyZSB0byBnZXQgYXV0aG9yaXplZCBpbiBDb2duaXRvLlxuICAgKi9cbiAgcHJpdmF0ZSBwcmVwYXJlQXV0aERldGFpbHModXNlcm5hbWU6IHN0cmluZywgcHdkOiBzdHJpbmcpOiBBdXRoZW50aWNhdGlvbkRldGFpbHMge1xuICAgIHJldHVybiBuZXcgQXV0aGVudGljYXRpb25EZXRhaWxzKHsgVXNlcm5hbWU6IHVzZXJuYW1lLCBQYXNzd29yZDogcHdkIH0pO1xuICB9XG4gIC8qKlxuICAgKiBQcmVwYXJlIHRoZSBuZWNlc3Nhcnkgc3RydWN0dXJlIHRvIGlkZW50aWZ5IGEgQ29nbml0byB1c2VyLlxuICAgKi9cbiAgcHJlcGFyZUNvZ25pdG9Vc2VyKHVzZXJuYW1lOiBzdHJpbmcpOiBDb2duaXRvVXNlciB7XG4gICAgcmV0dXJuIG5ldyBDb2duaXRvVXNlcih7IFVzZXJuYW1lOiB1c2VybmFtZSwgUG9vbDogdGhpcy51c2VyUG9vbCB9KTtcbiAgfVxuICAvKipcbiAgICogUHJlcGFyZSBhIHVzZXIgYXR0cmlidXRlICh0aGV5IGFyZSBhbGwgc3RyaW5ncykgaW4gQ29nbml0bydzIGZvcm1hdC5cbiAgICovXG4gIHByaXZhdGUgcHJlcGFyZVVzZXJBdHRyaWJ1dGUobmFtZTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKTogQ29nbml0b1VzZXJBdHRyaWJ1dGUge1xuICAgIHJldHVybiBuZXcgQ29nbml0b1VzZXJBdHRyaWJ1dGUoeyBOYW1lOiBuYW1lLCBWYWx1ZTogdmFsdWUgfSk7XG4gIH1cblxuICAvKipcbiAgICogUGVyZm9ybSBhIGxvZ2luIHRocm91Z2ggdXNlcm5hbWUgYW5kIHBhc3N3b3JkLlxuICAgKi9cbiAgbG9naW4odXNlcm5hbWU6IHN0cmluZywgcGFzc3dvcmQ6IHN0cmluZyk6IFByb21pc2U8TG9naW5PdXRjb21lQWN0aW9ucz4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KTogdm9pZCA9PiB7XG4gICAgICBjb25zdCB1c2VyID0gdGhpcy5wcmVwYXJlQ29nbml0b1VzZXIodXNlcm5hbWUpO1xuICAgICAgdXNlci5hdXRoZW50aWNhdGVVc2VyKHRoaXMucHJlcGFyZUF1dGhEZXRhaWxzKHVzZXJuYW1lLCBwYXNzd29yZCksIHtcbiAgICAgICAgb25TdWNjZXNzOiAoKTogdm9pZCA9PlxuICAgICAgICAgIHJlc29sdmUoZW52LmlkZWEuYXV0aC5mb3JjZUxvZ2luV2l0aE1GQSA/IExvZ2luT3V0Y29tZUFjdGlvbnMuTUZBX1NFVFVQIDogTG9naW5PdXRjb21lQWN0aW9ucy5OT05FKSxcbiAgICAgICAgb25GYWlsdXJlOiAoZXJyOiBFcnJvcik6IHZvaWQgPT4gcmVqZWN0KGVyciksXG4gICAgICAgIG5ld1Bhc3N3b3JkUmVxdWlyZWQ6ICgpOiB2b2lkID0+IHtcbiAgICAgICAgICB0aGlzLmNoYWxsZW5nZVVzZXJuYW1lID0gdXNlcm5hbWU7XG4gICAgICAgICAgdGhpcy5jaGFsbGVuZ2VQYXNzd29yZCA9IHBhc3N3b3JkO1xuICAgICAgICAgIHJlc29sdmUoTG9naW5PdXRjb21lQWN0aW9ucy5ORVdfUEFTU1dPUkQpO1xuICAgICAgICB9LFxuICAgICAgICB0b3RwUmVxdWlyZWQ6ICgpOiB2b2lkID0+IHtcbiAgICAgICAgICB0aGlzLmNoYWxsZW5nZVVzZXJuYW1lID0gdXNlcm5hbWU7XG4gICAgICAgICAgdGhpcy5jaGFsbGVuZ2VQYXNzd29yZCA9IHBhc3N3b3JkO1xuICAgICAgICAgIHJlc29sdmUoTG9naW5PdXRjb21lQWN0aW9ucy5NRkFfQ0hBTExFTkdFKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cbiAgLyoqXG4gICAqIENvbXBsZXRlIHRoZSBuZXcgcGFzc3dvcmQgZmxvdyBpbiB0aGUgYXV0aGVudGljYXRpb24uXG4gICAqL1xuICBjb25maXJtTmV3UGFzc3dvcmQobmV3UGFzc3dvcmQ6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KTogdm9pZCA9PiB7XG4gICAgICBjb25zdCB1c2VyID0gdGhpcy5wcmVwYXJlQ29nbml0b1VzZXIodGhpcy5jaGFsbGVuZ2VVc2VybmFtZSk7XG4gICAgICB1c2VyLmF1dGhlbnRpY2F0ZVVzZXIodGhpcy5wcmVwYXJlQXV0aERldGFpbHModGhpcy5jaGFsbGVuZ2VVc2VybmFtZSwgdGhpcy5jaGFsbGVuZ2VQYXNzd29yZCksIHtcbiAgICAgICAgb25TdWNjZXNzOiAoKTogdm9pZCA9PiByZXNvbHZlKCksXG4gICAgICAgIG9uRmFpbHVyZTogKGVycjogRXJyb3IpOiB2b2lkID0+IHJlamVjdChlcnIpLFxuICAgICAgICBuZXdQYXNzd29yZFJlcXVpcmVkOiAoKTogdm9pZCA9PlxuICAgICAgICAgIHVzZXIuY29tcGxldGVOZXdQYXNzd29yZENoYWxsZW5nZShcbiAgICAgICAgICAgIG5ld1Bhc3N3b3JkLFxuICAgICAgICAgICAge30sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIG9uU3VjY2VzczogKCk6IHZvaWQgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuY2hhbGxlbmdlVXNlcm5hbWUgPSBudWxsO1xuICAgICAgICAgICAgICAgIHRoaXMuY2hhbGxlbmdlUGFzc3dvcmQgPSBudWxsO1xuICAgICAgICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgb25GYWlsdXJlOiAoZXJyOiBFcnJvcik6IHZvaWQgPT4gcmVqZWN0KGVycilcbiAgICAgICAgICAgIH1cbiAgICAgICAgICApXG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuICAvKipcbiAgICogIENvbXBsZXRlIHRoZSBNRkEgY2hhbGxlbmdlIGZsb3cgaW4gdGhlIGF1dGhlbnRpY2F0aW9uLlxuICAgKi9cbiAgY29tcGxldGVNRkFDaGFsbGVuZ2Uob3RwQ29kZTogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpOiB2b2lkID0+IHtcbiAgICAgIGNvbnN0IHVzZXIgPSB0aGlzLnByZXBhcmVDb2duaXRvVXNlcih0aGlzLmNoYWxsZW5nZVVzZXJuYW1lKTtcbiAgICAgIHVzZXIuYXV0aGVudGljYXRlVXNlcih0aGlzLnByZXBhcmVBdXRoRGV0YWlscyh0aGlzLmNoYWxsZW5nZVVzZXJuYW1lLCB0aGlzLmNoYWxsZW5nZVBhc3N3b3JkKSwge1xuICAgICAgICBvblN1Y2Nlc3M6ICgpOiB2b2lkID0+IHJlc29sdmUoKSxcbiAgICAgICAgb25GYWlsdXJlOiAoZXJyOiBFcnJvcik6IHZvaWQgPT4gcmVqZWN0KGVyciksXG4gICAgICAgIHRvdHBSZXF1aXJlZDogKGNoYWxsZW5nZU5hbWU6IENoYWxsZW5nZU5hbWUpOiB2b2lkID0+XG4gICAgICAgICAgdXNlci5zZW5kTUZBQ29kZShcbiAgICAgICAgICAgIG90cENvZGUsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIG9uU3VjY2VzczogKCk6IHZvaWQgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuY2hhbGxlbmdlVXNlcm5hbWUgPSBudWxsO1xuICAgICAgICAgICAgICAgIHRoaXMuY2hhbGxlbmdlUGFzc3dvcmQgPSBudWxsO1xuICAgICAgICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgb25GYWlsdXJlOiBlcnIgPT4gcmVqZWN0KGVycilcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBjaGFsbGVuZ2VOYW1lXG4gICAgICAgICAgKVxuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cbiAgLyoqXG4gICAqIFJlZ2lzdGVyIGEgbmV3IHVzZXIgYSBzZXQgaXRzIGRlZmF1bHQgYXR0cmlidXRlcy5cbiAgICovXG4gIHJlZ2lzdGVyKHVzZXJuYW1lOiBzdHJpbmcsIHBhc3N3b3JkOiBzdHJpbmcsIGF0dHJpYnV0ZXM/OiBhbnkpOiBQcm9taXNlPENvZ25pdG9Vc2VyPiB7XG4gICAgYXR0cmlidXRlcyA9IGF0dHJpYnV0ZXMgfHwge307XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpOiB2b2lkID0+IHtcbiAgICAgIC8vIGFkZCBhdHRyaWJ1dGVzIGxpa2UgdGhlIGVtYWlsIGFkZHJlc3MgYW5kIHRoZSBmdWxsbmFtZVxuICAgICAgY29uc3QgYXR0cnMgPSBbXTtcbiAgICAgIGZvciAoY29uc3QgcHJvcCBpbiBhdHRyaWJ1dGVzKVxuICAgICAgICBpZiAoYXR0cmlidXRlc1twcm9wXSkgYXR0cnMucHVzaCh0aGlzLnByZXBhcmVVc2VyQXR0cmlidXRlKHByb3AsIGF0dHJpYnV0ZXNbcHJvcF0pKTtcbiAgICAgIC8vIGFkZCB0aGUgZW1haWwsIHdoaWNoIGlzIGVxdWFsIHRvIHRoZSB1c2VybmFtZSBmb3IgbW9zdCBvZiBvdXIgUG9vbHNcbiAgICAgIGlmICghYXR0cmlidXRlcy5lbWFpbCkgYXR0cnMucHVzaCh0aGlzLnByZXBhcmVVc2VyQXR0cmlidXRlKCdlbWFpbCcsIHVzZXJuYW1lKSk7XG4gICAgICAvLyByZWdpc3RlciB0aGUgbmV3IHVzZXIgdG8gdGhlIHBvb2xcbiAgICAgIHRoaXMudXNlclBvb2wuc2lnblVwKHVzZXJuYW1lLCBwYXNzd29yZCwgYXR0cnMsIG51bGwsIChlcnI6IEVycm9yLCByZXM6IElTaWduVXBSZXN1bHQpOiB2b2lkID0+IHtcbiAgICAgICAgaWYgKGVycikgcmV0dXJuIHJlamVjdChlcnIpO1xuICAgICAgICB0aGlzLm5ld0FjY291bnRKdXN0UmVnaXN0ZXJlZCA9IHVzZXJuYW1lO1xuICAgICAgICByZXNvbHZlKHJlcy51c2VyKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG4gIC8qKlxuICAgKiBJbiBjYXNlICBuZXcgYWNjb3VudCBoYXMganVzdCBiZWVuIHJlZ2lzdGVyZWQsIHJldHVybiB0aGUgdXNlcm5hbWUuXG4gICAqL1xuICBnZXROZXdBY2NvdW50SnVzdFJlZ2lzdGVyZWQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5uZXdBY2NvdW50SnVzdFJlZ2lzdGVyZWQ7XG4gIH1cbiAgLyoqXG4gICAqIENvbmZpcm0gYSBuZXcgcmVnaXN0cmF0aW9uIHRocm91Z2ggdGhlIGNvbmZpcm1hdGlvbiBjb2RlIHNlbnQgYnkgQ29nbml0by5cbiAgICovXG4gIGNvbmZpcm1SZWdpc3RyYXRpb24odXNlcm5hbWU6IHN0cmluZywgY29kZTogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpOiB2b2lkID0+IHtcbiAgICAgIHRoaXMucHJlcGFyZUNvZ25pdG9Vc2VyKHVzZXJuYW1lKS5jb25maXJtUmVnaXN0cmF0aW9uKGNvZGUsIHRydWUsIChlcnI6IEVycm9yKTogdm9pZCA9PlxuICAgICAgICBlcnIgPyByZWplY3QoZXJyKSA6IHJlc29sdmUoKVxuICAgICAgKTtcbiAgICB9KTtcbiAgfVxuICAvKipcbiAgICogU2VuZCBhZ2FpbiBhIGNvbmZpcm1hdGlvbiBjb2RlIGZvciBhIG5ldyByZWdpc3RyYXRpb24uXG4gICAqL1xuICByZXNlbmRDb25maXJtYXRpb25Db2RlKHVzZXJuYW1lOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCk6IHZvaWQgPT4ge1xuICAgICAgdGhpcy5wcmVwYXJlQ29nbml0b1VzZXIodXNlcm5hbWUpLnJlc2VuZENvbmZpcm1hdGlvbkNvZGUoKGVycjogRXJyb3IpOiB2b2lkID0+IChlcnIgPyByZWplY3QoZXJyKSA6IHJlc29sdmUoKSkpO1xuICAgIH0pO1xuICB9XG4gIC8qKlxuICAgKiBMb2dvdXQgdGhlIGN1cnJlbnRseSBzaWduZWQtaW4gdXNlci5cbiAgICovXG4gIGxvZ291dChvcHRpb25zPzogeyBnbG9iYWw6IGJvb2xlYW4gfSk6IFByb21pc2U8dm9pZD4ge1xuICAgIG9wdGlvbnMgPSBPYmplY3QuYXNzaWduKHsgZ2xvYmFsOiBmYWxzZSB9LCBvcHRpb25zKTtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCk6IHZvaWQgPT4ge1xuICAgICAgLy8gcmVtb3ZlIHRoZSByZWZyZXNoIHRva2VuIHByZXZpb3NseSBzYXZlZFxuICAgICAgdGhpcy5zdG9yYWdlLnJlbW92ZSgnQXV0aFJlZnJlc2hUb2tlbicpLnRoZW4oXG4gICAgICAgICgpOiBQcm9taXNlPHZvaWQ+ID0+XG4gICAgICAgICAgLy8gcmVtb3ZlIHRoZSBvcHRpb25hbCBhdXRoIGRldGFpbHNcbiAgICAgICAgICB0aGlzLnN0b3JhZ2UucmVtb3ZlKCdBdXRoVXNlckRldGFpbHMnKS50aGVuKCgpOiB2b2lkID0+IHtcbiAgICAgICAgICAgIC8vIGdldCB0aGUgdXNlciBhbmQgdGhlIHNlc3Npb25cbiAgICAgICAgICAgIGNvbnN0IHVzZXIgPSB0aGlzLnVzZXJQb29sLmdldEN1cnJlbnRVc2VyKCk7XG4gICAgICAgICAgICB1c2VyLmdldFNlc3Npb24oYXN5bmMgKGVycjogRXJyb3IpOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgICAgICAgICAgICAgLy8gaWYgdGhlIHNlc3Npb24gaXMgYWN0aXZlLCBydW4gdGhlIG9ubGluZSBzaWduLW91dDsgb3RoZXJ3aXNlLCBvbmx5IHRoZSBsb2NhbCBkYXRhIGhhcyBiZWVuIGRlbGV0ZWRcbiAgICAgICAgICAgICAgaWYgKGVycikgcmV0dXJuIHJlc29sdmUoKTtcbiAgICAgICAgICAgICAgLy8gaWYgYSByZWZlcmVuY2UgdG8gdGhlIGRldmljZSB3YXMgc2F2ZWQsIGZvcmdldCBpdFxuICAgICAgICAgICAgICBpZiAoZW52LmlkZWEuYXV0aC5zaW5nbGVTaW11bHRhbmVvdXNTZXNzaW9uKSBhd2FpdCB0aGlzLnNldEN1cnJlbnREZXZpY2VGb3JQcm9qZWN0KG51bGwpO1xuICAgICAgICAgICAgICAvLyBzaWduLW91dCBmcm9tIHRoZSBwb29sICh0ZXJtaW5hdGUgdGhlIGN1cnJlbnQgc2Vzc2lvbiBvciBhbGwgdGhlIHNlc3Npb25zKVxuICAgICAgICAgICAgICBpZiAob3B0aW9ucy5nbG9iYWwpXG4gICAgICAgICAgICAgICAgdXNlci5nbG9iYWxTaWduT3V0KHsgb25TdWNjZXNzOiAoKTogdm9pZCA9PiByZXNvbHZlKCksIG9uRmFpbHVyZTogZXJyID0+IHJlamVjdChlcnIpIH0pO1xuICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICB1c2VyLnNpZ25PdXQoKTtcbiAgICAgICAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0pXG4gICAgICApO1xuICAgIH0pO1xuICB9XG4gIC8qKlxuICAgKiBTZW5kIGEgcGFzc3dvcmQgcmVzZXQgcmVxdWVzdC5cbiAgICovXG4gIGZvcmdvdFBhc3N3b3JkKHVzZXJuYW1lOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCk6IHZvaWQgPT4ge1xuICAgICAgdGhpcy5wcmVwYXJlQ29nbml0b1VzZXIodXNlcm5hbWUpLmZvcmdvdFBhc3N3b3JkKHtcbiAgICAgICAgb25TdWNjZXNzOiAoKTogdm9pZCA9PiByZXNvbHZlKCksXG4gICAgICAgIG9uRmFpbHVyZTogKGVycjogRXJyb3IpOiB2b2lkID0+IHJlamVjdChlcnIpXG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuICAvKipcbiAgICogQ29uZmlybSBhIG5ldyBwYXNzd29yZCBhZnRlciBhIHBhc3N3b3JkIHJlc2V0IHJlcXVlc3QuXG4gICAqL1xuICBjb25maXJtUGFzc3dvcmQodXNlcm5hbWU6IHN0cmluZywgY29kZTogc3RyaW5nLCBuZXdQd2Q6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KTogdm9pZCA9PiB7XG4gICAgICB0aGlzLnByZXBhcmVDb2duaXRvVXNlcih1c2VybmFtZSkuY29uZmlybVBhc3N3b3JkKGNvZGUsIG5ld1B3ZCwge1xuICAgICAgICBvblN1Y2Nlc3M6ICgpOiB2b2lkID0+IHJlc29sdmUoKSxcbiAgICAgICAgb25GYWlsdXJlOiAoZXJyOiBFcnJvcik6IHZvaWQgPT4gcmVqZWN0KGVycilcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG4gIC8qKlxuICAgKiBHZXRzIHRoZSBVUkwgZm9yIGVuYWJsaW5nIE1GQS4gVGhpcyBVUkwgY2FuIGJlIHVzZWQgdG8gZ2VuZXJhdGUgYSBRUiBDb2RlIHRvIHJlYWQgd2l0aCBhbiBhdXRoZW50aWNhdG9yIGFwcC5cbiAgICovXG4gIGdldFVSTEZvckVuYWJsaW5nTUZBKCk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpOiB2b2lkID0+IHtcbiAgICAgIGNvbnN0IHVzZXIgPSB0aGlzLnVzZXJQb29sLmdldEN1cnJlbnRVc2VyKCk7XG4gICAgICBpZiAoIXVzZXIpIHJldHVybiByZWplY3QoKTtcbiAgICAgIHVzZXIuZ2V0U2Vzc2lvbigoZXJyOiBFcnJvcik6IHZvaWQgPT4ge1xuICAgICAgICBpZiAoZXJyKSByZXR1cm4gcmVqZWN0KGVycik7XG4gICAgICAgIHVzZXIuYXNzb2NpYXRlU29mdHdhcmVUb2tlbih7XG4gICAgICAgICAgYXNzb2NpYXRlU2VjcmV0Q29kZTogKHNlY3JldENvZGU6IHN0cmluZyk6IHZvaWQgPT5cbiAgICAgICAgICAgIHJlc29sdmUoYG90cGF1dGg6Ly90b3RwLyR7ZW5jb2RlVVJJKHRoaXMubWZhUHJvamVjdE5hbWUpfT9zZWNyZXQ9JHtzZWNyZXRDb2RlfWApLFxuICAgICAgICAgIG9uRmFpbHVyZTogKGVycjogYW55KTogdm9pZCA9PiByZWplY3QoZXJyKVxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG4gIC8qKlxuICAgKiBDaGVjayB3aGV0aGVyIHRoZSB1c2VyIGhhcyBNRkEgZW5hYmxlZC5cbiAgICovXG4gIGNoZWNrSWZVc2VySGFzTUZBRW5hYmxlZChieXBhc3NDYWNoZSA9IGZhbHNlKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpOiB2b2lkID0+IHtcbiAgICAgIGNvbnN0IHVzZXIgPSB0aGlzLnVzZXJQb29sLmdldEN1cnJlbnRVc2VyKCk7XG4gICAgICBpZiAoIXVzZXIpIHJldHVybiByZWplY3QoKTtcbiAgICAgIHVzZXIuZ2V0U2Vzc2lvbigoZXJyOiBFcnJvcik6IHZvaWQgPT4ge1xuICAgICAgICBpZiAoZXJyKSByZXR1cm4gcmVqZWN0KGVycik7XG4gICAgICAgIHVzZXIuZ2V0VXNlckRhdGEoXG4gICAgICAgICAgKGVyciwgZGF0YSk6IHZvaWQgPT4ge1xuICAgICAgICAgICAgaWYgKGVycikgcmV0dXJuIHJlamVjdChlcnIpO1xuICAgICAgICAgICAgY29uc3QgaXNNRkFFbmFibGVkID0gISEoZGF0YS5Vc2VyTUZBU2V0dGluZ0xpc3QgJiYgZGF0YS5Vc2VyTUZBU2V0dGluZ0xpc3QuaW5jbHVkZXMoJ1NPRlRXQVJFX1RPS0VOX01GQScpKTtcbiAgICAgICAgICAgIHJlc29sdmUoaXNNRkFFbmFibGVkKTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIHsgYnlwYXNzQ2FjaGUgfVxuICAgICAgICApO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cbiAgLyoqXG4gICAqIENvbmZpZ3VyZSBhIE1GQSBkZXZpY2UgZm9yIHRoZSB1c2VyLlxuICAgKi9cbiAgcHJpdmF0ZSBzZXRNRkFEZXZpY2Uob3RwOiBzdHJpbmcsIG1mYURldmljZU5hbWU6IHN0cmluZywgZW5hYmxlZCA9IHRydWUsIHByZWZlcnJlZCA9IHRydWUpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCk6IHZvaWQgPT4ge1xuICAgICAgY29uc3QgdXNlciA9IHRoaXMudXNlclBvb2wuZ2V0Q3VycmVudFVzZXIoKTtcbiAgICAgIGlmICghdXNlcikgcmV0dXJuIHJlamVjdCgpO1xuICAgICAgdXNlci5nZXRTZXNzaW9uKChlcnI6IEVycm9yKTogdm9pZCA9PiB7XG4gICAgICAgIGlmIChlcnIpIHJldHVybiByZWplY3QoZXJyKTtcbiAgICAgICAgdXNlci52ZXJpZnlTb2Z0d2FyZVRva2VuKG90cCwgbWZhRGV2aWNlTmFtZSwge1xuICAgICAgICAgIG9uU3VjY2VzczogKCk6IHZvaWQgPT5cbiAgICAgICAgICAgIHVzZXIuc2V0VXNlck1mYVByZWZlcmVuY2UobnVsbCwgeyBFbmFibGVkOiBlbmFibGVkLCBQcmVmZXJyZWRNZmE6IHByZWZlcnJlZCB9LCAoZXJyOiBFcnJvcik6IHZvaWQgPT5cbiAgICAgICAgICAgICAgZXJyID8gcmVqZWN0KGVycikgOiByZXNvbHZlKClcbiAgICAgICAgICAgICksXG4gICAgICAgICAgb25GYWlsdXJlOiAoZXJyKTogdm9pZCA9PiByZWplY3QoZXJyKVxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG4gIC8qKlxuICAgKiBFbmFibGUgYSBuZXcgTUZBIGRldmljZSBmb3IgdGhlIHVzZXIgYnkgaW5zZXJ0aW5nIGFuIE9UUCBjb2RlIGdlbmVyYXRlZCBieSBpdC5cbiAgICovXG4gIGVuYWJsZU1GQShvdHA6IHN0cmluZywgbWZhRGV2aWNlTmFtZSA9ICdkZWZhdWx0Jyk6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiB0aGlzLnNldE1GQURldmljZShvdHAsIG1mYURldmljZU5hbWUsIHRydWUsIHRydWUpO1xuICB9XG4gIC8qKlxuICAgKiBEaXNhYmxlIE1GQSBmb3IgYSB1c2VyIGJ5IGluc2VydGluZyBhbiBPVFAgY29kZSBnZW5lcmF0ZWQgYnkgaXQuXG4gICAqL1xuICBkaXNhYmxlTUZBKG90cDogc3RyaW5nLCBtZmFEZXZpY2VOYW1lID0gJ2RlZmF1bHQnKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIHRoaXMuc2V0TUZBRGV2aWNlKG90cCwgbWZhRGV2aWNlTmFtZSwgZmFsc2UsIGZhbHNlKTtcbiAgfVxuICAvKipcbiAgICogQ2hlY2sgaWYgYSB1c2VyIGlzIGN1cnJlbnRseSBhdXRoZW50aWNhdGVkLlxuICAgKiBAcGFyYW0gb2ZmbGluZUFsbG93ZWQgaWYgc2V0IGFuZCBpZiBvZmZsaW5lLCBza2lwIGF1dGhlbnRpY2F0aW9uIGFuZCByZXRyaWV2ZSBkYXRhIGxvY2FsbHlcbiAgICogQHBhcmFtIGdldEZyZXNoSWRUb2tlbk9uRXhwIGNiIGZ1bmN0aW9uIHRvIGV4ZWN1dGUgd2hlbiB0aGUgaWRUb2tlbiBpcyByZWZyZXNoZWRcbiAgICovXG4gIGlzQXV0aGVudGljYXRlZChvZmZsaW5lQWxsb3dlZDogYm9vbGVhbiwgZ2V0RnJlc2hJZFRva2VuT25FeHA/OiAoZnJlc2hJZFRva2VuOiBzdHJpbmcpID0+IHZvaWQpOiBQcm9taXNlPGFueT4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KTogdm9pZCA9PiB7XG4gICAgICBpZiAob2ZmbGluZUFsbG93ZWQgJiYgIW5hdmlnYXRvci5vbkxpbmUpIHtcbiAgICAgICAgdGhpcy5zdG9yYWdlLmdldCgnQXV0aFVzZXJEZXRhaWxzJykudGhlbih1c2VyRGV0YWlscyA9PiByZXNvbHZlKHsgaWRUb2tlbjogbnVsbCwgdXNlckRldGFpbHMgfSkpO1xuICAgICAgICAvLyByZS1leGVjdXRlIHRoZSBtZXRob2Qgd2hlbiBiYWNrIG9ubGluZSwgc28gdGhhdCB5b3UgY2FuIHJldHJpZXZlIGEgdG9rZW4gdG8gbWFrZSByZXF1ZXN0c1xuICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcbiAgICAgICAgICAnb25saW5lJyxcbiAgICAgICAgICAoKTogUHJvbWlzZTx2b2lkPiA9PlxuICAgICAgICAgICAgdGhpcy5pc0F1dGhlbnRpY2F0ZWQodHJ1ZSwgZ2V0RnJlc2hJZFRva2VuT25FeHApXG4gICAgICAgICAgICAgIC8vIHNldCB0aGUgbmV3IHRva2VuIGFzIGlmIGl0IHdhcyByZWZyZXNoZWRcbiAgICAgICAgICAgICAgLnRoZW4ocmVzdWx0ID0+IGdldEZyZXNoSWRUb2tlbk9uRXhwKHJlc3VsdC5pZFRva2VuKSlcbiAgICAgICAgKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IHVzZXIgPSB0aGlzLnVzZXJQb29sLmdldEN1cnJlbnRVc2VyKCk7XG4gICAgICAgIGlmICghdXNlcikgcmV0dXJuIHJlamVjdCgpO1xuICAgICAgICB1c2VyLmdldFNlc3Npb24oKGVycjogRXJyb3IsIHNlc3Npb246IENvZ25pdG9Vc2VyU2Vzc2lvbik6IHZvaWQgPT4ge1xuICAgICAgICAgIGlmIChlcnIpIHJldHVybiByZWplY3QoZXJyKTtcbiAgICAgICAgICB1c2VyLmdldFVzZXJEYXRhKFxuICAgICAgICAgICAgKGVyciwgZGF0YSk6IHZvaWQgPT4ge1xuICAgICAgICAgICAgICBpZiAoZXJyKSByZXR1cm4gcmVqZWN0KGVycik7XG4gICAgICAgICAgICAgIGNvbnN0IGlzTUZBRW5hYmxlZCA9ICEhKFxuICAgICAgICAgICAgICAgIGRhdGEuVXNlck1GQVNldHRpbmdMaXN0ICYmIGRhdGEuVXNlck1GQVNldHRpbmdMaXN0LmluY2x1ZGVzKCdTT0ZUV0FSRV9UT0tFTl9NRkEnKVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICBpZiAoIWlzTUZBRW5hYmxlZCAmJiBlbnYuaWRlYS5hdXRoLmZvcmNlTG9naW5XaXRoTUZBKVxuICAgICAgICAgICAgICAgIHJldHVybiByZWplY3QobmV3IEVycm9yKExvZ2luT3V0Y29tZUFjdGlvbnMuTUZBX1NFVFVQKSk7XG4gICAgICAgICAgICAgIHVzZXIuZ2V0VXNlckF0dHJpYnV0ZXMoKGU6IEVycm9yLCBhdHRyaWJ1dGVzOiBDb2duaXRvVXNlckF0dHJpYnV0ZVtdKTogdm9pZCA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGUpIHJldHVybiByZWplY3QoZSk7XG4gICAgICAgICAgICAgICAgLy8gcmVtYXAgdXNlciBhdHRyaWJ1dGVzXG4gICAgICAgICAgICAgICAgY29uc3QgdXNlckRldGFpbHM6IGFueSA9IHt9O1xuICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXMuZm9yRWFjaCgoYTogQ29nbml0b1VzZXJBdHRyaWJ1dGUpOiBzdHJpbmcgPT4gKHVzZXJEZXRhaWxzW2EuZ2V0TmFtZSgpXSA9IGEuZ2V0VmFsdWUoKSkpO1xuICAgICAgICAgICAgICAgIC8vIGFkZCB0aGUgdXNlcidzIGdyb3VwcyB0byB0aGUgYXR0cmlidXRlc1xuICAgICAgICAgICAgICAgIGNvbnN0IHNlc3Npb25JbmZvID0gc2Vzc2lvbi5nZXRBY2Nlc3NUb2tlbigpLmRlY29kZVBheWxvYWQoKTtcbiAgICAgICAgICAgICAgICBjb25zdCBncm91cHM6IHN0cmluZ1tdID0gc2Vzc2lvbkluZm9bJ2NvZ25pdG86Z3JvdXBzJ10gfHwgW107XG4gICAgICAgICAgICAgICAgdXNlckRldGFpbHNbJ2dyb3VwcyddID0gZ3JvdXBzO1xuICAgICAgICAgICAgICAgIC8vIHJ1biBzb21lIGNoZWNrcyBjb25zaWRlcmluZyB0aGUgdXNlcidzIGdyb3VwcyBhbmQgZGV2aWNlcyAoYmFzZWQgb24gdGhlIHByb2plY3QncyBjb25maWd1cmF0aW9uKVxuICAgICAgICAgICAgICAgIHRoaXMucnVuUG9zdEF1dGhDaGVja3ModXNlckRldGFpbHMsIGVyciA9PiB7XG4gICAgICAgICAgICAgICAgICAvLyBpbiBjYXNlIHNvbWUgY2hlY2sgZmFpbGVkLCByZWplY3QgdGhlIGF1dGhvcmlzYXRpb24gZmxvd1xuICAgICAgICAgICAgICAgICAgaWYgKGVycikgcmV0dXJuIHJlamVjdChlcnIpO1xuICAgICAgICAgICAgICAgICAgLy8gKGFzeW5jKSBzYXZlIHRoZSByZWZyZXNoIHRva2VuIHNvIGl0IGNhbiBiZSBhY2Nlc3NlZCBieSBvdGhlciBwcm9jZWR1cmVzXG4gICAgICAgICAgICAgICAgICB0aGlzLnN0b3JhZ2Uuc2V0KCdBdXRoUmVmcmVzaFRva2VuJywgc2Vzc2lvbi5nZXRSZWZyZXNoVG9rZW4oKS5nZXRUb2tlbigpKTtcbiAgICAgICAgICAgICAgICAgIC8vIHNldCBhIHRpbWVyIHRvIG1hbmFnZSB0aGUgYXV0b3JlZnJlc2ggb2YgdGhlIGlkVG9rZW4gKHRocm91Z2ggdGhlIHJlZnJlc2hUb2tlbilcbiAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoXG4gICAgICAgICAgICAgICAgICAgICgpOiB2b2lkID0+IHRoaXMucmVmcmVzaFNlc3Npb24odXNlciwgc2Vzc2lvbi5nZXRSZWZyZXNoVG9rZW4oKS5nZXRUb2tlbigpLCBnZXRGcmVzaElkVG9rZW5PbkV4cCksXG4gICAgICAgICAgICAgICAgICAgIDE1ICogNjAgKiAxMDAwXG4gICAgICAgICAgICAgICAgICApOyAvLyBldmVyeSAxNSBtaW51dGVzXG4gICAgICAgICAgICAgICAgICAvLyAoYXN5bmMpIGlmIG9mZmxpbmVBbGxvd2VkLCBzYXZlIGRhdGEgbG9jYWxseSwgdG8gdXNlIGl0IG5leHQgdGltZSB3ZSdsbCBiZSBvZmZsaW5lXG4gICAgICAgICAgICAgICAgICBpZiAob2ZmbGluZUFsbG93ZWQpIHRoaXMuc3RvcmFnZS5zZXQoJ0F1dGhVc2VyRGV0YWlscycsIHVzZXJEZXRhaWxzKTtcbiAgICAgICAgICAgICAgICAgIC8vIHJldHVybiB0aGUgaWRUb2tlbiAodG8gdXNlIHdpdGggQVBJKVxuICAgICAgICAgICAgICAgICAgcmVzb2x2ZSh7IGlkVG9rZW46IHNlc3Npb24uZ2V0SWRUb2tlbigpLmdldEp3dFRva2VuKCksIHVzZXJEZXRhaWxzIH0pO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7IGJ5cGFzc0NhY2hlOiB0cnVlIH1cbiAgICAgICAgICApO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuICAvKipcbiAgICogSGVscGVyIHRvIHJlZnJlc2ggdGhlIHNlc3Npb24gZXZlcnkgTiBtaW51dGVzLlxuICAgKi9cbiAgcHJpdmF0ZSByZWZyZXNoU2Vzc2lvbih1c2VyOiBDb2duaXRvVXNlciwgcmVmcmVzaFRva2VuOiBzdHJpbmcsIGNhbGxiYWNrOiAoZnJlc2hJZFRva2VuOiBzdHJpbmcpID0+IHZvaWQpOiB2b2lkIHtcbiAgICB1c2VyLnJlZnJlc2hTZXNzaW9uKFxuICAgICAgbmV3IENvZ25pdG9SZWZyZXNoVG9rZW4oeyBSZWZyZXNoVG9rZW46IHJlZnJlc2hUb2tlbiB9KSxcbiAgICAgIChlcnI6IEVycm9yLCBzZXNzaW9uOiBDb2duaXRvVXNlclNlc3Npb24pOiB2b2lkID0+IHtcbiAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgIC8vIHRyeSBhZ2FpbiBpbiAxIG1pbnV0ZVxuICAgICAgICAgIHNldFRpbWVvdXQoKCk6IHZvaWQgPT4gdGhpcy5yZWZyZXNoU2Vzc2lvbih1c2VyLCByZWZyZXNoVG9rZW4sIGNhbGxiYWNrKSwgMSAqIDYwICogMTAwMCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gKGFzeW5jKSBzYXZlIHRoZSByZWZyZXNoIHRva2VuIHNvIGl0IGNhbiBiZSBhY2Nlc3NlZCBieSBvdGhlciBwcm9jZWR1cmVzXG4gICAgICAgICAgdGhpcy5zdG9yYWdlLnNldCgnQXV0aFJlZnJlc2hUb2tlbicsIHNlc3Npb24uZ2V0UmVmcmVzaFRva2VuKCkuZ2V0VG9rZW4oKSk7XG4gICAgICAgICAgLy8gcmVwZWF0IGV2ZXJ5IDE1IG1pbnV0ZXNcbiAgICAgICAgICBzZXRUaW1lb3V0KFxuICAgICAgICAgICAgKCk6IHZvaWQgPT4gdGhpcy5yZWZyZXNoU2Vzc2lvbih1c2VyLCBzZXNzaW9uLmdldFJlZnJlc2hUb2tlbigpLmdldFRva2VuKCksIGNhbGxiYWNrKSxcbiAgICAgICAgICAgIDE1ICogNjAgKiAxMDAwXG4gICAgICAgICAgKTtcbiAgICAgICAgICAvLyBydW4gdGhlIGNhbGxiYWNrIGFjdGlvbiwgaWYgc2V0XG4gICAgICAgICAgaWYgKGNhbGxiYWNrKSBjYWxsYmFjayhzZXNzaW9uLmdldElkVG9rZW4oKS5nZXRKd3RUb2tlbigpKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICk7XG4gIH1cbiAgLyoqXG4gICAqIFJ1biBzb21lIHBvc3QtYXV0aCBjaGVja3MsIGJhc2VkIG9uIHRoZSB1c2VycyBncm91cHMgYW5kIG9uIHRoZSBhcHAncyBjb25maWd1cmF0aW9uOlxuICAgKiAgLSB1c2VycyBpbiB0aGUgQ29nbml0bydzIFwiYWRtaW5zXCIgZ3J1cCBza2lwIGFsbCB0aGUgZm9sbG93aW5nIHJ1bGVzLlxuICAgKiAgLSB1c2VycyBpbiB0aGUgQ29nbml0bydzIFwicm9ib3RzXCIgZ3JvdXAgY2FuJ3Qgc2lnbi1pbnRvIGZyb250LWVuZHMgKHRoZXkgc2VydmUgb25seSBiYWNrLWVuZCBwdXJwb3NlcykuXG4gICAqICAtIGlmIGBlbnYuaWRlYS5hdXRoLnNpbmdsZVNpbXVsdGFuZW91c1Nlc3Npb25gIGlzIG9uLCBtYWtlIHN1cmUgdGhlcmUgaXMgb25seSBvbmUgYWN0aXZlIHNlc3Npb24gcGVyIHVzZXIuXG4gICAqL1xuICBwcml2YXRlIHJ1blBvc3RBdXRoQ2hlY2tzKHVzZXJEZXRhaWxzOiBhbnksIGNhbGxiYWNrOiAoZXJyPzogRXJyb3IpID0+IHZvaWQpOiB2b2lkIHwgUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgZ3JvdXBzOiBzdHJpbmdbXSA9IHVzZXJEZXRhaWxzWydncm91cHMnXTtcbiAgICAvLyBza2lwIGNoZWNrcyBpZiB0aGUgdXNlciBpcyBpbiB0aGUgXCJhZG1pbnNcIiBncm91cFxuICAgIGNvbnN0IGlzQWRtaW4gPSBncm91cHMuc29tZSh4ID0+IHggPT09ICdhZG1pbnMnKTtcbiAgICBpZiAoaXNBZG1pbikgcmV0dXJuIGNhbGxiYWNrKCk7XG4gICAgLy8gdXNlcnMgaW4gdGhlIFwicm9ib3RzXCIgZ3JvdXAgY2FuJ3Qgc2lnbi1pbnRvIGZyb250LWVuZHMgKHRoZXkgc2VydmUgb25seSBiYWNrLWVuZCBwdXJwb3NlcylcbiAgICBjb25zdCBpc1JvYm90ID0gZ3JvdXBzLnNvbWUoeCA9PiB4ID09PSAncm9ib3RzJyk7XG4gICAgaWYgKGlzUm9ib3QpIHJldHVybiBjYWxsYmFjayhuZXcgRXJyb3IoJ1JPQk9UX1VTRVInKSk7XG4gICAgLy8gaW4gY2FzZSB0aGUgcHJvamVjdCBsaW1pdHMgZWFjaCBhY2NvdW50IHRvIG9ubHkgb25lIHNpbXVsdGFuZW91cyBzZXNzaW9uLCBydW4gYSBjaGVja1xuICAgIGlmIChlbnYuaWRlYS5hdXRoLnNpbmdsZVNpbXVsdGFuZW91c1Nlc3Npb24pIHJldHVybiB0aGlzLmNoZWNrRm9yU2ltdWx0YW5lb3VzU2Vzc2lvbnModXNlckRldGFpbHMsIGNhbGxiYWNrKTtcbiAgICAvLyBvdGhlcndpc2UsIHdlJ3JlIGRvbmVcbiAgICBjYWxsYmFjaygpO1xuICB9XG4gIC8qKlxuICAgKiBDaGVjayB3aGV0aGVyIHRoZSB1c2VyIHNpZ25lZC1pbnRvIG11bHRpcGxlIGRldmljZXMuXG4gICAqL1xuICBwcml2YXRlIGFzeW5jIGNoZWNrRm9yU2ltdWx0YW5lb3VzU2Vzc2lvbnModXNlckRldGFpbHM6IGFueSwgY2FsbGJhY2s6IChlcnI/OiBFcnJvcikgPT4gdm9pZCk6IFByb21pc2U8dm9pZD4ge1xuICAgIC8vIGdldCBvciBjcmVhdGUgYSBrZXkgZm9yIHRoZSBjdXJyZW50IGRldmljZSAofnJhbmRvbSlcbiAgICBsZXQgY3VycmVudERldmljZUtleSA9IGF3YWl0IHRoaXMuc3RvcmFnZS5nZXQoJ0F1dGhEZXZpY2VLZXknKTtcbiAgICBpZiAoIWN1cnJlbnREZXZpY2VLZXkpIHtcbiAgICAgIGNvbnN0IHJhbmRvbUtleSA9IE1hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnN1YnN0cmluZygxMCk7XG4gICAgICBjdXJyZW50RGV2aWNlS2V5ID0gcmFuZG9tS2V5LmNvbmNhdChTdHJpbmcoRGF0ZS5ub3coKSkpO1xuICAgICAgYXdhaXQgdGhpcy5zdG9yYWdlLnNldCgnQXV0aERldmljZUtleScsIGN1cnJlbnREZXZpY2VLZXkpO1xuICAgIH1cbiAgICAvLyBjaGVjayB3aGV0aGVyIHRoZSBsYXN0IGRldmljZSB0byBzaWduLWludG8gdGhpcyBwcm9qZWN0IChpZiBhbnkpIGlzIHRoZSBjdXJyZW50IG9uZVxuICAgIGNvbnN0IGxhc3REZXZpY2VUb1NpZ25JbnRvVGhpc1Byb2plY3QgPSB1c2VyRGV0YWlsc1tERVZJQ0VfS0VZX0FUVFJJQlVURV07XG4gICAgLy8gaWYgaXQncyB0aGUgZmlyc3QgdXNlcidzIGRldmljZSB0byBzaWduLWluLCBzYXZlIHRoZSByZWZlcmVuY2UgaW4gQ29nbml0byBhbmQgcmVzb2x2ZVxuICAgIGlmICghbGFzdERldmljZVRvU2lnbkludG9UaGlzUHJvamVjdCkge1xuICAgICAgdGhpcy5zZXRDdXJyZW50RGV2aWNlRm9yUHJvamVjdChjdXJyZW50RGV2aWNlS2V5KVxuICAgICAgICAudGhlbigoKTogdm9pZCA9PiBjYWxsYmFjaygpKVxuICAgICAgICAuY2F0Y2goKCk6IHZvaWQgPT4gY2FsbGJhY2sobmV3IEVycm9yKCdDQU5UX1NFVF9ERVZJQ0UnKSkpO1xuICAgICAgLy8gaWYgdGhlIGRldmljZSBkaWRuJ3QgY2hhbmdlLCByZXNvbHZlXG4gICAgfSBlbHNlIGlmIChsYXN0RGV2aWNlVG9TaWduSW50b1RoaXNQcm9qZWN0ID09PSBjdXJyZW50RGV2aWNlS2V5KSBjYWxsYmFjaygpO1xuICAgIC8vIG90aHdlcndpc2UsIHJlcG9ydCB0aGVyZSBpcyBtb3JlIHRoYW4gb25lIHNpbXVsdGFuZW91cyBzZXNzaW9uXG4gICAgZWxzZSBjYWxsYmFjayhuZXcgRXJyb3IoJ1NJTVVMVEFORU9VU19TRVNTSU9OJykpO1xuICB9XG4gIC8qKlxuICAgKiBTZXQgKG9yIHJlc2V0KSB0aGUgY3VycmVudCB1c2VyJ3MgZGV2aWNlIChieSBrZXkpIGluIHRoZSBjdXJyZW50IHByb2plY3QgKHN0b3JlZCBpbiBDb2duaXRvKS5cbiAgICovXG4gIHByaXZhdGUgc2V0Q3VycmVudERldmljZUZvclByb2plY3QoZGV2aWNlS2V5Pzogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgYXR0cmlidXRlczogYW55ID0ge307XG4gICAgLy8gbm90ZTogYW4gZW1wdHkgc3RyaW5nIHdpbGwgcmVtb3ZlIHRoZSBhdHRyaWJ1dGUgZnJvbSBDb2duaXRvXG4gICAgYXR0cmlidXRlc1tERVZJQ0VfS0VZX0FUVFJJQlVURV0gPSBkZXZpY2VLZXkgfHwgJyc7XG4gICAgcmV0dXJuIHRoaXMudXBkYXRlVXNlckF0dHJpYnV0ZXMoYXR0cmlidXRlcyk7XG4gIH1cbiAgLyoqXG4gICAqIFVwZGF0ZSB0aGUgY3VycmVudGx5IGxvZ2dlZCBpbiB1c2VyJ3MgYXR0cmlidXRlcy5cbiAgICovXG4gIHVwZGF0ZVVzZXJBdHRyaWJ1dGVzKGF0dHJpYnV0ZXM6IGFueSk6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KTogdm9pZCA9PiB7XG4gICAgICAvLyBwcmVwYXJlIHRoZSBhdHRyaWJ1dGVzIHdlIHdhbnQgdG8gY2hhbmdlXG4gICAgICBjb25zdCBhdHRycyA9IG5ldyBBcnJheTxhbnk+KCk7XG4gICAgICBmb3IgKGNvbnN0IHByb3AgaW4gYXR0cmlidXRlcylcbiAgICAgICAgaWYgKGF0dHJpYnV0ZXNbcHJvcF0gIT09IHVuZGVmaW5lZCkgYXR0cnMucHVzaCh0aGlzLnByZXBhcmVVc2VyQXR0cmlidXRlKHByb3AsIGF0dHJpYnV0ZXNbcHJvcF0pKTtcbiAgICAgIGNvbnN0IHVzZXIgPSB0aGlzLnVzZXJQb29sLmdldEN1cnJlbnRVc2VyKCk7XG4gICAgICBpZiAoIXVzZXIpIHJldHVybiByZWplY3QoKTtcbiAgICAgIC8vIHdlIG5lZWQgdG8gZ2V0IHRoZSBzZXNzaW9uIGJlZm9yZSB0byBtYWtlIGNoYW5nZXNcbiAgICAgIHVzZXIuZ2V0U2Vzc2lvbigoZXJyOiBFcnJvcik6IHZvaWQgPT4ge1xuICAgICAgICBpZiAoZXJyKSByZWplY3QoZXJyKTtcbiAgICAgICAgZWxzZSB1c2VyLnVwZGF0ZUF0dHJpYnV0ZXMoYXR0cnMsIChlOiBFcnJvcik6IHZvaWQgPT4gKGUgPyByZWplY3QoZSkgOiByZXNvbHZlKCkpKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlIHRoZSBwYXNzd29yZCBhZ2FpbnN0IHRoZSBwb2xpY3kgc2V0IGluIHRoZSBlbnZpcm9ubWVudHMgY29uZmlndXJhdGlvbi5cbiAgICogSW4gY2FzZSB0aGVyZSBhcmUgZXJyb3JzLCB0aGV5IGFyZSByZXR1cm5lZCBhcyBhbiBhcnJheSBvZiBzdHJpbmdzLlxuICAgKi9cbiAgdmFsaWRhdGVQYXNzd29yZEFnYWluc3RQb2xpY3kocGFzc3dvcmQ6IHN0cmluZyk6IHN0cmluZ1tdIHtcbiAgICBjb25zdCBlcnJvcnMgPSBbXTtcbiAgICBpZiAocGFzc3dvcmQ/LnRyaW0oKS5sZW5ndGggPCB0aGlzLnBhc3N3b3JkUG9saWN5Lm1pbkxlbmd0aCkgZXJyb3JzLnB1c2goJ01JTl9MRU5HVEgnKTtcbiAgICBpZiAodGhpcy5wYXNzd29yZFBvbGljeS5yZXF1aXJlRGlnaXRzICYmICEvXFxkLy50ZXN0KHBhc3N3b3JkKSkgZXJyb3JzLnB1c2goJ1JFUVVJUkVfRElHSVRTJyk7XG4gICAgaWYgKHRoaXMucGFzc3dvcmRQb2xpY3kucmVxdWlyZUxvd2VyY2FzZSAmJiAhL1thLXpdLy50ZXN0KHBhc3N3b3JkKSkgZXJyb3JzLnB1c2goJ1JFUVVJUkVfTE9XRVJDQVNFJyk7XG4gICAgaWYgKHRoaXMucGFzc3dvcmRQb2xpY3kucmVxdWlyZVN5bWJvbHMgJiYgIS9bXFxeXFwkXFwqXFwuXFxfXFx+XFxgXFwrXFw9QFxcIVxcP1xcPlxcPFxcOlxcO1xcXFxcXCxcXCNcXCVcXCZdLy50ZXN0KHBhc3N3b3JkKSlcbiAgICAgIGVycm9ycy5wdXNoKCdSRVFVSVJFX1NZTUJPTFMnKTtcbiAgICBpZiAodGhpcy5wYXNzd29yZFBvbGljeS5yZXF1aXJlVXBwZXJjYXNlICYmICEvW0EtWl0vLnRlc3QocGFzc3dvcmQpKSBlcnJvcnMucHVzaCgnUkVRVUlSRV9VUFBFUkNBU0UnKTtcbiAgICByZXR1cm4gZXJyb3JzO1xuICB9XG4gIC8qKlxuICAgKiBHZXQgYSBjb21wbGV0ZSBwYXNzd29yZCBwb2xpY3kgcGF0dGVybiwgYmFzZWQgb24gdGhlIGVudmlyb25tZW50cyBjb25maWd1cmF0aW9uLCB0byB1c2Ugb24gcGFzc3dvcmQgaW5wdXQgZmllbGRzLlxuICAgKiBOb3RlOiBzb21lIG9mIHRoZSBzeW1ib2xzIGNvdWxkbid0IGJlIGluY2x1ZGVkIGJlY2F1c2UgdW5zdXBwb3J0ZWQgYnkgdGhlIGlucHV0W3BhdHRlcm5dIGF0dHJpYnV0ZS5cbiAgICovXG4gIGdldFBhc3N3b3JkUG9saWN5UGF0dGVybkZvcklucHV0KCk6IHN0cmluZyB7XG4gICAgbGV0IHBhdHRlcm4gPSAnJztcbiAgICBpZiAodGhpcy5wYXNzd29yZFBvbGljeS5yZXF1aXJlRGlnaXRzKSBwYXR0ZXJuICs9IGAoPz0uKlswLTldKWA7XG4gICAgaWYgKHRoaXMucGFzc3dvcmRQb2xpY3kucmVxdWlyZUxvd2VyY2FzZSkgcGF0dGVybiArPSBgKD89LipbYS16XSlgO1xuICAgIGlmICh0aGlzLnBhc3N3b3JkUG9saWN5LnJlcXVpcmVTeW1ib2xzKSBwYXR0ZXJuICs9IGAoPz0uKltcXF5cXCRcXCpcXC5cXF9cXH5cXGBcXCtcXD1AXFwhXFw/XFw+XFw8XFw6XFw7XFxcXFxcLFxcI1xcJVxcJl0pYDtcbiAgICBpZiAodGhpcy5wYXNzd29yZFBvbGljeS5yZXF1aXJlVXBwZXJjYXNlKSBwYXR0ZXJuICs9IGAoPz0uKltBLVpdKWA7XG4gICAgcGF0dGVybiArPSBgLnske3RoaXMucGFzc3dvcmRQb2xpY3kubWluTGVuZ3RofSx9YDtcbiAgICByZXR1cm4gcGF0dGVybjtcbiAgfVxufVxuXG4vKipcbiAqIFRoZSBwb3NzaWJsZSBhY3Rpb25zIGZvbGxvd2luZyBhIHN1Y2Nlc3NmdWwgbG9naW4uXG4gKi9cbmV4cG9ydCBlbnVtIExvZ2luT3V0Y29tZUFjdGlvbnMge1xuICBOT05FID0gJ25vbmUnLFxuICBORVdfUEFTU1dPUkQgPSAnbmV3UGFzc3dvcmQnLFxuICBNRkFfQ0hBTExFTkdFID0gJ21mYUNoYWxsZW5nZScsXG4gIE1GQV9TRVRVUCA9ICdtZmFTZXR1cCdcbn1cbiJdfQ==
477
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vbW9kdWxlcy9hdXRoL3NyYy9hdXRoLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUNMLHFCQUFxQixFQUNyQixXQUFXLEVBQ1gsb0JBQW9CLEVBQ3BCLGVBQWUsRUFDZixtQkFBbUIsRUFJcEIsTUFBTSw0QkFBNEIsQ0FBQztBQUNwQyxPQUFPLEVBQUUsZUFBZSxFQUFzQixNQUFNLG9CQUFvQixDQUFDOzs7QUFFekU7Ozs7R0FJRztBQUVILE1BQU0sT0FBTyxlQUFlO0lBbUIxQixZQUFvQixPQUEyQjtRQUEzQixZQUFPLEdBQVAsT0FBTyxDQUFvQjtRQWxCckMsUUFBRyxHQUFHLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQztRQW1CdEMsSUFBSSxDQUFDLGtCQUFrQixHQUFHLFNBQVMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDbEUsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLGVBQWUsQ0FBQztZQUNsQyxVQUFVLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLFVBQVU7WUFDM0MsUUFBUSxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0I7U0FDaEQsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQztRQUN4RSxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FB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QUFTLElBQUksQ0FBQztRQUNsRCxPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDOzhHQXBkVSxlQUFlO2tIQUFmLGVBQWUsY0FERixNQUFNOzsyRkFDbkIsZUFBZTtrQkFEM0IsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUU7O0FBd2RsQzs7R0FFRztBQUNILE1BQU0sQ0FBTixJQUFZLG1CQUtYO0FBTEQsV0FBWSxtQkFBbUI7SUFDN0Isb0NBQWEsQ0FBQTtJQUNiLG1EQUE0QixDQUFBO0lBQzVCLHFEQUE4QixDQUFBO0lBQzlCLDZDQUFzQixDQUFBO0FBQ3hCLENBQUMsRUFMVyxtQkFBbUIsS0FBbkIsbUJBQW1CLFFBSzlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBBdXRoZW50aWNhdGlvbkRldGFpbHMsXG4gIENvZ25pdG9Vc2VyLFxuICBDb2duaXRvVXNlckF0dHJpYnV0ZSxcbiAgQ29nbml0b1VzZXJQb29sLFxuICBDb2duaXRvUmVmcmVzaFRva2VuLFxuICBDb2duaXRvVXNlclNlc3Npb24sXG4gIElTaWduVXBSZXN1bHQsXG4gIENoYWxsZW5nZU5hbWVcbn0gZnJvbSAnYW1hem9uLWNvZ25pdG8taWRlbnRpdHktanMnO1xuaW1wb3J0IHsgSURFQUVudmlyb25tZW50LCBJREVBU3RvcmFnZVNlcnZpY2UgfSBmcm9tICdAaWRlYS1pb25pYy9jb21tb24nO1xuXG4vKipcbiAqIENvZ25pdG8gd3JhcHBlciB0byBtYW5hZ2UgdGhlIGF1dGhlbnRpY2F0aW9uIGZsb3cuXG4gKlxuICogTm90ZTogaW4gSURFQSdzIENvZ25pdG8gdXNlcnMgcG9vbHMsIHRoZSBlbWFpbCBpcyBhbiBhbGlhcyBvZiB0aGUgdXNlcm5hbWUuXG4gKi9cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgSURFQUF1dGhTZXJ2aWNlIHtcbiAgcHJvdGVjdGVkIGVudiA9IGluamVjdChJREVBRW52aXJvbm1lbnQpO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgQ29nbml0bydzIHVzZXIgYXR0cmlidXRlIHdoaWNoIGNvbnRhaW5zIHRoZSBrZXkgb2YgdGhlIGxhc3QgZGV2aWNlIHRvIGxvZ2luIGluIHRoaXMgcHJvamVjdC5cbiAgICovXG4gIHByb3RlY3RlZCBkZXZpY2VLZXlBdHRyaWJ1dGU6IHN0cmluZztcblxuICBwcml2YXRlIHVzZXJQb29sOiBDb2duaXRvVXNlclBvb2w7XG5cbiAgY2hhbGxlbmdlVXNlcm5hbWU6IHN0cmluZztcbiAgcHJpdmF0ZSBjaGFsbGVuZ2VQYXNzd29yZDogc3RyaW5nO1xuXG4gIHByaXZhdGUgbmV3QWNjb3VudEp1c3RSZWdpc3RlcmVkOiBzdHJpbmc7XG5cbiAgcHJpdmF0ZSBtZmFQcm9qZWN0TmFtZTogc3RyaW5nO1xuXG4gIHByaXZhdGUgcGFzc3dvcmRQb2xpY3k6IGFueTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHN0b3JhZ2U6IElERUFTdG9yYWdlU2VydmljZSkge1xuICAgIHRoaXMuZGV2aWNlS2V5QXR0cmlidXRlID0gJ2N1c3RvbTonLmNvbmNhdCh0aGlzLmVudi5pZGVhLnByb2plY3QpO1xuICAgIHRoaXMudXNlclBvb2wgPSBuZXcgQ29nbml0b1VzZXJQb29sKHtcbiAgICAgIFVzZXJQb29sSWQ6IHRoaXMuZW52LmF3cy5jb2duaXRvLnVzZXJQb29sSWQsXG4gICAgICBDbGllbnRJZDogdGhpcy5lbnYuYXdzLmNvZ25pdG8udXNlclBvb2xDbGllbnRJZFxuICAgIH0pO1xuICAgIHRoaXMubWZhUHJvamVjdE5hbWUgPSB0aGlzLmVudi5pZGVhLmF1dGgudGl0bGUgPz8gdGhpcy5lbnYuaWRlYS5wcm9qZWN0O1xuICAgIHRoaXMucGFzc3dvcmRQb2xpY3kgPSB0aGlzLmVudi5pZGVhLmF1dGgucGFzc3dvcmRQb2xpY3k7XG4gIH1cblxuICAvKipcbiAgICogUHJlcGFyZSB0aGUgbmVjZXNzYXJ5IHN0cnVjdHVyZSB0byBnZXQgYXV0aG9yaXplZCBpbiBDb2duaXRvLlxuICAgKi9cbiAgcHJpdmF0ZSBwcmVwYXJlQXV0aERldGFpbHModXNlcm5hbWU6IHN0cmluZywgcHdkOiBzdHJpbmcpOiBBdXRoZW50aWNhdGlvbkRldGFpbHMge1xuICAgIHJldHVybiBuZXcgQXV0aGVudGljYXRpb25EZXRhaWxzKHsgVXNlcm5hbWU6IHVzZXJuYW1lLCBQYXNzd29yZDogcHdkIH0pO1xuICB9XG4gIC8qKlxuICAgKiBQcmVwYXJlIHRoZSBuZWNlc3Nhcnkgc3RydWN0dXJlIHRvIGlkZW50aWZ5IGEgQ29nbml0byB1c2VyLlxuICAgKi9cbiAgcHJlcGFyZUNvZ25pdG9Vc2VyKHVzZXJuYW1lOiBzdHJpbmcpOiBDb2duaXRvVXNlciB7XG4gICAgcmV0dXJuIG5ldyBDb2duaXRvVXNlcih7IFVzZXJuYW1lOiB1c2VybmFtZSwgUG9vbDogdGhpcy51c2VyUG9vbCB9KTtcbiAgfVxuICAvKipcbiAgICogUHJlcGFyZSBhIHVzZXIgYXR0cmlidXRlICh0aGV5IGFyZSBhbGwgc3RyaW5ncykgaW4gQ29nbml0bydzIGZvcm1hdC5cbiAgICovXG4gIHByaXZhdGUgcHJlcGFyZVVzZXJBdHRyaWJ1dGUobmFtZTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKTogQ29nbml0b1VzZXJBdHRyaWJ1dGUge1xuICAgIHJldHVybiBuZXcgQ29nbml0b1VzZXJBdHRyaWJ1dGUoeyBOYW1lOiBuYW1lLCBWYWx1ZTogdmFsdWUgfSk7XG4gIH1cblxuICAvKipcbiAgICogUGVyZm9ybSBhIGxvZ2luIHRocm91Z2ggdXNlcm5hbWUgYW5kIHBhc3N3b3JkLlxuICAgKi9cbiAgbG9naW4odXNlcm5hbWU6IHN0cmluZywgcGFzc3dvcmQ6IHN0cmluZyk6IFByb21pc2U8TG9naW5PdXRjb21lQWN0aW9ucz4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KTogdm9pZCA9PiB7XG4gICAgICBjb25zdCB1c2VyID0gdGhpcy5wcmVwYXJlQ29nbml0b1VzZXIodXNlcm5hbWUpO1xuICAgICAgdXNlci5hdXRoZW50aWNhdGVVc2VyKHRoaXMucHJlcGFyZUF1dGhEZXRhaWxzKHVzZXJuYW1lLCBwYXNzd29yZCksIHtcbiAgICAgICAgb25TdWNjZXNzOiAoKTogdm9pZCA9PlxuICAgICAgICAgIHJlc29sdmUodGhpcy5lbnYuaWRlYS5hdXRoLmZvcmNlTG9naW5XaXRoTUZBID8gTG9naW5PdXRjb21lQWN0aW9ucy5NRkFfU0VUVVAgOiBMb2dpbk91dGNvbWVBY3Rpb25zLk5PTkUpLFxuICAgICAgICBvbkZhaWx1cmU6IChlcnI6IEVycm9yKTogdm9pZCA9PiByZWplY3QoZXJyKSxcbiAgICAgICAgbmV3UGFzc3dvcmRSZXF1aXJlZDogKCk6IHZvaWQgPT4ge1xuICAgICAgICAgIHRoaXMuY2hhbGxlbmdlVXNlcm5hbWUgPSB1c2VybmFtZTtcbiAgICAgICAgICB0aGlzLmNoYWxsZW5nZVBhc3N3b3JkID0gcGFzc3dvcmQ7XG4gICAgICAgICAgcmVzb2x2ZShMb2dpbk91dGNvbWVBY3Rpb25zLk5FV19QQVNTV09SRCk7XG4gICAgICAgIH0sXG4gICAgICAgIHRvdHBSZXF1aXJlZDogKCk6IHZvaWQgPT4ge1xuICAgICAgICAgIHRoaXMuY2hhbGxlbmdlVXNlcm5hbWUgPSB1c2VybmFtZTtcbiAgICAgICAgICB0aGlzLmNoYWxsZW5nZVBhc3N3b3JkID0gcGFzc3dvcmQ7XG4gICAgICAgICAgcmVzb2x2ZShMb2dpbk91dGNvbWVBY3Rpb25zLk1GQV9DSEFMTEVOR0UpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuICAvKipcbiAgICogQ29tcGxldGUgdGhlIG5ldyBwYXNzd29yZCBmbG93IGluIHRoZSBhdXRoZW50aWNhdGlvbi5cbiAgICovXG4gIGNvbmZpcm1OZXdQYXNzd29yZChuZXdQYXNzd29yZDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpOiB2b2lkID0+IHtcbiAgICAgIGNvbnN0IHVzZXIgPSB0aGlzLnByZXBhcmVDb2duaXRvVXNlcih0aGlzLmNoYWxsZW5nZVVzZXJuYW1lKTtcbiAgICAgIHVzZXIuYXV0aGVudGljYXRlVXNlcih0aGlzLnByZXBhcmVBdXRoRGV0YWlscyh0aGlzLmNoYWxsZW5nZVVzZXJuYW1lLCB0aGlzLmNoYWxsZW5nZVBhc3N3b3JkKSwge1xuICAgICAgICBvblN1Y2Nlc3M6ICgpOiB2b2lkID0+IHJlc29sdmUoKSxcbiAgICAgICAgb25GYWlsdXJlOiAoZXJyOiBFcnJvcik6IHZvaWQgPT4gcmVqZWN0KGVyciksXG4gICAgICAgIG5ld1Bhc3N3b3JkUmVxdWlyZWQ6ICgpOiB2b2lkID0+XG4gICAgICAgICAgdXNlci5jb21wbGV0ZU5ld1Bhc3N3b3JkQ2hhbGxlbmdlKFxuICAgICAgICAgICAgbmV3UGFzc3dvcmQsXG4gICAgICAgICAgICB7fSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgb25TdWNjZXNzOiAoKTogdm9pZCA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5jaGFsbGVuZ2VVc2VybmFtZSA9IG51bGw7XG4gICAgICAgICAgICAgICAgdGhpcy5jaGFsbGVuZ2VQYXNzd29yZCA9IG51bGw7XG4gICAgICAgICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBvbkZhaWx1cmU6IChlcnI6IEVycm9yKTogdm9pZCA9PiByZWplY3QoZXJyKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIClcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG4gIC8qKlxuICAgKiAgQ29tcGxldGUgdGhlIE1GQSBjaGFsbGVuZ2UgZmxvdyBpbiB0aGUgYXV0aGVudGljYXRpb24uXG4gICAqL1xuICBjb21wbGV0ZU1GQUNoYWxsZW5nZShvdHBDb2RlOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCk6IHZvaWQgPT4ge1xuICAgICAgY29uc3QgdXNlciA9IHRoaXMucHJlcGFyZUNvZ25pdG9Vc2VyKHRoaXMuY2hhbGxlbmdlVXNlcm5hbWUpO1xuICAgICAgdXNlci5hdXRoZW50aWNhdGVVc2VyKHRoaXMucHJlcGFyZUF1dGhEZXRhaWxzKHRoaXMuY2hhbGxlbmdlVXNlcm5hbWUsIHRoaXMuY2hhbGxlbmdlUGFzc3dvcmQpLCB7XG4gICAgICAgIG9uU3VjY2VzczogKCk6IHZvaWQgPT4gcmVzb2x2ZSgpLFxuICAgICAgICBvbkZhaWx1cmU6IChlcnI6IEVycm9yKTogdm9pZCA9PiByZWplY3QoZXJyKSxcbiAgICAgICAgdG90cFJlcXVpcmVkOiAoY2hhbGxlbmdlTmFtZTogQ2hhbGxlbmdlTmFtZSk6IHZvaWQgPT5cbiAgICAgICAgICB1c2VyLnNlbmRNRkFDb2RlKFxuICAgICAgICAgICAgb3RwQ29kZSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgb25TdWNjZXNzOiAoKTogdm9pZCA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5jaGFsbGVuZ2VVc2VybmFtZSA9IG51bGw7XG4gICAgICAgICAgICAgICAgdGhpcy5jaGFsbGVuZ2VQYXNzd29yZCA9IG51bGw7XG4gICAgICAgICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBvbkZhaWx1cmU6IGVyciA9PiByZWplY3QoZXJyKVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGNoYWxsZW5nZU5hbWVcbiAgICAgICAgICApXG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuICAvKipcbiAgICogUmVnaXN0ZXIgYSBuZXcgdXNlciBhIHNldCBpdHMgZGVmYXVsdCBhdHRyaWJ1dGVzLlxuICAgKi9cbiAgcmVnaXN0ZXIodXNlcm5hbWU6IHN0cmluZywgcGFzc3dvcmQ6IHN0cmluZywgYXR0cmlidXRlcz86IGFueSk6IFByb21pc2U8Q29nbml0b1VzZXI+IHtcbiAgICBhdHRyaWJ1dGVzID0gYXR0cmlidXRlcyB8fCB7fTtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCk6IHZvaWQgPT4ge1xuICAgICAgLy8gYWRkIGF0dHJpYnV0ZXMgbGlrZSB0aGUgZW1haWwgYWRkcmVzcyBhbmQgdGhlIGZ1bGxuYW1lXG4gICAgICBjb25zdCBhdHRycyA9IFtdO1xuICAgICAgZm9yIChjb25zdCBwcm9wIGluIGF0dHJpYnV0ZXMpXG4gICAgICAgIGlmIChhdHRyaWJ1dGVzW3Byb3BdKSBhdHRycy5wdXNoKHRoaXMucHJlcGFyZVVzZXJBdHRyaWJ1dGUocHJvcCwgYXR0cmlidXRlc1twcm9wXSkpO1xuICAgICAgLy8gYWRkIHRoZSBlbWFpbCwgd2hpY2ggaXMgZXF1YWwgdG8gdGhlIHVzZXJuYW1lIGZvciBtb3N0IG9mIG91ciBQb29sc1xuICAgICAgaWYgKCFhdHRyaWJ1dGVzLmVtYWlsKSBhdHRycy5wdXNoKHRoaXMucHJlcGFyZVVzZXJBdHRyaWJ1dGUoJ2VtYWlsJywgdXNlcm5hbWUpKTtcbiAgICAgIC8vIHJlZ2lzdGVyIHRoZSBuZXcgdXNlciB0byB0aGUgcG9vbFxuICAgICAgdGhpcy51c2VyUG9vbC5zaWduVXAodXNlcm5hbWUsIHBhc3N3b3JkLCBhdHRycywgbnVsbCwgKGVycjogRXJyb3IsIHJlczogSVNpZ25VcFJlc3VsdCk6IHZvaWQgPT4ge1xuICAgICAgICBpZiAoZXJyKSByZXR1cm4gcmVqZWN0KGVycik7XG4gICAgICAgIHRoaXMubmV3QWNjb3VudEp1c3RSZWdpc3RlcmVkID0gdXNlcm5hbWU7XG4gICAgICAgIHJlc29sdmUocmVzLnVzZXIpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cbiAgLyoqXG4gICAqIEluIGNhc2UgIG5ldyBhY2NvdW50IGhhcyBqdXN0IGJlZW4gcmVnaXN0ZXJlZCwgcmV0dXJuIHRoZSB1c2VybmFtZS5cbiAgICovXG4gIGdldE5ld0FjY291bnRKdXN0UmVnaXN0ZXJlZCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLm5ld0FjY291bnRKdXN0UmVnaXN0ZXJlZDtcbiAgfVxuICAvKipcbiAgICogQ29uZmlybSBhIG5ldyByZWdpc3RyYXRpb24gdGhyb3VnaCB0aGUgY29uZmlybWF0aW9uIGNvZGUgc2VudCBieSBDb2duaXRvLlxuICAgKi9cbiAgY29uZmlybVJlZ2lzdHJhdGlvbih1c2VybmFtZTogc3RyaW5nLCBjb2RlOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCk6IHZvaWQgPT4ge1xuICAgICAgdGhpcy5wcmVwYXJlQ29nbml0b1VzZXIodXNlcm5hbWUpLmNvbmZpcm1SZWdpc3RyYXRpb24oY29kZSwgdHJ1ZSwgKGVycjogRXJyb3IpOiB2b2lkID0+XG4gICAgICAgIGVyciA/IHJlamVjdChlcnIpIDogcmVzb2x2ZSgpXG4gICAgICApO1xuICAgIH0pO1xuICB9XG4gIC8qKlxuICAgKiBTZW5kIGFnYWluIGEgY29uZmlybWF0aW9uIGNvZGUgZm9yIGEgbmV3IHJlZ2lzdHJhdGlvbi5cbiAgICovXG4gIHJlc2VuZENvbmZpcm1hdGlvbkNvZGUodXNlcm5hbWU6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KTogdm9pZCA9PiB7XG4gICAgICB0aGlzLnByZXBhcmVDb2duaXRvVXNlcih1c2VybmFtZSkucmVzZW5kQ29uZmlybWF0aW9uQ29kZSgoZXJyOiBFcnJvcik6IHZvaWQgPT4gKGVyciA/IHJlamVjdChlcnIpIDogcmVzb2x2ZSgpKSk7XG4gICAgfSk7XG4gIH1cbiAgLyoqXG4gICAqIExvZ291dCB0aGUgY3VycmVudGx5IHNpZ25lZC1pbiB1c2VyLlxuICAgKi9cbiAgbG9nb3V0KG9wdGlvbnM/OiB7IGdsb2JhbDogYm9vbGVhbiB9KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgb3B0aW9ucyA9IE9iamVjdC5hc3NpZ24oeyBnbG9iYWw6IGZhbHNlIH0sIG9wdGlvbnMpO1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KTogdm9pZCA9PiB7XG4gICAgICAvLyByZW1vdmUgdGhlIHJlZnJlc2ggdG9rZW4gcHJldmlvc2x5IHNhdmVkXG4gICAgICB0aGlzLnN0b3JhZ2UucmVtb3ZlKCdBdXRoUmVmcmVzaFRva2VuJykudGhlbihcbiAgICAgICAgKCk6IFByb21pc2U8dm9pZD4gPT5cbiAgICAgICAgICAvLyByZW1vdmUgdGhlIG9wdGlvbmFsIGF1dGggZGV0YWlsc1xuICAgICAgICAgIHRoaXMuc3RvcmFnZS5yZW1vdmUoJ0F1dGhVc2VyRGV0YWlscycpLnRoZW4oKCk6IHZvaWQgPT4ge1xuICAgICAgICAgICAgLy8gZ2V0IHRoZSB1c2VyIGFuZCB0aGUgc2Vzc2lvblxuICAgICAgICAgICAgY29uc3QgdXNlciA9IHRoaXMudXNlclBvb2wuZ2V0Q3VycmVudFVzZXIoKTtcbiAgICAgICAgICAgIHVzZXIuZ2V0U2Vzc2lvbihhc3luYyAoZXJyOiBFcnJvcik6IFByb21pc2U8dm9pZD4gPT4ge1xuICAgICAgICAgICAgICAvLyBpZiB0aGUgc2Vzc2lvbiBpcyBhY3RpdmUsIHJ1biB0aGUgb25saW5lIHNpZ24tb3V0OyBvdGhlcndpc2UsIG9ubHkgdGhlIGxvY2FsIGRhdGEgaGFzIGJlZW4gZGVsZXRlZFxuICAgICAgICAgICAgICBpZiAoZXJyKSByZXR1cm4gcmVzb2x2ZSgpO1xuICAgICAgICAgICAgICAvLyBpZiBhIHJlZmVyZW5jZSB0byB0aGUgZGV2aWNlIHdhcyBzYXZlZCwgZm9yZ2V0IGl0XG4gICAgICAgICAgICAgIGlmICh0aGlzLmVudi5pZGVhLmF1dGguc2luZ2xlU2ltdWx0YW5lb3VzU2Vzc2lvbikgYXdhaXQgdGhpcy5zZXRDdXJyZW50RGV2aWNlRm9yUHJvamVjdChudWxsKTtcbiAgICAgICAgICAgICAgLy8gc2lnbi1vdXQgZnJvbSB0aGUgcG9vbCAodGVybWluYXRlIHRoZSBjdXJyZW50IHNlc3Npb24gb3IgYWxsIHRoZSBzZXNzaW9ucylcbiAgICAgICAgICAgICAgaWYgKG9wdGlvbnMuZ2xvYmFsKVxuICAgICAgICAgICAgICAgIHVzZXIuZ2xvYmFsU2lnbk91dCh7IG9uU3VjY2VzczogKCk6IHZvaWQgPT4gcmVzb2x2ZSgpLCBvbkZhaWx1cmU6IGVyciA9PiByZWplY3QoZXJyKSB9KTtcbiAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgdXNlci5zaWduT3V0KCk7XG4gICAgICAgICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9KVxuICAgICAgKTtcbiAgICB9KTtcbiAgfVxuICAvKipcbiAgICogU2VuZCBhIHBhc3N3b3JkIHJlc2V0IHJlcXVlc3QuXG4gICAqL1xuICBmb3Jnb3RQYXNzd29yZCh1c2VybmFtZTogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpOiB2b2lkID0+IHtcbiAgICAgIHRoaXMucHJlcGFyZUNvZ25pdG9Vc2VyKHVzZXJuYW1lKS5mb3Jnb3RQYXNzd29yZCh7XG4gICAgICAgIG9uU3VjY2VzczogKCk6IHZvaWQgPT4gcmVzb2x2ZSgpLFxuICAgICAgICBvbkZhaWx1cmU6IChlcnI6IEVycm9yKTogdm9pZCA9PiByZWplY3QoZXJyKVxuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cbiAgLyoqXG4gICAqIENvbmZpcm0gYSBuZXcgcGFzc3dvcmQgYWZ0ZXIgYSBwYXNzd29yZCByZXNldCByZXF1ZXN0LlxuICAgKi9cbiAgY29uZmlybVBhc3N3b3JkKHVzZXJuYW1lOiBzdHJpbmcsIGNvZGU6IHN0cmluZywgbmV3UHdkOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCk6IHZvaWQgPT4ge1xuICAgICAgdGhpcy5wcmVwYXJlQ29nbml0b1VzZXIodXNlcm5hbWUpLmNvbmZpcm1QYXNzd29yZChjb2RlLCBuZXdQd2QsIHtcbiAgICAgICAgb25TdWNjZXNzOiAoKTogdm9pZCA9PiByZXNvbHZlKCksXG4gICAgICAgIG9uRmFpbHVyZTogKGVycjogRXJyb3IpOiB2b2lkID0+IHJlamVjdChlcnIpXG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuICAvKipcbiAgICogR2V0cyB0aGUgVVJMIGZvciBlbmFibGluZyBNRkEuIFRoaXMgVVJMIGNhbiBiZSB1c2VkIHRvIGdlbmVyYXRlIGEgUVIgQ29kZSB0byByZWFkIHdpdGggYW4gYXV0aGVudGljYXRvciBhcHAuXG4gICAqL1xuICBnZXRVUkxGb3JFbmFibGluZ01GQSgpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KTogdm9pZCA9PiB7XG4gICAgICBjb25zdCB1c2VyID0gdGhpcy51c2VyUG9vbC5nZXRDdXJyZW50VXNlcigpO1xuICAgICAgaWYgKCF1c2VyKSByZXR1cm4gcmVqZWN0KCk7XG4gICAgICB1c2VyLmdldFNlc3Npb24oKGVycjogRXJyb3IpOiB2b2lkID0+IHtcbiAgICAgICAgaWYgKGVycikgcmV0dXJuIHJlamVjdChlcnIpO1xuICAgICAgICB1c2VyLmFzc29jaWF0ZVNvZnR3YXJlVG9rZW4oe1xuICAgICAgICAgIGFzc29jaWF0ZVNlY3JldENvZGU6IChzZWNyZXRDb2RlOiBzdHJpbmcpOiB2b2lkID0+XG4gICAgICAgICAgICByZXNvbHZlKGBvdHBhdXRoOi8vdG90cC8ke2VuY29kZVVSSSh0aGlzLm1mYVByb2plY3ROYW1lKX0/c2VjcmV0PSR7c2VjcmV0Q29kZX1gKSxcbiAgICAgICAgICBvbkZhaWx1cmU6IChlcnI6IGFueSk6IHZvaWQgPT4gcmVqZWN0KGVycilcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuICAvKipcbiAgICogQ2hlY2sgd2hldGhlciB0aGUgdXNlciBoYXMgTUZBIGVuYWJsZWQuXG4gICAqL1xuICBjaGVja0lmVXNlckhhc01GQUVuYWJsZWQoYnlwYXNzQ2FjaGUgPSBmYWxzZSk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KTogdm9pZCA9PiB7XG4gICAgICBjb25zdCB1c2VyID0gdGhpcy51c2VyUG9vbC5nZXRDdXJyZW50VXNlcigpO1xuICAgICAgaWYgKCF1c2VyKSByZXR1cm4gcmVqZWN0KCk7XG4gICAgICB1c2VyLmdldFNlc3Npb24oKGVycjogRXJyb3IpOiB2b2lkID0+IHtcbiAgICAgICAgaWYgKGVycikgcmV0dXJuIHJlamVjdChlcnIpO1xuICAgICAgICB1c2VyLmdldFVzZXJEYXRhKFxuICAgICAgICAgIChlcnIsIGRhdGEpOiB2b2lkID0+IHtcbiAgICAgICAgICAgIGlmIChlcnIpIHJldHVybiByZWplY3QoZXJyKTtcbiAgICAgICAgICAgIGNvbnN0IGlzTUZBRW5hYmxlZCA9ICEhKGRhdGEuVXNlck1GQVNldHRpbmdMaXN0ICYmIGRhdGEuVXNlck1GQVNldHRpbmdMaXN0LmluY2x1ZGVzKCdTT0ZUV0FSRV9UT0tFTl9NRkEnKSk7XG4gICAgICAgICAgICByZXNvbHZlKGlzTUZBRW5hYmxlZCk7XG4gICAgICAgICAgfSxcbiAgICAgICAgICB7IGJ5cGFzc0NhY2hlIH1cbiAgICAgICAgKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG4gIC8qKlxuICAgKiBDb25maWd1cmUgYSBNRkEgZGV2aWNlIGZvciB0aGUgdXNlci5cbiAgICovXG4gIHByaXZhdGUgc2V0TUZBRGV2aWNlKG90cDogc3RyaW5nLCBtZmFEZXZpY2VOYW1lOiBzdHJpbmcsIGVuYWJsZWQgPSB0cnVlLCBwcmVmZXJyZWQgPSB0cnVlKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpOiB2b2lkID0+IHtcbiAgICAgIGNvbnN0IHVzZXIgPSB0aGlzLnVzZXJQb29sLmdldEN1cnJlbnRVc2VyKCk7XG4gICAgICBpZiAoIXVzZXIpIHJldHVybiByZWplY3QoKTtcbiAgICAgIHVzZXIuZ2V0U2Vzc2lvbigoZXJyOiBFcnJvcik6IHZvaWQgPT4ge1xuICAgICAgICBpZiAoZXJyKSByZXR1cm4gcmVqZWN0KGVycik7XG4gICAgICAgIHVzZXIudmVyaWZ5U29mdHdhcmVUb2tlbihvdHAsIG1mYURldmljZU5hbWUsIHtcbiAgICAgICAgICBvblN1Y2Nlc3M6ICgpOiB2b2lkID0+XG4gICAgICAgICAgICB1c2VyLnNldFVzZXJNZmFQcmVmZXJlbmNlKG51bGwsIHsgRW5hYmxlZDogZW5hYmxlZCwgUHJlZmVycmVkTWZhOiBwcmVmZXJyZWQgfSwgKGVycjogRXJyb3IpOiB2b2lkID0+XG4gICAgICAgICAgICAgIGVyciA/IHJlamVjdChlcnIpIDogcmVzb2x2ZSgpXG4gICAgICAgICAgICApLFxuICAgICAgICAgIG9uRmFpbHVyZTogKGVycik6IHZvaWQgPT4gcmVqZWN0KGVycilcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuICAvKipcbiAgICogRW5hYmxlIGEgbmV3IE1GQSBkZXZpY2UgZm9yIHRoZSB1c2VyIGJ5IGluc2VydGluZyBhbiBPVFAgY29kZSBnZW5lcmF0ZWQgYnkgaXQuXG4gICAqL1xuICBlbmFibGVNRkEob3RwOiBzdHJpbmcsIG1mYURldmljZU5hbWUgPSAnZGVmYXVsdCcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gdGhpcy5zZXRNRkFEZXZpY2Uob3RwLCBtZmFEZXZpY2VOYW1lLCB0cnVlLCB0cnVlKTtcbiAgfVxuICAvKipcbiAgICogRGlzYWJsZSBNRkEgZm9yIGEgdXNlciBieSBpbnNlcnRpbmcgYW4gT1RQIGNvZGUgZ2VuZXJhdGVkIGJ5IGl0LlxuICAgKi9cbiAgZGlzYWJsZU1GQShvdHA6IHN0cmluZywgbWZhRGV2aWNlTmFtZSA9ICdkZWZhdWx0Jyk6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiB0aGlzLnNldE1GQURldmljZShvdHAsIG1mYURldmljZU5hbWUsIGZhbHNlLCBmYWxzZSk7XG4gIH1cbiAgLyoqXG4gICAqIENoZWNrIGlmIGEgdXNlciBpcyBjdXJyZW50bHkgYXV0aGVudGljYXRlZC5cbiAgICogQHBhcmFtIG9mZmxpbmVBbGxvd2VkIGlmIHNldCBhbmQgaWYgb2ZmbGluZSwgc2tpcCBhdXRoZW50aWNhdGlvbiBhbmQgcmV0cmlldmUgZGF0YSBsb2NhbGx5XG4gICAqIEBwYXJhbSBnZXRGcmVzaElkVG9rZW5PbkV4cCBjYiBmdW5jdGlvbiB0byBleGVjdXRlIHdoZW4gdGhlIGlkVG9rZW4gaXMgcmVmcmVzaGVkXG4gICAqL1xuICBpc0F1dGhlbnRpY2F0ZWQob2ZmbGluZUFsbG93ZWQ6IGJvb2xlYW4sIGdldEZyZXNoSWRUb2tlbk9uRXhwPzogKGZyZXNoSWRUb2tlbjogc3RyaW5nKSA9PiB2b2lkKTogUHJvbWlzZTxhbnk+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCk6IHZvaWQgPT4ge1xuICAgICAgaWYgKG9mZmxpbmVBbGxvd2VkICYmICFuYXZpZ2F0b3Iub25MaW5lKSB7XG4gICAgICAgIHRoaXMuc3RvcmFnZS5nZXQoJ0F1dGhVc2VyRGV0YWlscycpLnRoZW4odXNlckRldGFpbHMgPT4gcmVzb2x2ZSh7IGlkVG9rZW46IG51bGwsIHVzZXJEZXRhaWxzIH0pKTtcbiAgICAgICAgLy8gcmUtZXhlY3V0ZSB0aGUgbWV0aG9kIHdoZW4gYmFjayBvbmxpbmUsIHNvIHRoYXQgeW91IGNhbiByZXRyaWV2ZSBhIHRva2VuIHRvIG1ha2UgcmVxdWVzdHNcbiAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXG4gICAgICAgICAgJ29ubGluZScsXG4gICAgICAgICAgKCk6IFByb21pc2U8dm9pZD4gPT5cbiAgICAgICAgICAgIHRoaXMuaXNBdXRoZW50aWNhdGVkKHRydWUsIGdldEZyZXNoSWRUb2tlbk9uRXhwKVxuICAgICAgICAgICAgICAvLyBzZXQgdGhlIG5ldyB0b2tlbiBhcyBpZiBpdCB3YXMgcmVmcmVzaGVkXG4gICAgICAgICAgICAgIC50aGVuKHJlc3VsdCA9PiBnZXRGcmVzaElkVG9rZW5PbkV4cChyZXN1bHQuaWRUb2tlbikpXG4gICAgICAgICk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCB1c2VyID0gdGhpcy51c2VyUG9vbC5nZXRDdXJyZW50VXNlcigpO1xuICAgICAgICBpZiAoIXVzZXIpIHJldHVybiByZWplY3QoKTtcbiAgICAgICAgdXNlci5nZXRTZXNzaW9uKChlcnI6IEVycm9yLCBzZXNzaW9uOiBDb2duaXRvVXNlclNlc3Npb24pOiB2b2lkID0+IHtcbiAgICAgICAgICBpZiAoZXJyKSByZXR1cm4gcmVqZWN0KGVycik7XG4gICAgICAgICAgdXNlci5nZXRVc2VyRGF0YShcbiAgICAgICAgICAgIChlcnIsIGRhdGEpOiB2b2lkID0+IHtcbiAgICAgICAgICAgICAgaWYgKGVycikgcmV0dXJuIHJlamVjdChlcnIpO1xuICAgICAgICAgICAgICBjb25zdCBpc01GQUVuYWJsZWQgPSAhIShcbiAgICAgICAgICAgICAgICBkYXRhLlVzZXJNRkFTZXR0aW5nTGlzdCAmJiBkYXRhLlVzZXJNRkFTZXR0aW5nTGlzdC5pbmNsdWRlcygnU09GVFdBUkVfVE9LRU5fTUZBJylcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgaWYgKCFpc01GQUVuYWJsZWQgJiYgdGhpcy5lbnYuaWRlYS5hdXRoLmZvcmNlTG9naW5XaXRoTUZBKVxuICAgICAgICAgICAgICAgIHJldHVybiByZWplY3QobmV3IEVycm9yKExvZ2luT3V0Y29tZUFjdGlvbnMuTUZBX1NFVFVQKSk7XG4gICAgICAgICAgICAgIHVzZXIuZ2V0VXNlckF0dHJpYnV0ZXMoKGU6IEVycm9yLCBhdHRyaWJ1dGVzOiBDb2duaXRvVXNlckF0dHJpYnV0ZVtdKTogdm9pZCA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGUpIHJldHVybiByZWplY3QoZSk7XG4gICAgICAgICAgICAgICAgLy8gcmVtYXAgdXNlciBhdHRyaWJ1dGVzXG4gICAgICAgICAgICAgICAgY29uc3QgdXNlckRldGFpbHM6IGFueSA9IHt9O1xuICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXMuZm9yRWFjaCgoYTogQ29nbml0b1VzZXJBdHRyaWJ1dGUpOiBzdHJpbmcgPT4gKHVzZXJEZXRhaWxzW2EuZ2V0TmFtZSgpXSA9IGEuZ2V0VmFsdWUoKSkpO1xuICAgICAgICAgICAgICAgIC8vIGFkZCB0aGUgdXNlcidzIGdyb3VwcyB0byB0aGUgYXR0cmlidXRlc1xuICAgICAgICAgICAgICAgIGNvbnN0IHNlc3Npb25JbmZvID0gc2Vzc2lvbi5nZXRBY2Nlc3NUb2tlbigpLmRlY29kZVBheWxvYWQoKTtcbiAgICAgICAgICAgICAgICBjb25zdCBncm91cHM6IHN0cmluZ1tdID0gc2Vzc2lvbkluZm9bJ2NvZ25pdG86Z3JvdXBzJ10gfHwgW107XG4gICAgICAgICAgICAgICAgdXNlckRldGFpbHNbJ2dyb3VwcyddID0gZ3JvdXBzO1xuICAgICAgICAgICAgICAgIC8vIHJ1biBzb21lIGNoZWNrcyBjb25zaWRlcmluZyB0aGUgdXNlcidzIGdyb3VwcyBhbmQgZGV2aWNlcyAoYmFzZWQgb24gdGhlIHByb2plY3QncyBjb25maWd1cmF0aW9uKVxuICAgICAgICAgICAgICAgIHRoaXMucnVuUG9zdEF1dGhDaGVja3ModXNlckRldGFpbHMsIGVyciA9PiB7XG4gICAgICAgICAgICAgICAgICAvLyBpbiBjYXNlIHNvbWUgY2hlY2sgZmFpbGVkLCByZWplY3QgdGhlIGF1dGhvcmlzYXRpb24gZmxvd1xuICAgICAgICAgICAgICAgICAgaWYgKGVycikgcmV0dXJuIHJlamVjdChlcnIpO1xuICAgICAgICAgICAgICAgICAgLy8gKGFzeW5jKSBzYXZlIHRoZSByZWZyZXNoIHRva2VuIHNvIGl0IGNhbiBiZSBhY2Nlc3NlZCBieSBvdGhlciBwcm9jZWR1cmVzXG4gICAgICAgICAgICAgICAgICB0aGlzLnN0b3JhZ2Uuc2V0KCdBdXRoUmVmcmVzaFRva2VuJywgc2Vzc2lvbi5nZXRSZWZyZXNoVG9rZW4oKS5nZXRUb2tlbigpKTtcbiAgICAgICAgICAgICAgICAgIC8vIHNldCBhIHRpbWVyIHRvIG1hbmFnZSB0aGUgYXV0b3JlZnJlc2ggb2YgdGhlIGlkVG9rZW4gKHRocm91Z2ggdGhlIHJlZnJlc2hUb2tlbilcbiAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoXG4gICAgICAgICAgICAgICAgICAgICgpOiB2b2lkID0+IHRoaXMucmVmcmVzaFNlc3Npb24odXNlciwgc2Vzc2lvbi5nZXRSZWZyZXNoVG9rZW4oKS5nZXRUb2tlbigpLCBnZXRGcmVzaElkVG9rZW5PbkV4cCksXG4gICAgICAgICAgICAgICAgICAgIDE1ICogNjAgKiAxMDAwXG4gICAgICAgICAgICAgICAgICApOyAvLyBldmVyeSAxNSBtaW51dGVzXG4gICAgICAgICAgICAgICAgICAvLyAoYXN5bmMpIGlmIG9mZmxpbmVBbGxvd2VkLCBzYXZlIGRhdGEgbG9jYWxseSwgdG8gdXNlIGl0IG5leHQgdGltZSB3ZSdsbCBiZSBvZmZsaW5lXG4gICAgICAgICAgICAgICAgICBpZiAob2ZmbGluZUFsbG93ZWQpIHRoaXMuc3RvcmFnZS5zZXQoJ0F1dGhVc2VyRGV0YWlscycsIHVzZXJEZXRhaWxzKTtcbiAgICAgICAgICAgICAgICAgIC8vIHJldHVybiB0aGUgaWRUb2tlbiAodG8gdXNlIHdpdGggQVBJKVxuICAgICAgICAgICAgICAgICAgcmVzb2x2ZSh7IGlkVG9rZW46IHNlc3Npb24uZ2V0SWRUb2tlbigpLmdldEp3dFRva2VuKCksIHVzZXJEZXRhaWxzIH0pO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7IGJ5cGFzc0NhY2hlOiB0cnVlIH1cbiAgICAgICAgICApO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuICAvKipcbiAgICogSGVscGVyIHRvIHJlZnJlc2ggdGhlIHNlc3Npb24gZXZlcnkgTiBtaW51dGVzLlxuICAgKi9cbiAgcHJpdmF0ZSByZWZyZXNoU2Vzc2lvbih1c2VyOiBDb2duaXRvVXNlciwgcmVmcmVzaFRva2VuOiBzdHJpbmcsIGNhbGxiYWNrOiAoZnJlc2hJZFRva2VuOiBzdHJpbmcpID0+IHZvaWQpOiB2b2lkIHtcbiAgICB1c2VyLnJlZnJlc2hTZXNzaW9uKFxuICAgICAgbmV3IENvZ25pdG9SZWZyZXNoVG9rZW4oeyBSZWZyZXNoVG9rZW46IHJlZnJlc2hUb2tlbiB9KSxcbiAgICAgIChlcnI6IEVycm9yLCBzZXNzaW9uOiBDb2duaXRvVXNlclNlc3Npb24pOiB2b2lkID0+IHtcbiAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgIC8vIHRyeSBhZ2FpbiBpbiAxIG1pbnV0ZVxuICAgICAgICAgIHNldFRpbWVvdXQoKCk6IHZvaWQgPT4gdGhpcy5yZWZyZXNoU2Vzc2lvbih1c2VyLCByZWZyZXNoVG9rZW4sIGNhbGxiYWNrKSwgMSAqIDYwICogMTAwMCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gKGFzeW5jKSBzYXZlIHRoZSByZWZyZXNoIHRva2VuIHNvIGl0IGNhbiBiZSBhY2Nlc3NlZCBieSBvdGhlciBwcm9jZWR1cmVzXG4gICAgICAgICAgdGhpcy5zdG9yYWdlLnNldCgnQXV0aFJlZnJlc2hUb2tlbicsIHNlc3Npb24uZ2V0UmVmcmVzaFRva2VuKCkuZ2V0VG9rZW4oKSk7XG4gICAgICAgICAgLy8gcmVwZWF0IGV2ZXJ5IDE1IG1pbnV0ZXNcbiAgICAgICAgICBzZXRUaW1lb3V0KFxuICAgICAgICAgICAgKCk6IHZvaWQgPT4gdGhpcy5yZWZyZXNoU2Vzc2lvbih1c2VyLCBzZXNzaW9uLmdldFJlZnJlc2hUb2tlbigpLmdldFRva2VuKCksIGNhbGxiYWNrKSxcbiAgICAgICAgICAgIDE1ICogNjAgKiAxMDAwXG4gICAgICAgICAgKTtcbiAgICAgICAgICAvLyBydW4gdGhlIGNhbGxiYWNrIGFjdGlvbiwgaWYgc2V0XG4gICAgICAgICAgaWYgKGNhbGxiYWNrKSBjYWxsYmFjayhzZXNzaW9uLmdldElkVG9rZW4oKS5nZXRKd3RUb2tlbigpKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICk7XG4gIH1cbiAgLyoqXG4gICAqIFJ1biBzb21lIHBvc3QtYXV0aCBjaGVja3MsIGJhc2VkIG9uIHRoZSB1c2VycyBncm91cHMgYW5kIG9uIHRoZSBhcHAncyBjb25maWd1cmF0aW9uOlxuICAgKiAgLSB1c2VycyBpbiB0aGUgQ29nbml0bydzIFwiYWRtaW5zXCIgZ3J1cCBza2lwIGFsbCB0aGUgZm9sbG93aW5nIHJ1bGVzLlxuICAgKiAgLSB1c2VycyBpbiB0aGUgQ29nbml0bydzIFwicm9ib3RzXCIgZ3JvdXAgY2FuJ3Qgc2lnbi1pbnRvIGZyb250LWVuZHMgKHRoZXkgc2VydmUgb25seSBiYWNrLWVuZCBwdXJwb3NlcykuXG4gICAqICAtIGlmIGBlbnYuaWRlYS5hdXRoLnNpbmdsZVNpbXVsdGFuZW91c1Nlc3Npb25gIGlzIG9uLCBtYWtlIHN1cmUgdGhlcmUgaXMgb25seSBvbmUgYWN0aXZlIHNlc3Npb24gcGVyIHVzZXIuXG4gICAqL1xuICBwcml2YXRlIHJ1blBvc3RBdXRoQ2hlY2tzKHVzZXJEZXRhaWxzOiBhbnksIGNhbGxiYWNrOiAoZXJyPzogRXJyb3IpID0+IHZvaWQpOiB2b2lkIHwgUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgZ3JvdXBzOiBzdHJpbmdbXSA9IHVzZXJEZXRhaWxzWydncm91cHMnXTtcbiAgICAvLyBza2lwIGNoZWNrcyBpZiB0aGUgdXNlciBpcyBpbiB0aGUgXCJhZG1pbnNcIiBncm91cFxuICAgIGNvbnN0IGlzQWRtaW4gPSBncm91cHMuc29tZSh4ID0+IHggPT09ICdhZG1pbnMnKTtcbiAgICBpZiAoaXNBZG1pbikgcmV0dXJuIGNhbGxiYWNrKCk7XG4gICAgLy8gdXNlcnMgaW4gdGhlIFwicm9ib3RzXCIgZ3JvdXAgY2FuJ3Qgc2lnbi1pbnRvIGZyb250LWVuZHMgKHRoZXkgc2VydmUgb25seSBiYWNrLWVuZCBwdXJwb3NlcylcbiAgICBjb25zdCBpc1JvYm90ID0gZ3JvdXBzLnNvbWUoeCA9PiB4ID09PSAncm9ib3RzJyk7XG4gICAgaWYgKGlzUm9ib3QpIHJldHVybiBjYWxsYmFjayhuZXcgRXJyb3IoJ1JPQk9UX1VTRVInKSk7XG4gICAgLy8gaW4gY2FzZSB0aGUgcHJvamVjdCBsaW1pdHMgZWFjaCBhY2NvdW50IHRvIG9ubHkgb25lIHNpbXVsdGFuZW91cyBzZXNzaW9uLCBydW4gYSBjaGVja1xuICAgIGlmICh0aGlzLmVudi5pZGVhLmF1dGguc2luZ2xlU2ltdWx0YW5lb3VzU2Vzc2lvbikgcmV0dXJuIHRoaXMuY2hlY2tGb3JTaW11bHRhbmVvdXNTZXNzaW9ucyh1c2VyRGV0YWlscywgY2FsbGJhY2spO1xuICAgIC8vIG90aGVyd2lzZSwgd2UncmUgZG9uZVxuICAgIGNhbGxiYWNrKCk7XG4gIH1cbiAgLyoqXG4gICAqIENoZWNrIHdoZXRoZXIgdGhlIHVzZXIgc2lnbmVkLWludG8gbXVsdGlwbGUgZGV2aWNlcy5cbiAgICovXG4gIHByaXZhdGUgYXN5bmMgY2hlY2tGb3JTaW11bHRhbmVvdXNTZXNzaW9ucyh1c2VyRGV0YWlsczogYW55LCBjYWxsYmFjazogKGVycj86IEVycm9yKSA9PiB2b2lkKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgLy8gZ2V0IG9yIGNyZWF0ZSBhIGtleSBmb3IgdGhlIGN1cnJlbnQgZGV2aWNlICh+cmFuZG9tKVxuICAgIGxldCBjdXJyZW50RGV2aWNlS2V5ID0gYXdhaXQgdGhpcy5zdG9yYWdlLmdldCgnQXV0aERldmljZUtleScpO1xuICAgIGlmICghY3VycmVudERldmljZUtleSkge1xuICAgICAgY29uc3QgcmFuZG9tS2V5ID0gTWF0aC5yYW5kb20oKS50b1N0cmluZygzNikuc3Vic3RyaW5nKDEwKTtcbiAgICAgIGN1cnJlbnREZXZpY2VLZXkgPSByYW5kb21LZXkuY29uY2F0KFN0cmluZyhEYXRlLm5vdygpKSk7XG4gICAgICBhd2FpdCB0aGlzLnN0b3JhZ2Uuc2V0KCdBdXRoRGV2aWNlS2V5JywgY3VycmVudERldmljZUtleSk7XG4gICAgfVxuICAgIC8vIGNoZWNrIHdoZXRoZXIgdGhlIGxhc3QgZGV2aWNlIHRvIHNpZ24taW50byB0aGlzIHByb2plY3QgKGlmIGFueSkgaXMgdGhlIGN1cnJlbnQgb25lXG4gICAgY29uc3QgbGFzdERldmljZVRvU2lnbkludG9UaGlzUHJvamVjdCA9IHVzZXJEZXRhaWxzW3RoaXMuZGV2aWNlS2V5QXR0cmlidXRlXTtcbiAgICAvLyBpZiBpdCdzIHRoZSBmaXJzdCB1c2VyJ3MgZGV2aWNlIHRvIHNpZ24taW4sIHNhdmUgdGhlIHJlZmVyZW5jZSBpbiBDb2duaXRvIGFuZCByZXNvbHZlXG4gICAgaWYgKCFsYXN0RGV2aWNlVG9TaWduSW50b1RoaXNQcm9qZWN0KSB7XG4gICAgICB0aGlzLnNldEN1cnJlbnREZXZpY2VGb3JQcm9qZWN0KGN1cnJlbnREZXZpY2VLZXkpXG4gICAgICAgIC50aGVuKCgpOiB2b2lkID0+IGNhbGxiYWNrKCkpXG4gICAgICAgIC5jYXRjaCgoKTogdm9pZCA9PiBjYWxsYmFjayhuZXcgRXJyb3IoJ0NBTlRfU0VUX0RFVklDRScpKSk7XG4gICAgICAvLyBpZiB0aGUgZGV2aWNlIGRpZG4ndCBjaGFuZ2UsIHJlc29sdmVcbiAgICB9IGVsc2UgaWYgKGxhc3REZXZpY2VUb1NpZ25JbnRvVGhpc1Byb2plY3QgPT09IGN1cnJlbnREZXZpY2VLZXkpIGNhbGxiYWNrKCk7XG4gICAgLy8gb3Rod2Vyd2lzZSwgcmVwb3J0IHRoZXJlIGlzIG1vcmUgdGhhbiBvbmUgc2ltdWx0YW5lb3VzIHNlc3Npb25cbiAgICBlbHNlIGNhbGxiYWNrKG5ldyBFcnJvcignU0lNVUxUQU5FT1VTX1NFU1NJT04nKSk7XG4gIH1cbiAgLyoqXG4gICAqIFNldCAob3IgcmVzZXQpIHRoZSBjdXJyZW50IHVzZXIncyBkZXZpY2UgKGJ5IGtleSkgaW4gdGhlIGN1cnJlbnQgcHJvamVjdCAoc3RvcmVkIGluIENvZ25pdG8pLlxuICAgKi9cbiAgcHJpdmF0ZSBzZXRDdXJyZW50RGV2aWNlRm9yUHJvamVjdChkZXZpY2VLZXk/OiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBhdHRyaWJ1dGVzOiBhbnkgPSB7fTtcbiAgICAvLyBub3RlOiBhbiBlbXB0eSBzdHJpbmcgd2lsbCByZW1vdmUgdGhlIGF0dHJpYnV0ZSBmcm9tIENvZ25pdG9cbiAgICBhdHRyaWJ1dGVzW3RoaXMuZGV2aWNlS2V5QXR0cmlidXRlXSA9IGRldmljZUtleSB8fCAnJztcbiAgICByZXR1cm4gdGhpcy51cGRhdGVVc2VyQXR0cmlidXRlcyhhdHRyaWJ1dGVzKTtcbiAgfVxuICAvKipcbiAgICogVXBkYXRlIHRoZSBjdXJyZW50bHkgbG9nZ2VkIGluIHVzZXIncyBhdHRyaWJ1dGVzLlxuICAgKi9cbiAgdXBkYXRlVXNlckF0dHJpYnV0ZXMoYXR0cmlidXRlczogYW55KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpOiB2b2lkID0+IHtcbiAgICAgIC8vIHByZXBhcmUgdGhlIGF0dHJpYnV0ZXMgd2Ugd2FudCB0byBjaGFuZ2VcbiAgICAgIGNvbnN0IGF0dHJzID0gbmV3IEFycmF5PGFueT4oKTtcbiAgICAgIGZvciAoY29uc3QgcHJvcCBpbiBhdHRyaWJ1dGVzKVxuICAgICAgICBpZiAoYXR0cmlidXRlc1twcm9wXSAhPT0gdW5kZWZpbmVkKSBhdHRycy5wdXNoKHRoaXMucHJlcGFyZVVzZXJBdHRyaWJ1dGUocHJvcCwgYXR0cmlidXRlc1twcm9wXSkpO1xuICAgICAgY29uc3QgdXNlciA9IHRoaXMudXNlclBvb2wuZ2V0Q3VycmVudFVzZXIoKTtcbiAgICAgIGlmICghdXNlcikgcmV0dXJuIHJlamVjdCgpO1xuICAgICAgLy8gd2UgbmVlZCB0byBnZXQgdGhlIHNlc3Npb24gYmVmb3JlIHRvIG1ha2UgY2hhbmdlc1xuICAgICAgdXNlci5nZXRTZXNzaW9uKChlcnI6IEVycm9yKTogdm9pZCA9PiB7XG4gICAgICAgIGlmIChlcnIpIHJlamVjdChlcnIpO1xuICAgICAgICBlbHNlIHVzZXIudXBkYXRlQXR0cmlidXRlcyhhdHRycywgKGU6IEVycm9yKTogdm9pZCA9PiAoZSA/IHJlamVjdChlKSA6IHJlc29sdmUoKSkpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdGUgdGhlIHBhc3N3b3JkIGFnYWluc3QgdGhlIHBvbGljeSBzZXQgaW4gdGhlIGVudmlyb25tZW50cyBjb25maWd1cmF0aW9uLlxuICAgKiBJbiBjYXNlIHRoZXJlIGFyZSBlcnJvcnMsIHRoZXkgYXJlIHJldHVybmVkIGFzIGFuIGFycmF5IG9mIHN0cmluZ3MuXG4gICAqL1xuICB2YWxpZGF0ZVBhc3N3b3JkQWdhaW5zdFBvbGljeShwYXNzd29yZDogc3RyaW5nKTogc3RyaW5nW10ge1xuICAgIGNvbnN0IGVycm9ycyA9IFtdO1xuICAgIGlmIChwYXNzd29yZD8udHJpbSgpLmxlbmd0aCA8IHRoaXMucGFzc3dvcmRQb2xpY3kubWluTGVuZ3RoKSBlcnJvcnMucHVzaCgnTUlOX0xFTkdUSCcpO1xuICAgIGlmICh0aGlzLnBhc3N3b3JkUG9saWN5LnJlcXVpcmVEaWdpdHMgJiYgIS9cXGQvLnRlc3QocGFzc3dvcmQpKSBlcnJvcnMucHVzaCgnUkVRVUlSRV9ESUdJVFMnKTtcbiAgICBpZiAodGhpcy5wYXNzd29yZFBvbGljeS5yZXF1aXJlTG93ZXJjYXNlICYmICEvW2Etel0vLnRlc3QocGFzc3dvcmQpKSBlcnJvcnMucHVzaCgnUkVRVUlSRV9MT1dFUkNBU0UnKTtcbiAgICBpZiAodGhpcy5wYXNzd29yZFBvbGljeS5yZXF1aXJlU3ltYm9scyAmJiAhL1tcXF5cXCRcXCpcXC5cXF9cXH5cXGBcXCtcXD1AXFwhXFw/XFw+XFw8XFw6XFw7XFxcXFxcLFxcI1xcJVxcJl0vLnRlc3QocGFzc3dvcmQpKVxuICAgICAgZXJyb3JzLnB1c2goJ1JFUVVJUkVfU1lNQk9MUycpO1xuICAgIGlmICh0aGlzLnBhc3N3b3JkUG9saWN5LnJlcXVpcmVVcHBlcmNhc2UgJiYgIS9bQS1aXS8udGVzdChwYXNzd29yZCkpIGVycm9ycy5wdXNoKCdSRVFVSVJFX1VQUEVSQ0FTRScpO1xuICAgIHJldHVybiBlcnJvcnM7XG4gIH1cbiAgLyoqXG4gICAqIEdldCBhIGNvbXBsZXRlIHBhc3N3b3JkIHBvbGljeSBwYXR0ZXJuLCBiYXNlZCBvbiB0aGUgZW52aXJvbm1lbnRzIGNvbmZpZ3VyYXRpb24sIHRvIHVzZSBvbiBwYXNzd29yZCBpbnB1dCBmaWVsZHMuXG4gICAqIE5vdGU6IHNvbWUgb2YgdGhlIHN5bWJvbHMgY291bGRuJ3QgYmUgaW5jbHVkZWQgYmVjYXVzZSB1bnN1cHBvcnRlZCBieSB0aGUgaW5wdXRbcGF0dGVybl0gYXR0cmlidXRlLlxuICAgKi9cbiAgZ2V0UGFzc3dvcmRQb2xpY3lQYXR0ZXJuRm9ySW5wdXQoKTogc3RyaW5nIHtcbiAgICBsZXQgcGF0dGVybiA9ICcnO1xuICAgIGlmICh0aGlzLnBhc3N3b3JkUG9saWN5LnJlcXVpcmVEaWdpdHMpIHBhdHRlcm4gKz0gYCg/PS4qWzAtOV0pYDtcbiAgICBpZiAodGhpcy5wYXNzd29yZFBvbGljeS5yZXF1aXJlTG93ZXJjYXNlKSBwYXR0ZXJuICs9IGAoPz0uKlthLXpdKWA7XG4gICAgaWYgKHRoaXMucGFzc3dvcmRQb2xpY3kucmVxdWlyZVN5bWJvbHMpIHBhdHRlcm4gKz0gYCg/PS4qW1xcXlxcJFxcKlxcLlxcX1xcflxcYFxcK1xcPUBcXCFcXD9cXD5cXDxcXDpcXDtcXFxcXFwsXFwjXFwlXFwmXSlgO1xuICAgIGlmICh0aGlzLnBhc3N3b3JkUG9saWN5LnJlcXVpcmVVcHBlcmNhc2UpIHBhdHRlcm4gKz0gYCg/PS4qW0EtWl0pYDtcbiAgICBwYXR0ZXJuICs9IGAueyR7dGhpcy5wYXNzd29yZFBvbGljeS5taW5MZW5ndGh9LH1gO1xuICAgIHJldHVybiBwYXR0ZXJuO1xuICB9XG59XG5cbi8qKlxuICogVGhlIHBvc3NpYmxlIGFjdGlvbnMgZm9sbG93aW5nIGEgc3VjY2Vzc2Z1bCBsb2dpbi5cbiAqL1xuZXhwb3J0IGVudW0gTG9naW5PdXRjb21lQWN0aW9ucyB7XG4gIE5PTkUgPSAnbm9uZScsXG4gIE5FV19QQVNTV09SRCA9ICduZXdQYXNzd29yZCcsXG4gIE1GQV9DSEFMTEVOR0UgPSAnbWZhQ2hhbGxlbmdlJyxcbiAgTUZBX1NFVFVQID0gJ21mYVNldHVwJ1xufVxuIl19
@@ -1,6 +1,6 @@
1
- import { Component } from '@angular/core';
1
+ import { Component, inject } from '@angular/core';
2
+ import { IDEAEnvironment } from '@idea-ionic/common';
2
3
  import { IDEAPasswordPolicyComponent } from './passwordPolicy.component';
3
- import { environment as env } from '@env';
4
4
  import * as i0 from "@angular/core";
5
5
  import * as i1 from "@ionic/angular";
6
6
  import * as i2 from "@angular/router";
@@ -17,7 +17,8 @@ export class IDEAConfirmPasswordPage {
17
17
  this.loading = loading;
18
18
  this.t = t;
19
19
  this.auth = auth;
20
- this.passwordPolicy = env.idea.auth.passwordPolicy;
20
+ this.env = inject(IDEAEnvironment);
21
+ this.passwordPolicy = this.env.idea.auth.passwordPolicy;
21
22
  }
22
23
  ngOnInit() {
23
24
  this.email = this.route.snapshot.queryParamMap.get('email') ?? null;
@@ -67,4 +68,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0", ngImpor
67
68
  type: Component,
68
69
  args: [{ selector: 'idea-confirm-password', template: "<ion-content>\n <form class=\"flexBox\">\n <ion-card class=\"authCard\">\n <ion-card-header>\n <ion-card-title color=\"primary\">{{ 'IDEA_AUTH.CHANGE_THE_PASSWORD' | translate }}</ion-card-title>\n </ion-card-header>\n <ion-card-content>\n <p class=\"errorBox\" *ngIf=\"errorMsg\">\n <b> {{ 'IDEA_AUTH.ERROR' | translate }}. </b>\n {{ errorMsg }}\n </p>\n <ion-item>\n <ion-label position=\"inline\">\n <ion-icon name=\"person-circle\" color=\"primary\"></ion-icon>\n </ion-label>\n <ion-input\n type=\"email\"\n inputmode=\"email\"\n pattern=\"[A-Za-z0-9._%+-]{2,}@[a-zA-Z-_.]{2,}[.]{1}[a-zA-Z]{2,}\"\n spellcheck=\"false\"\n autocorrect=\"off\"\n autocapitalize=\"off\"\n autocomplete=\"email\"\n [placeholder]=\"'IDEA_AUTH.EMAIL' | translate\"\n [title]=\"'IDEA_AUTH.EMAIL_HINT' | translate\"\n [ngModelOptions]=\"{ standalone: true }\"\n [(ngModel)]=\"email\"\n (keyup.enter)=\"confirmPassword()\"\n ></ion-input>\n </ion-item>\n <ion-item>\n <ion-label position=\"inline\">\n <ion-icon name=\"disc\" color=\"primary\"></ion-icon>\n </ion-label>\n <ion-input\n type=\"text\"\n spellcheck=\"false\"\n autocorrect=\"off\"\n autocapitalize=\"off\"\n autocomplete=\"off\"\n [placeholder]=\"'IDEA_AUTH.RESET_CODE' | translate\"\n [title]=\"'IDEA_AUTH.RESET_CODE_HINT' | translate\"\n [ngModelOptions]=\"{ standalone: true }\"\n [(ngModel)]=\"code\"\n (keyup.enter)=\"confirmPassword()\"\n ></ion-input>\n </ion-item>\n <ion-item>\n <ion-label position=\"inline\">\n <ion-icon name=\"key\" color=\"primary\"></ion-icon>\n </ion-label>\n <ion-input\n type=\"password\"\n spellcheck=\"false\"\n autocorrect=\"off\"\n autocapitalize=\"off\"\n autocomplete=\"new-password\"\n [pattern]=\"auth.getPasswordPolicyPatternForInput()\"\n [clearOnEdit]=\"false\"\n [placeholder]=\"'IDEA_AUTH.NEW_PASSWORD' | translate\"\n [title]=\"'IDEA_AUTH.CHOOSE_A_PASSWORD' | translate\"\n [ngModelOptions]=\"{ standalone: true }\"\n [(ngModel)]=\"newPassword\"\n (keyup.enter)=\"confirmPassword()\"\n ></ion-input>\n <ion-button slot=\"end\" fill=\"clear\" color=\"dark\" (click)=\"openPasswordPolicy($event)\">\n <ion-icon icon=\"help-circle-outline\" slot=\"icon-only\"></ion-icon>\n </ion-button>\n </ion-item>\n <ion-button\n expand=\"block\"\n [title]=\"'IDEA_AUTH.CHANGE_MY_PASSWORD_HINT' | translate\"\n (click)=\"confirmPassword()\"\n >\n {{ 'IDEA_AUTH.CHANGE_MY_PASSWORD' | translate }}\n </ion-button>\n <ion-button\n fill=\"clear\"\n expand=\"block\"\n class=\"smallCaseButton\"\n [title]=\"'IDEA_AUTH.HAVEN_T_RECEIVED_A_RESET_CODE_HINT' | translate\"\n (click)=\"goToForgotPassword()\"\n >\n {{ 'IDEA_AUTH.HAVEN_T_RECEIVED_A_RESET_CODE' | translate }}\n </ion-button>\n <ion-button\n fill=\"clear\"\n expand=\"block\"\n class=\"smallCaseButton\"\n [title]=\"'IDEA_AUTH.BACK_TO_SIGN_IN_HINT' | translate\"\n (click)=\"goToAuth()\"\n >\n {{ 'IDEA_AUTH.BACK_TO_SIGN_IN' | translate }}\n </ion-button>\n </ion-card-content>\n </ion-card>\n </form>\n</ion-content>\n", styles: [".flexBox{background:var(--idea-auth-background-color, var(--ion-color-white-shade))}.authCard{min-width:400px;max-width:550px;margin:0 10px;padding:20px;background-color:var(--idea-auth-card-background-color, var(--ion-color-white));border:1px solid var(--idea-auth-card-border-color, var(--ion-color-light));border-radius:10px;box-shadow:none;text-align:center}.authCard ion-img{width:150px;display:block;margin:0 auto}.authCard ion-card-title{font-family:auth-title;font-size:3em}.authCard ion-card-subtitle{font-family:auth-title;font-size:1.2em}.authCard ion-card-content{padding-top:16px}.authCard ion-card-content .errorBox{padding-left:10px;margin-bottom:20px;text-align:left;border-left:2px solid var(--ion-color-danger)}.authCard ion-card-content ion-item{--ion-item-background: var(--idea-auth-card-background-color, var(--ion-color-white));--border-color: var(--idea-auth-card-border-color, var(--ion-color-light))}.authCard ion-card-content ion-label[position=inline] ion-icon{padding-top:4px;padding-right:5px;font-size:1.3em}.authCard ion-card-content .agreementsAcceptanceRow{margin-top:15px;font-size:.9em}.authCard ion-card-content .agreementsAcceptanceRow ion-checkbox{vertical-align:bottom;margin-right:3px}.authCard ion-card-content ion-button:not([slot=end]){margin-top:15px}.authCard ion-card-content .smallCaseButton{text-transform:none;letter-spacing:normal;font-size:1em}@media only screen and (max-width: 500px){.authCard{background-color:transparent;border:none}}.ideaLogo{width:65px;margin:40px auto 0;cursor:pointer}.passwordPolicyPopover{--width: 350px}\n"] }]
69
70
  }], ctorParameters: () => [{ type: i1.NavController }, { type: i2.ActivatedRoute }, { type: i1.PopoverController }, { type: i3.IDEAMessageService }, { type: i3.IDEALoadingService }, { type: i3.IDEATranslationsService }, { type: i4.IDEAAuthService }] });
70
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlybVBhc3N3b3JkLnBhZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9tb2R1bGVzL2F1dGgvc3JjL2NvbmZpcm1QYXNzd29yZC5wYWdlLnRzIiwiLi4vLi4vLi4vLi4vbW9kdWxlcy9hdXRoL3NyYy9jb25maXJtUGFzc3dvcmQucGFnZS5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFLbEQsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFJekUsT0FBTyxFQUFFLFdBQVcsSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7Ozs7O0FBTzFDLE1BQU0sT0FBTyx1QkFBdUI7SUFPbEMsWUFDVSxPQUFzQixFQUN0QixLQUFxQixFQUNyQixXQUE4QixFQUM5QixPQUEyQixFQUMzQixPQUEyQixFQUMzQixDQUEwQixFQUMzQixJQUFxQjtRQU5wQixZQUFPLEdBQVAsT0FBTyxDQUFlO1FBQ3RCLFVBQUssR0FBTCxLQUFLLENBQWdCO1FBQ3JCLGdCQUFXLEdBQVgsV0FBVyxDQUFtQjtRQUM5QixZQUFPLEdBQVAsT0FBTyxDQUFvQjtRQUMzQixZQUFPLEdBQVAsT0FBTyxDQUFvQjtRQUMzQixNQUFDLEdBQUQsQ0FBQyxDQUF5QjtRQUMzQixTQUFJLEdBQUosSUFBSSxDQUFpQjtRQVY5QixtQkFBYyxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQztJQVczQyxDQUFDO0lBQ0osUUFBUTtRQUNOLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsSUFBSSxJQUFJLENBQUM7UUFDcEUsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLElBQUk7WUFDckQsSUFBSSxDQUFDLEtBQUssR0FBRyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDeEUsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDO0lBQ25ELENBQUM7SUFFRCxLQUFLLENBQUMsZUFBZTtRQUNuQixJQUFJLENBQUM7WUFDSCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztZQUNyQixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLDZCQUE2QixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUN6RSxJQUFJLE1BQU0sQ0FBQyxNQUFNO2dCQUNmLElBQUksQ0FBQyxRQUFRLEdBQUc7b0JBQ2QsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsd0NBQXdDLENBQUM7b0JBQ2xELEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUNoQixJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxrQ0FBa0MsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUM3RjtpQkFDRixDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNkLElBQUksSUFBSSxDQUFDLFFBQVE7Z0JBQUUsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyx3Q0FBd0MsQ0FBQyxDQUFDO1lBRXZGLE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUMxQixNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDekUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsNEJBQTRCLENBQUMsQ0FBQztZQUNuRCxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDbEIsQ0FBQztRQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7WUFDZixJQUFJLENBQUMsUUFBUSxHQUFJLEtBQWEsQ0FBQyxPQUFPLENBQUM7WUFDdkMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsd0NBQXdDLENBQUMsQ0FBQztRQUMvRCxDQUFDO2dCQUFTLENBQUM7WUFDVCxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3RCLENBQUM7SUFDSCxDQUFDO0lBRUQsS0FBSyxDQUFDLGtCQUFrQixDQUFDLEtBQVk7UUFDbkMsTUFBTSxRQUFRLEdBQUcsdUJBQXVCLENBQUM7UUFDekMsTUFBTSxPQUFPLEdBQUcsTUFBTSxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxFQUFFLFNBQVMsRUFBRSwyQkFBMkIsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQztRQUMzRyxNQUFNLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRUQsa0JBQWtCO1FBQ2hCLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUMsc0JBQXNCLENBQUMsQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFDRCxRQUFRO1FBQ04sSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3RDLENBQUM7OEdBM0RVLHVCQUF1QjtrR0FBdkIsdUJBQXVCLDZEQ2hCcEMsbXVIQWtHQTs7MkZEbEZhLHVCQUF1QjtrQkFMbkMsU0FBUzsrQkFDRSx1QkFBdUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTmF2Q29udHJvbGxlciwgUG9wb3ZlckNvbnRyb2xsZXIgfSBmcm9tICdAaW9uaWMvYW5ndWxhcic7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBJREVBTWVzc2FnZVNlcnZpY2UsIElERUFMb2FkaW5nU2VydmljZSwgSURFQVRyYW5zbGF0aW9uc1NlcnZpY2UgfSBmcm9tICdAaWRlYS1pb25pYy9jb21tb24nO1xuXG5pbXBvcnQgeyBJREVBUGFzc3dvcmRQb2xpY3lDb21wb25lbnQgfSBmcm9tICcuL3Bhc3N3b3JkUG9saWN5LmNvbXBvbmVudCc7XG5cbmltcG9ydCB7IElERUFBdXRoU2VydmljZSB9IGZyb20gJy4vYXV0aC5zZXJ2aWNlJztcblxuaW1wb3J0IHsgZW52aXJvbm1lbnQgYXMgZW52IH0gZnJvbSAnQGVudic7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2lkZWEtY29uZmlybS1wYXNzd29yZCcsXG4gIHRlbXBsYXRlVXJsOiAnY29uZmlybVBhc3N3b3JkLnBhZ2UuaHRtbCcsXG4gIHN0eWxlVXJsczogWydhdXRoLnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBJREVBQ29uZmlybVBhc3N3b3JkUGFnZSBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIGVtYWlsOiBzdHJpbmc7XG4gIG5ld1Bhc3N3b3JkOiBzdHJpbmc7XG4gIGNvZGU6IHN0cmluZztcbiAgcGFzc3dvcmRQb2xpY3kgPSBlbnYuaWRlYS5hdXRoLnBhc3N3b3JkUG9saWN5O1xuICBlcnJvck1zZzogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgbmF2Q3RybDogTmF2Q29udHJvbGxlcixcbiAgICBwcml2YXRlIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICBwcml2YXRlIHBvcG92ZXJDdHJsOiBQb3BvdmVyQ29udHJvbGxlcixcbiAgICBwcml2YXRlIG1lc3NhZ2U6IElERUFNZXNzYWdlU2VydmljZSxcbiAgICBwcml2YXRlIGxvYWRpbmc6IElERUFMb2FkaW5nU2VydmljZSxcbiAgICBwcml2YXRlIHQ6IElERUFUcmFuc2xhdGlvbnNTZXJ2aWNlLFxuICAgIHB1YmxpYyBhdXRoOiBJREVBQXV0aFNlcnZpY2VcbiAgKSB7fVxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmVtYWlsID0gdGhpcy5yb3V0ZS5zbmFwc2hvdC5xdWVyeVBhcmFtTWFwLmdldCgnZW1haWwnKSA/PyBudWxsO1xuICAgIGlmICghdGhpcy5lbWFpbCAmJiB0aGlzLnJvdXRlLnNuYXBzaG90LnF1ZXJ5UGFyYW1zLnVzZXIpXG4gICAgICB0aGlzLmVtYWlsID0gZGVjb2RlVVJJQ29tcG9uZW50KHRoaXMucm91dGUuc25hcHNob3QucXVlcnlQYXJhbXMudXNlcik7XG4gICAgdGhpcy5jb2RlID0gdGhpcy5yb3V0ZS5zbmFwc2hvdC5xdWVyeVBhcmFtcy5jb2RlO1xuICB9XG5cbiAgYXN5bmMgY29uZmlybVBhc3N3b3JkKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRyeSB7XG4gICAgICB0aGlzLmVycm9yTXNnID0gbnVsbDtcbiAgICAgIGNvbnN0IGVycm9ycyA9IHRoaXMuYXV0aC52YWxpZGF0ZVBhc3N3b3JkQWdhaW5zdFBvbGljeSh0aGlzLm5ld1Bhc3N3b3JkKTtcbiAgICAgIGlmIChlcnJvcnMubGVuZ3RoKVxuICAgICAgICB0aGlzLmVycm9yTXNnID0gW1xuICAgICAgICAgIHRoaXMudC5fKCdJREVBX0FVVEguUEFTU1dPUkRfUkVRVUlSRU1FTlRTX0ZPTExPVycpLFxuICAgICAgICAgIC4uLmVycm9ycy5tYXAoeCA9PlxuICAgICAgICAgICAgdGhpcy50Ll8oJ0lERUFfQVVUSC5QQVNTV09SRF9SRVFVSVJFTUVOVFMuJy5jb25jYXQoeCksIHsgbjogdGhpcy5wYXNzd29yZFBvbGljeS5taW5MZW5ndGggfSlcbiAgICAgICAgICApXG4gICAgICAgIF0uam9pbignICcpO1xuICAgICAgaWYgKHRoaXMuZXJyb3JNc2cpIHJldHVybiB0aGlzLm1lc3NhZ2UuZXJyb3IoJ0lERUFfQVVUSC5QQVNTV09SRF9SRVFVSVJFTUVOVFNfRk9MTE9XJyk7XG5cbiAgICAgIGF3YWl0IHRoaXMubG9hZGluZy5zaG93KCk7XG4gICAgICBhd2FpdCB0aGlzLmF1dGguY29uZmlybVBhc3N3b3JkKHRoaXMuZW1haWwsIHRoaXMuY29kZSwgdGhpcy5uZXdQYXNzd29yZCk7XG4gICAgICB0aGlzLm1lc3NhZ2Uuc3VjY2VzcygnSURFQV9BVVRILlBBU1NXT1JEX0NIQU5HRUQnKTtcbiAgICAgIHRoaXMuZ29Ub0F1dGgoKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgdGhpcy5lcnJvck1zZyA9IChlcnJvciBhcyBhbnkpLm1lc3NhZ2U7XG4gICAgICB0aGlzLm1lc3NhZ2UuZXJyb3IoJ0lERUFfQVVUSC5QQVNTV09SRF9SRVFVSVJFTUVOVFNfRk9MTE9XJyk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRoaXMubG9hZGluZy5oaWRlKCk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgb3BlblBhc3N3b3JkUG9saWN5KGV2ZW50OiBFdmVudCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGNzc0NsYXNzID0gJ3Bhc3N3b3JkUG9saWN5UG9wb3Zlcic7XG4gICAgY29uc3QgcG9wb3ZlciA9IGF3YWl0IHRoaXMucG9wb3ZlckN0cmwuY3JlYXRlKHsgY29tcG9uZW50OiBJREVBUGFzc3dvcmRQb2xpY3lDb21wb25lbnQsIGV2ZW50LCBjc3NDbGFzcyB9KTtcbiAgICBhd2FpdCBwb3BvdmVyLnByZXNlbnQoKTtcbiAgfVxuXG4gIGdvVG9Gb3Jnb3RQYXNzd29yZCgpOiB2b2lkIHtcbiAgICB0aGlzLm5hdkN0cmwubmF2aWdhdGVCYWNrKFsnYXV0aC9mb3Jnb3QtcGFzc3dvcmQnXSk7XG4gIH1cbiAgZ29Ub0F1dGgoKTogdm9pZCB7XG4gICAgdGhpcy5uYXZDdHJsLm5hdmlnYXRlQmFjayhbJ2F1dGgnXSk7XG4gIH1cbn1cbiIsIjxpb24tY29udGVudD5cbiAgPGZvcm0gY2xhc3M9XCJmbGV4Qm94XCI+XG4gICAgPGlvbi1jYXJkIGNsYXNzPVwiYXV0aENhcmRcIj5cbiAgICAgIDxpb24tY2FyZC1oZWFkZXI+XG4gICAgICAgIDxpb24tY2FyZC10aXRsZSBjb2xvcj1cInByaW1hcnlcIj57eyAnSURFQV9BVVRILkNIQU5HRV9USEVfUEFTU1dPUkQnIHwgdHJhbnNsYXRlIH19PC9pb24tY2FyZC10aXRsZT5cbiAgICAgIDwvaW9uLWNhcmQtaGVhZGVyPlxuICAgICAgPGlvbi1jYXJkLWNvbnRlbnQ+XG4gICAgICAgIDxwIGNsYXNzPVwiZXJyb3JCb3hcIiAqbmdJZj1cImVycm9yTXNnXCI+XG4gICAgICAgICAgPGI+IHt7ICdJREVBX0FVVEguRVJST1InIHwgdHJhbnNsYXRlIH19LiA8L2I+XG4gICAgICAgICAge3sgZXJyb3JNc2cgfX1cbiAgICAgICAgPC9wPlxuICAgICAgICA8aW9uLWl0ZW0+XG4gICAgICAgICAgPGlvbi1sYWJlbCBwb3NpdGlvbj1cImlubGluZVwiPlxuICAgICAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJwZXJzb24tY2lyY2xlXCIgY29sb3I9XCJwcmltYXJ5XCI+PC9pb24taWNvbj5cbiAgICAgICAgICA8L2lvbi1sYWJlbD5cbiAgICAgICAgICA8aW9uLWlucHV0XG4gICAgICAgICAgICB0eXBlPVwiZW1haWxcIlxuICAgICAgICAgICAgaW5wdXRtb2RlPVwiZW1haWxcIlxuICAgICAgICAgICAgcGF0dGVybj1cIltBLVphLXowLTkuXyUrLV17Mix9QFthLXpBLVotXy5dezIsfVsuXXsxfVthLXpBLVpdezIsfVwiXG4gICAgICAgICAgICBzcGVsbGNoZWNrPVwiZmFsc2VcIlxuICAgICAgICAgICAgYXV0b2NvcnJlY3Q9XCJvZmZcIlxuICAgICAgICAgICAgYXV0b2NhcGl0YWxpemU9XCJvZmZcIlxuICAgICAgICAgICAgYXV0b2NvbXBsZXRlPVwiZW1haWxcIlxuICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidJREVBX0FVVEguRU1BSUwnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgIFt0aXRsZV09XCInSURFQV9BVVRILkVNQUlMX0hJTlQnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgIFtuZ01vZGVsT3B0aW9uc109XCJ7IHN0YW5kYWxvbmU6IHRydWUgfVwiXG4gICAgICAgICAgICBbKG5nTW9kZWwpXT1cImVtYWlsXCJcbiAgICAgICAgICAgIChrZXl1cC5lbnRlcik9XCJjb25maXJtUGFzc3dvcmQoKVwiXG4gICAgICAgICAgPjwvaW9uLWlucHV0PlxuICAgICAgICA8L2lvbi1pdGVtPlxuICAgICAgICA8aW9uLWl0ZW0+XG4gICAgICAgICAgPGlvbi1sYWJlbCBwb3NpdGlvbj1cImlubGluZVwiPlxuICAgICAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJkaXNjXCIgY29sb3I9XCJwcmltYXJ5XCI+PC9pb24taWNvbj5cbiAgICAgICAgICA8L2lvbi1sYWJlbD5cbiAgICAgICAgICA8aW9uLWlucHV0XG4gICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICBzcGVsbGNoZWNrPVwiZmFsc2VcIlxuICAgICAgICAgICAgYXV0b2NvcnJlY3Q9XCJvZmZcIlxuICAgICAgICAgICAgYXV0b2NhcGl0YWxpemU9XCJvZmZcIlxuICAgICAgICAgICAgYXV0b2NvbXBsZXRlPVwib2ZmXCJcbiAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCInSURFQV9BVVRILlJFU0VUX0NPREUnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgIFt0aXRsZV09XCInSURFQV9BVVRILlJFU0VUX0NPREVfSElOVCcgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgW25nTW9kZWxPcHRpb25zXT1cInsgc3RhbmRhbG9uZTogdHJ1ZSB9XCJcbiAgICAgICAgICAgIFsobmdNb2RlbCldPVwiY29kZVwiXG4gICAgICAgICAgICAoa2V5dXAuZW50ZXIpPVwiY29uZmlybVBhc3N3b3JkKClcIlxuICAgICAgICAgID48L2lvbi1pbnB1dD5cbiAgICAgICAgPC9pb24taXRlbT5cbiAgICAgICAgPGlvbi1pdGVtPlxuICAgICAgICAgIDxpb24tbGFiZWwgcG9zaXRpb249XCJpbmxpbmVcIj5cbiAgICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwia2V5XCIgY29sb3I9XCJwcmltYXJ5XCI+PC9pb24taWNvbj5cbiAgICAgICAgICA8L2lvbi1sYWJlbD5cbiAgICAgICAgICA8aW9uLWlucHV0XG4gICAgICAgICAgICB0eXBlPVwicGFzc3dvcmRcIlxuICAgICAgICAgICAgc3BlbGxjaGVjaz1cImZhbHNlXCJcbiAgICAgICAgICAgIGF1dG9jb3JyZWN0PVwib2ZmXCJcbiAgICAgICAgICAgIGF1dG9jYXBpdGFsaXplPVwib2ZmXCJcbiAgICAgICAgICAgIGF1dG9jb21wbGV0ZT1cIm5ldy1wYXNzd29yZFwiXG4gICAgICAgICAgICBbcGF0dGVybl09XCJhdXRoLmdldFBhc3N3b3JkUG9saWN5UGF0dGVybkZvcklucHV0KClcIlxuICAgICAgICAgICAgW2NsZWFyT25FZGl0XT1cImZhbHNlXCJcbiAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCInSURFQV9BVVRILk5FV19QQVNTV09SRCcgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgW3RpdGxlXT1cIidJREVBX0FVVEguQ0hPT1NFX0FfUEFTU1dPUkQnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgIFtuZ01vZGVsT3B0aW9uc109XCJ7IHN0YW5kYWxvbmU6IHRydWUgfVwiXG4gICAgICAgICAgICBbKG5nTW9kZWwpXT1cIm5ld1Bhc3N3b3JkXCJcbiAgICAgICAgICAgIChrZXl1cC5lbnRlcik9XCJjb25maXJtUGFzc3dvcmQoKVwiXG4gICAgICAgICAgPjwvaW9uLWlucHV0PlxuICAgICAgICAgIDxpb24tYnV0dG9uIHNsb3Q9XCJlbmRcIiBmaWxsPVwiY2xlYXJcIiBjb2xvcj1cImRhcmtcIiAoY2xpY2spPVwib3BlblBhc3N3b3JkUG9saWN5KCRldmVudClcIj5cbiAgICAgICAgICAgIDxpb24taWNvbiBpY29uPVwiaGVscC1jaXJjbGUtb3V0bGluZVwiIHNsb3Q9XCJpY29uLW9ubHlcIj48L2lvbi1pY29uPlxuICAgICAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgICAgPC9pb24taXRlbT5cbiAgICAgICAgPGlvbi1idXR0b25cbiAgICAgICAgICBleHBhbmQ9XCJibG9ja1wiXG4gICAgICAgICAgW3RpdGxlXT1cIidJREVBX0FVVEguQ0hBTkdFX01ZX1BBU1NXT1JEX0hJTlQnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAoY2xpY2spPVwiY29uZmlybVBhc3N3b3JkKClcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgJ0lERUFfQVVUSC5DSEFOR0VfTVlfUEFTU1dPUkQnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgICAgPGlvbi1idXR0b25cbiAgICAgICAgICBmaWxsPVwiY2xlYXJcIlxuICAgICAgICAgIGV4cGFuZD1cImJsb2NrXCJcbiAgICAgICAgICBjbGFzcz1cInNtYWxsQ2FzZUJ1dHRvblwiXG4gICAgICAgICAgW3RpdGxlXT1cIidJREVBX0FVVEguSEFWRU5fVF9SRUNFSVZFRF9BX1JFU0VUX0NPREVfSElOVCcgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgIChjbGljayk9XCJnb1RvRm9yZ290UGFzc3dvcmQoKVwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyAnSURFQV9BVVRILkhBVkVOX1RfUkVDRUlWRURfQV9SRVNFVF9DT0RFJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICA8L2lvbi1idXR0b24+XG4gICAgICAgIDxpb24tYnV0dG9uXG4gICAgICAgICAgZmlsbD1cImNsZWFyXCJcbiAgICAgICAgICBleHBhbmQ9XCJibG9ja1wiXG4gICAgICAgICAgY2xhc3M9XCJzbWFsbENhc2VCdXR0b25cIlxuICAgICAgICAgIFt0aXRsZV09XCInSURFQV9BVVRILkJBQ0tfVE9fU0lHTl9JTl9ISU5UJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgKGNsaWNrKT1cImdvVG9BdXRoKClcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgJ0lERUFfQVVUSC5CQUNLX1RPX1NJR05fSU4nIHwgdHJhbnNsYXRlIH19XG4gICAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgIDwvaW9uLWNhcmQtY29udGVudD5cbiAgICA8L2lvbi1jYXJkPlxuICA8L2Zvcm0+XG48L2lvbi1jb250ZW50PlxuIl19
71
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlybVBhc3N3b3JkLnBhZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9tb2R1bGVzL2F1dGgvc3JjL2NvbmZpcm1QYXNzd29yZC5wYWdlLnRzIiwiLi4vLi4vLi4vLi4vbW9kdWxlcy9hdXRoL3NyYy9jb25maXJtUGFzc3dvcmQucGFnZS5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRzFELE9BQU8sRUFBRSxlQUFlLEVBQW1FLE1BQU0sb0JBQW9CLENBQUM7QUFFdEgsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7Ozs7Ozs7O0FBU3pFLE1BQU0sT0FBTyx1QkFBdUI7SUFTbEMsWUFDVSxPQUFzQixFQUN0QixLQUFxQixFQUNyQixXQUE4QixFQUM5QixPQUEyQixFQUMzQixPQUEyQixFQUMzQixDQUEwQixFQUMzQixJQUFxQjtRQU5wQixZQUFPLEdBQVAsT0FBTyxDQUFlO1FBQ3RCLFVBQUssR0FBTCxLQUFLLENBQWdCO1FBQ3JCLGdCQUFXLEdBQVgsV0FBVyxDQUFtQjtRQUM5QixZQUFPLEdBQVAsT0FBTyxDQUFvQjtRQUMzQixZQUFPLEdBQVAsT0FBTyxDQUFvQjtRQUMzQixNQUFDLEdBQUQsQ0FBQyxDQUF5QjtRQUMzQixTQUFJLEdBQUosSUFBSSxDQUFpQjtRQWZwQixRQUFHLEdBQUcsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBaUJ0QyxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUM7SUFDMUQsQ0FBQztJQUNELFFBQVE7UUFDTixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLElBQUksSUFBSSxDQUFDO1FBQ3BFLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxJQUFJO1lBQ3JELElBQUksQ0FBQyxLQUFLLEdBQUcsa0JBQWtCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3hFLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQztJQUNuRCxDQUFDO0lBRUQsS0FBSyxDQUFDLGVBQWU7UUFDbkIsSUFBSSxDQUFDO1lBQ0gsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7WUFDckIsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyw2QkFBNkIsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDekUsSUFBSSxNQUFNLENBQUMsTUFBTTtnQkFDZixJQUFJLENBQUMsUUFBUSxHQUFHO29CQUNkLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLHdDQUF3QyxDQUFDO29CQUNsRCxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FDaEIsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsa0NBQWtDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FDN0Y7aUJBQ0YsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDZCxJQUFJLElBQUksQ0FBQyxRQUFRO2dCQUFFLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsd0NBQXdDLENBQUMsQ0FBQztZQUV2RixNQUFNLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDMUIsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQ3pFLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLDRCQUE0QixDQUFDLENBQUM7WUFDbkQsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2xCLENBQUM7UUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1lBQ2YsSUFBSSxDQUFDLFFBQVEsR0FBSSxLQUFhLENBQUMsT0FBTyxDQUFDO1lBQ3ZDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLHdDQUF3QyxDQUFDLENBQUM7UUFDL0QsQ0FBQztnQkFBUyxDQUFDO1lBQ1QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN0QixDQUFDO0lBQ0gsQ0FBQztJQUVELEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxLQUFZO1FBQ25DLE1BQU0sUUFBUSxHQUFHLHVCQUF1QixDQUFDO1FBQ3pDLE1BQU0sT0FBTyxHQUFHLE1BQU0sSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsRUFBRSxTQUFTLEVBQUUsMkJBQTJCLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFDM0csTUFBTSxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVELGtCQUFrQjtRQUNoQixJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDLHNCQUFzQixDQUFDLENBQUMsQ0FBQztJQUN0RCxDQUFDO0lBQ0QsUUFBUTtRQUNOLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUN0QyxDQUFDOzhHQS9EVSx1QkFBdUI7a0dBQXZCLHVCQUF1Qiw2RENkcEMsbXVIQWtHQTs7MkZEcEZhLHVCQUF1QjtrQkFMbkMsU0FBUzsrQkFDRSx1QkFBdUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOYXZDb250cm9sbGVyLCBQb3BvdmVyQ29udHJvbGxlciB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IElERUFFbnZpcm9ubWVudCwgSURFQU1lc3NhZ2VTZXJ2aWNlLCBJREVBTG9hZGluZ1NlcnZpY2UsIElERUFUcmFuc2xhdGlvbnNTZXJ2aWNlIH0gZnJvbSAnQGlkZWEtaW9uaWMvY29tbW9uJztcblxuaW1wb3J0IHsgSURFQVBhc3N3b3JkUG9saWN5Q29tcG9uZW50IH0gZnJvbSAnLi9wYXNzd29yZFBvbGljeS5jb21wb25lbnQnO1xuXG5pbXBvcnQgeyBJREVBQXV0aFNlcnZpY2UgfSBmcm9tICcuL2F1dGguc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2lkZWEtY29uZmlybS1wYXNzd29yZCcsXG4gIHRlbXBsYXRlVXJsOiAnY29uZmlybVBhc3N3b3JkLnBhZ2UuaHRtbCcsXG4gIHN0eWxlVXJsczogWydhdXRoLnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBJREVBQ29uZmlybVBhc3N3b3JkUGFnZSBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIHByb3RlY3RlZCBlbnYgPSBpbmplY3QoSURFQUVudmlyb25tZW50KTtcblxuICBlbWFpbDogc3RyaW5nO1xuICBuZXdQYXNzd29yZDogc3RyaW5nO1xuICBjb2RlOiBzdHJpbmc7XG4gIHBhc3N3b3JkUG9saWN5OiBhbnk7XG4gIGVycm9yTXNnOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBuYXZDdHJsOiBOYXZDb250cm9sbGVyLFxuICAgIHByaXZhdGUgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgIHByaXZhdGUgcG9wb3ZlckN0cmw6IFBvcG92ZXJDb250cm9sbGVyLFxuICAgIHByaXZhdGUgbWVzc2FnZTogSURFQU1lc3NhZ2VTZXJ2aWNlLFxuICAgIHByaXZhdGUgbG9hZGluZzogSURFQUxvYWRpbmdTZXJ2aWNlLFxuICAgIHByaXZhdGUgdDogSURFQVRyYW5zbGF0aW9uc1NlcnZpY2UsXG4gICAgcHVibGljIGF1dGg6IElERUFBdXRoU2VydmljZVxuICApIHtcbiAgICB0aGlzLnBhc3N3b3JkUG9saWN5ID0gdGhpcy5lbnYuaWRlYS5hdXRoLnBhc3N3b3JkUG9saWN5O1xuICB9XG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuZW1haWwgPSB0aGlzLnJvdXRlLnNuYXBzaG90LnF1ZXJ5UGFyYW1NYXAuZ2V0KCdlbWFpbCcpID8/IG51bGw7XG4gICAgaWYgKCF0aGlzLmVtYWlsICYmIHRoaXMucm91dGUuc25hcHNob3QucXVlcnlQYXJhbXMudXNlcilcbiAgICAgIHRoaXMuZW1haWwgPSBkZWNvZGVVUklDb21wb25lbnQodGhpcy5yb3V0ZS5zbmFwc2hvdC5xdWVyeVBhcmFtcy51c2VyKTtcbiAgICB0aGlzLmNvZGUgPSB0aGlzLnJvdXRlLnNuYXBzaG90LnF1ZXJ5UGFyYW1zLmNvZGU7XG4gIH1cblxuICBhc3luYyBjb25maXJtUGFzc3dvcmQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdHJ5IHtcbiAgICAgIHRoaXMuZXJyb3JNc2cgPSBudWxsO1xuICAgICAgY29uc3QgZXJyb3JzID0gdGhpcy5hdXRoLnZhbGlkYXRlUGFzc3dvcmRBZ2FpbnN0UG9saWN5KHRoaXMubmV3UGFzc3dvcmQpO1xuICAgICAgaWYgKGVycm9ycy5sZW5ndGgpXG4gICAgICAgIHRoaXMuZXJyb3JNc2cgPSBbXG4gICAgICAgICAgdGhpcy50Ll8oJ0lERUFfQVVUSC5QQVNTV09SRF9SRVFVSVJFTUVOVFNfRk9MTE9XJyksXG4gICAgICAgICAgLi4uZXJyb3JzLm1hcCh4ID0+XG4gICAgICAgICAgICB0aGlzLnQuXygnSURFQV9BVVRILlBBU1NXT1JEX1JFUVVJUkVNRU5UUy4nLmNvbmNhdCh4KSwgeyBuOiB0aGlzLnBhc3N3b3JkUG9saWN5Lm1pbkxlbmd0aCB9KVxuICAgICAgICAgIClcbiAgICAgICAgXS5qb2luKCcgJyk7XG4gICAgICBpZiAodGhpcy5lcnJvck1zZykgcmV0dXJuIHRoaXMubWVzc2FnZS5lcnJvcignSURFQV9BVVRILlBBU1NXT1JEX1JFUVVJUkVNRU5UU19GT0xMT1cnKTtcblxuICAgICAgYXdhaXQgdGhpcy5sb2FkaW5nLnNob3coKTtcbiAgICAgIGF3YWl0IHRoaXMuYXV0aC5jb25maXJtUGFzc3dvcmQodGhpcy5lbWFpbCwgdGhpcy5jb2RlLCB0aGlzLm5ld1Bhc3N3b3JkKTtcbiAgICAgIHRoaXMubWVzc2FnZS5zdWNjZXNzKCdJREVBX0FVVEguUEFTU1dPUkRfQ0hBTkdFRCcpO1xuICAgICAgdGhpcy5nb1RvQXV0aCgpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICB0aGlzLmVycm9yTXNnID0gKGVycm9yIGFzIGFueSkubWVzc2FnZTtcbiAgICAgIHRoaXMubWVzc2FnZS5lcnJvcignSURFQV9BVVRILlBBU1NXT1JEX1JFUVVJUkVNRU5UU19GT0xMT1cnKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGhpcy5sb2FkaW5nLmhpZGUoKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBvcGVuUGFzc3dvcmRQb2xpY3koZXZlbnQ6IEV2ZW50KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgY3NzQ2xhc3MgPSAncGFzc3dvcmRQb2xpY3lQb3BvdmVyJztcbiAgICBjb25zdCBwb3BvdmVyID0gYXdhaXQgdGhpcy5wb3BvdmVyQ3RybC5jcmVhdGUoeyBjb21wb25lbnQ6IElERUFQYXNzd29yZFBvbGljeUNvbXBvbmVudCwgZXZlbnQsIGNzc0NsYXNzIH0pO1xuICAgIGF3YWl0IHBvcG92ZXIucHJlc2VudCgpO1xuICB9XG5cbiAgZ29Ub0ZvcmdvdFBhc3N3b3JkKCk6IHZvaWQge1xuICAgIHRoaXMubmF2Q3RybC5uYXZpZ2F0ZUJhY2soWydhdXRoL2ZvcmdvdC1wYXNzd29yZCddKTtcbiAgfVxuICBnb1RvQXV0aCgpOiB2b2lkIHtcbiAgICB0aGlzLm5hdkN0cmwubmF2aWdhdGVCYWNrKFsnYXV0aCddKTtcbiAgfVxufVxuIiwiPGlvbi1jb250ZW50PlxuICA8Zm9ybSBjbGFzcz1cImZsZXhCb3hcIj5cbiAgICA8aW9uLWNhcmQgY2xhc3M9XCJhdXRoQ2FyZFwiPlxuICAgICAgPGlvbi1jYXJkLWhlYWRlcj5cbiAgICAgICAgPGlvbi1jYXJkLXRpdGxlIGNvbG9yPVwicHJpbWFyeVwiPnt7ICdJREVBX0FVVEguQ0hBTkdFX1RIRV9QQVNTV09SRCcgfCB0cmFuc2xhdGUgfX08L2lvbi1jYXJkLXRpdGxlPlxuICAgICAgPC9pb24tY2FyZC1oZWFkZXI+XG4gICAgICA8aW9uLWNhcmQtY29udGVudD5cbiAgICAgICAgPHAgY2xhc3M9XCJlcnJvckJveFwiICpuZ0lmPVwiZXJyb3JNc2dcIj5cbiAgICAgICAgICA8Yj4ge3sgJ0lERUFfQVVUSC5FUlJPUicgfCB0cmFuc2xhdGUgfX0uIDwvYj5cbiAgICAgICAgICB7eyBlcnJvck1zZyB9fVxuICAgICAgICA8L3A+XG4gICAgICAgIDxpb24taXRlbT5cbiAgICAgICAgICA8aW9uLWxhYmVsIHBvc2l0aW9uPVwiaW5saW5lXCI+XG4gICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cInBlcnNvbi1jaXJjbGVcIiBjb2xvcj1cInByaW1hcnlcIj48L2lvbi1pY29uPlxuICAgICAgICAgIDwvaW9uLWxhYmVsPlxuICAgICAgICAgIDxpb24taW5wdXRcbiAgICAgICAgICAgIHR5cGU9XCJlbWFpbFwiXG4gICAgICAgICAgICBpbnB1dG1vZGU9XCJlbWFpbFwiXG4gICAgICAgICAgICBwYXR0ZXJuPVwiW0EtWmEtejAtOS5fJSstXXsyLH1AW2EtekEtWi1fLl17Mix9Wy5dezF9W2EtekEtWl17Mix9XCJcbiAgICAgICAgICAgIHNwZWxsY2hlY2s9XCJmYWxzZVwiXG4gICAgICAgICAgICBhdXRvY29ycmVjdD1cIm9mZlwiXG4gICAgICAgICAgICBhdXRvY2FwaXRhbGl6ZT1cIm9mZlwiXG4gICAgICAgICAgICBhdXRvY29tcGxldGU9XCJlbWFpbFwiXG4gICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ0lERUFfQVVUSC5FTUFJTCcgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgW3RpdGxlXT1cIidJREVBX0FVVEguRU1BSUxfSElOVCcgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgW25nTW9kZWxPcHRpb25zXT1cInsgc3RhbmRhbG9uZTogdHJ1ZSB9XCJcbiAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZW1haWxcIlxuICAgICAgICAgICAgKGtleXVwLmVudGVyKT1cImNvbmZpcm1QYXNzd29yZCgpXCJcbiAgICAgICAgICA+PC9pb24taW5wdXQ+XG4gICAgICAgIDwvaW9uLWl0ZW0+XG4gICAgICAgIDxpb24taXRlbT5cbiAgICAgICAgICA8aW9uLWxhYmVsIHBvc2l0aW9uPVwiaW5saW5lXCI+XG4gICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cImRpc2NcIiBjb2xvcj1cInByaW1hcnlcIj48L2lvbi1pY29uPlxuICAgICAgICAgIDwvaW9uLWxhYmVsPlxuICAgICAgICAgIDxpb24taW5wdXRcbiAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgIHNwZWxsY2hlY2s9XCJmYWxzZVwiXG4gICAgICAgICAgICBhdXRvY29ycmVjdD1cIm9mZlwiXG4gICAgICAgICAgICBhdXRvY2FwaXRhbGl6ZT1cIm9mZlwiXG4gICAgICAgICAgICBhdXRvY29tcGxldGU9XCJvZmZcIlxuICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidJREVBX0FVVEguUkVTRVRfQ09ERScgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgW3RpdGxlXT1cIidJREVBX0FVVEguUkVTRVRfQ09ERV9ISU5UJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICBbbmdNb2RlbE9wdGlvbnNdPVwieyBzdGFuZGFsb25lOiB0cnVlIH1cIlxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJjb2RlXCJcbiAgICAgICAgICAgIChrZXl1cC5lbnRlcik9XCJjb25maXJtUGFzc3dvcmQoKVwiXG4gICAgICAgICAgPjwvaW9uLWlucHV0PlxuICAgICAgICA8L2lvbi1pdGVtPlxuICAgICAgICA8aW9uLWl0ZW0+XG4gICAgICAgICAgPGlvbi1sYWJlbCBwb3NpdGlvbj1cImlubGluZVwiPlxuICAgICAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJrZXlcIiBjb2xvcj1cInByaW1hcnlcIj48L2lvbi1pY29uPlxuICAgICAgICAgIDwvaW9uLWxhYmVsPlxuICAgICAgICAgIDxpb24taW5wdXRcbiAgICAgICAgICAgIHR5cGU9XCJwYXNzd29yZFwiXG4gICAgICAgICAgICBzcGVsbGNoZWNrPVwiZmFsc2VcIlxuICAgICAgICAgICAgYXV0b2NvcnJlY3Q9XCJvZmZcIlxuICAgICAgICAgICAgYXV0b2NhcGl0YWxpemU9XCJvZmZcIlxuICAgICAgICAgICAgYXV0b2NvbXBsZXRlPVwibmV3LXBhc3N3b3JkXCJcbiAgICAgICAgICAgIFtwYXR0ZXJuXT1cImF1dGguZ2V0UGFzc3dvcmRQb2xpY3lQYXR0ZXJuRm9ySW5wdXQoKVwiXG4gICAgICAgICAgICBbY2xlYXJPbkVkaXRdPVwiZmFsc2VcIlxuICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidJREVBX0FVVEguTkVXX1BBU1NXT1JEJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICBbdGl0bGVdPVwiJ0lERUFfQVVUSC5DSE9PU0VfQV9QQVNTV09SRCcgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgW25nTW9kZWxPcHRpb25zXT1cInsgc3RhbmRhbG9uZTogdHJ1ZSB9XCJcbiAgICAgICAgICAgIFsobmdNb2RlbCldPVwibmV3UGFzc3dvcmRcIlxuICAgICAgICAgICAgKGtleXVwLmVudGVyKT1cImNvbmZpcm1QYXNzd29yZCgpXCJcbiAgICAgICAgICA+PC9pb24taW5wdXQ+XG4gICAgICAgICAgPGlvbi1idXR0b24gc2xvdD1cImVuZFwiIGZpbGw9XCJjbGVhclwiIGNvbG9yPVwiZGFya1wiIChjbGljayk9XCJvcGVuUGFzc3dvcmRQb2xpY3koJGV2ZW50KVwiPlxuICAgICAgICAgICAgPGlvbi1pY29uIGljb249XCJoZWxwLWNpcmNsZS1vdXRsaW5lXCIgc2xvdD1cImljb24tb25seVwiPjwvaW9uLWljb24+XG4gICAgICAgICAgPC9pb24tYnV0dG9uPlxuICAgICAgICA8L2lvbi1pdGVtPlxuICAgICAgICA8aW9uLWJ1dHRvblxuICAgICAgICAgIGV4cGFuZD1cImJsb2NrXCJcbiAgICAgICAgICBbdGl0bGVdPVwiJ0lERUFfQVVUSC5DSEFOR0VfTVlfUEFTU1dPUkRfSElOVCcgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgIChjbGljayk9XCJjb25maXJtUGFzc3dvcmQoKVwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyAnSURFQV9BVVRILkNIQU5HRV9NWV9QQVNTV09SRCcgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgPC9pb24tYnV0dG9uPlxuICAgICAgICA8aW9uLWJ1dHRvblxuICAgICAgICAgIGZpbGw9XCJjbGVhclwiXG4gICAgICAgICAgZXhwYW5kPVwiYmxvY2tcIlxuICAgICAgICAgIGNsYXNzPVwic21hbGxDYXNlQnV0dG9uXCJcbiAgICAgICAgICBbdGl0bGVdPVwiJ0lERUFfQVVUSC5IQVZFTl9UX1JFQ0VJVkVEX0FfUkVTRVRfQ09ERV9ISU5UJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgKGNsaWNrKT1cImdvVG9Gb3Jnb3RQYXNzd29yZCgpXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7ICdJREVBX0FVVEguSEFWRU5fVF9SRUNFSVZFRF9BX1JFU0VUX0NPREUnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgICAgPGlvbi1idXR0b25cbiAgICAgICAgICBmaWxsPVwiY2xlYXJcIlxuICAgICAgICAgIGV4cGFuZD1cImJsb2NrXCJcbiAgICAgICAgICBjbGFzcz1cInNtYWxsQ2FzZUJ1dHRvblwiXG4gICAgICAgICAgW3RpdGxlXT1cIidJREVBX0FVVEguQkFDS19UT19TSUdOX0lOX0hJTlQnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAoY2xpY2spPVwiZ29Ub0F1dGgoKVwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyAnSURFQV9BVVRILkJBQ0tfVE9fU0lHTl9JTicgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgPC9pb24tYnV0dG9uPlxuICAgICAgPC9pb24tY2FyZC1jb250ZW50PlxuICAgIDwvaW9uLWNhcmQ+XG4gIDwvZm9ybT5cbjwvaW9uLWNvbnRlbnQ+XG4iXX0=
@@ -1,6 +1,6 @@
1
- import { Component } from '@angular/core';
1
+ import { Component, inject } from '@angular/core';
2
+ import { IDEAEnvironment } from '@idea-ionic/common';
2
3
  import { IDEAPasswordPolicyComponent } from './passwordPolicy.component';
3
- import { environment as env } from '@env';
4
4
  import * as i0 from "@angular/core";
5
5
  import * as i1 from "@ionic/angular";
6
6
  import * as i2 from "@idea-ionic/common";
@@ -15,7 +15,8 @@ export class IDEANewPasswordPage {
15
15
  this.loading = loading;
16
16
  this.t = t;
17
17
  this.auth = auth;
18
- this.passwordPolicy = env.idea.auth.passwordPolicy;
18
+ this.env = inject(IDEAEnvironment);
19
+ this.passwordPolicy = this.env.idea.auth.passwordPolicy;
19
20
  }
20
21
  ngOnInit() {
21
22
  if (!this.auth.challengeUsername)
@@ -59,4 +60,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0", ngImpor
59
60
  type: Component,
60
61
  args: [{ selector: 'idea-new-password', template: "<ion-content>\n <form class=\"flexBox\">\n <ion-card class=\"authCard\">\n <ion-card-header>\n <ion-card-title color=\"primary\">{{ 'IDEA_AUTH.CHOOSE_A_PASSWORD' | translate }}</ion-card-title>\n <ion-card-subtitle>{{ 'IDEA_AUTH.YOU_NEED_TO_CHOOSE_A_NEW_PASSWORD' | translate }}</ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <p class=\"errorBox\" *ngIf=\"errorMsg\">\n <b> {{ 'IDEA_AUTH.ERROR' | translate }}. </b>\n {{ errorMsg }}\n </p>\n <ion-item>\n <ion-label position=\"inline\">\n <ion-icon name=\"key\" color=\"primary\"></ion-icon>\n </ion-label>\n <ion-input\n type=\"password\"\n spellcheck=\"false\"\n autocorrect=\"off\"\n autocapitalize=\"off\"\n autocomplete=\"new-password\"\n [pattern]=\"auth.getPasswordPolicyPatternForInput()\"\n [clearOnEdit]=\"false\"\n [placeholder]=\"'IDEA_AUTH.PASSWORD' | translate\"\n [title]=\"'IDEA_AUTH.CHOOSE_A_PASSWORD' | translate\"\n [ngModelOptions]=\"{ standalone: true }\"\n [(ngModel)]=\"newPassword\"\n (keyup.enter)=\"confirmNewPassword()\"\n ></ion-input>\n <ion-button slot=\"end\" fill=\"clear\" color=\"dark\" (click)=\"openPasswordPolicy($event)\">\n <ion-icon icon=\"help-circle-outline\" slot=\"icon-only\"></ion-icon>\n </ion-button>\n </ion-item>\n <ion-button\n expand=\"block\"\n [title]=\"'IDEA_AUTH.CONFIRM_NEW_PASSWORD_HINT' | translate\"\n (click)=\"confirmNewPassword()\"\n >\n {{ 'IDEA_AUTH.CONFIRM_NEW_PASSWORD' | translate }}\n </ion-button>\n <ion-button\n fill=\"clear\"\n expand=\"block\"\n class=\"smallCaseButton\"\n [title]=\"'IDEA_AUTH.BACK_TO_SIGN_IN_HINT' | translate\"\n (click)=\"goToAuth()\"\n >\n {{ 'IDEA_AUTH.BACK_TO_SIGN_IN' | translate }}\n </ion-button>\n </ion-card-content>\n </ion-card>\n </form>\n</ion-content>\n", styles: [".flexBox{background:var(--idea-auth-background-color, var(--ion-color-white-shade))}.authCard{min-width:400px;max-width:550px;margin:0 10px;padding:20px;background-color:var(--idea-auth-card-background-color, var(--ion-color-white));border:1px solid var(--idea-auth-card-border-color, var(--ion-color-light));border-radius:10px;box-shadow:none;text-align:center}.authCard ion-img{width:150px;display:block;margin:0 auto}.authCard ion-card-title{font-family:auth-title;font-size:3em}.authCard ion-card-subtitle{font-family:auth-title;font-size:1.2em}.authCard ion-card-content{padding-top:16px}.authCard ion-card-content .errorBox{padding-left:10px;margin-bottom:20px;text-align:left;border-left:2px solid var(--ion-color-danger)}.authCard ion-card-content ion-item{--ion-item-background: var(--idea-auth-card-background-color, var(--ion-color-white));--border-color: var(--idea-auth-card-border-color, var(--ion-color-light))}.authCard ion-card-content ion-label[position=inline] ion-icon{padding-top:4px;padding-right:5px;font-size:1.3em}.authCard ion-card-content .agreementsAcceptanceRow{margin-top:15px;font-size:.9em}.authCard ion-card-content .agreementsAcceptanceRow ion-checkbox{vertical-align:bottom;margin-right:3px}.authCard ion-card-content ion-button:not([slot=end]){margin-top:15px}.authCard ion-card-content .smallCaseButton{text-transform:none;letter-spacing:normal;font-size:1em}@media only screen and (max-width: 500px){.authCard{background-color:transparent;border:none}}.ideaLogo{width:65px;margin:40px auto 0;cursor:pointer}.passwordPolicyPopover{--width: 350px}\n"] }]
61
62
  }], ctorParameters: () => [{ type: i1.NavController }, { type: i1.PopoverController }, { type: i2.IDEAMessageService }, { type: i2.IDEALoadingService }, { type: i2.IDEATranslationsService }, { type: i3.IDEAAuthService }] });
62
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmV3UGFzc3dvcmQucGFnZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL21vZHVsZXMvYXV0aC9zcmMvbmV3UGFzc3dvcmQucGFnZS50cyIsIi4uLy4uLy4uLy4uL21vZHVsZXMvYXV0aC9zcmMvbmV3UGFzc3dvcmQucGFnZS5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFJbEQsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFJekUsT0FBTyxFQUFFLFdBQVcsSUFBSSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7Ozs7QUFPMUMsTUFBTSxPQUFPLG1CQUFtQjtJQUs5QixZQUNVLE9BQXNCLEVBQ3RCLFdBQThCLEVBQzlCLE9BQTJCLEVBQzNCLE9BQTJCLEVBQzNCLENBQTBCLEVBQzNCLElBQXFCO1FBTHBCLFlBQU8sR0FBUCxPQUFPLENBQWU7UUFDdEIsZ0JBQVcsR0FBWCxXQUFXLENBQW1CO1FBQzlCLFlBQU8sR0FBUCxPQUFPLENBQW9CO1FBQzNCLFlBQU8sR0FBUCxPQUFPLENBQW9CO1FBQzNCLE1BQUMsR0FBRCxDQUFDLENBQXlCO1FBQzNCLFNBQUksR0FBSixJQUFJLENBQWlCO1FBVDlCLG1CQUFjLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDO0lBVTNDLENBQUM7SUFDSixRQUFRO1FBQ04sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsaUJBQWlCO1lBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ3BELENBQUM7SUFFRCxLQUFLLENBQUMsa0JBQWtCO1FBQ3RCLElBQUksQ0FBQztZQUNILElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO1lBQ3JCLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsNkJBQTZCLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQ3pFLElBQUksTUFBTSxDQUFDLE1BQU07Z0JBQ2YsSUFBSSxDQUFDLFFBQVEsR0FBRztvQkFDZCxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyx3Q0FBd0MsQ0FBQztvQkFDbEQsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQ2hCLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGtDQUFrQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQzdGO2lCQUNGLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ2QsSUFBSSxJQUFJLENBQUMsUUFBUTtnQkFBRSxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLHdDQUF3QyxDQUFDLENBQUM7WUFFdkYsTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDO1lBQzFCLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDckQsTUFBTSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDN0IsQ0FBQztRQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7WUFDZixJQUFJLENBQUMsUUFBUSxHQUFJLEtBQWEsQ0FBQyxPQUFPLENBQUM7WUFDdkMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsd0NBQXdDLENBQUMsQ0FBQztRQUMvRCxDQUFDO2dCQUFTLENBQUM7WUFDVCxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3RCLENBQUM7SUFDSCxDQUFDO0lBRUQsS0FBSyxDQUFDLGtCQUFrQixDQUFDLEtBQVk7UUFDbkMsTUFBTSxRQUFRLEdBQUcsdUJBQXVCLENBQUM7UUFDekMsTUFBTSxPQUFPLEdBQUcsTUFBTSxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxFQUFFLFNBQVMsRUFBRSwyQkFBMkIsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQztRQUMzRyxNQUFNLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUN0QyxDQUFDOzhHQWpEVSxtQkFBbUI7a0dBQW5CLG1CQUFtQix5RENmaEMsOG1FQXNEQTs7MkZEdkNhLG1CQUFtQjtrQkFML0IsU0FBUzsrQkFDRSxtQkFBbUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTmF2Q29udHJvbGxlciwgUG9wb3ZlckNvbnRyb2xsZXIgfSBmcm9tICdAaW9uaWMvYW5ndWxhcic7XG5pbXBvcnQgeyBJREVBTWVzc2FnZVNlcnZpY2UsIElERUFMb2FkaW5nU2VydmljZSwgSURFQVRyYW5zbGF0aW9uc1NlcnZpY2UgfSBmcm9tICdAaWRlYS1pb25pYy9jb21tb24nO1xuXG5pbXBvcnQgeyBJREVBUGFzc3dvcmRQb2xpY3lDb21wb25lbnQgfSBmcm9tICcuL3Bhc3N3b3JkUG9saWN5LmNvbXBvbmVudCc7XG5cbmltcG9ydCB7IElERUFBdXRoU2VydmljZSB9IGZyb20gJy4vYXV0aC5zZXJ2aWNlJztcblxuaW1wb3J0IHsgZW52aXJvbm1lbnQgYXMgZW52IH0gZnJvbSAnQGVudic7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2lkZWEtbmV3LXBhc3N3b3JkJyxcbiAgdGVtcGxhdGVVcmw6ICduZXdQYXNzd29yZC5wYWdlLmh0bWwnLFxuICBzdHlsZVVybHM6IFsnYXV0aC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgSURFQU5ld1Bhc3N3b3JkUGFnZSBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIG5ld1Bhc3N3b3JkOiBzdHJpbmc7XG4gIHBhc3N3b3JkUG9saWN5ID0gZW52LmlkZWEuYXV0aC5wYXNzd29yZFBvbGljeTtcbiAgZXJyb3JNc2c6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIG5hdkN0cmw6IE5hdkNvbnRyb2xsZXIsXG4gICAgcHJpdmF0ZSBwb3BvdmVyQ3RybDogUG9wb3ZlckNvbnRyb2xsZXIsXG4gICAgcHJpdmF0ZSBtZXNzYWdlOiBJREVBTWVzc2FnZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBsb2FkaW5nOiBJREVBTG9hZGluZ1NlcnZpY2UsXG4gICAgcHJpdmF0ZSB0OiBJREVBVHJhbnNsYXRpb25zU2VydmljZSxcbiAgICBwdWJsaWMgYXV0aDogSURFQUF1dGhTZXJ2aWNlXG4gICkge31cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmF1dGguY2hhbGxlbmdlVXNlcm5hbWUpIHRoaXMuZ29Ub0F1dGgoKTtcbiAgfVxuXG4gIGFzeW5jIGNvbmZpcm1OZXdQYXNzd29yZCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0cnkge1xuICAgICAgdGhpcy5lcnJvck1zZyA9IG51bGw7XG4gICAgICBjb25zdCBlcnJvcnMgPSB0aGlzLmF1dGgudmFsaWRhdGVQYXNzd29yZEFnYWluc3RQb2xpY3kodGhpcy5uZXdQYXNzd29yZCk7XG4gICAgICBpZiAoZXJyb3JzLmxlbmd0aClcbiAgICAgICAgdGhpcy5lcnJvck1zZyA9IFtcbiAgICAgICAgICB0aGlzLnQuXygnSURFQV9BVVRILlBBU1NXT1JEX1JFUVVJUkVNRU5UU19GT0xMT1cnKSxcbiAgICAgICAgICAuLi5lcnJvcnMubWFwKHggPT5cbiAgICAgICAgICAgIHRoaXMudC5fKCdJREVBX0FVVEguUEFTU1dPUkRfUkVRVUlSRU1FTlRTLicuY29uY2F0KHgpLCB7IG46IHRoaXMucGFzc3dvcmRQb2xpY3kubWluTGVuZ3RoIH0pXG4gICAgICAgICAgKVxuICAgICAgICBdLmpvaW4oJyAnKTtcbiAgICAgIGlmICh0aGlzLmVycm9yTXNnKSByZXR1cm4gdGhpcy5tZXNzYWdlLmVycm9yKCdJREVBX0FVVEguUEFTU1dPUkRfUkVRVUlSRU1FTlRTX0ZPTExPVycpO1xuXG4gICAgICBhd2FpdCB0aGlzLmxvYWRpbmcuc2hvdygpO1xuICAgICAgYXdhaXQgdGhpcy5hdXRoLmNvbmZpcm1OZXdQYXNzd29yZCh0aGlzLm5ld1Bhc3N3b3JkKTtcbiAgICAgIHdpbmRvdy5sb2NhdGlvbi5hc3NpZ24oJycpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICB0aGlzLmVycm9yTXNnID0gKGVycm9yIGFzIGFueSkubWVzc2FnZTtcbiAgICAgIHRoaXMubWVzc2FnZS5lcnJvcignSURFQV9BVVRILlBBU1NXT1JEX1JFUVVJUkVNRU5UU19GT0xMT1cnKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGhpcy5sb2FkaW5nLmhpZGUoKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBvcGVuUGFzc3dvcmRQb2xpY3koZXZlbnQ6IEV2ZW50KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgY3NzQ2xhc3MgPSAncGFzc3dvcmRQb2xpY3lQb3BvdmVyJztcbiAgICBjb25zdCBwb3BvdmVyID0gYXdhaXQgdGhpcy5wb3BvdmVyQ3RybC5jcmVhdGUoeyBjb21wb25lbnQ6IElERUFQYXNzd29yZFBvbGljeUNvbXBvbmVudCwgZXZlbnQsIGNzc0NsYXNzIH0pO1xuICAgIGF3YWl0IHBvcG92ZXIucHJlc2VudCgpO1xuICB9XG5cbiAgZ29Ub0F1dGgoKTogdm9pZCB7XG4gICAgdGhpcy5uYXZDdHJsLm5hdmlnYXRlQmFjayhbJ2F1dGgnXSk7XG4gIH1cbn1cbiIsIjxpb24tY29udGVudD5cbiAgPGZvcm0gY2xhc3M9XCJmbGV4Qm94XCI+XG4gICAgPGlvbi1jYXJkIGNsYXNzPVwiYXV0aENhcmRcIj5cbiAgICAgIDxpb24tY2FyZC1oZWFkZXI+XG4gICAgICAgIDxpb24tY2FyZC10aXRsZSBjb2xvcj1cInByaW1hcnlcIj57eyAnSURFQV9BVVRILkNIT09TRV9BX1BBU1NXT1JEJyB8IHRyYW5zbGF0ZSB9fTwvaW9uLWNhcmQtdGl0bGU+XG4gICAgICAgIDxpb24tY2FyZC1zdWJ0aXRsZT57eyAnSURFQV9BVVRILllPVV9ORUVEX1RPX0NIT09TRV9BX05FV19QQVNTV09SRCcgfCB0cmFuc2xhdGUgfX08L2lvbi1jYXJkLXN1YnRpdGxlPlxuICAgICAgPC9pb24tY2FyZC1oZWFkZXI+XG4gICAgICA8aW9uLWNhcmQtY29udGVudD5cbiAgICAgICAgPHAgY2xhc3M9XCJlcnJvckJveFwiICpuZ0lmPVwiZXJyb3JNc2dcIj5cbiAgICAgICAgICA8Yj4ge3sgJ0lERUFfQVVUSC5FUlJPUicgfCB0cmFuc2xhdGUgfX0uIDwvYj5cbiAgICAgICAgICB7eyBlcnJvck1zZyB9fVxuICAgICAgICA8L3A+XG4gICAgICAgIDxpb24taXRlbT5cbiAgICAgICAgICA8aW9uLWxhYmVsIHBvc2l0aW9uPVwiaW5saW5lXCI+XG4gICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cImtleVwiIGNvbG9yPVwicHJpbWFyeVwiPjwvaW9uLWljb24+XG4gICAgICAgICAgPC9pb24tbGFiZWw+XG4gICAgICAgICAgPGlvbi1pbnB1dFxuICAgICAgICAgICAgdHlwZT1cInBhc3N3b3JkXCJcbiAgICAgICAgICAgIHNwZWxsY2hlY2s9XCJmYWxzZVwiXG4gICAgICAgICAgICBhdXRvY29ycmVjdD1cIm9mZlwiXG4gICAgICAgICAgICBhdXRvY2FwaXRhbGl6ZT1cIm9mZlwiXG4gICAgICAgICAgICBhdXRvY29tcGxldGU9XCJuZXctcGFzc3dvcmRcIlxuICAgICAgICAgICAgW3BhdHRlcm5dPVwiYXV0aC5nZXRQYXNzd29yZFBvbGljeVBhdHRlcm5Gb3JJbnB1dCgpXCJcbiAgICAgICAgICAgIFtjbGVhck9uRWRpdF09XCJmYWxzZVwiXG4gICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ0lERUFfQVVUSC5QQVNTV09SRCcgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgW3RpdGxlXT1cIidJREVBX0FVVEguQ0hPT1NFX0FfUEFTU1dPUkQnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgIFtuZ01vZGVsT3B0aW9uc109XCJ7IHN0YW5kYWxvbmU6IHRydWUgfVwiXG4gICAgICAgICAgICBbKG5nTW9kZWwpXT1cIm5ld1Bhc3N3b3JkXCJcbiAgICAgICAgICAgIChrZXl1cC5lbnRlcik9XCJjb25maXJtTmV3UGFzc3dvcmQoKVwiXG4gICAgICAgICAgPjwvaW9uLWlucHV0PlxuICAgICAgICAgIDxpb24tYnV0dG9uIHNsb3Q9XCJlbmRcIiBmaWxsPVwiY2xlYXJcIiBjb2xvcj1cImRhcmtcIiAoY2xpY2spPVwib3BlblBhc3N3b3JkUG9saWN5KCRldmVudClcIj5cbiAgICAgICAgICAgIDxpb24taWNvbiBpY29uPVwiaGVscC1jaXJjbGUtb3V0bGluZVwiIHNsb3Q9XCJpY29uLW9ubHlcIj48L2lvbi1pY29uPlxuICAgICAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgICAgPC9pb24taXRlbT5cbiAgICAgICAgPGlvbi1idXR0b25cbiAgICAgICAgICBleHBhbmQ9XCJibG9ja1wiXG4gICAgICAgICAgW3RpdGxlXT1cIidJREVBX0FVVEguQ09ORklSTV9ORVdfUEFTU1dPUkRfSElOVCcgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgIChjbGljayk9XCJjb25maXJtTmV3UGFzc3dvcmQoKVwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyAnSURFQV9BVVRILkNPTkZJUk1fTkVXX1BBU1NXT1JEJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICA8L2lvbi1idXR0b24+XG4gICAgICAgIDxpb24tYnV0dG9uXG4gICAgICAgICAgZmlsbD1cImNsZWFyXCJcbiAgICAgICAgICBleHBhbmQ9XCJibG9ja1wiXG4gICAgICAgICAgY2xhc3M9XCJzbWFsbENhc2VCdXR0b25cIlxuICAgICAgICAgIFt0aXRsZV09XCInSURFQV9BVVRILkJBQ0tfVE9fU0lHTl9JTl9ISU5UJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgKGNsaWNrKT1cImdvVG9BdXRoKClcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgJ0lERUFfQVVUSC5CQUNLX1RPX1NJR05fSU4nIHwgdHJhbnNsYXRlIH19XG4gICAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgIDwvaW9uLWNhcmQtY29udGVudD5cbiAgICA8L2lvbi1jYXJkPlxuICA8L2Zvcm0+XG48L2lvbi1jb250ZW50PlxuIl19
63
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmV3UGFzc3dvcmQucGFnZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL21vZHVsZXMvYXV0aC9zcmMvbmV3UGFzc3dvcmQucGFnZS50cyIsIi4uLy4uLy4uLy4uL21vZHVsZXMvYXV0aC9zcmMvbmV3UGFzc3dvcmQucGFnZS5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTFELE9BQU8sRUFBRSxlQUFlLEVBQW1FLE1BQU0sb0JBQW9CLENBQUM7QUFFdEgsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7Ozs7Ozs7QUFTekUsTUFBTSxPQUFPLG1CQUFtQjtJQU85QixZQUNVLE9BQXNCLEVBQ3RCLFdBQThCLEVBQzlCLE9BQTJCLEVBQzNCLE9BQTJCLEVBQzNCLENBQTBCLEVBQzNCLElBQXFCO1FBTHBCLFlBQU8sR0FBUCxPQUFPLENBQWU7UUFDdEIsZ0JBQVcsR0FBWCxXQUFXLENBQW1CO1FBQzlCLFlBQU8sR0FBUCxPQUFPLENBQW9CO1FBQzNCLFlBQU8sR0FBUCxPQUFPLENBQW9CO1FBQzNCLE1BQUMsR0FBRCxDQUFDLENBQXlCO1FBQzNCLFNBQUksR0FBSixJQUFJLENBQWlCO1FBWnBCLFFBQUcsR0FBRyxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUM7UUFjdEMsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDO0lBQzFELENBQUM7SUFDRCxRQUFRO1FBQ04sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsaUJBQWlCO1lBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ3BELENBQUM7SUFFRCxLQUFLLENBQUMsa0JBQWtCO1FBQ3RCLElBQUksQ0FBQztZQUNILElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO1lBQ3JCLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsNkJBQTZCLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQ3pFLElBQUksTUFBTSxDQUFDLE1BQU07Z0JBQ2YsSUFBSSxDQUFDLFFBQVEsR0FBRztvQkFDZCxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyx3Q0FBd0MsQ0FBQztvQkFDbEQsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQ2hCLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGtDQUFrQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQzdGO2lCQUNGLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ2QsSUFBSSxJQUFJLENBQUMsUUFBUTtnQkFBRSxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLHdDQUF3QyxDQUFDLENBQUM7WUFFdkYsTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDO1lBQzFCLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDckQsTUFBTSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDN0IsQ0FBQztRQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7WUFDZixJQUFJLENBQUMsUUFBUSxHQUFJLEtBQWEsQ0FBQyxPQUFPLENBQUM7WUFDdkMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsd0NBQXdDLENBQUMsQ0FBQztRQUMvRCxDQUFDO2dCQUFTLENBQUM7WUFDVCxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3RCLENBQUM7SUFDSCxDQUFDO0lBRUQsS0FBSyxDQUFDLGtCQUFrQixDQUFDLEtBQVk7UUFDbkMsTUFBTSxRQUFRLEdBQUcsdUJBQXVCLENBQUM7UUFDekMsTUFBTSxPQUFPLEdBQUcsTUFBTSxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxFQUFFLFNBQVMsRUFBRSwyQkFBMkIsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQztRQUMzRyxNQUFNLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUN0QyxDQUFDOzhHQXJEVSxtQkFBbUI7a0dBQW5CLG1CQUFtQix5RENiaEMsOG1FQXNEQTs7MkZEekNhLG1CQUFtQjtrQkFML0IsU0FBUzsrQkFDRSxtQkFBbUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOYXZDb250cm9sbGVyLCBQb3BvdmVyQ29udHJvbGxlciB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyJztcbmltcG9ydCB7IElERUFFbnZpcm9ubWVudCwgSURFQU1lc3NhZ2VTZXJ2aWNlLCBJREVBTG9hZGluZ1NlcnZpY2UsIElERUFUcmFuc2xhdGlvbnNTZXJ2aWNlIH0gZnJvbSAnQGlkZWEtaW9uaWMvY29tbW9uJztcblxuaW1wb3J0IHsgSURFQVBhc3N3b3JkUG9saWN5Q29tcG9uZW50IH0gZnJvbSAnLi9wYXNzd29yZFBvbGljeS5jb21wb25lbnQnO1xuXG5pbXBvcnQgeyBJREVBQXV0aFNlcnZpY2UgfSBmcm9tICcuL2F1dGguc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2lkZWEtbmV3LXBhc3N3b3JkJyxcbiAgdGVtcGxhdGVVcmw6ICduZXdQYXNzd29yZC5wYWdlLmh0bWwnLFxuICBzdHlsZVVybHM6IFsnYXV0aC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgSURFQU5ld1Bhc3N3b3JkUGFnZSBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIHByb3RlY3RlZCBlbnYgPSBpbmplY3QoSURFQUVudmlyb25tZW50KTtcblxuICBuZXdQYXNzd29yZDogc3RyaW5nO1xuICBwYXNzd29yZFBvbGljeTogYW55O1xuICBlcnJvck1zZzogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgbmF2Q3RybDogTmF2Q29udHJvbGxlcixcbiAgICBwcml2YXRlIHBvcG92ZXJDdHJsOiBQb3BvdmVyQ29udHJvbGxlcixcbiAgICBwcml2YXRlIG1lc3NhZ2U6IElERUFNZXNzYWdlU2VydmljZSxcbiAgICBwcml2YXRlIGxvYWRpbmc6IElERUFMb2FkaW5nU2VydmljZSxcbiAgICBwcml2YXRlIHQ6IElERUFUcmFuc2xhdGlvbnNTZXJ2aWNlLFxuICAgIHB1YmxpYyBhdXRoOiBJREVBQXV0aFNlcnZpY2VcbiAgKSB7XG4gICAgdGhpcy5wYXNzd29yZFBvbGljeSA9IHRoaXMuZW52LmlkZWEuYXV0aC5wYXNzd29yZFBvbGljeTtcbiAgfVxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuYXV0aC5jaGFsbGVuZ2VVc2VybmFtZSkgdGhpcy5nb1RvQXV0aCgpO1xuICB9XG5cbiAgYXN5bmMgY29uZmlybU5ld1Bhc3N3b3JkKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRyeSB7XG4gICAgICB0aGlzLmVycm9yTXNnID0gbnVsbDtcbiAgICAgIGNvbnN0IGVycm9ycyA9IHRoaXMuYXV0aC52YWxpZGF0ZVBhc3N3b3JkQWdhaW5zdFBvbGljeSh0aGlzLm5ld1Bhc3N3b3JkKTtcbiAgICAgIGlmIChlcnJvcnMubGVuZ3RoKVxuICAgICAgICB0aGlzLmVycm9yTXNnID0gW1xuICAgICAgICAgIHRoaXMudC5fKCdJREVBX0FVVEguUEFTU1dPUkRfUkVRVUlSRU1FTlRTX0ZPTExPVycpLFxuICAgICAgICAgIC4uLmVycm9ycy5tYXAoeCA9PlxuICAgICAgICAgICAgdGhpcy50Ll8oJ0lERUFfQVVUSC5QQVNTV09SRF9SRVFVSVJFTUVOVFMuJy5jb25jYXQoeCksIHsgbjogdGhpcy5wYXNzd29yZFBvbGljeS5taW5MZW5ndGggfSlcbiAgICAgICAgICApXG4gICAgICAgIF0uam9pbignICcpO1xuICAgICAgaWYgKHRoaXMuZXJyb3JNc2cpIHJldHVybiB0aGlzLm1lc3NhZ2UuZXJyb3IoJ0lERUFfQVVUSC5QQVNTV09SRF9SRVFVSVJFTUVOVFNfRk9MTE9XJyk7XG5cbiAgICAgIGF3YWl0IHRoaXMubG9hZGluZy5zaG93KCk7XG4gICAgICBhd2FpdCB0aGlzLmF1dGguY29uZmlybU5ld1Bhc3N3b3JkKHRoaXMubmV3UGFzc3dvcmQpO1xuICAgICAgd2luZG93LmxvY2F0aW9uLmFzc2lnbignJyk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHRoaXMuZXJyb3JNc2cgPSAoZXJyb3IgYXMgYW55KS5tZXNzYWdlO1xuICAgICAgdGhpcy5tZXNzYWdlLmVycm9yKCdJREVBX0FVVEguUEFTU1dPUkRfUkVRVUlSRU1FTlRTX0ZPTExPVycpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLmxvYWRpbmcuaGlkZSgpO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIG9wZW5QYXNzd29yZFBvbGljeShldmVudDogRXZlbnQpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBjc3NDbGFzcyA9ICdwYXNzd29yZFBvbGljeVBvcG92ZXInO1xuICAgIGNvbnN0IHBvcG92ZXIgPSBhd2FpdCB0aGlzLnBvcG92ZXJDdHJsLmNyZWF0ZSh7IGNvbXBvbmVudDogSURFQVBhc3N3b3JkUG9saWN5Q29tcG9uZW50LCBldmVudCwgY3NzQ2xhc3MgfSk7XG4gICAgYXdhaXQgcG9wb3Zlci5wcmVzZW50KCk7XG4gIH1cblxuICBnb1RvQXV0aCgpOiB2b2lkIHtcbiAgICB0aGlzLm5hdkN0cmwubmF2aWdhdGVCYWNrKFsnYXV0aCddKTtcbiAgfVxufVxuIiwiPGlvbi1jb250ZW50PlxuICA8Zm9ybSBjbGFzcz1cImZsZXhCb3hcIj5cbiAgICA8aW9uLWNhcmQgY2xhc3M9XCJhdXRoQ2FyZFwiPlxuICAgICAgPGlvbi1jYXJkLWhlYWRlcj5cbiAgICAgICAgPGlvbi1jYXJkLXRpdGxlIGNvbG9yPVwicHJpbWFyeVwiPnt7ICdJREVBX0FVVEguQ0hPT1NFX0FfUEFTU1dPUkQnIHwgdHJhbnNsYXRlIH19PC9pb24tY2FyZC10aXRsZT5cbiAgICAgICAgPGlvbi1jYXJkLXN1YnRpdGxlPnt7ICdJREVBX0FVVEguWU9VX05FRURfVE9fQ0hPT1NFX0FfTkVXX1BBU1NXT1JEJyB8IHRyYW5zbGF0ZSB9fTwvaW9uLWNhcmQtc3VidGl0bGU+XG4gICAgICA8L2lvbi1jYXJkLWhlYWRlcj5cbiAgICAgIDxpb24tY2FyZC1jb250ZW50PlxuICAgICAgICA8cCBjbGFzcz1cImVycm9yQm94XCIgKm5nSWY9XCJlcnJvck1zZ1wiPlxuICAgICAgICAgIDxiPiB7eyAnSURFQV9BVVRILkVSUk9SJyB8IHRyYW5zbGF0ZSB9fS4gPC9iPlxuICAgICAgICAgIHt7IGVycm9yTXNnIH19XG4gICAgICAgIDwvcD5cbiAgICAgICAgPGlvbi1pdGVtPlxuICAgICAgICAgIDxpb24tbGFiZWwgcG9zaXRpb249XCJpbmxpbmVcIj5cbiAgICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwia2V5XCIgY29sb3I9XCJwcmltYXJ5XCI+PC9pb24taWNvbj5cbiAgICAgICAgICA8L2lvbi1sYWJlbD5cbiAgICAgICAgICA8aW9uLWlucHV0XG4gICAgICAgICAgICB0eXBlPVwicGFzc3dvcmRcIlxuICAgICAgICAgICAgc3BlbGxjaGVjaz1cImZhbHNlXCJcbiAgICAgICAgICAgIGF1dG9jb3JyZWN0PVwib2ZmXCJcbiAgICAgICAgICAgIGF1dG9jYXBpdGFsaXplPVwib2ZmXCJcbiAgICAgICAgICAgIGF1dG9jb21wbGV0ZT1cIm5ldy1wYXNzd29yZFwiXG4gICAgICAgICAgICBbcGF0dGVybl09XCJhdXRoLmdldFBhc3N3b3JkUG9saWN5UGF0dGVybkZvcklucHV0KClcIlxuICAgICAgICAgICAgW2NsZWFyT25FZGl0XT1cImZhbHNlXCJcbiAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCInSURFQV9BVVRILlBBU1NXT1JEJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICBbdGl0bGVdPVwiJ0lERUFfQVVUSC5DSE9PU0VfQV9QQVNTV09SRCcgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgW25nTW9kZWxPcHRpb25zXT1cInsgc3RhbmRhbG9uZTogdHJ1ZSB9XCJcbiAgICAgICAgICAgIFsobmdNb2RlbCldPVwibmV3UGFzc3dvcmRcIlxuICAgICAgICAgICAgKGtleXVwLmVudGVyKT1cImNvbmZpcm1OZXdQYXNzd29yZCgpXCJcbiAgICAgICAgICA+PC9pb24taW5wdXQ+XG4gICAgICAgICAgPGlvbi1idXR0b24gc2xvdD1cImVuZFwiIGZpbGw9XCJjbGVhclwiIGNvbG9yPVwiZGFya1wiIChjbGljayk9XCJvcGVuUGFzc3dvcmRQb2xpY3koJGV2ZW50KVwiPlxuICAgICAgICAgICAgPGlvbi1pY29uIGljb249XCJoZWxwLWNpcmNsZS1vdXRsaW5lXCIgc2xvdD1cImljb24tb25seVwiPjwvaW9uLWljb24+XG4gICAgICAgICAgPC9pb24tYnV0dG9uPlxuICAgICAgICA8L2lvbi1pdGVtPlxuICAgICAgICA8aW9uLWJ1dHRvblxuICAgICAgICAgIGV4cGFuZD1cImJsb2NrXCJcbiAgICAgICAgICBbdGl0bGVdPVwiJ0lERUFfQVVUSC5DT05GSVJNX05FV19QQVNTV09SRF9ISU5UJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgKGNsaWNrKT1cImNvbmZpcm1OZXdQYXNzd29yZCgpXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7ICdJREVBX0FVVEguQ09ORklSTV9ORVdfUEFTU1dPUkQnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgICAgPGlvbi1idXR0b25cbiAgICAgICAgICBmaWxsPVwiY2xlYXJcIlxuICAgICAgICAgIGV4cGFuZD1cImJsb2NrXCJcbiAgICAgICAgICBjbGFzcz1cInNtYWxsQ2FzZUJ1dHRvblwiXG4gICAgICAgICAgW3RpdGxlXT1cIidJREVBX0FVVEguQkFDS19UT19TSUdOX0lOX0hJTlQnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAoY2xpY2spPVwiZ29Ub0F1dGgoKVwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyAnSURFQV9BVVRILkJBQ0tfVE9fU0lHTl9JTicgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgPC9pb24tYnV0dG9uPlxuICAgICAgPC9pb24tY2FyZC1jb250ZW50PlxuICAgIDwvaW9uLWNhcmQ+XG4gIDwvZm9ybT5cbjwvaW9uLWNvbnRlbnQ+XG4iXX0=
@@ -1,12 +1,13 @@
1
- import { Component } from '@angular/core';
2
- import { environment as env } from '@env';
1
+ import { Component, inject } from '@angular/core';
2
+ import { IDEAEnvironment } from '@idea-ionic/common';
3
3
  import * as i0 from "@angular/core";
4
4
  import * as i1 from "@angular/common";
5
5
  import * as i2 from "@ionic/angular";
6
6
  import * as i3 from "@idea-ionic/common";
7
7
  export class IDEAPasswordPolicyComponent {
8
8
  constructor() {
9
- this.passwordPolicy = env.idea.auth.passwordPolicy;
9
+ this.env = inject(IDEAEnvironment);
10
+ this.passwordPolicy = this.env.idea.auth.passwordPolicy;
10
11
  }
11
12
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: IDEAPasswordPolicyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
12
13
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.0", type: IDEAPasswordPolicyComponent, selector: "idea-password-policy", ngImport: i0, template: `
@@ -16,7 +17,7 @@ export class IDEAPasswordPolicyComponent {
16
17
  </ion-card-header>
17
18
  <ion-card-content>
18
19
  <ul>
19
- <li>{{ 'IDEA_AUTH.PASSWORD_REQUIREMENTS.MIN_LENGTH' | translate : { n: passwordPolicy.minLength } }}</li>
20
+ <li>{{ 'IDEA_AUTH.PASSWORD_REQUIREMENTS.MIN_LENGTH' | translate: { n: passwordPolicy.minLength } }}</li>
20
21
  <li *ngIf="passwordPolicy.requireDigits">
21
22
  {{ 'IDEA_AUTH.PASSWORD_REQUIREMENTS.REQUIRE_DIGITS' | translate }}
22
23
  </li>
@@ -43,7 +44,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0", ngImpor
43
44
  </ion-card-header>
44
45
  <ion-card-content>
45
46
  <ul>
46
- <li>{{ 'IDEA_AUTH.PASSWORD_REQUIREMENTS.MIN_LENGTH' | translate : { n: passwordPolicy.minLength } }}</li>
47
+ <li>{{ 'IDEA_AUTH.PASSWORD_REQUIREMENTS.MIN_LENGTH' | translate: { n: passwordPolicy.minLength } }}</li>
47
48
  <li *ngIf="passwordPolicy.requireDigits">
48
49
  {{ 'IDEA_AUTH.PASSWORD_REQUIREMENTS.REQUIRE_DIGITS' | translate }}
49
50
  </li>
@@ -61,4 +62,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0", ngImpor
61
62
  </ion-card>
62
63
  `, styles: ["ion-card.passwordPolicyCard{box-shadow:none;border:none;padding:6px}ion-card.passwordPolicyCard ion-card-title{font-size:1rem}ion-card.passwordPolicyCard ul{margin:0}\n"] }]
63
64
  }], ctorParameters: () => [] });
64
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFzc3dvcmRQb2xpY3kuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vbW9kdWxlcy9hdXRoL3NyYy9wYXNzd29yZFBvbGljeS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUxQyxPQUFPLEVBQUUsV0FBVyxJQUFJLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7Ozs7QUE0QzFDLE1BQU0sT0FBTywyQkFBMkI7SUFHdEM7UUFGQSxtQkFBYyxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQztJQUUvQixDQUFDOzhHQUhMLDJCQUEyQjtrR0FBM0IsMkJBQTJCLDREQXhDNUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBdUJUOzsyRkFpQlUsMkJBQTJCO2tCQTFDdkMsU0FBUzsrQkFDRSxzQkFBc0IsWUFDdEI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBdUJUIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IGVudmlyb25tZW50IGFzIGVudiB9IGZyb20gJ0BlbnYnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdpZGVhLXBhc3N3b3JkLXBvbGljeScsXG4gIHRlbXBsYXRlOiBgXG4gICAgPGlvbi1jYXJkIGNsYXNzPVwicGFzc3dvcmRQb2xpY3lDYXJkXCI+XG4gICAgICA8aW9uLWNhcmQtaGVhZGVyPlxuICAgICAgICA8aW9uLWNhcmQtdGl0bGU+e3sgJ0lERUFfQVVUSC5QQVNTV09SRF9SRVFVSVJFTUVOVFNfVElUTEUnIHwgdHJhbnNsYXRlIH19PC9pb24tY2FyZC10aXRsZT5cbiAgICAgIDwvaW9uLWNhcmQtaGVhZGVyPlxuICAgICAgPGlvbi1jYXJkLWNvbnRlbnQ+XG4gICAgICAgIDx1bD5cbiAgICAgICAgICA8bGk+e3sgJ0lERUFfQVVUSC5QQVNTV09SRF9SRVFVSVJFTUVOVFMuTUlOX0xFTkdUSCcgfCB0cmFuc2xhdGUgOiB7IG46IHBhc3N3b3JkUG9saWN5Lm1pbkxlbmd0aCB9IH19PC9saT5cbiAgICAgICAgICA8bGkgKm5nSWY9XCJwYXNzd29yZFBvbGljeS5yZXF1aXJlRGlnaXRzXCI+XG4gICAgICAgICAgICB7eyAnSURFQV9BVVRILlBBU1NXT1JEX1JFUVVJUkVNRU5UUy5SRVFVSVJFX0RJR0lUUycgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICA8L2xpPlxuICAgICAgICAgIDxsaSAqbmdJZj1cInBhc3N3b3JkUG9saWN5LnJlcXVpcmVTeW1ib2xzXCI+XG4gICAgICAgICAgICB7eyAnSURFQV9BVVRILlBBU1NXT1JEX1JFUVVJUkVNRU5UUy5SRVFVSVJFX1NZTUJPTFMnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgPC9saT5cbiAgICAgICAgICA8bGkgKm5nSWY9XCJwYXNzd29yZFBvbGljeS5yZXF1aXJlVXBwZXJjYXNlXCI+XG4gICAgICAgICAgICB7eyAnSURFQV9BVVRILlBBU1NXT1JEX1JFUVVJUkVNRU5UUy5SRVFVSVJFX1VQUEVSQ0FTRScgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICA8L2xpPlxuICAgICAgICAgIDxsaSAqbmdJZj1cInBhc3N3b3JkUG9saWN5LnJlcXVpcmVMb3dlcmNhc2VcIj5cbiAgICAgICAgICAgIHt7ICdJREVBX0FVVEguUEFTU1dPUkRfUkVRVUlSRU1FTlRTLlJFUVVJUkVfTE9XRVJDQVNFJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgIDwvbGk+XG4gICAgICAgIDwvdWw+XG4gICAgICA8L2lvbi1jYXJkLWNvbnRlbnQ+XG4gICAgPC9pb24tY2FyZD5cbiAgYCxcbiAgc3R5bGVzOiBbXG4gICAgYFxuICAgICAgaW9uLWNhcmQucGFzc3dvcmRQb2xpY3lDYXJkIHtcbiAgICAgICAgYm94LXNoYWRvdzogbm9uZTtcbiAgICAgICAgYm9yZGVyOiBub25lO1xuICAgICAgICBwYWRkaW5nOiA2cHg7XG4gICAgICB9XG4gICAgICBpb24tY2FyZC5wYXNzd29yZFBvbGljeUNhcmQgaW9uLWNhcmQtdGl0bGUge1xuICAgICAgICBmb250LXNpemU6IDFyZW07XG4gICAgICB9XG4gICAgICBpb24tY2FyZC5wYXNzd29yZFBvbGljeUNhcmQgdWwge1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICB9XG4gICAgYFxuICBdXG59KVxuZXhwb3J0IGNsYXNzIElERUFQYXNzd29yZFBvbGljeUNvbXBvbmVudCB7XG4gIHBhc3N3b3JkUG9saWN5ID0gZW52LmlkZWEuYXV0aC5wYXNzd29yZFBvbGljeTtcblxuICBjb25zdHJ1Y3RvcigpIHt9XG59XG4iXX0=
65
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFzc3dvcmRQb2xpY3kuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vbW9kdWxlcy9hdXRoL3NyYy9wYXNzd29yZFBvbGljeS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9CQUFvQixDQUFDOzs7OztBQTRDckQsTUFBTSxPQUFPLDJCQUEyQjtJQUt0QztRQUpVLFFBQUcsR0FBRyxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUM7UUFLdEMsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDO0lBQzFELENBQUM7OEdBUFUsMkJBQTJCO2tHQUEzQiwyQkFBMkIsNERBeEM1Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F1QlQ7OzJGQWlCVSwyQkFBMkI7a0JBMUN2QyxTQUFTOytCQUNFLHNCQUFzQixZQUN0Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F1QlQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSURFQUVudmlyb25tZW50IH0gZnJvbSAnQGlkZWEtaW9uaWMvY29tbW9uJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnaWRlYS1wYXNzd29yZC1wb2xpY3knLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxpb24tY2FyZCBjbGFzcz1cInBhc3N3b3JkUG9saWN5Q2FyZFwiPlxuICAgICAgPGlvbi1jYXJkLWhlYWRlcj5cbiAgICAgICAgPGlvbi1jYXJkLXRpdGxlPnt7ICdJREVBX0FVVEguUEFTU1dPUkRfUkVRVUlSRU1FTlRTX1RJVExFJyB8IHRyYW5zbGF0ZSB9fTwvaW9uLWNhcmQtdGl0bGU+XG4gICAgICA8L2lvbi1jYXJkLWhlYWRlcj5cbiAgICAgIDxpb24tY2FyZC1jb250ZW50PlxuICAgICAgICA8dWw+XG4gICAgICAgICAgPGxpPnt7ICdJREVBX0FVVEguUEFTU1dPUkRfUkVRVUlSRU1FTlRTLk1JTl9MRU5HVEgnIHwgdHJhbnNsYXRlOiB7IG46IHBhc3N3b3JkUG9saWN5Lm1pbkxlbmd0aCB9IH19PC9saT5cbiAgICAgICAgICA8bGkgKm5nSWY9XCJwYXNzd29yZFBvbGljeS5yZXF1aXJlRGlnaXRzXCI+XG4gICAgICAgICAgICB7eyAnSURFQV9BVVRILlBBU1NXT1JEX1JFUVVJUkVNRU5UUy5SRVFVSVJFX0RJR0lUUycgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICA8L2xpPlxuICAgICAgICAgIDxsaSAqbmdJZj1cInBhc3N3b3JkUG9saWN5LnJlcXVpcmVTeW1ib2xzXCI+XG4gICAgICAgICAgICB7eyAnSURFQV9BVVRILlBBU1NXT1JEX1JFUVVJUkVNRU5UUy5SRVFVSVJFX1NZTUJPTFMnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgPC9saT5cbiAgICAgICAgICA8bGkgKm5nSWY9XCJwYXNzd29yZFBvbGljeS5yZXF1aXJlVXBwZXJjYXNlXCI+XG4gICAgICAgICAgICB7eyAnSURFQV9BVVRILlBBU1NXT1JEX1JFUVVJUkVNRU5UUy5SRVFVSVJFX1VQUEVSQ0FTRScgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICA8L2xpPlxuICAgICAgICAgIDxsaSAqbmdJZj1cInBhc3N3b3JkUG9saWN5LnJlcXVpcmVMb3dlcmNhc2VcIj5cbiAgICAgICAgICAgIHt7ICdJREVBX0FVVEguUEFTU1dPUkRfUkVRVUlSRU1FTlRTLlJFUVVJUkVfTE9XRVJDQVNFJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgIDwvbGk+XG4gICAgICAgIDwvdWw+XG4gICAgICA8L2lvbi1jYXJkLWNvbnRlbnQ+XG4gICAgPC9pb24tY2FyZD5cbiAgYCxcbiAgc3R5bGVzOiBbXG4gICAgYFxuICAgICAgaW9uLWNhcmQucGFzc3dvcmRQb2xpY3lDYXJkIHtcbiAgICAgICAgYm94LXNoYWRvdzogbm9uZTtcbiAgICAgICAgYm9yZGVyOiBub25lO1xuICAgICAgICBwYWRkaW5nOiA2cHg7XG4gICAgICB9XG4gICAgICBpb24tY2FyZC5wYXNzd29yZFBvbGljeUNhcmQgaW9uLWNhcmQtdGl0bGUge1xuICAgICAgICBmb250LXNpemU6IDFyZW07XG4gICAgICB9XG4gICAgICBpb24tY2FyZC5wYXNzd29yZFBvbGljeUNhcmQgdWwge1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICB9XG4gICAgYFxuICBdXG59KVxuZXhwb3J0IGNsYXNzIElERUFQYXNzd29yZFBvbGljeUNvbXBvbmVudCB7XG4gIHByb3RlY3RlZCBlbnYgPSBpbmplY3QoSURFQUVudmlyb25tZW50KTtcblxuICBwYXNzd29yZFBvbGljeTogYW55O1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMucGFzc3dvcmRQb2xpY3kgPSB0aGlzLmVudi5pZGVhLmF1dGgucGFzc3dvcmRQb2xpY3k7XG4gIH1cbn1cbiJdfQ==